Built motion from commit cfbf5b58.|2.6.10
authorsupport <support@xcally.com>
Thu, 19 May 2022 14:49:48 +0000 (14:49 +0000)
committersupport <support@xcally.com>
Thu, 19 May 2022 14:49:48 +0000 (14:49 +0000)
1226 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/et.json
public/app/errors/500/i18n/et.json
public/app/footer/i18n/et.json
public/app/forgot/i18n/et.json
public/app/header/i18n/et.json
public/app/login/i18n/et.json
public/app/main/apps/analytics/i18n/et.json
public/app/main/apps/callysquare/i18n/et.json
public/app/main/apps/chat/i18n/et.json
public/app/main/apps/contactmanager/i18n/et.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/jscripty/i18n/et.json
public/app/main/apps/mail/i18n/et.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/openchannel/i18n/et.json
public/app/main/apps/plugins/i18n/et.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/sms/i18n/et.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/video/i18n/et.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/quick-panel/i18n/et.json
public/app/reset/i18n/et.json
public/index.html
public/scripts/app.4f52941f.js [moved from public/scripts/app.eda3ad8b.js with 54% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/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/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/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperAdditionalPhone.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index aa9e254..eb02baa 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T14:06:14.645Z",
+    "time": "2022-05-19T14:42:01.202Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 3d06f04..0bd9b32 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-19T14:06:14.645Z",
+    "time": "2022-05-19T14:42:01.202Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 729f936..b061703 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
-    "SEARCH": "Otsi mida tahes",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
+    "SEARCH": "Search for anything",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index eb1d0e2..b218b70 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Nonii, oled interneti katki teinud!",
-    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
-    "REPORT": "Teata sellest probleemist",
-    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
-    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
-    "GO_BACK": "Mine tagasi töölauale"
+    "MESSAGE": "Well, you broke the internet!",
+    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
+    "REPORT": "Report this problem",
+    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
+    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
+    "GO_BACK": "Go back to dashboard"
   }
 }
index ee6d003..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index dc70b81..be7b81a 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Taasta oma parool",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
-    "GO_BACK": "Mine tagasi sisse logima",
-    "LINK_SENT": "Link saadetud",
-    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
-    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
+    "TITLE": "Recover your password",
+    "EMAIL_ADRESS": "Email address",
+    "SEND_RESET_LINK": "SEND RESET LINK",
+    "GO_BACK": "Go back to login",
+    "LINK_SENT": "Link Sent",
+    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format"
     }
   }
 }
index 1f1d597..f78785b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
+    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
     "ERRORS": {}
   }
 }
index 4eb3084..e371b06 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telefonid",
-    "SELECT": "Vali",
-    "CANCEL": "Tühista",
-    "TITLE": "Logi sisse oma kontole",
-    "EMAIL": "E-post",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "REMEMBER_ME": "Pea mind meeles",
-    "FORGOT_PASSWORD": "Unustasid Parooli?",
-    "LOG_IN": "LOGI SISSE",
-    "OR": "VÕI",
-    "WITH_GOOGLE": "Logi sisse Google kontoga",
-    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
-    "DONT_HAVE_ACCOUNT": "Konto puudub?",
-    "CREATE_ACCOUNT": "Loo konto",
+    "TELEPHONES": "Telephones",
+    "SELECT": "Select",
+    "CANCEL": "Cancel",
+    "TITLE": "Log in to your account",
+    "EMAIL": "Email",
+    "USERNAME": "Username",
+    "PASSWORD": "Password",
+    "REMEMBER_ME": "Remember Me",
+    "FORGOT_PASSWORD": "Forgot Password?",
+    "LOG_IN": "LOG IN",
+    "OR": "OR",
+    "WITH_GOOGLE": "Log in with Google",
+    "WITH_FACEBOOK": "Log in with Facebook",
+    "DONT_HAVE_ACCOUNT": "No account?",
+    "CREATE_ACCOUNT": "Create an account",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli"
+      "EMAIL_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field"
     },
-    "WITH_AD": "Logi sisse Active Directory kontoga"
+    "WITH_AD": "Logige sisse Active Directoryga"
   }
 }
index 8d3f3e2..6d01d84 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Saada tühjana",
-    "REPORTNAME": "Aruande Nimi",
-    "DELETE": "Kustuta",
-    "NAME": "Nimi",
-    "ANALYTICS": "Analüüs",
-    "METRICS": "Mõõdik",
-    "ID": "ID",
-    "TABLE": "Tabel",
-    "DESCRIPTION": "Kirjeldus",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "METRIC": "Mõõdik",
+    "SEND_IF_EMPTY": "Send if empty",
+    "REPORTNAME": "Report Name",
+    "DELETE": "Delete",
+    "NAME": "Name",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Metrics",
+    "ID": "Id",
+    "TABLE": "Table",
+    "DESCRIPTION": "Description",
+    "SEARCH_FOR_ANYONE": "Search",
+    "METRIC": "Metric",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "METRIC_REQUIRED": "Kohustuslik väli",
-      "COLUMN_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli"
+      "NAME_REQUIRED": "Mandatory field",
+      "METRIC_REQUIRED": "Mandatory field",
+      "COLUMN_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field"
     },
-    "NEW_METRIC": "Uus Mõõdik",
-    "ADD_METRIC": "Lisa Mõõdik",
-    "EDIT_METRIC": "Redigeeri Mõõdikut",
-    "DELETE_METRIC": "Kustuta Mõõdik",
-    "SAVE": "Salvesta",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "TYPE": "Tüüp",
-    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
-    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
-    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
-    "GENERATED_AT": "Loomisaeg",
-    "STATUS": "Staatus",
-    "OUTPUT": "Väljund",
-    "REPORTS": "Aruanded",
-    "SEARCH_FOR_FOLDER": "Otsi kausta",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_REPORT": "Uus Aruanne",
-    "ADD_REPORT": "Lisa Aruanne",
-    "COPY_REPORT": "Kopeeri Aruanne",
-    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
-    "RUN_REPORT": "Käivita Aruanne",
-    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
-    "EDIT_REPORT": "Redigeeri Aruannet",
-    "DELETE_REPORT": "Kustuta Aruanne",
-    "CREATE": "Loo Kaust",
-    "RENAME": "Nimeta Kaust ümber",
-    "REMOVE": "Eemalda Kaust",
-    "SELECT_NODE": "Vali Kaust",
-    "ERROR": "Viga",
-    "QUERY_ERROR": "Päringu Tõrge",
-    "MESSAGE": "Sõnum",
-    "CLOSE": "Sule",
-    "FORMAT": "Vorming",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FIELDS": "Väljad",
-    "CONDITION": "Tingimus",
-    "OPERATOR": "Operaator",
-    "GROUP": "Rühm",
-    "COLUMN": "Veerg",
-    "VALUE": "Väärtus",
-    "PREVIEW": "Eelvaade",
-    "LIMITED_RESULT": "*Piiratud Tulemused",
-    "NO_DATA": "Andmete tulemid puuduvad",
-    "CONDITIONS": "Tingimused",
-    "ALIAS": "Pseudonüüm",
-    "FUNCTION": "Funktsioon",
-    "GROUP_BY": "Rühmita Vastavalt",
-    "ORDER_BY": "Telli Vastavalt",
-    "ADD_REPORTFIELD": "Lisa Väli",
-    "EDIT_REPORTFIELD": "Redigeeri Välja",
-    "DELETE_REPORTFIELD": "Kustuta Väli",
-    "METRIC_NAME": "Mõõdik",
-    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "CUSTOM_METRIC": "Kohandatud Mõõdik",
-    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
-    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
-    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "NEW_METRIC": "New Metric",
+    "ADD_METRIC": "Add Metric",
+    "EDIT_METRIC": "Edit Metric",
+    "DELETE_METRIC": "Delete Metric",
+    "SAVE": "Save",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "TYPE": "Type",
+    "EXTRACTEDREPORTS": "Extracted Reports",
+    "DATE_RANGE_FROM": "Date Range From",
+    "DATE_RANGE_TO": "Date Range To",
+    "GENERATED_AT": "Generated At",
+    "STATUS": "Status",
+    "OUTPUT": "Output",
+    "REPORTS": "Reports",
+    "SEARCH_FOR_FOLDER": "Search for folder",
+    "CREATED_AT": "Created At",
+    "NEW_REPORT": "New Report",
+    "ADD_REPORT": "Add Report",
+    "COPY_REPORT": "Copy Report",
+    "PREVIEW_REPORT": "Preview Report",
+    "RUN_REPORT": "Run Report",
+    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
+    "EDIT_REPORT": "Edit Report",
+    "DELETE_REPORT": "Delete Report",
+    "CREATE": "Create Folder",
+    "RENAME": "Rename Folder",
+    "REMOVE": "Remove Folder",
+    "SELECT_NODE": "Select Folder",
+    "ERROR": "Error",
+    "QUERY_ERROR": "Query Error",
+    "MESSAGE": "Message",
+    "CLOSE": "Close",
+    "FORMAT": "Format",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FIELDS": "Fields",
+    "CONDITION": "Condition",
+    "OPERATOR": "Operator",
+    "GROUP": "Group",
+    "COLUMN": "Column",
+    "VALUE": "Value",
+    "PREVIEW": "Preview",
+    "LIMITED_RESULT": "*Limited Results",
+    "NO_DATA": "No data results",
+    "CONDITIONS": "Conditions",
+    "ALIAS": "Alias",
+    "FUNCTION": "Function",
+    "GROUP_BY": "Group By",
+    "ORDER_BY": "Order By",
+    "ADD_REPORTFIELD": "Add Field",
+    "EDIT_REPORTFIELD": "Edit Field",
+    "DELETE_REPORTFIELD": "Delete Field",
+    "METRIC_NAME": "Metric",
+    "NO_METRIC_FOUND": "No metric found",
+    "NO_AVAILABLE_INFO": "No available info",
+    "CUSTOM_METRIC": "Custom Metric",
+    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
+    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 2389db1..8b74f11 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Konto",
-    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
-    "ADD_ODBC": "Lisa ODBC",
-    "ADD_PROJECT": "Lisa Projekt",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "AGENTS": "Agendid",
+    "ACCOUNT_ID": "Account",
+    "ADDUSER_PROJECTS": "Add Users to Project",
+    "ADD_ODBC": "Add ODBC",
+    "ADD_PROJECT": "Add Project",
+    "ADD_VARIABLE": "Add Variable",
+    "AGENTS": "Agents",
     "AGI": "AGI",
-    "ALL_USERS": "Kõik Kasutajad",
-    "ANSWER": "Vastus",
-    "APIKEY": "API võti",
-    "APPID": "Rakenduse ID",
-    "Rakendus": "Avaldus",
-    "APPSECRET": "Rakenduse Saladus",
-    "ARGS": "Argumendid",
-    "ATTACHMENT_NAME": "Manuse Nimi",
-    "ATTACHMENT_PATH": "Manuse Tee",
-    "ATTACHMENT_TYPE": "Manuse Tüüp",
+    "ALL_USERS": "All Users",
+    "ANSWER": "Answer",
+    "APIKEY": "ApiKey",
+    "APPID": "App ID",
+    "APPLICATION": "Application",
+    "APPSECRET": "App Secret",
+    "ARGS": "Arguments",
+    "ATTACHMENT_NAME": "Attachment Name",
+    "ATTACHMENT_PATH": "Attachment Path",
+    "ATTACHMENT_TYPE": "Attachment Type",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
-    "AWS_BOT_NAME": "Boti nimi",
-    "AWS_LEX_REGION": "Piirkond",
-    "AWS_POLLY_REGION": "Piirkond",
-    "AWS_POLLY_VOICE": "Hääl",
-    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
-    "AWS_TEXT_TYPE": "Teksti tüüp",
-    "BACK": "Tagasi",
+    "AWSPOLLY": "AWS Polly",
+    "AWS_ACCESS_KEY_ID": "Access Key ID",
+    "AWS_BOT_NAME": "Bot name",
+    "AWS_LEX_REGION": "Region",
+    "AWS_POLLY_REGION": "Region",
+    "AWS_POLLY_VOICE": "Voice",
+    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_TEXT_TYPE": "Text type",
+    "BACK": "Back",
     "BCC": "BCC",
-    "BEEP": "Piiks",
+    "BEEP": "Beep",
     "BODY": "Keha",
-    "CALLBACK": "Tagasihelistamine",
-    "CALLBACK_PRIORITY": "Prioriteet",
+    "CALLBACK": "Callback",
+    "CALLBACK_PRIORITY": "Priority",
     "CALLYSQUARE": "Cally Square",
-    "CC": "Koop",
-    "CHOOSE_ATTACHMENT": "Vali Manus",
-    "CLOSE": "Sule",
-    "COMMAND": "Käsk",
+    "CC": "CC",
+    "CHOOSE_ATTACHMENT": "Choose Attachment",
+    "CLOSE": "Close",
+    "COMMAND": "Command",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Tingimus",
-    "CONTEXT": "Kontekst",
-    "COPY": "Koopia",
-    "COPY_PROJECT": "Kopeeri Projekt",
-    "CREATED_AT": "Loomisaeg",
+    "CONDITION": "Condition",
+    "CONTEXT": "Context",
+    "COPY": "Copy",
+    "COPY_PROJECT": "Copy Project",
+    "CREATED_AT": "Created At",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Kohandatud Rakendus",
-    "DATABASE": "Andmebaas",
-    "DELAY": "viivitus [min]",
-    "DELETE": "Kustuta",
-    "DELETE_ODBC": "Kustuta ODBC",
-    "DELETE_PROJECT": "Kustuta Projekt",
-    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
-    "DESCRIPTION": "Kirjeldus",
-    "DIAL": "Helista",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DIALOGFLOW_LANGUAGE": "Keel",
-    "DIGIT": "Maks. Numbrimärke",
-    "DIGITS": "Number",
-    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
-    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
-    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
+    "CUSTOM_APP": "Custom Application",
+    "DATABASE": "Database",
+    "DELAY": "delay [min]",
+    "DELETE": "Delete",
+    "DELETE_ODBC": "Delete ODBC",
+    "DELETE_PROJECT": "Delete Project",
+    "DELETE_SQUARERECORDING": "Delete Square Recording",
+    "DESCRIPTION": "Description",
+    "DIAL": "Dial",
+    "DIALOGFLOW": "Dialogflow",
+    "DIALOGFLOW_LANGUAGE": "Language",
+    "DIGIT": "Max Digits",
+    "DIGITS": "Digits",
+    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
+    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
     "DSN": "DSN",
-    "EDIT": "Redigeeri",
-    "EDIT_ODBC": "Redigeeri ODBC",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
-    "EDIT_XML": "Redigeeri XMLi",
-    "END": "Lõpeta",
+    "EDIT": "Edit",
+    "EDIT_ODBC": "Edit ODBC",
+    "EDIT_PROJECT": "Edit Project",
+    "EDIT_SQUARERECORDING": "Edit Square Recording",
+    "EDIT_XML": "Edit XML",
+    "END": "End",
     "ERRORS": {
-      "DSN_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "DSN_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-
-    "ESCAPE_DIGITS": "Väldi numbrimärke",
+    "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Exten",
-    "EXTENSION": "Laiendus",
-    "EXT_DIAL": "Väline Helistamine",
-    "FILE": "Faili nimi",
-    "FILENAME": "Faili nimi",
+    "EXTENSION": "Extension",
+    "EXT_DIAL": "External Dial",
+    "FILE": "Filename",
+    "FILENAME": "Filename",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Otsitav",
-    "GETDIGITS": "Hangi Numbrimärgid",
-    "GETSECRETDIGITS": "Hangi Salanumbrid",
-    "GOAL": "Eesmärk",
-    "GOALNAME": "Eesmärgi Nimi",
+    "FINDBY": "Find By",
+    "GETDIGITS": "Get Digits",
+    "GETSECRETDIGITS": "Get Secret Digits",
+    "GOAL": "Goal",
+    "GOALNAME": "Goal Name",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Keel",
+    "GOOGLE_ASR_LANGUAGE": "Language",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Keel",
+    "GOOGLE_TTS_LANGUAGE": "Language",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Mine projektide juurde",
-    "GRAMMAR": "Grammatika",
-    "HANGUP": "Lõpeta kõne",
+    "GO_TO_PROJECTS": "Go to projects",
+    "GRAMMAR": "Grammar",
+    "HANGUP": "Hangup",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
-    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
-    "ID": "ID",
-    "IMPORT": "Impordi",
-    "IMPORT_XML": "Impordi XML",
-    "INTERVAL_ID": "Intervall",
-    "INTKEY": "Katkestusklahv",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
+    "ID": "Id",
+    "IMPORT": "Import",
+    "IMPORT_XML": "Import XML",
+    "INTERVAL_ID": "Interval",
+    "INTKEY": "Interrupt Key",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Keel",
-    "ISPEECH_TTS_LANGUAGE": "Keel",
-    "KEY": "Võti",
-    "LABEL": "Sedel",
+    "ISPEECH_ASR_LANGUAGE": "Language",
+    "ISPEECH_TTS_LANGUAGE": "Language",
+    "KEY": "Key",
+    "LABEL": "Label",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Perekonnanimi",
-    "LIST_ID": "Loend",
-    "LOGIN": "Logi sissse",
-    "LOGOUT": "Logi välja",
+    "LASTNAME": "Last Name",
+    "LIST_ID": "List",
+    "LOGIN": "Login",
+    "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Makro",
-    "MAILBOX": "Postkast",
-    "MATH": "Matemaatika",
-    "MAXDIGIT": "Maks. numbrimärke",
-    "MENU": "Manüü",
+    "MACRO": "Macro",
+    "MAILBOX": "Mailbox",
+    "MATH": "Math",
+    "MAXDIGIT": "Maximum Digits",
+    "MENU": "Menu",
     "METHOD": "Meetod",
-    "MINDIGIT": "Min. numbrimärke",
-    "MODEL": "Mudel",
+    "MINDIGIT": "Minimum Digits",
+    "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSynth",
-    "NAME": "Nimi",
+    "MRCPSYNTH": "MRCPSünth",
+    "NAME": "Name",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANTi URL",
+    "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "Uus",
-    "NEW_ODBC": "Uus ODBC ühendus",
-    "NEW_PROJECT": "Uus Projekt",
-    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW": "New",
+    "NEW_ODBC": "New ODBC connection",
+    "NEW_PROJECT": "New Project",
+    "NEW_VARIABLE": "New Variable",
     "NOOP": "NoOp",
-    "NOTES": "Märkmed",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NOTES": "Notes",
+    "NO_AVAILABLE_INFO": "No available info",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Ühendus",
+    "ODBC_ID": "ODBC Connection",
     "OF": "of",
-    "OPEN": "Ava",
-    "OPEN_NEW_WINDOW": "Ava uues aknas",
-    "OPEN_PROJECT": "Ava Projekt",
-    "OPERATION": "Toiming",
-    "OPTIONS": "Suvandid",
-    "OPTS": "Suvandid",
-    "OUTPUT": "Väljund",
-    "PAGE": "Lehekülg",
+    "OPEN": "Open",
+    "OPEN_NEW_WINDOW": "Open in a new window",
+    "OPEN_PROJECT": "Open Project",
+    "OPERATION": "Operation",
+    "OPTIONS": "Options",
+    "OPTS": "Options",
+    "OUTPUT": "Output",
+    "PAGE": "Page",
     "PASSWORD": "Parool",
-    "PAUSE": "Paus",
-    "PAUSE_ID": "Pausi tüüp",
-    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
-    "PHONE": "Telefon",
-    "PLAYBACK": "Taasesita",
-    "POSITION": "Positsioon",
-    "PRIORITY": "Prioriteet",
-    "PROJECT": "Projekt",
-    "PROJECTS": "Projektid",
-    "PROJECT_ID": "Projekt",
-    "QUERY": "Päring",
-    "QUEUE": "Järjekord",
-    "QUEUE_ID": "Järjekord",
+    "PAUSE": "Pause",
+    "PAUSE_ID": "Pause type",
+    "PERMISSIONADD_PROJECTS": "Add Users to Project",
+    "PHONE": "Phone",
+    "PLAYBACK": "Playback",
+    "POSITION": "Position",
+    "PRIORITY": "Priority",
+    "PROJECT": "Project",
+    "PROJECTS": "Projects",
+    "PROJECT_ID": "Project",
+    "QUERY": "Query",
+    "QUEUE": "Queue",
+    "QUEUE_ID": "Queue",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestuse formaat",
-    "RESPONSE": "Reaktsiooniaja Aegumine",
+    "RECORD": "Record",
+    "RECORDINGFORMAT": "Recording Format",
+    "RESPONSE": "Response Timeout",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Korduskatsed",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "SAVE": "Salvesta",
-    "SAYDIGITS": "Ütle Numbrimärgid",
-    "SAYNUMBER": "Ütle Number",
-    "SAYPHONETIC": "Ütle Häälikud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "SENDFAX": "Saada Faks",
-    "SENDMAIL": "Saada E-kiri",
-    "SENDSMS": "Saada Sõnum",
+    "RETRY": "Retries",
+    "ROWSPERPAGE": "Rows per page",
+    "SAVE": "Save",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECTED_USERS": "Selected Users",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "SENDFAX": "Send Fax",
+    "SENDMAIL": "Send Email",
+    "SENDSMS": "Send SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Hulk",
+    "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Konto",
-    "SMS_TEXT": "Tekst",
-    "SPEED": "Kiirus",
-    "SQUARERECORDINGS": "Salvestused",
+    "SMS_ACCOUNT_ID": "Account",
+    "SMS_TEXT": "Text",
+    "SPEED": "Speed",
+    "SQUARERECORDINGS": "Recordings",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subjekt",
-    "SUBPROJECT": "Alamprojekt",
-    "SYSTEM": "Süsteem",
-    "TELEPHONES": "Telefonid",
-    "TEMPLATE_ID": "Mall",
+    "SUBJECT": "Subject",
+    "SUBPROJECT": "Sub Project",
+    "SYSTEM": "System",
+    "TELEPHONES": "Telephones",
+    "TEMPLATE_ID": "Template",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Tekst",
+    "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Aegumine",
-    "TO": "Kellele",
-    "TRUNK_NAME": "Magistraal",
+    "TIMEOUT": "Timeout",
+    "TO": "To",
+    "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unikaalne ID",
-    "UNPAUSE": "Lõpeta Paus",
-    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
-    "UPDATE_INFO": "Uuenda Infot",
+    "UNIQUEID": "Unique ID",
+    "UNPAUSE": "End Pause",
+    "UPDATE_DESCRIPTION": "Update Description",
+    "UPDATE_INFO": "Update Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Kasutajad",
-    "VARIABLE_ID": "Muutuja",
-    "VARIABLE_VALUE": "Väärtus",
-    "VOICEMAIL": "Kõnepost",
-    "VSWITCH": "Muutuja Vahetus",
+    "USERS": "Users",
+    "VARIABLE_ID": "Variable",
+    "VARIABLE_VALUE": "Value",
+    "VOICEMAIL": "Voicemail",
+    "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "Dialoogivoog V2",
+    "DIALOGFLOWV2": "DialoogivoogV2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 5dc84d3..2f3b48e 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
+    "EDIT_AMAZONLEX": "Edit Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Pääsuvõtme ID",
-    "SECRETACCESSKEY": "Salajane Pääsuvõti",
-    "LEXREGION": "Piirkond",
-    "BOTNAME": "Boti Nimi",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
-    "TRANSFER": "Edasta",
-    "QUEUETRANSFER": "Ooteaja Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
-    "SYSTEMAVATAR": "Süsteemi Avatar",
-    "SYSTEMALIAS": "Süsteemi Alias",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "LANGUAGE": "Keel",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
-    "DIALOGFLOW": "Dialoogivoog",
-    "BACKGROUNDCOLOR": "Taustavärv",
-    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "CUSTOMERALIAS": "Kliendi Alias",
-    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
-    "CUSTOMERAVATAR": "Kleindi Avatar",
-    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
-    "DEFAULTTITLE": "Vaiketiitel",
-    "MESSAGESALIGNMENT": "Sõnumite Joondus",
-    "ALTERNATE": "Alternatiiv",
-    "CENTERED": "Keskele",
-    "POSITION": "Paigutus",
-    "VERTICALPOSITION": "Vertikaalne Paigutus",
-    "ALIGNMENT": "Joondus",
-    "VERTICALALIGNMENT": "Vertikaalne Joondus",
-    "BOTTOM_RIGHT": "All paremal",
-    "RIGHT": "Paremal",
-    "LEFT": "Vasakul",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "AGENTIDENTIFIER": "Identifikaator",
-    "WEBSITEALIAS": "Veebileehe alias",
-    "AGENTALIAS": "Agendi Alias",
-    "AGENTFULLNAME": "Agendi Täisnimi",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "HIDEWHENOFFLINE": "Peida",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "TEXTCOLOR": "Teksti Värv",
-    "FONTSIZE": "Fondi Suurus",
-    "WEBSCRIPT": "Veebi skript",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "CHATCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
-    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri",
-    "DELETE_CHATCANNEDANSWER": "Kustuta",
-    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
-    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
-    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
-    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
-    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
-    "NOTETITLE": "Märkme pealkiri",
-    "CLOSINGQUESTION": "Lõpetav küsimus",
-    "TAGS": "Sildid",
-    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
-    "AGENTAVATAR": "Agendi Avatar",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "WRITING": "Ootel",
-    "CHAT": "Vestlus",
-    "MAIL": "E-kiri",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Avatud kanal",
-    "FAX": "Faks",
-    "PAUSE": "Ootele",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Olek",
-    "LOGOUT": "Logi välja",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
-    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
-    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
-    "OFFLINESTATUS": "Võrgust väljas staatus",
-    "NAME": "Nimi",
-    "CHATQUEUES": "Vestluse Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Ajalõpp",
-    "DESCRIPTION": "Kirjeldus",
-    "KEY": "Võti",
+    "ACCESSKEYID": "Access Key ID",
+    "SECRETACCESSKEY": "Secret Access Key",
+    "LEXREGION": "Region",
+    "BOTNAME": "Bot Name",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "DOWNLOAD_INTERACTION": "Download",
+    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
+    "TRANSFER": "Transfer",
+    "QUEUETRANSFER": "Queue Transfer",
+    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "SYSTEMAVATAR": "System Avatar",
+    "SYSTEMALIAS": "System Alias",
+    "WELCOMEMESSAGE": "Welcome Message",
+    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Edit Dialogflow",
+    "DIALOGFLOW": "Dialogflow",
+    "BACKGROUNDCOLOR": "Background Color",
+    "MESSAGEFONTSIZE": "Message Font Size",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "CUSTOMERALIAS": "Customer Alias",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
+    "CUSTOMERAVATAR": "Customer Avatar",
+    "SHOWCUSTOMERAVATAR": "Show customer avatar",
+    "DEFAULTTITLE": "Default Title",
+    "MESSAGESALIGNMENT": "Messages Alignment",
+    "ALTERNATE": "Alternate",
+    "CENTERED": "Centered",
+    "POSITION": "Position",
+    "VERTICALPOSITION": "Vertical position",
+    "ALIGNMENT": "Alignment",
+    "VERTICALALIGNMENT": "Vertical alignment",
+    "BOTTOM_RIGHT": "Bottom right",
+    "RIGHT": "Right",
+    "LEFT": "Left",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "AGENTIDENTIFIER": "Identifier",
+    "WEBSITEALIAS": "Website Alias",
+    "AGENTALIAS": "Agent Alias",
+    "AGENTFULLNAME": "Agent Fullname",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "HIDEWHENOFFLINE": "Hide",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "TEXTCOLOR": "Text Color",
+    "FONTSIZE": "Font Size",
+    "WEBSCRIPT": "Web Script",
+    "CANNEDANSWERS": "Canned Answers",
+    "CHATCANNEDANSWERS": "Canned Answers",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_CHATCANNEDANSWER": "New Canned Answer",
+    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit",
+    "DELETE_CHATCANNEDANSWER": "Delete",
+    "OFFLINEMESSAGESUBJECT": "Message subject",
+    "OFFLINEMESSAGEBODY": "Message body",
+    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
+    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
+    "PLACEHOLDERMESSAGE": "Message placeholder",
+    "NOTETITLE": "Note's title",
+    "CLOSINGQUESTION": "Closing question",
+    "TAGS": "Tags",
+    "SHOWAGENTAVATAR": "Show personal agent avatar",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "WRITING": "Writing",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Openchannel",
+    "FAX": "Fax",
+    "PAUSE": "Pause",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "UNPAUSE": "End Pause",
+    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NEW_CHATDISPOSITION": "New Chat Disposition",
+    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
+    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
+    "OFFLINESTATUS": "Offline Status",
+    "NAME": "Name",
+    "CHATQUEUES": "Chat Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "KEY": "Key",
     "ALIAS": "Alias",
-    "VARIABLE": "Muutuja",
-    "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "TIMEZONE": "Ajavöönd",
-    "MESSAGE": "Sõnum",
-    "ADVANCED": "Täpsem",
-    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
-    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
-    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
-    "EDIT_MESSAGE": "Redigeeri Sõnumit",
-    "CONDITION_AGREEMENT": "Tingimusleping",
-    "NONE": "Pole",
-    "PRIORITY": "Prioriteet",
-    "ONLINESTATUS": "Võrgusolek",
-    "UNMANAGEDSTATUS": "Haldamata Olek",
-    "AUTOCLOSE": "Luba Automaatne Sulgemine",
-    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
-    "UNMANAGEDMESSAGE": "Sõnum",
-    "SKIPUNMANAGED": "Jäta vahele Sõnum",
-    "SENDUNMANAGED": "Saada Sõnum",
-    "WEBSITESCRIPT": "Veebilehe Skript",
-    "DELETE_OFFLINEMESSAGE": "Kustuta",
-    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
-    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
-    "SHOW_OFFLINEMESSAGE": "Näita",
-    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
-    "CLOSINGFORM": "Sulgemise Vorm",
-    "ENABLERATING": "Luba Hindamine",
-    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
-    "ENABLEFEEDBACK": "Luba Tagasiside",
-    "RATINGTYPE": "Hinnangu Tüüp",
-    "CLOSINGMESSAGE": "Sulgemise Vorm",
-    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
-    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
-    "EDIT_GOTOIF": "Redigeeri GotoIfi",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
+    "VARIABLE": "Variable",
+    "INTERVAL": "Interval",
+    "EDIT_CLOSE": "Edit Close",
+    "TIMEZONE": "Timezone",
+    "MESSAGE": "Message",
+    "ADVANCED": "Advanced",
+    "FORWARDTRANSCRIPT": "Forward Transcript",
+    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
+    "SKIPMESSAGEBUTTON": "Skip Message Button",
+    "EDIT_MESSAGE": "Edit Message",
+    "CONDITION_AGREEMENT": "Condition Agreement",
+    "NONE": "None",
+    "PRIORITY": "Priority",
+    "ONLINESTATUS": "Online Status",
+    "UNMANAGEDSTATUS": "Unmanaged Status",
+    "AUTOCLOSE": "Enable Autoclose",
+    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
+    "UNMANAGEDMESSAGE": "Message",
+    "SKIPUNMANAGED": "Skip Message",
+    "SENDUNMANAGED": "Send Message",
+    "WEBSITESCRIPT": "Website Script",
+    "DELETE_OFFLINEMESSAGE": "Delete",
+    "OFFLINEMESSAGES": "Offline Messages",
+    "FORWARD_OFFLINE": "Forward Offline",
+    "SHOW_OFFLINEMESSAGE": "Show",
+    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
+    "CLOSINGFORM": "Closing Form",
+    "ENABLERATING": "Enable Rating",
+    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
+    "ENABLEFEEDBACK": "Enable Feedback",
+    "RATINGTYPE": "Rating Type",
+    "CLOSINGMESSAGE": "Closing Message",
+    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
+    "RATINGSTARSNUMBER": "Rating Stars Number",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Kohustuslik Väli",
-      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
-      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
-      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
-      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TAG_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "TEXT_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
-      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "BOTNAME_REQUIRED": "Mandatory Field",
+      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
+      "ACCESSKEYID_REQUIRED": "Mandatory Field",
+      "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",
+      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
+      "AGENTALIAS_REQUIRED": "Mandatory Field",
+      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
+      "TAG_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "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",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "FONTSIZE_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
+      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Vale formaat",
-      "ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
-      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
-      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "EMAIL_MUST_BE_VALID": "Wrong format",
+      "ADDRESS_REQUIRED": "Mandatory Field",
+      "ADDRESS_MUST_VALID_URL": "Wrong format",
+      "ENQUIRY_FORWARDING_ADDRESS_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",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "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",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
+      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
+      "WAITINGTITLE_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Kontakteeru Esindajaga väli",
-    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
-    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
-    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
-    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
-    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
-    "MOUSEOVER": "Kursor Peal",
-    "TIMEOUT": "Aegumine",
-    "TYPE": "Tüüp",
-    "SELECTOR": "Selektor",
+    "CM_FIELD": "Contact Manager Field",
+    "CHATPROACTIVEACTIONS": "Proactive Actions",
+    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
+    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
+    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
+    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
+    "MOUSEOVER": "Mouse Over",
+    "TIMEOUT": "Timeout",
+    "TYPE": "Type",
+    "SELECTOR": "Selector",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord Queue",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_GOTOIf": "Redigeeri GotoIf",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
-    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
-    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
-    "SETTINGS": "Sätted",
-    "SAVE": "Salvesta",
-    "SCRIPT": "Skript",
-    "TOKEN": "Luba",
-    "CREATED_AT": "Loodud",
-    "CHATWEBSITES": "Vestluse Veebisaidid",
-    "MOTIONADDRESS": "Veebisaididomeen",
-    "MOTIONPROXY": "Puhvri või Liikumise domeen",
-    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
-    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
-    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
-    "LIST": "Loend",
-    "SNIPPET": "Lõigend",
-    "FORMS": "Vormid",
-    "UP": "Üles",
-    "DOWN": "Alla",
-    "COLLAPSE": "Ahenda",
-    "PROACTIVEACTIONS": "Ennetavad Tegevused",
-    "DISPOSITIONS": "kasutaminesed",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "FIDELITY": "Kvaliteet",
-    "APPEARANCE": "Välimus",
-    "MAINCOLOR": "Põhivärv",
-    "FOCUSCOLOR": "Fookuse Värv",
-    "BUTTONCOLOR": "Nupu Värv",
-    "HEADERSHAPE": "Päise Kujund",
-    "ANIMATION": "Animatsioon",
-    "DEFAULT": "Vaikimisi",
-    "WHITELABEL": "Valge sedel",
+    "QUEUE": "Queue",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_QUEUE": "Edit Queue",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_GOTOIf": "Edit GotoIf",
+    "EDIT_NOOP": "Edit Noop",
+    "ADD_CHATQUEUE": "Add Chat Queue",
+    "EDIT_CHATQUEUE": "Edit Chat Queue",
+    "DELETE_CHATQUEUE": "Delete Chat Queue",
+    "SETTINGS": "Settings",
+    "SAVE": "Save",
+    "SCRIPT": "Script",
+    "TOKEN": "Token",
+    "CREATED_AT": "Created At",
+    "CHATWEBSITES": "Chat Websites",
+    "MOTIONADDRESS": "Website Domain",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "ADD_CHATWEBSITE": "Add Chat Website",
+    "EDIT_CHATWEBSITE": "Edit Chat Website",
+    "DELETE_CHATWEBSITE": "Delete Chat Website",
+    "LIST": "List",
+    "SNIPPET": "Snippet",
+    "FORMS": "Forms",
+    "UP": "Up",
+    "DOWN": "Down",
+    "COLLAPSE": "Collapse",
+    "PROACTIVEACTIONS": "Proactive Actions",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "FIDELITY": "Fidelity",
+    "APPEARANCE": "Appearance",
+    "MAINCOLOR": "Main Color",
+    "FOCUSCOLOR": "Focus Color",
+    "BUTTONCOLOR": "Button Color",
+    "HEADERSHAPE": "Header Shape",
+    "ANIMATION": "Animation",
+    "DEFAULT": "Default",
+    "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
-    "ENQUIRY_ENABLE": "Päringu Lubamine",
-    "ENQUIRY_FORWARDING": "Päringu Edastamine",
-    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
-    "LABELS": "Sildid",
-    "HEADER_ONLINE": "Võrguühendusega Päis",
-    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
-    "NAME_TITLE": "Nime Sisendi Sedel",
-    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
-    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
-    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
-    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
-    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
-    "HEADER_OFFLINE": "Võrguühenduseta Päis",
-    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
-    "MESSAGE_TITLE": "Sõnumi Sedel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
-    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
-    "RATING_MESSAGE": "Hinnangu Sõnum",
-    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
-    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
-    "ONLINE": "Võrguühendusega",
-    "OFFLINE": "Võrguühenduseta",
-    "PROACTIVE": "Ennetav",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka Tagasi",
-    "REJECTMETHOD": "Lükka Tagasi Meetod",
-    "REJECTURL": "Lükka Tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "EMBEDDING": "Manustamine",
-    "GENERAL": "Üldine",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "DOWNLOADTRANSCRIPT": "Download Transcript",
+    "ENQUIRY_ENABLE": "Enquiry Enable",
+    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
+    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
+    "LABELS": "Labels",
+    "HEADER_ONLINE": "Online Header",
+    "ONLINE_MESSAGE": "Online Message",
+    "NAME_TITLE": "Name Input Label",
+    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
+    "EMAIL_TITLE": "Email Input Label",
+    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
+    "START_CHAT_BUTTON": "'Start Chat' Button",
+    "AGENTS_BUSY": "Busy Agents Message",
+    "HEADER_OFFLINE": "Offline Header",
+    "OFFLINE_MESSAGE": "Offline Message",
+    "MESSAGE_TITLE": "Message Label",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
+    "ENQUIRY_BUTTON": "Enquiry Button Text",
+    "RATING_MESSAGE": "Rating Message",
+    "RATING_SEND": "Rating Send Button Text",
+    "RATING_SKIP": "Rating Skip Button Text",
+    "ONLINE": "Online",
+    "OFFLINE": "Offline",
+    "PROACTIVE": "Proactive",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "EMBEDDING": "Embedding",
+    "GENERAL": "General",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
     "HELP": {
-      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
-      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
-      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
-      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
-      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
-      "INTEVAL": "Valitav saadaolevate intervallide loendist",
-      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
-      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
-      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
-      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
-      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
-      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
-      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
-      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
-      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
-      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
-      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "INTERVAL": "Vali loendist üks",
-      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
+      "VERTICALPOSITION": "Represents the distance in percentage from top",
+      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
+      "HIDEWHENOFFLINE": "Hides snippet when offline",
+      "KEY": "Website short name (5 char) shown on the Agent Tab",
+      "TOKEN": "Automatically generated token used in the Script",
+      "INTEVAL": "To be selected from the list of the available intervals",
+      "TIMEZONE": "Select one from the list (default=local timezone)",
+      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
+      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
+      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
+      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
+      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
+      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "The following Motion Contact Manager field:",
+      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
+      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
+      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "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",
+      "INTERVAL": "Select one from the list",
+      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
     },
-    "ADDRESS": "Aadress",
-    "ONLINESTATE": "Võrguühendusega Olek",
-    "OFFLINESTATE": "Võrguühenduseta Olek",
-    "RATINGSTATE": "Hindamise Staatus",
-    "ENQUIRY": "Päring",
-    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
-    "CHATDISPOSITIONS": "Vestluse Kasutused",
-    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
-    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
-    "DELETE": "Kustuta",
-    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
-    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
-    "ID": "ID",
-    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
-    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
-    "ROUNDED": "Ümargune",
-    "SQUARED": "Ruudukujuline",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "ADDRESS": "Address",
+    "ONLINESTATE": "Online Status",
+    "OFFLINESTATE": "Offline Status",
+    "RATINGSTATE": "Rating State",
+    "ENQUIRY": "Enquiry",
+    "OFFLINETEMPLATE": "Offline Template",
+    "CHATDISPOSITIONS": "Chat Dispositions",
+    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
+    "ADD_CHATDISPOSITION": "Add Chat Disposition",
+    "DELETE": "Delete",
+    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
+    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
+    "ID": "Id",
+    "NEW_CHATQUEUE": "New Chat Queue",
+    "NEW_CHATWEBSITE": "New Chat Website",
+    "ROUNDED": "Rounded",
+    "SQUARED": "Squared",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Alustamise aeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Avatud",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "WEBSITE": "Veebisait",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali Staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "WEBSITE": "Website",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
-    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSEDAT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutamine",
-    "CREATEDAT": "Loomise aeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
-    "SELECTED_WEBSITE": "Vali veebisait",
+    "FILTERS": "Filters",
+    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
+    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CREATEDAT": "Created At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECTED_WEBSITE": "Select a website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "SELECT_WEBSITE": "Vali veebisait",
-    "INFO": "Teave",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
-    "WAITINGTITLE": "Ootamise Pealkiri",
-    "WAITINGMESSAGE": "Ootamise Sõnum",
-    "RATING": "Hindamine",
-    "NO_RATINGVALUE": "Hindamine puudub",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "UNKNOWN": "Tundmatu",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_GOTOP": "Edit Gotop",
+    "SELECT_WEBSITE": "Select a website",
+    "INFO": "Info",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
+    "WAITINGTITLE": "Waiting Title",
+    "WAITINGMESSAGE": "Waiting Message",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "No Rating",
+    "DEFAULT_PAUSE": "Default pause",
+    "UNKNOWN": "Unknown",
+    "UNREGISTERED": "Unregistered",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "NOTE": "Märkus",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "NOTE": "Märge",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muuda TVoxi",
+    "EDIT_TVOX": "Muutke TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP-aadress",
+    "TVOXIP": "TVoxi IP -aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP-aadress",
+    "TVOXURL": "TVoxi IP -aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 494d629..2592ba3 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Vali sildid",
-    "CUSTOMER_JOURNEY": "Klienditeekond",
-    "USERID": "Kutsu tagasi Agendi ID",
-    "PRIORITY": "Prioriteet",
-    "MOTIONDIALER": "Liikumise Pull",
-    "IMPORT_CONTACTS": "Impordi Kontaktid",
-    "PREFIX": "Helistamise Eesliide",
-    "VOICEQUEUEID": "Hääljärjekorra ID",
-    "CAMPAIGNID": "Kampaania ID",
-    "STATE": "Olek",
-    "NAME": "Nimi",
-    "LISTS": "Loendid",
-    "UNIQUEID": "Unikaalne ID",
-    "STATUS": "Staatus",
-    "STARTTIME": "Algusaeg",
-    "ENDTIME": "Lõpuaeg",
-    "MOTION_BULL": "Liikumise Pull",
+    "SELECT_TAG": "Select tags",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "USERID": "Recall Agent ID",
+    "PRIORITY": "Priority",
+    "MOTIONDIALER": "Motion Bull",
+    "IMPORT_CONTACTS": "Import Contacts",
+    "PREFIX": "Dial Prefix",
+    "VOICEQUEUEID": "VoiceQueue ID",
+    "CAMPAIGNID": "Campaign ID",
+    "STATE": "State",
+    "NAME": "Name",
+    "LISTS": "Lists",
+    "UNIQUEID": "Unique Id",
+    "STATUS": "Status",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopperi Finaal",
-    "HISTORY": "Hopperi Ajalugu",
-    "SCHEDULEDAT": "Ajastatud",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_LIST": "Redigeeri loendit",
-    "EDIT_HOPPER": "Redigeeri Hopperit",
-    "DELETE_LIST": "Kustuta Loend",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "RELOAD": "Laadi uuesti",
-    "NO_COMPANIES": "Ettevõte puudub",
-    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
-    "ADD": "Lisa",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper History",
+    "SCHEDULEDAT": "Scheduled At",
+    "SEARCH_FOR_ANYONE": "Search",
+    "EDIT_LIST": "Edit List",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Delete List",
+    "DELETE_HOPPER": "Delete Hopper",
+    "RELOAD": "Reload",
+    "NO_COMPANIES": "No Company",
+    "NO_AVAILABLE_ITEMS": "No Available Items",
+    "ADD": "Add",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "ALIAS_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
+      "NAME_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "ALIAS_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "EMAIL_MUST_VALID": "Wrong format",
+      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Kirjeldus",
-    "DISPOSITION": "Kasutus",
-    "DISPOSITIONS": "Kasutused",
-    "VOICEDISPOSITIONS": "Hääle Kasutused",
-    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "ADD_LIST": "Lisa Loendid",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "COMPANIES": "Ettevõtted",
-    "EDIT_COMPANY": "Redigeeri Ettevõtet",
-    "DELETE_COMPANY": "Kustuta Ettevõtted",
-    "PHONE": "Telefon",
-    "EMAIL": "E-post",
-    "ADD_COMPANY": "Lisa Ettevõte",
-    "CONTACTS": "Kontaktid",
-    "NEW_LIST": "Uus loend",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "LIST": "Loend",
-    "COMPANY": "Ettevõte",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "EDIT_CONTACT": "Muuda Kontakti",
-    "MERGE_CONTACT": "Koosta Kontakt",
-    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
-    "DELETE_CONTACT": "Kustuta Kontakt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "DETAIL": "Üksikasi",
-    "PERSONAL_INFO": "Isiklik teave",
-    "MOBILE": "Mobiil",
-    "FAX": "Faks",
-    "TAGS": "Sildid",
-    "SHOW_ALL_FIELDS": "Näita kõik väljad",
-    "FEWER_FIELDS": "Näita vähem välju",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "DELETE": "Kustuta",
-    "DELETE_ALL": "Kustuta Kõik",
-    "CONTACTMANAGER": "Kontaktide Haldur",
-    "ID": "ID",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CUSTOMFIELDS": "Kohandatud Väljad",
-    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
-    "ADD_TAG": "Lisa Silt",
-    "NO_TAG": "Sildid Puuduvad",
+    "DESCRIPTION": "Description",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositions",
+    "VOICEDISPOSITIONS": "Voice Dispositions",
+    "NEW_VOICEDISPOSITION": "New Voice Disposition",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "ADD_LIST": "Add List",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "COMPANIES": "Companies",
+    "EDIT_COMPANY": "Edit Company",
+    "DELETE_COMPANY": "Delete Company",
+    "PHONE": "Phone",
+    "EMAIL": "Email",
+    "ADD_COMPANY": "Add Company",
+    "CONTACTS": "Contacts",
+    "NEW_LIST": "New List",
+    "FIRSTNAME": "First Name",
+    "LASTNAME": "Last Name",
+    "LIST": "List",
+    "COMPANY": "Company",
+    "ADD_CONTACT": "Add Contact",
+    "EDIT_CONTACT": "Edit Contact",
+    "MERGE_CONTACT": "Merge Contact",
+    "DUPLICATE_CONTACT": "Duplicate Contact",
+    "DELETE_CONTACT": "Delete Contact",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "DETAIL": "Detail",
+    "PERSONAL_INFO": "Personal Info",
+    "MOBILE": "Mobile",
+    "FAX": "Fax",
+    "TAGS": "Tags",
+    "SHOW_ALL_FIELDS": "Show all fields",
+    "FEWER_FIELDS": "Show less fields",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "DELETE": "Delete",
+    "DELETE_ALL": "Delete All",
+    "CONTACTMANAGER": "Contacts Manager",
+    "ID": "Id",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "CUSTOMFIELDS": "Custom Fields",
+    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
+    "ADD_TAG": "Add Tag",
+    "NO_TAG": "No Tags",
     "ALIAS": "Alias",
-    "TYPE": "Tüüp",
-    "VALUE": "Väärtus",
-    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
-    "NEW_COMPANY": "Uus Ettevõte",
-    "NEW_CONTACT": "Uus Kontakt",
-    "NEW_TAG": "Uus Silt",
-    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
-    "FINISH": "Lõpp",
-    "SUCCESS": "Õnnestus",
-    "FAILURE": "Nurjus",
-    "ALL_CONTACTS": "Kõik Kontaktid",
-    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
-    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "VAT": "KM",
-    "COMPANYID": "Ettevõtte ID",
-    "WEBSITE": "Veebisait",
-    "EMAIL_DOMAIN": "E-posti Domeen",
-    "ADDRESS": "Aadress",
-    "POSTAL_CODE": "Postiindeks",
-    "SHIPMENTADDRESS": "Saadetise Aadress",
-    "COPY_CONTACT": "Kopeeri Kontakt",
-    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
-    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
-    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
-    "AGENTADD_LIST": "Lisa Agendid Loendisse",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NONE": "Ühtegi",
-    "FULLNAME": "Täisnimi",
-    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
-    "DUPLICATES": "Dublikaadid",
-    "UPLOAD_CSV": "Laadi üles CSV",
-    "TAG": "Silt",
-    "UPLOAD": "Laadi üles",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "DATEOFBIRTH": "Sünnikuupäev",
-    "NOTES": "Märkmed",
-    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
-    "GOTO_LIST": "Kuva Kontaktid",
-    "GOTO_COMPANY": "Kuva Kontaktid",
-    "REQUIRED": "Nõutud",
-    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
-    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
-    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
-    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
-    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "TYPE": "Type",
+    "VALUE": "Value",
+    "ADD_CUSTOMFIELD": "Add Custom Field",
+    "EDIT_CUSTOMFIELD": "Edit Custom Field",
+    "DELETE_CUSTOMFIELD": "Delete Custom Field",
+    "NEW_COMPANY": "New Company",
+    "NEW_CONTACT": "New Contact",
+    "NEW_TAG": "New Tag",
+    "UPLOAD_CONTACTS": "Upload Contacts",
+    "FINISH": "Finish",
+    "SUCCESS": "Success",
+    "FAILURE": "Failure",
+    "ALL_CONTACTS": "All Contacts",
+    "NEW_CUSTOMFIELD": "New Custom Field",
+    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
+    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
+    "VAT": "VAT",
+    "COMPANYID": "Company ID",
+    "WEBSITE": "Website",
+    "EMAIL_DOMAIN": "Email Domain",
+    "ADDRESS": "Address",
+    "POSTAL_CODE": "Postal Code",
+    "SHIPMENTADDRESS": "Shipment Address",
+    "COPY_CONTACT": "Copy Contact",
+    "GOTOCONTACTS_LIST": "Show Contacts",
+    "GOTOCONTACTS_COMPANY": "Show Contacts",
+    "ADD_AGENT_TO_LIST": "Add Agent to List",
+    "AGENTADD_LIST": "Add Agents to List",
+    "NO_AVAILABLE_INFO": "No available info",
+    "NONE": "None",
+    "FULLNAME": "Full Name",
+    "CHECK_DUPLICATES": "Check Duplicates",
+    "DUPLICATES": "Duplicates",
+    "UPLOAD_CSV": "Upload CSV",
+    "TAG": "Tag",
+    "UPLOAD": "Upload",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "DATE_OF_BIRTH": "Birthdate",
+    "DATEOFBIRTH": "Birthdate",
+    "NOTES": "Notes",
+    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
+    "GOTO_LIST": "Show Contacts",
+    "GOTO_COMPANY": "Show Contacts",
+    "REQUIRED": "Required",
+    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
+    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
+    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
+    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
+    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessioonid",
+    "SESSIONS": "Sessions",
     "AGENT": "Agent",
-    "PROJECT": "Projekt",
-    "SELECT_LIST": "Vali loend",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_TAGS": "Vali üks või enam silte",
+    "PROJECT": "Project",
+    "SELECT_LIST": "Select a list",
+    "SELECT_COMPANY": "Select a company",
+    "SELECT_TAGS": "Select one or more tags",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
-      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
+      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
+      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu leheküljel",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "SOCIAL": "Sotsiaalne",
-    "ROW": "Rida",
-    "EXPORT_ERRORS": "Ekspordi Vead",
-    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
-    "STOP": "Peata",
-    "SELECT_FILE": "Vali Fail",
+    "SOCIAL": "Social",
+    "ROW": "Row",
+    "EXPORT_ERRORS": "Export Errors",
+    "UPLOAD_COMPLETED": "Upload Completed",
+    "STOP": "Stop",
+    "SELECT_FILE": "Select File",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
+    "ADDITIONAL_PHONES": "Täiendavad telefonid",
+    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd"
+    "TIMEZONE": "Vali ajavöönd",
+    "MOVE_DOWN": "Liigu alla",
+    "MOVE_UP": "Üles liikuma"
   }
 }
index 739750c..0a5b7eb 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Allalaadimine",
-    "UNMANAGED_RATE": "Haldamata Määr",
-    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
-    "VOICE_WAITING": "OOTEL",
-    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
-    "VOICE_TALKING": "RÄÄKIMINE",
-    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
-    "VOICE_ANSWERED": "VASTATUD",
-    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
-    "VOICE_ABANDONED": "TAGASILÜKATUD",
-    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
-    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
-    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
-    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
-    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
-    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
-    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
-    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
-    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
-    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
-    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
-    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
-    "VOICE_UNMANAGED": "HALDAMATA",
-    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
-    "OPENED_TEXT": "Avatud Suhtlused",
-    "MANAGED": "Hallatud",
-    "MANAGED_TEXT": "Hallatud Suhtlused",
-    "ABANDONED": "Tagasilükatud",
-    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
-    "ABANDONED_RATE": "Tagasilükatud Määr",
-    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
-    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
-    "MANAGED_RATE": "Hallatud Määr",
-    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
-    "AVG_MANAGED_TIME": "AVG Haldusaeg",
-    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
-    "NO_DISPOSITION_SET": "Kasutust pole määratud",
-    "AGENTS": "Agendid",
-    "TRANSFER": "Edastus",
-    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
-    "CUSTOMER_JOURNEY": "Kliendi Teekond",
-    "ME": "Mina",
-    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
-    "NOTAVAILABLE": "Pole saadaval",
-    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
-    "ASSIGNTO": "Määra",
-    "SELECT_CAMPAIGN": "Vali Järjekord",
-    "FREE": "Vaba",
-    "RESERVED": "Reserveeritud",
-    "QUEUECALLEREXITREASON": "Põhjus",
-    "QUEUECALLEREXITAT": "Katkestatud",
-    "LASTASSIGNEDTO": "Viimati määratud",
-    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
-    "ABANDONAT": "Tagasilükatud",
-    "QUEUE": "Järjekord",
-    "SELECT_SUBSTATUS": "Vali Alamstaatus",
-    "READ": "Loetud",
-    "UNREAD": "Lugemata",
-    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
-    "SELECT_AGENT": "Vali Agent",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
-    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
-    "CHANNEL_QUEUE": "Järjekord",
-    "CHANNEL_FROM": "Alates",
-    "LOADING_INTERACTION": "Laadime suhtlust...",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "DOWNLOAD": "Download",
+    "UNMANAGED_RATE": "Unmanaged Rate",
+    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
+    "VOICE_WAITING": "WAITING",
+    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
+    "VOICE_TALKING": "TALKING",
+    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
+    "VOICE_ANSWERED": "ANSWERED",
+    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
+    "VOICE_ABANDONED": "ABANDONED",
+    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
+    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
+    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
+    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
+    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
+    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
+    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
+    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
+    "VOICE_ANSWER_RATE": "ANSWER RATE",
+    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
+    "VOICE_ABANDON_RATE": "ABANDON RATE",
+    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
+    "VOICE_UNMANAGED": "UNMANAGED",
+    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
+    "OPENED_TEXT": "Opened Interactions",
+    "MANAGED": "Managed",
+    "MANAGED_TEXT": "Managed Interactions",
+    "ABANDONED": "Abandoned",
+    "ABANDONED_TEXT": "Abandoned Interactions",
+    "ABANDONED_RATE": "Abandoned Rate",
+    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
+    "TOTAL_OFFERED": "Total Offered",
+    "TOTAL_OFFERED_TEXT": "Offered Interactions",
+    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
+    "MANAGED_RATE": "Managed Rate",
+    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
+    "AVG_MANAGED_TIME": "AVG Management Time",
+    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
+    "NO_DISPOSITION_SET": "No disposition set",
+    "AGENTS": "Agents",
+    "TRANSFER": "Transfer",
+    "NO_DATA_AVAILABLE": "No data available",
+    "CUSTOMER_JOURNEY": "Customer Journey",
+    "ME": "Me",
+    "CURRENTLY_IN_USE_BY": "Currently in use by",
+    "NOTAVAILABLE": "Not available",
+    "CLICKRELOAD": "New abandoned calls! Reload please",
+    "ASSIGNTO": "Assign to",
+    "SELECT_CAMPAIGN": "Select a Queue",
+    "FREE": "Free",
+    "RESERVED": "Reserved",
+    "QUEUECALLEREXITREASON": "Reason",
+    "QUEUECALLEREXITAT": "Dropped",
+    "LASTASSIGNEDTO": "Last Assigned To",
+    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
+    "ABANDONAT": "Abandoned",
+    "QUEUE": "Queue",
+    "SELECT_SUBSTATUS": "Select Substatus",
+    "READ": "Read",
+    "UNREAD": "Unread",
+    "SELECT_READ_UNREAD": "Select Read/Unread",
+    "SELECT_AGENT": "Select Agent",
+    "MARK_AS_UNREAD": "Mark as unread",
+    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
+    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
+    "CHANNEL_QUEUE": "Queue",
+    "CHANNEL_FROM": "From",
+    "LOADING_INTERACTION": "We are loading the interaction...",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "MON": "E",
-    "TUE": "T",
-    "WED": "K",
-    "THU": "N",
-    "FRI": "R",
-    "SAT": "L",
-    "SUN": "P",
-    "DELETE": "Kustuta",
-    "LAST_3_DAYS": "Viimased 3 Päeva",
-    "LAST_YEAR": "Viimane Aasta",
-    "THIS_YEAR": "See Aasta",
-    "LAST_MONTH": "Viimane Kuu",
-    "THIS_MONTH": "See Kuu",
-    "LAST_WEEK": "Viimane Nädal",
-    "THIS_WEEK": "See Nädal",
-    "YESTERDAY": "Eile",
-    "TODAY": "Täna",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "HOME": "Kodu",
-    "SET_AS": "Määra kui",
-    "PENDING": "Ootel",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
-    "TAGS": "Sildid",
-    "SELECT_TAG": "Vali Silt",
-    "TYPE": "Tüüp",
-    "SOURCE": "Lähtekoht",
-    "DESTINATION": "Sihtpunkt",
-    "CALLERID": "Helistaja ID",
-    "END_AT": "Lõpetamise aeg",
-    "DURATION": "Kestus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "FAX": "Faks",
-    "NOT_ASSIGNED": "Pole määratud",
-    "UNKNOWN": "Teadmata",
-    "SELECT_USER": "Vali Kasutaja",
-    "LAST_MESSAGE": "Viimane sõnum",
-    "USER": "Kasutaja",
-    "RATING": "Hinnang",
-    "FEEDBACK": "Tagasiside",
-    "SUBJECT": "Teema",
-    "CUSTOMER_IP": "Kliendi IP",
-    "REFERER": "Viitaja",
-    "ACCOUNT": "Konto",
-    "WEBSITE": "Veebisait",
+    "DECEMBER": "December",
+    "MON": "Mon",
+    "TUE": "Tue",
+    "WED": "Wed",
+    "THU": "Thu",
+    "FRI": "Fri",
+    "SAT": "Sat",
+    "SUN": "Sun",
+    "DELETE": "Delete",
+    "LAST_3_DAYS": "Last 3 Day",
+    "LAST_YEAR": "Last Year",
+    "THIS_YEAR": "This Year",
+    "LAST_MONTH": "Last Month",
+    "THIS_MONTH": "This Month",
+    "LAST_WEEK": "Last Week",
+    "THIS_WEEK": "This Week",
+    "YESTERDAY": "Yesterday",
+    "TODAY": "Today",
+    "SELECT_DATE": "Select Start Date",
+    "HOME": "Home",
+    "SET_AS": "Set As",
+    "PENDING": "Pending",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
+    "TAGS": "Tags",
+    "SELECT_TAG": "Select Tag",
+    "TYPE": "Type",
+    "SOURCE": "Source",
+    "DESTINATION": "Destination",
+    "CALLERID": "Caller ID",
+    "END_AT": "End At",
+    "DURATION": "Duration",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "NOT_ASSIGNED": "Not Assigned",
+    "UNKNOWN": "Unknown",
+    "SELECT_USER": "Select User",
+    "LAST_MESSAGE": "Last message",
+    "USER": "User",
+    "RATING": "Rating",
+    "FEEDBACK": "Feedback",
+    "SUBJECT": "Subject",
+    "CUSTOMER_IP": "Customer IP",
+    "REFERER": "Referer",
+    "ACCOUNT": "Account",
+    "WEBSITE": "Website",
     "AGENT": "Agent",
-    "CREATED_AT": "Loomisaeg",
-    "CLOSED_AT": "Sulgemise aeg",
-    "DISPOSITION": "Kasutus",
-    "CONTACT": "Kontakt",
-    "INTERACTION": "Suhtlus",
-    "BROWSER_NAME": "Brauseri Nimi",
-    "BROWSER_VERSION": "Brauseri Versioon",
-    "OS_NAME": "Operatsioonisüsteemi Nimi",
-    "OS_VERSION": "Operatsioonisüsteemi Versioon",
-    "DEVICE_MODEL": "Seadme Mudel",
-    "DEVICE_VENDOR": "Seadme Tarnija",
-    "DEVICE_TYPE": "Seadme Tüüp",
-    "RECALLME": "Kutsu Mind tagasi",
-    "DROP_RATE": "Katkesta Määr",
-    "DROPPED": "Katkestatud",
-    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
-    "DETAIL": "Üksikasi",
-    "MOTION_BULL": "Liikumise Pull",
-    "LIMITED": "Piiratud",
-    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
-    "DASHBOARDS": "Töölauad",
-    "RECORDINGS": "Salvestused",
-    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
-    "ORIGINATED": "Päritolu",
-    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
-    "UPDATE": "Värskendamine",
-    "MORE": "Rohkem",
-    "MOTIONDIALER": "Liikumise Pull",
-    "DISPOSE": "Likvideeri",
-    "QUEUES": "Järjekorrad",
-    "DIALER_CALL": "Numbrivalija Kõne",
-    "ELAPSED_TIME": "Kulunud Aeg",
-    "EDIT": "Redigeeri",
-    "MERGE": "Ühenda",
-    "DUPLICATE": "Dubleeri",
-    "UNIQUEID": "Kordumatu ID",
-    "CAMPAIGN": "Kampaania",
-    "NONE": "Ühtegi",
-    "NAME": "Nimi",
-    "ANSWER_MACHINE": "Automaatvastaja",
-    "INTERESTED": "Huvitatud",
-    "NOT_INTERESTED": "Pole Huvitatud",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "SOLD": "Müüdud",
-    "SPECIAL": "Muud",
-    "BLACKLIST": "Must nimekiri",
-    "RESCHEDULE": "Planeeri uuesti",
-    "FIRSTNAME": "Eesnimi",
-    "LASTNAME": "Perekonnanimi",
-    "MOBILE": "Mobiil",
-    "DATE_OF_BIRTH": "Sünnikuupäev",
-    "COMPANY": "Ettevõte",
-    "TAG": "Silt",
-    "COUNTRY": "Riik",
-    "CITY": "Linn",
-    "STREET": "Tänav",
-    "POSTALCODE": "Postiindeks",
-    "CUSTOM_FIELDS": "Kohandatud Väljad",
-    "GENERAL": "Üldine",
-    "VOICE": "Hääl",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
-    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
-    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
-    "INBOUND_ANSWERED": "Vastatud",
-    "OUTBOUND_ANSWERED": "Vastatud",
-    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
-    "INBOUND_ANSWER_RATE": "Vastuse Määr",
-    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
-    "ABANDON_RATE": "Tagasilükkamise Määr",
-    "UNMANAGED": "Haldamata",
-    "TOTAL": "Kokku",
-    "TOT_DURATION": "Kestus Kokku",
-    "AVG_DURATION": "Keskmine Kestus",
+    "CREATED_AT": "Created At",
+    "CLOSED_AT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "CONTACT": "Contact",
+    "INTERACTION": "Interaction",
+    "BROWSER_NAME": "Browser Name",
+    "BROWSER_VERSION": "Browser Version",
+    "OS_NAME": "Operating System Name",
+    "OS_VERSION": "Operating System Version",
+    "DEVICE_MODEL": "Device Model",
+    "DEVICE_VENDOR": "Device Vendor",
+    "DEVICE_TYPE": "Device Type",
+    "RECALLME": "Recall Me",
+    "DROP_RATE": "Drop Rate",
+    "DROPPED": "Dropped",
+    "DROPPED_TEXT": "Dropped Queue Calls",
+    "DETAIL": "Detail",
+    "MOTION_BULL": "Motion Bull",
+    "LIMITED": "Limited",
+    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
+    "DASHBOARDS": "Dashboards",
+    "RECORDINGS": "Recordings",
+    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
+    "ORIGINATED": "Originated",
+    "ORIGINATED_TEXT": "Queue Calls Originated",
+    "UPDATE": "Update",
+    "MORE": "More",
+    "MOTIONDIALER": "Motion Bull",
+    "DISPOSE": "Dispose",
+    "QUEUES": "Queues",
+    "DIALER_CALL": "Dialer Call",
+    "ELAPSED_TIME": "Elapsed Time",
+    "EDIT": "Edit",
+    "MERGE": "Merge",
+    "DUPLICATE": "Duplicate",
+    "UNIQUEID": "Uniqueid",
+    "CAMPAIGN": "Campaign",
+    "NONE": "None",
+    "NAME": "Name",
+    "ANSWER_MACHINE": "Answer Machine",
+    "INTERESTED": "Interested",
+    "NOT_INTERESTED": "Not Interested",
+    "PERSONAL_INFO": "Personal Info",
+    "SOLD": "Sold",
+    "SPECIAL": "Special",
+    "BLACKLIST": "Blacklist",
+    "RESCHEDULE": "Reschedule",
+    "FIRSTNAME": "Firstname",
+    "LASTNAME": "Lastname",
+    "MOBILE": "Mobile",
+    "DATE_OF_BIRTH": "Birthdate",
+    "COMPANY": "Company",
+    "TAG": "Tag",
+    "COUNTRY": "Country",
+    "CITY": "City",
+    "STREET": "Street",
+    "POSTALCODE": "Postal Code",
+    "CUSTOM_FIELDS": "Custom Fields",
+    "GENERAL": "General",
+    "VOICE": "Voice",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
+    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
+    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "INBOUND_ANSWERED": "Answered",
+    "OUTBOUND_ANSWERED": "Answered",
+    "AVG_HOLD_TIME": "Average Hold Time",
+    "INBOUND_ANSWER_RATE": "Answer Rate",
+    "OUTBOUND_ANSWER_RATE": "Answer Rate",
+    "ABANDON_RATE": "Abandon Rate",
+    "UNMANAGED": "Unmanaged",
+    "TOTAL": "Total",
+    "TOT_DURATION": "Total Duration",
+    "AVG_DURATION": "Average Duration",
     "HELP": {
-      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
-      "WAITING": "Ootel Suhtluste koguarv",
-      "OPENED": "Aktiivsete Suhtluste koguarv",
-      "MANAGED": "Lõpetatud Suhtluste koguarv",
-      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
-      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
-      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
-      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
-      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
-      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
-      "UNMANAGED": "Haldamata Suhtluste koguarv",
-      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
-      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
-      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
-      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
-      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
-      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
-      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
-      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
-      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
-      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
-      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
-      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
-      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
-      "TOTAL": "Väljuvate Kõnede koguarv",
-      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
-      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
+      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
+      "WAITING": "The total number of Waiting Interactions",
+      "OPENED": "The total number of Active Interactions",
+      "MANAGED": "The total number of Completed Interactions",
+      "ABANDONED": "The total number of Abandoned Interactions",
+      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
+      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
+      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
+      "MANAGED_RATE": "The Managed Rate of all the Interactions",
+      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
+      "UNMANAGED": "The total number of Unmanaged Interactions",
+      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
+      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
+      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
+      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
+      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
+      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
+      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
+      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
+      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
+      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
+      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
+      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
+      "DROP_RATE": "The Drop Rate of all the Queue Calls",
+      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
+      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
+      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
+      "TOTAL": "The total number of Outbound Calls",
+      "TOT_DURATION": "The total duration of all the Outbound Calls",
+      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "AGENT_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Mandatory field",
+      "PHONE_REQUIRED": "Mandatory field",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
-    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
-    "ADD": "Lisa",
-    "CONTACTMANAGER": "Kontakti Haldur",
-    "DASHBOARD": "Töölaud",
-    "EDIT_CONTACT": "Redigeeri kontakti",
-    "EMAIL": "E-post",
-    "FULLNAME": "Täisnimi",
-    "LIST": "Loend",
-    "NEW_CONTACT": "Uus Kontakt",
-    "PHONE": "Telefon",
-    "SAVE": "Salvesta",
-    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
-    "CONTACTS": "Kontaktid",
-    "MYCONTACTS": "Minu Kontaktid",
-    "ADD_CONTACT": "Lisa Kontakt",
-    "RELOAD": "Laadi uuesti",
-    "WAITING_TEXT": "Ootel Suhtlused",
-    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
-    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
-    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
-    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
-    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
-    "UNMANAGED_TEXT": "Haldamata Suhtlused",
-    "TOTAL_TEXT": "Väljuvad Kõned kokku",
-    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
-    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
-    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridy lehekülje kohta",
+    "NO_AVAILABLE_INFO": "No available info",
+    "WELCOME_TO_MOTION": "Welcome to Motion",
+    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
+    "ADD": "Add",
+    "CONTACTMANAGER": "Contact Manager",
+    "DASHBOARD": "Dashboard",
+    "EDIT_CONTACT": "Edit contact",
+    "EMAIL": "Email",
+    "FULLNAME": "Fullname",
+    "LIST": "List",
+    "NEW_CONTACT": "New Contact",
+    "PHONE": "Phone",
+    "SAVE": "Save",
+    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
+    "CONTACTS": "Contacts",
+    "MYCONTACTS": "My Contacts",
+    "ADD_CONTACT": "Add Contact",
+    "RELOAD": "Reload",
+    "WAITING_TEXT": "Waiting Interactions",
+    "TALKING_TEXT": "Active Queue Calls",
+    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
+    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
+    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
+    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
+    "UNMANAGED_TEXT": "Unmanaged Interactions",
+    "TOTAL_TEXT": "Total Outbound Calls",
+    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
+    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
+    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
-    "CONTACT_INFO": "Kontakti Teave",
-    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
-    "DISPOSITIONS": "Kasutused",
-    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
-    "ACCEPT": "Aktsepteeri",
-    "REJECT": "Hülga",
-    "CLOSED": "Suletud",
-    "INFO": "Teave",
-    "NOTE": "Märge",
-    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
-    "ATTENTION": "Tähelepanu",
-    "SOCIAL": "Sotsiaalne",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
-    "OPENED": "Avatud",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "SELECT_WEBSITE": "Vali Veebisait",
-    "ALL": "Kõik",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "OPEN": "Ava",
-    "SHOW": "Kuba",
-    "SHOW_DETAILS": "Kuva Üksikasjad",
-    "HIDE_DETAILS": "Peida Üksikasjad",
-    "EXTERNAL_URL": "Väline Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
-    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
-    "CLEAR": "Tühjenda",
-    "CALL_NUMBER": "Helista",
-    "TRANSFER_NUMBER": "Edasta",
-    "CALL_SAVED": "Kõne õigesti salvestatud",
-    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
+    "CONTACT_INFO": "Contact Info",
+    "CLOSE_AND_DISPOSE": "Close and dispose",
+    "DISPOSITIONS": "Dispositions",
+    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
+    "ACCEPT": "Accept",
+    "REJECT": "Reject",
+    "CLOSED": "Closed",
+    "INFO": "Info",
+    "NOTE": "Note",
+    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
+    "ATTENTION": "Attention",
+    "SOCIAL": "Social",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
+    "OPENED": "Opened",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "SELECT_ACCOUNT": "Select Account",
+    "SELECT_WEBSITE": "Select Website",
+    "ALL": "All",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "OPEN": "Open",
+    "SHOW": "Show",
+    "SHOW_DETAILS": "Show Details",
+    "HIDE_DETAILS": "Hide Details",
+    "EXTERNAL_URL": "External Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
+    "SELECT_DATE_RANGE": "Select Date Range",
+    "CLEAR": "Clear",
+    "CALL_NUMBER": "Call",
+    "TRANSFER_NUMBER": "Transfer",
+    "CALL_SAVED": "Call properly saved",
+    "CALL_DISPOSED": "Call properly disposed",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse suhtlused",
+    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi suhtlused",
+    "FAX_INTERACTIONS": "Faksi interaktsioonid",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "ID",
+    "ID": "Id",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
-    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
+    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
+    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Väljastatud",
+    "INVOICEEMITED": "Välja antud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On väiksem kui",
+    "IS_LESS_THAN": "On vähem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti suhtlused",
+    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
+    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Kirjuta üle",
+    "OVERWRITE": "Üle kirjutada",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
+    "QUOTATIONPRODUCTNOTE": "Toote märkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Vali ettevõte",
-    "SELECT_FIELD": "Vali väli",
+    "SELECT_COMPANY": "Valige ettevõte",
+    "SELECT_FIELD": "Valige väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Vali vahemik",
-    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
-    "SELECT_PERIOD_START": "Vali kuupäev",
-    "SELECT_PRODUCT": "Vali toode",
-    "SELECT_PRODUCTTYPE": "Vali tüüp",
-    "SELECT_QUEUE": "Vali järjekord",
-    "SELECT_WORKFLOW": "Vali Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
-    "SMS_INTERACTIONS": "Sõnumi suhtlused",
+    "SELECT_PERIOD": "Valige vahemik",
+    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
+    "SELECT_PERIOD_START": "Valige kuupäev",
+    "SELECT_PRODUCT": "Valige toode",
+    "SELECT_PRODUCTTYPE": "Valige tüüp",
+    "SELECT_QUEUE": "Valige järjekord",
+    "SELECT_WORKFLOW": "Valige Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
+    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastad",
+    "YEARS": "Aastaid",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Vali",
-    "SELECT_CONTACT": "Vali kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
+    "SELECT": "Valige",
+    "SELECT_CONTACT": "Valige kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Tiim",
+    "SELECT_TEAM": "Valige Meeskond",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnita",
+    "CONFIRM": "Kinnitage",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
-    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
-    "SETFILTERS": "Määra filtrid",
+    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
+    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
+    "SETFILTERS": "Määrake filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
-    "SCHEDULED_AT": "kavas kl",
-    "SYSTEM_TIME": "Süsteemi aeg"
+    "SYSTEM_TIME": "Süsteemi aeg",
+    "CONTACT_NAME": "kontaktisiku nimi",
+    "CONTACT_PHONE": "Kontakt Telefon",
+    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
+    "SCHEDULED_TIME": "Planeeritud aeg",
+    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
   }
 }
index fd6d9b8..7e03440 100644 (file)
 {
   "FAX": {
-    "LOGIN_TIME": "Sisselogimise Aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "FAXCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
-    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SPYINTERACTION": "Spioon",
-    "TAGS": "Sildid",
-    "REPLY": "Vasta",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
-    "EDIT_TRUNK": "Redigeeri Magistraali",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "ACCOUNTS": "Kontod",
-    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "PAUSE": "Paus",
-    "INFO": "Teave",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "LOGOUT": "Logi välja",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "PRIORITY": "Prioriteet",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
-    "EDIT_CLOSE": "Redigeeri Sule",
-    "QUEUE": "Järjekord",
+    "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",
+    "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",
+    "CANNEDANSWERS": "Canned Answers",
+    "FAXCANNEDANSWERS": "Canned Answers",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_FAXCANNEDANSWER": "New Canned Answer",
+    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
+    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
+    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
+    "SPYINTERACTION": "Spy",
+    "TAGS": "Tags",
+    "REPLY": "Reply",
+    "SEND": "Send",
+    "TO": "To",
+    "FROM": "From",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
+    "EDIT_TRUNK": "Edit Trunk",
+    "REGISTERED": "Registered",
+    "UNREGISTERED": "Unregistered",
+    "EDIT_ACCOUNT": "Edit Fax Account",
+    "PARTIALPAUSE": "Partial Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
+    "ACCOUNTS": "Accounts",
+    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
+    "TRUNK_STATUS": "Trunk Status",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "PAUSE": "Pause",
+    "INFO": "Info",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "LOGOUT": "Logout",
+    "DEFAULT_PAUSE": "Default pause",
+    "AGENTADD_QUEUE": "Add Agent to Fax queue",
+    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
+    "UNPAUSE": "End Pause",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "PRIORITY": "Priority",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
+    "VALUE": "Value",
+    "EDIT_FAXQUEUE": "Edit Fax Queue",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Edit Goto",
+    "EDIT_NOOP": "Edit Noop",
+    "EDIT_GOTOP": "Edit GotoP",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "EDIT_QUEUE": "Edit Fax Queue",
+    "EDIT_CLOSE": "Edit Close",
+    "QUEUE": "Queue",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Märkmed",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutamine",
-    "REALTIME": "Reaalaeg",
-    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
-    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
-    "NAME": "Nimi",
-    "FAXQUEUES": "Faksi Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "NOTES": "Notes",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "REALTIME": "Realtime",
+    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
+    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
+    "NAME": "Name",
+    "FAXQUEUES": "Fax Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
-      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
-      "MODEM_REQUIRED": "Kohustuslik Väli",
-      "GATEWAY_REQUIRED": "Kohustuslik Väli",
-      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
-      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
-      "TRUNK_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
+      "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",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "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",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "AGENT_REQUIRED": "Mandatory Field",
+      "QUEUE_REQUIRED": "Mandatory Field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
+      "CONDITION_REQUIRED": "Mandatory Field",
+      "PRIORITY_REQUIRED": "Mandatory Field",
+      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "NAME_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
+      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
+      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
+      "MODEM_REQUIRED": "Mandatory Field",
+      "GATEWAY_REQUIRED": "Mandatory Field",
+      "FAXDETECT_REQUIRED": "Mandatory Field",
+      "T38TIMEOUT_REQUIRED": "Mandatory Field",
+      "TIMEOUT_REQUIRED": "Mandatory Field",
+      "HEADERINFO_REQUIRED": "Mandatory Field",
+      "TRUNK_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Mandatory Field",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strateegia",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
-    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "FAXACCOUNTS": "Faksi Kontod",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
-    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
-    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "TRUNK": "Magistraal",
-    "LOCALSTATIONID": "Kohaliku Jaama ID",
+    "STRATEGY": "Strategy",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_FAXQUEUE": "Add Fax Queue",
+    "DELETE_FAXQUEUE": "Delete Fax Queue",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "FAXACCOUNTS": "Fax Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_FAXACCOUNT": "Add Fax Account",
+    "EDIT_FAXACCOUNT": "Edit Fax Account",
+    "DELETE_FAXACCOUNT": "Delete Fax Account",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "TRUNK": "Trunk",
+    "LOCALSTATIONID": "Local Station Identifier",
     "HELP": {
-      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
-      "HEADERINFO": "Väljuva Faksi Päise teave",
-      "MODEM": "Modemi Tüüp (v17/v27/v29)",
-      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
-      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
-      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
-      "ECM": "Ühenduse Režiimi Viga (ECM)",
-      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
-      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
+      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
+      "HEADERINFO": "Outbound Fax Header information",
+      "MODEM": "Modem Type (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
+      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
+      "ECM": "Error Connection Mode (ECM)",
+      "MINRATE": "Minimum transfer rate set before transmission",
+      "MAXRATE": "Maximum transfer rate set before transmission",
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
     },
-    "ADVANCED": "Täpsem",
+    "ADVANCED": "Advanced",
     "ECM": "ECM",
-    "MINRATE": "Min Määr",
-    "MAXRATE": "Maks Määr",
+    "MINRATE": "Min Rate",
+    "MAXRATE": "Max Rate",
     "MODEM": "Modem",
-    "GATEWAY": "Portaal",
-    "FAXDETECT": "Faksi Tuvastus",
-    "T38TIMEOUT": "T.38 Aegumine",
-    "SIP": "Tehnoloogia",
-    "HEADERINFO": "Päise Teave",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "FAX": "Faks",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "FAXDISPOSITIONS": "Faksi Kasutus",
-    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
-    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
-    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
-    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
-    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
-    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
-    "NEW_FAXACCOUNT": "Uus Faksi Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "GATEWAY": "Gateway",
+    "FAXDETECT": "Fax Detect",
+    "T38TIMEOUT": "T.38 Timeout",
+    "SIP": "Technology",
+    "HEADERINFO": "Header Info",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "FAX": "Fax",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Fax Dispositions",
+    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
+    "NEW_FAXDISPOSITION": "New Fax Disposition",
+    "ADD_FAXDISPOSITION": "Add Fax Disposition",
+    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
+    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
+    "NEW_FAXQUEUE": "New Fax Queue",
+    "NEW_FAXACCOUNT": "New Fax Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "DELETE": "Kustuta",
-    "KEY": "Võti",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali Staatus",
-    "ALL": "Kõik",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "INTERACTIONS": "Suhtlused",
-    "CONTACT": "Kontact",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "UNKNOWN": "Teadmata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutuses",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutuses",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-post",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DELETE": "Delete",
+    "KEY": "Key",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "FILTER": "Filter",
+    "SELECT_STATUS": "Select Status",
+    "ALL": "All",
+    "CLOSED": "Closed",
+    "OPENED": "Opened",
+    "SELECT_ACCOUNT": "Select Account",
+    "INTERACTIONS": "Interactions",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "UNKNOWN": "Unknown",
+    "UNAVAILABLE": "Unavailable",
+    "NOT_INUSE": "Not in use",
+    "REACHABLE": "Reachable",
+    "IN_USE": "In use",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index b43fb9a..4c1be43 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "Kohta",
-    "CONTACT_US": "Võta meiega ühendust",
-    "HELP": "Abi",
-    "USEFUL_LINKS": "Kasulikud lingid"
+    "ABOUT": "About",
+    "CONTACT_US": "Contact us",
+    "HELP": "Help",
+    "USEFUL_LINKS": "Useful links"
   }
 }
index 7444e6b..0a98fe6 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Täpsem",
-    "MODULE_SEARCH": "Mooduli Otsing",
-    "MODULE_CREATE": "Mooduli Loomine",
-    "INTEGRATIONS": "Integreerimised",
-    "ZENDESKACCOUNTS": "Zendesk Kontod",
-    "ID": "ID",
-    "NAME": "Nimi",
-    "USERNAME": "Kasutajanimi",
+    "ADVANCED": "Advanced",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
-    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
-    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
-    "AUTHTYPE": "Autentimise Tüüp",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TOKEN": "Luba",
-    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
+    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
+    "AUTHTYPE": "Authentication Type",
+    "PASSWORD": "Password",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "TOKEN": "Token",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
+    "DESCRIPTION": "Description",
+    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "URI_REQUIRED": "Kohustuslik väli",
-      "URI_MUST_VALID_URL": "Vale formaat",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "TOKEN_REQUIRED": "Kohustuslik väli",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
-      "CLIENTID_REQUIRED": "Kohustuslik väli",
-      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
-      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
-      "APIKEY_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
-      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
-      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
-      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
-      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Mandatory field",
+      "USERNAME_REQUIRED": "Mandatory field",
+      "URI_REQUIRED": "Mandatory field",
+      "URI_MUST_VALID_URL": "Wrong format",
+      "PASSWORD_REQUIRED": "Mandatory field",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "TOKEN_REQUIRED": "Mandatory field",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
+      "CLIENTID_REQUIRED": "Mandatory field",
+      "CLIENTSECRET_REQUIRED": "Mandatory field",
+      "SECURITYTOKEN_REQUIRED": "Mandatory field",
+      "APIKEY_REQUIRED": "Mandatory field",
+      "CONTENT_REQUIRED": "Mandatory field",
+      "VARIABLENAME_REQUIRED": "Mandatory field",
+      "KEY_REQUIRED": "Mandatory field",
+      "TYPE_REQUIRED": "Mandatory field",
+      "VALUE_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "CONSUMERKEY_REQUIRED": "Mandatory field",
+      "CONSUMERSECRET_REQUIRED": "Mandatory field",
+      "TOKENSECRET_REQUIRED": "Mandatory field",
+      "HOST_REQUIRED": "Mandatory field",
+      "AUTHTOKEN_REQUIRED": "Mandatory field",
+      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
+      "ACCESS_KEY_REQUIRED": "Mandatory field",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "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",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
+      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
     },
-    "ACCOUNT": "Konto",
-    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
-    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
-    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
-    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
-    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
-    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
-    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
-    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
-    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
-    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
-    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
-    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
-    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
-    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
-    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
-    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
-    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
-    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
-    "SALESFORCEACCOUNTS": "Salesforce Kontod",
-    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
-    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
-    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
-    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
-    "CLIENTID": "Kliendi ID",
-    "CLIENTSECRET": "Kliendi Saladus",
-    "SECURITYTOKEN": "Turvalisuse Luba",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "APIKEY": "Api Võti",
-    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
-    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
-    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
-    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
-    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
-    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
-    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
-    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
-    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
-    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
-    "CONFIGURATIONS": "Konfiguratsioonid",
-    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
-    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
-    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
-    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
-    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
-    "SUBJECTS": "Teemad",
-    "DESCRIPTIONS": "Kirjeldused",
-    "FIELDS": "Väljad",
-    "TAGS": "Sildid",
-    "TYPE": "Tüüp",
-    "CONTENT": "Sisu",
-    "EDIT_SUBJECT": "Redigeeri Teemat",
-    "DELETE_SUBJECT": "Kustuta Teema",
-    "NEW_SUBJECT": "Uus Teema",
-    "ADD_SUBJECT": "Lisa Teema",
-    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
-    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
-    "NEW_DESCRIPTION": "Uus Kirjeldus",
-    "ADD_DESCRIPTION": "Lisa Kirjeldus",
-    "EDIT_FIELD": "Redigeeri Väli",
-    "DELETE_FIELD": "Kustuta Väli",
-    "NEW_FIELD": "Uus Väli",
-    "ADD_FIELD": "Lisa Väli",
-    "ADD": "Lisa",
-    "VOICE": "Hääl",
-    "MAIL": "E-post",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava Kanal",
-    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
-    "OUTBOUND_CALL": "Väljuv Kõne",
-    "VALUE": "Väärtus",
-    "FIELD": "Väli",
-    "KEY": "Võti",
-    "CHANNEL": "Kanal",
-    "DELETE": "Kustuta",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
-    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
-    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
-    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
-    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
-    "NEW_TAB": "Uus Vahekaart",
-    "DESKACCOUNTS": "Desk Kontod",
-    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
-    "TEST_DESKACCOUNT": "Testi Desk Kontot",
-    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
-    "CONSUMERKEY": "Tarbija Võti",
-    "CONSUMERSECRET": "Tarbija Saladus",
-    "TOKENSECRET": "Loa Saladus",
-    "ADD_DESKACCOUNT": "Lisa Desk Konto",
-    "NEW_DESKACCOUNT": "Uus Desk Konto",
-    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
-    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
-    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
-    "ZOHOACCOUNTS": "Zoho Kontod",
-    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
-    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
-    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
-    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
-    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
-    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
-    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
-    "AUTHTOKEN": "Autoriseerimise Luba",
+    "ACCOUNT": "Account",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
+    "GENERAL": "General",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
+    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
+    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
+    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
+    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
+    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
+    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
+    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
+    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
+    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
+    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
+    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
+    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
+    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
+    "CLIENTID": "Client ID",
+    "CLIENTSECRET": "Client Secret",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
+    "APIKEY": "Api Key",
+    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
+    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
+    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
+    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
+    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
+    "CONFIGURATIONS": "Configurations",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
+    "ADD_CONFIGURATION": "Add Configuration",
+    "EDIT_CONFIGURATION": "Edit Configuration",
+    "DELETE_CONFIGURATION": "Delete Configuration",
+    "SUBJECTS": "Subjects",
+    "DESCRIPTIONS": "Descriptions",
+    "FIELDS": "Fields",
+    "TAGS": "Tags",
+    "TYPE": "Type",
+    "CONTENT": "Content",
+    "EDIT_SUBJECT": "Edit Subject",
+    "DELETE_SUBJECT": "Delete Subject",
+    "NEW_SUBJECT": "New Subject",
+    "ADD_SUBJECT": "Add Subject",
+    "EDIT_DESCRIPTION": "Edit Description",
+    "DELETE_DESCRIPTION": "Delete Description",
+    "NEW_DESCRIPTION": "New Description",
+    "ADD_DESCRIPTION": "Add Description",
+    "EDIT_FIELD": "Edit Field",
+    "DELETE_FIELD": "Delete Field",
+    "NEW_FIELD": "New Field",
+    "ADD_FIELD": "Add Field",
+    "ADD": "Add",
+    "VOICE": "Voice",
+    "MAIL": "Email",
+    "CHAT": "Chat",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
+    "FIELD": "Field",
+    "KEY": "Key",
+    "CHANNEL": "Channel",
+    "DELETE": "Delete",
+    "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 Accounts",
+    "EDIT_DESKACCOUNT": "Edit Desk Account",
+    "TEST_DESKACCOUNT": "Test Desk Account",
+    "DELETE_DESKACCOUNT": "Delete Desk Account",
+    "CONSUMERKEY": "Consumer Key",
+    "CONSUMERSECRET": "Consumer Secret",
+    "TOKENSECRET": "Token Secret",
+    "ADD_DESKACCOUNT": "Add Desk Account",
+    "NEW_DESKACCOUNT": "New Desk Account",
+    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
+    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
+    "ZOHOACCOUNTS": "Zoho Accounts",
+    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
+    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
+    "ADD_ZOHOACCOUNT": "Add Zoho Account",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
+    "AUTHTOKEN": "Authorization Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Kontod",
-    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
-    "MODULE_NAME": "vTiger Mooduli Nimi",
-    "ACCESS_KEY": "vTiger Pääsuvõti",
-    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
-    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
-    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
-    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
-    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
-    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
-    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
-    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
-    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
+    "ACCESS_KEY": "vTiger Access Key",
+    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
+    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
+    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
+    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
+    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
+    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võta ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võtke ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
+    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Freshsales kontod",
-    "LEADS": "Vihjed",
+    "FRESHSALESACCOUNTS": "Värske müügi kontod",
+    "LEADS": "Plii",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba",
+    "REFRESHTOKEN": "Värskenda luba (loodud)",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Rentniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
-    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
+    "TENANTID": "Üürniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
-    "LEADID": "Vihje ID"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
+    "LEADID": "Plii ID",
+    "DYNAMIC365CONTACT": "Võtke ühendust",
+    "DYNAMIC365NOTHING": "Mitte midagi",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
+    "OPENNEWTAB": "Ava uus vaheleht"
   }
 }
index 0aa355b..054f558 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Klooni Projekti",
-    "NAME": "Nimi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "DESCRIPTION": "Kirjeldus",
+    "CLONE_PROJECT": "Clone Project",
+    "NAME": "Name",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "DESCRIPTION": "Description",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat"
+      "NAME_REQUIRED": "Mandatory field",
+      "PROJECT_REQUIRED": "Mandatory field",
+      "FIELD_REQUIRED": "Mandatory field",
+      "NAME_MUST_VALID_PATTERN": "Wrong format"
     },
-    "SAVE": "Salvesta",
-    "PROJECTS": "Projektid",
-    "ADD_PROJECT": "Lisa Projekt",
-    "EDIT_PROJECT": "Redigeeri Projekti",
-    "DELETE_PROJECT": "Kustuta Projekt",
+    "SAVE": "Save",
+    "PROJECTS": "Projects",
+    "ADD_PROJECT": "Add Project",
+    "EDIT_PROJECT": "Edit Project",
+    "DELETE_PROJECT": "Delete Project",
     "JSCRIPTY": "Jscripty",
-    "ID": "ID",
-    "PROJECT": "Projekt",
-    "CREATED_AT": "Loomisaeg",
-    "NEW_PROJECT": "Uus Projekt",
-    "EDIT": "Redigeeri",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "BUILDER": "Koostur",
-    "PREVIEW": "Eelvaade",
-    "OPEN_CONTACT": "Ava Kontakt",
+    "ID": "Id",
+    "PROJECT": "Project",
+    "CREATED_AT": "Created At",
+    "NEW_PROJECT": "New Project",
+    "EDIT": "Edit",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "BUILDER": "Builder",
+    "PREVIEW": "Preview",
+    "OPEN_CONTACT": "Open Contact",
     "HELP": {
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
+      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
-    "SESSIONS": "Sessioonid",
-    "STARTTIME": "Alguse Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "MEMBERNAME": "Liikme Nimi",
-    "CALLERIDNUM": "Helistaja Number",
-    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
-    "SESSION_RESULTS": "Sessiooni Tulemused",
-    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
-    "ANSWERS": "Vastused",
-    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
-    "TOTAL": "Kokku",
-    "ANSWER": "Vastus",
-    "EXPORT_TO_CSV": "Ekspordi CSVsse",
-    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
-    "DELETE_SESSION": "Kustuta Sessioon",
-    "RESET_SESSION": "Lähtesta Sessioon",
-    "YES": "Jah",
-    "NO": "Ei",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
-    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
-    "SUBMIT": "Esita",
-    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
-    "COMPLETE": "Vii lõpule",
-    "SESSIONS_PROJECT": "Mine Sessioonidesse",
-    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
+    "JSCRIPTYSESSIONS": "Project Sessions",
+    "SESSIONS": "Sessions",
+    "STARTTIME": "Start Time",
+    "ENDTIME": "End Time",
+    "MEMBERNAME": "Member Name",
+    "CALLERIDNUM": "Caller Number",
+    "NO_SESSION_AVAILABLE": "No Sessions available",
+    "SESSION_RESULTS": "Session Results",
+    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "ANSWERS": "Answers",
+    "NO_RESULTS_AVAILABLE": "No results available",
+    "TOTAL": "Total",
+    "ANSWER": "Answer",
+    "EXPORT_TO_CSV": "Export to CSV",
+    "NO_ANSWERS_AVAILABLE": "No answers available",
+    "DELETE_SESSION": "Delete Session",
+    "RESET_SESSION": "Reset Session",
+    "YES": "Yes",
+    "NO": "No",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
+    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
+    "SUBMIT": "Submit",
+    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "COMPLETE": "Complete",
+    "SESSIONS_PROJECT": "Go to Sessions",
+    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
   },
   "mwForm": {
     "form": {
-      "name": "Pealkiri",
-      "name.placeholder": "Vormi pealkiri",
-      "description": "Kirjeldus"
+      "name": "Title",
+      "name.placeholder": "Form title",
+      "description": "Description"
     },
     "buttons": {
-      "addPage": "Lisa lehekülg",
-      "moveDown": "Liigu alla",
-      "moveUp": "Liigu üles",
-      "removePage": "Eemalda lehekülg",
-      "remove": "Eemalda",
-      "addElement": "Lisa element",
-      "questionReady": "Valmis",
-      "next": "Järgmine",
-      "back": "Tagasi",
-      "submit": "Esita",
-      "begin": "Alusta",
-      "fold": "Voldi",
-      "unfold": "Voldi lahti",
-      "edit": "Redigeeri",
-      "clone": "Klooni",
-      "view": "Vaata"
+      "addPage": "Add page",
+      "moveDown": "Move down",
+      "moveUp": "Move up",
+      "removePage": "Remove page",
+      "remove": "Remove",
+      "addElement": "Add element",
+      "questionReady": "Ready",
+      "next": "Next",
+      "back": "Back",
+      "submit": "Submit",
+      "begin": "Begin",
+      "fold": "Fold",
+      "unfold": "Unfold",
+      "edit": "Edit",
+      "clone": "Clone",
+      "view": "View"
     },
     "page": {
       "tab": {
-        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
+        "heading": "Page {{page}} of {{allPages}}"
       },
       "elements": {
-        "empty": "Tühi lehekülg"
+        "empty": "Empty page"
       },
-      "pageWithNameCheckbox": "nimetatud",
-      "name": "Lehekülje nimi"
+      "pageWithNameCheckbox": "named",
+      "name": "Page name"
     },
     "pageFlow": {
-      "afterPage": "Pärast lehekülge {{lehekülg}}:",
-      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
-      "goToPage": "Mine leheküljele {{lehekülje number}}",
-      "goToNextPage": "Jätke järgmisel leheküljel",
-      "submitForm": "Esita vorm"
+      "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"
     },
     "elements": {
-      "question": "Küsimus",
-      "image": "Pilt",
-      "paragraph": "Lõik"
+      "question": "Question",
+      "image": "Image",
+      "paragraph": "Paragraph"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Lühike tekst"
+          "name": "Short text"
         },
         "textarea": {
-          "name": "Pikk tekst"
+          "name": "Long text"
         },
         "radio": {
-          "name": "Raadio"
+          "name": "Radio"
         },
         "select": {
-          "name": "Vali"
+          "name": "Select"
         },
         "checkbox": {
-          "name": "Märkeruudud"
+          "name": "Checkboxes"
         },
         "grid": {
-          "name": "Ruudustik"
+          "name": "Grid"
         },
         "priority": {
-          "name": "Prioriteet"
+          "name": "Priority"
         },
         "division": {
-          "name": "Jaotus"
+          "name": "Division"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Kuupäev"
+          "name": "Date"
         },
         "datetime": {
-          "name": "Kuupäev ja kellaaeg"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Kellaaeg"
+          "name": "Time"
         },
         "email": {
-          "name": "E-post"
+          "name": "Email"
         },
         "range": {
-          "name": "Vahemik"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Küsimuse tekst",
-      "type": "Küsimuse tüüp",
-      "required": "Nõutud",
+      "text": "Question text",
+      "type": "Question type",
+      "required": "Required",
       "preview": {
-        "text": "Lühivastuse tekst",
-        "textarea": "Pika vastuse tekst",
-        "otherAnswer": "Muu"
+        "text": "Short answer text",
+        "textarea": "Long answer text",
+        "otherAnswer": "Other"
       },
       "division": {
-        "quantity": "Kogus",
-        "unit": "Ühiku sedel",
-        "assignedSumLabel": "Määratud",
-        "fromRequiredLabel": "alates nõutavast"
+        "quantity": "Quantity",
+        "unit": "Unit label",
+        "assignedSumLabel": "Assigned",
+        "fromRequiredLabel": "from required"
       },
       "priority": {
-        "sorted": "Sorditud",
-        "available": "Saadaval",
-        "clickToAddItem": "Kliki üksuse lisamiseks"
+        "sorted": "Sorted",
+        "available": "Available",
+        "clickToAddItem": "Click to add item"
       },
       "grid": {
-        "cellInputType": "Lahtri sisendi tüüp",
+        "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Raadio",
-          "checkbox": "Märkeruut",
-          "text": "Tekst",
+          "radio": "Radio",
+          "checkbox": "Checkbox",
+          "text": "Text",
           "number": "Number",
-          "date": "Kuupäev",
-          "time": "Kellaaeg"
+          "date": "Date",
+          "time": "Time"
         },
-        "rowLabel": "Rida {{rida}}",
-        "clickToAddRow": "Kliki rea lisamiseks",
-        "columnLabel": "Veerg {{veerg}}",
-        "clickToAddColumn": "Kliki veeru lisamiseks"
+        "rowLabel": "Row {{row}}",
+        "clickToAddRow": "Click to add row",
+        "columnLabel": "Column {{col}}",
+        "clickToAddColumn": "Click to add column"
       },
       "range": {
-        "from": "Vahemik alates",
-        "to": "kuni"
+        "from": "Range from",
+        "to": "to"
       },
       "number": {
         "min": "Min",
-        "max": "Maks"
+        "max": "Max"
       },
-      "orLabel": "või ",
-      "otherLabel": "Muu: ",
-      "userAnswer": "Kasutaja vastus",
+      "orLabel": "or ",
+      "otherLabel": "Other: ",
+      "userAnswer": "User answer",
       "buttons": {
-        "addOption": "Kliki valiku lisamiseks",
-        "addOther": "Lisa 'Muu'"
+        "addOption": "Click to add option",
+        "addOther": "Add 'Other'"
       }
     },
     "image": {
-      "selectImageButton": "Vali pilt",
-      "caption": "Pildi pealdis"
+      "selectImageButton": "Select image",
+      "caption": "Image caption"
     },
     "paragraph": {
-      "placeholder": "Sisesta lõigu tekst"
+      "placeholder": "Enter paragraph text"
     },
     "confirmationPage": {
-      "title": "Kinnituse lehekülg",
-      "customMessage": "Kohandatud kinnitussõnum",
-      "defaultMessage": "Sinu vastus on salvestatud",
-      "errorMessage": "Viga! Sinu vastust ei salvestatud",
-      "pendingMessage": "Sinu vastust salvestatakse"
+      "title": "Confirmation page",
+      "customMessage": "Custom confirmation message",
+      "defaultMessage": "Your response has been saved",
+      "errorMessage": "Error! Your response has not been saved",
+      "pendingMessage": "Your response is being saved"
     }
   }
 }
index 9c16790..6a860d9 100644 (file)
 {
   "MAIL": {
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
-    "DOWNLOAD": "Laadi alla",
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Hääl",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "SEND_AS": "Saada kui",
-    "NEW_MAILSUBSTATUS": "Uus Alamolek",
-    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
-    "MAILSUBSTATUSES": "E-posti Alamolekud",
-    "EDIT_MAILSUBSTATUS": "Redigeeri",
-    "DELETE_MAILSUBSTATUS": "Kustuta",
-    "FONT_FAMILY": "Fondipere",
-    "FONT_SIZE": "Fondi Suurus",
-    "MARK_AS_UNREAD": "Märgi kui lugemata",
-    "ACCEPTED": "Aktsepteeritud",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "MAILCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
-    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
-    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
-    "PENDING": "Ootel",
-    "SEND_AS_PENDING": "Saada Ootel olekus",
-    "SEND_AND_CLOSE": "Saada ja Sule",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
-    "SPYINTERACTION": "Spioon",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
-    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "SMS": "Sõnum",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "REALTIME": "Reaalaeg",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "ACCOUNTS": "Kontod",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGGED_IN": "Sisse Logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "TOTAL": "Kokku",
-    "IN": "Sees",
-    "OUT": "Väljas",
-    "IMAP_STATUS": "IMAP Staatus",
-    "SMTP_STATUS": "SMTP Staatus",
-    "DISABLED": "Mitteaktiivne",
-    "CONNECTED": "Ühendatud",
-    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
-    "ERROR": "Viga",
-    "EDIT_ACCOUNT": "Redigeeri Kontot",
-    "VERIFY_SMTP": "Kinnita SMTP",
-    "VERIFIED": "Kinnitatud",
-    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "AUTOREPLY": "Automaatvastus",
-    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
-    "SHOW_DETAILS": "Kuva üksikasjad",
-    "HIDE_DETAILS": "Varja üksikasjad",
-    "TO": "Kellele",
-    "FROM": "Kellelt",
-    "DATE": "Kuupäev",
-    "CC": "Koopia",
-    "REPLY": "Vasta",
-    "REPLY_ALL": "Vasta Kõigile",
-    "FORWARD": "Saada edasi",
-    "SUBJECT": "Teema",
-    "BCC": "Salakoopia",
-    "SEND": "Saada",
-    "ATTACHMENT": "Manus",
-    "ATTACHMENTS": "Manused",
-    "NAME": "Nimi",
-    "MAILQUEUES": "E-maili Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "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",
+    "ACCEPTED": "Accepted",
+    "CANNEDANSWERS": "Canned Answers",
+    "MAILCANNEDANSWERS": "Canned Answers",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_MAILCANNEDANSWER": "New Canned Answer",
+    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
+    "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",
+    "ADD_NOTE": "Add note",
+    "NOTE": "Note",
+    "TAGS": "Tags",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGOUT": "Logout",
+    "AGENTADD_QUEUE": "Add agent to Email queue",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open channel",
+    "FAX": "Fax",
+    "REALTIME": "Realtime",
+    "AGENTS": "Agents",
+    "QUEUES": "Queues",
+    "ACCOUNTS": "Accounts",
+    "FULLNAME": "Full Name",
+    "INTERNAL": "Internal",
+    "PHONE_STATE": "Phone State",
+    "PHONE_STATUS": "Phone Status",
+    "PAUSE": "Pause",
+    "LOGGED_IN": "Logged In",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "TOTAL": "Total",
+    "IN": "In",
+    "OUT": "Out",
+    "IMAP_STATUS": "IMAP Status",
+    "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",
+    "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",
+    "CC": "Cc",
+    "REPLY": "Reply",
+    "REPLY_ALL": "Reply All",
+    "FORWARD": "Forward",
+    "SUBJECT": "Subject",
+    "BCC": "Bcc",
+    "SEND": "Send",
+    "ATTACHMENT": "Attachment",
+    "ATTACHMENTS": "Attachments",
+    "NAME": "Name",
+    "MAILQUEUES": "Email Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
-      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
-      "HOST_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PORT_REQUIRED": "Kohustuslik Väli",
-      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "SERVICE_REQUIRED": "Kohustuslik Väli",
-      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
-      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
-      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
-      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
+      "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": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
-    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
-    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "SAVE": "Salvesta",
-    "MAILACCOUNTS": "E-maili Kontod",
-    "EMAIL_ADDRESS": "E-maili Aadress",
-    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
-    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
-    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaak",
-    "ACTIONS": "Tegevused",
-    "OTHERS": "Teised",
-    "LIST": "Loend",
-    "TEMPLATE": "Mall",
-    "FIDELITY": "Kvaliteet",
-    "SERVICE": "Teenus",
-    "CREATED_AT": "Loomisaeg",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetud",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "WHITELABEL": "Valge Sedel",
-    "SIGNATURE": "Allkiri",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_MAILQUEUE": "Add Email Queue",
+    "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": "Add Email Account",
+    "EDIT_MAILACCOUNT": "Edit Email Account",
+    "DELETE_MAILACCOUNT": "Delete Email Accounts",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "OTHERS": "Others",
+    "LIST": "List",
+    "TEMPLATE": "Template",
+    "FIDELITY": "Fidelity",
+    "SERVICE": "Service",
+    "CREATED_AT": "Created At",
+    "ACCEPT": "Accept",
+    "ACCEPTMETHOD": "Accept Method",
+    "ACCEPTURL": "Accept URL",
+    "REJECT": "Reject",
+    "REJECTMETHOD": "Reject Method",
+    "REJECTURL": "Reject URL",
+    "CLOSE": "Close",
+    "CLOSEMETHOD": "Close Method",
+    "CLOSEURL": "Close URL",
+    "WHITELABEL": "White Label",
+    "SIGNATURE": "Signature",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Kasutajanimi",
+    "USERNAME": "Username",
     "PORT": "Port",
-    "MAILBOX": "Postkast",
-    "FILTER": "Filtreerimine",
-    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
-    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
-    "DELETE": "Kustuta E-mail Serverist",
+    "MAILBOX": "Mailbox",
+    "FILTER": "Filter",
+    "CONNTIMEOUT": "Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Authentication Timeout [sec]",
+    "DELETE": "Delete Email From Server",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Küsitlemine",
+    "POLLING": "Polling",
     "SMTP": "SMTP",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "BACK": "Tagasi",
-    "MAIL": "E-mail",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "PASSWORD": "Parool",
-    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
-    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
-    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
-    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
-    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
-    "MAILDISPOSITIONS": "E-maili Kasutused",
-    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
-    "NEW_MAILACCOUNT": "Uus E-maili Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
+    "BACK": "Back",
+    "MAIL": "Email",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "PASSWORD": "Password",
+    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
+    "ADD_MAILDISPOSITION": "Add Email Disposition",
+    "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",
     "HELP": {
-      "FONT_FAMILY": "Vaikimisi Fondipere",
-      "FONT_SIZE": "Vaikimisi Fondi Suurus",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "USERNAME": "Kasutajanimi autentimise jaoks",
-      "PASSWORD": "Parool autentimise jaoks",
-      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
-      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "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": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
+    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
+    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "DISPOSITION": "Kasutamine",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_CLOSE": "Edit Close",
+    "DISPOSITION": "Disposition",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Redigeeri GotoIf",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Tõene Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
+    "EDIT_GOTOIF": "Edit GotoIf",
+    "CONDITION": "Condition",
+    "TRUEPRIORITY": "True Priority",
+    "FALSEPRIORITY": "False Priority",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Redigeeri GotoP",
-    "PRIORITY": "Prioriteet",
+    "EDIT_GOTOP": "Edit GotoP",
+    "PRIORITY": "Priority",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "VALUE": "Väärtus",
-    "QUEUE": "Järjekord",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "INTERACTIONS": "Suhtlused",
-    "STARTEDAT": "Algusaeg",
-    "CONTACT": "Kontakt",
-    "CLOSEDAT": "Sulgemisaeg",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "ACTIVE": "Aktiivne",
-    "SECURE": "Turvaline",
-    "AUTHENTICATION": "Autentimine",
+    "EDIT_NOOP": "Edit Noop",
+    "VALUE": "Value",
+    "QUEUE": "Queue",
+    "EDIT_QUEUE": "Edit Queue",
+    "INTERACTIONS": "Interactions",
+    "STARTEDAT": "Started At",
+    "CONTACT": "Contact",
+    "CLOSEDAT": "Closed At",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "ACTIVE": "Active",
+    "SECURE": "Secure",
+    "AUTHENTICATION": "Authentication",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SELECT_STATUS": "Vali Staatus",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "KEY": "Võti",
-    "SMTPSERVICE": "SMTP Teenus",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Pole saadaval",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
-    "INFO": "Teave",
-    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
-    "ADVANCED": "Täpsem",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "CONFIRM_PASSWORD": "Confirm Password",
+    "SELECT_STATUS": "Select Status",
+    "OPENED": "Open",
+    "CLOSED": "Closed",
+    "ALL": "All",
+    "SELECT_ACCOUNT": "Select Account",
+    "STATUS": "Status",
+    "ACCOUNT": "Account",
+    "OPEN": "Open",
+    "KEY": "Key",
+    "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": "Add Agent to Email Account",
+    "ADVANCED": "Täpsemad",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vastamise tüüp",
+    "REPLY_TYPE": "Vasta tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud"
+    "CUSTOM": "Kohandatud",
+    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
   }
 }
index 779913f..e80fbe2 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "Rakenduse Tsoon",
-    "PLUGINS": "Lisandmoodulid",
-    "BACK": "Tagasi",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ära vali midagi",
-    "NAME": "Nimi",
-    "DESCRIPTION": "Kirjeldus",
-    "ACTIVE": "Aktiivne",
-    "TYPE": "Tüüp",
-    "ICON": "Ikoon",
-    "ADMINURL": "Admini url",
-    "AGENTURL": "Agendi url",
-    "SCRIPTNAME": "Skripti nimi",
-    "SCRIPTPATH": "Skripti tee",
-    "SIDEBAR": "Küljeriba",
-    "VERSION": "Versioon",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "MORE": "Rohkem",
-    "INSTALL_PLUGIN": "Installi lisandmoodul",
-    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
-    "STOP_PLUGIN": "Peata lisandmoodul",
-    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
-    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
-    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
-    "DELETE_PLUGIN": "Eemalda lisandmoodul",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DELETE": "Kustuta",
-    "SAVE": "Salvesta",
-    "INSTALLING": "Installimine",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
-    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
-    "UPLOADING": "Üleslaadimine",
-    "CREATED_AT": "Loomisaeg",
-    "GENERAL": "Üldine",
-    "SETTINGS": "Sätted",
-    "EDITOR": "Redaktor",
+    "MARKETPLACE": "App Zone",
+    "PLUGINS": "Plugins",
+    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Search",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select all",
+    "SELECT_NONE": "Select none",
+    "NAME": "Name",
+    "DESCRIPTION": "Description",
+    "ACTIVE": "Active",
+    "TYPE": "Type",
+    "ICON": "Icon",
+    "ADMINURL": "Admin url",
+    "AGENTURL": "Agent url",
+    "SCRIPTNAME": "Script name",
+    "SCRIPTPATH": "Script path",
+    "SIDEBAR": "Sidebar",
+    "VERSION": "Version",
+    "NO_AVAILABLE_INFO": "No available info",
+    "MORE": "More",
+    "INSTALL_PLUGIN": "Install plugin",
+    "EDIT_PLUGIN": "Edit plugin",
+    "STOP_PLUGIN": "Stop plugin",
+    "RESTART_PLUGIN": "Restart plugin",
+    "DOWNLOAD_PLUGIN": "Download plugin",
+    "UNINSTALL_PLUGIN": "Uninstall plugin",
+    "DELETE_PLUGIN": "Remove plugin",
+    "CANCEL": "Cancel",
+    "FINISH": "Finish",
+    "DELETE": "Delete",
+    "SAVE": "Save",
+    "INSTALLING": "Installing",
+    "DROP_TO_UPLOAD": "Drop To Upload",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "UPLOAD_PLUGIN": "Upload plugin",
+    "UPLOADING": "Uploading",
+    "CREATED_AT": "Created at",
+    "GENERAL": "General",
+    "SETTINGS": "Settings",
+    "EDITOR": "Editor",
     "ERRORS": {
-      "URL_REQUIRED": "Kohustuslik väli"
+      "URL_REQUIRED": "Mandatory field"
     },
     "HELP": {},
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of"
   }
 }
index db6abd5..96861de 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "CUTDIGIT": "Lõika Numbrid",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
-    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
-    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
-    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
-    "HOPPERWIDGET": "Kokkuvõte",
-    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
-    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
-    "RESET": "Lähtesta",
-    "RESETLIST": "Lähtesta Loendid",
-    "SELECTALL": "Vali Kõik",
-    "UNSELECTALL": "Ära Vali Kõiki",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "TIMEOUT": "Aegumine",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
-    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
-    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
-    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "TIMER": "Taimer",
-    "MOVE_HOPPERFINAL": "Taasta kontakt",
-    "RESTORECONTACTS": "Taasta Kontaktid",
-    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
-    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
+    "LOGIN_TIME": "Login time",
+    "PAUSE_TIME": "Pause time",
+    "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",
+    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Kutsu tagasi Agent",
-    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
-    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
-    "RECALLME": "Kutsu tagasi Mind",
-    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
-    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
-    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
-    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
-    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
+    "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",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Esialgne Vaikus",
-    "AMDGREETING": "Tervitus",
-    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
-    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
-    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
-    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
-    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
-    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
-    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
-    "LOGOUT": "Logi välja",
-    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
-    "LIMITED": "Piiratud",
-    "IVR_CAMPAIGNS": "IVR Kampaaniad",
+    "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",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
-    "IVRCAMPAIGNS": "IVR Kampaaniad",
-    "MANAGED": "Hallatud",
-    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
-    "HISTORY": "Ajalugu",
-    "SCHEDULEDAT": "Planeeritud ajaks",
-    "HOPPERBLACKS": "Hopperi Must nimekiri",
-    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERFINALS": "Hopperi Finaal",
-    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
-    "HOPPERHISTORIES": "Kõneajalugu",
-    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
-    "DELETE_HOPPERHISTORY": "Kustuta",
-    "DELETE_HOPPERFINAL": "Kustuta",
-    "CONTACTID": "Kontakti ID",
-    "STARTTIME": "Algusaeg",
-    "RESPONSETIME": "Vastamise Aeg",
-    "ENDTIME": "Lõpetamise Aeg",
-    "STATUS": "Staatus",
+    "QUEUECAMPAIGNS": "Queue Campaigns",
+    "IVRCAMPAIGNS": "IVR Campaigns",
+    "MANAGED": "Managed",
+    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
+    "HISTORY": "History",
+    "SCHEDULEDAT": "Scheduled At",
+    "HOPPERBLACKS": "Hopper Blacklist",
+    "NO_HOPPERBLACK_AVAILABLE": "No items available",
+    "HOPPERFINALS": "Hopper Final",
+    "NO_HOPPERFINAL_AVAILABLE": "No items available",
+    "HOPPERHISTORIES": "Call history",
+    "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",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
-    "EDIT_HOPPER": "Redigeeri Hopper",
-    "DELETE_HOPPER": "Kustuta Hopper",
-    "FINAL": "Finaal",
-    "BLACKLIST": "Must nimekiri",
-    "NAME": "Nimi",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "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": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "INTERVAL": "Aja Intervall",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
-    "ACTIVE": "Aktiivne",
-    "METHOD": "Meetod",
-    "POWERLEVEL": "Võimsuse Tase",
-    "DROPRATE": "Kukuta Määr",
-    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
-    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
-    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
-    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
-    "CAMPAIGN": "Kampaania",
-    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
-    "ORIGINATE": "Päritolu",
-    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
-    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
-    "ORIGINATETIMEOUT": "Päritolu Aegumine",
-    "QUEUEOPTIONS": "Järjekorra Valikud",
-    "QUEUETIMEOUT": "Järjekorra Aegumine",
-    "CALLYSQUAREPROJECT": "Cally Square Projekt",
-    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
-    "GLOBAL": "Üldine",
-    "GLOBALMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTION": "Ummik",
-    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
-    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
-    "BUSYMAXRETRY": "Maks Uusi Katseid",
-    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
-    "NOANSWER": "Vastus puudub",
-    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
-    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "ORIGINATED": "Päritolu",
-    "MESSAGE": "Sõnum",
-    "DROPPED": "Kukutatud",
-    "CREATED_AT": "Loomisaeg",
+    "STRATEGY": "Strategy",
+    "DESCRIPTION": "Description",
+    "INTERVAL": "Time Interval",
+    "ADD_VOICEQUEUE": "Add Voice Queue",
+    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
+    "ACTIVE": "Active",
+    "METHOD": "Method",
+    "POWERLEVEL": "Power Level",
+    "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]",
+    "QUEUE_PARAMS": "Queue Parameters",
+    "ORIGINATED": "Originated",
+    "MESSAGE": "Message",
+    "DROPPED": "Dropped",
+    "CREATED_AT": "Created At",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
-      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "INTERVAL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Parool ei ühti",
-      "TIMEZONE_REQUIRED": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
-      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
-      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
-      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "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",
+      "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",
+      "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",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "Üldine",
-    "AGENTTIMEOUT": "Agendi Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Uus Katse",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "AGENTTIMEOUT": "Agent Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
-      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
-      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
-      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
-      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
-      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
-      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
-      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
-      "PRIORITY": "Prioriteet loendis",
-      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
-      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
-      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
-      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
-      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
-      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
-      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
-      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
-      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
-      "PREFIX": "Telefoni eesliide",
-      "ACTIVE": "Aktiivne",
-      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
-      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
-      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
-      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
-      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
-      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
-      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
-      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
-      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
-      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
-      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
-      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=areā€¯. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
-      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
-      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
-      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
-      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
-      "METHOD": "Väljuva valija meetod",
-      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
-      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
-      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
-      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
-      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
-      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
-      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
-      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
-      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
-      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
-      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
-      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
-      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
-      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
-      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
-      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
-      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "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",
+      "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",
+      "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": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "MUSICONHOLD": "Muusika Ootel",
-    "ANNOUNCETOAGENT": "Teavitus Agendile",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCEDPREVIEW": "Täpsem",
-    "ADVANCED": "Täpsem",
-    "ADVANCE": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
-    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'There are' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minutite Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Kõnejärgne Töö",
-    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
-    "RINGINUSE": "Kasutusel Helin",
-    "MEMBERDELAY": "Liikme Viivitus",
-    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
-    "MONITORFORMAT": "Salvestuse Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sisenevad Protsessid",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
-    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljuvad Protsessid",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
-    "CUTDIGITS": "Lõika Numbrimärke",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Protsessid",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepost",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-post",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Manusta",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-kirja Sisu",
-    "EMAILSUBJECT": "E-kirja Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kaust",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "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",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Suvandid",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonis",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "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",
     "AGI": "AGI",
-    "DIAL": "Valimine",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Väline Valimine",
-    "RINGGROUP": "Helista Grupile",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Kõnepost",
+    "DIAL": "Dial",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Lõpeta kõne",
-    "CUSTOM": "Kohandatus",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast@Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljuv Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "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",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "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": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
-    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
-    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Häälestamist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Hangup",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise Aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muutunud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
-    "HANGUPCAUSE_38": "38 = Võrk vale",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Kättesaamatu",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Kättesaamatu",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Heliseb",
-    "UP": "Üles",
+    "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",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
-    "PAUSED": "Pausil",
-    "DISPOSITION": "Kasutamine",
-    "WAITING": "Ootamine",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No registry",
+    "LOGGED_IN": "Logged in (SIP connected)",
+    "PAUSED": "Paused",
+    "DISPOSITION": "Disposition",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Katkestatud",
-    "UNMANAGED": "Haldamata",
-    "REDIRECT_TO_NUMBER": "Suuna numbrile",
-    "REDIRECT_TO_AGENT": "Suuna agendile",
-    "CLOSING": "Sulgemine",
-    "AVG_HOLD_TIME": "Avg Ooteage",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Tagasi lükatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse Nimi",
-    "ARGUMENTS": "Argumendid",
-    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
-    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
-    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
-    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
-    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
-    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
-    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
-    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
-    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
-    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
-    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
-    "ENABLED": "Lubatud",
-    "READY": "Valmis",
-    "PAUSE": "Paus",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi Paus",
-    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
-    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_LISTS": "Kõik Nimekirjad",
-    "SELECTED_LISTS": "Valitud Nimekirjad",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "WAITING_FOR_AGENT": "Agendi Ootamine",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "RUNNING": "Jookseb",
-    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
-    "AGENTS_NOT_LOGGED": "Agent pole logitud",
-    "NOT_ACTIVE": "Pole Aktiivne",
-    "IS_DISACTIVED": "Deaktiveeritud",
-    "BACKUPTRUNK": "Varumagistraal",
-    "GLOBALINTERVAL": "Üldine Intervall",
-    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
-    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
-    "INTERVAL_IS_NULL": "Intervall on Null",
-    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
-    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
-    "TOTAL_MANAGED": "Kokku Hallatud",
-    "OPEN": "Avatud",
-    "FRESH": "Värske",
-    "CLOSED": "Suletud",
-    "ALWAYS": "Alati",
-    "NEVER": "Mitte kunagi",
-    "ONLY_IF_OPEN": "Ainult kui Avatud",
-    "CHECKDUPLICATE": "Kontrolli Duplikaati",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "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": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "SÕnum",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Vali kampaania",
-    "SELECT_DATE": "Vali kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
+    "SELECT_CAMPAIGN": "Valige kampaania",
+    "SELECT_DATE": "Valige kuupäev",
+    "SELECT_TYPE": "Valige Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Maks uued katsed",
+    "ABANDONEDMAXRETRY": "Max proovib uuesti",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agendi Keeldumine",
-    "AGENTREJECTMAXRETRY": "Maks uued katsed",
+    "AGENTREJECT": "Agent Keeldu",
+    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Katkestamine",
-    "DROPMAXRETRY": "Maks uued katsed",
+    "DROP": "Tilk",
+    "DROPMAXRETRY": "Max proovib uuesti",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Seade",
-    "MACHINEMAXRETRY": "Maks uued katsed",
+    "MACHINE": "Masin",
+    "MACHINEMAXRETRY": "Max proovib uuesti",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
+    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
+    "ADDITIONALPHONES": "Täiendavad telefonid",
+    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index c07979f..23ab65b 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "ADVANCED": "Täpsem",
-    "PROXY": "Puhver",
-    "TOKEN": "Luba",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "DELETE": "Kustuta",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
-    "TAGS": "Sildid",
-    "SPYINTERACTION": "Spioon",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "REALTIME": "Reaalaeg",
-    "TEXT": "Tekst",
-    "TIMES": "Kordade arv suhtluse kohta",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
-    "AUTOREPLY": "Automaatvastus",
-    "NAME": "Nimi",
-    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsing",
+    "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",
+    "TAG": "Tag",
+    "EDIT_TAG": "Edit Tag",
+    "ADVANCED": "Advanced",
+    "PROXY": "Proxy",
+    "TOKEN": "Token",
+    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
+    "INSERT_MESSAGE_HERE": "Insert your text message here",
+    "NOTIFICATION": "Notification",
+    "NOTIFICATIONSOUND": "Sound",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONTEMPLATE": "Template",
+    "SYSTEM": "System",
+    "EDIT_SYSTEM": "Edit System",
+    "COMMAND": "Command",
+    "VARIABLE": "Variable",
+    "DELETE": "Delete",
+    "CANNEDANSWERS": "Canned Answers",
+    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
+    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
+    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
+    "DELIVERYREPORTURL": "Delivery Report URL",
+    "TAGS": "Tags",
+    "SPYINTERACTION": "Spy",
+    "NO_AGENT_ONLINE": "No Agent Online",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
+    "PARTIALPAUSE": "Parital Pause",
+    "BUSY": "Busy",
+    "TIMER": "Timer",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "REALTIME": "Realtime",
+    "TEXT": "Text",
+    "TIMES": "Number of times per interaction",
+    "EDIT_AUTOREPLY": "Edit Auto Reply",
+    "AUTOREPLY": "Auto Reply",
+    "NAME": "Name",
+    "OPENCHANNELQUEUES": "Open Channel Queues",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "REPLYURI_REQUIRED": "Kohustuslik Väli",
-      "REPLYURI_MUST_VALID_URL": "Vale formaat",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "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",
+      "KEY_REQUIRED": "Mandatory Field",
+      "LIST_REQUIRED": "Mandatory Field",
+      "COMMAND_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "The field text is required",
+      "NAME_REQUIRED": "Mandatory field",
+      "AGENT_TIMEOUT_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",
+      "REPLYURI_REQUIRED": "Mandatory field",
+      "REPLYURI_MUST_VALID_URL": "Wrong format",
+      "PRIORITY_REQUIRED": "Mandatory field",
+      "CONDITION_REQUIRED": "Mandatory field",
+      "TRUEPRIORITY_REQUIRED": "Mandatory field",
+      "FALSEPRIORITY_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Mandatory field",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "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",
+      "DISPOSITION_REQUIRED": "Mandatory field",
+      "QUEUE_REQUIRED": "Mandatory field",
+      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strateegia",
+    "STRATEGY": "Strategy",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "VALUE": "Väärtus",
-    "PRIORITY": "Prioriteet",
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
-    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
-    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
-    "PENALTY": "Trahv",
-    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
-    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "lvesta",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
-    "MOTIONADDRESS": "Liikuv Aadress",
-    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
-    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
-    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
+    "QUEUE": "Queue",
+    "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",
+    "VALUE": "Value",
+    "PRIORITY": "Priority",
+    "AGENT_TIMEOUT": "Agent Timeout",
+    "DESCRIPTION": "Description",
+    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
+    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
+    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
+    "PENALTY": "Penalty",
+    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
+    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
+    "ALL_AGENTS": "All Agents",
+    "SELECTED_AGENTS": "Selected Agents",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
+    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
+    "MOTIONADDRESS": "Motion Address",
+    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
+    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
+    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "Veebihaagid",
-    "ACTIONS": "Tegevused",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Lükka tagasi",
-    "REJECTMETHOD": "Lükka tagasi Meetod",
-    "REJECTURL": "Lükka tagasi URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Meetod",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Midagi",
-    "BACK": "Tagasi",
-    "OPENCHANNEL": "Ava Kanal",
-    "ID": "ID",
-    "TIMEOUT": "Aegumine",
-    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
-    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
-    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
-    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
-    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
-    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
-    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "REPLYURI": "Vastuse URL",
-    "RECEIVEURI": "Vastuvõtu URL",
+    "DISPOSITIONS": "Dispositions",
+    "WEBHOOKS": "WebHooks",
+    "ACTIONS": "Actions",
+    "LIST": "List",
+    "FIDELITY": "Fidelity",
+    "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",
+    "OPENCHANNEL": "Open Channel",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
+    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
+    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
+    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
+    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
+    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
+    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
+    "NO_AVAILABLE_INFO": "No available info",
+    "ALL_TEAMS": "All Teams",
+    "SELECTED_TEAMS": "Selected Teams",
+    "REPLYURI": "Reply URL",
+    "RECEIVEURI": "Receive URL",
     "HELP": {
-      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
-      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
+      "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": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
-    "STATUS": "Staatus",
-    "CLOSED": "Suletud",
-    "OPENED": "Avatud",
-    "OPEN": "Ava",
-    "ACCOUNT": "Konto",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "ALL": "Kõik",
-    "SELECT_STATUS": "Vali staatus",
+    "CONTACT": "Contact",
+    "STARTEDAT": "Started At",
+    "STATUS": "Status",
+    "CLOSED": "Closed",
+    "OPENED": "Open",
+    "OPEN": "Open",
+    "ACCOUNT": "Account",
+    "INTERACTION": "Interaction",
+    "INTERACTIONS": "Interactions",
+    "ALL": "All",
+    "SELECT_STATUS": "Select a status",
     "FILTER": "Filter",
-    "FILTERS": "Filtrid",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "SELECT_ACCOUNT": "Vali konto",
+    "FILTERS": "Filters",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
+    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "SELECT_ACCOUNT": "Select an account",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sule",
+    "EDIT_GOTOP": "Edit Gotop",
+    "EDIT_CLOSE": "Edit Close",
     "INFO": "Info",
-    "KEY": "Võti",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agendid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Pausile",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "SMS": "Sõnum",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MAPKEY": "Kaardi Võti",
+    "KEY": "Key",
+    "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 Open Channel queue",
+    "UNPAUSE": "End Pause",
+    "DEFAULT_PAUSE": "Default pause",
+    "LOGGED_IN": "Logged in",
+    "PAUSED": "Paused",
+    "READY": "Ready",
+    "WAITING": "Waiting",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "SMS": "SMS",
+    "FAX": "Fax",
+    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
+    "REFRESH_INTERACTIONS": "Refresh Interactions",
+    "DELETE_INTERACTION": "Delete Interaction",
+    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
+    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
+    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
+    "SEND": "Send",
+    "TO": "To",
+    "MAPKEY": "Map Key",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index 90c89fb..be8be0f 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Lisandmoodul",
+    "PLUGINS": "Plugins",
     "ERRORS": {},
     "HELP": {}
   }
index 3fc4dff..054b0d7 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Pea mind meeles",
-    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
-    "VIRTUAL": "Vestlus",
-    "VOICE": "Hääl",
-    "SESSIONS": "Sessioonid",
-    "ADDONS": "Lisandmoodul",
-    "REPORT": "Raport",
-    "SPLIT": "Poolita raportit",
-    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
-    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
-    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
-    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
+    "MOTIONBARREMEMBERME": "Remember Me",
+    "CHATTIMEOUT": "Chat closing interaction timeout",
+    "VIRTUAL": "Chat",
+    "VOICE": "Voice",
+    "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",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Liikumisriba",
-    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
-    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
+    "MOTIONBAR": "Motionbar",
+    "MOTIONBARAUTOUPDATER": "Auto Updater",
+    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
-    "TURNADDR": "TURN Aadress",
-    "TURN_USERNAME": "TURN Kasutajanimi",
-    "TURN_PASSWORD": "TURN Parool",
+    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
+    "TURNADDR": "TURN Address",
+    "TURN_USERNAME": "TURN Username",
+    "TURN_PASSWORD": "TURN Password",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Lubatud",
-    "DISABLED": "Keelatud",
-    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
-    "RELOAD": "Laadi uuesti",
-    "VERIFY": "Kinnita",
-    "INTERFACE": "Liides",
-    "UPDATING": "Värskendamine",
-    "REMOTE_VERSION": "Kaugversioon",
-    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
-    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
-    "SYSTEM": "Süsteem",
-    "FILE_SYSTEM": "Faili Süsteem",
-    "PROCESSES": "Protsess",
-    "MOUNT_POINT": "Ühenda",
+    "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",
+    "MOUNT_POINT": "Mount",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Totaalne",
-    "USED": "Kasutatud",
-    "FREE": "Vaba",
-    "NAME": "Nimi",
-    "STATE": "Olek",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "MESSAGING": "Sõnum",
-    "FAX": "Faks",
-    "OPENCHANNEL": "Avatud Kanal",
-    "AGENTS": "Agendid",
-    "USERS": "Kasutajad",
-    "TELEPHONES": "Telefonid",
-    "STAFF": "Personal",
-    "CHANNELS": "Kanalis",
-    "MODULES": "Moodulid",
-    "CM": "Kontaktide Haldur",
-    "DIALER": "Valija",
+    "TOTAL": "Total",
+    "USED": "Used",
+    "FREE": "Free",
+    "NAME": "Name",
+    "STATE": "State",
+    "CHAT": "Chat",
+    "MAIL": "Email",
+    "MESSAGING": "Sms",
+    "FAX": "Fax",
+    "OPENCHANNEL": "Open Channel",
+    "AGENTS": "Agents",
+    "USERS": "Users",
+    "TELEPHONES": "Telephones",
+    "STAFF": "Staff",
+    "CHANNELS": "Channels",
+    "MODULES": "Modules",
+    "CM": "Contacts Manager",
+    "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Kohandamine",
-    "UPDATE": "Värskenda",
-    "OTHERS": "Teised",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
+    "CUSTOM": "Customization",
+    "UPDATE": "Update",
+    "OTHERS": "Others",
+    "SETTINGS": "Settings",
+    "GENERAL": "General",
     "SMTP": "SMTP",
-    "NETWORKS": "Võrgud",
-    "UPDATES": "Värskendused",
-    "LICENSE": "Litsents",
-    "ID": "ID",
-    "MIN_INTERNAL": "Minm Sisemine",
-    "MIN_MAILBOX": "Min Postkast",
-    "INSTALLED_AT": "Installimise aeg",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "EDIT_GENERAL": "Redigeeri Üldine",
-    "SECURE_PASSWORD": "Kindlusta Parool",
+    "NETWORKS": "Networks",
+    "UPDATES": "Updates",
+    "LICENSE": "License",
+    "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": "Vaikimisi Logo",
-    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
-    "WHITELABEL": "Valge Sedel",
-    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
-    "HEADER_WHITELABEL": "Päis Valge Silt",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMTP_SERVICE": "Teenus",
+    "DEFAULT_LOGO": "Default Logo",
+    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "WHITELABEL": "White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
+    "HEADER_WHITELABEL": "Header White Label",
+    "CREATED_AT": "Created At",
+    "SAVE": "Save",
+    "SMTP_SERVICE": "Service",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Kasutajanimi",
-    "DESCRIPTION": "Kirjeldus",
-    "SMTP_PASSWORD": "Parool",
+    "SMTP_USERNAME": "Username",
+    "DESCRIPTION": "Description",
+    "SMTP_PASSWORD": "Password",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Turvaline",
-    "TYPE": "Tüüp",
-    "ADDRESS": "Aadress",
-    "NEW_NETWORK": "Uus Võrk",
-    "ADD_NETWORK": "Lisa Võrk",
+    "SMTP_SECURE": "Secure",
+    "TYPE": "Type",
+    "ADDRESS": "Address",
+    "NEW_NETWORK": "New Network",
+    "ADD_NETWORK": "Add Network",
     "HELP": {
-      "ADDRESS": "Väline (avalik) IP-aadress",
-      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
-      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
-      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
-      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
-      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
-      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
-      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
-      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "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",
+      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
-      "ADDRESS_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
-      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
-      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PLAN_REQUIRED": "Kohustuslik väli",
-      "LICENSE_REQUIRED": "Kohustuslik väli",
+      "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",
+      "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",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat"
+      "WRONG_FORMAT": "Vale formaat",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
     },
-    "EDIT_NETWORK": "Redigeeri Võrku",
-    "DELETE_NETWORK": "Kustuta Võrk",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära vali Ühtegi",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "REQUEST_LICENSE": "Päri Litsentsi",
-    "EMAIL": "E-mail",
-    "SEND": "Saada",
-    "PLAN": "Plaan",
-    "MONTH_TO_MONTH": "Kuust kuusse",
-    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
-    "USEFUL_COMMANDS": "Kasulikud Käsud",
-    "COMMAND": "Käsk",
-    "PM2_LIST": "Loenda kõik protsessid",
-    "PM2_START": "Alusta protsessi ID või nime järgi",
-    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
-    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
-    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
-    "PASSWORD": "Parool",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "STUNADDR": "STUN Aadress",
+    "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",
+    "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",
+    "STUNADDR": "STUN Address",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Jooksev versioon",
-    "CUSTOMIZATIONS": "Kohandamised",
-    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
-    "NEW_VERSION": "Uus Versioon",
-    "TRIAL_VERSION": "Prooviversioon",
-    "TOKEN": "Luba",
-    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NEW_TOKEN": "Uus Luba",
-    "PRICES": "Hinnad",
-    "UPDATE_LICENSE": "Värskenda Litsentsid",
-    "LOGOLOGIN": "Logini Logo",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "GLOBAL": "Üldine",
-    "SMTP_AUTHENTICATION": "Autentimine",
-    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
-    "ACCOUNTNAME": "Konto Nimi",
-    "EMAILADDRESS": "E-posti Aadress",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
-    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-kiri kellele",
-    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "CURRENT_VERSION": "Current version",
+    "CUSTOMIZATIONS": "Customizations",
+    "LOCALNETADDRESS": "Localnet Address",
+    "NEW_VERSION": "New Version",
+    "TRIAL_VERSION": "Trial Version",
+    "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": "Lehekülje Pealkiri",
-    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
-    "PERPETUAL": "Lõpmatu",
-    "SECURITY_SUITE": "Turvapakett",
-    "ANNUALLY": "Iga-aastaselt",
-    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
-    "MESSAGESALIGNMENT": "Sõnumi Joondus",
-    "ENTER_LICENSE": "Sisesta oma litsents",
-    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
+    "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?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Salv",
+    "BUCKET": "Ämber",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp ühendus",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp-pistik",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 2645fe3..9d0b322 100644 (file)
 {
   "SMS": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "DOWNLOAD_INTERACTION": "Allalaadimine",
-    "TRANSFER": "Edastamine",
-    "QUEUETRANSFER": "Järjekorra Edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "TAG": "Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
-    "NOTIFICATION": "Teatis",
-    "NOTIFICATIONSOUND": "Heli",
-    "NOTIFICATIONSHAKE": "Raputus",
-    "NOTIFICATIONTEMPLATE": "Mall",
-    "SYSTEM": "Süsteem",
-    "EDIT_SYSTEM": "Redigeeri Süsteemi",
-    "COMMAND": "Käsk",
-    "VARIABLE": "Muutuja",
-    "AUTHID": "Autentimise ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "SMSCANNEDANSWERS": "Salvestatud Vastused",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
-    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
-    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_SMSCANNEDANSWER": "Redigeeri",
-    "DELETE_SMSCANNEDANSWER": "Kustuta",
-    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
-    "DELETE": "Kustuta",
-    "SENDERSTRING": "Saatja String",
-    "DELIVERYREPORT": "Kohaletoimetamise Raport",
-    "METHOD": "Meetod",
-    "ADD_NOTE": "Lisa märge",
-    "NOTE": "Märge",
-    "SPYINTERACTION": "Spioon",
-    "AUTOREPLY": "Automaatvastus",
-    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
-    "TIMES": "Kordade arv suhtluse korda",
-    "TEXT": "Tekst",
-    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
-    "SEND": "Saada",
-    "TO": "Kellele",
-    "MESSAGE": "Sõnum",
-    "TAGS": "Sildid",
-    "NO_AGENT_ONLINE": "Agente pole Võrgus",
-    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
-    "PARTIALPAUSE": "Osaline Paus",
-    "BUSY": "Hõivatud",
-    "TIMER": "Taimer",
-    "IDLE": "Jõude",
-    "CAPACITY": "Võimsus",
-    "PROXY": "Puhver",
-    "ADVANCED": "Täpsem",
-    "MOTIONPROXY": "Puhver või Liikumise Domeen",
-    "REALTIME": "Reaalaeg",
-    "KEY": "Võti",
-    "NAME": "Nimi",
-    "SMSQUEUES": "SMS Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "STRATEGY": "Strateegia",
+    "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",
+    "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",
+    "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",
+    "IDLE": "Idle",
+    "CAPACITY": "Capacity",
+    "PROXY": "Proxy",
+    "ADVANCED": "Advanced",
+    "MOTIONPROXY": "Proxy Or Motion Domain",
+    "REALTIME": "Realtime",
+    "KEY": "Key",
+    "NAME": "Name",
+    "SMSQUEUES": "SMS Queues",
+    "SEARCH_FOR_ANYONE": "Search",
+    "STRATEGY": "Strategy",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "TAG_REQUIRED": "Kohustuslik Väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "COMMAND_REQUIRED": "Kohustuslik Väli",
-      "AUTHID_REQUIRED": "Kohustuslik Väli",
-      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TEXT_REQUIRED": "Kohustuslik Väli",
-      "VALUE_REQUIRED": "Kohustuslik Väli",
-      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
-      "METHOD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
-      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "KEY_REQUIRED": "Kohustuslik Väli",
-      "NAME_REQUIRED": "Kohustuslik Väli",
-      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "PHONE_REQUIRED": "Kohustuslik Väli",
-      "SID_REQUIRED": "Kohustuslik Väli",
-      "TOKEN_REQUIRED": "Kohustuslik Väli",
-      "USERNAME_REQUIRED": "Kohustuslik Väli",
-      "PASSWORD_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
-      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
-      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
-      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
-      "REJECTURL_MUST_VALID_URL": "Vale formaat",
-      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
-      "TYPE_REQUIRED": "Kohustuslik Väli",
-      "LIST_REQUIRED": "Kohustuslik Väli",
-      "PRIORITY_REQUIRED": "Kohustuslik Väli",
-      "CONDITION_REQUIRED": "Kohustuslik Väli",
-      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
-      "AGENT_REQUIRED": "Kohustuslik Väli",
-      "QUEUE_REQUIRED": "Kohustuslik Väli",
-      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
-      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
-      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
+      "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",
+      "AUTHID_REQUIRED": "Mandatory Field",
+      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
+      "TEXT_REQUIRED": "Mandatory Field",
+      "VALUE_REQUIRED": "Mandatory Field",
+      "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",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agendi Aegumine",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
-    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
-    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
-    "SETTINGS": "Sätted",
-    "GENERAL": "Üldine",
-    "CREATED_AT": "Loomisaeg",
-    "SAVE": "Salvesta",
-    "SMSACCOUNTS": "SMS Kontod",
-    "TYPE": "Tüüp",
-    "PHONE": "Telefon",
+    "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",
     "SID": "SID",
-    "TOKEN": "Luba",
-    "SMSTYPE": "SMS Tüüp",
-    "USERNAME": "Kasutajanimi",
-    "PASSWORD": "Parool",
-    "MOTIONADDRESS": "Liikumise Aadress",
-    "ADD_SMSACCOUNT": "Lisa SMS Konto",
-    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
-    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
-    "LIST": "Loend",
-    "FIDELITY": "Kvaliteet",
+    "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",
+    "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Kasutused",
-    "WEBHOOKS": "VeebiHaagid",
-    "ACTIONS": "Tegevused",
-    "ACCEPT": "Aktsepteeri",
-    "ACCEPTMETHOD": "Aktsepteeri Meetod",
-    "ACCEPTURL": "Aktsepteeri URL",
-    "REJECT": "Hülga",
-    "REJECTMETHOD": "Hülga Meetod",
-    "REJECTURL": "Hülga URL",
-    "CLOSE": "Sule",
-    "CLOSEMETHOD": "Sule Method",
-    "CLOSEURL": "Sule URL",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Midagi",
-    "BACK": "Tagasi",
+    "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",
     "SMS": "SMS",
-    "ID": "ID",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "SMSDISPOSITIONS": "SMS Kasutused",
-    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
-    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
-    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
-    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
-    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
-    "NEW_SMSQUEUE": "Uus SMS Järjekord",
-    "NEW_SMSACCOUNT": "Uus SMS Konto",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ID": "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",
     "HELP": {
-      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
+      "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": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu Lehekülje kohta",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
-    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "RECEIVEURL": "URL vastuvõtmine",
-    "INTERACTION": "Suhtlus",
-    "INTERACTIONS": "Suhtlused",
-    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
-    "CONTACT": "Kontakt",
-    "STARTEDAT": "Algusaeg",
+    "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",
     "AGENT": "Agent",
-    "CLOSEDAT": "Sulgemisaeg",
-    "DISPOSITION": "Kasutus",
-    "NOTES": "Märkmed",
+    "CLOSEDAT": "Closed At",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Notes",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Järjekord",
-    "TIMEOUT": "Aegumine",
-    "VALUE": "Väärtus",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "EDIT_GOTO": "Redigeeri Goto",
-    "EDIT_NOOP": "Redigeeri Noop",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "CONDITION": "Tingimus",
-    "TRUEPRIORITY": "Õige Prioriteet",
-    "FALSEPRIORITY": "Vale Prioriteet",
-    "PRIORITY": "Prioriteet",
+    "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": "Redigeeri Gotop",
-    "EDIT_CLOSE": "Redigeeri Sulgemist",
-    "FILTER": "Filtreerimine",
-    "SELECT_STATUS": "Vali staatus",
-    "ALL": "Kõik",
-    "SELECT_ACCOUNT": "Vali Konto",
-    "OPENED": "Avatud",
-    "CLOSED": "Suletud",
-    "STATUS": "Staatus",
-    "ACCOUNT": "Konto",
-    "OPEN": "Ava",
-    "INFO": "Teave",
-    "ACCOUNTSID": "Konto SID",
-    "AUTHTOKEN": "Autentimisluba",
-    "UNKNOWN": "Teadmata",
-    "UNREGISTERED": "Registreerimata",
-    "UNAVAILABLE": "Kättesaamatu",
-    "NOT_INUSE": "Pole kasutusel",
-    "REACHABLE": "Kättesaadav",
-    "IN_USE": "Kasutusel",
-    "AGENTS": "Agentdid",
-    "QUEUES": "Järjekorrad",
-    "FULLNAME": "Täisnimi",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "PAUSE": "Paus",
-    "LOGOUT": "Logi välja",
-    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
-    "UNPAUSE": "Lõpeta Paus",
-    "DEFAULT_PAUSE": "Vaikimisi paus",
-    "LOGGED_IN": "Sisse logitud",
-    "PAUSED": "Pausil",
-    "READY": "Valmis",
-    "WAITING": "Ootel",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
-    "OPENCHANNEL": "Ava kanal",
-    "FAX": "Faks",
-    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
-    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
-    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
-    "DELETE_INTERACTION": "Kustuta Suhtlus",
-    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
+    "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",
+    "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",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 75fb8d9..0d93402 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hostseade",
-    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
-    "OLD_PASSWORD": "Vana Parool",
-    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
+    "HOTDESK": "Hot desk",
+    "ENABLEVIDEORECORDING": "Enable Video Recording",
+    "OLD_PASSWORD": "Old Password",
+    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
-    "SECURITY_SUITE": "Turvapakett",
-    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
+    "NO_PASSWORD_CHANGE": "No Password Change",
+    "SECURITY_SUITE": "Security Suite",
+    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Sätted",
+    "SETTINGS_WEBRTC": "Settings",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS sertifikaat",
-    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
-    "CONTEXT": "Kontekst",
-    "RINGINUSE": "Helistamine Kasutusel",
-    "USERS": "Kasutajad",
-    "AGENTS": "Agendid",
-    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "SELECTED": "Valitud",
-    "DELETE_SELECTED": "Kustuta valitud",
-    "EXPORT_SELECTED": "Ekspordi valitud",
-    "ALL_USERS": "Kõik kasutajad",
-    "ALL_AGENTS": "Kõik agendid",
-    "SORT": "sordi",
-    "NAME": "Nimi",
-    "FULLNAME": "Täisnimi",
-    "A_TO_Z": "(A-st Z-ni)",
-    "Z_TO_A": "(Z-st to A-ni)",
-    "MORE": "Rohkem",
-    "DELETE_USER": "Kustuta Kasutaja",
-    "EDIT_USER": "Redigeeri Kasutajat",
-    "DELETE_AGENT": "Kustuta Agent",
-    "EDIT_AGENT": "Redigeeri Agenti",
-    "DELETE": "KUSTUTA",
-    "SAVE": "SALVESTA",
-    "ADD_USER": "LISA KASUTAJA",
-    "ADD_AGENT": "LISA AGENT",
-    "NO_RESULTS": "Tulemused puuduvad..",
-    "CLOSE_DIALOG": "Sule dialoog",
-    "NAME_REQUIRED": "Nimi (nõutav)",
-    "USERNAME": "Kasutajanimi",
-    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
-    "PHONE_NUMBER": "Telefoninumber",
-    "EMAIL": "E-mail",
-    "PASSWORD": "Parool",
+    "DTLSCERTFILE": "TLS certificate",
+    "DTLSPRIVATEKEY": "TLS certificate's private key",
+    "CONTEXT": "Context",
+    "RINGINUSE": "Ring In Use",
+    "USERS": "Users",
+    "AGENTS": "Agents",
+    "TOGGLE_SIDENAV": "Toggle sidenav",
+    "SEARCH_FOR_ANYONE": "Search",
+    "BACK": "Back",
+    "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",
+    "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",
     "ERRORS": {
-      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
-      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
-      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "USERNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
-      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
-      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
-      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
-      "SIPPORT_REQUIRED": "Kohustuslik väli",
-      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
-      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
-      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
-      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
-      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
-      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
+      "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",
+      "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 ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Konto",
-    "VOICE": "Hääl",
-    "CREATED_AT": "Loomisaeg",
-    "ROLE": "Roll",
-    "PERSONAL_INFO": "Isiklik Teave",
-    "DESCRIPTION": "Kirjeldus",
-    "CHANGE_AVATAR": "Muuda Avatari",
-    "GENERAL": "Üldine",
-    "INTERNAL": "Sisemine",
+    "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": "Lubatud Koodeks",
+    "ALLOWCODECS": "Allowed Codecs",
     "HELP": {
-      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
-      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
-      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
-      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
-      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
-      "SIPEXPIRES": "Vaikimisi: 160",
-      "SIPPORT": "Vaikimisi: 5060",
-      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
-      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
-      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
-      "CALLGROUP": "Agendi kõnegrupp",
-      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
-      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldurā€¯",
+      "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: 5060",
+      "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)",
+      "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",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "NEW_PASSWORD": "Uus Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "CHANGE_PASSWORD": "Muuda Parooli",
-    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
-    "CHANGEPASSWORD_USER": "Muuda Parooli",
-    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
-    "LOGININPAUSE": "Sisselogimine Pausis",
+    "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",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Teised Kanalid",
-    "CHATCAPACITY": "Vestluse Võimsus",
-    "MAILCAPACITY": "E-posti Maht",
-    "FAXCAPACITY": "Faksi Maht",
-    "SMSCAPACITY": "SMSi Maht",
-    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
-    "MOTIONBAR": "Liikumisriba",
-    "SETTINGS": "Sätted",
-    "AUTOANSWER": "Automaatvastus",
-    "ENABLESETTINGS": "Luba Sätted",
-    "CALL_FORWARDING": "Kõne Suunamine",
-    "UNCONDITIONAL": "Tingimusteta",
-    "UNCONDITIONALNUMBER": "Tingimusteta Number",
-    "NOREPLY": "Vastamine puudub",
-    "NOREPLYNUMBER": "Number, millele ei saa vastata",
-    "BUSY": "Hõivatud",
-    "BUSYNUMBER": "Hõivatud Number",
-    "REMOTE_CONTROL": "Kaugjuhtimine",
-    "REMOTECONTROL": "Kaugjuhtimine",
-    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
+    "OTHER_CHANNELS": "Other Channels",
+    "CHATCAPACITY": "Chat Capacity",
+    "MAILCAPACITY": "Email Capacity",
+    "FAXCAPACITY": "Fax Capacity",
+    "SMSCAPACITY": "Sms Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP aegub [sek]",
+    "SIPEXPIRES": "SIP Expires [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Trahv",
-    "ACCOUNTNAME": "Konto Nimi",
-    "ADD_TELEPHONE": "Lisa Telefon",
-    "EDIT_TELEPHONE": "Redigeeri Telefoni",
-    "DELETE_TELEPHONE": "Kustuta Telefon",
-    "TEAMS": "Tiimid",
-    "DELETE_TEAM": "Kustuta Tiim",
-    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
-    "EDIT_TEAM": "Redigeeri Tiimi",
-    "TYPE": "Tüüp",
-    "TELEPHONES": "Telefonid",
-    "CALLERID": "Helistaja ID",
-    "ENABLERECORDING": "Luba Salvestamine",
-    "STAFF": "Personal",
-    "ID": "ID",
-    "NEW_USER": "Uus Kasutaja",
-    "NEW_AGENT": "Uus Agent",
-    "NEW_TELEPHONE": "Uus Telefon",
-    "NEW_TEAM": "Uus Tiim",
-    "ADD_TEAM": "Lisa Tiim",
-    "JOIN_QUEUE": "Liitu Järjekorraga",
-    "CAPACITY": "Maht",
-    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
-    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
-    "TEAMADD_AGENT": "Lisa Agent Tiimi",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "PERMISSIONS": "Load",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
-    "CALLGROUP": "Helistamise Grupp",
-    "PICKUPGROUP": "Vastuvõtu Grupp",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
-    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
-    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
-    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
-    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
-    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
-    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
-    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
-    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
-    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
-    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
-    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
-    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
-    "VOICEMAIL": "Kõnepost",
-    "SHOWWEBCONTROL": "Tüpoloogia",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "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_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_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_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",
+    "SHOWWEBCONTROL": "Typology",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
     "OF": "of",
-    "CALLFORWARDING": "Kõne Suunamine",
-    "DND": "Ära tülita pausi jooksul",
-    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
-    "ENABLEDTMFTONE": "Luba Dtmf toonid",
-    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
-    "ENCRYPTION": "Krüptimine",
-    "CHANNELS": "Kanalid",
-    "CHAT": "Vestlus",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
-    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
-    "EDITPERMISSIONS": "Redigeerimise Luba",
-    "READANDEDIT": "Loe, Redigeeri",
-    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
-    "GENERAL_PERMISSIONS": "Üldine",
-    "ENABLEMESSENGER": "Luba Sisemine Messenger",
-    "OUTBOUNDPROXY": "Väljuv Puhver",
-    "PHONE": "Telefon",
-    "MOBILE": "Mobiil",
-    "PREFIXREQUIRED": "Eesliide Nõutav",
-    "MANAGE_PERMISSIONS": "Halda Lubasid",
-    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
-    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
-    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
-    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
-    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
-    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
-    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
-    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
-    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
-    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
-    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
-    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
-    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
-    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
-    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
-    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
-    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
-    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
-    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
-    "ALL_PROJECTS": "Kõik Cally Square Projektid",
-    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
-    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
-    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
-    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
-    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
-    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
-    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
-    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
-    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
-    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
-    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
-    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
-    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
-    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
-    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
-    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
-    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
-    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
-    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
-    "ADD_USERPROFILE": "Lisa kasutaja profiil",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "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",
+    "OPENCHANNEL": "Open Channel",
+    "FAX": "Fax",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
+    "MONITOREXTENSION": "Record calls to user extension",
+    "EDITPERMISSIONS": "Editing Permissions",
+    "READANDEDIT": "Read, Edit",
+    "READANDEDITANDDELETE": "Read, Edit, Delete",
+    "GENERAL_PERMISSIONS": "General",
+    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "OUTBOUNDPROXY": "Oubound Proxy",
+    "PHONE": "Phone",
+    "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_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_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
+    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
+    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
+    "ADD_USERPROFILE": "Lisage kasutaja profiil",
+    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sule",
-    "CONFIRM": "Kinnita",
+    "CLOSE": "Sulge",
+    "CONFIRM": "Kinnitage",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereeri",
+    "GENERATE": "Genereerima",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereeri",
+    "REGENERATE": "Regenereerige",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
+    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Tiimidee liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp ühendus",
-    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
-    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
+    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
+    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
+    "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_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_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",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
+    "AUTO_ANSWER": "Automaatne vastus",
+    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
+    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
+    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
+    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
+    "FAX_AUTOANSWER": "Faksi automaatne vastus",
+    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
+    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
+    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
+    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
   }
 }
index e2ccdbf..48b85d3 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Häälbot",
-    "CLONE_TRUNK": "Magistraali Kloonimine",
-    "DISPOSITIONS": "Kasutused",
-    "NEW_DISPOSITION": "Uud Kasutus",
-    "ADD_DISPOSITION": "Lisa Kasutus",
-    "EDIT_DISPOSITION": "Redigeeri Kasutust",
-    "DELETE_DISPOSITION": "Kustuta Kasutus",
-    "RUN_SCHEDULE": "Käivita graafik",
-    "SENDIFEMPTY": "Saada, kui on tühi",
-    "NEXTCONTACT": "Järgmine",
-    "OUTBOUND_ROUTE": "Väljuv Teekond",
-    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
-    "FONTSIZE": "Fonsi Suurus",
-    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
+    "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",
+    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Taust",
-    "FOREGROUND": "Esiplaan",
-    "NONE": "Pole ühtegi",
-    "TOTAL": "Kokku",
-    "ABANDONED": "Tagasilükatud",
-    "WAITING": "Ootel",
-    "TALKING": "Rääkimine",
-    "ANSWERED": "Vastatud",
-    "UNMANAGED": "Haldamata",
-    "CUSTOMTYPE": "Kohandatud [tee]",
-    "WEBREPORT": "Veebi Raport",
-    "PIECHART": "Sektordiagramm",
-    "MULTIBARCHART": "Tulpdiagramm",
-    "MOVE_WIDGET": "Liiguta Vidinat",
-    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
-    "METRIC": "Mõõdik",
-    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
-    "SERIE1": "Seeria 1",
-    "SERIE2": "Seeria 2",
-    "SERIE3": "Seeria 3",
-    "REFRESH": "Värskenda [s]",
-    "FORMAT": "Formaat",
-    "PATH": "Absoluutne tee",
-    "ALL_USERS": "Kõik Kasutajad",
-    "SELECTED_USERS": "Valitud Kasutajad",
-    "ADD_WIDGET": "Lisa Vidin",
-    "COLOR": "Värv",
-    "FAX": "Faks",
-    "INTERACTION": "Suhtlus",
-    "MESSAGE": "Sõnum",
+    "BACKGROUND": "Background",
+    "FOREGROUND": "Foreground",
+    "NONE": "None",
+    "TOTAL": "Total",
+    "ABANDONED": "Abandoned",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
+    "ANSWERED": "Answered",
+    "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",
+    "PATH": "Absolute Path",
+    "ALL_USERS": "All Users",
+    "SELECTED_USERS": "Selected Users",
+    "ADD_WIDGET": "Add Widget",
+    "COLOR": "Color",
+    "FAX": "Fax",
+    "INTERACTION": "Interaction",
+    "MESSAGE": "Message",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Kõne",
-    "NAME": "Nimi",
-    "TRUNKS": "Magistraalid",
-    "SEARCH_FOR_ANYONE": "Otsi",
+    "CALL": "Call",
+    "NAME": "Name",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Search",
     "ERRORS": {
-      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "REFRESH_REQUIRED": "Kohustuslik väli",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "FONTSIZE_REQUIRED": "Kohustuslik väli",
-      "PATH_REQUIRED": "Kohustuslik väli",
-      "FORMAT_REQUIRED": "Kohustuslik väli",
-      "REPORT_REQUIRED": "Kohustuslik väli",
-      "TYPE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "ACCOUNT_REQUIRED": "Kohustuslik väli",
-      "FIELD_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "HOST_REQUIRED": "Kohustuslik väli",
-      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
-      "CALLERID_REQUIRED": "Kohustuslik väli",
-      "KEY_REQUIRED": "Kohustuslik väli",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
-      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
-      "MONTHDAY_REQUIRED": "Kohustuslik väli",
-      "HOUR_REQUIRED": "Kohustuslik väli",
-      "CONTENT_REQUIRED": "Kohustuslik väli",
-      "URL_REQUIRED": "Kohustuslik väli",
-      "URL_MUST_VALID_URL": "Vale formaat",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "TITLE_REQUIRED": "Kohustuslik väli",
-      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
-      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
-      "INTEGRATION_REQUIRED": "Kohustuslik väli",
-      "LIST_REQUIRED": "Kohustuslik väli",
-      "TEMPLATE_REQUIRED": "Kohustuslik väli",
-      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "QUEUE_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
-      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
-      "MONTH_TO_REQUIRED": "Kohustuslik väli",
-      "TIME_RANGE_FROM_INVALID": "Vale formaat",
-      "TIME_RANGE_TO_INVALID": "Vale formaat",
-      "ACTION_REQUIRED": "Kohustuslik väli",
-      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
-      "PROJECT_REQUIRED": "Kohustuslik väli",
-      "LOCATION_REQUIRED": "Kohustuslik väli",
-      "OUTPUT_REQUIRED": "Kohustuslik väli",
-      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
-      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
-      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
+      "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",
+      "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",
+      "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": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Saladus",
-    "DEFAULTUSER": "Vaikimisi Kasutaja",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_TRUNK": "Lisa Magistraal",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Default User",
+    "DESCRIPTION": "Description",
+    "ADD_TRUNK": "Add Trunk",
     "HELP": {
-      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
-      "SECRET": "Autentimise parool",
-      "HOST": "Domeen või hosti nimi",
-      "DEFAULTUSER": "Autentimise kasutajanimi",
-      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
-      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
-      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
-      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
-      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
-      "PORT": "SIP pordi number",
-      "CONTEXT": "Kontekst magistraali jaoks",
-      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
-      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
-      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
-      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
-      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
-      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
-      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
-      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
-      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
-      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
-      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
-      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
-      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
-      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
-      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
-      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
-      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
+      "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) ",
+      "BODY": "If not filled out, the default value will be sent",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisesta pealkiri",
-      "SCRIPT": "Sisesta skript",
-      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1ā€“10 ja vaikeväärtus 5.",
+      "INFO": "Sisestage pealkiri",
+      "SCRIPT": "Sisestage skript",
+      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "EDIT_TRUNK": "Muuda Magistraali",
-    "DELETE_TRUNK": "Kustuta Magistraal",
-    "CREATED_AT": "Loomisaeg",
-    "SETTINGS": "Sätted",
-    "ADVANCED": "Täpsem",
-    "OTHER": "Muu",
-    "ACTIVE": "Aktiivne",
-    "CONTEXT": "Kontekst",
-    "CALLERID": "Helistaja ID",
-    "TYPE": "Tüüp",
-    "DTMFMODE": "DTMF Režiim",
+    "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",
+    "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Kvalifitseerima",
-    "ALLOWCODECS": "Lubatud Koodeks",
-    "INSECURE": "Ebaturvaline",
-    "REGISTRY": "Register",
-    "DIRECTMEDIA": "Otsene Meedium",
-    "CALLCOUNTER": "Kõnede Loendur",
-    "FROMDOMAIN": "Domeenilt",
-    "FROMUSER": "Kasutajalt",
-    "OUTBOUNDPROXY": "Väljaminev Puhver",
-    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
-    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
-    "ENCRYPTION": "Krüpteerimine",
+    "QUALIFY": "Qualify",
+    "ALLOWCODECS": "Allowed Codecs",
+    "INSECURE": "Insecure",
+    "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",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Salvesta",
-    "VARIABLES": "Muutujad",
-    "ADD_VARIABLE": "Lisa Muutuja",
-    "EDIT_VARIABLE": "Redigeeri Muutuja",
-    "DELETE_VARIABLE": "Kustuta Muutuja",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "TAGS": "Sildid",
-    "ADD_TAG": "Lisa Silt",
-    "EDIT_TAG": "Redigeeri Silti",
-    "DELETE_TAG": "Kustuta Silt",
-    "PAUSES": "Pausile",
-    "ADD_PAUSE": "Lisa Paus",
-    "EDIT_PAUSE": "Redigeeri Pausi",
-    "DELETE_PAUSE": "Kustuta Paus",
-    "CANNEDANSWERS": "Salvestatud Vastused",
-    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
-    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
-    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
-    "KEY": "Võti",
-    "VALUE": "Väärtus",
-    "SOUNDS": "Helid",
-    "EDIT_SOUND": "Redigeeri Heli",
-    "DELETE_SOUND": "Kustuta Heli",
-    "CANCEL": "Tühista",
-    "FINISH": "Lõpeta",
-    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
-    "UPLOADING": "Üleslaadimine",
-    "TRIGGERS": "Käivitamised",
-    "EDIT_TRIGGER": "Redigeeri Käivitust",
-    "DELETE_TRIGGER": "Kustuta Käivitus",
-    "ADD_TRIGGER": "Lisa Käivitus",
-    "DELETE": "Kustuta",
-    "AUTOMATIONS": "Automaatika",
-    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
-    "DELETE_AUTOMATION": "Kustuta Automaatika",
-    "ADD_AUTOMATION": "Lisa Automaatika",
-    "INTERVALS": "Intervallid",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_INTERVAL": "Kustuta Intervall",
-    "ADD_INTERVAL": "Lisa Intervall",
-    "TOOLS": "Tööriistad",
-    "ID": "ID",
+    "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": "Laadi alla Heli",
-    "UPLOAD_SOUND": "Tööriistad",
-    "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Uus Käivitus",
-    "GENERAL": "Üldine",
-    "STATUS": "Staatus",
-    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
-    "ALLCONDITIONS": "Täida kõik need tingimused:",
-    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
-    "ACTIONS": "Tegevused:",
-    "NEW_AUTOMATION": "Uus Automaatika",
-    "TIMEOUT": "Aegumine",
-    "PEERSTATUS": "Partneri Staatus",
-    "CALL_LIMIT": "Kõnede Limiit",
-    "OTHERFIELDS": "Muud Väljad",
-    "NEW_VARIABLE": "Uus Muutuja",
-    "NEW_TAG": "Uus Silt",
-    "NEW_PAUSE": "Uus Paus",
-    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "NEW_TRUNK": "Uus Magistraal",
-    "FROM": "Kellelt",
-    "TO": "Kellele",
-    "WEEKDAY": "Nädalapäev",
-    "MONTHDAY": "Kuupäev",
-    "MONTH": "Kuu",
-    "ALWAYS": "Alati",
-    "MON": "Esmaspäev",
-    "TUE": "Teisipäev",
-    "WED": "Kolmapäev",
-    "THU": "Neljapäev",
-    "FRI": "Reede",
-    "SAT": "Laupäev",
-    "SUN": "Pühapäev",
-    "JAN": "Jaanuar",
-    "FEB": "Veebruar",
-    "MAR": "Märts",
-    "APR": "Aprill",
-    "MAY": "Mai",
-    "JUN": "Juuni",
-    "JUL": "Juuli",
+    "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",
+    "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",
     "SEP": "September",
-    "OCT": "Oktober",
+    "OCT": "October",
     "NOV": "November",
-    "DEC": "Detsember",
-    "PASSWORD": "Parool",
-    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
-    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
-    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
-    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
-    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
-    "SCHEDULER": "Plaanija",
-    "NEW_SCHEDULE": "Uus Plaanija",
-    "ADD_SCHEDULE": "Lisa Plaanija",
-    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
-    "DELETE_SCHEDULE": "Kustuta Plaanija",
-    "SENDMAIL": "Saada E-mail",
-    "CONFIGURATION": "Konfiguratsioon",
-    "MAIL": "E-mail",
-    "REPORTTYPE": "Rapordi Tüüp",
-    "REPORT": "Raport",
-    "OUTPUT": "Väljund",
-    "EXECUTEON": "Käivita",
-    "REPORTRANGE": "Rapordi Vahemik",
-    "VALIDITYSTART": "Alguse Aeg",
-    "VALIDITYEND": "Lõpu Aeg",
-    "EXECUTEEVERY": "Täida iga",
-    "ACCOUNT": "Konto",
-    "EMAILADDRESS": "E-maili aadress",
-    "EMAILCCADDRESS": "Koopia",
-    "EMAILBCCADDRESS": "Salakoopia",
-    "CURRENTDAY": "Jooksev Päev",
-    "DAILY": "Igapäevane",
-    "WEEKLY": "Iganädalane",
-    "MONTHLY": "Igakuine",
-    "PREVIOUS_DAY": "Eemine päev",
-    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
-    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
-    "LAST_MONTH": "Viimane Kuu",
-    "WEEKDAYS": "Nädalapäevad",
-    "HOUR": "Tund",
-    "DEFAULT": "Vaikimisi",
+    "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",
+    "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",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutit",
-    "30MIN": "30 minutit",
-    "1H": "1 tund",
-    "VOICE": "Hääl",
-    "CHAT": "Vestlus",
+    "15MIN": "15 minutes",
+    "30MIN": "30 minutes",
+    "1H": "1 hour",
+    "VOICE": "Voice",
+    "CHAT": "Chat",
     "SMS": "SMS",
-    "OPENCHANNEL": "Ava Kanal",
-    "TEMPLATES": "Mallid",
-    "EDIT_TEMPLATE": "Redigeeri Malli",
-    "DELETE_TEMPLATE": "Kustuta Mall",
-    "NEW_TEMPLATE": "Uus Mall",
-    "ADD_TEMPLATE": "Lisa Mall",
-    "CONTENT": "Sisu",
-    "FIELD": "Väli",
-    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
-    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
-    "ACTION": "Tegevus",
-    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
-    "DELETE_ANYCONDITION": "Kustuta Tingimus",
-    "NEW_ANYCONDITION": "Uus Tingimus",
-    "ADD_ANYCONDITION": "Lisa Tingimus",
-    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
-    "DELETE_ALLCONDITION": "Kustuta Tingimus",
-    "NEW_ALLCONDITION": "Uus Tingimus",
-    "ADD_ALLCONDITION": "Lisa Tingimus",
-    "EDIT_ACTION": "Redigeeri Tegevust",
-    "DELETE_ACTION": "Kustuta Tegevus",
-    "NEW_ACTION": "Uus Tegevus",
-    "ADD_ACTION": "Lisa Tegevus",
-    "QUEUE": "Järjekord",
-    "CALL_STATUS": "Kõne Staatus",
-    "OUTBOUNDROUTE": "Väljaminev Tee",
-    "EQUALS": "Võrduvad",
-    "NOT_EQUALS": "Ei Võrdu",
-    "CONTACT_MANAGER": "Kontaktide Haldur",
-    "INTEGRATIONS": "Integratsioonid",
-    "MOTIONBAR": "Liikumisriba",
+    "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",
+    "EQUALS": "Equals",
+    "NOT_EQUALS": "Not Equals",
+    "CONTACT_MANAGER": "Contacts Manager",
+    "INTEGRATIONS": "Integrations",
+    "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Edastamine",
-    "WEB_POPUP": "Veebi Hüpik",
-    "LIST": "Loend",
-    "INTEGRATION": "Integratsioon",
-    "TEMPLATE": "Mall",
+    "URL_FORWARD": "URL Forward",
+    "WEB_POPUP": "Web Popup",
+    "LIST": "List",
+    "INTEGRATION": "Integration",
+    "TEMPLATE": "Template",
     "URL": "URL",
-    "APPLICATION": "Rakendus",
+    "APPLICATION": "Application",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "NEW_INTERVAL": "Uus Intervall",
-    "OPERATOR": "Operaator",
-    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
-    "YES": "Jah",
-    "NO": "Ei",
-    "SUBJECT": "Teema",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "BROWSER": "Brauser",
-    "INTERVAL": "Intervall",
+    "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": "Ajavahemik",
-    "WEEK_DAYS": "Nädalapäevad",
-    "MONTH_DAYS": "Kuupäevad",
-    "MONTHS": "Kuud",
-    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
-    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
-    "DASHBOARD": "Töölaud",
-    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
-    "COUNTER": "Loendur",
+    "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",
     "IFRAME": "IFrame",
-    "CLOCK": "Kell",
-    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
-    "EDIT_WIDGET": "Redigeeri Vidinat",
-    "DELETE_WIDGET": "Kustuta Vidin",
-    "FLIP_WIDGET": "Pööra Vidinat",
-    "TITLE": "Pealkiri",
-    "UPDATE": "Uuenda",
-    "LAYOUT": "Paigutus",
-    "BACKGROUND_COLOR": "Taustavärv",
-    "FOREGROUND_COLOR": "Esiplaani Värv",
-    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
-    "THEME": "Teema",
-    "LIGHT": "Hele",
-    "DARK": "Tume",
-    "TIMEZONE": "Ajavöönd",
-    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
-    "TOOLS_QUERY": "Päring",
-    "SELECT": "Vali",
-    "WHERE": "Kus",
-    "BACK": "Tagasi",
-    "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
-    "GOTO_TRUNK": "Mine Magistraali",
+    "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",
     "CRON": "Cron",
-    "MINUTES": "Minutid",
-    "HOURLY": "Igatunnine",
-    "YEARLY": "Iga-aastane",
-    "EVERY": "Iga",
-    "MINUTE": "Minut",
-    "ON_SECOND": "Teisel",
-    "HOUR_ON_MINUTE": "Tund minutil",
-    "AND_SECOND": "Ja teine",
+    "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": "Algusaeg",
+    "START_TIME": "Start Time",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Eelmine",
-    "LASTUNIT": "Üksus",
-    "MAILACCOUNT": "E-maili Konto",
+    "LAST": "Last",
+    "LASTUNIT": "Unit",
+    "MAILACCOUNT": "Email Account",
     "OF": "of",
-    "PAST_THE_HOUR": "Üle täistunni",
-    "DAY": "Päev",
-    "WEEK": "Nädal",
-    "YEAR": "Aasta",
+    "PAST_THE_HOUR": "Past the hour",
+    "DAY": "Day",
+    "WEEK": "Week",
+    "YEAR": "Year",
     "ON": "On",
-    "PAI": "P-Tõendatud-Identiteet",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
-    "EVENTVARIABLES": "Sündmuse Muutujad",
-    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
-    "LOCATION": "Asukoht",
-    "NEW_TAB": "Uus Vahekaart",
-    "NEW_WINDOW": "Uus Aken",
-    "WINDOWWIDTH": "Akna Laius(px)",
-    "WINDOWHEIGHT": "kna Kõrgus(px)",
-    "BODY": "Sisu",
-    "REPORTFOLDER": "Rapordi Kaust",
-    "REPORTSUBFOLDER": "Rapordi Alamkaust",
+    "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",
+    "WINDOWWIDTH": "Window Width(px)",
+    "WINDOWHEIGHT": "Window Height(px)",
+    "BODY": "Body",
+    "REPORTFOLDER": "Report Folder",
+    "REPORTSUBFOLDER": "Report Subfolder",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP": "WhatsApp-pistik",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Üldised",
+    "GLOBALS": "Globaalid",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Liikumisriba",
+    "MOTION_BAR": "Motion Bar",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik kasutused",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
+    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
+    "ADD_CONTACTITEMTYPE": "Lisama",
+    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
+    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
+    "ORDER_BY": "Telli",
+    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
+    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
+    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
+    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
   }
 }
index 3b220a5..116fbad 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "ID",
-    "INTERACTIONID": "Suhtluse ID",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ID": "Id",
+    "INTERACTIONID": "Koostoime ID",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
     "NO_RATING": "Hinnang puudub",
-    "OF": "of",
-    "PAGE": "Lehekülg",
+    "OF": "kohta",
+    "PAGE": "Leht",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Atribuudid",
+    "PROPERTIES": "Omadused",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvesta lõpuaeg",
-    "RECORDSTARTTIME": "Salvesta algusaeg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECORDENDTIME": "Salvestage lõpuaeg",
+    "RECORDSTARTTIME": "Salvestage algusaeg",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvesta algusaeg",
+    "STARTEDAT": "Salvestage algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index fe28adb..e8fc04a 100644 (file)
 {
   "VOICE": {
-    "LOGIN_TIME": "Sisselogimise aeg",
-    "PAUSE_TIME": "Pausi aeg",
-    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
-    "WAITING_FOR_AGENTS": "Agendi ootel",
-    "ACTIVE": "Aktiivne",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "PARTIALPAUSE": "Osaline Paus",
-    "STATUS": "Staatus",
-    "TIMER": "Taimer",
-    "ALL": "Kõik",
-    "IDLE": "Jõude",
-    "EDIT_TRUNK": "Redigeeri Magistraal",
-    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
-    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
-    "NAME": "Nimi",
-    "LOGOUT": "Logi välja",
-    "VOICEQUEUES": "Hääle Järjekorrad",
-    "SEARCH_FOR_ANYONE": "Otsi",
-    "BACK": "Tagasi",
-    "SELECTED": "Valitud",
-    "SELECT_ALL": "Vali Kõik",
-    "SELECT_NONE": "Ära Vali Ühtegi",
-    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
-    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
-    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
-    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
-    "MOHSOUNDS": "Moh Helid",
-    "STRATEGY": "Strateegia",
-    "DESCRIPTION": "Kirjeldus",
-    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
-    "CREATED_AT": "Loomisaeg",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
-    "APPLICATIONS_LIST": "Rakenduste Loend",
+    "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",
+    "ALL": "All",
+    "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",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
+      "CUSTOM_APPLICATION": "(*) - Custom application"
     },
     "ERRORS": {
-      "TRUNK_REQUIRED": "Kohustuslik väli",
-      "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "NAME_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_REQUIRED": "Kohustuslik väli",
-      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
-      "CONTEXT_REQUIRED": "Kohustuslik väli",
-      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
-      "FULLNAME_REQUIRED": "Kohustuslik väli",
-      "EMAIL_REQUIRED": "Kohustuslik väli",
-      "EMAIL_MUST_VALID": "Vale formaat",
-      "MAILBOX_REQUIRED": "Kohustuslik väli",
-      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "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": "Kohustuslik väli",
-      "PREFIX_REQUIRED": "Kohustuslik väli",
-      "OPTIONS_REQUIRED": "Kohustuslik väli",
-      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
-      "PHONE_REQUIRED": "Kohustuslik väli",
-      "VALUE_REQUIRED": "Kohustuslik väli",
-      "EXTENSION_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "APPLICATION_REQUIRED": "Kohustuslik väli",
-      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NAME_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
-      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
+      "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",
+      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
+      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
     },
-    "GENERAL": "Üldine",
-    "TIMEOUT": "Aegumine",
-    "MAXLENGTH": "Maksimaalne Pikkus",
-    "RETRY": "Proovi uuesti",
-    "WRAPUPTIME": "Lõpetamise Aeg",
-    "WEIGHT": "Kaal",
-    "JOINWHENEMPTY": "Ühine, kui on tühi",
-    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
+    "GENERAL": "General",
+    "TIMEOUT": "Timeout",
+    "MAXLENGTH": "Maximum Length",
+    "RETRY": "Retry",
+    "WRAPUPTIME": "Wrapup Time",
+    "WEIGHT": "Weight",
+    "JOINWHENEMPTY": "Join when empty",
+    "LEAVEWHENEMPTY": "Leave when empty",
     "HELP": {
-      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
-      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
-      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
-      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
-      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
-      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
-      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
-      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
-      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
-      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
-      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
-      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
-      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
-      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
-      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
-      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
-      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
-      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
-      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
-      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
-      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaegā€¯. Määramata=teavitust pole",
-      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimeneā€¯. Määramata=teavitust pole.",
-      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere areā€¯. Määramata=teavitust pole",
-      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootelā€¯. Määramata=teavitust pole",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg onā€¯. Määramata=teavitust pole",
-      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
-      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutitā€¯. Määramata=teavitust pole",
-      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekunditā€¯. Määramata=teavitust pole",
-      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eestā€¯. Määramata=teavitust pole",
-      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
-      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
-      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
-      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
-      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
-      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
-      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
-      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
-      "RECORDING": "Luba kõne salvestamine",
-      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
-      "NAME": "ja erimärgid (._) on toetatud",
-      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
+      "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",
+      "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": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "MUSICONHOLD": "Muusika Ooteajal",
-    "ANNOUNCETOAGENT": "Teavita Agenti",
-    "ANNOUNCEMENTS": "Teavitused",
-    "ADVANCED": "Täpsem",
-    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
-    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
-    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
-    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
-    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
-    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
-    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
-    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
-    "PERIODICANNOUNCE": "Perioodiline Teavitus",
-    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
-    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
-    "THEREAREANNOUNCE": "'Seal on' Teavitus",
-    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
-    "MINUTESANNOUNCE": "Minutite Teavitus",
-    "MINUTEANNOUNCE": "Minuti Teavitus",
-    "SECONDSANNOUNCE": "Sekundite Teavitus",
-    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
-    "AUTOPAUSE": "Automaatne Paus",
-    "AFTERCALLWORK": "Tööjärgne Kõne",
-    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
-    "RINGINUSE": "Helin Kasutusel",
-    "MEMBERDELAY": "Osalise Viivitus",
-    "TIMEOUTRESTART": "Aegumise Lähtestamine",
-    "MONITORFORMAT": "Salvestamise Formaat",
-    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
-    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
-    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
-    "VARIABLE": "Muutuja",
-    "CONTEXT": "Kontekst",
-    "SAVE": "Salvesta",
-    "SETTINGS": "Sätted",
-    "INBOUNDROUTES": "Sissetulevad Teed",
-    "PHONENUMBER": "Telefoninumber",
-    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
-    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
-    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
-    "ACTIONS": "Tegevused",
-    "OUTBOUNDROUTES": "Väljaminevad Teed",
-    "DESTINATIONPATTERN": "Sihtkoha Muster",
-    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
-    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
-    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
-    "CUTDIGITS": "Eemalda Numbrid",
-    "RECORDING": "Salvestamine",
-    "RECORDINGFORMAT": "Salvestamise formaat",
-    "INTERNALROUTES": "Sisemised Teed",
-    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
-    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
-    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
-    "CONTEXTS": "Kontekstid",
-    "ADD_CONTEXT": "Lisa Kontekst",
-    "EDIT_CONTEXT": "Redigeeri Konteksti",
-    "DELETE_CONTEXT": "Kustuta Kontekst",
-    "VOICEMAILS": "Kõnepostid",
-    "ADD_VOICEMAIL": "Lisa Kõnepost",
-    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
-    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
-    "FULLNAME": "Täisnimi",
-    "EMAIL": "E-mail",
-    "MAILBOX": "Postkast",
-    "PASSWORD": "Parool",
-    "CONFIRM_PASSWORD": "Kinnita Parool",
-    "TIMEZONE": "Ajavöönd",
-    "ATTACH": "Lisa",
-    "ENVELOPE": "Ümbrik",
-    "DELETE": "Kustuta",
-    "EMAILBODY": "E-maili Sisu",
-    "EMAILSUBJECT": "E-maili Teema",
-    "MAXSECONDS": "Maks Sekundeid",
-    "MAXMESSAGES": "Maks Sõnumeid",
-    "MESSAGES": "Sõnumid",
-    "SORT": "Sordi",
-    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
-    "MUSICONHOLDS": "Ootemuusika",
-    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
-    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
-    "DIRECTORY": "Kataloog",
-    "AUDIOFILES": "Audiofailid",
-    "RECORDINGS": "Salvestused",
+    "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",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Eesliide",
-    "OPTIONS": "Valikud",
-    "AUTH": "Autentimine",
-    "ADD_CHANSPY": "Lisa ChanSpy",
-    "EDIT_CHANSPY": "Redigeeri ChanSpy",
-    "DELETE_CHANSPY": "Kustuta ChanSpy",
-    "AGENTS": "Agendid",
-    "TELEPHONES": "Telefonid",
-    "QUEUES": "Järjekorrad",
-    "QUEUE_CALLS": "Järjekorra Kõned",
-    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
-    "ABANDONED_CALLS": "Tagasilükatud Kõned",
-    "OUTBOUND_CALLS": "Väljuvad Kõned",
+    "PREFIX": "Prefix",
+    "OPTIONS": "Options",
+    "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",
     "AGI": "Agi",
-    "DIAL": "Valimine",
+    "DIAL": "Dial",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Sisemine Valimine",
-    "EXTERNALDIAL": "Välimine Valimine",
-    "RINGGROUP": "Helistamise Grupp",
-    "PLAYBACK": "Taasesitus",
-    "QUEUE": "Järjekord",
-    "SET": "Määra",
-    "VOICEMAIL": "Häälkõne",
+    "INTERNALDIAL": "Internal Dial",
+    "EXTERNALDIAL": "External Dial",
+    "RINGGROUP": "Ring Group",
+    "PLAYBACK": "Playback",
+    "QUEUE": "Queue",
+    "SET": "Set",
+    "VOICEMAIL": "Voicemail",
     "GOTO": "GoTo",
-    "HANGUP": "Katkestamine",
-    "CUSTOM": "Kohandatud",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
+    "HANGUP": "Hangup",
+    "CUSTOM": "Custom",
+    "PROJECT": "Cally-Square Project",
+    "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Redigeeri Rakendust",
-    "EDIT_INTERVAL": "Redigeeri Intervalli",
-    "DELETE_APP": "Kustuta Rakendus",
-    "INTERVALS": "Intervallid",
-    "USER": "Kasutaja",
-    "TRUNK": "Magistraal",
-    "PHONE": "Telefon",
-    "AUDIO_FILES": "Audiofailid",
-    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
-    "MACRO": "Makro",
+    "EDIT_APP": "Edit Application",
+    "EDIT_INTERVAL": "Edit Interval",
+    "DELETE_APP": "Delete Application",
+    "INTERVALS": "Intervals",
+    "USER": "User",
+    "TRUNK": "Trunk",
+    "PHONE": "Phone",
+    "AUDIO_FILES": "Audio Files",
+    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Reegel",
-    "POSITION": "Positsioon",
-    "ANSWER": "Vastus",
-    "VALUE": "Väärtus",
-    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
-    "EXTENSION": "Laiendus",
-    "PRIORITY": "Prioriteet",
-    "HANGUP_CAUSE": "Katkestamise Põhjus",
-    "OUTBOUNDDIAL": "Väljaminev Valimine",
-    "CALLER_ID": "Helistaja ID",
-    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
-    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
-    "VOICERECORDINGS": "Häälsalvestused",
+    "RULE": "Rule",
+    "POSITION": "Position",
+    "ANSWER": "Answer",
+    "VALUE": "Value",
+    "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",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Hääl",
-    "REALTIME": "Reaalaeg",
-    "ID": "ID",
-    "VOICEMAIL_CONTEXT": "Kontekst",
-    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
-    "FILE": "Fail",
-    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
-    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
-    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
-    "UNIQUEID": "Unikaalne ID",
+    "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": "Tüüp",
-    "RATING": "Hinnang",
+    "TYPE": "Type",
+    "RATING": "Rating",
     "AUDIO": "Audio",
-    "DATE": "Kuupäev",
-    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
-    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
-    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
-    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
-    "NEW_CONTEXT": "Uus Kontekst",
-    "NEW_VOICEMAIL": "Uus Kõnepost",
-    "NEW_MUSICONHOLD": "Uus Ootemuusika",
-    "NEW_CHANSPY": "Uus ChanSpy",
-    "PENALTY": "Trahv",
-    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "EDIT_DIAL": "Redigeeri Valimist",
-    "EDIT_AGI": "Redigeeri AGI",
-    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
-    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
-    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
-    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
-    "EDIT_QUEUE": "Redigeeri Järjekorda",
-    "EDIT_SET": "Redigeeri Määramist",
-    "EDIT_GOTO": "Redigeeri GoTo",
-    "EDIT_HANGUP": "Redigeeri Katkestamist",
-    "EDIT_CUSTOM": "Redigeeri Kohandatud",
-    "DURATION": "Kestus",
-    "RECEIVED_AT": "Kättesaamise aeg",
-    "YES": "Jah",
-    "NO": "Ei",
-    "HANGUPCAUSE_1": "1 = Määramata number",
-    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
-    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
-    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
-    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
-    "HANGUPCAUSE_22": "22 = Number muudetud",
-    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
-    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
-    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
-    "RANDOM": "Juhuslik",
-    "ALPHABETICAL": "Tähestikuline",
-    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
-    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
-    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
-    "INTERNAL": "Sisemine",
-    "PHONE_STATE": "Telefoni Olek",
-    "PHONE_STATUS": "Telefoni Staatus",
-    "TRUNK_STATUS": "Magistraali Staatus",
-    "REGISTERED": "Registreeritud",
-    "UNREGISTERED": "Registreerimata",
-    "LAGGED": "Viivitatud",
-    "REACHABLE": "Kättesaadav",
-    "UNREACHABLE": "Pole kättesaadav",
-    "UNKNOWN": "Teadmata",
-    "NOT_INUSE": "Pole Kasutusel",
-    "INUSE": "Kasutusel",
-    "BUSY": "Hõivatud",
-    "INVALID": "Kehtetu",
-    "UNAVAILABLE": "Pole kättesaadav",
-    "RINGING": "Heliseb",
-    "ONHOLD": "Ootel",
-    "RING": "Helista",
-    "UP": "Üles",
+    "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",
+    "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",
-    "TRUNKS": "Magistraalid",
-    "REGISTRY": "Register",
-    "NO_REGISTRY": "Register puudub",
-    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
-    "PAUSED": "Pausil",
-    "WAITING": "OOtel",
-    "TALKING": "Rääkimine",
+    "TRUNKS": "Trunks",
+    "REGISTRY": "Registry",
+    "NO_REGISTRY": "No Registry",
+    "LOGGED_IN": "Logged In (SIP Connected)",
+    "PAUSED": "Paused",
+    "WAITING": "Waiting",
+    "TALKING": "Talking",
     "DID": "DID",
-    "CALLER": "Helistaja",
-    "TOTAL": "Kokku",
-    "ANSWERED": "Vastatud",
-    "ABANDONED": "Tagasi lükatud",
-    "UNMANAGED": "Haldamata",
-    "AVG_HOLD_TIME": "Avg Ooteaeg",
-    "AVG_DURATION": "Avg Kestus",
-    "AVG_BILLABLE": "Avg Arveldatav",
-    "SOURCE": "Allikas",
-    "DESTINATION": "Sihtkoht",
-    "REJECTED": "Katkestatud",
-    "FAILED": "Nurjunud",
-    "CALLED": "Helistatud",
-    "CONNECTED": "Ühendatud",
-    "NO_RATING": "Hinnang puudub",
-    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
-    "APPLICATION_NAME": "Rakenduse nimi",
-    "ARGUMENTS": "Argumendid",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
-    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
-    "PAUSE": "Pausile",
-    "UNPAUSE": "Lõpeta Paus",
-    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
-    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
-    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
-    "APPLICATION": "Rakendus",
-    "FILES": "Failid",
-    "FORMAT": "Formaat",
-    "MODE": "Režiim",
-    "RECORD": "Kirje",
-    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
-    "NEW_MOHSOUND": "Uus Ootemuusika heli",
-    "DOWNLOAD_MESSAGE": "Allalaadimine",
-    "DELETE_MESSAGE": "Kustuta",
-    "QUEUE_PARAMS": "Järjekorra Parameetrid",
-    "TOTAL_OFFERED": "Kokku Pakutud",
-    "READY": "Valmis",
-    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
-    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
-    "ALL_TEAMS": "Kõik Tiimid",
-    "SELECTED_TEAMS": "Valitud Tiimid",
-    "ALL_AGENTS": "Kõik Agendid",
-    "SELECTED_AGENTS": "Valitud Agendid",
-    "CLOSING": "Sulgemine",
-    "TAGS": "Sildid",
-    "WAITING_FOR_AGENT": "Agentide Ootamine",
-    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
-    "ACCOUNTNAME": "Konto Nimi",
-    "PAGE": "Lehekülg",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "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": "Kasutus",
-    "CHAT": "Vestlus",
-    "MAIL": "E-mail",
+    "DISPOSITION": "Disposition",
+    "CHAT": "Chat",
+    "MAIL": "Email",
     "SMS": "SMS",
-    "OPENCHANNEL": "Avatud Kanal",
-    "FAX": "Faks",
-    "CLEAR": "Puhasta",
-    "CALLS": "Kõned",
-    "STARTEDAT": "Algusaeg",
-    "ENDEDAT": "Lõpu aeg",
-    "TAG": "Silt",
-    "DETAILS": "Üksikasjad",
-    "BILLABLESECONDS": "Tasustatavad sekundid",
-    "ANSWEREDAT": "Vastamise aeg",
-    "NOTE": "Märge",
-    "CLOSE": "Sule",
-    "SELECT_DATE": "Vali Alguse Kuupäev",
-    "SELECT_TYPE": "Vali Tüüp",
-    "VOICEPREFIXES": "Välised Eesliited",
-    "NEW_VOICEPREFIX": "Uus Eesliide",
-    "ADD_VOICEPREFIX": "Lisa Eesliide",
-    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
-    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
-    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
-    "OUTBOUNDROUTE": "Väljuv Tee",
-    "CALLERIDALL": "Helistaja ID",
+    "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",
+    "DELETE_VOICEPREFIX": "Delete Prefix",
+    "OUTBOUNDROUTE": "Outbound Route",
+    "CALLERIDALL": "Caller Id",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Arvamus",
-    "SENTIMENTANALYSIS": "Arvamuste analüüs",
-    "SENTIMENT_MIXED": "Kombineeritud",
+    "SENTIMENT": "Tunne",
+    "SENTIMENTANALYSIS": "Sentimentide analüüs",
+    "SENTIMENT_MIXED": "Segatud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "iimide liit",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeeri",
+    "TRANSCRIBE": "Transkribeerida",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
+    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Transkriptsioon",
-    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
+    "TRANSCRIPT": "Ärakiri",
+    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega"
+    "ALIAS": "Teise nimega",
+    "MAXCAPACITY": "Maksimaalne mahutavus",
+    "WORKING": "Töötab"
   }
 }
index e8c6282..7c8316a 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli",
+      "BASEURL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
-      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
+      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisa märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisa",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
-    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
+    "ADD_NOTE": "Lisada märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisama",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
+    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
-    "AGENTS": "Agendid",
-    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
-    "AGENTTRANSFER": "Agendi Edastamine",
-    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
-    "AGENT_TIMEOUT": "Agendi aegumine",
+    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
+    "AGENTS": "Agentid",
+    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
+    "AGENTTRANSFER": "Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "AGENT_TIMEOUT": "Agent aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik tiimid",
+    "ALL_TEAMS": "Kõik võistkonnad",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimisluba",
+    "AUTHTOKEN": "Autentimismärk",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Salvestatud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
+    "CANNEDANSWERS": "Konserveeritud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sule",
+    "CLOSE": "Sulge",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Suge URL",
+    "CLOSEURL": "Sulge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loomisaeg",
+    "CREATED_AT": "Loodud kell",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta suhtlus",
+    "DELETE_INTERACTION": "Kustuta interaktsioon",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
-    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
+    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
+    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "Dialoogivoog",
-    "DISPOSITION": "Kasutused",
-    "DISPOSITIONS": "Kasutused",
-    "DOWNLOAD_INTERACTION": "Laadi alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
-    "EDIT_AGENT": "Redigeeri agenti",
+    "DIALOGFLOW": "DialogFlow",
+    "DISPOSITION": "Dispositsioon",
+    "DISPOSITIONS": "Dispositsioonid",
+    "DOWNLOAD_INTERACTION": "Lae alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_AGENT": "Redigeeri esindajat",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulgemine",
-    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_CLOSE": "Redigeerimine Sulge",
+    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoifi",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_NOOP": "Redigeeri Noopi",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
-    "ID": "ID",
-    "IDLE": "Jõude",
-    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
-    "INTERACTIONS": "Suhtlused",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
+    "ID": "Id",
+    "IDLE": "Tühikäik",
+    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
+    "INTERACTIONS": "Koostoimed",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
-    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
+    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONSHAKE": "Raputama",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Agente pole võrgus",
-    "NO_AVAILABLE_INFO": "Teave pole saadaval",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
-    "OF": "of",
+    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
+    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
+    "OF": "kohta",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra edastamine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
+    "QUEUETRANSFER": "Järjekorra ülekandmine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "URL-i vastuvõtmine",
-    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
-    "REMOTE": "Kaugjuhtimine",
-    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "RECEIVEURL": "Saate URL-i",
+    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
+    "REMOTE": "Kaugjuhtimispult",
+    "ROWSPERPAGE": "Ridasid lehel",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud agendid",
-    "SELECTED_TEAMS": "Valitud tiimid",
+    "SELECTED_AGENTS": "Valitud esindajad",
+    "SELECTED_TEAMS": "Valitud meeskonnad",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Ärge valige ühtegi",
+    "SELECT_NONE": "Valige ükski",
     "SEND": "Saada",
-    "SETTINGS": "Sätted",
-    "SPYINTERACTION": "Spiooni suhtlus",
-    "STARTEDAT": "Alustatud kell",
+    "SETTINGS": "Seadistused",
+    "SPYINTERACTION": "Spioonide interaktsioon",
+    "STARTEDAT": "Alustati kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
-    "TEAMS_ASSOCIATION": "Tiimide liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
+    "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Kellele",
+    "TO": "Et",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõene prioriteet",
+    "TRUEPRIORITY": "Tõeline prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuja",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
-    "WAITING": "Ootamine",
-    "WELCOMEMESSAGE": "Tervitussõµnum",
-    "WHATSAPP": "WhatsApp-ühendus",
-    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
-    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-mail",
+    "VARIABLE": "Muutuv",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
+    "WAITING": "Ootan",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPPACCOUNTS": "WhatsApi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
+    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-post",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID"
+    "PROJECTID": "Projekti ID",
+    "BASEURL": "Baas-URL",
+    "DELIVERYREPORTURL": "Edastamisaruande URL"
   }
 }
index f98da63..fd2a755 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
-    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
-    "SAVE": "Salvesta",
+    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
+    "NO_AVAILABLE_GROUPS": "No Available Groups",
+    "SAVE": "Save",
     "INFO": "Info",
-    "NEW_CHATGROUP": "Uus Grupp",
-    "NAME": "Nimi",
-    "MEMBERS": "Liikmed",
-    "ENABLE_WRITING": "Luba Kirjutamine",
-    "GROUPS": "Gruppid",
-    "YOU": "Teie + {{osalejad}}",
-    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
-    "DELETE": "Kustuta",
-    "SEARCH": "Otsi",
-    "USERS": "Kasutajad",
-    "TODAY": "TÄNA",
-    "MONDAY": "Esmaspäev",
-    "TUESDAY": "Teisipäev",
-    "WEDNESDAY": "Kolmapäev",
-    "THURSDAY": "Neljapäev",
-    "FRIDAY": "Reede",
-    "SATURDAY": "Laupäev",
-    "SUNDAY": "Pühapäev",
-    "JANUARY": "Jaanuar",
-    "FEBRUARY": "Veebruar",
-    "MARCH": "Märts",
-    "APRIL": "Aprill",
-    "MAY": "Mai",
-    "JUNE": "Juuni",
-    "JULY": "Juuli",
+    "NEW_CHATGROUP": "New Group",
+    "NAME": "Name",
+    "MEMBERS": "Members",
+    "ENABLE_WRITING": "Enable Writing",
+    "GROUPS": "Groups",
+    "YOU": "You + {{participants}}",
+    "NEW_INTERNAL_MESSAGE": "New internal message",
+    "DELETE": "Delete",
+    "SEARCH": "Search",
+    "USERS": "Users",
+    "TODAY": "TODAY",
+    "MONDAY": "Monday",
+    "TUESDAY": "Tuesday",
+    "WEDNESDAY": "Wednesday",
+    "THURSDAY": "Thursday",
+    "FRIDAY": "Friday",
+    "SATURDAY": "Saturday",
+    "SUNDAY": "Sunday",
+    "JANUARY": "January",
+    "FEBRUARY": "February",
+    "MARCH": "March",
+    "APRIL": "April",
+    "MAY": "May",
+    "JUNE": "June",
+    "JULY": "July",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "Oktoober",
+    "OCTOBER": "October",
     "NOVEMBER": "November",
-    "DECEMBER": "Detsember",
-    "CHAT": "VESTLUS",
-    "ACTIVITY": "TEGEVUS",
-    "FRIENDS": "Sõbrad",
-    "APP_SERVERS": "Rakenduse Serverid",
-    "USER_STATS": "Kasutaja Stat",
-    "EVENTS": "Sündmused",
-    "NOTES": "Märkmed",
-    "QUICK_SETTINGS": "Kiirsätted",
-    "NOTIFICATIONS": "Teatised",
-    "CLOUD_SYNC": "Pilve Sünk",
+    "DECEMBER": "December",
+    "CHAT": "CHAT",
+    "ACTIVITY": "ACTIVITY",
+    "FRIENDS": "Friends",
+    "APP_SERVERS": "Application Servers",
+    "USER_STATS": "User Stats",
+    "EVENTS": "Events",
+    "NOTES": "Notes",
+    "QUICK_SETTINGS": "Quick Settings",
+    "NOTIFICATIONS": "Notifications",
+    "CLOUD_SYNC": "Cloud Sync",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Hiljutine",
-    "START_NEW_CHAT": "Alusta Uut Vestlust",
-    "BACK": "Tagasi",
-    "CALL": "Helista",
-    "MORE": "Rohkem",
-    "SEND_MESSAGE": "Saada sõnum",
-    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
-    "EXPIRATION_DATE": "Aegumiskuupäev",
-    "EXPIRATION_REASON": "Aegumise Põhjus",
-    "LICENSE": "Litsents",
-    "NEW_TOKEN": "Uus Luba",
-    "OLD_TOKEN": "Vana Luba",
-    "SEND_EMAIL_TO": "Saada E-mail Kellele",
-    "TOKEN": "Luba",
-    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
-    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
-    "WARNING": "Hoiatus",
+    "RECENT": "Recent",
+    "START_NEW_CHAT": "Start New Chat",
+    "BACK": "Back",
+    "CALL": "Call",
+    "MORE": "More",
+    "SEND_MESSAGE": "Send message",
+    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
+    "EXPIRATION_DATE": "Expiration Date",
+    "EXPIRATION_REASON": "Expiration Reason",
+    "LICENSE": "License",
+    "NEW_TOKEN": "New Token",
+    "OLD_TOKEN": "Old Token",
+    "SEND_EMAIL_TO": "Send Email To",
+    "TOKEN": "Token",
+    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
+    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
+    "WARNING": "Warning",
     "ERRORS": {
-      "NAME_REQUIRED": "Kohustuslik Väli"
+      "NAME_REQUIRED": "Mandatory Field"
     }
   }
 }
index c0ce982..c3cf8da 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Uuendage oma parooli",
-    "EMAIL_ADRESS": "E-posti aadress",
-    "PASSWORD": "Parool",
-    "PASSWORD_CONFIRM": "Parool (Kinnita)",
-    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
-    "GO_BACK": "Mine tagasi sisselogimise lehele",
-    "PASSWORD_RESET": "Parooli Uuendamine",
-    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
-    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
+    "TITLE": "Reset your password",
+    "EMAIL_ADRESS": "Email address",
+    "PASSWORD": "Password",
+    "PASSWORD_CONFIRM": "Password (Confirm)",
+    "UPDATE_PASSWORD": "RESET MY PASSWORD",
+    "GO_BACK": "Go back to login",
+    "PASSWORD_RESET": "Password Reset",
+    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
+    "PASSWORD_RESET_ERROR": "Password Reset Error",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
-      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
-      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
-      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
-      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "Email field is required",
+      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
+      "PASSWORD_REQUIRED": "Password field is required",
+      "CONFIRM_NOT_MATCH": "The passwords don't match",
+      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index 6163d63..42e6dc6 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.eda3ad8b.js"></script>
+  <script src="scripts/app.4f52941f.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 54%
rename from public/scripts/app.eda3ad8b.js
rename to public/scripts/app.4f52941f.js
index 060f94b..be97267 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(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")})}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 n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},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,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;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.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},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(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,$)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(){I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"}function $(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,F())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(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})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){P()?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.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && 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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{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,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(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")})}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 s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,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 n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},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.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,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,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,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,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(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId: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.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(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.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(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})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(P()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\',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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="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/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && 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">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 0e5662e..7cf4f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc122=['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','exports','VIRTUAL','getDataValue','action','STRING','integration','motionbar','jscripty','browser','bot'];(function(_0x1774f5,_0x348352){var _0x3d9462=function(_0x39c72a){while(--_0x39c72a){_0x1774f5['push'](_0x1774f5['shift']());}};_0x3d9462(++_0x348352);}(_0xc122,0x149));var _0x2c12=function(_0x3fc803,_0x4fb04a){_0x3fc803=_0x3fc803-0x0;var _0x17cd8c=_0xc122[_0x3fc803];return _0x17cd8c;};'use strict';var Sequelize=require(_0x2c12('0x0'));module[_0x2c12('0x1')]={'name':{'type':Sequelize[_0x2c12('0x2')],'get':function(_0x403c0d){return this[_0x2c12('0x3')](_0x2c12('0x4'));}},'action':{'type':Sequelize[_0x2c12('0x5')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x2c12('0x6'),_0x2c12('0x7'),_0x2c12('0x8'),'urlForward',_0x2c12('0x9'),_0x2c12('0xa'),'script']],'msg':_0x2c12('0xb')}},'comment':_0x2c12('0xb')},'data1':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comment':_0x2c12('0xc')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x2c12('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x2c12('0xe')},'data4':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comments':_0x2c12('0xf')},'data5':{'type':Sequelize[_0x2c12('0x5')](0x1000),'comments':_0x2c12('0x10')},'data6':{'type':Sequelize[_0x2c12('0x5')],'comments':_0x2c12('0x11')},'data7':{'type':Sequelize[_0x2c12('0x12')],'comments':_0x2c12('0x13')}};
\ No newline at end of file
+var _0x786e=['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[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[headers],\x20browser[wsindowHeight]','exports','VIRTUAL','STRING','contactManager','integration','motionbar'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x786e,0x11a));var _0xe786=function(_0x417774,_0x1b95e6){_0x417774=_0x417774-0x0;var _0x10015d=_0x786e[_0x417774];return _0x10015d;};'use strict';var Sequelize=require('sequelize');module[_0xe786('0x0')]={'name':{'type':Sequelize[_0xe786('0x1')],'get':function(_0x39a132){return this['getDataValue']('action');}},'action':{'type':Sequelize[_0xe786('0x2')],'allowNull':![],'validate':{'isIn':{'args':[[_0xe786('0x3'),_0xe786('0x4'),_0xe786('0x5'),_0xe786('0x6'),_0xe786('0x7'),_0xe786('0x8'),_0xe786('0x9'),_0xe786('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xe786('0xb')},'data1':{'type':Sequelize[_0xe786('0x2')](0x1000),'comment':_0xe786('0xc')},'data2':{'type':Sequelize[_0xe786('0x2')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0xe786('0x2')](0x1000),'comment':_0xe786('0xd')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0xe786('0xe')},'data5':{'type':Sequelize[_0xe786('0x2')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize['STRING'],'comments':_0xe786('0xf')},'data7':{'type':Sequelize['TEXT'],'comments':'urlForward[body]'}};
\ No newline at end of file
index 4e35996..927d40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x856c=['offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','error','stack','name','send','body','Action','find','catch','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json'];(function(_0x590f0d,_0x4cd02b){var _0x47a948=function(_0x54a10d){while(--_0x54a10d){_0x590f0d['push'](_0x590f0d['shift']());}};_0x47a948(++_0x4cd02b);}(_0x856c,0x68));var _0xc856=function(_0x548003,_0x40987c){_0x548003=_0x548003-0x0;var _0x3b29a7=_0x856c[_0x548003];return _0x3b29a7;};'use strict';var emlformat=require(_0xc856('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc856('0x1'));var jsonpatch=require(_0xc856('0x2'));var rp=require(_0xc856('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc856('0x4'));var path=require(_0xc856('0x5'));var sox=require(_0xc856('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc856('0x7'));var _=require('lodash');var squel=require(_0xc856('0x8'));var crypto=require('crypto');var jsforce=require(_0xc856('0x9'));var deskjs=require(_0xc856('0xa'));var toCsv=require(_0xc856('0xb'));var querystring=require(_0xc856('0xc'));var Papa=require('papaparse');var Redis=require(_0xc856('0xd'));var authService=require(_0xc856('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc856('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc856('0x10'))(_0xc856('0x11'));var utils=require(_0xc856('0x12'));var config=require(_0xc856('0x13'));var licenseUtil=require(_0xc856('0x14'));var db=require(_0xc856('0x15'))['db'];function respondWithStatusCode(_0x441f09,_0x20276f){_0x20276f=_0x20276f||0xcc;return function(_0x3b6c74){if(_0x3b6c74){return _0x441f09['sendStatus'](_0x20276f);}return _0x441f09[_0xc856('0x16')](_0x20276f)[_0xc856('0x17')]();};}function respondWithResult(_0x14325e,_0x323976){_0x323976=_0x323976||0xc8;return function(_0x26da49){if(_0x26da49){return _0x14325e[_0xc856('0x16')](_0x323976)[_0xc856('0x18')](_0x26da49);}};}function respondWithFilteredResult(_0x195bd2,_0xb7a447){return function(_0x4b28cf){if(_0x4b28cf){var _0x382d2f=typeof _0xb7a447[_0xc856('0x19')]===_0xc856('0x1a')&&typeof _0xb7a447['limit']===_0xc856('0x1a');var _0x7d5e96=_0x4b28cf['count'];var _0xb9e1ab=_0x382d2f?0x0:_0xb7a447[_0xc856('0x19')];var _0x1eec01=_0x382d2f?_0x4b28cf[_0xc856('0x1b')]:_0xb7a447[_0xc856('0x19')]+_0xb7a447[_0xc856('0x1c')];var _0x4f7394;if(_0x1eec01>=_0x7d5e96){_0x1eec01=_0x7d5e96;_0x4f7394=0xc8;}else{_0x4f7394=0xce;}_0x195bd2['status'](_0x4f7394);return _0x195bd2['set'](_0xc856('0x1d'),_0xb9e1ab+'-'+_0x1eec01+'/'+_0x7d5e96)[_0xc856('0x18')](_0x4b28cf);}return null;};}function patchUpdates(_0x3a6455){return function(_0x40f369){try{jsonpatch[_0xc856('0x1e')](_0x40f369,_0x3a6455,!![]);}catch(_0x392ce7){return BPromise['reject'](_0x392ce7);}return _0x40f369[_0xc856('0x1f')]();};}function saveUpdates(_0x176f43,_0x4295ce){return function(_0x3f18b8){if(_0x3f18b8){return _0x3f18b8[_0xc856('0x20')](_0x176f43)[_0xc856('0x21')](function(_0x5f0405){return _0x5f0405;});}return null;};}function removeEntity(_0x107445,_0x43f356){return function(_0x57b29b){if(_0x57b29b){return _0x57b29b[_0xc856('0x22')]()[_0xc856('0x21')](function(){_0x107445[_0xc856('0x16')](0xcc)[_0xc856('0x17')]();});}};}function handleEntityNotFound(_0x36d497,_0x4996d5){return function(_0x7fb3c8){if(!_0x7fb3c8){_0x36d497['sendStatus'](0x194);}return _0x7fb3c8;};}function handleError(_0x3c040e,_0xa39a36){_0xa39a36=_0xa39a36||0x1f4;return function(_0x2bc014){logger[_0xc856('0x23')](_0x2bc014[_0xc856('0x24')]);if(_0x2bc014[_0xc856('0x25')]){delete _0x2bc014[_0xc856('0x25')];}_0x3c040e[_0xc856('0x16')](_0xa39a36)[_0xc856('0x26')](_0x2bc014);};}exports[_0xc856('0x20')]=function(_0x553c87,_0x1341c6){if(_0x553c87['body']['id']){delete _0x553c87[_0xc856('0x27')]['id'];}return db[_0xc856('0x28')][_0xc856('0x29')]({'where':{'id':_0x553c87['params']['id']}})[_0xc856('0x21')](handleEntityNotFound(_0x1341c6,null))['then'](saveUpdates(_0x553c87[_0xc856('0x27')],null))[_0xc856('0x21')](respondWithResult(_0x1341c6,null))[_0xc856('0x2a')](handleError(_0x1341c6,null));};exports['destroy']=function(_0x399cd0,_0x4426ab){return db['Action'][_0xc856('0x29')]({'where':{'id':_0x399cd0['params']['id']}})[_0xc856('0x21')](handleEntityNotFound(_0x4426ab,null))['then'](removeEntity(_0x4426ab,null))[_0xc856('0x2a')](handleError(_0x4426ab,null));};
\ No newline at end of file
+var _0x03a1=['find','params','catch','destroy','rimraf','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','then','error','name','send','update','Action'];(function(_0x14034f,_0xb09719){var _0x13719f=function(_0x581986){while(--_0x581986){_0x14034f['push'](_0x14034f['shift']());}};_0x13719f(++_0xb09719);}(_0x03a1,0xa4));var _0x103a=function(_0x3e09be,_0x52bf4a){_0x3e09be=_0x3e09be-0x0;var _0x3ced17=_0x03a1[_0x3e09be];return _0x3ced17;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x103a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x103a('0x1'));var Mustache=require(_0x103a('0x2'));var util=require('util');var path=require(_0x103a('0x3'));var sox=require('sox');var csv=require(_0x103a('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x103a('0x5'));var _=require(_0x103a('0x6'));var squel=require(_0x103a('0x7'));var crypto=require(_0x103a('0x8'));var jsforce=require(_0x103a('0x9'));var deskjs=require(_0x103a('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x103a('0xb'));var Redis=require('ioredis');var authService=require(_0x103a('0xc'));var qs=require(_0x103a('0xd'));var as=require(_0x103a('0xe'));var hardwareService=require(_0x103a('0xf'));var logger=require(_0x103a('0x10'))(_0x103a('0x11'));var utils=require('../../config/utils');var config=require(_0x103a('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x560bf3,_0x35d2ee){_0x35d2ee=_0x35d2ee||0xcc;return function(_0x3f429c){if(_0x3f429c){return _0x560bf3[_0x103a('0x13')](_0x35d2ee);}return _0x560bf3[_0x103a('0x14')](_0x35d2ee)[_0x103a('0x15')]();};}function respondWithResult(_0x87f219,_0x101fb7){_0x101fb7=_0x101fb7||0xc8;return function(_0x1afe0d){if(_0x1afe0d){return _0x87f219[_0x103a('0x14')](_0x101fb7)[_0x103a('0x16')](_0x1afe0d);}};}function respondWithFilteredResult(_0xb86302,_0x5c64b6){return function(_0x413ee8){if(_0x413ee8){var _0x54c2fb=typeof _0x5c64b6[_0x103a('0x17')]===_0x103a('0x18')&&typeof _0x5c64b6[_0x103a('0x19')]==='undefined';var _0x2809d0=_0x413ee8['count'];var _0x4a0c12=_0x54c2fb?0x0:_0x5c64b6[_0x103a('0x17')];var _0x56ddca=_0x54c2fb?_0x413ee8['count']:_0x5c64b6[_0x103a('0x17')]+_0x5c64b6['limit'];var _0x59c0e7;if(_0x56ddca>=_0x2809d0){_0x56ddca=_0x2809d0;_0x59c0e7=0xc8;}else{_0x59c0e7=0xce;}_0xb86302[_0x103a('0x14')](_0x59c0e7);return _0xb86302[_0x103a('0x1a')](_0x103a('0x1b'),_0x4a0c12+'-'+_0x56ddca+'/'+_0x2809d0)[_0x103a('0x16')](_0x413ee8);}return null;};}function patchUpdates(_0x55493a){return function(_0x3d46af){try{jsonpatch['apply'](_0x3d46af,_0x55493a,!![]);}catch(_0x91081){return BPromise[_0x103a('0x1c')](_0x91081);}return _0x3d46af[_0x103a('0x1d')]();};}function saveUpdates(_0x6c485,_0x61b2e5){return function(_0x51511a){if(_0x51511a){return _0x51511a['update'](_0x6c485)[_0x103a('0x1e')](function(_0x5660c4){return _0x5660c4;});}return null;};}function removeEntity(_0xa636da,_0x3a0437){return function(_0x10ee91){if(_0x10ee91){return _0x10ee91['destroy']()[_0x103a('0x1e')](function(){_0xa636da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc29b16,_0x5c67f1){return function(_0x64ebf){if(!_0x64ebf){_0xc29b16['sendStatus'](0x194);}return _0x64ebf;};}function handleError(_0x20b63d,_0x4e8713){_0x4e8713=_0x4e8713||0x1f4;return function(_0x224825){logger[_0x103a('0x1f')](_0x224825['stack']);if(_0x224825[_0x103a('0x20')]){delete _0x224825['name'];}_0x20b63d[_0x103a('0x14')](_0x4e8713)[_0x103a('0x21')](_0x224825);};}exports[_0x103a('0x22')]=function(_0x414bfd,_0x5a224e){if(_0x414bfd['body']['id']){delete _0x414bfd['body']['id'];}return db[_0x103a('0x23')][_0x103a('0x24')]({'where':{'id':_0x414bfd[_0x103a('0x25')]['id']}})['then'](handleEntityNotFound(_0x5a224e,null))[_0x103a('0x1e')](saveUpdates(_0x414bfd['body'],null))['then'](respondWithResult(_0x5a224e,null))[_0x103a('0x26')](handleError(_0x5a224e,null));};exports[_0x103a('0x27')]=function(_0x6b5306,_0x4a787e){return db[_0x103a('0x23')][_0x103a('0x24')]({'where':{'id':_0x6b5306[_0x103a('0x25')]['id']}})[_0x103a('0x1e')](handleEntityNotFound(_0x4a787e,null))['then'](removeEntity(_0x4a787e,null))[_0x103a('0x26')](handleError(_0x4a787e,null));};
\ No newline at end of file
index 1944736..d6ce013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1903=['define','Action','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./action.attributes'];(function(_0x27da33,_0x3ffbe7){var _0x1f9d9c=function(_0x359c2f){while(--_0x359c2f){_0x27da33['push'](_0x27da33['shift']());}};_0x1f9d9c(++_0x3ffbe7);}(_0x1903,0x7a));var _0x3190=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1903[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3190('0x0'));var logger=require(_0x3190('0x1'))(_0x3190('0x2'));var moment=require(_0x3190('0x3'));var BPromise=require(_0x3190('0x4'));var rp=require(_0x3190('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3190('0x6'));var attributes=require(_0x3190('0x7'));module['exports']=function(_0x4ba830,_0x231f63){return _0x4ba830[_0x3190('0x8')](_0x3190('0x9'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc71=['bluebird','request-promise','path','rimraf','./action.attributes','exports','define','Action','util','api','moment'];(function(_0x53dd37,_0x12f862){var _0x267a7c=function(_0x69c2cb){while(--_0x69c2cb){_0x53dd37['push'](_0x53dd37['shift']());}};_0x267a7c(++_0x12f862);}(_0xfc71,0xd9));var _0x1fc7=function(_0x45f4e9,_0x5246fd){_0x45f4e9=_0x45f4e9-0x0;var _0x559d8f=_0xfc71[_0x45f4e9];return _0x559d8f;};'use strict';var _=require('lodash');var util=require(_0x1fc7('0x0'));var logger=require('../../config/logger')(_0x1fc7('0x1'));var moment=require(_0x1fc7('0x2'));var BPromise=require(_0x1fc7('0x3'));var rp=require(_0x1fc7('0x4'));var fs=require('fs');var path=require(_0x1fc7('0x5'));var rimraf=require(_0x1fc7('0x6'));var config=require('../../config/environment');var attributes=require(_0x1fc7('0x7'));module[_0x1fc7('0x8')]=function(_0x354384,_0x3f4bd0){return _0x354384[_0x1fc7('0x9')](_0x1fc7('0xa'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ff3eb50..60e9494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1cb9,0x14e));var _0x91cb=function(_0x37436c,_0x2b7cda){_0x37436c=_0x37436c-0x0;var _0x2fed8c=_0x1cb9[_0x37436c];return _0x2fed8c;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x4441f3,_0x3f6955){var _0x3183e8=function(_0x2475c0){while(--_0x2475c0){_0x4441f3['push'](_0x4441f3['shift']());}};_0x3183e8(++_0x3f6955);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xc4aa[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 324f049..54d5f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e49=['put','/:id','isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x153dfe,_0x1b55b2){var _0x11fc9b=function(_0x3a1759){while(--_0x3a1759){_0x153dfe['push'](_0x153dfe['shift']());}};_0x11fc9b(++_0x1b55b2);}(_0x0e49,0x166));var _0x90e4=function(_0x3ebff1,_0x1302d6){_0x3ebff1=_0x3ebff1-0x0;var _0x551748=_0x0e49[_0x3ebff1];return _0x551748;};'use strict';var multer=require(_0x90e4('0x0'));var util=require(_0x90e4('0x1'));var path=require(_0x90e4('0x2'));var timeout=require(_0x90e4('0x3'));var express=require(_0x90e4('0x4'));var router=express[_0x90e4('0x5')]();var fs_extra=require(_0x90e4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x90e4('0x7'));var config=require(_0x90e4('0x8'));var controller=require(_0x90e4('0x9'));router[_0x90e4('0xa')](_0x90e4('0xb'),auth[_0x90e4('0xc')](),controller[_0x90e4('0xd')]);router[_0x90e4('0xe')](_0x90e4('0xb'),auth[_0x90e4('0xc')](),controller[_0x90e4('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xe39a=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./action.controller','put','update','isAuthenticated'];(function(_0x1d9d3d,_0x5d8041){var _0x879263=function(_0x4567e7){while(--_0x4567e7){_0x1d9d3d['push'](_0x1d9d3d['shift']());}};_0x879263(++_0x5d8041);}(_0xe39a,0x71));var _0xae39=function(_0x14e6f8,_0x582933){_0x14e6f8=_0x14e6f8-0x0;var _0x2a0070=_0xe39a[_0x14e6f8];return _0x2a0070;};'use strict';var multer=require(_0xae39('0x0'));var util=require(_0xae39('0x1'));var path=require(_0xae39('0x2'));var timeout=require(_0xae39('0x3'));var express=require(_0xae39('0x4'));var router=express[_0xae39('0x5')]();var fs_extra=require(_0xae39('0x6'));var auth=require(_0xae39('0x7'));var interaction=require(_0xae39('0x8'));var config=require('../../config/environment');var controller=require(_0xae39('0x9'));router[_0xae39('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xae39('0xb')]);router['delete']('/:id',auth[_0xae39('0xc')](),controller[_0xae39('0xd')]);module['exports']=router;
\ No newline at end of file
index e26a1de..0bebe81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['TEXT','exports'];(function(_0x3b085,_0x250543){var _0x476a57=function(_0x480941){while(--_0x480941){_0x3b085['push'](_0x3b085['shift']());}};_0x476a57(++_0x250543);}(_0x8958,0x93));var _0x8895=function(_0x5b7b33,_0x393697){_0x5b7b33=_0x5b7b33-0x0;var _0x196655=_0x8958[_0x5b7b33];return _0x196655;};'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
+var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x223523,_0x18e6df){var _0x319eb5=function(_0x3a23bf){while(--_0x3a23bf){_0x223523['push'](_0x223523['shift']());}};_0x319eb5(++_0x18e6df);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5c79fc,_0xe3621f){_0x5c79fc=_0x5c79fc-0x0;var _0x4428ee=_0x3eea[_0x5c79fc];return _0x4428ee;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3ee('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa3ee('0x1')]},'parent':{'type':Sequelize[_0xa3ee('0x1')]},'table':{'type':Sequelize[_0xa3ee('0x1')]},'conditions':{'type':Sequelize[_0xa3ee('0x2')]},'joins':{'type':Sequelize[_0xa3ee('0x2')]}};
\ No newline at end of file
index 2705432..eebd6bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae6=['sequelize','SELECT','join','cross_join','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','Sequelize','from','MetricId','output','web','%s-%s.%s','randomstring','generate','AnalyticExtractedReport','cdr','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','QueryTypes','run','runReport','ROUND(%s)','keyBy','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','CustomReports','sendStatus','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','length','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','left_join','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','operator','rules','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xeae6,0xc3));var _0x6eae=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeae6[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x6eae('0x0'));var rimraf=require(_0x6eae('0x1'));var zipdir=require(_0x6eae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6eae('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6eae('0x4'));var util=require(_0x6eae('0x5'));var path=require(_0x6eae('0x6'));var sox=require(_0x6eae('0x7'));var csv=require(_0x6eae('0x8'));var ejs=require(_0x6eae('0x9'));var fs=require('fs');var fs_extra=require(_0x6eae('0xa'));var _=require(_0x6eae('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6eae('0xc'));var deskjs=require(_0x6eae('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6eae('0xe'));var Papa=require(_0x6eae('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6eae('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6eae('0x11'));var utils=require(_0x6eae('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6eae('0x13'));var db=require(_0x6eae('0x14'))['db'];var dbH=require(_0x6eae('0x14'))[_0x6eae('0x15')];function respondWithStatusCode(_0x118bc0,_0x1d86ac){_0x1d86ac=_0x1d86ac||0xcc;return function(_0x18f2ee){if(_0x18f2ee){return _0x118bc0['sendStatus'](_0x1d86ac);}return _0x118bc0[_0x6eae('0x16')](_0x1d86ac)[_0x6eae('0x17')]();};}function respondWithResult(_0x147b90,_0x275024){_0x275024=_0x275024||0xc8;return function(_0x18c008){if(_0x18c008){return _0x147b90[_0x6eae('0x16')](_0x275024)[_0x6eae('0x18')](_0x18c008);}};}function respondWithFilteredResult(_0x350393,_0x1157c1){return function(_0x18cb2d){if(_0x18cb2d){var _0x36b0fd=typeof _0x1157c1[_0x6eae('0x19')]===_0x6eae('0x1a')&&typeof _0x1157c1[_0x6eae('0x1b')]===_0x6eae('0x1a');var _0x455a62=_0x18cb2d[_0x6eae('0x1c')];var _0x220e49=_0x36b0fd?0x0:_0x1157c1[_0x6eae('0x19')];var _0x227e4d=_0x36b0fd?_0x18cb2d[_0x6eae('0x1c')]:_0x1157c1[_0x6eae('0x19')]+_0x1157c1[_0x6eae('0x1b')];var _0x1834b8;if(_0x227e4d>=_0x455a62){_0x227e4d=_0x455a62;_0x1834b8=0xc8;}else{_0x1834b8=0xce;}_0x350393[_0x6eae('0x16')](_0x1834b8);return _0x350393[_0x6eae('0x1d')](_0x6eae('0x1e'),_0x220e49+'-'+_0x227e4d+'/'+_0x455a62)[_0x6eae('0x18')](_0x18cb2d);}return null;};}function patchUpdates(_0x4ecd58){return function(_0x2ca50c){try{jsonpatch[_0x6eae('0x1f')](_0x2ca50c,_0x4ecd58,!![]);}catch(_0xbf38cc){return BPromise[_0x6eae('0x20')](_0xbf38cc);}return _0x2ca50c[_0x6eae('0x21')]();};}function saveUpdates(_0x1b3061,_0x5a43c1){return function(_0x1d89c4){if(_0x1d89c4){return _0x1d89c4[_0x6eae('0x22')](_0x1b3061)[_0x6eae('0x23')](function(_0x15adf2){return _0x15adf2;});}return null;};}function removeEntity(_0x39e6d0,_0x4468db){return function(_0x4367eb){if(_0x4367eb){return _0x4367eb[_0x6eae('0x24')]()[_0x6eae('0x23')](function(){var _0x34b2b8=_0x4367eb['get']({'plain':!![]});var _0x15628e=_0x6eae('0x25');return db['UserProfileResource'][_0x6eae('0x24')]({'where':{'type':_0x15628e,'resourceId':_0x34b2b8['id']}})['then'](function(){return _0x4367eb;});})[_0x6eae('0x23')](function(){_0x39e6d0['status'](0xcc)[_0x6eae('0x17')]();});}};}function handleEntityNotFound(_0x3242b1,_0x152cb3){return function(_0x399b1e){if(!_0x399b1e){_0x3242b1[_0x6eae('0x26')](0x194);}return _0x399b1e;};}function handleError(_0x18e50b,_0x501143){_0x501143=_0x501143||0x1f4;return function(_0x4d1253){logger[_0x6eae('0x27')](_0x4d1253['stack']);if(_0x4d1253['name']){delete _0x4d1253[_0x6eae('0x28')];}_0x18e50b['status'](_0x501143)[_0x6eae('0x29')](_0x4d1253);};}exports[_0x6eae('0x2a')]=function(_0x4b3bb6,_0x5931fc){var _0x433c13={},_0x510800={},_0x3421a7={'count':0x0,'rows':[]};var _0x32a0ea=_[_0x6eae('0x2b')](db[_0x6eae('0x2c')][_0x6eae('0x2d')],function(_0x33bd3a){return{'name':_0x33bd3a[_0x6eae('0x2e')],'type':_0x33bd3a['type'][_0x6eae('0x2f')]};});_0x510800[_0x6eae('0x30')]=_[_0x6eae('0x2b')](_0x32a0ea,_0x6eae('0x28'));_0x510800[_0x6eae('0x31')]=_[_0x6eae('0x32')](_0x4b3bb6[_0x6eae('0x31')]);_0x510800['filters']=_[_0x6eae('0x33')](_0x510800[_0x6eae('0x30')],_0x510800[_0x6eae('0x31')]);_0x433c13['attributes']=_['intersection'](_0x510800[_0x6eae('0x30')],qs[_0x6eae('0x34')](_0x4b3bb6['query'][_0x6eae('0x34')]));_0x433c13[_0x6eae('0x35')]=_0x433c13[_0x6eae('0x35')]['length']?_0x433c13[_0x6eae('0x35')]:_0x510800[_0x6eae('0x30')];if(!_0x4b3bb6[_0x6eae('0x31')]['hasOwnProperty']('nolimit')){_0x433c13['limit']=qs['limit'](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x1b')]);_0x433c13[_0x6eae('0x19')]=qs[_0x6eae('0x19')](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x19')]);}_0x433c13[_0x6eae('0x36')]=qs['sort'](_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x37')]);_0x433c13[_0x6eae('0x38')]=qs[_0x6eae('0x39')](_[_0x6eae('0x3a')](_0x4b3bb6['query'],_0x510800['filters']),_0x32a0ea);if(_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x3b')]){_0x433c13[_0x6eae('0x38')]=_[_0x6eae('0x3c')](_0x433c13[_0x6eae('0x38')],{'$or':_[_0x6eae('0x2b')](_0x32a0ea,function(_0x17a4a6){if(_0x17a4a6[_0x6eae('0x3d')]!==_0x6eae('0x3e')){var _0x36eb46={};_0x36eb46[_0x17a4a6[_0x6eae('0x28')]]={'$like':'%'+_0x4b3bb6['query'][_0x6eae('0x3b')]+'%'};return _0x36eb46;}})});}_0x433c13=_[_0x6eae('0x3c')]({},_0x433c13,_0x4b3bb6['options']);var _0x38b269={'where':_0x433c13['where']};return db[_0x6eae('0x2c')][_0x6eae('0x1c')](_0x38b269)['then'](function(_0x5b53eb){_0x3421a7[_0x6eae('0x1c')]=_0x5b53eb;if(_0x4b3bb6[_0x6eae('0x31')][_0x6eae('0x3f')]){_0x433c13[_0x6eae('0x40')]=[{'all':!![]}];}return db[_0x6eae('0x2c')][_0x6eae('0x41')](_0x433c13);})[_0x6eae('0x23')](function(_0x579b68){_0x3421a7[_0x6eae('0x42')]=_0x579b68;return _0x3421a7;})[_0x6eae('0x23')](respondWithFilteredResult(_0x5931fc,_0x433c13))[_0x6eae('0x43')](handleError(_0x5931fc,null));};exports[_0x6eae('0x44')]=function(_0xf7c81f,_0x3fa6e6){var _0x4ab749={'raw':![],'where':{'id':_0xf7c81f['params']['id']}},_0x268632={};_0x268632[_0x6eae('0x30')]=_[_0x6eae('0x32')](db[_0x6eae('0x2c')][_0x6eae('0x2d')]);_0x268632[_0x6eae('0x31')]=_['keys'](_0xf7c81f[_0x6eae('0x31')]);_0x268632[_0x6eae('0x39')]=_['intersection'](_0x268632[_0x6eae('0x30')],_0x268632['query']);_0x4ab749[_0x6eae('0x35')]=_['intersection'](_0x268632['model'],qs[_0x6eae('0x34')](_0xf7c81f[_0x6eae('0x31')][_0x6eae('0x34')]));_0x4ab749['attributes']=_0x4ab749[_0x6eae('0x35')][_0x6eae('0x45')]?_0x4ab749['attributes']:_0x268632[_0x6eae('0x30')];if(_0xf7c81f[_0x6eae('0x31')]['includeAll']){_0x4ab749[_0x6eae('0x40')]=[{'all':!![]}];}_0x4ab749=_[_0x6eae('0x3c')]({},_0x4ab749,_0xf7c81f[_0x6eae('0x46')]);return db[_0x6eae('0x2c')]['find'](_0x4ab749)[_0x6eae('0x23')](handleEntityNotFound(_0x3fa6e6,null))[_0x6eae('0x23')](respondWithResult(_0x3fa6e6,null))['catch'](handleError(_0x3fa6e6,null));};exports['create']=function(_0x2ff08e,_0x2adfcd){return db[_0x6eae('0x2c')][_0x6eae('0x47')](_0x2ff08e[_0x6eae('0x48')],{})['then'](function(_0x3644a0){var _0x1fb293=_0x2ff08e[_0x6eae('0x49')][_0x6eae('0x4a')]({'plain':!![]});if(!_0x1fb293)throw new Error(_0x6eae('0x4b'));if(_0x1fb293['role']===_0x6eae('0x49')){var _0xd6d447=_0x3644a0[_0x6eae('0x4a')]({'plain':!![]});var _0x4dfbca=_0x6eae('0x4c');return db['UserProfileSection'][_0x6eae('0x4d')]({'where':{'name':_0x4dfbca,'userProfileId':_0x1fb293[_0x6eae('0x4e')]},'raw':!![]})[_0x6eae('0x23')](function(_0x570ea3){if(_0x570ea3&&_0x570ea3[_0x6eae('0x4f')]===0x0){return db[_0x6eae('0x50')]['create']({'name':_0xd6d447['name'],'resourceId':_0xd6d447['id'],'type':_0x6eae('0x25'),'sectionId':_0x570ea3['id']},{})[_0x6eae('0x23')](function(){return _0x3644a0;});}else{return _0x3644a0;}})[_0x6eae('0x43')](function(_0x22cce2){logger[_0x6eae('0x27')](_0x6eae('0x51'),_0x22cce2);throw _0x22cce2;});}return _0x3644a0;})['then'](respondWithResult(_0x2adfcd,0xc9))['catch'](handleError(_0x2adfcd,null));};exports[_0x6eae('0x22')]=function(_0x3cdc31,_0x4358d7){if(_0x3cdc31[_0x6eae('0x48')]['id']){delete _0x3cdc31[_0x6eae('0x48')]['id'];}return db[_0x6eae('0x2c')][_0x6eae('0x4d')]({'where':{'id':_0x3cdc31[_0x6eae('0x52')]['id']}})[_0x6eae('0x23')](handleEntityNotFound(_0x4358d7,null))[_0x6eae('0x23')](saveUpdates(_0x3cdc31[_0x6eae('0x48')],null))[_0x6eae('0x23')](respondWithResult(_0x4358d7,null))['catch'](handleError(_0x4358d7,null));};exports[_0x6eae('0x24')]=function(_0x45922a,_0x435c89){return db['AnalyticCustomReport'][_0x6eae('0x4d')]({'where':{'id':_0x45922a['params']['id']}})[_0x6eae('0x23')](handleEntityNotFound(_0x435c89,null))[_0x6eae('0x23')](removeEntity(_0x435c89,null))[_0x6eae('0x43')](handleError(_0x435c89,null));};exports['preview']=function(_0x16d57a,_0x315f29){var _0xe312bd=0xa;var _0x45a9e6=['join',_0x6eae('0x53'),_0x6eae('0x54'),'cross_join'];var _0x4fca10={'SUM':_0x6eae('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x6eae('0x56'),'MAX':_0x6eae('0x57'),'MIN':_0x6eae('0x58'),'AVG':_0x6eae('0x59'),'GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x4568b4={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':'DATE(%s)','HOUR':_0x6eae('0x5d'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x30a4a=function(_0x3af90c){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),_0x6eae('0x62'),'IS\x20NOT\x20EMPTY'],_0x3af90c);};var _0xb9f0a1=function(_0x1e97ad){if(!_0x1e97ad||!_0x1e97ad['rules'][_0x6eae('0x45')]){return'';}for(var _0x6af0ba='(',_0x33086e=0x0;_0x33086e<_0x1e97ad['rules'][_0x6eae('0x45')];_0x33086e+=0x1){_0x33086e>0x0&&(_0x6af0ba+='\x20'+_0x1e97ad[_0x6eae('0x63')]+'\x20');_0x6af0ba+=_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x65')]?_0xb9f0a1(_0x1e97ad[_0x6eae('0x64')][_0x33086e]['group']):_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x66')]+'\x20'+_0x1e97ad[_0x6eae('0x64')][_0x33086e][_0x6eae('0x67')]+(_0x30a4a(_0x1e97ad[_0x6eae('0x64')][_0x33086e]['condition'])?'\x20'+_0x1e97ad[_0x6eae('0x64')][_0x33086e]['value']:'');}return _0x6af0ba+')';};var _0x27b20d={'where':{'id':_0x16d57a[_0x6eae('0x52')]['id']}},_0x5356ab,_0x532118,_0x285b58,_0x3e8d10,_0xa895f8;_0x27b20d=_[_0x6eae('0x3c')]({},_0x27b20d,_0x16d57a[_0x6eae('0x46')]);return db[_0x6eae('0x2c')][_0x6eae('0x4d')](_0x27b20d)['then'](function(_0x4f94ab){if(_0x4f94ab){_0x5356ab=_0x4f94ab;return _0x4f94ab[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x4adfaa){if(_0x4adfaa){if(!_0x4adfaa[_0x6eae('0x45')]){throw new db['Sequelize'][(_0x6eae('0x69'))](_0x6eae('0x6a'),0x193);}_0x532118=_0x4adfaa;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0xdb991c){if(_0xdb991c){_0x285b58=_['keyBy'](_0xdb991c,'id');var _0xe741e0;var _0xa42ac7=squel[_0x6eae('0x6c')]();_0xa42ac7['from'](_0x5356ab['table']);for(var _0x422ac1=0x0;_0x422ac1<_0x532118[_0x6eae('0x45')];_0x422ac1+=0x1){_0xe741e0=_0x532118[_0x422ac1]['MetricId']?_0x285b58[_0x532118[_0x422ac1]['MetricId']][_0x6eae('0x6d')]:_0x532118[_0x422ac1][_0x6eae('0x66')];_0xe741e0=_0x532118[_0x422ac1][_0x6eae('0x6e')]?_[_0x6eae('0x6f')](_0x4fca10[_0x532118[_0x422ac1]['function']],'%s',_0xe741e0):_0xe741e0;_0xe741e0=_0x532118[_0x422ac1][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x4568b4[_0x532118[_0x422ac1]['format']],'%s',_0xe741e0):_0xe741e0;if(_0x532118[_0x422ac1][_0x6eae('0x71')]){_0xa42ac7[_0x6eae('0x65')](_0xe741e0);}_0x532118[_0x422ac1][_0x6eae('0x72')]&&_0xa42ac7[_0x6eae('0x36')](_0xe741e0,_0x532118[_0x422ac1][_0x6eae('0x72')]===_0x6eae('0x73')?![]:!![]);_0xa42ac7[_0x6eae('0x66')](_0xe741e0,_0x532118[_0x422ac1][_0x6eae('0x74')]||_0xe741e0);}if(_0x5356ab[_0x6eae('0x75')]){_0x5356ab[_0x6eae('0x75')]=JSON[_0x6eae('0x76')](_0x5356ab[_0x6eae('0x75')]);for(var _0x162ae7=0x0;_0x162ae7<_0x5356ab[_0x6eae('0x75')][_0x6eae('0x45')];_0x162ae7+=0x1){if(_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x3d')]&&_['includes'](_0x45a9e6,_0x5356ab[_0x6eae('0x75')][_0x162ae7]['type'])&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x77')]&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x78')]&&_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x79')]){_0xa42ac7[_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x3d')]](_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x78')],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x5356ab[_0x6eae('0x7b')],_0x5356ab[_0x6eae('0x75')][_0x162ae7]['parentKey'],_0x5356ab[_0x6eae('0x75')][_0x162ae7]['foreignTable'],_0x5356ab[_0x6eae('0x75')][_0x162ae7][_0x6eae('0x79')]));}}}if(_0x5356ab[_0x6eae('0x7c')]){_0x5356ab[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x5356ab[_0x6eae('0x7c')]);_0xa42ac7[_0x6eae('0x38')](_0xb9f0a1(_0x5356ab[_0x6eae('0x7c')][_0x6eae('0x65')]));}_0xa895f8=_0xa42ac7[_0x6eae('0x7d')]();_0xa42ac7[_0x6eae('0x1b')](_0xe312bd);_0xa42ac7[_0x6eae('0x19')](0x0);logger[_0x6eae('0x7e')](_0x6eae('0x7f'),_0xa42ac7[_0x6eae('0x80')]());return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0xa42ac7[_0x6eae('0x80')](),{'type':dbH['sequelize']['QueryTypes'][_0x6eae('0x82')]});}})['then'](respondWithResult(_0x315f29,null))[_0x6eae('0x43')](handleError(_0x315f29,null));};function runReport(_0x189e05,_0x486b4c,_0x1b7f76){var _0x2d7bde=_0x486b4c['name'];var _0x4b1992=0xa;var _0x2eeee4=[_0x6eae('0x83'),'left_join',_0x6eae('0x54'),_0x6eae('0x84')];var _0x341ddd={'SUM':_0x6eae('0x55'),'COUNT':_0x6eae('0x85'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x6eae('0x57'),'MIN':_0x6eae('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':_0x6eae('0x86'),'GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x5f3fa6={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':_0x6eae('0x87'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x588184=function(_0x53fac3){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),_0x6eae('0x62'),'IS\x20NOT\x20EMPTY'],_0x53fac3);};var _0x4323d7=function(_0x5158a2){if(!_0x5158a2||!_0x5158a2[_0x6eae('0x64')][_0x6eae('0x45')]){return'';}for(var _0x335b54='(',_0x527999=0x0;_0x527999<_0x5158a2['rules'][_0x6eae('0x45')];_0x527999+=0x1){_0x527999>0x0&&(_0x335b54+='\x20'+_0x5158a2[_0x6eae('0x63')]+'\x20');_0x335b54+=_0x5158a2[_0x6eae('0x64')][_0x527999]['group']?_0x4323d7(_0x5158a2['rules'][_0x527999][_0x6eae('0x65')]):_0x5158a2[_0x6eae('0x64')][_0x527999][_0x6eae('0x66')]+'\x20'+_0x5158a2[_0x6eae('0x64')][_0x527999][_0x6eae('0x67')]+(_0x588184(_0x5158a2['rules'][_0x527999][_0x6eae('0x67')])?'\x20'+_0x5158a2['rules'][_0x527999]['value']:'');}return _0x335b54+')';};var _0x2689d4={'where':{'id':_0x189e05['id']}},_0x486145,_0x224a01,_0x23eba8,_0x708638,_0x4107f0;_0x2689d4=_[_0x6eae('0x3c')]({},_0x2689d4,_0x1b7f76);return db[_0x6eae('0x2c')]['find'](_0x2689d4)[_0x6eae('0x23')](function(_0x196133){if(_0x196133){_0x486145=_0x196133;return _0x196133[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x4bc4de){if(_0x4bc4de){if(!_0x4bc4de[_0x6eae('0x45')]){throw new db[(_0x6eae('0x88'))][(_0x6eae('0x69'))](_0x6eae('0x6a'),0x193);}_0x224a01=_0x4bc4de;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0x1568b3){if(_0x1568b3){_0x23eba8=_['keyBy'](_0x1568b3,'id');var _0x1dff82;var _0x5e4ed0=squel[_0x6eae('0x6c')]();_0x5e4ed0[_0x6eae('0x89')](_0x486145[_0x6eae('0x7b')]);for(var _0x525b25=0x0;_0x525b25<_0x224a01[_0x6eae('0x45')];_0x525b25+=0x1){_0x1dff82=_0x224a01[_0x525b25]['MetricId']?_0x23eba8[_0x224a01[_0x525b25][_0x6eae('0x8a')]][_0x6eae('0x6d')]:_0x224a01[_0x525b25][_0x6eae('0x66')];_0x1dff82=_0x224a01[_0x525b25]['function']?_[_0x6eae('0x6f')](_0x341ddd[_0x224a01[_0x525b25]['function']],'%s',_0x1dff82):_0x1dff82;_0x1dff82=_0x224a01[_0x525b25][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x5f3fa6[_0x224a01[_0x525b25][_0x6eae('0x70')]],'%s',_0x1dff82):_0x1dff82;if(_0x224a01[_0x525b25][_0x6eae('0x71')]){_0x5e4ed0[_0x6eae('0x65')](_0x1dff82);}_0x224a01[_0x525b25][_0x6eae('0x72')]&&_0x5e4ed0[_0x6eae('0x36')](_0x1dff82,_0x224a01[_0x525b25]['orderBy']===_0x6eae('0x73')?![]:!![]);_0x5e4ed0['field'](_0x1dff82,_0x224a01[_0x525b25][_0x6eae('0x74')]||_0x1dff82);}if(_0x486145['joins']){_0x486145[_0x6eae('0x75')]=JSON['parse'](_0x486145[_0x6eae('0x75')]);for(var _0x507c62=0x0;_0x507c62<_0x486145[_0x6eae('0x75')][_0x6eae('0x45')];_0x507c62+=0x1){if(_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')]&&_['includes'](_0x2eeee4,_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')])&&_0x486145[_0x6eae('0x75')][_0x507c62]['parentKey']&&_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x78')]&&_0x486145[_0x6eae('0x75')][_0x507c62]['foreignKey']){_0x5e4ed0[_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x3d')]](_0x486145['joins'][_0x507c62][_0x6eae('0x78')],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x486145[_0x6eae('0x7b')],_0x486145['joins'][_0x507c62][_0x6eae('0x77')],_0x486145[_0x6eae('0x75')][_0x507c62][_0x6eae('0x78')],_0x486145[_0x6eae('0x75')][_0x507c62]['foreignKey']));}}}if(_0x486145[_0x6eae('0x7c')]){_0x486145[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x486145[_0x6eae('0x7c')]);_0x5e4ed0['where'](_0x4323d7(_0x486145[_0x6eae('0x7c')]['group']));}_0x4107f0=_0x5e4ed0[_0x6eae('0x7d')]();_0x5e4ed0['limit'](_0x4b1992);_0x5e4ed0[_0x6eae('0x19')](0x0);return;}})['then'](function(){if(_0x486b4c[_0x6eae('0x8b')]===_0x6eae('0x8c')){return null;}var _0x3d9412=_['merge'](_0x486b4c,{'name':_0x486b4c['fullPath']||_0x486b4c[_0x6eae('0x28')]||_0x486145['name'],'basename':_0x2d7bde,'savename':util[_0x6eae('0x70')](_0x6eae('0x8d'),_0x486b4c['name']||_0x486145['name'],require(_0x6eae('0x8e'))[_0x6eae('0x8f')](0x4),_0x486b4c[_0x6eae('0x8b')]||'csv'),'reportId':_0x486145['id'],'reportType':'custom'});return db[_0x6eae('0x90')][_0x6eae('0x47')](_0x3d9412,{'raw':!![]});})['then'](function(_0x1d639f){if(_0x486145[_0x6eae('0x7b')]===_0x6eae('0x91')){_0x4107f0[_0x6eae('0x38')](_0x486145[_0x6eae('0x7b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x486b4c[_0x6eae('0x92')],_0x486b4c[_0x6eae('0x93')]);}else{_0x4107f0[_0x6eae('0x38')](_0x486145[_0x6eae('0x7b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x486b4c[_0x6eae('0x92')],_0x486b4c[_0x6eae('0x93')]);}if(_0x1d639f){logger[_0x6eae('0x94')](_0x6eae('0x95'),_0x4107f0[_0x6eae('0x80')]());require(_0x6eae('0x96'))[_0x6eae('0x97')](path[_0x6eae('0x83')](__dirname,_0x6eae('0x98'),_0x1d639f['output']),[_0x1d639f['id'],_0x4107f0['toString'](),path[_0x6eae('0x83')](__dirname,_0x6eae('0x99'),_0x1d639f[_0x6eae('0x9a')]),_0x2d7bde]);return _0x1d639f;}else{var _0x20c13c=squel[_0x6eae('0x6c')]();_0x20c13c[_0x6eae('0x89')]('('+_0x4107f0[_0x6eae('0x80')]()+')',_0x6eae('0x9b'));_0x20c13c[_0x6eae('0x66')](_0x6eae('0x9c'),_0x6eae('0x1c'));_0x4107f0['limit'](_0x486b4c[_0x6eae('0x1b')]||_0x4b1992);_0x4107f0[_0x6eae('0x19')](_0x486b4c[_0x6eae('0x19')]||0x0);return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0x20c13c[_0x6eae('0x80')](),{'type':dbH[_0x6eae('0x81')]['QueryTypes'][_0x6eae('0x82')]})[_0x6eae('0x23')](function(_0x5644f9){if(!_0x5644f9[_0x6eae('0x45')]){_0x708638=0x0;}else{_0x708638=_0x5644f9[0x0][_0x6eae('0x1c')]||0x0;}return dbH[_0x6eae('0x81')]['query'](_0x4107f0[_0x6eae('0x80')](),{'type':dbH[_0x6eae('0x81')][_0x6eae('0x9d')]['SELECT']});})[_0x6eae('0x23')](function(_0x136f3){return{'rows':_0x136f3||[],'count':_0x708638};});}});}exports[_0x6eae('0x9e')]=function(_0x101e3d,_0x2f6a0b){return runReport(_0x101e3d[_0x6eae('0x52')],_0x101e3d[_0x6eae('0x31')],_0x101e3d['options'])[_0x6eae('0x23')](respondWithResult(_0x2f6a0b,null))[_0x6eae('0x43')](handleError(_0x2f6a0b,null));};exports[_0x6eae('0x9f')]=runReport;exports['query']=function(_0x11ff36,_0x33e1ae){var _0xd61c4d=0xa;var _0x1c062d=[_0x6eae('0x83'),_0x6eae('0x53'),_0x6eae('0x54'),'cross_join'];var _0x241c69={'SUM':_0x6eae('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x6eae('0x56'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x6eae('0x59'),'GROUP_CONCAT':_0x6eae('0x5a'),'GROUP_CONCAT ASC':_0x6eae('0x86'),'GROUP_CONCAT DESC':_0x6eae('0x5b')};var _0x52aea1={'SEC_TO_TIME':_0x6eae('0x5c'),'DATE':_0x6eae('0x87'),'HOUR':'HOUR(%s)','ROUND':_0x6eae('0xa0'),'UNIX_TIMESTAMP':_0x6eae('0x5e')};var _0x5613e1=function(_0x5cd75c){return!_[_0x6eae('0x5f')]([_0x6eae('0x60'),_0x6eae('0x61'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x5cd75c);};var _0x2483f8=function(_0x2b62d4){if(!_0x2b62d4||!_0x2b62d4[_0x6eae('0x64')][_0x6eae('0x45')]){return'';}for(var _0x4c3a6e='(',_0xd41514=0x0;_0xd41514<_0x2b62d4[_0x6eae('0x64')][_0x6eae('0x45')];_0xd41514+=0x1){_0xd41514>0x0&&(_0x4c3a6e+='\x20'+_0x2b62d4[_0x6eae('0x63')]+'\x20');_0x4c3a6e+=_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x65')]?_0x2483f8(_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x65')]):_0x2b62d4[_0x6eae('0x64')][_0xd41514]['field']+'\x20'+_0x2b62d4[_0x6eae('0x64')][_0xd41514][_0x6eae('0x67')]+(_0x5613e1(_0x2b62d4[_0x6eae('0x64')][_0xd41514]['condition'])?'\x20'+_0x2b62d4[_0x6eae('0x64')][_0xd41514]['value']:'');}return _0x4c3a6e+')';};var _0x536252={'where':{'id':_0x11ff36[_0x6eae('0x52')]['id']}},_0x5216e9,_0x456c00,_0xfb2b5a,_0x5ca9d9,_0x127f08;_0x536252=_[_0x6eae('0x3c')]({},_0x536252,_0x11ff36[_0x6eae('0x46')]);return db[_0x6eae('0x2c')][_0x6eae('0x4d')](_0x536252)[_0x6eae('0x23')](function(_0x1df945){if(_0x1df945){_0x5216e9=_0x1df945;return _0x1df945[_0x6eae('0x68')]();}return null;})[_0x6eae('0x23')](function(_0x19097b){if(_0x19097b){if(!_0x19097b[_0x6eae('0x45')]){throw new db[(_0x6eae('0x88'))][(_0x6eae('0x69'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x456c00=_0x19097b;return db[_0x6eae('0x6b')][_0x6eae('0x41')]({'raw':!![]});}return null;})[_0x6eae('0x23')](function(_0x45fb75){if(_0x45fb75){_0xfb2b5a=_[_0x6eae('0xa1')](_0x45fb75,'id');var _0x55664e;var _0x249e30=squel[_0x6eae('0x6c')]();_0x249e30[_0x6eae('0x89')](_0x5216e9[_0x6eae('0x7b')]);for(var _0x409207=0x0;_0x409207<_0x456c00[_0x6eae('0x45')];_0x409207+=0x1){_0x55664e=_0x456c00[_0x409207][_0x6eae('0x8a')]?_0xfb2b5a[_0x456c00[_0x409207][_0x6eae('0x8a')]][_0x6eae('0x6d')]:_0x456c00[_0x409207][_0x6eae('0x66')];_0x55664e=_0x456c00[_0x409207][_0x6eae('0x6e')]?_[_0x6eae('0x6f')](_0x241c69[_0x456c00[_0x409207]['function']],'%s',_0x55664e):_0x55664e;_0x55664e=_0x456c00[_0x409207][_0x6eae('0x70')]?_[_0x6eae('0x6f')](_0x52aea1[_0x456c00[_0x409207][_0x6eae('0x70')]],'%s',_0x55664e):_0x55664e;if(_0x456c00[_0x409207][_0x6eae('0x71')]){_0x249e30[_0x6eae('0x65')](_0x55664e);}_0x456c00[_0x409207][_0x6eae('0x72')]&&_0x249e30[_0x6eae('0x36')](_0x55664e,_0x456c00[_0x409207][_0x6eae('0x72')]==='DESC'?![]:!![]);_0x249e30[_0x6eae('0x66')](_0x55664e,_0x456c00[_0x409207][_0x6eae('0x74')]||_0x55664e);}if(_0x5216e9['joins']){_0x5216e9['joins']=JSON[_0x6eae('0x76')](_0x5216e9['joins']);for(var _0x3f7919=0x0;_0x3f7919<_0x5216e9['joins']['length'];_0x3f7919+=0x1){if(_0x5216e9[_0x6eae('0x75')][_0x3f7919]['type']&&_[_0x6eae('0x5f')](_0x1c062d,_0x5216e9[_0x6eae('0x75')][_0x3f7919]['type'])&&_0x5216e9['joins'][_0x3f7919][_0x6eae('0x77')]&&_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x78')]&&_0x5216e9['joins'][_0x3f7919][_0x6eae('0x79')]){_0x249e30[_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x3d')]](_0x5216e9['joins'][_0x3f7919]['foreignTable'],null,util[_0x6eae('0x70')](_0x6eae('0x7a'),_0x5216e9[_0x6eae('0x7b')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x77')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x78')],_0x5216e9[_0x6eae('0x75')][_0x3f7919][_0x6eae('0x79')]));}}}if(_0x5216e9['conditions']){_0x5216e9[_0x6eae('0x7c')]=JSON[_0x6eae('0x76')](_0x5216e9[_0x6eae('0x7c')]);_0x249e30['where'](_0x2483f8(_0x5216e9[_0x6eae('0x7c')][_0x6eae('0x65')]));}_0x127f08=_0x249e30[_0x6eae('0x7d')]();_0x249e30[_0x6eae('0x1b')](_0xd61c4d);_0x249e30[_0x6eae('0x19')](0x0);logger[_0x6eae('0x7e')](_0x6eae('0x7f'),_0x249e30[_0x6eae('0x80')]());return dbH[_0x6eae('0x81')][_0x6eae('0x31')](_0x249e30['toString'](),{'type':dbH[_0x6eae('0x81')][_0x6eae('0x9d')][_0x6eae('0x82')]});}})['then'](function(){return{'sql':_0x127f08[_0x6eae('0x80')]()};})[_0x6eae('0x23')](respondWithResult(_0x33e1ae,null))[_0x6eae('0x43')](handleError(_0x33e1ae,null));};
\ No newline at end of file
+var _0x7913=['GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','replace','function','format','groupBy','orderBy','DESC','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','MIN(%s)','metric','clone','output','fullPath','%s-%s.%s','csv','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','alias','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)'];(function(_0x554bf1,_0x241680){var _0x531b25=function(_0x130eca){while(--_0x130eca){_0x554bf1['push'](_0x554bf1['shift']());}};_0x531b25(++_0x241680);}(_0x7913,0xe8));var _0x3791=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7913[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x3791('0x0'));var rimraf=require(_0x3791('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3791('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3791('0x3'));var Mustache=require(_0x3791('0x4'));var util=require('util');var path=require(_0x3791('0x5'));var sox=require(_0x3791('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3791('0x7'));var _=require(_0x3791('0x8'));var squel=require('squel');var crypto=require(_0x3791('0x9'));var jsforce=require(_0x3791('0xa'));var deskjs=require(_0x3791('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3791('0xc'));var Papa=require(_0x3791('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3791('0xe'));var logger=require(_0x3791('0xf'))(_0x3791('0x10'));var utils=require(_0x3791('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x3791('0x12'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x3791('0x13')];function respondWithStatusCode(_0x33da6f,_0x1aa8a7){_0x1aa8a7=_0x1aa8a7||0xcc;return function(_0x538564){if(_0x538564){return _0x33da6f[_0x3791('0x14')](_0x1aa8a7);}return _0x33da6f[_0x3791('0x15')](_0x1aa8a7)[_0x3791('0x16')]();};}function respondWithResult(_0x89ffaa,_0x2a8ee2){_0x2a8ee2=_0x2a8ee2||0xc8;return function(_0x46773f){if(_0x46773f){return _0x89ffaa[_0x3791('0x15')](_0x2a8ee2)[_0x3791('0x17')](_0x46773f);}};}function respondWithFilteredResult(_0x1110b2,_0x1cbbca){return function(_0x1880d5){if(_0x1880d5){var _0x1cc090=typeof _0x1cbbca[_0x3791('0x18')]===_0x3791('0x19')&&typeof _0x1cbbca[_0x3791('0x1a')]==='undefined';var _0x1f321b=_0x1880d5[_0x3791('0x1b')];var _0x115a88=_0x1cc090?0x0:_0x1cbbca[_0x3791('0x18')];var _0x1cffbb=_0x1cc090?_0x1880d5[_0x3791('0x1b')]:_0x1cbbca[_0x3791('0x18')]+_0x1cbbca[_0x3791('0x1a')];var _0x5311e5;if(_0x1cffbb>=_0x1f321b){_0x1cffbb=_0x1f321b;_0x5311e5=0xc8;}else{_0x5311e5=0xce;}_0x1110b2[_0x3791('0x15')](_0x5311e5);return _0x1110b2[_0x3791('0x1c')](_0x3791('0x1d'),_0x115a88+'-'+_0x1cffbb+'/'+_0x1f321b)[_0x3791('0x17')](_0x1880d5);}return null;};}function patchUpdates(_0x61cbf7){return function(_0x4204c2){try{jsonpatch[_0x3791('0x1e')](_0x4204c2,_0x61cbf7,!![]);}catch(_0x3b6d8a){return BPromise[_0x3791('0x1f')](_0x3b6d8a);}return _0x4204c2[_0x3791('0x20')]();};}function saveUpdates(_0x1a37cc,_0x198183){return function(_0x46baa4){if(_0x46baa4){return _0x46baa4[_0x3791('0x21')](_0x1a37cc)[_0x3791('0x22')](function(_0xfe158f){return _0xfe158f;});}return null;};}function removeEntity(_0x46685e,_0x36ec3e){return function(_0x31a224){if(_0x31a224){return _0x31a224[_0x3791('0x23')]()[_0x3791('0x22')](function(){var _0x10d9ad=_0x31a224[_0x3791('0x24')]({'plain':!![]});var _0x1a6bc6=_0x3791('0x25');return db[_0x3791('0x26')]['destroy']({'where':{'type':_0x1a6bc6,'resourceId':_0x10d9ad['id']}})[_0x3791('0x22')](function(){return _0x31a224;});})[_0x3791('0x22')](function(){_0x46685e[_0x3791('0x15')](0xcc)[_0x3791('0x16')]();});}};}function handleEntityNotFound(_0x44dca9,_0x45e3c8){return function(_0x3bb368){if(!_0x3bb368){_0x44dca9[_0x3791('0x14')](0x194);}return _0x3bb368;};}function handleError(_0x18bf1f,_0x3f2240){_0x3f2240=_0x3f2240||0x1f4;return function(_0x43f6ee){logger[_0x3791('0x27')](_0x43f6ee[_0x3791('0x28')]);if(_0x43f6ee[_0x3791('0x29')]){delete _0x43f6ee[_0x3791('0x29')];}_0x18bf1f[_0x3791('0x15')](_0x3f2240)[_0x3791('0x2a')](_0x43f6ee);};}exports[_0x3791('0x2b')]=function(_0x2a2d76,_0x5c79c9){var _0x1c4356={},_0x4e15f4={},_0x538521={'count':0x0,'rows':[]};var _0x471212=_[_0x3791('0x2c')](db[_0x3791('0x2d')][_0x3791('0x2e')],function(_0x43af7f){return{'name':_0x43af7f['fieldName'],'type':_0x43af7f['type'][_0x3791('0x2f')]};});_0x4e15f4['model']=_[_0x3791('0x2c')](_0x471212,_0x3791('0x29'));_0x4e15f4[_0x3791('0x30')]=_['keys'](_0x2a2d76[_0x3791('0x30')]);_0x4e15f4[_0x3791('0x31')]=_[_0x3791('0x32')](_0x4e15f4[_0x3791('0x33')],_0x4e15f4[_0x3791('0x30')]);_0x1c4356[_0x3791('0x34')]=_[_0x3791('0x32')](_0x4e15f4[_0x3791('0x33')],qs[_0x3791('0x35')](_0x2a2d76[_0x3791('0x30')][_0x3791('0x35')]));_0x1c4356[_0x3791('0x34')]=_0x1c4356[_0x3791('0x34')][_0x3791('0x36')]?_0x1c4356['attributes']:_0x4e15f4['model'];if(!_0x2a2d76[_0x3791('0x30')][_0x3791('0x37')](_0x3791('0x38'))){_0x1c4356[_0x3791('0x1a')]=qs[_0x3791('0x1a')](_0x2a2d76[_0x3791('0x30')][_0x3791('0x1a')]);_0x1c4356[_0x3791('0x18')]=qs[_0x3791('0x18')](_0x2a2d76[_0x3791('0x30')][_0x3791('0x18')]);}_0x1c4356[_0x3791('0x39')]=qs[_0x3791('0x3a')](_0x2a2d76[_0x3791('0x30')][_0x3791('0x3a')]);_0x1c4356[_0x3791('0x3b')]=qs[_0x3791('0x31')](_['pick'](_0x2a2d76[_0x3791('0x30')],_0x4e15f4[_0x3791('0x31')]),_0x471212);if(_0x2a2d76['query'][_0x3791('0x3c')]){_0x1c4356[_0x3791('0x3b')]=_[_0x3791('0x3d')](_0x1c4356[_0x3791('0x3b')],{'$or':_[_0x3791('0x2c')](_0x471212,function(_0x28ce53){if(_0x28ce53[_0x3791('0x3e')]!=='VIRTUAL'){var _0x13b9e6={};_0x13b9e6[_0x28ce53[_0x3791('0x29')]]={'$like':'%'+_0x2a2d76[_0x3791('0x30')][_0x3791('0x3c')]+'%'};return _0x13b9e6;}})});}_0x1c4356=_[_0x3791('0x3d')]({},_0x1c4356,_0x2a2d76['options']);var _0x15271c={'where':_0x1c4356[_0x3791('0x3b')]};return db[_0x3791('0x2d')][_0x3791('0x1b')](_0x15271c)[_0x3791('0x22')](function(_0x4dd529){_0x538521[_0x3791('0x1b')]=_0x4dd529;if(_0x2a2d76[_0x3791('0x30')][_0x3791('0x3f')]){_0x1c4356[_0x3791('0x40')]=[{'all':!![]}];}return db[_0x3791('0x2d')][_0x3791('0x41')](_0x1c4356);})[_0x3791('0x22')](function(_0x677f00){_0x538521[_0x3791('0x42')]=_0x677f00;return _0x538521;})[_0x3791('0x22')](respondWithFilteredResult(_0x5c79c9,_0x1c4356))[_0x3791('0x43')](handleError(_0x5c79c9,null));};exports[_0x3791('0x44')]=function(_0x472325,_0x19b7d1){var _0xbb7125={'raw':![],'where':{'id':_0x472325[_0x3791('0x45')]['id']}},_0x4315f0={};_0x4315f0[_0x3791('0x33')]=_['keys'](db[_0x3791('0x2d')][_0x3791('0x2e')]);_0x4315f0[_0x3791('0x30')]=_[_0x3791('0x46')](_0x472325['query']);_0x4315f0[_0x3791('0x31')]=_[_0x3791('0x32')](_0x4315f0[_0x3791('0x33')],_0x4315f0[_0x3791('0x30')]);_0xbb7125['attributes']=_[_0x3791('0x32')](_0x4315f0[_0x3791('0x33')],qs['fields'](_0x472325[_0x3791('0x30')]['fields']));_0xbb7125[_0x3791('0x34')]=_0xbb7125[_0x3791('0x34')][_0x3791('0x36')]?_0xbb7125[_0x3791('0x34')]:_0x4315f0[_0x3791('0x33')];if(_0x472325[_0x3791('0x30')][_0x3791('0x3f')]){_0xbb7125['include']=[{'all':!![]}];}_0xbb7125=_['merge']({},_0xbb7125,_0x472325[_0x3791('0x47')]);return db[_0x3791('0x2d')][_0x3791('0x48')](_0xbb7125)[_0x3791('0x22')](handleEntityNotFound(_0x19b7d1,null))[_0x3791('0x22')](respondWithResult(_0x19b7d1,null))[_0x3791('0x43')](handleError(_0x19b7d1,null));};exports[_0x3791('0x49')]=function(_0x197ff0,_0x100110){return db['AnalyticCustomReport'][_0x3791('0x49')](_0x197ff0['body'],{})[_0x3791('0x22')](function(_0x9db5f0){var _0x45ac95=_0x197ff0['user']['get']({'plain':!![]});if(!_0x45ac95)throw new Error(_0x3791('0x4a'));if(_0x45ac95[_0x3791('0x4b')]==='user'){var _0x33ccc6=_0x9db5f0['get']({'plain':!![]});var _0x184869='Reports';return db[_0x3791('0x4c')]['find']({'where':{'name':_0x184869,'userProfileId':_0x45ac95[_0x3791('0x4d')]},'raw':!![]})[_0x3791('0x22')](function(_0xc3d7f2){if(_0xc3d7f2&&_0xc3d7f2[_0x3791('0x4e')]===0x0){return db[_0x3791('0x26')][_0x3791('0x49')]({'name':_0x33ccc6['name'],'resourceId':_0x33ccc6['id'],'type':_0x3791('0x25'),'sectionId':_0xc3d7f2['id']},{})[_0x3791('0x22')](function(){return _0x9db5f0;});}else{return _0x9db5f0;}})['catch'](function(_0x5c6571){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5c6571);throw _0x5c6571;});}return _0x9db5f0;})[_0x3791('0x22')](respondWithResult(_0x100110,0xc9))['catch'](handleError(_0x100110,null));};exports[_0x3791('0x21')]=function(_0x1b8dda,_0x3e8dd9){if(_0x1b8dda[_0x3791('0x4f')]['id']){delete _0x1b8dda['body']['id'];}return db[_0x3791('0x2d')][_0x3791('0x48')]({'where':{'id':_0x1b8dda[_0x3791('0x45')]['id']}})[_0x3791('0x22')](handleEntityNotFound(_0x3e8dd9,null))[_0x3791('0x22')](saveUpdates(_0x1b8dda['body'],null))[_0x3791('0x22')](respondWithResult(_0x3e8dd9,null))['catch'](handleError(_0x3e8dd9,null));};exports[_0x3791('0x23')]=function(_0x310b06,_0x22c496){return db['AnalyticCustomReport']['find']({'where':{'id':_0x310b06['params']['id']}})[_0x3791('0x22')](handleEntityNotFound(_0x22c496,null))[_0x3791('0x22')](removeEntity(_0x22c496,null))['catch'](handleError(_0x22c496,null));};exports[_0x3791('0x50')]=function(_0x22a8f4,_0x2efe00){var _0x4902f2=0xa;var _0x95fc6e=[_0x3791('0x51'),_0x3791('0x52'),_0x3791('0x53'),_0x3791('0x54')];var _0x35491e={'SUM':_0x3791('0x55'),'COUNT':_0x3791('0x56'),'COUNT DISTINCT':_0x3791('0x57'),'MAX':_0x3791('0x58'),'MIN':'MIN(%s)','AVG':_0x3791('0x59'),'GROUP_CONCAT':_0x3791('0x5a'),'GROUP_CONCAT ASC':_0x3791('0x5b'),'GROUP_CONCAT DESC':_0x3791('0x5c')};var _0x5e5ff3={'SEC_TO_TIME':_0x3791('0x5d'),'DATE':_0x3791('0x5e'),'HOUR':_0x3791('0x5f'),'ROUND':_0x3791('0x60'),'UNIX_TIMESTAMP':_0x3791('0x61')};var _0x2ab156=function(_0x5b84e2){return!_[_0x3791('0x62')]([_0x3791('0x63'),_0x3791('0x64'),_0x3791('0x65'),_0x3791('0x66')],_0x5b84e2);};var _0xc8d7d1=function(_0x2b7d1e){if(!_0x2b7d1e||!_0x2b7d1e[_0x3791('0x67')][_0x3791('0x36')]){return'';}for(var _0x3f0f44='(',_0x54bc0b=0x0;_0x54bc0b<_0x2b7d1e[_0x3791('0x67')][_0x3791('0x36')];_0x54bc0b+=0x1){_0x54bc0b>0x0&&(_0x3f0f44+='\x20'+_0x2b7d1e[_0x3791('0x68')]+'\x20');_0x3f0f44+=_0x2b7d1e['rules'][_0x54bc0b][_0x3791('0x69')]?_0xc8d7d1(_0x2b7d1e['rules'][_0x54bc0b][_0x3791('0x69')]):_0x2b7d1e[_0x3791('0x67')][_0x54bc0b][_0x3791('0x6a')]+'\x20'+_0x2b7d1e['rules'][_0x54bc0b][_0x3791('0x6b')]+(_0x2ab156(_0x2b7d1e[_0x3791('0x67')][_0x54bc0b]['condition'])?'\x20'+_0x2b7d1e[_0x3791('0x67')][_0x54bc0b][_0x3791('0x6c')]:'');}return _0x3f0f44+')';};var _0x80a89e={'where':{'id':_0x22a8f4['params']['id']}},_0x2bfc4c,_0x1dcb3a,_0x4f31be,_0x320afe,_0x3c8950;_0x80a89e=_[_0x3791('0x3d')]({},_0x80a89e,_0x22a8f4['options']);return db[_0x3791('0x2d')][_0x3791('0x48')](_0x80a89e)[_0x3791('0x22')](function(_0x55f734){if(_0x55f734){_0x2bfc4c=_0x55f734;return _0x55f734[_0x3791('0x6d')]();}return null;})[_0x3791('0x22')](function(_0xe36ba2){if(_0xe36ba2){if(!_0xe36ba2[_0x3791('0x36')]){throw new db[(_0x3791('0x6e'))][(_0x3791('0x6f'))](_0x3791('0x70'),0x193);}_0x1dcb3a=_0xe36ba2;return db[_0x3791('0x71')][_0x3791('0x41')]({'raw':!![]});}return null;})[_0x3791('0x22')](function(_0x4ccdce){if(_0x4ccdce){_0x4f31be=_[_0x3791('0x72')](_0x4ccdce,'id');var _0x458dd5;var _0x55f45f=squel[_0x3791('0x73')]();_0x55f45f[_0x3791('0x74')](_0x2bfc4c[_0x3791('0x75')]);for(var _0x226bbb=0x0;_0x226bbb<_0x1dcb3a[_0x3791('0x36')];_0x226bbb+=0x1){_0x458dd5=_0x1dcb3a[_0x226bbb][_0x3791('0x76')]?_0x4f31be[_0x1dcb3a[_0x226bbb][_0x3791('0x76')]]['metric']:_0x1dcb3a[_0x226bbb][_0x3791('0x6a')];_0x458dd5=_0x1dcb3a[_0x226bbb]['function']?_[_0x3791('0x77')](_0x35491e[_0x1dcb3a[_0x226bbb][_0x3791('0x78')]],'%s',_0x458dd5):_0x458dd5;_0x458dd5=_0x1dcb3a[_0x226bbb][_0x3791('0x79')]?_[_0x3791('0x77')](_0x5e5ff3[_0x1dcb3a[_0x226bbb][_0x3791('0x79')]],'%s',_0x458dd5):_0x458dd5;if(_0x1dcb3a[_0x226bbb][_0x3791('0x7a')]){_0x55f45f[_0x3791('0x69')](_0x458dd5);}_0x1dcb3a[_0x226bbb][_0x3791('0x7b')]&&_0x55f45f[_0x3791('0x39')](_0x458dd5,_0x1dcb3a[_0x226bbb]['orderBy']===_0x3791('0x7c')?![]:!![]);_0x55f45f[_0x3791('0x6a')](_0x458dd5,_0x1dcb3a[_0x226bbb]['alias']||_0x458dd5);}if(_0x2bfc4c[_0x3791('0x7d')]){_0x2bfc4c[_0x3791('0x7d')]=JSON[_0x3791('0x7e')](_0x2bfc4c[_0x3791('0x7d')]);for(var _0x2e22c5=0x0;_0x2e22c5<_0x2bfc4c[_0x3791('0x7d')]['length'];_0x2e22c5+=0x1){if(_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5]['type']&&_['includes'](_0x95fc6e,_0x2bfc4c['joins'][_0x2e22c5]['type'])&&_0x2bfc4c['joins'][_0x2e22c5][_0x3791('0x7f')]&&_0x2bfc4c['joins'][_0x2e22c5][_0x3791('0x80')]&&_0x2bfc4c['joins'][_0x2e22c5]['foreignKey']){_0x55f45f[_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5][_0x3791('0x3e')]](_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5][_0x3791('0x80')],null,util[_0x3791('0x79')](_0x3791('0x81'),_0x2bfc4c[_0x3791('0x75')],_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5][_0x3791('0x7f')],_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5][_0x3791('0x80')],_0x2bfc4c[_0x3791('0x7d')][_0x2e22c5][_0x3791('0x82')]));}}}if(_0x2bfc4c['conditions']){_0x2bfc4c[_0x3791('0x83')]=JSON[_0x3791('0x7e')](_0x2bfc4c['conditions']);_0x55f45f[_0x3791('0x3b')](_0xc8d7d1(_0x2bfc4c[_0x3791('0x83')][_0x3791('0x69')]));}_0x3c8950=_0x55f45f['clone']();_0x55f45f[_0x3791('0x1a')](_0x4902f2);_0x55f45f[_0x3791('0x18')](0x0);logger[_0x3791('0x84')](_0x3791('0x85'),_0x55f45f[_0x3791('0x86')]());return dbH[_0x3791('0x87')][_0x3791('0x30')](_0x55f45f[_0x3791('0x86')](),{'type':dbH['sequelize'][_0x3791('0x88')][_0x3791('0x89')]});}})[_0x3791('0x22')](respondWithResult(_0x2efe00,null))[_0x3791('0x43')](handleError(_0x2efe00,null));};function runReport(_0x38603d,_0xa2ab44,_0x34c454){var _0x20bb3d=_0xa2ab44[_0x3791('0x29')];var _0xa44366=0xa;var _0x5e4971=['join','left_join',_0x3791('0x53'),_0x3791('0x54')];var _0x110ccf={'SUM':_0x3791('0x55'),'COUNT':_0x3791('0x56'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x3791('0x58'),'MIN':_0x3791('0x8a'),'AVG':_0x3791('0x59'),'GROUP_CONCAT':_0x3791('0x5a'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2e89e6={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x3791('0x5e'),'HOUR':_0x3791('0x5f'),'ROUND':_0x3791('0x60'),'UNIX_TIMESTAMP':_0x3791('0x61')};var _0x4cd828=function(_0x40a0b4){return!_[_0x3791('0x62')](['IS\x20NULL',_0x3791('0x64'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x40a0b4);};var _0xf86a65=function(_0x42fda8){if(!_0x42fda8||!_0x42fda8['rules'][_0x3791('0x36')]){return'';}for(var _0x4f3f20='(',_0x5bd900=0x0;_0x5bd900<_0x42fda8[_0x3791('0x67')][_0x3791('0x36')];_0x5bd900+=0x1){_0x5bd900>0x0&&(_0x4f3f20+='\x20'+_0x42fda8[_0x3791('0x68')]+'\x20');_0x4f3f20+=_0x42fda8['rules'][_0x5bd900][_0x3791('0x69')]?_0xf86a65(_0x42fda8['rules'][_0x5bd900]['group']):_0x42fda8[_0x3791('0x67')][_0x5bd900][_0x3791('0x6a')]+'\x20'+_0x42fda8['rules'][_0x5bd900][_0x3791('0x6b')]+(_0x4cd828(_0x42fda8['rules'][_0x5bd900][_0x3791('0x6b')])?'\x20'+_0x42fda8[_0x3791('0x67')][_0x5bd900]['value']:'');}return _0x4f3f20+')';};var _0x3d2df3={'where':{'id':_0x38603d['id']}},_0x3cafa0,_0x5f583c,_0x257dd9,_0x389235,_0x15c93c;_0x3d2df3=_[_0x3791('0x3d')]({},_0x3d2df3,_0x34c454);return db[_0x3791('0x2d')][_0x3791('0x48')](_0x3d2df3)[_0x3791('0x22')](function(_0x457d80){if(_0x457d80){_0x3cafa0=_0x457d80;return _0x457d80[_0x3791('0x6d')]();}return null;})[_0x3791('0x22')](function(_0x3a024b){if(_0x3a024b){if(!_0x3a024b[_0x3791('0x36')]){throw new db[(_0x3791('0x6e'))][(_0x3791('0x6f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5f583c=_0x3a024b;return db[_0x3791('0x71')]['findAll']({'raw':!![]});}return null;})[_0x3791('0x22')](function(_0x3f8319){if(_0x3f8319){_0x257dd9=_[_0x3791('0x72')](_0x3f8319,'id');var _0x5c1102;var _0x1fbeb1=squel['select']();_0x1fbeb1[_0x3791('0x74')](_0x3cafa0['table']);for(var _0x35ed61=0x0;_0x35ed61<_0x5f583c[_0x3791('0x36')];_0x35ed61+=0x1){_0x5c1102=_0x5f583c[_0x35ed61][_0x3791('0x76')]?_0x257dd9[_0x5f583c[_0x35ed61][_0x3791('0x76')]][_0x3791('0x8b')]:_0x5f583c[_0x35ed61]['field'];_0x5c1102=_0x5f583c[_0x35ed61][_0x3791('0x78')]?_[_0x3791('0x77')](_0x110ccf[_0x5f583c[_0x35ed61][_0x3791('0x78')]],'%s',_0x5c1102):_0x5c1102;_0x5c1102=_0x5f583c[_0x35ed61][_0x3791('0x79')]?_[_0x3791('0x77')](_0x2e89e6[_0x5f583c[_0x35ed61][_0x3791('0x79')]],'%s',_0x5c1102):_0x5c1102;if(_0x5f583c[_0x35ed61][_0x3791('0x7a')]){_0x1fbeb1[_0x3791('0x69')](_0x5c1102);}_0x5f583c[_0x35ed61][_0x3791('0x7b')]&&_0x1fbeb1[_0x3791('0x39')](_0x5c1102,_0x5f583c[_0x35ed61][_0x3791('0x7b')]===_0x3791('0x7c')?![]:!![]);_0x1fbeb1[_0x3791('0x6a')](_0x5c1102,_0x5f583c[_0x35ed61]['alias']||_0x5c1102);}if(_0x3cafa0['joins']){_0x3cafa0['joins']=JSON[_0x3791('0x7e')](_0x3cafa0[_0x3791('0x7d')]);for(var _0x23df32=0x0;_0x23df32<_0x3cafa0[_0x3791('0x7d')][_0x3791('0x36')];_0x23df32+=0x1){if(_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x3e')]&&_[_0x3791('0x62')](_0x5e4971,_0x3cafa0['joins'][_0x23df32]['type'])&&_0x3cafa0['joins'][_0x23df32][_0x3791('0x7f')]&&_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x80')]&&_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x82')]){_0x1fbeb1[_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x3e')]](_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x80')],null,util['format'](_0x3791('0x81'),_0x3cafa0[_0x3791('0x75')],_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x7f')],_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x80')],_0x3cafa0[_0x3791('0x7d')][_0x23df32][_0x3791('0x82')]));}}}if(_0x3cafa0[_0x3791('0x83')]){_0x3cafa0['conditions']=JSON['parse'](_0x3cafa0[_0x3791('0x83')]);_0x1fbeb1['where'](_0xf86a65(_0x3cafa0[_0x3791('0x83')][_0x3791('0x69')]));}_0x15c93c=_0x1fbeb1[_0x3791('0x8c')]();_0x1fbeb1[_0x3791('0x1a')](_0xa44366);_0x1fbeb1[_0x3791('0x18')](0x0);return;}})['then'](function(){if(_0xa2ab44[_0x3791('0x8d')]==='web'){return null;}var _0x3a9a46=_['merge'](_0xa2ab44,{'name':_0xa2ab44[_0x3791('0x8e')]||_0xa2ab44[_0x3791('0x29')]||_0x3cafa0['name'],'basename':_0x20bb3d,'savename':util['format'](_0x3791('0x8f'),_0xa2ab44['name']||_0x3cafa0[_0x3791('0x29')],require('randomstring')['generate'](0x4),_0xa2ab44[_0x3791('0x8d')]||_0x3791('0x90')),'reportId':_0x3cafa0['id'],'reportType':_0x3791('0x91')});return db[_0x3791('0x92')]['create'](_0x3a9a46,{'raw':!![]});})[_0x3791('0x22')](function(_0x4002c8){if(_0x3cafa0[_0x3791('0x75')]===_0x3791('0x93')){_0x15c93c[_0x3791('0x3b')](_0x3cafa0['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xa2ab44[_0x3791('0x94')],_0xa2ab44[_0x3791('0x95')]);}else{_0x15c93c[_0x3791('0x3b')](_0x3cafa0[_0x3791('0x75')]+_0x3791('0x96'),_0xa2ab44['startDate'],_0xa2ab44[_0x3791('0x95')]);}if(_0x4002c8){logger[_0x3791('0x97')](_0x3791('0x98'),_0x15c93c['toString']());require(_0x3791('0x99'))['fork'](path[_0x3791('0x51')](__dirname,_0x3791('0x9a'),_0x4002c8['output']),[_0x4002c8['id'],_0x15c93c[_0x3791('0x86')](),path[_0x3791('0x51')](__dirname,_0x3791('0x9b'),_0x4002c8[_0x3791('0x9c')]),_0x20bb3d]);return _0x4002c8;}else{var _0x1aa1e9=squel[_0x3791('0x73')]();_0x1aa1e9[_0x3791('0x74')]('('+_0x15c93c[_0x3791('0x86')]()+')',_0x3791('0x9d'));_0x1aa1e9[_0x3791('0x6a')](_0x3791('0x9e'),'count');_0x15c93c[_0x3791('0x1a')](_0xa2ab44['limit']||_0xa44366);_0x15c93c[_0x3791('0x18')](_0xa2ab44['offset']||0x0);return dbH[_0x3791('0x87')][_0x3791('0x30')](_0x1aa1e9[_0x3791('0x86')](),{'type':dbH[_0x3791('0x87')]['QueryTypes'][_0x3791('0x89')]})[_0x3791('0x22')](function(_0x173e8a){if(!_0x173e8a[_0x3791('0x36')]){_0x389235=0x0;}else{_0x389235=_0x173e8a[0x0][_0x3791('0x1b')]||0x0;}return dbH[_0x3791('0x87')][_0x3791('0x30')](_0x15c93c[_0x3791('0x86')](),{'type':dbH['sequelize'][_0x3791('0x88')][_0x3791('0x89')]});})['then'](function(_0x4c2eb0){return{'rows':_0x4c2eb0||[],'count':_0x389235};});}});}exports[_0x3791('0x9f')]=function(_0x36210f,_0x3a00f5){return runReport(_0x36210f['params'],_0x36210f['query'],_0x36210f[_0x3791('0x47')])['then'](respondWithResult(_0x3a00f5,null))[_0x3791('0x43')](handleError(_0x3a00f5,null));};exports['runReport']=runReport;exports[_0x3791('0x30')]=function(_0x4c863d,_0xac02e1){var _0x5e038d=0xa;var _0x345d5b=[_0x3791('0x51'),_0x3791('0x52'),_0x3791('0x53'),'cross_join'];var _0x7e3e22={'SUM':_0x3791('0x55'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x3791('0x57'),'MAX':_0x3791('0x58'),'MIN':_0x3791('0x8a'),'AVG':_0x3791('0x59'),'GROUP_CONCAT':_0x3791('0x5a'),'GROUP_CONCAT ASC':_0x3791('0x5b'),'GROUP_CONCAT DESC':_0x3791('0x5c')};var _0x3eb554={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x3791('0x5e'),'HOUR':_0x3791('0x5f'),'ROUND':_0x3791('0x60'),'UNIX_TIMESTAMP':_0x3791('0x61')};var _0x30d44b=function(_0x196e11){return!_[_0x3791('0x62')]([_0x3791('0x63'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x3791('0x66')],_0x196e11);};var _0x43233f=function(_0x525aef){if(!_0x525aef||!_0x525aef[_0x3791('0x67')][_0x3791('0x36')]){return'';}for(var _0xb435a9='(',_0x23d915=0x0;_0x23d915<_0x525aef['rules'][_0x3791('0x36')];_0x23d915+=0x1){_0x23d915>0x0&&(_0xb435a9+='\x20'+_0x525aef[_0x3791('0x68')]+'\x20');_0xb435a9+=_0x525aef[_0x3791('0x67')][_0x23d915][_0x3791('0x69')]?_0x43233f(_0x525aef['rules'][_0x23d915][_0x3791('0x69')]):_0x525aef[_0x3791('0x67')][_0x23d915][_0x3791('0x6a')]+'\x20'+_0x525aef['rules'][_0x23d915][_0x3791('0x6b')]+(_0x30d44b(_0x525aef[_0x3791('0x67')][_0x23d915][_0x3791('0x6b')])?'\x20'+_0x525aef[_0x3791('0x67')][_0x23d915][_0x3791('0x6c')]:'');}return _0xb435a9+')';};var _0x4d569f={'where':{'id':_0x4c863d[_0x3791('0x45')]['id']}},_0x5b99a3,_0x309fed,_0x2acfb,_0x3ee363,_0x30c754;_0x4d569f=_['merge']({},_0x4d569f,_0x4c863d[_0x3791('0x47')]);return db['AnalyticCustomReport'][_0x3791('0x48')](_0x4d569f)[_0x3791('0x22')](function(_0x6b398f){if(_0x6b398f){_0x5b99a3=_0x6b398f;return _0x6b398f[_0x3791('0x6d')]();}return null;})[_0x3791('0x22')](function(_0x765084){if(_0x765084){if(!_0x765084[_0x3791('0x36')]){throw new db[(_0x3791('0x6e'))][(_0x3791('0x6f'))](_0x3791('0x70'),0x193);}_0x309fed=_0x765084;return db['AnalyticMetric'][_0x3791('0x41')]({'raw':!![]});}return null;})['then'](function(_0x48fab9){if(_0x48fab9){_0x2acfb=_[_0x3791('0x72')](_0x48fab9,'id');var _0x183431;var _0x262af3=squel[_0x3791('0x73')]();_0x262af3[_0x3791('0x74')](_0x5b99a3[_0x3791('0x75')]);for(var _0x388990=0x0;_0x388990<_0x309fed[_0x3791('0x36')];_0x388990+=0x1){_0x183431=_0x309fed[_0x388990][_0x3791('0x76')]?_0x2acfb[_0x309fed[_0x388990]['MetricId']][_0x3791('0x8b')]:_0x309fed[_0x388990]['field'];_0x183431=_0x309fed[_0x388990][_0x3791('0x78')]?_[_0x3791('0x77')](_0x7e3e22[_0x309fed[_0x388990][_0x3791('0x78')]],'%s',_0x183431):_0x183431;_0x183431=_0x309fed[_0x388990][_0x3791('0x79')]?_['replace'](_0x3eb554[_0x309fed[_0x388990][_0x3791('0x79')]],'%s',_0x183431):_0x183431;if(_0x309fed[_0x388990][_0x3791('0x7a')]){_0x262af3[_0x3791('0x69')](_0x183431);}_0x309fed[_0x388990][_0x3791('0x7b')]&&_0x262af3[_0x3791('0x39')](_0x183431,_0x309fed[_0x388990][_0x3791('0x7b')]===_0x3791('0x7c')?![]:!![]);_0x262af3['field'](_0x183431,_0x309fed[_0x388990][_0x3791('0xa0')]||_0x183431);}if(_0x5b99a3[_0x3791('0x7d')]){_0x5b99a3[_0x3791('0x7d')]=JSON['parse'](_0x5b99a3['joins']);for(var _0x4bda3f=0x0;_0x4bda3f<_0x5b99a3[_0x3791('0x7d')][_0x3791('0x36')];_0x4bda3f+=0x1){if(_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x3e')]&&_['includes'](_0x345d5b,_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x3e')])&&_0x5b99a3['joins'][_0x4bda3f][_0x3791('0x7f')]&&_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x80')]&&_0x5b99a3['joins'][_0x4bda3f][_0x3791('0x82')]){_0x262af3[_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x3e')]](_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x80')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x5b99a3[_0x3791('0x75')],_0x5b99a3['joins'][_0x4bda3f][_0x3791('0x7f')],_0x5b99a3[_0x3791('0x7d')][_0x4bda3f]['foreignTable'],_0x5b99a3[_0x3791('0x7d')][_0x4bda3f][_0x3791('0x82')]));}}}if(_0x5b99a3['conditions']){_0x5b99a3[_0x3791('0x83')]=JSON[_0x3791('0x7e')](_0x5b99a3[_0x3791('0x83')]);_0x262af3[_0x3791('0x3b')](_0x43233f(_0x5b99a3['conditions']['group']));}_0x30c754=_0x262af3[_0x3791('0x8c')]();_0x262af3[_0x3791('0x1a')](_0x5e038d);_0x262af3['offset'](0x0);logger[_0x3791('0x84')](_0x3791('0x85'),_0x262af3[_0x3791('0x86')]());return dbH[_0x3791('0x87')][_0x3791('0x30')](_0x262af3[_0x3791('0x86')](),{'type':dbH[_0x3791('0x87')][_0x3791('0x88')][_0x3791('0x89')]});}})[_0x3791('0x22')](function(){return{'sql':_0x30c754[_0x3791('0x86')]()};})[_0x3791('0x22')](respondWithResult(_0xac02e1,null))[_0x3791('0x43')](handleError(_0xac02e1,null));};
\ No newline at end of file
index 0a40e59..891d278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a7=['define','AnalyticCustomReport','analytics_custom_reports','api','moment','request-promise','path','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x452688,_0x198223){var _0x3f796f=function(_0x2c65ff){while(--_0x2c65ff){_0x452688['push'](_0x452688['shift']());}};_0x3f796f(++_0x198223);}(_0xe1a7,0xb7));var _0x7e1a=function(_0x24ac6d,_0x5d7934){_0x24ac6d=_0x24ac6d-0x0;var _0x495d64=_0xe1a7[_0x24ac6d];return _0x495d64;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7e1a('0x0'));var moment=require(_0x7e1a('0x1'));var BPromise=require('bluebird');var rp=require(_0x7e1a('0x2'));var fs=require('fs');var path=require(_0x7e1a('0x3'));var rimraf=require('rimraf');var config=require(_0x7e1a('0x4'));var attributes=require(_0x7e1a('0x5'));module[_0x7e1a('0x6')]=function(_0x101ffb,_0x2d2f7b){return _0x101ffb[_0x7e1a('0x7')](_0x7e1a('0x8'),attributes,{'tableName':_0x7e1a('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec10=['define','AnalyticCustomReport','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x502953,_0x28de83){var _0x2fa32d=function(_0x3b3a52){while(--_0x3b3a52){_0x502953['push'](_0x502953['shift']());}};_0x2fa32d(++_0x28de83);}(_0xec10,0x7a));var _0x0ec1=function(_0x221ba2,_0x4eb8b5){_0x221ba2=_0x221ba2-0x0;var _0x5da745=_0xec10[_0x221ba2];return _0x5da745;};'use strict';var _=require(_0x0ec1('0x0'));var util=require('util');var logger=require(_0x0ec1('0x1'))(_0x0ec1('0x2'));var moment=require(_0x0ec1('0x3'));var BPromise=require('bluebird');var rp=require(_0x0ec1('0x4'));var fs=require('fs');var path=require(_0x0ec1('0x5'));var rimraf=require(_0x0ec1('0x6'));var config=require(_0x0ec1('0x7'));var attributes=require(_0x0ec1('0x8'));module[_0x0ec1('0x9')]=function(_0x3f58f0,_0x3a00ac){return _0x3f58f0[_0x0ec1('0xa')](_0x0ec1('0xb'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 569c11e..e0e45f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1637=['http','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x1637,0x96));var _0x7163=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x1637[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0x7163('0x0'));var util=require(_0x7163('0x1'));var moment=require(_0x7163('0x2'));var BPromise=require(_0x7163('0x3'));var rs=require(_0x7163('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7163('0x5'))['db'];var utils=require(_0x7163('0x6'));var logger=require(_0x7163('0x7'))('rpc');var config=require(_0x7163('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7163('0x9')][_0x7163('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5822aa,_0x2544f5,_0x2f5146){return new BPromise(function(_0x25acfe,_0x24176e){return client['request'](_0x5822aa,_0x2f5146)['then'](function(_0x1d1046){logger[_0x7163('0xb')](_0x7163('0xc'),_0x2544f5,_0x7163('0xd'));logger['debug'](_0x7163('0xe'),_0x2544f5,_0x7163('0xd'),JSON[_0x7163('0xf')](_0x1d1046));if(_0x1d1046[_0x7163('0x10')]){if(_0x1d1046['error'][_0x7163('0x11')]===0x1f4){logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);return _0x24176e(_0x1d1046['error']['message']);}logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);return _0x25acfe(_0x1d1046[_0x7163('0x10')][_0x7163('0x12')]);}else{logger[_0x7163('0xb')](_0x7163('0xc'),_0x2544f5,'request\x20sent');_0x25acfe(_0x1d1046[_0x7163('0x13')][_0x7163('0x12')]);}})['catch'](function(_0x3d5ac9){logger[_0x7163('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2544f5,_0x3d5ac9);_0x24176e(_0x3d5ac9);});});}
\ No newline at end of file
+var _0xcdab=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x383356,_0x33d2f5){var _0x32ee5a=function(_0x2741db){while(--_0x2741db){_0x383356['push'](_0x383356['shift']());}};_0x32ee5a(++_0x33d2f5);}(_0xcdab,0x158));var _0xbcda=function(_0x203a81,_0x37aefa){_0x203a81=_0x203a81-0x0;var _0x5b45f8=_0xcdab[_0x203a81];return _0x5b45f8;};'use strict';var _=require(_0xbcda('0x0'));var util=require(_0xbcda('0x1'));var moment=require(_0xbcda('0x2'));var BPromise=require(_0xbcda('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbcda('0x4'));var db=require(_0xbcda('0x5'))['db'];var utils=require(_0xbcda('0x6'));var logger=require(_0xbcda('0x7'))('rpc');var config=require(_0xbcda('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbcda('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a5c82,_0x41eaae,_0x106889){return new BPromise(function(_0x34db75,_0x3e28e3){return client['request'](_0x4a5c82,_0x106889)['then'](function(_0x1a1c35){logger['info'](_0xbcda('0xa'),_0x41eaae,_0xbcda('0xb'));logger['debug']('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x41eaae,_0xbcda('0xb'),JSON[_0xbcda('0xc')](_0x1a1c35));if(_0x1a1c35[_0xbcda('0xd')]){if(_0x1a1c35[_0xbcda('0xd')][_0xbcda('0xe')]===0x1f4){logger[_0xbcda('0xd')](_0xbcda('0xa'),_0x41eaae,_0x1a1c35[_0xbcda('0xd')][_0xbcda('0xf')]);return _0x3e28e3(_0x1a1c35['error'][_0xbcda('0xf')]);}logger[_0xbcda('0xd')](_0xbcda('0xa'),_0x41eaae,_0x1a1c35[_0xbcda('0xd')][_0xbcda('0xf')]);return _0x34db75(_0x1a1c35[_0xbcda('0xd')]['message']);}else{logger[_0xbcda('0x10')](_0xbcda('0xa'),_0x41eaae,_0xbcda('0xb'));_0x34db75(_0x1a1c35[_0xbcda('0x11')]['message']);}})[_0xbcda('0x12')](function(_0x3e1067){logger[_0xbcda('0xd')]('AnalyticCustomReport,\x20%s,\x20%s',_0x41eaae,_0x3e1067);_0x3e28e3(_0x3e1067);});});}
\ No newline at end of file
index 0af6053..50b9eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae52=['get','isAuthenticated','index','/:id','show','/:id/preview','/:id/run','run','/:id/query','query','create','put','update','destroy','exports','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller'];(function(_0x27c201,_0xd947bf){var _0x3cabde=function(_0x4cf697){while(--_0x4cf697){_0x27c201['push'](_0x27c201['shift']());}};_0x3cabde(++_0xd947bf);}(_0xae52,0x117));var _0x2ae5=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xae52[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2ae5('0x0'));var express=require('express');var router=express[_0x2ae5('0x1')]();var fs_extra=require(_0x2ae5('0x2'));var auth=require(_0x2ae5('0x3'));var interaction=require(_0x2ae5('0x4'));var config=require(_0x2ae5('0x5'));var controller=require(_0x2ae5('0x6'));router[_0x2ae5('0x7')]('/',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x9')]);router[_0x2ae5('0x7')](_0x2ae5('0xa'),auth['isAuthenticated'](),controller[_0x2ae5('0xb')]);router[_0x2ae5('0x7')](_0x2ae5('0xc'),auth['isAuthenticated'](),controller['preview']);router[_0x2ae5('0x7')](_0x2ae5('0xd'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0xe')]);router[_0x2ae5('0x7')](_0x2ae5('0xf'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x10')]);router['post']('/',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x11')]);router[_0x2ae5('0x12')]('/:id',auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x13')]);router['delete'](_0x2ae5('0xa'),auth[_0x2ae5('0x8')](),controller[_0x2ae5('0x14')]);module[_0x2ae5('0x15')]=router;
\ No newline at end of file
+var _0x09a4=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','preview','/:id/run','/:id/query','query','create','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0xf8a020,_0x58313f){var _0x1cd8ce=function(_0xa06c1b){while(--_0xa06c1b){_0xf8a020['push'](_0xf8a020['shift']());}};_0x1cd8ce(++_0x58313f);}(_0x09a4,0xcb));var _0x409a=function(_0xd0e460,_0x4655bc){_0xd0e460=_0xd0e460-0x0;var _0x353aef=_0x09a4[_0xd0e460];return _0x353aef;};'use strict';var multer=require(_0x409a('0x0'));var util=require(_0x409a('0x1'));var path=require(_0x409a('0x2'));var timeout=require(_0x409a('0x3'));var express=require(_0x409a('0x4'));var router=express[_0x409a('0x5')]();var fs_extra=require(_0x409a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x409a('0x7'));var config=require(_0x409a('0x8'));var controller=require(_0x409a('0x9'));router[_0x409a('0xa')]('/',auth[_0x409a('0xb')](),controller[_0x409a('0xc')]);router[_0x409a('0xa')](_0x409a('0xd'),auth[_0x409a('0xb')](),controller[_0x409a('0xe')]);router['get']('/:id/preview',auth[_0x409a('0xb')](),controller[_0x409a('0xf')]);router['get'](_0x409a('0x10'),auth[_0x409a('0xb')](),controller['run']);router[_0x409a('0xa')](_0x409a('0x11'),auth[_0x409a('0xb')](),controller[_0x409a('0x12')]);router['post']('/',auth[_0x409a('0xb')](),controller[_0x409a('0x13')]);router['put'](_0x409a('0xd'),auth[_0x409a('0xb')](),controller[_0x409a('0x14')]);router[_0x409a('0x15')]('/:id',auth[_0x409a('0xb')](),controller[_0x409a('0x16')]);module['exports']=router;
\ No newline at end of file
index 0d274b0..9c6178f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['sequelize','STRING','TEXT'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0xafc4,0x69));var _0x4afc=function(_0x1262e2,_0x24963a){_0x1262e2=_0x1262e2-0x0;var _0x15a774=_0xafc4[_0x1262e2];return _0x15a774;};'use strict';var Sequelize=require(_0x4afc('0x0'));module['exports']={'name':{'type':Sequelize[_0x4afc('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4afc('0x1')]},'table':{'type':Sequelize[_0x4afc('0x1')]},'conditions':{'type':Sequelize[_0x4afc('0x2')]},'joins':{'type':Sequelize[_0x4afc('0x2')]}};
\ No newline at end of file
+var _0x326f=['STRING','TEXT','sequelize'];(function(_0xbb3f2d,_0x2b7e9e){var _0x1afb06=function(_0x46dc3f){while(--_0x46dc3f){_0xbb3f2d['push'](_0xbb3f2d['shift']());}};_0x1afb06(++_0x2b7e9e);}(_0x326f,0xd1));var _0xf326=function(_0x3c2fa0,_0x1a5cfa){_0x3c2fa0=_0x3c2fa0-0x0;var _0x1b5776=_0x326f[_0x3c2fa0];return _0x1b5776;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xf326('0x1')]},'parent':{'type':Sequelize[_0xf326('0x1')]},'table':{'type':Sequelize[_0xf326('0x1')]},'conditions':{'type':Sequelize[_0xf326('0x2')]},'joins':{'type':Sequelize[_0xf326('0x2')]}};
\ No newline at end of file
index 2ccace7..c9b19a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','value','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s)','HOUR(%s)','ROUND(%s)','condition','Sequelize','groupBy','foreignKey','output','fullPath','%s-%s.%s','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','COUNT(*)','SELECT','runReport','cross_join','COUNT(%s)','MIN(%s)','ValidationErrorItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','DefaultReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','include','AnalyticDefaultReport','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','preview','join','left_join','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','UNIX_TIMESTAMP(%s)','includes'];(function(_0x2a3981,_0x21baad){var _0x57184e=function(_0x2ec56b){while(--_0x2ec56b){_0x2a3981['push'](_0x2a3981['shift']());}};_0x57184e(++_0x21baad);}(_0x53ec,0x192));var _0xc53e=function(_0x13fb4f,_0x42f6af){_0x13fb4f=_0x13fb4f-0x0;var _0x298a4e=_0x53ec[_0x13fb4f];return _0x298a4e;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];var dbH=require(_0xc53e('0x17'))[_0xc53e('0x18')];function respondWithStatusCode(_0x56f0e5,_0x4e74c9){_0x4e74c9=_0x4e74c9||0xcc;return function(_0x1c06cd){if(_0x1c06cd){return _0x56f0e5[_0xc53e('0x19')](_0x4e74c9);}return _0x56f0e5[_0xc53e('0x1a')](_0x4e74c9)[_0xc53e('0x1b')]();};}function respondWithResult(_0x358ef3,_0x382e87){_0x382e87=_0x382e87||0xc8;return function(_0x3dc2fa){if(_0x3dc2fa){return _0x358ef3[_0xc53e('0x1a')](_0x382e87)[_0xc53e('0x1c')](_0x3dc2fa);}};}function respondWithFilteredResult(_0x2ad6eb,_0x5b0a88){return function(_0x8a522e){if(_0x8a522e){var _0x191567=typeof _0x5b0a88[_0xc53e('0x1d')]===_0xc53e('0x1e')&&typeof _0x5b0a88[_0xc53e('0x1f')]===_0xc53e('0x1e');var _0x164016=_0x8a522e[_0xc53e('0x20')];var _0x3b550e=_0x191567?0x0:_0x5b0a88['offset'];var _0x546fab=_0x191567?_0x8a522e[_0xc53e('0x20')]:_0x5b0a88[_0xc53e('0x1d')]+_0x5b0a88[_0xc53e('0x1f')];var _0x2e85df;if(_0x546fab>=_0x164016){_0x546fab=_0x164016;_0x2e85df=0xc8;}else{_0x2e85df=0xce;}_0x2ad6eb[_0xc53e('0x1a')](_0x2e85df);return _0x2ad6eb[_0xc53e('0x21')](_0xc53e('0x22'),_0x3b550e+'-'+_0x546fab+'/'+_0x164016)[_0xc53e('0x1c')](_0x8a522e);}return null;};}function patchUpdates(_0x364c80){return function(_0x401af6){try{jsonpatch[_0xc53e('0x23')](_0x401af6,_0x364c80,!![]);}catch(_0x44fd93){return BPromise[_0xc53e('0x24')](_0x44fd93);}return _0x401af6['save']();};}function saveUpdates(_0x47cfdd,_0x531ede){return function(_0x4f4304){if(_0x4f4304){return _0x4f4304[_0xc53e('0x25')](_0x47cfdd)[_0xc53e('0x26')](function(_0x4015c8){return _0x4015c8;});}return null;};}function removeEntity(_0x180811,_0x5009e1){return function(_0x5e5377){if(_0x5e5377){return _0x5e5377[_0xc53e('0x27')]()['then'](function(){var _0x1ae55e=_0x5e5377[_0xc53e('0x28')]({'plain':!![]});var _0x443179=_0xc53e('0x29');return db[_0xc53e('0x2a')]['destroy']({'where':{'type':_0x443179,'resourceId':_0x1ae55e['id']}})[_0xc53e('0x26')](function(){return _0x5e5377;});})['then'](function(){_0x180811['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5056,_0x57a1f5){return function(_0x28240a){if(!_0x28240a){_0x3c5056['sendStatus'](0x194);}return _0x28240a;};}function handleError(_0x24a77e,_0x5112d2){_0x5112d2=_0x5112d2||0x1f4;return function(_0x5ce216){logger[_0xc53e('0x2b')](_0x5ce216[_0xc53e('0x2c')]);if(_0x5ce216[_0xc53e('0x2d')]){delete _0x5ce216[_0xc53e('0x2d')];}_0x24a77e[_0xc53e('0x1a')](_0x5112d2)[_0xc53e('0x2e')](_0x5ce216);};}exports[_0xc53e('0x2f')]=function(_0x2a2ca9,_0x4ace0b){var _0x437893={},_0x311835={},_0x2d36c0={'count':0x0,'rows':[]};var _0x56206b=_[_0xc53e('0x30')](db['AnalyticDefaultReport'][_0xc53e('0x31')],function(_0x2467f4){return{'name':_0x2467f4['fieldName'],'type':_0x2467f4['type'][_0xc53e('0x32')]};});_0x311835[_0xc53e('0x33')]=_[_0xc53e('0x30')](_0x56206b,_0xc53e('0x2d'));_0x311835[_0xc53e('0x34')]=_[_0xc53e('0x35')](_0x2a2ca9[_0xc53e('0x34')]);_0x311835[_0xc53e('0x36')]=_['intersection'](_0x311835[_0xc53e('0x33')],_0x311835[_0xc53e('0x34')]);_0x437893[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x311835[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x39')]));_0x437893[_0xc53e('0x37')]=_0x437893['attributes'][_0xc53e('0x3a')]?_0x437893['attributes']:_0x311835[_0xc53e('0x33')];if(!_0x2a2ca9[_0xc53e('0x34')]['hasOwnProperty'](_0xc53e('0x3b'))){_0x437893[_0xc53e('0x1f')]=qs[_0xc53e('0x1f')](_0x2a2ca9['query'][_0xc53e('0x1f')]);_0x437893[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x1d')]);}_0x437893[_0xc53e('0x3c')]=qs[_0xc53e('0x3d')](_0x2a2ca9['query'][_0xc53e('0x3d')]);_0x437893[_0xc53e('0x3e')]=qs[_0xc53e('0x36')](_['pick'](_0x2a2ca9[_0xc53e('0x34')],_0x311835['filters']),_0x56206b);if(_0x2a2ca9[_0xc53e('0x34')][_0xc53e('0x3f')]){_0x437893[_0xc53e('0x3e')]=_[_0xc53e('0x40')](_0x437893[_0xc53e('0x3e')],{'$or':_['map'](_0x56206b,function(_0x3dda55){if(_0x3dda55[_0xc53e('0x41')]!=='VIRTUAL'){var _0x5b7354={};_0x5b7354[_0x3dda55['name']]={'$like':'%'+_0x2a2ca9['query'][_0xc53e('0x3f')]+'%'};return _0x5b7354;}})});}_0x437893=_[_0xc53e('0x40')]({},_0x437893,_0x2a2ca9['options']);var _0x460ee6={'where':_0x437893['where']};return db['AnalyticDefaultReport']['count'](_0x460ee6)[_0xc53e('0x26')](function(_0x4ba96f){_0x2d36c0['count']=_0x4ba96f;if(_0x2a2ca9[_0xc53e('0x34')]['includeAll']){_0x437893[_0xc53e('0x42')]=[{'all':!![]}];}return db[_0xc53e('0x43')]['findAll'](_0x437893);})[_0xc53e('0x26')](function(_0x3a4ebc){_0x2d36c0['rows']=_0x3a4ebc;return _0x2d36c0;})[_0xc53e('0x26')](respondWithFilteredResult(_0x4ace0b,_0x437893))['catch'](handleError(_0x4ace0b,null));};exports['show']=function(_0x481e6d,_0x4efee5){var _0x887d78={'raw':!![],'where':{'id':_0x481e6d[_0xc53e('0x44')]['id']}},_0x17b586={};_0x17b586['model']=_[_0xc53e('0x35')](db[_0xc53e('0x43')]['rawAttributes']);_0x17b586['query']=_[_0xc53e('0x35')](_0x481e6d[_0xc53e('0x34')]);_0x17b586[_0xc53e('0x36')]=_['intersection'](_0x17b586[_0xc53e('0x33')],_0x17b586[_0xc53e('0x34')]);_0x887d78[_0xc53e('0x37')]=_[_0xc53e('0x38')](_0x17b586[_0xc53e('0x33')],qs[_0xc53e('0x39')](_0x481e6d[_0xc53e('0x34')]['fields']));_0x887d78[_0xc53e('0x37')]=_0x887d78[_0xc53e('0x37')][_0xc53e('0x3a')]?_0x887d78['attributes']:_0x17b586[_0xc53e('0x33')];if(_0x481e6d[_0xc53e('0x34')][_0xc53e('0x45')]){_0x887d78[_0xc53e('0x42')]=[{'all':!![]}];}_0x887d78=_[_0xc53e('0x40')]({},_0x887d78,_0x481e6d[_0xc53e('0x46')]);return db['AnalyticDefaultReport'][_0xc53e('0x47')](_0x887d78)[_0xc53e('0x26')](handleEntityNotFound(_0x4efee5,null))[_0xc53e('0x26')](respondWithResult(_0x4efee5,null))['catch'](handleError(_0x4efee5,null));};exports[_0xc53e('0x48')]=function(_0x1d2491,_0x1eeb65){return db[_0xc53e('0x43')][_0xc53e('0x48')](_0x1d2491[_0xc53e('0x49')],{})[_0xc53e('0x26')](function(_0x2ba2b4){var _0x34de2d=_0x1d2491[_0xc53e('0x4a')]['get']({'plain':!![]});if(!_0x34de2d)throw new Error(_0xc53e('0x4b'));if(_0x34de2d[_0xc53e('0x4c')]===_0xc53e('0x4a')){var _0x3d74ac=_0x2ba2b4[_0xc53e('0x28')]({'plain':!![]});var _0x52dac7='Reports';return db[_0xc53e('0x4d')]['find']({'where':{'name':_0x52dac7,'userProfileId':_0x34de2d[_0xc53e('0x4e')]},'raw':!![]})['then'](function(_0x3a49a4){if(_0x3a49a4&&_0x3a49a4[_0xc53e('0x4f')]===0x0){return db[_0xc53e('0x2a')]['create']({'name':_0x3d74ac[_0xc53e('0x2d')],'resourceId':_0x3d74ac['id'],'type':_0xc53e('0x29'),'sectionId':_0x3a49a4['id']},{})[_0xc53e('0x26')](function(){return _0x2ba2b4;});}else{return _0x2ba2b4;}})['catch'](function(_0x2f7df2){logger['error'](_0xc53e('0x50'),_0x2f7df2);throw _0x2f7df2;});}return _0x2ba2b4;})[_0xc53e('0x26')](respondWithResult(_0x1eeb65,0xc9))['catch'](handleError(_0x1eeb65,null));};exports[_0xc53e('0x25')]=function(_0x1515ea,_0x5bba72){if(_0x1515ea[_0xc53e('0x49')]['id']){delete _0x1515ea[_0xc53e('0x49')]['id'];}return db[_0xc53e('0x43')][_0xc53e('0x47')]({'where':{'id':_0x1515ea[_0xc53e('0x44')]['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x5bba72,null))[_0xc53e('0x26')](saveUpdates(_0x1515ea[_0xc53e('0x49')],null))[_0xc53e('0x26')](respondWithResult(_0x5bba72,null))[_0xc53e('0x51')](handleError(_0x5bba72,null));};exports[_0xc53e('0x27')]=function(_0x47dd5a,_0x8364f6){return db['AnalyticDefaultReport'][_0xc53e('0x47')]({'where':{'id':_0x47dd5a['params']['id']}})[_0xc53e('0x26')](handleEntityNotFound(_0x8364f6,null))[_0xc53e('0x26')](removeEntity(_0x8364f6,null))['catch'](handleError(_0x8364f6,null));};exports[_0xc53e('0x52')]=function(_0x7f0bc0,_0x9c0112){var _0x432a91=0xa;var _0x53083b=[_0xc53e('0x53'),_0xc53e('0x54'),'right_join','cross_join'];var _0x3c0aa1={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x5fcd58={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x37b091=function(_0x31e22b){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x31e22b);};var _0x13bf71=function(_0x16d8a1){if(!_0x16d8a1||!_0x16d8a1[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xdc0e49='(',_0x520738=0x0;_0x520738<_0x16d8a1[_0xc53e('0x61')]['length'];_0x520738+=0x1){_0x520738>0x0&&(_0xdc0e49+='\x20'+_0x16d8a1[_0xc53e('0x62')]+'\x20');_0xdc0e49+=_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]?_0x13bf71(_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x63')]):_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x64')]+'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738]['condition']+(_0x37b091(_0x16d8a1['rules'][_0x520738]['condition'])?'\x20'+_0x16d8a1[_0xc53e('0x61')][_0x520738][_0xc53e('0x65')]:'');}return _0xdc0e49+')';};var _0x37ac78={'where':{'id':_0x7f0bc0['params']['id']}},_0x25e4b6,_0x247d99,_0x160ca3,_0x3581ab,_0x5a9596;_0x37ac78=_['merge']({},_0x37ac78,_0x7f0bc0[_0xc53e('0x46')]);return db[_0xc53e('0x43')]['find'](_0x37ac78)[_0xc53e('0x26')](function(_0x235a6b){if(_0x235a6b){_0x25e4b6=_0x235a6b;return _0x235a6b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x22829b){if(_0x22829b){if(!_0x22829b[_0xc53e('0x3a')]){throw new db['Sequelize']['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x247d99=_0x22829b;return db[_0xc53e('0x68')][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x29ee08){if(_0x29ee08){_0x160ca3=_[_0xc53e('0x6a')](_0x29ee08,'id');var _0x5a1a4b;var _0x2b6734=squel[_0xc53e('0x6b')]();_0x2b6734[_0xc53e('0x6c')](_0x25e4b6[_0xc53e('0x6d')]);for(var _0x4d2609=0x0;_0x4d2609<_0x247d99[_0xc53e('0x3a')];_0x4d2609+=0x1){_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x6e')]?_0x160ca3[_0x247d99[_0x4d2609][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x247d99[_0x4d2609][_0xc53e('0x64')];_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x70')]?_['replace'](_0x3c0aa1[_0x247d99[_0x4d2609][_0xc53e('0x70')]],'%s',_0x5a1a4b):_0x5a1a4b;_0x5a1a4b=_0x247d99[_0x4d2609][_0xc53e('0x71')]?_[_0xc53e('0x72')](_0x5fcd58[_0x247d99[_0x4d2609][_0xc53e('0x71')]],'%s',_0x5a1a4b):_0x5a1a4b;if(_0x247d99[_0x4d2609]['groupBy']){_0x2b6734['group'](_0x5a1a4b);}_0x247d99[_0x4d2609][_0xc53e('0x73')]&&_0x2b6734[_0xc53e('0x3c')](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x2b6734['field'](_0x5a1a4b,_0x247d99[_0x4d2609][_0xc53e('0x75')]||_0x5a1a4b);}if(_0x25e4b6['joins']){_0x25e4b6[_0xc53e('0x76')]=JSON['parse'](_0x25e4b6[_0xc53e('0x76')]);for(var _0x4e128a=0x0;_0x4e128a<_0x25e4b6[_0xc53e('0x76')][_0xc53e('0x3a')];_0x4e128a+=0x1){if(_0x25e4b6['joins'][_0x4e128a][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x53083b,_0x25e4b6['joins'][_0x4e128a]['type'])&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')]&&_0x25e4b6['joins'][_0x4e128a]['foreignTable']&&_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']){_0x2b6734[_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['type']](_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x25e4b6[_0xc53e('0x6d')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x77')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a][_0xc53e('0x78')],_0x25e4b6[_0xc53e('0x76')][_0x4e128a]['foreignKey']));}}}if(_0x25e4b6[_0xc53e('0x7a')]){_0x25e4b6['conditions']=JSON[_0xc53e('0x7b')](_0x25e4b6[_0xc53e('0x7a')]);_0x2b6734[_0xc53e('0x3e')](_0x13bf71(_0x25e4b6[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x5a9596=_0x2b6734[_0xc53e('0x7c')]();_0x2b6734[_0xc53e('0x1f')](_0x432a91);_0x2b6734[_0xc53e('0x1d')](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x2b6734['toString']());return dbH[_0xc53e('0x7f')]['query'](_0x2b6734[_0xc53e('0x80')](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']});}})[_0xc53e('0x26')](respondWithResult(_0x9c0112,null))[_0xc53e('0x51')](handleError(_0x9c0112,null));};function runReport(_0x381652,_0xec3738,_0x3a84a2){var _0x508671=_0xec3738[_0xc53e('0x2d')];var _0x48e337=0xa;var _0x56c66f=[_0xc53e('0x53'),_0xc53e('0x54'),_0xc53e('0x82'),'cross_join'];var _0x35b6dc={'SUM':_0xc53e('0x83'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xc53e('0x85'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xc53e('0x58')};var _0x3d2636={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':'DATE(%s)','HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x4c8112=function(_0x1a8ae4){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),'IS\x20NOT\x20EMPTY'],_0x1a8ae4);};var _0x3dac82=function(_0x325287){if(!_0x325287||!_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')]){return'';}for(var _0xe6a976='(',_0x4102bc=0x0;_0x4102bc<_0x325287[_0xc53e('0x61')][_0xc53e('0x3a')];_0x4102bc+=0x1){_0x4102bc>0x0&&(_0xe6a976+='\x20'+_0x325287[_0xc53e('0x62')]+'\x20');_0xe6a976+=_0x325287['rules'][_0x4102bc][_0xc53e('0x63')]?_0x3dac82(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x63')]):_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x64')]+'\x20'+_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')]+(_0x4c8112(_0x325287[_0xc53e('0x61')][_0x4102bc][_0xc53e('0x88')])?'\x20'+_0x325287['rules'][_0x4102bc][_0xc53e('0x65')]:'');}return _0xe6a976+')';};var _0x190509={'where':{'id':_0x381652['id']}},_0x110e32,_0x2135d4,_0x4bbf8a,_0x31b06d,_0x21fc8d;_0x190509=_[_0xc53e('0x40')]({},_0x190509,_0x3a84a2);return db[_0xc53e('0x43')]['find'](_0x190509)[_0xc53e('0x26')](function(_0x138870){if(_0x138870){_0x110e32=_0x138870;return _0x138870[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x621e78){if(_0x621e78){if(!_0x621e78[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))]['ValidationErrorItem'](_0xc53e('0x67'),0x193);}_0x2135d4=_0x621e78;return db['AnalyticMetric'][_0xc53e('0x69')]({'raw':!![]});}return null;})[_0xc53e('0x26')](function(_0x3fe278){if(_0x3fe278){_0x4bbf8a=_['keyBy'](_0x3fe278,'id');var _0x7c56eb;var _0x36dffe=squel[_0xc53e('0x6b')]();_0x36dffe['from'](_0x110e32[_0xc53e('0x6d')]);for(var _0xedb93a=0x0;_0xedb93a<_0x2135d4[_0xc53e('0x3a')];_0xedb93a+=0x1){_0x7c56eb=_0x2135d4[_0xedb93a]['MetricId']?_0x4bbf8a[_0x2135d4[_0xedb93a][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x2135d4[_0xedb93a][_0xc53e('0x64')];_0x7c56eb=_0x2135d4[_0xedb93a][_0xc53e('0x70')]?_[_0xc53e('0x72')](_0x35b6dc[_0x2135d4[_0xedb93a]['function']],'%s',_0x7c56eb):_0x7c56eb;_0x7c56eb=_0x2135d4[_0xedb93a]['format']?_['replace'](_0x3d2636[_0x2135d4[_0xedb93a][_0xc53e('0x71')]],'%s',_0x7c56eb):_0x7c56eb;if(_0x2135d4[_0xedb93a][_0xc53e('0x8a')]){_0x36dffe[_0xc53e('0x63')](_0x7c56eb);}_0x2135d4[_0xedb93a][_0xc53e('0x73')]&&_0x36dffe['order'](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x73')]==='DESC'?![]:!![]);_0x36dffe[_0xc53e('0x64')](_0x7c56eb,_0x2135d4[_0xedb93a][_0xc53e('0x75')]||_0x7c56eb);}if(_0x110e32[_0xc53e('0x76')]){_0x110e32[_0xc53e('0x76')]=JSON['parse'](_0x110e32[_0xc53e('0x76')]);for(var _0xc23eef=0x0;_0xc23eef<_0x110e32[_0xc53e('0x76')][_0xc53e('0x3a')];_0xc23eef+=0x1){if(_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]&&_[_0xc53e('0x5c')](_0x56c66f,_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')])&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')]&&_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x8b')]){_0x36dffe[_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x41')]](_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x78')],null,util[_0xc53e('0x71')](_0xc53e('0x79'),_0x110e32[_0xc53e('0x6d')],_0x110e32[_0xc53e('0x76')][_0xc23eef][_0xc53e('0x77')],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignTable'],_0x110e32[_0xc53e('0x76')][_0xc23eef]['foreignKey']));}}}if(_0x110e32[_0xc53e('0x7a')]){_0x110e32[_0xc53e('0x7a')]=JSON['parse'](_0x110e32[_0xc53e('0x7a')]);_0x36dffe[_0xc53e('0x3e')](_0x3dac82(_0x110e32[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x21fc8d=_0x36dffe[_0xc53e('0x7c')]();_0x36dffe[_0xc53e('0x1f')](_0x48e337);_0x36dffe[_0xc53e('0x1d')](0x0);return;}})[_0xc53e('0x26')](function(){if(_0xec3738[_0xc53e('0x8c')]==='web'){return null;}var _0x37c8e6=_['merge'](_0xec3738,{'name':_0xec3738[_0xc53e('0x8d')]||_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],'basename':_0x508671,'savename':util[_0xc53e('0x71')](_0xc53e('0x8e'),_0xec3738[_0xc53e('0x2d')]||_0x110e32[_0xc53e('0x2d')],require(_0xc53e('0x8f'))[_0xc53e('0x90')](0x4),_0xec3738[_0xc53e('0x8c')]||_0xc53e('0x91')),'reportId':_0x110e32['id'],'reportType':_0xc53e('0x92')});return db[_0xc53e('0x93')]['create'](_0x37c8e6,{'raw':!![]});})[_0xc53e('0x26')](function(_0x575ef5){if(_0x110e32[_0xc53e('0x6d')]===_0xc53e('0x94')){_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xec3738['startDate'],_0xec3738[_0xc53e('0x95')]);}else{_0x21fc8d[_0xc53e('0x3e')](_0x110e32[_0xc53e('0x6d')]+_0xc53e('0x96'),_0xec3738['startDate'],_0xec3738['endDate']);}if(_0x575ef5){logger[_0xc53e('0x97')](_0xc53e('0x98'),_0x21fc8d[_0xc53e('0x80')]());require(_0xc53e('0x99'))[_0xc53e('0x9a')](path[_0xc53e('0x53')](__dirname,'../../components/export/',_0x575ef5[_0xc53e('0x8c')]),[_0x575ef5['id'],_0x21fc8d[_0xc53e('0x80')](),path[_0xc53e('0x53')](__dirname,_0xc53e('0x9b'),_0x575ef5[_0xc53e('0x9c')]),_0x508671]);return _0x575ef5;}else{var _0x4f527e=squel[_0xc53e('0x6b')]();_0x4f527e[_0xc53e('0x6c')]('('+_0x21fc8d[_0xc53e('0x80')]()+')',_0xc53e('0x9d'));_0x4f527e[_0xc53e('0x64')](_0xc53e('0x9e'),_0xc53e('0x20'));_0x21fc8d[_0xc53e('0x1f')](_0xec3738[_0xc53e('0x1f')]||_0x48e337);_0x21fc8d[_0xc53e('0x1d')](_0xec3738[_0xc53e('0x1d')]||0x0);return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x4f527e['toString'](),{'type':dbH[_0xc53e('0x7f')][_0xc53e('0x81')]['SELECT']})[_0xc53e('0x26')](function(_0x4ee56b){if(!_0x4ee56b['length']){_0x31b06d=0x0;}else{_0x31b06d=_0x4ee56b[0x0][_0xc53e('0x20')]||0x0;}return dbH['sequelize'][_0xc53e('0x34')](_0x21fc8d['toString'](),{'type':dbH[_0xc53e('0x7f')]['QueryTypes'][_0xc53e('0x9f')]});})[_0xc53e('0x26')](function(_0x10ad32){return{'rows':_0x10ad32||[],'count':_0x31b06d};});}});}exports['run']=function(_0xf3f34a,_0x5dd87e){return runReport(_0xf3f34a[_0xc53e('0x44')],_0xf3f34a[_0xc53e('0x34')],_0xf3f34a[_0xc53e('0x46')])[_0xc53e('0x26')](respondWithResult(_0x5dd87e,null))[_0xc53e('0x51')](handleError(_0x5dd87e,null));};exports[_0xc53e('0xa0')]=runReport;exports[_0xc53e('0x34')]=function(_0x265292,_0x2c776c){var _0x383f22=0xa;var _0x51f2a4=['join',_0xc53e('0x54'),'right_join',_0xc53e('0xa1')];var _0xbc960={'SUM':_0xc53e('0x83'),'COUNT':_0xc53e('0xa2'),'COUNT DISTINCT':_0xc53e('0x84'),'MAX':_0xc53e('0x55'),'MIN':_0xc53e('0xa3'),'AVG':_0xc53e('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xc53e('0x57'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x34cb12={'SEC_TO_TIME':_0xc53e('0x59'),'DATE':_0xc53e('0x5a'),'HOUR':_0xc53e('0x86'),'ROUND':_0xc53e('0x87'),'UNIX_TIMESTAMP':_0xc53e('0x5b')};var _0x227e0c=function(_0x4c0802){return!_[_0xc53e('0x5c')]([_0xc53e('0x5d'),_0xc53e('0x5e'),_0xc53e('0x5f'),_0xc53e('0x60')],_0x4c0802);};var _0x590fb6=function(_0x15d269){if(!_0x15d269||!_0x15d269[_0xc53e('0x61')]['length']){return'';}for(var _0x5253b1='(',_0x208c17=0x0;_0x208c17<_0x15d269['rules'][_0xc53e('0x3a')];_0x208c17+=0x1){_0x208c17>0x0&&(_0x5253b1+='\x20'+_0x15d269[_0xc53e('0x62')]+'\x20');_0x5253b1+=_0x15d269['rules'][_0x208c17]['group']?_0x590fb6(_0x15d269[_0xc53e('0x61')][_0x208c17]['group']):_0x15d269[_0xc53e('0x61')][_0x208c17]['field']+'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')]+(_0x227e0c(_0x15d269[_0xc53e('0x61')][_0x208c17][_0xc53e('0x88')])?'\x20'+_0x15d269[_0xc53e('0x61')][_0x208c17]['value']:'');}return _0x5253b1+')';};var _0x2f5d22={'where':{'id':_0x265292[_0xc53e('0x44')]['id']}},_0x478e57,_0x5e427a,_0x3e666b,_0x365a98,_0x375d8b;_0x2f5d22=_[_0xc53e('0x40')]({},_0x2f5d22,_0x265292[_0xc53e('0x46')]);return db[_0xc53e('0x43')][_0xc53e('0x47')](_0x2f5d22)[_0xc53e('0x26')](function(_0x3b778b){if(_0x3b778b){_0x478e57=_0x3b778b;return _0x3b778b[_0xc53e('0x66')]();}return null;})[_0xc53e('0x26')](function(_0x55581a){if(_0x55581a){if(!_0x55581a[_0xc53e('0x3a')]){throw new db[(_0xc53e('0x89'))][(_0xc53e('0xa4'))](_0xc53e('0x67'),0x193);}_0x5e427a=_0x55581a;return db[_0xc53e('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x34c717){if(_0x34c717){_0x3e666b=_[_0xc53e('0x6a')](_0x34c717,'id');var _0x2718fe;var _0x15014e=squel[_0xc53e('0x6b')]();_0x15014e[_0xc53e('0x6c')](_0x478e57[_0xc53e('0x6d')]);for(var _0x2d80f5=0x0;_0x2d80f5<_0x5e427a[_0xc53e('0x3a')];_0x2d80f5+=0x1){_0x2718fe=_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]?_0x3e666b[_0x5e427a[_0x2d80f5][_0xc53e('0x6e')]][_0xc53e('0x6f')]:_0x5e427a[_0x2d80f5][_0xc53e('0x64')];_0x2718fe=_0x5e427a[_0x2d80f5]['function']?_[_0xc53e('0x72')](_0xbc960[_0x5e427a[_0x2d80f5][_0xc53e('0x70')]],'%s',_0x2718fe):_0x2718fe;_0x2718fe=_0x5e427a[_0x2d80f5]['format']?_[_0xc53e('0x72')](_0x34cb12[_0x5e427a[_0x2d80f5][_0xc53e('0x71')]],'%s',_0x2718fe):_0x2718fe;if(_0x5e427a[_0x2d80f5][_0xc53e('0x8a')]){_0x15014e['group'](_0x2718fe);}_0x5e427a[_0x2d80f5]['orderBy']&&_0x15014e[_0xc53e('0x3c')](_0x2718fe,_0x5e427a[_0x2d80f5][_0xc53e('0x73')]===_0xc53e('0x74')?![]:!![]);_0x15014e[_0xc53e('0x64')](_0x2718fe,_0x5e427a[_0x2d80f5]['alias']||_0x2718fe);}if(_0x478e57[_0xc53e('0x76')]){_0x478e57[_0xc53e('0x76')]=JSON[_0xc53e('0x7b')](_0x478e57['joins']);for(var _0x48d301=0x0;_0x48d301<_0x478e57[_0xc53e('0x76')][_0xc53e('0x3a')];_0x48d301+=0x1){if(_0x478e57[_0xc53e('0x76')][_0x48d301]['type']&&_[_0xc53e('0x5c')](_0x51f2a4,_0x478e57[_0xc53e('0x76')][_0x48d301]['type'])&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')]&&_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x78')]&&_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']){_0x15014e[_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x41')]](_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],null,util['format'](_0xc53e('0x79'),_0x478e57[_0xc53e('0x6d')],_0x478e57[_0xc53e('0x76')][_0x48d301][_0xc53e('0x77')],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignTable'],_0x478e57[_0xc53e('0x76')][_0x48d301]['foreignKey']));}}}if(_0x478e57[_0xc53e('0x7a')]){_0x478e57[_0xc53e('0x7a')]=JSON[_0xc53e('0x7b')](_0x478e57[_0xc53e('0x7a')]);_0x15014e[_0xc53e('0x3e')](_0x590fb6(_0x478e57[_0xc53e('0x7a')][_0xc53e('0x63')]));}_0x375d8b=_0x15014e[_0xc53e('0x7c')]();_0x15014e[_0xc53e('0x1f')](_0x383f22);_0x15014e['offset'](0x0);logger[_0xc53e('0x7d')](_0xc53e('0x7e'),_0x15014e[_0xc53e('0x80')]());return dbH[_0xc53e('0x7f')][_0xc53e('0x34')](_0x15014e[_0xc53e('0x80')](),{'type':dbH['sequelize'][_0xc53e('0x81')][_0xc53e('0x9f')]});}})[_0xc53e('0x26')](function(){return{'sql':_0x375d8b[_0xc53e('0x80')]()};})[_0xc53e('0x26')](respondWithResult(_0x2c776c,null))[_0xc53e('0x51')](handleError(_0x2c776c,null));};
\ No newline at end of file
+var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x58175c,_0x2d9373){var _0x55b88f=function(_0x13ed84){while(--_0x13ed84){_0x58175c['push'](_0x58175c['shift']());}};_0x55b88f(++_0x2d9373);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xc4aa[_0x51020b];return _0x371e47;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
index edbad79..4f7db58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b5=['request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','define','analytics_default_reports','lodash','util','../../config/logger','moment','bluebird'];(function(_0x4b2a2e,_0x2e318c){var _0x179549=function(_0x926dd3){while(--_0x926dd3){_0x4b2a2e['push'](_0x4b2a2e['shift']());}};_0x179549(++_0x2e318c);}(_0x38b5,0x8b));var _0x538b=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x38b5[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0x538b('0x0'));var util=require(_0x538b('0x1'));var logger=require(_0x538b('0x2'))('api');var moment=require(_0x538b('0x3'));var BPromise=require(_0x538b('0x4'));var rp=require(_0x538b('0x5'));var fs=require('fs');var path=require(_0x538b('0x6'));var rimraf=require(_0x538b('0x7'));var config=require(_0x538b('0x8'));var attributes=require(_0x538b('0x9'));module['exports']=function(_0x566598,_0x1f7e73){return _0x566598[_0x538b('0xa')]('AnalyticDefaultReport',attributes,{'tableName':_0x538b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x44b8=['../../config/environment','exports','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x4ac6a0,_0x4d28f9){var _0x1d9a5e=function(_0x4e5bdc){while(--_0x4e5bdc){_0x4ac6a0['push'](_0x4ac6a0['shift']());}};_0x1d9a5e(++_0x4d28f9);}(_0x44b8,0x185));var _0x844b=function(_0x5a7bc0,_0x4c2019){_0x5a7bc0=_0x5a7bc0-0x0;var _0x75d2c5=_0x44b8[_0x5a7bc0];return _0x75d2c5;};'use strict';var _=require(_0x844b('0x0'));var util=require(_0x844b('0x1'));var logger=require(_0x844b('0x2'))('api');var moment=require(_0x844b('0x3'));var BPromise=require('bluebird');var rp=require(_0x844b('0x4'));var fs=require('fs');var path=require(_0x844b('0x5'));var rimraf=require(_0x844b('0x6'));var config=require(_0x844b('0x7'));var attributes=require('./analyticDefaultReport.attributes');module[_0x844b('0x8')]=function(_0x2a4f6e,_0x17ce2b){return _0x2a4f6e['define'](_0x844b('0x9'),attributes,{'tableName':_0x844b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17f67a7..284545b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb8=['util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x2da8e2,_0x2a0674){var _0xe40a39=function(_0x1c4021){while(--_0x1c4021){_0x2da8e2['push'](_0x2da8e2['shift']());}};_0xe40a39(++_0x2a0674);}(_0xacb8,0x164));var _0x8acb=function(_0x1b65fa,_0x525365){_0x1b65fa=_0x1b65fa-0x0;var _0x2e3e6b=_0xacb8[_0x1b65fa];return _0x2e3e6b;};'use strict';var _=require(_0x8acb('0x0'));var util=require(_0x8acb('0x1'));var moment=require(_0x8acb('0x2'));var BPromise=require(_0x8acb('0x3'));var rs=require(_0x8acb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8acb('0x5'));var logger=require('../../config/logger')(_0x8acb('0x6'));var config=require(_0x8acb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8acb('0x8')][_0x8acb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x314466,_0x58a4a2,_0x179602){return new BPromise(function(_0x15ab7b,_0x45c84f){return client['request'](_0x314466,_0x179602)[_0x8acb('0xa')](function(_0x3ad5ea){logger[_0x8acb('0xb')](_0x8acb('0xc'),_0x58a4a2,_0x8acb('0xd'));logger['debug'](_0x8acb('0xe'),_0x58a4a2,_0x8acb('0xd'),JSON[_0x8acb('0xf')](_0x3ad5ea));if(_0x3ad5ea[_0x8acb('0x10')]){if(_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x11')]===0x1f4){logger[_0x8acb('0x10')](_0x8acb('0xc'),_0x58a4a2,_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x12')]);return _0x45c84f(_0x3ad5ea[_0x8acb('0x10')]['message']);}logger[_0x8acb('0x10')](_0x8acb('0xc'),_0x58a4a2,_0x3ad5ea[_0x8acb('0x10')][_0x8acb('0x12')]);return _0x15ab7b(_0x3ad5ea[_0x8acb('0x10')]['message']);}else{logger[_0x8acb('0xb')](_0x8acb('0xc'),_0x58a4a2,_0x8acb('0xd'));_0x15ab7b(_0x3ad5ea[_0x8acb('0x13')][_0x8acb('0x12')]);}})[_0x8acb('0x14')](function(_0x575e55){logger['error'](_0x8acb('0xc'),_0x58a4a2,_0x575e55);_0x45c84f(_0x575e55);});});}
\ No newline at end of file
+var _0x1763=['util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','AnalyticDefaultReport,\x20%s,\x20%s','result','catch','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1763,0x11d));var _0x3176=function(_0x9f3e89,_0x39b12c){_0x9f3e89=_0x9f3e89-0x0;var _0x12d365=_0x1763[_0x9f3e89];return _0x12d365;};'use strict';var _=require(_0x3176('0x0'));var util=require(_0x3176('0x1'));var moment=require('moment');var BPromise=require(_0x3176('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3176('0x3'));var db=require(_0x3176('0x4'))['db'];var utils=require(_0x3176('0x5'));var logger=require('../../config/logger')(_0x3176('0x6'));var config=require('../../config/environment');var jayson=require(_0x3176('0x7'));var client=jayson[_0x3176('0x8')][_0x3176('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50b25a,_0x20a6d3,_0x108b26){return new BPromise(function(_0x1dfa3e,_0xb9d018){return client[_0x3176('0xa')](_0x50b25a,_0x108b26)['then'](function(_0x2d424a){logger[_0x3176('0xb')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x20a6d3,_0x3176('0xc'));logger[_0x3176('0xd')](_0x3176('0xe'),_0x20a6d3,'request\x20sent',JSON[_0x3176('0xf')](_0x2d424a));if(_0x2d424a[_0x3176('0x10')]){if(_0x2d424a[_0x3176('0x10')][_0x3176('0x11')]===0x1f4){logger[_0x3176('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x20a6d3,_0x2d424a['error'][_0x3176('0x12')]);return _0xb9d018(_0x2d424a[_0x3176('0x10')][_0x3176('0x12')]);}logger[_0x3176('0x10')](_0x3176('0x13'),_0x20a6d3,_0x2d424a[_0x3176('0x10')][_0x3176('0x12')]);return _0x1dfa3e(_0x2d424a[_0x3176('0x10')][_0x3176('0x12')]);}else{logger['info'](_0x3176('0x13'),_0x20a6d3,_0x3176('0xc'));_0x1dfa3e(_0x2d424a[_0x3176('0x14')]['message']);}})[_0x3176('0x15')](function(_0x1241d6){logger[_0x3176('0x10')](_0x3176('0x13'),_0x20a6d3,_0x1241d6);_0xb9d018(_0x1241d6);});});}
\ No newline at end of file
index 10f7085..05ce882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf501=['/:id/run','/:id/query','query','put','update','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','show','preview'];(function(_0x4945a7,_0x5e2a23){var _0x25f6ca=function(_0x5db467){while(--_0x5db467){_0x4945a7['push'](_0x4945a7['shift']());}};_0x25f6ca(++_0x5e2a23);}(_0xf501,0xcd));var _0x1f50=function(_0x16b1be,_0x591490){_0x16b1be=_0x16b1be-0x0;var _0x515803=_0xf501[_0x16b1be];return _0x515803;};'use strict';var multer=require(_0x1f50('0x0'));var util=require(_0x1f50('0x1'));var path=require(_0x1f50('0x2'));var timeout=require(_0x1f50('0x3'));var express=require(_0x1f50('0x4'));var router=express[_0x1f50('0x5')]();var fs_extra=require(_0x1f50('0x6'));var auth=require(_0x1f50('0x7'));var interaction=require(_0x1f50('0x8'));var config=require('../../config/environment');var controller=require(_0x1f50('0x9'));router[_0x1f50('0xa')]('/',auth[_0x1f50('0xb')](),controller[_0x1f50('0xc')]);router[_0x1f50('0xa')]('/:id',auth[_0x1f50('0xb')](),controller[_0x1f50('0xd')]);router['get']('/:id/preview',auth[_0x1f50('0xb')](),controller[_0x1f50('0xe')]);router[_0x1f50('0xa')](_0x1f50('0xf'),auth[_0x1f50('0xb')](),controller['run']);router[_0x1f50('0xa')](_0x1f50('0x10'),auth[_0x1f50('0xb')](),controller[_0x1f50('0x11')]);router['post']('/',auth[_0x1f50('0xb')](),controller['create']);router[_0x1f50('0x12')]('/:id',auth[_0x1f50('0xb')](),controller[_0x1f50('0x13')]);router['delete'](_0x1f50('0x14'),auth[_0x1f50('0xb')](),controller['destroy']);module[_0x1f50('0x15')]=router;
\ No newline at end of file
+var _0x4523=['index','get','show','preview','/:id/run','/:id/query','post','put','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x4523,0x165));var _0x3452=function(_0x5db2b7,_0x4a0830){_0x5db2b7=_0x5db2b7-0x0;var _0x3dab8f=_0x4523[_0x5db2b7];return _0x3dab8f;};'use strict';var multer=require(_0x3452('0x0'));var util=require(_0x3452('0x1'));var path=require(_0x3452('0x2'));var timeout=require('connect-timeout');var express=require(_0x3452('0x3'));var router=express[_0x3452('0x4')]();var fs_extra=require(_0x3452('0x5'));var auth=require(_0x3452('0x6'));var interaction=require(_0x3452('0x7'));var config=require(_0x3452('0x8'));var controller=require(_0x3452('0x9'));router['get']('/',auth[_0x3452('0xa')](),controller[_0x3452('0xb')]);router[_0x3452('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x3452('0xd')]);router[_0x3452('0xc')]('/:id/preview',auth['isAuthenticated'](),controller[_0x3452('0xe')]);router[_0x3452('0xc')](_0x3452('0xf'),auth[_0x3452('0xa')](),controller['run']);router['get'](_0x3452('0x10'),auth[_0x3452('0xa')](),controller['query']);router[_0x3452('0x11')]('/',auth[_0x3452('0xa')](),controller['create']);router[_0x3452('0x12')](_0x3452('0x13'),auth[_0x3452('0xa')](),controller['update']);router[_0x3452('0x14')](_0x3452('0x13'),auth[_0x3452('0xa')](),controller[_0x3452('0x15')]);module[_0x3452('0x16')]=router;
\ No newline at end of file
index be0bee5..5c10b3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dc4=['xlsx','DATE','Loading','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf'];(function(_0x4387b6,_0x4e6f20){var _0x2184e4=function(_0x5f32d4){while(--_0x5f32d4){_0x4387b6['push'](_0x4387b6['shift']());}};_0x2184e4(++_0x4e6f20);}(_0x0dc4,0x65));var _0x40dc=function(_0x43fdf8,_0x8426b3){_0x43fdf8=_0x43fdf8-0x0;var _0x1160c6=_0x0dc4[_0x43fdf8];return _0x1160c6;};'use strict';var Sequelize=require(_0x40dc('0x0'));var moment=require(_0x40dc('0x1'));module[_0x40dc('0x2')]={'name':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x40dc('0x4')](_0x40dc('0x5'),_0x40dc('0x6'),_0x40dc('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x40dc('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x40dc('0x8')]},'endDate':{'type':Sequelize[_0x40dc('0x8')]},'status':{'type':Sequelize[_0x40dc('0x3')],'defaultValue':_0x40dc('0x9')},'type':{'type':Sequelize[_0x40dc('0x4')]('manual','scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x40dc('0xa')](0xb)[_0x40dc('0xb')]},'reportType':{'type':Sequelize[_0x40dc('0x3')]}};
\ No newline at end of file
+var _0x9715=['xlsx','DATE','Loading','ENUM','manual','scheduled','sequelize','moment','STRING','csv','pdf'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9715,0x95));var _0x5971=function(_0x476991,_0x25cd7b){_0x476991=_0x476991-0x0;var _0x434e79=_0x9715[_0x476991];return _0x434e79;};'use strict';var Sequelize=require(_0x5971('0x0'));var moment=require(_0x5971('0x1'));module['exports']={'name':{'type':Sequelize[_0x5971('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x5971('0x3'),_0x5971('0x4'),_0x5971('0x5')),'allowNull':![],'defaultValue':_0x5971('0x3')},'savename':{'type':Sequelize[_0x5971('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x5971('0x6')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x5971('0x2')],'defaultValue':_0x5971('0x7')},'type':{'type':Sequelize[_0x5971('0x8')](_0x5971('0x9'),_0x5971('0xa')),'allowNull':![],'defaultValue':_0x5971('0x9')},'reportId':{'type':Sequelize['INTEGER'](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b9a35cb..d88ffd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8280=['sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','ExtractedReports','end','error','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','show','params','includeAll','find','create','body','user','get','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','join','root','Sequelize','Report\x20not\x20found\x20or\x20empty','server/files/reports','format','eml-format','zip-dir','moment','util'];(function(_0x2f407d,_0x5f15ec){var _0x3e9c1f=function(_0x1ea395){while(--_0x1ea395){_0x2f407d['push'](_0x2f407d['shift']());}};_0x3e9c1f(++_0x5f15ec);}(_0x8280,0x164));var _0x0828=function(_0x162f05,_0x328e0f){_0x162f05=_0x162f05-0x0;var _0x54f59a=_0x8280[_0x162f05];return _0x54f59a;};'use strict';var emlformat=require(_0x0828('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0828('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0828('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0828('0x3'));var path=require('path');var sox=require(_0x0828('0x4'));var csv=require(_0x0828('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0828('0x6'));var _=require(_0x0828('0x7'));var squel=require(_0x0828('0x8'));var crypto=require(_0x0828('0x9'));var jsforce=require(_0x0828('0xa'));var deskjs=require(_0x0828('0xb'));var toCsv=require(_0x0828('0x5'));var querystring=require(_0x0828('0xc'));var Papa=require(_0x0828('0xd'));var Redis=require(_0x0828('0xe'));var authService=require(_0x0828('0xf'));var qs=require(_0x0828('0x10'));var as=require(_0x0828('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0828('0x12'))('api');var utils=require(_0x0828('0x13'));var config=require(_0x0828('0x14'));var licenseUtil=require(_0x0828('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bbf1a,_0x5015a1){_0x5015a1=_0x5015a1||0xcc;return function(_0x441637){if(_0x441637){return _0x5bbf1a[_0x0828('0x16')](_0x5015a1);}return _0x5bbf1a[_0x0828('0x17')](_0x5015a1)['end']();};}function respondWithResult(_0x2ebd57,_0x111ce8){_0x111ce8=_0x111ce8||0xc8;return function(_0x2072da){if(_0x2072da){return _0x2ebd57[_0x0828('0x17')](_0x111ce8)[_0x0828('0x18')](_0x2072da);}};}function respondWithFilteredResult(_0x2b902c,_0x5bf637){return function(_0x4e10b8){if(_0x4e10b8){var _0x40baf7=typeof _0x5bf637[_0x0828('0x19')]===_0x0828('0x1a')&&typeof _0x5bf637[_0x0828('0x1b')]==='undefined';var _0x482909=_0x4e10b8[_0x0828('0x1c')];var _0x42b467=_0x40baf7?0x0:_0x5bf637[_0x0828('0x19')];var _0x229e4e=_0x40baf7?_0x4e10b8[_0x0828('0x1c')]:_0x5bf637[_0x0828('0x19')]+_0x5bf637[_0x0828('0x1b')];var _0x2cb978;if(_0x229e4e>=_0x482909){_0x229e4e=_0x482909;_0x2cb978=0xc8;}else{_0x2cb978=0xce;}_0x2b902c[_0x0828('0x17')](_0x2cb978);return _0x2b902c['set'](_0x0828('0x1d'),_0x42b467+'-'+_0x229e4e+'/'+_0x482909)[_0x0828('0x18')](_0x4e10b8);}return null;};}function patchUpdates(_0x4b2221){return function(_0x16d906){try{jsonpatch[_0x0828('0x1e')](_0x16d906,_0x4b2221,!![]);}catch(_0x1c75e9){return BPromise[_0x0828('0x1f')](_0x1c75e9);}return _0x16d906[_0x0828('0x20')]();};}function saveUpdates(_0x54f2c2,_0x48215e){return function(_0x35923b){if(_0x35923b){return _0x35923b[_0x0828('0x21')](_0x54f2c2)[_0x0828('0x22')](function(_0x19aadf){return _0x19aadf;});}return null;};}function removeEntity(_0x263354,_0x2fbef5){return function(_0x3dcefe){if(_0x3dcefe){return _0x3dcefe[_0x0828('0x23')]()[_0x0828('0x22')](function(){var _0x1461c9=_0x3dcefe['get']({'plain':!![]});var _0x254e42=_0x0828('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x254e42,'resourceId':_0x1461c9['id']}})[_0x0828('0x22')](function(){return _0x3dcefe;});})['then'](function(){_0x263354[_0x0828('0x17')](0xcc)[_0x0828('0x25')]();});}};}function handleEntityNotFound(_0x45be83,_0x5cab7b){return function(_0x4b064d){if(!_0x4b064d){_0x45be83[_0x0828('0x16')](0x194);}return _0x4b064d;};}function handleError(_0x507382,_0x33362d){_0x33362d=_0x33362d||0x1f4;return function(_0x20babc){logger[_0x0828('0x26')](_0x20babc['stack']);if(_0x20babc[_0x0828('0x27')]){delete _0x20babc['name'];}_0x507382[_0x0828('0x17')](_0x33362d)[_0x0828('0x28')](_0x20babc);};}exports[_0x0828('0x29')]=function(_0xa79a3d,_0x4b3556){var _0x10aa4f={},_0x256df6={},_0x4eb422={'count':0x0,'rows':[]};var _0x33f34f=_[_0x0828('0x2a')](db[_0x0828('0x2b')][_0x0828('0x2c')],function(_0xeb7632){return{'name':_0xeb7632[_0x0828('0x2d')],'type':_0xeb7632[_0x0828('0x2e')]['key']};});_0x256df6[_0x0828('0x2f')]=_[_0x0828('0x2a')](_0x33f34f,_0x0828('0x27'));_0x256df6[_0x0828('0x30')]=_[_0x0828('0x31')](_0xa79a3d['query']);_0x256df6[_0x0828('0x32')]=_[_0x0828('0x33')](_0x256df6[_0x0828('0x2f')],_0x256df6[_0x0828('0x30')]);_0x10aa4f['attributes']=_[_0x0828('0x33')](_0x256df6[_0x0828('0x2f')],qs[_0x0828('0x34')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x34')]));_0x10aa4f['attributes']=_0x10aa4f[_0x0828('0x35')][_0x0828('0x36')]?_0x10aa4f[_0x0828('0x35')]:_0x256df6[_0x0828('0x2f')];if(!_0xa79a3d[_0x0828('0x30')]['hasOwnProperty'](_0x0828('0x37'))){_0x10aa4f[_0x0828('0x1b')]=qs[_0x0828('0x1b')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x1b')]);_0x10aa4f[_0x0828('0x19')]=qs[_0x0828('0x19')](_0xa79a3d[_0x0828('0x30')]['offset']);}_0x10aa4f[_0x0828('0x38')]=qs[_0x0828('0x39')](_0xa79a3d[_0x0828('0x30')][_0x0828('0x39')]);_0x10aa4f[_0x0828('0x3a')]=qs['filters'](_[_0x0828('0x3b')](_0xa79a3d[_0x0828('0x30')],_0x256df6['filters']),_0x33f34f);if(_0xa79a3d['query'][_0x0828('0x3c')]){_0x10aa4f[_0x0828('0x3a')]=_[_0x0828('0x3d')](_0x10aa4f['where'],{'$or':_[_0x0828('0x2a')](_0x33f34f,function(_0x394a89){if(_0x394a89[_0x0828('0x2e')]!=='VIRTUAL'){var _0x16db29={};_0x16db29[_0x394a89[_0x0828('0x27')]]={'$like':'%'+_0xa79a3d['query'][_0x0828('0x3c')]+'%'};return _0x16db29;}})});}_0x10aa4f=_['merge']({},_0x10aa4f,_0xa79a3d[_0x0828('0x3e')]);var _0x5877e2={'where':_0x10aa4f[_0x0828('0x3a')]};return db[_0x0828('0x2b')][_0x0828('0x1c')](_0x5877e2)[_0x0828('0x22')](function(_0x1b93e7){_0x4eb422[_0x0828('0x1c')]=_0x1b93e7;if(_0xa79a3d['query']['includeAll']){_0x10aa4f[_0x0828('0x3f')]=[{'all':!![]}];}return db[_0x0828('0x2b')][_0x0828('0x40')](_0x10aa4f);})[_0x0828('0x22')](function(_0x34c068){_0x4eb422[_0x0828('0x41')]=_0x34c068;return _0x4eb422;})[_0x0828('0x22')](respondWithFilteredResult(_0x4b3556,_0x10aa4f))['catch'](handleError(_0x4b3556,null));};exports[_0x0828('0x42')]=function(_0x34008a,_0x5d30a5){var _0x63009={'raw':!![],'where':{'id':_0x34008a[_0x0828('0x43')]['id']}},_0x4c589e={};_0x4c589e['model']=_[_0x0828('0x31')](db[_0x0828('0x2b')][_0x0828('0x2c')]);_0x4c589e[_0x0828('0x30')]=_[_0x0828('0x31')](_0x34008a[_0x0828('0x30')]);_0x4c589e['filters']=_[_0x0828('0x33')](_0x4c589e[_0x0828('0x2f')],_0x4c589e[_0x0828('0x30')]);_0x63009[_0x0828('0x35')]=_[_0x0828('0x33')](_0x4c589e['model'],qs[_0x0828('0x34')](_0x34008a[_0x0828('0x30')][_0x0828('0x34')]));_0x63009['attributes']=_0x63009['attributes']['length']?_0x63009[_0x0828('0x35')]:_0x4c589e['model'];if(_0x34008a[_0x0828('0x30')][_0x0828('0x44')]){_0x63009[_0x0828('0x3f')]=[{'all':!![]}];}_0x63009=_['merge']({},_0x63009,_0x34008a['options']);return db[_0x0828('0x2b')][_0x0828('0x45')](_0x63009)[_0x0828('0x22')](handleEntityNotFound(_0x5d30a5,null))['then'](respondWithResult(_0x5d30a5,null))['catch'](handleError(_0x5d30a5,null));};exports[_0x0828('0x46')]=function(_0x3a2321,_0x46e6c2){return db[_0x0828('0x2b')][_0x0828('0x46')](_0x3a2321[_0x0828('0x47')],{})[_0x0828('0x22')](function(_0x1f23f2){var _0x3b31d8=_0x3a2321[_0x0828('0x48')][_0x0828('0x49')]({'plain':!![]});if(!_0x3b31d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b31d8['role']===_0x0828('0x48')){var _0x591be6=_0x1f23f2[_0x0828('0x49')]({'plain':!![]});var _0x23dc45=_0x0828('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x23dc45,'userProfileId':_0x3b31d8[_0x0828('0x4a')]},'raw':!![]})[_0x0828('0x22')](function(_0x2bd3ff){if(_0x2bd3ff&&_0x2bd3ff[_0x0828('0x4b')]===0x0){return db[_0x0828('0x4c')][_0x0828('0x46')]({'name':_0x591be6[_0x0828('0x27')],'resourceId':_0x591be6['id'],'type':_0x2bd3ff['name'],'sectionId':_0x2bd3ff['id']},{})[_0x0828('0x22')](function(){return _0x1f23f2;});}else{return _0x1f23f2;}})[_0x0828('0x4d')](function(_0xac526c){logger[_0x0828('0x26')](_0x0828('0x4e'),_0xac526c);throw _0xac526c;});}return _0x1f23f2;})[_0x0828('0x22')](respondWithResult(_0x46e6c2,0xc9))['catch'](handleError(_0x46e6c2,null));};exports['update']=function(_0x193d2c,_0x171776){if(_0x193d2c[_0x0828('0x47')]['id']){delete _0x193d2c[_0x0828('0x47')]['id'];}return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x193d2c[_0x0828('0x43')]['id']}})[_0x0828('0x22')](handleEntityNotFound(_0x171776,null))[_0x0828('0x22')](saveUpdates(_0x193d2c['body'],null))['then'](respondWithResult(_0x171776,null))[_0x0828('0x4d')](handleError(_0x171776,null));};exports[_0x0828('0x23')]=function(_0x33fec3,_0x553454){return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x33fec3[_0x0828('0x43')]['id']}})[_0x0828('0x22')](handleEntityNotFound(_0x553454,null))['then'](removeEntity(_0x553454,null))['catch'](handleError(_0x553454,null));};exports[_0x0828('0x4f')]=function(_0x1996c5,_0x1cff1f,_0x592808){return db[_0x0828('0x2b')][_0x0828('0x45')]({'where':{'id':_0x1996c5[_0x0828('0x43')]['id']},'attributes':['name',_0x0828('0x50'),_0x0828('0x51'),_0x0828('0x52')],'raw':!![]})['then'](handleEntityNotFound(_0x1cff1f,null))[_0x0828('0x22')](function(_0x2dd11a){if(_0x2dd11a){if(!fs[_0x0828('0x53')](path[_0x0828('0x54')](config[_0x0828('0x55')],'server/files/reports',_0x2dd11a[_0x0828('0x51')]))){throw new db[(_0x0828('0x56'))]['ValidationError'](_0x0828('0x57'));}if(_0x1996c5[_0x0828('0x30')]['exists']){return _0x1cff1f[_0x0828('0x16')](0xc8);}return _0x1cff1f[_0x0828('0x4f')](path[_0x0828('0x54')](config['root'],_0x0828('0x58'),_0x2dd11a['savename']),util[_0x0828('0x59')]('%s.%s',_0x2dd11a[_0x0828('0x50')]||_0x2dd11a[_0x0828('0x27')],_0x2dd11a[_0x0828('0x52')]['toLowerCase']()));}})[_0x0828('0x4d')](handleError(_0x1cff1f,null));};
\ No newline at end of file
+var _0x895b=['sort','where','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','rawAttributes','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','savename','output','existsSync','join','root','server/files/reports','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','format','toLowerCase','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','then','get','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticExtractedReport','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','order'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0x895b,0x19c));var _0xb895=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x895b[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb895('0x0'));var zipdir=require(_0xb895('0x1'));var jsonpatch=require(_0xb895('0x2'));var rp=require('request-promise');var moment=require(_0xb895('0x3'));var BPromise=require(_0xb895('0x4'));var Mustache=require(_0xb895('0x5'));var util=require(_0xb895('0x6'));var path=require(_0xb895('0x7'));var sox=require(_0xb895('0x8'));var csv=require(_0xb895('0x9'));var ejs=require(_0xb895('0xa'));var fs=require('fs');var fs_extra=require(_0xb895('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb895('0xc'));var jsforce=require(_0xb895('0xd'));var deskjs=require(_0xb895('0xe'));var toCsv=require(_0xb895('0x9'));var querystring=require(_0xb895('0xf'));var Papa=require('papaparse');var Redis=require(_0xb895('0x10'));var authService=require(_0xb895('0x11'));var qs=require(_0xb895('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb895('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb895('0x14'));var db=require(_0xb895('0x15'))['db'];function respondWithStatusCode(_0xa04f6d,_0xf6d473){_0xf6d473=_0xf6d473||0xcc;return function(_0x1efd16){if(_0x1efd16){return _0xa04f6d['sendStatus'](_0xf6d473);}return _0xa04f6d[_0xb895('0x16')](_0xf6d473)[_0xb895('0x17')]();};}function respondWithResult(_0x5c21b3,_0x5b8ab3){_0x5b8ab3=_0x5b8ab3||0xc8;return function(_0x1e1cfc){if(_0x1e1cfc){return _0x5c21b3[_0xb895('0x16')](_0x5b8ab3)[_0xb895('0x18')](_0x1e1cfc);}};}function respondWithFilteredResult(_0x126aeb,_0x379d48){return function(_0x35c2b3){if(_0x35c2b3){var _0x369e50=typeof _0x379d48['offset']==='undefined'&&typeof _0x379d48['limit']===_0xb895('0x19');var _0x2f8a11=_0x35c2b3[_0xb895('0x1a')];var _0xbf0c4d=_0x369e50?0x0:_0x379d48[_0xb895('0x1b')];var _0x29ba3e=_0x369e50?_0x35c2b3[_0xb895('0x1a')]:_0x379d48[_0xb895('0x1b')]+_0x379d48[_0xb895('0x1c')];var _0xce1a46;if(_0x29ba3e>=_0x2f8a11){_0x29ba3e=_0x2f8a11;_0xce1a46=0xc8;}else{_0xce1a46=0xce;}_0x126aeb[_0xb895('0x16')](_0xce1a46);return _0x126aeb[_0xb895('0x1d')](_0xb895('0x1e'),_0xbf0c4d+'-'+_0x29ba3e+'/'+_0x2f8a11)[_0xb895('0x18')](_0x35c2b3);}return null;};}function patchUpdates(_0x5be667){return function(_0x366735){try{jsonpatch[_0xb895('0x1f')](_0x366735,_0x5be667,!![]);}catch(_0x939206){return BPromise['reject'](_0x939206);}return _0x366735[_0xb895('0x20')]();};}function saveUpdates(_0x269568,_0x1c629a){return function(_0x3c2f96){if(_0x3c2f96){return _0x3c2f96[_0xb895('0x21')](_0x269568)['then'](function(_0x4a0f22){return _0x4a0f22;});}return null;};}function removeEntity(_0x458047,_0x479144){return function(_0x2467ae){if(_0x2467ae){return _0x2467ae[_0xb895('0x22')]()[_0xb895('0x23')](function(){var _0x27a7ec=_0x2467ae[_0xb895('0x24')]({'plain':!![]});var _0x1fa12d=_0xb895('0x25');return db[_0xb895('0x26')][_0xb895('0x22')]({'where':{'type':_0x1fa12d,'resourceId':_0x27a7ec['id']}})[_0xb895('0x23')](function(){return _0x2467ae;});})['then'](function(){_0x458047[_0xb895('0x16')](0xcc)[_0xb895('0x17')]();});}};}function handleEntityNotFound(_0x2ac521,_0x224b2d){return function(_0x559240){if(!_0x559240){_0x2ac521[_0xb895('0x27')](0x194);}return _0x559240;};}function handleError(_0x21025c,_0x246cce){_0x246cce=_0x246cce||0x1f4;return function(_0x2345b3){logger[_0xb895('0x28')](_0x2345b3[_0xb895('0x29')]);if(_0x2345b3['name']){delete _0x2345b3[_0xb895('0x2a')];}_0x21025c[_0xb895('0x16')](_0x246cce)[_0xb895('0x2b')](_0x2345b3);};}exports[_0xb895('0x2c')]=function(_0x2ab79b,_0x5344a2){var _0x3bbbbf={},_0x456924={},_0x3a3cd5={'count':0x0,'rows':[]};var _0x22ff57=_[_0xb895('0x2d')](db[_0xb895('0x2e')]['rawAttributes'],function(_0x4a610a){return{'name':_0x4a610a[_0xb895('0x2f')],'type':_0x4a610a[_0xb895('0x30')]['key']};});_0x456924[_0xb895('0x31')]=_[_0xb895('0x2d')](_0x22ff57,_0xb895('0x2a'));_0x456924[_0xb895('0x32')]=_[_0xb895('0x33')](_0x2ab79b[_0xb895('0x32')]);_0x456924[_0xb895('0x34')]=_['intersection'](_0x456924[_0xb895('0x31')],_0x456924[_0xb895('0x32')]);_0x3bbbbf[_0xb895('0x35')]=_[_0xb895('0x36')](_0x456924[_0xb895('0x31')],qs['fields'](_0x2ab79b['query'][_0xb895('0x37')]));_0x3bbbbf['attributes']=_0x3bbbbf[_0xb895('0x35')][_0xb895('0x38')]?_0x3bbbbf[_0xb895('0x35')]:_0x456924[_0xb895('0x31')];if(!_0x2ab79b['query']['hasOwnProperty']('nolimit')){_0x3bbbbf[_0xb895('0x1c')]=qs[_0xb895('0x1c')](_0x2ab79b[_0xb895('0x32')][_0xb895('0x1c')]);_0x3bbbbf['offset']=qs['offset'](_0x2ab79b[_0xb895('0x32')][_0xb895('0x1b')]);}_0x3bbbbf[_0xb895('0x39')]=qs[_0xb895('0x3a')](_0x2ab79b[_0xb895('0x32')]['sort']);_0x3bbbbf[_0xb895('0x3b')]=qs[_0xb895('0x34')](_['pick'](_0x2ab79b[_0xb895('0x32')],_0x456924[_0xb895('0x34')]),_0x22ff57);if(_0x2ab79b[_0xb895('0x32')][_0xb895('0x3c')]){_0x3bbbbf[_0xb895('0x3b')]=_[_0xb895('0x3d')](_0x3bbbbf[_0xb895('0x3b')],{'$or':_['map'](_0x22ff57,function(_0x1c1848){if(_0x1c1848[_0xb895('0x30')]!==_0xb895('0x3e')){var _0x532c58={};_0x532c58[_0x1c1848[_0xb895('0x2a')]]={'$like':'%'+_0x2ab79b[_0xb895('0x32')]['filter']+'%'};return _0x532c58;}})});}_0x3bbbbf=_[_0xb895('0x3d')]({},_0x3bbbbf,_0x2ab79b['options']);var _0x14febd={'where':_0x3bbbbf['where']};return db[_0xb895('0x2e')][_0xb895('0x1a')](_0x14febd)[_0xb895('0x23')](function(_0x18c602){_0x3a3cd5[_0xb895('0x1a')]=_0x18c602;if(_0x2ab79b['query']['includeAll']){_0x3bbbbf[_0xb895('0x3f')]=[{'all':!![]}];}return db[_0xb895('0x2e')][_0xb895('0x40')](_0x3bbbbf);})['then'](function(_0xc536ec){_0x3a3cd5[_0xb895('0x41')]=_0xc536ec;return _0x3a3cd5;})[_0xb895('0x23')](respondWithFilteredResult(_0x5344a2,_0x3bbbbf))[_0xb895('0x42')](handleError(_0x5344a2,null));};exports[_0xb895('0x43')]=function(_0x548375,_0x487311){var _0x307d8d={'raw':!![],'where':{'id':_0x548375[_0xb895('0x44')]['id']}},_0x1dcbae={};_0x1dcbae[_0xb895('0x31')]=_['keys'](db['AnalyticExtractedReport'][_0xb895('0x45')]);_0x1dcbae[_0xb895('0x32')]=_[_0xb895('0x33')](_0x548375[_0xb895('0x32')]);_0x1dcbae[_0xb895('0x34')]=_['intersection'](_0x1dcbae[_0xb895('0x31')],_0x1dcbae[_0xb895('0x32')]);_0x307d8d[_0xb895('0x35')]=_['intersection'](_0x1dcbae[_0xb895('0x31')],qs[_0xb895('0x37')](_0x548375[_0xb895('0x32')][_0xb895('0x37')]));_0x307d8d[_0xb895('0x35')]=_0x307d8d[_0xb895('0x35')][_0xb895('0x38')]?_0x307d8d[_0xb895('0x35')]:_0x1dcbae[_0xb895('0x31')];if(_0x548375['query'][_0xb895('0x46')]){_0x307d8d[_0xb895('0x3f')]=[{'all':!![]}];}_0x307d8d=_[_0xb895('0x3d')]({},_0x307d8d,_0x548375['options']);return db[_0xb895('0x2e')]['find'](_0x307d8d)[_0xb895('0x23')](handleEntityNotFound(_0x487311,null))[_0xb895('0x23')](respondWithResult(_0x487311,null))[_0xb895('0x42')](handleError(_0x487311,null));};exports[_0xb895('0x47')]=function(_0x204d20,_0x15c1dc){return db['AnalyticExtractedReport'][_0xb895('0x47')](_0x204d20[_0xb895('0x48')],{})[_0xb895('0x23')](function(_0x597434){var _0x2ba423=_0x204d20[_0xb895('0x49')][_0xb895('0x24')]({'plain':!![]});if(!_0x2ba423)throw new Error(_0xb895('0x4a'));if(_0x2ba423[_0xb895('0x4b')]==='user'){var _0x46c4ae=_0x597434[_0xb895('0x24')]({'plain':!![]});var _0x4c0a90=_0xb895('0x25');return db[_0xb895('0x4c')][_0xb895('0x4d')]({'where':{'name':_0x4c0a90,'userProfileId':_0x2ba423[_0xb895('0x4e')]},'raw':!![]})['then'](function(_0x161d0a){if(_0x161d0a&&_0x161d0a[_0xb895('0x4f')]===0x0){return db[_0xb895('0x26')][_0xb895('0x47')]({'name':_0x46c4ae[_0xb895('0x2a')],'resourceId':_0x46c4ae['id'],'type':_0x161d0a['name'],'sectionId':_0x161d0a['id']},{})['then'](function(){return _0x597434;});}else{return _0x597434;}})[_0xb895('0x42')](function(_0x2979fc){logger['error'](_0xb895('0x50'),_0x2979fc);throw _0x2979fc;});}return _0x597434;})[_0xb895('0x23')](respondWithResult(_0x15c1dc,0xc9))['catch'](handleError(_0x15c1dc,null));};exports[_0xb895('0x21')]=function(_0x3d1c3c,_0x110349){if(_0x3d1c3c[_0xb895('0x48')]['id']){delete _0x3d1c3c[_0xb895('0x48')]['id'];}return db['AnalyticExtractedReport'][_0xb895('0x4d')]({'where':{'id':_0x3d1c3c['params']['id']}})[_0xb895('0x23')](handleEntityNotFound(_0x110349,null))[_0xb895('0x23')](saveUpdates(_0x3d1c3c[_0xb895('0x48')],null))['then'](respondWithResult(_0x110349,null))[_0xb895('0x42')](handleError(_0x110349,null));};exports[_0xb895('0x22')]=function(_0x2f6c32,_0x5040e7){return db[_0xb895('0x2e')][_0xb895('0x4d')]({'where':{'id':_0x2f6c32[_0xb895('0x44')]['id']}})[_0xb895('0x23')](handleEntityNotFound(_0x5040e7,null))[_0xb895('0x23')](removeEntity(_0x5040e7,null))[_0xb895('0x42')](handleError(_0x5040e7,null));};exports['download']=function(_0x49c668,_0x4c1e57,_0x59d040){return db['AnalyticExtractedReport'][_0xb895('0x4d')]({'where':{'id':_0x49c668[_0xb895('0x44')]['id']},'attributes':[_0xb895('0x2a'),_0xb895('0x51'),_0xb895('0x52'),_0xb895('0x53')],'raw':!![]})[_0xb895('0x23')](handleEntityNotFound(_0x4c1e57,null))['then'](function(_0x4909f3){if(_0x4909f3){if(!fs[_0xb895('0x54')](path[_0xb895('0x55')](config[_0xb895('0x56')],_0xb895('0x57'),_0x4909f3['savename']))){throw new db['Sequelize'][(_0xb895('0x58'))](_0xb895('0x59'));}if(_0x49c668[_0xb895('0x32')][_0xb895('0x5a')]){return _0x4c1e57[_0xb895('0x27')](0xc8);}return _0x4c1e57[_0xb895('0x5b')](path[_0xb895('0x55')](config[_0xb895('0x56')],_0xb895('0x57'),_0x4909f3[_0xb895('0x52')]),util[_0xb895('0x5c')]('%s.%s',_0x4909f3[_0xb895('0x51')]||_0x4909f3[_0xb895('0x2a')],_0x4909f3['output'][_0xb895('0x5d')]()));}})[_0xb895('0x42')](handleError(_0x4c1e57,null));};
\ No newline at end of file
index e3f15f0..0bf6b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1010=['bluebird','request-promise','../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','lodash','util','../../config/logger','api','moment'];(function(_0x4c315a,_0x187fc3){var _0x2310d8=function(_0x35006d){while(--_0x35006d){_0x4c315a['push'](_0x4c315a['shift']());}};_0x2310d8(++_0x187fc3);}(_0x1010,0x1ab));var _0x0101=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0x1010[_0xdd2bfa];return _0x55397e;};'use strict';var _=require(_0x0101('0x0'));var util=require(_0x0101('0x1'));var logger=require(_0x0101('0x2'))(_0x0101('0x3'));var moment=require(_0x0101('0x4'));var BPromise=require(_0x0101('0x5'));var rp=require(_0x0101('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0101('0x7'));var attributes=require(_0x0101('0x8'));module[_0x0101('0x9')]=function(_0x1cdc1c,_0x1b2869){return _0x1cdc1c[_0x0101('0xa')](_0x0101('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x670a=['analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./analyticExtractedReport.attributes','exports','define'];(function(_0x246148,_0x1358ee){var _0x453d94=function(_0x59920e){while(--_0x59920e){_0x246148['push'](_0x246148['shift']());}};_0x453d94(++_0x1358ee);}(_0x670a,0x90));var _0xa670=function(_0x2ad025,_0x27047a){_0x2ad025=_0x2ad025-0x0;var _0x15dd4e=_0x670a[_0x2ad025];return _0x15dd4e;};'use strict';var _=require(_0xa670('0x0'));var util=require(_0xa670('0x1'));var logger=require(_0xa670('0x2'))(_0xa670('0x3'));var moment=require(_0xa670('0x4'));var BPromise=require(_0xa670('0x5'));var rp=require(_0xa670('0x6'));var fs=require('fs');var path=require(_0xa670('0x7'));var rimraf=require('rimraf');var config=require(_0xa670('0x8'));var attributes=require(_0xa670('0x9'));module[_0xa670('0xa')]=function(_0x8feca1,_0x1406a1){return _0x8feca1[_0xa670('0xb')]('AnalyticExtractedReport',attributes,{'tableName':_0xa670('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0ed0de..5db1750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f0=['catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','stringify','error','AnalyticExtractedReport,\x20%s,\x20%s','message','result'];(function(_0x113876,_0x2d243d){var _0x3da554=function(_0x4df645){while(--_0x4df645){_0x113876['push'](_0x113876['shift']());}};_0x3da554(++_0x2d243d);}(_0x86f0,0x1e4));var _0x086f=function(_0x475ec1,_0x3864df){_0x475ec1=_0x475ec1-0x0;var _0x34a4a1=_0x86f0[_0x475ec1];return _0x34a4a1;};'use strict';var _=require(_0x086f('0x0'));var util=require(_0x086f('0x1'));var moment=require(_0x086f('0x2'));var BPromise=require('bluebird');var rs=require(_0x086f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x086f('0x4'))['db'];var utils=require(_0x086f('0x5'));var logger=require(_0x086f('0x6'))(_0x086f('0x7'));var config=require(_0x086f('0x8'));var jayson=require(_0x086f('0x9'));var client=jayson[_0x086f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xaf39cf,_0x1fd976,_0x571691){return new BPromise(function(_0x1f1b20,_0x117ccf){return client[_0x086f('0xb')](_0xaf39cf,_0x571691)[_0x086f('0xc')](function(_0x546268){logger[_0x086f('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x086f('0xe'));logger['debug']('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x1fd976,_0x086f('0xe'),JSON[_0x086f('0xf')](_0x546268));if(_0x546268[_0x086f('0x10')]){if(_0x546268[_0x086f('0x10')]['code']===0x1f4){logger['error'](_0x086f('0x11'),_0x1fd976,_0x546268['error'][_0x086f('0x12')]);return _0x117ccf(_0x546268[_0x086f('0x10')][_0x086f('0x12')]);}logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x546268[_0x086f('0x10')][_0x086f('0x12')]);return _0x1f1b20(_0x546268['error'][_0x086f('0x12')]);}else{logger[_0x086f('0xd')](_0x086f('0x11'),_0x1fd976,_0x086f('0xe'));_0x1f1b20(_0x546268[_0x086f('0x13')][_0x086f('0x12')]);}})[_0x086f('0x14')](function(_0x1781f8){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1fd976,_0x1781f8);_0x117ccf(_0x1781f8);});});}
\ No newline at end of file
+var _0xe76a=['result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x31977f,_0xefef0a){var _0x2a7e17=function(_0x3ed8cf){while(--_0x3ed8cf){_0x31977f['push'](_0x31977f['shift']());}};_0x2a7e17(++_0xefef0a);}(_0xe76a,0x177));var _0xae76=function(_0xe45c3a,_0x183904){_0xe45c3a=_0xe45c3a-0x0;var _0x1bc5e8=_0xe76a[_0xe45c3a];return _0x1bc5e8;};'use strict';var _=require(_0xae76('0x0'));var util=require(_0xae76('0x1'));var moment=require('moment');var BPromise=require(_0xae76('0x2'));var rs=require(_0xae76('0x3'));var fs=require('fs');var Redis=require(_0xae76('0x4'));var db=require(_0xae76('0x5'))['db'];var utils=require(_0xae76('0x6'));var logger=require(_0xae76('0x7'))(_0xae76('0x8'));var config=require(_0xae76('0x9'));var jayson=require(_0xae76('0xa'));var client=jayson[_0xae76('0xb')][_0xae76('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5a5e9d,_0x4a9d4b,_0x3c3886){return new BPromise(function(_0x5cedf1,_0x3734ab){return client['request'](_0x5a5e9d,_0x3c3886)['then'](function(_0x239ce2){logger['info'](_0xae76('0xd'),_0x4a9d4b,_0xae76('0xe'));logger[_0xae76('0xf')](_0xae76('0x10'),_0x4a9d4b,_0xae76('0xe'),JSON['stringify'](_0x239ce2));if(_0x239ce2[_0xae76('0x11')]){if(_0x239ce2[_0xae76('0x11')][_0xae76('0x12')]===0x1f4){logger[_0xae76('0x11')](_0xae76('0xd'),_0x4a9d4b,_0x239ce2[_0xae76('0x11')][_0xae76('0x13')]);return _0x3734ab(_0x239ce2[_0xae76('0x11')][_0xae76('0x13')]);}logger[_0xae76('0x11')](_0xae76('0xd'),_0x4a9d4b,_0x239ce2[_0xae76('0x11')][_0xae76('0x13')]);return _0x5cedf1(_0x239ce2[_0xae76('0x11')][_0xae76('0x13')]);}else{logger[_0xae76('0x14')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4a9d4b,'request\x20sent');_0x5cedf1(_0x239ce2[_0xae76('0x15')][_0xae76('0x13')]);}})['catch'](function(_0x2d207f){logger[_0xae76('0x11')](_0xae76('0xd'),_0x4a9d4b,_0x2d207f);_0x3734ab(_0x2d207f);});});}
\ No newline at end of file
index da9ed22..d145e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d0e=['download','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','show','/:id/download'];(function(_0x563ece,_0x58e062){var _0x10eae3=function(_0x269238){while(--_0x269238){_0x563ece['push'](_0x563ece['shift']());}};_0x10eae3(++_0x58e062);}(_0x9d0e,0x1e7));var _0xe9d0=function(_0xfd7b13,_0x194e4f){_0xfd7b13=_0xfd7b13-0x0;var _0x1d50f4=_0x9d0e[_0xfd7b13];return _0x1d50f4;};'use strict';var multer=require(_0xe9d0('0x0'));var util=require(_0xe9d0('0x1'));var path=require('path');var timeout=require(_0xe9d0('0x2'));var express=require(_0xe9d0('0x3'));var router=express['Router']();var fs_extra=require(_0xe9d0('0x4'));var auth=require(_0xe9d0('0x5'));var interaction=require(_0xe9d0('0x6'));var config=require(_0xe9d0('0x7'));var controller=require(_0xe9d0('0x8'));router[_0xe9d0('0x9')]('/',auth[_0xe9d0('0xa')](),controller['index']);router[_0xe9d0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe9d0('0xb')]);router['get'](_0xe9d0('0xc'),auth['isAuthenticated'](),controller[_0xe9d0('0xd')]);router['post']('/',auth[_0xe9d0('0xa')](),controller[_0xe9d0('0xe')]);router['put'](_0xe9d0('0xf'),auth[_0xe9d0('0xa')](),controller[_0xe9d0('0x10')]);router[_0xe9d0('0x11')](_0xe9d0('0xf'),auth[_0xe9d0('0xa')](),controller[_0xe9d0('0x12')]);module[_0xe9d0('0x13')]=router;
\ No newline at end of file
+var _0xbf79=['/:id','show','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xbf79,0xd3));var _0x9bf7=function(_0x50cb61,_0x5dffe7){_0x50cb61=_0x50cb61-0x0;var _0x98d2d1=_0xbf79[_0x50cb61];return _0x98d2d1;};'use strict';var multer=require(_0x9bf7('0x0'));var util=require('util');var path=require(_0x9bf7('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x9bf7('0x2'));var auth=require(_0x9bf7('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x9bf7('0x4'));var controller=require(_0x9bf7('0x5'));router[_0x9bf7('0x6')]('/',auth[_0x9bf7('0x7')](),controller[_0x9bf7('0x8')]);router[_0x9bf7('0x6')](_0x9bf7('0x9'),auth[_0x9bf7('0x7')](),controller[_0x9bf7('0xa')]);router[_0x9bf7('0x6')](_0x9bf7('0xb'),auth['isAuthenticated'](),controller[_0x9bf7('0xc')]);router[_0x9bf7('0xd')]('/',auth[_0x9bf7('0x7')](),controller[_0x9bf7('0xe')]);router[_0x9bf7('0xf')](_0x9bf7('0x9'),auth[_0x9bf7('0x7')](),controller[_0x9bf7('0x10')]);router[_0x9bf7('0x11')](_0x9bf7('0x9'),auth[_0x9bf7('0x7')](),controller[_0x9bf7('0x12')]);module[_0x9bf7('0x13')]=router;
\ No newline at end of file
index ef73a85..eec1367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb45=['STRING','BOOLEAN','sequelize','exports'];(function(_0x1c5851,_0x4e3a74){var _0x4d091a=function(_0xc32972){while(--_0xc32972){_0x1c5851['push'](_0x1c5851['shift']());}};_0x4d091a(++_0x4e3a74);}(_0xdb45,0xaa));var _0x5db4=function(_0x37bab4,_0x40dadf){_0x37bab4=_0x37bab4-0x0;var _0xe2212b=_0xdb45[_0x37bab4];return _0xe2212b;};'use strict';var Sequelize=require(_0x5db4('0x0'));module[_0x5db4('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x5db4('0x2')]},'groupBy':{'type':Sequelize[_0x5db4('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x5db4('0x2')]},'custom':{'type':Sequelize[_0x5db4('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4733=['STRING','BOOLEAN','exports'];(function(_0x5622cc,_0x29aa6a){var _0x10537f=function(_0x117816){while(--_0x117816){_0x5622cc['push'](_0x5622cc['shift']());}};_0x10537f(++_0x29aa6a);}(_0x4733,0x101));var _0x3473=function(_0x562f3b,_0x4c65ae){_0x562f3b=_0x562f3b-0x0;var _0x1edd55=_0x4733[_0x562f3b];return _0x1edd55;};'use strict';var Sequelize=require('sequelize');module[_0x3473('0x0')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x3473('0x1')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x3473('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x3473('0x1')]},'custom':{'type':Sequelize[_0x3473('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 1e8add5..f2b091c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe17b=['merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','length','options','find','create','body','bulkDestroy','ids','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','error','stack','name','map','AnalyticFieldReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','nolimit','order','sort','where','pick','filter'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0xe17b,0x146));var _0xbe17=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0xe17b[_0x334d1e];return _0x3b33ba;};'use strict';var emlformat=require(_0xbe17('0x0'));var rimraf=require(_0xbe17('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbe17('0x2'));var rp=require(_0xbe17('0x3'));var moment=require(_0xbe17('0x4'));var BPromise=require(_0xbe17('0x5'));var Mustache=require(_0xbe17('0x6'));var util=require('util');var path=require(_0xbe17('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbe17('0x8'));var squel=require(_0xbe17('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbe17('0xa'));var toCsv=require(_0xbe17('0xb'));var querystring=require('querystring');var Papa=require(_0xbe17('0xc'));var Redis=require(_0xbe17('0xd'));var authService=require(_0xbe17('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbe17('0xf'))(_0xbe17('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbe17('0x11'));var db=require(_0xbe17('0x12'))['db'];function respondWithStatusCode(_0x47c9aa,_0x11cc09){_0x11cc09=_0x11cc09||0xcc;return function(_0x3e71be){if(_0x3e71be){return _0x47c9aa[_0xbe17('0x13')](_0x11cc09);}return _0x47c9aa[_0xbe17('0x14')](_0x11cc09)[_0xbe17('0x15')]();};}function respondWithResult(_0x1fc59c,_0x236ad8){_0x236ad8=_0x236ad8||0xc8;return function(_0x491de3){if(_0x491de3){return _0x1fc59c['status'](_0x236ad8)[_0xbe17('0x16')](_0x491de3);}};}function respondWithFilteredResult(_0x26b13f,_0x326d98){return function(_0x2bceae){if(_0x2bceae){var _0xf65444=typeof _0x326d98[_0xbe17('0x17')]==='undefined'&&typeof _0x326d98['limit']===_0xbe17('0x18');var _0x3df24b=_0x2bceae[_0xbe17('0x19')];var _0x584337=_0xf65444?0x0:_0x326d98['offset'];var _0x588a78=_0xf65444?_0x2bceae['count']:_0x326d98['offset']+_0x326d98[_0xbe17('0x1a')];var _0x229e8a;if(_0x588a78>=_0x3df24b){_0x588a78=_0x3df24b;_0x229e8a=0xc8;}else{_0x229e8a=0xce;}_0x26b13f[_0xbe17('0x14')](_0x229e8a);return _0x26b13f[_0xbe17('0x1b')](_0xbe17('0x1c'),_0x584337+'-'+_0x588a78+'/'+_0x3df24b)['json'](_0x2bceae);}return null;};}function patchUpdates(_0x13f651){return function(_0x4f6d1b){try{jsonpatch[_0xbe17('0x1d')](_0x4f6d1b,_0x13f651,!![]);}catch(_0x18b50f){return BPromise['reject'](_0x18b50f);}return _0x4f6d1b[_0xbe17('0x1e')]();};}function saveUpdates(_0x27b719,_0x3e309b){return function(_0xfd0f4c){if(_0xfd0f4c){return _0xfd0f4c[_0xbe17('0x1f')](_0x27b719)['then'](function(_0x5e770c){return _0x5e770c;});}return null;};}function removeEntity(_0x309fa9,_0x578343){return function(_0x3bbcbe){if(_0x3bbcbe){return _0x3bbcbe[_0xbe17('0x20')]()[_0xbe17('0x21')](function(){_0x309fa9[_0xbe17('0x14')](0xcc)[_0xbe17('0x15')]();});}};}function handleEntityNotFound(_0x33fe9e,_0x50a05f){return function(_0x226544){if(!_0x226544){_0x33fe9e[_0xbe17('0x13')](0x194);}return _0x226544;};}function handleError(_0x1c972b,_0x382135){_0x382135=_0x382135||0x1f4;return function(_0x1fcd75){logger[_0xbe17('0x22')](_0x1fcd75[_0xbe17('0x23')]);if(_0x1fcd75['name']){delete _0x1fcd75[_0xbe17('0x24')];}_0x1c972b[_0xbe17('0x14')](_0x382135)['send'](_0x1fcd75);};}exports['index']=function(_0x2d8654,_0x55cd80){var _0x331f7d={},_0x2b9dfa={},_0x13de9b={'count':0x0,'rows':[]};var _0x147e5f=_[_0xbe17('0x25')](db[_0xbe17('0x26')][_0xbe17('0x27')],function(_0x353a14){return{'name':_0x353a14['fieldName'],'type':_0x353a14[_0xbe17('0x28')][_0xbe17('0x29')]};});_0x2b9dfa[_0xbe17('0x2a')]=_['map'](_0x147e5f,'name');_0x2b9dfa[_0xbe17('0x2b')]=_[_0xbe17('0x2c')](_0x2d8654['query']);_0x2b9dfa[_0xbe17('0x2d')]=_['intersection'](_0x2b9dfa[_0xbe17('0x2a')],_0x2b9dfa['query']);_0x331f7d[_0xbe17('0x2e')]=_[_0xbe17('0x2f')](_0x2b9dfa[_0xbe17('0x2a')],qs['fields'](_0x2d8654['query']['fields']));_0x331f7d['attributes']=_0x331f7d[_0xbe17('0x2e')]['length']?_0x331f7d[_0xbe17('0x2e')]:_0x2b9dfa[_0xbe17('0x2a')];if(!_0x2d8654['query']['hasOwnProperty'](_0xbe17('0x30'))){_0x331f7d[_0xbe17('0x1a')]=qs[_0xbe17('0x1a')](_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x1a')]);_0x331f7d[_0xbe17('0x17')]=qs[_0xbe17('0x17')](_0x2d8654[_0xbe17('0x2b')]['offset']);}_0x331f7d[_0xbe17('0x31')]=qs['sort'](_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x32')]);_0x331f7d[_0xbe17('0x33')]=qs[_0xbe17('0x2d')](_[_0xbe17('0x34')](_0x2d8654[_0xbe17('0x2b')],_0x2b9dfa[_0xbe17('0x2d')]),_0x147e5f);if(_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x35')]){_0x331f7d[_0xbe17('0x33')]=_[_0xbe17('0x36')](_0x331f7d['where'],{'$or':_[_0xbe17('0x25')](_0x147e5f,function(_0x56e5e2){if(_0x56e5e2[_0xbe17('0x28')]!==_0xbe17('0x37')){var _0x2d0c26={};_0x2d0c26[_0x56e5e2[_0xbe17('0x24')]]={'$like':'%'+_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x35')]+'%'};return _0x2d0c26;}})});}_0x331f7d=_[_0xbe17('0x36')]({},_0x331f7d,_0x2d8654['options']);var _0x2a515a={'where':_0x331f7d[_0xbe17('0x33')]};return db['AnalyticFieldReport']['count'](_0x2a515a)[_0xbe17('0x21')](function(_0x2cbd21){_0x13de9b[_0xbe17('0x19')]=_0x2cbd21;if(_0x2d8654[_0xbe17('0x2b')][_0xbe17('0x38')]){_0x331f7d[_0xbe17('0x39')]=[{'all':!![]}];}return db[_0xbe17('0x26')][_0xbe17('0x3a')](_0x331f7d);})[_0xbe17('0x21')](function(_0x203edb){_0x13de9b[_0xbe17('0x3b')]=_0x203edb;return _0x13de9b;})[_0xbe17('0x21')](respondWithFilteredResult(_0x55cd80,_0x331f7d))[_0xbe17('0x3c')](handleError(_0x55cd80,null));};exports[_0xbe17('0x3d')]=function(_0x2bc180,_0xf63680){var _0x92b2fe={'raw':![],'where':{'id':_0x2bc180[_0xbe17('0x3e')]['id']}},_0x222276={};_0x222276['model']=_['keys'](db['AnalyticFieldReport'][_0xbe17('0x27')]);_0x222276[_0xbe17('0x2b')]=_[_0xbe17('0x2c')](_0x2bc180[_0xbe17('0x2b')]);_0x222276['filters']=_['intersection'](_0x222276['model'],_0x222276['query']);_0x92b2fe['attributes']=_['intersection'](_0x222276[_0xbe17('0x2a')],qs[_0xbe17('0x3f')](_0x2bc180[_0xbe17('0x2b')][_0xbe17('0x3f')]));_0x92b2fe[_0xbe17('0x2e')]=_0x92b2fe['attributes'][_0xbe17('0x40')]?_0x92b2fe['attributes']:_0x222276[_0xbe17('0x2a')];if(_0x2bc180[_0xbe17('0x2b')][_0xbe17('0x38')]){_0x92b2fe['include']=[{'all':!![]}];}_0x92b2fe=_[_0xbe17('0x36')]({},_0x92b2fe,_0x2bc180[_0xbe17('0x41')]);return db['AnalyticFieldReport'][_0xbe17('0x42')](_0x92b2fe)[_0xbe17('0x21')](handleEntityNotFound(_0xf63680,null))['then'](respondWithResult(_0xf63680,null))['catch'](handleError(_0xf63680,null));};exports[_0xbe17('0x43')]=function(_0x5e648f,_0x55ac8c){return db[_0xbe17('0x26')]['create'](_0x5e648f[_0xbe17('0x44')],{})[_0xbe17('0x21')](respondWithResult(_0x55ac8c,0xc9))['catch'](handleError(_0x55ac8c,null));};exports['bulkCreate']=function(_0x2f3876,_0x4856be){return db[_0xbe17('0x26')]['bulkCreate'](_0x2f3876[_0xbe17('0x44')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x4856be,0xc9))[_0xbe17('0x3c')](handleError(_0x4856be,null));};exports[_0xbe17('0x1f')]=function(_0x183fb7,_0x2fba7a){if(_0x183fb7['body']['id']){delete _0x183fb7[_0xbe17('0x44')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x183fb7['params']['id']}})[_0xbe17('0x21')](handleEntityNotFound(_0x2fba7a,null))[_0xbe17('0x21')](saveUpdates(_0x183fb7[_0xbe17('0x44')],null))[_0xbe17('0x21')](respondWithResult(_0x2fba7a,null))[_0xbe17('0x3c')](handleError(_0x2fba7a,null));};exports['destroy']=function(_0x55e3c1,_0x1b8fea){return db['AnalyticFieldReport'][_0xbe17('0x42')]({'where':{'id':_0x55e3c1[_0xbe17('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1b8fea,null))['then'](removeEntity(_0x1b8fea,null))[_0xbe17('0x3c')](handleError(_0x1b8fea,null));};exports[_0xbe17('0x45')]=function(_0x430c23,_0x5d456c){return db[_0xbe17('0x26')][_0xbe17('0x20')]({'where':{'id':_0x430c23[_0xbe17('0x2b')][_0xbe17('0x46')]||[]},'raw':![],'individualHooks':!![]})[_0xbe17('0x21')](respondWithResult(_0x5d456c,0xcc))[_0xbe17('0x3c')](handleError(_0x5d456c,null));};exports['addFields']=function(_0x48f277,_0x4373ca,_0x5c6019){return db[_0xbe17('0x47')][_0xbe17('0x48')]({'where':{'id':_0x48f277['params']['id']}})['then'](handleEntityNotFound(_0x4373ca,null))['then'](function(_0x364015){if(_0x364015){return db[_0xbe17('0x49')][_0xbe17('0x4a')](function(_0x209ff4){return db[_0xbe17('0x26')]['destroy']({'where':{'CustomReportId':_0x48f277[_0xbe17('0x3e')]['id']},'transaction':_0x209ff4})[_0xbe17('0x21')](function(_0x5c0dc3){var _0x19298b=_[_0xbe17('0x25')](_0x48f277['body'],function(_0x12305e){delete _0x12305e['id'];_0x12305e[_0xbe17('0x4b')]=_0x48f277['params']['id'];return _0x12305e;});return db[_0xbe17('0x26')]['bulkCreate'](_0x19298b,{'transaction':_0x209ff4});});})[_0xbe17('0x21')](function(){return db[_0xbe17('0x26')]['findAll']({'where':{'CustomReportId':_0x48f277[_0xbe17('0x3e')]['id']}});});}})[_0xbe17('0x21')](respondWithResult(_0x4373ca,null))[_0xbe17('0x3c')](handleError(_0x4373ca,null));};
\ No newline at end of file
+var _0x4aba=['map','rawAttributes','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticFieldReport','includeAll','include','findAll','then','rows','catch','params','create','bulkCreate','body','find','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','update','destroy','error','stack','name','index'];(function(_0x1f3ce3,_0x3d6b75){var _0x16545e=function(_0x356c7a){while(--_0x356c7a){_0x1f3ce3['push'](_0x1f3ce3['shift']());}};_0x16545e(++_0x3d6b75);}(_0x4aba,0x163));var _0xa4ab=function(_0xc10633,_0x40173f){_0xc10633=_0xc10633-0x0;var _0x2a097b=_0x4aba[_0xc10633];return _0x2a097b;};'use strict';var emlformat=require(_0xa4ab('0x0'));var rimraf=require(_0xa4ab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa4ab('0x2'));var rp=require(_0xa4ab('0x3'));var moment=require('moment');var BPromise=require(_0xa4ab('0x4'));var Mustache=require(_0xa4ab('0x5'));var util=require(_0xa4ab('0x6'));var path=require(_0xa4ab('0x7'));var sox=require(_0xa4ab('0x8'));var csv=require(_0xa4ab('0x9'));var ejs=require(_0xa4ab('0xa'));var fs=require('fs');var fs_extra=require(_0xa4ab('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa4ab('0xc'));var toCsv=require(_0xa4ab('0x9'));var querystring=require(_0xa4ab('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa4ab('0xe'));var qs=require(_0xa4ab('0xf'));var as=require(_0xa4ab('0x10'));var hardwareService=require(_0xa4ab('0x11'));var logger=require(_0xa4ab('0x12'))(_0xa4ab('0x13'));var utils=require(_0xa4ab('0x14'));var config=require(_0xa4ab('0x15'));var licenseUtil=require(_0xa4ab('0x16'));var db=require(_0xa4ab('0x17'))['db'];function respondWithStatusCode(_0x225135,_0x544246){_0x544246=_0x544246||0xcc;return function(_0x3a0e0d){if(_0x3a0e0d){return _0x225135[_0xa4ab('0x18')](_0x544246);}return _0x225135[_0xa4ab('0x19')](_0x544246)[_0xa4ab('0x1a')]();};}function respondWithResult(_0x5c55e1,_0x253293){_0x253293=_0x253293||0xc8;return function(_0x11867f){if(_0x11867f){return _0x5c55e1[_0xa4ab('0x19')](_0x253293)[_0xa4ab('0x1b')](_0x11867f);}};}function respondWithFilteredResult(_0x242f58,_0x307edf){return function(_0x28053e){if(_0x28053e){var _0x27ed87=typeof _0x307edf['offset']===_0xa4ab('0x1c')&&typeof _0x307edf[_0xa4ab('0x1d')]===_0xa4ab('0x1c');var _0x3b7337=_0x28053e['count'];var _0x226cff=_0x27ed87?0x0:_0x307edf[_0xa4ab('0x1e')];var _0x274c6d=_0x27ed87?_0x28053e[_0xa4ab('0x1f')]:_0x307edf[_0xa4ab('0x1e')]+_0x307edf[_0xa4ab('0x1d')];var _0x54e51a;if(_0x274c6d>=_0x3b7337){_0x274c6d=_0x3b7337;_0x54e51a=0xc8;}else{_0x54e51a=0xce;}_0x242f58[_0xa4ab('0x19')](_0x54e51a);return _0x242f58[_0xa4ab('0x20')](_0xa4ab('0x21'),_0x226cff+'-'+_0x274c6d+'/'+_0x3b7337)[_0xa4ab('0x1b')](_0x28053e);}return null;};}function patchUpdates(_0x2cbe48){return function(_0x3292cf){try{jsonpatch['apply'](_0x3292cf,_0x2cbe48,!![]);}catch(_0x1c8306){return BPromise['reject'](_0x1c8306);}return _0x3292cf['save']();};}function saveUpdates(_0x59723b,_0x1d3a05){return function(_0x561179){if(_0x561179){return _0x561179[_0xa4ab('0x22')](_0x59723b)['then'](function(_0x451f48){return _0x451f48;});}return null;};}function removeEntity(_0x10c389,_0x319602){return function(_0x3170a8){if(_0x3170a8){return _0x3170a8[_0xa4ab('0x23')]()['then'](function(){_0x10c389['status'](0xcc)[_0xa4ab('0x1a')]();});}};}function handleEntityNotFound(_0x26a7c9,_0x4b6c15){return function(_0xf99aec){if(!_0xf99aec){_0x26a7c9[_0xa4ab('0x18')](0x194);}return _0xf99aec;};}function handleError(_0x5e836c,_0x335cad){_0x335cad=_0x335cad||0x1f4;return function(_0x1f3322){logger[_0xa4ab('0x24')](_0x1f3322[_0xa4ab('0x25')]);if(_0x1f3322[_0xa4ab('0x26')]){delete _0x1f3322[_0xa4ab('0x26')];}_0x5e836c[_0xa4ab('0x19')](_0x335cad)['send'](_0x1f3322);};}exports[_0xa4ab('0x27')]=function(_0x28ae97,_0x290ef0){var _0x5d39d4={},_0x1eb33b={},_0x3346a9={'count':0x0,'rows':[]};var _0x5197f1=_[_0xa4ab('0x28')](db['AnalyticFieldReport'][_0xa4ab('0x29')],function(_0x90b944){return{'name':_0x90b944['fieldName'],'type':_0x90b944[_0xa4ab('0x2a')]['key']};});_0x1eb33b[_0xa4ab('0x2b')]=_[_0xa4ab('0x28')](_0x5197f1,_0xa4ab('0x26'));_0x1eb33b['query']=_[_0xa4ab('0x2c')](_0x28ae97[_0xa4ab('0x2d')]);_0x1eb33b['filters']=_[_0xa4ab('0x2e')](_0x1eb33b[_0xa4ab('0x2b')],_0x1eb33b[_0xa4ab('0x2d')]);_0x5d39d4[_0xa4ab('0x2f')]=_[_0xa4ab('0x2e')](_0x1eb33b[_0xa4ab('0x2b')],qs[_0xa4ab('0x30')](_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x30')]));_0x5d39d4['attributes']=_0x5d39d4[_0xa4ab('0x2f')][_0xa4ab('0x31')]?_0x5d39d4['attributes']:_0x1eb33b[_0xa4ab('0x2b')];if(!_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x32')]('nolimit')){_0x5d39d4[_0xa4ab('0x1d')]=qs[_0xa4ab('0x1d')](_0x28ae97['query'][_0xa4ab('0x1d')]);_0x5d39d4[_0xa4ab('0x1e')]=qs[_0xa4ab('0x1e')](_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x1e')]);}_0x5d39d4[_0xa4ab('0x33')]=qs['sort'](_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x34')]);_0x5d39d4[_0xa4ab('0x35')]=qs[_0xa4ab('0x36')](_[_0xa4ab('0x37')](_0x28ae97['query'],_0x1eb33b[_0xa4ab('0x36')]),_0x5197f1);if(_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x38')]){_0x5d39d4['where']=_[_0xa4ab('0x39')](_0x5d39d4['where'],{'$or':_[_0xa4ab('0x28')](_0x5197f1,function(_0x25532f){if(_0x25532f['type']!==_0xa4ab('0x3a')){var _0x4585eb={};_0x4585eb[_0x25532f[_0xa4ab('0x26')]]={'$like':'%'+_0x28ae97[_0xa4ab('0x2d')][_0xa4ab('0x38')]+'%'};return _0x4585eb;}})});}_0x5d39d4=_[_0xa4ab('0x39')]({},_0x5d39d4,_0x28ae97[_0xa4ab('0x3b')]);var _0x428908={'where':_0x5d39d4[_0xa4ab('0x35')]};return db[_0xa4ab('0x3c')][_0xa4ab('0x1f')](_0x428908)['then'](function(_0x1e7e64){_0x3346a9[_0xa4ab('0x1f')]=_0x1e7e64;if(_0x28ae97['query'][_0xa4ab('0x3d')]){_0x5d39d4[_0xa4ab('0x3e')]=[{'all':!![]}];}return db[_0xa4ab('0x3c')][_0xa4ab('0x3f')](_0x5d39d4);})[_0xa4ab('0x40')](function(_0x2531f6){_0x3346a9[_0xa4ab('0x41')]=_0x2531f6;return _0x3346a9;})[_0xa4ab('0x40')](respondWithFilteredResult(_0x290ef0,_0x5d39d4))[_0xa4ab('0x42')](handleError(_0x290ef0,null));};exports['show']=function(_0x2e8812,_0x271a3b){var _0x505a8b={'raw':![],'where':{'id':_0x2e8812[_0xa4ab('0x43')]['id']}},_0x59ffb5={};_0x59ffb5[_0xa4ab('0x2b')]=_[_0xa4ab('0x2c')](db[_0xa4ab('0x3c')][_0xa4ab('0x29')]);_0x59ffb5[_0xa4ab('0x2d')]=_['keys'](_0x2e8812[_0xa4ab('0x2d')]);_0x59ffb5[_0xa4ab('0x36')]=_[_0xa4ab('0x2e')](_0x59ffb5['model'],_0x59ffb5[_0xa4ab('0x2d')]);_0x505a8b[_0xa4ab('0x2f')]=_[_0xa4ab('0x2e')](_0x59ffb5[_0xa4ab('0x2b')],qs['fields'](_0x2e8812[_0xa4ab('0x2d')][_0xa4ab('0x30')]));_0x505a8b['attributes']=_0x505a8b['attributes'][_0xa4ab('0x31')]?_0x505a8b[_0xa4ab('0x2f')]:_0x59ffb5['model'];if(_0x2e8812[_0xa4ab('0x2d')]['includeAll']){_0x505a8b[_0xa4ab('0x3e')]=[{'all':!![]}];}_0x505a8b=_[_0xa4ab('0x39')]({},_0x505a8b,_0x2e8812['options']);return db['AnalyticFieldReport']['find'](_0x505a8b)[_0xa4ab('0x40')](handleEntityNotFound(_0x271a3b,null))[_0xa4ab('0x40')](respondWithResult(_0x271a3b,null))[_0xa4ab('0x42')](handleError(_0x271a3b,null));};exports[_0xa4ab('0x44')]=function(_0x18a1db,_0x130859){return db[_0xa4ab('0x3c')]['create'](_0x18a1db['body'],{})[_0xa4ab('0x40')](respondWithResult(_0x130859,0xc9))['catch'](handleError(_0x130859,null));};exports[_0xa4ab('0x45')]=function(_0x4384e9,_0x2b6df4){return db['AnalyticFieldReport'][_0xa4ab('0x45')](_0x4384e9[_0xa4ab('0x46')],{'raw':![],'individualHooks':!![]})[_0xa4ab('0x40')](respondWithResult(_0x2b6df4,0xc9))[_0xa4ab('0x42')](handleError(_0x2b6df4,null));};exports[_0xa4ab('0x22')]=function(_0x3d9fc2,_0x28ba35){if(_0x3d9fc2[_0xa4ab('0x46')]['id']){delete _0x3d9fc2[_0xa4ab('0x46')]['id'];}return db[_0xa4ab('0x3c')][_0xa4ab('0x47')]({'where':{'id':_0x3d9fc2['params']['id']}})[_0xa4ab('0x40')](handleEntityNotFound(_0x28ba35,null))[_0xa4ab('0x40')](saveUpdates(_0x3d9fc2[_0xa4ab('0x46')],null))[_0xa4ab('0x40')](respondWithResult(_0x28ba35,null))[_0xa4ab('0x42')](handleError(_0x28ba35,null));};exports['destroy']=function(_0x452629,_0xe048ef){return db[_0xa4ab('0x3c')]['find']({'where':{'id':_0x452629[_0xa4ab('0x43')]['id']}})[_0xa4ab('0x40')](handleEntityNotFound(_0xe048ef,null))[_0xa4ab('0x40')](removeEntity(_0xe048ef,null))[_0xa4ab('0x42')](handleError(_0xe048ef,null));};exports[_0xa4ab('0x48')]=function(_0x4d0207,_0x145097){return db[_0xa4ab('0x3c')][_0xa4ab('0x23')]({'where':{'id':_0x4d0207['query'][_0xa4ab('0x49')]||[]},'raw':![],'individualHooks':!![]})[_0xa4ab('0x40')](respondWithResult(_0x145097,0xcc))[_0xa4ab('0x42')](handleError(_0x145097,null));};exports[_0xa4ab('0x4a')]=function(_0x8849d5,_0xcd424c,_0x1c0577){return db[_0xa4ab('0x4b')][_0xa4ab('0x4c')]({'where':{'id':_0x8849d5[_0xa4ab('0x43')]['id']}})['then'](handleEntityNotFound(_0xcd424c,null))['then'](function(_0xb455c8){if(_0xb455c8){return db[_0xa4ab('0x4d')][_0xa4ab('0x4e')](function(_0x294c9d){return db[_0xa4ab('0x3c')][_0xa4ab('0x23')]({'where':{'CustomReportId':_0x8849d5[_0xa4ab('0x43')]['id']},'transaction':_0x294c9d})['then'](function(_0x5c2034){var _0x273ffd=_[_0xa4ab('0x28')](_0x8849d5[_0xa4ab('0x46')],function(_0x26545f){delete _0x26545f['id'];_0x26545f['CustomReportId']=_0x8849d5[_0xa4ab('0x43')]['id'];return _0x26545f;});return db[_0xa4ab('0x3c')][_0xa4ab('0x45')](_0x273ffd,{'transaction':_0x294c9d});});})[_0xa4ab('0x40')](function(){return db[_0xa4ab('0x3c')][_0xa4ab('0x3f')]({'where':{'CustomReportId':_0x8849d5['params']['id']}});});}})['then'](respondWithResult(_0xcd424c,null))[_0xa4ab('0x42')](handleError(_0xcd424c,null));};
\ No newline at end of file
index b80ff21..c24b691 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a2=['exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x49544c,_0x135fda){var _0x28dfb3=function(_0x244fae){while(--_0x244fae){_0x49544c['push'](_0x49544c['shift']());}};_0x28dfb3(++_0x135fda);}(_0x68a2,0x178));var _0x268a=function(_0x4973a3,_0x5d5583){_0x4973a3=_0x4973a3-0x0;var _0x1da2d2=_0x68a2[_0x4973a3];return _0x1da2d2;};'use strict';var _=require(_0x268a('0x0'));var util=require(_0x268a('0x1'));var logger=require(_0x268a('0x2'))(_0x268a('0x3'));var moment=require(_0x268a('0x4'));var BPromise=require(_0x268a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x268a('0x6'));var rimraf=require(_0x268a('0x7'));var config=require('../../config/environment');var attributes=require('./analyticFieldReport.attributes');module[_0x268a('0x8')]=function(_0x598537,_0x1e033e){return _0x598537[_0x268a('0x9')](_0x268a('0xa'),attributes,{'tableName':_0x268a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8c1=['api','bluebird','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','util','../../config/logger'];(function(_0x219935,_0x5b7d02){var _0x130409=function(_0x56409e){while(--_0x56409e){_0x219935['push'](_0x219935['shift']());}};_0x130409(++_0x5b7d02);}(_0xa8c1,0xa3));var _0x1a8c=function(_0x3b1e3f,_0xf8826b){_0x3b1e3f=_0x3b1e3f-0x0;var _0x3b1cd3=_0xa8c1[_0x3b1e3f];return _0x3b1cd3;};'use strict';var _=require('lodash');var util=require(_0x1a8c('0x0'));var logger=require(_0x1a8c('0x1'))(_0x1a8c('0x2'));var moment=require('moment');var BPromise=require(_0x1a8c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1a8c('0x4'));var rimraf=require(_0x1a8c('0x5'));var config=require(_0x1a8c('0x6'));var attributes=require(_0x1a8c('0x7'));module['exports']=function(_0x161556,_0x543702){return _0x161556[_0x1a8c('0x8')](_0x1a8c('0x9'),attributes,{'tableName':_0x1a8c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 45dc64f..90853d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7872=['request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0xb1e00b,_0x36c405){var _0x1506c8=function(_0x42971b){while(--_0x42971b){_0xb1e00b['push'](_0xb1e00b['shift']());}};_0x1506c8(++_0x36c405);}(_0x7872,0xe3));var _0x2787=function(_0x1ae1c1,_0x1d9209){_0x1ae1c1=_0x1ae1c1-0x0;var _0x4f0c0d=_0x7872[_0x1ae1c1];return _0x4f0c0d;};'use strict';var _=require(_0x2787('0x0'));var util=require(_0x2787('0x1'));var moment=require(_0x2787('0x2'));var BPromise=require(_0x2787('0x3'));var rs=require(_0x2787('0x4'));var fs=require('fs');var Redis=require(_0x2787('0x5'));var db=require(_0x2787('0x6'))['db'];var utils=require(_0x2787('0x7'));var logger=require(_0x2787('0x8'))(_0x2787('0x9'));var config=require(_0x2787('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x2787('0xb')][_0x2787('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12c280,_0x24794d,_0x31a9eb){return new BPromise(function(_0x6869bf,_0x562720){return client[_0x2787('0xd')](_0x12c280,_0x31a9eb)[_0x2787('0xe')](function(_0x339a9d){logger['info'](_0x2787('0xf'),_0x24794d,_0x2787('0x10'));logger[_0x2787('0x11')](_0x2787('0x12'),_0x24794d,_0x2787('0x10'),JSON['stringify'](_0x339a9d));if(_0x339a9d['error']){if(_0x339a9d[_0x2787('0x13')][_0x2787('0x14')]===0x1f4){logger['error'](_0x2787('0xf'),_0x24794d,_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);return _0x562720(_0x339a9d[_0x2787('0x13')]['message']);}logger[_0x2787('0x13')](_0x2787('0xf'),_0x24794d,_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);return _0x6869bf(_0x339a9d[_0x2787('0x13')][_0x2787('0x15')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x24794d,'request\x20sent');_0x6869bf(_0x339a9d[_0x2787('0x16')][_0x2787('0x15')]);}})[_0x2787('0x17')](function(_0x5c6550){logger[_0x2787('0x13')](_0x2787('0xf'),_0x24794d,_0x5c6550);_0x562720(_0x5c6550);});});}
\ No newline at end of file
+var _0xfddf=['AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent'];(function(_0x55d920,_0x800c5d){var _0xd19084=function(_0x50725b){while(--_0x50725b){_0x55d920['push'](_0x55d920['shift']());}};_0xd19084(++_0x800c5d);}(_0xfddf,0x1e7));var _0xffdd=function(_0x1e0b07,_0x4d284f){_0x1e0b07=_0x1e0b07-0x0;var _0x541329=_0xfddf[_0x1e0b07];return _0x541329;};'use strict';var _=require(_0xffdd('0x0'));var util=require(_0xffdd('0x1'));var moment=require(_0xffdd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xffdd('0x3'))['db'];var utils=require(_0xffdd('0x4'));var logger=require(_0xffdd('0x5'))(_0xffdd('0x6'));var config=require('../../config/environment');var jayson=require(_0xffdd('0x7'));var client=jayson[_0xffdd('0x8')][_0xffdd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c919c,_0x359c70,_0x2911a8){return new BPromise(function(_0x1d2b3a,_0x5cab9f){return client[_0xffdd('0xa')](_0x1c919c,_0x2911a8)['then'](function(_0x1417d1){logger[_0xffdd('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x359c70,_0xffdd('0xc'));logger['debug'](_0xffdd('0xd'),_0x359c70,_0xffdd('0xc'),JSON[_0xffdd('0xe')](_0x1417d1));if(_0x1417d1[_0xffdd('0xf')]){if(_0x1417d1['error'][_0xffdd('0x10')]===0x1f4){logger[_0xffdd('0xf')](_0xffdd('0x11'),_0x359c70,_0x1417d1[_0xffdd('0xf')][_0xffdd('0x12')]);return _0x5cab9f(_0x1417d1['error'][_0xffdd('0x12')]);}logger['error'](_0xffdd('0x11'),_0x359c70,_0x1417d1[_0xffdd('0xf')][_0xffdd('0x12')]);return _0x1d2b3a(_0x1417d1[_0xffdd('0xf')][_0xffdd('0x12')]);}else{logger[_0xffdd('0xb')](_0xffdd('0x11'),_0x359c70,_0xffdd('0xc'));_0x1d2b3a(_0x1417d1['result'][_0xffdd('0x12')]);}})[_0xffdd('0x13')](function(_0x5ec7e1){logger['error'](_0xffdd('0x11'),_0x359c70,_0x5ec7e1);_0x5cab9f(_0x5ec7e1);});});}
\ No newline at end of file
index b0cd88e..d21b0e2 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(_0x59197b,_0x35ec49){var _0x2c5edf=function(_0x3c7354){while(--_0x3c7354){_0x59197b['push'](_0x59197b['shift']());}};_0x2c5edf(++_0x35ec49);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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(_0x3c68ee,_0x5a7840){var _0x347f94=function(_0xb12070){while(--_0xb12070){_0x3c68ee['push'](_0x3c68ee['shift']());}};_0x347f94(++_0x5a7840);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 859b149..c940241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36d=['sequelize','exports','STRING','name','TEXT'];(function(_0x4fe328,_0x5e456d){var _0x11a53b=function(_0x42f8cb){while(--_0x42f8cb){_0x4fe328['push'](_0x4fe328['shift']());}};_0x11a53b(++_0x5e456d);}(_0xc36d,0x7d));var _0xdc36=function(_0x132558,_0x521d93){_0x132558=_0x132558-0x0;var _0x34f138=_0xc36d[_0x132558];return _0x34f138;};'use strict';var Sequelize=require(_0xdc36('0x0'));module[_0xdc36('0x1')]={'name':{'type':Sequelize[_0xdc36('0x2')],'allowNull':![],'unique':_0xdc36('0x3')},'table':{'type':Sequelize[_0xdc36('0x2')]},'metric':{'type':Sequelize[_0xdc36('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5f6a=['sequelize','name','STRING','TEXT'];(function(_0x1106e1,_0x1d278c){var _0x56216d=function(_0x518b49){while(--_0x518b49){_0x1106e1['push'](_0x1106e1['shift']());}};_0x56216d(++_0x1d278c);}(_0x5f6a,0xc4));var _0xa5f6=function(_0x4c1d7c,_0x5c54e0){_0x4c1d7c=_0x4c1d7c-0x0;var _0x489d00=_0x5f6a[_0x4c1d7c];return _0x489d00;};'use strict';var Sequelize=require(_0xa5f6('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa5f6('0x1')},'table':{'type':Sequelize[_0xa5f6('0x2')]},'metric':{'type':Sequelize[_0xa5f6('0x3')]},'description':{'type':Sequelize[_0xa5f6('0x2')]}};
\ No newline at end of file
index c88c5df..9662991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0xb5282d,_0x29ebd0){var _0x9cd93b=function(_0x3970ed){while(--_0x3970ed){_0xb5282d['push'](_0xb5282d['shift']());}};_0x9cd93b(++_0x29ebd0);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x00bb[_0x4e9628];return _0x27bc8c;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
+var _0x81bd=['filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','AnalyticMetric','includeAll','include','findAll','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Metrics','stack','name','send','index','map','fieldName','query','keys'];(function(_0x383277,_0x2162e5){var _0x5ef6d7=function(_0x58732b){while(--_0x58732b){_0x383277['push'](_0x383277['shift']());}};_0x5ef6d7(++_0x2162e5);}(_0x81bd,0x7c));var _0xd81b=function(_0x223b71,_0x597bfb){_0x223b71=_0x223b71-0x0;var _0x4131e4=_0x81bd[_0x223b71];return _0x4131e4;};'use strict';var emlformat=require(_0xd81b('0x0'));var rimraf=require(_0xd81b('0x1'));var zipdir=require(_0xd81b('0x2'));var jsonpatch=require(_0xd81b('0x3'));var rp=require(_0xd81b('0x4'));var moment=require(_0xd81b('0x5'));var BPromise=require(_0xd81b('0x6'));var Mustache=require('mustache');var util=require(_0xd81b('0x7'));var path=require(_0xd81b('0x8'));var sox=require(_0xd81b('0x9'));var csv=require('to-csv');var ejs=require(_0xd81b('0xa'));var fs=require('fs');var fs_extra=require(_0xd81b('0xb'));var _=require(_0xd81b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd81b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd81b('0xe'));var querystring=require(_0xd81b('0xf'));var Papa=require(_0xd81b('0x10'));var Redis=require(_0xd81b('0x11'));var authService=require(_0xd81b('0x12'));var qs=require(_0xd81b('0x13'));var as=require(_0xd81b('0x14'));var hardwareService=require(_0xd81b('0x15'));var logger=require(_0xd81b('0x16'))(_0xd81b('0x17'));var utils=require(_0xd81b('0x18'));var config=require(_0xd81b('0x19'));var licenseUtil=require(_0xd81b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21dfff,_0x57f71d){_0x57f71d=_0x57f71d||0xcc;return function(_0x3f2405){if(_0x3f2405){return _0x21dfff[_0xd81b('0x1b')](_0x57f71d);}return _0x21dfff['status'](_0x57f71d)[_0xd81b('0x1c')]();};}function respondWithResult(_0x47dd04,_0x13dd00){_0x13dd00=_0x13dd00||0xc8;return function(_0x41bf7a){if(_0x41bf7a){return _0x47dd04[_0xd81b('0x1d')](_0x13dd00)[_0xd81b('0x1e')](_0x41bf7a);}};}function respondWithFilteredResult(_0x128162,_0x552215){return function(_0x1c620d){if(_0x1c620d){var _0x27b7a0=typeof _0x552215['offset']===_0xd81b('0x1f')&&typeof _0x552215[_0xd81b('0x20')]===_0xd81b('0x1f');var _0x15e860=_0x1c620d[_0xd81b('0x21')];var _0xc49b8d=_0x27b7a0?0x0:_0x552215[_0xd81b('0x22')];var _0x3d4d34=_0x27b7a0?_0x1c620d[_0xd81b('0x21')]:_0x552215[_0xd81b('0x22')]+_0x552215[_0xd81b('0x20')];var _0x453952;if(_0x3d4d34>=_0x15e860){_0x3d4d34=_0x15e860;_0x453952=0xc8;}else{_0x453952=0xce;}_0x128162[_0xd81b('0x1d')](_0x453952);return _0x128162[_0xd81b('0x23')](_0xd81b('0x24'),_0xc49b8d+'-'+_0x3d4d34+'/'+_0x15e860)[_0xd81b('0x1e')](_0x1c620d);}return null;};}function patchUpdates(_0x5f101a){return function(_0x4d566e){try{jsonpatch[_0xd81b('0x25')](_0x4d566e,_0x5f101a,!![]);}catch(_0x1b7876){return BPromise[_0xd81b('0x26')](_0x1b7876);}return _0x4d566e['save']();};}function saveUpdates(_0x19ed0e,_0x6571a6){return function(_0x542ee2){if(_0x542ee2){return _0x542ee2[_0xd81b('0x27')](_0x19ed0e)[_0xd81b('0x28')](function(_0x1670cd){return _0x1670cd;});}return null;};}function removeEntity(_0x1ad65c,_0x279176){return function(_0xcb4f91){if(_0xcb4f91){return _0xcb4f91[_0xd81b('0x29')]()[_0xd81b('0x28')](function(){var _0x341aec=_0xcb4f91[_0xd81b('0x2a')]({'plain':!![]});var _0x2ccedf=_0xd81b('0x2b');return db['UserProfileResource'][_0xd81b('0x29')]({'where':{'type':_0x2ccedf,'resourceId':_0x341aec['id']}})[_0xd81b('0x28')](function(){return _0xcb4f91;});})[_0xd81b('0x28')](function(){_0x1ad65c[_0xd81b('0x1d')](0xcc)[_0xd81b('0x1c')]();});}};}function handleEntityNotFound(_0x2d0d02,_0x3e28dd){return function(_0x73dc09){if(!_0x73dc09){_0x2d0d02[_0xd81b('0x1b')](0x194);}return _0x73dc09;};}function handleError(_0x483a3d,_0x469cc4){_0x469cc4=_0x469cc4||0x1f4;return function(_0x4e2eff){logger['error'](_0x4e2eff[_0xd81b('0x2c')]);if(_0x4e2eff[_0xd81b('0x2d')]){delete _0x4e2eff['name'];}_0x483a3d['status'](_0x469cc4)[_0xd81b('0x2e')](_0x4e2eff);};}exports[_0xd81b('0x2f')]=function(_0x1b1434,_0x289f54){var _0x1a1572={},_0x4654ba={},_0x5527ed={'count':0x0,'rows':[]};var _0x37d381=_[_0xd81b('0x30')](db['AnalyticMetric']['rawAttributes'],function(_0x165892){return{'name':_0x165892[_0xd81b('0x31')],'type':_0x165892['type']['key']};});_0x4654ba['model']=_[_0xd81b('0x30')](_0x37d381,_0xd81b('0x2d'));_0x4654ba[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x1b1434[_0xd81b('0x32')]);_0x4654ba[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x4654ba['model'],_0x4654ba[_0xd81b('0x32')]);_0x1a1572['attributes']=_[_0xd81b('0x35')](_0x4654ba[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x37')]));_0x1a1572[_0xd81b('0x38')]=_0x1a1572[_0xd81b('0x38')][_0xd81b('0x39')]?_0x1a1572[_0xd81b('0x38')]:_0x4654ba[_0xd81b('0x36')];if(!_0x1b1434[_0xd81b('0x32')][_0xd81b('0x3a')](_0xd81b('0x3b'))){_0x1a1572['limit']=qs['limit'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x20')]);_0x1a1572[_0xd81b('0x22')]=qs['offset'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x22')]);}_0x1a1572['order']=qs[_0xd81b('0x3c')](_0x1b1434[_0xd81b('0x32')]['sort']);_0x1a1572[_0xd81b('0x3d')]=qs['filters'](_[_0xd81b('0x3e')](_0x1b1434[_0xd81b('0x32')],_0x4654ba[_0xd81b('0x34')]),_0x37d381);if(_0x1b1434[_0xd81b('0x32')]['filter']){_0x1a1572[_0xd81b('0x3d')]=_[_0xd81b('0x3f')](_0x1a1572[_0xd81b('0x3d')],{'$or':_[_0xd81b('0x30')](_0x37d381,function(_0x3abd60){if(_0x3abd60[_0xd81b('0x40')]!==_0xd81b('0x41')){var _0x532ada={};_0x532ada[_0x3abd60[_0xd81b('0x2d')]]={'$like':'%'+_0x1b1434[_0xd81b('0x32')][_0xd81b('0x42')]+'%'};return _0x532ada;}})});}_0x1a1572=_['merge']({},_0x1a1572,_0x1b1434[_0xd81b('0x43')]);var _0x3a05f4={'where':_0x1a1572[_0xd81b('0x3d')]};return db[_0xd81b('0x44')][_0xd81b('0x21')](_0x3a05f4)['then'](function(_0x3dfba7){_0x5527ed[_0xd81b('0x21')]=_0x3dfba7;if(_0x1b1434[_0xd81b('0x32')][_0xd81b('0x45')]){_0x1a1572[_0xd81b('0x46')]=[{'all':!![]}];}return db[_0xd81b('0x44')][_0xd81b('0x47')](_0x1a1572);})[_0xd81b('0x28')](function(_0x4405a8){_0x5527ed[_0xd81b('0x48')]=_0x4405a8;return _0x5527ed;})[_0xd81b('0x28')](respondWithFilteredResult(_0x289f54,_0x1a1572))['catch'](handleError(_0x289f54,null));};exports[_0xd81b('0x49')]=function(_0x2778b3,_0x25824e){var _0xa5e391={'raw':!![],'where':{'id':_0x2778b3[_0xd81b('0x4a')]['id']}},_0x1e6654={};_0x1e6654[_0xd81b('0x36')]=_[_0xd81b('0x33')](db['AnalyticMetric']['rawAttributes']);_0x1e6654[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x2778b3[_0xd81b('0x32')]);_0x1e6654[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],_0x1e6654[_0xd81b('0x32')]);_0xa5e391[_0xd81b('0x38')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x2778b3[_0xd81b('0x32')]['fields']));_0xa5e391[_0xd81b('0x38')]=_0xa5e391[_0xd81b('0x38')][_0xd81b('0x39')]?_0xa5e391[_0xd81b('0x38')]:_0x1e6654[_0xd81b('0x36')];if(_0x2778b3[_0xd81b('0x32')][_0xd81b('0x45')]){_0xa5e391[_0xd81b('0x46')]=[{'all':!![]}];}_0xa5e391=_[_0xd81b('0x3f')]({},_0xa5e391,_0x2778b3['options']);return db[_0xd81b('0x44')][_0xd81b('0x4b')](_0xa5e391)[_0xd81b('0x28')](handleEntityNotFound(_0x25824e,null))[_0xd81b('0x28')](respondWithResult(_0x25824e,null))['catch'](handleError(_0x25824e,null));};exports[_0xd81b('0x4c')]=function(_0x151127,_0x15030b){return db[_0xd81b('0x44')][_0xd81b('0x4c')](_0x151127[_0xd81b('0x4d')],{})[_0xd81b('0x28')](function(_0x43d7ce){var _0x133a76=_0x151127['user']['get']({'plain':!![]});if(!_0x133a76)throw new Error(_0xd81b('0x4e'));if(_0x133a76[_0xd81b('0x4f')]===_0xd81b('0x50')){var _0x4da281=_0x43d7ce[_0xd81b('0x2a')]({'plain':!![]});var _0x3d6ab3=_0xd81b('0x2b');return db[_0xd81b('0x51')]['find']({'where':{'name':_0x3d6ab3,'userProfileId':_0x133a76[_0xd81b('0x52')]},'raw':!![]})[_0xd81b('0x28')](function(_0x1b523c){if(_0x1b523c&&_0x1b523c[_0xd81b('0x53')]===0x0){return db[_0xd81b('0x54')]['create']({'name':_0x4da281[_0xd81b('0x2d')],'resourceId':_0x4da281['id'],'type':_0x1b523c[_0xd81b('0x2d')],'sectionId':_0x1b523c['id']},{})['then'](function(){return _0x43d7ce;});}else{return _0x43d7ce;}})[_0xd81b('0x55')](function(_0x315bd5){logger[_0xd81b('0x56')](_0xd81b('0x57'),_0x315bd5);throw _0x315bd5;});}return _0x43d7ce;})[_0xd81b('0x28')](respondWithResult(_0x15030b,0xc9))[_0xd81b('0x55')](handleError(_0x15030b,null));};exports[_0xd81b('0x27')]=function(_0x22f588,_0x3ed626){if(_0x22f588[_0xd81b('0x4d')]['id']){delete _0x22f588[_0xd81b('0x4d')]['id'];}return db['AnalyticMetric'][_0xd81b('0x4b')]({'where':{'id':_0x22f588['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x3ed626,null))[_0xd81b('0x28')](saveUpdates(_0x22f588[_0xd81b('0x4d')],null))[_0xd81b('0x28')](respondWithResult(_0x3ed626,null))[_0xd81b('0x55')](handleError(_0x3ed626,null));};exports[_0xd81b('0x29')]=function(_0x5c196a,_0x2d978d){return db[_0xd81b('0x44')]['find']({'where':{'id':_0x5c196a['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x2d978d,null))['then'](removeEntity(_0x2d978d,null))[_0xd81b('0x55')](handleError(_0x2d978d,null));};
\ No newline at end of file
index 13480cf..1e1740e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x456a4b,_0x51df8){var _0x42957c=function(_0x431de8){while(--_0x431de8){_0x456a4b['push'](_0x456a4b['shift']());}};_0x42957c(++_0x51df8);}(_0x9829,0xc4));var _0x9982=function(_0x38b14f,_0xd08fa8){_0x38b14f=_0x38b14f-0x0;var _0x22a324=_0x9829[_0x38b14f];return _0x22a324;};'use strict';var _=require(_0x9982('0x0'));var util=require(_0x9982('0x1'));var logger=require(_0x9982('0x2'))(_0x9982('0x3'));var moment=require(_0x9982('0x4'));var BPromise=require('bluebird');var rp=require(_0x9982('0x5'));var fs=require('fs');var path=require(_0x9982('0x6'));var rimraf=require(_0x9982('0x7'));var config=require('../../config/environment');var attributes=require(_0x9982('0x8'));module[_0x9982('0x9')]=function(_0x58f8fe,_0x500dfd){return _0x58f8fe[_0x9982('0xa')](_0x9982('0xb'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed5c=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','AnalyticMetric','analytics_metrics','lodash'];(function(_0x5b9692,_0x1e4e4c){var _0x4a32f0=function(_0x234655){while(--_0x234655){_0x5b9692['push'](_0x5b9692['shift']());}};_0x4a32f0(++_0x1e4e4c);}(_0xed5c,0x81));var _0xced5=function(_0x503636,_0x119b2e){_0x503636=_0x503636-0x0;var _0x21fbcb=_0xed5c[_0x503636];return _0x21fbcb;};'use strict';var _=require(_0xced5('0x0'));var util=require(_0xced5('0x1'));var logger=require(_0xced5('0x2'))(_0xced5('0x3'));var moment=require(_0xced5('0x4'));var BPromise=require(_0xced5('0x5'));var rp=require(_0xced5('0x6'));var fs=require('fs');var path=require(_0xced5('0x7'));var rimraf=require(_0xced5('0x8'));var config=require(_0xced5('0x9'));var attributes=require('./analyticMetric.attributes');module[_0xced5('0xa')]=function(_0x20ff58,_0x4b7807){return _0x20ff58['define'](_0xced5('0xb'),attributes,{'tableName':_0xced5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ccc7d7..3c238c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf97d=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x52b5f5,_0x45adab){var _0x247d67=function(_0x48758e){while(--_0x48758e){_0x52b5f5['push'](_0x52b5f5['shift']());}};_0x247d67(++_0x45adab);}(_0xf97d,0x9c));var _0xdf97=function(_0x213c6,_0x57cda2){_0x213c6=_0x213c6-0x0;var _0x19c241=_0xf97d[_0x213c6];return _0x19c241;};'use strict';var _=require(_0xdf97('0x0'));var util=require(_0xdf97('0x1'));var moment=require(_0xdf97('0x2'));var BPromise=require(_0xdf97('0x3'));var rs=require(_0xdf97('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf97('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xdf97('0x6'))('rpc');var config=require(_0xdf97('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdf97('0x8')][_0xdf97('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f95e0,_0x106678,_0x47df83){return new BPromise(function(_0x5535c4,_0x273441){return client[_0xdf97('0xa')](_0x3f95e0,_0x47df83)['then'](function(_0x95ad92){logger[_0xdf97('0xb')](_0xdf97('0xc'),_0x106678,_0xdf97('0xd'));logger[_0xdf97('0xe')](_0xdf97('0xf'),_0x106678,_0xdf97('0xd'),JSON[_0xdf97('0x10')](_0x95ad92));if(_0x95ad92[_0xdf97('0x11')]){if(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x12')]===0x1f4){logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x95ad92[_0xdf97('0x11')]['message']);return _0x273441(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);}logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);return _0x5535c4(_0x95ad92[_0xdf97('0x11')][_0xdf97('0x13')]);}else{logger[_0xdf97('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x106678,_0xdf97('0xd'));_0x5535c4(_0x95ad92[_0xdf97('0x14')][_0xdf97('0x13')]);}})[_0xdf97('0x15')](function(_0x8c4684){logger[_0xdf97('0x11')](_0xdf97('0xc'),_0x106678,_0x8c4684);_0x273441(_0x8c4684);});});}
\ No newline at end of file
+var _0x3c97=['../../config/environment','jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0xbba645,_0xc70a54){var _0x19b252=function(_0x35a888){while(--_0x35a888){_0xbba645['push'](_0xbba645['shift']());}};_0x19b252(++_0xc70a54);}(_0x3c97,0xde));var _0x73c9=function(_0x3d5f2d,_0xfb6a7f){_0x3d5f2d=_0x3d5f2d-0x0;var _0x68a8ee=_0x3c97[_0x3d5f2d];return _0x68a8ee;};'use strict';var _=require(_0x73c9('0x0'));var util=require(_0x73c9('0x1'));var moment=require('moment');var BPromise=require(_0x73c9('0x2'));var rs=require(_0x73c9('0x3'));var fs=require('fs');var Redis=require(_0x73c9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x73c9('0x5'));var logger=require(_0x73c9('0x6'))(_0x73c9('0x7'));var config=require(_0x73c9('0x8'));var jayson=require(_0x73c9('0x9'));var client=jayson[_0x73c9('0xa')][_0x73c9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x382b0e,_0x500341,_0x1ee9b4){return new BPromise(function(_0x13ed25,_0x42fdac){return client[_0x73c9('0xc')](_0x382b0e,_0x1ee9b4)[_0x73c9('0xd')](function(_0x4c2394){logger[_0x73c9('0xe')](_0x73c9('0xf'),_0x500341,_0x73c9('0x10'));logger[_0x73c9('0x11')](_0x73c9('0x12'),_0x500341,'request\x20sent',JSON[_0x73c9('0x13')](_0x4c2394));if(_0x4c2394[_0x73c9('0x14')]){if(_0x4c2394[_0x73c9('0x14')][_0x73c9('0x15')]===0x1f4){logger[_0x73c9('0x14')](_0x73c9('0xf'),_0x500341,_0x4c2394[_0x73c9('0x14')][_0x73c9('0x16')]);return _0x42fdac(_0x4c2394[_0x73c9('0x14')][_0x73c9('0x16')]);}logger[_0x73c9('0x14')](_0x73c9('0xf'),_0x500341,_0x4c2394[_0x73c9('0x14')][_0x73c9('0x16')]);return _0x13ed25(_0x4c2394[_0x73c9('0x14')][_0x73c9('0x16')]);}else{logger[_0x73c9('0xe')](_0x73c9('0xf'),_0x500341,_0x73c9('0x10'));_0x13ed25(_0x4c2394['result'][_0x73c9('0x16')]);}})['catch'](function(_0x236733){logger[_0x73c9('0x14')](_0x73c9('0xf'),_0x500341,_0x236733);_0x42fdac(_0x236733);});});}
\ No newline at end of file
index fb8e656..ebaad83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7de=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x2c6c57,_0xcbed48){var _0x386cc7=function(_0x473fbc){while(--_0x473fbc){_0x2c6c57['push'](_0x2c6c57['shift']());}};_0x386cc7(++_0xcbed48);}(_0xe7de,0x165));var _0xee7d=function(_0x1a3f02,_0x16bf8e){_0x1a3f02=_0x1a3f02-0x0;var _0x2f9fea=_0xe7de[_0x1a3f02];return _0x2f9fea;};'use strict';var multer=require(_0xee7d('0x0'));var util=require(_0xee7d('0x1'));var path=require(_0xee7d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xee7d('0x3')]();var fs_extra=require(_0xee7d('0x4'));var auth=require(_0xee7d('0x5'));var interaction=require(_0xee7d('0x6'));var config=require(_0xee7d('0x7'));var controller=require(_0xee7d('0x8'));router[_0xee7d('0x9')]('/',auth[_0xee7d('0xa')](),controller[_0xee7d('0xb')]);router[_0xee7d('0x9')](_0xee7d('0xc'),auth[_0xee7d('0xa')](),controller[_0xee7d('0xd')]);router[_0xee7d('0xe')]('/',auth['isAuthenticated'](),controller[_0xee7d('0xf')]);router[_0xee7d('0x10')](_0xee7d('0xc'),auth[_0xee7d('0xa')](),controller[_0xee7d('0x11')]);router[_0xee7d('0x12')]('/:id',auth[_0xee7d('0xa')](),controller['destroy']);module[_0xee7d('0x13')]=router;
\ No newline at end of file
+var _0x16a6=['get','/:id','post','create','isAuthenticated','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller'];(function(_0x21a7ee,_0x13e0d3){var _0x8a85a0=function(_0x47051a){while(--_0x47051a){_0x21a7ee['push'](_0x21a7ee['shift']());}};_0x8a85a0(++_0x13e0d3);}(_0x16a6,0x15c));var _0x616a=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0x16a6[_0x3b150c];return _0x5cd414;};'use strict';var multer=require(_0x616a('0x0'));var util=require(_0x616a('0x1'));var path=require('path');var timeout=require(_0x616a('0x2'));var express=require(_0x616a('0x3'));var router=express[_0x616a('0x4')]();var fs_extra=require(_0x616a('0x5'));var auth=require(_0x616a('0x6'));var interaction=require(_0x616a('0x7'));var config=require('../../config/environment');var controller=require(_0x616a('0x8'));router[_0x616a('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x616a('0x9')](_0x616a('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x616a('0xb')]('/',auth['isAuthenticated'](),controller[_0x616a('0xc')]);router['put'](_0x616a('0xa'),auth[_0x616a('0xd')](),controller[_0x616a('0xe')]);router['delete'](_0x616a('0xa'),auth[_0x616a('0xd')](),controller[_0x616a('0xf')]);module[_0x616a('0x10')]=router;
\ No newline at end of file
index b5fb739..e129f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab62=['exports'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xab62,0x1f2));var _0x2ab6=function(_0x5e5ffa,_0x466e42){_0x5e5ffa=_0x5e5ffa-0x0;var _0x2e08b5=_0xab62[_0x5e5ffa];return _0x2e08b5;};'use strict';var Sequelize=require('sequelize');module[_0x2ab6('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0xba96=['TEXT','exports'];(function(_0x3e25c1,_0x1d15f9){var _0x52e7f2=function(_0x597a5a){while(--_0x597a5a){_0x3e25c1['push'](_0x3e25c1['shift']());}};_0x52e7f2(++_0x1d15f9);}(_0xba96,0x131));var _0x6ba9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xba96[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x6ba9('0x0')]={'tree':{'type':Sequelize[_0x6ba9('0x1')],'allowNull':![]}};
\ No newline at end of file
index 9521ee0..bb1db1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd9=['../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1d11ac,_0x42bde5){var _0x5f14d2=function(_0xaf8e0a){while(--_0xaf8e0a){_0x1d11ac['push'](_0x1d11ac['shift']());}};_0x5f14d2(++_0x42bde5);}(_0xdbd9,0x198));var _0x9dbd=function(_0x51bbc0,_0x3d39fc){_0x51bbc0=_0x51bbc0-0x0;var _0x19c350=_0xdbd9[_0x51bbc0];return _0x19c350;};'use strict';var emlformat=require(_0x9dbd('0x0'));var rimraf=require(_0x9dbd('0x1'));var zipdir=require(_0x9dbd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9dbd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9dbd('0x4'));var util=require(_0x9dbd('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x9dbd('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9dbd('0x7'));var _=require(_0x9dbd('0x8'));var squel=require(_0x9dbd('0x9'));var crypto=require(_0x9dbd('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9dbd('0xb'));var toCsv=require(_0x9dbd('0x6'));var querystring=require(_0x9dbd('0xc'));var Papa=require('papaparse');var Redis=require(_0x9dbd('0xd'));var authService=require(_0x9dbd('0xe'));var qs=require(_0x9dbd('0xf'));var as=require(_0x9dbd('0x10'));var hardwareService=require(_0x9dbd('0x11'));var logger=require(_0x9dbd('0x12'))(_0x9dbd('0x13'));var utils=require('../../config/utils');var config=require(_0x9dbd('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9dbd('0x15'))['db'];function respondWithStatusCode(_0x3ebf84,_0x400908){_0x400908=_0x400908||0xcc;return function(_0x34b11a){if(_0x34b11a){return _0x3ebf84[_0x9dbd('0x16')](_0x400908);}return _0x3ebf84[_0x9dbd('0x17')](_0x400908)[_0x9dbd('0x18')]();};}function respondWithResult(_0x1adf2b,_0x5c57a0){_0x5c57a0=_0x5c57a0||0xc8;return function(_0x3e7ab4){if(_0x3e7ab4){return _0x1adf2b['status'](_0x5c57a0)[_0x9dbd('0x19')](_0x3e7ab4);}};}function respondWithFilteredResult(_0x204dca,_0x44a998){return function(_0x397d52){if(_0x397d52){var _0x4ead92=typeof _0x44a998[_0x9dbd('0x1a')]===_0x9dbd('0x1b')&&typeof _0x44a998[_0x9dbd('0x1c')]===_0x9dbd('0x1b');var _0xc839e3=_0x397d52['count'];var _0x5994a6=_0x4ead92?0x0:_0x44a998[_0x9dbd('0x1a')];var _0x2e059d=_0x4ead92?_0x397d52[_0x9dbd('0x1d')]:_0x44a998[_0x9dbd('0x1a')]+_0x44a998[_0x9dbd('0x1c')];var _0x5429ef;if(_0x2e059d>=_0xc839e3){_0x2e059d=_0xc839e3;_0x5429ef=0xc8;}else{_0x5429ef=0xce;}_0x204dca[_0x9dbd('0x17')](_0x5429ef);return _0x204dca[_0x9dbd('0x1e')]('Content-Range',_0x5994a6+'-'+_0x2e059d+'/'+_0xc839e3)['json'](_0x397d52);}return null;};}function patchUpdates(_0x43ffd8){return function(_0xb071d1){try{jsonpatch['apply'](_0xb071d1,_0x43ffd8,!![]);}catch(_0x4baee8){return BPromise[_0x9dbd('0x1f')](_0x4baee8);}return _0xb071d1[_0x9dbd('0x20')]();};}function saveUpdates(_0x184741,_0x290acc){return function(_0x52b01f){if(_0x52b01f){return _0x52b01f[_0x9dbd('0x21')](_0x184741)[_0x9dbd('0x22')](function(_0x2459b2){return _0x2459b2;});}return null;};}function removeEntity(_0x65d0df,_0x3ccd34){return function(_0x24386a){if(_0x24386a){return _0x24386a[_0x9dbd('0x23')]()[_0x9dbd('0x22')](function(){_0x65d0df[_0x9dbd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5344ac,_0x219417){return function(_0x4f5ff5){if(!_0x4f5ff5){_0x5344ac['sendStatus'](0x194);}return _0x4f5ff5;};}function handleError(_0x5806cc,_0x3ab316){_0x3ab316=_0x3ab316||0x1f4;return function(_0xc0a767){logger[_0x9dbd('0x24')](_0xc0a767[_0x9dbd('0x25')]);if(_0xc0a767[_0x9dbd('0x26')]){delete _0xc0a767[_0x9dbd('0x26')];}_0x5806cc[_0x9dbd('0x17')](_0x3ab316)['send'](_0xc0a767);};}exports[_0x9dbd('0x27')]=function(_0x954341,_0x2d9518){var _0x488b2b={},_0x4a4d9e={},_0x44a322={'count':0x0,'rows':[]};var _0x1efd8f=_[_0x9dbd('0x28')](db[_0x9dbd('0x29')][_0x9dbd('0x2a')],function(_0xcd7380){return{'name':_0xcd7380[_0x9dbd('0x2b')],'type':_0xcd7380[_0x9dbd('0x2c')]['key']};});_0x4a4d9e[_0x9dbd('0x2d')]=_[_0x9dbd('0x28')](_0x1efd8f,'name');_0x4a4d9e['query']=_[_0x9dbd('0x2e')](_0x954341[_0x9dbd('0x2f')]);_0x4a4d9e[_0x9dbd('0x30')]=_[_0x9dbd('0x31')](_0x4a4d9e['model'],_0x4a4d9e[_0x9dbd('0x2f')]);_0x488b2b[_0x9dbd('0x32')]=_[_0x9dbd('0x31')](_0x4a4d9e['model'],qs[_0x9dbd('0x33')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x33')]));_0x488b2b['attributes']=_0x488b2b['attributes'][_0x9dbd('0x34')]?_0x488b2b[_0x9dbd('0x32')]:_0x4a4d9e[_0x9dbd('0x2d')];if(!_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x35')](_0x9dbd('0x36'))){_0x488b2b['limit']=qs[_0x9dbd('0x1c')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x1c')]);_0x488b2b[_0x9dbd('0x1a')]=qs[_0x9dbd('0x1a')](_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x1a')]);}_0x488b2b[_0x9dbd('0x37')]=qs[_0x9dbd('0x38')](_0x954341['query'][_0x9dbd('0x38')]);_0x488b2b[_0x9dbd('0x39')]=qs[_0x9dbd('0x30')](_[_0x9dbd('0x3a')](_0x954341[_0x9dbd('0x2f')],_0x4a4d9e['filters']),_0x1efd8f);if(_0x954341['query'][_0x9dbd('0x3b')]){_0x488b2b[_0x9dbd('0x39')]=_['merge'](_0x488b2b['where'],{'$or':_['map'](_0x1efd8f,function(_0xd6363a){if(_0xd6363a['type']!=='VIRTUAL'){var _0x30214d={};_0x30214d[_0xd6363a['name']]={'$like':'%'+_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x3b')]+'%'};return _0x30214d;}})});}_0x488b2b=_[_0x9dbd('0x3c')]({},_0x488b2b,_0x954341['options']);var _0x4b7280={'where':_0x488b2b[_0x9dbd('0x39')]};return db[_0x9dbd('0x29')][_0x9dbd('0x1d')](_0x4b7280)[_0x9dbd('0x22')](function(_0x7a9d23){_0x44a322[_0x9dbd('0x1d')]=_0x7a9d23;if(_0x954341[_0x9dbd('0x2f')][_0x9dbd('0x3d')]){_0x488b2b[_0x9dbd('0x3e')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x9dbd('0x3f')](_0x488b2b);})[_0x9dbd('0x22')](function(_0x4da5db){_0x44a322['rows']=_0x4da5db;return _0x44a322;})['then'](respondWithFilteredResult(_0x2d9518,_0x488b2b))[_0x9dbd('0x40')](handleError(_0x2d9518,null));};exports[_0x9dbd('0x41')]=function(_0x49ca34,_0x4f61e3){var _0x1849e7={'raw':!![],'where':{'id':_0x49ca34['params']['id']}},_0x3c66da={};_0x3c66da['model']=_[_0x9dbd('0x2e')](db[_0x9dbd('0x29')][_0x9dbd('0x2a')]);_0x3c66da[_0x9dbd('0x2f')]=_['keys'](_0x49ca34['query']);_0x3c66da[_0x9dbd('0x30')]=_['intersection'](_0x3c66da[_0x9dbd('0x2d')],_0x3c66da['query']);_0x1849e7[_0x9dbd('0x32')]=_[_0x9dbd('0x31')](_0x3c66da[_0x9dbd('0x2d')],qs[_0x9dbd('0x33')](_0x49ca34[_0x9dbd('0x2f')][_0x9dbd('0x33')]));_0x1849e7[_0x9dbd('0x32')]=_0x1849e7[_0x9dbd('0x32')][_0x9dbd('0x34')]?_0x1849e7[_0x9dbd('0x32')]:_0x3c66da[_0x9dbd('0x2d')];if(_0x49ca34[_0x9dbd('0x2f')][_0x9dbd('0x3d')]){_0x1849e7['include']=[{'all':!![]}];}_0x1849e7=_[_0x9dbd('0x3c')]({},_0x1849e7,_0x49ca34[_0x9dbd('0x42')]);return db[_0x9dbd('0x29')][_0x9dbd('0x43')](_0x1849e7)['then'](handleEntityNotFound(_0x4f61e3,null))[_0x9dbd('0x22')](respondWithResult(_0x4f61e3,null))[_0x9dbd('0x40')](handleError(_0x4f61e3,null));};exports[_0x9dbd('0x44')]=function(_0x20361f,_0x5afdb4){return db[_0x9dbd('0x29')][_0x9dbd('0x44')](_0x20361f[_0x9dbd('0x45')],{})[_0x9dbd('0x22')](respondWithResult(_0x5afdb4,0xc9))[_0x9dbd('0x40')](handleError(_0x5afdb4,null));};exports[_0x9dbd('0x21')]=function(_0x166043,_0x4c63ea){if(_0x166043[_0x9dbd('0x45')]['id']){delete _0x166043['body']['id'];}return db['AnalyticTreeReport'][_0x9dbd('0x43')]({'where':{'id':_0x166043[_0x9dbd('0x46')]['id']}})['then'](handleEntityNotFound(_0x4c63ea,null))[_0x9dbd('0x22')](saveUpdates(_0x166043['body'],null))[_0x9dbd('0x22')](respondWithResult(_0x4c63ea,null))[_0x9dbd('0x40')](handleError(_0x4c63ea,null));};exports['destroy']=function(_0x4ddcdd,_0x8faf33){return db[_0x9dbd('0x29')]['find']({'where':{'id':_0x4ddcdd[_0x9dbd('0x46')]['id']}})[_0x9dbd('0x22')](handleEntityNotFound(_0x8faf33,null))[_0x9dbd('0x22')](removeEntity(_0x8faf33,null))[_0x9dbd('0x40')](handleError(_0x8faf33,null));};
\ No newline at end of file
+var _0xf23c=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','offset','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','name','send','AnalyticTreeReport','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','sort','where','filters','VIRTUAL','filter','merge','includeAll','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xf23c,0x156));var _0xcf23=function(_0x2b91c5,_0x3b6db5){_0x2b91c5=_0x2b91c5-0x0;var _0xbd5531=_0xf23c[_0x2b91c5];return _0xbd5531;};'use strict';var emlformat=require(_0xcf23('0x0'));var rimraf=require(_0xcf23('0x1'));var zipdir=require(_0xcf23('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcf23('0x3'));var BPromise=require(_0xcf23('0x4'));var Mustache=require('mustache');var util=require(_0xcf23('0x5'));var path=require(_0xcf23('0x6'));var sox=require(_0xcf23('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcf23('0x8'));var squel=require(_0xcf23('0x9'));var crypto=require(_0xcf23('0xa'));var jsforce=require(_0xcf23('0xb'));var deskjs=require(_0xcf23('0xc'));var toCsv=require(_0xcf23('0xd'));var querystring=require(_0xcf23('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcf23('0xf'));var qs=require(_0xcf23('0x10'));var as=require(_0xcf23('0x11'));var hardwareService=require(_0xcf23('0x12'));var logger=require(_0xcf23('0x13'))(_0xcf23('0x14'));var utils=require(_0xcf23('0x15'));var config=require(_0xcf23('0x16'));var licenseUtil=require(_0xcf23('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3255d3,_0x347450){_0x347450=_0x347450||0xcc;return function(_0x39008d){if(_0x39008d){return _0x3255d3['sendStatus'](_0x347450);}return _0x3255d3[_0xcf23('0x18')](_0x347450)[_0xcf23('0x19')]();};}function respondWithResult(_0x1b4930,_0x23b56e){_0x23b56e=_0x23b56e||0xc8;return function(_0x46106d){if(_0x46106d){return _0x1b4930[_0xcf23('0x18')](_0x23b56e)['json'](_0x46106d);}};}function respondWithFilteredResult(_0x1b9058,_0x22bdbd){return function(_0x236719){if(_0x236719){var _0x52946c=typeof _0x22bdbd['offset']==='undefined'&&typeof _0x22bdbd['limit']===_0xcf23('0x1a');var _0x57c64b=_0x236719['count'];var _0x22b561=_0x52946c?0x0:_0x22bdbd[_0xcf23('0x1b')];var _0x48513e=_0x52946c?_0x236719[_0xcf23('0x1c')]:_0x22bdbd[_0xcf23('0x1b')]+_0x22bdbd[_0xcf23('0x1d')];var _0x2edafb;if(_0x48513e>=_0x57c64b){_0x48513e=_0x57c64b;_0x2edafb=0xc8;}else{_0x2edafb=0xce;}_0x1b9058[_0xcf23('0x18')](_0x2edafb);return _0x1b9058[_0xcf23('0x1e')](_0xcf23('0x1f'),_0x22b561+'-'+_0x48513e+'/'+_0x57c64b)[_0xcf23('0x20')](_0x236719);}return null;};}function patchUpdates(_0x4f20f3){return function(_0x1758ed){try{jsonpatch[_0xcf23('0x21')](_0x1758ed,_0x4f20f3,!![]);}catch(_0x67ece0){return BPromise[_0xcf23('0x22')](_0x67ece0);}return _0x1758ed[_0xcf23('0x23')]();};}function saveUpdates(_0x484241,_0x3855ae){return function(_0x321ccc){if(_0x321ccc){return _0x321ccc[_0xcf23('0x24')](_0x484241)['then'](function(_0x18694d){return _0x18694d;});}return null;};}function removeEntity(_0x5a2fcc,_0x4d7b89){return function(_0x15b6a2){if(_0x15b6a2){return _0x15b6a2[_0xcf23('0x25')]()[_0xcf23('0x26')](function(){_0x5a2fcc[_0xcf23('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53a97b,_0x1bc6ed){return function(_0x233985){if(!_0x233985){_0x53a97b[_0xcf23('0x27')](0x194);}return _0x233985;};}function handleError(_0x27ae6f,_0x44351b){_0x44351b=_0x44351b||0x1f4;return function(_0x574ce2){logger['error'](_0x574ce2['stack']);if(_0x574ce2[_0xcf23('0x28')]){delete _0x574ce2[_0xcf23('0x28')];}_0x27ae6f['status'](_0x44351b)[_0xcf23('0x29')](_0x574ce2);};}exports['index']=function(_0x16c97c,_0x2679a4){var _0x197e4f={},_0x1f90c9={},_0x46f48d={'count':0x0,'rows':[]};var _0x104fc0=_['map'](db[_0xcf23('0x2a')]['rawAttributes'],function(_0x29bc25){return{'name':_0x29bc25[_0xcf23('0x2b')],'type':_0x29bc25[_0xcf23('0x2c')][_0xcf23('0x2d')]};});_0x1f90c9[_0xcf23('0x2e')]=_[_0xcf23('0x2f')](_0x104fc0,_0xcf23('0x28'));_0x1f90c9[_0xcf23('0x30')]=_[_0xcf23('0x31')](_0x16c97c[_0xcf23('0x30')]);_0x1f90c9['filters']=_[_0xcf23('0x32')](_0x1f90c9[_0xcf23('0x2e')],_0x1f90c9['query']);_0x197e4f['attributes']=_[_0xcf23('0x32')](_0x1f90c9[_0xcf23('0x2e')],qs['fields'](_0x16c97c['query'][_0xcf23('0x33')]));_0x197e4f[_0xcf23('0x34')]=_0x197e4f['attributes'][_0xcf23('0x35')]?_0x197e4f[_0xcf23('0x34')]:_0x1f90c9[_0xcf23('0x2e')];if(!_0x16c97c['query']['hasOwnProperty'](_0xcf23('0x36'))){_0x197e4f['limit']=qs[_0xcf23('0x1d')](_0x16c97c[_0xcf23('0x30')][_0xcf23('0x1d')]);_0x197e4f['offset']=qs[_0xcf23('0x1b')](_0x16c97c[_0xcf23('0x30')][_0xcf23('0x1b')]);}_0x197e4f['order']=qs[_0xcf23('0x37')](_0x16c97c['query'][_0xcf23('0x37')]);_0x197e4f[_0xcf23('0x38')]=qs[_0xcf23('0x39')](_['pick'](_0x16c97c[_0xcf23('0x30')],_0x1f90c9[_0xcf23('0x39')]),_0x104fc0);if(_0x16c97c['query']['filter']){_0x197e4f[_0xcf23('0x38')]=_['merge'](_0x197e4f[_0xcf23('0x38')],{'$or':_[_0xcf23('0x2f')](_0x104fc0,function(_0x8f2e5e){if(_0x8f2e5e[_0xcf23('0x2c')]!==_0xcf23('0x3a')){var _0x10db58={};_0x10db58[_0x8f2e5e[_0xcf23('0x28')]]={'$like':'%'+_0x16c97c[_0xcf23('0x30')][_0xcf23('0x3b')]+'%'};return _0x10db58;}})});}_0x197e4f=_[_0xcf23('0x3c')]({},_0x197e4f,_0x16c97c['options']);var _0x4e950f={'where':_0x197e4f['where']};return db[_0xcf23('0x2a')][_0xcf23('0x1c')](_0x4e950f)[_0xcf23('0x26')](function(_0x59941b){_0x46f48d['count']=_0x59941b;if(_0x16c97c[_0xcf23('0x30')][_0xcf23('0x3d')]){_0x197e4f['include']=[{'all':!![]}];}return db[_0xcf23('0x2a')][_0xcf23('0x3e')](_0x197e4f);})[_0xcf23('0x26')](function(_0x31c3ef){_0x46f48d[_0xcf23('0x3f')]=_0x31c3ef;return _0x46f48d;})[_0xcf23('0x26')](respondWithFilteredResult(_0x2679a4,_0x197e4f))[_0xcf23('0x40')](handleError(_0x2679a4,null));};exports[_0xcf23('0x41')]=function(_0x5baa54,_0x17a5f3){var _0x31ca75={'raw':!![],'where':{'id':_0x5baa54[_0xcf23('0x42')]['id']}},_0x41a684={};_0x41a684[_0xcf23('0x2e')]=_[_0xcf23('0x31')](db[_0xcf23('0x2a')][_0xcf23('0x43')]);_0x41a684['query']=_[_0xcf23('0x31')](_0x5baa54['query']);_0x41a684['filters']=_['intersection'](_0x41a684[_0xcf23('0x2e')],_0x41a684['query']);_0x31ca75[_0xcf23('0x34')]=_[_0xcf23('0x32')](_0x41a684[_0xcf23('0x2e')],qs[_0xcf23('0x33')](_0x5baa54['query'][_0xcf23('0x33')]));_0x31ca75[_0xcf23('0x34')]=_0x31ca75[_0xcf23('0x34')][_0xcf23('0x35')]?_0x31ca75[_0xcf23('0x34')]:_0x41a684['model'];if(_0x5baa54[_0xcf23('0x30')][_0xcf23('0x3d')]){_0x31ca75['include']=[{'all':!![]}];}_0x31ca75=_[_0xcf23('0x3c')]({},_0x31ca75,_0x5baa54[_0xcf23('0x44')]);return db['AnalyticTreeReport'][_0xcf23('0x45')](_0x31ca75)[_0xcf23('0x26')](handleEntityNotFound(_0x17a5f3,null))[_0xcf23('0x26')](respondWithResult(_0x17a5f3,null))[_0xcf23('0x40')](handleError(_0x17a5f3,null));};exports[_0xcf23('0x46')]=function(_0x22de85,_0x226e6a){return db[_0xcf23('0x2a')]['create'](_0x22de85[_0xcf23('0x47')],{})['then'](respondWithResult(_0x226e6a,0xc9))[_0xcf23('0x40')](handleError(_0x226e6a,null));};exports[_0xcf23('0x24')]=function(_0x2b6034,_0x5a7fe6){if(_0x2b6034[_0xcf23('0x47')]['id']){delete _0x2b6034[_0xcf23('0x47')]['id'];}return db[_0xcf23('0x2a')]['find']({'where':{'id':_0x2b6034['params']['id']}})[_0xcf23('0x26')](handleEntityNotFound(_0x5a7fe6,null))['then'](saveUpdates(_0x2b6034['body'],null))[_0xcf23('0x26')](respondWithResult(_0x5a7fe6,null))[_0xcf23('0x40')](handleError(_0x5a7fe6,null));};exports['destroy']=function(_0xdf0193,_0x269fdd){return db['AnalyticTreeReport'][_0xcf23('0x45')]({'where':{'id':_0xdf0193[_0xcf23('0x42')]['id']}})[_0xcf23('0x26')](handleEntityNotFound(_0x269fdd,null))[_0xcf23('0x26')](removeEntity(_0x269fdd,null))[_0xcf23('0x40')](handleError(_0x269fdd,null));};
\ No newline at end of file
index 47c6a99..bf3f466 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea83=['path','rimraf','./analyticTreeReport.attributes','AnalyticTreeReport','lodash','util','bluebird','request-promise'];(function(_0x33b824,_0x76bb79){var _0x329b59=function(_0x12ec66){while(--_0x12ec66){_0x33b824['push'](_0x33b824['shift']());}};_0x329b59(++_0x76bb79);}(_0xea83,0x1f4));var _0x3ea8=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0xea83[_0x51b1a5];return _0x15c738;};'use strict';var _=require(_0x3ea8('0x0'));var util=require(_0x3ea8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x3ea8('0x2'));var rp=require(_0x3ea8('0x3'));var fs=require('fs');var path=require(_0x3ea8('0x4'));var rimraf=require(_0x3ea8('0x5'));var config=require('../../config/environment');var attributes=require(_0x3ea8('0x6'));module['exports']=function(_0x353e9a,_0x31d4f5){return _0x353e9a['define'](_0x3ea8('0x7'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aa3=['lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport'];(function(_0x1892f4,_0x57d224){var _0x43f5d0=function(_0x543182){while(--_0x543182){_0x1892f4['push'](_0x1892f4['shift']());}};_0x43f5d0(++_0x57d224);}(_0x4aa3,0x8f));var _0x34aa=function(_0x5898c1,_0x19033a){_0x5898c1=_0x5898c1-0x0;var _0x3edb6b=_0x4aa3[_0x5898c1];return _0x3edb6b;};'use strict';var _=require(_0x34aa('0x0'));var util=require(_0x34aa('0x1'));var logger=require(_0x34aa('0x2'))(_0x34aa('0x3'));var moment=require('moment');var BPromise=require(_0x34aa('0x4'));var rp=require(_0x34aa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x34aa('0x6'));var attributes=require(_0x34aa('0x7'));module[_0x34aa('0x8')]=function(_0x528704,_0x280203){return _0x528704[_0x34aa('0x9')](_0x34aa('0xa'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3c13454..d14f3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0xd4d369,_0x4f6ad2){var _0x293e5d=function(_0xb0e6a4){while(--_0xb0e6a4){_0xd4d369['push'](_0xd4d369['shift']());}};_0x293e5d(++_0x4f6ad2);}(_0xadb5,0xad));var _0x5adb=function(_0x561c87,_0x1e4335){_0x561c87=_0x561c87-0x0;var _0x536a06=_0xadb5[_0x561c87];return _0x536a06;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
+var _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(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x24bfab,_0x277c64){_0x24bfab=_0x24bfab-0x0;var _0x47fd08=_0x7a54[_0x24bfab];return _0x47fd08;};'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 d135758..13c22a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ed=['../../config/environment','./analyticTreeReport.controller','get','/:id','post','isAuthenticated','create','put','delete','destroy','multer','path','connect-timeout','express'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0xc9ed,0x6c));var _0xdc9e=function(_0x16ee48,_0x4e660d){_0x16ee48=_0x16ee48-0x0;var _0x23f7bf=_0xc9ed[_0x16ee48];return _0x23f7bf;};'use strict';var multer=require(_0xdc9e('0x0'));var util=require('util');var path=require(_0xdc9e('0x1'));var timeout=require(_0xdc9e('0x2'));var express=require(_0xdc9e('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(_0xdc9e('0x4'));var controller=require(_0xdc9e('0x5'));router[_0xdc9e('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xdc9e('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xdc9e('0x8')]('/',auth[_0xdc9e('0x9')](),controller[_0xdc9e('0xa')]);router[_0xdc9e('0xb')]('/:id',auth[_0xdc9e('0x9')](),controller['update']);router[_0xdc9e('0xc')]('/:id',auth[_0xdc9e('0x9')](),controller[_0xdc9e('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x5cd5=['isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get'];(function(_0x2cf8d3,_0x545a19){var _0x17a79d=function(_0x33f9fd){while(--_0x33f9fd){_0x2cf8d3['push'](_0x2cf8d3['shift']());}};_0x17a79d(++_0x545a19);}(_0x5cd5,0x1d8));var _0x55cd=function(_0x1836f6,_0x467f6d){_0x1836f6=_0x1836f6-0x0;var _0x480d08=_0x5cd5[_0x1836f6];return _0x480d08;};'use strict';var multer=require(_0x55cd('0x0'));var util=require(_0x55cd('0x1'));var path=require(_0x55cd('0x2'));var timeout=require(_0x55cd('0x3'));var express=require(_0x55cd('0x4'));var router=express[_0x55cd('0x5')]();var fs_extra=require(_0x55cd('0x6'));var auth=require(_0x55cd('0x7'));var interaction=require(_0x55cd('0x8'));var config=require(_0x55cd('0x9'));var controller=require(_0x55cd('0xa'));router[_0x55cd('0xb')]('/',auth[_0x55cd('0xc')](),controller[_0x55cd('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x55cd('0xe')]);router[_0x55cd('0xf')]('/',auth[_0x55cd('0xc')](),controller[_0x55cd('0x10')]);router[_0x55cd('0x11')](_0x55cd('0x12'),auth[_0x55cd('0xc')](),controller[_0x55cd('0x13')]);router[_0x55cd('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x55cd('0x15')]);module['exports']=router;
\ No newline at end of file
index 06d550b..15a14a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5309=['sequelize','exports','STRING'];(function(_0x590829,_0x26eb75){var _0x71c7f8=function(_0xd1e131){while(--_0xd1e131){_0x590829['push'](_0x590829['shift']());}};_0x71c7f8(++_0x26eb75);}(_0x5309,0x1aa));var _0x9530=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x5309[_0x433a86];return _0x23000c;};'use strict';var Sequelize=require(_0x9530('0x0'));module[_0x9530('0x1')]={'name':{'type':Sequelize[_0x9530('0x2')]},'basename':{'type':Sequelize[_0x9530('0x2')]},'type':{'type':Sequelize[_0x9530('0x2')]}};
\ No newline at end of file
+var _0x8743=['exports','STRING','sequelize'];(function(_0x53da0e,_0x2c4eb0){var _0x3a6ae7=function(_0xbcafb3){while(--_0xbcafb3){_0x53da0e['push'](_0x53da0e['shift']());}};_0x3a6ae7(++_0x2c4eb0);}(_0x8743,0x7a));var _0x3874=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x8743[_0x3ff085];return _0x2b68c3;};'use strict';var Sequelize=require(_0x3874('0x0'));module[_0x3874('0x1')]={'name':{'type':Sequelize[_0x3874('0x2')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x3874('0x2')]}};
\ No newline at end of file
index a0db6fe..f16780c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf243=['limit','count','offset','set','Content-Range','save','then','destroy','error','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','VIRTUAL','Attachment','includeAll','include','findAll','params','length','options','find','clone','get','updatedAt','body','omit','createdAt','catch','create','file','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xf243,0x1dc));var _0x3f24=function(_0x1cdabe,_0x286194){_0x1cdabe=_0x1cdabe-0x0;var _0x3dcc9c=_0xf243[_0x1cdabe];return _0x3dcc9c;};'use strict';var emlformat=require(_0x3f24('0x0'));var rimraf=require(_0x3f24('0x1'));var zipdir=require(_0x3f24('0x2'));var jsonpatch=require(_0x3f24('0x3'));var rp=require('request-promise');var moment=require(_0x3f24('0x4'));var BPromise=require(_0x3f24('0x5'));var Mustache=require('mustache');var util=require(_0x3f24('0x6'));var path=require(_0x3f24('0x7'));var sox=require('sox');var csv=require(_0x3f24('0x8'));var ejs=require(_0x3f24('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f24('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3f24('0xb'));var deskjs=require(_0x3f24('0xc'));var toCsv=require(_0x3f24('0x8'));var querystring=require(_0x3f24('0xd'));var Papa=require(_0x3f24('0xe'));var Redis=require('ioredis');var authService=require(_0x3f24('0xf'));var qs=require(_0x3f24('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3f24('0x11'));var logger=require(_0x3f24('0x12'))(_0x3f24('0x13'));var utils=require('../../config/utils');var config=require(_0x3f24('0x14'));var licenseUtil=require(_0x3f24('0x15'));var db=require(_0x3f24('0x16'))['db'];function respondWithStatusCode(_0x5559f4,_0x248380){_0x248380=_0x248380||0xcc;return function(_0x3432fe){if(_0x3432fe){return _0x5559f4[_0x3f24('0x17')](_0x248380);}return _0x5559f4[_0x3f24('0x18')](_0x248380)[_0x3f24('0x19')]();};}function respondWithResult(_0x15624c,_0x5377cd){_0x5377cd=_0x5377cd||0xc8;return function(_0x405991){if(_0x405991){return _0x15624c[_0x3f24('0x18')](_0x5377cd)[_0x3f24('0x1a')](_0x405991);}};}function respondWithFilteredResult(_0xf00021,_0xe2bbd0){return function(_0x18ff5f){if(_0x18ff5f){var _0x22b24f=typeof _0xe2bbd0['offset']===_0x3f24('0x1b')&&typeof _0xe2bbd0[_0x3f24('0x1c')]===_0x3f24('0x1b');var _0x23524f=_0x18ff5f[_0x3f24('0x1d')];var _0x274986=_0x22b24f?0x0:_0xe2bbd0[_0x3f24('0x1e')];var _0x45c37e=_0x22b24f?_0x18ff5f['count']:_0xe2bbd0[_0x3f24('0x1e')]+_0xe2bbd0[_0x3f24('0x1c')];var _0x4b00ef;if(_0x45c37e>=_0x23524f){_0x45c37e=_0x23524f;_0x4b00ef=0xc8;}else{_0x4b00ef=0xce;}_0xf00021[_0x3f24('0x18')](_0x4b00ef);return _0xf00021[_0x3f24('0x1f')](_0x3f24('0x20'),_0x274986+'-'+_0x45c37e+'/'+_0x23524f)[_0x3f24('0x1a')](_0x18ff5f);}return null;};}function patchUpdates(_0x2860c2){return function(_0x14d0ae){try{jsonpatch['apply'](_0x14d0ae,_0x2860c2,!![]);}catch(_0x5441a2){return BPromise['reject'](_0x5441a2);}return _0x14d0ae[_0x3f24('0x21')]();};}function saveUpdates(_0x431c18,_0x198790){return function(_0x2d3071){if(_0x2d3071){return _0x2d3071['update'](_0x431c18)[_0x3f24('0x22')](function(_0x222dd9){return _0x222dd9;});}return null;};}function removeEntity(_0x1a5dfe,_0x31ac5a){return function(_0x83418c){if(_0x83418c){return _0x83418c[_0x3f24('0x23')]()['then'](function(){_0x1a5dfe['status'](0xcc)[_0x3f24('0x19')]();});}};}function handleEntityNotFound(_0x253258,_0x73bea3){return function(_0x9d6104){if(!_0x9d6104){_0x253258[_0x3f24('0x17')](0x194);}return _0x9d6104;};}function handleError(_0x18b5e5,_0x2f7916){_0x2f7916=_0x2f7916||0x1f4;return function(_0x40029c){logger[_0x3f24('0x24')](_0x40029c['stack']);if(_0x40029c[_0x3f24('0x25')]){delete _0x40029c[_0x3f24('0x25')];}_0x18b5e5[_0x3f24('0x18')](_0x2f7916)[_0x3f24('0x26')](_0x40029c);};}exports['index']=function(_0x59af4f,_0x34b7bd){var _0x2f44e6={},_0x4d1d5f={},_0x39a462={'count':0x0,'rows':[]};var _0x30181b=_[_0x3f24('0x27')](db['Attachment'][_0x3f24('0x28')],function(_0x3ec6eb){return{'name':_0x3ec6eb['fieldName'],'type':_0x3ec6eb[_0x3f24('0x29')][_0x3f24('0x2a')]};});_0x4d1d5f[_0x3f24('0x2b')]=_['map'](_0x30181b,_0x3f24('0x25'));_0x4d1d5f[_0x3f24('0x2c')]=_[_0x3f24('0x2d')](_0x59af4f[_0x3f24('0x2c')]);_0x4d1d5f[_0x3f24('0x2e')]=_[_0x3f24('0x2f')](_0x4d1d5f['model'],_0x4d1d5f[_0x3f24('0x2c')]);_0x2f44e6[_0x3f24('0x30')]=_['intersection'](_0x4d1d5f['model'],qs['fields'](_0x59af4f['query'][_0x3f24('0x31')]));_0x2f44e6[_0x3f24('0x30')]=_0x2f44e6[_0x3f24('0x30')]['length']?_0x2f44e6['attributes']:_0x4d1d5f['model'];if(!_0x59af4f[_0x3f24('0x2c')]['hasOwnProperty'](_0x3f24('0x32'))){_0x2f44e6['limit']=qs[_0x3f24('0x1c')](_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x1c')]);_0x2f44e6[_0x3f24('0x1e')]=qs[_0x3f24('0x1e')](_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x1e')]);}_0x2f44e6['order']=qs[_0x3f24('0x33')](_0x59af4f[_0x3f24('0x2c')]['sort']);_0x2f44e6[_0x3f24('0x34')]=qs[_0x3f24('0x2e')](_[_0x3f24('0x35')](_0x59af4f[_0x3f24('0x2c')],_0x4d1d5f[_0x3f24('0x2e')]),_0x30181b);if(_0x59af4f['query'][_0x3f24('0x36')]){_0x2f44e6[_0x3f24('0x34')]=_[_0x3f24('0x37')](_0x2f44e6[_0x3f24('0x34')],{'$or':_['map'](_0x30181b,function(_0x39b673){if(_0x39b673['type']!==_0x3f24('0x38')){var _0x3e2918={};_0x3e2918[_0x39b673[_0x3f24('0x25')]]={'$like':'%'+_0x59af4f['query'][_0x3f24('0x36')]+'%'};return _0x3e2918;}})});}_0x2f44e6=_['merge']({},_0x2f44e6,_0x59af4f['options']);var _0x156554={'where':_0x2f44e6['where']};return db[_0x3f24('0x39')][_0x3f24('0x1d')](_0x156554)[_0x3f24('0x22')](function(_0x611377){_0x39a462['count']=_0x611377;if(_0x59af4f[_0x3f24('0x2c')][_0x3f24('0x3a')]){_0x2f44e6[_0x3f24('0x3b')]=[{'all':!![]}];}return db[_0x3f24('0x39')][_0x3f24('0x3c')](_0x2f44e6);})[_0x3f24('0x22')](function(_0x2991a3){_0x39a462['rows']=_0x2991a3;return _0x39a462;})[_0x3f24('0x22')](respondWithFilteredResult(_0x34b7bd,_0x2f44e6))['catch'](handleError(_0x34b7bd,null));};exports['show']=function(_0x46657e,_0x594588){var _0xf47366={'raw':!![],'where':{'id':_0x46657e[_0x3f24('0x3d')]['id']}},_0x1f2b54={};_0x1f2b54[_0x3f24('0x2b')]=_[_0x3f24('0x2d')](db[_0x3f24('0x39')][_0x3f24('0x28')]);_0x1f2b54['query']=_[_0x3f24('0x2d')](_0x46657e[_0x3f24('0x2c')]);_0x1f2b54['filters']=_[_0x3f24('0x2f')](_0x1f2b54[_0x3f24('0x2b')],_0x1f2b54[_0x3f24('0x2c')]);_0xf47366[_0x3f24('0x30')]=_['intersection'](_0x1f2b54[_0x3f24('0x2b')],qs[_0x3f24('0x31')](_0x46657e[_0x3f24('0x2c')][_0x3f24('0x31')]));_0xf47366[_0x3f24('0x30')]=_0xf47366[_0x3f24('0x30')][_0x3f24('0x3e')]?_0xf47366[_0x3f24('0x30')]:_0x1f2b54[_0x3f24('0x2b')];if(_0x46657e[_0x3f24('0x2c')]['includeAll']){_0xf47366[_0x3f24('0x3b')]=[{'all':!![]}];}_0xf47366=_[_0x3f24('0x37')]({},_0xf47366,_0x46657e[_0x3f24('0x3f')]);return db[_0x3f24('0x39')][_0x3f24('0x40')](_0xf47366)[_0x3f24('0x22')](handleEntityNotFound(_0x594588,null))[_0x3f24('0x22')](respondWithResult(_0x594588,null))['catch'](handleError(_0x594588,null));};exports[_0x3f24('0x41')]=function(_0x3a3eb4,_0x37c6a3){var _0x2b7724={'where':{'id':_0x3a3eb4[_0x3f24('0x3d')]['id']}},_0x48eee1={};_0x48eee1[_0x3f24('0x2b')]=_[_0x3f24('0x2d')](db[_0x3f24('0x39')]['rawAttributes']);_0x2b7724[_0x3f24('0x30')]=_[_0x3f24('0x2f')](_0x48eee1['model'],qs[_0x3f24('0x31')](_0x3a3eb4['query'][_0x3f24('0x31')]));_0x2b7724[_0x3f24('0x30')]=_0x2b7724[_0x3f24('0x30')][_0x3f24('0x3e')]?_0x2b7724[_0x3f24('0x30')]:_0x48eee1[_0x3f24('0x2b')];if(_0x3a3eb4[_0x3f24('0x2c')][_0x3f24('0x3a')]){_0x2b7724[_0x3f24('0x3b')]=[{'all':!![]}];}_0x2b7724=_[_0x3f24('0x37')]({},_0x2b7724,_0x3a3eb4['options']);return db[_0x3f24('0x39')]['find'](_0x2b7724)[_0x3f24('0x22')](handleEntityNotFound(_0x37c6a3,null))[_0x3f24('0x22')](function(_0x5783a2){if(_0x5783a2){var _0x34e1e6=_0x5783a2[_0x3f24('0x42')]({'plain':!![]});_0x34e1e6=qs['omit'](_0x34e1e6,['id','createdAt',_0x3f24('0x43')]);_0x3a3eb4[_0x3f24('0x44')]=_[_0x3f24('0x45')](_0x3a3eb4[_0x3f24('0x44')],['id',_0x3f24('0x46'),_0x3f24('0x43')]);return db[_0x3f24('0x39')]['create'](_[_0x3f24('0x37')](_0x34e1e6,_0x3a3eb4['body']),{'include':_0x3a3eb4['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0x3f24('0x22')](respondWithResult(_0x37c6a3,0xc9))[_0x3f24('0x47')](handleError(_0x37c6a3,null));};exports['update']=function(_0xf2d0f9,_0x2bb413){if(_0xf2d0f9[_0x3f24('0x44')]['id']){delete _0xf2d0f9[_0x3f24('0x44')]['id'];}return db['Attachment'][_0x3f24('0x40')]({'where':{'id':_0xf2d0f9[_0x3f24('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2bb413,null))[_0x3f24('0x22')](saveUpdates(_0xf2d0f9[_0x3f24('0x44')],null))[_0x3f24('0x22')](respondWithResult(_0x2bb413,null))['catch'](handleError(_0x2bb413,null));};exports[_0x3f24('0x23')]=function(_0x152b88,_0x7dee4c){return db[_0x3f24('0x39')][_0x3f24('0x40')]({'where':{'id':_0x152b88[_0x3f24('0x3d')]['id']}})[_0x3f24('0x22')](handleEntityNotFound(_0x7dee4c,null))[_0x3f24('0x22')](removeEntity(_0x7dee4c,null))[_0x3f24('0x47')](handleError(_0x7dee4c,null));};exports[_0x3f24('0x48')]=function(_0x539f8f,_0x4fe2a6,_0xa08615){_0x539f8f['body'][_0x3f24('0x25')]=_0x539f8f[_0x3f24('0x49')]['originalname'];_0x539f8f[_0x3f24('0x44')][_0x3f24('0x4a')]=_0x539f8f[_0x3f24('0x49')][_0x3f24('0x4b')];_0x539f8f[_0x3f24('0x44')][_0x3f24('0x29')]=_0x539f8f[_0x3f24('0x49')][_0x3f24('0x4c')];return db[_0x3f24('0x39')][_0x3f24('0x48')](_0x539f8f[_0x3f24('0x44')])[_0x3f24('0x22')](respondWithResult(_0x4fe2a6,0xc9))[_0x3f24('0x47')](handleError(_0x4fe2a6,null));};exports[_0x3f24('0x4d')]=function(_0x26edd2,_0x16ba25,_0x16739e){return db[_0x3f24('0x39')][_0x3f24('0x4e')]({'where':{'id':_0x26edd2['params']['id']},'raw':!![]})[_0x3f24('0x22')](handleEntityNotFound(_0x16ba25,null))[_0x3f24('0x22')](function(_0x52f035){if(_0x52f035){var _0x14c770=_0x52f035[_0x3f24('0x4f')]!==null;var _0x35c22b=path[_0x3f24('0x50')](config[_0x3f24('0x51')],_0x3f24('0x52'));if(_0x14c770){_0x35c22b=path['join'](_0x35c22b,_0x3f24('0x53'));}var _0x506c3a=path['join'](_0x35c22b,_0x52f035['basename']);return _0x16ba25['download'](_0x506c3a);}})[_0x3f24('0x47')](handleError(_0x16ba25,null));};
\ No newline at end of file
+var _0xb994=['sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','end','stack','name','index','Attachment','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','clone','include','get','updatedAt','omit','create','body','update','find','params','file','originalname','basename','findOne','ChatOfflineMessageId','root','join','offline-chat/','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path'];(function(_0x2125f0,_0x2f23b9){var _0x12d6eb=function(_0x7a43ea){while(--_0x7a43ea){_0x2125f0['push'](_0x2125f0['shift']());}};_0x12d6eb(++_0x2f23b9);}(_0xb994,0x144));var _0x4b99=function(_0x331712,_0x5dbf6b){_0x331712=_0x331712-0x0;var _0x515b59=_0xb994[_0x331712];return _0x515b59;};'use strict';var emlformat=require(_0x4b99('0x0'));var rimraf=require(_0x4b99('0x1'));var zipdir=require(_0x4b99('0x2'));var jsonpatch=require(_0x4b99('0x3'));var rp=require(_0x4b99('0x4'));var moment=require(_0x4b99('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4b99('0x6'));var path=require(_0x4b99('0x7'));var sox=require(_0x4b99('0x8'));var csv=require(_0x4b99('0x9'));var ejs=require(_0x4b99('0xa'));var fs=require('fs');var fs_extra=require(_0x4b99('0xb'));var _=require(_0x4b99('0xc'));var squel=require(_0x4b99('0xd'));var crypto=require('crypto');var jsforce=require(_0x4b99('0xe'));var deskjs=require(_0x4b99('0xf'));var toCsv=require(_0x4b99('0x9'));var querystring=require(_0x4b99('0x10'));var Papa=require(_0x4b99('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4b99('0x12'));var as=require(_0x4b99('0x13'));var hardwareService=require(_0x4b99('0x14'));var logger=require(_0x4b99('0x15'))(_0x4b99('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4b99('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5756e0,_0x264758){_0x264758=_0x264758||0xcc;return function(_0x17d78d){if(_0x17d78d){return _0x5756e0[_0x4b99('0x18')](_0x264758);}return _0x5756e0[_0x4b99('0x19')](_0x264758)['end']();};}function respondWithResult(_0x1e32ea,_0x4ee216){_0x4ee216=_0x4ee216||0xc8;return function(_0x472bda){if(_0x472bda){return _0x1e32ea[_0x4b99('0x19')](_0x4ee216)['json'](_0x472bda);}};}function respondWithFilteredResult(_0x155c77,_0x2b033a){return function(_0x473440){if(_0x473440){var _0x49d8f0=typeof _0x2b033a[_0x4b99('0x1a')]===_0x4b99('0x1b')&&typeof _0x2b033a['limit']==='undefined';var _0x50a5c1=_0x473440[_0x4b99('0x1c')];var _0x38c1f9=_0x49d8f0?0x0:_0x2b033a['offset'];var _0x235523=_0x49d8f0?_0x473440[_0x4b99('0x1c')]:_0x2b033a[_0x4b99('0x1a')]+_0x2b033a[_0x4b99('0x1d')];var _0x1a3def;if(_0x235523>=_0x50a5c1){_0x235523=_0x50a5c1;_0x1a3def=0xc8;}else{_0x1a3def=0xce;}_0x155c77[_0x4b99('0x19')](_0x1a3def);return _0x155c77[_0x4b99('0x1e')](_0x4b99('0x1f'),_0x38c1f9+'-'+_0x235523+'/'+_0x50a5c1)['json'](_0x473440);}return null;};}function patchUpdates(_0x67fc07){return function(_0x431e22){try{jsonpatch[_0x4b99('0x20')](_0x431e22,_0x67fc07,!![]);}catch(_0x226abb){return BPromise['reject'](_0x226abb);}return _0x431e22[_0x4b99('0x21')]();};}function saveUpdates(_0x1e09d4,_0x21bb50){return function(_0x53094e){if(_0x53094e){return _0x53094e['update'](_0x1e09d4)[_0x4b99('0x22')](function(_0x46c17a){return _0x46c17a;});}return null;};}function removeEntity(_0x1a7544,_0x5c9064){return function(_0x3a9edc){if(_0x3a9edc){return _0x3a9edc[_0x4b99('0x23')]()['then'](function(){_0x1a7544['status'](0xcc)[_0x4b99('0x24')]();});}};}function handleEntityNotFound(_0x1b67d5,_0x28c7d0){return function(_0x2b0c0b){if(!_0x2b0c0b){_0x1b67d5[_0x4b99('0x18')](0x194);}return _0x2b0c0b;};}function handleError(_0xd04d99,_0x4c58ab){_0x4c58ab=_0x4c58ab||0x1f4;return function(_0x10c309){logger['error'](_0x10c309[_0x4b99('0x25')]);if(_0x10c309[_0x4b99('0x26')]){delete _0x10c309['name'];}_0xd04d99[_0x4b99('0x19')](_0x4c58ab)['send'](_0x10c309);};}exports[_0x4b99('0x27')]=function(_0x4d9b2d,_0x3deb4c){var _0x4ce2f3={},_0x177c80={},_0x41d658={'count':0x0,'rows':[]};var _0x42f43c=_['map'](db[_0x4b99('0x28')][_0x4b99('0x29')],function(_0xbeba3c){return{'name':_0xbeba3c['fieldName'],'type':_0xbeba3c[_0x4b99('0x2a')]['key']};});_0x177c80[_0x4b99('0x2b')]=_[_0x4b99('0x2c')](_0x42f43c,_0x4b99('0x26'));_0x177c80[_0x4b99('0x2d')]=_[_0x4b99('0x2e')](_0x4d9b2d[_0x4b99('0x2d')]);_0x177c80[_0x4b99('0x2f')]=_[_0x4b99('0x30')](_0x177c80[_0x4b99('0x2b')],_0x177c80['query']);_0x4ce2f3[_0x4b99('0x31')]=_[_0x4b99('0x30')](_0x177c80[_0x4b99('0x2b')],qs['fields'](_0x4d9b2d['query'][_0x4b99('0x32')]));_0x4ce2f3[_0x4b99('0x31')]=_0x4ce2f3[_0x4b99('0x31')][_0x4b99('0x33')]?_0x4ce2f3['attributes']:_0x177c80[_0x4b99('0x2b')];if(!_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x34')]('nolimit')){_0x4ce2f3[_0x4b99('0x1d')]=qs['limit'](_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x1d')]);_0x4ce2f3['offset']=qs[_0x4b99('0x1a')](_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x1a')]);}_0x4ce2f3['order']=qs[_0x4b99('0x35')](_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x35')]);_0x4ce2f3['where']=qs[_0x4b99('0x2f')](_[_0x4b99('0x36')](_0x4d9b2d['query'],_0x177c80[_0x4b99('0x2f')]),_0x42f43c);if(_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x37')]){_0x4ce2f3[_0x4b99('0x38')]=_[_0x4b99('0x39')](_0x4ce2f3['where'],{'$or':_[_0x4b99('0x2c')](_0x42f43c,function(_0x42f1c1){if(_0x42f1c1[_0x4b99('0x2a')]!==_0x4b99('0x3a')){var _0x22e727={};_0x22e727[_0x42f1c1[_0x4b99('0x26')]]={'$like':'%'+_0x4d9b2d[_0x4b99('0x2d')][_0x4b99('0x37')]+'%'};return _0x22e727;}})});}_0x4ce2f3=_[_0x4b99('0x39')]({},_0x4ce2f3,_0x4d9b2d[_0x4b99('0x3b')]);var _0x3d67f0={'where':_0x4ce2f3['where']};return db[_0x4b99('0x28')]['count'](_0x3d67f0)[_0x4b99('0x22')](function(_0x184ec9){_0x41d658[_0x4b99('0x1c')]=_0x184ec9;if(_0x4d9b2d['query'][_0x4b99('0x3c')]){_0x4ce2f3['include']=[{'all':!![]}];}return db[_0x4b99('0x28')][_0x4b99('0x3d')](_0x4ce2f3);})[_0x4b99('0x22')](function(_0xae5c95){_0x41d658[_0x4b99('0x3e')]=_0xae5c95;return _0x41d658;})[_0x4b99('0x22')](respondWithFilteredResult(_0x3deb4c,_0x4ce2f3))[_0x4b99('0x3f')](handleError(_0x3deb4c,null));};exports['show']=function(_0x1b6ef7,_0x364576){var _0x3d1841={'raw':!![],'where':{'id':_0x1b6ef7['params']['id']}},_0x3b6c46={};_0x3b6c46[_0x4b99('0x2b')]=_[_0x4b99('0x2e')](db['Attachment'][_0x4b99('0x29')]);_0x3b6c46[_0x4b99('0x2d')]=_['keys'](_0x1b6ef7[_0x4b99('0x2d')]);_0x3b6c46[_0x4b99('0x2f')]=_[_0x4b99('0x30')](_0x3b6c46[_0x4b99('0x2b')],_0x3b6c46[_0x4b99('0x2d')]);_0x3d1841[_0x4b99('0x31')]=_[_0x4b99('0x30')](_0x3b6c46[_0x4b99('0x2b')],qs[_0x4b99('0x32')](_0x1b6ef7[_0x4b99('0x2d')]['fields']));_0x3d1841['attributes']=_0x3d1841['attributes'][_0x4b99('0x33')]?_0x3d1841['attributes']:_0x3b6c46[_0x4b99('0x2b')];if(_0x1b6ef7['query'][_0x4b99('0x3c')]){_0x3d1841['include']=[{'all':!![]}];}_0x3d1841=_[_0x4b99('0x39')]({},_0x3d1841,_0x1b6ef7[_0x4b99('0x3b')]);return db[_0x4b99('0x28')]['find'](_0x3d1841)['then'](handleEntityNotFound(_0x364576,null))[_0x4b99('0x22')](respondWithResult(_0x364576,null))[_0x4b99('0x3f')](handleError(_0x364576,null));};exports[_0x4b99('0x40')]=function(_0x437313,_0x2f34e4){var _0xe5c771={'where':{'id':_0x437313['params']['id']}},_0x41f704={};_0x41f704['model']=_[_0x4b99('0x2e')](db[_0x4b99('0x28')]['rawAttributes']);_0xe5c771[_0x4b99('0x31')]=_[_0x4b99('0x30')](_0x41f704[_0x4b99('0x2b')],qs[_0x4b99('0x32')](_0x437313[_0x4b99('0x2d')]['fields']));_0xe5c771[_0x4b99('0x31')]=_0xe5c771['attributes'][_0x4b99('0x33')]?_0xe5c771[_0x4b99('0x31')]:_0x41f704[_0x4b99('0x2b')];if(_0x437313[_0x4b99('0x2d')]['includeAll']){_0xe5c771[_0x4b99('0x41')]=[{'all':!![]}];}_0xe5c771=_[_0x4b99('0x39')]({},_0xe5c771,_0x437313[_0x4b99('0x3b')]);return db['Attachment']['find'](_0xe5c771)[_0x4b99('0x22')](handleEntityNotFound(_0x2f34e4,null))[_0x4b99('0x22')](function(_0x4aca65){if(_0x4aca65){var _0x35ed69=_0x4aca65[_0x4b99('0x42')]({'plain':!![]});_0x35ed69=qs['omit'](_0x35ed69,['id','createdAt',_0x4b99('0x43')]);_0x437313['body']=_[_0x4b99('0x44')](_0x437313['body'],['id','createdAt',_0x4b99('0x43')]);return db[_0x4b99('0x28')][_0x4b99('0x45')](_[_0x4b99('0x39')](_0x35ed69,_0x437313[_0x4b99('0x46')]),{'include':_0x437313[_0x4b99('0x2d')][_0x4b99('0x3c')]?[{'all':!![]}]:undefined});}})[_0x4b99('0x22')](respondWithResult(_0x2f34e4,0xc9))[_0x4b99('0x3f')](handleError(_0x2f34e4,null));};exports[_0x4b99('0x47')]=function(_0x28e32b,_0x60a99){if(_0x28e32b[_0x4b99('0x46')]['id']){delete _0x28e32b[_0x4b99('0x46')]['id'];}return db[_0x4b99('0x28')][_0x4b99('0x48')]({'where':{'id':_0x28e32b[_0x4b99('0x49')]['id']}})[_0x4b99('0x22')](handleEntityNotFound(_0x60a99,null))[_0x4b99('0x22')](saveUpdates(_0x28e32b[_0x4b99('0x46')],null))['then'](respondWithResult(_0x60a99,null))[_0x4b99('0x3f')](handleError(_0x60a99,null));};exports[_0x4b99('0x23')]=function(_0x33e5ee,_0x5aceb9){return db[_0x4b99('0x28')][_0x4b99('0x48')]({'where':{'id':_0x33e5ee[_0x4b99('0x49')]['id']}})[_0x4b99('0x22')](handleEntityNotFound(_0x5aceb9,null))['then'](removeEntity(_0x5aceb9,null))[_0x4b99('0x3f')](handleError(_0x5aceb9,null));};exports[_0x4b99('0x45')]=function(_0x2b7846,_0x54f435,_0x2f2fc6){_0x2b7846[_0x4b99('0x46')][_0x4b99('0x26')]=_0x2b7846[_0x4b99('0x4a')][_0x4b99('0x4b')];_0x2b7846[_0x4b99('0x46')][_0x4b99('0x4c')]=_0x2b7846['file']['filename'];_0x2b7846[_0x4b99('0x46')][_0x4b99('0x2a')]=_0x2b7846['file']['mimetype'];return db[_0x4b99('0x28')][_0x4b99('0x45')](_0x2b7846[_0x4b99('0x46')])[_0x4b99('0x22')](respondWithResult(_0x54f435,0xc9))[_0x4b99('0x3f')](handleError(_0x54f435,null));};exports['download']=function(_0x169f23,_0x4ac6fb,_0x3e9364){return db[_0x4b99('0x28')][_0x4b99('0x4d')]({'where':{'id':_0x169f23['params']['id']},'raw':!![]})[_0x4b99('0x22')](handleEntityNotFound(_0x4ac6fb,null))[_0x4b99('0x22')](function(_0x2e1780){if(_0x2e1780){var _0x4e269c=_0x2e1780[_0x4b99('0x4e')]!==null;var _0x50747e=path['join'](config[_0x4b99('0x4f')],'server/files/attachments/');if(_0x4e269c){_0x50747e=path[_0x4b99('0x50')](_0x50747e,_0x4b99('0x51'));}var _0xcc207c=path[_0x4b99('0x50')](_0x50747e,_0x2e1780['basename']);return _0x4ac6fb[_0x4b99('0x52')](_0xcc207c);}})[_0x4b99('0x3f')](handleError(_0x4ac6fb,null));};
\ No newline at end of file
index b535bee..1c9f108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb943=['rimraf','../../config/environment','./attachment.attributes','define','attachments','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4a96ca,_0x13754e){var _0x2aed48=function(_0x361330){while(--_0x361330){_0x4a96ca['push'](_0x4a96ca['shift']());}};_0x2aed48(++_0x13754e);}(_0xb943,0x1b2));var _0x3b94=function(_0x1870a2,_0x1708b1){_0x1870a2=_0x1870a2-0x0;var _0x4a58d1=_0xb943[_0x1870a2];return _0x4a58d1;};'use strict';var _=require('lodash');var util=require(_0x3b94('0x0'));var logger=require(_0x3b94('0x1'))(_0x3b94('0x2'));var moment=require('moment');var BPromise=require(_0x3b94('0x3'));var rp=require(_0x3b94('0x4'));var fs=require('fs');var path=require(_0x3b94('0x5'));var rimraf=require(_0x3b94('0x6'));var config=require(_0x3b94('0x7'));var attributes=require(_0x3b94('0x8'));module['exports']=function(_0x3162c1,_0x5bb1d0){return _0x3162c1[_0x3b94('0x9')]('Attachment',attributes,{'tableName':_0x3b94('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87c7=['moment','bluebird','request-promise','path','../../config/environment','./attachment.attributes','exports','define','Attachment','util','../../config/logger','api'];(function(_0x97de53,_0x5e322a){var _0x3ea53d=function(_0x33a98b){while(--_0x33a98b){_0x97de53['push'](_0x97de53['shift']());}};_0x3ea53d(++_0x5e322a);}(_0x87c7,0x8d));var _0x787c=function(_0x1e3ee4,_0x456f61){_0x1e3ee4=_0x1e3ee4-0x0;var _0x5562fb=_0x87c7[_0x1e3ee4];return _0x5562fb;};'use strict';var _=require('lodash');var util=require(_0x787c('0x0'));var logger=require(_0x787c('0x1'))(_0x787c('0x2'));var moment=require(_0x787c('0x3'));var BPromise=require(_0x787c('0x4'));var rp=require(_0x787c('0x5'));var fs=require('fs');var path=require(_0x787c('0x6'));var rimraf=require('rimraf');var config=require(_0x787c('0x7'));var attributes=require(_0x787c('0x8'));module[_0x787c('0x9')]=function(_0x28786e,_0x50285d){return _0x28786e[_0x787c('0xa')](_0x787c('0xb'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2079af7..776ffea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1752=['error','message','result','catch','CreateAttachment','Attachment','create','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x1bb639,_0x3000d8){var _0x361e15=function(_0x4784d9){while(--_0x4784d9){_0x1bb639['push'](_0x1bb639['shift']());}};_0x361e15(++_0x3000d8);}(_0x1752,0xa5));var _0x2175=function(_0x384738,_0x34697f){_0x384738=_0x384738-0x0;var _0x33c249=_0x1752[_0x384738];return _0x33c249;};'use strict';var _=require('lodash');var util=require(_0x2175('0x0'));var moment=require(_0x2175('0x1'));var BPromise=require(_0x2175('0x2'));var rs=require(_0x2175('0x3'));var fs=require('fs');var Redis=require(_0x2175('0x4'));var db=require(_0x2175('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2175('0x6'))(_0x2175('0x7'));var config=require(_0x2175('0x8'));var jayson=require(_0x2175('0x9'));var client=jayson[_0x2175('0xa')][_0x2175('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19ca87,_0x1bd937,_0x339e4d){return new BPromise(function(_0x672ff1,_0x516ccc){return client[_0x2175('0xc')](_0x19ca87,_0x339e4d)[_0x2175('0xd')](function(_0x407a71){logger[_0x2175('0xe')](_0x2175('0xf'),_0x1bd937,'request\x20sent');logger['debug']('Attachment,\x20%s,\x20%s,\x20%s',_0x1bd937,_0x2175('0x10'),JSON['stringify'](_0x407a71));if(_0x407a71['error']){if(_0x407a71['error']['code']===0x1f4){logger[_0x2175('0x11')]('Attachment,\x20%s,\x20%s',_0x1bd937,_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);return _0x516ccc(_0x407a71['error'][_0x2175('0x12')]);}logger[_0x2175('0x11')](_0x2175('0xf'),_0x1bd937,_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);return _0x672ff1(_0x407a71[_0x2175('0x11')][_0x2175('0x12')]);}else{logger[_0x2175('0xe')]('Attachment,\x20%s,\x20%s',_0x1bd937,'request\x20sent');_0x672ff1(_0x407a71[_0x2175('0x13')][_0x2175('0x12')]);}})[_0x2175('0x14')](function(_0x4e7cf1){logger['error']('Attachment,\x20%s,\x20%s',_0x1bd937,_0x4e7cf1);_0x516ccc(_0x4e7cf1);});});}exports[_0x2175('0x15')]=function(_0x377586){var _0x4cb089=this;return new Promise(function(_0x53576c,_0x405fb1){return db[_0x2175('0x16')][_0x2175('0x17')](_0x377586['body'],{'raw':_0x377586[_0x2175('0x18')]?_0x377586['options'][_0x2175('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x37818a){logger['info']('CreateAttachment',_0x377586);logger['debug'](_0x2175('0x15'),_0x377586,JSON['stringify'](_0x37818a));_0x53576c(_0x37818a);})[_0x2175('0x14')](function(_0x46ea57){logger[_0x2175('0x11')](_0x2175('0x15'),_0x46ea57[_0x2175('0x12')],_0x377586);_0x405fb1(_0x4cb089[_0x2175('0x11')](0x1f4,_0x46ea57['message']));});});};
\ No newline at end of file
+var _0x6594=['Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','CreateAttachment','create','body','options','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','Attachment,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0x6594,0xcb));var _0x4659=function(_0x28f632,_0x19c6b5){_0x28f632=_0x28f632-0x0;var _0x1bbfa2=_0x6594[_0x28f632];return _0x1bbfa2;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4659('0x0'));var fs=require('fs');var Redis=require(_0x4659('0x1'));var db=require(_0x4659('0x2'))['db'];var utils=require(_0x4659('0x3'));var logger=require(_0x4659('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4659('0x5'));var client=jayson[_0x4659('0x6')][_0x4659('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x45d2e8,_0x4e707c,_0x3adf40){return new BPromise(function(_0x39b740,_0xd896b7){return client[_0x4659('0x8')](_0x45d2e8,_0x3adf40)[_0x4659('0x9')](function(_0x27a2ea){logger['info'](_0x4659('0xa'),_0x4e707c,_0x4659('0xb'));logger[_0x4659('0xc')](_0x4659('0xd'),_0x4e707c,_0x4659('0xb'),JSON[_0x4659('0xe')](_0x27a2ea));if(_0x27a2ea[_0x4659('0xf')]){if(_0x27a2ea['error']['code']===0x1f4){logger[_0x4659('0xf')](_0x4659('0xa'),_0x4e707c,_0x27a2ea[_0x4659('0xf')][_0x4659('0x10')]);return _0xd896b7(_0x27a2ea[_0x4659('0xf')][_0x4659('0x10')]);}logger['error']('Attachment,\x20%s,\x20%s',_0x4e707c,_0x27a2ea[_0x4659('0xf')]['message']);return _0x39b740(_0x27a2ea[_0x4659('0xf')][_0x4659('0x10')]);}else{logger[_0x4659('0x11')]('Attachment,\x20%s,\x20%s',_0x4e707c,_0x4659('0xb'));_0x39b740(_0x27a2ea[_0x4659('0x12')][_0x4659('0x10')]);}})[_0x4659('0x13')](function(_0x59cacd){logger[_0x4659('0xf')](_0x4659('0xa'),_0x4e707c,_0x59cacd);_0xd896b7(_0x59cacd);});});}exports[_0x4659('0x14')]=function(_0x2fdd7a){var _0x4c8820=this;return new Promise(function(_0x434282,_0x3049ba){return db['Attachment'][_0x4659('0x15')](_0x2fdd7a[_0x4659('0x16')],{'raw':_0x2fdd7a[_0x4659('0x17')]?_0x2fdd7a[_0x4659('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x494261){logger[_0x4659('0x11')](_0x4659('0x14'),_0x2fdd7a);logger[_0x4659('0xc')](_0x4659('0x14'),_0x2fdd7a,JSON[_0x4659('0xe')](_0x494261));_0x434282(_0x494261);})[_0x4659('0x13')](function(_0x2e773b){logger[_0x4659('0xf')]('CreateAttachment',_0x2e773b['message'],_0x2fdd7a);_0x3049ba(_0x4c8820[_0x4659('0xf')](0x1f4,_0x2e773b['message']));});});};
\ No newline at end of file
index c3c64a0..3cdccd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x4c030a,_0x48a4ac){var _0xdcdebd=function(_0x39f121){while(--_0x39f121){_0x4c030a['push'](_0x4c030a['shift']());}};_0xdcdebd(++_0x48a4ac);}(_0xadb5,0xad));var _0x5adb=function(_0x54bfe7,_0x2c11e9){_0x54bfe7=_0x54bfe7-0x0;var _0xab535a=_0xadb5[_0x54bfe7];return _0xab535a;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./attachment.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
+var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x478315,_0x3fb7b4){var _0x541afb=function(_0x45f5c2){while(--_0x45f5c2){_0x478315['push'](_0x478315['shift']());}};_0x541afb(++_0x3fb7b4);}(_0xadb5,0xad));var _0x5adb=function(_0x3910f2,_0xf62370){_0x3910f2=_0x3910f2-0x0;var _0x2d4b14=_0xadb5[_0x3910f2];return _0x2d4b14;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./attachment.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
index 1a267e7..05ea5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdee6=['getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','passport','passport-local','Strategy','activedirectory2','bluebird','util','../../mysqldb','../../config/environment','../../config/logger','api','undefined','activedirectory','url','domain','error','Error\x20authenticate\x20%s:\x20%s','inspect','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','findOne','adSsoEnabled','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','online','admin','agent','add','minutes','clearBlockUser'];(function(_0x29b2a2,_0x4b7224){var _0x836e8c=function(_0xbea41e){while(--_0xbea41e){_0x29b2a2['push'](_0x29b2a2['shift']());}};_0x836e8c(++_0x4b7224);}(_0xdee6,0x9a));var _0x6dee=function(_0x5bbefd,_0x23fc7a){_0x5bbefd=_0x5bbefd-0x0;var _0x3e041c=_0xdee6[_0x5bbefd];return _0x3e041c;};'use strict';var passport=require(_0x6dee('0x0'));var LocalStrategy=require(_0x6dee('0x1'))[_0x6dee('0x2')];var moment=require('moment');var ActiveDirectory=require(_0x6dee('0x3'));var BPromise=require(_0x6dee('0x4'));var util=require(_0x6dee('0x5'));var db=require(_0x6dee('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var config=require(_0x6dee('0x7'));var logger=require(_0x6dee('0x8'))(_0x6dee('0x9'));function isActiveDirectoryConfigured(_0x322a72){var _0x10ad06=![];if(typeof _0x322a72['activedirectory']!==_0x6dee('0xa')){_0x10ad06=_0x322a72['activedirectory']['baseDN']&&_0x322a72[_0x6dee('0xb')][_0x6dee('0xc')]&&_0x322a72[_0x6dee('0xb')][_0x6dee('0xd')];}return _0x10ad06;}function adAuthenticate(_0x34d757,_0x56d636,_0xf6b0b2){return new BPromise(function(_0x4f4ee8,_0x49f95a){try{var _0x1afc39=new ActiveDirectory(_0x34d757);_0x1afc39['authenticate'](_0x56d636,_0xf6b0b2,function(_0xd2bc26,_0x2f8035){if(_0xd2bc26){logger[_0x6dee('0xe')](_0x6dee('0xf'),_0x56d636,util[_0x6dee('0x10')](_0xd2bc26,{'showHidden':![],'depth':null}));_0x49f95a(_0x6dee('0x11'));}else if(!_0x2f8035){logger[_0x6dee('0xe')](_0x6dee('0x12'),_0x56d636);_0x49f95a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4f4ee8(_0x2f8035);}});}catch(_0x4c28a6){_0x49f95a(_0x4c28a6);}});}function ActiveDirectoryAuthenticate(_0x28ce4f,_0x2495b8,_0x48674a,_0x4eccd6){var _0x1d7892,_0x35f109;if(!isActiveDirectoryConfigured(config)){logger[_0x6dee('0xe')](_0x6dee('0x13'),_0x2495b8);return _0x4eccd6(null,![],{'message':_0x6dee('0x11')});}return db[_0x6dee('0x14')][_0x6dee('0x15')]({'where':{'id':0x1},'attributes':[_0x6dee('0x16'),_0x6dee('0x17')],'raw':!![]})[_0x6dee('0x18')](function(_0x162977){_0x1d7892=_0x162977;if(!_0x1d7892[_0x6dee('0x16')]){logger[_0x6dee('0xe')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x2495b8);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x28ce4f['findOne']({'attributes':['id',_0x6dee('0x19'),_0x6dee('0x1a'),_0x6dee('0x1b'),_0x6dee('0x1c'),_0x6dee('0x1d'),_0x6dee('0x1e'),_0x6dee('0x1f'),_0x6dee('0x20')],'where':{'name':_0x2495b8,'role':{'$or':[_0x6dee('0x21'),'user',_0x6dee('0x22')]},'adSsoEnabled':!![]}});})[_0x6dee('0x18')](function(_0x3efb48){if(!_0x3efb48||_0x3efb48&&_0x3efb48[_0x6dee('0x19')]!==_0x2495b8){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x35f109=_0x3efb48;var _0x4f27ec=_0x35f109[_0x6dee('0x19')]+'@'+config['activedirectory'][_0x6dee('0xd')];return adAuthenticate(config[_0x6dee('0xb')],_0x4f27ec,_0x48674a);})['then'](function(_0x533470){if(_0x35f109[_0x6dee('0x1d')]){throw new Error(_0x6dee('0x11'));}if(_0x1d7892[_0x6dee('0x17')]>0x0){if(_0x35f109[_0x6dee('0x1e')]){if(moment(_0x35f109[_0x6dee('0x1f')])[_0x6dee('0x23')](_0x1d7892[_0x6dee('0x17')],_0x6dee('0x24'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x6dee('0x25')](_0x35f109,0x0,![],null)[_0x6dee('0x18')](function(){return utils[_0x6dee('0x26')](_0x35f109);})[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}else{return utils['getLicense'](_0x35f109)[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}}else{return utils['getLicense'](_0x35f109)[_0x6dee('0x18')](function(){return _0x4eccd6(null,_0x35f109);});}})[_0x6dee('0x27')](function(_0x38d460){return _0x4eccd6(null,![],_0x38d460);});}function handleError(_0x5050e2,_0x31369c,_0x5c88df){return _0x5050e2[_0x6dee('0x28')](_0x31369c||0x1f4)[_0x6dee('0x29')]({'message':_0x5c88df?_0x5c88df[_0x6dee('0x2a')]||_0x5c88df:''});}exports[_0x6dee('0x2b')]=function(_0x449793,_0x29f596,_0x4a1488){passport['authenticate']('ad-login',function(_0x59ccff,_0x472fa9,_0x26b9d0){var _0x5b7c1b=_0x59ccff||_0x26b9d0;if(_0x5b7c1b){return handleError(_0x29f596,0x191,_0x5b7c1b);}if(!_0x472fa9){return handleError(_0x29f596,0x194,{'message':_0x6dee('0x2c')});}else{var _0x226e6d={'payload':{'id':_0x472fa9['id'],'role':_0x472fa9[_0x6dee('0x1c')]},'options':{'expiresIn':0x15180}};return authService[_0x6dee('0x2d')](_0x226e6d)[_0x6dee('0x18')](function(_0x281c7e){_0x29f596[_0x6dee('0x2e')]({'id':_0x472fa9['id'],'token':_0x281c7e,'statusCall':'','isAlreadyLogged':_0x472fa9[_0x6dee('0x20')]});});}})(_0x449793,_0x29f596,_0x4a1488);};passport[_0x6dee('0x2f')]('ad-login',new LocalStrategy({'usernameField':_0x6dee('0x19'),'passwordField':'password'},function(_0x33ceec,_0x4323fc,_0x2f9583){return ActiveDirectoryAuthenticate(db['User'],_0x33ceec,_0x4323fc,_0x2f9583);}));
\ No newline at end of file
+var _0x29a1=['adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','password','salt','disabled','blocked','blockedAt','online','admin','user','agent','name','add','minutes','clearBlockUser','getLicense','catch','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','use','User','passport','passport-local','Strategy','activedirectory2','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','domain','authenticate','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','findOne'];(function(_0x28df2f,_0x5a0573){var _0x5e915f=function(_0x2bca13){while(--_0x2bca13){_0x28df2f['push'](_0x28df2f['shift']());}};_0x5e915f(++_0x5a0573);}(_0x29a1,0x118));var _0x129a=function(_0x5e7e03,_0x117c82){_0x5e7e03=_0x5e7e03-0x0;var _0x55fb42=_0x29a1[_0x5e7e03];return _0x55fb42;};'use strict';var passport=require(_0x129a('0x0'));var LocalStrategy=require(_0x129a('0x1'))[_0x129a('0x2')];var moment=require('moment');var ActiveDirectory=require(_0x129a('0x3'));var BPromise=require('bluebird');var util=require(_0x129a('0x4'));var db=require(_0x129a('0x5'))['db'];var authService=require(_0x129a('0x6'));var utils=require(_0x129a('0x7'));var config=require(_0x129a('0x8'));var logger=require(_0x129a('0x9'))(_0x129a('0xa'));function isActiveDirectoryConfigured(_0x1dba91){var _0x5b87e6=![];if(typeof _0x1dba91[_0x129a('0xb')]!==_0x129a('0xc')){_0x5b87e6=_0x1dba91['activedirectory'][_0x129a('0xd')]&&_0x1dba91[_0x129a('0xb')]['url']&&_0x1dba91[_0x129a('0xb')][_0x129a('0xe')];}return _0x5b87e6;}function adAuthenticate(_0x3b4ef8,_0x1c2f0b,_0x48211b){return new BPromise(function(_0x1b2e97,_0x4a1e0b){try{var _0x467ca2=new ActiveDirectory(_0x3b4ef8);_0x467ca2[_0x129a('0xf')](_0x1c2f0b,_0x48211b,function(_0x557785,_0x5294b2){if(_0x557785){logger[_0x129a('0x10')]('Error\x20authenticate\x20%s:\x20%s',_0x1c2f0b,util['inspect'](_0x557785,{'showHidden':![],'depth':null}));_0x4a1e0b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x5294b2){logger[_0x129a('0x10')](_0x129a('0x11'),_0x1c2f0b);_0x4a1e0b(_0x129a('0x12'));}else{_0x1b2e97(_0x5294b2);}});}catch(_0x4c969c){_0x4a1e0b(_0x4c969c);}});}function ActiveDirectoryAuthenticate(_0x3e59db,_0x311750,_0x55ede5,_0x34e35d){var _0x3f795c,_0x7b3033;if(!isActiveDirectoryConfigured(config)){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x311750);return _0x34e35d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting'][_0x129a('0x13')]({'where':{'id':0x1},'attributes':[_0x129a('0x14'),_0x129a('0x15')],'raw':!![]})[_0x129a('0x16')](function(_0x1562a4){_0x3f795c=_0x1562a4;if(!_0x3f795c[_0x129a('0x14')]){logger[_0x129a('0x10')](_0x129a('0x17'),_0x311750);throw new Error(_0x129a('0x12'));}return _0x3e59db['findOne']({'attributes':['id','name',_0x129a('0x18'),_0x129a('0x19'),'role',_0x129a('0x1a'),_0x129a('0x1b'),_0x129a('0x1c'),_0x129a('0x1d')],'where':{'name':_0x311750,'role':{'$or':[_0x129a('0x1e'),_0x129a('0x1f'),_0x129a('0x20')]},'adSsoEnabled':!![]}});})[_0x129a('0x16')](function(_0x60fab6){if(!_0x60fab6||_0x60fab6&&_0x60fab6[_0x129a('0x21')]!==_0x311750){throw new Error(_0x129a('0x12'));}_0x7b3033=_0x60fab6;var _0x2e771e=_0x7b3033['name']+'@'+config[_0x129a('0xb')][_0x129a('0xe')];return adAuthenticate(config[_0x129a('0xb')],_0x2e771e,_0x55ede5);})[_0x129a('0x16')](function(_0x136a46){if(_0x7b3033[_0x129a('0x1a')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x3f795c[_0x129a('0x15')]>0x0){if(_0x7b3033['blocked']){if(moment(_0x7b3033[_0x129a('0x1c')])[_0x129a('0x22')](_0x3f795c['blockDuration'],_0x129a('0x23'))>moment()){throw new Error(_0x129a('0x12'));}return utils[_0x129a('0x24')](_0x7b3033,0x0,![],null)[_0x129a('0x16')](function(){return utils[_0x129a('0x25')](_0x7b3033);})[_0x129a('0x16')](function(){return _0x34e35d(null,_0x7b3033);});}else{return utils[_0x129a('0x25')](_0x7b3033)[_0x129a('0x16')](function(){return _0x34e35d(null,_0x7b3033);});}}else{return utils[_0x129a('0x25')](_0x7b3033)[_0x129a('0x16')](function(){return _0x34e35d(null,_0x7b3033);});}})[_0x129a('0x26')](function(_0x2072a6){return _0x34e35d(null,![],_0x2072a6);});}function handleError(_0x143479,_0x735da1,_0x37b76c){return _0x143479[_0x129a('0x27')](_0x735da1||0x1f4)[_0x129a('0x28')]({'message':_0x37b76c?_0x37b76c[_0x129a('0x29')]||_0x37b76c:''});}exports[_0x129a('0x2a')]=function(_0x124e1c,_0x5e7a5d,_0x31e9cf){passport[_0x129a('0xf')](_0x129a('0x2b'),function(_0x241b3c,_0x22840d,_0x218639){var _0x18f941=_0x241b3c||_0x218639;if(_0x18f941){return handleError(_0x5e7a5d,0x191,_0x18f941);}if(!_0x22840d){return handleError(_0x5e7a5d,0x194,{'message':_0x129a('0x2c')});}else{var _0x5d968e={'payload':{'id':_0x22840d['id'],'role':_0x22840d[_0x129a('0x2d')]},'options':{'expiresIn':0x15180}};return authService[_0x129a('0x2e')](_0x5d968e)[_0x129a('0x16')](function(_0x3f005a){_0x5e7a5d[_0x129a('0x2f')]({'id':_0x22840d['id'],'token':_0x3f005a,'statusCall':'','isAlreadyLogged':_0x22840d[_0x129a('0x1d')]});});}})(_0x124e1c,_0x5e7a5d,_0x31e9cf);};passport[_0x129a('0x30')](_0x129a('0x2b'),new LocalStrategy({'usernameField':_0x129a('0x21'),'passwordField':_0x129a('0x18')},function(_0x257cfa,_0x13a52f,_0x1063e8){return ActiveDirectoryAuthenticate(db[_0x129a('0x31')],_0x257cfa,_0x13a52f,_0x1063e8);}));
\ No newline at end of file
index b181f0f..bb38cc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91d5=['post','login','exports','express','Router','./authActiveDirectory.controller'];(function(_0x4f915c,_0x176f81){var _0x6b5199=function(_0x2b4483){while(--_0x2b4483){_0x4f915c['push'](_0x4f915c['shift']());}};_0x6b5199(++_0x176f81);}(_0x91d5,0x1ad));var _0x591d=function(_0x7ea9bf,_0x4df698){_0x7ea9bf=_0x7ea9bf-0x0;var _0x54441d=_0x91d5[_0x7ea9bf];return _0x54441d;};'use strict';var express=require(_0x591d('0x0'));var router=express[_0x591d('0x1')]();var controller=require(_0x591d('0x2'));router[_0x591d('0x3')]('/',controller[_0x591d('0x4')]);module[_0x591d('0x5')]=router;
\ No newline at end of file
+var _0xe0ff=['express','./authActiveDirectory.controller','post','login'];(function(_0x39edf1,_0x3616a9){var _0x348891=function(_0x2fd7d9){while(--_0x2fd7d9){_0x39edf1['push'](_0x39edf1['shift']());}};_0x348891(++_0x3616a9);}(_0xe0ff,0x6c));var _0xfe0f=function(_0x37665b,_0x5a60ec){_0x37665b=_0x37665b-0x0;var _0x34dd01=_0xe0ff[_0x37665b];return _0x34dd01;};'use strict';var express=require(_0xfe0f('0x0'));var router=express['Router']();var controller=require(_0xfe0f('0x1'));router[_0xfe0f('0x2')]('/',controller[_0xfe0f('0x3')]);module['exports']=router;
\ No newline at end of file
index 2b6f67b..765f141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x7a54,0x106));var _0x47a5=function(_0x40da9d,_0x487476){_0x40da9d=_0x40da9d-0x0;var _0x46babe=_0x7a54[_0x40da9d];return _0x46babe;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x7a54,0x106));var _0x47a5=function(_0x354ed0,_0x2cda19){_0x354ed0=_0x354ed0-0x0;var _0x4ddf83=_0x7a54[_0x354ed0];return _0x4ddf83;};'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 43adebc..89b7ee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f8=['express','passport','Router','./authGoogle.controller','../user/user.controller.js','get','callback','isMiddleware','setTokenCookie','exports'];(function(_0x7d4937,_0x202f18){var _0x39ca3f=function(_0x4e4769){while(--_0x4e4769){_0x7d4937['push'](_0x7d4937['shift']());}};_0x39ca3f(++_0x202f18);}(_0x68f8,0x154));var _0x868f=function(_0x2a3d84,_0x39166b){_0x2a3d84=_0x2a3d84-0x0;var _0x36b51b=_0x68f8[_0x2a3d84];return _0x36b51b;};'use strict';var express=require(_0x868f('0x0'));var passport=require(_0x868f('0x1'));var router=express[_0x868f('0x2')]();var controller=require(_0x868f('0x3'));var userController=require(_0x868f('0x4'));var authService=require('../../components/auth/service');router[_0x868f('0x5')]('/',controller['login']);router['get']('/callback',controller[_0x868f('0x6')],authService[_0x868f('0x7')],userController['login'],authService[_0x868f('0x8')]);module[_0x868f('0x9')]=router;
\ No newline at end of file
+var _0x62c8=['login','/callback','callback','setTokenCookie','exports','Router','../../components/auth/service','get'];(function(_0x894ba3,_0x52da32){var _0x1ee5f7=function(_0x2279d8){while(--_0x2279d8){_0x894ba3['push'](_0x894ba3['shift']());}};_0x1ee5f7(++_0x52da32);}(_0x62c8,0x1ad));var _0x862c=function(_0x5c7dc9,_0xe34e5a){_0x5c7dc9=_0x5c7dc9-0x0;var _0x234172=_0x62c8[_0x5c7dc9];return _0x234172;};'use strict';var express=require('express');var passport=require('passport');var router=express[_0x862c('0x0')]();var controller=require('./authGoogle.controller');var userController=require('../user/user.controller.js');var authService=require(_0x862c('0x1'));router[_0x862c('0x2')]('/',controller[_0x862c('0x3')]);router[_0x862c('0x2')](_0x862c('0x4'),controller[_0x862c('0x5')],authService['isMiddleware'],userController[_0x862c('0x3')],authService[_0x862c('0x6')]);module[_0x862c('0x7')]=router;
\ No newline at end of file
index e8bdb11..80f613a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94aa=['login','authenticate','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','Email\x20parameter\x20is\x20missing','generate','body','trim','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','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://','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','password','validatePasswordHistory','previousPasswords','Password\x20reset!','use','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','Setting','allowedLoginAttempts','blockDuration','then','findOne','role','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send'];(function(_0x7ee653,_0x3077ee){var _0x7eeae2=function(_0x4d27df){while(--_0x4d27df){_0x7ee653['push'](_0x7ee653['shift']());}};_0x7eeae2(++_0x3077ee);}(_0x94aa,0x1d4));var _0xa94a=function(_0x45ba7b,_0x456908){_0x45ba7b=_0x45ba7b-0x0;var _0x1245ba=_0x94aa[_0x45ba7b];return _0x1245ba;};'use strict';var util=require(_0xa94a('0x0'));var passport=require(_0xa94a('0x1'));var LocalStrategy=require('passport-local')[_0xa94a('0x2')];var jayson=require(_0xa94a('0x3'));var _=require(_0xa94a('0x4'));var rs=require(_0xa94a('0x5'));var moment=require(_0xa94a('0x6'));var db=require(_0xa94a('0x7'))['db'];var authService=require(_0xa94a('0x8'));var utils=require(_0xa94a('0x9'));var client=jayson[_0xa94a('0xa')]['http']({'port':0x232b});function localAuthenticate(_0x37c8ae,_0x189d85,_0x107911,_0x344dff){var _0x119378,_0x572dde;return db[_0xa94a('0xb')]['findOne']({'where':{'id':0x1},'attributes':[_0xa94a('0xc'),_0xa94a('0xd')],'raw':!![]})[_0xa94a('0xe')](function(_0x1e21e7){_0x119378=_0x1e21e7;return _0x37c8ae[_0xa94a('0xf')]({'attributes':['id','name','password','salt',_0xa94a('0x10'),'disabled',_0xa94a('0x11'),_0xa94a('0x12'),_0xa94a('0x13')],'where':{'name':_0x189d85,'role':{'$or':[_0xa94a('0x14'),_0xa94a('0x15'),_0xa94a('0x16')]}}});})['then'](function(_0x4a3b2d){if(!_0x4a3b2d||_0x4a3b2d&&_0x4a3b2d[_0xa94a('0x17')]!==_0x189d85){throw new Error(_0xa94a('0x18'));}else{_0x572dde=_0x4a3b2d;return _0x572dde;}})['then'](function(){_0x572dde['authenticate'](_0x107911,function(_0x37e5de,_0x4272d3){var _0xb0ed09=_0x572dde['loginAttempts']+0x1;if(_0x37e5de){return _0x344dff(_0x37e5de);}else if(!_0x4272d3){if(_0x572dde[_0xa94a('0x19')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else if(_0x119378['allowedLoginAttempts']>0x0){if(_0x572dde[_0xa94a('0x11')]){if(_0x119378[_0xa94a('0xd')]>0x0){if(moment(_0x572dde[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x119378['blockDuration'],_0xa94a('0x1b'))>moment()){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xa94a('0x1c')](_0x572dde,_0xb0ed09,![],null)[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{if(_0xb0ed09>=_0x119378[_0xa94a('0xc')]){return utils[_0xa94a('0x1c')](_0x572dde,0x0,!![],moment())[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x572dde,_0xb0ed09,![],null)[_0xa94a('0xe')](function(){return _0x344dff(null,![],{'message':_0xa94a('0x18')});});}}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{if(_0x572dde[_0xa94a('0x19')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else if(_0x119378['allowedLoginAttempts']>0x0){if(_0x572dde[_0xa94a('0x11')]){if(_0x119378[_0xa94a('0xd')]>0x0){if(moment(_0x572dde[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x119378[_0xa94a('0xd')],_0xa94a('0x1b'))>moment()){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else{return utils['clearBlockUser'](_0x572dde,0x0,![],null)[_0xa94a('0xe')](function(){return utils['getLicense'](_0x572dde);})[_0xa94a('0xe')](function(){return _0x344dff(null,_0x572dde);});}}else{return _0x344dff(null,![],{'message':_0xa94a('0x18')});}}else{return utils['clearBlockUser'](_0x572dde,0x0,![],null)['then'](function(){return utils[_0xa94a('0x1d')](_0x572dde);})[_0xa94a('0xe')](function(){return _0x344dff(null,_0x572dde);})[_0xa94a('0x1e')](function(_0x68bf0d){return _0x344dff(null,![],_0x68bf0d);});}}else{if(_0x572dde[_0xa94a('0x11')]){return _0x344dff(null,![],{'message':_0xa94a('0x18')});}else{return utils[_0xa94a('0x1d')](_0x572dde)['then'](function(){return _0x344dff(null,_0x572dde);});}}}});})[_0xa94a('0x1e')](function(_0x26e99c){return _0x344dff(null,![],_0x26e99c);});}function sendServiceMail(_0x78f88){return db[_0xa94a('0x1f')][_0xa94a('0x20')]({'where':{'service':!![]},'attributes':['id',_0xa94a('0x17'),_0xa94a('0x21')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0xa94a('0x22')],'as':_0xa94a('0x22')}]}]})[_0xa94a('0xe')](function(_0x3e4682){if(!_0x3e4682){throw new Error(_0xa94a('0x23'));}var _0x112c87=_0x3e4682[_0xa94a('0x24')]();var _0x50f75d={'account':_0x112c87,'message':_[_0xa94a('0x25')]({'from':util[_0xa94a('0x26')](_0xa94a('0x27'),_0x3e4682[_0xa94a('0x17')],_0x3e4682['email']||_0x3e4682['Smtp'][_0xa94a('0x15')])},_0x78f88)};return client[_0xa94a('0x28')](_0xa94a('0x29'),_0x50f75d);})[_0xa94a('0xe')](function(_0x369115){if(_0x369115[_0xa94a('0x2a')]){throw new Error(util[_0xa94a('0x26')](_0xa94a('0x2b'),_0x369115[_0xa94a('0x2a')][_0xa94a('0x2c')]||JSON[_0xa94a('0x2d')](_0x369115[_0xa94a('0x2a')])));}return!![];});}function handleError(_0x273045,_0x41fa09,_0x584c9d){return _0x273045[_0xa94a('0x2e')](_0x41fa09||0x1f4)[_0xa94a('0x2f')]({'message':_0x584c9d?_0x584c9d[_0xa94a('0x2c')]||_0x584c9d:''});}exports[_0xa94a('0x30')]=function(_0x929bf,_0x30bf09,_0x139c10){passport[_0xa94a('0x31')](_0xa94a('0x32'),function(_0x2fea25,_0x1dd313,_0x3343dd){var _0xde4789=_0x2fea25||_0x3343dd;if(_0xde4789){return handleError(_0x30bf09,0x191,_0xde4789);}if(!_0x1dd313){return handleError(_0x30bf09,0x194,{'message':_0xa94a('0x33')});}else{var _0x3dbd99={'payload':{'id':_0x1dd313['id'],'role':_0x1dd313[_0xa94a('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0xa94a('0x34')](_0x3dbd99)[_0xa94a('0xe')](function(_0x51dbd2){_0x30bf09[_0xa94a('0x35')]({'id':_0x1dd313['id'],'token':_0x51dbd2,'statusCall':'','isAlreadyLogged':_0x1dd313[_0xa94a('0x36')]});});}})(_0x929bf,_0x30bf09,_0x139c10);};exports['forgot']=function(_0x586822,_0x1ea8f5){if(!_0x586822['body']['email']){return handleError(_0x1ea8f5,0x1f4,{'message':_0xa94a('0x37')});}var _0x4cc08f=rs[_0xa94a('0x38')]();_0x586822[_0xa94a('0x39')][_0xa94a('0x21')]=_0x586822[_0xa94a('0x39')]['email'][_0xa94a('0x3a')]()['toLowerCase']();var _0x533540;return db['Setting'][_0xa94a('0xf')]({'where':{'id':0x1},'attributes':[_0xa94a('0xc'),_0xa94a('0xd')],'raw':!![]})[_0xa94a('0xe')](function(_0x40355a){_0x533540=_0x40355a;return db[_0xa94a('0x3b')]['find']({'where':{'email':_0x586822[_0xa94a('0x39')]['email']}});})['then'](function(_0x5684f7){if(!_0x5684f7){throw new Error(_0xa94a('0x3c'));}if(_0x5684f7[_0xa94a('0x19')]){throw new Error(_0xa94a('0x3d'));}if(_0x5684f7[_0xa94a('0x11')]){if(moment(_0x5684f7[_0xa94a('0x12')])[_0xa94a('0x1a')](_0x533540['blockDuration'],'minutes')>moment()){throw new Error(_0xa94a('0x3e'));}else{_0x5684f7[_0xa94a('0x11')]=![];_0x5684f7[_0xa94a('0x12')]=null;}}_0x5684f7[_0xa94a('0x3f')]=_0x4cc08f;_0x5684f7[_0xa94a('0x40')]=Date['now']()+0x36ee80;return _0x5684f7[_0xa94a('0x41')]();})[_0xa94a('0xe')](function(){return sendServiceMail({'to':_0x586822[_0xa94a('0x39')]['email'],'subject':_0xa94a('0x42'),'text':_0xa94a('0x43')+_0xa94a('0x44')+_0xa94a('0x45')+_0x586822['headers'][_0xa94a('0x46')]+_0xa94a('0x47')+_0x4cc08f+'\x0a\x0a'+_0xa94a('0x48')});})[_0xa94a('0xe')](function(){_0x1ea8f5[_0xa94a('0x2e')](0xc8)[_0xa94a('0x2f')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x41b095){return handleError(_0x1ea8f5,0x1f4,_0x41b095);});};exports[_0xa94a('0x49')]=function(_0x4fb6ec,_0x40853a){return db['User'][_0xa94a('0x20')]({'where':{'resetPasswordToken':_0x4fb6ec[_0xa94a('0x4a')][_0xa94a('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xa94a('0x4c')]()}}})[_0xa94a('0xe')](function(_0x5909f7){if(!_0x5909f7){throw new Error(_0xa94a('0x4d'));}return db[_0xa94a('0xb')][_0xa94a('0xf')]({'attributes':['id',_0xa94a('0x4e'),_0xa94a('0x4f'),_0xa94a('0x50')]})[_0xa94a('0xe')](function(_0x3f9e5e){if(_0x3f9e5e[_0xa94a('0x4e')])authService['validatePasswordPattern'](_0x4fb6ec[_0xa94a('0x39')][_0xa94a('0x51')]);if(!_0x3f9e5e[_0xa94a('0x4f')]||!_0x5909f7['previousPasswords'])return _0x5909f7;authService[_0xa94a('0x52')](_0x4fb6ec['body'][_0xa94a('0x51')],_0x5909f7[_0xa94a('0x53')],_0x3f9e5e[_0xa94a('0x50')]);return _0x5909f7;})[_0xa94a('0xe')](function(){_0x5909f7[_0xa94a('0x51')]=_0x4fb6ec[_0xa94a('0x39')][_0xa94a('0x51')];_0x5909f7[_0xa94a('0x3f')]=null;_0x5909f7['resetPasswordExpires']=null;return _0x5909f7[_0xa94a('0x41')]();});})[_0xa94a('0xe')](function(){_0x40853a[_0xa94a('0x2e')](0xc8)[_0xa94a('0x2f')]({'message':_0xa94a('0x54')});})[_0xa94a('0x1e')](function(_0x342e8e){return handleError(_0x40853a,0x1f4,_0x342e8e);});};passport[_0xa94a('0x55')](_0xa94a('0x32'),new LocalStrategy({'usernameField':_0xa94a('0x17'),'passwordField':_0xa94a('0x51')},function(_0x24814c,_0x4978c6,_0x4b7c8c){return localAuthenticate(db[_0xa94a('0x3b')],_0x24814c,_0x4978c6,_0x4b7c8c);}));
\ No newline at end of file
+var _0xb52b=['role','signToken','json','generate','body','trim','Setting','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','now','save','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','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','Reset\x20Email\x20sent!','reset','User','params','token','securePassword','enforcePasswordHistory','password','previousPasswords','validatePasswordHistory','passwordHistoryLimit','resetPasswordToken','resetPasswordExpires','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','../../mysqldb','../../components/auth/service','../../config/utils','client','findOne','blockDuration','then','name','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','authenticate','allowedLoginAttempts','add','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','getLicense','catch','MailAccount','find','email','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','send','login','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.'];(function(_0x9c9660,_0x523234){var _0x35913e=function(_0x520f64){while(--_0x520f64){_0x9c9660['push'](_0x9c9660['shift']());}};_0x35913e(++_0x523234);}(_0xb52b,0xbf));var _0xbb52=function(_0x2a5a0b,_0x45280c){_0x2a5a0b=_0x2a5a0b-0x0;var _0x1e3dc5=_0xb52b[_0x2a5a0b];return _0x1e3dc5;};'use strict';var util=require(_0xbb52('0x0'));var passport=require(_0xbb52('0x1'));var LocalStrategy=require(_0xbb52('0x2'))[_0xbb52('0x3')];var jayson=require(_0xbb52('0x4'));var _=require('lodash');var rs=require('randomstring');var moment=require('moment');var db=require(_0xbb52('0x5'))['db'];var authService=require(_0xbb52('0x6'));var utils=require(_0xbb52('0x7'));var client=jayson[_0xbb52('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x2e68b5,_0x61907,_0x2e5807,_0x2fa8a8){var _0x18fc11,_0x51a27c;return db['Setting'][_0xbb52('0x9')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xbb52('0xa')],'raw':!![]})[_0xbb52('0xb')](function(_0x20e1bf){_0x18fc11=_0x20e1bf;return _0x2e68b5[_0xbb52('0x9')]({'attributes':['id',_0xbb52('0xc'),'password','salt','role',_0xbb52('0xd'),_0xbb52('0xe'),_0xbb52('0xf'),_0xbb52('0x10')],'where':{'name':_0x61907,'role':{'$or':[_0xbb52('0x11'),_0xbb52('0x12'),_0xbb52('0x13')]}}});})[_0xbb52('0xb')](function(_0x4e96f1){if(!_0x4e96f1||_0x4e96f1&&_0x4e96f1[_0xbb52('0xc')]!==_0x61907){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x51a27c=_0x4e96f1;return _0x51a27c;}})[_0xbb52('0xb')](function(){_0x51a27c[_0xbb52('0x14')](_0x2e5807,function(_0x4c308b,_0x242ed0){var _0x145f42=_0x51a27c[_0xbb52('0x10')]+0x1;if(_0x4c308b){return _0x2fa8a8(_0x4c308b);}else if(!_0x242ed0){if(_0x51a27c[_0xbb52('0xd')]){return _0x2fa8a8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x18fc11[_0xbb52('0x15')]>0x0){if(_0x51a27c[_0xbb52('0xe')]){if(_0x18fc11[_0xbb52('0xa')]>0x0){if(moment(_0x51a27c[_0xbb52('0xf')])[_0xbb52('0x16')](_0x18fc11['blockDuration'],_0xbb52('0x17'))>moment()){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}else{return utils[_0xbb52('0x19')](_0x51a27c,_0x145f42,![],null)[_0xbb52('0xb')](function(){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});});}}else{return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}}else{if(_0x145f42>=_0x18fc11['allowedLoginAttempts']){return utils[_0xbb52('0x19')](_0x51a27c,0x0,!![],moment())[_0xbb52('0xb')](function(){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});});}else{return utils[_0xbb52('0x19')](_0x51a27c,_0x145f42,![],null)['then'](function(){return _0x2fa8a8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}}else{if(_0x51a27c['disabled']){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}else if(_0x18fc11[_0xbb52('0x15')]>0x0){if(_0x51a27c['blocked']){if(_0x18fc11[_0xbb52('0xa')]>0x0){if(moment(_0x51a27c['blockedAt'])[_0xbb52('0x16')](_0x18fc11[_0xbb52('0xa')],_0xbb52('0x17'))>moment()){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}else{return utils['clearBlockUser'](_0x51a27c,0x0,![],null)['then'](function(){return utils['getLicense'](_0x51a27c);})[_0xbb52('0xb')](function(){return _0x2fa8a8(null,_0x51a27c);});}}else{return _0x2fa8a8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xbb52('0x19')](_0x51a27c,0x0,![],null)[_0xbb52('0xb')](function(){return utils[_0xbb52('0x1a')](_0x51a27c);})[_0xbb52('0xb')](function(){return _0x2fa8a8(null,_0x51a27c);})[_0xbb52('0x1b')](function(_0x23fd4d){return _0x2fa8a8(null,![],_0x23fd4d);});}}else{if(_0x51a27c[_0xbb52('0xe')]){return _0x2fa8a8(null,![],{'message':_0xbb52('0x18')});}else{return utils['getLicense'](_0x51a27c)[_0xbb52('0xb')](function(){return _0x2fa8a8(null,_0x51a27c);});}}}});})[_0xbb52('0x1b')](function(_0x2ffc7f){return _0x2fa8a8(null,![],_0x2ffc7f);});}function sendServiceMail(_0xf611d){return db[_0xbb52('0x1c')][_0xbb52('0x1d')]({'where':{'service':!![]},'attributes':['id',_0xbb52('0xc'),_0xbb52('0x1e')],'include':[{'model':db['MailServerOut'],'as':_0xbb52('0x1f'),'include':[{'model':db[_0xbb52('0x20')],'as':_0xbb52('0x20')}]}]})['then'](function(_0x4cdf46){if(!_0x4cdf46){throw new Error(_0xbb52('0x21'));}var _0x552220=_0x4cdf46[_0xbb52('0x22')]();var _0x1b29a4={'account':_0x552220,'message':_[_0xbb52('0x23')]({'from':util['format'](_0xbb52('0x24'),_0x4cdf46[_0xbb52('0xc')],_0x4cdf46[_0xbb52('0x1e')]||_0x4cdf46['Smtp'][_0xbb52('0x12')])},_0xf611d)};return client[_0xbb52('0x25')](_0xbb52('0x26'),_0x1b29a4);})[_0xbb52('0xb')](function(_0x22e02f){if(_0x22e02f[_0xbb52('0x27')]){throw new Error(util['format'](_0xbb52('0x28'),_0x22e02f[_0xbb52('0x27')][_0xbb52('0x29')]||JSON['stringify'](_0x22e02f[_0xbb52('0x27')])));}return!![];});}function handleError(_0x2e5d91,_0x2b21e5,_0x5dd99c){return _0x2e5d91['status'](_0x2b21e5||0x1f4)[_0xbb52('0x2a')]({'message':_0x5dd99c?_0x5dd99c[_0xbb52('0x29')]||_0x5dd99c:''});}exports[_0xbb52('0x2b')]=function(_0x36369e,_0x310d9d,_0x9e161b){passport['authenticate'](_0xbb52('0x2c'),function(_0xe59714,_0x1ff5da,_0x4707ee){var _0x129ba8=_0xe59714||_0x4707ee;if(_0x129ba8){return handleError(_0x310d9d,0x191,_0x129ba8);}if(!_0x1ff5da){return handleError(_0x310d9d,0x194,{'message':_0xbb52('0x2d')});}else{var _0x1710b0={'payload':{'id':_0x1ff5da['id'],'role':_0x1ff5da[_0xbb52('0x2e')]},'options':{'expiresIn':0x15180}};return authService[_0xbb52('0x2f')](_0x1710b0)[_0xbb52('0xb')](function(_0x2b1b6d){_0x310d9d[_0xbb52('0x30')]({'id':_0x1ff5da['id'],'token':_0x2b1b6d,'statusCall':'','isAlreadyLogged':_0x1ff5da['online']});});}})(_0x36369e,_0x310d9d,_0x9e161b);};exports['forgot']=function(_0x4fd2ba,_0x5ad119){if(!_0x4fd2ba['body'][_0xbb52('0x1e')]){return handleError(_0x5ad119,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x35cd32=rs[_0xbb52('0x31')]();_0x4fd2ba[_0xbb52('0x32')]['email']=_0x4fd2ba[_0xbb52('0x32')][_0xbb52('0x1e')][_0xbb52('0x33')]()['toLowerCase']();var _0x26ac47;return db[_0xbb52('0x34')][_0xbb52('0x9')]({'where':{'id':0x1},'attributes':[_0xbb52('0x15'),_0xbb52('0xa')],'raw':!![]})[_0xbb52('0xb')](function(_0x51537f){_0x26ac47=_0x51537f;return db['User']['find']({'where':{'email':_0x4fd2ba[_0xbb52('0x32')][_0xbb52('0x1e')]}});})[_0xbb52('0xb')](function(_0x1ed050){if(!_0x1ed050){throw new Error(_0xbb52('0x35'));}if(_0x1ed050[_0xbb52('0xd')]){throw new Error(_0xbb52('0x36'));}if(_0x1ed050[_0xbb52('0xe')]){if(moment(_0x1ed050[_0xbb52('0xf')])['add'](_0x26ac47[_0xbb52('0xa')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x1ed050[_0xbb52('0xe')]=![];_0x1ed050['blockedAt']=null;}}_0x1ed050['resetPasswordToken']=_0x35cd32;_0x1ed050['resetPasswordExpires']=Date[_0xbb52('0x37')]()+0x36ee80;return _0x1ed050[_0xbb52('0x38')]();})[_0xbb52('0xb')](function(){return sendServiceMail({'to':_0x4fd2ba[_0xbb52('0x32')]['email'],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0xbb52('0x39')+_0xbb52('0x3a')+_0xbb52('0x3b')+_0x4fd2ba[_0xbb52('0x3c')][_0xbb52('0x3d')]+'/reset/'+_0x35cd32+'\x0a\x0a'+_0xbb52('0x3e')});})[_0xbb52('0xb')](function(){_0x5ad119[_0xbb52('0x3f')](0xc8)['send']({'message':_0xbb52('0x40')});})[_0xbb52('0x1b')](function(_0x554f4e){return handleError(_0x5ad119,0x1f4,_0x554f4e);});};exports[_0xbb52('0x41')]=function(_0x107d1a,_0x49e2c1){return db[_0xbb52('0x42')][_0xbb52('0x1d')]({'where':{'resetPasswordToken':_0x107d1a[_0xbb52('0x43')][_0xbb52('0x44')],'resetPasswordExpires':{'$gt':Date[_0xbb52('0x37')]()}}})[_0xbb52('0xb')](function(_0x2b7956){if(!_0x2b7956){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db['Setting'][_0xbb52('0x9')]({'attributes':['id',_0xbb52('0x45'),_0xbb52('0x46'),'passwordHistoryLimit']})[_0xbb52('0xb')](function(_0x4c0d3f){if(_0x4c0d3f['securePassword'])authService['validatePasswordPattern'](_0x107d1a[_0xbb52('0x32')][_0xbb52('0x47')]);if(!_0x4c0d3f['enforcePasswordHistory']||!_0x2b7956[_0xbb52('0x48')])return _0x2b7956;authService[_0xbb52('0x49')](_0x107d1a[_0xbb52('0x32')][_0xbb52('0x47')],_0x2b7956[_0xbb52('0x48')],_0x4c0d3f[_0xbb52('0x4a')]);return _0x2b7956;})['then'](function(){_0x2b7956[_0xbb52('0x47')]=_0x107d1a[_0xbb52('0x32')][_0xbb52('0x47')];_0x2b7956[_0xbb52('0x4b')]=null;_0x2b7956[_0xbb52('0x4c')]=null;return _0x2b7956[_0xbb52('0x38')]();});})[_0xbb52('0xb')](function(){_0x49e2c1[_0xbb52('0x3f')](0xc8)[_0xbb52('0x2a')]({'message':_0xbb52('0x4d')});})[_0xbb52('0x1b')](function(_0x163f63){return handleError(_0x49e2c1,0x1f4,_0x163f63);});};passport[_0xbb52('0x4e')](_0xbb52('0x2c'),new LocalStrategy({'usernameField':_0xbb52('0xc'),'passwordField':_0xbb52('0x47')},function(_0x313e5b,_0x293367,_0x27528b){return localAuthenticate(db[_0xbb52('0x42')],_0x313e5b,_0x293367,_0x27528b);}));
\ No newline at end of file
index b7d1aa9..0754ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8589=['/reset/:token','exports','Router','./authLocal.controller','post','login','forgot'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x8589,0xcd));var _0x9858=function(_0x44d2ce,_0x3b70e2){_0x44d2ce=_0x44d2ce-0x0;var _0x489d01=_0x8589[_0x44d2ce];return _0x489d01;};'use strict';var express=require('express');var router=express[_0x9858('0x0')]();var controller=require(_0x9858('0x1'));router[_0x9858('0x2')]('/',controller[_0x9858('0x3')]);router['post']('/forgot',controller[_0x9858('0x4')]);router['post'](_0x9858('0x5'),controller['reset']);module[_0x9858('0x6')]=router;
\ No newline at end of file
+var _0x6075=['exports','post','/forgot','/reset/:token','reset'];(function(_0x289874,_0x1b6752){var _0x2f8bbb=function(_0x23ee80){while(--_0x23ee80){_0x289874['push'](_0x289874['shift']());}};_0x2f8bbb(++_0x1b6752);}(_0x6075,0x1aa));var _0x5607=function(_0x34b0de,_0x472c3c){_0x34b0de=_0x34b0de-0x0;var _0x3c3f6f=_0x6075[_0x34b0de];return _0x3c3f6f;};'use strict';var express=require('express');var router=express['Router']();var controller=require('./authLocal.controller');router[_0x5607('0x0')]('/',controller['login']);router[_0x5607('0x0')](_0x5607('0x1'),controller['forgot']);router['post'](_0x5607('0x2'),controller[_0x5607('0x3')]);module[_0x5607('0x4')]=router;
\ No newline at end of file
index 2f1264c..b3be417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8106=['exports','STRING','INTEGER','sequelize'];(function(_0x960a5,_0x4e9959){var _0x5067b4=function(_0x5cf4b2){while(--_0x5cf4b2){_0x960a5['push'](_0x960a5['shift']());}};_0x5067b4(++_0x4e9959);}(_0x8106,0x83));var _0x6810=function(_0x2d5c01,_0x2da7ee){_0x2d5c01=_0x2d5c01-0x0;var _0x3f129a=_0x8106[_0x2d5c01];return _0x3f129a;};'use strict';var Sequelize=require(_0x6810('0x0'));module[_0x6810('0x1')]={'name':{'type':Sequelize[_0x6810('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x6810('0x2')]},'description':{'type':Sequelize[_0x6810('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6810('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xe60b=['BOOLEAN','INTEGER','STRING'];(function(_0x19b351,_0x547358){var _0x104803=function(_0x412161){while(--_0x412161){_0x19b351['push'](_0x19b351['shift']());}};_0x104803(++_0x547358);}(_0xe60b,0x1a9));var _0xbe60=function(_0x5c09e5,_0x5ae05f){_0x5c09e5=_0x5c09e5-0x0;var _0x5b0dfc=_0xe60b[_0x5c09e5];return _0x5b0dfc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xbe60('0x0')]},'description':{'type':Sequelize[_0xbe60('0x0')]},'status':{'type':Sequelize[_0xbe60('0x1')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xbe60('0x2')],'defaultValue':0xa}};
\ No newline at end of file
index a00e877..8452a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fb5=['rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','include','rows','catch','show','params','includeAll','find','create','body','addConditions','ids','getConditions','findOne','Action','omit','getActions','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','Automation'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0fb5,0x15d));var _0x50fb=function(_0x42cffb,_0x366ab0){_0x42cffb=_0x42cffb-0x0;var _0x2b84ff=_0x0fb5[_0x42cffb];return _0x2b84ff;};'use strict';var emlformat=require(_0x50fb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x50fb('0x1'));var jsonpatch=require(_0x50fb('0x2'));var rp=require('request-promise');var moment=require(_0x50fb('0x3'));var BPromise=require(_0x50fb('0x4'));var Mustache=require(_0x50fb('0x5'));var util=require(_0x50fb('0x6'));var path=require(_0x50fb('0x7'));var sox=require('sox');var csv=require(_0x50fb('0x8'));var ejs=require(_0x50fb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x50fb('0xa'));var squel=require(_0x50fb('0xb'));var crypto=require('crypto');var jsforce=require(_0x50fb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x50fb('0x8'));var querystring=require(_0x50fb('0xd'));var Papa=require(_0x50fb('0xe'));var Redis=require(_0x50fb('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x50fb('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x50fb('0x11'))(_0x50fb('0x12'));var utils=require('../../config/utils');var config=require(_0x50fb('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x50fb('0x14'))['db'];function respondWithStatusCode(_0xc7b741,_0x1d402a){_0x1d402a=_0x1d402a||0xcc;return function(_0x27def8){if(_0x27def8){return _0xc7b741[_0x50fb('0x15')](_0x1d402a);}return _0xc7b741[_0x50fb('0x16')](_0x1d402a)[_0x50fb('0x17')]();};}function respondWithResult(_0x36b8f9,_0x14abbf){_0x14abbf=_0x14abbf||0xc8;return function(_0xcc9bca){if(_0xcc9bca){return _0x36b8f9['status'](_0x14abbf)['json'](_0xcc9bca);}};}function respondWithFilteredResult(_0x319507,_0x33b837){return function(_0x548aa7){if(_0x548aa7){var _0x33f229=typeof _0x33b837[_0x50fb('0x18')]===_0x50fb('0x19')&&typeof _0x33b837[_0x50fb('0x1a')]==='undefined';var _0x825f11=_0x548aa7[_0x50fb('0x1b')];var _0x2cb092=_0x33f229?0x0:_0x33b837[_0x50fb('0x18')];var _0x3be35f=_0x33f229?_0x548aa7[_0x50fb('0x1b')]:_0x33b837[_0x50fb('0x18')]+_0x33b837[_0x50fb('0x1a')];var _0x5e114b;if(_0x3be35f>=_0x825f11){_0x3be35f=_0x825f11;_0x5e114b=0xc8;}else{_0x5e114b=0xce;}_0x319507[_0x50fb('0x16')](_0x5e114b);return _0x319507['set'](_0x50fb('0x1c'),_0x2cb092+'-'+_0x3be35f+'/'+_0x825f11)[_0x50fb('0x1d')](_0x548aa7);}return null;};}function patchUpdates(_0x3df2ff){return function(_0x357073){try{jsonpatch[_0x50fb('0x1e')](_0x357073,_0x3df2ff,!![]);}catch(_0x2f5295){return BPromise[_0x50fb('0x1f')](_0x2f5295);}return _0x357073[_0x50fb('0x20')]();};}function saveUpdates(_0xfce6c1,_0xdd8f9f){return function(_0x4bc025){if(_0x4bc025){return _0x4bc025[_0x50fb('0x21')](_0xfce6c1)[_0x50fb('0x22')](function(_0x4c65e8){return _0x4c65e8;});}return null;};}function removeEntity(_0x2b3aa7,_0xac59de){return function(_0x4ad7a4){if(_0x4ad7a4){return _0x4ad7a4[_0x50fb('0x23')]()[_0x50fb('0x22')](function(){_0x2b3aa7[_0x50fb('0x16')](0xcc)[_0x50fb('0x17')]();});}};}function handleEntityNotFound(_0x4078ce,_0x349fd7){return function(_0x4d0e8f){if(!_0x4d0e8f){_0x4078ce[_0x50fb('0x15')](0x194);}return _0x4d0e8f;};}function handleError(_0x1ce155,_0x4d8ea5){_0x4d8ea5=_0x4d8ea5||0x1f4;return function(_0x5b85ea){logger[_0x50fb('0x24')](_0x5b85ea['stack']);if(_0x5b85ea['name']){delete _0x5b85ea[_0x50fb('0x25')];}_0x1ce155[_0x50fb('0x16')](_0x4d8ea5)[_0x50fb('0x26')](_0x5b85ea);};}exports['index']=function(_0x338011,_0xb8b8a3){var _0x13a30c={},_0x212469={},_0xc5b751={'count':0x0,'rows':[]};var _0x26dcf0=_[_0x50fb('0x27')](db[_0x50fb('0x28')][_0x50fb('0x29')],function(_0x1a577e){return{'name':_0x1a577e[_0x50fb('0x2a')],'type':_0x1a577e['type']['key']};});_0x212469[_0x50fb('0x2b')]=_[_0x50fb('0x27')](_0x26dcf0,_0x50fb('0x25'));_0x212469[_0x50fb('0x2c')]=_[_0x50fb('0x2d')](_0x338011[_0x50fb('0x2c')]);_0x212469[_0x50fb('0x2e')]=_[_0x50fb('0x2f')](_0x212469['model'],_0x212469[_0x50fb('0x2c')]);_0x13a30c[_0x50fb('0x30')]=_['intersection'](_0x212469[_0x50fb('0x2b')],qs['fields'](_0x338011[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x13a30c['attributes']=_0x13a30c[_0x50fb('0x30')][_0x50fb('0x32')]?_0x13a30c['attributes']:_0x212469[_0x50fb('0x2b')];if(!_0x338011[_0x50fb('0x2c')][_0x50fb('0x33')](_0x50fb('0x34'))){_0x13a30c[_0x50fb('0x1a')]=qs['limit'](_0x338011[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x13a30c[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0x338011['query']['offset']);}_0x13a30c[_0x50fb('0x35')]=qs[_0x50fb('0x36')](_0x338011['query'][_0x50fb('0x36')]);_0x13a30c[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0x338011['query'],_0x212469[_0x50fb('0x2e')]),_0x26dcf0);if(_0x338011['query'][_0x50fb('0x39')]){_0x13a30c['where']=_['merge'](_0x13a30c['where'],{'$or':_['map'](_0x26dcf0,function(_0x8d5275){if(_0x8d5275[_0x50fb('0x3a')]!==_0x50fb('0x3b')){var _0x59c8d6={};_0x59c8d6[_0x8d5275['name']]={'$like':'%'+_0x338011['query']['filter']+'%'};return _0x59c8d6;}})});}_0x13a30c=_[_0x50fb('0x3c')]({},_0x13a30c,_0x338011[_0x50fb('0x3d')]);var _0x506865={'where':_0x13a30c[_0x50fb('0x37')]};return db[_0x50fb('0x28')][_0x50fb('0x1b')](_0x506865)['then'](function(_0xae7dcc){_0xc5b751[_0x50fb('0x1b')]=_0xae7dcc;if(_0x338011[_0x50fb('0x2c')]['includeAll']){_0x13a30c[_0x50fb('0x3e')]=[{'all':!![]}];}return db[_0x50fb('0x28')]['findAll'](_0x13a30c);})[_0x50fb('0x22')](function(_0x39034e){_0xc5b751[_0x50fb('0x3f')]=_0x39034e;return _0xc5b751;})[_0x50fb('0x22')](respondWithFilteredResult(_0xb8b8a3,_0x13a30c))[_0x50fb('0x40')](handleError(_0xb8b8a3,null));};exports[_0x50fb('0x41')]=function(_0x4e9a50,_0x2e63c9){var _0xa5fb90={'raw':![],'where':{'id':_0x4e9a50[_0x50fb('0x42')]['id']}},_0x1f4b6b={};_0x1f4b6b[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db['Automation'][_0x50fb('0x29')]);_0x1f4b6b[_0x50fb('0x2c')]=_[_0x50fb('0x2d')](_0x4e9a50[_0x50fb('0x2c')]);_0x1f4b6b[_0x50fb('0x2e')]=_['intersection'](_0x1f4b6b[_0x50fb('0x2b')],_0x1f4b6b[_0x50fb('0x2c')]);_0xa5fb90[_0x50fb('0x30')]=_[_0x50fb('0x2f')](_0x1f4b6b[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0x4e9a50[_0x50fb('0x2c')][_0x50fb('0x31')]));_0xa5fb90[_0x50fb('0x30')]=_0xa5fb90[_0x50fb('0x30')][_0x50fb('0x32')]?_0xa5fb90[_0x50fb('0x30')]:_0x1f4b6b[_0x50fb('0x2b')];if(_0x4e9a50['query'][_0x50fb('0x43')]){_0xa5fb90[_0x50fb('0x3e')]=[{'all':!![]}];}_0xa5fb90=_[_0x50fb('0x3c')]({},_0xa5fb90,_0x4e9a50['options']);return db[_0x50fb('0x28')][_0x50fb('0x44')](_0xa5fb90)[_0x50fb('0x22')](handleEntityNotFound(_0x2e63c9,null))[_0x50fb('0x22')](respondWithResult(_0x2e63c9,null))[_0x50fb('0x40')](handleError(_0x2e63c9,null));};exports[_0x50fb('0x45')]=function(_0x1fb5e0,_0x3d9f9f){return db['Automation'][_0x50fb('0x45')](_0x1fb5e0['body'],{})[_0x50fb('0x22')](respondWithResult(_0x3d9f9f,0xc9))[_0x50fb('0x40')](handleError(_0x3d9f9f,null));};exports[_0x50fb('0x21')]=function(_0x303939,_0x2be487){if(_0x303939['body']['id']){delete _0x303939[_0x50fb('0x46')]['id'];}return db[_0x50fb('0x28')][_0x50fb('0x44')]({'where':{'id':_0x303939['params']['id']}})['then'](handleEntityNotFound(_0x2be487,null))[_0x50fb('0x22')](saveUpdates(_0x303939[_0x50fb('0x46')],null))['then'](respondWithResult(_0x2be487,null))[_0x50fb('0x40')](handleError(_0x2be487,null));};exports[_0x50fb('0x23')]=function(_0x158be1,_0x2fae5b){return db[_0x50fb('0x28')][_0x50fb('0x44')]({'where':{'id':_0x158be1['params']['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x2fae5b,null))['then'](removeEntity(_0x2fae5b,null))[_0x50fb('0x40')](handleError(_0x2fae5b,null));};exports[_0x50fb('0x47')]=function(_0x3090a2,_0x337345,_0x5d04e9){return db['Condition'][_0x50fb('0x44')]({'where':{'id':_0x3090a2['params']['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x337345,null))[_0x50fb('0x22')](function(_0x1fed2f){if(_0x1fed2f){return _0x1fed2f['addConditions'](_0x3090a2[_0x50fb('0x46')][_0x50fb('0x48')],_['omit'](_0x3090a2['body'],['ids','id'])||{});}})[_0x50fb('0x22')](respondWithResult(_0x337345,null))[_0x50fb('0x40')](handleError(_0x337345,null));};exports[_0x50fb('0x49')]=function(_0x570eb8,_0x4e8b06,_0x382534){var _0x203e8b={};var _0x458839={};var _0x3fbbc8;var _0x22749c;return db[_0x50fb('0x28')][_0x50fb('0x4a')]({'where':{'id':_0x570eb8[_0x50fb('0x42')]['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x4e8b06,null))[_0x50fb('0x22')](function(_0x39e7f1){if(_0x39e7f1){_0x3fbbc8=_0x39e7f1;_0x458839[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db['Condition'][_0x50fb('0x29')]);_0x458839[_0x50fb('0x2c')]=_['keys'](_0x570eb8['query']);_0x458839[_0x50fb('0x2e')]=_['intersection'](_0x458839[_0x50fb('0x2b')],_0x458839[_0x50fb('0x2c')]);_0x203e8b['attributes']=_[_0x50fb('0x2f')](_0x458839[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x203e8b['attributes']=_0x203e8b[_0x50fb('0x30')][_0x50fb('0x32')]?_0x203e8b[_0x50fb('0x30')]:_0x458839[_0x50fb('0x2b')];_0x203e8b[_0x50fb('0x35')]=qs[_0x50fb('0x36')](_0x570eb8[_0x50fb('0x2c')]['sort']);_0x203e8b[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0x570eb8[_0x50fb('0x2c')],_0x458839['filters']));if(_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x39')]){_0x203e8b[_0x50fb('0x37')]=_[_0x50fb('0x3c')](_0x203e8b[_0x50fb('0x37')],{'$or':_[_0x50fb('0x27')](_0x203e8b[_0x50fb('0x30')],function(_0x44b7c8){var _0x504825={};_0x504825[_0x44b7c8]={'$like':'%'+_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x39')]+'%'};return _0x504825;})});}_0x203e8b=_[_0x50fb('0x3c')]({},_0x203e8b,_0x570eb8[_0x50fb('0x3d')]);return _0x3fbbc8[_0x50fb('0x49')](_0x203e8b);}})[_0x50fb('0x22')](function(_0x2b5cec){if(_0x2b5cec){_0x22749c=_0x2b5cec[_0x50fb('0x32')];if(!_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x33')](_0x50fb('0x34'))){_0x203e8b[_0x50fb('0x1a')]=qs[_0x50fb('0x1a')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x203e8b[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0x570eb8[_0x50fb('0x2c')][_0x50fb('0x18')]);}return _0x3fbbc8[_0x50fb('0x49')](_0x203e8b);}})[_0x50fb('0x22')](function(_0xf53b5){if(_0xf53b5){return _0xf53b5?{'count':_0x22749c,'rows':_0xf53b5}:null;}})['then'](respondWithResult(_0x4e8b06,null))[_0x50fb('0x40')](handleError(_0x4e8b06,null));};exports['addActions']=function(_0x392e22,_0x2ba454,_0x2326c7){return db[_0x50fb('0x4b')][_0x50fb('0x44')]({'where':{'id':_0x392e22[_0x50fb('0x42')]['id']}})['then'](handleEntityNotFound(_0x2ba454,null))[_0x50fb('0x22')](function(_0x30512c){if(_0x30512c){return _0x30512c['addActions'](_0x392e22[_0x50fb('0x46')][_0x50fb('0x48')],_[_0x50fb('0x4c')](_0x392e22['body'],[_0x50fb('0x48'),'id'])||{});}})[_0x50fb('0x22')](respondWithResult(_0x2ba454,null))['catch'](handleError(_0x2ba454,null));};exports['getActions']=function(_0xd5c2fd,_0x387aa4,_0x5c25a0){var _0x456a1d={};var _0x203f81={};var _0x4a4f00;var _0x42c91b;return db[_0x50fb('0x28')][_0x50fb('0x4a')]({'where':{'id':_0xd5c2fd[_0x50fb('0x42')]['id']}})[_0x50fb('0x22')](handleEntityNotFound(_0x387aa4,null))['then'](function(_0x2e85b7){if(_0x2e85b7){_0x4a4f00=_0x2e85b7;_0x203f81[_0x50fb('0x2b')]=_[_0x50fb('0x2d')](db[_0x50fb('0x4b')][_0x50fb('0x29')]);_0x203f81['query']=_[_0x50fb('0x2d')](_0xd5c2fd[_0x50fb('0x2c')]);_0x203f81[_0x50fb('0x2e')]=_[_0x50fb('0x2f')](_0x203f81['model'],_0x203f81[_0x50fb('0x2c')]);_0x456a1d[_0x50fb('0x30')]=_[_0x50fb('0x2f')](_0x203f81[_0x50fb('0x2b')],qs[_0x50fb('0x31')](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x31')]));_0x456a1d[_0x50fb('0x30')]=_0x456a1d[_0x50fb('0x30')]['length']?_0x456a1d[_0x50fb('0x30')]:_0x203f81['model'];_0x456a1d['order']=qs[_0x50fb('0x36')](_0xd5c2fd[_0x50fb('0x2c')]['sort']);_0x456a1d[_0x50fb('0x37')]=qs[_0x50fb('0x2e')](_[_0x50fb('0x38')](_0xd5c2fd['query'],_0x203f81[_0x50fb('0x2e')]));if(_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x39')]){_0x456a1d[_0x50fb('0x37')]=_['merge'](_0x456a1d[_0x50fb('0x37')],{'$or':_[_0x50fb('0x27')](_0x456a1d[_0x50fb('0x30')],function(_0x1ff91e){var _0x340890={};_0x340890[_0x1ff91e]={'$like':'%'+_0xd5c2fd['query'][_0x50fb('0x39')]+'%'};return _0x340890;})});}_0x456a1d=_['merge']({},_0x456a1d,_0xd5c2fd[_0x50fb('0x3d')]);return _0x4a4f00['getActions'](_0x456a1d);}})[_0x50fb('0x22')](function(_0x479a2c){if(_0x479a2c){_0x42c91b=_0x479a2c['length'];if(!_0xd5c2fd['query'][_0x50fb('0x33')](_0x50fb('0x34'))){_0x456a1d['limit']=qs['limit'](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x1a')]);_0x456a1d[_0x50fb('0x18')]=qs[_0x50fb('0x18')](_0xd5c2fd[_0x50fb('0x2c')][_0x50fb('0x18')]);}return _0x4a4f00[_0x50fb('0x4d')](_0x456a1d);}})['then'](function(_0x79fad3){if(_0x79fad3){return _0x79fad3?{'count':_0x42c91b,'rows':_0x79fad3}:null;}})['then'](respondWithResult(_0x387aa4,null))[_0x50fb('0x40')](handleError(_0x387aa4,null));};
\ No newline at end of file
+var _0x653c=['map','Automation','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','addConditions','Condition','ids','omit','order','filter','getConditions','addActions','Action','getActions','findOne','eml-format','rimraf','zip-dir','moment','path','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','save','update','destroy','then','sendStatus','error','stack','name','index'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x653c,0x16b));var _0xc653=function(_0x346e23,_0x386d22){_0x346e23=_0x346e23-0x0;var _0x3608db=_0x653c[_0x346e23];return _0x3608db;};'use strict';var emlformat=require(_0xc653('0x0'));var rimraf=require(_0xc653('0x1'));var zipdir=require(_0xc653('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc653('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc653('0x4'));var sox=require('sox');var csv=require(_0xc653('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc653('0x6'));var _=require(_0xc653('0x7'));var squel=require(_0xc653('0x8'));var crypto=require(_0xc653('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc653('0x5'));var querystring=require(_0xc653('0xa'));var Papa=require(_0xc653('0xb'));var Redis=require(_0xc653('0xc'));var authService=require(_0xc653('0xd'));var qs=require(_0xc653('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc653('0xf'))('api');var utils=require(_0xc653('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xc653('0x11'));var db=require(_0xc653('0x12'))['db'];function respondWithStatusCode(_0x80f3c3,_0x5de43c){_0x5de43c=_0x5de43c||0xcc;return function(_0xd5c4b2){if(_0xd5c4b2){return _0x80f3c3['sendStatus'](_0x5de43c);}return _0x80f3c3[_0xc653('0x13')](_0x5de43c)[_0xc653('0x14')]();};}function respondWithResult(_0x11e472,_0xcd4755){_0xcd4755=_0xcd4755||0xc8;return function(_0x1b7fd8){if(_0x1b7fd8){return _0x11e472['status'](_0xcd4755)[_0xc653('0x15')](_0x1b7fd8);}};}function respondWithFilteredResult(_0x4e025c,_0x341650){return function(_0x50b444){if(_0x50b444){var _0x2b434b=typeof _0x341650[_0xc653('0x16')]===_0xc653('0x17')&&typeof _0x341650['limit']===_0xc653('0x17');var _0x5847f5=_0x50b444[_0xc653('0x18')];var _0x1e241b=_0x2b434b?0x0:_0x341650['offset'];var _0x4c7155=_0x2b434b?_0x50b444['count']:_0x341650['offset']+_0x341650[_0xc653('0x19')];var _0x242db3;if(_0x4c7155>=_0x5847f5){_0x4c7155=_0x5847f5;_0x242db3=0xc8;}else{_0x242db3=0xce;}_0x4e025c[_0xc653('0x13')](_0x242db3);return _0x4e025c[_0xc653('0x1a')](_0xc653('0x1b'),_0x1e241b+'-'+_0x4c7155+'/'+_0x5847f5)[_0xc653('0x15')](_0x50b444);}return null;};}function patchUpdates(_0x5c15fd){return function(_0x37d3bd){try{jsonpatch['apply'](_0x37d3bd,_0x5c15fd,!![]);}catch(_0x5d9a62){return BPromise['reject'](_0x5d9a62);}return _0x37d3bd[_0xc653('0x1c')]();};}function saveUpdates(_0x362a87,_0x4e5038){return function(_0x546c11){if(_0x546c11){return _0x546c11[_0xc653('0x1d')](_0x362a87)['then'](function(_0x5741b7){return _0x5741b7;});}return null;};}function removeEntity(_0x4280e5,_0x3ec0a6){return function(_0xf53624){if(_0xf53624){return _0xf53624[_0xc653('0x1e')]()[_0xc653('0x1f')](function(){_0x4280e5[_0xc653('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d8ec2,_0x3f3cbf){return function(_0xe6ce0d){if(!_0xe6ce0d){_0x1d8ec2[_0xc653('0x20')](0x194);}return _0xe6ce0d;};}function handleError(_0x2b4535,_0x79e289){_0x79e289=_0x79e289||0x1f4;return function(_0x423771){logger[_0xc653('0x21')](_0x423771[_0xc653('0x22')]);if(_0x423771['name']){delete _0x423771[_0xc653('0x23')];}_0x2b4535[_0xc653('0x13')](_0x79e289)['send'](_0x423771);};}exports[_0xc653('0x24')]=function(_0x1b67e4,_0x16ac5c){var _0x2ec48d={},_0x45b9e0={},_0x5224e0={'count':0x0,'rows':[]};var _0x26d734=_[_0xc653('0x25')](db[_0xc653('0x26')][_0xc653('0x27')],function(_0x4cc7cc){return{'name':_0x4cc7cc[_0xc653('0x28')],'type':_0x4cc7cc[_0xc653('0x29')][_0xc653('0x2a')]};});_0x45b9e0[_0xc653('0x2b')]=_[_0xc653('0x25')](_0x26d734,'name');_0x45b9e0[_0xc653('0x2c')]=_[_0xc653('0x2d')](_0x1b67e4['query']);_0x45b9e0[_0xc653('0x2e')]=_[_0xc653('0x2f')](_0x45b9e0[_0xc653('0x2b')],_0x45b9e0[_0xc653('0x2c')]);_0x2ec48d[_0xc653('0x30')]=_['intersection'](_0x45b9e0[_0xc653('0x2b')],qs[_0xc653('0x31')](_0x1b67e4[_0xc653('0x2c')][_0xc653('0x31')]));_0x2ec48d[_0xc653('0x30')]=_0x2ec48d[_0xc653('0x30')]['length']?_0x2ec48d['attributes']:_0x45b9e0['model'];if(!_0x1b67e4['query'][_0xc653('0x32')](_0xc653('0x33'))){_0x2ec48d[_0xc653('0x19')]=qs[_0xc653('0x19')](_0x1b67e4[_0xc653('0x2c')][_0xc653('0x19')]);_0x2ec48d['offset']=qs[_0xc653('0x16')](_0x1b67e4[_0xc653('0x2c')]['offset']);}_0x2ec48d['order']=qs[_0xc653('0x34')](_0x1b67e4[_0xc653('0x2c')][_0xc653('0x34')]);_0x2ec48d[_0xc653('0x35')]=qs['filters'](_[_0xc653('0x36')](_0x1b67e4[_0xc653('0x2c')],_0x45b9e0[_0xc653('0x2e')]),_0x26d734);if(_0x1b67e4[_0xc653('0x2c')]['filter']){_0x2ec48d['where']=_['merge'](_0x2ec48d[_0xc653('0x35')],{'$or':_['map'](_0x26d734,function(_0xb47578){if(_0xb47578[_0xc653('0x29')]!==_0xc653('0x37')){var _0x55031e={};_0x55031e[_0xb47578[_0xc653('0x23')]]={'$like':'%'+_0x1b67e4[_0xc653('0x2c')]['filter']+'%'};return _0x55031e;}})});}_0x2ec48d=_[_0xc653('0x38')]({},_0x2ec48d,_0x1b67e4[_0xc653('0x39')]);var _0x56dbf6={'where':_0x2ec48d[_0xc653('0x35')]};return db[_0xc653('0x26')][_0xc653('0x18')](_0x56dbf6)[_0xc653('0x1f')](function(_0x56a162){_0x5224e0[_0xc653('0x18')]=_0x56a162;if(_0x1b67e4[_0xc653('0x2c')][_0xc653('0x3a')]){_0x2ec48d[_0xc653('0x3b')]=[{'all':!![]}];}return db[_0xc653('0x26')][_0xc653('0x3c')](_0x2ec48d);})[_0xc653('0x1f')](function(_0xc58552){_0x5224e0[_0xc653('0x3d')]=_0xc58552;return _0x5224e0;})['then'](respondWithFilteredResult(_0x16ac5c,_0x2ec48d))[_0xc653('0x3e')](handleError(_0x16ac5c,null));};exports[_0xc653('0x3f')]=function(_0x590222,_0x40963e){var _0x3a4a82={'raw':![],'where':{'id':_0x590222[_0xc653('0x40')]['id']}},_0x23c75a={};_0x23c75a[_0xc653('0x2b')]=_['keys'](db[_0xc653('0x26')][_0xc653('0x27')]);_0x23c75a[_0xc653('0x2c')]=_['keys'](_0x590222[_0xc653('0x2c')]);_0x23c75a[_0xc653('0x2e')]=_[_0xc653('0x2f')](_0x23c75a[_0xc653('0x2b')],_0x23c75a[_0xc653('0x2c')]);_0x3a4a82[_0xc653('0x30')]=_[_0xc653('0x2f')](_0x23c75a[_0xc653('0x2b')],qs[_0xc653('0x31')](_0x590222[_0xc653('0x2c')][_0xc653('0x31')]));_0x3a4a82['attributes']=_0x3a4a82[_0xc653('0x30')][_0xc653('0x41')]?_0x3a4a82[_0xc653('0x30')]:_0x23c75a[_0xc653('0x2b')];if(_0x590222[_0xc653('0x2c')]['includeAll']){_0x3a4a82['include']=[{'all':!![]}];}_0x3a4a82=_[_0xc653('0x38')]({},_0x3a4a82,_0x590222[_0xc653('0x39')]);return db['Automation'][_0xc653('0x42')](_0x3a4a82)[_0xc653('0x1f')](handleEntityNotFound(_0x40963e,null))[_0xc653('0x1f')](respondWithResult(_0x40963e,null))[_0xc653('0x3e')](handleError(_0x40963e,null));};exports[_0xc653('0x43')]=function(_0x23bb82,_0x2bbce9){return db[_0xc653('0x26')][_0xc653('0x43')](_0x23bb82[_0xc653('0x44')],{})[_0xc653('0x1f')](respondWithResult(_0x2bbce9,0xc9))[_0xc653('0x3e')](handleError(_0x2bbce9,null));};exports['update']=function(_0x508b92,_0x5518c2){if(_0x508b92[_0xc653('0x44')]['id']){delete _0x508b92['body']['id'];}return db[_0xc653('0x26')][_0xc653('0x42')]({'where':{'id':_0x508b92['params']['id']}})[_0xc653('0x1f')](handleEntityNotFound(_0x5518c2,null))[_0xc653('0x1f')](saveUpdates(_0x508b92[_0xc653('0x44')],null))[_0xc653('0x1f')](respondWithResult(_0x5518c2,null))['catch'](handleError(_0x5518c2,null));};exports['destroy']=function(_0x45889f,_0x8a575){return db[_0xc653('0x26')]['find']({'where':{'id':_0x45889f[_0xc653('0x40')]['id']}})[_0xc653('0x1f')](handleEntityNotFound(_0x8a575,null))['then'](removeEntity(_0x8a575,null))[_0xc653('0x3e')](handleError(_0x8a575,null));};exports[_0xc653('0x45')]=function(_0x245de3,_0x4c4a00,_0x37f05f){return db[_0xc653('0x46')][_0xc653('0x42')]({'where':{'id':_0x245de3[_0xc653('0x40')]['id']}})['then'](handleEntityNotFound(_0x4c4a00,null))[_0xc653('0x1f')](function(_0x5dfe30){if(_0x5dfe30){return _0x5dfe30[_0xc653('0x45')](_0x245de3[_0xc653('0x44')][_0xc653('0x47')],_[_0xc653('0x48')](_0x245de3['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x4c4a00,null))[_0xc653('0x3e')](handleError(_0x4c4a00,null));};exports['getConditions']=function(_0x1599dc,_0x2cbaa0,_0x142256){var _0x31580a={};var _0xe55101={};var _0x32e0e2;var _0x2f6040;return db[_0xc653('0x26')]['findOne']({'where':{'id':_0x1599dc[_0xc653('0x40')]['id']}})['then'](handleEntityNotFound(_0x2cbaa0,null))[_0xc653('0x1f')](function(_0x1507f8){if(_0x1507f8){_0x32e0e2=_0x1507f8;_0xe55101[_0xc653('0x2b')]=_[_0xc653('0x2d')](db['Condition'][_0xc653('0x27')]);_0xe55101['query']=_['keys'](_0x1599dc[_0xc653('0x2c')]);_0xe55101[_0xc653('0x2e')]=_['intersection'](_0xe55101[_0xc653('0x2b')],_0xe55101[_0xc653('0x2c')]);_0x31580a['attributes']=_['intersection'](_0xe55101[_0xc653('0x2b')],qs[_0xc653('0x31')](_0x1599dc['query'][_0xc653('0x31')]));_0x31580a[_0xc653('0x30')]=_0x31580a[_0xc653('0x30')][_0xc653('0x41')]?_0x31580a[_0xc653('0x30')]:_0xe55101[_0xc653('0x2b')];_0x31580a[_0xc653('0x49')]=qs['sort'](_0x1599dc[_0xc653('0x2c')]['sort']);_0x31580a[_0xc653('0x35')]=qs[_0xc653('0x2e')](_[_0xc653('0x36')](_0x1599dc[_0xc653('0x2c')],_0xe55101[_0xc653('0x2e')]));if(_0x1599dc[_0xc653('0x2c')][_0xc653('0x4a')]){_0x31580a[_0xc653('0x35')]=_['merge'](_0x31580a['where'],{'$or':_[_0xc653('0x25')](_0x31580a['attributes'],function(_0x352f4d){var _0x4d7ec6={};_0x4d7ec6[_0x352f4d]={'$like':'%'+_0x1599dc[_0xc653('0x2c')][_0xc653('0x4a')]+'%'};return _0x4d7ec6;})});}_0x31580a=_[_0xc653('0x38')]({},_0x31580a,_0x1599dc[_0xc653('0x39')]);return _0x32e0e2['getConditions'](_0x31580a);}})[_0xc653('0x1f')](function(_0x214f4e){if(_0x214f4e){_0x2f6040=_0x214f4e[_0xc653('0x41')];if(!_0x1599dc[_0xc653('0x2c')]['hasOwnProperty'](_0xc653('0x33'))){_0x31580a[_0xc653('0x19')]=qs[_0xc653('0x19')](_0x1599dc[_0xc653('0x2c')][_0xc653('0x19')]);_0x31580a[_0xc653('0x16')]=qs[_0xc653('0x16')](_0x1599dc['query'][_0xc653('0x16')]);}return _0x32e0e2[_0xc653('0x4b')](_0x31580a);}})[_0xc653('0x1f')](function(_0x2667ba){if(_0x2667ba){return _0x2667ba?{'count':_0x2f6040,'rows':_0x2667ba}:null;}})[_0xc653('0x1f')](respondWithResult(_0x2cbaa0,null))[_0xc653('0x3e')](handleError(_0x2cbaa0,null));};exports[_0xc653('0x4c')]=function(_0x17ecff,_0x58b98c,_0x396d91){return db[_0xc653('0x4d')][_0xc653('0x42')]({'where':{'id':_0x17ecff[_0xc653('0x40')]['id']}})[_0xc653('0x1f')](handleEntityNotFound(_0x58b98c,null))[_0xc653('0x1f')](function(_0x193499){if(_0x193499){return _0x193499['addActions'](_0x17ecff[_0xc653('0x44')]['ids'],_[_0xc653('0x48')](_0x17ecff[_0xc653('0x44')],[_0xc653('0x47'),'id'])||{});}})[_0xc653('0x1f')](respondWithResult(_0x58b98c,null))[_0xc653('0x3e')](handleError(_0x58b98c,null));};exports[_0xc653('0x4e')]=function(_0x292edc,_0x443a81,_0x2994af){var _0x301a84={};var _0xef7158={};var _0x47ef23;var _0x17c82c;return db[_0xc653('0x26')][_0xc653('0x4f')]({'where':{'id':_0x292edc['params']['id']}})[_0xc653('0x1f')](handleEntityNotFound(_0x443a81,null))['then'](function(_0x1283cb){if(_0x1283cb){_0x47ef23=_0x1283cb;_0xef7158[_0xc653('0x2b')]=_[_0xc653('0x2d')](db[_0xc653('0x4d')][_0xc653('0x27')]);_0xef7158[_0xc653('0x2c')]=_[_0xc653('0x2d')](_0x292edc['query']);_0xef7158[_0xc653('0x2e')]=_[_0xc653('0x2f')](_0xef7158[_0xc653('0x2b')],_0xef7158[_0xc653('0x2c')]);_0x301a84[_0xc653('0x30')]=_[_0xc653('0x2f')](_0xef7158[_0xc653('0x2b')],qs[_0xc653('0x31')](_0x292edc['query'][_0xc653('0x31')]));_0x301a84[_0xc653('0x30')]=_0x301a84[_0xc653('0x30')][_0xc653('0x41')]?_0x301a84['attributes']:_0xef7158['model'];_0x301a84[_0xc653('0x49')]=qs[_0xc653('0x34')](_0x292edc['query'][_0xc653('0x34')]);_0x301a84[_0xc653('0x35')]=qs[_0xc653('0x2e')](_['pick'](_0x292edc[_0xc653('0x2c')],_0xef7158[_0xc653('0x2e')]));if(_0x292edc[_0xc653('0x2c')][_0xc653('0x4a')]){_0x301a84[_0xc653('0x35')]=_[_0xc653('0x38')](_0x301a84[_0xc653('0x35')],{'$or':_['map'](_0x301a84[_0xc653('0x30')],function(_0x2f305c){var _0x3c7006={};_0x3c7006[_0x2f305c]={'$like':'%'+_0x292edc[_0xc653('0x2c')][_0xc653('0x4a')]+'%'};return _0x3c7006;})});}_0x301a84=_[_0xc653('0x38')]({},_0x301a84,_0x292edc[_0xc653('0x39')]);return _0x47ef23['getActions'](_0x301a84);}})[_0xc653('0x1f')](function(_0xcdaa41){if(_0xcdaa41){_0x17c82c=_0xcdaa41[_0xc653('0x41')];if(!_0x292edc[_0xc653('0x2c')]['hasOwnProperty']('nolimit')){_0x301a84[_0xc653('0x19')]=qs['limit'](_0x292edc[_0xc653('0x2c')][_0xc653('0x19')]);_0x301a84[_0xc653('0x16')]=qs[_0xc653('0x16')](_0x292edc[_0xc653('0x2c')][_0xc653('0x16')]);}return _0x47ef23[_0xc653('0x4e')](_0x301a84);}})[_0xc653('0x1f')](function(_0x4fca1a){if(_0x4fca1a){return _0x4fca1a?{'count':_0x17c82c,'rows':_0x4fca1a}:null;}})['then'](respondWithResult(_0x443a81,null))['catch'](handleError(_0x443a81,null));};
\ No newline at end of file
index 484c2a9..1b0b0ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['request-promise','../../config/environment','./automation.attributes','exports','Automation','lodash','api','moment','bluebird'];(function(_0x5054ae,_0x191b61){var _0x44bcfa=function(_0x1a8e54){while(--_0x1a8e54){_0x5054ae['push'](_0x5054ae['shift']());}};_0x44bcfa(++_0x191b61);}(_0x705f,0x113));var _0xf705=function(_0x34ced0,_0x21907f){_0x34ced0=_0x34ced0-0x0;var _0x3db58d=_0x705f[_0x34ced0];return _0x3db58d;};'use strict';var _=require(_0xf705('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf705('0x1'));var moment=require(_0xf705('0x2'));var BPromise=require(_0xf705('0x3'));var rp=require(_0xf705('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf705('0x5'));var attributes=require(_0xf705('0x6'));module[_0xf705('0x7')]=function(_0x542e97,_0x2bd0b2){return _0x542e97['define'](_0xf705('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4584=['lodash','util','api','moment','request-promise','path','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x348e02,_0x7a3c5){var _0x1ac44e=function(_0x121fca){while(--_0x121fca){_0x348e02['push'](_0x348e02['shift']());}};_0x1ac44e(++_0x7a3c5);}(_0x4584,0x108));var _0x4458=function(_0x50fe15,_0x4c1401){_0x50fe15=_0x50fe15-0x0;var _0x59299b=_0x4584[_0x50fe15];return _0x59299b;};'use strict';var _=require(_0x4458('0x0'));var util=require(_0x4458('0x1'));var logger=require('../../config/logger')(_0x4458('0x2'));var moment=require(_0x4458('0x3'));var BPromise=require('bluebird');var rp=require(_0x4458('0x4'));var fs=require('fs');var path=require(_0x4458('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4458('0x6'));module[_0x4458('0x7')]=function(_0x4b2ac2,_0x56f7dc){return _0x4b2ac2[_0x4458('0x8')](_0x4458('0x9'),attributes,{'tableName':_0x4458('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2cd70a5..1e99efe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['rpc','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x419c4a,_0x5c3638){var _0x11a290=function(_0x3b8c57){while(--_0x3b8c57){_0x419c4a['push'](_0x419c4a['shift']());}};_0x11a290(++_0x5c3638);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x55e1d1,_0x3c9376){_0x55e1d1=_0x55e1d1-0x0;var _0x1165db=_0xeb3b[_0x55e1d1];return _0x1165db;};'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')]('Automation,\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']('Automation,\x20%s,\x20%s',_0x406927,_0x4e7d99);_0x241dbb(_0x4e7d99);});});}
\ No newline at end of file
+var _0xac35=['request\x20sent','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Automation,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x5e5cf1,_0x19dbf6){var _0x3fe5c5=function(_0x307562){while(--_0x307562){_0x5e5cf1['push'](_0x5e5cf1['shift']());}};_0x3fe5c5(++_0x19dbf6);}(_0xac35,0x141));var _0x5ac3=function(_0x1d5501,_0x2f2f2d){_0x1d5501=_0x1d5501-0x0;var _0x485efc=_0xac35[_0x1d5501];return _0x485efc;};'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')]('Automation,\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')]('Automation,\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')]('Automation,\x20%s,\x20%s',_0x77dc9f,_0x18cad4);_0x1754d2(_0x18cad4);});});}
\ No newline at end of file
index 0dc09d9..b13fd0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f96=['update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./automation.controller','get','index','isAuthenticated','show','/:id/conditions','getConditions','getActions','post','/:id/actions','addActions','put','/:id'];(function(_0x1ccd8e,_0x391fdf){var _0x5a5895=function(_0x370c8e){while(--_0x370c8e){_0x1ccd8e['push'](_0x1ccd8e['shift']());}};_0x5a5895(++_0x391fdf);}(_0x5f96,0x75));var _0x65f9=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x5f96[_0x4b2436];return _0x4f5ab2;};'use strict';var multer=require(_0x65f9('0x0'));var util=require(_0x65f9('0x1'));var path=require(_0x65f9('0x2'));var timeout=require(_0x65f9('0x3'));var express=require(_0x65f9('0x4'));var router=express[_0x65f9('0x5')]();var fs_extra=require(_0x65f9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x65f9('0x7'));var config=require('../../config/environment');var controller=require(_0x65f9('0x8'));router[_0x65f9('0x9')]('/',auth['isAuthenticated'](),controller[_0x65f9('0xa')]);router[_0x65f9('0x9')]('/:id',auth[_0x65f9('0xb')](),controller[_0x65f9('0xc')]);router[_0x65f9('0x9')](_0x65f9('0xd'),auth[_0x65f9('0xb')](),controller[_0x65f9('0xe')]);router['get']('/:id/actions',auth[_0x65f9('0xb')](),controller[_0x65f9('0xf')]);router[_0x65f9('0x10')]('/',auth[_0x65f9('0xb')](),controller['create']);router[_0x65f9('0x10')]('/:id/conditions',auth[_0x65f9('0xb')](),controller['addConditions']);router[_0x65f9('0x10')](_0x65f9('0x11'),auth['isAuthenticated'](),controller[_0x65f9('0x12')]);router[_0x65f9('0x13')](_0x65f9('0x14'),auth['isAuthenticated'](),controller[_0x65f9('0x15')]);router['delete'](_0x65f9('0x14'),auth[_0x65f9('0xb')](),controller['destroy']);module[_0x65f9('0x16')]=router;
\ No newline at end of file
+var _0x5a96=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./automation.controller','get','/:id','isAuthenticated','getConditions','getActions','post','addConditions','addActions','put','update','delete','destroy','multer'];(function(_0x10314c,_0xcb149b){var _0x1dcf4d=function(_0x5c55d2){while(--_0x5c55d2){_0x10314c['push'](_0x10314c['shift']());}};_0x1dcf4d(++_0xcb149b);}(_0x5a96,0xbc));var _0x65a9=function(_0x35f15b,_0x387db3){_0x35f15b=_0x35f15b-0x0;var _0x262619=_0x5a96[_0x35f15b];return _0x262619;};'use strict';var multer=require(_0x65a9('0x0'));var util=require(_0x65a9('0x1'));var path=require('path');var timeout=require(_0x65a9('0x2'));var express=require(_0x65a9('0x3'));var router=express[_0x65a9('0x4')]();var fs_extra=require(_0x65a9('0x5'));var auth=require(_0x65a9('0x6'));var interaction=require(_0x65a9('0x7'));var config=require('../../config/environment');var controller=require(_0x65a9('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x65a9('0x9')](_0x65a9('0xa'),auth[_0x65a9('0xb')](),controller['show']);router[_0x65a9('0x9')]('/:id/conditions',auth[_0x65a9('0xb')](),controller[_0x65a9('0xc')]);router[_0x65a9('0x9')]('/:id/actions',auth[_0x65a9('0xb')](),controller[_0x65a9('0xd')]);router[_0x65a9('0xe')]('/',auth[_0x65a9('0xb')](),controller['create']);router[_0x65a9('0xe')]('/:id/conditions',auth[_0x65a9('0xb')](),controller[_0x65a9('0xf')]);router[_0x65a9('0xe')]('/:id/actions',auth['isAuthenticated'](),controller[_0x65a9('0x10')]);router[_0x65a9('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x65a9('0x12')]);router[_0x65a9('0x13')](_0x65a9('0xa'),auth[_0x65a9('0xb')](),controller[_0x65a9('0x14')]);module['exports']=router;
\ No newline at end of file
index 7db34df..fb354f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49a2=['onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never'];(function(_0x1ac6ec,_0x1f81fc){var _0x48a489=function(_0xf38b04){while(--_0xf38b04){_0x1ac6ec['push'](_0x1ac6ec['shift']());}};_0x48a489(++_0x1f81fc);}(_0x49a2,0x112));var _0x249a=function(_0x325a08,_0x571fff){_0x325a08=_0x325a08-0x0;var _0x436e01=_0x49a2[_0x325a08];return _0x436e01;};'use strict';var Sequelize=require(_0x249a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x249a('0x1')](_0x249a('0x2')),'allowNull':![],'defaultValue':_0x249a('0x2')},'description':{'type':Sequelize[_0x249a('0x3')]},'active':{'type':Sequelize[_0x249a('0x4')],'defaultValue':0x0,'comment':_0x249a('0x5')},'limitCalls':{'type':Sequelize[_0x249a('0x6')](0x4)[_0x249a('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x249a('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x249a('0x3')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x249a('0x3')]},'dialOriginateTimeout':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x9')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0xb')},'dialGlobalMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x249a('0xc')},'dialTimezone':{'type':Sequelize[_0x249a('0x3')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x249a('0x3')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x249a('0x1')]('always',_0x249a('0xd'),_0x249a('0xe')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x249a('0x4')],'defaultValue':0x0,'comment':_0x249a('0xf')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x249a('0x10')},'dialAMDGreeting':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x249a('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x249a('0x12')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x249a('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x249a('0x13')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x249a('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x249a('0x6')](0x9)[_0x249a('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x249a('0x1')](_0x249a('0x15'),_0x249a('0x16')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x249a('0x3')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x249a('0x17')},'dialCutDigit':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x18')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x19')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x1a')},'dialDropRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x249a('0x1c')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1d')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x249a('0x6')](0x3)[_0x249a('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x249a('0x6')](0x5)[_0x249a('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x249a('0x1f')}};
\ No newline at end of file
+var _0xcbe8=['#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,*,*,*','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'];(function(_0x575873,_0x2edd5f){var _0x2c1770=function(_0x4a16ee){while(--_0x4a16ee){_0x575873['push'](_0x575873['shift']());}};_0x2c1770(++_0x2edd5f);}(_0xcbe8,0x1e4));var _0x8cbe=function(_0x2b82c4,_0xe66331){_0x2b82c4=_0x2b82c4-0x0;var _0x523908=_0xcbe8[_0x2b82c4];return _0x523908;};'use strict';var Sequelize=require('sequelize');module[_0x8cbe('0x0')]={'name':{'type':Sequelize[_0x8cbe('0x1')],'unique':_0x8cbe('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x8cbe('0x3')](_0x8cbe('0x4')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0x8cbe('0x5')],'defaultValue':0x0,'comment':_0x8cbe('0x6')},'limitCalls':{'type':Sequelize[_0x8cbe('0x7')](0x4)[_0x8cbe('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x8cbe('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x8cbe('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x8cbe('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x8cbe('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8cbe('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x8cbe('0x7')](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8cbe('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x8cbe('0x7')](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8cbe('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'comment':_0x8cbe('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x8cbe('0x7')](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8cbe('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x8cbe('0xf')},'dialTimezone':{'type':Sequelize[_0x8cbe('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x8cbe('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x8cbe('0x3')]('always','never',_0x8cbe('0x11')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x8cbe('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x8cbe('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x8cbe('0x12')},'dialAMDGreeting':{'type':Sequelize[_0x8cbe('0x7')](0x9)[_0x8cbe('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x8cbe('0x7')](0x9)[_0x8cbe('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x8cbe('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x8cbe('0x7')](0x9)[_0x8cbe('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8cbe('0x14')},'dialAMDMinWordLength':{'type':Sequelize[_0x8cbe('0x7')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x8cbe('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x8cbe('0x7')](0x9)[_0x8cbe('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x8cbe('0x7')](0x9)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x8cbe('0x7')](0x5)[_0x8cbe('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x8cbe('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x8cbe('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0x8cbe('0x3')](_0x8cbe('0x18'),_0x8cbe('0x19')),'defaultValue':_0x8cbe('0x18')},'dialPrefix':{'type':Sequelize[_0x8cbe('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x8cbe('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x8cbe('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x8cbe('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x8cbe('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8cbe('0x1c')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8cbe('0x1d')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x8cbe('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8cbe('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x8cbe('0x7')](0x3)[_0x8cbe('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x8cbe('0x1f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x8cbe('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x8cbe('0x20')}};
\ No newline at end of file
index 65b8e19..b795686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd4d=['create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','user','getHoppers','findOne','CmHopper','hasOwnProperty','order','sort','findAll','rows','getHopperHistories','CampaignId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ContactId','ListId','scheduledAt','field','CmListId','toString','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','from','onlyIfOpen','fromQuery','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','NOW()','cm_hopper_additional_phones','cmHopperId','OrderBy','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','format','YYYY-MM-DD\x20HH:mm:ss','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','IvrCampaigns','UserProfileResource','name','send','map','Campaign','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','catch','show','params','keys','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcd4d,0xe4));var _0xdcd4=function(_0x1caf77,_0x304396){_0x1caf77=_0x1caf77-0x0;var _0x34b1d4=_0xcd4d[_0x1caf77];return _0x34b1d4;};'use strict';var emlformat=require(_0xdcd4('0x0'));var rimraf=require(_0xdcd4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdcd4('0x2'));var rp=require(_0xdcd4('0x3'));var moment=require(_0xdcd4('0x4'));var BPromise=require(_0xdcd4('0x5'));var Mustache=require(_0xdcd4('0x6'));var util=require(_0xdcd4('0x7'));var path=require(_0xdcd4('0x8'));var sox=require(_0xdcd4('0x9'));var csv=require(_0xdcd4('0xa'));var ejs=require(_0xdcd4('0xb'));var fs=require('fs');var fs_extra=require(_0xdcd4('0xc'));var _=require(_0xdcd4('0xd'));var squel=require(_0xdcd4('0xe'));var crypto=require(_0xdcd4('0xf'));var jsforce=require(_0xdcd4('0x10'));var deskjs=require(_0xdcd4('0x11'));var toCsv=require('to-csv');var querystring=require(_0xdcd4('0x12'));var Papa=require(_0xdcd4('0x13'));var Redis=require('ioredis');var authService=require(_0xdcd4('0x14'));var qs=require(_0xdcd4('0x15'));var as=require(_0xdcd4('0x16'));var hardwareService=require(_0xdcd4('0x17'));var logger=require(_0xdcd4('0x18'))('api');var utils=require(_0xdcd4('0x19'));var config=require(_0xdcd4('0x1a'));var licenseUtil=require(_0xdcd4('0x1b'));var db=require(_0xdcd4('0x1c'))['db'];function respondWithStatusCode(_0x2bf080,_0x553279){_0x553279=_0x553279||0xcc;return function(_0x12af2b){if(_0x12af2b){return _0x2bf080[_0xdcd4('0x1d')](_0x553279);}return _0x2bf080['status'](_0x553279)[_0xdcd4('0x1e')]();};}function respondWithResult(_0x16f7e5,_0x4aa877){_0x4aa877=_0x4aa877||0xc8;return function(_0x49f85e){if(_0x49f85e){return _0x16f7e5[_0xdcd4('0x1f')](_0x4aa877)[_0xdcd4('0x20')](_0x49f85e);}};}function respondWithFilteredResult(_0x282a21,_0x26b226){return function(_0x280598){if(_0x280598){var _0x3a1d3a=typeof _0x26b226[_0xdcd4('0x21')]===_0xdcd4('0x22')&&typeof _0x26b226[_0xdcd4('0x23')]===_0xdcd4('0x22');var _0xdb8b41=_0x280598['count'];var _0x579125=_0x3a1d3a?0x0:_0x26b226[_0xdcd4('0x21')];var _0x7682f8=_0x3a1d3a?_0x280598[_0xdcd4('0x24')]:_0x26b226[_0xdcd4('0x21')]+_0x26b226[_0xdcd4('0x23')];var _0x2433f0;if(_0x7682f8>=_0xdb8b41){_0x7682f8=_0xdb8b41;_0x2433f0=0xc8;}else{_0x2433f0=0xce;}_0x282a21[_0xdcd4('0x1f')](_0x2433f0);return _0x282a21[_0xdcd4('0x25')](_0xdcd4('0x26'),_0x579125+'-'+_0x7682f8+'/'+_0xdb8b41)[_0xdcd4('0x20')](_0x280598);}return null;};}function patchUpdates(_0x28bec2){return function(_0x2864c9){try{jsonpatch[_0xdcd4('0x27')](_0x2864c9,_0x28bec2,!![]);}catch(_0x196619){return BPromise[_0xdcd4('0x28')](_0x196619);}return _0x2864c9['save']();};}function saveUpdates(_0x21a330,_0xb4414e){return function(_0x520bb7){if(_0x520bb7){return _0x520bb7[_0xdcd4('0x29')](_0x21a330)[_0xdcd4('0x2a')](function(_0x17faa9){return _0x17faa9;});}return null;};}function removeEntity(_0x4d1e32,_0x46768f){return function(_0x427c92){if(_0x427c92){return _0x427c92[_0xdcd4('0x2b')]()['then'](function(){var _0x44dc04=_0x427c92[_0xdcd4('0x2c')]({'plain':!![]});var _0x48b046=_0xdcd4('0x2d');return db[_0xdcd4('0x2e')][_0xdcd4('0x2b')]({'where':{'type':_0x48b046,'resourceId':_0x44dc04['id']}})[_0xdcd4('0x2a')](function(){return _0x427c92;});})[_0xdcd4('0x2a')](function(){_0x4d1e32[_0xdcd4('0x1f')](0xcc)[_0xdcd4('0x1e')]();});}};}function handleEntityNotFound(_0xc9e4d4,_0x48dec1){return function(_0x134c00){if(!_0x134c00){_0xc9e4d4['sendStatus'](0x194);}return _0x134c00;};}function handleError(_0x114e94,_0x3d29d7){_0x3d29d7=_0x3d29d7||0x1f4;return function(_0x5b9f9d){logger['error'](_0x5b9f9d['stack']);if(_0x5b9f9d['name']){delete _0x5b9f9d[_0xdcd4('0x2f')];}_0x114e94[_0xdcd4('0x1f')](_0x3d29d7)[_0xdcd4('0x30')](_0x5b9f9d);};}exports['index']=function(_0x239479,_0x1d0937){var _0x565e9e={},_0x35d1e3={},_0x2e11d6={'count':0x0,'rows':[]};var _0x21aaaf=_[_0xdcd4('0x31')](db[_0xdcd4('0x32')][_0xdcd4('0x33')],function(_0x4a6a1f){return{'name':_0x4a6a1f[_0xdcd4('0x34')],'type':_0x4a6a1f['type'][_0xdcd4('0x35')]};});_0x35d1e3[_0xdcd4('0x36')]=_[_0xdcd4('0x31')](_0x21aaaf,_0xdcd4('0x2f'));_0x35d1e3[_0xdcd4('0x37')]=_['keys'](_0x239479['query']);_0x35d1e3[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x35d1e3[_0xdcd4('0x36')],_0x35d1e3['query']);_0x565e9e[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x35d1e3['model'],qs['fields'](_0x239479[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x565e9e[_0xdcd4('0x3a')]=_0x565e9e[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x565e9e[_0xdcd4('0x3a')]:_0x35d1e3['model'];if(!_0x239479[_0xdcd4('0x37')]['hasOwnProperty'](_0xdcd4('0x3d'))){_0x565e9e[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x239479['query'][_0xdcd4('0x23')]);_0x565e9e[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x239479[_0xdcd4('0x37')]['offset']);}_0x565e9e['order']=qs['sort'](_0x239479[_0xdcd4('0x37')]['sort']);_0x565e9e[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x239479[_0xdcd4('0x37')],_0x35d1e3[_0xdcd4('0x38')]),_0x21aaaf);if(_0x239479[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x565e9e[_0xdcd4('0x3e')]=_['merge'](_0x565e9e[_0xdcd4('0x3e')],{'$or':_['map'](_0x21aaaf,function(_0xf0b2c8){if(_0xf0b2c8[_0xdcd4('0x41')]!==_0xdcd4('0x42')){var _0x595e61={};_0x595e61[_0xf0b2c8[_0xdcd4('0x2f')]]={'$like':'%'+_0x239479[_0xdcd4('0x37')][_0xdcd4('0x40')]+'%'};return _0x595e61;}})});}_0x565e9e=_[_0xdcd4('0x43')]({},_0x565e9e,_0x239479[_0xdcd4('0x44')]);var _0x47717d={'where':_0x565e9e['where']};return db[_0xdcd4('0x32')][_0xdcd4('0x24')](_0x47717d)['then'](function(_0x82cd5e){_0x2e11d6['count']=_0x82cd5e;if(_0x239479[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x565e9e[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x32')]['findAll'](_0x565e9e);})[_0xdcd4('0x2a')](function(_0x30a725){_0x2e11d6['rows']=_0x30a725;return _0x2e11d6;})[_0xdcd4('0x2a')](respondWithFilteredResult(_0x1d0937,_0x565e9e))[_0xdcd4('0x47')](handleError(_0x1d0937,null));};exports[_0xdcd4('0x48')]=function(_0x392bc3,_0x1e53ec){var _0x35a808={'raw':![],'where':{'id':_0x392bc3[_0xdcd4('0x49')]['id']}},_0x193501={};_0x193501[_0xdcd4('0x36')]=_[_0xdcd4('0x4a')](db[_0xdcd4('0x32')]['rawAttributes']);_0x193501[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x392bc3[_0xdcd4('0x37')]);_0x193501[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x193501[_0xdcd4('0x36')],_0x193501[_0xdcd4('0x37')]);_0x35a808['attributes']=_['intersection'](_0x193501[_0xdcd4('0x36')],qs['fields'](_0x392bc3['query']['fields']));_0x35a808['attributes']=_0x35a808[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x35a808['attributes']:_0x193501[_0xdcd4('0x36')];if(_0x392bc3[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x35a808['include']=[{'all':!![]}];}_0x35a808=_[_0xdcd4('0x43')]({},_0x35a808,_0x392bc3[_0xdcd4('0x44')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4b')](_0x35a808)[_0xdcd4('0x2a')](handleEntityNotFound(_0x1e53ec,null))[_0xdcd4('0x2a')](respondWithResult(_0x1e53ec,null))[_0xdcd4('0x47')](handleError(_0x1e53ec,null));};exports[_0xdcd4('0x4c')]=function(_0x942d98,_0xa91417){return db['Campaign'][_0xdcd4('0x4c')](_0x942d98[_0xdcd4('0x4d')],{})[_0xdcd4('0x2a')](function(_0x472827){var _0x535de8=_0x942d98['user'][_0xdcd4('0x2c')]({'plain':!![]});if(!_0x535de8)throw new Error(_0xdcd4('0x4e'));if(_0x535de8['role']==='user'){var _0x5a1695=_0x472827[_0xdcd4('0x2c')]({'plain':!![]});var _0x4b7457=_0xdcd4('0x2d');return db[_0xdcd4('0x4f')][_0xdcd4('0x4b')]({'where':{'name':_0x4b7457,'userProfileId':_0x535de8[_0xdcd4('0x50')]},'raw':!![]})['then'](function(_0x1bc801){if(_0x1bc801&&_0x1bc801[_0xdcd4('0x51')]===0x0){return db['UserProfileResource'][_0xdcd4('0x4c')]({'name':_0x5a1695[_0xdcd4('0x2f')],'resourceId':_0x5a1695['id'],'type':_0x1bc801[_0xdcd4('0x2f')],'sectionId':_0x1bc801['id']},{})[_0xdcd4('0x2a')](function(){return _0x472827;});}else{return _0x472827;}})['catch'](function(_0x4ce6bc){logger[_0xdcd4('0x52')](_0xdcd4('0x53'),_0x4ce6bc);throw _0x4ce6bc;});}return _0x472827;})[_0xdcd4('0x2a')](respondWithResult(_0xa91417,0xc9))[_0xdcd4('0x47')](handleError(_0xa91417,null));};exports[_0xdcd4('0x54')]=function(_0x5ecd77,_0xa1e423){var _0x4a8f5b={'where':{'id':_0x5ecd77[_0xdcd4('0x49')]['id']}},_0x3b133b={};_0x3b133b[_0xdcd4('0x36')]=_[_0xdcd4('0x4a')](db[_0xdcd4('0x32')]['rawAttributes']);_0x4a8f5b['attributes']=_['intersection'](_0x3b133b[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x5ecd77[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x4a8f5b[_0xdcd4('0x3a')]=_0x4a8f5b[_0xdcd4('0x3a')]['length']?_0x4a8f5b[_0xdcd4('0x3a')]:_0x3b133b[_0xdcd4('0x36')];if(_0x5ecd77[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x4a8f5b[_0xdcd4('0x46')]=[{'all':!![]}];}_0x4a8f5b=_[_0xdcd4('0x43')]({},_0x4a8f5b,_0x5ecd77[_0xdcd4('0x44')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4b')](_0x4a8f5b)[_0xdcd4('0x2a')](handleEntityNotFound(_0xa1e423,null))[_0xdcd4('0x2a')](function(_0x1293f4){if(_0x1293f4){var _0x40ad2a=_0x1293f4['get']({'plain':!![]});_0x40ad2a=qs[_0xdcd4('0x55')](_0x40ad2a,['id',_0xdcd4('0x56'),'updatedAt']);_0x5ecd77[_0xdcd4('0x4d')]=_[_0xdcd4('0x55')](_0x5ecd77['body'],['id',_0xdcd4('0x56'),_0xdcd4('0x57')]);return db[_0xdcd4('0x32')][_0xdcd4('0x4c')](_[_0xdcd4('0x43')](_0x40ad2a,_0x5ecd77[_0xdcd4('0x4d')]),{'include':_0x5ecd77['query'][_0xdcd4('0x45')]?[{'all':!![]}]:undefined})['then'](function(_0x3bef7c){var _0xf41e7b=_0x5ecd77[_0xdcd4('0x58')]['get']({'plain':!![]});if(!_0xf41e7b)throw new Error(_0xdcd4('0x4e'));if(_0xf41e7b['role']==='user'){var _0x37d222=_0x3bef7c['get']({'plain':!![]});var _0x5a3402=_0xdcd4('0x2d');return db[_0xdcd4('0x4f')][_0xdcd4('0x4b')]({'where':{'name':_0x5a3402,'userProfileId':_0xf41e7b[_0xdcd4('0x50')]},'raw':!![]})[_0xdcd4('0x2a')](function(_0xb0bf48){if(_0xb0bf48&&_0xb0bf48[_0xdcd4('0x51')]===0x0){return db[_0xdcd4('0x2e')][_0xdcd4('0x4c')]({'name':_0x37d222[_0xdcd4('0x2f')],'resourceId':_0x37d222['id'],'type':_0xb0bf48[_0xdcd4('0x2f')],'sectionId':_0xb0bf48['id']},{})['then'](function(){return _0x3bef7c;});}else{return _0x3bef7c;}})['catch'](function(_0x3fa3de){logger[_0xdcd4('0x52')](_0xdcd4('0x53'),_0x3fa3de);throw _0x3fa3de;});}return _0x3bef7c;});}})[_0xdcd4('0x2a')](respondWithResult(_0xa1e423,0xc9))[_0xdcd4('0x47')](handleError(_0xa1e423,null));};exports['update']=function(_0x22e94a,_0x4048c9){if(_0x22e94a[_0xdcd4('0x4d')]['id']){delete _0x22e94a['body']['id'];}return db[_0xdcd4('0x32')]['find']({'where':{'id':_0x22e94a[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x4048c9,null))[_0xdcd4('0x2a')](saveUpdates(_0x22e94a[_0xdcd4('0x4d')],null))['then'](respondWithResult(_0x4048c9,null))[_0xdcd4('0x47')](handleError(_0x4048c9,null));};exports[_0xdcd4('0x2b')]=function(_0x1c117f,_0x580fca){return db['Campaign'][_0xdcd4('0x4b')]({'where':{'id':_0x1c117f[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x580fca,null))[_0xdcd4('0x2a')](removeEntity(_0x580fca,null))['catch'](handleError(_0x580fca,null));};exports[_0xdcd4('0x59')]=function(_0x1ebdc7,_0x1ebcc1,_0x18aaa1){var _0x466a49={'raw':!![],'where':{}};var _0x2c29b2={};var _0x107b2f={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')][_0xdcd4('0x5a')]({'where':{'id':_0x1ebdc7['params']['id']}})['then'](handleEntityNotFound(_0x1ebcc1,null))['then'](function(_0xda61ca){if(_0xda61ca){_0x2c29b2['model']=_[_0xdcd4('0x4a')](db[_0xdcd4('0x5b')][_0xdcd4('0x33')]);_0x2c29b2[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x1ebdc7['query']);_0x2c29b2[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x2c29b2['model'],_0x2c29b2[_0xdcd4('0x37')]);_0x466a49['attributes']=_[_0xdcd4('0x39')](_0x2c29b2[_0xdcd4('0x36')],qs['fields'](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x466a49[_0xdcd4('0x3a')]=_0x466a49['attributes']['length']?_0x466a49[_0xdcd4('0x3a')]:_0x2c29b2[_0xdcd4('0x36')];if(!_0x1ebdc7['query'][_0xdcd4('0x5c')]('nolimit')){_0x466a49[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x1ebdc7['query']['limit']);_0x466a49[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x21')]);}_0x466a49[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x466a49['where']=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x1ebdc7['query'],_0x2c29b2['filters']));_0x466a49['where']['CampaignId']=_0xda61ca['id'];if(_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x466a49['where']=_['merge'](_0x466a49[_0xdcd4('0x3e')],{'$or':_[_0xdcd4('0x31')](_0x466a49[_0xdcd4('0x3a')],function(_0x18a215){var _0x3e8390={};_0x3e8390[_0x18a215]={'$like':'%'+_0x1ebdc7['query']['filter']+'%'};return _0x3e8390;})});}_0x466a49=_[_0xdcd4('0x43')]({},_0x466a49,_0x1ebdc7[_0xdcd4('0x44')]);return db[_0xdcd4('0x5b')][_0xdcd4('0x24')]({'where':_0x466a49[_0xdcd4('0x3e')]})[_0xdcd4('0x2a')](function(_0xf623ed){_0x107b2f[_0xdcd4('0x24')]=_0xf623ed;if(_0x1ebdc7[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x466a49['include']=[{'all':!![]}];}return db[_0xdcd4('0x5b')][_0xdcd4('0x5f')](_0x466a49);})['then'](function(_0x55d517){_0x107b2f[_0xdcd4('0x60')]=_0x55d517;return _0x107b2f;});}})[_0xdcd4('0x2a')](respondWithFilteredResult(_0x1ebcc1,_0x466a49))[_0xdcd4('0x47')](handleError(_0x1ebcc1,null));};exports[_0xdcd4('0x61')]=function(_0x5a60cb,_0x3e4f01,_0x5d1853){var _0x36eb6d={'raw':!![],'where':{}};var _0x361725={};var _0x11f15d={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')]['findOne']({'where':{'id':_0x5a60cb[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0x3e4f01,null))[_0xdcd4('0x2a')](function(_0x22435c){if(_0x22435c){_0x361725[_0xdcd4('0x36')]=_['keys'](db['CmHopperHistory'][_0xdcd4('0x33')]);_0x361725[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x5a60cb['query']);_0x361725[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x361725['model'],_0x361725[_0xdcd4('0x37')]);_0x36eb6d[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x361725[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x5a60cb[_0xdcd4('0x37')]['fields']));_0x36eb6d[_0xdcd4('0x3a')]=_0x36eb6d[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x36eb6d[_0xdcd4('0x3a')]:_0x361725[_0xdcd4('0x36')];if(!_0x5a60cb['query'][_0xdcd4('0x5c')]('nolimit')){_0x36eb6d[_0xdcd4('0x23')]=qs['limit'](_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x23')]);_0x36eb6d[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x5a60cb[_0xdcd4('0x37')]['offset']);}_0x36eb6d[_0xdcd4('0x5d')]=qs['sort'](_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x36eb6d[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x5a60cb['query'],_0x361725[_0xdcd4('0x38')]));_0x36eb6d[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0x22435c['id'];if(_0x5a60cb['query'][_0xdcd4('0x40')]){_0x36eb6d[_0xdcd4('0x3e')]=_['merge'](_0x36eb6d['where'],{'$or':_['map'](_0x36eb6d[_0xdcd4('0x3a')],function(_0x5e2085){var _0x5dc68d={};_0x5dc68d[_0x5e2085]={'$like':'%'+_0x5a60cb[_0xdcd4('0x37')]['filter']+'%'};return _0x5dc68d;})});}_0x36eb6d=_[_0xdcd4('0x43')]({},_0x36eb6d,_0x5a60cb['options']);return db['CmHopperHistory'][_0xdcd4('0x24')]({'where':_0x36eb6d[_0xdcd4('0x3e')]})[_0xdcd4('0x2a')](function(_0x4d2b28){_0x11f15d['count']=_0x4d2b28;if(_0x5a60cb[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x36eb6d[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x63')]['findAll'](_0x36eb6d);})[_0xdcd4('0x2a')](function(_0x4ddc72){_0x11f15d[_0xdcd4('0x60')]=_0x4ddc72;return _0x11f15d;});}})['then'](respondWithFilteredResult(_0x3e4f01,_0x36eb6d))[_0xdcd4('0x47')](handleError(_0x3e4f01,null));};exports[_0xdcd4('0x64')]=function(_0x3060cf,_0xcf4b9c,_0x1691bc){var _0x4b8209={'raw':!![],'where':{}};var _0x1d18c2={};var _0x5b4fa3={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')]['findOne']({'where':{'id':_0x3060cf[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0xcf4b9c,null))['then'](function(_0xbcb5c1){if(_0xbcb5c1){_0x1d18c2[_0xdcd4('0x36')]=_['keys'](db[_0xdcd4('0x65')][_0xdcd4('0x33')]);_0x1d18c2[_0xdcd4('0x37')]=_['keys'](_0x3060cf[_0xdcd4('0x37')]);_0x1d18c2['filters']=_[_0xdcd4('0x39')](_0x1d18c2[_0xdcd4('0x36')],_0x1d18c2['query']);_0x4b8209[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x1d18c2[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x4b8209[_0xdcd4('0x3a')]=_0x4b8209[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x4b8209[_0xdcd4('0x3a')]:_0x1d18c2[_0xdcd4('0x36')];if(!_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x5c')]('nolimit')){_0x4b8209[_0xdcd4('0x23')]=qs['limit'](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x23')]);_0x4b8209[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x3060cf['query'][_0xdcd4('0x21')]);}_0x4b8209[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x4b8209[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x3060cf[_0xdcd4('0x37')],_0x1d18c2[_0xdcd4('0x38')]));_0x4b8209[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0xbcb5c1['id'];if(_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x4b8209[_0xdcd4('0x3e')]=_[_0xdcd4('0x43')](_0x4b8209['where'],{'$or':_[_0xdcd4('0x31')](_0x4b8209[_0xdcd4('0x3a')],function(_0x48606b){var _0x47acdd={};_0x47acdd[_0x48606b]={'$like':'%'+_0x3060cf['query']['filter']+'%'};return _0x47acdd;})});}_0x4b8209=_[_0xdcd4('0x43')]({},_0x4b8209,_0x3060cf[_0xdcd4('0x44')]);return db['CmHopperFinal'][_0xdcd4('0x24')]({'where':_0x4b8209['where']})[_0xdcd4('0x2a')](function(_0x2f2c6a){_0x5b4fa3[_0xdcd4('0x24')]=_0x2f2c6a;if(_0x3060cf[_0xdcd4('0x37')][_0xdcd4('0x45')]){_0x4b8209[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x65')][_0xdcd4('0x5f')](_0x4b8209);})[_0xdcd4('0x2a')](function(_0x71504a){_0x5b4fa3[_0xdcd4('0x60')]=_0x71504a;return _0x5b4fa3;});}})['then'](respondWithFilteredResult(_0xcf4b9c,_0x4b8209))[_0xdcd4('0x47')](handleError(_0xcf4b9c,null));};exports[_0xdcd4('0x66')]=function(_0x20c3a8,_0xbb14b4,_0xec7fbc){var _0xeae6ca={'raw':!![],'where':{}};var _0x5088ca={};var _0x2b62b2={'count':0x0,'rows':[]};return db[_0xdcd4('0x32')][_0xdcd4('0x5a')]({'where':{'id':_0x20c3a8[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0xbb14b4,null))[_0xdcd4('0x2a')](function(_0x50fc66){if(_0x50fc66){_0x5088ca['model']=_['keys'](db[_0xdcd4('0x67')][_0xdcd4('0x33')]);_0x5088ca[_0xdcd4('0x37')]=_['keys'](_0x20c3a8['query']);_0x5088ca[_0xdcd4('0x38')]=_['intersection'](_0x5088ca[_0xdcd4('0x36')],_0x5088ca[_0xdcd4('0x37')]);_0xeae6ca[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x5088ca[_0xdcd4('0x36')],qs[_0xdcd4('0x3b')](_0x20c3a8['query']['fields']));_0xeae6ca[_0xdcd4('0x3a')]=_0xeae6ca[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0xeae6ca[_0xdcd4('0x3a')]:_0x5088ca[_0xdcd4('0x36')];if(!_0x20c3a8['query'][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0xeae6ca[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x20c3a8['query'][_0xdcd4('0x23')]);_0xeae6ca['offset']=qs[_0xdcd4('0x21')](_0x20c3a8['query'][_0xdcd4('0x21')]);}_0xeae6ca[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x20c3a8[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0xeae6ca[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x20c3a8[_0xdcd4('0x37')],_0x5088ca[_0xdcd4('0x38')]));_0xeae6ca[_0xdcd4('0x3e')][_0xdcd4('0x62')]=_0x50fc66['id'];if(_0x20c3a8['query'][_0xdcd4('0x40')]){_0xeae6ca['where']=_['merge'](_0xeae6ca['where'],{'$or':_[_0xdcd4('0x31')](_0xeae6ca['attributes'],function(_0x490942){var _0x31f8f6={};_0x31f8f6[_0x490942]={'$like':'%'+_0x20c3a8['query'][_0xdcd4('0x40')]+'%'};return _0x31f8f6;})});}_0xeae6ca=_['merge']({},_0xeae6ca,_0x20c3a8[_0xdcd4('0x44')]);return db['CmHopperBlack'][_0xdcd4('0x24')]({'where':_0xeae6ca[_0xdcd4('0x3e')]})['then'](function(_0x5ee617){_0x2b62b2[_0xdcd4('0x24')]=_0x5ee617;if(_0x20c3a8[_0xdcd4('0x37')]['includeAll']){_0xeae6ca[_0xdcd4('0x46')]=[{'all':!![]}];}return db[_0xdcd4('0x67')][_0xdcd4('0x5f')](_0xeae6ca);})[_0xdcd4('0x2a')](function(_0x1c541c){_0x2b62b2[_0xdcd4('0x60')]=_0x1c541c;return _0x2b62b2;});}})[_0xdcd4('0x2a')](respondWithFilteredResult(_0xbb14b4,_0xeae6ca))[_0xdcd4('0x47')](handleError(_0xbb14b4,null));};exports[_0xdcd4('0x68')]=function(_0x21c063,_0x1b7a1c,_0x200a57){var _0x284285={};var _0x24a667={};var _0x90b65f;var _0x4d3413;return db['Campaign'][_0xdcd4('0x5a')]({'where':{'id':_0x21c063['params']['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x1b7a1c,null))[_0xdcd4('0x2a')](function(_0x20b053){if(_0x20b053){_0x90b65f=_0x20b053;_0x24a667[_0xdcd4('0x36')]=_['keys'](db[_0xdcd4('0x69')]['rawAttributes']);_0x24a667[_0xdcd4('0x37')]=_['keys'](_0x21c063[_0xdcd4('0x37')]);_0x24a667[_0xdcd4('0x38')]=_['intersection'](_0x24a667[_0xdcd4('0x36')],_0x24a667[_0xdcd4('0x37')]);_0x284285['attributes']=_[_0xdcd4('0x39')](_0x24a667['model'],qs[_0xdcd4('0x3b')](_0x21c063[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x284285[_0xdcd4('0x3a')]=_0x284285[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x284285[_0xdcd4('0x3a')]:_0x24a667[_0xdcd4('0x36')];_0x284285[_0xdcd4('0x5d')]=qs[_0xdcd4('0x5e')](_0x21c063['query'][_0xdcd4('0x5e')]);_0x284285[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_[_0xdcd4('0x3f')](_0x21c063['query'],_0x24a667['filters']));if(_0x21c063['query'][_0xdcd4('0x40')]){_0x284285[_0xdcd4('0x3e')]=_['merge'](_0x284285[_0xdcd4('0x3e')],{'$or':_[_0xdcd4('0x31')](_0x284285[_0xdcd4('0x3a')],function(_0x321767){var _0x489f09={};_0x489f09[_0x321767]={'$like':'%'+_0x21c063['query'][_0xdcd4('0x40')]+'%'};return _0x489f09;})});}_0x284285=_[_0xdcd4('0x43')]({},_0x284285,_0x21c063[_0xdcd4('0x44')]);return _0x90b65f[_0xdcd4('0x68')](_0x284285);}})[_0xdcd4('0x2a')](function(_0x3e21d1){if(_0x3e21d1){_0x4d3413=_0x3e21d1[_0xdcd4('0x3c')];if(!_0x21c063[_0xdcd4('0x37')][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0x284285[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x21c063['query'][_0xdcd4('0x23')]);_0x284285['offset']=qs['offset'](_0x21c063['query']['offset']);}return _0x90b65f['getLists'](_0x284285);}})[_0xdcd4('0x2a')](function(_0x134336){if(_0x134336){return _0x134336?{'count':_0x4d3413,'rows':_0x134336}:null;}})[_0xdcd4('0x2a')](respondWithResult(_0x1b7a1c,null))[_0xdcd4('0x47')](handleError(_0x1b7a1c,null));};exports['addLists']=function(_0x4f9012,_0x32d998,_0x1ed38c){var _0x429a22,_0x38dd8a;var _0x86ab25=[];var _0x41d0fc=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return db[_0xdcd4('0x32')]['find']({'where':{'id':_0x4f9012[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x32d998,null))['then'](function(_0x1ad268){if(_0x1ad268){_0x38dd8a=_0x1ad268;return _0x1ad268['addLists'](_0x4f9012[_0xdcd4('0x4d')][_0xdcd4('0x6a')],_['omit'](_0x4f9012['body'],[_0xdcd4('0x6a'),'id'])||{});}return null;})[_0xdcd4('0x6b')](function(_0x300987){var _0x51d4d1;var _0x1edd28;_0x429a22=_0x300987||[];var _0x4c08c6=[];if(_0x300987){for(var _0x27cc50=0x0;_0x27cc50<_0x300987[_0xdcd4('0x3c')];_0x27cc50+=0x1){var _0x2b012c=_0x300987[_0x27cc50][_0xdcd4('0x2c')]({'plain':!![]});_0x38dd8a[_0xdcd4('0x6c')]=_0x4f9012[_0xdcd4('0x4d')]['dialCheckDuplicateType']?_0x4f9012[_0xdcd4('0x4d')][_0xdcd4('0x6c')]:_0x38dd8a[_0xdcd4('0x6c')];switch(_0x38dd8a[_0xdcd4('0x6c')]){case _0xdcd4('0x6d'):_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')](_0xdcd4('0x70'))['fromQuery']([_0xdcd4('0x71'),'scheduledAt',_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel['select']()['field']('phone',_0xdcd4('0x71'))['field']('NOW()',_0xdcd4('0x74'))[_0xdcd4('0x75')]('id','ContactId')['field'](_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27','updatedAt')['from']('cm_contacts')['where']('deletedAt\x20IS\x20NULL')['where'](_0xdcd4('0x78'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0xdcd4('0x3e')](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x7b'))['from'](_0xdcd4('0x7c'))[_0xdcd4('0x3e')](_0xdcd4('0x7d'),_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')]()))[_0xdcd4('0x3e')](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x7e'))[_0xdcd4('0x7f')](_0xdcd4('0x70'))[_0xdcd4('0x3e')](_0xdcd4('0x7d'),_0x4f9012[_0xdcd4('0x49')]['id']['toString']())))[_0xdcd4('0x77')]();break;case _0xdcd4('0x80'):_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')](_0xdcd4('0x70'))[_0xdcd4('0x81')]([_0xdcd4('0x71'),'scheduledAt',_0xdcd4('0x72'),'ListId',_0xdcd4('0x62'),_0xdcd4('0x56'),'updatedAt'],squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')]('NOW()',_0xdcd4('0x74'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x2b012c[_0xdcd4('0x76')]['toString'](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))['field']('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x82'))[_0xdcd4('0x3e')](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x2b012c['CmListId']['toString']())[_0xdcd4('0x3e')](_0xdcd4('0x84'))['where'](_0xdcd4('0x79'),squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x7e'))[_0xdcd4('0x7f')](_0xdcd4('0x70'))['where']('CampaignId\x20=\x20?',_0x4f9012['params']['id'][_0xdcd4('0x77')]())))['toString']();break;default:_0x51d4d1=squel[_0xdcd4('0x6e')]()[_0xdcd4('0x6f')]('cm_hopper')['fromQuery']([_0xdcd4('0x71'),_0xdcd4('0x74'),_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()['field'](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x74'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x2b012c['CmListId']['toString'](),'ListId')['field'](_0x4f9012[_0xdcd4('0x49')]['id']['toString'](),_0xdcd4('0x62'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')]('cm_contacts')[_0xdcd4('0x3e')](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x84')))[_0xdcd4('0x77')]();}_0x1edd28=squel['insert']()[_0xdcd4('0x6f')](_0xdcd4('0x86'))[_0xdcd4('0x81')]([_0xdcd4('0x87'),'scheduledAt',_0xdcd4('0x71'),'OrderBy',_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')]('h.id','id')[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x74'))['field']('ci.item','phone')[_0xdcd4('0x75')]('ci.OrderBY',_0xdcd4('0x88'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x56'))[_0xdcd4('0x75')]('\x27'+_0x41d0fc+'\x27',_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x89'),'ci')[_0xdcd4('0x8a')](_0xdcd4('0x70'),'h',_0xdcd4('0x8b'))[_0xdcd4('0x3e')](_0xdcd4('0x8c'),_0x2b012c[_0xdcd4('0x76')][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x8d'),_0x4f9012[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')]())[_0xdcd4('0x3e')](_0xdcd4('0x8e'),_0x41d0fc))['toString']();_0x4c08c6[_0xdcd4('0x8f')](db[_0xdcd4('0x90')]['query'](_0x51d4d1));_0x86ab25[_0xdcd4('0x8f')](db[_0xdcd4('0x90')][_0xdcd4('0x37')](_0x1edd28));}return BPromise[_0xdcd4('0x91')](_0x4c08c6);}})[_0xdcd4('0x2a')](function(){return BPromise['all'](_0x86ab25);})['then'](function(){return _0x429a22;})['then'](respondWithResult(_0x32d998,null))[_0xdcd4('0x47')](handleError(_0x32d998,null));};exports['removeLists']=function(_0xae10e,_0x13a125,_0x2788ce){return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0xae10e[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x13a125,null))[_0xdcd4('0x2a')](function(_0x194306){if(_0x194306){return _0x194306[_0xdcd4('0x92')](_0xae10e[_0xdcd4('0x37')][_0xdcd4('0x6a')]);}})[_0xdcd4('0x2a')](function(_0x343557){if(_0x343557){return db[_0xdcd4('0x5b')][_0xdcd4('0x2b')]({'where':{'ListId':_0xae10e[_0xdcd4('0x37')][_0xdcd4('0x6a')],'CampaignId':_0xae10e[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](function(){return _0x343557;});}})[_0xdcd4('0x2a')](respondWithStatusCode(_0x13a125,null))[_0xdcd4('0x47')](handleError(_0x13a125,null));};exports[_0xdcd4('0x93')]=function(_0x4b1e67,_0x1ed2c2,_0x4b0223){var _0x425686={};var _0x297ab2={};var _0x56807e;var _0x39489f;return db['Campaign']['findOne']({'where':{'id':_0x4b1e67[_0xdcd4('0x49')]['id']}})[_0xdcd4('0x2a')](handleEntityNotFound(_0x1ed2c2,null))['then'](function(_0x48160d){if(_0x48160d){_0x56807e=_0x48160d;_0x297ab2[_0xdcd4('0x36')]=_['keys'](db['CmList'][_0xdcd4('0x33')]);_0x297ab2[_0xdcd4('0x37')]=_[_0xdcd4('0x4a')](_0x4b1e67[_0xdcd4('0x37')]);_0x297ab2[_0xdcd4('0x38')]=_[_0xdcd4('0x39')](_0x297ab2[_0xdcd4('0x36')],_0x297ab2[_0xdcd4('0x37')]);_0x425686[_0xdcd4('0x3a')]=_[_0xdcd4('0x39')](_0x297ab2['model'],qs[_0xdcd4('0x3b')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x3b')]));_0x425686[_0xdcd4('0x3a')]=_0x425686[_0xdcd4('0x3a')][_0xdcd4('0x3c')]?_0x425686['attributes']:_0x297ab2['model'];_0x425686['order']=qs[_0xdcd4('0x5e')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x5e')]);_0x425686[_0xdcd4('0x3e')]=qs[_0xdcd4('0x38')](_['pick'](_0x4b1e67[_0xdcd4('0x37')],_0x297ab2[_0xdcd4('0x38')]));if(_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x40')]){_0x425686['where']=_[_0xdcd4('0x43')](_0x425686[_0xdcd4('0x3e')],{'$or':_['map'](_0x425686[_0xdcd4('0x3a')],function(_0x5c9aea){var _0xe69bba={};_0xe69bba[_0x5c9aea]={'$like':'%'+_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x40')]+'%'};return _0xe69bba;})});}_0x425686=_[_0xdcd4('0x43')]({},_0x425686,_0x4b1e67[_0xdcd4('0x44')]);return _0x56807e['getBlackLists'](_0x425686);}})['then'](function(_0xb05f58){if(_0xb05f58){_0x39489f=_0xb05f58[_0xdcd4('0x3c')];if(!_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x5c')](_0xdcd4('0x3d'))){_0x425686[_0xdcd4('0x23')]=qs[_0xdcd4('0x23')](_0x4b1e67['query'][_0xdcd4('0x23')]);_0x425686[_0xdcd4('0x21')]=qs[_0xdcd4('0x21')](_0x4b1e67[_0xdcd4('0x37')][_0xdcd4('0x21')]);}return _0x56807e[_0xdcd4('0x93')](_0x425686);}})[_0xdcd4('0x2a')](function(_0x5c5701){if(_0x5c5701){return _0x5c5701?{'count':_0x39489f,'rows':_0x5c5701}:null;}})[_0xdcd4('0x2a')](respondWithResult(_0x1ed2c2,null))[_0xdcd4('0x47')](handleError(_0x1ed2c2,null));};exports[_0xdcd4('0x94')]=function(_0x34ac49,_0x254534,_0x39a9f7){var _0x28c9ed,_0x25ad01;var _0x27a265=[];var _0x3cb2b7=moment()[_0xdcd4('0x95')](_0xdcd4('0x96'));return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0x34ac49[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0x254534,null))[_0xdcd4('0x2a')](function(_0x2af907){if(_0x2af907){_0x25ad01=_0x2af907;return _0x2af907['addBlackLists'](_0x34ac49['body'][_0xdcd4('0x6a')],_[_0xdcd4('0x55')](_0x34ac49['body'],[_0xdcd4('0x6a'),'id'])||{});}return null;})['spread'](function(_0x1355c9){var _0x1d2275;var _0x4a71bb;_0x28c9ed=_0x1355c9||[];var _0x949c7a=[];if(_0x1355c9){for(var _0x877f3b=0x0;_0x877f3b<_0x1355c9[_0xdcd4('0x3c')];_0x877f3b+=0x1){var _0x58a1d=_0x1355c9[_0x877f3b][_0xdcd4('0x2c')]({'plain':!![]});_0x1d2275=squel['insert']()[_0xdcd4('0x6f')]('cm_hopper_black')[_0xdcd4('0x81')]([_0xdcd4('0x71'),_0xdcd4('0x72'),_0xdcd4('0x73'),_0xdcd4('0x62'),_0xdcd4('0x56'),_0xdcd4('0x57')],squel[_0xdcd4('0x7a')]()[_0xdcd4('0x75')](_0xdcd4('0x71'),_0xdcd4('0x71'))[_0xdcd4('0x75')]('id',_0xdcd4('0x72'))[_0xdcd4('0x75')](_0x58a1d[_0xdcd4('0x76')][_0xdcd4('0x77')](),_0xdcd4('0x73'))[_0xdcd4('0x75')](_0x34ac49[_0xdcd4('0x49')]['id'][_0xdcd4('0x77')](),_0xdcd4('0x62'))[_0xdcd4('0x75')](_0xdcd4('0x85'),'createdAt')[_0xdcd4('0x75')](_0xdcd4('0x85'),_0xdcd4('0x57'))[_0xdcd4('0x7f')](_0xdcd4('0x82'))['where'](_0xdcd4('0x83'))[_0xdcd4('0x3e')](_0xdcd4('0x78'),_0x58a1d[_0xdcd4('0x76')][_0xdcd4('0x77')]())['where'](_0xdcd4('0x84')))[_0xdcd4('0x77')]();_0x949c7a[_0xdcd4('0x8f')](db['sequelize']['query'](_0x1d2275));}return BPromise['all'](_0x949c7a);}})[_0xdcd4('0x2a')](function(){return _0x28c9ed;})[_0xdcd4('0x2a')](respondWithResult(_0x254534,null))[_0xdcd4('0x47')](handleError(_0x254534,null));};exports[_0xdcd4('0x97')]=function(_0x176a0d,_0xb3a822,_0x320c63){return db[_0xdcd4('0x32')][_0xdcd4('0x4b')]({'where':{'id':_0x176a0d[_0xdcd4('0x49')]['id']}})['then'](handleEntityNotFound(_0xb3a822,null))[_0xdcd4('0x2a')](function(_0x5e6226){if(_0x5e6226){return _0x5e6226[_0xdcd4('0x97')](_0x176a0d['query']['ids']);}})[_0xdcd4('0x2a')](function(_0x3341b7){if(_0x3341b7){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x176a0d[_0xdcd4('0x37')][_0xdcd4('0x6a')],'CampaignId':_0x176a0d['params']['id']}})[_0xdcd4('0x2a')](function(){return _0x3341b7;});}})[_0xdcd4('0x2a')](respondWithStatusCode(_0xb3a822,null))['catch'](handleError(_0xb3a822,null));};
\ No newline at end of file
+var _0xf9b6=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','get','IvrCampaigns','UserProfileResource','destroy','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','rows','params','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','omit','updatedAt','getHoppers','findOne','pick','CmHopper','findAll','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','ContactId','select','field','NOW()','scheduledAt','CmListId','toString','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','COALESCE(phone,\x27\x27)','cm_hopper_additional_phones','cmHopperId','OrderBy','h.id','ci.OrderBY','cm_contact_has_items','join','h.ListId\x20=\x20?','push','sequelize','removeLists','getBlackLists','addBlackLists','cm_hopper_black','all','removeBlackLists','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','squel','jsforce','desk.js','to-csv','querystring'];(function(_0x187592,_0x1a7ddf){var _0x6d049c=function(_0x4a3ae4){while(--_0x4a3ae4){_0x187592['push'](_0x187592['shift']());}};_0x6d049c(++_0x1a7ddf);}(_0xf9b6,0x114));var _0x6f9b=function(_0x2bf14b,_0x409fc8){_0x2bf14b=_0x2bf14b-0x0;var _0x32f2d4=_0xf9b6[_0x2bf14b];return _0x32f2d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6f9b('0x0'));var zipdir=require(_0x6f9b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f9b('0x2'));var moment=require('moment');var BPromise=require(_0x6f9b('0x3'));var Mustache=require(_0x6f9b('0x4'));var util=require(_0x6f9b('0x5'));var path=require(_0x6f9b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6f9b('0x7'));var crypto=require('crypto');var jsforce=require(_0x6f9b('0x8'));var deskjs=require(_0x6f9b('0x9'));var toCsv=require(_0x6f9b('0xa'));var querystring=require(_0x6f9b('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6f9b('0xc'));var qs=require(_0x6f9b('0xd'));var as=require(_0x6f9b('0xe'));var hardwareService=require(_0x6f9b('0xf'));var logger=require('../../config/logger')(_0x6f9b('0x10'));var utils=require(_0x6f9b('0x11'));var config=require(_0x6f9b('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f9b('0x13'))['db'];function respondWithStatusCode(_0xcd6c08,_0x2966cd){_0x2966cd=_0x2966cd||0xcc;return function(_0x15274c){if(_0x15274c){return _0xcd6c08[_0x6f9b('0x14')](_0x2966cd);}return _0xcd6c08['status'](_0x2966cd)[_0x6f9b('0x15')]();};}function respondWithResult(_0x1abaa2,_0x37848d){_0x37848d=_0x37848d||0xc8;return function(_0x22318d){if(_0x22318d){return _0x1abaa2['status'](_0x37848d)[_0x6f9b('0x16')](_0x22318d);}};}function respondWithFilteredResult(_0x2db6b9,_0x3c5889){return function(_0x3ee1dd){if(_0x3ee1dd){var _0x2692cd=typeof _0x3c5889[_0x6f9b('0x17')]===_0x6f9b('0x18')&&typeof _0x3c5889[_0x6f9b('0x19')]==='undefined';var _0x208fa0=_0x3ee1dd['count'];var _0x1f5369=_0x2692cd?0x0:_0x3c5889[_0x6f9b('0x17')];var _0x26bf2d=_0x2692cd?_0x3ee1dd[_0x6f9b('0x1a')]:_0x3c5889[_0x6f9b('0x17')]+_0x3c5889['limit'];var _0x564a89;if(_0x26bf2d>=_0x208fa0){_0x26bf2d=_0x208fa0;_0x564a89=0xc8;}else{_0x564a89=0xce;}_0x2db6b9[_0x6f9b('0x1b')](_0x564a89);return _0x2db6b9[_0x6f9b('0x1c')](_0x6f9b('0x1d'),_0x1f5369+'-'+_0x26bf2d+'/'+_0x208fa0)[_0x6f9b('0x16')](_0x3ee1dd);}return null;};}function patchUpdates(_0x323807){return function(_0x2d39b9){try{jsonpatch[_0x6f9b('0x1e')](_0x2d39b9,_0x323807,!![]);}catch(_0x55e80c){return BPromise[_0x6f9b('0x1f')](_0x55e80c);}return _0x2d39b9[_0x6f9b('0x20')]();};}function saveUpdates(_0x5cf08c,_0x14dd07){return function(_0x5829f3){if(_0x5829f3){return _0x5829f3['update'](_0x5cf08c)[_0x6f9b('0x21')](function(_0x1020cb){return _0x1020cb;});}return null;};}function removeEntity(_0x5cd2e9,_0x38f31d){return function(_0x53c051){if(_0x53c051){return _0x53c051['destroy']()[_0x6f9b('0x21')](function(){var _0x4a2518=_0x53c051[_0x6f9b('0x22')]({'plain':!![]});var _0x1ca142=_0x6f9b('0x23');return db[_0x6f9b('0x24')][_0x6f9b('0x25')]({'where':{'type':_0x1ca142,'resourceId':_0x4a2518['id']}})[_0x6f9b('0x21')](function(){return _0x53c051;});})[_0x6f9b('0x21')](function(){_0x5cd2e9[_0x6f9b('0x1b')](0xcc)[_0x6f9b('0x15')]();});}};}function handleEntityNotFound(_0x6e163a,_0x81f949){return function(_0x53d6b5){if(!_0x53d6b5){_0x6e163a[_0x6f9b('0x14')](0x194);}return _0x53d6b5;};}function handleError(_0x1350fb,_0xbbf1c9){_0xbbf1c9=_0xbbf1c9||0x1f4;return function(_0x51b667){logger['error'](_0x51b667[_0x6f9b('0x26')]);if(_0x51b667[_0x6f9b('0x27')]){delete _0x51b667[_0x6f9b('0x27')];}_0x1350fb['status'](_0xbbf1c9)[_0x6f9b('0x28')](_0x51b667);};}exports[_0x6f9b('0x29')]=function(_0x57cadc,_0x49655e){var _0x42ac06={},_0x23df54={},_0x15a40d={'count':0x0,'rows':[]};var _0x5b996f=_[_0x6f9b('0x2a')](db[_0x6f9b('0x2b')][_0x6f9b('0x2c')],function(_0x3210dd){return{'name':_0x3210dd[_0x6f9b('0x2d')],'type':_0x3210dd[_0x6f9b('0x2e')][_0x6f9b('0x2f')]};});_0x23df54[_0x6f9b('0x30')]=_[_0x6f9b('0x2a')](_0x5b996f,_0x6f9b('0x27'));_0x23df54['query']=_[_0x6f9b('0x31')](_0x57cadc[_0x6f9b('0x32')]);_0x23df54[_0x6f9b('0x33')]=_[_0x6f9b('0x34')](_0x23df54['model'],_0x23df54[_0x6f9b('0x32')]);_0x42ac06[_0x6f9b('0x35')]=_['intersection'](_0x23df54['model'],qs[_0x6f9b('0x36')](_0x57cadc[_0x6f9b('0x32')]['fields']));_0x42ac06[_0x6f9b('0x35')]=_0x42ac06[_0x6f9b('0x35')][_0x6f9b('0x37')]?_0x42ac06['attributes']:_0x23df54[_0x6f9b('0x30')];if(!_0x57cadc['query'][_0x6f9b('0x38')](_0x6f9b('0x39'))){_0x42ac06[_0x6f9b('0x19')]=qs[_0x6f9b('0x19')](_0x57cadc['query'][_0x6f9b('0x19')]);_0x42ac06[_0x6f9b('0x17')]=qs['offset'](_0x57cadc[_0x6f9b('0x32')][_0x6f9b('0x17')]);}_0x42ac06[_0x6f9b('0x3a')]=qs[_0x6f9b('0x3b')](_0x57cadc[_0x6f9b('0x32')]['sort']);_0x42ac06['where']=qs['filters'](_['pick'](_0x57cadc[_0x6f9b('0x32')],_0x23df54[_0x6f9b('0x33')]),_0x5b996f);if(_0x57cadc[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x42ac06[_0x6f9b('0x3d')]=_[_0x6f9b('0x3e')](_0x42ac06[_0x6f9b('0x3d')],{'$or':_[_0x6f9b('0x2a')](_0x5b996f,function(_0x816c3a){if(_0x816c3a[_0x6f9b('0x2e')]!==_0x6f9b('0x3f')){var _0x2ef7ea={};_0x2ef7ea[_0x816c3a[_0x6f9b('0x27')]]={'$like':'%'+_0x57cadc[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x2ef7ea;}})});}_0x42ac06=_[_0x6f9b('0x3e')]({},_0x42ac06,_0x57cadc[_0x6f9b('0x40')]);var _0xeab53e={'where':_0x42ac06[_0x6f9b('0x3d')]};return db[_0x6f9b('0x2b')][_0x6f9b('0x1a')](_0xeab53e)['then'](function(_0x5d448f){_0x15a40d[_0x6f9b('0x1a')]=_0x5d448f;if(_0x57cadc['query'][_0x6f9b('0x41')]){_0x42ac06[_0x6f9b('0x42')]=[{'all':!![]}];}return db['Campaign']['findAll'](_0x42ac06);})[_0x6f9b('0x21')](function(_0x29c739){_0x15a40d[_0x6f9b('0x43')]=_0x29c739;return _0x15a40d;})[_0x6f9b('0x21')](respondWithFilteredResult(_0x49655e,_0x42ac06))['catch'](handleError(_0x49655e,null));};exports['show']=function(_0x101ba7,_0xa1191c){var _0x35259b={'raw':![],'where':{'id':_0x101ba7[_0x6f9b('0x44')]['id']}},_0x1c829c={};_0x1c829c['model']=_[_0x6f9b('0x31')](db[_0x6f9b('0x2b')][_0x6f9b('0x2c')]);_0x1c829c[_0x6f9b('0x32')]=_['keys'](_0x101ba7['query']);_0x1c829c[_0x6f9b('0x33')]=_[_0x6f9b('0x34')](_0x1c829c[_0x6f9b('0x30')],_0x1c829c[_0x6f9b('0x32')]);_0x35259b[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x1c829c[_0x6f9b('0x30')],qs[_0x6f9b('0x36')](_0x101ba7['query'][_0x6f9b('0x36')]));_0x35259b[_0x6f9b('0x35')]=_0x35259b[_0x6f9b('0x35')][_0x6f9b('0x37')]?_0x35259b[_0x6f9b('0x35')]:_0x1c829c[_0x6f9b('0x30')];if(_0x101ba7['query']['includeAll']){_0x35259b[_0x6f9b('0x42')]=[{'all':!![]}];}_0x35259b=_[_0x6f9b('0x3e')]({},_0x35259b,_0x101ba7[_0x6f9b('0x40')]);return db['Campaign'][_0x6f9b('0x45')](_0x35259b)[_0x6f9b('0x21')](handleEntityNotFound(_0xa1191c,null))[_0x6f9b('0x21')](respondWithResult(_0xa1191c,null))[_0x6f9b('0x46')](handleError(_0xa1191c,null));};exports[_0x6f9b('0x47')]=function(_0x5a6cf2,_0xa66ed3){return db[_0x6f9b('0x2b')][_0x6f9b('0x47')](_0x5a6cf2[_0x6f9b('0x48')],{})['then'](function(_0x4c8b6d){var _0x24581a=_0x5a6cf2['user']['get']({'plain':!![]});if(!_0x24581a)throw new Error(_0x6f9b('0x49'));if(_0x24581a[_0x6f9b('0x4a')]===_0x6f9b('0x4b')){var _0x355500=_0x4c8b6d[_0x6f9b('0x22')]({'plain':!![]});var _0x358161='IvrCampaigns';return db[_0x6f9b('0x4c')]['find']({'where':{'name':_0x358161,'userProfileId':_0x24581a[_0x6f9b('0x4d')]},'raw':!![]})[_0x6f9b('0x21')](function(_0x1df873){if(_0x1df873&&_0x1df873[_0x6f9b('0x4e')]===0x0){return db['UserProfileResource'][_0x6f9b('0x47')]({'name':_0x355500['name'],'resourceId':_0x355500['id'],'type':_0x1df873[_0x6f9b('0x27')],'sectionId':_0x1df873['id']},{})[_0x6f9b('0x21')](function(){return _0x4c8b6d;});}else{return _0x4c8b6d;}})[_0x6f9b('0x46')](function(_0x54577f){logger[_0x6f9b('0x4f')](_0x6f9b('0x50'),_0x54577f);throw _0x54577f;});}return _0x4c8b6d;})[_0x6f9b('0x21')](respondWithResult(_0xa66ed3,0xc9))[_0x6f9b('0x46')](handleError(_0xa66ed3,null));};exports[_0x6f9b('0x51')]=function(_0x59a5be,_0x441614){var _0x5416a5={'where':{'id':_0x59a5be['params']['id']}},_0x54496f={};_0x54496f[_0x6f9b('0x30')]=_[_0x6f9b('0x31')](db[_0x6f9b('0x2b')][_0x6f9b('0x2c')]);_0x5416a5[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x54496f[_0x6f9b('0x30')],qs['fields'](_0x59a5be[_0x6f9b('0x32')][_0x6f9b('0x36')]));_0x5416a5[_0x6f9b('0x35')]=_0x5416a5[_0x6f9b('0x35')]['length']?_0x5416a5[_0x6f9b('0x35')]:_0x54496f[_0x6f9b('0x30')];if(_0x59a5be[_0x6f9b('0x32')][_0x6f9b('0x41')]){_0x5416a5[_0x6f9b('0x42')]=[{'all':!![]}];}_0x5416a5=_[_0x6f9b('0x3e')]({},_0x5416a5,_0x59a5be['options']);return db[_0x6f9b('0x2b')][_0x6f9b('0x45')](_0x5416a5)[_0x6f9b('0x21')](handleEntityNotFound(_0x441614,null))[_0x6f9b('0x21')](function(_0x175a37){if(_0x175a37){var _0x19800a=_0x175a37[_0x6f9b('0x22')]({'plain':!![]});_0x19800a=qs['omit'](_0x19800a,['id',_0x6f9b('0x52'),'updatedAt']);_0x59a5be['body']=_[_0x6f9b('0x53')](_0x59a5be[_0x6f9b('0x48')],['id',_0x6f9b('0x52'),_0x6f9b('0x54')]);return db[_0x6f9b('0x2b')][_0x6f9b('0x47')](_[_0x6f9b('0x3e')](_0x19800a,_0x59a5be[_0x6f9b('0x48')]),{'include':_0x59a5be['query'][_0x6f9b('0x41')]?[{'all':!![]}]:undefined})[_0x6f9b('0x21')](function(_0x35d34c){var _0x273fee=_0x59a5be['user']['get']({'plain':!![]});if(!_0x273fee)throw new Error(_0x6f9b('0x49'));if(_0x273fee[_0x6f9b('0x4a')]===_0x6f9b('0x4b')){var _0x67667a=_0x35d34c[_0x6f9b('0x22')]({'plain':!![]});var _0x23c383=_0x6f9b('0x23');return db[_0x6f9b('0x4c')][_0x6f9b('0x45')]({'where':{'name':_0x23c383,'userProfileId':_0x273fee[_0x6f9b('0x4d')]},'raw':!![]})[_0x6f9b('0x21')](function(_0x2ea41f){if(_0x2ea41f&&_0x2ea41f[_0x6f9b('0x4e')]===0x0){return db[_0x6f9b('0x24')][_0x6f9b('0x47')]({'name':_0x67667a['name'],'resourceId':_0x67667a['id'],'type':_0x2ea41f[_0x6f9b('0x27')],'sectionId':_0x2ea41f['id']},{})[_0x6f9b('0x21')](function(){return _0x35d34c;});}else{return _0x35d34c;}})[_0x6f9b('0x46')](function(_0x574983){logger['error'](_0x6f9b('0x50'),_0x574983);throw _0x574983;});}return _0x35d34c;});}})['then'](respondWithResult(_0x441614,0xc9))[_0x6f9b('0x46')](handleError(_0x441614,null));};exports['update']=function(_0x3ac222,_0x5374b6){if(_0x3ac222[_0x6f9b('0x48')]['id']){delete _0x3ac222[_0x6f9b('0x48')]['id'];}return db[_0x6f9b('0x2b')][_0x6f9b('0x45')]({'where':{'id':_0x3ac222['params']['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x5374b6,null))[_0x6f9b('0x21')](saveUpdates(_0x3ac222[_0x6f9b('0x48')],null))[_0x6f9b('0x21')](respondWithResult(_0x5374b6,null))['catch'](handleError(_0x5374b6,null));};exports[_0x6f9b('0x25')]=function(_0x552c60,_0x4fd03a){return db[_0x6f9b('0x2b')]['find']({'where':{'id':_0x552c60[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x4fd03a,null))[_0x6f9b('0x21')](removeEntity(_0x4fd03a,null))[_0x6f9b('0x46')](handleError(_0x4fd03a,null));};exports[_0x6f9b('0x55')]=function(_0x46e710,_0x3dffed,_0x398294){var _0x1cded1={'raw':!![],'where':{}};var _0xe23f48={};var _0x2ae1b6={'count':0x0,'rows':[]};return db[_0x6f9b('0x2b')][_0x6f9b('0x56')]({'where':{'id':_0x46e710[_0x6f9b('0x44')]['id']}})['then'](handleEntityNotFound(_0x3dffed,null))[_0x6f9b('0x21')](function(_0x29f24a){if(_0x29f24a){_0xe23f48[_0x6f9b('0x30')]=_[_0x6f9b('0x31')](db['CmHopper'][_0x6f9b('0x2c')]);_0xe23f48[_0x6f9b('0x32')]=_[_0x6f9b('0x31')](_0x46e710[_0x6f9b('0x32')]);_0xe23f48[_0x6f9b('0x33')]=_[_0x6f9b('0x34')](_0xe23f48['model'],_0xe23f48[_0x6f9b('0x32')]);_0x1cded1['attributes']=_[_0x6f9b('0x34')](_0xe23f48[_0x6f9b('0x30')],qs[_0x6f9b('0x36')](_0x46e710[_0x6f9b('0x32')][_0x6f9b('0x36')]));_0x1cded1[_0x6f9b('0x35')]=_0x1cded1[_0x6f9b('0x35')]['length']?_0x1cded1[_0x6f9b('0x35')]:_0xe23f48[_0x6f9b('0x30')];if(!_0x46e710['query'][_0x6f9b('0x38')](_0x6f9b('0x39'))){_0x1cded1['limit']=qs['limit'](_0x46e710[_0x6f9b('0x32')]['limit']);_0x1cded1[_0x6f9b('0x17')]=qs['offset'](_0x46e710['query'][_0x6f9b('0x17')]);}_0x1cded1['order']=qs[_0x6f9b('0x3b')](_0x46e710[_0x6f9b('0x32')][_0x6f9b('0x3b')]);_0x1cded1[_0x6f9b('0x3d')]=qs[_0x6f9b('0x33')](_[_0x6f9b('0x57')](_0x46e710[_0x6f9b('0x32')],_0xe23f48['filters']));_0x1cded1['where']['CampaignId']=_0x29f24a['id'];if(_0x46e710[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x1cded1['where']=_[_0x6f9b('0x3e')](_0x1cded1[_0x6f9b('0x3d')],{'$or':_[_0x6f9b('0x2a')](_0x1cded1[_0x6f9b('0x35')],function(_0x97434e){var _0x40540a={};_0x40540a[_0x97434e]={'$like':'%'+_0x46e710[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x40540a;})});}_0x1cded1=_['merge']({},_0x1cded1,_0x46e710[_0x6f9b('0x40')]);return db[_0x6f9b('0x58')][_0x6f9b('0x1a')]({'where':_0x1cded1[_0x6f9b('0x3d')]})['then'](function(_0x2b1f68){_0x2ae1b6[_0x6f9b('0x1a')]=_0x2b1f68;if(_0x46e710[_0x6f9b('0x32')][_0x6f9b('0x41')]){_0x1cded1[_0x6f9b('0x42')]=[{'all':!![]}];}return db[_0x6f9b('0x58')][_0x6f9b('0x59')](_0x1cded1);})[_0x6f9b('0x21')](function(_0x548df0){_0x2ae1b6[_0x6f9b('0x43')]=_0x548df0;return _0x2ae1b6;});}})[_0x6f9b('0x21')](respondWithFilteredResult(_0x3dffed,_0x1cded1))[_0x6f9b('0x46')](handleError(_0x3dffed,null));};exports[_0x6f9b('0x5a')]=function(_0x158dd3,_0x575aab,_0x5eb1ef){var _0x45e026={'raw':!![],'where':{}};var _0x185529={};var _0x37d6a4={'count':0x0,'rows':[]};return db[_0x6f9b('0x2b')][_0x6f9b('0x56')]({'where':{'id':_0x158dd3['params']['id']}})['then'](handleEntityNotFound(_0x575aab,null))['then'](function(_0x2a136c){if(_0x2a136c){_0x185529[_0x6f9b('0x30')]=_[_0x6f9b('0x31')](db[_0x6f9b('0x5b')][_0x6f9b('0x2c')]);_0x185529['query']=_[_0x6f9b('0x31')](_0x158dd3[_0x6f9b('0x32')]);_0x185529[_0x6f9b('0x33')]=_[_0x6f9b('0x34')](_0x185529['model'],_0x185529[_0x6f9b('0x32')]);_0x45e026['attributes']=_[_0x6f9b('0x34')](_0x185529[_0x6f9b('0x30')],qs[_0x6f9b('0x36')](_0x158dd3[_0x6f9b('0x32')][_0x6f9b('0x36')]));_0x45e026[_0x6f9b('0x35')]=_0x45e026[_0x6f9b('0x35')][_0x6f9b('0x37')]?_0x45e026[_0x6f9b('0x35')]:_0x185529['model'];if(!_0x158dd3[_0x6f9b('0x32')]['hasOwnProperty'](_0x6f9b('0x39'))){_0x45e026['limit']=qs[_0x6f9b('0x19')](_0x158dd3['query'][_0x6f9b('0x19')]);_0x45e026[_0x6f9b('0x17')]=qs[_0x6f9b('0x17')](_0x158dd3[_0x6f9b('0x32')][_0x6f9b('0x17')]);}_0x45e026[_0x6f9b('0x3a')]=qs[_0x6f9b('0x3b')](_0x158dd3[_0x6f9b('0x32')]['sort']);_0x45e026[_0x6f9b('0x3d')]=qs[_0x6f9b('0x33')](_[_0x6f9b('0x57')](_0x158dd3[_0x6f9b('0x32')],_0x185529[_0x6f9b('0x33')]));_0x45e026[_0x6f9b('0x3d')][_0x6f9b('0x5c')]=_0x2a136c['id'];if(_0x158dd3[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x45e026[_0x6f9b('0x3d')]=_['merge'](_0x45e026['where'],{'$or':_[_0x6f9b('0x2a')](_0x45e026['attributes'],function(_0x18500d){var _0x25173e={};_0x25173e[_0x18500d]={'$like':'%'+_0x158dd3[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x25173e;})});}_0x45e026=_[_0x6f9b('0x3e')]({},_0x45e026,_0x158dd3[_0x6f9b('0x40')]);return db[_0x6f9b('0x5b')][_0x6f9b('0x1a')]({'where':_0x45e026[_0x6f9b('0x3d')]})[_0x6f9b('0x21')](function(_0x384a2f){_0x37d6a4['count']=_0x384a2f;if(_0x158dd3[_0x6f9b('0x32')][_0x6f9b('0x41')]){_0x45e026[_0x6f9b('0x42')]=[{'all':!![]}];}return db[_0x6f9b('0x5b')][_0x6f9b('0x59')](_0x45e026);})['then'](function(_0xffa176){_0x37d6a4[_0x6f9b('0x43')]=_0xffa176;return _0x37d6a4;});}})[_0x6f9b('0x21')](respondWithFilteredResult(_0x575aab,_0x45e026))[_0x6f9b('0x46')](handleError(_0x575aab,null));};exports[_0x6f9b('0x5d')]=function(_0x57d585,_0x23a04c,_0x37dbf5){var _0x4753db={'raw':!![],'where':{}};var _0x481258={};var _0x1d3f47={'count':0x0,'rows':[]};return db[_0x6f9b('0x2b')]['findOne']({'where':{'id':_0x57d585[_0x6f9b('0x44')]['id']}})['then'](handleEntityNotFound(_0x23a04c,null))[_0x6f9b('0x21')](function(_0x58a619){if(_0x58a619){_0x481258['model']=_[_0x6f9b('0x31')](db[_0x6f9b('0x5e')][_0x6f9b('0x2c')]);_0x481258[_0x6f9b('0x32')]=_[_0x6f9b('0x31')](_0x57d585[_0x6f9b('0x32')]);_0x481258['filters']=_['intersection'](_0x481258[_0x6f9b('0x30')],_0x481258[_0x6f9b('0x32')]);_0x4753db[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x481258[_0x6f9b('0x30')],qs[_0x6f9b('0x36')](_0x57d585['query']['fields']));_0x4753db[_0x6f9b('0x35')]=_0x4753db[_0x6f9b('0x35')][_0x6f9b('0x37')]?_0x4753db[_0x6f9b('0x35')]:_0x481258[_0x6f9b('0x30')];if(!_0x57d585[_0x6f9b('0x32')][_0x6f9b('0x38')](_0x6f9b('0x39'))){_0x4753db['limit']=qs[_0x6f9b('0x19')](_0x57d585[_0x6f9b('0x32')]['limit']);_0x4753db['offset']=qs[_0x6f9b('0x17')](_0x57d585['query'][_0x6f9b('0x17')]);}_0x4753db[_0x6f9b('0x3a')]=qs[_0x6f9b('0x3b')](_0x57d585[_0x6f9b('0x32')][_0x6f9b('0x3b')]);_0x4753db[_0x6f9b('0x3d')]=qs[_0x6f9b('0x33')](_[_0x6f9b('0x57')](_0x57d585[_0x6f9b('0x32')],_0x481258['filters']));_0x4753db['where'][_0x6f9b('0x5c')]=_0x58a619['id'];if(_0x57d585[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x4753db[_0x6f9b('0x3d')]=_[_0x6f9b('0x3e')](_0x4753db[_0x6f9b('0x3d')],{'$or':_[_0x6f9b('0x2a')](_0x4753db[_0x6f9b('0x35')],function(_0xa1945a){var _0x24fcd9={};_0x24fcd9[_0xa1945a]={'$like':'%'+_0x57d585[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x24fcd9;})});}_0x4753db=_[_0x6f9b('0x3e')]({},_0x4753db,_0x57d585[_0x6f9b('0x40')]);return db['CmHopperFinal'][_0x6f9b('0x1a')]({'where':_0x4753db[_0x6f9b('0x3d')]})[_0x6f9b('0x21')](function(_0x12a24f){_0x1d3f47[_0x6f9b('0x1a')]=_0x12a24f;if(_0x57d585[_0x6f9b('0x32')][_0x6f9b('0x41')]){_0x4753db[_0x6f9b('0x42')]=[{'all':!![]}];}return db[_0x6f9b('0x5e')][_0x6f9b('0x59')](_0x4753db);})[_0x6f9b('0x21')](function(_0x3f2ae7){_0x1d3f47['rows']=_0x3f2ae7;return _0x1d3f47;});}})[_0x6f9b('0x21')](respondWithFilteredResult(_0x23a04c,_0x4753db))[_0x6f9b('0x46')](handleError(_0x23a04c,null));};exports[_0x6f9b('0x5f')]=function(_0x1cccf6,_0xbba314,_0xcc59d4){var _0x18b55f={'raw':!![],'where':{}};var _0x41179e={};var _0xb36284={'count':0x0,'rows':[]};return db[_0x6f9b('0x2b')][_0x6f9b('0x56')]({'where':{'id':_0x1cccf6[_0x6f9b('0x44')]['id']}})['then'](handleEntityNotFound(_0xbba314,null))[_0x6f9b('0x21')](function(_0x3b84f2){if(_0x3b84f2){_0x41179e['model']=_[_0x6f9b('0x31')](db[_0x6f9b('0x60')][_0x6f9b('0x2c')]);_0x41179e[_0x6f9b('0x32')]=_[_0x6f9b('0x31')](_0x1cccf6[_0x6f9b('0x32')]);_0x41179e['filters']=_[_0x6f9b('0x34')](_0x41179e['model'],_0x41179e[_0x6f9b('0x32')]);_0x18b55f[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x41179e[_0x6f9b('0x30')],qs[_0x6f9b('0x36')](_0x1cccf6['query']['fields']));_0x18b55f['attributes']=_0x18b55f[_0x6f9b('0x35')]['length']?_0x18b55f['attributes']:_0x41179e[_0x6f9b('0x30')];if(!_0x1cccf6[_0x6f9b('0x32')][_0x6f9b('0x38')]('nolimit')){_0x18b55f[_0x6f9b('0x19')]=qs['limit'](_0x1cccf6['query'][_0x6f9b('0x19')]);_0x18b55f['offset']=qs[_0x6f9b('0x17')](_0x1cccf6[_0x6f9b('0x32')][_0x6f9b('0x17')]);}_0x18b55f['order']=qs[_0x6f9b('0x3b')](_0x1cccf6[_0x6f9b('0x32')][_0x6f9b('0x3b')]);_0x18b55f[_0x6f9b('0x3d')]=qs[_0x6f9b('0x33')](_[_0x6f9b('0x57')](_0x1cccf6['query'],_0x41179e['filters']));_0x18b55f[_0x6f9b('0x3d')][_0x6f9b('0x5c')]=_0x3b84f2['id'];if(_0x1cccf6[_0x6f9b('0x32')]['filter']){_0x18b55f[_0x6f9b('0x3d')]=_['merge'](_0x18b55f[_0x6f9b('0x3d')],{'$or':_[_0x6f9b('0x2a')](_0x18b55f[_0x6f9b('0x35')],function(_0x4367eb){var _0x1c9082={};_0x1c9082[_0x4367eb]={'$like':'%'+_0x1cccf6[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x1c9082;})});}_0x18b55f=_[_0x6f9b('0x3e')]({},_0x18b55f,_0x1cccf6['options']);return db[_0x6f9b('0x60')][_0x6f9b('0x1a')]({'where':_0x18b55f[_0x6f9b('0x3d')]})[_0x6f9b('0x21')](function(_0x3d725c){_0xb36284[_0x6f9b('0x1a')]=_0x3d725c;if(_0x1cccf6[_0x6f9b('0x32')][_0x6f9b('0x41')]){_0x18b55f[_0x6f9b('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x6f9b('0x59')](_0x18b55f);})[_0x6f9b('0x21')](function(_0x64c782){_0xb36284[_0x6f9b('0x43')]=_0x64c782;return _0xb36284;});}})[_0x6f9b('0x21')](respondWithFilteredResult(_0xbba314,_0x18b55f))[_0x6f9b('0x46')](handleError(_0xbba314,null));};exports[_0x6f9b('0x61')]=function(_0x27d9f2,_0x2e0887,_0x392bd2){var _0x4f239a={};var _0x227d42={};var _0x1ee15e;var _0xb35d44;return db[_0x6f9b('0x2b')][_0x6f9b('0x56')]({'where':{'id':_0x27d9f2[_0x6f9b('0x44')]['id']}})['then'](handleEntityNotFound(_0x2e0887,null))['then'](function(_0x358b29){if(_0x358b29){_0x1ee15e=_0x358b29;_0x227d42[_0x6f9b('0x30')]=_[_0x6f9b('0x31')](db[_0x6f9b('0x62')][_0x6f9b('0x2c')]);_0x227d42[_0x6f9b('0x32')]=_[_0x6f9b('0x31')](_0x27d9f2[_0x6f9b('0x32')]);_0x227d42['filters']=_[_0x6f9b('0x34')](_0x227d42[_0x6f9b('0x30')],_0x227d42[_0x6f9b('0x32')]);_0x4f239a[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x227d42['model'],qs['fields'](_0x27d9f2[_0x6f9b('0x32')][_0x6f9b('0x36')]));_0x4f239a[_0x6f9b('0x35')]=_0x4f239a[_0x6f9b('0x35')][_0x6f9b('0x37')]?_0x4f239a[_0x6f9b('0x35')]:_0x227d42['model'];_0x4f239a['order']=qs['sort'](_0x27d9f2[_0x6f9b('0x32')][_0x6f9b('0x3b')]);_0x4f239a[_0x6f9b('0x3d')]=qs[_0x6f9b('0x33')](_[_0x6f9b('0x57')](_0x27d9f2[_0x6f9b('0x32')],_0x227d42[_0x6f9b('0x33')]));if(_0x27d9f2[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x4f239a['where']=_['merge'](_0x4f239a['where'],{'$or':_[_0x6f9b('0x2a')](_0x4f239a[_0x6f9b('0x35')],function(_0x5c554d){var _0x1a6255={};_0x1a6255[_0x5c554d]={'$like':'%'+_0x27d9f2['query'][_0x6f9b('0x3c')]+'%'};return _0x1a6255;})});}_0x4f239a=_['merge']({},_0x4f239a,_0x27d9f2[_0x6f9b('0x40')]);return _0x1ee15e[_0x6f9b('0x61')](_0x4f239a);}})['then'](function(_0x10c19d){if(_0x10c19d){_0xb35d44=_0x10c19d[_0x6f9b('0x37')];if(!_0x27d9f2['query'][_0x6f9b('0x38')]('nolimit')){_0x4f239a[_0x6f9b('0x19')]=qs[_0x6f9b('0x19')](_0x27d9f2['query'][_0x6f9b('0x19')]);_0x4f239a[_0x6f9b('0x17')]=qs[_0x6f9b('0x17')](_0x27d9f2[_0x6f9b('0x32')][_0x6f9b('0x17')]);}return _0x1ee15e[_0x6f9b('0x61')](_0x4f239a);}})[_0x6f9b('0x21')](function(_0x1bf1d2){if(_0x1bf1d2){return _0x1bf1d2?{'count':_0xb35d44,'rows':_0x1bf1d2}:null;}})[_0x6f9b('0x21')](respondWithResult(_0x2e0887,null))[_0x6f9b('0x46')](handleError(_0x2e0887,null));};exports[_0x6f9b('0x63')]=function(_0x107111,_0x174f51,_0x3d09ce){var _0x5c2448,_0x29b5a1;var _0x212e7c=[];var _0x4aba72=moment()['format'](_0x6f9b('0x64'));return db['Campaign'][_0x6f9b('0x45')]({'where':{'id':_0x107111[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x174f51,null))['then'](function(_0xcd9fee){if(_0xcd9fee){_0x29b5a1=_0xcd9fee;return _0xcd9fee[_0x6f9b('0x63')](_0x107111[_0x6f9b('0x48')][_0x6f9b('0x65')],_[_0x6f9b('0x53')](_0x107111[_0x6f9b('0x48')],[_0x6f9b('0x65'),'id'])||{});}return null;})[_0x6f9b('0x66')](function(_0x17d7d6){var _0x4d4d12;var _0x69e05f;_0x5c2448=_0x17d7d6||[];var _0x1910a3=[];if(_0x17d7d6){for(var _0x4e639e=0x0;_0x4e639e<_0x17d7d6['length'];_0x4e639e+=0x1){var _0x1ae694=_0x17d7d6[_0x4e639e][_0x6f9b('0x22')]({'plain':!![]});_0x29b5a1[_0x6f9b('0x67')]=_0x107111[_0x6f9b('0x48')]['dialCheckDuplicateType']?_0x107111['body'][_0x6f9b('0x67')]:_0x29b5a1[_0x6f9b('0x67')];switch(_0x29b5a1[_0x6f9b('0x67')]){case _0x6f9b('0x68'):_0x4d4d12=squel[_0x6f9b('0x69')]()[_0x6f9b('0x6a')](_0x6f9b('0x6b'))[_0x6f9b('0x6c')]([_0x6f9b('0x6d'),'scheduledAt',_0x6f9b('0x6e'),'ListId',_0x6f9b('0x5c'),_0x6f9b('0x52'),'updatedAt'],squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')]('phone',_0x6f9b('0x6d'))['field'](_0x6f9b('0x71'),_0x6f9b('0x72'))['field']('id',_0x6f9b('0x6e'))[_0x6f9b('0x70')](_0x1ae694[_0x6f9b('0x73')][_0x6f9b('0x74')](),_0x6f9b('0x75'))['field'](_0x107111[_0x6f9b('0x44')]['id'][_0x6f9b('0x74')](),'CampaignId')[_0x6f9b('0x70')]('\x27'+_0x4aba72+'\x27',_0x6f9b('0x52'))[_0x6f9b('0x70')]('\x27'+_0x4aba72+'\x27',_0x6f9b('0x54'))[_0x6f9b('0x76')](_0x6f9b('0x77'))['where'](_0x6f9b('0x78'))[_0x6f9b('0x3d')](_0x6f9b('0x79'),_0x1ae694[_0x6f9b('0x73')][_0x6f9b('0x74')]())[_0x6f9b('0x3d')](_0x6f9b('0x7a'))[_0x6f9b('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')]('COALESCE(calleridnum,\x27\x27)')[_0x6f9b('0x76')](_0x6f9b('0x7b'))[_0x6f9b('0x3d')](_0x6f9b('0x7c'),_0x107111[_0x6f9b('0x44')]['id']['toString']()))['where'](_0x6f9b('0x7d'),squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')[_0x6f9b('0x3d')](_0x6f9b('0x7c'),_0x107111[_0x6f9b('0x44')]['id'][_0x6f9b('0x74')]())))[_0x6f9b('0x74')]();break;case _0x6f9b('0x7e'):_0x4d4d12=squel[_0x6f9b('0x69')]()['into'](_0x6f9b('0x6b'))['fromQuery']([_0x6f9b('0x6d'),_0x6f9b('0x72'),_0x6f9b('0x6e'),_0x6f9b('0x75'),_0x6f9b('0x5c'),_0x6f9b('0x52'),_0x6f9b('0x54')],squel['select']()[_0x6f9b('0x70')]('phone',_0x6f9b('0x6d'))[_0x6f9b('0x70')](_0x6f9b('0x71'),_0x6f9b('0x72'))['field']('id','ContactId')[_0x6f9b('0x70')](_0x1ae694[_0x6f9b('0x73')][_0x6f9b('0x74')](),'ListId')[_0x6f9b('0x70')](_0x107111[_0x6f9b('0x44')]['id'][_0x6f9b('0x74')](),_0x6f9b('0x5c'))[_0x6f9b('0x70')]('\x27'+_0x4aba72+'\x27',_0x6f9b('0x52'))[_0x6f9b('0x70')]('\x27'+_0x4aba72+'\x27','updatedAt')[_0x6f9b('0x76')](_0x6f9b('0x77'))[_0x6f9b('0x3d')]('deletedAt\x20IS\x20NULL')['where'](_0x6f9b('0x79'),_0x1ae694[_0x6f9b('0x73')][_0x6f9b('0x74')]())[_0x6f9b('0x3d')](_0x6f9b('0x7a'))[_0x6f9b('0x3d')](_0x6f9b('0x7d'),squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')](_0x6f9b('0x7f'))['from'](_0x6f9b('0x6b'))['where'](_0x6f9b('0x7c'),_0x107111[_0x6f9b('0x44')]['id'][_0x6f9b('0x74')]())))[_0x6f9b('0x74')]();break;default:_0x4d4d12=squel['insert']()[_0x6f9b('0x6a')]('cm_hopper')[_0x6f9b('0x6c')]([_0x6f9b('0x6d'),_0x6f9b('0x72'),_0x6f9b('0x6e'),_0x6f9b('0x75'),_0x6f9b('0x5c'),_0x6f9b('0x52'),_0x6f9b('0x54')],squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')](_0x6f9b('0x6d'),_0x6f9b('0x6d'))['field']('NOW()',_0x6f9b('0x72'))[_0x6f9b('0x70')]('id','ContactId')[_0x6f9b('0x70')](_0x1ae694['CmListId'][_0x6f9b('0x74')](),_0x6f9b('0x75'))[_0x6f9b('0x70')](_0x107111['params']['id'][_0x6f9b('0x74')](),_0x6f9b('0x5c'))['field']('\x27'+_0x4aba72+'\x27',_0x6f9b('0x52'))['field']('\x27'+_0x4aba72+'\x27',_0x6f9b('0x54'))['from'](_0x6f9b('0x77'))[_0x6f9b('0x3d')](_0x6f9b('0x78'))['where']('ListId\x20=\x20?',_0x1ae694[_0x6f9b('0x73')][_0x6f9b('0x74')]())[_0x6f9b('0x3d')](_0x6f9b('0x7a')))[_0x6f9b('0x74')]();}_0x69e05f=squel[_0x6f9b('0x69')]()[_0x6f9b('0x6a')](_0x6f9b('0x80'))[_0x6f9b('0x6c')]([_0x6f9b('0x81'),_0x6f9b('0x72'),_0x6f9b('0x6d'),_0x6f9b('0x82'),_0x6f9b('0x52'),_0x6f9b('0x54')],squel[_0x6f9b('0x6f')]()['field'](_0x6f9b('0x83'),'id')['field'](_0x6f9b('0x71'),_0x6f9b('0x72'))[_0x6f9b('0x70')]('ci.item',_0x6f9b('0x6d'))['field'](_0x6f9b('0x84'),_0x6f9b('0x82'))[_0x6f9b('0x70')]('\x27'+_0x4aba72+'\x27',_0x6f9b('0x52'))['field']('\x27'+_0x4aba72+'\x27',_0x6f9b('0x54'))[_0x6f9b('0x76')](_0x6f9b('0x85'),'ci')[_0x6f9b('0x86')](_0x6f9b('0x6b'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x6f9b('0x3d')](_0x6f9b('0x87'),_0x1ae694['CmListId'][_0x6f9b('0x74')]())['where']('h.CampaignId=?',_0x107111[_0x6f9b('0x44')]['id']['toString']())[_0x6f9b('0x3d')]('h.createdAt\x20=\x20?',_0x4aba72))[_0x6f9b('0x74')]();_0x1910a3[_0x6f9b('0x88')](db[_0x6f9b('0x89')][_0x6f9b('0x32')](_0x4d4d12));_0x212e7c[_0x6f9b('0x88')](db[_0x6f9b('0x89')][_0x6f9b('0x32')](_0x69e05f));}return BPromise['all'](_0x1910a3);}})[_0x6f9b('0x21')](function(){return BPromise['all'](_0x212e7c);})[_0x6f9b('0x21')](function(){return _0x5c2448;})[_0x6f9b('0x21')](respondWithResult(_0x174f51,null))[_0x6f9b('0x46')](handleError(_0x174f51,null));};exports['removeLists']=function(_0x16bde9,_0x56e8a2,_0x67152){return db[_0x6f9b('0x2b')][_0x6f9b('0x45')]({'where':{'id':_0x16bde9[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x56e8a2,null))[_0x6f9b('0x21')](function(_0x488541){if(_0x488541){return _0x488541[_0x6f9b('0x8a')](_0x16bde9[_0x6f9b('0x32')][_0x6f9b('0x65')]);}})[_0x6f9b('0x21')](function(_0x844fa3){if(_0x844fa3){return db['CmHopper']['destroy']({'where':{'ListId':_0x16bde9[_0x6f9b('0x32')][_0x6f9b('0x65')],'CampaignId':_0x16bde9[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](function(){return _0x844fa3;});}})['then'](respondWithStatusCode(_0x56e8a2,null))['catch'](handleError(_0x56e8a2,null));};exports[_0x6f9b('0x8b')]=function(_0x38081e,_0x5ec1cd,_0x1456ee){var _0x51741f={};var _0x1a7a8f={};var _0x390cf1;var _0x35ddfc;return db[_0x6f9b('0x2b')]['findOne']({'where':{'id':_0x38081e[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x5ec1cd,null))[_0x6f9b('0x21')](function(_0x2facf8){if(_0x2facf8){_0x390cf1=_0x2facf8;_0x1a7a8f[_0x6f9b('0x30')]=_[_0x6f9b('0x31')](db[_0x6f9b('0x62')][_0x6f9b('0x2c')]);_0x1a7a8f[_0x6f9b('0x32')]=_[_0x6f9b('0x31')](_0x38081e['query']);_0x1a7a8f[_0x6f9b('0x33')]=_['intersection'](_0x1a7a8f['model'],_0x1a7a8f[_0x6f9b('0x32')]);_0x51741f[_0x6f9b('0x35')]=_[_0x6f9b('0x34')](_0x1a7a8f['model'],qs[_0x6f9b('0x36')](_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x36')]));_0x51741f[_0x6f9b('0x35')]=_0x51741f['attributes']['length']?_0x51741f['attributes']:_0x1a7a8f[_0x6f9b('0x30')];_0x51741f['order']=qs[_0x6f9b('0x3b')](_0x38081e['query']['sort']);_0x51741f[_0x6f9b('0x3d')]=qs['filters'](_[_0x6f9b('0x57')](_0x38081e['query'],_0x1a7a8f['filters']));if(_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x3c')]){_0x51741f['where']=_[_0x6f9b('0x3e')](_0x51741f[_0x6f9b('0x3d')],{'$or':_[_0x6f9b('0x2a')](_0x51741f[_0x6f9b('0x35')],function(_0x41f03d){var _0x1284cb={};_0x1284cb[_0x41f03d]={'$like':'%'+_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x3c')]+'%'};return _0x1284cb;})});}_0x51741f=_[_0x6f9b('0x3e')]({},_0x51741f,_0x38081e[_0x6f9b('0x40')]);return _0x390cf1[_0x6f9b('0x8b')](_0x51741f);}})[_0x6f9b('0x21')](function(_0xee43c8){if(_0xee43c8){_0x35ddfc=_0xee43c8[_0x6f9b('0x37')];if(!_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x38')](_0x6f9b('0x39'))){_0x51741f[_0x6f9b('0x19')]=qs[_0x6f9b('0x19')](_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x19')]);_0x51741f[_0x6f9b('0x17')]=qs[_0x6f9b('0x17')](_0x38081e[_0x6f9b('0x32')][_0x6f9b('0x17')]);}return _0x390cf1[_0x6f9b('0x8b')](_0x51741f);}})['then'](function(_0x50199a){if(_0x50199a){return _0x50199a?{'count':_0x35ddfc,'rows':_0x50199a}:null;}})[_0x6f9b('0x21')](respondWithResult(_0x5ec1cd,null))[_0x6f9b('0x46')](handleError(_0x5ec1cd,null));};exports[_0x6f9b('0x8c')]=function(_0x2c022a,_0x542dfa,_0x3bb44e){var _0x87dab,_0x37a938;var _0xe18058=[];var _0x3ef965=moment()['format'](_0x6f9b('0x64'));return db[_0x6f9b('0x2b')]['find']({'where':{'id':_0x2c022a[_0x6f9b('0x44')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x542dfa,null))[_0x6f9b('0x21')](function(_0x45e426){if(_0x45e426){_0x37a938=_0x45e426;return _0x45e426[_0x6f9b('0x8c')](_0x2c022a['body'][_0x6f9b('0x65')],_[_0x6f9b('0x53')](_0x2c022a[_0x6f9b('0x48')],[_0x6f9b('0x65'),'id'])||{});}return null;})['spread'](function(_0x533f01){var _0x4ac9fc;var _0x238f77;_0x87dab=_0x533f01||[];var _0x307351=[];if(_0x533f01){for(var _0x44a141=0x0;_0x44a141<_0x533f01[_0x6f9b('0x37')];_0x44a141+=0x1){var _0x1581b9=_0x533f01[_0x44a141][_0x6f9b('0x22')]({'plain':!![]});_0x4ac9fc=squel[_0x6f9b('0x69')]()[_0x6f9b('0x6a')](_0x6f9b('0x8d'))[_0x6f9b('0x6c')]([_0x6f9b('0x6d'),'ContactId','ListId',_0x6f9b('0x5c'),'createdAt',_0x6f9b('0x54')],squel[_0x6f9b('0x6f')]()[_0x6f9b('0x70')](_0x6f9b('0x6d'),_0x6f9b('0x6d'))['field']('id',_0x6f9b('0x6e'))[_0x6f9b('0x70')](_0x1581b9['CmListId'][_0x6f9b('0x74')](),'ListId')['field'](_0x2c022a['params']['id'][_0x6f9b('0x74')](),_0x6f9b('0x5c'))[_0x6f9b('0x70')](_0x6f9b('0x71'),_0x6f9b('0x52'))[_0x6f9b('0x70')](_0x6f9b('0x71'),_0x6f9b('0x54'))[_0x6f9b('0x76')]('cm_contacts')[_0x6f9b('0x3d')](_0x6f9b('0x78'))[_0x6f9b('0x3d')](_0x6f9b('0x79'),_0x1581b9[_0x6f9b('0x73')][_0x6f9b('0x74')]())[_0x6f9b('0x3d')]('phone\x20IS\x20NOT\x20NULL'))[_0x6f9b('0x74')]();_0x307351['push'](db[_0x6f9b('0x89')][_0x6f9b('0x32')](_0x4ac9fc));}return BPromise[_0x6f9b('0x8e')](_0x307351);}})['then'](function(){return _0x87dab;})[_0x6f9b('0x21')](respondWithResult(_0x542dfa,null))['catch'](handleError(_0x542dfa,null));};exports[_0x6f9b('0x8f')]=function(_0x1409d2,_0x9b2206,_0x1845c5){return db[_0x6f9b('0x2b')][_0x6f9b('0x45')]({'where':{'id':_0x1409d2['params']['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0x9b2206,null))['then'](function(_0x4d131d){if(_0x4d131d){return _0x4d131d['removeBlackLists'](_0x1409d2[_0x6f9b('0x32')][_0x6f9b('0x65')]);}})[_0x6f9b('0x21')](function(_0x195ea1){if(_0x195ea1){return db[_0x6f9b('0x60')][_0x6f9b('0x25')]({'where':{'ListId':_0x1409d2['query'][_0x6f9b('0x65')],'CampaignId':_0x1409d2[_0x6f9b('0x44')]['id']}})['then'](function(){return _0x195ea1;});}})[_0x6f9b('0x21')](respondWithStatusCode(_0x9b2206,null))[_0x6f9b('0x46')](handleError(_0x9b2206,null));};
\ No newline at end of file
index 89f5438..1fd97d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x40a85a,_0x5393c8){var _0x4c1213=function(_0x540e3c){while(--_0x540e3c){_0x40a85a['push'](_0x40a85a['shift']());}};_0x4c1213(++_0x5393c8);}(_0x7a54,0x106));var _0x47a5=function(_0xb036b,_0x3c60c4){_0xb036b=_0xb036b-0x0;var _0x117785=_0x7a54[_0xb036b];return _0x117785;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aecec87..edd7e0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc678=['request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','Campaign,\x20%s,\x20%s','message','result','catch','GetCampaign','Campaign','options','raw','where','attributes','limit','include','map','model','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xc678,0x1b4));var _0x8c67=function(_0x4b8d0e,_0xc438f3){_0x4b8d0e=_0x4b8d0e-0x0;var _0x27e672=_0xc678[_0x4b8d0e];return _0x27e672;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8c67('0x0'));var BPromise=require(_0x8c67('0x1'));var rs=require(_0x8c67('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8c67('0x3'))['db'];var utils=require(_0x8c67('0x4'));var logger=require(_0x8c67('0x5'))(_0x8c67('0x6'));var config=require('../../config/environment');var jayson=require(_0x8c67('0x7'));var client=jayson['client'][_0x8c67('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b4ceb,_0x4c2ffe,_0x207de1){return new BPromise(function(_0x22d7e4,_0x41ac88){return client[_0x8c67('0x9')](_0x1b4ceb,_0x207de1)[_0x8c67('0xa')](function(_0x5bac97){logger[_0x8c67('0xb')]('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x8c67('0xc'));logger[_0x8c67('0xd')](_0x8c67('0xe'),_0x4c2ffe,'request\x20sent',JSON[_0x8c67('0xf')](_0x5bac97));if(_0x5bac97[_0x8c67('0x10')]){if(_0x5bac97[_0x8c67('0x10')][_0x8c67('0x11')]===0x1f4){logger['error'](_0x8c67('0x12'),_0x4c2ffe,_0x5bac97['error']['message']);return _0x41ac88(_0x5bac97['error']['message']);}logger[_0x8c67('0x10')]('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x5bac97[_0x8c67('0x10')]['message']);return _0x22d7e4(_0x5bac97[_0x8c67('0x10')][_0x8c67('0x13')]);}else{logger[_0x8c67('0xb')](_0x8c67('0x12'),_0x4c2ffe,'request\x20sent');_0x22d7e4(_0x5bac97[_0x8c67('0x14')][_0x8c67('0x13')]);}})[_0x8c67('0x15')](function(_0x1bae2f){logger['error']('Campaign,\x20%s,\x20%s',_0x4c2ffe,_0x1bae2f);_0x41ac88(_0x1bae2f);});});}exports[_0x8c67('0x16')]=function(_0x3e9ab8){var _0x215d52=this;return new Promise(function(_0x544717,_0xe7f0b6){return db[_0x8c67('0x17')]['findAll']({'raw':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x19')]===undefined?!![]:![]:!![],'where':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1a')]||null:null,'attributes':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x1b')]||null:null,'limit':_0x3e9ab8[_0x8c67('0x18')]?_0x3e9ab8['options'][_0x8c67('0x1c')]||null:null,'include':_0x3e9ab8['options']?_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1d')]?_[_0x8c67('0x1e')](_0x3e9ab8[_0x8c67('0x18')][_0x8c67('0x1d')],function(_0x5dc805){return{'model':db[_0x5dc805[_0x8c67('0x1f')]],'as':_0x5dc805['as'],'attributes':_0x5dc805[_0x8c67('0x1b')],'include':_0x5dc805[_0x8c67('0x1d')]?_[_0x8c67('0x1e')](_0x5dc805[_0x8c67('0x1d')],function(_0xf32c63){return{'model':db[_0xf32c63['model']],'as':_0xf32c63['as'],'attributes':_0xf32c63['attributes'],'include':_0xf32c63[_0x8c67('0x1d')]?_['map'](_0xf32c63['include'],function(_0x2e5d04){return{'model':db[_0x2e5d04[_0x8c67('0x1f')]],'as':_0x2e5d04['as'],'attributes':_0x2e5d04[_0x8c67('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3716e1){logger[_0x8c67('0xb')](_0x8c67('0x16'),_0x3e9ab8);logger[_0x8c67('0xd')]('GetCampaign',_0x3e9ab8,JSON[_0x8c67('0xf')](_0x3716e1));_0x544717(_0x3716e1);})[_0x8c67('0x15')](function(_0x502d2e){logger[_0x8c67('0x10')](_0x8c67('0x16'),_0x502d2e[_0x8c67('0x13')],_0x3e9ab8);_0xe7f0b6(_0x215d52[_0x8c67('0x10')](0x1f4,_0x502d2e['message']));});});};
\ No newline at end of file
+var _0x2746=['client','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCampaign','options','raw','attributes','limit','include','map','model','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x9c3e42,_0x1f236d){var _0x417bb6=function(_0x5cd43d){while(--_0x5cd43d){_0x9c3e42['push'](_0x9c3e42['shift']());}};_0x417bb6(++_0x1f236d);}(_0x2746,0x19c));var _0x6274=function(_0x34499b,_0x56a122){_0x34499b=_0x34499b-0x0;var _0x3cada1=_0x2746[_0x34499b];return _0x3cada1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6274('0x0'));var BPromise=require(_0x6274('0x1'));var rs=require(_0x6274('0x2'));var fs=require('fs');var Redis=require(_0x6274('0x3'));var db=require(_0x6274('0x4'))['db'];var utils=require(_0x6274('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6274('0x6'));var jayson=require(_0x6274('0x7'));var client=jayson[_0x6274('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d22fb,_0x937a27,_0x3a8ec1){return new BPromise(function(_0x3158f6,_0x3efc83){return client['request'](_0x1d22fb,_0x3a8ec1)[_0x6274('0x9')](function(_0x59fee9){logger[_0x6274('0xa')](_0x6274('0xb'),_0x937a27,_0x6274('0xc'));logger[_0x6274('0xd')](_0x6274('0xe'),_0x937a27,_0x6274('0xc'),JSON[_0x6274('0xf')](_0x59fee9));if(_0x59fee9[_0x6274('0x10')]){if(_0x59fee9[_0x6274('0x10')]['code']===0x1f4){logger['error']('Campaign,\x20%s,\x20%s',_0x937a27,_0x59fee9[_0x6274('0x10')]['message']);return _0x3efc83(_0x59fee9[_0x6274('0x10')][_0x6274('0x11')]);}logger[_0x6274('0x10')]('Campaign,\x20%s,\x20%s',_0x937a27,_0x59fee9[_0x6274('0x10')]['message']);return _0x3158f6(_0x59fee9[_0x6274('0x10')][_0x6274('0x11')]);}else{logger['info']('Campaign,\x20%s,\x20%s',_0x937a27,_0x6274('0xc'));_0x3158f6(_0x59fee9[_0x6274('0x12')][_0x6274('0x11')]);}})[_0x6274('0x13')](function(_0x3e35fb){logger['error'](_0x6274('0xb'),_0x937a27,_0x3e35fb);_0x3efc83(_0x3e35fb);});});}exports[_0x6274('0x14')]=function(_0x40cc32){var _0x55eeed=this;return new Promise(function(_0x5cdf5e,_0x43593c){return db['Campaign']['findAll']({'raw':_0x40cc32[_0x6274('0x15')]?_0x40cc32['options'][_0x6274('0x16')]===undefined?!![]:![]:!![],'where':_0x40cc32[_0x6274('0x15')]?_0x40cc32['options']['where']||null:null,'attributes':_0x40cc32[_0x6274('0x15')]?_0x40cc32[_0x6274('0x15')][_0x6274('0x17')]||null:null,'limit':_0x40cc32[_0x6274('0x15')]?_0x40cc32[_0x6274('0x15')][_0x6274('0x18')]||null:null,'include':_0x40cc32[_0x6274('0x15')]?_0x40cc32[_0x6274('0x15')][_0x6274('0x19')]?_[_0x6274('0x1a')](_0x40cc32[_0x6274('0x15')][_0x6274('0x19')],function(_0x125f14){return{'model':db[_0x125f14[_0x6274('0x1b')]],'as':_0x125f14['as'],'attributes':_0x125f14[_0x6274('0x17')],'include':_0x125f14[_0x6274('0x19')]?_[_0x6274('0x1a')](_0x125f14[_0x6274('0x19')],function(_0x5228a1){return{'model':db[_0x5228a1[_0x6274('0x1b')]],'as':_0x5228a1['as'],'attributes':_0x5228a1['attributes'],'include':_0x5228a1[_0x6274('0x19')]?_['map'](_0x5228a1[_0x6274('0x19')],function(_0x1513e8){return{'model':db[_0x1513e8['model']],'as':_0x1513e8['as'],'attributes':_0x1513e8[_0x6274('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54b923){logger[_0x6274('0xa')](_0x6274('0x14'),_0x40cc32);logger[_0x6274('0xd')]('GetCampaign',_0x40cc32,JSON[_0x6274('0xf')](_0x54b923));_0x5cdf5e(_0x54b923);})['catch'](function(_0x4818e2){logger['error'](_0x6274('0x14'),_0x4818e2[_0x6274('0x11')],_0x40cc32);_0x43593c(_0x55eeed[_0x6274('0x10')](0x1f4,_0x4818e2[_0x6274('0x11')]));});});};
\ No newline at end of file
index f9249e6..371ef7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x146a=['getBlackLists','post','create','/:id/clone','clone','addLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists'];(function(_0x577674,_0x4e508d){var _0x1c6b90=function(_0x3e6bde){while(--_0x3e6bde){_0x577674['push'](_0x577674['shift']());}};_0x1c6b90(++_0x4e508d);}(_0x146a,0x9d));var _0xa146=function(_0xcba4b6,_0x1ecf6a){_0xcba4b6=_0xcba4b6-0x0;var _0x2bd8bf=_0x146a[_0xcba4b6];return _0x2bd8bf;};'use strict';var multer=require(_0xa146('0x0'));var util=require(_0xa146('0x1'));var path=require('path');var timeout=require(_0xa146('0x2'));var express=require(_0xa146('0x3'));var router=express[_0xa146('0x4')]();var fs_extra=require(_0xa146('0x5'));var auth=require(_0xa146('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa146('0x7'));var controller=require(_0xa146('0x8'));router[_0xa146('0x9')]('/',auth[_0xa146('0xa')](),controller[_0xa146('0xb')]);router['get'](_0xa146('0xc'),auth[_0xa146('0xa')](),controller[_0xa146('0xd')]);router[_0xa146('0x9')](_0xa146('0xe'),auth[_0xa146('0xa')](),controller[_0xa146('0xf')]);router[_0xa146('0x9')]('/:id/hopper_histories',auth[_0xa146('0xa')](),controller[_0xa146('0x10')]);router[_0xa146('0x9')](_0xa146('0x11'),auth[_0xa146('0xa')](),controller[_0xa146('0x12')]);router['get']('/:id/hopper_black',auth[_0xa146('0xa')](),controller[_0xa146('0x13')]);router[_0xa146('0x9')](_0xa146('0x14'),auth[_0xa146('0xa')](),controller[_0xa146('0x15')]);router[_0xa146('0x9')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller[_0xa146('0x17')]);router[_0xa146('0x18')]('/',auth['isAuthenticated'](),controller[_0xa146('0x19')]);router['post'](_0xa146('0x1a'),auth[_0xa146('0xa')](),controller[_0xa146('0x1b')]);router[_0xa146('0x18')](_0xa146('0x14'),auth[_0xa146('0xa')](),controller[_0xa146('0x1c')]);router[_0xa146('0x18')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller['addBlackLists']);router[_0xa146('0x1d')](_0xa146('0xc'),auth[_0xa146('0xa')](),controller[_0xa146('0x1e')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xa146('0x1f')]);router[_0xa146('0x20')]('/:id/lists',auth[_0xa146('0xa')](),controller[_0xa146('0x21')]);router[_0xa146('0x20')](_0xa146('0x16'),auth[_0xa146('0xa')](),controller[_0xa146('0x22')]);module[_0xa146('0x23')]=router;
\ No newline at end of file
+var _0x95bf=['addLists','update','delete','destroy','removeBlackLists','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','isAuthenticated','index','get','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x95bf,0x150));var _0xf95b=function(_0x38206b,_0x576bc1){_0x38206b=_0x38206b-0x0;var _0x34ba2c=_0x95bf[_0x38206b];return _0x34ba2c;};'use strict';var multer=require('multer');var util=require(_0xf95b('0x0'));var path=require(_0xf95b('0x1'));var timeout=require(_0xf95b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf95b('0x3'));var auth=require(_0xf95b('0x4'));var interaction=require(_0xf95b('0x5'));var config=require(_0xf95b('0x6'));var controller=require(_0xf95b('0x7'));router['get']('/',auth[_0xf95b('0x8')](),controller[_0xf95b('0x9')]);router[_0xf95b('0xa')](_0xf95b('0xb'),auth[_0xf95b('0x8')](),controller[_0xf95b('0xc')]);router['get'](_0xf95b('0xd'),auth[_0xf95b('0x8')](),controller[_0xf95b('0xe')]);router[_0xf95b('0xa')](_0xf95b('0xf'),auth[_0xf95b('0x8')](),controller[_0xf95b('0x10')]);router[_0xf95b('0xa')](_0xf95b('0x11'),auth['isAuthenticated'](),controller[_0xf95b('0x12')]);router[_0xf95b('0xa')]('/:id/hopper_black',auth[_0xf95b('0x8')](),controller[_0xf95b('0x13')]);router[_0xf95b('0xa')]('/:id/lists',auth[_0xf95b('0x8')](),controller[_0xf95b('0x14')]);router[_0xf95b('0xa')](_0xf95b('0x15'),auth['isAuthenticated'](),controller[_0xf95b('0x16')]);router[_0xf95b('0x17')]('/',auth[_0xf95b('0x8')](),controller[_0xf95b('0x18')]);router[_0xf95b('0x17')](_0xf95b('0x19'),auth[_0xf95b('0x8')](),controller[_0xf95b('0x1a')]);router[_0xf95b('0x17')]('/:id/lists',auth[_0xf95b('0x8')](),controller[_0xf95b('0x1b')]);router['post'](_0xf95b('0x15'),auth[_0xf95b('0x8')](),controller['addBlackLists']);router['put'](_0xf95b('0xb'),auth[_0xf95b('0x8')](),controller[_0xf95b('0x1c')]);router[_0xf95b('0x1d')](_0xf95b('0xb'),auth[_0xf95b('0x8')](),controller[_0xf95b('0x1e')]);router[_0xf95b('0x1d')]('/:id/lists',auth[_0xf95b('0x8')](),controller['removeLists']);router[_0xf95b('0x1d')](_0xf95b('0x15'),auth[_0xf95b('0x8')](),controller[_0xf95b('0x1f')]);module[_0xf95b('0x20')]=router;
\ No newline at end of file
index 72e650b..8266ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ef=['getDataValue','exports','STRING','TEXT'];(function(_0x3dffd3,_0x24c00b){var _0x77b971=function(_0x21efe2){while(--_0x21efe2){_0x3dffd3['push'](_0x3dffd3['shift']());}};_0x77b971(++_0x24c00b);}(_0x51ef,0x1b1));var _0xf51e=function(_0x1e4b8b,_0x400c16){_0x1e4b8b=_0x1e4b8b-0x0;var _0x475f3f=_0x51ef[_0x1e4b8b];return _0x475f3f;};'use strict';var Sequelize=require('sequelize');module[_0xf51e('0x0')]={'key':{'type':Sequelize[_0xf51e('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xf51e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf51e('0x1')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xf51e('0x3')]('key');}}};
\ No newline at end of file
+var _0x58a7=['key','sequelize','exports','TEXT','VIRTUAL','getDataValue'];(function(_0x5f23fe,_0x1428e7){var _0x4a2989=function(_0x37534c){while(--_0x37534c){_0x5f23fe['push'](_0x5f23fe['shift']());}};_0x4a2989(++_0x1428e7);}(_0x58a7,0x9d));var _0x758a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x58a7[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x758a('0x0'));module[_0x758a('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x758a('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x758a('0x3')],'get':function(){return this[_0x758a('0x4')](_0x758a('0x5'));}}};
\ No newline at end of file
index d76d5bc..e6fac63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd443=['set','Content-Range','reject','save','then','destroy','get','error','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','filters','pick','filter','where','includeAll','findAll','catch','params','length','include','merge','options','find','update','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','CannedAnswers','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x4421a0,_0x1525bc){var _0x5626d0=function(_0x56d43e){while(--_0x56d43e){_0x4421a0['push'](_0x4421a0['shift']());}};_0x5626d0(++_0x1525bc);}(_0xd443,0xe9));var _0x3d44=function(_0x400fff,_0x4c41d4){_0x400fff=_0x400fff-0x0;var _0x4379dc=_0xd443[_0x400fff];return _0x4379dc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d44('0x0'));var zipdir=require(_0x3d44('0x1'));var jsonpatch=require(_0x3d44('0x2'));var rp=require(_0x3d44('0x3'));var moment=require(_0x3d44('0x4'));var BPromise=require(_0x3d44('0x5'));var Mustache=require(_0x3d44('0x6'));var util=require('util');var path=require('path');var sox=require(_0x3d44('0x7'));var csv=require('to-csv');var ejs=require(_0x3d44('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3d44('0x9'));var squel=require(_0x3d44('0xa'));var crypto=require(_0x3d44('0xb'));var jsforce=require(_0x3d44('0xc'));var deskjs=require(_0x3d44('0xd'));var toCsv=require(_0x3d44('0xe'));var querystring=require(_0x3d44('0xf'));var Papa=require(_0x3d44('0x10'));var Redis=require(_0x3d44('0x11'));var authService=require(_0x3d44('0x12'));var qs=require(_0x3d44('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3d44('0x14'));var logger=require(_0x3d44('0x15'))(_0x3d44('0x16'));var utils=require(_0x3d44('0x17'));var config=require(_0x3d44('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x3d44('0x19'))['db'];function respondWithStatusCode(_0x40d135,_0x4e0fc7){_0x4e0fc7=_0x4e0fc7||0xcc;return function(_0x3f4387){if(_0x3f4387){return _0x40d135[_0x3d44('0x1a')](_0x4e0fc7);}return _0x40d135[_0x3d44('0x1b')](_0x4e0fc7)[_0x3d44('0x1c')]();};}function respondWithResult(_0x560a79,_0x23ed4a){_0x23ed4a=_0x23ed4a||0xc8;return function(_0x3a59ba){if(_0x3a59ba){return _0x560a79[_0x3d44('0x1b')](_0x23ed4a)[_0x3d44('0x1d')](_0x3a59ba);}};}function respondWithFilteredResult(_0x39c044,_0x1e2619){return function(_0x476092){if(_0x476092){var _0x306fbc=typeof _0x1e2619[_0x3d44('0x1e')]===_0x3d44('0x1f')&&typeof _0x1e2619[_0x3d44('0x20')]===_0x3d44('0x1f');var _0x335f00=_0x476092['count'];var _0x2941d2=_0x306fbc?0x0:_0x1e2619['offset'];var _0x2d35f9=_0x306fbc?_0x476092[_0x3d44('0x21')]:_0x1e2619[_0x3d44('0x1e')]+_0x1e2619['limit'];var _0x231c82;if(_0x2d35f9>=_0x335f00){_0x2d35f9=_0x335f00;_0x231c82=0xc8;}else{_0x231c82=0xce;}_0x39c044['status'](_0x231c82);return _0x39c044[_0x3d44('0x22')](_0x3d44('0x23'),_0x2941d2+'-'+_0x2d35f9+'/'+_0x335f00)[_0x3d44('0x1d')](_0x476092);}return null;};}function patchUpdates(_0x2ee43d){return function(_0xb1c869){try{jsonpatch['apply'](_0xb1c869,_0x2ee43d,!![]);}catch(_0xdd2f95){return BPromise[_0x3d44('0x24')](_0xdd2f95);}return _0xb1c869[_0x3d44('0x25')]();};}function saveUpdates(_0x253cb0,_0x599cb9){return function(_0x2e86a1){if(_0x2e86a1){return _0x2e86a1['update'](_0x253cb0)[_0x3d44('0x26')](function(_0x1f1ac3){return _0x1f1ac3;});}return null;};}function removeEntity(_0x561a33,_0x3f251e){return function(_0xb2f259){if(_0xb2f259){return _0xb2f259[_0x3d44('0x27')]()['then'](function(){var _0x8129ce=_0xb2f259[_0x3d44('0x28')]({'plain':!![]});var _0x41278a='CannedAnswers';return db['UserProfileResource'][_0x3d44('0x27')]({'where':{'type':_0x41278a,'resourceId':_0x8129ce['id']}})[_0x3d44('0x26')](function(){return _0xb2f259;});})['then'](function(){_0x561a33[_0x3d44('0x1b')](0xcc)[_0x3d44('0x1c')]();});}};}function handleEntityNotFound(_0x22710b,_0x15e4cc){return function(_0x3ae766){if(!_0x3ae766){_0x22710b[_0x3d44('0x1a')](0x194);}return _0x3ae766;};}function handleError(_0x12629c,_0x223f17){_0x223f17=_0x223f17||0x1f4;return function(_0x41e9eb){logger[_0x3d44('0x29')](_0x41e9eb['stack']);if(_0x41e9eb['name']){delete _0x41e9eb['name'];}_0x12629c['status'](_0x223f17)[_0x3d44('0x2a')](_0x41e9eb);};}exports[_0x3d44('0x2b')]=function(_0x35380c,_0x45a010){var _0x446e7c={},_0x1f79b8={},_0x12a15a={'count':0x0,'rows':[]};var _0x10f076=_[_0x3d44('0x2c')](db[_0x3d44('0x2d')][_0x3d44('0x2e')],function(_0x293c8f){return{'name':_0x293c8f[_0x3d44('0x2f')],'type':_0x293c8f[_0x3d44('0x30')][_0x3d44('0x31')]};});_0x1f79b8[_0x3d44('0x32')]=_[_0x3d44('0x2c')](_0x10f076,_0x3d44('0x33'));_0x1f79b8['query']=_[_0x3d44('0x34')](_0x35380c[_0x3d44('0x35')]);_0x1f79b8['filters']=_[_0x3d44('0x36')](_0x1f79b8[_0x3d44('0x32')],_0x1f79b8[_0x3d44('0x35')]);_0x446e7c[_0x3d44('0x37')]=_[_0x3d44('0x36')](_0x1f79b8[_0x3d44('0x32')],qs[_0x3d44('0x38')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x38')]));_0x446e7c[_0x3d44('0x37')]=_0x446e7c[_0x3d44('0x37')]['length']?_0x446e7c[_0x3d44('0x37')]:_0x1f79b8[_0x3d44('0x32')];if(!_0x35380c[_0x3d44('0x35')][_0x3d44('0x39')]('nolimit')){_0x446e7c[_0x3d44('0x20')]=qs[_0x3d44('0x20')](_0x35380c[_0x3d44('0x35')]['limit']);_0x446e7c[_0x3d44('0x1e')]=qs[_0x3d44('0x1e')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x1e')]);}_0x446e7c[_0x3d44('0x3a')]=qs[_0x3d44('0x3b')](_0x35380c[_0x3d44('0x35')][_0x3d44('0x3b')]);_0x446e7c['where']=qs[_0x3d44('0x3c')](_[_0x3d44('0x3d')](_0x35380c['query'],_0x1f79b8[_0x3d44('0x3c')]),_0x10f076);if(_0x35380c['query'][_0x3d44('0x3e')]){_0x446e7c[_0x3d44('0x3f')]=_['merge'](_0x446e7c[_0x3d44('0x3f')],{'$or':[{'key':{'$like':'%'+_0x35380c['query']['filter']+'%'}},{'value':{'$like':'%'+_0x35380c[_0x3d44('0x35')][_0x3d44('0x3e')]+'%'}}]});}_0x446e7c=_['merge']({},_0x446e7c,_0x35380c['options']);var _0x3cb898={'where':_0x446e7c[_0x3d44('0x3f')]};return db[_0x3d44('0x2d')][_0x3d44('0x21')](_0x3cb898)['then'](function(_0xa836ab){_0x12a15a['count']=_0xa836ab;if(_0x35380c[_0x3d44('0x35')][_0x3d44('0x40')]){_0x446e7c['include']=[{'all':!![]}];}return db[_0x3d44('0x2d')][_0x3d44('0x41')](_0x446e7c);})[_0x3d44('0x26')](function(_0x139a8b){_0x12a15a['rows']=_0x139a8b;return _0x12a15a;})[_0x3d44('0x26')](respondWithFilteredResult(_0x45a010,_0x446e7c))[_0x3d44('0x42')](handleError(_0x45a010,null));};exports['show']=function(_0x5bb522,_0x1ba9f3){var _0x32ab66={'raw':!![],'where':{'id':_0x5bb522[_0x3d44('0x43')]['id']}},_0x269c15={};_0x269c15['model']=_[_0x3d44('0x34')](db[_0x3d44('0x2d')][_0x3d44('0x2e')]);_0x269c15[_0x3d44('0x35')]=_[_0x3d44('0x34')](_0x5bb522[_0x3d44('0x35')]);_0x269c15['filters']=_[_0x3d44('0x36')](_0x269c15[_0x3d44('0x32')],_0x269c15[_0x3d44('0x35')]);_0x32ab66[_0x3d44('0x37')]=_[_0x3d44('0x36')](_0x269c15[_0x3d44('0x32')],qs['fields'](_0x5bb522[_0x3d44('0x35')][_0x3d44('0x38')]));_0x32ab66[_0x3d44('0x37')]=_0x32ab66[_0x3d44('0x37')][_0x3d44('0x44')]?_0x32ab66[_0x3d44('0x37')]:_0x269c15['model'];if(_0x5bb522[_0x3d44('0x35')][_0x3d44('0x40')]){_0x32ab66[_0x3d44('0x45')]=[{'all':!![]}];}_0x32ab66=_[_0x3d44('0x46')]({},_0x32ab66,_0x5bb522[_0x3d44('0x47')]);return db[_0x3d44('0x2d')][_0x3d44('0x48')](_0x32ab66)['then'](handleEntityNotFound(_0x1ba9f3,null))['then'](respondWithResult(_0x1ba9f3,null))[_0x3d44('0x42')](handleError(_0x1ba9f3,null));};exports[_0x3d44('0x49')]=function(_0x57a6a0,_0x14c5f3){if(_0x57a6a0[_0x3d44('0x4a')]['id']){delete _0x57a6a0[_0x3d44('0x4a')]['id'];}return db[_0x3d44('0x2d')]['find']({'where':{'id':_0x57a6a0['params']['id']}})[_0x3d44('0x26')](handleEntityNotFound(_0x14c5f3,null))[_0x3d44('0x26')](saveUpdates(_0x57a6a0[_0x3d44('0x4a')],null))[_0x3d44('0x26')](respondWithResult(_0x14c5f3,null))[_0x3d44('0x42')](handleError(_0x14c5f3,null));};exports[_0x3d44('0x27')]=function(_0xd2777a,_0x57be10){return db[_0x3d44('0x2d')][_0x3d44('0x48')]({'where':{'id':_0xd2777a[_0x3d44('0x43')]['id']}})[_0x3d44('0x26')](handleEntityNotFound(_0x57be10,null))[_0x3d44('0x26')](removeEntity(_0x57be10,null))['catch'](handleError(_0x57be10,null));};exports['create']=function(_0x455280,_0xe3c614){var _0xc46ac1={'key':_0x455280['body']['key']};if(_0x455280['body'][_0x3d44('0x4b')]){_0xc46ac1[_0x3d44('0x4b')]=_0x455280['body'][_0x3d44('0x4b')];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4c')]){_0xc46ac1['SmsAccountId']=_0x455280[_0x3d44('0x4a')]['SmsAccountId'];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4d')]){_0xc46ac1[_0x3d44('0x4d')]=_0x455280[_0x3d44('0x4a')][_0x3d44('0x4d')];}else if(_0x455280[_0x3d44('0x4a')][_0x3d44('0x4e')]){_0xc46ac1[_0x3d44('0x4e')]=_0x455280['body'][_0x3d44('0x4e')];}return db[_0x3d44('0x2d')][_0x3d44('0x48')]({'where':_0xc46ac1})[_0x3d44('0x26')](function(_0x3118a8){if(_0x3118a8){throw new db[(_0x3d44('0x4f'))]['ValidationError'](_0x3d44('0x50'));}return db[_0x3d44('0x2d')][_0x3d44('0x51')](_0x455280[_0x3d44('0x4a')]);})[_0x3d44('0x26')](function(_0x5ac8d6){var _0x169a73=_0x455280['user'][_0x3d44('0x28')]({'plain':!![]});if(!_0x169a73)throw new Error(_0x3d44('0x52'));if(_0x169a73['role']===_0x3d44('0x53')){var _0x1256df=_0x5ac8d6['get']({'plain':!![]});return db['UserProfileSection'][_0x3d44('0x48')]({'where':{'name':_0x3d44('0x54'),'userProfileId':_0x169a73[_0x3d44('0x55')]},'raw':!![]})[_0x3d44('0x26')](function(_0x4c0d86){if(_0x4c0d86&&_0x4c0d86[_0x3d44('0x56')]===0x0){return db[_0x3d44('0x57')][_0x3d44('0x51')]({'name':_0x1256df[_0x3d44('0x33')],'resourceId':_0x1256df['id'],'type':_0x4c0d86['name'],'sectionId':_0x4c0d86['id']},{})[_0x3d44('0x26')](function(){return _0x5ac8d6;});}else{return _0x5ac8d6;}})[_0x3d44('0x42')](function(_0x32d61e){logger[_0x3d44('0x29')](_0x3d44('0x58'),_0x32d61e);throw _0x32d61e;});}return _0x5ac8d6;})[_0x3d44('0x26')](respondWithResult(_0xe3c614,0xc9))['catch'](handleError(_0xe3c614,null));};
\ No newline at end of file
+var _0x56ac=['../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','get','CannedAnswers','UserProfileResource','stack','name','send','index','map','CannedAnswer','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','merge','where','filter','options','includeAll','include','rows','show','params','rawAttributes','length','find','catch','body','destroy','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','bluebird','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x26f874,_0x4f7040){var _0x7759ac=function(_0x3c8988){while(--_0x3c8988){_0x26f874['push'](_0x26f874['shift']());}};_0x7759ac(++_0x4f7040);}(_0x56ac,0x196));var _0xc56a=function(_0x5b8363,_0x1bfd2b){_0x5b8363=_0x5b8363-0x0;var _0x1340c9=_0x56ac[_0x5b8363];return _0x1340c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc56a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc56a('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc56a('0x2'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc56a('0x3'));var csv=require(_0xc56a('0x4'));var ejs=require(_0xc56a('0x5'));var fs=require('fs');var fs_extra=require(_0xc56a('0x6'));var _=require(_0xc56a('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc56a('0x8'));var deskjs=require('desk.js');var toCsv=require(_0xc56a('0x4'));var querystring=require(_0xc56a('0x9'));var Papa=require('papaparse');var Redis=require(_0xc56a('0xa'));var authService=require(_0xc56a('0xb'));var qs=require(_0xc56a('0xc'));var as=require(_0xc56a('0xd'));var hardwareService=require(_0xc56a('0xe'));var logger=require(_0xc56a('0xf'))(_0xc56a('0x10'));var utils=require(_0xc56a('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xc56a('0x12'));var db=require(_0xc56a('0x13'))['db'];function respondWithStatusCode(_0x408dfe,_0x36f3ca){_0x36f3ca=_0x36f3ca||0xcc;return function(_0x2af3cf){if(_0x2af3cf){return _0x408dfe[_0xc56a('0x14')](_0x36f3ca);}return _0x408dfe[_0xc56a('0x15')](_0x36f3ca)[_0xc56a('0x16')]();};}function respondWithResult(_0x194fbf,_0x54cf49){_0x54cf49=_0x54cf49||0xc8;return function(_0x44092e){if(_0x44092e){return _0x194fbf[_0xc56a('0x15')](_0x54cf49)[_0xc56a('0x17')](_0x44092e);}};}function respondWithFilteredResult(_0x21526f,_0x3a85d3){return function(_0x1a3629){if(_0x1a3629){var _0x5506f4=typeof _0x3a85d3[_0xc56a('0x18')]==='undefined'&&typeof _0x3a85d3['limit']===_0xc56a('0x19');var _0x2e4bbd=_0x1a3629[_0xc56a('0x1a')];var _0x26ea47=_0x5506f4?0x0:_0x3a85d3[_0xc56a('0x18')];var _0x1b2fe6=_0x5506f4?_0x1a3629['count']:_0x3a85d3[_0xc56a('0x18')]+_0x3a85d3[_0xc56a('0x1b')];var _0x417d37;if(_0x1b2fe6>=_0x2e4bbd){_0x1b2fe6=_0x2e4bbd;_0x417d37=0xc8;}else{_0x417d37=0xce;}_0x21526f[_0xc56a('0x15')](_0x417d37);return _0x21526f[_0xc56a('0x1c')](_0xc56a('0x1d'),_0x26ea47+'-'+_0x1b2fe6+'/'+_0x2e4bbd)[_0xc56a('0x17')](_0x1a3629);}return null;};}function patchUpdates(_0x187bb9){return function(_0x5641ac){try{jsonpatch[_0xc56a('0x1e')](_0x5641ac,_0x187bb9,!![]);}catch(_0x3b3ca5){return BPromise['reject'](_0x3b3ca5);}return _0x5641ac[_0xc56a('0x1f')]();};}function saveUpdates(_0x208c47,_0xb1dfc9){return function(_0x351665){if(_0x351665){return _0x351665[_0xc56a('0x20')](_0x208c47)['then'](function(_0x2e152f){return _0x2e152f;});}return null;};}function removeEntity(_0x499d23,_0x371fc1){return function(_0x58a2e4){if(_0x58a2e4){return _0x58a2e4['destroy']()[_0xc56a('0x21')](function(){var _0x27540c=_0x58a2e4[_0xc56a('0x22')]({'plain':!![]});var _0x2a60c8=_0xc56a('0x23');return db[_0xc56a('0x24')]['destroy']({'where':{'type':_0x2a60c8,'resourceId':_0x27540c['id']}})[_0xc56a('0x21')](function(){return _0x58a2e4;});})[_0xc56a('0x21')](function(){_0x499d23[_0xc56a('0x15')](0xcc)[_0xc56a('0x16')]();});}};}function handleEntityNotFound(_0x8d87e,_0x15e92a){return function(_0x509013){if(!_0x509013){_0x8d87e['sendStatus'](0x194);}return _0x509013;};}function handleError(_0x457e27,_0x18e4f6){_0x18e4f6=_0x18e4f6||0x1f4;return function(_0x3ff096){logger['error'](_0x3ff096[_0xc56a('0x25')]);if(_0x3ff096['name']){delete _0x3ff096[_0xc56a('0x26')];}_0x457e27[_0xc56a('0x15')](_0x18e4f6)[_0xc56a('0x27')](_0x3ff096);};}exports[_0xc56a('0x28')]=function(_0xd21a49,_0x1823b2){var _0x5d8c19={},_0x4c2531={},_0x1b0551={'count':0x0,'rows':[]};var _0x2ae8c0=_[_0xc56a('0x29')](db[_0xc56a('0x2a')]['rawAttributes'],function(_0x4d0572){return{'name':_0x4d0572[_0xc56a('0x2b')],'type':_0x4d0572[_0xc56a('0x2c')][_0xc56a('0x2d')]};});_0x4c2531[_0xc56a('0x2e')]=_[_0xc56a('0x29')](_0x2ae8c0,_0xc56a('0x26'));_0x4c2531[_0xc56a('0x2f')]=_[_0xc56a('0x30')](_0xd21a49['query']);_0x4c2531[_0xc56a('0x31')]=_[_0xc56a('0x32')](_0x4c2531[_0xc56a('0x2e')],_0x4c2531[_0xc56a('0x2f')]);_0x5d8c19[_0xc56a('0x33')]=_[_0xc56a('0x32')](_0x4c2531[_0xc56a('0x2e')],qs[_0xc56a('0x34')](_0xd21a49[_0xc56a('0x2f')][_0xc56a('0x34')]));_0x5d8c19[_0xc56a('0x33')]=_0x5d8c19['attributes']['length']?_0x5d8c19[_0xc56a('0x33')]:_0x4c2531['model'];if(!_0xd21a49[_0xc56a('0x2f')]['hasOwnProperty'](_0xc56a('0x35'))){_0x5d8c19[_0xc56a('0x1b')]=qs['limit'](_0xd21a49['query'][_0xc56a('0x1b')]);_0x5d8c19[_0xc56a('0x18')]=qs[_0xc56a('0x18')](_0xd21a49[_0xc56a('0x2f')]['offset']);}_0x5d8c19[_0xc56a('0x36')]=qs['sort'](_0xd21a49[_0xc56a('0x2f')][_0xc56a('0x37')]);_0x5d8c19['where']=qs[_0xc56a('0x31')](_[_0xc56a('0x38')](_0xd21a49['query'],_0x4c2531[_0xc56a('0x31')]),_0x2ae8c0);if(_0xd21a49[_0xc56a('0x2f')]['filter']){_0x5d8c19['where']=_[_0xc56a('0x39')](_0x5d8c19[_0xc56a('0x3a')],{'$or':[{'key':{'$like':'%'+_0xd21a49['query'][_0xc56a('0x3b')]+'%'}},{'value':{'$like':'%'+_0xd21a49['query'][_0xc56a('0x3b')]+'%'}}]});}_0x5d8c19=_[_0xc56a('0x39')]({},_0x5d8c19,_0xd21a49[_0xc56a('0x3c')]);var _0x246b27={'where':_0x5d8c19[_0xc56a('0x3a')]};return db['CannedAnswer'][_0xc56a('0x1a')](_0x246b27)[_0xc56a('0x21')](function(_0x203b7b){_0x1b0551[_0xc56a('0x1a')]=_0x203b7b;if(_0xd21a49[_0xc56a('0x2f')][_0xc56a('0x3d')]){_0x5d8c19[_0xc56a('0x3e')]=[{'all':!![]}];}return db[_0xc56a('0x2a')]['findAll'](_0x5d8c19);})[_0xc56a('0x21')](function(_0x490d36){_0x1b0551[_0xc56a('0x3f')]=_0x490d36;return _0x1b0551;})['then'](respondWithFilteredResult(_0x1823b2,_0x5d8c19))['catch'](handleError(_0x1823b2,null));};exports[_0xc56a('0x40')]=function(_0x481cb5,_0x35f5c){var _0x4ca682={'raw':!![],'where':{'id':_0x481cb5[_0xc56a('0x41')]['id']}},_0x33406c={};_0x33406c[_0xc56a('0x2e')]=_[_0xc56a('0x30')](db[_0xc56a('0x2a')][_0xc56a('0x42')]);_0x33406c[_0xc56a('0x2f')]=_['keys'](_0x481cb5['query']);_0x33406c['filters']=_['intersection'](_0x33406c[_0xc56a('0x2e')],_0x33406c[_0xc56a('0x2f')]);_0x4ca682[_0xc56a('0x33')]=_[_0xc56a('0x32')](_0x33406c[_0xc56a('0x2e')],qs[_0xc56a('0x34')](_0x481cb5[_0xc56a('0x2f')][_0xc56a('0x34')]));_0x4ca682[_0xc56a('0x33')]=_0x4ca682[_0xc56a('0x33')][_0xc56a('0x43')]?_0x4ca682[_0xc56a('0x33')]:_0x33406c[_0xc56a('0x2e')];if(_0x481cb5['query'][_0xc56a('0x3d')]){_0x4ca682[_0xc56a('0x3e')]=[{'all':!![]}];}_0x4ca682=_[_0xc56a('0x39')]({},_0x4ca682,_0x481cb5[_0xc56a('0x3c')]);return db['CannedAnswer'][_0xc56a('0x44')](_0x4ca682)['then'](handleEntityNotFound(_0x35f5c,null))[_0xc56a('0x21')](respondWithResult(_0x35f5c,null))[_0xc56a('0x45')](handleError(_0x35f5c,null));};exports[_0xc56a('0x20')]=function(_0x492cd1,_0x4027a7){if(_0x492cd1[_0xc56a('0x46')]['id']){delete _0x492cd1['body']['id'];}return db[_0xc56a('0x2a')][_0xc56a('0x44')]({'where':{'id':_0x492cd1[_0xc56a('0x41')]['id']}})[_0xc56a('0x21')](handleEntityNotFound(_0x4027a7,null))[_0xc56a('0x21')](saveUpdates(_0x492cd1[_0xc56a('0x46')],null))[_0xc56a('0x21')](respondWithResult(_0x4027a7,null))[_0xc56a('0x45')](handleError(_0x4027a7,null));};exports[_0xc56a('0x47')]=function(_0xf374cc,_0x146f84){return db[_0xc56a('0x2a')][_0xc56a('0x44')]({'where':{'id':_0xf374cc[_0xc56a('0x41')]['id']}})[_0xc56a('0x21')](handleEntityNotFound(_0x146f84,null))[_0xc56a('0x21')](removeEntity(_0x146f84,null))[_0xc56a('0x45')](handleError(_0x146f84,null));};exports[_0xc56a('0x48')]=function(_0x5a53bb,_0xab6eba){var _0x4ba33c={'key':_0x5a53bb['body'][_0xc56a('0x2d')]};if(_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x49')]){_0x4ba33c[_0xc56a('0x49')]=_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x49')];}else if(_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x4a')]){_0x4ba33c[_0xc56a('0x4a')]=_0x5a53bb['body'][_0xc56a('0x4a')];}else if(_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x4b')]){_0x4ba33c['OpenchannelAccountId']=_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x4b')];}else if(_0x5a53bb['body'][_0xc56a('0x4c')]){_0x4ba33c[_0xc56a('0x4c')]=_0x5a53bb[_0xc56a('0x46')][_0xc56a('0x4c')];}return db['CannedAnswer'][_0xc56a('0x44')]({'where':_0x4ba33c})[_0xc56a('0x21')](function(_0xa2c2c9){if(_0xa2c2c9){throw new db[(_0xc56a('0x4d'))]['ValidationError'](_0xc56a('0x4e'));}return db[_0xc56a('0x2a')][_0xc56a('0x48')](_0x5a53bb['body']);})['then'](function(_0x2e85df){var _0x4c1be8=_0x5a53bb[_0xc56a('0x4f')][_0xc56a('0x22')]({'plain':!![]});if(!_0x4c1be8)throw new Error(_0xc56a('0x50'));if(_0x4c1be8['role']===_0xc56a('0x4f')){var _0x365fe9=_0x2e85df[_0xc56a('0x22')]({'plain':!![]});return db[_0xc56a('0x51')][_0xc56a('0x44')]({'where':{'name':'CannedAnswers','userProfileId':_0x4c1be8[_0xc56a('0x52')]},'raw':!![]})[_0xc56a('0x21')](function(_0x139430){if(_0x139430&&_0x139430[_0xc56a('0x53')]===0x0){return db[_0xc56a('0x24')]['create']({'name':_0x365fe9[_0xc56a('0x26')],'resourceId':_0x365fe9['id'],'type':_0x139430[_0xc56a('0x26')],'sectionId':_0x139430['id']},{})['then'](function(){return _0x2e85df;});}else{return _0x2e85df;}})[_0xc56a('0x45')](function(_0x213f65){logger['error'](_0xc56a('0x54'),_0x213f65);throw _0x213f65;});}return _0x2e85df;})[_0xc56a('0x21')](respondWithResult(_0xab6eba,0xc9))['catch'](handleError(_0xab6eba,null));};
\ No newline at end of file
index 99e0854..fa61ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e43=['tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./cannedAnswer.attributes','exports','define','CannedAnswer'];(function(_0x37138b,_0x43cd74){var _0xe73e09=function(_0x23c909){while(--_0x23c909){_0x37138b['push'](_0x37138b['shift']());}};_0xe73e09(++_0x43cd74);}(_0x5e43,0x1f2));var _0x35e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e43[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x35e4('0x0'));var util=require(_0x35e4('0x1'));var logger=require(_0x35e4('0x2'))('api');var moment=require(_0x35e4('0x3'));var BPromise=require(_0x35e4('0x4'));var rp=require(_0x35e4('0x5'));var fs=require('fs');var path=require(_0x35e4('0x6'));var rimraf=require(_0x35e4('0x7'));var config=require('../../config/environment');var attributes=require(_0x35e4('0x8'));module[_0x35e4('0x9')]=function(_0x262766,_0x382546){return _0x262766[_0x35e4('0xa')](_0x35e4('0xb'),attributes,{'tableName':_0x35e4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x35e4('0xd'),'collate':_0x35e4('0xe')});};
\ No newline at end of file
+var _0x5a40=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x305bbf,_0x5647b3){var _0x4ed772=function(_0x3315ed){while(--_0x3315ed){_0x305bbf['push'](_0x305bbf['shift']());}};_0x4ed772(++_0x5647b3);}(_0x5a40,0x83));var _0x05a4=function(_0x5d2a76,_0x4e8410){_0x5d2a76=_0x5d2a76-0x0;var _0x2426fd=_0x5a40[_0x5d2a76];return _0x2426fd;};'use strict';var _=require(_0x05a4('0x0'));var util=require(_0x05a4('0x1'));var logger=require(_0x05a4('0x2'))(_0x05a4('0x3'));var moment=require(_0x05a4('0x4'));var BPromise=require(_0x05a4('0x5'));var rp=require(_0x05a4('0x6'));var fs=require('fs');var path=require(_0x05a4('0x7'));var rimraf=require(_0x05a4('0x8'));var config=require(_0x05a4('0x9'));var attributes=require(_0x05a4('0xa'));module[_0x05a4('0xb')]=function(_0x316fd8,_0xbb518e){return _0x316fd8['define'](_0x05a4('0xc'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x05a4('0xd'),'collate':_0x05a4('0xe')});};
\ No newline at end of file
index c84f395..ec1663e 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(_0x47acfb,_0x39eadc){var _0x2cb79f=function(_0x2ba4f3){while(--_0x2ba4f3){_0x47acfb['push'](_0x47acfb['shift']());}};_0x2cb79f(++_0x39eadc);}(_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(_0x4c74e2,_0x120152){var _0x48efbb=function(_0x1ccc14){while(--_0x1ccc14){_0x4c74e2['push'](_0x4c74e2['shift']());}};_0x48efbb(++_0x120152);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 0c256f6..ef34e46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a8d=['/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','post','create','put'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x3a8d,0x8a));var _0xd3a8=function(_0x40b493,_0x4050de){_0x40b493=_0x40b493-0x0;var _0x548365=_0x3a8d[_0x40b493];return _0x548365;};'use strict';var multer=require('multer');var util=require(_0xd3a8('0x0'));var path=require(_0xd3a8('0x1'));var timeout=require(_0xd3a8('0x2'));var express=require(_0xd3a8('0x3'));var router=express['Router']();var fs_extra=require(_0xd3a8('0x4'));var auth=require(_0xd3a8('0x5'));var interaction=require(_0xd3a8('0x6'));var config=require(_0xd3a8('0x7'));var controller=require(_0xd3a8('0x8'));router[_0xd3a8('0x9')]('/',auth[_0xd3a8('0xa')](),controller['index']);router['get']('/:id',auth[_0xd3a8('0xa')](),controller['show']);router[_0xd3a8('0xb')]('/',auth[_0xd3a8('0xa')](),controller[_0xd3a8('0xc')]);router[_0xd3a8('0xd')](_0xd3a8('0xe'),auth[_0xd3a8('0xa')](),controller[_0xd3a8('0xf')]);router[_0xd3a8('0x10')](_0xd3a8('0xe'),auth[_0xd3a8('0xa')](),controller[_0xd3a8('0x11')]);module[_0xd3a8('0x12')]=router;
\ No newline at end of file
+var _0xf933=['create','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post'];(function(_0x297ac5,_0x4fa0ee){var _0x3585ea=function(_0xde73f6){while(--_0xde73f6){_0x297ac5['push'](_0x297ac5['shift']());}};_0x3585ea(++_0x4fa0ee);}(_0xf933,0x17b));var _0x3f93=function(_0x5466ab,_0x227b13){_0x5466ab=_0x5466ab-0x0;var _0x40751a=_0xf933[_0x5466ab];return _0x40751a;};'use strict';var multer=require(_0x3f93('0x0'));var util=require(_0x3f93('0x1'));var path=require(_0x3f93('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3f93('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3f93('0x4'));var interaction=require(_0x3f93('0x5'));var config=require(_0x3f93('0x6'));var controller=require('./cannedAnswer.controller');router[_0x3f93('0x7')]('/',auth[_0x3f93('0x8')](),controller['index']);router[_0x3f93('0x7')](_0x3f93('0x9'),auth[_0x3f93('0x8')](),controller[_0x3f93('0xa')]);router[_0x3f93('0xb')]('/',auth[_0x3f93('0x8')](),controller[_0x3f93('0xc')]);router['put'](_0x3f93('0x9'),auth[_0x3f93('0x8')](),controller[_0x3f93('0xd')]);router[_0x3f93('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x3f93('0xf')]);module[_0x3f93('0x10')]=router;
\ No newline at end of file
index f77db63..e7a7837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize'];(function(_0x1d5e61,_0x13c4af){var _0x3a8383=function(_0x252d78){while(--_0x252d78){_0x1d5e61['push'](_0x1d5e61['shift']());}};_0x3a8383(++_0x13c4af);}(_0x524a,0xf5));var _0xa524=function(_0x4d38a1,_0x2ca715){_0x4d38a1=_0x4d38a1-0x0;var _0x205c4e=_0x524a[_0x4d38a1];return _0x205c4e;};'use strict';var Sequelize=require(_0xa524('0x0'));module[_0xa524('0x1')]={'calldate':{'type':Sequelize[_0xa524('0x2')],'allowNull':![],'defaultValue':_0xa524('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xa524('0x4')]},'dst':{'type':Sequelize[_0xa524('0x4')]},'dcontext':{'type':Sequelize[_0xa524('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xa524('0x4')]},'lastdata':{'type':Sequelize[_0xa524('0x4')]},'duration':{'type':Sequelize[_0xa524('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa524('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xa524('0x4')]},'userfield':{'type':Sequelize[_0xa524('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xa524('0x4')]},'sequence':{'type':Sequelize[_0xa524('0x4')]},'peeraccount':{'type':Sequelize[_0xa524('0x4')]},'type':{'type':Sequelize[_0xa524('0x4')]},'tag':{'type':Sequelize[_0xa524('0x4')]}};
\ No newline at end of file
+var _0x41bb=['STRING','INTEGER','sequelize','exports','1970-01-01\x2000:00:01'];(function(_0xb1a0bd,_0x179691){var _0x1b761c=function(_0x1c7678){while(--_0x1c7678){_0xb1a0bd['push'](_0xb1a0bd['shift']());}};_0x1b761c(++_0x179691);}(_0x41bb,0xc5));var _0xb41b=function(_0x4d12c6,_0x1b5acc){_0x4d12c6=_0x4d12c6-0x0;var _0x2a8ee6=_0x41bb[_0x4d12c6];return _0x2a8ee6;};'use strict';var Sequelize=require(_0xb41b('0x0'));module[_0xb41b('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xb41b('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xb41b('0x3')]},'dst':{'type':Sequelize[_0xb41b('0x3')]},'dcontext':{'type':Sequelize[_0xb41b('0x3')]},'channel':{'type':Sequelize[_0xb41b('0x3')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xb41b('0x3')]},'lastdata':{'type':Sequelize[_0xb41b('0x3')]},'duration':{'type':Sequelize[_0xb41b('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xb41b('0x3')]},'userfield':{'type':Sequelize[_0xb41b('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xb41b('0x3')]},'sequence':{'type':Sequelize[_0xb41b('0x3')]},'peeraccount':{'type':Sequelize[_0xb41b('0x3')]},'type':{'type':Sequelize[_0xb41b('0x3')]},'tag':{'type':Sequelize[_0xb41b('0x3')]}};
\ No newline at end of file
index 6d7f93d..4ff2d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae24=['destroy','stack','name','send','index','map','Cdr','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','order','where','pick','merge','VIRTUAL','filter','options','findAll','catch','params','rawAttributes','fields','length','includeAll','include','find','create','body','describe','eml-format','zip-dir','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then'];(function(_0x161cf4,_0x5ab5e4){var _0x12c6a5=function(_0x156a3e){while(--_0x156a3e){_0x161cf4['push'](_0x161cf4['shift']());}};_0x12c6a5(++_0x5ab5e4);}(_0xae24,0x182));var _0x4ae2=function(_0x7a02d5,_0x31119e){_0x7a02d5=_0x7a02d5-0x0;var _0x2bded6=_0xae24[_0x7a02d5];return _0x2bded6;};'use strict';var emlformat=require(_0x4ae2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4ae2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4ae2('0x2'));var moment=require(_0x4ae2('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ae2('0x4'));var path=require('path');var sox=require(_0x4ae2('0x5'));var csv=require(_0x4ae2('0x6'));var ejs=require(_0x4ae2('0x7'));var fs=require('fs');var fs_extra=require(_0x4ae2('0x8'));var _=require(_0x4ae2('0x9'));var squel=require(_0x4ae2('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4ae2('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4ae2('0xc'));var Redis=require(_0x4ae2('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x4ae2('0xe'));var as=require(_0x4ae2('0xf'));var hardwareService=require(_0x4ae2('0x10'));var logger=require(_0x4ae2('0x11'))('api');var utils=require(_0x4ae2('0x12'));var config=require(_0x4ae2('0x13'));var licenseUtil=require(_0x4ae2('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25d2b4,_0x22ac1e){_0x22ac1e=_0x22ac1e||0xcc;return function(_0x30d6c4){if(_0x30d6c4){return _0x25d2b4[_0x4ae2('0x15')](_0x22ac1e);}return _0x25d2b4[_0x4ae2('0x16')](_0x22ac1e)[_0x4ae2('0x17')]();};}function respondWithResult(_0x145287,_0x3cabc9){_0x3cabc9=_0x3cabc9||0xc8;return function(_0xd527a0){if(_0xd527a0){return _0x145287['status'](_0x3cabc9)['json'](_0xd527a0);}};}function respondWithFilteredResult(_0x4d5cab,_0x2f3936){return function(_0xf834a1){if(_0xf834a1){var _0x5f447a=typeof _0x2f3936[_0x4ae2('0x18')]===_0x4ae2('0x19')&&typeof _0x2f3936[_0x4ae2('0x1a')]===_0x4ae2('0x19');var _0x428d24=_0xf834a1[_0x4ae2('0x1b')];var _0x3d4259=_0x5f447a?0x0:_0x2f3936[_0x4ae2('0x18')];var _0x41b672=_0x5f447a?_0xf834a1[_0x4ae2('0x1b')]:_0x2f3936['offset']+_0x2f3936['limit'];var _0x44a2d3;if(_0x41b672>=_0x428d24){_0x41b672=_0x428d24;_0x44a2d3=0xc8;}else{_0x44a2d3=0xce;}_0x4d5cab[_0x4ae2('0x16')](_0x44a2d3);return _0x4d5cab['set'](_0x4ae2('0x1c'),_0x3d4259+'-'+_0x41b672+'/'+_0x428d24)[_0x4ae2('0x1d')](_0xf834a1);}return null;};}function patchUpdates(_0xccb3b){return function(_0x2ad222){try{jsonpatch[_0x4ae2('0x1e')](_0x2ad222,_0xccb3b,!![]);}catch(_0x497218){return BPromise[_0x4ae2('0x1f')](_0x497218);}return _0x2ad222['save']();};}function saveUpdates(_0x522165,_0x2ceec4){return function(_0x151b70){if(_0x151b70){return _0x151b70[_0x4ae2('0x20')](_0x522165)[_0x4ae2('0x21')](function(_0xca16bf){return _0xca16bf;});}return null;};}function removeEntity(_0x526768,_0x1005e0){return function(_0x4a0ddb){if(_0x4a0ddb){return _0x4a0ddb[_0x4ae2('0x22')]()[_0x4ae2('0x21')](function(){_0x526768[_0x4ae2('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x43f112,_0x6f0cc6){return function(_0x2454b3){if(!_0x2454b3){_0x43f112[_0x4ae2('0x15')](0x194);}return _0x2454b3;};}function handleError(_0x1c2934,_0x255772){_0x255772=_0x255772||0x1f4;return function(_0x5b2e65){logger['error'](_0x5b2e65[_0x4ae2('0x23')]);if(_0x5b2e65[_0x4ae2('0x24')]){delete _0x5b2e65[_0x4ae2('0x24')];}_0x1c2934[_0x4ae2('0x16')](_0x255772)[_0x4ae2('0x25')](_0x5b2e65);};}exports[_0x4ae2('0x26')]=function(_0x57a377,_0x5ec1fd){var _0x3e2666={},_0x4e7741={},_0x554cff={'count':0x0,'rows':[]};var _0x5e9f03=_[_0x4ae2('0x27')](db[_0x4ae2('0x28')]['rawAttributes'],function(_0x883fd5){return{'name':_0x883fd5[_0x4ae2('0x29')],'type':_0x883fd5[_0x4ae2('0x2a')][_0x4ae2('0x2b')]};});_0x4e7741[_0x4ae2('0x2c')]=_[_0x4ae2('0x27')](_0x5e9f03,_0x4ae2('0x24'));_0x4e7741[_0x4ae2('0x2d')]=_[_0x4ae2('0x2e')](_0x57a377[_0x4ae2('0x2d')]);_0x4e7741[_0x4ae2('0x2f')]=_[_0x4ae2('0x30')](_0x4e7741[_0x4ae2('0x2c')],_0x4e7741[_0x4ae2('0x2d')]);_0x3e2666[_0x4ae2('0x31')]=_[_0x4ae2('0x30')](_0x4e7741[_0x4ae2('0x2c')],qs['fields'](_0x57a377[_0x4ae2('0x2d')]['fields']));_0x3e2666[_0x4ae2('0x31')]=_0x3e2666[_0x4ae2('0x31')]['length']?_0x3e2666[_0x4ae2('0x31')]:_0x4e7741[_0x4ae2('0x2c')];if(!_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x32')]('nolimit')){_0x3e2666[_0x4ae2('0x1a')]=qs[_0x4ae2('0x1a')](_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x1a')]);_0x3e2666[_0x4ae2('0x18')]=qs[_0x4ae2('0x18')](_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x18')]);}_0x3e2666[_0x4ae2('0x33')]=qs['sort'](_0x57a377[_0x4ae2('0x2d')]['sort']);_0x3e2666[_0x4ae2('0x34')]=qs[_0x4ae2('0x2f')](_[_0x4ae2('0x35')](_0x57a377[_0x4ae2('0x2d')],_0x4e7741[_0x4ae2('0x2f')]),_0x5e9f03);if(_0x57a377[_0x4ae2('0x2d')]['filter']){_0x3e2666[_0x4ae2('0x34')]=_[_0x4ae2('0x36')](_0x3e2666[_0x4ae2('0x34')],{'$or':_[_0x4ae2('0x27')](_0x5e9f03,function(_0x49baf9){if(_0x49baf9[_0x4ae2('0x2a')]!==_0x4ae2('0x37')){var _0x2f0d83={};_0x2f0d83[_0x49baf9[_0x4ae2('0x24')]]={'$like':'%'+_0x57a377[_0x4ae2('0x2d')][_0x4ae2('0x38')]+'%'};return _0x2f0d83;}})});}_0x3e2666=_[_0x4ae2('0x36')]({},_0x3e2666,_0x57a377[_0x4ae2('0x39')]);var _0x1d5888={'where':_0x3e2666[_0x4ae2('0x34')]};return db[_0x4ae2('0x28')]['count'](_0x1d5888)[_0x4ae2('0x21')](function(_0x3f0b3f){_0x554cff[_0x4ae2('0x1b')]=_0x3f0b3f;if(_0x57a377[_0x4ae2('0x2d')]['includeAll']){_0x3e2666['include']=[{'all':!![]}];}return db[_0x4ae2('0x28')][_0x4ae2('0x3a')](_0x3e2666);})[_0x4ae2('0x21')](function(_0x3cdf23){_0x554cff['rows']=_0x3cdf23;return _0x554cff;})[_0x4ae2('0x21')](respondWithFilteredResult(_0x5ec1fd,_0x3e2666))[_0x4ae2('0x3b')](handleError(_0x5ec1fd,null));};exports['show']=function(_0x230030,_0x2a85eb){var _0x11a5d9={'raw':!![],'where':{'id':_0x230030[_0x4ae2('0x3c')]['id']}},_0x5a9126={};_0x5a9126[_0x4ae2('0x2c')]=_[_0x4ae2('0x2e')](db[_0x4ae2('0x28')][_0x4ae2('0x3d')]);_0x5a9126[_0x4ae2('0x2d')]=_[_0x4ae2('0x2e')](_0x230030[_0x4ae2('0x2d')]);_0x5a9126['filters']=_[_0x4ae2('0x30')](_0x5a9126[_0x4ae2('0x2c')],_0x5a9126['query']);_0x11a5d9[_0x4ae2('0x31')]=_[_0x4ae2('0x30')](_0x5a9126['model'],qs[_0x4ae2('0x3e')](_0x230030[_0x4ae2('0x2d')]['fields']));_0x11a5d9[_0x4ae2('0x31')]=_0x11a5d9[_0x4ae2('0x31')][_0x4ae2('0x3f')]?_0x11a5d9['attributes']:_0x5a9126['model'];if(_0x230030[_0x4ae2('0x2d')][_0x4ae2('0x40')]){_0x11a5d9[_0x4ae2('0x41')]=[{'all':!![]}];}_0x11a5d9=_[_0x4ae2('0x36')]({},_0x11a5d9,_0x230030['options']);return db[_0x4ae2('0x28')][_0x4ae2('0x42')](_0x11a5d9)[_0x4ae2('0x21')](handleEntityNotFound(_0x2a85eb,null))['then'](respondWithResult(_0x2a85eb,null))[_0x4ae2('0x3b')](handleError(_0x2a85eb,null));};exports[_0x4ae2('0x43')]=function(_0x443548,_0x4e9b6e){return db[_0x4ae2('0x28')][_0x4ae2('0x43')](_0x443548[_0x4ae2('0x44')],{})[_0x4ae2('0x21')](respondWithResult(_0x4e9b6e,0xc9))[_0x4ae2('0x3b')](handleError(_0x4e9b6e,null));};exports[_0x4ae2('0x20')]=function(_0x7f288e,_0x2fe532){if(_0x7f288e[_0x4ae2('0x44')]['id']){delete _0x7f288e[_0x4ae2('0x44')]['id'];}return db['Cdr'][_0x4ae2('0x42')]({'where':{'id':_0x7f288e[_0x4ae2('0x3c')]['id']}})[_0x4ae2('0x21')](handleEntityNotFound(_0x2fe532,null))[_0x4ae2('0x21')](saveUpdates(_0x7f288e[_0x4ae2('0x44')],null))[_0x4ae2('0x21')](respondWithResult(_0x2fe532,null))[_0x4ae2('0x3b')](handleError(_0x2fe532,null));};exports[_0x4ae2('0x22')]=function(_0x4ffe8d,_0xe58384){return db[_0x4ae2('0x28')]['find']({'where':{'id':_0x4ffe8d[_0x4ae2('0x3c')]['id']}})[_0x4ae2('0x21')](handleEntityNotFound(_0xe58384,null))['then'](removeEntity(_0xe58384,null))[_0x4ae2('0x3b')](handleError(_0xe58384,null));};exports['describe']=function(_0x426d29,_0x5e1c80){return db[_0x4ae2('0x28')][_0x4ae2('0x45')]()[_0x4ae2('0x21')](respondWithResult(_0x5e1c80,null))[_0x4ae2('0x3b')](handleError(_0x5e1c80,null));};
\ No newline at end of file
+var _0x9206=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','Cdr','fieldName','key','model','map','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','VIRTUAL','options','findAll','catch','show','params','length','includeAll','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','ejs','lodash','squel'];(function(_0xf61b8e,_0x304f61){var _0x391fdd=function(_0x5f49ed){while(--_0x5f49ed){_0xf61b8e['push'](_0xf61b8e['shift']());}};_0x391fdd(++_0x304f61);}(_0x9206,0x176));var _0x6920=function(_0x216dcb,_0x207f99){_0x216dcb=_0x216dcb-0x0;var _0x33a97f=_0x9206[_0x216dcb];return _0x33a97f;};'use strict';var emlformat=require(_0x6920('0x0'));var rimraf=require(_0x6920('0x1'));var zipdir=require(_0x6920('0x2'));var jsonpatch=require(_0x6920('0x3'));var rp=require(_0x6920('0x4'));var moment=require(_0x6920('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6920('0x6'));var path=require(_0x6920('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6920('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6920('0x9'));var squel=require(_0x6920('0xa'));var crypto=require(_0x6920('0xb'));var jsforce=require(_0x6920('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6920('0xd'));var Papa=require(_0x6920('0xe'));var Redis=require(_0x6920('0xf'));var authService=require(_0x6920('0x10'));var qs=require(_0x6920('0x11'));var as=require(_0x6920('0x12'));var hardwareService=require(_0x6920('0x13'));var logger=require(_0x6920('0x14'))(_0x6920('0x15'));var utils=require(_0x6920('0x16'));var config=require(_0x6920('0x17'));var licenseUtil=require(_0x6920('0x18'));var db=require(_0x6920('0x19'))['db'];function respondWithStatusCode(_0x5ad438,_0x4f8430){_0x4f8430=_0x4f8430||0xcc;return function(_0x31730c){if(_0x31730c){return _0x5ad438[_0x6920('0x1a')](_0x4f8430);}return _0x5ad438['status'](_0x4f8430)[_0x6920('0x1b')]();};}function respondWithResult(_0xfa2823,_0x18140a){_0x18140a=_0x18140a||0xc8;return function(_0x2c3a35){if(_0x2c3a35){return _0xfa2823[_0x6920('0x1c')](_0x18140a)['json'](_0x2c3a35);}};}function respondWithFilteredResult(_0x338e5f,_0x20cdfb){return function(_0x15d8af){if(_0x15d8af){var _0xa64034=typeof _0x20cdfb[_0x6920('0x1d')]===_0x6920('0x1e')&&typeof _0x20cdfb[_0x6920('0x1f')]===_0x6920('0x1e');var _0x11ce91=_0x15d8af[_0x6920('0x20')];var _0x462500=_0xa64034?0x0:_0x20cdfb[_0x6920('0x1d')];var _0xc6e86b=_0xa64034?_0x15d8af[_0x6920('0x20')]:_0x20cdfb[_0x6920('0x1d')]+_0x20cdfb['limit'];var _0x3a0c0c;if(_0xc6e86b>=_0x11ce91){_0xc6e86b=_0x11ce91;_0x3a0c0c=0xc8;}else{_0x3a0c0c=0xce;}_0x338e5f[_0x6920('0x1c')](_0x3a0c0c);return _0x338e5f[_0x6920('0x21')](_0x6920('0x22'),_0x462500+'-'+_0xc6e86b+'/'+_0x11ce91)[_0x6920('0x23')](_0x15d8af);}return null;};}function patchUpdates(_0x16cb96){return function(_0x2cce0b){try{jsonpatch[_0x6920('0x24')](_0x2cce0b,_0x16cb96,!![]);}catch(_0xaf93ba){return BPromise[_0x6920('0x25')](_0xaf93ba);}return _0x2cce0b[_0x6920('0x26')]();};}function saveUpdates(_0x39013e,_0x1df372){return function(_0x2dd788){if(_0x2dd788){return _0x2dd788[_0x6920('0x27')](_0x39013e)[_0x6920('0x28')](function(_0x1ae686){return _0x1ae686;});}return null;};}function removeEntity(_0x3a6e48,_0xa8f55){return function(_0x258986){if(_0x258986){return _0x258986['destroy']()[_0x6920('0x28')](function(){_0x3a6e48['status'](0xcc)[_0x6920('0x1b')]();});}};}function handleEntityNotFound(_0x4dd08b,_0x72316a){return function(_0x32a6ae){if(!_0x32a6ae){_0x4dd08b[_0x6920('0x1a')](0x194);}return _0x32a6ae;};}function handleError(_0xd069c,_0x5868e1){_0x5868e1=_0x5868e1||0x1f4;return function(_0x1cab00){logger[_0x6920('0x29')](_0x1cab00[_0x6920('0x2a')]);if(_0x1cab00[_0x6920('0x2b')]){delete _0x1cab00[_0x6920('0x2b')];}_0xd069c[_0x6920('0x1c')](_0x5868e1)[_0x6920('0x2c')](_0x1cab00);};}exports[_0x6920('0x2d')]=function(_0x400894,_0x2f5ce8){var _0x6860c7={},_0x2b2cd9={},_0x548fbc={'count':0x0,'rows':[]};var _0x182f1b=_['map'](db[_0x6920('0x2e')]['rawAttributes'],function(_0x31aa90){return{'name':_0x31aa90[_0x6920('0x2f')],'type':_0x31aa90['type'][_0x6920('0x30')]};});_0x2b2cd9[_0x6920('0x31')]=_[_0x6920('0x32')](_0x182f1b,'name');_0x2b2cd9['query']=_[_0x6920('0x33')](_0x400894['query']);_0x2b2cd9['filters']=_[_0x6920('0x34')](_0x2b2cd9[_0x6920('0x31')],_0x2b2cd9[_0x6920('0x35')]);_0x6860c7[_0x6920('0x36')]=_[_0x6920('0x34')](_0x2b2cd9[_0x6920('0x31')],qs[_0x6920('0x37')](_0x400894['query'][_0x6920('0x37')]));_0x6860c7['attributes']=_0x6860c7[_0x6920('0x36')]['length']?_0x6860c7['attributes']:_0x2b2cd9[_0x6920('0x31')];if(!_0x400894[_0x6920('0x35')][_0x6920('0x38')](_0x6920('0x39'))){_0x6860c7[_0x6920('0x1f')]=qs[_0x6920('0x1f')](_0x400894[_0x6920('0x35')][_0x6920('0x1f')]);_0x6860c7[_0x6920('0x1d')]=qs[_0x6920('0x1d')](_0x400894[_0x6920('0x35')][_0x6920('0x1d')]);}_0x6860c7['order']=qs[_0x6920('0x3a')](_0x400894['query'][_0x6920('0x3a')]);_0x6860c7[_0x6920('0x3b')]=qs[_0x6920('0x3c')](_['pick'](_0x400894[_0x6920('0x35')],_0x2b2cd9[_0x6920('0x3c')]),_0x182f1b);if(_0x400894[_0x6920('0x35')][_0x6920('0x3d')]){_0x6860c7['where']=_[_0x6920('0x3e')](_0x6860c7[_0x6920('0x3b')],{'$or':_['map'](_0x182f1b,function(_0x49be52){if(_0x49be52[_0x6920('0x3f')]!==_0x6920('0x40')){var _0x56ca8f={};_0x56ca8f[_0x49be52[_0x6920('0x2b')]]={'$like':'%'+_0x400894[_0x6920('0x35')]['filter']+'%'};return _0x56ca8f;}})});}_0x6860c7=_['merge']({},_0x6860c7,_0x400894[_0x6920('0x41')]);var _0x1f0c5f={'where':_0x6860c7[_0x6920('0x3b')]};return db[_0x6920('0x2e')][_0x6920('0x20')](_0x1f0c5f)['then'](function(_0x58f0e8){_0x548fbc['count']=_0x58f0e8;if(_0x400894[_0x6920('0x35')]['includeAll']){_0x6860c7['include']=[{'all':!![]}];}return db[_0x6920('0x2e')][_0x6920('0x42')](_0x6860c7);})['then'](function(_0x3aad11){_0x548fbc['rows']=_0x3aad11;return _0x548fbc;})[_0x6920('0x28')](respondWithFilteredResult(_0x2f5ce8,_0x6860c7))[_0x6920('0x43')](handleError(_0x2f5ce8,null));};exports[_0x6920('0x44')]=function(_0x1b3ebb,_0x3a994d){var _0x55d7b5={'raw':!![],'where':{'id':_0x1b3ebb[_0x6920('0x45')]['id']}},_0x4dfa0c={};_0x4dfa0c['model']=_['keys'](db['Cdr']['rawAttributes']);_0x4dfa0c[_0x6920('0x35')]=_[_0x6920('0x33')](_0x1b3ebb[_0x6920('0x35')]);_0x4dfa0c['filters']=_[_0x6920('0x34')](_0x4dfa0c[_0x6920('0x31')],_0x4dfa0c[_0x6920('0x35')]);_0x55d7b5[_0x6920('0x36')]=_[_0x6920('0x34')](_0x4dfa0c[_0x6920('0x31')],qs['fields'](_0x1b3ebb[_0x6920('0x35')][_0x6920('0x37')]));_0x55d7b5[_0x6920('0x36')]=_0x55d7b5[_0x6920('0x36')][_0x6920('0x46')]?_0x55d7b5[_0x6920('0x36')]:_0x4dfa0c[_0x6920('0x31')];if(_0x1b3ebb[_0x6920('0x35')][_0x6920('0x47')]){_0x55d7b5[_0x6920('0x48')]=[{'all':!![]}];}_0x55d7b5=_[_0x6920('0x3e')]({},_0x55d7b5,_0x1b3ebb[_0x6920('0x41')]);return db['Cdr'][_0x6920('0x49')](_0x55d7b5)[_0x6920('0x28')](handleEntityNotFound(_0x3a994d,null))['then'](respondWithResult(_0x3a994d,null))['catch'](handleError(_0x3a994d,null));};exports[_0x6920('0x4a')]=function(_0x3c231e,_0x20fab4){return db[_0x6920('0x2e')][_0x6920('0x4a')](_0x3c231e['body'],{})[_0x6920('0x28')](respondWithResult(_0x20fab4,0xc9))[_0x6920('0x43')](handleError(_0x20fab4,null));};exports[_0x6920('0x27')]=function(_0x51b12d,_0x4d1c79){if(_0x51b12d[_0x6920('0x4b')]['id']){delete _0x51b12d[_0x6920('0x4b')]['id'];}return db[_0x6920('0x2e')][_0x6920('0x49')]({'where':{'id':_0x51b12d['params']['id']}})[_0x6920('0x28')](handleEntityNotFound(_0x4d1c79,null))[_0x6920('0x28')](saveUpdates(_0x51b12d[_0x6920('0x4b')],null))[_0x6920('0x28')](respondWithResult(_0x4d1c79,null))[_0x6920('0x43')](handleError(_0x4d1c79,null));};exports['destroy']=function(_0x1c0dd9,_0x3fe81d){return db[_0x6920('0x2e')][_0x6920('0x49')]({'where':{'id':_0x1c0dd9[_0x6920('0x45')]['id']}})[_0x6920('0x28')](handleEntityNotFound(_0x3fe81d,null))[_0x6920('0x28')](removeEntity(_0x3fe81d,null))[_0x6920('0x43')](handleError(_0x3fe81d,null));};exports[_0x6920('0x4c')]=function(_0x1c6bba,_0x492a02){return db[_0x6920('0x2e')][_0x6920('0x4c')]()[_0x6920('0x28')](respondWithResult(_0x492a02,null))[_0x6920('0x43')](handleError(_0x492a02,null));};
\ No newline at end of file
index 71b5baf..9c7ac5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x43e85a,_0x2b2f76){var _0x53e31e=function(_0x5551d7){while(--_0x5551d7){_0x43e85a['push'](_0x43e85a['shift']());}};_0x53e31e(++_0x2b2f76);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x155a42,_0x1adfc6){var _0x5bcfac=function(_0x42b775){while(--_0x42b775){_0x155a42['push'](_0x155a42['shift']());}};_0x5bcfac(++_0x1adfc6);}(_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 4f1d6e2..32233cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a2=['request\x20sent','debug','stringify','error','code','message','info','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','Cdr,\x20%s,\x20%s'];(function(_0x22701a,_0x364e37){var _0x493240=function(_0x2d098a){while(--_0x2d098a){_0x22701a['push'](_0x22701a['shift']());}};_0x493240(++_0x364e37);}(_0xc3a2,0x125));var _0x2c3a=function(_0x469acc,_0x19f79b){_0x469acc=_0x469acc-0x0;var _0x41e5cd=_0xc3a2[_0x469acc];return _0x41e5cd;};'use strict';var _=require('lodash');var util=require(_0x2c3a('0x0'));var moment=require(_0x2c3a('0x1'));var BPromise=require(_0x2c3a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c3a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2c3a('0x4'));var logger=require(_0x2c3a('0x5'))('rpc');var config=require(_0x2c3a('0x6'));var jayson=require(_0x2c3a('0x7'));var client=jayson[_0x2c3a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x442f1b,_0x4ddce4,_0x127d44){return new BPromise(function(_0x43931c,_0x1a1579){return client[_0x2c3a('0x9')](_0x442f1b,_0x127d44)['then'](function(_0x165e6a){logger['info'](_0x2c3a('0xa'),_0x4ddce4,_0x2c3a('0xb'));logger[_0x2c3a('0xc')]('Cdr,\x20%s,\x20%s,\x20%s',_0x4ddce4,_0x2c3a('0xb'),JSON[_0x2c3a('0xd')](_0x165e6a));if(_0x165e6a['error']){if(_0x165e6a[_0x2c3a('0xe')][_0x2c3a('0xf')]===0x1f4){logger[_0x2c3a('0xe')]('Cdr,\x20%s,\x20%s',_0x4ddce4,_0x165e6a[_0x2c3a('0xe')][_0x2c3a('0x10')]);return _0x1a1579(_0x165e6a[_0x2c3a('0xe')]['message']);}logger[_0x2c3a('0xe')](_0x2c3a('0xa'),_0x4ddce4,_0x165e6a[_0x2c3a('0xe')]['message']);return _0x43931c(_0x165e6a['error']['message']);}else{logger[_0x2c3a('0x11')](_0x2c3a('0xa'),_0x4ddce4,_0x2c3a('0xb'));_0x43931c(_0x165e6a[_0x2c3a('0x12')][_0x2c3a('0x10')]);}})['catch'](function(_0x29d999){logger[_0x2c3a('0xe')]('Cdr,\x20%s,\x20%s',_0x4ddce4,_0x29d999);_0x1a1579(_0x29d999);});});}
\ No newline at end of file
+var _0x68d3=['../../config/logger','../../config/environment','client','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3dfa1e,_0x1be8eb){var _0x1e9541=function(_0x2f6414){while(--_0x2f6414){_0x3dfa1e['push'](_0x3dfa1e['shift']());}};_0x1e9541(++_0x1be8eb);}(_0x68d3,0x160));var _0x368d=function(_0x400b6d,_0x18167a){_0x400b6d=_0x400b6d-0x0;var _0x909842=_0x68d3[_0x400b6d];return _0x909842;};'use strict';var _=require(_0x368d('0x0'));var util=require(_0x368d('0x1'));var moment=require(_0x368d('0x2'));var BPromise=require(_0x368d('0x3'));var rs=require(_0x368d('0x4'));var fs=require('fs');var Redis=require(_0x368d('0x5'));var db=require(_0x368d('0x6'))['db'];var utils=require(_0x368d('0x7'));var logger=require(_0x368d('0x8'))('rpc');var config=require(_0x368d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x368d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17b681,_0x274978,_0x2b5428){return new BPromise(function(_0x10f913,_0x4ace42){return client[_0x368d('0xb')](_0x17b681,_0x2b5428)[_0x368d('0xc')](function(_0x101bfc){logger[_0x368d('0xd')](_0x368d('0xe'),_0x274978,_0x368d('0xf'));logger[_0x368d('0x10')](_0x368d('0x11'),_0x274978,_0x368d('0xf'),JSON[_0x368d('0x12')](_0x101bfc));if(_0x101bfc[_0x368d('0x13')]){if(_0x101bfc[_0x368d('0x13')][_0x368d('0x14')]===0x1f4){logger[_0x368d('0x13')](_0x368d('0xe'),_0x274978,_0x101bfc['error'][_0x368d('0x15')]);return _0x4ace42(_0x101bfc['error'][_0x368d('0x15')]);}logger[_0x368d('0x13')](_0x368d('0xe'),_0x274978,_0x101bfc[_0x368d('0x13')][_0x368d('0x15')]);return _0x10f913(_0x101bfc[_0x368d('0x13')][_0x368d('0x15')]);}else{logger['info'](_0x368d('0xe'),_0x274978,_0x368d('0xf'));_0x10f913(_0x101bfc[_0x368d('0x16')][_0x368d('0x15')]);}})[_0x368d('0x17')](function(_0x2c8397){logger[_0x368d('0x13')]('Cdr,\x20%s,\x20%s',_0x274978,_0x2c8397);_0x4ace42(_0x2c8397);});});}
\ No newline at end of file
index 803e891..5603a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x1d50f2,_0x3c3ec6){var _0x3769b8=function(_0x50926a){while(--_0x50926a){_0x1d50f2['push'](_0x1d50f2['shift']());}};_0x3769b8(++_0x3c3ec6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _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(_0x437ea9,_0x55c4cd){var _0x5c04b4=function(_0x8d7a4a){while(--_0x8d7a4a){_0x437ea9['push'](_0x437ea9['shift']());}};_0x5c04b4(++_0x55c4cd);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 29c7f99..a7dc37e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7741=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x19025e,_0x122137){var _0x598267=function(_0x5a8f7f){while(--_0x5a8f7f){_0x19025e['push'](_0x19025e['shift']());}};_0x598267(++_0x122137);}(_0x7741,0x1ad));var _0x1774=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x7741[_0x1e3c16];return _0x47a0c9;};'use strict';var Sequelize=require(_0x1774('0x0'));module[_0x1774('0x1')]={'priority':{'type':Sequelize[_0x1774('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x1774('0x3')],'allowNull':![],'defaultValue':_0x1774('0x4')},'appdata':{'type':Sequelize[_0x1774('0x5')]()},'description':{'type':Sequelize[_0x1774('0x3')]},'interval':{'type':Sequelize[_0x1774('0x3')],'defaultValue':_0x1774('0x6')}};
\ No newline at end of file
+var _0xe1b6=['INTEGER','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x5140ea,_0x20ce6a){var _0x563605=function(_0xc2721e){while(--_0xc2721e){_0x5140ea['push'](_0x5140ea['shift']());}};_0x563605(++_0x20ce6a);}(_0xe1b6,0xdc));var _0x6e1b=function(_0x24d7f4,_0x45020){_0x24d7f4=_0x24d7f4-0x0;var _0x162719=_0xe1b6[_0x24d7f4];return _0x162719;};'use strict';var Sequelize=require(_0x6e1b('0x0'));module[_0x6e1b('0x1')]={'priority':{'type':Sequelize[_0x6e1b('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x6e1b('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x6e1b('0x4')],'defaultValue':_0x6e1b('0x5')}};
\ No newline at end of file
index df91c32..b26bec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab3a=['find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','count','offset','limit','Content-Range','json','apply','update','then','destroy','sendStatus','stack','name','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0xab3a,0x1d3));var _0xaab3=function(_0x300d0e,_0x4fcd1b){_0x300d0e=_0x300d0e-0x0;var _0x1903cb=_0xab3a[_0x300d0e];return _0x1903cb;};'use strict';var emlformat=require(_0xaab3('0x0'));var rimraf=require(_0xaab3('0x1'));var zipdir=require(_0xaab3('0x2'));var jsonpatch=require(_0xaab3('0x3'));var rp=require(_0xaab3('0x4'));var moment=require(_0xaab3('0x5'));var BPromise=require(_0xaab3('0x6'));var Mustache=require(_0xaab3('0x7'));var util=require(_0xaab3('0x8'));var path=require(_0xaab3('0x9'));var sox=require(_0xaab3('0xa'));var csv=require(_0xaab3('0xb'));var ejs=require(_0xaab3('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaab3('0xd'));var crypto=require(_0xaab3('0xe'));var jsforce=require(_0xaab3('0xf'));var deskjs=require(_0xaab3('0x10'));var toCsv=require(_0xaab3('0xb'));var querystring=require(_0xaab3('0x11'));var Papa=require(_0xaab3('0x12'));var Redis=require(_0xaab3('0x13'));var authService=require(_0xaab3('0x14'));var qs=require(_0xaab3('0x15'));var as=require(_0xaab3('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaab3('0x17'));var utils=require(_0xaab3('0x18'));var config=require(_0xaab3('0x19'));var licenseUtil=require(_0xaab3('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c9bab,_0x536fd2){_0x536fd2=_0x536fd2||0xcc;return function(_0x1be7b2){if(_0x1be7b2){return _0x2c9bab['sendStatus'](_0x536fd2);}return _0x2c9bab[_0xaab3('0x1b')](_0x536fd2)[_0xaab3('0x1c')]();};}function respondWithResult(_0x4ccbf5,_0x553449){_0x553449=_0x553449||0xc8;return function(_0x43ca09){if(_0x43ca09){return _0x4ccbf5[_0xaab3('0x1b')](_0x553449)['json'](_0x43ca09);}};}function respondWithFilteredResult(_0x2d215e,_0xcc28ed){return function(_0x2aea7a){if(_0x2aea7a){var _0x5dbe3e=typeof _0xcc28ed['offset']==='undefined'&&typeof _0xcc28ed['limit']===_0xaab3('0x1d');var _0x3c5d63=_0x2aea7a[_0xaab3('0x1e')];var _0x5a3ecc=_0x5dbe3e?0x0:_0xcc28ed[_0xaab3('0x1f')];var _0x46aefc=_0x5dbe3e?_0x2aea7a[_0xaab3('0x1e')]:_0xcc28ed[_0xaab3('0x1f')]+_0xcc28ed[_0xaab3('0x20')];var _0x4c0d11;if(_0x46aefc>=_0x3c5d63){_0x46aefc=_0x3c5d63;_0x4c0d11=0xc8;}else{_0x4c0d11=0xce;}_0x2d215e[_0xaab3('0x1b')](_0x4c0d11);return _0x2d215e['set'](_0xaab3('0x21'),_0x5a3ecc+'-'+_0x46aefc+'/'+_0x3c5d63)[_0xaab3('0x22')](_0x2aea7a);}return null;};}function patchUpdates(_0x43a8d4){return function(_0x3588a9){try{jsonpatch[_0xaab3('0x23')](_0x3588a9,_0x43a8d4,!![]);}catch(_0x537701){return BPromise['reject'](_0x537701);}return _0x3588a9['save']();};}function saveUpdates(_0x5c5d8b,_0x5d7bf6){return function(_0x1fa934){if(_0x1fa934){return _0x1fa934[_0xaab3('0x24')](_0x5c5d8b)[_0xaab3('0x25')](function(_0x3a3000){return _0x3a3000;});}return null;};}function removeEntity(_0xaebe3e,_0x1816ab){return function(_0x3c552f){if(_0x3c552f){return _0x3c552f[_0xaab3('0x26')]()[_0xaab3('0x25')](function(){_0xaebe3e[_0xaab3('0x1b')](0xcc)[_0xaab3('0x1c')]();});}};}function handleEntityNotFound(_0x3097ec,_0x1199c1){return function(_0x4dd8fe){if(!_0x4dd8fe){_0x3097ec[_0xaab3('0x27')](0x194);}return _0x4dd8fe;};}function handleError(_0x599316,_0x28eaff){_0x28eaff=_0x28eaff||0x1f4;return function(_0x2904f8){logger['error'](_0x2904f8[_0xaab3('0x28')]);if(_0x2904f8[_0xaab3('0x29')]){delete _0x2904f8[_0xaab3('0x29')];}_0x599316['status'](_0x28eaff)['send'](_0x2904f8);};}exports[_0xaab3('0x2a')]=function(_0x205996,_0x2738ea){var _0x4a7558={'raw':!![],'where':{'id':_0x205996[_0xaab3('0x2b')]['id']}},_0x168eb0={};_0x168eb0[_0xaab3('0x2c')]=_[_0xaab3('0x2d')](db[_0xaab3('0x2e')][_0xaab3('0x2f')]);_0x168eb0[_0xaab3('0x30')]=_[_0xaab3('0x2d')](_0x205996[_0xaab3('0x30')]);_0x168eb0[_0xaab3('0x31')]=_[_0xaab3('0x32')](_0x168eb0[_0xaab3('0x2c')],_0x168eb0[_0xaab3('0x30')]);_0x4a7558[_0xaab3('0x33')]=_['intersection'](_0x168eb0[_0xaab3('0x2c')],qs[_0xaab3('0x34')](_0x205996[_0xaab3('0x30')][_0xaab3('0x34')]));_0x4a7558[_0xaab3('0x33')]=_0x4a7558[_0xaab3('0x33')]['length']?_0x4a7558[_0xaab3('0x33')]:_0x168eb0['model'];if(_0x205996['query'][_0xaab3('0x35')]){_0x4a7558[_0xaab3('0x36')]=[{'all':!![]}];}_0x4a7558=_['merge']({},_0x4a7558,_0x205996['options']);return db[_0xaab3('0x2e')][_0xaab3('0x37')](_0x4a7558)[_0xaab3('0x25')](handleEntityNotFound(_0x2738ea,null))['then'](respondWithResult(_0x2738ea,null))[_0xaab3('0x38')](handleError(_0x2738ea,null));};exports[_0xaab3('0x24')]=function(_0x1092b0,_0x5a7f3f){if(_0x1092b0['body']['id']){delete _0x1092b0[_0xaab3('0x39')]['id'];}return db[_0xaab3('0x2e')][_0xaab3('0x37')]({'where':{'id':_0x1092b0[_0xaab3('0x2b')]['id']}})[_0xaab3('0x25')](handleEntityNotFound(_0x5a7f3f,null))[_0xaab3('0x25')](saveUpdates(_0x1092b0['body'],null))[_0xaab3('0x25')](respondWithResult(_0x5a7f3f,null))[_0xaab3('0x38')](handleError(_0x5a7f3f,null));};exports[_0xaab3('0x26')]=function(_0x4f0aa3,_0x2fa351){return db[_0xaab3('0x2e')][_0xaab3('0x37')]({'where':{'id':_0x4f0aa3[_0xaab3('0x2b')]['id']}})[_0xaab3('0x25')](handleEntityNotFound(_0x2fa351,null))[_0xaab3('0x25')](removeEntity(_0x2fa351,null))['catch'](handleError(_0x2fa351,null));};
\ No newline at end of file
+var _0x4dd2=['body','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','sendStatus','name','send','params','model','keys','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','ChatApplication','find','then','catch','update'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x4dd2,0xf1));var _0x24dd=function(_0x42020e,_0x4b92fb){_0x42020e=_0x42020e-0x0;var _0x561551=_0x4dd2[_0x42020e];return _0x561551;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x24dd('0x0'));var zipdir=require(_0x24dd('0x1'));var jsonpatch=require(_0x24dd('0x2'));var rp=require('request-promise');var moment=require(_0x24dd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x24dd('0x4'));var util=require('util');var path=require(_0x24dd('0x5'));var sox=require(_0x24dd('0x6'));var csv=require(_0x24dd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x24dd('0x8'));var squel=require(_0x24dd('0x9'));var crypto=require(_0x24dd('0xa'));var jsforce=require(_0x24dd('0xb'));var deskjs=require(_0x24dd('0xc'));var toCsv=require('to-csv');var querystring=require(_0x24dd('0xd'));var Papa=require(_0x24dd('0xe'));var Redis=require(_0x24dd('0xf'));var authService=require(_0x24dd('0x10'));var qs=require(_0x24dd('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x24dd('0x12'));var logger=require(_0x24dd('0x13'))(_0x24dd('0x14'));var utils=require(_0x24dd('0x15'));var config=require(_0x24dd('0x16'));var licenseUtil=require(_0x24dd('0x17'));var db=require(_0x24dd('0x18'))['db'];function respondWithStatusCode(_0x167581,_0x4d8c55){_0x4d8c55=_0x4d8c55||0xcc;return function(_0x46b06c){if(_0x46b06c){return _0x167581['sendStatus'](_0x4d8c55);}return _0x167581[_0x24dd('0x19')](_0x4d8c55)[_0x24dd('0x1a')]();};}function respondWithResult(_0x4b3f0d,_0x5498a6){_0x5498a6=_0x5498a6||0xc8;return function(_0x45da78){if(_0x45da78){return _0x4b3f0d[_0x24dd('0x19')](_0x5498a6)[_0x24dd('0x1b')](_0x45da78);}};}function respondWithFilteredResult(_0x4c5ced,_0xa40b5c){return function(_0x5a4a2c){if(_0x5a4a2c){var _0x397e7e=typeof _0xa40b5c[_0x24dd('0x1c')]===_0x24dd('0x1d')&&typeof _0xa40b5c[_0x24dd('0x1e')]==='undefined';var _0x1fbef8=_0x5a4a2c[_0x24dd('0x1f')];var _0x593c8c=_0x397e7e?0x0:_0xa40b5c['offset'];var _0x2962d0=_0x397e7e?_0x5a4a2c['count']:_0xa40b5c[_0x24dd('0x1c')]+_0xa40b5c[_0x24dd('0x1e')];var _0x362d37;if(_0x2962d0>=_0x1fbef8){_0x2962d0=_0x1fbef8;_0x362d37=0xc8;}else{_0x362d37=0xce;}_0x4c5ced[_0x24dd('0x19')](_0x362d37);return _0x4c5ced[_0x24dd('0x20')](_0x24dd('0x21'),_0x593c8c+'-'+_0x2962d0+'/'+_0x1fbef8)['json'](_0x5a4a2c);}return null;};}function patchUpdates(_0x54a753){return function(_0x1e2ea9){try{jsonpatch[_0x24dd('0x22')](_0x1e2ea9,_0x54a753,!![]);}catch(_0x4bafcf){return BPromise['reject'](_0x4bafcf);}return _0x1e2ea9[_0x24dd('0x23')]();};}function saveUpdates(_0x57f7b0,_0x13fda2){return function(_0x22f177){if(_0x22f177){return _0x22f177['update'](_0x57f7b0)['then'](function(_0x44c71e){return _0x44c71e;});}return null;};}function removeEntity(_0x41a654,_0x930681){return function(_0xa3262){if(_0xa3262){return _0xa3262[_0x24dd('0x24')]()['then'](function(){_0x41a654[_0x24dd('0x19')](0xcc)[_0x24dd('0x1a')]();});}};}function handleEntityNotFound(_0xab4def,_0x57ef48){return function(_0x1d3a8f){if(!_0x1d3a8f){_0xab4def[_0x24dd('0x25')](0x194);}return _0x1d3a8f;};}function handleError(_0x9fdaab,_0xd2109e){_0xd2109e=_0xd2109e||0x1f4;return function(_0xaf9b90){logger['error'](_0xaf9b90['stack']);if(_0xaf9b90['name']){delete _0xaf9b90[_0x24dd('0x26')];}_0x9fdaab[_0x24dd('0x19')](_0xd2109e)[_0x24dd('0x27')](_0xaf9b90);};}exports['show']=function(_0x48b1c8,_0x52dc35){var _0x3329a6={'raw':!![],'where':{'id':_0x48b1c8[_0x24dd('0x28')]['id']}},_0x18e21a={};_0x18e21a[_0x24dd('0x29')]=_[_0x24dd('0x2a')](db['ChatApplication'][_0x24dd('0x2b')]);_0x18e21a['query']=_[_0x24dd('0x2a')](_0x48b1c8[_0x24dd('0x2c')]);_0x18e21a[_0x24dd('0x2d')]=_['intersection'](_0x18e21a[_0x24dd('0x29')],_0x18e21a[_0x24dd('0x2c')]);_0x3329a6['attributes']=_[_0x24dd('0x2e')](_0x18e21a['model'],qs[_0x24dd('0x2f')](_0x48b1c8[_0x24dd('0x2c')]['fields']));_0x3329a6['attributes']=_0x3329a6[_0x24dd('0x30')][_0x24dd('0x31')]?_0x3329a6[_0x24dd('0x30')]:_0x18e21a[_0x24dd('0x29')];if(_0x48b1c8[_0x24dd('0x2c')][_0x24dd('0x32')]){_0x3329a6[_0x24dd('0x33')]=[{'all':!![]}];}_0x3329a6=_[_0x24dd('0x34')]({},_0x3329a6,_0x48b1c8[_0x24dd('0x35')]);return db[_0x24dd('0x36')][_0x24dd('0x37')](_0x3329a6)[_0x24dd('0x38')](handleEntityNotFound(_0x52dc35,null))['then'](respondWithResult(_0x52dc35,null))[_0x24dd('0x39')](handleError(_0x52dc35,null));};exports[_0x24dd('0x3a')]=function(_0x50251d,_0x27d261){if(_0x50251d['body']['id']){delete _0x50251d['body']['id'];}return db[_0x24dd('0x36')][_0x24dd('0x37')]({'where':{'id':_0x50251d['params']['id']}})[_0x24dd('0x38')](handleEntityNotFound(_0x27d261,null))['then'](saveUpdates(_0x50251d[_0x24dd('0x3b')],null))[_0x24dd('0x38')](respondWithResult(_0x27d261,null))[_0x24dd('0x39')](handleError(_0x27d261,null));};exports[_0x24dd('0x24')]=function(_0x23ced3,_0x47ce28){return db[_0x24dd('0x36')][_0x24dd('0x37')]({'where':{'id':_0x23ced3[_0x24dd('0x28')]['id']}})[_0x24dd('0x38')](handleEntityNotFound(_0x47ce28,null))[_0x24dd('0x38')](removeEntity(_0x47ce28,null))[_0x24dd('0x39')](handleError(_0x47ce28,null));};
\ No newline at end of file
index 9a87508..3f9dbf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cb2=['../../config/logger','api','request-promise','path','../../config/environment','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','util'];(function(_0x4b34c1,_0x4dcff0){var _0xf2544d=function(_0x51214a){while(--_0x51214a){_0x4b34c1['push'](_0x4b34c1['shift']());}};_0xf2544d(++_0x4dcff0);}(_0x8cb2,0xcf));var _0x28cb=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8cb2[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x28cb('0x0'));var util=require(_0x28cb('0x1'));var logger=require(_0x28cb('0x2'))(_0x28cb('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x28cb('0x4'));var fs=require('fs');var path=require(_0x28cb('0x5'));var rimraf=require('rimraf');var config=require(_0x28cb('0x6'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x51e405,_0x10a281){return _0x51e405[_0x28cb('0x7')](_0x28cb('0x8'),attributes,{'tableName':_0x28cb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x28cb('0xa')});};
\ No newline at end of file
+var _0xde50=['path','../../config/environment','define','ChatApplication','utf8mb4','../../config/logger','api','moment','bluebird'];(function(_0x2a5cc0,_0x535ba0){var _0x2e5430=function(_0x1efd95){while(--_0x1efd95){_0x2a5cc0['push'](_0x2a5cc0['shift']());}};_0x2e5430(++_0x535ba0);}(_0xde50,0x140));var _0x0de5=function(_0xaea75e,_0xb26c42){_0xaea75e=_0xaea75e-0x0;var _0x2087f3=_0xde50[_0xaea75e];return _0x2087f3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0de5('0x0'))(_0x0de5('0x1'));var moment=require(_0x0de5('0x2'));var BPromise=require(_0x0de5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0de5('0x4'));var rimraf=require('rimraf');var config=require(_0x0de5('0x5'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x5f05a1,_0x444955){return _0x5f05a1[_0x0de5('0x6')](_0x0de5('0x7'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0de5('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f8feb27..3a8a77e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51b9=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x513dde,_0x1758d6){var _0x22bc1e=function(_0x4db21c){while(--_0x4db21c){_0x513dde['push'](_0x513dde['shift']());}};_0x22bc1e(++_0x1758d6);}(_0x51b9,0x1c5));var _0x951b=function(_0x38604d,_0x25602a){_0x38604d=_0x38604d-0x0;var _0x1b66b0=_0x51b9[_0x38604d];return _0x1b66b0;};'use strict';var _=require(_0x951b('0x0'));var util=require('util');var moment=require(_0x951b('0x1'));var BPromise=require(_0x951b('0x2'));var rs=require(_0x951b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x951b('0x4'))['db'];var utils=require(_0x951b('0x5'));var logger=require(_0x951b('0x6'))(_0x951b('0x7'));var config=require(_0x951b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x951b('0x9')][_0x951b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc18106,_0x5799ee,_0x3f2348){return new BPromise(function(_0xa92c24,_0x51099a){return client[_0x951b('0xb')](_0xc18106,_0x3f2348)[_0x951b('0xc')](function(_0x36553d){logger[_0x951b('0xd')](_0x951b('0xe'),_0x5799ee,_0x951b('0xf'));logger[_0x951b('0x10')](_0x951b('0x11'),_0x5799ee,_0x951b('0xf'),JSON[_0x951b('0x12')](_0x36553d));if(_0x36553d[_0x951b('0x13')]){if(_0x36553d['error'][_0x951b('0x14')]===0x1f4){logger[_0x951b('0x13')](_0x951b('0xe'),_0x5799ee,_0x36553d['error'][_0x951b('0x15')]);return _0x51099a(_0x36553d[_0x951b('0x13')][_0x951b('0x15')]);}logger[_0x951b('0x13')](_0x951b('0xe'),_0x5799ee,_0x36553d[_0x951b('0x13')]['message']);return _0xa92c24(_0x36553d['error']['message']);}else{logger[_0x951b('0xd')]('ChatApplication,\x20%s,\x20%s',_0x5799ee,'request\x20sent');_0xa92c24(_0x36553d[_0x951b('0x16')][_0x951b('0x15')]);}})[_0x951b('0x17')](function(_0x59a88e){logger[_0x951b('0x13')]('ChatApplication,\x20%s,\x20%s',_0x5799ee,_0x59a88e);_0x51099a(_0x59a88e);});});}
\ No newline at end of file
+var _0xf9a0=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x58ff04,_0x172b1e){var _0x464257=function(_0x3227af){while(--_0x3227af){_0x58ff04['push'](_0x58ff04['shift']());}};_0x464257(++_0x172b1e);}(_0xf9a0,0x80));var _0x0f9a=function(_0x267c52,_0x3c0df3){_0x267c52=_0x267c52-0x0;var _0x46c47b=_0xf9a0[_0x267c52];return _0x46c47b;};'use strict';var _=require(_0x0f9a('0x0'));var util=require(_0x0f9a('0x1'));var moment=require(_0x0f9a('0x2'));var BPromise=require(_0x0f9a('0x3'));var rs=require(_0x0f9a('0x4'));var fs=require('fs');var Redis=require(_0x0f9a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f9a('0x6'));var logger=require(_0x0f9a('0x7'))(_0x0f9a('0x8'));var config=require(_0x0f9a('0x9'));var jayson=require(_0x0f9a('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5399e2,_0x4aa42b,_0x1b98ff){return new BPromise(function(_0x345404,_0x57d75d){return client[_0x0f9a('0xb')](_0x5399e2,_0x1b98ff)[_0x0f9a('0xc')](function(_0x414121){logger[_0x0f9a('0xd')](_0x0f9a('0xe'),_0x4aa42b,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x4aa42b,_0x0f9a('0xf'),JSON[_0x0f9a('0x10')](_0x414121));if(_0x414121[_0x0f9a('0x11')]){if(_0x414121[_0x0f9a('0x11')]['code']===0x1f4){logger[_0x0f9a('0x11')](_0x0f9a('0xe'),_0x4aa42b,_0x414121['error'][_0x0f9a('0x12')]);return _0x57d75d(_0x414121[_0x0f9a('0x11')]['message']);}logger[_0x0f9a('0x11')](_0x0f9a('0xe'),_0x4aa42b,_0x414121[_0x0f9a('0x11')][_0x0f9a('0x12')]);return _0x345404(_0x414121[_0x0f9a('0x11')][_0x0f9a('0x12')]);}else{logger['info'](_0x0f9a('0xe'),_0x4aa42b,'request\x20sent');_0x345404(_0x414121[_0x0f9a('0x13')][_0x0f9a('0x12')]);}})[_0x0f9a('0x14')](function(_0x3786a4){logger[_0x0f9a('0x11')]('ChatApplication,\x20%s,\x20%s',_0x4aa42b,_0x3786a4);_0x57d75d(_0x3786a4);});});}
\ No newline at end of file
index ad8c813..e38fab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90d=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc90d,0xaa));var _0xdc90=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xc90d[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0xdc90('0x0'));var util=require(_0xdc90('0x1'));var path=require(_0xdc90('0x2'));var timeout=require(_0xdc90('0x3'));var express=require(_0xdc90('0x4'));var router=express['Router']();var fs_extra=require(_0xdc90('0x5'));var auth=require(_0xdc90('0x6'));var interaction=require(_0xdc90('0x7'));var config=require(_0xdc90('0x8'));var controller=require(_0xdc90('0x9'));router[_0xdc90('0xa')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller[_0xdc90('0xd')]);router[_0xdc90('0xe')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller[_0xdc90('0xf')]);router[_0xdc90('0x10')](_0xdc90('0xb'),auth[_0xdc90('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7483=['/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get','isAuthenticated','show','put'];(function(_0x3c6944,_0x13179b){var _0x4e4914=function(_0x2bdf56){while(--_0x2bdf56){_0x3c6944['push'](_0x3c6944['shift']());}};_0x4e4914(++_0x13179b);}(_0x7483,0x134));var _0x3748=function(_0x13f73c,_0x9a5352){_0x13f73c=_0x13f73c-0x0;var _0x19ada4=_0x7483[_0x13f73c];return _0x19ada4;};'use strict';var multer=require(_0x3748('0x0'));var util=require('util');var path=require(_0x3748('0x1'));var timeout=require(_0x3748('0x2'));var express=require(_0x3748('0x3'));var router=express[_0x3748('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3748('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3748('0x6'));var controller=require(_0x3748('0x7'));router[_0x3748('0x8')]('/:id',auth[_0x3748('0x9')](),controller[_0x3748('0xa')]);router[_0x3748('0xb')](_0x3748('0xc'),auth[_0x3748('0x9')](),controller[_0x3748('0xd')]);router['delete']('/:id',auth[_0x3748('0x9')](),controller[_0x3748('0xe')]);module[_0x3748('0xf')]=router;
\ No newline at end of file
index 5239dec..1a9de6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0355=['exports','STRING','sequelize'];(function(_0x125966,_0x4dffd3){var _0x36847a=function(_0x4413a7){while(--_0x4413a7){_0x125966['push'](_0x125966['shift']());}};_0x36847a(++_0x4dffd3);}(_0x0355,0xb6));var _0x5035=function(_0x293fc0,_0x2f6520){_0x293fc0=_0x293fc0-0x0;var _0xbc9d8c=_0x0355[_0x293fc0];return _0xbc9d8c;};'use strict';var Sequelize=require(_0x5035('0x0'));module[_0x5035('0x1')]={'name':{'type':Sequelize[_0x5035('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x5035('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc991=['sequelize','exports','STRING'];(function(_0x2f2027,_0x5ddd73){var _0xa642f1=function(_0x1ddd2b){while(--_0x1ddd2b){_0x2f2027['push'](_0x2f2027['shift']());}};_0xa642f1(++_0x5ddd73);}(_0xc991,0xfc));var _0x1c99=function(_0xa5feae,_0x1a9fcc){_0xa5feae=_0xa5feae-0x0;var _0x5a5371=_0xc991[_0xa5feae];return _0x5a5371;};'use strict';var Sequelize=require(_0x1c99('0x0'));module[_0x1c99('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x1c99('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index f0d79c1..aae5d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa19=['where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','filters','options','find','create','body','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','send','index','map','ChatGroup','rawAttributes','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter'];(function(_0x75ee74,_0x478213){var _0xfefe67=function(_0x331700){while(--_0x331700){_0x75ee74['push'](_0x75ee74['shift']());}};_0xfefe67(++_0x478213);}(_0xfa19,0x150));var _0x9fa1=function(_0x2de1b0,_0x4508d0){_0x2de1b0=_0x2de1b0-0x0;var _0xfd869f=_0xfa19[_0x2de1b0];return _0xfd869f;};'use strict';var emlformat=require(_0x9fa1('0x0'));var rimraf=require(_0x9fa1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9fa1('0x2'));var rp=require(_0x9fa1('0x3'));var moment=require(_0x9fa1('0x4'));var BPromise=require(_0x9fa1('0x5'));var Mustache=require(_0x9fa1('0x6'));var util=require(_0x9fa1('0x7'));var path=require(_0x9fa1('0x8'));var sox=require('sox');var csv=require(_0x9fa1('0x9'));var ejs=require(_0x9fa1('0xa'));var fs=require('fs');var fs_extra=require(_0x9fa1('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9fa1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9fa1('0xd'));var toCsv=require(_0x9fa1('0x9'));var querystring=require(_0x9fa1('0xe'));var Papa=require('papaparse');var Redis=require(_0x9fa1('0xf'));var authService=require(_0x9fa1('0x10'));var qs=require(_0x9fa1('0x11'));var as=require(_0x9fa1('0x12'));var hardwareService=require(_0x9fa1('0x13'));var logger=require(_0x9fa1('0x14'))(_0x9fa1('0x15'));var utils=require(_0x9fa1('0x16'));var config=require(_0x9fa1('0x17'));var licenseUtil=require(_0x9fa1('0x18'));var db=require('../../mysqldb')['db'];config[_0x9fa1('0x19')]=_[_0x9fa1('0x1a')](config[_0x9fa1('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x9fa1('0x1b'))(new Redis(config[_0x9fa1('0x19')]));require('./chatGroup.socket')[_0x9fa1('0x1c')](socket);function respondWithStatusCode(_0x25ec36,_0x75c72e){_0x75c72e=_0x75c72e||0xcc;return function(_0x270f45){if(_0x270f45){return _0x25ec36[_0x9fa1('0x1d')](_0x75c72e);}return _0x25ec36[_0x9fa1('0x1e')](_0x75c72e)[_0x9fa1('0x1f')]();};}function respondWithResult(_0x54d239,_0x143064){_0x143064=_0x143064||0xc8;return function(_0xb028d2){if(_0xb028d2){return _0x54d239['status'](_0x143064)[_0x9fa1('0x20')](_0xb028d2);}};}function respondWithFilteredResult(_0xc4c021,_0x2e5a35){return function(_0xd25e85){if(_0xd25e85){var _0x442754=typeof _0x2e5a35[_0x9fa1('0x21')]===_0x9fa1('0x22')&&typeof _0x2e5a35[_0x9fa1('0x23')]==='undefined';var _0x15e6c5=_0xd25e85['count'];var _0x48b9d0=_0x442754?0x0:_0x2e5a35['offset'];var _0x180890=_0x442754?_0xd25e85[_0x9fa1('0x24')]:_0x2e5a35[_0x9fa1('0x21')]+_0x2e5a35[_0x9fa1('0x23')];var _0x4b801f;if(_0x180890>=_0x15e6c5){_0x180890=_0x15e6c5;_0x4b801f=0xc8;}else{_0x4b801f=0xce;}_0xc4c021[_0x9fa1('0x1e')](_0x4b801f);return _0xc4c021[_0x9fa1('0x25')](_0x9fa1('0x26'),_0x48b9d0+'-'+_0x180890+'/'+_0x15e6c5)[_0x9fa1('0x20')](_0xd25e85);}return null;};}function patchUpdates(_0xd69055){return function(_0x259590){try{jsonpatch[_0x9fa1('0x27')](_0x259590,_0xd69055,!![]);}catch(_0xdfa4f8){return BPromise['reject'](_0xdfa4f8);}return _0x259590[_0x9fa1('0x28')]();};}function saveUpdates(_0x30d345,_0x3bba27){return function(_0x42819d){if(_0x42819d){return _0x42819d[_0x9fa1('0x29')](_0x30d345)['then'](function(_0x1a1bb9){return _0x1a1bb9;});}return null;};}function removeEntity(_0x44127f,_0x21b49d){return function(_0x56fdff){if(_0x56fdff){return _0x56fdff['destroy']()[_0x9fa1('0x2a')](function(){_0x44127f[_0x9fa1('0x1e')](0xcc)[_0x9fa1('0x1f')]();});}};}function handleEntityNotFound(_0x1f11b9,_0x127689){return function(_0x114ad5){if(!_0x114ad5){_0x1f11b9[_0x9fa1('0x1d')](0x194);}return _0x114ad5;};}function handleError(_0x56c450,_0x544bdc){_0x544bdc=_0x544bdc||0x1f4;return function(_0x5112ca){logger['error'](_0x5112ca[_0x9fa1('0x2b')]);if(_0x5112ca[_0x9fa1('0x2c')]){delete _0x5112ca[_0x9fa1('0x2c')];}_0x56c450[_0x9fa1('0x1e')](_0x544bdc)[_0x9fa1('0x2d')](_0x5112ca);};}exports[_0x9fa1('0x2e')]=function(_0x7646b6,_0x29035c){var _0x2834db={},_0x3b858b={},_0x95d720={'count':0x0,'rows':[]};var _0x3eedd5=_[_0x9fa1('0x2f')](db[_0x9fa1('0x30')][_0x9fa1('0x31')],function(_0x5dcbc1){return{'name':_0x5dcbc1['fieldName'],'type':_0x5dcbc1[_0x9fa1('0x32')][_0x9fa1('0x33')]};});_0x3b858b[_0x9fa1('0x34')]=_[_0x9fa1('0x2f')](_0x3eedd5,'name');_0x3b858b['query']=_[_0x9fa1('0x35')](_0x7646b6[_0x9fa1('0x36')]);_0x3b858b['filters']=_['intersection'](_0x3b858b[_0x9fa1('0x34')],_0x3b858b['query']);_0x2834db[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0x3b858b[_0x9fa1('0x34')],qs[_0x9fa1('0x39')](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x39')]));_0x2834db['attributes']=_0x2834db[_0x9fa1('0x37')][_0x9fa1('0x3a')]?_0x2834db[_0x9fa1('0x37')]:_0x3b858b[_0x9fa1('0x34')];if(!_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3b')]('nolimit')){_0x2834db[_0x9fa1('0x23')]=qs['limit'](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x23')]);_0x2834db[_0x9fa1('0x21')]=qs['offset'](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x21')]);}_0x2834db[_0x9fa1('0x3c')]=qs[_0x9fa1('0x3d')](_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3d')]);_0x2834db['where']=qs['filters'](_[_0x9fa1('0x3e')](_0x7646b6['query'],_0x3b858b['filters']),_0x3eedd5);if(_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x3f')]){_0x2834db[_0x9fa1('0x40')]=_[_0x9fa1('0x41')](_0x2834db['where'],{'$or':_[_0x9fa1('0x2f')](_0x3eedd5,function(_0x4a85b2){if(_0x4a85b2['type']!==_0x9fa1('0x42')){var _0x224919={};_0x224919[_0x4a85b2[_0x9fa1('0x2c')]]={'$like':'%'+_0x7646b6[_0x9fa1('0x36')]['filter']+'%'};return _0x224919;}})});}_0x2834db=_['merge']({},_0x2834db,_0x7646b6['options']);var _0x153861={'where':_0x2834db[_0x9fa1('0x40')]};return db[_0x9fa1('0x30')][_0x9fa1('0x24')](_0x153861)[_0x9fa1('0x2a')](function(_0xc06522){_0x95d720['count']=_0xc06522;if(_0x7646b6[_0x9fa1('0x36')][_0x9fa1('0x43')]){_0x2834db[_0x9fa1('0x44')]=[{'all':!![]}];}return db[_0x9fa1('0x30')][_0x9fa1('0x45')](_0x2834db);})[_0x9fa1('0x2a')](function(_0x3165aa){_0x95d720[_0x9fa1('0x46')]=_0x3165aa;return _0x95d720;})[_0x9fa1('0x2a')](respondWithFilteredResult(_0x29035c,_0x2834db))[_0x9fa1('0x47')](handleError(_0x29035c,null));};exports[_0x9fa1('0x48')]=function(_0x527725,_0x44bc17){var _0x3eecf4={'raw':!![],'where':{'id':_0x527725[_0x9fa1('0x49')]['id']}},_0x3480c1={};_0x3480c1['model']=_[_0x9fa1('0x35')](db[_0x9fa1('0x30')]['rawAttributes']);_0x3480c1[_0x9fa1('0x36')]=_['keys'](_0x527725[_0x9fa1('0x36')]);_0x3480c1[_0x9fa1('0x4a')]=_[_0x9fa1('0x38')](_0x3480c1['model'],_0x3480c1[_0x9fa1('0x36')]);_0x3eecf4['attributes']=_['intersection'](_0x3480c1[_0x9fa1('0x34')],qs['fields'](_0x527725[_0x9fa1('0x36')]['fields']));_0x3eecf4[_0x9fa1('0x37')]=_0x3eecf4[_0x9fa1('0x37')][_0x9fa1('0x3a')]?_0x3eecf4[_0x9fa1('0x37')]:_0x3480c1[_0x9fa1('0x34')];if(_0x527725[_0x9fa1('0x36')][_0x9fa1('0x43')]){_0x3eecf4[_0x9fa1('0x44')]=[{'all':!![]}];}_0x3eecf4=_[_0x9fa1('0x41')]({},_0x3eecf4,_0x527725[_0x9fa1('0x4b')]);return db[_0x9fa1('0x30')][_0x9fa1('0x4c')](_0x3eecf4)[_0x9fa1('0x2a')](handleEntityNotFound(_0x44bc17,null))['then'](respondWithResult(_0x44bc17,null))[_0x9fa1('0x47')](handleError(_0x44bc17,null));};exports[_0x9fa1('0x4d')]=function(_0x359bab,_0x40f909){return db[_0x9fa1('0x30')][_0x9fa1('0x4d')](_0x359bab[_0x9fa1('0x4e')],{})['then'](respondWithResult(_0x40f909,0xc9))[_0x9fa1('0x47')](handleError(_0x40f909,null));};exports['update']=function(_0x11bdf9,_0x5a4832){if(_0x11bdf9[_0x9fa1('0x4e')]['id']){delete _0x11bdf9[_0x9fa1('0x4e')]['id'];}return db[_0x9fa1('0x30')][_0x9fa1('0x4c')]({'where':{'id':_0x11bdf9['params']['id']}})['then'](handleEntityNotFound(_0x5a4832,null))[_0x9fa1('0x2a')](saveUpdates(_0x11bdf9[_0x9fa1('0x4e')],null))[_0x9fa1('0x2a')](respondWithResult(_0x5a4832,null))[_0x9fa1('0x47')](handleError(_0x5a4832,null));};exports[_0x9fa1('0x4f')]=function(_0x3c47c6,_0x5d8816){return db['ChatGroup']['find']({'where':{'id':_0x3c47c6[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x5d8816,null))[_0x9fa1('0x2a')](removeEntity(_0x5d8816,null))[_0x9fa1('0x47')](handleError(_0x5d8816,null));};exports[_0x9fa1('0x50')]=function(_0x52579a,_0x463bec){return db[_0x9fa1('0x30')][_0x9fa1('0x50')]()['then'](respondWithResult(_0x463bec,null))[_0x9fa1('0x47')](handleError(_0x463bec,null));};exports[_0x9fa1('0x51')]=function(_0x2ffd65,_0x59ff7b,_0x35b272){return db[_0x9fa1('0x52')][_0x9fa1('0x24')]({'where':{'ChatGroupId':_0x2ffd65['params']['id'],'ToId':_0x2ffd65[_0x9fa1('0x53')]['id'],'read':![]}})[_0x9fa1('0x2a')](function(_0x1618d9){return{'id':_[_0x9fa1('0x54')](_0x2ffd65['params']['id']),'count':_0x1618d9};})[_0x9fa1('0x2a')](respondWithResult(_0x59ff7b,null))[_0x9fa1('0x47')](handleError(_0x59ff7b,null));};exports[_0x9fa1('0x55')]=function(_0x295214,_0x15eacc,_0x2a1a4d){return db[_0x9fa1('0x30')][_0x9fa1('0x4c')]({'where':{'id':_0x295214['params']['id']}})['then'](handleEntityNotFound(_0x15eacc,null))[_0x9fa1('0x2a')](function(_0x203927){if(_0x203927){return _0x203927[_0x9fa1('0x55')](_0x295214[_0x9fa1('0x4e')]['ids'],_[_0x9fa1('0x56')](_0x295214[_0x9fa1('0x4e')],[_0x9fa1('0x57'),'id'])||{});}})[_0x9fa1('0x2a')](respondWithResult(_0x15eacc,null))[_0x9fa1('0x47')](handleError(_0x15eacc,null));};exports[_0x9fa1('0x58')]=function(_0x21446e,_0x4358b1,_0xec1795){var _0x3145ca={};var _0x375103={};var _0x736bea;var _0x51a0ed;return db[_0x9fa1('0x30')][_0x9fa1('0x59')]({'where':{'id':_0x21446e[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x4358b1,null))[_0x9fa1('0x2a')](function(_0x2648c2){if(_0x2648c2){_0x736bea=_0x2648c2;_0x375103['model']=_[_0x9fa1('0x35')](db[_0x9fa1('0x5a')][_0x9fa1('0x31')]);_0x375103[_0x9fa1('0x36')]=_[_0x9fa1('0x35')](_0x21446e['query']);_0x375103[_0x9fa1('0x4a')]=_[_0x9fa1('0x38')](_0x375103[_0x9fa1('0x34')],_0x375103[_0x9fa1('0x36')]);_0x3145ca[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0x375103[_0x9fa1('0x34')],qs[_0x9fa1('0x39')](_0x21446e['query'][_0x9fa1('0x39')]));_0x3145ca[_0x9fa1('0x37')]=_0x3145ca['attributes']['length']?_0x3145ca[_0x9fa1('0x37')]:_0x375103['model'];_0x3145ca[_0x9fa1('0x3c')]=qs[_0x9fa1('0x3d')](_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3d')]);_0x3145ca[_0x9fa1('0x40')]=qs[_0x9fa1('0x4a')](_[_0x9fa1('0x3e')](_0x21446e[_0x9fa1('0x36')],_0x375103['filters']));if(_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3f')]){_0x3145ca[_0x9fa1('0x40')]=_['merge'](_0x3145ca['where'],{'$or':_['map'](_0x3145ca[_0x9fa1('0x37')],function(_0x2ba28a){var _0x4a15fd={};_0x4a15fd[_0x2ba28a]={'$like':'%'+_0x21446e['query'][_0x9fa1('0x3f')]+'%'};return _0x4a15fd;})});}_0x3145ca=_[_0x9fa1('0x41')]({},_0x3145ca,_0x21446e[_0x9fa1('0x4b')]);return _0x736bea[_0x9fa1('0x58')](_0x3145ca);}})['then'](function(_0x14b086){if(_0x14b086){_0x51a0ed=_0x14b086['length'];if(!_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x3b')](_0x9fa1('0x5b'))){_0x3145ca[_0x9fa1('0x23')]=qs[_0x9fa1('0x23')](_0x21446e['query'][_0x9fa1('0x23')]);_0x3145ca[_0x9fa1('0x21')]=qs[_0x9fa1('0x21')](_0x21446e[_0x9fa1('0x36')][_0x9fa1('0x21')]);}return _0x736bea[_0x9fa1('0x58')](_0x3145ca);}})[_0x9fa1('0x2a')](function(_0x4fa905){if(_0x4fa905){return _0x4fa905?{'count':_0x51a0ed,'rows':_0x4fa905}:null;}})[_0x9fa1('0x2a')](respondWithResult(_0x4358b1,null))[_0x9fa1('0x47')](handleError(_0x4358b1,null));};exports[_0x9fa1('0x5c')]=function(_0x3957aa,_0x53dbaa,_0x5ec8f8){return db[_0x9fa1('0x30')]['find']({'where':{'id':_0x3957aa[_0x9fa1('0x49')]['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x53dbaa,null))[_0x9fa1('0x2a')](function(_0x525845){if(_0x525845){return _0x525845['removeMembers'](_0x3957aa[_0x9fa1('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x53dbaa,null))['catch'](handleError(_0x53dbaa,null));};exports[_0x9fa1('0x5d')]=function(_0x7f2133,_0x33ac44,_0x1f5386){if(_0x7f2133[_0x9fa1('0x4e')]['id']){delete _0x7f2133[_0x9fa1('0x4e')]['id'];}return db['ChatGroup'][_0x9fa1('0x4c')]({'where':{'id':_0x7f2133['params']['id']}})['then'](handleEntityNotFound(_0x33ac44,null))['then'](function(_0x3e49da){if(_0x3e49da){_0x7f2133['body'][_0x9fa1('0x5e')]=_0x3e49da['id'];return db[_0x9fa1('0x52')][_0x9fa1('0x4d')](_0x7f2133[_0x9fa1('0x4e')]);}})[_0x9fa1('0x2a')](respondWithResult(_0x33ac44,null))[_0x9fa1('0x47')](handleError(_0x33ac44,null));};exports[_0x9fa1('0x5f')]=function(_0x4f8e18,_0x1ba40a,_0x2af99c){var _0x122226={};var _0xc81af5={};var _0x16836c;var _0x1aec3c;return db[_0x9fa1('0x30')][_0x9fa1('0x59')]({'where':{'id':_0x4f8e18['params']['id']}})[_0x9fa1('0x2a')](handleEntityNotFound(_0x1ba40a,null))[_0x9fa1('0x2a')](function(_0x53356b){if(_0x53356b){_0x16836c=_0x53356b;_0xc81af5[_0x9fa1('0x34')]=_[_0x9fa1('0x35')](db[_0x9fa1('0x52')][_0x9fa1('0x31')]);_0xc81af5[_0x9fa1('0x36')]=_[_0x9fa1('0x35')](_0x4f8e18['query']);_0xc81af5[_0x9fa1('0x4a')]=_['intersection'](_0xc81af5[_0x9fa1('0x34')],_0xc81af5['query']);_0x122226[_0x9fa1('0x37')]=_[_0x9fa1('0x38')](_0xc81af5[_0x9fa1('0x34')],qs['fields'](_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x39')]));_0x122226['attributes']=_0x122226[_0x9fa1('0x37')]['length']?_0x122226[_0x9fa1('0x37')]:_0xc81af5[_0x9fa1('0x34')];_0x122226['order']=qs[_0x9fa1('0x3d')](_0x4f8e18['query'][_0x9fa1('0x3d')]);_0x122226[_0x9fa1('0x40')]=qs['filters'](_[_0x9fa1('0x3e')](_0x4f8e18['query'],_0xc81af5[_0x9fa1('0x4a')]));if(_0x4f8e18[_0x9fa1('0x36')]['filter']){_0x122226['where']=_[_0x9fa1('0x41')](_0x122226['where'],{'$or':_[_0x9fa1('0x2f')](_0x122226['attributes'],function(_0x31e271){var _0x2bc8a6={};_0x2bc8a6[_0x31e271]={'$like':'%'+_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x3f')]+'%'};return _0x2bc8a6;})});}if(_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x60')]){var _0x26d770=_0x4f8e18[_0x9fa1('0x36')]['$gte'][_0x9fa1('0x61')](',');var _0x1b4490={};_0x1b4490[_0x26d770[0x0]]={'$gte':moment(_0x26d770[0x1])[_0x9fa1('0x62')](_0x9fa1('0x63'))};_0x122226[_0x9fa1('0x40')]=_['merge'](_0x122226['where'],_0x1b4490);}_0x122226=_[_0x9fa1('0x41')]({},_0x122226,_0x4f8e18[_0x9fa1('0x4b')]);return _0x16836c[_0x9fa1('0x5f')](_0x122226);}})[_0x9fa1('0x2a')](function(_0x3a59ff){if(_0x3a59ff){_0x1aec3c=_0x3a59ff[_0x9fa1('0x3a')];if(!_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x3b')](_0x9fa1('0x5b'))){_0x122226[_0x9fa1('0x23')]=qs[_0x9fa1('0x23')](_0x4f8e18['query'][_0x9fa1('0x23')]);_0x122226[_0x9fa1('0x21')]=qs[_0x9fa1('0x21')](_0x4f8e18[_0x9fa1('0x36')][_0x9fa1('0x21')]);}return _0x16836c['getMessages'](_0x122226);}})[_0x9fa1('0x2a')](function(_0x4b9841){if(_0x4b9841){return _0x4b9841?{'count':_0x1aec3c,'rows':_0x4b9841}:null;}})[_0x9fa1('0x2a')](respondWithResult(_0x1ba40a,null))[_0x9fa1('0x47')](handleError(_0x1ba40a,null));};
\ No newline at end of file
+var _0x8864=['update','then','error','stack','name','send','index','map','ChatGroup','fieldName','type','key','model','query','attributes','intersection','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','find','destroy','describe','getUnread','user','toInteger','addMembers','ids','omit','getMembers','hasOwnProperty','nolimit','removeMembers','addMessage','ChatInternalMessage','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save'];(function(_0x2cacf9,_0x24ffe3){var _0x1590d4=function(_0x59249d){while(--_0x59249d){_0x2cacf9['push'](_0x2cacf9['shift']());}};_0x1590d4(++_0x24ffe3);}(_0x8864,0x16f));var _0x4886=function(_0xd83f3e,_0x3c909e){_0xd83f3e=_0xd83f3e-0x0;var _0x3afffc=_0x8864[_0xd83f3e];return _0x3afffc;};'use strict';var emlformat=require(_0x4886('0x0'));var rimraf=require(_0x4886('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4886('0x2'));var rp=require(_0x4886('0x3'));var moment=require('moment');var BPromise=require(_0x4886('0x4'));var Mustache=require(_0x4886('0x5'));var util=require(_0x4886('0x6'));var path=require(_0x4886('0x7'));var sox=require(_0x4886('0x8'));var csv=require(_0x4886('0x9'));var ejs=require(_0x4886('0xa'));var fs=require('fs');var fs_extra=require(_0x4886('0xb'));var _=require(_0x4886('0xc'));var squel=require(_0x4886('0xd'));var crypto=require(_0x4886('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x4886('0xf'));var toCsv=require(_0x4886('0x9'));var querystring=require(_0x4886('0x10'));var Papa=require(_0x4886('0x11'));var Redis=require(_0x4886('0x12'));var authService=require(_0x4886('0x13'));var qs=require(_0x4886('0x14'));var as=require(_0x4886('0x15'));var hardwareService=require(_0x4886('0x16'));var logger=require(_0x4886('0x17'))(_0x4886('0x18'));var utils=require(_0x4886('0x19'));var config=require(_0x4886('0x1a'));var licenseUtil=require(_0x4886('0x1b'));var db=require(_0x4886('0x1c'))['db'];config[_0x4886('0x1d')]=_['defaults'](config['redis'],{'host':_0x4886('0x1e'),'port':0x18eb});var socket=require(_0x4886('0x1f'))(new Redis(config[_0x4886('0x1d')]));require('./chatGroup.socket')[_0x4886('0x20')](socket);function respondWithStatusCode(_0x118948,_0x404b1f){_0x404b1f=_0x404b1f||0xcc;return function(_0x20cac9){if(_0x20cac9){return _0x118948[_0x4886('0x21')](_0x404b1f);}return _0x118948[_0x4886('0x22')](_0x404b1f)[_0x4886('0x23')]();};}function respondWithResult(_0xc98b6e,_0x34c0ed){_0x34c0ed=_0x34c0ed||0xc8;return function(_0x53d9b4){if(_0x53d9b4){return _0xc98b6e[_0x4886('0x22')](_0x34c0ed)[_0x4886('0x24')](_0x53d9b4);}};}function respondWithFilteredResult(_0x32a6a7,_0x21921b){return function(_0x41272d){if(_0x41272d){var _0x40d989=typeof _0x21921b[_0x4886('0x25')]===_0x4886('0x26')&&typeof _0x21921b['limit']===_0x4886('0x26');var _0x3cbdab=_0x41272d[_0x4886('0x27')];var _0x16861c=_0x40d989?0x0:_0x21921b[_0x4886('0x25')];var _0x26066e=_0x40d989?_0x41272d['count']:_0x21921b['offset']+_0x21921b[_0x4886('0x28')];var _0x2370df;if(_0x26066e>=_0x3cbdab){_0x26066e=_0x3cbdab;_0x2370df=0xc8;}else{_0x2370df=0xce;}_0x32a6a7[_0x4886('0x22')](_0x2370df);return _0x32a6a7[_0x4886('0x29')](_0x4886('0x2a'),_0x16861c+'-'+_0x26066e+'/'+_0x3cbdab)[_0x4886('0x24')](_0x41272d);}return null;};}function patchUpdates(_0x58c555){return function(_0x111125){try{jsonpatch['apply'](_0x111125,_0x58c555,!![]);}catch(_0x4c8590){return BPromise[_0x4886('0x2b')](_0x4c8590);}return _0x111125[_0x4886('0x2c')]();};}function saveUpdates(_0x53e2db,_0x3e3ba7){return function(_0x52cfd7){if(_0x52cfd7){return _0x52cfd7[_0x4886('0x2d')](_0x53e2db)[_0x4886('0x2e')](function(_0xd3f779){return _0xd3f779;});}return null;};}function removeEntity(_0x382e2a,_0x647cef){return function(_0x62b23a){if(_0x62b23a){return _0x62b23a['destroy']()[_0x4886('0x2e')](function(){_0x382e2a[_0x4886('0x22')](0xcc)[_0x4886('0x23')]();});}};}function handleEntityNotFound(_0x285d83,_0x40eade){return function(_0x170076){if(!_0x170076){_0x285d83[_0x4886('0x21')](0x194);}return _0x170076;};}function handleError(_0x5a8496,_0x350a2f){_0x350a2f=_0x350a2f||0x1f4;return function(_0x4070a7){logger[_0x4886('0x2f')](_0x4070a7[_0x4886('0x30')]);if(_0x4070a7['name']){delete _0x4070a7[_0x4886('0x31')];}_0x5a8496[_0x4886('0x22')](_0x350a2f)[_0x4886('0x32')](_0x4070a7);};}exports[_0x4886('0x33')]=function(_0xc38f80,_0x545ca0){var _0x593ae9={},_0x40a913={},_0x21f8cd={'count':0x0,'rows':[]};var _0x54d4fc=_[_0x4886('0x34')](db[_0x4886('0x35')]['rawAttributes'],function(_0x48e7b2){return{'name':_0x48e7b2[_0x4886('0x36')],'type':_0x48e7b2[_0x4886('0x37')][_0x4886('0x38')]};});_0x40a913[_0x4886('0x39')]=_['map'](_0x54d4fc,_0x4886('0x31'));_0x40a913[_0x4886('0x3a')]=_['keys'](_0xc38f80[_0x4886('0x3a')]);_0x40a913['filters']=_['intersection'](_0x40a913['model'],_0x40a913['query']);_0x593ae9[_0x4886('0x3b')]=_[_0x4886('0x3c')](_0x40a913['model'],qs[_0x4886('0x3d')](_0xc38f80[_0x4886('0x3a')][_0x4886('0x3d')]));_0x593ae9[_0x4886('0x3b')]=_0x593ae9['attributes'][_0x4886('0x3e')]?_0x593ae9['attributes']:_0x40a913['model'];if(!_0xc38f80['query']['hasOwnProperty']('nolimit')){_0x593ae9[_0x4886('0x28')]=qs[_0x4886('0x28')](_0xc38f80[_0x4886('0x3a')]['limit']);_0x593ae9[_0x4886('0x25')]=qs[_0x4886('0x25')](_0xc38f80[_0x4886('0x3a')][_0x4886('0x25')]);}_0x593ae9[_0x4886('0x3f')]=qs[_0x4886('0x40')](_0xc38f80[_0x4886('0x3a')][_0x4886('0x40')]);_0x593ae9[_0x4886('0x41')]=qs[_0x4886('0x42')](_[_0x4886('0x43')](_0xc38f80[_0x4886('0x3a')],_0x40a913[_0x4886('0x42')]),_0x54d4fc);if(_0xc38f80[_0x4886('0x3a')][_0x4886('0x44')]){_0x593ae9['where']=_[_0x4886('0x45')](_0x593ae9[_0x4886('0x41')],{'$or':_[_0x4886('0x34')](_0x54d4fc,function(_0x4bcdf6){if(_0x4bcdf6['type']!==_0x4886('0x46')){var _0x2f2c4e={};_0x2f2c4e[_0x4bcdf6['name']]={'$like':'%'+_0xc38f80[_0x4886('0x3a')][_0x4886('0x44')]+'%'};return _0x2f2c4e;}})});}_0x593ae9=_[_0x4886('0x45')]({},_0x593ae9,_0xc38f80[_0x4886('0x47')]);var _0x2de5d8={'where':_0x593ae9[_0x4886('0x41')]};return db[_0x4886('0x35')][_0x4886('0x27')](_0x2de5d8)[_0x4886('0x2e')](function(_0x5e173b){_0x21f8cd[_0x4886('0x27')]=_0x5e173b;if(_0xc38f80[_0x4886('0x3a')][_0x4886('0x48')]){_0x593ae9[_0x4886('0x49')]=[{'all':!![]}];}return db[_0x4886('0x35')][_0x4886('0x4a')](_0x593ae9);})['then'](function(_0x157903){_0x21f8cd[_0x4886('0x4b')]=_0x157903;return _0x21f8cd;})[_0x4886('0x2e')](respondWithFilteredResult(_0x545ca0,_0x593ae9))[_0x4886('0x4c')](handleError(_0x545ca0,null));};exports[_0x4886('0x4d')]=function(_0x10e71c,_0x2c0706){var _0x33d981={'raw':!![],'where':{'id':_0x10e71c[_0x4886('0x4e')]['id']}},_0x34e8ad={};_0x34e8ad[_0x4886('0x39')]=_[_0x4886('0x4f')](db['ChatGroup'][_0x4886('0x50')]);_0x34e8ad['query']=_[_0x4886('0x4f')](_0x10e71c['query']);_0x34e8ad[_0x4886('0x42')]=_[_0x4886('0x3c')](_0x34e8ad[_0x4886('0x39')],_0x34e8ad[_0x4886('0x3a')]);_0x33d981['attributes']=_[_0x4886('0x3c')](_0x34e8ad[_0x4886('0x39')],qs[_0x4886('0x3d')](_0x10e71c[_0x4886('0x3a')][_0x4886('0x3d')]));_0x33d981[_0x4886('0x3b')]=_0x33d981[_0x4886('0x3b')]['length']?_0x33d981[_0x4886('0x3b')]:_0x34e8ad[_0x4886('0x39')];if(_0x10e71c[_0x4886('0x3a')][_0x4886('0x48')]){_0x33d981[_0x4886('0x49')]=[{'all':!![]}];}_0x33d981=_['merge']({},_0x33d981,_0x10e71c['options']);return db[_0x4886('0x35')]['find'](_0x33d981)[_0x4886('0x2e')](handleEntityNotFound(_0x2c0706,null))[_0x4886('0x2e')](respondWithResult(_0x2c0706,null))[_0x4886('0x4c')](handleError(_0x2c0706,null));};exports['create']=function(_0xb5aaa,_0x35ea0b){return db['ChatGroup'][_0x4886('0x51')](_0xb5aaa[_0x4886('0x52')],{})['then'](respondWithResult(_0x35ea0b,0xc9))['catch'](handleError(_0x35ea0b,null));};exports[_0x4886('0x2d')]=function(_0x156afb,_0x539924){if(_0x156afb[_0x4886('0x52')]['id']){delete _0x156afb[_0x4886('0x52')]['id'];}return db[_0x4886('0x35')][_0x4886('0x53')]({'where':{'id':_0x156afb[_0x4886('0x4e')]['id']}})[_0x4886('0x2e')](handleEntityNotFound(_0x539924,null))[_0x4886('0x2e')](saveUpdates(_0x156afb[_0x4886('0x52')],null))['then'](respondWithResult(_0x539924,null))[_0x4886('0x4c')](handleError(_0x539924,null));};exports[_0x4886('0x54')]=function(_0x2350b3,_0x259549){return db[_0x4886('0x35')][_0x4886('0x53')]({'where':{'id':_0x2350b3['params']['id']}})[_0x4886('0x2e')](handleEntityNotFound(_0x259549,null))['then'](removeEntity(_0x259549,null))[_0x4886('0x4c')](handleError(_0x259549,null));};exports['describe']=function(_0x71d8e,_0x3dc755){return db[_0x4886('0x35')][_0x4886('0x55')]()[_0x4886('0x2e')](respondWithResult(_0x3dc755,null))[_0x4886('0x4c')](handleError(_0x3dc755,null));};exports[_0x4886('0x56')]=function(_0x1a01c7,_0xa95c4f,_0x24b995){return db['ChatInternalMessage'][_0x4886('0x27')]({'where':{'ChatGroupId':_0x1a01c7['params']['id'],'ToId':_0x1a01c7[_0x4886('0x57')]['id'],'read':![]}})['then'](function(_0x2b731c){return{'id':_[_0x4886('0x58')](_0x1a01c7['params']['id']),'count':_0x2b731c};})['then'](respondWithResult(_0xa95c4f,null))['catch'](handleError(_0xa95c4f,null));};exports['addMembers']=function(_0x10ef35,_0x3f13eb,_0x1e64c7){return db[_0x4886('0x35')][_0x4886('0x53')]({'where':{'id':_0x10ef35[_0x4886('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3f13eb,null))[_0x4886('0x2e')](function(_0x5f2dac){if(_0x5f2dac){return _0x5f2dac[_0x4886('0x59')](_0x10ef35['body'][_0x4886('0x5a')],_[_0x4886('0x5b')](_0x10ef35[_0x4886('0x52')],['ids','id'])||{});}})[_0x4886('0x2e')](respondWithResult(_0x3f13eb,null))[_0x4886('0x4c')](handleError(_0x3f13eb,null));};exports[_0x4886('0x5c')]=function(_0x471efb,_0x109942,_0x36a788){var _0x44f524={};var _0x342df4={};var _0x4a6d71;var _0x44cf3d;return db['ChatGroup']['findOne']({'where':{'id':_0x471efb[_0x4886('0x4e')]['id']}})[_0x4886('0x2e')](handleEntityNotFound(_0x109942,null))[_0x4886('0x2e')](function(_0x4b0f4a){if(_0x4b0f4a){_0x4a6d71=_0x4b0f4a;_0x342df4[_0x4886('0x39')]=_[_0x4886('0x4f')](db['User'][_0x4886('0x50')]);_0x342df4[_0x4886('0x3a')]=_['keys'](_0x471efb[_0x4886('0x3a')]);_0x342df4[_0x4886('0x42')]=_['intersection'](_0x342df4[_0x4886('0x39')],_0x342df4[_0x4886('0x3a')]);_0x44f524['attributes']=_[_0x4886('0x3c')](_0x342df4[_0x4886('0x39')],qs['fields'](_0x471efb[_0x4886('0x3a')][_0x4886('0x3d')]));_0x44f524[_0x4886('0x3b')]=_0x44f524[_0x4886('0x3b')]['length']?_0x44f524['attributes']:_0x342df4['model'];_0x44f524[_0x4886('0x3f')]=qs[_0x4886('0x40')](_0x471efb[_0x4886('0x3a')]['sort']);_0x44f524[_0x4886('0x41')]=qs[_0x4886('0x42')](_['pick'](_0x471efb[_0x4886('0x3a')],_0x342df4[_0x4886('0x42')]));if(_0x471efb[_0x4886('0x3a')][_0x4886('0x44')]){_0x44f524[_0x4886('0x41')]=_[_0x4886('0x45')](_0x44f524['where'],{'$or':_[_0x4886('0x34')](_0x44f524[_0x4886('0x3b')],function(_0xfe422e){var _0x285f12={};_0x285f12[_0xfe422e]={'$like':'%'+_0x471efb['query']['filter']+'%'};return _0x285f12;})});}_0x44f524=_[_0x4886('0x45')]({},_0x44f524,_0x471efb[_0x4886('0x47')]);return _0x4a6d71[_0x4886('0x5c')](_0x44f524);}})[_0x4886('0x2e')](function(_0x48314a){if(_0x48314a){_0x44cf3d=_0x48314a['length'];if(!_0x471efb[_0x4886('0x3a')][_0x4886('0x5d')](_0x4886('0x5e'))){_0x44f524[_0x4886('0x28')]=qs[_0x4886('0x28')](_0x471efb[_0x4886('0x3a')][_0x4886('0x28')]);_0x44f524[_0x4886('0x25')]=qs[_0x4886('0x25')](_0x471efb[_0x4886('0x3a')][_0x4886('0x25')]);}return _0x4a6d71['getMembers'](_0x44f524);}})['then'](function(_0x426dc9){if(_0x426dc9){return _0x426dc9?{'count':_0x44cf3d,'rows':_0x426dc9}:null;}})['then'](respondWithResult(_0x109942,null))[_0x4886('0x4c')](handleError(_0x109942,null));};exports[_0x4886('0x5f')]=function(_0x5330a5,_0x44998d,_0x5ad57d){return db[_0x4886('0x35')][_0x4886('0x53')]({'where':{'id':_0x5330a5[_0x4886('0x4e')]['id']}})['then'](handleEntityNotFound(_0x44998d,null))[_0x4886('0x2e')](function(_0x2dcd3c){if(_0x2dcd3c){return _0x2dcd3c[_0x4886('0x5f')](_0x5330a5[_0x4886('0x3a')]['ids']);}})[_0x4886('0x2e')](respondWithStatusCode(_0x44998d,null))[_0x4886('0x4c')](handleError(_0x44998d,null));};exports[_0x4886('0x60')]=function(_0x215c19,_0x2a2672,_0x579810){if(_0x215c19['body']['id']){delete _0x215c19['body']['id'];}return db['ChatGroup']['find']({'where':{'id':_0x215c19[_0x4886('0x4e')]['id']}})[_0x4886('0x2e')](handleEntityNotFound(_0x2a2672,null))[_0x4886('0x2e')](function(_0x5125ba){if(_0x5125ba){_0x215c19[_0x4886('0x52')]['ChatGroupId']=_0x5125ba['id'];return db[_0x4886('0x61')][_0x4886('0x51')](_0x215c19[_0x4886('0x52')]);}})[_0x4886('0x2e')](respondWithResult(_0x2a2672,null))[_0x4886('0x4c')](handleError(_0x2a2672,null));};exports[_0x4886('0x62')]=function(_0x5b0f19,_0x497306,_0x46d4e3){var _0x300861={};var _0x26ca5d={};var _0x108ddc;var _0x3720be;return db['ChatGroup'][_0x4886('0x63')]({'where':{'id':_0x5b0f19['params']['id']}})[_0x4886('0x2e')](handleEntityNotFound(_0x497306,null))[_0x4886('0x2e')](function(_0x4519c7){if(_0x4519c7){_0x108ddc=_0x4519c7;_0x26ca5d['model']=_[_0x4886('0x4f')](db[_0x4886('0x61')][_0x4886('0x50')]);_0x26ca5d[_0x4886('0x3a')]=_['keys'](_0x5b0f19[_0x4886('0x3a')]);_0x26ca5d[_0x4886('0x42')]=_['intersection'](_0x26ca5d['model'],_0x26ca5d[_0x4886('0x3a')]);_0x300861['attributes']=_[_0x4886('0x3c')](_0x26ca5d[_0x4886('0x39')],qs[_0x4886('0x3d')](_0x5b0f19['query'][_0x4886('0x3d')]));_0x300861[_0x4886('0x3b')]=_0x300861[_0x4886('0x3b')][_0x4886('0x3e')]?_0x300861[_0x4886('0x3b')]:_0x26ca5d[_0x4886('0x39')];_0x300861[_0x4886('0x3f')]=qs['sort'](_0x5b0f19['query'][_0x4886('0x40')]);_0x300861[_0x4886('0x41')]=qs[_0x4886('0x42')](_[_0x4886('0x43')](_0x5b0f19[_0x4886('0x3a')],_0x26ca5d[_0x4886('0x42')]));if(_0x5b0f19[_0x4886('0x3a')][_0x4886('0x44')]){_0x300861[_0x4886('0x41')]=_[_0x4886('0x45')](_0x300861[_0x4886('0x41')],{'$or':_[_0x4886('0x34')](_0x300861[_0x4886('0x3b')],function(_0x397aed){var _0x5675b3={};_0x5675b3[_0x397aed]={'$like':'%'+_0x5b0f19[_0x4886('0x3a')][_0x4886('0x44')]+'%'};return _0x5675b3;})});}if(_0x5b0f19[_0x4886('0x3a')][_0x4886('0x64')]){var _0x2003d8=_0x5b0f19[_0x4886('0x3a')]['$gte']['split'](',');var _0x5b799c={};_0x5b799c[_0x2003d8[0x0]]={'$gte':moment(_0x2003d8[0x1])[_0x4886('0x65')](_0x4886('0x66'))};_0x300861[_0x4886('0x41')]=_['merge'](_0x300861[_0x4886('0x41')],_0x5b799c);}_0x300861=_[_0x4886('0x45')]({},_0x300861,_0x5b0f19[_0x4886('0x47')]);return _0x108ddc['getMessages'](_0x300861);}})['then'](function(_0x138713){if(_0x138713){_0x3720be=_0x138713[_0x4886('0x3e')];if(!_0x5b0f19[_0x4886('0x3a')][_0x4886('0x5d')](_0x4886('0x5e'))){_0x300861[_0x4886('0x28')]=qs[_0x4886('0x28')](_0x5b0f19[_0x4886('0x3a')][_0x4886('0x28')]);_0x300861[_0x4886('0x25')]=qs[_0x4886('0x25')](_0x5b0f19[_0x4886('0x3a')][_0x4886('0x25')]);}return _0x108ddc[_0x4886('0x62')](_0x300861);}})['then'](function(_0x226fc6){if(_0x226fc6){return _0x226fc6?{'count':_0x3720be,'rows':_0x226fc6}:null;}})[_0x4886('0x2e')](respondWithResult(_0x497306,null))[_0x4886('0x4c')](handleError(_0x497306,null));};
\ No newline at end of file
index c159b57..406ed10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe354=['hook','ChatGroup','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x4ab3d9,_0x1ae3b3){var _0x5f26e9=function(_0x432e3d){while(--_0x432e3d){_0x4ab3d9['push'](_0x4ab3d9['shift']());}};_0x5f26e9(++_0x1ae3b3);}(_0xe354,0x187));var _0x4e35=function(_0x2c14fd,_0x543f9b){_0x2c14fd=_0x2c14fd-0x0;var _0x32490d=_0xe354[_0x2c14fd];return _0x32490d;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0x4e35('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x4e35('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4e35('0x2'),'afterDestroy':'remove'};function emitEvent(_0x9308bb){return function(_0x13573a,_0x178fd0,_0x220401){ChatGroupEvents[_0x4e35('0x3')](_0x9308bb+':'+_0x13573a['id'],_0x13573a);ChatGroupEvents[_0x4e35('0x3')](_0x9308bb,_0x13573a);_0x220401(null);};}for(var e in events){if(events[_0x4e35('0x4')](e)){var event=events[e];ChatGroup[_0x4e35('0x5')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xcdfe=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x5c19be,_0xa1978e){var _0x4767fe=function(_0x2c3c4f){while(--_0x2c3c4f){_0x5c19be['push'](_0x5c19be['shift']());}};_0x4767fe(++_0xa1978e);}(_0xcdfe,0xae));var _0xecdf=function(_0xa47379,_0x4ca94b){_0xa47379=_0xa47379-0x0;var _0x2419f1=_0xcdfe[_0xa47379];return _0x2419f1;};'use strict';var EventEmitter=require(_0xecdf('0x0'));var ChatGroup=require(_0xecdf('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xecdf('0x2')](0x0);var events={'afterCreate':_0xecdf('0x3'),'afterUpdate':_0xecdf('0x4'),'afterDestroy':_0xecdf('0x5')};function emitEvent(_0x7b3070){return function(_0x3bd453,_0x5f4e7e,_0x26cd1e){ChatGroupEvents[_0xecdf('0x6')](_0x7b3070+':'+_0x3bd453['id'],_0x3bd453);ChatGroupEvents[_0xecdf('0x6')](_0x7b3070,_0x3bd453);_0x26cd1e(null);};}for(var e in events){if(events[_0xecdf('0x7')](e)){var event=events[e];ChatGroup[_0xecdf('0x8')](e,emitEvent(event));}}module[_0xecdf('0x9')]=ChatGroupEvents;
\ No newline at end of file
index 211547a..aa9ed11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85a1=['chat_groups','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','ChatGroup'];(function(_0x4a62c2,_0x48bc92){var _0x273a40=function(_0x49577){while(--_0x49577){_0x4a62c2['push'](_0x4a62c2['shift']());}};_0x273a40(++_0x48bc92);}(_0x85a1,0x11f));var _0x185a=function(_0x4c4d84,_0x194270){_0x4c4d84=_0x4c4d84-0x0;var _0x11e924=_0x85a1[_0x4c4d84];return _0x11e924;};'use strict';var _=require('lodash');var util=require(_0x185a('0x0'));var logger=require('../../config/logger')(_0x185a('0x1'));var moment=require(_0x185a('0x2'));var BPromise=require(_0x185a('0x3'));var rp=require(_0x185a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x185a('0x5'));var config=require(_0x185a('0x6'));var attributes=require(_0x185a('0x7'));module[_0x185a('0x8')]=function(_0x419286,_0x41265d){return _0x419286['define'](_0x185a('0x9'),attributes,{'tableName':_0x185a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x922e=['chat_groups','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define'];(function(_0x22d655,_0x3941dd){var _0x257739=function(_0x98136e){while(--_0x98136e){_0x22d655['push'](_0x22d655['shift']());}};_0x257739(++_0x3941dd);}(_0x922e,0x1ed));var _0xe922=function(_0xb6f664,_0x2e976a){_0xb6f664=_0xb6f664-0x0;var _0x33c35b=_0x922e[_0xb6f664];return _0x33c35b;};'use strict';var _=require('lodash');var util=require(_0xe922('0x0'));var logger=require(_0xe922('0x1'))(_0xe922('0x2'));var moment=require('moment');var BPromise=require(_0xe922('0x3'));var rp=require(_0xe922('0x4'));var fs=require('fs');var path=require(_0xe922('0x5'));var rimraf=require(_0xe922('0x6'));var config=require(_0xe922('0x7'));var attributes=require(_0xe922('0x8'));module[_0xe922('0x9')]=function(_0x19e3db,_0x437bc0){return _0x19e3db[_0xe922('0xa')]('ChatGroup',attributes,{'tableName':_0xe922('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44be442..8dfb19b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dfc=['ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./chatGroup.socket','register'];(function(_0x446a79,_0x5ccaac){var _0x23b8fa=function(_0x34739a){while(--_0x34739a){_0x446a79['push'](_0x446a79['shift']());}};_0x23b8fa(++_0x5ccaac);}(_0x8dfc,0xdf));var _0xc8df=function(_0x1b3a5c,_0x2f9d5f){_0x1b3a5c=_0x1b3a5c-0x0;var _0x2ae8cb=_0x8dfc[_0x1b3a5c];return _0x2ae8cb;};'use strict';var _=require(_0xc8df('0x0'));var util=require(_0xc8df('0x1'));var moment=require(_0xc8df('0x2'));var BPromise=require(_0xc8df('0x3'));var rs=require(_0xc8df('0x4'));var fs=require('fs');var Redis=require(_0xc8df('0x5'));var db=require(_0xc8df('0x6'))['db'];var utils=require(_0xc8df('0x7'));var logger=require(_0xc8df('0x8'))('rpc');var config=require(_0xc8df('0x9'));var jayson=require(_0xc8df('0xa'));var client=jayson['client'][_0xc8df('0xb')]({'port':0x232a});config[_0xc8df('0xc')]=_[_0xc8df('0xd')](config[_0xc8df('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xc8df('0xe'))(new Redis(config[_0xc8df('0xc')]));require(_0xc8df('0xf'))[_0xc8df('0x10')](socket);function respondWithRpcPromise(_0x4d80c3,_0x1a1589,_0x382d62){return new BPromise(function(_0x7e609a,_0x55bcd7){return client['request'](_0x4d80c3,_0x382d62)['then'](function(_0xdae4f1){logger['info'](_0xc8df('0x11'),_0x1a1589,'request\x20sent');logger['debug'](_0xc8df('0x12'),_0x1a1589,_0xc8df('0x13'),JSON['stringify'](_0xdae4f1));if(_0xdae4f1['error']){if(_0xdae4f1[_0xc8df('0x14')]['code']===0x1f4){logger[_0xc8df('0x14')](_0xc8df('0x11'),_0x1a1589,_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);return _0x55bcd7(_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);}logger[_0xc8df('0x14')]('ChatGroup,\x20%s,\x20%s',_0x1a1589,_0xdae4f1[_0xc8df('0x14')][_0xc8df('0x15')]);return _0x7e609a(_0xdae4f1['error'][_0xc8df('0x15')]);}else{logger[_0xc8df('0x16')](_0xc8df('0x11'),_0x1a1589,'request\x20sent');_0x7e609a(_0xdae4f1['result']['message']);}})[_0xc8df('0x17')](function(_0x4b24f7){logger[_0xc8df('0x14')](_0xc8df('0x11'),_0x1a1589,_0x4b24f7);_0x55bcd7(_0x4b24f7);});});}
\ No newline at end of file
+var _0x86dd=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x24d8db,_0x2392c6){var _0x13d20d=function(_0x568f80){while(--_0x568f80){_0x24d8db['push'](_0x24d8db['shift']());}};_0x13d20d(++_0x2392c6);}(_0x86dd,0x1ee));var _0xd86d=function(_0x2ba761,_0x18816e){_0x2ba761=_0x2ba761-0x0;var _0x42bbcd=_0x86dd[_0x2ba761];return _0x42bbcd;};'use strict';var _=require('lodash');var util=require(_0xd86d('0x0'));var moment=require('moment');var BPromise=require(_0xd86d('0x1'));var rs=require(_0xd86d('0x2'));var fs=require('fs');var Redis=require(_0xd86d('0x3'));var db=require(_0xd86d('0x4'))['db'];var utils=require(_0xd86d('0x5'));var logger=require(_0xd86d('0x6'))(_0xd86d('0x7'));var config=require(_0xd86d('0x8'));var jayson=require(_0xd86d('0x9'));var client=jayson[_0xd86d('0xa')][_0xd86d('0xb')]({'port':0x232a});config[_0xd86d('0xc')]=_['defaults'](config[_0xd86d('0xc')],{'host':_0xd86d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd86d('0xc')]));require(_0xd86d('0xe'))[_0xd86d('0xf')](socket);function respondWithRpcPromise(_0xd13a67,_0x4d27bb,_0xf1df64){return new BPromise(function(_0x1ca658,_0xee3215){return client[_0xd86d('0x10')](_0xd13a67,_0xf1df64)['then'](function(_0x524d5d){logger[_0xd86d('0x11')](_0xd86d('0x12'),_0x4d27bb,_0xd86d('0x13'));logger[_0xd86d('0x14')](_0xd86d('0x15'),_0x4d27bb,'request\x20sent',JSON['stringify'](_0x524d5d));if(_0x524d5d['error']){if(_0x524d5d[_0xd86d('0x16')][_0xd86d('0x17')]===0x1f4){logger[_0xd86d('0x16')](_0xd86d('0x12'),_0x4d27bb,_0x524d5d[_0xd86d('0x16')][_0xd86d('0x18')]);return _0xee3215(_0x524d5d[_0xd86d('0x16')]['message']);}logger[_0xd86d('0x16')](_0xd86d('0x12'),_0x4d27bb,_0x524d5d[_0xd86d('0x16')][_0xd86d('0x18')]);return _0x1ca658(_0x524d5d[_0xd86d('0x16')][_0xd86d('0x18')]);}else{logger[_0xd86d('0x11')](_0xd86d('0x12'),_0x4d27bb,_0xd86d('0x13'));_0x1ca658(_0x524d5d[_0xd86d('0x19')]['message']);}})['catch'](function(_0x19569a){logger[_0xd86d('0x16')](_0xd86d('0x12'),_0x4d27bb,_0x19569a);_0xee3215(_0x19569a);});});}
\ No newline at end of file
index cbffddd..9cf59e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f7d=['register','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0f7d,0x135));var _0xd0f7=function(_0xd9ce1,_0x517167){_0xd9ce1=_0xd9ce1-0x0;var _0x54be53=_0x0f7d[_0xd9ce1];return _0x54be53;};'use strict';var ChatGroupEvents=require(_0xd0f7('0x0'));var events=[_0xd0f7('0x1'),_0xd0f7('0x2'),'update'];function createListener(_0x232b29,_0x4bd1d){return function(_0x2a302e){_0x4bd1d['emit'](_0x232b29,_0x2a302e);};}function removeListener(_0x4f09de,_0x22b471){return function(){ChatGroupEvents['removeListener'](_0x4f09de,_0x22b471);};}exports[_0xd0f7('0x3')]=function(_0x3ec9d7){for(var _0x44590a=0x0,_0x1a006a=events[_0xd0f7('0x4')];_0x44590a<_0x1a006a;_0x44590a++){var _0x258c2f=events[_0x44590a];var _0x4e080c=createListener(_0xd0f7('0x5')+_0x258c2f,_0x3ec9d7);ChatGroupEvents['on'](_0x258c2f,_0x4e080c);}};
\ No newline at end of file
+var _0xaf82=['save','remove','emit','length','./chatGroup.events'];(function(_0x4a0174,_0x527af9){var _0x116e55=function(_0x5c3cf5){while(--_0x5c3cf5){_0x4a0174['push'](_0x4a0174['shift']());}};_0x116e55(++_0x527af9);}(_0xaf82,0x1ad));var _0x2af8=function(_0x497e20,_0x13bd81){_0x497e20=_0x497e20-0x0;var _0x173a95=_0xaf82[_0x497e20];return _0x173a95;};'use strict';var ChatGroupEvents=require(_0x2af8('0x0'));var events=[_0x2af8('0x1'),_0x2af8('0x2'),'update'];function createListener(_0xe8ecd1,_0x4aecaa){return function(_0x48ee6e){_0x4aecaa[_0x2af8('0x3')](_0xe8ecd1,_0x48ee6e);};}function removeListener(_0x597de5,_0xa7c5f2){return function(){ChatGroupEvents['removeListener'](_0x597de5,_0xa7c5f2);};}exports['register']=function(_0x23d87d){for(var _0x59f5bb=0x0,_0x4715c6=events[_0x2af8('0x4')];_0x59f5bb<_0x4715c6;_0x59f5bb++){var _0x237798=events[_0x59f5bb];var _0x2fd417=createListener('chatGroup:'+_0x237798,_0x23d87d);ChatGroupEvents['on'](_0x237798,_0x2fd417);}};
\ No newline at end of file
index 56145f4..c1c2149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x459b=['/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','post','create','addMembers','addMessage','put','delete','removeMembers','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated'];(function(_0x5330ac,_0x24e3de){var _0x1f13c9=function(_0x2b1183){while(--_0x2b1183){_0x5330ac['push'](_0x5330ac['shift']());}};_0x1f13c9(++_0x24e3de);}(_0x459b,0xd5));var _0xb459=function(_0xbf5df5,_0x3e96cf){_0xbf5df5=_0xbf5df5-0x0;var _0x5b694d=_0x459b[_0xbf5df5];return _0x5b694d;};'use strict';var multer=require(_0xb459('0x0'));var util=require('util');var path=require(_0xb459('0x1'));var timeout=require(_0xb459('0x2'));var express=require(_0xb459('0x3'));var router=express[_0xb459('0x4')]();var fs_extra=require(_0xb459('0x5'));var auth=require(_0xb459('0x6'));var interaction=require(_0xb459('0x7'));var config=require('../../config/environment');var controller=require(_0xb459('0x8'));router[_0xb459('0x9')]('/',auth[_0xb459('0xa')](),controller['index']);router[_0xb459('0x9')](_0xb459('0xb'),auth[_0xb459('0xa')](),controller[_0xb459('0xc')]);router['get'](_0xb459('0xd'),auth['isAuthenticated'](),controller[_0xb459('0xe')]);router[_0xb459('0x9')](_0xb459('0xf'),auth['isAuthenticated'](),controller[_0xb459('0x10')]);router[_0xb459('0x9')](_0xb459('0x11'),auth[_0xb459('0xa')](),controller[_0xb459('0x12')]);router[_0xb459('0x9')](_0xb459('0x13'),auth[_0xb459('0xa')](),controller['getMessages']);router[_0xb459('0x14')]('/',auth[_0xb459('0xa')](),controller[_0xb459('0x15')]);router[_0xb459('0x14')](_0xb459('0x11'),auth['isAuthenticated'](),controller[_0xb459('0x16')]);router[_0xb459('0x14')](_0xb459('0x13'),auth[_0xb459('0xa')](),controller[_0xb459('0x17')]);router[_0xb459('0x18')](_0xb459('0xd'),auth[_0xb459('0xa')](),controller['update']);router[_0xb459('0x19')](_0xb459('0xd'),auth[_0xb459('0xa')](),controller['destroy']);router[_0xb459('0x19')](_0xb459('0x11'),auth['isAuthenticated'](),controller[_0xb459('0x1a')]);module[_0xb459('0x1b')]=router;
\ No newline at end of file
+var _0x0cfa=['connect-timeout','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getMembers','/:id/messages','getMessages','create','post','addMembers','addMessage','put','update','delete','destroy','removeMembers','exports','multer','util','path'];(function(_0x2c6a0d,_0x28a135){var _0x4f9bde=function(_0x2e0f3d){while(--_0x2e0f3d){_0x2c6a0d['push'](_0x2c6a0d['shift']());}};_0x4f9bde(++_0x28a135);}(_0x0cfa,0xd5));var _0xa0cf=function(_0x2c7c71,_0x5bc10f){_0x2c7c71=_0x2c7c71-0x0;var _0x225702=_0x0cfa[_0x2c7c71];return _0x225702;};'use strict';var multer=require(_0xa0cf('0x0'));var util=require(_0xa0cf('0x1'));var path=require(_0xa0cf('0x2'));var timeout=require(_0xa0cf('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa0cf('0x4'));var config=require(_0xa0cf('0x5'));var controller=require('./chatGroup.controller');router[_0xa0cf('0x6')]('/',auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x8')]);router[_0xa0cf('0x6')](_0xa0cf('0x9'),auth[_0xa0cf('0x7')](),controller[_0xa0cf('0xa')]);router['get'](_0xa0cf('0xb'),auth[_0xa0cf('0x7')](),controller[_0xa0cf('0xc')]);router[_0xa0cf('0x6')](_0xa0cf('0xd'),auth[_0xa0cf('0x7')](),controller['getUnread']);router[_0xa0cf('0x6')]('/:id/members',auth['isAuthenticated'](),controller[_0xa0cf('0xe')]);router[_0xa0cf('0x6')](_0xa0cf('0xf'),auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x10')]);router['post']('/',auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x11')]);router[_0xa0cf('0x12')]('/:id/members',auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x13')]);router[_0xa0cf('0x12')](_0xa0cf('0xf'),auth['isAuthenticated'](),controller[_0xa0cf('0x14')]);router[_0xa0cf('0x15')]('/:id',auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x16')]);router[_0xa0cf('0x17')](_0xa0cf('0xb'),auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x18')]);router[_0xa0cf('0x17')]('/:id/members',auth[_0xa0cf('0x7')](),controller[_0xa0cf('0x19')]);module[_0xa0cf('0x1a')]=router;
\ No newline at end of file
index 80f264d..1bea39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc75=['TEXT','STRING','DATE','long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM','star'];(function(_0x1f7996,_0x299a14){var _0x584609=function(_0x14c34a){while(--_0x14c34a){_0x1f7996['push'](_0x1f7996['shift']());}};_0x584609(++_0x299a14);}(_0xfc75,0xe1));var _0x5fc7=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xfc75[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x5fc7('0x0'));module[_0x5fc7('0x1')]={'closed':{'type':Sequelize[_0x5fc7('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x5fc7('0x3')]},'ratingType':{'type':Sequelize[_0x5fc7('0x4')]('star','thumb'),'defaultValue':_0x5fc7('0x5')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x5fc7('0x6')]},'mailTranscript':{'type':Sequelize[_0x5fc7('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x5fc7('0x8')]},'disposition':{'type':Sequelize[_0x5fc7('0x7')]},'secondDisposition':{'type':Sequelize[_0x5fc7('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5fc7('0x7')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x5fc7('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x5fc7('0x7')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x5fc7('0x7')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x5fc7('0x7')]},'formData':{'type':Sequelize[_0x5fc7('0x6')](_0x5fc7('0x9'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x5fc7('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x5fc7('0x4')]('in',_0x5fc7('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x5fc7('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x5fc7('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0x5fc7('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x98e5=['long','DATE','BOOLEAN','INTEGER','ENUM','thumb','star','TEXT','STRING'];(function(_0x56aaa8,_0x36e613){var _0x52b0e8=function(_0x1737b2){while(--_0x1737b2){_0x56aaa8['push'](_0x56aaa8['shift']());}};_0x52b0e8(++_0x36e613);}(_0x98e5,0x8a));var _0x598e=function(_0x170d91,_0x23de69){_0x170d91=_0x170d91-0x0;var _0x49bec4=_0x98e5[_0x170d91];return _0x49bec4;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x598e('0x0')]},'ratingType':{'type':Sequelize[_0x598e('0x1')]('star',_0x598e('0x2')),'defaultValue':_0x598e('0x3')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x598e('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x598e('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x598e('0x5')]},'note':{'type':Sequelize[_0x598e('0x5')]},'browserName':{'type':Sequelize[_0x598e('0x5')]},'browserVersion':{'type':Sequelize[_0x598e('0x5')]},'osName':{'type':Sequelize[_0x598e('0x5')]},'osVersion':{'type':Sequelize[_0x598e('0x5')]},'deviceModel':{'type':Sequelize[_0x598e('0x5')]},'deviceVendor':{'type':Sequelize[_0x598e('0x5')]},'deviceType':{'type':Sequelize[_0x598e('0x5')]},'referer':{'type':Sequelize[_0x598e('0x4')]},'customerIp':{'type':Sequelize[_0x598e('0x5')]},'formData':{'type':Sequelize['TEXT'](_0x598e('0x6'))},'read1stAt':{'type':Sequelize[_0x598e('0x7')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x598e('0x1')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x598e('0x5')]},'customerPort':{'type':Sequelize[_0x598e('0x5')]},'vidaooSessionId':{'type':Sequelize[_0x598e('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x598e('0x8')],'defaultValue':![]}};
\ No newline at end of file
index 90a743e..c44a4c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd68=['setTags','spread','Tag','chatInteractionTags:save','removeTags','download','toString','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','read','Account','Owner','get','mkdirSync','N.A.','closedAt','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','Contact','renderFile','views','.pdf','Chat','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','bluebird','mustache','util','path','ejs','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','api','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','update','destroy','end','send','render','interaction','index','type','key','getOptions','query','user','show','params','keys','ChatInteraction','rawAttributes','filters','intersection','attributes','model','fields','length','include','merge','find','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','name','fullname','email','contact','account','https://api-vidaoo.xcally.com/api/v1/meetings','follow','isNull','body','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','create','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','mailTranscript','server/files/chat/upload/','transcript-%s.txt','now','Messages','format','%s%d','agentAlias','customer','Visitor','ContactId','agentIdentifier','website_alias','System','agent_alias','agent_fullname','User','[%s]\x20%s:\x20%s\x0a','createdAt','direction','appendFileSync','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','ChatMessage','ids','getMessages','hasOwnProperty','order','sort','where','pick','ChatInteractionId','filter','map','$gte','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','rows','nolimit','secret','includeAgent','push','alias','addTags'];(function(_0x3739ab,_0x2b4613){var _0x5e7f1e=function(_0x315290){while(--_0x315290){_0x3739ab['push'](_0x3739ab['shift']());}};_0x5e7f1e(++_0x2b4613);}(_0xbd68,0x1c4));var _0x8bd6=function(_0x28fb13,_0x7120a0){_0x28fb13=_0x28fb13-0x0;var _0x478332=_0xbd68[_0x28fb13];return _0x478332;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x8bd6('0x0'));var rp=require(_0x8bd6('0x1'));var moment=require('moment');var BPromise=require(_0x8bd6('0x2'));var Mustache=require(_0x8bd6('0x3'));var util=require(_0x8bd6('0x4'));var path=require(_0x8bd6('0x5'));var ejs=require(_0x8bd6('0x6'));var fs=require('fs');var _=require(_0x8bd6('0x7'));var Redis=require(_0x8bd6('0x8'));var interaction=require('../../components/interaction/service');var qs=require(_0x8bd6('0x9'));var pdf=require(_0x8bd6('0xa'));var logger=require('../../config/logger')(_0x8bd6('0xb'));var config=require('../../config/environment');var db=require(_0x8bd6('0xc'))['db'];config[_0x8bd6('0xd')]=_[_0x8bd6('0xe')](config[_0x8bd6('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8bd6('0xf'))(new Redis(config[_0x8bd6('0xd')]));require(_0x8bd6('0x10'))[_0x8bd6('0x11')](socket);var jayson=require(_0x8bd6('0x12'));var client=jayson[_0x8bd6('0x13')][_0x8bd6('0x14')]({'port':0x232b});var client9004=jayson[_0x8bd6('0x13')][_0x8bd6('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x4ccbbb,_0x463270,_0x123079,_0x3f476a){return new BPromise(function(_0x19f283,_0x3c7860){var _0x43434a=_0x3f476a||client;return _0x43434a[_0x8bd6('0x15')](_0x4ccbbb,_0x123079)[_0x8bd6('0x16')](function(_0x5b4045){logger[_0x8bd6('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x463270,_0x8bd6('0x18'));logger[_0x8bd6('0x19')](_0x8bd6('0x1a'),_0x463270,_0x8bd6('0x18'),JSON[_0x8bd6('0x1b')](_0x5b4045));if(_0x5b4045['error']){if(_0x5b4045[_0x8bd6('0x1c')][_0x8bd6('0x1d')]===0x1f4){logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0x5b4045[_0x8bd6('0x1c')]['message']);return _0x3c7860(_0x5b4045[_0x8bd6('0x1c')][_0x8bd6('0x1f')]);}logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0x5b4045[_0x8bd6('0x1c')]['message']);return _0x19f283(_0x5b4045[_0x8bd6('0x1c')]['message']);}else{logger[_0x8bd6('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x463270,_0x8bd6('0x18'));_0x19f283(_0x5b4045[_0x8bd6('0x20')][_0x8bd6('0x1f')]);}})[_0x8bd6('0x21')](function(_0xe8e6f1){logger[_0x8bd6('0x1c')](_0x8bd6('0x1e'),_0x463270,_0xe8e6f1);_0x3c7860(_0xe8e6f1);});});}function respondWithStatusCode(_0x38de0c,_0x4fa7f1){_0x4fa7f1=_0x4fa7f1||0xcc;return function(_0x35e7fc){if(_0x35e7fc){return _0x38de0c[_0x8bd6('0x22')](_0x4fa7f1);}return _0x38de0c['status'](_0x4fa7f1)['end']();};}function respondWithResult(_0x32dd45,_0x358e25){_0x358e25=_0x358e25||0xc8;return function(_0x3ee766){if(_0x3ee766){return _0x32dd45[_0x8bd6('0x23')](_0x358e25)[_0x8bd6('0x24')](_0x3ee766);}};}function respondWithFilteredResult(_0x1ed5cf,_0x1e24d0){return function(_0x306260){if(_0x306260){var _0x4d528a=typeof _0x1e24d0[_0x8bd6('0x25')]==='undefined'&&typeof _0x1e24d0[_0x8bd6('0x26')]===_0x8bd6('0x27');var _0x127638=_0x306260[_0x8bd6('0x28')];var _0x2b176e=_0x4d528a?0x0:_0x1e24d0[_0x8bd6('0x25')];var _0x51d722=_0x4d528a?_0x306260[_0x8bd6('0x28')]:_0x1e24d0[_0x8bd6('0x25')]+_0x1e24d0['limit'];var _0x3b9a2c;if(_0x51d722>=_0x127638){_0x51d722=_0x127638;_0x3b9a2c=0xc8;}else{_0x3b9a2c=0xce;}_0x1ed5cf[_0x8bd6('0x23')](_0x3b9a2c);return _0x1ed5cf[_0x8bd6('0x29')]('Content-Range',_0x2b176e+'-'+_0x51d722+'/'+_0x127638)[_0x8bd6('0x24')](_0x306260);}return null;};}function saveUpdates(_0x3bbfe6){return function(_0x885e30){if(_0x885e30){return _0x885e30[_0x8bd6('0x2a')](_0x3bbfe6)[_0x8bd6('0x16')](function(_0x2f4045){return _0x2f4045;});}return null;};}function removeEntity(_0x48862e){return function(_0x171c91){if(_0x171c91){return _0x171c91[_0x8bd6('0x2b')]()[_0x8bd6('0x16')](function(){_0x48862e[_0x8bd6('0x23')](0xcc)[_0x8bd6('0x2c')]();});}};}function handleEntityNotFound(_0x47fd0f){return function(_0xf9056b){if(!_0xf9056b){_0x47fd0f[_0x8bd6('0x22')](0x194);}return _0xf9056b;};}function handleError(_0x3b471e,_0x3fce88){_0x3fce88=_0x3fce88||0x1f4;return function(_0x5df730){logger[_0x8bd6('0x1c')](_0x5df730['stack']);if(_0x5df730['name']){delete _0x5df730['name'];}_0x3b471e[_0x8bd6('0x23')](_0x3fce88)[_0x8bd6('0x2d')](_0x5df730);};}function getMustacheRender(_0x4190de,_0x5e3f5f){return Mustache[_0x8bd6('0x2e')](_0x4190de,_['merge'](_0x5e3f5f['body'],{'contact':_0x5e3f5f['contact'],'message':_0x5e3f5f[_0x8bd6('0x1f')],'agent':_0x5e3f5f['agent'],'interaction':_0x5e3f5f[_0x8bd6('0x2f')],'account':_0x5e3f5f['account']}))||'';}exports[_0x8bd6('0x30')]=function(_0x4eee92,_0x580c5a){var _0x52eb8f={};var _0x2dc198=_['map'](db['ChatInteraction']['rawAttributes'],function(_0x4aebeb){return{'name':_0x4aebeb['fieldName'],'type':_0x4aebeb[_0x8bd6('0x31')][_0x8bd6('0x32')]};});_0x52eb8f=qs[_0x8bd6('0x33')](_0x2dc198,_0x4eee92);return interaction['findAll']('chat',_0x4eee92[_0x8bd6('0x34')],_0x4eee92[_0x8bd6('0x35')],_0x52eb8f,_0x2dc198)['then'](respondWithFilteredResult(_0x580c5a,_0x52eb8f))['catch'](handleError(_0x580c5a,null));};exports[_0x8bd6('0x36')]=function(_0x5c7261,_0x8f7e76){var _0x554f8b={'raw':![],'where':{'id':_0x5c7261[_0x8bd6('0x37')]['id']}},_0x3afdc7={};_0x3afdc7['model']=_[_0x8bd6('0x38')](db[_0x8bd6('0x39')][_0x8bd6('0x3a')]);_0x3afdc7[_0x8bd6('0x34')]=_[_0x8bd6('0x38')](_0x5c7261[_0x8bd6('0x34')]);_0x3afdc7[_0x8bd6('0x3b')]=_[_0x8bd6('0x3c')](_0x3afdc7['model'],_0x3afdc7['query']);_0x554f8b[_0x8bd6('0x3d')]=_['intersection'](_0x3afdc7[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x5c7261['query'][_0x8bd6('0x3f')]));_0x554f8b[_0x8bd6('0x3d')]=_0x554f8b[_0x8bd6('0x3d')][_0x8bd6('0x40')]?_0x554f8b[_0x8bd6('0x3d')]:_0x3afdc7['model'];if(_0x5c7261[_0x8bd6('0x34')]['includeAll']){_0x554f8b[_0x8bd6('0x41')]=[{'all':!![]}];}_0x554f8b=_[_0x8bd6('0x42')]({},_0x554f8b,_0x5c7261['options']);return db[_0x8bd6('0x39')]['find'](_0x554f8b)[_0x8bd6('0x16')](handleEntityNotFound(_0x8f7e76,null))['then'](respondWithResult(_0x8f7e76,null))['catch'](handleError(_0x8f7e76,null));};exports['create']=function(_0x304852,_0x546d6b){return db[_0x8bd6('0x39')]['create'](_0x304852['body'],{})['then'](respondWithResult(_0x546d6b,0xc9))['catch'](handleError(_0x546d6b,null));};exports[_0x8bd6('0x2a')]=function(_0x19aff4,_0x761187){if(_0x19aff4['body']['id']){delete _0x19aff4['body']['id'];}return db['ChatInteraction'][_0x8bd6('0x43')]({'where':{'id':_0x19aff4[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x761187,null))['then'](saveUpdates(_0x19aff4['body'],null))[_0x8bd6('0x16')](respondWithResult(_0x761187,null))[_0x8bd6('0x21')](handleError(_0x761187,null));};exports[_0x8bd6('0x2b')]=function(_0x45a1c9,_0x388d98){return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x45a1c9[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x388d98,null))[_0x8bd6('0x16')](removeEntity(_0x388d98,null))['catch'](handleError(_0x388d98,null));};exports[_0x8bd6('0x44')]=function(_0x37adeb,_0x20d2aa){return db[_0x8bd6('0x39')]['describe']()['then'](respondWithResult(_0x20d2aa,null))[_0x8bd6('0x21')](handleError(_0x20d2aa,null));};exports[_0x8bd6('0x45')]=function(_0x4c616f,_0x3a3506){var _0x4fa9ba=_0x4c616f[_0x8bd6('0x37')]['id'];var _0x10a39e;var _0x4935db;var _0x4204a6;return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x4fa9ba}})[_0x8bd6('0x16')](function(_0x52ff7a){_0x10a39e=_0x52ff7a;return db[_0x8bd6('0x47')]['findOne']({'where':{'id':_0x52ff7a[_0x8bd6('0x48')]},'attributes':['id',_0x8bd6('0x49'),_0x8bd6('0x4a'),_0x8bd6('0x4b'),_0x8bd6('0x4c'),_0x8bd6('0x4d')],'raw':!![]});})['then'](function(_0x26d24e){if(_0x26d24e&&_0x26d24e[_0x8bd6('0x49')]&&_0x26d24e[_0x8bd6('0x4a')]){_0x4935db=_0x26d24e;var _0x1c71c4={'interaction':{'id':_0x4fa9ba},'agent':{'id':_0x4c616f['user']['id'],'name':_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x4e')],'fullname':_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x4f')],'email':_0x4c616f['user'][_0x8bd6('0x50')]},'contact':_0x4c616f['body'][_0x8bd6('0x51')],'account':_0x4c616f['body'][_0x8bd6('0x52')]};var _0x4ff56e={'rejectUnauthorized':![],'method':'POST','url':_0x8bd6('0x53'),'headers':{'X-APIKEY':_0x26d24e[_0x8bd6('0x49')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4c616f[_0x8bd6('0x35')][_0x8bd6('0x50')]],'buttons':null,'topic':_0x4935db[_0x8bd6('0x4b')],'note':_['isNull'](_0x4935db[_0x8bd6('0x4c')])?null:getMustacheRender(_0x4935db[_0x8bd6('0x4c')],_0x1c71c4),'metadata':null},'redirect':_0x8bd6('0x54'),'json':!![]};try{if(!_[_0x8bd6('0x55')](_0x4935db['vidaooMetadata'])){var _0x3edc6c=getMustacheRender(_0x4935db[_0x8bd6('0x4d')],_0x1c71c4);var _0x6a29ef=JSON['parse'](_0x3edc6c);_0x4ff56e[_0x8bd6('0x56')][_0x8bd6('0x57')]=_0x6a29ef;}}catch(_0xc16b86){throw new db['Sequelize'][(_0x8bd6('0x58'))](_0x8bd6('0x59'));}return rp(_0x4ff56e);}else{throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x5b'));}})['then'](function(_0x181a49){_0x4204a6=_0x181a49;if(_0x4204a6['id']){var _0x1d93c2={'body':_0x4204a6[_0x8bd6('0x5c')],'ChatWebsiteId':_0x4935db['id'],'ChatInteractionId':_0x10a39e['id'],'direction':_0x8bd6('0x5d'),'UserId':_0x4c616f['user']['id']};return db['ChatMessage']['create'](_0x1d93c2,{});}else{throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x5e'));}})['then'](function(){return _0x10a39e[_0x8bd6('0x5f')]({'vidaooSessionId':_0x4204a6['id']});})['then'](respondWithResult(_0x3a3506,null))[_0x8bd6('0x21')](handleError(_0x3a3506,null));};exports['customUpdate']=function(_0x326255,_0x5d578b){if(_0x326255[_0x8bd6('0x56')]['id']){delete _0x326255[_0x8bd6('0x56')]['id'];}return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x326255[_0x8bd6('0x37')]['id']},'include':[{'model':db[_0x8bd6('0x60')],'as':'Contact'}]})[_0x8bd6('0x16')](handleEntityNotFound(_0x5d578b,null))['then'](saveUpdates(_0x326255[_0x8bd6('0x56')],null))['then'](respondWithResult(_0x5d578b,null))[_0x8bd6('0x21')](handleError(_0x5d578b,null));};exports[_0x8bd6('0x61')]=function(_0x10a38c,_0x276136){if(_0x10a38c[_0x8bd6('0x56')]['id']){delete _0x10a38c[_0x8bd6('0x56')]['id'];}return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x10a38c['params']['id']}})[_0x8bd6('0x16')](function(_0x3d6700){if(!_0x3d6700){logger[_0x8bd6('0x1c')](_0x8bd6('0x62'),_0x8bd6('0x61'),0x194,_0x8bd6('0x63'));_0x276136[_0x8bd6('0x22')](0x194);}else{if(_0x3d6700[_0x8bd6('0x64')]){throw new db[(_0x8bd6('0x5a'))][(_0x8bd6('0x58'))](_0x8bd6('0x65'));}}return _0x3d6700;})[_0x8bd6('0x16')](function(_0x1419af){if(_0x1419af){return _0x1419af['update']({'closed':_0x10a38c['body'][_0x8bd6('0x66')],'disposition':_0x10a38c[_0x8bd6('0x56')][_0x8bd6('0x67')]})[_0x8bd6('0x16')](function(_0x5e6b3e){return _0x5e6b3e;});}})[_0x8bd6('0x16')](function(){return respondWithRpcPromise('AbandonInteraction',_0x8bd6('0x61'),_0x10a38c[_0x8bd6('0x56')],client9004);})[_0x8bd6('0x16')](respondWithResult(_0x276136,null))[_0x8bd6('0x21')](handleError(_0x276136,null));};exports[_0x8bd6('0x68')]=function(_0x37d344,_0x1a6f6a){_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x4e')]=_0x37d344[_0x8bd6('0x69')][_0x8bd6('0x6a')];_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x6b')]=_0x37d344['file'][_0x8bd6('0x6c')];_0x37d344[_0x8bd6('0x56')][_0x8bd6('0x31')]=_0x37d344['file'][_0x8bd6('0x6d')];return db[_0x8bd6('0x6e')][_0x8bd6('0x6f')](_0x37d344[_0x8bd6('0x56')])['then'](respondWithResult(_0x1a6f6a,0xc9))[_0x8bd6('0x21')](handleError(_0x1a6f6a,null));};exports[_0x8bd6('0x70')]=function(_0x1f9362,_0x1b06e6){return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x1f9362['params']['id']},'raw':!![]})[_0x8bd6('0x16')](handleEntityNotFound(_0x1b06e6,null))[_0x8bd6('0x16')](function(_0x303f2b){if(_0x303f2b){if(_0x303f2b[_0x8bd6('0x66')]){return _0x1b06e6[_0x8bd6('0x23')](0x193)['json']({'status':0x193,'message':_0x8bd6('0x71')});}return db[_0x8bd6('0x6e')][_0x8bd6('0x46')]({'where':{'id':_0x1f9362[_0x8bd6('0x34')][_0x8bd6('0x72')]},'raw':!![]})['then'](handleEntityNotFound(_0x1b06e6,null));}})[_0x8bd6('0x16')](function(_0x2d112b){if(_0x2d112b){var _0x982695=_0x2d112b[_0x8bd6('0x73')]!==null;var _0x19f5b2=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0x76'));if(_0x982695){_0x19f5b2=path[_0x8bd6('0x74')](_0x19f5b2,_0x8bd6('0x77'));}var _0x13e2ec=path[_0x8bd6('0x74')](_0x19f5b2,_0x2d112b[_0x8bd6('0x6b')]);return _0x1b06e6['download'](_0x13e2ec);}})['catch'](handleError(_0x1b06e6,null));};exports['close']=function(_0x25527a,_0x1dcc28){var _0x1d70c6=null;var _0x42c5ab=null;var _0xc19d93=null;if(_0x25527a[_0x8bd6('0x56')]['id']){delete _0x25527a[_0x8bd6('0x56')]['id'];}if(_0x25527a[_0x8bd6('0x56')][_0x8bd6('0x78')]){_0xc19d93=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0x79'),util['format'](_0x8bd6('0x7a'),Date[_0x8bd6('0x7b')]()));_0x25527a['body']['pathTranscript']=_0xc19d93;}return db['ChatInteraction'][_0x8bd6('0x43')]({'where':{'id':_0x25527a[_0x8bd6('0x37')]['id']},'include':[{'model':db['ChatMessage'],'as':'Messages','include':[{'model':db['User'],'as':'User'}]}]})[_0x8bd6('0x16')](handleEntityNotFound(_0x1dcc28,null))['then'](saveUpdates(_0x25527a['body'],null))[_0x8bd6('0x16')](function(_0x528a81){if(_0x528a81){_0x1d70c6=_0x528a81;return db[_0x8bd6('0x47')][_0x8bd6('0x43')]({'where':{'id':_0x1d70c6[_0x8bd6('0x48')]}});}})[_0x8bd6('0x16')](function(_0xfd10a0){if(_0xfd10a0){_0x42c5ab=_0xfd10a0;return db[_0x8bd6('0x60')]['find']({'where':{'id':_0x1d70c6['ContactId']}});}})[_0x8bd6('0x16')](function(_0x17d591){if(_0x17d591){if(_0xc19d93){var _0x442982=null;for(var _0x181525=0x1;_0x181525<_0x1d70c6[_0x8bd6('0x7c')][_0x8bd6('0x40')];++_0x181525){_0x442982=_0x1d70c6[_0x8bd6('0x7c')][_0x181525];var _0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab[_0x8bd6('0x7f')],_0x442982[_0x8bd6('0x64')]):'System';var _0x3565b7=_0x25527a[_0x8bd6('0x56')][_0x8bd6('0x80')]||util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x8bd6('0x81'),_0x442982[_0x8bd6('0x82')]);switch(_0x42c5ab[_0x8bd6('0x83')]){case _0x8bd6('0x84'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab[_0x8bd6('0x7f')],_0x442982[_0x8bd6('0x64')]):_0x8bd6('0x85');break;case _0x8bd6('0x86'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?_0x442982['User']['alias']||_0x442982['User'][_0x8bd6('0x4f')]:_0x8bd6('0x85');break;case _0x8bd6('0x87'):_0x5e350c=_0x442982[_0x8bd6('0x64')]?_0x442982[_0x8bd6('0x88')][_0x8bd6('0x4f')]:_0x8bd6('0x85');break;default:_0x5e350c=_0x442982[_0x8bd6('0x64')]?util[_0x8bd6('0x7d')](_0x8bd6('0x7e'),_0x42c5ab['agentAlias'],_0x442982[_0x8bd6('0x64')]):'System';}var _0x5339c7=util[_0x8bd6('0x7d')](_0x8bd6('0x89'),moment(_0x442982[_0x8bd6('0x8a')])[_0x8bd6('0x7d')]('MM/DD/YYYY\x20HH:mm:ss'),_0x442982[_0x8bd6('0x8b')]==='in'?_0x3565b7:_0x5e350c,_0x442982[_0x8bd6('0x56')]);if(!_0x442982['secret']){fs[_0x8bd6('0x8c')](_0xc19d93,_0x5339c7);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x8bd6('0x8d'),'raw':!![],'include':[{'model':db[_0x8bd6('0x8e')],'as':_0x8bd6('0x8e'),'raw':!![]}]}]});}}})['then'](function(_0x141d02){if(!_0x141d02||!_0x141d02['Smtp']||!_0x25527a[_0x8bd6('0x56')])return _0x1d70c6;var _0x3bbeda=_0x141d02[_0x8bd6('0x8f')]();return respondWithRpcPromise(_0x8bd6('0x90'),_0x8bd6('0x91'),{'account':_0x3bbeda,'message':{'from':util[_0x8bd6('0x7d')](_0x8bd6('0x92'),_0x141d02[_0x8bd6('0x4e')],_0x141d02[_0x8bd6('0x50')]||_0x141d02['Smtp']['user']),'to':_0x25527a['body'][_0x8bd6('0x78')],'subject':_0x8bd6('0x93'),'text':util[_0x8bd6('0x7d')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0x25527a[_0x8bd6('0x56')]['mailTranscript']),'attachments':[{'path':_0xc19d93}]}})[_0x8bd6('0x16')](function(){return _0x1d70c6;})['catch'](function(_0x586a8b){logger[_0x8bd6('0x1c')](_0x586a8b);});})[_0x8bd6('0x16')](respondWithStatusCode(_0x1dcc28,0xc8))[_0x8bd6('0x21')](handleError(_0x1dcc28,null));};exports[_0x8bd6('0x94')]=function(_0x32c4e8,_0x123696){return db[_0x8bd6('0x95')]['find']({'where':{'id':_0x32c4e8[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x123696,null))[_0x8bd6('0x16')](function(_0x4f8437){if(_0x4f8437){return _0x4f8437[_0x8bd6('0x94')](_0x32c4e8['body'][_0x8bd6('0x96')],_['omit'](_0x32c4e8['body'],[_0x8bd6('0x96'),'id'])||{});}})['then'](respondWithResult(_0x123696,null))[_0x8bd6('0x21')](handleError(_0x123696,null));};exports[_0x8bd6('0x97')]=function(_0x31afa1,_0x3b88c5){var _0x37cc48={'raw':![],'where':{}};var _0xe15cd1={};var _0x11e2e3={'count':0x0,'rows':[]};return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x31afa1[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x3b88c5,null))[_0x8bd6('0x16')](function(_0x5abe50){if(_0x5abe50){_0xe15cd1[_0x8bd6('0x3e')]=_[_0x8bd6('0x38')](db[_0x8bd6('0x95')][_0x8bd6('0x3a')]);_0xe15cd1[_0x8bd6('0x34')]=_[_0x8bd6('0x38')](_0x31afa1[_0x8bd6('0x34')]);_0xe15cd1[_0x8bd6('0x3b')]=_['intersection'](_0xe15cd1[_0x8bd6('0x3e')],_0xe15cd1[_0x8bd6('0x34')]);_0x37cc48[_0x8bd6('0x3d')]=_[_0x8bd6('0x3c')](_0xe15cd1[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x31afa1['query'][_0x8bd6('0x3f')]));_0x37cc48['attributes']=_0x37cc48[_0x8bd6('0x3d')][_0x8bd6('0x40')]?_0x37cc48[_0x8bd6('0x3d')]:_0xe15cd1[_0x8bd6('0x3e')];if(!_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x98')]('nolimit')){_0x37cc48['limit']=qs[_0x8bd6('0x26')](_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x26')]);_0x37cc48[_0x8bd6('0x25')]=qs['offset'](_0x31afa1['query']['offset']);}_0x37cc48[_0x8bd6('0x99')]=qs[_0x8bd6('0x9a')](_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9a')]);_0x37cc48[_0x8bd6('0x9b')]=qs[_0x8bd6('0x3b')](_[_0x8bd6('0x9c')](_0x31afa1['query'],_0xe15cd1[_0x8bd6('0x3b')]));_0x37cc48[_0x8bd6('0x9b')][_0x8bd6('0x9d')]=_0x5abe50['id'];if(_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9e')]){_0x37cc48['where']=_[_0x8bd6('0x42')](_0x37cc48[_0x8bd6('0x9b')],{'$or':_[_0x8bd6('0x9f')](_0x37cc48[_0x8bd6('0x3d')],function(_0x3fa5cd){var _0x201e40={};_0x201e40[_0x3fa5cd]={'$like':'%'+_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0x9e')]+'%'};return _0x201e40;})});}if(_0x31afa1['query']['$gte']){var _0x171653=_0x31afa1['query'][_0x8bd6('0xa0')]['split'](',');var _0x99f00d={};_0x99f00d[_0x171653[0x0]]={'$gte':moment(_0x171653[0x1])[_0x8bd6('0x7d')](_0x8bd6('0xa1'))};_0x37cc48[_0x8bd6('0x9b')]=_[_0x8bd6('0x42')](_0x37cc48[_0x8bd6('0x9b')],_0x99f00d);}_0x37cc48=_[_0x8bd6('0x42')]({},_0x37cc48,_0x31afa1[_0x8bd6('0xa2')]);return db['ChatMessage'][_0x8bd6('0x28')]({'where':_0x37cc48[_0x8bd6('0x9b')]})[_0x8bd6('0x16')](function(_0x36d294){_0x11e2e3[_0x8bd6('0x28')]=_0x36d294;if(_0x31afa1[_0x8bd6('0x34')][_0x8bd6('0xa3')]){_0x37cc48[_0x8bd6('0x41')]=[{'all':!![]}];}return db['ChatMessage'][_0x8bd6('0xa4')](_0x37cc48);})[_0x8bd6('0x16')](function(_0x19aa94){_0x11e2e3[_0x8bd6('0xa5')]=_0x19aa94;return _0x11e2e3;});}})['then'](respondWithFilteredResult(_0x3b88c5,_0x37cc48))[_0x8bd6('0x21')](handleError(_0x3b88c5,null));};exports['getMyMessages']=function(_0x5b0485,_0x18f57c){var _0xf1c3b0={'where':{}},_0x28ddec={},_0x2b1e7d={'count':0x0,'rows':[]};return db[_0x8bd6('0x39')][_0x8bd6('0x46')]({'where':{'id':_0x5b0485['params']['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x18f57c,null))[_0x8bd6('0x16')](function(_0xce0f73){if(_0xce0f73){_0x28ddec[_0x8bd6('0x3e')]=_['keys'](db['ChatMessage'][_0x8bd6('0x3a')]);_0x28ddec['query']=_[_0x8bd6('0x38')](_0x5b0485[_0x8bd6('0x34')]);_0x28ddec[_0x8bd6('0x3b')]=_['intersection'](_0x28ddec[_0x8bd6('0x3e')],_0x28ddec[_0x8bd6('0x34')]);_0xf1c3b0['attributes']=_[_0x8bd6('0x3c')](_0x28ddec[_0x8bd6('0x3e')],qs[_0x8bd6('0x3f')](_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x3f')]));_0xf1c3b0[_0x8bd6('0x3d')]=_0xf1c3b0['attributes']['length']?_0xf1c3b0['attributes']:_0x28ddec[_0x8bd6('0x3e')];if(!_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x98')](_0x8bd6('0xa6'))){_0xf1c3b0['limit']=qs[_0x8bd6('0x26')](_0x5b0485[_0x8bd6('0x34')]['limit']);_0xf1c3b0[_0x8bd6('0x25')]=qs[_0x8bd6('0x25')](_0x5b0485[_0x8bd6('0x34')]['offset']);}_0xf1c3b0[_0x8bd6('0x99')]=qs[_0x8bd6('0x9a')](_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0x9a')]);_0xf1c3b0['where']=qs[_0x8bd6('0x3b')](_['pick'](_0x5b0485[_0x8bd6('0x34')],_0x28ddec['filters']));_0xf1c3b0['where'][_0x8bd6('0x9d')]=_0xce0f73['id'];if(_0x5b0485['query'][_0x8bd6('0x9e')]){_0xf1c3b0[_0x8bd6('0x9b')]=_[_0x8bd6('0x42')](_0xf1c3b0[_0x8bd6('0x9b')],{'$or':_[_0x8bd6('0x9f')](_0xf1c3b0['attributes'],function(_0x455fd1){var _0xa564bd={};_0xa564bd[_0x455fd1]={'$like':'%'+_0x5b0485[_0x8bd6('0x34')]['filter']+'%'};return _0xa564bd;})});}_0xf1c3b0[_0x8bd6('0x9b')][_0x8bd6('0xa7')]=![];if(_0x5b0485[_0x8bd6('0x34')]['id']){_0xf1c3b0[_0x8bd6('0x9b')]['id']={'$gt':_0x5b0485[_0x8bd6('0x34')]['id']};}_0xf1c3b0=_[_0x8bd6('0x42')]({},_0xf1c3b0,_0x5b0485['options']);return db['ChatMessage'][_0x8bd6('0x28')]({'where':_0xf1c3b0[_0x8bd6('0x9b')]})[_0x8bd6('0x16')](function(_0x28e1e4){_0x2b1e7d[_0x8bd6('0x28')]=_0x28e1e4;_0xf1c3b0['include']=[];if(_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0xa8')]){_0xf1c3b0[_0x8bd6('0x41')][_0x8bd6('0xa9')]({'model':db['User'],'as':_0x8bd6('0x88'),'attributes':['id',_0x8bd6('0x4f'),_0x8bd6('0xaa')]});}if(_0x5b0485[_0x8bd6('0x34')][_0x8bd6('0xa3')]){_0xf1c3b0['include']=[{'all':!![]}];}return db['ChatMessage'][_0x8bd6('0xa4')](_0xf1c3b0);})[_0x8bd6('0x16')](function(_0x1c87a9){_0x2b1e7d[_0x8bd6('0xa5')]=_0x1c87a9;return _0x2b1e7d;});}})[_0x8bd6('0x16')](respondWithFilteredResult(_0x18f57c,_0xf1c3b0))[_0x8bd6('0x21')](handleError(_0x18f57c,null));};exports[_0x8bd6('0xab')]=function(_0x2ae31d,_0x33363e){return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x2ae31d[_0x8bd6('0x37')]['id']}})['then'](handleEntityNotFound(_0x33363e,null))['then'](function(_0x1c380f){if(_0x1c380f){return _0x1c380f[_0x8bd6('0xac')](_0x2ae31d['body']['ids'],_['omit'](_0x2ae31d[_0x8bd6('0x56')],[_0x8bd6('0x96'),'id'])||{})[_0x8bd6('0xad')](function(){return db[_0x8bd6('0xae')][_0x8bd6('0xa4')]({'attributes':['id',_0x8bd6('0x4e'),'color'],'where':{'id':_0x2ae31d[_0x8bd6('0x56')][_0x8bd6('0x96')]}});})[_0x8bd6('0x16')](function(_0x18a52d){socket['emit'](_0x8bd6('0xaf'),{'id':Number(_0x2ae31d[_0x8bd6('0x37')]['id']),'tags':_0x18a52d||[]});return{'id':Number(_0x2ae31d[_0x8bd6('0x37')]['id']),'tags':_0x18a52d||[]};});}})[_0x8bd6('0x16')](respondWithResult(_0x33363e,null))[_0x8bd6('0x21')](handleError(_0x33363e,null));};exports[_0x8bd6('0xb0')]=function(_0x5a5309,_0x3d58d6){return db[_0x8bd6('0x39')]['find']({'where':{'id':_0x5a5309[_0x8bd6('0x37')]['id']}})[_0x8bd6('0x16')](handleEntityNotFound(_0x3d58d6,null))[_0x8bd6('0x16')](function(_0x54abc2){if(_0x54abc2){return _0x54abc2[_0x8bd6('0xb0')](_0x5a5309[_0x8bd6('0x34')][_0x8bd6('0x96')]);}})[_0x8bd6('0x16')](respondWithStatusCode(_0x3d58d6,null))[_0x8bd6('0x21')](handleError(_0x3d58d6,null));};exports[_0x8bd6('0xb1')]=function(_0x5107af,_0x2246aa){var _0x297923=moment()['unix']()[_0x8bd6('0xb2')]();var _0x2c5ca7=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0xb3'),_0x8bd6('0xb4'),_0x8bd6('0xb5'));var _0x27706d=path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],'server',_0x8bd6('0xb4'),_0x8bd6('0xb6'));var _0x4f4f5e=path[_0x8bd6('0x74')](_0x2c5ca7,_0x297923);var _0x4b1e9d=util[_0x8bd6('0x7d')](_0x8bd6('0xb7'),_0x5107af[_0x8bd6('0x37')]['id'],_0x297923);var _0x4c8ba6=path['join'](_0x2c5ca7,_0x4b1e9d);var _0x2af849=[];_0x2af849['push']({'model':db['User'],'as':_0x8bd6('0x88'),'attributes':['id',_0x8bd6('0x4f')],'raw':!![]});_0x2af849[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x60')],'as':'Contact','attributes':['id',_0x8bd6('0xb8'),_0x8bd6('0xb9')],'raw':!![]});if(_0x5107af[_0x8bd6('0x34')][_0x8bd6('0xb6')]){_0x2af849[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x6e')],'as':'Attachment','raw':!![]});}var _0x200cc3=[{'model':db[_0x8bd6('0x95')],'as':_0x8bd6('0x7c'),'attributes':['id',_0x8bd6('0x56'),_0x8bd6('0x8a'),_0x8bd6('0x8b'),_0x8bd6('0xa7'),_0x8bd6('0xba')],'include':_0x2af849}];_0x200cc3['push']({'model':db[_0x8bd6('0x47')],'as':_0x8bd6('0xbb'),'attributes':['id',_0x8bd6('0x4e')]});_0x200cc3[_0x8bd6('0xa9')]({'model':db[_0x8bd6('0x88')],'as':_0x8bd6('0xbc'),'attributes':['id',_0x8bd6('0x4f')]});return db[_0x8bd6('0x39')][_0x8bd6('0x43')]({'where':{'id':_0x5107af['params']['id']},'include':_0x200cc3})['then'](handleEntityNotFound(_0x2246aa,null))[_0x8bd6('0x16')](function(_0x149168){if(_0x149168){var _0x2519cb=_0x149168[_0x8bd6('0xbd')]({'plain':!![]});fs[_0x8bd6('0xbe')](_0x4f4f5e);var _0x27456d={'channel':'Chat','account':_0x2519cb[_0x8bd6('0xbb')][_0x8bd6('0x4e')],'agent':_0x2519cb[_0x8bd6('0xbc')]?_0x2519cb[_0x8bd6('0xbc')][_0x8bd6('0x4f')]:_0x8bd6('0xbf'),'createdAt':moment(_0x2519cb['createdAt'])[_0x8bd6('0x7d')](_0x8bd6('0xa1'))[_0x8bd6('0xb2')](),'closedAt':_0x2519cb[_0x8bd6('0x66')]?moment(_0x2519cb[_0x8bd6('0xc0')])[_0x8bd6('0x7d')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x2519cb[_0x8bd6('0x67')],'chatInfo':{'browser':_0x2519cb['browserName'],'os':_0x2519cb[_0x8bd6('0xc1')],'referer':_0x2519cb[_0x8bd6('0xc2')],'customerIp':_0x2519cb[_0x8bd6('0xc3')],'customerPort':_0x2519cb[_0x8bd6('0xc4')]?_0x2519cb[_0x8bd6('0xc4')]:'N.A.'},'messages':_(_0x2519cb[_0x8bd6('0x7c')])[_0x8bd6('0xc5')]()[_0x8bd6('0x9e')]({'secret':![]})['map'](function(_0x2b2a56){if(_0x2b2a56[_0x8bd6('0x6e')]){var _0x34dbf1=path[_0x8bd6('0x74')](_0x27706d,_0x2b2a56[_0x8bd6('0x6e')][_0x8bd6('0x6b')]);if(fs[_0x8bd6('0xc6')](_0x34dbf1)){fs[_0x8bd6('0xc7')](_0x34dbf1)['pipe'](fs['createWriteStream'](path[_0x8bd6('0x74')](_0x4f4f5e,_0x2b2a56[_0x8bd6('0x6e')]['basename'])));}}return{'date':moment(_0x2b2a56[_0x8bd6('0x8a')])[_0x8bd6('0x7d')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8bd6('0xb2')](),'sender':_0x2b2a56[_0x8bd6('0x8b')]===_0x8bd6('0x5d')?_0x2b2a56[_0x8bd6('0x88')]?_0x2b2a56['User']['fullname']:'System':_0x2b2a56[_0x8bd6('0xc8')]['firstName']+(_0x2b2a56[_0x8bd6('0xc8')][_0x8bd6('0xb9')]?'\x20'+_0x2b2a56[_0x8bd6('0xc8')][_0x8bd6('0xb9')]:''),'body':_0x2b2a56[_0x8bd6('0x6e')]?_0x2b2a56[_0x8bd6('0x6e')]['basename']:_0x2b2a56[_0x8bd6('0x56')],'direction':_0x2b2a56[_0x8bd6('0x8b')]===_0x8bd6('0x5d')?'A':'C','secret':_0x2b2a56[_0x8bd6('0xa7')],'read':_0x2b2a56[_0x8bd6('0xba')],'attachment':_0x2b2a56[_0x8bd6('0x6e')]};})['value']()};return ejs[_0x8bd6('0xc9')](path[_0x8bd6('0x74')](config[_0x8bd6('0x75')],_0x8bd6('0xb3'),_0x8bd6('0xca'),'downloadInteraction.ejs'),{'interaction':_0x27456d})['then'](function(_0x423b9d){var _0x517c15=path[_0x8bd6('0x74')](_0x4f4f5e,'transcript-'+_0x2519cb['id']+'-'+_0x297923+_0x8bd6('0xcb'));var _0x330f49={'path':_0x517c15,'channel':_0x8bd6('0xcc'),'interactionId':_0x2519cb['id']};return pdf[_0x8bd6('0xcd')](_0x423b9d,_0x330f49);})[_0x8bd6('0x16')](function(){return new Promise(function(_0x1752e1,_0x2ad5d9){zipdir(_0x4f4f5e,{'saveTo':_0x4c8ba6},function(_0x296ff5,_0x4440ed){if(_0x296ff5)return _0x2ad5d9(_0x296ff5);return _0x1752e1(_0x4440ed);});})[_0x8bd6('0x16')](function(){return new BPromise(function(_0x18c3ad,_0xd5e9d9){rimraf(_0x4f4f5e,function(_0x399922){if(_0x399922)_0xd5e9d9(_0x399922);return _0x18c3ad();});});})[_0x8bd6('0x16')](function(){return _0x2246aa[_0x8bd6('0xb1')](_0x4c8ba6,_0x4b1e9d,function(_0x103b81){if(_0x103b81){logger[_0x8bd6('0x1c')](_0x8bd6('0xce'),_0x103b81);}else{fs[_0x8bd6('0xcf')](_0x4c8ba6);}});});});}else{return _0x2246aa[_0x8bd6('0x22')](0xc8);}})['catch'](handleError(_0x2246aa,null));};
\ No newline at end of file
+var _0xb6dc=['filter','YYYY-MM-DD\x20HH:mm:ss','options','rows','getMyMessages','nolimit','includeAgent','push','addTags','spread','color','emit','chatInteractionTags:save','removeTags','toString','server','files','transcript-%d-%s.zip','firstName','lastName','attachments','createdAt','secret','Account','Owner','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','createReadStream','pipe','Contact','read','value','renderFile','transcript-','.pdf','createPdfFromHTML','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','sendStatus','status','json','undefined','limit','count','offset','set','update','destroy','end','stack','name','send','render','contact','agent','interaction','account','index','map','ChatInteraction','type','key','findAll','query','user','show','params','model','keys','rawAttributes','intersection','fields','attributes','length','includeAll','include','merge','find','catch','create','body','describe','findOne','ChatWebsite','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','parse','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','User','CmContact','ContactId','Messages','UserId','%s%d','Visitor','agentIdentifier','agentAlias','System','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','mailTranscript','addMessage','ids','omit','getMessages','filters','hasOwnProperty','order','sort','where','pick','ChatInteractionId'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xb6dc,0xfb));var _0xcb6d=function(_0x42697c,_0x31318f){_0x42697c=_0x42697c-0x0;var _0x1f7131=_0xb6dc[_0x42697c];return _0x1f7131;};'use strict';var rimraf=require(_0xcb6d('0x0'));var zipdir=require(_0xcb6d('0x1'));var rp=require(_0xcb6d('0x2'));var moment=require(_0xcb6d('0x3'));var BPromise=require(_0xcb6d('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcb6d('0x5'));var ejs=require(_0xcb6d('0x6'));var fs=require('fs');var _=require(_0xcb6d('0x7'));var Redis=require(_0xcb6d('0x8'));var interaction=require(_0xcb6d('0x9'));var qs=require(_0xcb6d('0xa'));var pdf=require('../../components/export/pdf');var logger=require(_0xcb6d('0xb'))(_0xcb6d('0xc'));var config=require(_0xcb6d('0xd'));var db=require(_0xcb6d('0xe'))['db'];config['redis']=_[_0xcb6d('0xf')](config[_0xcb6d('0x10')],{'host':_0xcb6d('0x11'),'port':0x18eb});var socket=require(_0xcb6d('0x12'))(new Redis(config[_0xcb6d('0x10')]));require(_0xcb6d('0x13'))[_0xcb6d('0x14')](socket);var jayson=require(_0xcb6d('0x15'));var client=jayson[_0xcb6d('0x16')][_0xcb6d('0x17')]({'port':0x232b});var client9004=jayson[_0xcb6d('0x16')][_0xcb6d('0x17')]({'port':0x232c});function respondWithRpcPromise(_0x548f31,_0x2e1fbe,_0x4b0eac,_0x1d48fa){return new BPromise(function(_0x2638e0,_0x1e411b){var _0x5eaf56=_0x1d48fa||client;return _0x5eaf56[_0xcb6d('0x18')](_0x548f31,_0x4b0eac)[_0xcb6d('0x19')](function(_0x56e13d){logger[_0xcb6d('0x1a')](_0xcb6d('0x1b'),_0x2e1fbe,'request\x20sent');logger['debug'](_0xcb6d('0x1c'),_0x2e1fbe,'request\x20sent',JSON[_0xcb6d('0x1d')](_0x56e13d));if(_0x56e13d[_0xcb6d('0x1e')]){if(_0x56e13d[_0xcb6d('0x1e')][_0xcb6d('0x1f')]===0x1f4){logger[_0xcb6d('0x1e')](_0xcb6d('0x1b'),_0x2e1fbe,_0x56e13d['error'][_0xcb6d('0x20')]);return _0x1e411b(_0x56e13d[_0xcb6d('0x1e')]['message']);}logger[_0xcb6d('0x1e')]('ChatInteraction,\x20%s,\x20%s',_0x2e1fbe,_0x56e13d[_0xcb6d('0x1e')][_0xcb6d('0x20')]);return _0x2638e0(_0x56e13d[_0xcb6d('0x1e')][_0xcb6d('0x20')]);}else{logger[_0xcb6d('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x2e1fbe,_0xcb6d('0x21'));_0x2638e0(_0x56e13d['result']['message']);}})['catch'](function(_0x5bdfaa){logger[_0xcb6d('0x1e')]('ChatInteraction,\x20%s,\x20%s',_0x2e1fbe,_0x5bdfaa);_0x1e411b(_0x5bdfaa);});});}function respondWithStatusCode(_0x2c3948,_0x32316d){_0x32316d=_0x32316d||0xcc;return function(_0x20611b){if(_0x20611b){return _0x2c3948[_0xcb6d('0x22')](_0x32316d);}return _0x2c3948[_0xcb6d('0x23')](_0x32316d)['end']();};}function respondWithResult(_0x3a6373,_0x5d3289){_0x5d3289=_0x5d3289||0xc8;return function(_0xc9ea5){if(_0xc9ea5){return _0x3a6373[_0xcb6d('0x23')](_0x5d3289)[_0xcb6d('0x24')](_0xc9ea5);}};}function respondWithFilteredResult(_0x191d77,_0x191832){return function(_0x358343){if(_0x358343){var _0x476376=typeof _0x191832['offset']===_0xcb6d('0x25')&&typeof _0x191832[_0xcb6d('0x26')]===_0xcb6d('0x25');var _0x2a46e2=_0x358343[_0xcb6d('0x27')];var _0x177f64=_0x476376?0x0:_0x191832['offset'];var _0x2e33cb=_0x476376?_0x358343[_0xcb6d('0x27')]:_0x191832[_0xcb6d('0x28')]+_0x191832[_0xcb6d('0x26')];var _0x29cd1b;if(_0x2e33cb>=_0x2a46e2){_0x2e33cb=_0x2a46e2;_0x29cd1b=0xc8;}else{_0x29cd1b=0xce;}_0x191d77[_0xcb6d('0x23')](_0x29cd1b);return _0x191d77[_0xcb6d('0x29')]('Content-Range',_0x177f64+'-'+_0x2e33cb+'/'+_0x2a46e2)['json'](_0x358343);}return null;};}function saveUpdates(_0x759e6e){return function(_0x461a47){if(_0x461a47){return _0x461a47[_0xcb6d('0x2a')](_0x759e6e)[_0xcb6d('0x19')](function(_0x17c764){return _0x17c764;});}return null;};}function removeEntity(_0x565c77){return function(_0x3de333){if(_0x3de333){return _0x3de333[_0xcb6d('0x2b')]()[_0xcb6d('0x19')](function(){_0x565c77[_0xcb6d('0x23')](0xcc)[_0xcb6d('0x2c')]();});}};}function handleEntityNotFound(_0x6efdc3){return function(_0x4bab59){if(!_0x4bab59){_0x6efdc3[_0xcb6d('0x22')](0x194);}return _0x4bab59;};}function handleError(_0x2c3cf1,_0x26a349){_0x26a349=_0x26a349||0x1f4;return function(_0x313c05){logger['error'](_0x313c05[_0xcb6d('0x2d')]);if(_0x313c05[_0xcb6d('0x2e')]){delete _0x313c05[_0xcb6d('0x2e')];}_0x2c3cf1[_0xcb6d('0x23')](_0x26a349)[_0xcb6d('0x2f')](_0x313c05);};}function getMustacheRender(_0x7171f0,_0x6b8c8e){return Mustache[_0xcb6d('0x30')](_0x7171f0,_['merge'](_0x6b8c8e['body'],{'contact':_0x6b8c8e[_0xcb6d('0x31')],'message':_0x6b8c8e[_0xcb6d('0x20')],'agent':_0x6b8c8e[_0xcb6d('0x32')],'interaction':_0x6b8c8e[_0xcb6d('0x33')],'account':_0x6b8c8e[_0xcb6d('0x34')]}))||'';}exports[_0xcb6d('0x35')]=function(_0x338276,_0x69f291){var _0x35fab9={};var _0x583421=_[_0xcb6d('0x36')](db[_0xcb6d('0x37')]['rawAttributes'],function(_0x24c2de){return{'name':_0x24c2de['fieldName'],'type':_0x24c2de[_0xcb6d('0x38')][_0xcb6d('0x39')]};});_0x35fab9=qs['getOptions'](_0x583421,_0x338276);return interaction[_0xcb6d('0x3a')]('chat',_0x338276[_0xcb6d('0x3b')],_0x338276[_0xcb6d('0x3c')],_0x35fab9,_0x583421)['then'](respondWithFilteredResult(_0x69f291,_0x35fab9))['catch'](handleError(_0x69f291,null));};exports[_0xcb6d('0x3d')]=function(_0x568a7f,_0x2bd0d1){var _0x48b4d7={'raw':![],'where':{'id':_0x568a7f[_0xcb6d('0x3e')]['id']}},_0x4699a3={};_0x4699a3[_0xcb6d('0x3f')]=_[_0xcb6d('0x40')](db[_0xcb6d('0x37')][_0xcb6d('0x41')]);_0x4699a3[_0xcb6d('0x3b')]=_[_0xcb6d('0x40')](_0x568a7f[_0xcb6d('0x3b')]);_0x4699a3['filters']=_[_0xcb6d('0x42')](_0x4699a3[_0xcb6d('0x3f')],_0x4699a3['query']);_0x48b4d7['attributes']=_[_0xcb6d('0x42')](_0x4699a3[_0xcb6d('0x3f')],qs[_0xcb6d('0x43')](_0x568a7f[_0xcb6d('0x3b')]['fields']));_0x48b4d7[_0xcb6d('0x44')]=_0x48b4d7[_0xcb6d('0x44')][_0xcb6d('0x45')]?_0x48b4d7[_0xcb6d('0x44')]:_0x4699a3[_0xcb6d('0x3f')];if(_0x568a7f[_0xcb6d('0x3b')][_0xcb6d('0x46')]){_0x48b4d7[_0xcb6d('0x47')]=[{'all':!![]}];}_0x48b4d7=_[_0xcb6d('0x48')]({},_0x48b4d7,_0x568a7f['options']);return db[_0xcb6d('0x37')][_0xcb6d('0x49')](_0x48b4d7)[_0xcb6d('0x19')](handleEntityNotFound(_0x2bd0d1,null))[_0xcb6d('0x19')](respondWithResult(_0x2bd0d1,null))[_0xcb6d('0x4a')](handleError(_0x2bd0d1,null));};exports[_0xcb6d('0x4b')]=function(_0x593f9f,_0x16da11){return db[_0xcb6d('0x37')][_0xcb6d('0x4b')](_0x593f9f[_0xcb6d('0x4c')],{})['then'](respondWithResult(_0x16da11,0xc9))[_0xcb6d('0x4a')](handleError(_0x16da11,null));};exports[_0xcb6d('0x2a')]=function(_0x34422d,_0x1b5ab5){if(_0x34422d[_0xcb6d('0x4c')]['id']){delete _0x34422d[_0xcb6d('0x4c')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x34422d[_0xcb6d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1b5ab5,null))['then'](saveUpdates(_0x34422d[_0xcb6d('0x4c')],null))[_0xcb6d('0x19')](respondWithResult(_0x1b5ab5,null))[_0xcb6d('0x4a')](handleError(_0x1b5ab5,null));};exports[_0xcb6d('0x2b')]=function(_0x4ee1ab,_0x50eb15){return db[_0xcb6d('0x37')][_0xcb6d('0x49')]({'where':{'id':_0x4ee1ab[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](handleEntityNotFound(_0x50eb15,null))[_0xcb6d('0x19')](removeEntity(_0x50eb15,null))[_0xcb6d('0x4a')](handleError(_0x50eb15,null));};exports[_0xcb6d('0x4d')]=function(_0x178aaf,_0x7105cc){return db[_0xcb6d('0x37')][_0xcb6d('0x4d')]()[_0xcb6d('0x19')](respondWithResult(_0x7105cc,null))[_0xcb6d('0x4a')](handleError(_0x7105cc,null));};exports['createVidaooSession']=function(_0x2607ee,_0x5e93bc){var _0xbbfe8e=_0x2607ee[_0xcb6d('0x3e')]['id'];var _0x41d73c;var _0x96891e;var _0x23a4ff;return db[_0xcb6d('0x37')][_0xcb6d('0x4e')]({'where':{'id':_0xbbfe8e}})[_0xcb6d('0x19')](function(_0x42254a){_0x41d73c=_0x42254a;return db[_0xcb6d('0x4f')]['findOne']({'where':{'id':_0x42254a[_0xcb6d('0x50')]},'attributes':['id',_0xcb6d('0x51'),_0xcb6d('0x52'),'vidaooTopic',_0xcb6d('0x53'),_0xcb6d('0x54')],'raw':!![]});})[_0xcb6d('0x19')](function(_0x3b6166){if(_0x3b6166&&_0x3b6166['vidaooApiKey']&&_0x3b6166[_0xcb6d('0x52')]){_0x96891e=_0x3b6166;var _0x8b97bd={'interaction':{'id':_0xbbfe8e},'agent':{'id':_0x2607ee[_0xcb6d('0x3c')]['id'],'name':_0x2607ee['user'][_0xcb6d('0x2e')],'fullname':_0x2607ee[_0xcb6d('0x3c')][_0xcb6d('0x55')],'email':_0x2607ee[_0xcb6d('0x3c')][_0xcb6d('0x56')]},'contact':_0x2607ee['body']['contact'],'account':_0x2607ee[_0xcb6d('0x4c')][_0xcb6d('0x34')]};var _0x449aa4={'rejectUnauthorized':![],'method':_0xcb6d('0x57'),'url':_0xcb6d('0x58'),'headers':{'X-APIKEY':_0x3b6166[_0xcb6d('0x51')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x2607ee[_0xcb6d('0x3c')][_0xcb6d('0x56')]],'buttons':null,'topic':_0x96891e['vidaooTopic'],'note':_[_0xcb6d('0x59')](_0x96891e[_0xcb6d('0x53')])?null:getMustacheRender(_0x96891e[_0xcb6d('0x53')],_0x8b97bd),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0xcb6d('0x59')](_0x96891e[_0xcb6d('0x54')])){var _0x33e159=getMustacheRender(_0x96891e[_0xcb6d('0x54')],_0x8b97bd);var _0x23b0b3=JSON[_0xcb6d('0x5a')](_0x33e159);_0x449aa4[_0xcb6d('0x4c')]['metadata']=_0x23b0b3;}}catch(_0x5f5959){throw new db[(_0xcb6d('0x5b'))][(_0xcb6d('0x5c'))](_0xcb6d('0x5d'));}return rp(_0x449aa4);}else{throw new db[(_0xcb6d('0x5b'))][(_0xcb6d('0x5c'))](_0xcb6d('0x5e'));}})[_0xcb6d('0x19')](function(_0x5d487a){_0x23a4ff=_0x5d487a;if(_0x23a4ff['id']){var _0x53cd4e={'body':_0x23a4ff[_0xcb6d('0x5f')],'ChatWebsiteId':_0x96891e['id'],'ChatInteractionId':_0x41d73c['id'],'direction':_0xcb6d('0x60'),'UserId':_0x2607ee[_0xcb6d('0x3c')]['id']};return db[_0xcb6d('0x61')][_0xcb6d('0x4b')](_0x53cd4e,{});}else{throw new db[(_0xcb6d('0x5b'))][(_0xcb6d('0x5c'))](_0xcb6d('0x62'));}})['then'](function(){return _0x41d73c[_0xcb6d('0x63')]({'vidaooSessionId':_0x23a4ff['id']});})['then'](respondWithResult(_0x5e93bc,null))[_0xcb6d('0x4a')](handleError(_0x5e93bc,null));};exports['customUpdate']=function(_0x16f728,_0xe7fe32){if(_0x16f728[_0xcb6d('0x4c')]['id']){delete _0x16f728[_0xcb6d('0x4c')]['id'];}return db[_0xcb6d('0x37')]['find']({'where':{'id':_0x16f728['params']['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0xcb6d('0x19')](handleEntityNotFound(_0xe7fe32,null))[_0xcb6d('0x19')](saveUpdates(_0x16f728[_0xcb6d('0x4c')],null))[_0xcb6d('0x19')](respondWithResult(_0xe7fe32,null))['catch'](handleError(_0xe7fe32,null));};exports[_0xcb6d('0x64')]=function(_0x4d6125,_0x4c261c){if(_0x4d6125[_0xcb6d('0x4c')]['id']){delete _0x4d6125[_0xcb6d('0x4c')]['id'];}return db[_0xcb6d('0x37')]['find']({'where':{'id':_0x4d6125[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](function(_0x4363a6){if(!_0x4363a6){logger[_0xcb6d('0x1e')](_0xcb6d('0x65'),_0xcb6d('0x64'),0x194,_0xcb6d('0x66'));_0x4c261c[_0xcb6d('0x22')](0x194);}else{if(_0x4363a6['UserId']){throw new db[(_0xcb6d('0x5b'))][(_0xcb6d('0x5c'))](_0xcb6d('0x67'));}}return _0x4363a6;})[_0xcb6d('0x19')](function(_0x55b571){if(_0x55b571){return _0x55b571['update']({'closed':_0x4d6125[_0xcb6d('0x4c')][_0xcb6d('0x68')],'disposition':_0x4d6125[_0xcb6d('0x4c')][_0xcb6d('0x69')]})[_0xcb6d('0x19')](function(_0x59e833){return _0x59e833;});}})[_0xcb6d('0x19')](function(){return respondWithRpcPromise(_0xcb6d('0x6a'),_0xcb6d('0x64'),_0x4d6125[_0xcb6d('0x4c')],client9004);})['then'](respondWithResult(_0x4c261c,null))[_0xcb6d('0x4a')](handleError(_0x4c261c,null));};exports[_0xcb6d('0x6b')]=function(_0x2874a4,_0x3890d6){_0x2874a4[_0xcb6d('0x4c')][_0xcb6d('0x2e')]=_0x2874a4[_0xcb6d('0x6c')]['originalname'];_0x2874a4[_0xcb6d('0x4c')][_0xcb6d('0x6d')]=_0x2874a4[_0xcb6d('0x6c')][_0xcb6d('0x6e')];_0x2874a4['body'][_0xcb6d('0x38')]=_0x2874a4[_0xcb6d('0x6c')][_0xcb6d('0x6f')];return db[_0xcb6d('0x70')][_0xcb6d('0x4b')](_0x2874a4[_0xcb6d('0x4c')])[_0xcb6d('0x19')](respondWithResult(_0x3890d6,0xc9))['catch'](handleError(_0x3890d6,null));};exports[_0xcb6d('0x71')]=function(_0x4eda0d,_0xeee221){return db[_0xcb6d('0x37')]['findOne']({'where':{'id':_0x4eda0d[_0xcb6d('0x3e')]['id']},'raw':!![]})[_0xcb6d('0x19')](handleEntityNotFound(_0xeee221,null))[_0xcb6d('0x19')](function(_0x26f46e){if(_0x26f46e){if(_0x26f46e[_0xcb6d('0x68')]){return _0xeee221[_0xcb6d('0x23')](0x193)[_0xcb6d('0x24')]({'status':0x193,'message':_0xcb6d('0x72')});}return db[_0xcb6d('0x70')]['findOne']({'where':{'id':_0x4eda0d['query'][_0xcb6d('0x73')]},'raw':!![]})[_0xcb6d('0x19')](handleEntityNotFound(_0xeee221,null));}})['then'](function(_0xc1d285){if(_0xc1d285){var _0x236d31=_0xc1d285[_0xcb6d('0x74')]!==null;var _0x1a773b=path[_0xcb6d('0x75')](config[_0xcb6d('0x76')],_0xcb6d('0x77'));if(_0x236d31){_0x1a773b=path[_0xcb6d('0x75')](_0x1a773b,_0xcb6d('0x78'));}var _0x38e185=path['join'](_0x1a773b,_0xc1d285[_0xcb6d('0x6d')]);return _0xeee221[_0xcb6d('0x79')](_0x38e185);}})[_0xcb6d('0x4a')](handleError(_0xeee221,null));};exports[_0xcb6d('0x7a')]=function(_0x15136c,_0x395d57){var _0x4fcd33=null;var _0x4e2295=null;var _0x314e19=null;if(_0x15136c[_0xcb6d('0x4c')]['id']){delete _0x15136c[_0xcb6d('0x4c')]['id'];}if(_0x15136c[_0xcb6d('0x4c')]['mailTranscript']){_0x314e19=path['join'](config[_0xcb6d('0x76')],_0xcb6d('0x7b'),util[_0xcb6d('0x7c')](_0xcb6d('0x7d'),Date[_0xcb6d('0x7e')]()));_0x15136c[_0xcb6d('0x4c')][_0xcb6d('0x7f')]=_0x314e19;}return db['ChatInteraction'][_0xcb6d('0x49')]({'where':{'id':_0x15136c[_0xcb6d('0x3e')]['id']},'include':[{'model':db[_0xcb6d('0x61')],'as':'Messages','include':[{'model':db['User'],'as':_0xcb6d('0x80')}]}]})['then'](handleEntityNotFound(_0x395d57,null))[_0xcb6d('0x19')](saveUpdates(_0x15136c[_0xcb6d('0x4c')],null))[_0xcb6d('0x19')](function(_0xd28853){if(_0xd28853){_0x4fcd33=_0xd28853;return db['ChatWebsite'][_0xcb6d('0x49')]({'where':{'id':_0x4fcd33['ChatWebsiteId']}});}})[_0xcb6d('0x19')](function(_0x237441){if(_0x237441){_0x4e2295=_0x237441;return db[_0xcb6d('0x81')][_0xcb6d('0x49')]({'where':{'id':_0x4fcd33[_0xcb6d('0x82')]}});}})[_0xcb6d('0x19')](function(_0x5e05af){if(_0x5e05af){if(_0x314e19){var _0x4f5dca=null;for(var _0x18b8f5=0x1;_0x18b8f5<_0x4fcd33[_0xcb6d('0x83')][_0xcb6d('0x45')];++_0x18b8f5){_0x4f5dca=_0x4fcd33[_0xcb6d('0x83')][_0x18b8f5];var _0x14a3ca=_0x4f5dca[_0xcb6d('0x84')]?util[_0xcb6d('0x7c')](_0xcb6d('0x85'),_0x4e2295['agentAlias'],_0x4f5dca[_0xcb6d('0x84')]):'System';var _0x4ddb09=_0x15136c[_0xcb6d('0x4c')]['customer']||util[_0xcb6d('0x7c')]('%s%d',_0xcb6d('0x86'),_0x4f5dca[_0xcb6d('0x82')]);switch(_0x4e2295[_0xcb6d('0x87')]){case'website_alias':_0x14a3ca=_0x4f5dca['UserId']?util[_0xcb6d('0x7c')]('%s%d',_0x4e2295[_0xcb6d('0x88')],_0x4f5dca[_0xcb6d('0x84')]):_0xcb6d('0x89');break;case _0xcb6d('0x8a'):_0x14a3ca=_0x4f5dca[_0xcb6d('0x84')]?_0x4f5dca['User'][_0xcb6d('0x8b')]||_0x4f5dca[_0xcb6d('0x80')][_0xcb6d('0x55')]:_0xcb6d('0x89');break;case'agent_fullname':_0x14a3ca=_0x4f5dca['UserId']?_0x4f5dca[_0xcb6d('0x80')][_0xcb6d('0x55')]:_0xcb6d('0x89');break;default:_0x14a3ca=_0x4f5dca[_0xcb6d('0x84')]?util[_0xcb6d('0x7c')]('%s%d',_0x4e2295[_0xcb6d('0x88')],_0x4f5dca['UserId']):_0xcb6d('0x89');}var _0x465216=util[_0xcb6d('0x7c')](_0xcb6d('0x8c'),moment(_0x4f5dca['createdAt'])[_0xcb6d('0x7c')]('MM/DD/YYYY\x20HH:mm:ss'),_0x4f5dca[_0xcb6d('0x8d')]==='in'?_0x4ddb09:_0x14a3ca,_0x4f5dca[_0xcb6d('0x4c')]);if(!_0x4f5dca['secret']){fs[_0xcb6d('0x8e')](_0x314e19,_0x465216);}}return db[_0xcb6d('0x8f')][_0xcb6d('0x4e')]({'where':{'service':!![]},'include':[{'model':db[_0xcb6d('0x90')],'as':_0xcb6d('0x91'),'raw':!![],'include':[{'model':db[_0xcb6d('0x92')],'as':_0xcb6d('0x92'),'raw':!![]}]}]});}}})['then'](function(_0x2bad33){if(!_0x2bad33||!_0x2bad33['Smtp']||!_0x15136c[_0xcb6d('0x4c')])return _0x4fcd33;var _0x3db94b=_0x2bad33[_0xcb6d('0x93')]();return respondWithRpcPromise(_0xcb6d('0x94'),'sendMail',{'account':_0x3db94b,'message':{'from':util[_0xcb6d('0x7c')](_0xcb6d('0x95'),_0x2bad33['name'],_0x2bad33['email']||_0x2bad33[_0xcb6d('0x91')][_0xcb6d('0x3c')]),'to':_0x15136c['body']['mailTranscript'],'subject':'Mail\x20Transcript','text':util['format'](_0xcb6d('0x96'),_0x15136c[_0xcb6d('0x4c')][_0xcb6d('0x97')]),'attachments':[{'path':_0x314e19}]}})['then'](function(){return _0x4fcd33;})[_0xcb6d('0x4a')](function(_0x525387){logger[_0xcb6d('0x1e')](_0x525387);});})['then'](respondWithStatusCode(_0x395d57,0xc8))[_0xcb6d('0x4a')](handleError(_0x395d57,null));};exports['addMessage']=function(_0x13425c,_0x4bab57){return db[_0xcb6d('0x61')][_0xcb6d('0x49')]({'where':{'id':_0x13425c[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](handleEntityNotFound(_0x4bab57,null))['then'](function(_0x4f3f9b){if(_0x4f3f9b){return _0x4f3f9b[_0xcb6d('0x98')](_0x13425c[_0xcb6d('0x4c')][_0xcb6d('0x99')],_[_0xcb6d('0x9a')](_0x13425c[_0xcb6d('0x4c')],[_0xcb6d('0x99'),'id'])||{});}})['then'](respondWithResult(_0x4bab57,null))[_0xcb6d('0x4a')](handleError(_0x4bab57,null));};exports[_0xcb6d('0x9b')]=function(_0x43321c,_0x4482e9){var _0x239e05={'raw':![],'where':{}};var _0x3bef82={};var _0x51de98={'count':0x0,'rows':[]};return db[_0xcb6d('0x37')][_0xcb6d('0x4e')]({'where':{'id':_0x43321c[_0xcb6d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x4482e9,null))[_0xcb6d('0x19')](function(_0x3c600d){if(_0x3c600d){_0x3bef82[_0xcb6d('0x3f')]=_[_0xcb6d('0x40')](db[_0xcb6d('0x61')]['rawAttributes']);_0x3bef82[_0xcb6d('0x3b')]=_['keys'](_0x43321c[_0xcb6d('0x3b')]);_0x3bef82[_0xcb6d('0x9c')]=_[_0xcb6d('0x42')](_0x3bef82[_0xcb6d('0x3f')],_0x3bef82['query']);_0x239e05[_0xcb6d('0x44')]=_[_0xcb6d('0x42')](_0x3bef82[_0xcb6d('0x3f')],qs['fields'](_0x43321c[_0xcb6d('0x3b')]['fields']));_0x239e05[_0xcb6d('0x44')]=_0x239e05[_0xcb6d('0x44')][_0xcb6d('0x45')]?_0x239e05[_0xcb6d('0x44')]:_0x3bef82[_0xcb6d('0x3f')];if(!_0x43321c[_0xcb6d('0x3b')][_0xcb6d('0x9d')]('nolimit')){_0x239e05[_0xcb6d('0x26')]=qs[_0xcb6d('0x26')](_0x43321c[_0xcb6d('0x3b')]['limit']);_0x239e05[_0xcb6d('0x28')]=qs[_0xcb6d('0x28')](_0x43321c[_0xcb6d('0x3b')][_0xcb6d('0x28')]);}_0x239e05[_0xcb6d('0x9e')]=qs[_0xcb6d('0x9f')](_0x43321c['query'][_0xcb6d('0x9f')]);_0x239e05[_0xcb6d('0xa0')]=qs[_0xcb6d('0x9c')](_[_0xcb6d('0xa1')](_0x43321c[_0xcb6d('0x3b')],_0x3bef82[_0xcb6d('0x9c')]));_0x239e05[_0xcb6d('0xa0')][_0xcb6d('0xa2')]=_0x3c600d['id'];if(_0x43321c['query'][_0xcb6d('0xa3')]){_0x239e05['where']=_['merge'](_0x239e05[_0xcb6d('0xa0')],{'$or':_['map'](_0x239e05[_0xcb6d('0x44')],function(_0x1cf3aa){var _0x419287={};_0x419287[_0x1cf3aa]={'$like':'%'+_0x43321c['query']['filter']+'%'};return _0x419287;})});}if(_0x43321c[_0xcb6d('0x3b')]['$gte']){var _0x1fde09=_0x43321c[_0xcb6d('0x3b')]['$gte']['split'](',');var _0x4c7931={};_0x4c7931[_0x1fde09[0x0]]={'$gte':moment(_0x1fde09[0x1])[_0xcb6d('0x7c')](_0xcb6d('0xa4'))};_0x239e05[_0xcb6d('0xa0')]=_[_0xcb6d('0x48')](_0x239e05[_0xcb6d('0xa0')],_0x4c7931);}_0x239e05=_[_0xcb6d('0x48')]({},_0x239e05,_0x43321c[_0xcb6d('0xa5')]);return db[_0xcb6d('0x61')][_0xcb6d('0x27')]({'where':_0x239e05[_0xcb6d('0xa0')]})[_0xcb6d('0x19')](function(_0x40df56){_0x51de98[_0xcb6d('0x27')]=_0x40df56;if(_0x43321c[_0xcb6d('0x3b')][_0xcb6d('0x46')]){_0x239e05[_0xcb6d('0x47')]=[{'all':!![]}];}return db[_0xcb6d('0x61')][_0xcb6d('0x3a')](_0x239e05);})['then'](function(_0x3ba554){_0x51de98[_0xcb6d('0xa6')]=_0x3ba554;return _0x51de98;});}})[_0xcb6d('0x19')](respondWithFilteredResult(_0x4482e9,_0x239e05))[_0xcb6d('0x4a')](handleError(_0x4482e9,null));};exports[_0xcb6d('0xa7')]=function(_0x397e6c,_0x375baa){var _0x313f76={'where':{}},_0x41b0f3={},_0x3ec34e={'count':0x0,'rows':[]};return db[_0xcb6d('0x37')][_0xcb6d('0x4e')]({'where':{'id':_0x397e6c[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](handleEntityNotFound(_0x375baa,null))[_0xcb6d('0x19')](function(_0xf7cc86){if(_0xf7cc86){_0x41b0f3[_0xcb6d('0x3f')]=_['keys'](db[_0xcb6d('0x61')][_0xcb6d('0x41')]);_0x41b0f3['query']=_[_0xcb6d('0x40')](_0x397e6c[_0xcb6d('0x3b')]);_0x41b0f3['filters']=_['intersection'](_0x41b0f3['model'],_0x41b0f3[_0xcb6d('0x3b')]);_0x313f76[_0xcb6d('0x44')]=_['intersection'](_0x41b0f3[_0xcb6d('0x3f')],qs[_0xcb6d('0x43')](_0x397e6c[_0xcb6d('0x3b')]['fields']));_0x313f76[_0xcb6d('0x44')]=_0x313f76[_0xcb6d('0x44')]['length']?_0x313f76[_0xcb6d('0x44')]:_0x41b0f3[_0xcb6d('0x3f')];if(!_0x397e6c[_0xcb6d('0x3b')]['hasOwnProperty'](_0xcb6d('0xa8'))){_0x313f76[_0xcb6d('0x26')]=qs[_0xcb6d('0x26')](_0x397e6c[_0xcb6d('0x3b')]['limit']);_0x313f76[_0xcb6d('0x28')]=qs[_0xcb6d('0x28')](_0x397e6c[_0xcb6d('0x3b')]['offset']);}_0x313f76['order']=qs[_0xcb6d('0x9f')](_0x397e6c[_0xcb6d('0x3b')][_0xcb6d('0x9f')]);_0x313f76['where']=qs[_0xcb6d('0x9c')](_['pick'](_0x397e6c[_0xcb6d('0x3b')],_0x41b0f3[_0xcb6d('0x9c')]));_0x313f76['where'][_0xcb6d('0xa2')]=_0xf7cc86['id'];if(_0x397e6c[_0xcb6d('0x3b')][_0xcb6d('0xa3')]){_0x313f76[_0xcb6d('0xa0')]=_[_0xcb6d('0x48')](_0x313f76[_0xcb6d('0xa0')],{'$or':_[_0xcb6d('0x36')](_0x313f76[_0xcb6d('0x44')],function(_0x22e2c8){var _0x2c8a31={};_0x2c8a31[_0x22e2c8]={'$like':'%'+_0x397e6c[_0xcb6d('0x3b')][_0xcb6d('0xa3')]+'%'};return _0x2c8a31;})});}_0x313f76[_0xcb6d('0xa0')]['secret']=![];if(_0x397e6c[_0xcb6d('0x3b')]['id']){_0x313f76[_0xcb6d('0xa0')]['id']={'$gt':_0x397e6c[_0xcb6d('0x3b')]['id']};}_0x313f76=_[_0xcb6d('0x48')]({},_0x313f76,_0x397e6c['options']);return db['ChatMessage'][_0xcb6d('0x27')]({'where':_0x313f76[_0xcb6d('0xa0')]})[_0xcb6d('0x19')](function(_0x57d5ef){_0x3ec34e[_0xcb6d('0x27')]=_0x57d5ef;_0x313f76[_0xcb6d('0x47')]=[];if(_0x397e6c[_0xcb6d('0x3b')][_0xcb6d('0xa9')]){_0x313f76[_0xcb6d('0x47')][_0xcb6d('0xaa')]({'model':db[_0xcb6d('0x80')],'as':'User','attributes':['id',_0xcb6d('0x55'),_0xcb6d('0x8b')]});}if(_0x397e6c[_0xcb6d('0x3b')][_0xcb6d('0x46')]){_0x313f76['include']=[{'all':!![]}];}return db[_0xcb6d('0x61')][_0xcb6d('0x3a')](_0x313f76);})['then'](function(_0x4e13bf){_0x3ec34e['rows']=_0x4e13bf;return _0x3ec34e;});}})[_0xcb6d('0x19')](respondWithFilteredResult(_0x375baa,_0x313f76))['catch'](handleError(_0x375baa,null));};exports[_0xcb6d('0xab')]=function(_0x5d46bc,_0x2b713c){return db['ChatInteraction'][_0xcb6d('0x49')]({'where':{'id':_0x5d46bc[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](handleEntityNotFound(_0x2b713c,null))[_0xcb6d('0x19')](function(_0x125b52){if(_0x125b52){return _0x125b52['setTags'](_0x5d46bc['body']['ids'],_[_0xcb6d('0x9a')](_0x5d46bc[_0xcb6d('0x4c')],[_0xcb6d('0x99'),'id'])||{})[_0xcb6d('0xac')](function(){return db['Tag'][_0xcb6d('0x3a')]({'attributes':['id',_0xcb6d('0x2e'),_0xcb6d('0xad')],'where':{'id':_0x5d46bc['body'][_0xcb6d('0x99')]}});})[_0xcb6d('0x19')](function(_0xe6a12d){socket[_0xcb6d('0xae')](_0xcb6d('0xaf'),{'id':Number(_0x5d46bc[_0xcb6d('0x3e')]['id']),'tags':_0xe6a12d||[]});return{'id':Number(_0x5d46bc[_0xcb6d('0x3e')]['id']),'tags':_0xe6a12d||[]};});}})['then'](respondWithResult(_0x2b713c,null))[_0xcb6d('0x4a')](handleError(_0x2b713c,null));};exports[_0xcb6d('0xb0')]=function(_0x2055d9,_0x2ab7d7){return db[_0xcb6d('0x37')]['find']({'where':{'id':_0x2055d9[_0xcb6d('0x3e')]['id']}})[_0xcb6d('0x19')](handleEntityNotFound(_0x2ab7d7,null))[_0xcb6d('0x19')](function(_0x1c3268){if(_0x1c3268){return _0x1c3268[_0xcb6d('0xb0')](_0x2055d9[_0xcb6d('0x3b')][_0xcb6d('0x99')]);}})[_0xcb6d('0x19')](respondWithStatusCode(_0x2ab7d7,null))[_0xcb6d('0x4a')](handleError(_0x2ab7d7,null));};exports[_0xcb6d('0x79')]=function(_0x237dab,_0x2ecba1){var _0x5ae666=moment()['unix']()[_0xcb6d('0xb1')]();var _0xbeebd3=path[_0xcb6d('0x75')](config[_0xcb6d('0x76')],_0xcb6d('0xb2'),_0xcb6d('0xb3'),'tmp');var _0x26519b=path[_0xcb6d('0x75')](config[_0xcb6d('0x76')],_0xcb6d('0xb2'),_0xcb6d('0xb3'),'attachments');var _0x314769=path['join'](_0xbeebd3,_0x5ae666);var _0x4bda79=util[_0xcb6d('0x7c')](_0xcb6d('0xb4'),_0x237dab[_0xcb6d('0x3e')]['id'],_0x5ae666);var _0x5d3b50=path[_0xcb6d('0x75')](_0xbeebd3,_0x4bda79);var _0x54ce32=[];_0x54ce32[_0xcb6d('0xaa')]({'model':db['User'],'as':_0xcb6d('0x80'),'attributes':['id','fullname'],'raw':!![]});_0x54ce32['push']({'model':db[_0xcb6d('0x81')],'as':'Contact','attributes':['id',_0xcb6d('0xb5'),_0xcb6d('0xb6')],'raw':!![]});if(_0x237dab[_0xcb6d('0x3b')][_0xcb6d('0xb7')]){_0x54ce32[_0xcb6d('0xaa')]({'model':db[_0xcb6d('0x70')],'as':_0xcb6d('0x70'),'raw':!![]});}var _0x3d3f56=[{'model':db[_0xcb6d('0x61')],'as':'Messages','attributes':['id',_0xcb6d('0x4c'),_0xcb6d('0xb8'),_0xcb6d('0x8d'),_0xcb6d('0xb9'),'read'],'include':_0x54ce32}];_0x3d3f56[_0xcb6d('0xaa')]({'model':db['ChatWebsite'],'as':_0xcb6d('0xba'),'attributes':['id',_0xcb6d('0x2e')]});_0x3d3f56['push']({'model':db[_0xcb6d('0x80')],'as':_0xcb6d('0xbb'),'attributes':['id',_0xcb6d('0x55')]});return db[_0xcb6d('0x37')][_0xcb6d('0x49')]({'where':{'id':_0x237dab[_0xcb6d('0x3e')]['id']},'include':_0x3d3f56})['then'](handleEntityNotFound(_0x2ecba1,null))['then'](function(_0x22aabb){if(_0x22aabb){var _0x4316d7=_0x22aabb['get']({'plain':!![]});fs[_0xcb6d('0xbc')](_0x314769);var _0x4d5729={'channel':_0xcb6d('0xbd'),'account':_0x4316d7[_0xcb6d('0xba')]['name'],'agent':_0x4316d7[_0xcb6d('0xbb')]?_0x4316d7['Owner']['fullname']:_0xcb6d('0xbe'),'createdAt':moment(_0x4316d7[_0xcb6d('0xb8')])[_0xcb6d('0x7c')](_0xcb6d('0xa4'))['toString'](),'closedAt':_0x4316d7['closed']?moment(_0x4316d7[_0xcb6d('0xbf')])[_0xcb6d('0x7c')](_0xcb6d('0xa4'))[_0xcb6d('0xb1')]():'','disposition':_0x4316d7['disposition'],'chatInfo':{'browser':_0x4316d7[_0xcb6d('0xc0')],'os':_0x4316d7[_0xcb6d('0xc1')],'referer':_0x4316d7[_0xcb6d('0xc2')],'customerIp':_0x4316d7[_0xcb6d('0xc3')],'customerPort':_0x4316d7[_0xcb6d('0xc4')]?_0x4316d7[_0xcb6d('0xc4')]:_0xcb6d('0xbe')},'messages':_(_0x4316d7['Messages'])['tail']()[_0xcb6d('0xa3')]({'secret':![]})[_0xcb6d('0x36')](function(_0x252454){if(_0x252454[_0xcb6d('0x70')]){var _0x1d2848=path['join'](_0x26519b,_0x252454['Attachment'][_0xcb6d('0x6d')]);if(fs['existsSync'](_0x1d2848)){fs[_0xcb6d('0xc5')](_0x1d2848)[_0xcb6d('0xc6')](fs['createWriteStream'](path[_0xcb6d('0x75')](_0x314769,_0x252454[_0xcb6d('0x70')][_0xcb6d('0x6d')])));}}return{'date':moment(_0x252454['createdAt'])[_0xcb6d('0x7c')](_0xcb6d('0xa4'))[_0xcb6d('0xb1')](),'sender':_0x252454[_0xcb6d('0x8d')]===_0xcb6d('0x60')?_0x252454[_0xcb6d('0x80')]?_0x252454[_0xcb6d('0x80')][_0xcb6d('0x55')]:'System':_0x252454[_0xcb6d('0xc7')]['firstName']+(_0x252454['Contact'][_0xcb6d('0xb6')]?'\x20'+_0x252454['Contact']['lastName']:''),'body':_0x252454['Attachment']?_0x252454[_0xcb6d('0x70')]['basename']:_0x252454[_0xcb6d('0x4c')],'direction':_0x252454[_0xcb6d('0x8d')]==='out'?'A':'C','secret':_0x252454['secret'],'read':_0x252454[_0xcb6d('0xc8')],'attachment':_0x252454[_0xcb6d('0x70')]};})[_0xcb6d('0xc9')]()};return ejs[_0xcb6d('0xca')](path[_0xcb6d('0x75')](config[_0xcb6d('0x76')],_0xcb6d('0xb2'),'views','downloadInteraction.ejs'),{'interaction':_0x4d5729})[_0xcb6d('0x19')](function(_0x853577){var _0x337c9d=path[_0xcb6d('0x75')](_0x314769,_0xcb6d('0xcb')+_0x4316d7['id']+'-'+_0x5ae666+_0xcb6d('0xcc'));var _0x4968c1={'path':_0x337c9d,'channel':_0xcb6d('0xbd'),'interactionId':_0x4316d7['id']};return pdf[_0xcb6d('0xcd')](_0x853577,_0x4968c1);})[_0xcb6d('0x19')](function(){return new Promise(function(_0x4eb4c2,_0x130585){zipdir(_0x314769,{'saveTo':_0x5d3b50},function(_0x2167f8,_0x3eff37){if(_0x2167f8)return _0x130585(_0x2167f8);return _0x4eb4c2(_0x3eff37);});})[_0xcb6d('0x19')](function(){return new BPromise(function(_0x1f2894,_0x3218fb){rimraf(_0x314769,function(_0x64e973){if(_0x64e973)_0x3218fb(_0x64e973);return _0x1f2894();});});})['then'](function(){return _0x2ecba1['download'](_0x5d3b50,_0x4bda79,function(_0x425baa){if(_0x425baa){logger[_0xcb6d('0x1e')]('err',_0x425baa);}else{fs[_0xcb6d('0xce')](_0x5d3b50);}});});});}else{return _0x2ecba1[_0xcb6d('0x22')](0xc8);}})[_0xcb6d('0x4a')](handleError(_0x2ecba1,null));};
\ No newline at end of file
index 1c8f673..6bea746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x762f=['exports','events','../../mysqldb','ChatMessage','save','update','remove','Users','map','findAll','then','setDataValue','unreadMessages','length','catch','hasOwnProperty','hook'];(function(_0x1f40c1,_0x25ee22){var _0x1fd394=function(_0x13f784){while(--_0x13f784){_0x1f40c1['push'](_0x1f40c1['shift']());}};_0x1fd394(++_0x25ee22);}(_0x762f,0xef));var _0xf762=function(_0x5cddda,_0x1c5e82){_0x5cddda=_0x5cddda-0x0;var _0x503ade=_0x762f[_0x5cddda];return _0x503ade;};'use strict';var EventEmitter=require(_0xf762('0x0'));var ChatInteraction=require(_0xf762('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xf762('0x1'))['db'][_0xf762('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf762('0x3'),'afterUpdate':_0xf762('0x4'),'afterDestroy':_0xf762('0x5')};function emitEvent(_0x2e9def){return function(_0x47ded2,_0x466568,_0x4ffbfb){_0x47ded2['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x4fcf9f){_0x47ded2['setDataValue'](_0xf762('0x6'),_0x4fcf9f[_0xf762('0x7')](function(_0x215cc8){return{'id':_0x215cc8['id']};}));return ChatMessage[_0xf762('0x8')]({'where':{'ChatInteractionId':_0x47ded2['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf762('0x9')](function(_0x288b3b){_0x47ded2[_0xf762('0xa')](_0xf762('0xb'),_0x288b3b[_0xf762('0xc')]);ChatInteractionEvents['emit'](_0x2e9def+':'+_0x47ded2['id'],_0x47ded2);ChatInteractionEvents['emit'](_0x2e9def,_0x47ded2);_0x4ffbfb(null);})[_0xf762('0xd')](_0x4ffbfb(null));};}for(var e in events){if(events[_0xf762('0xe')](e)){var event=events[e];ChatInteraction[_0xf762('0xf')](e,emitEvent(event));}}module[_0xf762('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x945e=['findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove','getUsers','then','map'];(function(_0x3b3041,_0x4697d6){var _0x2a9767=function(_0xc38468){while(--_0xc38468){_0x3b3041['push'](_0x3b3041['shift']());}};_0x2a9767(++_0x4697d6);}(_0x945e,0xd1));var _0xe945=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x945e[_0x24061a];return _0x82054e;};'use strict';var EventEmitter=require(_0xe945('0x0'));var ChatInteraction=require(_0xe945('0x1'))['db'][_0xe945('0x2')];var ChatMessage=require('../../mysqldb')['db'][_0xe945('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xe945('0x4')](0x0);var events={'afterCreate':_0xe945('0x5'),'afterUpdate':_0xe945('0x6'),'afterDestroy':_0xe945('0x7')};function emitEvent(_0xd739ef){return function(_0x362f36,_0x12b957,_0xa1d3b7){_0x362f36[_0xe945('0x8')]({'attributes':['id'],'raw':!![]})[_0xe945('0x9')](function(_0x5bfcbd){_0x362f36['setDataValue']('Users',_0x5bfcbd[_0xe945('0xa')](function(_0xcf4bfa){return{'id':_0xcf4bfa['id']};}));return ChatMessage[_0xe945('0xb')]({'where':{'ChatInteractionId':_0x362f36['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe945('0x9')](function(_0x5c1d37){_0x362f36[_0xe945('0xc')](_0xe945('0xd'),_0x5c1d37[_0xe945('0xe')]);ChatInteractionEvents[_0xe945('0xf')](_0xd739ef+':'+_0x362f36['id'],_0x362f36);ChatInteractionEvents[_0xe945('0xf')](_0xd739ef,_0x362f36);_0xa1d3b7(null);})[_0xe945('0x10')](_0xa1d3b7(null));};}for(var e in events){if(events[_0xe945('0x11')](e)){var event=events[e];ChatInteraction[_0xe945('0x12')](e,emitEvent(event));}}module[_0xe945('0x13')]=ChatInteractionEvents;
\ No newline at end of file
index 7c4343a..4e16e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa796=['request-promise','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4_unicode_ci','lodash','bluebird'];(function(_0x8664f6,_0x49ea34){var _0x47ac6b=function(_0x333bb3){while(--_0x333bb3){_0x8664f6['push'](_0x8664f6['shift']());}};_0x47ac6b(++_0x49ea34);}(_0xa796,0xa3));var _0x6a79=function(_0x465542,_0x29416f){_0x465542=_0x465542-0x0;var _0x5a63c5=_0xa796[_0x465542];return _0x5a63c5;};'use strict';var _=require(_0x6a79('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6a79('0x1'));var rp=require(_0x6a79('0x2'));var fs=require('fs');var path=require(_0x6a79('0x3'));var rimraf=require(_0x6a79('0x4'));var config=require('../../config/environment');var attributes=require(_0x6a79('0x5'));module[_0x6a79('0x6')]=function(_0x684c92,_0x1c4106){return _0x684c92[_0x6a79('0x7')](_0x6a79('0x8'),attributes,{'tableName':_0x6a79('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4b4369,_0x4e12d5,_0x2d1f75){if(_0x4b4369[_0x6a79('0xa')]('closed')){_0x4b4369[_0x6a79('0xb')]=moment()[_0x6a79('0xc')](_0x6a79('0xd'));}_0x2d1f75(null,_0x4b4369);}},'charset':'utf8mb4','collate':_0x6a79('0xe')});};
\ No newline at end of file
+var _0x29cc=['changed','closed','closedAt','format','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./chatInteraction.attributes','exports','ChatInteraction','chat_interactions'];(function(_0x577d23,_0x451e9a){var _0x3da674=function(_0x5e4220){while(--_0x5e4220){_0x577d23['push'](_0x577d23['shift']());}};_0x3da674(++_0x451e9a);}(_0x29cc,0xa8));var _0xc29c=function(_0x5ddffc,_0x30976f){_0x5ddffc=_0x5ddffc-0x0;var _0x4ed577=_0x29cc[_0x5ddffc];return _0x4ed577;};'use strict';var _=require(_0xc29c('0x0'));var util=require(_0xc29c('0x1'));var logger=require('../../config/logger')(_0xc29c('0x2'));var moment=require(_0xc29c('0x3'));var BPromise=require(_0xc29c('0x4'));var rp=require(_0xc29c('0x5'));var fs=require('fs');var path=require(_0xc29c('0x6'));var rimraf=require(_0xc29c('0x7'));var config=require('../../config/environment');var attributes=require(_0xc29c('0x8'));module[_0xc29c('0x9')]=function(_0xa23268,_0x232240){return _0xa23268['define'](_0xc29c('0xa'),attributes,{'tableName':_0xc29c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x23961b,_0x56c4fa,_0x23491f){if(_0x23961b[_0xc29c('0xc')](_0xc29c('0xd'))){_0x23961b[_0xc29c('0xe')]=moment()[_0xc29c('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x23491f(null,_0x23961b);}},'charset':_0xc29c('0x10'),'collate':_0xc29c('0x11')});};
\ No newline at end of file
index b1ed045..7039ae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d1a=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','message','error','catch','UpdateChatInteraction','update','body','options','raw','where','attributes','AddTagsToChatInteraction','ChatInteraction','find','ids','spread','AddTags','stringify','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x227427,_0x39a41d){var _0x2f3aef=function(_0x391c69){while(--_0x391c69){_0x227427['push'](_0x227427['shift']());}};_0x2f3aef(++_0x39a41d);}(_0x5d1a,0xea));var _0xa5d1=function(_0x31abee,_0x11ff0c){_0x31abee=_0x31abee-0x0;var _0x3c1761=_0x5d1a[_0x31abee];return _0x3c1761;};'use strict';var _=require(_0xa5d1('0x0'));var util=require(_0xa5d1('0x1'));var moment=require(_0xa5d1('0x2'));var BPromise=require(_0xa5d1('0x3'));var rs=require(_0xa5d1('0x4'));var fs=require('fs');var Redis=require(_0xa5d1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa5d1('0x6'));var logger=require(_0xa5d1('0x7'))(_0xa5d1('0x8'));var config=require('../../config/environment');var jayson=require(_0xa5d1('0x9'));var client=jayson[_0xa5d1('0xa')][_0xa5d1('0xb')]({'port':0x232a});config[_0xa5d1('0xc')]=_[_0xa5d1('0xd')](config['redis'],{'host':_0xa5d1('0xe'),'port':0x18eb});var socket=require(_0xa5d1('0xf'))(new Redis(config[_0xa5d1('0xc')]));require(_0xa5d1('0x10'))[_0xa5d1('0x11')](socket);function respondWithRpcPromise(_0x490bb9,_0x258ccd,_0x4442c9){return new BPromise(function(_0x4c6903,_0x118e0c){return client['request'](_0x490bb9,_0x4442c9)[_0xa5d1('0x12')](function(_0x4d86b5){logger[_0xa5d1('0x13')](_0xa5d1('0x14'),_0x258ccd,_0xa5d1('0x15'));logger['debug'](_0xa5d1('0x16'),_0x258ccd,_0xa5d1('0x15'),JSON['stringify'](_0x4d86b5));if(_0x4d86b5['error']){if(_0x4d86b5['error']['code']===0x1f4){logger['error'](_0xa5d1('0x14'),_0x258ccd,_0x4d86b5['error'][_0xa5d1('0x17')]);return _0x118e0c(_0x4d86b5[_0xa5d1('0x18')][_0xa5d1('0x17')]);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x258ccd,_0x4d86b5[_0xa5d1('0x18')][_0xa5d1('0x17')]);return _0x4c6903(_0x4d86b5[_0xa5d1('0x18')]['message']);}else{logger[_0xa5d1('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x258ccd,_0xa5d1('0x15'));_0x4c6903(_0x4d86b5['result'][_0xa5d1('0x17')]);}})[_0xa5d1('0x19')](function(_0x501fd4){logger[_0xa5d1('0x18')](_0xa5d1('0x14'),_0x258ccd,_0x501fd4);_0x118e0c(_0x501fd4);});});}exports[_0xa5d1('0x1a')]=function(_0x465f70){var _0x614177=this;return new Promise(function(_0x221319,_0x6e6f1c){return db['ChatInteraction'][_0xa5d1('0x1b')](_0x465f70[_0xa5d1('0x1c')],{'raw':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x1f')]||null:null,'attributes':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')][_0xa5d1('0x20')]||null:null,'limit':_0x465f70[_0xa5d1('0x1d')]?_0x465f70[_0xa5d1('0x1d')]['limit']||null:null})[_0xa5d1('0x12')](function(_0x1f910e){logger[_0xa5d1('0x13')](_0xa5d1('0x1a'),_0x465f70);logger['debug']('UpdateChatInteraction',_0x465f70,JSON['stringify'](_0x1f910e));_0x221319(_0x1f910e);})[_0xa5d1('0x19')](function(_0x2d98a5){logger[_0xa5d1('0x18')](_0xa5d1('0x1a'),_0x2d98a5['message'],_0x465f70);_0x6e6f1c(_0x614177[_0xa5d1('0x18')](0x1f4,_0x2d98a5[_0xa5d1('0x17')]));});});};exports[_0xa5d1('0x21')]=function(_0x59e15d){return new Promise(function(_0xf92135,_0x5cb94f){return db[_0xa5d1('0x22')][_0xa5d1('0x23')]({'where':_0x59e15d[_0xa5d1('0x1d')]?_0x59e15d[_0xa5d1('0x1d')][_0xa5d1('0x1f')]||null:null})[_0xa5d1('0x12')](function(_0x365437){if(_0x365437){return _0x365437['addTags'](_0x59e15d['body'][_0xa5d1('0x24')],_['omit'](_0x59e15d[_0xa5d1('0x1c')],[_0xa5d1('0x24'),'id'])||{});}})[_0xa5d1('0x25')](function(_0x3a0087){logger['info'](_0xa5d1('0x26'),_0x59e15d);logger['debug'](_0xa5d1('0x26'),_0x59e15d,JSON[_0xa5d1('0x27')](_0x3a0087));_0xf92135(_0x3a0087);})['catch'](function(_0x1354f8){logger[_0xa5d1('0x18')](_0xa5d1('0x26'),_0x1354f8[_0xa5d1('0x17')],_0x59e15d);_0x5cb94f(_this[_0xa5d1('0x18')](0x1f4,_0x1354f8[_0xa5d1('0x17')]));});});};
\ No newline at end of file
+var _0x5f24=['defaults','./chatInteraction.socket','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateChatInteraction','ChatInteraction','update','options','where','attributes','limit','debug','AddTagsToChatInteraction','find','body','ids','omit','spread','AddTags','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis'];(function(_0x4c9e00,_0x24185e){var _0x1228fd=function(_0x1e6f40){while(--_0x1e6f40){_0x4c9e00['push'](_0x4c9e00['shift']());}};_0x1228fd(++_0x24185e);}(_0x5f24,0x1f1));var _0x45f2=function(_0x5b6ffe,_0x280e9a){_0x5b6ffe=_0x5b6ffe-0x0;var _0x5f2d56=_0x5f24[_0x5b6ffe];return _0x5f2d56;};'use strict';var _=require(_0x45f2('0x0'));var util=require(_0x45f2('0x1'));var moment=require('moment');var BPromise=require(_0x45f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x45f2('0x3'));var db=require(_0x45f2('0x4'))['db'];var utils=require(_0x45f2('0x5'));var logger=require('../../config/logger')(_0x45f2('0x6'));var config=require(_0x45f2('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x45f2('0x8')]['http']({'port':0x232a});config[_0x45f2('0x9')]=_[_0x45f2('0xa')](config[_0x45f2('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x45f2('0x9')]));require(_0x45f2('0xb'))['register'](socket);function respondWithRpcPromise(_0x29d901,_0x101457,_0x1a630f){return new BPromise(function(_0x3b7626,_0x5854d7){return client[_0x45f2('0xc')](_0x29d901,_0x1a630f)[_0x45f2('0xd')](function(_0x5992de){logger[_0x45f2('0xe')](_0x45f2('0xf'),_0x101457,_0x45f2('0x10'));logger['debug'](_0x45f2('0x11'),_0x101457,'request\x20sent',JSON[_0x45f2('0x12')](_0x5992de));if(_0x5992de['error']){if(_0x5992de['error'][_0x45f2('0x13')]===0x1f4){logger['error'](_0x45f2('0xf'),_0x101457,_0x5992de['error']['message']);return _0x5854d7(_0x5992de[_0x45f2('0x14')]['message']);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x101457,_0x5992de[_0x45f2('0x14')][_0x45f2('0x15')]);return _0x3b7626(_0x5992de['error'][_0x45f2('0x15')]);}else{logger[_0x45f2('0xe')](_0x45f2('0xf'),_0x101457,_0x45f2('0x10'));_0x3b7626(_0x5992de[_0x45f2('0x16')][_0x45f2('0x15')]);}})[_0x45f2('0x17')](function(_0x1464ac){logger[_0x45f2('0x14')]('ChatInteraction,\x20%s,\x20%s',_0x101457,_0x1464ac);_0x5854d7(_0x1464ac);});});}exports[_0x45f2('0x18')]=function(_0x3ec3c3){var _0x2b01db=this;return new Promise(function(_0x4208ad,_0x126513){return db[_0x45f2('0x19')][_0x45f2('0x1a')](_0x3ec3c3['body'],{'raw':_0x3ec3c3['options']?_0x3ec3c3[_0x45f2('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ec3c3[_0x45f2('0x1b')]?_0x3ec3c3[_0x45f2('0x1b')][_0x45f2('0x1c')]||null:null,'attributes':_0x3ec3c3['options']?_0x3ec3c3[_0x45f2('0x1b')][_0x45f2('0x1d')]||null:null,'limit':_0x3ec3c3[_0x45f2('0x1b')]?_0x3ec3c3[_0x45f2('0x1b')][_0x45f2('0x1e')]||null:null})['then'](function(_0x414b8a){logger['info']('UpdateChatInteraction',_0x3ec3c3);logger[_0x45f2('0x1f')](_0x45f2('0x18'),_0x3ec3c3,JSON[_0x45f2('0x12')](_0x414b8a));_0x4208ad(_0x414b8a);})['catch'](function(_0x4de824){logger[_0x45f2('0x14')]('UpdateChatInteraction',_0x4de824[_0x45f2('0x15')],_0x3ec3c3);_0x126513(_0x2b01db[_0x45f2('0x14')](0x1f4,_0x4de824[_0x45f2('0x15')]));});});};exports[_0x45f2('0x20')]=function(_0x1e8aef){return new Promise(function(_0x33fd4f,_0x133d79){return db[_0x45f2('0x19')][_0x45f2('0x21')]({'where':_0x1e8aef['options']?_0x1e8aef[_0x45f2('0x1b')]['where']||null:null})[_0x45f2('0xd')](function(_0x4fc72b){if(_0x4fc72b){return _0x4fc72b['addTags'](_0x1e8aef[_0x45f2('0x22')][_0x45f2('0x23')],_[_0x45f2('0x24')](_0x1e8aef[_0x45f2('0x22')],['ids','id'])||{});}})[_0x45f2('0x25')](function(_0x5d1ed6){logger[_0x45f2('0xe')]('AddTags',_0x1e8aef);logger['debug'](_0x45f2('0x26'),_0x1e8aef,JSON[_0x45f2('0x12')](_0x5d1ed6));_0x33fd4f(_0x5d1ed6);})[_0x45f2('0x17')](function(_0x2b5640){logger[_0x45f2('0x14')](_0x45f2('0x26'),_0x2b5640[_0x45f2('0x15')],_0x1e8aef);_0x133d79(_this[_0x45f2('0x14')](0x1f4,_0x2b5640[_0x45f2('0x15')]));});});};
\ No newline at end of file
index bf0c14b..7f52ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a7=['update','emit','removeListener','./chatInteraction.events','remove'];(function(_0xd72054,_0x45f46e){var _0x3832bb=function(_0x42d002){while(--_0x42d002){_0xd72054['push'](_0xd72054['shift']());}};_0x3832bb(++_0x45f46e);}(_0xc4a7,0x1ac));var _0x7c4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4a7[_0x4b369d];return _0x571a98;};'use strict';var ChatInteractionEvents=require(_0x7c4a('0x0'));var events=['save',_0x7c4a('0x1'),_0x7c4a('0x2')];function createListener(_0x4f9a90,_0x3c63c0){return function(_0x55e224){_0x3c63c0[_0x7c4a('0x3')](_0x4f9a90,_0x55e224);};}function removeListener(_0x521f5c,_0x396d47){return function(){ChatInteractionEvents[_0x7c4a('0x4')](_0x521f5c,_0x396d47);};}exports['register']=function(_0x4d4f38){for(var _0x11b273=0x0,_0x3b0b97=events['length'];_0x11b273<_0x3b0b97;_0x11b273++){var _0x347403=events[_0x11b273];var _0x4e1692=createListener('chatInteraction:'+_0x347403,_0x4d4f38);ChatInteractionEvents['on'](_0x347403,_0x4e1692);}};
\ No newline at end of file
+var _0xd1d1=['save','update','register','length','chatInteraction:'];(function(_0x39a1c4,_0x41bbbb){var _0x45d251=function(_0xb26082){while(--_0xb26082){_0x39a1c4['push'](_0x39a1c4['shift']());}};_0x45d251(++_0x41bbbb);}(_0xd1d1,0xe1));var _0x1d1d=function(_0x52bd34,_0x4a7ba2){_0x52bd34=_0x52bd34-0x0;var _0x503658=_0xd1d1[_0x52bd34];return _0x503658;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x1d1d('0x0'),'remove',_0x1d1d('0x1')];function createListener(_0x4b45fa,_0xd44608){return function(_0x570759){_0xd44608['emit'](_0x4b45fa,_0x570759);};}function removeListener(_0x216177,_0xe3f61b){return function(){ChatInteractionEvents['removeListener'](_0x216177,_0xe3f61b);};}exports[_0x1d1d('0x2')]=function(_0x52580f){for(var _0x291481=0x0,_0x5f00db=events[_0x1d1d('0x3')];_0x291481<_0x5f00db;_0x291481++){var _0x4b67a8=events[_0x291481];var _0x3e6520=createListener(_0x1d1d('0x4')+_0x4b67a8,_0x52580f);ChatInteractionEvents['on'](_0x4b67a8,_0x3e6520);}};
\ No newline at end of file
index ac3c7c3..91e5459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58fb=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','attachmentDownload','/:id/my_messages','isChatInteractionAuthorized','/:id/download','download','post','createVidaooSession','diskStorage','root','server/files/attachments/','%s-%s','now','replace','/:id/attachment_upload','single','addMessage','/:id/tags','tracked','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','close','delete','chatinteraction:destroy','destroy'];(function(_0x3d5351,_0x27bc80){var _0x1db4db=function(_0x3f572b){while(--_0x3f572b){_0x3d5351['push'](_0x3d5351['shift']());}};_0x1db4db(++_0x27bc80);}(_0x58fb,0xa8));var _0xb58f=function(_0x2f1770,_0x305406){_0x2f1770=_0x2f1770-0x0;var _0x10cebf=_0x58fb[_0x2f1770];return _0x10cebf;};'use strict';var multer=require(_0xb58f('0x0'));var util=require('util');var path=require(_0xb58f('0x1'));var timeout=require(_0xb58f('0x2'));var express=require(_0xb58f('0x3'));var router=express[_0xb58f('0x4')]();var fs_extra=require(_0xb58f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb58f('0x6'));var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0xb58f('0x7')]('/',auth[_0xb58f('0x8')](),controller[_0xb58f('0x9')]);router['get']('/describe',auth[_0xb58f('0x8')](),controller[_0xb58f('0xa')]);router['get'](_0xb58f('0xb'),auth['isChatInteractionAuthorized'](),controller['show']);router['get']('/:id/attachment_download',auth['isChatInteractionAuthorized'](),controller[_0xb58f('0xc')]);router[_0xb58f('0x7')]('/:id/messages',auth[_0xb58f('0x8')](),controller['getMessages']);router[_0xb58f('0x7')](_0xb58f('0xd'),auth[_0xb58f('0xe')](),controller['getMyMessages']);router[_0xb58f('0x7')](_0xb58f('0xf'),auth['isAuthenticated'](),controller[_0xb58f('0x10')]);router[_0xb58f('0x11')]('/',auth[_0xb58f('0x8')](),controller['create']);router['post']('/:id/vidaoo',auth[_0xb58f('0x8')](),controller[_0xb58f('0x12')]);var upload=multer({'storage':multer[_0xb58f('0x13')]({'destination':function(_0x551cb5,_0x3cbe03,_0x5a829d){_0x5a829d(null,path['join'](config[_0xb58f('0x14')],_0xb58f('0x15')));},'filename':function(_0x2bd737,_0x2ba924,_0x15b0bb){_0x15b0bb(null,util['format'](_0xb58f('0x16'),Date[_0xb58f('0x17')](),_0x2ba924['originalname'][_0xb58f('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xb58f('0x11')](_0xb58f('0x19'),upload[_0xb58f('0x1a')]('file'),controller['attachmentUpload']);router[_0xb58f('0x11')]('/:id/messages',auth['isChatInteractionAuthorized'](),controller[_0xb58f('0x1b')]);router[_0xb58f('0x11')](_0xb58f('0x1c'),auth['isAuthenticated'](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),'chatinteraction:addtags'),controller[_0xb58f('0x1f')]);router[_0xb58f('0x20')](_0xb58f('0xb'),auth[_0xb58f('0x8')](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),_0xb58f('0x21')),controller[_0xb58f('0x22')]);router['put'](_0xb58f('0x23'),controller[_0xb58f('0x24')]);router[_0xb58f('0x20')]('/:id/abandon',auth[_0xb58f('0xe')](),controller[_0xb58f('0x25')]);router[_0xb58f('0x20')]('/:id/close',controller[_0xb58f('0x26')]);router[_0xb58f('0x27')](_0xb58f('0xb'),auth[_0xb58f('0x8')](),interaction[_0xb58f('0x1d')](_0xb58f('0x1e'),_0xb58f('0x28')),controller[_0xb58f('0x29')]);router['delete'](_0xb58f('0x1c'),auth[_0xb58f('0x8')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x8425=['addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','chatinteraction:update','update','put','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file'];(function(_0x1c63e1,_0x39c5b7){var _0x2110a4=function(_0x4a55dd){while(--_0x4a55dd){_0x1c63e1['push'](_0x1c63e1['shift']());}};_0x2110a4(++_0x39c5b7);}(_0x8425,0xab));var _0x5842=function(_0xc60b28,_0x560186){_0xc60b28=_0xc60b28-0x0;var _0x4e883b=_0x8425[_0xc60b28];return _0x4e883b;};'use strict';var multer=require(_0x5842('0x0'));var util=require(_0x5842('0x1'));var path=require(_0x5842('0x2'));var timeout=require('connect-timeout');var express=require(_0x5842('0x3'));var router=express[_0x5842('0x4')]();var fs_extra=require(_0x5842('0x5'));var auth=require(_0x5842('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5842('0x7'));var controller=require(_0x5842('0x8'));router[_0x5842('0x9')]('/',auth[_0x5842('0xa')](),controller['index']);router[_0x5842('0x9')](_0x5842('0xb'),auth[_0x5842('0xa')](),controller[_0x5842('0xc')]);router[_0x5842('0x9')](_0x5842('0xd'),auth['isChatInteractionAuthorized'](),controller[_0x5842('0xe')]);router['get'](_0x5842('0xf'),auth[_0x5842('0x10')](),controller[_0x5842('0x11')]);router['get'](_0x5842('0x12'),auth[_0x5842('0xa')](),controller[_0x5842('0x13')]);router[_0x5842('0x9')]('/:id/my_messages',auth['isChatInteractionAuthorized'](),controller[_0x5842('0x14')]);router[_0x5842('0x9')](_0x5842('0x15'),auth['isAuthenticated'](),controller[_0x5842('0x16')]);router[_0x5842('0x17')]('/',auth['isAuthenticated'](),controller[_0x5842('0x18')]);router['post'](_0x5842('0x19'),auth['isAuthenticated'](),controller['createVidaooSession']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5e6dee,_0xcedecd,_0x1f8434){_0x1f8434(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0xf1e745,_0x3090b3,_0xbee246){_0xbee246(null,util[_0x5842('0x1a')](_0x5842('0x1b'),Date['now'](),_0x3090b3[_0x5842('0x1c')][_0x5842('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5842('0x17')](_0x5842('0x1e'),upload[_0x5842('0x1f')](_0x5842('0x20')),controller['attachmentUpload']);router['post'](_0x5842('0x12'),auth[_0x5842('0x10')](),controller[_0x5842('0x21')]);router[_0x5842('0x17')](_0x5842('0x22'),auth[_0x5842('0xa')](),interaction[_0x5842('0x23')](_0x5842('0x24'),_0x5842('0x25')),controller[_0x5842('0x26')]);router['put'](_0x5842('0xd'),auth['isAuthenticated'](),interaction[_0x5842('0x23')](_0x5842('0x24'),_0x5842('0x27')),controller[_0x5842('0x28')]);router[_0x5842('0x29')](_0x5842('0x2a'),controller[_0x5842('0x2b')]);router['put']('/:id/abandon',auth[_0x5842('0x10')](),controller[_0x5842('0x2c')]);router[_0x5842('0x29')](_0x5842('0x2d'),controller[_0x5842('0x2e')]);router[_0x5842('0x2f')](_0x5842('0xd'),auth[_0x5842('0xa')](),interaction[_0x5842('0x23')]('chat',_0x5842('0x30')),controller[_0x5842('0x31')]);router[_0x5842('0x2f')](_0x5842('0x22'),auth[_0x5842('0xa')](),controller['removeTags']);module[_0x5842('0x32')]=router;
\ No newline at end of file
index 510171d..dec5c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe34b=['exports','medium','BOOLEAN','INTEGER'];(function(_0x1e878f,_0x3a63e7){var _0x442563=function(_0x311f4d){while(--_0x311f4d){_0x1e878f['push'](_0x1e878f['shift']());}};_0x442563(++_0x3a63e7);}(_0xe34b,0x174));var _0xbe34=function(_0x29f80e,_0x9027ff){_0x29f80e=_0x29f80e-0x0;var _0x5c7eaa=_0xe34b[_0x29f80e];return _0x5c7eaa;};'use strict';var Sequelize=require('sequelize');module[_0xbe34('0x0')]={'body':{'type':Sequelize['TEXT'](_0xbe34('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xbe34('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xbe34('0x3')]}};
\ No newline at end of file
+var _0x79cb=['TEXT','medium','BOOLEAN','sequelize','exports'];(function(_0x3d08c3,_0x349785){var _0xda5926=function(_0x428e08){while(--_0x428e08){_0x3d08c3['push'](_0x3d08c3['shift']());}};_0xda5926(++_0x349785);}(_0x79cb,0x157));var _0xb79c=function(_0x505055,_0x52b0ae){_0x505055=_0x505055-0x0;var _0x466c83=_0x79cb[_0x505055];return _0x466c83;};'use strict';var Sequelize=require(_0xb79c('0x0'));module[_0xb79c('0x1')]={'body':{'type':Sequelize[_0xb79c('0x2')](_0xb79c('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb79c('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index b1b7574..3fb9bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8082=['find','create','body','params','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','role','lastLoginAt','VoiceQueue','user','Agents','userProfileId','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','status','json','count','offset','limit','set','save','update','destroy','end','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','options','ChatInternalMessage','then','include','findAll','rows','catch','show','includeAll'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8082,0x82));var _0x2808=function(_0x31850b,_0x44b9b3){_0x31850b=_0x31850b-0x0;var _0x3b11fd=_0x8082[_0x31850b];return _0x3b11fd;};'use strict';var emlformat=require(_0x2808('0x0'));var rimraf=require(_0x2808('0x1'));var zipdir=require(_0x2808('0x2'));var jsonpatch=require(_0x2808('0x3'));var rp=require('request-promise');var moment=require(_0x2808('0x4'));var BPromise=require(_0x2808('0x5'));var Mustache=require(_0x2808('0x6'));var util=require('util');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(_0x2808('0x7'));var _=require(_0x2808('0x8'));var squel=require(_0x2808('0x9'));var crypto=require(_0x2808('0xa'));var jsforce=require(_0x2808('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x2808('0xc'));var querystring=require(_0x2808('0xd'));var Papa=require(_0x2808('0xe'));var Redis=require(_0x2808('0xf'));var authService=require(_0x2808('0x10'));var qs=require(_0x2808('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2808('0x12'));var logger=require('../../config/logger')(_0x2808('0x13'));var utils=require(_0x2808('0x14'));var config=require(_0x2808('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2808('0x16'))['db'];config[_0x2808('0x17')]=_[_0x2808('0x18')](config[_0x2808('0x17')],{'host':_0x2808('0x19'),'port':0x18eb});var socket=require(_0x2808('0x1a'))(new Redis(config['redis']));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x246c58,_0x59bf42){_0x59bf42=_0x59bf42||0xcc;return function(_0x4ca8b){if(_0x4ca8b){return _0x246c58['sendStatus'](_0x59bf42);}return _0x246c58['status'](_0x59bf42)['end']();};}function respondWithResult(_0x3138d2,_0x1ca0b1){_0x1ca0b1=_0x1ca0b1||0xc8;return function(_0x5d4654){if(_0x5d4654){return _0x3138d2[_0x2808('0x1b')](_0x1ca0b1)[_0x2808('0x1c')](_0x5d4654);}};}function respondWithFilteredResult(_0x349e28,_0x228da1){return function(_0x5b54b0){if(_0x5b54b0){var _0x3c00bb=typeof _0x228da1['offset']==='undefined'&&typeof _0x228da1['limit']==='undefined';var _0x511a9a=_0x5b54b0[_0x2808('0x1d')];var _0x5d217b=_0x3c00bb?0x0:_0x228da1[_0x2808('0x1e')];var _0x1e6e87=_0x3c00bb?_0x5b54b0[_0x2808('0x1d')]:_0x228da1[_0x2808('0x1e')]+_0x228da1[_0x2808('0x1f')];var _0x58c1d3;if(_0x1e6e87>=_0x511a9a){_0x1e6e87=_0x511a9a;_0x58c1d3=0xc8;}else{_0x58c1d3=0xce;}_0x349e28[_0x2808('0x1b')](_0x58c1d3);return _0x349e28[_0x2808('0x20')]('Content-Range',_0x5d217b+'-'+_0x1e6e87+'/'+_0x511a9a)['json'](_0x5b54b0);}return null;};}function patchUpdates(_0x4583cf){return function(_0x13b2ce){try{jsonpatch['apply'](_0x13b2ce,_0x4583cf,!![]);}catch(_0x1f69ce){return BPromise['reject'](_0x1f69ce);}return _0x13b2ce[_0x2808('0x21')]();};}function saveUpdates(_0x8278c3,_0x14e7ce){return function(_0x403843){if(_0x403843){return _0x403843[_0x2808('0x22')](_0x8278c3)['then'](function(_0x107b51){return _0x107b51;});}return null;};}function removeEntity(_0x379c82,_0x4df1c0){return function(_0x4f96a5){if(_0x4f96a5){return _0x4f96a5[_0x2808('0x23')]()['then'](function(){_0x379c82[_0x2808('0x1b')](0xcc)[_0x2808('0x24')]();});}};}function handleEntityNotFound(_0x4fe11c,_0x26d815){return function(_0x3b4b0b){if(!_0x3b4b0b){_0x4fe11c[_0x2808('0x25')](0x194);}return _0x3b4b0b;};}function handleError(_0x261c9a,_0x194e58){_0x194e58=_0x194e58||0x1f4;return function(_0x131ab2){logger[_0x2808('0x26')](_0x131ab2[_0x2808('0x27')]);if(_0x131ab2['name']){delete _0x131ab2[_0x2808('0x28')];}_0x261c9a[_0x2808('0x1b')](_0x194e58)[_0x2808('0x29')](_0x131ab2);};}exports['index']=function(_0x3af98e,_0xf21ee1){var _0x2ddca1={},_0x3b292c={},_0x5c3236={'count':0x0,'rows':[]};var _0x41e77a=_[_0x2808('0x2a')](db['ChatInternalMessage'][_0x2808('0x2b')],function(_0x2989bc){return{'name':_0x2989bc[_0x2808('0x2c')],'type':_0x2989bc[_0x2808('0x2d')][_0x2808('0x2e')]};});_0x3b292c[_0x2808('0x2f')]=_[_0x2808('0x2a')](_0x41e77a,_0x2808('0x28'));_0x3b292c[_0x2808('0x30')]=_[_0x2808('0x31')](_0x3af98e[_0x2808('0x30')]);_0x3b292c['filters']=_[_0x2808('0x32')](_0x3b292c['model'],_0x3b292c['query']);_0x2ddca1[_0x2808('0x33')]=_['intersection'](_0x3b292c['model'],qs[_0x2808('0x34')](_0x3af98e[_0x2808('0x30')][_0x2808('0x34')]));_0x2ddca1[_0x2808('0x33')]=_0x2ddca1[_0x2808('0x33')][_0x2808('0x35')]?_0x2ddca1['attributes']:_0x3b292c[_0x2808('0x2f')];if(!_0x3af98e[_0x2808('0x30')][_0x2808('0x36')](_0x2808('0x37'))){_0x2ddca1[_0x2808('0x1f')]=qs[_0x2808('0x1f')](_0x3af98e[_0x2808('0x30')][_0x2808('0x1f')]);_0x2ddca1['offset']=qs['offset'](_0x3af98e[_0x2808('0x30')][_0x2808('0x1e')]);}_0x2ddca1[_0x2808('0x38')]=qs[_0x2808('0x39')](_0x3af98e['query'][_0x2808('0x39')]);_0x2ddca1['where']=qs['filters'](_[_0x2808('0x3a')](_0x3af98e[_0x2808('0x30')],_0x3b292c[_0x2808('0x3b')]),_0x41e77a);if(_0x3af98e['query'][_0x2808('0x3c')]){_0x2ddca1[_0x2808('0x3d')]=_['merge'](_0x2ddca1[_0x2808('0x3d')],{'$or':_[_0x2808('0x2a')](_0x41e77a,function(_0x344572){if(_0x344572[_0x2808('0x2d')]!=='VIRTUAL'){var _0x43c2e4={};_0x43c2e4[_0x344572[_0x2808('0x28')]]={'$like':'%'+_0x3af98e['query'][_0x2808('0x3c')]+'%'};return _0x43c2e4;}})});}_0x2ddca1=_[_0x2808('0x3e')]({},_0x2ddca1,_0x3af98e[_0x2808('0x3f')]);var _0x20facd={'where':_0x2ddca1[_0x2808('0x3d')]};return db[_0x2808('0x40')][_0x2808('0x1d')](_0x20facd)[_0x2808('0x41')](function(_0x3e42d6){_0x5c3236[_0x2808('0x1d')]=_0x3e42d6;if(_0x3af98e[_0x2808('0x30')]['includeAll']){_0x2ddca1[_0x2808('0x42')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0x2808('0x43')](_0x2ddca1);})[_0x2808('0x41')](function(_0x44d094){_0x5c3236[_0x2808('0x44')]=_0x44d094;return _0x5c3236;})['then'](respondWithFilteredResult(_0xf21ee1,_0x2ddca1))[_0x2808('0x45')](handleError(_0xf21ee1,null));};exports[_0x2808('0x46')]=function(_0x201434,_0x30d490){var _0x5d87af={'raw':!![],'where':{'id':_0x201434['params']['id']}},_0x2e6743={};_0x2e6743['model']=_[_0x2808('0x31')](db[_0x2808('0x40')][_0x2808('0x2b')]);_0x2e6743[_0x2808('0x30')]=_['keys'](_0x201434[_0x2808('0x30')]);_0x2e6743[_0x2808('0x3b')]=_[_0x2808('0x32')](_0x2e6743['model'],_0x2e6743[_0x2808('0x30')]);_0x5d87af[_0x2808('0x33')]=_[_0x2808('0x32')](_0x2e6743[_0x2808('0x2f')],qs[_0x2808('0x34')](_0x201434[_0x2808('0x30')]['fields']));_0x5d87af[_0x2808('0x33')]=_0x5d87af[_0x2808('0x33')][_0x2808('0x35')]?_0x5d87af[_0x2808('0x33')]:_0x2e6743['model'];if(_0x201434[_0x2808('0x30')][_0x2808('0x47')]){_0x5d87af[_0x2808('0x42')]=[{'all':!![]}];}_0x5d87af=_[_0x2808('0x3e')]({},_0x5d87af,_0x201434['options']);return db[_0x2808('0x40')][_0x2808('0x48')](_0x5d87af)[_0x2808('0x41')](handleEntityNotFound(_0x30d490,null))[_0x2808('0x41')](respondWithResult(_0x30d490,null))[_0x2808('0x45')](handleError(_0x30d490,null));};exports[_0x2808('0x49')]=function(_0x190d18,_0x5ca4cc){return db[_0x2808('0x40')][_0x2808('0x49')](_0x190d18['body'],{})[_0x2808('0x41')](respondWithResult(_0x5ca4cc,0xc9))[_0x2808('0x45')](handleError(_0x5ca4cc,null));};exports['update']=function(_0x99e783,_0x178f3b){if(_0x99e783['body']['id']){delete _0x99e783[_0x2808('0x4a')]['id'];}return db[_0x2808('0x40')]['find']({'where':{'id':_0x99e783[_0x2808('0x4b')]['id']}})[_0x2808('0x41')](handleEntityNotFound(_0x178f3b,null))[_0x2808('0x41')](saveUpdates(_0x99e783['body'],null))[_0x2808('0x41')](respondWithResult(_0x178f3b,null))['catch'](handleError(_0x178f3b,null));};exports['destroy']=function(_0x4049e7,_0x3f291a){return db['ChatInternalMessage']['find']({'where':{'id':_0x4049e7['params']['id']}})[_0x2808('0x41')](handleEntityNotFound(_0x3f291a,null))[_0x2808('0x41')](removeEntity(_0x3f291a,null))[_0x2808('0x45')](handleError(_0x3f291a,null));};exports['describe']=function(_0x549978,_0x5a20dc){return db[_0x2808('0x40')]['describe']()[_0x2808('0x41')](respondWithResult(_0x5a20dc,null))['catch'](handleError(_0x5a20dc,null));};function wrapUser(_0x292b83){return function(_0x40cef7){var _0x142d30=_0x292b83[_0x2808('0x4c')]({'plain':!![]});_0x142d30[_0x2808('0x4d')]=[];if(_0x40cef7){_0x142d30[_0x2808('0x4e')]=_0x40cef7[_0x2808('0x4f')];_0x142d30[_0x2808('0x50')]=_0x40cef7;}else{_0x142d30[_0x2808('0x4e')]=moment(0x0)[_0x2808('0x51')](_0x2808('0x52'));_0x142d30[_0x2808('0x50')]={};}return _0x142d30;};}exports['getUsers']=function(_0x189a52,_0x4405de,_0x242522){var _0x158b6b=[];return db[_0x2808('0x53')][_0x2808('0x43')]({'where':{'role':[_0x2808('0x54'),_0x2808('0x55'),'user']},'attributes':['id','fullname','name',_0x2808('0x56'),'userpic','internal','online',_0x2808('0x57'),'allowmessenger','showWebBar'],'order':qs[_0x2808('0x39')]('-online'),'include':[{'model':db[_0x2808('0x58')],'as':'VoiceQueues','attributes':['id',_0x2808('0x28'),_0x2808('0x2d')],'through':{'attributes':[]}}]})[_0x2808('0x41')](function(_0x6d2c8c){if(_0x6d2c8c){var _0x52f9c9=_0x189a52[_0x2808('0x59')][_0x2808('0x4c')]({'plain':!![]});if(!_0x52f9c9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x52f9c9['role']==='user'){return db['UserProfileSection'][_0x2808('0x48')]({'where':{'name':_0x2808('0x5a'),'userProfileId':_0x52f9c9[_0x2808('0x5b')]},'raw':!![]})[_0x2808('0x41')](function(_0x5555d1){if(_0x5555d1){if(_0x5555d1['autoAssociation']===0x0){return db[_0x2808('0x5c')]['findAll']({'where':{'sectionId':_0x5555d1['id']},'raw':!![]})[_0x2808('0x41')](function(_0x1d1894){var _0x56f819=[];if(_[_0x2808('0x5d')](_0x1d1894)){_0x56f819=_[_0x2808('0x3c')](_0x6d2c8c,function(_0x2e4c40){if(_0x2e4c40[_0x2808('0x56')]!=='agent'){return _0x2e4c40;}});return _0x56f819;}else{for(var _0x5a6d0d=0x0;_0x5a6d0d<_0x6d2c8c[_0x2808('0x35')];_0x5a6d0d++){var _0x31619d=_0x6d2c8c[_0x5a6d0d];if(_0x31619d[_0x2808('0x56')]==='agent'){var _0x5316bc=_[_0x2808('0x48')](_0x1d1894,function(_0x141485){return _0x141485[_0x2808('0x5e')]===_0x31619d['id'];});if(_0x5316bc)_0x56f819['push'](_0x31619d);}else{_0x56f819[_0x2808('0x5f')](_0x31619d);}}return _0x56f819;}});}else{return _0x6d2c8c;}}else{var _0x453d1d=_[_0x2808('0x3c')](_0x6d2c8c,function(_0x271ee6){if(_0x271ee6['role']!=='agent'){return _0x271ee6;}});return _0x453d1d;}});}else{return _0x6d2c8c;}}})[_0x2808('0x41')](function(_0x449e82){var _0x3cbc38=[];if(_0x449e82){_0x158b6b=_0x449e82;for(var _0x2e55f4=0x0;_0x2e55f4<_0x449e82[_0x2808('0x35')];_0x2e55f4+=0x1){_0x158b6b[_0x2e55f4][_0x2808('0x4d')]=[];_0x3cbc38[_0x2808('0x5f')](db['ChatInternalMessage'][_0x2808('0x48')]({'where':{'FromId':[_0x189a52[_0x2808('0x59')]['id'],_0x449e82[_0x2e55f4]['id']],'ToId':[_0x189a52[_0x2808('0x59')]['id'],_0x449e82[_0x2e55f4]['id']],'ChatGroupId':null},'attributes':['id',_0x2808('0x4f'),_0x2808('0x60'),_0x2808('0x61'),_0x2808('0x62'),_0x2808('0x4a')],'order':qs['sort'](_0x2808('0x63')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2808('0x41')](wrapUser(_0x449e82[_0x2e55f4])));}return BPromise[_0x2808('0x64')](_0x3cbc38);}return[];})['then'](function(_0x534aba){return{'rows':_0x534aba,'count':_0x534aba[_0x2808('0x35')]};})[_0x2808('0x41')](respondWithResult(_0x4405de,null))[_0x2808('0x45')](handleError(_0x4405de,null));};
\ No newline at end of file
+var _0x44a1=['../../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','./chatInternalMessage.socket','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','sendStatus','stack','name','index','map','ChatInternalMessage','rawAttributes','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','get','lastMessageAt','createdAt','lastMessage','getUsers','User','agent','user','fullname','role','userpic','internal','online','lastLoginAt','showWebBar','-online','VoiceQueue','VoiceQueues','type','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','messages','FromId','ToId','read','-createdAt','all','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','desk.js','querystring','ioredis'];(function(_0x16a758,_0x1828b5){var _0x45168b=function(_0x4606df){while(--_0x4606df){_0x16a758['push'](_0x16a758['shift']());}};_0x45168b(++_0x1828b5);}(_0x44a1,0x141));var _0x144a=function(_0x443c87,_0x31bbce){_0x443c87=_0x443c87-0x0;var _0x26b2ef=_0x44a1[_0x443c87];return _0x26b2ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x144a('0x0'));var zipdir=require(_0x144a('0x1'));var jsonpatch=require(_0x144a('0x2'));var rp=require('request-promise');var moment=require(_0x144a('0x3'));var BPromise=require(_0x144a('0x4'));var Mustache=require(_0x144a('0x5'));var util=require(_0x144a('0x6'));var path=require(_0x144a('0x7'));var sox=require(_0x144a('0x8'));var csv=require('to-csv');var ejs=require(_0x144a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x144a('0xa'));var squel=require('squel');var crypto=require(_0x144a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x144a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x144a('0xd'));var Papa=require('papaparse');var Redis=require(_0x144a('0xe'));var authService=require(_0x144a('0xf'));var qs=require(_0x144a('0x10'));var as=require(_0x144a('0x11'));var hardwareService=require(_0x144a('0x12'));var logger=require(_0x144a('0x13'))(_0x144a('0x14'));var utils=require(_0x144a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x144a('0x16'));var db=require(_0x144a('0x17'))['db'];config[_0x144a('0x18')]=_[_0x144a('0x19')](config[_0x144a('0x18')],{'host':_0x144a('0x1a'),'port':0x18eb});var socket=require(_0x144a('0x1b'))(new Redis(config['redis']));require(_0x144a('0x1c'))['register'](socket);function respondWithStatusCode(_0x4c7883,_0x3a3ee5){_0x3a3ee5=_0x3a3ee5||0xcc;return function(_0x881c98){if(_0x881c98){return _0x4c7883['sendStatus'](_0x3a3ee5);}return _0x4c7883[_0x144a('0x1d')](_0x3a3ee5)[_0x144a('0x1e')]();};}function respondWithResult(_0x3860bc,_0x4969aa){_0x4969aa=_0x4969aa||0xc8;return function(_0x46a3d8){if(_0x46a3d8){return _0x3860bc['status'](_0x4969aa)[_0x144a('0x1f')](_0x46a3d8);}};}function respondWithFilteredResult(_0x1bb7e6,_0x518937){return function(_0x382561){if(_0x382561){var _0x3c2866=typeof _0x518937[_0x144a('0x20')]===_0x144a('0x21')&&typeof _0x518937[_0x144a('0x22')]===_0x144a('0x21');var _0x44e122=_0x382561['count'];var _0x19dd50=_0x3c2866?0x0:_0x518937['offset'];var _0x366981=_0x3c2866?_0x382561[_0x144a('0x23')]:_0x518937[_0x144a('0x20')]+_0x518937[_0x144a('0x22')];var _0x525f2e;if(_0x366981>=_0x44e122){_0x366981=_0x44e122;_0x525f2e=0xc8;}else{_0x525f2e=0xce;}_0x1bb7e6[_0x144a('0x1d')](_0x525f2e);return _0x1bb7e6['set'](_0x144a('0x24'),_0x19dd50+'-'+_0x366981+'/'+_0x44e122)[_0x144a('0x1f')](_0x382561);}return null;};}function patchUpdates(_0x23b7ab){return function(_0x100b96){try{jsonpatch[_0x144a('0x25')](_0x100b96,_0x23b7ab,!![]);}catch(_0x41d0ca){return BPromise[_0x144a('0x26')](_0x41d0ca);}return _0x100b96[_0x144a('0x27')]();};}function saveUpdates(_0x3e7ce9,_0x195133){return function(_0x5aaf6b){if(_0x5aaf6b){return _0x5aaf6b[_0x144a('0x28')](_0x3e7ce9)['then'](function(_0x559547){return _0x559547;});}return null;};}function removeEntity(_0x54df90,_0x3b6ba6){return function(_0x527a20){if(_0x527a20){return _0x527a20[_0x144a('0x29')]()[_0x144a('0x2a')](function(){_0x54df90[_0x144a('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f7b05,_0x39d94e){return function(_0x2c8c56){if(!_0x2c8c56){_0x2f7b05[_0x144a('0x2b')](0x194);}return _0x2c8c56;};}function handleError(_0xf84913,_0x59b66b){_0x59b66b=_0x59b66b||0x1f4;return function(_0x4067ba){logger['error'](_0x4067ba[_0x144a('0x2c')]);if(_0x4067ba[_0x144a('0x2d')]){delete _0x4067ba[_0x144a('0x2d')];}_0xf84913[_0x144a('0x1d')](_0x59b66b)['send'](_0x4067ba);};}exports[_0x144a('0x2e')]=function(_0x202ed5,_0x3611a0){var _0x15ab0c={},_0x350fef={},_0x38d0d0={'count':0x0,'rows':[]};var _0x4918=_[_0x144a('0x2f')](db[_0x144a('0x30')][_0x144a('0x31')],function(_0x4dd92d){return{'name':_0x4dd92d['fieldName'],'type':_0x4dd92d['type'][_0x144a('0x32')]};});_0x350fef[_0x144a('0x33')]=_[_0x144a('0x2f')](_0x4918,_0x144a('0x2d'));_0x350fef['query']=_[_0x144a('0x34')](_0x202ed5[_0x144a('0x35')]);_0x350fef[_0x144a('0x36')]=_['intersection'](_0x350fef['model'],_0x350fef[_0x144a('0x35')]);_0x15ab0c[_0x144a('0x37')]=_[_0x144a('0x38')](_0x350fef[_0x144a('0x33')],qs['fields'](_0x202ed5[_0x144a('0x35')][_0x144a('0x39')]));_0x15ab0c[_0x144a('0x37')]=_0x15ab0c[_0x144a('0x37')][_0x144a('0x3a')]?_0x15ab0c[_0x144a('0x37')]:_0x350fef[_0x144a('0x33')];if(!_0x202ed5[_0x144a('0x35')][_0x144a('0x3b')](_0x144a('0x3c'))){_0x15ab0c[_0x144a('0x22')]=qs[_0x144a('0x22')](_0x202ed5[_0x144a('0x35')]['limit']);_0x15ab0c[_0x144a('0x20')]=qs[_0x144a('0x20')](_0x202ed5[_0x144a('0x35')]['offset']);}_0x15ab0c[_0x144a('0x3d')]=qs[_0x144a('0x3e')](_0x202ed5[_0x144a('0x35')]['sort']);_0x15ab0c[_0x144a('0x3f')]=qs['filters'](_[_0x144a('0x40')](_0x202ed5[_0x144a('0x35')],_0x350fef[_0x144a('0x36')]),_0x4918);if(_0x202ed5[_0x144a('0x35')][_0x144a('0x41')]){_0x15ab0c[_0x144a('0x3f')]=_[_0x144a('0x42')](_0x15ab0c['where'],{'$or':_[_0x144a('0x2f')](_0x4918,function(_0x4388c3){if(_0x4388c3['type']!==_0x144a('0x43')){var _0x12ec9a={};_0x12ec9a[_0x4388c3['name']]={'$like':'%'+_0x202ed5['query'][_0x144a('0x41')]+'%'};return _0x12ec9a;}})});}_0x15ab0c=_[_0x144a('0x42')]({},_0x15ab0c,_0x202ed5[_0x144a('0x44')]);var _0x548f4e={'where':_0x15ab0c[_0x144a('0x3f')]};return db[_0x144a('0x30')][_0x144a('0x23')](_0x548f4e)[_0x144a('0x2a')](function(_0x3009d0){_0x38d0d0['count']=_0x3009d0;if(_0x202ed5[_0x144a('0x35')][_0x144a('0x45')]){_0x15ab0c[_0x144a('0x46')]=[{'all':!![]}];}return db[_0x144a('0x30')][_0x144a('0x47')](_0x15ab0c);})['then'](function(_0x271670){_0x38d0d0[_0x144a('0x48')]=_0x271670;return _0x38d0d0;})[_0x144a('0x2a')](respondWithFilteredResult(_0x3611a0,_0x15ab0c))[_0x144a('0x49')](handleError(_0x3611a0,null));};exports[_0x144a('0x4a')]=function(_0x435787,_0x3017ce){var _0x56b80d={'raw':!![],'where':{'id':_0x435787[_0x144a('0x4b')]['id']}},_0x15ccb5={};_0x15ccb5['model']=_[_0x144a('0x34')](db[_0x144a('0x30')][_0x144a('0x31')]);_0x15ccb5[_0x144a('0x35')]=_['keys'](_0x435787[_0x144a('0x35')]);_0x15ccb5[_0x144a('0x36')]=_[_0x144a('0x38')](_0x15ccb5['model'],_0x15ccb5[_0x144a('0x35')]);_0x56b80d[_0x144a('0x37')]=_[_0x144a('0x38')](_0x15ccb5['model'],qs[_0x144a('0x39')](_0x435787['query'][_0x144a('0x39')]));_0x56b80d['attributes']=_0x56b80d[_0x144a('0x37')]['length']?_0x56b80d[_0x144a('0x37')]:_0x15ccb5[_0x144a('0x33')];if(_0x435787[_0x144a('0x35')][_0x144a('0x45')]){_0x56b80d[_0x144a('0x46')]=[{'all':!![]}];}_0x56b80d=_[_0x144a('0x42')]({},_0x56b80d,_0x435787[_0x144a('0x44')]);return db[_0x144a('0x30')][_0x144a('0x4c')](_0x56b80d)[_0x144a('0x2a')](handleEntityNotFound(_0x3017ce,null))[_0x144a('0x2a')](respondWithResult(_0x3017ce,null))[_0x144a('0x49')](handleError(_0x3017ce,null));};exports[_0x144a('0x4d')]=function(_0x57b526,_0xa93994){return db['ChatInternalMessage'][_0x144a('0x4d')](_0x57b526['body'],{})[_0x144a('0x2a')](respondWithResult(_0xa93994,0xc9))[_0x144a('0x49')](handleError(_0xa93994,null));};exports[_0x144a('0x28')]=function(_0x179691,_0x40a6ab){if(_0x179691[_0x144a('0x4e')]['id']){delete _0x179691[_0x144a('0x4e')]['id'];}return db['ChatInternalMessage'][_0x144a('0x4c')]({'where':{'id':_0x179691[_0x144a('0x4b')]['id']}})[_0x144a('0x2a')](handleEntityNotFound(_0x40a6ab,null))[_0x144a('0x2a')](saveUpdates(_0x179691[_0x144a('0x4e')],null))[_0x144a('0x2a')](respondWithResult(_0x40a6ab,null))[_0x144a('0x49')](handleError(_0x40a6ab,null));};exports[_0x144a('0x29')]=function(_0x3f848c,_0x11b59f){return db[_0x144a('0x30')]['find']({'where':{'id':_0x3f848c[_0x144a('0x4b')]['id']}})[_0x144a('0x2a')](handleEntityNotFound(_0x11b59f,null))['then'](removeEntity(_0x11b59f,null))['catch'](handleError(_0x11b59f,null));};exports[_0x144a('0x4f')]=function(_0xab68a2,_0x516e0e){return db['ChatInternalMessage'][_0x144a('0x4f')]()[_0x144a('0x2a')](respondWithResult(_0x516e0e,null))[_0x144a('0x49')](handleError(_0x516e0e,null));};function wrapUser(_0x72e12c){return function(_0x580203){var _0x1e00d7=_0x72e12c[_0x144a('0x50')]({'plain':!![]});_0x1e00d7['messages']=[];if(_0x580203){_0x1e00d7[_0x144a('0x51')]=_0x580203[_0x144a('0x52')];_0x1e00d7['lastMessage']=_0x580203;}else{_0x1e00d7[_0x144a('0x51')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1e00d7[_0x144a('0x53')]={};}return _0x1e00d7;};}exports[_0x144a('0x54')]=function(_0x341ca0,_0x1953c0,_0x126648){var _0x435592=[];return db[_0x144a('0x55')]['findAll']({'where':{'role':[_0x144a('0x56'),'admin',_0x144a('0x57')]},'attributes':['id',_0x144a('0x58'),_0x144a('0x2d'),_0x144a('0x59'),_0x144a('0x5a'),_0x144a('0x5b'),_0x144a('0x5c'),_0x144a('0x5d'),'allowmessenger',_0x144a('0x5e')],'order':qs[_0x144a('0x3e')](_0x144a('0x5f')),'include':[{'model':db[_0x144a('0x60')],'as':_0x144a('0x61'),'attributes':['id',_0x144a('0x2d'),_0x144a('0x62')],'through':{'attributes':[]}}]})[_0x144a('0x2a')](function(_0x71c71c){if(_0x71c71c){var _0x3f161c=_0x341ca0[_0x144a('0x57')][_0x144a('0x50')]({'plain':!![]});if(!_0x3f161c)throw new Error(_0x144a('0x63'));if(_0x3f161c[_0x144a('0x59')]===_0x144a('0x57')){return db[_0x144a('0x64')][_0x144a('0x4c')]({'where':{'name':'Agents','userProfileId':_0x3f161c[_0x144a('0x65')]},'raw':!![]})[_0x144a('0x2a')](function(_0xc1a3e4){if(_0xc1a3e4){if(_0xc1a3e4[_0x144a('0x66')]===0x0){return db[_0x144a('0x67')][_0x144a('0x47')]({'where':{'sectionId':_0xc1a3e4['id']},'raw':!![]})['then'](function(_0x3e5219){var _0x2f8970=[];if(_[_0x144a('0x68')](_0x3e5219)){_0x2f8970=_['filter'](_0x71c71c,function(_0x1e379b){if(_0x1e379b[_0x144a('0x59')]!==_0x144a('0x56')){return _0x1e379b;}});return _0x2f8970;}else{for(var _0x307269=0x0;_0x307269<_0x71c71c[_0x144a('0x3a')];_0x307269++){var _0xfa87b2=_0x71c71c[_0x307269];if(_0xfa87b2[_0x144a('0x59')]===_0x144a('0x56')){var _0x2a3768=_[_0x144a('0x4c')](_0x3e5219,function(_0x2128e3){return _0x2128e3['resourceId']===_0xfa87b2['id'];});if(_0x2a3768)_0x2f8970[_0x144a('0x69')](_0xfa87b2);}else{_0x2f8970[_0x144a('0x69')](_0xfa87b2);}}return _0x2f8970;}});}else{return _0x71c71c;}}else{var _0x276843=_[_0x144a('0x41')](_0x71c71c,function(_0x3c13a9){if(_0x3c13a9[_0x144a('0x59')]!==_0x144a('0x56')){return _0x3c13a9;}});return _0x276843;}});}else{return _0x71c71c;}}})[_0x144a('0x2a')](function(_0x481d8f){var _0x59d11=[];if(_0x481d8f){_0x435592=_0x481d8f;for(var _0x15b35c=0x0;_0x15b35c<_0x481d8f[_0x144a('0x3a')];_0x15b35c+=0x1){_0x435592[_0x15b35c][_0x144a('0x6a')]=[];_0x59d11[_0x144a('0x69')](db[_0x144a('0x30')]['find']({'where':{'FromId':[_0x341ca0[_0x144a('0x57')]['id'],_0x481d8f[_0x15b35c]['id']],'ToId':[_0x341ca0[_0x144a('0x57')]['id'],_0x481d8f[_0x15b35c]['id']],'ChatGroupId':null},'attributes':['id',_0x144a('0x52'),_0x144a('0x6b'),_0x144a('0x6c'),_0x144a('0x6d'),_0x144a('0x4e')],'order':qs[_0x144a('0x3e')](_0x144a('0x6e')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x144a('0x2a')](wrapUser(_0x481d8f[_0x15b35c])));}return BPromise[_0x144a('0x6f')](_0x59d11);}return[];})[_0x144a('0x2a')](function(_0x2f3868){return{'rows':_0x2f3868,'count':_0x2f3868['length']};})['then'](respondWithResult(_0x1953c0,null))[_0x144a('0x49')](handleError(_0x1953c0,null));};
\ No newline at end of file
index 672a6f0..1655487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca28=['exports','events','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x36bc7f,_0x1f38ce){var _0x5c09fb=function(_0x228535){while(--_0x228535){_0x36bc7f['push'](_0x36bc7f['shift']());}};_0x5c09fb(++_0x1f38ce);}(_0xca28,0xe9));var _0x8ca2=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xca28[_0x5f1391];return _0x50ebe3;};'use strict';var EventEmitter=require(_0x8ca2('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x8ca2('0x1')](0x0);var events={'afterCreate':_0x8ca2('0x2'),'afterUpdate':_0x8ca2('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5df90f){return function(_0x43da56,_0xd04f68,_0x95e1ba){ChatInternalMessageEvents[_0x8ca2('0x4')](_0x5df90f+':'+_0x43da56['id'],_0x43da56);ChatInternalMessageEvents['emit'](_0x5df90f,_0x43da56);_0x95e1ba(null);};}for(var e in events){if(events[_0x8ca2('0x5')](e)){var event=events[e];ChatInternalMessage[_0x8ca2('0x6')](e,emitEvent(event));}}module[_0x8ca2('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xa6ea=['emit','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','remove'];(function(_0x5756f8,_0x22b6d5){var _0x3bb749=function(_0x332204){while(--_0x332204){_0x5756f8['push'](_0x5756f8['shift']());}};_0x3bb749(++_0x22b6d5);}(_0xa6ea,0x122));var _0xaa6e=function(_0x812ccf,_0x46cec8){_0x812ccf=_0x812ccf-0x0;var _0x397a23=_0xa6ea[_0x812ccf];return _0x397a23;};'use strict';var EventEmitter=require(_0xaa6e('0x0'));var ChatInternalMessage=require(_0xaa6e('0x1'))['db'][_0xaa6e('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xaa6e('0x3')](0x0);var events={'afterCreate':_0xaa6e('0x4'),'afterUpdate':_0xaa6e('0x5'),'afterDestroy':_0xaa6e('0x6')};function emitEvent(_0x5d0c8f){return function(_0x388986,_0x119384,_0x4954f7){ChatInternalMessageEvents[_0xaa6e('0x7')](_0x5d0c8f+':'+_0x388986['id'],_0x388986);ChatInternalMessageEvents[_0xaa6e('0x7')](_0x5d0c8f,_0x388986);_0x4954f7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0xaa6e('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index d3fc758..9116317 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c75=['moment','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','lodash','../../config/logger','api'];(function(_0x26211f,_0x3b2244){var _0x3f4d26=function(_0x5aac3f){while(--_0x5aac3f){_0x26211f['push'](_0x26211f['shift']());}};_0x3f4d26(++_0x3b2244);}(_0x0c75,0x7b));var _0x50c7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0c75[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x50c7('0x0'));var util=require('util');var logger=require(_0x50c7('0x1'))(_0x50c7('0x2'));var moment=require(_0x50c7('0x3'));var BPromise=require(_0x50c7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x50c7('0x5'));var rimraf=require(_0x50c7('0x6'));var config=require(_0x50c7('0x7'));var attributes=require(_0x50c7('0x8'));module[_0x50c7('0x9')]=function(_0x5be5df,_0x1ea349){return _0x5be5df[_0x50c7('0xa')](_0x50c7('0xb'),attributes,{'tableName':_0x50c7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x50c7('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4fa4=['ChatInternalMessage','utf8mb4','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define'];(function(_0x29cbf3,_0x59c905){var _0x37d63c=function(_0x2b1e36){while(--_0x2b1e36){_0x29cbf3['push'](_0x29cbf3['shift']());}};_0x37d63c(++_0x59c905);}(_0x4fa4,0x178));var _0x44fa=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x4fa4[_0xa148b7];return _0x51efd3;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x44fa('0x0'))(_0x44fa('0x1'));var moment=require(_0x44fa('0x2'));var BPromise=require(_0x44fa('0x3'));var rp=require(_0x44fa('0x4'));var fs=require('fs');var path=require(_0x44fa('0x5'));var rimraf=require(_0x44fa('0x6'));var config=require(_0x44fa('0x7'));var attributes=require('./chatInternalMessage.attributes');module['exports']=function(_0x498c5c,_0x32e7c5){return _0x498c5c[_0x44fa('0x8')](_0x44fa('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x44fa('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 36995da..493e87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6d=['ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','client','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4c00a3,_0x2d23e2){var _0x893854=function(_0x6f552c){while(--_0x6f552c){_0x4c00a3['push'](_0x4c00a3['shift']());}};_0x893854(++_0x2d23e2);}(_0x0c6d,0xf7));var _0xd0c6=function(_0x59feac,_0x338314){_0x59feac=_0x59feac-0x0;var _0x310e39=_0x0c6d[_0x59feac];return _0x310e39;};'use strict';var _=require('lodash');var util=require(_0xd0c6('0x0'));var moment=require(_0xd0c6('0x1'));var BPromise=require(_0xd0c6('0x2'));var rs=require(_0xd0c6('0x3'));var fs=require('fs');var Redis=require(_0xd0c6('0x4'));var db=require(_0xd0c6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0c6('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd0c6('0x7')][_0xd0c6('0x8')]({'port':0x232a});config[_0xd0c6('0x9')]=_['defaults'](config[_0xd0c6('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xd0c6('0xa'))(new Redis(config[_0xd0c6('0x9')]));require(_0xd0c6('0xb'))[_0xd0c6('0xc')](socket);function respondWithRpcPromise(_0x2bfaf4,_0x2a1be,_0xc00380){return new BPromise(function(_0x26e14b,_0x2b39c0){return client['request'](_0x2bfaf4,_0xc00380)[_0xd0c6('0xd')](function(_0x5d1321){logger['info'](_0xd0c6('0xe'),_0x2a1be,_0xd0c6('0xf'));logger[_0xd0c6('0x10')](_0xd0c6('0x11'),_0x2a1be,_0xd0c6('0xf'),JSON[_0xd0c6('0x12')](_0x5d1321));if(_0x5d1321[_0xd0c6('0x13')]){if(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x14')]===0x1f4){logger[_0xd0c6('0x13')](_0xd0c6('0xe'),_0x2a1be,_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);return _0x2b39c0(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);}logger[_0xd0c6('0x13')](_0xd0c6('0xe'),_0x2a1be,_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);return _0x26e14b(_0x5d1321[_0xd0c6('0x13')][_0xd0c6('0x15')]);}else{logger[_0xd0c6('0x16')](_0xd0c6('0xe'),_0x2a1be,_0xd0c6('0xf'));_0x26e14b(_0x5d1321[_0xd0c6('0x17')]['message']);}})['catch'](function(_0x17df3f){logger[_0xd0c6('0x13')]('ChatInternalMessage,\x20%s,\x20%s',_0x2a1be,_0x17df3f);_0x2b39c0(_0x17df3f);});});}
\ No newline at end of file
+var _0xe7fc=['info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','socket.io-emitter','./chatInternalMessage.socket','request','then','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2a11f3,_0x5beade){var _0x32f5b7=function(_0x163931){while(--_0x163931){_0x2a11f3['push'](_0x2a11f3['shift']());}};_0x32f5b7(++_0x5beade);}(_0xe7fc,0xf6));var _0xce7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe7fc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xce7f('0x0'));var util=require('util');var moment=require(_0xce7f('0x1'));var BPromise=require(_0xce7f('0x2'));var rs=require(_0xce7f('0x3'));var fs=require('fs');var Redis=require(_0xce7f('0x4'));var db=require(_0xce7f('0x5'))['db'];var utils=require(_0xce7f('0x6'));var logger=require(_0xce7f('0x7'))(_0xce7f('0x8'));var config=require('../../config/environment');var jayson=require(_0xce7f('0x9'));var client=jayson['client'][_0xce7f('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xce7f('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xce7f('0xc'))(new Redis(config[_0xce7f('0xb')]));require(_0xce7f('0xd'))['register'](socket);function respondWithRpcPromise(_0x4bd790,_0x3b0c0c,_0x353c2f){return new BPromise(function(_0x5b44de,_0x3dbf67){return client[_0xce7f('0xe')](_0x4bd790,_0x353c2f)[_0xce7f('0xf')](function(_0x539407){logger['info'](_0xce7f('0x10'),_0x3b0c0c,_0xce7f('0x11'));logger[_0xce7f('0x12')](_0xce7f('0x13'),_0x3b0c0c,_0xce7f('0x11'),JSON[_0xce7f('0x14')](_0x539407));if(_0x539407[_0xce7f('0x15')]){if(_0x539407[_0xce7f('0x15')][_0xce7f('0x16')]===0x1f4){logger['error'](_0xce7f('0x10'),_0x3b0c0c,_0x539407[_0xce7f('0x15')][_0xce7f('0x17')]);return _0x3dbf67(_0x539407[_0xce7f('0x15')][_0xce7f('0x17')]);}logger['error'](_0xce7f('0x10'),_0x3b0c0c,_0x539407[_0xce7f('0x15')][_0xce7f('0x17')]);return _0x5b44de(_0x539407['error'][_0xce7f('0x17')]);}else{logger[_0xce7f('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x3b0c0c,_0xce7f('0x11'));_0x5b44de(_0x539407[_0xce7f('0x19')]['message']);}})[_0xce7f('0x1a')](function(_0x24c898){logger[_0xce7f('0x15')](_0xce7f('0x10'),_0x3b0c0c,_0x24c898);_0x3dbf67(_0x24c898);});});}
\ No newline at end of file
index c7a34c6..f7f328e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a35=['./chatInternalMessage.events','save','emit','removeListener','register'];(function(_0x45416a,_0x50d3ec){var _0x5c24f3=function(_0x902ad4){while(--_0x902ad4){_0x45416a['push'](_0x45416a['shift']());}};_0x5c24f3(++_0x50d3ec);}(_0x8a35,0x16d));var _0x58a3=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8a35[_0x160c73];return _0xd9302;};'use strict';var ChatInternalMessageEvents=require(_0x58a3('0x0'));var events=[_0x58a3('0x1'),'remove','update'];function createListener(_0x5991ef,_0x2f1174){return function(_0xf73a86){_0x2f1174[_0x58a3('0x2')](_0x5991ef,_0xf73a86);};}function removeListener(_0x5f39fd,_0x550864){return function(){ChatInternalMessageEvents[_0x58a3('0x3')](_0x5f39fd,_0x550864);};}exports[_0x58a3('0x4')]=function(_0x1e380f){for(var _0x3fa849=0x0,_0x2b27e7=events['length'];_0x3fa849<_0x2b27e7;_0x3fa849++){var _0x5839b5=events[_0x3fa849];var _0x57a678=createListener('chatInternalMessage:'+_0x5839b5,_0x1e380f);ChatInternalMessageEvents['on'](_0x5839b5,_0x57a678);}};
\ No newline at end of file
+var _0xbbdf=['save','remove','update','emit','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x56d689,_0x25ce81){var _0x41cdab=function(_0x422385){while(--_0x422385){_0x56d689['push'](_0x56d689['shift']());}};_0x41cdab(++_0x25ce81);}(_0xbbdf,0x182));var _0xfbbd=function(_0x47dcf6,_0x2bd422){_0x47dcf6=_0x47dcf6-0x0;var _0x2dfdc5=_0xbbdf[_0x47dcf6];return _0x2dfdc5;};'use strict';var ChatInternalMessageEvents=require(_0xfbbd('0x0'));var events=[_0xfbbd('0x1'),_0xfbbd('0x2'),_0xfbbd('0x3')];function createListener(_0x39c8fc,_0x47593d){return function(_0x1163ea){_0x47593d[_0xfbbd('0x4')](_0x39c8fc,_0x1163ea);};}function removeListener(_0x1aa045,_0x50f6f9){return function(){ChatInternalMessageEvents[_0xfbbd('0x5')](_0x1aa045,_0x50f6f9);};}exports[_0xfbbd('0x6')]=function(_0x4cdb86){for(var _0x103844=0x0,_0x40559=events[_0xfbbd('0x7')];_0x103844<_0x40559;_0x103844++){var _0x3bc8fb=events[_0x103844];var _0x5cc8b5=createListener(_0xfbbd('0x8')+_0x3bc8fb,_0x4cdb86);ChatInternalMessageEvents['on'](_0x3bc8fb,_0x5cc8b5);}};
\ No newline at end of file
index 80428ef..b4117aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a2e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','/describe','/users','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x4a2e,0x169));var _0xe4a2=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x4a2e[_0x92c450];return _0x2a9599;};'use strict';var multer=require(_0xe4a2('0x0'));var util=require(_0xe4a2('0x1'));var path=require(_0xe4a2('0x2'));var timeout=require(_0xe4a2('0x3'));var express=require(_0xe4a2('0x4'));var router=express[_0xe4a2('0x5')]();var fs_extra=require(_0xe4a2('0x6'));var auth=require(_0xe4a2('0x7'));var interaction=require(_0xe4a2('0x8'));var config=require(_0xe4a2('0x9'));var controller=require(_0xe4a2('0xa'));router[_0xe4a2('0xb')]('/',auth[_0xe4a2('0xc')](),controller['index']);router[_0xe4a2('0xb')](_0xe4a2('0xd'),auth[_0xe4a2('0xc')](),controller['describe']);router[_0xe4a2('0xb')](_0xe4a2('0xe'),auth[_0xe4a2('0xc')](),controller['getUsers']);router[_0xe4a2('0xb')](_0xe4a2('0xf'),auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x10')]);router[_0xe4a2('0x11')]('/',auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x12')]);router['put'](_0xe4a2('0xf'),controller[_0xe4a2('0x13')]);router[_0xe4a2('0x14')](_0xe4a2('0xf'),auth[_0xe4a2('0xc')](),controller[_0xe4a2('0x15')]);module[_0xe4a2('0x16')]=router;
\ No newline at end of file
+var _0x80ec=['./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','getUsers','/:id','show','put','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x455363,_0xe56767){var _0x3358a3=function(_0x163142){while(--_0x163142){_0x455363['push'](_0x455363['shift']());}};_0x3358a3(++_0xe56767);}(_0x80ec,0x14e));var _0xc80e=function(_0x494bf8,_0x18a13d){_0x494bf8=_0x494bf8-0x0;var _0x4617b5=_0x80ec[_0x494bf8];return _0x4617b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc80e('0x0'));var timeout=require(_0xc80e('0x1'));var express=require(_0xc80e('0x2'));var router=express[_0xc80e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc80e('0x4'));var interaction=require(_0xc80e('0x5'));var config=require('../../config/environment');var controller=require(_0xc80e('0x6'));router[_0xc80e('0x7')]('/',auth[_0xc80e('0x8')](),controller[_0xc80e('0x9')]);router[_0xc80e('0x7')](_0xc80e('0xa'),auth['isAuthenticated'](),controller[_0xc80e('0xb')]);router[_0xc80e('0x7')]('/users',auth['isAuthenticated'](),controller[_0xc80e('0xc')]);router[_0xc80e('0x7')](_0xc80e('0xd'),auth[_0xc80e('0x8')](),controller[_0xc80e('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xc80e('0xf')](_0xc80e('0xd'),controller[_0xc80e('0x10')]);router[_0xc80e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc80e('0x12')]);module[_0xc80e('0x13')]=router;
\ No newline at end of file
index 1743c86..11388f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3070=['ENUM','out','TEXT','exports','medium','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3070,0x75));var _0x0307=function(_0x243b9e,_0x3f797a){_0x243b9e=_0x243b9e-0x0;var _0x364cdf=_0x3070[_0x243b9e];return _0x364cdf;};'use strict';var Sequelize=require('sequelize');module[_0x0307('0x0')]={'body':{'type':Sequelize['TEXT'](_0x0307('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x0307('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x0307('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0307('0x3')]('in',_0x0307('0x4')),'defaultValue':_0x0307('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x0307('0x5')]}};
\ No newline at end of file
+var _0x174b=['medium','BOOLEAN','ENUM','out','TEXT','sequelize'];(function(_0x330f24,_0x2b4807){var _0x5d7eea=function(_0xd48813){while(--_0xd48813){_0x330f24['push'](_0x330f24['shift']());}};_0x5d7eea(++_0x2b4807);}(_0x174b,0x19d));var _0xb174=function(_0x162d6e,_0x55b7e6){_0x162d6e=_0x162d6e-0x0;var _0xc0b5f0=_0x174b[_0x162d6e];return _0xc0b5f0;};'use strict';var Sequelize=require(_0xb174('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0xb174('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xb174('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0xb174('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb174('0x3')]('in',_0xb174('0x4')),'defaultValue':_0xb174('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xb174('0x5')]}};
\ No newline at end of file
index 121c31e..5a34c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e79=['../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','end','status','limit','undefined','count','offset','set','json','reject','save','update','destroy','sendStatus','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','catch','create','body','find','describe','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','internal','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x5c8881,_0x5de3bf){var _0x265456=function(_0x7d5dc5){while(--_0x7d5dc5){_0x5c8881['push'](_0x5c8881['shift']());}};_0x265456(++_0x5de3bf);}(_0x3e79,0x189));var _0x93e7=function(_0x559aba,_0x392da1){_0x559aba=_0x559aba-0x0;var _0x4a3380=_0x3e79[_0x559aba];return _0x4a3380;};'use strict';var emlformat=require(_0x93e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x93e7('0x1'));var jsonpatch=require(_0x93e7('0x2'));var rp=require(_0x93e7('0x3'));var moment=require(_0x93e7('0x4'));var BPromise=require(_0x93e7('0x5'));var Mustache=require(_0x93e7('0x6'));var util=require(_0x93e7('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x93e7('0x8'));var fs=require('fs');var fs_extra=require(_0x93e7('0x9'));var _=require(_0x93e7('0xa'));var squel=require(_0x93e7('0xb'));var crypto=require('crypto');var jsforce=require(_0x93e7('0xc'));var deskjs=require(_0x93e7('0xd'));var toCsv=require(_0x93e7('0xe'));var querystring=require(_0x93e7('0xf'));var Papa=require(_0x93e7('0x10'));var Redis=require(_0x93e7('0x11'));var authService=require(_0x93e7('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x93e7('0x13'));var logger=require(_0x93e7('0x14'))(_0x93e7('0x15'));var utils=require(_0x93e7('0x16'));var config=require(_0x93e7('0x17'));var licenseUtil=require(_0x93e7('0x18'));var db=require(_0x93e7('0x19'))['db'];config[_0x93e7('0x1a')]=_[_0x93e7('0x1b')](config[_0x93e7('0x1a')],{'host':_0x93e7('0x1c'),'port':0x18eb});var socket=require(_0x93e7('0x1d'))(new Redis(config['redis']));require(_0x93e7('0x1e'))[_0x93e7('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x93e7('0x20')][_0x93e7('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x93e7('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x199488,_0x1cf5ab,_0x8f2403,_0x120039){return new BPromise(function(_0x242eae,_0xa605b7){var _0x546da9=_0x120039||client;return _0x546da9[_0x93e7('0x22')](_0x199488,_0x8f2403)[_0x93e7('0x23')](function(_0x44a9d7){logger[_0x93e7('0x24')](_0x93e7('0x25'),_0x1cf5ab,_0x93e7('0x26'));logger[_0x93e7('0x27')](_0x93e7('0x28'),_0x1cf5ab,_0x93e7('0x26'),JSON[_0x93e7('0x29')](_0x44a9d7));if(_0x44a9d7[_0x93e7('0x2a')]){if(_0x44a9d7[_0x93e7('0x2a')]['code']===0x1f4){logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x44a9d7[_0x93e7('0x2a')]['message']);return _0xa605b7(_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);}logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);return _0x242eae(_0x44a9d7[_0x93e7('0x2a')][_0x93e7('0x2b')]);}else{logger[_0x93e7('0x24')](_0x93e7('0x25'),_0x1cf5ab,_0x93e7('0x26'));_0x242eae(_0x44a9d7['result']['message']);}})['catch'](function(_0x30cc9f){logger[_0x93e7('0x2a')](_0x93e7('0x25'),_0x1cf5ab,_0x30cc9f);_0xa605b7(_0x30cc9f);});});}function respondWithStatusCode(_0x2c969c,_0x443b12){_0x443b12=_0x443b12||0xcc;return function(_0x19ce03){if(_0x19ce03){return _0x2c969c['sendStatus'](_0x443b12);}return _0x2c969c['status'](_0x443b12)[_0x93e7('0x2c')]();};}function respondWithResult(_0x3e34b5,_0x502499){_0x502499=_0x502499||0xc8;return function(_0x461d50){if(_0x461d50){return _0x3e34b5[_0x93e7('0x2d')](_0x502499)['json'](_0x461d50);}};}function respondWithFilteredResult(_0x5738a9,_0x1ba0e1){return function(_0x27c191){if(_0x27c191){var _0x255ab0=typeof _0x1ba0e1['offset']==='undefined'&&typeof _0x1ba0e1[_0x93e7('0x2e')]===_0x93e7('0x2f');var _0x36d12b=_0x27c191[_0x93e7('0x30')];var _0x37461e=_0x255ab0?0x0:_0x1ba0e1[_0x93e7('0x31')];var _0x438e3d=_0x255ab0?_0x27c191[_0x93e7('0x30')]:_0x1ba0e1[_0x93e7('0x31')]+_0x1ba0e1[_0x93e7('0x2e')];var _0x5364b6;if(_0x438e3d>=_0x36d12b){_0x438e3d=_0x36d12b;_0x5364b6=0xc8;}else{_0x5364b6=0xce;}_0x5738a9[_0x93e7('0x2d')](_0x5364b6);return _0x5738a9[_0x93e7('0x32')]('Content-Range',_0x37461e+'-'+_0x438e3d+'/'+_0x36d12b)[_0x93e7('0x33')](_0x27c191);}return null;};}function patchUpdates(_0x3f00cd){return function(_0x262cbb){try{jsonpatch['apply'](_0x262cbb,_0x3f00cd,!![]);}catch(_0x3fcbb8){return BPromise[_0x93e7('0x34')](_0x3fcbb8);}return _0x262cbb[_0x93e7('0x35')]();};}function saveUpdates(_0x5a3c30,_0x4618b1){return function(_0x17a75e){if(_0x17a75e){return _0x17a75e[_0x93e7('0x36')](_0x5a3c30)[_0x93e7('0x23')](function(_0xfb94b){return _0xfb94b;});}return null;};}function removeEntity(_0x4440cc,_0x2c73b0){return function(_0x52c2f2){if(_0x52c2f2){return _0x52c2f2[_0x93e7('0x37')]()[_0x93e7('0x23')](function(){_0x4440cc['status'](0xcc)[_0x93e7('0x2c')]();});}};}function handleEntityNotFound(_0x453a72,_0x3fb830){return function(_0x1326fd){if(!_0x1326fd){_0x453a72[_0x93e7('0x38')](0x194);}return _0x1326fd;};}function handleError(_0x2be96f,_0x218535){_0x218535=_0x218535||0x1f4;return function(_0x227ffa){logger['error'](_0x227ffa[_0x93e7('0x39')]);if(_0x227ffa[_0x93e7('0x3a')]){delete _0x227ffa[_0x93e7('0x3a')];}_0x2be96f[_0x93e7('0x2d')](_0x218535)[_0x93e7('0x3b')](_0x227ffa);};}exports[_0x93e7('0x3c')]=function(_0x3934fe,_0x6c951c){var _0x28db55={},_0xbf145c={},_0x5c93bc={'count':0x0,'rows':[]};var _0x19d2e0=_[_0x93e7('0x3d')](db[_0x93e7('0x3e')][_0x93e7('0x3f')],function(_0x2b82ca){return{'name':_0x2b82ca[_0x93e7('0x40')],'type':_0x2b82ca[_0x93e7('0x41')][_0x93e7('0x42')]};});_0xbf145c[_0x93e7('0x43')]=_[_0x93e7('0x3d')](_0x19d2e0,'name');_0xbf145c[_0x93e7('0x44')]=_['keys'](_0x3934fe[_0x93e7('0x44')]);_0xbf145c[_0x93e7('0x45')]=_[_0x93e7('0x46')](_0xbf145c[_0x93e7('0x43')],_0xbf145c[_0x93e7('0x44')]);_0x28db55['attributes']=_[_0x93e7('0x46')](_0xbf145c[_0x93e7('0x43')],qs['fields'](_0x3934fe[_0x93e7('0x44')][_0x93e7('0x47')]));_0x28db55[_0x93e7('0x48')]=_0x28db55['attributes'][_0x93e7('0x49')]?_0x28db55[_0x93e7('0x48')]:_0xbf145c[_0x93e7('0x43')];if(!_0x3934fe[_0x93e7('0x44')][_0x93e7('0x4a')](_0x93e7('0x4b'))){_0x28db55['limit']=qs['limit'](_0x3934fe['query']['limit']);_0x28db55[_0x93e7('0x31')]=qs['offset'](_0x3934fe['query']['offset']);}_0x28db55[_0x93e7('0x4c')]=qs['sort'](_0x3934fe['query'][_0x93e7('0x4d')]);_0x28db55[_0x93e7('0x4e')]=qs[_0x93e7('0x45')](_[_0x93e7('0x4f')](_0x3934fe[_0x93e7('0x44')],_0xbf145c[_0x93e7('0x45')]),_0x19d2e0);if(_0x3934fe[_0x93e7('0x44')][_0x93e7('0x50')]){_0x28db55[_0x93e7('0x4e')]=_[_0x93e7('0x51')](_0x28db55[_0x93e7('0x4e')],{'$or':_['map'](_0x19d2e0,function(_0x296110){if(_0x296110[_0x93e7('0x41')]!==_0x93e7('0x52')){var _0x15d75c={};_0x15d75c[_0x296110[_0x93e7('0x3a')]]={'$like':'%'+_0x3934fe[_0x93e7('0x44')][_0x93e7('0x50')]+'%'};return _0x15d75c;}})});}_0x28db55=_[_0x93e7('0x51')]({},_0x28db55,_0x3934fe[_0x93e7('0x53')]);var _0x2dca01={'where':_0x28db55[_0x93e7('0x4e')]};return db[_0x93e7('0x3e')][_0x93e7('0x30')](_0x2dca01)[_0x93e7('0x23')](function(_0x16c5e4){_0x5c93bc[_0x93e7('0x30')]=_0x16c5e4;if(_0x3934fe['query'][_0x93e7('0x54')]){_0x28db55[_0x93e7('0x55')]=[{'all':!![]}];}return db[_0x93e7('0x3e')][_0x93e7('0x56')](_0x28db55);})[_0x93e7('0x23')](function(_0x39acc1){_0x5c93bc[_0x93e7('0x57')]=_0x39acc1;return _0x5c93bc;})['then'](respondWithFilteredResult(_0x6c951c,_0x28db55))['catch'](handleError(_0x6c951c,null));};exports['show']=function(_0x31deb3,_0x120fbf){var _0x54ca96={'raw':!![],'where':{'id':_0x31deb3[_0x93e7('0x58')]['id']}},_0x292a93={};_0x292a93[_0x93e7('0x43')]=_[_0x93e7('0x59')](db[_0x93e7('0x3e')][_0x93e7('0x3f')]);_0x292a93[_0x93e7('0x44')]=_[_0x93e7('0x59')](_0x31deb3[_0x93e7('0x44')]);_0x292a93[_0x93e7('0x45')]=_[_0x93e7('0x46')](_0x292a93[_0x93e7('0x43')],_0x292a93['query']);_0x54ca96[_0x93e7('0x48')]=_[_0x93e7('0x46')](_0x292a93[_0x93e7('0x43')],qs[_0x93e7('0x47')](_0x31deb3['query'][_0x93e7('0x47')]));_0x54ca96[_0x93e7('0x48')]=_0x54ca96[_0x93e7('0x48')]['length']?_0x54ca96[_0x93e7('0x48')]:_0x292a93[_0x93e7('0x43')];if(_0x31deb3[_0x93e7('0x44')]['includeAll']){_0x54ca96[_0x93e7('0x55')]=[{'all':!![]}];}_0x54ca96=_[_0x93e7('0x51')]({},_0x54ca96,_0x31deb3[_0x93e7('0x53')]);return db['ChatMessage']['find'](_0x54ca96)[_0x93e7('0x23')](handleEntityNotFound(_0x120fbf,null))[_0x93e7('0x23')](respondWithResult(_0x120fbf,null))[_0x93e7('0x5a')](handleError(_0x120fbf,null));};exports[_0x93e7('0x5b')]=function(_0x3f2192,_0x4f1212){return db[_0x93e7('0x3e')][_0x93e7('0x5b')](_0x3f2192['body'],{})[_0x93e7('0x23')](respondWithResult(_0x4f1212,0xc9))[_0x93e7('0x5a')](handleError(_0x4f1212,null));};exports[_0x93e7('0x36')]=function(_0x35506a,_0x5993d6){if(_0x35506a['body']['id']){delete _0x35506a[_0x93e7('0x5c')]['id'];}return db['ChatMessage'][_0x93e7('0x5d')]({'where':{'id':_0x35506a[_0x93e7('0x58')]['id']}})[_0x93e7('0x23')](handleEntityNotFound(_0x5993d6,null))['then'](saveUpdates(_0x35506a['body'],null))['then'](respondWithResult(_0x5993d6,null))[_0x93e7('0x5a')](handleError(_0x5993d6,null));};exports[_0x93e7('0x37')]=function(_0x45a177,_0xeb48c9){return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x45a177[_0x93e7('0x58')]['id']}})['then'](handleEntityNotFound(_0xeb48c9,null))[_0x93e7('0x23')](removeEntity(_0xeb48c9,null))[_0x93e7('0x5a')](handleError(_0xeb48c9,null));};exports[_0x93e7('0x5e')]=function(_0x29aab1,_0x293358){return db[_0x93e7('0x3e')][_0x93e7('0x5e')]()[_0x93e7('0x23')](respondWithResult(_0x293358,null))[_0x93e7('0x5a')](handleError(_0x293358,null));};var interaction_log=require(_0x93e7('0x14'))(_0x93e7('0x5f'));exports[_0x93e7('0x60')]=function(_0x159998,_0x299fef,_0x4a5945){var _0x568512={'agent':{},'channel':_0x93e7('0x61')};if(_0x159998[_0x93e7('0x5c')]['id']){delete _0x159998['body']['id'];}_0x159998[_0x93e7('0x5c')][_0x93e7('0x62')]=!![];_0x159998[_0x93e7('0x5c')]['readAt']=moment()[_0x93e7('0x63')](_0x93e7('0x64'));_0x159998['body']['UserId']=_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')]||_0x159998[_0x93e7('0x66')]['id'];_0x568512[_0x93e7('0x67')]['id']=_0x159998['body'][_0x93e7('0x65')];return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x159998[_0x93e7('0x58')]['id'],'UserId':null}})[_0x93e7('0x23')](handleEntityNotFound(_0x299fef,null))['then'](saveUpdates(_0x159998[_0x93e7('0x5c')],null))[_0x93e7('0x23')](function(_0x217f22){if(_0x217f22){_0x568512['message']=_0x217f22[_0x93e7('0x68')]({'plain':!![]});return db[_0x93e7('0x69')]['find']({'where':{'id':_0x217f22[_0x93e7('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0x299fef,null))[_0x93e7('0x23')](function(_0x319f90){if(_0x319f90){return _0x319f90[_0x93e7('0x36')]({'UserId':_0x159998[_0x93e7('0x5c')]['UserId'],'read1stAt':_['isNil'](_0x319f90[_0x93e7('0x6b')])?moment()[_0x93e7('0x63')](_0x93e7('0x64')):undefined});}return null;})[_0x93e7('0x23')](function(_0x39cb9a){if(_0x39cb9a){_0x568512['interaction']=_0x39cb9a[_0x93e7('0x68')]({'plain':!![]});interaction_log[_0x93e7('0x24')](_0x93e7('0x6c'),_0x159998[_0x93e7('0x66')]['id'],_0x159998['user'][_0x93e7('0x3a')],_0x159998[_0x93e7('0x66')][_0x93e7('0x6d')],_0x568512[_0x93e7('0x6e')]['id'],_0x159998[_0x93e7('0x5c')]?JSON[_0x93e7('0x29')](_0x159998[_0x93e7('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage',_0x93e7('0x6f'),_0x568512);}return null;})[_0x93e7('0x23')](function(_0x119621){var _0x2e5218='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x119621[_0x93e7('0x2b')][_0x93e7('0x70')];return db[_0x93e7('0x71')]['query'](_0x2e5218,{'type':db[_0x93e7('0x72')][_0x93e7('0x73')]['SELECT'],'raw':!![]})['then'](function(_0x5af693){return _0x5af693;});})['then'](function(_0x3e6f13){if(_0x3e6f13){_0x568512[_0x93e7('0x2b')][_0x93e7('0x74')]=_0x3e6f13[0x0];if(!_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')])return;return db[_0x93e7('0x75')]['find']({'where':{'id':_0x159998[_0x93e7('0x5c')][_0x93e7('0x65')],'role':_0x93e7('0x67')},'attributes':['id','name',_0x93e7('0x76'),_0x93e7('0x77'),'internal'],'raw':!![]});}return null;})[_0x93e7('0x23')](function(_0x359124){if(!_0x359124)return null;_0x568512[_0x93e7('0x2b')][_0x93e7('0x67')]=_0x359124;return _0x568512;})[_0x93e7('0x23')](function(_0x586787){if(_0x586787){if(_0x159998[_0x93e7('0x5c')][_0x93e7('0x78')]){_0x568512[_0x93e7('0x2b')][_0x93e7('0x79')]=util[_0x93e7('0x63')](_0x93e7('0x7a'),_0x159998['user']['name']);_0x568512['message'][_0x93e7('0x7b')]=_0x568512[_0x93e7('0x7b')];_0x568512[_0x93e7('0x2b')][_0x93e7('0x7c')]=_0x568512[_0x93e7('0x7b')];_0x568512[_0x93e7('0x2b')][_0x93e7('0x7d')]=_0x93e7('0x60');return respondWithRpcPromise(_0x93e7('0x7e'),_0x93e7('0x7e'),{'event':_0x93e7('0x7f'),'message':_[_0x93e7('0x51')](_0x568512['message'],JSON[_0x93e7('0x80')](_0x568512['interaction'][_0x93e7('0x81')]))},client9002)[_0x93e7('0x23')](function(){return _0x568512;});}return _0x568512;}return null;})[_0x93e7('0x23')](respondWithResult(_0x299fef,null))[_0x93e7('0x5a')](handleError(_0x299fef,null));};var interaction_log=require(_0x93e7('0x14'))(_0x93e7('0x5f'));exports['reject']=function(_0x31b7d1,_0xf94e15,_0xab8f0){var _0x581b1b={'agent':{},'channel':_0x93e7('0x61')};if(_0x31b7d1[_0x93e7('0x5c')]['id']){delete _0x31b7d1[_0x93e7('0x5c')]['id'];}_0x31b7d1['body'][_0x93e7('0x65')]=_0x31b7d1['body'][_0x93e7('0x65')]||_0x31b7d1[_0x93e7('0x66')]['id'];_0x581b1b['agent']['id']=_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')];return db[_0x93e7('0x3e')][_0x93e7('0x5d')]({'where':{'id':_0x31b7d1[_0x93e7('0x58')]['id'],'UserId':null}})[_0x93e7('0x23')](handleEntityNotFound(_0xf94e15,null))[_0x93e7('0x23')](function(_0x434a1d){if(_0x434a1d){_0x581b1b[_0x93e7('0x2b')]=_0x434a1d[_0x93e7('0x68')]({'plain':!![]});return db[_0x93e7('0x69')]['find']({'where':{'id':_0x434a1d['ChatInteractionId']}});}return null;})[_0x93e7('0x23')](handleEntityNotFound(_0xf94e15,null))[_0x93e7('0x23')](function(_0x47d7d1){if(_0x47d7d1){_0x581b1b[_0x93e7('0x6e')]=_0x47d7d1[_0x93e7('0x68')]({'plain':!![]});interaction_log['info'](_0x93e7('0x82'),_0x31b7d1['user']['id'],_0x31b7d1['user'][_0x93e7('0x3a')],_0x31b7d1['user']['role'],_0x581b1b[_0x93e7('0x6e')]['id'],_0x31b7d1[_0x93e7('0x5c')]?JSON[_0x93e7('0x29')](_0x31b7d1[_0x93e7('0x5c')]):_0x93e7('0x83'));return respondWithRpcPromise(_0x93e7('0x84'),'rejectMessage',_0x581b1b);}return null;})['then'](function(_0x203241){var _0x5c97f4=_0x93e7('0x85')+_0x203241['message'][_0x93e7('0x70')];return db[_0x93e7('0x71')][_0x93e7('0x44')](_0x5c97f4,{'type':db[_0x93e7('0x72')][_0x93e7('0x73')][_0x93e7('0x86')],'raw':!![]})[_0x93e7('0x23')](function(_0x3106d4){return _0x3106d4;});})[_0x93e7('0x23')](function(_0x303e4d){if(_0x303e4d){_0x581b1b[_0x93e7('0x2b')][_0x93e7('0x74')]=_0x303e4d[0x0];if(!_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')])return;return db[_0x93e7('0x75')][_0x93e7('0x5d')]({'where':{'id':_0x31b7d1[_0x93e7('0x5c')][_0x93e7('0x65')],'role':_0x93e7('0x67')},'attributes':['id','name','fullname',_0x93e7('0x77'),_0x93e7('0x87')],'raw':!![]});}return null;})[_0x93e7('0x23')](function(_0x2752cb){if(!_0x2752cb)return null;_0x581b1b[_0x93e7('0x2b')][_0x93e7('0x67')]=_0x2752cb;return _0x581b1b;})['then'](function(_0x11aa61){if(_0x11aa61){_0x11aa61[_0x93e7('0x2b')]['interface']=util[_0x93e7('0x63')](_0x93e7('0x7a'),_0x31b7d1['user']['name']);_0x11aa61[_0x93e7('0x2b')]['channel']=_0x581b1b[_0x93e7('0x7b')];_0x11aa61[_0x93e7('0x2b')][_0x93e7('0x7c')]=_0x581b1b[_0x93e7('0x7b')];_0x11aa61[_0x93e7('0x2b')][_0x93e7('0x7d')]=_0x93e7('0x34');respondWithRpcPromise(_0x93e7('0x7e'),_0x93e7('0x7e'),{'event':_0x93e7('0x88'),'message':_[_0x93e7('0x51')](_0x581b1b[_0x93e7('0x2b')],JSON[_0x93e7('0x80')](_0x581b1b[_0x93e7('0x6e')][_0x93e7('0x81')]))},client9002);return _0x581b1b;}return null;})['then'](respondWithResult(_0xf94e15,null))[_0x93e7('0x5a')](handleError(_0xf94e15,null));};
\ No newline at end of file
+var _0x5ffa=['model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ChatMessage','includeAll','include','show','find','create','body','params','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','ChatInteraction','isNil','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','Sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','../../config/logger','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','fullname','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/license/util','redis','defaults','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','rawAttributes','fieldName','type','key','map','query','keys','intersection'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x5ffa,0x1d1));var _0xa5ff=function(_0x1a29dc,_0x143007){_0x1a29dc=_0x1a29dc-0x0;var _0x971db0=_0x5ffa[_0x1a29dc];return _0x971db0;};'use strict';var emlformat=require(_0xa5ff('0x0'));var rimraf=require(_0xa5ff('0x1'));var zipdir=require(_0xa5ff('0x2'));var jsonpatch=require(_0xa5ff('0x3'));var rp=require('request-promise');var moment=require(_0xa5ff('0x4'));var BPromise=require(_0xa5ff('0x5'));var Mustache=require('mustache');var util=require(_0xa5ff('0x6'));var path=require(_0xa5ff('0x7'));var sox=require('sox');var csv=require(_0xa5ff('0x8'));var ejs=require(_0xa5ff('0x9'));var fs=require('fs');var fs_extra=require(_0xa5ff('0xa'));var _=require(_0xa5ff('0xb'));var squel=require(_0xa5ff('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa5ff('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa5ff('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa5ff('0xf'));var qs=require(_0xa5ff('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa5ff('0x11'));var logger=require('../../config/logger')(_0xa5ff('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa5ff('0x13'));var db=require('../../mysqldb')['db'];config[_0xa5ff('0x14')]=_[_0xa5ff('0x15')](config[_0xa5ff('0x14')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa5ff('0x14')]));require('./chatMessage.socket')[_0xa5ff('0x16')](socket);var jayson=require(_0xa5ff('0x17'));var client=jayson[_0xa5ff('0x18')][_0xa5ff('0x19')]({'port':0x232c});var client9002=jayson[_0xa5ff('0x18')][_0xa5ff('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x5a3d5f,_0x5d6cbb,_0x5a6b73,_0xd9f421){return new BPromise(function(_0x553dd7,_0xc97fd5){var _0xda7909=_0xd9f421||client;return _0xda7909[_0xa5ff('0x1a')](_0x5a3d5f,_0x5a6b73)[_0xa5ff('0x1b')](function(_0x337c50){logger[_0xa5ff('0x1c')](_0xa5ff('0x1d'),_0x5d6cbb,'request\x20sent');logger[_0xa5ff('0x1e')](_0xa5ff('0x1f'),_0x5d6cbb,_0xa5ff('0x20'),JSON[_0xa5ff('0x21')](_0x337c50));if(_0x337c50[_0xa5ff('0x22')]){if(_0x337c50[_0xa5ff('0x22')][_0xa5ff('0x23')]===0x1f4){logger[_0xa5ff('0x22')](_0xa5ff('0x1d'),_0x5d6cbb,_0x337c50['error'][_0xa5ff('0x24')]);return _0xc97fd5(_0x337c50[_0xa5ff('0x22')]['message']);}logger[_0xa5ff('0x22')]('ChatMessage,\x20%s,\x20%s',_0x5d6cbb,_0x337c50[_0xa5ff('0x22')][_0xa5ff('0x24')]);return _0x553dd7(_0x337c50['error'][_0xa5ff('0x24')]);}else{logger[_0xa5ff('0x1c')](_0xa5ff('0x1d'),_0x5d6cbb,_0xa5ff('0x20'));_0x553dd7(_0x337c50[_0xa5ff('0x25')]['message']);}})[_0xa5ff('0x26')](function(_0x3fa916){logger[_0xa5ff('0x22')](_0xa5ff('0x1d'),_0x5d6cbb,_0x3fa916);_0xc97fd5(_0x3fa916);});});}function respondWithStatusCode(_0x1ec51a,_0x57cacf){_0x57cacf=_0x57cacf||0xcc;return function(_0x5283d5){if(_0x5283d5){return _0x1ec51a['sendStatus'](_0x57cacf);}return _0x1ec51a[_0xa5ff('0x27')](_0x57cacf)['end']();};}function respondWithResult(_0x2fe6a,_0x4ea236){_0x4ea236=_0x4ea236||0xc8;return function(_0x9252ac){if(_0x9252ac){return _0x2fe6a['status'](_0x4ea236)[_0xa5ff('0x28')](_0x9252ac);}};}function respondWithFilteredResult(_0x49e445,_0x39db12){return function(_0x5fe607){if(_0x5fe607){var _0x3843e4=typeof _0x39db12[_0xa5ff('0x29')]==='undefined'&&typeof _0x39db12[_0xa5ff('0x2a')]===_0xa5ff('0x2b');var _0x126e91=_0x5fe607[_0xa5ff('0x2c')];var _0x24a4a6=_0x3843e4?0x0:_0x39db12[_0xa5ff('0x29')];var _0x573c51=_0x3843e4?_0x5fe607[_0xa5ff('0x2c')]:_0x39db12['offset']+_0x39db12[_0xa5ff('0x2a')];var _0x57381c;if(_0x573c51>=_0x126e91){_0x573c51=_0x126e91;_0x57381c=0xc8;}else{_0x57381c=0xce;}_0x49e445['status'](_0x57381c);return _0x49e445[_0xa5ff('0x2d')](_0xa5ff('0x2e'),_0x24a4a6+'-'+_0x573c51+'/'+_0x126e91)['json'](_0x5fe607);}return null;};}function patchUpdates(_0x27d952){return function(_0x465c56){try{jsonpatch[_0xa5ff('0x2f')](_0x465c56,_0x27d952,!![]);}catch(_0x27cf76){return BPromise[_0xa5ff('0x30')](_0x27cf76);}return _0x465c56[_0xa5ff('0x31')]();};}function saveUpdates(_0x5c8992,_0x421429){return function(_0x49f2d7){if(_0x49f2d7){return _0x49f2d7[_0xa5ff('0x32')](_0x5c8992)[_0xa5ff('0x1b')](function(_0x5b4580){return _0x5b4580;});}return null;};}function removeEntity(_0x24e743,_0xe34285){return function(_0x24d3d1){if(_0x24d3d1){return _0x24d3d1[_0xa5ff('0x33')]()[_0xa5ff('0x1b')](function(){_0x24e743[_0xa5ff('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x8db7d8,_0x13b937){return function(_0x332b81){if(!_0x332b81){_0x8db7d8['sendStatus'](0x194);}return _0x332b81;};}function handleError(_0x27b66c,_0x14b5ac){_0x14b5ac=_0x14b5ac||0x1f4;return function(_0x541fe2){logger[_0xa5ff('0x22')](_0x541fe2[_0xa5ff('0x34')]);if(_0x541fe2[_0xa5ff('0x35')]){delete _0x541fe2[_0xa5ff('0x35')];}_0x27b66c[_0xa5ff('0x27')](_0x14b5ac)[_0xa5ff('0x36')](_0x541fe2);};}exports['index']=function(_0x2325c4,_0x3225e8){var _0x58e5e0={},_0x1f6be0={},_0x3e112d={'count':0x0,'rows':[]};var _0x9d0324=_['map'](db['ChatMessage'][_0xa5ff('0x37')],function(_0x39d028){return{'name':_0x39d028[_0xa5ff('0x38')],'type':_0x39d028[_0xa5ff('0x39')][_0xa5ff('0x3a')]};});_0x1f6be0['model']=_[_0xa5ff('0x3b')](_0x9d0324,'name');_0x1f6be0[_0xa5ff('0x3c')]=_[_0xa5ff('0x3d')](_0x2325c4[_0xa5ff('0x3c')]);_0x1f6be0['filters']=_[_0xa5ff('0x3e')](_0x1f6be0[_0xa5ff('0x3f')],_0x1f6be0[_0xa5ff('0x3c')]);_0x58e5e0[_0xa5ff('0x40')]=_[_0xa5ff('0x3e')](_0x1f6be0['model'],qs['fields'](_0x2325c4['query'][_0xa5ff('0x41')]));_0x58e5e0[_0xa5ff('0x40')]=_0x58e5e0[_0xa5ff('0x40')][_0xa5ff('0x42')]?_0x58e5e0[_0xa5ff('0x40')]:_0x1f6be0['model'];if(!_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x43')](_0xa5ff('0x44'))){_0x58e5e0[_0xa5ff('0x2a')]=qs[_0xa5ff('0x2a')](_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x2a')]);_0x58e5e0[_0xa5ff('0x29')]=qs[_0xa5ff('0x29')](_0x2325c4[_0xa5ff('0x3c')]['offset']);}_0x58e5e0[_0xa5ff('0x45')]=qs[_0xa5ff('0x46')](_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x46')]);_0x58e5e0[_0xa5ff('0x47')]=qs[_0xa5ff('0x48')](_[_0xa5ff('0x49')](_0x2325c4[_0xa5ff('0x3c')],_0x1f6be0[_0xa5ff('0x48')]),_0x9d0324);if(_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x4a')]){_0x58e5e0['where']=_[_0xa5ff('0x4b')](_0x58e5e0[_0xa5ff('0x47')],{'$or':_[_0xa5ff('0x3b')](_0x9d0324,function(_0x5d65c8){if(_0x5d65c8['type']!==_0xa5ff('0x4c')){var _0x2d2065={};_0x2d2065[_0x5d65c8[_0xa5ff('0x35')]]={'$like':'%'+_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x4a')]+'%'};return _0x2d2065;}})});}_0x58e5e0=_[_0xa5ff('0x4b')]({},_0x58e5e0,_0x2325c4[_0xa5ff('0x4d')]);var _0x1ace06={'where':_0x58e5e0[_0xa5ff('0x47')]};return db[_0xa5ff('0x4e')][_0xa5ff('0x2c')](_0x1ace06)[_0xa5ff('0x1b')](function(_0x27caff){_0x3e112d['count']=_0x27caff;if(_0x2325c4[_0xa5ff('0x3c')][_0xa5ff('0x4f')]){_0x58e5e0[_0xa5ff('0x50')]=[{'all':!![]}];}return db[_0xa5ff('0x4e')]['findAll'](_0x58e5e0);})[_0xa5ff('0x1b')](function(_0x329859){_0x3e112d['rows']=_0x329859;return _0x3e112d;})[_0xa5ff('0x1b')](respondWithFilteredResult(_0x3225e8,_0x58e5e0))[_0xa5ff('0x26')](handleError(_0x3225e8,null));};exports[_0xa5ff('0x51')]=function(_0x52c270,_0x1e0353){var _0x148a0b={'raw':!![],'where':{'id':_0x52c270['params']['id']}},_0x756c83={};_0x756c83[_0xa5ff('0x3f')]=_[_0xa5ff('0x3d')](db['ChatMessage']['rawAttributes']);_0x756c83[_0xa5ff('0x3c')]=_[_0xa5ff('0x3d')](_0x52c270['query']);_0x756c83[_0xa5ff('0x48')]=_[_0xa5ff('0x3e')](_0x756c83[_0xa5ff('0x3f')],_0x756c83['query']);_0x148a0b[_0xa5ff('0x40')]=_['intersection'](_0x756c83[_0xa5ff('0x3f')],qs[_0xa5ff('0x41')](_0x52c270[_0xa5ff('0x3c')][_0xa5ff('0x41')]));_0x148a0b[_0xa5ff('0x40')]=_0x148a0b[_0xa5ff('0x40')][_0xa5ff('0x42')]?_0x148a0b[_0xa5ff('0x40')]:_0x756c83[_0xa5ff('0x3f')];if(_0x52c270[_0xa5ff('0x3c')]['includeAll']){_0x148a0b[_0xa5ff('0x50')]=[{'all':!![]}];}_0x148a0b=_[_0xa5ff('0x4b')]({},_0x148a0b,_0x52c270[_0xa5ff('0x4d')]);return db[_0xa5ff('0x4e')][_0xa5ff('0x52')](_0x148a0b)[_0xa5ff('0x1b')](handleEntityNotFound(_0x1e0353,null))[_0xa5ff('0x1b')](respondWithResult(_0x1e0353,null))[_0xa5ff('0x26')](handleError(_0x1e0353,null));};exports[_0xa5ff('0x53')]=function(_0x2d67e4,_0x3ed688){return db[_0xa5ff('0x4e')][_0xa5ff('0x53')](_0x2d67e4[_0xa5ff('0x54')],{})['then'](respondWithResult(_0x3ed688,0xc9))[_0xa5ff('0x26')](handleError(_0x3ed688,null));};exports[_0xa5ff('0x32')]=function(_0x24d5cf,_0x3c8747){if(_0x24d5cf[_0xa5ff('0x54')]['id']){delete _0x24d5cf['body']['id'];}return db['ChatMessage'][_0xa5ff('0x52')]({'where':{'id':_0x24d5cf[_0xa5ff('0x55')]['id']}})[_0xa5ff('0x1b')](handleEntityNotFound(_0x3c8747,null))['then'](saveUpdates(_0x24d5cf['body'],null))[_0xa5ff('0x1b')](respondWithResult(_0x3c8747,null))[_0xa5ff('0x26')](handleError(_0x3c8747,null));};exports['destroy']=function(_0x1534cc,_0x3c5f6b){return db[_0xa5ff('0x4e')]['find']({'where':{'id':_0x1534cc[_0xa5ff('0x55')]['id']}})['then'](handleEntityNotFound(_0x3c5f6b,null))[_0xa5ff('0x1b')](removeEntity(_0x3c5f6b,null))[_0xa5ff('0x26')](handleError(_0x3c5f6b,null));};exports['describe']=function(_0x5bf7c2,_0x4433ed){return db[_0xa5ff('0x4e')][_0xa5ff('0x56')]()[_0xa5ff('0x1b')](respondWithResult(_0x4433ed,null))[_0xa5ff('0x26')](handleError(_0x4433ed,null));};var interaction_log=require('../../config/logger')(_0xa5ff('0x57'));exports[_0xa5ff('0x58')]=function(_0x4f6669,_0x41dd1e,_0x2917ca){var _0xdf31ef={'agent':{},'channel':_0xa5ff('0x59')};if(_0x4f6669[_0xa5ff('0x54')]['id']){delete _0x4f6669[_0xa5ff('0x54')]['id'];}_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x5a')]=!![];_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x5b')]=moment()[_0xa5ff('0x5c')](_0xa5ff('0x5d'));_0x4f6669[_0xa5ff('0x54')]['UserId']=_0x4f6669['body']['UserId']||_0x4f6669[_0xa5ff('0x5e')]['id'];_0xdf31ef[_0xa5ff('0x5f')]['id']=_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x60')];return db[_0xa5ff('0x4e')][_0xa5ff('0x52')]({'where':{'id':_0x4f6669['params']['id'],'UserId':null}})[_0xa5ff('0x1b')](handleEntityNotFound(_0x41dd1e,null))[_0xa5ff('0x1b')](saveUpdates(_0x4f6669[_0xa5ff('0x54')],null))[_0xa5ff('0x1b')](function(_0x503c3b){if(_0x503c3b){_0xdf31ef['message']=_0x503c3b['get']({'plain':!![]});return db[_0xa5ff('0x61')]['find']({'where':{'id':_0x503c3b['ChatInteractionId']}});}return null;})[_0xa5ff('0x1b')](handleEntityNotFound(_0x41dd1e,null))[_0xa5ff('0x1b')](function(_0x5c41c1){if(_0x5c41c1){return _0x5c41c1[_0xa5ff('0x32')]({'UserId':_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x60')],'read1stAt':_[_0xa5ff('0x62')](_0x5c41c1['read1stAt'])?moment()['format'](_0xa5ff('0x5d')):undefined});}return null;})[_0xa5ff('0x1b')](function(_0x386eb2){if(_0x386eb2){_0xdf31ef['interaction']=_0x386eb2[_0xa5ff('0x63')]({'plain':!![]});interaction_log[_0xa5ff('0x1c')](_0xa5ff('0x64'),_0x4f6669['user']['id'],_0x4f6669['user'][_0xa5ff('0x35')],_0x4f6669[_0xa5ff('0x5e')][_0xa5ff('0x65')],_0xdf31ef[_0xa5ff('0x66')]['id'],_0x4f6669['body']?JSON['stringify'](_0x4f6669[_0xa5ff('0x54')]):_0xa5ff('0x67'));return respondWithRpcPromise(_0xa5ff('0x68'),_0xa5ff('0x69'),_0xdf31ef);}return null;})[_0xa5ff('0x1b')](function(_0x327e9d){var _0x562b83=_0xa5ff('0x6a')+_0x327e9d[_0xa5ff('0x24')][_0xa5ff('0x6b')];return db[_0xa5ff('0x6c')][_0xa5ff('0x3c')](_0x562b83,{'type':db[_0xa5ff('0x6d')][_0xa5ff('0x6e')][_0xa5ff('0x6f')],'raw':!![]})[_0xa5ff('0x1b')](function(_0x12cec7){return _0x12cec7;});})[_0xa5ff('0x1b')](function(_0x580e63){if(_0x580e63){_0xdf31ef[_0xa5ff('0x24')][_0xa5ff('0x70')]=_0x580e63[0x0];if(!_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x60')])return;return db[_0xa5ff('0x71')][_0xa5ff('0x52')]({'where':{'id':_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x60')],'role':_0xa5ff('0x5f')},'attributes':['id',_0xa5ff('0x35'),'fullname',_0xa5ff('0x72'),_0xa5ff('0x73')],'raw':!![]});}return null;})[_0xa5ff('0x1b')](function(_0x56969d){if(!_0x56969d)return null;_0xdf31ef[_0xa5ff('0x24')][_0xa5ff('0x5f')]=_0x56969d;return _0xdf31ef;})[_0xa5ff('0x1b')](function(_0x20569f){if(_0x20569f){if(_0x4f6669[_0xa5ff('0x54')][_0xa5ff('0x74')]){_0xdf31ef['message'][_0xa5ff('0x75')]=util[_0xa5ff('0x5c')](_0xa5ff('0x76'),_0x4f6669[_0xa5ff('0x5e')]['name']);_0xdf31ef['message'][_0xa5ff('0x77')]=_0xdf31ef['channel'];_0xdf31ef[_0xa5ff('0x24')][_0xa5ff('0x78')]=_0xdf31ef[_0xa5ff('0x77')];_0xdf31ef[_0xa5ff('0x24')][_0xa5ff('0x79')]=_0xa5ff('0x58');return respondWithRpcPromise(_0xa5ff('0x7a'),'EventManager',{'event':_0xa5ff('0x7b'),'message':_[_0xa5ff('0x4b')](_0xdf31ef['message'],JSON[_0xa5ff('0x7c')](_0xdf31ef[_0xa5ff('0x66')][_0xa5ff('0x7d')]))},client9002)['then'](function(){return _0xdf31ef;});}return _0xdf31ef;}return null;})[_0xa5ff('0x1b')](respondWithResult(_0x41dd1e,null))['catch'](handleError(_0x41dd1e,null));};var interaction_log=require(_0xa5ff('0x7e'))(_0xa5ff('0x57'));exports['reject']=function(_0x51aa53,_0x52520f,_0x34f612){var _0x232989={'agent':{},'channel':_0xa5ff('0x59')};if(_0x51aa53[_0xa5ff('0x54')]['id']){delete _0x51aa53['body']['id'];}_0x51aa53['body'][_0xa5ff('0x60')]=_0x51aa53[_0xa5ff('0x54')][_0xa5ff('0x60')]||_0x51aa53[_0xa5ff('0x5e')]['id'];_0x232989[_0xa5ff('0x5f')]['id']=_0x51aa53[_0xa5ff('0x54')][_0xa5ff('0x60')];return db[_0xa5ff('0x4e')][_0xa5ff('0x52')]({'where':{'id':_0x51aa53['params']['id'],'UserId':null}})[_0xa5ff('0x1b')](handleEntityNotFound(_0x52520f,null))['then'](function(_0x37e61d){if(_0x37e61d){_0x232989[_0xa5ff('0x24')]=_0x37e61d[_0xa5ff('0x63')]({'plain':!![]});return db[_0xa5ff('0x61')]['find']({'where':{'id':_0x37e61d['ChatInteractionId']}});}return null;})[_0xa5ff('0x1b')](handleEntityNotFound(_0x52520f,null))[_0xa5ff('0x1b')](function(_0x5d2bdd){if(_0x5d2bdd){_0x232989[_0xa5ff('0x66')]=_0x5d2bdd[_0xa5ff('0x63')]({'plain':!![]});interaction_log['info'](_0xa5ff('0x7f'),_0x51aa53[_0xa5ff('0x5e')]['id'],_0x51aa53[_0xa5ff('0x5e')][_0xa5ff('0x35')],_0x51aa53[_0xa5ff('0x5e')][_0xa5ff('0x65')],_0x232989[_0xa5ff('0x66')]['id'],_0x51aa53['body']?JSON['stringify'](_0x51aa53[_0xa5ff('0x54')]):_0xa5ff('0x67'));return respondWithRpcPromise(_0xa5ff('0x80'),_0xa5ff('0x81'),_0x232989);}return null;})['then'](function(_0x577369){var _0x42b81f=_0xa5ff('0x6a')+_0x577369['message'][_0xa5ff('0x6b')];return db[_0xa5ff('0x6c')][_0xa5ff('0x3c')](_0x42b81f,{'type':db[_0xa5ff('0x6d')][_0xa5ff('0x6e')][_0xa5ff('0x6f')],'raw':!![]})['then'](function(_0x146818){return _0x146818;});})['then'](function(_0x4371b0){if(_0x4371b0){_0x232989[_0xa5ff('0x24')][_0xa5ff('0x70')]=_0x4371b0[0x0];if(!_0x51aa53[_0xa5ff('0x54')]['UserId'])return;return db[_0xa5ff('0x71')]['find']({'where':{'id':_0x51aa53[_0xa5ff('0x54')][_0xa5ff('0x60')],'role':'agent'},'attributes':['id','name',_0xa5ff('0x82'),_0xa5ff('0x72'),_0xa5ff('0x73')],'raw':!![]});}return null;})['then'](function(_0x5e0ba3){if(!_0x5e0ba3)return null;_0x232989['message']['agent']=_0x5e0ba3;return _0x232989;})['then'](function(_0x2c92e8){if(_0x2c92e8){_0x2c92e8[_0xa5ff('0x24')][_0xa5ff('0x75')]=util[_0xa5ff('0x5c')](_0xa5ff('0x76'),_0x51aa53[_0xa5ff('0x5e')]['name']);_0x2c92e8[_0xa5ff('0x24')][_0xa5ff('0x77')]=_0x232989[_0xa5ff('0x77')];_0x2c92e8[_0xa5ff('0x24')][_0xa5ff('0x78')]=_0x232989[_0xa5ff('0x77')];_0x2c92e8[_0xa5ff('0x24')]['event']='reject';respondWithRpcPromise(_0xa5ff('0x7a'),'EventManager',{'event':_0xa5ff('0x83'),'message':_[_0xa5ff('0x4b')](_0x232989['message'],JSON[_0xa5ff('0x7c')](_0x232989['interaction'][_0xa5ff('0x7d')]))},client9002);return _0x232989;}return null;})[_0xa5ff('0x1b')](respondWithResult(_0x52520f,null))[_0xa5ff('0x26')](handleError(_0x52520f,null));};
\ No newline at end of file
index be1cc58..fe6fc7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fe1=['save','remove','emit','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x5907f3,_0xaba2d){var _0x6512a8=function(_0x52eccb){while(--_0x52eccb){_0x5907f3['push'](_0x5907f3['shift']());}};_0x6512a8(++_0xaba2d);}(_0x5fe1,0x16d));var _0x15fe=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x5fe1[_0x2faddb];return _0x273c05;};'use strict';var EventEmitter=require(_0x15fe('0x0'));var ChatMessage=require(_0x15fe('0x1'))['db'][_0x15fe('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x15fe('0x3'),'afterUpdate':'update','afterDestroy':_0x15fe('0x4')};function emitEvent(_0x63ff21){return function(_0x255767,_0x2da296,_0xb72be2){ChatMessageEvents[_0x15fe('0x5')](_0x63ff21+':'+_0x255767['id'],_0x255767);ChatMessageEvents['emit'](_0x63ff21,_0x255767);_0xb72be2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x15fe('0x6')](e,emitEvent(event));}}module[_0x15fe('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0xc6e8=['ChatMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0xd1d6c5,_0x339700){var _0x525989=function(_0x40e3b0){while(--_0x40e3b0){_0xd1d6c5['push'](_0xd1d6c5['shift']());}};_0x525989(++_0x339700);}(_0xc6e8,0x18f));var _0x8c6e=function(_0x3559ef,_0x416f61){_0x3559ef=_0x3559ef-0x0;var _0x45a102=_0xc6e8[_0x3559ef];return _0x45a102;};'use strict';var EventEmitter=require(_0x8c6e('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x8c6e('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x8c6e('0x2')](0x0);var events={'afterCreate':_0x8c6e('0x3'),'afterUpdate':_0x8c6e('0x4'),'afterDestroy':_0x8c6e('0x5')};function emitEvent(_0x2ba918){return function(_0x275a03,_0x235d35,_0x2a5153){ChatMessageEvents[_0x8c6e('0x6')](_0x2ba918+':'+_0x275a03['id'],_0x275a03);ChatMessageEvents[_0x8c6e('0x6')](_0x2ba918,_0x275a03);_0x2a5153(null);};}for(var e in events){if(events[_0x8c6e('0x7')](e)){var event=events[e];ChatMessage[_0x8c6e('0x8')](e,emitEvent(event));}}module[_0x8c6e('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 8e9ea48..d4459c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb64a=['./chatMessage.attributes','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','api','request-promise','path','rimraf'];(function(_0x34d918,_0x1478d5){var _0x44933d=function(_0x5c3d85){while(--_0x5c3d85){_0x34d918['push'](_0x34d918['shift']());}};_0x44933d(++_0x1478d5);}(_0xb64a,0x6d));var _0xab64=function(_0x4ddf99,_0x63ecf5){_0x4ddf99=_0x4ddf99-0x0;var _0x3eb645=_0xb64a[_0x4ddf99];return _0x3eb645;};'use strict';var _=require(_0xab64('0x0'));var util=require(_0xab64('0x1'));var logger=require(_0xab64('0x2'))(_0xab64('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xab64('0x4'));var fs=require('fs');var path=require(_0xab64('0x5'));var rimraf=require(_0xab64('0x6'));var config=require('../../config/environment');var attributes=require(_0xab64('0x7'));module['exports']=function(_0x4e5e2f,_0xe34e56){return _0x4e5e2f[_0xab64('0x8')](_0xab64('0x9'),attributes,{'tableName':_0xab64('0xa'),'paranoid':![],'indexes':[{'name':_0xab64('0xb'),'fields':[_0xab64('0xc')],'type':_0xab64('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2c9362,_0x1410b7,_0x12930f){var _0x2c3e9d=_0x4e5e2f['models'];var _0x2b57b0=_0x2c9362[_0xab64('0xe')]({'plain':!![]});if(_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()==='in'||_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()===_0xab64('0x11')&&!_0x2b57b0['secret']&&!_[_0xab64('0x12')](_0x2b57b0[_0xab64('0x13')])){_0x2c3e9d[_0xab64('0x14')][_0xab64('0x15')]({'where':{'id':_0x2b57b0[_0xab64('0x16')]}})[_0xab64('0x17')](function(_0x45e7df){if(_0x45e7df){_0x45e7df[_0xab64('0x18')]({'lastMsgAt':_0x2b57b0[_0xab64('0x19')],'lastMsgDirection':_0x2b57b0[_0xab64('0xf')][_0xab64('0x10')]()});}})[_0xab64('0x1a')](function(_0x36f150){console[_0xab64('0x1b')](_0x36f150);});}_0x12930f();}},'charset':_0xab64('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x0afd=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','ChatMessage','chat_messages','fti_chat_messages','body','models','get','toLowerCase','out','secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','update','catch','error','utf8mb4'];(function(_0x51c202,_0x266600){var _0x627618=function(_0x4a8529){while(--_0x4a8529){_0x51c202['push'](_0x51c202['shift']());}};_0x627618(++_0x266600);}(_0x0afd,0x1a5));var _0xd0af=function(_0x23855f,_0x95aaa1){_0x23855f=_0x23855f-0x0;var _0x1de384=_0x0afd[_0x23855f];return _0x1de384;};'use strict';var _=require(_0xd0af('0x0'));var util=require(_0xd0af('0x1'));var logger=require(_0xd0af('0x2'))(_0xd0af('0x3'));var moment=require(_0xd0af('0x4'));var BPromise=require(_0xd0af('0x5'));var rp=require(_0xd0af('0x6'));var fs=require('fs');var path=require(_0xd0af('0x7'));var rimraf=require(_0xd0af('0x8'));var config=require(_0xd0af('0x9'));var attributes=require(_0xd0af('0xa'));module['exports']=function(_0xf6fae4,_0x4cfb99){return _0xf6fae4['define'](_0xd0af('0xb'),attributes,{'tableName':_0xd0af('0xc'),'paranoid':![],'indexes':[{'name':_0xd0af('0xd'),'fields':[_0xd0af('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x284c1f,_0x2f731d,_0x198b29){var _0x1cdbc1=_0xf6fae4[_0xd0af('0xf')];var _0x5e71d0=_0x284c1f[_0xd0af('0x10')]({'plain':!![]});if(_0x5e71d0['direction']['toLowerCase']()==='in'||_0x5e71d0['direction'][_0xd0af('0x11')]()===_0xd0af('0x12')&&!_0x5e71d0[_0xd0af('0x13')]&&!_[_0xd0af('0x14')](_0x5e71d0['UserId'])){_0x1cdbc1[_0xd0af('0x15')][_0xd0af('0x16')]({'where':{'id':_0x5e71d0[_0xd0af('0x17')]}})[_0xd0af('0x18')](function(_0x18b36a){if(_0x18b36a){_0x18b36a[_0xd0af('0x19')]({'lastMsgAt':_0x5e71d0['createdAt'],'lastMsgDirection':_0x5e71d0['direction']['toLowerCase']()});}})[_0xd0af('0x1a')](function(_0x6e88c2){console[_0xd0af('0x1b')](_0x6e88c2);});}_0x198b29();}},'charset':_0xd0af('0x1c'),'collate':_0xd0af('0x1d')});};
\ No newline at end of file
index d3c72ba..1b49734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99f3=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','CreateChatMessage','ChatMessage','create','options','raw','util','moment','bluebird'];(function(_0x4656c9,_0x4c690f){var _0x3e71cc=function(_0x12d183){while(--_0x12d183){_0x4656c9['push'](_0x4656c9['shift']());}};_0x3e71cc(++_0x4c690f);}(_0x99f3,0xbd));var _0x399f=function(_0x1aab89,_0x40e92d){_0x1aab89=_0x1aab89-0x0;var _0x192afe=_0x99f3[_0x1aab89];return _0x192afe;};'use strict';var _=require('lodash');var util=require(_0x399f('0x0'));var moment=require(_0x399f('0x1'));var BPromise=require(_0x399f('0x2'));var rs=require(_0x399f('0x3'));var fs=require('fs');var Redis=require(_0x399f('0x4'));var db=require(_0x399f('0x5'))['db'];var utils=require(_0x399f('0x6'));var logger=require(_0x399f('0x7'))(_0x399f('0x8'));var config=require('../../config/environment');var jayson=require(_0x399f('0x9'));var client=jayson[_0x399f('0xa')][_0x399f('0xb')]({'port':0x232a});config[_0x399f('0xc')]=_['defaults'](config[_0x399f('0xc')],{'host':_0x399f('0xd'),'port':0x18eb});var socket=require(_0x399f('0xe'))(new Redis(config[_0x399f('0xc')]));require(_0x399f('0xf'))[_0x399f('0x10')](socket);function respondWithRpcPromise(_0x572e16,_0x5ca12c,_0xf99495){return new BPromise(function(_0x3be85d,_0x120a0a){return client[_0x399f('0x11')](_0x572e16,_0xf99495)[_0x399f('0x12')](function(_0x68931c){logger[_0x399f('0x13')](_0x399f('0x14'),_0x5ca12c,_0x399f('0x15'));logger[_0x399f('0x16')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x5ca12c,_0x399f('0x15'),JSON[_0x399f('0x17')](_0x68931c));if(_0x68931c['error']){if(_0x68931c[_0x399f('0x18')]['code']===0x1f4){logger['error'](_0x399f('0x14'),_0x5ca12c,_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);return _0x120a0a(_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);}logger['error'](_0x399f('0x14'),_0x5ca12c,_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);return _0x3be85d(_0x68931c[_0x399f('0x18')][_0x399f('0x19')]);}else{logger[_0x399f('0x13')]('ChatMessage,\x20%s,\x20%s',_0x5ca12c,_0x399f('0x15'));_0x3be85d(_0x68931c['result']['message']);}})[_0x399f('0x1a')](function(_0x44e446){logger[_0x399f('0x18')](_0x399f('0x14'),_0x5ca12c,_0x44e446);_0x120a0a(_0x44e446);});});}exports[_0x399f('0x1b')]=function(_0x1fc0f5){var _0x3c8b77=this;return new Promise(function(_0x523d4c,_0x50c537){return db[_0x399f('0x1c')][_0x399f('0x1d')](_0x1fc0f5['body'],{'raw':_0x1fc0f5[_0x399f('0x1e')]?_0x1fc0f5[_0x399f('0x1e')][_0x399f('0x1f')]===undefined?!![]:![]:!![]})[_0x399f('0x12')](function(_0x5e8b5f){logger[_0x399f('0x13')]('CreateChatMessage',_0x1fc0f5);logger[_0x399f('0x16')]('CreateChatMessage',_0x1fc0f5,JSON[_0x399f('0x17')](_0x5e8b5f));_0x523d4c(_0x5e8b5f);})[_0x399f('0x1a')](function(_0x5d9139){logger[_0x399f('0x18')](_0x399f('0x1b'),_0x5d9139[_0x399f('0x19')],_0x1fc0f5);_0x50c537(_0x3c8b77[_0x399f('0x18')](0x1f4,_0x5d9139[_0x399f('0x19')]));});});};
\ No newline at end of file
+var _0x7241=['jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateChatMessage','ChatMessage','create','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x20c093,_0x4fb567){var _0x8b1329=function(_0x5ed000){while(--_0x5ed000){_0x20c093['push'](_0x20c093['shift']());}};_0x8b1329(++_0x4fb567);}(_0x7241,0x1d4));var _0x1724=function(_0x409353,_0xe9f04d){_0x409353=_0x409353-0x0;var _0x4f4b59=_0x7241[_0x409353];return _0x4f4b59;};'use strict';var _=require('lodash');var util=require(_0x1724('0x0'));var moment=require(_0x1724('0x1'));var BPromise=require(_0x1724('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1724('0x3'));var db=require(_0x1724('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1724('0x5'))(_0x1724('0x6'));var config=require(_0x1724('0x7'));var jayson=require(_0x1724('0x8'));var client=jayson[_0x1724('0x9')][_0x1724('0xa')]({'port':0x232a});config['redis']=_[_0x1724('0xb')](config[_0x1724('0xc')],{'host':_0x1724('0xd'),'port':0x18eb});var socket=require(_0x1724('0xe'))(new Redis(config[_0x1724('0xc')]));require(_0x1724('0xf'))[_0x1724('0x10')](socket);function respondWithRpcPromise(_0x28d70d,_0x348248,_0x343874){return new BPromise(function(_0x40317c,_0x3a78ea){return client[_0x1724('0x11')](_0x28d70d,_0x343874)[_0x1724('0x12')](function(_0x53225a){logger[_0x1724('0x13')](_0x1724('0x14'),_0x348248,_0x1724('0x15'));logger[_0x1724('0x16')](_0x1724('0x17'),_0x348248,_0x1724('0x15'),JSON['stringify'](_0x53225a));if(_0x53225a[_0x1724('0x18')]){if(_0x53225a['error'][_0x1724('0x19')]===0x1f4){logger[_0x1724('0x18')](_0x1724('0x14'),_0x348248,_0x53225a[_0x1724('0x18')][_0x1724('0x1a')]);return _0x3a78ea(_0x53225a['error'][_0x1724('0x1a')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x348248,_0x53225a[_0x1724('0x18')][_0x1724('0x1a')]);return _0x40317c(_0x53225a[_0x1724('0x18')][_0x1724('0x1a')]);}else{logger[_0x1724('0x13')](_0x1724('0x14'),_0x348248,_0x1724('0x15'));_0x40317c(_0x53225a[_0x1724('0x1b')][_0x1724('0x1a')]);}})[_0x1724('0x1c')](function(_0x314e90){logger[_0x1724('0x18')](_0x1724('0x14'),_0x348248,_0x314e90);_0x3a78ea(_0x314e90);});});}exports[_0x1724('0x1d')]=function(_0x2f3e1b){var _0x12fe03=this;return new Promise(function(_0x59773d,_0x3ea0b3){return db[_0x1724('0x1e')][_0x1724('0x1f')](_0x2f3e1b['body'],{'raw':_0x2f3e1b[_0x1724('0x20')]?_0x2f3e1b[_0x1724('0x20')][_0x1724('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0xe95b4f){logger[_0x1724('0x13')](_0x1724('0x1d'),_0x2f3e1b);logger[_0x1724('0x16')]('CreateChatMessage',_0x2f3e1b,JSON['stringify'](_0xe95b4f));_0x59773d(_0xe95b4f);})['catch'](function(_0x29c7a7){logger[_0x1724('0x18')]('CreateChatMessage',_0x29c7a7[_0x1724('0x1a')],_0x2f3e1b);_0x3ea0b3(_0x12fe03[_0x1724('0x18')](0x1f4,_0x29c7a7[_0x1724('0x1a')]));});});};
\ No newline at end of file
index 760af80..f76646e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['update','removeListener','register','length','chatMessage:','./chatMessage.events'];(function(_0x3c3eb7,_0x55343d){var _0x108733=function(_0x5bd6f6){while(--_0x5bd6f6){_0x3c3eb7['push'](_0x3c3eb7['shift']());}};_0x108733(++_0x55343d);}(_0x44e8,0xd7));var _0x844e=function(_0x34be5a,_0x4d8fd5){_0x34be5a=_0x34be5a-0x0;var _0x171608=_0x44e8[_0x34be5a];return _0x171608;};'use strict';var ChatMessageEvents=require(_0x844e('0x0'));var events=['save','remove',_0x844e('0x1')];function createListener(_0x21307e,_0x2afcef){return function(_0x164ecc){_0x2afcef['emit'](_0x21307e,_0x164ecc);};}function removeListener(_0x3a8b3c,_0x167368){return function(){ChatMessageEvents[_0x844e('0x2')](_0x3a8b3c,_0x167368);};}exports[_0x844e('0x3')]=function(_0x5c8f67){for(var _0x2f6539=0x0,_0x238796=events[_0x844e('0x4')];_0x2f6539<_0x238796;_0x2f6539++){var _0x11cbd6=events[_0x2f6539];var _0x571b91=createListener(_0x844e('0x5')+_0x11cbd6,_0x5c8f67);ChatMessageEvents['on'](_0x11cbd6,_0x571b91);}};
\ No newline at end of file
+var _0x44e8=['update','removeListener','register','length','chatMessage:','./chatMessage.events'];(function(_0x5f3e72,_0x3ff8e0){var _0x4bc542=function(_0x55091c){while(--_0x55091c){_0x5f3e72['push'](_0x5f3e72['shift']());}};_0x4bc542(++_0x3ff8e0);}(_0x44e8,0xd7));var _0x844e=function(_0x4403cb,_0x4e7678){_0x4403cb=_0x4403cb-0x0;var _0x2b8456=_0x44e8[_0x4403cb];return _0x2b8456;};'use strict';var ChatMessageEvents=require(_0x844e('0x0'));var events=['save','remove',_0x844e('0x1')];function createListener(_0x21307e,_0x2afcef){return function(_0x164ecc){_0x2afcef['emit'](_0x21307e,_0x164ecc);};}function removeListener(_0x3a8b3c,_0x167368){return function(){ChatMessageEvents[_0x844e('0x2')](_0x3a8b3c,_0x167368);};}exports[_0x844e('0x3')]=function(_0x5c8f67){for(var _0x2f6539=0x0,_0x238796=events[_0x844e('0x4')];_0x2f6539<_0x238796;_0x2f6539++){var _0x11cbd6=events[_0x2f6539];var _0x571b91=createListener(_0x844e('0x5')+_0x11cbd6,_0x5c8f67);ChatMessageEvents['on'](_0x11cbd6,_0x571b91);}};
\ No newline at end of file
index ceb9971..10cb403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcce9=['connect-timeout','Router','fs-extra','./chatMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','chat','chatmessage:create','create','accept','put','/:id/reject','reject','delete','exports','util','path'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xcce9,0x166));var _0x9cce=function(_0x2bdf36,_0xbe2d9a){_0x2bdf36=_0x2bdf36-0x0;var _0x3e6c85=_0xcce9[_0x2bdf36];return _0x3e6c85;};'use strict';var multer=require('multer');var util=require(_0x9cce('0x0'));var path=require(_0x9cce('0x1'));var timeout=require(_0x9cce('0x2'));var express=require('express');var router=express[_0x9cce('0x3')]();var fs_extra=require(_0x9cce('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9cce('0x5'));router['get']('/',auth[_0x9cce('0x6')](),controller[_0x9cce('0x7')]);router[_0x9cce('0x8')](_0x9cce('0x9'),auth[_0x9cce('0x6')](),controller[_0x9cce('0xa')]);router[_0x9cce('0x8')](_0x9cce('0xb'),auth[_0x9cce('0x6')](),controller[_0x9cce('0xc')]);router[_0x9cce('0xd')]('/',auth[_0x9cce('0x6')](),interaction[_0x9cce('0xe')](_0x9cce('0xf'),_0x9cce('0x10')),controller[_0x9cce('0x11')]);router['put'](_0x9cce('0xb'),controller['update']);router['put']('/:id/accept',auth[_0x9cce('0x6')](),controller[_0x9cce('0x12')]);router[_0x9cce('0x13')](_0x9cce('0x14'),auth[_0x9cce('0x6')](),controller[_0x9cce('0x15')]);router[_0x9cce('0x16')](_0x9cce('0xb'),auth[_0x9cce('0x6')](),controller['destroy']);module[_0x9cce('0x17')]=router;
\ No newline at end of file
+var _0x60b8=['isAuthenticated','index','/describe','describe','/:id','show','post','chat','chatmessage:create','create','put','update','accept','/:id/reject','reject','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0xe8006b,_0x5b3d09){var _0x1213b7=function(_0x575ed9){while(--_0x575ed9){_0xe8006b['push'](_0xe8006b['shift']());}};_0x1213b7(++_0x5b3d09);}(_0x60b8,0xf2));var _0x860b=function(_0x39874d,_0x3dd783){_0x39874d=_0x39874d-0x0;var _0x47ebdc=_0x60b8[_0x39874d];return _0x47ebdc;};'use strict';var multer=require(_0x860b('0x0'));var util=require(_0x860b('0x1'));var path=require(_0x860b('0x2'));var timeout=require('connect-timeout');var express=require(_0x860b('0x3'));var router=express['Router']();var fs_extra=require(_0x860b('0x4'));var auth=require(_0x860b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x860b('0x6'));var controller=require('./chatMessage.controller');router[_0x860b('0x7')]('/',auth[_0x860b('0x8')](),controller[_0x860b('0x9')]);router[_0x860b('0x7')](_0x860b('0xa'),auth[_0x860b('0x8')](),controller[_0x860b('0xb')]);router[_0x860b('0x7')](_0x860b('0xc'),auth[_0x860b('0x8')](),controller[_0x860b('0xd')]);router[_0x860b('0xe')]('/',auth[_0x860b('0x8')](),interaction['tracked'](_0x860b('0xf'),_0x860b('0x10')),controller[_0x860b('0x11')]);router[_0x860b('0x12')](_0x860b('0xc'),controller[_0x860b('0x13')]);router[_0x860b('0x12')]('/:id/accept',auth[_0x860b('0x8')](),controller[_0x860b('0x14')]);router[_0x860b('0x12')](_0x860b('0x15'),auth['isAuthenticated'](),controller[_0x860b('0x16')]);router['delete'](_0x860b('0xc'),auth[_0x860b('0x8')](),controller[_0x860b('0x17')]);module[_0x860b('0x18')]=router;
\ No newline at end of file
index 81160e8..3377be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['medium','exports','TEXT'];(function(_0x3a9468,_0x2b6266){var _0x1d2345=function(_0x499728){while(--_0x499728){_0x3a9468['push'](_0x3a9468['shift']());}};_0x1d2345(++_0x2b6266);}(_0x2032,0xd9));var _0x2203=function(_0x54f35f,_0x2f7bd1){_0x54f35f=_0x54f35f-0x0;var _0x3bf00c=_0x2032[_0x54f35f];return _0x3bf00c;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'body':{'type':Sequelize[_0x2203('0x1')](_0x2203('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x2203('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x5a1e2d,_0x19a878){var _0x1152c7=function(_0x4188c4){while(--_0x4188c4){_0x5a1e2d['push'](_0x5a1e2d['shift']());}};_0x1152c7(++_0x19a878);}(_0xdb28,0x106));var _0x8db2=function(_0x5e8c7d,_0x3db976){_0x5e8c7d=_0x5e8c7d-0x0;var _0x258509=_0xdb28[_0x5e8c7d];return _0x258509;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index ce9c6e0..10e3f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x5a4fe9,_0x75770e){var _0x3b7e95=function(_0x3e338b){while(--_0x3e338b){_0x5a4fe9['push'](_0x5a4fe9['shift']());}};_0x3b7e95(++_0x75770e);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _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(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x7a54,0x106));var _0x47a5=function(_0x5db894,_0x342822){_0x5db894=_0x5db894-0x0;var _0x459f98=_0x7a54[_0x5db894];return _0x459f98;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 61ac6f1..4223f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd4a=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xbd4a,0xbf));var _0xabd4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xbd4a[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0xabd4('0x0'));var ChatOfflineMessage=require(_0xabd4('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xabd4('0x2')](0x0);var events={'afterCreate':_0xabd4('0x3'),'afterUpdate':_0xabd4('0x4'),'afterDestroy':_0xabd4('0x5')};function emitEvent(_0x10289f){return function(_0x5624b0,_0xb4b882,_0x2096e1){ChatOfflineMessageEvents[_0xabd4('0x6')](_0x10289f+':'+_0x5624b0['id'],_0x5624b0);ChatOfflineMessageEvents['emit'](_0x10289f,_0x5624b0);_0x2096e1(null);};}for(var e in events){if(events[_0xabd4('0x7')](e)){var event=events[e];ChatOfflineMessage[_0xabd4('0x8')](e,emitEvent(event));}}module[_0xabd4('0x9')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x14ed=['hasOwnProperty','exports','events','../../mysqldb','ChatOfflineMessage','setMaxListeners','save','update','emit'];(function(_0x4d1bef,_0x436dc9){var _0x11fa16=function(_0x2df32c){while(--_0x2df32c){_0x4d1bef['push'](_0x4d1bef['shift']());}};_0x11fa16(++_0x436dc9);}(_0x14ed,0x65));var _0xd14e=function(_0x4da7db,_0x365411){_0x4da7db=_0x4da7db-0x0;var _0x54f53d=_0x14ed[_0x4da7db];return _0x54f53d;};'use strict';var EventEmitter=require(_0xd14e('0x0'));var ChatOfflineMessage=require(_0xd14e('0x1'))['db'][_0xd14e('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xd14e('0x3')](0x0);var events={'afterCreate':_0xd14e('0x4'),'afterUpdate':_0xd14e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x7a932f){return function(_0x5a61b7,_0x4c4b63,_0x576897){ChatOfflineMessageEvents[_0xd14e('0x6')](_0x7a932f+':'+_0x5a61b7['id'],_0x5a61b7);ChatOfflineMessageEvents[_0xd14e('0x6')](_0x7a932f,_0x5a61b7);_0x576897(null);};}for(var e in events){if(events[_0xd14e('0x7')](e)){var event=events[e];ChatOfflineMessage['hook'](e,emitEvent(event));}}module[_0xd14e('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 9db58ba..7929be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf92f=['exports','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes'];(function(_0x14476b,_0xd1a7a4){var _0x24e2e8=function(_0x52ed26){while(--_0x52ed26){_0x14476b['push'](_0x14476b['shift']());}};_0x24e2e8(++_0xd1a7a4);}(_0xf92f,0x113));var _0xff92=function(_0xeae8b8,_0x565a3c){_0xeae8b8=_0xeae8b8-0x0;var _0x440e11=_0xf92f[_0xeae8b8];return _0x440e11;};'use strict';var attributes=require(_0xff92('0x0'));module[_0xff92('0x1')]=function(_0x1192e3){return _0x1192e3[_0xff92('0x2')](_0xff92('0x3'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xff92('0x4'),'collate':_0xff92('0x5')});};
\ No newline at end of file
+var _0x33b3=['define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports'];(function(_0x5f29f0,_0x547e35){var _0x577cad=function(_0x704f1e){while(--_0x704f1e){_0x5f29f0['push'](_0x5f29f0['shift']());}};_0x577cad(++_0x547e35);}(_0x33b3,0x1b7));var _0x333b=function(_0x4f8f71,_0x34b177){_0x4f8f71=_0x4f8f71-0x0;var _0xb58ab3=_0x33b3[_0x4f8f71];return _0xb58ab3;};'use strict';var attributes=require(_0x333b('0x0'));module[_0x333b('0x1')]=function(_0x215fda){return _0x215fda[_0x333b('0x2')](_0x333b('0x3'),attributes,{'tableName':_0x333b('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x333b('0x5'),'collate':_0x333b('0x6')});};
\ No newline at end of file
index d6b4c17..bd71665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223c=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x46b3c2,_0x141c53){var _0x3f4d7c=function(_0x2c05a8){while(--_0x2c05a8){_0x46b3c2['push'](_0x46b3c2['shift']());}};_0x3f4d7c(++_0x141c53);}(_0x223c,0x1c9));var _0xc223=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x223c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc223('0x0'));var util=require('util');var moment=require(_0xc223('0x1'));var BPromise=require(_0xc223('0x2'));var rs=require(_0xc223('0x3'));var fs=require('fs');var Redis=require(_0xc223('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc223('0x5'));var logger=require(_0xc223('0x6'))(_0xc223('0x7'));var config=require(_0xc223('0x8'));var jayson=require(_0xc223('0x9'));var client=jayson[_0xc223('0xa')][_0xc223('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b13e2,_0x45c2b1,_0x4871c5){return new BPromise(function(_0x422dbe,_0x473f34){return client['request'](_0x4b13e2,_0x4871c5)[_0xc223('0xc')](function(_0x107a5f){logger[_0xc223('0xd')](_0xc223('0xe'),_0x45c2b1,'request\x20sent');logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x45c2b1,_0xc223('0xf'),JSON['stringify'](_0x107a5f));if(_0x107a5f['error']){if(_0x107a5f[_0xc223('0x10')][_0xc223('0x11')]===0x1f4){logger['error'](_0xc223('0xe'),_0x45c2b1,_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);return _0x473f34(_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);}logger[_0xc223('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x45c2b1,_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);return _0x422dbe(_0x107a5f[_0xc223('0x10')][_0xc223('0x12')]);}else{logger['info']('ChatOfflineMessage,\x20%s,\x20%s',_0x45c2b1,_0xc223('0xf'));_0x422dbe(_0x107a5f[_0xc223('0x13')][_0xc223('0x12')]);}})[_0xc223('0x14')](function(_0x34b00e){logger[_0xc223('0x10')](_0xc223('0xe'),_0x45c2b1,_0x34b00e);_0x473f34(_0x34b00e);});});}
\ No newline at end of file
+var _0xd7be=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird'];(function(_0x421e8b,_0x45ef69){var _0x183b66=function(_0xe4954c){while(--_0xe4954c){_0x421e8b['push'](_0x421e8b['shift']());}};_0x183b66(++_0x45ef69);}(_0xd7be,0x128));var _0xed7b=function(_0x2ed674,_0x1d6c29){_0x2ed674=_0x2ed674-0x0;var _0x2c9221=_0xd7be[_0x2ed674];return _0x2c9221;};'use strict';var _=require(_0xed7b('0x0'));var util=require('util');var moment=require(_0xed7b('0x1'));var BPromise=require(_0xed7b('0x2'));var rs=require(_0xed7b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed7b('0x4'))['db'];var utils=require(_0xed7b('0x5'));var logger=require('../../config/logger')(_0xed7b('0x6'));var config=require(_0xed7b('0x7'));var jayson=require(_0xed7b('0x8'));var client=jayson[_0xed7b('0x9')][_0xed7b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37d903,_0xce3787,_0x4cdd84){return new BPromise(function(_0x5cf2df,_0x2a70a8){return client[_0xed7b('0xb')](_0x37d903,_0x4cdd84)[_0xed7b('0xc')](function(_0x4f50e3){logger[_0xed7b('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0xce3787,_0xed7b('0xe'));logger[_0xed7b('0xf')](_0xed7b('0x10'),_0xce3787,_0xed7b('0xe'),JSON['stringify'](_0x4f50e3));if(_0x4f50e3[_0xed7b('0x11')]){if(_0x4f50e3[_0xed7b('0x11')][_0xed7b('0x12')]===0x1f4){logger[_0xed7b('0x11')](_0xed7b('0x13'),_0xce3787,_0x4f50e3['error'][_0xed7b('0x14')]);return _0x2a70a8(_0x4f50e3['error'][_0xed7b('0x14')]);}logger[_0xed7b('0x11')](_0xed7b('0x13'),_0xce3787,_0x4f50e3['error'][_0xed7b('0x14')]);return _0x5cf2df(_0x4f50e3['error'][_0xed7b('0x14')]);}else{logger[_0xed7b('0xd')](_0xed7b('0x13'),_0xce3787,'request\x20sent');_0x5cf2df(_0x4f50e3[_0xed7b('0x15')][_0xed7b('0x14')]);}})[_0xed7b('0x16')](function(_0x38d441){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0xce3787,_0x38d441);_0x2a70a8(_0x38d441);});});}
\ No newline at end of file
index 85c3a8c..7e48985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ddf=['fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','isAuthenticated','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x44c205,_0x545e76){var _0x31af50=function(_0x4e1656){while(--_0x4e1656){_0x44c205['push'](_0x44c205['shift']());}};_0x31af50(++_0x545e76);}(_0x0ddf,0x102));var _0xf0dd=function(_0xd1bbe3,_0x257565){_0xd1bbe3=_0xd1bbe3-0x0;var _0x4bd8ea=_0x0ddf[_0xd1bbe3];return _0x4bd8ea;};'use strict';var multer=require(_0xf0dd('0x0'));var util=require(_0xf0dd('0x1'));var path=require(_0xf0dd('0x2'));var timeout=require(_0xf0dd('0x3'));var express=require(_0xf0dd('0x4'));var router=express[_0xf0dd('0x5')]();var fs_extra=require(_0xf0dd('0x6'));var auth=require(_0xf0dd('0x7'));var interaction=require(_0xf0dd('0x8'));var config=require('../../config/environment');var controller=require(_0xf0dd('0x9'));router['get']('/',auth[_0xf0dd('0xa')](),controller['index']);router[_0xf0dd('0xb')](_0xf0dd('0xc'),auth[_0xf0dd('0xa')](),controller['describe']);router[_0xf0dd('0xb')](_0xf0dd('0xd'),auth[_0xf0dd('0xa')](),controller[_0xf0dd('0xe')]);router[_0xf0dd('0xf')]('/',auth[_0xf0dd('0xa')](),controller[_0xf0dd('0x10')]);router[_0xf0dd('0x11')](_0xf0dd('0xd'),auth['isAuthenticated'](),controller[_0xf0dd('0x12')]);router[_0xf0dd('0x13')](_0xf0dd('0xd'),auth[_0xf0dd('0xa')](),controller[_0xf0dd('0x14')]);module[_0xf0dd('0x15')]=router;
\ No newline at end of file
+var _0xcef6=['isAuthenticated','describe','/:id','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','index','get','/describe'];(function(_0x3c301e,_0x5dbdd7){var _0x5d1731=function(_0x1fe2e3){while(--_0x1fe2e3){_0x3c301e['push'](_0x3c301e['shift']());}};_0x5d1731(++_0x5dbdd7);}(_0xcef6,0x186));var _0x6cef=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xcef6[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x6cef('0x0'));var util=require('util');var path=require(_0x6cef('0x1'));var timeout=require(_0x6cef('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6cef('0x3'));var interaction=require(_0x6cef('0x4'));var config=require(_0x6cef('0x5'));var controller=require(_0x6cef('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x6cef('0x7')]);router[_0x6cef('0x8')](_0x6cef('0x9'),auth[_0x6cef('0xa')](),controller[_0x6cef('0xb')]);router['get'](_0x6cef('0xc'),auth[_0x6cef('0xa')](),controller['show']);router[_0x6cef('0xd')]('/',auth[_0x6cef('0xa')](),controller[_0x6cef('0xe')]);router[_0x6cef('0xf')](_0x6cef('0xc'),auth['isAuthenticated'](),controller[_0x6cef('0x10')]);router[_0x6cef('0x11')]('/:id',auth[_0x6cef('0xa')](),controller[_0x6cef('0x12')]);module[_0x6cef('0x13')]=router;
\ No newline at end of file
index e01e783..fc9aa11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadae=['exports','STRING','ENUM','mouseOver','timeout','INTEGER','sequelize'];(function(_0x249dcd,_0x1ec13d){var _0x2f6020=function(_0x524a53){while(--_0x524a53){_0x249dcd['push'](_0x249dcd['shift']());}};_0x2f6020(++_0x1ec13d);}(_0xadae,0x179));var _0xeada=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xadae[_0x484e36];return _0xafc85d;};'use strict';var Sequelize=require(_0xeada('0x0'));module[_0xeada('0x1')]={'name':{'type':Sequelize[_0xeada('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xeada('0x3')](_0xeada('0x4'),_0xeada('0x5')),'defaultValue':_0xeada('0x4')},'selector':{'type':Sequelize[_0xeada('0x2')]},'timeout':{'type':Sequelize[_0xeada('0x6')]}};
\ No newline at end of file
+var _0x3969=['INTEGER','sequelize','exports','STRING','ENUM','mouseOver','timeout'];(function(_0x56e7e5,_0x27295b){var _0x3becde=function(_0x148f0a){while(--_0x148f0a){_0x56e7e5['push'](_0x56e7e5['shift']());}};_0x3becde(++_0x27295b);}(_0x3969,0x19e));var _0x9396=function(_0x435b42,_0x5bd45a){_0x435b42=_0x435b42-0x0;var _0x23cab0=_0x3969[_0x435b42];return _0x23cab0;};'use strict';var Sequelize=require(_0x9396('0x0'));module[_0x9396('0x1')]={'name':{'type':Sequelize[_0x9396('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9396('0x3')](_0x9396('0x4'),_0x9396('0x5')),'defaultValue':_0x9396('0x4')},'selector':{'type':Sequelize[_0x9396('0x2')]},'timeout':{'type':Sequelize[_0x9396('0x6')]}};
\ No newline at end of file
index c6e4e97..ca3f335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4491=['then','stack','send','keys','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','create','body','catch','params','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x45927c,_0x26c77f){var _0x11691b=function(_0x419365){while(--_0x419365){_0x45927c['push'](_0x45927c['shift']());}};_0x11691b(++_0x26c77f);}(_0x4491,0x1bb));var _0x1449=function(_0xdb723b,_0x260350){_0xdb723b=_0xdb723b-0x0;var _0xf5d29a=_0x4491[_0xdb723b];return _0xf5d29a;};'use strict';var emlformat=require(_0x1449('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1449('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1449('0x2'));var moment=require(_0x1449('0x3'));var BPromise=require(_0x1449('0x4'));var Mustache=require(_0x1449('0x5'));var util=require(_0x1449('0x6'));var path=require(_0x1449('0x7'));var sox=require('sox');var csv=require(_0x1449('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1449('0x9'));var _=require(_0x1449('0xa'));var squel=require(_0x1449('0xb'));var crypto=require(_0x1449('0xc'));var jsforce=require(_0x1449('0xd'));var deskjs=require(_0x1449('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1449('0xf'));var Papa=require(_0x1449('0x10'));var Redis=require('ioredis');var authService=require(_0x1449('0x11'));var qs=require(_0x1449('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1449('0x13'));var logger=require(_0x1449('0x14'))('api');var utils=require(_0x1449('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1449('0x16'))['db'];function respondWithStatusCode(_0x3f5424,_0x399815){_0x399815=_0x399815||0xcc;return function(_0x25bce3){if(_0x25bce3){return _0x3f5424[_0x1449('0x17')](_0x399815);}return _0x3f5424[_0x1449('0x18')](_0x399815)[_0x1449('0x19')]();};}function respondWithResult(_0x377c96,_0x267d9a){_0x267d9a=_0x267d9a||0xc8;return function(_0x41b34d){if(_0x41b34d){return _0x377c96[_0x1449('0x18')](_0x267d9a)[_0x1449('0x1a')](_0x41b34d);}};}function respondWithFilteredResult(_0x441344,_0x2cf76c){return function(_0x1ec7e8){if(_0x1ec7e8){var _0x59b128=typeof _0x2cf76c[_0x1449('0x1b')]===_0x1449('0x1c')&&typeof _0x2cf76c['limit']===_0x1449('0x1c');var _0x290b72=_0x1ec7e8[_0x1449('0x1d')];var _0x364878=_0x59b128?0x0:_0x2cf76c[_0x1449('0x1b')];var _0x30a65f=_0x59b128?_0x1ec7e8[_0x1449('0x1d')]:_0x2cf76c[_0x1449('0x1b')]+_0x2cf76c[_0x1449('0x1e')];var _0x2dbae1;if(_0x30a65f>=_0x290b72){_0x30a65f=_0x290b72;_0x2dbae1=0xc8;}else{_0x2dbae1=0xce;}_0x441344[_0x1449('0x18')](_0x2dbae1);return _0x441344[_0x1449('0x1f')](_0x1449('0x20'),_0x364878+'-'+_0x30a65f+'/'+_0x290b72)['json'](_0x1ec7e8);}return null;};}function patchUpdates(_0x108f41){return function(_0x49c4d6){try{jsonpatch[_0x1449('0x21')](_0x49c4d6,_0x108f41,!![]);}catch(_0xaaea1d){return BPromise[_0x1449('0x22')](_0xaaea1d);}return _0x49c4d6[_0x1449('0x23')]();};}function saveUpdates(_0x3a2c85,_0x4dcc1b){return function(_0x4c86b9){if(_0x4c86b9){return _0x4c86b9[_0x1449('0x24')](_0x3a2c85)[_0x1449('0x25')](function(_0x100ac6){return _0x100ac6;});}return null;};}function removeEntity(_0x356d6b,_0x545cee){return function(_0x29e254){if(_0x29e254){return _0x29e254['destroy']()[_0x1449('0x25')](function(){_0x356d6b[_0x1449('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a8cf0,_0x507a14){return function(_0x1ef1e3){if(!_0x1ef1e3){_0x5a8cf0[_0x1449('0x17')](0x194);}return _0x1ef1e3;};}function handleError(_0x39ad3c,_0x529dae){_0x529dae=_0x529dae||0x1f4;return function(_0x40e7d5){logger['error'](_0x40e7d5[_0x1449('0x26')]);if(_0x40e7d5['name']){delete _0x40e7d5['name'];}_0x39ad3c[_0x1449('0x18')](_0x529dae)[_0x1449('0x27')](_0x40e7d5);};}exports['show']=function(_0xe6900c,_0x5c3fdf){var _0x2836a1={'raw':!![],'where':{'id':_0xe6900c['params']['id']}},_0x36a74a={};_0x36a74a['model']=_[_0x1449('0x28')](db['ChatProactiveAction'][_0x1449('0x29')]);_0x36a74a[_0x1449('0x2a')]=_[_0x1449('0x28')](_0xe6900c[_0x1449('0x2a')]);_0x36a74a[_0x1449('0x2b')]=_[_0x1449('0x2c')](_0x36a74a[_0x1449('0x2d')],_0x36a74a[_0x1449('0x2a')]);_0x2836a1[_0x1449('0x2e')]=_[_0x1449('0x2c')](_0x36a74a[_0x1449('0x2d')],qs[_0x1449('0x2f')](_0xe6900c[_0x1449('0x2a')][_0x1449('0x2f')]));_0x2836a1[_0x1449('0x2e')]=_0x2836a1[_0x1449('0x2e')][_0x1449('0x30')]?_0x2836a1['attributes']:_0x36a74a[_0x1449('0x2d')];if(_0xe6900c['query'][_0x1449('0x31')]){_0x2836a1[_0x1449('0x32')]=[{'all':!![]}];}_0x2836a1=_[_0x1449('0x33')]({},_0x2836a1,_0xe6900c[_0x1449('0x34')]);return db[_0x1449('0x35')][_0x1449('0x36')](_0x2836a1)[_0x1449('0x25')](handleEntityNotFound(_0x5c3fdf,null))[_0x1449('0x25')](respondWithResult(_0x5c3fdf,null))['catch'](handleError(_0x5c3fdf,null));};exports['create']=function(_0x59c075,_0x19610c){return db[_0x1449('0x35')][_0x1449('0x37')](_0x59c075[_0x1449('0x38')],{})[_0x1449('0x25')](respondWithResult(_0x19610c,0xc9))[_0x1449('0x39')](handleError(_0x19610c,null));};exports[_0x1449('0x24')]=function(_0x2b7bd8,_0x5a1f92){if(_0x2b7bd8[_0x1449('0x38')]['id']){delete _0x2b7bd8[_0x1449('0x38')]['id'];}return db[_0x1449('0x35')][_0x1449('0x36')]({'where':{'id':_0x2b7bd8[_0x1449('0x3a')]['id']}})[_0x1449('0x25')](handleEntityNotFound(_0x5a1f92,null))['then'](saveUpdates(_0x2b7bd8[_0x1449('0x38')],null))[_0x1449('0x25')](respondWithResult(_0x5a1f92,null))['catch'](handleError(_0x5a1f92,null));};exports[_0x1449('0x3b')]=function(_0x4c8d2a,_0x2ccb90){return db[_0x1449('0x35')][_0x1449('0x36')]({'where':{'id':_0x4c8d2a[_0x1449('0x3a')]['id']}})['then'](handleEntityNotFound(_0x2ccb90,null))[_0x1449('0x25')](removeEntity(_0x2ccb90,null))[_0x1449('0x39')](handleError(_0x2ccb90,null));};
\ No newline at end of file
+var _0x6b4e=['undefined','limit','offset','status','set','Content-Range','apply','reject','update','then','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','merge','find','catch','create','body','destroy','rimraf','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json'];(function(_0x1c078e,_0x236f78){var _0x117cb0=function(_0x26418f){while(--_0x26418f){_0x1c078e['push'](_0x1c078e['shift']());}};_0x117cb0(++_0x236f78);}(_0x6b4e,0x1a8));var _0xe6b4=function(_0xcaea58,_0x107af2){_0xcaea58=_0xcaea58-0x0;var _0x5d8221=_0x6b4e[_0xcaea58];return _0x5d8221;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe6b4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe6b4('0x1'));var Mustache=require(_0xe6b4('0x2'));var util=require(_0xe6b4('0x3'));var path=require(_0xe6b4('0x4'));var sox=require(_0xe6b4('0x5'));var csv=require(_0xe6b4('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe6b4('0x7'));var _=require(_0xe6b4('0x8'));var squel=require(_0xe6b4('0x9'));var crypto=require(_0xe6b4('0xa'));var jsforce=require(_0xe6b4('0xb'));var deskjs=require(_0xe6b4('0xc'));var toCsv=require(_0xe6b4('0x6'));var querystring=require(_0xe6b4('0xd'));var Papa=require(_0xe6b4('0xe'));var Redis=require(_0xe6b4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe6b4('0x10'));var as=require(_0xe6b4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xe6b4('0x12'));var config=require(_0xe6b4('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xe6b4('0x14'))['db'];function respondWithStatusCode(_0x102306,_0x19fe43){_0x19fe43=_0x19fe43||0xcc;return function(_0x21ae59){if(_0x21ae59){return _0x102306[_0xe6b4('0x15')](_0x19fe43);}return _0x102306['status'](_0x19fe43)[_0xe6b4('0x16')]();};}function respondWithResult(_0x184353,_0x67ad14){_0x67ad14=_0x67ad14||0xc8;return function(_0x21ab5b){if(_0x21ab5b){return _0x184353['status'](_0x67ad14)[_0xe6b4('0x17')](_0x21ab5b);}};}function respondWithFilteredResult(_0x2022ca,_0x2e3eff){return function(_0x42876a){if(_0x42876a){var _0x25ad62=typeof _0x2e3eff['offset']===_0xe6b4('0x18')&&typeof _0x2e3eff[_0xe6b4('0x19')]===_0xe6b4('0x18');var _0x531f98=_0x42876a['count'];var _0x5e77f2=_0x25ad62?0x0:_0x2e3eff[_0xe6b4('0x1a')];var _0x5877c1=_0x25ad62?_0x42876a['count']:_0x2e3eff[_0xe6b4('0x1a')]+_0x2e3eff['limit'];var _0x200c8f;if(_0x5877c1>=_0x531f98){_0x5877c1=_0x531f98;_0x200c8f=0xc8;}else{_0x200c8f=0xce;}_0x2022ca[_0xe6b4('0x1b')](_0x200c8f);return _0x2022ca[_0xe6b4('0x1c')](_0xe6b4('0x1d'),_0x5e77f2+'-'+_0x5877c1+'/'+_0x531f98)[_0xe6b4('0x17')](_0x42876a);}return null;};}function patchUpdates(_0x1899b4){return function(_0xb7127){try{jsonpatch[_0xe6b4('0x1e')](_0xb7127,_0x1899b4,!![]);}catch(_0x5143b5){return BPromise[_0xe6b4('0x1f')](_0x5143b5);}return _0xb7127['save']();};}function saveUpdates(_0x44648b,_0x1121cf){return function(_0x2dc1c5){if(_0x2dc1c5){return _0x2dc1c5[_0xe6b4('0x20')](_0x44648b)[_0xe6b4('0x21')](function(_0x5f4bc7){return _0x5f4bc7;});}return null;};}function removeEntity(_0x5033e0,_0x52ee39){return function(_0x415b57){if(_0x415b57){return _0x415b57['destroy']()[_0xe6b4('0x21')](function(){_0x5033e0[_0xe6b4('0x1b')](0xcc)[_0xe6b4('0x16')]();});}};}function handleEntityNotFound(_0x28bfef,_0x4bcbc9){return function(_0x191ae2){if(!_0x191ae2){_0x28bfef[_0xe6b4('0x15')](0x194);}return _0x191ae2;};}function handleError(_0x765e11,_0x513adb){_0x513adb=_0x513adb||0x1f4;return function(_0x45a397){logger['error'](_0x45a397[_0xe6b4('0x22')]);if(_0x45a397[_0xe6b4('0x23')]){delete _0x45a397['name'];}_0x765e11[_0xe6b4('0x1b')](_0x513adb)[_0xe6b4('0x24')](_0x45a397);};}exports[_0xe6b4('0x25')]=function(_0x54b5db,_0x49bee2){var _0x383223={'raw':!![],'where':{'id':_0x54b5db[_0xe6b4('0x26')]['id']}},_0x223239={};_0x223239[_0xe6b4('0x27')]=_[_0xe6b4('0x28')](db[_0xe6b4('0x29')][_0xe6b4('0x2a')]);_0x223239[_0xe6b4('0x2b')]=_[_0xe6b4('0x28')](_0x54b5db['query']);_0x223239['filters']=_[_0xe6b4('0x2c')](_0x223239[_0xe6b4('0x27')],_0x223239['query']);_0x383223[_0xe6b4('0x2d')]=_[_0xe6b4('0x2c')](_0x223239[_0xe6b4('0x27')],qs['fields'](_0x54b5db[_0xe6b4('0x2b')][_0xe6b4('0x2e')]));_0x383223[_0xe6b4('0x2d')]=_0x383223[_0xe6b4('0x2d')][_0xe6b4('0x2f')]?_0x383223[_0xe6b4('0x2d')]:_0x223239[_0xe6b4('0x27')];if(_0x54b5db['query'][_0xe6b4('0x30')]){_0x383223[_0xe6b4('0x31')]=[{'all':!![]}];}_0x383223=_[_0xe6b4('0x32')]({},_0x383223,_0x54b5db['options']);return db[_0xe6b4('0x29')][_0xe6b4('0x33')](_0x383223)['then'](handleEntityNotFound(_0x49bee2,null))[_0xe6b4('0x21')](respondWithResult(_0x49bee2,null))[_0xe6b4('0x34')](handleError(_0x49bee2,null));};exports[_0xe6b4('0x35')]=function(_0x46ea16,_0x5e7b10){return db[_0xe6b4('0x29')][_0xe6b4('0x35')](_0x46ea16[_0xe6b4('0x36')],{})['then'](respondWithResult(_0x5e7b10,0xc9))[_0xe6b4('0x34')](handleError(_0x5e7b10,null));};exports['update']=function(_0x3b496d,_0x4b49c2){if(_0x3b496d['body']['id']){delete _0x3b496d[_0xe6b4('0x36')]['id'];}return db[_0xe6b4('0x29')][_0xe6b4('0x33')]({'where':{'id':_0x3b496d['params']['id']}})[_0xe6b4('0x21')](handleEntityNotFound(_0x4b49c2,null))[_0xe6b4('0x21')](saveUpdates(_0x3b496d[_0xe6b4('0x36')],null))[_0xe6b4('0x21')](respondWithResult(_0x4b49c2,null))[_0xe6b4('0x34')](handleError(_0x4b49c2,null));};exports[_0xe6b4('0x37')]=function(_0x3b2181,_0x157954){return db[_0xe6b4('0x29')]['find']({'where':{'id':_0x3b2181[_0xe6b4('0x26')]['id']}})['then'](handleEntityNotFound(_0x157954,null))['then'](removeEntity(_0x157954,null))[_0xe6b4('0x34')](handleError(_0x157954,null));};
\ No newline at end of file
index 0651458..3f319f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd0=['lodash','util','moment','request-promise','ChatProactiveAction','chat_proactive_actions'];(function(_0x44166f,_0x3e71e2){var _0x5f390a=function(_0x4876fb){while(--_0x4876fb){_0x44166f['push'](_0x44166f['shift']());}};_0x5f390a(++_0x3e71e2);}(_0xcdd0,0x16e));var _0x0cdd=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0xcdd0[_0x28d18d];return _0x470640;};'use strict';var _=require(_0x0cdd('0x0'));var util=require(_0x0cdd('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0cdd('0x2'));var BPromise=require('bluebird');var rp=require(_0x0cdd('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x3d6a39,_0x40e0c8){return _0x3d6a39['define'](_0x0cdd('0x4'),attributes,{'tableName':_0x0cdd('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde2a=['./chatProactiveAction.attributes','define','ChatProactiveAction','chat_proactive_actions','util','api','moment','request-promise','rimraf','../../config/environment'];(function(_0xe15934,_0x5439fd){var _0x486c48=function(_0x41675a){while(--_0x41675a){_0xe15934['push'](_0xe15934['shift']());}};_0x486c48(++_0x5439fd);}(_0xde2a,0x1a8));var _0xade2=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0xde2a[_0x1ebce2];return _0x4a330c;};'use strict';var _=require('lodash');var util=require(_0xade2('0x0'));var logger=require('../../config/logger')(_0xade2('0x1'));var moment=require(_0xade2('0x2'));var BPromise=require('bluebird');var rp=require(_0xade2('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xade2('0x4'));var config=require(_0xade2('0x5'));var attributes=require(_0xade2('0x6'));module['exports']=function(_0x3d8abc,_0x389da4){return _0x3d8abc[_0xade2('0x7')](_0xade2('0x8'),attributes,{'tableName':_0xade2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd829fd..0e915ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe926=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x423cac,_0xf5c125){var _0x36fb02=function(_0x662b80){while(--_0x662b80){_0x423cac['push'](_0x423cac['shift']());}};_0x36fb02(++_0xf5c125);}(_0xe926,0x121));var _0x6e92=function(_0x596f6e,_0x3f8857){_0x596f6e=_0x596f6e-0x0;var _0x1e0803=_0xe926[_0x596f6e];return _0x1e0803;};'use strict';var _=require(_0x6e92('0x0'));var util=require(_0x6e92('0x1'));var moment=require('moment');var BPromise=require(_0x6e92('0x2'));var rs=require(_0x6e92('0x3'));var fs=require('fs');var Redis=require(_0x6e92('0x4'));var db=require(_0x6e92('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e92('0x6'))(_0x6e92('0x7'));var config=require(_0x6e92('0x8'));var jayson=require(_0x6e92('0x9'));var client=jayson[_0x6e92('0xa')][_0x6e92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43e0b8,_0x4a47d2,_0x3dd13e){return new BPromise(function(_0x40629a,_0x58dd14){return client[_0x6e92('0xc')](_0x43e0b8,_0x3dd13e)[_0x6e92('0xd')](function(_0x540ea4){logger[_0x6e92('0xe')](_0x6e92('0xf'),_0x4a47d2,_0x6e92('0x10'));logger[_0x6e92('0x11')](_0x6e92('0x12'),_0x4a47d2,_0x6e92('0x10'),JSON[_0x6e92('0x13')](_0x540ea4));if(_0x540ea4[_0x6e92('0x14')]){if(_0x540ea4['error'][_0x6e92('0x15')]===0x1f4){logger[_0x6e92('0x14')](_0x6e92('0xf'),_0x4a47d2,_0x540ea4[_0x6e92('0x14')][_0x6e92('0x16')]);return _0x58dd14(_0x540ea4[_0x6e92('0x14')]['message']);}logger[_0x6e92('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x4a47d2,_0x540ea4['error'][_0x6e92('0x16')]);return _0x40629a(_0x540ea4[_0x6e92('0x14')][_0x6e92('0x16')]);}else{logger['info'](_0x6e92('0xf'),_0x4a47d2,_0x6e92('0x10'));_0x40629a(_0x540ea4['result'][_0x6e92('0x16')]);}})[_0x6e92('0x17')](function(_0x2e6320){logger[_0x6e92('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x4a47d2,_0x2e6320);_0x58dd14(_0x2e6320);});});}
\ No newline at end of file
+var _0xf850=['../../config/environment','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x3c6741,_0x24c6f0){var _0x5d3310=function(_0x504ffb){while(--_0x504ffb){_0x3c6741['push'](_0x3c6741['shift']());}};_0x5d3310(++_0x24c6f0);}(_0xf850,0x70));var _0x0f85=function(_0x30e5a9,_0xe177dc){_0x30e5a9=_0x30e5a9-0x0;var _0x1b80c2=_0xf850[_0x30e5a9];return _0x1b80c2;};'use strict';var _=require(_0x0f85('0x0'));var util=require('util');var moment=require(_0x0f85('0x1'));var BPromise=require(_0x0f85('0x2'));var rs=require(_0x0f85('0x3'));var fs=require('fs');var Redis=require(_0x0f85('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f85('0x5'));var logger=require(_0x0f85('0x6'))(_0x0f85('0x7'));var config=require(_0x0f85('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0f85('0x9')][_0x0f85('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3dcc34,_0x5b9208,_0x53dc58){return new BPromise(function(_0x2aed79,_0x1e0834){return client[_0x0f85('0xb')](_0x3dcc34,_0x53dc58)['then'](function(_0x5575f3){logger[_0x0f85('0xc')](_0x0f85('0xd'),_0x5b9208,_0x0f85('0xe'));logger[_0x0f85('0xf')](_0x0f85('0x10'),_0x5b9208,_0x0f85('0xe'),JSON['stringify'](_0x5575f3));if(_0x5575f3[_0x0f85('0x11')]){if(_0x5575f3[_0x0f85('0x11')]['code']===0x1f4){logger[_0x0f85('0x11')](_0x0f85('0xd'),_0x5b9208,_0x5575f3['error']['message']);return _0x1e0834(_0x5575f3[_0x0f85('0x11')][_0x0f85('0x12')]);}logger['error'](_0x0f85('0xd'),_0x5b9208,_0x5575f3[_0x0f85('0x11')][_0x0f85('0x12')]);return _0x2aed79(_0x5575f3[_0x0f85('0x11')][_0x0f85('0x12')]);}else{logger[_0x0f85('0xc')](_0x0f85('0xd'),_0x5b9208,_0x0f85('0xe'));_0x2aed79(_0x5575f3['result'][_0x0f85('0x12')]);}})[_0x0f85('0x13')](function(_0x4334d2){logger['error'](_0x0f85('0xd'),_0x5b9208,_0x4334d2);_0x1e0834(_0x4334d2);});});}
\ No newline at end of file
index 1c8d709..925db29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['/:id','isAuthenticated','show','create','update','delete','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0xaf8267,_0x33968b){var _0x20798b=function(_0xaa6732){while(--_0xaa6732){_0xaf8267['push'](_0xaf8267['shift']());}};_0x20798b(++_0x33968b);}(_0x5d58,0x187));var _0x85d5=function(_0x3a405a,_0x2c4c16){_0x3a405a=_0x3a405a-0x0;var _0x5a4627=_0x5d58[_0x3a405a];return _0x5a4627;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./chatProactiveAction.controller');router[_0x85d5('0x4')](_0x85d5('0x5'),auth[_0x85d5('0x6')](),controller[_0x85d5('0x7')]);router['post']('/',auth[_0x85d5('0x6')](),controller[_0x85d5('0x8')]);router['put'](_0x85d5('0x5'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')](_0x85d5('0x5'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6f47=['show','post','create','put','/:id','update','destroy','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','isAuthenticated'];(function(_0x10dca4,_0xcb0d15){var _0x334498=function(_0x3f959a){while(--_0x3f959a){_0x10dca4['push'](_0x10dca4['shift']());}};_0x334498(++_0xcb0d15);}(_0x6f47,0xc7));var _0x76f4=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x6f47[_0x173441];return _0x2423a8;};'use strict';var multer=require('multer');var util=require(_0x76f4('0x0'));var path=require(_0x76f4('0x1'));var timeout=require('connect-timeout');var express=require(_0x76f4('0x2'));var router=express['Router']();var fs_extra=require(_0x76f4('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x76f4('0x4'));var config=require(_0x76f4('0x5'));var controller=require(_0x76f4('0x6'));router[_0x76f4('0x7')]('/:id',auth[_0x76f4('0x8')](),controller[_0x76f4('0x9')]);router[_0x76f4('0xa')]('/',auth['isAuthenticated'](),controller[_0x76f4('0xb')]);router[_0x76f4('0xc')](_0x76f4('0xd'),auth[_0x76f4('0x8')](),controller[_0x76f4('0xe')]);router['delete']('/:id',auth[_0x76f4('0x8')](),controller[_0x76f4('0xf')]);module['exports']=router;
\ No newline at end of file
index dc561f1..c5e0a23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x247e=['name','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x358473,_0x2c6c2e){var _0x1579b9=function(_0x271054){while(--_0x271054){_0x358473['push'](_0x358473['shift']());}};_0x1579b9(++_0x2c6c2e);}(_0x247e,0x172));var _0xe247=function(_0x5a4825,_0x27644a){_0x5a4825=_0x5a4825-0x0;var _0x9f2654=_0x247e[_0x5a4825];return _0x9f2654;};'use strict';var Sequelize=require(_0xe247('0x0'));module[_0xe247('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe247('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xe247('0x3')](_0xe247('0x4'),_0xe247('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x206c=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x51b1a5,_0x285a4f){var _0x15c738=function(_0x5c94d7){while(--_0x5c94d7){_0x51b1a5['push'](_0x51b1a5['shift']());}};_0x15c738(++_0x285a4f);}(_0x206c,0xc9));var _0xc206=function(_0x2e7a4f,_0x333364){_0x2e7a4f=_0x2e7a4f-0x0;var _0x29c20d=_0x206c[_0x2e7a4f];return _0x29c20d;};'use strict';var Sequelize=require(_0xc206('0x0'));module[_0xc206('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xc206('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc206('0x3')](_0xc206('0x4'),_0xc206('0x5'),_0xc206('0x6'))}};
\ No newline at end of file
index 8e70620..bf907e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e3a=['error','code','ChatQueue,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','ChatQueues','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','length','includeAll','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserChatQueue','nolimit','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','%s/%s','getTeams','Team','addTeams','ids','User','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','select','tq.TeamId','from','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','jayson/promise','http','request','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4244c0,_0x35dec2){var _0x105c30=function(_0x2af351){while(--_0x2af351){_0x4244c0['push'](_0x4244c0['shift']());}};_0x105c30(++_0x35dec2);}(_0x7e3a,0x75));var _0xa7e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e3a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa7e3('0x0'));var zipdir=require(_0xa7e3('0x1'));var jsonpatch=require(_0xa7e3('0x2'));var rp=require(_0xa7e3('0x3'));var moment=require('moment');var BPromise=require(_0xa7e3('0x4'));var Mustache=require(_0xa7e3('0x5'));var util=require('util');var path=require(_0xa7e3('0x6'));var sox=require(_0xa7e3('0x7'));var csv=require(_0xa7e3('0x8'));var ejs=require(_0xa7e3('0x9'));var fs=require('fs');var fs_extra=require(_0xa7e3('0xa'));var _=require(_0xa7e3('0xb'));var squel=require('squel');var crypto=require(_0xa7e3('0xc'));var jsforce=require(_0xa7e3('0xd'));var deskjs=require(_0xa7e3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa7e3('0xf'));var Papa=require('papaparse');var Redis=require(_0xa7e3('0x10'));var authService=require(_0xa7e3('0x11'));var qs=require(_0xa7e3('0x12'));var as=require(_0xa7e3('0x13'));var hardwareService=require(_0xa7e3('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xa7e3('0x15'));var config=require(_0xa7e3('0x16'));var licenseUtil=require(_0xa7e3('0x17'));var db=require(_0xa7e3('0x18'))['db'];config[_0xa7e3('0x19')]=_[_0xa7e3('0x1a')](config[_0xa7e3('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xa7e3('0x1b'))(new Redis(config[_0xa7e3('0x19')]));require(_0xa7e3('0x1c'))[_0xa7e3('0x1d')](socket);var jayson=require(_0xa7e3('0x1e'));var client=jayson['client'][_0xa7e3('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x220a0f,_0x15d823,_0x1f7d0d,_0x2afa6d){return new BPromise(function(_0x4cf8e8,_0x482516){var _0x106207=_0x2afa6d||client;return _0x106207[_0xa7e3('0x20')](_0x220a0f,_0x1f7d0d)[_0xa7e3('0x21')](function(_0x46713f){logger[_0xa7e3('0x22')]('ChatQueue,\x20%s,\x20%s',_0x15d823,_0xa7e3('0x23'));logger[_0xa7e3('0x24')](_0xa7e3('0x25'),_0x15d823,_0xa7e3('0x23'),JSON[_0xa7e3('0x26')](_0x46713f));if(_0x46713f[_0xa7e3('0x27')]){if(_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x28')]===0x1f4){logger[_0xa7e3('0x27')](_0xa7e3('0x29'),_0x15d823,_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x2a')]);return _0x482516(_0x46713f[_0xa7e3('0x27')][_0xa7e3('0x2a')]);}logger['error'](_0xa7e3('0x29'),_0x15d823,_0x46713f['error'][_0xa7e3('0x2a')]);return _0x4cf8e8(_0x46713f[_0xa7e3('0x27')]['message']);}else{logger[_0xa7e3('0x22')](_0xa7e3('0x29'),_0x15d823,_0xa7e3('0x23'));_0x4cf8e8(_0x46713f[_0xa7e3('0x2b')][_0xa7e3('0x2a')]);}})['catch'](function(_0x33f818){logger[_0xa7e3('0x27')](_0xa7e3('0x29'),_0x15d823,_0x33f818);_0x482516(_0x33f818);});});}function respondWithStatusCode(_0x2d8e74,_0x153eb2){_0x153eb2=_0x153eb2||0xcc;return function(_0x54808c){if(_0x54808c){return _0x2d8e74[_0xa7e3('0x2c')](_0x153eb2);}return _0x2d8e74[_0xa7e3('0x2d')](_0x153eb2)[_0xa7e3('0x2e')]();};}function respondWithResult(_0x5a10a1,_0x3462b2){_0x3462b2=_0x3462b2||0xc8;return function(_0x18b8ea){if(_0x18b8ea){return _0x5a10a1[_0xa7e3('0x2d')](_0x3462b2)[_0xa7e3('0x2f')](_0x18b8ea);}};}function respondWithFilteredResult(_0x53585b,_0x48efc8){return function(_0x47c780){if(_0x47c780){var _0x40df18=typeof _0x48efc8[_0xa7e3('0x30')]===_0xa7e3('0x31')&&typeof _0x48efc8[_0xa7e3('0x32')]===_0xa7e3('0x31');var _0x5950be=_0x47c780[_0xa7e3('0x33')];var _0x2d4780=_0x40df18?0x0:_0x48efc8[_0xa7e3('0x30')];var _0x19363e=_0x40df18?_0x47c780[_0xa7e3('0x33')]:_0x48efc8[_0xa7e3('0x30')]+_0x48efc8[_0xa7e3('0x32')];var _0xacf852;if(_0x19363e>=_0x5950be){_0x19363e=_0x5950be;_0xacf852=0xc8;}else{_0xacf852=0xce;}_0x53585b[_0xa7e3('0x2d')](_0xacf852);return _0x53585b[_0xa7e3('0x34')](_0xa7e3('0x35'),_0x2d4780+'-'+_0x19363e+'/'+_0x5950be)['json'](_0x47c780);}return null;};}function patchUpdates(_0x5de39b){return function(_0x3b26bd){try{jsonpatch[_0xa7e3('0x36')](_0x3b26bd,_0x5de39b,!![]);}catch(_0x784a73){return BPromise[_0xa7e3('0x37')](_0x784a73);}return _0x3b26bd[_0xa7e3('0x38')]();};}function saveUpdates(_0x282379,_0x188040){return function(_0x2c052e){if(_0x2c052e){return _0x2c052e['update'](_0x282379)['then'](function(_0x2e3eac){return _0x2e3eac;});}return null;};}function removeEntity(_0x232df9,_0x24ce22){return function(_0x3c248f){if(_0x3c248f){return _0x3c248f[_0xa7e3('0x39')]()[_0xa7e3('0x21')](function(){var _0x1cbf73=_0x3c248f['get']({'plain':!![]});var _0xaaff95=_0xa7e3('0x3a');return db['UserProfileResource'][_0xa7e3('0x39')]({'where':{'type':_0xaaff95,'resourceId':_0x1cbf73['id']}})['then'](function(){return _0x3c248f;});})[_0xa7e3('0x21')](function(){_0x232df9[_0xa7e3('0x2d')](0xcc)[_0xa7e3('0x2e')]();});}};}function handleEntityNotFound(_0x325db1,_0x5f2a5a){return function(_0x4edc99){if(!_0x4edc99){_0x325db1[_0xa7e3('0x2c')](0x194);}return _0x4edc99;};}function handleError(_0x31d86b,_0x4ccb51){_0x4ccb51=_0x4ccb51||0x1f4;return function(_0x406204){logger['error'](_0x406204[_0xa7e3('0x3b')]);if(_0x406204[_0xa7e3('0x3c')]){delete _0x406204[_0xa7e3('0x3c')];}_0x31d86b[_0xa7e3('0x2d')](_0x4ccb51)[_0xa7e3('0x3d')](_0x406204);};}exports[_0xa7e3('0x3e')]=function(_0x362172,_0x423245){var _0x3d0e12={},_0x48c2e4={},_0x58da42={'count':0x0,'rows':[]};var _0x5624f4=_[_0xa7e3('0x3f')](db[_0xa7e3('0x40')][_0xa7e3('0x41')],function(_0x106200){return{'name':_0x106200[_0xa7e3('0x42')],'type':_0x106200['type'][_0xa7e3('0x43')]};});_0x48c2e4[_0xa7e3('0x44')]=_[_0xa7e3('0x3f')](_0x5624f4,_0xa7e3('0x3c'));_0x48c2e4['query']=_[_0xa7e3('0x45')](_0x362172[_0xa7e3('0x46')]);_0x48c2e4[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x48c2e4[_0xa7e3('0x44')],_0x48c2e4['query']);_0x3d0e12[_0xa7e3('0x49')]=_[_0xa7e3('0x48')](_0x48c2e4['model'],qs[_0xa7e3('0x4a')](_0x362172[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x3d0e12[_0xa7e3('0x49')]=_0x3d0e12[_0xa7e3('0x49')]['length']?_0x3d0e12[_0xa7e3('0x49')]:_0x48c2e4['model'];if(!_0x362172[_0xa7e3('0x46')][_0xa7e3('0x4b')]('nolimit')){_0x3d0e12[_0xa7e3('0x32')]=qs['limit'](_0x362172['query'][_0xa7e3('0x32')]);_0x3d0e12[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x362172[_0xa7e3('0x46')][_0xa7e3('0x30')]);}_0x3d0e12[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x362172['query'][_0xa7e3('0x4d')]);_0x3d0e12[_0xa7e3('0x4e')]=qs[_0xa7e3('0x47')](_[_0xa7e3('0x4f')](_0x362172['query'],_0x48c2e4[_0xa7e3('0x47')]),_0x5624f4);if(_0x362172[_0xa7e3('0x46')]['filter']){_0x3d0e12[_0xa7e3('0x4e')]=_['merge'](_0x3d0e12['where'],{'$or':_[_0xa7e3('0x3f')](_0x5624f4,function(_0x53ff2e){if(_0x53ff2e[_0xa7e3('0x50')]!==_0xa7e3('0x51')){var _0x4e7020={};_0x4e7020[_0x53ff2e['name']]={'$like':'%'+_0x362172[_0xa7e3('0x46')][_0xa7e3('0x52')]+'%'};return _0x4e7020;}})});}_0x3d0e12=_['merge']({},_0x3d0e12,_0x362172[_0xa7e3('0x53')]);var _0x1e1c75={'where':_0x3d0e12['where']};return db[_0xa7e3('0x40')]['count'](_0x1e1c75)[_0xa7e3('0x21')](function(_0x5273bd){_0x58da42[_0xa7e3('0x33')]=_0x5273bd;if(_0x362172[_0xa7e3('0x46')]['includeAll']){_0x3d0e12[_0xa7e3('0x54')]=[{'all':!![]}];}return db[_0xa7e3('0x40')][_0xa7e3('0x55')](_0x3d0e12);})[_0xa7e3('0x21')](function(_0x1b9677){_0x58da42[_0xa7e3('0x56')]=_0x1b9677;return _0x58da42;})['then'](respondWithFilteredResult(_0x423245,_0x3d0e12))[_0xa7e3('0x57')](handleError(_0x423245,null));};exports[_0xa7e3('0x58')]=function(_0x21e4c9,_0x2b8a03){var _0x1ce414={'raw':!![],'where':{'id':_0x21e4c9[_0xa7e3('0x59')]['id']}},_0x2b8cb5={};_0x2b8cb5[_0xa7e3('0x44')]=_[_0xa7e3('0x45')](db['ChatQueue'][_0xa7e3('0x41')]);_0x2b8cb5['query']=_['keys'](_0x21e4c9[_0xa7e3('0x46')]);_0x2b8cb5[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x2b8cb5['model'],_0x2b8cb5[_0xa7e3('0x46')]);_0x1ce414[_0xa7e3('0x49')]=_['intersection'](_0x2b8cb5[_0xa7e3('0x44')],qs[_0xa7e3('0x4a')](_0x21e4c9[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x1ce414[_0xa7e3('0x49')]=_0x1ce414[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x1ce414[_0xa7e3('0x49')]:_0x2b8cb5[_0xa7e3('0x44')];if(_0x21e4c9[_0xa7e3('0x46')][_0xa7e3('0x5b')]){_0x1ce414['include']=[{'all':!![]}];}_0x1ce414=_[_0xa7e3('0x5c')]({},_0x1ce414,_0x21e4c9['options']);return db[_0xa7e3('0x40')][_0xa7e3('0x5d')](_0x1ce414)['then'](handleEntityNotFound(_0x2b8a03,null))['then'](respondWithResult(_0x2b8a03,null))['catch'](handleError(_0x2b8a03,null));};exports[_0xa7e3('0x5e')]=function(_0x19e29c,_0x343bf6){return db[_0xa7e3('0x40')][_0xa7e3('0x5e')](_0x19e29c[_0xa7e3('0x5f')],{})[_0xa7e3('0x21')](function(_0x55b632){var _0x2e574e=_0x19e29c[_0xa7e3('0x60')][_0xa7e3('0x61')]({'plain':!![]});if(!_0x2e574e)throw new Error(_0xa7e3('0x62'));if(_0x2e574e['role']===_0xa7e3('0x60')){var _0x4de898=_0x55b632[_0xa7e3('0x61')]({'plain':!![]});var _0x41d7bd=_0xa7e3('0x3a');return db[_0xa7e3('0x63')][_0xa7e3('0x5d')]({'where':{'name':_0x41d7bd,'userProfileId':_0x2e574e['userProfileId']},'raw':!![]})[_0xa7e3('0x21')](function(_0x9b05ba){if(_0x9b05ba&&_0x9b05ba[_0xa7e3('0x64')]===0x0){return db[_0xa7e3('0x65')]['create']({'name':_0x4de898[_0xa7e3('0x3c')],'resourceId':_0x4de898['id'],'type':_0x9b05ba[_0xa7e3('0x3c')],'sectionId':_0x9b05ba['id']},{})['then'](function(){return _0x55b632;});}else{return _0x55b632;}})[_0xa7e3('0x57')](function(_0x583ad0){logger[_0xa7e3('0x27')](_0xa7e3('0x66'),_0x583ad0);throw _0x583ad0;});}return _0x55b632;})[_0xa7e3('0x21')](respondWithResult(_0x343bf6,0xc9))['catch'](handleError(_0x343bf6,null));};exports[_0xa7e3('0x67')]=function(_0x568dee,_0x56ed41){if(_0x568dee[_0xa7e3('0x5f')]['id']){delete _0x568dee[_0xa7e3('0x5f')]['id'];}return db['ChatQueue'][_0xa7e3('0x5d')]({'where':{'id':_0x568dee[_0xa7e3('0x59')]['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x56ed41,null))[_0xa7e3('0x21')](saveUpdates(_0x568dee[_0xa7e3('0x5f')],null))['then'](respondWithResult(_0x56ed41,null))[_0xa7e3('0x57')](handleError(_0x56ed41,null));};exports['destroy']=function(_0x55d4af,_0x1345f2){return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x55d4af[_0xa7e3('0x59')]['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x1345f2,null))[_0xa7e3('0x21')](removeEntity(_0x1345f2,null))['catch'](handleError(_0x1345f2,null));};exports[_0xa7e3('0x68')]=function(_0x8642bc,_0x522fbc){return db[_0xa7e3('0x40')][_0xa7e3('0x68')]()[_0xa7e3('0x21')](respondWithResult(_0x522fbc,null))[_0xa7e3('0x57')](handleError(_0x522fbc,null));};exports[_0xa7e3('0x69')]=function(_0x3570b3,_0x233b02,_0x4c99b3){var _0x205394={'raw':!![],'where':{}},_0x3dd27c={},_0x3613ca;return db[_0xa7e3('0x40')][_0xa7e3('0x6a')]({'where':{'id':_0x3570b3[_0xa7e3('0x59')]['id']}})['then'](handleEntityNotFound(_0x233b02,null))[_0xa7e3('0x21')](function(_0x4b0a4b){if(_0x4b0a4b){_0x3613ca=_0x4b0a4b[_0xa7e3('0x61')]({'plain':!![]});_0x3dd27c['model']=_[_0xa7e3('0x45')](db[_0xa7e3('0x6b')]['rawAttributes']);_0x3dd27c['query']=_['keys'](_0x3570b3[_0xa7e3('0x46')]);_0x3dd27c[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x3dd27c[_0xa7e3('0x44')],_0x3dd27c['query']);_0x205394['attributes']=_[_0xa7e3('0x48')](_0x3dd27c['model'],qs[_0xa7e3('0x4a')](_0x3570b3[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x205394[_0xa7e3('0x49')]=_0x205394[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x205394[_0xa7e3('0x49')]:_0x3dd27c['model'];if(!_0x3570b3[_0xa7e3('0x46')]['hasOwnProperty'](_0xa7e3('0x6c'))){_0x205394[_0xa7e3('0x32')]=qs['limit'](_0x3570b3['query'][_0xa7e3('0x32')]);_0x205394[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x3570b3['query']['offset']);}_0x205394[_0xa7e3('0x4c')]=qs['sort'](_0x3570b3['query'][_0xa7e3('0x4d')]);_0x205394['where']=qs[_0xa7e3('0x47')](_['pick'](_0x3570b3[_0xa7e3('0x46')],_0x3dd27c[_0xa7e3('0x47')]));_0x205394[_0xa7e3('0x4e')]['ChatQueueId']=_0x4b0a4b['id'];if(_0x3570b3['query'][_0xa7e3('0x52')]){_0x205394[_0xa7e3('0x4e')]=_['merge'](_0x205394['where'],{'$or':_[_0xa7e3('0x3f')](_0x205394[_0xa7e3('0x49')],function(_0x27a876){var _0x14525d={};_0x14525d[_0x27a876]={'$like':'%'+_0x3570b3[_0xa7e3('0x46')][_0xa7e3('0x52')]+'%'};return _0x14525d;})});}_0x205394=_[_0xa7e3('0x5c')]({},_0x205394,_0x3570b3[_0xa7e3('0x53')]);return db[_0xa7e3('0x6b')]['findAll'](_0x205394);}})['then'](function(_0x15d57d){if(_0x15d57d){return db['User'][_0xa7e3('0x6d')]({'where':{'id':_[_0xa7e3('0x3f')](_0x15d57d,_0xa7e3('0x6e')),'role':_0xa7e3('0x6f')},'attributes':['id',_0xa7e3('0x3c'),_0xa7e3('0x70'),_0xa7e3('0x71'),_0xa7e3('0x72')]});}})[_0xa7e3('0x21')](function(_0x2be488){if(_0x2be488){return{'count':_0x2be488['count'],'rows':_['map'](_0x2be488[_0xa7e3('0x56')],function(_0xc8cafd){return{'membername':_0xc8cafd[_0xa7e3('0x3c')],'UserId':_0xc8cafd['id'],'queue_name':_0x3613ca['name'],'ChatQueueId':_0x3613ca['id'],'interface':util['format'](_0xa7e3('0x73'),'SIP',_0xc8cafd[_0xa7e3('0x3c')]),'penalty':0x0,'paused':_0xc8cafd[_0xa7e3('0x70')],'createdAt':_0xc8cafd[_0xa7e3('0x72')],'updatedAt':_0xc8cafd[_0xa7e3('0x71')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa7e3('0x21')](respondWithFilteredResult(_0x233b02,_0x205394))[_0xa7e3('0x57')](handleError(_0x233b02,null));};exports[_0xa7e3('0x74')]=function(_0x2c4d8b,_0x544b65,_0x3149ad){var _0x45358e={};var _0x29cb61={};var _0x10b560;var _0x597199;return db['ChatQueue']['findOne']({'where':{'id':_0x2c4d8b['params']['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x544b65,null))[_0xa7e3('0x21')](function(_0x268583){if(_0x268583){_0x10b560=_0x268583;_0x29cb61[_0xa7e3('0x44')]=_['keys'](db[_0xa7e3('0x75')][_0xa7e3('0x41')]);_0x29cb61[_0xa7e3('0x46')]=_[_0xa7e3('0x45')](_0x2c4d8b[_0xa7e3('0x46')]);_0x29cb61[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x29cb61[_0xa7e3('0x44')],_0x29cb61[_0xa7e3('0x46')]);_0x45358e[_0xa7e3('0x49')]=_[_0xa7e3('0x48')](_0x29cb61[_0xa7e3('0x44')],qs[_0xa7e3('0x4a')](_0x2c4d8b['query']['fields']));_0x45358e[_0xa7e3('0x49')]=_0x45358e[_0xa7e3('0x49')][_0xa7e3('0x5a')]?_0x45358e[_0xa7e3('0x49')]:_0x29cb61[_0xa7e3('0x44')];_0x45358e[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x4d')]);_0x45358e[_0xa7e3('0x4e')]=qs[_0xa7e3('0x47')](_['pick'](_0x2c4d8b[_0xa7e3('0x46')],_0x29cb61[_0xa7e3('0x47')]));if(_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x52')]){_0x45358e[_0xa7e3('0x4e')]=_[_0xa7e3('0x5c')](_0x45358e[_0xa7e3('0x4e')],{'$or':_[_0xa7e3('0x3f')](_0x45358e['attributes'],function(_0x27a76a){var _0x4d36c3={};_0x4d36c3[_0x27a76a]={'$like':'%'+_0x2c4d8b[_0xa7e3('0x46')]['filter']+'%'};return _0x4d36c3;})});}_0x45358e=_['merge']({},_0x45358e,_0x2c4d8b[_0xa7e3('0x53')]);return _0x10b560['getTeams'](_0x45358e);}})[_0xa7e3('0x21')](function(_0x43d1dc){if(_0x43d1dc){_0x597199=_0x43d1dc[_0xa7e3('0x5a')];if(!_0x2c4d8b['query']['hasOwnProperty'](_0xa7e3('0x6c'))){_0x45358e['limit']=qs['limit'](_0x2c4d8b[_0xa7e3('0x46')][_0xa7e3('0x32')]);_0x45358e[_0xa7e3('0x30')]=qs[_0xa7e3('0x30')](_0x2c4d8b[_0xa7e3('0x46')]['offset']);}return _0x10b560['getTeams'](_0x45358e);}})['then'](function(_0x35b600){if(_0x35b600){return _0x35b600?{'count':_0x597199,'rows':_0x35b600}:null;}})['then'](respondWithResult(_0x544b65,null))[_0xa7e3('0x57')](handleError(_0x544b65,null));};exports[_0xa7e3('0x76')]=function(_0x1eb518,_0x2fdbe6,_0x5dd3de){var _0x685fe=_0x1eb518[_0xa7e3('0x5f')][_0xa7e3('0x77')];return db[_0xa7e3('0x75')][_0xa7e3('0x55')]({'where':{'id':_0x685fe},'attributes':['id'],'include':[{'model':db[_0xa7e3('0x78')],'as':_0xa7e3('0x79'),'attributes':['id','name',_0xa7e3('0x7a'),'voicePause',_0xa7e3('0x7b')],'raw':!![]}]})[_0xa7e3('0x21')](function(_0x5d50f1){if(_0x5d50f1){var _0x10d14b=_[_0xa7e3('0x7c')](_0x5d50f1,function(_0x7f8575){var _0x19bb38=_0x7f8575[_0xa7e3('0x61')]({'plain':!![]});return _0x19bb38[_0xa7e3('0x79')];});return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x1eb518['params']['id']}})['then'](function(_0x33b07f){return db[_0xa7e3('0x7d')][_0xa7e3('0x7e')](function(_0x5d5e47){return _0x33b07f['addTeams'](_0x685fe,{'transaction':_0x5d5e47})[_0xa7e3('0x21')](function(){return BPromise[_0xa7e3('0x7f')](_0x10d14b,function(_0x3b3daf){return db[_0xa7e3('0x6b')][_0xa7e3('0x80')]({'where':{'UserId':_0x3b3daf['id'],'ChatQueueId':_0x1eb518[_0xa7e3('0x59')]['id']},'transaction':_0x5d5e47});});})[_0xa7e3('0x21')](function(){_0x10d14b[_0xa7e3('0x81')](function(_0x3f06ae){socket['emit'](_0xa7e3('0x82'),{'UserId':_0x3f06ae['id'],'ChatQueueId':_0x33b07f['id']});});});});});}})[_0xa7e3('0x21')](respondWithStatusCode(_0x2fdbe6,null))['catch'](handleError(_0x2fdbe6,null));};exports['removeTeams']=function(_0x217b20,_0x3a669c,_0x6b0b10){return db[_0xa7e3('0x75')][_0xa7e3('0x55')]({'where':{'id':_0x217b20['query'][_0xa7e3('0x77')]},'attributes':['id'],'include':[{'model':db[_0xa7e3('0x78')],'as':_0xa7e3('0x79'),'attributes':['id'],'raw':!![]}]})[_0xa7e3('0x21')](handleEntityNotFound(_0x3a669c,null))[_0xa7e3('0x21')](function(_0x206062){var _0x2aeb3b=_['map'](_0x206062,'id');var _0x326597=[];var _0x4c7d41=[];var _0x54f299=squel[_0xa7e3('0x83')]();_0x54f299['field'](_0xa7e3('0x84'))[_0xa7e3('0x85')](_0xa7e3('0x86'),'tq')['join'](_0xa7e3('0x87'),'ut',_0xa7e3('0x88'))[_0xa7e3('0x4e')](_0xa7e3('0x89'),_0x217b20[_0xa7e3('0x59')]['id']);for(var _0x3583dd=0x0;_0x3583dd<_0x206062[_0xa7e3('0x5a')];_0x3583dd+=0x1){let _0x28b8c3=_0x206062[_0x3583dd];for(var _0x24750e=0x0;_0x24750e<_0x28b8c3[_0xa7e3('0x79')][_0xa7e3('0x5a')];_0x24750e+=0x1){let _0x256c91=_0x28b8c3[_0xa7e3('0x79')][_0x24750e];var _0x5eb48a=_0x54f299[_0xa7e3('0x8a')]();_0x5eb48a[_0xa7e3('0x4e')]('ut.UserId\x20=\x20?',_0x256c91['id']);_0x4c7d41['push'](db['sequelize'][_0xa7e3('0x46')](_0x5eb48a[_0xa7e3('0x8b')](),{'type':db['sequelize'][_0xa7e3('0x8c')][_0xa7e3('0x8d')]})[_0xa7e3('0x21')](function(_0x70b3d){if(_0x70b3d[_0xa7e3('0x5a')]===0x1){return _0x256c91['id'];}else{var _0x5325ee=_[_0xa7e3('0x8e')](_['map'](_0x70b3d,_0xa7e3('0x8f')),function(_0x4a6eac){return _[_0xa7e3('0x90')](_0x2aeb3b,_0x4a6eac);});if(_0x5325ee){return _0x256c91['id'];}}}));}}return BPromise[_0xa7e3('0x91')](_0x4c7d41)[_0xa7e3('0x21')](function(_0x3036fd){_0x326597=_(_0x326597)[_0xa7e3('0x92')](_0x3036fd)[_0xa7e3('0x93')]()['value']();return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x217b20['params']['id']}})[_0xa7e3('0x21')](function(_0x50e70e){return db[_0xa7e3('0x7d')][_0xa7e3('0x7e')](function(_0x326af0){return _0x50e70e['removeTeams'](_0x217b20['query'][_0xa7e3('0x77')],{'transaction':_0x326af0})[_0xa7e3('0x21')](function(){if(!_['isEmpty'](_0x326597)){return _0x50e70e[_0xa7e3('0x94')](_0x326597,{'transaction':_0x326af0});}})[_0xa7e3('0x21')](function(){_0x326597['forEach'](function(_0x1796b0){socket[_0xa7e3('0x95')](_0xa7e3('0x96'),{'UserId':_0x1796b0,'ChatQueueId':_0x50e70e['id']});});});});});});})[_0xa7e3('0x21')](respondWithStatusCode(_0x3a669c,null))[_0xa7e3('0x57')](handleError(_0x3a669c,null));};exports[_0xa7e3('0x97')]=function(_0x2cf52f,_0x45973b,_0x5ef3cd){return db[_0xa7e3('0x40')][_0xa7e3('0x5d')]({'where':{'id':_0x2cf52f['params']['id']}})[_0xa7e3('0x21')](handleEntityNotFound(_0x45973b,null))[_0xa7e3('0x21')](function(_0x3de09d){if(_0x3de09d){return _0x3de09d[_0xa7e3('0x97')](_0x2cf52f[_0xa7e3('0x5f')][_0xa7e3('0x77')],_[_0xa7e3('0x98')](_0x2cf52f['body'],['ids','id'])||{})[_0xa7e3('0x99')](function(_0x494b08){for(var _0x4a047a=0x0;_0x4a047a<_0x2cf52f[_0xa7e3('0x5f')]['ids'][_0xa7e3('0x5a')];_0x4a047a+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x2cf52f[_0xa7e3('0x5f')][_0xa7e3('0x77')][_0x4a047a]),'ChatQueueId':Number(_0x2cf52f[_0xa7e3('0x59')]['id'])});}return _0x494b08;});}})[_0xa7e3('0x21')](respondWithResult(_0x45973b,null))[_0xa7e3('0x57')](handleError(_0x45973b,null));};exports[_0xa7e3('0x94')]=function(_0x4ccf8b,_0x40a3b2,_0x23762a){return db['ChatQueue'][_0xa7e3('0x5d')]({'where':{'id':_0x4ccf8b['params']['id']}})['then'](handleEntityNotFound(_0x40a3b2,null))[_0xa7e3('0x21')](function(_0x583722){if(_0x583722){return _0x583722[_0xa7e3('0x94')](_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')])[_0xa7e3('0x21')](function(){if(_[_0xa7e3('0x9a')](_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')])){for(var _0x1eee84=0x0;_0x1eee84<_0x4ccf8b[_0xa7e3('0x46')][_0xa7e3('0x77')][_0xa7e3('0x5a')];_0x1eee84+=0x1){socket[_0xa7e3('0x95')](_0xa7e3('0x96'),{'UserId':Number(_0x4ccf8b['query'][_0xa7e3('0x77')][_0x1eee84]),'ChatQueueId':Number(_0x4ccf8b['params']['id'])});}}else{socket['emit'](_0xa7e3('0x96'),{'UserId':Number(_0x4ccf8b[_0xa7e3('0x46')]['ids']),'ChatQueueId':Number(_0x4ccf8b['params']['id'])});}});}})[_0xa7e3('0x21')](respondWithStatusCode(_0x40a3b2,null))[_0xa7e3('0x57')](handleError(_0x40a3b2,null));};exports[_0xa7e3('0x9b')]=function(_0x385ff5,_0xc1bbb9,_0x54df16){var _0x29bbb3={};var _0x3edd23={};var _0x34f9b7;var _0x17d08a;return db[_0xa7e3('0x40')][_0xa7e3('0x6a')]({'where':{'id':_0x385ff5['params']['id']}})['then'](handleEntityNotFound(_0xc1bbb9,null))[_0xa7e3('0x21')](function(_0x1e572c){if(_0x1e572c){_0x34f9b7=_0x1e572c;_0x3edd23[_0xa7e3('0x44')]=_[_0xa7e3('0x45')](db[_0xa7e3('0x78')][_0xa7e3('0x41')]);_0x3edd23[_0xa7e3('0x46')]=_[_0xa7e3('0x45')](_0x385ff5['query']);_0x3edd23[_0xa7e3('0x47')]=_[_0xa7e3('0x48')](_0x3edd23[_0xa7e3('0x44')],_0x3edd23[_0xa7e3('0x46')]);_0x29bbb3[_0xa7e3('0x49')]=_['intersection'](_0x3edd23[_0xa7e3('0x44')],qs['fields'](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x4a')]));_0x29bbb3[_0xa7e3('0x49')]=_0x29bbb3['attributes'][_0xa7e3('0x5a')]?_0x29bbb3[_0xa7e3('0x49')]:_0x3edd23['model'];_0x29bbb3[_0xa7e3('0x4c')]=qs[_0xa7e3('0x4d')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x4d')]);_0x29bbb3[_0xa7e3('0x4e')]=qs['filters'](_[_0xa7e3('0x4f')](_0x385ff5[_0xa7e3('0x46')],_0x3edd23[_0xa7e3('0x47')]));if(_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x52')]){_0x29bbb3[_0xa7e3('0x4e')]=_['merge'](_0x29bbb3[_0xa7e3('0x4e')],{'$or':_[_0xa7e3('0x3f')](_0x29bbb3[_0xa7e3('0x49')],function(_0x11fad4){var _0xf36f56={};_0xf36f56[_0x11fad4]={'$like':'%'+_0x385ff5['query'][_0xa7e3('0x52')]+'%'};return _0xf36f56;})});}_0x29bbb3=_['merge']({},_0x29bbb3,_0x385ff5[_0xa7e3('0x53')]);return _0x34f9b7[_0xa7e3('0x9b')](_0x29bbb3);}})['then'](function(_0x45d261){if(_0x45d261){_0x17d08a=_0x45d261[_0xa7e3('0x5a')];if(!_0x385ff5['query']['hasOwnProperty'](_0xa7e3('0x6c'))){_0x29bbb3['limit']=qs[_0xa7e3('0x32')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x32')]);_0x29bbb3['offset']=qs[_0xa7e3('0x30')](_0x385ff5[_0xa7e3('0x46')][_0xa7e3('0x30')]);}return _0x34f9b7[_0xa7e3('0x9b')](_0x29bbb3);}})[_0xa7e3('0x21')](function(_0xd319de){if(_0xd319de){return _0xd319de?{'count':_0x17d08a,'rows':_0xd319de}:null;}})[_0xa7e3('0x21')](respondWithResult(_0xc1bbb9,null))['catch'](handleError(_0xc1bbb9,null));};
\ No newline at end of file
+var _0x41ab=['createdAt','rows','format','%s/%s','SIP','Team','getTeams','addTeams','Agents','online','voicePause','flatMap','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','toString','sequelize','SELECT','every','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','userChatQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','client','http','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatQueue,\x20%s,\x20%s','result','catch','sendStatus','status','json','undefined','count','offset','limit','set','apply','save','update','then','destroy','get','ChatQueues','end','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','options','ChatQueue','includeAll','include','findAll','show','params','length','merge','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','nolimit','order','User','findAndCountAll','UserId','chatPause','updatedAt'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x41ab,0xc0));var _0xb41a=function(_0x1a4c58,_0x3ae4b4){_0x1a4c58=_0x1a4c58-0x0;var _0x156fe7=_0x41ab[_0x1a4c58];return _0x156fe7;};'use strict';var emlformat=require(_0xb41a('0x0'));var rimraf=require(_0xb41a('0x1'));var zipdir=require(_0xb41a('0x2'));var jsonpatch=require(_0xb41a('0x3'));var rp=require(_0xb41a('0x4'));var moment=require(_0xb41a('0x5'));var BPromise=require(_0xb41a('0x6'));var Mustache=require('mustache');var util=require(_0xb41a('0x7'));var path=require('path');var sox=require(_0xb41a('0x8'));var csv=require(_0xb41a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb41a('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb41a('0xb'));var jsforce=require(_0xb41a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb41a('0x9'));var querystring=require(_0xb41a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb41a('0xe'));var authService=require(_0xb41a('0xf'));var qs=require(_0xb41a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb41a('0x11'))(_0xb41a('0x12'));var utils=require(_0xb41a('0x13'));var config=require(_0xb41a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xb41a('0x15'))['db'];config[_0xb41a('0x16')]=_['defaults'](config[_0xb41a('0x16')],{'host':_0xb41a('0x17'),'port':0x18eb});var socket=require(_0xb41a('0x18'))(new Redis(config[_0xb41a('0x16')]));require('./chatQueue.socket')['register'](socket);var jayson=require(_0xb41a('0x19'));var client=jayson[_0xb41a('0x1a')][_0xb41a('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x1740a9,_0x5baf5f,_0x5286d7,_0x44a945){return new BPromise(function(_0x1c7eb8,_0x526774){var _0x29035a=_0x44a945||client;return _0x29035a['request'](_0x1740a9,_0x5286d7)['then'](function(_0x391cc6){logger[_0xb41a('0x1c')]('ChatQueue,\x20%s,\x20%s',_0x5baf5f,_0xb41a('0x1d'));logger[_0xb41a('0x1e')](_0xb41a('0x1f'),_0x5baf5f,_0xb41a('0x1d'),JSON[_0xb41a('0x20')](_0x391cc6));if(_0x391cc6[_0xb41a('0x21')]){if(_0x391cc6[_0xb41a('0x21')][_0xb41a('0x22')]===0x1f4){logger[_0xb41a('0x21')]('ChatQueue,\x20%s,\x20%s',_0x5baf5f,_0x391cc6[_0xb41a('0x21')][_0xb41a('0x23')]);return _0x526774(_0x391cc6['error'][_0xb41a('0x23')]);}logger[_0xb41a('0x21')](_0xb41a('0x24'),_0x5baf5f,_0x391cc6[_0xb41a('0x21')][_0xb41a('0x23')]);return _0x1c7eb8(_0x391cc6[_0xb41a('0x21')][_0xb41a('0x23')]);}else{logger[_0xb41a('0x1c')](_0xb41a('0x24'),_0x5baf5f,_0xb41a('0x1d'));_0x1c7eb8(_0x391cc6[_0xb41a('0x25')]['message']);}})[_0xb41a('0x26')](function(_0x658c2d){logger[_0xb41a('0x21')](_0xb41a('0x24'),_0x5baf5f,_0x658c2d);_0x526774(_0x658c2d);});});}function respondWithStatusCode(_0x92afd8,_0x43b27b){_0x43b27b=_0x43b27b||0xcc;return function(_0x429347){if(_0x429347){return _0x92afd8[_0xb41a('0x27')](_0x43b27b);}return _0x92afd8[_0xb41a('0x28')](_0x43b27b)['end']();};}function respondWithResult(_0x397442,_0xa0753f){_0xa0753f=_0xa0753f||0xc8;return function(_0x40a427){if(_0x40a427){return _0x397442[_0xb41a('0x28')](_0xa0753f)[_0xb41a('0x29')](_0x40a427);}};}function respondWithFilteredResult(_0x3cfa1c,_0x5050ed){return function(_0x4ef7c5){if(_0x4ef7c5){var _0x205a8c=typeof _0x5050ed['offset']===_0xb41a('0x2a')&&typeof _0x5050ed['limit']==='undefined';var _0x544a94=_0x4ef7c5[_0xb41a('0x2b')];var _0x1e3320=_0x205a8c?0x0:_0x5050ed[_0xb41a('0x2c')];var _0x2c5926=_0x205a8c?_0x4ef7c5[_0xb41a('0x2b')]:_0x5050ed[_0xb41a('0x2c')]+_0x5050ed[_0xb41a('0x2d')];var _0x248944;if(_0x2c5926>=_0x544a94){_0x2c5926=_0x544a94;_0x248944=0xc8;}else{_0x248944=0xce;}_0x3cfa1c[_0xb41a('0x28')](_0x248944);return _0x3cfa1c[_0xb41a('0x2e')]('Content-Range',_0x1e3320+'-'+_0x2c5926+'/'+_0x544a94)[_0xb41a('0x29')](_0x4ef7c5);}return null;};}function patchUpdates(_0x3cd0c4){return function(_0x542589){try{jsonpatch[_0xb41a('0x2f')](_0x542589,_0x3cd0c4,!![]);}catch(_0x54a9cc){return BPromise['reject'](_0x54a9cc);}return _0x542589[_0xb41a('0x30')]();};}function saveUpdates(_0x2ff09b,_0x121ba2){return function(_0x29e468){if(_0x29e468){return _0x29e468[_0xb41a('0x31')](_0x2ff09b)[_0xb41a('0x32')](function(_0x25a31e){return _0x25a31e;});}return null;};}function removeEntity(_0x5f9ebd,_0x2b0335){return function(_0x513de6){if(_0x513de6){return _0x513de6[_0xb41a('0x33')]()[_0xb41a('0x32')](function(){var _0x179968=_0x513de6[_0xb41a('0x34')]({'plain':!![]});var _0x24f25e=_0xb41a('0x35');return db['UserProfileResource'][_0xb41a('0x33')]({'where':{'type':_0x24f25e,'resourceId':_0x179968['id']}})[_0xb41a('0x32')](function(){return _0x513de6;});})['then'](function(){_0x5f9ebd[_0xb41a('0x28')](0xcc)[_0xb41a('0x36')]();});}};}function handleEntityNotFound(_0x44af54,_0x2e86ec){return function(_0xf040a9){if(!_0xf040a9){_0x44af54[_0xb41a('0x27')](0x194);}return _0xf040a9;};}function handleError(_0xa3324,_0x358386){_0x358386=_0x358386||0x1f4;return function(_0x432cc7){logger[_0xb41a('0x21')](_0x432cc7['stack']);if(_0x432cc7[_0xb41a('0x37')]){delete _0x432cc7[_0xb41a('0x37')];}_0xa3324[_0xb41a('0x28')](_0x358386)[_0xb41a('0x38')](_0x432cc7);};}exports[_0xb41a('0x39')]=function(_0x993084,_0x415ad8){var _0x57afb5={},_0x556e42={},_0x193099={'count':0x0,'rows':[]};var _0x460b1b=_['map'](db['ChatQueue'][_0xb41a('0x3a')],function(_0x2c3ded){return{'name':_0x2c3ded[_0xb41a('0x3b')],'type':_0x2c3ded[_0xb41a('0x3c')][_0xb41a('0x3d')]};});_0x556e42[_0xb41a('0x3e')]=_[_0xb41a('0x3f')](_0x460b1b,_0xb41a('0x37'));_0x556e42[_0xb41a('0x40')]=_[_0xb41a('0x41')](_0x993084['query']);_0x556e42[_0xb41a('0x42')]=_[_0xb41a('0x43')](_0x556e42[_0xb41a('0x3e')],_0x556e42['query']);_0x57afb5[_0xb41a('0x44')]=_[_0xb41a('0x43')](_0x556e42[_0xb41a('0x3e')],qs[_0xb41a('0x45')](_0x993084[_0xb41a('0x40')]['fields']));_0x57afb5['attributes']=_0x57afb5[_0xb41a('0x44')]['length']?_0x57afb5[_0xb41a('0x44')]:_0x556e42[_0xb41a('0x3e')];if(!_0x993084[_0xb41a('0x40')][_0xb41a('0x46')]('nolimit')){_0x57afb5[_0xb41a('0x2d')]=qs[_0xb41a('0x2d')](_0x993084[_0xb41a('0x40')][_0xb41a('0x2d')]);_0x57afb5[_0xb41a('0x2c')]=qs['offset'](_0x993084[_0xb41a('0x40')][_0xb41a('0x2c')]);}_0x57afb5['order']=qs[_0xb41a('0x47')](_0x993084[_0xb41a('0x40')][_0xb41a('0x47')]);_0x57afb5[_0xb41a('0x48')]=qs['filters'](_[_0xb41a('0x49')](_0x993084[_0xb41a('0x40')],_0x556e42['filters']),_0x460b1b);if(_0x993084[_0xb41a('0x40')][_0xb41a('0x4a')]){_0x57afb5['where']=_['merge'](_0x57afb5[_0xb41a('0x48')],{'$or':_[_0xb41a('0x3f')](_0x460b1b,function(_0x5ecf74){if(_0x5ecf74[_0xb41a('0x3c')]!==_0xb41a('0x4b')){var _0xbe4669={};_0xbe4669[_0x5ecf74[_0xb41a('0x37')]]={'$like':'%'+_0x993084[_0xb41a('0x40')]['filter']+'%'};return _0xbe4669;}})});}_0x57afb5=_['merge']({},_0x57afb5,_0x993084[_0xb41a('0x4c')]);var _0x5566e6={'where':_0x57afb5[_0xb41a('0x48')]};return db[_0xb41a('0x4d')][_0xb41a('0x2b')](_0x5566e6)[_0xb41a('0x32')](function(_0x4e3cdd){_0x193099[_0xb41a('0x2b')]=_0x4e3cdd;if(_0x993084[_0xb41a('0x40')][_0xb41a('0x4e')]){_0x57afb5[_0xb41a('0x4f')]=[{'all':!![]}];}return db[_0xb41a('0x4d')][_0xb41a('0x50')](_0x57afb5);})[_0xb41a('0x32')](function(_0x46c4b6){_0x193099['rows']=_0x46c4b6;return _0x193099;})['then'](respondWithFilteredResult(_0x415ad8,_0x57afb5))['catch'](handleError(_0x415ad8,null));};exports[_0xb41a('0x51')]=function(_0x2055a9,_0x5400ce){var _0x1811d3={'raw':!![],'where':{'id':_0x2055a9[_0xb41a('0x52')]['id']}},_0x38ff38={};_0x38ff38[_0xb41a('0x3e')]=_['keys'](db[_0xb41a('0x4d')][_0xb41a('0x3a')]);_0x38ff38[_0xb41a('0x40')]=_['keys'](_0x2055a9[_0xb41a('0x40')]);_0x38ff38[_0xb41a('0x42')]=_[_0xb41a('0x43')](_0x38ff38['model'],_0x38ff38[_0xb41a('0x40')]);_0x1811d3['attributes']=_[_0xb41a('0x43')](_0x38ff38[_0xb41a('0x3e')],qs[_0xb41a('0x45')](_0x2055a9['query']['fields']));_0x1811d3[_0xb41a('0x44')]=_0x1811d3[_0xb41a('0x44')][_0xb41a('0x53')]?_0x1811d3[_0xb41a('0x44')]:_0x38ff38[_0xb41a('0x3e')];if(_0x2055a9[_0xb41a('0x40')]['includeAll']){_0x1811d3[_0xb41a('0x4f')]=[{'all':!![]}];}_0x1811d3=_[_0xb41a('0x54')]({},_0x1811d3,_0x2055a9[_0xb41a('0x4c')]);return db[_0xb41a('0x4d')][_0xb41a('0x55')](_0x1811d3)['then'](handleEntityNotFound(_0x5400ce,null))['then'](respondWithResult(_0x5400ce,null))[_0xb41a('0x26')](handleError(_0x5400ce,null));};exports[_0xb41a('0x56')]=function(_0x37bd5d,_0x3759bd){return db[_0xb41a('0x4d')][_0xb41a('0x56')](_0x37bd5d['body'],{})[_0xb41a('0x32')](function(_0x823bfb){var _0x5101bc=_0x37bd5d[_0xb41a('0x57')][_0xb41a('0x34')]({'plain':!![]});if(!_0x5101bc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5101bc[_0xb41a('0x58')]==='user'){var _0x37c84c=_0x823bfb[_0xb41a('0x34')]({'plain':!![]});var _0x141cba=_0xb41a('0x35');return db[_0xb41a('0x59')][_0xb41a('0x55')]({'where':{'name':_0x141cba,'userProfileId':_0x5101bc[_0xb41a('0x5a')]},'raw':!![]})[_0xb41a('0x32')](function(_0x4299f8){if(_0x4299f8&&_0x4299f8[_0xb41a('0x5b')]===0x0){return db[_0xb41a('0x5c')][_0xb41a('0x56')]({'name':_0x37c84c[_0xb41a('0x37')],'resourceId':_0x37c84c['id'],'type':_0x4299f8[_0xb41a('0x37')],'sectionId':_0x4299f8['id']},{})[_0xb41a('0x32')](function(){return _0x823bfb;});}else{return _0x823bfb;}})[_0xb41a('0x26')](function(_0x1a41b9){logger[_0xb41a('0x21')](_0xb41a('0x5d'),_0x1a41b9);throw _0x1a41b9;});}return _0x823bfb;})['then'](respondWithResult(_0x3759bd,0xc9))['catch'](handleError(_0x3759bd,null));};exports[_0xb41a('0x31')]=function(_0xab3387,_0x3343e){if(_0xab3387[_0xb41a('0x5e')]['id']){delete _0xab3387[_0xb41a('0x5e')]['id'];}return db[_0xb41a('0x4d')][_0xb41a('0x55')]({'where':{'id':_0xab3387[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](handleEntityNotFound(_0x3343e,null))[_0xb41a('0x32')](saveUpdates(_0xab3387[_0xb41a('0x5e')],null))[_0xb41a('0x32')](respondWithResult(_0x3343e,null))[_0xb41a('0x26')](handleError(_0x3343e,null));};exports[_0xb41a('0x33')]=function(_0x456c1b,_0x1aa404){return db['ChatQueue'][_0xb41a('0x55')]({'where':{'id':_0x456c1b[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](handleEntityNotFound(_0x1aa404,null))[_0xb41a('0x32')](removeEntity(_0x1aa404,null))['catch'](handleError(_0x1aa404,null));};exports[_0xb41a('0x5f')]=function(_0x1f3561,_0x888c1f){return db[_0xb41a('0x4d')]['describe']()[_0xb41a('0x32')](respondWithResult(_0x888c1f,null))[_0xb41a('0x26')](handleError(_0x888c1f,null));};exports[_0xb41a('0x60')]=function(_0x19b711,_0x38dd97,_0x1f6694){var _0x2542e7={'raw':!![],'where':{}},_0x1e61a3={},_0x448867;return db[_0xb41a('0x4d')][_0xb41a('0x61')]({'where':{'id':_0x19b711[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](handleEntityNotFound(_0x38dd97,null))[_0xb41a('0x32')](function(_0x691f5c){if(_0x691f5c){_0x448867=_0x691f5c[_0xb41a('0x34')]({'plain':!![]});_0x1e61a3[_0xb41a('0x3e')]=_[_0xb41a('0x41')](db[_0xb41a('0x62')][_0xb41a('0x3a')]);_0x1e61a3[_0xb41a('0x40')]=_[_0xb41a('0x41')](_0x19b711[_0xb41a('0x40')]);_0x1e61a3[_0xb41a('0x42')]=_[_0xb41a('0x43')](_0x1e61a3[_0xb41a('0x3e')],_0x1e61a3[_0xb41a('0x40')]);_0x2542e7[_0xb41a('0x44')]=_[_0xb41a('0x43')](_0x1e61a3['model'],qs[_0xb41a('0x45')](_0x19b711[_0xb41a('0x40')][_0xb41a('0x45')]));_0x2542e7[_0xb41a('0x44')]=_0x2542e7[_0xb41a('0x44')][_0xb41a('0x53')]?_0x2542e7[_0xb41a('0x44')]:_0x1e61a3[_0xb41a('0x3e')];if(!_0x19b711[_0xb41a('0x40')][_0xb41a('0x46')](_0xb41a('0x63'))){_0x2542e7['limit']=qs[_0xb41a('0x2d')](_0x19b711[_0xb41a('0x40')][_0xb41a('0x2d')]);_0x2542e7[_0xb41a('0x2c')]=qs[_0xb41a('0x2c')](_0x19b711['query'][_0xb41a('0x2c')]);}_0x2542e7[_0xb41a('0x64')]=qs[_0xb41a('0x47')](_0x19b711[_0xb41a('0x40')]['sort']);_0x2542e7['where']=qs[_0xb41a('0x42')](_[_0xb41a('0x49')](_0x19b711[_0xb41a('0x40')],_0x1e61a3['filters']));_0x2542e7[_0xb41a('0x48')]['ChatQueueId']=_0x691f5c['id'];if(_0x19b711[_0xb41a('0x40')][_0xb41a('0x4a')]){_0x2542e7[_0xb41a('0x48')]=_['merge'](_0x2542e7[_0xb41a('0x48')],{'$or':_[_0xb41a('0x3f')](_0x2542e7[_0xb41a('0x44')],function(_0x15c383){var _0x964b9a={};_0x964b9a[_0x15c383]={'$like':'%'+_0x19b711[_0xb41a('0x40')][_0xb41a('0x4a')]+'%'};return _0x964b9a;})});}_0x2542e7=_[_0xb41a('0x54')]({},_0x2542e7,_0x19b711[_0xb41a('0x4c')]);return db['UserChatQueue'][_0xb41a('0x50')](_0x2542e7);}})[_0xb41a('0x32')](function(_0x333b4a){if(_0x333b4a){return db[_0xb41a('0x65')][_0xb41a('0x66')]({'where':{'id':_[_0xb41a('0x3f')](_0x333b4a,_0xb41a('0x67')),'role':'agent'},'attributes':['id',_0xb41a('0x37'),_0xb41a('0x68'),_0xb41a('0x69'),_0xb41a('0x6a')]});}})[_0xb41a('0x32')](function(_0xbe9705){if(_0xbe9705){return{'count':_0xbe9705[_0xb41a('0x2b')],'rows':_[_0xb41a('0x3f')](_0xbe9705[_0xb41a('0x6b')],function(_0x240d51){return{'membername':_0x240d51['name'],'UserId':_0x240d51['id'],'queue_name':_0x448867['name'],'ChatQueueId':_0x448867['id'],'interface':util[_0xb41a('0x6c')](_0xb41a('0x6d'),_0xb41a('0x6e'),_0x240d51[_0xb41a('0x37')]),'penalty':0x0,'paused':_0x240d51[_0xb41a('0x68')],'createdAt':_0x240d51[_0xb41a('0x6a')],'updatedAt':_0x240d51[_0xb41a('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb41a('0x32')](respondWithFilteredResult(_0x38dd97,_0x2542e7))[_0xb41a('0x26')](handleError(_0x38dd97,null));};exports['getTeams']=function(_0x1b2852,_0xe35630,_0x53ea1d){var _0xe425c6={};var _0x3d73a1={};var _0x2ecdf7;var _0x3b6af9;return db[_0xb41a('0x4d')][_0xb41a('0x61')]({'where':{'id':_0x1b2852['params']['id']}})[_0xb41a('0x32')](handleEntityNotFound(_0xe35630,null))['then'](function(_0x71054f){if(_0x71054f){_0x2ecdf7=_0x71054f;_0x3d73a1['model']=_[_0xb41a('0x41')](db[_0xb41a('0x6f')][_0xb41a('0x3a')]);_0x3d73a1[_0xb41a('0x40')]=_[_0xb41a('0x41')](_0x1b2852['query']);_0x3d73a1['filters']=_['intersection'](_0x3d73a1[_0xb41a('0x3e')],_0x3d73a1[_0xb41a('0x40')]);_0xe425c6['attributes']=_[_0xb41a('0x43')](_0x3d73a1[_0xb41a('0x3e')],qs['fields'](_0x1b2852[_0xb41a('0x40')][_0xb41a('0x45')]));_0xe425c6['attributes']=_0xe425c6[_0xb41a('0x44')][_0xb41a('0x53')]?_0xe425c6[_0xb41a('0x44')]:_0x3d73a1[_0xb41a('0x3e')];_0xe425c6[_0xb41a('0x64')]=qs[_0xb41a('0x47')](_0x1b2852[_0xb41a('0x40')][_0xb41a('0x47')]);_0xe425c6[_0xb41a('0x48')]=qs[_0xb41a('0x42')](_[_0xb41a('0x49')](_0x1b2852[_0xb41a('0x40')],_0x3d73a1[_0xb41a('0x42')]));if(_0x1b2852[_0xb41a('0x40')][_0xb41a('0x4a')]){_0xe425c6[_0xb41a('0x48')]=_[_0xb41a('0x54')](_0xe425c6['where'],{'$or':_['map'](_0xe425c6[_0xb41a('0x44')],function(_0x3a8945){var _0x545f66={};_0x545f66[_0x3a8945]={'$like':'%'+_0x1b2852['query'][_0xb41a('0x4a')]+'%'};return _0x545f66;})});}_0xe425c6=_['merge']({},_0xe425c6,_0x1b2852[_0xb41a('0x4c')]);return _0x2ecdf7[_0xb41a('0x70')](_0xe425c6);}})['then'](function(_0x31b764){if(_0x31b764){_0x3b6af9=_0x31b764[_0xb41a('0x53')];if(!_0x1b2852['query']['hasOwnProperty']('nolimit')){_0xe425c6[_0xb41a('0x2d')]=qs['limit'](_0x1b2852[_0xb41a('0x40')][_0xb41a('0x2d')]);_0xe425c6['offset']=qs[_0xb41a('0x2c')](_0x1b2852[_0xb41a('0x40')]['offset']);}return _0x2ecdf7['getTeams'](_0xe425c6);}})['then'](function(_0x57beaf){if(_0x57beaf){return _0x57beaf?{'count':_0x3b6af9,'rows':_0x57beaf}:null;}})[_0xb41a('0x32')](respondWithResult(_0xe35630,null))[_0xb41a('0x26')](handleError(_0xe35630,null));};exports[_0xb41a('0x71')]=function(_0x5d32d7,_0x17d81c,_0x4443ae){var _0xf1801a=_0x5d32d7[_0xb41a('0x5e')]['ids'];return db['Team'][_0xb41a('0x50')]({'where':{'id':_0xf1801a},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb41a('0x72'),'attributes':['id',_0xb41a('0x37'),_0xb41a('0x73'),_0xb41a('0x74'),'interface'],'raw':!![]}]})[_0xb41a('0x32')](function(_0x52ea2d){if(_0x52ea2d){var _0x3ad322=_[_0xb41a('0x75')](_0x52ea2d,function(_0x51c293){var _0x1dbb75=_0x51c293[_0xb41a('0x34')]({'plain':!![]});return _0x1dbb75[_0xb41a('0x72')];});return db[_0xb41a('0x4d')][_0xb41a('0x55')]({'where':{'id':_0x5d32d7[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](function(_0x3112b8){return db['sequelize'][_0xb41a('0x76')](function(_0x40be7c){return _0x3112b8[_0xb41a('0x71')](_0xf1801a,{'transaction':_0x40be7c})['then'](function(){return BPromise[_0xb41a('0x77')](_0x3ad322,function(_0x2ff913){return db[_0xb41a('0x62')][_0xb41a('0x78')]({'where':{'UserId':_0x2ff913['id'],'ChatQueueId':_0x5d32d7[_0xb41a('0x52')]['id']},'transaction':_0x40be7c});});})[_0xb41a('0x32')](function(){_0x3ad322[_0xb41a('0x79')](function(_0x150105){socket[_0xb41a('0x7a')](_0xb41a('0x7b'),{'UserId':_0x150105['id'],'ChatQueueId':_0x3112b8['id']});});});});});}})[_0xb41a('0x32')](respondWithStatusCode(_0x17d81c,null))[_0xb41a('0x26')](handleError(_0x17d81c,null));};exports[_0xb41a('0x7c')]=function(_0x3ee07e,_0x5dc94f,_0x4507f4){return db['Team'][_0xb41a('0x50')]({'where':{'id':_0x3ee07e[_0xb41a('0x40')][_0xb41a('0x7d')]},'attributes':['id'],'include':[{'model':db[_0xb41a('0x65')],'as':_0xb41a('0x72'),'attributes':['id'],'raw':!![]}]})[_0xb41a('0x32')](handleEntityNotFound(_0x5dc94f,null))[_0xb41a('0x32')](function(_0x24c919){var _0x291c5e=_[_0xb41a('0x3f')](_0x24c919,'id');var _0x10304c=[];var _0x4a70cd=[];var _0x2aac32=squel[_0xb41a('0x7e')]();_0x2aac32[_0xb41a('0x7f')](_0xb41a('0x80'))[_0xb41a('0x81')](_0xb41a('0x82'),'tq')['join'](_0xb41a('0x83'),'ut',_0xb41a('0x84'))['where']('ChatQueueId\x20=\x20?',_0x3ee07e[_0xb41a('0x52')]['id']);for(var _0x5809cc=0x0;_0x5809cc<_0x24c919[_0xb41a('0x53')];_0x5809cc+=0x1){let _0xbbb3f0=_0x24c919[_0x5809cc];for(var _0x1d09ad=0x0;_0x1d09ad<_0xbbb3f0[_0xb41a('0x72')][_0xb41a('0x53')];_0x1d09ad+=0x1){let _0x1cd4e8=_0xbbb3f0['Agents'][_0x1d09ad];var _0x47e46d=_0x2aac32['clone']();_0x47e46d[_0xb41a('0x48')]('ut.UserId\x20=\x20?',_0x1cd4e8['id']);_0x4a70cd['push'](db['sequelize'][_0xb41a('0x40')](_0x47e46d[_0xb41a('0x85')](),{'type':db[_0xb41a('0x86')]['QueryTypes'][_0xb41a('0x87')]})[_0xb41a('0x32')](function(_0x563b54){if(_0x563b54[_0xb41a('0x53')]===0x1){return _0x1cd4e8['id'];}else{var _0x19d8ab=_[_0xb41a('0x88')](_[_0xb41a('0x3f')](_0x563b54,'TeamId'),function(_0x4eae4c){return _['includes'](_0x291c5e,_0x4eae4c);});if(_0x19d8ab){return _0x1cd4e8['id'];}}}));}}return BPromise[_0xb41a('0x89')](_0x4a70cd)['then'](function(_0x4abe2c){_0x10304c=_(_0x10304c)[_0xb41a('0x8a')](_0x4abe2c)[_0xb41a('0x8b')]()[_0xb41a('0x8c')]();return db[_0xb41a('0x4d')][_0xb41a('0x55')]({'where':{'id':_0x3ee07e[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](function(_0x21eabe){return db['sequelize'][_0xb41a('0x76')](function(_0x5131ac){return _0x21eabe['removeTeams'](_0x3ee07e[_0xb41a('0x40')]['ids'],{'transaction':_0x5131ac})[_0xb41a('0x32')](function(){if(!_[_0xb41a('0x8d')](_0x10304c)){return _0x21eabe[_0xb41a('0x8e')](_0x10304c,{'transaction':_0x5131ac});}})[_0xb41a('0x32')](function(){_0x10304c[_0xb41a('0x79')](function(_0x3f73c1){socket['emit']('userChatQueue:remove',{'UserId':_0x3f73c1,'ChatQueueId':_0x21eabe['id']});});});});});});})[_0xb41a('0x32')](respondWithStatusCode(_0x5dc94f,null))[_0xb41a('0x26')](handleError(_0x5dc94f,null));};exports[_0xb41a('0x8f')]=function(_0x3fc9ce,_0x10a5af,_0x52c2c1){return db[_0xb41a('0x4d')][_0xb41a('0x55')]({'where':{'id':_0x3fc9ce[_0xb41a('0x52')]['id']}})[_0xb41a('0x32')](handleEntityNotFound(_0x10a5af,null))[_0xb41a('0x32')](function(_0x2dcf4a){if(_0x2dcf4a){return _0x2dcf4a[_0xb41a('0x8f')](_0x3fc9ce[_0xb41a('0x5e')][_0xb41a('0x7d')],_[_0xb41a('0x90')](_0x3fc9ce[_0xb41a('0x5e')],['ids','id'])||{})[_0xb41a('0x91')](function(_0xa8a371){for(var _0x39f1db=0x0;_0x39f1db<_0x3fc9ce[_0xb41a('0x5e')]['ids'][_0xb41a('0x53')];_0x39f1db+=0x1){socket['emit'](_0xb41a('0x7b'),{'UserId':Number(_0x3fc9ce[_0xb41a('0x5e')][_0xb41a('0x7d')][_0x39f1db]),'ChatQueueId':Number(_0x3fc9ce[_0xb41a('0x52')]['id'])});}return _0xa8a371;});}})[_0xb41a('0x32')](respondWithResult(_0x10a5af,null))['catch'](handleError(_0x10a5af,null));};exports[_0xb41a('0x8e')]=function(_0x57e4d3,_0x2c8832,_0x8f2bdc){return db[_0xb41a('0x4d')][_0xb41a('0x55')]({'where':{'id':_0x57e4d3[_0xb41a('0x52')]['id']}})['then'](handleEntityNotFound(_0x2c8832,null))['then'](function(_0x2b94e5){if(_0x2b94e5){return _0x2b94e5[_0xb41a('0x8e')](_0x57e4d3['query']['ids'])['then'](function(){if(_[_0xb41a('0x92')](_0x57e4d3[_0xb41a('0x40')][_0xb41a('0x7d')])){for(var _0x3cdf35=0x0;_0x3cdf35<_0x57e4d3[_0xb41a('0x40')][_0xb41a('0x7d')][_0xb41a('0x53')];_0x3cdf35+=0x1){socket['emit'](_0xb41a('0x93'),{'UserId':Number(_0x57e4d3[_0xb41a('0x40')][_0xb41a('0x7d')][_0x3cdf35]),'ChatQueueId':Number(_0x57e4d3[_0xb41a('0x52')]['id'])});}}else{socket[_0xb41a('0x7a')](_0xb41a('0x93'),{'UserId':Number(_0x57e4d3[_0xb41a('0x40')][_0xb41a('0x7d')]),'ChatQueueId':Number(_0x57e4d3[_0xb41a('0x52')]['id'])});}});}})[_0xb41a('0x32')](respondWithStatusCode(_0x2c8832,null))[_0xb41a('0x26')](handleError(_0x2c8832,null));};exports['getAgents']=function(_0x7e1d06,_0x301063,_0x251022){var _0x4de052={};var _0x349ba6={};var _0x4b96f5;var _0x15f295;return db['ChatQueue'][_0xb41a('0x61')]({'where':{'id':_0x7e1d06[_0xb41a('0x52')]['id']}})['then'](handleEntityNotFound(_0x301063,null))[_0xb41a('0x32')](function(_0x345bba){if(_0x345bba){_0x4b96f5=_0x345bba;_0x349ba6['model']=_[_0xb41a('0x41')](db[_0xb41a('0x65')][_0xb41a('0x3a')]);_0x349ba6[_0xb41a('0x40')]=_[_0xb41a('0x41')](_0x7e1d06['query']);_0x349ba6[_0xb41a('0x42')]=_[_0xb41a('0x43')](_0x349ba6[_0xb41a('0x3e')],_0x349ba6[_0xb41a('0x40')]);_0x4de052[_0xb41a('0x44')]=_['intersection'](_0x349ba6['model'],qs[_0xb41a('0x45')](_0x7e1d06[_0xb41a('0x40')][_0xb41a('0x45')]));_0x4de052[_0xb41a('0x44')]=_0x4de052[_0xb41a('0x44')]['length']?_0x4de052['attributes']:_0x349ba6[_0xb41a('0x3e')];_0x4de052[_0xb41a('0x64')]=qs[_0xb41a('0x47')](_0x7e1d06[_0xb41a('0x40')][_0xb41a('0x47')]);_0x4de052[_0xb41a('0x48')]=qs[_0xb41a('0x42')](_[_0xb41a('0x49')](_0x7e1d06[_0xb41a('0x40')],_0x349ba6[_0xb41a('0x42')]));if(_0x7e1d06[_0xb41a('0x40')]['filter']){_0x4de052['where']=_[_0xb41a('0x54')](_0x4de052[_0xb41a('0x48')],{'$or':_['map'](_0x4de052[_0xb41a('0x44')],function(_0x55d395){var _0x26195={};_0x26195[_0x55d395]={'$like':'%'+_0x7e1d06['query'][_0xb41a('0x4a')]+'%'};return _0x26195;})});}_0x4de052=_[_0xb41a('0x54')]({},_0x4de052,_0x7e1d06[_0xb41a('0x4c')]);return _0x4b96f5[_0xb41a('0x94')](_0x4de052);}})[_0xb41a('0x32')](function(_0xd5900e){if(_0xd5900e){_0x15f295=_0xd5900e[_0xb41a('0x53')];if(!_0x7e1d06[_0xb41a('0x40')][_0xb41a('0x46')](_0xb41a('0x63'))){_0x4de052['limit']=qs[_0xb41a('0x2d')](_0x7e1d06[_0xb41a('0x40')][_0xb41a('0x2d')]);_0x4de052[_0xb41a('0x2c')]=qs[_0xb41a('0x2c')](_0x7e1d06['query'][_0xb41a('0x2c')]);}return _0x4b96f5[_0xb41a('0x94')](_0x4de052);}})[_0xb41a('0x32')](function(_0x1fdd74){if(_0x1fdd74){return _0x1fdd74?{'count':_0x15f295,'rows':_0x1fdd74}:null;}})['then'](respondWithResult(_0x301063,null))[_0xb41a('0x26')](handleError(_0x301063,null));};
\ No newline at end of file
index 0803d8b..fae45ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8881=['exports','events','../../mysqldb','ChatQueue','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x561432,_0x21ec65){var _0x3485b6=function(_0x3e022f){while(--_0x3e022f){_0x561432['push'](_0x561432['shift']());}};_0x3485b6(++_0x21ec65);}(_0x8881,0xd0));var _0x1888=function(_0x2b55b5,_0x78505e){_0x2b55b5=_0x2b55b5-0x0;var _0x103d28=_0x8881[_0x2b55b5];return _0x103d28;};'use strict';var EventEmitter=require(_0x1888('0x0'));var ChatQueue=require(_0x1888('0x1'))['db'][_0x1888('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x1888('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x1888('0x4')};function emitEvent(_0x2f6225){return function(_0x5ead29,_0x14ebe5,_0x4f738c){ChatQueueEvents[_0x1888('0x5')](_0x2f6225+':'+_0x5ead29['id'],_0x5ead29);ChatQueueEvents['emit'](_0x2f6225,_0x5ead29);_0x4f738c(null);};}for(var e in events){if(events[_0x1888('0x6')](e)){var event=events[e];ChatQueue[_0x1888('0x7')](e,emitEvent(event));}}module[_0x1888('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0xa80d=['save','update','remove','emit','hook','events','ChatQueue','setMaxListeners'];(function(_0x3ba1e9,_0x525b06){var _0x20a884=function(_0x3b5e19){while(--_0x3b5e19){_0x3ba1e9['push'](_0x3ba1e9['shift']());}};_0x20a884(++_0x525b06);}(_0xa80d,0x125));var _0xda80=function(_0x2ca8d0,_0x1609fe){_0x2ca8d0=_0x2ca8d0-0x0;var _0x5630c0=_0xa80d[_0x2ca8d0];return _0x5630c0;};'use strict';var EventEmitter=require(_0xda80('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xda80('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xda80('0x2')](0x0);var events={'afterCreate':_0xda80('0x3'),'afterUpdate':_0xda80('0x4'),'afterDestroy':_0xda80('0x5')};function emitEvent(_0x5e7d59){return function(_0x3df90f,_0x3a3631,_0x1fd3be){ChatQueueEvents[_0xda80('0x6')](_0x5e7d59+':'+_0x3df90f['id'],_0x3df90f);ChatQueueEvents['emit'](_0x5e7d59,_0x3df90f);_0x1fd3be(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xda80('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index f17c6c0..c451961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8606=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','chat_queues','lodash','util','moment'];(function(_0x4e97a1,_0x17dd88){var _0x4304e5=function(_0x12720b){while(--_0x12720b){_0x4e97a1['push'](_0x4e97a1['shift']());}};_0x4304e5(++_0x17dd88);}(_0x8606,0x165));var _0x6860=function(_0x358913,_0x52ed94){_0x358913=_0x358913-0x0;var _0x41c913=_0x8606[_0x358913];return _0x41c913;};'use strict';var _=require(_0x6860('0x0'));var util=require(_0x6860('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6860('0x2'));var BPromise=require(_0x6860('0x3'));var rp=require(_0x6860('0x4'));var fs=require('fs');var path=require(_0x6860('0x5'));var rimraf=require(_0x6860('0x6'));var config=require(_0x6860('0x7'));var attributes=require(_0x6860('0x8'));module['exports']=function(_0x53d124,_0x533c8e){return _0x53d124[_0x6860('0x9')](_0x6860('0xa'),attributes,{'tableName':_0x6860('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc206=['request-promise','path','exports','define','ChatQueue','util','../../config/logger','api'];(function(_0x210e70,_0x264866){var _0x19fa64=function(_0x6b1ff6){while(--_0x6b1ff6){_0x210e70['push'](_0x210e70['shift']());}};_0x19fa64(++_0x264866);}(_0xc206,0x175));var _0x6c20=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xc206[_0x138adb];return _0x1b27f2;};'use strict';var _=require('lodash');var util=require(_0x6c20('0x0'));var logger=require(_0x6c20('0x1'))(_0x6c20('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6c20('0x3'));var fs=require('fs');var path=require(_0x6c20('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module[_0x6c20('0x5')]=function(_0x27d48a,_0x84b250){return _0x27d48a[_0x6c20('0x6')](_0x6c20('0x7'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86b6a2d..a16ab7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc359=['attributes','map','ShowChatQueue','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','include','model'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0xc359,0x93));var _0x9c35=function(_0x4ce028,_0x526d4b){_0x4ce028=_0x4ce028-0x0;var _0x583d0c=_0xc359[_0x4ce028];return _0x583d0c;};'use strict';var _=require(_0x9c35('0x0'));var util=require('util');var moment=require(_0x9c35('0x1'));var BPromise=require(_0x9c35('0x2'));var rs=require(_0x9c35('0x3'));var fs=require('fs');var Redis=require(_0x9c35('0x4'));var db=require(_0x9c35('0x5'))['db'];var utils=require(_0x9c35('0x6'));var logger=require('../../config/logger')(_0x9c35('0x7'));var config=require(_0x9c35('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9c35('0x9')]({'port':0x232a});config[_0x9c35('0xa')]=_['defaults'](config[_0x9c35('0xa')],{'host':_0x9c35('0xb'),'port':0x18eb});var socket=require(_0x9c35('0xc'))(new Redis(config[_0x9c35('0xa')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x81ad06,_0x5f3708,_0x4771e7){return new BPromise(function(_0x119d8f,_0x5784f0){return client['request'](_0x81ad06,_0x4771e7)[_0x9c35('0xd')](function(_0xed5e25){logger[_0x9c35('0xe')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0x9c35('0xf'));logger[_0x9c35('0x10')](_0x9c35('0x11'),_0x5f3708,_0x9c35('0xf'),JSON[_0x9c35('0x12')](_0xed5e25));if(_0xed5e25[_0x9c35('0x13')]){if(_0xed5e25['error'][_0x9c35('0x14')]===0x1f4){logger[_0x9c35('0x13')](_0x9c35('0x15'),_0x5f3708,_0xed5e25[_0x9c35('0x13')][_0x9c35('0x16')]);return _0x5784f0(_0xed5e25['error'][_0x9c35('0x16')]);}logger[_0x9c35('0x13')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0xed5e25[_0x9c35('0x13')]['message']);return _0x119d8f(_0xed5e25['error']['message']);}else{logger[_0x9c35('0xe')]('ChatQueue,\x20%s,\x20%s',_0x5f3708,_0x9c35('0xf'));_0x119d8f(_0xed5e25[_0x9c35('0x17')]['message']);}})[_0x9c35('0x18')](function(_0x3544a0){logger[_0x9c35('0x13')](_0x9c35('0x15'),_0x5f3708,_0x3544a0);_0x5784f0(_0x3544a0);});});}exports[_0x9c35('0x19')]=function(_0x13748f){var _0x327b83=this;return new Promise(function(_0x4c0c3e,_0x4e4b72){return db[_0x9c35('0x1a')][_0x9c35('0x1b')]({'raw':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')][_0x9c35('0x1d')]===undefined?!![]:![]:!![],'where':_0x13748f['options']?_0x13748f['options'][_0x9c35('0x1e')]||null:null,'attributes':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')]['attributes']||null:null,'limit':_0x13748f[_0x9c35('0x1c')]?_0x13748f['options']['limit']||null:null,'include':_0x13748f[_0x9c35('0x1c')]?_0x13748f[_0x9c35('0x1c')][_0x9c35('0x1f')]?_['map'](_0x13748f['options']['include'],function(_0x448aa7){return{'model':db[_0x448aa7[_0x9c35('0x20')]],'as':_0x448aa7['as'],'attributes':_0x448aa7[_0x9c35('0x21')],'include':_0x448aa7['include']?_[_0x9c35('0x22')](_0x448aa7['include'],function(_0x2e9020){return{'model':db[_0x2e9020[_0x9c35('0x20')]],'as':_0x2e9020['as'],'attributes':_0x2e9020[_0x9c35('0x21')],'include':_0x2e9020['include']?_['map'](_0x2e9020['include'],function(_0x2785c2){return{'model':db[_0x2785c2['model']],'as':_0x2785c2['as'],'attributes':_0x2785c2[_0x9c35('0x21')]};}):[]};}):[]};}):[]:[]})[_0x9c35('0xd')](function(_0x421efa){logger[_0x9c35('0xe')](_0x9c35('0x19'),_0x13748f);logger[_0x9c35('0x10')](_0x9c35('0x19'),_0x13748f,JSON[_0x9c35('0x12')](_0x421efa));_0x4c0c3e(_0x421efa);})[_0x9c35('0x18')](function(_0x5cd262){logger[_0x9c35('0x13')](_0x9c35('0x19'),_0x5cd262[_0x9c35('0x16')],_0x13748f);_0x4e4b72(_0x327b83[_0x9c35('0x13')](0x1f4,_0x5cd262['message']));});});};exports[_0x9c35('0x23')]=function(_0x3d7a1e){var _0x2bc2eb=this;return new Promise(function(_0x4d667b,_0x357052){return db[_0x9c35('0x1a')]['find']({'raw':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')][_0x9c35('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')]['where']||null:null,'attributes':_0x3d7a1e[_0x9c35('0x1c')]?_0x3d7a1e[_0x9c35('0x1c')]['attributes']||null:null,'include':_0x3d7a1e['options']?_0x3d7a1e[_0x9c35('0x1c')]['include']?_[_0x9c35('0x22')](_0x3d7a1e[_0x9c35('0x1c')][_0x9c35('0x1f')],function(_0x4bcbc0){return{'model':db[_0x4bcbc0['model']],'as':_0x4bcbc0['as'],'attributes':_0x4bcbc0[_0x9c35('0x21')],'include':_0x4bcbc0[_0x9c35('0x1f')]?_[_0x9c35('0x22')](_0x4bcbc0[_0x9c35('0x1f')],function(_0xb2a0f7){return{'model':db[_0xb2a0f7[_0x9c35('0x20')]],'as':_0xb2a0f7['as'],'attributes':_0xb2a0f7['attributes'],'include':_0xb2a0f7['include']?_[_0x9c35('0x22')](_0xb2a0f7[_0x9c35('0x1f')],function(_0x4f24fb){return{'model':db[_0x4f24fb[_0x9c35('0x20')]],'as':_0x4f24fb['as'],'attributes':_0x4f24fb['attributes']};}):[]};}):[]};}):[]:[]})[_0x9c35('0xd')](function(_0x5dcd8e){logger[_0x9c35('0xe')](_0x9c35('0x23'),_0x3d7a1e);logger[_0x9c35('0x10')](_0x9c35('0x23'),_0x3d7a1e,JSON[_0x9c35('0x12')](_0x5dcd8e));_0x4d667b(_0x5dcd8e);})[_0x9c35('0x18')](function(_0x44165f){logger[_0x9c35('0x13')](_0x9c35('0x23'),_0x44165f[_0x9c35('0x16')],_0x3d7a1e);_0x357052(_0x2bc2eb[_0x9c35('0x13')](0x1f4,_0x44165f[_0x9c35('0x16')]));});});};
\ No newline at end of file
+var _0x3c91=['GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','map','model','stringify','ShowChatQueue','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch'];(function(_0x5bb5a4,_0x415bc9){var _0x3e6b38=function(_0x31e1db){while(--_0x31e1db){_0x5bb5a4['push'](_0x5bb5a4['shift']());}};_0x3e6b38(++_0x415bc9);}(_0x3c91,0x1af));var _0x13c9=function(_0x156cbc,_0x4fcc20){_0x156cbc=_0x156cbc-0x0;var _0x30f727=_0x3c91[_0x156cbc];return _0x30f727;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x13c9('0xb')],{'host':_0x13c9('0xc'),'port':0x18eb});var socket=require(_0x13c9('0xd'))(new Redis(config[_0x13c9('0xb')]));require(_0x13c9('0xe'))['register'](socket);function respondWithRpcPromise(_0x4da00c,_0x3053a9,_0x3554c3){return new BPromise(function(_0x5e5446,_0x59ed70){return client[_0x13c9('0xf')](_0x4da00c,_0x3554c3)[_0x13c9('0x10')](function(_0xc1cc72){logger[_0x13c9('0x11')](_0x13c9('0x12'),_0x3053a9,_0x13c9('0x13'));logger[_0x13c9('0x14')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x3053a9,_0x13c9('0x13'),JSON['stringify'](_0xc1cc72));if(_0xc1cc72['error']){if(_0xc1cc72['error']['code']===0x1f4){logger['error'](_0x13c9('0x12'),_0x3053a9,_0xc1cc72[_0x13c9('0x15')]['message']);return _0x59ed70(_0xc1cc72[_0x13c9('0x15')][_0x13c9('0x16')]);}logger[_0x13c9('0x15')](_0x13c9('0x12'),_0x3053a9,_0xc1cc72[_0x13c9('0x15')][_0x13c9('0x16')]);return _0x5e5446(_0xc1cc72[_0x13c9('0x15')]['message']);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x3053a9,_0x13c9('0x13'));_0x5e5446(_0xc1cc72[_0x13c9('0x17')][_0x13c9('0x16')]);}})[_0x13c9('0x18')](function(_0x3b6c1a){logger['error'](_0x13c9('0x12'),_0x3053a9,_0x3b6c1a);_0x59ed70(_0x3b6c1a);});});}exports[_0x13c9('0x19')]=function(_0xf95546){var _0x15463b=this;return new Promise(function(_0x6fc26f,_0x329c69){return db[_0x13c9('0x1a')]['findAll']({'raw':_0xf95546[_0x13c9('0x1b')]?_0xf95546[_0x13c9('0x1b')][_0x13c9('0x1c')]===undefined?!![]:![]:!![],'where':_0xf95546[_0x13c9('0x1b')]?_0xf95546[_0x13c9('0x1b')][_0x13c9('0x1d')]||null:null,'attributes':_0xf95546[_0x13c9('0x1b')]?_0xf95546[_0x13c9('0x1b')][_0x13c9('0x1e')]||null:null,'limit':_0xf95546[_0x13c9('0x1b')]?_0xf95546['options'][_0x13c9('0x1f')]||null:null,'include':_0xf95546[_0x13c9('0x1b')]?_0xf95546[_0x13c9('0x1b')][_0x13c9('0x20')]?_[_0x13c9('0x21')](_0xf95546['options'][_0x13c9('0x20')],function(_0x53b62f){return{'model':db[_0x53b62f['model']],'as':_0x53b62f['as'],'attributes':_0x53b62f[_0x13c9('0x1e')],'include':_0x53b62f[_0x13c9('0x20')]?_[_0x13c9('0x21')](_0x53b62f[_0x13c9('0x20')],function(_0x362cb7){return{'model':db[_0x362cb7[_0x13c9('0x22')]],'as':_0x362cb7['as'],'attributes':_0x362cb7[_0x13c9('0x1e')],'include':_0x362cb7[_0x13c9('0x20')]?_[_0x13c9('0x21')](_0x362cb7[_0x13c9('0x20')],function(_0x4ec9ff){return{'model':db[_0x4ec9ff[_0x13c9('0x22')]],'as':_0x4ec9ff['as'],'attributes':_0x4ec9ff[_0x13c9('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x43519b){logger[_0x13c9('0x11')](_0x13c9('0x19'),_0xf95546);logger['debug']('GetChatQueue',_0xf95546,JSON[_0x13c9('0x23')](_0x43519b));_0x6fc26f(_0x43519b);})[_0x13c9('0x18')](function(_0x1a1710){logger['error'](_0x13c9('0x19'),_0x1a1710[_0x13c9('0x16')],_0xf95546);_0x329c69(_0x15463b[_0x13c9('0x15')](0x1f4,_0x1a1710[_0x13c9('0x16')]));});});};exports[_0x13c9('0x24')]=function(_0x51c58d){var _0x2fe251=this;return new Promise(function(_0x3f6a0c,_0x2ce0a0){return db[_0x13c9('0x1a')][_0x13c9('0x25')]({'raw':_0x51c58d[_0x13c9('0x1b')]?_0x51c58d[_0x13c9('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x51c58d[_0x13c9('0x1b')]?_0x51c58d[_0x13c9('0x1b')]['where']||null:null,'attributes':_0x51c58d[_0x13c9('0x1b')]?_0x51c58d[_0x13c9('0x1b')][_0x13c9('0x1e')]||null:null,'include':_0x51c58d[_0x13c9('0x1b')]?_0x51c58d[_0x13c9('0x1b')][_0x13c9('0x20')]?_['map'](_0x51c58d['options'][_0x13c9('0x20')],function(_0x1da6c8){return{'model':db[_0x1da6c8[_0x13c9('0x22')]],'as':_0x1da6c8['as'],'attributes':_0x1da6c8[_0x13c9('0x1e')],'include':_0x1da6c8['include']?_[_0x13c9('0x21')](_0x1da6c8[_0x13c9('0x20')],function(_0x4d2cd2){return{'model':db[_0x4d2cd2[_0x13c9('0x22')]],'as':_0x4d2cd2['as'],'attributes':_0x4d2cd2[_0x13c9('0x1e')],'include':_0x4d2cd2[_0x13c9('0x20')]?_['map'](_0x4d2cd2[_0x13c9('0x20')],function(_0x2a2b2c){return{'model':db[_0x2a2b2c[_0x13c9('0x22')]],'as':_0x2a2b2c['as'],'attributes':_0x2a2b2c[_0x13c9('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50246c){logger[_0x13c9('0x11')](_0x13c9('0x24'),_0x51c58d);logger['debug'](_0x13c9('0x24'),_0x51c58d,JSON[_0x13c9('0x23')](_0x50246c));_0x3f6a0c(_0x50246c);})[_0x13c9('0x18')](function(_0x1b9ef6){logger[_0x13c9('0x15')](_0x13c9('0x24'),_0x1b9ef6[_0x13c9('0x16')],_0x51c58d);_0x2ce0a0(_0x2fe251[_0x13c9('0x15')](0x1f4,_0x1b9ef6['message']));});});};
\ No newline at end of file
index 1a928b4..e608975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['remove','removeListener','register','length','chatQueue:','save'];(function(_0x9c7479,_0xb73565){var _0x22ebff=function(_0x4568fd){while(--_0x4568fd){_0x9c7479['push'](_0x9c7479['shift']());}};_0x22ebff(++_0xb73565);}(_0xb821,0xa7));var _0x1b82=function(_0x3203ab,_0x3e8625){_0x3203ab=_0x3203ab-0x0;var _0x48bd7c=_0xb821[_0x3203ab];return _0x48bd7c;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x1b82('0x0'),_0x1b82('0x1'),'update'];function createListener(_0x4a4f81,_0xbab478){return function(_0x578a10){_0xbab478['emit'](_0x4a4f81,_0x578a10);};}function removeListener(_0x3b1d14,_0x1403ab){return function(){ChatQueueEvents[_0x1b82('0x2')](_0x3b1d14,_0x1403ab);};}exports[_0x1b82('0x3')]=function(_0x597ca7){for(var _0x3e27c4=0x0,_0x192434=events[_0x1b82('0x4')];_0x3e27c4<_0x192434;_0x3e27c4++){var _0x3632dd=events[_0x3e27c4];var _0x18f45f=createListener(_0x1b82('0x5')+_0x3632dd,_0x597ca7);ChatQueueEvents['on'](_0x3632dd,_0x18f45f);}};
\ No newline at end of file
+var _0x9c44=['emit','removeListener','length','chatQueue:','remove','update'];(function(_0x5265e7,_0x443960){var _0x15f137=function(_0x53e22d){while(--_0x53e22d){_0x5265e7['push'](_0x5265e7['shift']());}};_0x15f137(++_0x443960);}(_0x9c44,0x178));var _0x49c4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9c44[_0x2641f9];return _0x585741;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save',_0x49c4('0x0'),_0x49c4('0x1')];function createListener(_0x26844b,_0x1ba0bb){return function(_0x455700){_0x1ba0bb[_0x49c4('0x2')](_0x26844b,_0x455700);};}function removeListener(_0x4e0313,_0x4941f1){return function(){ChatQueueEvents[_0x49c4('0x3')](_0x4e0313,_0x4941f1);};}exports['register']=function(_0xc1278f){for(var _0x6030ae=0x0,_0x69bc41=events[_0x49c4('0x4')];_0x6030ae<_0x69bc41;_0x6030ae++){var _0x436234=events[_0x6030ae];var _0x511d53=createListener(_0x49c4('0x5')+_0x436234,_0xc1278f);ChatQueueEvents['on'](_0x436234,_0x511d53);}};
\ No newline at end of file
index 1f0293f..2005f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x2ccfc4,_0x521080){var _0x3e573a=function(_0x196c2d){while(--_0x196c2d){_0x2ccfc4['push'](_0x2ccfc4['shift']());}};_0x3e573a(++_0x521080);}(_0x55ca,0x126));var _0xa55c=function(_0x39efbf,_0x118364){_0x39efbf=_0x39efbf-0x0;var _0xcbd510=_0x55ca[_0x39efbf];return _0xcbd510;};'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')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x45f85a,_0x57abfd){var _0x5ba651=function(_0x518751){while(--_0x518751){_0x45f85a['push'](_0x45f85a['shift']());}};_0x5ba651(++_0x57abfd);}(_0x7217,0x19e));var _0x7721=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x7217[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
index dd4f7ab..13cbb8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x143e=['sequelize','STRING','DATE','moment'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x143e,0xdf));var _0xe143=function(_0x4daf84,_0x4bf5fb){_0x4daf84=_0x4daf84-0x0;var _0x13a0d6=_0x143e[_0x4daf84];return _0x13a0d6;};'use strict';var moment=require(_0xe143('0x0'));var Sequelize=require(_0xe143('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe143('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe143('0x2')]},'joinAt':{'type':Sequelize[_0xe143('0x3')]},'leaveAt':{'type':Sequelize[_0xe143('0x3')]},'acceptAt':{'type':Sequelize[_0xe143('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe143('0x2')]}};
\ No newline at end of file
+var _0x444a=['DATE','STRING','moment','exports'];(function(_0x356a7b,_0x4ed7f5){var _0x1c43dc=function(_0x3979c6){while(--_0x3979c6){_0x356a7b['push'](_0x356a7b['shift']());}};_0x1c43dc(++_0x4ed7f5);}(_0x444a,0xa2));var _0xa444=function(_0x46bec2,_0x36cde0){_0x46bec2=_0x46bec2-0x0;var _0x39b857=_0x444a[_0x46bec2];return _0x39b857;};'use strict';var moment=require(_0xa444('0x0'));var Sequelize=require('sequelize');module[_0xa444('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xa444('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xa444('0x3')]}};
\ No newline at end of file
index 02942f2..0166f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2f=['sort','where','pick','filter','merge','VIRTUAL','options','ChatQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit'];(function(_0x329558,_0x3689e4){var _0x5d52b8=function(_0x201ad8){while(--_0x201ad8){_0x329558['push'](_0x329558['shift']());}};_0x5d52b8(++_0x3689e4);}(_0xcd2f,0xf8));var _0xfcd2=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xcd2f[_0xaa0309];return _0x5de7ce;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfcd2('0x0'));var rp=require(_0xfcd2('0x1'));var moment=require(_0xfcd2('0x2'));var BPromise=require(_0xfcd2('0x3'));var Mustache=require(_0xfcd2('0x4'));var util=require(_0xfcd2('0x5'));var path=require(_0xfcd2('0x6'));var sox=require(_0xfcd2('0x7'));var csv=require('to-csv');var ejs=require(_0xfcd2('0x8'));var fs=require('fs');var fs_extra=require(_0xfcd2('0x9'));var _=require(_0xfcd2('0xa'));var squel=require(_0xfcd2('0xb'));var crypto=require(_0xfcd2('0xc'));var jsforce=require(_0xfcd2('0xd'));var deskjs=require(_0xfcd2('0xe'));var toCsv=require(_0xfcd2('0xf'));var querystring=require(_0xfcd2('0x10'));var Papa=require(_0xfcd2('0x11'));var Redis=require(_0xfcd2('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xfcd2('0x13'));var as=require(_0xfcd2('0x14'));var hardwareService=require(_0xfcd2('0x15'));var logger=require(_0xfcd2('0x16'))(_0xfcd2('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bff49,_0xdcfde9){_0xdcfde9=_0xdcfde9||0xcc;return function(_0x15aebb){if(_0x15aebb){return _0x5bff49['sendStatus'](_0xdcfde9);}return _0x5bff49[_0xfcd2('0x18')](_0xdcfde9)[_0xfcd2('0x19')]();};}function respondWithResult(_0x5ad180,_0x50f44c){_0x50f44c=_0x50f44c||0xc8;return function(_0x2825df){if(_0x2825df){return _0x5ad180[_0xfcd2('0x18')](_0x50f44c)[_0xfcd2('0x1a')](_0x2825df);}};}function respondWithFilteredResult(_0x4baf2f,_0x428cf3){return function(_0x4a2bcd){if(_0x4a2bcd){var _0x1a9f8f=typeof _0x428cf3[_0xfcd2('0x1b')]===_0xfcd2('0x1c')&&typeof _0x428cf3[_0xfcd2('0x1d')]===_0xfcd2('0x1c');var _0x378484=_0x4a2bcd['count'];var _0xba3186=_0x1a9f8f?0x0:_0x428cf3[_0xfcd2('0x1b')];var _0x32607c=_0x1a9f8f?_0x4a2bcd[_0xfcd2('0x1e')]:_0x428cf3[_0xfcd2('0x1b')]+_0x428cf3[_0xfcd2('0x1d')];var _0x5c8a4d;if(_0x32607c>=_0x378484){_0x32607c=_0x378484;_0x5c8a4d=0xc8;}else{_0x5c8a4d=0xce;}_0x4baf2f[_0xfcd2('0x18')](_0x5c8a4d);return _0x4baf2f[_0xfcd2('0x1f')](_0xfcd2('0x20'),_0xba3186+'-'+_0x32607c+'/'+_0x378484)[_0xfcd2('0x1a')](_0x4a2bcd);}return null;};}function patchUpdates(_0x266c86){return function(_0x55d8b0){try{jsonpatch[_0xfcd2('0x21')](_0x55d8b0,_0x266c86,!![]);}catch(_0x41c503){return BPromise[_0xfcd2('0x22')](_0x41c503);}return _0x55d8b0[_0xfcd2('0x23')]();};}function saveUpdates(_0x2a06d4,_0x37dafa){return function(_0x19ea4a){if(_0x19ea4a){return _0x19ea4a[_0xfcd2('0x24')](_0x2a06d4)[_0xfcd2('0x25')](function(_0x47fa14){return _0x47fa14;});}return null;};}function removeEntity(_0x23104f,_0x50c0cc){return function(_0xedae7a){if(_0xedae7a){return _0xedae7a[_0xfcd2('0x26')]()['then'](function(){_0x23104f['status'](0xcc)[_0xfcd2('0x19')]();});}};}function handleEntityNotFound(_0xe7fde9,_0x193dc3){return function(_0x2b0364){if(!_0x2b0364){_0xe7fde9['sendStatus'](0x194);}return _0x2b0364;};}function handleError(_0x1c4981,_0x2a8557){_0x2a8557=_0x2a8557||0x1f4;return function(_0x13e447){logger[_0xfcd2('0x27')](_0x13e447['stack']);if(_0x13e447[_0xfcd2('0x28')]){delete _0x13e447['name'];}_0x1c4981[_0xfcd2('0x18')](_0x2a8557)[_0xfcd2('0x29')](_0x13e447);};}exports['index']=function(_0x909257,_0x3cb642){var _0x41ecc9={},_0x4bffa9={},_0x15965e={'count':0x0,'rows':[]};var _0x4e79b=_[_0xfcd2('0x2a')](db['ChatQueueReport']['rawAttributes'],function(_0x5192b9){return{'name':_0x5192b9[_0xfcd2('0x2b')],'type':_0x5192b9[_0xfcd2('0x2c')][_0xfcd2('0x2d')]};});_0x4bffa9['model']=_[_0xfcd2('0x2a')](_0x4e79b,_0xfcd2('0x28'));_0x4bffa9[_0xfcd2('0x2e')]=_[_0xfcd2('0x2f')](_0x909257[_0xfcd2('0x2e')]);_0x4bffa9[_0xfcd2('0x30')]=_[_0xfcd2('0x31')](_0x4bffa9['model'],_0x4bffa9['query']);_0x41ecc9[_0xfcd2('0x32')]=_['intersection'](_0x4bffa9[_0xfcd2('0x33')],qs[_0xfcd2('0x34')](_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x34')]));_0x41ecc9[_0xfcd2('0x32')]=_0x41ecc9[_0xfcd2('0x32')][_0xfcd2('0x35')]?_0x41ecc9[_0xfcd2('0x32')]:_0x4bffa9[_0xfcd2('0x33')];if(!_0x909257['query'][_0xfcd2('0x36')](_0xfcd2('0x37'))){_0x41ecc9[_0xfcd2('0x1d')]=qs[_0xfcd2('0x1d')](_0x909257['query']['limit']);_0x41ecc9[_0xfcd2('0x1b')]=qs[_0xfcd2('0x1b')](_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x1b')]);}_0x41ecc9['order']=qs[_0xfcd2('0x38')](_0x909257[_0xfcd2('0x2e')]['sort']);_0x41ecc9[_0xfcd2('0x39')]=qs['filters'](_[_0xfcd2('0x3a')](_0x909257['query'],_0x4bffa9[_0xfcd2('0x30')]),_0x4e79b);if(_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x3b')]){_0x41ecc9['where']=_[_0xfcd2('0x3c')](_0x41ecc9[_0xfcd2('0x39')],{'$or':_[_0xfcd2('0x2a')](_0x4e79b,function(_0x89e532){if(_0x89e532[_0xfcd2('0x2c')]!==_0xfcd2('0x3d')){var _0x10249c={};_0x10249c[_0x89e532[_0xfcd2('0x28')]]={'$like':'%'+_0x909257[_0xfcd2('0x2e')][_0xfcd2('0x3b')]+'%'};return _0x10249c;}})});}_0x41ecc9=_[_0xfcd2('0x3c')]({},_0x41ecc9,_0x909257[_0xfcd2('0x3e')]);var _0x31368e={'where':_0x41ecc9[_0xfcd2('0x39')]};return db[_0xfcd2('0x3f')][_0xfcd2('0x1e')](_0x31368e)[_0xfcd2('0x25')](function(_0x47d6b6){_0x15965e[_0xfcd2('0x1e')]=_0x47d6b6;if(_0x909257['query'][_0xfcd2('0x40')]){_0x41ecc9[_0xfcd2('0x41')]=[{'all':!![]}];}return db[_0xfcd2('0x3f')][_0xfcd2('0x42')](_0x41ecc9);})['then'](function(_0x20f985){_0x15965e[_0xfcd2('0x43')]=_0x20f985;return _0x15965e;})[_0xfcd2('0x25')](respondWithFilteredResult(_0x3cb642,_0x41ecc9))[_0xfcd2('0x44')](handleError(_0x3cb642,null));};exports[_0xfcd2('0x45')]=function(_0x100198,_0x20c15b){var _0x34ffd6={'raw':!![],'where':{'id':_0x100198[_0xfcd2('0x46')]['id']}},_0x4ba64d={};_0x4ba64d[_0xfcd2('0x33')]=_[_0xfcd2('0x2f')](db[_0xfcd2('0x3f')][_0xfcd2('0x47')]);_0x4ba64d['query']=_[_0xfcd2('0x2f')](_0x100198[_0xfcd2('0x2e')]);_0x4ba64d[_0xfcd2('0x30')]=_[_0xfcd2('0x31')](_0x4ba64d['model'],_0x4ba64d[_0xfcd2('0x2e')]);_0x34ffd6[_0xfcd2('0x32')]=_[_0xfcd2('0x31')](_0x4ba64d[_0xfcd2('0x33')],qs[_0xfcd2('0x34')](_0x100198[_0xfcd2('0x2e')][_0xfcd2('0x34')]));_0x34ffd6[_0xfcd2('0x32')]=_0x34ffd6[_0xfcd2('0x32')]['length']?_0x34ffd6['attributes']:_0x4ba64d['model'];if(_0x100198[_0xfcd2('0x2e')][_0xfcd2('0x40')]){_0x34ffd6[_0xfcd2('0x41')]=[{'all':!![]}];}_0x34ffd6=_[_0xfcd2('0x3c')]({},_0x34ffd6,_0x100198['options']);return db[_0xfcd2('0x3f')][_0xfcd2('0x48')](_0x34ffd6)[_0xfcd2('0x25')](handleEntityNotFound(_0x20c15b,null))[_0xfcd2('0x25')](respondWithResult(_0x20c15b,null))['catch'](handleError(_0x20c15b,null));};exports[_0xfcd2('0x49')]=function(_0x26dbe2,_0x36233a){return db['ChatQueueReport'][_0xfcd2('0x49')](_0x26dbe2[_0xfcd2('0x4a')],{})['then'](respondWithResult(_0x36233a,0xc9))[_0xfcd2('0x44')](handleError(_0x36233a,null));};exports['update']=function(_0x559dea,_0x7352bb){if(_0x559dea[_0xfcd2('0x4a')]['id']){delete _0x559dea[_0xfcd2('0x4a')]['id'];}return db[_0xfcd2('0x3f')]['find']({'where':{'id':_0x559dea[_0xfcd2('0x46')]['id']}})[_0xfcd2('0x25')](handleEntityNotFound(_0x7352bb,null))[_0xfcd2('0x25')](saveUpdates(_0x559dea['body'],null))[_0xfcd2('0x25')](respondWithResult(_0x7352bb,null))[_0xfcd2('0x44')](handleError(_0x7352bb,null));};exports[_0xfcd2('0x26')]=function(_0x50f31c,_0x159aec){return db[_0xfcd2('0x3f')][_0xfcd2('0x48')]({'where':{'id':_0x50f31c[_0xfcd2('0x46')]['id']}})[_0xfcd2('0x25')](handleEntityNotFound(_0x159aec,null))[_0xfcd2('0x25')](removeEntity(_0x159aec,null))[_0xfcd2('0x44')](handleError(_0x159aec,null));};exports[_0xfcd2('0x4b')]=function(_0x2409ed,_0xf2e5f8){return db[_0xfcd2('0x3f')][_0xfcd2('0x4b')]()['then'](respondWithResult(_0xf2e5f8,null))[_0xfcd2('0x44')](handleError(_0xf2e5f8,null));};
\ No newline at end of file
+var _0x79a3=['../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','ChatQueueReport','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x2247ab,_0x3f4162){var _0x430062=function(_0x591dd7){while(--_0x591dd7){_0x2247ab['push'](_0x2247ab['shift']());}};_0x430062(++_0x3f4162);}(_0x79a3,0x80));var _0x379a=function(_0x47cd84,_0x3056b9){_0x47cd84=_0x47cd84-0x0;var _0x800299=_0x79a3[_0x47cd84];return _0x800299;};'use strict';var emlformat=require(_0x379a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x379a('0x1'));var jsonpatch=require(_0x379a('0x2'));var rp=require('request-promise');var moment=require(_0x379a('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x379a('0x4'));var sox=require(_0x379a('0x5'));var csv=require(_0x379a('0x6'));var ejs=require(_0x379a('0x7'));var fs=require('fs');var fs_extra=require(_0x379a('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x379a('0x9'));var deskjs=require(_0x379a('0xa'));var toCsv=require(_0x379a('0x6'));var querystring=require(_0x379a('0xb'));var Papa=require(_0x379a('0xc'));var Redis=require(_0x379a('0xd'));var authService=require(_0x379a('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x379a('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x379a('0x10'));var config=require(_0x379a('0x11'));var licenseUtil=require(_0x379a('0x12'));var db=require(_0x379a('0x13'))['db'];function respondWithStatusCode(_0x4fa4c8,_0x51d2f4){_0x51d2f4=_0x51d2f4||0xcc;return function(_0x4c69a6){if(_0x4c69a6){return _0x4fa4c8[_0x379a('0x14')](_0x51d2f4);}return _0x4fa4c8[_0x379a('0x15')](_0x51d2f4)[_0x379a('0x16')]();};}function respondWithResult(_0x17adab,_0x561cbf){_0x561cbf=_0x561cbf||0xc8;return function(_0x55a38d){if(_0x55a38d){return _0x17adab[_0x379a('0x15')](_0x561cbf)[_0x379a('0x17')](_0x55a38d);}};}function respondWithFilteredResult(_0x3626b0,_0x3651b2){return function(_0x59f698){if(_0x59f698){var _0x56bbd5=typeof _0x3651b2[_0x379a('0x18')]==='undefined'&&typeof _0x3651b2[_0x379a('0x19')]===_0x379a('0x1a');var _0x1c217d=_0x59f698['count'];var _0x48f0a9=_0x56bbd5?0x0:_0x3651b2[_0x379a('0x18')];var _0xd6cc17=_0x56bbd5?_0x59f698['count']:_0x3651b2[_0x379a('0x18')]+_0x3651b2[_0x379a('0x19')];var _0x51d67c;if(_0xd6cc17>=_0x1c217d){_0xd6cc17=_0x1c217d;_0x51d67c=0xc8;}else{_0x51d67c=0xce;}_0x3626b0['status'](_0x51d67c);return _0x3626b0['set'](_0x379a('0x1b'),_0x48f0a9+'-'+_0xd6cc17+'/'+_0x1c217d)['json'](_0x59f698);}return null;};}function patchUpdates(_0x263df8){return function(_0x1cdebe){try{jsonpatch[_0x379a('0x1c')](_0x1cdebe,_0x263df8,!![]);}catch(_0x120997){return BPromise[_0x379a('0x1d')](_0x120997);}return _0x1cdebe[_0x379a('0x1e')]();};}function saveUpdates(_0x1d3f0f,_0x1b1b98){return function(_0x4c0dda){if(_0x4c0dda){return _0x4c0dda[_0x379a('0x1f')](_0x1d3f0f)[_0x379a('0x20')](function(_0x28aedc){return _0x28aedc;});}return null;};}function removeEntity(_0x22737a,_0x31752c){return function(_0x2bf6d8){if(_0x2bf6d8){return _0x2bf6d8[_0x379a('0x21')]()['then'](function(){_0x22737a[_0x379a('0x15')](0xcc)[_0x379a('0x16')]();});}};}function handleEntityNotFound(_0x18bb37,_0x516ddf){return function(_0x483ddd){if(!_0x483ddd){_0x18bb37[_0x379a('0x14')](0x194);}return _0x483ddd;};}function handleError(_0x599efb,_0x13e665){_0x13e665=_0x13e665||0x1f4;return function(_0xc1fc5a){logger['error'](_0xc1fc5a[_0x379a('0x22')]);if(_0xc1fc5a[_0x379a('0x23')]){delete _0xc1fc5a[_0x379a('0x23')];}_0x599efb['status'](_0x13e665)[_0x379a('0x24')](_0xc1fc5a);};}exports['index']=function(_0x2a1765,_0x33d5f7){var _0xa803f7={},_0x3f92b1={},_0x4eed7e={'count':0x0,'rows':[]};var _0x1153e9=_[_0x379a('0x25')](db[_0x379a('0x26')][_0x379a('0x27')],function(_0x30c9ab){return{'name':_0x30c9ab['fieldName'],'type':_0x30c9ab[_0x379a('0x28')][_0x379a('0x29')]};});_0x3f92b1[_0x379a('0x2a')]=_[_0x379a('0x25')](_0x1153e9,_0x379a('0x23'));_0x3f92b1['query']=_[_0x379a('0x2b')](_0x2a1765[_0x379a('0x2c')]);_0x3f92b1[_0x379a('0x2d')]=_[_0x379a('0x2e')](_0x3f92b1[_0x379a('0x2a')],_0x3f92b1[_0x379a('0x2c')]);_0xa803f7['attributes']=_['intersection'](_0x3f92b1[_0x379a('0x2a')],qs['fields'](_0x2a1765[_0x379a('0x2c')][_0x379a('0x2f')]));_0xa803f7[_0x379a('0x30')]=_0xa803f7['attributes']['length']?_0xa803f7[_0x379a('0x30')]:_0x3f92b1[_0x379a('0x2a')];if(!_0x2a1765[_0x379a('0x2c')][_0x379a('0x31')]('nolimit')){_0xa803f7[_0x379a('0x19')]=qs[_0x379a('0x19')](_0x2a1765[_0x379a('0x2c')][_0x379a('0x19')]);_0xa803f7['offset']=qs[_0x379a('0x18')](_0x2a1765[_0x379a('0x2c')][_0x379a('0x18')]);}_0xa803f7[_0x379a('0x32')]=qs[_0x379a('0x33')](_0x2a1765[_0x379a('0x2c')][_0x379a('0x33')]);_0xa803f7[_0x379a('0x34')]=qs[_0x379a('0x2d')](_[_0x379a('0x35')](_0x2a1765['query'],_0x3f92b1[_0x379a('0x2d')]),_0x1153e9);if(_0x2a1765[_0x379a('0x2c')][_0x379a('0x36')]){_0xa803f7['where']=_[_0x379a('0x37')](_0xa803f7[_0x379a('0x34')],{'$or':_['map'](_0x1153e9,function(_0x4c031c){if(_0x4c031c['type']!==_0x379a('0x38')){var _0x1fc9dd={};_0x1fc9dd[_0x4c031c[_0x379a('0x23')]]={'$like':'%'+_0x2a1765['query']['filter']+'%'};return _0x1fc9dd;}})});}_0xa803f7=_['merge']({},_0xa803f7,_0x2a1765[_0x379a('0x39')]);var _0x88df47={'where':_0xa803f7[_0x379a('0x34')]};return db[_0x379a('0x26')][_0x379a('0x3a')](_0x88df47)[_0x379a('0x20')](function(_0x140f5e){_0x4eed7e[_0x379a('0x3a')]=_0x140f5e;if(_0x2a1765[_0x379a('0x2c')][_0x379a('0x3b')]){_0xa803f7['include']=[{'all':!![]}];}return db[_0x379a('0x26')][_0x379a('0x3c')](_0xa803f7);})[_0x379a('0x20')](function(_0x476d7b){_0x4eed7e[_0x379a('0x3d')]=_0x476d7b;return _0x4eed7e;})[_0x379a('0x20')](respondWithFilteredResult(_0x33d5f7,_0xa803f7))[_0x379a('0x3e')](handleError(_0x33d5f7,null));};exports[_0x379a('0x3f')]=function(_0x17b5f3,_0x1d3c66){var _0x2d0e3f={'raw':!![],'where':{'id':_0x17b5f3[_0x379a('0x40')]['id']}},_0x5ada4c={};_0x5ada4c[_0x379a('0x2a')]=_['keys'](db[_0x379a('0x26')][_0x379a('0x27')]);_0x5ada4c[_0x379a('0x2c')]=_['keys'](_0x17b5f3[_0x379a('0x2c')]);_0x5ada4c[_0x379a('0x2d')]=_['intersection'](_0x5ada4c[_0x379a('0x2a')],_0x5ada4c[_0x379a('0x2c')]);_0x2d0e3f[_0x379a('0x30')]=_['intersection'](_0x5ada4c[_0x379a('0x2a')],qs[_0x379a('0x2f')](_0x17b5f3[_0x379a('0x2c')]['fields']));_0x2d0e3f['attributes']=_0x2d0e3f[_0x379a('0x30')][_0x379a('0x41')]?_0x2d0e3f[_0x379a('0x30')]:_0x5ada4c[_0x379a('0x2a')];if(_0x17b5f3['query'][_0x379a('0x3b')]){_0x2d0e3f[_0x379a('0x42')]=[{'all':!![]}];}_0x2d0e3f=_['merge']({},_0x2d0e3f,_0x17b5f3['options']);return db[_0x379a('0x26')][_0x379a('0x43')](_0x2d0e3f)['then'](handleEntityNotFound(_0x1d3c66,null))[_0x379a('0x20')](respondWithResult(_0x1d3c66,null))[_0x379a('0x3e')](handleError(_0x1d3c66,null));};exports[_0x379a('0x44')]=function(_0x1d113c,_0x7abb23){return db[_0x379a('0x26')][_0x379a('0x44')](_0x1d113c[_0x379a('0x45')],{})[_0x379a('0x20')](respondWithResult(_0x7abb23,0xc9))[_0x379a('0x3e')](handleError(_0x7abb23,null));};exports['update']=function(_0x1f75e7,_0xb85859){if(_0x1f75e7[_0x379a('0x45')]['id']){delete _0x1f75e7[_0x379a('0x45')]['id'];}return db[_0x379a('0x26')]['find']({'where':{'id':_0x1f75e7[_0x379a('0x40')]['id']}})[_0x379a('0x20')](handleEntityNotFound(_0xb85859,null))[_0x379a('0x20')](saveUpdates(_0x1f75e7[_0x379a('0x45')],null))[_0x379a('0x20')](respondWithResult(_0xb85859,null))['catch'](handleError(_0xb85859,null));};exports[_0x379a('0x21')]=function(_0x41581a,_0x35cefe){return db[_0x379a('0x26')][_0x379a('0x43')]({'where':{'id':_0x41581a[_0x379a('0x40')]['id']}})[_0x379a('0x20')](handleEntityNotFound(_0x35cefe,null))[_0x379a('0x20')](removeEntity(_0x35cefe,null))[_0x379a('0x3e')](handleError(_0x35cefe,null));};exports[_0x379a('0x46')]=function(_0x9d621d,_0x26a3e5){return db[_0x379a('0x26')][_0x379a('0x46')]()[_0x379a('0x20')](respondWithResult(_0x26a3e5,null))[_0x379a('0x3e')](handleError(_0x26a3e5,null));};
\ No newline at end of file
index 1ba92e5..2d0d52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x18ef3d,_0x122eca){var _0x52c833=function(_0x516bab){while(--_0x516bab){_0x18ef3d['push'](_0x18ef3d['shift']());}};_0x52c833(++_0x122eca);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x22ff83,_0x5c28fa){var _0x48f6d0=function(_0x419287){while(--_0x419287){_0x22ff83['push'](_0x22ff83['shift']());}};_0x48f6d0(++_0x5c28fa);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 72c8072..ca1cfac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x832c=['UpdateChatQueueReport','body','where','attributes','limit','lodash','util','moment','bluebird','ioredis','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','info','create','options','raw','CreateChatQueueReport','catch'];(function(_0x168127,_0x59cea1){var _0x4c99ad=function(_0x4ab3f2){while(--_0x4ab3f2){_0x168127['push'](_0x168127['shift']());}};_0x4c99ad(++_0x59cea1);}(_0x832c,0x1e5));var _0xc832=function(_0x48ea3d,_0x419710){_0x48ea3d=_0x48ea3d-0x0;var _0x26fd2e=_0x832c[_0x48ea3d];return _0x26fd2e;};'use strict';var _=require(_0xc832('0x0'));var util=require(_0xc832('0x1'));var moment=require(_0xc832('0x2'));var BPromise=require(_0xc832('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc832('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc832('0x5'));var config=require('../../config/environment');var jayson=require(_0xc832('0x6'));var client=jayson[_0xc832('0x7')][_0xc832('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1170c5,_0x29bfab,_0x2596a7){return new BPromise(function(_0x33bd47,_0x449a74){return client[_0xc832('0x9')](_0x1170c5,_0x2596a7)[_0xc832('0xa')](function(_0x3da5a2){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x29bfab,_0xc832('0xb'));logger[_0xc832('0xc')](_0xc832('0xd'),_0x29bfab,_0xc832('0xb'),JSON[_0xc832('0xe')](_0x3da5a2));if(_0x3da5a2[_0xc832('0xf')]){if(_0x3da5a2['error'][_0xc832('0x10')]===0x1f4){logger['error'](_0xc832('0x11'),_0x29bfab,_0x3da5a2[_0xc832('0xf')]['message']);return _0x449a74(_0x3da5a2['error']['message']);}logger[_0xc832('0xf')](_0xc832('0x11'),_0x29bfab,_0x3da5a2[_0xc832('0xf')][_0xc832('0x12')]);return _0x33bd47(_0x3da5a2[_0xc832('0xf')][_0xc832('0x12')]);}else{logger[_0xc832('0x13')](_0xc832('0x11'),_0x29bfab,'request\x20sent');_0x33bd47(_0x3da5a2['result'][_0xc832('0x12')]);}})['catch'](function(_0x5c378f){logger[_0xc832('0xf')](_0xc832('0x11'),_0x29bfab,_0x5c378f);_0x449a74(_0x5c378f);});});}exports['CreateChatQueueReport']=function(_0x21fb7d){var _0x2fec6b=this;return new Promise(function(_0x1ec564,_0xde5d81){return db['ChatQueueReport'][_0xc832('0x14')](_0x21fb7d['body'],{'raw':_0x21fb7d[_0xc832('0x15')]?_0x21fb7d[_0xc832('0x15')][_0xc832('0x16')]===undefined?!![]:![]:!![]})[_0xc832('0xa')](function(_0x42b7f8){logger[_0xc832('0x13')](_0xc832('0x17'),_0x21fb7d);logger['debug'](_0xc832('0x17'),_0x21fb7d,JSON[_0xc832('0xe')](_0x42b7f8));_0x1ec564(_0x42b7f8);})[_0xc832('0x18')](function(_0x111910){logger[_0xc832('0xf')](_0xc832('0x17'),_0x111910[_0xc832('0x12')],_0x21fb7d);_0xde5d81(_0x2fec6b[_0xc832('0xf')](0x1f4,_0x111910[_0xc832('0x12')]));});});};exports[_0xc832('0x19')]=function(_0x315f83){var _0x5c5f26=this;return new Promise(function(_0x36559a,_0x17a2af){return db['ChatQueueReport']['update'](_0x315f83[_0xc832('0x1a')],{'raw':_0x315f83['options']?_0x315f83[_0xc832('0x15')][_0xc832('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x315f83[_0xc832('0x15')]?_0x315f83[_0xc832('0x15')][_0xc832('0x1b')]||null:null,'attributes':_0x315f83[_0xc832('0x15')]?_0x315f83[_0xc832('0x15')][_0xc832('0x1c')]||null:null,'limit':_0x315f83['options']?_0x315f83[_0xc832('0x15')][_0xc832('0x1d')]||null:null})[_0xc832('0xa')](function(_0x5526a4){logger['info']('UpdateChatQueueReport',_0x315f83);logger[_0xc832('0xc')](_0xc832('0x19'),_0x315f83,JSON[_0xc832('0xe')](_0x5526a4));_0x36559a(_0x5526a4);})['catch'](function(_0x197898){logger[_0xc832('0xf')](_0xc832('0x19'),_0x197898[_0xc832('0x12')],_0x315f83);_0x17a2af(_0x5c5f26[_0xc832('0xf')](0x1f4,_0x197898[_0xc832('0x12')]));});});};
\ No newline at end of file
+var _0x24ce=['../../config/utils','../../config/logger','rpc','client','then','request\x20sent','debug','stringify','error','ChatQueueReport,\x20%s,\x20%s','message','info','result','CreateChatQueueReport','create','body','options','raw','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','limit','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x24ce,0x159));var _0xe24c=function(_0x47c987,_0x26b907){_0x47c987=_0x47c987-0x0;var _0x1f49a7=_0x24ce[_0x47c987];return _0x1f49a7;};'use strict';var _=require(_0xe24c('0x0'));var util=require(_0xe24c('0x1'));var moment=require(_0xe24c('0x2'));var BPromise=require(_0xe24c('0x3'));var rs=require(_0xe24c('0x4'));var fs=require('fs');var Redis=require(_0xe24c('0x5'));var db=require(_0xe24c('0x6'))['db'];var utils=require(_0xe24c('0x7'));var logger=require(_0xe24c('0x8'))(_0xe24c('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe24c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ef8f1,_0x5c31b2,_0x1ae82e){return new BPromise(function(_0x2dcca5,_0xa39286){return client['request'](_0x2ef8f1,_0x1ae82e)[_0xe24c('0xb')](function(_0x1ffd3d){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x5c31b2,_0xe24c('0xc'));logger[_0xe24c('0xd')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x5c31b2,_0xe24c('0xc'),JSON[_0xe24c('0xe')](_0x1ffd3d));if(_0x1ffd3d[_0xe24c('0xf')]){if(_0x1ffd3d[_0xe24c('0xf')]['code']===0x1f4){logger[_0xe24c('0xf')](_0xe24c('0x10'),_0x5c31b2,_0x1ffd3d['error']['message']);return _0xa39286(_0x1ffd3d[_0xe24c('0xf')][_0xe24c('0x11')]);}logger['error'](_0xe24c('0x10'),_0x5c31b2,_0x1ffd3d[_0xe24c('0xf')][_0xe24c('0x11')]);return _0x2dcca5(_0x1ffd3d[_0xe24c('0xf')][_0xe24c('0x11')]);}else{logger[_0xe24c('0x12')](_0xe24c('0x10'),_0x5c31b2,_0xe24c('0xc'));_0x2dcca5(_0x1ffd3d[_0xe24c('0x13')][_0xe24c('0x11')]);}})['catch'](function(_0x1a144a){logger[_0xe24c('0xf')](_0xe24c('0x10'),_0x5c31b2,_0x1a144a);_0xa39286(_0x1a144a);});});}exports[_0xe24c('0x14')]=function(_0x31270c){var _0x23a3cf=this;return new Promise(function(_0x3a63bc,_0x1e6049){return db['ChatQueueReport'][_0xe24c('0x15')](_0x31270c[_0xe24c('0x16')],{'raw':_0x31270c[_0xe24c('0x17')]?_0x31270c[_0xe24c('0x17')][_0xe24c('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x47710d){logger[_0xe24c('0x12')]('CreateChatQueueReport',_0x31270c);logger['debug'](_0xe24c('0x14'),_0x31270c,JSON['stringify'](_0x47710d));_0x3a63bc(_0x47710d);})['catch'](function(_0x3bc011){logger[_0xe24c('0xf')](_0xe24c('0x14'),_0x3bc011['message'],_0x31270c);_0x1e6049(_0x23a3cf[_0xe24c('0xf')](0x1f4,_0x3bc011[_0xe24c('0x11')]));});});};exports[_0xe24c('0x19')]=function(_0x292ff3){var _0x5e2f28=this;return new Promise(function(_0x16df35,_0x552acf){return db[_0xe24c('0x1a')][_0xe24c('0x1b')](_0x292ff3[_0xe24c('0x16')],{'raw':_0x292ff3[_0xe24c('0x17')]?_0x292ff3[_0xe24c('0x17')][_0xe24c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x292ff3[_0xe24c('0x17')]?_0x292ff3[_0xe24c('0x17')][_0xe24c('0x1c')]||null:null,'attributes':_0x292ff3['options']?_0x292ff3[_0xe24c('0x17')][_0xe24c('0x1d')]||null:null,'limit':_0x292ff3[_0xe24c('0x17')]?_0x292ff3[_0xe24c('0x17')][_0xe24c('0x1e')]||null:null})[_0xe24c('0xb')](function(_0x4fc6bb){logger['info'](_0xe24c('0x19'),_0x292ff3);logger['debug'](_0xe24c('0x19'),_0x292ff3,JSON[_0xe24c('0xe')](_0x4fc6bb));_0x16df35(_0x4fc6bb);})[_0xe24c('0x1f')](function(_0x235fb0){logger[_0xe24c('0xf')]('UpdateChatQueueReport',_0x235fb0[_0xe24c('0x11')],_0x292ff3);_0x552acf(_0x5e2f28[_0xe24c('0xf')](0x1f4,_0x235fb0[_0xe24c('0x11')]));});});};
\ No newline at end of file
index 6bcf4ae..e19beff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec19=['../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x34f701,_0x37e407){var _0x3e2429=function(_0x20c0c3){while(--_0x20c0c3){_0x34f701['push'](_0x34f701['shift']());}};_0x3e2429(++_0x37e407);}(_0xec19,0xc0));var _0x9ec1=function(_0x105d37,_0x2a9f64){_0x105d37=_0x105d37-0x0;var _0x478889=_0xec19[_0x105d37];return _0x478889;};'use strict';var multer=require(_0x9ec1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9ec1('0x1'));var express=require(_0x9ec1('0x2'));var router=express[_0x9ec1('0x3')]();var fs_extra=require(_0x9ec1('0x4'));var auth=require(_0x9ec1('0x5'));var interaction=require(_0x9ec1('0x6'));var config=require(_0x9ec1('0x7'));var controller=require(_0x9ec1('0x8'));router[_0x9ec1('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ec1('0xa')]);router[_0x9ec1('0x9')](_0x9ec1('0xb'),auth[_0x9ec1('0xc')](),controller[_0x9ec1('0xd')]);router[_0x9ec1('0x9')](_0x9ec1('0xe'),auth[_0x9ec1('0xc')](),controller[_0x9ec1('0xf')]);router[_0x9ec1('0x10')]('/',auth[_0x9ec1('0xc')](),controller['create']);router[_0x9ec1('0x11')]('/:id',auth[_0x9ec1('0xc')](),controller[_0x9ec1('0x12')]);router[_0x9ec1('0x13')](_0x9ec1('0xe'),auth['isAuthenticated'](),controller[_0x9ec1('0x14')]);module[_0x9ec1('0x15')]=router;
\ No newline at end of file
+var _0x7968=['connect-timeout','Router','../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','delete','destroy','exports','util'];(function(_0x258fa0,_0x50f130){var _0x443459=function(_0x384233){while(--_0x384233){_0x258fa0['push'](_0x258fa0['shift']());}};_0x443459(++_0x50f130);}(_0x7968,0x1af));var _0x8796=function(_0x96fe23,_0x2b3793){_0x96fe23=_0x96fe23-0x0;var _0x18c3d1=_0x7968[_0x96fe23];return _0x18c3d1;};'use strict';var multer=require('multer');var util=require(_0x8796('0x0'));var path=require('path');var timeout=require(_0x8796('0x1'));var express=require('express');var router=express[_0x8796('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8796('0x3'));var config=require('../../config/environment');var controller=require(_0x8796('0x4'));router[_0x8796('0x5')]('/',auth[_0x8796('0x6')](),controller[_0x8796('0x7')]);router['get'](_0x8796('0x8'),auth[_0x8796('0x6')](),controller[_0x8796('0x9')]);router[_0x8796('0x5')]('/:id',auth[_0x8796('0x6')](),controller['show']);router[_0x8796('0xa')]('/',auth['isAuthenticated'](),controller[_0x8796('0xb')]);router[_0x8796('0xc')]('/:id',auth[_0x8796('0x6')](),controller['update']);router[_0x8796('0xd')]('/:id',auth[_0x8796('0x6')](),controller[_0x8796('0xe')]);module[_0x8796('0xf')]=router;
\ No newline at end of file
index 18f6816..fb9c618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0xe10ec2,_0x2942c2){var _0x5f1b97=function(_0x3eecfe){while(--_0x3eecfe){_0xe10ec2['push'](_0xe10ec2['shift']());}};_0x5f1b97(++_0x2942c2);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4fabbe,_0xc514f3){_0x4fabbe=_0x4fabbe-0x0;var _0x5510dd=_0xf3cd[_0x4fabbe];return _0x5510dd;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x1e6b4b,_0x20b5ba){var _0x232f92=function(_0x2fc8bf){while(--_0x2fc8bf){_0x1e6b4b['push'](_0x1e6b4b['shift']());}};_0x232f92(++_0x20b5ba);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x492535,_0x46524a){_0x492535=_0x492535-0x0;var _0x256620=_0xcb91[_0x492535];return _0x256620;};'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 0c5a847..ae7f985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5888=['eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit','undefined','count','offset','Content-Range','reject','update','then','end','stack','name','send','map','ChatTransferReport','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','describe'];(function(_0xda66e7,_0x5120a2){var _0xe0bade=function(_0x4dcc00){while(--_0x4dcc00){_0xda66e7['push'](_0xda66e7['shift']());}};_0xe0bade(++_0x5120a2);}(_0x5888,0x163));var _0x8588=function(_0x510b98,_0x4c4cbb){_0x510b98=_0x510b98-0x0;var _0x45e775=_0x5888[_0x510b98];return _0x45e775;};'use strict';var emlformat=require(_0x8588('0x0'));var rimraf=require(_0x8588('0x1'));var zipdir=require(_0x8588('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8588('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8588('0x4'));var util=require(_0x8588('0x5'));var path=require('path');var sox=require(_0x8588('0x6'));var csv=require(_0x8588('0x7'));var ejs=require(_0x8588('0x8'));var fs=require('fs');var fs_extra=require(_0x8588('0x9'));var _=require(_0x8588('0xa'));var squel=require(_0x8588('0xb'));var crypto=require(_0x8588('0xc'));var jsforce=require(_0x8588('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8588('0x7'));var querystring=require(_0x8588('0xe'));var Papa=require(_0x8588('0xf'));var Redis=require(_0x8588('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8588('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8588('0x12'));var logger=require(_0x8588('0x13'))('api');var utils=require(_0x8588('0x14'));var config=require(_0x8588('0x15'));var licenseUtil=require(_0x8588('0x16'));var db=require(_0x8588('0x17'))['db'];function respondWithStatusCode(_0x4561f1,_0x3c17f){_0x3c17f=_0x3c17f||0xcc;return function(_0x247dcc){if(_0x247dcc){return _0x4561f1[_0x8588('0x18')](_0x3c17f);}return _0x4561f1[_0x8588('0x19')](_0x3c17f)['end']();};}function respondWithResult(_0x5a5388,_0x2caea8){_0x2caea8=_0x2caea8||0xc8;return function(_0x22b526){if(_0x22b526){return _0x5a5388[_0x8588('0x19')](_0x2caea8)['json'](_0x22b526);}};}function respondWithFilteredResult(_0x4ba335,_0x103070){return function(_0x2af26d){if(_0x2af26d){var _0x1f40c2=typeof _0x103070['offset']==='undefined'&&typeof _0x103070[_0x8588('0x1a')]===_0x8588('0x1b');var _0x1ec7b1=_0x2af26d[_0x8588('0x1c')];var _0x1c129e=_0x1f40c2?0x0:_0x103070[_0x8588('0x1d')];var _0x48db9e=_0x1f40c2?_0x2af26d[_0x8588('0x1c')]:_0x103070[_0x8588('0x1d')]+_0x103070[_0x8588('0x1a')];var _0x4395c9;if(_0x48db9e>=_0x1ec7b1){_0x48db9e=_0x1ec7b1;_0x4395c9=0xc8;}else{_0x4395c9=0xce;}_0x4ba335[_0x8588('0x19')](_0x4395c9);return _0x4ba335['set'](_0x8588('0x1e'),_0x1c129e+'-'+_0x48db9e+'/'+_0x1ec7b1)['json'](_0x2af26d);}return null;};}function patchUpdates(_0x4a3826){return function(_0x238ba2){try{jsonpatch['apply'](_0x238ba2,_0x4a3826,!![]);}catch(_0x2371f){return BPromise[_0x8588('0x1f')](_0x2371f);}return _0x238ba2['save']();};}function saveUpdates(_0x27e4dc,_0x40141e){return function(_0x3bcf4a){if(_0x3bcf4a){return _0x3bcf4a[_0x8588('0x20')](_0x27e4dc)[_0x8588('0x21')](function(_0x59a17f){return _0x59a17f;});}return null;};}function removeEntity(_0x5b9600,_0x115314){return function(_0x5b06b2){if(_0x5b06b2){return _0x5b06b2['destroy']()[_0x8588('0x21')](function(){_0x5b9600[_0x8588('0x19')](0xcc)[_0x8588('0x22')]();});}};}function handleEntityNotFound(_0x4ad80e,_0x10cef2){return function(_0x16dee2){if(!_0x16dee2){_0x4ad80e[_0x8588('0x18')](0x194);}return _0x16dee2;};}function handleError(_0x2b9f20,_0x5d066f){_0x5d066f=_0x5d066f||0x1f4;return function(_0x2bb0e1){logger['error'](_0x2bb0e1[_0x8588('0x23')]);if(_0x2bb0e1[_0x8588('0x24')]){delete _0x2bb0e1[_0x8588('0x24')];}_0x2b9f20[_0x8588('0x19')](_0x5d066f)[_0x8588('0x25')](_0x2bb0e1);};}exports['index']=function(_0x2b9654,_0x1bee48){var _0x11a8f6={},_0x1a4617={},_0x2a6e61={'count':0x0,'rows':[]};var _0x397881=_[_0x8588('0x26')](db[_0x8588('0x27')][_0x8588('0x28')],function(_0x2fd8d2){return{'name':_0x2fd8d2['fieldName'],'type':_0x2fd8d2[_0x8588('0x29')][_0x8588('0x2a')]};});_0x1a4617['model']=_['map'](_0x397881,_0x8588('0x24'));_0x1a4617['query']=_[_0x8588('0x2b')](_0x2b9654[_0x8588('0x2c')]);_0x1a4617[_0x8588('0x2d')]=_[_0x8588('0x2e')](_0x1a4617[_0x8588('0x2f')],_0x1a4617[_0x8588('0x2c')]);_0x11a8f6[_0x8588('0x30')]=_[_0x8588('0x2e')](_0x1a4617['model'],qs[_0x8588('0x31')](_0x2b9654[_0x8588('0x2c')]['fields']));_0x11a8f6[_0x8588('0x30')]=_0x11a8f6[_0x8588('0x30')][_0x8588('0x32')]?_0x11a8f6['attributes']:_0x1a4617['model'];if(!_0x2b9654['query'][_0x8588('0x33')]('nolimit')){_0x11a8f6[_0x8588('0x1a')]=qs[_0x8588('0x1a')](_0x2b9654[_0x8588('0x2c')]['limit']);_0x11a8f6[_0x8588('0x1d')]=qs[_0x8588('0x1d')](_0x2b9654[_0x8588('0x2c')][_0x8588('0x1d')]);}_0x11a8f6[_0x8588('0x34')]=qs['sort'](_0x2b9654['query'][_0x8588('0x35')]);_0x11a8f6[_0x8588('0x36')]=qs['filters'](_[_0x8588('0x37')](_0x2b9654[_0x8588('0x2c')],_0x1a4617[_0x8588('0x2d')]),_0x397881);if(_0x2b9654[_0x8588('0x2c')][_0x8588('0x38')]){_0x11a8f6[_0x8588('0x36')]=_[_0x8588('0x39')](_0x11a8f6[_0x8588('0x36')],{'$or':_[_0x8588('0x26')](_0x397881,function(_0x1479da){if(_0x1479da[_0x8588('0x29')]!==_0x8588('0x3a')){var _0x16887a={};_0x16887a[_0x1479da[_0x8588('0x24')]]={'$like':'%'+_0x2b9654[_0x8588('0x2c')]['filter']+'%'};return _0x16887a;}})});}_0x11a8f6=_['merge']({},_0x11a8f6,_0x2b9654[_0x8588('0x3b')]);var _0x3499d7={'where':_0x11a8f6[_0x8588('0x36')]};return db[_0x8588('0x27')]['count'](_0x3499d7)[_0x8588('0x21')](function(_0x3a9a33){_0x2a6e61[_0x8588('0x1c')]=_0x3a9a33;if(_0x2b9654[_0x8588('0x2c')]['includeAll']){_0x11a8f6['include']=[{'all':!![]}];}return db[_0x8588('0x27')][_0x8588('0x3c')](_0x11a8f6);})[_0x8588('0x21')](function(_0x4a723a){_0x2a6e61[_0x8588('0x3d')]=_0x4a723a;return _0x2a6e61;})['then'](respondWithFilteredResult(_0x1bee48,_0x11a8f6))[_0x8588('0x3e')](handleError(_0x1bee48,null));};exports[_0x8588('0x3f')]=function(_0x536399,_0x3884e4){var _0x4f0152={'raw':!![],'where':{'id':_0x536399[_0x8588('0x40')]['id']}},_0x4eb52a={};_0x4eb52a[_0x8588('0x2f')]=_[_0x8588('0x2b')](db['ChatTransferReport'][_0x8588('0x28')]);_0x4eb52a[_0x8588('0x2c')]=_[_0x8588('0x2b')](_0x536399[_0x8588('0x2c')]);_0x4eb52a[_0x8588('0x2d')]=_[_0x8588('0x2e')](_0x4eb52a['model'],_0x4eb52a[_0x8588('0x2c')]);_0x4f0152[_0x8588('0x30')]=_['intersection'](_0x4eb52a[_0x8588('0x2f')],qs[_0x8588('0x31')](_0x536399[_0x8588('0x2c')][_0x8588('0x31')]));_0x4f0152[_0x8588('0x30')]=_0x4f0152[_0x8588('0x30')][_0x8588('0x32')]?_0x4f0152[_0x8588('0x30')]:_0x4eb52a[_0x8588('0x2f')];if(_0x536399[_0x8588('0x2c')][_0x8588('0x41')]){_0x4f0152[_0x8588('0x42')]=[{'all':!![]}];}_0x4f0152=_[_0x8588('0x39')]({},_0x4f0152,_0x536399[_0x8588('0x3b')]);return db[_0x8588('0x27')][_0x8588('0x43')](_0x4f0152)['then'](handleEntityNotFound(_0x3884e4,null))[_0x8588('0x21')](respondWithResult(_0x3884e4,null))[_0x8588('0x3e')](handleError(_0x3884e4,null));};exports[_0x8588('0x44')]=function(_0x27c299,_0x56c21e){return db[_0x8588('0x27')]['create'](_0x27c299[_0x8588('0x45')],{})[_0x8588('0x21')](respondWithResult(_0x56c21e,0xc9))[_0x8588('0x3e')](handleError(_0x56c21e,null));};exports[_0x8588('0x20')]=function(_0x5cc1cd,_0x6f5eea){if(_0x5cc1cd[_0x8588('0x45')]['id']){delete _0x5cc1cd['body']['id'];}return db['ChatTransferReport']['find']({'where':{'id':_0x5cc1cd[_0x8588('0x40')]['id']}})[_0x8588('0x21')](handleEntityNotFound(_0x6f5eea,null))[_0x8588('0x21')](saveUpdates(_0x5cc1cd[_0x8588('0x45')],null))['then'](respondWithResult(_0x6f5eea,null))[_0x8588('0x3e')](handleError(_0x6f5eea,null));};exports['destroy']=function(_0x1a4574,_0x17d7b7){return db['ChatTransferReport'][_0x8588('0x43')]({'where':{'id':_0x1a4574[_0x8588('0x40')]['id']}})['then'](handleEntityNotFound(_0x17d7b7,null))['then'](removeEntity(_0x17d7b7,null))[_0x8588('0x3e')](handleError(_0x17d7b7,null));};exports[_0x8588('0x46')]=function(_0xd0ba5c,_0xe7806c){return db[_0x8588('0x27')][_0x8588('0x46')]()['then'](respondWithResult(_0xe7806c,null))[_0x8588('0x3e')](handleError(_0xe7806c,null));};
\ No newline at end of file
+var _0xd72a=['crypto','jsforce','desk.js','to-csv','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','apply','reject','save','then','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find','create','update','body','params','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel'];(function(_0x1fc596,_0x93430c){var _0x2c99c5=function(_0x3bf1a0){while(--_0x3bf1a0){_0x1fc596['push'](_0x1fc596['shift']());}};_0x2c99c5(++_0x93430c);}(_0xd72a,0x1c2));var _0xad72=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xd72a[_0x279d37];return _0x530173;};'use strict';var emlformat=require(_0xad72('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xad72('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xad72('0x2'));var moment=require(_0xad72('0x3'));var BPromise=require(_0xad72('0x4'));var Mustache=require(_0xad72('0x5'));var util=require(_0xad72('0x6'));var path=require(_0xad72('0x7'));var sox=require(_0xad72('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad72('0x9'));var _=require(_0xad72('0xa'));var squel=require(_0xad72('0xb'));var crypto=require(_0xad72('0xc'));var jsforce=require(_0xad72('0xd'));var deskjs=require(_0xad72('0xe'));var toCsv=require(_0xad72('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xad72('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xad72('0x11'));var as=require(_0xad72('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xad72('0x13'))(_0xad72('0x14'));var utils=require(_0xad72('0x15'));var config=require(_0xad72('0x16'));var licenseUtil=require(_0xad72('0x17'));var db=require(_0xad72('0x18'))['db'];function respondWithStatusCode(_0xcc3ec9,_0x2bf5ea){_0x2bf5ea=_0x2bf5ea||0xcc;return function(_0x167c2e){if(_0x167c2e){return _0xcc3ec9[_0xad72('0x19')](_0x2bf5ea);}return _0xcc3ec9['status'](_0x2bf5ea)[_0xad72('0x1a')]();};}function respondWithResult(_0x5534b0,_0xa9d8c1){_0xa9d8c1=_0xa9d8c1||0xc8;return function(_0x198301){if(_0x198301){return _0x5534b0[_0xad72('0x1b')](_0xa9d8c1)['json'](_0x198301);}};}function respondWithFilteredResult(_0x5f32ff,_0xbb8b10){return function(_0x4df03d){if(_0x4df03d){var _0xa5772b=typeof _0xbb8b10[_0xad72('0x1c')]==='undefined'&&typeof _0xbb8b10['limit']===_0xad72('0x1d');var _0x547539=_0x4df03d[_0xad72('0x1e')];var _0x28d0e1=_0xa5772b?0x0:_0xbb8b10['offset'];var _0x134303=_0xa5772b?_0x4df03d[_0xad72('0x1e')]:_0xbb8b10[_0xad72('0x1c')]+_0xbb8b10[_0xad72('0x1f')];var _0x56886a;if(_0x134303>=_0x547539){_0x134303=_0x547539;_0x56886a=0xc8;}else{_0x56886a=0xce;}_0x5f32ff[_0xad72('0x1b')](_0x56886a);return _0x5f32ff[_0xad72('0x20')]('Content-Range',_0x28d0e1+'-'+_0x134303+'/'+_0x547539)['json'](_0x4df03d);}return null;};}function patchUpdates(_0x24a572){return function(_0x5111ea){try{jsonpatch[_0xad72('0x21')](_0x5111ea,_0x24a572,!![]);}catch(_0x1b6f4a){return BPromise[_0xad72('0x22')](_0x1b6f4a);}return _0x5111ea[_0xad72('0x23')]();};}function saveUpdates(_0x50c372,_0x21b4fb){return function(_0x2961e3){if(_0x2961e3){return _0x2961e3['update'](_0x50c372)[_0xad72('0x24')](function(_0x3a4de4){return _0x3a4de4;});}return null;};}function removeEntity(_0x25a2eb,_0x4c76fc){return function(_0xf7cd3c){if(_0xf7cd3c){return _0xf7cd3c['destroy']()[_0xad72('0x24')](function(){_0x25a2eb[_0xad72('0x1b')](0xcc)[_0xad72('0x1a')]();});}};}function handleEntityNotFound(_0x39611e,_0x38b76a){return function(_0x46d91f){if(!_0x46d91f){_0x39611e[_0xad72('0x19')](0x194);}return _0x46d91f;};}function handleError(_0x47a1ab,_0x85128b){_0x85128b=_0x85128b||0x1f4;return function(_0x2f71ad){logger[_0xad72('0x25')](_0x2f71ad[_0xad72('0x26')]);if(_0x2f71ad[_0xad72('0x27')]){delete _0x2f71ad[_0xad72('0x27')];}_0x47a1ab[_0xad72('0x1b')](_0x85128b)[_0xad72('0x28')](_0x2f71ad);};}exports[_0xad72('0x29')]=function(_0x2208ee,_0x118701){var _0x1a1b4b={},_0x5f2d0b={},_0x5c4f3f={'count':0x0,'rows':[]};var _0x5b4172=_[_0xad72('0x2a')](db[_0xad72('0x2b')][_0xad72('0x2c')],function(_0x2c08d7){return{'name':_0x2c08d7[_0xad72('0x2d')],'type':_0x2c08d7[_0xad72('0x2e')][_0xad72('0x2f')]};});_0x5f2d0b[_0xad72('0x30')]=_[_0xad72('0x2a')](_0x5b4172,_0xad72('0x27'));_0x5f2d0b[_0xad72('0x31')]=_[_0xad72('0x32')](_0x2208ee[_0xad72('0x31')]);_0x5f2d0b[_0xad72('0x33')]=_[_0xad72('0x34')](_0x5f2d0b[_0xad72('0x30')],_0x5f2d0b['query']);_0x1a1b4b[_0xad72('0x35')]=_[_0xad72('0x34')](_0x5f2d0b[_0xad72('0x30')],qs[_0xad72('0x36')](_0x2208ee[_0xad72('0x31')][_0xad72('0x36')]));_0x1a1b4b[_0xad72('0x35')]=_0x1a1b4b[_0xad72('0x35')]['length']?_0x1a1b4b['attributes']:_0x5f2d0b[_0xad72('0x30')];if(!_0x2208ee['query'][_0xad72('0x37')](_0xad72('0x38'))){_0x1a1b4b[_0xad72('0x1f')]=qs[_0xad72('0x1f')](_0x2208ee[_0xad72('0x31')][_0xad72('0x1f')]);_0x1a1b4b[_0xad72('0x1c')]=qs['offset'](_0x2208ee[_0xad72('0x31')][_0xad72('0x1c')]);}_0x1a1b4b[_0xad72('0x39')]=qs[_0xad72('0x3a')](_0x2208ee[_0xad72('0x31')][_0xad72('0x3a')]);_0x1a1b4b[_0xad72('0x3b')]=qs[_0xad72('0x33')](_['pick'](_0x2208ee[_0xad72('0x31')],_0x5f2d0b[_0xad72('0x33')]),_0x5b4172);if(_0x2208ee['query'][_0xad72('0x3c')]){_0x1a1b4b['where']=_[_0xad72('0x3d')](_0x1a1b4b[_0xad72('0x3b')],{'$or':_[_0xad72('0x2a')](_0x5b4172,function(_0x84f4c7){if(_0x84f4c7[_0xad72('0x2e')]!==_0xad72('0x3e')){var _0x5372c3={};_0x5372c3[_0x84f4c7[_0xad72('0x27')]]={'$like':'%'+_0x2208ee[_0xad72('0x31')][_0xad72('0x3c')]+'%'};return _0x5372c3;}})});}_0x1a1b4b=_['merge']({},_0x1a1b4b,_0x2208ee[_0xad72('0x3f')]);var _0x5ee310={'where':_0x1a1b4b[_0xad72('0x3b')]};return db[_0xad72('0x2b')][_0xad72('0x1e')](_0x5ee310)[_0xad72('0x24')](function(_0x4e62e4){_0x5c4f3f['count']=_0x4e62e4;if(_0x2208ee[_0xad72('0x31')][_0xad72('0x40')]){_0x1a1b4b[_0xad72('0x41')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xad72('0x42')](_0x1a1b4b);})[_0xad72('0x24')](function(_0x23b3e0){_0x5c4f3f[_0xad72('0x43')]=_0x23b3e0;return _0x5c4f3f;})[_0xad72('0x24')](respondWithFilteredResult(_0x118701,_0x1a1b4b))[_0xad72('0x44')](handleError(_0x118701,null));};exports[_0xad72('0x45')]=function(_0x3e2377,_0x4b7133){var _0x1fa3d8={'raw':!![],'where':{'id':_0x3e2377['params']['id']}},_0x14bc6={};_0x14bc6['model']=_['keys'](db[_0xad72('0x2b')][_0xad72('0x2c')]);_0x14bc6[_0xad72('0x31')]=_[_0xad72('0x32')](_0x3e2377[_0xad72('0x31')]);_0x14bc6['filters']=_[_0xad72('0x34')](_0x14bc6[_0xad72('0x30')],_0x14bc6[_0xad72('0x31')]);_0x1fa3d8[_0xad72('0x35')]=_['intersection'](_0x14bc6['model'],qs['fields'](_0x3e2377[_0xad72('0x31')][_0xad72('0x36')]));_0x1fa3d8[_0xad72('0x35')]=_0x1fa3d8[_0xad72('0x35')][_0xad72('0x46')]?_0x1fa3d8[_0xad72('0x35')]:_0x14bc6[_0xad72('0x30')];if(_0x3e2377[_0xad72('0x31')][_0xad72('0x40')]){_0x1fa3d8[_0xad72('0x41')]=[{'all':!![]}];}_0x1fa3d8=_[_0xad72('0x3d')]({},_0x1fa3d8,_0x3e2377[_0xad72('0x3f')]);return db['ChatTransferReport'][_0xad72('0x47')](_0x1fa3d8)[_0xad72('0x24')](handleEntityNotFound(_0x4b7133,null))[_0xad72('0x24')](respondWithResult(_0x4b7133,null))[_0xad72('0x44')](handleError(_0x4b7133,null));};exports[_0xad72('0x48')]=function(_0x18b0de,_0x218506){return db[_0xad72('0x2b')][_0xad72('0x48')](_0x18b0de['body'],{})[_0xad72('0x24')](respondWithResult(_0x218506,0xc9))['catch'](handleError(_0x218506,null));};exports[_0xad72('0x49')]=function(_0x192ecc,_0x2f1a73){if(_0x192ecc[_0xad72('0x4a')]['id']){delete _0x192ecc[_0xad72('0x4a')]['id'];}return db['ChatTransferReport'][_0xad72('0x47')]({'where':{'id':_0x192ecc[_0xad72('0x4b')]['id']}})[_0xad72('0x24')](handleEntityNotFound(_0x2f1a73,null))[_0xad72('0x24')](saveUpdates(_0x192ecc['body'],null))[_0xad72('0x24')](respondWithResult(_0x2f1a73,null))[_0xad72('0x44')](handleError(_0x2f1a73,null));};exports[_0xad72('0x4c')]=function(_0x300d7e,_0x10c79a){return db[_0xad72('0x2b')]['find']({'where':{'id':_0x300d7e[_0xad72('0x4b')]['id']}})[_0xad72('0x24')](handleEntityNotFound(_0x10c79a,null))['then'](removeEntity(_0x10c79a,null))[_0xad72('0x44')](handleError(_0x10c79a,null));};exports['describe']=function(_0x555e8c,_0x57ca87){return db['ChatTransferReport']['describe']()['then'](respondWithResult(_0x57ca87,null))['catch'](handleError(_0x57ca87,null));};
\ No newline at end of file
index 5d26192..a01c0fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb1=['moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0xed6693,_0x5d36a8){var _0x54f73f=function(_0x16f04f){while(--_0x16f04f){_0xed6693['push'](_0xed6693['shift']());}};_0x54f73f(++_0x5d36a8);}(_0xdcb1,0xf8));var _0x1dcb=function(_0x305494,_0x412a0b){_0x305494=_0x305494-0x0;var _0x32ac4d=_0xdcb1[_0x305494];return _0x32ac4d;};'use strict';var _=require(_0x1dcb('0x0'));var util=require(_0x1dcb('0x1'));var logger=require(_0x1dcb('0x2'))(_0x1dcb('0x3'));var moment=require(_0x1dcb('0x4'));var BPromise=require(_0x1dcb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1dcb('0x6'));var rimraf=require(_0x1dcb('0x7'));var config=require(_0x1dcb('0x8'));var attributes=require(_0x1dcb('0x9'));module['exports']=function(_0x3c322b,_0xa2330e){return _0x3c322b['define']('ChatTransferReport',attributes,{'tableName':_0x1dcb('0xa'),'paranoid':![],'indexes':[{'name':_0x1dcb('0xb'),'fields':[_0x1dcb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb356=['./chatTransferReport.attributes','define','ChatTransferReport','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xb356,0x122));var _0x6b35=function(_0x15ab32,_0x32512a){_0x15ab32=_0x15ab32-0x0;var _0x62b03b=_0xb356[_0x15ab32];return _0x62b03b;};'use strict';var _=require(_0x6b35('0x0'));var util=require(_0x6b35('0x1'));var logger=require('../../config/logger')(_0x6b35('0x2'));var moment=require(_0x6b35('0x3'));var BPromise=require(_0x6b35('0x4'));var rp=require(_0x6b35('0x5'));var fs=require('fs');var path=require(_0x6b35('0x6'));var rimraf=require(_0x6b35('0x7'));var config=require(_0x6b35('0x8'));var attributes=require(_0x6b35('0x9'));module['exports']=function(_0x872c5c,_0x32013b){return _0x872c5c[_0x6b35('0xa')](_0x6b35('0xb'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x6b35('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 73e1d8a..448dbf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af5=['ChatTransferReport,\x20%s,\x20%s','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','request\x20sent','debug','stringify','error','code'];(function(_0x495cc5,_0x392018){var _0x476adc=function(_0x1e685d){while(--_0x1e685d){_0x495cc5['push'](_0x495cc5['shift']());}};_0x476adc(++_0x392018);}(_0x6af5,0x1e3));var _0x56af=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0x6af5[_0x39c734];return _0xb2a2f9;};'use strict';var _=require('lodash');var util=require(_0x56af('0x0'));var moment=require(_0x56af('0x1'));var BPromise=require(_0x56af('0x2'));var rs=require(_0x56af('0x3'));var fs=require('fs');var Redis=require(_0x56af('0x4'));var db=require(_0x56af('0x5'))['db'];var utils=require(_0x56af('0x6'));var logger=require('../../config/logger')(_0x56af('0x7'));var config=require(_0x56af('0x8'));var jayson=require(_0x56af('0x9'));var client=jayson['client'][_0x56af('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x52410b,_0x5f35b5,_0x2790a3){return new BPromise(function(_0x32bec1,_0x4dd442){return client[_0x56af('0xb')](_0x52410b,_0x2790a3)['then'](function(_0x109f7d){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x5f35b5,_0x56af('0xc'));logger[_0x56af('0xd')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x5f35b5,'request\x20sent',JSON[_0x56af('0xe')](_0x109f7d));if(_0x109f7d[_0x56af('0xf')]){if(_0x109f7d[_0x56af('0xf')][_0x56af('0x10')]===0x1f4){logger[_0x56af('0xf')](_0x56af('0x11'),_0x5f35b5,_0x109f7d['error'][_0x56af('0x12')]);return _0x4dd442(_0x109f7d[_0x56af('0xf')][_0x56af('0x12')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x5f35b5,_0x109f7d['error'][_0x56af('0x12')]);return _0x32bec1(_0x109f7d[_0x56af('0xf')][_0x56af('0x12')]);}else{logger['info'](_0x56af('0x11'),_0x5f35b5,'request\x20sent');_0x32bec1(_0x109f7d['result'][_0x56af('0x12')]);}})[_0x56af('0x13')](function(_0x117a3b){logger[_0x56af('0xf')](_0x56af('0x11'),_0x5f35b5,_0x117a3b);_0x4dd442(_0x117a3b);});});}
\ No newline at end of file
+var _0xb7cd=['../../config/environment','jayson/promise','client','request','info','ChatTransferReport,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x612d7e,_0x4b7ed6){var _0x2111e4=function(_0x3a87f7){while(--_0x3a87f7){_0x612d7e['push'](_0x612d7e['shift']());}};_0x2111e4(++_0x4b7ed6);}(_0xb7cd,0xe4));var _0xdb7c=function(_0xe1190,_0x407312){_0xe1190=_0xe1190-0x0;var _0x4d6e8c=_0xb7cd[_0xe1190];return _0x4d6e8c;};'use strict';var _=require('lodash');var util=require(_0xdb7c('0x0'));var moment=require(_0xdb7c('0x1'));var BPromise=require(_0xdb7c('0x2'));var rs=require(_0xdb7c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdb7c('0x4'))(_0xdb7c('0x5'));var config=require(_0xdb7c('0x6'));var jayson=require(_0xdb7c('0x7'));var client=jayson[_0xdb7c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x67f9d8,_0x352513,_0x2d6cb4){return new BPromise(function(_0x46673d,_0x52eebd){return client[_0xdb7c('0x9')](_0x67f9d8,_0x2d6cb4)['then'](function(_0x34285f){logger[_0xdb7c('0xa')](_0xdb7c('0xb'),_0x352513,'request\x20sent');logger[_0xdb7c('0xc')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x352513,'request\x20sent',JSON[_0xdb7c('0xd')](_0x34285f));if(_0x34285f['error']){if(_0x34285f[_0xdb7c('0xe')]['code']===0x1f4){logger['error'](_0xdb7c('0xb'),_0x352513,_0x34285f[_0xdb7c('0xe')][_0xdb7c('0xf')]);return _0x52eebd(_0x34285f[_0xdb7c('0xe')][_0xdb7c('0xf')]);}logger[_0xdb7c('0xe')](_0xdb7c('0xb'),_0x352513,_0x34285f[_0xdb7c('0xe')][_0xdb7c('0xf')]);return _0x46673d(_0x34285f[_0xdb7c('0xe')][_0xdb7c('0xf')]);}else{logger[_0xdb7c('0xa')]('ChatTransferReport,\x20%s,\x20%s',_0x352513,_0xdb7c('0x10'));_0x46673d(_0x34285f[_0xdb7c('0x11')][_0xdb7c('0xf')]);}})['catch'](function(_0x393ad2){logger['error'](_0xdb7c('0xb'),_0x352513,_0x393ad2);_0x52eebd(_0x393ad2);});});}
\ No newline at end of file
index 537824f..4ac4edb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7caf=['index','get','/:id','show','post','create','put','delete','destroy','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated'];(function(_0x432259,_0x23fdba){var _0x47b232=function(_0x57f178){while(--_0x57f178){_0x432259['push'](_0x432259['shift']());}};_0x47b232(++_0x23fdba);}(_0x7caf,0xb3));var _0xf7ca=function(_0x3b21e9,_0x1d6039){_0x3b21e9=_0x3b21e9-0x0;var _0x453b2b=_0x7caf[_0x3b21e9];return _0x453b2b;};'use strict';var multer=require(_0xf7ca('0x0'));var util=require('util');var path=require(_0xf7ca('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf7ca('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf7ca('0x3'));var interaction=require(_0xf7ca('0x4'));var config=require(_0xf7ca('0x5'));var controller=require(_0xf7ca('0x6'));router['get']('/',auth[_0xf7ca('0x7')](),controller[_0xf7ca('0x8')]);router[_0xf7ca('0x9')]('/describe',auth[_0xf7ca('0x7')](),controller['describe']);router[_0xf7ca('0x9')](_0xf7ca('0xa'),auth[_0xf7ca('0x7')](),controller[_0xf7ca('0xb')]);router[_0xf7ca('0xc')]('/',auth['isAuthenticated'](),controller[_0xf7ca('0xd')]);router[_0xf7ca('0xe')](_0xf7ca('0xa'),auth[_0xf7ca('0x7')](),controller['update']);router[_0xf7ca('0xf')]('/:id',auth[_0xf7ca('0x7')](),controller[_0xf7ca('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x036d=['destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','create','put'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x036d,0x1dd));var _0xd036=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x036d[_0x1d1779];return _0x2377e9;};'use strict';var multer=require(_0xd036('0x0'));var util=require(_0xd036('0x1'));var path=require(_0xd036('0x2'));var timeout=require('connect-timeout');var express=require(_0xd036('0x3'));var router=express['Router']();var fs_extra=require(_0xd036('0x4'));var auth=require(_0xd036('0x5'));var interaction=require(_0xd036('0x6'));var config=require(_0xd036('0x7'));var controller=require(_0xd036('0x8'));router[_0xd036('0x9')]('/',auth[_0xd036('0xa')](),controller['index']);router[_0xd036('0x9')](_0xd036('0xb'),auth[_0xd036('0xa')](),controller[_0xd036('0xc')]);router[_0xd036('0x9')](_0xd036('0xd'),auth[_0xd036('0xa')](),controller[_0xd036('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd036('0xf')]);router[_0xd036('0x10')](_0xd036('0xd'),auth[_0xd036('0xa')](),controller['update']);router['delete'](_0xd036('0xd'),auth[_0xd036('0xa')](),controller[_0xd036('0x11')]);module[_0xd036('0x12')]=router;
\ No newline at end of file
index 36c9278..c3bccf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['#011F6A','#ffffff','BOOLEAN','ENUM','rounded','Chat','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Send','Skip','Feedback','star','thumb','input','text','getDataValue','onlineForm','parse','setDataValue','stringify','textarea','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','INTEGER','CHAT','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','Agent'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0xaa88,0x137));var _0x8aa8=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xaa88[_0x50007c];return _0x5c1ec7;};'use strict';var Sequelize=require(_0x8aa8('0x0'));var rs=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'name':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8aa8('0x4')},'description':{'type':Sequelize[_0x8aa8('0x3')]},'mapKey':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x5')},'mapKeyOffline':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x5')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8aa8('0x8'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x8aa8('0x3')]},'animation':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x8aa8('0xa')](_0x8aa8('0xb'),'squared'),'defaultValue':_0x8aa8('0xb')},'header_online':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xc')},'offline_chat_button':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xd')},'download_transcript':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x8aa8('0xe')]},'closingQuestion':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x11')},'noteTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x12')},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x13')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x14')},'conditionAgreement':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x15')},'ratingType':{'type':Sequelize[_0x8aa8('0xa')](_0x8aa8('0x16'),_0x8aa8('0x17')),'defaultValue':_0x8aa8('0x16')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x8aa8('0x18'),'variable':null,'config':{'placeholder':'name','type':_0x8aa8('0x19'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x8aa8('0x18'),'props':{'title':_0x8aa8('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x8aa8('0x5'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x8aa8('0x1a')](_0x8aa8('0x1b'))?JSON[_0x8aa8('0x1c')](this['getDataValue']('onlineForm')):{};},'set':function(_0x2d1508){return this[_0x8aa8('0x1d')](_0x8aa8('0x1b'),JSON[_0x8aa8('0x1e')](_0x2d1508));}},'offlineForm':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x8aa8('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x8aa8('0x5'),'type':_0x8aa8('0x5')},'variable':null},{'type':_0x8aa8('0x1f'),'config':{'placeholder':'Comments'},'props':{'title':'Comments','helpText':_0x8aa8('0x20')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x8aa8('0x21'))?JSON[_0x8aa8('0x1c')](this[_0x8aa8('0x1a')](_0x8aa8('0x21'))):{};},'set':function(_0xe07a83){return this['setDataValue'](_0x8aa8('0x21'),JSON[_0x8aa8('0x1e')](_0xe07a83));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x8aa8('0x22')]();}},'autoclose':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x8aa8('0x3')]},'forwardOffline':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x8aa8('0x3')]},'waitingTitle':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x23')},'waitingMessage':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x24')},'offlineMessageSubject':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x25')},'offlineMessageBody':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x27')},'skipUnmanaged':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x14')},'sendUnmanaged':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x13')},'enableCustomerAttachment':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':function(){return _0x8aa8('0x28');}},'notificationSound':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x29')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x2a')},'verticalAlignment':{'type':Sequelize[_0x8aa8('0x2b')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x8aa8('0x2c')},'messagesAlignment':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0x8aa8('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x8aa8('0x2b')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8aa8('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8aa8('0x2b')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':_0x8aa8('0x2e')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x8aa8('0x2b')],'comment':_0x8aa8('0x2f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8aa8('0x30'),'set':function(_0x3c6115){if(!_0x3c6115)this[_0x8aa8('0x1d')](_0x8aa8('0x31'),null);this[_0x8aa8('0x1d')](_0x8aa8('0x32'),_0x3c6115);}},'vidaooEscalation':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x8aa8('0x3')]},'vidaooTopic':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![],'defaultValue':_0x8aa8('0x33')},'vidaooNote':{'type':Sequelize[_0x8aa8('0x3')],'defaultValue':function(){return _0x8aa8('0x34');}},'vidaooMetadata':{'type':Sequelize[_0x8aa8('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x8aa8('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x8aa8('0xe')]}};
\ No newline at end of file
+var _0x702d=['ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Thanks\x20you\x20for\x20your\x20time!','Skip','star','thumb','stringify','name','input','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#ffffff','INTEGER','BOOLEAN'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x702d,0x147));var _0xd702=function(_0x33b1cf,_0x4d6a91){_0x33b1cf=_0x33b1cf-0x0;var _0x341ee0=_0x702d[_0x33b1cf];return _0x341ee0;};'use strict';var Sequelize=require(_0xd702('0x0'));var rs=require(_0xd702('0x1'));module[_0xd702('0x2')]={'name':{'type':Sequelize[_0xd702('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xd702('0x3')]},'mapKey':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x4')},'mapKeyOffline':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'email'},'key':{'type':Sequelize[_0xd702('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x5')},'customerAlias':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'defaultValue':_0xd702('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'defaultValue':_0xd702('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xd702('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xd702('0x3')]},'animation':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xd702('0x9')](_0xd702('0xa'),_0xd702('0xb')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0xc')},'start_chat_button':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0xe')},'header_offline':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0xf')},'download_transcript':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xd702('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xd702('0x10')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x11')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x13')},'placeholderMessage':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0xe')},'skipMessageButton':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x15')},'conditionAgreement':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM'](_0xd702('0x16'),_0xd702('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0xd702('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xd702('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0xd702('0x19'),'helpText':''}},{'type':_0xd702('0x1a'),'props':{'title':_0xd702('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd702('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xd702('0x1b')](_0xd702('0x1c'))?JSON[_0xd702('0x1d')](this[_0xd702('0x1b')](_0xd702('0x1c'))):{};},'set':function(_0x94c58d){return this[_0xd702('0x1e')](_0xd702('0x1c'),JSON['stringify'](_0x94c58d));}},'offlineForm':{'type':Sequelize[_0xd702('0x10')],'defaultValue':function(){return JSON[_0xd702('0x18')]({'items':[{'type':_0xd702('0x1a'),'props':{'title':_0xd702('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xd702('0x4'),'type':_0xd702('0x4')},'variable':null},{'type':_0xd702('0x1f'),'config':{'placeholder':_0xd702('0x20')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xd702('0x1b')](_0xd702('0x21'))?JSON['parse'](this[_0xd702('0x1b')](_0xd702('0x21'))):{};},'set':function(_0xffdb54){return this[_0xd702('0x1e')]('offlineForm',JSON[_0xd702('0x18')](_0xffdb54));}},'token':{'type':Sequelize[_0xd702('0x3')],'defaultValue':function(){return rs[_0xd702('0x22')]();}},'autoclose':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xd702('0x3')]},'forwardOffline':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xd702('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x23')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x24')},'offlineMessageBody':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x15')},'sendUnmanaged':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0xe')},'enableCustomerAttachment':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xd702('0x10')]},'showAgentAvatar':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xd702('0x3')]},'notificationTemplate':{'type':Sequelize[_0xd702('0x10')],'defaultValue':function(){return _0xd702('0x25');}},'notificationSound':{'type':Sequelize[_0xd702('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x26')},'waitForTheAssignedAgent':{'type':Sequelize[_0xd702('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x27')},'verticalAlignment':{'type':Sequelize[_0xd702('0x7')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xd702('0x3')],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xd702('0x28')},'defaultTitle':{'type':Sequelize[_0xd702('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xd702('0x7')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xd702('0x3')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd702('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xd702('0x3')],'defaultValue':_0xd702('0x29')},'systemAvatar':{'type':Sequelize[_0xd702('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xd702('0x2a')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xd702('0x2b'),'set':function(_0x239bec){if(!_0x239bec)this[_0xd702('0x1e')](_0xd702('0x2c'),null);this[_0xd702('0x1e')](_0xd702('0x2d'),_0x239bec);}},'vidaooEscalation':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xd702('0x3')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd702('0x2e')},'vidaooNote':{'type':Sequelize[_0xd702('0x3')],'defaultValue':function(){return _0xd702('0x2f');}},'vidaooMetadata':{'type':Sequelize[_0xd702('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xd702('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ccc6f6e..59e8bc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83cb=['basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','sendMail','\x22%s\x22\x20<%s>','forwardOfflineAddress','subjectOffline','toPairsIn','email','offlineMessageSubject','Chat','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','tag','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','No\x20timezone','inspect','getSnippet','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','push','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','replace','alignment','labelText','color_button','backgroundColor','hideWhenOffline','Transaction','ISOLATION_LEVELS','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','onlineForm','fromKey','getOfflineMessages','addAgents','emit','userChatWebsite:save','removeAgents','userChatWebsite:remove','getAgents','bluebird','util','path','ejs','fs-extra','querystring','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','html-to-text','jayson/promise','client','http','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','get','ChatWebsites','UserProfileResource','destroy','sendStatus','stack','name','send','mandatoryDispositionPause','ChatWebsite','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','Pause','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','where','pick','map','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','sitepic','file','addAvatar','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','download','isNil','agentAvatar','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','user-agent','chat','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','priority','CmContact','contact','headers','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','browser','version','%s\x20%s','unknown','device','vendor','format','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','firstName','lastName','messageId','created','autoclose','close','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','offline','files','no\x20available\x20attributes','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','defaults','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat'];(function(_0x84818c,_0x4b4593){var _0x4d8524=function(_0x3c7c0a){while(--_0x3c7c0a){_0x84818c['push'](_0x84818c['shift']());}};_0x4d8524(++_0x4b4593);}(_0x83cb,0x174));var _0xb83c=function(_0x5e9823,_0x1ec34c){_0x5e9823=_0x5e9823-0x0;var _0x106fdc=_0x83cb[_0x5e9823];return _0x106fdc;};'use strict';var BPromise=require(_0xb83c('0x0'));var Mustache=require('mustache');var util=require(_0xb83c('0x1'));var path=require(_0xb83c('0x2'));var ejs=require(_0xb83c('0x3'));var fs=require('fs');var fs_extra=require(_0xb83c('0x4'));var _=require('lodash');var querystring=require(_0xb83c('0x5'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xb83c('0x6'))(_0xb83c('0x7'));var config=require(_0xb83c('0x8'));var db=require(_0xb83c('0x9'))['db'];config[_0xb83c('0xa')]=_['defaults'](config[_0xb83c('0xa')],{'host':_0xb83c('0xb'),'port':0x18eb});var socket=require(_0xb83c('0xc'))(new Redis(config[_0xb83c('0xa')]));require('./chatWebsite.socket')[_0xb83c('0xd')](socket);var htmlToText=require(_0xb83c('0xe'));var jayson=require(_0xb83c('0xf'));var client=jayson[_0xb83c('0x10')]['http']({'port':0x232c});var client9002=jayson[_0xb83c('0x10')]['http']({'port':0x232a});var client9003=jayson['client']['http']({'port':0x232b});var client9001=jayson['client'][_0xb83c('0x11')]({'port':0x2329});function respondWithRpcPromise(_0x52b486,_0x148501,_0x13318e,_0x362c10){return new BPromise(function(_0xe0f3d7,_0x2de102){var _0x40e6ff=_0x362c10||client;return _0x40e6ff['request'](_0x52b486,_0x13318e)[_0xb83c('0x12')](function(_0x133009){logger[_0xb83c('0x13')](_0xb83c('0x14'),_0x148501,'request\x20sent');logger[_0xb83c('0x15')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x148501,_0xb83c('0x16'),JSON[_0xb83c('0x17')](_0x133009));if(_0x133009['error']){if(_0x133009[_0xb83c('0x18')][_0xb83c('0x19')]===0x1f4){logger['error'](_0xb83c('0x14'),_0x148501,_0x133009['error'][_0xb83c('0x1a')]);return _0x2de102(_0x133009['error'][_0xb83c('0x1a')]);}logger[_0xb83c('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x148501,_0x133009[_0xb83c('0x18')]['message']);return _0xe0f3d7(_0x133009[_0xb83c('0x18')][_0xb83c('0x1a')]);}else{logger[_0xb83c('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x148501,'request\x20sent');_0xe0f3d7(_0x133009[_0xb83c('0x1b')]['message']);}})[_0xb83c('0x1c')](function(_0x150c77){logger[_0xb83c('0x18')](_0xb83c('0x14'),_0x148501,_0x150c77);_0x2de102(_0x150c77);});});}function respondWithStatusCode(_0x48170c,_0x5291b6){_0x5291b6=_0x5291b6||0xcc;return function(_0x6fc56b){if(_0x6fc56b){return _0x48170c['sendStatus'](_0x5291b6);}return _0x48170c[_0xb83c('0x1d')](_0x5291b6)[_0xb83c('0x1e')]();};}function respondWithResult(_0x10e087,_0x25e63a){_0x25e63a=_0x25e63a||0xc8;return function(_0x1eb1ce){if(_0x1eb1ce){return _0x10e087[_0xb83c('0x1d')](_0x25e63a)[_0xb83c('0x1f')](_0x1eb1ce);}};}function respondWithFilteredResult(_0x32b7d3,_0x3f89e9){return function(_0x5097c2){if(_0x5097c2){var _0x1d9623=typeof _0x3f89e9[_0xb83c('0x20')]==='undefined'&&typeof _0x3f89e9[_0xb83c('0x21')]===_0xb83c('0x22');var _0x24fd49=_0x5097c2[_0xb83c('0x23')];var _0x5ed1a3=_0x1d9623?0x0:_0x3f89e9[_0xb83c('0x20')];var _0x245f36=_0x1d9623?_0x5097c2['count']:_0x3f89e9[_0xb83c('0x20')]+_0x3f89e9['limit'];var _0x4b8664;if(_0x245f36>=_0x24fd49){_0x245f36=_0x24fd49;_0x4b8664=0xc8;}else{_0x4b8664=0xce;}_0x32b7d3['status'](_0x4b8664);return _0x32b7d3[_0xb83c('0x24')](_0xb83c('0x25'),_0x5ed1a3+'-'+_0x245f36+'/'+_0x24fd49)[_0xb83c('0x1f')](_0x5097c2);}return null;};}function saveUpdates(_0x323f87){return function(_0x80491d){if(_0x80491d){return _0x80491d['update'](_0x323f87)[_0xb83c('0x12')](function(_0x47f1bb){return _0x47f1bb;});}return null;};}function removeEntity(_0x26011c){return function(_0xc3e6de){if(_0xc3e6de){return _0xc3e6de['destroy']()[_0xb83c('0x12')](function(){var _0x216563=_0xc3e6de[_0xb83c('0x26')]({'plain':!![]});var _0x86461d=_0xb83c('0x27');return db[_0xb83c('0x28')][_0xb83c('0x29')]({'where':{'type':_0x86461d,'resourceId':_0x216563['id']}})[_0xb83c('0x12')](function(){return _0xc3e6de;});})[_0xb83c('0x12')](function(){_0x26011c['status'](0xcc)[_0xb83c('0x1e')]();});}};}function handleEntityNotFound(_0x476e43){return function(_0x4044ec){if(!_0x4044ec){_0x476e43[_0xb83c('0x2a')](0x194);}return _0x4044ec;};}function handleError(_0x587b4f,_0x582a31){_0x582a31=_0x582a31||0x1f4;return function(_0x4377e3){logger[_0xb83c('0x18')](_0x4377e3[_0xb83c('0x2b')]);if(_0x4377e3[_0xb83c('0x2c')]){delete _0x4377e3[_0xb83c('0x2c')];}_0x587b4f[_0xb83c('0x1d')](_0x582a31)[_0xb83c('0x2d')](_0x4377e3);};}exports['index']=function(_0x3cc560,_0x624f51){var _0x1ec898={'include':[{'model':db['Pause'],'as':_0xb83c('0x2e')}]},_0x3288a2={},_0x46a439={'count':0x0,'rows':[]};var _0x55af06=_['map'](db[_0xb83c('0x2f')][_0xb83c('0x30')],function(_0xaad29e){return{'name':_0xaad29e['fieldName'],'type':_0xaad29e[_0xb83c('0x31')][_0xb83c('0x32')]};});_0x3288a2[_0xb83c('0x33')]=_['map'](_0x55af06,'name');_0x3288a2[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x3cc560[_0xb83c('0x34')]);_0x3288a2[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x3288a2['model'],_0x3288a2[_0xb83c('0x34')]);_0x1ec898['attributes']=_[_0xb83c('0x37')](_0x3288a2[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x38')]));_0x1ec898[_0xb83c('0x39')]=_0x1ec898['attributes'][_0xb83c('0x3a')]?_0x1ec898[_0xb83c('0x39')]:_0x3288a2['model'];if(!_0x3cc560[_0xb83c('0x34')]['hasOwnProperty']('nolimit')){_0x1ec898[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x3cc560['query'][_0xb83c('0x21')]);_0x1ec898[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x1ec898[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x1ec898['where']=qs['filters'](_['pick'](_0x3cc560[_0xb83c('0x34')],_0x3288a2['filters']),_0x55af06);if(_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x1ec898['where']=_[_0xb83c('0x3e')](_0x1ec898['where'],{'$or':_['map'](_0x55af06,function(_0x3018ad){if(_0x3018ad['type']!==_0xb83c('0x3f')){var _0x4cf98f={};_0x4cf98f[_0x3018ad[_0xb83c('0x2c')]]={'$like':'%'+_0x3cc560[_0xb83c('0x34')][_0xb83c('0x3d')]+'%'};return _0x4cf98f;}})});}_0x1ec898=_['merge']({},_0x1ec898,_0x3cc560[_0xb83c('0x40')]);var _0xcb5f27={'where':_0x1ec898['where']};return db[_0xb83c('0x2f')][_0xb83c('0x23')](_0xcb5f27)[_0xb83c('0x12')](function(_0x5d439c){_0x46a439[_0xb83c('0x23')]=_0x5d439c;if(_0x3cc560[_0xb83c('0x34')][_0xb83c('0x41')]){_0x1ec898['include']=[{'all':!![]}];}return db[_0xb83c('0x2f')][_0xb83c('0x42')](_0x1ec898);})[_0xb83c('0x12')](function(_0x14c85c){_0x46a439['rows']=_0x14c85c;return _0x46a439;})[_0xb83c('0x12')](respondWithFilteredResult(_0x624f51,_0x1ec898))[_0xb83c('0x1c')](handleError(_0x624f51,null));};exports[_0xb83c('0x43')]=function(_0x11b908,_0x9c5c7a){var _0x23cb1c={'raw':![],'where':{'id':_0x11b908[_0xb83c('0x44')]['id']},'include':[{'model':db[_0xb83c('0x45')],'as':'mandatoryDispositionPause'}]},_0x42c53e={};_0x42c53e['model']=_[_0xb83c('0x35')](db['ChatWebsite'][_0xb83c('0x30')]);_0x42c53e[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x11b908[_0xb83c('0x34')]);_0x42c53e[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x42c53e[_0xb83c('0x33')],_0x42c53e[_0xb83c('0x34')]);_0x23cb1c[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x42c53e[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x11b908[_0xb83c('0x34')]['fields']));_0x23cb1c[_0xb83c('0x39')]=_0x23cb1c[_0xb83c('0x39')]['length']?_0x23cb1c[_0xb83c('0x39')]:_0x42c53e[_0xb83c('0x33')];if(_0x11b908['query'][_0xb83c('0x41')]){_0x23cb1c[_0xb83c('0x46')]=[{'all':!![]}];}_0x23cb1c=_[_0xb83c('0x3e')]({},_0x23cb1c,_0x11b908[_0xb83c('0x40')]);return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x23cb1c)['then'](handleEntityNotFound(_0x9c5c7a,null))[_0xb83c('0x12')](respondWithResult(_0x9c5c7a,null))['catch'](handleError(_0x9c5c7a,null));};exports[_0xb83c('0x48')]=function(_0x3aa10a,_0x3fd87a){return db[_0xb83c('0x2f')][_0xb83c('0x48')](_0x3aa10a[_0xb83c('0x49')],{})[_0xb83c('0x12')](function(_0x57f31c){var _0x140e89=_0x3aa10a[_0xb83c('0x4a')][_0xb83c('0x26')]({'plain':!![]});if(!_0x140e89)throw new Error(_0xb83c('0x4b'));if(_0x140e89['role']===_0xb83c('0x4a')){var _0x47ca2b=_0x57f31c[_0xb83c('0x26')]({'plain':!![]});var _0x524ed2=_0xb83c('0x27');return db['UserProfileSection'][_0xb83c('0x47')]({'where':{'name':_0x524ed2,'userProfileId':_0x140e89[_0xb83c('0x4c')]},'raw':!![]})['then'](function(_0x144139){if(_0x144139&&_0x144139[_0xb83c('0x4d')]===0x0){return db['UserProfileResource'][_0xb83c('0x48')]({'name':_0x47ca2b['name'],'resourceId':_0x47ca2b['id'],'type':_0x144139[_0xb83c('0x2c')],'sectionId':_0x144139['id']},{})[_0xb83c('0x12')](function(){return _0x57f31c;});}else{return _0x57f31c;}})[_0xb83c('0x1c')](function(_0x200ce7){logger[_0xb83c('0x18')](_0xb83c('0x4e'),_0x200ce7);throw _0x200ce7;});}return _0x57f31c;})[_0xb83c('0x12')](respondWithResult(_0x3fd87a,0xc9))[_0xb83c('0x1c')](handleError(_0x3fd87a,null));};exports['update']=function(_0x1023c6,_0x361734){if(_0x1023c6['body']['id']){delete _0x1023c6['body']['id'];}return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x1023c6[_0xb83c('0x44')]['id']},'include':[{'model':db['Pause'],'as':_0xb83c('0x2e')}]})['then'](handleEntityNotFound(_0x361734,null))[_0xb83c('0x12')](saveUpdates(_0x1023c6[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x361734,null))[_0xb83c('0x1c')](handleError(_0x361734,null));};exports[_0xb83c('0x29')]=function(_0x3b6533,_0x4d1d95){return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x3b6533[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x4d1d95,null))['then'](removeEntity(_0x4d1d95,null))['catch'](handleError(_0x4d1d95,null));};exports[_0xb83c('0x4f')]=function(_0x3c6321,_0x491ee5){return db[_0xb83c('0x2f')][_0xb83c('0x4f')]()[_0xb83c('0x12')](respondWithResult(_0x491ee5,null))[_0xb83c('0x1c')](handleError(_0x491ee5,null));};exports['addDisposition']=function(_0x95adef,_0x5c6109){if(_0x95adef[_0xb83c('0x49')]['id']){delete _0x95adef[_0xb83c('0x49')]['id'];}return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x95adef[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5c6109,null))['then'](function(_0x20ddf5){if(_0x20ddf5){_0x95adef[_0xb83c('0x49')][_0xb83c('0x50')]=_0x20ddf5['id'];return db[_0xb83c('0x51')]['create'](_0x95adef[_0xb83c('0x49')]);}})[_0xb83c('0x12')](respondWithResult(_0x5c6109,null))['catch'](handleError(_0x5c6109,null));};exports[_0xb83c('0x52')]=function(_0x2195e1,_0xa1bf3){var _0x25f21d={'raw':![],'where':{}};var _0x22c3b6={};var _0x1d8c63={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x2195e1[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xa1bf3,null))[_0xb83c('0x12')](function(_0x51d230){if(_0x51d230){_0x22c3b6['model']=_['keys'](db[_0xb83c('0x51')][_0xb83c('0x30')]);_0x22c3b6['query']=_[_0xb83c('0x35')](_0x2195e1[_0xb83c('0x34')]);_0x22c3b6[_0xb83c('0x36')]=_['intersection'](_0x22c3b6[_0xb83c('0x33')],_0x22c3b6[_0xb83c('0x34')]);_0x25f21d[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x22c3b6['model'],qs[_0xb83c('0x38')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x38')]));_0x25f21d['attributes']=_0x25f21d[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x25f21d[_0xb83c('0x39')]:_0x22c3b6[_0xb83c('0x33')];if(!_0x2195e1[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x25f21d[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x2195e1['query'][_0xb83c('0x21')]);_0x25f21d[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x25f21d[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x2195e1[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x25f21d[_0xb83c('0x56')]=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x2195e1[_0xb83c('0x34')],_0x22c3b6[_0xb83c('0x36')]));_0x25f21d[_0xb83c('0x56')]['ChatWebsiteId']=_0x51d230['id'];if(_0x2195e1[_0xb83c('0x34')]['filter']){_0x25f21d[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x25f21d[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x25f21d[_0xb83c('0x39')],function(_0x148da2){var _0x3c9a7a={};_0x3c9a7a[_0x148da2]={'$like':'%'+_0x2195e1['query'][_0xb83c('0x3d')]+'%'};return _0x3c9a7a;})});}_0x25f21d=_[_0xb83c('0x3e')]({},_0x25f21d,_0x2195e1[_0xb83c('0x40')]);return db[_0xb83c('0x51')]['count']({'where':_0x25f21d[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x1ee016){_0x1d8c63['count']=_0x1ee016;if(_0x2195e1[_0xb83c('0x34')][_0xb83c('0x41')]){_0x25f21d['include']=[{'all':!![]}];}return db[_0xb83c('0x51')][_0xb83c('0x42')](_0x25f21d);})[_0xb83c('0x12')](function(_0x2d2d0c){_0x1d8c63[_0xb83c('0x59')]=_0x2d2d0c;return _0x1d8c63;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0xa1bf3,_0x25f21d))[_0xb83c('0x1c')](handleError(_0xa1bf3,null));};exports[_0xb83c('0x5a')]=function(_0x494129,_0x5b6a99){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x494129[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5b6a99,null))['then'](function(_0x3b4c93){if(_0x3b4c93){return _0x3b4c93[_0xb83c('0x5a')](_0x494129[_0xb83c('0x34')]['ids']);}})[_0xb83c('0x12')](respondWithStatusCode(_0x5b6a99,null))[_0xb83c('0x1c')](handleError(_0x5b6a99,null));};exports[_0xb83c('0x5b')]=function(_0x5a6d6e,_0x5b1b79){if(_0x5a6d6e[_0xb83c('0x49')]['id']){delete _0x5a6d6e[_0xb83c('0x49')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x5a6d6e[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5b1b79,null))[_0xb83c('0x12')](function(_0x202109){if(_0x202109){_0x5a6d6e[_0xb83c('0x49')]['ChatWebsiteId']=_0x202109['id'];return db[_0xb83c('0x5c')]['create'](_0x5a6d6e[_0xb83c('0x49')]);}})[_0xb83c('0x12')](respondWithResult(_0x5b1b79,null))['catch'](handleError(_0x5b1b79,null));};exports[_0xb83c('0x5d')]=function(_0x46fdd4,_0x5202f0){var _0x282525={'raw':![],'where':{}};var _0x40b9d7={};var _0x34c202={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xb83c('0x53')]({'where':{'id':_0x46fdd4[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x5202f0,null))[_0xb83c('0x12')](function(_0x5b92e6){if(_0x5b92e6){_0x40b9d7[_0xb83c('0x33')]=_['keys'](db['CannedAnswer'][_0xb83c('0x30')]);_0x40b9d7[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x46fdd4[_0xb83c('0x34')]);_0x40b9d7[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x40b9d7[_0xb83c('0x33')],_0x40b9d7[_0xb83c('0x34')]);_0x282525[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x40b9d7['model'],qs[_0xb83c('0x38')](_0x46fdd4[_0xb83c('0x34')]['fields']));_0x282525['attributes']=_0x282525[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x282525['attributes']:_0x40b9d7[_0xb83c('0x33')];if(!_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x282525[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x46fdd4['query'][_0xb83c('0x21')]);_0x282525[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x282525[_0xb83c('0x3b')]=qs['sort'](_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x282525['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x46fdd4['query'],_0x40b9d7[_0xb83c('0x36')]));_0x282525[_0xb83c('0x56')][_0xb83c('0x50')]=_0x5b92e6['id'];if(_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x282525[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x282525[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x282525[_0xb83c('0x39')],function(_0x3c097e){var _0x363252={};_0x363252[_0x3c097e]={'$like':'%'+_0x46fdd4['query'][_0xb83c('0x3d')]+'%'};return _0x363252;})});}_0x282525=_[_0xb83c('0x3e')]({},_0x282525,_0x46fdd4[_0xb83c('0x40')]);return db[_0xb83c('0x5c')]['count']({'where':_0x282525[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x2563e4){_0x34c202['count']=_0x2563e4;if(_0x46fdd4[_0xb83c('0x34')][_0xb83c('0x41')]){_0x282525['include']=[{'all':!![]}];}return db[_0xb83c('0x5c')]['findAll'](_0x282525);})[_0xb83c('0x12')](function(_0x435970){_0x34c202[_0xb83c('0x59')]=_0x435970;return _0x34c202;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0x5202f0,_0x282525))['catch'](handleError(_0x5202f0,null));};exports[_0xb83c('0x5e')]=function(_0x2e1817,_0x4bc33b){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x2e1817[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x4bc33b,null))[_0xb83c('0x12')](function(_0x1d8f25){if(_0x1d8f25){return _0x1d8f25['removeAnswers'](_0x2e1817[_0xb83c('0x34')][_0xb83c('0x5f')]);}})['then'](respondWithStatusCode(_0x4bc33b,null))['catch'](handleError(_0x4bc33b,null));};exports[_0xb83c('0x60')]=function(_0x4112ab,_0x3437c8){_0x4112ab['body'][_0xb83c('0x61')]=_0x4112ab[_0xb83c('0x62')]['filename'];return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x4112ab['params']['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x3437c8,null))[_0xb83c('0x12')](saveUpdates(_0x4112ab[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x3437c8,null))['catch'](handleError(_0x3437c8,null));};exports[_0xb83c('0x63')]=function(_0x4d401e,_0x55520a){_0x4d401e[_0xb83c('0x49')]['agentAvatar']=_0x4d401e[_0xb83c('0x62')][_0xb83c('0x64')];return db['ChatWebsite']['find']({'where':{'id':_0x4d401e['params']['id']}})['then'](handleEntityNotFound(_0x55520a,null))[_0xb83c('0x12')](saveUpdates(_0x4d401e[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x55520a,null))['catch'](handleError(_0x55520a,null));};exports[_0xb83c('0x65')]=function(_0x5b15c2,_0xad3e7){_0x5b15c2[_0xb83c('0x49')][_0xb83c('0x66')]=_0x5b15c2[_0xb83c('0x62')][_0xb83c('0x64')];return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x5b15c2['params']['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xad3e7,null))['then'](saveUpdates(_0x5b15c2['body'],null))['then'](respondWithResult(_0xad3e7,null))[_0xb83c('0x1c')](handleError(_0xad3e7,null));};exports[_0xb83c('0x67')]=function(_0x230cdf,_0x24ddb1){_0x230cdf[_0xb83c('0x49')][_0xb83c('0x68')]=_0x230cdf['file'][_0xb83c('0x64')];return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x230cdf[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x24ddb1,null))[_0xb83c('0x12')](saveUpdates(_0x230cdf[_0xb83c('0x49')],null))[_0xb83c('0x12')](respondWithResult(_0x24ddb1,null))['catch'](handleError(_0x24ddb1,null));};exports[_0xb83c('0x69')]=function(_0x4e8f8e,_0x4b9b4e){var _0x4307b1=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x6c'));var _0x538caa={'where':{'id':_0x4e8f8e[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x61')],'raw':!![]};var _0xb3ece9=![];return require(_0xb83c('0x6d'))[_0xb83c('0x6e')]()[_0xb83c('0x12')](function(_0x563200){if(_0x563200){_0xb3ece9=_0x563200[_0xb83c('0x6f')];}})[_0xb83c('0x12')](function(){return db['ChatWebsite'][_0xb83c('0x47')](_0x538caa);})[_0xb83c('0x12')](handleEntityNotFound(_0x4b9b4e,null))['then'](function(_0x50b863){if(_0x50b863){if(!_['isNil'](_0x50b863['sitepic'])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],'server/files/images/logos/',_0x50b863[_0xb83c('0x61')]))&&_0xb3ece9){_0x4307b1=path['join'](config[_0xb83c('0x6b')],_0xb83c('0x71'),_0x50b863[_0xb83c('0x61')]);}}return _0x4b9b4e[_0xb83c('0x72')](_0x4307b1);}})[_0xb83c('0x1c')](handleError(_0x4b9b4e,null));};exports['getAvatar']=function(_0x4c7988,_0x564a26){var _0x528588=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],'server/files/images/avatars/default_avatar.png');var _0x53a6a5={'where':{'id':_0x4c7988[_0xb83c('0x44')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x53a6a5)[_0xb83c('0x12')](handleEntityNotFound(_0x564a26,null))['then'](function(_0x1068d9){if(_0x1068d9){if(!_[_0xb83c('0x73')](_0x1068d9[_0xb83c('0x74')])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x1068d9[_0xb83c('0x74')]))){_0x528588=path[_0xb83c('0x6a')](config['root'],_0xb83c('0x75'),_0x1068d9['agentAvatar']);}}return _0x564a26[_0xb83c('0x72')](_0x528588);}})[_0xb83c('0x1c')](handleError(_0x564a26,null));};exports[_0xb83c('0x76')]=function(_0x47d92d,_0x2d8e98){var _0x3a2eb6=path['join'](config[_0xb83c('0x6b')],'server/files/images/avatars/customer_avatar.png');var _0x5c3eda={'where':{'id':_0x47d92d[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x66'),_0xb83c('0x77')],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x5c3eda)[_0xb83c('0x12')](handleEntityNotFound(_0x2d8e98,null))[_0xb83c('0x12')](function(_0x5a67b1){if(_0x5a67b1){if(!_[_0xb83c('0x73')](_0x5a67b1[_0xb83c('0x66')])){if(fs[_0xb83c('0x70')](path['join'](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x5a67b1[_0xb83c('0x66')]))&&_0x5a67b1[_0xb83c('0x77')]){_0x3a2eb6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x5a67b1[_0xb83c('0x66')]);}}return _0x2d8e98['download'](_0x3a2eb6);}})[_0xb83c('0x1c')](handleError(_0x2d8e98,null));};exports[_0xb83c('0x78')]=function(_0x5e34dc,_0x2de63b){var _0x1891e6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x79'));var _0x4014cb={'where':{'id':_0x5e34dc[_0xb83c('0x44')]['id']},'attributes':['id',_0xb83c('0x68')],'raw':!![]};return db[_0xb83c('0x2f')][_0xb83c('0x47')](_0x4014cb)[_0xb83c('0x12')](handleEntityNotFound(_0x2de63b,null))[_0xb83c('0x12')](function(_0x220641){if(_0x220641){if(!_['isNil'](_0x220641[_0xb83c('0x68')])){if(fs[_0xb83c('0x70')](path[_0xb83c('0x6a')](config['root'],_0xb83c('0x75'),_0x220641[_0xb83c('0x68')]))){_0x1891e6=path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x75'),_0x220641[_0xb83c('0x68')]);}}return _0x2de63b['download'](_0x1891e6);}})[_0xb83c('0x1c')](handleError(_0x2de63b,null));};exports[_0xb83c('0x7a')]=function(_0xb5696f,_0x475e7d){var _0x7729aa=require(_0xb83c('0x7b'));var _0xf37179=new _0x7729aa();var _0x5b9956=_0xf37179[_0xb83c('0x7c')](_0xb5696f['headers'][_0xb83c('0x7d')])['getResult']();var _0x252d66={'body':_0xb5696f[_0xb83c('0x49')],'channel':_0xb83c('0x7e')};var _0x363aec=[];var _0x3066d1=[];var _0x3c99ee={};var _0x3f4495=![];return db['CmContact'][_0xb83c('0x4f')]()[_0xb83c('0x12')](function(_0x9b21c5){if(!_0x9b21c5){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))]('no\x20available\x20attributes');}_0x363aec=_[_0xb83c('0x81')](_[_0xb83c('0x35')](_0x9b21c5),[_0xb83c('0x82'),_0xb83c('0x83')]);_0x3066d1=_[_0xb83c('0x81')](_[_0xb83c('0x35')](_0x9b21c5),[_0xb83c('0x82'),'updatedAt',_0xb83c('0x84'),_0xb83c('0x85')]);if(_0xb5696f[_0xb83c('0x49')]['id']){delete _0xb5696f[_0xb83c('0x49')]['id'];}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')])){throw new db['Sequelize'][(_0xb83c('0x80'))](_0xb83c('0x87'));}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')])||_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')]===''){throw new db[(_0xb83c('0x7f'))]['ValidationError'](_0xb83c('0x88'));}if(_[_0xb83c('0x73')](_0xb5696f[_0xb83c('0x49')][_0xb83c('0x89')])){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0x8a')+_0x3066d1);}if(!_[_0xb83c('0x8b')](_0x3066d1,_0xb5696f[_0xb83c('0x49')]['mapKey'])){throw new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0x8c')+_0x3066d1);}_0x3c99ee[_0xb5696f['body'][_0xb83c('0x89')]]=_0xb5696f['body'][_0xb83c('0x86')];})[_0xb83c('0x12')](function(){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0xb5696f[_0xb83c('0x44')]['id']},'include':[{'model':db[_0xb83c('0x8d')],'as':_0xb83c('0x8e'),'include':[{'model':db['CmContact'],'as':_0xb83c('0x8f'),'where':_0x3c99ee,'limit':0x1,'order':[[_0xb83c('0x83'),_0xb83c('0x90')]]}]},{'model':db[_0xb83c('0x91')],'as':_0xb83c('0x92')}]});})[_0xb83c('0x12')](handleEntityNotFound(_0x475e7d,null))[_0xb83c('0x12')](function(_0x3f2a45){if(_0x3f2a45&&_0x3f2a45[_0xb83c('0x8e')]){_0x252d66[_0xb83c('0x93')]=_0x3f2a45;_0x252d66[_0xb83c('0x94')]=_0x3f2a45['Applications'];_0x252d66[_0xb83c('0x95')]=_0x3f2a45[_0xb83c('0x8e')];_0x252d66[_0xb83c('0x94')]=_['orderBy'](_0x252d66[_0xb83c('0x94')],[_0xb83c('0x96')],['asc']);if(_0x252d66[_0xb83c('0x93')][_0xb83c('0x92')]){delete _0x252d66[_0xb83c('0x93')][_0xb83c('0x92')];}if(_0x252d66[_0xb83c('0x93')]['List']&&_0x252d66[_0xb83c('0x93')][_0xb83c('0x8e')][_0xb83c('0x8f')][_0xb83c('0x3a')]){return _0x252d66[_0xb83c('0x93')][_0xb83c('0x8e')][_0xb83c('0x8f')][0x0];}var _0x325ec2=_['defaults'](_0xb5696f[_0xb83c('0x49')],{'firstName':_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')],'ListId':_0x3f2a45[_0xb83c('0x85')]});_0x325ec2[_0xb5696f[_0xb83c('0x49')][_0xb83c('0x89')]]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0x86')];return db[_0xb83c('0x97')][_0xb83c('0x48')](_0x325ec2,{'fields':_0x363aec,'raw':!![]});}})[_0xb83c('0x12')](handleEntityNotFound(_0x475e7d,null))[_0xb83c('0x12')](function(_0x35a328){_0x252d66[_0xb83c('0x98')]=_0x35a328;var _0xd09169=_0xb5696f['body']['customerIp'];if(_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9a')]){_0xd09169=_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9a')];}else if(_0xb5696f['headers'][_0xb83c('0x9b')]){_0xd09169=_[_0xb83c('0x9c')](_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9b')][_0xb83c('0x9d')](','));}if(_0x35a328){var _0x80662c={'ContactId':_0x35a328['id'],'ChatWebsiteId':_0xb5696f[_0xb83c('0x44')]['id'],'from':(_0x35a328['firstName']||'')+'\x20'+(_0x35a328['lastName']||''),'customerIp':_0xd09169,'customerPort':_0xb5696f[_0xb83c('0x99')][_0xb83c('0x9e')]?_0xb5696f[_0xb83c('0x99')]['x-real-port']:null,'referer':_0xb5696f[_0xb83c('0x49')]['referer'],'browserName':_0x5b9956[_0xb83c('0x9f')][_0xb83c('0x2c')]&&_0x5b9956['browser'][_0xb83c('0xa0')]?util['format'](_0xb83c('0xa1'),_0x5b9956[_0xb83c('0x9f')][_0xb83c('0x2c')],_0x5b9956[_0xb83c('0x9f')][_0xb83c('0xa0')]):_0xb83c('0xa2'),'browserVersion':_0x5b9956['browser'][_0xb83c('0xa0')]||_0xb83c('0xa2'),'osName':util['format'](_0xb83c('0xa1'),_0x5b9956['os'][_0xb83c('0x2c')],_0x5b9956['os'][_0xb83c('0xa0')]),'osVersion':_0x5b9956['os']['version'],'deviceModel':_0x5b9956['device']['model']&&_0x5b9956[_0xb83c('0xa3')][_0xb83c('0xa4')]?util[_0xb83c('0xa5')](_0xb83c('0xa6'),_0x5b9956['device'][_0xb83c('0x33')],_0x5b9956['device'][_0xb83c('0xa4')],_0x5b9956[_0xb83c('0xa3')][_0xb83c('0x31')]):null,'deviceVendor':_0x5b9956[_0xb83c('0xa3')][_0xb83c('0xa4')],'deviceType':_0x5b9956['device']['type'],'formData':JSON[_0xb83c('0x17')](_0xb5696f['body'])};var _0xfb52aa={'ChatWebsiteId':_0xb5696f['params']['id'],'closed':![]};if(_0xb5696f['body'][_0xb83c('0xa7')]){_0xfb52aa[_0xb83c('0xa7')]=_0xb5696f['body'][_0xb83c('0xa7')];return db[_0xb83c('0xa8')][_0xb83c('0x47')]({'where':_0xfb52aa})['then'](function(_0x540100){if(_0x540100){return[_0x540100,![]];}_0x80662c[_0xb83c('0xa7')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa7')];_0x80662c[_0xb83c('0xa9')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa9')];return db[_0xb83c('0xa8')][_0xb83c('0x48')](_0x80662c)[_0xb83c('0x12')](function(_0x329845){return[_0x329845,!![]];});});}_0xfb52aa[_0xb83c('0xaa')]=_0x35a328['id'];if(_0xb5696f['body'][_0xb83c('0xab')]&&_0xb5696f['body']['interaction']['id']){_0xfb52aa['id']=_0xb5696f[_0xb83c('0x49')]['interaction']['id'];return db[_0xb83c('0xa8')][_0xb83c('0x47')]({'where':_0xfb52aa})['then'](function(_0x1e4172){if(_0x1e4172){return[_0x1e4172,![]];}return db[_0xb83c('0xa8')][_0xb83c('0x48')](_0x80662c)[_0xb83c('0x12')](function(_0x3185f6){return[_0x3185f6,!![]];});});}return db[_0xb83c('0xa8')]['create'](_0x80662c)['then'](function(_0x45ddc0){return[_0x45ddc0,!![]];});}})['spread'](function(_0x385eab,_0x4f6ba5){if(_0x385eab){_0x3f4495=_0x4f6ba5;if(!_0x4f6ba5){var _0x5269bd={'from':(_0x252d66[_0xb83c('0x98')][_0xb83c('0xac')]||'')+'\x20'+(_0x252d66[_0xb83c('0x98')][_0xb83c('0xad')]||'')};if(_0xb5696f['body']['threadId']&&_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')]&&_0xb5696f[_0xb83c('0x49')][_0xb83c('0xa7')]!=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')]){_0x5269bd[_0xb83c('0xa7')]=_0xb5696f[_0xb83c('0x49')][_0xb83c('0xae')];}return _0x385eab['update'](_0x5269bd);}else{return _0x385eab;}}})[_0xb83c('0x12')](function(_0x230d1a){_0x252d66[_0xb83c('0xab')]=_0x230d1a[_0xb83c('0x26')]({'plain':!![]});_0x252d66[_0xb83c('0xab')][_0xb83c('0xaf')]=_0x3f4495;if(_0x252d66[_0xb83c('0xab')][_0xb83c('0xaf')]){if(_0x252d66[_0xb83c('0x93')][_0xb83c('0xb0')]){_0x252d66[_0xb83c('0x94')]['push']({'id':0x0,'priority':_0x252d66['applications']['length']+0x1,'app':_0xb83c('0xb1'),'appdata':_0xb83c('0xb2'),'interval':'*,*,*,*'});}}return db[_0xb83c('0xb3')][_0xb83c('0x48')]({'body':_0xb5696f[_0xb83c('0x49')][_0xb83c('0x49')],'ChatWebsiteId':_0xb5696f[_0xb83c('0x44')]['id'],'ChatInteractionId':_0x230d1a['id'],'direction':'in','ContactId':_0x252d66[_0xb83c('0x98')]['id'],'AttachmentId':_0xb5696f['body'][_0xb83c('0xb4')]});})['then'](function(_0x5a5b6b){_0x252d66[_0xb83c('0x1a')]=_0x5a5b6b;if(_0x252d66[_0xb83c('0xab')][_0xb83c('0xb5')]){return db[_0xb83c('0xb6')][_0xb83c('0x47')]({'attributes':['id','name'],'where':{'id':_0x252d66[_0xb83c('0xab')][_0xb83c('0xb5')]}})['then'](function(_0x2cbf8c){if(_0x2cbf8c){_0x252d66['applications'][_0xb83c('0xb7')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2cbf8c[_0xb83c('0x2c')]+','+(_0x252d66[_0xb83c('0x93')]['waitForTheAssignedAgent']||0xa),'interval':_0xb83c('0xb8')});_0x252d66[_0xb83c('0xb9')]=!![];}return respondWithRpcPromise(_0xb83c('0xba'),_0xb83c('0xbb'),_0x252d66);});}return respondWithRpcPromise(_0xb83c('0xba'),'startRouting',_0x252d66);})[_0xb83c('0x12')](function(_0x2598ff){respondWithRpcPromise(_0xb83c('0xbc'),_0xb83c('0xbc'),{'event':_0xb83c('0x7a'),'message':_0x2598ff},client9002);return _0x2598ff;})[_0xb83c('0x12')](respondWithResult(_0x475e7d,null))[_0xb83c('0x1c')](handleError(_0x475e7d,null));};exports[_0xb83c('0xbd')]=function(_0x2856cf,_0x17637d){var _0x13f66,_0x3701ac,_0x4fb3b4;var _0x3658f4=[];var _0x2bb408={};var _0x2bc5c7=_0x2856cf[_0xb83c('0xbe')]||[];var _0x254499=[];var _0x377242;return db[_0xb83c('0x97')][_0xb83c('0x4f')]()[_0xb83c('0x12')](function(_0x4ef1ff){if(!_0x4ef1ff){throw new db['Sequelize'][(_0xb83c('0x80'))](_0xb83c('0xbf'));}_0x3658f4=_['difference'](_[_0xb83c('0x35')](_0x4ef1ff),[_0xb83c('0x82'),'updatedAt',_0xb83c('0x84'),_0xb83c('0x85')]);if(_0x2856cf[_0xb83c('0x49')]['id']){delete _0x2856cf[_0xb83c('0x49')]['id'];}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')])){throw _0x17637d['status'](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))]('from\x20is\x20mandatory'));}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')])||_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')]===''){throw _0x17637d['status'](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))]['ValidationError'](_0xb83c('0x88')));}if(_[_0xb83c('0x73')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')])){throw _0x17637d[_0xb83c('0x1d')](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0xc1')+_0x3658f4));}if(!_[_0xb83c('0x8b')](_0x3658f4,_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')])){throw _0x17637d[_0xb83c('0x1d')](0x1f4)[_0xb83c('0x2d')](new db[(_0xb83c('0x7f'))][(_0xb83c('0x80'))](_0xb83c('0xc2')+_0x3658f4));}_0x2bb408[_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')]]=_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')];})[_0xb83c('0x12')](function(){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x2856cf[_0xb83c('0x44')]['id']},'include':[{'model':db['CmList'],'as':_0xb83c('0x8e')},{'model':db[_0xb83c('0xc3')],'as':'MailAccount'}]});})[_0xb83c('0x12')](handleEntityNotFound(_0x17637d,null))[_0xb83c('0x12')](function(_0x4ad772){if(_0x4ad772&&_0x4ad772[_0xb83c('0x8e')]){_0x3701ac=_0x4ad772;var _0x1f1096=_[_0xb83c('0xc4')](_0x2856cf[_0xb83c('0x49')],{'firstName':_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')],'phone':_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')],'ListId':_0x4ad772[_0xb83c('0x85')]});_0x1f1096[_0x2856cf[_0xb83c('0x49')][_0xb83c('0xc0')]]=_0x2856cf[_0xb83c('0x49')][_0xb83c('0x86')];return db[_0xb83c('0x97')][_0xb83c('0xc5')]({'where':_0x2bb408,'defaults':_0x1f1096});}})[_0xb83c('0xc6')](function(_0x486d59){if(_0x486d59){_0x4fb3b4=_0x486d59;var _0x5a4bd3=fs[_0xb83c('0xc7')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0xc8')),_0xb83c('0xc9'));var _0x11efa3=ejs[_0xb83c('0xca')](_0x5a4bd3,{'body':_[_0xb83c('0xcb')](_0x2856cf[_0xb83c('0x49')][_0xb83c('0x49')]),'bodyTitle':_0x3701ac[_0xb83c('0xcc')]});return db[_0xb83c('0xcd')][_0xb83c('0x48')]({'body':_0x11efa3,'plainBody':htmlToText[_0xb83c('0xce')](_0x11efa3),'ContactId':_0x486d59['id'],'ChatWebsiteId':_0x3701ac['id']});}})[_0xb83c('0x12')](function(_0x3b8863){_0x377242=_0x3b8863;if(_0x2bc5c7[_0xb83c('0x3a')]){var _0x173e52=_0x2bc5c7[_0xb83c('0x58')](function(_0x4aa379){return{'name':_0x4aa379[_0xb83c('0xcf')],'basename':_0x4aa379[_0xb83c('0x64')],'type':_0x4aa379[_0xb83c('0xd0')],'ChatOfflineMessageId':_0x3b8863['id']};});_0x254499=_0x173e52[_0xb83c('0x58')](_0x5e581f=>{var _0x571b55={'filename':_0x5e581f[_0xb83c('0x2c')],'path':path['join'](config[_0xb83c('0x6b')],_0xb83c('0xd1'),_0xb83c('0xbe'),_0xb83c('0xd2'),_0xb83c('0xd3'),_0x5e581f[_0xb83c('0xd4')])};return _0x571b55;});if(!_0x3701ac[_0xb83c('0xd5')]){return db[_0xb83c('0xd6')][_0xb83c('0xd7')](function(_0x5ca5d0){return db[_0xb83c('0xd8')][_0xb83c('0xd9')](_0x173e52,{'transaction':_0x5ca5d0});});}}})['then'](function(){if(_0x377242){_0x13f66=_0x377242;return db[_0xb83c('0xc3')][_0xb83c('0x53')]({'where':{'service':!![]},'include':[{'model':db[_0xb83c('0xda')],'as':_0xb83c('0xdb'),'raw':!![],'include':[{'model':db[_0xb83c('0xdc')],'as':_0xb83c('0xdc'),'raw':!![]}]}]});}})[_0xb83c('0x12')](function(_0xc7b304){if(_0xc7b304&&_0xc7b304['Smtp']&&_0x3701ac[_0xb83c('0xdd')]&&_0x3701ac['forwardOfflineAddress']){var _0x721f4d=_0xc7b304['getSmtpOptions']();return respondWithRpcPromise('SendMail',_0xb83c('0xde'),{'account':_0x721f4d,'message':{'from':util[_0xb83c('0xa5')](_0xb83c('0xdf'),_0xc7b304[_0xb83c('0x2c')],_0xc7b304['email']||_0xc7b304['Smtp']['user']),'to':_0x3701ac[_0xb83c('0xe0')],'subject':_0x3701ac['offlineMessageSubject'],'html':_0x13f66[_0xb83c('0x49')],'attachments':_0x254499}},client9003)[_0xb83c('0x12')](function(){return _0x13f66;})['catch'](function(_0x5718bf){logger[_0xb83c('0x18')](_0x5718bf);});}})['then'](function(){if(_0x3701ac&&_0x3701ac[_0xb83c('0xd5')]&&_0x3701ac['MailAccountId']){var _0x42a15f=[];if(_0x2bc5c7['length']){_0x42a15f=_0x2bc5c7[_0xb83c('0x58')](function(_0x39530c){return{'name':_0x39530c[_0xb83c('0xcf')],'basename':_0x39530c[_0xb83c('0x64')],'type':_0x39530c['mimetype'],'ChatOfflineMessageId':_0x377242['id']};});}var _0x2309bc;if(!_['isNil'](_0x3701ac[_0xb83c('0xe1')])){var _0x227167=_[_0xb83c('0x58')](_0x2856cf['body'],function(_0x1dde68){return _0x1dde68;});var _0x2dd676=_[_0xb83c('0xe2')](_0x227167)[0x0];var _0x10c470=_['mapValues'](_0x2dd676,function(_0x2dbb10){return _0x2dbb10;});_0x2309bc=_0x10c470[0x1][_0x3701ac[_0xb83c('0xe1')]];}var _0x4ab844={'from':_0x4fb3b4[_0xb83c('0xe3')],'firstName':_0x4fb3b4[_0xb83c('0xac')],'lastName':_0x4fb3b4[_0xb83c('0xad')],'mapKey':_0xb83c('0xe3'),'message':{'from':_0x4fb3b4['email'],'to':_0x3701ac[_0xb83c('0xc3')]['email'],'cc':'','subject':_['isNil'](_0x2309bc)?_0x3701ac[_0xb83c('0xe4')]:_0x2309bc,'messageId':'','sentAt':new Date(),'attach':_0x42a15f[_0xb83c('0x3a')],'attachments':_0x42a15f,'originChannel':_0xb83c('0xe5'),'ChatWebsiteId':_0x3701ac['id'],'ChatOfflineMessageId':_0x13f66['id'],'originTo':_0x3701ac[_0xb83c('0xc3')][_0xb83c('0xe3')]},'body':_0x13f66['body']};var _0x21b298={'account':{'id':_0x3701ac['MailAccountId']},'body':_0x4ab844,'log':_0xb83c('0xe6')};return respondWithRpcPromise(_0xb83c('0xe6'),'notifyMail',_0x21b298,client9001)[_0xb83c('0x12')](function(){return _0x13f66;})['catch'](function(_0x5009ed){logger[_0xb83c('0x18')](_0x5009ed);});}return;})['then'](function(){if(_0x13f66){return _0x13f66;}})[_0xb83c('0x12')](respondWithResult(_0x17637d,null))[_0xb83c('0x1c')](function(_0x2b674e){logger['error']('catch',_0x2b674e);for(var _0x2e4f7e of _0x2bc5c7){var _0x147a29=path['join'](config[_0xb83c('0x6b')],_0xb83c('0xd1'),_0xb83c('0xbe'),_0xb83c('0xd2'),'offline-chat',_0x2e4f7e[_0xb83c('0x64')]);fs_extra[_0xb83c('0xe7')](_0x147a29)[_0xb83c('0x1c')](function(_0x1a8330){logger[_0xb83c('0x18')](_0xb83c('0xe8'),_0x147a29,_0x1a8330);});}});};exports[_0xb83c('0xe9')]=function(_0x590d37,_0x48a747){return db['ChatInteraction'][_0xb83c('0x47')]({'where':{'id':_0x590d37[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x48a747,null))[_0xb83c('0x12')](function(_0xef494e){if(_0xef494e){return _0xef494e[_0xb83c('0xe9')](_0x590d37[_0xb83c('0x49')][_0xb83c('0x5f')],_[_0xb83c('0xea')](_0x590d37[_0xb83c('0x49')],[_0xb83c('0x5f'),'id'])||{});}})[_0xb83c('0x12')](respondWithResult(_0x48a747,null))[_0xb83c('0x1c')](handleError(_0x48a747,null));};exports[_0xb83c('0xeb')]=function(_0x1b771e,_0xf2dbdb){var _0x549d86={'raw':![],'where':{}};var _0x430318={};var _0x250959={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x1b771e[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0xf2dbdb,null))[_0xb83c('0x12')](function(_0x493d45){if(_0x493d45){_0x430318[_0xb83c('0x33')]=_[_0xb83c('0x35')](db[_0xb83c('0xa8')][_0xb83c('0x30')]);_0x430318['query']=_[_0xb83c('0x35')](_0x1b771e[_0xb83c('0x34')]);_0x430318[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x430318[_0xb83c('0x33')],_0x430318[_0xb83c('0x34')]);_0x549d86[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x430318[_0xb83c('0x33')],qs['fields'](_0x1b771e['query'][_0xb83c('0x38')]));_0x549d86[_0xb83c('0x39')]=_0x549d86[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x549d86['attributes']:_0x430318[_0xb83c('0x33')];if(!_0x1b771e[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x549d86[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x1b771e['query'][_0xb83c('0x21')]);_0x549d86[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x1b771e[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x549d86[_0xb83c('0x3b')]=qs['sort'](_0x1b771e[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x549d86['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x1b771e[_0xb83c('0x34')],_0x430318[_0xb83c('0x36')]));_0x549d86['where'][_0xb83c('0x50')]=_0x493d45['id'];if(_0x1b771e[_0xb83c('0x34')]['filter']){_0x549d86[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x549d86['where'],{'$or':_[_0xb83c('0x58')](_0x549d86[_0xb83c('0x39')],function(_0x5ae7b9){var _0x2bb5fa={};_0x2bb5fa[_0x5ae7b9]={'$like':'%'+_0x1b771e[_0xb83c('0x34')]['filter']+'%'};return _0x2bb5fa;})});}_0x549d86=_['merge']({},_0x549d86,_0x1b771e[_0xb83c('0x40')]);return db[_0xb83c('0xa8')][_0xb83c('0x23')]({'where':_0x549d86[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x23049c){_0x250959[_0xb83c('0x23')]=_0x23049c;if(_0x1b771e[_0xb83c('0x34')][_0xb83c('0x41')]){_0x549d86[_0xb83c('0x46')]=[{'model':db[_0xb83c('0x97')],'as':_0xb83c('0xec'),'required':![]},{'model':db[_0xb83c('0xb6')],'as':_0xb83c('0xed'),'attributes':[_0xb83c('0x2c'),_0xb83c('0xee'),_0xb83c('0xef')],'required':![]},{'model':db[_0xb83c('0xf0')],'as':_0xb83c('0xf1'),'attributes':['id',_0xb83c('0x2c'),'color'],'where':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]?{'id':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]}:undefined,'required':_0x1b771e[_0xb83c('0x34')][_0xb83c('0xf2')]?!![]:![]}];}return db[_0xb83c('0xa8')]['findAll'](_0x549d86);})[_0xb83c('0x12')](function(_0x54dad8){_0x250959[_0xb83c('0x59')]=_0x54dad8;return _0x250959;});}})['then'](respondWithFilteredResult(_0xf2dbdb,_0x549d86))[_0xb83c('0x1c')](handleError(_0xf2dbdb,null));};function iftimePromise(_0xb76612,_0x809f78){return respondWithRpcPromise('Command','getSnippet',{'command':_0x809f78[_0xb83c('0xf3')]?util['format'](_0xb83c('0xf4'),_0xb76612[_0xb83c('0xf5')],_0x809f78['timezone']):util[_0xb83c('0xa5')](_0xb83c('0xf6'),_0xb76612['interval'])},client9002)[_0xb83c('0x12')](function(_0x2c7267){var _0x15325e=_0x2c7267&&_0x2c7267[_0xb83c('0xf7')](_0xb83c('0xf8'))>=0x0?!![]:![];logger[_0xb83c('0x13')](_0xb83c('0xf9'),_0x809f78['id'],_0xb76612['id'],_0xb76612[_0xb83c('0xf5')],_0x15325e?'ONLINE':_0xb83c('0xfa'),_0x809f78[_0xb83c('0xf3')]?_0x809f78[_0xb83c('0xf3')]:_0xb83c('0xfb'));return _0x15325e;})[_0xb83c('0x1c')](function(_0x1f3288){logger[_0xb83c('0x18')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x809f78['id'],_0xb76612['id'],_0xb76612['interval'],util[_0xb83c('0xfc')](_0x1f3288,{'showHidden':![],'depth':null}),_0x809f78[_0xb83c('0xf3')]?_0x809f78[_0xb83c('0xf3')]:_0xb83c('0xfb'));return![];});}exports[_0xb83c('0xfd')]=function(_0x2186b9,_0x541370){var _0x5e68a9=0x0;var _0x1b03de=0x0;var _0x790f22=![];var _0x1b91ca;var _0x179b39;return db['ChatWebsite'][_0xb83c('0x47')]({'where':{'id':_0x2186b9[_0xb83c('0x44')]['id']},'include':[{'model':db['Interval'],'as':_0xb83c('0xfe'),'include':[{'model':db[_0xb83c('0xfe')],'as':_0xb83c('0xff'),'attributes':['id','interval'],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x541370,null))[_0xb83c('0x12')](function(_0x57d7a4){if(_0x57d7a4){_0x1b91ca=_0x57d7a4;return _0x57d7a4[_0xb83c('0x100')]({'raw':!![]});}})[_0xb83c('0x12')](function(_0x8f63c2){if(_0x1b91ca){if(_0x8f63c2){_0x179b39=_0x8f63c2;}}return require(_0xb83c('0x6d'))[_0xb83c('0x6e')]();})[_0xb83c('0x12')](function(_0x33f919){if(_0x33f919){_0x1b03de=_0x33f919[_0xb83c('0x101')];_0x790f22=_0x33f919[_0xb83c('0x6f')];}})[_0xb83c('0x12')](function(){return db[_0xb83c('0xa8')][_0xb83c('0x23')]({'where':{'closed':![]}});})[_0xb83c('0x12')](function(_0x251d1c){_0x5e68a9=_0x251d1c;if(_0x1b03de&&_0x251d1c>_0x1b03de){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0x45b60c){if(_0x45b60c){_0x45b60c[_0xb83c('0x102')](_0xb83c('0x103'));}});}})['then'](function(){if(_0x1b91ca[_0xb83c('0xfe')]&&_0x1b91ca[_0xb83c('0xfe')]['Intervals']){var _0x223b97=[];for(var _0xb53c6b=0x0;_0xb53c6b<_0x1b91ca['Interval'][_0xb83c('0xff')][_0xb83c('0x3a')];_0xb53c6b++){var _0x5bc2d3=_0x1b91ca['Interval'][_0xb83c('0xff')][_0xb53c6b]['get']({'plain':!![]});_0x223b97[_0xb83c('0x104')](iftimePromise(_0x5bc2d3,_0x1b91ca));}return BPromise['all'](_0x223b97)['then'](function(_0xbfc225){return _['some'](_0xbfc225);});}else{return!![];}})['then'](function(_0x39d780){var _0x46bccd=fs[_0xb83c('0xc7')](path[_0xb83c('0x6a')](config[_0xb83c('0x6b')],_0xb83c('0x105')),_0xb83c('0xc9'));var _0x1eca1b={'remote':_0x1b91ca[_0xb83c('0x106')],'query':querystring[_0xb83c('0x17')](_[_0xb83c('0x3e')](_0x1b91ca[_0xb83c('0x26')]({'plain':!![]}),{'customerIp':_0x2186b9[_0xb83c('0x99')][_0xb83c('0x9b')]||_0x2186b9[_0xb83c('0x99')][_0xb83c('0x107')]||_0x2186b9[_0xb83c('0x108')][_0xb83c('0x109')]||_0x2186b9['ip'],'referer':_0x2186b9['headers']['referer'],'openedInteractions':_0x5e68a9,'maxInteractions':_0x1b03de,'virtual':_0x790f22[_0xb83c('0x101')],'online':_0x39d780,'custom':_0x790f22}))[_0xb83c('0x10a')](/'/g,'\x5c\x27')};_0x541370[_0xb83c('0x2d')](ejs[_0xb83c('0xca')](Mustache[_0xb83c('0xca')](_0x46bccd,_0x1eca1b),{'proactiveActions':_0x179b39,'alignment':_0x1b91ca[_0xb83c('0x10b')],'verticalAlignment':_0x1b91ca['verticalAlignment'],'div_color':_0x1b91ca['color'],'labelText':_0x1b91ca[_0xb83c('0x10c')],'text_color':_0x1b91ca['textColor'],'text_button_color':_0x1b91ca['textButtonColor'],'button_color':_0x1b91ca[_0xb83c('0x10d')],'background_color':_0x1b91ca[_0xb83c('0x10e')],'hideWhenOffline':_0x1b91ca[_0xb83c('0x10f')],'interval':_0x1b91ca['IntervalId']}));})[_0xb83c('0x1c')](handleError(_0x541370,null));};exports['addApplications']=function(_0x21b8ae,_0xd4c9d9){var _0x1ac89f=_0x21b8ae[_0xb83c('0x44')]['id'];var _0x1c5f94=_0x21b8ae[_0xb83c('0x49')];var _0xd43379=0xc8;var _0x33b14f=null;return db[_0xb83c('0xd6')]['transaction']({'isolationLevel':db[_0xb83c('0xd6')][_0xb83c('0x110')][_0xb83c('0x111')]['READ_COMMITTED']},function(_0x260cab){return db['ChatWebsite'][_0xb83c('0x53')]({'where':{'id':_0x1ac89f},'transaction':_0x260cab})[_0xb83c('0x12')](function(_0x5b1a9a){if(_0x5b1a9a){return db[_0xb83c('0x91')][_0xb83c('0x29')]({'where':{'ChatWebsiteId':_0x1ac89f},'transaction':_0x260cab})[_0xb83c('0x12')](function(){var _0x5b8fb1=_['map'](_0x1c5f94,function(_0x158303){_0x158303[_0xb83c('0x50')]=_0x1ac89f;return _0x158303;});return db[_0xb83c('0x91')][_0xb83c('0xd9')](_0x5b8fb1,{'transaction':_0x260cab});});}else{_0xd43379=0x194;_0x33b14f=[];}});})[_0xb83c('0x12')](function(){if(_0xd43379!==0x194){return db[_0xb83c('0x91')][_0xb83c('0x112')]({'where':{'ChatWebsiteId':_0x1ac89f},'order':_0xb83c('0x96')})[_0xb83c('0x12')](function(_0x1b1b4d){_0x33b14f=_0x1b1b4d;});}})[_0xb83c('0x1c')](function(_0x397a6d){_0xd43379=0x1f4;logger[_0xb83c('0x18')](_0x397a6d['stack']);if(_0x397a6d[_0xb83c('0x2c')]){delete _0x397a6d[_0xb83c('0x2c')];}_0x33b14f=_0x397a6d;})[_0xb83c('0x113')](function(){if(_0x33b14f===null){_0xd4c9d9[_0xb83c('0x2a')](_0xd43379);}else{if(_0xd43379===0x1f4){_0xd4c9d9[_0xb83c('0x1d')](_0xd43379)[_0xb83c('0x2d')](_0x33b14f);}else{_0xd4c9d9['status'](_0xd43379)['json'](_0x33b14f);}}});};exports[_0xb83c('0x114')]=function(_0x4a0236,_0x40fe28){var _0x294d85={};var _0x4e277c={};var _0x39efb8;var _0x155632;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x4a0236['params']['id']}})['then'](handleEntityNotFound(_0x40fe28,null))[_0xb83c('0x12')](function(_0x5bf7c4){if(_0x5bf7c4){_0x39efb8=_0x5bf7c4;_0x4e277c['model']=_['keys'](db[_0xb83c('0x91')]['rawAttributes']);_0x4e277c[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x4a0236[_0xb83c('0x34')]);_0x4e277c[_0xb83c('0x36')]=_['intersection'](_0x4e277c[_0xb83c('0x33')],_0x4e277c[_0xb83c('0x34')]);_0x294d85['attributes']=_[_0xb83c('0x37')](_0x4e277c[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x4a0236[_0xb83c('0x34')]['fields']));_0x294d85[_0xb83c('0x39')]=_0x294d85['attributes'][_0xb83c('0x3a')]?_0x294d85[_0xb83c('0x39')]:_0x4e277c[_0xb83c('0x33')];_0x294d85['order']=qs[_0xb83c('0x3c')](_0x4a0236['query'][_0xb83c('0x3c')]);_0x294d85['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x4a0236['query'],_0x4e277c[_0xb83c('0x36')]));if(_0x4a0236[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x294d85[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x294d85[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x294d85[_0xb83c('0x39')],function(_0xf64eea){var _0xcac9f2={};_0xcac9f2[_0xf64eea]={'$like':'%'+_0x4a0236[_0xb83c('0x34')][_0xb83c('0x3d')]+'%'};return _0xcac9f2;})});}_0x294d85=_[_0xb83c('0x3e')]({},_0x294d85,_0x4a0236[_0xb83c('0x40')]);return _0x39efb8[_0xb83c('0x114')](_0x294d85);}})[_0xb83c('0x12')](function(_0x5c3c3f){if(_0x5c3c3f){_0x155632=_0x5c3c3f[_0xb83c('0x3a')];if(!_0x4a0236[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0x294d85['limit']=qs['limit'](_0x4a0236[_0xb83c('0x34')][_0xb83c('0x21')]);_0x294d85[_0xb83c('0x20')]=qs['offset'](_0x4a0236[_0xb83c('0x34')]['offset']);}return _0x39efb8[_0xb83c('0x114')](_0x294d85);}})[_0xb83c('0x12')](function(_0x5b960e){if(_0x5b960e){return _0x5b960e?{'count':_0x155632,'rows':_0x5b960e}:null;}})['then'](respondWithResult(_0x40fe28,null))[_0xb83c('0x1c')](handleError(_0x40fe28,null));};exports[_0xb83c('0x115')]=function(_0x452e33,_0x2a7dfd){return db[_0xb83c('0x116')][_0xb83c('0x47')]({'where':{'id':_0x452e33[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x2a7dfd,null))[_0xb83c('0x12')](function(_0x37a4a1){if(_0x37a4a1){return _0x37a4a1['addProactiveActions'](_0x452e33[_0xb83c('0x49')]['ids'],_[_0xb83c('0xea')](_0x452e33['body'],[_0xb83c('0x5f'),'id'])||{});}})[_0xb83c('0x12')](respondWithResult(_0x2a7dfd,null))['catch'](handleError(_0x2a7dfd,null));};exports[_0xb83c('0x100')]=function(_0x12cf20,_0x46981b){var _0xd394d1={};var _0x13bcdc={};var _0x1eace3;var _0x3207d5;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x12cf20[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x46981b,null))[_0xb83c('0x12')](function(_0x177299){if(_0x177299){_0x1eace3=_0x177299;_0x13bcdc['model']=_[_0xb83c('0x35')](db[_0xb83c('0x117')][_0xb83c('0x30')]);_0x13bcdc['query']=_[_0xb83c('0x35')](_0x12cf20[_0xb83c('0x34')]);_0x13bcdc[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x13bcdc[_0xb83c('0x33')],_0x13bcdc[_0xb83c('0x34')]);_0xd394d1[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x13bcdc[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x12cf20[_0xb83c('0x34')]['fields']));_0xd394d1[_0xb83c('0x39')]=_0xd394d1['attributes']['length']?_0xd394d1[_0xb83c('0x39')]:_0x13bcdc[_0xb83c('0x33')];_0xd394d1[_0xb83c('0x3b')]=qs['sort'](_0x12cf20[_0xb83c('0x34')][_0xb83c('0x3c')]);_0xd394d1[_0xb83c('0x56')]=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x12cf20[_0xb83c('0x34')],_0x13bcdc['filters']));if(_0x12cf20[_0xb83c('0x34')][_0xb83c('0x3d')]){_0xd394d1[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0xd394d1[_0xb83c('0x56')],{'$or':_['map'](_0xd394d1[_0xb83c('0x39')],function(_0x338a5e){var _0x3dd2b5={};_0x3dd2b5[_0x338a5e]={'$like':'%'+_0x12cf20['query'][_0xb83c('0x3d')]+'%'};return _0x3dd2b5;})});}_0xd394d1=_[_0xb83c('0x3e')]({},_0xd394d1,_0x12cf20[_0xb83c('0x40')]);return _0x1eace3[_0xb83c('0x100')](_0xd394d1);}})[_0xb83c('0x12')](function(_0x2a6068){if(_0x2a6068){_0x3207d5=_0x2a6068[_0xb83c('0x3a')];if(!_0x12cf20[_0xb83c('0x34')][_0xb83c('0x54')](_0xb83c('0x55'))){_0xd394d1[_0xb83c('0x21')]=qs['limit'](_0x12cf20['query'][_0xb83c('0x21')]);_0xd394d1['offset']=qs['offset'](_0x12cf20[_0xb83c('0x34')][_0xb83c('0x20')]);}return _0x1eace3[_0xb83c('0x100')](_0xd394d1);}})['then'](function(_0x2110b3){if(_0x2110b3){return _0x2110b3?{'count':_0x3207d5,'rows':_0x2110b3}:null;}})[_0xb83c('0x12')](respondWithResult(_0x46981b,null))['catch'](handleError(_0x46981b,null));};exports[_0xb83c('0x118')]=function(_0x15dd01,_0x517f17){var _0x562dd8=_0x15dd01['query'][_0xb83c('0x119')]===_0xb83c('0x11a')?'offlineForm':_0xb83c('0x11b');return db[_0xb83c('0x2f')]['find']({'attributes':['id',_0x562dd8],'where':{'id':_0x15dd01[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x517f17,null))['then'](function(_0x37b3b9){if(_0x37b3b9){var _0x58e037=_0x37b3b9[_0x562dd8];var _0x278aa9=_0x58e037&&_0x58e037['items']?_0x58e037['items']:[];_0x517f17['send']({'fromKey':_['isNil'](_0x58e037[_0xb83c('0x11c')])?undefined:_0x58e037[_0xb83c('0x11c')],'count':_0x278aa9[_0xb83c('0x3a')],'rows':_0x278aa9});}})['catch'](handleError(_0x517f17,null));};exports[_0xb83c('0x11d')]=function(_0x334c70,_0x2bc84c){var _0x5ee489={'raw':![],'where':{}};var _0x2408a5={};var _0x3b980d={'count':0x0,'rows':[]};return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x334c70[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x2bc84c,null))[_0xb83c('0x12')](function(_0x4766a9){if(_0x4766a9){_0x2408a5[_0xb83c('0x33')]=_[_0xb83c('0x35')](db[_0xb83c('0xcd')][_0xb83c('0x30')]);_0x2408a5[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x334c70[_0xb83c('0x34')]);_0x2408a5[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x2408a5[_0xb83c('0x33')],_0x2408a5[_0xb83c('0x34')]);_0x5ee489[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x2408a5[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x38')]));_0x5ee489['attributes']=_0x5ee489[_0xb83c('0x39')][_0xb83c('0x3a')]?_0x5ee489[_0xb83c('0x39')]:_0x2408a5['model'];if(!_0x334c70[_0xb83c('0x34')][_0xb83c('0x54')]('nolimit')){_0x5ee489[_0xb83c('0x21')]=qs['limit'](_0x334c70[_0xb83c('0x34')]['limit']);_0x5ee489[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x20')]);}_0x5ee489[_0xb83c('0x3b')]=qs[_0xb83c('0x3c')](_0x334c70[_0xb83c('0x34')][_0xb83c('0x3c')]);_0x5ee489['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x334c70[_0xb83c('0x34')],_0x2408a5[_0xb83c('0x36')]));_0x5ee489['where'][_0xb83c('0x50')]=_0x4766a9['id'];if(_0x334c70[_0xb83c('0x34')][_0xb83c('0x3d')]){_0x5ee489[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0x5ee489[_0xb83c('0x56')],{'$or':_[_0xb83c('0x58')](_0x5ee489[_0xb83c('0x39')],function(_0x118782){var _0x225246={};_0x225246[_0x118782]={'$like':'%'+_0x334c70[_0xb83c('0x34')]['filter']+'%'};return _0x225246;})});}_0x5ee489=_['merge']({},_0x5ee489,_0x334c70[_0xb83c('0x40')]);return db[_0xb83c('0xcd')][_0xb83c('0x23')]({'where':_0x5ee489[_0xb83c('0x56')]})[_0xb83c('0x12')](function(_0x5e9f24){_0x3b980d[_0xb83c('0x23')]=_0x5e9f24;if(_0x334c70['query'][_0xb83c('0x41')]){_0x5ee489['include']=[{'all':!![]}];}else{_0x5ee489[_0xb83c('0x46')]=[{'model':db['CmContact'],'as':_0xb83c('0xec'),'required':![]},{'model':db[_0xb83c('0xd8')],'as':'Attachments','required':![]}];}return db[_0xb83c('0xcd')]['findAll'](_0x5ee489);})[_0xb83c('0x12')](function(_0x4006f1){_0x3b980d[_0xb83c('0x59')]=_0x4006f1;return _0x3b980d;});}})[_0xb83c('0x12')](respondWithFilteredResult(_0x2bc84c,_0x5ee489))[_0xb83c('0x1c')](handleError(_0x2bc84c,null));};exports[_0xb83c('0x11e')]=function(_0x2d54e7,_0x61afb2){return db[_0xb83c('0x2f')]['find']({'where':{'id':_0x2d54e7[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x61afb2,null))['then'](function(_0x2a6dc3){if(_0x2a6dc3){return _0x2a6dc3[_0xb83c('0x11e')](_0x2d54e7[_0xb83c('0x49')][_0xb83c('0x5f')],_['omit'](_0x2d54e7[_0xb83c('0x49')],[_0xb83c('0x5f'),'id'])||{})[_0xb83c('0xc6')](function(_0x5e2b63){for(var _0x55a9b9=0x0;_0x55a9b9<_0x2d54e7['body'][_0xb83c('0x5f')][_0xb83c('0x3a')];_0x55a9b9+=0x1){socket[_0xb83c('0x11f')](_0xb83c('0x120'),{'UserId':Number(_0x2d54e7[_0xb83c('0x49')]['ids'][_0x55a9b9]),'ChatWebsiteId':Number(_0x2d54e7[_0xb83c('0x44')]['id'])});}return _0x5e2b63;});}})[_0xb83c('0x12')](respondWithResult(_0x61afb2,null))[_0xb83c('0x1c')](handleError(_0x61afb2,null));};exports[_0xb83c('0x121')]=function(_0x66a85c,_0x10779c){return db[_0xb83c('0x2f')][_0xb83c('0x47')]({'where':{'id':_0x66a85c[_0xb83c('0x44')]['id']}})[_0xb83c('0x12')](handleEntityNotFound(_0x10779c,null))[_0xb83c('0x12')](function(_0x2f0ced){if(_0x2f0ced){return _0x2f0ced[_0xb83c('0x121')](_0x66a85c[_0xb83c('0x34')][_0xb83c('0x5f')])[_0xb83c('0x12')](function(){if(_['isArray'](_0x66a85c['query'][_0xb83c('0x5f')])){for(var _0x4d3c09=0x0;_0x4d3c09<_0x66a85c[_0xb83c('0x34')][_0xb83c('0x5f')]['length'];_0x4d3c09+=0x1){socket[_0xb83c('0x11f')](_0xb83c('0x122'),{'UserId':Number(_0x66a85c['query'][_0xb83c('0x5f')][_0x4d3c09]),'ChatWebsiteId':Number(_0x66a85c[_0xb83c('0x44')]['id'])});}}else{socket[_0xb83c('0x11f')]('userChatWebsite:remove',{'UserId':Number(_0x66a85c['query'][_0xb83c('0x5f')]),'ChatWebsiteId':Number(_0x66a85c[_0xb83c('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x10779c,null))[_0xb83c('0x1c')](handleError(_0x10779c,null));};exports['getAgents']=function(_0x4ecb13,_0x2c02cc){var _0xdab755={};var _0x320261={};var _0x3b5f7c;var _0x347e11;return db[_0xb83c('0x2f')][_0xb83c('0x53')]({'where':{'id':_0x4ecb13[_0xb83c('0x44')]['id']}})['then'](handleEntityNotFound(_0x2c02cc,null))['then'](function(_0x188795){if(_0x188795){_0x3b5f7c=_0x188795;_0x320261[_0xb83c('0x33')]=_[_0xb83c('0x35')](db['User']['rawAttributes']);_0x320261[_0xb83c('0x34')]=_[_0xb83c('0x35')](_0x4ecb13[_0xb83c('0x34')]);_0x320261[_0xb83c('0x36')]=_[_0xb83c('0x37')](_0x320261[_0xb83c('0x33')],_0x320261[_0xb83c('0x34')]);_0xdab755[_0xb83c('0x39')]=_[_0xb83c('0x37')](_0x320261[_0xb83c('0x33')],qs[_0xb83c('0x38')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x38')]));_0xdab755[_0xb83c('0x39')]=_0xdab755[_0xb83c('0x39')][_0xb83c('0x3a')]?_0xdab755[_0xb83c('0x39')]:_0x320261[_0xb83c('0x33')];_0xdab755['order']=qs['sort'](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x3c')]);_0xdab755['where']=qs[_0xb83c('0x36')](_[_0xb83c('0x57')](_0x4ecb13[_0xb83c('0x34')],_0x320261['filters']));if(_0x4ecb13[_0xb83c('0x34')]['filter']){_0xdab755[_0xb83c('0x56')]=_[_0xb83c('0x3e')](_0xdab755['where'],{'$or':_[_0xb83c('0x58')](_0xdab755[_0xb83c('0x39')],function(_0x347c59){var _0x3a38d5={};_0x3a38d5[_0x347c59]={'$like':'%'+_0x4ecb13['query'][_0xb83c('0x3d')]+'%'};return _0x3a38d5;})});}_0xdab755=_['merge']({},_0xdab755,_0x4ecb13['options']);return _0x3b5f7c[_0xb83c('0x123')](_0xdab755);}})[_0xb83c('0x12')](function(_0x414403){if(_0x414403){_0x347e11=_0x414403[_0xb83c('0x3a')];if(!_0x4ecb13['query']['hasOwnProperty'](_0xb83c('0x55'))){_0xdab755[_0xb83c('0x21')]=qs[_0xb83c('0x21')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x21')]);_0xdab755[_0xb83c('0x20')]=qs[_0xb83c('0x20')](_0x4ecb13[_0xb83c('0x34')][_0xb83c('0x20')]);}return _0x3b5f7c[_0xb83c('0x123')](_0xdab755);}})[_0xb83c('0x12')](function(_0x412a79){if(_0x412a79){return _0x412a79?{'count':_0x347e11,'rows':_0x412a79}:null;}})[_0xb83c('0x12')](respondWithResult(_0x2c02cc,null))[_0xb83c('0x1c')](handleError(_0x2c02cc,null));};
\ No newline at end of file
+var _0x34d9=['ChatWebsites','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','findOne','ChatWebsiteId','removeAnswers','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','root','server/files/images/logos/default_logo.svg','isNil','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','existsSync','join','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','user-agent','chat','describe','Sequelize','ValidationError','no\x20available\x20attributes','updatedAt','createdAt','from','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','List','Contacts','DESC','ChatApplication','account','applications','Applications','list','orderBy','priority','asc','ListId','CmContact','contact','headers','cf-connecting-ip','x-forwarded-for','first','split','lastName','x-real-port','referer','browser','version','%s\x20%s','unknown','format','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','messageId','update','created','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','notify','difference','CompanyId','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','readFileSync','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','files','attachments','offline-chat','openNewInteraction','bulkCreate','MailAccount','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','subjectOffline','toPairsIn','mapValues','Chat','NotifyMailAccount','notifyMail','remove','addInteraction','omit','getInteractions','order','Contact','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','Interval','Intervals','getProactiveActions','../../config/license/util','custom','License','push','all','some','remote','connection','remoteAddress','replace','alignment','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','getFields','online','offlineForm','onlineForm','fromKey','getOfflineMessages','Attachment','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','bluebird','util','path','ejs','fs-extra','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','html-to-text','jayson/promise','client','http','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','then','destroy','get'];(function(_0x30a36b,_0xa9e29b){var _0x4ea420=function(_0x442a14){while(--_0x442a14){_0x30a36b['push'](_0x30a36b['shift']());}};_0x4ea420(++_0xa9e29b);}(_0x34d9,0xfd));var _0x934d=function(_0x3e2c48,_0x2b5464){_0x3e2c48=_0x3e2c48-0x0;var _0x279fd3=_0x34d9[_0x3e2c48];return _0x279fd3;};'use strict';var BPromise=require(_0x934d('0x0'));var Mustache=require('mustache');var util=require(_0x934d('0x1'));var path=require(_0x934d('0x2'));var ejs=require(_0x934d('0x3'));var fs=require('fs');var fs_extra=require(_0x934d('0x4'));var _=require(_0x934d('0x5'));var querystring=require('querystring');var Redis=require('ioredis');var qs=require(_0x934d('0x6'));var logger=require(_0x934d('0x7'))(_0x934d('0x8'));var config=require(_0x934d('0x9'));var db=require(_0x934d('0xa'))['db'];config[_0x934d('0xb')]=_[_0x934d('0xc')](config['redis'],{'host':_0x934d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x934d('0xb')]));require(_0x934d('0xe'))['register'](socket);var htmlToText=require(_0x934d('0xf'));var jayson=require(_0x934d('0x10'));var client=jayson[_0x934d('0x11')]['http']({'port':0x232c});var client9002=jayson[_0x934d('0x11')][_0x934d('0x12')]({'port':0x232a});var client9003=jayson[_0x934d('0x11')][_0x934d('0x12')]({'port':0x232b});var client9001=jayson[_0x934d('0x11')][_0x934d('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x37d59d,_0x5022e9,_0x7204e5,_0x2a67cc){return new BPromise(function(_0xc1ede1,_0x5435ba){var _0x23f865=_0x2a67cc||client;return _0x23f865['request'](_0x37d59d,_0x7204e5)['then'](function(_0x16fe40){logger[_0x934d('0x13')](_0x934d('0x14'),_0x5022e9,'request\x20sent');logger[_0x934d('0x15')](_0x934d('0x16'),_0x5022e9,_0x934d('0x17'),JSON[_0x934d('0x18')](_0x16fe40));if(_0x16fe40[_0x934d('0x19')]){if(_0x16fe40[_0x934d('0x19')][_0x934d('0x1a')]===0x1f4){logger['error'](_0x934d('0x14'),_0x5022e9,_0x16fe40['error']['message']);return _0x5435ba(_0x16fe40[_0x934d('0x19')][_0x934d('0x1b')]);}logger[_0x934d('0x19')](_0x934d('0x14'),_0x5022e9,_0x16fe40[_0x934d('0x19')][_0x934d('0x1b')]);return _0xc1ede1(_0x16fe40['error'][_0x934d('0x1b')]);}else{logger[_0x934d('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x5022e9,_0x934d('0x17'));_0xc1ede1(_0x16fe40['result']['message']);}})[_0x934d('0x1c')](function(_0xc10497){logger[_0x934d('0x19')](_0x934d('0x14'),_0x5022e9,_0xc10497);_0x5435ba(_0xc10497);});});}function respondWithStatusCode(_0x5a3451,_0x53e4f5){_0x53e4f5=_0x53e4f5||0xcc;return function(_0x44270e){if(_0x44270e){return _0x5a3451[_0x934d('0x1d')](_0x53e4f5);}return _0x5a3451[_0x934d('0x1e')](_0x53e4f5)[_0x934d('0x1f')]();};}function respondWithResult(_0x53a6da,_0x479f2c){_0x479f2c=_0x479f2c||0xc8;return function(_0x453a6a){if(_0x453a6a){return _0x53a6da[_0x934d('0x1e')](_0x479f2c)['json'](_0x453a6a);}};}function respondWithFilteredResult(_0x328f8b,_0x439f69){return function(_0x3492d4){if(_0x3492d4){var _0xbf68c8=typeof _0x439f69[_0x934d('0x20')]===_0x934d('0x21')&&typeof _0x439f69[_0x934d('0x22')]===_0x934d('0x21');var _0x5505c6=_0x3492d4[_0x934d('0x23')];var _0x3f9aea=_0xbf68c8?0x0:_0x439f69['offset'];var _0x4d1fc1=_0xbf68c8?_0x3492d4[_0x934d('0x23')]:_0x439f69[_0x934d('0x20')]+_0x439f69[_0x934d('0x22')];var _0x34d7ec;if(_0x4d1fc1>=_0x5505c6){_0x4d1fc1=_0x5505c6;_0x34d7ec=0xc8;}else{_0x34d7ec=0xce;}_0x328f8b['status'](_0x34d7ec);return _0x328f8b[_0x934d('0x24')](_0x934d('0x25'),_0x3f9aea+'-'+_0x4d1fc1+'/'+_0x5505c6)[_0x934d('0x26')](_0x3492d4);}return null;};}function saveUpdates(_0x292bfa){return function(_0x2d412e){if(_0x2d412e){return _0x2d412e['update'](_0x292bfa)[_0x934d('0x27')](function(_0x32be7b){return _0x32be7b;});}return null;};}function removeEntity(_0xb787a2){return function(_0x25d6eb){if(_0x25d6eb){return _0x25d6eb[_0x934d('0x28')]()[_0x934d('0x27')](function(){var _0x1b8668=_0x25d6eb[_0x934d('0x29')]({'plain':!![]});var _0x33566a=_0x934d('0x2a');return db[_0x934d('0x2b')]['destroy']({'where':{'type':_0x33566a,'resourceId':_0x1b8668['id']}})[_0x934d('0x27')](function(){return _0x25d6eb;});})[_0x934d('0x27')](function(){_0xb787a2[_0x934d('0x1e')](0xcc)[_0x934d('0x1f')]();});}};}function handleEntityNotFound(_0x1ef5e8){return function(_0x128433){if(!_0x128433){_0x1ef5e8['sendStatus'](0x194);}return _0x128433;};}function handleError(_0x2c350e,_0x354237){_0x354237=_0x354237||0x1f4;return function(_0x549bce){logger[_0x934d('0x19')](_0x549bce[_0x934d('0x2c')]);if(_0x549bce['name']){delete _0x549bce[_0x934d('0x2d')];}_0x2c350e[_0x934d('0x1e')](_0x354237)[_0x934d('0x2e')](_0x549bce);};}exports[_0x934d('0x2f')]=function(_0x1d777f,_0x2dbc9e){var _0xe9abc4={'include':[{'model':db[_0x934d('0x30')],'as':_0x934d('0x31')}]},_0x1f62e8={},_0x26b7af={'count':0x0,'rows':[]};var _0x208bd6=_['map'](db[_0x934d('0x32')][_0x934d('0x33')],function(_0x49f34d){return{'name':_0x49f34d[_0x934d('0x34')],'type':_0x49f34d[_0x934d('0x35')]['key']};});_0x1f62e8['model']=_[_0x934d('0x36')](_0x208bd6,_0x934d('0x2d'));_0x1f62e8['query']=_[_0x934d('0x37')](_0x1d777f[_0x934d('0x38')]);_0x1f62e8[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x1f62e8[_0x934d('0x3b')],_0x1f62e8[_0x934d('0x38')]);_0xe9abc4[_0x934d('0x3c')]=_[_0x934d('0x3a')](_0x1f62e8['model'],qs['fields'](_0x1d777f['query'][_0x934d('0x3d')]));_0xe9abc4[_0x934d('0x3c')]=_0xe9abc4['attributes']['length']?_0xe9abc4[_0x934d('0x3c')]:_0x1f62e8['model'];if(!_0x1d777f[_0x934d('0x38')][_0x934d('0x3e')](_0x934d('0x3f'))){_0xe9abc4[_0x934d('0x22')]=qs[_0x934d('0x22')](_0x1d777f[_0x934d('0x38')]['limit']);_0xe9abc4[_0x934d('0x20')]=qs['offset'](_0x1d777f[_0x934d('0x38')]['offset']);}_0xe9abc4['order']=qs['sort'](_0x1d777f[_0x934d('0x38')][_0x934d('0x40')]);_0xe9abc4[_0x934d('0x41')]=qs['filters'](_['pick'](_0x1d777f[_0x934d('0x38')],_0x1f62e8[_0x934d('0x39')]),_0x208bd6);if(_0x1d777f[_0x934d('0x38')][_0x934d('0x42')]){_0xe9abc4[_0x934d('0x41')]=_[_0x934d('0x43')](_0xe9abc4[_0x934d('0x41')],{'$or':_[_0x934d('0x36')](_0x208bd6,function(_0x15840f){if(_0x15840f[_0x934d('0x35')]!==_0x934d('0x44')){var _0x4c5931={};_0x4c5931[_0x15840f[_0x934d('0x2d')]]={'$like':'%'+_0x1d777f[_0x934d('0x38')][_0x934d('0x42')]+'%'};return _0x4c5931;}})});}_0xe9abc4=_['merge']({},_0xe9abc4,_0x1d777f[_0x934d('0x45')]);var _0x2009d6={'where':_0xe9abc4['where']};return db[_0x934d('0x32')][_0x934d('0x23')](_0x2009d6)[_0x934d('0x27')](function(_0x52d66a){_0x26b7af['count']=_0x52d66a;if(_0x1d777f[_0x934d('0x38')][_0x934d('0x46')]){_0xe9abc4['include']=[{'all':!![]}];}return db['ChatWebsite'][_0x934d('0x47')](_0xe9abc4);})[_0x934d('0x27')](function(_0x3f916e){_0x26b7af[_0x934d('0x48')]=_0x3f916e;return _0x26b7af;})[_0x934d('0x27')](respondWithFilteredResult(_0x2dbc9e,_0xe9abc4))['catch'](handleError(_0x2dbc9e,null));};exports[_0x934d('0x49')]=function(_0x5063d6,_0x1f2ade){var _0xecb851={'raw':![],'where':{'id':_0x5063d6[_0x934d('0x4a')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x38b110={};_0x38b110['model']=_[_0x934d('0x37')](db['ChatWebsite'][_0x934d('0x33')]);_0x38b110['query']=_[_0x934d('0x37')](_0x5063d6['query']);_0x38b110[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x38b110[_0x934d('0x3b')],_0x38b110['query']);_0xecb851['attributes']=_['intersection'](_0x38b110[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x5063d6['query'][_0x934d('0x3d')]));_0xecb851[_0x934d('0x3c')]=_0xecb851['attributes'][_0x934d('0x4b')]?_0xecb851[_0x934d('0x3c')]:_0x38b110['model'];if(_0x5063d6[_0x934d('0x38')][_0x934d('0x46')]){_0xecb851[_0x934d('0x4c')]=[{'all':!![]}];}_0xecb851=_[_0x934d('0x43')]({},_0xecb851,_0x5063d6['options']);return db['ChatWebsite'][_0x934d('0x4d')](_0xecb851)['then'](handleEntityNotFound(_0x1f2ade,null))[_0x934d('0x27')](respondWithResult(_0x1f2ade,null))['catch'](handleError(_0x1f2ade,null));};exports[_0x934d('0x4e')]=function(_0x4605b8,_0x3ab93d){return db[_0x934d('0x32')][_0x934d('0x4e')](_0x4605b8[_0x934d('0x4f')],{})[_0x934d('0x27')](function(_0x2e41bf){var _0x8682d1=_0x4605b8['user'][_0x934d('0x29')]({'plain':!![]});if(!_0x8682d1)throw new Error(_0x934d('0x50'));if(_0x8682d1[_0x934d('0x51')]===_0x934d('0x52')){var _0x2b02b7=_0x2e41bf['get']({'plain':!![]});var _0x292e5a='ChatWebsites';return db[_0x934d('0x53')][_0x934d('0x4d')]({'where':{'name':_0x292e5a,'userProfileId':_0x8682d1[_0x934d('0x54')]},'raw':!![]})['then'](function(_0x2aaa13){if(_0x2aaa13&&_0x2aaa13[_0x934d('0x55')]===0x0){return db[_0x934d('0x2b')][_0x934d('0x4e')]({'name':_0x2b02b7[_0x934d('0x2d')],'resourceId':_0x2b02b7['id'],'type':_0x2aaa13[_0x934d('0x2d')],'sectionId':_0x2aaa13['id']},{})[_0x934d('0x27')](function(){return _0x2e41bf;});}else{return _0x2e41bf;}})[_0x934d('0x1c')](function(_0x1f4eef){logger['error'](_0x934d('0x56'),_0x1f4eef);throw _0x1f4eef;});}return _0x2e41bf;})['then'](respondWithResult(_0x3ab93d,0xc9))[_0x934d('0x1c')](handleError(_0x3ab93d,null));};exports['update']=function(_0x3497b9,_0x4d9776){if(_0x3497b9[_0x934d('0x4f')]['id']){delete _0x3497b9[_0x934d('0x4f')]['id'];}return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x3497b9[_0x934d('0x4a')]['id']},'include':[{'model':db[_0x934d('0x30')],'as':_0x934d('0x31')}]})[_0x934d('0x27')](handleEntityNotFound(_0x4d9776,null))[_0x934d('0x27')](saveUpdates(_0x3497b9[_0x934d('0x4f')],null))[_0x934d('0x27')](respondWithResult(_0x4d9776,null))['catch'](handleError(_0x4d9776,null));};exports[_0x934d('0x28')]=function(_0x5b0b3f,_0x8e24f5){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x5b0b3f[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x8e24f5,null))[_0x934d('0x27')](removeEntity(_0x8e24f5,null))[_0x934d('0x1c')](handleError(_0x8e24f5,null));};exports['describe']=function(_0x2602ca,_0x96782a){return db['ChatWebsite']['describe']()[_0x934d('0x27')](respondWithResult(_0x96782a,null))[_0x934d('0x1c')](handleError(_0x96782a,null));};exports['addDisposition']=function(_0x39bc28,_0x5590cf){if(_0x39bc28[_0x934d('0x4f')]['id']){delete _0x39bc28[_0x934d('0x4f')]['id'];}return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x39bc28[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x5590cf,null))['then'](function(_0x256a4f){if(_0x256a4f){_0x39bc28[_0x934d('0x4f')]['ChatWebsiteId']=_0x256a4f['id'];return db['Disposition']['create'](_0x39bc28[_0x934d('0x4f')]);}})[_0x934d('0x27')](respondWithResult(_0x5590cf,null))[_0x934d('0x1c')](handleError(_0x5590cf,null));};exports['getDispositions']=function(_0xaf90b8,_0x5a2123){var _0x4403d4={'raw':![],'where':{}};var _0x3ea662={};var _0x3d62a8={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0xaf90b8[_0x934d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5a2123,null))['then'](function(_0x5a5606){if(_0x5a5606){_0x3ea662['model']=_['keys'](db['Disposition'][_0x934d('0x33')]);_0x3ea662['query']=_[_0x934d('0x37')](_0xaf90b8['query']);_0x3ea662[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x3ea662[_0x934d('0x3b')],_0x3ea662[_0x934d('0x38')]);_0x4403d4[_0x934d('0x3c')]=_[_0x934d('0x3a')](_0x3ea662[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0xaf90b8['query'][_0x934d('0x3d')]));_0x4403d4[_0x934d('0x3c')]=_0x4403d4[_0x934d('0x3c')][_0x934d('0x4b')]?_0x4403d4[_0x934d('0x3c')]:_0x3ea662[_0x934d('0x3b')];if(!_0xaf90b8[_0x934d('0x38')][_0x934d('0x3e')]('nolimit')){_0x4403d4['limit']=qs[_0x934d('0x22')](_0xaf90b8['query'][_0x934d('0x22')]);_0x4403d4[_0x934d('0x20')]=qs[_0x934d('0x20')](_0xaf90b8['query'][_0x934d('0x20')]);}_0x4403d4['order']=qs[_0x934d('0x40')](_0xaf90b8[_0x934d('0x38')][_0x934d('0x40')]);_0x4403d4[_0x934d('0x41')]=qs['filters'](_[_0x934d('0x57')](_0xaf90b8[_0x934d('0x38')],_0x3ea662[_0x934d('0x39')]));_0x4403d4[_0x934d('0x41')]['ChatWebsiteId']=_0x5a5606['id'];if(_0xaf90b8['query']['filter']){_0x4403d4[_0x934d('0x41')]=_[_0x934d('0x43')](_0x4403d4[_0x934d('0x41')],{'$or':_[_0x934d('0x36')](_0x4403d4[_0x934d('0x3c')],function(_0x53e232){var _0x176c4a={};_0x176c4a[_0x53e232]={'$like':'%'+_0xaf90b8[_0x934d('0x38')][_0x934d('0x42')]+'%'};return _0x176c4a;})});}_0x4403d4=_[_0x934d('0x43')]({},_0x4403d4,_0xaf90b8[_0x934d('0x45')]);return db[_0x934d('0x58')][_0x934d('0x23')]({'where':_0x4403d4[_0x934d('0x41')]})['then'](function(_0x288570){_0x3d62a8['count']=_0x288570;if(_0xaf90b8[_0x934d('0x38')]['includeAll']){_0x4403d4[_0x934d('0x4c')]=[{'all':!![]}];}return db[_0x934d('0x58')]['findAll'](_0x4403d4);})[_0x934d('0x27')](function(_0x12bef8){_0x3d62a8['rows']=_0x12bef8;return _0x3d62a8;});}})[_0x934d('0x27')](respondWithFilteredResult(_0x5a2123,_0x4403d4))['catch'](handleError(_0x5a2123,null));};exports[_0x934d('0x59')]=function(_0x5e07a0,_0x52069a){return db[_0x934d('0x32')]['find']({'where':{'id':_0x5e07a0[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x52069a,null))['then'](function(_0x5a33cb){if(_0x5a33cb){return _0x5a33cb[_0x934d('0x59')](_0x5e07a0[_0x934d('0x38')][_0x934d('0x5a')]);}})[_0x934d('0x27')](respondWithStatusCode(_0x52069a,null))[_0x934d('0x1c')](handleError(_0x52069a,null));};exports[_0x934d('0x5b')]=function(_0x4b9534,_0x214e2e){if(_0x4b9534[_0x934d('0x4f')]['id']){delete _0x4b9534['body']['id'];}return db[_0x934d('0x32')]['find']({'where':{'id':_0x4b9534[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x214e2e,null))[_0x934d('0x27')](function(_0x378913){if(_0x378913){_0x4b9534[_0x934d('0x4f')]['ChatWebsiteId']=_0x378913['id'];return db[_0x934d('0x5c')]['create'](_0x4b9534[_0x934d('0x4f')]);}})[_0x934d('0x27')](respondWithResult(_0x214e2e,null))[_0x934d('0x1c')](handleError(_0x214e2e,null));};exports['getAnswers']=function(_0x32952d,_0x912e77){var _0x2eadd3={'raw':![],'where':{}};var _0x397afa={};var _0x1f4e75={'count':0x0,'rows':[]};return db[_0x934d('0x32')][_0x934d('0x5d')]({'where':{'id':_0x32952d[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x912e77,null))['then'](function(_0x18c44d){if(_0x18c44d){_0x397afa['model']=_[_0x934d('0x37')](db[_0x934d('0x5c')]['rawAttributes']);_0x397afa[_0x934d('0x38')]=_['keys'](_0x32952d['query']);_0x397afa[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x397afa[_0x934d('0x3b')],_0x397afa[_0x934d('0x38')]);_0x2eadd3[_0x934d('0x3c')]=_['intersection'](_0x397afa[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x32952d[_0x934d('0x38')][_0x934d('0x3d')]));_0x2eadd3[_0x934d('0x3c')]=_0x2eadd3[_0x934d('0x3c')][_0x934d('0x4b')]?_0x2eadd3[_0x934d('0x3c')]:_0x397afa['model'];if(!_0x32952d[_0x934d('0x38')]['hasOwnProperty'](_0x934d('0x3f'))){_0x2eadd3[_0x934d('0x22')]=qs[_0x934d('0x22')](_0x32952d['query'][_0x934d('0x22')]);_0x2eadd3['offset']=qs[_0x934d('0x20')](_0x32952d[_0x934d('0x38')]['offset']);}_0x2eadd3['order']=qs[_0x934d('0x40')](_0x32952d[_0x934d('0x38')]['sort']);_0x2eadd3[_0x934d('0x41')]=qs[_0x934d('0x39')](_[_0x934d('0x57')](_0x32952d[_0x934d('0x38')],_0x397afa[_0x934d('0x39')]));_0x2eadd3[_0x934d('0x41')][_0x934d('0x5e')]=_0x18c44d['id'];if(_0x32952d[_0x934d('0x38')][_0x934d('0x42')]){_0x2eadd3[_0x934d('0x41')]=_[_0x934d('0x43')](_0x2eadd3[_0x934d('0x41')],{'$or':_[_0x934d('0x36')](_0x2eadd3[_0x934d('0x3c')],function(_0x18e187){var _0xf8a290={};_0xf8a290[_0x18e187]={'$like':'%'+_0x32952d[_0x934d('0x38')][_0x934d('0x42')]+'%'};return _0xf8a290;})});}_0x2eadd3=_[_0x934d('0x43')]({},_0x2eadd3,_0x32952d['options']);return db['CannedAnswer'][_0x934d('0x23')]({'where':_0x2eadd3[_0x934d('0x41')]})[_0x934d('0x27')](function(_0x54ecd9){_0x1f4e75[_0x934d('0x23')]=_0x54ecd9;if(_0x32952d[_0x934d('0x38')][_0x934d('0x46')]){_0x2eadd3[_0x934d('0x4c')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x2eadd3);})['then'](function(_0x37cba2){_0x1f4e75[_0x934d('0x48')]=_0x37cba2;return _0x1f4e75;});}})[_0x934d('0x27')](respondWithFilteredResult(_0x912e77,_0x2eadd3))[_0x934d('0x1c')](handleError(_0x912e77,null));};exports[_0x934d('0x5f')]=function(_0x1909ae,_0x53c736){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x1909ae['params']['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x53c736,null))[_0x934d('0x27')](function(_0x3a8469){if(_0x3a8469){return _0x3a8469['removeAnswers'](_0x1909ae['query'][_0x934d('0x5a')]);}})['then'](respondWithStatusCode(_0x53c736,null))[_0x934d('0x1c')](handleError(_0x53c736,null));};exports['addLogo']=function(_0x2fcbbc,_0x2ff209){_0x2fcbbc['body'][_0x934d('0x60')]=_0x2fcbbc[_0x934d('0x61')][_0x934d('0x62')];return db['ChatWebsite'][_0x934d('0x4d')]({'where':{'id':_0x2fcbbc['params']['id']}})['then'](handleEntityNotFound(_0x2ff209,null))[_0x934d('0x27')](saveUpdates(_0x2fcbbc[_0x934d('0x4f')],null))[_0x934d('0x27')](respondWithResult(_0x2ff209,null))[_0x934d('0x1c')](handleError(_0x2ff209,null));};exports[_0x934d('0x63')]=function(_0x3e2310,_0x49d442){_0x3e2310[_0x934d('0x4f')][_0x934d('0x64')]=_0x3e2310[_0x934d('0x61')][_0x934d('0x62')];return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x3e2310['params']['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x49d442,null))[_0x934d('0x27')](saveUpdates(_0x3e2310[_0x934d('0x4f')],null))[_0x934d('0x27')](respondWithResult(_0x49d442,null))[_0x934d('0x1c')](handleError(_0x49d442,null));};exports[_0x934d('0x65')]=function(_0x2113d6,_0x5b6824){_0x2113d6['body'][_0x934d('0x66')]=_0x2113d6[_0x934d('0x61')]['filename'];return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x2113d6[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x5b6824,null))[_0x934d('0x27')](saveUpdates(_0x2113d6['body'],null))['then'](respondWithResult(_0x5b6824,null))['catch'](handleError(_0x5b6824,null));};exports[_0x934d('0x67')]=function(_0x140b27,_0xcdc3a5){_0x140b27[_0x934d('0x4f')][_0x934d('0x68')]=_0x140b27[_0x934d('0x61')]['filename'];return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x140b27[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0xcdc3a5,null))[_0x934d('0x27')](saveUpdates(_0x140b27[_0x934d('0x4f')],null))[_0x934d('0x27')](respondWithResult(_0xcdc3a5,null))[_0x934d('0x1c')](handleError(_0xcdc3a5,null));};exports['getLogo']=function(_0x261d49,_0x27cd15){var _0x387c37=path['join'](config[_0x934d('0x69')],_0x934d('0x6a'));var _0x2a8ed5={'where':{'id':_0x261d49[_0x934d('0x4a')]['id']},'attributes':['id',_0x934d('0x60')],'raw':!![]};var _0x5b06fc=![];return require('../../config/license/util')['getLicense']()[_0x934d('0x27')](function(_0x29a892){if(_0x29a892){_0x5b06fc=_0x29a892['custom'];}})['then'](function(){return db[_0x934d('0x32')][_0x934d('0x4d')](_0x2a8ed5);})[_0x934d('0x27')](handleEntityNotFound(_0x27cd15,null))['then'](function(_0x2d2f1b){if(_0x2d2f1b){if(!_[_0x934d('0x6b')](_0x2d2f1b[_0x934d('0x60')])){if(fs['existsSync'](path['join'](config[_0x934d('0x69')],'server/files/images/logos/',_0x2d2f1b[_0x934d('0x60')]))&&_0x5b06fc){_0x387c37=path['join'](config[_0x934d('0x69')],_0x934d('0x6c'),_0x2d2f1b['sitepic']);}}return _0x27cd15['download'](_0x387c37);}})[_0x934d('0x1c')](handleError(_0x27cd15,null));};exports[_0x934d('0x6d')]=function(_0x28a14b,_0x470fec){var _0xbc9f09=path['join'](config[_0x934d('0x69')],_0x934d('0x6e'));var _0x1f037c={'where':{'id':_0x28a14b[_0x934d('0x4a')]['id']},'attributes':['id',_0x934d('0x64')],'raw':!![]};return db[_0x934d('0x32')][_0x934d('0x4d')](_0x1f037c)[_0x934d('0x27')](handleEntityNotFound(_0x470fec,null))['then'](function(_0x116df5){if(_0x116df5){if(!_['isNil'](_0x116df5['agentAvatar'])){if(fs[_0x934d('0x6f')](path[_0x934d('0x70')](config[_0x934d('0x69')],_0x934d('0x71'),_0x116df5[_0x934d('0x64')]))){_0xbc9f09=path[_0x934d('0x70')](config[_0x934d('0x69')],_0x934d('0x71'),_0x116df5[_0x934d('0x64')]);}}return _0x470fec[_0x934d('0x72')](_0xbc9f09);}})['catch'](handleError(_0x470fec,null));};exports[_0x934d('0x73')]=function(_0x4f0ad8,_0xd2d845){var _0x42ade1=path['join'](config[_0x934d('0x69')],_0x934d('0x74'));var _0x325a3e={'where':{'id':_0x4f0ad8[_0x934d('0x4a')]['id']},'attributes':['id',_0x934d('0x66'),_0x934d('0x75')],'raw':!![]};return db['ChatWebsite'][_0x934d('0x4d')](_0x325a3e)[_0x934d('0x27')](handleEntityNotFound(_0xd2d845,null))[_0x934d('0x27')](function(_0x53e0a0){if(_0x53e0a0){if(!_[_0x934d('0x6b')](_0x53e0a0[_0x934d('0x66')])){if(fs[_0x934d('0x6f')](path[_0x934d('0x70')](config[_0x934d('0x69')],_0x934d('0x71'),_0x53e0a0['customerAvatar']))&&_0x53e0a0[_0x934d('0x75')]){_0x42ade1=path[_0x934d('0x70')](config[_0x934d('0x69')],_0x934d('0x71'),_0x53e0a0[_0x934d('0x66')]);}}return _0xd2d845[_0x934d('0x72')](_0x42ade1);}})['catch'](handleError(_0xd2d845,null));};exports[_0x934d('0x76')]=function(_0x2a9d32,_0x19b0c5){var _0x1f8a38=path[_0x934d('0x70')](config[_0x934d('0x69')],_0x934d('0x77'));var _0x42d30d={'where':{'id':_0x2a9d32[_0x934d('0x4a')]['id']},'attributes':['id',_0x934d('0x68')],'raw':!![]};return db[_0x934d('0x32')][_0x934d('0x4d')](_0x42d30d)[_0x934d('0x27')](handleEntityNotFound(_0x19b0c5,null))[_0x934d('0x27')](function(_0x157445){if(_0x157445){if(!_['isNil'](_0x157445[_0x934d('0x68')])){if(fs[_0x934d('0x6f')](path[_0x934d('0x70')](config[_0x934d('0x69')],'server/files/images/avatars/',_0x157445['systemAvatar']))){_0x1f8a38=path[_0x934d('0x70')](config[_0x934d('0x69')],'server/files/images/avatars/',_0x157445[_0x934d('0x68')]);}}return _0x19b0c5['download'](_0x1f8a38);}})[_0x934d('0x1c')](handleError(_0x19b0c5,null));};exports['notify']=function(_0x527b97,_0x5b3ea3){var _0x210e14=require(_0x934d('0x78'));var _0x2bee7b=new _0x210e14();var _0x1346c2=_0x2bee7b[_0x934d('0x79')](_0x527b97['headers'][_0x934d('0x7a')])['getResult']();var _0x14c38b={'body':_0x527b97[_0x934d('0x4f')],'channel':_0x934d('0x7b')};var _0x53e087=[];var _0x4a90e4=[];var _0xaa56c8={};var _0x5ef7c7=![];return db['CmContact'][_0x934d('0x7c')]()[_0x934d('0x27')](function(_0x35de06){if(!_0x35de06){throw new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))](_0x934d('0x7f'));}_0x53e087=_['difference'](_[_0x934d('0x37')](_0x35de06),['createdAt',_0x934d('0x80')]);_0x4a90e4=_['difference'](_[_0x934d('0x37')](_0x35de06),[_0x934d('0x81'),_0x934d('0x80'),'CompanyId','ListId']);if(_0x527b97[_0x934d('0x4f')]['id']){delete _0x527b97[_0x934d('0x4f')]['id'];}if(_[_0x934d('0x6b')](_0x527b97[_0x934d('0x4f')][_0x934d('0x82')])){throw new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))](_0x934d('0x83'));}if(_['isNil'](_0x527b97[_0x934d('0x4f')]['body'])||_0x527b97['body'][_0x934d('0x4f')]===''){throw new db[(_0x934d('0x7d'))]['ValidationError'](_0x934d('0x84'));}if(_[_0x934d('0x6b')](_0x527b97[_0x934d('0x4f')][_0x934d('0x85')])){throw new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))](_0x934d('0x86')+_0x4a90e4);}if(!_[_0x934d('0x87')](_0x4a90e4,_0x527b97[_0x934d('0x4f')][_0x934d('0x85')])){throw new db['Sequelize'][(_0x934d('0x7e'))](_0x934d('0x88')+_0x4a90e4);}_0xaa56c8[_0x527b97[_0x934d('0x4f')][_0x934d('0x85')]]=_0x527b97[_0x934d('0x4f')][_0x934d('0x82')];})[_0x934d('0x27')](function(){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x527b97['params']['id']},'include':[{'model':db['CmList'],'as':_0x934d('0x89'),'include':[{'model':db['CmContact'],'as':_0x934d('0x8a'),'where':_0xaa56c8,'limit':0x1,'order':[[_0x934d('0x80'),_0x934d('0x8b')]]}]},{'model':db[_0x934d('0x8c')],'as':'Applications'}]});})[_0x934d('0x27')](handleEntityNotFound(_0x5b3ea3,null))[_0x934d('0x27')](function(_0x43e09e){if(_0x43e09e&&_0x43e09e[_0x934d('0x89')]){_0x14c38b[_0x934d('0x8d')]=_0x43e09e;_0x14c38b[_0x934d('0x8e')]=_0x43e09e[_0x934d('0x8f')];_0x14c38b[_0x934d('0x90')]=_0x43e09e['List'];_0x14c38b[_0x934d('0x8e')]=_[_0x934d('0x91')](_0x14c38b[_0x934d('0x8e')],[_0x934d('0x92')],[_0x934d('0x93')]);if(_0x14c38b[_0x934d('0x8d')][_0x934d('0x8f')]){delete _0x14c38b[_0x934d('0x8d')][_0x934d('0x8f')];}if(_0x14c38b[_0x934d('0x8d')][_0x934d('0x89')]&&_0x14c38b[_0x934d('0x8d')][_0x934d('0x89')][_0x934d('0x8a')][_0x934d('0x4b')]){return _0x14c38b[_0x934d('0x8d')][_0x934d('0x89')][_0x934d('0x8a')][0x0];}var _0x491ace=_[_0x934d('0xc')](_0x527b97['body'],{'firstName':_0x527b97[_0x934d('0x4f')][_0x934d('0x82')],'ListId':_0x43e09e[_0x934d('0x94')]});_0x491ace[_0x527b97[_0x934d('0x4f')][_0x934d('0x85')]]=_0x527b97[_0x934d('0x4f')]['from'];return db[_0x934d('0x95')][_0x934d('0x4e')](_0x491ace,{'fields':_0x53e087,'raw':!![]});}})[_0x934d('0x27')](handleEntityNotFound(_0x5b3ea3,null))[_0x934d('0x27')](function(_0x5d35bf){_0x14c38b[_0x934d('0x96')]=_0x5d35bf;var _0x1ee080=_0x527b97[_0x934d('0x4f')]['customerIp'];if(_0x527b97['headers']['cf-connecting-ip']){_0x1ee080=_0x527b97[_0x934d('0x97')][_0x934d('0x98')];}else if(_0x527b97[_0x934d('0x97')][_0x934d('0x99')]){_0x1ee080=_[_0x934d('0x9a')](_0x527b97[_0x934d('0x97')]['x-forwarded-for'][_0x934d('0x9b')](','));}if(_0x5d35bf){var _0x1beee0={'ContactId':_0x5d35bf['id'],'ChatWebsiteId':_0x527b97[_0x934d('0x4a')]['id'],'from':(_0x5d35bf['firstName']||'')+'\x20'+(_0x5d35bf[_0x934d('0x9c')]||''),'customerIp':_0x1ee080,'customerPort':_0x527b97[_0x934d('0x97')][_0x934d('0x9d')]?_0x527b97[_0x934d('0x97')]['x-real-port']:null,'referer':_0x527b97[_0x934d('0x4f')][_0x934d('0x9e')],'browserName':_0x1346c2['browser'][_0x934d('0x2d')]&&_0x1346c2[_0x934d('0x9f')][_0x934d('0xa0')]?util['format'](_0x934d('0xa1'),_0x1346c2[_0x934d('0x9f')][_0x934d('0x2d')],_0x1346c2[_0x934d('0x9f')][_0x934d('0xa0')]):_0x934d('0xa2'),'browserVersion':_0x1346c2[_0x934d('0x9f')][_0x934d('0xa0')]||'unknown','osName':util[_0x934d('0xa3')]('%s\x20%s',_0x1346c2['os']['name'],_0x1346c2['os'][_0x934d('0xa0')]),'osVersion':_0x1346c2['os'][_0x934d('0xa0')],'deviceModel':_0x1346c2[_0x934d('0xa4')][_0x934d('0x3b')]&&_0x1346c2['device'][_0x934d('0xa5')]?util['format'](_0x934d('0xa6'),_0x1346c2['device'][_0x934d('0x3b')],_0x1346c2[_0x934d('0xa4')][_0x934d('0xa5')],_0x1346c2[_0x934d('0xa4')][_0x934d('0x35')]):null,'deviceVendor':_0x1346c2[_0x934d('0xa4')][_0x934d('0xa5')],'deviceType':_0x1346c2['device']['type'],'formData':JSON[_0x934d('0x18')](_0x527b97[_0x934d('0x4f')])};var _0x12c60b={'ChatWebsiteId':_0x527b97[_0x934d('0x4a')]['id'],'closed':![]};if(_0x527b97['body'][_0x934d('0xa7')]){_0x12c60b[_0x934d('0xa7')]=_0x527b97[_0x934d('0x4f')][_0x934d('0xa7')];return db[_0x934d('0xa8')]['find']({'where':_0x12c60b})[_0x934d('0x27')](function(_0x269820){if(_0x269820){return[_0x269820,![]];}_0x1beee0[_0x934d('0xa7')]=_0x527b97['body'][_0x934d('0xa7')];_0x1beee0[_0x934d('0xa9')]=_0x527b97[_0x934d('0x4f')][_0x934d('0xa9')];return db['ChatInteraction']['create'](_0x1beee0)[_0x934d('0x27')](function(_0x11c038){return[_0x11c038,!![]];});});}_0x12c60b[_0x934d('0xaa')]=_0x5d35bf['id'];if(_0x527b97[_0x934d('0x4f')][_0x934d('0xab')]&&_0x527b97[_0x934d('0x4f')][_0x934d('0xab')]['id']){_0x12c60b['id']=_0x527b97[_0x934d('0x4f')][_0x934d('0xab')]['id'];return db['ChatInteraction'][_0x934d('0x4d')]({'where':_0x12c60b})[_0x934d('0x27')](function(_0x738431){if(_0x738431){return[_0x738431,![]];}return db['ChatInteraction'][_0x934d('0x4e')](_0x1beee0)[_0x934d('0x27')](function(_0x3544a4){return[_0x3544a4,!![]];});});}return db['ChatInteraction'][_0x934d('0x4e')](_0x1beee0)[_0x934d('0x27')](function(_0x5bef92){return[_0x5bef92,!![]];});}})[_0x934d('0xac')](function(_0x306249,_0x31f8e4){if(_0x306249){_0x5ef7c7=_0x31f8e4;if(!_0x31f8e4){var _0x5910db={'from':(_0x14c38b[_0x934d('0x96')][_0x934d('0xad')]||'')+'\x20'+(_0x14c38b[_0x934d('0x96')][_0x934d('0x9c')]||'')};if(_0x527b97['body'][_0x934d('0xa7')]&&_0x527b97['body'][_0x934d('0xae')]&&_0x527b97[_0x934d('0x4f')][_0x934d('0xa7')]!=_0x527b97['body'][_0x934d('0xae')]){_0x5910db['threadId']=_0x527b97[_0x934d('0x4f')][_0x934d('0xae')];}return _0x306249[_0x934d('0xaf')](_0x5910db);}else{return _0x306249;}}})[_0x934d('0x27')](function(_0x38439a){_0x14c38b[_0x934d('0xab')]=_0x38439a[_0x934d('0x29')]({'plain':!![]});_0x14c38b[_0x934d('0xab')]['created']=_0x5ef7c7;if(_0x14c38b['interaction'][_0x934d('0xb0')]){if(_0x14c38b[_0x934d('0x8d')]['autoclose']){_0x14c38b[_0x934d('0x8e')]['push']({'id':0x0,'priority':_0x14c38b[_0x934d('0x8e')][_0x934d('0x4b')]+0x1,'app':_0x934d('0xb1'),'appdata':_0x934d('0xb2'),'interval':_0x934d('0xb3')});}}return db[_0x934d('0xb4')][_0x934d('0x4e')]({'body':_0x527b97[_0x934d('0x4f')][_0x934d('0x4f')],'ChatWebsiteId':_0x527b97[_0x934d('0x4a')]['id'],'ChatInteractionId':_0x38439a['id'],'direction':'in','ContactId':_0x14c38b[_0x934d('0x96')]['id'],'AttachmentId':_0x527b97[_0x934d('0x4f')][_0x934d('0xb5')]});})['then'](function(_0x4cf50f){_0x14c38b[_0x934d('0x1b')]=_0x4cf50f;if(_0x14c38b[_0x934d('0xab')][_0x934d('0xb6')]){return db[_0x934d('0xb7')][_0x934d('0x4d')]({'attributes':['id',_0x934d('0x2d')],'where':{'id':_0x14c38b[_0x934d('0xab')][_0x934d('0xb6')]}})['then'](function(_0x507e98){if(_0x507e98){_0x14c38b[_0x934d('0x8e')][_0x934d('0xb8')]({'id':0x0,'priority':0x0,'app':_0x934d('0xb9'),'appdata':_0x507e98[_0x934d('0x2d')]+','+(_0x14c38b['account'][_0x934d('0xba')]||0xa),'interval':_0x934d('0xb3')});_0x14c38b[_0x934d('0xbb')]=!![];}return respondWithRpcPromise(_0x934d('0xbc'),_0x934d('0xbd'),_0x14c38b);});}return respondWithRpcPromise(_0x934d('0xbc'),_0x934d('0xbd'),_0x14c38b);})[_0x934d('0x27')](function(_0x5ddf66){respondWithRpcPromise('EventManager',_0x934d('0xbe'),{'event':_0x934d('0xbf'),'message':_0x5ddf66},client9002);return _0x5ddf66;})[_0x934d('0x27')](respondWithResult(_0x5b3ea3,null))[_0x934d('0x1c')](handleError(_0x5b3ea3,null));};exports['offline']=function(_0x560138,_0xaf1385){var _0x4c0f94,_0x4c6c95,_0x2feb24;var _0x2dae95=[];var _0x1a0ac6={};var _0x3372af=_0x560138['files']||[];var _0x212eac=[];var _0x4370b1;return db[_0x934d('0x95')][_0x934d('0x7c')]()[_0x934d('0x27')](function(_0x3cd0c3){if(!_0x3cd0c3){throw new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))]('no\x20available\x20attributes');}_0x2dae95=_[_0x934d('0xc0')](_[_0x934d('0x37')](_0x3cd0c3),['createdAt',_0x934d('0x80'),_0x934d('0xc1'),_0x934d('0x94')]);if(_0x560138[_0x934d('0x4f')]['id']){delete _0x560138[_0x934d('0x4f')]['id'];}if(_['isNil'](_0x560138[_0x934d('0x4f')][_0x934d('0x82')])){throw _0xaf1385[_0x934d('0x1e')](0x1f4)[_0x934d('0x2e')](new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))](_0x934d('0x83')));}if(_[_0x934d('0x6b')](_0x560138[_0x934d('0x4f')][_0x934d('0x4f')])||_0x560138[_0x934d('0x4f')][_0x934d('0x4f')]===''){throw _0xaf1385[_0x934d('0x1e')](0x1f4)['send'](new db['Sequelize'][(_0x934d('0x7e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x934d('0x6b')](_0x560138['body'][_0x934d('0xc2')])){throw _0xaf1385['status'](0x1f4)['send'](new db[(_0x934d('0x7d'))][(_0x934d('0x7e'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2dae95));}if(!_[_0x934d('0x87')](_0x2dae95,_0x560138[_0x934d('0x4f')]['mapKeyOffline'])){throw _0xaf1385[_0x934d('0x1e')](0x1f4)['send'](new db[(_0x934d('0x7d'))]['ValidationError'](_0x934d('0xc3')+_0x2dae95));}_0x1a0ac6[_0x560138[_0x934d('0x4f')]['mapKeyOffline']]=_0x560138[_0x934d('0x4f')][_0x934d('0x82')];})[_0x934d('0x27')](function(){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x560138['params']['id']},'include':[{'model':db[_0x934d('0xc4')],'as':_0x934d('0x89')},{'model':db['MailAccount'],'as':'MailAccount'}]});})[_0x934d('0x27')](handleEntityNotFound(_0xaf1385,null))[_0x934d('0x27')](function(_0x59778a){if(_0x59778a&&_0x59778a['List']){_0x4c6c95=_0x59778a;var _0x4235f6=_[_0x934d('0xc')](_0x560138[_0x934d('0x4f')],{'firstName':_0x560138['body'][_0x934d('0x82')],'phone':_0x560138['body'][_0x934d('0x82')],'ListId':_0x59778a[_0x934d('0x94')]});_0x4235f6[_0x560138[_0x934d('0x4f')][_0x934d('0xc2')]]=_0x560138['body']['from'];return db['CmContact']['findOrCreate']({'where':_0x1a0ac6,'defaults':_0x4235f6});}})[_0x934d('0xac')](function(_0x1a4045){if(_0x1a4045){_0x2feb24=_0x1a4045;var _0x3b0e7f=fs[_0x934d('0xc5')](path[_0x934d('0x70')](config[_0x934d('0x69')],'server/files/templates/chatOfflineMessage.ejs'),_0x934d('0xc6'));var _0x28ecc6=ejs[_0x934d('0xc7')](_0x3b0e7f,{'body':_[_0x934d('0xc8')](_0x560138[_0x934d('0x4f')][_0x934d('0x4f')]),'bodyTitle':_0x4c6c95[_0x934d('0xc9')]});return db[_0x934d('0xca')][_0x934d('0x4e')]({'body':_0x28ecc6,'plainBody':htmlToText[_0x934d('0xcb')](_0x28ecc6),'ContactId':_0x1a4045['id'],'ChatWebsiteId':_0x4c6c95['id']});}})[_0x934d('0x27')](function(_0x74e200){_0x4370b1=_0x74e200;if(_0x3372af['length']){var _0x543e63=_0x3372af[_0x934d('0x36')](function(_0x342c04){return{'name':_0x342c04[_0x934d('0xcc')],'basename':_0x342c04[_0x934d('0x62')],'type':_0x342c04[_0x934d('0xcd')],'ChatOfflineMessageId':_0x74e200['id']};});_0x212eac=_0x543e63[_0x934d('0x36')](_0x42cf92=>{var _0x433ac4={'filename':_0x42cf92[_0x934d('0x2d')],'path':path[_0x934d('0x70')](config['root'],'server',_0x934d('0xce'),_0x934d('0xcf'),_0x934d('0xd0'),_0x42cf92['basename'])};return _0x433ac4;});if(!_0x4c6c95[_0x934d('0xd1')]){return db['sequelize']['transaction'](function(_0x12c32a){return db['Attachment'][_0x934d('0xd2')](_0x543e63,{'transaction':_0x12c32a});});}}})[_0x934d('0x27')](function(){if(_0x4370b1){_0x4c0f94=_0x4370b1;return db[_0x934d('0xd3')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x934d('0xd4'),'raw':!![],'include':[{'model':db[_0x934d('0xd5')],'as':_0x934d('0xd5'),'raw':!![]}]}]});}})[_0x934d('0x27')](function(_0x30e955){if(_0x30e955&&_0x30e955[_0x934d('0xd4')]&&_0x4c6c95[_0x934d('0xd6')]&&_0x4c6c95[_0x934d('0xd7')]){var _0x593ed2=_0x30e955[_0x934d('0xd8')]();return respondWithRpcPromise(_0x934d('0xd9'),_0x934d('0xda'),{'account':_0x593ed2,'message':{'from':util[_0x934d('0xa3')](_0x934d('0xdb'),_0x30e955[_0x934d('0x2d')],_0x30e955[_0x934d('0xdc')]||_0x30e955[_0x934d('0xd4')][_0x934d('0x52')]),'to':_0x4c6c95[_0x934d('0xd7')],'subject':_0x4c6c95[_0x934d('0xdd')],'html':_0x4c0f94['body'],'attachments':_0x212eac}},client9003)['then'](function(){return _0x4c0f94;})[_0x934d('0x1c')](function(_0x5536c1){logger[_0x934d('0x19')](_0x5536c1);});}})[_0x934d('0x27')](function(){if(_0x4c6c95&&_0x4c6c95[_0x934d('0xd1')]&&_0x4c6c95[_0x934d('0xde')]){var _0x212c91=[];if(_0x3372af[_0x934d('0x4b')]){_0x212c91=_0x3372af[_0x934d('0x36')](function(_0x2a438c){return{'name':_0x2a438c['originalname'],'basename':_0x2a438c[_0x934d('0x62')],'type':_0x2a438c['mimetype'],'ChatOfflineMessageId':_0x4370b1['id']};});}var _0xe0b79d;if(!_[_0x934d('0x6b')](_0x4c6c95[_0x934d('0xdf')])){var _0x4317f0=_[_0x934d('0x36')](_0x560138['body'],function(_0x145feb){return _0x145feb;});var _0x3cc47f=_[_0x934d('0xe0')](_0x4317f0)[0x0];var _0x265d5e=_[_0x934d('0xe1')](_0x3cc47f,function(_0x3c26d5){return _0x3c26d5;});_0xe0b79d=_0x265d5e[0x1][_0x4c6c95[_0x934d('0xdf')]];}var _0x284476={'from':_0x2feb24[_0x934d('0xdc')],'firstName':_0x2feb24[_0x934d('0xad')],'lastName':_0x2feb24[_0x934d('0x9c')],'mapKey':_0x934d('0xdc'),'message':{'from':_0x2feb24[_0x934d('0xdc')],'to':_0x4c6c95[_0x934d('0xd3')]['email'],'cc':'','subject':_[_0x934d('0x6b')](_0xe0b79d)?_0x4c6c95[_0x934d('0xdd')]:_0xe0b79d,'messageId':'','sentAt':new Date(),'attach':_0x212c91[_0x934d('0x4b')],'attachments':_0x212c91,'originChannel':_0x934d('0xe2'),'ChatWebsiteId':_0x4c6c95['id'],'ChatOfflineMessageId':_0x4c0f94['id'],'originTo':_0x4c6c95[_0x934d('0xd3')][_0x934d('0xdc')]},'body':_0x4c0f94[_0x934d('0x4f')]};var _0x1637d9={'account':{'id':_0x4c6c95[_0x934d('0xde')]},'body':_0x284476,'log':_0x934d('0xe3')};return respondWithRpcPromise(_0x934d('0xe3'),_0x934d('0xe4'),_0x1637d9,client9001)['then'](function(){return _0x4c0f94;})[_0x934d('0x1c')](function(_0x9186d5){logger['error'](_0x9186d5);});}return;})['then'](function(){if(_0x4c0f94){return _0x4c0f94;}})[_0x934d('0x27')](respondWithResult(_0xaf1385,null))[_0x934d('0x1c')](function(_0x170fc8){logger['error']('catch',_0x170fc8);for(var _0x36afa6 of _0x3372af){var _0x4cc1b1=path[_0x934d('0x70')](config[_0x934d('0x69')],'server',_0x934d('0xce'),_0x934d('0xcf'),_0x934d('0xd0'),_0x36afa6['filename']);fs_extra[_0x934d('0xe5')](_0x4cc1b1)['catch'](function(_0x2edc6c){logger['error']('Could\x20not\x20remove\x20attachment\x20file',_0x4cc1b1,_0x2edc6c);});}});};exports[_0x934d('0xe6')]=function(_0x19cbaa,_0x216536){return db['ChatInteraction'][_0x934d('0x4d')]({'where':{'id':_0x19cbaa[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x216536,null))[_0x934d('0x27')](function(_0xb67713){if(_0xb67713){return _0xb67713['addInteraction'](_0x19cbaa['body']['ids'],_[_0x934d('0xe7')](_0x19cbaa[_0x934d('0x4f')],[_0x934d('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x216536,null))['catch'](handleError(_0x216536,null));};exports[_0x934d('0xe8')]=function(_0x23d2f8,_0x18f0bd){var _0xbfe47d={'raw':![],'where':{}};var _0x39f62e={};var _0x5afed9={'count':0x0,'rows':[]};return db[_0x934d('0x32')][_0x934d('0x5d')]({'where':{'id':_0x23d2f8[_0x934d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x18f0bd,null))[_0x934d('0x27')](function(_0x40e4a0){if(_0x40e4a0){_0x39f62e['model']=_[_0x934d('0x37')](db[_0x934d('0xa8')]['rawAttributes']);_0x39f62e['query']=_[_0x934d('0x37')](_0x23d2f8[_0x934d('0x38')]);_0x39f62e[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x39f62e[_0x934d('0x3b')],_0x39f62e[_0x934d('0x38')]);_0xbfe47d[_0x934d('0x3c')]=_[_0x934d('0x3a')](_0x39f62e[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x23d2f8[_0x934d('0x38')]['fields']));_0xbfe47d['attributes']=_0xbfe47d[_0x934d('0x3c')]['length']?_0xbfe47d['attributes']:_0x39f62e[_0x934d('0x3b')];if(!_0x23d2f8[_0x934d('0x38')]['hasOwnProperty'](_0x934d('0x3f'))){_0xbfe47d['limit']=qs[_0x934d('0x22')](_0x23d2f8[_0x934d('0x38')][_0x934d('0x22')]);_0xbfe47d[_0x934d('0x20')]=qs['offset'](_0x23d2f8[_0x934d('0x38')][_0x934d('0x20')]);}_0xbfe47d[_0x934d('0xe9')]=qs[_0x934d('0x40')](_0x23d2f8[_0x934d('0x38')]['sort']);_0xbfe47d['where']=qs[_0x934d('0x39')](_[_0x934d('0x57')](_0x23d2f8[_0x934d('0x38')],_0x39f62e[_0x934d('0x39')]));_0xbfe47d[_0x934d('0x41')][_0x934d('0x5e')]=_0x40e4a0['id'];if(_0x23d2f8['query'][_0x934d('0x42')]){_0xbfe47d['where']=_[_0x934d('0x43')](_0xbfe47d['where'],{'$or':_[_0x934d('0x36')](_0xbfe47d[_0x934d('0x3c')],function(_0x6a89b){var _0xb35612={};_0xb35612[_0x6a89b]={'$like':'%'+_0x23d2f8[_0x934d('0x38')]['filter']+'%'};return _0xb35612;})});}_0xbfe47d=_['merge']({},_0xbfe47d,_0x23d2f8[_0x934d('0x45')]);return db['ChatInteraction'][_0x934d('0x23')]({'where':_0xbfe47d['where']})['then'](function(_0x206cd2){_0x5afed9[_0x934d('0x23')]=_0x206cd2;if(_0x23d2f8['query'][_0x934d('0x46')]){_0xbfe47d[_0x934d('0x4c')]=[{'model':db[_0x934d('0x95')],'as':_0x934d('0xea'),'required':![]},{'model':db[_0x934d('0xb7')],'as':_0x934d('0xeb'),'attributes':[_0x934d('0x2d'),_0x934d('0xec'),_0x934d('0xed')],'required':![]},{'model':db[_0x934d('0xee')],'as':'Tags','attributes':['id',_0x934d('0x2d'),_0x934d('0xef')],'where':_0x23d2f8[_0x934d('0x38')][_0x934d('0xf0')]?{'id':_0x23d2f8[_0x934d('0x38')][_0x934d('0xf0')]}:undefined,'required':_0x23d2f8[_0x934d('0x38')][_0x934d('0xf0')]?!![]:![]}];}return db[_0x934d('0xa8')]['findAll'](_0xbfe47d);})[_0x934d('0x27')](function(_0x57e87b){_0x5afed9[_0x934d('0x48')]=_0x57e87b;return _0x5afed9;});}})['then'](respondWithFilteredResult(_0x18f0bd,_0xbfe47d))[_0x934d('0x1c')](handleError(_0x18f0bd,null));};function iftimePromise(_0x411b8a,_0x361779){return respondWithRpcPromise(_0x934d('0xf1'),_0x934d('0xf2'),{'command':_0x361779[_0x934d('0xf3')]?util['format'](_0x934d('0xf4'),_0x411b8a[_0x934d('0xf5')],_0x361779[_0x934d('0xf3')]):util[_0x934d('0xa3')](_0x934d('0xf6'),_0x411b8a[_0x934d('0xf5')])},client9002)[_0x934d('0x27')](function(_0x4b3363){var _0x23c3c1=_0x4b3363&&_0x4b3363[_0x934d('0xf7')](_0x934d('0xf8'))>=0x0?!![]:![];logger[_0x934d('0x13')](_0x934d('0xf9'),_0x361779['id'],_0x411b8a['id'],_0x411b8a['interval'],_0x23c3c1?_0x934d('0xfa'):_0x934d('0xfb'),_0x361779[_0x934d('0xf3')]?_0x361779[_0x934d('0xf3')]:'No\x20timezone');return _0x23c3c1;})['catch'](function(_0x5d6c7d){logger[_0x934d('0x19')](_0x934d('0xf9'),_0x361779['id'],_0x411b8a['id'],_0x411b8a[_0x934d('0xf5')],util[_0x934d('0xfc')](_0x5d6c7d,{'showHidden':![],'depth':null}),_0x361779[_0x934d('0xf3')]?_0x361779[_0x934d('0xf3')]:_0x934d('0xfd'));return![];});}exports[_0x934d('0xf2')]=function(_0x1ff226,_0x428986){var _0x3f9248=0x0;var _0x101cfe=0x0;var _0x1d2d34=![];var _0x22339a;var _0x27e063;return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x1ff226[_0x934d('0x4a')]['id']},'include':[{'model':db[_0x934d('0xfe')],'as':_0x934d('0xfe'),'include':[{'model':db[_0x934d('0xfe')],'as':_0x934d('0xff'),'attributes':['id','interval'],'raw':!![]}]}]})[_0x934d('0x27')](handleEntityNotFound(_0x428986,null))[_0x934d('0x27')](function(_0x158dd8){if(_0x158dd8){_0x22339a=_0x158dd8;return _0x158dd8[_0x934d('0x100')]({'raw':!![]});}})[_0x934d('0x27')](function(_0x4f1c88){if(_0x22339a){if(_0x4f1c88){_0x27e063=_0x4f1c88;}}return require(_0x934d('0x101'))['getLicense']();})[_0x934d('0x27')](function(_0x18c12f){if(_0x18c12f){_0x101cfe=_0x18c12f['virtual'];_0x1d2d34=_0x18c12f[_0x934d('0x102')];}})['then'](function(){return db[_0x934d('0xa8')]['count']({'where':{'closed':![]}});})[_0x934d('0x27')](function(_0xd5c539){_0x3f9248=_0xd5c539;if(_0x101cfe&&_0xd5c539>_0x101cfe){return db[_0x934d('0x103')][_0x934d('0x5d')]({'where':{'id':0x1}})[_0x934d('0x27')](function(_0x2c728a){if(_0x2c728a){_0x2c728a['increment']('chatLicenseExceeded');}});}})[_0x934d('0x27')](function(){if(_0x22339a[_0x934d('0xfe')]&&_0x22339a[_0x934d('0xfe')][_0x934d('0xff')]){var _0x3c8969=[];for(var _0x1b4238=0x0;_0x1b4238<_0x22339a[_0x934d('0xfe')][_0x934d('0xff')]['length'];_0x1b4238++){var _0x351a58=_0x22339a['Interval'][_0x934d('0xff')][_0x1b4238][_0x934d('0x29')]({'plain':!![]});_0x3c8969[_0x934d('0x104')](iftimePromise(_0x351a58,_0x22339a));}return BPromise[_0x934d('0x105')](_0x3c8969)[_0x934d('0x27')](function(_0x331193){return _[_0x934d('0x106')](_0x331193);});}else{return!![];}})[_0x934d('0x27')](function(_0x5ae463){var _0x1a4c30=fs[_0x934d('0xc5')](path[_0x934d('0x70')](config[_0x934d('0x69')],'server/files/chat/iframe.ejs'),_0x934d('0xc6'));var _0x2d0914={'remote':_0x22339a[_0x934d('0x107')],'query':querystring[_0x934d('0x18')](_[_0x934d('0x43')](_0x22339a[_0x934d('0x29')]({'plain':!![]}),{'customerIp':_0x1ff226[_0x934d('0x97')]['x-forwarded-for']||_0x1ff226['headers']['x-real-ip']||_0x1ff226[_0x934d('0x108')][_0x934d('0x109')]||_0x1ff226['ip'],'referer':_0x1ff226[_0x934d('0x97')]['referer'],'openedInteractions':_0x3f9248,'maxInteractions':_0x101cfe,'virtual':_0x1d2d34['virtual'],'online':_0x5ae463,'custom':_0x1d2d34}))[_0x934d('0x10a')](/'/g,'\x5c\x27')};_0x428986[_0x934d('0x2e')](ejs[_0x934d('0xc7')](Mustache['render'](_0x1a4c30,_0x2d0914),{'proactiveActions':_0x27e063,'alignment':_0x22339a[_0x934d('0x10b')],'verticalAlignment':_0x22339a[_0x934d('0x10c')],'div_color':_0x22339a[_0x934d('0xef')],'labelText':_0x22339a[_0x934d('0x10d')],'text_color':_0x22339a[_0x934d('0x10e')],'text_button_color':_0x22339a[_0x934d('0x10f')],'button_color':_0x22339a[_0x934d('0x110')],'background_color':_0x22339a[_0x934d('0x111')],'hideWhenOffline':_0x22339a[_0x934d('0x112')],'interval':_0x22339a['IntervalId']}));})[_0x934d('0x1c')](handleError(_0x428986,null));};exports['addApplications']=function(_0x37992b,_0x35c801){var _0x1cefd8=_0x37992b[_0x934d('0x4a')]['id'];var _0x23b21d=_0x37992b[_0x934d('0x4f')];var _0x3dc5ff=0xc8;var _0x57d61e=null;return db[_0x934d('0x113')][_0x934d('0x114')]({'isolationLevel':db[_0x934d('0x113')]['Transaction'][_0x934d('0x115')][_0x934d('0x116')]},function(_0x5a851f){return db['ChatWebsite']['findOne']({'where':{'id':_0x1cefd8},'transaction':_0x5a851f})[_0x934d('0x27')](function(_0x16eb29){if(_0x16eb29){return db[_0x934d('0x8c')][_0x934d('0x28')]({'where':{'ChatWebsiteId':_0x1cefd8},'transaction':_0x5a851f})[_0x934d('0x27')](function(){var _0x5d060f=_[_0x934d('0x36')](_0x23b21d,function(_0x3bb386){_0x3bb386['ChatWebsiteId']=_0x1cefd8;return _0x3bb386;});return db['ChatApplication'][_0x934d('0xd2')](_0x5d060f,{'transaction':_0x5a851f});});}else{_0x3dc5ff=0x194;_0x57d61e=[];}});})[_0x934d('0x27')](function(){if(_0x3dc5ff!==0x194){return db[_0x934d('0x8c')][_0x934d('0x117')]({'where':{'ChatWebsiteId':_0x1cefd8},'order':_0x934d('0x92')})[_0x934d('0x27')](function(_0xd2eb6f){_0x57d61e=_0xd2eb6f;});}})[_0x934d('0x1c')](function(_0x952668){_0x3dc5ff=0x1f4;logger[_0x934d('0x19')](_0x952668[_0x934d('0x2c')]);if(_0x952668[_0x934d('0x2d')]){delete _0x952668[_0x934d('0x2d')];}_0x57d61e=_0x952668;})['finally'](function(){if(_0x57d61e===null){_0x35c801[_0x934d('0x1d')](_0x3dc5ff);}else{if(_0x3dc5ff===0x1f4){_0x35c801[_0x934d('0x1e')](_0x3dc5ff)[_0x934d('0x2e')](_0x57d61e);}else{_0x35c801[_0x934d('0x1e')](_0x3dc5ff)[_0x934d('0x26')](_0x57d61e);}}});};exports[_0x934d('0x118')]=function(_0x39c81a,_0xb981ee){var _0xd94c6d={};var _0x2b3d91={};var _0x424b35;var _0x4904c4;return db['ChatWebsite']['findOne']({'where':{'id':_0x39c81a[_0x934d('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb981ee,null))[_0x934d('0x27')](function(_0x41f786){if(_0x41f786){_0x424b35=_0x41f786;_0x2b3d91[_0x934d('0x3b')]=_[_0x934d('0x37')](db[_0x934d('0x8c')][_0x934d('0x33')]);_0x2b3d91[_0x934d('0x38')]=_[_0x934d('0x37')](_0x39c81a[_0x934d('0x38')]);_0x2b3d91[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x2b3d91[_0x934d('0x3b')],_0x2b3d91['query']);_0xd94c6d['attributes']=_[_0x934d('0x3a')](_0x2b3d91[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x39c81a[_0x934d('0x38')][_0x934d('0x3d')]));_0xd94c6d[_0x934d('0x3c')]=_0xd94c6d[_0x934d('0x3c')][_0x934d('0x4b')]?_0xd94c6d[_0x934d('0x3c')]:_0x2b3d91['model'];_0xd94c6d[_0x934d('0xe9')]=qs[_0x934d('0x40')](_0x39c81a[_0x934d('0x38')]['sort']);_0xd94c6d['where']=qs['filters'](_[_0x934d('0x57')](_0x39c81a[_0x934d('0x38')],_0x2b3d91['filters']));if(_0x39c81a[_0x934d('0x38')]['filter']){_0xd94c6d[_0x934d('0x41')]=_['merge'](_0xd94c6d[_0x934d('0x41')],{'$or':_['map'](_0xd94c6d['attributes'],function(_0x11e656){var _0x30d42a={};_0x30d42a[_0x11e656]={'$like':'%'+_0x39c81a[_0x934d('0x38')]['filter']+'%'};return _0x30d42a;})});}_0xd94c6d=_[_0x934d('0x43')]({},_0xd94c6d,_0x39c81a['options']);return _0x424b35[_0x934d('0x118')](_0xd94c6d);}})['then'](function(_0x1c0a59){if(_0x1c0a59){_0x4904c4=_0x1c0a59[_0x934d('0x4b')];if(!_0x39c81a[_0x934d('0x38')][_0x934d('0x3e')]('nolimit')){_0xd94c6d[_0x934d('0x22')]=qs[_0x934d('0x22')](_0x39c81a[_0x934d('0x38')][_0x934d('0x22')]);_0xd94c6d[_0x934d('0x20')]=qs[_0x934d('0x20')](_0x39c81a[_0x934d('0x38')][_0x934d('0x20')]);}return _0x424b35['getApplications'](_0xd94c6d);}})['then'](function(_0x566ff9){if(_0x566ff9){return _0x566ff9?{'count':_0x4904c4,'rows':_0x566ff9}:null;}})[_0x934d('0x27')](respondWithResult(_0xb981ee,null))[_0x934d('0x1c')](handleError(_0xb981ee,null));};exports[_0x934d('0x119')]=function(_0xc6bd6d,_0x225418){return db[_0x934d('0x11a')]['find']({'where':{'id':_0xc6bd6d[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x225418,null))[_0x934d('0x27')](function(_0x36ed99){if(_0x36ed99){return _0x36ed99['addProactiveActions'](_0xc6bd6d['body'][_0x934d('0x5a')],_[_0x934d('0xe7')](_0xc6bd6d['body'],[_0x934d('0x5a'),'id'])||{});}})[_0x934d('0x27')](respondWithResult(_0x225418,null))[_0x934d('0x1c')](handleError(_0x225418,null));};exports[_0x934d('0x100')]=function(_0x2197c6,_0x3d75c4){var _0x328e06={};var _0x3bbc58={};var _0x3dbbed;var _0x5a8497;return db['ChatWebsite'][_0x934d('0x5d')]({'where':{'id':_0x2197c6[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x3d75c4,null))[_0x934d('0x27')](function(_0x17f7ba){if(_0x17f7ba){_0x3dbbed=_0x17f7ba;_0x3bbc58[_0x934d('0x3b')]=_[_0x934d('0x37')](db['ChatProactiveAction'][_0x934d('0x33')]);_0x3bbc58[_0x934d('0x38')]=_[_0x934d('0x37')](_0x2197c6[_0x934d('0x38')]);_0x3bbc58['filters']=_[_0x934d('0x3a')](_0x3bbc58[_0x934d('0x3b')],_0x3bbc58[_0x934d('0x38')]);_0x328e06[_0x934d('0x3c')]=_[_0x934d('0x3a')](_0x3bbc58[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x2197c6[_0x934d('0x38')]['fields']));_0x328e06[_0x934d('0x3c')]=_0x328e06['attributes']['length']?_0x328e06[_0x934d('0x3c')]:_0x3bbc58[_0x934d('0x3b')];_0x328e06[_0x934d('0xe9')]=qs['sort'](_0x2197c6['query'][_0x934d('0x40')]);_0x328e06[_0x934d('0x41')]=qs['filters'](_[_0x934d('0x57')](_0x2197c6['query'],_0x3bbc58[_0x934d('0x39')]));if(_0x2197c6[_0x934d('0x38')][_0x934d('0x42')]){_0x328e06[_0x934d('0x41')]=_['merge'](_0x328e06['where'],{'$or':_['map'](_0x328e06[_0x934d('0x3c')],function(_0xd60309){var _0x160340={};_0x160340[_0xd60309]={'$like':'%'+_0x2197c6[_0x934d('0x38')][_0x934d('0x42')]+'%'};return _0x160340;})});}_0x328e06=_[_0x934d('0x43')]({},_0x328e06,_0x2197c6[_0x934d('0x45')]);return _0x3dbbed[_0x934d('0x100')](_0x328e06);}})[_0x934d('0x27')](function(_0x3fa203){if(_0x3fa203){_0x5a8497=_0x3fa203[_0x934d('0x4b')];if(!_0x2197c6[_0x934d('0x38')]['hasOwnProperty']('nolimit')){_0x328e06[_0x934d('0x22')]=qs[_0x934d('0x22')](_0x2197c6['query'][_0x934d('0x22')]);_0x328e06['offset']=qs[_0x934d('0x20')](_0x2197c6['query']['offset']);}return _0x3dbbed[_0x934d('0x100')](_0x328e06);}})[_0x934d('0x27')](function(_0x5a6c17){if(_0x5a6c17){return _0x5a6c17?{'count':_0x5a8497,'rows':_0x5a6c17}:null;}})[_0x934d('0x27')](respondWithResult(_0x3d75c4,null))['catch'](handleError(_0x3d75c4,null));};exports[_0x934d('0x11b')]=function(_0x1835f6,_0x1dc91f){var _0x4e4b50=_0x1835f6['query'][_0x934d('0x11c')]==='false'?_0x934d('0x11d'):_0x934d('0x11e');return db['ChatWebsite'][_0x934d('0x4d')]({'attributes':['id',_0x4e4b50],'where':{'id':_0x1835f6[_0x934d('0x4a')]['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x1dc91f,null))['then'](function(_0x419abc){if(_0x419abc){var _0x522e85=_0x419abc[_0x4e4b50];var _0xedb1f2=_0x522e85&&_0x522e85['items']?_0x522e85['items']:[];_0x1dc91f[_0x934d('0x2e')]({'fromKey':_['isNil'](_0x522e85[_0x934d('0x11f')])?undefined:_0x522e85['fromKey'],'count':_0xedb1f2[_0x934d('0x4b')],'rows':_0xedb1f2});}})[_0x934d('0x1c')](handleError(_0x1dc91f,null));};exports[_0x934d('0x120')]=function(_0x51dcf7,_0xfad8d6){var _0x36df88={'raw':![],'where':{}};var _0x141fbc={};var _0x361901={'count':0x0,'rows':[]};return db[_0x934d('0x32')][_0x934d('0x5d')]({'where':{'id':_0x51dcf7['params']['id']}})['then'](handleEntityNotFound(_0xfad8d6,null))[_0x934d('0x27')](function(_0x3c7720){if(_0x3c7720){_0x141fbc[_0x934d('0x3b')]=_[_0x934d('0x37')](db[_0x934d('0xca')]['rawAttributes']);_0x141fbc[_0x934d('0x38')]=_[_0x934d('0x37')](_0x51dcf7[_0x934d('0x38')]);_0x141fbc[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x141fbc[_0x934d('0x3b')],_0x141fbc[_0x934d('0x38')]);_0x36df88['attributes']=_[_0x934d('0x3a')](_0x141fbc[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x51dcf7['query'][_0x934d('0x3d')]));_0x36df88[_0x934d('0x3c')]=_0x36df88[_0x934d('0x3c')][_0x934d('0x4b')]?_0x36df88['attributes']:_0x141fbc[_0x934d('0x3b')];if(!_0x51dcf7[_0x934d('0x38')][_0x934d('0x3e')](_0x934d('0x3f'))){_0x36df88[_0x934d('0x22')]=qs[_0x934d('0x22')](_0x51dcf7[_0x934d('0x38')][_0x934d('0x22')]);_0x36df88[_0x934d('0x20')]=qs[_0x934d('0x20')](_0x51dcf7['query']['offset']);}_0x36df88['order']=qs[_0x934d('0x40')](_0x51dcf7[_0x934d('0x38')][_0x934d('0x40')]);_0x36df88[_0x934d('0x41')]=qs['filters'](_[_0x934d('0x57')](_0x51dcf7['query'],_0x141fbc['filters']));_0x36df88[_0x934d('0x41')][_0x934d('0x5e')]=_0x3c7720['id'];if(_0x51dcf7[_0x934d('0x38')][_0x934d('0x42')]){_0x36df88[_0x934d('0x41')]=_[_0x934d('0x43')](_0x36df88[_0x934d('0x41')],{'$or':_['map'](_0x36df88[_0x934d('0x3c')],function(_0x2e35f8){var _0x19fdc8={};_0x19fdc8[_0x2e35f8]={'$like':'%'+_0x51dcf7['query'][_0x934d('0x42')]+'%'};return _0x19fdc8;})});}_0x36df88=_[_0x934d('0x43')]({},_0x36df88,_0x51dcf7[_0x934d('0x45')]);return db['ChatOfflineMessage'][_0x934d('0x23')]({'where':_0x36df88['where']})[_0x934d('0x27')](function(_0x392a6c){_0x361901[_0x934d('0x23')]=_0x392a6c;if(_0x51dcf7[_0x934d('0x38')]['includeAll']){_0x36df88[_0x934d('0x4c')]=[{'all':!![]}];}else{_0x36df88[_0x934d('0x4c')]=[{'model':db[_0x934d('0x95')],'as':_0x934d('0xea'),'required':![]},{'model':db[_0x934d('0x121')],'as':'Attachments','required':![]}];}return db[_0x934d('0xca')][_0x934d('0x47')](_0x36df88);})[_0x934d('0x27')](function(_0x17a985){_0x361901[_0x934d('0x48')]=_0x17a985;return _0x361901;});}})['then'](respondWithFilteredResult(_0xfad8d6,_0x36df88))[_0x934d('0x1c')](handleError(_0xfad8d6,null));};exports['addAgents']=function(_0x39b3f3,_0x523d34){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x39b3f3['params']['id']}})[_0x934d('0x27')](handleEntityNotFound(_0x523d34,null))[_0x934d('0x27')](function(_0xef10d6){if(_0xef10d6){return _0xef10d6['addAgents'](_0x39b3f3[_0x934d('0x4f')][_0x934d('0x5a')],_[_0x934d('0xe7')](_0x39b3f3['body'],['ids','id'])||{})['spread'](function(_0x1bcefd){for(var _0xa7c423=0x0;_0xa7c423<_0x39b3f3[_0x934d('0x4f')][_0x934d('0x5a')]['length'];_0xa7c423+=0x1){socket[_0x934d('0x122')](_0x934d('0x123'),{'UserId':Number(_0x39b3f3['body'][_0x934d('0x5a')][_0xa7c423]),'ChatWebsiteId':Number(_0x39b3f3[_0x934d('0x4a')]['id'])});}return _0x1bcefd;});}})[_0x934d('0x27')](respondWithResult(_0x523d34,null))[_0x934d('0x1c')](handleError(_0x523d34,null));};exports[_0x934d('0x124')]=function(_0x369da1,_0x3faf12){return db[_0x934d('0x32')][_0x934d('0x4d')]({'where':{'id':_0x369da1[_0x934d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3faf12,null))[_0x934d('0x27')](function(_0xfd6c1a){if(_0xfd6c1a){return _0xfd6c1a[_0x934d('0x124')](_0x369da1['query'][_0x934d('0x5a')])[_0x934d('0x27')](function(){if(_[_0x934d('0x125')](_0x369da1['query'][_0x934d('0x5a')])){for(var _0x4d7b7b=0x0;_0x4d7b7b<_0x369da1[_0x934d('0x38')][_0x934d('0x5a')]['length'];_0x4d7b7b+=0x1){socket[_0x934d('0x122')](_0x934d('0x126'),{'UserId':Number(_0x369da1['query']['ids'][_0x4d7b7b]),'ChatWebsiteId':Number(_0x369da1['params']['id'])});}}else{socket[_0x934d('0x122')](_0x934d('0x126'),{'UserId':Number(_0x369da1[_0x934d('0x38')][_0x934d('0x5a')]),'ChatWebsiteId':Number(_0x369da1[_0x934d('0x4a')]['id'])});}});}})[_0x934d('0x27')](respondWithStatusCode(_0x3faf12,null))[_0x934d('0x1c')](handleError(_0x3faf12,null));};exports['getAgents']=function(_0x2a32aa,_0x37757e){var _0x4c4985={};var _0x422d7d={};var _0x4cc3f9;var _0x26ad4e;return db[_0x934d('0x32')]['findOne']({'where':{'id':_0x2a32aa[_0x934d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x37757e,null))[_0x934d('0x27')](function(_0x38fd4e){if(_0x38fd4e){_0x4cc3f9=_0x38fd4e;_0x422d7d[_0x934d('0x3b')]=_['keys'](db[_0x934d('0xb7')][_0x934d('0x33')]);_0x422d7d[_0x934d('0x38')]=_[_0x934d('0x37')](_0x2a32aa['query']);_0x422d7d[_0x934d('0x39')]=_[_0x934d('0x3a')](_0x422d7d[_0x934d('0x3b')],_0x422d7d['query']);_0x4c4985[_0x934d('0x3c')]=_['intersection'](_0x422d7d[_0x934d('0x3b')],qs[_0x934d('0x3d')](_0x2a32aa[_0x934d('0x38')][_0x934d('0x3d')]));_0x4c4985[_0x934d('0x3c')]=_0x4c4985[_0x934d('0x3c')][_0x934d('0x4b')]?_0x4c4985[_0x934d('0x3c')]:_0x422d7d[_0x934d('0x3b')];_0x4c4985[_0x934d('0xe9')]=qs[_0x934d('0x40')](_0x2a32aa[_0x934d('0x38')][_0x934d('0x40')]);_0x4c4985[_0x934d('0x41')]=qs[_0x934d('0x39')](_['pick'](_0x2a32aa[_0x934d('0x38')],_0x422d7d[_0x934d('0x39')]));if(_0x2a32aa['query'][_0x934d('0x42')]){_0x4c4985['where']=_[_0x934d('0x43')](_0x4c4985[_0x934d('0x41')],{'$or':_[_0x934d('0x36')](_0x4c4985['attributes'],function(_0x378cf6){var _0x4b8955={};_0x4b8955[_0x378cf6]={'$like':'%'+_0x2a32aa[_0x934d('0x38')][_0x934d('0x42')]+'%'};return _0x4b8955;})});}_0x4c4985=_['merge']({},_0x4c4985,_0x2a32aa[_0x934d('0x45')]);return _0x4cc3f9['getAgents'](_0x4c4985);}})[_0x934d('0x27')](function(_0x53a1a8){if(_0x53a1a8){_0x26ad4e=_0x53a1a8[_0x934d('0x4b')];if(!_0x2a32aa[_0x934d('0x38')][_0x934d('0x3e')](_0x934d('0x3f'))){_0x4c4985['limit']=qs[_0x934d('0x22')](_0x2a32aa[_0x934d('0x38')][_0x934d('0x22')]);_0x4c4985[_0x934d('0x20')]=qs[_0x934d('0x20')](_0x2a32aa['query']['offset']);}return _0x4cc3f9['getAgents'](_0x4c4985);}})['then'](function(_0x5ecb4){if(_0x5ecb4){return _0x5ecb4?{'count':_0x26ad4e,'rows':_0x5ecb4}:null;}})[_0x934d('0x27')](respondWithResult(_0x37757e,null))['catch'](handleError(_0x37757e,null));};
\ No newline at end of file
index 0733357..51eeac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1928=['hook','exports','events','../../mysqldb','ChatWebsite','save','update','remove','emit','hasOwnProperty'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x1928,0x138));var _0x8192=function(_0x628a6c,_0x22487b){_0x628a6c=_0x628a6c-0x0;var _0xcd3511=_0x1928[_0x628a6c];return _0xcd3511;};'use strict';var EventEmitter=require(_0x8192('0x0'));var ChatWebsite=require(_0x8192('0x1'))['db'][_0x8192('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8192('0x3'),'afterUpdate':_0x8192('0x4'),'afterDestroy':_0x8192('0x5')};function emitEvent(_0x1a193a){return function(_0x16f410,_0x11fa71,_0x11c753){ChatWebsiteEvents[_0x8192('0x6')](_0x1a193a+':'+_0x16f410['id'],_0x16f410);ChatWebsiteEvents[_0x8192('0x6')](_0x1a193a,_0x16f410);_0x11c753(null);};}for(var e in events){if(events[_0x8192('0x7')](e)){var event=events[e];ChatWebsite[_0x8192('0x8')](e,emitEvent(event));}}module[_0x8192('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xe64a=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe64a,0x1e0));var _0xae64=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe64a[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0xae64('0x0'));var ChatWebsite=require(_0xae64('0x1'))['db'][_0xae64('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xae64('0x3')](0x0);var events={'afterCreate':_0xae64('0x4'),'afterUpdate':_0xae64('0x5'),'afterDestroy':_0xae64('0x6')};function emitEvent(_0x275ae7){return function(_0x5c8e95,_0x4a2982,_0x5f5b89){ChatWebsiteEvents['emit'](_0x275ae7+':'+_0x5c8e95['id'],_0x5c8e95);ChatWebsiteEvents[_0xae64('0x7')](_0x275ae7,_0x5c8e95);_0x5f5b89(null);};}for(var e in events){if(events[_0xae64('0x8')](e)){var event=events[e];ChatWebsite[_0xae64('0x9')](e,emitEvent(event));}}module[_0xae64('0xa')]=ChatWebsiteEvents;
\ No newline at end of file
index 0c04eb1..629b320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x413d=['moment','bluebird','request-promise','path','rimraf','ChatWebsite','chat_websites','lodash','util','../../config/logger'];(function(_0x3ed5ab,_0x3791b2){var _0x5cae7a=function(_0x43f208){while(--_0x43f208){_0x3ed5ab['push'](_0x3ed5ab['shift']());}};_0x5cae7a(++_0x3791b2);}(_0x413d,0xed));var _0xd413=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x413d[_0x68ee8b];return _0x5148f7;};'use strict';var _=require(_0xd413('0x0'));var util=require(_0xd413('0x1'));var logger=require(_0xd413('0x2'))('api');var moment=require(_0xd413('0x3'));var BPromise=require(_0xd413('0x4'));var rp=require(_0xd413('0x5'));var fs=require('fs');var path=require(_0xd413('0x6'));var rimraf=require(_0xd413('0x7'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x180233,_0x330853){return _0x180233['define'](_0xd413('0x8'),attributes,{'tableName':_0xd413('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x999f=['./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x1e4f2d,_0x22e2bb){var _0xd05ce5=function(_0x4c7b43){while(--_0x4c7b43){_0x1e4f2d['push'](_0x1e4f2d['shift']());}};_0xd05ce5(++_0x22e2bb);}(_0x999f,0x94));var _0xf999=function(_0x9077a4,_0x41748c){_0x9077a4=_0x9077a4-0x0;var _0x204bdc=_0x999f[_0x9077a4];return _0x204bdc;};'use strict';var _=require(_0xf999('0x0'));var util=require(_0xf999('0x1'));var logger=require(_0xf999('0x2'))('api');var moment=require(_0xf999('0x3'));var BPromise=require(_0xf999('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf999('0x5'));var rimraf=require(_0xf999('0x6'));var config=require(_0xf999('0x7'));var attributes=require(_0xf999('0x8'));module[_0xf999('0x9')]=function(_0x3bc1e4,_0x184059){return _0x3bc1e4[_0xf999('0xa')](_0xf999('0xb'),attributes,{'tableName':_0xf999('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f3febb..905948a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1648=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x41c2fe,_0x834052){var _0xa49bd2=function(_0x17d07){while(--_0x17d07){_0x41c2fe['push'](_0x41c2fe['shift']());}};_0xa49bd2(++_0x834052);}(_0x1648,0xa7));var _0x8164=function(_0x574f48,_0x196872){_0x574f48=_0x574f48-0x0;var _0x5d072f=_0x1648[_0x574f48];return _0x5d072f;};'use strict';var _=require(_0x8164('0x0'));var util=require(_0x8164('0x1'));var moment=require(_0x8164('0x2'));var BPromise=require(_0x8164('0x3'));var rs=require(_0x8164('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8164('0x5'))['db'];var utils=require(_0x8164('0x6'));var logger=require(_0x8164('0x7'))('rpc');var config=require(_0x8164('0x8'));var jayson=require(_0x8164('0x9'));var client=jayson[_0x8164('0xa')][_0x8164('0xb')]({'port':0x232a});config[_0x8164('0xc')]=_[_0x8164('0xd')](config[_0x8164('0xc')],{'host':_0x8164('0xe'),'port':0x18eb});var socket=require(_0x8164('0xf'))(new Redis(config[_0x8164('0xc')]));require(_0x8164('0x10'))[_0x8164('0x11')](socket);function respondWithRpcPromise(_0x3f1d7e,_0x175f37,_0x329a49){return new BPromise(function(_0x12ba73,_0x29fd9c){return client['request'](_0x3f1d7e,_0x329a49)[_0x8164('0x12')](function(_0x284b40){logger[_0x8164('0x13')](_0x8164('0x14'),_0x175f37,_0x8164('0x15'));logger[_0x8164('0x16')](_0x8164('0x17'),_0x175f37,_0x8164('0x15'),JSON[_0x8164('0x18')](_0x284b40));if(_0x284b40[_0x8164('0x19')]){if(_0x284b40[_0x8164('0x19')]['code']===0x1f4){logger[_0x8164('0x19')](_0x8164('0x14'),_0x175f37,_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);return _0x29fd9c(_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x175f37,_0x284b40[_0x8164('0x19')][_0x8164('0x1a')]);return _0x12ba73(_0x284b40[_0x8164('0x19')]['message']);}else{logger[_0x8164('0x13')](_0x8164('0x14'),_0x175f37,_0x8164('0x15'));_0x12ba73(_0x284b40[_0x8164('0x1b')]['message']);}})[_0x8164('0x1c')](function(_0x2b22ab){logger['error'](_0x8164('0x14'),_0x175f37,_0x2b22ab);_0x29fd9c(_0x2b22ab);});});}
\ No newline at end of file
+var _0xf91e=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xf91e,0x17a));var _0xef91=function(_0x3beb42,_0x391d91){_0x3beb42=_0x3beb42-0x0;var _0x4a8d49=_0xf91e[_0x3beb42];return _0x4a8d49;};'use strict';var _=require(_0xef91('0x0'));var util=require(_0xef91('0x1'));var moment=require(_0xef91('0x2'));var BPromise=require(_0xef91('0x3'));var rs=require(_0xef91('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xef91('0x5'))['db'];var utils=require(_0xef91('0x6'));var logger=require(_0xef91('0x7'))(_0xef91('0x8'));var config=require(_0xef91('0x9'));var jayson=require(_0xef91('0xa'));var client=jayson[_0xef91('0xb')]['http']({'port':0x232a});config[_0xef91('0xc')]=_[_0xef91('0xd')](config['redis'],{'host':_0xef91('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatWebsite.socket')[_0xef91('0xf')](socket);function respondWithRpcPromise(_0xc80b22,_0x2faef5,_0x4912c2){return new BPromise(function(_0x1829cd,_0xbd7773){return client[_0xef91('0x10')](_0xc80b22,_0x4912c2)[_0xef91('0x11')](function(_0x233af4){logger[_0xef91('0x12')](_0xef91('0x13'),_0x2faef5,_0xef91('0x14'));logger[_0xef91('0x15')](_0xef91('0x16'),_0x2faef5,_0xef91('0x14'),JSON[_0xef91('0x17')](_0x233af4));if(_0x233af4[_0xef91('0x18')]){if(_0x233af4[_0xef91('0x18')][_0xef91('0x19')]===0x1f4){logger[_0xef91('0x18')](_0xef91('0x13'),_0x2faef5,_0x233af4[_0xef91('0x18')][_0xef91('0x1a')]);return _0xbd7773(_0x233af4[_0xef91('0x18')][_0xef91('0x1a')]);}logger[_0xef91('0x18')](_0xef91('0x13'),_0x2faef5,_0x233af4[_0xef91('0x18')]['message']);return _0x1829cd(_0x233af4[_0xef91('0x18')]['message']);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x2faef5,'request\x20sent');_0x1829cd(_0x233af4[_0xef91('0x1b')][_0xef91('0x1a')]);}})[_0xef91('0x1c')](function(_0x42cf27){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x2faef5,_0x42cf27);_0xbd7773(_0x42cf27);});});}
\ No newline at end of file
index 360f0b5..64106ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf822=['length','chatWebsite:','./chatWebsite.events','save','update'];(function(_0x349c67,_0x4d0787){var _0x1511ec=function(_0x153e76){while(--_0x153e76){_0x349c67['push'](_0x349c67['shift']());}};_0x1511ec(++_0x4d0787);}(_0xf822,0xb6));var _0x2f82=function(_0x452564,_0x54eb08){_0x452564=_0x452564-0x0;var _0x2775a0=_0xf822[_0x452564];return _0x2775a0;};'use strict';var ChatWebsiteEvents=require(_0x2f82('0x0'));var events=[_0x2f82('0x1'),'remove',_0x2f82('0x2')];function createListener(_0x5d522e,_0x2d1fdd){return function(_0x268eb1){_0x2d1fdd['emit'](_0x5d522e,_0x268eb1);};}function removeListener(_0x32935c,_0x57f211){return function(){ChatWebsiteEvents['removeListener'](_0x32935c,_0x57f211);};}exports['register']=function(_0x30ed64){for(var _0x1880c7=0x0,_0x1f24cc=events[_0x2f82('0x3')];_0x1880c7<_0x1f24cc;_0x1880c7++){var _0x52ba76=events[_0x1880c7];var _0x304760=createListener(_0x2f82('0x4')+_0x52ba76,_0x30ed64);ChatWebsiteEvents['on'](_0x52ba76,_0x304760);}};
\ No newline at end of file
+var _0xaab6=['remove','update','emit','removeListener','register','length','chatWebsite:','./chatWebsite.events','save'];(function(_0x22b059,_0x563a7d){var _0x470f15=function(_0x53925d){while(--_0x53925d){_0x22b059['push'](_0x22b059['shift']());}};_0x470f15(++_0x563a7d);}(_0xaab6,0xdf));var _0x6aab=function(_0x3fb989,_0x461c88){_0x3fb989=_0x3fb989-0x0;var _0x5d5ef1=_0xaab6[_0x3fb989];return _0x5d5ef1;};'use strict';var ChatWebsiteEvents=require(_0x6aab('0x0'));var events=[_0x6aab('0x1'),_0x6aab('0x2'),_0x6aab('0x3')];function createListener(_0x5766ac,_0x45badc){return function(_0x252d1c){_0x45badc[_0x6aab('0x4')](_0x5766ac,_0x252d1c);};}function removeListener(_0x3f763a,_0x54c8f9){return function(){ChatWebsiteEvents[_0x6aab('0x5')](_0x3f763a,_0x54c8f9);};}exports[_0x6aab('0x6')]=function(_0xbaef58){for(var _0x1dedab=0x0,_0x2ee69a=events[_0x6aab('0x7')];_0x1dedab<_0x2ee69a;_0x1dedab++){var _0x2b8e3b=events[_0x1dedab];var _0x4ef1be=createListener(_0x6aab('0x8')+_0x2b8e3b,_0xbaef58);ChatWebsiteEvents['on'](_0x2b8e3b,_0x4ef1be);}};
\ No newline at end of file
index fbd14bc..29077c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7296=['delete','destroy','removeDispositions','removeAgents','exports','multer','path','Router','fs-extra','../../components/auth/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','/:id/users','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','addAvatar','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','attachments','replace','extname','/:id/offline','offline','addInteraction','addProactiveActions','addAgents','put','update'];(function(_0xaffa2d,_0x4b1c10){var _0x3c6a3a=function(_0x1e2cf5){while(--_0x1e2cf5){_0xaffa2d['push'](_0xaffa2d['shift']());}};_0x3c6a3a(++_0x4b1c10);}(_0x7296,0x1a9));var _0x6729=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0x7296[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x6729('0x0'));var util=require('util');var path=require(_0x6729('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6729('0x2')]();var fs_extra=require(_0x6729('0x3'));var auth=require(_0x6729('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6729('0x5'));var controller=require(_0x6729('0x6'));router[_0x6729('0x7')]('/',auth[_0x6729('0x8')](),controller[_0x6729('0x9')]);router[_0x6729('0x7')](_0x6729('0xa'),auth[_0x6729('0x8')](),controller['describe']);router[_0x6729('0x7')](_0x6729('0xb'),auth[_0x6729('0x8')](),controller[_0x6729('0xc')]);router[_0x6729('0x7')](_0x6729('0xd'),auth['isAuthenticated'](),controller[_0x6729('0xe')]);router[_0x6729('0x7')](_0x6729('0xf'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x6729('0x7')](_0x6729('0x10'),controller[_0x6729('0x11')]);router[_0x6729('0x7')](_0x6729('0x12'),controller[_0x6729('0x13')]);router['get'](_0x6729('0x14'),controller[_0x6729('0x15')]);router[_0x6729('0x7')](_0x6729('0x16'),controller[_0x6729('0x17')]);router[_0x6729('0x7')](_0x6729('0x18'),auth[_0x6729('0x8')](),controller[_0x6729('0x19')]);router['get'](_0x6729('0x1a'),controller[_0x6729('0x1b')]);router['get'](_0x6729('0x1c'),auth[_0x6729('0x8')](),controller[_0x6729('0x1d')]);router[_0x6729('0x7')](_0x6729('0x1e'),auth['isAuthenticated'](),controller[_0x6729('0x1f')]);router['get'](_0x6729('0x20'),controller[_0x6729('0x21')]);router['get'](_0x6729('0x22'),auth['isAuthenticated'](),controller['getOfflineMessages']);router[_0x6729('0x7')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller['getAgents']);router[_0x6729('0x24')]('/',auth[_0x6729('0x8')](),controller['create']);router[_0x6729('0x24')](_0x6729('0xd'),auth[_0x6729('0x8')](),controller[_0x6729('0x25')]);router[_0x6729('0x24')](_0x6729('0xf'),auth[_0x6729('0x8')](),controller[_0x6729('0x26')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x41f3cf,_0x3a23dd,_0x47c0a9){_0x47c0a9(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x2a')));},'filename':function(_0x2ab7b9,_0xf40a7d,_0x1f55d5){_0x1f55d5(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0xf40a7d[_0x6729('0x2e')]));}})});router['post'](_0x6729('0x10'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x31')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x4f63cb,_0x3e7588,_0x734908){_0x734908(null,path[_0x6729('0x28')](config[_0x6729('0x29')],'server/files/images/avatars/'));},'filename':function(_0x15712d,_0x36a7c9,_0x599fff){_0x599fff(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0x36a7c9['originalname']));}})});router[_0x6729('0x24')](_0x6729('0x12'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x32')]);var upload=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x4d85d3,_0x1454ff,_0xae3f0c){_0xae3f0c(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x33')));},'filename':function(_0x5b835b,_0x14c630,_0x241061){_0x241061(null,util['format'](_0x6729('0x2c'),Date[_0x6729('0x2d')](),_0x14c630[_0x6729('0x2e')]));}})});router[_0x6729('0x24')](_0x6729('0x14'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x34')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xadd28e,_0x302bcd,_0x92cfb6){_0x92cfb6(null,path[_0x6729('0x28')](config[_0x6729('0x29')],_0x6729('0x33')));},'filename':function(_0x38e715,_0x465c52,_0x4f3a43){_0x4f3a43(null,util[_0x6729('0x2b')](_0x6729('0x2c'),Date['now'](),_0x465c52[_0x6729('0x2e')]));}})});router[_0x6729('0x24')](_0x6729('0x16'),upload[_0x6729('0x2f')](_0x6729('0x30')),controller[_0x6729('0x35')]);router[_0x6729('0x24')](_0x6729('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x6729('0x27')]({'destination':function(_0x277e12,_0x176e2a,_0x4e8908){const _0x31b6a7=path[_0x6729('0x28')](config[_0x6729('0x29')],'server/files',_0x6729('0x37'),'offline-chat');fs_extra['ensureDir'](_0x31b6a7,function(){_0x4e8908(null,_0x31b6a7);});},'filename':function(_0x1d8034,_0x3f2cf8,_0x264699){const _0xdb8d29=_0x3f2cf8[_0x6729('0x2e')][_0x6729('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0xb08573=path[_0x6729('0x39')](_0xdb8d29);const _0x30a73d=Date['now']()+'-'+_0xdb8d29[_0x6729('0x38')](_0xb08573,'')+_0xb08573;_0x264699(null,_0x30a73d);}})});router[_0x6729('0x24')](_0x6729('0x3a'),offlineUploadMulter['any'](),controller[_0x6729('0x3b')]);router[_0x6729('0x24')](_0x6729('0x18'),auth[_0x6729('0x8')](),controller[_0x6729('0x3c')]);router[_0x6729('0x24')](_0x6729('0x1c'),auth[_0x6729('0x8')](),controller['addApplications']);router[_0x6729('0x24')](_0x6729('0x1e'),auth[_0x6729('0x8')](),controller[_0x6729('0x3d')]);router[_0x6729('0x24')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller[_0x6729('0x3e')]);router[_0x6729('0x3f')](_0x6729('0xb'),auth[_0x6729('0x8')](),controller[_0x6729('0x40')]);router[_0x6729('0x41')]('/:id',auth[_0x6729('0x8')](),controller[_0x6729('0x42')]);router[_0x6729('0x41')](_0x6729('0xd'),auth[_0x6729('0x8')](),controller[_0x6729('0x43')]);router['delete'](_0x6729('0xf'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x6729('0x41')](_0x6729('0x23'),auth[_0x6729('0x8')](),controller[_0x6729('0x44')]);module[_0x6729('0x45')]=router;
\ No newline at end of file
+var _0xeb23=['getLogo','/:id/avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/applications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','/:id/users','getAgents','create','post','/:id/dispositions','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','/:id/customer_avatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','/:id/offline','any','addInteraction','addApplications','addProactiveActions','delete','/:id','destroy','removeDispositions','removeAnswers','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','isAuthenticated','describe','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb23,0x14a));var _0x3eb2=function(_0x1aed80,_0x3ca6f6){_0x1aed80=_0x1aed80-0x0;var _0x43961e=_0xeb23[_0x1aed80];return _0x43961e;};'use strict';var multer=require(_0x3eb2('0x0'));var util=require(_0x3eb2('0x1'));var path=require(_0x3eb2('0x2'));var timeout=require(_0x3eb2('0x3'));var express=require('express');var router=express[_0x3eb2('0x4')]();var fs_extra=require(_0x3eb2('0x5'));var auth=require(_0x3eb2('0x6'));var interaction=require(_0x3eb2('0x7'));var config=require(_0x3eb2('0x8'));var controller=require(_0x3eb2('0x9'));router[_0x3eb2('0xa')]('/',auth['isAuthenticated'](),controller[_0x3eb2('0xb')]);router[_0x3eb2('0xa')](_0x3eb2('0xc'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0xe')]);router[_0x3eb2('0xa')]('/:id',auth[_0x3eb2('0xd')](),controller[_0x3eb2('0xf')]);router[_0x3eb2('0xa')]('/:id/dispositions',auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x10')]);router[_0x3eb2('0xa')](_0x3eb2('0x11'),auth['isAuthenticated'](),controller[_0x3eb2('0x12')]);router['get'](_0x3eb2('0x13'),controller[_0x3eb2('0x14')]);router['get'](_0x3eb2('0x15'),controller['getAvatar']);router[_0x3eb2('0xa')]('/:id/customer_avatar',controller[_0x3eb2('0x16')]);router[_0x3eb2('0xa')](_0x3eb2('0x17'),controller[_0x3eb2('0x18')]);router[_0x3eb2('0xa')](_0x3eb2('0x19'),auth['isAuthenticated'](),controller[_0x3eb2('0x1a')]);router[_0x3eb2('0xa')]('/:id/snippet',controller['getSnippet']);router['get'](_0x3eb2('0x1b'),auth[_0x3eb2('0xd')](),controller['getApplications']);router[_0x3eb2('0xa')](_0x3eb2('0x1c'),auth['isAuthenticated'](),controller[_0x3eb2('0x1d')]);router['get']('/:id/fields',controller[_0x3eb2('0x1e')]);router[_0x3eb2('0xa')](_0x3eb2('0x1f'),auth[_0x3eb2('0xd')](),controller['getOfflineMessages']);router[_0x3eb2('0xa')](_0x3eb2('0x20'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x21')]);router['post']('/',auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x22')]);router[_0x3eb2('0x23')](_0x3eb2('0x24'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x25')]);router[_0x3eb2('0x23')](_0x3eb2('0x11'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x26')]);var upload=multer({'storage':multer[_0x3eb2('0x27')]({'destination':function(_0xaef1bf,_0x3d99f9,_0x2b6a71){_0x2b6a71(null,path[_0x3eb2('0x28')](config[_0x3eb2('0x29')],_0x3eb2('0x2a')));},'filename':function(_0x19c9d2,_0x20101e,_0x263c14){_0x263c14(null,util[_0x3eb2('0x2b')](_0x3eb2('0x2c'),Date[_0x3eb2('0x2d')](),_0x20101e[_0x3eb2('0x2e')]));}})});router[_0x3eb2('0x23')]('/:id/logo',upload[_0x3eb2('0x2f')](_0x3eb2('0x30')),controller[_0x3eb2('0x31')]);var upload=multer({'storage':multer[_0x3eb2('0x27')]({'destination':function(_0x3cd444,_0xa7365f,_0x48d9df){_0x48d9df(null,path[_0x3eb2('0x28')](config['root'],_0x3eb2('0x32')));},'filename':function(_0x4bfbb9,_0x5de88a,_0x530539){_0x530539(null,util[_0x3eb2('0x2b')](_0x3eb2('0x2c'),Date[_0x3eb2('0x2d')](),_0x5de88a[_0x3eb2('0x2e')]));}})});router[_0x3eb2('0x23')](_0x3eb2('0x15'),upload['single'](_0x3eb2('0x30')),controller['addAvatar']);var upload=multer({'storage':multer[_0x3eb2('0x27')]({'destination':function(_0x17a991,_0x11d09d,_0x1a9090){_0x1a9090(null,path[_0x3eb2('0x28')](config['root'],_0x3eb2('0x32')));},'filename':function(_0x306790,_0x2996e9,_0x194e30){_0x194e30(null,util[_0x3eb2('0x2b')](_0x3eb2('0x2c'),Date[_0x3eb2('0x2d')](),_0x2996e9[_0x3eb2('0x2e')]));}})});router['post'](_0x3eb2('0x33'),upload[_0x3eb2('0x2f')](_0x3eb2('0x30')),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x439f58,_0x3cf8ba,_0x5bd701){_0x5bd701(null,path[_0x3eb2('0x28')](config[_0x3eb2('0x29')],_0x3eb2('0x32')));},'filename':function(_0x575ac5,_0x900585,_0x533145){_0x533145(null,util['format'](_0x3eb2('0x2c'),Date[_0x3eb2('0x2d')](),_0x900585[_0x3eb2('0x2e')]));}})});router['post']('/:id/system_avatar',upload['single'](_0x3eb2('0x30')),controller[_0x3eb2('0x34')]);router[_0x3eb2('0x23')](_0x3eb2('0x35'),controller[_0x3eb2('0x36')]);const offlineUploadMulter=multer({'storage':multer[_0x3eb2('0x27')]({'destination':function(_0x1c253f,_0x481c6b,_0x4d6754){const _0x5d732c=path[_0x3eb2('0x28')](config[_0x3eb2('0x29')],_0x3eb2('0x37'),_0x3eb2('0x38'),_0x3eb2('0x39'));fs_extra[_0x3eb2('0x3a')](_0x5d732c,function(){_0x4d6754(null,_0x5d732c);});},'filename':function(_0x5d3051,_0x2bc85b,_0x10255c){const _0x54d972=_0x2bc85b[_0x3eb2('0x2e')][_0x3eb2('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x47c41a=path['extname'](_0x54d972);const _0x3b12d4=Date[_0x3eb2('0x2d')]()+'-'+_0x54d972[_0x3eb2('0x3b')](_0x47c41a,'')+_0x47c41a;_0x10255c(null,_0x3b12d4);}})});router['post'](_0x3eb2('0x3c'),offlineUploadMulter[_0x3eb2('0x3d')](),controller['offline']);router[_0x3eb2('0x23')](_0x3eb2('0x19'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x3e')]);router[_0x3eb2('0x23')](_0x3eb2('0x1b'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x3f')]);router['post'](_0x3eb2('0x1c'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x40')]);router[_0x3eb2('0x23')](_0x3eb2('0x20'),auth[_0x3eb2('0xd')](),controller['addAgents']);router['put']('/:id',auth[_0x3eb2('0xd')](),controller['update']);router[_0x3eb2('0x41')](_0x3eb2('0x42'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x43')]);router[_0x3eb2('0x41')](_0x3eb2('0x24'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x44')]);router[_0x3eb2('0x41')](_0x3eb2('0x11'),auth[_0x3eb2('0xd')](),controller[_0x3eb2('0x45')]);router[_0x3eb2('0x41')](_0x3eb2('0x20'),auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 7b3deed..91e7cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd1f=['../config/environment','Router','env','app','get','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','isAuthenticated','exports','beaver-logger/server','express','../components/auth/service'];(function(_0x5af59e,_0x3771c1){var _0x4240df=function(_0x2267fd){while(--_0x2267fd){_0x5af59e['push'](_0x5af59e['shift']());}};_0x4240df(++_0x3771c1);}(_0xcd1f,0x1a1));var _0xfcd1=function(_0x347692,_0x5dfa9d){_0x347692=_0x347692-0x0;var _0x2e7b35=_0xcd1f[_0x347692];return _0x2e7b35;};var beaverLogger=require(_0xfcd1('0x0'));var express=require(_0xfcd1('0x1'));var auth=require(_0xfcd1('0x2'));var config=require(_0xfcd1('0x3'));var router=express[_0xfcd1('0x4')]();var isProduction=config[_0xfcd1('0x5')]==='production'||![];function clientSideLogs(_0x268573,_0x58b14b,_0x453844){var _0x574812=_0x268573[_0xfcd1('0x6')][_0xfcd1('0x7')]('client-side-logger');if(!_0x574812){throw new Error(_0xfcd1('0x8'));}return beaverLogger[_0xfcd1('0x9')]({'uri':_0xfcd1('0xa'),'logger':_0x574812,'enableCors':!isProduction})(_0x268573,_0x58b14b,_0x453844);}router[_0xfcd1('0xb')](auth[_0xfcd1('0xc')](),clientSideLogs);module[_0xfcd1('0xd')]=router;
\ No newline at end of file
+var _0xf2f8=['Router','env','production','app','get','client-side-logger','expressEndpoint','exports','express','../config/environment'];(function(_0x2d63db,_0x1b0e6d){var _0x4482ad=function(_0x30b2d9){while(--_0x30b2d9){_0x2d63db['push'](_0x2d63db['shift']());}};_0x4482ad(++_0x1b0e6d);}(_0xf2f8,0x8a));var _0x8f2f=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0xf2f8[_0xd1d19a];return _0x52a79d;};var beaverLogger=require('beaver-logger/server');var express=require(_0x8f2f('0x0'));var auth=require('../components/auth/service');var config=require(_0x8f2f('0x1'));var router=express[_0x8f2f('0x2')]();var isProduction=config[_0x8f2f('0x3')]===_0x8f2f('0x4')||![];function clientSideLogs(_0x289535,_0x6bcc83,_0x536214){var _0xe32be7=_0x289535[_0x8f2f('0x5')][_0x8f2f('0x6')](_0x8f2f('0x7'));if(!_0xe32be7){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0x8f2f('0x8')]({'uri':'/client-logs','logger':_0xe32be7,'enableCors':!isProduction})(_0x289535,_0x6bcc83,_0x536214);}router['use'](auth['isAuthenticated'](),clientSideLogs);module[_0x8f2f('0x9')]=router;
\ No newline at end of file
index 19693b6..0e1d7a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf609=['Google','MicrosoftAzure','Outlook365','Dynamics365','STRING','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','ENUM','AmazonAWS'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf609,0x1dc));var _0x9f60=function(_0x2eb7a1,_0x1209fc){_0x2eb7a1=_0x2eb7a1-0x0;var _0x11fdd2=_0xf609[_0x2eb7a1];return _0x11fdd2;};'use strict';var Sequelize=require(_0x9f60('0x0'));module[_0x9f60('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x9f60('0x2')](_0x9f60('0x3'),_0x9f60('0x4'),_0x9f60('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x9f60('0x2')](_0x9f60('0x6'),_0x9f60('0x7'))},'data1':{'type':Sequelize[_0x9f60('0x8')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize['STRING'],'comment':_0x9f60('0x9')},'data3':{'type':Sequelize[_0x9f60('0x8')],'comment':_0x9f60('0xa')},'data4':{'type':Sequelize[_0x9f60('0x8')],'comment':_0x9f60('0xb')},'data5':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xd')},'data6':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xe')},'data7':{'type':Sequelize[_0x9f60('0xc')],'comment':_0x9f60('0xf')}};
\ No newline at end of file
+var _0x454a=['ENUM','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id','STRING','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','TEXT','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','Google','MicrosoftAzure'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x454a,0x1cc));var _0xa454=function(_0xfcaa43,_0x809ae8){_0xfcaa43=_0xfcaa43-0x0;var _0x42cd09=_0x454a[_0xfcaa43];return _0x42cd09;};'use strict';var Sequelize=require(_0xa454('0x0'));module[_0xa454('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0xa454('0x2'),_0xa454('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xa454('0x4')](_0xa454('0x5'),_0xa454('0x6'))},'data1':{'type':Sequelize['STRING'],'comment':_0xa454('0x7')},'data2':{'type':Sequelize[_0xa454('0x8')],'comment':_0xa454('0x9')},'data3':{'type':Sequelize[_0xa454('0x8')],'comment':_0xa454('0xa')},'data4':{'type':Sequelize[_0xa454('0x8')],'comment':_0xa454('0xb')},'data5':{'type':Sequelize['TEXT'],'comment':_0xa454('0xc')},'data6':{'type':Sequelize['TEXT'],'comment':_0xa454('0xd')},'data7':{'type':Sequelize[_0xa454('0xe')],'comment':_0xa454('0xf')}};
\ No newline at end of file
index 9b16e90..3c66364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd98=['Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/logger','api','./cloudProvider.oauth','defaults','redis','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','name','send','padEnd','slice','index','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','CloudProvider','includeAll','include','findAll','rows','service','MicrosoftAzure','data3','catch','show','params','rawAttributes','decryptString','create','Name\x20parameter\x20not\x20specified','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','user','get','state','Invalid\x20state\x20parameter','from','base64','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','code','data5','data6','refresh_token','startRefreshInterval','microsoftAuthorization:success','emit','Invalid\x20authentication\x20state\x20parameter','message'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xfd98,0xc1));var _0x8fd9=function(_0x425ea3,_0x26b830){_0x425ea3=_0x425ea3-0x0;var _0x54f159=_0xfd98[_0x425ea3];return _0x54f159;};'use strict';var _=require(_0x8fd9('0x0'));var Redis=require(_0x8fd9('0x1'));var qs=require(_0x8fd9('0x2'));var encryptor=require(_0x8fd9('0x3'));var config=require('../../config/environment');var logger=require(_0x8fd9('0x4'))(_0x8fd9('0x5'));var db=require('../../mysqldb')['db'];var oauth=require(_0x8fd9('0x6'));config['redis']=_[_0x8fd9('0x7')](config[_0x8fd9('0x8')],{'host':_0x8fd9('0x9'),'port':0x18eb});var socket=require(_0x8fd9('0xa'))(new Redis(config[_0x8fd9('0x8')]));var redis=new Redis(config[_0x8fd9('0x8')]);function respondWithStatusCode(_0x284ac5,_0x164bb3){_0x164bb3=_0x164bb3||0xcc;return function(_0x1022a3){if(_0x1022a3){return _0x284ac5[_0x8fd9('0xb')](_0x164bb3);}return _0x284ac5[_0x8fd9('0xc')](_0x164bb3)[_0x8fd9('0xd')]();};}function respondWithResult(_0x4dba5d,_0x34f59d){_0x34f59d=_0x34f59d||0xc8;return function(_0x587980){if(_0x587980){return _0x4dba5d['status'](_0x34f59d)[_0x8fd9('0xe')](_0x587980);}};}function respondWithFilteredResult(_0xc4a96d,_0x4b93c3){return function(_0x2279cb){if(_0x2279cb){var _0x5ee54a=typeof _0x4b93c3[_0x8fd9('0xf')]===_0x8fd9('0x10')&&typeof _0x4b93c3[_0x8fd9('0x11')]==='undefined';var _0x10ad8e=_0x2279cb[_0x8fd9('0x12')];var _0xd6d95c=_0x5ee54a?0x0:_0x4b93c3[_0x8fd9('0xf')];var _0x10e61b=_0x5ee54a?_0x2279cb[_0x8fd9('0x12')]:_0x4b93c3[_0x8fd9('0xf')]+_0x4b93c3[_0x8fd9('0x11')];var _0x2c9b21;if(_0x10e61b>=_0x10ad8e){_0x10e61b=_0x10ad8e;_0x2c9b21=0xc8;}else{_0x2c9b21=0xce;}_0xc4a96d[_0x8fd9('0xc')](_0x2c9b21);return _0xc4a96d[_0x8fd9('0x13')](_0x8fd9('0x14'),_0xd6d95c+'-'+_0x10e61b+'/'+_0x10ad8e)[_0x8fd9('0xe')](_0x2279cb);}return null;};}function saveUpdates(_0x11fb66){return function(_0x1118b8){if(_0x1118b8){return _0x1118b8[_0x8fd9('0x15')](_0x11fb66)['then'](function(_0x1f942d){return _0x1f942d;});}return null;};}function removeEntity(_0x218d92){return function(_0x53ab14){if(_0x53ab14){return _0x53ab14[_0x8fd9('0x16')]()[_0x8fd9('0x17')](function(){_0x218d92[_0x8fd9('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1186a4){return function(_0x5a2641){if(!_0x5a2641){_0x1186a4[_0x8fd9('0xb')](0x194);}return _0x5a2641;};}function handleError(_0x34a616,_0xa194f8){_0xa194f8=_0xa194f8||0x1f4;return function(_0x1e8f1d){logger[_0x8fd9('0x18')](_0x1e8f1d['stack']);if(_0x1e8f1d[_0x8fd9('0x19')]){delete _0x1e8f1d[_0x8fd9('0x19')];}_0x34a616[_0x8fd9('0xc')](_0xa194f8)[_0x8fd9('0x1a')](_0x1e8f1d);};}function maskClientSecret(_0x1872f5){return _[_0x8fd9('0x1b')](_0x1872f5[_0x8fd9('0x1c')](0x0,0x3),0x14,'*');}exports[_0x8fd9('0x1d')]=function(_0x96c39f,_0x3c8d95){var _0x1d0dcc={},_0x1ade1d={},_0x2241aa={'count':0x0,'rows':[]};var _0x1b923e=_['map'](db['CloudProvider']['rawAttributes'],function(_0x2fee11){return{'name':_0x2fee11[_0x8fd9('0x1e')],'type':_0x2fee11[_0x8fd9('0x1f')][_0x8fd9('0x20')]};});_0x1ade1d[_0x8fd9('0x21')]=_[_0x8fd9('0x22')](_0x1b923e,_0x8fd9('0x19'));_0x1ade1d[_0x8fd9('0x23')]=_[_0x8fd9('0x24')](_0x96c39f[_0x8fd9('0x23')]);_0x1ade1d['filters']=_[_0x8fd9('0x25')](_0x1ade1d[_0x8fd9('0x21')],_0x1ade1d[_0x8fd9('0x23')]);_0x1d0dcc['attributes']=_[_0x8fd9('0x25')](_0x1ade1d[_0x8fd9('0x21')],qs[_0x8fd9('0x26')](_0x96c39f[_0x8fd9('0x23')]['fields']));_0x1d0dcc[_0x8fd9('0x27')]=_0x1d0dcc[_0x8fd9('0x27')][_0x8fd9('0x28')]?_0x1d0dcc['attributes']:_0x1ade1d[_0x8fd9('0x21')];if(!_0x96c39f[_0x8fd9('0x23')]['hasOwnProperty'](_0x8fd9('0x29'))){_0x1d0dcc[_0x8fd9('0x11')]=qs[_0x8fd9('0x11')](_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x11')]);_0x1d0dcc[_0x8fd9('0xf')]=qs[_0x8fd9('0xf')](_0x96c39f['query'][_0x8fd9('0xf')]);}_0x1d0dcc[_0x8fd9('0x2a')]=qs[_0x8fd9('0x2b')](_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x2b')]);_0x1d0dcc[_0x8fd9('0x2c')]=qs[_0x8fd9('0x2d')](_[_0x8fd9('0x2e')](_0x96c39f[_0x8fd9('0x23')],_0x1ade1d['filters']),_0x1b923e);if(_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x2f')]){_0x1d0dcc['where']=_[_0x8fd9('0x30')](_0x1d0dcc[_0x8fd9('0x2c')],{'$or':_[_0x8fd9('0x22')](_0x1b923e,function(_0x181894){if(_0x181894['type']!==_0x8fd9('0x31')){var _0x1e7e06={};_0x1e7e06[_0x181894[_0x8fd9('0x19')]]={'$like':'%'+_0x96c39f[_0x8fd9('0x23')]['filter']+'%'};return _0x1e7e06;}})});}_0x1d0dcc=_['merge']({},_0x1d0dcc,_0x96c39f[_0x8fd9('0x32')]);var _0x37e2cc={'where':_0x1d0dcc[_0x8fd9('0x2c')]};return db[_0x8fd9('0x33')]['count'](_0x37e2cc)[_0x8fd9('0x17')](function(_0x30c6b5){_0x2241aa['count']=_0x30c6b5;if(_0x96c39f[_0x8fd9('0x23')][_0x8fd9('0x34')]){_0x1d0dcc[_0x8fd9('0x35')]=[{'all':!![]}];}return db['CloudProvider'][_0x8fd9('0x36')](_0x1d0dcc);})[_0x8fd9('0x17')](function(_0x4bc1eb){_0x2241aa[_0x8fd9('0x37')]=_[_0x8fd9('0x22')](_0x4bc1eb,function(_0x50e31c){if(_0x50e31c[_0x8fd9('0x38')]===_0x8fd9('0x39')){var _0x836d17=encryptor['decryptString'](_0x50e31c[_0x8fd9('0x3a')]);_0x50e31c[_0x8fd9('0x3a')]=maskClientSecret(_0x836d17);}return _0x50e31c;});return _0x2241aa;})[_0x8fd9('0x17')](respondWithFilteredResult(_0x3c8d95,_0x1d0dcc))[_0x8fd9('0x3b')](handleError(_0x3c8d95,null));};exports[_0x8fd9('0x3c')]=function(_0x505b40,_0x18fdca){var _0x4413a9={'raw':!![],'where':{'id':_0x505b40[_0x8fd9('0x3d')]['id']}},_0x529a9c={};_0x529a9c['model']=_[_0x8fd9('0x24')](db[_0x8fd9('0x33')][_0x8fd9('0x3e')]);_0x529a9c[_0x8fd9('0x23')]=_['keys'](_0x505b40['query']);_0x529a9c[_0x8fd9('0x2d')]=_[_0x8fd9('0x25')](_0x529a9c[_0x8fd9('0x21')],_0x529a9c[_0x8fd9('0x23')]);_0x4413a9['attributes']=_[_0x8fd9('0x25')](_0x529a9c[_0x8fd9('0x21')],qs['fields'](_0x505b40['query'][_0x8fd9('0x26')]));_0x4413a9[_0x8fd9('0x27')]=_0x4413a9[_0x8fd9('0x27')][_0x8fd9('0x28')]?_0x4413a9[_0x8fd9('0x27')]:_0x529a9c[_0x8fd9('0x21')];if(_0x505b40['query'][_0x8fd9('0x34')]){_0x4413a9['include']=[{'all':!![]}];}_0x4413a9=_[_0x8fd9('0x30')]({},_0x4413a9,_0x505b40[_0x8fd9('0x32')]);return db[_0x8fd9('0x33')]['find'](_0x4413a9)[_0x8fd9('0x17')](handleEntityNotFound(_0x18fdca,null))[_0x8fd9('0x17')](function(_0x226ea2){if(_0x226ea2['service']===_0x8fd9('0x39')){var _0x10385d=encryptor[_0x8fd9('0x3f')](_0x226ea2[_0x8fd9('0x3a')]);_0x226ea2[_0x8fd9('0x3a')]=maskClientSecret(_0x10385d);}return _0x226ea2;})[_0x8fd9('0x17')](respondWithResult(_0x18fdca,null))[_0x8fd9('0x3b')](handleError(_0x18fdca,null));};exports[_0x8fd9('0x40')]=function(_0x1f259e,_0xb74d0f){if(!_0x1f259e['body']['name'])throw new Error(_0x8fd9('0x41'));if(!_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x38')])throw new Error(_0x8fd9('0x43'));var _0x58c4d9=db[_0x8fd9('0x33')]['rawAttributes'][_0x8fd9('0x38')][_0x8fd9('0x44')];if(!_0x58c4d9[_0x8fd9('0x45')](_0x1f259e[_0x8fd9('0x42')]['service']))throw new Error(_0x8fd9('0x46')+_0x58c4d9['join'](',\x20'));if(_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x38')]==='MicrosoftAzure'&&_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x3a')]){_0x1f259e[_0x8fd9('0x42')]['data3']=encryptor['encryptString'](_0x1f259e[_0x8fd9('0x42')][_0x8fd9('0x3a')]);}return db['CloudProvider']['create'](_0x1f259e[_0x8fd9('0x42')],{})[_0x8fd9('0x17')](respondWithResult(_0xb74d0f,0xc9))[_0x8fd9('0x3b')](handleError(_0xb74d0f,null));};exports[_0x8fd9('0x15')]=function(_0x592c7a,_0x19fbf5){if(_0x592c7a['body']['id']){delete _0x592c7a[_0x8fd9('0x42')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0x592c7a[_0x8fd9('0x3d')]['id']}})[_0x8fd9('0x17')](handleEntityNotFound(_0x19fbf5,null))[_0x8fd9('0x17')](function(_0x2d7ede){if(_0x2d7ede['service']==='MicrosoftAzure'&&_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]){_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]=encryptor[_0x8fd9('0x47')](_0x592c7a[_0x8fd9('0x42')][_0x8fd9('0x3a')]);}return _0x2d7ede;})['then'](saveUpdates(_0x592c7a['body'],null))[_0x8fd9('0x17')](respondWithResult(_0x19fbf5,null))[_0x8fd9('0x3b')](handleError(_0x19fbf5,null));};exports[_0x8fd9('0x16')]=function(_0x332a20,_0x4510ae){return db[_0x8fd9('0x33')]['find']({'where':{'id':_0x332a20['params']['id']}})[_0x8fd9('0x17')](handleEntityNotFound(_0x4510ae,null))[_0x8fd9('0x17')](removeEntity(_0x4510ae,null))[_0x8fd9('0x3b')](handleError(_0x4510ae,null));};exports[_0x8fd9('0x48')]=function(_0x5e3953,_0x116129){return db[_0x8fd9('0x33')][_0x8fd9('0x49')]({'where':{'id':_0x5e3953[_0x8fd9('0x3d')]['id']},'raw':!![]})['then'](function(_0x4de2ea){if(!_0x4de2ea)return _0x116129[_0x8fd9('0xb')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x4de2ea,_0x5e3953[_0x8fd9('0x4a')]['id'])};})['then'](respondWithResult(_0x116129,null))[_0x8fd9('0x3b')](handleError(_0x116129,null));};exports['oauth2MicrosoftCallback']=function(_0x85bfdc,_0xb57d40){var _0x5a3ec6=_0x85bfdc[_0x8fd9('0x42')];var _0x2016cb;var _0x491ed4;if(_0x5a3ec6[_0x8fd9('0x18')])throw _0x5a3ec6;redis[_0x8fd9('0x4b')](_0x5a3ec6[_0x8fd9('0x4c')])[_0x8fd9('0x17')](function(_0x35caf4){if(!_0x35caf4)throw new Error(_0x8fd9('0x4d'));_0x2016cb=JSON['parse'](_0x35caf4);var _0x4b025a=Buffer[_0x8fd9('0x4e')](_0x5a3ec6[_0x8fd9('0x4c')],_0x8fd9('0x4f'))['toString'](_0x8fd9('0x50'));_0x491ed4=JSON['parse'](_0x4b025a);if(!oauth[_0x8fd9('0x51')](_0x5a3ec6[_0x8fd9('0x52')],_0x2016cb[_0x8fd9('0x53')]))throw new Error(_0x8fd9('0x54'));redis[_0x8fd9('0x55')](_0x5a3ec6[_0x8fd9('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0x5a3ec6[_0x8fd9('0x56')],_0x2016cb);})[_0x8fd9('0x17')](function(_0x64e5d4){_0x2016cb[_0x8fd9('0x57')]=_0x64e5d4['access_token'];_0x2016cb[_0x8fd9('0x58')]=_0x64e5d4[_0x8fd9('0x59')];return db[_0x8fd9('0x33')][_0x8fd9('0x15')]({'data5':_0x2016cb['data5'],'data6':_0x2016cb['data6']},{'where':{'id':_0x2016cb['id']}});})[_0x8fd9('0x17')](function(){oauth[_0x8fd9('0x5a')](_0x2016cb);socket['emit'](_0x8fd9('0x5b'),{'id':_0x491ed4['id']});return;})[_0x8fd9('0x17')](respondWithStatusCode(_0xb57d40,null))[_0x8fd9('0x3b')](function(_0x5e93c0){if(_0x491ed4){socket[_0x8fd9('0x5c')]('microsoftAuthorization:error',{'id':_0x491ed4['id']});}if(!_0x2016cb){logger['error'](_0x8fd9('0x5d'),_0x5e93c0);return _0xb57d40[_0x8fd9('0xc')](0x1f4)[_0x8fd9('0x1a')](_0x5e93c0[_0x8fd9('0x5e')]);}logger[_0x8fd9('0x18')](_0x8fd9('0x5f'),_0x2016cb['id'],JSON['stringify'](_0x5e93c0));});};
\ No newline at end of file
+var _0xd063=['../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','padEnd','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','service','decryptString','data3','show','intersection','options','find','create','body','Service\x20parameter\x20not\x20specified','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','MicrosoftAzure','encryptString','params','catch','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','state','Invalid\x20state\x20parameter','from','base64','toString','ascii','parse','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger'];(function(_0x4c07eb,_0x268d0e){var _0x3981ae=function(_0x4544a1){while(--_0x4544a1){_0x4c07eb['push'](_0x4c07eb['shift']());}};_0x3981ae(++_0x268d0e);}(_0xd063,0x1cd));var _0x3d06=function(_0x525825,_0x221895){_0x525825=_0x525825-0x0;var _0x6ae2e3=_0xd063[_0x525825];return _0x6ae2e3;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0x3d06('0x0'));var encryptor=require(_0x3d06('0x1'));var config=require(_0x3d06('0x2'));var logger=require(_0x3d06('0x3'))('api');var db=require(_0x3d06('0x4'))['db'];var oauth=require(_0x3d06('0x5'));config[_0x3d06('0x6')]=_[_0x3d06('0x7')](config[_0x3d06('0x6')],{'host':_0x3d06('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var redis=new Redis(config[_0x3d06('0x6')]);function respondWithStatusCode(_0x38dfb7,_0x184033){_0x184033=_0x184033||0xcc;return function(_0x6a023f){if(_0x6a023f){return _0x38dfb7[_0x3d06('0x9')](_0x184033);}return _0x38dfb7[_0x3d06('0xa')](_0x184033)[_0x3d06('0xb')]();};}function respondWithResult(_0x426067,_0x4de939){_0x4de939=_0x4de939||0xc8;return function(_0x65e616){if(_0x65e616){return _0x426067[_0x3d06('0xa')](_0x4de939)['json'](_0x65e616);}};}function respondWithFilteredResult(_0x242d9d,_0x42f4a3){return function(_0x1d45cb){if(_0x1d45cb){var _0x293af3=typeof _0x42f4a3[_0x3d06('0xc')]===_0x3d06('0xd')&&typeof _0x42f4a3[_0x3d06('0xe')]===_0x3d06('0xd');var _0x5577b8=_0x1d45cb[_0x3d06('0xf')];var _0x396c92=_0x293af3?0x0:_0x42f4a3[_0x3d06('0xc')];var _0x2a948e=_0x293af3?_0x1d45cb[_0x3d06('0xf')]:_0x42f4a3['offset']+_0x42f4a3['limit'];var _0x3f502a;if(_0x2a948e>=_0x5577b8){_0x2a948e=_0x5577b8;_0x3f502a=0xc8;}else{_0x3f502a=0xce;}_0x242d9d[_0x3d06('0xa')](_0x3f502a);return _0x242d9d[_0x3d06('0x10')](_0x3d06('0x11'),_0x396c92+'-'+_0x2a948e+'/'+_0x5577b8)[_0x3d06('0x12')](_0x1d45cb);}return null;};}function saveUpdates(_0x376a11){return function(_0x5d6819){if(_0x5d6819){return _0x5d6819[_0x3d06('0x13')](_0x376a11)[_0x3d06('0x14')](function(_0x4138d9){return _0x4138d9;});}return null;};}function removeEntity(_0xecb73b){return function(_0x1381cb){if(_0x1381cb){return _0x1381cb[_0x3d06('0x15')]()['then'](function(){_0xecb73b[_0x3d06('0xa')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34a987){return function(_0x51a801){if(!_0x51a801){_0x34a987['sendStatus'](0x194);}return _0x51a801;};}function handleError(_0x193d76,_0x365c88){_0x365c88=_0x365c88||0x1f4;return function(_0x2f54b6){logger[_0x3d06('0x16')](_0x2f54b6[_0x3d06('0x17')]);if(_0x2f54b6[_0x3d06('0x18')]){delete _0x2f54b6[_0x3d06('0x18')];}_0x193d76['status'](_0x365c88)[_0x3d06('0x19')](_0x2f54b6);};}function maskClientSecret(_0x381840){return _[_0x3d06('0x1a')](_0x381840['slice'](0x0,0x3),0x14,'*');}exports[_0x3d06('0x1b')]=function(_0x3fa793,_0x1702ae){var _0xdcbd2a={},_0x5ae364={},_0x3a1bb7={'count':0x0,'rows':[]};var _0x3f1d55=_[_0x3d06('0x1c')](db[_0x3d06('0x1d')][_0x3d06('0x1e')],function(_0x53e20c){return{'name':_0x53e20c[_0x3d06('0x1f')],'type':_0x53e20c[_0x3d06('0x20')][_0x3d06('0x21')]};});_0x5ae364[_0x3d06('0x22')]=_[_0x3d06('0x1c')](_0x3f1d55,_0x3d06('0x18'));_0x5ae364['query']=_[_0x3d06('0x23')](_0x3fa793[_0x3d06('0x24')]);_0x5ae364[_0x3d06('0x25')]=_['intersection'](_0x5ae364[_0x3d06('0x22')],_0x5ae364['query']);_0xdcbd2a[_0x3d06('0x26')]=_['intersection'](_0x5ae364[_0x3d06('0x22')],qs['fields'](_0x3fa793['query'][_0x3d06('0x27')]));_0xdcbd2a['attributes']=_0xdcbd2a[_0x3d06('0x26')][_0x3d06('0x28')]?_0xdcbd2a['attributes']:_0x5ae364[_0x3d06('0x22')];if(!_0x3fa793[_0x3d06('0x24')]['hasOwnProperty'](_0x3d06('0x29'))){_0xdcbd2a[_0x3d06('0xe')]=qs[_0x3d06('0xe')](_0x3fa793[_0x3d06('0x24')][_0x3d06('0xe')]);_0xdcbd2a[_0x3d06('0xc')]=qs[_0x3d06('0xc')](_0x3fa793[_0x3d06('0x24')][_0x3d06('0xc')]);}_0xdcbd2a[_0x3d06('0x2a')]=qs[_0x3d06('0x2b')](_0x3fa793[_0x3d06('0x24')][_0x3d06('0x2b')]);_0xdcbd2a['where']=qs['filters'](_['pick'](_0x3fa793[_0x3d06('0x24')],_0x5ae364['filters']),_0x3f1d55);if(_0x3fa793[_0x3d06('0x24')]['filter']){_0xdcbd2a[_0x3d06('0x2c')]=_[_0x3d06('0x2d')](_0xdcbd2a['where'],{'$or':_['map'](_0x3f1d55,function(_0x5cabe8){if(_0x5cabe8[_0x3d06('0x20')]!==_0x3d06('0x2e')){var _0x3c64bc={};_0x3c64bc[_0x5cabe8['name']]={'$like':'%'+_0x3fa793[_0x3d06('0x24')][_0x3d06('0x2f')]+'%'};return _0x3c64bc;}})});}_0xdcbd2a=_[_0x3d06('0x2d')]({},_0xdcbd2a,_0x3fa793['options']);var _0x1524ef={'where':_0xdcbd2a['where']};return db[_0x3d06('0x1d')][_0x3d06('0xf')](_0x1524ef)[_0x3d06('0x14')](function(_0x57a865){_0x3a1bb7[_0x3d06('0xf')]=_0x57a865;if(_0x3fa793[_0x3d06('0x24')][_0x3d06('0x30')]){_0xdcbd2a[_0x3d06('0x31')]=[{'all':!![]}];}return db[_0x3d06('0x1d')][_0x3d06('0x32')](_0xdcbd2a);})['then'](function(_0x292ccc){_0x3a1bb7[_0x3d06('0x33')]=_[_0x3d06('0x1c')](_0x292ccc,function(_0x1656f6){if(_0x1656f6[_0x3d06('0x34')]==='MicrosoftAzure'){var _0x35df9d=encryptor[_0x3d06('0x35')](_0x1656f6['data3']);_0x1656f6[_0x3d06('0x36')]=maskClientSecret(_0x35df9d);}return _0x1656f6;});return _0x3a1bb7;})['then'](respondWithFilteredResult(_0x1702ae,_0xdcbd2a))['catch'](handleError(_0x1702ae,null));};exports[_0x3d06('0x37')]=function(_0x4187f6,_0x10f2a8){var _0x400afd={'raw':!![],'where':{'id':_0x4187f6['params']['id']}},_0x14c0a9={};_0x14c0a9[_0x3d06('0x22')]=_[_0x3d06('0x23')](db['CloudProvider']['rawAttributes']);_0x14c0a9[_0x3d06('0x24')]=_[_0x3d06('0x23')](_0x4187f6[_0x3d06('0x24')]);_0x14c0a9['filters']=_[_0x3d06('0x38')](_0x14c0a9['model'],_0x14c0a9[_0x3d06('0x24')]);_0x400afd['attributes']=_[_0x3d06('0x38')](_0x14c0a9[_0x3d06('0x22')],qs[_0x3d06('0x27')](_0x4187f6[_0x3d06('0x24')][_0x3d06('0x27')]));_0x400afd[_0x3d06('0x26')]=_0x400afd[_0x3d06('0x26')][_0x3d06('0x28')]?_0x400afd[_0x3d06('0x26')]:_0x14c0a9[_0x3d06('0x22')];if(_0x4187f6[_0x3d06('0x24')]['includeAll']){_0x400afd[_0x3d06('0x31')]=[{'all':!![]}];}_0x400afd=_['merge']({},_0x400afd,_0x4187f6[_0x3d06('0x39')]);return db[_0x3d06('0x1d')][_0x3d06('0x3a')](_0x400afd)[_0x3d06('0x14')](handleEntityNotFound(_0x10f2a8,null))[_0x3d06('0x14')](function(_0x3e93b9){if(_0x3e93b9['service']==='MicrosoftAzure'){var _0x4043b4=encryptor[_0x3d06('0x35')](_0x3e93b9[_0x3d06('0x36')]);_0x3e93b9[_0x3d06('0x36')]=maskClientSecret(_0x4043b4);}return _0x3e93b9;})[_0x3d06('0x14')](respondWithResult(_0x10f2a8,null))['catch'](handleError(_0x10f2a8,null));};exports[_0x3d06('0x3b')]=function(_0x20a76a,_0x44a024){if(!_0x20a76a[_0x3d06('0x3c')]['name'])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x20a76a[_0x3d06('0x3c')][_0x3d06('0x34')])throw new Error(_0x3d06('0x3d'));var _0x111570=db['CloudProvider']['rawAttributes'][_0x3d06('0x34')]['values'];if(!_0x111570['includes'](_0x20a76a[_0x3d06('0x3c')][_0x3d06('0x34')]))throw new Error(_0x3d06('0x3e')+_0x111570[_0x3d06('0x3f')](',\x20'));if(_0x20a76a[_0x3d06('0x3c')][_0x3d06('0x34')]===_0x3d06('0x40')&&_0x20a76a['body'][_0x3d06('0x36')]){_0x20a76a[_0x3d06('0x3c')][_0x3d06('0x36')]=encryptor[_0x3d06('0x41')](_0x20a76a['body'][_0x3d06('0x36')]);}return db[_0x3d06('0x1d')][_0x3d06('0x3b')](_0x20a76a[_0x3d06('0x3c')],{})[_0x3d06('0x14')](respondWithResult(_0x44a024,0xc9))['catch'](handleError(_0x44a024,null));};exports[_0x3d06('0x13')]=function(_0x3fdd97,_0x44262f){if(_0x3fdd97['body']['id']){delete _0x3fdd97[_0x3d06('0x3c')]['id'];}return db[_0x3d06('0x1d')][_0x3d06('0x3a')]({'where':{'id':_0x3fdd97[_0x3d06('0x42')]['id']}})['then'](handleEntityNotFound(_0x44262f,null))[_0x3d06('0x14')](function(_0x4bdd5a){if(_0x4bdd5a[_0x3d06('0x34')]==='MicrosoftAzure'&&_0x3fdd97[_0x3d06('0x3c')][_0x3d06('0x36')]){_0x3fdd97[_0x3d06('0x3c')][_0x3d06('0x36')]=encryptor['encryptString'](_0x3fdd97[_0x3d06('0x3c')][_0x3d06('0x36')]);}return _0x4bdd5a;})[_0x3d06('0x14')](saveUpdates(_0x3fdd97[_0x3d06('0x3c')],null))['then'](respondWithResult(_0x44262f,null))[_0x3d06('0x43')](handleError(_0x44262f,null));};exports[_0x3d06('0x15')]=function(_0x5ef6b9,_0x30d805){return db[_0x3d06('0x1d')][_0x3d06('0x3a')]({'where':{'id':_0x5ef6b9[_0x3d06('0x42')]['id']}})[_0x3d06('0x14')](handleEntityNotFound(_0x30d805,null))[_0x3d06('0x14')](removeEntity(_0x30d805,null))[_0x3d06('0x43')](handleError(_0x30d805,null));};exports[_0x3d06('0x44')]=function(_0x187172,_0x2c2ff2){return db[_0x3d06('0x1d')][_0x3d06('0x45')]({'where':{'id':_0x187172[_0x3d06('0x42')]['id']},'raw':!![]})['then'](function(_0x50dea9){if(!_0x50dea9)return _0x2c2ff2[_0x3d06('0x9')](0x194);return{'url':oauth[_0x3d06('0x46')](_0x50dea9,_0x187172['user']['id'])};})['then'](respondWithResult(_0x2c2ff2,null))['catch'](handleError(_0x2c2ff2,null));};exports[_0x3d06('0x47')]=function(_0x2396e7,_0x4d2558){var _0x3fed21=_0x2396e7['body'];var _0x13c7ed;var _0x580b89;if(_0x3fed21[_0x3d06('0x16')])throw _0x3fed21;redis['get'](_0x3fed21[_0x3d06('0x48')])[_0x3d06('0x14')](function(_0x38f5d3){if(!_0x38f5d3)throw new Error(_0x3d06('0x49'));_0x13c7ed=JSON['parse'](_0x38f5d3);var _0x59db0d=Buffer[_0x3d06('0x4a')](_0x3fed21[_0x3d06('0x48')],_0x3d06('0x4b'))[_0x3d06('0x4c')](_0x3d06('0x4d'));_0x580b89=JSON[_0x3d06('0x4e')](_0x59db0d);if(!oauth[_0x3d06('0x4f')](_0x3fed21['id_token'],_0x13c7ed[_0x3d06('0x50')]))throw new Error(_0x3d06('0x51'));redis['del'](_0x3fed21[_0x3d06('0x48')]);return oauth[_0x3d06('0x52')](_0x3fed21[_0x3d06('0x53')],_0x13c7ed);})[_0x3d06('0x14')](function(_0x497937){_0x13c7ed[_0x3d06('0x54')]=_0x497937[_0x3d06('0x55')];_0x13c7ed[_0x3d06('0x56')]=_0x497937[_0x3d06('0x57')];return db[_0x3d06('0x1d')]['update']({'data5':_0x13c7ed[_0x3d06('0x54')],'data6':_0x13c7ed[_0x3d06('0x56')]},{'where':{'id':_0x13c7ed['id']}});})[_0x3d06('0x14')](function(){oauth['startRefreshInterval'](_0x13c7ed);socket[_0x3d06('0x58')]('microsoftAuthorization:success',{'id':_0x580b89['id']});return;})[_0x3d06('0x14')](respondWithStatusCode(_0x4d2558,null))[_0x3d06('0x43')](function(_0x33fc26){if(_0x580b89){socket[_0x3d06('0x58')](_0x3d06('0x59'),{'id':_0x580b89['id']});}if(!_0x13c7ed){logger['error']('Invalid\x20authentication\x20state\x20parameter',_0x33fc26);return _0x4d2558[_0x3d06('0xa')](0x1f4)[_0x3d06('0x19')](_0x33fc26[_0x3d06('0x5a')]);}logger['error'](_0x3d06('0x5b'),_0x13c7ed['id'],JSON[_0x3d06('0x5c')](_0x33fc26));});};
\ No newline at end of file
index aa47b29..fc5892a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd0a=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CloudProvider','cloud_providers'];(function(_0x3e9176,_0x50d1e3){var _0x2c583c=function(_0x47cb13){while(--_0x47cb13){_0x3e9176['push'](_0x3e9176['shift']());}};_0x2c583c(++_0x50d1e3);}(_0xcd0a,0x1e1));var _0xacd0=function(_0x18593c,_0x448b00){_0x18593c=_0x18593c-0x0;var _0x4f7799=_0xcd0a[_0x18593c];return _0x4f7799;};'use strict';var _=require(_0xacd0('0x0'));var util=require(_0xacd0('0x1'));var logger=require(_0xacd0('0x2'))(_0xacd0('0x3'));var moment=require('moment');var BPromise=require(_0xacd0('0x4'));var rp=require(_0xacd0('0x5'));var fs=require('fs');var path=require(_0xacd0('0x6'));var rimraf=require(_0xacd0('0x7'));var config=require(_0xacd0('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xacd0('0x9')]=function(_0x16989d,_0x219c82){return _0x16989d[_0xacd0('0xa')](_0xacd0('0xb'),attributes,{'tableName':_0xacd0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x143b=['moment','bluebird','request-promise','path','../../config/environment','define','CloudProvider','cloud_providers','lodash','util','../../config/logger'];(function(_0x540619,_0x3aa2f3){var _0x15df29=function(_0x98f8c4){while(--_0x98f8c4){_0x540619['push'](_0x540619['shift']());}};_0x15df29(++_0x3aa2f3);}(_0x143b,0xef));var _0xb143=function(_0x55f66d,_0x173efe){_0x55f66d=_0x55f66d-0x0;var _0x422b2a=_0x143b[_0x55f66d];return _0x422b2a;};'use strict';var _=require(_0xb143('0x0'));var util=require(_0xb143('0x1'));var logger=require(_0xb143('0x2'))('api');var moment=require(_0xb143('0x3'));var BPromise=require(_0xb143('0x4'));var rp=require(_0xb143('0x5'));var fs=require('fs');var path=require(_0xb143('0x6'));var rimraf=require('rimraf');var config=require(_0xb143('0x7'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x3b98a2,_0xea250e){return _0x3b98a2[_0xb143('0x8')](_0xb143('0x9'),attributes,{'tableName':_0xb143('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bdfc763..50fd7b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8939=['set','payload','iss','issuer','aud','isAfter','exp','data3','CloudProvider','findOne','data6','decryptString','POST','data5','access_token','refresh_token','update','catch','data4','intervals','bind','findAll','then','all','inspect','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','localhost','redis','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','/token','map','type','Dynamics365','push','data7','join','Outlook365','/.default','replace','{TENANT_ID}','data2','code','from','toString','base64','randomBytes','hex','client_id','data1','response_type','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','login','key','value','oauth2/'];(function(_0x35d918,_0x42ae2d){var _0x4230e5=function(_0x5dc85a){while(--_0x5dc85a){_0x35d918['push'](_0x35d918['shift']());}};_0x4230e5(++_0x42ae2d);}(_0x8939,0x152));var _0x9893=function(_0xe3cb68,_0x34361c){_0xe3cb68=_0xe3cb68-0x0;var _0x1ff65a=_0x8939[_0xe3cb68];return _0x1ff65a;};'use strict';var _=require(_0x9893('0x0'));var crypto=require('crypto');var jwt=require(_0x9893('0x1'));var moment=require(_0x9893('0x2'));var Redis=require(_0x9893('0x3'));var rp=require(_0x9893('0x4'));var util=require(_0x9893('0x5'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0x9893('0x6'))(_0x9893('0x7'));var schedule=require(_0x9893('0x8'));var db=require(_0x9893('0x9'))['db'];config['redis']=_[_0x9893('0xa')](config['redis'],{'host':_0x9893('0xb'),'port':0x18eb});var redis=new Redis(config[_0x9893('0xc')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0x9893('0xd'),_0x9893('0xe'),_0x9893('0xf'),_0x9893('0x10'),_0x9893('0x11'),_0x9893('0x12'),_0x9893('0x13')],'Dynamics365':[_0x9893('0xd'),_0x9893('0x10')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x9893('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x544e86){var _0x169be8=_[_0x9893('0x15')](AZURE_AUTH_SCOPES[_0x544e86['type']]);if(_0x544e86[_0x9893('0x16')]===_0x9893('0x17'))_0x169be8[_0x9893('0x18')](_0x544e86[_0x9893('0x19')]+'/.default');return _0x169be8[_0x9893('0x1a')]('\x20');}function getAccessTokenScope(_0x57cd38){if(_0x57cd38[_0x9893('0x16')]===_0x9893('0x1b'))return _0x9893('0x11');if(_0x57cd38[_0x9893('0x16')]==='Dynamics365')return _0x57cd38[_0x9893('0x19')]+_0x9893('0x1c');}function generateMicrosoftAuthorizationUrl(_0x1f3539,_0x582be0){var _0x43f3fc=MICROSOFT_AUTH_URL[_0x9893('0x1d')](_0x9893('0x1e'),_0x1f3539[_0x9893('0x1f')]);var _0x34b35c=[_0x9893('0x20'),'id_token'];var _0x375bbf=Buffer[_0x9893('0x21')](JSON['stringify']({'id':_0x582be0}))[_0x9893('0x22')](_0x9893('0x23'));var _0x3fe9e6=crypto[_0x9893('0x24')](0x10)['toString'](_0x9893('0x25'));var _0x2999c2=getAuthorizationScopes(_0x1f3539);var _0x24d673=[{'key':_0x9893('0x26'),'value':_0x1f3539[_0x9893('0x27')]},{'key':_0x9893('0x28'),'value':encodeURIComponent(_0x34b35c[_0x9893('0x1a')]('\x20'))},{'key':_0x9893('0x29'),'value':_0x1f3539['data4']},{'key':_0x9893('0x2a'),'value':_0x9893('0x2b')},{'key':_0x9893('0x2c'),'value':encodeURIComponent(_0x2999c2)},{'key':_0x9893('0x2d'),'value':_0x375bbf},{'key':_0x9893('0x2e'),'value':_0x3fe9e6},{'key':_0x9893('0x2f'),'value':_0x9893('0x30')}];var _0xa8d0a3=_0x43f3fc+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x9893('0x15')](_0x24d673,function(_0x77e4bb){return _0x77e4bb[_0x9893('0x31')]+'='+_0x77e4bb[_0x9893('0x32')];})[_0x9893('0x1a')]('&');_0x1f3539['oauth2Claims']={'issuer':_0x43f3fc['replace'](_0x9893('0x33'),''),'audience':_0x1f3539['data1'],'state':_0x375bbf,'nonce':_0x3fe9e6};redis[_0x9893('0x34')](_0x375bbf,JSON['stringify'](_0x1f3539));return _0xa8d0a3;}function isValidIdToken(_0x32166e,_0x25d664){try{var _0x4f3737=jwt['decode'](_0x32166e,{'complete':!![]});var _0x248052=_0x4f3737[_0x9893('0x35')];if(_0x248052[_0x9893('0x36')]!==_0x25d664[_0x9893('0x37')])return![];if(_0x248052[_0x9893('0x38')]!==_0x25d664['audience'])return![];if(_0x248052[_0x9893('0x2e')]!==_0x25d664[_0x9893('0x2e')])return![];if(moment()[_0x9893('0x39')](moment['unix'](_0x248052[_0x9893('0x3a')])))return![];return!![];}catch(_0x1a3452){throw _0x1a3452;}}function refreshOauth2MicrosoftAccessToken(_0x3e7bf1){return Promise['resolve']()['then'](function(){if(_0x3e7bf1[_0x9893('0x3b')])return _0x3e7bf1;return db[_0x9893('0x3c')][_0x9893('0x3d')]({'where':{'id':_0x3e7bf1['id']},'raw':!![]});})['then'](function(_0x2bf167){var _0x1710d8={'grant_type':'refresh_token','refresh_token':_0x2bf167[_0x9893('0x3e')],'scope':getAccessTokenScope(_0x2bf167),'redirect_uri':_0x2bf167['data4'],'client_id':_0x2bf167[_0x9893('0x27')],'client_secret':encryptor[_0x9893('0x3f')](_0x2bf167['data3'])};var _0x45549a={'method':_0x9893('0x40'),'uri':MICROSOFT_AUTH_URL[_0x9893('0x1d')](_0x9893('0x1e'),_0x2bf167['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1710d8,'json':!![]};return rp(_0x45549a);})['then'](function(_0x1c2b6e){_0x3e7bf1[_0x9893('0x41')]=_0x1c2b6e[_0x9893('0x42')];_0x3e7bf1[_0x9893('0x3e')]=_0x1c2b6e[_0x9893('0x43')];return db[_0x9893('0x3c')][_0x9893('0x44')]({'data5':_0x3e7bf1[_0x9893('0x41')],'data6':_0x3e7bf1[_0x9893('0x3e')]},{'where':{'id':_0x3e7bf1['id']}});})['then'](function(){return _0x3e7bf1;})[_0x9893('0x45')](function(_0x31b5ea){logger['error']('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x3e7bf1['id'],_0x31b5ea);});}function getOauth2MicrosoftAccessToken(_0x1ab399,_0x3111bc){var _0x1632ef={'grant_type':'authorization_code','code':_0x1ab399,'scope':getAccessTokenScope(_0x3111bc),'redirect_uri':_0x3111bc[_0x9893('0x46')],'client_id':_0x3111bc[_0x9893('0x27')],'client_secret':encryptor[_0x9893('0x3f')](_0x3111bc[_0x9893('0x3b')])};var _0x892be9={'method':_0x9893('0x40'),'uri':MICROSOFT_AUTH_URL['replace'](_0x9893('0x1e'),_0x3111bc[_0x9893('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1632ef,'json':!![]};return rp(_0x892be9);}function startRefreshInterval(_0x50ae67){var _0x50dc85=schedule[_0x9893('0x47')];if(_0x50dc85[_0x50ae67['id']])clearInterval(_0x50dc85[_0x50ae67['id']]);_0x50dc85[_0x50ae67['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x9893('0x48')](this,{'id':_0x50ae67['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x9893('0x47')]=_0x50dc85;}function startAllRefreshIntervals(){return db[_0x9893('0x3c')][_0x9893('0x49')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x9893('0x4a')](function(_0x30fb01){var _0x4e2c08=_0x30fb01[_0x9893('0x15')](function(_0x44b5c1){return refreshOauth2MicrosoftAccessToken(_0x44b5c1)['then'](function(_0x4bd274){startRefreshInterval(_0x4bd274);});});return Promise[_0x9893('0x4b')](_0x4e2c08);})[_0x9893('0x45')](function(_0x2160ff){var _0x3f96b6=_0x2160ff?util[_0x9893('0x4c')](_0x2160ff,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x3f96b6);});}module[_0x9893('0x4d')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x86c7=['moment','ioredis','request-promise','util','../../config/environment','api','../../mysqldb','defaults','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','/authorize','map','type','Dynamics365','push','/.default','join','Outlook365','replace','{TENANT_ID}','data2','id_token','from','stringify','toString','base64','redirect_uri','data4','response_mode','form_post','state','nonce','prompt','login','key','oauth2Claims','set','decode','iss','unix','exp','then','data3','CloudProvider','findOne','refresh_token','data6','decryptString','POST','data5','access_token','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','data1','intervals','findAll','all','inspect','lodash','crypto','jsonwebtoken'];(function(_0x176329,_0x568c84){var _0x31997c=function(_0x3d64df){while(--_0x3d64df){_0x176329['push'](_0x176329['shift']());}};_0x31997c(++_0x568c84);}(_0x86c7,0x1a7));var _0x786c=function(_0x46687a,_0x56c5a0){_0x46687a=_0x46687a-0x0;var _0x40081f=_0x86c7[_0x46687a];return _0x40081f;};'use strict';var _=require(_0x786c('0x0'));var crypto=require(_0x786c('0x1'));var jwt=require(_0x786c('0x2'));var moment=require(_0x786c('0x3'));var Redis=require(_0x786c('0x4'));var rp=require(_0x786c('0x5'));var util=require(_0x786c('0x6'));var encryptor=require('../../components/encryptor');var config=require(_0x786c('0x7'));var logger=require('../../config/logger')(_0x786c('0x8'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0x786c('0x9'))['db'];config['redis']=_[_0x786c('0xa')](config[_0x786c('0xb')],{'host':_0x786c('0xc'),'port':0x18eb});var redis=new Redis(config[_0x786c('0xb')]);var MICROSOFT_AUTH_URL=_0x786c('0xd');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0x786c('0xe'),_0x786c('0xf'),_0x786c('0x10'),_0x786c('0x11'),_0x786c('0x12'),_0x786c('0x13')],'Dynamics365':[_0x786c('0x14'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x786c('0x15');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0xf788fa){var _0xde9dd6=_[_0x786c('0x16')](AZURE_AUTH_SCOPES[_0xf788fa[_0x786c('0x17')]]);if(_0xf788fa['type']===_0x786c('0x18'))_0xde9dd6[_0x786c('0x19')](_0xf788fa['data7']+_0x786c('0x1a'));return _0xde9dd6[_0x786c('0x1b')]('\x20');}function getAccessTokenScope(_0x51cbfe){if(_0x51cbfe[_0x786c('0x17')]===_0x786c('0x1c'))return _0x786c('0x11');if(_0x51cbfe['type']===_0x786c('0x18'))return _0x51cbfe['data7']+'/.default';}function generateMicrosoftAuthorizationUrl(_0x40c7d3,_0x598248){var _0x3ca6d0=MICROSOFT_AUTH_URL[_0x786c('0x1d')](_0x786c('0x1e'),_0x40c7d3[_0x786c('0x1f')]);var _0x198fe5=['code',_0x786c('0x20')];var _0x21fde8=Buffer[_0x786c('0x21')](JSON[_0x786c('0x22')]({'id':_0x598248}))[_0x786c('0x23')](_0x786c('0x24'));var _0x314e4a=crypto['randomBytes'](0x10)['toString']('hex');var _0x2c8489=getAuthorizationScopes(_0x40c7d3);var _0xcfdc98=[{'key':'client_id','value':_0x40c7d3['data1']},{'key':'response_type','value':encodeURIComponent(_0x198fe5[_0x786c('0x1b')]('\x20'))},{'key':_0x786c('0x25'),'value':_0x40c7d3[_0x786c('0x26')]},{'key':_0x786c('0x27'),'value':_0x786c('0x28')},{'key':'scope','value':encodeURIComponent(_0x2c8489)},{'key':_0x786c('0x29'),'value':_0x21fde8},{'key':_0x786c('0x2a'),'value':_0x314e4a},{'key':_0x786c('0x2b'),'value':_0x786c('0x2c')}];var _0x483cf3=_0x3ca6d0+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x786c('0x16')](_0xcfdc98,function(_0xbde3c5){return _0xbde3c5[_0x786c('0x2d')]+'='+_0xbde3c5['value'];})['join']('&');_0x40c7d3[_0x786c('0x2e')]={'issuer':_0x3ca6d0[_0x786c('0x1d')]('oauth2/',''),'audience':_0x40c7d3['data1'],'state':_0x21fde8,'nonce':_0x314e4a};redis[_0x786c('0x2f')](_0x21fde8,JSON[_0x786c('0x22')](_0x40c7d3));return _0x483cf3;}function isValidIdToken(_0x5c300b,_0x37f7fc){try{var _0xeceebb=jwt[_0x786c('0x30')](_0x5c300b,{'complete':!![]});var _0x244615=_0xeceebb['payload'];if(_0x244615[_0x786c('0x31')]!==_0x37f7fc['issuer'])return![];if(_0x244615['aud']!==_0x37f7fc['audience'])return![];if(_0x244615[_0x786c('0x2a')]!==_0x37f7fc[_0x786c('0x2a')])return![];if(moment()['isAfter'](moment[_0x786c('0x32')](_0x244615[_0x786c('0x33')])))return![];return!![];}catch(_0x578bc1){throw _0x578bc1;}}function refreshOauth2MicrosoftAccessToken(_0x3a01f3){return Promise['resolve']()[_0x786c('0x34')](function(){if(_0x3a01f3[_0x786c('0x35')])return _0x3a01f3;return db[_0x786c('0x36')][_0x786c('0x37')]({'where':{'id':_0x3a01f3['id']},'raw':!![]});})['then'](function(_0x44c80d){var _0x4823ea={'grant_type':_0x786c('0x38'),'refresh_token':_0x44c80d[_0x786c('0x39')],'scope':getAccessTokenScope(_0x44c80d),'redirect_uri':_0x44c80d['data4'],'client_id':_0x44c80d['data1'],'client_secret':encryptor[_0x786c('0x3a')](_0x44c80d[_0x786c('0x35')])};var _0x372ecd={'method':_0x786c('0x3b'),'uri':MICROSOFT_AUTH_URL[_0x786c('0x1d')](_0x786c('0x1e'),_0x44c80d[_0x786c('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x4823ea,'json':!![]};return rp(_0x372ecd);})[_0x786c('0x34')](function(_0x5ac591){_0x3a01f3[_0x786c('0x3c')]=_0x5ac591[_0x786c('0x3d')];_0x3a01f3[_0x786c('0x39')]=_0x5ac591[_0x786c('0x38')];return db[_0x786c('0x36')]['update']({'data5':_0x3a01f3[_0x786c('0x3c')],'data6':_0x3a01f3[_0x786c('0x39')]},{'where':{'id':_0x3a01f3['id']}});})[_0x786c('0x34')](function(){return _0x3a01f3;})[_0x786c('0x3e')](function(_0x4615e8){logger[_0x786c('0x3f')](_0x786c('0x40'),_0x3a01f3['id'],_0x4615e8);});}function getOauth2MicrosoftAccessToken(_0x8e837e,_0x49dcc4){var _0x5874c3={'grant_type':_0x786c('0x41'),'code':_0x8e837e,'scope':getAccessTokenScope(_0x49dcc4),'redirect_uri':_0x49dcc4['data4'],'client_id':_0x49dcc4[_0x786c('0x42')],'client_secret':encryptor[_0x786c('0x3a')](_0x49dcc4['data3'])};var _0x303fff={'method':_0x786c('0x3b'),'uri':MICROSOFT_AUTH_URL[_0x786c('0x1d')](_0x786c('0x1e'),_0x49dcc4[_0x786c('0x1f')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x5874c3,'json':!![]};return rp(_0x303fff);}function startRefreshInterval(_0x184d5b){var _0x1534f2=schedule[_0x786c('0x43')];if(_0x1534f2[_0x184d5b['id']])clearInterval(_0x1534f2[_0x184d5b['id']]);_0x1534f2[_0x184d5b['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x184d5b['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x786c('0x43')]=_0x1534f2;}function startAllRefreshIntervals(){return db[_0x786c('0x36')][_0x786c('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x786c('0x34')](function(_0x316f68){var _0xf12de5=_0x316f68['map'](function(_0x4cab05){return refreshOauth2MicrosoftAccessToken(_0x4cab05)[_0x786c('0x34')](function(_0x73139){startRefreshInterval(_0x73139);});});return Promise[_0x786c('0x45')](_0xf12de5);})[_0x786c('0x3e')](function(_0x1ea8d0){var _0x5c41b3=_0x1ea8d0?util[_0x786c('0x46')](_0x1ea8d0,{'showHidden':![],'depth':null}):'';logger['error']('[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s',_0x5c41b3);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 29492ff..919c7ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c91=['client','http','request','then','CloudProvider,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0xcbe787,_0x401e4c){var _0x4c78fa=function(_0x392922){while(--_0x392922){_0xcbe787['push'](_0xcbe787['shift']());}};_0x4c78fa(++_0x401e4c);}(_0x3c91,0x1af));var _0x13c9=function(_0x1fa4f8,_0x16c215){_0x1fa4f8=_0x1fa4f8-0x0;var _0x5225c5=_0x3c91[_0x1fa4f8];return _0x5225c5;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c4332,_0x58b610,_0x44243f){return new BPromise(function(_0x196c2a,_0x5fd23){return client[_0x13c9('0xb')](_0x4c4332,_0x44243f)[_0x13c9('0xc')](function(_0x5370dd){logger['info'](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));logger['debug']('CloudProvider,\x20%s,\x20%s,\x20%s',_0x58b610,_0x13c9('0xe'),JSON[_0x13c9('0xf')](_0x5370dd));if(_0x5370dd[_0x13c9('0x10')]){if(_0x5370dd[_0x13c9('0x10')][_0x13c9('0x11')]===0x1f4){logger[_0x13c9('0x10')](_0x13c9('0xd'),_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x5fd23(_0x5370dd['error']['message']);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x196c2a(_0x5370dd[_0x13c9('0x10')]['message']);}else{logger[_0x13c9('0x13')](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));_0x196c2a(_0x5370dd[_0x13c9('0x14')][_0x13c9('0x12')]);}})[_0x13c9('0x15')](function(_0x238952){logger['error']('CloudProvider,\x20%s,\x20%s',_0x58b610,_0x238952);_0x5fd23(_0x238952);});});}
\ No newline at end of file
+var _0x97e6=['CloudProvider,\x20%s,\x20%s,\x20%s','error','message','info','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','CloudProvider,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x16289a,_0x33dfa5){var _0x2b891f=function(_0x5d556f){while(--_0x5d556f){_0x16289a['push'](_0x16289a['shift']());}};_0x2b891f(++_0x33dfa5);}(_0x97e6,0x159));var _0x697e=function(_0x580a59,_0x21266c){_0x580a59=_0x580a59-0x0;var _0x19da51=_0x97e6[_0x580a59];return _0x19da51;};'use strict';var _=require(_0x697e('0x0'));var util=require('util');var moment=require(_0x697e('0x1'));var BPromise=require(_0x697e('0x2'));var rs=require(_0x697e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x697e('0x4'))['db'];var utils=require(_0x697e('0x5'));var logger=require('../../config/logger')(_0x697e('0x6'));var config=require('../../config/environment');var jayson=require(_0x697e('0x7'));var client=jayson[_0x697e('0x8')][_0x697e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x546438,_0x371e2f,_0x21b9d5){return new BPromise(function(_0x4cf39f,_0x5670e3){return client[_0x697e('0xa')](_0x546438,_0x21b9d5)[_0x697e('0xb')](function(_0x2499f6){logger['info'](_0x697e('0xc'),_0x371e2f,_0x697e('0xd'));logger[_0x697e('0xe')](_0x697e('0xf'),_0x371e2f,_0x697e('0xd'),JSON['stringify'](_0x2499f6));if(_0x2499f6[_0x697e('0x10')]){if(_0x2499f6['error']['code']===0x1f4){logger[_0x697e('0x10')](_0x697e('0xc'),_0x371e2f,_0x2499f6[_0x697e('0x10')]['message']);return _0x5670e3(_0x2499f6[_0x697e('0x10')][_0x697e('0x11')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x371e2f,_0x2499f6[_0x697e('0x10')][_0x697e('0x11')]);return _0x4cf39f(_0x2499f6[_0x697e('0x10')][_0x697e('0x11')]);}else{logger[_0x697e('0x12')](_0x697e('0xc'),_0x371e2f,_0x697e('0xd'));_0x4cf39f(_0x2499f6[_0x697e('0x13')][_0x697e('0x11')]);}})['catch'](function(_0x316bdb){logger[_0x697e('0x10')]('CloudProvider,\x20%s,\x20%s',_0x371e2f,_0x316bdb);_0x5670e3(_0x316bdb);});});}
\ No newline at end of file
index d036e58..85a057c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['put','/:id','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','show','post','create'];(function(_0x352d3e,_0x1fea7a){var _0x4f9c74=function(_0x339ee0){while(--_0x339ee0){_0x352d3e['push'](_0x352d3e['shift']());}};_0x4f9c74(++_0x1fea7a);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xc4aa[_0x5f09c5];return _0x426ad9;};'use strict';var express=require(_0xac4a('0x0'));var router=express[_0xac4a('0x1')]();var auth=require(_0xac4a('0x2'));var controller=require(_0xac4a('0x3'));router[_0xac4a('0x4')]('/',auth[_0xac4a('0x5')](),controller['index']);router['get']('/:id',auth[_0xac4a('0x5')](),controller[_0xac4a('0x6')]);router[_0xac4a('0x7')]('/',auth[_0xac4a('0x5')](),controller[_0xac4a('0x8')]);router[_0xac4a('0x9')](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller['update']);router['delete'](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xb')]);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xd')]);router['post'](_0xac4a('0xe'),controller['oauth2MicrosoftCallback']);module[_0xac4a('0xf')]=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(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x7a54,0x106));var _0x47a5=function(_0x1fcf40,_0x4c3d5c){_0x1fcf40=_0x1fcf40-0x0;var _0x37a734=_0x7a54[_0x1fcf40];return _0x37a734;};'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 142c0a8..d4dc62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af6=['name','sequelize','exports','STRING'];(function(_0x197313,_0x4de907){var _0x5b90fd=function(_0x58b032){while(--_0x58b032){_0x197313['push'](_0x197313['shift']());}};_0x5b90fd(++_0x4de907);}(_0x9af6,0xb5));var _0x69af=function(_0xd4ef3,_0x47e660){_0xd4ef3=_0xd4ef3-0x0;var _0x5416a7=_0x9af6[_0xd4ef3];return _0x5416a7;};'use strict';var Sequelize=require(_0x69af('0x0'));module[_0x69af('0x1')]={'name':{'type':Sequelize[_0x69af('0x2')],'unique':_0x69af('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x69af('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x69af('0x2')]},'phone':{'type':Sequelize[_0x69af('0x2')]},'fax':{'type':Sequelize[_0x69af('0x2')]},'type':{'type':Sequelize[_0x69af('0x2')]},'street':{'type':Sequelize[_0x69af('0x2')]},'postalCode':{'type':Sequelize[_0x69af('0x2')]},'city':{'type':Sequelize[_0x69af('0x2')]},'country':{'type':Sequelize[_0x69af('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x69af('0x2')]},'sStreet':{'type':Sequelize[_0x69af('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x69af('0x2')]},'sCountry':{'type':Sequelize[_0x69af('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2216=['name','sequelize','exports','STRING'];(function(_0x236d24,_0x29e80a){var _0x1574cf=function(_0x5d1dad){while(--_0x5d1dad){_0x236d24['push'](_0x236d24['shift']());}};_0x1574cf(++_0x29e80a);}(_0x2216,0x1e1));var _0x6221=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x2216[_0x2b5eae];return _0x5f3ac9;};'use strict';var Sequelize=require(_0x6221('0x0'));module[_0x6221('0x1')]={'name':{'type':Sequelize[_0x6221('0x2')],'unique':_0x6221('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x6221('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x6221('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x6221('0x2')]},'street':{'type':Sequelize[_0x6221('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x6221('0x2')]},'country':{'type':Sequelize[_0x6221('0x2')]},'email':{'type':Sequelize[_0x6221('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x6221('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x6221('0x2')]},'sCountry':{'type':Sequelize[_0x6221('0x2')]},'description':{'type':Sequelize[_0x6221('0x2')]}};
\ No newline at end of file
index b9c24cb..8e3c074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7bd=['stack','name','send','index','CmCompany','describe','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','filter','where','merge','map','options','includeAll','include','rows','catch','rawAttributes','body','user','role','Companies','UserProfileSection','userProfileId','autoAssociation','create','find','params','addContacts','CmContact','ids','omit','getContacts','findOne','pick','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x5a6dc5,_0x4a7a46){var _0x2b6dcd=function(_0x207808){while(--_0x207808){_0x5a6dc5['push'](_0x5a6dc5['shift']());}};_0x2b6dcd(++_0x4a7a46);}(_0xd7bd,0x1ef));var _0xdd7b=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd7bd[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd7b('0x0'));var zipdir=require(_0xdd7b('0x1'));var jsonpatch=require(_0xdd7b('0x2'));var rp=require(_0xdd7b('0x3'));var moment=require('moment');var BPromise=require(_0xdd7b('0x4'));var Mustache=require('mustache');var util=require(_0xdd7b('0x5'));var path=require(_0xdd7b('0x6'));var sox=require(_0xdd7b('0x7'));var csv=require(_0xdd7b('0x8'));var ejs=require(_0xdd7b('0x9'));var fs=require('fs');var fs_extra=require(_0xdd7b('0xa'));var _=require(_0xdd7b('0xb'));var squel=require(_0xdd7b('0xc'));var crypto=require(_0xdd7b('0xd'));var jsforce=require(_0xdd7b('0xe'));var deskjs=require(_0xdd7b('0xf'));var toCsv=require(_0xdd7b('0x8'));var querystring=require('querystring');var Papa=require(_0xdd7b('0x10'));var Redis=require(_0xdd7b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdd7b('0x12'));var as=require(_0xdd7b('0x13'));var hardwareService=require(_0xdd7b('0x14'));var logger=require(_0xdd7b('0x15'))(_0xdd7b('0x16'));var utils=require(_0xdd7b('0x17'));var config=require(_0xdd7b('0x18'));var licenseUtil=require(_0xdd7b('0x19'));var db=require(_0xdd7b('0x1a'))['db'];function respondWithStatusCode(_0x3660ee,_0x6657ac){_0x6657ac=_0x6657ac||0xcc;return function(_0x594126){if(_0x594126){return _0x3660ee[_0xdd7b('0x1b')](_0x6657ac);}return _0x3660ee[_0xdd7b('0x1c')](_0x6657ac)[_0xdd7b('0x1d')]();};}function respondWithResult(_0x5e6d23,_0x31ad61){_0x31ad61=_0x31ad61||0xc8;return function(_0x237bd2){if(_0x237bd2){return _0x5e6d23[_0xdd7b('0x1c')](_0x31ad61)[_0xdd7b('0x1e')](_0x237bd2);}};}function respondWithFilteredResult(_0xcf8170,_0x54875b){return function(_0x21bc8f){if(_0x21bc8f){var _0xb04e1d=typeof _0x54875b[_0xdd7b('0x1f')]===_0xdd7b('0x20')&&typeof _0x54875b[_0xdd7b('0x21')]===_0xdd7b('0x20');var _0xf19f69=_0x21bc8f[_0xdd7b('0x22')];var _0x55c23e=_0xb04e1d?0x0:_0x54875b[_0xdd7b('0x1f')];var _0xe4078d=_0xb04e1d?_0x21bc8f[_0xdd7b('0x22')]:_0x54875b[_0xdd7b('0x1f')]+_0x54875b[_0xdd7b('0x21')];var _0x504c8d;if(_0xe4078d>=_0xf19f69){_0xe4078d=_0xf19f69;_0x504c8d=0xc8;}else{_0x504c8d=0xce;}_0xcf8170['status'](_0x504c8d);return _0xcf8170['set'](_0xdd7b('0x23'),_0x55c23e+'-'+_0xe4078d+'/'+_0xf19f69)[_0xdd7b('0x1e')](_0x21bc8f);}return null;};}function patchUpdates(_0x2969a2){return function(_0x3ab7c1){try{jsonpatch[_0xdd7b('0x24')](_0x3ab7c1,_0x2969a2,!![]);}catch(_0x29fa6c){return BPromise[_0xdd7b('0x25')](_0x29fa6c);}return _0x3ab7c1[_0xdd7b('0x26')]();};}function saveUpdates(_0xc11d7b,_0x22bbc7){return function(_0x46941c){if(_0x46941c){return _0x46941c[_0xdd7b('0x27')](_0xc11d7b)[_0xdd7b('0x28')](function(_0x278570){return _0x278570;});}return null;};}function removeEntity(_0x2f17a9,_0x1bd457){return function(_0x54a22d){if(_0x54a22d){return _0x54a22d[_0xdd7b('0x29')]()[_0xdd7b('0x28')](function(){var _0x5e7db7=_0x54a22d[_0xdd7b('0x2a')]({'plain':!![]});var _0x75f55f='Companies';return db[_0xdd7b('0x2b')]['destroy']({'where':{'type':_0x75f55f,'resourceId':_0x5e7db7['id']}})[_0xdd7b('0x28')](function(){return _0x54a22d;});})[_0xdd7b('0x28')](function(){_0x2f17a9[_0xdd7b('0x1c')](0xcc)[_0xdd7b('0x1d')]();});}};}function handleEntityNotFound(_0x3ebd8a,_0x2095c7){return function(_0x518203){if(!_0x518203){_0x3ebd8a[_0xdd7b('0x1b')](0x194);}return _0x518203;};}function handleError(_0x39f27f,_0x4b3fd5){_0x4b3fd5=_0x4b3fd5||0x1f4;return function(_0x114dcf){logger[_0xdd7b('0x2c')](_0x114dcf[_0xdd7b('0x2d')]);if(_0x114dcf[_0xdd7b('0x2e')]){delete _0x114dcf['name'];}_0x39f27f[_0xdd7b('0x1c')](_0x4b3fd5)[_0xdd7b('0x2f')](_0x114dcf);};}exports[_0xdd7b('0x30')]=function(_0x394dea,_0x20f1d0){var _0x302c81={},_0x5e4c67={},_0x1fc9ac={'count':0x0,'rows':[]};return db[_0xdd7b('0x31')][_0xdd7b('0x32')]()['then'](function(_0x26525c){_0x5e4c67[_0xdd7b('0x33')]=_[_0xdd7b('0x34')](_0x26525c);_0x5e4c67[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x394dea['query']);_0x5e4c67['filters']=_[_0xdd7b('0x36')](_0x5e4c67[_0xdd7b('0x33')],_0x5e4c67[_0xdd7b('0x35')]);_0x302c81[_0xdd7b('0x37')]=_['intersection'](_0x5e4c67['model'],qs['fields'](_0x394dea['query'][_0xdd7b('0x38')]));_0x302c81[_0xdd7b('0x37')]=_0x302c81[_0xdd7b('0x37')][_0xdd7b('0x39')]?_0x302c81[_0xdd7b('0x37')]:_0x5e4c67[_0xdd7b('0x33')];if(!_0x394dea['query'][_0xdd7b('0x3a')]('nolimit')){_0x302c81['limit']=qs[_0xdd7b('0x21')](_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x21')]);_0x302c81['offset']=qs[_0xdd7b('0x1f')](_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x1f')]);}_0x302c81[_0xdd7b('0x3b')]=qs[_0xdd7b('0x3c')](_0x394dea[_0xdd7b('0x35')]['sort']);_0x302c81['where']=qs['filters'](_['pick'](_0x394dea[_0xdd7b('0x35')],_0x5e4c67[_0xdd7b('0x3d')]),_0x26525c);if(_0x394dea[_0xdd7b('0x35')][_0xdd7b('0x3e')]){_0x302c81[_0xdd7b('0x3f')]=_[_0xdd7b('0x40')](_0x302c81['where'],{'$or':_[_0xdd7b('0x41')](_0x302c81['attributes'],function(_0x14d743){var _0x378944={};_0x378944[_0x14d743]={'$like':'%'+_0x394dea[_0xdd7b('0x35')]['filter']+'%'};return _0x378944;})});}_0x302c81=_['merge']({},_0x302c81,_0x394dea[_0xdd7b('0x42')]);var _0x30b7f7={'where':_0x302c81[_0xdd7b('0x3f')]};return db[_0xdd7b('0x31')][_0xdd7b('0x22')](_0x30b7f7)['then'](function(_0x50aa1c){_0x1fc9ac['count']=_0x50aa1c;if(_0x394dea['query'][_0xdd7b('0x43')]){_0x302c81[_0xdd7b('0x44')]=[{'all':!![]}];}return db[_0xdd7b('0x31')]['findAll'](_0x302c81);})[_0xdd7b('0x28')](function(_0x213c54){_0x1fc9ac[_0xdd7b('0x45')]=_0x213c54;return _0x1fc9ac;})[_0xdd7b('0x28')](respondWithFilteredResult(_0x20f1d0,_0x302c81))[_0xdd7b('0x46')](handleError(_0x20f1d0,null));})[_0xdd7b('0x46')](handleError(_0x20f1d0,null));};exports['show']=function(_0x5e9e20,_0x4cf31f){var _0xd3aa34={'raw':![],'where':{'id':_0x5e9e20['params']['id']}},_0x1d49e0={};_0x1d49e0[_0xdd7b('0x33')]=_['keys'](db[_0xdd7b('0x31')][_0xdd7b('0x47')]);_0x1d49e0[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x5e9e20[_0xdd7b('0x35')]);_0x1d49e0[_0xdd7b('0x3d')]=_[_0xdd7b('0x36')](_0x1d49e0[_0xdd7b('0x33')],_0x1d49e0['query']);_0xd3aa34[_0xdd7b('0x37')]=_[_0xdd7b('0x36')](_0x1d49e0[_0xdd7b('0x33')],qs[_0xdd7b('0x38')](_0x5e9e20[_0xdd7b('0x35')][_0xdd7b('0x38')]));_0xd3aa34[_0xdd7b('0x37')]=_0xd3aa34[_0xdd7b('0x37')]['length']?_0xd3aa34[_0xdd7b('0x37')]:_0x1d49e0[_0xdd7b('0x33')];if(_0x5e9e20['query']['includeAll']){_0xd3aa34[_0xdd7b('0x44')]=[{'all':!![]}];}_0xd3aa34=_[_0xdd7b('0x40')]({},_0xd3aa34,_0x5e9e20[_0xdd7b('0x42')]);return db[_0xdd7b('0x31')]['find'](_0xd3aa34)[_0xdd7b('0x28')](handleEntityNotFound(_0x4cf31f,null))['then'](respondWithResult(_0x4cf31f,null))['catch'](handleError(_0x4cf31f,null));};exports['create']=function(_0x1bb930,_0x482b55){return db['CmCompany']['create'](_0x1bb930[_0xdd7b('0x48')],{})[_0xdd7b('0x28')](function(_0x22700d){var _0x2f3e84=_0x1bb930[_0xdd7b('0x49')][_0xdd7b('0x2a')]({'plain':!![]});if(!_0x2f3e84)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f3e84[_0xdd7b('0x4a')]===_0xdd7b('0x49')){var _0x39197d=_0x22700d['get']({'plain':!![]});var _0x4b81ad=_0xdd7b('0x4b');return db[_0xdd7b('0x4c')]['find']({'where':{'name':_0x4b81ad,'userProfileId':_0x2f3e84[_0xdd7b('0x4d')]},'raw':!![]})[_0xdd7b('0x28')](function(_0x2cf947){if(_0x2cf947&&_0x2cf947[_0xdd7b('0x4e')]===0x0){return db[_0xdd7b('0x2b')][_0xdd7b('0x4f')]({'name':_0x39197d[_0xdd7b('0x2e')],'resourceId':_0x39197d['id'],'type':_0x2cf947[_0xdd7b('0x2e')],'sectionId':_0x2cf947['id']},{})['then'](function(){return _0x22700d;});}else{return _0x22700d;}})[_0xdd7b('0x46')](function(_0x1a3a3a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a3a3a);throw _0x1a3a3a;});}return _0x22700d;})[_0xdd7b('0x28')](respondWithResult(_0x482b55,0xc9))[_0xdd7b('0x46')](handleError(_0x482b55,null));};exports['update']=function(_0xb1c0cd,_0xc62641){if(_0xb1c0cd[_0xdd7b('0x48')]['id']){delete _0xb1c0cd[_0xdd7b('0x48')]['id'];}return db[_0xdd7b('0x31')][_0xdd7b('0x50')]({'where':{'id':_0xb1c0cd['params']['id']}})['then'](handleEntityNotFound(_0xc62641,null))['then'](saveUpdates(_0xb1c0cd['body'],null))['then'](respondWithResult(_0xc62641,null))[_0xdd7b('0x46')](handleError(_0xc62641,null));};exports[_0xdd7b('0x29')]=function(_0x50ab6d,_0x4faada){return db[_0xdd7b('0x31')]['find']({'where':{'id':_0x50ab6d[_0xdd7b('0x51')]['id']}})['then'](handleEntityNotFound(_0x4faada,null))['then'](removeEntity(_0x4faada,null))['catch'](handleError(_0x4faada,null));};exports[_0xdd7b('0x32')]=function(_0x5da5b4,_0x1d7d93){return db['CmCompany']['describe']()['then'](respondWithResult(_0x1d7d93,null))[_0xdd7b('0x46')](handleError(_0x1d7d93,null));};exports[_0xdd7b('0x52')]=function(_0x40f409,_0x5b92a1,_0x3b2503){return db[_0xdd7b('0x53')][_0xdd7b('0x50')]({'where':{'id':_0x40f409['params']['id']}})['then'](handleEntityNotFound(_0x5b92a1,null))['then'](function(_0x41ccc0){if(_0x41ccc0){return _0x41ccc0[_0xdd7b('0x52')](_0x40f409[_0xdd7b('0x48')][_0xdd7b('0x54')],_[_0xdd7b('0x55')](_0x40f409[_0xdd7b('0x48')],[_0xdd7b('0x54'),'id'])||{});}})[_0xdd7b('0x28')](respondWithResult(_0x5b92a1,null))['catch'](handleError(_0x5b92a1,null));};exports[_0xdd7b('0x56')]=function(_0x11e6b1,_0x509b2a,_0x5d2ff2){var _0x422e87={};var _0x4de18c={};var _0x43eba1;var _0x2d9e7b;return db[_0xdd7b('0x31')][_0xdd7b('0x57')]({'where':{'id':_0x11e6b1['params']['id']}})[_0xdd7b('0x28')](handleEntityNotFound(_0x509b2a,null))[_0xdd7b('0x28')](function(_0x517d92){if(_0x517d92){_0x43eba1=_0x517d92;_0x4de18c[_0xdd7b('0x33')]=_['keys'](db['CmContact'][_0xdd7b('0x47')]);_0x4de18c[_0xdd7b('0x35')]=_[_0xdd7b('0x34')](_0x11e6b1[_0xdd7b('0x35')]);_0x4de18c[_0xdd7b('0x3d')]=_[_0xdd7b('0x36')](_0x4de18c[_0xdd7b('0x33')],_0x4de18c['query']);_0x422e87[_0xdd7b('0x37')]=_[_0xdd7b('0x36')](_0x4de18c['model'],qs[_0xdd7b('0x38')](_0x11e6b1['query']['fields']));_0x422e87[_0xdd7b('0x37')]=_0x422e87['attributes'][_0xdd7b('0x39')]?_0x422e87[_0xdd7b('0x37')]:_0x4de18c[_0xdd7b('0x33')];_0x422e87[_0xdd7b('0x3b')]=qs[_0xdd7b('0x3c')](_0x11e6b1[_0xdd7b('0x35')]['sort']);_0x422e87[_0xdd7b('0x3f')]=qs[_0xdd7b('0x3d')](_[_0xdd7b('0x58')](_0x11e6b1[_0xdd7b('0x35')],_0x4de18c[_0xdd7b('0x3d')]));if(_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3e')]){_0x422e87[_0xdd7b('0x3f')]=_[_0xdd7b('0x40')](_0x422e87[_0xdd7b('0x3f')],{'$or':_[_0xdd7b('0x41')](_0x422e87[_0xdd7b('0x37')],function(_0x5112ef){var _0x50f0c9={};_0x50f0c9[_0x5112ef]={'$like':'%'+_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3e')]+'%'};return _0x50f0c9;})});}_0x422e87=_[_0xdd7b('0x40')]({},_0x422e87,_0x11e6b1['options']);return _0x43eba1[_0xdd7b('0x56')](_0x422e87);}})[_0xdd7b('0x28')](function(_0x293cb0){if(_0x293cb0){_0x2d9e7b=_0x293cb0[_0xdd7b('0x39')];if(!_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x3a')](_0xdd7b('0x59'))){_0x422e87[_0xdd7b('0x21')]=qs[_0xdd7b('0x21')](_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x21')]);_0x422e87[_0xdd7b('0x1f')]=qs['offset'](_0x11e6b1[_0xdd7b('0x35')][_0xdd7b('0x1f')]);}return _0x43eba1[_0xdd7b('0x56')](_0x422e87);}})['then'](function(_0x30207c){if(_0x30207c){return _0x30207c?{'count':_0x2d9e7b,'rows':_0x30207c}:null;}})[_0xdd7b('0x28')](respondWithResult(_0x509b2a,null))[_0xdd7b('0x46')](handleError(_0x509b2a,null));};
\ No newline at end of file
+var _0x7c5f=['nolimit','order','sort','where','filters','pick','map','filter','merge','options','CmCompany','includeAll','rows','catch','show','params','rawAttributes','include','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','create','body','describe','addContacts','CmContact','findOne','getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','Companies','UserProfileResource','stack','name','index','model','query','keys','intersection','attributes','fields','length'];(function(_0x440b3b,_0x2de495){var _0x3018cb=function(_0x8772d5){while(--_0x8772d5){_0x440b3b['push'](_0x440b3b['shift']());}};_0x3018cb(++_0x2de495);}(_0x7c5f,0xd1));var _0xf7c5=function(_0x303a6a,_0x23f4d7){_0x303a6a=_0x303a6a-0x0;var _0x4de61d=_0x7c5f[_0x303a6a];return _0x4de61d;};'use strict';var emlformat=require(_0xf7c5('0x0'));var rimraf=require(_0xf7c5('0x1'));var zipdir=require(_0xf7c5('0x2'));var jsonpatch=require(_0xf7c5('0x3'));var rp=require(_0xf7c5('0x4'));var moment=require(_0xf7c5('0x5'));var BPromise=require(_0xf7c5('0x6'));var Mustache=require(_0xf7c5('0x7'));var util=require('util');var path=require(_0xf7c5('0x8'));var sox=require(_0xf7c5('0x9'));var csv=require(_0xf7c5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf7c5('0xb'));var _=require(_0xf7c5('0xc'));var squel=require(_0xf7c5('0xd'));var crypto=require(_0xf7c5('0xe'));var jsforce=require(_0xf7c5('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xf7c5('0xa'));var querystring=require(_0xf7c5('0x10'));var Papa=require(_0xf7c5('0x11'));var Redis=require(_0xf7c5('0x12'));var authService=require(_0xf7c5('0x13'));var qs=require(_0xf7c5('0x14'));var as=require(_0xf7c5('0x15'));var hardwareService=require(_0xf7c5('0x16'));var logger=require(_0xf7c5('0x17'))(_0xf7c5('0x18'));var utils=require(_0xf7c5('0x19'));var config=require(_0xf7c5('0x1a'));var licenseUtil=require(_0xf7c5('0x1b'));var db=require(_0xf7c5('0x1c'))['db'];function respondWithStatusCode(_0x321376,_0x438957){_0x438957=_0x438957||0xcc;return function(_0x28f1f6){if(_0x28f1f6){return _0x321376[_0xf7c5('0x1d')](_0x438957);}return _0x321376[_0xf7c5('0x1e')](_0x438957)[_0xf7c5('0x1f')]();};}function respondWithResult(_0x397c88,_0x506a46){_0x506a46=_0x506a46||0xc8;return function(_0x2aa528){if(_0x2aa528){return _0x397c88['status'](_0x506a46)[_0xf7c5('0x20')](_0x2aa528);}};}function respondWithFilteredResult(_0x2c3ed3,_0x2fba18){return function(_0x15a726){if(_0x15a726){var _0x2e3f05=typeof _0x2fba18[_0xf7c5('0x21')]===_0xf7c5('0x22')&&typeof _0x2fba18['limit']===_0xf7c5('0x22');var _0x34b720=_0x15a726['count'];var _0x1dcd9b=_0x2e3f05?0x0:_0x2fba18[_0xf7c5('0x21')];var _0x4eb5e6=_0x2e3f05?_0x15a726[_0xf7c5('0x23')]:_0x2fba18['offset']+_0x2fba18[_0xf7c5('0x24')];var _0x3f4d8;if(_0x4eb5e6>=_0x34b720){_0x4eb5e6=_0x34b720;_0x3f4d8=0xc8;}else{_0x3f4d8=0xce;}_0x2c3ed3[_0xf7c5('0x1e')](_0x3f4d8);return _0x2c3ed3[_0xf7c5('0x25')](_0xf7c5('0x26'),_0x1dcd9b+'-'+_0x4eb5e6+'/'+_0x34b720)[_0xf7c5('0x20')](_0x15a726);}return null;};}function patchUpdates(_0x26b9fd){return function(_0x14cfff){try{jsonpatch[_0xf7c5('0x27')](_0x14cfff,_0x26b9fd,!![]);}catch(_0x212184){return BPromise[_0xf7c5('0x28')](_0x212184);}return _0x14cfff[_0xf7c5('0x29')]();};}function saveUpdates(_0x501ca5,_0x26f5d3){return function(_0x5dae7b){if(_0x5dae7b){return _0x5dae7b[_0xf7c5('0x2a')](_0x501ca5)['then'](function(_0x41da42){return _0x41da42;});}return null;};}function removeEntity(_0x43bc01,_0x5ed889){return function(_0x39c69e){if(_0x39c69e){return _0x39c69e[_0xf7c5('0x2b')]()[_0xf7c5('0x2c')](function(){var _0x4f8c3e=_0x39c69e[_0xf7c5('0x2d')]({'plain':!![]});var _0x5b1f78=_0xf7c5('0x2e');return db[_0xf7c5('0x2f')][_0xf7c5('0x2b')]({'where':{'type':_0x5b1f78,'resourceId':_0x4f8c3e['id']}})[_0xf7c5('0x2c')](function(){return _0x39c69e;});})[_0xf7c5('0x2c')](function(){_0x43bc01['status'](0xcc)[_0xf7c5('0x1f')]();});}};}function handleEntityNotFound(_0x443f1d,_0x5e700c){return function(_0x2c6f47){if(!_0x2c6f47){_0x443f1d['sendStatus'](0x194);}return _0x2c6f47;};}function handleError(_0x4f790a,_0x5463fd){_0x5463fd=_0x5463fd||0x1f4;return function(_0x232a93){logger['error'](_0x232a93[_0xf7c5('0x30')]);if(_0x232a93['name']){delete _0x232a93[_0xf7c5('0x31')];}_0x4f790a[_0xf7c5('0x1e')](_0x5463fd)['send'](_0x232a93);};}exports[_0xf7c5('0x32')]=function(_0x170d23,_0xbf08c7){var _0x567e94={},_0x3c437f={},_0x30e887={'count':0x0,'rows':[]};return db['CmCompany']['describe']()['then'](function(_0x51a9dc){_0x3c437f[_0xf7c5('0x33')]=_['keys'](_0x51a9dc);_0x3c437f[_0xf7c5('0x34')]=_[_0xf7c5('0x35')](_0x170d23[_0xf7c5('0x34')]);_0x3c437f['filters']=_[_0xf7c5('0x36')](_0x3c437f['model'],_0x3c437f[_0xf7c5('0x34')]);_0x567e94[_0xf7c5('0x37')]=_[_0xf7c5('0x36')](_0x3c437f['model'],qs['fields'](_0x170d23[_0xf7c5('0x34')][_0xf7c5('0x38')]));_0x567e94[_0xf7c5('0x37')]=_0x567e94[_0xf7c5('0x37')][_0xf7c5('0x39')]?_0x567e94[_0xf7c5('0x37')]:_0x3c437f[_0xf7c5('0x33')];if(!_0x170d23[_0xf7c5('0x34')]['hasOwnProperty'](_0xf7c5('0x3a'))){_0x567e94['limit']=qs[_0xf7c5('0x24')](_0x170d23[_0xf7c5('0x34')]['limit']);_0x567e94['offset']=qs[_0xf7c5('0x21')](_0x170d23[_0xf7c5('0x34')][_0xf7c5('0x21')]);}_0x567e94[_0xf7c5('0x3b')]=qs[_0xf7c5('0x3c')](_0x170d23['query'][_0xf7c5('0x3c')]);_0x567e94[_0xf7c5('0x3d')]=qs[_0xf7c5('0x3e')](_[_0xf7c5('0x3f')](_0x170d23['query'],_0x3c437f[_0xf7c5('0x3e')]),_0x51a9dc);if(_0x170d23[_0xf7c5('0x34')]['filter']){_0x567e94[_0xf7c5('0x3d')]=_['merge'](_0x567e94['where'],{'$or':_[_0xf7c5('0x40')](_0x567e94[_0xf7c5('0x37')],function(_0xe5d949){var _0x15bc1b={};_0x15bc1b[_0xe5d949]={'$like':'%'+_0x170d23[_0xf7c5('0x34')][_0xf7c5('0x41')]+'%'};return _0x15bc1b;})});}_0x567e94=_[_0xf7c5('0x42')]({},_0x567e94,_0x170d23[_0xf7c5('0x43')]);var _0x506d50={'where':_0x567e94[_0xf7c5('0x3d')]};return db[_0xf7c5('0x44')][_0xf7c5('0x23')](_0x506d50)[_0xf7c5('0x2c')](function(_0x763c93){_0x30e887[_0xf7c5('0x23')]=_0x763c93;if(_0x170d23[_0xf7c5('0x34')][_0xf7c5('0x45')]){_0x567e94['include']=[{'all':!![]}];}return db['CmCompany']['findAll'](_0x567e94);})[_0xf7c5('0x2c')](function(_0x4787d0){_0x30e887[_0xf7c5('0x46')]=_0x4787d0;return _0x30e887;})[_0xf7c5('0x2c')](respondWithFilteredResult(_0xbf08c7,_0x567e94))['catch'](handleError(_0xbf08c7,null));})[_0xf7c5('0x47')](handleError(_0xbf08c7,null));};exports[_0xf7c5('0x48')]=function(_0x1a176d,_0x36e1bc){var _0x553b67={'raw':![],'where':{'id':_0x1a176d[_0xf7c5('0x49')]['id']}},_0x3675f6={};_0x3675f6['model']=_[_0xf7c5('0x35')](db[_0xf7c5('0x44')][_0xf7c5('0x4a')]);_0x3675f6[_0xf7c5('0x34')]=_[_0xf7c5('0x35')](_0x1a176d['query']);_0x3675f6['filters']=_[_0xf7c5('0x36')](_0x3675f6[_0xf7c5('0x33')],_0x3675f6['query']);_0x553b67[_0xf7c5('0x37')]=_[_0xf7c5('0x36')](_0x3675f6[_0xf7c5('0x33')],qs['fields'](_0x1a176d['query'][_0xf7c5('0x38')]));_0x553b67['attributes']=_0x553b67['attributes']['length']?_0x553b67[_0xf7c5('0x37')]:_0x3675f6['model'];if(_0x1a176d[_0xf7c5('0x34')][_0xf7c5('0x45')]){_0x553b67[_0xf7c5('0x4b')]=[{'all':!![]}];}_0x553b67=_[_0xf7c5('0x42')]({},_0x553b67,_0x1a176d[_0xf7c5('0x43')]);return db[_0xf7c5('0x44')][_0xf7c5('0x4c')](_0x553b67)[_0xf7c5('0x2c')](handleEntityNotFound(_0x36e1bc,null))[_0xf7c5('0x2c')](respondWithResult(_0x36e1bc,null))[_0xf7c5('0x47')](handleError(_0x36e1bc,null));};exports['create']=function(_0x2f9ca4,_0x26feff){return db[_0xf7c5('0x44')]['create'](_0x2f9ca4['body'],{})[_0xf7c5('0x2c')](function(_0x525d2e){var _0x2820e8=_0x2f9ca4[_0xf7c5('0x4d')]['get']({'plain':!![]});if(!_0x2820e8)throw new Error(_0xf7c5('0x4e'));if(_0x2820e8['role']==='user'){var _0x3a3d13=_0x525d2e[_0xf7c5('0x2d')]({'plain':!![]});var _0x52349f=_0xf7c5('0x2e');return db[_0xf7c5('0x4f')][_0xf7c5('0x4c')]({'where':{'name':_0x52349f,'userProfileId':_0x2820e8[_0xf7c5('0x50')]},'raw':!![]})[_0xf7c5('0x2c')](function(_0x548763){if(_0x548763&&_0x548763[_0xf7c5('0x51')]===0x0){return db[_0xf7c5('0x2f')][_0xf7c5('0x52')]({'name':_0x3a3d13['name'],'resourceId':_0x3a3d13['id'],'type':_0x548763[_0xf7c5('0x31')],'sectionId':_0x548763['id']},{})[_0xf7c5('0x2c')](function(){return _0x525d2e;});}else{return _0x525d2e;}})['catch'](function(_0x113c3c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x113c3c);throw _0x113c3c;});}return _0x525d2e;})['then'](respondWithResult(_0x26feff,0xc9))[_0xf7c5('0x47')](handleError(_0x26feff,null));};exports[_0xf7c5('0x2a')]=function(_0x30819b,_0x34bb42){if(_0x30819b[_0xf7c5('0x53')]['id']){delete _0x30819b['body']['id'];}return db[_0xf7c5('0x44')][_0xf7c5('0x4c')]({'where':{'id':_0x30819b[_0xf7c5('0x49')]['id']}})['then'](handleEntityNotFound(_0x34bb42,null))['then'](saveUpdates(_0x30819b[_0xf7c5('0x53')],null))[_0xf7c5('0x2c')](respondWithResult(_0x34bb42,null))[_0xf7c5('0x47')](handleError(_0x34bb42,null));};exports[_0xf7c5('0x2b')]=function(_0x194021,_0x53b752){return db[_0xf7c5('0x44')][_0xf7c5('0x4c')]({'where':{'id':_0x194021[_0xf7c5('0x49')]['id']}})[_0xf7c5('0x2c')](handleEntityNotFound(_0x53b752,null))['then'](removeEntity(_0x53b752,null))[_0xf7c5('0x47')](handleError(_0x53b752,null));};exports[_0xf7c5('0x54')]=function(_0x1e047a,_0x1437b0){return db[_0xf7c5('0x44')][_0xf7c5('0x54')]()[_0xf7c5('0x2c')](respondWithResult(_0x1437b0,null))[_0xf7c5('0x47')](handleError(_0x1437b0,null));};exports[_0xf7c5('0x55')]=function(_0x12845b,_0x106631,_0x1beecd){return db[_0xf7c5('0x56')]['find']({'where':{'id':_0x12845b[_0xf7c5('0x49')]['id']}})['then'](handleEntityNotFound(_0x106631,null))['then'](function(_0x51b00a){if(_0x51b00a){return _0x51b00a[_0xf7c5('0x55')](_0x12845b[_0xf7c5('0x53')]['ids'],_['omit'](_0x12845b[_0xf7c5('0x53')],['ids','id'])||{});}})[_0xf7c5('0x2c')](respondWithResult(_0x106631,null))['catch'](handleError(_0x106631,null));};exports['getContacts']=function(_0x43bc33,_0x2618fe,_0x23d0fd){var _0x3dc9ac={};var _0x2f9aab={};var _0x29cb9f;var _0x3b1a26;return db[_0xf7c5('0x44')][_0xf7c5('0x57')]({'where':{'id':_0x43bc33['params']['id']}})[_0xf7c5('0x2c')](handleEntityNotFound(_0x2618fe,null))[_0xf7c5('0x2c')](function(_0x5096a3){if(_0x5096a3){_0x29cb9f=_0x5096a3;_0x2f9aab[_0xf7c5('0x33')]=_[_0xf7c5('0x35')](db[_0xf7c5('0x56')][_0xf7c5('0x4a')]);_0x2f9aab[_0xf7c5('0x34')]=_[_0xf7c5('0x35')](_0x43bc33[_0xf7c5('0x34')]);_0x2f9aab[_0xf7c5('0x3e')]=_['intersection'](_0x2f9aab[_0xf7c5('0x33')],_0x2f9aab['query']);_0x3dc9ac[_0xf7c5('0x37')]=_[_0xf7c5('0x36')](_0x2f9aab[_0xf7c5('0x33')],qs['fields'](_0x43bc33[_0xf7c5('0x34')][_0xf7c5('0x38')]));_0x3dc9ac[_0xf7c5('0x37')]=_0x3dc9ac[_0xf7c5('0x37')]['length']?_0x3dc9ac[_0xf7c5('0x37')]:_0x2f9aab[_0xf7c5('0x33')];_0x3dc9ac[_0xf7c5('0x3b')]=qs[_0xf7c5('0x3c')](_0x43bc33[_0xf7c5('0x34')][_0xf7c5('0x3c')]);_0x3dc9ac[_0xf7c5('0x3d')]=qs[_0xf7c5('0x3e')](_[_0xf7c5('0x3f')](_0x43bc33[_0xf7c5('0x34')],_0x2f9aab[_0xf7c5('0x3e')]));if(_0x43bc33[_0xf7c5('0x34')][_0xf7c5('0x41')]){_0x3dc9ac['where']=_[_0xf7c5('0x42')](_0x3dc9ac[_0xf7c5('0x3d')],{'$or':_[_0xf7c5('0x40')](_0x3dc9ac[_0xf7c5('0x37')],function(_0x477094){var _0x7bb38a={};_0x7bb38a[_0x477094]={'$like':'%'+_0x43bc33[_0xf7c5('0x34')]['filter']+'%'};return _0x7bb38a;})});}_0x3dc9ac=_[_0xf7c5('0x42')]({},_0x3dc9ac,_0x43bc33[_0xf7c5('0x43')]);return _0x29cb9f[_0xf7c5('0x58')](_0x3dc9ac);}})[_0xf7c5('0x2c')](function(_0x2fc1ba){if(_0x2fc1ba){_0x3b1a26=_0x2fc1ba[_0xf7c5('0x39')];if(!_0x43bc33[_0xf7c5('0x34')]['hasOwnProperty']('nolimit')){_0x3dc9ac[_0xf7c5('0x24')]=qs['limit'](_0x43bc33[_0xf7c5('0x34')][_0xf7c5('0x24')]);_0x3dc9ac['offset']=qs[_0xf7c5('0x21')](_0x43bc33['query']['offset']);}return _0x29cb9f[_0xf7c5('0x58')](_0x3dc9ac);}})[_0xf7c5('0x2c')](function(_0x37ed47){if(_0x37ed47){return _0x37ed47?{'count':_0x3b1a26,'rows':_0x37ed47}:null;}})[_0xf7c5('0x2c')](respondWithResult(_0x2618fe,null))[_0xf7c5('0x47')](handleError(_0x2618fe,null));};
\ No newline at end of file
index a927a24..7178af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa46=['exports','define','CmCompany','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x5b34c2,_0x25a118){var _0x577f60=function(_0x46b2b7){while(--_0x46b2b7){_0x5b34c2['push'](_0x5b34c2['shift']());}};_0x577f60(++_0x25a118);}(_0xaa46,0x71));var _0x6aa4=function(_0x75a103,_0x406e69){_0x75a103=_0x75a103-0x0;var _0x10ec8a=_0xaa46[_0x75a103];return _0x10ec8a;};'use strict';var _=require('lodash');var util=require(_0x6aa4('0x0'));var logger=require(_0x6aa4('0x1'))(_0x6aa4('0x2'));var moment=require(_0x6aa4('0x3'));var BPromise=require(_0x6aa4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6aa4('0x5'));var config=require(_0x6aa4('0x6'));var attributes=require('./cmCompany.attributes');module[_0x6aa4('0x7')]=function(_0x512925,_0x643de8){return _0x512925[_0x6aa4('0x8')](_0x6aa4('0x9'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ab4=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','define','CmCompany','cm_companies','lodash'];(function(_0x65e689,_0x5626aa){var _0x150ae6=function(_0x37281d){while(--_0x37281d){_0x65e689['push'](_0x65e689['shift']());}};_0x150ae6(++_0x5626aa);}(_0x4ab4,0x1c6));var _0x44ab=function(_0x1ce07a,_0x4e47f7){_0x1ce07a=_0x1ce07a-0x0;var _0x21d49a=_0x4ab4[_0x1ce07a];return _0x21d49a;};'use strict';var _=require(_0x44ab('0x0'));var util=require(_0x44ab('0x1'));var logger=require(_0x44ab('0x2'))(_0x44ab('0x3'));var moment=require('moment');var BPromise=require(_0x44ab('0x4'));var rp=require(_0x44ab('0x5'));var fs=require('fs');var path=require(_0x44ab('0x6'));var rimraf=require(_0x44ab('0x7'));var config=require(_0x44ab('0x8'));var attributes=require(_0x44ab('0x9'));module['exports']=function(_0x2b65f7,_0xc627d2){return _0x2b65f7[_0x44ab('0xa')](_0x44ab('0xb'),attributes,{'tableName':_0x44ab('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8035bc8..6d00d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0964=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x0964,0x1be));var _0x4096=function(_0x8a969d,_0x339d9f){_0x8a969d=_0x8a969d-0x0;var _0x1d8dc7=_0x0964[_0x8a969d];return _0x1d8dc7;};'use strict';var _=require(_0x4096('0x0'));var util=require(_0x4096('0x1'));var moment=require(_0x4096('0x2'));var BPromise=require(_0x4096('0x3'));var rs=require(_0x4096('0x4'));var fs=require('fs');var Redis=require(_0x4096('0x5'));var db=require(_0x4096('0x6'))['db'];var utils=require(_0x4096('0x7'));var logger=require(_0x4096('0x8'))(_0x4096('0x9'));var config=require(_0x4096('0xa'));var jayson=require(_0x4096('0xb'));var client=jayson[_0x4096('0xc')][_0x4096('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x46aa2e,_0x35ace2,_0x1249bb){return new BPromise(function(_0x1d67aa,_0x44ef4f){return client[_0x4096('0xe')](_0x46aa2e,_0x1249bb)[_0x4096('0xf')](function(_0x5c88a1){logger['info'](_0x4096('0x10'),_0x35ace2,_0x4096('0x11'));logger[_0x4096('0x12')](_0x4096('0x13'),_0x35ace2,'request\x20sent',JSON[_0x4096('0x14')](_0x5c88a1));if(_0x5c88a1['error']){if(_0x5c88a1[_0x4096('0x15')][_0x4096('0x16')]===0x1f4){logger[_0x4096('0x15')]('CmCompany,\x20%s,\x20%s',_0x35ace2,_0x5c88a1[_0x4096('0x15')]['message']);return _0x44ef4f(_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);}logger[_0x4096('0x15')](_0x4096('0x10'),_0x35ace2,_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);return _0x1d67aa(_0x5c88a1[_0x4096('0x15')][_0x4096('0x17')]);}else{logger['info'](_0x4096('0x10'),_0x35ace2,_0x4096('0x11'));_0x1d67aa(_0x5c88a1[_0x4096('0x18')][_0x4096('0x17')]);}})[_0x4096('0x19')](function(_0x21a267){logger[_0x4096('0x15')]('CmCompany,\x20%s,\x20%s',_0x35ace2,_0x21a267);_0x44ef4f(_0x21a267);});});}
\ No newline at end of file
+var _0x3ce7=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','CmCompany,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util'];(function(_0x48f7cf,_0x4baa04){var _0xc201c0=function(_0x23ff34){while(--_0x23ff34){_0x48f7cf['push'](_0x48f7cf['shift']());}};_0xc201c0(++_0x4baa04);}(_0x3ce7,0xbc));var _0x73ce=function(_0x4e4ff2,_0x30c8e7){_0x4e4ff2=_0x4e4ff2-0x0;var _0x49a1c7=_0x3ce7[_0x4e4ff2];return _0x49a1c7;};'use strict';var _=require(_0x73ce('0x0'));var util=require(_0x73ce('0x1'));var moment=require('moment');var BPromise=require(_0x73ce('0x2'));var rs=require(_0x73ce('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x73ce('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x73ce('0x5'))(_0x73ce('0x6'));var config=require(_0x73ce('0x7'));var jayson=require(_0x73ce('0x8'));var client=jayson[_0x73ce('0x9')][_0x73ce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x10560d,_0x2ccf43,_0x3e79ce){return new BPromise(function(_0x5892d1,_0x1c9156){return client['request'](_0x10560d,_0x3e79ce)['then'](function(_0x49e8e1){logger[_0x73ce('0xb')](_0x73ce('0xc'),_0x2ccf43,_0x73ce('0xd'));logger['debug']('CmCompany,\x20%s,\x20%s,\x20%s',_0x2ccf43,'request\x20sent',JSON['stringify'](_0x49e8e1));if(_0x49e8e1[_0x73ce('0xe')]){if(_0x49e8e1['error'][_0x73ce('0xf')]===0x1f4){logger[_0x73ce('0xe')]('CmCompany,\x20%s,\x20%s',_0x2ccf43,_0x49e8e1[_0x73ce('0xe')][_0x73ce('0x10')]);return _0x1c9156(_0x49e8e1['error'][_0x73ce('0x10')]);}logger[_0x73ce('0xe')]('CmCompany,\x20%s,\x20%s',_0x2ccf43,_0x49e8e1[_0x73ce('0xe')][_0x73ce('0x10')]);return _0x5892d1(_0x49e8e1['error']['message']);}else{logger['info'](_0x73ce('0xc'),_0x2ccf43,_0x73ce('0xd'));_0x5892d1(_0x49e8e1[_0x73ce('0x11')][_0x73ce('0x10')]);}})[_0x73ce('0x12')](function(_0x3fd179){logger[_0x73ce('0xe')](_0x73ce('0xc'),_0x2ccf43,_0x3fd179);_0x1c9156(_0x3fd179);});});}
\ No newline at end of file
index aa1f695..3c21793 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab41=['index','/describe','describe','/:id','/:id/contacts','getContacts','addContacts','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','./cmCompany.controller','get','isAuthenticated'];(function(_0x11de69,_0x46c7c6){var _0x211379=function(_0x58c8dd){while(--_0x58c8dd){_0x11de69['push'](_0x11de69['shift']());}};_0x211379(++_0x46c7c6);}(_0xab41,0x1ea));var _0x1ab4=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xab41[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x1ab4('0x0'));var util=require(_0x1ab4('0x1'));var path=require(_0x1ab4('0x2'));var timeout=require(_0x1ab4('0x3'));var express=require(_0x1ab4('0x4'));var router=express[_0x1ab4('0x5')]();var fs_extra=require(_0x1ab4('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1ab4('0x7'));router[_0x1ab4('0x8')]('/',auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xa')]);router['get'](_0x1ab4('0xb'),auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xc')]);router[_0x1ab4('0x8')](_0x1ab4('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x1ab4('0x8')](_0x1ab4('0xe'),auth[_0x1ab4('0x9')](),controller[_0x1ab4('0xf')]);router['post']('/',auth[_0x1ab4('0x9')](),controller['create']);router['post']('/:id/contacts',auth[_0x1ab4('0x9')](),controller[_0x1ab4('0x10')]);router[_0x1ab4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1ab4('0x12')]);router[_0x1ab4('0x13')](_0x1ab4('0xd'),auth[_0x1ab4('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe626=['put','update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','isAuthenticated','describe','/:id','show','post','create','/:id/contacts','addContacts'];(function(_0x3cea78,_0x4a6751){var _0x33b66b=function(_0x1f45cd){while(--_0x1f45cd){_0x3cea78['push'](_0x3cea78['shift']());}};_0x33b66b(++_0x4a6751);}(_0xe626,0x9d));var _0x6e62=function(_0x1d0409,_0x2f1e64){_0x1d0409=_0x1d0409-0x0;var _0x18ae81=_0xe626[_0x1d0409];return _0x18ae81;};'use strict';var multer=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var path=require(_0x6e62('0x2'));var timeout=require(_0x6e62('0x3'));var express=require('express');var router=express[_0x6e62('0x4')]();var fs_extra=require(_0x6e62('0x5'));var auth=require(_0x6e62('0x6'));var interaction=require(_0x6e62('0x7'));var config=require(_0x6e62('0x8'));var controller=require('./cmCompany.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6e62('0x9')]);router[_0x6e62('0xa')]('/describe',auth[_0x6e62('0xb')](),controller[_0x6e62('0xc')]);router[_0x6e62('0xa')](_0x6e62('0xd'),auth['isAuthenticated'](),controller[_0x6e62('0xe')]);router[_0x6e62('0xa')]('/:id/contacts',auth[_0x6e62('0xb')](),controller['getContacts']);router[_0x6e62('0xf')]('/',auth['isAuthenticated'](),controller[_0x6e62('0x10')]);router['post'](_0x6e62('0x11'),auth[_0x6e62('0xb')](),controller[_0x6e62('0x12')]);router[_0x6e62('0x13')](_0x6e62('0xd'),auth[_0x6e62('0xb')](),controller[_0x6e62('0x14')]);router['delete']('/:id',auth[_0x6e62('0xb')](),controller[_0x6e62('0x15')]);module['exports']=router;
\ No newline at end of file
index af77e1e..655841b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819a=['lodash','sequelize','STRING','TEXT','INTEGER','DATE','NOW'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x819a,0xaf));var _0xa819=function(_0x1dee00,_0x57768a){_0x1dee00=_0x1dee00-0x0;var _0x554905=_0x819a[_0x1dee00];return _0x554905;};'use strict';var _=require(_0xa819('0x0'));var Sequelize=require(_0xa819('0x1'));module['exports']={'firstName':{'type':Sequelize[_0xa819('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xa819('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0xa819('0x2')]},'city':{'type':Sequelize[_0xa819('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xa819('0x2')]},'description':{'type':Sequelize[_0xa819('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xa819('0x2')]},'fax':{'type':Sequelize[_0xa819('0x2')]},'email':{'type':Sequelize[_0xa819('0x2')]},'url':{'type':Sequelize[_0xa819('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xa819('0x2')]},'twitter':{'type':Sequelize[_0xa819('0x2')]},'skype':{'type':Sequelize[_0xa819('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xa819('0x2')]},'line':{'type':Sequelize[_0xa819('0x2')]},'wechat':{'type':Sequelize[_0xa819('0x2')]},'telegram':{'type':Sequelize[_0xa819('0x2')]},'UserId':{'type':Sequelize[_0xa819('0x4')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xa819('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xa819('0x5')],'defaultValue':Sequelize[_0xa819('0x6')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xa819('0x4')]}};
\ No newline at end of file
+var _0x4221=['lodash','sequelize','exports','STRING','INTEGER','DATE'];(function(_0xa42014,_0x549a96){var _0x1470d1=function(_0xd912cd){while(--_0xd912cd){_0xa42014['push'](_0xa42014['shift']());}};_0x1470d1(++_0x549a96);}(_0x4221,0x132));var _0x1422=function(_0x15e67f,_0x372602){_0x15e67f=_0x15e67f-0x0;var _0x288bd3=_0x4221[_0x15e67f];return _0x288bd3;};'use strict';var _=require(_0x1422('0x0'));var Sequelize=require(_0x1422('0x1'));module[_0x1422('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0x1422('0x3')]},'street':{'type':Sequelize[_0x1422('0x3')]},'postalCode':{'type':Sequelize[_0x1422('0x3')]},'city':{'type':Sequelize[_0x1422('0x3')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x1422('0x3')]},'url':{'type':Sequelize[_0x1422('0x3')]},'facebook':{'type':Sequelize[_0x1422('0x3')]},'fb_data':{'type':Sequelize[_0x1422('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x1422('0x3')]},'teams':{'type':Sequelize[_0x1422('0x3')]},'viber':{'type':Sequelize[_0x1422('0x3')]},'line':{'type':Sequelize[_0x1422('0x3')]},'wechat':{'type':Sequelize[_0x1422('0x3')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize[_0x1422('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x1422('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x1422('0x5')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x1422('0x3')]},'utcOffset':{'type':Sequelize[_0x1422('0x4')]}};
\ No newline at end of file
index 9d479f2..7063358 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(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 c73d231..e4b985a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd337=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact'];(function(_0x458b01,_0x597db8){var _0x417383=function(_0x427fbe){while(--_0x427fbe){_0x458b01['push'](_0x458b01['shift']());}};_0x417383(++_0x597db8);}(_0xd337,0xc3));var _0x7d33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd337[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x7d33('0x0'));var CmContact=require(_0x7d33('0x1'))['db'][_0x7d33('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x7d33('0x3')](0x0);var events={'afterCreate':_0x7d33('0x4'),'afterUpdate':_0x7d33('0x5'),'afterDestroy':_0x7d33('0x6')};function emitEvent(_0x1740fc){return function(_0x5bdfa4,_0x2a185b,_0x1255d0){CmContactEvents[_0x7d33('0x7')](_0x1740fc+':'+_0x5bdfa4['id'],_0x5bdfa4);CmContactEvents[_0x7d33('0x7')](_0x1740fc,_0x5bdfa4);_0x1255d0(null);};}for(var e in events){if(events[_0x7d33('0x8')](e)){var event=events[e];CmContact[_0x7d33('0x9')](e,emitEvent(event));}}module[_0x7d33('0xa')]=CmContactEvents;
\ No newline at end of file
+var _0xdfa9=['CmContact','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x224f65,_0x4750bf){var _0x3f921c=function(_0x1b5f64){while(--_0x1b5f64){_0x224f65['push'](_0x224f65['shift']());}};_0x3f921c(++_0x4750bf);}(_0xdfa9,0x182));var _0x9dfa=function(_0x9e3708,_0x3b3262){_0x9e3708=_0x9e3708-0x0;var _0x4ab17e=_0xdfa9[_0x9e3708];return _0x4ab17e;};'use strict';var EventEmitter=require(_0x9dfa('0x0'));var CmContact=require('../../mysqldb')['db'][_0x9dfa('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x9dfa('0x2')](0x0);var events={'afterCreate':_0x9dfa('0x3'),'afterUpdate':_0x9dfa('0x4'),'afterDestroy':_0x9dfa('0x5')};function emitEvent(_0x15df3d){return function(_0x647bba,_0x1ff8d2,_0x44ee0c){CmContactEvents['emit'](_0x15df3d+':'+_0x647bba['id'],_0x647bba);CmContactEvents[_0x9dfa('0x6')](_0x15df3d,_0x647bba);_0x44ee0c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x9dfa('0x7')](e,emitEvent(event));}}module[_0x9dfa('0x8')]=CmContactEvents;
\ No newline at end of file
index d5f8778..1b4af6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf41=['CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','CmList','BlackLists','cmContact,\x20%s,\x20%s','CmHopperBlack','List\x20not\x20found','isEmpty','ContactId','CampaignId','[CmContact][afterDestroy][Succesfull]','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','mobile','fax','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','scheduledat','format','isNil','dialTimezone','findOne','then','utcOffset','minutes','YYYY-MM-DD\x20HH:mm:ss','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid','catch','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','Campaign','add','\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'];(function(_0x32bfe9,_0x3ce9cf){var _0x52ecd5=function(_0x5d1ef6){while(--_0x5d1ef6){_0x32bfe9['push'](_0x32bfe9['shift']());}};_0x52ecd5(++_0x3ce9cf);}(_0xbf41,0xe3));var _0x1bf4=function(_0x224ea4,_0x12714d){_0x224ea4=_0x224ea4-0x0;var _0x35d206=_0xbf41[_0x224ea4];return _0x35d206;};'use strict';var _=require('lodash');var util=require(_0x1bf4('0x0'));var logger=require(_0x1bf4('0x1'))(_0x1bf4('0x2'));var moment=require('moment');var BPromise=require(_0x1bf4('0x3'));var rp=require(_0x1bf4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1bf4('0x5'));var config=require('../../config/environment');var shared=require(_0x1bf4('0x6'));var attributes=require(_0x1bf4('0x7'));module[_0x1bf4('0x8')]=function(_0x5ae203,_0x2162c7){return _0x5ae203[_0x1bf4('0x9')](_0x1bf4('0xa'),attributes,{'tableName':_0x1bf4('0xb'),'paranoid':!![],'indexes':[{'name':_0x1bf4('0xc'),'fields':[_0x1bf4('0xc')]},{'name':_0x1bf4('0xd'),'fields':[_0x1bf4('0xe'),'lastName',_0x1bf4('0xc'),_0x1bf4('0xf'),_0x1bf4('0x10'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x1bf4('0x11'),'collate':_0x1bf4('0x12'),'hooks':{'afterCreate':function(_0x3b38d5,_0x4bc61f,_0x1eb619){var _0x216ce7=_0x5ae203[_0x1bf4('0x13')];var _0x4f6cb5=_0x3b38d5[_0x1bf4('0x14')]({'plain':!![]});function _0x1b346b(){return function(_0x2fef17){logger[_0x1bf4('0x15')](_0x1bf4('0x16'),'afterCreate',util[_0x1bf4('0x17')](_0x2fef17,{'showHidden':![],'depth':null}));};}function _0x4ae7de(_0x214d56,_0x521aa9){var _0x19bb7c=_0x521aa9[_0x1bf4('0x18')]?_0x521aa9[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x4f1603,_0x1e0956){if(_[_0x1bf4('0x1a')](_0x521aa9[_0x1bf4('0x1b')])){_0x4f1603({'ret':_0x19bb7c});}else{_0x216ce7['VoiceQueue'][_0x1bf4('0x1c')]({'where':{'id':_0x214d56['id']}})[_0x1bf4('0x1d')](function(_0x3249d1){if(!_[_0x1bf4('0x1a')](_0x3249d1)){var _0xde00ab=_0x3249d1[_0x1bf4('0x1b')];if(!_['isNil'](_0xde00ab)){var _0x4e6247=shared['timezones'];var _0xa2f285=_0x4e6247[_0xde00ab];var _0x29c686=_0x4e6247[_0x521aa9['dialTimezone']];if(!_[_0x1bf4('0x1a')](_0xa2f285)&&!_[_0x1bf4('0x1a')](_0x29c686)){var _0x311766=_0xa2f285[_0x1bf4('0x1e')]-_0x29c686[_0x1bf4('0x1e')];_0x19bb7c=_0x521aa9[_0x1bf4('0x18')]?_0x521aa9['scheduledat']:moment();var _0x5e0cef=moment(_0x19bb7c)['add'](_0x311766,_0x1bf4('0x1f'));_0x4f1603({'ret':_0x5e0cef[_0x1bf4('0x19')](_0x1bf4('0x20'))});}else _0x4f1603({'ret':_0x19bb7c});}else _0x4f1603({'ret':_0x19bb7c});}else{_0x4f1603({'ret':_0x19bb7c});}});}});return 0xa;}var _0x26284d=function(_0x369cff){return new BPromise(function(_0x229977,_0x364f0e){_0x4ae7de(_0x369cff,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x15f5a5){_0x4f6cb5[_0x1bf4('0x18')]=_0x15f5a5['ret'];_0x216ce7['CmHopper']['findOne']({'where':{'phone':_0x4f6cb5['phone'],'VoiceQueueId':_0x369cff['id']}})[_0x1bf4('0x1d')](function(_0x3a8f07){if(!_[_0x1bf4('0x1a')](_0x3a8f07)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x22')+_0x369cff['id']);}return _0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5['callbackUniqueid']?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0x369cff['id']});})[_0x1bf4('0x28')](function(_0x2bd696){_0x364f0e(_0x2bd696);});});});};var _0x3707f7=function(_0xccad62){return new BPromise(function(_0x220753,_0x2cd0cd){_0x4ae7de(_0xccad62,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x19e331){_0x4f6cb5[_0x1bf4('0x18')]=_0x19e331[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x1c')]({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'VoiceQueueId':_0xccad62['id']}})[_0x1bf4('0x1d')](function(_0x4d2c4b){if(!_[_0x1bf4('0x1a')](_0x4d2c4b)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5['phone']+_0x1bf4('0x2a')+_0xccad62['id']);}return _0x216ce7['CmHopperFinal'][_0x1bf4('0x1c')]({'where':{'calleridnum':_0x4f6cb5[_0x1bf4('0xc')],'VoiceQueueId':_0xccad62['id']}});})[_0x1bf4('0x1d')](function(_0x17b9e4){if(!_[_0x1bf4('0x1a')](_0x17b9e4)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x2b')+_0xccad62['id']);}return _0x216ce7['CmHopper'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20')),'callback':_0x4f6cb5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()['format'](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0xccad62['id']});})[_0x1bf4('0x28')](function(_0x136557){_0x2cd0cd(_0x136557);});});});};function _0x451c7c(){return function(_0x4a3b44){logger[_0x1bf4('0x15')](_0x1bf4('0x16'),_0x1bf4('0x2c'),util['inspect'](_0x4a3b44,{'showHidden':![],'depth':null}));};}function _0x1c3b40(_0x5d5b99,_0x55cbe9){var _0x2b324f=_0x55cbe9['scheduledat']?_0x55cbe9[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20'));return new BPromise(function(_0x34186e,_0x30ec59){if(_[_0x1bf4('0x1a')](_0x55cbe9['dialTimezone'])){_0x34186e({'ret':_0x2b324f});}else{_0x216ce7[_0x1bf4('0x2d')][_0x1bf4('0x1c')]({'where':{'id':_0x5d5b99['id']}})[_0x1bf4('0x1d')](function(_0x392110){if(!_[_0x1bf4('0x1a')](_0x392110)){var _0x49fb80=_0x392110['dialTimezone'];if(!_[_0x1bf4('0x1a')](_0x49fb80)){var _0x7a9638=shared['timezones'];var _0x291e03=_0x7a9638[_0x49fb80];var _0x13d8d1=_0x7a9638[_0x55cbe9[_0x1bf4('0x1b')]];if(!_[_0x1bf4('0x1a')](_0x291e03)&&!_['isNil'](_0x13d8d1)){var _0x4d0e82=_0x291e03[_0x1bf4('0x1e')]-_0x13d8d1[_0x1bf4('0x1e')];_0x2b324f=_0x55cbe9['scheduledat']?_0x55cbe9[_0x1bf4('0x18')]:moment();var _0x2e3240=moment(_0x2b324f)[_0x1bf4('0x2e')](_0x4d0e82,_0x1bf4('0x1f'));_0x34186e({'ret':_0x2e3240['format'](_0x1bf4('0x20'))});}else _0x34186e({'ret':_0x2b324f});}else _0x34186e({'ret':_0x2b324f});}else{_0x34186e({'ret':_0x2b324f});}});}});return 0xa;}var _0x208da4=function(_0x8375c1){return new BPromise(function(_0x2d50ed,_0xa74ee0){_0x1c3b40(_0x8375c1,_0x4f6cb5)['then'](function(_0x3fb988){_0x4f6cb5[_0x1bf4('0x18')]=_0x3fb988[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x1c')]({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x8375c1['id']}})[_0x1bf4('0x1d')](function(_0x1c282b){if(!_[_0x1bf4('0x1a')](_0x1c282b)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5[_0x1bf4('0xc')]+_0x1bf4('0x2f')+_0x8375c1['id']);}return _0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5['scheduledat']:moment()[_0x1bf4('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4f6cb5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x8375c1['id']});})[_0x1bf4('0x28')](function(_0x382b2a){_0xa74ee0(_0x382b2a);});});});};var _0x4cc4ad=function(_0x4ae816){return new BPromise(function(_0x160886,_0x2e27ab){_0x1c3b40(_0x4ae816,_0x4f6cb5)['then'](function(_0x916260){_0x4f6cb5[_0x1bf4('0x18')]=_0x916260['ret'];_0x216ce7['CmHopper']['findOne']({'where':{'phone':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x4ae816['id']}})[_0x1bf4('0x1d')](function(_0x1f1075){if(!_[_0x1bf4('0x1a')](_0x1f1075)){throw new Error(_0x1bf4('0x21')+_0x4f6cb5['phone']+_0x1bf4('0x30')+_0x4ae816['id']);}return _0x216ce7[_0x1bf4('0x31')][_0x1bf4('0x1c')]({'where':{'calleridnum':_0x4f6cb5[_0x1bf4('0xc')],'CampaignId':_0x4ae816['id']}});})[_0x1bf4('0x1d')](function(_0x4f12b6){if(!_[_0x1bf4('0x1a')](_0x4f12b6)){throw new Error(_0x1bf4('0x32')+_0x4f6cb5['phone']+_0x1bf4('0x33')+_0x4ae816['id']);}return _0x216ce7['CmHopper'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5[_0x1bf4('0x26')]:0x2,'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()[_0x1bf4('0x19')](_0x1bf4('0x20')),'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x4ae816['id']});})[_0x1bf4('0x28')](function(_0x17cdfa){_0x2e27ab(_0x17cdfa);});});});};if(_0x4f6cb5[_0x1bf4('0x25')]){_0x216ce7[_0x1bf4('0x34')][_0x1bf4('0x35')]({'where':{'type':_0x1bf4('0x36')},'attributes':['id',_0x1bf4('0x37'),'dialTimezone'],'include':[{'model':_0x216ce7['CmList'],'as':_0x1bf4('0x38'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})['then'](function(_0x379cad){if(_0x379cad){var _0x2599e5=[];for(var _0x9f790c=0x0,_0xd57342;_0x9f790c<_0x379cad[_0x1bf4('0x39')];_0x9f790c+=0x1){_0xd57342=_0x379cad[_0x9f790c]['get']({'plain':!![]});switch(_0xd57342['dialCheckDuplicateType']){case _0x1bf4('0x3a'):_0x3707f7(_0xd57342)[_0x1bf4('0x28')](_0x1b346b());break;case _0x1bf4('0x3b'):_0x26284d(_0xd57342)['catch'](_0x1b346b());break;default:_0x1c3b40(_0xd57342,_0x4f6cb5)[_0x1bf4('0x1d')](function(_0x22f43c){_0x4f6cb5[_0x1bf4('0x18')]=_0x22f43c[_0x1bf4('0x29')];_0x216ce7[_0x1bf4('0x23')][_0x1bf4('0x24')]({'phone':_0x4f6cb5['phone'],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()['format'](_0x1bf4('0x20')),'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'VoiceQueueId':_0xd57342['id']})['catch'](_0x1b346b());});}}}})[_0x1bf4('0x1d')](function(){return _0x216ce7['VoiceQueue']['findAll']({'where':{'type':_0x1bf4('0x36')},'attributes':['id'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':_0x1bf4('0x3d'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})[_0x1bf4('0x1d')](function(_0x2d6b52){if(_0x2d6b52){var _0xd7be7a=[];for(var _0x1d7edc=0x0,_0x427dbf;_0x1d7edc<_0x2d6b52['length'];_0x1d7edc+=0x1){_0x427dbf=_0x2d6b52[_0x1d7edc][_0x1bf4('0x14')]({'plain':!![]});_0x216ce7['CmHopperBlack'][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'VoiceQueueId':_0x427dbf['id']})[_0x1bf4('0x28')](function(_0x402b45){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),_0x1bf4('0x2c'),_0x402b45['message']);});}}});})['then'](function(){return _0x216ce7['Campaign']['findAll']({'attributes':['id','dialCheckDuplicateType','dialTimezone'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':'Lists','where':{'id':_0x4f6cb5['ListId']}}]})[_0x1bf4('0x1d')](function(_0x31e25d){if(_0x31e25d){var _0x436c0d=[];for(var _0x1254ef=0x0,_0x330672;_0x1254ef<_0x31e25d[_0x1bf4('0x39')];_0x1254ef+=0x1){_0x330672=_0x31e25d[_0x1254ef][_0x1bf4('0x14')]({'plain':!![]});switch(_0x330672['dialCheckDuplicateType']){case _0x1bf4('0x3a'):_0x4cc4ad(_0x330672)['catch'](_0x451c7c());break;case _0x1bf4('0x3b'):_0x208da4(_0x330672)[_0x1bf4('0x28')](_0x451c7c());break;default:_0x216ce7[_0x1bf4('0x23')]['create']({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5['ListId'],'scheduledat':_0x4f6cb5[_0x1bf4('0x18')]?_0x4f6cb5[_0x1bf4('0x18')]:moment()['format'](_0x1bf4('0x20')),'priority':_0x4f6cb5[_0x1bf4('0x26')]?_0x4f6cb5['priority']:0x2,'callback':_0x4f6cb5[_0x1bf4('0x27')]?!![]:![],'callbackuniqueid':_0x4f6cb5[_0x1bf4('0x27')]?_0x4f6cb5[_0x1bf4('0x27')]:undefined,'callbackat':_0x4f6cb5[_0x1bf4('0x27')]?moment()[_0x1bf4('0x19')](_0x1bf4('0x20')):undefined,'CampaignId':_0x330672['id']})[_0x1bf4('0x28')](_0x451c7c());}}}});})[_0x1bf4('0x1d')](function(){return _0x216ce7[_0x1bf4('0x2d')][_0x1bf4('0x35')]({'attributes':['id'],'include':[{'model':_0x216ce7[_0x1bf4('0x3c')],'as':_0x1bf4('0x3d'),'where':{'id':_0x4f6cb5[_0x1bf4('0x25')]}}]})[_0x1bf4('0x1d')](function(_0x5ce1d){if(_0x5ce1d){var _0x7095ac=[];for(var _0x3ae7a9=0x0,_0x2336fc;_0x3ae7a9<_0x5ce1d[_0x1bf4('0x39')];_0x3ae7a9+=0x1){_0x2336fc=_0x5ce1d[_0x3ae7a9][_0x1bf4('0x14')]({'plain':!![]});_0x216ce7[_0x1bf4('0x3f')][_0x1bf4('0x24')]({'phone':_0x4f6cb5[_0x1bf4('0xc')],'ContactId':_0x4f6cb5['id'],'ListId':_0x4f6cb5[_0x1bf4('0x25')],'CampaignId':_0x2336fc['id']})['catch'](function(_0x1db8b8){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),'afterCreate',_0x1db8b8['message']);});}}});})[_0x1bf4('0x1d')](function(){_0x1eb619();})['catch'](function(_0x59d45e){logger[_0x1bf4('0x15')](_0x1bf4('0x3e'),_0x1bf4('0x2c'),_0x59d45e['message']);_0x1eb619(_0x59d45e);});}else{_0x1eb619(new Error(_0x1bf4('0x40')));}},'afterDestroy':function(_0x45c344,_0x11764d,_0x23d492){var _0xf4d61e=_0x5ae203['models'];var _0x599851=_0x45c344['get']({'plain':!![]});return _0xf4d61e[_0x1bf4('0x23')]['findAll']({'raw':!![],'where':{'ListId':_0x599851[_0x1bf4('0x25')],'ContactId':_0x599851['id']}})[_0x1bf4('0x1d')](function(_0x820c9c){if(!_[_0x1bf4('0x41')](_0x820c9c)){var _0x209404=[];for(var _0x32233f=0x0;_0x32233f<_0x820c9c[_0x1bf4('0x39')];_0x32233f+=0x1){var _0x26c5b3=_0xf4d61e[_0x1bf4('0x23')]['destroy']({'where':{'ListId':_0x820c9c[_0x32233f][_0x1bf4('0x25')],'ContactId':_0x820c9c[_0x32233f][_0x1bf4('0x42')],'VoiceQueueId':_0x820c9c[_0x32233f]['VoiceQueueId'],'CampaignId':_0x820c9c[_0x32233f][_0x1bf4('0x43')]}});_0x209404['push'](_0x26c5b3);}return BPromise['all'](_0x209404);}})[_0x1bf4('0x1d')](function(_0x1240ad){logger['info'](_0x1bf4('0x44'),util[_0x1bf4('0x17')](_0x1240ad,{'showHidden':![],'depth':null}));_0x23d492();})[_0x1bf4('0x28')](function(_0x3a64d2){logger[_0x1bf4('0x15')]('[CmContact][afterDestroy][Error]',util[_0x1bf4('0x17')](_0x3a64d2,{'showHidden':![],'depth':null}));_0x23d492(_0x3a64d2);});}}});};
\ No newline at end of file
+var _0xb4ef=['BlackLists','cmContact,\x20%s,\x20%s','message','CmHopperBlack','List\x20not\x20found','isEmpty','VoiceQueueId','push','info','[CmContact][afterDestroy][Error]','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','fax','email','FULLTEXT','models','get','afterCreate','inspect','scheduledat','format','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','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','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','error','cmContact','Campaign','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','length','always','onlyIfOpen','outbound','CmList'];(function(_0x300756,_0x1ba019){var _0x55d2c6=function(_0x34d18d){while(--_0x34d18d){_0x300756['push'](_0x300756['shift']());}};_0x55d2c6(++_0x1ba019);}(_0xb4ef,0x1c0));var _0xfb4e=function(_0x3d6c21,_0x5f26f0){_0x3d6c21=_0x3d6c21-0x0;var _0x5d99a6=_0xb4ef[_0x3d6c21];return _0x5d99a6;};'use strict';var _=require(_0xfb4e('0x0'));var util=require(_0xfb4e('0x1'));var logger=require('../../config/logger')(_0xfb4e('0x2'));var moment=require(_0xfb4e('0x3'));var BPromise=require(_0xfb4e('0x4'));var rp=require(_0xfb4e('0x5'));var fs=require('fs');var path=require(_0xfb4e('0x6'));var rimraf=require(_0xfb4e('0x7'));var config=require(_0xfb4e('0x8'));var shared=require(_0xfb4e('0x9'));var attributes=require(_0xfb4e('0xa'));module[_0xfb4e('0xb')]=function(_0x2e0632,_0xd9a3e4){return _0x2e0632[_0xfb4e('0xc')](_0xfb4e('0xd'),attributes,{'tableName':_0xfb4e('0xe'),'paranoid':!![],'indexes':[{'name':_0xfb4e('0xf'),'fields':[_0xfb4e('0xf')]},{'name':_0xfb4e('0x10'),'fields':[_0xfb4e('0x11'),_0xfb4e('0x12'),_0xfb4e('0xf'),'mobile',_0xfb4e('0x13'),_0xfb4e('0x14')],'type':_0xfb4e('0x15')}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x2696bf,_0x5cb73c,_0x5dc826){var _0xeef61d=_0x2e0632[_0xfb4e('0x16')];var _0x39cd59=_0x2696bf[_0xfb4e('0x17')]({'plain':!![]});function _0x3f42e5(){return function(_0x472aa3){logger['error']('cmContact',_0xfb4e('0x18'),util[_0xfb4e('0x19')](_0x472aa3,{'showHidden':![],'depth':null}));};}function _0x30e9b7(_0x447827,_0x37d359){var _0x386ca6=_0x37d359[_0xfb4e('0x1a')]?_0x37d359['scheduledat']:moment()[_0xfb4e('0x1b')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x1d3115,_0x37cbf3){if(_[_0xfb4e('0x1c')](_0x37d359[_0xfb4e('0x1d')])){_0x1d3115({'ret':_0x386ca6});}else{_0xeef61d[_0xfb4e('0x1e')][_0xfb4e('0x1f')]({'where':{'id':_0x447827['id']}})[_0xfb4e('0x20')](function(_0x3f7a91){if(!_[_0xfb4e('0x1c')](_0x3f7a91)){var _0x2d35bb=_0x3f7a91[_0xfb4e('0x1d')];if(!_[_0xfb4e('0x1c')](_0x2d35bb)){var _0x25d4a6=shared[_0xfb4e('0x21')];var _0x50d83a=_0x25d4a6[_0x2d35bb];var _0x2f971f=_0x25d4a6[_0x37d359['dialTimezone']];if(!_[_0xfb4e('0x1c')](_0x50d83a)&&!_[_0xfb4e('0x1c')](_0x2f971f)){var _0x751bf4=_0x50d83a[_0xfb4e('0x22')]-_0x2f971f['utcOffset'];_0x386ca6=_0x37d359[_0xfb4e('0x1a')]?_0x37d359[_0xfb4e('0x1a')]:moment();var _0x56dbdd=moment(_0x386ca6)[_0xfb4e('0x23')](_0x751bf4,_0xfb4e('0x24'));_0x1d3115({'ret':_0x56dbdd[_0xfb4e('0x1b')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x1d3115({'ret':_0x386ca6});}else _0x1d3115({'ret':_0x386ca6});}else{_0x1d3115({'ret':_0x386ca6});}});}});return 0xa;}var _0x2414e9=function(_0x3a7910){return new BPromise(function(_0x5b731e,_0x351844){_0x30e9b7(_0x3a7910,_0x39cd59)[_0xfb4e('0x20')](function(_0x2652a6){_0x39cd59[_0xfb4e('0x1a')]=_0x2652a6[_0xfb4e('0x25')];_0xeef61d[_0xfb4e('0x26')][_0xfb4e('0x1f')]({'where':{'phone':_0x39cd59[_0xfb4e('0xf')],'VoiceQueueId':_0x3a7910['id']}})[_0xfb4e('0x20')](function(_0x159be8){if(!_['isNil'](_0x159be8)){throw new Error(_0xfb4e('0x27')+_0x39cd59[_0xfb4e('0xf')]+_0xfb4e('0x28')+_0x3a7910['id']);}return _0xeef61d[_0xfb4e('0x26')][_0xfb4e('0x29')]({'phone':_0x39cd59[_0xfb4e('0xf')],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59[_0xfb4e('0x2b')]:0x2,'scheduledat':_0x39cd59[_0xfb4e('0x1a')]?_0x39cd59[_0xfb4e('0x1a')]:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')),'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59[_0xfb4e('0x2d')]?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59[_0xfb4e('0x2d')]?moment()[_0xfb4e('0x1b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x3a7910['id']});})[_0xfb4e('0x2e')](function(_0x2df0ea){_0x351844(_0x2df0ea);});});});};var _0x52550f=function(_0x2a4ab1){return new BPromise(function(_0x5f20b4,_0x51b504){_0x30e9b7(_0x2a4ab1,_0x39cd59)[_0xfb4e('0x20')](function(_0x4b1f5f){_0x39cd59[_0xfb4e('0x1a')]=_0x4b1f5f['ret'];_0xeef61d[_0xfb4e('0x26')]['findOne']({'where':{'phone':_0x39cd59[_0xfb4e('0xf')],'VoiceQueueId':_0x2a4ab1['id']}})[_0xfb4e('0x20')](function(_0x293f58){if(!_[_0xfb4e('0x1c')](_0x293f58)){throw new Error(_0xfb4e('0x27')+_0x39cd59[_0xfb4e('0xf')]+_0xfb4e('0x2f')+_0x2a4ab1['id']);}return _0xeef61d[_0xfb4e('0x30')][_0xfb4e('0x1f')]({'where':{'calleridnum':_0x39cd59[_0xfb4e('0xf')],'VoiceQueueId':_0x2a4ab1['id']}});})[_0xfb4e('0x20')](function(_0x1f2517){if(!_[_0xfb4e('0x1c')](_0x1f2517)){throw new Error(_0xfb4e('0x31')+_0x39cd59['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x2a4ab1['id']);}return _0xeef61d[_0xfb4e('0x26')]['create']({'phone':_0x39cd59[_0xfb4e('0xf')],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59[_0xfb4e('0x2b')]:0x2,'scheduledat':_0x39cd59[_0xfb4e('0x1a')]?_0x39cd59[_0xfb4e('0x1a')]:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')),'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59['callbackUniqueid']?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59[_0xfb4e('0x2d')]?moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')):undefined,'VoiceQueueId':_0x2a4ab1['id']});})[_0xfb4e('0x2e')](function(_0x437fdd){_0x51b504(_0x437fdd);});});});};function _0x40ca5b(){return function(_0x318e9f){logger[_0xfb4e('0x32')](_0xfb4e('0x33'),_0xfb4e('0x18'),util[_0xfb4e('0x19')](_0x318e9f,{'showHidden':![],'depth':null}));};}function _0x54c8ce(_0x2b8520,_0x67f93a){var _0x5ad7c3=_0x67f93a[_0xfb4e('0x1a')]?_0x67f93a[_0xfb4e('0x1a')]:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c'));return new BPromise(function(_0x36ebf7,_0x2c2db5){if(_['isNil'](_0x67f93a['dialTimezone'])){_0x36ebf7({'ret':_0x5ad7c3});}else{_0xeef61d[_0xfb4e('0x34')]['findOne']({'where':{'id':_0x2b8520['id']}})['then'](function(_0x4fa8a7){if(!_['isNil'](_0x4fa8a7)){var _0x4dcc4a=_0x4fa8a7[_0xfb4e('0x1d')];if(!_[_0xfb4e('0x1c')](_0x4dcc4a)){var _0x5eacc4=shared[_0xfb4e('0x21')];var _0x53079b=_0x5eacc4[_0x4dcc4a];var _0x79503=_0x5eacc4[_0x67f93a[_0xfb4e('0x1d')]];if(!_[_0xfb4e('0x1c')](_0x53079b)&&!_['isNil'](_0x79503)){var _0x22897b=_0x53079b[_0xfb4e('0x22')]-_0x79503[_0xfb4e('0x22')];_0x5ad7c3=_0x67f93a[_0xfb4e('0x1a')]?_0x67f93a[_0xfb4e('0x1a')]:moment();var _0x10485b=moment(_0x5ad7c3)[_0xfb4e('0x23')](_0x22897b,_0xfb4e('0x24'));_0x36ebf7({'ret':_0x10485b['format'](_0xfb4e('0x2c'))});}else _0x36ebf7({'ret':_0x5ad7c3});}else _0x36ebf7({'ret':_0x5ad7c3});}else{_0x36ebf7({'ret':_0x5ad7c3});}});}});return 0xa;}var _0x333223=function(_0x246989){return new BPromise(function(_0x1f219a,_0x23800f){_0x54c8ce(_0x246989,_0x39cd59)[_0xfb4e('0x20')](function(_0x4e4b64){_0x39cd59[_0xfb4e('0x1a')]=_0x4e4b64['ret'];_0xeef61d['CmHopper'][_0xfb4e('0x1f')]({'where':{'phone':_0x39cd59['phone'],'CampaignId':_0x246989['id']}})['then'](function(_0xca5bce){if(!_['isNil'](_0xca5bce)){throw new Error(_0xfb4e('0x27')+_0x39cd59[_0xfb4e('0xf')]+_0xfb4e('0x35')+_0x246989['id']);}return _0xeef61d['CmHopper'][_0xfb4e('0x29')]({'phone':_0x39cd59['phone'],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59['ListId'],'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59[_0xfb4e('0x2b')]:0x2,'scheduledat':_0x39cd59['scheduledat']?_0x39cd59[_0xfb4e('0x1a')]:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')),'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59[_0xfb4e('0x2d')]?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59[_0xfb4e('0x2d')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x246989['id']});})[_0xfb4e('0x2e')](function(_0x56970d){_0x23800f(_0x56970d);});});});};var _0x1f677a=function(_0x35a7f6){return new BPromise(function(_0x1dbf4d,_0x59716d){_0x54c8ce(_0x35a7f6,_0x39cd59)[_0xfb4e('0x20')](function(_0x166d35){_0x39cd59['scheduledat']=_0x166d35['ret'];_0xeef61d['CmHopper'][_0xfb4e('0x1f')]({'where':{'phone':_0x39cd59['phone'],'CampaignId':_0x35a7f6['id']}})[_0xfb4e('0x20')](function(_0x2ee784){if(!_['isNil'](_0x2ee784)){throw new Error(_0xfb4e('0x27')+_0x39cd59[_0xfb4e('0xf')]+_0xfb4e('0x36')+_0x35a7f6['id']);}return _0xeef61d[_0xfb4e('0x30')][_0xfb4e('0x1f')]({'where':{'calleridnum':_0x39cd59[_0xfb4e('0xf')],'CampaignId':_0x35a7f6['id']}});})[_0xfb4e('0x20')](function(_0x46e7dc){if(!_['isNil'](_0x46e7dc)){throw new Error(_0xfb4e('0x31')+_0x39cd59[_0xfb4e('0xf')]+_0xfb4e('0x37')+_0x35a7f6['id']);}return _0xeef61d[_0xfb4e('0x26')][_0xfb4e('0x29')]({'phone':_0x39cd59['phone'],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59[_0xfb4e('0x2b')]:0x2,'scheduledat':_0x39cd59[_0xfb4e('0x1a')]?_0x39cd59[_0xfb4e('0x1a')]:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')),'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59[_0xfb4e('0x2d')]?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59['callbackUniqueid']?moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')):undefined,'CampaignId':_0x35a7f6['id']});})[_0xfb4e('0x2e')](function(_0xea097e){_0x59716d(_0xea097e);});});});};if(_0x39cd59[_0xfb4e('0x2a')]){_0xeef61d['VoiceQueue'][_0xfb4e('0x38')]({'where':{'type':'outbound'},'attributes':['id',_0xfb4e('0x39'),_0xfb4e('0x1d')],'include':[{'model':_0xeef61d['CmList'],'as':'Lists','where':{'id':_0x39cd59['ListId']}}]})['then'](function(_0x2a77ed){if(_0x2a77ed){var _0x18e5e0=[];for(var _0x3b6e54=0x0,_0x4d253f;_0x3b6e54<_0x2a77ed[_0xfb4e('0x3a')];_0x3b6e54+=0x1){_0x4d253f=_0x2a77ed[_0x3b6e54][_0xfb4e('0x17')]({'plain':!![]});switch(_0x4d253f[_0xfb4e('0x39')]){case _0xfb4e('0x3b'):_0x52550f(_0x4d253f)[_0xfb4e('0x2e')](_0x3f42e5());break;case _0xfb4e('0x3c'):_0x2414e9(_0x4d253f)[_0xfb4e('0x2e')](_0x3f42e5());break;default:_0x54c8ce(_0x4d253f,_0x39cd59)[_0xfb4e('0x20')](function(_0x37e906){_0x39cd59[_0xfb4e('0x1a')]=_0x37e906[_0xfb4e('0x25')];_0xeef61d['CmHopper'][_0xfb4e('0x29')]({'phone':_0x39cd59[_0xfb4e('0xf')],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'scheduledat':_0x39cd59[_0xfb4e('0x1a')]?_0x39cd59['scheduledat']:moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')),'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59['priority']:0x2,'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59[_0xfb4e('0x2d')]?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59[_0xfb4e('0x2d')]?moment()[_0xfb4e('0x1b')](_0xfb4e('0x2c')):undefined,'VoiceQueueId':_0x4d253f['id']})[_0xfb4e('0x2e')](_0x3f42e5());});}}}})[_0xfb4e('0x20')](function(){return _0xeef61d[_0xfb4e('0x1e')][_0xfb4e('0x38')]({'where':{'type':_0xfb4e('0x3d')},'attributes':['id'],'include':[{'model':_0xeef61d[_0xfb4e('0x3e')],'as':_0xfb4e('0x3f'),'where':{'id':_0x39cd59[_0xfb4e('0x2a')]}}]})[_0xfb4e('0x20')](function(_0xb484ba){if(_0xb484ba){var _0x220b18=[];for(var _0x14bf1a=0x0,_0x20f365;_0x14bf1a<_0xb484ba['length'];_0x14bf1a+=0x1){_0x20f365=_0xb484ba[_0x14bf1a]['get']({'plain':!![]});_0xeef61d['CmHopperBlack'][_0xfb4e('0x29')]({'phone':_0x39cd59['phone'],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'VoiceQueueId':_0x20f365['id']})[_0xfb4e('0x2e')](function(_0x1f7a35){logger['error'](_0xfb4e('0x40'),_0xfb4e('0x18'),_0x1f7a35[_0xfb4e('0x41')]);});}}});})['then'](function(){return _0xeef61d['Campaign'][_0xfb4e('0x38')]({'attributes':['id',_0xfb4e('0x39'),'dialTimezone'],'include':[{'model':_0xeef61d[_0xfb4e('0x3e')],'as':'Lists','where':{'id':_0x39cd59['ListId']}}]})['then'](function(_0x1aff4b){if(_0x1aff4b){var _0x5d1421=[];for(var _0xf19d36=0x0,_0x10b66f;_0xf19d36<_0x1aff4b[_0xfb4e('0x3a')];_0xf19d36+=0x1){_0x10b66f=_0x1aff4b[_0xf19d36][_0xfb4e('0x17')]({'plain':!![]});switch(_0x10b66f['dialCheckDuplicateType']){case _0xfb4e('0x3b'):_0x1f677a(_0x10b66f)[_0xfb4e('0x2e')](_0x40ca5b());break;case _0xfb4e('0x3c'):_0x333223(_0x10b66f)[_0xfb4e('0x2e')](_0x40ca5b());break;default:_0xeef61d[_0xfb4e('0x26')]['create']({'phone':_0x39cd59[_0xfb4e('0xf')],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59[_0xfb4e('0x2a')],'scheduledat':_0x39cd59[_0xfb4e('0x1a')]?_0x39cd59['scheduledat']:moment()['format'](_0xfb4e('0x2c')),'priority':_0x39cd59[_0xfb4e('0x2b')]?_0x39cd59[_0xfb4e('0x2b')]:0x2,'callback':_0x39cd59[_0xfb4e('0x2d')]?!![]:![],'callbackuniqueid':_0x39cd59[_0xfb4e('0x2d')]?_0x39cd59[_0xfb4e('0x2d')]:undefined,'callbackat':_0x39cd59[_0xfb4e('0x2d')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x10b66f['id']})[_0xfb4e('0x2e')](_0x40ca5b());}}}});})[_0xfb4e('0x20')](function(){return _0xeef61d[_0xfb4e('0x34')][_0xfb4e('0x38')]({'attributes':['id'],'include':[{'model':_0xeef61d[_0xfb4e('0x3e')],'as':_0xfb4e('0x3f'),'where':{'id':_0x39cd59[_0xfb4e('0x2a')]}}]})[_0xfb4e('0x20')](function(_0x1727de){if(_0x1727de){var _0x3c6d1a=[];for(var _0x3dd113=0x0,_0x3cb653;_0x3dd113<_0x1727de[_0xfb4e('0x3a')];_0x3dd113+=0x1){_0x3cb653=_0x1727de[_0x3dd113][_0xfb4e('0x17')]({'plain':!![]});_0xeef61d[_0xfb4e('0x42')][_0xfb4e('0x29')]({'phone':_0x39cd59[_0xfb4e('0xf')],'ContactId':_0x39cd59['id'],'ListId':_0x39cd59['ListId'],'CampaignId':_0x3cb653['id']})[_0xfb4e('0x2e')](function(_0x1d8f67){logger[_0xfb4e('0x32')](_0xfb4e('0x40'),_0xfb4e('0x18'),_0x1d8f67[_0xfb4e('0x41')]);});}}});})[_0xfb4e('0x20')](function(){_0x5dc826();})[_0xfb4e('0x2e')](function(_0x18f92b){logger['error'](_0xfb4e('0x40'),_0xfb4e('0x18'),_0x18f92b['message']);_0x5dc826(_0x18f92b);});}else{_0x5dc826(new Error(_0xfb4e('0x43')));}},'afterDestroy':function(_0xa164b0,_0x5a641c,_0x3cd6db){var _0x816d4c=_0x2e0632[_0xfb4e('0x16')];var _0x36d130=_0xa164b0[_0xfb4e('0x17')]({'plain':!![]});return _0x816d4c[_0xfb4e('0x26')][_0xfb4e('0x38')]({'raw':!![],'where':{'ListId':_0x36d130[_0xfb4e('0x2a')],'ContactId':_0x36d130['id']}})[_0xfb4e('0x20')](function(_0x1b4fc6){if(!_[_0xfb4e('0x44')](_0x1b4fc6)){var _0x2b520f=[];for(var _0xbea24e=0x0;_0xbea24e<_0x1b4fc6[_0xfb4e('0x3a')];_0xbea24e+=0x1){var _0xebaebf=_0x816d4c['CmHopper']['destroy']({'where':{'ListId':_0x1b4fc6[_0xbea24e][_0xfb4e('0x2a')],'ContactId':_0x1b4fc6[_0xbea24e]['ContactId'],'VoiceQueueId':_0x1b4fc6[_0xbea24e][_0xfb4e('0x45')],'CampaignId':_0x1b4fc6[_0xbea24e]['CampaignId']}});_0x2b520f[_0xfb4e('0x46')](_0xebaebf);}return BPromise['all'](_0x2b520f);}})[_0xfb4e('0x20')](function(_0x596b85){logger[_0xfb4e('0x47')]('[CmContact][afterDestroy][Succesfull]',util[_0xfb4e('0x19')](_0x596b85,{'showHidden':![],'depth':null}));_0x3cd6db();})[_0xfb4e('0x2e')](function(_0x394949){logger[_0xfb4e('0x32')](_0xfb4e('0x48'),util[_0xfb4e('0x19')](_0x394949,{'showHidden':![],'depth':null}));_0x3cd6db(_0x394949);});}}});};
\ No newline at end of file
index d87a8cb..5432534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x640c70,_0x335348){var _0x3c1528=function(_0x1b0046){while(--_0x1b0046){_0x640c70['push'](_0x640c70['shift']());}};_0x3c1528(++_0x335348);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
+var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x2fee5f,_0x484829){var _0x4aa328=function(_0x321f8b){while(--_0x321f8b){_0x2fee5f['push'](_0x2fee5f['shift']());}};_0x4aa328(++_0x484829);}(_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 squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
index 67ab278..1a01aa9 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(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 8159864..870ab05 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(_0x78fa07,_0x4d7642){var _0x27f22a=function(_0x4e060a){while(--_0x4e060a){_0x78fa07['push'](_0x78fa07['shift']());}};_0x27f22a(++_0x4d7642);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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(_0x198a67,_0x2b152f){var _0xe5d484=function(_0x237e5e){while(--_0x237e5e){_0x198a67['push'](_0x198a67['shift']());}};_0xe5d484(++_0x2b152f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 214c6fb..057a291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x652b=['sequelize','exports','INTEGER','STRING'];(function(_0x4f5df5,_0x26aa83){var _0x339c31=function(_0x1e21ec){while(--_0x1e21ec){_0x4f5df5['push'](_0x4f5df5['shift']());}};_0x339c31(++_0x26aa83);}(_0x652b,0x68));var _0xb652=function(_0x352d28,_0x444033){_0x352d28=_0x352d28-0x0;var _0x387d7e=_0x652b[_0x352d28];return _0x387d7e;};'use strict';var Sequelize=require(_0xb652('0x0'));module[_0xb652('0x1')]={'CmContactId':{'type':Sequelize[_0xb652('0x2')],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xb652('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xb652('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xb652('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0x63bb=['INTEGER','STRING','PHONE','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x63bb,0xf8));var _0xb63b=function(_0x5951e8,_0x42b9a7){_0x5951e8=_0x5951e8-0x0;var _0x20a1f5=_0x63bb[_0x5951e8];return _0x20a1f5;};'use strict';var Sequelize=require(_0xb63b('0x0'));module[_0xb63b('0x1')]={'CmContactId':{'type':Sequelize[_0xb63b('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xb63b('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xb63b('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xb63b('0x3')],'defaultValue':_0xb63b('0x4')},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize['STRING'],'defaultValue':null}};
\ No newline at end of file
index d92f19b..74a0614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2689=['query','keys','filters','intersection','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','length','includeAll','find','create','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','get','CmContactHasItems','UserProfileResource','error','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','model'];(function(_0x1df4bf,_0x28ba68){var _0x3a1ee1=function(_0x3cd344){while(--_0x3cd344){_0x1df4bf['push'](_0x1df4bf['shift']());}};_0x3a1ee1(++_0x28ba68);}(_0x2689,0x6a));var _0x9268=function(_0x243042,_0x3d49dd){_0x243042=_0x243042-0x0;var _0x3a1ade=_0x2689[_0x243042];return _0x3a1ade;};'use strict';var emlformat=require(_0x9268('0x0'));var rimraf=require(_0x9268('0x1'));var zipdir=require(_0x9268('0x2'));var jsonpatch=require(_0x9268('0x3'));var rp=require('request-promise');var moment=require(_0x9268('0x4'));var BPromise=require(_0x9268('0x5'));var Mustache=require('mustache');var util=require(_0x9268('0x6'));var path=require(_0x9268('0x7'));var sox=require('sox');var csv=require(_0x9268('0x8'));var ejs=require(_0x9268('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9268('0xa'));var squel=require(_0x9268('0xb'));var crypto=require('crypto');var jsforce=require(_0x9268('0xc'));var deskjs=require(_0x9268('0xd'));var toCsv=require(_0x9268('0x8'));var querystring=require('querystring');var Papa=require(_0x9268('0xe'));var Redis=require(_0x9268('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9268('0x10'));var as=require(_0x9268('0x11'));var hardwareService=require(_0x9268('0x12'));var logger=require(_0x9268('0x13'))(_0x9268('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9268('0x15'));var db=require(_0x9268('0x16'))['db'];function respondWithStatusCode(_0x4aa28d,_0xa54274){_0xa54274=_0xa54274||0xcc;return function(_0x228e5b){if(_0x228e5b){return _0x4aa28d[_0x9268('0x17')](_0xa54274);}return _0x4aa28d[_0x9268('0x18')](_0xa54274)[_0x9268('0x19')]();};}function respondWithResult(_0x469c02,_0x23112d){_0x23112d=_0x23112d||0xc8;return function(_0x4268bc){if(_0x4268bc){return _0x469c02[_0x9268('0x18')](_0x23112d)['json'](_0x4268bc);}};}function respondWithFilteredResult(_0x20f56c,_0x4a4469){return function(_0x5b1624){if(_0x5b1624){var _0x2c14cd=typeof _0x4a4469[_0x9268('0x1a')]===_0x9268('0x1b')&&typeof _0x4a4469[_0x9268('0x1c')]===_0x9268('0x1b');var _0x598865=_0x5b1624[_0x9268('0x1d')];var _0x2ca339=_0x2c14cd?0x0:_0x4a4469['offset'];var _0x542240=_0x2c14cd?_0x5b1624[_0x9268('0x1d')]:_0x4a4469['offset']+_0x4a4469[_0x9268('0x1c')];var _0x2dbe89;if(_0x542240>=_0x598865){_0x542240=_0x598865;_0x2dbe89=0xc8;}else{_0x2dbe89=0xce;}_0x20f56c[_0x9268('0x18')](_0x2dbe89);return _0x20f56c[_0x9268('0x1e')](_0x9268('0x1f'),_0x2ca339+'-'+_0x542240+'/'+_0x598865)[_0x9268('0x20')](_0x5b1624);}return null;};}function patchUpdates(_0x24a15e){return function(_0x450ae2){try{jsonpatch[_0x9268('0x21')](_0x450ae2,_0x24a15e,!![]);}catch(_0x495fc9){return BPromise[_0x9268('0x22')](_0x495fc9);}return _0x450ae2['save']();};}function saveUpdates(_0x3fa83d,_0x1ecce3){return function(_0x542863){if(_0x542863){return _0x542863['update'](_0x3fa83d)['then'](function(_0x5dbf59){return _0x5dbf59;});}return null;};}function removeEntity(_0x168ee8,_0x5e1af9){return function(_0x12f50e){if(_0x12f50e){return _0x12f50e['destroy']()[_0x9268('0x23')](function(){var _0x2a5dfd=_0x12f50e[_0x9268('0x24')]({'plain':!![]});var _0x579de1=_0x9268('0x25');return db[_0x9268('0x26')]['destroy']({'where':{'type':_0x579de1,'resourceId':_0x2a5dfd['id']}})[_0x9268('0x23')](function(){return _0x12f50e;});})['then'](function(){_0x168ee8[_0x9268('0x18')](0xcc)[_0x9268('0x19')]();});}};}function handleEntityNotFound(_0x4a4b5a,_0x4c861c){return function(_0x27b116){if(!_0x27b116){_0x4a4b5a[_0x9268('0x17')](0x194);}return _0x27b116;};}function handleError(_0x2da78f,_0x518b22){_0x518b22=_0x518b22||0x1f4;return function(_0x45b9e3){logger[_0x9268('0x27')](_0x45b9e3['stack']);if(_0x45b9e3[_0x9268('0x28')]){delete _0x45b9e3[_0x9268('0x28')];}_0x2da78f[_0x9268('0x18')](_0x518b22)[_0x9268('0x29')](_0x45b9e3);};}exports[_0x9268('0x2a')]=function(_0x613e61,_0x53ec6e){var _0x2fdaf4={},_0x53a154={},_0x247d56={'count':0x0,'rows':[]};var _0x4231e5=_[_0x9268('0x2b')](db[_0x9268('0x2c')][_0x9268('0x2d')],function(_0x3263ad){return{'name':_0x3263ad[_0x9268('0x2e')],'type':_0x3263ad['type']['key']};});_0x53a154[_0x9268('0x2f')]=_[_0x9268('0x2b')](_0x4231e5,'name');_0x53a154[_0x9268('0x30')]=_[_0x9268('0x31')](_0x613e61['query']);_0x53a154[_0x9268('0x32')]=_[_0x9268('0x33')](_0x53a154[_0x9268('0x2f')],_0x53a154[_0x9268('0x30')]);_0x2fdaf4['attributes']=_[_0x9268('0x33')](_0x53a154[_0x9268('0x2f')],qs[_0x9268('0x34')](_0x613e61[_0x9268('0x30')][_0x9268('0x34')]));_0x2fdaf4[_0x9268('0x35')]=_0x2fdaf4[_0x9268('0x35')]['length']?_0x2fdaf4[_0x9268('0x35')]:_0x53a154['model'];if(!_0x613e61[_0x9268('0x30')]['hasOwnProperty']('nolimit')){_0x2fdaf4[_0x9268('0x1c')]=qs['limit'](_0x613e61['query']['limit']);_0x2fdaf4[_0x9268('0x1a')]=qs[_0x9268('0x1a')](_0x613e61['query'][_0x9268('0x1a')]);}_0x2fdaf4[_0x9268('0x36')]=qs[_0x9268('0x37')](_0x613e61[_0x9268('0x30')]['sort']);_0x2fdaf4[_0x9268('0x38')]=qs['filters'](_[_0x9268('0x39')](_0x613e61[_0x9268('0x30')],_0x53a154[_0x9268('0x32')]),_0x4231e5);if(_0x613e61['query'][_0x9268('0x3a')]){_0x2fdaf4[_0x9268('0x38')]=_[_0x9268('0x3b')](_0x2fdaf4['where'],{'$or':_['map'](_0x4231e5,function(_0x144aac){if(_0x144aac['type']!==_0x9268('0x3c')){var _0x6a461d={};_0x6a461d[_0x144aac[_0x9268('0x28')]]={'$like':'%'+_0x613e61[_0x9268('0x30')]['filter']+'%'};return _0x6a461d;}})});}_0x2fdaf4=_[_0x9268('0x3b')]({},_0x2fdaf4,_0x613e61[_0x9268('0x3d')]);var _0x5eebfe={'where':_0x2fdaf4[_0x9268('0x38')]};return db[_0x9268('0x2c')][_0x9268('0x1d')](_0x5eebfe)[_0x9268('0x23')](function(_0x456da0){_0x247d56[_0x9268('0x1d')]=_0x456da0;if(_0x613e61[_0x9268('0x30')]['includeAll']){_0x2fdaf4[_0x9268('0x3e')]=[{'all':!![]}];}return db[_0x9268('0x2c')]['findAll'](_0x2fdaf4);})[_0x9268('0x23')](function(_0x3a7f78){_0x247d56[_0x9268('0x3f')]=_0x3a7f78;return _0x247d56;})[_0x9268('0x23')](respondWithFilteredResult(_0x53ec6e,_0x2fdaf4))[_0x9268('0x40')](handleError(_0x53ec6e,null));};exports[_0x9268('0x41')]=function(_0x44b8d2,_0x1f3ef5){var _0x4f42c9={'raw':!![],'where':{'id':_0x44b8d2[_0x9268('0x42')]['id']}},_0x4d302e={};_0x4d302e[_0x9268('0x2f')]=_[_0x9268('0x31')](db[_0x9268('0x2c')][_0x9268('0x2d')]);_0x4d302e[_0x9268('0x30')]=_['keys'](_0x44b8d2[_0x9268('0x30')]);_0x4d302e[_0x9268('0x32')]=_[_0x9268('0x33')](_0x4d302e[_0x9268('0x2f')],_0x4d302e[_0x9268('0x30')]);_0x4f42c9[_0x9268('0x35')]=_['intersection'](_0x4d302e[_0x9268('0x2f')],qs['fields'](_0x44b8d2[_0x9268('0x30')][_0x9268('0x34')]));_0x4f42c9['attributes']=_0x4f42c9[_0x9268('0x35')][_0x9268('0x43')]?_0x4f42c9[_0x9268('0x35')]:_0x4d302e[_0x9268('0x2f')];if(_0x44b8d2[_0x9268('0x30')][_0x9268('0x44')]){_0x4f42c9[_0x9268('0x3e')]=[{'all':!![]}];}_0x4f42c9=_[_0x9268('0x3b')]({},_0x4f42c9,_0x44b8d2[_0x9268('0x3d')]);return db[_0x9268('0x2c')][_0x9268('0x45')](_0x4f42c9)[_0x9268('0x23')](handleEntityNotFound(_0x1f3ef5,null))[_0x9268('0x23')](respondWithResult(_0x1f3ef5,null))['catch'](handleError(_0x1f3ef5,null));};exports['create']=function(_0x9cfa6b,_0x546efd){return db[_0x9268('0x2c')][_0x9268('0x46')](_0x9cfa6b['body'],{})[_0x9268('0x23')](function(_0xbbaee6){var _0x55336f=_0x9cfa6b[_0x9268('0x47')]['get']({'plain':!![]});if(!_0x55336f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55336f['role']==='user'){var _0x1dbb17=_0xbbaee6[_0x9268('0x24')]({'plain':!![]});var _0x3563c2='CmContactHasItems';return db[_0x9268('0x48')][_0x9268('0x45')]({'where':{'name':_0x3563c2,'userProfileId':_0x55336f[_0x9268('0x49')]},'raw':!![]})[_0x9268('0x23')](function(_0x494174){if(_0x494174&&_0x494174['autoAssociation']===0x0){return db[_0x9268('0x26')][_0x9268('0x46')]({'name':_0x1dbb17[_0x9268('0x28')],'resourceId':_0x1dbb17['id'],'type':_0x494174['name'],'sectionId':_0x494174['id']},{})[_0x9268('0x23')](function(){return _0xbbaee6;});}else{return _0xbbaee6;}})[_0x9268('0x40')](function(_0x39adde){logger[_0x9268('0x27')](_0x9268('0x4a'),_0x39adde);throw _0x39adde;});}return _0xbbaee6;})[_0x9268('0x23')](respondWithResult(_0x546efd,0xc9))[_0x9268('0x40')](handleError(_0x546efd,null));};exports['update']=function(_0x378b0e,_0x20dad1){if(_0x378b0e[_0x9268('0x4b')]['id']){delete _0x378b0e[_0x9268('0x4b')]['id'];}return db['CmContactHasItem'][_0x9268('0x45')]({'where':{'id':_0x378b0e[_0x9268('0x42')]['id']}})[_0x9268('0x23')](handleEntityNotFound(_0x20dad1,null))[_0x9268('0x23')](saveUpdates(_0x378b0e[_0x9268('0x4b')],null))[_0x9268('0x23')](respondWithResult(_0x20dad1,null))[_0x9268('0x40')](handleError(_0x20dad1,null));};exports[_0x9268('0x4c')]=function(_0x1d5e33,_0x712c86){return db[_0x9268('0x2c')]['find']({'where':{'id':_0x1d5e33[_0x9268('0x42')]['id']}})['then'](handleEntityNotFound(_0x712c86,null))[_0x9268('0x23')](removeEntity(_0x712c86,null))[_0x9268('0x40')](handleError(_0x712c86,null));};
\ No newline at end of file
+var _0x2bed=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','status','Content-Range','apply','reject','save','update','then','get','CmContactHasItems','UserProfileResource','end','error','stack','index','CmContactHasItem','rawAttributes','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware'];(function(_0x4b2320,_0x402a48){var _0x188927=function(_0x1e93a2){while(--_0x1e93a2){_0x4b2320['push'](_0x4b2320['shift']());}};_0x188927(++_0x402a48);}(_0x2bed,0x13e));var _0xd2be=function(_0x17bdbe,_0x2f75d4){_0x17bdbe=_0x17bdbe-0x0;var _0x5520e0=_0x2bed[_0x17bdbe];return _0x5520e0;};'use strict';var emlformat=require(_0xd2be('0x0'));var rimraf=require(_0xd2be('0x1'));var zipdir=require(_0xd2be('0x2'));var jsonpatch=require(_0xd2be('0x3'));var rp=require(_0xd2be('0x4'));var moment=require(_0xd2be('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xd2be('0x6'));var util=require(_0xd2be('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd2be('0x8'));var ejs=require(_0xd2be('0x9'));var fs=require('fs');var fs_extra=require(_0xd2be('0xa'));var _=require('lodash');var squel=require(_0xd2be('0xb'));var crypto=require('crypto');var jsforce=require(_0xd2be('0xc'));var deskjs=require(_0xd2be('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd2be('0xe'));var Papa=require('papaparse');var Redis=require(_0xd2be('0xf'));var authService=require(_0xd2be('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd2be('0x11'));var logger=require(_0xd2be('0x12'))(_0xd2be('0x13'));var utils=require(_0xd2be('0x14'));var config=require(_0xd2be('0x15'));var licenseUtil=require(_0xd2be('0x16'));var db=require(_0xd2be('0x17'))['db'];function respondWithStatusCode(_0xf1d11e,_0x15858f){_0x15858f=_0x15858f||0xcc;return function(_0xf6bf26){if(_0xf6bf26){return _0xf1d11e[_0xd2be('0x18')](_0x15858f);}return _0xf1d11e['status'](_0x15858f)['end']();};}function respondWithResult(_0x143a24,_0x140d35){_0x140d35=_0x140d35||0xc8;return function(_0x100211){if(_0x100211){return _0x143a24['status'](_0x140d35)[_0xd2be('0x19')](_0x100211);}};}function respondWithFilteredResult(_0x5e553d,_0x177d6a){return function(_0x860a7a){if(_0x860a7a){var _0x557e51=typeof _0x177d6a[_0xd2be('0x1a')]===_0xd2be('0x1b')&&typeof _0x177d6a['limit']==='undefined';var _0x24f1fd=_0x860a7a['count'];var _0x2f14e4=_0x557e51?0x0:_0x177d6a['offset'];var _0x3f3be3=_0x557e51?_0x860a7a['count']:_0x177d6a[_0xd2be('0x1a')]+_0x177d6a[_0xd2be('0x1c')];var _0x33bf9d;if(_0x3f3be3>=_0x24f1fd){_0x3f3be3=_0x24f1fd;_0x33bf9d=0xc8;}else{_0x33bf9d=0xce;}_0x5e553d[_0xd2be('0x1d')](_0x33bf9d);return _0x5e553d['set'](_0xd2be('0x1e'),_0x2f14e4+'-'+_0x3f3be3+'/'+_0x24f1fd)['json'](_0x860a7a);}return null;};}function patchUpdates(_0x2f2965){return function(_0x4d2f9b){try{jsonpatch[_0xd2be('0x1f')](_0x4d2f9b,_0x2f2965,!![]);}catch(_0x2627cc){return BPromise[_0xd2be('0x20')](_0x2627cc);}return _0x4d2f9b[_0xd2be('0x21')]();};}function saveUpdates(_0x2433b3,_0x470400){return function(_0x2fa754){if(_0x2fa754){return _0x2fa754[_0xd2be('0x22')](_0x2433b3)[_0xd2be('0x23')](function(_0x460574){return _0x460574;});}return null;};}function removeEntity(_0x2989fe,_0x18f536){return function(_0x180c16){if(_0x180c16){return _0x180c16['destroy']()[_0xd2be('0x23')](function(){var _0x28f459=_0x180c16[_0xd2be('0x24')]({'plain':!![]});var _0x3f3f82=_0xd2be('0x25');return db[_0xd2be('0x26')]['destroy']({'where':{'type':_0x3f3f82,'resourceId':_0x28f459['id']}})['then'](function(){return _0x180c16;});})[_0xd2be('0x23')](function(){_0x2989fe[_0xd2be('0x1d')](0xcc)[_0xd2be('0x27')]();});}};}function handleEntityNotFound(_0x175447,_0x33e8b8){return function(_0x710478){if(!_0x710478){_0x175447[_0xd2be('0x18')](0x194);}return _0x710478;};}function handleError(_0x26d16e,_0x385d9a){_0x385d9a=_0x385d9a||0x1f4;return function(_0x2f11e3){logger[_0xd2be('0x28')](_0x2f11e3[_0xd2be('0x29')]);if(_0x2f11e3['name']){delete _0x2f11e3['name'];}_0x26d16e[_0xd2be('0x1d')](_0x385d9a)['send'](_0x2f11e3);};}exports[_0xd2be('0x2a')]=function(_0x2ca207,_0x3b44b3){var _0x291fc8={},_0x5dc59b={},_0x196506={'count':0x0,'rows':[]};var _0x4122f2=_['map'](db[_0xd2be('0x2b')][_0xd2be('0x2c')],function(_0x3a454f){return{'name':_0x3a454f['fieldName'],'type':_0x3a454f[_0xd2be('0x2d')][_0xd2be('0x2e')]};});_0x5dc59b[_0xd2be('0x2f')]=_[_0xd2be('0x30')](_0x4122f2,_0xd2be('0x31'));_0x5dc59b[_0xd2be('0x32')]=_[_0xd2be('0x33')](_0x2ca207[_0xd2be('0x32')]);_0x5dc59b[_0xd2be('0x34')]=_[_0xd2be('0x35')](_0x5dc59b[_0xd2be('0x2f')],_0x5dc59b[_0xd2be('0x32')]);_0x291fc8[_0xd2be('0x36')]=_['intersection'](_0x5dc59b[_0xd2be('0x2f')],qs[_0xd2be('0x37')](_0x2ca207[_0xd2be('0x32')][_0xd2be('0x37')]));_0x291fc8[_0xd2be('0x36')]=_0x291fc8['attributes'][_0xd2be('0x38')]?_0x291fc8[_0xd2be('0x36')]:_0x5dc59b[_0xd2be('0x2f')];if(!_0x2ca207[_0xd2be('0x32')][_0xd2be('0x39')](_0xd2be('0x3a'))){_0x291fc8[_0xd2be('0x1c')]=qs['limit'](_0x2ca207[_0xd2be('0x32')][_0xd2be('0x1c')]);_0x291fc8[_0xd2be('0x1a')]=qs['offset'](_0x2ca207['query'][_0xd2be('0x1a')]);}_0x291fc8[_0xd2be('0x3b')]=qs[_0xd2be('0x3c')](_0x2ca207['query'][_0xd2be('0x3c')]);_0x291fc8[_0xd2be('0x3d')]=qs[_0xd2be('0x34')](_['pick'](_0x2ca207['query'],_0x5dc59b[_0xd2be('0x34')]),_0x4122f2);if(_0x2ca207[_0xd2be('0x32')][_0xd2be('0x3e')]){_0x291fc8[_0xd2be('0x3d')]=_[_0xd2be('0x3f')](_0x291fc8['where'],{'$or':_[_0xd2be('0x30')](_0x4122f2,function(_0x59844b){if(_0x59844b[_0xd2be('0x2d')]!==_0xd2be('0x40')){var _0x4f54ea={};_0x4f54ea[_0x59844b[_0xd2be('0x31')]]={'$like':'%'+_0x2ca207[_0xd2be('0x32')]['filter']+'%'};return _0x4f54ea;}})});}_0x291fc8=_[_0xd2be('0x3f')]({},_0x291fc8,_0x2ca207[_0xd2be('0x41')]);var _0x4f818f={'where':_0x291fc8[_0xd2be('0x3d')]};return db[_0xd2be('0x2b')]['count'](_0x4f818f)[_0xd2be('0x23')](function(_0x3fa5ab){_0x196506[_0xd2be('0x42')]=_0x3fa5ab;if(_0x2ca207['query'][_0xd2be('0x43')]){_0x291fc8[_0xd2be('0x44')]=[{'all':!![]}];}return db[_0xd2be('0x2b')][_0xd2be('0x45')](_0x291fc8);})[_0xd2be('0x23')](function(_0x2a4c12){_0x196506[_0xd2be('0x46')]=_0x2a4c12;return _0x196506;})['then'](respondWithFilteredResult(_0x3b44b3,_0x291fc8))['catch'](handleError(_0x3b44b3,null));};exports['show']=function(_0x2c2496,_0x491e38){var _0x1a922f={'raw':!![],'where':{'id':_0x2c2496[_0xd2be('0x47')]['id']}},_0x3216eb={};_0x3216eb['model']=_[_0xd2be('0x33')](db['CmContactHasItem'][_0xd2be('0x2c')]);_0x3216eb[_0xd2be('0x32')]=_[_0xd2be('0x33')](_0x2c2496['query']);_0x3216eb['filters']=_[_0xd2be('0x35')](_0x3216eb[_0xd2be('0x2f')],_0x3216eb[_0xd2be('0x32')]);_0x1a922f[_0xd2be('0x36')]=_[_0xd2be('0x35')](_0x3216eb[_0xd2be('0x2f')],qs['fields'](_0x2c2496['query']['fields']));_0x1a922f[_0xd2be('0x36')]=_0x1a922f[_0xd2be('0x36')][_0xd2be('0x38')]?_0x1a922f[_0xd2be('0x36')]:_0x3216eb[_0xd2be('0x2f')];if(_0x2c2496[_0xd2be('0x32')]['includeAll']){_0x1a922f[_0xd2be('0x44')]=[{'all':!![]}];}_0x1a922f=_[_0xd2be('0x3f')]({},_0x1a922f,_0x2c2496[_0xd2be('0x41')]);return db['CmContactHasItem'][_0xd2be('0x48')](_0x1a922f)[_0xd2be('0x23')](handleEntityNotFound(_0x491e38,null))[_0xd2be('0x23')](respondWithResult(_0x491e38,null))[_0xd2be('0x49')](handleError(_0x491e38,null));};exports[_0xd2be('0x4a')]=function(_0x4137b9,_0x39fa03){return db[_0xd2be('0x2b')][_0xd2be('0x4a')](_0x4137b9[_0xd2be('0x4b')],{})[_0xd2be('0x23')](function(_0x5d6e74){var _0x37ff6e=_0x4137b9[_0xd2be('0x4c')]['get']({'plain':!![]});if(!_0x37ff6e)throw new Error(_0xd2be('0x4d'));if(_0x37ff6e[_0xd2be('0x4e')]===_0xd2be('0x4c')){var _0x5d4a81=_0x5d6e74[_0xd2be('0x24')]({'plain':!![]});var _0x1914dd=_0xd2be('0x25');return db[_0xd2be('0x4f')][_0xd2be('0x48')]({'where':{'name':_0x1914dd,'userProfileId':_0x37ff6e[_0xd2be('0x50')]},'raw':!![]})[_0xd2be('0x23')](function(_0x4ce83f){if(_0x4ce83f&&_0x4ce83f[_0xd2be('0x51')]===0x0){return db[_0xd2be('0x26')][_0xd2be('0x4a')]({'name':_0x5d4a81['name'],'resourceId':_0x5d4a81['id'],'type':_0x4ce83f[_0xd2be('0x31')],'sectionId':_0x4ce83f['id']},{})['then'](function(){return _0x5d6e74;});}else{return _0x5d6e74;}})[_0xd2be('0x49')](function(_0x5e922e){logger[_0xd2be('0x28')](_0xd2be('0x52'),_0x5e922e);throw _0x5e922e;});}return _0x5d6e74;})['then'](respondWithResult(_0x39fa03,0xc9))[_0xd2be('0x49')](handleError(_0x39fa03,null));};exports[_0xd2be('0x22')]=function(_0x50e0e1,_0xaffca7){if(_0x50e0e1['body']['id']){delete _0x50e0e1[_0xd2be('0x4b')]['id'];}return db[_0xd2be('0x2b')][_0xd2be('0x48')]({'where':{'id':_0x50e0e1[_0xd2be('0x47')]['id']}})['then'](handleEntityNotFound(_0xaffca7,null))[_0xd2be('0x23')](saveUpdates(_0x50e0e1[_0xd2be('0x4b')],null))['then'](respondWithResult(_0xaffca7,null))['catch'](handleError(_0xaffca7,null));};exports[_0xd2be('0x53')]=function(_0x1d597e,_0xaba888){return db[_0xd2be('0x2b')][_0xd2be('0x48')]({'where':{'id':_0x1d597e[_0xd2be('0x47')]['id']}})['then'](handleEntityNotFound(_0xaba888,null))[_0xd2be('0x23')](removeEntity(_0xaba888,null))[_0xd2be('0x49')](handleError(_0xaba888,null));};
\ No newline at end of file
index 1366818..0b3e9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a33=['rimraf','../../config/environment','./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','lodash','../../config/logger','api','bluebird','path'];(function(_0x31774c,_0x3439ea){var _0x28030a=function(_0x185779){while(--_0x185779){_0x31774c['push'](_0x31774c['shift']());}};_0x28030a(++_0x3439ea);}(_0x4a33,0x119));var _0x34a3=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x4a33[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x34a3('0x0'));var util=require('util');var logger=require(_0x34a3('0x1'))(_0x34a3('0x2'));var moment=require('moment');var BPromise=require(_0x34a3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x34a3('0x4'));var rimraf=require(_0x34a3('0x5'));var config=require(_0x34a3('0x6'));var attributes=require(_0x34a3('0x7'));module['exports']=function(_0x10dbae,_0x5f022a){return _0x10dbae[_0x34a3('0x8')](_0x34a3('0x9'),attributes,{'tableName':_0x34a3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x831b=['define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports'];(function(_0x3e695e,_0x515cdf){var _0x1acfda=function(_0xc99d71){while(--_0xc99d71){_0x3e695e['push'](_0x3e695e['shift']());}};_0x1acfda(++_0x515cdf);}(_0x831b,0x177));var _0xb831=function(_0x12d4e2,_0x3bb183){_0x12d4e2=_0x12d4e2-0x0;var _0x585e4e=_0x831b[_0x12d4e2];return _0x585e4e;};'use strict';var _=require(_0xb831('0x0'));var util=require(_0xb831('0x1'));var logger=require(_0xb831('0x2'))(_0xb831('0x3'));var moment=require(_0xb831('0x4'));var BPromise=require(_0xb831('0x5'));var rp=require(_0xb831('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb831('0x7'));var config=require('../../config/environment');var attributes=require('./cmContactHasItem.attributes');module[_0xb831('0x8')]=function(_0x2c3d51,_0x1825c6){return _0x2c3d51[_0xb831('0x9')](_0xb831('0xa'),attributes,{'tableName':_0xb831('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f64b783..88be53d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f3=['info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request'];(function(_0x5d3fa2,_0x1271ab){var _0x252c6a=function(_0x5813cc){while(--_0x5813cc){_0x5d3fa2['push'](_0x5d3fa2['shift']());}};_0x252c6a(++_0x1271ab);}(_0x74f3,0x172));var _0x374f=function(_0x148486,_0x380ec8){_0x148486=_0x148486-0x0;var _0x213651=_0x74f3[_0x148486];return _0x213651;};'use strict';var _=require('lodash');var util=require(_0x374f('0x0'));var moment=require(_0x374f('0x1'));var BPromise=require(_0x374f('0x2'));var rs=require(_0x374f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x374f('0x4'))['db'];var utils=require(_0x374f('0x5'));var logger=require(_0x374f('0x6'))('rpc');var config=require(_0x374f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x374f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xca1021,_0x1f70af,_0x1cfd17){return new BPromise(function(_0x38d273,_0x415782){return client[_0x374f('0x9')](_0xca1021,_0x1cfd17)['then'](function(_0x379a87){logger[_0x374f('0xa')](_0x374f('0xb'),_0x1f70af,_0x374f('0xc'));logger[_0x374f('0xd')](_0x374f('0xe'),_0x1f70af,_0x374f('0xc'),JSON[_0x374f('0xf')](_0x379a87));if(_0x379a87[_0x374f('0x10')]){if(_0x379a87[_0x374f('0x10')][_0x374f('0x11')]===0x1f4){logger[_0x374f('0x10')]('CmContactHasItem,\x20%s,\x20%s',_0x1f70af,_0x379a87[_0x374f('0x10')]['message']);return _0x415782(_0x379a87[_0x374f('0x10')][_0x374f('0x12')]);}logger[_0x374f('0x10')](_0x374f('0xb'),_0x1f70af,_0x379a87['error'][_0x374f('0x12')]);return _0x38d273(_0x379a87['error'][_0x374f('0x12')]);}else{logger['info'](_0x374f('0xb'),_0x1f70af,_0x374f('0xc'));_0x38d273(_0x379a87['result'][_0x374f('0x12')]);}})[_0x374f('0x13')](function(_0x2bed9a){logger['error'](_0x374f('0xb'),_0x1f70af,_0x2bed9a);_0x415782(_0x2bed9a);});});}
\ No newline at end of file
+var _0xd0f9=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0xd0f9,0xb1));var _0x9d0f=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xd0f9[_0x12f688];return _0x59c3de;};'use strict';var _=require(_0x9d0f('0x0'));var util=require(_0x9d0f('0x1'));var moment=require('moment');var BPromise=require(_0x9d0f('0x2'));var rs=require(_0x9d0f('0x3'));var fs=require('fs');var Redis=require(_0x9d0f('0x4'));var db=require(_0x9d0f('0x5'))['db'];var utils=require(_0x9d0f('0x6'));var logger=require(_0x9d0f('0x7'))('rpc');var config=require(_0x9d0f('0x8'));var jayson=require(_0x9d0f('0x9'));var client=jayson['client'][_0x9d0f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ecd0d,_0x31b604,_0xda0cde){return new BPromise(function(_0x4b9da9,_0x360c9a){return client[_0x9d0f('0xb')](_0x5ecd0d,_0xda0cde)[_0x9d0f('0xc')](function(_0x6519e4){logger[_0x9d0f('0xd')](_0x9d0f('0xe'),_0x31b604,_0x9d0f('0xf'));logger[_0x9d0f('0x10')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x31b604,'request\x20sent',JSON[_0x9d0f('0x11')](_0x6519e4));if(_0x6519e4[_0x9d0f('0x12')]){if(_0x6519e4[_0x9d0f('0x12')]['code']===0x1f4){logger[_0x9d0f('0x12')]('CmContactHasItem,\x20%s,\x20%s',_0x31b604,_0x6519e4[_0x9d0f('0x12')]['message']);return _0x360c9a(_0x6519e4[_0x9d0f('0x12')][_0x9d0f('0x13')]);}logger[_0x9d0f('0x12')]('CmContactHasItem,\x20%s,\x20%s',_0x31b604,_0x6519e4[_0x9d0f('0x12')]['message']);return _0x4b9da9(_0x6519e4[_0x9d0f('0x12')][_0x9d0f('0x13')]);}else{logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x31b604,_0x9d0f('0xf'));_0x4b9da9(_0x6519e4[_0x9d0f('0x14')][_0x9d0f('0x13')]);}})[_0x9d0f('0x15')](function(_0xcd652b){logger[_0x9d0f('0x12')]('CmContactHasItem,\x20%s,\x20%s',_0x31b604,_0xcd652b);_0x360c9a(_0xcd652b);});});}
\ No newline at end of file
index 64e3153..3962163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85de=['isAuthenticated','index','get','/:id','show','post','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./cmContactHasItem.controller'];(function(_0x12c8ee,_0x3be025){var _0x407f3e=function(_0x264fc8){while(--_0x264fc8){_0x12c8ee['push'](_0x12c8ee['shift']());}};_0x407f3e(++_0x3be025);}(_0x85de,0x1f0));var _0xe85d=function(_0x3de68c,_0x1904c0){_0x3de68c=_0x3de68c-0x0;var _0x7cf988=_0x85de[_0x3de68c];return _0x7cf988;};'use strict';var multer=require(_0xe85d('0x0'));var util=require(_0xe85d('0x1'));var path=require(_0xe85d('0x2'));var timeout=require(_0xe85d('0x3'));var express=require(_0xe85d('0x4'));var router=express['Router']();var fs_extra=require(_0xe85d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe85d('0x6'));var controller=require(_0xe85d('0x7'));router['get']('/',auth[_0xe85d('0x8')](),controller[_0xe85d('0x9')]);router[_0xe85d('0xa')](_0xe85d('0xb'),auth[_0xe85d('0x8')](),controller[_0xe85d('0xc')]);router[_0xe85d('0xd')]('/',auth[_0xe85d('0x8')](),controller['create']);router[_0xe85d('0xe')](_0xe85d('0xb'),auth[_0xe85d('0x8')](),controller[_0xe85d('0xf')]);router[_0xe85d('0x10')]('/:id',auth[_0xe85d('0x8')](),controller['destroy']);module[_0xe85d('0x11')]=router;
\ No newline at end of file
+var _0x254f=['fs-extra','../../components/auth/service','../../components/interaction/service','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','post','put','delete','destroy','path','express','Router'];(function(_0x5b87ce,_0x20b7f6){var _0x597aa7=function(_0x295004){while(--_0x295004){_0x5b87ce['push'](_0x5b87ce['shift']());}};_0x597aa7(++_0x20b7f6);}(_0x254f,0x8d));var _0xf254=function(_0x430722,_0x4a57d8){_0x430722=_0x430722-0x0;var _0x184a00=_0x254f[_0x430722];return _0x184a00;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf254('0x0'));var timeout=require('connect-timeout');var express=require(_0xf254('0x1'));var router=express[_0xf254('0x2')]();var fs_extra=require(_0xf254('0x3'));var auth=require(_0xf254('0x4'));var interaction=require(_0xf254('0x5'));var config=require('../../config/environment');var controller=require(_0xf254('0x6'));router[_0xf254('0x7')]('/',auth[_0xf254('0x8')](),controller[_0xf254('0x9')]);router[_0xf254('0x7')](_0xf254('0xa'),auth['isAuthenticated'](),controller[_0xf254('0xb')]);router[_0xf254('0xc')]('/',auth[_0xf254('0x8')](),controller['create']);router[_0xf254('0xd')](_0xf254('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xf254('0xe')]('/:id',auth[_0xf254('0x8')](),controller[_0xf254('0xf')]);module['exports']=router;
\ No newline at end of file
index 20aeede..0faf3bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebd4=['parse','values','isArray','setDataValue','stringify','BOOLEAN','voice','sequelize','lodash','exports','VIRTUAL','alias','STRING','getDataValue','name','type'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xebd4,0x77));var _0x4ebd=function(_0x31e2e4,_0x3d2bfc){_0x31e2e4=_0x31e2e4-0x0;var _0x1e00e7=_0xebd4[_0x31e2e4];return _0x1e00e7;};'use strict';var Sequelize=require(_0x4ebd('0x0'));var _=require(_0x4ebd('0x1'));module[_0x4ebd('0x2')]={'name':{'type':Sequelize[_0x4ebd('0x3')],'get':function(_0x2ad846){return this['getDataValue'](_0x4ebd('0x4'));}},'alias':{'type':Sequelize[_0x4ebd('0x5')],'allowNull':![],'set':function(_0x3f130c){this['setDataValue'](_0x4ebd('0x4'),_0x3f130c?_0x3f130c:this[_0x4ebd('0x6')](_0x4ebd('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0x4ebd('0x6')](_0x4ebd('0x8'))==='select'){return JSON[_0x4ebd('0x9')](this[_0x4ebd('0x6')](_0x4ebd('0xa')));}else{return this[_0x4ebd('0x6')](_0x4ebd('0xa'));}},'set':function(_0x3356be){if(Array[_0x4ebd('0xb')](_0x3356be)){this[_0x4ebd('0xc')]('values',JSON[_0x4ebd('0xd')](_0x3356be));}else{this['setDataValue']('values',_0x3356be);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x4ebd('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x4ebd('0xf'))}};
\ No newline at end of file
+var _0x4dc7=['isArray','BOOLEAN','ENUM','voice','lodash','alias','STRING','setDataValue','long','type','select','parse','getDataValue','values'];(function(_0x173452,_0x3aa870){var _0xee3fd0=function(_0x10eb01){while(--_0x10eb01){_0x173452['push'](_0x173452['shift']());}};_0xee3fd0(++_0x3aa870);}(_0x4dc7,0x1b6));var _0x74dc=function(_0x5391b7,_0x1b98a4){_0x5391b7=_0x5391b7-0x0;var _0x1ce439=_0x4dc7[_0x5391b7];return _0x1ce439;};'use strict';var Sequelize=require('sequelize');var _=require(_0x74dc('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4091fc){return this['getDataValue'](_0x74dc('0x1'));}},'alias':{'type':Sequelize[_0x74dc('0x2')],'allowNull':![],'set':function(_0x2e61f5){this[_0x74dc('0x3')](_0x74dc('0x1'),_0x2e61f5?_0x2e61f5:this['getDataValue']('name'));}},'type':{'type':Sequelize[_0x74dc('0x2')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0x74dc('0x4')),'get':function(){if(this['getDataValue'](_0x74dc('0x5'))===_0x74dc('0x6')){return JSON[_0x74dc('0x7')](this[_0x74dc('0x8')](_0x74dc('0x9')));}else{return this[_0x74dc('0x8')](_0x74dc('0x9'));}},'set':function(_0x56886f){if(Array[_0x74dc('0xa')](_0x56886f)){this[_0x74dc('0x3')](_0x74dc('0x9'),JSON['stringify'](_0x56886f));}else{this['setDataValue'](_0x74dc('0x9'),_0x56886f);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x74dc('0xb')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x74dc('0xc')](_0x74dc('0xd'))}};
\ No newline at end of file
index fc1ba06..5bb45db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eae=['../../components/parsers/advancedSearch','../../config/logger','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','name','send','index','rawAttributes','fieldName','type','key','model','differenceBy','map','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','CmCustomField','findAll','rows','show','keys','include','catch','body','params','create','sequelize','TEXT','text','Sequelize','number','switch','BOOLEAN','defaultValue','queryInterface','format','cf_%d','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x503b8c,_0xe6d301){var _0x156b87=function(_0x1b4e93){while(--_0x1b4e93){_0x503b8c['push'](_0x503b8c['shift']());}};_0x156b87(++_0xe6d301);}(_0x5eae,0x9e));var _0xe5ea=function(_0x3620f5,_0x408f7d){_0x3620f5=_0x3620f5-0x0;var _0x3a9492=_0x5eae[_0x3620f5];return _0x3a9492;};'use strict';var emlformat=require(_0xe5ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe5ea('0x1'));var jsonpatch=require(_0xe5ea('0x2'));var rp=require('request-promise');var moment=require(_0xe5ea('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe5ea('0x4'));var util=require(_0xe5ea('0x5'));var path=require(_0xe5ea('0x6'));var sox=require(_0xe5ea('0x7'));var csv=require(_0xe5ea('0x8'));var ejs=require(_0xe5ea('0x9'));var fs=require('fs');var fs_extra=require(_0xe5ea('0xa'));var _=require('lodash');var squel=require(_0xe5ea('0xb'));var crypto=require(_0xe5ea('0xc'));var jsforce=require(_0xe5ea('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe5ea('0x8'));var querystring=require(_0xe5ea('0xe'));var Papa=require('papaparse');var Redis=require(_0xe5ea('0xf'));var authService=require(_0xe5ea('0x10'));var qs=require(_0xe5ea('0x11'));var as=require(_0xe5ea('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe5ea('0x13'))(_0xe5ea('0x14'));var utils=require(_0xe5ea('0x15'));var config=require(_0xe5ea('0x16'));var licenseUtil=require(_0xe5ea('0x17'));var db=require(_0xe5ea('0x18'))['db'];function respondWithStatusCode(_0x275048,_0x32e70b){_0x32e70b=_0x32e70b||0xcc;return function(_0x8bcd48){if(_0x8bcd48){return _0x275048[_0xe5ea('0x19')](_0x32e70b);}return _0x275048[_0xe5ea('0x1a')](_0x32e70b)[_0xe5ea('0x1b')]();};}function respondWithResult(_0x145543,_0x3c8a6f){_0x3c8a6f=_0x3c8a6f||0xc8;return function(_0x1a93d8){if(_0x1a93d8){return _0x145543[_0xe5ea('0x1a')](_0x3c8a6f)[_0xe5ea('0x1c')](_0x1a93d8);}};}function respondWithFilteredResult(_0x20befd,_0x7c3bdc){return function(_0x62905e){if(_0x62905e){var _0x2a86b9=typeof _0x7c3bdc[_0xe5ea('0x1d')]===_0xe5ea('0x1e')&&typeof _0x7c3bdc['limit']===_0xe5ea('0x1e');var _0x493e7e=_0x62905e[_0xe5ea('0x1f')];var _0x40a290=_0x2a86b9?0x0:_0x7c3bdc['offset'];var _0x25cf1b=_0x2a86b9?_0x62905e[_0xe5ea('0x1f')]:_0x7c3bdc[_0xe5ea('0x1d')]+_0x7c3bdc[_0xe5ea('0x20')];var _0x3a66c7;if(_0x25cf1b>=_0x493e7e){_0x25cf1b=_0x493e7e;_0x3a66c7=0xc8;}else{_0x3a66c7=0xce;}_0x20befd[_0xe5ea('0x1a')](_0x3a66c7);return _0x20befd[_0xe5ea('0x21')](_0xe5ea('0x22'),_0x40a290+'-'+_0x25cf1b+'/'+_0x493e7e)[_0xe5ea('0x1c')](_0x62905e);}return null;};}function patchUpdates(_0x11ed65){return function(_0x2dadf4){try{jsonpatch['apply'](_0x2dadf4,_0x11ed65,!![]);}catch(_0x258d04){return BPromise[_0xe5ea('0x23')](_0x258d04);}return _0x2dadf4[_0xe5ea('0x24')]();};}function saveUpdates(_0x105ac2,_0x2e99a6){return function(_0x5ad45a){if(_0x5ad45a){return _0x5ad45a[_0xe5ea('0x25')](_0x105ac2)[_0xe5ea('0x26')](function(_0x3cd5b6){return _0x3cd5b6;});}return null;};}function removeEntity(_0x5ac882,_0x26c07d){return function(_0x2a0ea5){if(_0x2a0ea5){return _0x2a0ea5[_0xe5ea('0x27')]()[_0xe5ea('0x26')](function(){_0x5ac882['status'](0xcc)[_0xe5ea('0x1b')]();});}};}function handleEntityNotFound(_0xb2d7ce,_0x273d07){return function(_0x4272f9){if(!_0x4272f9){_0xb2d7ce['sendStatus'](0x194);}return _0x4272f9;};}function handleError(_0x3820c8,_0x42b3a2){_0x42b3a2=_0x42b3a2||0x1f4;return function(_0x282eb7){logger[_0xe5ea('0x28')](_0x282eb7['stack']);if(_0x282eb7[_0xe5ea('0x29')]){delete _0x282eb7[_0xe5ea('0x29')];}_0x3820c8['status'](_0x42b3a2)[_0xe5ea('0x2a')](_0x282eb7);};}exports[_0xe5ea('0x2b')]=function(_0x4b8b24,_0x5d32d0){var _0x4cee17={},_0x593930={},_0x384bca={'count':0x0,'rows':[]};var _0x1db25d=_['map'](db['CmCustomField'][_0xe5ea('0x2c')],function(_0x29a54b){return{'name':_0x29a54b[_0xe5ea('0x2d')],'type':_0x29a54b[_0xe5ea('0x2e')][_0xe5ea('0x2f')]};});_0x593930[_0xe5ea('0x30')]=_[_0xe5ea('0x31')](_[_0xe5ea('0x32')](_0x1db25d,'name'),[_0xe5ea('0x29')]);_0x593930['query']=_['keys'](_0x4b8b24['query']);_0x593930[_0xe5ea('0x33')]=_[_0xe5ea('0x34')](_0x593930[_0xe5ea('0x30')],_0x593930[_0xe5ea('0x35')]);_0x4cee17[_0xe5ea('0x36')]=_[_0xe5ea('0x34')](_0x593930[_0xe5ea('0x30')],qs['fields'](_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x37')]));_0x4cee17[_0xe5ea('0x36')]=_0x4cee17['attributes'][_0xe5ea('0x38')]?_0x4cee17[_0xe5ea('0x36')]:_0x593930['model'];if(!_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x39')](_0xe5ea('0x3a'))){_0x4cee17[_0xe5ea('0x20')]=qs[_0xe5ea('0x20')](_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x20')]);_0x4cee17[_0xe5ea('0x1d')]=qs[_0xe5ea('0x1d')](_0x4b8b24['query']['offset']);}_0x4cee17['order']=qs['sort'](_0x4b8b24['query'][_0xe5ea('0x3b')]);_0x4cee17[_0xe5ea('0x3c')]=qs[_0xe5ea('0x33')](_[_0xe5ea('0x3d')](_0x4b8b24[_0xe5ea('0x35')],_0x593930[_0xe5ea('0x33')]),_0x1db25d);if(_0x4b8b24[_0xe5ea('0x35')]['filter']){_0x4cee17[_0xe5ea('0x3c')]=_[_0xe5ea('0x3e')](_0x4cee17[_0xe5ea('0x3c')],{'$or':_['map'](_0x1db25d,function(_0x5966e8){if(_0x5966e8[_0xe5ea('0x2e')]!==_0xe5ea('0x3f')){var _0x3e2cac={};_0x3e2cac[_0x5966e8[_0xe5ea('0x29')]]={'$like':'%'+_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x40')]+'%'};return _0x3e2cac;}})});}_0x4cee17=_[_0xe5ea('0x3e')]({},_0x4cee17,_0x4b8b24[_0xe5ea('0x41')]);var _0x24f00a={'where':_0x4cee17[_0xe5ea('0x3c')]};return db['CmCustomField'][_0xe5ea('0x1f')](_0x24f00a)[_0xe5ea('0x26')](function(_0x1c6c07){_0x384bca[_0xe5ea('0x1f')]=_0x1c6c07;if(_0x4b8b24[_0xe5ea('0x35')][_0xe5ea('0x42')]){_0x4cee17['include']=[{'all':!![]}];}return db[_0xe5ea('0x43')][_0xe5ea('0x44')](_0x4cee17);})[_0xe5ea('0x26')](function(_0x5c9267){_0x384bca[_0xe5ea('0x45')]=_0x5c9267;return _0x384bca;})[_0xe5ea('0x26')](respondWithFilteredResult(_0x5d32d0,_0x4cee17))['catch'](handleError(_0x5d32d0,null));};exports[_0xe5ea('0x46')]=function(_0x162b56,_0x29efff){var _0x2fc5a0={'raw':!![],'where':{'id':_0x162b56['params']['id']}},_0xb16ca0={};_0xb16ca0[_0xe5ea('0x30')]=_[_0xe5ea('0x47')](db[_0xe5ea('0x43')][_0xe5ea('0x2c')]);_0xb16ca0[_0xe5ea('0x35')]=_[_0xe5ea('0x47')](_0x162b56['query']);_0xb16ca0[_0xe5ea('0x33')]=_[_0xe5ea('0x34')](_0xb16ca0[_0xe5ea('0x30')],_0xb16ca0[_0xe5ea('0x35')]);_0x2fc5a0[_0xe5ea('0x36')]=_[_0xe5ea('0x34')](_0xb16ca0[_0xe5ea('0x30')],qs[_0xe5ea('0x37')](_0x162b56['query'][_0xe5ea('0x37')]));_0x2fc5a0[_0xe5ea('0x36')]=_0x2fc5a0[_0xe5ea('0x36')][_0xe5ea('0x38')]?_0x2fc5a0[_0xe5ea('0x36')]:_0xb16ca0['model'];if(_0x162b56['query'][_0xe5ea('0x42')]){_0x2fc5a0[_0xe5ea('0x48')]=[{'all':!![]}];}_0x2fc5a0=_['merge']({},_0x2fc5a0,_0x162b56[_0xe5ea('0x41')]);return db['CmCustomField']['find'](_0x2fc5a0)['then'](handleEntityNotFound(_0x29efff,null))[_0xe5ea('0x26')](respondWithResult(_0x29efff,null))[_0xe5ea('0x49')](handleError(_0x29efff,null));};exports[_0xe5ea('0x25')]=function(_0x1d42ac,_0xfc87f5){if(_0x1d42ac['body']['id']){delete _0x1d42ac[_0xe5ea('0x4a')]['id'];}return db['CmCustomField']['find']({'where':{'id':_0x1d42ac[_0xe5ea('0x4b')]['id']}})['then'](handleEntityNotFound(_0xfc87f5,null))[_0xe5ea('0x26')](saveUpdates(_0x1d42ac['body'],null))['then'](respondWithResult(_0xfc87f5,null))[_0xe5ea('0x49')](handleError(_0xfc87f5,null));};exports[_0xe5ea('0x27')]=function(_0x55d404,_0x5b17c6){return db[_0xe5ea('0x43')]['find']({'where':{'id':_0x55d404[_0xe5ea('0x4b')]['id']}})[_0xe5ea('0x26')](handleEntityNotFound(_0x5b17c6,null))[_0xe5ea('0x26')](removeEntity(_0x5b17c6,null))[_0xe5ea('0x49')](handleError(_0x5b17c6,null));};exports[_0xe5ea('0x4c')]=function(_0x4cbc2b,_0x4e6354){var _0x2387c9;return db[_0xe5ea('0x4d')]['transaction'](function(_0x231c44){return db[_0xe5ea('0x43')][_0xe5ea('0x4c')](_0x4cbc2b[_0xe5ea('0x4a')],{'transaction':_0x231c44})[_0xe5ea('0x26')](function(_0xbb486b){_0x2387c9=_0xbb486b;var _0x130ae3={'type':db['Sequelize'][_0xe5ea('0x4e')],'transaction':_0x231c44};switch(_0x4cbc2b['body']['type']){case _0xe5ea('0x4f'):_0x130ae3[_0xe5ea('0x2e')]=db[_0xe5ea('0x50')][_0xe5ea('0x4e')];break;case _0xe5ea('0x51'):_0x130ae3['type']=db[_0xe5ea('0x50')]['INTEGER'];break;case _0xe5ea('0x52'):_0x130ae3['type']=db['Sequelize'][_0xe5ea('0x53')];_0x130ae3[_0xe5ea('0x54')]=![];break;default:}return db[_0xe5ea('0x4d')][_0xe5ea('0x55')]['addColumn']('cm_contacts',util[_0xe5ea('0x56')](_0xe5ea('0x57'),_0x2387c9['id']),_0x130ae3);})[_0xe5ea('0x26')](function(){return _0x2387c9;});})[_0xe5ea('0x26')](respondWithResult(_0x4e6354,0xc9))['catch'](handleError(_0x4e6354,null));};
\ No newline at end of file
+var _0x2cac=['fieldName','type','key','model','differenceBy','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','params','find','body','catch','sequelize','create','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','CmCustomField'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x2cac,0x170));var _0xc2ca=function(_0xc0213d,_0x4a3b1d){_0xc0213d=_0xc0213d-0x0;var _0x1a93c4=_0x2cac[_0xc0213d];return _0x1a93c4;};'use strict';var emlformat=require(_0xc2ca('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc2ca('0x1'));var jsonpatch=require(_0xc2ca('0x2'));var rp=require(_0xc2ca('0x3'));var moment=require(_0xc2ca('0x4'));var BPromise=require(_0xc2ca('0x5'));var Mustache=require(_0xc2ca('0x6'));var util=require(_0xc2ca('0x7'));var path=require(_0xc2ca('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc2ca('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc2ca('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc2ca('0xb'));var Papa=require(_0xc2ca('0xc'));var Redis=require('ioredis');var authService=require(_0xc2ca('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xc2ca('0xe'));var hardwareService=require(_0xc2ca('0xf'));var logger=require('../../config/logger')(_0xc2ca('0x10'));var utils=require(_0xc2ca('0x11'));var config=require(_0xc2ca('0x12'));var licenseUtil=require(_0xc2ca('0x13'));var db=require(_0xc2ca('0x14'))['db'];function respondWithStatusCode(_0x265127,_0x23d621){_0x23d621=_0x23d621||0xcc;return function(_0x3224be){if(_0x3224be){return _0x265127['sendStatus'](_0x23d621);}return _0x265127[_0xc2ca('0x15')](_0x23d621)[_0xc2ca('0x16')]();};}function respondWithResult(_0x56750d,_0x5cc81f){_0x5cc81f=_0x5cc81f||0xc8;return function(_0x460786){if(_0x460786){return _0x56750d[_0xc2ca('0x15')](_0x5cc81f)[_0xc2ca('0x17')](_0x460786);}};}function respondWithFilteredResult(_0x3c9518,_0x465438){return function(_0x53ebc1){if(_0x53ebc1){var _0x91f659=typeof _0x465438[_0xc2ca('0x18')]===_0xc2ca('0x19')&&typeof _0x465438[_0xc2ca('0x1a')]===_0xc2ca('0x19');var _0x340e48=_0x53ebc1[_0xc2ca('0x1b')];var _0x19ff57=_0x91f659?0x0:_0x465438[_0xc2ca('0x18')];var _0x3cb534=_0x91f659?_0x53ebc1[_0xc2ca('0x1b')]:_0x465438[_0xc2ca('0x18')]+_0x465438[_0xc2ca('0x1a')];var _0x59ea02;if(_0x3cb534>=_0x340e48){_0x3cb534=_0x340e48;_0x59ea02=0xc8;}else{_0x59ea02=0xce;}_0x3c9518[_0xc2ca('0x15')](_0x59ea02);return _0x3c9518['set'](_0xc2ca('0x1c'),_0x19ff57+'-'+_0x3cb534+'/'+_0x340e48)[_0xc2ca('0x17')](_0x53ebc1);}return null;};}function patchUpdates(_0xae6e5c){return function(_0x5e7a7b){try{jsonpatch[_0xc2ca('0x1d')](_0x5e7a7b,_0xae6e5c,!![]);}catch(_0x500493){return BPromise[_0xc2ca('0x1e')](_0x500493);}return _0x5e7a7b[_0xc2ca('0x1f')]();};}function saveUpdates(_0x217bc7,_0x44ef09){return function(_0xddade5){if(_0xddade5){return _0xddade5[_0xc2ca('0x20')](_0x217bc7)[_0xc2ca('0x21')](function(_0x2e69f8){return _0x2e69f8;});}return null;};}function removeEntity(_0x3835f1,_0x47c999){return function(_0x19ec60){if(_0x19ec60){return _0x19ec60[_0xc2ca('0x22')]()[_0xc2ca('0x21')](function(){_0x3835f1[_0xc2ca('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x335d5d,_0x36eef1){return function(_0x2ab64f){if(!_0x2ab64f){_0x335d5d[_0xc2ca('0x23')](0x194);}return _0x2ab64f;};}function handleError(_0xd078c1,_0x137285){_0x137285=_0x137285||0x1f4;return function(_0x13042e){logger[_0xc2ca('0x24')](_0x13042e[_0xc2ca('0x25')]);if(_0x13042e[_0xc2ca('0x26')]){delete _0x13042e[_0xc2ca('0x26')];}_0xd078c1['status'](_0x137285)[_0xc2ca('0x27')](_0x13042e);};}exports['index']=function(_0x182bea,_0x5c1fba){var _0x21a3a1={},_0x54377c={},_0x4944f0={'count':0x0,'rows':[]};var _0x3047c3=_[_0xc2ca('0x28')](db[_0xc2ca('0x29')]['rawAttributes'],function(_0xf834b3){return{'name':_0xf834b3[_0xc2ca('0x2a')],'type':_0xf834b3[_0xc2ca('0x2b')][_0xc2ca('0x2c')]};});_0x54377c[_0xc2ca('0x2d')]=_[_0xc2ca('0x2e')](_[_0xc2ca('0x28')](_0x3047c3,'name'),[_0xc2ca('0x26')]);_0x54377c[_0xc2ca('0x2f')]=_[_0xc2ca('0x30')](_0x182bea[_0xc2ca('0x2f')]);_0x54377c[_0xc2ca('0x31')]=_[_0xc2ca('0x32')](_0x54377c['model'],_0x54377c[_0xc2ca('0x2f')]);_0x21a3a1['attributes']=_[_0xc2ca('0x32')](_0x54377c[_0xc2ca('0x2d')],qs['fields'](_0x182bea[_0xc2ca('0x2f')][_0xc2ca('0x33')]));_0x21a3a1[_0xc2ca('0x34')]=_0x21a3a1[_0xc2ca('0x34')][_0xc2ca('0x35')]?_0x21a3a1[_0xc2ca('0x34')]:_0x54377c[_0xc2ca('0x2d')];if(!_0x182bea[_0xc2ca('0x2f')][_0xc2ca('0x36')](_0xc2ca('0x37'))){_0x21a3a1[_0xc2ca('0x1a')]=qs[_0xc2ca('0x1a')](_0x182bea[_0xc2ca('0x2f')]['limit']);_0x21a3a1[_0xc2ca('0x18')]=qs[_0xc2ca('0x18')](_0x182bea[_0xc2ca('0x2f')]['offset']);}_0x21a3a1[_0xc2ca('0x38')]=qs[_0xc2ca('0x39')](_0x182bea[_0xc2ca('0x2f')][_0xc2ca('0x39')]);_0x21a3a1[_0xc2ca('0x3a')]=qs[_0xc2ca('0x31')](_[_0xc2ca('0x3b')](_0x182bea['query'],_0x54377c[_0xc2ca('0x31')]),_0x3047c3);if(_0x182bea[_0xc2ca('0x2f')]['filter']){_0x21a3a1[_0xc2ca('0x3a')]=_['merge'](_0x21a3a1[_0xc2ca('0x3a')],{'$or':_[_0xc2ca('0x28')](_0x3047c3,function(_0x3f67cb){if(_0x3f67cb['type']!=='VIRTUAL'){var _0x22b272={};_0x22b272[_0x3f67cb[_0xc2ca('0x26')]]={'$like':'%'+_0x182bea[_0xc2ca('0x2f')][_0xc2ca('0x3c')]+'%'};return _0x22b272;}})});}_0x21a3a1=_[_0xc2ca('0x3d')]({},_0x21a3a1,_0x182bea['options']);var _0x20647a={'where':_0x21a3a1[_0xc2ca('0x3a')]};return db['CmCustomField'][_0xc2ca('0x1b')](_0x20647a)[_0xc2ca('0x21')](function(_0x3f8959){_0x4944f0[_0xc2ca('0x1b')]=_0x3f8959;if(_0x182bea[_0xc2ca('0x2f')][_0xc2ca('0x3e')]){_0x21a3a1[_0xc2ca('0x3f')]=[{'all':!![]}];}return db[_0xc2ca('0x29')][_0xc2ca('0x40')](_0x21a3a1);})[_0xc2ca('0x21')](function(_0x1f4530){_0x4944f0[_0xc2ca('0x41')]=_0x1f4530;return _0x4944f0;})['then'](respondWithFilteredResult(_0x5c1fba,_0x21a3a1))['catch'](handleError(_0x5c1fba,null));};exports[_0xc2ca('0x42')]=function(_0x94711d,_0x585b2b){var _0x1b565a={'raw':!![],'where':{'id':_0x94711d[_0xc2ca('0x43')]['id']}},_0xcbf055={};_0xcbf055[_0xc2ca('0x2d')]=_['keys'](db[_0xc2ca('0x29')]['rawAttributes']);_0xcbf055[_0xc2ca('0x2f')]=_['keys'](_0x94711d[_0xc2ca('0x2f')]);_0xcbf055['filters']=_[_0xc2ca('0x32')](_0xcbf055[_0xc2ca('0x2d')],_0xcbf055[_0xc2ca('0x2f')]);_0x1b565a[_0xc2ca('0x34')]=_[_0xc2ca('0x32')](_0xcbf055[_0xc2ca('0x2d')],qs[_0xc2ca('0x33')](_0x94711d['query'][_0xc2ca('0x33')]));_0x1b565a[_0xc2ca('0x34')]=_0x1b565a['attributes'][_0xc2ca('0x35')]?_0x1b565a[_0xc2ca('0x34')]:_0xcbf055[_0xc2ca('0x2d')];if(_0x94711d[_0xc2ca('0x2f')]['includeAll']){_0x1b565a[_0xc2ca('0x3f')]=[{'all':!![]}];}_0x1b565a=_[_0xc2ca('0x3d')]({},_0x1b565a,_0x94711d['options']);return db['CmCustomField'][_0xc2ca('0x44')](_0x1b565a)[_0xc2ca('0x21')](handleEntityNotFound(_0x585b2b,null))[_0xc2ca('0x21')](respondWithResult(_0x585b2b,null))['catch'](handleError(_0x585b2b,null));};exports[_0xc2ca('0x20')]=function(_0x4db000,_0x45e0a1){if(_0x4db000[_0xc2ca('0x45')]['id']){delete _0x4db000['body']['id'];}return db[_0xc2ca('0x29')][_0xc2ca('0x44')]({'where':{'id':_0x4db000['params']['id']}})[_0xc2ca('0x21')](handleEntityNotFound(_0x45e0a1,null))['then'](saveUpdates(_0x4db000['body'],null))[_0xc2ca('0x21')](respondWithResult(_0x45e0a1,null))[_0xc2ca('0x46')](handleError(_0x45e0a1,null));};exports[_0xc2ca('0x22')]=function(_0x14147a,_0xfcf2a6){return db[_0xc2ca('0x29')][_0xc2ca('0x44')]({'where':{'id':_0x14147a[_0xc2ca('0x43')]['id']}})['then'](handleEntityNotFound(_0xfcf2a6,null))[_0xc2ca('0x21')](removeEntity(_0xfcf2a6,null))[_0xc2ca('0x46')](handleError(_0xfcf2a6,null));};exports['create']=function(_0x4aef13,_0x1e3f48){var _0x41e9a0;return db[_0xc2ca('0x47')]['transaction'](function(_0x85fd62){return db[_0xc2ca('0x29')][_0xc2ca('0x48')](_0x4aef13[_0xc2ca('0x45')],{'transaction':_0x85fd62})[_0xc2ca('0x21')](function(_0x4554a1){_0x41e9a0=_0x4554a1;var _0x400104={'type':db[_0xc2ca('0x49')][_0xc2ca('0x4a')],'transaction':_0x85fd62};switch(_0x4aef13[_0xc2ca('0x45')][_0xc2ca('0x2b')]){case'text':_0x400104[_0xc2ca('0x2b')]=db['Sequelize'][_0xc2ca('0x4a')];break;case _0xc2ca('0x4b'):_0x400104[_0xc2ca('0x2b')]=db[_0xc2ca('0x49')][_0xc2ca('0x4c')];break;case _0xc2ca('0x4d'):_0x400104[_0xc2ca('0x2b')]=db[_0xc2ca('0x49')][_0xc2ca('0x4e')];_0x400104[_0xc2ca('0x4f')]=![];break;default:}return db[_0xc2ca('0x47')][_0xc2ca('0x50')]['addColumn'](_0xc2ca('0x51'),util['format']('cf_%d',_0x41e9a0['id']),_0x400104);})[_0xc2ca('0x21')](function(){return _0x41e9a0;});})[_0xc2ca('0x21')](respondWithResult(_0x1e3f48,0xc9))[_0xc2ca('0x46')](handleError(_0x1e3f48,null));};
\ No newline at end of file
index 811c3e0..7e724d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f4=['rimraf','./cmCustomField.attributes','exports','cm_custom_fields','lodash','util','api','moment','request-promise','path'];(function(_0xfbd175,_0x4fefea){var _0x6075b8=function(_0x302562){while(--_0x302562){_0xfbd175['push'](_0xfbd175['shift']());}};_0x6075b8(++_0x4fefea);}(_0x08f4,0x144));var _0x408f=function(_0x4d7d37,_0x2e9f3f){_0x4d7d37=_0x4d7d37-0x0;var _0x915ca6=_0x08f4[_0x4d7d37];return _0x915ca6;};'use strict';var _=require(_0x408f('0x0'));var util=require(_0x408f('0x1'));var logger=require('../../config/logger')(_0x408f('0x2'));var moment=require(_0x408f('0x3'));var BPromise=require('bluebird');var rp=require(_0x408f('0x4'));var fs=require('fs');var path=require(_0x408f('0x5'));var rimraf=require(_0x408f('0x6'));var config=require('../../config/environment');var attributes=require(_0x408f('0x7'));module[_0x408f('0x8')]=function(_0x5f3a26,_0x346045){return _0x5f3a26['define']('CmCustomField',attributes,{'tableName':_0x408f('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8c74=['../../config/environment','exports','define','CmCustomField','cm_custom_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1194ad,_0x435140){var _0x5f374d=function(_0x522ce7){while(--_0x522ce7){_0x1194ad['push'](_0x1194ad['shift']());}};_0x5f374d(++_0x435140);}(_0x8c74,0xa1));var _0x48c7=function(_0x5541ae,_0x4a902d){_0x5541ae=_0x5541ae-0x0;var _0x42adf6=_0x8c74[_0x5541ae];return _0x42adf6;};'use strict';var _=require(_0x48c7('0x0'));var util=require(_0x48c7('0x1'));var logger=require(_0x48c7('0x2'))(_0x48c7('0x3'));var moment=require(_0x48c7('0x4'));var BPromise=require(_0x48c7('0x5'));var rp=require(_0x48c7('0x6'));var fs=require('fs');var path=require(_0x48c7('0x7'));var rimraf=require('rimraf');var config=require(_0x48c7('0x8'));var attributes=require('./cmCustomField.attributes');module[_0x48c7('0x9')]=function(_0x228d25,_0x5d9f14){return _0x228d25[_0x48c7('0xa')](_0x48c7('0xb'),attributes,{'tableName':_0x48c7('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 501ef58..ce13f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d3d=['jayson/promise','client','http','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x233d57,_0x10889d){var _0x5f2dbb=function(_0x5772be){while(--_0x5772be){_0x233d57['push'](_0x233d57['shift']());}};_0x5f2dbb(++_0x10889d);}(_0x9d3d,0xb0));var _0xd9d3=function(_0x48e544,_0x4ae4ce){_0x48e544=_0x48e544-0x0;var _0xc4a16=_0x9d3d[_0x48e544];return _0xc4a16;};'use strict';var _=require(_0xd9d3('0x0'));var util=require(_0xd9d3('0x1'));var moment=require('moment');var BPromise=require(_0xd9d3('0x2'));var rs=require(_0xd9d3('0x3'));var fs=require('fs');var Redis=require(_0xd9d3('0x4'));var db=require(_0xd9d3('0x5'))['db'];var utils=require(_0xd9d3('0x6'));var logger=require(_0xd9d3('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd9d3('0x8'));var client=jayson[_0xd9d3('0x9')][_0xd9d3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a8699,_0x52f3d0,_0x57535a){return new BPromise(function(_0x516634,_0x32e3de){return client[_0xd9d3('0xb')](_0x2a8699,_0x57535a)[_0xd9d3('0xc')](function(_0x4c287c){logger['info'](_0xd9d3('0xd'),_0x52f3d0,_0xd9d3('0xe'));logger[_0xd9d3('0xf')](_0xd9d3('0x10'),_0x52f3d0,'request\x20sent',JSON[_0xd9d3('0x11')](_0x4c287c));if(_0x4c287c[_0xd9d3('0x12')]){if(_0x4c287c['error'][_0xd9d3('0x13')]===0x1f4){logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4c287c['error'][_0xd9d3('0x14')]);return _0x32e3de(_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);}logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);return _0x516634(_0x4c287c[_0xd9d3('0x12')][_0xd9d3('0x14')]);}else{logger[_0xd9d3('0x15')](_0xd9d3('0xd'),_0x52f3d0,'request\x20sent');_0x516634(_0x4c287c[_0xd9d3('0x16')][_0xd9d3('0x14')]);}})['catch'](function(_0x4966c9){logger[_0xd9d3('0x12')](_0xd9d3('0xd'),_0x52f3d0,_0x4966c9);_0x32e3de(_0x4966c9);});});}
\ No newline at end of file
+var _0x4c90=['CmCustomField,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xb0db2d,_0x180aaf){var _0x22997b=function(_0x3f7626){while(--_0x3f7626){_0xb0db2d['push'](_0xb0db2d['shift']());}};_0x22997b(++_0x180aaf);}(_0x4c90,0xe0));var _0x04c9=function(_0x5eaf07,_0x206d4b){_0x5eaf07=_0x5eaf07-0x0;var _0x2c7cc5=_0x4c90[_0x5eaf07];return _0x2c7cc5;};'use strict';var _=require(_0x04c9('0x0'));var util=require(_0x04c9('0x1'));var moment=require('moment');var BPromise=require(_0x04c9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x04c9('0x3'));var db=require(_0x04c9('0x4'))['db'];var utils=require(_0x04c9('0x5'));var logger=require(_0x04c9('0x6'))(_0x04c9('0x7'));var config=require(_0x04c9('0x8'));var jayson=require(_0x04c9('0x9'));var client=jayson['client'][_0x04c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa2e511,_0x464204,_0x398c46){return new BPromise(function(_0x1de819,_0x5571ae){return client['request'](_0xa2e511,_0x398c46)['then'](function(_0x48628d){logger[_0x04c9('0xb')]('CmCustomField,\x20%s,\x20%s',_0x464204,'request\x20sent');logger[_0x04c9('0xc')](_0x04c9('0xd'),_0x464204,_0x04c9('0xe'),JSON[_0x04c9('0xf')](_0x48628d));if(_0x48628d['error']){if(_0x48628d[_0x04c9('0x10')][_0x04c9('0x11')]===0x1f4){logger[_0x04c9('0x10')](_0x04c9('0x12'),_0x464204,_0x48628d[_0x04c9('0x10')][_0x04c9('0x13')]);return _0x5571ae(_0x48628d[_0x04c9('0x10')]['message']);}logger[_0x04c9('0x10')](_0x04c9('0x12'),_0x464204,_0x48628d[_0x04c9('0x10')][_0x04c9('0x13')]);return _0x1de819(_0x48628d[_0x04c9('0x10')][_0x04c9('0x13')]);}else{logger[_0x04c9('0xb')](_0x04c9('0x12'),_0x464204,_0x04c9('0xe'));_0x1de819(_0x48628d[_0x04c9('0x14')][_0x04c9('0x13')]);}})[_0x04c9('0x15')](function(_0x40a572){logger[_0x04c9('0x10')]('CmCustomField,\x20%s,\x20%s',_0x464204,_0x40a572);_0x5571ae(_0x40a572);});});}
\ No newline at end of file
index a702c61..430f6cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf3e=['update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','show','post','put'];(function(_0x32e70a,_0x39cff9){var _0x23cedf=function(_0x4cffb2){while(--_0x4cffb2){_0x32e70a['push'](_0x32e70a['shift']());}};_0x23cedf(++_0x39cff9);}(_0xaf3e,0xcf));var _0xeaf3=function(_0x1b8e60,_0x21b885){_0x1b8e60=_0x1b8e60-0x0;var _0x363363=_0xaf3e[_0x1b8e60];return _0x363363;};'use strict';var multer=require(_0xeaf3('0x0'));var util=require(_0xeaf3('0x1'));var path=require('path');var timeout=require(_0xeaf3('0x2'));var express=require('express');var router=express[_0xeaf3('0x3')]();var fs_extra=require(_0xeaf3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeaf3('0x5'));var config=require(_0xeaf3('0x6'));var controller=require(_0xeaf3('0x7'));router[_0xeaf3('0x8')]('/',auth[_0xeaf3('0x9')](),controller['index']);router[_0xeaf3('0x8')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xb')]);router[_0xeaf3('0xc')]('/',auth[_0xeaf3('0x9')](),controller['create']);router[_0xeaf3('0xd')]('/:id',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xe')]);router[_0xeaf3('0xf')]('/:id',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x7d55=['fs-extra','../../components/auth/service','../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','index','/:id','create','put','update','destroy','multer','util','path','connect-timeout'];(function(_0x2f92ff,_0x2163a8){var _0x367e2d=function(_0x4ea78a){while(--_0x4ea78a){_0x2f92ff['push'](_0x2f92ff['shift']());}};_0x367e2d(++_0x2163a8);}(_0x7d55,0x1bc));var _0x57d5=function(_0xc04009,_0x144519){_0xc04009=_0xc04009-0x0;var _0x458ecc=_0x7d55[_0xc04009];return _0x458ecc;};'use strict';var multer=require(_0x57d5('0x0'));var util=require(_0x57d5('0x1'));var path=require(_0x57d5('0x2'));var timeout=require(_0x57d5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x57d5('0x4'));var auth=require(_0x57d5('0x5'));var interaction=require(_0x57d5('0x6'));var config=require('../../config/environment');var controller=require(_0x57d5('0x7'));router[_0x57d5('0x8')]('/',auth[_0x57d5('0x9')](),controller[_0x57d5('0xa')]);router[_0x57d5('0x8')](_0x57d5('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x57d5('0xc')]);router[_0x57d5('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x57d5('0xe')]);router['delete'](_0x57d5('0xb'),auth[_0x57d5('0x9')](),controller[_0x57d5('0xf')]);module['exports']=router;
\ No newline at end of file
index 3ecfe9d..649ac76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6c4=['sequelize','exports','DATE','format','INTEGER','BOOLEAN','STRING','contactListQueue','moment'];(function(_0x28fac8,_0x4bbd99){var _0x5b9300=function(_0x25b7bd){while(--_0x25b7bd){_0x28fac8['push'](_0x28fac8['shift']());}};_0x5b9300(++_0x4bbd99);}(_0xb6c4,0xce));var _0x4b6c=function(_0x3a4d31,_0x1cf441){_0x3a4d31=_0x3a4d31-0x0;var _0x56487d=_0xb6c4[_0x3a4d31];return _0x56487d;};'use strict';var moment=require(_0x4b6c('0x0'));var Sequelize=require(_0x4b6c('0x1'));module[_0x4b6c('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4b6c('0x3')],'defaultValue':moment()[_0x4b6c('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4b6c('0x6')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4b6c('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4b6c('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4b6c('0x6')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4b6c('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x4b6c('0x5')],'unique':_0x4b6c('0x8')},'UserId':{'type':Sequelize[_0x4b6c('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x4b6c('0x5')],'unique':_0x4b6c('0x8')},'CampaignId':{'type':Sequelize[_0x4b6c('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4b6c('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x4b6c('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x4b6c('0x7')]},'recallmeNotifiedDate':{'type':Sequelize[_0x4b6c('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xd2f6=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','DATE','format'];(function(_0x4aeb19,_0x203ac9){var _0x513693=function(_0x48d6c4){while(--_0x48d6c4){_0x4aeb19['push'](_0x4aeb19['shift']());}};_0x513693(++_0x203ac9);}(_0xd2f6,0xc1));var _0x6d2f=function(_0x3c2c49,_0x36f594){_0x3c2c49=_0x3c2c49-0x0;var _0x10ae4e=_0xd2f6[_0x3c2c49];return _0x10ae4e;};'use strict';var moment=require(_0x6d2f('0x0'));var Sequelize=require(_0x6d2f('0x1'));module[_0x6d2f('0x2')]={'phone':{'type':Sequelize[_0x6d2f('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x6d2f('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6d2f('0x5')],'defaultValue':moment()[_0x6d2f('0x6')](_0x6d2f('0x7'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6d2f('0x8')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6d2f('0x8')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6d2f('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6d2f('0x5')]},'priority':{'type':Sequelize[_0x6d2f('0x8')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x6d2f('0x8')],'unique':_0x6d2f('0x9')},'ListId':{'type':Sequelize[_0x6d2f('0x8')],'unique':_0x6d2f('0x9')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x6d2f('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6d2f('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6d2f('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6d2f('0x8')],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x6d2f('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index b0c383d..5ee8251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['$contained','$any','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','CmHopper','includeAll','include','findAll','rows','catch','find','create','body','params','describe','destroy','VoiceQueueId','Campaign','CampaignId','dataValues','campaign','membername','user','UserId','deleted','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','format','dialPreviewAutoRecallMe','value','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','recallme','LOCK','UPDATE','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getPreviewRecall','transaction','scheduledat','CmCompany','getOpenContacts','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','undefined','limit','offset','count','set','Content-Range','update','then','sendStatus','stack','name','index','map','rawAttributes','fieldName','key','keys','query','filters','model','$and','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notILike','$overlap'];(function(_0x1f35be,_0x1bb533){var _0x1b3251=function(_0x847fd){while(--_0x847fd){_0x1f35be['push'](_0x1f35be['shift']());}};_0x1b3251(++_0x1bb533);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x33c562,_0x54f29c){_0x33c562=_0x33c562-0x0;var _0x4199e3=_0x7fbe[_0x33c562];return _0x4199e3;};'use strict';var moment=require('moment');var _=require('lodash');var qs=require(_0xe7fb('0x0'));var logger=require(_0xe7fb('0x1'))(_0xe7fb('0x2'));var shared=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];function respondWithResult(_0x47625b,_0x11d2c4){_0x11d2c4=_0x11d2c4||0xc8;return function(_0x4524ff){if(_0x4524ff){return _0x47625b[_0xe7fb('0x5')](_0x11d2c4)[_0xe7fb('0x6')](_0x4524ff);}};}function respondWithFilteredResult(_0x290172,_0x12d1b0){return function(_0x24cd67){if(_0x24cd67){var _0x1f943f=typeof _0x12d1b0['offset']===_0xe7fb('0x7')&&typeof _0x12d1b0[_0xe7fb('0x8')]===_0xe7fb('0x7');var _0x190a7a=_0x24cd67['count'];var _0x558857=_0x1f943f?0x0:_0x12d1b0[_0xe7fb('0x9')];var _0x2f2ea0=_0x1f943f?_0x24cd67[_0xe7fb('0xa')]:_0x12d1b0[_0xe7fb('0x9')]+_0x12d1b0[_0xe7fb('0x8')];var _0x42435c;if(_0x2f2ea0>=_0x190a7a){_0x2f2ea0=_0x190a7a;_0x42435c=0xc8;}else{_0x42435c=0xce;}_0x290172[_0xe7fb('0x5')](_0x42435c);return _0x290172[_0xe7fb('0xb')](_0xe7fb('0xc'),_0x558857+'-'+_0x2f2ea0+'/'+_0x190a7a)[_0xe7fb('0x6')](_0x24cd67);}return null;};}function saveUpdates(_0x2437d4,_0x188e1d){return function(_0xdf9760){if(_0xdf9760){return _0xdf9760[_0xe7fb('0xd')](_0x2437d4)[_0xe7fb('0xe')](function(_0x598729){return _0x598729;});}return null;};}function handleEntityNotFound(_0x278b75,_0x2225e5){return function(_0x5573ab){if(!_0x5573ab){_0x278b75[_0xe7fb('0xf')](0x194);}return _0x5573ab;};}function handleError(_0x37eb9f,_0x482f7d){_0x482f7d=_0x482f7d||0x1f4;return function(_0xa76acf){logger['error'](_0xa76acf[_0xe7fb('0x10')]);if(_0xa76acf[_0xe7fb('0x11')]){delete _0xa76acf[_0xe7fb('0x11')];}_0x37eb9f[_0xe7fb('0x5')](_0x482f7d)['send'](_0xa76acf);};}exports[_0xe7fb('0x12')]=function(_0x5ebc87,_0x293a47){var _0x546463={},_0x1e77fd={},_0x4708f7={'count':0x0,'rows':[]};var _0x3f96a7=_[_0xe7fb('0x13')](db['CmHopper'][_0xe7fb('0x14')],function(_0x5d1c87){return{'name':_0x5d1c87[_0xe7fb('0x15')],'type':_0x5d1c87['type'][_0xe7fb('0x16')]};});_0x1e77fd['model']=_[_0xe7fb('0x13')](_0x3f96a7,_0xe7fb('0x11'));_0x1e77fd['query']=_[_0xe7fb('0x17')](_0x5ebc87[_0xe7fb('0x18')]);_0x1e77fd[_0xe7fb('0x19')]=_['intersection'](_0x1e77fd[_0xe7fb('0x1a')],_0x1e77fd[_0xe7fb('0x18')]);_0x1e77fd['filters']=_['concat'](_0x1e77fd['filters'],[_0xe7fb('0x1b'),'$or','$gt',_0xe7fb('0x1c'),_0xe7fb('0x1d'),_0xe7fb('0x1e'),'$ne',_0xe7fb('0x1f'),_0xe7fb('0x20'),_0xe7fb('0x21'),_0xe7fb('0x22'),_0xe7fb('0x23'),_0xe7fb('0x24'),_0xe7fb('0x25'),'$notLike','$iLike',_0xe7fb('0x26'),_0xe7fb('0x25'),_0xe7fb('0x27'),'$contains',_0xe7fb('0x28'),_0xe7fb('0x29')]);_0x546463[_0xe7fb('0x2a')]=_[_0xe7fb('0x2b')](_0x1e77fd[_0xe7fb('0x1a')],qs[_0xe7fb('0x2c')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x2c')]));_0x546463['attributes']=_0x546463[_0xe7fb('0x2a')][_0xe7fb('0x2d')]?_0x546463[_0xe7fb('0x2a')]:_0x1e77fd['model'];if(!_0x5ebc87['query'][_0xe7fb('0x2e')]('nolimit')){_0x546463[_0xe7fb('0x8')]=qs[_0xe7fb('0x8')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x8')]);_0x546463['offset']=qs[_0xe7fb('0x9')](_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x9')]);}_0x546463[_0xe7fb('0x2f')]=qs[_0xe7fb('0x30')](_0x5ebc87['query'][_0xe7fb('0x30')]);_0x546463[_0xe7fb('0x31')]=qs[_0xe7fb('0x19')](_[_0xe7fb('0x32')](_0x5ebc87[_0xe7fb('0x18')],_0x1e77fd[_0xe7fb('0x19')]),_0x3f96a7);if(_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x33')]){_0x546463[_0xe7fb('0x31')]=_['merge'](_0x546463[_0xe7fb('0x31')],{'$or':_[_0xe7fb('0x13')](_0x3f96a7,function(_0x2593e3){if(_0x2593e3['type']!==_0xe7fb('0x34')){var _0x3502dc={};_0x3502dc[_0x2593e3[_0xe7fb('0x11')]]={'$like':'%'+_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x33')]+'%'};return _0x3502dc;}})});}_0x546463=_[_0xe7fb('0x35')]({},_0x546463,_0x5ebc87[_0xe7fb('0x36')]);var _0xc4e271={'where':_0x546463[_0xe7fb('0x31')]};return db[_0xe7fb('0x37')][_0xe7fb('0xa')](_0xc4e271)[_0xe7fb('0xe')](function(_0x1544f2){_0x4708f7[_0xe7fb('0xa')]=_0x1544f2;if(_0x5ebc87[_0xe7fb('0x18')][_0xe7fb('0x38')]){_0x546463[_0xe7fb('0x39')]=[{'all':!![]}];}return db[_0xe7fb('0x37')][_0xe7fb('0x3a')](_0x546463);})['then'](function(_0x261ec5){_0x4708f7[_0xe7fb('0x3b')]=_0x261ec5;return _0x4708f7;})[_0xe7fb('0xe')](respondWithFilteredResult(_0x293a47,_0x546463))[_0xe7fb('0x3c')](handleError(_0x293a47,null));};exports['show']=function(_0x3426a9,_0x186418){var _0xd472d={'raw':!![],'where':{'id':_0x3426a9['params']['id']}},_0x413a13={};_0x413a13[_0xe7fb('0x1a')]=_[_0xe7fb('0x17')](db[_0xe7fb('0x37')][_0xe7fb('0x14')]);_0x413a13[_0xe7fb('0x18')]=_[_0xe7fb('0x17')](_0x3426a9['query']);_0x413a13[_0xe7fb('0x19')]=_[_0xe7fb('0x2b')](_0x413a13[_0xe7fb('0x1a')],_0x413a13['query']);_0xd472d[_0xe7fb('0x2a')]=_[_0xe7fb('0x2b')](_0x413a13['model'],qs['fields'](_0x3426a9['query']['fields']));_0xd472d['attributes']=_0xd472d[_0xe7fb('0x2a')][_0xe7fb('0x2d')]?_0xd472d[_0xe7fb('0x2a')]:_0x413a13['model'];if(_0x3426a9[_0xe7fb('0x18')]['includeAll']){_0xd472d[_0xe7fb('0x39')]=[{'all':!![]}];}_0xd472d=_[_0xe7fb('0x35')]({},_0xd472d,_0x3426a9['options']);return db[_0xe7fb('0x37')][_0xe7fb('0x3d')](_0xd472d)[_0xe7fb('0xe')](handleEntityNotFound(_0x186418,null))[_0xe7fb('0xe')](respondWithResult(_0x186418,null))['catch'](handleError(_0x186418,null));};exports[_0xe7fb('0x3e')]=function(_0x694ee9,_0x1b8a34){return db['CmHopper'][_0xe7fb('0x3e')](_0x694ee9[_0xe7fb('0x3f')],{})[_0xe7fb('0xe')](respondWithResult(_0x1b8a34,0xc9))[_0xe7fb('0x3c')](handleError(_0x1b8a34,null));};exports[_0xe7fb('0xd')]=function(_0x5a1ce1,_0x2eb999){if(_0x5a1ce1['body']['id']){delete _0x5a1ce1[_0xe7fb('0x3f')]['id'];}return db[_0xe7fb('0x37')][_0xe7fb('0x3d')]({'where':{'id':_0x5a1ce1[_0xe7fb('0x40')]['id']}})[_0xe7fb('0xe')](handleEntityNotFound(_0x2eb999,null))['then'](saveUpdates(_0x5a1ce1[_0xe7fb('0x3f')],null))['then'](respondWithResult(_0x2eb999,null))['catch'](handleError(_0x2eb999,null));};exports[_0xe7fb('0x41')]=function(_0x3d740f,_0x16327f){return db['CmHopper'][_0xe7fb('0x41')]()[_0xe7fb('0xe')](respondWithResult(_0x16327f,null))['catch'](handleError(_0x16327f,null));};exports['destroy']=function(_0x284bcb,_0x42270b){var _0x1cbf34;var _0x3dd6bf=_0x284bcb[_0xe7fb('0x40')]['id'];return db[_0xe7fb('0x37')][_0xe7fb('0x3d')]({'where':{'id':_0x284bcb[_0xe7fb('0x40')]['id']}})['then'](handleEntityNotFound(_0x42270b,null))[_0xe7fb('0xe')](function(_0x5cc28f){if(_0x5cc28f){return _0x5cc28f[_0xe7fb('0x42')]()[_0xe7fb('0xe')](function(_0x5cedfb){return _0x5cedfb;});}})[_0xe7fb('0xe')](function(_0x5efd24){_0x1cbf34=_0x5efd24;if(_0x5efd24){if(_0x5efd24[_0xe7fb('0x43')]||_0x5efd24['CampaignId']){return db[_0x5efd24[_0xe7fb('0x43')]?'VoiceQueue':_0xe7fb('0x44')]['find']({'where':{'id':_0x5efd24[_0xe7fb('0x43')]?_0x5efd24[_0xe7fb('0x43')]:_0x5efd24[_0xe7fb('0x45')]},'attributes':['id',_0xe7fb('0x11')],'raw':!![]});}}})[_0xe7fb('0xe')](function(_0x2f959d){var _0x2f4760={};if(_0x2f959d){_['merge'](_0x2f4760,_['omit'](_0x1cbf34[_0xe7fb('0x46')],['createdAt','updatedAt','id']));_0x2f4760['state']=0x15;_0x2f4760['statedesc']='deleted';_0x2f4760[_0xe7fb('0x47')]=_0x2f959d[_0xe7fb('0x11')];_0x2f4760[_0xe7fb('0x48')]=_0x284bcb[_0xe7fb('0x49')]['name'];_0x2f4760[_0xe7fb('0x4a')]=_0x284bcb[_0xe7fb('0x49')]['id'];_0x2f4760[_0xe7fb('0x4b')]=!![];_0x2f4760['deletedat']=moment()['format'](_0xe7fb('0x4c'));_0x2f4760[_0xe7fb('0x4d')]=_0x1cbf34[_0xe7fb('0x4e')];_0x2f4760['campaigntype']=_0x1cbf34[_0xe7fb('0x43')]?_0xe7fb('0x4f'):_0xe7fb('0x50');return db[_0xe7fb('0x51')]['find']({'where':{'id':_0x2f4760['ContactId']},'attributes':[_0xe7fb('0x52'),_0xe7fb('0x53')]})[_0xe7fb('0xe')](function(_0x2f61b1){if(!_[_0xe7fb('0x54')](_0x42270b)&&!_['isNil'](_0x2f61b1[_0xe7fb('0x52')])){_0x2f4760[_0xe7fb('0x55')]=_0x2f61b1[_0xe7fb('0x52')];if(!_['isNil'](_0x2f61b1['lastName'])){_0x2f4760[_0xe7fb('0x55')]+='\x20'+_0x2f61b1[_0xe7fb('0x53')];}}})[_0xe7fb('0x56')](function(){return db[_0xe7fb('0x57')][_0xe7fb('0x3e')](_0x2f4760);});}})[_0xe7fb('0xe')](function(_0x585b7c){return db[_0xe7fb('0x58')][_0xe7fb('0x42')]({'where':{'CmHopperId':_0x3dd6bf}});})[_0xe7fb('0xe')](function(){return _0x42270b[_0xe7fb('0x5')](0xcc)[_0xe7fb('0x59')]();})[_0xe7fb('0x3c')](handleError(_0x42270b,null));};exports['getPreview']=function(_0x2e457c,_0x526f09){var _0x1eda1d=[];return db[_0xe7fb('0x51')][_0xe7fb('0x41')]()[_0xe7fb('0xe')](function(_0x5925e6){_0x1eda1d=_['keys'](_0x5925e6);return _0x2e457c[_0xe7fb('0x49')][_0xe7fb('0x5a')]({'where':{'type':_0xe7fb('0x5b'),'dialActive':!![],'dialMethod':_0xe7fb('0x5c')},'attributes':['id',_0xe7fb('0x5d'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0xe7fb('0xe')](function(_0x58d4ec){if(_0x58d4ec&&_0x58d4ec[_0xe7fb('0x2d')]){return db['sequelize']['transaction'](function(_0xc13fac){var _0x203da3={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe7fb('0x5e')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xe7fb('0x13')](_0x58d4ec,'id')},'$or':[{'UserId':null},{'UserId':_0x2e457c[_0xe7fb('0x49')]['id']}]};var _0x3401e0={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x58d4ec)[_0xe7fb('0x33')]([_0xe7fb('0x5f'),0x0])['map']('id')[_0xe7fb('0x60')]()},'$or':[{'UserId':null},{'UserId':_0x2e457c[_0xe7fb('0x49')]['id']}]};var _0x5151ec={'$or':[_0x203da3,_0x3401e0]};var _0x4136ae=[];if(_0x2e457c[_0xe7fb('0x3f')]['direction']&&_0x2e457c[_0xe7fb('0x3f')]['direction']===_0xe7fb('0x61')){if(!_[_0xe7fb('0x62')](_0x2e457c[_0xe7fb('0x3f')]['hopperIds'])){_0x5151ec['id']={'$in':_0x2e457c[_0xe7fb('0x3f')][_0xe7fb('0x63')]};}_0x4136ae=[[_0xe7fb('0x64'),_0xe7fb('0x65')],[_0xe7fb('0x66'),_0x58d4ec[0x0][_0xe7fb('0x5d')]===_0xe7fb('0x65')?_0xe7fb('0x67'):'ASC'],db['sequelize'][_0xe7fb('0x68')](_0xe7fb('0x69')),['id',_0xe7fb('0x67')]];}else{if(!_['isEmpty'](_0x2e457c['body'][_0xe7fb('0x63')])){_0x5151ec['id']={'$notIn':_0x2e457c[_0xe7fb('0x3f')][_0xe7fb('0x63')]};}_0x4136ae=[[_0xe7fb('0x64'),_0xe7fb('0x67')],[_0xe7fb('0x66'),_0x58d4ec[0x0][_0xe7fb('0x5d')]],db[_0xe7fb('0x6a')][_0xe7fb('0x68')](_0xe7fb('0x6b')),['id',_0xe7fb('0x65')]];}return db[_0xe7fb('0x37')][_0xe7fb('0x6c')]({'attributes':['id','scheduledat','phone',_0xe7fb('0x6d')],'where':_0x5151ec,'order':_0x4136ae,'transaction':_0xc13fac,'lock':_0xc13fac[_0xe7fb('0x6e')][_0xe7fb('0x6f')],'include':[{'model':db[_0xe7fb('0x51')],'as':_0xe7fb('0x70'),'attributes':_0x1eda1d,'include':[{'model':db['CmCompany'],'as':_0xe7fb('0x71'),'attributes':['id',_0xe7fb('0x11')]}]},{'model':db[_0xe7fb('0x72')],'as':_0xe7fb('0x73'),'attributes':['id',_0xe7fb('0x11')]},{'model':db[_0xe7fb('0x74')],'as':_0xe7fb('0x75'),'attributes':['id',_0xe7fb('0x11'),_0xe7fb('0x76')]}]})['then'](function(_0xc13cb){if(_0xc13cb){return _0xc13cb['update']({'UserId':_0x2e457c[_0xe7fb('0x49')]['id']},{'transaction':_0xc13fac});}});});}})[_0xe7fb('0xe')](handleEntityNotFound(_0x526f09,null))[_0xe7fb('0xe')](respondWithResult(_0x526f09,null))[_0xe7fb('0x3c')](handleError(_0x526f09,null));};exports[_0xe7fb('0x77')]=function(_0x4e5f55,_0x3882b5,_0x38e66a){var _0x4fd57a=[];var _0x2bf4aa=_0x4e5f55[_0xe7fb('0x40')]['id'];var _0x172547=_0x4e5f55[_0xe7fb('0x49')]['id'];return db[_0xe7fb('0x51')][_0xe7fb('0x41')]()[_0xe7fb('0xe')](function(_0x2d2373){_0x4fd57a=_[_0xe7fb('0x17')](_0x2d2373);return db[_0xe7fb('0x6a')][_0xe7fb('0x78')](function(_0x52b8a1){const _0x4b5f7e={'id':_0x2bf4aa};return db['CmHopper'][_0xe7fb('0x6c')]({'attributes':['id',_0xe7fb('0x79'),_0xe7fb('0x6d')],'where':_0x4b5f7e,'transaction':_0x52b8a1,'lock':_0x52b8a1[_0xe7fb('0x6e')]['UPDATE'],'include':[{'model':db[_0xe7fb('0x51')],'as':_0xe7fb('0x70'),'attributes':_0x4fd57a,'include':[{'model':db[_0xe7fb('0x7a')],'as':_0xe7fb('0x71'),'attributes':['id','name']}]},{'model':db[_0xe7fb('0x72')],'as':'List','attributes':['id',_0xe7fb('0x11')]},{'model':db[_0xe7fb('0x74')],'as':_0xe7fb('0x75'),'attributes':['id',_0xe7fb('0x11'),_0xe7fb('0x76')]}]})['then'](function(_0x3ffd6c){if(_0x3ffd6c){return _0x3ffd6c['update']({'UserId':_0x172547},{'transaction':_0x52b8a1});}});});})[_0xe7fb('0xe')](handleEntityNotFound(_0x3882b5,null))['then'](respondWithResult(_0x3882b5,null))[_0xe7fb('0x3c')](handleError(_0x3882b5,null));};exports[_0xe7fb('0x7b')]=function(_0x4c37cd,_0x2b6d69){return _0x4c37cd[_0xe7fb('0x49')][_0xe7fb('0x5a')]({'where':{'type':_0xe7fb('0x5b'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xe7fb('0xe')](function(_0x277335){if(_0x277335&&_0x277335[_0xe7fb('0x2d')]){return db['CmHopper'][_0xe7fb('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x277335,'id')},'$or':[{'UserId':null},{'UserId':_0x4c37cd[_0xe7fb('0x49')]['id']}]}});}return 0x0;})[_0xe7fb('0xe')](function(_0x4a8a65){if(!_[_0xe7fb('0x54')](_0x4a8a65)&&_[_0xe7fb('0x7c')](_0x4a8a65)){return _0x2b6d69[_0xe7fb('0x5')](0xc8)[_0xe7fb('0x6')]({'contacts':_0x4a8a65});}else{logger[_0xe7fb('0x7d')](_0xe7fb('0x7e'),_0xe7fb('0x7b'),0x194,_0xe7fb('0x7f'));_0x2b6d69[_0xe7fb('0xf')](0x194);}})[_0xe7fb('0x3c')](handleError(_0x2b6d69,null));};exports[_0xe7fb('0x80')]=function(_0x195d8b,_0x3d1f34){var _0x27c97a=shared[_0xe7fb('0x81')];var _0x30abe3=[];_[_0xe7fb('0x13')](_0x27c97a,function(_0x3ca3d1){_0x30abe3[_0xe7fb('0x82')]({'id':_0x3ca3d1[_0xe7fb('0x11')],'name':_0x3ca3d1['name'],'utcOffset':_0x3ca3d1[_0xe7fb('0x83')]});});return _0x3d1f34[_0xe7fb('0x5')](0xc8)[_0xe7fb('0x6')]({'tz':_0x30abe3});};exports[_0xe7fb('0x84')]=function(_0x19fe06,_0x44d443){var _0x320fba=shared['timezones'];var _0x4c0e3e={};if(!_[_0xe7fb('0x54')](_0x320fba[_0x19fe06['body']['id']]))_0x4c0e3e=_0x320fba[_0x19fe06[_0xe7fb('0x3f')]['id']];return _0x44d443[_0xe7fb('0x5')](0xc8)['json'](_0x4c0e3e);};
\ No newline at end of file
+var _0x1dcc=['destroy','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','campaign','membername','user','UserId','deleted','deletedat','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','format','direction','hopperIds','priority','ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','recallme','LOCK','UPDATE','Contact','List','VoiceQueue','findOne','Company','CmList','Queue','isNumber','json','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','offset','undefined','count','limit','status','set','Content-Range','then','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','concat','$and','$or','$gt','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','update','describe'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x4766f7,_0x33a45d){_0x4766f7=_0x4766f7-0x0;var _0x5ce6bb=_0x1dcc[_0x4766f7];return _0x5ce6bb;};'use strict';var moment=require(_0xc1dc('0x0'));var _=require(_0xc1dc('0x1'));var qs=require(_0xc1dc('0x2'));var logger=require(_0xc1dc('0x3'))('api');var shared=require(_0xc1dc('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x20abc9,_0x3eb139){_0x3eb139=_0x3eb139||0xc8;return function(_0x2a8ff9){if(_0x2a8ff9){return _0x20abc9['status'](_0x3eb139)['json'](_0x2a8ff9);}};}function respondWithFilteredResult(_0x1e57ba,_0x381ab6){return function(_0x41b667){if(_0x41b667){var _0x4dab41=typeof _0x381ab6[_0xc1dc('0x5')]===_0xc1dc('0x6')&&typeof _0x381ab6['limit']===_0xc1dc('0x6');var _0x51c02b=_0x41b667[_0xc1dc('0x7')];var _0x49ef48=_0x4dab41?0x0:_0x381ab6[_0xc1dc('0x5')];var _0x16520d=_0x4dab41?_0x41b667[_0xc1dc('0x7')]:_0x381ab6[_0xc1dc('0x5')]+_0x381ab6[_0xc1dc('0x8')];var _0x616175;if(_0x16520d>=_0x51c02b){_0x16520d=_0x51c02b;_0x616175=0xc8;}else{_0x616175=0xce;}_0x1e57ba[_0xc1dc('0x9')](_0x616175);return _0x1e57ba[_0xc1dc('0xa')](_0xc1dc('0xb'),_0x49ef48+'-'+_0x16520d+'/'+_0x51c02b)['json'](_0x41b667);}return null;};}function saveUpdates(_0x226ba3,_0x2c5f41){return function(_0xb7e667){if(_0xb7e667){return _0xb7e667['update'](_0x226ba3)[_0xc1dc('0xc')](function(_0x7d7257){return _0x7d7257;});}return null;};}function handleEntityNotFound(_0x299520,_0xd51b1e){return function(_0x145708){if(!_0x145708){_0x299520[_0xc1dc('0xd')](0x194);}return _0x145708;};}function handleError(_0x188182,_0x21aed1){_0x21aed1=_0x21aed1||0x1f4;return function(_0x265929){logger[_0xc1dc('0xe')](_0x265929[_0xc1dc('0xf')]);if(_0x265929['name']){delete _0x265929[_0xc1dc('0x10')];}_0x188182[_0xc1dc('0x9')](_0x21aed1)[_0xc1dc('0x11')](_0x265929);};}exports[_0xc1dc('0x12')]=function(_0x47c72e,_0x332400){var _0xc01137={},_0x499a42={},_0x484f6c={'count':0x0,'rows':[]};var _0x3f96d3=_[_0xc1dc('0x13')](db[_0xc1dc('0x14')][_0xc1dc('0x15')],function(_0x1707dc){return{'name':_0x1707dc[_0xc1dc('0x16')],'type':_0x1707dc[_0xc1dc('0x17')][_0xc1dc('0x18')]};});_0x499a42['model']=_['map'](_0x3f96d3,'name');_0x499a42[_0xc1dc('0x19')]=_[_0xc1dc('0x1a')](_0x47c72e['query']);_0x499a42[_0xc1dc('0x1b')]=_[_0xc1dc('0x1c')](_0x499a42[_0xc1dc('0x1d')],_0x499a42[_0xc1dc('0x19')]);_0x499a42[_0xc1dc('0x1b')]=_[_0xc1dc('0x1e')](_0x499a42[_0xc1dc('0x1b')],[_0xc1dc('0x1f'),_0xc1dc('0x20'),_0xc1dc('0x21'),'$gte',_0xc1dc('0x22'),_0xc1dc('0x23'),_0xc1dc('0x24'),_0xc1dc('0x25'),'$not',_0xc1dc('0x26'),_0xc1dc('0x27'),_0xc1dc('0x28'),_0xc1dc('0x29'),_0xc1dc('0x2a'),_0xc1dc('0x2b'),_0xc1dc('0x2c'),_0xc1dc('0x2d'),_0xc1dc('0x2a'),'$overlap',_0xc1dc('0x2e'),_0xc1dc('0x2f'),_0xc1dc('0x30')]);_0xc01137[_0xc1dc('0x31')]=_[_0xc1dc('0x1c')](_0x499a42[_0xc1dc('0x1d')],qs[_0xc1dc('0x32')](_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x32')]));_0xc01137[_0xc1dc('0x31')]=_0xc01137[_0xc1dc('0x31')]['length']?_0xc01137[_0xc1dc('0x31')]:_0x499a42[_0xc1dc('0x1d')];if(!_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x33')](_0xc1dc('0x34'))){_0xc01137[_0xc1dc('0x8')]=qs[_0xc1dc('0x8')](_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x8')]);_0xc01137['offset']=qs['offset'](_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x5')]);}_0xc01137[_0xc1dc('0x35')]=qs[_0xc1dc('0x36')](_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x36')]);_0xc01137['where']=qs[_0xc1dc('0x1b')](_[_0xc1dc('0x37')](_0x47c72e['query'],_0x499a42[_0xc1dc('0x1b')]),_0x3f96d3);if(_0x47c72e[_0xc1dc('0x19')]['filter']){_0xc01137[_0xc1dc('0x38')]=_[_0xc1dc('0x39')](_0xc01137[_0xc1dc('0x38')],{'$or':_['map'](_0x3f96d3,function(_0x1ee0ba){if(_0x1ee0ba[_0xc1dc('0x17')]!==_0xc1dc('0x3a')){var _0x341bb3={};_0x341bb3[_0x1ee0ba[_0xc1dc('0x10')]]={'$like':'%'+_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x3b')]+'%'};return _0x341bb3;}})});}_0xc01137=_[_0xc1dc('0x39')]({},_0xc01137,_0x47c72e[_0xc1dc('0x3c')]);var _0x4e3051={'where':_0xc01137[_0xc1dc('0x38')]};return db[_0xc1dc('0x14')][_0xc1dc('0x7')](_0x4e3051)['then'](function(_0x19bde9){_0x484f6c[_0xc1dc('0x7')]=_0x19bde9;if(_0x47c72e[_0xc1dc('0x19')][_0xc1dc('0x3d')]){_0xc01137[_0xc1dc('0x3e')]=[{'all':!![]}];}return db[_0xc1dc('0x14')][_0xc1dc('0x3f')](_0xc01137);})[_0xc1dc('0xc')](function(_0x5967b2){_0x484f6c[_0xc1dc('0x40')]=_0x5967b2;return _0x484f6c;})[_0xc1dc('0xc')](respondWithFilteredResult(_0x332400,_0xc01137))[_0xc1dc('0x41')](handleError(_0x332400,null));};exports[_0xc1dc('0x42')]=function(_0x1d8107,_0x1fbdb8){var _0x503ec8={'raw':!![],'where':{'id':_0x1d8107[_0xc1dc('0x43')]['id']}},_0x12a92d={};_0x12a92d[_0xc1dc('0x1d')]=_[_0xc1dc('0x1a')](db[_0xc1dc('0x14')]['rawAttributes']);_0x12a92d['query']=_[_0xc1dc('0x1a')](_0x1d8107[_0xc1dc('0x19')]);_0x12a92d[_0xc1dc('0x1b')]=_[_0xc1dc('0x1c')](_0x12a92d[_0xc1dc('0x1d')],_0x12a92d[_0xc1dc('0x19')]);_0x503ec8[_0xc1dc('0x31')]=_['intersection'](_0x12a92d[_0xc1dc('0x1d')],qs[_0xc1dc('0x32')](_0x1d8107[_0xc1dc('0x19')]['fields']));_0x503ec8[_0xc1dc('0x31')]=_0x503ec8[_0xc1dc('0x31')][_0xc1dc('0x44')]?_0x503ec8[_0xc1dc('0x31')]:_0x12a92d['model'];if(_0x1d8107['query'][_0xc1dc('0x3d')]){_0x503ec8[_0xc1dc('0x3e')]=[{'all':!![]}];}_0x503ec8=_['merge']({},_0x503ec8,_0x1d8107[_0xc1dc('0x3c')]);return db[_0xc1dc('0x14')][_0xc1dc('0x45')](_0x503ec8)[_0xc1dc('0xc')](handleEntityNotFound(_0x1fbdb8,null))[_0xc1dc('0xc')](respondWithResult(_0x1fbdb8,null))[_0xc1dc('0x41')](handleError(_0x1fbdb8,null));};exports[_0xc1dc('0x46')]=function(_0x54bb1f,_0x5a74a0){return db[_0xc1dc('0x14')]['create'](_0x54bb1f[_0xc1dc('0x47')],{})[_0xc1dc('0xc')](respondWithResult(_0x5a74a0,0xc9))[_0xc1dc('0x41')](handleError(_0x5a74a0,null));};exports[_0xc1dc('0x48')]=function(_0x452303,_0x40eb12){if(_0x452303[_0xc1dc('0x47')]['id']){delete _0x452303[_0xc1dc('0x47')]['id'];}return db['CmHopper'][_0xc1dc('0x45')]({'where':{'id':_0x452303[_0xc1dc('0x43')]['id']}})[_0xc1dc('0xc')](handleEntityNotFound(_0x40eb12,null))[_0xc1dc('0xc')](saveUpdates(_0x452303[_0xc1dc('0x47')],null))[_0xc1dc('0xc')](respondWithResult(_0x40eb12,null))[_0xc1dc('0x41')](handleError(_0x40eb12,null));};exports[_0xc1dc('0x49')]=function(_0x2ca7f1,_0x29417d){return db['CmHopper']['describe']()['then'](respondWithResult(_0x29417d,null))[_0xc1dc('0x41')](handleError(_0x29417d,null));};exports[_0xc1dc('0x4a')]=function(_0x57b792,_0x129e23){var _0x6ab7fc;var _0x505272=_0x57b792[_0xc1dc('0x43')]['id'];return db['CmHopper'][_0xc1dc('0x45')]({'where':{'id':_0x57b792[_0xc1dc('0x43')]['id']}})[_0xc1dc('0xc')](handleEntityNotFound(_0x129e23,null))[_0xc1dc('0xc')](function(_0x331d24){if(_0x331d24){return _0x331d24[_0xc1dc('0x4a')]()[_0xc1dc('0xc')](function(_0x34667b){return _0x34667b;});}})['then'](function(_0x21b385){_0x6ab7fc=_0x21b385;if(_0x21b385){if(_0x21b385[_0xc1dc('0x4b')]||_0x21b385[_0xc1dc('0x4c')]){return db[_0x21b385[_0xc1dc('0x4b')]?'VoiceQueue':_0xc1dc('0x4d')][_0xc1dc('0x45')]({'where':{'id':_0x21b385[_0xc1dc('0x4b')]?_0x21b385[_0xc1dc('0x4b')]:_0x21b385[_0xc1dc('0x4c')]},'attributes':['id',_0xc1dc('0x10')],'raw':!![]});}}})[_0xc1dc('0xc')](function(_0x17d80f){var _0x512ec1={};if(_0x17d80f){_[_0xc1dc('0x39')](_0x512ec1,_[_0xc1dc('0x4e')](_0x6ab7fc[_0xc1dc('0x4f')],[_0xc1dc('0x50'),_0xc1dc('0x51'),'id']));_0x512ec1[_0xc1dc('0x52')]=0x15;_0x512ec1[_0xc1dc('0x53')]='deleted';_0x512ec1[_0xc1dc('0x54')]=_0x17d80f[_0xc1dc('0x10')];_0x512ec1[_0xc1dc('0x55')]=_0x57b792[_0xc1dc('0x56')][_0xc1dc('0x10')];_0x512ec1[_0xc1dc('0x57')]=_0x57b792[_0xc1dc('0x56')]['id'];_0x512ec1[_0xc1dc('0x58')]=!![];_0x512ec1[_0xc1dc('0x59')]=moment()['format'](_0xc1dc('0x5a'));_0x512ec1['calleridnum']=_0x6ab7fc[_0xc1dc('0x5b')];_0x512ec1[_0xc1dc('0x5c')]=_0x6ab7fc[_0xc1dc('0x4b')]?_0xc1dc('0x5d'):_0xc1dc('0x5e');return db[_0xc1dc('0x5f')][_0xc1dc('0x45')]({'where':{'id':_0x512ec1['ContactId']},'attributes':[_0xc1dc('0x60'),_0xc1dc('0x61')]})['then'](function(_0x5635a6){if(!_[_0xc1dc('0x62')](_0x129e23)&&!_[_0xc1dc('0x62')](_0x5635a6[_0xc1dc('0x60')])){_0x512ec1[_0xc1dc('0x63')]=_0x5635a6['firstName'];if(!_['isNil'](_0x5635a6[_0xc1dc('0x61')])){_0x512ec1[_0xc1dc('0x63')]+='\x20'+_0x5635a6[_0xc1dc('0x61')];}}})['finally'](function(){return db[_0xc1dc('0x64')][_0xc1dc('0x46')](_0x512ec1);});}})[_0xc1dc('0xc')](function(_0x4476eb){return db[_0xc1dc('0x65')]['destroy']({'where':{'CmHopperId':_0x505272}});})[_0xc1dc('0xc')](function(){return _0x129e23[_0xc1dc('0x9')](0xcc)[_0xc1dc('0x66')]();})[_0xc1dc('0x41')](handleError(_0x129e23,null));};exports[_0xc1dc('0x67')]=function(_0x2a1a44,_0x166d59){var _0x145b62=[];return db[_0xc1dc('0x5f')]['describe']()['then'](function(_0x3c1bf8){_0x145b62=_[_0xc1dc('0x1a')](_0x3c1bf8);return _0x2a1a44[_0xc1dc('0x56')][_0xc1dc('0x68')]({'where':{'type':_0xc1dc('0x69'),'dialActive':!![],'dialMethod':_0xc1dc('0x6a')},'attributes':['id',_0xc1dc('0x6b'),_0xc1dc('0x6c')],'raw':!![]});})[_0xc1dc('0xc')](function(_0x4de18d){if(_0x4de18d&&_0x4de18d[_0xc1dc('0x44')]){return db[_0xc1dc('0x6d')][_0xc1dc('0x6e')](function(_0x20a96b){var _0x45ff61={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xc1dc('0x6f')](_0xc1dc('0x5a'))},'VoiceQueueId':{'$in':_[_0xc1dc('0x13')](_0x4de18d,'id')},'$or':[{'UserId':null},{'UserId':_0x2a1a44[_0xc1dc('0x56')]['id']}]};var _0x5c2942={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4de18d)[_0xc1dc('0x3b')]([_0xc1dc('0x6c'),0x0])[_0xc1dc('0x13')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x2a1a44['user']['id']}]};var _0x32038f={'$or':[_0x45ff61,_0x5c2942]};var _0x5dd75b=[];if(_0x2a1a44[_0xc1dc('0x47')][_0xc1dc('0x70')]&&_0x2a1a44[_0xc1dc('0x47')][_0xc1dc('0x70')]==='prev'){if(!_['isEmpty'](_0x2a1a44[_0xc1dc('0x47')][_0xc1dc('0x71')])){_0x32038f['id']={'$in':_0x2a1a44[_0xc1dc('0x47')][_0xc1dc('0x71')]};}_0x5dd75b=[[_0xc1dc('0x72'),_0xc1dc('0x73')],[_0xc1dc('0x74'),_0x4de18d[0x0]['dialOrderByScheduledAt']===_0xc1dc('0x73')?'DESC':_0xc1dc('0x73')],db[_0xc1dc('0x6d')]['literal'](_0xc1dc('0x75')),['id',_0xc1dc('0x76')]];}else{if(!_['isEmpty'](_0x2a1a44[_0xc1dc('0x47')][_0xc1dc('0x71')])){_0x32038f['id']={'$notIn':_0x2a1a44['body'][_0xc1dc('0x71')]};}_0x5dd75b=[[_0xc1dc('0x72'),_0xc1dc('0x76')],[_0xc1dc('0x74'),_0x4de18d[0x0][_0xc1dc('0x6b')]],db[_0xc1dc('0x6d')][_0xc1dc('0x77')](_0xc1dc('0x78')),['id','ASC']];}return db[_0xc1dc('0x14')]['findOne']({'attributes':['id',_0xc1dc('0x79'),'phone',_0xc1dc('0x7a')],'where':_0x32038f,'order':_0x5dd75b,'transaction':_0x20a96b,'lock':_0x20a96b[_0xc1dc('0x7b')][_0xc1dc('0x7c')],'include':[{'model':db[_0xc1dc('0x5f')],'as':_0xc1dc('0x7d'),'attributes':_0x145b62,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id',_0xc1dc('0x10')]}]},{'model':db['CmList'],'as':_0xc1dc('0x7e'),'attributes':['id',_0xc1dc('0x10')]},{'model':db[_0xc1dc('0x7f')],'as':'Queue','attributes':['id',_0xc1dc('0x10'),'dialActive']}]})[_0xc1dc('0xc')](function(_0x320441){if(_0x320441){return _0x320441[_0xc1dc('0x48')]({'UserId':_0x2a1a44['user']['id']},{'transaction':_0x20a96b});}});});}})[_0xc1dc('0xc')](handleEntityNotFound(_0x166d59,null))[_0xc1dc('0xc')](respondWithResult(_0x166d59,null))[_0xc1dc('0x41')](handleError(_0x166d59,null));};exports['getPreviewRecall']=function(_0x51d4ce,_0x2c6f8b,_0x2ab121){var _0x5d07dc=[];var _0x3a3e3e=_0x51d4ce[_0xc1dc('0x43')]['id'];var _0x813307=_0x51d4ce[_0xc1dc('0x56')]['id'];return db['CmContact'][_0xc1dc('0x49')]()[_0xc1dc('0xc')](function(_0x12c155){_0x5d07dc=_[_0xc1dc('0x1a')](_0x12c155);return db[_0xc1dc('0x6d')][_0xc1dc('0x6e')](function(_0x33e810){const _0x42d1fb={'id':_0x3a3e3e};return db[_0xc1dc('0x14')][_0xc1dc('0x80')]({'attributes':['id',_0xc1dc('0x79'),_0xc1dc('0x7a')],'where':_0x42d1fb,'transaction':_0x33e810,'lock':_0x33e810['LOCK']['UPDATE'],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x5d07dc,'include':[{'model':db['CmCompany'],'as':_0xc1dc('0x81'),'attributes':['id','name']}]},{'model':db[_0xc1dc('0x82')],'as':_0xc1dc('0x7e'),'attributes':['id',_0xc1dc('0x10')]},{'model':db[_0xc1dc('0x7f')],'as':_0xc1dc('0x83'),'attributes':['id','name','dialActive']}]})[_0xc1dc('0xc')](function(_0x264989){if(_0x264989){return _0x264989['update']({'UserId':_0x813307},{'transaction':_0x33e810});}});});})[_0xc1dc('0xc')](handleEntityNotFound(_0x2c6f8b,null))['then'](respondWithResult(_0x2c6f8b,null))['catch'](handleError(_0x2c6f8b,null));};exports['getOpenContacts']=function(_0x4e3bf2,_0x43634f){return _0x4e3bf2['user'][_0xc1dc('0x68')]({'where':{'type':_0xc1dc('0x69'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xc1dc('0xc')](function(_0x31f9bc){if(_0x31f9bc&&_0x31f9bc[_0xc1dc('0x44')]){return db[_0xc1dc('0x14')][_0xc1dc('0x7')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xc1dc('0x5a'))},'VoiceQueueId':{'$in':_['map'](_0x31f9bc,'id')},'$or':[{'UserId':null},{'UserId':_0x4e3bf2['user']['id']}]}});}return 0x0;})['then'](function(_0x2c22a7){if(!_[_0xc1dc('0x62')](_0x2c22a7)&&_[_0xc1dc('0x84')](_0x2c22a7)){return _0x43634f[_0xc1dc('0x9')](0xc8)[_0xc1dc('0x85')]({'contacts':_0x2c22a7});}else{logger[_0xc1dc('0xe')](_0xc1dc('0x86'),'getOpenContacts',0x194,_0xc1dc('0x87'));_0x43634f[_0xc1dc('0xd')](0x194);}})[_0xc1dc('0x41')](handleError(_0x43634f,null));};exports[_0xc1dc('0x88')]=function(_0x413c40,_0x247cc1){var _0x4bca30=shared[_0xc1dc('0x89')];var _0x1d9dfb=[];_['map'](_0x4bca30,function(_0x5d3625){_0x1d9dfb[_0xc1dc('0x8a')]({'id':_0x5d3625[_0xc1dc('0x10')],'name':_0x5d3625[_0xc1dc('0x10')],'utcOffset':_0x5d3625[_0xc1dc('0x8b')]});});return _0x247cc1[_0xc1dc('0x9')](0xc8)[_0xc1dc('0x85')]({'tz':_0x1d9dfb});};exports[_0xc1dc('0x8c')]=function(_0x48d6a7,_0x551195){var _0x3750d4=shared['timezones'];var _0x24efce={};if(!_[_0xc1dc('0x62')](_0x3750d4[_0x48d6a7[_0xc1dc('0x47')]['id']]))_0x24efce=_0x3750d4[_0x48d6a7['body']['id']];return _0x551195[_0xc1dc('0x9')](0xc8)[_0xc1dc('0x85')](_0x24efce);};
\ No newline at end of file
index 15976cd..632f30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['scheduledat','phone','priority','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopper.attributes','exports','define','cm_hopper'];(function(_0x2a8b8f,_0x3a3fb9){var _0x5808ec=function(_0x3ae25a){while(--_0x3ae25a){_0x2a8b8f['push'](_0x2a8b8f['shift']());}};_0x5808ec(++_0x3a3fb9);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2dc96f,_0x459058){_0x2dc96f=_0x2dc96f-0x0;var _0xd012da=_0x5fc3[_0x2dc96f];return _0xd012da;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('CmHopper',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]},{'name':_0x35fc('0xd'),'fields':[_0x35fc('0xd')]},{'name':_0x35fc('0xe'),'fields':[_0x35fc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe2fe=['CmHopper','scheduledat','phone','priority','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x5a2601,_0x3fd7d1){var _0x27ab50=function(_0x53f6ca){while(--_0x53f6ca){_0x5a2601['push'](_0x5a2601['shift']());}};_0x27ab50(++_0x3fd7d1);}(_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 logger=require('../../config/logger')(_0xee2f('0x1'));var moment=require('moment');var BPromise=require(_0xee2f('0x2'));var rp=require(_0xee2f('0x3'));var fs=require('fs');var path=require(_0xee2f('0x4'));var rimraf=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var attributes=require('./cmHopper.attributes');module[_0xee2f('0x7')]=function(_0x2b7e7c,_0x49926b){return _0x2b7e7c[_0xee2f('0x8')](_0xee2f('0x9'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xee2f('0xa'),'fields':['scheduledat']},{'name':_0xee2f('0xb'),'fields':[_0xee2f('0xb')]},{'name':'priority','fields':[_0xee2f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6249e99..a6bafca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc5=['CreateCmHopper','create','UpdateCmHopper','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','CmContact','describe','sequelize','order','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','push','update','includes','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','GetContactRecallMe','GetCmHopperPreview','findOne','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','interval','availableAgentsIds','\x20MINUTE','CmList','List','NOW()','lodash','util','moment','bluebird','../../config/logger','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','catch','error','message','ShowCmHopper','find','info','debug','stringify'];(function(_0x16c8df,_0x28365){var _0x118c66=function(_0x137872){while(--_0x137872){_0x16c8df['push'](_0x16c8df['shift']());}};_0x118c66(++_0x28365);}(_0xecc5,0x1c0));var _0x5ecc=function(_0x591988,_0x41a5fd){_0x591988=_0x591988-0x0;var _0x1a119b=_0xecc5[_0x591988];return _0x1a119b;};'use strict';var _=require(_0x5ecc('0x0'));var util=require(_0x5ecc('0x1'));var moment=require(_0x5ecc('0x2'));var BPromise=require(_0x5ecc('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x5ecc('0x4'))(_0x5ecc('0x5'));exports[_0x5ecc('0x6')]=function(_0x3673dc){var _0x4cb54f=this;return new Promise(function(_0x27f22f,_0x4818bd){return db[_0x5ecc('0x7')][_0x5ecc('0x8')]({'raw':_0x3673dc['options']?_0x3673dc[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc['options'][_0x5ecc('0xc')]||null:null,'limit':_0x3673dc[_0x5ecc('0x9')]?_0x3673dc['options'][_0x5ecc('0xd')]||null:null,'include':_0x3673dc['options']?_0x3673dc['options'][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3673dc[_0x5ecc('0x9')]['include'],function(_0x35d297){return{'model':db[_0x35d297[_0x5ecc('0x10')]],'as':_0x35d297['as'],'attributes':_0x35d297[_0x5ecc('0xc')],'include':_0x35d297[_0x5ecc('0xe')]?_['map'](_0x35d297[_0x5ecc('0xe')],function(_0x1c8b28){return{'model':db[_0x1c8b28[_0x5ecc('0x10')]],'as':_0x1c8b28['as'],'attributes':_0x1c8b28[_0x5ecc('0xc')],'include':_0x1c8b28[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x1c8b28['include'],function(_0x57f147){return{'model':db[_0x57f147[_0x5ecc('0x10')]],'as':_0x57f147['as'],'attributes':_0x57f147[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0xafc35e){logger['info']('GetCmHopper',_0x3673dc);logger['debug'](_0x5ecc('0x6'),_0x3673dc,JSON['stringify'](_0xafc35e));_0x27f22f(_0xafc35e);})[_0x5ecc('0x12')](function(_0x46c9c5){logger[_0x5ecc('0x13')](_0x5ecc('0x6'),_0x46c9c5[_0x5ecc('0x14')],_0x3673dc);_0x4818bd(_0x4cb54f[_0x5ecc('0x13')](0x1f4,_0x46c9c5[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x15')]=function(_0x583af7){var _0x1a3ea9=this;return new Promise(function(_0xff28cb,_0x45b4e0){return db[_0x5ecc('0x7')][_0x5ecc('0x16')]({'raw':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x583af7[_0x5ecc('0x9')]?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'include':_0x583af7['options']?_0x583af7[_0x5ecc('0x9')][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x583af7[_0x5ecc('0x9')]['include'],function(_0xdb8f8e){return{'model':db[_0xdb8f8e[_0x5ecc('0x10')]],'as':_0xdb8f8e['as'],'attributes':_0xdb8f8e['attributes'],'include':_0xdb8f8e[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0xdb8f8e['include'],function(_0x2ddfd1){return{'model':db[_0x2ddfd1[_0x5ecc('0x10')]],'as':_0x2ddfd1['as'],'attributes':_0x2ddfd1[_0x5ecc('0xc')],'include':_0x2ddfd1[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x2ddfd1[_0x5ecc('0xe')],function(_0x1c2864){return{'model':db[_0x1c2864[_0x5ecc('0x10')]],'as':_0x1c2864['as'],'attributes':_0x1c2864[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x521dcf){logger[_0x5ecc('0x17')](_0x5ecc('0x15'),_0x583af7);logger[_0x5ecc('0x18')](_0x5ecc('0x15'),_0x583af7,JSON[_0x5ecc('0x19')](_0x521dcf));_0xff28cb(_0x521dcf);})[_0x5ecc('0x12')](function(_0x149ca8){logger[_0x5ecc('0x13')]('ShowCmHopper',_0x149ca8[_0x5ecc('0x14')],_0x583af7);_0x45b4e0(_0x1a3ea9['error'](0x1f4,_0x149ca8['message']));});});};exports[_0x5ecc('0x1a')]=function(_0x565a3a){var _0x506224=this;return new Promise(function(_0x433b8f,_0x2c6bca){return db[_0x5ecc('0x7')][_0x5ecc('0x1b')](_0x565a3a['body'],{'raw':_0x565a3a[_0x5ecc('0x9')]?_0x565a3a[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![]})['then'](function(_0x1c2907){logger['info'](_0x5ecc('0x1a'),_0x565a3a);logger[_0x5ecc('0x18')](_0x5ecc('0x1a'),_0x565a3a,JSON[_0x5ecc('0x19')](_0x1c2907));_0x433b8f(_0x1c2907);})['catch'](function(_0x3d83bf){logger[_0x5ecc('0x13')]('CreateCmHopper',_0x3d83bf['message'],_0x565a3a);_0x2c6bca(_0x506224[_0x5ecc('0x13')](0x1f4,_0x3d83bf['message']));});});};exports[_0x5ecc('0x1c')]=function(_0x29b8a0){var _0x4c0eba=this;return new Promise(function(_0x3e29f2,_0x1e89f3){return db[_0x5ecc('0x7')]['update'](_0x29b8a0[_0x5ecc('0x1d')],{'raw':_0x29b8a0[_0x5ecc('0x9')]?_0x29b8a0[_0x5ecc('0x9')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29b8a0['options']?_0x29b8a0[_0x5ecc('0x9')]['where']||null:null,'attributes':_0x29b8a0[_0x5ecc('0x9')]?_0x29b8a0['options']['attributes']||null:null,'limit':_0x29b8a0['options']?_0x29b8a0[_0x5ecc('0x9')]['limit']||null:null})['then'](function(_0xa1791e){logger['info'](_0x5ecc('0x1c'),_0x29b8a0);logger[_0x5ecc('0x17')](_0x5ecc('0x1e'),JSON[_0x5ecc('0x19')](_0x29b8a0['options'][_0x5ecc('0xb')]),_0x29b8a0[_0x5ecc('0x1d')][_0x5ecc('0x1f')]);logger[_0x5ecc('0x18')](_0x5ecc('0x1c'),_0x29b8a0,JSON[_0x5ecc('0x19')](_0xa1791e));_0x3e29f2(_0xa1791e);})[_0x5ecc('0x12')](function(_0x237ff1){logger[_0x5ecc('0x13')](_0x5ecc('0x1c'),_0x237ff1['message'],_0x29b8a0);_0x1e89f3(_0x4c0eba[_0x5ecc('0x13')](0x1f4,_0x237ff1['message']));});});};exports[_0x5ecc('0x20')]=function(_0x165c3a){var _0x1a6108=this;return new Promise(function(_0x4ec575,_0x55ed0e){return db[_0x5ecc('0x7')][_0x5ecc('0x21')]({'where':_0x165c3a[_0x5ecc('0x9')]?_0x165c3a[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null})[_0x5ecc('0x11')](function(_0x49284e){logger['info'](_0x5ecc('0x20'),_0x165c3a);logger[_0x5ecc('0x18')]('DestroyCmHopper',_0x165c3a,JSON['stringify'](_0x49284e));_0x4ec575(_0x49284e);})['catch'](function(_0x1bdf83){logger[_0x5ecc('0x13')](_0x5ecc('0x20'),_0x1bdf83[_0x5ecc('0x14')],_0x165c3a);_0x55ed0e(_0x1a6108['error'](0x1f4,_0x1bdf83[_0x5ecc('0x14')]));});});};exports['GetContactDialer']=function(_0x37b282){var _0x2c8f96=this;return new Promise(function(_0x287038,_0x5ca263){return db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(_0x2082b0){return db[_0x5ecc('0x24')]['transaction'](function(_0x129211){return db['CmHopper']['findAll']({'where':_0x37b282[_0x5ecc('0x9')]?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'attributes':_0x37b282['options']?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'limit':_0x37b282[_0x5ecc('0x9')]?_0x37b282[_0x5ecc('0x9')][_0x5ecc('0xd')]||null:null,'order':_0x37b282[_0x5ecc('0x9')]?_0x37b282['options'][_0x5ecc('0x25')]||null:null,'transaction':_0x129211,'lock':_0x129211[_0x5ecc('0x26')][_0x5ecc('0x27')],'include':[{'model':db[_0x5ecc('0x22')],'as':_0x5ecc('0x28'),'attributes':_[_0x5ecc('0x29')](_0x2082b0)},{'model':db[_0x5ecc('0x2a')],'as':_0x5ecc('0x2b'),'attributes':['id',_0x5ecc('0x2c'),_0x5ecc('0x2d')]}]})[_0x5ecc('0x11')](function(_0x2bc661){var _0x56854c=[];var _0x3bdaf2=[];for(var _0x1fcc21=0x0;_0x1fcc21<_0x2bc661[_0x5ecc('0x2e')];_0x1fcc21+=0x1){var _0x1cc38d=_0x2bc661[_0x1fcc21]['UserId'];if(_0x1cc38d===null){_0x56854c[_0x5ecc('0x2f')](_0x2bc661[_0x1fcc21][_0x5ecc('0x30')](_0x37b282['body'],{'transaction':_0x129211}));}else if(!_0x3bdaf2[_0x5ecc('0x31')](_0x1cc38d)){_0x3bdaf2[_0x5ecc('0x2f')](_0x1cc38d);_0x56854c['push'](_0x2bc661[_0x1fcc21]['update'](_0x37b282[_0x5ecc('0x1d')],{'transaction':_0x129211}));}}return BPromise[_0x5ecc('0x32')](_0x56854c);});})[_0x5ecc('0x11')](function(_0x1aceb7){logger[_0x5ecc('0x17')](_0x5ecc('0x33'),_0x37b282);if(_0x1aceb7[_0x5ecc('0x2e')]>0x0){logger[_0x5ecc('0x17')](_0x5ecc('0x34'),_0x1aceb7[0x0][_0x5ecc('0x35')]['id'],_0x1aceb7[0x0]['dataValues'][_0x5ecc('0x36')],_0x1aceb7[0x0][_0x5ecc('0x35')][_0x5ecc('0x1f')]);}logger[_0x5ecc('0x18')](_0x5ecc('0x33'),_0x37b282,JSON[_0x5ecc('0x19')](_0x1aceb7));_0x287038(_0x1aceb7);})['catch'](function(_0x3d9128){logger[_0x5ecc('0x13')](_0x5ecc('0x33'),_0x3d9128[_0x5ecc('0x14')],_0x37b282);_0x5ca263(_0x2c8f96['error'](0x1f4,_0x3d9128[_0x5ecc('0x14')]));});});});};exports[_0x5ecc('0x37')]=function(_0x1ba750){var _0x515c74=this;return new Promise(function(_0x49f7d8,_0x5b5500){return db[_0x5ecc('0x24')][_0x5ecc('0x38')](function(_0x5ce6a2){return db[_0x5ecc('0x39')][_0x5ecc('0x1b')](_0x1ba750[_0x5ecc('0x1d')],{'raw':_0x1ba750[_0x5ecc('0x9')]?_0x1ba750[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'transaction':_0x5ce6a2})['then'](function(){logger[_0x5ecc('0x17')](_0x5ecc('0x3a'),JSON[_0x5ecc('0x19')](_0x1ba750[_0x5ecc('0x9')]['where']),_0x1ba750[_0x5ecc('0x9')]['where'][_0x5ecc('0x1f')]);return db[_0x5ecc('0x7')][_0x5ecc('0x21')]({'where':_0x1ba750[_0x5ecc('0x9')]?_0x1ba750[_0x5ecc('0x9')][_0x5ecc('0xb')]||null:null,'transaction':_0x5ce6a2});});})[_0x5ecc('0x11')](function(_0x540f93){logger[_0x5ecc('0x17')](_0x5ecc('0x37'),_0x1ba750);logger[_0x5ecc('0x18')]('MoveContactManagedDialer',_0x1ba750,JSON[_0x5ecc('0x19')](_0x540f93));_0x49f7d8(_0x540f93);})[_0x5ecc('0x12')](function(_0xc5b04d){logger[_0x5ecc('0x13')](_0x5ecc('0x37'),_0xc5b04d[_0x5ecc('0x14')],_0x1ba750);_0x5b5500(_0x515c74[_0x5ecc('0x13')](0x1f4,_0xc5b04d['message']));});});};exports[_0x5ecc('0x3b')]=function(_0x3de94c){var _0x4f16a6=this;return new Promise(function(_0x283772,_0x5b9a96){return db[_0x5ecc('0x7')][_0x5ecc('0x8')]({'raw':_0x3de94c[_0x5ecc('0x9')]?_0x3de94c[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x3de94c[_0x5ecc('0x9')]?_0x3de94c['options'][_0x5ecc('0xb')]||null:null,'attributes':[[db[_0x5ecc('0x24')]['fn'](_0x5ecc('0x3c'),db[_0x5ecc('0x24')]['fn']('IF',db[_0x5ecc('0x24')][_0x5ecc('0x3d')](_0x5ecc('0x3e')+util[_0x5ecc('0x3f')]('\x22%s\x22',moment()[_0x5ecc('0x3f')](_0x5ecc('0x40')))+'\x20,\x201,\x20null'))),'contactsRescheduled']]})['then'](function(_0x3bd162){logger[_0x5ecc('0x17')](_0x5ecc('0x3b'),_0x3de94c);logger[_0x5ecc('0x18')](_0x5ecc('0x3b'),_0x3de94c,JSON[_0x5ecc('0x19')](_0x3bd162));_0x283772(_0x3bd162);})['catch'](function(_0x427c9d){logger[_0x5ecc('0x13')](_0x5ecc('0x3b'),_0x427c9d['message'],_0x3de94c);_0x5b9a96(_0x4f16a6[_0x5ecc('0x13')](0x1f4,_0x427c9d[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x41')]=function(_0x3cfb0b){var _0x32446d=this;return new Promise(function(_0x21690f,_0x553629){return db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(){return db['sequelize'][_0x5ecc('0x38')](function(_0x9867d4){return db['CmHopper']['findAll']({'where':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')]['where']||null:null,'attributes':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')]['attributes']||null:null,'limit':0x1,'order':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b['options']['order']||null:null,'group':db[_0x5ecc('0x7')]['UserId'],'transaction':_0x9867d4,'lock':_0x9867d4[_0x5ecc('0x26')][_0x5ecc('0x27')],'include':_0x3cfb0b[_0x5ecc('0x9')]?_0x3cfb0b[_0x5ecc('0x9')][_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3cfb0b['options'][_0x5ecc('0xe')],function(_0x1061b6){return{'model':db[_0x1061b6[_0x5ecc('0x10')]],'as':_0x1061b6['as'],'attributes':_0x1061b6[_0x5ecc('0xc')],'include':_0x1061b6['include']?_[_0x5ecc('0xf')](_0x1061b6[_0x5ecc('0xe')],function(_0x1b05ef){return{'model':db[_0x1b05ef[_0x5ecc('0x10')]],'as':_0x1b05ef['as'],'attributes':_0x1b05ef[_0x5ecc('0xc')],'include':_0x1b05ef[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x1b05ef[_0x5ecc('0xe')],function(_0xcfe4d9){return{'model':db[_0xcfe4d9[_0x5ecc('0x10')]],'as':_0xcfe4d9['as'],'attributes':_0xcfe4d9[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x1529e8){var _0x21f6ec=[];for(var _0x2fa916=0x0;_0x2fa916<_0x1529e8[_0x5ecc('0x2e')];_0x2fa916+=0x1){_0x21f6ec[_0x5ecc('0x2f')](_0x1529e8[_0x2fa916][_0x5ecc('0x30')](_0x3cfb0b[_0x5ecc('0x1d')],{'transaction':_0x9867d4}));}return BPromise['all'](_0x21f6ec);});})[_0x5ecc('0x11')](function(_0x4d2491){logger[_0x5ecc('0x17')](_0x5ecc('0x41'),_0x3cfb0b);logger[_0x5ecc('0x18')](_0x5ecc('0x41'),_0x3cfb0b,JSON[_0x5ecc('0x19')](_0x4d2491));_0x21690f(_0x4d2491);})[_0x5ecc('0x12')](function(_0x3c1e8d){logger[_0x5ecc('0x13')](_0x5ecc('0x41'),_0x3c1e8d[_0x5ecc('0x14')],_0x3cfb0b);_0x553629(_0x32446d[_0x5ecc('0x13')](0x1f4,_0x3c1e8d['message']));});});});};exports[_0x5ecc('0x42')]=function(_0x110e60){var _0x1b3904=this;return new Promise(function(_0x5892d9,_0x2b5cf8){db[_0x5ecc('0x22')][_0x5ecc('0x23')]()[_0x5ecc('0x11')](function(_0x3490b9){return db[_0x5ecc('0x7')]['findAll']({'raw':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xa')]===undefined?!![]:![]:!![],'where':_0x110e60[_0x5ecc('0x9')]?_0x110e60['options'][_0x5ecc('0xb')]||null:null,'attributes':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xc')]||null:null,'limit':_0x110e60[_0x5ecc('0x9')]?_0x110e60[_0x5ecc('0x9')][_0x5ecc('0xd')]||null:null,'include':_0x110e60[_0x5ecc('0x9')]?_0x110e60['options'][_0x5ecc('0xe')]?_['map'](_0x110e60['options'][_0x5ecc('0xe')],function(_0x3f4cdb){return{'model':db[_0x3f4cdb[_0x5ecc('0x10')]],'as':_0x3f4cdb['as'],'attributes':_0x3f4cdb['as']==='Contact'?_[_0x5ecc('0x29')](_0x3490b9):_0x3f4cdb[_0x5ecc('0xc')],'include':_0x3f4cdb[_0x5ecc('0xe')]?_[_0x5ecc('0xf')](_0x3f4cdb['include'],function(_0x1f7f01){return{'model':db[_0x1f7f01[_0x5ecc('0x10')]],'as':_0x1f7f01['as'],'attributes':_0x1f7f01[_0x5ecc('0xc')],'include':_0x1f7f01['include']?_[_0x5ecc('0xf')](_0x1f7f01[_0x5ecc('0xe')],function(_0x17a57a){return{'model':db[_0x17a57a[_0x5ecc('0x10')]],'as':_0x17a57a['as'],'attributes':_0x17a57a[_0x5ecc('0xc')]};}):[]};}):[]};}):[]:[]})[_0x5ecc('0x11')](function(_0x532056){logger[_0x5ecc('0x17')](_0x5ecc('0x6'),_0x110e60);logger[_0x5ecc('0x18')](_0x5ecc('0x6'),_0x110e60,JSON[_0x5ecc('0x19')](_0x532056));_0x5892d9(_0x532056);})['catch'](function(_0x1f35cc){logger[_0x5ecc('0x13')]('GetCmHopper',_0x1f35cc[_0x5ecc('0x14')],_0x110e60);_0x2b5cf8(_0x1b3904[_0x5ecc('0x13')](0x1f4,_0x1f35cc[_0x5ecc('0x14')]));});});});};exports['GetContactByPhone']=function(_0xf4cb1){var _0x3660a3=this;return new Promise(function(_0x48463f,_0x321d74){return db[_0x5ecc('0x22')][_0x5ecc('0x43')]({'raw':!![],'where':{'phone':_0xf4cb1[_0x5ecc('0x9')]['where']['phone']},'attributes':['id',_0x5ecc('0x44')],'order':[['id',_0x5ecc('0x45')]]})[_0x5ecc('0x11')](function(_0x2ed622){logger[_0x5ecc('0x17')](_0x5ecc('0x46'),_0xf4cb1);logger[_0x5ecc('0x18')]('getContactByPhone',_0xf4cb1,JSON[_0x5ecc('0x19')](_0x2ed622));_0x48463f(_0x2ed622);})[_0x5ecc('0x12')](function(_0x403dfc){logger['error'](_0x5ecc('0x46'),_0x403dfc[_0x5ecc('0x14')],_0xf4cb1);_0x321d74(_0x3660a3['error'](0x1f4,_0x403dfc[_0x5ecc('0x14')]));});});};exports[_0x5ecc('0x47')]=function(_0x37c950){var _0x41b71e=this;return new Promise(function(_0x29ac39,_0x2d6b9b){return db['sequelize'][_0x5ecc('0x38')](function(_0x2cfe90){var _0x15bd02=_0x37c950['options']&&_0x37c950[_0x5ecc('0x9')]['where']?_0x37c950[_0x5ecc('0x9')][_0x5ecc('0xb')]:{};return db[_0x5ecc('0x7')][_0x5ecc('0x30')](_0x37c950[_0x5ecc('0x1d')],{'where':_0x15bd02,'transaction':_0x2cfe90})[_0x5ecc('0x11')](function(_0x5f106d){logger[_0x5ecc('0x17')](_0x5ecc('0x47'),_0x37c950);logger[_0x5ecc('0x18')]('ResetActiveCalls',_0x37c950,JSON[_0x5ecc('0x19')](_0x5f106d));_0x29ac39(_0x5f106d);})[_0x5ecc('0x12')](function(_0x4a7850){logger[_0x5ecc('0x13')]('ResetActiveCalls',_0x4a7850[_0x5ecc('0x14')],_0x37c950);_0x2d6b9b(_0x41b71e['error'](0x1f4,_0x4a7850[_0x5ecc('0x14')]));});});});};exports[_0x5ecc('0x48')]=function(_0x54feb2){var _0x542389=this;var _0x474443=_0x54feb2['body'][_0x5ecc('0xb')]['voiceQueueIds'];var _0xfa289e=_0x54feb2[_0x5ecc('0x1d')][_0x5ecc('0xb')][_0x5ecc('0x49')];var _0x327bb6=_0x54feb2[_0x5ecc('0x1d')][_0x5ecc('0xb')][_0x5ecc('0x4a')];return new Promise(function(_0x105c37,_0x5255b2){return db[_0x5ecc('0x7')]['findAll']({'where':{'voiceQueueId':{'$in':_0x474443},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize']['literal']('NOW()\x20+\x20INTERVAL\x20'+_0xfa289e+_0x5ecc('0x4b')),'$gt':db['sequelize'][_0x5ecc('0x3d')]('NOW()')}},'UserId':{'$in':_0x327bb6}},'include':[{'model':db['CmContact'],'as':_0x5ecc('0x28')},{'model':db[_0x5ecc('0x2a')],'as':_0x5ecc('0x2b'),'attributes':['id',_0x5ecc('0x2c'),_0x5ecc('0x2d')]},{'model':db[_0x5ecc('0x4c')],'as':_0x5ecc('0x4d')}]})['then'](function(_0x2d2c83){if(_0x2d2c83[_0x5ecc('0x2e')]>0x0){return db[_0x5ecc('0x24')][_0x5ecc('0x38')](function(_0x3bab42){return db['CmHopper'][_0x5ecc('0x30')]({'recallmeNotifiedDate':db[_0x5ecc('0x24')][_0x5ecc('0x3d')](_0x5ecc('0x4e'))},{'where':{'id':{'$in':_[_0x5ecc('0xf')](_0x2d2c83,'id')}},'transaction':_0x3bab42})[_0x5ecc('0x11')](function(){_0x105c37(_0x2d2c83);})['catch'](function(_0x57e3ea){logger[_0x5ecc('0x13')](_0x5ecc('0x48'),_0x57e3ea[_0x5ecc('0x14')],_0x54feb2);_0x5255b2(_0x542389[_0x5ecc('0x13')](0x1f4,_0x57e3ea[_0x5ecc('0x14')]));});})['catch'](function(_0x12174f){logger[_0x5ecc('0x13')]('CmHopperHandlePreviewRecallNotifications',_0x12174f[_0x5ecc('0x14')],_0x54feb2);_0x5255b2(_0x542389['error'](0x1f4,_0x12174f['message']));});}else{_0x105c37(_0x2d2c83);}});});};
\ No newline at end of file
+var _0x3414=['UpdateCmHopper','update','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','body','DestroyCmHopper','destroy','GetContactDialer','CmContact','sequelize','transaction','order','UPDATE','Contact','User','voicePause','length','push','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','active','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','describe','UserId','LOCK','keys','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','voiceQueueIds','interval','availableAgentsIds','literal','\x20MINUTE','Agent','name','List','CmHopperHandlePreviewRecallNotifications','lodash','moment','../../mysqldb','rpc','CmHopper','findAll','options','where','map','attributes','include','model','then','info','debug','GetCmHopper','stringify','error','message','ShowCmHopper','raw','catch','CreateCmHopper','create'];(function(_0x16ffda,_0x1c55bd){var _0x2e36f5=function(_0x146fe6){while(--_0x146fe6){_0x16ffda['push'](_0x16ffda['shift']());}};_0x2e36f5(++_0x1c55bd);}(_0x3414,0x1b0));var _0x4341=function(_0x2cede4,_0x3b25af){_0x2cede4=_0x2cede4-0x0;var _0x1fc35e=_0x3414[_0x2cede4];return _0x1fc35e;};'use strict';var _=require(_0x4341('0x0'));var util=require('util');var moment=require(_0x4341('0x1'));var BPromise=require('bluebird');var db=require(_0x4341('0x2'))['db'];var logger=require('../../config/logger')(_0x4341('0x3'));exports['GetCmHopper']=function(_0xbedfd8){var _0x2fbe51=this;return new Promise(function(_0x25c3db,_0x164f36){return db[_0x4341('0x4')][_0x4341('0x5')]({'raw':_0xbedfd8[_0x4341('0x6')]?_0xbedfd8[_0x4341('0x6')]['raw']===undefined?!![]:![]:!![],'where':_0xbedfd8['options']?_0xbedfd8[_0x4341('0x6')][_0x4341('0x7')]||null:null,'attributes':_0xbedfd8['options']?_0xbedfd8[_0x4341('0x6')]['attributes']||null:null,'limit':_0xbedfd8[_0x4341('0x6')]?_0xbedfd8['options']['limit']||null:null,'include':_0xbedfd8[_0x4341('0x6')]?_0xbedfd8[_0x4341('0x6')]['include']?_[_0x4341('0x8')](_0xbedfd8[_0x4341('0x6')]['include'],function(_0x519ff7){return{'model':db[_0x519ff7['model']],'as':_0x519ff7['as'],'attributes':_0x519ff7[_0x4341('0x9')],'include':_0x519ff7[_0x4341('0xa')]?_['map'](_0x519ff7[_0x4341('0xa')],function(_0x100e24){return{'model':db[_0x100e24['model']],'as':_0x100e24['as'],'attributes':_0x100e24['attributes'],'include':_0x100e24[_0x4341('0xa')]?_[_0x4341('0x8')](_0x100e24[_0x4341('0xa')],function(_0x5775a2){return{'model':db[_0x5775a2[_0x4341('0xb')]],'as':_0x5775a2['as'],'attributes':_0x5775a2['attributes']};}):[]};}):[]};}):[]:[]})[_0x4341('0xc')](function(_0x266e3a){logger[_0x4341('0xd')]('GetCmHopper',_0xbedfd8);logger[_0x4341('0xe')](_0x4341('0xf'),_0xbedfd8,JSON[_0x4341('0x10')](_0x266e3a));_0x25c3db(_0x266e3a);})['catch'](function(_0x5aa5e2){logger[_0x4341('0x11')](_0x4341('0xf'),_0x5aa5e2[_0x4341('0x12')],_0xbedfd8);_0x164f36(_0x2fbe51['error'](0x1f4,_0x5aa5e2[_0x4341('0x12')]));});});};exports[_0x4341('0x13')]=function(_0x44d50e){var _0x432f90=this;return new Promise(function(_0x20b520,_0x26cb6f){return db['CmHopper']['find']({'raw':_0x44d50e[_0x4341('0x6')]?_0x44d50e[_0x4341('0x6')][_0x4341('0x14')]===undefined?!![]:![]:!![],'where':_0x44d50e['options']?_0x44d50e['options']['where']||null:null,'attributes':_0x44d50e[_0x4341('0x6')]?_0x44d50e[_0x4341('0x6')][_0x4341('0x9')]||null:null,'include':_0x44d50e[_0x4341('0x6')]?_0x44d50e[_0x4341('0x6')][_0x4341('0xa')]?_['map'](_0x44d50e[_0x4341('0x6')]['include'],function(_0x3b148c){return{'model':db[_0x3b148c['model']],'as':_0x3b148c['as'],'attributes':_0x3b148c[_0x4341('0x9')],'include':_0x3b148c['include']?_[_0x4341('0x8')](_0x3b148c[_0x4341('0xa')],function(_0x26c043){return{'model':db[_0x26c043[_0x4341('0xb')]],'as':_0x26c043['as'],'attributes':_0x26c043[_0x4341('0x9')],'include':_0x26c043[_0x4341('0xa')]?_[_0x4341('0x8')](_0x26c043[_0x4341('0xa')],function(_0x4b1fdc){return{'model':db[_0x4b1fdc[_0x4341('0xb')]],'as':_0x4b1fdc['as'],'attributes':_0x4b1fdc[_0x4341('0x9')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3f13e9){logger[_0x4341('0xd')]('ShowCmHopper',_0x44d50e);logger['debug'](_0x4341('0x13'),_0x44d50e,JSON[_0x4341('0x10')](_0x3f13e9));_0x20b520(_0x3f13e9);})[_0x4341('0x15')](function(_0x284f05){logger[_0x4341('0x11')](_0x4341('0x13'),_0x284f05['message'],_0x44d50e);_0x26cb6f(_0x432f90[_0x4341('0x11')](0x1f4,_0x284f05['message']));});});};exports[_0x4341('0x16')]=function(_0x57de62){var _0xf75a15=this;return new Promise(function(_0x298e46,_0x3c02cb){return db[_0x4341('0x4')][_0x4341('0x17')](_0x57de62['body'],{'raw':_0x57de62['options']?_0x57de62[_0x4341('0x6')][_0x4341('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x3d973f){logger[_0x4341('0xd')](_0x4341('0x16'),_0x57de62);logger[_0x4341('0xe')](_0x4341('0x16'),_0x57de62,JSON['stringify'](_0x3d973f));_0x298e46(_0x3d973f);})[_0x4341('0x15')](function(_0x1e8cdf){logger[_0x4341('0x11')]('CreateCmHopper',_0x1e8cdf[_0x4341('0x12')],_0x57de62);_0x3c02cb(_0xf75a15['error'](0x1f4,_0x1e8cdf['message']));});});};exports[_0x4341('0x18')]=function(_0x2b00c2){var _0x48f573=this;return new Promise(function(_0x56b800,_0x42ede9){return db['CmHopper'][_0x4341('0x19')](_0x2b00c2['body'],{'raw':_0x2b00c2[_0x4341('0x6')]?_0x2b00c2[_0x4341('0x6')][_0x4341('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b00c2[_0x4341('0x6')]?_0x2b00c2['options'][_0x4341('0x7')]||null:null,'attributes':_0x2b00c2['options']?_0x2b00c2[_0x4341('0x6')][_0x4341('0x9')]||null:null,'limit':_0x2b00c2['options']?_0x2b00c2[_0x4341('0x6')][_0x4341('0x1a')]||null:null})[_0x4341('0xc')](function(_0x54f3ae){logger['info'](_0x4341('0x18'),_0x2b00c2);logger[_0x4341('0xd')](_0x4341('0x1b'),JSON[_0x4341('0x10')](_0x2b00c2[_0x4341('0x6')]['where']),_0x2b00c2[_0x4341('0x1c')]['active']);logger[_0x4341('0xe')](_0x4341('0x18'),_0x2b00c2,JSON[_0x4341('0x10')](_0x54f3ae));_0x56b800(_0x54f3ae);})[_0x4341('0x15')](function(_0x2f3ff9){logger[_0x4341('0x11')]('UpdateCmHopper',_0x2f3ff9['message'],_0x2b00c2);_0x42ede9(_0x48f573['error'](0x1f4,_0x2f3ff9[_0x4341('0x12')]));});});};exports[_0x4341('0x1d')]=function(_0x464029){var _0x38562b=this;return new Promise(function(_0x454f92,_0x44d305){return db[_0x4341('0x4')][_0x4341('0x1e')]({'where':_0x464029[_0x4341('0x6')]?_0x464029[_0x4341('0x6')][_0x4341('0x7')]||null:null})[_0x4341('0xc')](function(_0x2aa523){logger[_0x4341('0xd')](_0x4341('0x1d'),_0x464029);logger[_0x4341('0xe')](_0x4341('0x1d'),_0x464029,JSON[_0x4341('0x10')](_0x2aa523));_0x454f92(_0x2aa523);})[_0x4341('0x15')](function(_0x2aa5c9){logger['error'](_0x4341('0x1d'),_0x2aa5c9[_0x4341('0x12')],_0x464029);_0x44d305(_0x38562b[_0x4341('0x11')](0x1f4,_0x2aa5c9['message']));});});};exports[_0x4341('0x1f')]=function(_0x5b821a){var _0x417e31=this;return new Promise(function(_0x62b3b7,_0x58f8f0){return db[_0x4341('0x20')]['describe']()[_0x4341('0xc')](function(_0x4a5796){return db[_0x4341('0x21')][_0x4341('0x22')](function(_0x2dcf9b){return db[_0x4341('0x4')][_0x4341('0x5')]({'where':_0x5b821a[_0x4341('0x6')]?_0x5b821a[_0x4341('0x6')][_0x4341('0x7')]||null:null,'attributes':_0x5b821a[_0x4341('0x6')]?_0x5b821a[_0x4341('0x6')][_0x4341('0x9')]||null:null,'limit':_0x5b821a[_0x4341('0x6')]?_0x5b821a[_0x4341('0x6')]['limit']||null:null,'order':_0x5b821a['options']?_0x5b821a[_0x4341('0x6')][_0x4341('0x23')]||null:null,'transaction':_0x2dcf9b,'lock':_0x2dcf9b['LOCK'][_0x4341('0x24')],'include':[{'model':db[_0x4341('0x20')],'as':_0x4341('0x25'),'attributes':_['keys'](_0x4a5796)},{'model':db[_0x4341('0x26')],'as':'Agent','attributes':['id','name',_0x4341('0x27')]}]})[_0x4341('0xc')](function(_0x10b7fc){var _0x1d9347=[];var _0x2bb6a7=[];for(var _0x4a2859=0x0;_0x4a2859<_0x10b7fc[_0x4341('0x28')];_0x4a2859+=0x1){var _0xf6919e=_0x10b7fc[_0x4a2859]['UserId'];if(_0xf6919e===null){_0x1d9347[_0x4341('0x29')](_0x10b7fc[_0x4a2859][_0x4341('0x19')](_0x5b821a[_0x4341('0x1c')],{'transaction':_0x2dcf9b}));}else if(!_0x2bb6a7[_0x4341('0x2a')](_0xf6919e)){_0x2bb6a7['push'](_0xf6919e);_0x1d9347[_0x4341('0x29')](_0x10b7fc[_0x4a2859][_0x4341('0x19')](_0x5b821a[_0x4341('0x1c')],{'transaction':_0x2dcf9b}));}}return BPromise[_0x4341('0x2b')](_0x1d9347);});})[_0x4341('0xc')](function(_0x3005c5){logger[_0x4341('0xd')]('GetContactDialer',_0x5b821a);if(_0x3005c5[_0x4341('0x28')]>0x0){logger[_0x4341('0xd')](_0x4341('0x2c'),_0x3005c5[0x0][_0x4341('0x2d')]['id'],_0x3005c5[0x0][_0x4341('0x2d')]['ContactId'],_0x3005c5[0x0][_0x4341('0x2d')][_0x4341('0x2e')]);}logger[_0x4341('0xe')](_0x4341('0x1f'),_0x5b821a,JSON['stringify'](_0x3005c5));_0x62b3b7(_0x3005c5);})[_0x4341('0x15')](function(_0x344288){logger[_0x4341('0x11')](_0x4341('0x1f'),_0x344288[_0x4341('0x12')],_0x5b821a);_0x58f8f0(_0x417e31[_0x4341('0x11')](0x1f4,_0x344288[_0x4341('0x12')]));});});});};exports[_0x4341('0x2f')]=function(_0x56202a){var _0x12c07d=this;return new Promise(function(_0x411e7f,_0x2c58e6){return db[_0x4341('0x21')][_0x4341('0x22')](function(_0x42d727){return db[_0x4341('0x30')][_0x4341('0x17')](_0x56202a[_0x4341('0x1c')],{'raw':_0x56202a[_0x4341('0x6')]?_0x56202a[_0x4341('0x6')]['raw']===undefined?!![]:![]:!![],'transaction':_0x42d727})['then'](function(){logger['info'](_0x4341('0x31'),JSON[_0x4341('0x10')](_0x56202a[_0x4341('0x6')]['where']),_0x56202a['options'][_0x4341('0x7')]['active']);return db[_0x4341('0x4')][_0x4341('0x1e')]({'where':_0x56202a[_0x4341('0x6')]?_0x56202a[_0x4341('0x6')][_0x4341('0x7')]||null:null,'transaction':_0x42d727});});})[_0x4341('0xc')](function(_0x822bbd){logger[_0x4341('0xd')]('MoveContactManagedDialer',_0x56202a);logger[_0x4341('0xe')](_0x4341('0x2f'),_0x56202a,JSON[_0x4341('0x10')](_0x822bbd));_0x411e7f(_0x822bbd);})[_0x4341('0x15')](function(_0x35851f){logger['error'](_0x4341('0x2f'),_0x35851f[_0x4341('0x12')],_0x56202a);_0x2c58e6(_0x12c07d[_0x4341('0x11')](0x1f4,_0x35851f['message']));});});};exports[_0x4341('0x32')]=function(_0x4309b0){var _0x2b91ae=this;return new Promise(function(_0x39da60,_0x280259){return db[_0x4341('0x4')]['findAll']({'raw':_0x4309b0['options']?_0x4309b0['options'][_0x4341('0x14')]===undefined?!![]:![]:!![],'where':_0x4309b0['options']?_0x4309b0[_0x4341('0x6')]['where']||null:null,'attributes':[[db[_0x4341('0x21')]['fn'](_0x4341('0x33'),db[_0x4341('0x21')]['fn']('IF',db[_0x4341('0x21')]['literal'](_0x4341('0x34')+util[_0x4341('0x35')](_0x4341('0x36'),moment()[_0x4341('0x35')](_0x4341('0x37')))+_0x4341('0x38')))),'contactsRescheduled']]})[_0x4341('0xc')](function(_0x2e757a){logger[_0x4341('0xd')](_0x4341('0x32'),_0x4309b0);logger[_0x4341('0xe')](_0x4341('0x32'),_0x4309b0,JSON[_0x4341('0x10')](_0x2e757a));_0x39da60(_0x2e757a);})[_0x4341('0x15')](function(_0x463e){logger['error'](_0x4341('0x32'),_0x463e[_0x4341('0x12')],_0x4309b0);_0x280259(_0x2b91ae[_0x4341('0x11')](0x1f4,_0x463e[_0x4341('0x12')]));});});};exports[_0x4341('0x39')]=function(_0x1d789e){var _0x3f6edd=this;return new Promise(function(_0x46f58f,_0x4dff82){return db[_0x4341('0x20')][_0x4341('0x3a')]()[_0x4341('0xc')](function(){return db[_0x4341('0x21')][_0x4341('0x22')](function(_0x295d9d){return db['CmHopper'][_0x4341('0x5')]({'where':_0x1d789e[_0x4341('0x6')]?_0x1d789e[_0x4341('0x6')][_0x4341('0x7')]||null:null,'attributes':_0x1d789e[_0x4341('0x6')]?_0x1d789e['options'][_0x4341('0x9')]||null:null,'limit':0x1,'order':_0x1d789e[_0x4341('0x6')]?_0x1d789e['options'][_0x4341('0x23')]||null:null,'group':db['CmHopper'][_0x4341('0x3b')],'transaction':_0x295d9d,'lock':_0x295d9d[_0x4341('0x3c')][_0x4341('0x24')],'include':_0x1d789e[_0x4341('0x6')]?_0x1d789e[_0x4341('0x6')][_0x4341('0xa')]?_[_0x4341('0x8')](_0x1d789e[_0x4341('0x6')][_0x4341('0xa')],function(_0x3d6a09){return{'model':db[_0x3d6a09[_0x4341('0xb')]],'as':_0x3d6a09['as'],'attributes':_0x3d6a09['attributes'],'include':_0x3d6a09['include']?_[_0x4341('0x8')](_0x3d6a09[_0x4341('0xa')],function(_0x5d93b6){return{'model':db[_0x5d93b6[_0x4341('0xb')]],'as':_0x5d93b6['as'],'attributes':_0x5d93b6['attributes'],'include':_0x5d93b6['include']?_[_0x4341('0x8')](_0x5d93b6[_0x4341('0xa')],function(_0x3fb3b9){return{'model':db[_0x3fb3b9[_0x4341('0xb')]],'as':_0x3fb3b9['as'],'attributes':_0x3fb3b9[_0x4341('0x9')]};}):[]};}):[]};}):[]:[]})[_0x4341('0xc')](function(_0x1a97a8){var _0x236113=[];for(var _0x54ca98=0x0;_0x54ca98<_0x1a97a8[_0x4341('0x28')];_0x54ca98+=0x1){_0x236113[_0x4341('0x29')](_0x1a97a8[_0x54ca98][_0x4341('0x19')](_0x1d789e[_0x4341('0x1c')],{'transaction':_0x295d9d}));}return BPromise[_0x4341('0x2b')](_0x236113);});})['then'](function(_0x5ad573){logger[_0x4341('0xd')](_0x4341('0x39'),_0x1d789e);logger[_0x4341('0xe')](_0x4341('0x39'),_0x1d789e,JSON['stringify'](_0x5ad573));_0x46f58f(_0x5ad573);})[_0x4341('0x15')](function(_0x40cb05){logger['error'](_0x4341('0x39'),_0x40cb05['message'],_0x1d789e);_0x4dff82(_0x3f6edd[_0x4341('0x11')](0x1f4,_0x40cb05[_0x4341('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x1dffce){var _0x1c40a9=this;return new Promise(function(_0x1ad11e,_0x430894){db[_0x4341('0x20')][_0x4341('0x3a')]()[_0x4341('0xc')](function(_0x1a447d){return db[_0x4341('0x4')][_0x4341('0x5')]({'raw':_0x1dffce['options']?_0x1dffce[_0x4341('0x6')][_0x4341('0x14')]===undefined?!![]:![]:!![],'where':_0x1dffce[_0x4341('0x6')]?_0x1dffce[_0x4341('0x6')]['where']||null:null,'attributes':_0x1dffce[_0x4341('0x6')]?_0x1dffce[_0x4341('0x6')][_0x4341('0x9')]||null:null,'limit':_0x1dffce['options']?_0x1dffce[_0x4341('0x6')][_0x4341('0x1a')]||null:null,'include':_0x1dffce[_0x4341('0x6')]?_0x1dffce[_0x4341('0x6')]['include']?_[_0x4341('0x8')](_0x1dffce['options']['include'],function(_0x40e90e){return{'model':db[_0x40e90e[_0x4341('0xb')]],'as':_0x40e90e['as'],'attributes':_0x40e90e['as']===_0x4341('0x25')?_[_0x4341('0x3d')](_0x1a447d):_0x40e90e[_0x4341('0x9')],'include':_0x40e90e[_0x4341('0xa')]?_[_0x4341('0x8')](_0x40e90e[_0x4341('0xa')],function(_0x54beb9){return{'model':db[_0x54beb9[_0x4341('0xb')]],'as':_0x54beb9['as'],'attributes':_0x54beb9['attributes'],'include':_0x54beb9[_0x4341('0xa')]?_[_0x4341('0x8')](_0x54beb9[_0x4341('0xa')],function(_0x15da21){return{'model':db[_0x15da21[_0x4341('0xb')]],'as':_0x15da21['as'],'attributes':_0x15da21[_0x4341('0x9')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x43403f){logger[_0x4341('0xd')](_0x4341('0xf'),_0x1dffce);logger['debug'](_0x4341('0xf'),_0x1dffce,JSON[_0x4341('0x10')](_0x43403f));_0x1ad11e(_0x43403f);})[_0x4341('0x15')](function(_0x59af6b){logger[_0x4341('0x11')](_0x4341('0xf'),_0x59af6b[_0x4341('0x12')],_0x1dffce);_0x430894(_0x1c40a9[_0x4341('0x11')](0x1f4,_0x59af6b['message']));});});});};exports['GetContactByPhone']=function(_0xd2f787){var _0xdda4b3=this;return new Promise(function(_0x272cb6,_0x5f4dd4){return db[_0x4341('0x20')]['findOne']({'raw':!![],'where':{'phone':_0xd2f787[_0x4341('0x6')][_0x4341('0x7')][_0x4341('0x3e')]},'attributes':['id',_0x4341('0x3f')],'order':[['id',_0x4341('0x40')]]})['then'](function(_0x4d46c5){logger[_0x4341('0xd')](_0x4341('0x41'),_0xd2f787);logger['debug'](_0x4341('0x41'),_0xd2f787,JSON[_0x4341('0x10')](_0x4d46c5));_0x272cb6(_0x4d46c5);})[_0x4341('0x15')](function(_0x43e8e1){logger[_0x4341('0x11')](_0x4341('0x41'),_0x43e8e1[_0x4341('0x12')],_0xd2f787);_0x5f4dd4(_0xdda4b3[_0x4341('0x11')](0x1f4,_0x43e8e1[_0x4341('0x12')]));});});};exports[_0x4341('0x42')]=function(_0x27eb8f){var _0xf41b72=this;return new Promise(function(_0x5e3e00,_0x489473){return db[_0x4341('0x21')]['transaction'](function(_0x2d2e0c){var _0x2c4ed2=_0x27eb8f['options']&&_0x27eb8f[_0x4341('0x6')][_0x4341('0x7')]?_0x27eb8f['options']['where']:{};return db[_0x4341('0x4')]['update'](_0x27eb8f[_0x4341('0x1c')],{'where':_0x2c4ed2,'transaction':_0x2d2e0c})[_0x4341('0xc')](function(_0xd59703){logger[_0x4341('0xd')](_0x4341('0x42'),_0x27eb8f);logger[_0x4341('0xe')](_0x4341('0x42'),_0x27eb8f,JSON['stringify'](_0xd59703));_0x5e3e00(_0xd59703);})[_0x4341('0x15')](function(_0x2cdb80){logger[_0x4341('0x11')]('ResetActiveCalls',_0x2cdb80[_0x4341('0x12')],_0x27eb8f);_0x489473(_0xf41b72['error'](0x1f4,_0x2cdb80[_0x4341('0x12')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0xe788a5){var _0x4231db=this;var _0x406eb6=_0xe788a5[_0x4341('0x1c')]['where'][_0x4341('0x43')];var _0x3a80c2=_0xe788a5[_0x4341('0x1c')]['where'][_0x4341('0x44')];var _0x5dd604=_0xe788a5[_0x4341('0x1c')][_0x4341('0x7')][_0x4341('0x45')];return new Promise(function(_0x221bea,_0x54e5cd){return db[_0x4341('0x4')][_0x4341('0x5')]({'where':{'voiceQueueId':{'$in':_0x406eb6},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x4341('0x21')][_0x4341('0x46')]('NOW()\x20+\x20INTERVAL\x20'+_0x3a80c2+_0x4341('0x47')),'$gt':db[_0x4341('0x21')][_0x4341('0x46')]('NOW()')}},'UserId':{'$in':_0x5dd604}},'include':[{'model':db[_0x4341('0x20')],'as':'Contact'},{'model':db[_0x4341('0x26')],'as':_0x4341('0x48'),'attributes':['id',_0x4341('0x49'),_0x4341('0x27')]},{'model':db['CmList'],'as':_0x4341('0x4a')}]})[_0x4341('0xc')](function(_0x2b126d){if(_0x2b126d['length']>0x0){return db[_0x4341('0x21')][_0x4341('0x22')](function(_0x5211a7){return db[_0x4341('0x4')]['update']({'recallmeNotifiedDate':db['sequelize'][_0x4341('0x46')]('NOW()')},{'where':{'id':{'$in':_[_0x4341('0x8')](_0x2b126d,'id')}},'transaction':_0x5211a7})['then'](function(){_0x221bea(_0x2b126d);})[_0x4341('0x15')](function(_0x481008){logger[_0x4341('0x11')](_0x4341('0x4b'),_0x481008['message'],_0xe788a5);_0x54e5cd(_0x4231db[_0x4341('0x11')](0x1f4,_0x481008[_0x4341('0x12')]));});})[_0x4341('0x15')](function(_0x519159){logger[_0x4341('0x11')]('CmHopperHandlePreviewRecallNotifications',_0x519159[_0x4341('0x12')],_0xe788a5);_0x54e5cd(_0x4231db[_0x4341('0x11')](0x1f4,_0x519159[_0x4341('0x12')]));});}else{_0x221bea(_0x2b126d);}});});};
\ No newline at end of file
index c0ac120..b2a88ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3d=['getPreviewRecall','post','create','getPreview','getTimezone','put','update','delete','destroy','express','Router','../../components/auth/service','get','isAuthenticated','index','/describe','describe','getOpenContacts','getTimezones','/:id','show','/:id/previewrecall'];(function(_0x172a7b,_0x4d354e){var _0x5cd08d=function(_0x349f16){while(--_0x349f16){_0x172a7b['push'](_0x172a7b['shift']());}};_0x5cd08d(++_0x4d354e);}(_0xef3d,0x153));var _0xdef3=function(_0x2a0ba0,_0x578aab){_0x2a0ba0=_0x2a0ba0-0x0;var _0x4b8d0b=_0xef3d[_0x2a0ba0];return _0x4b8d0b;};'use strict';var express=require(_0xdef3('0x0'));var router=express[_0xdef3('0x1')]();var auth=require(_0xdef3('0x2'));var controller=require('./cmHopper.controller');router[_0xdef3('0x3')]('/',auth[_0xdef3('0x4')](),controller[_0xdef3('0x5')]);router['get'](_0xdef3('0x6'),auth['isAuthenticated'](),controller[_0xdef3('0x7')]);router[_0xdef3('0x3')]('/opencontacts',auth[_0xdef3('0x4')](),controller[_0xdef3('0x8')]);router['get']('/timezones',auth['isAuthenticated'](),controller[_0xdef3('0x9')]);router[_0xdef3('0x3')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0xb')]);router[_0xdef3('0x3')](_0xdef3('0xc'),auth[_0xdef3('0x4')](),controller[_0xdef3('0xd')]);router[_0xdef3('0xe')]('/',auth[_0xdef3('0x4')](),controller[_0xdef3('0xf')]);router[_0xdef3('0xe')]('/preview',auth[_0xdef3('0x4')](),controller[_0xdef3('0x10')]);router[_0xdef3('0xe')]('/timezone',auth['isAuthenticated'](),controller[_0xdef3('0x11')]);router[_0xdef3('0x12')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0x13')]);router[_0xdef3('0x14')](_0xdef3('0xa'),auth[_0xdef3('0x4')](),controller[_0xdef3('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x0deb=['create','/preview','getTimezone','put','/:id','update','delete','destroy','Router','isAuthenticated','get','describe','/opencontacts','getOpenContacts','/timezones','show','/:id/previewrecall','getPreviewRecall','post'];(function(_0x4f95c5,_0x3d47c8){var _0x192ec2=function(_0x69a36b){while(--_0x69a36b){_0x4f95c5['push'](_0x4f95c5['shift']());}};_0x192ec2(++_0x3d47c8);}(_0x0deb,0xff));var _0xb0de=function(_0x11164b,_0x4d64b8){_0x11164b=_0x11164b-0x0;var _0x5ea890=_0x0deb[_0x11164b];return _0x5ea890;};'use strict';var express=require('express');var router=express[_0xb0de('0x0')]();var auth=require('../../components/auth/service');var controller=require('./cmHopper.controller');router['get']('/',auth[_0xb0de('0x1')](),controller['index']);router[_0xb0de('0x2')]('/describe',auth['isAuthenticated'](),controller[_0xb0de('0x3')]);router[_0xb0de('0x2')](_0xb0de('0x4'),auth[_0xb0de('0x1')](),controller[_0xb0de('0x5')]);router[_0xb0de('0x2')](_0xb0de('0x6'),auth[_0xb0de('0x1')](),controller['getTimezones']);router[_0xb0de('0x2')]('/:id',auth[_0xb0de('0x1')](),controller[_0xb0de('0x7')]);router[_0xb0de('0x2')](_0xb0de('0x8'),auth[_0xb0de('0x1')](),controller[_0xb0de('0x9')]);router[_0xb0de('0xa')]('/',auth[_0xb0de('0x1')](),controller[_0xb0de('0xb')]);router['post'](_0xb0de('0xc'),auth[_0xb0de('0x1')](),controller['getPreview']);router[_0xb0de('0xa')]('/timezone',auth[_0xb0de('0x1')](),controller[_0xb0de('0xd')]);router[_0xb0de('0xe')](_0xb0de('0xf'),auth[_0xb0de('0x1')](),controller[_0xb0de('0x10')]);router[_0xb0de('0x11')](_0xb0de('0xf'),auth['isAuthenticated'](),controller[_0xb0de('0x12')]);module['exports']=router;
\ No newline at end of file
index dff275c..3d29549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1476=['exports','INTEGER','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x2a170c,_0xee164e){var _0x2a55cd=function(_0x2a4868){while(--_0x2a4868){_0x2a170c['push'](_0x2a170c['shift']());}};_0x2a55cd(++_0xee164e);}(_0x1476,0x186));var _0x6147=function(_0x46ea63,_0x31c71f){_0x46ea63=_0x46ea63-0x0;var _0x397b37=_0x1476[_0x46ea63];return _0x397b37;};'use strict';var moment=require(_0x6147('0x0'));var Sequelize=require(_0x6147('0x1'));module[_0x6147('0x2')]={'CmHopperId':{'type':Sequelize[_0x6147('0x3')]},'phone':{'type':Sequelize[_0x6147('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x6147('0x5')],'defaultValue':moment()['format'](_0x6147('0x6'))},'countbusyretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6147('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe1ea=['DATE','format','moment','sequelize','STRING','INTEGER'];(function(_0x4d68c7,_0x11bee3){var _0x5c2814=function(_0x137a79){while(--_0x137a79){_0x4d68c7['push'](_0x4d68c7['shift']());}};_0x5c2814(++_0x11bee3);}(_0xe1ea,0x1f4));var _0xae1e=function(_0x242e7e,_0x41451d){_0x242e7e=_0x242e7e-0x0;var _0x33fa10=_0xe1ea[_0x242e7e];return _0x33fa10;};'use strict';var moment=require(_0xae1e('0x0'));var Sequelize=require(_0xae1e('0x1'));module['exports']={'CmHopperId':{'type':Sequelize['INTEGER']},'phone':{'type':Sequelize[_0xae1e('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xae1e('0x4')],'defaultValue':moment()[_0xae1e('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xae1e('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 9f46824..8ea9eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4177=['destroy','get','UserProfileResource','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','intersection','create','body','user','role','CmHopperAdditionalPhones','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then'];(function(_0x23a298,_0x21adb7){var _0x31a410=function(_0x3350b9){while(--_0x3350b9){_0x23a298['push'](_0x23a298['shift']());}};_0x31a410(++_0x21adb7);}(_0x4177,0x173));var _0x7417=function(_0x38109f,_0x1cdb54){_0x38109f=_0x38109f-0x0;var _0x20dafc=_0x4177[_0x38109f];return _0x20dafc;};'use strict';var emlformat=require(_0x7417('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7417('0x1'));var jsonpatch=require(_0x7417('0x2'));var rp=require(_0x7417('0x3'));var moment=require(_0x7417('0x4'));var BPromise=require(_0x7417('0x5'));var Mustache=require(_0x7417('0x6'));var util=require(_0x7417('0x7'));var path=require(_0x7417('0x8'));var sox=require(_0x7417('0x9'));var csv=require(_0x7417('0xa'));var ejs=require(_0x7417('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7417('0xc'));var squel=require('squel');var crypto=require(_0x7417('0xd'));var jsforce=require(_0x7417('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7417('0xa'));var querystring=require(_0x7417('0xf'));var Papa=require(_0x7417('0x10'));var Redis=require(_0x7417('0x11'));var authService=require(_0x7417('0x12'));var qs=require(_0x7417('0x13'));var as=require(_0x7417('0x14'));var hardwareService=require(_0x7417('0x15'));var logger=require(_0x7417('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x7417('0x17'));var licenseUtil=require(_0x7417('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e7aa1,_0x2a84c6){_0x2a84c6=_0x2a84c6||0xcc;return function(_0x1d7feb){if(_0x1d7feb){return _0x1e7aa1[_0x7417('0x19')](_0x2a84c6);}return _0x1e7aa1[_0x7417('0x1a')](_0x2a84c6)[_0x7417('0x1b')]();};}function respondWithResult(_0x595ca9,_0x561c34){_0x561c34=_0x561c34||0xc8;return function(_0x533c86){if(_0x533c86){return _0x595ca9['status'](_0x561c34)[_0x7417('0x1c')](_0x533c86);}};}function respondWithFilteredResult(_0x438462,_0x132a83){return function(_0x4c04d8){if(_0x4c04d8){var _0x1f9d13=typeof _0x132a83[_0x7417('0x1d')]==='undefined'&&typeof _0x132a83[_0x7417('0x1e')]===_0x7417('0x1f');var _0xd3d003=_0x4c04d8[_0x7417('0x20')];var _0x24a780=_0x1f9d13?0x0:_0x132a83[_0x7417('0x1d')];var _0x134b2a=_0x1f9d13?_0x4c04d8[_0x7417('0x20')]:_0x132a83[_0x7417('0x1d')]+_0x132a83[_0x7417('0x1e')];var _0x1a46d7;if(_0x134b2a>=_0xd3d003){_0x134b2a=_0xd3d003;_0x1a46d7=0xc8;}else{_0x1a46d7=0xce;}_0x438462[_0x7417('0x1a')](_0x1a46d7);return _0x438462[_0x7417('0x21')](_0x7417('0x22'),_0x24a780+'-'+_0x134b2a+'/'+_0xd3d003)[_0x7417('0x1c')](_0x4c04d8);}return null;};}function patchUpdates(_0x226311){return function(_0x252a4d){try{jsonpatch['apply'](_0x252a4d,_0x226311,!![]);}catch(_0x3bc800){return BPromise[_0x7417('0x23')](_0x3bc800);}return _0x252a4d[_0x7417('0x24')]();};}function saveUpdates(_0x13a68d,_0x558dce){return function(_0x16244d){if(_0x16244d){return _0x16244d[_0x7417('0x25')](_0x13a68d)[_0x7417('0x26')](function(_0x21d371){return _0x21d371;});}return null;};}function removeEntity(_0x3f1baf,_0xdb2e95){return function(_0x37ddbe){if(_0x37ddbe){return _0x37ddbe[_0x7417('0x27')]()[_0x7417('0x26')](function(){var _0xef39bd=_0x37ddbe[_0x7417('0x28')]({'plain':!![]});var _0x4feb3a='CmHopperAdditionalPhones';return db[_0x7417('0x29')]['destroy']({'where':{'type':_0x4feb3a,'resourceId':_0xef39bd['id']}})['then'](function(){return _0x37ddbe;});})[_0x7417('0x26')](function(){_0x3f1baf[_0x7417('0x1a')](0xcc)[_0x7417('0x1b')]();});}};}function handleEntityNotFound(_0x5df8c3,_0x5e8433){return function(_0x1fb04f){if(!_0x1fb04f){_0x5df8c3['sendStatus'](0x194);}return _0x1fb04f;};}function handleError(_0x2eccef,_0x240df7){_0x240df7=_0x240df7||0x1f4;return function(_0xfaa4cc){logger['error'](_0xfaa4cc['stack']);if(_0xfaa4cc[_0x7417('0x2a')]){delete _0xfaa4cc['name'];}_0x2eccef['status'](_0x240df7)[_0x7417('0x2b')](_0xfaa4cc);};}exports[_0x7417('0x2c')]=function(_0x1f0857,_0x351b06){var _0x2bcbc2={},_0x26c485={},_0x163586={'count':0x0,'rows':[]};var _0x4cd4dd=_[_0x7417('0x2d')](db[_0x7417('0x2e')][_0x7417('0x2f')],function(_0x280168){return{'name':_0x280168[_0x7417('0x30')],'type':_0x280168[_0x7417('0x31')][_0x7417('0x32')]};});_0x26c485[_0x7417('0x33')]=_['map'](_0x4cd4dd,_0x7417('0x2a'));_0x26c485[_0x7417('0x34')]=_[_0x7417('0x35')](_0x1f0857[_0x7417('0x34')]);_0x26c485['filters']=_['intersection'](_0x26c485['model'],_0x26c485['query']);_0x2bcbc2[_0x7417('0x36')]=_['intersection'](_0x26c485['model'],qs[_0x7417('0x37')](_0x1f0857[_0x7417('0x34')][_0x7417('0x37')]));_0x2bcbc2[_0x7417('0x36')]=_0x2bcbc2['attributes'][_0x7417('0x38')]?_0x2bcbc2[_0x7417('0x36')]:_0x26c485[_0x7417('0x33')];if(!_0x1f0857[_0x7417('0x34')][_0x7417('0x39')](_0x7417('0x3a'))){_0x2bcbc2['limit']=qs[_0x7417('0x1e')](_0x1f0857[_0x7417('0x34')][_0x7417('0x1e')]);_0x2bcbc2[_0x7417('0x1d')]=qs[_0x7417('0x1d')](_0x1f0857[_0x7417('0x34')][_0x7417('0x1d')]);}_0x2bcbc2[_0x7417('0x3b')]=qs[_0x7417('0x3c')](_0x1f0857[_0x7417('0x34')][_0x7417('0x3c')]);_0x2bcbc2[_0x7417('0x3d')]=qs['filters'](_['pick'](_0x1f0857[_0x7417('0x34')],_0x26c485['filters']),_0x4cd4dd);if(_0x1f0857['query'][_0x7417('0x3e')]){_0x2bcbc2[_0x7417('0x3d')]=_[_0x7417('0x3f')](_0x2bcbc2[_0x7417('0x3d')],{'$or':_[_0x7417('0x2d')](_0x4cd4dd,function(_0x2f7a0a){if(_0x2f7a0a[_0x7417('0x31')]!=='VIRTUAL'){var _0x3539ec={};_0x3539ec[_0x2f7a0a[_0x7417('0x2a')]]={'$like':'%'+_0x1f0857[_0x7417('0x34')][_0x7417('0x3e')]+'%'};return _0x3539ec;}})});}_0x2bcbc2=_[_0x7417('0x3f')]({},_0x2bcbc2,_0x1f0857[_0x7417('0x40')]);var _0x1192e6={'where':_0x2bcbc2[_0x7417('0x3d')]};return db[_0x7417('0x2e')][_0x7417('0x20')](_0x1192e6)[_0x7417('0x26')](function(_0x50d70d){_0x163586['count']=_0x50d70d;if(_0x1f0857[_0x7417('0x34')][_0x7417('0x41')]){_0x2bcbc2[_0x7417('0x42')]=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x7417('0x43')](_0x2bcbc2);})[_0x7417('0x26')](function(_0x2e9b52){_0x163586[_0x7417('0x44')]=_0x2e9b52;return _0x163586;})[_0x7417('0x26')](respondWithFilteredResult(_0x351b06,_0x2bcbc2))[_0x7417('0x45')](handleError(_0x351b06,null));};exports[_0x7417('0x46')]=function(_0x5dad9a,_0x3363cb){var _0x552e07={'raw':!![],'where':{'id':_0x5dad9a['params']['id']}},_0x4a909d={};_0x4a909d['model']=_['keys'](db[_0x7417('0x2e')]['rawAttributes']);_0x4a909d[_0x7417('0x34')]=_['keys'](_0x5dad9a[_0x7417('0x34')]);_0x4a909d['filters']=_[_0x7417('0x47')](_0x4a909d[_0x7417('0x33')],_0x4a909d['query']);_0x552e07[_0x7417('0x36')]=_[_0x7417('0x47')](_0x4a909d[_0x7417('0x33')],qs[_0x7417('0x37')](_0x5dad9a['query'][_0x7417('0x37')]));_0x552e07[_0x7417('0x36')]=_0x552e07[_0x7417('0x36')]['length']?_0x552e07[_0x7417('0x36')]:_0x4a909d[_0x7417('0x33')];if(_0x5dad9a[_0x7417('0x34')][_0x7417('0x41')]){_0x552e07['include']=[{'all':!![]}];}_0x552e07=_[_0x7417('0x3f')]({},_0x552e07,_0x5dad9a[_0x7417('0x40')]);return db[_0x7417('0x2e')]['find'](_0x552e07)[_0x7417('0x26')](handleEntityNotFound(_0x3363cb,null))[_0x7417('0x26')](respondWithResult(_0x3363cb,null))['catch'](handleError(_0x3363cb,null));};exports[_0x7417('0x48')]=function(_0x32172f,_0x5788db){return db['CmHopperAdditionalPhone']['create'](_0x32172f[_0x7417('0x49')],{})[_0x7417('0x26')](function(_0x5c9320){var _0x473598=_0x32172f[_0x7417('0x4a')][_0x7417('0x28')]({'plain':!![]});if(!_0x473598)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x473598[_0x7417('0x4b')]===_0x7417('0x4a')){var _0x3ebaaf=_0x5c9320[_0x7417('0x28')]({'plain':!![]});var _0x5d69f7=_0x7417('0x4c');return db['UserProfileSection']['find']({'where':{'name':_0x5d69f7,'userProfileId':_0x473598[_0x7417('0x4d')]},'raw':!![]})[_0x7417('0x26')](function(_0x523283){if(_0x523283&&_0x523283['autoAssociation']===0x0){return db[_0x7417('0x29')][_0x7417('0x48')]({'name':_0x3ebaaf[_0x7417('0x2a')],'resourceId':_0x3ebaaf['id'],'type':_0x523283['name'],'sectionId':_0x523283['id']},{})['then'](function(){return _0x5c9320;});}else{return _0x5c9320;}})['catch'](function(_0x2dd7be){logger[_0x7417('0x4e')](_0x7417('0x4f'),_0x2dd7be);throw _0x2dd7be;});}return _0x5c9320;})['then'](respondWithResult(_0x5788db,0xc9))[_0x7417('0x45')](handleError(_0x5788db,null));};exports[_0x7417('0x25')]=function(_0x5a9a4a,_0x41736f){if(_0x5a9a4a[_0x7417('0x49')]['id']){delete _0x5a9a4a['body']['id'];}return db[_0x7417('0x2e')][_0x7417('0x50')]({'where':{'id':_0x5a9a4a[_0x7417('0x51')]['id']}})[_0x7417('0x26')](handleEntityNotFound(_0x41736f,null))[_0x7417('0x26')](saveUpdates(_0x5a9a4a[_0x7417('0x49')],null))[_0x7417('0x26')](respondWithResult(_0x41736f,null))['catch'](handleError(_0x41736f,null));};exports[_0x7417('0x27')]=function(_0xdccc5f,_0x481013){return db[_0x7417('0x2e')]['find']({'where':{'id':_0xdccc5f[_0x7417('0x51')]['id']}})[_0x7417('0x26')](handleEntityNotFound(_0x481013,null))['then'](removeEntity(_0x481013,null))[_0x7417('0x45')](handleError(_0x481013,null));};
\ No newline at end of file
+var _0x7779=['squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','reject','update','then','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','CmHopperAdditionalPhone','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','include','rows','show','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CmHopperAdditionalPhones','UserProfileSection','find','userProfileId','autoAssociation','catch','error','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash'];(function(_0x188a93,_0xaf57db){var _0x23b40d=function(_0x599f63){while(--_0x599f63){_0x188a93['push'](_0x188a93['shift']());}};_0x23b40d(++_0xaf57db);}(_0x7779,0x1d0));var _0x9777=function(_0x89a5f2,_0x1c0cfb){_0x89a5f2=_0x89a5f2-0x0;var _0x526482=_0x7779[_0x89a5f2];return _0x526482;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9777('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9777('0x1'));var BPromise=require(_0x9777('0x2'));var Mustache=require(_0x9777('0x3'));var util=require(_0x9777('0x4'));var path=require(_0x9777('0x5'));var sox=require('sox');var csv=require(_0x9777('0x6'));var ejs=require(_0x9777('0x7'));var fs=require('fs');var fs_extra=require(_0x9777('0x8'));var _=require(_0x9777('0x9'));var squel=require(_0x9777('0xa'));var crypto=require('crypto');var jsforce=require(_0x9777('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9777('0x6'));var querystring=require(_0x9777('0xc'));var Papa=require(_0x9777('0xd'));var Redis=require('ioredis');var authService=require(_0x9777('0xe'));var qs=require(_0x9777('0xf'));var as=require(_0x9777('0x10'));var hardwareService=require(_0x9777('0x11'));var logger=require(_0x9777('0x12'))('api');var utils=require(_0x9777('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9777('0x14'))['db'];function respondWithStatusCode(_0x14f848,_0x5043b4){_0x5043b4=_0x5043b4||0xcc;return function(_0x428e80){if(_0x428e80){return _0x14f848['sendStatus'](_0x5043b4);}return _0x14f848[_0x9777('0x15')](_0x5043b4)[_0x9777('0x16')]();};}function respondWithResult(_0x5c47b1,_0x1e6c2a){_0x1e6c2a=_0x1e6c2a||0xc8;return function(_0x284eb1){if(_0x284eb1){return _0x5c47b1[_0x9777('0x15')](_0x1e6c2a)[_0x9777('0x17')](_0x284eb1);}};}function respondWithFilteredResult(_0x80f10f,_0x4e02ce){return function(_0x153d89){if(_0x153d89){var _0x5953b2=typeof _0x4e02ce['offset']===_0x9777('0x18')&&typeof _0x4e02ce[_0x9777('0x19')]==='undefined';var _0x37e862=_0x153d89[_0x9777('0x1a')];var _0x17998d=_0x5953b2?0x0:_0x4e02ce['offset'];var _0x22ee26=_0x5953b2?_0x153d89['count']:_0x4e02ce[_0x9777('0x1b')]+_0x4e02ce[_0x9777('0x19')];var _0x3a02df;if(_0x22ee26>=_0x37e862){_0x22ee26=_0x37e862;_0x3a02df=0xc8;}else{_0x3a02df=0xce;}_0x80f10f[_0x9777('0x15')](_0x3a02df);return _0x80f10f[_0x9777('0x1c')]('Content-Range',_0x17998d+'-'+_0x22ee26+'/'+_0x37e862)[_0x9777('0x17')](_0x153d89);}return null;};}function patchUpdates(_0x3a92a3){return function(_0x42d5ee){try{jsonpatch[_0x9777('0x1d')](_0x42d5ee,_0x3a92a3,!![]);}catch(_0x7d9b0d){return BPromise[_0x9777('0x1e')](_0x7d9b0d);}return _0x42d5ee['save']();};}function saveUpdates(_0x5bf537,_0x4ec0c5){return function(_0x540e0a){if(_0x540e0a){return _0x540e0a[_0x9777('0x1f')](_0x5bf537)['then'](function(_0x56fbfa){return _0x56fbfa;});}return null;};}function removeEntity(_0x21a176,_0x3bdfbf){return function(_0x251fc6){if(_0x251fc6){return _0x251fc6['destroy']()[_0x9777('0x20')](function(){var _0x5ca92f=_0x251fc6[_0x9777('0x21')]({'plain':!![]});var _0x4b51c4='CmHopperAdditionalPhones';return db[_0x9777('0x22')][_0x9777('0x23')]({'where':{'type':_0x4b51c4,'resourceId':_0x5ca92f['id']}})[_0x9777('0x20')](function(){return _0x251fc6;});})[_0x9777('0x20')](function(){_0x21a176[_0x9777('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x367020,_0x701596){return function(_0x43b10f){if(!_0x43b10f){_0x367020[_0x9777('0x24')](0x194);}return _0x43b10f;};}function handleError(_0x510483,_0x4b3f57){_0x4b3f57=_0x4b3f57||0x1f4;return function(_0x3e8718){logger['error'](_0x3e8718[_0x9777('0x25')]);if(_0x3e8718[_0x9777('0x26')]){delete _0x3e8718[_0x9777('0x26')];}_0x510483[_0x9777('0x15')](_0x4b3f57)[_0x9777('0x27')](_0x3e8718);};}exports[_0x9777('0x28')]=function(_0x490400,_0x3753f3){var _0x2ca620={},_0xf1f291={},_0x44e771={'count':0x0,'rows':[]};var _0x3dee50=_[_0x9777('0x29')](db[_0x9777('0x2a')]['rawAttributes'],function(_0x5287e2){return{'name':_0x5287e2[_0x9777('0x2b')],'type':_0x5287e2['type'][_0x9777('0x2c')]};});_0xf1f291[_0x9777('0x2d')]=_[_0x9777('0x29')](_0x3dee50,_0x9777('0x26'));_0xf1f291['query']=_[_0x9777('0x2e')](_0x490400[_0x9777('0x2f')]);_0xf1f291[_0x9777('0x30')]=_[_0x9777('0x31')](_0xf1f291[_0x9777('0x2d')],_0xf1f291[_0x9777('0x2f')]);_0x2ca620[_0x9777('0x32')]=_[_0x9777('0x31')](_0xf1f291[_0x9777('0x2d')],qs[_0x9777('0x33')](_0x490400[_0x9777('0x2f')][_0x9777('0x33')]));_0x2ca620[_0x9777('0x32')]=_0x2ca620[_0x9777('0x32')]['length']?_0x2ca620['attributes']:_0xf1f291[_0x9777('0x2d')];if(!_0x490400[_0x9777('0x2f')][_0x9777('0x34')](_0x9777('0x35'))){_0x2ca620[_0x9777('0x19')]=qs['limit'](_0x490400[_0x9777('0x2f')]['limit']);_0x2ca620[_0x9777('0x1b')]=qs[_0x9777('0x1b')](_0x490400['query'][_0x9777('0x1b')]);}_0x2ca620[_0x9777('0x36')]=qs[_0x9777('0x37')](_0x490400[_0x9777('0x2f')]['sort']);_0x2ca620[_0x9777('0x38')]=qs[_0x9777('0x30')](_['pick'](_0x490400[_0x9777('0x2f')],_0xf1f291[_0x9777('0x30')]),_0x3dee50);if(_0x490400[_0x9777('0x2f')][_0x9777('0x39')]){_0x2ca620[_0x9777('0x38')]=_[_0x9777('0x3a')](_0x2ca620[_0x9777('0x38')],{'$or':_['map'](_0x3dee50,function(_0x17fcf5){if(_0x17fcf5[_0x9777('0x3b')]!==_0x9777('0x3c')){var _0x409c23={};_0x409c23[_0x17fcf5[_0x9777('0x26')]]={'$like':'%'+_0x490400['query'][_0x9777('0x39')]+'%'};return _0x409c23;}})});}_0x2ca620=_[_0x9777('0x3a')]({},_0x2ca620,_0x490400[_0x9777('0x3d')]);var _0x28513c={'where':_0x2ca620[_0x9777('0x38')]};return db['CmHopperAdditionalPhone'][_0x9777('0x1a')](_0x28513c)[_0x9777('0x20')](function(_0xe7836c){_0x44e771[_0x9777('0x1a')]=_0xe7836c;if(_0x490400[_0x9777('0x2f')]['includeAll']){_0x2ca620[_0x9777('0x3e')]=[{'all':!![]}];}return db[_0x9777('0x2a')]['findAll'](_0x2ca620);})[_0x9777('0x20')](function(_0x562eb7){_0x44e771[_0x9777('0x3f')]=_0x562eb7;return _0x44e771;})[_0x9777('0x20')](respondWithFilteredResult(_0x3753f3,_0x2ca620))['catch'](handleError(_0x3753f3,null));};exports[_0x9777('0x40')]=function(_0x269079,_0x41dccc){var _0x149484={'raw':!![],'where':{'id':_0x269079[_0x9777('0x41')]['id']}},_0x5c68ef={};_0x5c68ef['model']=_[_0x9777('0x2e')](db[_0x9777('0x2a')][_0x9777('0x42')]);_0x5c68ef['query']=_[_0x9777('0x2e')](_0x269079[_0x9777('0x2f')]);_0x5c68ef[_0x9777('0x30')]=_['intersection'](_0x5c68ef['model'],_0x5c68ef[_0x9777('0x2f')]);_0x149484['attributes']=_[_0x9777('0x31')](_0x5c68ef[_0x9777('0x2d')],qs[_0x9777('0x33')](_0x269079[_0x9777('0x2f')][_0x9777('0x33')]));_0x149484[_0x9777('0x32')]=_0x149484[_0x9777('0x32')]['length']?_0x149484['attributes']:_0x5c68ef[_0x9777('0x2d')];if(_0x269079[_0x9777('0x2f')]['includeAll']){_0x149484['include']=[{'all':!![]}];}_0x149484=_['merge']({},_0x149484,_0x269079[_0x9777('0x3d')]);return db[_0x9777('0x2a')]['find'](_0x149484)['then'](handleEntityNotFound(_0x41dccc,null))[_0x9777('0x20')](respondWithResult(_0x41dccc,null))['catch'](handleError(_0x41dccc,null));};exports[_0x9777('0x43')]=function(_0x298e52,_0x525229){return db[_0x9777('0x2a')]['create'](_0x298e52[_0x9777('0x44')],{})[_0x9777('0x20')](function(_0x401ab1){var _0x2e2eba=_0x298e52[_0x9777('0x45')][_0x9777('0x21')]({'plain':!![]});if(!_0x2e2eba)throw new Error(_0x9777('0x46'));if(_0x2e2eba[_0x9777('0x47')]===_0x9777('0x45')){var _0x40022e=_0x401ab1['get']({'plain':!![]});var _0x11d562=_0x9777('0x48');return db[_0x9777('0x49')][_0x9777('0x4a')]({'where':{'name':_0x11d562,'userProfileId':_0x2e2eba[_0x9777('0x4b')]},'raw':!![]})[_0x9777('0x20')](function(_0x5bbf8b){if(_0x5bbf8b&&_0x5bbf8b[_0x9777('0x4c')]===0x0){return db[_0x9777('0x22')]['create']({'name':_0x40022e[_0x9777('0x26')],'resourceId':_0x40022e['id'],'type':_0x5bbf8b['name'],'sectionId':_0x5bbf8b['id']},{})[_0x9777('0x20')](function(){return _0x401ab1;});}else{return _0x401ab1;}})[_0x9777('0x4d')](function(_0x116732){logger[_0x9777('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x116732);throw _0x116732;});}return _0x401ab1;})[_0x9777('0x20')](respondWithResult(_0x525229,0xc9))[_0x9777('0x4d')](handleError(_0x525229,null));};exports['update']=function(_0x4f2ca2,_0x350a5a){if(_0x4f2ca2['body']['id']){delete _0x4f2ca2[_0x9777('0x44')]['id'];}return db[_0x9777('0x2a')][_0x9777('0x4a')]({'where':{'id':_0x4f2ca2[_0x9777('0x41')]['id']}})[_0x9777('0x20')](handleEntityNotFound(_0x350a5a,null))['then'](saveUpdates(_0x4f2ca2[_0x9777('0x44')],null))[_0x9777('0x20')](respondWithResult(_0x350a5a,null))[_0x9777('0x4d')](handleError(_0x350a5a,null));};exports[_0x9777('0x23')]=function(_0xfdecf2,_0x4fd11d){return db[_0x9777('0x2a')][_0x9777('0x4a')]({'where':{'id':_0xfdecf2[_0x9777('0x41')]['id']}})['then'](handleEntityNotFound(_0x4fd11d,null))['then'](removeEntity(_0x4fd11d,null))['catch'](handleError(_0x4fd11d,null));};
\ No newline at end of file
index 7ee0835..29070f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38fb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger'];(function(_0x576422,_0x1ff4d2){var _0x33f6f5=function(_0x3802f9){while(--_0x3802f9){_0x576422['push'](_0x576422['shift']());}};_0x33f6f5(++_0x1ff4d2);}(_0x38fb,0x1b0));var _0xb38f=function(_0x169a8a,_0x3526b1){_0x169a8a=_0x169a8a-0x0;var _0x2e8502=_0x38fb[_0x169a8a];return _0x2e8502;};'use strict';var _=require(_0xb38f('0x0'));var util=require(_0xb38f('0x1'));var logger=require(_0xb38f('0x2'))(_0xb38f('0x3'));var moment=require(_0xb38f('0x4'));var BPromise=require(_0xb38f('0x5'));var rp=require(_0xb38f('0x6'));var fs=require('fs');var path=require(_0xb38f('0x7'));var rimraf=require(_0xb38f('0x8'));var config=require(_0xb38f('0x9'));var attributes=require(_0xb38f('0xa'));module[_0xb38f('0xb')]=function(_0x4674f7,_0x3ad4be){return _0x4674f7[_0xb38f('0xc')](_0xb38f('0xd'),attributes,{'tableName':_0xb38f('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1332=['bluebird','request-promise','path','../../config/environment','./cmHopperAdditionalPhone.attributes','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','../../config/logger'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x1332,0x76));var _0x2133=function(_0x159dba,_0x417d53){_0x159dba=_0x159dba-0x0;var _0x38b230=_0x1332[_0x159dba];return _0x38b230;};'use strict';var _=require(_0x2133('0x0'));var util=require(_0x2133('0x1'));var logger=require(_0x2133('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2133('0x3'));var rp=require(_0x2133('0x4'));var fs=require('fs');var path=require(_0x2133('0x5'));var rimraf=require('rimraf');var config=require(_0x2133('0x6'));var attributes=require(_0x2133('0x7'));module['exports']=function(_0x134956,_0x571794){return _0x134956[_0x2133('0x8')](_0x2133('0x9'),attributes,{'tableName':_0x2133('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21bac18..b2396de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741a=['minutes','phone','createdAt','updatedAt','sequelize','transaction','update','IncrementPreviewCounters','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnosuchnumberretry','countabandonedretry','countnoanswerretry','countdropretry','countagentrejectretry','entity','dialGlobalMaxRetry','SwapAdditionalPhones','ContactId','duration','waitTime','isNil','scheduledat','add'];(function(_0x57874b,_0x315df5){var _0x415a70=function(_0x115400){while(--_0x115400){_0x57874b['push'](_0x57874b['shift']());}};_0x415a70(++_0x315df5);}(_0x741a,0x1d8));var _0xa741=function(_0x337945,_0x19ad92){_0x337945=_0x337945-0x0;var _0x16a9d2=_0x741a[_0x337945];return _0x16a9d2;};'use strict';var _=require(_0xa741('0x0'));var util=require(_0xa741('0x1'));var moment=require(_0xa741('0x2'));var BPromise=require('bluebird');var rs=require(_0xa741('0x3'));var fs=require('fs');var Redis=require(_0xa741('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa741('0x5'))(_0xa741('0x6'));var config=require(_0xa741('0x7'));var jayson=require(_0xa741('0x8'));var client=jayson[_0xa741('0x9')][_0xa741('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1208fb,_0x5f2509,_0x4ca6a5){return new BPromise(function(_0x53fb00,_0x1dc19b){return client[_0xa741('0xb')](_0x1208fb,_0x4ca6a5)[_0xa741('0xc')](function(_0x47710b){logger[_0xa741('0xd')](_0xa741('0xe'),_0x5f2509,'request\x20sent');logger[_0xa741('0xf')](_0xa741('0x10'),_0x5f2509,'request\x20sent',JSON[_0xa741('0x11')](_0x47710b));if(_0x47710b[_0xa741('0x12')]){if(_0x47710b[_0xa741('0x12')][_0xa741('0x13')]===0x1f4){logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x47710b['error']['message']);return _0x1dc19b(_0x47710b[_0xa741('0x12')]['message']);}logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x47710b[_0xa741('0x12')]['message']);return _0x53fb00(_0x47710b[_0xa741('0x12')][_0xa741('0x14')]);}else{logger['info'](_0xa741('0xe'),_0x5f2509,_0xa741('0x15'));_0x53fb00(_0x47710b[_0xa741('0x16')]['message']);}})[_0xa741('0x17')](function(_0x238417){logger[_0xa741('0x12')](_0xa741('0xe'),_0x5f2509,_0x238417);_0x1dc19b(_0x238417);});});}exports[_0xa741('0x18')]=function(_0x3d182a){var _0x35b4cd=this;return new Promise(function(_0x2e66c6,_0xcd2d51){return db[_0xa741('0x19')][_0xa741('0x1a')]({'raw':!![],'where':{'ContactId':_0x3d182a[_0xa741('0x1b')]['ContactId'],'ListId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1c')],'VoiceQueueId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1d')]===undefined?null:_0x3d182a[_0xa741('0x1b')][_0xa741('0x1d')],'CampaignId':_0x3d182a[_0xa741('0x1b')][_0xa741('0x1e')]===undefined?null:_0x3d182a[_0xa741('0x1b')]['CampaignId']}})[_0xa741('0xc')](function(_0x4133d2){if(_0x4133d2!=null){return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x4133d2['id'],'OrderBy':{'$gt':_0x4133d2[_0xa741('0x20')]}},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})['then'](function(_0x575acd){var _0x2af84b=0x0;if(_0x575acd){if(_0x575acd[_0xa741('0x22')]+_0x575acd[_0xa741('0x23')]+_0x575acd['countnoanswerretry']+_0x575acd[_0xa741('0x24')]+_0x575acd['countdropretry']+_0x575acd[_0xa741('0x25')]+_0x575acd['countmachineretry']+_0x575acd['countagentrejectretry']<_0x3d182a['entity']['dialGlobalMaxRetry'])_0x2af84b=0x1;_0x2e66c6({'additional':_0x2af84b});}else{return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x4133d2['id']},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})[_0xa741('0xc')](function(_0x22b81a){var _0x300662=0x0;if(_0x22b81a){if(_0x22b81a[_0xa741('0x22')]+_0x22b81a['countcongestionretry']+_0x22b81a[_0xa741('0x26')]+_0x22b81a[_0xa741('0x24')]+_0x22b81a[_0xa741('0x27')]+_0x22b81a[_0xa741('0x25')]+_0x22b81a['countmachineretry']+_0x22b81a[_0xa741('0x28')]<_0x3d182a[_0xa741('0x29')][_0xa741('0x2a')])_0x300662=0x1;_0x2e66c6({'additional':_0x300662});}else{_0x2e66c6({'additional':0x0});}})[_0xa741('0x17')](function(_0x56c965){logger[_0xa741('0x12')](_0xa741('0x18'),_0x56c965['message']);_0xcd2d51(_0x35b4cd[_0xa741('0x12')](0x1f4,_0x56c965[_0xa741('0x14')]));});}})[_0xa741('0x17')](function(_0x340a17){logger['error'](_0xa741('0x18'),_0x340a17[_0xa741('0x14')]);_0xcd2d51(_0x35b4cd['error'](0x1f4,_0x340a17[_0xa741('0x14')]));});}else _0x2e66c6({'additional':0x0});});});};exports[_0xa741('0x2b')]=function(_0x2b7896){var _0x1d334e=this;return new Promise(function(_0x4cc53b,_0x2ab2c6){return db[_0xa741('0x19')][_0xa741('0x1a')]({'raw':!![],'where':{'ContactId':_0x2b7896[_0xa741('0x1b')][_0xa741('0x2c')],'ListId':_0x2b7896['body'][_0xa741('0x1c')],'VoiceQueueId':_0x2b7896[_0xa741('0x1b')]['VoiceQueueId']===undefined?null:_0x2b7896[_0xa741('0x1b')][_0xa741('0x1d')],'CampaignId':_0x2b7896[_0xa741('0x1b')][_0xa741('0x1e')]===undefined?null:_0x2b7896[_0xa741('0x1b')][_0xa741('0x1e')]}})[_0xa741('0xc')](function(_0x5bc900){if(_0x5bc900!=null){return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x5bc900['id'],'OrderBy':{'$gte':_0x5bc900[_0xa741('0x20')]}},'order':[[_0xa741('0x20'),'ASC']]})[_0xa741('0xc')](function(_0xa4da74){if(_0xa4da74)return activateAdditionalPhone(_0x5bc900,_0x2b7896[_0xa741('0x1b')],_0xa4da74,_0x2b7896[_0xa741('0x2d')],_0x2b7896[_0xa741('0x2e')])['then'](function(_0x32fc27){_0x4cc53b(_0x32fc27);});else{return db[_0xa741('0x1f')][_0xa741('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x5bc900['id']},'order':[[_0xa741('0x20'),_0xa741('0x21')]]})[_0xa741('0xc')](function(_0x5f1380){if(_0x5f1380)return activateAdditionalPhone(_0x5bc900,_0x2b7896[_0xa741('0x1b')],_0x5f1380,_0x2b7896[_0xa741('0x2d')],_0x2b7896[_0xa741('0x2e')])[_0xa741('0xc')](function(_0x30bf48){_0x4cc53b(_0x30bf48);});else{_0x4cc53b({'id':_0x5bc900['id'],'phone':''});}})[_0xa741('0x17')](function(_0x1e199e){logger[_0xa741('0x12')]('VerifyAdditionalPhones',_0x1e199e[_0xa741('0x14')]);_0x2ab2c6(_0x1d334e[_0xa741('0x12')](0x1f4,_0x1e199e[_0xa741('0x14')]));});}})[_0xa741('0x17')](function(_0x2f0522){logger[_0xa741('0x12')]('VerifyAdditionalPhones',_0x2f0522[_0xa741('0x14')]);_0x2ab2c6(_0x1d334e[_0xa741('0x12')](0x1f4,_0x2f0522[_0xa741('0x14')]));});}else _0x4cc53b(0x1);});});};function activateAdditionalPhone(_0x1553a8,_0x3e5d9f,_0x2e3aaf,_0x2f9896,_0x5e9588){return new Promise(function(_0xb638e7,_0x5e33f3){var _0x1ccfc6;if(_[_0xa741('0x2f')](_0x2e3aaf[_0xa741('0x30')])){_0x2e3aaf[_0xa741('0x30')]=moment();}if(moment()>moment(_0x2e3aaf['scheduledat'])){_0x1ccfc6=moment()[_0xa741('0x31')](_0x5e9588||0x3,_0xa741('0x32'));}else{if(_0x2e3aaf[_0xa741('0x20')]==0x0){_0x1ccfc6=moment(_0x2e3aaf[_0xa741('0x30')]);}else{_0x1ccfc6=moment()[_0xa741('0x31')](_0x5e9588||0x3,_0xa741('0x32'));}}if(_[_0xa741('0x2f')](_0x1ccfc6)){_0x1ccfc6=moment()['add'](_0x5e9588||0x3,_0xa741('0x32'));}var _0x59d68c={'phone':_0x1553a8[_0xa741('0x33')],'active':0x0,'OrderBy':_[_0xa741('0x2f')](_0x1553a8['OrderBy'])?0x0:_0x1553a8[_0xa741('0x20')],'scheduledat':moment()[_0xa741('0x31')](_0x2f9896||0x1,_0xa741('0x32')),'countbusyretry':_0x3e5d9f[_0xa741('0x22')],'countcongestionretry':_0x3e5d9f[_0xa741('0x23')],'countnoanswerretry':_0x3e5d9f[_0xa741('0x26')],'countnosuchnumberretry':_0x3e5d9f[_0xa741('0x24')],'countdropretry':_0x3e5d9f[_0xa741('0x27')],'countabandonedretry':_0x3e5d9f[_0xa741('0x25')],'countmachineretry':_0x3e5d9f['countmachineretry'],'countagentrejectretry':_0x3e5d9f[_0xa741('0x28')],'createdAt':_0x3e5d9f[_0xa741('0x34')],'updatedAt':_0x3e5d9f['updatedAt']};var _0x4f727a={'CmHopperId':_0x1553a8['id'],'phone':_0x2e3aaf[_0xa741('0x33')],'active':0x0,'OrderBy':_[_0xa741('0x2f')](_0x2e3aaf[_0xa741('0x20')])?0x0:_0x2e3aaf[_0xa741('0x20')],'scheduledat':_0x1ccfc6,'countbusyretry':_0x2e3aaf[_0xa741('0x22')],'countcongestionretry':_0x2e3aaf['countcongestionretry'],'countnoanswerretry':_0x2e3aaf[_0xa741('0x26')],'countnosuchnumberretry':_0x2e3aaf[_0xa741('0x24')],'countdropretry':_0x2e3aaf[_0xa741('0x27')],'countabandonedretry':_0x2e3aaf[_0xa741('0x25')],'countmachineretry':_0x2e3aaf['countmachineretry'],'countagentrejectretry':_0x2e3aaf['countagentrejectretry'],'createdAt':_0x2e3aaf[_0xa741('0x34')],'updatedAt':_0x2e3aaf[_0xa741('0x35')]};return db[_0xa741('0x36')][_0xa741('0x37')](function(_0x561a46){return db[_0xa741('0x1f')][_0xa741('0x38')](_0x59d68c,{'where':{'id':_0x2e3aaf['id']}},{'transaction':_0x561a46})['then'](function(){return db[_0xa741('0x19')]['update'](_0x4f727a,{'where':{'id':_0x1553a8['id']}},{'transaction':_0x561a46});});})[_0xa741('0xc')](function(_0x5e5a1b){_0xb638e7({'id':_0x1553a8['id'],'phone':_0x2e3aaf['phone']});})[_0xa741('0x17')](function(_0x24aef6){logger['error']('activateAdditionalPhone',_0x24aef6[_0xa741('0x14')]);_0x5e33f3({'error':_0x24aef6[_0xa741('0x14')]});});});}exports['IncrementPreviewCounters']=function(_0x5f4dc1){var _0x40a3b2=this;return new Promise(function(_0x44c45a,_0x5f2d0a){return db[_0xa741('0x19')][_0xa741('0x38')](_0x5f4dc1['body']['field'],{'where':{'id':_0x5f4dc1[_0xa741('0x1b')]['id']}})[_0xa741('0xc')](function(_0x1290be){_0x44c45a(_0x1290be);})['catch'](function(_0x3b4813){logger['error'](_0xa741('0x39'),_0x3b4813[_0xa741('0x14')]);_0x5f2d0a(_0x40a3b2['error'](0x1f4,_0x3b4813[_0xa741('0x14')]));});});};
\ No newline at end of file
+var _0x359d=['scheduledat','minutes','add','phone','countabandonedretry','createdAt','sequelize','update','activateAdditionalPhone','IncrementPreviewCounters','field','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperAdditionalPhone,\x20%s,\x20%s','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','dialGlobalMaxRetry','countagentrejectretry','entity','SwapAdditionalPhones','waitTime','duration','isNil'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x359d,0x7d));var _0xd359=function(_0x5cbace,_0x33943c){_0x5cbace=_0x5cbace-0x0;var _0x6de5b8=_0x359d[_0x5cbace];return _0x6de5b8;};'use strict';var _=require('lodash');var util=require(_0xd359('0x0'));var moment=require(_0xd359('0x1'));var BPromise=require(_0xd359('0x2'));var rs=require(_0xd359('0x3'));var fs=require('fs');var Redis=require(_0xd359('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd359('0x5'));var logger=require(_0xd359('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd359('0x7'));var client=jayson[_0xd359('0x8')][_0xd359('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x344bd3,_0x429e79,_0x21072c){return new BPromise(function(_0x57d663,_0x249630){return client['request'](_0x344bd3,_0x21072c)[_0xd359('0xa')](function(_0x3da37a){logger[_0xd359('0xb')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x429e79,_0xd359('0xc'));logger[_0xd359('0xd')](_0xd359('0xe'),_0x429e79,_0xd359('0xc'),JSON[_0xd359('0xf')](_0x3da37a));if(_0x3da37a['error']){if(_0x3da37a[_0xd359('0x10')][_0xd359('0x11')]===0x1f4){logger['error'](_0xd359('0x12'),_0x429e79,_0x3da37a[_0xd359('0x10')][_0xd359('0x13')]);return _0x249630(_0x3da37a[_0xd359('0x10')][_0xd359('0x13')]);}logger[_0xd359('0x10')](_0xd359('0x12'),_0x429e79,_0x3da37a[_0xd359('0x10')][_0xd359('0x13')]);return _0x57d663(_0x3da37a['error']['message']);}else{logger['info'](_0xd359('0x12'),_0x429e79,_0xd359('0xc'));_0x57d663(_0x3da37a[_0xd359('0x14')][_0xd359('0x13')]);}})[_0xd359('0x15')](function(_0x59858f){logger['error'](_0xd359('0x12'),_0x429e79,_0x59858f);_0x249630(_0x59858f);});});}exports[_0xd359('0x16')]=function(_0x53d8a2){var _0x33031f=this;return new Promise(function(_0xd2338d,_0x26485c){return db[_0xd359('0x17')][_0xd359('0x18')]({'raw':!![],'where':{'ContactId':_0x53d8a2[_0xd359('0x19')][_0xd359('0x1a')],'ListId':_0x53d8a2[_0xd359('0x19')][_0xd359('0x1b')],'VoiceQueueId':_0x53d8a2['body'][_0xd359('0x1c')]===undefined?null:_0x53d8a2[_0xd359('0x19')]['VoiceQueueId'],'CampaignId':_0x53d8a2['body'][_0xd359('0x1d')]===undefined?null:_0x53d8a2[_0xd359('0x19')][_0xd359('0x1d')]}})[_0xd359('0xa')](function(_0x619d31){if(_0x619d31!=null){return db[_0xd359('0x1e')][_0xd359('0x18')]({'raw':!![],'where':{'CmHopperId':_0x619d31['id'],'OrderBy':{'$gt':_0x619d31[_0xd359('0x1f')]}},'order':[[_0xd359('0x1f'),_0xd359('0x20')]]})[_0xd359('0xa')](function(_0x40013e){var _0x3f423c=0x0;if(_0x40013e){if(_0x40013e[_0xd359('0x21')]+_0x40013e[_0xd359('0x22')]+_0x40013e[_0xd359('0x23')]+_0x40013e[_0xd359('0x24')]+_0x40013e[_0xd359('0x25')]+_0x40013e['countabandonedretry']+_0x40013e[_0xd359('0x26')]+_0x40013e['countagentrejectretry']<_0x53d8a2['entity'][_0xd359('0x27')])_0x3f423c=0x1;_0xd2338d({'additional':_0x3f423c});}else{return db[_0xd359('0x1e')][_0xd359('0x18')]({'raw':!![],'where':{'CmHopperId':_0x619d31['id']},'order':[['OrderBy',_0xd359('0x20')]]})[_0xd359('0xa')](function(_0x56869e){var _0x538813=0x0;if(_0x56869e){if(_0x56869e[_0xd359('0x21')]+_0x56869e['countcongestionretry']+_0x56869e[_0xd359('0x23')]+_0x56869e['countnosuchnumberretry']+_0x56869e[_0xd359('0x25')]+_0x56869e['countabandonedretry']+_0x56869e['countmachineretry']+_0x56869e[_0xd359('0x28')]<_0x53d8a2[_0xd359('0x29')]['dialGlobalMaxRetry'])_0x538813=0x1;_0xd2338d({'additional':_0x538813});}else{_0xd2338d({'additional':0x0});}})[_0xd359('0x15')](function(_0x6beb5b){logger[_0xd359('0x10')](_0xd359('0x16'),_0x6beb5b['message']);_0x26485c(_0x33031f[_0xd359('0x10')](0x1f4,_0x6beb5b[_0xd359('0x13')]));});}})[_0xd359('0x15')](function(_0xe94c85){logger['error'](_0xd359('0x16'),_0xe94c85[_0xd359('0x13')]);_0x26485c(_0x33031f[_0xd359('0x10')](0x1f4,_0xe94c85[_0xd359('0x13')]));});}else _0xd2338d({'additional':0x0});});});};exports[_0xd359('0x2a')]=function(_0xa84186){var _0x3e8b38=this;return new Promise(function(_0x43d8e9,_0x3e4145){return db[_0xd359('0x17')][_0xd359('0x18')]({'raw':!![],'where':{'ContactId':_0xa84186[_0xd359('0x19')][_0xd359('0x1a')],'ListId':_0xa84186[_0xd359('0x19')][_0xd359('0x1b')],'VoiceQueueId':_0xa84186[_0xd359('0x19')][_0xd359('0x1c')]===undefined?null:_0xa84186[_0xd359('0x19')][_0xd359('0x1c')],'CampaignId':_0xa84186[_0xd359('0x19')]['CampaignId']===undefined?null:_0xa84186[_0xd359('0x19')][_0xd359('0x1d')]}})[_0xd359('0xa')](function(_0x119c9a){if(_0x119c9a!=null){return db[_0xd359('0x1e')][_0xd359('0x18')]({'raw':!![],'where':{'CmHopperId':_0x119c9a['id'],'OrderBy':{'$gte':_0x119c9a[_0xd359('0x1f')]}},'order':[['OrderBy','ASC']]})[_0xd359('0xa')](function(_0x244d9b){if(_0x244d9b)return activateAdditionalPhone(_0x119c9a,_0xa84186[_0xd359('0x19')],_0x244d9b,_0xa84186['duration'],_0xa84186[_0xd359('0x2b')])[_0xd359('0xa')](function(_0x4c06a2){_0x43d8e9(_0x4c06a2);});else{return db['CmHopperAdditionalPhone'][_0xd359('0x18')]({'raw':!![],'where':{'CmHopperId':_0x119c9a['id']},'order':[[_0xd359('0x1f'),_0xd359('0x20')]]})['then'](function(_0x216bd6){if(_0x216bd6)return activateAdditionalPhone(_0x119c9a,_0xa84186[_0xd359('0x19')],_0x216bd6,_0xa84186[_0xd359('0x2c')],_0xa84186[_0xd359('0x2b')])[_0xd359('0xa')](function(_0x515f16){_0x43d8e9(_0x515f16);});else{_0x43d8e9({'id':_0x119c9a['id'],'phone':''});}})['catch'](function(_0x3a676b){logger[_0xd359('0x10')](_0xd359('0x16'),_0x3a676b[_0xd359('0x13')]);_0x3e4145(_0x3e8b38[_0xd359('0x10')](0x1f4,_0x3a676b[_0xd359('0x13')]));});}})[_0xd359('0x15')](function(_0x29aaef){logger['error'](_0xd359('0x16'),_0x29aaef[_0xd359('0x13')]);_0x3e4145(_0x3e8b38[_0xd359('0x10')](0x1f4,_0x29aaef['message']));});}else _0x43d8e9(0x1);});});};function activateAdditionalPhone(_0x1dd1af,_0x1fc565,_0x5e5ae5,_0x300b2c,_0x52e992){return new Promise(function(_0x38e778,_0x467926){var _0x22aefa;if(_[_0xd359('0x2d')](_0x5e5ae5[_0xd359('0x2e')])){_0x5e5ae5[_0xd359('0x2e')]=moment();}if(moment()>moment(_0x5e5ae5[_0xd359('0x2e')])){_0x22aefa=moment()['add'](_0x52e992||0x3,_0xd359('0x2f'));}else{if(_0x5e5ae5['OrderBy']==0x0){_0x22aefa=moment(_0x5e5ae5[_0xd359('0x2e')]);}else{_0x22aefa=moment()[_0xd359('0x30')](_0x52e992||0x3,_0xd359('0x2f'));}}if(_[_0xd359('0x2d')](_0x22aefa)){_0x22aefa=moment()[_0xd359('0x30')](_0x52e992||0x3,'minutes');}var _0x58af29={'phone':_0x1dd1af[_0xd359('0x31')],'active':0x0,'OrderBy':_['isNil'](_0x1dd1af[_0xd359('0x1f')])?0x0:_0x1dd1af['OrderBy'],'scheduledat':moment()['add'](_0x300b2c||0x1,_0xd359('0x2f')),'countbusyretry':_0x1fc565[_0xd359('0x21')],'countcongestionretry':_0x1fc565[_0xd359('0x22')],'countnoanswerretry':_0x1fc565['countnoanswerretry'],'countnosuchnumberretry':_0x1fc565[_0xd359('0x24')],'countdropretry':_0x1fc565[_0xd359('0x25')],'countabandonedretry':_0x1fc565[_0xd359('0x32')],'countmachineretry':_0x1fc565[_0xd359('0x26')],'countagentrejectretry':_0x1fc565[_0xd359('0x28')],'createdAt':_0x1fc565[_0xd359('0x33')],'updatedAt':_0x1fc565['updatedAt']};var _0x2c52c9={'CmHopperId':_0x1dd1af['id'],'phone':_0x5e5ae5[_0xd359('0x31')],'active':0x0,'OrderBy':_[_0xd359('0x2d')](_0x5e5ae5[_0xd359('0x1f')])?0x0:_0x5e5ae5[_0xd359('0x1f')],'scheduledat':_0x22aefa,'countbusyretry':_0x5e5ae5[_0xd359('0x21')],'countcongestionretry':_0x5e5ae5['countcongestionretry'],'countnoanswerretry':_0x5e5ae5[_0xd359('0x23')],'countnosuchnumberretry':_0x5e5ae5[_0xd359('0x24')],'countdropretry':_0x5e5ae5[_0xd359('0x25')],'countabandonedretry':_0x5e5ae5['countabandonedretry'],'countmachineretry':_0x5e5ae5['countmachineretry'],'countagentrejectretry':_0x5e5ae5[_0xd359('0x28')],'createdAt':_0x5e5ae5[_0xd359('0x33')],'updatedAt':_0x5e5ae5['updatedAt']};return db[_0xd359('0x34')]['transaction'](function(_0x19ec45){return db[_0xd359('0x1e')][_0xd359('0x35')](_0x58af29,{'where':{'id':_0x5e5ae5['id']}},{'transaction':_0x19ec45})[_0xd359('0xa')](function(){return db[_0xd359('0x17')][_0xd359('0x35')](_0x2c52c9,{'where':{'id':_0x1dd1af['id']}},{'transaction':_0x19ec45});});})[_0xd359('0xa')](function(_0x4cdacf){_0x38e778({'id':_0x1dd1af['id'],'phone':_0x5e5ae5['phone']});})[_0xd359('0x15')](function(_0x551a8b){logger['error'](_0xd359('0x36'),_0x551a8b[_0xd359('0x13')]);_0x467926({'error':_0x551a8b['message']});});});}exports[_0xd359('0x37')]=function(_0x3ac793){var _0x174254=this;return new Promise(function(_0x405309,_0xbae55d){return db[_0xd359('0x17')]['update'](_0x3ac793['body'][_0xd359('0x38')],{'where':{'id':_0x3ac793[_0xd359('0x19')]['id']}})[_0xd359('0xa')](function(_0x1a4fa7){_0x405309(_0x1a4fa7);})[_0xd359('0x15')](function(_0x30e548){logger[_0xd359('0x10')](_0xd359('0x37'),_0x30e548[_0xd359('0x13')]);_0xbae55d(_0x174254[_0xd359('0x10')](0x1f4,_0x30e548[_0xd359('0x13')]));});});};
\ No newline at end of file
index 966a1ee..0666948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8e=['/:id','show','post','create','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index'];(function(_0x179b53,_0x31f6fe){var _0x38a146=function(_0x33f0c2){while(--_0x33f0c2){_0x179b53['push'](_0x179b53['shift']());}};_0x38a146(++_0x31f6fe);}(_0x3c8e,0xf3));var _0xe3c8=function(_0x18418c,_0x51e952){_0x18418c=_0x18418c-0x0;var _0x1fa46a=_0x3c8e[_0x18418c];return _0x1fa46a;};'use strict';var multer=require(_0xe3c8('0x0'));var util=require(_0xe3c8('0x1'));var path=require(_0xe3c8('0x2'));var timeout=require(_0xe3c8('0x3'));var express=require(_0xe3c8('0x4'));var router=express['Router']();var fs_extra=require(_0xe3c8('0x5'));var auth=require(_0xe3c8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe3c8('0x7'));var controller=require(_0xe3c8('0x8'));router[_0xe3c8('0x9')]('/',auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xb')]);router['get'](_0xe3c8('0xc'),auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xd')]);router[_0xe3c8('0xe')]('/',auth[_0xe3c8('0xa')](),controller[_0xe3c8('0xf')]);router['put'](_0xe3c8('0xc'),auth[_0xe3c8('0xa')](),controller['update']);router[_0xe3c8('0x10')](_0xe3c8('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf767=['Router','./cmHopperAdditionalPhone.controller','get','/:id','show','post','create','put','isAuthenticated','update','delete','destroy','path','connect-timeout','express'];(function(_0xfe3990,_0x3ed0e2){var _0x274339=function(_0x307fc0){while(--_0x307fc0){_0xfe3990['push'](_0xfe3990['shift']());}};_0x274339(++_0x3ed0e2);}(_0xf767,0x183));var _0x7f76=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xf767[_0x1ac595];return _0x455fff;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7f76('0x0'));var timeout=require(_0x7f76('0x1'));var express=require(_0x7f76('0x2'));var router=express[_0x7f76('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7f76('0x4'));router[_0x7f76('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7f76('0x5')](_0x7f76('0x6'),auth['isAuthenticated'](),controller[_0x7f76('0x7')]);router[_0x7f76('0x8')]('/',auth['isAuthenticated'](),controller[_0x7f76('0x9')]);router[_0x7f76('0xa')](_0x7f76('0x6'),auth[_0x7f76('0xb')](),controller[_0x7f76('0xc')]);router[_0x7f76('0xd')](_0x7f76('0x6'),auth[_0x7f76('0xb')](),controller[_0x7f76('0xe')]);module['exports']=router;
\ No newline at end of file
index af7c946..e3fc330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c88=['moment','exports','STRING','INTEGER','contactListQueue'];(function(_0x2a5860,_0x496cc1){var _0x28f39c=function(_0x4ee545){while(--_0x4ee545){_0x2a5860['push'](_0x2a5860['shift']());}};_0x28f39c(++_0x496cc1);}(_0x1c88,0x1a9));var _0x81c8=function(_0x47848c,_0x1c52f3){_0x47848c=_0x47848c-0x0;var _0x520324=_0x1c88[_0x47848c];return _0x520324;};'use strict';var moment=require(_0x81c8('0x0'));var Sequelize=require('sequelize');module[_0x81c8('0x1')]={'phone':{'type':Sequelize[_0x81c8('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x81c8('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x81c8('0x4')},'VoiceQueueId':{'type':Sequelize[_0x81c8('0x3')],'unique':_0x81c8('0x4')}};
\ No newline at end of file
+var _0x236d=['INTEGER','moment','sequelize','STRING','contactListQueue'];(function(_0x57fe26,_0x55f125){var _0x514402=function(_0x261a4c){while(--_0x261a4c){_0x57fe26['push'](_0x57fe26['shift']());}};_0x514402(++_0x55f125);}(_0x236d,0x7e));var _0xd236=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x236d[_0x321bb2];return _0x9c12ed;};'use strict';var moment=require(_0xd236('0x0'));var Sequelize=require(_0xd236('0x1'));module['exports']={'phone':{'type':Sequelize[_0xd236('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xd236('0x3')},'ListId':{'type':Sequelize[_0xd236('0x4')],'unique':_0xd236('0x3')},'VoiceQueueId':{'type':Sequelize[_0xd236('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
index 9671f91..085dd62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde97=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','update','then','destroy','error','name','send','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','show','params','keys','fields','length','find','catch','body','describe','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1422d0,_0x57f03c){var _0x3d5850=function(_0x1d211c){while(--_0x1d211c){_0x1422d0['push'](_0x1422d0['shift']());}};_0x3d5850(++_0x57f03c);}(_0xde97,0x192));var _0x7de9=function(_0x46a3e8,_0x2e1b35){_0x46a3e8=_0x46a3e8-0x0;var _0xf1442e=_0xde97[_0x46a3e8];return _0xf1442e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7de9('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7de9('0x1'));var moment=require(_0x7de9('0x2'));var BPromise=require(_0x7de9('0x3'));var Mustache=require(_0x7de9('0x4'));var util=require('util');var path=require(_0x7de9('0x5'));var sox=require(_0x7de9('0x6'));var csv=require(_0x7de9('0x7'));var ejs=require(_0x7de9('0x8'));var fs=require('fs');var fs_extra=require(_0x7de9('0x9'));var _=require(_0x7de9('0xa'));var squel=require(_0x7de9('0xb'));var crypto=require('crypto');var jsforce=require(_0x7de9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7de9('0x7'));var querystring=require(_0x7de9('0xd'));var Papa=require(_0x7de9('0xe'));var Redis=require(_0x7de9('0xf'));var authService=require(_0x7de9('0x10'));var qs=require(_0x7de9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7de9('0x12'));var logger=require('../../config/logger')(_0x7de9('0x13'));var utils=require(_0x7de9('0x14'));var config=require(_0x7de9('0x15'));var licenseUtil=require(_0x7de9('0x16'));var db=require(_0x7de9('0x17'))['db'];function respondWithStatusCode(_0x14cab8,_0x506b6f){_0x506b6f=_0x506b6f||0xcc;return function(_0x49d9a5){if(_0x49d9a5){return _0x14cab8[_0x7de9('0x18')](_0x506b6f);}return _0x14cab8[_0x7de9('0x19')](_0x506b6f)[_0x7de9('0x1a')]();};}function respondWithResult(_0x1410ee,_0xf9c790){_0xf9c790=_0xf9c790||0xc8;return function(_0x29bfcb){if(_0x29bfcb){return _0x1410ee[_0x7de9('0x19')](_0xf9c790)['json'](_0x29bfcb);}};}function respondWithFilteredResult(_0x1b0004,_0x4fa99a){return function(_0x2d3c9a){if(_0x2d3c9a){var _0x1cd109=typeof _0x4fa99a[_0x7de9('0x1b')]==='undefined'&&typeof _0x4fa99a[_0x7de9('0x1c')]==='undefined';var _0x5204cd=_0x2d3c9a[_0x7de9('0x1d')];var _0x4b47a1=_0x1cd109?0x0:_0x4fa99a['offset'];var _0x14998e=_0x1cd109?_0x2d3c9a['count']:_0x4fa99a[_0x7de9('0x1b')]+_0x4fa99a[_0x7de9('0x1c')];var _0x832ad1;if(_0x14998e>=_0x5204cd){_0x14998e=_0x5204cd;_0x832ad1=0xc8;}else{_0x832ad1=0xce;}_0x1b0004[_0x7de9('0x19')](_0x832ad1);return _0x1b0004[_0x7de9('0x1e')](_0x7de9('0x1f'),_0x4b47a1+'-'+_0x14998e+'/'+_0x5204cd)['json'](_0x2d3c9a);}return null;};}function patchUpdates(_0x5b0ee5){return function(_0xbf55aa){try{jsonpatch[_0x7de9('0x20')](_0xbf55aa,_0x5b0ee5,!![]);}catch(_0x5e6b10){return BPromise['reject'](_0x5e6b10);}return _0xbf55aa['save']();};}function saveUpdates(_0x457755,_0x17f999){return function(_0x4b803f){if(_0x4b803f){return _0x4b803f[_0x7de9('0x21')](_0x457755)[_0x7de9('0x22')](function(_0xe4be30){return _0xe4be30;});}return null;};}function removeEntity(_0x9e8d8b,_0xe5e1fa){return function(_0xa7ee1b){if(_0xa7ee1b){return _0xa7ee1b[_0x7de9('0x23')]()[_0x7de9('0x22')](function(){_0x9e8d8b[_0x7de9('0x19')](0xcc)[_0x7de9('0x1a')]();});}};}function handleEntityNotFound(_0x357f0b,_0x225963){return function(_0x394dcb){if(!_0x394dcb){_0x357f0b['sendStatus'](0x194);}return _0x394dcb;};}function handleError(_0x18837e,_0x18777d){_0x18777d=_0x18777d||0x1f4;return function(_0x49e176){logger[_0x7de9('0x24')](_0x49e176['stack']);if(_0x49e176[_0x7de9('0x25')]){delete _0x49e176['name'];}_0x18837e['status'](_0x18777d)[_0x7de9('0x26')](_0x49e176);};}exports['index']=function(_0x4e6250,_0x4adf89){var _0x3686c0={},_0x3e653={},_0x2c9eb9={'count':0x0,'rows':[]};var _0x51217b=_[_0x7de9('0x27')](db[_0x7de9('0x28')][_0x7de9('0x29')],function(_0x4c36ba){return{'name':_0x4c36ba[_0x7de9('0x2a')],'type':_0x4c36ba[_0x7de9('0x2b')][_0x7de9('0x2c')]};});_0x3e653[_0x7de9('0x2d')]=_[_0x7de9('0x27')](_0x51217b,_0x7de9('0x25'));_0x3e653[_0x7de9('0x2e')]=_['keys'](_0x4e6250[_0x7de9('0x2e')]);_0x3e653[_0x7de9('0x2f')]=_[_0x7de9('0x30')](_0x3e653[_0x7de9('0x2d')],_0x3e653[_0x7de9('0x2e')]);_0x3686c0[_0x7de9('0x31')]=_[_0x7de9('0x30')](_0x3e653[_0x7de9('0x2d')],qs['fields'](_0x4e6250['query']['fields']));_0x3686c0[_0x7de9('0x31')]=_0x3686c0[_0x7de9('0x31')]['length']?_0x3686c0['attributes']:_0x3e653[_0x7de9('0x2d')];if(!_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x32')]('nolimit')){_0x3686c0[_0x7de9('0x1c')]=qs['limit'](_0x4e6250[_0x7de9('0x2e')]['limit']);_0x3686c0['offset']=qs[_0x7de9('0x1b')](_0x4e6250['query'][_0x7de9('0x1b')]);}_0x3686c0[_0x7de9('0x33')]=qs[_0x7de9('0x34')](_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x34')]);_0x3686c0['where']=qs[_0x7de9('0x2f')](_['pick'](_0x4e6250[_0x7de9('0x2e')],_0x3e653['filters']),_0x51217b);if(_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x35')]){_0x3686c0['where']=_['merge'](_0x3686c0[_0x7de9('0x36')],{'$or':_[_0x7de9('0x27')](_0x51217b,function(_0x334332){if(_0x334332[_0x7de9('0x2b')]!=='VIRTUAL'){var _0x3556e8={};_0x3556e8[_0x334332[_0x7de9('0x25')]]={'$like':'%'+_0x4e6250['query'][_0x7de9('0x35')]+'%'};return _0x3556e8;}})});}_0x3686c0=_[_0x7de9('0x37')]({},_0x3686c0,_0x4e6250[_0x7de9('0x38')]);var _0x511ee9={'where':_0x3686c0[_0x7de9('0x36')]};return db[_0x7de9('0x28')]['count'](_0x511ee9)[_0x7de9('0x22')](function(_0x5e03f5){_0x2c9eb9['count']=_0x5e03f5;if(_0x4e6250[_0x7de9('0x2e')][_0x7de9('0x39')]){_0x3686c0[_0x7de9('0x3a')]=[{'all':!![]}];}return db[_0x7de9('0x28')][_0x7de9('0x3b')](_0x3686c0);})[_0x7de9('0x22')](function(_0x7b21ef){_0x2c9eb9[_0x7de9('0x3c')]=_0x7b21ef;return _0x2c9eb9;})[_0x7de9('0x22')](respondWithFilteredResult(_0x4adf89,_0x3686c0))['catch'](handleError(_0x4adf89,null));};exports[_0x7de9('0x3d')]=function(_0x2d644d,_0x55eafa){var _0x59a18f={'raw':!![],'where':{'id':_0x2d644d[_0x7de9('0x3e')]['id']}},_0x4a3e11={};_0x4a3e11['model']=_[_0x7de9('0x3f')](db[_0x7de9('0x28')][_0x7de9('0x29')]);_0x4a3e11['query']=_['keys'](_0x2d644d[_0x7de9('0x2e')]);_0x4a3e11[_0x7de9('0x2f')]=_[_0x7de9('0x30')](_0x4a3e11[_0x7de9('0x2d')],_0x4a3e11[_0x7de9('0x2e')]);_0x59a18f[_0x7de9('0x31')]=_[_0x7de9('0x30')](_0x4a3e11[_0x7de9('0x2d')],qs[_0x7de9('0x40')](_0x2d644d['query'][_0x7de9('0x40')]));_0x59a18f['attributes']=_0x59a18f['attributes'][_0x7de9('0x41')]?_0x59a18f[_0x7de9('0x31')]:_0x4a3e11[_0x7de9('0x2d')];if(_0x2d644d['query'][_0x7de9('0x39')]){_0x59a18f[_0x7de9('0x3a')]=[{'all':!![]}];}_0x59a18f=_[_0x7de9('0x37')]({},_0x59a18f,_0x2d644d[_0x7de9('0x38')]);return db['CmHopperBlack'][_0x7de9('0x42')](_0x59a18f)[_0x7de9('0x22')](handleEntityNotFound(_0x55eafa,null))['then'](respondWithResult(_0x55eafa,null))[_0x7de9('0x43')](handleError(_0x55eafa,null));};exports['update']=function(_0x472956,_0x1ee0bb){if(_0x472956[_0x7de9('0x44')]['id']){delete _0x472956[_0x7de9('0x44')]['id'];}return db['CmHopperBlack'][_0x7de9('0x42')]({'where':{'id':_0x472956['params']['id']}})['then'](handleEntityNotFound(_0x1ee0bb,null))[_0x7de9('0x22')](saveUpdates(_0x472956[_0x7de9('0x44')],null))[_0x7de9('0x22')](respondWithResult(_0x1ee0bb,null))[_0x7de9('0x43')](handleError(_0x1ee0bb,null));};exports['destroy']=function(_0x20b975,_0x5625dd){return db[_0x7de9('0x28')]['find']({'where':{'id':_0x20b975[_0x7de9('0x3e')]['id']}})[_0x7de9('0x22')](handleEntityNotFound(_0x5625dd,null))[_0x7de9('0x22')](removeEntity(_0x5625dd,null))[_0x7de9('0x43')](handleError(_0x5625dd,null));};exports[_0x7de9('0x45')]=function(_0x4afa1e,_0x357686){return db[_0x7de9('0x28')]['describe']()[_0x7de9('0x22')](respondWithResult(_0x357686,null))[_0x7de9('0x43')](handleError(_0x357686,null));};
\ No newline at end of file
+var _0xae4b=['sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','find','catch','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','save','update','then','destroy','error','stack','name','index','map','CmHopperBlack','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit'];(function(_0x3e0343,_0x258777){var _0xc4e76c=function(_0x1c15bb){while(--_0x1c15bb){_0x3e0343['push'](_0x3e0343['shift']());}};_0xc4e76c(++_0x258777);}(_0xae4b,0x17e));var _0xbae4=function(_0x53d08f,_0x4af584){_0x53d08f=_0x53d08f-0x0;var _0x1bef24=_0xae4b[_0x53d08f];return _0x1bef24;};'use strict';var emlformat=require(_0xbae4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbae4('0x1'));var jsonpatch=require(_0xbae4('0x2'));var rp=require(_0xbae4('0x3'));var moment=require(_0xbae4('0x4'));var BPromise=require(_0xbae4('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xbae4('0x6'));var sox=require(_0xbae4('0x7'));var csv=require(_0xbae4('0x8'));var ejs=require(_0xbae4('0x9'));var fs=require('fs');var fs_extra=require(_0xbae4('0xa'));var _=require('lodash');var squel=require(_0xbae4('0xb'));var crypto=require(_0xbae4('0xc'));var jsforce=require(_0xbae4('0xd'));var deskjs=require(_0xbae4('0xe'));var toCsv=require(_0xbae4('0x8'));var querystring=require(_0xbae4('0xf'));var Papa=require('papaparse');var Redis=require(_0xbae4('0x10'));var authService=require(_0xbae4('0x11'));var qs=require(_0xbae4('0x12'));var as=require(_0xbae4('0x13'));var hardwareService=require(_0xbae4('0x14'));var logger=require('../../config/logger')(_0xbae4('0x15'));var utils=require(_0xbae4('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbae4('0x17'));var db=require(_0xbae4('0x18'))['db'];function respondWithStatusCode(_0x17086a,_0x43b3c4){_0x43b3c4=_0x43b3c4||0xcc;return function(_0x25b979){if(_0x25b979){return _0x17086a[_0xbae4('0x19')](_0x43b3c4);}return _0x17086a[_0xbae4('0x1a')](_0x43b3c4)[_0xbae4('0x1b')]();};}function respondWithResult(_0x397446,_0x85b12c){_0x85b12c=_0x85b12c||0xc8;return function(_0x1117c4){if(_0x1117c4){return _0x397446[_0xbae4('0x1a')](_0x85b12c)[_0xbae4('0x1c')](_0x1117c4);}};}function respondWithFilteredResult(_0x5f12c2,_0x3de7d2){return function(_0x4d47a2){if(_0x4d47a2){var _0x5aabbb=typeof _0x3de7d2[_0xbae4('0x1d')]===_0xbae4('0x1e')&&typeof _0x3de7d2['limit']==='undefined';var _0x4d4419=_0x4d47a2[_0xbae4('0x1f')];var _0x3275d6=_0x5aabbb?0x0:_0x3de7d2[_0xbae4('0x1d')];var _0x28df41=_0x5aabbb?_0x4d47a2[_0xbae4('0x1f')]:_0x3de7d2['offset']+_0x3de7d2['limit'];var _0x419b03;if(_0x28df41>=_0x4d4419){_0x28df41=_0x4d4419;_0x419b03=0xc8;}else{_0x419b03=0xce;}_0x5f12c2[_0xbae4('0x1a')](_0x419b03);return _0x5f12c2[_0xbae4('0x20')]('Content-Range',_0x3275d6+'-'+_0x28df41+'/'+_0x4d4419)['json'](_0x4d47a2);}return null;};}function patchUpdates(_0x3a450b){return function(_0x5e7636){try{jsonpatch[_0xbae4('0x21')](_0x5e7636,_0x3a450b,!![]);}catch(_0x4141e9){return BPromise['reject'](_0x4141e9);}return _0x5e7636[_0xbae4('0x22')]();};}function saveUpdates(_0x29aa76,_0x4a9d36){return function(_0xf8d21d){if(_0xf8d21d){return _0xf8d21d[_0xbae4('0x23')](_0x29aa76)[_0xbae4('0x24')](function(_0x50a649){return _0x50a649;});}return null;};}function removeEntity(_0x2099f3,_0x1a6661){return function(_0x59b270){if(_0x59b270){return _0x59b270[_0xbae4('0x25')]()['then'](function(){_0x2099f3[_0xbae4('0x1a')](0xcc)[_0xbae4('0x1b')]();});}};}function handleEntityNotFound(_0x1d9192,_0x5f2e23){return function(_0x30198a){if(!_0x30198a){_0x1d9192['sendStatus'](0x194);}return _0x30198a;};}function handleError(_0x443f0b,_0xc1621d){_0xc1621d=_0xc1621d||0x1f4;return function(_0x1eb047){logger[_0xbae4('0x26')](_0x1eb047[_0xbae4('0x27')]);if(_0x1eb047[_0xbae4('0x28')]){delete _0x1eb047[_0xbae4('0x28')];}_0x443f0b['status'](_0xc1621d)['send'](_0x1eb047);};}exports[_0xbae4('0x29')]=function(_0x33116b,_0x1e9b76){var _0x2b0fc4={},_0xb95c74={},_0xb0e4de={'count':0x0,'rows':[]};var _0x36c368=_[_0xbae4('0x2a')](db[_0xbae4('0x2b')][_0xbae4('0x2c')],function(_0x37a2c1){return{'name':_0x37a2c1['fieldName'],'type':_0x37a2c1['type'][_0xbae4('0x2d')]};});_0xb95c74[_0xbae4('0x2e')]=_[_0xbae4('0x2a')](_0x36c368,_0xbae4('0x28'));_0xb95c74[_0xbae4('0x2f')]=_['keys'](_0x33116b[_0xbae4('0x2f')]);_0xb95c74[_0xbae4('0x30')]=_[_0xbae4('0x31')](_0xb95c74['model'],_0xb95c74[_0xbae4('0x2f')]);_0x2b0fc4[_0xbae4('0x32')]=_[_0xbae4('0x31')](_0xb95c74[_0xbae4('0x2e')],qs[_0xbae4('0x33')](_0x33116b[_0xbae4('0x2f')][_0xbae4('0x33')]));_0x2b0fc4[_0xbae4('0x32')]=_0x2b0fc4[_0xbae4('0x32')][_0xbae4('0x34')]?_0x2b0fc4['attributes']:_0xb95c74[_0xbae4('0x2e')];if(!_0x33116b[_0xbae4('0x2f')][_0xbae4('0x35')](_0xbae4('0x36'))){_0x2b0fc4[_0xbae4('0x37')]=qs['limit'](_0x33116b[_0xbae4('0x2f')]['limit']);_0x2b0fc4[_0xbae4('0x1d')]=qs[_0xbae4('0x1d')](_0x33116b[_0xbae4('0x2f')][_0xbae4('0x1d')]);}_0x2b0fc4['order']=qs[_0xbae4('0x38')](_0x33116b[_0xbae4('0x2f')][_0xbae4('0x38')]);_0x2b0fc4[_0xbae4('0x39')]=qs[_0xbae4('0x30')](_['pick'](_0x33116b[_0xbae4('0x2f')],_0xb95c74['filters']),_0x36c368);if(_0x33116b[_0xbae4('0x2f')][_0xbae4('0x3a')]){_0x2b0fc4['where']=_['merge'](_0x2b0fc4[_0xbae4('0x39')],{'$or':_[_0xbae4('0x2a')](_0x36c368,function(_0x36e411){if(_0x36e411['type']!==_0xbae4('0x3b')){var _0x3383ae={};_0x3383ae[_0x36e411[_0xbae4('0x28')]]={'$like':'%'+_0x33116b['query'][_0xbae4('0x3a')]+'%'};return _0x3383ae;}})});}_0x2b0fc4=_[_0xbae4('0x3c')]({},_0x2b0fc4,_0x33116b[_0xbae4('0x3d')]);var _0x140efd={'where':_0x2b0fc4[_0xbae4('0x39')]};return db['CmHopperBlack'][_0xbae4('0x1f')](_0x140efd)[_0xbae4('0x24')](function(_0x37b4b9){_0xb0e4de[_0xbae4('0x1f')]=_0x37b4b9;if(_0x33116b[_0xbae4('0x2f')][_0xbae4('0x3e')]){_0x2b0fc4[_0xbae4('0x3f')]=[{'all':!![]}];}return db[_0xbae4('0x2b')][_0xbae4('0x40')](_0x2b0fc4);})['then'](function(_0x23c35b){_0xb0e4de[_0xbae4('0x41')]=_0x23c35b;return _0xb0e4de;})[_0xbae4('0x24')](respondWithFilteredResult(_0x1e9b76,_0x2b0fc4))['catch'](handleError(_0x1e9b76,null));};exports[_0xbae4('0x42')]=function(_0x5b624a,_0xbe47c1){var _0x36b058={'raw':!![],'where':{'id':_0x5b624a[_0xbae4('0x43')]['id']}},_0x2ea2b6={};_0x2ea2b6[_0xbae4('0x2e')]=_['keys'](db['CmHopperBlack'][_0xbae4('0x2c')]);_0x2ea2b6[_0xbae4('0x2f')]=_[_0xbae4('0x44')](_0x5b624a['query']);_0x2ea2b6[_0xbae4('0x30')]=_[_0xbae4('0x31')](_0x2ea2b6[_0xbae4('0x2e')],_0x2ea2b6['query']);_0x36b058[_0xbae4('0x32')]=_[_0xbae4('0x31')](_0x2ea2b6[_0xbae4('0x2e')],qs[_0xbae4('0x33')](_0x5b624a[_0xbae4('0x2f')][_0xbae4('0x33')]));_0x36b058[_0xbae4('0x32')]=_0x36b058['attributes'][_0xbae4('0x34')]?_0x36b058[_0xbae4('0x32')]:_0x2ea2b6['model'];if(_0x5b624a[_0xbae4('0x2f')][_0xbae4('0x3e')]){_0x36b058[_0xbae4('0x3f')]=[{'all':!![]}];}_0x36b058=_[_0xbae4('0x3c')]({},_0x36b058,_0x5b624a[_0xbae4('0x3d')]);return db['CmHopperBlack'][_0xbae4('0x45')](_0x36b058)[_0xbae4('0x24')](handleEntityNotFound(_0xbe47c1,null))[_0xbae4('0x24')](respondWithResult(_0xbe47c1,null))[_0xbae4('0x46')](handleError(_0xbe47c1,null));};exports[_0xbae4('0x23')]=function(_0x12a705,_0x276999){if(_0x12a705[_0xbae4('0x47')]['id']){delete _0x12a705['body']['id'];}return db[_0xbae4('0x2b')][_0xbae4('0x45')]({'where':{'id':_0x12a705['params']['id']}})[_0xbae4('0x24')](handleEntityNotFound(_0x276999,null))['then'](saveUpdates(_0x12a705['body'],null))[_0xbae4('0x24')](respondWithResult(_0x276999,null))['catch'](handleError(_0x276999,null));};exports['destroy']=function(_0x1aaae2,_0x388848){return db[_0xbae4('0x2b')][_0xbae4('0x45')]({'where':{'id':_0x1aaae2[_0xbae4('0x43')]['id']}})[_0xbae4('0x24')](handleEntityNotFound(_0x388848,null))['then'](removeEntity(_0x388848,null))[_0xbae4('0x46')](handleError(_0x388848,null));};exports[_0xbae4('0x48')]=function(_0x3665b9,_0x4c1b83){return db[_0xbae4('0x2b')][_0xbae4('0x48')]()[_0xbae4('0x24')](respondWithResult(_0x4c1b83,null))[_0xbae4('0x46')](handleError(_0x4c1b83,null));};
\ No newline at end of file
index e48fef3..69507a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4339=['exports','cm_hopper_black','util','api','moment','request-promise','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x14a1cd,_0x262026){var _0x28fedd=function(_0x220139){while(--_0x220139){_0x14a1cd['push'](_0x14a1cd['shift']());}};_0x28fedd(++_0x262026);}(_0x4339,0x173));var _0x9433=function(_0x4edcd9,_0x3f9695){_0x4edcd9=_0x4edcd9-0x0;var _0x114efc=_0x4339[_0x4edcd9];return _0x114efc;};'use strict';var _=require('lodash');var util=require(_0x9433('0x0'));var logger=require('../../config/logger')(_0x9433('0x1'));var moment=require(_0x9433('0x2'));var BPromise=require('bluebird');var rp=require(_0x9433('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9433('0x4'));var config=require(_0x9433('0x5'));var attributes=require(_0x9433('0x6'));module[_0x9433('0x7')]=function(_0x1799ae,_0x268e7f){return _0x1799ae['define']('CmHopperBlack',attributes,{'tableName':_0x9433('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6fa=['api','bluebird','request-promise','path','rimraf','../../config/environment','define','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger'];(function(_0x52cdc3,_0x4e083f){var _0xc8d49d=function(_0x5473bc){while(--_0x5473bc){_0x52cdc3['push'](_0x52cdc3['shift']());}};_0xc8d49d(++_0x4e083f);}(_0xd6fa,0xb1));var _0xad6f=function(_0x3591d8,_0x1278f1){_0x3591d8=_0x3591d8-0x0;var _0x66c7ea=_0xd6fa[_0x3591d8];return _0x66c7ea;};'use strict';var _=require(_0xad6f('0x0'));var util=require(_0xad6f('0x1'));var logger=require(_0xad6f('0x2'))(_0xad6f('0x3'));var moment=require('moment');var BPromise=require(_0xad6f('0x4'));var rp=require(_0xad6f('0x5'));var fs=require('fs');var path=require(_0xad6f('0x6'));var rimraf=require(_0xad6f('0x7'));var config=require(_0xad6f('0x8'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x2f816b,_0x428063){return _0x2f816b[_0xad6f('0x9')](_0xad6f('0xa'),attributes,{'tableName':_0xad6f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5643380..cf6f544 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd0=['attributes','map','include','model','update','body','raw','limit','UpdateCmHopperBlack','DestroyCmHopperBlack','destroy','lodash','util','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','where'];(function(_0x57f37c,_0x509412){var _0x4b3535=function(_0x3aae68){while(--_0x3aae68){_0x57f37c['push'](_0x57f37c['shift']());}};_0x4b3535(++_0x509412);}(_0xecd0,0x1c7));var _0x0ecd=function(_0x29df9a,_0x42aff3){_0x29df9a=_0x29df9a-0x0;var _0x3a8e96=_0xecd0[_0x29df9a];return _0x3a8e96;};'use strict';var _=require(_0x0ecd('0x0'));var util=require(_0x0ecd('0x1'));var moment=require('moment');var BPromise=require(_0x0ecd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0ecd('0x3'));var logger=require('../../config/logger')(_0x0ecd('0x4'));var config=require(_0x0ecd('0x5'));var jayson=require(_0x0ecd('0x6'));var client=jayson[_0x0ecd('0x7')][_0x0ecd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c9383,_0x11b991,_0x25bdd8){return new BPromise(function(_0x3053eb,_0x2f0c00){return client[_0x0ecd('0x9')](_0x2c9383,_0x25bdd8)[_0x0ecd('0xa')](function(_0x344e31){logger[_0x0ecd('0xb')](_0x0ecd('0xc'),_0x11b991,'request\x20sent');logger[_0x0ecd('0xd')](_0x0ecd('0xe'),_0x11b991,'request\x20sent',JSON[_0x0ecd('0xf')](_0x344e31));if(_0x344e31[_0x0ecd('0x10')]){if(_0x344e31['error']['code']===0x1f4){logger[_0x0ecd('0x10')](_0x0ecd('0xc'),_0x11b991,_0x344e31[_0x0ecd('0x10')][_0x0ecd('0x11')]);return _0x2f0c00(_0x344e31[_0x0ecd('0x10')]['message']);}logger['error'](_0x0ecd('0xc'),_0x11b991,_0x344e31['error'][_0x0ecd('0x11')]);return _0x3053eb(_0x344e31[_0x0ecd('0x10')][_0x0ecd('0x11')]);}else{logger['info'](_0x0ecd('0xc'),_0x11b991,_0x0ecd('0x12'));_0x3053eb(_0x344e31[_0x0ecd('0x13')][_0x0ecd('0x11')]);}})[_0x0ecd('0x14')](function(_0x5d790b){logger[_0x0ecd('0x10')](_0x0ecd('0xc'),_0x11b991,_0x5d790b);_0x2f0c00(_0x5d790b);});});}exports[_0x0ecd('0x15')]=function(_0x17ac9b){var _0x1db238=this;return new Promise(function(_0x3d1a82,_0x7ba25a){return db[_0x0ecd('0x16')][_0x0ecd('0x17')]({'raw':_0x17ac9b['options']?_0x17ac9b[_0x0ecd('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x17ac9b['options']?_0x17ac9b['options'][_0x0ecd('0x19')]||null:null,'attributes':_0x17ac9b[_0x0ecd('0x18')]?_0x17ac9b[_0x0ecd('0x18')][_0x0ecd('0x1a')]||null:null,'limit':_0x17ac9b['options']?_0x17ac9b['options']['limit']||null:null,'include':_0x17ac9b[_0x0ecd('0x18')]?_0x17ac9b[_0x0ecd('0x18')]['include']?_[_0x0ecd('0x1b')](_0x17ac9b[_0x0ecd('0x18')][_0x0ecd('0x1c')],function(_0x8d0d26){return{'model':db[_0x8d0d26[_0x0ecd('0x1d')]],'as':_0x8d0d26['as'],'attributes':_0x8d0d26[_0x0ecd('0x1a')],'include':_0x8d0d26[_0x0ecd('0x1c')]?_[_0x0ecd('0x1b')](_0x8d0d26['include'],function(_0x33db33){return{'model':db[_0x33db33[_0x0ecd('0x1d')]],'as':_0x33db33['as'],'attributes':_0x33db33[_0x0ecd('0x1a')],'include':_0x33db33[_0x0ecd('0x1c')]?_[_0x0ecd('0x1b')](_0x33db33['include'],function(_0x30636d){return{'model':db[_0x30636d[_0x0ecd('0x1d')]],'as':_0x30636d['as'],'attributes':_0x30636d[_0x0ecd('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0ecd('0xa')](function(_0x1b750a){logger['info'](_0x0ecd('0x15'),_0x17ac9b);logger[_0x0ecd('0xd')](_0x0ecd('0x15'),_0x17ac9b,JSON[_0x0ecd('0xf')](_0x1b750a));_0x3d1a82(_0x1b750a);})[_0x0ecd('0x14')](function(_0x24e4e9){logger[_0x0ecd('0x10')](_0x0ecd('0x15'),_0x24e4e9['message'],_0x17ac9b);_0x7ba25a(_0x1db238[_0x0ecd('0x10')](0x1f4,_0x24e4e9[_0x0ecd('0x11')]));});});};exports['UpdateCmHopperBlack']=function(_0x41ec3c){var _0x45ce03=this;return new Promise(function(_0x1a71b3,_0x20042a){return db[_0x0ecd('0x16')][_0x0ecd('0x1e')](_0x41ec3c[_0x0ecd('0x1f')],{'raw':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c['options'][_0x0ecd('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c['options'][_0x0ecd('0x19')]||null:null,'attributes':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c[_0x0ecd('0x18')][_0x0ecd('0x1a')]||null:null,'limit':_0x41ec3c[_0x0ecd('0x18')]?_0x41ec3c[_0x0ecd('0x18')][_0x0ecd('0x21')]||null:null})[_0x0ecd('0xa')](function(_0x743f37){logger['info'](_0x0ecd('0x22'),_0x41ec3c);logger[_0x0ecd('0xd')](_0x0ecd('0x22'),_0x41ec3c,JSON[_0x0ecd('0xf')](_0x743f37));_0x1a71b3(_0x743f37);})[_0x0ecd('0x14')](function(_0x39cb9d){logger[_0x0ecd('0x10')](_0x0ecd('0x22'),_0x39cb9d['message'],_0x41ec3c);_0x20042a(_0x45ce03[_0x0ecd('0x10')](0x1f4,_0x39cb9d[_0x0ecd('0x11')]));});});};exports[_0x0ecd('0x23')]=function(_0x2276dd){var _0xdf4456=this;return new Promise(function(_0xf6b6e5,_0x405387){return db[_0x0ecd('0x16')][_0x0ecd('0x24')]({'where':_0x2276dd[_0x0ecd('0x18')]?_0x2276dd[_0x0ecd('0x18')]['where']||null:null})[_0x0ecd('0xa')](function(_0x55d058){logger[_0x0ecd('0xb')](_0x0ecd('0x23'),_0x2276dd);logger[_0x0ecd('0xd')](_0x0ecd('0x23'),_0x2276dd,JSON['stringify'](_0x55d058));_0xf6b6e5(_0x55d058);})[_0x0ecd('0x14')](function(_0x1d11e4){logger[_0x0ecd('0x10')](_0x0ecd('0x23'),_0x1d11e4['message'],_0x2276dd);_0x405387(_0xdf4456[_0x0ecd('0x10')](0x1f4,_0x1d11e4[_0x0ecd('0x11')]));});});};
\ No newline at end of file
+var _0x21fa=['stringify','error','code','message','info','catch','GetCmHopperBlack','findAll','options','limit','include','map','model','attributes','UpdateCmHopperBlack','CmHopperBlack','update','body','raw','destroy','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x484592,_0x375017){var _0x1f3ea6=function(_0x28c75e){while(--_0x28c75e){_0x484592['push'](_0x484592['shift']());}};_0x1f3ea6(++_0x375017);}(_0x21fa,0x174));var _0xa21f=function(_0x41f7d2,_0x49d621){_0x41f7d2=_0x41f7d2-0x0;var _0x362bad=_0x21fa[_0x41f7d2];return _0x362bad;};'use strict';var _=require('lodash');var util=require(_0xa21f('0x0'));var moment=require(_0xa21f('0x1'));var BPromise=require(_0xa21f('0x2'));var rs=require(_0xa21f('0x3'));var fs=require('fs');var Redis=require(_0xa21f('0x4'));var db=require(_0xa21f('0x5'))['db'];var utils=require(_0xa21f('0x6'));var logger=require(_0xa21f('0x7'))(_0xa21f('0x8'));var config=require(_0xa21f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa21f('0xa')][_0xa21f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2dc8d1,_0x2e7456,_0xf7ea70){return new BPromise(function(_0x4cc4b5,_0x102533){return client[_0xa21f('0xc')](_0x2dc8d1,_0xf7ea70)[_0xa21f('0xd')](function(_0x5d0f64){logger['info'](_0xa21f('0xe'),_0x2e7456,'request\x20sent');logger[_0xa21f('0xf')](_0xa21f('0x10'),_0x2e7456,_0xa21f('0x11'),JSON[_0xa21f('0x12')](_0x5d0f64));if(_0x5d0f64['error']){if(_0x5d0f64[_0xa21f('0x13')][_0xa21f('0x14')]===0x1f4){logger[_0xa21f('0x13')](_0xa21f('0xe'),_0x2e7456,_0x5d0f64[_0xa21f('0x13')][_0xa21f('0x15')]);return _0x102533(_0x5d0f64[_0xa21f('0x13')]['message']);}logger[_0xa21f('0x13')](_0xa21f('0xe'),_0x2e7456,_0x5d0f64[_0xa21f('0x13')]['message']);return _0x4cc4b5(_0x5d0f64[_0xa21f('0x13')]['message']);}else{logger[_0xa21f('0x16')](_0xa21f('0xe'),_0x2e7456,_0xa21f('0x11'));_0x4cc4b5(_0x5d0f64['result'][_0xa21f('0x15')]);}})[_0xa21f('0x17')](function(_0x21134e){logger[_0xa21f('0x13')](_0xa21f('0xe'),_0x2e7456,_0x21134e);_0x102533(_0x21134e);});});}exports[_0xa21f('0x18')]=function(_0xa0702d){var _0x3b89d8=this;return new Promise(function(_0x4c95e8,_0x1f789e){return db['CmHopperBlack'][_0xa21f('0x19')]({'raw':_0xa0702d['options']?_0xa0702d[_0xa21f('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0xa0702d[_0xa21f('0x1a')]?_0xa0702d['options']['where']||null:null,'attributes':_0xa0702d[_0xa21f('0x1a')]?_0xa0702d[_0xa21f('0x1a')]['attributes']||null:null,'limit':_0xa0702d[_0xa21f('0x1a')]?_0xa0702d['options'][_0xa21f('0x1b')]||null:null,'include':_0xa0702d['options']?_0xa0702d[_0xa21f('0x1a')][_0xa21f('0x1c')]?_[_0xa21f('0x1d')](_0xa0702d[_0xa21f('0x1a')][_0xa21f('0x1c')],function(_0x5c2c12){return{'model':db[_0x5c2c12[_0xa21f('0x1e')]],'as':_0x5c2c12['as'],'attributes':_0x5c2c12[_0xa21f('0x1f')],'include':_0x5c2c12[_0xa21f('0x1c')]?_['map'](_0x5c2c12[_0xa21f('0x1c')],function(_0x3a5ca7){return{'model':db[_0x3a5ca7[_0xa21f('0x1e')]],'as':_0x3a5ca7['as'],'attributes':_0x3a5ca7[_0xa21f('0x1f')],'include':_0x3a5ca7[_0xa21f('0x1c')]?_[_0xa21f('0x1d')](_0x3a5ca7[_0xa21f('0x1c')],function(_0x543764){return{'model':db[_0x543764['model']],'as':_0x543764['as'],'attributes':_0x543764['attributes']};}):[]};}):[]};}):[]:[]})[_0xa21f('0xd')](function(_0xb81cf1){logger[_0xa21f('0x16')]('GetCmHopperBlack',_0xa0702d);logger[_0xa21f('0xf')]('GetCmHopperBlack',_0xa0702d,JSON[_0xa21f('0x12')](_0xb81cf1));_0x4c95e8(_0xb81cf1);})['catch'](function(_0x1cc756){logger[_0xa21f('0x13')](_0xa21f('0x18'),_0x1cc756[_0xa21f('0x15')],_0xa0702d);_0x1f789e(_0x3b89d8[_0xa21f('0x13')](0x1f4,_0x1cc756['message']));});});};exports[_0xa21f('0x20')]=function(_0x1a382b){var _0x119811=this;return new Promise(function(_0x417cc8,_0x5f24c2){return db[_0xa21f('0x21')][_0xa21f('0x22')](_0x1a382b[_0xa21f('0x23')],{'raw':_0x1a382b[_0xa21f('0x1a')]?_0x1a382b['options'][_0xa21f('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a382b['options']?_0x1a382b['options']['where']||null:null,'attributes':_0x1a382b[_0xa21f('0x1a')]?_0x1a382b['options'][_0xa21f('0x1f')]||null:null,'limit':_0x1a382b[_0xa21f('0x1a')]?_0x1a382b[_0xa21f('0x1a')]['limit']||null:null})['then'](function(_0x275fa3){logger[_0xa21f('0x16')](_0xa21f('0x20'),_0x1a382b);logger[_0xa21f('0xf')]('UpdateCmHopperBlack',_0x1a382b,JSON['stringify'](_0x275fa3));_0x417cc8(_0x275fa3);})[_0xa21f('0x17')](function(_0x99b41e){logger[_0xa21f('0x13')](_0xa21f('0x20'),_0x99b41e[_0xa21f('0x15')],_0x1a382b);_0x5f24c2(_0x119811[_0xa21f('0x13')](0x1f4,_0x99b41e['message']));});});};exports['DestroyCmHopperBlack']=function(_0x49e48b){var _0x5d1375=this;return new Promise(function(_0x220648,_0x565953){return db['CmHopperBlack'][_0xa21f('0x25')]({'where':_0x49e48b[_0xa21f('0x1a')]?_0x49e48b[_0xa21f('0x1a')][_0xa21f('0x26')]||null:null})['then'](function(_0x3ce38d){logger[_0xa21f('0x16')]('DestroyCmHopperBlack',_0x49e48b);logger[_0xa21f('0xf')]('DestroyCmHopperBlack',_0x49e48b,JSON['stringify'](_0x3ce38d));_0x220648(_0x3ce38d);})['catch'](function(_0x79aacd){logger[_0xa21f('0x13')]('DestroyCmHopperBlack',_0x79aacd['message'],_0x49e48b);_0x565953(_0x5d1375['error'](0x1f4,_0x79aacd[_0xa21f('0x15')]));});});};
\ No newline at end of file
index 692bcc1..e8acd25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['/describe','describe','/:id','show','put','update','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0xd117,0x182));var _0x7d11=function(_0xa28b1a,_0x384f4b){_0xa28b1a=_0xa28b1a-0x0;var _0x4c9b78=_0xd117[_0xa28b1a];return _0x4c9b78;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x13')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf072=['../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','show','put','delete','destroy','multer','util','path','express','fs-extra'];(function(_0x56f836,_0x509d65){var _0x3df82d=function(_0x37dbc1){while(--_0x37dbc1){_0x56f836['push'](_0x56f836['shift']());}};_0x3df82d(++_0x509d65);}(_0xf072,0x1cf));var _0x2f07=function(_0x52b8cb,_0x4bda8d){_0x52b8cb=_0x52b8cb-0x0;var _0x13a961=_0xf072[_0x52b8cb];return _0x13a961;};'use strict';var multer=require(_0x2f07('0x0'));var util=require(_0x2f07('0x1'));var path=require(_0x2f07('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f07('0x3'));var router=express['Router']();var fs_extra=require(_0x2f07('0x4'));var auth=require(_0x2f07('0x5'));var interaction=require(_0x2f07('0x6'));var config=require('../../config/environment');var controller=require(_0x2f07('0x7'));router[_0x2f07('0x8')]('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0xa')]);router[_0x2f07('0x8')](_0x2f07('0xb'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xc')]);router[_0x2f07('0x8')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xe')]);router[_0x2f07('0xf')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller['update']);router[_0x2f07('0x10')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x11')]);module['exports']=router;
\ No newline at end of file
index ff59b3b..46ad3cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e9c=['BOOLEAN','sequelize','moment','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','diff','seconds'];(function(_0xb81ad8,_0x5bdfdb){var _0xaa6b8e=function(_0x36043f){while(--_0x36043f){_0xb81ad8['push'](_0xb81ad8['shift']());}};_0xaa6b8e(++_0x5bdfdb);}(_0x7e9c,0x135));var _0xc7e9=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x7e9c[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require(_0xc7e9('0x0'));var moment=require(_0xc7e9('0x1'));module['exports']={'state':{'type':Sequelize[_0xc7e9('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xc7e9('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xc7e9('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xc7e9('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc7e9('0x3')]},'calleridname':{'type':Sequelize[_0xc7e9('0x3')]},'starttime':{'type':Sequelize[_0xc7e9('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xc7e9('0x4')]},'droptime':{'type':Sequelize[_0xc7e9('0x4')]},'endtime':{'type':Sequelize[_0xc7e9('0x4')]},'ringtime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xc7e9('0x3')]},'campaign':{'type':Sequelize[_0xc7e9('0x3')]},'campaigntype':{'type':Sequelize[_0xc7e9('0x3')]},'membername':{'type':Sequelize[_0xc7e9('0x3')]},'reason':{'type':Sequelize[_0xc7e9('0x3')]},'disposition':{'type':Sequelize[_0xc7e9('0x3')]},'secondDisposition':{'type':Sequelize[_0xc7e9('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x264861){var _0x254144=this[_0xc7e9('0x5')](_0xc7e9('0x6'));if(_0x254144&&_0x264861){this[_0xc7e9('0x7')]('followuptime',moment(_0x264861)[_0xc7e9('0x8')](moment(_0x254144),_0xc7e9('0x9')));}}},'amd':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xc7e9('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc7e9('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0xc7e9('0x4')]},'recallme':{'type':Sequelize[_0xc7e9('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xc7e9('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc7e9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x71cb=['setDataValue','followuptime','seconds','BOOLEAN','moment','exports','INTEGER','STRING','DATE','endtime'];(function(_0x453e4e,_0x49bc30){var _0x19e3ca=function(_0x24b98c){while(--_0x24b98c){_0x453e4e['push'](_0x453e4e['shift']());}};_0x19e3ca(++_0x49bc30);}(_0x71cb,0x14e));var _0xb71c=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x71cb[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb71c('0x0'));module[_0xb71c('0x1')]={'state':{'type':Sequelize[_0xb71c('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xb71c('0x3')]},'scheduledat':{'type':Sequelize[_0xb71c('0x4')]},'countbusyretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xb71c('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xb71c('0x3')]},'originatecalleridname':{'type':Sequelize[_0xb71c('0x3')]},'calleridnum':{'type':Sequelize[_0xb71c('0x3')]},'calleridname':{'type':Sequelize[_0xb71c('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xb71c('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xb71c('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xb71c('0x3')]},'campaigntype':{'type':Sequelize[_0xb71c('0x3')]},'membername':{'type':Sequelize[_0xb71c('0x3')]},'reason':{'type':Sequelize[_0xb71c('0x3')]},'disposition':{'type':Sequelize[_0xb71c('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb71c('0x3')]},'dispositionat':{'type':Sequelize[_0xb71c('0x4')],'set':function(_0x1773ed){var _0x1642f6=this['getDataValue'](_0xb71c('0x5'));if(_0x1642f6&&_0x1773ed){this[_0xb71c('0x6')](_0xb71c('0x7'),moment(_0x1773ed)['diff'](moment(_0x1642f6),_0xb71c('0x8')));}}},'amd':{'type':Sequelize[_0xb71c('0x9')],'defaultValue':![]},'fax':{'type':Sequelize[_0xb71c('0x9')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xb71c('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xb71c('0x4')]},'deleted':{'type':Sequelize[_0xb71c('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb71c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 546782c..7773160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['filter','VIRTUAL','options','include','findAll','rows','show','length','includeAll','merge','find','catch','describe','body','uniqueid','params','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','moveContactsQueueCampaignHopperFinal','into','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','VoiceQueueId\x20=\x20?','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','cm_hopper_final','state\x20=\x204','group','Campaign','cm_hopper','CampaignId','CampaignId\x20=\x20?','state\x20=\x20?','calleridnum','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x3f94f9,_0x42774b){var _0x46f84f=function(_0xa080d8){while(--_0xa080d8){_0x3f94f9['push'](_0x3f94f9['shift']());}};_0x46f84f(++_0x42774b);}(_0x687b,0x14a));var _0xb687=function(_0x5e3b4d,_0x292f10){_0x5e3b4d=_0x5e3b4d-0x0;var _0x3a5e56=_0x687b[_0x5e3b4d];return _0x3a5e56;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];function respondWithStatusCode(_0x12a0be,_0x4f9c19){_0x4f9c19=_0x4f9c19||0xcc;return function(_0x4c97ed){if(_0x4c97ed){return _0x12a0be[_0xb687('0x1c')](_0x4f9c19);}return _0x12a0be[_0xb687('0x1d')](_0x4f9c19)['end']();};}function respondWithResult(_0x108fd0,_0x2f1ac0){_0x2f1ac0=_0x2f1ac0||0xc8;return function(_0x1f1f35){if(_0x1f1f35){return _0x108fd0[_0xb687('0x1d')](_0x2f1ac0)[_0xb687('0x1e')](_0x1f1f35);}};}function respondWithFilteredResult(_0x3ab914,_0x30622f){return function(_0x141375){if(_0x141375){var _0x263085=typeof _0x30622f[_0xb687('0x1f')]===_0xb687('0x20')&&typeof _0x30622f[_0xb687('0x21')]==='undefined';var _0x214b06=_0x141375[_0xb687('0x22')];var _0x30d370=_0x263085?0x0:_0x30622f['offset'];var _0x48958d=_0x263085?_0x141375[_0xb687('0x22')]:_0x30622f[_0xb687('0x1f')]+_0x30622f[_0xb687('0x21')];var _0x4b593b;if(_0x48958d>=_0x214b06){_0x48958d=_0x214b06;_0x4b593b=0xc8;}else{_0x4b593b=0xce;}_0x3ab914[_0xb687('0x1d')](_0x4b593b);return _0x3ab914['set'](_0xb687('0x23'),_0x30d370+'-'+_0x48958d+'/'+_0x214b06)[_0xb687('0x1e')](_0x141375);}return null;};}function patchUpdates(_0x170dc0){return function(_0x44bd0b){try{jsonpatch['apply'](_0x44bd0b,_0x170dc0,!![]);}catch(_0x3a73d5){return BPromise['reject'](_0x3a73d5);}return _0x44bd0b[_0xb687('0x24')]();};}function saveUpdates(_0x90e892,_0x274241){return function(_0x546fde){if(_0x546fde){return _0x546fde[_0xb687('0x25')](_0x90e892)[_0xb687('0x26')](function(_0xa95e91){return _0xa95e91;});}return null;};}function removeEntity(_0x16cdcb,_0xbf6c58){return function(_0x38866c){if(_0x38866c){return _0x38866c[_0xb687('0x27')]()[_0xb687('0x26')](function(){_0x16cdcb['status'](0xcc)[_0xb687('0x28')]();});}};}function handleEntityNotFound(_0x129347,_0x1c1585){return function(_0x1a0261){if(!_0x1a0261){_0x129347[_0xb687('0x1c')](0x194);}return _0x1a0261;};}function handleError(_0x4136c9,_0x17ff2b){_0x17ff2b=_0x17ff2b||0x1f4;return function(_0x3cb2f2){logger[_0xb687('0x29')](_0x3cb2f2[_0xb687('0x2a')]);if(_0x3cb2f2['name']){delete _0x3cb2f2[_0xb687('0x2b')];}_0x4136c9[_0xb687('0x1d')](_0x17ff2b)[_0xb687('0x2c')](_0x3cb2f2);};}exports[_0xb687('0x2d')]=function(_0x2e5c8d,_0x173c58){var _0x4e9a06={},_0x28b69a={},_0x5143af={'count':0x0,'rows':[]};var _0x360429=_[_0xb687('0x2e')](db[_0xb687('0x2f')][_0xb687('0x30')],function(_0x1ad3ef){return{'name':_0x1ad3ef[_0xb687('0x31')],'type':_0x1ad3ef[_0xb687('0x32')]['key']};});_0x28b69a[_0xb687('0x33')]=_[_0xb687('0x2e')](_0x360429,_0xb687('0x2b'));_0x28b69a[_0xb687('0x34')]=_[_0xb687('0x35')](_0x2e5c8d[_0xb687('0x34')]);_0x28b69a[_0xb687('0x36')]=_[_0xb687('0x37')](_0x28b69a[_0xb687('0x33')],_0x28b69a[_0xb687('0x34')]);_0x4e9a06[_0xb687('0x38')]=_['intersection'](_0x28b69a['model'],qs[_0xb687('0x39')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x39')]));_0x4e9a06[_0xb687('0x38')]=_0x4e9a06['attributes']['length']?_0x4e9a06[_0xb687('0x38')]:_0x28b69a[_0xb687('0x33')];if(!_0x2e5c8d['query'][_0xb687('0x3a')](_0xb687('0x3b'))){_0x4e9a06['limit']=qs[_0xb687('0x21')](_0x2e5c8d['query'][_0xb687('0x21')]);_0x4e9a06[_0xb687('0x1f')]=qs[_0xb687('0x1f')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x1f')]);}_0x4e9a06[_0xb687('0x3c')]=qs['sort'](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3d')]);_0x4e9a06[_0xb687('0x3e')]=qs[_0xb687('0x36')](_['pick'](_0x2e5c8d[_0xb687('0x34')],_0x28b69a[_0xb687('0x36')]),_0x360429);if(_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3f')]){_0x4e9a06[_0xb687('0x3e')]=_['merge'](_0x4e9a06[_0xb687('0x3e')],{'$or':_[_0xb687('0x2e')](_0x360429,function(_0x24c013){if(_0x24c013[_0xb687('0x32')]!==_0xb687('0x40')){var _0x29cf09={};_0x29cf09[_0x24c013['name']]={'$like':'%'+_0x2e5c8d['query'][_0xb687('0x3f')]+'%'};return _0x29cf09;}})});}_0x4e9a06=_['merge']({},_0x4e9a06,_0x2e5c8d[_0xb687('0x41')]);var _0x2f4550={'where':_0x4e9a06['where']};return db[_0xb687('0x2f')][_0xb687('0x22')](_0x2f4550)['then'](function(_0x394b56){_0x5143af[_0xb687('0x22')]=_0x394b56;if(_0x2e5c8d[_0xb687('0x34')]['includeAll']){_0x4e9a06[_0xb687('0x42')]=[{'all':!![]}];}return db[_0xb687('0x2f')][_0xb687('0x43')](_0x4e9a06);})[_0xb687('0x26')](function(_0x140388){_0x5143af[_0xb687('0x44')]=_0x140388;return _0x5143af;})[_0xb687('0x26')](respondWithFilteredResult(_0x173c58,_0x4e9a06))['catch'](handleError(_0x173c58,null));};exports[_0xb687('0x45')]=function(_0x4cf6ad,_0x50fdb7){var _0xa3a9e0={'raw':!![],'where':{'id':_0x4cf6ad['params']['id']}},_0x430364={};_0x430364[_0xb687('0x33')]=_['keys'](db[_0xb687('0x2f')][_0xb687('0x30')]);_0x430364['query']=_[_0xb687('0x35')](_0x4cf6ad[_0xb687('0x34')]);_0x430364['filters']=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],_0x430364[_0xb687('0x34')]);_0xa3a9e0[_0xb687('0x38')]=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],qs[_0xb687('0x39')](_0x4cf6ad[_0xb687('0x34')][_0xb687('0x39')]));_0xa3a9e0[_0xb687('0x38')]=_0xa3a9e0[_0xb687('0x38')][_0xb687('0x46')]?_0xa3a9e0['attributes']:_0x430364[_0xb687('0x33')];if(_0x4cf6ad['query'][_0xb687('0x47')]){_0xa3a9e0[_0xb687('0x42')]=[{'all':!![]}];}_0xa3a9e0=_[_0xb687('0x48')]({},_0xa3a9e0,_0x4cf6ad[_0xb687('0x41')]);return db[_0xb687('0x2f')][_0xb687('0x49')](_0xa3a9e0)['then'](handleEntityNotFound(_0x50fdb7,null))['then'](respondWithResult(_0x50fdb7,null))[_0xb687('0x4a')](handleError(_0x50fdb7,null));};exports[_0xb687('0x4b')]=function(_0x40558a,_0x4f3069){return db['CmHopperFinal'][_0xb687('0x4b')]()[_0xb687('0x26')](respondWithResult(_0x4f3069,null))[_0xb687('0x4a')](handleError(_0x4f3069,null));};exports[_0xb687('0x25')]=function(_0x535c00,_0x33a0b0){if(_0x535c00[_0xb687('0x4c')][_0xb687('0x4d')]){delete _0x535c00[_0xb687('0x4c')]['uniqueid'];}return db['CmHopperFinal'][_0xb687('0x49')]({'where':{'uniqueid':_0x535c00[_0xb687('0x4e')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x33a0b0,null))['then'](saveUpdates(_0x535c00['body'],null))[_0xb687('0x26')](respondWithResult(_0x33a0b0,null))[_0xb687('0x4a')](handleError(_0x33a0b0,null));};exports[_0xb687('0x4f')]=function(_0x22e618,_0x34205d,_0x1fb31a){return db[_0xb687('0x2f')][_0xb687('0x43')]({'raw':![],'where':{'VoiceQueueId':_0x22e618['params']['id']},'attributes':[[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x53')))),_0xb687('0x54')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x55')))),_0xb687('0x56')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal'](_0xb687('0x57')))),_0xb687('0x58')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xb687('0x59')],[db['sequelize']['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize']['literal'](_0xb687('0x5a')))),_0xb687('0x5b')],[db['sequelize']['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')]['literal'](_0xb687('0x5c')))),'reCallContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')]('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0xb687('0x26')](handleEntityNotFound(_0x34205d,null))['then'](respondWithResult(_0x34205d,null))['catch'](handleError(_0x34205d,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5d266c,_0x1cc507,_0x1db4ca){return db[_0xb687('0x2f')][_0xb687('0x43')]({'raw':![],'where':{'CampaignId':_0x5d266c[_0xb687('0x4e')]['id']},'attributes':[[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5d')))),'noSuchContacts'],[db['sequelize']['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x53')))),_0xb687('0x54')],[db[_0xb687('0x50')]['fn']('COUNT',db[_0xb687('0x50')]['fn']('IF',db['sequelize'][_0xb687('0x52')](_0xb687('0x55')))),_0xb687('0x56')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')]['literal'](_0xb687('0x57')))),_0xb687('0x58')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db['sequelize'][_0xb687('0x52')](_0xb687('0x5e')))),_0xb687('0x59')],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5a')))),_0xb687('0x5b')],[db[_0xb687('0x50')]['fn']('COUNT',db[_0xb687('0x50')]['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5c')))),'reCallContacts'],[db[_0xb687('0x50')]['fn'](_0xb687('0x51'),db['sequelize']['fn']('IF',db[_0xb687('0x50')][_0xb687('0x52')](_0xb687('0x5f')))),'answeringMachine']]})[_0xb687('0x26')](handleEntityNotFound(_0x1cc507,null))[_0xb687('0x26')](respondWithResult(_0x1cc507,null))['catch'](handleError(_0x1cc507,null));};exports[_0xb687('0x60')]=function(_0x5449c4,_0x2c2add,_0x431cc5){return db['VoiceQueue'][_0xb687('0x49')]({'where':{'id':_0x5449c4[_0xb687('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2c2add,null))[_0xb687('0x26')](function(_0x1736ef){var _0x52285e;if(_0x1736ef){_0x52285e=squel['insert']()[_0xb687('0x61')]('cm_hopper')[_0xb687('0x62')]([_0xb687('0x63'),_0xb687('0x64'),_0xb687('0x65'),_0xb687('0x66'),_0xb687('0x67'),_0xb687('0x68'),_0xb687('0x69')],squel['select']()[_0xb687('0x6a')](_0xb687('0x6b'),_0xb687('0x63'))[_0xb687('0x6a')](_0xb687('0x6c'),_0xb687('0x64'))['field'](_0xb687('0x6d'),_0xb687('0x65'))['field'](_0xb687('0x6e'),_0xb687('0x66'))[_0xb687('0x6a')](_0xb687('0x6f'),'VoiceQueueId')[_0xb687('0x6a')]('NOW()','createdAt')[_0xb687('0x6a')]('NOW()','updatedAt')[_0xb687('0x70')]('cm_hopper_final')[_0xb687('0x3e')](_0xb687('0x71'),_0x5449c4['params']['id'][_0xb687('0x72')]())[_0xb687('0x3e')]('state\x20=\x20?',_0x5449c4[_0xb687('0x4c')][_0xb687('0x73')][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x74'))[_0xb687('0x3e')](_0xb687('0x75'),squel[_0xb687('0x76')]()[_0xb687('0x6a')](_0xb687('0x63'))[_0xb687('0x70')]('cm_hopper')[_0xb687('0x3e')]('VoiceQueueId\x20=\x20?',_0x5449c4['params']['id'][_0xb687('0x72')]()))[_0xb687('0x3e')](_0xb687('0x75'),squel[_0xb687('0x76')]()[_0xb687('0x6a')]('calleridnum')['from'](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x71'),_0x5449c4[_0xb687('0x4e')]['id']['toString']())[_0xb687('0x3e')](_0xb687('0x78')))[_0xb687('0x79')](_0xb687('0x65')))[_0xb687('0x72')]();return db[_0xb687('0x50')][_0xb687('0x34')](_0x52285e);}return[];})[_0xb687('0x26')](respondWithResult(_0x2c2add,null))[_0xb687('0x4a')](handleError(_0x2c2add,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x25f5c3,_0x33d1fc,_0x207953){return db[_0xb687('0x7a')][_0xb687('0x49')]({'where':{'id':_0x25f5c3['params']['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x33d1fc,null))[_0xb687('0x26')](function(_0x48bbee){var _0x19ac6d;if(_0x48bbee){_0x19ac6d=squel['insert']()[_0xb687('0x61')](_0xb687('0x7b'))['fromQuery']([_0xb687('0x63'),_0xb687('0x64'),'ContactId',_0xb687('0x66'),_0xb687('0x7c'),_0xb687('0x68'),_0xb687('0x69')],squel[_0xb687('0x76')]()[_0xb687('0x6a')]('ANY_VALUE(calleridnum)',_0xb687('0x63'))[_0xb687('0x6a')](_0xb687('0x6c'),_0xb687('0x64'))[_0xb687('0x6a')](_0xb687('0x6d'),_0xb687('0x65'))[_0xb687('0x6a')](_0xb687('0x6e'),_0xb687('0x66'))[_0xb687('0x6a')]('ANY_VALUE(CampaignId)',_0xb687('0x7c'))['field'](_0xb687('0x6c'),_0xb687('0x68'))['field']('NOW()',_0xb687('0x69'))[_0xb687('0x70')](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3[_0xb687('0x4e')]['id'][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x7e'),_0x25f5c3[_0xb687('0x4c')][_0xb687('0x73')][_0xb687('0x72')]())[_0xb687('0x3e')](_0xb687('0x74'))[_0xb687('0x3e')](_0xb687('0x75'),squel['select']()['field'](_0xb687('0x63'))['from']('cm_hopper')[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3['params']['id'][_0xb687('0x72')]()))[_0xb687('0x3e')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xb687('0x76')]()[_0xb687('0x6a')](_0xb687('0x7f'))[_0xb687('0x70')](_0xb687('0x77'))[_0xb687('0x3e')](_0xb687('0x7d'),_0x25f5c3[_0xb687('0x4e')]['id'][_0xb687('0x72')]())['where'](_0xb687('0x78')))[_0xb687('0x79')]('ContactId'))[_0xb687('0x72')]();return db['sequelize'][_0xb687('0x34')](_0x19ac6d);}return[];})[_0xb687('0x26')](respondWithResult(_0x33d1fc,null))['catch'](handleError(_0x33d1fc,null));};exports[_0xb687('0x80')]=function(_0x20e46a,_0x1c389f,_0x45d0ab){return db[_0xb687('0x81')][_0xb687('0x82')]({'where':{'VoiceQueueId':_0x20e46a[_0xb687('0x4c')]['VoiceQueueId'],'CampaignId':_0x20e46a['body'][_0xb687('0x7c')],'ContactId':_0x20e46a['body'][_0xb687('0x65')]}})[_0xb687('0x26')](handleEntityNotFound(_0x1c389f,null))[_0xb687('0x26')](function(_0x312529){if(_0x312529){return _0x312529;}return null;})['then'](respondWithResult(_0x1c389f,null))[_0xb687('0x4a')](handleError(_0x1c389f,null));};
\ No newline at end of file
+var _0xacf4=['reject','update','then','destroy','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','intersection','length','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','select','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','NOW()','CampaignId\x20=\x20?','checkContactHopper','CmHopper','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x42c9f5,_0x5c1481){var _0x1d25cb=function(_0x107a3b){while(--_0x107a3b){_0x42c9f5['push'](_0x42c9f5['shift']());}};_0x1d25cb(++_0x5c1481);}(_0xacf4,0xe7));var _0x4acf=function(_0x22e204,_0x35e723){_0x22e204=_0x22e204-0x0;var _0x2b577f=_0xacf4[_0x22e204];return _0x2b577f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4acf('0x0'));var jsonpatch=require(_0x4acf('0x1'));var rp=require(_0x4acf('0x2'));var moment=require(_0x4acf('0x3'));var BPromise=require(_0x4acf('0x4'));var Mustache=require(_0x4acf('0x5'));var util=require(_0x4acf('0x6'));var path=require('path');var sox=require(_0x4acf('0x7'));var csv=require(_0x4acf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4acf('0x9'));var _=require(_0x4acf('0xa'));var squel=require(_0x4acf('0xb'));var crypto=require(_0x4acf('0xc'));var jsforce=require(_0x4acf('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4acf('0xe'));var Papa=require('papaparse');var Redis=require(_0x4acf('0xf'));var authService=require(_0x4acf('0x10'));var qs=require(_0x4acf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4acf('0x12'));var logger=require(_0x4acf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x4acf('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1783d2,_0x979f49){_0x979f49=_0x979f49||0xcc;return function(_0x3734e1){if(_0x3734e1){return _0x1783d2[_0x4acf('0x15')](_0x979f49);}return _0x1783d2[_0x4acf('0x16')](_0x979f49)[_0x4acf('0x17')]();};}function respondWithResult(_0x7ab3ea,_0x15386a){_0x15386a=_0x15386a||0xc8;return function(_0x2025ca){if(_0x2025ca){return _0x7ab3ea[_0x4acf('0x16')](_0x15386a)[_0x4acf('0x18')](_0x2025ca);}};}function respondWithFilteredResult(_0x5f0260,_0x1b584a){return function(_0x57d8e0){if(_0x57d8e0){var _0x34cec1=typeof _0x1b584a[_0x4acf('0x19')]===_0x4acf('0x1a')&&typeof _0x1b584a['limit']==='undefined';var _0x13d10e=_0x57d8e0[_0x4acf('0x1b')];var _0x240c00=_0x34cec1?0x0:_0x1b584a['offset'];var _0x2a678b=_0x34cec1?_0x57d8e0[_0x4acf('0x1b')]:_0x1b584a[_0x4acf('0x19')]+_0x1b584a[_0x4acf('0x1c')];var _0x2f0cec;if(_0x2a678b>=_0x13d10e){_0x2a678b=_0x13d10e;_0x2f0cec=0xc8;}else{_0x2f0cec=0xce;}_0x5f0260[_0x4acf('0x16')](_0x2f0cec);return _0x5f0260[_0x4acf('0x1d')](_0x4acf('0x1e'),_0x240c00+'-'+_0x2a678b+'/'+_0x13d10e)[_0x4acf('0x18')](_0x57d8e0);}return null;};}function patchUpdates(_0x2feb89){return function(_0x1a3118){try{jsonpatch['apply'](_0x1a3118,_0x2feb89,!![]);}catch(_0x28d698){return BPromise[_0x4acf('0x1f')](_0x28d698);}return _0x1a3118['save']();};}function saveUpdates(_0x41e5d2,_0x17775f){return function(_0x569d9e){if(_0x569d9e){return _0x569d9e[_0x4acf('0x20')](_0x41e5d2)[_0x4acf('0x21')](function(_0x433b7a){return _0x433b7a;});}return null;};}function removeEntity(_0x454555,_0x53885f){return function(_0x1a2286){if(_0x1a2286){return _0x1a2286[_0x4acf('0x22')]()['then'](function(){_0x454555[_0x4acf('0x16')](0xcc)[_0x4acf('0x17')]();});}};}function handleEntityNotFound(_0x52a84a,_0x126522){return function(_0x7ebb){if(!_0x7ebb){_0x52a84a[_0x4acf('0x15')](0x194);}return _0x7ebb;};}function handleError(_0x16458f,_0x571a30){_0x571a30=_0x571a30||0x1f4;return function(_0x50236d){logger[_0x4acf('0x23')](_0x50236d[_0x4acf('0x24')]);if(_0x50236d[_0x4acf('0x25')]){delete _0x50236d[_0x4acf('0x25')];}_0x16458f[_0x4acf('0x16')](_0x571a30)[_0x4acf('0x26')](_0x50236d);};}exports[_0x4acf('0x27')]=function(_0x7a1e79,_0x382c41){var _0x2a3830={},_0x57989e={},_0x3521c2={'count':0x0,'rows':[]};var _0x3f5614=_[_0x4acf('0x28')](db[_0x4acf('0x29')][_0x4acf('0x2a')],function(_0x28570f){return{'name':_0x28570f[_0x4acf('0x2b')],'type':_0x28570f['type'][_0x4acf('0x2c')]};});_0x57989e[_0x4acf('0x2d')]=_[_0x4acf('0x28')](_0x3f5614,'name');_0x57989e[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0x7a1e79[_0x4acf('0x2e')]);_0x57989e[_0x4acf('0x30')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],_0x57989e[_0x4acf('0x2e')]);_0x2a3830[_0x4acf('0x31')]=_['intersection'](_0x57989e[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x32')]));_0x2a3830[_0x4acf('0x31')]=_0x2a3830[_0x4acf('0x31')]['length']?_0x2a3830[_0x4acf('0x31')]:_0x57989e[_0x4acf('0x2d')];if(!_0x7a1e79['query'][_0x4acf('0x33')]('nolimit')){_0x2a3830['limit']=qs['limit'](_0x7a1e79['query']['limit']);_0x2a3830['offset']=qs['offset'](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x19')]);}_0x2a3830['order']=qs[_0x4acf('0x34')](_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x34')]);_0x2a3830[_0x4acf('0x35')]=qs[_0x4acf('0x30')](_[_0x4acf('0x36')](_0x7a1e79[_0x4acf('0x2e')],_0x57989e[_0x4acf('0x30')]),_0x3f5614);if(_0x7a1e79[_0x4acf('0x2e')][_0x4acf('0x37')]){_0x2a3830['where']=_['merge'](_0x2a3830[_0x4acf('0x35')],{'$or':_[_0x4acf('0x28')](_0x3f5614,function(_0x4859b6){if(_0x4859b6[_0x4acf('0x38')]!==_0x4acf('0x39')){var _0x43a2ea={};_0x43a2ea[_0x4859b6[_0x4acf('0x25')]]={'$like':'%'+_0x7a1e79['query']['filter']+'%'};return _0x43a2ea;}})});}_0x2a3830=_[_0x4acf('0x3a')]({},_0x2a3830,_0x7a1e79[_0x4acf('0x3b')]);var _0x3d5529={'where':_0x2a3830[_0x4acf('0x35')]};return db['CmHopperFinal'][_0x4acf('0x1b')](_0x3d5529)[_0x4acf('0x21')](function(_0x4e9370){_0x3521c2['count']=_0x4e9370;if(_0x7a1e79['query']['includeAll']){_0x2a3830[_0x4acf('0x3c')]=[{'all':!![]}];}return db[_0x4acf('0x29')][_0x4acf('0x3d')](_0x2a3830);})['then'](function(_0x1015e3){_0x3521c2[_0x4acf('0x3e')]=_0x1015e3;return _0x3521c2;})[_0x4acf('0x21')](respondWithFilteredResult(_0x382c41,_0x2a3830))[_0x4acf('0x3f')](handleError(_0x382c41,null));};exports[_0x4acf('0x40')]=function(_0xea75e4,_0x7cf2a){var _0x17d5e9={'raw':!![],'where':{'id':_0xea75e4[_0x4acf('0x41')]['id']}},_0x461547={};_0x461547[_0x4acf('0x2d')]=_['keys'](db[_0x4acf('0x29')][_0x4acf('0x2a')]);_0x461547[_0x4acf('0x2e')]=_[_0x4acf('0x2f')](_0xea75e4[_0x4acf('0x2e')]);_0x461547['filters']=_['intersection'](_0x461547[_0x4acf('0x2d')],_0x461547[_0x4acf('0x2e')]);_0x17d5e9[_0x4acf('0x31')]=_[_0x4acf('0x42')](_0x461547[_0x4acf('0x2d')],qs[_0x4acf('0x32')](_0xea75e4['query'][_0x4acf('0x32')]));_0x17d5e9['attributes']=_0x17d5e9[_0x4acf('0x31')][_0x4acf('0x43')]?_0x17d5e9['attributes']:_0x461547['model'];if(_0xea75e4[_0x4acf('0x2e')][_0x4acf('0x44')]){_0x17d5e9[_0x4acf('0x3c')]=[{'all':!![]}];}_0x17d5e9=_[_0x4acf('0x3a')]({},_0x17d5e9,_0xea75e4['options']);return db[_0x4acf('0x29')][_0x4acf('0x45')](_0x17d5e9)[_0x4acf('0x21')](handleEntityNotFound(_0x7cf2a,null))[_0x4acf('0x21')](respondWithResult(_0x7cf2a,null))[_0x4acf('0x3f')](handleError(_0x7cf2a,null));};exports[_0x4acf('0x46')]=function(_0x1bd7d0,_0x2d946c){return db['CmHopperFinal']['describe']()[_0x4acf('0x21')](respondWithResult(_0x2d946c,null))[_0x4acf('0x3f')](handleError(_0x2d946c,null));};exports[_0x4acf('0x20')]=function(_0x33bc52,_0x287406){if(_0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')]){delete _0x33bc52[_0x4acf('0x47')][_0x4acf('0x48')];}return db[_0x4acf('0x29')][_0x4acf('0x45')]({'where':{'uniqueid':_0x33bc52[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x287406,null))[_0x4acf('0x21')](saveUpdates(_0x33bc52[_0x4acf('0x47')],null))[_0x4acf('0x21')](respondWithResult(_0x287406,null))[_0x4acf('0x3f')](handleError(_0x287406,null));};exports[_0x4acf('0x49')]=function(_0x3cf54a,_0x2785b9,_0x2d0561){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'VoiceQueueId':_0x3cf54a[_0x4acf('0x41')]['id']},'attributes':[[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x200,\x201,\x20null'))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),'busyContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x51')))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x4acf('0x53')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x54')))),_0x4acf('0x55')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')]('`state`\x20=\x2022,\x201,\x20null'))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn']('COUNT',db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal'](_0x4acf('0x57')))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x2785b9,null))['then'](respondWithResult(_0x2785b9,null))[_0x4acf('0x3f')](handleError(_0x2785b9,null));};exports[_0x4acf('0x59')]=function(_0xb5bd81,_0x452ee6,_0x54b093){return db[_0x4acf('0x29')][_0x4acf('0x3d')]({'raw':![],'where':{'CampaignId':_0xb5bd81[_0x4acf('0x41')]['id']},'attributes':[[db['sequelize']['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x5a')))),_0x4acf('0x4d')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x4e')))),_0x4acf('0x4f')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db[_0x4acf('0x4a')][_0x4acf('0x4c')](_0x4acf('0x50')))),_0x4acf('0x5b')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x4acf('0x52')],[db['sequelize']['fn'](_0x4acf('0x4b'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x4acf('0x5c')))),_0x4acf('0x53')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db[_0x4acf('0x4a')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')](_0x4acf('0x5d')))),_0x4acf('0x56')],[db[_0x4acf('0x4a')]['fn'](_0x4acf('0x4b'),db[_0x4acf('0x4a')]['fn']('IF',db['sequelize'][_0x4acf('0x4c')]('`state`\x20=\x2019,\x201,\x20null'))),_0x4acf('0x58')]]})[_0x4acf('0x21')](handleEntityNotFound(_0x452ee6,null))[_0x4acf('0x21')](respondWithResult(_0x452ee6,null))[_0x4acf('0x3f')](handleError(_0x452ee6,null));};exports[_0x4acf('0x5e')]=function(_0x173655,_0x1f2dbc,_0xc0d942){return db[_0x4acf('0x5f')][_0x4acf('0x45')]({'where':{'id':_0x173655[_0x4acf('0x41')]['id']}})[_0x4acf('0x21')](handleEntityNotFound(_0x1f2dbc,null))['then'](function(_0x11f356){var _0xacca91;if(_0x11f356){_0xacca91=squel[_0x4acf('0x60')]()[_0x4acf('0x61')](_0x4acf('0x62'))[_0x4acf('0x63')]([_0x4acf('0x64'),_0x4acf('0x65'),_0x4acf('0x66'),_0x4acf('0x67'),'VoiceQueueId',_0x4acf('0x68'),_0x4acf('0x69')],squel['select']()[_0x4acf('0x6a')](_0x4acf('0x6b'),'phone')[_0x4acf('0x6a')]('NOW()','scheduledAt')[_0x4acf('0x6a')]('ANY_VALUE(ContactId)',_0x4acf('0x66'))[_0x4acf('0x6a')](_0x4acf('0x6c'),_0x4acf('0x67'))['field'](_0x4acf('0x6d'),_0x4acf('0x6e'))['field']('NOW()','createdAt')[_0x4acf('0x6a')]('NOW()',_0x4acf('0x69'))[_0x4acf('0x6f')](_0x4acf('0x70'))['where'](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())[_0x4acf('0x35')](_0x4acf('0x72'),_0x173655['body'][_0x4acf('0x73')][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel['select']()[_0x4acf('0x6a')]('phone')[_0x4acf('0x6f')](_0x4acf('0x62'))['where']('VoiceQueueId\x20=\x20?',_0x173655['params']['id'][_0x4acf('0x74')]()))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x71'),_0x173655[_0x4acf('0x41')]['id']['toString']())['where'](_0x4acf('0x77')))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0xacca91);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1f2dbc,null))[_0x4acf('0x3f')](handleError(_0x1f2dbc,null));};exports[_0x4acf('0x79')]=function(_0x453c6d,_0x1a82e7,_0x3d02c7){return db[_0x4acf('0x7a')]['find']({'where':{'id':_0x453c6d[_0x4acf('0x41')]['id']}})['then'](handleEntityNotFound(_0x1a82e7,null))[_0x4acf('0x21')](function(_0x1bbe6d){var _0x2a36e2;if(_0x1bbe6d){_0x2a36e2=squel[_0x4acf('0x60')]()[_0x4acf('0x61')]('cm_hopper')[_0x4acf('0x63')](['phone',_0x4acf('0x65'),_0x4acf('0x66'),'ListId',_0x4acf('0x7b'),_0x4acf('0x68'),_0x4acf('0x69')],squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('ANY_VALUE(calleridnum)',_0x4acf('0x64'))['field']('NOW()',_0x4acf('0x65'))[_0x4acf('0x6a')](_0x4acf('0x7d'),_0x4acf('0x66'))['field']('ANY_VALUE(ListId)',_0x4acf('0x67'))[_0x4acf('0x6a')](_0x4acf('0x7e'),_0x4acf('0x7b'))[_0x4acf('0x6a')](_0x4acf('0x7f'),_0x4acf('0x68'))[_0x4acf('0x6a')]('NOW()','updatedAt')[_0x4acf('0x6f')](_0x4acf('0x70'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x72'),_0x453c6d[_0x4acf('0x47')]['state'][_0x4acf('0x74')]())[_0x4acf('0x35')](_0x4acf('0x75'))[_0x4acf('0x35')](_0x4acf('0x76'),squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')](_0x4acf('0x64'))[_0x4acf('0x6f')](_0x4acf('0x62'))[_0x4acf('0x35')](_0x4acf('0x80'),_0x453c6d[_0x4acf('0x41')]['id']['toString']()))[_0x4acf('0x35')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x4acf('0x7c')]()[_0x4acf('0x6a')]('calleridnum')[_0x4acf('0x6f')](_0x4acf('0x70'))['where']('CampaignId\x20=\x20?',_0x453c6d[_0x4acf('0x41')]['id'][_0x4acf('0x74')]())['where']('state\x20=\x204'))[_0x4acf('0x78')](_0x4acf('0x66')))[_0x4acf('0x74')]();return db[_0x4acf('0x4a')]['query'](_0x2a36e2);}return[];})[_0x4acf('0x21')](respondWithResult(_0x1a82e7,null))[_0x4acf('0x3f')](handleError(_0x1a82e7,null));};exports[_0x4acf('0x81')]=function(_0x34e1ea,_0x43e9bf,_0x367ad4){return db[_0x4acf('0x82')]['findOne']({'where':{'VoiceQueueId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x6e')],'CampaignId':_0x34e1ea[_0x4acf('0x47')]['CampaignId'],'ContactId':_0x34e1ea[_0x4acf('0x47')][_0x4acf('0x66')]}})[_0x4acf('0x21')](handleEntityNotFound(_0x43e9bf,null))[_0x4acf('0x21')](function(_0x37ffab){if(_0x37ffab){return _0x37ffab;}return null;})[_0x4acf('0x21')](respondWithResult(_0x43e9bf,null))[_0x4acf('0x3f')](handleError(_0x43e9bf,null));};
\ No newline at end of file
index 9547253..c9493fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09dd=['CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define'];(function(_0x33a476,_0x52c445){var _0x158a2f=function(_0x8aa5c5){while(--_0x8aa5c5){_0x33a476['push'](_0x33a476['shift']());}};_0x158a2f(++_0x52c445);}(_0x09dd,0x7c));var _0xd09d=function(_0x4c74f4,_0x2f93c4){_0x4c74f4=_0x4c74f4-0x0;var _0x5aaee1=_0x09dd[_0x4c74f4];return _0x5aaee1;};'use strict';var _=require(_0xd09d('0x0'));var util=require(_0xd09d('0x1'));var logger=require(_0xd09d('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd09d('0x3'));var rp=require(_0xd09d('0x4'));var fs=require('fs');var path=require(_0xd09d('0x5'));var rimraf=require(_0xd09d('0x6'));var config=require(_0xd09d('0x7'));var attributes=require(_0xd09d('0x8'));module[_0xd09d('0x9')]=function(_0x4bd40b,_0x2edc04){return _0x4bd40b[_0xd09d('0xa')](_0xd09d('0xb'),attributes,{'tableName':_0xd09d('0xc'),'paranoid':![],'indexes':[{'name':_0xd09d('0xd'),'fields':[_0xd09d('0xd')]},{'name':_0xd09d('0xe'),'fields':[_0xd09d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e96=['./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x1e96,0xbc));var _0x61e9=function(_0x444770,_0x1d1354){_0x444770=_0x444770-0x0;var _0x585dd5=_0x1e96[_0x444770];return _0x585dd5;};'use strict';var _=require(_0x61e9('0x0'));var util=require(_0x61e9('0x1'));var logger=require(_0x61e9('0x2'))(_0x61e9('0x3'));var moment=require(_0x61e9('0x4'));var BPromise=require(_0x61e9('0x5'));var rp=require(_0x61e9('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x61e9('0x7'));var attributes=require(_0x61e9('0x8'));module['exports']=function(_0x2cf5a8,_0x523d9e){return _0x2cf5a8[_0x61e9('0x9')](_0x61e9('0xa'),attributes,{'tableName':_0x61e9('0xb'),'paranoid':![],'indexes':[{'name':_0x61e9('0xc'),'fields':[_0x61e9('0xc')]},{'name':_0x61e9('0xd'),'fields':[_0x61e9('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 1158a1e..a48d3df 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(_0x5e2397,_0x675b99){var _0x31d215=function(_0x5c5fd5){while(--_0x5c5fd5){_0x5e2397['push'](_0x5e2397['shift']());}};_0x31d215(++_0x675b99);}(_0xb10b,0x12a));var _0xbb10=function(_0x315b61,_0x4bb11e){_0x315b61=_0x315b61-0x0;var _0x3521e8=_0xb10b[_0x315b61];return _0x3521e8;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x28f236,_0x58db91){var _0x4cc19b=function(_0x3d45ce){while(--_0x3d45ce){_0x28f236['push'](_0x28f236['shift']());}};_0x4cc19b(++_0x58db91);}(_0xb10b,0x12a));var _0xbb10=function(_0x39aedf,_0x2f5df8){_0x39aedf=_0x39aedf-0x0;var _0x39356c=_0xb10b[_0x39aedf];return _0x39356c;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 5b471cc..59a3b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f12=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','get','/describe','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer'];(function(_0x579edd,_0xc53595){var _0x7638e8=function(_0x3f536d){while(--_0x3f536d){_0x579edd['push'](_0x579edd['shift']());}};_0x7638e8(++_0xc53595);}(_0x6f12,0x86));var _0x26f1=function(_0x1ecbbd,_0x44c5cc){_0x1ecbbd=_0x1ecbbd-0x0;var _0x1e2912=_0x6f12[_0x1ecbbd];return _0x1e2912;};'use strict';var multer=require(_0x26f1('0x0'));var util=require('util');var path=require(_0x26f1('0x1'));var timeout=require(_0x26f1('0x2'));var express=require(_0x26f1('0x3'));var router=express[_0x26f1('0x4')]();var fs_extra=require(_0x26f1('0x5'));var auth=require(_0x26f1('0x6'));var interaction=require(_0x26f1('0x7'));var config=require(_0x26f1('0x8'));var controller=require(_0x26f1('0x9'));router['get']('/',auth[_0x26f1('0xa')](),controller['index']);router[_0x26f1('0xb')](_0x26f1('0xc'),auth['isAuthenticated'](),controller[_0x26f1('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x26f1('0xe')]);router[_0x26f1('0xb')](_0x26f1('0xf'),auth['isAuthenticated'](),controller[_0x26f1('0x10')]);router['get'](_0x26f1('0x11'),auth[_0x26f1('0xa')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x26f1('0x12')]('/voice/queue/moveContacts/:id',auth[_0x26f1('0xa')](),controller[_0x26f1('0x13')]);router[_0x26f1('0x12')](_0x26f1('0x14'),auth['isAuthenticated'](),controller[_0x26f1('0x15')]);router[_0x26f1('0x12')](_0x26f1('0x16'),auth[_0x26f1('0xa')](),controller[_0x26f1('0x17')]);router[_0x26f1('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x26f1('0x19')]);module[_0x26f1('0x1a')]=router;
\ No newline at end of file
+var _0x3f96=['checkContactHopper','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper'];(function(_0x41b8f2,_0x1ebe99){var _0x555e15=function(_0x57dd2c){while(--_0x57dd2c){_0x41b8f2['push'](_0x41b8f2['shift']());}};_0x555e15(++_0x1ebe99);}(_0x3f96,0x1d3));var _0x63f9=function(_0x32e4d1,_0xc06f86){_0x32e4d1=_0x32e4d1-0x0;var _0x75f5cf=_0x3f96[_0x32e4d1];return _0x75f5cf;};'use strict';var multer=require(_0x63f9('0x0'));var util=require(_0x63f9('0x1'));var path=require(_0x63f9('0x2'));var timeout=require(_0x63f9('0x3'));var express=require(_0x63f9('0x4'));var router=express['Router']();var fs_extra=require(_0x63f9('0x5'));var auth=require(_0x63f9('0x6'));var interaction=require(_0x63f9('0x7'));var config=require(_0x63f9('0x8'));var controller=require(_0x63f9('0x9'));router['get']('/',auth[_0x63f9('0xa')](),controller[_0x63f9('0xb')]);router[_0x63f9('0xc')](_0x63f9('0xd'),auth['isAuthenticated'](),controller[_0x63f9('0xe')]);router[_0x63f9('0xc')](_0x63f9('0xf'),auth[_0x63f9('0xa')](),controller[_0x63f9('0x10')]);router[_0x63f9('0xc')](_0x63f9('0x11'),auth[_0x63f9('0xa')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x63f9('0xc')](_0x63f9('0x12'),auth['isAuthenticated'](),controller[_0x63f9('0x13')]);router[_0x63f9('0x14')](_0x63f9('0x15'),auth['isAuthenticated'](),controller[_0x63f9('0x16')]);router[_0x63f9('0x14')](_0x63f9('0x17'),auth[_0x63f9('0xa')](),controller[_0x63f9('0x18')]);router[_0x63f9('0x14')](_0x63f9('0x19'),auth['isAuthenticated'](),controller[_0x63f9('0x1a')]);router['put'](_0x63f9('0xf'),auth['isAuthenticated'](),controller[_0x63f9('0x1b')]);module[_0x63f9('0x1c')]=router;
\ No newline at end of file
index 658344c..72974bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8926=['BOOLEAN','sequelize','INTEGER','STRING','DATE'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x8926,0x10f));var _0x6892=function(_0x1c33f8,_0x27759c){_0x1c33f8=_0x1c33f8-0x0;var _0x13ab65=_0x8926[_0x1c33f8];return _0x13ab65;};'use strict';var Sequelize=require(_0x6892('0x0'));module['exports']={'state':{'type':Sequelize[_0x6892('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x6892('0x2')]},'scheduledat':{'type':Sequelize[_0x6892('0x3')]},'countbusyretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x6892('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x6892('0x2')]},'originatecalleridname':{'type':Sequelize[_0x6892('0x2')]},'calleridnum':{'type':Sequelize[_0x6892('0x2')]},'calleridname':{'type':Sequelize[_0x6892('0x2')]},'starttime':{'type':Sequelize[_0x6892('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x6892('0x3')]},'droptime':{'type':Sequelize[_0x6892('0x3')]},'endtime':{'type':Sequelize[_0x6892('0x3')]},'ringtime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x6892('0x2')]},'campaign':{'type':Sequelize[_0x6892('0x2')]},'campaigntype':{'type':Sequelize[_0x6892('0x2')]},'membername':{'type':Sequelize[_0x6892('0x2')]},'reason':{'type':Sequelize[_0x6892('0x2')]},'amd':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6892('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x6892('0x3')]},'edited':{'type':Sequelize[_0x6892('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6892('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6892('0x2')]}};
\ No newline at end of file
+var _0x60f3=['sequelize','exports','INTEGER','STRING','DATE','BOOLEAN'];(function(_0x4927b1,_0x3da9b7){var _0x1e4654=function(_0xd896b2){while(--_0xd896b2){_0x4927b1['push'](_0x4927b1['shift']());}};_0x1e4654(++_0x3da9b7);}(_0x60f3,0xd2));var _0x360f=function(_0x6182ff,_0x59d492){_0x6182ff=_0x6182ff-0x0;var _0x1cec22=_0x60f3[_0x6182ff];return _0x1cec22;};'use strict';var Sequelize=require(_0x360f('0x0'));module[_0x360f('0x1')]={'state':{'type':Sequelize[_0x360f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x360f('0x3')]},'scheduledat':{'type':Sequelize[_0x360f('0x4')]},'countbusyretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x360f('0x3')]},'originatecalleridname':{'type':Sequelize[_0x360f('0x3')]},'calleridnum':{'type':Sequelize[_0x360f('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x360f('0x4')]},'answertime':{'type':Sequelize[_0x360f('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x360f('0x3')]},'campaign':{'type':Sequelize[_0x360f('0x3')]},'campaigntype':{'type':Sequelize[_0x360f('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x360f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x360f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x360f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x360f('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x360f('0x4')]},'edited':{'type':Sequelize[_0x360f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x360f('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x360f('0x3')]}};
\ No newline at end of file
index 35502e9..b8b7d3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef5b=['catch','show','params','length','find','create','body','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x382c1d,_0x1296b6){var _0x5bdc57=function(_0x4df4ac){while(--_0x4df4ac){_0x382c1d['push'](_0x382c1d['shift']());}};_0x5bdc57(++_0x1296b6);}(_0xef5b,0x141));var _0xbef5=function(_0x125f07,_0x77922d){_0x125f07=_0x125f07-0x0;var _0x1998cf=_0xef5b[_0x125f07];return _0x1998cf;};'use strict';var emlformat=require(_0xbef5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbef5('0x1'));var jsonpatch=require(_0xbef5('0x2'));var rp=require(_0xbef5('0x3'));var moment=require(_0xbef5('0x4'));var BPromise=require(_0xbef5('0x5'));var Mustache=require(_0xbef5('0x6'));var util=require(_0xbef5('0x7'));var path=require(_0xbef5('0x8'));var sox=require(_0xbef5('0x9'));var csv=require(_0xbef5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbef5('0xb'));var squel=require(_0xbef5('0xc'));var crypto=require('crypto');var jsforce=require(_0xbef5('0xd'));var deskjs=require(_0xbef5('0xe'));var toCsv=require(_0xbef5('0xa'));var querystring=require(_0xbef5('0xf'));var Papa=require('papaparse');var Redis=require(_0xbef5('0x10'));var authService=require(_0xbef5('0x11'));var qs=require(_0xbef5('0x12'));var as=require(_0xbef5('0x13'));var hardwareService=require(_0xbef5('0x14'));var logger=require(_0xbef5('0x15'))('api');var utils=require(_0xbef5('0x16'));var config=require(_0xbef5('0x17'));var licenseUtil=require(_0xbef5('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x35d393,_0x57723a){_0x57723a=_0x57723a||0xcc;return function(_0x2ebbed){if(_0x2ebbed){return _0x35d393[_0xbef5('0x19')](_0x57723a);}return _0x35d393[_0xbef5('0x1a')](_0x57723a)[_0xbef5('0x1b')]();};}function respondWithResult(_0x2ef49b,_0x372416){_0x372416=_0x372416||0xc8;return function(_0x2dfd65){if(_0x2dfd65){return _0x2ef49b[_0xbef5('0x1a')](_0x372416)[_0xbef5('0x1c')](_0x2dfd65);}};}function respondWithFilteredResult(_0x33067d,_0x3bff57){return function(_0x363992){if(_0x363992){var _0xe7f098=typeof _0x3bff57[_0xbef5('0x1d')]==='undefined'&&typeof _0x3bff57[_0xbef5('0x1e')]==='undefined';var _0x4a0366=_0x363992[_0xbef5('0x1f')];var _0x487377=_0xe7f098?0x0:_0x3bff57[_0xbef5('0x1d')];var _0x495d65=_0xe7f098?_0x363992['count']:_0x3bff57[_0xbef5('0x1d')]+_0x3bff57[_0xbef5('0x1e')];var _0x4246c9;if(_0x495d65>=_0x4a0366){_0x495d65=_0x4a0366;_0x4246c9=0xc8;}else{_0x4246c9=0xce;}_0x33067d['status'](_0x4246c9);return _0x33067d[_0xbef5('0x20')](_0xbef5('0x21'),_0x487377+'-'+_0x495d65+'/'+_0x4a0366)[_0xbef5('0x1c')](_0x363992);}return null;};}function patchUpdates(_0x1318e4){return function(_0x34d159){try{jsonpatch[_0xbef5('0x22')](_0x34d159,_0x1318e4,!![]);}catch(_0x126181){return BPromise['reject'](_0x126181);}return _0x34d159[_0xbef5('0x23')]();};}function saveUpdates(_0x382e90,_0x5d76a6){return function(_0x45f40a){if(_0x45f40a){return _0x45f40a[_0xbef5('0x24')](_0x382e90)[_0xbef5('0x25')](function(_0x3e3636){return _0x3e3636;});}return null;};}function removeEntity(_0x473781,_0x3ad024){return function(_0x54c9b0){if(_0x54c9b0){return _0x54c9b0[_0xbef5('0x26')]()[_0xbef5('0x25')](function(){_0x473781[_0xbef5('0x1a')](0xcc)[_0xbef5('0x1b')]();});}};}function handleEntityNotFound(_0x5648cc,_0x2b471e){return function(_0x3e0f53){if(!_0x3e0f53){_0x5648cc[_0xbef5('0x19')](0x194);}return _0x3e0f53;};}function handleError(_0x460c6f,_0x45083c){_0x45083c=_0x45083c||0x1f4;return function(_0x575b0a){logger[_0xbef5('0x27')](_0x575b0a[_0xbef5('0x28')]);if(_0x575b0a['name']){delete _0x575b0a[_0xbef5('0x29')];}_0x460c6f[_0xbef5('0x1a')](_0x45083c)['send'](_0x575b0a);};}exports[_0xbef5('0x2a')]=function(_0x484472,_0x398276){var _0x422f12={},_0x4fcab8={},_0x211660={'count':0x0,'rows':[]};var _0x56bbc8=_[_0xbef5('0x2b')](db[_0xbef5('0x2c')][_0xbef5('0x2d')],function(_0x1c58ab){return{'name':_0x1c58ab[_0xbef5('0x2e')],'type':_0x1c58ab[_0xbef5('0x2f')][_0xbef5('0x30')]};});_0x4fcab8[_0xbef5('0x31')]=_[_0xbef5('0x2b')](_0x56bbc8,_0xbef5('0x29'));_0x4fcab8['query']=_[_0xbef5('0x32')](_0x484472[_0xbef5('0x33')]);_0x4fcab8[_0xbef5('0x34')]=_[_0xbef5('0x35')](_0x4fcab8[_0xbef5('0x31')],_0x4fcab8[_0xbef5('0x33')]);_0x422f12[_0xbef5('0x36')]=_['intersection'](_0x4fcab8[_0xbef5('0x31')],qs['fields'](_0x484472[_0xbef5('0x33')][_0xbef5('0x37')]));_0x422f12[_0xbef5('0x36')]=_0x422f12[_0xbef5('0x36')]['length']?_0x422f12['attributes']:_0x4fcab8['model'];if(!_0x484472['query']['hasOwnProperty'](_0xbef5('0x38'))){_0x422f12[_0xbef5('0x1e')]=qs[_0xbef5('0x1e')](_0x484472['query'][_0xbef5('0x1e')]);_0x422f12['offset']=qs[_0xbef5('0x1d')](_0x484472[_0xbef5('0x33')][_0xbef5('0x1d')]);}_0x422f12[_0xbef5('0x39')]=qs[_0xbef5('0x3a')](_0x484472[_0xbef5('0x33')]['sort']);_0x422f12[_0xbef5('0x3b')]=qs[_0xbef5('0x34')](_[_0xbef5('0x3c')](_0x484472[_0xbef5('0x33')],_0x4fcab8[_0xbef5('0x34')]),_0x56bbc8);if(_0x484472[_0xbef5('0x33')][_0xbef5('0x3d')]){_0x422f12[_0xbef5('0x3b')]=_[_0xbef5('0x3e')](_0x422f12['where'],{'$or':_[_0xbef5('0x2b')](_0x56bbc8,function(_0x315fcf){if(_0x315fcf[_0xbef5('0x2f')]!==_0xbef5('0x3f')){var _0x5cfe54={};_0x5cfe54[_0x315fcf[_0xbef5('0x29')]]={'$like':'%'+_0x484472['query'][_0xbef5('0x3d')]+'%'};return _0x5cfe54;}})});}_0x422f12=_[_0xbef5('0x3e')]({},_0x422f12,_0x484472[_0xbef5('0x40')]);var _0x14888c={'where':_0x422f12[_0xbef5('0x3b')]};return db[_0xbef5('0x2c')][_0xbef5('0x1f')](_0x14888c)['then'](function(_0x5d2cfe){_0x211660['count']=_0x5d2cfe;if(_0x484472['query'][_0xbef5('0x41')]){_0x422f12[_0xbef5('0x42')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xbef5('0x43')](_0x422f12);})['then'](function(_0x4da3c4){_0x211660[_0xbef5('0x44')]=_0x4da3c4;return _0x211660;})[_0xbef5('0x25')](respondWithFilteredResult(_0x398276,_0x422f12))[_0xbef5('0x45')](handleError(_0x398276,null));};exports[_0xbef5('0x46')]=function(_0x427320,_0x2ed2bd){var _0x6a3541={'raw':!![],'where':{'id':_0x427320[_0xbef5('0x47')]['id']}},_0x4f2495={};_0x4f2495[_0xbef5('0x31')]=_['keys'](db['CmHopperHistory'][_0xbef5('0x2d')]);_0x4f2495[_0xbef5('0x33')]=_['keys'](_0x427320[_0xbef5('0x33')]);_0x4f2495[_0xbef5('0x34')]=_[_0xbef5('0x35')](_0x4f2495[_0xbef5('0x31')],_0x4f2495[_0xbef5('0x33')]);_0x6a3541['attributes']=_[_0xbef5('0x35')](_0x4f2495['model'],qs[_0xbef5('0x37')](_0x427320[_0xbef5('0x33')]['fields']));_0x6a3541[_0xbef5('0x36')]=_0x6a3541[_0xbef5('0x36')][_0xbef5('0x48')]?_0x6a3541[_0xbef5('0x36')]:_0x4f2495['model'];if(_0x427320['query'][_0xbef5('0x41')]){_0x6a3541[_0xbef5('0x42')]=[{'all':!![]}];}_0x6a3541=_[_0xbef5('0x3e')]({},_0x6a3541,_0x427320[_0xbef5('0x40')]);return db[_0xbef5('0x2c')][_0xbef5('0x49')](_0x6a3541)[_0xbef5('0x25')](handleEntityNotFound(_0x2ed2bd,null))[_0xbef5('0x25')](respondWithResult(_0x2ed2bd,null))[_0xbef5('0x45')](handleError(_0x2ed2bd,null));};exports[_0xbef5('0x4a')]=function(_0x240364,_0x5fdb3){return db[_0xbef5('0x2c')][_0xbef5('0x4a')](_0x240364[_0xbef5('0x4b')],{})[_0xbef5('0x25')](respondWithResult(_0x5fdb3,0xc9))['catch'](handleError(_0x5fdb3,null));};exports['describe']=function(_0x5c1d05,_0x815575){return db[_0xbef5('0x2c')][_0xbef5('0x4c')]()['then'](respondWithResult(_0x815575,null))['catch'](handleError(_0x815575,null));};exports['update']=function(_0x52761d,_0x515547){if(_0x52761d['body'][_0xbef5('0x4d')]){delete _0x52761d[_0xbef5('0x4b')][_0xbef5('0x4d')];}return db[_0xbef5('0x2c')][_0xbef5('0x49')]({'where':{'uniqueid':_0x52761d[_0xbef5('0x47')]['id']}})[_0xbef5('0x25')](handleEntityNotFound(_0x515547,null))['then'](saveUpdates(_0x52761d[_0xbef5('0x4b')],null))[_0xbef5('0x25')](respondWithResult(_0x515547,null))[_0xbef5('0x45')](handleError(_0x515547,null));};
\ No newline at end of file
+var _0xcdd0=['Content-Range','reject','save','update','then','error','stack','name','send','index','CmHopperHistory','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','keys','options','find','create','describe','body','uniqueid','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x57fb32,_0x48b5a9){var _0x2a7cf7=function(_0x483ccf){while(--_0x483ccf){_0x57fb32['push'](_0x57fb32['shift']());}};_0x2a7cf7(++_0x48b5a9);}(_0xcdd0,0xba));var _0x0cdd=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xcdd0[_0x2b10c6];return _0x3789d2;};'use strict';var emlformat=require(_0x0cdd('0x0'));var rimraf=require(_0x0cdd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0cdd('0x2'));var rp=require(_0x0cdd('0x3'));var moment=require(_0x0cdd('0x4'));var BPromise=require(_0x0cdd('0x5'));var Mustache=require(_0x0cdd('0x6'));var util=require(_0x0cdd('0x7'));var path=require(_0x0cdd('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0cdd('0x9'));var _=require(_0x0cdd('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0cdd('0xb'));var deskjs=require(_0x0cdd('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0cdd('0xd'));var Redis=require(_0x0cdd('0xe'));var authService=require(_0x0cdd('0xf'));var qs=require(_0x0cdd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0cdd('0x11'));var logger=require(_0x0cdd('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0cdd('0x13'));var db=require(_0x0cdd('0x14'))['db'];function respondWithStatusCode(_0x56e1f7,_0x3b7703){_0x3b7703=_0x3b7703||0xcc;return function(_0x116b19){if(_0x116b19){return _0x56e1f7[_0x0cdd('0x15')](_0x3b7703);}return _0x56e1f7[_0x0cdd('0x16')](_0x3b7703)[_0x0cdd('0x17')]();};}function respondWithResult(_0x4d0984,_0x161fcd){_0x161fcd=_0x161fcd||0xc8;return function(_0xacd498){if(_0xacd498){return _0x4d0984[_0x0cdd('0x16')](_0x161fcd)[_0x0cdd('0x18')](_0xacd498);}};}function respondWithFilteredResult(_0x2aaded,_0x205f34){return function(_0x43d841){if(_0x43d841){var _0x26472f=typeof _0x205f34[_0x0cdd('0x19')]===_0x0cdd('0x1a')&&typeof _0x205f34[_0x0cdd('0x1b')]===_0x0cdd('0x1a');var _0x2d5ff5=_0x43d841[_0x0cdd('0x1c')];var _0x986993=_0x26472f?0x0:_0x205f34['offset'];var _0xd24aa1=_0x26472f?_0x43d841[_0x0cdd('0x1c')]:_0x205f34[_0x0cdd('0x19')]+_0x205f34[_0x0cdd('0x1b')];var _0x27826b;if(_0xd24aa1>=_0x2d5ff5){_0xd24aa1=_0x2d5ff5;_0x27826b=0xc8;}else{_0x27826b=0xce;}_0x2aaded['status'](_0x27826b);return _0x2aaded[_0x0cdd('0x1d')](_0x0cdd('0x1e'),_0x986993+'-'+_0xd24aa1+'/'+_0x2d5ff5)['json'](_0x43d841);}return null;};}function patchUpdates(_0x36784c){return function(_0x195ffb){try{jsonpatch['apply'](_0x195ffb,_0x36784c,!![]);}catch(_0x52fd19){return BPromise[_0x0cdd('0x1f')](_0x52fd19);}return _0x195ffb[_0x0cdd('0x20')]();};}function saveUpdates(_0x4dff52,_0x30cfe1){return function(_0x1a58fd){if(_0x1a58fd){return _0x1a58fd[_0x0cdd('0x21')](_0x4dff52)[_0x0cdd('0x22')](function(_0x3dc360){return _0x3dc360;});}return null;};}function removeEntity(_0x5ccff7,_0x3cb19a){return function(_0xff43ee){if(_0xff43ee){return _0xff43ee['destroy']()[_0x0cdd('0x22')](function(){_0x5ccff7[_0x0cdd('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c895e,_0x16203a){return function(_0x38187c){if(!_0x38187c){_0x5c895e[_0x0cdd('0x15')](0x194);}return _0x38187c;};}function handleError(_0xc5678b,_0x384128){_0x384128=_0x384128||0x1f4;return function(_0x2f5c98){logger[_0x0cdd('0x23')](_0x2f5c98[_0x0cdd('0x24')]);if(_0x2f5c98['name']){delete _0x2f5c98[_0x0cdd('0x25')];}_0xc5678b[_0x0cdd('0x16')](_0x384128)[_0x0cdd('0x26')](_0x2f5c98);};}exports[_0x0cdd('0x27')]=function(_0x3ee0bd,_0x1afe55){var _0x67cbea={},_0x1cd344={},_0x4ed7d8={'count':0x0,'rows':[]};var _0x348a95=_['map'](db[_0x0cdd('0x28')][_0x0cdd('0x29')],function(_0x1b1bb0){return{'name':_0x1b1bb0[_0x0cdd('0x2a')],'type':_0x1b1bb0['type'][_0x0cdd('0x2b')]};});_0x1cd344[_0x0cdd('0x2c')]=_[_0x0cdd('0x2d')](_0x348a95,'name');_0x1cd344['query']=_['keys'](_0x3ee0bd[_0x0cdd('0x2e')]);_0x1cd344[_0x0cdd('0x2f')]=_[_0x0cdd('0x30')](_0x1cd344[_0x0cdd('0x2c')],_0x1cd344[_0x0cdd('0x2e')]);_0x67cbea[_0x0cdd('0x31')]=_[_0x0cdd('0x30')](_0x1cd344['model'],qs[_0x0cdd('0x32')](_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x32')]));_0x67cbea['attributes']=_0x67cbea[_0x0cdd('0x31')][_0x0cdd('0x33')]?_0x67cbea[_0x0cdd('0x31')]:_0x1cd344[_0x0cdd('0x2c')];if(!_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x34')](_0x0cdd('0x35'))){_0x67cbea[_0x0cdd('0x1b')]=qs[_0x0cdd('0x1b')](_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x1b')]);_0x67cbea[_0x0cdd('0x19')]=qs[_0x0cdd('0x19')](_0x3ee0bd[_0x0cdd('0x2e')]['offset']);}_0x67cbea['order']=qs[_0x0cdd('0x36')](_0x3ee0bd[_0x0cdd('0x2e')]['sort']);_0x67cbea['where']=qs[_0x0cdd('0x2f')](_['pick'](_0x3ee0bd[_0x0cdd('0x2e')],_0x1cd344[_0x0cdd('0x2f')]),_0x348a95);if(_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x37')]){_0x67cbea[_0x0cdd('0x38')]=_['merge'](_0x67cbea['where'],{'$or':_['map'](_0x348a95,function(_0x1a3040){if(_0x1a3040['type']!==_0x0cdd('0x39')){var _0xecb3ae={};_0xecb3ae[_0x1a3040[_0x0cdd('0x25')]]={'$like':'%'+_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x37')]+'%'};return _0xecb3ae;}})});}_0x67cbea=_[_0x0cdd('0x3a')]({},_0x67cbea,_0x3ee0bd['options']);var _0x5d0900={'where':_0x67cbea[_0x0cdd('0x38')]};return db[_0x0cdd('0x28')][_0x0cdd('0x1c')](_0x5d0900)[_0x0cdd('0x22')](function(_0x443359){_0x4ed7d8[_0x0cdd('0x1c')]=_0x443359;if(_0x3ee0bd[_0x0cdd('0x2e')][_0x0cdd('0x3b')]){_0x67cbea['include']=[{'all':!![]}];}return db[_0x0cdd('0x28')][_0x0cdd('0x3c')](_0x67cbea);})['then'](function(_0x30b6b1){_0x4ed7d8[_0x0cdd('0x3d')]=_0x30b6b1;return _0x4ed7d8;})[_0x0cdd('0x22')](respondWithFilteredResult(_0x1afe55,_0x67cbea))[_0x0cdd('0x3e')](handleError(_0x1afe55,null));};exports[_0x0cdd('0x3f')]=function(_0x3714fa,_0x31db29){var _0x369da0={'raw':!![],'where':{'id':_0x3714fa[_0x0cdd('0x40')]['id']}},_0x3e1f10={};_0x3e1f10[_0x0cdd('0x2c')]=_['keys'](db[_0x0cdd('0x28')]['rawAttributes']);_0x3e1f10['query']=_[_0x0cdd('0x41')](_0x3714fa[_0x0cdd('0x2e')]);_0x3e1f10[_0x0cdd('0x2f')]=_[_0x0cdd('0x30')](_0x3e1f10['model'],_0x3e1f10[_0x0cdd('0x2e')]);_0x369da0[_0x0cdd('0x31')]=_[_0x0cdd('0x30')](_0x3e1f10[_0x0cdd('0x2c')],qs[_0x0cdd('0x32')](_0x3714fa[_0x0cdd('0x2e')][_0x0cdd('0x32')]));_0x369da0['attributes']=_0x369da0[_0x0cdd('0x31')][_0x0cdd('0x33')]?_0x369da0['attributes']:_0x3e1f10[_0x0cdd('0x2c')];if(_0x3714fa[_0x0cdd('0x2e')][_0x0cdd('0x3b')]){_0x369da0['include']=[{'all':!![]}];}_0x369da0=_[_0x0cdd('0x3a')]({},_0x369da0,_0x3714fa[_0x0cdd('0x42')]);return db['CmHopperHistory'][_0x0cdd('0x43')](_0x369da0)['then'](handleEntityNotFound(_0x31db29,null))[_0x0cdd('0x22')](respondWithResult(_0x31db29,null))[_0x0cdd('0x3e')](handleError(_0x31db29,null));};exports['create']=function(_0x352ca8,_0x533faf){return db[_0x0cdd('0x28')][_0x0cdd('0x44')](_0x352ca8['body'],{})['then'](respondWithResult(_0x533faf,0xc9))['catch'](handleError(_0x533faf,null));};exports[_0x0cdd('0x45')]=function(_0x4be8df,_0x1e54b1){return db['CmHopperHistory'][_0x0cdd('0x45')]()[_0x0cdd('0x22')](respondWithResult(_0x1e54b1,null))[_0x0cdd('0x3e')](handleError(_0x1e54b1,null));};exports[_0x0cdd('0x21')]=function(_0x3fe405,_0x439f44){if(_0x3fe405[_0x0cdd('0x46')]['uniqueid']){delete _0x3fe405[_0x0cdd('0x46')][_0x0cdd('0x47')];}return db[_0x0cdd('0x28')][_0x0cdd('0x43')]({'where':{'uniqueid':_0x3fe405[_0x0cdd('0x40')]['id']}})[_0x0cdd('0x22')](handleEntityNotFound(_0x439f44,null))['then'](saveUpdates(_0x3fe405['body'],null))['then'](respondWithResult(_0x439f44,null))[_0x0cdd('0x3e')](handleError(_0x439f44,null));};
\ No newline at end of file
index eb554bc..6056754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb296=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util'];(function(_0x28a23f,_0x53e7fb){var _0x21e05a=function(_0x31f15d){while(--_0x31f15d){_0x28a23f['push'](_0x28a23f['shift']());}};_0x21e05a(++_0x53e7fb);}(_0xb296,0xa3));var _0x6b29=function(_0x2e26bb,_0x30459c){_0x2e26bb=_0x2e26bb-0x0;var _0x5d34b4=_0xb296[_0x2e26bb];return _0x5d34b4;};'use strict';var _=require(_0x6b29('0x0'));var util=require(_0x6b29('0x1'));var logger=require(_0x6b29('0x2'))(_0x6b29('0x3'));var moment=require(_0x6b29('0x4'));var BPromise=require(_0x6b29('0x5'));var rp=require(_0x6b29('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b29('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b29('0x8'));module[_0x6b29('0x9')]=function(_0x5e0aa1,_0x327329){return _0x5e0aa1[_0x6b29('0xa')](_0x6b29('0xb'),attributes,{'tableName':_0x6b29('0xc'),'paranoid':![],'indexes':[{'name':_0x6b29('0xd'),'fields':['endtime']},{'name':_0x6b29('0xe'),'fields':[_0x6b29('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x58e6=['util','bluebird','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','cm_hopper_history','endtime','uniqueid','lodash'];(function(_0x150035,_0x27c7b7){var _0x6468e3=function(_0x3060d3){while(--_0x3060d3){_0x150035['push'](_0x150035['shift']());}};_0x6468e3(++_0x27c7b7);}(_0x58e6,0x1c2));var _0x658e=function(_0x5966fb,_0x37e9f2){_0x5966fb=_0x5966fb-0x0;var _0x55ce54=_0x58e6[_0x5966fb];return _0x55ce54;};'use strict';var _=require(_0x658e('0x0'));var util=require(_0x658e('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x658e('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x658e('0x3'));var rimraf=require(_0x658e('0x4'));var config=require(_0x658e('0x5'));var attributes=require(_0x658e('0x6'));module[_0x658e('0x7')]=function(_0x2add44,_0x3251b8){return _0x2add44['define']('CmHopperHistory',attributes,{'tableName':_0x658e('0x8'),'paranoid':![],'indexes':[{'name':_0x658e('0x9'),'fields':[_0x658e('0x9')]},{'name':'uniqueid','fields':[_0x658e('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 4d65f81..a2d2b3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','where','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateCmHopperHistory','create','options','raw','stringify','AvgHandleTime','CmHopperHistory','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','then','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b19,0xe8));var _0x96b1=function(_0x5ded44,_0x541a07){_0x5ded44=_0x5ded44-0x0;var _0x307d13=_0x6b19[_0x5ded44];return _0x307d13;};'use strict';var _=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var moment=require('moment');var BPromise=require(_0x96b1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96b1('0x3'))['db'];var utils=require(_0x96b1('0x4'));var logger=require(_0x96b1('0x5'))(_0x96b1('0x6'));var config=require(_0x96b1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x96b1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e3e1a,_0x572fde,_0x57a23a){return new BPromise(function(_0x307e65,_0x535cc9){return client[_0x96b1('0x9')](_0x3e3e1a,_0x57a23a)['then'](function(_0x36ea50){logger[_0x96b1('0xa')](_0x96b1('0xb'),_0x572fde,_0x96b1('0xc'));logger[_0x96b1('0xd')](_0x96b1('0xe'),_0x572fde,_0x96b1('0xc'),JSON['stringify'](_0x36ea50));if(_0x36ea50['error']){if(_0x36ea50[_0x96b1('0xf')]['code']===0x1f4){logger['error'](_0x96b1('0xb'),_0x572fde,_0x36ea50[_0x96b1('0xf')][_0x96b1('0x10')]);return _0x535cc9(_0x36ea50['error'][_0x96b1('0x10')]);}logger[_0x96b1('0xf')](_0x96b1('0xb'),_0x572fde,_0x36ea50[_0x96b1('0xf')][_0x96b1('0x10')]);return _0x307e65(_0x36ea50['error'][_0x96b1('0x10')]);}else{logger[_0x96b1('0xa')](_0x96b1('0xb'),_0x572fde,_0x96b1('0xc'));_0x307e65(_0x36ea50[_0x96b1('0x11')][_0x96b1('0x10')]);}})[_0x96b1('0x12')](function(_0x2d5a32){logger[_0x96b1('0xf')](_0x96b1('0xb'),_0x572fde,_0x2d5a32);_0x535cc9(_0x2d5a32);});});}exports[_0x96b1('0x13')]=function(_0x38478c){var _0x2b192a=this;return new Promise(function(_0x19972b,_0x212b31){return db['CmHopperHistory'][_0x96b1('0x14')](_0x38478c['body'],{'raw':_0x38478c[_0x96b1('0x15')]?_0x38478c[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xc5dc95){logger[_0x96b1('0xa')](_0x96b1('0x13'),_0x38478c);logger['debug'](_0x96b1('0x13'),_0x38478c,JSON[_0x96b1('0x17')](_0xc5dc95));_0x19972b(_0xc5dc95);})[_0x96b1('0x12')](function(_0x18594b){logger['error'](_0x96b1('0x13'),_0x18594b[_0x96b1('0x10')],_0x38478c);_0x212b31(_0x2b192a[_0x96b1('0xf')](0x1f4,_0x18594b['message']));});});};exports[_0x96b1('0x18')]=function(_0x370f15){var _0x28b42b=this;return new Promise(function(_0x20a85f,_0x55a572){return db[_0x96b1('0x19')]['findAll']({'raw':_0x370f15[_0x96b1('0x15')]?_0x370f15['options'][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x370f15[_0x96b1('0x15')]?_0x370f15['options']['where']||null:null,'attributes':[[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')][_0x96b1('0x1c')]('id')),_0x96b1('0x1d')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x1f')))),'predictiveIntervalAnsweredCalls'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize'][_0x96b1('0x1e')]('`state`\x20=\x2010,\x201,\x20null'))),_0x96b1('0x20')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x21')))),_0x96b1('0x22')],[db[_0x96b1('0x1b')]['fn']('AVG',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x23')))),_0x96b1('0x24')],[db[_0x96b1('0x1b')]['fn']('AVG',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x96b1('0x25')]]})[_0x96b1('0x26')](function(_0x1745d1){logger['info']('AvgHandleTime',_0x370f15);logger[_0x96b1('0xd')](_0x96b1('0x18'),_0x370f15,JSON[_0x96b1('0x17')](_0x1745d1));_0x20a85f(_0x1745d1);})[_0x96b1('0x12')](function(_0x48dc7b){logger[_0x96b1('0xf')]('AvgHandleTime',_0x48dc7b[_0x96b1('0x10')],_0x370f15);_0x55a572(_0x28b42b[_0x96b1('0xf')](0x1f4,_0x48dc7b[_0x96b1('0x10')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x31b13b){var _0x40735b=this;return new Promise(function(_0x21d5b7,_0x5245c8){return db[_0x96b1('0x19')][_0x96b1('0x27')]({'raw':_0x31b13b['options']?_0x31b13b[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x31b13b['options']?_0x31b13b[_0x96b1('0x15')]['where']||null:null,'attributes':[[_0x96b1('0x28'),_0x96b1('0x29')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x2a')))),_0x96b1('0x2b')],[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x2c')))),_0x96b1('0x2d')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x1f')))),_0x96b1('0x2e')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize'][_0x96b1('0x1e')](_0x96b1('0x2f')))),'outboundBusyCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x96b1('0x30')))),_0x96b1('0x31')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x32')))),_0x96b1('0x33')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db['sequelize'][_0x96b1('0x1e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x96b1('0x34')],[db['sequelize']['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x35')))),'outboundUnknownCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db['sequelize'][_0x96b1('0x1e')](_0x96b1('0x36')))),_0x96b1('0x37')],[db[_0x96b1('0x1b')]['fn']('COUNT',db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x38')))),_0x96b1('0x39')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')]['literal'](_0x96b1('0x3a')))),'outboundRejectCallsDay'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')]('`state`\x20=\x2016,\x201,\x20null'))),_0x96b1('0x3b')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')]['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x3c')))),_0x96b1('0x3d')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')][_0x96b1('0x1e')](_0x96b1('0x3e')))),_0x96b1('0x3f')]],'group':[_0x96b1('0x28')]})[_0x96b1('0x26')](function(_0x420d36){logger[_0x96b1('0xa')]('GetVoiceQueueHopperHistory',_0x31b13b);logger['debug'](_0x96b1('0x40'),_0x31b13b,JSON[_0x96b1('0x17')](_0x420d36));_0x21d5b7(_0x420d36);})['catch'](function(_0x1f8719){logger[_0x96b1('0xf')](_0x96b1('0x40'),_0x1f8719['message'],_0x31b13b);_0x5245c8(_0x40735b[_0x96b1('0xf')](0x1f4,_0x1f8719[_0x96b1('0x10')]));});});};exports['GetCampaignHopperHistory']=function(_0x5f5b83){var _0x31c32d=this;return new Promise(function(_0x19cc23,_0x3b0fe6){return db[_0x96b1('0x19')][_0x96b1('0x27')]({'raw':_0x5f5b83[_0x96b1('0x15')]?_0x5f5b83[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x5f5b83[_0x96b1('0x15')]?_0x5f5b83[_0x96b1('0x15')][_0x96b1('0x41')]||null:null,'attributes':[[_0x96b1('0x28'),'name'],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db[_0x96b1('0x1b')][_0x96b1('0x1c')]('id')),_0x96b1('0x42')],[db[_0x96b1('0x1b')]['fn'](_0x96b1('0x1a'),db['sequelize']['fn']('IF',db[_0x96b1('0x1b')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x96b1('0x43')]],'group':[_0x96b1('0x28')]})[_0x96b1('0x26')](function(_0x1f3f4b){logger[_0x96b1('0xa')](_0x96b1('0x44'),_0x5f5b83);logger[_0x96b1('0xd')]('GetCampaignHopperHistory',_0x5f5b83,JSON[_0x96b1('0x17')](_0x1f3f4b));_0x19cc23(_0x1f3f4b);})['catch'](function(_0x48f8d2){logger['error'](_0x96b1('0x44'),_0x48f8d2[_0x96b1('0x10')],_0x5f5b83);_0x3b0fe6(_0x31c32d['error'](0x1f4,_0x48f8d2[_0x96b1('0x10')]));});});};
\ No newline at end of file
+var _0x2bfe=['`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','ivrTotalCallsDays','GetCampaignHopperHistory','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','CmHopperHistory,\x20%s,\x20%s','message','catch','CmHopperHistory','create','body','options','raw','CreateCmHopperHistory','stringify','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x2bfe,0x125));var _0xe2bf=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x2bfe[_0x13ea00];return _0x1f7347;};'use strict';var _=require(_0xe2bf('0x0'));var util=require(_0xe2bf('0x1'));var moment=require('moment');var BPromise=require(_0xe2bf('0x2'));var rs=require(_0xe2bf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe2bf('0x4'))['db'];var utils=require(_0xe2bf('0x5'));var logger=require(_0xe2bf('0x6'))(_0xe2bf('0x7'));var config=require(_0xe2bf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe2bf('0x9')][_0xe2bf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14f14b,_0x7540b6,_0x582c81){return new BPromise(function(_0x30b0df,_0x363348){return client[_0xe2bf('0xb')](_0x14f14b,_0x582c81)[_0xe2bf('0xc')](function(_0x1fcd60){logger[_0xe2bf('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x7540b6,_0xe2bf('0xe'));logger[_0xe2bf('0xf')](_0xe2bf('0x10'),_0x7540b6,_0xe2bf('0xe'),JSON['stringify'](_0x1fcd60));if(_0x1fcd60[_0xe2bf('0x11')]){if(_0x1fcd60[_0xe2bf('0x11')]['code']===0x1f4){logger['error'](_0xe2bf('0x12'),_0x7540b6,_0x1fcd60['error']['message']);return _0x363348(_0x1fcd60[_0xe2bf('0x11')][_0xe2bf('0x13')]);}logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x7540b6,_0x1fcd60[_0xe2bf('0x11')][_0xe2bf('0x13')]);return _0x30b0df(_0x1fcd60[_0xe2bf('0x11')][_0xe2bf('0x13')]);}else{logger[_0xe2bf('0xd')](_0xe2bf('0x12'),_0x7540b6,_0xe2bf('0xe'));_0x30b0df(_0x1fcd60['result']['message']);}})[_0xe2bf('0x14')](function(_0x282e6a){logger['error'](_0xe2bf('0x12'),_0x7540b6,_0x282e6a);_0x363348(_0x282e6a);});});}exports['CreateCmHopperHistory']=function(_0x3dcb73){var _0x45f619=this;return new Promise(function(_0x4d481f,_0x1f4691){return db[_0xe2bf('0x15')][_0xe2bf('0x16')](_0x3dcb73[_0xe2bf('0x17')],{'raw':_0x3dcb73[_0xe2bf('0x18')]?_0x3dcb73[_0xe2bf('0x18')][_0xe2bf('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x37c919){logger[_0xe2bf('0xd')](_0xe2bf('0x1a'),_0x3dcb73);logger[_0xe2bf('0xf')]('CreateCmHopperHistory',_0x3dcb73,JSON[_0xe2bf('0x1b')](_0x37c919));_0x4d481f(_0x37c919);})[_0xe2bf('0x14')](function(_0x20d056){logger[_0xe2bf('0x11')]('CreateCmHopperHistory',_0x20d056['message'],_0x3dcb73);_0x1f4691(_0x45f619[_0xe2bf('0x11')](0x1f4,_0x20d056[_0xe2bf('0x13')]));});});};exports[_0xe2bf('0x1c')]=function(_0x9f19ac){var _0x510af0=this;return new Promise(function(_0x1d1798,_0x42d2b8){return db['CmHopperHistory'][_0xe2bf('0x1d')]({'raw':_0x9f19ac[_0xe2bf('0x18')]?_0x9f19ac[_0xe2bf('0x18')][_0xe2bf('0x19')]===undefined?!![]:![]:!![],'where':_0x9f19ac[_0xe2bf('0x18')]?_0x9f19ac['options'][_0xe2bf('0x1e')]||null:null,'attributes':[[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')][_0xe2bf('0x21')]('id')),_0xe2bf('0x22')],[db[_0xe2bf('0x1f')]['fn']('COUNT',db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x24')))),_0xe2bf('0x25')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db['sequelize']['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x26')))),_0xe2bf('0x27')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x28')))),_0xe2bf('0x29')],[db[_0xe2bf('0x1f')]['fn']('AVG',db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db['sequelize']['fn'](_0xe2bf('0x2a'),db[_0xe2bf('0x1f')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xe2bf('0x2b')]]})[_0xe2bf('0xc')](function(_0x4da120){logger['info'](_0xe2bf('0x1c'),_0x9f19ac);logger[_0xe2bf('0xf')](_0xe2bf('0x1c'),_0x9f19ac,JSON[_0xe2bf('0x1b')](_0x4da120));_0x1d1798(_0x4da120);})[_0xe2bf('0x14')](function(_0x278d6e){logger[_0xe2bf('0x11')](_0xe2bf('0x1c'),_0x278d6e[_0xe2bf('0x13')],_0x9f19ac);_0x42d2b8(_0x510af0[_0xe2bf('0x11')](0x1f4,_0x278d6e['message']));});});};exports[_0xe2bf('0x2c')]=function(_0xb37220){var _0xdc153d=this;return new Promise(function(_0x57ee7c,_0x3a2c31){return db[_0xe2bf('0x15')][_0xe2bf('0x1d')]({'raw':_0xb37220[_0xe2bf('0x18')]?_0xb37220[_0xe2bf('0x18')][_0xe2bf('0x19')]===undefined?!![]:![]:!![],'where':_0xb37220['options']?_0xb37220[_0xe2bf('0x18')][_0xe2bf('0x1e')]||null:null,'attributes':[['campaign',_0xe2bf('0x2d')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db['sequelize']['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x2e')))),'outboundNoSuchCallsDay'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0xe2bf('0x23')](_0xe2bf('0x2f')))),_0xe2bf('0x30')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db['sequelize']['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')]('`state`\x20=\x204,\x201,\x20null'))),_0xe2bf('0x31')],[db['sequelize']['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')]('`state`\x20=\x205,\x201,\x20null'))),_0xe2bf('0x32')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')]['literal']('`state`\x20=\x208,\x201,\x20null'))),'outboundCongestionCallsDay'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db['sequelize']['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xe2bf('0x33')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db['sequelize'][_0xe2bf('0x23')](_0xe2bf('0x34')))),_0xe2bf('0x35')],[db[_0xe2bf('0x1f')]['fn']('COUNT',db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')]['literal'](_0xe2bf('0x36')))),'outboundUnknownCallsDay'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db['sequelize'][_0xe2bf('0x23')](_0xe2bf('0x37')))),'outboundBlacklistCallsDay'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db['sequelize'][_0xe2bf('0x23')](_0xe2bf('0x38')))),_0xe2bf('0x39')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')]['literal'](_0xe2bf('0x3a')))),'outboundRejectCallsDay'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')]['literal'](_0xe2bf('0x3b')))),_0xe2bf('0x3c')],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x3d')))),_0xe2bf('0x3e')],[db[_0xe2bf('0x1f')]['fn']('COUNT',db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x3f')))),_0xe2bf('0x40')]],'group':[_0xe2bf('0x41')]})[_0xe2bf('0xc')](function(_0x4659d0){logger[_0xe2bf('0xd')]('GetVoiceQueueHopperHistory',_0xb37220);logger[_0xe2bf('0xf')](_0xe2bf('0x2c'),_0xb37220,JSON[_0xe2bf('0x1b')](_0x4659d0));_0x57ee7c(_0x4659d0);})[_0xe2bf('0x14')](function(_0x1a92cf){logger[_0xe2bf('0x11')]('GetVoiceQueueHopperHistory',_0x1a92cf['message'],_0xb37220);_0x3a2c31(_0xdc153d['error'](0x1f4,_0x1a92cf['message']));});});};exports['GetCampaignHopperHistory']=function(_0x568640){var _0x4b16bd=this;return new Promise(function(_0x11133a,_0x31668a){return db[_0xe2bf('0x15')]['findAll']({'raw':_0x568640[_0xe2bf('0x18')]?_0x568640[_0xe2bf('0x18')][_0xe2bf('0x19')]===undefined?!![]:![]:!![],'where':_0x568640[_0xe2bf('0x18')]?_0x568640[_0xe2bf('0x18')][_0xe2bf('0x1e')]||null:null,'attributes':[[_0xe2bf('0x41'),'name'],[db[_0xe2bf('0x1f')]['fn'](_0xe2bf('0x20'),db[_0xe2bf('0x1f')][_0xe2bf('0x21')]('id')),_0xe2bf('0x42')],[db[_0xe2bf('0x1f')]['fn']('COUNT',db[_0xe2bf('0x1f')]['fn']('IF',db[_0xe2bf('0x1f')][_0xe2bf('0x23')](_0xe2bf('0x24')))),'ivrAnswerCallsDay']],'group':[_0xe2bf('0x41')]})[_0xe2bf('0xc')](function(_0xe05eda){logger['info'](_0xe2bf('0x43'),_0x568640);logger[_0xe2bf('0xf')](_0xe2bf('0x43'),_0x568640,JSON['stringify'](_0xe05eda));_0x11133a(_0xe05eda);})['catch'](function(_0x5611ec){logger[_0xe2bf('0x11')](_0xe2bf('0x43'),_0x5611ec['message'],_0x568640);_0x31668a(_0x4b16bd[_0xe2bf('0x11')](0x1f4,_0x5611ec[_0xe2bf('0x13')]));});});};
\ No newline at end of file
index b98b11f..f31d5eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63f9=['Router','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','/:id','show','post','put','update','multer','path'];(function(_0x564a02,_0x1f7857){var _0x3f743c=function(_0x53c576){while(--_0x53c576){_0x564a02['push'](_0x564a02['shift']());}};_0x3f743c(++_0x1f7857);}(_0x63f9,0x102));var _0x963f=function(_0xdba7dc,_0x4b4c66){_0xdba7dc=_0xdba7dc-0x0;var _0x369d29=_0x63f9[_0xdba7dc];return _0x369d29;};'use strict';var multer=require(_0x963f('0x0'));var util=require('util');var path=require(_0x963f('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x963f('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x963f('0x3'));router[_0x963f('0x4')]('/',auth[_0x963f('0x5')](),controller[_0x963f('0x6')]);router['get'](_0x963f('0x7'),auth[_0x963f('0x5')](),controller['describe']);router[_0x963f('0x4')](_0x963f('0x8'),auth[_0x963f('0x5')](),controller[_0x963f('0x9')]);router[_0x963f('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x963f('0xb')]('/:id',auth[_0x963f('0x5')](),controller[_0x963f('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x0898=['index','/describe','isAuthenticated','describe','post','create','put','/:id','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get'];(function(_0x27817b,_0x2f7e80){var _0x11692c=function(_0x30798c){while(--_0x30798c){_0x27817b['push'](_0x27817b['shift']());}};_0x11692c(++_0x2f7e80);}(_0x0898,0x8e));var _0x8089=function(_0x5f0001,_0x5c1a40){_0x5f0001=_0x5f0001-0x0;var _0x38426a=_0x0898[_0x5f0001];return _0x38426a;};'use strict';var multer=require(_0x8089('0x0'));var util=require(_0x8089('0x1'));var path=require(_0x8089('0x2'));var timeout=require('connect-timeout');var express=require(_0x8089('0x3'));var router=express[_0x8089('0x4')]();var fs_extra=require(_0x8089('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8089('0x6'));var config=require(_0x8089('0x7'));var controller=require(_0x8089('0x8'));router[_0x8089('0x9')]('/',auth['isAuthenticated'](),controller[_0x8089('0xa')]);router[_0x8089('0x9')](_0x8089('0xb'),auth[_0x8089('0xc')](),controller[_0x8089('0xd')]);router[_0x8089('0x9')]('/:id',auth[_0x8089('0xc')](),controller['show']);router[_0x8089('0xe')]('/',auth[_0x8089('0xc')](),controller[_0x8089('0xf')]);router[_0x8089('0x10')](_0x8089('0x11'),auth[_0x8089('0xc')](),controller['update']);module[_0x8089('0x12')]=router;
\ No newline at end of file
index 24f48ec..ab7046e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfcc=['sequelize','exports','STRING'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xdfcc,0x8d));var _0xcdfc=function(_0x1e9e56,_0x34a74a){_0x1e9e56=_0x1e9e56-0x0;var _0x5d5e2e=_0xdfcc[_0x1e9e56];return _0x5d5e2e;};'use strict';var Sequelize=require(_0xcdfc('0x0'));module[_0xcdfc('0x1')]={'name':{'type':Sequelize[_0xcdfc('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xcdfc('0x2')]},'dialPrefix':{'type':Sequelize[_0xcdfc('0x2')]}};
\ No newline at end of file
+var _0x3e25=['exports','STRING','sequelize'];(function(_0x356a22,_0x241023){var _0x3b9add=function(_0x22fc24){while(--_0x22fc24){_0x356a22['push'](_0x356a22['shift']());}};_0x3b9add(++_0x241023);}(_0x3e25,0x14f));var _0x53e2=function(_0x3ef41e,_0x336511){_0x3ef41e=_0x3ef41e-0x0;var _0x51df4c=_0x3e25[_0x3ef41e];return _0x51df4c;};'use strict';var Sequelize=require(_0x53e2('0x0'));module[_0x53e2('0x1')]={'name':{'type':Sequelize[_0x53e2('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x53e2('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 217353f..e4e7eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40af=['mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','Lists','UserProfileResource','error','stack','name','index','map','CmList','rawAttributes','key','model','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','ListId','Disposition','getDispositions','findOne','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','each','omit','success','dataValues','push','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','raw','getContactsCsv','ContactItemType','OrderBy','select','from','cm_contacts','c.ListId\x20=\x20?','distinct','c.cf_','customField_','alias','field','item','ItemTypeId\x20=\x20?','additionalPhone_','cm_contact_has_items','CmContactId\x20=\x20c.id','toString','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','addCustomField','sequelize','transaction','Sequelize','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','removeAgents','userCmList:remove','getAgents','info','fast-json-patch','request-promise','moment'];(function(_0x35de68,_0x165ef8){var _0xf70815=function(_0x731b8e){while(--_0x731b8e){_0x35de68['push'](_0x35de68['shift']());}};_0xf70815(++_0x165ef8);}(_0x40af,0x1d7));var _0xf40a=function(_0x6a557b,_0x2760ef){_0x6a557b=_0x6a557b-0x0;var _0xf21963=_0x40af[_0x6a557b];return _0xf21963;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf40a('0x0'));var rp=require(_0xf40a('0x1'));var moment=require(_0xf40a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xf40a('0x3'));var util=require('util');var path=require(_0xf40a('0x4'));var sox=require(_0xf40a('0x5'));var csv=require(_0xf40a('0x6'));var ejs=require(_0xf40a('0x7'));var fs=require('fs');var fs_extra=require(_0xf40a('0x8'));var _=require('lodash');var squel=require(_0xf40a('0x9'));var crypto=require('crypto');var jsforce=require(_0xf40a('0xa'));var deskjs=require(_0xf40a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xf40a('0xc'));var Papa=require(_0xf40a('0xd'));var Redis=require(_0xf40a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf40a('0xf'));var hardwareService=require(_0xf40a('0x10'));var logger=require(_0xf40a('0x11'))('api');var utils=require(_0xf40a('0x12'));var config=require(_0xf40a('0x13'));var licenseUtil=require(_0xf40a('0x14'));var db=require(_0xf40a('0x15'))['db'];var csv_results;config[_0xf40a('0x16')]=_['defaults'](config[_0xf40a('0x16')],{'host':_0xf40a('0x17'),'port':0x18eb});var socket=require(_0xf40a('0x18'))(new Redis(config['redis']));require('./cmList.socket')[_0xf40a('0x19')](socket);function respondWithStatusCode(_0x88c41f,_0x58f96b){_0x58f96b=_0x58f96b||0xcc;return function(_0x55be39){if(_0x55be39){return _0x88c41f[_0xf40a('0x1a')](_0x58f96b);}return _0x88c41f[_0xf40a('0x1b')](_0x58f96b)[_0xf40a('0x1c')]();};}function respondWithResult(_0x59f191,_0x51a93f){_0x51a93f=_0x51a93f||0xc8;return function(_0x38e7f7){if(_0x38e7f7){return _0x59f191['status'](_0x51a93f)[_0xf40a('0x1d')](_0x38e7f7);}};}function respondWithFilteredResult(_0x148ee6,_0x1f0bc0){return function(_0x515689){if(_0x515689){var _0x5d0bc6=typeof _0x1f0bc0[_0xf40a('0x1e')]==='undefined'&&typeof _0x1f0bc0[_0xf40a('0x1f')]===_0xf40a('0x20');var _0x219ee8=_0x515689[_0xf40a('0x21')];var _0x3ce63b=_0x5d0bc6?0x0:_0x1f0bc0[_0xf40a('0x1e')];var _0x12ee8e=_0x5d0bc6?_0x515689[_0xf40a('0x21')]:_0x1f0bc0[_0xf40a('0x1e')]+_0x1f0bc0['limit'];var _0x3182fe;if(_0x12ee8e>=_0x219ee8){_0x12ee8e=_0x219ee8;_0x3182fe=0xc8;}else{_0x3182fe=0xce;}_0x148ee6[_0xf40a('0x1b')](_0x3182fe);return _0x148ee6['set'](_0xf40a('0x22'),_0x3ce63b+'-'+_0x12ee8e+'/'+_0x219ee8)['json'](_0x515689);}return null;};}function patchUpdates(_0x29e533){return function(_0x53159c){try{jsonpatch[_0xf40a('0x23')](_0x53159c,_0x29e533,!![]);}catch(_0x5a3620){return BPromise[_0xf40a('0x24')](_0x5a3620);}return _0x53159c[_0xf40a('0x25')]();};}function saveUpdates(_0x445e7e,_0x491059){return function(_0x5591c8){if(_0x5591c8){return _0x5591c8[_0xf40a('0x26')](_0x445e7e)[_0xf40a('0x27')](function(_0x5e2151){return _0x5e2151;});}return null;};}function removeEntity(_0x2b3b66,_0x1008a7){return function(_0x438432){if(_0x438432){return _0x438432[_0xf40a('0x28')]()[_0xf40a('0x27')](function(){var _0x52d18e=_0x438432['get']({'plain':!![]});var _0x31f5ec=_0xf40a('0x29');return db[_0xf40a('0x2a')]['destroy']({'where':{'type':_0x31f5ec,'resourceId':_0x52d18e['id']}})[_0xf40a('0x27')](function(){return _0x438432;});})['then'](function(){_0x2b3b66[_0xf40a('0x1b')](0xcc)[_0xf40a('0x1c')]();});}};}function handleEntityNotFound(_0x2c1046,_0x5d622a){return function(_0x463772){if(!_0x463772){_0x2c1046['sendStatus'](0x194);}return _0x463772;};}function handleError(_0x3aa776,_0x48bb1a){_0x48bb1a=_0x48bb1a||0x1f4;return function(_0xf6ef8f){logger[_0xf40a('0x2b')](_0xf6ef8f[_0xf40a('0x2c')]);if(_0xf6ef8f[_0xf40a('0x2d')]){delete _0xf6ef8f[_0xf40a('0x2d')];}_0x3aa776[_0xf40a('0x1b')](_0x48bb1a)['send'](_0xf6ef8f);};}exports[_0xf40a('0x2e')]=function(_0x3989a4,_0x4c54ae){var _0x35828c={},_0x4e7646={},_0x43b643={'count':0x0,'rows':[]};var _0x421d12=_[_0xf40a('0x2f')](db[_0xf40a('0x30')][_0xf40a('0x31')],function(_0x3de852){return{'name':_0x3de852['fieldName'],'type':_0x3de852['type'][_0xf40a('0x32')]};});_0x4e7646[_0xf40a('0x33')]=_[_0xf40a('0x2f')](_0x421d12,'name');_0x4e7646['query']=_[_0xf40a('0x34')](_0x3989a4['query']);_0x4e7646[_0xf40a('0x35')]=_['intersection'](_0x4e7646['model'],_0x4e7646[_0xf40a('0x36')]);_0x35828c[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x4e7646[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x3989a4[_0xf40a('0x36')][_0xf40a('0x39')]));_0x35828c[_0xf40a('0x37')]=_0x35828c[_0xf40a('0x37')]['length']?_0x35828c[_0xf40a('0x37')]:_0x4e7646[_0xf40a('0x33')];if(!_0x3989a4[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x35828c[_0xf40a('0x1f')]=qs[_0xf40a('0x1f')](_0x3989a4[_0xf40a('0x36')][_0xf40a('0x1f')]);_0x35828c[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x3989a4[_0xf40a('0x36')]['offset']);}_0x35828c[_0xf40a('0x3c')]=qs[_0xf40a('0x3d')](_0x3989a4[_0xf40a('0x36')]['sort']);_0x35828c['where']=qs['filters'](_[_0xf40a('0x3e')](_0x3989a4['query'],_0x4e7646['filters']),_0x421d12);if(_0x3989a4['query'][_0xf40a('0x3f')]){_0x35828c[_0xf40a('0x40')]=_['merge'](_0x35828c[_0xf40a('0x40')],{'$or':_[_0xf40a('0x2f')](_0x421d12,function(_0x2dc5b3){if(_0x2dc5b3[_0xf40a('0x41')]!=='VIRTUAL'){var _0x18271d={};_0x18271d[_0x2dc5b3['name']]={'$like':'%'+_0x3989a4[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0x18271d;}})});}_0x35828c=_[_0xf40a('0x42')]({},_0x35828c,_0x3989a4[_0xf40a('0x43')]);var _0x4d0663={'where':_0x35828c[_0xf40a('0x40')]};return db[_0xf40a('0x30')]['count'](_0x4d0663)[_0xf40a('0x27')](function(_0x4ad46b){_0x43b643[_0xf40a('0x21')]=_0x4ad46b;if(_0x3989a4[_0xf40a('0x36')][_0xf40a('0x44')]){_0x35828c[_0xf40a('0x45')]=[{'all':!![]}];}return db[_0xf40a('0x30')][_0xf40a('0x46')](_0x35828c);})['then'](function(_0x4ff890){_0x43b643[_0xf40a('0x47')]=_0x4ff890;return _0x43b643;})[_0xf40a('0x27')](respondWithFilteredResult(_0x4c54ae,_0x35828c))[_0xf40a('0x48')](handleError(_0x4c54ae,null));};exports[_0xf40a('0x49')]=function(_0x293fe1,_0x3e734c){var _0x292758={'raw':![],'where':{'id':_0x293fe1[_0xf40a('0x4a')]['id']}},_0x25f3d1={};_0x25f3d1[_0xf40a('0x33')]=_[_0xf40a('0x34')](db[_0xf40a('0x30')][_0xf40a('0x31')]);_0x25f3d1['query']=_[_0xf40a('0x34')](_0x293fe1[_0xf40a('0x36')]);_0x25f3d1['filters']=_[_0xf40a('0x38')](_0x25f3d1[_0xf40a('0x33')],_0x25f3d1[_0xf40a('0x36')]);_0x292758[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x25f3d1['model'],qs[_0xf40a('0x39')](_0x293fe1[_0xf40a('0x36')][_0xf40a('0x39')]));_0x292758[_0xf40a('0x37')]=_0x292758[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x292758[_0xf40a('0x37')]:_0x25f3d1[_0xf40a('0x33')];if(_0x293fe1[_0xf40a('0x36')][_0xf40a('0x44')]){_0x292758[_0xf40a('0x45')]=[{'all':!![]}];}_0x292758=_[_0xf40a('0x42')]({},_0x292758,_0x293fe1[_0xf40a('0x43')]);return db['CmList'][_0xf40a('0x4c')](_0x292758)[_0xf40a('0x27')](handleEntityNotFound(_0x3e734c,null))[_0xf40a('0x27')](respondWithResult(_0x3e734c,null))[_0xf40a('0x48')](handleError(_0x3e734c,null));};exports[_0xf40a('0x4d')]=function(_0x96059,_0x4bcfd4){return db['CmList'][_0xf40a('0x4d')](_0x96059['body'],{})[_0xf40a('0x27')](function(_0x413a87){var _0x59fee4=_0x96059[_0xf40a('0x4e')][_0xf40a('0x4f')]({'plain':!![]});if(!_0x59fee4)throw new Error(_0xf40a('0x50'));if(_0x59fee4['role']===_0xf40a('0x4e')){var _0x5ae5e3=_0x413a87[_0xf40a('0x4f')]({'plain':!![]});var _0x11eecb='Lists';return db[_0xf40a('0x51')][_0xf40a('0x4c')]({'where':{'name':_0x11eecb,'userProfileId':_0x59fee4['userProfileId']},'raw':!![]})[_0xf40a('0x27')](function(_0xf34dc7){if(_0xf34dc7&&_0xf34dc7['autoAssociation']===0x0){return db[_0xf40a('0x2a')][_0xf40a('0x4d')]({'name':_0x5ae5e3['name'],'resourceId':_0x5ae5e3['id'],'type':_0xf34dc7[_0xf40a('0x2d')],'sectionId':_0xf34dc7['id']},{})['then'](function(){return _0x413a87;});}else{return _0x413a87;}})[_0xf40a('0x48')](function(_0xb96a31){logger['error'](_0xf40a('0x52'),_0xb96a31);throw _0xb96a31;});}return _0x413a87;})[_0xf40a('0x27')](respondWithResult(_0x4bcfd4,0xc9))['catch'](handleError(_0x4bcfd4,null));};exports[_0xf40a('0x26')]=function(_0x13a1de,_0x32926e){if(_0x13a1de[_0xf40a('0x53')]['id']){delete _0x13a1de[_0xf40a('0x53')]['id'];}return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x13a1de[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x32926e,null))[_0xf40a('0x27')](saveUpdates(_0x13a1de[_0xf40a('0x53')],null))[_0xf40a('0x27')](respondWithResult(_0x32926e,null))[_0xf40a('0x48')](handleError(_0x32926e,null));};exports['destroy']=function(_0x38e8b8,_0x5ef231){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x38e8b8[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x5ef231,null))[_0xf40a('0x27')](removeEntity(_0x5ef231,null))[_0xf40a('0x48')](handleError(_0x5ef231,null));};exports[_0xf40a('0x54')]=function(_0x205a62,_0x323594){return db[_0xf40a('0x30')][_0xf40a('0x54')]()[_0xf40a('0x27')](respondWithResult(_0x323594,null))[_0xf40a('0x48')](handleError(_0x323594,null));};exports['addDisposition']=function(_0x9f63f0,_0x398178,_0x1594d3){if(_0x9f63f0[_0xf40a('0x53')]['id']){delete _0x9f63f0[_0xf40a('0x53')]['id'];}return db['CmList'][_0xf40a('0x4c')]({'where':{'id':_0x9f63f0[_0xf40a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x398178,null))['then'](function(_0x342864){if(_0x342864){_0x9f63f0[_0xf40a('0x53')][_0xf40a('0x55')]=_0x342864['id'];return db[_0xf40a('0x56')][_0xf40a('0x4d')](_0x9f63f0['body']);}})[_0xf40a('0x27')](respondWithResult(_0x398178,null))[_0xf40a('0x48')](handleError(_0x398178,null));};exports[_0xf40a('0x57')]=function(_0x481ea0,_0x72adbd,_0x2e8f32){var _0x1d61f8={'raw':![],'where':{}};var _0xb8fd1d={};var _0x5a2ecd={'count':0x0,'rows':[]};return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x481ea0[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x72adbd,null))[_0xf40a('0x27')](function(_0x2501c3){if(_0x2501c3){_0xb8fd1d['model']=_[_0xf40a('0x34')](db[_0xf40a('0x56')][_0xf40a('0x31')]);_0xb8fd1d[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x481ea0[_0xf40a('0x36')]);_0xb8fd1d['filters']=_['intersection'](_0xb8fd1d[_0xf40a('0x33')],_0xb8fd1d[_0xf40a('0x36')]);_0x1d61f8[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0xb8fd1d[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x481ea0[_0xf40a('0x36')][_0xf40a('0x39')]));_0x1d61f8['attributes']=_0x1d61f8[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x1d61f8[_0xf40a('0x37')]:_0xb8fd1d[_0xf40a('0x33')];if(!_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x1d61f8[_0xf40a('0x1f')]=qs[_0xf40a('0x1f')](_0x481ea0[_0xf40a('0x36')][_0xf40a('0x1f')]);_0x1d61f8[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x481ea0['query'][_0xf40a('0x1e')]);}_0x1d61f8[_0xf40a('0x3c')]=qs['sort'](_0x481ea0[_0xf40a('0x36')]['sort']);_0x1d61f8[_0xf40a('0x40')]=qs[_0xf40a('0x35')](_['pick'](_0x481ea0[_0xf40a('0x36')],_0xb8fd1d[_0xf40a('0x35')]));_0x1d61f8[_0xf40a('0x40')][_0xf40a('0x55')]=_0x2501c3['id'];if(_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3f')]){_0x1d61f8[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x1d61f8['where'],{'$or':_[_0xf40a('0x2f')](_0x1d61f8[_0xf40a('0x37')],function(_0x43d1a4){var _0x3d3a97={};_0x3d3a97[_0x43d1a4]={'$like':'%'+_0x481ea0[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0x3d3a97;})});}_0x1d61f8=_[_0xf40a('0x42')]({},_0x1d61f8,_0x481ea0[_0xf40a('0x43')]);return db[_0xf40a('0x56')][_0xf40a('0x21')]({'where':_0x1d61f8[_0xf40a('0x40')]})[_0xf40a('0x27')](function(_0x27dee6){_0x5a2ecd['count']=_0x27dee6;if(_0x481ea0['query'][_0xf40a('0x44')]){_0x1d61f8[_0xf40a('0x45')]=[{'all':!![]}];}return db['Disposition'][_0xf40a('0x46')](_0x1d61f8);})[_0xf40a('0x27')](function(_0x2a1a83){_0x5a2ecd['rows']=_0x2a1a83;return _0x5a2ecd;});}})[_0xf40a('0x27')](respondWithFilteredResult(_0x72adbd,_0x1d61f8))[_0xf40a('0x48')](handleError(_0x72adbd,null));};exports[_0xf40a('0x59')]=function(_0xe665ce,_0x46d75f,_0x427189){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0xe665ce[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x46d75f,null))['then'](function(_0x2e5e03){if(_0x2e5e03){return _0x2e5e03[_0xf40a('0x59')](_0xe665ce['query'][_0xf40a('0x5a')]);}})[_0xf40a('0x27')](respondWithStatusCode(_0x46d75f,null))['catch'](handleError(_0x46d75f,null));};exports[_0xf40a('0x5b')]=function(_0x13a344,_0xd897e0,_0x3c7a03){return db[_0xf40a('0x30')]['find']({'where':{'id':_0x13a344[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0xd897e0,null))[_0xf40a('0x27')](function(_0x264f6f){if(_0x264f6f){var _0x565669=[];var _0x17a9ac={'success':[],'errors':[]};return db[_0xf40a('0x5c')][_0xf40a('0x54')]()[_0xf40a('0x27')](function(_0x38576a){if(_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]&&_[_0xf40a('0x5e')](_0x13a344['body'][_0xf40a('0x5d')])){if(_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')][_0xf40a('0x4b')]){_0x13a344['body']['tags']=_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')][_0xf40a('0x5f')](';')+';';}else{_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]=null;}}else{_0x13a344[_0xf40a('0x53')][_0xf40a('0x5d')]=null;}if(_0x13a344[_0xf40a('0x53')]&&_[_0xf40a('0x5e')](_0x13a344[_0xf40a('0x53')])){for(var _0xc5af83=0x0;_0xc5af83<_0x13a344[_0xf40a('0x53')][_0xf40a('0x4b')];_0xc5af83+=0x1){_0x13a344[_0xf40a('0x53')][_0xc5af83][_0xf40a('0x55')]=_0x13a344[_0xf40a('0x4a')]['id'];_0x565669['push'](_0x13a344[_0xf40a('0x53')][_0xc5af83]);}return BPromise[_0xf40a('0x60')](_0x565669,function(_0x3b1a42){return db[_0xf40a('0x5c')]['create'](_[_0xf40a('0x61')](_0x3b1a42,[_0xf40a('0x5a'),'id'])||{},{'fields':_[_0xf40a('0x34')](_0x38576a),'raw':!![]})[_0xf40a('0x27')](function(_0x3c404a){_0x17a9ac[_0xf40a('0x62')]['push'](_0x3c404a[_0xf40a('0x63')]);})[_0xf40a('0x48')](function(_0x118405){_0x17a9ac['errors'][_0xf40a('0x64')]({'data':_0x3b1a42,'error':_0x118405[_0xf40a('0x65')]});});})[_0xf40a('0x27')](function(_0x2a28d8){return _0x17a9ac;})[_0xf40a('0x48')](function(_0x2acaa6){return _0x2acaa6;});}else{_0xd897e0[_0xf40a('0x1b')](0x190)[_0xf40a('0x1d')]({'message':_0xf40a('0x66')});}});}})['then'](respondWithResult(_0xd897e0,null))[_0xf40a('0x48')](handleError(_0xd897e0,null));};exports[_0xf40a('0x67')]=function(_0x5c90f1,_0x4f3487,_0x5706c4){var _0x2f11db;return db['CmList'][_0xf40a('0x4c')]({'where':{'id':_0x5c90f1[_0xf40a('0x4a')]['id']},'include':[{'model':db[_0xf40a('0x68')],'as':_0xf40a('0x69')}]})[_0xf40a('0x27')](handleEntityNotFound(_0x4f3487,null))[_0xf40a('0x27')](function(_0x1b28f2){if(_0x1b28f2){_0x2f11db=_0x1b28f2;return db[_0xf40a('0x5c')][_0xf40a('0x31')];}})[_0xf40a('0x27')](function(_0x1af55f){if(_0x1af55f){var _0x2e81ac={};var _0x433a5a={};_0x433a5a['model']=_[_0xf40a('0x6a')](_[_0xf40a('0x34')](_0x1af55f),_[_0xf40a('0x2f')](_0x2f11db[_0xf40a('0x69')],function(_0x59512e){return util[_0xf40a('0x6b')]('cf_%d',_0x59512e['id']);}));_0x433a5a[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x5c90f1[_0xf40a('0x36')]);_0x433a5a[_0xf40a('0x35')]=_[_0xf40a('0x38')](_0x433a5a[_0xf40a('0x33')],_0x433a5a[_0xf40a('0x36')]);_0x2e81ac[_0xf40a('0x37')]=_['intersection'](_0x433a5a[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x5c90f1['query'][_0xf40a('0x39')]));_0x2e81ac[_0xf40a('0x37')]=_0x2e81ac[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x2e81ac['attributes']:_0x433a5a[_0xf40a('0x33')];if(!_0x5c90f1[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x2e81ac[_0xf40a('0x1f')]=qs['limit'](_0x5c90f1[_0xf40a('0x36')]['limit']);_0x2e81ac[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x5c90f1[_0xf40a('0x36')][_0xf40a('0x1e')]);}_0x2e81ac[_0xf40a('0x3c')]=qs['sort'](_0x5c90f1['query'][_0xf40a('0x3d')]);_0x2e81ac['where']=qs[_0xf40a('0x35')](_[_0xf40a('0x3e')](_0x5c90f1['query'],_0x433a5a[_0xf40a('0x35')]));_0x2e81ac[_0xf40a('0x6c')]=!![];if(_0x5c90f1[_0xf40a('0x36')]['filter']){_0x2e81ac[_0xf40a('0x40')]=_['merge'](_0x2e81ac[_0xf40a('0x40')],{'$or':_['map'](_0x2e81ac[_0xf40a('0x37')],function(_0x2acafa){var _0x5f54e9={};_0x5f54e9[_0x2acafa]={'$like':'%'+_0x5c90f1['query'][_0xf40a('0x3f')]+'%'};return _0x5f54e9;})});}_0x2e81ac=_[_0xf40a('0x42')]({},_0x2e81ac,_0x5c90f1[_0xf40a('0x43')]);return _0x2f11db[_0xf40a('0x67')](_0x2e81ac);}})['then'](respondWithResult(_0x4f3487,null))[_0xf40a('0x48')](handleError(_0x4f3487,null));};exports[_0xf40a('0x6d')]=function(_0x5c68b7,_0x54d9d7,_0x10330e){var _0x4e2f04;var _0x240dae;var _0x9ed80f;var _0x3fde72=_0x5c68b7[_0xf40a('0x4a')]['id'];csv_results=[];return db[_0xf40a('0x6e')]['findAll']({'attributes':['id',_0xf40a('0x2d')],'raw':!![],'order':[_0xf40a('0x6f')]})[_0xf40a('0x27')](function(_0x3d4006){_0x4e2f04=_0x3d4006;var _0x1479e3=_['keys'](db[_0xf40a('0x5c')][_0xf40a('0x31')]);return db['CmCustomField'][_0xf40a('0x46')]({'raw':!![],'attributes':['id','alias']})[_0xf40a('0x27')](function(_0x4597d6){_0x240dae=_0x4597d6;var _0x565654=squel[_0xf40a('0x70')]()[_0xf40a('0x39')](_0x1479e3)[_0xf40a('0x71')](_0xf40a('0x72'),'c')[_0xf40a('0x40')](_0xf40a('0x73'),_0x3fde72)[_0xf40a('0x40')]('c.deletedAt\x20is\x20null')[_0xf40a('0x74')]();for(var _0x3ba116=0x0;_0x3ba116<_0x240dae[_0xf40a('0x4b')];_0x3ba116++){_0x565654['field'](_0xf40a('0x75')+_0x240dae[_0x3ba116]['id'],_0xf40a('0x76')+_0x240dae[_0x3ba116][_0xf40a('0x77')]);}for(var _0x3ba116=0x0;_0x3ba116<_0x4e2f04[_0xf40a('0x4b')];_0x3ba116++){_0x565654[_0xf40a('0x78')](squel[_0xf40a('0x70')]()['field'](_0xf40a('0x79'))['from']('cm_contact_has_items')[_0xf40a('0x40')](_0xf40a('0x7a'),_0x4e2f04[_0x3ba116]['id'])[_0xf40a('0x40')]('CmContactId\x20=\x20c.id'),_0xf40a('0x7b')+_0x4e2f04[_0x3ba116][_0xf40a('0x2d')]);_0x565654['field'](squel['select']()['field']('description')['from'](_0xf40a('0x7c'))[_0xf40a('0x40')](_0xf40a('0x7a'),_0x4e2f04[_0x3ba116]['id'])[_0xf40a('0x40')](_0xf40a('0x7d')),'description_additionalPhone_'+_0x4e2f04[_0x3ba116]['name']);}var _0x596861=[];_0x596861[_0xf40a('0x64')](_0x565654[_0xf40a('0x7e')]());BPromise[_0xf40a('0x60')](_0x596861,handleQuery)['then'](function(_0xa59153){handleQuery(_0x565654['toString']());var _0x5ccdb6=csv_results[0x0];if(!_[_0xf40a('0x7f')](_0x5ccdb6)){var _0x3c825d=toCsv(_0x5ccdb6);var _0x3eda98=Date[_0xf40a('0x80')]();fs['writeFileSync'](util[_0xf40a('0x6b')](_0xf40a('0x81'),_0x3fde72,_0x3eda98),_0x3c825d);_0x54d9d7[_0xf40a('0x82')](_0xf40a('0x83'),_0xf40a('0x84')+util[_0xf40a('0x6b')](_0xf40a('0x85'),_0x3fde72,_0x3eda98));_0x54d9d7[_0xf40a('0x82')]('Content-type',_0xf40a('0x86'));return _0x54d9d7[_0xf40a('0x87')](util['format'](_0xf40a('0x81'),_0x3fde72,_0x3eda98));}else{return _0x54d9d7[_0xf40a('0x1a')](0xcc);}});});});};exports[_0xf40a('0x88')]=function(_0x413e5f,_0x562e2c,_0x4f0c35){var _0x5023fc;delete _0x413e5f[_0xf40a('0x53')]['id'];return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x413e5f[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x562e2c,null))[_0xf40a('0x27')](function(_0x3b0d85){if(_0x3b0d85){return db[_0xf40a('0x89')][_0xf40a('0x8a')](function(_0xa0ae01){return db[_0xf40a('0x68')][_0xf40a('0x4d')](_0x413e5f[_0xf40a('0x53')],{'transaction':_0xa0ae01})['then'](function(_0x53d548){_0x5023fc=_0x53d548;return _0x3b0d85['addCustomFields'](_0x53d548,{'transaction':_0xa0ae01});})[_0xf40a('0x27')](function(){var _0x268da8={'type':db[_0xf40a('0x8b')]['TEXT'],'transaction':_0xa0ae01};switch(_0x413e5f[_0xf40a('0x53')]['type']){case _0xf40a('0x8c'):_0x268da8[_0xf40a('0x41')]=db[_0xf40a('0x8b')]['TEXT'];break;case _0xf40a('0x8d'):_0x268da8[_0xf40a('0x41')]=db[_0xf40a('0x8b')][_0xf40a('0x8e')];break;case _0xf40a('0x8f'):_0x268da8[_0xf40a('0x41')]=db['Sequelize'][_0xf40a('0x90')];_0x268da8[_0xf40a('0x91')]=![];break;default:}return db[_0xf40a('0x89')]['queryInterface'][_0xf40a('0x92')]('cm_contacts',util[_0xf40a('0x6b')](_0xf40a('0x93'),_0x5023fc['id']),_0x268da8);})[_0xf40a('0x27')](function(){return _0x5023fc;});});}})[_0xf40a('0x27')](respondWithResult(_0x562e2c,null))[_0xf40a('0x48')](handleError(_0x562e2c,null));};exports[_0xf40a('0x94')]=function(_0x5f177c,_0x4fa74c,_0x1baf8b){var _0x578fc8={};var _0x86c0ba={};var _0x44a45e;var _0x5b4a40;return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x5f177c['params']['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x4fa74c,null))[_0xf40a('0x27')](function(_0x3e09e6){if(_0x3e09e6){_0x44a45e=_0x3e09e6;_0x86c0ba[_0xf40a('0x33')]=_[_0xf40a('0x34')](db[_0xf40a('0x68')][_0xf40a('0x31')]);_0x86c0ba['query']=_[_0xf40a('0x34')](_0x5f177c[_0xf40a('0x36')]);_0x86c0ba['filters']=_[_0xf40a('0x38')](_0x86c0ba[_0xf40a('0x33')],_0x86c0ba[_0xf40a('0x36')]);_0x578fc8[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x86c0ba['model'],qs[_0xf40a('0x39')](_0x5f177c[_0xf40a('0x36')][_0xf40a('0x39')]));_0x578fc8[_0xf40a('0x37')]=_0x578fc8[_0xf40a('0x37')][_0xf40a('0x4b')]?_0x578fc8[_0xf40a('0x37')]:_0x86c0ba[_0xf40a('0x33')];_0x578fc8['order']=qs[_0xf40a('0x3d')](_0x5f177c[_0xf40a('0x36')][_0xf40a('0x3d')]);_0x578fc8[_0xf40a('0x40')]=qs[_0xf40a('0x35')](_[_0xf40a('0x3e')](_0x5f177c[_0xf40a('0x36')],_0x86c0ba[_0xf40a('0x35')]));_0x578fc8[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x578fc8['where'],{'$or':[{'ListId':_0x3e09e6['id']},{'ListId':null}]});if(_0x5f177c[_0xf40a('0x36')]['filter']){_0x578fc8[_0xf40a('0x40')]=_['merge'](_0x578fc8[_0xf40a('0x40')],{'$or':_[_0xf40a('0x2f')](_0x578fc8[_0xf40a('0x37')],function(_0x29bb70){var _0xd31fc0={};_0xd31fc0[_0x29bb70]={'$like':'%'+_0x5f177c[_0xf40a('0x36')][_0xf40a('0x3f')]+'%'};return _0xd31fc0;})});}_0x578fc8=_[_0xf40a('0x42')]({},_0x578fc8,_0x5f177c[_0xf40a('0x43')]);return db['CmCustomField'][_0xf40a('0x95')](_0x578fc8);}})[_0xf40a('0x27')](respondWithResult(_0x4fa74c,null))['catch'](handleError(_0x4fa74c,null));};exports[_0xf40a('0x96')]=function(_0x396805,_0x20b5de){return db[_0xf40a('0x68')]['findAndCountAll']({'where':{'ListId':null}})[_0xf40a('0x27')](handleEntityNotFound(_0x20b5de,null))[_0xf40a('0x27')](function(_0x114e39){return _0x114e39;})[_0xf40a('0x27')](respondWithResult(_0x20b5de,null))[_0xf40a('0x48')](handleError(_0x20b5de,null));};exports[_0xf40a('0x97')]=function(_0x36a641,_0x199c6f,_0x229abf){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x36a641[_0xf40a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x199c6f,null))[_0xf40a('0x27')](function(_0x217b86){if(_0x217b86){return _0x217b86['addAgents'](_0x36a641[_0xf40a('0x53')][_0xf40a('0x5a')],_['omit'](_0x36a641[_0xf40a('0x53')],[_0xf40a('0x5a'),'id'])||{})[_0xf40a('0x98')](function(_0x45ff3f){for(var _0x256089=0x0;_0x256089<_0x36a641[_0xf40a('0x53')][_0xf40a('0x5a')][_0xf40a('0x4b')];_0x256089+=0x1){socket[_0xf40a('0x99')]('userCmList:save',{'UserId':Number(_0x36a641[_0xf40a('0x53')]['ids'][_0x256089]),'CmListId':Number(_0x36a641['params']['id'])});}return _0x45ff3f;});}})[_0xf40a('0x27')](respondWithResult(_0x199c6f,null))[_0xf40a('0x48')](handleError(_0x199c6f,null));};exports[_0xf40a('0x9a')]=function(_0x14d382,_0x299417,_0x6fd2b){return db[_0xf40a('0x30')][_0xf40a('0x4c')]({'where':{'id':_0x14d382[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x299417,null))[_0xf40a('0x27')](function(_0x1994b7){if(_0x1994b7){return _0x1994b7[_0xf40a('0x9a')](_0x14d382[_0xf40a('0x36')]['ids'])[_0xf40a('0x27')](function(){if(_[_0xf40a('0x5e')](_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')])){for(var _0x4f5b34=0x0;_0x4f5b34<_0x14d382['query']['ids'][_0xf40a('0x4b')];_0x4f5b34+=0x1){socket[_0xf40a('0x99')]('userCmList:remove',{'UserId':Number(_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')][_0x4f5b34]),'CmListId':Number(_0x14d382['params']['id'])});}}else{socket[_0xf40a('0x99')](_0xf40a('0x9b'),{'UserId':Number(_0x14d382[_0xf40a('0x36')][_0xf40a('0x5a')]),'CmListId':Number(_0x14d382[_0xf40a('0x4a')]['id'])});}});}})[_0xf40a('0x27')](respondWithStatusCode(_0x299417,null))['catch'](handleError(_0x299417,null));};exports[_0xf40a('0x9c')]=function(_0x5b5db4,_0x13b074,_0x14b267){var _0x206541={};var _0x1b9742={};var _0x49277c;var _0x4d8783;return db[_0xf40a('0x30')][_0xf40a('0x58')]({'where':{'id':_0x5b5db4[_0xf40a('0x4a')]['id']}})[_0xf40a('0x27')](handleEntityNotFound(_0x13b074,null))['then'](function(_0x467195){if(_0x467195){_0x49277c=_0x467195;_0x1b9742['model']=_[_0xf40a('0x34')](db['User'][_0xf40a('0x31')]);_0x1b9742[_0xf40a('0x36')]=_[_0xf40a('0x34')](_0x5b5db4['query']);_0x1b9742[_0xf40a('0x35')]=_[_0xf40a('0x38')](_0x1b9742[_0xf40a('0x33')],_0x1b9742[_0xf40a('0x36')]);_0x206541[_0xf40a('0x37')]=_[_0xf40a('0x38')](_0x1b9742[_0xf40a('0x33')],qs[_0xf40a('0x39')](_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x39')]));_0x206541[_0xf40a('0x37')]=_0x206541[_0xf40a('0x37')]['length']?_0x206541[_0xf40a('0x37')]:_0x1b9742['model'];_0x206541[_0xf40a('0x3c')]=qs[_0xf40a('0x3d')](_0x5b5db4['query']['sort']);_0x206541[_0xf40a('0x40')]=qs['filters'](_[_0xf40a('0x3e')](_0x5b5db4['query'],_0x1b9742[_0xf40a('0x35')]));if(_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x3f')]){_0x206541[_0xf40a('0x40')]=_[_0xf40a('0x42')](_0x206541['where'],{'$or':_[_0xf40a('0x2f')](_0x206541[_0xf40a('0x37')],function(_0x5d7587){var _0x1355d4={};_0x1355d4[_0x5d7587]={'$like':'%'+_0x5b5db4[_0xf40a('0x36')]['filter']+'%'};return _0x1355d4;})});}_0x206541=_[_0xf40a('0x42')]({},_0x206541,_0x5b5db4[_0xf40a('0x43')]);return _0x49277c['getAgents'](_0x206541);}})[_0xf40a('0x27')](function(_0x498032){if(_0x498032){_0x4d8783=_0x498032[_0xf40a('0x4b')];if(!_0x5b5db4[_0xf40a('0x36')][_0xf40a('0x3a')](_0xf40a('0x3b'))){_0x206541['limit']=qs[_0xf40a('0x1f')](_0x5b5db4['query']['limit']);_0x206541[_0xf40a('0x1e')]=qs[_0xf40a('0x1e')](_0x5b5db4['query'][_0xf40a('0x1e')]);}return _0x49277c[_0xf40a('0x9c')](_0x206541);}})[_0xf40a('0x27')](function(_0x13702e){if(_0x13702e){return _0x13702e?{'count':_0x4d8783,'rows':_0x13702e}:null;}})['then'](respondWithResult(_0x13b074,null))['catch'](handleError(_0x13b074,null));};function handleQuery(_0x21049e){logger[_0xf40a('0x9d')](_0x21049e);return db[_0xf40a('0x89')][_0xf40a('0x36')](_0x21049e)['spread'](function(_0x500858){csv_results[_0xf40a('0x64')](_0x500858);})[_0xf40a('0x48')](function(_0x255bc7){logger[_0xf40a('0x2b')](_0x255bc7['message']);});}
\ No newline at end of file
+var _0x9dc7=['jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','get','Lists','UserProfileResource','destroy','stack','send','index','map','CmList','rawAttributes','fieldName','type','key','name','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','merge','options','includeAll','include','rows','catch','show','params','intersection','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','ListId','getDispositions','findOne','filters','sort','pick','Disposition','removeDispositions','ids','addContacts','CmContact','isArray','tags','push','each','dataValues','errors','json','Malformed\x20request\x20syntax','getContacts','CmCustomField','concat','CustomFields','raw','ContactItemType','findAll','OrderBy','alias','select','from','c.ListId\x20=\x20?','c.cf_','customField_','field','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description','description_additionalPhone_','toString','now','writeFileSync','format','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','download','addCustomField','addCustomFields','Sequelize','TEXT','text','number','BOOLEAN','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','getGlobalCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','info','message','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x4199c6,_0x2d3f53){var _0x35b656=function(_0x384763){while(--_0x384763){_0x4199c6['push'](_0x4199c6['shift']());}};_0x35b656(++_0x2d3f53);}(_0x9dc7,0x1de));var _0x79dc=function(_0x21b87e,_0x369c30){_0x21b87e=_0x21b87e-0x0;var _0x20a19f=_0x9dc7[_0x21b87e];return _0x20a19f;};'use strict';var emlformat=require(_0x79dc('0x0'));var rimraf=require(_0x79dc('0x1'));var zipdir=require(_0x79dc('0x2'));var jsonpatch=require(_0x79dc('0x3'));var rp=require(_0x79dc('0x4'));var moment=require(_0x79dc('0x5'));var BPromise=require(_0x79dc('0x6'));var Mustache=require('mustache');var util=require(_0x79dc('0x7'));var path=require('path');var sox=require(_0x79dc('0x8'));var csv=require(_0x79dc('0x9'));var ejs=require(_0x79dc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x79dc('0xb'));var squel=require(_0x79dc('0xc'));var crypto=require(_0x79dc('0xd'));var jsforce=require(_0x79dc('0xe'));var deskjs=require(_0x79dc('0xf'));var toCsv=require(_0x79dc('0x9'));var querystring=require('querystring');var Papa=require(_0x79dc('0x10'));var Redis=require(_0x79dc('0x11'));var authService=require(_0x79dc('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x79dc('0x13'));var hardwareService=require(_0x79dc('0x14'));var logger=require(_0x79dc('0x15'))(_0x79dc('0x16'));var utils=require('../../config/utils');var config=require(_0x79dc('0x17'));var licenseUtil=require(_0x79dc('0x18'));var db=require('../../mysqldb')['db'];var csv_results;config[_0x79dc('0x19')]=_[_0x79dc('0x1a')](config['redis'],{'host':_0x79dc('0x1b'),'port':0x18eb});var socket=require(_0x79dc('0x1c'))(new Redis(config['redis']));require(_0x79dc('0x1d'))[_0x79dc('0x1e')](socket);function respondWithStatusCode(_0x915266,_0x38c507){_0x38c507=_0x38c507||0xcc;return function(_0x459310){if(_0x459310){return _0x915266[_0x79dc('0x1f')](_0x38c507);}return _0x915266['status'](_0x38c507)[_0x79dc('0x20')]();};}function respondWithResult(_0x5675af,_0x2c807b){_0x2c807b=_0x2c807b||0xc8;return function(_0x46e431){if(_0x46e431){return _0x5675af[_0x79dc('0x21')](_0x2c807b)['json'](_0x46e431);}};}function respondWithFilteredResult(_0x248d0e,_0x2655ec){return function(_0x209d27){if(_0x209d27){var _0x104b0a=typeof _0x2655ec[_0x79dc('0x22')]===_0x79dc('0x23')&&typeof _0x2655ec['limit']===_0x79dc('0x23');var _0x1a7ba6=_0x209d27[_0x79dc('0x24')];var _0x121aa0=_0x104b0a?0x0:_0x2655ec[_0x79dc('0x22')];var _0x5f1ed9=_0x104b0a?_0x209d27[_0x79dc('0x24')]:_0x2655ec[_0x79dc('0x22')]+_0x2655ec[_0x79dc('0x25')];var _0x22df1e;if(_0x5f1ed9>=_0x1a7ba6){_0x5f1ed9=_0x1a7ba6;_0x22df1e=0xc8;}else{_0x22df1e=0xce;}_0x248d0e[_0x79dc('0x21')](_0x22df1e);return _0x248d0e['set'](_0x79dc('0x26'),_0x121aa0+'-'+_0x5f1ed9+'/'+_0x1a7ba6)['json'](_0x209d27);}return null;};}function patchUpdates(_0x5dba60){return function(_0x410abb){try{jsonpatch[_0x79dc('0x27')](_0x410abb,_0x5dba60,!![]);}catch(_0xf0d436){return BPromise[_0x79dc('0x28')](_0xf0d436);}return _0x410abb[_0x79dc('0x29')]();};}function saveUpdates(_0x301dd1,_0x3a5e8f){return function(_0x3d53b0){if(_0x3d53b0){return _0x3d53b0[_0x79dc('0x2a')](_0x301dd1)[_0x79dc('0x2b')](function(_0x574154){return _0x574154;});}return null;};}function removeEntity(_0x4c8bfc,_0xa17a00){return function(_0x2043cb){if(_0x2043cb){return _0x2043cb['destroy']()[_0x79dc('0x2b')](function(){var _0x4c9890=_0x2043cb[_0x79dc('0x2c')]({'plain':!![]});var _0x3bee2e=_0x79dc('0x2d');return db[_0x79dc('0x2e')][_0x79dc('0x2f')]({'where':{'type':_0x3bee2e,'resourceId':_0x4c9890['id']}})[_0x79dc('0x2b')](function(){return _0x2043cb;});})['then'](function(){_0x4c8bfc[_0x79dc('0x21')](0xcc)[_0x79dc('0x20')]();});}};}function handleEntityNotFound(_0x5a23c8,_0x17e900){return function(_0x5742e1){if(!_0x5742e1){_0x5a23c8[_0x79dc('0x1f')](0x194);}return _0x5742e1;};}function handleError(_0x1631a3,_0x5b6287){_0x5b6287=_0x5b6287||0x1f4;return function(_0x1ff24d){logger['error'](_0x1ff24d[_0x79dc('0x30')]);if(_0x1ff24d['name']){delete _0x1ff24d['name'];}_0x1631a3[_0x79dc('0x21')](_0x5b6287)[_0x79dc('0x31')](_0x1ff24d);};}exports[_0x79dc('0x32')]=function(_0x199a3b,_0x135ac1){var _0x2714f1={},_0xd14275={},_0x421a6b={'count':0x0,'rows':[]};var _0x4438df=_[_0x79dc('0x33')](db[_0x79dc('0x34')][_0x79dc('0x35')],function(_0x337bdd){return{'name':_0x337bdd[_0x79dc('0x36')],'type':_0x337bdd[_0x79dc('0x37')][_0x79dc('0x38')]};});_0xd14275['model']=_[_0x79dc('0x33')](_0x4438df,_0x79dc('0x39'));_0xd14275[_0x79dc('0x3a')]=_[_0x79dc('0x3b')](_0x199a3b[_0x79dc('0x3a')]);_0xd14275['filters']=_['intersection'](_0xd14275[_0x79dc('0x3c')],_0xd14275['query']);_0x2714f1[_0x79dc('0x3d')]=_['intersection'](_0xd14275[_0x79dc('0x3c')],qs[_0x79dc('0x3e')](_0x199a3b[_0x79dc('0x3a')][_0x79dc('0x3e')]));_0x2714f1['attributes']=_0x2714f1[_0x79dc('0x3d')][_0x79dc('0x3f')]?_0x2714f1['attributes']:_0xd14275[_0x79dc('0x3c')];if(!_0x199a3b[_0x79dc('0x3a')][_0x79dc('0x40')](_0x79dc('0x41'))){_0x2714f1['limit']=qs['limit'](_0x199a3b['query'][_0x79dc('0x25')]);_0x2714f1[_0x79dc('0x22')]=qs['offset'](_0x199a3b[_0x79dc('0x3a')]['offset']);}_0x2714f1[_0x79dc('0x42')]=qs['sort'](_0x199a3b[_0x79dc('0x3a')]['sort']);_0x2714f1[_0x79dc('0x43')]=qs['filters'](_['pick'](_0x199a3b[_0x79dc('0x3a')],_0xd14275['filters']),_0x4438df);if(_0x199a3b[_0x79dc('0x3a')][_0x79dc('0x44')]){_0x2714f1[_0x79dc('0x43')]=_['merge'](_0x2714f1[_0x79dc('0x43')],{'$or':_[_0x79dc('0x33')](_0x4438df,function(_0xf82a7e){if(_0xf82a7e[_0x79dc('0x37')]!=='VIRTUAL'){var _0x3416b0={};_0x3416b0[_0xf82a7e[_0x79dc('0x39')]]={'$like':'%'+_0x199a3b[_0x79dc('0x3a')][_0x79dc('0x44')]+'%'};return _0x3416b0;}})});}_0x2714f1=_[_0x79dc('0x45')]({},_0x2714f1,_0x199a3b[_0x79dc('0x46')]);var _0x8ff549={'where':_0x2714f1['where']};return db[_0x79dc('0x34')][_0x79dc('0x24')](_0x8ff549)[_0x79dc('0x2b')](function(_0x3c4cb2){_0x421a6b[_0x79dc('0x24')]=_0x3c4cb2;if(_0x199a3b[_0x79dc('0x3a')][_0x79dc('0x47')]){_0x2714f1[_0x79dc('0x48')]=[{'all':!![]}];}return db['CmList']['findAll'](_0x2714f1);})[_0x79dc('0x2b')](function(_0x3a0d72){_0x421a6b[_0x79dc('0x49')]=_0x3a0d72;return _0x421a6b;})[_0x79dc('0x2b')](respondWithFilteredResult(_0x135ac1,_0x2714f1))[_0x79dc('0x4a')](handleError(_0x135ac1,null));};exports[_0x79dc('0x4b')]=function(_0x33794b,_0x1a2daf){var _0x44c562={'raw':![],'where':{'id':_0x33794b[_0x79dc('0x4c')]['id']}},_0x89ea83={};_0x89ea83[_0x79dc('0x3c')]=_[_0x79dc('0x3b')](db[_0x79dc('0x34')]['rawAttributes']);_0x89ea83['query']=_[_0x79dc('0x3b')](_0x33794b[_0x79dc('0x3a')]);_0x89ea83['filters']=_[_0x79dc('0x4d')](_0x89ea83[_0x79dc('0x3c')],_0x89ea83['query']);_0x44c562[_0x79dc('0x3d')]=_[_0x79dc('0x4d')](_0x89ea83[_0x79dc('0x3c')],qs['fields'](_0x33794b[_0x79dc('0x3a')][_0x79dc('0x3e')]));_0x44c562[_0x79dc('0x3d')]=_0x44c562['attributes'][_0x79dc('0x3f')]?_0x44c562[_0x79dc('0x3d')]:_0x89ea83[_0x79dc('0x3c')];if(_0x33794b[_0x79dc('0x3a')][_0x79dc('0x47')]){_0x44c562[_0x79dc('0x48')]=[{'all':!![]}];}_0x44c562=_[_0x79dc('0x45')]({},_0x44c562,_0x33794b[_0x79dc('0x46')]);return db[_0x79dc('0x34')]['find'](_0x44c562)['then'](handleEntityNotFound(_0x1a2daf,null))['then'](respondWithResult(_0x1a2daf,null))['catch'](handleError(_0x1a2daf,null));};exports[_0x79dc('0x4e')]=function(_0x414002,_0x498ecc){return db['CmList']['create'](_0x414002[_0x79dc('0x4f')],{})[_0x79dc('0x2b')](function(_0x42e30f){var _0x481644=_0x414002[_0x79dc('0x50')][_0x79dc('0x2c')]({'plain':!![]});if(!_0x481644)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x481644[_0x79dc('0x51')]===_0x79dc('0x50')){var _0x1a9e61=_0x42e30f[_0x79dc('0x2c')]({'plain':!![]});var _0x2c0ac1='Lists';return db[_0x79dc('0x52')]['find']({'where':{'name':_0x2c0ac1,'userProfileId':_0x481644[_0x79dc('0x53')]},'raw':!![]})[_0x79dc('0x2b')](function(_0x555c7f){if(_0x555c7f&&_0x555c7f[_0x79dc('0x54')]===0x0){return db[_0x79dc('0x2e')][_0x79dc('0x4e')]({'name':_0x1a9e61[_0x79dc('0x39')],'resourceId':_0x1a9e61['id'],'type':_0x555c7f['name'],'sectionId':_0x555c7f['id']},{})[_0x79dc('0x2b')](function(){return _0x42e30f;});}else{return _0x42e30f;}})[_0x79dc('0x4a')](function(_0x5a668f){logger[_0x79dc('0x55')](_0x79dc('0x56'),_0x5a668f);throw _0x5a668f;});}return _0x42e30f;})[_0x79dc('0x2b')](respondWithResult(_0x498ecc,0xc9))['catch'](handleError(_0x498ecc,null));};exports[_0x79dc('0x2a')]=function(_0x23cfcf,_0x54d143){if(_0x23cfcf[_0x79dc('0x4f')]['id']){delete _0x23cfcf[_0x79dc('0x4f')]['id'];}return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x23cfcf[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x54d143,null))[_0x79dc('0x2b')](saveUpdates(_0x23cfcf[_0x79dc('0x4f')],null))[_0x79dc('0x2b')](respondWithResult(_0x54d143,null))[_0x79dc('0x4a')](handleError(_0x54d143,null));};exports['destroy']=function(_0x2d775a,_0x2312b3){return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x2d775a[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x2312b3,null))['then'](removeEntity(_0x2312b3,null))[_0x79dc('0x4a')](handleError(_0x2312b3,null));};exports[_0x79dc('0x58')]=function(_0x3c5c3f,_0x2f2c0f){return db[_0x79dc('0x34')][_0x79dc('0x58')]()[_0x79dc('0x2b')](respondWithResult(_0x2f2c0f,null))[_0x79dc('0x4a')](handleError(_0x2f2c0f,null));};exports[_0x79dc('0x59')]=function(_0x58fe8c,_0x5a7144,_0x436178){if(_0x58fe8c[_0x79dc('0x4f')]['id']){delete _0x58fe8c[_0x79dc('0x4f')]['id'];}return db['CmList'][_0x79dc('0x57')]({'where':{'id':_0x58fe8c[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x5a7144,null))['then'](function(_0x383cc6){if(_0x383cc6){_0x58fe8c[_0x79dc('0x4f')][_0x79dc('0x5a')]=_0x383cc6['id'];return db['Disposition']['create'](_0x58fe8c[_0x79dc('0x4f')]);}})[_0x79dc('0x2b')](respondWithResult(_0x5a7144,null))[_0x79dc('0x4a')](handleError(_0x5a7144,null));};exports[_0x79dc('0x5b')]=function(_0x2ba498,_0x5e2432,_0x52f070){var _0x39f86f={'raw':![],'where':{}};var _0x3240dd={};var _0x317ddb={'count':0x0,'rows':[]};return db['CmList'][_0x79dc('0x5c')]({'where':{'id':_0x2ba498[_0x79dc('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5e2432,null))[_0x79dc('0x2b')](function(_0x1db98d){if(_0x1db98d){_0x3240dd[_0x79dc('0x3c')]=_['keys'](db['Disposition'][_0x79dc('0x35')]);_0x3240dd[_0x79dc('0x3a')]=_[_0x79dc('0x3b')](_0x2ba498['query']);_0x3240dd[_0x79dc('0x5d')]=_[_0x79dc('0x4d')](_0x3240dd[_0x79dc('0x3c')],_0x3240dd[_0x79dc('0x3a')]);_0x39f86f['attributes']=_[_0x79dc('0x4d')](_0x3240dd[_0x79dc('0x3c')],qs[_0x79dc('0x3e')](_0x2ba498[_0x79dc('0x3a')][_0x79dc('0x3e')]));_0x39f86f['attributes']=_0x39f86f[_0x79dc('0x3d')][_0x79dc('0x3f')]?_0x39f86f[_0x79dc('0x3d')]:_0x3240dd[_0x79dc('0x3c')];if(!_0x2ba498['query'][_0x79dc('0x40')](_0x79dc('0x41'))){_0x39f86f[_0x79dc('0x25')]=qs['limit'](_0x2ba498[_0x79dc('0x3a')][_0x79dc('0x25')]);_0x39f86f[_0x79dc('0x22')]=qs[_0x79dc('0x22')](_0x2ba498['query'][_0x79dc('0x22')]);}_0x39f86f['order']=qs[_0x79dc('0x5e')](_0x2ba498[_0x79dc('0x3a')][_0x79dc('0x5e')]);_0x39f86f[_0x79dc('0x43')]=qs[_0x79dc('0x5d')](_[_0x79dc('0x5f')](_0x2ba498[_0x79dc('0x3a')],_0x3240dd[_0x79dc('0x5d')]));_0x39f86f[_0x79dc('0x43')]['ListId']=_0x1db98d['id'];if(_0x2ba498['query']['filter']){_0x39f86f[_0x79dc('0x43')]=_['merge'](_0x39f86f[_0x79dc('0x43')],{'$or':_[_0x79dc('0x33')](_0x39f86f[_0x79dc('0x3d')],function(_0x362c83){var _0x26dae7={};_0x26dae7[_0x362c83]={'$like':'%'+_0x2ba498[_0x79dc('0x3a')][_0x79dc('0x44')]+'%'};return _0x26dae7;})});}_0x39f86f=_['merge']({},_0x39f86f,_0x2ba498[_0x79dc('0x46')]);return db['Disposition'][_0x79dc('0x24')]({'where':_0x39f86f[_0x79dc('0x43')]})[_0x79dc('0x2b')](function(_0x9f5522){_0x317ddb[_0x79dc('0x24')]=_0x9f5522;if(_0x2ba498[_0x79dc('0x3a')][_0x79dc('0x47')]){_0x39f86f[_0x79dc('0x48')]=[{'all':!![]}];}return db[_0x79dc('0x60')]['findAll'](_0x39f86f);})[_0x79dc('0x2b')](function(_0x163d0b){_0x317ddb[_0x79dc('0x49')]=_0x163d0b;return _0x317ddb;});}})[_0x79dc('0x2b')](respondWithFilteredResult(_0x5e2432,_0x39f86f))[_0x79dc('0x4a')](handleError(_0x5e2432,null));};exports[_0x79dc('0x61')]=function(_0x1156a4,_0x203f3e,_0xcf474d){return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x1156a4[_0x79dc('0x4c')]['id']}})['then'](handleEntityNotFound(_0x203f3e,null))[_0x79dc('0x2b')](function(_0x45d5fe){if(_0x45d5fe){return _0x45d5fe[_0x79dc('0x61')](_0x1156a4[_0x79dc('0x3a')][_0x79dc('0x62')]);}})['then'](respondWithStatusCode(_0x203f3e,null))[_0x79dc('0x4a')](handleError(_0x203f3e,null));};exports[_0x79dc('0x63')]=function(_0x39f8e3,_0x4c3ad3,_0x3a2756){return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x39f8e3[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x4c3ad3,null))[_0x79dc('0x2b')](function(_0x84c7df){if(_0x84c7df){var _0xf7a15a=[];var _0x106ab7={'success':[],'errors':[]};return db[_0x79dc('0x64')][_0x79dc('0x58')]()['then'](function(_0x548360){if(_0x39f8e3[_0x79dc('0x4f')]['tags']&&_[_0x79dc('0x65')](_0x39f8e3[_0x79dc('0x4f')][_0x79dc('0x66')])){if(_0x39f8e3[_0x79dc('0x4f')][_0x79dc('0x66')]['length']){_0x39f8e3[_0x79dc('0x4f')][_0x79dc('0x66')]=_0x39f8e3[_0x79dc('0x4f')]['tags']['join'](';')+';';}else{_0x39f8e3[_0x79dc('0x4f')]['tags']=null;}}else{_0x39f8e3[_0x79dc('0x4f')][_0x79dc('0x66')]=null;}if(_0x39f8e3[_0x79dc('0x4f')]&&_[_0x79dc('0x65')](_0x39f8e3['body'])){for(var _0x1ff989=0x0;_0x1ff989<_0x39f8e3[_0x79dc('0x4f')]['length'];_0x1ff989+=0x1){_0x39f8e3[_0x79dc('0x4f')][_0x1ff989][_0x79dc('0x5a')]=_0x39f8e3[_0x79dc('0x4c')]['id'];_0xf7a15a[_0x79dc('0x67')](_0x39f8e3[_0x79dc('0x4f')][_0x1ff989]);}return BPromise[_0x79dc('0x68')](_0xf7a15a,function(_0x30714e){return db['CmContact']['create'](_['omit'](_0x30714e,[_0x79dc('0x62'),'id'])||{},{'fields':_[_0x79dc('0x3b')](_0x548360),'raw':!![]})[_0x79dc('0x2b')](function(_0x54922d){_0x106ab7['success'][_0x79dc('0x67')](_0x54922d[_0x79dc('0x69')]);})['catch'](function(_0x564e5e){_0x106ab7[_0x79dc('0x6a')][_0x79dc('0x67')]({'data':_0x30714e,'error':_0x564e5e['message']});});})[_0x79dc('0x2b')](function(_0x489b77){return _0x106ab7;})['catch'](function(_0x3526db){return _0x3526db;});}else{_0x4c3ad3[_0x79dc('0x21')](0x190)[_0x79dc('0x6b')]({'message':_0x79dc('0x6c')});}});}})[_0x79dc('0x2b')](respondWithResult(_0x4c3ad3,null))[_0x79dc('0x4a')](handleError(_0x4c3ad3,null));};exports[_0x79dc('0x6d')]=function(_0x13b321,_0x2796d7,_0x28d691){var _0x1d99fb;return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x13b321['params']['id']},'include':[{'model':db[_0x79dc('0x6e')],'as':'CustomFields'}]})[_0x79dc('0x2b')](handleEntityNotFound(_0x2796d7,null))['then'](function(_0x41f1ea){if(_0x41f1ea){_0x1d99fb=_0x41f1ea;return db[_0x79dc('0x64')][_0x79dc('0x35')];}})['then'](function(_0x1da688){if(_0x1da688){var _0x27e3a1={};var _0x433c68={};_0x433c68['model']=_[_0x79dc('0x6f')](_[_0x79dc('0x3b')](_0x1da688),_['map'](_0x1d99fb[_0x79dc('0x70')],function(_0x43a5ec){return util['format']('cf_%d',_0x43a5ec['id']);}));_0x433c68[_0x79dc('0x3a')]=_[_0x79dc('0x3b')](_0x13b321['query']);_0x433c68['filters']=_['intersection'](_0x433c68['model'],_0x433c68[_0x79dc('0x3a')]);_0x27e3a1['attributes']=_['intersection'](_0x433c68[_0x79dc('0x3c')],qs[_0x79dc('0x3e')](_0x13b321[_0x79dc('0x3a')]['fields']));_0x27e3a1[_0x79dc('0x3d')]=_0x27e3a1[_0x79dc('0x3d')][_0x79dc('0x3f')]?_0x27e3a1[_0x79dc('0x3d')]:_0x433c68[_0x79dc('0x3c')];if(!_0x13b321[_0x79dc('0x3a')][_0x79dc('0x40')](_0x79dc('0x41'))){_0x27e3a1[_0x79dc('0x25')]=qs[_0x79dc('0x25')](_0x13b321[_0x79dc('0x3a')][_0x79dc('0x25')]);_0x27e3a1[_0x79dc('0x22')]=qs['offset'](_0x13b321[_0x79dc('0x3a')][_0x79dc('0x22')]);}_0x27e3a1[_0x79dc('0x42')]=qs[_0x79dc('0x5e')](_0x13b321[_0x79dc('0x3a')][_0x79dc('0x5e')]);_0x27e3a1['where']=qs[_0x79dc('0x5d')](_['pick'](_0x13b321[_0x79dc('0x3a')],_0x433c68['filters']));_0x27e3a1[_0x79dc('0x71')]=!![];if(_0x13b321[_0x79dc('0x3a')][_0x79dc('0x44')]){_0x27e3a1[_0x79dc('0x43')]=_[_0x79dc('0x45')](_0x27e3a1[_0x79dc('0x43')],{'$or':_[_0x79dc('0x33')](_0x27e3a1[_0x79dc('0x3d')],function(_0x27af55){var _0x557ecb={};_0x557ecb[_0x27af55]={'$like':'%'+_0x13b321['query'][_0x79dc('0x44')]+'%'};return _0x557ecb;})});}_0x27e3a1=_[_0x79dc('0x45')]({},_0x27e3a1,_0x13b321[_0x79dc('0x46')]);return _0x1d99fb[_0x79dc('0x6d')](_0x27e3a1);}})['then'](respondWithResult(_0x2796d7,null))[_0x79dc('0x4a')](handleError(_0x2796d7,null));};exports['getContactsCsv']=function(_0x553bb8,_0x4b33bd,_0x1c82a9){var _0x3fff6f;var _0x34efda;var _0x49f606;var _0x3c688f=_0x553bb8[_0x79dc('0x4c')]['id'];csv_results=[];return db[_0x79dc('0x72')][_0x79dc('0x73')]({'attributes':['id',_0x79dc('0x39')],'raw':!![],'order':[_0x79dc('0x74')]})[_0x79dc('0x2b')](function(_0x25cf0c){_0x3fff6f=_0x25cf0c;var _0x53fcfb=_[_0x79dc('0x3b')](db['CmContact'][_0x79dc('0x35')]);return db['CmCustomField'][_0x79dc('0x73')]({'raw':!![],'attributes':['id',_0x79dc('0x75')]})['then'](function(_0x91bc1a){_0x34efda=_0x91bc1a;var _0x17ab3d=squel[_0x79dc('0x76')]()[_0x79dc('0x3e')](_0x53fcfb)[_0x79dc('0x77')]('cm_contacts','c')['where'](_0x79dc('0x78'),_0x3c688f)[_0x79dc('0x43')]('c.deletedAt\x20is\x20null')['distinct']();for(var _0x5b6276=0x0;_0x5b6276<_0x34efda['length'];_0x5b6276++){_0x17ab3d['field'](_0x79dc('0x79')+_0x34efda[_0x5b6276]['id'],_0x79dc('0x7a')+_0x34efda[_0x5b6276][_0x79dc('0x75')]);}for(var _0x5b6276=0x0;_0x5b6276<_0x3fff6f[_0x79dc('0x3f')];_0x5b6276++){_0x17ab3d[_0x79dc('0x7b')](squel['select']()[_0x79dc('0x7b')]('item')[_0x79dc('0x77')](_0x79dc('0x7c'))['where'](_0x79dc('0x7d'),_0x3fff6f[_0x5b6276]['id'])[_0x79dc('0x43')](_0x79dc('0x7e')),_0x79dc('0x7f')+_0x3fff6f[_0x5b6276][_0x79dc('0x39')]);_0x17ab3d['field'](squel[_0x79dc('0x76')]()[_0x79dc('0x7b')](_0x79dc('0x80'))[_0x79dc('0x77')](_0x79dc('0x7c'))[_0x79dc('0x43')]('ItemTypeId\x20=\x20?',_0x3fff6f[_0x5b6276]['id'])[_0x79dc('0x43')](_0x79dc('0x7e')),_0x79dc('0x81')+_0x3fff6f[_0x5b6276][_0x79dc('0x39')]);}var _0x3ed0ea=[];_0x3ed0ea['push'](_0x17ab3d[_0x79dc('0x82')]());BPromise[_0x79dc('0x68')](_0x3ed0ea,handleQuery)['then'](function(_0x4cc075){handleQuery(_0x17ab3d[_0x79dc('0x82')]());var _0x5985b6=csv_results[0x0];if(!_['isEmpty'](_0x5985b6)){var _0x4afd07=toCsv(_0x5985b6);var _0x18573a=Date[_0x79dc('0x83')]();fs[_0x79dc('0x84')](util[_0x79dc('0x85')](_0x79dc('0x86'),_0x3c688f,_0x18573a),_0x4afd07);_0x4b33bd[_0x79dc('0x87')](_0x79dc('0x88'),_0x79dc('0x89')+util[_0x79dc('0x85')](_0x79dc('0x8a'),_0x3c688f,_0x18573a));_0x4b33bd[_0x79dc('0x87')](_0x79dc('0x8b'),'text/csv');return _0x4b33bd[_0x79dc('0x8c')](util[_0x79dc('0x85')]('/tmp/list_%d_%s.csv',_0x3c688f,_0x18573a));}else{return _0x4b33bd[_0x79dc('0x1f')](0xcc);}});});});};exports[_0x79dc('0x8d')]=function(_0x30e788,_0x546ea0,_0x2b99e6){var _0x32460c;delete _0x30e788[_0x79dc('0x4f')]['id'];return db[_0x79dc('0x34')][_0x79dc('0x5c')]({'where':{'id':_0x30e788[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x546ea0,null))['then'](function(_0x46c7c8){if(_0x46c7c8){return db['sequelize']['transaction'](function(_0x157aa5){return db['CmCustomField']['create'](_0x30e788[_0x79dc('0x4f')],{'transaction':_0x157aa5})['then'](function(_0x4dde55){_0x32460c=_0x4dde55;return _0x46c7c8[_0x79dc('0x8e')](_0x4dde55,{'transaction':_0x157aa5});})['then'](function(){var _0x5e4105={'type':db[_0x79dc('0x8f')][_0x79dc('0x90')],'transaction':_0x157aa5};switch(_0x30e788[_0x79dc('0x4f')][_0x79dc('0x37')]){case _0x79dc('0x91'):_0x5e4105[_0x79dc('0x37')]=db[_0x79dc('0x8f')][_0x79dc('0x90')];break;case _0x79dc('0x92'):_0x5e4105[_0x79dc('0x37')]=db[_0x79dc('0x8f')]['INTEGER'];break;case'switch':_0x5e4105[_0x79dc('0x37')]=db[_0x79dc('0x8f')][_0x79dc('0x93')];_0x5e4105['defaultValue']=![];break;default:}return db[_0x79dc('0x94')][_0x79dc('0x95')][_0x79dc('0x96')](_0x79dc('0x97'),util[_0x79dc('0x85')](_0x79dc('0x98'),_0x32460c['id']),_0x5e4105);})[_0x79dc('0x2b')](function(){return _0x32460c;});});}})[_0x79dc('0x2b')](respondWithResult(_0x546ea0,null))['catch'](handleError(_0x546ea0,null));};exports['getCustomFields']=function(_0x2e0808,_0x2a3007,_0x5588e9){var _0x85024c={};var _0x448491={};var _0x36a736;var _0x134918;return db[_0x79dc('0x34')][_0x79dc('0x5c')]({'where':{'id':_0x2e0808[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x2a3007,null))[_0x79dc('0x2b')](function(_0x4937e2){if(_0x4937e2){_0x36a736=_0x4937e2;_0x448491[_0x79dc('0x3c')]=_['keys'](db[_0x79dc('0x6e')][_0x79dc('0x35')]);_0x448491['query']=_[_0x79dc('0x3b')](_0x2e0808[_0x79dc('0x3a')]);_0x448491[_0x79dc('0x5d')]=_[_0x79dc('0x4d')](_0x448491[_0x79dc('0x3c')],_0x448491['query']);_0x85024c[_0x79dc('0x3d')]=_[_0x79dc('0x4d')](_0x448491['model'],qs[_0x79dc('0x3e')](_0x2e0808['query'][_0x79dc('0x3e')]));_0x85024c['attributes']=_0x85024c['attributes'][_0x79dc('0x3f')]?_0x85024c[_0x79dc('0x3d')]:_0x448491[_0x79dc('0x3c')];_0x85024c[_0x79dc('0x42')]=qs[_0x79dc('0x5e')](_0x2e0808[_0x79dc('0x3a')][_0x79dc('0x5e')]);_0x85024c[_0x79dc('0x43')]=qs[_0x79dc('0x5d')](_[_0x79dc('0x5f')](_0x2e0808[_0x79dc('0x3a')],_0x448491[_0x79dc('0x5d')]));_0x85024c[_0x79dc('0x43')]=_[_0x79dc('0x45')](_0x85024c[_0x79dc('0x43')],{'$or':[{'ListId':_0x4937e2['id']},{'ListId':null}]});if(_0x2e0808['query'][_0x79dc('0x44')]){_0x85024c[_0x79dc('0x43')]=_[_0x79dc('0x45')](_0x85024c[_0x79dc('0x43')],{'$or':_[_0x79dc('0x33')](_0x85024c[_0x79dc('0x3d')],function(_0xed0a53){var _0x40d601={};_0x40d601[_0xed0a53]={'$like':'%'+_0x2e0808[_0x79dc('0x3a')][_0x79dc('0x44')]+'%'};return _0x40d601;})});}_0x85024c=_[_0x79dc('0x45')]({},_0x85024c,_0x2e0808[_0x79dc('0x46')]);return db[_0x79dc('0x6e')]['findAndCountAll'](_0x85024c);}})[_0x79dc('0x2b')](respondWithResult(_0x2a3007,null))['catch'](handleError(_0x2a3007,null));};exports[_0x79dc('0x99')]=function(_0x35363e,_0x30771c){return db['CmCustomField'][_0x79dc('0x9a')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x30771c,null))[_0x79dc('0x2b')](function(_0x2b63d0){return _0x2b63d0;})[_0x79dc('0x2b')](respondWithResult(_0x30771c,null))[_0x79dc('0x4a')](handleError(_0x30771c,null));};exports['addAgents']=function(_0x84c2bd,_0x142d1c,_0x129d1f){return db[_0x79dc('0x34')][_0x79dc('0x57')]({'where':{'id':_0x84c2bd[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x142d1c,null))['then'](function(_0x5aaaee){if(_0x5aaaee){return _0x5aaaee[_0x79dc('0x9b')](_0x84c2bd['body']['ids'],_['omit'](_0x84c2bd[_0x79dc('0x4f')],['ids','id'])||{})[_0x79dc('0x9c')](function(_0xc36307){for(var _0x594fa7=0x0;_0x594fa7<_0x84c2bd['body']['ids'][_0x79dc('0x3f')];_0x594fa7+=0x1){socket['emit'](_0x79dc('0x9d'),{'UserId':Number(_0x84c2bd[_0x79dc('0x4f')][_0x79dc('0x62')][_0x594fa7]),'CmListId':Number(_0x84c2bd[_0x79dc('0x4c')]['id'])});}return _0xc36307;});}})[_0x79dc('0x2b')](respondWithResult(_0x142d1c,null))[_0x79dc('0x4a')](handleError(_0x142d1c,null));};exports[_0x79dc('0x9e')]=function(_0x33624a,_0x5090ac,_0xaf6442){return db['CmList']['find']({'where':{'id':_0x33624a[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x5090ac,null))[_0x79dc('0x2b')](function(_0x1c2db1){if(_0x1c2db1){return _0x1c2db1[_0x79dc('0x9e')](_0x33624a[_0x79dc('0x3a')][_0x79dc('0x62')])[_0x79dc('0x2b')](function(){if(_[_0x79dc('0x65')](_0x33624a[_0x79dc('0x3a')][_0x79dc('0x62')])){for(var _0x13568e=0x0;_0x13568e<_0x33624a['query'][_0x79dc('0x62')][_0x79dc('0x3f')];_0x13568e+=0x1){socket[_0x79dc('0x9f')](_0x79dc('0xa0'),{'UserId':Number(_0x33624a['query'][_0x79dc('0x62')][_0x13568e]),'CmListId':Number(_0x33624a[_0x79dc('0x4c')]['id'])});}}else{socket[_0x79dc('0x9f')]('userCmList:remove',{'UserId':Number(_0x33624a[_0x79dc('0x3a')][_0x79dc('0x62')]),'CmListId':Number(_0x33624a[_0x79dc('0x4c')]['id'])});}});}})[_0x79dc('0x2b')](respondWithStatusCode(_0x5090ac,null))['catch'](handleError(_0x5090ac,null));};exports[_0x79dc('0xa1')]=function(_0x53ecfd,_0x2cce6a,_0x3e7dad){var _0x1b286a={};var _0x44cae4={};var _0x192a06;var _0x2ac3b1;return db[_0x79dc('0x34')][_0x79dc('0x5c')]({'where':{'id':_0x53ecfd[_0x79dc('0x4c')]['id']}})[_0x79dc('0x2b')](handleEntityNotFound(_0x2cce6a,null))['then'](function(_0x212f3c){if(_0x212f3c){_0x192a06=_0x212f3c;_0x44cae4['model']=_['keys'](db['User']['rawAttributes']);_0x44cae4['query']=_[_0x79dc('0x3b')](_0x53ecfd[_0x79dc('0x3a')]);_0x44cae4[_0x79dc('0x5d')]=_[_0x79dc('0x4d')](_0x44cae4[_0x79dc('0x3c')],_0x44cae4[_0x79dc('0x3a')]);_0x1b286a['attributes']=_['intersection'](_0x44cae4[_0x79dc('0x3c')],qs[_0x79dc('0x3e')](_0x53ecfd[_0x79dc('0x3a')][_0x79dc('0x3e')]));_0x1b286a[_0x79dc('0x3d')]=_0x1b286a[_0x79dc('0x3d')][_0x79dc('0x3f')]?_0x1b286a[_0x79dc('0x3d')]:_0x44cae4[_0x79dc('0x3c')];_0x1b286a['order']=qs[_0x79dc('0x5e')](_0x53ecfd[_0x79dc('0x3a')][_0x79dc('0x5e')]);_0x1b286a[_0x79dc('0x43')]=qs[_0x79dc('0x5d')](_[_0x79dc('0x5f')](_0x53ecfd['query'],_0x44cae4[_0x79dc('0x5d')]));if(_0x53ecfd[_0x79dc('0x3a')][_0x79dc('0x44')]){_0x1b286a[_0x79dc('0x43')]=_[_0x79dc('0x45')](_0x1b286a[_0x79dc('0x43')],{'$or':_['map'](_0x1b286a[_0x79dc('0x3d')],function(_0x436d27){var _0x2cd0b4={};_0x2cd0b4[_0x436d27]={'$like':'%'+_0x53ecfd['query'][_0x79dc('0x44')]+'%'};return _0x2cd0b4;})});}_0x1b286a=_['merge']({},_0x1b286a,_0x53ecfd['options']);return _0x192a06['getAgents'](_0x1b286a);}})[_0x79dc('0x2b')](function(_0x5c54ab){if(_0x5c54ab){_0x2ac3b1=_0x5c54ab['length'];if(!_0x53ecfd[_0x79dc('0x3a')]['hasOwnProperty'](_0x79dc('0x41'))){_0x1b286a[_0x79dc('0x25')]=qs[_0x79dc('0x25')](_0x53ecfd[_0x79dc('0x3a')]['limit']);_0x1b286a[_0x79dc('0x22')]=qs[_0x79dc('0x22')](_0x53ecfd[_0x79dc('0x3a')]['offset']);}return _0x192a06[_0x79dc('0xa1')](_0x1b286a);}})[_0x79dc('0x2b')](function(_0x4e9d0d){if(_0x4e9d0d){return _0x4e9d0d?{'count':_0x2ac3b1,'rows':_0x4e9d0d}:null;}})['then'](respondWithResult(_0x2cce6a,null))['catch'](handleError(_0x2cce6a,null));};function handleQuery(_0x294231){logger[_0x79dc('0xa2')](_0x294231);return db[_0x79dc('0x94')][_0x79dc('0x3a')](_0x294231)[_0x79dc('0x9c')](function(_0x29e9d6){csv_results['push'](_0x29e9d6);})[_0x79dc('0x4a')](function(_0x3eb39c){logger['error'](_0x3eb39c[_0x79dc('0xa3')]);});}
\ No newline at end of file
index 01e1b86..335302b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x612267,_0x363a1f){var _0x46b502=function(_0x32791a){while(--_0x32791a){_0x612267['push'](_0x612267['shift']());}};_0x46b502(++_0x363a1f);}(_0x814b,0x1a2));var _0xb814=function(_0x409ad2,_0x5129c1){_0x409ad2=_0x409ad2-0x0;var _0x595b5f=_0x814b[_0x409ad2];return _0x595b5f;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
+var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x326f,0xd1));var _0xf326=function(_0x56f66c,_0x42eaf7){_0x56f66c=_0x56f66c-0x0;var _0x50ea2a=_0x326f[_0x56f66c];return _0x50ea2a;};'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
index bc34028..d1ed719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0d=['./cmList.attributes','define','CmList','cm_lists','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x363d57,_0x67d153){_0x363d57=_0x363d57-0x0;var _0x186f84=_0x6f0d[_0x363d57];return _0x186f84;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd6f0('0x4'));var fs=require('fs');var path=require(_0xd6f0('0x5'));var rimraf=require(_0xd6f0('0x6'));var config=require(_0xd6f0('0x7'));var attributes=require(_0xd6f0('0x8'));module['exports']=function(_0x2d2ce6,_0x4a8b0c){return _0x2d2ce6[_0xd6f0('0x9')](_0xd6f0('0xa'),attributes,{'tableName':_0xd6f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./cmList.attributes','define','CmList','cm_lists','../../config/logger','api','moment','bluebird'];(function(_0x3f5797,_0x44de24){var _0x5a8984=function(_0x2d3e94){while(--_0x2d3e94){_0x3f5797['push'](_0x3f5797['shift']());}};_0x5a8984(++_0x44de24);}(_0x9c44,0x178));var _0x49c4=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x9c44[_0x5608a3];return _0x1ed50a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9a0d5c..8fff832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7531=['then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmList.socket'];(function(_0x41a1f5,_0x11b2b0){var _0x3c088c=function(_0x3741f1){while(--_0x3741f1){_0x41a1f5['push'](_0x41a1f5['shift']());}};_0x3c088c(++_0x11b2b0);}(_0x7531,0x1c6));var _0x1753=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x7531[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x1753('0x0'));var util=require(_0x1753('0x1'));var moment=require(_0x1753('0x2'));var BPromise=require(_0x1753('0x3'));var rs=require(_0x1753('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1753('0x5'));var logger=require(_0x1753('0x6'))(_0x1753('0x7'));var config=require('../../config/environment');var jayson=require(_0x1753('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x1753('0x9')]=_[_0x1753('0xa')](config[_0x1753('0x9')],{'host':_0x1753('0xb'),'port':0x18eb});var socket=require(_0x1753('0xc'))(new Redis(config[_0x1753('0x9')]));require(_0x1753('0xd'))['register'](socket);function respondWithRpcPromise(_0x51e757,_0x43c4f4,_0x52edae){return new BPromise(function(_0x5b2295,_0x302d92){return client['request'](_0x51e757,_0x52edae)[_0x1753('0xe')](function(_0x3249ac){logger[_0x1753('0xf')](_0x1753('0x10'),_0x43c4f4,'request\x20sent');logger[_0x1753('0x11')](_0x1753('0x12'),_0x43c4f4,'request\x20sent',JSON[_0x1753('0x13')](_0x3249ac));if(_0x3249ac[_0x1753('0x14')]){if(_0x3249ac[_0x1753('0x14')][_0x1753('0x15')]===0x1f4){logger[_0x1753('0x14')]('CmList,\x20%s,\x20%s',_0x43c4f4,_0x3249ac[_0x1753('0x14')][_0x1753('0x16')]);return _0x302d92(_0x3249ac[_0x1753('0x14')][_0x1753('0x16')]);}logger[_0x1753('0x14')]('CmList,\x20%s,\x20%s',_0x43c4f4,_0x3249ac[_0x1753('0x14')]['message']);return _0x5b2295(_0x3249ac['error'][_0x1753('0x16')]);}else{logger['info'](_0x1753('0x10'),_0x43c4f4,_0x1753('0x17'));_0x5b2295(_0x3249ac[_0x1753('0x18')][_0x1753('0x16')]);}})[_0x1753('0x19')](function(_0x194e60){logger['error']('CmList,\x20%s,\x20%s',_0x43c4f4,_0x194e60);_0x302d92(_0x194e60);});});}
\ No newline at end of file
+var _0x02e8=['register','then','info','CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','defaults','localhost','socket.io-emitter','redis','./cmList.socket'];(function(_0x200b32,_0x8024f8){var _0x1778be=function(_0x4c2eb6){while(--_0x4c2eb6){_0x200b32['push'](_0x200b32['shift']());}};_0x1778be(++_0x8024f8);}(_0x02e8,0x85));var _0x802e=function(_0x55c0d6,_0x2eb8c0){_0x55c0d6=_0x55c0d6-0x0;var _0x248bb0=_0x02e8[_0x55c0d6];return _0x248bb0;};'use strict';var _=require('lodash');var util=require(_0x802e('0x0'));var moment=require('moment');var BPromise=require(_0x802e('0x1'));var rs=require(_0x802e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x802e('0x3'));var logger=require(_0x802e('0x4'))('rpc');var config=require(_0x802e('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x802e('0x6')](config['redis'],{'host':_0x802e('0x7'),'port':0x18eb});var socket=require(_0x802e('0x8'))(new Redis(config[_0x802e('0x9')]));require(_0x802e('0xa'))[_0x802e('0xb')](socket);function respondWithRpcPromise(_0x5b2c04,_0x5c5ccd,_0x2b1b28){return new BPromise(function(_0x5d8ac8,_0x4c1d86){return client['request'](_0x5b2c04,_0x2b1b28)[_0x802e('0xc')](function(_0x51d2cc){logger[_0x802e('0xd')](_0x802e('0xe'),_0x5c5ccd,'request\x20sent');logger[_0x802e('0xf')](_0x802e('0x10'),_0x5c5ccd,_0x802e('0x11'),JSON[_0x802e('0x12')](_0x51d2cc));if(_0x51d2cc[_0x802e('0x13')]){if(_0x51d2cc[_0x802e('0x13')][_0x802e('0x14')]===0x1f4){logger[_0x802e('0x13')](_0x802e('0xe'),_0x5c5ccd,_0x51d2cc[_0x802e('0x13')]['message']);return _0x4c1d86(_0x51d2cc[_0x802e('0x13')][_0x802e('0x15')]);}logger[_0x802e('0x13')](_0x802e('0xe'),_0x5c5ccd,_0x51d2cc[_0x802e('0x13')][_0x802e('0x15')]);return _0x5d8ac8(_0x51d2cc['error'][_0x802e('0x15')]);}else{logger['info'](_0x802e('0xe'),_0x5c5ccd,_0x802e('0x11'));_0x5d8ac8(_0x51d2cc[_0x802e('0x16')][_0x802e('0x15')]);}})[_0x802e('0x17')](function(_0x19bcde){logger[_0x802e('0x13')](_0x802e('0xe'),_0x5c5ccd,_0x19bcde);_0x4c1d86(_0x19bcde);});});}
\ No newline at end of file
index b97c1d4..c7f5d14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3701=['emit','removeListener','register','length','cmList:','save','update'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3701,0x8a));var _0x1370=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3701[_0x14add3];return _0x4a174f;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x1370('0x0'),'remove',_0x1370('0x1')];function createListener(_0xce2437,_0x53b594){return function(_0x24494d){_0x53b594[_0x1370('0x2')](_0xce2437,_0x24494d);};}function removeListener(_0x34fd76,_0x3aec4c){return function(){CmListEvents[_0x1370('0x3')](_0x34fd76,_0x3aec4c);};}exports[_0x1370('0x4')]=function(_0x5831ac){for(var _0x2d6ac9=0x0,_0x7207b9=events[_0x1370('0x5')];_0x2d6ac9<_0x7207b9;_0x2d6ac9++){var _0x22b1ad=events[_0x2d6ac9];var _0x3c2dd7=createListener(_0x1370('0x6')+_0x22b1ad,_0x5831ac);CmListEvents['on'](_0x22b1ad,_0x3c2dd7);}};
\ No newline at end of file
+var _0x0c72=['emit','register','length','cmList:','./cmList.events','remove','update'];(function(_0x44ace6,_0x448496){var _0x1b5359=function(_0x149c04){while(--_0x149c04){_0x44ace6['push'](_0x44ace6['shift']());}};_0x1b5359(++_0x448496);}(_0x0c72,0x115));var _0x20c7=function(_0xe83aa2,_0x101c07){_0xe83aa2=_0xe83aa2-0x0;var _0x1e4231=_0x0c72[_0xe83aa2];return _0x1e4231;};'use strict';var CmListEvents=require(_0x20c7('0x0'));var events=['save',_0x20c7('0x1'),_0x20c7('0x2')];function createListener(_0x2539c0,_0x3650b5){return function(_0x1ce0ca){_0x3650b5[_0x20c7('0x3')](_0x2539c0,_0x1ce0ca);};}function removeListener(_0x5ac249,_0x25db76){return function(){CmListEvents['removeListener'](_0x5ac249,_0x25db76);};}exports[_0x20c7('0x4')]=function(_0x1b29ae){for(var _0x576790=0x0,_0x1a6840=events[_0x20c7('0x5')];_0x576790<_0x1a6840;_0x576790++){var _0x183b0c=events[_0x576790];var _0x417633=createListener(_0x20c7('0x6')+_0x183b0c,_0x1b29ae);CmListEvents['on'](_0x183b0c,_0x417633);}};
\ No newline at end of file
index b4fb360..fcd2a41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x480d=['post','addDisposition','addContacts','addCustomField','addAgents','destroy','delete','removeDispositions','/:id/users','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./cmList.controller','isAuthenticated','get','/describe','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','getAgents','create'];(function(_0x515229,_0x25c805){var _0x578ff6=function(_0x45021a){while(--_0x45021a){_0x515229['push'](_0x515229['shift']());}};_0x578ff6(++_0x25c805);}(_0x480d,0xd6));var _0xd480=function(_0x305951,_0x509f08){_0x305951=_0x305951-0x0;var _0x32bad6=_0x480d[_0x305951];return _0x32bad6;};'use strict';var multer=require('multer');var util=require(_0xd480('0x0'));var path=require(_0xd480('0x1'));var timeout=require(_0xd480('0x2'));var express=require(_0xd480('0x3'));var router=express[_0xd480('0x4')]();var fs_extra=require(_0xd480('0x5'));var auth=require(_0xd480('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd480('0x7'));router['get']('/',auth[_0xd480('0x8')](),controller['index']);router[_0xd480('0x9')](_0xd480('0xa'),auth[_0xd480('0x8')](),controller[_0xd480('0xb')]);router[_0xd480('0x9')](_0xd480('0xc'),auth[_0xd480('0x8')](),controller[_0xd480('0xd')]);router[_0xd480('0x9')](_0xd480('0xe'),auth[_0xd480('0x8')](),controller['show']);router[_0xd480('0x9')](_0xd480('0xf'),auth['isAuthenticated'](),controller[_0xd480('0x10')]);router[_0xd480('0x9')](_0xd480('0x11'),auth[_0xd480('0x8')](),controller[_0xd480('0x12')]);router[_0xd480('0x9')]('/:id/contacts/csv',auth[_0xd480('0x8')](),controller[_0xd480('0x13')]);router['get'](_0xd480('0x14'),auth['isAuthenticated'](),controller[_0xd480('0x15')]);router[_0xd480('0x9')]('/:id/users',auth[_0xd480('0x8')](),controller[_0xd480('0x16')]);router['post']('/',auth[_0xd480('0x8')](),controller[_0xd480('0x17')]);router[_0xd480('0x18')](_0xd480('0xf'),auth[_0xd480('0x8')](),controller[_0xd480('0x19')]);router[_0xd480('0x18')]('/:id/contacts',auth[_0xd480('0x8')](),controller[_0xd480('0x1a')]);router[_0xd480('0x18')](_0xd480('0x14'),auth['isAuthenticated'](),controller[_0xd480('0x1b')]);router[_0xd480('0x18')]('/:id/users',auth['isAuthenticated'](),controller[_0xd480('0x1c')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xd480('0xe'),auth[_0xd480('0x8')](),controller[_0xd480('0x1d')]);router[_0xd480('0x1e')](_0xd480('0xf'),auth[_0xd480('0x8')](),controller[_0xd480('0x1f')]);router[_0xd480('0x1e')](_0xd480('0x20'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xd480('0x21')]=router;
\ No newline at end of file
+var _0x0a62=['/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','/:id/fields','/:id/users','create','post','addDisposition','addCustomField','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./cmList.controller','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x39c2a3,_0x5b8d9a){var _0x540c8d=function(_0x3ca526){while(--_0x3ca526){_0x39c2a3['push'](_0x39c2a3['shift']());}};_0x540c8d(++_0x5b8d9a);}(_0x0a62,0x119));var _0x20a6=function(_0x24bbd5,_0x34a7c4){_0x24bbd5=_0x24bbd5-0x0;var _0x8fb737=_0x0a62[_0x24bbd5];return _0x8fb737;};'use strict';var multer=require(_0x20a6('0x0'));var util=require(_0x20a6('0x1'));var path=require(_0x20a6('0x2'));var timeout=require(_0x20a6('0x3'));var express=require(_0x20a6('0x4'));var router=express[_0x20a6('0x5')]();var fs_extra=require(_0x20a6('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x20a6('0x7'));var controller=require(_0x20a6('0x8'));router['get']('/',auth[_0x20a6('0x9')](),controller[_0x20a6('0xa')]);router[_0x20a6('0xb')](_0x20a6('0xc'),auth[_0x20a6('0x9')](),controller[_0x20a6('0xd')]);router['get']('/global_fields',auth['isAuthenticated'](),controller['getGlobalCustomFields']);router[_0x20a6('0xb')](_0x20a6('0xe'),auth[_0x20a6('0x9')](),controller[_0x20a6('0xf')]);router['get'](_0x20a6('0x10'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x11')]);router[_0x20a6('0xb')](_0x20a6('0x12'),auth['isAuthenticated'](),controller['getContacts']);router[_0x20a6('0xb')](_0x20a6('0x13'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x14')]);router[_0x20a6('0xb')](_0x20a6('0x15'),auth[_0x20a6('0x9')](),controller['getCustomFields']);router[_0x20a6('0xb')](_0x20a6('0x16'),auth[_0x20a6('0x9')](),controller['getAgents']);router['post']('/',auth[_0x20a6('0x9')](),controller[_0x20a6('0x17')]);router[_0x20a6('0x18')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x20a6('0x19')]);router[_0x20a6('0x18')](_0x20a6('0x12'),auth[_0x20a6('0x9')](),controller['addContacts']);router['post'](_0x20a6('0x15'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x1a')]);router[_0x20a6('0x18')](_0x20a6('0x16'),auth[_0x20a6('0x9')](),controller['addAgents']);router[_0x20a6('0x1b')](_0x20a6('0xe'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x1c')]);router[_0x20a6('0x1d')](_0x20a6('0xe'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x1e')]);router[_0x20a6('0x1d')](_0x20a6('0x10'),auth[_0x20a6('0x9')](),controller['removeDispositions']);router[_0x20a6('0x1d')](_0x20a6('0x16'),auth[_0x20a6('0x9')](),controller[_0x20a6('0x1f')]);module[_0x20a6('0x20')]=router;
\ No newline at end of file
index 5220f94..f93828c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe844=['sequelize','exports','VIRTUAL','field','STRING'];(function(_0x2199e1,_0x3322a6){var _0x40c20f=function(_0xdd70a2){while(--_0xdd70a2){_0x2199e1['push'](_0x2199e1['shift']());}};_0x40c20f(++_0x3322a6);}(_0xe844,0x131));var _0x4e84=function(_0xd71ada,_0x411082){_0xd71ada=_0xd71ada-0x0;var _0x3feda7=_0xe844[_0xd71ada];return _0x3feda7;};'use strict';var Sequelize=require(_0x4e84('0x0'));module[_0x4e84('0x1')]={'name':{'type':Sequelize[_0x4e84('0x2')],'get':function(_0x4af07d){return this['getDataValue'](_0x4e84('0x3'));}},'field':{'type':Sequelize[_0x4e84('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x4e84('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x839a=['VIRTUAL','getDataValue','STRING','sequelize','exports'];(function(_0x22ec6e,_0x5b82ac){var _0x305f3a=function(_0x47850c){while(--_0x47850c){_0x22ec6e['push'](_0x22ec6e['shift']());}};_0x305f3a(++_0x5b82ac);}(_0x839a,0x134));var _0xa839=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x839a[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0xa839('0x0'));module[_0xa839('0x1')]={'name':{'type':Sequelize[_0xa839('0x2')],'get':function(_0xd778cc){return this[_0xa839('0x3')]('field');}},'field':{'type':Sequelize[_0xa839('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0xa839('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0xa839('0x4')],'allowNull':![]}};
\ No newline at end of file
index aa68674..11a2ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x5486c0,_0x3afa64){var _0x1903cc=function(_0x528dfc){while(--_0x528dfc){_0x5486c0['push'](_0x5486c0['shift']());}};_0x1903cc(++_0x3afa64);}(_0x7a54,0x106));var _0x47a5=function(_0x226aec,_0x466696){_0x226aec=_0x226aec-0x0;var _0x11d8f0=_0x7a54[_0x226aec];return _0x11d8f0;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x3498ab,_0x55d584){var _0x111ce3=function(_0x5c4442){while(--_0x5c4442){_0x3498ab['push'](_0x3498ab['shift']());}};_0x111ce3(++_0x55d584);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
index 027a969..dec42b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef2=['tools_conditions','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','Condition'];(function(_0x586561,_0x34780b){var _0x122584=function(_0x444d72){while(--_0x444d72){_0x586561['push'](_0x586561['shift']());}};_0x122584(++_0x34780b);}(_0xdef2,0x18d));var _0x2def=function(_0x4c70c4,_0x963969){_0x4c70c4=_0x4c70c4-0x0;var _0x437865=_0xdef2[_0x4c70c4];return _0x437865;};'use strict';var _=require('lodash');var util=require(_0x2def('0x0'));var logger=require(_0x2def('0x1'))('api');var moment=require(_0x2def('0x2'));var BPromise=require(_0x2def('0x3'));var rp=require(_0x2def('0x4'));var fs=require('fs');var path=require(_0x2def('0x5'));var rimraf=require(_0x2def('0x6'));var config=require(_0x2def('0x7'));var attributes=require('./condition.attributes');module['exports']=function(_0x1c4188,_0x506caf){return _0x1c4188[_0x2def('0x8')](_0x2def('0x9'),attributes,{'tableName':_0x2def('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0831=['Condition','tools_conditions','lodash','util','api','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x1d211b,_0x475f3b){var _0x47c88b=function(_0x3126f5){while(--_0x3126f5){_0x1d211b['push'](_0x1d211b['shift']());}};_0x47c88b(++_0x475f3b);}(_0x0831,0x1d8));var _0x1083=function(_0x3f3f06,_0x581e5b){_0x3f3f06=_0x3f3f06-0x0;var _0x140feb=_0x0831[_0x3f3f06];return _0x140feb;};'use strict';var _=require(_0x1083('0x0'));var util=require(_0x1083('0x1'));var logger=require('../../config/logger')(_0x1083('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1083('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1083('0x4'));var config=require(_0x1083('0x5'));var attributes=require('./condition.attributes');module[_0x1083('0x6')]=function(_0x383ce2,_0x51de4c){return _0x383ce2[_0x1083('0x7')](_0x1083('0x8'),attributes,{'tableName':_0x1083('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b64f6a3..f35fe92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b0=['Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0xc5b0,0x1ab));var _0x0c5b=function(_0x387fe4,_0x186656){_0x387fe4=_0x387fe4-0x0;var _0x43c1c1=_0xc5b0[_0x387fe4];return _0x43c1c1;};'use strict';var _=require(_0x0c5b('0x0'));var util=require(_0x0c5b('0x1'));var moment=require(_0x0c5b('0x2'));var BPromise=require('bluebird');var rs=require(_0x0c5b('0x3'));var fs=require('fs');var Redis=require(_0x0c5b('0x4'));var db=require(_0x0c5b('0x5'))['db'];var utils=require(_0x0c5b('0x6'));var logger=require(_0x0c5b('0x7'))(_0x0c5b('0x8'));var config=require('../../config/environment');var jayson=require(_0x0c5b('0x9'));var client=jayson[_0x0c5b('0xa')][_0x0c5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fc046,_0x22e2e6,_0x2affbb){return new BPromise(function(_0x5e71b3,_0x2a1d58){return client['request'](_0x4fc046,_0x2affbb)[_0x0c5b('0xc')](function(_0x9cab52){logger[_0x0c5b('0xd')](_0x0c5b('0xe'),_0x22e2e6,'request\x20sent');logger[_0x0c5b('0xf')](_0x0c5b('0x10'),_0x22e2e6,_0x0c5b('0x11'),JSON['stringify'](_0x9cab52));if(_0x9cab52[_0x0c5b('0x12')]){if(_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x13')]===0x1f4){logger[_0x0c5b('0x12')](_0x0c5b('0xe'),_0x22e2e6,_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x14')]);return _0x2a1d58(_0x9cab52[_0x0c5b('0x12')]['message']);}logger[_0x0c5b('0x12')](_0x0c5b('0xe'),_0x22e2e6,_0x9cab52[_0x0c5b('0x12')]['message']);return _0x5e71b3(_0x9cab52[_0x0c5b('0x12')][_0x0c5b('0x14')]);}else{logger[_0x0c5b('0xd')](_0x0c5b('0xe'),_0x22e2e6,_0x0c5b('0x11'));_0x5e71b3(_0x9cab52['result'][_0x0c5b('0x14')]);}})['catch'](function(_0xad6eee){logger[_0x0c5b('0x12')]('Condition,\x20%s,\x20%s',_0x22e2e6,_0xad6eee);_0x2a1d58(_0xad6eee);});});}
\ No newline at end of file
+var _0x6330=['Condition,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x658801,_0x5632f9){var _0x3213fd=function(_0x3497e3){while(--_0x3497e3){_0x658801['push'](_0x658801['shift']());}};_0x3213fd(++_0x5632f9);}(_0x6330,0x180));var _0x0633=function(_0x43fdf8,_0x8426b3){_0x43fdf8=_0x43fdf8-0x0;var _0x1160c6=_0x6330[_0x43fdf8];return _0x1160c6;};'use strict';var _=require(_0x0633('0x0'));var util=require(_0x0633('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0633('0x2'));var fs=require('fs');var Redis=require(_0x0633('0x3'));var db=require(_0x0633('0x4'))['db'];var utils=require(_0x0633('0x5'));var logger=require('../../config/logger')(_0x0633('0x6'));var config=require(_0x0633('0x7'));var jayson=require(_0x0633('0x8'));var client=jayson['client'][_0x0633('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21c826,_0x183489,_0x17bdc9){return new BPromise(function(_0x6c3476,_0x4ff8af){return client['request'](_0x21c826,_0x17bdc9)[_0x0633('0xa')](function(_0x1cbf57){logger[_0x0633('0xb')](_0x0633('0xc'),_0x183489,_0x0633('0xd'));logger[_0x0633('0xe')](_0x0633('0xf'),_0x183489,_0x0633('0xd'),JSON[_0x0633('0x10')](_0x1cbf57));if(_0x1cbf57[_0x0633('0x11')]){if(_0x1cbf57['error']['code']===0x1f4){logger[_0x0633('0x11')]('Condition,\x20%s,\x20%s',_0x183489,_0x1cbf57[_0x0633('0x11')]['message']);return _0x4ff8af(_0x1cbf57[_0x0633('0x11')][_0x0633('0x12')]);}logger[_0x0633('0x11')](_0x0633('0xc'),_0x183489,_0x1cbf57[_0x0633('0x11')]['message']);return _0x6c3476(_0x1cbf57[_0x0633('0x11')]['message']);}else{logger[_0x0633('0xb')](_0x0633('0xc'),_0x183489,_0x0633('0xd'));_0x6c3476(_0x1cbf57[_0x0633('0x13')][_0x0633('0x12')]);}})[_0x0633('0x14')](function(_0x5aba10){logger['error']('Condition,\x20%s,\x20%s',_0x183489,_0x5aba10);_0x4ff8af(_0x5aba10);});});}
\ No newline at end of file
index 476ec42..08d1dd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','delete','destroy','exports','multer','util'];(function(_0x30faec,_0x18940b){var _0x29484f=function(_0x169ae8){while(--_0x169ae8){_0x30faec['push'](_0x30faec['shift']());}};_0x29484f(++_0x18940b);}(_0x5bea,0x9e));var _0xa5be=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5bea[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xa5be('0x0'));var util=require(_0xa5be('0x1'));var path=require(_0xa5be('0x2'));var timeout=require(_0xa5be('0x3'));var express=require(_0xa5be('0x4'));var router=express[_0xa5be('0x5')]();var fs_extra=require(_0xa5be('0x6'));var auth=require(_0xa5be('0x7'));var interaction=require(_0xa5be('0x8'));var config=require(_0xa5be('0x9'));var controller=require('./condition.controller');router[_0xa5be('0xa')](_0xa5be('0xb'),auth[_0xa5be('0xc')](),controller['update']);router[_0xa5be('0xd')](_0xa5be('0xb'),auth[_0xa5be('0xc')](),controller[_0xa5be('0xe')]);module[_0xa5be('0xf')]=router;
\ No newline at end of file
+var _0x6fc4=['../../components/auth/service','../../config/environment','./condition.controller','isAuthenticated','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x33c1b1,_0x2355fb){var _0x2c2037=function(_0x1200fd){while(--_0x1200fd){_0x33c1b1['push'](_0x33c1b1['shift']());}};_0x2c2037(++_0x2355fb);}(_0x6fc4,0xbe));var _0x46fc=function(_0x43379c,_0x271d36){_0x43379c=_0x43379c-0x0;var _0x495648=_0x6fc4[_0x43379c];return _0x495648;};'use strict';var multer=require(_0x46fc('0x0'));var util=require('util');var path=require(_0x46fc('0x1'));var timeout=require(_0x46fc('0x2'));var express=require(_0x46fc('0x3'));var router=express[_0x46fc('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x46fc('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x46fc('0x6'));var controller=require(_0x46fc('0x7'));router['put']('/:id',auth[_0x46fc('0x8')](),controller['update']);router[_0x46fc('0x9')](_0x46fc('0xa'),auth[_0x46fc('0x8')](),controller[_0x46fc('0xb')]);module[_0x46fc('0xc')]=router;
\ No newline at end of file
index 786d5db..008c407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b30=['exports','STRING','name','sequelize'];(function(_0x138836,_0x229129){var _0x322688=function(_0x54b101){while(--_0x54b101){_0x138836['push'](_0x138836['shift']());}};_0x322688(++_0x229129);}(_0x6b30,0xe3));var _0x06b3=function(_0x96c15f,_0x538403){_0x96c15f=_0x96c15f-0x0;var _0x202a78=_0x6b30[_0x96c15f];return _0x202a78;};'use strict';var Sequelize=require(_0x06b3('0x0'));module[_0x06b3('0x1')]={'name':{'type':Sequelize[_0x06b3('0x2')],'allowNull':![],'unique':_0x06b3('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x06b3('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xba97=['INTEGER','sequelize','exports','STRING','name'];(function(_0x586671,_0x39b412){var _0x4b0b73=function(_0x4c5632){while(--_0x4c5632){_0x586671['push'](_0x586671['shift']());}};_0x4b0b73(++_0x39b412);}(_0xba97,0x1f0));var _0x7ba9=function(_0x5c6262,_0x1c5ff8){_0x5c6262=_0x5c6262-0x0;var _0x3e0521=_0xba97[_0x5c6262];return _0x3e0521;};'use strict';var Sequelize=require(_0x7ba9('0x0'));module[_0x7ba9('0x1')]={'name':{'type':Sequelize[_0x7ba9('0x2')],'allowNull':![],'unique':_0x7ba9('0x3')},'OrderBy':{'type':Sequelize[_0x7ba9('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index b1ae686..bb1f05a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','send','index','map','ContactItemType','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ContactItemTypes','userProfileId','autoAssociation','params','CmContactHasItem','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','squel','crypto','jsforce','querystring','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x47f7f5,_0xa5caf){var _0x52fe6b=function(_0x7ee9cf){while(--_0x7ee9cf){_0x47f7f5['push'](_0x47f7f5['shift']());}};_0x52fe6b(++_0xa5caf);}(_0x14a0,0x8e));var _0x014a=function(_0x49b360,_0x41df56){_0x49b360=_0x49b360-0x0;var _0x5e1317=_0x14a0[_0x49b360];return _0x5e1317;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x014a('0x0'));var zipdir=require(_0x014a('0x1'));var jsonpatch=require(_0x014a('0x2'));var rp=require(_0x014a('0x3'));var moment=require(_0x014a('0x4'));var BPromise=require(_0x014a('0x5'));var Mustache=require(_0x014a('0x6'));var util=require('util');var path=require('path');var sox=require(_0x014a('0x7'));var csv=require(_0x014a('0x8'));var ejs=require(_0x014a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x014a('0xa'));var crypto=require(_0x014a('0xb'));var jsforce=require(_0x014a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x014a('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x014a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x014a('0xf'))(_0x014a('0x10'));var utils=require('../../config/utils');var config=require(_0x014a('0x11'));var licenseUtil=require(_0x014a('0x12'));var db=require(_0x014a('0x13'))['db'];function respondWithStatusCode(_0x43bfeb,_0x1bcd1){_0x1bcd1=_0x1bcd1||0xcc;return function(_0x20cb56){if(_0x20cb56){return _0x43bfeb[_0x014a('0x14')](_0x1bcd1);}return _0x43bfeb[_0x014a('0x15')](_0x1bcd1)[_0x014a('0x16')]();};}function respondWithResult(_0x71535d,_0x45cd80){_0x45cd80=_0x45cd80||0xc8;return function(_0x3c54c8){if(_0x3c54c8){return _0x71535d['status'](_0x45cd80)[_0x014a('0x17')](_0x3c54c8);}};}function respondWithFilteredResult(_0x3cf92f,_0x59f207){return function(_0x3a836f){if(_0x3a836f){var _0x128c46=typeof _0x59f207['offset']===_0x014a('0x18')&&typeof _0x59f207[_0x014a('0x19')]===_0x014a('0x18');var _0x12da95=_0x3a836f[_0x014a('0x1a')];var _0x12d339=_0x128c46?0x0:_0x59f207[_0x014a('0x1b')];var _0x263b07=_0x128c46?_0x3a836f[_0x014a('0x1a')]:_0x59f207[_0x014a('0x1b')]+_0x59f207[_0x014a('0x19')];var _0x89e132;if(_0x263b07>=_0x12da95){_0x263b07=_0x12da95;_0x89e132=0xc8;}else{_0x89e132=0xce;}_0x3cf92f[_0x014a('0x15')](_0x89e132);return _0x3cf92f[_0x014a('0x1c')]('Content-Range',_0x12d339+'-'+_0x263b07+'/'+_0x12da95)[_0x014a('0x17')](_0x3a836f);}return null;};}function patchUpdates(_0x109a9c){return function(_0x11065f){try{jsonpatch[_0x014a('0x1d')](_0x11065f,_0x109a9c,!![]);}catch(_0xc9a563){return BPromise[_0x014a('0x1e')](_0xc9a563);}return _0x11065f[_0x014a('0x1f')]();};}function saveUpdates(_0x3dd2d0,_0x290b86){return function(_0x486e66){if(_0x486e66){return _0x486e66[_0x014a('0x20')](_0x3dd2d0)['then'](function(_0x1a1318){return _0x1a1318;});}return null;};}function removeEntity(_0x26718b,_0x44d921){return function(_0x36d52b){if(_0x36d52b){return _0x36d52b[_0x014a('0x21')]()[_0x014a('0x22')](function(){var _0x3fec9f=_0x36d52b[_0x014a('0x23')]({'plain':!![]});var _0x165a42='ContactItemTypes';return db[_0x014a('0x24')]['destroy']({'where':{'type':_0x165a42,'resourceId':_0x3fec9f['id']}})[_0x014a('0x22')](function(){return _0x36d52b;});})[_0x014a('0x22')](function(){_0x26718b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x9a901f,_0x3f9719){return function(_0x143346){if(!_0x143346){_0x9a901f['sendStatus'](0x194);}return _0x143346;};}function handleError(_0x183f19,_0x3c1fa4){_0x3c1fa4=_0x3c1fa4||0x1f4;return function(_0x598179){logger[_0x014a('0x25')](_0x598179[_0x014a('0x26')]);if(_0x598179['name']){delete _0x598179['name'];}_0x183f19[_0x014a('0x15')](_0x3c1fa4)[_0x014a('0x27')](_0x598179);};}exports[_0x014a('0x28')]=function(_0x29fce5,_0x4ea00c){var _0x434038={},_0x147e7e={},_0x15af07={'count':0x0,'rows':[]};var _0x402d3b=_[_0x014a('0x29')](db[_0x014a('0x2a')][_0x014a('0x2b')],function(_0x1dae8e){return{'name':_0x1dae8e[_0x014a('0x2c')],'type':_0x1dae8e[_0x014a('0x2d')][_0x014a('0x2e')]};});_0x147e7e['model']=_[_0x014a('0x29')](_0x402d3b,_0x014a('0x2f'));_0x147e7e[_0x014a('0x30')]=_[_0x014a('0x31')](_0x29fce5[_0x014a('0x30')]);_0x147e7e[_0x014a('0x32')]=_[_0x014a('0x33')](_0x147e7e['model'],_0x147e7e[_0x014a('0x30')]);_0x434038[_0x014a('0x34')]=_['intersection'](_0x147e7e[_0x014a('0x35')],qs[_0x014a('0x36')](_0x29fce5[_0x014a('0x30')][_0x014a('0x36')]));_0x434038[_0x014a('0x34')]=_0x434038[_0x014a('0x34')][_0x014a('0x37')]?_0x434038[_0x014a('0x34')]:_0x147e7e['model'];if(!_0x29fce5[_0x014a('0x30')][_0x014a('0x38')](_0x014a('0x39'))){_0x434038[_0x014a('0x19')]=qs['limit'](_0x29fce5[_0x014a('0x30')][_0x014a('0x19')]);_0x434038[_0x014a('0x1b')]=qs[_0x014a('0x1b')](_0x29fce5[_0x014a('0x30')][_0x014a('0x1b')]);}_0x434038[_0x014a('0x3a')]=qs[_0x014a('0x3b')](_0x29fce5[_0x014a('0x30')]['sort']);_0x434038[_0x014a('0x3c')]=qs['filters'](_[_0x014a('0x3d')](_0x29fce5[_0x014a('0x30')],_0x147e7e[_0x014a('0x32')]),_0x402d3b);if(_0x29fce5[_0x014a('0x30')][_0x014a('0x3e')]){_0x434038['where']=_[_0x014a('0x3f')](_0x434038[_0x014a('0x3c')],{'$or':_['map'](_0x402d3b,function(_0x9227b8){if(_0x9227b8[_0x014a('0x2d')]!==_0x014a('0x40')){var _0x2e7a14={};_0x2e7a14[_0x9227b8[_0x014a('0x2f')]]={'$like':'%'+_0x29fce5[_0x014a('0x30')][_0x014a('0x3e')]+'%'};return _0x2e7a14;}})});}_0x434038=_[_0x014a('0x3f')]({},_0x434038,_0x29fce5[_0x014a('0x41')]);var _0x537bde={'where':_0x434038[_0x014a('0x3c')]};return db[_0x014a('0x2a')][_0x014a('0x1a')](_0x537bde)[_0x014a('0x22')](function(_0x5f1a91){_0x15af07[_0x014a('0x1a')]=_0x5f1a91;if(_0x29fce5[_0x014a('0x30')][_0x014a('0x42')]){_0x434038[_0x014a('0x43')]=[{'all':!![]}];}return db[_0x014a('0x2a')][_0x014a('0x44')](_0x434038);})['then'](function(_0x361866){_0x15af07[_0x014a('0x45')]=_0x361866;return _0x15af07;})['then'](respondWithFilteredResult(_0x4ea00c,_0x434038))[_0x014a('0x46')](handleError(_0x4ea00c,null));};exports[_0x014a('0x47')]=function(_0x2c45f1,_0x5dc092){var _0x5bcf8={'raw':!![],'where':{'id':_0x2c45f1['params']['id']}},_0x50a8f0={};_0x50a8f0[_0x014a('0x35')]=_[_0x014a('0x31')](db['ContactItemType'][_0x014a('0x2b')]);_0x50a8f0[_0x014a('0x30')]=_[_0x014a('0x31')](_0x2c45f1[_0x014a('0x30')]);_0x50a8f0[_0x014a('0x32')]=_[_0x014a('0x33')](_0x50a8f0['model'],_0x50a8f0[_0x014a('0x30')]);_0x5bcf8[_0x014a('0x34')]=_[_0x014a('0x33')](_0x50a8f0['model'],qs['fields'](_0x2c45f1[_0x014a('0x30')]['fields']));_0x5bcf8['attributes']=_0x5bcf8[_0x014a('0x34')]['length']?_0x5bcf8[_0x014a('0x34')]:_0x50a8f0[_0x014a('0x35')];if(_0x2c45f1[_0x014a('0x30')]['includeAll']){_0x5bcf8[_0x014a('0x43')]=[{'all':!![]}];}_0x5bcf8=_[_0x014a('0x3f')]({},_0x5bcf8,_0x2c45f1[_0x014a('0x41')]);return db[_0x014a('0x2a')][_0x014a('0x48')](_0x5bcf8)[_0x014a('0x22')](handleEntityNotFound(_0x5dc092,null))['then'](respondWithResult(_0x5dc092,null))[_0x014a('0x46')](handleError(_0x5dc092,null));};exports[_0x014a('0x49')]=function(_0x5a861c,_0x1a4df9){return db[_0x014a('0x2a')][_0x014a('0x49')](_0x5a861c[_0x014a('0x4a')],{})[_0x014a('0x22')](function(_0x357ca1){var _0x437f23=_0x5a861c[_0x014a('0x4b')]['get']({'plain':!![]});if(!_0x437f23)throw new Error(_0x014a('0x4c'));if(_0x437f23[_0x014a('0x4d')]===_0x014a('0x4b')){var _0x135e7e=_0x357ca1[_0x014a('0x23')]({'plain':!![]});var _0x4b2fdb=_0x014a('0x4e');return db['UserProfileSection'][_0x014a('0x48')]({'where':{'name':_0x4b2fdb,'userProfileId':_0x437f23[_0x014a('0x4f')]},'raw':!![]})[_0x014a('0x22')](function(_0x479dc0){if(_0x479dc0&&_0x479dc0[_0x014a('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x135e7e['name'],'resourceId':_0x135e7e['id'],'type':_0x479dc0['name'],'sectionId':_0x479dc0['id']},{})[_0x014a('0x22')](function(){return _0x357ca1;});}else{return _0x357ca1;}})['catch'](function(_0x1fe253){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fe253);throw _0x1fe253;});}return _0x357ca1;})[_0x014a('0x22')](respondWithResult(_0x1a4df9,0xc9))['catch'](handleError(_0x1a4df9,null));};exports[_0x014a('0x20')]=function(_0x1e778d,_0x400633){if(_0x1e778d[_0x014a('0x4a')]['id']){delete _0x1e778d[_0x014a('0x4a')]['id'];}return db[_0x014a('0x2a')][_0x014a('0x48')]({'where':{'id':_0x1e778d[_0x014a('0x51')]['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x400633,null))[_0x014a('0x22')](saveUpdates(_0x1e778d['body'],null))['then'](respondWithResult(_0x400633,null))[_0x014a('0x46')](handleError(_0x400633,null));};exports[_0x014a('0x21')]=function(_0x237345,_0x4cc246){return db['ContactItemType'][_0x014a('0x48')]({'where':{'id':_0x237345['params']['id']}})[_0x014a('0x22')](handleEntityNotFound(_0x4cc246,null))[_0x014a('0x22')](db[_0x014a('0x52')][_0x014a('0x20')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x237345['params']['id']}}))[_0x014a('0x22')](removeEntity(_0x4cc246,null))[_0x014a('0x46')](handleError(_0x4cc246,null));};
\ No newline at end of file
+var _0x5b12=['request-promise','bluebird','mustache','path','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','Content-Range','apply','reject','update','destroy','get','ContactItemTypes','UserProfileResource','then','error','stack','name','send','index','ContactItemType','rawAttributes','fieldName','type','map','query','keys','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','rows','catch','show','params','intersection','includeAll','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir'];(function(_0x3fbd51,_0x40b693){var _0x60db65=function(_0x2a39e9){while(--_0x2a39e9){_0x3fbd51['push'](_0x3fbd51['shift']());}};_0x60db65(++_0x40b693);}(_0x5b12,0xa3));var _0x25b1=function(_0x410921,_0x7db399){_0x410921=_0x410921-0x0;var _0x2bbc37=_0x5b12[_0x410921];return _0x2bbc37;};'use strict';var emlformat=require(_0x25b1('0x0'));var rimraf=require(_0x25b1('0x1'));var zipdir=require(_0x25b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25b1('0x3'));var moment=require('moment');var BPromise=require(_0x25b1('0x4'));var Mustache=require(_0x25b1('0x5'));var util=require('util');var path=require(_0x25b1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x25b1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25b1('0x8'));var crypto=require(_0x25b1('0x9'));var jsforce=require(_0x25b1('0xa'));var deskjs=require(_0x25b1('0xb'));var toCsv=require(_0x25b1('0xc'));var querystring=require(_0x25b1('0xd'));var Papa=require(_0x25b1('0xe'));var Redis=require(_0x25b1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x25b1('0x10'));var as=require(_0x25b1('0x11'));var hardwareService=require(_0x25b1('0x12'));var logger=require(_0x25b1('0x13'))(_0x25b1('0x14'));var utils=require(_0x25b1('0x15'));var config=require(_0x25b1('0x16'));var licenseUtil=require(_0x25b1('0x17'));var db=require(_0x25b1('0x18'))['db'];function respondWithStatusCode(_0x459070,_0xbdd348){_0xbdd348=_0xbdd348||0xcc;return function(_0x1c5421){if(_0x1c5421){return _0x459070[_0x25b1('0x19')](_0xbdd348);}return _0x459070[_0x25b1('0x1a')](_0xbdd348)[_0x25b1('0x1b')]();};}function respondWithResult(_0x76b5c4,_0x4ee40c){_0x4ee40c=_0x4ee40c||0xc8;return function(_0x2c337a){if(_0x2c337a){return _0x76b5c4[_0x25b1('0x1a')](_0x4ee40c)['json'](_0x2c337a);}};}function respondWithFilteredResult(_0xb5b9cf,_0x4bb1bb){return function(_0xe32e02){if(_0xe32e02){var _0x4a5a58=typeof _0x4bb1bb['offset']===_0x25b1('0x1c')&&typeof _0x4bb1bb['limit']===_0x25b1('0x1c');var _0x2ca567=_0xe32e02[_0x25b1('0x1d')];var _0x27ccc9=_0x4a5a58?0x0:_0x4bb1bb[_0x25b1('0x1e')];var _0x2a7d14=_0x4a5a58?_0xe32e02[_0x25b1('0x1d')]:_0x4bb1bb[_0x25b1('0x1e')]+_0x4bb1bb['limit'];var _0x4ecff1;if(_0x2a7d14>=_0x2ca567){_0x2a7d14=_0x2ca567;_0x4ecff1=0xc8;}else{_0x4ecff1=0xce;}_0xb5b9cf[_0x25b1('0x1a')](_0x4ecff1);return _0xb5b9cf['set'](_0x25b1('0x1f'),_0x27ccc9+'-'+_0x2a7d14+'/'+_0x2ca567)['json'](_0xe32e02);}return null;};}function patchUpdates(_0x3bfd7d){return function(_0x59aa37){try{jsonpatch[_0x25b1('0x20')](_0x59aa37,_0x3bfd7d,!![]);}catch(_0x529310){return BPromise[_0x25b1('0x21')](_0x529310);}return _0x59aa37['save']();};}function saveUpdates(_0x4e3f48,_0x565cfd){return function(_0x3bca9f){if(_0x3bca9f){return _0x3bca9f[_0x25b1('0x22')](_0x4e3f48)['then'](function(_0x19bab8){return _0x19bab8;});}return null;};}function removeEntity(_0x26b555,_0x1e5915){return function(_0x246acd){if(_0x246acd){return _0x246acd[_0x25b1('0x23')]()['then'](function(){var _0x3fa043=_0x246acd[_0x25b1('0x24')]({'plain':!![]});var _0xd22469=_0x25b1('0x25');return db[_0x25b1('0x26')][_0x25b1('0x23')]({'where':{'type':_0xd22469,'resourceId':_0x3fa043['id']}})['then'](function(){return _0x246acd;});})[_0x25b1('0x27')](function(){_0x26b555[_0x25b1('0x1a')](0xcc)[_0x25b1('0x1b')]();});}};}function handleEntityNotFound(_0x5bc8fc,_0x20a218){return function(_0x9e175f){if(!_0x9e175f){_0x5bc8fc[_0x25b1('0x19')](0x194);}return _0x9e175f;};}function handleError(_0x584357,_0x33baed){_0x33baed=_0x33baed||0x1f4;return function(_0x54ce2d){logger[_0x25b1('0x28')](_0x54ce2d[_0x25b1('0x29')]);if(_0x54ce2d[_0x25b1('0x2a')]){delete _0x54ce2d[_0x25b1('0x2a')];}_0x584357[_0x25b1('0x1a')](_0x33baed)[_0x25b1('0x2b')](_0x54ce2d);};}exports[_0x25b1('0x2c')]=function(_0x4cd825,_0x30d455){var _0xca56f0={},_0x925e99={},_0x26f323={'count':0x0,'rows':[]};var _0x274205=_['map'](db[_0x25b1('0x2d')][_0x25b1('0x2e')],function(_0x42441d){return{'name':_0x42441d[_0x25b1('0x2f')],'type':_0x42441d[_0x25b1('0x30')]['key']};});_0x925e99['model']=_[_0x25b1('0x31')](_0x274205,'name');_0x925e99[_0x25b1('0x32')]=_[_0x25b1('0x33')](_0x4cd825[_0x25b1('0x32')]);_0x925e99['filters']=_['intersection'](_0x925e99[_0x25b1('0x34')],_0x925e99[_0x25b1('0x32')]);_0xca56f0[_0x25b1('0x35')]=_['intersection'](_0x925e99[_0x25b1('0x34')],qs[_0x25b1('0x36')](_0x4cd825[_0x25b1('0x32')][_0x25b1('0x36')]));_0xca56f0['attributes']=_0xca56f0[_0x25b1('0x35')][_0x25b1('0x37')]?_0xca56f0[_0x25b1('0x35')]:_0x925e99['model'];if(!_0x4cd825['query'][_0x25b1('0x38')]('nolimit')){_0xca56f0[_0x25b1('0x39')]=qs[_0x25b1('0x39')](_0x4cd825[_0x25b1('0x32')][_0x25b1('0x39')]);_0xca56f0[_0x25b1('0x1e')]=qs[_0x25b1('0x1e')](_0x4cd825[_0x25b1('0x32')][_0x25b1('0x1e')]);}_0xca56f0[_0x25b1('0x3a')]=qs[_0x25b1('0x3b')](_0x4cd825[_0x25b1('0x32')][_0x25b1('0x3b')]);_0xca56f0[_0x25b1('0x3c')]=qs[_0x25b1('0x3d')](_[_0x25b1('0x3e')](_0x4cd825['query'],_0x925e99[_0x25b1('0x3d')]),_0x274205);if(_0x4cd825[_0x25b1('0x32')]['filter']){_0xca56f0[_0x25b1('0x3c')]=_[_0x25b1('0x3f')](_0xca56f0[_0x25b1('0x3c')],{'$or':_[_0x25b1('0x31')](_0x274205,function(_0xb82930){if(_0xb82930['type']!==_0x25b1('0x40')){var _0x5c729d={};_0x5c729d[_0xb82930[_0x25b1('0x2a')]]={'$like':'%'+_0x4cd825['query'][_0x25b1('0x41')]+'%'};return _0x5c729d;}})});}_0xca56f0=_[_0x25b1('0x3f')]({},_0xca56f0,_0x4cd825[_0x25b1('0x42')]);var _0x454eac={'where':_0xca56f0[_0x25b1('0x3c')]};return db[_0x25b1('0x2d')][_0x25b1('0x1d')](_0x454eac)[_0x25b1('0x27')](function(_0x3f9754){_0x26f323['count']=_0x3f9754;if(_0x4cd825[_0x25b1('0x32')]['includeAll']){_0xca56f0[_0x25b1('0x43')]=[{'all':!![]}];}return db[_0x25b1('0x2d')]['findAll'](_0xca56f0);})[_0x25b1('0x27')](function(_0x39b4c7){_0x26f323[_0x25b1('0x44')]=_0x39b4c7;return _0x26f323;})[_0x25b1('0x27')](respondWithFilteredResult(_0x30d455,_0xca56f0))[_0x25b1('0x45')](handleError(_0x30d455,null));};exports[_0x25b1('0x46')]=function(_0x122ce4,_0x30ee65){var _0x33e39c={'raw':!![],'where':{'id':_0x122ce4[_0x25b1('0x47')]['id']}},_0x453352={};_0x453352[_0x25b1('0x34')]=_[_0x25b1('0x33')](db[_0x25b1('0x2d')][_0x25b1('0x2e')]);_0x453352[_0x25b1('0x32')]=_[_0x25b1('0x33')](_0x122ce4[_0x25b1('0x32')]);_0x453352['filters']=_['intersection'](_0x453352['model'],_0x453352[_0x25b1('0x32')]);_0x33e39c['attributes']=_[_0x25b1('0x48')](_0x453352['model'],qs[_0x25b1('0x36')](_0x122ce4[_0x25b1('0x32')][_0x25b1('0x36')]));_0x33e39c[_0x25b1('0x35')]=_0x33e39c[_0x25b1('0x35')][_0x25b1('0x37')]?_0x33e39c['attributes']:_0x453352[_0x25b1('0x34')];if(_0x122ce4[_0x25b1('0x32')][_0x25b1('0x49')]){_0x33e39c[_0x25b1('0x43')]=[{'all':!![]}];}_0x33e39c=_['merge']({},_0x33e39c,_0x122ce4[_0x25b1('0x42')]);return db[_0x25b1('0x2d')][_0x25b1('0x4a')](_0x33e39c)['then'](handleEntityNotFound(_0x30ee65,null))[_0x25b1('0x27')](respondWithResult(_0x30ee65,null))['catch'](handleError(_0x30ee65,null));};exports[_0x25b1('0x4b')]=function(_0x4b6181,_0x543f9b){return db[_0x25b1('0x2d')][_0x25b1('0x4b')](_0x4b6181[_0x25b1('0x4c')],{})[_0x25b1('0x27')](function(_0x5de62e){var _0x2b38ca=_0x4b6181['user'][_0x25b1('0x24')]({'plain':!![]});if(!_0x2b38ca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2b38ca[_0x25b1('0x4d')]===_0x25b1('0x4e')){var _0x1fcc79=_0x5de62e['get']({'plain':!![]});var _0x1f3b01=_0x25b1('0x25');return db[_0x25b1('0x4f')][_0x25b1('0x4a')]({'where':{'name':_0x1f3b01,'userProfileId':_0x2b38ca[_0x25b1('0x50')]},'raw':!![]})[_0x25b1('0x27')](function(_0x59859e){if(_0x59859e&&_0x59859e[_0x25b1('0x51')]===0x0){return db[_0x25b1('0x26')][_0x25b1('0x4b')]({'name':_0x1fcc79[_0x25b1('0x2a')],'resourceId':_0x1fcc79['id'],'type':_0x59859e[_0x25b1('0x2a')],'sectionId':_0x59859e['id']},{})[_0x25b1('0x27')](function(){return _0x5de62e;});}else{return _0x5de62e;}})[_0x25b1('0x45')](function(_0x40d574){logger[_0x25b1('0x28')](_0x25b1('0x52'),_0x40d574);throw _0x40d574;});}return _0x5de62e;})[_0x25b1('0x27')](respondWithResult(_0x543f9b,0xc9))[_0x25b1('0x45')](handleError(_0x543f9b,null));};exports[_0x25b1('0x22')]=function(_0x2f17b2,_0x3191d7){if(_0x2f17b2[_0x25b1('0x4c')]['id']){delete _0x2f17b2[_0x25b1('0x4c')]['id'];}return db[_0x25b1('0x2d')]['find']({'where':{'id':_0x2f17b2[_0x25b1('0x47')]['id']}})[_0x25b1('0x27')](handleEntityNotFound(_0x3191d7,null))[_0x25b1('0x27')](saveUpdates(_0x2f17b2[_0x25b1('0x4c')],null))[_0x25b1('0x27')](respondWithResult(_0x3191d7,null))[_0x25b1('0x45')](handleError(_0x3191d7,null));};exports['destroy']=function(_0x105587,_0x3af93d){return db[_0x25b1('0x2d')]['find']({'where':{'id':_0x105587[_0x25b1('0x47')]['id']}})['then'](handleEntityNotFound(_0x3af93d,null))['then'](db['CmContactHasItem']['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x105587[_0x25b1('0x47')]['id']}}))['then'](removeEntity(_0x3af93d,null))[_0x25b1('0x45')](handleError(_0x3af93d,null));};
\ No newline at end of file
index b631ab4..e763e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3465=['util','moment','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0x3465,0x1d9));var _0x5346=function(_0x57a58f,_0x1e70d3){_0x57a58f=_0x57a58f-0x0;var _0x4c6ccd=_0x3465[_0x57a58f];return _0x4c6ccd;};'use strict';var _=require('lodash');var util=require(_0x5346('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x5346('0x1'));var BPromise=require('bluebird');var rp=require(_0x5346('0x2'));var fs=require('fs');var path=require(_0x5346('0x3'));var rimraf=require(_0x5346('0x4'));var config=require(_0x5346('0x5'));var attributes=require(_0x5346('0x6'));module[_0x5346('0x7')]=function(_0x3d3ce4,_0x2eeaab){return _0x3d3ce4[_0x5346('0x8')](_0x5346('0x9'),attributes,{'tableName':_0x5346('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x78a9=['define','ContactItemType','tools_contact_item_types','lodash','util','../../config/logger','api','path','rimraf','./contactItemType.attributes'];(function(_0xc5de47,_0x220da7){var _0x586eba=function(_0x13c034){while(--_0x13c034){_0xc5de47['push'](_0xc5de47['shift']());}};_0x586eba(++_0x220da7);}(_0x78a9,0x85));var _0x978a=function(_0x54ad4c,_0x5b12c4){_0x54ad4c=_0x54ad4c-0x0;var _0x1814a1=_0x78a9[_0x54ad4c];return _0x1814a1;};'use strict';var _=require(_0x978a('0x0'));var util=require(_0x978a('0x1'));var logger=require(_0x978a('0x2'))(_0x978a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x978a('0x4'));var rimraf=require(_0x978a('0x5'));var config=require('../../config/environment');var attributes=require(_0x978a('0x6'));module['exports']=function(_0x474a4e,_0x24b01e){return _0x474a4e[_0x978a('0x7')](_0x978a('0x8'),attributes,{'tableName':_0x978a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95246c9..02319f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd802=['result','catch','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x261650,_0x4a0a2b){var _0x3a4953=function(_0x9380e3){while(--_0x9380e3){_0x261650['push'](_0x261650['shift']());}};_0x3a4953(++_0x4a0a2b);}(_0xd802,0x7a));var _0x2d80=function(_0x190c49,_0x103457){_0x190c49=_0x190c49-0x0;var _0x475b9a=_0xd802[_0x190c49];return _0x475b9a;};'use strict';var _=require('lodash');var util=require(_0x2d80('0x0'));var moment=require(_0x2d80('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d80('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d80('0x3'))['db'];var utils=require(_0x2d80('0x4'));var logger=require(_0x2d80('0x5'))(_0x2d80('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2d80('0x7')][_0x2d80('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xe79ee2,_0x5374c1,_0x1b66c3){return new BPromise(function(_0xc9b900,_0x5ec831){return client['request'](_0xe79ee2,_0x1b66c3)['then'](function(_0x218038){logger[_0x2d80('0x9')](_0x2d80('0xa'),_0x5374c1,_0x2d80('0xb'));logger[_0x2d80('0xc')](_0x2d80('0xd'),_0x5374c1,_0x2d80('0xb'),JSON[_0x2d80('0xe')](_0x218038));if(_0x218038['error']){if(_0x218038[_0x2d80('0xf')][_0x2d80('0x10')]===0x1f4){logger[_0x2d80('0xf')]('ContactItemType,\x20%s,\x20%s',_0x5374c1,_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);return _0x5ec831(_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);}logger[_0x2d80('0xf')]('ContactItemType,\x20%s,\x20%s',_0x5374c1,_0x218038['error'][_0x2d80('0x11')]);return _0xc9b900(_0x218038[_0x2d80('0xf')][_0x2d80('0x11')]);}else{logger['info'](_0x2d80('0xa'),_0x5374c1,'request\x20sent');_0xc9b900(_0x218038[_0x2d80('0x12')][_0x2d80('0x11')]);}})[_0x2d80('0x13')](function(_0x431f08){logger[_0x2d80('0xf')](_0x2d80('0xa'),_0x5374c1,_0x431f08);_0x5ec831(_0x431f08);});});}
\ No newline at end of file
+var _0xc052=['result','catch','lodash','util','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xc052,0x70));var _0x2c05=function(_0x56e349,_0x519aa7){_0x56e349=_0x56e349-0x0;var _0x59ff7c=_0xc052[_0x56e349];return _0x59ff7c;};'use strict';var _=require(_0x2c05('0x0'));var util=require(_0x2c05('0x1'));var moment=require('moment');var BPromise=require(_0x2c05('0x2'));var rs=require(_0x2c05('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2c05('0x4'))('rpc');var config=require(_0x2c05('0x5'));var jayson=require(_0x2c05('0x6'));var client=jayson[_0x2c05('0x7')][_0x2c05('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2dd7c9,_0x344b44,_0x13d267){return new BPromise(function(_0x177fba,_0x1a023c){return client[_0x2c05('0x9')](_0x2dd7c9,_0x13d267)[_0x2c05('0xa')](function(_0x1a7fea){logger[_0x2c05('0xb')](_0x2c05('0xc'),_0x344b44,_0x2c05('0xd'));logger[_0x2c05('0xe')](_0x2c05('0xf'),_0x344b44,_0x2c05('0xd'),JSON[_0x2c05('0x10')](_0x1a7fea));if(_0x1a7fea[_0x2c05('0x11')]){if(_0x1a7fea['error'][_0x2c05('0x12')]===0x1f4){logger[_0x2c05('0x11')](_0x2c05('0xc'),_0x344b44,_0x1a7fea[_0x2c05('0x11')]['message']);return _0x1a023c(_0x1a7fea[_0x2c05('0x11')]['message']);}logger['error'](_0x2c05('0xc'),_0x344b44,_0x1a7fea[_0x2c05('0x11')]['message']);return _0x177fba(_0x1a7fea[_0x2c05('0x11')][_0x2c05('0x13')]);}else{logger[_0x2c05('0xb')](_0x2c05('0xc'),_0x344b44,_0x2c05('0xd'));_0x177fba(_0x1a7fea[_0x2c05('0x14')][_0x2c05('0x13')]);}})[_0x2c05('0x15')](function(_0x3e225c){logger['error'](_0x2c05('0xc'),_0x344b44,_0x3e225c);_0x1a023c(_0x3e225c);});});}
\ No newline at end of file
index 1a931f7..685b347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdee=['destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','post','put','/:id','update','delete'];(function(_0x397cfb,_0xb8f317){var _0x15fed9=function(_0x3eba43){while(--_0x3eba43){_0x397cfb['push'](_0x397cfb['shift']());}};_0x15fed9(++_0xb8f317);}(_0xcdee,0x134));var _0xecde=function(_0x1f1896,_0x6d1275){_0x1f1896=_0x1f1896-0x0;var _0x427d3c=_0xcdee[_0x1f1896];return _0x427d3c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xecde('0x0'));var timeout=require(_0xecde('0x1'));var express=require(_0xecde('0x2'));var router=express[_0xecde('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xecde('0x4'));var interaction=require(_0xecde('0x5'));var config=require(_0xecde('0x6'));var controller=require(_0xecde('0x7'));router[_0xecde('0x8')]('/',auth[_0xecde('0x9')](),controller['index']);router[_0xecde('0x8')]('/:id',auth[_0xecde('0x9')](),controller['show']);router[_0xecde('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0xecde('0xb')](_0xecde('0xc'),auth[_0xecde('0x9')](),controller[_0xecde('0xd')]);router[_0xecde('0xe')](_0xecde('0xc'),auth['isAuthenticated'](),controller[_0xecde('0xf')]);module[_0xecde('0x10')]=router;
\ No newline at end of file
+var _0xb3f2=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','isAuthenticated','get','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x681141,_0x11dfa3){var _0x15b084=function(_0x3835a4){while(--_0x3835a4){_0x681141['push'](_0x681141['shift']());}};_0x15b084(++_0x11dfa3);}(_0xb3f2,0x140));var _0x2b3f=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xb3f2[_0x45d3f0];return _0x314b79;};'use strict';var multer=require('multer');var util=require(_0x2b3f('0x0'));var path=require(_0x2b3f('0x1'));var timeout=require(_0x2b3f('0x2'));var express=require(_0x2b3f('0x3'));var router=express[_0x2b3f('0x4')]();var fs_extra=require(_0x2b3f('0x5'));var auth=require(_0x2b3f('0x6'));var interaction=require(_0x2b3f('0x7'));var config=require(_0x2b3f('0x8'));var controller=require(_0x2b3f('0x9'));router['get']('/',auth[_0x2b3f('0xa')](),controller['index']);router[_0x2b3f('0xb')](_0x2b3f('0xc'),auth[_0x2b3f('0xa')](),controller[_0x2b3f('0xd')]);router[_0x2b3f('0xe')]('/',auth[_0x2b3f('0xa')](),controller[_0x2b3f('0xf')]);router['put'](_0x2b3f('0xc'),auth[_0x2b3f('0xa')](),controller[_0x2b3f('0x10')]);router[_0x2b3f('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x2b3f('0x12')]);module[_0x2b3f('0x13')]=router;
\ No newline at end of file
index 6d820ff..df2419a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x4991d6,_0x348deb){var _0x50faf7=function(_0x14c7f8){while(--_0x14c7f8){_0x4991d6['push'](_0x4991d6['shift']());}};_0x50faf7(++_0x348deb);}(_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
+var _0xb7e7=['STRING','sequelize'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb7e7[_0x1a36a5];return _0x746243;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
index e8e74fb..cf413ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ad=['socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','set','reject','save','update','then','destroy','get','CustomDashboards','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','options','count','includeAll','include','findAll','catch','params','keys','length','merge','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','createdAt','updatedAt','omit','body','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost'];(function(_0x1947e5,_0x4a7b4b){var _0x175f83=function(_0x15b88e){while(--_0x15b88e){_0x1947e5['push'](_0x1947e5['shift']());}};_0x175f83(++_0x4a7b4b);}(_0x94ad,0x1e5));var _0xd94a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x94ad[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require(_0xd94a('0x0'));var rimraf=require(_0xd94a('0x1'));var zipdir=require(_0xd94a('0x2'));var jsonpatch=require(_0xd94a('0x3'));var rp=require(_0xd94a('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd94a('0x5'));var util=require(_0xd94a('0x6'));var path=require(_0xd94a('0x7'));var sox=require('sox');var csv=require(_0xd94a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd94a('0x9'));var _=require(_0xd94a('0xa'));var squel=require(_0xd94a('0xb'));var crypto=require('crypto');var jsforce=require(_0xd94a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd94a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd94a('0xe'));var hardwareService=require(_0xd94a('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xd94a('0x10'));var config=require(_0xd94a('0x11'));var licenseUtil=require(_0xd94a('0x12'));var db=require(_0xd94a('0x13'))['db'];config['redis']=_[_0xd94a('0x14')](config[_0xd94a('0x15')],{'host':_0xd94a('0x16'),'port':0x18eb});var socket=require(_0xd94a('0x17'))(new Redis(config[_0xd94a('0x15')]));require(_0xd94a('0x18'))[_0xd94a('0x19')](socket);function respondWithStatusCode(_0x5e1466,_0x5c7605){_0x5c7605=_0x5c7605||0xcc;return function(_0xa9550d){if(_0xa9550d){return _0x5e1466[_0xd94a('0x1a')](_0x5c7605);}return _0x5e1466[_0xd94a('0x1b')](_0x5c7605)[_0xd94a('0x1c')]();};}function respondWithResult(_0x58f06d,_0x2fba51){_0x2fba51=_0x2fba51||0xc8;return function(_0x6a4d19){if(_0x6a4d19){return _0x58f06d['status'](_0x2fba51)[_0xd94a('0x1d')](_0x6a4d19);}};}function respondWithFilteredResult(_0x5141ec,_0x38fdf8){return function(_0x854a27){if(_0x854a27){var _0x422215=typeof _0x38fdf8[_0xd94a('0x1e')]===_0xd94a('0x1f')&&typeof _0x38fdf8['limit']===_0xd94a('0x1f');var _0x504b34=_0x854a27['count'];var _0x22525e=_0x422215?0x0:_0x38fdf8[_0xd94a('0x1e')];var _0x1f7cc2=_0x422215?_0x854a27['count']:_0x38fdf8[_0xd94a('0x1e')]+_0x38fdf8[_0xd94a('0x20')];var _0x1e0642;if(_0x1f7cc2>=_0x504b34){_0x1f7cc2=_0x504b34;_0x1e0642=0xc8;}else{_0x1e0642=0xce;}_0x5141ec['status'](_0x1e0642);return _0x5141ec[_0xd94a('0x21')]('Content-Range',_0x22525e+'-'+_0x1f7cc2+'/'+_0x504b34)['json'](_0x854a27);}return null;};}function patchUpdates(_0x1a0d67){return function(_0x1a61a6){try{jsonpatch['apply'](_0x1a61a6,_0x1a0d67,!![]);}catch(_0x39a6d6){return BPromise[_0xd94a('0x22')](_0x39a6d6);}return _0x1a61a6[_0xd94a('0x23')]();};}function saveUpdates(_0x7eb323,_0x9bcecf){return function(_0x54409f){if(_0x54409f){return _0x54409f[_0xd94a('0x24')](_0x7eb323)[_0xd94a('0x25')](function(_0x247ba0){return _0x247ba0;});}return null;};}function removeEntity(_0x29a1a0,_0x2d9c26){return function(_0x3e9132){if(_0x3e9132){return _0x3e9132[_0xd94a('0x26')]()[_0xd94a('0x25')](function(){var _0x374345=_0x3e9132[_0xd94a('0x27')]({'plain':!![]});var _0x219c9e=_0xd94a('0x28');return db['UserProfileResource'][_0xd94a('0x26')]({'where':{'type':_0x219c9e,'resourceId':_0x374345['id']}})[_0xd94a('0x25')](function(){return _0x3e9132;});})[_0xd94a('0x25')](function(){_0x29a1a0[_0xd94a('0x1b')](0xcc)[_0xd94a('0x1c')]();});}};}function handleEntityNotFound(_0x2c6f0e,_0x12ce13){return function(_0x31d62c){if(!_0x31d62c){_0x2c6f0e[_0xd94a('0x1a')](0x194);}return _0x31d62c;};}function handleError(_0x194535,_0x25164d){_0x25164d=_0x25164d||0x1f4;return function(_0x27c972){logger[_0xd94a('0x29')](_0x27c972[_0xd94a('0x2a')]);if(_0x27c972[_0xd94a('0x2b')]){delete _0x27c972[_0xd94a('0x2b')];}_0x194535['status'](_0x25164d)[_0xd94a('0x2c')](_0x27c972);};}exports[_0xd94a('0x2d')]=function(_0x57a5a5,_0x662bbe){var _0x4b498e={},_0x482243={},_0x41de3d={'count':0x0,'rows':[]};var _0x25f27d=_[_0xd94a('0x2e')](db[_0xd94a('0x2f')][_0xd94a('0x30')],function(_0x1fea0e){return{'name':_0x1fea0e[_0xd94a('0x31')],'type':_0x1fea0e[_0xd94a('0x32')][_0xd94a('0x33')]};});_0x482243['model']=_[_0xd94a('0x2e')](_0x25f27d,'name');_0x482243['query']=_['keys'](_0x57a5a5[_0xd94a('0x34')]);_0x482243[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x482243[_0xd94a('0x37')],_0x482243[_0xd94a('0x34')]);_0x4b498e['attributes']=_['intersection'](_0x482243[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x38')]));_0x4b498e[_0xd94a('0x39')]=_0x4b498e[_0xd94a('0x39')]['length']?_0x4b498e['attributes']:_0x482243[_0xd94a('0x37')];if(!_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3a')]('nolimit')){_0x4b498e[_0xd94a('0x20')]=qs[_0xd94a('0x20')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x20')]);_0x4b498e['offset']=qs['offset'](_0x57a5a5['query']['offset']);}_0x4b498e[_0xd94a('0x3b')]=qs[_0xd94a('0x3c')](_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3c')]);_0x4b498e[_0xd94a('0x3d')]=qs[_0xd94a('0x35')](_[_0xd94a('0x3e')](_0x57a5a5[_0xd94a('0x34')],_0x482243[_0xd94a('0x35')]),_0x25f27d);if(_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3f')]){_0x4b498e[_0xd94a('0x3d')]=_['merge'](_0x4b498e[_0xd94a('0x3d')],{'$or':_[_0xd94a('0x2e')](_0x25f27d,function(_0x4cf628){if(_0x4cf628['type']!=='VIRTUAL'){var _0x590dd8={};_0x590dd8[_0x4cf628[_0xd94a('0x2b')]]={'$like':'%'+_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x3f')]+'%'};return _0x590dd8;}})});}_0x4b498e=_['merge']({},_0x4b498e,_0x57a5a5[_0xd94a('0x40')]);var _0x128835={'where':_0x4b498e[_0xd94a('0x3d')]};return db[_0xd94a('0x2f')][_0xd94a('0x41')](_0x128835)['then'](function(_0x5c6384){_0x41de3d[_0xd94a('0x41')]=_0x5c6384;if(_0x57a5a5[_0xd94a('0x34')][_0xd94a('0x42')]){_0x4b498e[_0xd94a('0x43')]=[{'all':!![]}];}return db[_0xd94a('0x2f')][_0xd94a('0x44')](_0x4b498e);})[_0xd94a('0x25')](function(_0x24ccfa){_0x41de3d['rows']=_0x24ccfa;return _0x41de3d;})['then'](respondWithFilteredResult(_0x662bbe,_0x4b498e))[_0xd94a('0x45')](handleError(_0x662bbe,null));};exports['show']=function(_0x4de486,_0x27e2f4){var _0x219a21={'raw':![],'where':{'id':_0x4de486[_0xd94a('0x46')]['id']}},_0x5e44d7={};_0x5e44d7[_0xd94a('0x37')]=_[_0xd94a('0x47')](db[_0xd94a('0x2f')][_0xd94a('0x30')]);_0x5e44d7['query']=_[_0xd94a('0x47')](_0x4de486['query']);_0x5e44d7[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x5e44d7[_0xd94a('0x37')],_0x5e44d7[_0xd94a('0x34')]);_0x219a21[_0xd94a('0x39')]=_['intersection'](_0x5e44d7[_0xd94a('0x37')],qs['fields'](_0x4de486[_0xd94a('0x34')][_0xd94a('0x38')]));_0x219a21[_0xd94a('0x39')]=_0x219a21[_0xd94a('0x39')][_0xd94a('0x48')]?_0x219a21['attributes']:_0x5e44d7[_0xd94a('0x37')];if(_0x4de486[_0xd94a('0x34')]['includeAll']){_0x219a21['include']=[{'all':!![]}];}_0x219a21=_[_0xd94a('0x49')]({},_0x219a21,_0x4de486[_0xd94a('0x40')]);return db[_0xd94a('0x2f')]['find'](_0x219a21)[_0xd94a('0x25')](handleEntityNotFound(_0x27e2f4,null))[_0xd94a('0x25')](respondWithResult(_0x27e2f4,null))['catch'](handleError(_0x27e2f4,null));};exports['create']=function(_0x56a43c,_0x227231){return db[_0xd94a('0x2f')][_0xd94a('0x4a')](_0x56a43c['body'],{})[_0xd94a('0x25')](function(_0x411fb8){var _0x8355dc=_0x56a43c[_0xd94a('0x4b')][_0xd94a('0x27')]({'plain':!![]});if(!_0x8355dc)throw new Error(_0xd94a('0x4c'));if(_0x8355dc['role']===_0xd94a('0x4b')){var _0x487a74=_0x411fb8[_0xd94a('0x27')]({'plain':!![]});var _0x2d711d=_0xd94a('0x28');return db[_0xd94a('0x4d')][_0xd94a('0x4e')]({'where':{'name':_0x2d711d,'userProfileId':_0x8355dc[_0xd94a('0x4f')]},'raw':!![]})[_0xd94a('0x25')](function(_0x3ebe46){if(_0x3ebe46&&_0x3ebe46[_0xd94a('0x50')]===0x0){return db[_0xd94a('0x51')][_0xd94a('0x4a')]({'name':_0x487a74[_0xd94a('0x2b')],'resourceId':_0x487a74['id'],'type':_0x3ebe46[_0xd94a('0x2b')],'sectionId':_0x3ebe46['id']},{})[_0xd94a('0x25')](function(){return _0x411fb8;});}else{return _0x411fb8;}})['catch'](function(_0x267723){logger[_0xd94a('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x267723);throw _0x267723;});}return _0x411fb8;})['then'](respondWithResult(_0x227231,0xc9))[_0xd94a('0x45')](handleError(_0x227231,null));};exports['clone']=function(_0xeb701a,_0x5b1359){var _0x114b2a={'where':{'id':_0xeb701a['params']['id']}},_0x3301cd={};_0x3301cd[_0xd94a('0x37')]=_[_0xd94a('0x47')](db[_0xd94a('0x2f')]['rawAttributes']);_0x114b2a['attributes']=_[_0xd94a('0x36')](_0x3301cd[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0xeb701a[_0xd94a('0x34')][_0xd94a('0x38')]));_0x114b2a[_0xd94a('0x39')]=_0x114b2a[_0xd94a('0x39')][_0xd94a('0x48')]?_0x114b2a[_0xd94a('0x39')]:_0x3301cd[_0xd94a('0x37')];if(_0xeb701a[_0xd94a('0x34')][_0xd94a('0x42')]){_0x114b2a[_0xd94a('0x43')]=[{'all':!![]}];}_0x114b2a=_[_0xd94a('0x49')]({},_0x114b2a,_0xeb701a[_0xd94a('0x40')]);return db[_0xd94a('0x2f')][_0xd94a('0x4e')](_0x114b2a)['then'](handleEntityNotFound(_0x5b1359,null))[_0xd94a('0x25')](function(_0x2e33db){if(_0x2e33db){var _0xa216b2=_0x2e33db['get']({'plain':!![]});_0xa216b2=qs['omit'](_0xa216b2,['id',_0xd94a('0x52'),_0xd94a('0x53')]);_0xeb701a['body']=_[_0xd94a('0x54')](_0xeb701a[_0xd94a('0x55')],['id','createdAt',_0xd94a('0x53')]);return db[_0xd94a('0x2f')][_0xd94a('0x4a')](_[_0xd94a('0x49')](_0xa216b2,_0xeb701a['body']),{'include':_0xeb701a[_0xd94a('0x34')][_0xd94a('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x22afa2){var _0x5a9a31=_0xeb701a[_0xd94a('0x4b')][_0xd94a('0x27')]({'plain':!![]});if(!_0x5a9a31)throw new Error(_0xd94a('0x4c'));if(_0x5a9a31[_0xd94a('0x56')]===_0xd94a('0x4b')){var _0x27e872=_0x22afa2['get']({'plain':!![]});var _0x558879=_0xd94a('0x28');return db[_0xd94a('0x4d')][_0xd94a('0x4e')]({'where':{'name':_0x558879,'userProfileId':_0x5a9a31[_0xd94a('0x4f')]},'raw':!![]})['then'](function(_0x38a85e){if(_0x38a85e&&_0x38a85e[_0xd94a('0x50')]===0x0){return db[_0xd94a('0x51')][_0xd94a('0x4a')]({'name':_0x27e872['name'],'resourceId':_0x27e872['id'],'type':_0x38a85e[_0xd94a('0x2b')],'sectionId':_0x38a85e['id']},{})['then'](function(){return _0x22afa2;});}else{return _0x22afa2;}})[_0xd94a('0x45')](function(_0x52b359){logger['error'](_0xd94a('0x57'),_0x52b359);throw _0x52b359;});}return _0x22afa2;});}})[_0xd94a('0x25')](respondWithResult(_0x5b1359,0xc9))[_0xd94a('0x45')](handleError(_0x5b1359,null));};exports[_0xd94a('0x24')]=function(_0xf379f2,_0x228d08){if(_0xf379f2[_0xd94a('0x55')]['id']){delete _0xf379f2[_0xd94a('0x55')]['id'];}return db[_0xd94a('0x2f')]['find']({'where':{'id':_0xf379f2[_0xd94a('0x46')]['id']}})['then'](handleEntityNotFound(_0x228d08,null))[_0xd94a('0x25')](saveUpdates(_0xf379f2['body'],null))[_0xd94a('0x25')](respondWithResult(_0x228d08,null))[_0xd94a('0x45')](handleError(_0x228d08,null));};exports[_0xd94a('0x26')]=function(_0x4573f4,_0x2d8abf){return db['Dashboard'][_0xd94a('0x4e')]({'where':{'id':_0x4573f4[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0x2d8abf,null))[_0xd94a('0x25')](removeEntity(_0x2d8abf,null))[_0xd94a('0x45')](handleError(_0x2d8abf,null));};function widgetAttributes(_0x4aedd9){try{switch(_0x4aedd9[_0xd94a('0x32')]){case _0xd94a('0x58'):return[{'name':_0xd94a('0x59'),'value':_0x4aedd9[_0xd94a('0x59')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x5c')}];case _0xd94a('0x5d'):return[{'name':_0xd94a('0x5e'),'value':_0x4aedd9['attrPath']||(_0x4aedd9['attrs']&&_0x4aedd9['attrs'][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||''}];case _0xd94a('0x5f'):return[{'name':_0xd94a('0x60'),'value':_0x4aedd9[_0xd94a('0x60')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||'HH:mm:ss'},{'name':_0xd94a('0x61'),'value':_0x4aedd9[_0xd94a('0x61')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x1]?_0x4aedd9['attrs'][0x1][_0xd94a('0x5b')]:undefined)||'0.00'},{'name':_0xd94a('0x62'),'value':_0x4aedd9['attrFontSize']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x2]?_0x4aedd9[_0xd94a('0x5a')][0x2][_0xd94a('0x5b')]:undefined)||0xc}];case _0xd94a('0x63'):return[{'name':_0xd94a('0x64'),'value':_0x4aedd9[_0xd94a('0x64')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x65')},{'name':_0xd94a('0x66'),'value':_0x4aedd9[_0xd94a('0x66')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||[]},{'name':_0xd94a('0x62'),'value':_0x4aedd9[_0xd94a('0x62')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x2]?_0x4aedd9['attrs'][0x2]['value']:undefined)||0x14},{'name':_0xd94a('0x67'),'value':_0x4aedd9['attrChannel']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x3]?_0x4aedd9[_0xd94a('0x5a')][0x3]['value']:undefined)||_0xd94a('0x68')},{'name':_0xd94a('0x69'),'value':_0x4aedd9[_0xd94a('0x69')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x4]?_0x4aedd9[_0xd94a('0x5a')][0x4]['value']:undefined)||''},{'name':_0xd94a('0x6a'),'value':_0x4aedd9[_0xd94a('0x6a')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x5]?_0x4aedd9[_0xd94a('0x5a')][0x5]['value']:undefined)||''},{'name':_0xd94a('0x6b'),'value':_0x4aedd9[_0xd94a('0x6b')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x6]?_0x4aedd9[_0xd94a('0x5a')][0x6][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6c'),'value':_0x4aedd9[_0xd94a('0x6c')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x7]?_0x4aedd9[_0xd94a('0x5a')][0x7][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6d'),'value':_0x4aedd9['attrWhatsappAccounts']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x8]?_0x4aedd9[_0xd94a('0x5a')][0x8][_0xd94a('0x5b')]:undefined)||''},{'name':'attrChatWebsites','value':_0x4aedd9[_0xd94a('0x6e')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x9]?_0x4aedd9[_0xd94a('0x5a')][0x9]['value']:undefined)||''}];case'multibar-chart':case _0xd94a('0x6f'):return[{'name':_0xd94a('0x70'),'value':_0x4aedd9[_0xd94a('0x70')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||_0xd94a('0x65')},{'name':_0xd94a('0x71'),'value':_0x4aedd9[_0xd94a('0x71')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x72'),'value':_0x4aedd9[_0xd94a('0x72')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x2]?_0x4aedd9[_0xd94a('0x5a')][0x2][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x66'),'value':_0x4aedd9['attrVoiceQueues']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x3]?_0x4aedd9[_0xd94a('0x5a')][0x3][_0xd94a('0x5b')]:undefined)||[]},{'name':_0xd94a('0x67'),'value':_0x4aedd9['attrChannel']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x4]?_0x4aedd9[_0xd94a('0x5a')][0x4][_0xd94a('0x5b')]:undefined)||_0xd94a('0x68')},{'name':_0xd94a('0x69'),'value':_0x4aedd9[_0xd94a('0x69')]||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x5]?_0x4aedd9['attrs'][0x5][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6a'),'value':_0x4aedd9[_0xd94a('0x6a')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x6]?_0x4aedd9[_0xd94a('0x5a')][0x6][_0xd94a('0x5b')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4aedd9['attrSmsAccounts']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x7]?_0x4aedd9['attrs'][0x7]['value']:undefined)||''},{'name':_0xd94a('0x6c'),'value':_0x4aedd9[_0xd94a('0x6c')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x8]?_0x4aedd9[_0xd94a('0x5a')][0x8][_0xd94a('0x5b')]:undefined)||''},{'name':_0xd94a('0x6d'),'value':_0x4aedd9['attrWhatsappAccounts']||(_0x4aedd9['attrs']&&_0x4aedd9[_0xd94a('0x5a')][0x9]?_0x4aedd9[_0xd94a('0x5a')][0x9]['value']:undefined)||''},{'name':_0xd94a('0x6e'),'value':_0x4aedd9[_0xd94a('0x6e')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0xa]?_0x4aedd9[_0xd94a('0x5a')][0xa][_0xd94a('0x5b')]:undefined)||''}];case _0xd94a('0x73'):return[{'name':_0xd94a('0x74'),'type':_0x4aedd9[_0xd94a('0x75')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9['attrs'][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0]['type']:undefined)||null,'value':_0x4aedd9['attrReport']||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x0]?_0x4aedd9[_0xd94a('0x5a')][0x0][_0xd94a('0x5b')]:undefined)||null},{'name':_0xd94a('0x76'),'value':_0x4aedd9[_0xd94a('0x76')]||(_0x4aedd9[_0xd94a('0x5a')]&&_0x4aedd9[_0xd94a('0x5a')][0x1]?_0x4aedd9[_0xd94a('0x5a')][0x1][_0xd94a('0x5b')]:undefined)||0x0}];default:return[];}}catch(_0x2cfc81){logger[_0xd94a('0x29')](_0xd94a('0x77'),JSON[_0xd94a('0x78')](_0x2cfc81));return[];}}exports[_0xd94a('0x79')]=function(_0x373f28,_0xc5b6cf,_0x4a0cf3){if(_0x373f28[_0xd94a('0x55')]['id']){delete _0x373f28['body']['id'];}return db['Dashboard'][_0xd94a('0x4e')]({'where':{'id':_0x373f28[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0xc5b6cf,null))[_0xd94a('0x25')](function(_0x1e2e9a){if(_0x1e2e9a){_0x373f28[_0xd94a('0x55')][_0xd94a('0x7a')]=_0x1e2e9a['id'];_0x373f28[_0xd94a('0x55')][_0xd94a('0x5a')]=widgetAttributes(_0x373f28['body']);return db[_0xd94a('0x7b')][_0xd94a('0x4a')](_0x373f28[_0xd94a('0x55')]);}})[_0xd94a('0x25')](respondWithResult(_0xc5b6cf,null))[_0xd94a('0x45')](handleError(_0xc5b6cf,null));};exports[_0xd94a('0x7c')]=function(_0x13b260,_0x5e67e4,_0x4dda76){var _0x135e50={};var _0x4bc943={};var _0x4512c4;var _0x3ac515;return db['Dashboard'][_0xd94a('0x7d')]({'where':{'id':_0x13b260[_0xd94a('0x46')]['id']}})[_0xd94a('0x25')](handleEntityNotFound(_0x5e67e4,null))[_0xd94a('0x25')](function(_0xa3eb86){if(_0xa3eb86){_0x4512c4=_0xa3eb86;_0x4bc943[_0xd94a('0x37')]=_['keys'](db[_0xd94a('0x7b')]['rawAttributes']);_0x4bc943[_0xd94a('0x34')]=_['keys'](_0x13b260[_0xd94a('0x34')]);_0x4bc943[_0xd94a('0x35')]=_[_0xd94a('0x36')](_0x4bc943[_0xd94a('0x37')],_0x4bc943[_0xd94a('0x34')]);_0x135e50[_0xd94a('0x39')]=_[_0xd94a('0x36')](_0x4bc943[_0xd94a('0x37')],qs[_0xd94a('0x38')](_0x13b260[_0xd94a('0x34')][_0xd94a('0x38')]));_0x135e50[_0xd94a('0x39')]=_0x135e50['attributes'][_0xd94a('0x48')]?_0x135e50['attributes']:_0x4bc943['model'];_0x135e50[_0xd94a('0x3b')]=qs[_0xd94a('0x3c')](_0x13b260[_0xd94a('0x34')][_0xd94a('0x3c')]);_0x135e50[_0xd94a('0x3d')]=qs['filters'](_['pick'](_0x13b260[_0xd94a('0x34')],_0x4bc943[_0xd94a('0x35')]));if(_0x13b260[_0xd94a('0x34')][_0xd94a('0x3f')]){_0x135e50[_0xd94a('0x3d')]=_[_0xd94a('0x49')](_0x135e50['where'],{'$or':_[_0xd94a('0x2e')](_0x135e50[_0xd94a('0x39')],function(_0x4b3685){var _0x24082a={};_0x24082a[_0x4b3685]={'$like':'%'+_0x13b260[_0xd94a('0x34')]['filter']+'%'};return _0x24082a;})});}_0x135e50=_[_0xd94a('0x49')]({},_0x135e50,_0x13b260['options']);return _0x4512c4[_0xd94a('0x7c')](_0x135e50);}})['then'](function(_0x2e2eeb){if(_0x2e2eeb){_0x3ac515=_0x2e2eeb[_0xd94a('0x48')];if(!_0x13b260[_0xd94a('0x34')][_0xd94a('0x3a')](_0xd94a('0x7e'))){_0x135e50[_0xd94a('0x20')]=qs[_0xd94a('0x20')](_0x13b260[_0xd94a('0x34')]['limit']);_0x135e50['offset']=qs[_0xd94a('0x1e')](_0x13b260['query'][_0xd94a('0x1e')]);}return _0x4512c4[_0xd94a('0x7c')](_0x135e50);}})[_0xd94a('0x25')](function(_0x528e5f){if(_0x528e5f){return _0x528e5f?{'count':_0x3ac515,'rows':_0x528e5f}:null;}})[_0xd94a('0x25')](respondWithResult(_0x5e67e4,null))['catch'](handleError(_0x5e67e4,null));};
\ No newline at end of file
+var _0xb806=['total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','attrWhatsappAccounts','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','findOne','order','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','update','then','get','CustomDashboards','UserProfileResource','destroy','error','stack','name','send','index','map','Dashboard','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','rawAttributes','include','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','role','iframe','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric'];(function(_0x45e590,_0x2569c6){var _0x1c3e09=function(_0x322577){while(--_0x322577){_0x45e590['push'](_0x45e590['shift']());}};_0x1c3e09(++_0x2569c6);}(_0xb806,0xa1));var _0x6b80=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0xb806[_0x11ce46];return _0x368a1e;};'use strict';var emlformat=require(_0x6b80('0x0'));var rimraf=require(_0x6b80('0x1'));var zipdir=require(_0x6b80('0x2'));var jsonpatch=require(_0x6b80('0x3'));var rp=require(_0x6b80('0x4'));var moment=require('moment');var BPromise=require(_0x6b80('0x5'));var Mustache=require(_0x6b80('0x6'));var util=require('util');var path=require(_0x6b80('0x7'));var sox=require(_0x6b80('0x8'));var csv=require('to-csv');var ejs=require(_0x6b80('0x9'));var fs=require('fs');var fs_extra=require(_0x6b80('0xa'));var _=require(_0x6b80('0xb'));var squel=require(_0x6b80('0xc'));var crypto=require(_0x6b80('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6b80('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6b80('0xf'));var Papa=require('papaparse');var Redis=require(_0x6b80('0x10'));var authService=require(_0x6b80('0x11'));var qs=require(_0x6b80('0x12'));var as=require(_0x6b80('0x13'));var hardwareService=require(_0x6b80('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x6b80('0x15'));var config=require(_0x6b80('0x16'));var licenseUtil=require(_0x6b80('0x17'));var db=require(_0x6b80('0x18'))['db'];config[_0x6b80('0x19')]=_[_0x6b80('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6b80('0x1b'))(new Redis(config[_0x6b80('0x19')]));require(_0x6b80('0x1c'))[_0x6b80('0x1d')](socket);function respondWithStatusCode(_0x6758d4,_0x5d60bf){_0x5d60bf=_0x5d60bf||0xcc;return function(_0x31e208){if(_0x31e208){return _0x6758d4[_0x6b80('0x1e')](_0x5d60bf);}return _0x6758d4[_0x6b80('0x1f')](_0x5d60bf)[_0x6b80('0x20')]();};}function respondWithResult(_0x540601,_0x23c650){_0x23c650=_0x23c650||0xc8;return function(_0x41cab0){if(_0x41cab0){return _0x540601[_0x6b80('0x1f')](_0x23c650)['json'](_0x41cab0);}};}function respondWithFilteredResult(_0x5b0fcd,_0x31531c){return function(_0x3e3e5a){if(_0x3e3e5a){var _0x2eb421=typeof _0x31531c[_0x6b80('0x21')]===_0x6b80('0x22')&&typeof _0x31531c['limit']===_0x6b80('0x22');var _0x104363=_0x3e3e5a[_0x6b80('0x23')];var _0x2c4267=_0x2eb421?0x0:_0x31531c['offset'];var _0x5d7190=_0x2eb421?_0x3e3e5a[_0x6b80('0x23')]:_0x31531c[_0x6b80('0x21')]+_0x31531c[_0x6b80('0x24')];var _0x23832f;if(_0x5d7190>=_0x104363){_0x5d7190=_0x104363;_0x23832f=0xc8;}else{_0x23832f=0xce;}_0x5b0fcd[_0x6b80('0x1f')](_0x23832f);return _0x5b0fcd[_0x6b80('0x25')]('Content-Range',_0x2c4267+'-'+_0x5d7190+'/'+_0x104363)[_0x6b80('0x26')](_0x3e3e5a);}return null;};}function patchUpdates(_0x5e0e0f){return function(_0xc44fc8){try{jsonpatch[_0x6b80('0x27')](_0xc44fc8,_0x5e0e0f,!![]);}catch(_0x1ea271){return BPromise[_0x6b80('0x28')](_0x1ea271);}return _0xc44fc8['save']();};}function saveUpdates(_0x99b96e,_0x3dd715){return function(_0x27d7d0){if(_0x27d7d0){return _0x27d7d0[_0x6b80('0x29')](_0x99b96e)[_0x6b80('0x2a')](function(_0x13fa48){return _0x13fa48;});}return null;};}function removeEntity(_0xa2d28,_0x6a092f){return function(_0x2482b4){if(_0x2482b4){return _0x2482b4['destroy']()['then'](function(){var _0x501a31=_0x2482b4[_0x6b80('0x2b')]({'plain':!![]});var _0x82baab=_0x6b80('0x2c');return db[_0x6b80('0x2d')][_0x6b80('0x2e')]({'where':{'type':_0x82baab,'resourceId':_0x501a31['id']}})[_0x6b80('0x2a')](function(){return _0x2482b4;});})['then'](function(){_0xa2d28['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fa7c8,_0x37b4ed){return function(_0x59e5f9){if(!_0x59e5f9){_0x3fa7c8['sendStatus'](0x194);}return _0x59e5f9;};}function handleError(_0x5d41f2,_0x44659b){_0x44659b=_0x44659b||0x1f4;return function(_0x1ba7f1){logger[_0x6b80('0x2f')](_0x1ba7f1[_0x6b80('0x30')]);if(_0x1ba7f1['name']){delete _0x1ba7f1[_0x6b80('0x31')];}_0x5d41f2[_0x6b80('0x1f')](_0x44659b)[_0x6b80('0x32')](_0x1ba7f1);};}exports[_0x6b80('0x33')]=function(_0xe6a8fb,_0x5e7402){var _0xc66f6a={},_0x28e607={},_0x57f988={'count':0x0,'rows':[]};var _0x4a3151=_[_0x6b80('0x34')](db[_0x6b80('0x35')]['rawAttributes'],function(_0x4cbe27){return{'name':_0x4cbe27[_0x6b80('0x36')],'type':_0x4cbe27['type'][_0x6b80('0x37')]};});_0x28e607[_0x6b80('0x38')]=_['map'](_0x4a3151,'name');_0x28e607[_0x6b80('0x39')]=_[_0x6b80('0x3a')](_0xe6a8fb['query']);_0x28e607[_0x6b80('0x3b')]=_['intersection'](_0x28e607[_0x6b80('0x38')],_0x28e607[_0x6b80('0x39')]);_0xc66f6a[_0x6b80('0x3c')]=_[_0x6b80('0x3d')](_0x28e607[_0x6b80('0x38')],qs['fields'](_0xe6a8fb[_0x6b80('0x39')][_0x6b80('0x3e')]));_0xc66f6a[_0x6b80('0x3c')]=_0xc66f6a[_0x6b80('0x3c')][_0x6b80('0x3f')]?_0xc66f6a[_0x6b80('0x3c')]:_0x28e607['model'];if(!_0xe6a8fb['query'][_0x6b80('0x40')](_0x6b80('0x41'))){_0xc66f6a[_0x6b80('0x24')]=qs[_0x6b80('0x24')](_0xe6a8fb[_0x6b80('0x39')]['limit']);_0xc66f6a[_0x6b80('0x21')]=qs[_0x6b80('0x21')](_0xe6a8fb[_0x6b80('0x39')][_0x6b80('0x21')]);}_0xc66f6a['order']=qs[_0x6b80('0x42')](_0xe6a8fb[_0x6b80('0x39')]['sort']);_0xc66f6a[_0x6b80('0x43')]=qs['filters'](_[_0x6b80('0x44')](_0xe6a8fb['query'],_0x28e607[_0x6b80('0x3b')]),_0x4a3151);if(_0xe6a8fb[_0x6b80('0x39')]['filter']){_0xc66f6a[_0x6b80('0x43')]=_[_0x6b80('0x45')](_0xc66f6a[_0x6b80('0x43')],{'$or':_[_0x6b80('0x34')](_0x4a3151,function(_0x524a7f){if(_0x524a7f[_0x6b80('0x46')]!==_0x6b80('0x47')){var _0x5897ca={};_0x5897ca[_0x524a7f['name']]={'$like':'%'+_0xe6a8fb['query'][_0x6b80('0x48')]+'%'};return _0x5897ca;}})});}_0xc66f6a=_[_0x6b80('0x45')]({},_0xc66f6a,_0xe6a8fb[_0x6b80('0x49')]);var _0xde6eb0={'where':_0xc66f6a[_0x6b80('0x43')]};return db[_0x6b80('0x35')]['count'](_0xde6eb0)[_0x6b80('0x2a')](function(_0x186569){_0x57f988[_0x6b80('0x23')]=_0x186569;if(_0xe6a8fb['query'][_0x6b80('0x4a')]){_0xc66f6a['include']=[{'all':!![]}];}return db[_0x6b80('0x35')][_0x6b80('0x4b')](_0xc66f6a);})[_0x6b80('0x2a')](function(_0x118b2e){_0x57f988['rows']=_0x118b2e;return _0x57f988;})[_0x6b80('0x2a')](respondWithFilteredResult(_0x5e7402,_0xc66f6a))[_0x6b80('0x4c')](handleError(_0x5e7402,null));};exports[_0x6b80('0x4d')]=function(_0xec2222,_0x2d8417){var _0x4965d5={'raw':![],'where':{'id':_0xec2222[_0x6b80('0x4e')]['id']}},_0x3a9ed1={};_0x3a9ed1[_0x6b80('0x38')]=_[_0x6b80('0x3a')](db[_0x6b80('0x35')][_0x6b80('0x4f')]);_0x3a9ed1[_0x6b80('0x39')]=_[_0x6b80('0x3a')](_0xec2222['query']);_0x3a9ed1['filters']=_['intersection'](_0x3a9ed1['model'],_0x3a9ed1[_0x6b80('0x39')]);_0x4965d5[_0x6b80('0x3c')]=_[_0x6b80('0x3d')](_0x3a9ed1[_0x6b80('0x38')],qs[_0x6b80('0x3e')](_0xec2222['query'][_0x6b80('0x3e')]));_0x4965d5['attributes']=_0x4965d5[_0x6b80('0x3c')][_0x6b80('0x3f')]?_0x4965d5[_0x6b80('0x3c')]:_0x3a9ed1['model'];if(_0xec2222[_0x6b80('0x39')][_0x6b80('0x4a')]){_0x4965d5[_0x6b80('0x50')]=[{'all':!![]}];}_0x4965d5=_['merge']({},_0x4965d5,_0xec2222[_0x6b80('0x49')]);return db[_0x6b80('0x35')]['find'](_0x4965d5)[_0x6b80('0x2a')](handleEntityNotFound(_0x2d8417,null))[_0x6b80('0x2a')](respondWithResult(_0x2d8417,null))[_0x6b80('0x4c')](handleError(_0x2d8417,null));};exports[_0x6b80('0x51')]=function(_0x2ff6c4,_0x27c573){return db[_0x6b80('0x35')][_0x6b80('0x51')](_0x2ff6c4[_0x6b80('0x52')],{})[_0x6b80('0x2a')](function(_0x18107d){var _0x575b94=_0x2ff6c4['user'][_0x6b80('0x2b')]({'plain':!![]});if(!_0x575b94)throw new Error(_0x6b80('0x53'));if(_0x575b94['role']==='user'){var _0x3263f4=_0x18107d['get']({'plain':!![]});var _0x1557ec=_0x6b80('0x2c');return db[_0x6b80('0x54')][_0x6b80('0x55')]({'where':{'name':_0x1557ec,'userProfileId':_0x575b94[_0x6b80('0x56')]},'raw':!![]})[_0x6b80('0x2a')](function(_0x4e1496){if(_0x4e1496&&_0x4e1496[_0x6b80('0x57')]===0x0){return db[_0x6b80('0x2d')][_0x6b80('0x51')]({'name':_0x3263f4[_0x6b80('0x31')],'resourceId':_0x3263f4['id'],'type':_0x4e1496['name'],'sectionId':_0x4e1496['id']},{})['then'](function(){return _0x18107d;});}else{return _0x18107d;}})[_0x6b80('0x4c')](function(_0x31a816){logger[_0x6b80('0x2f')](_0x6b80('0x58'),_0x31a816);throw _0x31a816;});}return _0x18107d;})['then'](respondWithResult(_0x27c573,0xc9))[_0x6b80('0x4c')](handleError(_0x27c573,null));};exports['clone']=function(_0x4ea694,_0x43f381){var _0x3191dd={'where':{'id':_0x4ea694['params']['id']}},_0x1ef550={};_0x1ef550[_0x6b80('0x38')]=_[_0x6b80('0x3a')](db[_0x6b80('0x35')][_0x6b80('0x4f')]);_0x3191dd[_0x6b80('0x3c')]=_['intersection'](_0x1ef550[_0x6b80('0x38')],qs[_0x6b80('0x3e')](_0x4ea694[_0x6b80('0x39')][_0x6b80('0x3e')]));_0x3191dd['attributes']=_0x3191dd[_0x6b80('0x3c')][_0x6b80('0x3f')]?_0x3191dd['attributes']:_0x1ef550['model'];if(_0x4ea694['query'][_0x6b80('0x4a')]){_0x3191dd['include']=[{'all':!![]}];}_0x3191dd=_[_0x6b80('0x45')]({},_0x3191dd,_0x4ea694[_0x6b80('0x49')]);return db[_0x6b80('0x35')][_0x6b80('0x55')](_0x3191dd)[_0x6b80('0x2a')](handleEntityNotFound(_0x43f381,null))[_0x6b80('0x2a')](function(_0x314ebd){if(_0x314ebd){var _0x7d9fea=_0x314ebd['get']({'plain':!![]});_0x7d9fea=qs[_0x6b80('0x59')](_0x7d9fea,['id',_0x6b80('0x5a'),_0x6b80('0x5b')]);_0x4ea694[_0x6b80('0x52')]=_[_0x6b80('0x59')](_0x4ea694['body'],['id','createdAt',_0x6b80('0x5b')]);return db[_0x6b80('0x35')][_0x6b80('0x51')](_['merge'](_0x7d9fea,_0x4ea694[_0x6b80('0x52')]),{'include':_0x4ea694[_0x6b80('0x39')]['includeAll']?[{'all':!![]}]:undefined})[_0x6b80('0x2a')](function(_0x231665){var _0x365010=_0x4ea694['user'][_0x6b80('0x2b')]({'plain':!![]});if(!_0x365010)throw new Error(_0x6b80('0x53'));if(_0x365010[_0x6b80('0x5c')]==='user'){var _0x5651e2=_0x231665[_0x6b80('0x2b')]({'plain':!![]});var _0x31907f='CustomDashboards';return db[_0x6b80('0x54')][_0x6b80('0x55')]({'where':{'name':_0x31907f,'userProfileId':_0x365010[_0x6b80('0x56')]},'raw':!![]})[_0x6b80('0x2a')](function(_0x2da617){if(_0x2da617&&_0x2da617[_0x6b80('0x57')]===0x0){return db[_0x6b80('0x2d')][_0x6b80('0x51')]({'name':_0x5651e2[_0x6b80('0x31')],'resourceId':_0x5651e2['id'],'type':_0x2da617[_0x6b80('0x31')],'sectionId':_0x2da617['id']},{})[_0x6b80('0x2a')](function(){return _0x231665;});}else{return _0x231665;}})[_0x6b80('0x4c')](function(_0x2f1220){logger[_0x6b80('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f1220);throw _0x2f1220;});}return _0x231665;});}})['then'](respondWithResult(_0x43f381,0xc9))[_0x6b80('0x4c')](handleError(_0x43f381,null));};exports[_0x6b80('0x29')]=function(_0x1fd78e,_0x47ea04){if(_0x1fd78e[_0x6b80('0x52')]['id']){delete _0x1fd78e['body']['id'];}return db[_0x6b80('0x35')][_0x6b80('0x55')]({'where':{'id':_0x1fd78e[_0x6b80('0x4e')]['id']}})[_0x6b80('0x2a')](handleEntityNotFound(_0x47ea04,null))[_0x6b80('0x2a')](saveUpdates(_0x1fd78e[_0x6b80('0x52')],null))['then'](respondWithResult(_0x47ea04,null))['catch'](handleError(_0x47ea04,null));};exports['destroy']=function(_0x1a5160,_0x2b1f40){return db[_0x6b80('0x35')][_0x6b80('0x55')]({'where':{'id':_0x1a5160[_0x6b80('0x4e')]['id']}})[_0x6b80('0x2a')](handleEntityNotFound(_0x2b1f40,null))[_0x6b80('0x2a')](removeEntity(_0x2b1f40,null))['catch'](handleError(_0x2b1f40,null));};function widgetAttributes(_0x3ba82b){try{switch(_0x3ba82b[_0x6b80('0x46')]){case _0x6b80('0x5d'):return[{'name':'attrUrl','value':_0x3ba82b[_0x6b80('0x5e')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0]['value']:undefined)||_0x6b80('0x60')}];case _0x6b80('0x61'):return[{'name':'attrPath','value':_0x3ba82b[_0x6b80('0x62')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b['attrs'][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0][_0x6b80('0x63')]:undefined)||''}];case _0x6b80('0x64'):return[{'name':_0x6b80('0x65'),'value':_0x3ba82b['attrHourFormat']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x0]?_0x3ba82b['attrs'][0x0][_0x6b80('0x63')]:undefined)||_0x6b80('0x66')},{'name':'attrTimezone','value':_0x3ba82b[_0x6b80('0x67')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x1]?_0x3ba82b[_0x6b80('0x5f')][0x1][_0x6b80('0x63')]:undefined)||_0x6b80('0x68')},{'name':_0x6b80('0x69'),'value':_0x3ba82b[_0x6b80('0x69')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x2]?_0x3ba82b[_0x6b80('0x5f')][0x2][_0x6b80('0x63')]:undefined)||0xc}];case'counter':return[{'name':_0x6b80('0x6a'),'value':_0x3ba82b[_0x6b80('0x6a')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b['attrs'][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0]['value']:undefined)||_0x6b80('0x6b')},{'name':_0x6b80('0x6c'),'value':_0x3ba82b[_0x6b80('0x6c')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x1]?_0x3ba82b[_0x6b80('0x5f')][0x1][_0x6b80('0x63')]:undefined)||[]},{'name':_0x6b80('0x69'),'value':_0x3ba82b['attrFontSize']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x2]?_0x3ba82b['attrs'][0x2][_0x6b80('0x63')]:undefined)||0x14},{'name':_0x6b80('0x6d'),'value':_0x3ba82b[_0x6b80('0x6d')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x3]?_0x3ba82b[_0x6b80('0x5f')][0x3][_0x6b80('0x63')]:undefined)||'voice'},{'name':_0x6b80('0x6e'),'value':_0x3ba82b['attrEmailAccounts']||(_0x3ba82b['attrs']&&_0x3ba82b['attrs'][0x4]?_0x3ba82b[_0x6b80('0x5f')][0x4][_0x6b80('0x63')]:undefined)||''},{'name':_0x6b80('0x6f'),'value':_0x3ba82b[_0x6b80('0x6f')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x5]?_0x3ba82b['attrs'][0x5][_0x6b80('0x63')]:undefined)||''},{'name':_0x6b80('0x70'),'value':_0x3ba82b[_0x6b80('0x70')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x6]?_0x3ba82b[_0x6b80('0x5f')][0x6][_0x6b80('0x63')]:undefined)||''},{'name':_0x6b80('0x71'),'value':_0x3ba82b[_0x6b80('0x71')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x7]?_0x3ba82b[_0x6b80('0x5f')][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3ba82b['attrWhatsappAccounts']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x8]?_0x3ba82b[_0x6b80('0x5f')][0x8][_0x6b80('0x63')]:undefined)||''},{'name':_0x6b80('0x72'),'value':_0x3ba82b[_0x6b80('0x72')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x9]?_0x3ba82b[_0x6b80('0x5f')][0x9][_0x6b80('0x63')]:undefined)||''}];case _0x6b80('0x73'):case _0x6b80('0x74'):return[{'name':_0x6b80('0x75'),'value':_0x3ba82b['attrSerie1']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0][_0x6b80('0x63')]:undefined)||_0x6b80('0x6b')},{'name':_0x6b80('0x76'),'value':_0x3ba82b[_0x6b80('0x76')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x1]?_0x3ba82b[_0x6b80('0x5f')][0x1][_0x6b80('0x63')]:undefined)||null},{'name':_0x6b80('0x77'),'value':_0x3ba82b['attrSerie3']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x2]?_0x3ba82b[_0x6b80('0x5f')][0x2][_0x6b80('0x63')]:undefined)||null},{'name':_0x6b80('0x6c'),'value':_0x3ba82b[_0x6b80('0x6c')]||(_0x3ba82b['attrs']&&_0x3ba82b['attrs'][0x3]?_0x3ba82b[_0x6b80('0x5f')][0x3]['value']:undefined)||[]},{'name':_0x6b80('0x6d'),'value':_0x3ba82b[_0x6b80('0x6d')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b['attrs'][0x4]?_0x3ba82b['attrs'][0x4][_0x6b80('0x63')]:undefined)||_0x6b80('0x78')},{'name':_0x6b80('0x6e'),'value':_0x3ba82b[_0x6b80('0x6e')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x5]?_0x3ba82b[_0x6b80('0x5f')][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x3ba82b['attrFaxAccounts']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x6]?_0x3ba82b[_0x6b80('0x5f')][0x6]['value']:undefined)||''},{'name':_0x6b80('0x70'),'value':_0x3ba82b['attrSmsAccounts']||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x7]?_0x3ba82b[_0x6b80('0x5f')][0x7][_0x6b80('0x63')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3ba82b[_0x6b80('0x71')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x8]?_0x3ba82b['attrs'][0x8][_0x6b80('0x63')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3ba82b[_0x6b80('0x79')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x9]?_0x3ba82b[_0x6b80('0x5f')][0x9][_0x6b80('0x63')]:undefined)||''},{'name':'attrChatWebsites','value':_0x3ba82b['attrChatWebsites']||(_0x3ba82b['attrs']&&_0x3ba82b[_0x6b80('0x5f')][0xa]?_0x3ba82b[_0x6b80('0x5f')][0xa]['value']:undefined)||''}];case _0x6b80('0x7a'):return[{'name':_0x6b80('0x7b'),'type':_0x3ba82b[_0x6b80('0x7c')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0][_0x6b80('0x46')]:undefined)||null,'value':_0x3ba82b[_0x6b80('0x7b')]||(_0x3ba82b[_0x6b80('0x5f')]&&_0x3ba82b[_0x6b80('0x5f')][0x0]?_0x3ba82b[_0x6b80('0x5f')][0x0][_0x6b80('0x63')]:undefined)||null},{'name':_0x6b80('0x7d'),'value':_0x3ba82b[_0x6b80('0x7d')]||(_0x3ba82b['attrs']&&_0x3ba82b[_0x6b80('0x5f')][0x1]?_0x3ba82b[_0x6b80('0x5f')][0x1][_0x6b80('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x59794c){logger[_0x6b80('0x2f')](_0x6b80('0x7e'),JSON[_0x6b80('0x7f')](_0x59794c));return[];}}exports[_0x6b80('0x80')]=function(_0x2bfa1b,_0x10ab55,_0x36e641){if(_0x2bfa1b[_0x6b80('0x52')]['id']){delete _0x2bfa1b[_0x6b80('0x52')]['id'];}return db[_0x6b80('0x35')]['find']({'where':{'id':_0x2bfa1b['params']['id']}})[_0x6b80('0x2a')](handleEntityNotFound(_0x10ab55,null))[_0x6b80('0x2a')](function(_0x3a8092){if(_0x3a8092){_0x2bfa1b[_0x6b80('0x52')][_0x6b80('0x81')]=_0x3a8092['id'];_0x2bfa1b[_0x6b80('0x52')][_0x6b80('0x5f')]=widgetAttributes(_0x2bfa1b[_0x6b80('0x52')]);return db[_0x6b80('0x82')][_0x6b80('0x51')](_0x2bfa1b[_0x6b80('0x52')]);}})[_0x6b80('0x2a')](respondWithResult(_0x10ab55,null))[_0x6b80('0x4c')](handleError(_0x10ab55,null));};exports['getItems']=function(_0x24fad6,_0x339da1,_0x5a2f2b){var _0x3698ed={};var _0x2fef1a={};var _0x48b59e;var _0x1c67ed;return db[_0x6b80('0x35')][_0x6b80('0x83')]({'where':{'id':_0x24fad6[_0x6b80('0x4e')]['id']}})[_0x6b80('0x2a')](handleEntityNotFound(_0x339da1,null))[_0x6b80('0x2a')](function(_0x5c9a2a){if(_0x5c9a2a){_0x48b59e=_0x5c9a2a;_0x2fef1a[_0x6b80('0x38')]=_[_0x6b80('0x3a')](db['DashboardItem'][_0x6b80('0x4f')]);_0x2fef1a['query']=_['keys'](_0x24fad6['query']);_0x2fef1a['filters']=_[_0x6b80('0x3d')](_0x2fef1a[_0x6b80('0x38')],_0x2fef1a[_0x6b80('0x39')]);_0x3698ed[_0x6b80('0x3c')]=_[_0x6b80('0x3d')](_0x2fef1a[_0x6b80('0x38')],qs['fields'](_0x24fad6['query'][_0x6b80('0x3e')]));_0x3698ed[_0x6b80('0x3c')]=_0x3698ed[_0x6b80('0x3c')][_0x6b80('0x3f')]?_0x3698ed['attributes']:_0x2fef1a[_0x6b80('0x38')];_0x3698ed[_0x6b80('0x84')]=qs[_0x6b80('0x42')](_0x24fad6[_0x6b80('0x39')][_0x6b80('0x42')]);_0x3698ed[_0x6b80('0x43')]=qs[_0x6b80('0x3b')](_['pick'](_0x24fad6[_0x6b80('0x39')],_0x2fef1a[_0x6b80('0x3b')]));if(_0x24fad6[_0x6b80('0x39')][_0x6b80('0x48')]){_0x3698ed['where']=_[_0x6b80('0x45')](_0x3698ed[_0x6b80('0x43')],{'$or':_[_0x6b80('0x34')](_0x3698ed[_0x6b80('0x3c')],function(_0x498688){var _0x5bc6f9={};_0x5bc6f9[_0x498688]={'$like':'%'+_0x24fad6[_0x6b80('0x39')][_0x6b80('0x48')]+'%'};return _0x5bc6f9;})});}_0x3698ed=_['merge']({},_0x3698ed,_0x24fad6[_0x6b80('0x49')]);return _0x48b59e[_0x6b80('0x85')](_0x3698ed);}})[_0x6b80('0x2a')](function(_0xce4c00){if(_0xce4c00){_0x1c67ed=_0xce4c00[_0x6b80('0x3f')];if(!_0x24fad6['query'][_0x6b80('0x40')]('nolimit')){_0x3698ed['limit']=qs['limit'](_0x24fad6[_0x6b80('0x39')][_0x6b80('0x24')]);_0x3698ed[_0x6b80('0x21')]=qs[_0x6b80('0x21')](_0x24fad6['query']['offset']);}return _0x48b59e[_0x6b80('0x85')](_0x3698ed);}})[_0x6b80('0x2a')](function(_0x25dadb){if(_0x25dadb){return _0x25dadb?{'count':_0x1c67ed,'rows':_0x25dadb}:null;}})['then'](respondWithResult(_0x339da1,null))['catch'](handleError(_0x339da1,null));};
\ No newline at end of file
index 3426900..474118e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cff=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0x1cff,0x164));var _0xf1cf=function(_0x42d105,_0x40ef83){_0x42d105=_0x42d105-0x0;var _0x11a8a6=_0x1cff[_0x42d105];return _0x11a8a6;};'use strict';var EventEmitter=require(_0xf1cf('0x0'));var Dashboard=require(_0xf1cf('0x1'))['db'][_0xf1cf('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xf1cf('0x3')](0x0);var events={'afterCreate':_0xf1cf('0x4'),'afterUpdate':'update','afterDestroy':_0xf1cf('0x5')};function emitEvent(_0xdac911){return function(_0x1cd1ec,_0x5a89f6,_0x80365c){DashboardEvents['emit'](_0xdac911+':'+_0x1cd1ec['id'],_0x1cd1ec);DashboardEvents[_0xf1cf('0x6')](_0xdac911,_0x1cd1ec);_0x80365c(null);};}for(var e in events){if(events[_0xf1cf('0x7')](e)){var event=events[e];Dashboard[_0xf1cf('0x8')](e,emitEvent(event));}}module[_0xf1cf('0x9')]=DashboardEvents;
\ No newline at end of file
+var _0xfb98=['save','update','remove','emit','hasOwnProperty','hook','../../mysqldb','Dashboard','setMaxListeners'];(function(_0x592c9f,_0x2bcaa1){var _0x14ae38=function(_0x2d4a0c){while(--_0x2d4a0c){_0x592c9f['push'](_0x592c9f['shift']());}};_0x14ae38(++_0x2bcaa1);}(_0xfb98,0xd5));var _0x8fb9=function(_0xaa89cc,_0x509ac5){_0xaa89cc=_0xaa89cc-0x0;var _0x90dbf7=_0xfb98[_0xaa89cc];return _0x90dbf7;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x8fb9('0x0'))['db'][_0x8fb9('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x8fb9('0x2')](0x0);var events={'afterCreate':_0x8fb9('0x3'),'afterUpdate':_0x8fb9('0x4'),'afterDestroy':_0x8fb9('0x5')};function emitEvent(_0x37e014){return function(_0xc902b9,_0x2c7240,_0x101721){DashboardEvents[_0x8fb9('0x6')](_0x37e014+':'+_0xc902b9['id'],_0xc902b9);DashboardEvents[_0x8fb9('0x6')](_0x37e014,_0xc902b9);_0x101721(null);};}for(var e in events){if(events[_0x8fb9('0x7')](e)){var event=events[e];Dashboard[_0x8fb9('0x8')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index 1430167..a99e7a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x005f=['Dashboard','dashboards','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','define'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x005f,0x161));var _0xf005=function(_0x3e29df,_0x42fdf8){_0x3e29df=_0x3e29df-0x0;var _0x3e3ba9=_0x005f[_0x3e29df];return _0x3e3ba9;};'use strict';var _=require(_0xf005('0x0'));var util=require(_0xf005('0x1'));var logger=require(_0xf005('0x2'))('api');var moment=require(_0xf005('0x3'));var BPromise=require('bluebird');var rp=require(_0xf005('0x4'));var fs=require('fs');var path=require(_0xf005('0x5'));var rimraf=require(_0xf005('0x6'));var config=require(_0xf005('0x7'));var attributes=require(_0xf005('0x8'));module[_0xf005('0x9')]=function(_0x4fe496,_0x575e02){return _0x4fe496[_0xf005('0xa')](_0xf005('0xb'),attributes,{'tableName':_0xf005('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x27a3=['../../config/environment','./dashboard.attributes','exports','Dashboard','dashboards','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x30f5f6,_0x34af60){var _0x174490=function(_0x32acc2){while(--_0x32acc2){_0x30f5f6['push'](_0x30f5f6['shift']());}};_0x174490(++_0x34af60);}(_0x27a3,0xb9));var _0x327a=function(_0x213d15,_0x158634){_0x213d15=_0x213d15-0x0;var _0x3ad5cb=_0x27a3[_0x213d15];return _0x3ad5cb;};'use strict';var _=require('lodash');var util=require(_0x327a('0x0'));var logger=require('../../config/logger')(_0x327a('0x1'));var moment=require(_0x327a('0x2'));var BPromise=require(_0x327a('0x3'));var rp=require(_0x327a('0x4'));var fs=require('fs');var path=require(_0x327a('0x5'));var rimraf=require(_0x327a('0x6'));var config=require(_0x327a('0x7'));var attributes=require(_0x327a('0x8'));module[_0x327a('0x9')]=function(_0x4a764d,_0x1e501e){return _0x4a764d['define'](_0x327a('0xa'),attributes,{'tableName':_0x327a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f48c98f..be8abe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ba4=['redis','defaults','localhost','socket.io-emitter','./dashboard.socket','request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x254757,_0x5118f5){var _0x371258=function(_0x54f14f){while(--_0x54f14f){_0x254757['push'](_0x254757['shift']());}};_0x371258(++_0x5118f5);}(_0x6ba4,0x11e));var _0x46ba=function(_0x173058,_0x593e23){_0x173058=_0x173058-0x0;var _0x157b26=_0x6ba4[_0x173058];return _0x157b26;};'use strict';var _=require('lodash');var util=require(_0x46ba('0x0'));var moment=require(_0x46ba('0x1'));var BPromise=require('bluebird');var rs=require(_0x46ba('0x2'));var fs=require('fs');var Redis=require(_0x46ba('0x3'));var db=require(_0x46ba('0x4'))['db'];var utils=require(_0x46ba('0x5'));var logger=require(_0x46ba('0x6'))(_0x46ba('0x7'));var config=require(_0x46ba('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x46ba('0x9')][_0x46ba('0xa')]({'port':0x232a});config[_0x46ba('0xb')]=_[_0x46ba('0xc')](config[_0x46ba('0xb')],{'host':_0x46ba('0xd'),'port':0x18eb});var socket=require(_0x46ba('0xe'))(new Redis(config[_0x46ba('0xb')]));require(_0x46ba('0xf'))['register'](socket);function respondWithRpcPromise(_0x3131d5,_0x5aeb58,_0x5587f1){return new BPromise(function(_0x13052b,_0x572326){return client[_0x46ba('0x10')](_0x3131d5,_0x5587f1)['then'](function(_0x4acaa1){logger[_0x46ba('0x11')](_0x46ba('0x12'),_0x5aeb58,_0x46ba('0x13'));logger[_0x46ba('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x5aeb58,_0x46ba('0x13'),JSON[_0x46ba('0x15')](_0x4acaa1));if(_0x4acaa1[_0x46ba('0x16')]){if(_0x4acaa1[_0x46ba('0x16')][_0x46ba('0x17')]===0x1f4){logger[_0x46ba('0x16')]('Dashboard,\x20%s,\x20%s',_0x5aeb58,_0x4acaa1[_0x46ba('0x16')][_0x46ba('0x18')]);return _0x572326(_0x4acaa1[_0x46ba('0x16')]['message']);}logger[_0x46ba('0x16')](_0x46ba('0x12'),_0x5aeb58,_0x4acaa1['error'][_0x46ba('0x18')]);return _0x13052b(_0x4acaa1['error'][_0x46ba('0x18')]);}else{logger[_0x46ba('0x11')](_0x46ba('0x12'),_0x5aeb58,_0x46ba('0x13'));_0x13052b(_0x4acaa1[_0x46ba('0x19')][_0x46ba('0x18')]);}})[_0x46ba('0x1a')](function(_0x321a94){logger[_0x46ba('0x16')]('Dashboard,\x20%s,\x20%s',_0x5aeb58,_0x321a94);_0x572326(_0x321a94);});});}
\ No newline at end of file
+var _0xc28e=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','request','then','info','Dashboard,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash'];(function(_0x5ecef8,_0x227d5c){var _0x30bce1=function(_0x3ec0fb){while(--_0x3ec0fb){_0x5ecef8['push'](_0x5ecef8['shift']());}};_0x30bce1(++_0x227d5c);}(_0xc28e,0xa1));var _0xec28=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xc28e[_0x18ab2a];return _0x16dcee;};'use strict';var _=require(_0xec28('0x0'));var util=require(_0xec28('0x1'));var moment=require('moment');var BPromise=require(_0xec28('0x2'));var rs=require(_0xec28('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xec28('0x4'))['db'];var utils=require(_0xec28('0x5'));var logger=require(_0xec28('0x6'))(_0xec28('0x7'));var config=require(_0xec28('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xec28('0x9')][_0xec28('0xa')]({'port':0x232a});config[_0xec28('0xb')]=_[_0xec28('0xc')](config[_0xec28('0xb')],{'host':_0xec28('0xd'),'port':0x18eb});var socket=require(_0xec28('0xe'))(new Redis(config[_0xec28('0xb')]));require(_0xec28('0xf'))['register'](socket);function respondWithRpcPromise(_0x2382d0,_0x584b64,_0x2102f9){return new BPromise(function(_0x52cdef,_0x41d988){return client[_0xec28('0x10')](_0x2382d0,_0x2102f9)[_0xec28('0x11')](function(_0x52103a){logger[_0xec28('0x12')](_0xec28('0x13'),_0x584b64,'request\x20sent');logger[_0xec28('0x14')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x584b64,_0xec28('0x15'),JSON[_0xec28('0x16')](_0x52103a));if(_0x52103a['error']){if(_0x52103a[_0xec28('0x17')][_0xec28('0x18')]===0x1f4){logger[_0xec28('0x17')]('Dashboard,\x20%s,\x20%s',_0x584b64,_0x52103a['error'][_0xec28('0x19')]);return _0x41d988(_0x52103a[_0xec28('0x17')][_0xec28('0x19')]);}logger[_0xec28('0x17')](_0xec28('0x13'),_0x584b64,_0x52103a[_0xec28('0x17')][_0xec28('0x19')]);return _0x52cdef(_0x52103a[_0xec28('0x17')][_0xec28('0x19')]);}else{logger[_0xec28('0x12')]('Dashboard,\x20%s,\x20%s',_0x584b64,_0xec28('0x15'));_0x52cdef(_0x52103a['result'][_0xec28('0x19')]);}})[_0xec28('0x1a')](function(_0x22c70d){logger[_0xec28('0x17')](_0xec28('0x13'),_0x584b64,_0x22c70d);_0x41d988(_0x22c70d);});});}
\ No newline at end of file
index fa0b166..09fbbd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa579=['length','./dashboard.events','save','remove','update','emit','removeListener'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xa579,0x189));var _0x9a57=function(_0x593151,_0x213e14){_0x593151=_0x593151-0x0;var _0x51f241=_0xa579[_0x593151];return _0x51f241;};'use strict';var DashboardEvents=require(_0x9a57('0x0'));var events=[_0x9a57('0x1'),_0x9a57('0x2'),_0x9a57('0x3')];function createListener(_0x227ea7,_0x166f4f){return function(_0x596701){_0x166f4f[_0x9a57('0x4')](_0x227ea7,_0x596701);};}function removeListener(_0x44475b,_0x31ca67){return function(){DashboardEvents[_0x9a57('0x5')](_0x44475b,_0x31ca67);};}exports['register']=function(_0x2efc21){for(var _0x4e5e8e=0x0,_0x29754c=events[_0x9a57('0x6')];_0x4e5e8e<_0x29754c;_0x4e5e8e++){var _0x2dcb82=events[_0x4e5e8e];var _0x1bffd9=createListener('dashboard:'+_0x2dcb82,_0x2efc21);DashboardEvents['on'](_0x2dcb82,_0x1bffd9);}};
\ No newline at end of file
+var _0x3f92=['register','length','dashboard:','save','remove','emit','removeListener'];(function(_0x2b1d6c,_0x314a67){var _0x2ef719=function(_0x369798){while(--_0x369798){_0x2b1d6c['push'](_0x2b1d6c['shift']());}};_0x2ef719(++_0x314a67);}(_0x3f92,0x18b));var _0x23f9=function(_0x2968f8,_0x1958db){_0x2968f8=_0x2968f8-0x0;var _0x41e1ee=_0x3f92[_0x2968f8];return _0x41e1ee;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x23f9('0x0'),_0x23f9('0x1'),'update'];function createListener(_0xfcc17f,_0x6f23fc){return function(_0x81a879){_0x6f23fc[_0x23f9('0x2')](_0xfcc17f,_0x81a879);};}function removeListener(_0x4b76d0,_0x312f9f){return function(){DashboardEvents[_0x23f9('0x3')](_0x4b76d0,_0x312f9f);};}exports[_0x23f9('0x4')]=function(_0x372c1b){for(var _0xff1181=0x0,_0x48d516=events[_0x23f9('0x5')];_0xff1181<_0x48d516;_0xff1181++){var _0xbbc5a5=events[_0xff1181];var _0x548921=createListener(_0x23f9('0x6')+_0xbbc5a5,_0x372c1b);DashboardEvents['on'](_0xbbc5a5,_0x548921);}};
\ No newline at end of file
index c0bf38b..f2da2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb179=['/:id/clone','clone','post','addItem','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','/:id/items','getItems','create'];(function(_0x89a121,_0x761469){var _0x288471=function(_0x1a892b){while(--_0x1a892b){_0x89a121['push'](_0x89a121['shift']());}};_0x288471(++_0x761469);}(_0xb179,0xbf));var _0x9b17=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb179[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x9b17('0x0'));var util=require(_0x9b17('0x1'));var path=require(_0x9b17('0x2'));var timeout=require(_0x9b17('0x3'));var express=require(_0x9b17('0x4'));var router=express[_0x9b17('0x5')]();var fs_extra=require(_0x9b17('0x6'));var auth=require(_0x9b17('0x7'));var interaction=require(_0x9b17('0x8'));var config=require(_0x9b17('0x9'));var controller=require('./dashboard.controller');router['get']('/',auth[_0x9b17('0xa')](),controller[_0x9b17('0xb')]);router['get'](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller['show']);router['get'](_0x9b17('0xd'),auth['isAuthenticated'](),controller[_0x9b17('0xe')]);router['post']('/',auth[_0x9b17('0xa')](),controller[_0x9b17('0xf')]);router['post'](_0x9b17('0x10'),auth['isAuthenticated'](),controller[_0x9b17('0x11')]);router[_0x9b17('0x12')](_0x9b17('0xd'),auth[_0x9b17('0xa')](),controller[_0x9b17('0x13')]);router[_0x9b17('0x14')](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller[_0x9b17('0x15')]);router['delete'](_0x9b17('0xc'),auth[_0x9b17('0xa')](),controller['destroy']);module[_0x9b17('0x16')]=router;
\ No newline at end of file
+var _0x98f7=['multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','index','/:id','/:id/items','isAuthenticated','post','/:id/clone','put','update','delete','destroy','exports'];(function(_0x1e5e16,_0x525bfe){var _0x5df689=function(_0x203211){while(--_0x203211){_0x1e5e16['push'](_0x1e5e16['shift']());}};_0x5df689(++_0x525bfe);}(_0x98f7,0x1a2));var _0x798f=function(_0x54e2e9,_0x342ce5){_0x54e2e9=_0x54e2e9-0x0;var _0x1fb2e8=_0x98f7[_0x54e2e9];return _0x1fb2e8;};'use strict';var multer=require(_0x798f('0x0'));var util=require('util');var path=require(_0x798f('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x798f('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x798f('0x3'));var interaction=require(_0x798f('0x4'));var config=require(_0x798f('0x5'));var controller=require(_0x798f('0x6'));router[_0x798f('0x7')]('/',auth['isAuthenticated'](),controller[_0x798f('0x8')]);router[_0x798f('0x7')](_0x798f('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x798f('0x7')](_0x798f('0xa'),auth[_0x798f('0xb')](),controller['getItems']);router[_0x798f('0xc')]('/',auth[_0x798f('0xb')](),controller['create']);router[_0x798f('0xc')](_0x798f('0xd'),auth[_0x798f('0xb')](),controller['clone']);router['post'](_0x798f('0xa'),auth[_0x798f('0xb')](),controller['addItem']);router[_0x798f('0xe')](_0x798f('0x9'),auth['isAuthenticated'](),controller[_0x798f('0xf')]);router[_0x798f('0x10')](_0x798f('0x9'),auth['isAuthenticated'](),controller[_0x798f('0x11')]);module[_0x798f('0x12')]=router;
\ No newline at end of file
index 7cbf228..ef464dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['stringify','INTEGER','#ffffff','sequelize','lodash','exports','STRING','TEXT','long','getDataValue','attrs','setDataValue'];(function(_0x4e40e4,_0xe34b01){var _0x33870c=function(_0x2aed03){while(--_0x2aed03){_0x4e40e4['push'](_0x4e40e4['shift']());}};_0x33870c(++_0xe34b01);}(_0x187d,0x93));var _0xd187=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x187d[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require(_0xd187('0x0'));var squel=require('squel');var _=require(_0xd187('0x1'));module[_0xd187('0x2')]={'title':{'type':Sequelize[_0xd187('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xd187('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xd187('0x4')](_0xd187('0x5')),'get':function(){try{return JSON['parse'](this[_0xd187('0x6')](_0xd187('0x7')));}catch(_0x4ebc8d){return[];}},'set':function(_0x1d2533){try{this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')](_0x1d2533));}catch(_0x28ce2f){this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xd187('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xd187('0xa')]},'col':{'type':Sequelize[_0xd187('0xa')]},'background':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':_0xd187('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xd187('0x3')]},'titleFontSize':{'type':Sequelize[_0xd187('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xafc4=['TEXT','long','setDataValue','attrs','stringify','INTEGER','sequelize','lodash','STRING'];(function(_0x416cca,_0x55d94a){var _0x312bcc=function(_0x1f100a){while(--_0x1f100a){_0x416cca['push'](_0x416cca['shift']());}};_0x312bcc(++_0x55d94a);}(_0xafc4,0x69));var _0x4afc=function(_0x330d8e,_0x2dd774){_0x330d8e=_0x330d8e-0x0;var _0x503e0d=_0xafc4[_0x330d8e];return _0x503e0d;};'use strict';var Sequelize=require(_0x4afc('0x0'));var squel=require('squel');var _=require(_0x4afc('0x1'));module['exports']={'title':{'type':Sequelize[_0x4afc('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4afc('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x4afc('0x3')](_0x4afc('0x4')),'get':function(){try{return JSON['parse'](this['getDataValue']('attrs'));}catch(_0x36cb50){return[];}},'set':function(_0x471d45){try{this[_0x4afc('0x5')](_0x4afc('0x6'),JSON[_0x4afc('0x7')](_0x471d45));}catch(_0xaf053d){this['setDataValue'](_0x4afc('0x6'),JSON[_0x4afc('0x7')]([]));}}},'sizeX':{'type':Sequelize[_0x4afc('0x8')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x4afc('0x8')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4afc('0x8')]},'col':{'type':Sequelize[_0x4afc('0x8')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4afc('0x2')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x4afc('0x2')]},'titleFontSize':{'type':Sequelize[_0x4afc('0x8')],'defaultValue':0xc}};
\ No newline at end of file
index 18c0be8..c43c282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677a=['HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboardItem.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','then','destroy','error','name','send','params','model','keys','DashboardItem','rawAttributes','query','intersection','attributes','fields','includeAll','include','merge','find','catch','type','iframe','attrs','value','custom','attrPath','clock','attrHourFormat'];(function(_0x3b32c8,_0x926221){var _0x26faca=function(_0x3e9307){while(--_0x3e9307){_0x3b32c8['push'](_0x3b32c8['shift']());}};_0x26faca(++_0x926221);}(_0x677a,0xd6));var _0xa677=function(_0x179e13,_0x57c5ee){_0x179e13=_0x179e13-0x0;var _0x15de53=_0x677a[_0x179e13];return _0x15de53;};'use strict';var emlformat=require(_0xa677('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa677('0x1'));var jsonpatch=require(_0xa677('0x2'));var rp=require(_0xa677('0x3'));var moment=require(_0xa677('0x4'));var BPromise=require(_0xa677('0x5'));var Mustache=require('mustache');var util=require(_0xa677('0x6'));var path=require(_0xa677('0x7'));var sox=require(_0xa677('0x8'));var csv=require(_0xa677('0x9'));var ejs=require(_0xa677('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa677('0xb'));var squel=require(_0xa677('0xc'));var crypto=require(_0xa677('0xd'));var jsforce=require(_0xa677('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa677('0xf'));var Redis=require('ioredis');var authService=require(_0xa677('0x10'));var qs=require(_0xa677('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa677('0x12'));var logger=require(_0xa677('0x13'))(_0xa677('0x14'));var utils=require(_0xa677('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa677('0x16'));var db=require(_0xa677('0x17'))['db'];config[_0xa677('0x18')]=_[_0xa677('0x19')](config['redis'],{'host':_0xa677('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa677('0x18')]));require(_0xa677('0x1b'))[_0xa677('0x1c')](socket);function respondWithStatusCode(_0x4c68b4,_0xca5d15){_0xca5d15=_0xca5d15||0xcc;return function(_0x36634f){if(_0x36634f){return _0x4c68b4[_0xa677('0x1d')](_0xca5d15);}return _0x4c68b4[_0xa677('0x1e')](_0xca5d15)[_0xa677('0x1f')]();};}function respondWithResult(_0x230363,_0x25c63b){_0x25c63b=_0x25c63b||0xc8;return function(_0x1dfee0){if(_0x1dfee0){return _0x230363[_0xa677('0x1e')](_0x25c63b)[_0xa677('0x20')](_0x1dfee0);}};}function respondWithFilteredResult(_0x5957cb,_0xd9a41b){return function(_0x5db4d2){if(_0x5db4d2){var _0x495c70=typeof _0xd9a41b['offset']===_0xa677('0x21')&&typeof _0xd9a41b[_0xa677('0x22')]===_0xa677('0x21');var _0x30fbfd=_0x5db4d2['count'];var _0x2eab12=_0x495c70?0x0:_0xd9a41b[_0xa677('0x23')];var _0xad957e=_0x495c70?_0x5db4d2[_0xa677('0x24')]:_0xd9a41b[_0xa677('0x23')]+_0xd9a41b[_0xa677('0x22')];var _0x5cbea0;if(_0xad957e>=_0x30fbfd){_0xad957e=_0x30fbfd;_0x5cbea0=0xc8;}else{_0x5cbea0=0xce;}_0x5957cb[_0xa677('0x1e')](_0x5cbea0);return _0x5957cb['set'](_0xa677('0x25'),_0x2eab12+'-'+_0xad957e+'/'+_0x30fbfd)[_0xa677('0x20')](_0x5db4d2);}return null;};}function patchUpdates(_0x45eb0f){return function(_0x5f5735){try{jsonpatch[_0xa677('0x26')](_0x5f5735,_0x45eb0f,!![]);}catch(_0x31acd3){return BPromise[_0xa677('0x27')](_0x31acd3);}return _0x5f5735[_0xa677('0x28')]();};}function saveUpdates(_0x4e8e9e,_0x1aa82b){return function(_0x17f483){if(_0x17f483){return _0x17f483['update'](_0x4e8e9e)[_0xa677('0x29')](function(_0xe54876){return _0xe54876;});}return null;};}function removeEntity(_0x40cb21,_0x3bb824){return function(_0x2a553d){if(_0x2a553d){return _0x2a553d[_0xa677('0x2a')]()['then'](function(){_0x40cb21[_0xa677('0x1e')](0xcc)[_0xa677('0x1f')]();});}};}function handleEntityNotFound(_0x1a7e27,_0x6189c){return function(_0x428987){if(!_0x428987){_0x1a7e27[_0xa677('0x1d')](0x194);}return _0x428987;};}function handleError(_0x5da542,_0x15754b){_0x15754b=_0x15754b||0x1f4;return function(_0x124d7f){logger[_0xa677('0x2b')](_0x124d7f['stack']);if(_0x124d7f[_0xa677('0x2c')]){delete _0x124d7f[_0xa677('0x2c')];}_0x5da542[_0xa677('0x1e')](_0x15754b)[_0xa677('0x2d')](_0x124d7f);};}exports['show']=function(_0x454bf0,_0x1f7811){var _0x4117e1={'raw':![],'where':{'id':_0x454bf0[_0xa677('0x2e')]['id']}},_0x5ed0a1={};_0x5ed0a1[_0xa677('0x2f')]=_[_0xa677('0x30')](db[_0xa677('0x31')][_0xa677('0x32')]);_0x5ed0a1[_0xa677('0x33')]=_[_0xa677('0x30')](_0x454bf0[_0xa677('0x33')]);_0x5ed0a1['filters']=_[_0xa677('0x34')](_0x5ed0a1['model'],_0x5ed0a1[_0xa677('0x33')]);_0x4117e1[_0xa677('0x35')]=_[_0xa677('0x34')](_0x5ed0a1[_0xa677('0x2f')],qs[_0xa677('0x36')](_0x454bf0[_0xa677('0x33')][_0xa677('0x36')]));_0x4117e1[_0xa677('0x35')]=_0x4117e1[_0xa677('0x35')]['length']?_0x4117e1[_0xa677('0x35')]:_0x5ed0a1['model'];if(_0x454bf0[_0xa677('0x33')][_0xa677('0x37')]){_0x4117e1[_0xa677('0x38')]=[{'all':!![]}];}_0x4117e1=_[_0xa677('0x39')]({},_0x4117e1,_0x454bf0['options']);return db[_0xa677('0x31')][_0xa677('0x3a')](_0x4117e1)[_0xa677('0x29')](handleEntityNotFound(_0x1f7811,null))['then'](respondWithResult(_0x1f7811,null))['catch'](handleError(_0x1f7811,null));};exports[_0xa677('0x2a')]=function(_0x9a0837,_0x3775d0){return db['DashboardItem']['find']({'where':{'id':_0x9a0837[_0xa677('0x2e')]['id']}})[_0xa677('0x29')](handleEntityNotFound(_0x3775d0,null))[_0xa677('0x29')](removeEntity(_0x3775d0,null))[_0xa677('0x3b')](handleError(_0x3775d0,null));};function widgetAttributes(_0x52a56e){try{switch(_0x52a56e[_0xa677('0x3c')]){case _0xa677('0x3d'):return[{'name':'attrUrl','value':_0x52a56e['attrUrl']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e['attrs'][0x0][_0xa677('0x3f')]:undefined)||'https://'}];case _0xa677('0x40'):return[{'name':_0xa677('0x41'),'value':_0x52a56e['attrPath']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||''}];case _0xa677('0x42'):return[{'name':_0xa677('0x43'),'value':_0x52a56e[_0xa677('0x43')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e['attrs'][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x44')},{'name':_0xa677('0x45'),'value':_0x52a56e[_0xa677('0x45')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0x1]?_0x52a56e['attrs'][0x1][_0xa677('0x3f')]:undefined)||_0xa677('0x46')},{'name':'attrFontSize','value':_0x52a56e[_0xa677('0x47')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e['attrs'][0x2][_0xa677('0x3f')]:undefined)||0xc}];case _0xa677('0x48'):return[{'name':_0xa677('0x49'),'value':_0x52a56e[_0xa677('0x49')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x4a')},{'name':_0xa677('0x4b'),'value':_0x52a56e[_0xa677('0x4b')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e['attrs'][0x1]['value']:undefined)||[]},{'name':_0xa677('0x47'),'value':_0x52a56e[_0xa677('0x47')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e[_0xa677('0x3e')][0x2][_0xa677('0x3f')]:undefined)||0x14},{'name':_0xa677('0x4c'),'value':_0x52a56e['attrChannel']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x3]?_0x52a56e[_0xa677('0x3e')][0x3][_0xa677('0x3f')]:undefined)||_0xa677('0x4d')},{'name':_0xa677('0x4e'),'value':_0x52a56e[_0xa677('0x4e')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x4]?_0x52a56e[_0xa677('0x3e')][0x4][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x4f'),'value':_0x52a56e['attrFaxAccounts']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x5]?_0x52a56e[_0xa677('0x3e')][0x5][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x50'),'value':_0x52a56e[_0xa677('0x50')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x6]?_0x52a56e[_0xa677('0x3e')][0x6]['value']:undefined)||''},{'name':_0xa677('0x51'),'value':_0x52a56e[_0xa677('0x51')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0x7]?_0x52a56e[_0xa677('0x3e')][0x7][_0xa677('0x3f')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x52a56e[_0xa677('0x52')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x8]?_0x52a56e[_0xa677('0x3e')][0x8][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x53'),'value':_0x52a56e[_0xa677('0x53')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x9]?_0x52a56e[_0xa677('0x3e')][0x9][_0xa677('0x3f')]:undefined)||''}];case'multibar-chart':case _0xa677('0x54'):return[{'name':_0xa677('0x55'),'value':_0x52a56e[_0xa677('0x55')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||_0xa677('0x4a')},{'name':_0xa677('0x56'),'value':_0x52a56e[_0xa677('0x56')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e[_0xa677('0x3e')][0x1][_0xa677('0x3f')]:undefined)||null},{'name':'attrSerie3','value':_0x52a56e[_0xa677('0x57')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x2]?_0x52a56e[_0xa677('0x3e')][0x2]['value']:undefined)||null},{'name':_0xa677('0x4b'),'value':_0x52a56e['attrVoiceQueues']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x3]?_0x52a56e['attrs'][0x3][_0xa677('0x3f')]:undefined)||[]},{'name':_0xa677('0x4c'),'value':_0x52a56e['attrChannel']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x4]?_0x52a56e[_0xa677('0x3e')][0x4]['value']:undefined)||'voice'},{'name':_0xa677('0x4e'),'value':_0x52a56e[_0xa677('0x4e')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x5]?_0x52a56e[_0xa677('0x3e')][0x5][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x4f'),'value':_0x52a56e[_0xa677('0x4f')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x6]?_0x52a56e['attrs'][0x6][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x50'),'value':_0x52a56e[_0xa677('0x50')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x7]?_0x52a56e[_0xa677('0x3e')][0x7][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x51'),'value':_0x52a56e['attrOpenchannelAccounts']||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x8]?_0x52a56e['attrs'][0x8][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x52'),'value':_0x52a56e[_0xa677('0x52')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x9]?_0x52a56e[_0xa677('0x3e')][0x9][_0xa677('0x3f')]:undefined)||''},{'name':_0xa677('0x53'),'value':_0x52a56e[_0xa677('0x53')]||(_0x52a56e['attrs']&&_0x52a56e['attrs'][0xa]?_0x52a56e[_0xa677('0x3e')][0xa][_0xa677('0x3f')]:undefined)||''}];case'web-report':return[{'name':'attrReport','type':_0x52a56e['reportType']||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e['attrs'][0x0]?_0x52a56e[_0xa677('0x3e')][0x0]['type']:undefined)||null,'value':_0x52a56e[_0xa677('0x58')]||(_0x52a56e['attrs']&&_0x52a56e[_0xa677('0x3e')][0x0]?_0x52a56e[_0xa677('0x3e')][0x0][_0xa677('0x3f')]:undefined)||null},{'name':_0xa677('0x59'),'value':_0x52a56e[_0xa677('0x59')]||(_0x52a56e[_0xa677('0x3e')]&&_0x52a56e[_0xa677('0x3e')][0x1]?_0x52a56e[_0xa677('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x52ea5b){logger[_0xa677('0x2b')](_0xa677('0x5a'),JSON[_0xa677('0x5b')](_0x52ea5b));return[];}}exports['create']=function(_0x2af9eb,_0xd97ef7){if(_0x2af9eb[_0xa677('0x5c')]){_0x2af9eb[_0xa677('0x5c')][_0xa677('0x3e')]=widgetAttributes(_0x2af9eb[_0xa677('0x5c')]);}return db[_0xa677('0x31')][_0xa677('0x5d')](_0x2af9eb[_0xa677('0x5c')],{})['then'](respondWithResult(_0xd97ef7,0xc9))[_0xa677('0x3b')](handleError(_0xd97ef7,null));};exports['update']=function(_0x41868d,_0x44ef2d){if(_0x41868d[_0xa677('0x5c')]['id']){delete _0x41868d[_0xa677('0x5c')]['id'];}_0x41868d[_0xa677('0x5c')][_0xa677('0x3e')]=widgetAttributes(_0x41868d[_0xa677('0x5c')]);return db[_0xa677('0x31')]['find']({'where':{'id':_0x41868d[_0xa677('0x2e')]['id']}})[_0xa677('0x29')](handleEntityNotFound(_0x44ef2d,null))['then'](saveUpdates(_0x41868d[_0xa677('0x5c')],null))['then'](respondWithResult(_0x44ef2d,null))[_0xa677('0x3b')](handleError(_0x44ef2d,null));};
\ No newline at end of file
+var _0x75a2=['attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','end','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','show','model','keys','rawAttributes','query','intersection','attributes','fields','includeAll','include','merge','DashboardItem','find','catch','params','type','attrUrl','attrs','https://','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts'];(function(_0x5d7141,_0x59c862){var _0x101738=function(_0x148419){while(--_0x148419){_0x5d7141['push'](_0x5d7141['shift']());}};_0x101738(++_0x59c862);}(_0x75a2,0x187));var _0x275a=function(_0x51b1f1,_0x2db689){_0x51b1f1=_0x51b1f1-0x0;var _0x13d23c=_0x75a2[_0x51b1f1];return _0x13d23c;};'use strict';var emlformat=require(_0x275a('0x0'));var rimraf=require(_0x275a('0x1'));var zipdir=require(_0x275a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x275a('0x3'));var moment=require(_0x275a('0x4'));var BPromise=require(_0x275a('0x5'));var Mustache=require(_0x275a('0x6'));var util=require('util');var path=require(_0x275a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x275a('0x8'));var squel=require(_0x275a('0x9'));var crypto=require(_0x275a('0xa'));var jsforce=require(_0x275a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x275a('0xc'));var Papa=require(_0x275a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x275a('0xe'));var hardwareService=require(_0x275a('0xf'));var logger=require(_0x275a('0x10'))(_0x275a('0x11'));var utils=require(_0x275a('0x12'));var config=require(_0x275a('0x13'));var licenseUtil=require(_0x275a('0x14'));var db=require(_0x275a('0x15'))['db'];config[_0x275a('0x16')]=_[_0x275a('0x17')](config[_0x275a('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x275a('0x18'))(new Redis(config[_0x275a('0x16')]));require('./dashboardItem.socket')['register'](socket);function respondWithStatusCode(_0x2baa83,_0x2525f0){_0x2525f0=_0x2525f0||0xcc;return function(_0x9cfdf7){if(_0x9cfdf7){return _0x2baa83[_0x275a('0x19')](_0x2525f0);}return _0x2baa83[_0x275a('0x1a')](_0x2525f0)[_0x275a('0x1b')]();};}function respondWithResult(_0x283865,_0x2a49c6){_0x2a49c6=_0x2a49c6||0xc8;return function(_0x222bac){if(_0x222bac){return _0x283865['status'](_0x2a49c6)['json'](_0x222bac);}};}function respondWithFilteredResult(_0x21cf70,_0x4221ef){return function(_0x50374a){if(_0x50374a){var _0x127da5=typeof _0x4221ef['offset']===_0x275a('0x1c')&&typeof _0x4221ef[_0x275a('0x1d')]==='undefined';var _0xe59012=_0x50374a[_0x275a('0x1e')];var _0x4a0ddb=_0x127da5?0x0:_0x4221ef['offset'];var _0x260e41=_0x127da5?_0x50374a[_0x275a('0x1e')]:_0x4221ef['offset']+_0x4221ef['limit'];var _0x4afb5e;if(_0x260e41>=_0xe59012){_0x260e41=_0xe59012;_0x4afb5e=0xc8;}else{_0x4afb5e=0xce;}_0x21cf70[_0x275a('0x1a')](_0x4afb5e);return _0x21cf70[_0x275a('0x1f')](_0x275a('0x20'),_0x4a0ddb+'-'+_0x260e41+'/'+_0xe59012)[_0x275a('0x21')](_0x50374a);}return null;};}function patchUpdates(_0xbb91e7){return function(_0x5e924f){try{jsonpatch[_0x275a('0x22')](_0x5e924f,_0xbb91e7,!![]);}catch(_0x19ef1f){return BPromise[_0x275a('0x23')](_0x19ef1f);}return _0x5e924f[_0x275a('0x24')]();};}function saveUpdates(_0x32eb4b,_0x579aca){return function(_0x19424f){if(_0x19424f){return _0x19424f[_0x275a('0x25')](_0x32eb4b)[_0x275a('0x26')](function(_0x1441c3){return _0x1441c3;});}return null;};}function removeEntity(_0x263fde,_0x2bfe4d){return function(_0x417397){if(_0x417397){return _0x417397[_0x275a('0x27')]()[_0x275a('0x26')](function(){_0x263fde[_0x275a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b7fea,_0x1e424f){return function(_0x57c10b){if(!_0x57c10b){_0x3b7fea[_0x275a('0x19')](0x194);}return _0x57c10b;};}function handleError(_0x337c13,_0x3d4a2){_0x3d4a2=_0x3d4a2||0x1f4;return function(_0xa5048b){logger['error'](_0xa5048b[_0x275a('0x28')]);if(_0xa5048b[_0x275a('0x29')]){delete _0xa5048b[_0x275a('0x29')];}_0x337c13[_0x275a('0x1a')](_0x3d4a2)[_0x275a('0x2a')](_0xa5048b);};}exports[_0x275a('0x2b')]=function(_0x3d0fa0,_0x26e347){var _0xe22b72={'raw':![],'where':{'id':_0x3d0fa0['params']['id']}},_0x2b4683={};_0x2b4683[_0x275a('0x2c')]=_[_0x275a('0x2d')](db['DashboardItem'][_0x275a('0x2e')]);_0x2b4683[_0x275a('0x2f')]=_[_0x275a('0x2d')](_0x3d0fa0[_0x275a('0x2f')]);_0x2b4683['filters']=_[_0x275a('0x30')](_0x2b4683[_0x275a('0x2c')],_0x2b4683[_0x275a('0x2f')]);_0xe22b72[_0x275a('0x31')]=_[_0x275a('0x30')](_0x2b4683['model'],qs[_0x275a('0x32')](_0x3d0fa0[_0x275a('0x2f')][_0x275a('0x32')]));_0xe22b72['attributes']=_0xe22b72[_0x275a('0x31')]['length']?_0xe22b72[_0x275a('0x31')]:_0x2b4683['model'];if(_0x3d0fa0['query'][_0x275a('0x33')]){_0xe22b72[_0x275a('0x34')]=[{'all':!![]}];}_0xe22b72=_[_0x275a('0x35')]({},_0xe22b72,_0x3d0fa0['options']);return db[_0x275a('0x36')][_0x275a('0x37')](_0xe22b72)[_0x275a('0x26')](handleEntityNotFound(_0x26e347,null))[_0x275a('0x26')](respondWithResult(_0x26e347,null))[_0x275a('0x38')](handleError(_0x26e347,null));};exports[_0x275a('0x27')]=function(_0x232e32,_0x18a03f){return db['DashboardItem'][_0x275a('0x37')]({'where':{'id':_0x232e32[_0x275a('0x39')]['id']}})[_0x275a('0x26')](handleEntityNotFound(_0x18a03f,null))['then'](removeEntity(_0x18a03f,null))[_0x275a('0x38')](handleError(_0x18a03f,null));};function widgetAttributes(_0x136d4f){try{switch(_0x136d4f[_0x275a('0x3a')]){case'iframe':return[{'name':_0x275a('0x3b'),'value':_0x136d4f[_0x275a('0x3b')]||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f[_0x275a('0x3c')][0x0]['value']:undefined)||_0x275a('0x3d')}];case'custom':return[{'name':_0x275a('0x3e'),'value':_0x136d4f[_0x275a('0x3e')]||(_0x136d4f['attrs']&&_0x136d4f['attrs'][0x0]?_0x136d4f[_0x275a('0x3c')][0x0][_0x275a('0x3f')]:undefined)||''}];case _0x275a('0x40'):return[{'name':'attrHourFormat','value':_0x136d4f[_0x275a('0x41')]||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f[_0x275a('0x3c')][0x0][_0x275a('0x3f')]:undefined)||_0x275a('0x42')},{'name':_0x275a('0x43'),'value':_0x136d4f[_0x275a('0x43')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x1]?_0x136d4f[_0x275a('0x3c')][0x1][_0x275a('0x3f')]:undefined)||_0x275a('0x44')},{'name':'attrFontSize','value':_0x136d4f[_0x275a('0x45')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x2]?_0x136d4f['attrs'][0x2][_0x275a('0x3f')]:undefined)||0xc}];case'counter':return[{'name':_0x275a('0x46'),'value':_0x136d4f['attrMetric']||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f[_0x275a('0x3c')][0x0][_0x275a('0x3f')]:undefined)||_0x275a('0x47')},{'name':_0x275a('0x48'),'value':_0x136d4f[_0x275a('0x48')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x1]?_0x136d4f['attrs'][0x1][_0x275a('0x3f')]:undefined)||[]},{'name':_0x275a('0x45'),'value':_0x136d4f[_0x275a('0x45')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x2]?_0x136d4f[_0x275a('0x3c')][0x2][_0x275a('0x3f')]:undefined)||0x14},{'name':_0x275a('0x49'),'value':_0x136d4f[_0x275a('0x49')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f['attrs'][0x3]?_0x136d4f[_0x275a('0x3c')][0x3][_0x275a('0x3f')]:undefined)||_0x275a('0x4a')},{'name':_0x275a('0x4b'),'value':_0x136d4f['attrEmailAccounts']||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x4]?_0x136d4f[_0x275a('0x3c')][0x4][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x4c'),'value':_0x136d4f[_0x275a('0x4c')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x5]?_0x136d4f[_0x275a('0x3c')][0x5][_0x275a('0x3f')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x136d4f[_0x275a('0x4d')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x6]?_0x136d4f['attrs'][0x6][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x4e'),'value':_0x136d4f[_0x275a('0x4e')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x7]?_0x136d4f[_0x275a('0x3c')][0x7][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x4f'),'value':_0x136d4f[_0x275a('0x4f')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x8]?_0x136d4f['attrs'][0x8][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x50'),'value':_0x136d4f[_0x275a('0x50')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f['attrs'][0x9]?_0x136d4f[_0x275a('0x3c')][0x9][_0x275a('0x3f')]:undefined)||''}];case _0x275a('0x51'):case _0x275a('0x52'):return[{'name':'attrSerie1','value':_0x136d4f[_0x275a('0x53')]||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f['attrs'][0x0][_0x275a('0x3f')]:undefined)||_0x275a('0x47')},{'name':_0x275a('0x54'),'value':_0x136d4f[_0x275a('0x54')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x1]?_0x136d4f[_0x275a('0x3c')][0x1][_0x275a('0x3f')]:undefined)||null},{'name':_0x275a('0x55'),'value':_0x136d4f['attrSerie3']||(_0x136d4f['attrs']&&_0x136d4f['attrs'][0x2]?_0x136d4f[_0x275a('0x3c')][0x2]['value']:undefined)||null},{'name':_0x275a('0x48'),'value':_0x136d4f[_0x275a('0x48')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x3]?_0x136d4f[_0x275a('0x3c')][0x3][_0x275a('0x3f')]:undefined)||[]},{'name':'attrChannel','value':_0x136d4f['attrChannel']||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x4]?_0x136d4f[_0x275a('0x3c')][0x4][_0x275a('0x3f')]:undefined)||_0x275a('0x4a')},{'name':_0x275a('0x4b'),'value':_0x136d4f[_0x275a('0x4b')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x5]?_0x136d4f[_0x275a('0x3c')][0x5]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x136d4f[_0x275a('0x4c')]||(_0x136d4f['attrs']&&_0x136d4f['attrs'][0x6]?_0x136d4f['attrs'][0x6][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x4d'),'value':_0x136d4f[_0x275a('0x4d')]||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x7]?_0x136d4f[_0x275a('0x3c')][0x7][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x4e'),'value':_0x136d4f[_0x275a('0x4e')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f['attrs'][0x8]?_0x136d4f[_0x275a('0x3c')][0x8][_0x275a('0x3f')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x136d4f[_0x275a('0x4f')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x9]?_0x136d4f[_0x275a('0x3c')][0x9][_0x275a('0x3f')]:undefined)||''},{'name':_0x275a('0x50'),'value':_0x136d4f['attrChatWebsites']||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0xa]?_0x136d4f[_0x275a('0x3c')][0xa][_0x275a('0x3f')]:undefined)||''}];case _0x275a('0x56'):return[{'name':_0x275a('0x57'),'type':_0x136d4f[_0x275a('0x58')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f['attrs'][0x0][_0x275a('0x3a')]:undefined)||null,'value':_0x136d4f[_0x275a('0x57')]||(_0x136d4f[_0x275a('0x3c')]&&_0x136d4f[_0x275a('0x3c')][0x0]?_0x136d4f[_0x275a('0x3c')][0x0][_0x275a('0x3f')]:undefined)||null},{'name':_0x275a('0x59'),'value':_0x136d4f[_0x275a('0x59')]||(_0x136d4f['attrs']&&_0x136d4f[_0x275a('0x3c')][0x1]?_0x136d4f['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1fb9e6){logger[_0x275a('0x5a')](_0x275a('0x5b'),JSON['stringify'](_0x1fb9e6));return[];}}exports[_0x275a('0x5c')]=function(_0x561a6b,_0x13409b){if(_0x561a6b[_0x275a('0x5d')]){_0x561a6b[_0x275a('0x5d')][_0x275a('0x3c')]=widgetAttributes(_0x561a6b['body']);}return db[_0x275a('0x36')][_0x275a('0x5c')](_0x561a6b[_0x275a('0x5d')],{})['then'](respondWithResult(_0x13409b,0xc9))[_0x275a('0x38')](handleError(_0x13409b,null));};exports[_0x275a('0x25')]=function(_0x29d1db,_0x5d822e){if(_0x29d1db['body']['id']){delete _0x29d1db[_0x275a('0x5d')]['id'];}_0x29d1db[_0x275a('0x5d')]['attrs']=widgetAttributes(_0x29d1db[_0x275a('0x5d')]);return db[_0x275a('0x36')][_0x275a('0x37')]({'where':{'id':_0x29d1db[_0x275a('0x39')]['id']}})[_0x275a('0x26')](handleEntityNotFound(_0x5d822e,null))[_0x275a('0x26')](saveUpdates(_0x29d1db[_0x275a('0x5d')],null))['then'](respondWithResult(_0x5d822e,null))['catch'](handleError(_0x5d822e,null));};
\ No newline at end of file
index 3de67e2..3f928a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd7e=['exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x438c12,_0x14ae57){var _0x3d76e6=function(_0x3e81bc){while(--_0x3e81bc){_0x438c12['push'](_0x438c12['shift']());}};_0x3d76e6(++_0x14ae57);}(_0xdd7e,0x1c3));var _0xedd7=function(_0x1eb14d,_0x406ddc){_0x1eb14d=_0x1eb14d-0x0;var _0x23b10f=_0xdd7e[_0x1eb14d];return _0x23b10f;};'use strict';var EventEmitter=require(_0xedd7('0x0'));var DashboardItem=require(_0xedd7('0x1'))['db'][_0xedd7('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xedd7('0x3')](0x0);var events={'afterCreate':_0xedd7('0x4'),'afterUpdate':_0xedd7('0x5'),'afterDestroy':'remove'};function emitEvent(_0x10786a){return function(_0xf46f8b,_0x2a7d5e,_0x3ba84f){DashboardItemEvents[_0xedd7('0x6')](_0x10786a+':'+_0xf46f8b['id'],_0xf46f8b);DashboardItemEvents[_0xedd7('0x6')](_0x10786a,_0xf46f8b);_0x3ba84f(null);};}for(var e in events){if(events[_0xedd7('0x7')](e)){var event=events[e];DashboardItem[_0xedd7('0x8')](e,emitEvent(event));}}module[_0xedd7('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0xcf3d=['hook','events','../../mysqldb','DashboardItem','setMaxListeners','update','emit'];(function(_0x4ded2d,_0x2a239e){var _0x1d7f1d=function(_0x229207){while(--_0x229207){_0x4ded2d['push'](_0x4ded2d['shift']());}};_0x1d7f1d(++_0x2a239e);}(_0xcf3d,0x19e));var _0xdcf3=function(_0x165f71,_0x255a80){_0x165f71=_0x165f71-0x0;var _0x51e519=_0xcf3d[_0x165f71];return _0x51e519;};'use strict';var EventEmitter=require(_0xdcf3('0x0'));var DashboardItem=require(_0xdcf3('0x1'))['db'][_0xdcf3('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xdcf3('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xdcf3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x126846){return function(_0x3996ee,_0x3c60ed,_0xb3633e){DashboardItemEvents[_0xdcf3('0x5')](_0x126846+':'+_0x3996ee['id'],_0x3996ee);DashboardItemEvents[_0xdcf3('0x5')](_0x126846,_0x3996ee);_0xb3633e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0xdcf3('0x6')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index db1561b..83907b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c8=['path','../../config/environment','exports','DashboardItem','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x470fc6,_0x13f6f7){var _0x1c2a18=function(_0x5ac869){while(--_0x5ac869){_0x470fc6['push'](_0x470fc6['shift']());}};_0x1c2a18(++_0x13f6f7);}(_0xc2c8,0x1e4));var _0x8c2c=function(_0x24a0aa,_0x46cfc0){_0x24a0aa=_0x24a0aa-0x0;var _0x5d8cc7=_0xc2c8[_0x24a0aa];return _0x5d8cc7;};'use strict';var _=require(_0x8c2c('0x0'));var util=require(_0x8c2c('0x1'));var logger=require(_0x8c2c('0x2'))('api');var moment=require(_0x8c2c('0x3'));var BPromise=require(_0x8c2c('0x4'));var rp=require(_0x8c2c('0x5'));var fs=require('fs');var path=require(_0x8c2c('0x6'));var rimraf=require('rimraf');var config=require(_0x8c2c('0x7'));var attributes=require('./dashboardItem.attributes');module[_0x8c2c('0x8')]=function(_0x403620,_0x1fbb60){return _0x403620['define'](_0x8c2c('0x9'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0472=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','DashboardItem','dashboard_items'];(function(_0x42318d,_0x7096aa){var _0xcc5c79=function(_0x237936){while(--_0x237936){_0x42318d['push'](_0x42318d['shift']());}};_0xcc5c79(++_0x7096aa);}(_0x0472,0x1ad));var _0x2047=function(_0x1a1945,_0x3a24c9){_0x1a1945=_0x1a1945-0x0;var _0x5775a2=_0x0472[_0x1a1945];return _0x5775a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2047('0x0'))('api');var moment=require(_0x2047('0x1'));var BPromise=require(_0x2047('0x2'));var rp=require(_0x2047('0x3'));var fs=require('fs');var path=require(_0x2047('0x4'));var rimraf=require(_0x2047('0x5'));var config=require(_0x2047('0x6'));var attributes=require('./dashboardItem.attributes');module[_0x2047('0x7')]=function(_0x5a3b90,_0x1180c0){return _0x5a3b90[_0x2047('0x8')](_0x2047('0x9'),attributes,{'tableName':_0x2047('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca6992a..6a0ed9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61e0=['./dashboardItem.socket','register','request','then','info','request\x20sent','debug','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x24abe1,_0x4cf4ed){var _0x346cdf=function(_0x29815c){while(--_0x29815c){_0x24abe1['push'](_0x24abe1['shift']());}};_0x346cdf(++_0x4cf4ed);}(_0x61e0,0x13a));var _0x061e=function(_0x5ac053,_0x284463){_0x5ac053=_0x5ac053-0x0;var _0x445a7f=_0x61e0[_0x5ac053];return _0x445a7f;};'use strict';var _=require(_0x061e('0x0'));var util=require(_0x061e('0x1'));var moment=require(_0x061e('0x2'));var BPromise=require('bluebird');var rs=require(_0x061e('0x3'));var fs=require('fs');var Redis=require(_0x061e('0x4'));var db=require(_0x061e('0x5'))['db'];var utils=require(_0x061e('0x6'));var logger=require(_0x061e('0x7'))(_0x061e('0x8'));var config=require(_0x061e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x061e('0xa')][_0x061e('0xb')]({'port':0x232a});config[_0x061e('0xc')]=_[_0x061e('0xd')](config[_0x061e('0xc')],{'host':_0x061e('0xe'),'port':0x18eb});var socket=require(_0x061e('0xf'))(new Redis(config['redis']));require(_0x061e('0x10'))[_0x061e('0x11')](socket);function respondWithRpcPromise(_0x2b5f3b,_0x6f739b,_0x20d37b){return new BPromise(function(_0x2151e6,_0x1a3e38){return client[_0x061e('0x12')](_0x2b5f3b,_0x20d37b)[_0x061e('0x13')](function(_0x5b3ee7){logger[_0x061e('0x14')]('DashboardItem,\x20%s,\x20%s',_0x6f739b,_0x061e('0x15'));logger[_0x061e('0x16')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x6f739b,_0x061e('0x15'),JSON[_0x061e('0x17')](_0x5b3ee7));if(_0x5b3ee7['error']){if(_0x5b3ee7[_0x061e('0x18')][_0x061e('0x19')]===0x1f4){logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x5b3ee7['error'][_0x061e('0x1b')]);return _0x1a3e38(_0x5b3ee7[_0x061e('0x18')]['message']);}logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x5b3ee7[_0x061e('0x18')][_0x061e('0x1b')]);return _0x2151e6(_0x5b3ee7[_0x061e('0x18')][_0x061e('0x1b')]);}else{logger['info'](_0x061e('0x1a'),_0x6f739b,_0x061e('0x15'));_0x2151e6(_0x5b3ee7[_0x061e('0x1c')][_0x061e('0x1b')]);}})[_0x061e('0x1d')](function(_0x107dc6){logger[_0x061e('0x18')](_0x061e('0x1a'),_0x6f739b,_0x107dc6);_0x1a3e38(_0x107dc6);});});}
\ No newline at end of file
+var _0xfff6=['./dashboardItem.socket','register','request','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','DashboardItem,\x20%s,\x20%s','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0xfff6,0x94));var _0x6fff=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xfff6[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x6fff('0x0'));var util=require(_0x6fff('0x1'));var moment=require(_0x6fff('0x2'));var BPromise=require('bluebird');var rs=require(_0x6fff('0x3'));var fs=require('fs');var Redis=require(_0x6fff('0x4'));var db=require(_0x6fff('0x5'))['db'];var utils=require(_0x6fff('0x6'));var logger=require(_0x6fff('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6fff('0x8'));var client=jayson['client'][_0x6fff('0x9')]({'port':0x232a});config[_0x6fff('0xa')]=_[_0x6fff('0xb')](config[_0x6fff('0xa')],{'host':_0x6fff('0xc'),'port':0x18eb});var socket=require(_0x6fff('0xd'))(new Redis(config[_0x6fff('0xa')]));require(_0x6fff('0xe'))[_0x6fff('0xf')](socket);function respondWithRpcPromise(_0xb1bbf2,_0x368fb8,_0x44cb7d){return new BPromise(function(_0x34a149,_0x1e1e41){return client[_0x6fff('0x10')](_0xb1bbf2,_0x44cb7d)['then'](function(_0x3e8223){logger[_0x6fff('0x11')]('DashboardItem,\x20%s,\x20%s',_0x368fb8,'request\x20sent');logger[_0x6fff('0x12')](_0x6fff('0x13'),_0x368fb8,_0x6fff('0x14'),JSON[_0x6fff('0x15')](_0x3e8223));if(_0x3e8223[_0x6fff('0x16')]){if(_0x3e8223[_0x6fff('0x16')][_0x6fff('0x17')]===0x1f4){logger['error']('DashboardItem,\x20%s,\x20%s',_0x368fb8,_0x3e8223[_0x6fff('0x16')][_0x6fff('0x18')]);return _0x1e1e41(_0x3e8223[_0x6fff('0x16')]['message']);}logger[_0x6fff('0x16')]('DashboardItem,\x20%s,\x20%s',_0x368fb8,_0x3e8223[_0x6fff('0x16')]['message']);return _0x34a149(_0x3e8223['error'][_0x6fff('0x18')]);}else{logger[_0x6fff('0x11')](_0x6fff('0x19'),_0x368fb8,_0x6fff('0x14'));_0x34a149(_0x3e8223[_0x6fff('0x1a')][_0x6fff('0x18')]);}})['catch'](function(_0x4bc73c){logger[_0x6fff('0x16')]('DashboardItem,\x20%s,\x20%s',_0x368fb8,_0x4bc73c);_0x1e1e41(_0x4bc73c);});});}
\ No newline at end of file
index b022cd1..68196c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f8=['register','length','dashboardItem:','./dashboardItem.events','save','remove','update','removeListener'];(function(_0x273072,_0x467664){var _0x55f1c5=function(_0x594e8a){while(--_0x594e8a){_0x273072['push'](_0x273072['shift']());}};_0x55f1c5(++_0x467664);}(_0xc0f8,0x133));var _0x8c0f=function(_0x37b27b,_0x20f98c){_0x37b27b=_0x37b27b-0x0;var _0x3e7654=_0xc0f8[_0x37b27b];return _0x3e7654;};'use strict';var DashboardItemEvents=require(_0x8c0f('0x0'));var events=[_0x8c0f('0x1'),_0x8c0f('0x2'),_0x8c0f('0x3')];function createListener(_0x524916,_0x3e02f0){return function(_0x5b531b){_0x3e02f0['emit'](_0x524916,_0x5b531b);};}function removeListener(_0x23e872,_0x3f0d60){return function(){DashboardItemEvents[_0x8c0f('0x4')](_0x23e872,_0x3f0d60);};}exports[_0x8c0f('0x5')]=function(_0x28882a){for(var _0x232fd5=0x0,_0x35b987=events[_0x8c0f('0x6')];_0x232fd5<_0x35b987;_0x232fd5++){var _0x3a5088=events[_0x232fd5];var _0x585578=createListener(_0x8c0f('0x7')+_0x3a5088,_0x28882a);DashboardItemEvents['on'](_0x3a5088,_0x585578);}};
\ No newline at end of file
+var _0x2c05=['update','emit','removeListener','register','length','dashboardItem:','./dashboardItem.events','remove'];(function(_0x582edb,_0x5f4ed7){var _0x58bdcd=function(_0x59c055){while(--_0x59c055){_0x582edb['push'](_0x582edb['shift']());}};_0x58bdcd(++_0x5f4ed7);}(_0x2c05,0x1e6));var _0x52c0=function(_0x4a7e1b,_0x2afde2){_0x4a7e1b=_0x4a7e1b-0x0;var _0x39b169=_0x2c05[_0x4a7e1b];return _0x39b169;};'use strict';var DashboardItemEvents=require(_0x52c0('0x0'));var events=['save',_0x52c0('0x1'),_0x52c0('0x2')];function createListener(_0x2bcf93,_0x34b83e){return function(_0x37ff0e){_0x34b83e[_0x52c0('0x3')](_0x2bcf93,_0x37ff0e);};}function removeListener(_0x1ee42b,_0x1b2143){return function(){DashboardItemEvents[_0x52c0('0x4')](_0x1ee42b,_0x1b2143);};}exports[_0x52c0('0x5')]=function(_0x3db74f){for(var _0x5bd271=0x0,_0x509a84=events[_0x52c0('0x6')];_0x5bd271<_0x509a84;_0x5bd271++){var _0x4016ee=events[_0x5bd271];var _0x5a1996=createListener(_0x52c0('0x7')+_0x4016ee,_0x3db74f);DashboardItemEvents['on'](_0x4016ee,_0x5a1996);}};
\ No newline at end of file
index 25b012b..ed2ea04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c59=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','post','put','update','delete','destroy'];(function(_0xc0a3da,_0x5afb16){var _0x124159=function(_0x3b4788){while(--_0x3b4788){_0xc0a3da['push'](_0xc0a3da['shift']());}};_0x124159(++_0x5afb16);}(_0x2c59,0x10f));var _0x92c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c59[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x92c5('0x0'));var util=require('util');var path=require(_0x92c5('0x1'));var timeout=require('connect-timeout');var express=require(_0x92c5('0x2'));var router=express[_0x92c5('0x3')]();var fs_extra=require(_0x92c5('0x4'));var auth=require(_0x92c5('0x5'));var interaction=require(_0x92c5('0x6'));var config=require(_0x92c5('0x7'));var controller=require('./dashboardItem.controller');router[_0x92c5('0x8')](_0x92c5('0x9'),auth[_0x92c5('0xa')](),controller[_0x92c5('0xb')]);router[_0x92c5('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x92c5('0xd')]('/:id',auth[_0x92c5('0xa')](),controller[_0x92c5('0xe')]);router[_0x92c5('0xf')](_0x92c5('0x9'),auth['isAuthenticated'](),controller[_0x92c5('0x10')]);module[_0x92c5('0x11')]=router;
\ No newline at end of file
+var _0x71b8=['../../config/environment','./dashboardItem.controller','/:id','show','post','isAuthenticated','create','put','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x5a14cb,_0x1e0afd){var _0x354061=function(_0x2f5e23){while(--_0x2f5e23){_0x5a14cb['push'](_0x5a14cb['shift']());}};_0x354061(++_0x1e0afd);}(_0x71b8,0xf4));var _0x871b=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x71b8[_0x199572];return _0x13cfa3;};'use strict';var multer=require(_0x871b('0x0'));var util=require(_0x871b('0x1'));var path=require(_0x871b('0x2'));var timeout=require(_0x871b('0x3'));var express=require(_0x871b('0x4'));var router=express[_0x871b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x871b('0x6'));var interaction=require(_0x871b('0x7'));var config=require(_0x871b('0x8'));var controller=require(_0x871b('0x9'));router['get'](_0x871b('0xa'),auth['isAuthenticated'](),controller[_0x871b('0xb')]);router[_0x871b('0xc')]('/',auth[_0x871b('0xd')](),controller[_0x871b('0xe')]);router[_0x871b('0xf')]('/:id',auth[_0x871b('0xd')](),controller[_0x871b('0x10')]);router['delete'](_0x871b('0xa'),auth[_0x871b('0xd')](),controller['destroy']);module[_0x871b('0x11')]=router;
\ No newline at end of file
index 9a17c50..5cc6146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b08=['second','third','sequelize','exports','STRING','ENUM','first'];(function(_0x571320,_0x3f5436){var _0x1aa863=function(_0x158dc1){while(--_0x158dc1){_0x571320['push'](_0x571320['shift']());}};_0x1aa863(++_0x3f5436);}(_0x2b08,0xdb));var _0x82b0=function(_0x1b67d6,_0x1da4d3){_0x1b67d6=_0x1b67d6-0x0;var _0x17eee8=_0x2b08[_0x1b67d6];return _0x17eee8;};'use strict';var Sequelize=require(_0x82b0('0x0'));module[_0x82b0('0x1')]={'name':{'type':Sequelize[_0x82b0('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x82b0('0x3')](_0x82b0('0x4'),_0x82b0('0x5'),_0x82b0('0x6')),'allowNull':![],'defaultValue':_0x82b0('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xba08=['exports','STRING','second','third'];(function(_0x371dbb,_0x56194e){var _0x401faf=function(_0x267bdd){while(--_0x267bdd){_0x371dbb['push'](_0x371dbb['shift']());}};_0x401faf(++_0x56194e);}(_0xba08,0x6c));var _0x8ba0=function(_0x2a58a0,_0x4138ae){_0x2a58a0=_0x2a58a0-0x0;var _0x10f66e=_0xba08[_0x2a58a0];return _0x10f66e;};'use strict';var Sequelize=require('sequelize');module[_0x8ba0('0x0')]={'name':{'type':Sequelize[_0x8ba0('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first',_0x8ba0('0x2'),_0x8ba0('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x8ba0('0x1')]}};
\ No newline at end of file
index 0b4c684..53053a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa901=['end','offset','undefined','limit','count','set','json','apply','save','update','then','get','UserProfileResource','destroy','stack','name','send','Disposition','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x6041e4,_0x458f20){var _0x47350a=function(_0x43913b){while(--_0x43913b){_0x6041e4['push'](_0x6041e4['shift']());}};_0x47350a(++_0x458f20);}(_0xa901,0x189));var _0x1a90=function(_0x5a61d3,_0x3f1275){_0x5a61d3=_0x5a61d3-0x0;var _0x4822b5=_0xa901[_0x5a61d3];return _0x4822b5;};'use strict';var emlformat=require(_0x1a90('0x0'));var rimraf=require(_0x1a90('0x1'));var zipdir=require(_0x1a90('0x2'));var jsonpatch=require(_0x1a90('0x3'));var rp=require(_0x1a90('0x4'));var moment=require(_0x1a90('0x5'));var BPromise=require(_0x1a90('0x6'));var Mustache=require(_0x1a90('0x7'));var util=require(_0x1a90('0x8'));var path=require(_0x1a90('0x9'));var sox=require(_0x1a90('0xa'));var csv=require('to-csv');var ejs=require(_0x1a90('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1a90('0xc'));var crypto=require('crypto');var jsforce=require(_0x1a90('0xd'));var deskjs=require(_0x1a90('0xe'));var toCsv=require(_0x1a90('0xf'));var querystring=require(_0x1a90('0x10'));var Papa=require(_0x1a90('0x11'));var Redis=require(_0x1a90('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1a90('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1a90('0x14'));var logger=require('../../config/logger')(_0x1a90('0x15'));var utils=require(_0x1a90('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1a90('0x17'));var db=require(_0x1a90('0x18'))['db'];function respondWithStatusCode(_0x2d8ef7,_0xb356d9){_0xb356d9=_0xb356d9||0xcc;return function(_0x149cb1){if(_0x149cb1){return _0x2d8ef7[_0x1a90('0x19')](_0xb356d9);}return _0x2d8ef7[_0x1a90('0x1a')](_0xb356d9)[_0x1a90('0x1b')]();};}function respondWithResult(_0x7a397d,_0x4e1ca1){_0x4e1ca1=_0x4e1ca1||0xc8;return function(_0x45df6b){if(_0x45df6b){return _0x7a397d[_0x1a90('0x1a')](_0x4e1ca1)['json'](_0x45df6b);}};}function respondWithFilteredResult(_0x45a20a,_0x185388){return function(_0x1bae85){if(_0x1bae85){var _0x3b87b2=typeof _0x185388[_0x1a90('0x1c')]===_0x1a90('0x1d')&&typeof _0x185388[_0x1a90('0x1e')]==='undefined';var _0x5d10a5=_0x1bae85[_0x1a90('0x1f')];var _0x525f1a=_0x3b87b2?0x0:_0x185388[_0x1a90('0x1c')];var _0x496216=_0x3b87b2?_0x1bae85[_0x1a90('0x1f')]:_0x185388[_0x1a90('0x1c')]+_0x185388[_0x1a90('0x1e')];var _0x132454;if(_0x496216>=_0x5d10a5){_0x496216=_0x5d10a5;_0x132454=0xc8;}else{_0x132454=0xce;}_0x45a20a[_0x1a90('0x1a')](_0x132454);return _0x45a20a[_0x1a90('0x20')]('Content-Range',_0x525f1a+'-'+_0x496216+'/'+_0x5d10a5)[_0x1a90('0x21')](_0x1bae85);}return null;};}function patchUpdates(_0x7bfab1){return function(_0x18af01){try{jsonpatch[_0x1a90('0x22')](_0x18af01,_0x7bfab1,!![]);}catch(_0x28c1be){return BPromise['reject'](_0x28c1be);}return _0x18af01[_0x1a90('0x23')]();};}function saveUpdates(_0x1c7024,_0x16dc25){return function(_0x3ff0fc){if(_0x3ff0fc){return _0x3ff0fc[_0x1a90('0x24')](_0x1c7024)[_0x1a90('0x25')](function(_0x48f50c){return _0x48f50c;});}return null;};}function removeEntity(_0x4fdaad,_0x2a9c80){return function(_0xb075f5){if(_0xb075f5){return _0xb075f5['destroy']()[_0x1a90('0x25')](function(){var _0x4947eb=_0xb075f5[_0x1a90('0x26')]({'plain':!![]});var _0x151e84='Dispositions';return db[_0x1a90('0x27')][_0x1a90('0x28')]({'where':{'type':_0x151e84,'resourceId':_0x4947eb['id']}})['then'](function(){return _0xb075f5;});})['then'](function(){_0x4fdaad['status'](0xcc)[_0x1a90('0x1b')]();});}};}function handleEntityNotFound(_0x4378c4,_0x2b99c0){return function(_0x1b45cc){if(!_0x1b45cc){_0x4378c4[_0x1a90('0x19')](0x194);}return _0x1b45cc;};}function handleError(_0x2489a4,_0x47ad5f){_0x47ad5f=_0x47ad5f||0x1f4;return function(_0x3a4a95){logger['error'](_0x3a4a95[_0x1a90('0x29')]);if(_0x3a4a95[_0x1a90('0x2a')]){delete _0x3a4a95['name'];}_0x2489a4[_0x1a90('0x1a')](_0x47ad5f)[_0x1a90('0x2b')](_0x3a4a95);};}exports['index']=function(_0x5e514d,_0x1c4d55){var _0x188a0e={},_0x53b4a8={},_0x182a8b={'count':0x0,'rows':[]};var _0x4be525=_['map'](db[_0x1a90('0x2c')][_0x1a90('0x2d')],function(_0x10ef0b){return{'name':_0x10ef0b[_0x1a90('0x2e')],'type':_0x10ef0b[_0x1a90('0x2f')][_0x1a90('0x30')]};});_0x53b4a8[_0x1a90('0x31')]=_[_0x1a90('0x32')](_0x4be525,'name');_0x53b4a8[_0x1a90('0x33')]=_[_0x1a90('0x34')](_0x5e514d['query']);_0x53b4a8[_0x1a90('0x35')]=_[_0x1a90('0x36')](_0x53b4a8[_0x1a90('0x31')],_0x53b4a8['query']);_0x188a0e['attributes']=_[_0x1a90('0x36')](_0x53b4a8[_0x1a90('0x31')],qs[_0x1a90('0x37')](_0x5e514d[_0x1a90('0x33')][_0x1a90('0x37')]));_0x188a0e[_0x1a90('0x38')]=_0x188a0e['attributes']['length']?_0x188a0e[_0x1a90('0x38')]:_0x53b4a8[_0x1a90('0x31')];if(!_0x5e514d['query'][_0x1a90('0x39')](_0x1a90('0x3a'))){_0x188a0e[_0x1a90('0x1e')]=qs[_0x1a90('0x1e')](_0x5e514d['query'][_0x1a90('0x1e')]);_0x188a0e['offset']=qs['offset'](_0x5e514d[_0x1a90('0x33')][_0x1a90('0x1c')]);}_0x188a0e[_0x1a90('0x3b')]=qs[_0x1a90('0x3c')](_0x5e514d[_0x1a90('0x33')]['sort']);_0x188a0e[_0x1a90('0x3d')]=qs[_0x1a90('0x35')](_[_0x1a90('0x3e')](_0x5e514d[_0x1a90('0x33')],_0x53b4a8[_0x1a90('0x35')]),_0x4be525);if(_0x5e514d[_0x1a90('0x33')][_0x1a90('0x3f')]){_0x188a0e[_0x1a90('0x3d')]=_[_0x1a90('0x40')](_0x188a0e[_0x1a90('0x3d')],{'$or':_[_0x1a90('0x32')](_0x4be525,function(_0x8bcb1d){if(_0x8bcb1d[_0x1a90('0x2f')]!==_0x1a90('0x41')){var _0x3da5d8={};_0x3da5d8[_0x8bcb1d[_0x1a90('0x2a')]]={'$like':'%'+_0x5e514d[_0x1a90('0x33')][_0x1a90('0x3f')]+'%'};return _0x3da5d8;}})});}_0x188a0e=_[_0x1a90('0x40')]({},_0x188a0e,_0x5e514d[_0x1a90('0x42')]);var _0x28b51d={'where':_0x188a0e[_0x1a90('0x3d')]};return db[_0x1a90('0x2c')][_0x1a90('0x1f')](_0x28b51d)['then'](function(_0x188145){_0x182a8b[_0x1a90('0x1f')]=_0x188145;if(_0x5e514d[_0x1a90('0x33')][_0x1a90('0x43')]){_0x188a0e[_0x1a90('0x44')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x188a0e);})[_0x1a90('0x25')](function(_0x2c7ff8){_0x182a8b['rows']=_0x2c7ff8;return _0x182a8b;})['then'](respondWithFilteredResult(_0x1c4d55,_0x188a0e))[_0x1a90('0x45')](handleError(_0x1c4d55,null));};exports[_0x1a90('0x46')]=function(_0xa38df4,_0x5e6485){var _0x4f1c60={'raw':!![],'where':{'id':_0xa38df4[_0x1a90('0x47')]['id']}},_0x4d2412={};_0x4d2412['model']=_[_0x1a90('0x34')](db[_0x1a90('0x2c')][_0x1a90('0x2d')]);_0x4d2412[_0x1a90('0x33')]=_[_0x1a90('0x34')](_0xa38df4[_0x1a90('0x33')]);_0x4d2412[_0x1a90('0x35')]=_[_0x1a90('0x36')](_0x4d2412[_0x1a90('0x31')],_0x4d2412[_0x1a90('0x33')]);_0x4f1c60['attributes']=_[_0x1a90('0x36')](_0x4d2412[_0x1a90('0x31')],qs[_0x1a90('0x37')](_0xa38df4[_0x1a90('0x33')][_0x1a90('0x37')]));_0x4f1c60[_0x1a90('0x38')]=_0x4f1c60[_0x1a90('0x38')][_0x1a90('0x48')]?_0x4f1c60[_0x1a90('0x38')]:_0x4d2412[_0x1a90('0x31')];if(_0xa38df4['query'][_0x1a90('0x43')]){_0x4f1c60[_0x1a90('0x44')]=[{'all':!![]}];}_0x4f1c60=_[_0x1a90('0x40')]({},_0x4f1c60,_0xa38df4[_0x1a90('0x42')]);return db[_0x1a90('0x2c')][_0x1a90('0x49')](_0x4f1c60)[_0x1a90('0x25')](handleEntityNotFound(_0x5e6485,null))[_0x1a90('0x25')](respondWithResult(_0x5e6485,null))[_0x1a90('0x45')](handleError(_0x5e6485,null));};exports['create']=function(_0x24e935,_0xb047f1){return db[_0x1a90('0x2c')][_0x1a90('0x4a')](_0x24e935['body'],{})[_0x1a90('0x25')](function(_0x23d877){var _0x39c6b3=_0x24e935[_0x1a90('0x4b')][_0x1a90('0x26')]({'plain':!![]});if(!_0x39c6b3)throw new Error(_0x1a90('0x4c'));if(_0x39c6b3[_0x1a90('0x4d')]===_0x1a90('0x4b')){var _0x5c2e91=_0x23d877[_0x1a90('0x26')]({'plain':!![]});var _0x3e274e=_0x1a90('0x4e');return db['UserProfileSection'][_0x1a90('0x49')]({'where':{'name':_0x3e274e,'userProfileId':_0x39c6b3[_0x1a90('0x4f')]},'raw':!![]})['then'](function(_0x22b7ac){if(_0x22b7ac&&_0x22b7ac[_0x1a90('0x50')]===0x0){return db[_0x1a90('0x27')][_0x1a90('0x4a')]({'name':_0x5c2e91['name'],'resourceId':_0x5c2e91['id'],'type':_0x22b7ac['name'],'sectionId':_0x22b7ac['id']},{})[_0x1a90('0x25')](function(){return _0x23d877;});}else{return _0x23d877;}})[_0x1a90('0x45')](function(_0x4df490){logger[_0x1a90('0x51')](_0x1a90('0x52'),_0x4df490);throw _0x4df490;});}return _0x23d877;})[_0x1a90('0x25')](respondWithResult(_0xb047f1,0xc9))[_0x1a90('0x45')](handleError(_0xb047f1,null));};exports['update']=function(_0x28abca,_0x231e1e){if(_0x28abca[_0x1a90('0x53')]['id']){delete _0x28abca['body']['id'];}return db[_0x1a90('0x2c')][_0x1a90('0x49')]({'where':{'id':_0x28abca['params']['id']}})['then'](handleEntityNotFound(_0x231e1e,null))['then'](saveUpdates(_0x28abca[_0x1a90('0x53')],null))[_0x1a90('0x25')](respondWithResult(_0x231e1e,null))[_0x1a90('0x45')](handleError(_0x231e1e,null));};exports[_0x1a90('0x28')]=function(_0x5226af,_0x358f4c){return db[_0x1a90('0x2c')][_0x1a90('0x49')]({'where':{'id':_0x5226af[_0x1a90('0x47')]['id']}})['then'](handleEntityNotFound(_0x358f4c,null))[_0x1a90('0x25')](removeEntity(_0x358f4c,null))[_0x1a90('0x45')](handleError(_0x358f4c,null));};
\ No newline at end of file
+var _0x84e7=['undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Dispositions','sendStatus','name','send','index','map','Disposition','rawAttributes','type','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','length','options','find','create','body','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','limit'];(function(_0x18c1ff,_0x52c4bd){var _0x315e1d=function(_0x1f41d5){while(--_0x1f41d5){_0x18c1ff['push'](_0x18c1ff['shift']());}};_0x315e1d(++_0x52c4bd);}(_0x84e7,0x122));var _0x784e=function(_0x1fcfe6,_0x5caf94){_0x1fcfe6=_0x1fcfe6-0x0;var _0x150508=_0x84e7[_0x1fcfe6];return _0x150508;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x784e('0x0'));var zipdir=require(_0x784e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x784e('0x2'));var moment=require(_0x784e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x784e('0x4'));var util=require(_0x784e('0x5'));var path=require(_0x784e('0x6'));var sox=require(_0x784e('0x7'));var csv=require(_0x784e('0x8'));var ejs=require(_0x784e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x784e('0xa'));var squel=require('squel');var crypto=require(_0x784e('0xb'));var jsforce=require(_0x784e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x784e('0x8'));var querystring=require(_0x784e('0xd'));var Papa=require(_0x784e('0xe'));var Redis=require(_0x784e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x784e('0x10'));var hardwareService=require(_0x784e('0x11'));var logger=require(_0x784e('0x12'))(_0x784e('0x13'));var utils=require('../../config/utils');var config=require(_0x784e('0x14'));var licenseUtil=require(_0x784e('0x15'));var db=require(_0x784e('0x16'))['db'];function respondWithStatusCode(_0x2c7227,_0x40e0d1){_0x40e0d1=_0x40e0d1||0xcc;return function(_0x208d24){if(_0x208d24){return _0x2c7227['sendStatus'](_0x40e0d1);}return _0x2c7227[_0x784e('0x17')](_0x40e0d1)['end']();};}function respondWithResult(_0x172697,_0x1f6ede){_0x1f6ede=_0x1f6ede||0xc8;return function(_0x41f993){if(_0x41f993){return _0x172697[_0x784e('0x17')](_0x1f6ede)[_0x784e('0x18')](_0x41f993);}};}function respondWithFilteredResult(_0x46bd33,_0x947397){return function(_0x39abb5){if(_0x39abb5){var _0x8a90cf=typeof _0x947397['offset']==='undefined'&&typeof _0x947397[_0x784e('0x19')]===_0x784e('0x1a');var _0x3b7d6a=_0x39abb5[_0x784e('0x1b')];var _0x3ac83=_0x8a90cf?0x0:_0x947397[_0x784e('0x1c')];var _0x1dc568=_0x8a90cf?_0x39abb5['count']:_0x947397[_0x784e('0x1c')]+_0x947397[_0x784e('0x19')];var _0x8e437a;if(_0x1dc568>=_0x3b7d6a){_0x1dc568=_0x3b7d6a;_0x8e437a=0xc8;}else{_0x8e437a=0xce;}_0x46bd33[_0x784e('0x17')](_0x8e437a);return _0x46bd33[_0x784e('0x1d')](_0x784e('0x1e'),_0x3ac83+'-'+_0x1dc568+'/'+_0x3b7d6a)[_0x784e('0x18')](_0x39abb5);}return null;};}function patchUpdates(_0x5e9b46){return function(_0x5add8f){try{jsonpatch[_0x784e('0x1f')](_0x5add8f,_0x5e9b46,!![]);}catch(_0x52bc9d){return BPromise[_0x784e('0x20')](_0x52bc9d);}return _0x5add8f[_0x784e('0x21')]();};}function saveUpdates(_0x5254c8,_0x544a1b){return function(_0x2d1d08){if(_0x2d1d08){return _0x2d1d08[_0x784e('0x22')](_0x5254c8)[_0x784e('0x23')](function(_0xfc37fb){return _0xfc37fb;});}return null;};}function removeEntity(_0x51f452,_0x4fab06){return function(_0x4dc85f){if(_0x4dc85f){return _0x4dc85f[_0x784e('0x24')]()[_0x784e('0x23')](function(){var _0x47f5c2=_0x4dc85f[_0x784e('0x25')]({'plain':!![]});var _0x5e809a=_0x784e('0x26');return db['UserProfileResource'][_0x784e('0x24')]({'where':{'type':_0x5e809a,'resourceId':_0x47f5c2['id']}})[_0x784e('0x23')](function(){return _0x4dc85f;});})[_0x784e('0x23')](function(){_0x51f452[_0x784e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3668ed,_0x2242e6){return function(_0x12a246){if(!_0x12a246){_0x3668ed[_0x784e('0x27')](0x194);}return _0x12a246;};}function handleError(_0x54e558,_0x243e42){_0x243e42=_0x243e42||0x1f4;return function(_0xa3603f){logger['error'](_0xa3603f['stack']);if(_0xa3603f[_0x784e('0x28')]){delete _0xa3603f[_0x784e('0x28')];}_0x54e558[_0x784e('0x17')](_0x243e42)[_0x784e('0x29')](_0xa3603f);};}exports[_0x784e('0x2a')]=function(_0x294a75,_0x150757){var _0x14768f={},_0x42bdfb={},_0x2e18d6={'count':0x0,'rows':[]};var _0x328b70=_[_0x784e('0x2b')](db[_0x784e('0x2c')][_0x784e('0x2d')],function(_0x13f554){return{'name':_0x13f554['fieldName'],'type':_0x13f554[_0x784e('0x2e')]['key']};});_0x42bdfb[_0x784e('0x2f')]=_[_0x784e('0x2b')](_0x328b70,_0x784e('0x28'));_0x42bdfb['query']=_[_0x784e('0x30')](_0x294a75['query']);_0x42bdfb[_0x784e('0x31')]=_[_0x784e('0x32')](_0x42bdfb['model'],_0x42bdfb[_0x784e('0x33')]);_0x14768f[_0x784e('0x34')]=_['intersection'](_0x42bdfb['model'],qs[_0x784e('0x35')](_0x294a75[_0x784e('0x33')][_0x784e('0x35')]));_0x14768f[_0x784e('0x34')]=_0x14768f[_0x784e('0x34')]['length']?_0x14768f[_0x784e('0x34')]:_0x42bdfb[_0x784e('0x2f')];if(!_0x294a75['query'][_0x784e('0x36')]('nolimit')){_0x14768f['limit']=qs['limit'](_0x294a75[_0x784e('0x33')][_0x784e('0x19')]);_0x14768f['offset']=qs[_0x784e('0x1c')](_0x294a75[_0x784e('0x33')][_0x784e('0x1c')]);}_0x14768f[_0x784e('0x37')]=qs[_0x784e('0x38')](_0x294a75[_0x784e('0x33')]['sort']);_0x14768f['where']=qs[_0x784e('0x31')](_[_0x784e('0x39')](_0x294a75['query'],_0x42bdfb['filters']),_0x328b70);if(_0x294a75['query'][_0x784e('0x3a')]){_0x14768f[_0x784e('0x3b')]=_['merge'](_0x14768f[_0x784e('0x3b')],{'$or':_[_0x784e('0x2b')](_0x328b70,function(_0x35f85c){if(_0x35f85c['type']!==_0x784e('0x3c')){var _0x525923={};_0x525923[_0x35f85c[_0x784e('0x28')]]={'$like':'%'+_0x294a75['query'][_0x784e('0x3a')]+'%'};return _0x525923;}})});}_0x14768f=_[_0x784e('0x3d')]({},_0x14768f,_0x294a75['options']);var _0x4d08ee={'where':_0x14768f[_0x784e('0x3b')]};return db[_0x784e('0x2c')][_0x784e('0x1b')](_0x4d08ee)['then'](function(_0x2ff0ab){_0x2e18d6[_0x784e('0x1b')]=_0x2ff0ab;if(_0x294a75[_0x784e('0x33')][_0x784e('0x3e')]){_0x14768f['include']=[{'all':!![]}];}return db[_0x784e('0x2c')][_0x784e('0x3f')](_0x14768f);})['then'](function(_0x580663){_0x2e18d6[_0x784e('0x40')]=_0x580663;return _0x2e18d6;})[_0x784e('0x23')](respondWithFilteredResult(_0x150757,_0x14768f))[_0x784e('0x41')](handleError(_0x150757,null));};exports[_0x784e('0x42')]=function(_0x58dca5,_0x493c03){var _0x5c91b0={'raw':!![],'where':{'id':_0x58dca5[_0x784e('0x43')]['id']}},_0x5e0a18={};_0x5e0a18[_0x784e('0x2f')]=_[_0x784e('0x30')](db[_0x784e('0x2c')][_0x784e('0x2d')]);_0x5e0a18['query']=_['keys'](_0x58dca5['query']);_0x5e0a18[_0x784e('0x31')]=_[_0x784e('0x32')](_0x5e0a18['model'],_0x5e0a18[_0x784e('0x33')]);_0x5c91b0[_0x784e('0x34')]=_['intersection'](_0x5e0a18[_0x784e('0x2f')],qs[_0x784e('0x35')](_0x58dca5[_0x784e('0x33')][_0x784e('0x35')]));_0x5c91b0[_0x784e('0x34')]=_0x5c91b0[_0x784e('0x34')][_0x784e('0x44')]?_0x5c91b0[_0x784e('0x34')]:_0x5e0a18['model'];if(_0x58dca5[_0x784e('0x33')][_0x784e('0x3e')]){_0x5c91b0['include']=[{'all':!![]}];}_0x5c91b0=_[_0x784e('0x3d')]({},_0x5c91b0,_0x58dca5[_0x784e('0x45')]);return db[_0x784e('0x2c')][_0x784e('0x46')](_0x5c91b0)[_0x784e('0x23')](handleEntityNotFound(_0x493c03,null))[_0x784e('0x23')](respondWithResult(_0x493c03,null))[_0x784e('0x41')](handleError(_0x493c03,null));};exports[_0x784e('0x47')]=function(_0x52438e,_0x1aded3){return db['Disposition'][_0x784e('0x47')](_0x52438e[_0x784e('0x48')],{})['then'](function(_0x54d313){var _0xdc779c=_0x52438e['user'][_0x784e('0x25')]({'plain':!![]});if(!_0xdc779c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xdc779c[_0x784e('0x49')]===_0x784e('0x4a')){var _0x45d046=_0x54d313[_0x784e('0x25')]({'plain':!![]});var _0x553e79='Dispositions';return db[_0x784e('0x4b')][_0x784e('0x46')]({'where':{'name':_0x553e79,'userProfileId':_0xdc779c[_0x784e('0x4c')]},'raw':!![]})[_0x784e('0x23')](function(_0x16ca17){if(_0x16ca17&&_0x16ca17['autoAssociation']===0x0){return db['UserProfileResource'][_0x784e('0x47')]({'name':_0x45d046[_0x784e('0x28')],'resourceId':_0x45d046['id'],'type':_0x16ca17['name'],'sectionId':_0x16ca17['id']},{})[_0x784e('0x23')](function(){return _0x54d313;});}else{return _0x54d313;}})[_0x784e('0x41')](function(_0x55d04a){logger[_0x784e('0x4d')](_0x784e('0x4e'),_0x55d04a);throw _0x55d04a;});}return _0x54d313;})[_0x784e('0x23')](respondWithResult(_0x1aded3,0xc9))[_0x784e('0x41')](handleError(_0x1aded3,null));};exports['update']=function(_0x5c02da,_0x458cf8){if(_0x5c02da['body']['id']){delete _0x5c02da['body']['id'];}return db[_0x784e('0x2c')][_0x784e('0x46')]({'where':{'id':_0x5c02da[_0x784e('0x43')]['id']}})[_0x784e('0x23')](handleEntityNotFound(_0x458cf8,null))[_0x784e('0x23')](saveUpdates(_0x5c02da[_0x784e('0x48')],null))[_0x784e('0x23')](respondWithResult(_0x458cf8,null))['catch'](handleError(_0x458cf8,null));};exports[_0x784e('0x24')]=function(_0x6ea392,_0x5257dc){return db['Disposition']['find']({'where':{'id':_0x6ea392[_0x784e('0x43')]['id']}})[_0x784e('0x23')](handleEntityNotFound(_0x5257dc,null))[_0x784e('0x23')](removeEntity(_0x5257dc,null))[_0x784e('0x41')](handleError(_0x5257dc,null));};
\ No newline at end of file
index 998f163..698c5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa34c=['name_sms','name_fax','name_openchannel','OpenchannelAccountId','WhatsappAccountId','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','ListId','name_chat','name','name_mail','MailAccountId'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xa34c,0xa6));var _0xca34=function(_0x53529a,_0x1e9658){_0x53529a=_0x53529a-0x0;var _0xbbb942=_0xa34c[_0x53529a];return _0xbbb942;};'use strict';var _=require(_0xca34('0x0'));var util=require(_0xca34('0x1'));var logger=require(_0xca34('0x2'))(_0xca34('0x3'));var moment=require(_0xca34('0x4'));var BPromise=require('bluebird');var rp=require(_0xca34('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xca34('0x6'));var attributes=require(_0xca34('0x7'));module[_0xca34('0x8')]=function(_0x2384e7,_0xe45617){return _0x2384e7[_0xca34('0x9')](_0xca34('0xa'),attributes,{'tableName':_0xca34('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xca34('0xc'),'fields':['name',_0xca34('0xd')]},{'unique':!![],'name':_0xca34('0xe'),'fields':[_0xca34('0xf'),'ChatWebsiteId']},{'unique':!![],'name':_0xca34('0x10'),'fields':['name',_0xca34('0x11')]},{'unique':!![],'name':_0xca34('0x12'),'fields':[_0xca34('0xf'),'SmsAccountId']},{'unique':!![],'name':_0xca34('0x13'),'fields':[_0xca34('0xf'),'FaxAccountId']},{'unique':!![],'name':_0xca34('0x14'),'fields':[_0xca34('0xf'),_0xca34('0x15')]},{'unique':!![],'name':'name_whatsapp','fields':[_0xca34('0xf'),_0xca34('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7401=['name_voice','ListId','name_chat','name','ChatWebsiteId','name_mail','MailAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','path','exports','define','Disposition','tools_dispositions'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0x7401,0x1bd));var _0x1740=function(_0xf0faa6,_0xe3e0ee){_0xf0faa6=_0xf0faa6-0x0;var _0x570295=_0x7401[_0xf0faa6];return _0x570295;};'use strict';var _=require(_0x1740('0x0'));var util=require(_0x1740('0x1'));var logger=require(_0x1740('0x2'))(_0x1740('0x3'));var moment=require(_0x1740('0x4'));var BPromise=require(_0x1740('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1740('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./disposition.attributes');module[_0x1740('0x7')]=function(_0x288dc0,_0x30f079){return _0x288dc0[_0x1740('0x8')](_0x1740('0x9'),attributes,{'tableName':_0x1740('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x1740('0xb'),'fields':['name',_0x1740('0xc')]},{'unique':!![],'name':_0x1740('0xd'),'fields':[_0x1740('0xe'),_0x1740('0xf')]},{'unique':!![],'name':_0x1740('0x10'),'fields':[_0x1740('0xe'),_0x1740('0x11')]},{'unique':!![],'name':'name_sms','fields':[_0x1740('0xe'),'SmsAccountId']},{'unique':!![],'name':_0x1740('0x12'),'fields':[_0x1740('0xe'),_0x1740('0x13')]},{'unique':!![],'name':_0x1740('0x14'),'fields':[_0x1740('0xe'),_0x1740('0x15')]},{'unique':!![],'name':_0x1740('0x16'),'fields':['name',_0x1740('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
index e94d4c9..12f3e07 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(_0xb88ce9,_0x5c0d4f){var _0x48969c=function(_0x29c9ab){while(--_0x29c9ab){_0xb88ce9['push'](_0xb88ce9['shift']());}};_0x48969c(++_0x5c0d4f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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(_0x96f277,_0x5c8f87){var _0xcc9e3a=function(_0x19367e){while(--_0x19367e){_0x96f277['push'](_0x96f277['shift']());}};_0xcc9e3a(++_0x5c8f87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'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 c306e91..169b613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcadb=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','index','get','/:id','show','post','isAuthenticated','put','update','destroy','util','path'];(function(_0x26307f,_0x562b44){var _0x5ac553=function(_0x326922){while(--_0x326922){_0x26307f['push'](_0x26307f['shift']());}};_0x5ac553(++_0x562b44);}(_0xcadb,0x64));var _0xbcad=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xcadb[_0x3ab9ee];return _0x82ee88;};'use strict';var multer=require('multer');var util=require(_0xbcad('0x0'));var path=require(_0xbcad('0x1'));var timeout=require('connect-timeout');var express=require(_0xbcad('0x2'));var router=express[_0xbcad('0x3')]();var fs_extra=require(_0xbcad('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbcad('0x5'));var config=require(_0xbcad('0x6'));var controller=require(_0xbcad('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xbcad('0x8')]);router[_0xbcad('0x9')](_0xbcad('0xa'),auth['isAuthenticated'](),controller[_0xbcad('0xb')]);router[_0xbcad('0xc')]('/',auth[_0xbcad('0xd')](),controller['create']);router[_0xbcad('0xe')](_0xbcad('0xa'),auth[_0xbcad('0xd')](),controller[_0xbcad('0xf')]);router['delete'](_0xbcad('0xa'),auth[_0xbcad('0xd')](),controller[_0xbcad('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x8d17=['delete','destroy','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','isAuthenticated','get','/:id','show','post','create','put','update'];(function(_0x7cb79c,_0x101ccd){var _0x5be6d6=function(_0xeae911){while(--_0xeae911){_0x7cb79c['push'](_0x7cb79c['shift']());}};_0x5be6d6(++_0x101ccd);}(_0x8d17,0xc9));var _0x78d1=function(_0x1729ef,_0x13a981){_0x1729ef=_0x1729ef-0x0;var _0x383ae9=_0x8d17[_0x1729ef];return _0x383ae9;};'use strict';var multer=require(_0x78d1('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x78d1('0x1')]();var fs_extra=require(_0x78d1('0x2'));var auth=require(_0x78d1('0x3'));var interaction=require(_0x78d1('0x4'));var config=require(_0x78d1('0x5'));var controller=require(_0x78d1('0x6'));router['get']('/',auth[_0x78d1('0x7')](),controller['index']);router[_0x78d1('0x8')](_0x78d1('0x9'),auth[_0x78d1('0x7')](),controller[_0x78d1('0xa')]);router[_0x78d1('0xb')]('/',auth['isAuthenticated'](),controller[_0x78d1('0xc')]);router[_0x78d1('0xd')](_0x78d1('0x9'),auth[_0x78d1('0x7')](),controller[_0x78d1('0xe')]);router[_0x78d1('0xf')](_0x78d1('0x9'),auth[_0x78d1('0x7')](),controller[_0x78d1('0x10')]);module[_0x78d1('0x11')]=router;
\ No newline at end of file
index c7e4553..d9a665c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35a9=['mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','7200','9600','12000','14400','4800','INTEGER','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x481af3,_0x483fac){var _0x3354ea=function(_0x2e3de5){while(--_0x2e3de5){_0x481af3['push'](_0x481af3['shift']());}};_0x3354ea(++_0x483fac);}(_0x35a9,0x105));var _0x935a=function(_0x2151e1,_0x18aea8){_0x2151e1=_0x2151e1-0x0;var _0x3a0663=_0x35a9[_0x2151e1];return _0x3a0663;};'use strict';var Sequelize=require(_0x935a('0x0'));module[_0x935a('0x1')]={'name':{'type':Sequelize[_0x935a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x935a('0x2')]},'ecm':{'type':Sequelize[_0x935a('0x3')](_0x935a('0x4'),'no'),'defaultValue':_0x935a('0x4')},'headerinfo':{'type':Sequelize[_0x935a('0x2')],'defaultValue':_0x935a('0x5')},'localstationid':{'type':Sequelize[_0x935a('0x2')],'unique':_0x935a('0x6')},'minrate':{'type':Sequelize['ENUM'](_0x935a('0x7'),'4800',_0x935a('0x8'),_0x935a('0x9'),_0x935a('0xa'),_0x935a('0xb')),'defaultValue':_0x935a('0xc')},'maxrate':{'type':Sequelize[_0x935a('0x3')](_0x935a('0x7'),_0x935a('0xc'),_0x935a('0x8'),_0x935a('0x9'),_0x935a('0xa'),_0x935a('0xb')),'defaultValue':_0x935a('0xb')},'modem':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x935a('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x935a('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x935a('0x3')]('SIP',_0x935a('0xe'),_0x935a('0xf'),_0x935a('0x10')),'defaultValue':_0x935a('0x11')},'key':{'type':Sequelize[_0x935a('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x935a('0x12')],'defaultValue':function(){return _0x935a('0x13');}},'notificationSound':{'type':Sequelize[_0x935a('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x935a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x935a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x935a('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x935a('0x15')},'mandatoryDisposition':{'type':Sequelize[_0x935a('0x14')],'defaultValue':![],'comment':_0x935a('0x16'),'set':function(_0x304493){if(!_0x304493)this[_0x935a('0x17')](_0x935a('0x18'),null);this[_0x935a('0x17')](_0x935a('0x19'),_0x304493);}}};
\ No newline at end of file
+var _0x1b2d=['sequelize','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','4800','7200','12000','14400','9600','v17,v27,v29','SIP','IAX','DADHI','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition'];(function(_0x2140a2,_0x537416){var _0x1dd6e=function(_0x24e44e){while(--_0x24e44e){_0x2140a2['push'](_0x2140a2['shift']());}};_0x1dd6e(++_0x537416);}(_0x1b2d,0x15e));var _0xd1b2=function(_0x4af769,_0x4cd34c){_0x4af769=_0x4af769-0x0;var _0x932f20=_0x1b2d[_0x4af769];return _0x932f20;};'use strict';var Sequelize=require(_0xd1b2('0x0'));module['exports']={'name':{'type':Sequelize[_0xd1b2('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd1b2('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0xd1b2('0x2'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xd1b2('0x1')],'defaultValue':_0xd1b2('0x3')},'localstationid':{'type':Sequelize[_0xd1b2('0x1')],'unique':_0xd1b2('0x4')},'minrate':{'type':Sequelize[_0xd1b2('0x5')](_0xd1b2('0x6'),_0xd1b2('0x7'),_0xd1b2('0x8'),'9600',_0xd1b2('0x9'),_0xd1b2('0xa')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xd1b2('0x5')](_0xd1b2('0x6'),_0xd1b2('0x7'),'7200',_0xd1b2('0xb'),_0xd1b2('0x9'),_0xd1b2('0xa')),'defaultValue':_0xd1b2('0xa')},'modem':{'type':Sequelize[_0xd1b2('0x1')],'defaultValue':_0xd1b2('0xc')},'gateway':{'type':Sequelize[_0xd1b2('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xd1b2('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xd1b2('0x5')](_0xd1b2('0xd'),_0xd1b2('0xe'),_0xd1b2('0xf'),_0xd1b2('0x10')),'defaultValue':_0xd1b2('0xd')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xd1b2('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd1b2('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd1b2('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd1b2('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd1b2('0x13')],'allowNull':!![],'defaultValue':null,'comment':_0xd1b2('0x14')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xd1b2('0x15'),'set':function(_0xeb133a){if(!_0xeb133a)this['setDataValue'](_0xd1b2('0x16'),null);this[_0xd1b2('0x17')](_0xd1b2('0x18'),_0xeb133a);}}};
\ No newline at end of file
index f3e73a3..851361f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x045d=['createdAt','ListId','findById','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','List','Contacts','attachments','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','out','Messages','filename','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','spread','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','get','UserProfileResource','destroy','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxAccounts','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','addDisposition','FaxAccountId','findOne','Disposition','hasOwnProperty','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addInteraction','getInteractions','FaxInteraction','CmContact','Contact','User','fullname','Tags','color','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','FaxApplication','bulkCreate','findAndCountAll','priority','finally','send','json','getApplications','from-voip-provider','exten','localstationid','app','system','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','maxrate','minrate','modem','t38timeout','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications'];(function(_0x55e02c,_0x580e38){var _0x315de5=function(_0x5199f0){while(--_0x5199f0){_0x55e02c['push'](_0x55e02c['shift']());}};_0x315de5(++_0x580e38);}(_0x045d,0x1a9));var _0xd045=function(_0x514136,_0x4c650b){_0x514136=_0x514136-0x0;var _0x1b85f1=_0x045d[_0x514136];return _0x1b85f1;};'use strict';var emlformat=require(_0xd045('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd045('0x1'));var jsonpatch=require(_0xd045('0x2'));var rp=require(_0xd045('0x3'));var moment=require(_0xd045('0x4'));var BPromise=require(_0xd045('0x5'));var Mustache=require(_0xd045('0x6'));var util=require(_0xd045('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd045('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd045('0x9'));var _=require(_0xd045('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd045('0xb'));var toCsv=require(_0xd045('0x8'));var querystring=require(_0xd045('0xc'));var Papa=require('papaparse');var Redis=require(_0xd045('0xd'));var authService=require(_0xd045('0xe'));var qs=require(_0xd045('0xf'));var as=require(_0xd045('0x10'));var hardwareService=require(_0xd045('0x11'));var logger=require(_0xd045('0x12'))(_0xd045('0x13'));var utils=require(_0xd045('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd045('0x15'));var db=require(_0xd045('0x16'))['db'];config[_0xd045('0x17')]=_[_0xd045('0x18')](config['redis'],{'host':_0xd045('0x19'),'port':0x18eb});var socket=require(_0xd045('0x1a'))(new Redis(config[_0xd045('0x17')]));require(_0xd045('0x1b'))[_0xd045('0x1c')](socket);var jayson=require(_0xd045('0x1d'));var client=jayson[_0xd045('0x1e')][_0xd045('0x1f')]({'port':0x232c});var client9002=jayson[_0xd045('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2aa9d5,_0x1d9219,_0x20a2bc,_0x4e6ab3){return new BPromise(function(_0x1350e4,_0x543bdd){var _0x28c590=_0x4e6ab3||client;return _0x28c590['request'](_0x2aa9d5,_0x20a2bc)[_0xd045('0x20')](function(_0x10e035){logger[_0xd045('0x21')]('FaxAccount,\x20%s,\x20%s',_0x1d9219,_0xd045('0x22'));logger['debug'](_0xd045('0x23'),_0x1d9219,_0xd045('0x22'),JSON[_0xd045('0x24')](_0x10e035));if(_0x10e035[_0xd045('0x25')]){if(_0x10e035[_0xd045('0x25')][_0xd045('0x26')]===0x1f4){logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);return _0x543bdd(_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);}logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);return _0x1350e4(_0x10e035[_0xd045('0x25')][_0xd045('0x28')]);}else{logger['info'](_0xd045('0x27'),_0x1d9219,_0xd045('0x22'));_0x1350e4(_0x10e035[_0xd045('0x29')][_0xd045('0x28')]);}})[_0xd045('0x2a')](function(_0x1bf404){logger[_0xd045('0x25')](_0xd045('0x27'),_0x1d9219,_0x1bf404);_0x543bdd(_0x1bf404);});});}function respondWithStatusCode(_0x4b4d49,_0x22122a){_0x22122a=_0x22122a||0xcc;return function(_0x545a73){if(_0x545a73){return _0x4b4d49[_0xd045('0x2b')](_0x22122a);}return _0x4b4d49[_0xd045('0x2c')](_0x22122a)[_0xd045('0x2d')]();};}function respondWithResult(_0x4b5523,_0x483423){_0x483423=_0x483423||0xc8;return function(_0x57c796){if(_0x57c796){return _0x4b5523[_0xd045('0x2c')](_0x483423)['json'](_0x57c796);}};}function respondWithFilteredResult(_0x83a002,_0x5be049){return function(_0x485e6b){if(_0x485e6b){var _0xfa860c=typeof _0x5be049[_0xd045('0x2e')]===_0xd045('0x2f')&&typeof _0x5be049[_0xd045('0x30')]===_0xd045('0x2f');var _0x389c91=_0x485e6b[_0xd045('0x31')];var _0x1b5e53=_0xfa860c?0x0:_0x5be049[_0xd045('0x2e')];var _0x2ecee8=_0xfa860c?_0x485e6b[_0xd045('0x31')]:_0x5be049['offset']+_0x5be049[_0xd045('0x30')];var _0x507d7a;if(_0x2ecee8>=_0x389c91){_0x2ecee8=_0x389c91;_0x507d7a=0xc8;}else{_0x507d7a=0xce;}_0x83a002[_0xd045('0x2c')](_0x507d7a);return _0x83a002[_0xd045('0x32')](_0xd045('0x33'),_0x1b5e53+'-'+_0x2ecee8+'/'+_0x389c91)['json'](_0x485e6b);}return null;};}function patchUpdates(_0x28d70e){return function(_0x20eb1a){try{jsonpatch[_0xd045('0x34')](_0x20eb1a,_0x28d70e,!![]);}catch(_0x43d612){return BPromise[_0xd045('0x35')](_0x43d612);}return _0x20eb1a[_0xd045('0x36')]();};}function saveUpdates(_0x52bec8,_0x3dd4a8){return function(_0xe0fc7e){if(_0xe0fc7e){return _0xe0fc7e['update'](_0x52bec8)[_0xd045('0x20')](function(_0xecf421){return _0xecf421;});}return null;};}function removeEntity(_0x553b2d,_0x330041){return function(_0x247d17){if(_0x247d17){return _0x247d17['destroy']()[_0xd045('0x20')](function(){var _0x2c3f76=_0x247d17[_0xd045('0x37')]({'plain':!![]});var _0x3080ce='FaxAccounts';return db[_0xd045('0x38')][_0xd045('0x39')]({'where':{'type':_0x3080ce,'resourceId':_0x2c3f76['id']}})[_0xd045('0x20')](function(){return _0x247d17;});})['then'](function(){_0x553b2d[_0xd045('0x2c')](0xcc)[_0xd045('0x2d')]();});}};}function handleEntityNotFound(_0x50acf7,_0x48d697){return function(_0x1c1624){if(!_0x1c1624){_0x50acf7[_0xd045('0x2b')](0x194);}return _0x1c1624;};}function handleError(_0x229f27,_0xad7009){_0xad7009=_0xad7009||0x1f4;return function(_0x1bc215){logger[_0xd045('0x25')](_0x1bc215[_0xd045('0x3a')]);if(_0x1bc215[_0xd045('0x3b')]){delete _0x1bc215['name'];}_0x229f27[_0xd045('0x2c')](_0xad7009)['send'](_0x1bc215);};}exports[_0xd045('0x3c')]=function(_0x465696,_0x2fa156){var _0x356cbc={'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]},_0x12f264={},_0x4e0ec5={'count':0x0,'rows':[]};var _0x40d3ee=_[_0xd045('0x3f')](db[_0xd045('0x40')][_0xd045('0x41')],function(_0xd06942){return{'name':_0xd06942['fieldName'],'type':_0xd06942[_0xd045('0x42')][_0xd045('0x43')]};});_0x12f264[_0xd045('0x44')]=_[_0xd045('0x3f')](_0x40d3ee,_0xd045('0x3b'));_0x12f264[_0xd045('0x45')]=_[_0xd045('0x46')](_0x465696[_0xd045('0x45')]);_0x12f264[_0xd045('0x47')]=_[_0xd045('0x48')](_0x12f264[_0xd045('0x44')],_0x12f264['query']);_0x356cbc[_0xd045('0x49')]=_['intersection'](_0x12f264[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x465696[_0xd045('0x45')][_0xd045('0x4a')]));_0x356cbc[_0xd045('0x49')]=_0x356cbc['attributes'][_0xd045('0x4b')]?_0x356cbc[_0xd045('0x49')]:_0x12f264['model'];if(!_0x465696[_0xd045('0x45')]['hasOwnProperty'](_0xd045('0x4c'))){_0x356cbc['limit']=qs[_0xd045('0x30')](_0x465696[_0xd045('0x45')][_0xd045('0x30')]);_0x356cbc['offset']=qs[_0xd045('0x2e')](_0x465696[_0xd045('0x45')][_0xd045('0x2e')]);}_0x356cbc[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x465696['query'][_0xd045('0x4e')]);_0x356cbc[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x465696[_0xd045('0x45')],_0x12f264['filters']),_0x40d3ee);if(_0x465696[_0xd045('0x45')][_0xd045('0x51')]){_0x356cbc['where']=_['merge'](_0x356cbc['where'],{'$or':_[_0xd045('0x3f')](_0x40d3ee,function(_0x3669ac){if(_0x3669ac[_0xd045('0x42')]!==_0xd045('0x52')){var _0x2c5bc9={};_0x2c5bc9[_0x3669ac[_0xd045('0x3b')]]={'$like':'%'+_0x465696[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x2c5bc9;}})});}_0x356cbc=_[_0xd045('0x53')]({},_0x356cbc,_0x465696[_0xd045('0x54')]);var _0x3a33f2={'where':_0x356cbc[_0xd045('0x4f')]};return db['FaxAccount'][_0xd045('0x31')](_0x3a33f2)[_0xd045('0x20')](function(_0x6af6e){_0x4e0ec5[_0xd045('0x31')]=_0x6af6e;if(_0x465696[_0xd045('0x45')][_0xd045('0x55')]){_0x356cbc[_0xd045('0x56')]=[{'all':!![]}];}return db[_0xd045('0x40')][_0xd045('0x57')](_0x356cbc);})[_0xd045('0x20')](function(_0x2d062d){_0x4e0ec5[_0xd045('0x58')]=_0x2d062d;return _0x4e0ec5;})[_0xd045('0x20')](respondWithFilteredResult(_0x2fa156,_0x356cbc))[_0xd045('0x2a')](handleError(_0x2fa156,null));};exports[_0xd045('0x59')]=function(_0x3326e0,_0x4cb2d1){var _0x5c9252={'raw':![],'where':{'id':_0x3326e0[_0xd045('0x5a')]['id']},'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]},_0x39f109={};_0x39f109[_0xd045('0x44')]=_[_0xd045('0x46')](db['FaxAccount'][_0xd045('0x41')]);_0x39f109[_0xd045('0x45')]=_[_0xd045('0x46')](_0x3326e0[_0xd045('0x45')]);_0x39f109[_0xd045('0x47')]=_[_0xd045('0x48')](_0x39f109[_0xd045('0x44')],_0x39f109[_0xd045('0x45')]);_0x5c9252['attributes']=_[_0xd045('0x48')](_0x39f109[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x3326e0['query']['fields']));_0x5c9252[_0xd045('0x49')]=_0x5c9252[_0xd045('0x49')][_0xd045('0x4b')]?_0x5c9252[_0xd045('0x49')]:_0x39f109[_0xd045('0x44')];if(_0x3326e0[_0xd045('0x45')][_0xd045('0x55')]){_0x5c9252[_0xd045('0x56')]=[{'all':!![]}];}_0x5c9252=_[_0xd045('0x53')]({},_0x5c9252,_0x3326e0[_0xd045('0x54')]);return db['FaxAccount']['find'](_0x5c9252)[_0xd045('0x20')](handleEntityNotFound(_0x4cb2d1,null))[_0xd045('0x20')](respondWithResult(_0x4cb2d1,null))[_0xd045('0x2a')](handleError(_0x4cb2d1,null));};exports[_0xd045('0x5b')]=function(_0x38f3a1,_0x4b6a70){return db[_0xd045('0x40')][_0xd045('0x5b')](_0x38f3a1['body'],{})[_0xd045('0x20')](function(_0x1a280c){var _0x3fad17=_0x38f3a1['user']['get']({'plain':!![]});if(!_0x3fad17)throw new Error(_0xd045('0x5c'));if(_0x3fad17[_0xd045('0x5d')]===_0xd045('0x5e')){var _0x2c8977=_0x1a280c[_0xd045('0x37')]({'plain':!![]});var _0x2f12ef=_0xd045('0x5f');return db[_0xd045('0x60')]['find']({'where':{'name':_0x2f12ef,'userProfileId':_0x3fad17['userProfileId']},'raw':!![]})[_0xd045('0x20')](function(_0xd2465){if(_0xd2465&&_0xd2465['autoAssociation']===0x0){return db['UserProfileResource'][_0xd045('0x5b')]({'name':_0x2c8977[_0xd045('0x3b')],'resourceId':_0x2c8977['id'],'type':_0xd2465[_0xd045('0x3b')],'sectionId':_0xd2465['id']},{})[_0xd045('0x20')](function(){return _0x1a280c;});}else{return _0x1a280c;}})['catch'](function(_0x52895b){logger[_0xd045('0x25')](_0xd045('0x61'),_0x52895b);throw _0x52895b;});}return _0x1a280c;})[_0xd045('0x20')](respondWithResult(_0x4b6a70,0xc9))[_0xd045('0x2a')](handleError(_0x4b6a70,null));};exports[_0xd045('0x62')]=function(_0x4d28ea,_0x57cacc){if(_0x4d28ea[_0xd045('0x63')]['id']){delete _0x4d28ea['body']['id'];}return db['FaxAccount'][_0xd045('0x64')]({'where':{'id':_0x4d28ea[_0xd045('0x5a')]['id']},'include':[{'model':db[_0xd045('0x3d')],'as':_0xd045('0x3e')}]})[_0xd045('0x20')](handleEntityNotFound(_0x57cacc,null))[_0xd045('0x20')](saveUpdates(_0x4d28ea[_0xd045('0x63')],null))[_0xd045('0x20')](respondWithResult(_0x57cacc,null))[_0xd045('0x2a')](handleError(_0x57cacc,null));};exports[_0xd045('0x39')]=function(_0x1545cd,_0x2cd57b){return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x1545cd[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x2cd57b,null))[_0xd045('0x20')](removeEntity(_0x2cd57b,null))['catch'](handleError(_0x2cd57b,null));};exports['describe']=function(_0x1b4384,_0x16f51b){return db['FaxAccount']['describe']()['then'](respondWithResult(_0x16f51b,null))['catch'](handleError(_0x16f51b,null));};exports[_0xd045('0x65')]=function(_0x3841e3,_0x387ecd,_0x3f3b01){if(_0x3841e3[_0xd045('0x63')]['id']){delete _0x3841e3[_0xd045('0x63')]['id'];}return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x3841e3[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x387ecd,null))['then'](function(_0x2fbc9e){if(_0x2fbc9e){_0x3841e3[_0xd045('0x63')][_0xd045('0x66')]=_0x2fbc9e['id'];return db['Disposition']['create'](_0x3841e3[_0xd045('0x63')]);}})[_0xd045('0x20')](respondWithResult(_0x387ecd,null))[_0xd045('0x2a')](handleError(_0x387ecd,null));};exports['getDispositions']=function(_0x59ef8e,_0x8f53a4,_0x5530ef){var _0x8b4e16={'raw':![],'where':{}};var _0x4c4bd6={};var _0x2b7c41={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x59ef8e['params']['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x8f53a4,null))[_0xd045('0x20')](function(_0x8f3c6f){if(_0x8f3c6f){_0x4c4bd6[_0xd045('0x44')]=_['keys'](db[_0xd045('0x68')][_0xd045('0x41')]);_0x4c4bd6['query']=_[_0xd045('0x46')](_0x59ef8e[_0xd045('0x45')]);_0x4c4bd6[_0xd045('0x47')]=_[_0xd045('0x48')](_0x4c4bd6['model'],_0x4c4bd6[_0xd045('0x45')]);_0x8b4e16[_0xd045('0x49')]=_[_0xd045('0x48')](_0x4c4bd6['model'],qs[_0xd045('0x4a')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x4a')]));_0x8b4e16[_0xd045('0x49')]=_0x8b4e16[_0xd045('0x49')][_0xd045('0x4b')]?_0x8b4e16[_0xd045('0x49')]:_0x4c4bd6['model'];if(!_0x59ef8e[_0xd045('0x45')][_0xd045('0x69')]('nolimit')){_0x8b4e16[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x30')]);_0x8b4e16['offset']=qs[_0xd045('0x2e')](_0x59ef8e[_0xd045('0x45')][_0xd045('0x2e')]);}_0x8b4e16[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x59ef8e['query'][_0xd045('0x4e')]);_0x8b4e16['where']=qs['filters'](_[_0xd045('0x50')](_0x59ef8e[_0xd045('0x45')],_0x4c4bd6[_0xd045('0x47')]));_0x8b4e16['where'][_0xd045('0x66')]=_0x8f3c6f['id'];if(_0x59ef8e['query'][_0xd045('0x51')]){_0x8b4e16[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x8b4e16[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x8b4e16[_0xd045('0x49')],function(_0x558ced){var _0x101a65={};_0x101a65[_0x558ced]={'$like':'%'+_0x59ef8e[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x101a65;})});}_0x8b4e16=_[_0xd045('0x53')]({},_0x8b4e16,_0x59ef8e[_0xd045('0x54')]);return db[_0xd045('0x68')][_0xd045('0x31')]({'where':_0x8b4e16['where']})['then'](function(_0x3b3f61){_0x2b7c41[_0xd045('0x31')]=_0x3b3f61;if(_0x59ef8e[_0xd045('0x45')]['includeAll']){_0x8b4e16['include']=[{'all':!![]}];}return db['Disposition'][_0xd045('0x57')](_0x8b4e16);})[_0xd045('0x20')](function(_0x18c435){_0x2b7c41[_0xd045('0x58')]=_0x18c435;return _0x2b7c41;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x8f53a4,_0x8b4e16))[_0xd045('0x2a')](handleError(_0x8f53a4,null));};exports['removeDispositions']=function(_0x33f8ed,_0x2415c6,_0x26218c){return db[_0xd045('0x40')][_0xd045('0x64')]({'where':{'id':_0x33f8ed[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2415c6,null))['then'](function(_0x162dda){if(_0x162dda){return _0x162dda['removeDispositions'](_0x33f8ed[_0xd045('0x45')][_0xd045('0x6a')]);}})[_0xd045('0x20')](respondWithStatusCode(_0x2415c6,null))[_0xd045('0x2a')](handleError(_0x2415c6,null));};exports[_0xd045('0x6b')]=function(_0x313f04,_0x31ab78,_0x1d3ce3){if(_0x313f04['body']['id']){delete _0x313f04['body']['id'];}return db[_0xd045('0x40')]['find']({'where':{'id':_0x313f04[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x31ab78,null))[_0xd045('0x20')](function(_0x293146){if(_0x293146){_0x313f04[_0xd045('0x63')][_0xd045('0x66')]=_0x293146['id'];return db['CannedAnswer'][_0xd045('0x5b')](_0x313f04[_0xd045('0x63')]);}})[_0xd045('0x20')](respondWithResult(_0x31ab78,null))[_0xd045('0x2a')](handleError(_0x31ab78,null));};exports[_0xd045('0x6c')]=function(_0x291a73,_0x1f858f,_0x260bac){var _0xc06c68={'raw':![],'where':{}};var _0x2b6543={};var _0x1fa647={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x291a73[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1f858f,null))['then'](function(_0x23ca58){if(_0x23ca58){_0x2b6543[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x6d')][_0xd045('0x41')]);_0x2b6543['query']=_['keys'](_0x291a73[_0xd045('0x45')]);_0x2b6543[_0xd045('0x47')]=_[_0xd045('0x48')](_0x2b6543['model'],_0x2b6543[_0xd045('0x45')]);_0xc06c68[_0xd045('0x49')]=_[_0xd045('0x48')](_0x2b6543['model'],qs[_0xd045('0x4a')](_0x291a73[_0xd045('0x45')]['fields']));_0xc06c68['attributes']=_0xc06c68[_0xd045('0x49')][_0xd045('0x4b')]?_0xc06c68['attributes']:_0x2b6543[_0xd045('0x44')];if(!_0x291a73[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0xc06c68[_0xd045('0x30')]=qs['limit'](_0x291a73[_0xd045('0x45')][_0xd045('0x30')]);_0xc06c68[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x291a73[_0xd045('0x45')][_0xd045('0x2e')]);}_0xc06c68['order']=qs[_0xd045('0x4e')](_0x291a73[_0xd045('0x45')]['sort']);_0xc06c68[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x291a73[_0xd045('0x45')],_0x2b6543[_0xd045('0x47')]));_0xc06c68[_0xd045('0x4f')][_0xd045('0x66')]=_0x23ca58['id'];if(_0x291a73[_0xd045('0x45')][_0xd045('0x51')]){_0xc06c68[_0xd045('0x4f')]=_[_0xd045('0x53')](_0xc06c68[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0xc06c68[_0xd045('0x49')],function(_0x3742fc){var _0x52df48={};_0x52df48[_0x3742fc]={'$like':'%'+_0x291a73[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x52df48;})});}_0xc06c68=_[_0xd045('0x53')]({},_0xc06c68,_0x291a73[_0xd045('0x54')]);return db[_0xd045('0x6d')][_0xd045('0x31')]({'where':_0xc06c68[_0xd045('0x4f')]})['then'](function(_0x347f7f){_0x1fa647['count']=_0x347f7f;if(_0x291a73['query'][_0xd045('0x55')]){_0xc06c68['include']=[{'all':!![]}];}return db[_0xd045('0x6d')][_0xd045('0x57')](_0xc06c68);})[_0xd045('0x20')](function(_0x561fd6){_0x1fa647[_0xd045('0x58')]=_0x561fd6;return _0x1fa647;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x1f858f,_0xc06c68))[_0xd045('0x2a')](handleError(_0x1f858f,null));};exports['removeAnswers']=function(_0x77492,_0x493f12,_0x583c0e){return db[_0xd045('0x40')]['find']({'where':{'id':_0x77492['params']['id']}})['then'](handleEntityNotFound(_0x493f12,null))[_0xd045('0x20')](function(_0x7ce4fd){if(_0x7ce4fd){return _0x7ce4fd[_0xd045('0x6e')](_0x77492[_0xd045('0x45')]['ids']);}})[_0xd045('0x20')](respondWithStatusCode(_0x493f12,null))[_0xd045('0x2a')](handleError(_0x493f12,null));};exports['addInteraction']=function(_0x67fe7,_0x3b3c13,_0x362ac2){return db['FaxInteraction']['find']({'where':{'id':_0x67fe7[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x3b3c13,null))[_0xd045('0x20')](function(_0x1170c4){if(_0x1170c4){return _0x1170c4[_0xd045('0x6f')](_0x67fe7['body'][_0xd045('0x6a')],_['omit'](_0x67fe7[_0xd045('0x63')],[_0xd045('0x6a'),'id'])||{});}})[_0xd045('0x20')](respondWithResult(_0x3b3c13,null))[_0xd045('0x2a')](handleError(_0x3b3c13,null));};exports[_0xd045('0x70')]=function(_0x37cfd1,_0x5cded6,_0x3c3c45){var _0x3463f7={'raw':![],'where':{}};var _0x24f26a={};var _0x1f5393={'count':0x0,'rows':[]};return db[_0xd045('0x40')]['findOne']({'where':{'id':_0x37cfd1[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x5cded6,null))[_0xd045('0x20')](function(_0x1f6722){if(_0x1f6722){_0x24f26a[_0xd045('0x44')]=_['keys'](db[_0xd045('0x71')][_0xd045('0x41')]);_0x24f26a[_0xd045('0x45')]=_[_0xd045('0x46')](_0x37cfd1['query']);_0x24f26a['filters']=_['intersection'](_0x24f26a[_0xd045('0x44')],_0x24f26a['query']);_0x3463f7[_0xd045('0x49')]=_['intersection'](_0x24f26a[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x37cfd1['query']['fields']));_0x3463f7['attributes']=_0x3463f7['attributes']['length']?_0x3463f7[_0xd045('0x49')]:_0x24f26a[_0xd045('0x44')];if(!_0x37cfd1[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0x3463f7[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x37cfd1[_0xd045('0x45')][_0xd045('0x30')]);_0x3463f7['offset']=qs['offset'](_0x37cfd1[_0xd045('0x45')][_0xd045('0x2e')]);}_0x3463f7['order']=qs[_0xd045('0x4e')](_0x37cfd1[_0xd045('0x45')]['sort']);_0x3463f7[_0xd045('0x4f')]=qs['filters'](_[_0xd045('0x50')](_0x37cfd1[_0xd045('0x45')],_0x24f26a[_0xd045('0x47')]));_0x3463f7[_0xd045('0x4f')]['FaxAccountId']=_0x1f6722['id'];if(_0x37cfd1['query'][_0xd045('0x51')]){_0x3463f7[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x3463f7[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x3463f7[_0xd045('0x49')],function(_0x453a0e){var _0x58bcab={};_0x58bcab[_0x453a0e]={'$like':'%'+_0x37cfd1[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x58bcab;})});}_0x3463f7=_[_0xd045('0x53')]({},_0x3463f7,_0x37cfd1[_0xd045('0x54')]);return db[_0xd045('0x71')][_0xd045('0x31')]({'where':_0x3463f7[_0xd045('0x4f')]})[_0xd045('0x20')](function(_0x5418b6){_0x1f5393[_0xd045('0x31')]=_0x5418b6;if(_0x37cfd1['query']['includeAll']){_0x3463f7['include']=[{'model':db[_0xd045('0x72')],'as':_0xd045('0x73'),'required':![]},{'model':db[_0xd045('0x74')],'as':'Owner','attributes':[_0xd045('0x3b'),_0xd045('0x75'),'internal'],'required':![]},{'model':db['Tag'],'as':_0xd045('0x76'),'attributes':['id',_0xd045('0x3b'),_0xd045('0x77')],'where':_0x37cfd1['query']['tag']?{'id':_0x37cfd1[_0xd045('0x45')][_0xd045('0x78')]}:undefined,'required':_0x37cfd1[_0xd045('0x45')]['tag']?!![]:![]}];}return db['FaxInteraction'][_0xd045('0x57')](_0x3463f7);})[_0xd045('0x20')](function(_0x1a02a0){_0x1f5393[_0xd045('0x58')]=_0x1a02a0;return _0x1f5393;});}})['then'](respondWithFilteredResult(_0x5cded6,_0x3463f7))[_0xd045('0x2a')](handleError(_0x5cded6,null));};exports[_0xd045('0x79')]=function(_0x40a627,_0x2f27c1){var _0x28aaec=_0x40a627['params']['id'];var _0x8dee1f=_0x40a627[_0xd045('0x63')];var _0x3eafe4=0xc8;var _0x43e180=null;return db[_0xd045('0x7a')][_0xd045('0x7b')]({'isolationLevel':db[_0xd045('0x7a')]['Transaction'][_0xd045('0x7c')]['READ_COMMITTED']},function(_0x4324f0){return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x28aaec},'transaction':_0x4324f0})[_0xd045('0x20')](function(_0x3d25ec){if(_0x3d25ec){return db[_0xd045('0x7d')][_0xd045('0x39')]({'where':{'FaxAccountId':_0x28aaec},'transaction':_0x4324f0})[_0xd045('0x20')](function(){var _0x3d68c0=_['map'](_0x8dee1f,function(_0x143b5c){_0x143b5c[_0xd045('0x66')]=_0x28aaec;return _0x143b5c;});return db['FaxApplication'][_0xd045('0x7e')](_0x3d68c0,{'transaction':_0x4324f0});});}else{_0x3eafe4=0x194;_0x43e180=[];}});})[_0xd045('0x20')](function(){if(_0x3eafe4!==0x194){return db[_0xd045('0x7d')][_0xd045('0x7f')]({'where':{'FaxAccountId':_0x28aaec},'order':_0xd045('0x80')})[_0xd045('0x20')](function(_0x52cde6){_0x43e180=_0x52cde6;});}})[_0xd045('0x2a')](function(_0x2ad29d){_0x3eafe4=0x1f4;logger[_0xd045('0x25')](_0x2ad29d[_0xd045('0x3a')]);if(_0x2ad29d[_0xd045('0x3b')]){delete _0x2ad29d[_0xd045('0x3b')];}_0x43e180=_0x2ad29d;})[_0xd045('0x81')](function(){if(_0x43e180===null){_0x2f27c1['sendStatus'](_0x3eafe4);}else{if(_0x3eafe4===0x1f4){_0x2f27c1[_0xd045('0x2c')](_0x3eafe4)[_0xd045('0x82')](_0x43e180);}else{_0x2f27c1['status'](_0x3eafe4)[_0xd045('0x83')](_0x43e180);}}});};exports['getApplications']=function(_0x183d79,_0x4edbf9,_0x176a49){var _0x17d55e={};var _0x334b2a={};var _0x363c53;var _0x517b4b;return db[_0xd045('0x40')]['findOne']({'where':{'id':_0x183d79[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4edbf9,null))[_0xd045('0x20')](function(_0x12ce86){if(_0x12ce86){_0x363c53=_0x12ce86;_0x334b2a[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x7d')][_0xd045('0x41')]);_0x334b2a[_0xd045('0x45')]=_[_0xd045('0x46')](_0x183d79[_0xd045('0x45')]);_0x334b2a[_0xd045('0x47')]=_[_0xd045('0x48')](_0x334b2a[_0xd045('0x44')],_0x334b2a[_0xd045('0x45')]);_0x17d55e['attributes']=_[_0xd045('0x48')](_0x334b2a[_0xd045('0x44')],qs['fields'](_0x183d79[_0xd045('0x45')]['fields']));_0x17d55e[_0xd045('0x49')]=_0x17d55e[_0xd045('0x49')][_0xd045('0x4b')]?_0x17d55e['attributes']:_0x334b2a[_0xd045('0x44')];_0x17d55e[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x183d79[_0xd045('0x45')]['sort']);_0x17d55e['where']=qs[_0xd045('0x47')](_['pick'](_0x183d79[_0xd045('0x45')],_0x334b2a[_0xd045('0x47')]));if(_0x183d79['query'][_0xd045('0x51')]){_0x17d55e[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x17d55e[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x17d55e[_0xd045('0x49')],function(_0x5d6cd3){var _0x1d52ac={};_0x1d52ac[_0x5d6cd3]={'$like':'%'+_0x183d79[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x1d52ac;})});}_0x17d55e=_['merge']({},_0x17d55e,_0x183d79[_0xd045('0x54')]);return _0x363c53[_0xd045('0x84')](_0x17d55e);}})[_0xd045('0x20')](function(_0xfd5cf0){if(_0xfd5cf0){_0x517b4b=_0xfd5cf0[_0xd045('0x4b')];if(!_0x183d79[_0xd045('0x45')][_0xd045('0x69')](_0xd045('0x4c'))){_0x17d55e[_0xd045('0x30')]=qs[_0xd045('0x30')](_0x183d79[_0xd045('0x45')][_0xd045('0x30')]);_0x17d55e[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x183d79['query']['offset']);}return _0x363c53[_0xd045('0x84')](_0x17d55e);}})['then'](function(_0x5a17f3){if(_0x5a17f3){return _0x5a17f3?{'count':_0x517b4b,'rows':_0x5a17f3}:null;}})[_0xd045('0x20')](respondWithResult(_0x4edbf9,null))[_0xd045('0x2a')](handleError(_0x4edbf9,null));};function Extension(_0x159274,_0x37298a,_0x518d8b,_0x353c27){this['context']=_0xd045('0x85');this[_0xd045('0x86')]=_0x159274[_0xd045('0x87')];this[_0xd045('0x88')]=_0x353c27;this[_0xd045('0x42')]=_0xd045('0x89');this[_0xd045('0x8a')]='Fax\x20Extension';this[_0xd045('0x66')]=_0x159274['id'];this[_0xd045('0x80')]=_0x37298a;this[_0xd045('0x8b')]=_0x518d8b;}function createExtensionsReciveFax(_0x1944b2){var _0x551c99=0x1;var _0x4fada0=[];_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,'',_0xd045('0x8d')));_0x551c99+=0x1;_0x4fada0['push'](new Extension(_0x1944b2,_0x551c99,_0xd045('0x8e'),_0xd045('0x8f')));_0x551c99+=0x1;for(var _0x4e1cd7 in _0x1944b2){if(_0x1944b2[_0xd045('0x69')](_0x4e1cd7)&&(_0x4e1cd7===_0xd045('0x90')||_0x4e1cd7===_0xd045('0x87')||_0x4e1cd7===_0xd045('0x91')||_0x4e1cd7===_0xd045('0x92')||_0x4e1cd7==='headerinfo'||_0x4e1cd7===_0xd045('0x93')||_0x4e1cd7===_0xd045('0x94')||_0x4e1cd7===_0xd045('0x95')||_0x4e1cd7===_0xd045('0x96'))){_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,_0xd045('0x97')+_0x4e1cd7+')='+_0x1944b2[_0x4e1cd7],_0xd045('0x8f')));_0x551c99+=0x1;}}_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,'6','Wait'));_0x551c99+=0x1;_0x4fada0[_0xd045('0x8c')](new Extension(_0x1944b2,_0x551c99,_0xd045('0x98'),_0xd045('0x99')));_0x551c99=0x0;return _0x4fada0;}exports[_0xd045('0x9a')]=function(_0x420254,_0x35a89a,_0x44b3a5){var _0x50fccb;return db[_0xd045('0x7a')][_0xd045('0x7b')](function(_0x3e873c){return db[_0xd045('0x40')]['create'](_0x420254[_0xd045('0x63')],{'transaction':_0x3e873c})['then'](function(_0xd72b04){_0x50fccb=_0xd72b04[_0xd045('0x37')]({'plain':!![]});return db[_0xd045('0x9b')][_0xd045('0x7e')](createExtensionsReciveFax(_0x50fccb),{'transaction':_0x3e873c});});})[_0xd045('0x20')](function(){return _0x50fccb;})[_0xd045('0x20')](respondWithResult(_0x35a89a,null))[_0xd045('0x2a')](handleError(_0x35a89a,null));};exports[_0xd045('0x9c')]=function(_0xdd9bed,_0x5f502b,_0x5c7d96){var _0x1050ff;return db['sequelize'][_0xd045('0x7b')](function(_0x4007b7){return db[_0xd045('0x40')][_0xd045('0x62')](_0xdd9bed[_0xd045('0x63')],{'where':{'id':_0xdd9bed[_0xd045('0x63')]['id']},'transaction':_0x4007b7})[_0xd045('0x20')](function(_0x4297eb){return db[_0xd045('0x9b')]['destroy']({'where':{'FaxAccountId':_0xdd9bed[_0xd045('0x63')]['id']},'transaction':_0x4007b7})[_0xd045('0x20')](function(_0x54f397){return db[_0xd045('0x9b')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0xdd9bed[_0xd045('0x63')],['tech',_0xd045('0x43'),_0xd045('0x9d'),'updatedAt','TrunkId',_0xd045('0x9e')])),{'transaction':_0x4007b7});});});})[_0xd045('0x20')](function(){return db[_0xd045('0x40')][_0xd045('0x9f')](_0xdd9bed[_0xd045('0x63')]['id']);})[_0xd045('0x20')](respondWithResult(_0x5f502b,null))[_0xd045('0x2a')](handleError(_0x5f502b,null));};exports[_0xd045('0xa0')]=function(_0x5af4be,_0x4b167a,_0x3e68fa){var _0x39a60f={'raw':!![],'where':{}};var _0x85c8f5={};var _0x41aec2={'count':0x0,'rows':[]};return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x5af4be[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x4b167a,null))[_0xd045('0x20')](function(_0x1c6f86){if(_0x1c6f86){_0x85c8f5[_0xd045('0x44')]=_[_0xd045('0x46')](db['FaxMessage'][_0xd045('0x41')]);_0x85c8f5[_0xd045('0x45')]=_[_0xd045('0x46')](_0x5af4be[_0xd045('0x45')]);_0x85c8f5[_0xd045('0x47')]=_[_0xd045('0x48')](_0x85c8f5[_0xd045('0x44')],_0x85c8f5[_0xd045('0x45')]);_0x39a60f['attributes']=_[_0xd045('0x48')](_0x85c8f5['model'],qs[_0xd045('0x4a')](_0x5af4be[_0xd045('0x45')][_0xd045('0x4a')]));_0x39a60f[_0xd045('0x49')]=_0x39a60f[_0xd045('0x49')]['length']?_0x39a60f['attributes']:_0x85c8f5[_0xd045('0x44')];if(!_0x5af4be['query'][_0xd045('0x69')](_0xd045('0x4c'))){_0x39a60f[_0xd045('0x30')]=qs['limit'](_0x5af4be['query']['limit']);_0x39a60f[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x5af4be[_0xd045('0x45')][_0xd045('0x2e')]);}_0x39a60f[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x5af4be[_0xd045('0x45')]['sort']);_0x39a60f[_0xd045('0x4f')]=qs[_0xd045('0x47')](_[_0xd045('0x50')](_0x5af4be['query'],_0x85c8f5[_0xd045('0x47')]));_0x39a60f['where'][_0xd045('0x66')]=_0x1c6f86['id'];if(_0x5af4be[_0xd045('0x45')]['filter']){_0x39a60f[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x39a60f[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x39a60f[_0xd045('0x49')],function(_0x1fdc21){var _0x2df736={};_0x2df736[_0x1fdc21]={'$like':'%'+_0x5af4be[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x2df736;})});}if(_0x5af4be[_0xd045('0x45')][_0xd045('0xa1')]){var _0x5454d5=_0x5af4be['query']['$gte']['split'](',');var _0x2bb81d={};_0x2bb81d[_0x5454d5[0x0]]={'$gte':moment(_0x5454d5[0x1])[_0xd045('0xa2')](_0xd045('0xa3'))};_0x39a60f[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x39a60f[_0xd045('0x4f')],_0x2bb81d);}_0x39a60f=_[_0xd045('0x53')]({},_0x39a60f,_0x5af4be[_0xd045('0x54')]);return db['FaxMessage'][_0xd045('0x31')]({'where':_0x39a60f[_0xd045('0x4f')]})[_0xd045('0x20')](function(_0x2402f7){_0x41aec2['count']=_0x2402f7;if(_0x5af4be[_0xd045('0x45')][_0xd045('0x55')]){_0x39a60f[_0xd045('0x56')]=[{'all':!![]}];}return db[_0xd045('0xa4')][_0xd045('0x57')](_0x39a60f);})['then'](function(_0x276290){_0x41aec2['rows']=_0x276290;return _0x41aec2;});}})[_0xd045('0x20')](respondWithFilteredResult(_0x4b167a,_0x39a60f))[_0xd045('0x2a')](handleError(_0x4b167a,null));};exports['send']=function(_0x4435a4,_0xa3c0b,_0x393f21){var _0x5a4147,_0x147dea={},_0x2ff54c;if(_0x4435a4[_0xd045('0x63')]['to']){_0x2ff54c=_0x4435a4[_0xd045('0x63')]['to'][0x0];}return db[_0xd045('0x40')]['find']({'where':{'id':_0x4435a4['params']['id']},'include':[{'model':db['CmList'],'as':_0xd045('0xa5'),'include':[{'model':db[_0xd045('0x72')],'as':_0xd045('0xa6'),'where':{'fax':_0x2ff54c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})['then'](handleEntityNotFound(_0xa3c0b,null))[_0xd045('0x20')](function(_0x3a2828){_0x5a4147=_0x3a2828;if(_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')]&&_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][_0xd045('0x4b')]){for(var _0x2483e7=0x0;_0x2483e7<_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][_0xd045('0x4b')];_0x2483e7+=0x1){_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7]={'filename':_0x4435a4[_0xd045('0x63')]['attachments'][_0x2483e7][_0xd045('0x3b')],'id':_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7]['id'],'path':path['join'](config[_0xd045('0xa8')],_0xd045('0xa9'),_0x4435a4['body'][_0xd045('0xa7')][_0x2483e7][_0xd045('0xaa')])};}}return respondWithRpcPromise('CheckAfterSend',_0xd045('0xab'),{'FaxAccountId':_[_0xd045('0xac')](_0x4435a4[_0xd045('0x5a')]['id'])?undefined:_0x4435a4[_0xd045('0x5a')]['id'],'path':_['isNil'](_0x4435a4[_0xd045('0x63')]['attachments'][0x0][_0xd045('0xad')])?undefined:_0x4435a4[_0xd045('0x63')][_0xd045('0xa7')][0x0]['path'],'fax':_['isNil'](_0x4435a4['body']['to'][0x0])?undefined:_0x4435a4[_0xd045('0x63')]['to'][0x0]},client9002);})['then'](function(){if(_0x5a4147){if(_[_0xd045('0xac')](_0x4435a4['body'][_0xd045('0xae')])){_0x4435a4[_0xd045('0x63')]['from']=util['format'](_0xd045('0xaf'),_0x5a4147['name'],_0x5a4147[_0xd045('0xb0')]);}if(_0x5a4147['List']){if(_0x5a4147['List'][_0xd045('0xa6')][_0xd045('0x4b')]){return _0x5a4147[_0xd045('0xa5')][_0xd045('0xa6')][0x0];}else{return db[_0xd045('0x72')]['create'](_[_0xd045('0x18')](_0x4435a4[_0xd045('0x63')],{'firstName':_0x4435a4[_0xd045('0x63')]['to'][0x0],'phone':_0x4435a4[_0xd045('0x63')]['to'][0x0],'fax':_0x4435a4[_0xd045('0x63')]['to'][0x0],'ListId':_0x5a4147[_0xd045('0x9e')]}));}}else{throw new Error(_0xd045('0xb1'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x32d66e){if(_0x32d66e){return db[_0xd045('0x71')][_0xd045('0x64')]({'where':{'ContactId':_0x32d66e['id'],'closed':![],'FaxAccountId':_0x5a4147['id']}})['then'](function(_0x351931){if(_0x351931){return[_0x351931,![]];}return db[_0xd045('0x71')]['create']({'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x32d66e['id'],'FaxAccountId':_0x5a4147['id'],'fax':_0x4435a4[_0xd045('0x63')]['to'][0x0],'firstMsgDirection':_0xd045('0xb2'),'Messages':[_[_0xd045('0x53')](_0x4435a4[_0xd045('0x63')],{'read':![],'body':_0x4435a4['body'][_0xd045('0xa7')][0x0]['filename'],'FaxAccountId':_0x5a4147['id'],'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x32d66e['id'],'AttachmentId':_0x4435a4[_0xd045('0x63')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xd045('0xa4')],'as':_0xd045('0xb3')}]})['then'](function(_0x3156b7){return[_0x3156b7,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x21f6e1,_0x48b47b){if(_0x48b47b){return _0x21f6e1;}return db[_0xd045('0xa4')][_0xd045('0x5b')]({'direction':_0xd045('0xb2'),'read':![],'body':_0x4435a4['body'][_0xd045('0xa7')][0x0][_0xd045('0xb4')],'FaxAccountId':_0x5a4147['id'],'FaxInteractionId':_0x21f6e1['id'],'UserId':_0x4435a4[_0xd045('0x5e')]['id'],'ContactId':_0x21f6e1[_0xd045('0xb5')],'AttachmentId':_0x4435a4['body'][_0xd045('0xa7')][0x0]['id']})[_0xd045('0x20')](function(_0x25cbaf){_0x21f6e1[_0xd045('0xb6')][_0xd045('0xb3')]=[];_0x21f6e1[_0xd045('0xb6')][_0xd045('0xb3')][_0xd045('0x8c')](_0x25cbaf[_0xd045('0xb6')]);return _0x21f6e1;});})[_0xd045('0x20')](function(_0x20105b){respondWithRpcPromise(_0xd045('0xb7'),_0xd045('0xb7'),{'FaxAccountId':_[_0xd045('0xac')](_0x4435a4[_0xd045('0x5a')]['id'])?undefined:_0x4435a4['params']['id'],'path':_[_0xd045('0xac')](_0x4435a4['body'][_0xd045('0xa7')][0x0]['path'])?undefined:_0x4435a4[_0xd045('0x63')]['attachments'][0x0][_0xd045('0xad')],'fax':_[_0xd045('0xac')](_0x4435a4['body']['to'][0x0])?undefined:_0x4435a4[_0xd045('0x63')]['to'][0x0],'AttachmentId':_0x4435a4['body'][_0xd045('0xa7')][0x0]['id']},client9002)[_0xd045('0x20')](function(_0x30491b){logger[_0xd045('0x21')]('SendFaxRpc,\x20%s',_0x30491b);})[_0xd045('0x2a')](function(_0x33014a){logger['info'](_0xd045('0xb8'),_0x33014a);});return _0x20105b;})[_0xd045('0x20')](respondWithResult(_0xa3c0b,null))[_0xd045('0x2a')](handleError(_0xa3c0b,null));};exports[_0xd045('0xb9')]=function(_0x4c658a,_0xc2e19a,_0x24fc70){return db['FaxAccount']['find']({'where':{'id':_0x4c658a[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0xc2e19a,null))[_0xd045('0x20')](function(_0x278f0d){if(_0x278f0d){return _0x278f0d[_0xd045('0xb9')](_0x4c658a[_0xd045('0x63')][_0xd045('0x6a')],_[_0xd045('0xba')](_0x4c658a[_0xd045('0x63')],[_0xd045('0x6a'),'id'])||{})[_0xd045('0xbb')](function(_0x3c0ba3){for(var _0x2913bc=0x0;_0x2913bc<_0x4c658a['body'][_0xd045('0x6a')][_0xd045('0x4b')];_0x2913bc+=0x1){socket['emit'](_0xd045('0xbc'),{'UserId':Number(_0x4c658a[_0xd045('0x63')][_0xd045('0x6a')][_0x2913bc]),'FaxAccountId':Number(_0x4c658a[_0xd045('0x5a')]['id'])});}return _0x3c0ba3;});}})[_0xd045('0x20')](respondWithResult(_0xc2e19a,null))[_0xd045('0x2a')](handleError(_0xc2e19a,null));};exports['removeAgents']=function(_0x3e0f09,_0x134d45,_0x575524){return db[_0xd045('0x40')]['find']({'where':{'id':_0x3e0f09[_0xd045('0x5a')]['id']}})['then'](handleEntityNotFound(_0x134d45,null))[_0xd045('0x20')](function(_0xbe60c1){if(_0xbe60c1){return _0xbe60c1[_0xd045('0xbd')](_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')])[_0xd045('0x20')](function(){if(_[_0xd045('0xbe')](_0x3e0f09[_0xd045('0x45')]['ids'])){for(var _0x52ad90=0x0;_0x52ad90<_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')][_0xd045('0x4b')];_0x52ad90+=0x1){socket[_0xd045('0xbf')](_0xd045('0xc0'),{'UserId':Number(_0x3e0f09[_0xd045('0x45')]['ids'][_0x52ad90]),'FaxAccountId':Number(_0x3e0f09[_0xd045('0x5a')]['id'])});}}else{socket[_0xd045('0xbf')](_0xd045('0xc0'),{'UserId':Number(_0x3e0f09[_0xd045('0x45')][_0xd045('0x6a')]),'FaxAccountId':Number(_0x3e0f09['params']['id'])});}});}})['then'](respondWithStatusCode(_0x134d45,null))[_0xd045('0x2a')](handleError(_0x134d45,null));};exports[_0xd045('0xc1')]=function(_0x13a4f4,_0x182b0d,_0x84101b){var _0x335324={};var _0x564559={};var _0x1f6974;var _0x3e9916;return db[_0xd045('0x40')][_0xd045('0x67')]({'where':{'id':_0x13a4f4[_0xd045('0x5a')]['id']}})[_0xd045('0x20')](handleEntityNotFound(_0x182b0d,null))['then'](function(_0x239d43){if(_0x239d43){_0x1f6974=_0x239d43;_0x564559[_0xd045('0x44')]=_[_0xd045('0x46')](db[_0xd045('0x74')][_0xd045('0x41')]);_0x564559['query']=_[_0xd045('0x46')](_0x13a4f4[_0xd045('0x45')]);_0x564559[_0xd045('0x47')]=_['intersection'](_0x564559[_0xd045('0x44')],_0x564559[_0xd045('0x45')]);_0x335324['attributes']=_[_0xd045('0x48')](_0x564559[_0xd045('0x44')],qs[_0xd045('0x4a')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x4a')]));_0x335324[_0xd045('0x49')]=_0x335324[_0xd045('0x49')]['length']?_0x335324[_0xd045('0x49')]:_0x564559[_0xd045('0x44')];_0x335324[_0xd045('0x4d')]=qs[_0xd045('0x4e')](_0x13a4f4['query'][_0xd045('0x4e')]);_0x335324[_0xd045('0x4f')]=qs[_0xd045('0x47')](_['pick'](_0x13a4f4[_0xd045('0x45')],_0x564559[_0xd045('0x47')]));if(_0x13a4f4[_0xd045('0x45')][_0xd045('0x51')]){_0x335324[_0xd045('0x4f')]=_[_0xd045('0x53')](_0x335324[_0xd045('0x4f')],{'$or':_[_0xd045('0x3f')](_0x335324[_0xd045('0x49')],function(_0x1e8bed){var _0x46641f={};_0x46641f[_0x1e8bed]={'$like':'%'+_0x13a4f4[_0xd045('0x45')][_0xd045('0x51')]+'%'};return _0x46641f;})});}_0x335324=_[_0xd045('0x53')]({},_0x335324,_0x13a4f4['options']);return _0x1f6974['getAgents'](_0x335324);}})['then'](function(_0x8b70df){if(_0x8b70df){_0x3e9916=_0x8b70df[_0xd045('0x4b')];if(!_0x13a4f4[_0xd045('0x45')]['hasOwnProperty'](_0xd045('0x4c'))){_0x335324['limit']=qs[_0xd045('0x30')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x30')]);_0x335324[_0xd045('0x2e')]=qs[_0xd045('0x2e')](_0x13a4f4[_0xd045('0x45')][_0xd045('0x2e')]);}return _0x1f6974[_0xd045('0xc1')](_0x335324);}})['then'](function(_0x43f3c5){if(_0x43f3c5){return _0x43f3c5?{'count':_0x3e9916,'rows':_0x43f3c5}:null;}})[_0xd045('0x20')](respondWithResult(_0x182b0d,null))[_0xd045('0x2a')](handleError(_0x182b0d,null));};
\ No newline at end of file
+var _0xd124=['options','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','keys','rawAttributes','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','FaxAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','order','pick','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','findOne','CmContact','Contact','User','fullname','internal','Tag','tag','addApplications','sequelize','Transaction','READ_COMMITTED','FaxApplication','finally','json','getApplications','context','from-voip-provider','exten','localstationid','system','description','Fax\x20Extension','priority','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','modem','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','transaction','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','List','Contacts','DESC','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','filename','Contact\x20not\x20found','spread','ContactId','Messages','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','isArray','userFaxAccount:remove','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','UserProfileResource','end','stack','name','send','index','Pause','map','FaxAccount','fieldName','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','filter','where','merge','type','VIRTUAL'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0xd124,0x74));var _0x4d12=function(_0x38efde,_0x3b323d){_0x38efde=_0x38efde-0x0;var _0x2dc567=_0xd124[_0x38efde];return _0x2dc567;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d12('0x0'));var zipdir=require(_0x4d12('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d12('0x2'));var moment=require(_0x4d12('0x3'));var BPromise=require(_0x4d12('0x4'));var Mustache=require(_0x4d12('0x5'));var util=require(_0x4d12('0x6'));var path=require(_0x4d12('0x7'));var sox=require(_0x4d12('0x8'));var csv=require('to-csv');var ejs=require(_0x4d12('0x9'));var fs=require('fs');var fs_extra=require(_0x4d12('0xa'));var _=require(_0x4d12('0xb'));var squel=require(_0x4d12('0xc'));var crypto=require(_0x4d12('0xd'));var jsforce=require(_0x4d12('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4d12('0xf'));var querystring=require(_0x4d12('0x10'));var Papa=require(_0x4d12('0x11'));var Redis=require(_0x4d12('0x12'));var authService=require(_0x4d12('0x13'));var qs=require(_0x4d12('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4d12('0x15'))(_0x4d12('0x16'));var utils=require(_0x4d12('0x17'));var config=require(_0x4d12('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d12('0x19'))['db'];config[_0x4d12('0x1a')]=_[_0x4d12('0x1b')](config['redis'],{'host':_0x4d12('0x1c'),'port':0x18eb});var socket=require(_0x4d12('0x1d'))(new Redis(config[_0x4d12('0x1a')]));require(_0x4d12('0x1e'))['register'](socket);var jayson=require(_0x4d12('0x1f'));var client=jayson[_0x4d12('0x20')][_0x4d12('0x21')]({'port':0x232c});var client9002=jayson[_0x4d12('0x20')][_0x4d12('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x389b8d,_0x34f57b,_0x4555dc,_0x4ff4e9){return new BPromise(function(_0x332409,_0x56a478){var _0x46a188=_0x4ff4e9||client;return _0x46a188[_0x4d12('0x22')](_0x389b8d,_0x4555dc)[_0x4d12('0x23')](function(_0x3a0a39){logger[_0x4d12('0x24')](_0x4d12('0x25'),_0x34f57b,'request\x20sent');logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x34f57b,_0x4d12('0x26'),JSON[_0x4d12('0x27')](_0x3a0a39));if(_0x3a0a39[_0x4d12('0x28')]){if(_0x3a0a39[_0x4d12('0x28')]['code']===0x1f4){logger[_0x4d12('0x28')](_0x4d12('0x25'),_0x34f57b,_0x3a0a39[_0x4d12('0x28')][_0x4d12('0x29')]);return _0x56a478(_0x3a0a39['error']['message']);}logger[_0x4d12('0x28')](_0x4d12('0x25'),_0x34f57b,_0x3a0a39[_0x4d12('0x28')][_0x4d12('0x29')]);return _0x332409(_0x3a0a39[_0x4d12('0x28')][_0x4d12('0x29')]);}else{logger[_0x4d12('0x24')](_0x4d12('0x25'),_0x34f57b,_0x4d12('0x26'));_0x332409(_0x3a0a39[_0x4d12('0x2a')][_0x4d12('0x29')]);}})[_0x4d12('0x2b')](function(_0x26b97a){logger[_0x4d12('0x28')]('FaxAccount,\x20%s,\x20%s',_0x34f57b,_0x26b97a);_0x56a478(_0x26b97a);});});}function respondWithStatusCode(_0x2366e7,_0x36a583){_0x36a583=_0x36a583||0xcc;return function(_0x3f5711){if(_0x3f5711){return _0x2366e7[_0x4d12('0x2c')](_0x36a583);}return _0x2366e7[_0x4d12('0x2d')](_0x36a583)['end']();};}function respondWithResult(_0xbbb3ee,_0x1732cf){_0x1732cf=_0x1732cf||0xc8;return function(_0x5d8e2a){if(_0x5d8e2a){return _0xbbb3ee[_0x4d12('0x2d')](_0x1732cf)['json'](_0x5d8e2a);}};}function respondWithFilteredResult(_0x5bb401,_0x356389){return function(_0x28d62a){if(_0x28d62a){var _0x428d87=typeof _0x356389['offset']===_0x4d12('0x2e')&&typeof _0x356389['limit']===_0x4d12('0x2e');var _0x309178=_0x28d62a[_0x4d12('0x2f')];var _0x12b9df=_0x428d87?0x0:_0x356389['offset'];var _0x2504e8=_0x428d87?_0x28d62a['count']:_0x356389[_0x4d12('0x30')]+_0x356389['limit'];var _0x493540;if(_0x2504e8>=_0x309178){_0x2504e8=_0x309178;_0x493540=0xc8;}else{_0x493540=0xce;}_0x5bb401[_0x4d12('0x2d')](_0x493540);return _0x5bb401[_0x4d12('0x31')](_0x4d12('0x32'),_0x12b9df+'-'+_0x2504e8+'/'+_0x309178)['json'](_0x28d62a);}return null;};}function patchUpdates(_0x35dd9b){return function(_0x384b50){try{jsonpatch[_0x4d12('0x33')](_0x384b50,_0x35dd9b,!![]);}catch(_0x4f7c34){return BPromise[_0x4d12('0x34')](_0x4f7c34);}return _0x384b50[_0x4d12('0x35')]();};}function saveUpdates(_0x347cb0,_0x6e47f8){return function(_0xaeeda5){if(_0xaeeda5){return _0xaeeda5[_0x4d12('0x36')](_0x347cb0)[_0x4d12('0x23')](function(_0x5b7995){return _0x5b7995;});}return null;};}function removeEntity(_0x4cb9a4,_0x3f3bdb){return function(_0x3987b9){if(_0x3987b9){return _0x3987b9[_0x4d12('0x37')]()[_0x4d12('0x23')](function(){var _0x393cb3=_0x3987b9['get']({'plain':!![]});var _0x5bdd89='FaxAccounts';return db[_0x4d12('0x38')][_0x4d12('0x37')]({'where':{'type':_0x5bdd89,'resourceId':_0x393cb3['id']}})[_0x4d12('0x23')](function(){return _0x3987b9;});})['then'](function(){_0x4cb9a4['status'](0xcc)[_0x4d12('0x39')]();});}};}function handleEntityNotFound(_0x35c972,_0x1b19dd){return function(_0x4bfc74){if(!_0x4bfc74){_0x35c972[_0x4d12('0x2c')](0x194);}return _0x4bfc74;};}function handleError(_0x45a28c,_0x1989f3){_0x1989f3=_0x1989f3||0x1f4;return function(_0x3014a5){logger[_0x4d12('0x28')](_0x3014a5[_0x4d12('0x3a')]);if(_0x3014a5['name']){delete _0x3014a5[_0x4d12('0x3b')];}_0x45a28c[_0x4d12('0x2d')](_0x1989f3)[_0x4d12('0x3c')](_0x3014a5);};}exports[_0x4d12('0x3d')]=function(_0x460ea2,_0x14ffde){var _0x45a173={'include':[{'model':db[_0x4d12('0x3e')],'as':'mandatoryDispositionPause'}]},_0x3212ee={},_0x1b2603={'count':0x0,'rows':[]};var _0x46f89e=_[_0x4d12('0x3f')](db[_0x4d12('0x40')]['rawAttributes'],function(_0x120195){return{'name':_0x120195[_0x4d12('0x41')],'type':_0x120195['type'][_0x4d12('0x42')]};});_0x3212ee['model']=_[_0x4d12('0x3f')](_0x46f89e,_0x4d12('0x3b'));_0x3212ee[_0x4d12('0x43')]=_['keys'](_0x460ea2[_0x4d12('0x43')]);_0x3212ee[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x3212ee[_0x4d12('0x46')],_0x3212ee[_0x4d12('0x43')]);_0x45a173['attributes']=_[_0x4d12('0x45')](_0x3212ee[_0x4d12('0x46')],qs[_0x4d12('0x47')](_0x460ea2[_0x4d12('0x43')][_0x4d12('0x47')]));_0x45a173[_0x4d12('0x48')]=_0x45a173[_0x4d12('0x48')][_0x4d12('0x49')]?_0x45a173['attributes']:_0x3212ee[_0x4d12('0x46')];if(!_0x460ea2['query'][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x45a173[_0x4d12('0x4c')]=qs[_0x4d12('0x4c')](_0x460ea2['query']['limit']);_0x45a173['offset']=qs['offset'](_0x460ea2[_0x4d12('0x43')]['offset']);}_0x45a173['order']=qs['sort'](_0x460ea2[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x45a173['where']=qs['filters'](_['pick'](_0x460ea2['query'],_0x3212ee[_0x4d12('0x44')]),_0x46f89e);if(_0x460ea2[_0x4d12('0x43')][_0x4d12('0x4e')]){_0x45a173[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x45a173[_0x4d12('0x4f')],{'$or':_['map'](_0x46f89e,function(_0x490ce6){if(_0x490ce6[_0x4d12('0x51')]!==_0x4d12('0x52')){var _0x5ac7c5={};_0x5ac7c5[_0x490ce6[_0x4d12('0x3b')]]={'$like':'%'+_0x460ea2[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0x5ac7c5;}})});}_0x45a173=_['merge']({},_0x45a173,_0x460ea2[_0x4d12('0x53')]);var _0x366542={'where':_0x45a173['where']};return db[_0x4d12('0x40')][_0x4d12('0x2f')](_0x366542)[_0x4d12('0x23')](function(_0x39c0b7){_0x1b2603['count']=_0x39c0b7;if(_0x460ea2[_0x4d12('0x43')][_0x4d12('0x54')]){_0x45a173[_0x4d12('0x55')]=[{'all':!![]}];}return db[_0x4d12('0x40')][_0x4d12('0x56')](_0x45a173);})[_0x4d12('0x23')](function(_0x3a4561){_0x1b2603[_0x4d12('0x57')]=_0x3a4561;return _0x1b2603;})[_0x4d12('0x23')](respondWithFilteredResult(_0x14ffde,_0x45a173))[_0x4d12('0x2b')](handleError(_0x14ffde,null));};exports[_0x4d12('0x58')]=function(_0x123e51,_0x1407f4){var _0x5df300={'raw':![],'where':{'id':_0x123e51[_0x4d12('0x59')]['id']},'include':[{'model':db[_0x4d12('0x3e')],'as':_0x4d12('0x5a')}]},_0x426fb7={};_0x426fb7[_0x4d12('0x46')]=_[_0x4d12('0x5b')](db['FaxAccount'][_0x4d12('0x5c')]);_0x426fb7[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x123e51[_0x4d12('0x43')]);_0x426fb7[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x426fb7[_0x4d12('0x46')],_0x426fb7[_0x4d12('0x43')]);_0x5df300['attributes']=_['intersection'](_0x426fb7[_0x4d12('0x46')],qs[_0x4d12('0x47')](_0x123e51[_0x4d12('0x43')][_0x4d12('0x47')]));_0x5df300[_0x4d12('0x48')]=_0x5df300[_0x4d12('0x48')][_0x4d12('0x49')]?_0x5df300[_0x4d12('0x48')]:_0x426fb7['model'];if(_0x123e51[_0x4d12('0x43')][_0x4d12('0x54')]){_0x5df300[_0x4d12('0x55')]=[{'all':!![]}];}_0x5df300=_[_0x4d12('0x50')]({},_0x5df300,_0x123e51['options']);return db[_0x4d12('0x40')][_0x4d12('0x5d')](_0x5df300)[_0x4d12('0x23')](handleEntityNotFound(_0x1407f4,null))[_0x4d12('0x23')](respondWithResult(_0x1407f4,null))[_0x4d12('0x2b')](handleError(_0x1407f4,null));};exports[_0x4d12('0x5e')]=function(_0x5c243e,_0x3b3554){return db[_0x4d12('0x40')][_0x4d12('0x5e')](_0x5c243e[_0x4d12('0x5f')],{})[_0x4d12('0x23')](function(_0x54330b){var _0xd22529=_0x5c243e['user'][_0x4d12('0x60')]({'plain':!![]});if(!_0xd22529)throw new Error(_0x4d12('0x61'));if(_0xd22529['role']===_0x4d12('0x62')){var _0x4e86f5=_0x54330b[_0x4d12('0x60')]({'plain':!![]});var _0x4520ea=_0x4d12('0x63');return db['UserProfileSection'][_0x4d12('0x5d')]({'where':{'name':_0x4520ea,'userProfileId':_0xd22529[_0x4d12('0x64')]},'raw':!![]})[_0x4d12('0x23')](function(_0x33ea66){if(_0x33ea66&&_0x33ea66[_0x4d12('0x65')]===0x0){return db[_0x4d12('0x38')][_0x4d12('0x5e')]({'name':_0x4e86f5['name'],'resourceId':_0x4e86f5['id'],'type':_0x33ea66[_0x4d12('0x3b')],'sectionId':_0x33ea66['id']},{})['then'](function(){return _0x54330b;});}else{return _0x54330b;}})[_0x4d12('0x2b')](function(_0x2e4fde){logger['error'](_0x4d12('0x66'),_0x2e4fde);throw _0x2e4fde;});}return _0x54330b;})[_0x4d12('0x23')](respondWithResult(_0x3b3554,0xc9))[_0x4d12('0x2b')](handleError(_0x3b3554,null));};exports[_0x4d12('0x36')]=function(_0x5e516f,_0x4e4493){if(_0x5e516f['body']['id']){delete _0x5e516f['body']['id'];}return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x5e516f[_0x4d12('0x59')]['id']},'include':[{'model':db[_0x4d12('0x3e')],'as':_0x4d12('0x5a')}]})['then'](handleEntityNotFound(_0x4e4493,null))[_0x4d12('0x23')](saveUpdates(_0x5e516f[_0x4d12('0x5f')],null))['then'](respondWithResult(_0x4e4493,null))[_0x4d12('0x2b')](handleError(_0x4e4493,null));};exports[_0x4d12('0x37')]=function(_0x1d2e62,_0x461b2f){return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x1d2e62[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x461b2f,null))[_0x4d12('0x23')](removeEntity(_0x461b2f,null))[_0x4d12('0x2b')](handleError(_0x461b2f,null));};exports['describe']=function(_0x4f84dc,_0x18362e){return db['FaxAccount'][_0x4d12('0x67')]()['then'](respondWithResult(_0x18362e,null))[_0x4d12('0x2b')](handleError(_0x18362e,null));};exports[_0x4d12('0x68')]=function(_0x354892,_0x124c33,_0x509822){if(_0x354892[_0x4d12('0x5f')]['id']){delete _0x354892[_0x4d12('0x5f')]['id'];}return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x354892['params']['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x124c33,null))[_0x4d12('0x23')](function(_0x4e72f1){if(_0x4e72f1){_0x354892[_0x4d12('0x5f')][_0x4d12('0x69')]=_0x4e72f1['id'];return db[_0x4d12('0x6a')]['create'](_0x354892[_0x4d12('0x5f')]);}})[_0x4d12('0x23')](respondWithResult(_0x124c33,null))[_0x4d12('0x2b')](handleError(_0x124c33,null));};exports[_0x4d12('0x6b')]=function(_0x5a6600,_0x5e3089,_0x57e59f){var _0x4f7d64={'raw':![],'where':{}};var _0x55f0b={};var _0x1633bc={'count':0x0,'rows':[]};return db[_0x4d12('0x40')]['findOne']({'where':{'id':_0x5a6600[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x5e3089,null))[_0x4d12('0x23')](function(_0x2dcaac){if(_0x2dcaac){_0x55f0b[_0x4d12('0x46')]=_[_0x4d12('0x5b')](db['Disposition']['rawAttributes']);_0x55f0b[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x5a6600[_0x4d12('0x43')]);_0x55f0b[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x55f0b[_0x4d12('0x46')],_0x55f0b['query']);_0x4f7d64[_0x4d12('0x48')]=_['intersection'](_0x55f0b[_0x4d12('0x46')],qs[_0x4d12('0x47')](_0x5a6600[_0x4d12('0x43')][_0x4d12('0x47')]));_0x4f7d64[_0x4d12('0x48')]=_0x4f7d64[_0x4d12('0x48')]['length']?_0x4f7d64[_0x4d12('0x48')]:_0x55f0b['model'];if(!_0x5a6600[_0x4d12('0x43')][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x4f7d64['limit']=qs['limit'](_0x5a6600['query'][_0x4d12('0x4c')]);_0x4f7d64[_0x4d12('0x30')]=qs['offset'](_0x5a6600[_0x4d12('0x43')][_0x4d12('0x30')]);}_0x4f7d64[_0x4d12('0x6c')]=qs[_0x4d12('0x4d')](_0x5a6600[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x4f7d64[_0x4d12('0x4f')]=qs[_0x4d12('0x44')](_[_0x4d12('0x6d')](_0x5a6600[_0x4d12('0x43')],_0x55f0b[_0x4d12('0x44')]));_0x4f7d64[_0x4d12('0x4f')][_0x4d12('0x69')]=_0x2dcaac['id'];if(_0x5a6600[_0x4d12('0x43')][_0x4d12('0x4e')]){_0x4f7d64[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x4f7d64['where'],{'$or':_['map'](_0x4f7d64['attributes'],function(_0x535311){var _0x419564={};_0x419564[_0x535311]={'$like':'%'+_0x5a6600[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0x419564;})});}_0x4f7d64=_[_0x4d12('0x50')]({},_0x4f7d64,_0x5a6600['options']);return db[_0x4d12('0x6a')][_0x4d12('0x2f')]({'where':_0x4f7d64[_0x4d12('0x4f')]})[_0x4d12('0x23')](function(_0x1818d6){_0x1633bc[_0x4d12('0x2f')]=_0x1818d6;if(_0x5a6600[_0x4d12('0x43')][_0x4d12('0x54')]){_0x4f7d64[_0x4d12('0x55')]=[{'all':!![]}];}return db[_0x4d12('0x6a')]['findAll'](_0x4f7d64);})[_0x4d12('0x23')](function(_0x2035ac){_0x1633bc['rows']=_0x2035ac;return _0x1633bc;});}})[_0x4d12('0x23')](respondWithFilteredResult(_0x5e3089,_0x4f7d64))[_0x4d12('0x2b')](handleError(_0x5e3089,null));};exports[_0x4d12('0x6e')]=function(_0x453b4,_0x1659e9,_0x573a90){return db[_0x4d12('0x40')]['find']({'where':{'id':_0x453b4[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x1659e9,null))[_0x4d12('0x23')](function(_0xd50f82){if(_0xd50f82){return _0xd50f82[_0x4d12('0x6e')](_0x453b4[_0x4d12('0x43')][_0x4d12('0x6f')]);}})['then'](respondWithStatusCode(_0x1659e9,null))[_0x4d12('0x2b')](handleError(_0x1659e9,null));};exports[_0x4d12('0x70')]=function(_0x3aa782,_0x59346a,_0x32b72c){if(_0x3aa782[_0x4d12('0x5f')]['id']){delete _0x3aa782[_0x4d12('0x5f')]['id'];}return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x3aa782[_0x4d12('0x59')]['id']}})['then'](handleEntityNotFound(_0x59346a,null))[_0x4d12('0x23')](function(_0x2218fb){if(_0x2218fb){_0x3aa782[_0x4d12('0x5f')][_0x4d12('0x69')]=_0x2218fb['id'];return db[_0x4d12('0x71')][_0x4d12('0x5e')](_0x3aa782['body']);}})[_0x4d12('0x23')](respondWithResult(_0x59346a,null))[_0x4d12('0x2b')](handleError(_0x59346a,null));};exports['getAnswers']=function(_0x5c4243,_0x2b1e29,_0x51ece2){var _0x2bdfda={'raw':![],'where':{}};var _0x2bf55f={};var _0x319ed4={'count':0x0,'rows':[]};return db[_0x4d12('0x40')]['findOne']({'where':{'id':_0x5c4243[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x2b1e29,null))['then'](function(_0x1c1b97){if(_0x1c1b97){_0x2bf55f[_0x4d12('0x46')]=_['keys'](db[_0x4d12('0x71')]['rawAttributes']);_0x2bf55f[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x5c4243['query']);_0x2bf55f[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x2bf55f[_0x4d12('0x46')],_0x2bf55f[_0x4d12('0x43')]);_0x2bdfda['attributes']=_['intersection'](_0x2bf55f[_0x4d12('0x46')],qs['fields'](_0x5c4243[_0x4d12('0x43')][_0x4d12('0x47')]));_0x2bdfda[_0x4d12('0x48')]=_0x2bdfda[_0x4d12('0x48')]['length']?_0x2bdfda[_0x4d12('0x48')]:_0x2bf55f[_0x4d12('0x46')];if(!_0x5c4243[_0x4d12('0x43')][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x2bdfda[_0x4d12('0x4c')]=qs['limit'](_0x5c4243[_0x4d12('0x43')][_0x4d12('0x4c')]);_0x2bdfda[_0x4d12('0x30')]=qs['offset'](_0x5c4243['query']['offset']);}_0x2bdfda[_0x4d12('0x6c')]=qs['sort'](_0x5c4243[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x2bdfda[_0x4d12('0x4f')]=qs[_0x4d12('0x44')](_[_0x4d12('0x6d')](_0x5c4243[_0x4d12('0x43')],_0x2bf55f[_0x4d12('0x44')]));_0x2bdfda['where'][_0x4d12('0x69')]=_0x1c1b97['id'];if(_0x5c4243[_0x4d12('0x43')]['filter']){_0x2bdfda[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x2bdfda[_0x4d12('0x4f')],{'$or':_[_0x4d12('0x3f')](_0x2bdfda[_0x4d12('0x48')],function(_0x2503d3){var _0x3a20b1={};_0x3a20b1[_0x2503d3]={'$like':'%'+_0x5c4243[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0x3a20b1;})});}_0x2bdfda=_[_0x4d12('0x50')]({},_0x2bdfda,_0x5c4243[_0x4d12('0x53')]);return db[_0x4d12('0x71')][_0x4d12('0x2f')]({'where':_0x2bdfda['where']})[_0x4d12('0x23')](function(_0x113de6){_0x319ed4[_0x4d12('0x2f')]=_0x113de6;if(_0x5c4243['query']['includeAll']){_0x2bdfda[_0x4d12('0x55')]=[{'all':!![]}];}return db[_0x4d12('0x71')]['findAll'](_0x2bdfda);})[_0x4d12('0x23')](function(_0xbb0734){_0x319ed4[_0x4d12('0x57')]=_0xbb0734;return _0x319ed4;});}})[_0x4d12('0x23')](respondWithFilteredResult(_0x2b1e29,_0x2bdfda))[_0x4d12('0x2b')](handleError(_0x2b1e29,null));};exports[_0x4d12('0x72')]=function(_0x384453,_0x2595c6,_0x5eb04b){return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x384453[_0x4d12('0x59')]['id']}})['then'](handleEntityNotFound(_0x2595c6,null))[_0x4d12('0x23')](function(_0x33bd5e){if(_0x33bd5e){return _0x33bd5e[_0x4d12('0x72')](_0x384453[_0x4d12('0x43')][_0x4d12('0x6f')]);}})[_0x4d12('0x23')](respondWithStatusCode(_0x2595c6,null))[_0x4d12('0x2b')](handleError(_0x2595c6,null));};exports[_0x4d12('0x73')]=function(_0x27f1ac,_0x4a234e,_0x542b41){return db[_0x4d12('0x74')][_0x4d12('0x5d')]({'where':{'id':_0x27f1ac[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x4a234e,null))['then'](function(_0x4e1a5d){if(_0x4e1a5d){return _0x4e1a5d[_0x4d12('0x73')](_0x27f1ac[_0x4d12('0x5f')]['ids'],_[_0x4d12('0x75')](_0x27f1ac[_0x4d12('0x5f')],[_0x4d12('0x6f'),'id'])||{});}})[_0x4d12('0x23')](respondWithResult(_0x4a234e,null))['catch'](handleError(_0x4a234e,null));};exports[_0x4d12('0x76')]=function(_0x4e0969,_0x2be677,_0x49460f){var _0x284278={'raw':![],'where':{}};var _0x3d60d0={};var _0x139499={'count':0x0,'rows':[]};return db['FaxAccount'][_0x4d12('0x77')]({'where':{'id':_0x4e0969['params']['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x2be677,null))['then'](function(_0x7c1e72){if(_0x7c1e72){_0x3d60d0['model']=_[_0x4d12('0x5b')](db[_0x4d12('0x74')][_0x4d12('0x5c')]);_0x3d60d0[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x4e0969['query']);_0x3d60d0[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x3d60d0[_0x4d12('0x46')],_0x3d60d0[_0x4d12('0x43')]);_0x284278[_0x4d12('0x48')]=_[_0x4d12('0x45')](_0x3d60d0['model'],qs[_0x4d12('0x47')](_0x4e0969[_0x4d12('0x43')][_0x4d12('0x47')]));_0x284278['attributes']=_0x284278[_0x4d12('0x48')][_0x4d12('0x49')]?_0x284278[_0x4d12('0x48')]:_0x3d60d0[_0x4d12('0x46')];if(!_0x4e0969[_0x4d12('0x43')][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x284278[_0x4d12('0x4c')]=qs[_0x4d12('0x4c')](_0x4e0969[_0x4d12('0x43')]['limit']);_0x284278[_0x4d12('0x30')]=qs[_0x4d12('0x30')](_0x4e0969['query']['offset']);}_0x284278[_0x4d12('0x6c')]=qs['sort'](_0x4e0969[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x284278[_0x4d12('0x4f')]=qs[_0x4d12('0x44')](_['pick'](_0x4e0969[_0x4d12('0x43')],_0x3d60d0['filters']));_0x284278[_0x4d12('0x4f')][_0x4d12('0x69')]=_0x7c1e72['id'];if(_0x4e0969[_0x4d12('0x43')][_0x4d12('0x4e')]){_0x284278[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x284278[_0x4d12('0x4f')],{'$or':_[_0x4d12('0x3f')](_0x284278[_0x4d12('0x48')],function(_0x2b2f47){var _0x183558={};_0x183558[_0x2b2f47]={'$like':'%'+_0x4e0969['query'][_0x4d12('0x4e')]+'%'};return _0x183558;})});}_0x284278=_['merge']({},_0x284278,_0x4e0969[_0x4d12('0x53')]);return db[_0x4d12('0x74')][_0x4d12('0x2f')]({'where':_0x284278[_0x4d12('0x4f')]})[_0x4d12('0x23')](function(_0x21494a){_0x139499[_0x4d12('0x2f')]=_0x21494a;if(_0x4e0969['query']['includeAll']){_0x284278[_0x4d12('0x55')]=[{'model':db[_0x4d12('0x78')],'as':_0x4d12('0x79'),'required':![]},{'model':db[_0x4d12('0x7a')],'as':'Owner','attributes':[_0x4d12('0x3b'),_0x4d12('0x7b'),_0x4d12('0x7c')],'required':![]},{'model':db[_0x4d12('0x7d')],'as':'Tags','attributes':['id',_0x4d12('0x3b'),'color'],'where':_0x4e0969[_0x4d12('0x43')][_0x4d12('0x7e')]?{'id':_0x4e0969[_0x4d12('0x43')]['tag']}:undefined,'required':_0x4e0969['query']['tag']?!![]:![]}];}return db[_0x4d12('0x74')][_0x4d12('0x56')](_0x284278);})['then'](function(_0x28cb6e){_0x139499[_0x4d12('0x57')]=_0x28cb6e;return _0x139499;});}})[_0x4d12('0x23')](respondWithFilteredResult(_0x2be677,_0x284278))[_0x4d12('0x2b')](handleError(_0x2be677,null));};exports[_0x4d12('0x7f')]=function(_0x2dbc95,_0x483681){var _0x586de5=_0x2dbc95['params']['id'];var _0x1195d7=_0x2dbc95[_0x4d12('0x5f')];var _0x1dcf64=0xc8;var _0x45ae5d=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x4d12('0x80')][_0x4d12('0x81')]['ISOLATION_LEVELS'][_0x4d12('0x82')]},function(_0x266f71){return db[_0x4d12('0x40')][_0x4d12('0x77')]({'where':{'id':_0x586de5},'transaction':_0x266f71})['then'](function(_0x4acd5d){if(_0x4acd5d){return db['FaxApplication'][_0x4d12('0x37')]({'where':{'FaxAccountId':_0x586de5},'transaction':_0x266f71})[_0x4d12('0x23')](function(){var _0xeef1f0=_[_0x4d12('0x3f')](_0x1195d7,function(_0x3b122f){_0x3b122f[_0x4d12('0x69')]=_0x586de5;return _0x3b122f;});return db['FaxApplication']['bulkCreate'](_0xeef1f0,{'transaction':_0x266f71});});}else{_0x1dcf64=0x194;_0x45ae5d=[];}});})[_0x4d12('0x23')](function(){if(_0x1dcf64!==0x194){return db[_0x4d12('0x83')]['findAndCountAll']({'where':{'FaxAccountId':_0x586de5},'order':'priority'})['then'](function(_0x14b2a9){_0x45ae5d=_0x14b2a9;});}})[_0x4d12('0x2b')](function(_0x26cc59){_0x1dcf64=0x1f4;logger['error'](_0x26cc59[_0x4d12('0x3a')]);if(_0x26cc59[_0x4d12('0x3b')]){delete _0x26cc59[_0x4d12('0x3b')];}_0x45ae5d=_0x26cc59;})[_0x4d12('0x84')](function(){if(_0x45ae5d===null){_0x483681['sendStatus'](_0x1dcf64);}else{if(_0x1dcf64===0x1f4){_0x483681[_0x4d12('0x2d')](_0x1dcf64)['send'](_0x45ae5d);}else{_0x483681['status'](_0x1dcf64)[_0x4d12('0x85')](_0x45ae5d);}}});};exports[_0x4d12('0x86')]=function(_0x29b291,_0x17c511,_0x53ebe0){var _0x503f20={};var _0x35b9f3={};var _0x4f5169;var _0x3cb207;return db['FaxAccount'][_0x4d12('0x77')]({'where':{'id':_0x29b291[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x17c511,null))[_0x4d12('0x23')](function(_0x675092){if(_0x675092){_0x4f5169=_0x675092;_0x35b9f3['model']=_[_0x4d12('0x5b')](db['FaxApplication'][_0x4d12('0x5c')]);_0x35b9f3[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x29b291[_0x4d12('0x43')]);_0x35b9f3[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x35b9f3[_0x4d12('0x46')],_0x35b9f3[_0x4d12('0x43')]);_0x503f20[_0x4d12('0x48')]=_[_0x4d12('0x45')](_0x35b9f3['model'],qs['fields'](_0x29b291[_0x4d12('0x43')][_0x4d12('0x47')]));_0x503f20['attributes']=_0x503f20[_0x4d12('0x48')]['length']?_0x503f20[_0x4d12('0x48')]:_0x35b9f3[_0x4d12('0x46')];_0x503f20[_0x4d12('0x6c')]=qs['sort'](_0x29b291[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x503f20[_0x4d12('0x4f')]=qs[_0x4d12('0x44')](_[_0x4d12('0x6d')](_0x29b291[_0x4d12('0x43')],_0x35b9f3[_0x4d12('0x44')]));if(_0x29b291[_0x4d12('0x43')][_0x4d12('0x4e')]){_0x503f20['where']=_['merge'](_0x503f20[_0x4d12('0x4f')],{'$or':_[_0x4d12('0x3f')](_0x503f20['attributes'],function(_0x426823){var _0x2c1df3={};_0x2c1df3[_0x426823]={'$like':'%'+_0x29b291[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0x2c1df3;})});}_0x503f20=_[_0x4d12('0x50')]({},_0x503f20,_0x29b291[_0x4d12('0x53')]);return _0x4f5169[_0x4d12('0x86')](_0x503f20);}})[_0x4d12('0x23')](function(_0x3d555f){if(_0x3d555f){_0x3cb207=_0x3d555f[_0x4d12('0x49')];if(!_0x29b291['query'][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x503f20['limit']=qs[_0x4d12('0x4c')](_0x29b291['query'][_0x4d12('0x4c')]);_0x503f20[_0x4d12('0x30')]=qs[_0x4d12('0x30')](_0x29b291['query'][_0x4d12('0x30')]);}return _0x4f5169[_0x4d12('0x86')](_0x503f20);}})[_0x4d12('0x23')](function(_0x499eae){if(_0x499eae){return _0x499eae?{'count':_0x3cb207,'rows':_0x499eae}:null;}})['then'](respondWithResult(_0x17c511,null))['catch'](handleError(_0x17c511,null));};function Extension(_0x1b67a0,_0x4e8f8a,_0x4b2e8b,_0x250394){this[_0x4d12('0x87')]=_0x4d12('0x88');this[_0x4d12('0x89')]=_0x1b67a0[_0x4d12('0x8a')];this['app']=_0x250394;this['type']=_0x4d12('0x8b');this[_0x4d12('0x8c')]=_0x4d12('0x8d');this[_0x4d12('0x69')]=_0x1b67a0['id'];this[_0x4d12('0x8e')]=_0x4e8f8a;this[_0x4d12('0x8f')]=_0x4b2e8b;}function createExtensionsReciveFax(_0x4c4ea2){var _0x1e1312=0x1;var _0x1364cd=[];_0x1364cd[_0x4d12('0x90')](new Extension(_0x4c4ea2,_0x1e1312,'',_0x4d12('0x91')));_0x1e1312+=0x1;_0x1364cd[_0x4d12('0x90')](new Extension(_0x4c4ea2,_0x1e1312,_0x4d12('0x92'),_0x4d12('0x93')));_0x1e1312+=0x1;for(var _0x195a57 in _0x4c4ea2){if(_0x4c4ea2[_0x4d12('0x4a')](_0x195a57)&&(_0x195a57===_0x4d12('0x94')||_0x195a57===_0x4d12('0x8a')||_0x195a57===_0x4d12('0x95')||_0x195a57===_0x4d12('0x96')||_0x195a57===_0x4d12('0x97')||_0x195a57==='maxrate'||_0x195a57==='minrate'||_0x195a57===_0x4d12('0x98')||_0x195a57==='t38timeout')){_0x1364cd[_0x4d12('0x90')](new Extension(_0x4c4ea2,_0x1e1312,'FAXOPT('+_0x195a57+')='+_0x4c4ea2[_0x195a57],_0x4d12('0x93')));_0x1e1312+=0x1;}}_0x1364cd['push'](new Extension(_0x4c4ea2,_0x1e1312,'6',_0x4d12('0x99')));_0x1e1312+=0x1;_0x1364cd['push'](new Extension(_0x4c4ea2,_0x1e1312,_0x4d12('0x9a'),_0x4d12('0x9b')));_0x1e1312=0x0;return _0x1364cd;}exports[_0x4d12('0x9c')]=function(_0x37b1ef,_0x1a40dd,_0x197c46){var _0x306385;return db[_0x4d12('0x80')]['transaction'](function(_0x44885d){return db[_0x4d12('0x40')][_0x4d12('0x5e')](_0x37b1ef[_0x4d12('0x5f')],{'transaction':_0x44885d})['then'](function(_0x38b990){_0x306385=_0x38b990[_0x4d12('0x60')]({'plain':!![]});return db[_0x4d12('0x9d')][_0x4d12('0x9e')](createExtensionsReciveFax(_0x306385),{'transaction':_0x44885d});});})[_0x4d12('0x23')](function(){return _0x306385;})[_0x4d12('0x23')](respondWithResult(_0x1a40dd,null))[_0x4d12('0x2b')](handleError(_0x1a40dd,null));};exports[_0x4d12('0x9f')]=function(_0x1da098,_0x16550b,_0x4d1fa7){var _0x5dad6c;return db[_0x4d12('0x80')][_0x4d12('0xa0')](function(_0x5a6f5e){return db[_0x4d12('0x40')]['update'](_0x1da098[_0x4d12('0x5f')],{'where':{'id':_0x1da098['body']['id']},'transaction':_0x5a6f5e})['then'](function(_0x227d59){return db['VoiceExtension'][_0x4d12('0x37')]({'where':{'FaxAccountId':_0x1da098[_0x4d12('0x5f')]['id']},'transaction':_0x5a6f5e})[_0x4d12('0x23')](function(_0xba476b){return db[_0x4d12('0x9d')][_0x4d12('0x9e')](createExtensionsReciveFax(_[_0x4d12('0x75')](_0x1da098[_0x4d12('0x5f')],[_0x4d12('0xa1'),'key',_0x4d12('0xa2'),_0x4d12('0xa3'),_0x4d12('0xa4'),_0x4d12('0xa5')])),{'transaction':_0x5a6f5e});});});})[_0x4d12('0x23')](function(){return db[_0x4d12('0x40')][_0x4d12('0xa6')](_0x1da098['body']['id']);})['then'](respondWithResult(_0x16550b,null))['catch'](handleError(_0x16550b,null));};exports[_0x4d12('0xa7')]=function(_0x3abfaf,_0x2c2b24,_0x37b66a){var _0x25eced={'raw':!![],'where':{}};var _0x43153a={};var _0xaa6ea0={'count':0x0,'rows':[]};return db[_0x4d12('0x40')][_0x4d12('0x77')]({'where':{'id':_0x3abfaf['params']['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x2c2b24,null))[_0x4d12('0x23')](function(_0x347cca){if(_0x347cca){_0x43153a[_0x4d12('0x46')]=_[_0x4d12('0x5b')](db[_0x4d12('0xa8')][_0x4d12('0x5c')]);_0x43153a['query']=_[_0x4d12('0x5b')](_0x3abfaf['query']);_0x43153a['filters']=_['intersection'](_0x43153a[_0x4d12('0x46')],_0x43153a['query']);_0x25eced['attributes']=_[_0x4d12('0x45')](_0x43153a[_0x4d12('0x46')],qs['fields'](_0x3abfaf[_0x4d12('0x43')][_0x4d12('0x47')]));_0x25eced[_0x4d12('0x48')]=_0x25eced['attributes']['length']?_0x25eced[_0x4d12('0x48')]:_0x43153a[_0x4d12('0x46')];if(!_0x3abfaf[_0x4d12('0x43')][_0x4d12('0x4a')](_0x4d12('0x4b'))){_0x25eced[_0x4d12('0x4c')]=qs[_0x4d12('0x4c')](_0x3abfaf[_0x4d12('0x43')]['limit']);_0x25eced['offset']=qs[_0x4d12('0x30')](_0x3abfaf[_0x4d12('0x43')][_0x4d12('0x30')]);}_0x25eced[_0x4d12('0x6c')]=qs['sort'](_0x3abfaf['query'][_0x4d12('0x4d')]);_0x25eced['where']=qs[_0x4d12('0x44')](_[_0x4d12('0x6d')](_0x3abfaf['query'],_0x43153a[_0x4d12('0x44')]));_0x25eced[_0x4d12('0x4f')]['FaxAccountId']=_0x347cca['id'];if(_0x3abfaf['query'][_0x4d12('0x4e')]){_0x25eced[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x25eced[_0x4d12('0x4f')],{'$or':_[_0x4d12('0x3f')](_0x25eced[_0x4d12('0x48')],function(_0x2521ee){var _0x366c57={};_0x366c57[_0x2521ee]={'$like':'%'+_0x3abfaf[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0x366c57;})});}if(_0x3abfaf[_0x4d12('0x43')][_0x4d12('0xa9')]){var _0x4bad47=_0x3abfaf[_0x4d12('0x43')][_0x4d12('0xa9')][_0x4d12('0xaa')](',');var _0x3672d6={};_0x3672d6[_0x4bad47[0x0]]={'$gte':moment(_0x4bad47[0x1])[_0x4d12('0xab')]('YYYY-MM-DD\x20HH:mm:ss')};_0x25eced[_0x4d12('0x4f')]=_[_0x4d12('0x50')](_0x25eced['where'],_0x3672d6);}_0x25eced=_[_0x4d12('0x50')]({},_0x25eced,_0x3abfaf[_0x4d12('0x53')]);return db[_0x4d12('0xa8')][_0x4d12('0x2f')]({'where':_0x25eced[_0x4d12('0x4f')]})[_0x4d12('0x23')](function(_0x3826a7){_0xaa6ea0['count']=_0x3826a7;if(_0x3abfaf['query']['includeAll']){_0x25eced[_0x4d12('0x55')]=[{'all':!![]}];}return db[_0x4d12('0xa8')][_0x4d12('0x56')](_0x25eced);})[_0x4d12('0x23')](function(_0x31c866){_0xaa6ea0['rows']=_0x31c866;return _0xaa6ea0;});}})['then'](respondWithFilteredResult(_0x2c2b24,_0x25eced))[_0x4d12('0x2b')](handleError(_0x2c2b24,null));};exports['send']=function(_0x25a338,_0x45196e,_0x2df597){var _0x51d42b,_0x2b101e={},_0x1d6f26;if(_0x25a338[_0x4d12('0x5f')]['to']){_0x1d6f26=_0x25a338['body']['to'][0x0];}return db[_0x4d12('0x40')]['find']({'where':{'id':_0x25a338[_0x4d12('0x59')]['id']},'include':[{'model':db['CmList'],'as':_0x4d12('0xac'),'include':[{'model':db[_0x4d12('0x78')],'as':_0x4d12('0xad'),'where':{'fax':_0x1d6f26},'limit':0x1,'order':[['updatedAt',_0x4d12('0xae')]]}]}]})[_0x4d12('0x23')](handleEntityNotFound(_0x45196e,null))[_0x4d12('0x23')](function(_0x3f4755){_0x51d42b=_0x3f4755;if(_0x25a338[_0x4d12('0x5f')][_0x4d12('0xaf')]&&_0x25a338['body'][_0x4d12('0xaf')]['length']){for(var _0x3dfcac=0x0;_0x3dfcac<_0x25a338[_0x4d12('0x5f')]['attachments'][_0x4d12('0x49')];_0x3dfcac+=0x1){_0x25a338[_0x4d12('0x5f')]['attachments'][_0x3dfcac]={'filename':_0x25a338[_0x4d12('0x5f')]['attachments'][_0x3dfcac][_0x4d12('0x3b')],'id':_0x25a338[_0x4d12('0x5f')]['attachments'][_0x3dfcac]['id'],'path':path[_0x4d12('0xb0')](config['root'],_0x4d12('0xb1'),_0x25a338['body'][_0x4d12('0xaf')][_0x3dfcac][_0x4d12('0xb2')])};}}return respondWithRpcPromise(_0x4d12('0xb3'),_0x4d12('0xb3'),{'FaxAccountId':_[_0x4d12('0xb4')](_0x25a338[_0x4d12('0x59')]['id'])?undefined:_0x25a338[_0x4d12('0x59')]['id'],'path':_[_0x4d12('0xb4')](_0x25a338[_0x4d12('0x5f')][_0x4d12('0xaf')][0x0]['path'])?undefined:_0x25a338[_0x4d12('0x5f')]['attachments'][0x0]['path'],'fax':_[_0x4d12('0xb4')](_0x25a338[_0x4d12('0x5f')]['to'][0x0])?undefined:_0x25a338['body']['to'][0x0]},client9002);})['then'](function(){if(_0x51d42b){if(_['isNil'](_0x25a338[_0x4d12('0x5f')][_0x4d12('0xb5')])){_0x25a338[_0x4d12('0x5f')][_0x4d12('0xb5')]=util[_0x4d12('0xab')](_0x4d12('0xb6'),_0x51d42b[_0x4d12('0x3b')],_0x51d42b[_0x4d12('0xb7')]);}if(_0x51d42b[_0x4d12('0xac')]){if(_0x51d42b[_0x4d12('0xac')][_0x4d12('0xad')][_0x4d12('0x49')]){return _0x51d42b[_0x4d12('0xac')][_0x4d12('0xad')][0x0];}else{return db['CmContact'][_0x4d12('0x5e')](_[_0x4d12('0x1b')](_0x25a338['body'],{'firstName':_0x25a338[_0x4d12('0x5f')]['to'][0x0],'phone':_0x25a338[_0x4d12('0x5f')]['to'][0x0],'fax':_0x25a338[_0x4d12('0x5f')]['to'][0x0],'ListId':_0x51d42b['ListId']}));}}else{throw new Error(_0x4d12('0xb8'));}}else{throw new Error(_0x4d12('0xb9'));}})[_0x4d12('0x23')](function(_0x2f16d3){if(_0x2f16d3){return db[_0x4d12('0x74')][_0x4d12('0x5d')]({'where':{'ContactId':_0x2f16d3['id'],'closed':![],'FaxAccountId':_0x51d42b['id']}})['then'](function(_0x41dd65){if(_0x41dd65){return[_0x41dd65,![]];}return db[_0x4d12('0x74')]['create']({'UserId':_0x25a338[_0x4d12('0x62')]['id'],'ContactId':_0x2f16d3['id'],'FaxAccountId':_0x51d42b['id'],'fax':_0x25a338[_0x4d12('0x5f')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x4d12('0x50')](_0x25a338[_0x4d12('0x5f')],{'read':![],'body':_0x25a338['body'][_0x4d12('0xaf')][0x0][_0x4d12('0xba')],'FaxAccountId':_0x51d42b['id'],'UserId':_0x25a338[_0x4d12('0x62')]['id'],'ContactId':_0x2f16d3['id'],'AttachmentId':_0x25a338['body']['attachments'][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':'Messages'}]})[_0x4d12('0x23')](function(_0x549184){return[_0x549184,!![]];});});}else{throw new Error(_0x4d12('0xbb'));}})[_0x4d12('0xbc')](function(_0x57fb2d,_0x424f42){if(_0x424f42){return _0x57fb2d;}return db[_0x4d12('0xa8')][_0x4d12('0x5e')]({'direction':'out','read':![],'body':_0x25a338[_0x4d12('0x5f')][_0x4d12('0xaf')][0x0][_0x4d12('0xba')],'FaxAccountId':_0x51d42b['id'],'FaxInteractionId':_0x57fb2d['id'],'UserId':_0x25a338[_0x4d12('0x62')]['id'],'ContactId':_0x57fb2d[_0x4d12('0xbd')],'AttachmentId':_0x25a338['body'][_0x4d12('0xaf')][0x0]['id']})[_0x4d12('0x23')](function(_0x4b9ba2){_0x57fb2d['dataValues'][_0x4d12('0xbe')]=[];_0x57fb2d[_0x4d12('0xbf')][_0x4d12('0xbe')][_0x4d12('0x90')](_0x4b9ba2[_0x4d12('0xbf')]);return _0x57fb2d;});})[_0x4d12('0x23')](function(_0x1f0f69){respondWithRpcPromise('SendFax',_0x4d12('0xc0'),{'FaxAccountId':_[_0x4d12('0xb4')](_0x25a338[_0x4d12('0x59')]['id'])?undefined:_0x25a338['params']['id'],'path':_[_0x4d12('0xb4')](_0x25a338[_0x4d12('0x5f')][_0x4d12('0xaf')][0x0][_0x4d12('0x7')])?undefined:_0x25a338['body'][_0x4d12('0xaf')][0x0][_0x4d12('0x7')],'fax':_['isNil'](_0x25a338['body']['to'][0x0])?undefined:_0x25a338['body']['to'][0x0],'AttachmentId':_0x25a338[_0x4d12('0x5f')][_0x4d12('0xaf')][0x0]['id']},client9002)['then'](function(_0x5b6663){logger[_0x4d12('0x24')](_0x4d12('0xc1'),_0x5b6663);})[_0x4d12('0x2b')](function(_0x4f0f16){logger[_0x4d12('0x24')](_0x4d12('0xc1'),_0x4f0f16);});return _0x1f0f69;})[_0x4d12('0x23')](respondWithResult(_0x45196e,null))[_0x4d12('0x2b')](handleError(_0x45196e,null));};exports[_0x4d12('0xc2')]=function(_0x50f14f,_0x4b4d06,_0x4c39e5){return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x50f14f[_0x4d12('0x59')]['id']}})[_0x4d12('0x23')](handleEntityNotFound(_0x4b4d06,null))[_0x4d12('0x23')](function(_0x3f762e){if(_0x3f762e){return _0x3f762e['addAgents'](_0x50f14f[_0x4d12('0x5f')][_0x4d12('0x6f')],_[_0x4d12('0x75')](_0x50f14f['body'],[_0x4d12('0x6f'),'id'])||{})[_0x4d12('0xbc')](function(_0x4950a7){for(var _0x41c723=0x0;_0x41c723<_0x50f14f[_0x4d12('0x5f')]['ids'][_0x4d12('0x49')];_0x41c723+=0x1){socket[_0x4d12('0xc3')]('userFaxAccount:save',{'UserId':Number(_0x50f14f['body'][_0x4d12('0x6f')][_0x41c723]),'FaxAccountId':Number(_0x50f14f[_0x4d12('0x59')]['id'])});}return _0x4950a7;});}})[_0x4d12('0x23')](respondWithResult(_0x4b4d06,null))[_0x4d12('0x2b')](handleError(_0x4b4d06,null));};exports['removeAgents']=function(_0x5cf629,_0x50ea1d,_0x2db1e4){return db[_0x4d12('0x40')][_0x4d12('0x5d')]({'where':{'id':_0x5cf629['params']['id']}})['then'](handleEntityNotFound(_0x50ea1d,null))[_0x4d12('0x23')](function(_0x52e4b3){if(_0x52e4b3){return _0x52e4b3['removeAgents'](_0x5cf629[_0x4d12('0x43')][_0x4d12('0x6f')])['then'](function(){if(_[_0x4d12('0xc4')](_0x5cf629['query'][_0x4d12('0x6f')])){for(var _0x459d6e=0x0;_0x459d6e<_0x5cf629[_0x4d12('0x43')][_0x4d12('0x6f')][_0x4d12('0x49')];_0x459d6e+=0x1){socket[_0x4d12('0xc3')]('userFaxAccount:remove',{'UserId':Number(_0x5cf629['query'][_0x4d12('0x6f')][_0x459d6e]),'FaxAccountId':Number(_0x5cf629[_0x4d12('0x59')]['id'])});}}else{socket['emit'](_0x4d12('0xc5'),{'UserId':Number(_0x5cf629[_0x4d12('0x43')][_0x4d12('0x6f')]),'FaxAccountId':Number(_0x5cf629[_0x4d12('0x59')]['id'])});}});}})[_0x4d12('0x23')](respondWithStatusCode(_0x50ea1d,null))[_0x4d12('0x2b')](handleError(_0x50ea1d,null));};exports[_0x4d12('0xc6')]=function(_0x4130e8,_0xef60d4,_0x3fb677){var _0x1e09b6={};var _0x77bc88={};var _0x1a9513;var _0x932d01;return db[_0x4d12('0x40')][_0x4d12('0x77')]({'where':{'id':_0x4130e8[_0x4d12('0x59')]['id']}})['then'](handleEntityNotFound(_0xef60d4,null))[_0x4d12('0x23')](function(_0x1bf384){if(_0x1bf384){_0x1a9513=_0x1bf384;_0x77bc88[_0x4d12('0x46')]=_[_0x4d12('0x5b')](db[_0x4d12('0x7a')]['rawAttributes']);_0x77bc88[_0x4d12('0x43')]=_[_0x4d12('0x5b')](_0x4130e8[_0x4d12('0x43')]);_0x77bc88[_0x4d12('0x44')]=_[_0x4d12('0x45')](_0x77bc88[_0x4d12('0x46')],_0x77bc88[_0x4d12('0x43')]);_0x1e09b6[_0x4d12('0x48')]=_[_0x4d12('0x45')](_0x77bc88[_0x4d12('0x46')],qs['fields'](_0x4130e8[_0x4d12('0x43')][_0x4d12('0x47')]));_0x1e09b6['attributes']=_0x1e09b6['attributes'][_0x4d12('0x49')]?_0x1e09b6['attributes']:_0x77bc88[_0x4d12('0x46')];_0x1e09b6[_0x4d12('0x6c')]=qs[_0x4d12('0x4d')](_0x4130e8[_0x4d12('0x43')][_0x4d12('0x4d')]);_0x1e09b6[_0x4d12('0x4f')]=qs[_0x4d12('0x44')](_[_0x4d12('0x6d')](_0x4130e8[_0x4d12('0x43')],_0x77bc88['filters']));if(_0x4130e8[_0x4d12('0x43')]['filter']){_0x1e09b6[_0x4d12('0x4f')]=_['merge'](_0x1e09b6['where'],{'$or':_[_0x4d12('0x3f')](_0x1e09b6[_0x4d12('0x48')],function(_0x150619){var _0xad9607={};_0xad9607[_0x150619]={'$like':'%'+_0x4130e8[_0x4d12('0x43')][_0x4d12('0x4e')]+'%'};return _0xad9607;})});}_0x1e09b6=_['merge']({},_0x1e09b6,_0x4130e8['options']);return _0x1a9513[_0x4d12('0xc6')](_0x1e09b6);}})[_0x4d12('0x23')](function(_0x45f653){if(_0x45f653){_0x932d01=_0x45f653[_0x4d12('0x49')];if(!_0x4130e8['query'][_0x4d12('0x4a')]('nolimit')){_0x1e09b6[_0x4d12('0x4c')]=qs[_0x4d12('0x4c')](_0x4130e8[_0x4d12('0x43')]['limit']);_0x1e09b6['offset']=qs[_0x4d12('0x30')](_0x4130e8[_0x4d12('0x43')][_0x4d12('0x30')]);}return _0x1a9513['getAgents'](_0x1e09b6);}})[_0x4d12('0x23')](function(_0x5d08b6){if(_0x5d08b6){return _0x5d08b6?{'count':_0x932d01,'rows':_0x5d08b6}:null;}})['then'](respondWithResult(_0xef60d4,null))[_0x4d12('0x2b')](handleError(_0xef60d4,null));};
\ No newline at end of file
index 41d0021..b8e1253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb253=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxAccount','setMaxListeners','update'];(function(_0xc5dee2,_0x254eab){var _0xd10d9c=function(_0x119b6a){while(--_0x119b6a){_0xc5dee2['push'](_0xc5dee2['shift']());}};_0xd10d9c(++_0x254eab);}(_0xb253,0x95));var _0x3b25=function(_0x4c65fd,_0x2ba5cc){_0x4c65fd=_0x4c65fd-0x0;var _0x315e4b=_0xb253[_0x4c65fd];return _0x315e4b;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x3b25('0x0'))['db'][_0x3b25('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x3b25('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3b25('0x3'),'afterDestroy':_0x3b25('0x4')};function emitEvent(_0x2e2e74){return function(_0x56d01f,_0x309a91,_0x31ae48){FaxAccountEvents[_0x3b25('0x5')](_0x2e2e74+':'+_0x56d01f['id'],_0x56d01f);FaxAccountEvents[_0x3b25('0x5')](_0x2e2e74,_0x56d01f);_0x31ae48(null);};}for(var e in events){if(events[_0x3b25('0x6')](e)){var event=events[e];FaxAccount[_0x3b25('0x7')](e,emitEvent(event));}}module[_0x3b25('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x09d6=['emit','hook','exports','../../mysqldb','setMaxListeners','remove'];(function(_0x168d68,_0x2413c5){var _0x32a35c=function(_0x453389){while(--_0x453389){_0x168d68['push'](_0x168d68['shift']());}};_0x32a35c(++_0x2413c5);}(_0x09d6,0x159));var _0x609d=function(_0x6d36cd,_0x5d93e3){_0x6d36cd=_0x6d36cd-0x0;var _0x287277=_0x09d6[_0x6d36cd];return _0x287277;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x609d('0x0'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x609d('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x609d('0x2')};function emitEvent(_0x2bdb8a){return function(_0x33f41a,_0x2d26a9,_0x39455c){FaxAccountEvents['emit'](_0x2bdb8a+':'+_0x33f41a['id'],_0x33f41a);FaxAccountEvents[_0x609d('0x3')](_0x2bdb8a,_0x33f41a);_0x39455c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0x609d('0x4')](e,emitEvent(event));}}module[_0x609d('0x5')]=FaxAccountEvents;
\ No newline at end of file
index b35b2a7..1cf7daa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56a9=['moment','bluebird','request-promise','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','../../config/logger','api'];(function(_0x1da1e4,_0x18ace2){var _0x4cc8ad=function(_0x188f73){while(--_0x188f73){_0x1da1e4['push'](_0x1da1e4['shift']());}};_0x4cc8ad(++_0x18ace2);}(_0x56a9,0x1c1));var _0x956a=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0x56a9[_0x5f42f1];return _0x5534ee;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x956a('0x0'))(_0x956a('0x1'));var moment=require(_0x956a('0x2'));var BPromise=require(_0x956a('0x3'));var rp=require(_0x956a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x956a('0x5'));var config=require(_0x956a('0x6'));var attributes=require(_0x956a('0x7'));module[_0x956a('0x8')]=function(_0x5e3bda,_0x56a0de){return _0x5e3bda[_0x956a('0x9')](_0x956a('0xa'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9d6=['define','FaxAccount','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x30c4b1,_0x5e9af4){var _0x324d7f=function(_0x4a09e0){while(--_0x4a09e0){_0x30c4b1['push'](_0x30c4b1['shift']());}};_0x324d7f(++_0x5e9af4);}(_0xa9d6,0x192));var _0x6a9d=function(_0x5b1570,_0xfc0c55){_0x5b1570=_0x5b1570-0x0;var _0xd59039=_0xa9d6[_0x5b1570];return _0xd59039;};'use strict';var _=require('lodash');var util=require(_0x6a9d('0x0'));var logger=require('../../config/logger')(_0x6a9d('0x1'));var moment=require('moment');var BPromise=require(_0x6a9d('0x2'));var rp=require(_0x6a9d('0x3'));var fs=require('fs');var path=require(_0x6a9d('0x4'));var rimraf=require(_0x6a9d('0x5'));var config=require(_0x6a9d('0x6'));var attributes=require('./faxAccount.attributes');module[_0x6a9d('0x7')]=function(_0xc036be,_0x4dca83){return _0xc036be[_0x6a9d('0x8')](_0x6a9d('0x9'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb1063d..71c8440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60d5=['unmanaged','*,*,*,*','created','interaction','ContactId','UserId','find','name','unshift','waitForTheAssignedAgent','Start','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./faxAccount.socket','info','FaxAccount,\x20%s,\x20%s','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','NotifyFaxAccount','body','fax','describe','Sequelize','ValidationError','createdAt','updatedAt','keys','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','CmContact','Contacts','DESC','FaxApplication','Applications','List','get','orderBy','applications','priority','asc','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','push','close'];(function(_0x146317,_0x3388e1){var _0x6f0e41=function(_0x15d808){while(--_0x15d808){_0x146317['push'](_0x146317['shift']());}};_0x6f0e41(++_0x3388e1);}(_0x60d5,0x10a));var _0x560d=function(_0x114594,_0xd81639){_0x114594=_0x114594-0x0;var _0x2713e4=_0x60d5[_0x114594];return _0x2713e4;};'use strict';var _=require(_0x560d('0x0'));var util=require(_0x560d('0x1'));var moment=require(_0x560d('0x2'));var BPromise=require(_0x560d('0x3'));var rs=require(_0x560d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x560d('0x5'))['db'];var utils=require(_0x560d('0x6'));var logger=require('../../config/logger')(_0x560d('0x7'));var config=require(_0x560d('0x8'));var jayson=require(_0x560d('0x9'));var client=jayson['client'][_0x560d('0xa')]({'port':0x232c});config['redis']=_[_0x560d('0xb')](config[_0x560d('0xc')],{'host':_0x560d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x560d('0xc')]));require(_0x560d('0xe'))['register'](socket);function respondWithRpcPromise(_0x36d204,_0x253865,_0x18271d){return new BPromise(function(_0x341fc5,_0xcc3ff8){return client['request'](_0x36d204,_0x18271d)['then'](function(_0x305d4e){logger[_0x560d('0xf')](_0x560d('0x10'),_0x253865,'request\x20sent');logger['debug'](_0x560d('0x11'),_0x253865,_0x560d('0x12'),JSON['stringify'](_0x305d4e));if(_0x305d4e['error']){if(_0x305d4e[_0x560d('0x13')][_0x560d('0x14')]===0x1f4){logger[_0x560d('0x13')](_0x560d('0x10'),_0x253865,_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);return _0xcc3ff8(_0x305d4e['error']['message']);}logger[_0x560d('0x13')]('FaxAccount,\x20%s,\x20%s',_0x253865,_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);return _0x341fc5(_0x305d4e[_0x560d('0x13')][_0x560d('0x15')]);}else{logger[_0x560d('0xf')](_0x560d('0x10'),_0x253865,_0x560d('0x12'));_0x341fc5(_0x305d4e['result'][_0x560d('0x15')]);}})[_0x560d('0x16')](function(_0x3a284e){logger[_0x560d('0x13')](_0x560d('0x10'),_0x253865,_0x3a284e);_0xcc3ff8(_0x3a284e);});});}exports[_0x560d('0x17')]=function(_0x1aeb33){var _0x4eefc7=this;return new Promise(function(_0x368ae1,_0x5d9061){return db[_0x560d('0x18')][_0x560d('0x19')]({'raw':_0x1aeb33['options']?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1b')]===undefined?!![]:![]:!![],'where':_0x1aeb33[_0x560d('0x1a')]?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1c')]||null:null,'attributes':_0x1aeb33['options']?_0x1aeb33['options'][_0x560d('0x1d')]||null:null,'limit':_0x1aeb33['options']?_0x1aeb33[_0x560d('0x1a')][_0x560d('0x1e')]||null:null,'include':_0x1aeb33[_0x560d('0x1a')]?_0x1aeb33['options'][_0x560d('0x1f')]?_[_0x560d('0x20')](_0x1aeb33['options'][_0x560d('0x1f')],function(_0x13400e){return{'model':db[_0x13400e[_0x560d('0x21')]],'as':_0x13400e['as'],'attributes':_0x13400e['attributes'],'include':_0x13400e[_0x560d('0x1f')]?_[_0x560d('0x20')](_0x13400e[_0x560d('0x1f')],function(_0x51e00f){return{'model':db[_0x51e00f[_0x560d('0x21')]],'as':_0x51e00f['as'],'attributes':_0x51e00f[_0x560d('0x1d')],'include':_0x51e00f[_0x560d('0x1f')]?_[_0x560d('0x20')](_0x51e00f[_0x560d('0x1f')],function(_0x483c85){return{'model':db[_0x483c85[_0x560d('0x21')]],'as':_0x483c85['as'],'attributes':_0x483c85['attributes']};}):[]};}):[]};}):[]:[]})[_0x560d('0x22')](function(_0x1c8b6f){logger[_0x560d('0xf')](_0x560d('0x17'),_0x1aeb33);logger[_0x560d('0x23')](_0x560d('0x17'),_0x1aeb33,JSON[_0x560d('0x24')](_0x1c8b6f));_0x368ae1(_0x1c8b6f);})[_0x560d('0x16')](function(_0x2a852d){logger[_0x560d('0x13')](_0x560d('0x17'),_0x2a852d[_0x560d('0x15')],_0x1aeb33);_0x5d9061(_0x4eefc7['error'](0x1f4,_0x2a852d[_0x560d('0x15')]));});});};exports[_0x560d('0x25')]=function(_0x19bcff,_0x57fd69,_0x253b67){var _0x9b1dba=this;return new Promise(function(_0x8b9a90,_0x345904){var _0x22c51f={'body':_0x19bcff[_0x560d('0x26')],'channel':_0x560d('0x27')};var _0x7fabd5=[];var _0x68f243=[];var _0x325dee={};return db['CmContact'][_0x560d('0x28')]()['then'](function(_0x4b0208){if(!_0x4b0208){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('no\x20available\x20attributes');}_0x7fabd5=_['difference'](_['keys'](_0x4b0208),[_0x560d('0x2b'),_0x560d('0x2c')]);_0x68f243=_['difference'](_[_0x560d('0x2d')](_0x4b0208),[_0x560d('0x2b'),'updatedAt',_0x560d('0x2e'),_0x560d('0x2f')]);if(_0x19bcff[_0x560d('0x26')]['id']){delete _0x19bcff['body']['id'];}if(_[_0x560d('0x30')](_0x19bcff['body'][_0x560d('0x31')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x19bcff['body'][_0x560d('0x26')])||_0x19bcff['body'][_0x560d('0x26')]===''){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))](_0x560d('0x32'));}if(_['isNil'](_0x19bcff[_0x560d('0x26')][_0x560d('0x33')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))](_0x560d('0x34')+_0x68f243);}if(!_[_0x560d('0x35')](_0x68f243,_0x19bcff['body'][_0x560d('0x33')])){throw new db[(_0x560d('0x29'))][(_0x560d('0x2a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x68f243);}_0x325dee[_0x19bcff['body'][_0x560d('0x33')]]=_0x19bcff[_0x560d('0x26')][_0x560d('0x31')];})[_0x560d('0x22')](function(){return db[_0x560d('0x18')]['find']({'where':{'id':_0x19bcff[_0x560d('0x36')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x560d('0x37')],'as':_0x560d('0x38'),'where':_0x325dee,'limit':0x1,'order':[[_0x560d('0x2c'),_0x560d('0x39')]]}]},{'model':db[_0x560d('0x3a')],'as':_0x560d('0x3b')}]});})[_0x560d('0x22')](function(_0x58d04a){if(_0x58d04a&&_0x58d04a[_0x560d('0x3c')]){var _0xe92acf=_0x58d04a[_0x560d('0x3d')]({'plain':!![]});_0x22c51f[_0x560d('0x36')]=_0xe92acf;_0x22c51f['applications']=_0xe92acf[_0x560d('0x3b')];_0x22c51f['list']=_0xe92acf[_0x560d('0x3c')];_0x22c51f['applications']=_[_0x560d('0x3e')](_0x22c51f[_0x560d('0x3f')],[_0x560d('0x40')],[_0x560d('0x41')]);if(_0x22c51f[_0x560d('0x36')][_0x560d('0x3b')]){delete _0x22c51f[_0x560d('0x36')][_0x560d('0x3b')];}if(_0x22c51f[_0x560d('0x36')]['List']&&_0x22c51f[_0x560d('0x36')]['List'][_0x560d('0x38')][_0x560d('0x42')]){return _0x22c51f[_0x560d('0x36')]['List']['Contacts'][0x0];}var _0xb20db8=_[_0x560d('0xb')](_0x19bcff[_0x560d('0x26')],{'firstName':_0x19bcff[_0x560d('0x26')][_0x560d('0x31')],'ListId':_0xe92acf[_0x560d('0x2f')]});_0xb20db8[_0x19bcff[_0x560d('0x26')]['mapKey']]=_0x19bcff[_0x560d('0x26')][_0x560d('0x31')];return db[_0x560d('0x37')][_0x560d('0x43')](_0xb20db8,{'fields':_0x7fabd5,'raw':!![]});}})['then'](function(_0x3f55af){_0x22c51f[_0x560d('0x44')]=_0x3f55af;if(_0x3f55af){var _0x54dc7e={'ContactId':_0x3f55af['id'],'FaxAccountId':_0x19bcff[_0x560d('0x36')]['id'],'fax':_0x3f55af[_0x560d('0x27')]};return db[_0x560d('0x45')]['find']({'where':{'ContactId':_0x3f55af['id'],'closed':![],'FaxAccountId':_0x19bcff['account']['id']}})[_0x560d('0x22')](function(_0x4e474c){if(_0x4e474c){return[_0x4e474c,![]];}return db[_0x560d('0x45')][_0x560d('0x43')](_0x54dc7e)[_0x560d('0x22')](function(_0x462412){return[_0x462412,!![]];});});}else{throw new Error(_0x560d('0x46'));}})[_0x560d('0x47')](function(_0x1dd4fa,_0x38e103){var _0x52fde2=_0x1dd4fa[_0x560d('0x3d')]({'plain':!![]});if(_0x38e103){if(_0x22c51f[_0x560d('0x36')]['autoclose']){_0x22c51f[_0x560d('0x3f')][_0x560d('0x48')]({'id':0x0,'priority':_0x22c51f[_0x560d('0x3f')][_0x560d('0x42')]+0x1,'app':_0x560d('0x49'),'appdata':_0x560d('0x4a'),'interval':_0x560d('0x4b')});}_0x52fde2['created']=!![];}else{_0x52fde2[_0x560d('0x4c')]=![];}_0x22c51f[_0x560d('0x4d')]=_0x52fde2;return db['FaxMessage']['create']({'body':_0x19bcff['body'][_0x560d('0x26')],'FaxAccountId':_0x19bcff['account']['id'],'FaxInteractionId':_0x1dd4fa['id'],'direction':'in','ContactId':_0x1dd4fa[_0x560d('0x4e')],'AttachmentId':_0x19bcff[_0x560d('0x26')]['AttachmentId']});})[_0x560d('0x22')](function(_0x3c27e3){_0x22c51f['message']=_0x3c27e3;if(_0x22c51f['interaction'][_0x560d('0x4f')]){return db['User'][_0x560d('0x50')]({'attributes':['id',_0x560d('0x51')],'where':{'id':_0x22c51f['interaction']['UserId']}})['then'](function(_0x8617ca){if(_0x8617ca){_0x22c51f[_0x560d('0x3f')][_0x560d('0x52')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x8617ca['name']+','+(_0x22c51f['account'][_0x560d('0x53')]||0xa),'interval':_0x560d('0x4b')});}return respondWithRpcPromise('Start','startRouting',_0x22c51f);});}return respondWithRpcPromise(_0x560d('0x54'),'startRouting',_0x22c51f);})['then'](function(_0x4acb5e){_0x8b9a90(_0x4acb5e);})[_0x560d('0x16')](function(_0x53359e){_0x345904(_0x9b1dba[_0x560d('0x13')](0x1f4,_0x53359e[_0x560d('0x15')]));});});};
\ No newline at end of file
+var _0x36c5=['list','orderBy','Contacts','length','ListId','create','contact','FaxInteraction','spread','autoclose','push','close','unmanaged','*,*,*,*','created','ContactId','User','UserId','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','result','catch','GetFaxAccount','FaxAccount','options','raw','where','attributes','limit','include','model','map','stringify','NotifyFaxAccount','fax','CmContact','describe','Sequelize','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','CompanyId','body','isNil','from','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','FaxApplication','Applications','get','applications'];(function(_0x2f03d1,_0x2fd89e){var _0x4097f4=function(_0x588811){while(--_0x588811){_0x2f03d1['push'](_0x2f03d1['shift']());}};_0x4097f4(++_0x2fd89e);}(_0x36c5,0x1d5));var _0x536c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36c5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x536c('0x0'));var util=require(_0x536c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x536c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x536c('0x3'));var logger=require(_0x536c('0x4'))(_0x536c('0x5'));var config=require(_0x536c('0x6'));var jayson=require(_0x536c('0x7'));var client=jayson[_0x536c('0x8')][_0x536c('0x9')]({'port':0x232c});config[_0x536c('0xa')]=_[_0x536c('0xb')](config[_0x536c('0xa')],{'host':_0x536c('0xc'),'port':0x18eb});var socket=require(_0x536c('0xd'))(new Redis(config[_0x536c('0xa')]));require(_0x536c('0xe'))[_0x536c('0xf')](socket);function respondWithRpcPromise(_0x378b41,_0x17c580,_0x5cda22){return new BPromise(function(_0xc7759a,_0x89bbba){return client[_0x536c('0x10')](_0x378b41,_0x5cda22)[_0x536c('0x11')](function(_0x50008e){logger[_0x536c('0x12')](_0x536c('0x13'),_0x17c580,_0x536c('0x14'));logger[_0x536c('0x15')](_0x536c('0x16'),_0x17c580,_0x536c('0x14'),JSON['stringify'](_0x50008e));if(_0x50008e[_0x536c('0x17')]){if(_0x50008e[_0x536c('0x17')]['code']===0x1f4){logger[_0x536c('0x17')](_0x536c('0x13'),_0x17c580,_0x50008e[_0x536c('0x17')]['message']);return _0x89bbba(_0x50008e[_0x536c('0x17')]['message']);}logger[_0x536c('0x17')](_0x536c('0x13'),_0x17c580,_0x50008e[_0x536c('0x17')]['message']);return _0xc7759a(_0x50008e['error']['message']);}else{logger['info'](_0x536c('0x13'),_0x17c580,'request\x20sent');_0xc7759a(_0x50008e[_0x536c('0x18')]['message']);}})[_0x536c('0x19')](function(_0x50ea43){logger[_0x536c('0x17')](_0x536c('0x13'),_0x17c580,_0x50ea43);_0x89bbba(_0x50ea43);});});}exports[_0x536c('0x1a')]=function(_0x442b45){var _0x15ab6d=this;return new Promise(function(_0x595923,_0x58aead){return db[_0x536c('0x1b')]['findAll']({'raw':_0x442b45[_0x536c('0x1c')]?_0x442b45[_0x536c('0x1c')][_0x536c('0x1d')]===undefined?!![]:![]:!![],'where':_0x442b45['options']?_0x442b45[_0x536c('0x1c')][_0x536c('0x1e')]||null:null,'attributes':_0x442b45[_0x536c('0x1c')]?_0x442b45[_0x536c('0x1c')][_0x536c('0x1f')]||null:null,'limit':_0x442b45[_0x536c('0x1c')]?_0x442b45[_0x536c('0x1c')][_0x536c('0x20')]||null:null,'include':_0x442b45[_0x536c('0x1c')]?_0x442b45['options']['include']?_['map'](_0x442b45[_0x536c('0x1c')][_0x536c('0x21')],function(_0x59b3cf){return{'model':db[_0x59b3cf[_0x536c('0x22')]],'as':_0x59b3cf['as'],'attributes':_0x59b3cf[_0x536c('0x1f')],'include':_0x59b3cf['include']?_[_0x536c('0x23')](_0x59b3cf['include'],function(_0x36ee32){return{'model':db[_0x36ee32[_0x536c('0x22')]],'as':_0x36ee32['as'],'attributes':_0x36ee32[_0x536c('0x1f')],'include':_0x36ee32[_0x536c('0x21')]?_[_0x536c('0x23')](_0x36ee32[_0x536c('0x21')],function(_0x254ff6){return{'model':db[_0x254ff6[_0x536c('0x22')]],'as':_0x254ff6['as'],'attributes':_0x254ff6[_0x536c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x536c('0x11')](function(_0x3eafc8){logger[_0x536c('0x12')](_0x536c('0x1a'),_0x442b45);logger[_0x536c('0x15')](_0x536c('0x1a'),_0x442b45,JSON[_0x536c('0x24')](_0x3eafc8));_0x595923(_0x3eafc8);})[_0x536c('0x19')](function(_0x3d3f05){logger[_0x536c('0x17')](_0x536c('0x1a'),_0x3d3f05['message'],_0x442b45);_0x58aead(_0x15ab6d[_0x536c('0x17')](0x1f4,_0x3d3f05['message']));});});};exports[_0x536c('0x25')]=function(_0x317d0c,_0x3ac456,_0x33e176){var _0x267c5b=this;return new Promise(function(_0x222a9f,_0x32d713){var _0x4cd47b={'body':_0x317d0c['body'],'channel':_0x536c('0x26')};var _0x4d53d8=[];var _0x33d97a=[];var _0x465c91={};return db[_0x536c('0x27')][_0x536c('0x28')]()['then'](function(_0x2a9db4){if(!_0x2a9db4){throw new db[(_0x536c('0x29'))]['ValidationError'](_0x536c('0x2a'));}_0x4d53d8=_[_0x536c('0x2b')](_[_0x536c('0x2c')](_0x2a9db4),['createdAt',_0x536c('0x2d')]);_0x33d97a=_[_0x536c('0x2b')](_[_0x536c('0x2c')](_0x2a9db4),[_0x536c('0x2e'),_0x536c('0x2d'),_0x536c('0x2f'),'ListId']);if(_0x317d0c[_0x536c('0x30')]['id']){delete _0x317d0c['body']['id'];}if(_[_0x536c('0x31')](_0x317d0c[_0x536c('0x30')][_0x536c('0x32')])){throw new db['Sequelize']['ValidationError']('from\x20is\x20mandatory');}if(_[_0x536c('0x31')](_0x317d0c['body'][_0x536c('0x30')])||_0x317d0c[_0x536c('0x30')][_0x536c('0x30')]===''){throw new db[(_0x536c('0x29'))][(_0x536c('0x33'))](_0x536c('0x34'));}if(_['isNil'](_0x317d0c[_0x536c('0x30')][_0x536c('0x35')])){throw new db[(_0x536c('0x29'))][(_0x536c('0x33'))](_0x536c('0x36')+_0x33d97a);}if(!_[_0x536c('0x37')](_0x33d97a,_0x317d0c[_0x536c('0x30')][_0x536c('0x35')])){throw new db[(_0x536c('0x29'))][(_0x536c('0x33'))](_0x536c('0x38')+_0x33d97a);}_0x465c91[_0x317d0c['body'][_0x536c('0x35')]]=_0x317d0c[_0x536c('0x30')]['from'];})[_0x536c('0x11')](function(){return db[_0x536c('0x1b')][_0x536c('0x39')]({'where':{'id':_0x317d0c[_0x536c('0x3a')]['id']},'include':[{'model':db[_0x536c('0x3b')],'as':_0x536c('0x3c'),'include':[{'model':db[_0x536c('0x27')],'as':'Contacts','where':_0x465c91,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x536c('0x3d')],'as':_0x536c('0x3e')}]});})['then'](function(_0x7d762a){if(_0x7d762a&&_0x7d762a[_0x536c('0x3c')]){var _0x621e8b=_0x7d762a[_0x536c('0x3f')]({'plain':!![]});_0x4cd47b[_0x536c('0x3a')]=_0x621e8b;_0x4cd47b[_0x536c('0x40')]=_0x621e8b[_0x536c('0x3e')];_0x4cd47b[_0x536c('0x41')]=_0x621e8b[_0x536c('0x3c')];_0x4cd47b[_0x536c('0x40')]=_[_0x536c('0x42')](_0x4cd47b['applications'],['priority'],['asc']);if(_0x4cd47b[_0x536c('0x3a')]['Applications']){delete _0x4cd47b['account']['Applications'];}if(_0x4cd47b[_0x536c('0x3a')][_0x536c('0x3c')]&&_0x4cd47b[_0x536c('0x3a')][_0x536c('0x3c')][_0x536c('0x43')][_0x536c('0x44')]){return _0x4cd47b[_0x536c('0x3a')]['List'][_0x536c('0x43')][0x0];}var _0x1f5c1f=_[_0x536c('0xb')](_0x317d0c[_0x536c('0x30')],{'firstName':_0x317d0c[_0x536c('0x30')][_0x536c('0x32')],'ListId':_0x621e8b[_0x536c('0x45')]});_0x1f5c1f[_0x317d0c[_0x536c('0x30')][_0x536c('0x35')]]=_0x317d0c['body'][_0x536c('0x32')];return db['CmContact'][_0x536c('0x46')](_0x1f5c1f,{'fields':_0x4d53d8,'raw':!![]});}})[_0x536c('0x11')](function(_0x20773e){_0x4cd47b[_0x536c('0x47')]=_0x20773e;if(_0x20773e){var _0x2d3daa={'ContactId':_0x20773e['id'],'FaxAccountId':_0x317d0c[_0x536c('0x3a')]['id'],'fax':_0x20773e['fax']};return db[_0x536c('0x48')][_0x536c('0x39')]({'where':{'ContactId':_0x20773e['id'],'closed':![],'FaxAccountId':_0x317d0c[_0x536c('0x3a')]['id']}})[_0x536c('0x11')](function(_0x1946d6){if(_0x1946d6){return[_0x1946d6,![]];}return db['FaxInteraction']['create'](_0x2d3daa)[_0x536c('0x11')](function(_0x42dc64){return[_0x42dc64,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x536c('0x49')](function(_0x290fe1,_0x13ba20){var _0x2812db=_0x290fe1[_0x536c('0x3f')]({'plain':!![]});if(_0x13ba20){if(_0x4cd47b[_0x536c('0x3a')][_0x536c('0x4a')]){_0x4cd47b[_0x536c('0x40')][_0x536c('0x4b')]({'id':0x0,'priority':_0x4cd47b['applications'][_0x536c('0x44')]+0x1,'app':_0x536c('0x4c'),'appdata':_0x536c('0x4d'),'interval':_0x536c('0x4e')});}_0x2812db['created']=!![];}else{_0x2812db[_0x536c('0x4f')]=![];}_0x4cd47b['interaction']=_0x2812db;return db['FaxMessage']['create']({'body':_0x317d0c['body']['body'],'FaxAccountId':_0x317d0c['account']['id'],'FaxInteractionId':_0x290fe1['id'],'direction':'in','ContactId':_0x290fe1[_0x536c('0x50')],'AttachmentId':_0x317d0c[_0x536c('0x30')]['AttachmentId']});})['then'](function(_0x4ef637){_0x4cd47b['message']=_0x4ef637;if(_0x4cd47b['interaction']['UserId']){return db[_0x536c('0x51')][_0x536c('0x39')]({'attributes':['id','name'],'where':{'id':_0x4cd47b['interaction'][_0x536c('0x52')]}})[_0x536c('0x11')](function(_0x1b9ded){if(_0x1b9ded){_0x4cd47b[_0x536c('0x40')][_0x536c('0x53')]({'id':0x0,'priority':0x0,'app':_0x536c('0x54'),'appdata':_0x1b9ded[_0x536c('0x55')]+','+(_0x4cd47b[_0x536c('0x3a')][_0x536c('0x56')]||0xa),'interval':_0x536c('0x4e')});}return respondWithRpcPromise(_0x536c('0x57'),'startRouting',_0x4cd47b);});}return respondWithRpcPromise(_0x536c('0x57'),_0x536c('0x58'),_0x4cd47b);})[_0x536c('0x11')](function(_0x4a5be3){_0x222a9f(_0x4a5be3);})['catch'](function(_0x37dc72){_0x32d713(_0x267c5b[_0x536c('0x17')](0x1f4,_0x37dc72['message']));});});};
\ No newline at end of file
index 186c458..71f147e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7188=['length','faxAccount:','./faxAccount.events','save','remove','emit','removeListener','register'];(function(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0x7188,0x162));var _0x8718=function(_0x2be044,_0xd88a7c){_0x2be044=_0x2be044-0x0;var _0x3587e1=_0x7188[_0x2be044];return _0x3587e1;};'use strict';var FaxAccountEvents=require(_0x8718('0x0'));var events=[_0x8718('0x1'),_0x8718('0x2'),'update'];function createListener(_0x30b121,_0x16a465){return function(_0x1c6624){_0x16a465[_0x8718('0x3')](_0x30b121,_0x1c6624);};}function removeListener(_0x520075,_0x336292){return function(){FaxAccountEvents[_0x8718('0x4')](_0x520075,_0x336292);};}exports[_0x8718('0x5')]=function(_0x4a26ec){for(var _0x2821d0=0x0,_0x429302=events[_0x8718('0x6')];_0x2821d0<_0x429302;_0x2821d0++){var _0x31f5fa=events[_0x2821d0];var _0x1bac86=createListener(_0x8718('0x7')+_0x31f5fa,_0x4a26ec);FaxAccountEvents['on'](_0x31f5fa,_0x1bac86);}};
\ No newline at end of file
+var _0xabe8=['remove','update','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x1be787,_0x5c92b5){var _0x340b4d=function(_0x43d6a0){while(--_0x43d6a0){_0x1be787['push'](_0x1be787['shift']());}};_0x340b4d(++_0x5c92b5);}(_0xabe8,0x101));var _0x8abe=function(_0x30639c,_0x28d1ad){_0x30639c=_0x30639c-0x0;var _0x5dec5d=_0xabe8[_0x30639c];return _0x5dec5d;};'use strict';var FaxAccountEvents=require(_0x8abe('0x0'));var events=['save',_0x8abe('0x1'),_0x8abe('0x2')];function createListener(_0x243c6d,_0x392581){return function(_0x3820eb){_0x392581['emit'](_0x243c6d,_0x3820eb);};}function removeListener(_0x1a2dc5,_0x57dd62){return function(){FaxAccountEvents[_0x8abe('0x3')](_0x1a2dc5,_0x57dd62);};}exports['register']=function(_0x22b8c2){for(var _0x45e8b3=0x0,_0x160eaa=events[_0x8abe('0x4')];_0x45e8b3<_0x160eaa;_0x45e8b3++){var _0x189ed5=events[_0x45e8b3];var _0x177333=createListener(_0x8abe('0x5')+_0x189ed5,_0x22b8c2);FaxAccountEvents['on'](_0x189ed5,_0x177333);}};
\ No newline at end of file
index 0158a98..200a4b8 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(_0xa8b235,_0x55e03a){var _0x434147=function(_0x13fbef){while(--_0x13fbef){_0xa8b235['push'](_0xa8b235['shift']());}};_0x434147(++_0x55e03a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x1c2cae,_0x27a031){var _0x1d8c8d=function(_0x4161f6){while(--_0x4161f6){_0x1c2cae['push'](_0x1c2cae['shift']());}};_0x1d8c8d(++_0x27a031);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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 8744a31..b505854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91b9=['*,*,*,*','sequelize','noop','TEXT','STRING'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x91b9,0xe2));var _0x991b=function(_0x4d99d9,_0x338bf9){_0x4d99d9=_0x4d99d9-0x0;var _0x5ec6c6=_0x91b9[_0x4d99d9];return _0x5ec6c6;};'use strict';var Sequelize=require(_0x991b('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x991b('0x1')},'appdata':{'type':Sequelize[_0x991b('0x2')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x991b('0x3')],'defaultValue':_0x991b('0x4')}};
\ No newline at end of file
+var _0xd2b7=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0xd2b7,0xda));var _0x7d2b=function(_0x15a634,_0x4feb86){_0x15a634=_0x15a634-0x0;var _0xf4f7a0=_0xd2b7[_0x15a634];return _0xf4f7a0;};'use strict';var Sequelize=require(_0x7d2b('0x0'));module[_0x7d2b('0x1')]={'priority':{'type':Sequelize[_0x7d2b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7d2b('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x7d2b('0x4')]()},'description':{'type':Sequelize[_0x7d2b('0x3')]},'interval':{'type':Sequelize[_0x7d2b('0x3')],'defaultValue':_0x7d2b('0x5')}};
\ No newline at end of file
index c716788..8aaf26a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x734f=['limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','FaxApplication','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','keys','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset'];(function(_0x25d895,_0x455c2e){var _0x10a795=function(_0x3a3060){while(--_0x3a3060){_0x25d895['push'](_0x25d895['shift']());}};_0x10a795(++_0x455c2e);}(_0x734f,0x71));var _0xf734=function(_0x2daab7,_0x377337){_0x2daab7=_0x2daab7-0x0;var _0x1714da=_0x734f[_0x2daab7];return _0x1714da;};'use strict';var emlformat=require(_0xf734('0x0'));var rimraf=require(_0xf734('0x1'));var zipdir=require(_0xf734('0x2'));var jsonpatch=require(_0xf734('0x3'));var rp=require(_0xf734('0x4'));var moment=require(_0xf734('0x5'));var BPromise=require(_0xf734('0x6'));var Mustache=require('mustache');var util=require(_0xf734('0x7'));var path=require(_0xf734('0x8'));var sox=require('sox');var csv=require(_0xf734('0x9'));var ejs=require(_0xf734('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf734('0xb'));var squel=require(_0xf734('0xc'));var crypto=require(_0xf734('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf734('0xe'));var toCsv=require(_0xf734('0x9'));var querystring=require('querystring');var Papa=require(_0xf734('0xf'));var Redis=require(_0xf734('0x10'));var authService=require(_0xf734('0x11'));var qs=require(_0xf734('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf734('0x13'));var logger=require(_0xf734('0x14'))('api');var utils=require(_0xf734('0x15'));var config=require(_0xf734('0x16'));var licenseUtil=require(_0xf734('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b9e64,_0xf55476){_0xf55476=_0xf55476||0xcc;return function(_0x4bae4f){if(_0x4bae4f){return _0x3b9e64[_0xf734('0x18')](_0xf55476);}return _0x3b9e64['status'](_0xf55476)[_0xf734('0x19')]();};}function respondWithResult(_0x518086,_0x10284a){_0x10284a=_0x10284a||0xc8;return function(_0x44f691){if(_0x44f691){return _0x518086[_0xf734('0x1a')](_0x10284a)[_0xf734('0x1b')](_0x44f691);}};}function respondWithFilteredResult(_0x504796,_0xb06f85){return function(_0x13e09c){if(_0x13e09c){var _0x58e0ac=typeof _0xb06f85[_0xf734('0x1c')]==='undefined'&&typeof _0xb06f85[_0xf734('0x1d')]===_0xf734('0x1e');var _0x19255f=_0x13e09c[_0xf734('0x1f')];var _0x104a62=_0x58e0ac?0x0:_0xb06f85['offset'];var _0x1d5544=_0x58e0ac?_0x13e09c[_0xf734('0x1f')]:_0xb06f85[_0xf734('0x1c')]+_0xb06f85[_0xf734('0x1d')];var _0x31f2d3;if(_0x1d5544>=_0x19255f){_0x1d5544=_0x19255f;_0x31f2d3=0xc8;}else{_0x31f2d3=0xce;}_0x504796[_0xf734('0x1a')](_0x31f2d3);return _0x504796['set'](_0xf734('0x20'),_0x104a62+'-'+_0x1d5544+'/'+_0x19255f)[_0xf734('0x1b')](_0x13e09c);}return null;};}function patchUpdates(_0x2aef49){return function(_0x1f7203){try{jsonpatch[_0xf734('0x21')](_0x1f7203,_0x2aef49,!![]);}catch(_0x47f16a){return BPromise['reject'](_0x47f16a);}return _0x1f7203[_0xf734('0x22')]();};}function saveUpdates(_0x176939,_0x476015){return function(_0x1bf31d){if(_0x1bf31d){return _0x1bf31d[_0xf734('0x23')](_0x176939)[_0xf734('0x24')](function(_0x3bf463){return _0x3bf463;});}return null;};}function removeEntity(_0x4b45e1,_0x1de7f5){return function(_0x584a75){if(_0x584a75){return _0x584a75[_0xf734('0x25')]()[_0xf734('0x24')](function(){_0x4b45e1['status'](0xcc)[_0xf734('0x19')]();});}};}function handleEntityNotFound(_0x59b299,_0x459707){return function(_0x8901f3){if(!_0x8901f3){_0x59b299[_0xf734('0x18')](0x194);}return _0x8901f3;};}function handleError(_0x4e73b1,_0x268cf6){_0x268cf6=_0x268cf6||0x1f4;return function(_0x2ab1ef){logger[_0xf734('0x26')](_0x2ab1ef[_0xf734('0x27')]);if(_0x2ab1ef[_0xf734('0x28')]){delete _0x2ab1ef[_0xf734('0x28')];}_0x4e73b1['status'](_0x268cf6)[_0xf734('0x29')](_0x2ab1ef);};}exports['index']=function(_0x111f45,_0x5d862){var _0x5314f6={},_0x329e63={},_0x135f66={'count':0x0,'rows':[]};var _0x460f4d=_[_0xf734('0x2a')](db[_0xf734('0x2b')][_0xf734('0x2c')],function(_0x2eb294){return{'name':_0x2eb294[_0xf734('0x2d')],'type':_0x2eb294[_0xf734('0x2e')]['key']};});_0x329e63[_0xf734('0x2f')]=_[_0xf734('0x2a')](_0x460f4d,'name');_0x329e63[_0xf734('0x30')]=_['keys'](_0x111f45[_0xf734('0x30')]);_0x329e63[_0xf734('0x31')]=_[_0xf734('0x32')](_0x329e63['model'],_0x329e63['query']);_0x5314f6[_0xf734('0x33')]=_[_0xf734('0x32')](_0x329e63[_0xf734('0x2f')],qs[_0xf734('0x34')](_0x111f45['query'][_0xf734('0x34')]));_0x5314f6[_0xf734('0x33')]=_0x5314f6['attributes'][_0xf734('0x35')]?_0x5314f6[_0xf734('0x33')]:_0x329e63[_0xf734('0x2f')];if(!_0x111f45[_0xf734('0x30')][_0xf734('0x36')]('nolimit')){_0x5314f6[_0xf734('0x1d')]=qs[_0xf734('0x1d')](_0x111f45[_0xf734('0x30')][_0xf734('0x1d')]);_0x5314f6[_0xf734('0x1c')]=qs[_0xf734('0x1c')](_0x111f45[_0xf734('0x30')][_0xf734('0x1c')]);}_0x5314f6['order']=qs[_0xf734('0x37')](_0x111f45['query'][_0xf734('0x37')]);_0x5314f6[_0xf734('0x38')]=qs[_0xf734('0x31')](_[_0xf734('0x39')](_0x111f45['query'],_0x329e63[_0xf734('0x31')]),_0x460f4d);if(_0x111f45[_0xf734('0x30')][_0xf734('0x3a')]){_0x5314f6[_0xf734('0x38')]=_[_0xf734('0x3b')](_0x5314f6['where'],{'$or':_[_0xf734('0x2a')](_0x460f4d,function(_0x90a4dc){if(_0x90a4dc[_0xf734('0x2e')]!==_0xf734('0x3c')){var _0x3427c6={};_0x3427c6[_0x90a4dc[_0xf734('0x28')]]={'$like':'%'+_0x111f45[_0xf734('0x30')][_0xf734('0x3a')]+'%'};return _0x3427c6;}})});}_0x5314f6=_[_0xf734('0x3b')]({},_0x5314f6,_0x111f45[_0xf734('0x3d')]);var _0x8b7ded={'where':_0x5314f6[_0xf734('0x38')]};return db[_0xf734('0x2b')][_0xf734('0x1f')](_0x8b7ded)[_0xf734('0x24')](function(_0x131380){_0x135f66[_0xf734('0x1f')]=_0x131380;if(_0x111f45[_0xf734('0x30')]['includeAll']){_0x5314f6[_0xf734('0x3e')]=[{'all':!![]}];}return db[_0xf734('0x2b')][_0xf734('0x3f')](_0x5314f6);})[_0xf734('0x24')](function(_0x454082){_0x135f66[_0xf734('0x40')]=_0x454082;return _0x135f66;})['then'](respondWithFilteredResult(_0x5d862,_0x5314f6))[_0xf734('0x41')](handleError(_0x5d862,null));};exports[_0xf734('0x42')]=function(_0x3ab0cd,_0x19e920){var _0x4304fe={'raw':!![],'where':{'id':_0x3ab0cd['params']['id']}},_0x47a3f0={};_0x47a3f0[_0xf734('0x2f')]=_[_0xf734('0x43')](db[_0xf734('0x2b')][_0xf734('0x2c')]);_0x47a3f0[_0xf734('0x30')]=_[_0xf734('0x43')](_0x3ab0cd[_0xf734('0x30')]);_0x47a3f0[_0xf734('0x31')]=_[_0xf734('0x32')](_0x47a3f0[_0xf734('0x2f')],_0x47a3f0[_0xf734('0x30')]);_0x4304fe['attributes']=_[_0xf734('0x32')](_0x47a3f0[_0xf734('0x2f')],qs[_0xf734('0x34')](_0x3ab0cd[_0xf734('0x30')]['fields']));_0x4304fe[_0xf734('0x33')]=_0x4304fe[_0xf734('0x33')][_0xf734('0x35')]?_0x4304fe[_0xf734('0x33')]:_0x47a3f0[_0xf734('0x2f')];if(_0x3ab0cd[_0xf734('0x30')]['includeAll']){_0x4304fe[_0xf734('0x3e')]=[{'all':!![]}];}_0x4304fe=_['merge']({},_0x4304fe,_0x3ab0cd[_0xf734('0x3d')]);return db[_0xf734('0x2b')][_0xf734('0x44')](_0x4304fe)[_0xf734('0x24')](handleEntityNotFound(_0x19e920,null))[_0xf734('0x24')](respondWithResult(_0x19e920,null))[_0xf734('0x41')](handleError(_0x19e920,null));};exports['create']=function(_0x38cb78,_0x21b8cf){return db[_0xf734('0x2b')]['create'](_0x38cb78[_0xf734('0x45')],{})[_0xf734('0x24')](respondWithResult(_0x21b8cf,0xc9))[_0xf734('0x41')](handleError(_0x21b8cf,null));};exports['update']=function(_0x42e874,_0x5b3569){if(_0x42e874[_0xf734('0x45')]['id']){delete _0x42e874[_0xf734('0x45')]['id'];}return db['FaxApplication'][_0xf734('0x44')]({'where':{'id':_0x42e874['params']['id']}})['then'](handleEntityNotFound(_0x5b3569,null))[_0xf734('0x24')](saveUpdates(_0x42e874[_0xf734('0x45')],null))[_0xf734('0x24')](respondWithResult(_0x5b3569,null))[_0xf734('0x41')](handleError(_0x5b3569,null));};exports['destroy']=function(_0x5b6948,_0x147aa3){return db[_0xf734('0x2b')][_0xf734('0x44')]({'where':{'id':_0x5b6948[_0xf734('0x46')]['id']}})[_0xf734('0x24')](handleEntityNotFound(_0x147aa3,null))[_0xf734('0x24')](removeEntity(_0x147aa3,null))['catch'](handleError(_0x147aa3,null));};
\ No newline at end of file
+var _0x34ce=['ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','show','params','includeAll','find','create','body','catch','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x34ce,0x1c5));var _0xe34c=function(_0x20beae,_0x5eac6d){_0x20beae=_0x20beae-0x0;var _0xf5725=_0x34ce[_0x20beae];return _0xf5725;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe34c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe34c('0x1'));var rp=require(_0xe34c('0x2'));var moment=require(_0xe34c('0x3'));var BPromise=require(_0xe34c('0x4'));var Mustache=require(_0xe34c('0x5'));var util=require(_0xe34c('0x6'));var path=require('path');var sox=require(_0xe34c('0x7'));var csv=require(_0xe34c('0x8'));var ejs=require(_0xe34c('0x9'));var fs=require('fs');var fs_extra=require(_0xe34c('0xa'));var _=require(_0xe34c('0xb'));var squel=require(_0xe34c('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe34c('0xd'));var toCsv=require(_0xe34c('0x8'));var querystring=require(_0xe34c('0xe'));var Papa=require(_0xe34c('0xf'));var Redis=require(_0xe34c('0x10'));var authService=require(_0xe34c('0x11'));var qs=require(_0xe34c('0x12'));var as=require(_0xe34c('0x13'));var hardwareService=require(_0xe34c('0x14'));var logger=require('../../config/logger')(_0xe34c('0x15'));var utils=require(_0xe34c('0x16'));var config=require(_0xe34c('0x17'));var licenseUtil=require(_0xe34c('0x18'));var db=require(_0xe34c('0x19'))['db'];function respondWithStatusCode(_0x430b4d,_0x500899){_0x500899=_0x500899||0xcc;return function(_0x2a5655){if(_0x2a5655){return _0x430b4d[_0xe34c('0x1a')](_0x500899);}return _0x430b4d[_0xe34c('0x1b')](_0x500899)[_0xe34c('0x1c')]();};}function respondWithResult(_0x465298,_0x2c35fd){_0x2c35fd=_0x2c35fd||0xc8;return function(_0x57c9a2){if(_0x57c9a2){return _0x465298[_0xe34c('0x1b')](_0x2c35fd)['json'](_0x57c9a2);}};}function respondWithFilteredResult(_0x3fd6d7,_0x387171){return function(_0xe638c4){if(_0xe638c4){var _0x303ca2=typeof _0x387171[_0xe34c('0x1d')]===_0xe34c('0x1e')&&typeof _0x387171[_0xe34c('0x1f')]===_0xe34c('0x1e');var _0x5f0f86=_0xe638c4[_0xe34c('0x20')];var _0x9b1ca6=_0x303ca2?0x0:_0x387171[_0xe34c('0x1d')];var _0x4b83ec=_0x303ca2?_0xe638c4[_0xe34c('0x20')]:_0x387171[_0xe34c('0x1d')]+_0x387171[_0xe34c('0x1f')];var _0x5a5b03;if(_0x4b83ec>=_0x5f0f86){_0x4b83ec=_0x5f0f86;_0x5a5b03=0xc8;}else{_0x5a5b03=0xce;}_0x3fd6d7[_0xe34c('0x1b')](_0x5a5b03);return _0x3fd6d7[_0xe34c('0x21')]('Content-Range',_0x9b1ca6+'-'+_0x4b83ec+'/'+_0x5f0f86)[_0xe34c('0x22')](_0xe638c4);}return null;};}function patchUpdates(_0x51a562){return function(_0xf1344){try{jsonpatch[_0xe34c('0x23')](_0xf1344,_0x51a562,!![]);}catch(_0x33aed1){return BPromise[_0xe34c('0x24')](_0x33aed1);}return _0xf1344[_0xe34c('0x25')]();};}function saveUpdates(_0x33caf9,_0x445a5b){return function(_0x4529a8){if(_0x4529a8){return _0x4529a8[_0xe34c('0x26')](_0x33caf9)[_0xe34c('0x27')](function(_0x1a2ce1){return _0x1a2ce1;});}return null;};}function removeEntity(_0x43b6d2,_0x4689ae){return function(_0x1b0636){if(_0x1b0636){return _0x1b0636[_0xe34c('0x28')]()['then'](function(){_0x43b6d2[_0xe34c('0x1b')](0xcc)[_0xe34c('0x1c')]();});}};}function handleEntityNotFound(_0x1c8a3b,_0x3c2350){return function(_0x45eb56){if(!_0x45eb56){_0x1c8a3b['sendStatus'](0x194);}return _0x45eb56;};}function handleError(_0x46ba83,_0xa87ded){_0xa87ded=_0xa87ded||0x1f4;return function(_0x140855){logger['error'](_0x140855[_0xe34c('0x29')]);if(_0x140855['name']){delete _0x140855[_0xe34c('0x2a')];}_0x46ba83[_0xe34c('0x1b')](_0xa87ded)[_0xe34c('0x2b')](_0x140855);};}exports[_0xe34c('0x2c')]=function(_0x45e89d,_0x3f468e){var _0x59724a={},_0x3ca48c={},_0x30943c={'count':0x0,'rows':[]};var _0xb09860=_[_0xe34c('0x2d')](db[_0xe34c('0x2e')][_0xe34c('0x2f')],function(_0x1cd2a2){return{'name':_0x1cd2a2[_0xe34c('0x30')],'type':_0x1cd2a2[_0xe34c('0x31')]['key']};});_0x3ca48c[_0xe34c('0x32')]=_['map'](_0xb09860,'name');_0x3ca48c[_0xe34c('0x33')]=_[_0xe34c('0x34')](_0x45e89d[_0xe34c('0x33')]);_0x3ca48c[_0xe34c('0x35')]=_[_0xe34c('0x36')](_0x3ca48c[_0xe34c('0x32')],_0x3ca48c[_0xe34c('0x33')]);_0x59724a[_0xe34c('0x37')]=_[_0xe34c('0x36')](_0x3ca48c[_0xe34c('0x32')],qs[_0xe34c('0x38')](_0x45e89d['query'][_0xe34c('0x38')]));_0x59724a[_0xe34c('0x37')]=_0x59724a[_0xe34c('0x37')][_0xe34c('0x39')]?_0x59724a[_0xe34c('0x37')]:_0x3ca48c[_0xe34c('0x32')];if(!_0x45e89d['query'][_0xe34c('0x3a')](_0xe34c('0x3b'))){_0x59724a['limit']=qs[_0xe34c('0x1f')](_0x45e89d[_0xe34c('0x33')][_0xe34c('0x1f')]);_0x59724a['offset']=qs[_0xe34c('0x1d')](_0x45e89d[_0xe34c('0x33')][_0xe34c('0x1d')]);}_0x59724a[_0xe34c('0x3c')]=qs[_0xe34c('0x3d')](_0x45e89d[_0xe34c('0x33')][_0xe34c('0x3d')]);_0x59724a['where']=qs[_0xe34c('0x35')](_[_0xe34c('0x3e')](_0x45e89d[_0xe34c('0x33')],_0x3ca48c[_0xe34c('0x35')]),_0xb09860);if(_0x45e89d['query'][_0xe34c('0x3f')]){_0x59724a['where']=_['merge'](_0x59724a[_0xe34c('0x40')],{'$or':_[_0xe34c('0x2d')](_0xb09860,function(_0x1a53d0){if(_0x1a53d0[_0xe34c('0x31')]!==_0xe34c('0x41')){var _0x145909={};_0x145909[_0x1a53d0[_0xe34c('0x2a')]]={'$like':'%'+_0x45e89d[_0xe34c('0x33')]['filter']+'%'};return _0x145909;}})});}_0x59724a=_[_0xe34c('0x42')]({},_0x59724a,_0x45e89d[_0xe34c('0x43')]);var _0x41fff6={'where':_0x59724a['where']};return db[_0xe34c('0x2e')][_0xe34c('0x20')](_0x41fff6)[_0xe34c('0x27')](function(_0x1eccec){_0x30943c[_0xe34c('0x20')]=_0x1eccec;if(_0x45e89d[_0xe34c('0x33')]['includeAll']){_0x59724a[_0xe34c('0x44')]=[{'all':!![]}];}return db[_0xe34c('0x2e')][_0xe34c('0x45')](_0x59724a);})['then'](function(_0x3f982){_0x30943c['rows']=_0x3f982;return _0x30943c;})[_0xe34c('0x27')](respondWithFilteredResult(_0x3f468e,_0x59724a))['catch'](handleError(_0x3f468e,null));};exports[_0xe34c('0x46')]=function(_0x5025c2,_0x2cf67f){var _0x53bd1a={'raw':!![],'where':{'id':_0x5025c2[_0xe34c('0x47')]['id']}},_0x343276={};_0x343276['model']=_['keys'](db[_0xe34c('0x2e')][_0xe34c('0x2f')]);_0x343276[_0xe34c('0x33')]=_['keys'](_0x5025c2[_0xe34c('0x33')]);_0x343276[_0xe34c('0x35')]=_[_0xe34c('0x36')](_0x343276[_0xe34c('0x32')],_0x343276['query']);_0x53bd1a[_0xe34c('0x37')]=_[_0xe34c('0x36')](_0x343276[_0xe34c('0x32')],qs[_0xe34c('0x38')](_0x5025c2[_0xe34c('0x33')]['fields']));_0x53bd1a['attributes']=_0x53bd1a[_0xe34c('0x37')][_0xe34c('0x39')]?_0x53bd1a[_0xe34c('0x37')]:_0x343276['model'];if(_0x5025c2['query'][_0xe34c('0x48')]){_0x53bd1a[_0xe34c('0x44')]=[{'all':!![]}];}_0x53bd1a=_[_0xe34c('0x42')]({},_0x53bd1a,_0x5025c2[_0xe34c('0x43')]);return db[_0xe34c('0x2e')][_0xe34c('0x49')](_0x53bd1a)[_0xe34c('0x27')](handleEntityNotFound(_0x2cf67f,null))['then'](respondWithResult(_0x2cf67f,null))['catch'](handleError(_0x2cf67f,null));};exports['create']=function(_0x4fec75,_0x32dd0f){return db[_0xe34c('0x2e')][_0xe34c('0x4a')](_0x4fec75[_0xe34c('0x4b')],{})[_0xe34c('0x27')](respondWithResult(_0x32dd0f,0xc9))[_0xe34c('0x4c')](handleError(_0x32dd0f,null));};exports[_0xe34c('0x26')]=function(_0x3f29a7,_0x2b0fac){if(_0x3f29a7['body']['id']){delete _0x3f29a7[_0xe34c('0x4b')]['id'];}return db['FaxApplication'][_0xe34c('0x49')]({'where':{'id':_0x3f29a7[_0xe34c('0x47')]['id']}})[_0xe34c('0x27')](handleEntityNotFound(_0x2b0fac,null))[_0xe34c('0x27')](saveUpdates(_0x3f29a7['body'],null))[_0xe34c('0x27')](respondWithResult(_0x2b0fac,null))[_0xe34c('0x4c')](handleError(_0x2b0fac,null));};exports['destroy']=function(_0x56b55f,_0x43135f){return db[_0xe34c('0x2e')][_0xe34c('0x49')]({'where':{'id':_0x56b55f[_0xe34c('0x47')]['id']}})[_0xe34c('0x27')](handleEntityNotFound(_0x43135f,null))[_0xe34c('0x27')](removeEntity(_0x43135f,null))['catch'](handleError(_0x43135f,null));};
\ No newline at end of file
index d7fa42c..41da0a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa86d=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./faxApplication.attributes','exports','define','fax_applications','utf8mb4'];(function(_0x33ed3d,_0x3bb505){var _0x26bc4e=function(_0x1fbcec){while(--_0x1fbcec){_0x33ed3d['push'](_0x33ed3d['shift']());}};_0x26bc4e(++_0x3bb505);}(_0xa86d,0xfd));var _0xda86=function(_0x421aa7,_0x233551){_0x421aa7=_0x421aa7-0x0;var _0x51f048=_0xa86d[_0x421aa7];return _0x51f048;};'use strict';var _=require(_0xda86('0x0'));var util=require(_0xda86('0x1'));var logger=require(_0xda86('0x2'))('api');var moment=require(_0xda86('0x3'));var BPromise=require(_0xda86('0x4'));var rp=require(_0xda86('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xda86('0x6'));var config=require(_0xda86('0x7'));var attributes=require(_0xda86('0x8'));module[_0xda86('0x9')]=function(_0x44038e,_0x491c8c){return _0x44038e[_0xda86('0xa')]('FaxApplication',attributes,{'tableName':_0xda86('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xda86('0xc'),'collate':_0xda86('0xd')});};
\ No newline at end of file
+var _0xf45f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4','lodash','util','../../config/logger'];(function(_0xbc4659,_0x578fba){var _0x5831f9=function(_0x5eb0eb){while(--_0x5eb0eb){_0xbc4659['push'](_0xbc4659['shift']());}};_0x5831f9(++_0x578fba);}(_0xf45f,0x1dd));var _0xff45=function(_0x3bb8da,_0x197bbd){_0x3bb8da=_0x3bb8da-0x0;var _0x2df98a=_0xf45f[_0x3bb8da];return _0x2df98a;};'use strict';var _=require(_0xff45('0x0'));var util=require(_0xff45('0x1'));var logger=require(_0xff45('0x2'))(_0xff45('0x3'));var moment=require(_0xff45('0x4'));var BPromise=require(_0xff45('0x5'));var rp=require(_0xff45('0x6'));var fs=require('fs');var path=require(_0xff45('0x7'));var rimraf=require(_0xff45('0x8'));var config=require(_0xff45('0x9'));var attributes=require(_0xff45('0xa'));module['exports']=function(_0x52a857,_0x4ee780){return _0x52a857[_0xff45('0xb')](_0xff45('0xc'),attributes,{'tableName':_0xff45('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xff45('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1debdb6..a1a0e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd710=['stringify','error','message','info','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','limit','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s'];(function(_0x2049db,_0x5075fe){var _0x2339f8=function(_0x3740bb){while(--_0x3740bb){_0x2049db['push'](_0x2049db['shift']());}};_0x2339f8(++_0x5075fe);}(_0xd710,0x12c));var _0x0d71=function(_0x4ec084,_0x41c5ff){_0x4ec084=_0x4ec084-0x0;var _0x80a134=_0xd710[_0x4ec084];return _0x80a134;};'use strict';var _=require(_0x0d71('0x0'));var util=require(_0x0d71('0x1'));var moment=require(_0x0d71('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d71('0x3'))['db'];var utils=require(_0x0d71('0x4'));var logger=require(_0x0d71('0x5'))('rpc');var config=require(_0x0d71('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36ce99,_0x4a29b6,_0x328166){return new BPromise(function(_0x405f1c,_0xf99a9b){return client['request'](_0x36ce99,_0x328166)[_0x0d71('0x7')](function(_0x440819){logger['info'](_0x0d71('0x8'),_0x4a29b6,_0x0d71('0x9'));logger[_0x0d71('0xa')](_0x0d71('0xb'),_0x4a29b6,_0x0d71('0x9'),JSON[_0x0d71('0xc')](_0x440819));if(_0x440819[_0x0d71('0xd')]){if(_0x440819[_0x0d71('0xd')]['code']===0x1f4){logger[_0x0d71('0xd')](_0x0d71('0x8'),_0x4a29b6,_0x440819[_0x0d71('0xd')]['message']);return _0xf99a9b(_0x440819[_0x0d71('0xd')][_0x0d71('0xe')]);}logger[_0x0d71('0xd')](_0x0d71('0x8'),_0x4a29b6,_0x440819[_0x0d71('0xd')][_0x0d71('0xe')]);return _0x405f1c(_0x440819['error'][_0x0d71('0xe')]);}else{logger[_0x0d71('0xf')](_0x0d71('0x8'),_0x4a29b6,_0x0d71('0x9'));_0x405f1c(_0x440819['result'][_0x0d71('0xe')]);}})[_0x0d71('0x10')](function(_0x1e3ee6){logger[_0x0d71('0xd')]('FaxApplication,\x20%s,\x20%s',_0x4a29b6,_0x1e3ee6);_0xf99a9b(_0x1e3ee6);});});}exports[_0x0d71('0x11')]=function(_0x467833){var _0x4bebb5=this;return new Promise(function(_0x29ef25,_0x20186b){return db[_0x0d71('0x12')][_0x0d71('0x13')](_0x467833[_0x0d71('0x14')],{'raw':_0x467833[_0x0d71('0x15')]?_0x467833[_0x0d71('0x15')][_0x0d71('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x467833['options']?_0x467833[_0x0d71('0x15')][_0x0d71('0x17')]||null:null,'attributes':_0x467833['options']?_0x467833['options'][_0x0d71('0x18')]||null:null,'limit':_0x467833[_0x0d71('0x15')]?_0x467833[_0x0d71('0x15')][_0x0d71('0x19')]||null:null})['then'](function(_0x409baf){logger[_0x0d71('0xf')](_0x0d71('0x11'),_0x467833);logger['debug'](_0x0d71('0x11'),_0x467833,JSON[_0x0d71('0xc')](_0x409baf));_0x29ef25(_0x409baf);})[_0x0d71('0x10')](function(_0x561595){logger[_0x0d71('0xd')](_0x0d71('0x11'),_0x561595[_0x0d71('0xe')],_0x467833);_0x20186b(_0x4bebb5[_0x0d71('0xd')](0x1f4,_0x561595[_0x0d71('0xe')]));});});};
\ No newline at end of file
+var _0xa8f4=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','limit','util','moment'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xa8f4,0x13e));var _0x4a8f=function(_0x58fb8c,_0x3c57e7){_0x58fb8c=_0x58fb8c-0x0;var _0x18534f=_0xa8f4[_0x58fb8c];return _0x18534f;};'use strict';var _=require('lodash');var util=require(_0x4a8f('0x0'));var moment=require(_0x4a8f('0x1'));var BPromise=require(_0x4a8f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4a8f('0x3'));var db=require(_0x4a8f('0x4'))['db'];var utils=require(_0x4a8f('0x5'));var logger=require(_0x4a8f('0x6'))(_0x4a8f('0x7'));var config=require('../../config/environment');var jayson=require(_0x4a8f('0x8'));var client=jayson[_0x4a8f('0x9')][_0x4a8f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d0f6e,_0x218f86,_0x437188){return new BPromise(function(_0x22230f,_0x6688ea){return client[_0x4a8f('0xb')](_0x5d0f6e,_0x437188)[_0x4a8f('0xc')](function(_0x51b60b){logger['info'](_0x4a8f('0xd'),_0x218f86,_0x4a8f('0xe'));logger[_0x4a8f('0xf')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x218f86,_0x4a8f('0xe'),JSON[_0x4a8f('0x10')](_0x51b60b));if(_0x51b60b[_0x4a8f('0x11')]){if(_0x51b60b[_0x4a8f('0x11')][_0x4a8f('0x12')]===0x1f4){logger[_0x4a8f('0x11')](_0x4a8f('0xd'),_0x218f86,_0x51b60b[_0x4a8f('0x11')][_0x4a8f('0x13')]);return _0x6688ea(_0x51b60b[_0x4a8f('0x11')][_0x4a8f('0x13')]);}logger['error'](_0x4a8f('0xd'),_0x218f86,_0x51b60b[_0x4a8f('0x11')][_0x4a8f('0x13')]);return _0x22230f(_0x51b60b[_0x4a8f('0x11')][_0x4a8f('0x13')]);}else{logger[_0x4a8f('0x14')]('FaxApplication,\x20%s,\x20%s',_0x218f86,'request\x20sent');_0x22230f(_0x51b60b[_0x4a8f('0x15')][_0x4a8f('0x13')]);}})[_0x4a8f('0x16')](function(_0x47990c){logger[_0x4a8f('0x11')](_0x4a8f('0xd'),_0x218f86,_0x47990c);_0x6688ea(_0x47990c);});});}exports[_0x4a8f('0x17')]=function(_0x312804){var _0x242f8f=this;return new Promise(function(_0x38f2c3,_0x44a20c){return db[_0x4a8f('0x18')][_0x4a8f('0x19')](_0x312804[_0x4a8f('0x1a')],{'raw':_0x312804[_0x4a8f('0x1b')]?_0x312804[_0x4a8f('0x1b')][_0x4a8f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x312804[_0x4a8f('0x1b')]?_0x312804[_0x4a8f('0x1b')][_0x4a8f('0x1d')]||null:null,'attributes':_0x312804[_0x4a8f('0x1b')]?_0x312804['options'][_0x4a8f('0x1e')]||null:null,'limit':_0x312804[_0x4a8f('0x1b')]?_0x312804['options'][_0x4a8f('0x1f')]||null:null})[_0x4a8f('0xc')](function(_0x3acaa7){logger['info'](_0x4a8f('0x17'),_0x312804);logger[_0x4a8f('0xf')]('UpdateFaxApplication',_0x312804,JSON['stringify'](_0x3acaa7));_0x38f2c3(_0x3acaa7);})[_0x4a8f('0x16')](function(_0x2a6fa8){logger[_0x4a8f('0x11')](_0x4a8f('0x17'),_0x2a6fa8[_0x4a8f('0x13')],_0x312804);_0x44a20c(_0x242f8f[_0x4a8f('0x11')](0x1f4,_0x2a6fa8[_0x4a8f('0x13')]));});});};
\ No newline at end of file
index b63c665..7447c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','update','destroy','exports','multer','util','connect-timeout'];(function(_0x4ee565,_0x2be514){var _0x31f962=function(_0x38e497){while(--_0x38e497){_0x4ee565['push'](_0x4ee565['shift']());}};_0x31f962(++_0x2be514);}(_0x4024,0x89));var _0x4402=function(_0x311b4a,_0x3e92cd){_0x311b4a=_0x311b4a-0x0;var _0x4f5bc7=_0x4024[_0x311b4a];return _0x4f5bc7;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./faxApplication.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['post']('/',auth[_0x4402('0x7')](),controller['create']);router['put'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xb')]);router['delete'](_0x4402('0xa'),auth['isAuthenticated'](),controller[_0x4402('0xc')]);module[_0x4402('0xd')]=router;
\ No newline at end of file
+var _0xed3c=['index','show','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./faxApplication.controller','get','isAuthenticated'];(function(_0x347dc5,_0x4398de){var _0x41b271=function(_0x1bc435){while(--_0x1bc435){_0x347dc5['push'](_0x347dc5['shift']());}};_0x41b271(++_0x4398de);}(_0xed3c,0x1a6));var _0xced3=function(_0x459c09,_0x596ed4){_0x459c09=_0x459c09-0x0;var _0x2aee20=_0xed3c[_0x459c09];return _0x2aee20;};'use strict';var multer=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var path=require(_0xced3('0x2'));var timeout=require(_0xced3('0x3'));var express=require('express');var router=express[_0xced3('0x4')]();var fs_extra=require(_0xced3('0x5'));var auth=require(_0xced3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xced3('0x7'));router[_0xced3('0x8')]('/',auth[_0xced3('0x9')](),controller[_0xced3('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xced3('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xced3('0xc')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0xe')]);router[_0xced3('0xf')]('/:id',auth[_0xced3('0x9')](),controller[_0xced3('0x10')]);module[_0xced3('0x11')]=router;
\ No newline at end of file
index a3c5af7..00a7fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3619=['STRING','DATE','ENUM','out','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3619,0x6a));var _0x9361=function(_0x3e0dc4,_0x13971b){_0x3e0dc4=_0x3e0dc4-0x0;var _0x586111=_0x3619[_0x3e0dc4];return _0x586111;};'use strict';var Sequelize=require(_0x9361('0x0'));module[_0x9361('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9361('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9361('0x2')]},'note':{'type':Sequelize[_0x9361('0x2')]},'read1stAt':{'type':Sequelize[_0x9361('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0x9361('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9361('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9361('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x5239=['out','ENUM','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5239,0x72));var _0x9523=function(_0x460df5,_0x4d2c8f){_0x460df5=_0x460df5-0x0;var _0x1d58f0=_0x5239[_0x460df5];return _0x1d58f0;};'use strict';var Sequelize=require(_0x9523('0x0'));module[_0x9523('0x1')]={'closed':{'type':Sequelize[_0x9523('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9523('0x3')]},'disposition':{'type':Sequelize[_0x9523('0x4')]},'secondDisposition':{'type':Sequelize[_0x9523('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9523('0x4')]},'note':{'type':Sequelize[_0x9523('0x4')]},'read1stAt':{'type':Sequelize[_0x9523('0x3')]},'fax':{'type':Sequelize[_0x9523('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9523('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x9523('0x6')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 22d3e33..bd32907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7a9=['stack','name','send','map','FaxInteraction','fieldName','type','key','findAll','fax','query','user','catch','show','params','model','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','describe','addMessage','FaxMessage','ids','getMessages','findOne','keys','filters','hasOwnProperty','order','sort','pick','where','filter','$gte','split','format','rows','addTags','setTags','omit','spread','color','emit','faxInteractionTags:save','removeTags','download','toString','server','tmp','join','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','existsSync','createReadStream','pipe','createWriteStream','log','err','zip-dir','moment','bluebird','util','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./faxInteraction.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','set','update','then','error'];(function(_0x2bbc07,_0x1e2168){var _0x6879e4=function(_0x290fa1){while(--_0x290fa1){_0x2bbc07['push'](_0x2bbc07['shift']());}};_0x6879e4(++_0x1e2168);}(_0xb7a9,0x110));var _0x9b7a=function(_0x38eeae,_0x325e53){_0x38eeae=_0x38eeae-0x0;var _0x176470=_0xb7a9[_0x38eeae];return _0x176470;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x9b7a('0x0'));var moment=require(_0x9b7a('0x1'));var BPromise=require(_0x9b7a('0x2'));var util=require(_0x9b7a('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x9b7a('0x4'));var Redis=require('ioredis');var interaction=require(_0x9b7a('0x5'));var qs=require(_0x9b7a('0x6'));var logger=require(_0x9b7a('0x7'))(_0x9b7a('0x8'));var config=require(_0x9b7a('0x9'));var db=require(_0x9b7a('0xa'))['db'];config['redis']=_[_0x9b7a('0xb')](config[_0x9b7a('0xc')],{'host':_0x9b7a('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x9b7a('0xe'))[_0x9b7a('0xf')](socket);function respondWithStatusCode(_0x4ef131,_0x5359f6){_0x5359f6=_0x5359f6||0xcc;return function(_0x31d3a1){if(_0x31d3a1){return _0x4ef131[_0x9b7a('0x10')](_0x5359f6);}return _0x4ef131['status'](_0x5359f6)[_0x9b7a('0x11')]();};}function respondWithResult(_0x1f910a,_0x3d1eb8){_0x3d1eb8=_0x3d1eb8||0xc8;return function(_0x3c53ab){if(_0x3c53ab){return _0x1f910a[_0x9b7a('0x12')](_0x3d1eb8)[_0x9b7a('0x13')](_0x3c53ab);}};}function respondWithFilteredResult(_0x571a88,_0x3e3f8a){return function(_0x4c6b20){if(_0x4c6b20){var _0xb3dea5=typeof _0x3e3f8a['offset']===_0x9b7a('0x14')&&typeof _0x3e3f8a[_0x9b7a('0x15')]===_0x9b7a('0x14');var _0x116503=_0x4c6b20[_0x9b7a('0x16')];var _0x597bcb=_0xb3dea5?0x0:_0x3e3f8a[_0x9b7a('0x17')];var _0xa05b0f=_0xb3dea5?_0x4c6b20[_0x9b7a('0x16')]:_0x3e3f8a[_0x9b7a('0x17')]+_0x3e3f8a[_0x9b7a('0x15')];var _0x30978c;if(_0xa05b0f>=_0x116503){_0xa05b0f=_0x116503;_0x30978c=0xc8;}else{_0x30978c=0xce;}_0x571a88['status'](_0x30978c);return _0x571a88[_0x9b7a('0x18')]('Content-Range',_0x597bcb+'-'+_0xa05b0f+'/'+_0x116503)[_0x9b7a('0x13')](_0x4c6b20);}return null;};}function saveUpdates(_0xdc6f15){return function(_0xd28c3a){if(_0xd28c3a){return _0xd28c3a[_0x9b7a('0x19')](_0xdc6f15)[_0x9b7a('0x1a')](function(_0x1baf23){return _0x1baf23;});}return null;};}function removeEntity(_0x23378a){return function(_0x3e4b8f){if(_0x3e4b8f){return _0x3e4b8f['destroy']()[_0x9b7a('0x1a')](function(){_0x23378a[_0x9b7a('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f8a1d){return function(_0x2a089c){if(!_0x2a089c){_0x2f8a1d['sendStatus'](0x194);}return _0x2a089c;};}function handleError(_0x1c4b6c,_0x9e3413){_0x9e3413=_0x9e3413||0x1f4;return function(_0x5b311a){logger[_0x9b7a('0x1b')](_0x5b311a[_0x9b7a('0x1c')]);if(_0x5b311a['name']){delete _0x5b311a[_0x9b7a('0x1d')];}_0x1c4b6c[_0x9b7a('0x12')](_0x9e3413)[_0x9b7a('0x1e')](_0x5b311a);};}exports['index']=function(_0x2315b1,_0x515ba5){var _0x525d37={};var _0x1d9f85=_[_0x9b7a('0x1f')](db[_0x9b7a('0x20')]['rawAttributes'],function(_0x2c3eec){return{'name':_0x2c3eec[_0x9b7a('0x21')],'type':_0x2c3eec[_0x9b7a('0x22')][_0x9b7a('0x23')]};});_0x525d37=qs['getOptions'](_0x1d9f85,_0x2315b1);return interaction[_0x9b7a('0x24')](_0x9b7a('0x25'),_0x2315b1[_0x9b7a('0x26')],_0x2315b1[_0x9b7a('0x27')],_0x525d37,_0x1d9f85)[_0x9b7a('0x1a')](respondWithFilteredResult(_0x515ba5,_0x525d37))[_0x9b7a('0x28')](handleError(_0x515ba5,null));};exports[_0x9b7a('0x29')]=function(_0x1d9a30,_0x339d23){var _0x3ea09a={'raw':![],'where':{'id':_0x1d9a30[_0x9b7a('0x2a')]['id']}},_0x326140={};_0x326140[_0x9b7a('0x2b')]=_['keys'](db[_0x9b7a('0x20')]['rawAttributes']);_0x326140[_0x9b7a('0x26')]=_['keys'](_0x1d9a30['query']);_0x326140['filters']=_[_0x9b7a('0x2c')](_0x326140[_0x9b7a('0x2b')],_0x326140['query']);_0x3ea09a[_0x9b7a('0x2d')]=_[_0x9b7a('0x2c')](_0x326140['model'],qs[_0x9b7a('0x2e')](_0x1d9a30['query'][_0x9b7a('0x2e')]));_0x3ea09a[_0x9b7a('0x2d')]=_0x3ea09a[_0x9b7a('0x2d')][_0x9b7a('0x2f')]?_0x3ea09a[_0x9b7a('0x2d')]:_0x326140[_0x9b7a('0x2b')];if(_0x1d9a30[_0x9b7a('0x26')][_0x9b7a('0x30')]){_0x3ea09a[_0x9b7a('0x31')]=[{'all':!![]}];}_0x3ea09a=_[_0x9b7a('0x32')]({},_0x3ea09a,_0x1d9a30[_0x9b7a('0x33')]);return db[_0x9b7a('0x20')][_0x9b7a('0x34')](_0x3ea09a)[_0x9b7a('0x1a')](handleEntityNotFound(_0x339d23,null))['then'](respondWithResult(_0x339d23,null))[_0x9b7a('0x28')](handleError(_0x339d23,null));};exports[_0x9b7a('0x35')]=function(_0x256c14,_0x204c91){return db['FaxInteraction'][_0x9b7a('0x35')](_0x256c14[_0x9b7a('0x36')],{})[_0x9b7a('0x1a')](respondWithResult(_0x204c91,0xc9))[_0x9b7a('0x28')](handleError(_0x204c91,null));};exports[_0x9b7a('0x19')]=function(_0x56325c,_0x4465b9){if(_0x56325c[_0x9b7a('0x36')]['id']){delete _0x56325c[_0x9b7a('0x36')]['id'];}return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x56325c[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x4465b9,null))[_0x9b7a('0x1a')](saveUpdates(_0x56325c[_0x9b7a('0x36')],null))[_0x9b7a('0x1a')](respondWithResult(_0x4465b9,null))[_0x9b7a('0x28')](handleError(_0x4465b9,null));};exports['destroy']=function(_0x2c972b,_0x5de357){return db['FaxInteraction']['find']({'where':{'id':_0x2c972b['params']['id']}})['then'](handleEntityNotFound(_0x5de357,null))['then'](removeEntity(_0x5de357,null))['catch'](handleError(_0x5de357,null));};exports['describe']=function(_0x3f5ba7,_0x2a8996){return db[_0x9b7a('0x20')][_0x9b7a('0x37')]()['then'](respondWithResult(_0x2a8996,null))[_0x9b7a('0x28')](handleError(_0x2a8996,null));};exports[_0x9b7a('0x38')]=function(_0x332b0e,_0x39077f){return db[_0x9b7a('0x39')][_0x9b7a('0x34')]({'where':{'id':_0x332b0e[_0x9b7a('0x2a')]['id']}})['then'](handleEntityNotFound(_0x39077f,null))[_0x9b7a('0x1a')](function(_0x3a0c30){if(_0x3a0c30){return _0x3a0c30[_0x9b7a('0x38')](_0x332b0e[_0x9b7a('0x36')]['ids'],_['omit'](_0x332b0e[_0x9b7a('0x36')],[_0x9b7a('0x3a'),'id'])||{});}})[_0x9b7a('0x1a')](respondWithResult(_0x39077f,null))[_0x9b7a('0x28')](handleError(_0x39077f,null));};exports[_0x9b7a('0x3b')]=function(_0x13e836,_0x26ac77){var _0x48f645={'raw':![],'where':{}};var _0x21b87b={};var _0x397fde={'count':0x0,'rows':[]};return db['FaxInteraction'][_0x9b7a('0x3c')]({'where':{'id':_0x13e836[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x26ac77,null))[_0x9b7a('0x1a')](function(_0x306e68){if(_0x306e68){_0x21b87b['model']=_[_0x9b7a('0x3d')](db[_0x9b7a('0x39')]['rawAttributes']);_0x21b87b['query']=_[_0x9b7a('0x3d')](_0x13e836['query']);_0x21b87b[_0x9b7a('0x3e')]=_[_0x9b7a('0x2c')](_0x21b87b[_0x9b7a('0x2b')],_0x21b87b[_0x9b7a('0x26')]);_0x48f645[_0x9b7a('0x2d')]=_['intersection'](_0x21b87b['model'],qs[_0x9b7a('0x2e')](_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x2e')]));_0x48f645['attributes']=_0x48f645[_0x9b7a('0x2d')][_0x9b7a('0x2f')]?_0x48f645[_0x9b7a('0x2d')]:_0x21b87b['model'];if(!_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x3f')]('nolimit')){_0x48f645[_0x9b7a('0x15')]=qs[_0x9b7a('0x15')](_0x13e836['query'][_0x9b7a('0x15')]);_0x48f645[_0x9b7a('0x17')]=qs[_0x9b7a('0x17')](_0x13e836['query'][_0x9b7a('0x17')]);}_0x48f645[_0x9b7a('0x40')]=qs[_0x9b7a('0x41')](_0x13e836['query'][_0x9b7a('0x41')]);_0x48f645['where']=qs[_0x9b7a('0x3e')](_[_0x9b7a('0x42')](_0x13e836[_0x9b7a('0x26')],_0x21b87b[_0x9b7a('0x3e')]));_0x48f645[_0x9b7a('0x43')]['FaxInteractionId']=_0x306e68['id'];if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x44')]){_0x48f645[_0x9b7a('0x43')]=_[_0x9b7a('0x32')](_0x48f645[_0x9b7a('0x43')],{'$or':_[_0x9b7a('0x1f')](_0x48f645[_0x9b7a('0x2d')],function(_0x2e8e58){var _0x54f77a={};_0x54f77a[_0x2e8e58]={'$like':'%'+_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x44')]+'%'};return _0x54f77a;})});}if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x45')]){var _0x4092ac=_0x13e836['query'][_0x9b7a('0x45')][_0x9b7a('0x46')](',');var _0x160d6f={};_0x160d6f[_0x4092ac[0x0]]={'$gte':moment(_0x4092ac[0x1])[_0x9b7a('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x48f645[_0x9b7a('0x43')]=_[_0x9b7a('0x32')](_0x48f645[_0x9b7a('0x43')],_0x160d6f);}_0x48f645=_['merge']({},_0x48f645,_0x13e836[_0x9b7a('0x33')]);return db[_0x9b7a('0x39')][_0x9b7a('0x16')]({'where':_0x48f645[_0x9b7a('0x43')]})[_0x9b7a('0x1a')](function(_0x49b7d2){_0x397fde[_0x9b7a('0x16')]=_0x49b7d2;if(_0x13e836[_0x9b7a('0x26')][_0x9b7a('0x30')]){_0x48f645[_0x9b7a('0x31')]=[{'all':!![]}];}return db[_0x9b7a('0x39')][_0x9b7a('0x24')](_0x48f645);})[_0x9b7a('0x1a')](function(_0x3c084c){_0x397fde[_0x9b7a('0x48')]=_0x3c084c;return _0x397fde;});}})[_0x9b7a('0x1a')](respondWithFilteredResult(_0x26ac77,_0x48f645))[_0x9b7a('0x28')](handleError(_0x26ac77,null));};exports[_0x9b7a('0x49')]=function(_0x55d13d,_0x3f0d19){return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x55d13d[_0x9b7a('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3f0d19,null))[_0x9b7a('0x1a')](function(_0xfb4fcd){if(_0xfb4fcd){return _0xfb4fcd[_0x9b7a('0x4a')](_0x55d13d[_0x9b7a('0x36')][_0x9b7a('0x3a')],_[_0x9b7a('0x4b')](_0x55d13d[_0x9b7a('0x36')],[_0x9b7a('0x3a'),'id'])||{})[_0x9b7a('0x4c')](function(){return db['Tag'][_0x9b7a('0x24')]({'attributes':['id','name',_0x9b7a('0x4d')],'where':{'id':_0x55d13d[_0x9b7a('0x36')]['ids']}});})[_0x9b7a('0x1a')](function(_0x21a6c7){socket[_0x9b7a('0x4e')](_0x9b7a('0x4f'),{'id':Number(_0x55d13d['params']['id']),'tags':_0x21a6c7||[]});return{'id':Number(_0x55d13d[_0x9b7a('0x2a')]['id']),'tags':_0x21a6c7||[]};});}})[_0x9b7a('0x1a')](respondWithResult(_0x3f0d19,null))['catch'](handleError(_0x3f0d19,null));};exports[_0x9b7a('0x50')]=function(_0x5958c7,_0x461d55){return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x5958c7[_0x9b7a('0x2a')]['id']}})[_0x9b7a('0x1a')](handleEntityNotFound(_0x461d55,null))[_0x9b7a('0x1a')](function(_0x10e91f){if(_0x10e91f){return _0x10e91f['removeTags'](_0x5958c7[_0x9b7a('0x26')][_0x9b7a('0x3a')]);}})['then'](respondWithStatusCode(_0x461d55,null))[_0x9b7a('0x28')](handleError(_0x461d55,null));};exports[_0x9b7a('0x51')]=function(_0x1e0f5e,_0x4490cb){var _0x96cdce=moment()['unix']()[_0x9b7a('0x52')]();var _0x4e9f17=path['join'](config['root'],_0x9b7a('0x53'),'files',_0x9b7a('0x54'));var _0xac77b4=path[_0x9b7a('0x55')](config['root'],'server','files',_0x9b7a('0x56'));var _0x2bc9a9=path[_0x9b7a('0x55')](_0x4e9f17,_0x96cdce);var _0x53a586=util[_0x9b7a('0x47')](_0x9b7a('0x57'),_0x1e0f5e['params']['id'],_0x96cdce);var _0x4860aa=path[_0x9b7a('0x55')](_0x4e9f17,_0x53a586);var _0x4f2c0f=[];_0x4f2c0f[_0x9b7a('0x58')]({'model':db[_0x9b7a('0x59')],'as':'Attachment','raw':!![]});var _0x12d27e=[{'model':db['FaxMessage'],'as':_0x9b7a('0x5a'),'attributes':['id',_0x9b7a('0x36'),_0x9b7a('0x5b')],'include':_0x4f2c0f}];return db[_0x9b7a('0x20')][_0x9b7a('0x34')]({'where':{'id':_0x1e0f5e[_0x9b7a('0x2a')]['id']},'include':_0x12d27e})['then'](handleEntityNotFound(_0x4490cb,null))[_0x9b7a('0x1a')](function(_0x33a08f){if(_0x33a08f&&_0x33a08f[_0x9b7a('0x5a')]){var _0x41c472=_0x33a08f[_0x9b7a('0x5c')]({'plain':!![]});fs['mkdirSync'](_0x2bc9a9);for(var _0x53a5c4=0x0;_0x53a5c4<_0x41c472['Messages'][_0x9b7a('0x2f')];_0x53a5c4++){var _0x1be1b2=_0x41c472[_0x9b7a('0x5a')][_0x53a5c4][_0x9b7a('0x59')];if(_0x1be1b2){var _0x4d4b35=path['join'](_0xac77b4,_0x1be1b2[_0x9b7a('0x5d')]);if(fs[_0x9b7a('0x5e')](_0x4d4b35)){fs[_0x9b7a('0x5f')](_0x4d4b35)[_0x9b7a('0x60')](fs[_0x9b7a('0x61')](path['join'](_0x2bc9a9,_0x1be1b2[_0x9b7a('0x5d')])));}}}return BPromise['resolve']()[_0x9b7a('0x1a')](function(){return new BPromise(function(_0x155957,_0x20fb5a){zipdir(_0x2bc9a9,{'saveTo':_0x4860aa},function(_0x2e9f80,_0x3d34cc){if(_0x2e9f80)return _0x20fb5a(_0x2e9f80);return _0x155957(_0x3d34cc);});})[_0x9b7a('0x1a')](function(){return new BPromise(function(_0x559872,_0x20e426){rimraf(_0x2bc9a9,function(_0x1c840b){if(_0x1c840b)_0x20e426(_0x1c840b);return _0x559872();});});})[_0x9b7a('0x1a')](function(){return _0x4490cb[_0x9b7a('0x51')](_0x4860aa,_0x53a586,function(_0x1b7da5){if(_0x1b7da5){console[_0x9b7a('0x62')](_0x9b7a('0x63'),_0x1b7da5);}else{fs['unlinkSync'](_0x4860aa);}});});});}else{return _0x4490cb['sendStatus'](0xc8);}})['catch'](handleError(_0x4490cb,null));};
\ No newline at end of file
+var _0xf5bd=['hasOwnProperty','nolimit','order','sort','where','pick','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','rows','addTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','moment','bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','destroy','then','end','error','name','send','index','map','FaxInteraction','fieldName','key','getOptions','findAll','fax','catch','show','params','model','keys','rawAttributes','query','attributes','fields','merge','create','body','update','find','describe','addMessage','FaxMessage','ids','omit','filters','intersection','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf5bd,0x165));var _0xdf5b=function(_0x8a30cf,_0x40f19b){_0x8a30cf=_0x8a30cf-0x0;var _0x20f439=_0xf5bd[_0x8a30cf];return _0x20f439;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xdf5b('0x0'));var BPromise=require(_0xdf5b('0x1'));var util=require('util');var path=require(_0xdf5b('0x2'));var fs=require('fs');var _=require(_0xdf5b('0x3'));var Redis=require(_0xdf5b('0x4'));var interaction=require(_0xdf5b('0x5'));var qs=require(_0xdf5b('0x6'));var logger=require('../../config/logger')(_0xdf5b('0x7'));var config=require('../../config/environment');var db=require(_0xdf5b('0x8'))['db'];config[_0xdf5b('0x9')]=_[_0xdf5b('0xa')](config[_0xdf5b('0x9')],{'host':_0xdf5b('0xb'),'port':0x18eb});var socket=require(_0xdf5b('0xc'))(new Redis(config[_0xdf5b('0x9')]));require('./faxInteraction.socket')[_0xdf5b('0xd')](socket);function respondWithStatusCode(_0x5aab09,_0x23001c){_0x23001c=_0x23001c||0xcc;return function(_0x1b900e){if(_0x1b900e){return _0x5aab09[_0xdf5b('0xe')](_0x23001c);}return _0x5aab09[_0xdf5b('0xf')](_0x23001c)['end']();};}function respondWithResult(_0x52d9c1,_0x14debc){_0x14debc=_0x14debc||0xc8;return function(_0x575756){if(_0x575756){return _0x52d9c1[_0xdf5b('0xf')](_0x14debc)[_0xdf5b('0x10')](_0x575756);}};}function respondWithFilteredResult(_0x307ba4,_0x3b66c7){return function(_0x423627){if(_0x423627){var _0x594b5f=typeof _0x3b66c7[_0xdf5b('0x11')]===_0xdf5b('0x12')&&typeof _0x3b66c7['limit']==='undefined';var _0x23d97b=_0x423627['count'];var _0x450eca=_0x594b5f?0x0:_0x3b66c7[_0xdf5b('0x11')];var _0x22f089=_0x594b5f?_0x423627[_0xdf5b('0x13')]:_0x3b66c7['offset']+_0x3b66c7[_0xdf5b('0x14')];var _0x1cd554;if(_0x22f089>=_0x23d97b){_0x22f089=_0x23d97b;_0x1cd554=0xc8;}else{_0x1cd554=0xce;}_0x307ba4[_0xdf5b('0xf')](_0x1cd554);return _0x307ba4[_0xdf5b('0x15')](_0xdf5b('0x16'),_0x450eca+'-'+_0x22f089+'/'+_0x23d97b)['json'](_0x423627);}return null;};}function saveUpdates(_0x457965){return function(_0x34d76a){if(_0x34d76a){return _0x34d76a['update'](_0x457965)['then'](function(_0x4e5885){return _0x4e5885;});}return null;};}function removeEntity(_0x26b3c9){return function(_0x4597fa){if(_0x4597fa){return _0x4597fa[_0xdf5b('0x17')]()[_0xdf5b('0x18')](function(){_0x26b3c9[_0xdf5b('0xf')](0xcc)[_0xdf5b('0x19')]();});}};}function handleEntityNotFound(_0x2504a1){return function(_0x29c870){if(!_0x29c870){_0x2504a1[_0xdf5b('0xe')](0x194);}return _0x29c870;};}function handleError(_0x3ab2d9,_0x5955b8){_0x5955b8=_0x5955b8||0x1f4;return function(_0x298523){logger[_0xdf5b('0x1a')](_0x298523['stack']);if(_0x298523[_0xdf5b('0x1b')]){delete _0x298523[_0xdf5b('0x1b')];}_0x3ab2d9[_0xdf5b('0xf')](_0x5955b8)[_0xdf5b('0x1c')](_0x298523);};}exports[_0xdf5b('0x1d')]=function(_0x5b8d10,_0x5d8994){var _0x45a76e={};var _0x5525ab=_[_0xdf5b('0x1e')](db[_0xdf5b('0x1f')]['rawAttributes'],function(_0x29f4ef){return{'name':_0x29f4ef[_0xdf5b('0x20')],'type':_0x29f4ef['type'][_0xdf5b('0x21')]};});_0x45a76e=qs[_0xdf5b('0x22')](_0x5525ab,_0x5b8d10);return interaction[_0xdf5b('0x23')](_0xdf5b('0x24'),_0x5b8d10['query'],_0x5b8d10['user'],_0x45a76e,_0x5525ab)[_0xdf5b('0x18')](respondWithFilteredResult(_0x5d8994,_0x45a76e))[_0xdf5b('0x25')](handleError(_0x5d8994,null));};exports[_0xdf5b('0x26')]=function(_0xf89131,_0x15dbc0){var _0x336590={'raw':![],'where':{'id':_0xf89131[_0xdf5b('0x27')]['id']}},_0x3df43d={};_0x3df43d[_0xdf5b('0x28')]=_[_0xdf5b('0x29')](db[_0xdf5b('0x1f')][_0xdf5b('0x2a')]);_0x3df43d[_0xdf5b('0x2b')]=_['keys'](_0xf89131['query']);_0x3df43d['filters']=_['intersection'](_0x3df43d[_0xdf5b('0x28')],_0x3df43d[_0xdf5b('0x2b')]);_0x336590[_0xdf5b('0x2c')]=_['intersection'](_0x3df43d[_0xdf5b('0x28')],qs[_0xdf5b('0x2d')](_0xf89131['query'][_0xdf5b('0x2d')]));_0x336590[_0xdf5b('0x2c')]=_0x336590[_0xdf5b('0x2c')]['length']?_0x336590['attributes']:_0x3df43d[_0xdf5b('0x28')];if(_0xf89131[_0xdf5b('0x2b')]['includeAll']){_0x336590['include']=[{'all':!![]}];}_0x336590=_[_0xdf5b('0x2e')]({},_0x336590,_0xf89131['options']);return db['FaxInteraction']['find'](_0x336590)['then'](handleEntityNotFound(_0x15dbc0,null))[_0xdf5b('0x18')](respondWithResult(_0x15dbc0,null))[_0xdf5b('0x25')](handleError(_0x15dbc0,null));};exports['create']=function(_0x303b21,_0x4d1654){return db[_0xdf5b('0x1f')][_0xdf5b('0x2f')](_0x303b21[_0xdf5b('0x30')],{})[_0xdf5b('0x18')](respondWithResult(_0x4d1654,0xc9))[_0xdf5b('0x25')](handleError(_0x4d1654,null));};exports[_0xdf5b('0x31')]=function(_0x313ec7,_0x358d7a){if(_0x313ec7[_0xdf5b('0x30')]['id']){delete _0x313ec7['body']['id'];}return db[_0xdf5b('0x1f')][_0xdf5b('0x32')]({'where':{'id':_0x313ec7['params']['id']}})[_0xdf5b('0x18')](handleEntityNotFound(_0x358d7a,null))[_0xdf5b('0x18')](saveUpdates(_0x313ec7['body'],null))[_0xdf5b('0x18')](respondWithResult(_0x358d7a,null))[_0xdf5b('0x25')](handleError(_0x358d7a,null));};exports[_0xdf5b('0x17')]=function(_0x45824b,_0x30c3db){return db[_0xdf5b('0x1f')][_0xdf5b('0x32')]({'where':{'id':_0x45824b['params']['id']}})[_0xdf5b('0x18')](handleEntityNotFound(_0x30c3db,null))[_0xdf5b('0x18')](removeEntity(_0x30c3db,null))['catch'](handleError(_0x30c3db,null));};exports['describe']=function(_0x215797,_0x3dbf84){return db['FaxInteraction'][_0xdf5b('0x33')]()[_0xdf5b('0x18')](respondWithResult(_0x3dbf84,null))['catch'](handleError(_0x3dbf84,null));};exports[_0xdf5b('0x34')]=function(_0x427dd6,_0x24663c){return db[_0xdf5b('0x35')][_0xdf5b('0x32')]({'where':{'id':_0x427dd6[_0xdf5b('0x27')]['id']}})[_0xdf5b('0x18')](handleEntityNotFound(_0x24663c,null))[_0xdf5b('0x18')](function(_0x34dc5f){if(_0x34dc5f){return _0x34dc5f[_0xdf5b('0x34')](_0x427dd6[_0xdf5b('0x30')][_0xdf5b('0x36')],_[_0xdf5b('0x37')](_0x427dd6[_0xdf5b('0x30')],[_0xdf5b('0x36'),'id'])||{});}})[_0xdf5b('0x18')](respondWithResult(_0x24663c,null))[_0xdf5b('0x25')](handleError(_0x24663c,null));};exports['getMessages']=function(_0xbbd640,_0x7edb33){var _0x4df5ff={'raw':![],'where':{}};var _0x3bb0b8={};var _0x119e8f={'count':0x0,'rows':[]};return db[_0xdf5b('0x1f')]['findOne']({'where':{'id':_0xbbd640[_0xdf5b('0x27')]['id']}})['then'](handleEntityNotFound(_0x7edb33,null))[_0xdf5b('0x18')](function(_0x266274){if(_0x266274){_0x3bb0b8[_0xdf5b('0x28')]=_[_0xdf5b('0x29')](db['FaxMessage']['rawAttributes']);_0x3bb0b8['query']=_['keys'](_0xbbd640[_0xdf5b('0x2b')]);_0x3bb0b8[_0xdf5b('0x38')]=_[_0xdf5b('0x39')](_0x3bb0b8[_0xdf5b('0x28')],_0x3bb0b8[_0xdf5b('0x2b')]);_0x4df5ff[_0xdf5b('0x2c')]=_[_0xdf5b('0x39')](_0x3bb0b8['model'],qs[_0xdf5b('0x2d')](_0xbbd640['query'][_0xdf5b('0x2d')]));_0x4df5ff[_0xdf5b('0x2c')]=_0x4df5ff[_0xdf5b('0x2c')][_0xdf5b('0x3a')]?_0x4df5ff[_0xdf5b('0x2c')]:_0x3bb0b8['model'];if(!_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x3b')](_0xdf5b('0x3c'))){_0x4df5ff[_0xdf5b('0x14')]=qs[_0xdf5b('0x14')](_0xbbd640[_0xdf5b('0x2b')]['limit']);_0x4df5ff['offset']=qs[_0xdf5b('0x11')](_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x11')]);}_0x4df5ff[_0xdf5b('0x3d')]=qs[_0xdf5b('0x3e')](_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x3e')]);_0x4df5ff[_0xdf5b('0x3f')]=qs['filters'](_[_0xdf5b('0x40')](_0xbbd640['query'],_0x3bb0b8[_0xdf5b('0x38')]));_0x4df5ff[_0xdf5b('0x3f')][_0xdf5b('0x41')]=_0x266274['id'];if(_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x42')]){_0x4df5ff['where']=_[_0xdf5b('0x2e')](_0x4df5ff[_0xdf5b('0x3f')],{'$or':_[_0xdf5b('0x1e')](_0x4df5ff[_0xdf5b('0x2c')],function(_0x59d931){var _0x41cb03={};_0x41cb03[_0x59d931]={'$like':'%'+_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x42')]+'%'};return _0x41cb03;})});}if(_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x43')]){var _0x50ad6f=_0xbbd640[_0xdf5b('0x2b')][_0xdf5b('0x43')][_0xdf5b('0x44')](',');var _0x1aea92={};_0x1aea92[_0x50ad6f[0x0]]={'$gte':moment(_0x50ad6f[0x1])[_0xdf5b('0x45')](_0xdf5b('0x46'))};_0x4df5ff[_0xdf5b('0x3f')]=_['merge'](_0x4df5ff[_0xdf5b('0x3f')],_0x1aea92);}_0x4df5ff=_[_0xdf5b('0x2e')]({},_0x4df5ff,_0xbbd640['options']);return db[_0xdf5b('0x35')][_0xdf5b('0x13')]({'where':_0x4df5ff['where']})['then'](function(_0x1cd864){_0x119e8f['count']=_0x1cd864;if(_0xbbd640['query'][_0xdf5b('0x47')]){_0x4df5ff[_0xdf5b('0x48')]=[{'all':!![]}];}return db[_0xdf5b('0x35')][_0xdf5b('0x23')](_0x4df5ff);})[_0xdf5b('0x18')](function(_0x5c39f5){_0x119e8f[_0xdf5b('0x49')]=_0x5c39f5;return _0x119e8f;});}})['then'](respondWithFilteredResult(_0x7edb33,_0x4df5ff))[_0xdf5b('0x25')](handleError(_0x7edb33,null));};exports[_0xdf5b('0x4a')]=function(_0x1b735d,_0x30ca6d){return db[_0xdf5b('0x1f')][_0xdf5b('0x32')]({'where':{'id':_0x1b735d[_0xdf5b('0x27')]['id']}})[_0xdf5b('0x18')](handleEntityNotFound(_0x30ca6d,null))[_0xdf5b('0x18')](function(_0x2f79bc){if(_0x2f79bc){return _0x2f79bc['setTags'](_0x1b735d[_0xdf5b('0x30')][_0xdf5b('0x36')],_['omit'](_0x1b735d[_0xdf5b('0x30')],[_0xdf5b('0x36'),'id'])||{})[_0xdf5b('0x4b')](function(){return db[_0xdf5b('0x4c')]['findAll']({'attributes':['id',_0xdf5b('0x1b'),_0xdf5b('0x4d')],'where':{'id':_0x1b735d['body']['ids']}});})[_0xdf5b('0x18')](function(_0x20ee92){socket[_0xdf5b('0x4e')](_0xdf5b('0x4f'),{'id':Number(_0x1b735d[_0xdf5b('0x27')]['id']),'tags':_0x20ee92||[]});return{'id':Number(_0x1b735d[_0xdf5b('0x27')]['id']),'tags':_0x20ee92||[]};});}})['then'](respondWithResult(_0x30ca6d,null))[_0xdf5b('0x25')](handleError(_0x30ca6d,null));};exports[_0xdf5b('0x50')]=function(_0x1c138e,_0x7cf162){return db[_0xdf5b('0x1f')][_0xdf5b('0x32')]({'where':{'id':_0x1c138e[_0xdf5b('0x27')]['id']}})['then'](handleEntityNotFound(_0x7cf162,null))[_0xdf5b('0x18')](function(_0x427d13){if(_0x427d13){return _0x427d13[_0xdf5b('0x50')](_0x1c138e[_0xdf5b('0x2b')]['ids']);}})[_0xdf5b('0x18')](respondWithStatusCode(_0x7cf162,null))['catch'](handleError(_0x7cf162,null));};exports[_0xdf5b('0x51')]=function(_0x2df2e7,_0xbf029a){var _0x369fa3=moment()[_0xdf5b('0x52')]()['toString']();var _0xaebe3b=path[_0xdf5b('0x53')](config[_0xdf5b('0x54')],_0xdf5b('0x55'),_0xdf5b('0x56'),_0xdf5b('0x57'));var _0x4d18d6=path['join'](config[_0xdf5b('0x54')],_0xdf5b('0x55'),_0xdf5b('0x56'),_0xdf5b('0x58'));var _0x56ccfb=path[_0xdf5b('0x53')](_0xaebe3b,_0x369fa3);var _0x24e3d6=util[_0xdf5b('0x45')](_0xdf5b('0x59'),_0x2df2e7[_0xdf5b('0x27')]['id'],_0x369fa3);var _0x1feab1=path[_0xdf5b('0x53')](_0xaebe3b,_0x24e3d6);var _0xc25610=[];_0xc25610[_0xdf5b('0x5a')]({'model':db['Attachment'],'as':_0xdf5b('0x5b'),'raw':!![]});var _0x1a3ba5=[{'model':db['FaxMessage'],'as':_0xdf5b('0x5c'),'attributes':['id',_0xdf5b('0x30'),_0xdf5b('0x5d')],'include':_0xc25610}];return db[_0xdf5b('0x1f')]['find']({'where':{'id':_0x2df2e7[_0xdf5b('0x27')]['id']},'include':_0x1a3ba5})[_0xdf5b('0x18')](handleEntityNotFound(_0xbf029a,null))[_0xdf5b('0x18')](function(_0x77c4d){if(_0x77c4d&&_0x77c4d[_0xdf5b('0x5c')]){var _0x10afed=_0x77c4d[_0xdf5b('0x5e')]({'plain':!![]});fs['mkdirSync'](_0x56ccfb);for(var _0x2772e5=0x0;_0x2772e5<_0x10afed[_0xdf5b('0x5c')][_0xdf5b('0x3a')];_0x2772e5++){var _0xbe73b3=_0x10afed[_0xdf5b('0x5c')][_0x2772e5][_0xdf5b('0x5b')];if(_0xbe73b3){var _0x3a7917=path[_0xdf5b('0x53')](_0x4d18d6,_0xbe73b3[_0xdf5b('0x5f')]);if(fs[_0xdf5b('0x60')](_0x3a7917)){fs[_0xdf5b('0x61')](_0x3a7917)[_0xdf5b('0x62')](fs[_0xdf5b('0x63')](path[_0xdf5b('0x53')](_0x56ccfb,_0xbe73b3[_0xdf5b('0x5f')])));}}}return BPromise[_0xdf5b('0x64')]()[_0xdf5b('0x18')](function(){return new BPromise(function(_0x360ea7,_0x19f503){zipdir(_0x56ccfb,{'saveTo':_0x1feab1},function(_0x5168ea,_0x4007cd){if(_0x5168ea)return _0x19f503(_0x5168ea);return _0x360ea7(_0x4007cd);});})[_0xdf5b('0x18')](function(){return new BPromise(function(_0x2a9ec1,_0x3d455c){rimraf(_0x56ccfb,function(_0x24a3e4){if(_0x24a3e4)_0x3d455c(_0x24a3e4);return _0x2a9ec1();});});})[_0xdf5b('0x18')](function(){return _0xbf029a['download'](_0x1feab1,_0x24e3d6,function(_0x5dc28f){if(_0x5dc28f){console[_0xdf5b('0x65')](_0xdf5b('0x66'),_0x5dc28f);}else{fs[_0xdf5b('0x67')](_0x1feab1);}});});});}else{return _0xbf029a[_0xdf5b('0xe')](0xc8);}})[_0xdf5b('0x25')](handleError(_0xbf029a,null));};
\ No newline at end of file
index 0a59fed..943042e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x048c=['setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','remove','getUsers','then'];(function(_0x35e002,_0x17a5b0){var _0x35b4dc=function(_0xfb17c2){while(--_0xfb17c2){_0x35e002['push'](_0x35e002['shift']());}};_0x35b4dc(++_0x17a5b0);}(_0x048c,0x196));var _0xc048=function(_0x2916d0,_0x2d8d80){_0x2916d0=_0x2916d0-0x0;var _0x407996=_0x048c[_0x2916d0];return _0x407996;};'use strict';var EventEmitter=require(_0xc048('0x0'));var FaxInteraction=require(_0xc048('0x1'))['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db'][_0xc048('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc048('0x3')](0x0);var events={'afterCreate':_0xc048('0x4'),'afterUpdate':'update','afterDestroy':_0xc048('0x5')};function emitEvent(_0x3dfcfe){return function(_0x36eaeb,_0xd701c0,_0x2037c7){_0x36eaeb[_0xc048('0x6')]({'attributes':['id'],'raw':!![]})[_0xc048('0x7')](function(_0x23d27f){_0x36eaeb[_0xc048('0x8')](_0xc048('0x9'),_0x23d27f[_0xc048('0xa')](function(_0x47618e){return{'id':_0x47618e['id']};}));return FaxMessage[_0xc048('0xb')]({'where':{'FaxInteractionId':_0x36eaeb['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x57e642){_0x36eaeb[_0xc048('0x8')]('unreadMessages',_0x57e642[_0xc048('0xc')]);FaxInteractionEvents[_0xc048('0xd')](_0x3dfcfe+':'+_0x36eaeb['id'],_0x36eaeb);FaxInteractionEvents[_0xc048('0xd')](_0x3dfcfe,_0x36eaeb);_0x2037c7(null);})[_0xc048('0xe')](_0x2037c7(null));};}for(var e in events){if(events[_0xc048('0xf')](e)){var event=events[e];FaxInteraction[_0xc048('0x10')](e,emitEvent(event));}}module[_0xc048('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x91eb=['FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x309b56,_0x441979){var _0x57f83f=function(_0x24b61){while(--_0x24b61){_0x309b56['push'](_0x309b56['shift']());}};_0x57f83f(++_0x441979);}(_0x91eb,0x1e4));var _0xb91e=function(_0x3ab186,_0x33ea29){_0x3ab186=_0x3ab186-0x0;var _0x257e3e=_0x91eb[_0x3ab186];return _0x257e3e;};'use strict';var EventEmitter=require(_0xb91e('0x0'));var FaxInteraction=require(_0xb91e('0x1'))['db'][_0xb91e('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xb91e('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xb91e('0x4')](0x0);var events={'afterCreate':_0xb91e('0x5'),'afterUpdate':_0xb91e('0x6'),'afterDestroy':_0xb91e('0x7')};function emitEvent(_0x57b4c8){return function(_0x53e27c,_0x360529,_0x34cc5b){_0x53e27c['getUsers']({'attributes':['id'],'raw':!![]})[_0xb91e('0x8')](function(_0x326f4){_0x53e27c[_0xb91e('0x9')](_0xb91e('0xa'),_0x326f4[_0xb91e('0xb')](function(_0x1d0bb3){return{'id':_0x1d0bb3['id']};}));return FaxMessage[_0xb91e('0xc')]({'where':{'FaxInteractionId':_0x53e27c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x29145e){_0x53e27c[_0xb91e('0x9')](_0xb91e('0xd'),_0x29145e['length']);FaxInteractionEvents['emit'](_0x57b4c8+':'+_0x53e27c['id'],_0x53e27c);FaxInteractionEvents[_0xb91e('0xe')](_0x57b4c8,_0x53e27c);_0x34cc5b(null);})[_0xb91e('0xf')](_0x34cc5b(null));};}for(var e in events){if(events[_0xb91e('0x10')](e)){var event=events[e];FaxInteraction[_0xb91e('0x11')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index ecd60d3..bdd11df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe81d=['request-promise','path','../../config/environment','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','bluebird'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xe81d,0x142));var _0xde81=function(_0x3b7067,_0x227827){_0x3b7067=_0x3b7067-0x0;var _0x4ff8b8=_0xe81d[_0x3b7067];return _0x4ff8b8;};'use strict';var _=require(_0xde81('0x0'));var util=require(_0xde81('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xde81('0x2'));var rp=require(_0xde81('0x3'));var fs=require('fs');var path=require(_0xde81('0x4'));var rimraf=require('rimraf');var config=require(_0xde81('0x5'));var attributes=require(_0xde81('0x6'));module['exports']=function(_0x527c0d,_0x108d7c){return _0x527c0d[_0xde81('0x7')](_0xde81('0x8'),attributes,{'tableName':_0xde81('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x22a97c,_0x3cc2a9,_0x56d621){if(_0x22a97c[_0xde81('0xa')]('closed')){_0x22a97c['closedAt']=moment()[_0xde81('0xb')](_0xde81('0xc'));}_0x56d621(null,_0x22a97c);}}});};
\ No newline at end of file
+var _0x7ee1=['request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','fax_interactions','changed','YYYY-MM-DD\x20HH:mm:ss','lodash','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7ee1,0x8d));var _0x17ee=function(_0x399222,_0x1e390c){_0x399222=_0x399222-0x0;var _0x1c4bdb=_0x7ee1[_0x399222];return _0x1c4bdb;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x17ee('0x1'));var BPromise=require(_0x17ee('0x2'));var rp=require(_0x17ee('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var attributes=require(_0x17ee('0x6'));module[_0x17ee('0x7')]=function(_0x5c0617,_0x52b1db){return _0x5c0617[_0x17ee('0x8')]('FaxInteraction',attributes,{'tableName':_0x17ee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x57e1d1,_0x3d767b,_0xfa5096){if(_0x57e1d1[_0x17ee('0xa')]('closed')){_0x57e1d1['closedAt']=moment()['format'](_0x17ee('0xb'));}_0xfa5096(null,_0x57e1d1);}}});};
\ No newline at end of file
index 4eead9b..42ec134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e6=['limit','info','UpdateFaxInteraction','addTags','ids','omit','spread','AddTags','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','update','body','options','raw','where','attributes'];(function(_0xe5d902,_0x36676d){var _0x5f0d18=function(_0x422faa){while(--_0x422faa){_0xe5d902['push'](_0xe5d902['shift']());}};_0x5f0d18(++_0x36676d);}(_0xf5e6,0x17a));var _0x6f5e=function(_0x3a540d,_0x1efc8b){_0x3a540d=_0x3a540d-0x0;var _0x369c74=_0xf5e6[_0x3a540d];return _0x369c74;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6f5e('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6f5e('0x1'));var logger=require(_0x6f5e('0x2'))(_0x6f5e('0x3'));var config=require(_0x6f5e('0x4'));var jayson=require(_0x6f5e('0x5'));var client=jayson['client'][_0x6f5e('0x6')]({'port':0x232a});config[_0x6f5e('0x7')]=_['defaults'](config[_0x6f5e('0x7')],{'host':_0x6f5e('0x8'),'port':0x18eb});var socket=require(_0x6f5e('0x9'))(new Redis(config[_0x6f5e('0x7')]));require(_0x6f5e('0xa'))[_0x6f5e('0xb')](socket);function respondWithRpcPromise(_0x401ecf,_0x6e8d8d,_0x1cffd5){return new BPromise(function(_0x55d9ae,_0x1b2922){return client['request'](_0x401ecf,_0x1cffd5)[_0x6f5e('0xc')](function(_0x2c5750){logger['info'](_0x6f5e('0xd'),_0x6e8d8d,_0x6f5e('0xe'));logger[_0x6f5e('0xf')](_0x6f5e('0x10'),_0x6e8d8d,_0x6f5e('0xe'),JSON[_0x6f5e('0x11')](_0x2c5750));if(_0x2c5750[_0x6f5e('0x12')]){if(_0x2c5750['error'][_0x6f5e('0x13')]===0x1f4){logger['error'](_0x6f5e('0xd'),_0x6e8d8d,_0x2c5750[_0x6f5e('0x12')][_0x6f5e('0x14')]);return _0x1b2922(_0x2c5750['error']['message']);}logger['error'](_0x6f5e('0xd'),_0x6e8d8d,_0x2c5750['error']['message']);return _0x55d9ae(_0x2c5750[_0x6f5e('0x12')][_0x6f5e('0x14')]);}else{logger['info'](_0x6f5e('0xd'),_0x6e8d8d,_0x6f5e('0xe'));_0x55d9ae(_0x2c5750['result']['message']);}})[_0x6f5e('0x15')](function(_0x7f8f64){logger[_0x6f5e('0x12')](_0x6f5e('0xd'),_0x6e8d8d,_0x7f8f64);_0x1b2922(_0x7f8f64);});});}exports['UpdateFaxInteraction']=function(_0x472a9d){var _0xff38fc=this;return new Promise(function(_0x4516c2,_0x136ca6){return db[_0x6f5e('0x16')][_0x6f5e('0x17')](_0x472a9d[_0x6f5e('0x18')],{'raw':_0x472a9d['options']?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x472a9d['options']?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1b')]||null:null,'attributes':_0x472a9d[_0x6f5e('0x19')]?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1c')]||null:null,'limit':_0x472a9d[_0x6f5e('0x19')]?_0x472a9d[_0x6f5e('0x19')][_0x6f5e('0x1d')]||null:null})[_0x6f5e('0xc')](function(_0x1b5247){logger[_0x6f5e('0x1e')](_0x6f5e('0x1f'),_0x472a9d);logger[_0x6f5e('0xf')](_0x6f5e('0x1f'),_0x472a9d,JSON['stringify'](_0x1b5247));_0x4516c2(_0x1b5247);})['catch'](function(_0x487f99){logger[_0x6f5e('0x12')](_0x6f5e('0x1f'),_0x487f99['message'],_0x472a9d);_0x136ca6(_0xff38fc[_0x6f5e('0x12')](0x1f4,_0x487f99[_0x6f5e('0x14')]));});});};exports['AddTagsToFaxInteraction']=function(_0x1cc2d6){return new Promise(function(_0x5b27cb,_0x3f2cd6){return db['FaxInteraction']['find']({'where':_0x1cc2d6['options']?_0x1cc2d6['options']['where']||null:null})[_0x6f5e('0xc')](function(_0x354bf2){if(_0x354bf2){return _0x354bf2[_0x6f5e('0x20')](_0x1cc2d6[_0x6f5e('0x18')][_0x6f5e('0x21')],_[_0x6f5e('0x22')](_0x1cc2d6['body'],[_0x6f5e('0x21'),'id'])||{});}})[_0x6f5e('0x23')](function(_0x42143c){logger[_0x6f5e('0x1e')](_0x6f5e('0x24'),_0x1cc2d6);logger[_0x6f5e('0xf')](_0x6f5e('0x24'),_0x1cc2d6,JSON[_0x6f5e('0x11')](_0x42143c));_0x5b27cb(_0x42143c);})[_0x6f5e('0x15')](function(_0x2bc957){logger['error'](_0x6f5e('0x24'),_0x2bc957[_0x6f5e('0x14')],_0x1cc2d6);_0x3f2cd6(_this['error'](0x1f4,_0x2bc957[_0x6f5e('0x14')]));});});};
\ No newline at end of file
+var _0x6c7c=['jayson/promise','client','http','redis','socket.io-emitter','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','update','options','raw','where','attributes','limit','UpdateFaxInteraction','AddTagsToFaxInteraction','find','addTags','body','ids','omit','spread','AddTags','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3e9a5d,_0xb318b1){var _0x5d0a79=function(_0x500ae9){while(--_0x500ae9){_0x3e9a5d['push'](_0x3e9a5d['shift']());}};_0x5d0a79(++_0xb318b1);}(_0x6c7c,0x172));var _0xc6c7=function(_0x44d4cd,_0x3bdfe0){_0x44d4cd=_0x44d4cd-0x0;var _0x2b7e4f=_0x6c7c[_0x44d4cd];return _0x2b7e4f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc6c7('0x0'));var BPromise=require(_0xc6c7('0x1'));var rs=require(_0xc6c7('0x2'));var fs=require('fs');var Redis=require(_0xc6c7('0x3'));var db=require(_0xc6c7('0x4'))['db'];var utils=require(_0xc6c7('0x5'));var logger=require(_0xc6c7('0x6'))(_0xc6c7('0x7'));var config=require('../../config/environment');var jayson=require(_0xc6c7('0x8'));var client=jayson[_0xc6c7('0x9')][_0xc6c7('0xa')]({'port':0x232a});config[_0xc6c7('0xb')]=_['defaults'](config[_0xc6c7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xc6c7('0xc'))(new Redis(config[_0xc6c7('0xb')]));require('./faxInteraction.socket')[_0xc6c7('0xd')](socket);function respondWithRpcPromise(_0x16e51b,_0x34368f,_0x515933){return new BPromise(function(_0x2c30cb,_0xf75aed){return client[_0xc6c7('0xe')](_0x16e51b,_0x515933)[_0xc6c7('0xf')](function(_0x597f70){logger[_0xc6c7('0x10')](_0xc6c7('0x11'),_0x34368f,_0xc6c7('0x12'));logger[_0xc6c7('0x13')](_0xc6c7('0x14'),_0x34368f,_0xc6c7('0x12'),JSON[_0xc6c7('0x15')](_0x597f70));if(_0x597f70[_0xc6c7('0x16')]){if(_0x597f70[_0xc6c7('0x16')][_0xc6c7('0x17')]===0x1f4){logger[_0xc6c7('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x34368f,_0x597f70[_0xc6c7('0x16')]['message']);return _0xf75aed(_0x597f70[_0xc6c7('0x16')][_0xc6c7('0x18')]);}logger[_0xc6c7('0x16')](_0xc6c7('0x11'),_0x34368f,_0x597f70['error']['message']);return _0x2c30cb(_0x597f70[_0xc6c7('0x16')]['message']);}else{logger['info'](_0xc6c7('0x11'),_0x34368f,'request\x20sent');_0x2c30cb(_0x597f70['result'][_0xc6c7('0x18')]);}})[_0xc6c7('0x19')](function(_0x214008){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x34368f,_0x214008);_0xf75aed(_0x214008);});});}exports['UpdateFaxInteraction']=function(_0x276ba8){var _0x143ab9=this;return new Promise(function(_0x5c067d,_0x1defd4){return db[_0xc6c7('0x1a')][_0xc6c7('0x1b')](_0x276ba8['body'],{'raw':_0x276ba8[_0xc6c7('0x1c')]?_0x276ba8[_0xc6c7('0x1c')][_0xc6c7('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x276ba8[_0xc6c7('0x1c')]?_0x276ba8[_0xc6c7('0x1c')][_0xc6c7('0x1e')]||null:null,'attributes':_0x276ba8[_0xc6c7('0x1c')]?_0x276ba8[_0xc6c7('0x1c')][_0xc6c7('0x1f')]||null:null,'limit':_0x276ba8['options']?_0x276ba8[_0xc6c7('0x1c')][_0xc6c7('0x20')]||null:null})['then'](function(_0x12ff41){logger['info'](_0xc6c7('0x21'),_0x276ba8);logger[_0xc6c7('0x13')](_0xc6c7('0x21'),_0x276ba8,JSON['stringify'](_0x12ff41));_0x5c067d(_0x12ff41);})['catch'](function(_0x1f0999){logger[_0xc6c7('0x16')](_0xc6c7('0x21'),_0x1f0999[_0xc6c7('0x18')],_0x276ba8);_0x1defd4(_0x143ab9['error'](0x1f4,_0x1f0999[_0xc6c7('0x18')]));});});};exports[_0xc6c7('0x22')]=function(_0x7ab8cd){return new Promise(function(_0x2fb601,_0x3ff03a){return db['FaxInteraction'][_0xc6c7('0x23')]({'where':_0x7ab8cd[_0xc6c7('0x1c')]?_0x7ab8cd['options'][_0xc6c7('0x1e')]||null:null})[_0xc6c7('0xf')](function(_0x1d21b8){if(_0x1d21b8){return _0x1d21b8[_0xc6c7('0x24')](_0x7ab8cd[_0xc6c7('0x25')][_0xc6c7('0x26')],_[_0xc6c7('0x27')](_0x7ab8cd[_0xc6c7('0x25')],['ids','id'])||{});}})[_0xc6c7('0x28')](function(_0x15a761){logger['info']('AddTags',_0x7ab8cd);logger[_0xc6c7('0x13')](_0xc6c7('0x29'),_0x7ab8cd,JSON[_0xc6c7('0x15')](_0x15a761));_0x2fb601(_0x15a761);})[_0xc6c7('0x19')](function(_0x139b35){logger[_0xc6c7('0x16')](_0xc6c7('0x29'),_0x139b35[_0xc6c7('0x18')],_0x7ab8cd);_0x3ff03a(_this['error'](0x1f4,_0x139b35[_0xc6c7('0x18')]));});});};
\ No newline at end of file
index 818cf8a..ef74fb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18da=['length','faxInteraction:','./faxInteraction.events','save','remove','update','removeListener','register'];(function(_0xb31ff3,_0x28aee8){var _0x569a70=function(_0x502b8c){while(--_0x502b8c){_0xb31ff3['push'](_0xb31ff3['shift']());}};_0x569a70(++_0x28aee8);}(_0x18da,0x15a));var _0xa18d=function(_0x8a45d,_0x210fd3){_0x8a45d=_0x8a45d-0x0;var _0x1f9483=_0x18da[_0x8a45d];return _0x1f9483;};'use strict';var FaxInteractionEvents=require(_0xa18d('0x0'));var events=[_0xa18d('0x1'),_0xa18d('0x2'),_0xa18d('0x3')];function createListener(_0x310cc6,_0x3d77f8){return function(_0x326efc){_0x3d77f8['emit'](_0x310cc6,_0x326efc);};}function removeListener(_0x50af7a,_0x10a054){return function(){FaxInteractionEvents[_0xa18d('0x4')](_0x50af7a,_0x10a054);};}exports[_0xa18d('0x5')]=function(_0x459412){for(var _0xaf906c=0x0,_0x1503d3=events[_0xa18d('0x6')];_0xaf906c<_0x1503d3;_0xaf906c++){var _0x3d5f86=events[_0xaf906c];var _0xa19a23=createListener(_0xa18d('0x7')+_0x3d5f86,_0x459412);FaxInteractionEvents['on'](_0x3d5f86,_0xa19a23);}};
\ No newline at end of file
+var _0xd0ed=['emit','removeListener','register','length','faxInteraction:','./faxInteraction.events','save','remove','update'];(function(_0x231be4,_0x2954a5){var _0x50ca1f=function(_0x168e06){while(--_0x168e06){_0x231be4['push'](_0x231be4['shift']());}};_0x50ca1f(++_0x2954a5);}(_0xd0ed,0x152));var _0xdd0e=function(_0x38a045,_0x402d6b){_0x38a045=_0x38a045-0x0;var _0x45c34c=_0xd0ed[_0x38a045];return _0x45c34c;};'use strict';var FaxInteractionEvents=require(_0xdd0e('0x0'));var events=[_0xdd0e('0x1'),_0xdd0e('0x2'),_0xdd0e('0x3')];function createListener(_0x2e232f,_0xb71314){return function(_0x3a109b){_0xb71314[_0xdd0e('0x4')](_0x2e232f,_0x3a109b);};}function removeListener(_0x2b0faa,_0x5975ed){return function(){FaxInteractionEvents[_0xdd0e('0x5')](_0x2b0faa,_0x5975ed);};}exports[_0xdd0e('0x6')]=function(_0x1f6160){for(var _0x3d89c3=0x0,_0x591807=events[_0xdd0e('0x7')];_0x3d89c3<_0x591807;_0x3d89c3++){var _0xffc48b=events[_0x3d89c3];var _0x1fb824=createListener(_0xdd0e('0x8')+_0xffc48b,_0x1f6160);FaxInteractionEvents['on'](_0xffc48b,_0x1fb824);}};
\ No newline at end of file
index 57c816e..f8dbca2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe236=['post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','/:id','delete','faxinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','describe','show','/:id/messages'];(function(_0x54226b,_0x16a6fb){var _0x2ffbbc=function(_0x4611da){while(--_0x4611da){_0x54226b['push'](_0x54226b['shift']());}};_0x2ffbbc(++_0x16a6fb);}(_0xe236,0xe0));var _0x6e23=function(_0x43444b,_0x8cf95b){_0x43444b=_0x43444b-0x0;var _0x392fe5=_0xe236[_0x43444b];return _0x392fe5;};'use strict';var multer=require(_0x6e23('0x0'));var util=require(_0x6e23('0x1'));var path=require(_0x6e23('0x2'));var timeout=require(_0x6e23('0x3'));var express=require(_0x6e23('0x4'));var router=express[_0x6e23('0x5')]();var fs_extra=require(_0x6e23('0x6'));var auth=require(_0x6e23('0x7'));var interaction=require(_0x6e23('0x8'));var config=require(_0x6e23('0x9'));var controller=require(_0x6e23('0xa'));router[_0x6e23('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6e23('0xb')]('/describe',auth[_0x6e23('0xc')](),controller[_0x6e23('0xd')]);router['get']('/:id',auth[_0x6e23('0xc')](),controller[_0x6e23('0xe')]);router[_0x6e23('0xb')](_0x6e23('0xf'),auth['isAuthenticated'](),controller['getMessages']);router[_0x6e23('0xb')]('/:id/download',auth[_0x6e23('0xc')](),controller['download']);router[_0x6e23('0x10')]('/',auth[_0x6e23('0xc')](),controller[_0x6e23('0x11')]);router['post'](_0x6e23('0xf'),auth[_0x6e23('0xc')](),controller[_0x6e23('0x12')]);router['post'](_0x6e23('0x13'),auth['isAuthenticated'](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),_0x6e23('0x16')),controller[_0x6e23('0x17')]);router[_0x6e23('0x18')](_0x6e23('0x19'),auth[_0x6e23('0xc')](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),'faxinteraction:update'),controller['update']);router[_0x6e23('0x1a')](_0x6e23('0x19'),auth[_0x6e23('0xc')](),interaction[_0x6e23('0x14')](_0x6e23('0x15'),_0x6e23('0x1b')),controller[_0x6e23('0x1c')]);router[_0x6e23('0x1a')](_0x6e23('0x13'),auth['isAuthenticated'](),controller['removeTags']);module[_0x6e23('0x1d')]=router;
\ No newline at end of file
+var _0x8733=['isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','create','post','addMessage','/:id/tags','faxinteraction:addtags','put','tracked','fax','faxinteraction:update','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x2d5c6f,_0x3900da){var _0x3a9a4f=function(_0x5b5237){while(--_0x5b5237){_0x2d5c6f['push'](_0x2d5c6f['shift']());}};_0x3a9a4f(++_0x3900da);}(_0x8733,0xd7));var _0x3873=function(_0x3a05a6,_0x5a2916){_0x3a05a6=_0x3a05a6-0x0;var _0x55a922=_0x8733[_0x3a05a6];return _0x55a922;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3873('0x0'));var timeout=require(_0x3873('0x1'));var express=require(_0x3873('0x2'));var router=express[_0x3873('0x3')]();var fs_extra=require(_0x3873('0x4'));var auth=require(_0x3873('0x5'));var interaction=require(_0x3873('0x6'));var config=require(_0x3873('0x7'));var controller=require('./faxInteraction.controller');router[_0x3873('0x8')]('/',auth[_0x3873('0x9')](),controller[_0x3873('0xa')]);router['get'](_0x3873('0xb'),auth[_0x3873('0x9')](),controller[_0x3873('0xc')]);router[_0x3873('0x8')](_0x3873('0xd'),auth[_0x3873('0x9')](),controller[_0x3873('0xe')]);router[_0x3873('0x8')]('/:id/messages',auth['isAuthenticated'](),controller['getMessages']);router['get'](_0x3873('0xf'),auth['isAuthenticated'](),controller[_0x3873('0x10')]);router['post']('/',auth[_0x3873('0x9')](),controller[_0x3873('0x11')]);router[_0x3873('0x12')]('/:id/messages',auth[_0x3873('0x9')](),controller[_0x3873('0x13')]);router['post'](_0x3873('0x14'),auth['isAuthenticated'](),interaction['tracked']('fax',_0x3873('0x15')),controller['addTags']);router[_0x3873('0x16')]('/:id',auth[_0x3873('0x9')](),interaction[_0x3873('0x17')](_0x3873('0x18'),_0x3873('0x19')),controller['update']);router[_0x3873('0x1a')]('/:id',auth[_0x3873('0x9')](),interaction[_0x3873('0x17')](_0x3873('0x18'),'faxinteraction:destroy'),controller[_0x3873('0x1b')]);router['delete'](_0x3873('0x14'),auth[_0x3873('0x9')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
index f5814da..790a5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['ENUM','DATE','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0xfbb2c4,_0x26b45a){var _0x440158=function(_0x4dee3b){while(--_0x4dee3b){_0xfbb2c4['push'](_0xfbb2c4['shift']());}};_0x440158(++_0x26b45a);}(_0x21d1,0x1c9));var _0x121d=function(_0x4aa1f8,_0x210a78){_0x4aa1f8=_0x4aa1f8-0x0;var _0x1db6e7=_0x21d1[_0x4aa1f8];return _0x1db6e7;};'use strict';var Sequelize=require(_0x121d('0x0'));module[_0x121d('0x1')]={'body':{'type':Sequelize[_0x121d('0x2')](_0x121d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x121d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x121d('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x121d('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x121d('0x6')]}};
\ No newline at end of file
+var _0x028d=['ENUM','out','DATE','exports','TEXT','BOOLEAN'];(function(_0xf0f9be,_0x5e2f50){var _0x4e8140=function(_0x18cff8){while(--_0x18cff8){_0xf0f9be['push'](_0xf0f9be['shift']());}};_0x4e8140(++_0x5e2f50);}(_0x028d,0xff));var _0xd028=function(_0x2da3cc,_0x2087e9){_0x2da3cc=_0x2da3cc-0x0;var _0x3f4e76=_0x028d[_0x2da3cc];return _0x3f4e76;};'use strict';var Sequelize=require('sequelize');module[_0xd028('0x0')]={'body':{'type':Sequelize[_0xd028('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xd028('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd028('0x3')]('in',_0xd028('0x4')),'defaultValue':_0xd028('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xd028('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0xd028('0x5')]}};
\ No newline at end of file
index adaf136..19c6ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819f=['request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','end','status','offset','undefined','limit','count','apply','reject','save','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','body','find','destroy','params','describe','fax-interactions','accept','fax','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','FaxInteraction','update','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','User','agent','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','server','files','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxMessage.socket','register','jayson/promise','client','http'];(function(_0x2c1b1c,_0x5e9c8e){var _0x1520fb=function(_0x313269){while(--_0x313269){_0x2c1b1c['push'](_0x2c1b1c['shift']());}};_0x1520fb(++_0x5e9c8e);}(_0x819f,0x186));var _0xf819=function(_0x1249f4,_0x27226c){_0x1249f4=_0x1249f4-0x0;var _0x47c8a9=_0x819f[_0x1249f4];return _0x47c8a9;};'use strict';var emlformat=require(_0xf819('0x0'));var rimraf=require(_0xf819('0x1'));var zipdir=require(_0xf819('0x2'));var jsonpatch=require(_0xf819('0x3'));var rp=require(_0xf819('0x4'));var moment=require(_0xf819('0x5'));var BPromise=require(_0xf819('0x6'));var Mustache=require(_0xf819('0x7'));var util=require(_0xf819('0x8'));var path=require(_0xf819('0x9'));var sox=require('sox');var csv=require(_0xf819('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf819('0xb'));var squel=require(_0xf819('0xc'));var crypto=require(_0xf819('0xd'));var jsforce=require(_0xf819('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf819('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf819('0x10'));var qs=require(_0xf819('0x11'));var as=require(_0xf819('0x12'));var hardwareService=require(_0xf819('0x13'));var logger=require(_0xf819('0x14'))('api');var utils=require(_0xf819('0x15'));var config=require(_0xf819('0x16'));var licenseUtil=require(_0xf819('0x17'));var db=require(_0xf819('0x18'))['db'];config[_0xf819('0x19')]=_[_0xf819('0x1a')](config[_0xf819('0x19')],{'host':_0xf819('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf819('0x19')]));require(_0xf819('0x1c'))[_0xf819('0x1d')](socket);var jayson=require(_0xf819('0x1e'));var client=jayson[_0xf819('0x1f')][_0xf819('0x20')]({'port':0x232c});var client9002=jayson[_0xf819('0x1f')][_0xf819('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x4cd9ab,_0x104e94,_0x3f0a82,_0x376cd5){return new BPromise(function(_0xc1679a,_0x5740b9){var _0xf9bafd=_0x376cd5||client;return _0xf9bafd[_0xf819('0x21')](_0x4cd9ab,_0x3f0a82)[_0xf819('0x22')](function(_0x2cff62){logger[_0xf819('0x23')](_0xf819('0x24'),_0x104e94,_0xf819('0x25'));logger[_0xf819('0x26')](_0xf819('0x27'),_0x104e94,_0xf819('0x25'),JSON[_0xf819('0x28')](_0x2cff62));if(_0x2cff62[_0xf819('0x29')]){if(_0x2cff62[_0xf819('0x29')][_0xf819('0x2a')]===0x1f4){logger[_0xf819('0x29')](_0xf819('0x24'),_0x104e94,_0x2cff62[_0xf819('0x29')][_0xf819('0x2b')]);return _0x5740b9(_0x2cff62[_0xf819('0x29')]['message']);}logger[_0xf819('0x29')]('FaxMessage,\x20%s,\x20%s',_0x104e94,_0x2cff62[_0xf819('0x29')]['message']);return _0xc1679a(_0x2cff62['error']['message']);}else{logger[_0xf819('0x23')](_0xf819('0x24'),_0x104e94,_0xf819('0x25'));_0xc1679a(_0x2cff62[_0xf819('0x2c')][_0xf819('0x2b')]);}})['catch'](function(_0x7c1776){logger[_0xf819('0x29')]('FaxMessage,\x20%s,\x20%s',_0x104e94,_0x7c1776);_0x5740b9(_0x7c1776);});});}function respondWithStatusCode(_0x39158a,_0x217d02){_0x217d02=_0x217d02||0xcc;return function(_0x1b072a){if(_0x1b072a){return _0x39158a[_0xf819('0x2d')](_0x217d02);}return _0x39158a['status'](_0x217d02)[_0xf819('0x2e')]();};}function respondWithResult(_0x3b3627,_0x28f158){_0x28f158=_0x28f158||0xc8;return function(_0x3b0da7){if(_0x3b0da7){return _0x3b3627[_0xf819('0x2f')](_0x28f158)['json'](_0x3b0da7);}};}function respondWithFilteredResult(_0x3b651f,_0x2f31a5){return function(_0x50d16a){if(_0x50d16a){var _0x20c602=typeof _0x2f31a5[_0xf819('0x30')]===_0xf819('0x31')&&typeof _0x2f31a5[_0xf819('0x32')]===_0xf819('0x31');var _0x2f32b7=_0x50d16a[_0xf819('0x33')];var _0x546f9e=_0x20c602?0x0:_0x2f31a5[_0xf819('0x30')];var _0xe94664=_0x20c602?_0x50d16a[_0xf819('0x33')]:_0x2f31a5['offset']+_0x2f31a5[_0xf819('0x32')];var _0x585858;if(_0xe94664>=_0x2f32b7){_0xe94664=_0x2f32b7;_0x585858=0xc8;}else{_0x585858=0xce;}_0x3b651f[_0xf819('0x2f')](_0x585858);return _0x3b651f['set']('Content-Range',_0x546f9e+'-'+_0xe94664+'/'+_0x2f32b7)['json'](_0x50d16a);}return null;};}function patchUpdates(_0x3a411f){return function(_0x75e743){try{jsonpatch[_0xf819('0x34')](_0x75e743,_0x3a411f,!![]);}catch(_0x3aa413){return BPromise[_0xf819('0x35')](_0x3aa413);}return _0x75e743[_0xf819('0x36')]();};}function saveUpdates(_0x553138,_0x51cb81){return function(_0x581596){if(_0x581596){return _0x581596['update'](_0x553138)[_0xf819('0x22')](function(_0x24de6f){return _0x24de6f;});}return null;};}function removeEntity(_0x51b25a,_0x16c7b1){return function(_0x2d22d3){if(_0x2d22d3){return _0x2d22d3['destroy']()['then'](function(){_0x51b25a[_0xf819('0x2f')](0xcc)[_0xf819('0x2e')]();});}};}function handleEntityNotFound(_0xcbcf20,_0x3372d4){return function(_0x19a981){if(!_0x19a981){_0xcbcf20['sendStatus'](0x194);}return _0x19a981;};}function handleError(_0x320af2,_0x543ce6){_0x543ce6=_0x543ce6||0x1f4;return function(_0x4779b3){logger[_0xf819('0x29')](_0x4779b3[_0xf819('0x37')]);if(_0x4779b3['name']){delete _0x4779b3[_0xf819('0x38')];}_0x320af2[_0xf819('0x2f')](_0x543ce6)[_0xf819('0x39')](_0x4779b3);};}exports[_0xf819('0x3a')]=function(_0x1380ec,_0x15e7a8){var _0x507c84={},_0x1a9f72={},_0xb0553b={'count':0x0,'rows':[]};var _0x2037e9=_[_0xf819('0x3b')](db[_0xf819('0x3c')][_0xf819('0x3d')],function(_0x1d68f7){return{'name':_0x1d68f7[_0xf819('0x3e')],'type':_0x1d68f7['type'][_0xf819('0x3f')]};});_0x1a9f72[_0xf819('0x40')]=_[_0xf819('0x3b')](_0x2037e9,_0xf819('0x38'));_0x1a9f72[_0xf819('0x41')]=_[_0xf819('0x42')](_0x1380ec[_0xf819('0x41')]);_0x1a9f72[_0xf819('0x43')]=_[_0xf819('0x44')](_0x1a9f72[_0xf819('0x40')],_0x1a9f72['query']);_0x507c84['attributes']=_[_0xf819('0x44')](_0x1a9f72[_0xf819('0x40')],qs['fields'](_0x1380ec['query'][_0xf819('0x45')]));_0x507c84[_0xf819('0x46')]=_0x507c84[_0xf819('0x46')][_0xf819('0x47')]?_0x507c84[_0xf819('0x46')]:_0x1a9f72['model'];if(!_0x1380ec[_0xf819('0x41')][_0xf819('0x48')]('nolimit')){_0x507c84['limit']=qs[_0xf819('0x32')](_0x1380ec[_0xf819('0x41')][_0xf819('0x32')]);_0x507c84['offset']=qs[_0xf819('0x30')](_0x1380ec['query'][_0xf819('0x30')]);}_0x507c84[_0xf819('0x49')]=qs[_0xf819('0x4a')](_0x1380ec[_0xf819('0x41')][_0xf819('0x4a')]);_0x507c84[_0xf819('0x4b')]=qs[_0xf819('0x43')](_['pick'](_0x1380ec[_0xf819('0x41')],_0x1a9f72['filters']),_0x2037e9);if(_0x1380ec[_0xf819('0x41')][_0xf819('0x4c')]){_0x507c84[_0xf819('0x4b')]=_[_0xf819('0x4d')](_0x507c84[_0xf819('0x4b')],{'$or':_['map'](_0x2037e9,function(_0x17b46d){if(_0x17b46d[_0xf819('0x4e')]!==_0xf819('0x4f')){var _0x58f678={};_0x58f678[_0x17b46d[_0xf819('0x38')]]={'$like':'%'+_0x1380ec[_0xf819('0x41')][_0xf819('0x4c')]+'%'};return _0x58f678;}})});}_0x507c84=_[_0xf819('0x4d')]({},_0x507c84,_0x1380ec[_0xf819('0x50')]);var _0x1de1e4={'where':_0x507c84[_0xf819('0x4b')]};return db['FaxMessage'][_0xf819('0x33')](_0x1de1e4)[_0xf819('0x22')](function(_0x37634e){_0xb0553b[_0xf819('0x33')]=_0x37634e;if(_0x1380ec['query'][_0xf819('0x51')]){_0x507c84[_0xf819('0x52')]=[{'all':!![]}];}return db[_0xf819('0x3c')][_0xf819('0x53')](_0x507c84);})[_0xf819('0x22')](function(_0x2d26ba){_0xb0553b['rows']=_0x2d26ba;return _0xb0553b;})[_0xf819('0x22')](respondWithFilteredResult(_0x15e7a8,_0x507c84))[_0xf819('0x54')](handleError(_0x15e7a8,null));};exports['show']=function(_0x25d389,_0x2951ea){var _0x3202ad={'raw':!![],'where':{'id':_0x25d389['params']['id']}},_0x43bc37={};_0x43bc37[_0xf819('0x40')]=_[_0xf819('0x42')](db['FaxMessage'][_0xf819('0x3d')]);_0x43bc37['query']=_[_0xf819('0x42')](_0x25d389['query']);_0x43bc37[_0xf819('0x43')]=_[_0xf819('0x44')](_0x43bc37[_0xf819('0x40')],_0x43bc37['query']);_0x3202ad[_0xf819('0x46')]=_[_0xf819('0x44')](_0x43bc37['model'],qs[_0xf819('0x45')](_0x25d389[_0xf819('0x41')][_0xf819('0x45')]));_0x3202ad[_0xf819('0x46')]=_0x3202ad['attributes'][_0xf819('0x47')]?_0x3202ad[_0xf819('0x46')]:_0x43bc37[_0xf819('0x40')];if(_0x25d389['query'][_0xf819('0x51')]){_0x3202ad[_0xf819('0x52')]=[{'all':!![]}];}_0x3202ad=_[_0xf819('0x4d')]({},_0x3202ad,_0x25d389[_0xf819('0x50')]);return db[_0xf819('0x3c')]['find'](_0x3202ad)[_0xf819('0x22')](handleEntityNotFound(_0x2951ea,null))[_0xf819('0x22')](respondWithResult(_0x2951ea,null))['catch'](handleError(_0x2951ea,null));};exports['update']=function(_0xcaa7a0,_0x218672){if(_0xcaa7a0[_0xf819('0x55')]['id']){delete _0xcaa7a0[_0xf819('0x55')]['id'];}return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0xcaa7a0['params']['id']}})['then'](handleEntityNotFound(_0x218672,null))['then'](saveUpdates(_0xcaa7a0[_0xf819('0x55')],null))[_0xf819('0x22')](respondWithResult(_0x218672,null))[_0xf819('0x54')](handleError(_0x218672,null));};exports[_0xf819('0x57')]=function(_0x339b4d,_0x5c2e4f){return db['FaxMessage'][_0xf819('0x56')]({'where':{'id':_0x339b4d[_0xf819('0x58')]['id']}})[_0xf819('0x22')](handleEntityNotFound(_0x5c2e4f,null))[_0xf819('0x22')](removeEntity(_0x5c2e4f,null))[_0xf819('0x54')](handleError(_0x5c2e4f,null));};exports[_0xf819('0x59')]=function(_0x45eb91,_0x6311bc){return db[_0xf819('0x3c')]['describe']()[_0xf819('0x22')](respondWithResult(_0x6311bc,null))[_0xf819('0x54')](handleError(_0x6311bc,null));};var interaction_log=require(_0xf819('0x14'))(_0xf819('0x5a'));exports[_0xf819('0x5b')]=function(_0xc1e152,_0x1e4ed7,_0x24a6de){var _0x4efea5={'agent':{},'channel':_0xf819('0x5c')};if(_0xc1e152[_0xf819('0x55')]['id']){delete _0xc1e152[_0xf819('0x55')]['id'];}_0xc1e152['body'][_0xf819('0x5d')]=!![];_0xc1e152[_0xf819('0x55')]['readAt']=moment()[_0xf819('0x5e')](_0xf819('0x5f'));_0xc1e152[_0xf819('0x55')][_0xf819('0x60')]=_0xc1e152['body'][_0xf819('0x60')]||_0xc1e152['user']['id'];_0x4efea5['agent']['id']=_0xc1e152[_0xf819('0x55')]['UserId'];return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0xc1e152[_0xf819('0x58')]['id'],'UserId':null}})[_0xf819('0x22')](handleEntityNotFound(_0x1e4ed7,null))['then'](saveUpdates(_0xc1e152[_0xf819('0x55')],null))[_0xf819('0x22')](function(_0x221df1){if(_0x221df1){_0x4efea5[_0xf819('0x2b')]=_0x221df1[_0xf819('0x61')]({'plain':!![]});return db[_0xf819('0x62')][_0xf819('0x56')]({'where':{'id':_0x221df1['FaxInteractionId']}});}return null;})[_0xf819('0x22')](handleEntityNotFound(_0x1e4ed7,null))[_0xf819('0x22')](function(_0x450635){if(_0x450635){return _0x450635[_0xf819('0x63')]({'UserId':_0xc1e152[_0xf819('0x55')]['UserId'],'read1stAt':_[_0xf819('0x64')](_0x450635[_0xf819('0x65')])?moment()[_0xf819('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf819('0x22')](function(_0x593378){if(_0x593378){_0x4efea5[_0xf819('0x66')]=_0x593378[_0xf819('0x61')]({'plain':!![]});interaction_log[_0xf819('0x23')](_0xf819('0x67'),_0xc1e152['user']['id'],_0xc1e152[_0xf819('0x68')][_0xf819('0x38')],_0xc1e152['user'][_0xf819('0x69')],_0x4efea5[_0xf819('0x66')]['id'],_0xc1e152[_0xf819('0x55')]?JSON[_0xf819('0x28')](_0xc1e152[_0xf819('0x55')]):_0xf819('0x6a'));return respondWithRpcPromise(_0xf819('0x6b'),'acceptMessage',_0x4efea5);}return null;})[_0xf819('0x22')](function(_0x2b11cc){var _0x1fb69a=_0xf819('0x6c')+_0x2b11cc['message']['ContactId'];return db[_0xf819('0x6d')][_0xf819('0x41')](_0x1fb69a,{'type':db[_0xf819('0x6e')]['QueryTypes'][_0xf819('0x6f')],'raw':!![]})[_0xf819('0x22')](function(_0x179742){return _0x179742;});})[_0xf819('0x22')](function(_0x2e4c6c){if(_0x2e4c6c){_0x4efea5['message']['contact']=_0x2e4c6c[0x0];if(!_0xc1e152[_0xf819('0x55')][_0xf819('0x60')])return;return db[_0xf819('0x70')][_0xf819('0x56')]({'where':{'id':_0xc1e152[_0xf819('0x55')][_0xf819('0x60')],'role':_0xf819('0x71')},'attributes':['id',_0xf819('0x38'),_0xf819('0x72'),_0xf819('0x73'),_0xf819('0x74')],'raw':!![]});}return null;})[_0xf819('0x22')](function(_0x4a9c0c){if(!_0x4a9c0c)return null;_0x4efea5[_0xf819('0x2b')]['agent']=_0x4a9c0c;return _0x4efea5;})[_0xf819('0x22')](function(_0x18d9e6){if(_0x18d9e6){if(_0xc1e152[_0xf819('0x55')][_0xf819('0x75')]){_0x4efea5['message']['interface']=util['format'](_0xf819('0x76'),_0xc1e152[_0xf819('0x68')][_0xf819('0x38')]);_0x4efea5[_0xf819('0x2b')][_0xf819('0x77')]=_0x4efea5[_0xf819('0x77')];_0x4efea5['message'][_0xf819('0x78')]=_0x4efea5[_0xf819('0x77')];_0x4efea5[_0xf819('0x2b')][_0xf819('0x79')]=_0xf819('0x5b');return respondWithRpcPromise(_0xf819('0x7a'),_0xf819('0x7a'),{'event':'acceptmessage','message':_0x4efea5[_0xf819('0x2b')]},client9002)['then'](function(){return _0x4efea5;});}return _0x4efea5;}return null;})[_0xf819('0x22')](respondWithResult(_0x1e4ed7,null))['catch'](handleError(_0x1e4ed7,null));};var interaction_log=require(_0xf819('0x14'))(_0xf819('0x5a'));exports[_0xf819('0x35')]=function(_0x25faec,_0x3b62d0,_0x3dc325){var _0x1a9a22={'agent':{},'channel':_0xf819('0x5c')};if(_0x25faec[_0xf819('0x55')]['id']){delete _0x25faec[_0xf819('0x55')]['id'];}_0x25faec[_0xf819('0x55')]['UserId']=_0x25faec[_0xf819('0x55')][_0xf819('0x60')]||_0x25faec[_0xf819('0x68')]['id'];_0x1a9a22[_0xf819('0x71')]['id']=_0x25faec['body'][_0xf819('0x60')];return db['FaxMessage'][_0xf819('0x56')]({'where':{'id':_0x25faec[_0xf819('0x58')]['id'],'UserId':null}})[_0xf819('0x22')](handleEntityNotFound(_0x3b62d0,null))[_0xf819('0x22')](function(_0x4597c4){if(_0x4597c4){_0x1a9a22[_0xf819('0x2b')]=_0x4597c4[_0xf819('0x61')]({'plain':!![]});return db[_0xf819('0x62')][_0xf819('0x56')]({'where':{'id':_0x4597c4['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3b62d0,null))[_0xf819('0x22')](function(_0x380852){if(_0x380852){_0x1a9a22['interaction']=_0x380852[_0xf819('0x61')]({'plain':!![]});interaction_log[_0xf819('0x23')](_0xf819('0x7b'),_0x25faec[_0xf819('0x68')]['id'],_0x25faec[_0xf819('0x68')][_0xf819('0x38')],_0x25faec[_0xf819('0x68')][_0xf819('0x69')],_0x1a9a22[_0xf819('0x66')]['id'],_0x25faec['body']?JSON[_0xf819('0x28')](_0x25faec[_0xf819('0x55')]):'null');return respondWithRpcPromise(_0xf819('0x7c'),_0xf819('0x7d'),_0x1a9a22);}return null;})[_0xf819('0x22')](function(_0x2e23da){var _0x48ceb9=_0xf819('0x6c')+_0x2e23da[_0xf819('0x2b')][_0xf819('0x7e')];return db[_0xf819('0x6d')][_0xf819('0x41')](_0x48ceb9,{'type':db[_0xf819('0x6e')]['QueryTypes'][_0xf819('0x6f')],'raw':!![]})[_0xf819('0x22')](function(_0x40fdc4){return _0x40fdc4;});})[_0xf819('0x22')](function(_0x46a5cc){if(_0x46a5cc){_0x1a9a22['message']['contact']=_0x46a5cc[0x0];if(!_0x25faec[_0xf819('0x55')][_0xf819('0x60')])return;return db[_0xf819('0x70')][_0xf819('0x56')]({'where':{'id':_0x25faec['body']['UserId'],'role':_0xf819('0x71')},'attributes':['id',_0xf819('0x38'),_0xf819('0x72'),_0xf819('0x73'),'internal'],'raw':!![]});}return null;})[_0xf819('0x22')](function(_0x16a135){if(!_0x16a135)return null;_0x1a9a22[_0xf819('0x2b')][_0xf819('0x71')]=_0x16a135;return _0x1a9a22;})[_0xf819('0x22')](function(_0x3ac198){if(_0x3ac198){_0x3ac198[_0xf819('0x2b')]['interface']=util[_0xf819('0x5e')](_0xf819('0x76'),_0x25faec['user']['name']);_0x3ac198[_0xf819('0x2b')]['channel']=_0x1a9a22['channel'];_0x3ac198[_0xf819('0x2b')][_0xf819('0x78')]=_0x1a9a22[_0xf819('0x77')];_0x3ac198[_0xf819('0x2b')][_0xf819('0x79')]='reject';respondWithRpcPromise(_0xf819('0x7a'),'EventManager',{'event':_0xf819('0x7f'),'message':_0x3ac198[_0xf819('0x2b')]},client9002);return _0x1a9a22;}return null;})[_0xf819('0x22')](respondWithResult(_0x3b62d0,null))[_0xf819('0x54')](handleError(_0x3b62d0,null));};exports[_0xf819('0x80')]=function(_0x1bf048,_0xbd73cb){var _0x4aec7b;return db['FaxMessage'][_0xf819('0x80')](_0x1bf048[_0xf819('0x55')],{})[_0xf819('0x22')](function(_0x4be76a){_0x4aec7b=_0x4be76a;return db[_0xf819('0x81')][_0xf819('0x82')]({'where':{'id':_0x4aec7b['ContactId']}});})[_0xf819('0x22')](function(_0x32c307){if(_[_0xf819('0x64')](_0x32c307)){return;}else{_0x4aec7b['fax']=_0x32c307[_0xf819('0x5c')];return db[_0xf819('0x83')]['findOne']({'where':{'id':_0x4aec7b[_0xf819('0x84')]}});}})[_0xf819('0x22')](function(_0x36394f){return respondWithRpcPromise(_0xf819('0x85'),_0xf819('0x85'),{'FaxAccountId':_[_0xf819('0x64')](_0x1bf048[_0xf819('0x55')])?undefined:_0x1bf048[_0xf819('0x55')][_0xf819('0x86')],'path':_['isNil'](_0x36394f)?undefined:util[_0xf819('0x5e')](_0xf819('0x87'),_0x36394f[_0xf819('0x88')]),'fax':_[_0xf819('0x64')](_0x4aec7b[_0xf819('0x5c')])?undefined:_0x4aec7b[_0xf819('0x5c')],'AttachmentId':_0x4aec7b['AttachmentId']},client9002);})['then'](respondWithResult(_0xbd73cb,0xc9))[_0xf819('0x54')](handleError(_0xbd73cb,null));};exports['download']=function(_0x5e47a4,_0x338c23){var _0x30d9da=path[_0xf819('0x89')](config['root'],_0xf819('0x8a'),_0xf819('0x8b'),'attachments');return db[_0xf819('0x3c')][_0xf819('0x56')]({'where':{'id':_0x5e47a4[_0xf819('0x58')]['id']},'include':[{'model':db[_0xf819('0x83')],'as':_0xf819('0x83')}]})['then'](handleEntityNotFound(_0x338c23,null))[_0xf819('0x22')](function(_0x16a267){if(_0x16a267){return _0x338c23[_0xf819('0x8c')](path[_0xf819('0x89')](_0x30d9da,_0x16a267['Attachment']['basename']));}})[_0xf819('0x54')](handleError(_0x338c23,null));};
\ No newline at end of file
+var _0xeeb6=['fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','FaxInteractionId','rejectMessage','SELECT','email','rejectmessage','create','CmContact','fax','Attachment','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','jayson/promise','client','http','then','info','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result','sendStatus','status','json','offset','undefined','limit','Content-Range','apply','save','destroy','stack','name','rawAttributes','fieldName','type','key','model','query','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','FaxMessage','count','include','findAll','rows','show','params','keys','attributes','includeAll','find','catch','update','body','describe','fax-interactions','accept','read','readAt','format','UserId','user','agent','get','FaxInteraction','isNil','YYYY-MM-DD\x20HH:mm:ss','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User'];(function(_0x4ed1d4,_0x512d9a){var _0x28e363=function(_0x2bdfb7){while(--_0x2bdfb7){_0x4ed1d4['push'](_0x4ed1d4['shift']());}};_0x28e363(++_0x512d9a);}(_0xeeb6,0x1d6));var _0x6eeb=function(_0x39175b,_0x245752){_0x39175b=_0x39175b-0x0;var _0x4b2c84=_0xeeb6[_0x39175b];return _0x4b2c84;};'use strict';var emlformat=require(_0x6eeb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6eeb('0x1'));var rp=require(_0x6eeb('0x2'));var moment=require(_0x6eeb('0x3'));var BPromise=require(_0x6eeb('0x4'));var Mustache=require(_0x6eeb('0x5'));var util=require(_0x6eeb('0x6'));var path=require(_0x6eeb('0x7'));var sox=require(_0x6eeb('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6eeb('0x9'));var _=require(_0x6eeb('0xa'));var squel=require(_0x6eeb('0xb'));var crypto=require(_0x6eeb('0xc'));var jsforce=require(_0x6eeb('0xd'));var deskjs=require(_0x6eeb('0xe'));var toCsv=require(_0x6eeb('0xf'));var querystring=require('querystring');var Papa=require(_0x6eeb('0x10'));var Redis=require(_0x6eeb('0x11'));var authService=require(_0x6eeb('0x12'));var qs=require(_0x6eeb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6eeb('0x14'));var logger=require(_0x6eeb('0x15'))('api');var utils=require(_0x6eeb('0x16'));var config=require(_0x6eeb('0x17'));var licenseUtil=require(_0x6eeb('0x18'));var db=require(_0x6eeb('0x19'))['db'];config[_0x6eeb('0x1a')]=_['defaults'](config['redis'],{'host':_0x6eeb('0x1b'),'port':0x18eb});var socket=require(_0x6eeb('0x1c'))(new Redis(config[_0x6eeb('0x1a')]));require(_0x6eeb('0x1d'))['register'](socket);var jayson=require(_0x6eeb('0x1e'));var client=jayson[_0x6eeb('0x1f')][_0x6eeb('0x20')]({'port':0x232c});var client9002=jayson[_0x6eeb('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1225c3,_0x1f75fa,_0x49f696,_0x202834){return new BPromise(function(_0x21fbd8,_0x3dca29){var _0x332829=_0x202834||client;return _0x332829['request'](_0x1225c3,_0x49f696)[_0x6eeb('0x21')](function(_0x489409){logger[_0x6eeb('0x22')]('FaxMessage,\x20%s,\x20%s',_0x1f75fa,'request\x20sent');logger['debug'](_0x6eeb('0x23'),_0x1f75fa,_0x6eeb('0x24'),JSON[_0x6eeb('0x25')](_0x489409));if(_0x489409[_0x6eeb('0x26')]){if(_0x489409['error'][_0x6eeb('0x27')]===0x1f4){logger['error'](_0x6eeb('0x28'),_0x1f75fa,_0x489409['error'][_0x6eeb('0x29')]);return _0x3dca29(_0x489409[_0x6eeb('0x26')][_0x6eeb('0x29')]);}logger[_0x6eeb('0x26')](_0x6eeb('0x28'),_0x1f75fa,_0x489409[_0x6eeb('0x26')][_0x6eeb('0x29')]);return _0x21fbd8(_0x489409[_0x6eeb('0x26')][_0x6eeb('0x29')]);}else{logger['info'](_0x6eeb('0x28'),_0x1f75fa,_0x6eeb('0x24'));_0x21fbd8(_0x489409[_0x6eeb('0x2a')][_0x6eeb('0x29')]);}})['catch'](function(_0xf3a7c7){logger[_0x6eeb('0x26')](_0x6eeb('0x28'),_0x1f75fa,_0xf3a7c7);_0x3dca29(_0xf3a7c7);});});}function respondWithStatusCode(_0x2a05c3,_0x527e85){_0x527e85=_0x527e85||0xcc;return function(_0x4be9a1){if(_0x4be9a1){return _0x2a05c3[_0x6eeb('0x2b')](_0x527e85);}return _0x2a05c3['status'](_0x527e85)['end']();};}function respondWithResult(_0xeb2160,_0x2d62c5){_0x2d62c5=_0x2d62c5||0xc8;return function(_0x3ac413){if(_0x3ac413){return _0xeb2160[_0x6eeb('0x2c')](_0x2d62c5)[_0x6eeb('0x2d')](_0x3ac413);}};}function respondWithFilteredResult(_0x4175bf,_0x4e73d8){return function(_0x34e9d0){if(_0x34e9d0){var _0x5a83e8=typeof _0x4e73d8[_0x6eeb('0x2e')]===_0x6eeb('0x2f')&&typeof _0x4e73d8[_0x6eeb('0x30')]==='undefined';var _0x4b7d29=_0x34e9d0['count'];var _0x4de41e=_0x5a83e8?0x0:_0x4e73d8[_0x6eeb('0x2e')];var _0x41209a=_0x5a83e8?_0x34e9d0['count']:_0x4e73d8[_0x6eeb('0x2e')]+_0x4e73d8[_0x6eeb('0x30')];var _0x13afb8;if(_0x41209a>=_0x4b7d29){_0x41209a=_0x4b7d29;_0x13afb8=0xc8;}else{_0x13afb8=0xce;}_0x4175bf[_0x6eeb('0x2c')](_0x13afb8);return _0x4175bf['set'](_0x6eeb('0x31'),_0x4de41e+'-'+_0x41209a+'/'+_0x4b7d29)[_0x6eeb('0x2d')](_0x34e9d0);}return null;};}function patchUpdates(_0x10551d){return function(_0x2362e6){try{jsonpatch[_0x6eeb('0x32')](_0x2362e6,_0x10551d,!![]);}catch(_0x225e3e){return BPromise['reject'](_0x225e3e);}return _0x2362e6[_0x6eeb('0x33')]();};}function saveUpdates(_0x4982ac,_0x702a08){return function(_0x2d9365){if(_0x2d9365){return _0x2d9365['update'](_0x4982ac)[_0x6eeb('0x21')](function(_0x1292e5){return _0x1292e5;});}return null;};}function removeEntity(_0x5cf050,_0xe78e8d){return function(_0x2f8a0a){if(_0x2f8a0a){return _0x2f8a0a[_0x6eeb('0x34')]()[_0x6eeb('0x21')](function(){_0x5cf050[_0x6eeb('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x502c28,_0x3db46d){return function(_0x44a50f){if(!_0x44a50f){_0x502c28[_0x6eeb('0x2b')](0x194);}return _0x44a50f;};}function handleError(_0x44f0f5,_0x408e84){_0x408e84=_0x408e84||0x1f4;return function(_0x44e5a0){logger[_0x6eeb('0x26')](_0x44e5a0[_0x6eeb('0x35')]);if(_0x44e5a0['name']){delete _0x44e5a0[_0x6eeb('0x36')];}_0x44f0f5['status'](_0x408e84)['send'](_0x44e5a0);};}exports['index']=function(_0x2371a9,_0x49ad5c){var _0x359db2={},_0x884777={},_0x1866d8={'count':0x0,'rows':[]};var _0x58748a=_['map'](db['FaxMessage'][_0x6eeb('0x37')],function(_0x1607ad){return{'name':_0x1607ad[_0x6eeb('0x38')],'type':_0x1607ad[_0x6eeb('0x39')][_0x6eeb('0x3a')]};});_0x884777[_0x6eeb('0x3b')]=_['map'](_0x58748a,_0x6eeb('0x36'));_0x884777[_0x6eeb('0x3c')]=_['keys'](_0x2371a9[_0x6eeb('0x3c')]);_0x884777['filters']=_[_0x6eeb('0x3d')](_0x884777[_0x6eeb('0x3b')],_0x884777[_0x6eeb('0x3c')]);_0x359db2['attributes']=_['intersection'](_0x884777[_0x6eeb('0x3b')],qs['fields'](_0x2371a9['query'][_0x6eeb('0x3e')]));_0x359db2['attributes']=_0x359db2['attributes'][_0x6eeb('0x3f')]?_0x359db2['attributes']:_0x884777['model'];if(!_0x2371a9[_0x6eeb('0x3c')][_0x6eeb('0x40')]('nolimit')){_0x359db2['limit']=qs[_0x6eeb('0x30')](_0x2371a9[_0x6eeb('0x3c')]['limit']);_0x359db2['offset']=qs['offset'](_0x2371a9['query'][_0x6eeb('0x2e')]);}_0x359db2[_0x6eeb('0x41')]=qs[_0x6eeb('0x42')](_0x2371a9['query']['sort']);_0x359db2[_0x6eeb('0x43')]=qs[_0x6eeb('0x44')](_[_0x6eeb('0x45')](_0x2371a9[_0x6eeb('0x3c')],_0x884777[_0x6eeb('0x44')]),_0x58748a);if(_0x2371a9['query'][_0x6eeb('0x46')]){_0x359db2[_0x6eeb('0x43')]=_[_0x6eeb('0x47')](_0x359db2[_0x6eeb('0x43')],{'$or':_[_0x6eeb('0x48')](_0x58748a,function(_0x5da3ae){if(_0x5da3ae[_0x6eeb('0x39')]!==_0x6eeb('0x49')){var _0x81cf8={};_0x81cf8[_0x5da3ae[_0x6eeb('0x36')]]={'$like':'%'+_0x2371a9[_0x6eeb('0x3c')][_0x6eeb('0x46')]+'%'};return _0x81cf8;}})});}_0x359db2=_[_0x6eeb('0x47')]({},_0x359db2,_0x2371a9[_0x6eeb('0x4a')]);var _0x3df3be={'where':_0x359db2[_0x6eeb('0x43')]};return db[_0x6eeb('0x4b')][_0x6eeb('0x4c')](_0x3df3be)[_0x6eeb('0x21')](function(_0x3a1ddb){_0x1866d8[_0x6eeb('0x4c')]=_0x3a1ddb;if(_0x2371a9[_0x6eeb('0x3c')]['includeAll']){_0x359db2[_0x6eeb('0x4d')]=[{'all':!![]}];}return db['FaxMessage'][_0x6eeb('0x4e')](_0x359db2);})[_0x6eeb('0x21')](function(_0x410772){_0x1866d8[_0x6eeb('0x4f')]=_0x410772;return _0x1866d8;})[_0x6eeb('0x21')](respondWithFilteredResult(_0x49ad5c,_0x359db2))['catch'](handleError(_0x49ad5c,null));};exports[_0x6eeb('0x50')]=function(_0x4a1e25,_0x3ff44f){var _0x233263={'raw':!![],'where':{'id':_0x4a1e25[_0x6eeb('0x51')]['id']}},_0x4504d7={};_0x4504d7[_0x6eeb('0x3b')]=_[_0x6eeb('0x52')](db[_0x6eeb('0x4b')][_0x6eeb('0x37')]);_0x4504d7['query']=_[_0x6eeb('0x52')](_0x4a1e25[_0x6eeb('0x3c')]);_0x4504d7['filters']=_[_0x6eeb('0x3d')](_0x4504d7['model'],_0x4504d7['query']);_0x233263[_0x6eeb('0x53')]=_[_0x6eeb('0x3d')](_0x4504d7[_0x6eeb('0x3b')],qs[_0x6eeb('0x3e')](_0x4a1e25[_0x6eeb('0x3c')]['fields']));_0x233263[_0x6eeb('0x53')]=_0x233263[_0x6eeb('0x53')]['length']?_0x233263['attributes']:_0x4504d7[_0x6eeb('0x3b')];if(_0x4a1e25[_0x6eeb('0x3c')][_0x6eeb('0x54')]){_0x233263[_0x6eeb('0x4d')]=[{'all':!![]}];}_0x233263=_[_0x6eeb('0x47')]({},_0x233263,_0x4a1e25[_0x6eeb('0x4a')]);return db[_0x6eeb('0x4b')][_0x6eeb('0x55')](_0x233263)[_0x6eeb('0x21')](handleEntityNotFound(_0x3ff44f,null))['then'](respondWithResult(_0x3ff44f,null))[_0x6eeb('0x56')](handleError(_0x3ff44f,null));};exports[_0x6eeb('0x57')]=function(_0x38d1a2,_0x16488c){if(_0x38d1a2[_0x6eeb('0x58')]['id']){delete _0x38d1a2[_0x6eeb('0x58')]['id'];}return db[_0x6eeb('0x4b')]['find']({'where':{'id':_0x38d1a2[_0x6eeb('0x51')]['id']}})['then'](handleEntityNotFound(_0x16488c,null))[_0x6eeb('0x21')](saveUpdates(_0x38d1a2[_0x6eeb('0x58')],null))[_0x6eeb('0x21')](respondWithResult(_0x16488c,null))[_0x6eeb('0x56')](handleError(_0x16488c,null));};exports[_0x6eeb('0x34')]=function(_0x5046f7,_0x5a2abc){return db[_0x6eeb('0x4b')][_0x6eeb('0x55')]({'where':{'id':_0x5046f7[_0x6eeb('0x51')]['id']}})[_0x6eeb('0x21')](handleEntityNotFound(_0x5a2abc,null))[_0x6eeb('0x21')](removeEntity(_0x5a2abc,null))[_0x6eeb('0x56')](handleError(_0x5a2abc,null));};exports['describe']=function(_0x4f0cf8,_0x1c80e1){return db[_0x6eeb('0x4b')][_0x6eeb('0x59')]()[_0x6eeb('0x21')](respondWithResult(_0x1c80e1,null))['catch'](handleError(_0x1c80e1,null));};var interaction_log=require('../../config/logger')(_0x6eeb('0x5a'));exports[_0x6eeb('0x5b')]=function(_0x3d719b,_0x3ea92b,_0x556470){var _0x4c711e={'agent':{},'channel':'fax'};if(_0x3d719b[_0x6eeb('0x58')]['id']){delete _0x3d719b[_0x6eeb('0x58')]['id'];}_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5c')]=!![];_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5d')]=moment()[_0x6eeb('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5f')]=_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5f')]||_0x3d719b[_0x6eeb('0x60')]['id'];_0x4c711e[_0x6eeb('0x61')]['id']=_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5f')];return db[_0x6eeb('0x4b')][_0x6eeb('0x55')]({'where':{'id':_0x3d719b[_0x6eeb('0x51')]['id'],'UserId':null}})[_0x6eeb('0x21')](handleEntityNotFound(_0x3ea92b,null))[_0x6eeb('0x21')](saveUpdates(_0x3d719b['body'],null))[_0x6eeb('0x21')](function(_0x3357ac){if(_0x3357ac){_0x4c711e['message']=_0x3357ac[_0x6eeb('0x62')]({'plain':!![]});return db[_0x6eeb('0x63')][_0x6eeb('0x55')]({'where':{'id':_0x3357ac['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3ea92b,null))['then'](function(_0x3d0470){if(_0x3d0470){return _0x3d0470[_0x6eeb('0x57')]({'UserId':_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5f')],'read1stAt':_[_0x6eeb('0x64')](_0x3d0470['read1stAt'])?moment()[_0x6eeb('0x5e')](_0x6eeb('0x65')):undefined});}return null;})[_0x6eeb('0x21')](function(_0x5a2375){if(_0x5a2375){_0x4c711e['interaction']=_0x5a2375['get']({'plain':!![]});interaction_log[_0x6eeb('0x22')](_0x6eeb('0x66'),_0x3d719b[_0x6eeb('0x60')]['id'],_0x3d719b['user'][_0x6eeb('0x36')],_0x3d719b['user'][_0x6eeb('0x67')],_0x4c711e[_0x6eeb('0x68')]['id'],_0x3d719b[_0x6eeb('0x58')]?JSON[_0x6eeb('0x25')](_0x3d719b['body']):_0x6eeb('0x69'));return respondWithRpcPromise(_0x6eeb('0x6a'),'acceptMessage',_0x4c711e);}return null;})[_0x6eeb('0x21')](function(_0x387b1d){var _0x31dfc4=_0x6eeb('0x6b')+_0x387b1d[_0x6eeb('0x29')][_0x6eeb('0x6c')];return db[_0x6eeb('0x6d')][_0x6eeb('0x3c')](_0x31dfc4,{'type':db[_0x6eeb('0x6e')][_0x6eeb('0x6f')]['SELECT'],'raw':!![]})[_0x6eeb('0x21')](function(_0x2fce1e){return _0x2fce1e;});})[_0x6eeb('0x21')](function(_0x83dc0c){if(_0x83dc0c){_0x4c711e[_0x6eeb('0x29')][_0x6eeb('0x70')]=_0x83dc0c[0x0];if(!_0x3d719b[_0x6eeb('0x58')]['UserId'])return;return db[_0x6eeb('0x71')][_0x6eeb('0x55')]({'where':{'id':_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x5f')],'role':_0x6eeb('0x61')},'attributes':['id','name',_0x6eeb('0x72'),'email',_0x6eeb('0x73')],'raw':!![]});}return null;})[_0x6eeb('0x21')](function(_0x26d8ae){if(!_0x26d8ae)return null;_0x4c711e[_0x6eeb('0x29')]['agent']=_0x26d8ae;return _0x4c711e;})[_0x6eeb('0x21')](function(_0x4f6795){if(_0x4f6795){if(_0x3d719b[_0x6eeb('0x58')][_0x6eeb('0x74')]){_0x4c711e['message'][_0x6eeb('0x75')]=util[_0x6eeb('0x5e')](_0x6eeb('0x76'),_0x3d719b[_0x6eeb('0x60')][_0x6eeb('0x36')]);_0x4c711e[_0x6eeb('0x29')][_0x6eeb('0x77')]=_0x4c711e[_0x6eeb('0x77')];_0x4c711e['message'][_0x6eeb('0x78')]=_0x4c711e[_0x6eeb('0x77')];_0x4c711e['message'][_0x6eeb('0x79')]='accept';return respondWithRpcPromise(_0x6eeb('0x7a'),_0x6eeb('0x7a'),{'event':_0x6eeb('0x7b'),'message':_0x4c711e[_0x6eeb('0x29')]},client9002)[_0x6eeb('0x21')](function(){return _0x4c711e;});}return _0x4c711e;}return null;})[_0x6eeb('0x21')](respondWithResult(_0x3ea92b,null))[_0x6eeb('0x56')](handleError(_0x3ea92b,null));};var interaction_log=require(_0x6eeb('0x15'))(_0x6eeb('0x5a'));exports[_0x6eeb('0x7c')]=function(_0x3b188c,_0x185283,_0x213b13){var _0x3db65c={'agent':{},'channel':'fax'};if(_0x3b188c[_0x6eeb('0x58')]['id']){delete _0x3b188c[_0x6eeb('0x58')]['id'];}_0x3b188c[_0x6eeb('0x58')][_0x6eeb('0x5f')]=_0x3b188c[_0x6eeb('0x58')]['UserId']||_0x3b188c[_0x6eeb('0x60')]['id'];_0x3db65c['agent']['id']=_0x3b188c[_0x6eeb('0x58')][_0x6eeb('0x5f')];return db['FaxMessage'][_0x6eeb('0x55')]({'where':{'id':_0x3b188c[_0x6eeb('0x51')]['id'],'UserId':null}})[_0x6eeb('0x21')](handleEntityNotFound(_0x185283,null))[_0x6eeb('0x21')](function(_0x581fcf){if(_0x581fcf){_0x3db65c[_0x6eeb('0x29')]=_0x581fcf[_0x6eeb('0x62')]({'plain':!![]});return db[_0x6eeb('0x63')]['find']({'where':{'id':_0x581fcf[_0x6eeb('0x7d')]}});}return null;})[_0x6eeb('0x21')](handleEntityNotFound(_0x185283,null))[_0x6eeb('0x21')](function(_0x213eec){if(_0x213eec){_0x3db65c[_0x6eeb('0x68')]=_0x213eec['get']({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3b188c[_0x6eeb('0x60')]['id'],_0x3b188c[_0x6eeb('0x60')]['name'],_0x3b188c[_0x6eeb('0x60')][_0x6eeb('0x67')],_0x3db65c[_0x6eeb('0x68')]['id'],_0x3b188c[_0x6eeb('0x58')]?JSON['stringify'](_0x3b188c[_0x6eeb('0x58')]):'null');return respondWithRpcPromise('RejectMessage',_0x6eeb('0x7e'),_0x3db65c);}return null;})['then'](function(_0x149a02){var _0x5e3f23=_0x6eeb('0x6b')+_0x149a02['message']['ContactId'];return db[_0x6eeb('0x6d')][_0x6eeb('0x3c')](_0x5e3f23,{'type':db[_0x6eeb('0x6e')][_0x6eeb('0x6f')][_0x6eeb('0x7f')],'raw':!![]})[_0x6eeb('0x21')](function(_0x23efa1){return _0x23efa1;});})[_0x6eeb('0x21')](function(_0x4f19f0){if(_0x4f19f0){_0x3db65c['message'][_0x6eeb('0x70')]=_0x4f19f0[0x0];if(!_0x3b188c[_0x6eeb('0x58')][_0x6eeb('0x5f')])return;return db['User'][_0x6eeb('0x55')]({'where':{'id':_0x3b188c[_0x6eeb('0x58')][_0x6eeb('0x5f')],'role':_0x6eeb('0x61')},'attributes':['id',_0x6eeb('0x36'),_0x6eeb('0x72'),_0x6eeb('0x80'),_0x6eeb('0x73')],'raw':!![]});}return null;})[_0x6eeb('0x21')](function(_0x51bc7c){if(!_0x51bc7c)return null;_0x3db65c[_0x6eeb('0x29')][_0x6eeb('0x61')]=_0x51bc7c;return _0x3db65c;})[_0x6eeb('0x21')](function(_0x4eb6fb){if(_0x4eb6fb){_0x4eb6fb[_0x6eeb('0x29')]['interface']=util['format']('SIP/%s',_0x3b188c['user'][_0x6eeb('0x36')]);_0x4eb6fb[_0x6eeb('0x29')][_0x6eeb('0x77')]=_0x3db65c['channel'];_0x4eb6fb[_0x6eeb('0x29')][_0x6eeb('0x78')]=_0x3db65c[_0x6eeb('0x77')];_0x4eb6fb[_0x6eeb('0x29')][_0x6eeb('0x79')]=_0x6eeb('0x7c');respondWithRpcPromise(_0x6eeb('0x7a'),'EventManager',{'event':_0x6eeb('0x81'),'message':_0x4eb6fb['message']},client9002);return _0x3db65c;}return null;})[_0x6eeb('0x21')](respondWithResult(_0x185283,null))['catch'](handleError(_0x185283,null));};exports['create']=function(_0x278c3d,_0x252f6b){var _0x27af02;return db[_0x6eeb('0x4b')][_0x6eeb('0x82')](_0x278c3d[_0x6eeb('0x58')],{})[_0x6eeb('0x21')](function(_0x3654e3){_0x27af02=_0x3654e3;return db[_0x6eeb('0x83')]['findOne']({'where':{'id':_0x27af02[_0x6eeb('0x6c')]}});})[_0x6eeb('0x21')](function(_0x69ea10){if(_[_0x6eeb('0x64')](_0x69ea10)){return;}else{_0x27af02['fax']=_0x69ea10[_0x6eeb('0x84')];return db[_0x6eeb('0x85')][_0x6eeb('0x86')]({'where':{'id':_0x27af02[_0x6eeb('0x87')]}});}})[_0x6eeb('0x21')](function(_0xebd508){return respondWithRpcPromise(_0x6eeb('0x88'),_0x6eeb('0x88'),{'FaxAccountId':_[_0x6eeb('0x64')](_0x278c3d[_0x6eeb('0x58')])?undefined:_0x278c3d[_0x6eeb('0x58')][_0x6eeb('0x89')],'path':_[_0x6eeb('0x64')](_0xebd508)?undefined:util['format'](_0x6eeb('0x8a'),_0xebd508[_0x6eeb('0x8b')]),'fax':_[_0x6eeb('0x64')](_0x27af02[_0x6eeb('0x84')])?undefined:_0x27af02['fax'],'AttachmentId':_0x27af02[_0x6eeb('0x87')]},client9002);})['then'](respondWithResult(_0x252f6b,0xc9))['catch'](handleError(_0x252f6b,null));};exports[_0x6eeb('0x8c')]=function(_0x2587c4,_0x4149d2){var _0x1cfe43=path[_0x6eeb('0x8d')](config[_0x6eeb('0x8e')],_0x6eeb('0x8f'),_0x6eeb('0x90'),_0x6eeb('0x91'));return db['FaxMessage']['find']({'where':{'id':_0x2587c4[_0x6eeb('0x51')]['id']},'include':[{'model':db[_0x6eeb('0x85')],'as':_0x6eeb('0x85')}]})[_0x6eeb('0x21')](handleEntityNotFound(_0x4149d2,null))[_0x6eeb('0x21')](function(_0x2e37bf){if(_0x2e37bf){return _0x4149d2['download'](path[_0x6eeb('0x8d')](_0x1cfe43,_0x2e37bf[_0x6eeb('0x85')]['basename']));}})[_0x6eeb('0x56')](handleError(_0x4149d2,null));};
\ No newline at end of file
index 57abccf..1036c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6209=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x6209,0x1e8));var _0x9620=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6209[_0x4154a6];return _0x3b2786;};'use strict';var EventEmitter=require(_0x9620('0x0'));var FaxMessage=require(_0x9620('0x1'))['db'][_0x9620('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x9620('0x3')](0x0);var events={'afterCreate':_0x9620('0x4'),'afterUpdate':_0x9620('0x5'),'afterDestroy':_0x9620('0x6')};function emitEvent(_0x5deb40){return function(_0x2869e2,_0x17dc92,_0x2fa00b){FaxMessageEvents['emit'](_0x5deb40+':'+_0x2869e2['id'],_0x2869e2);FaxMessageEvents[_0x9620('0x7')](_0x5deb40,_0x2869e2);_0x2fa00b(null);};}for(var e in events){if(events[_0x9620('0x8')](e)){var event=events[e];FaxMessage[_0x9620('0x9')](e,emitEvent(event));}}module[_0x9620('0xa')]=FaxMessageEvents;
\ No newline at end of file
+var _0x77a9=['hasOwnProperty','events','FaxMessage','save','update','remove','emit'];(function(_0x3211b0,_0x536d87){var _0x4d3c65=function(_0x185186){while(--_0x185186){_0x3211b0['push'](_0x3211b0['shift']());}};_0x4d3c65(++_0x536d87);}(_0x77a9,0x19e));var _0x977a=function(_0x56ca97,_0x8a60f8){_0x56ca97=_0x56ca97-0x0;var _0x31a5bb=_0x77a9[_0x56ca97];return _0x31a5bb;};'use strict';var EventEmitter=require(_0x977a('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x977a('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x977a('0x2'),'afterUpdate':_0x977a('0x3'),'afterDestroy':_0x977a('0x4')};function emitEvent(_0x368664){return function(_0x520cd7,_0x318fc8,_0xb755){FaxMessageEvents[_0x977a('0x5')](_0x368664+':'+_0x520cd7['id'],_0x520cd7);FaxMessageEvents[_0x977a('0x5')](_0x368664,_0x520cd7);_0xb755(null);};}for(var e in events){if(events[_0x977a('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 91d08d2..2d621a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b17=['bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','FaxInteraction','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x3b0f83,_0x1d3ce8){var _0x4b1dca=function(_0x25127a){while(--_0x25127a){_0x3b0f83['push'](_0x3b0f83['shift']());}};_0x4b1dca(++_0x1d3ce8);}(_0x8b17,0x1db));var _0x78b1=function(_0x495e1e,_0x4ff02c){_0x495e1e=_0x495e1e-0x0;var _0x23eb32=_0x8b17[_0x495e1e];return _0x23eb32;};'use strict';var _=require(_0x78b1('0x0'));var util=require(_0x78b1('0x1'));var logger=require(_0x78b1('0x2'))(_0x78b1('0x3'));var moment=require(_0x78b1('0x4'));var BPromise=require(_0x78b1('0x5'));var rp=require(_0x78b1('0x6'));var fs=require('fs');var path=require(_0x78b1('0x7'));var rimraf=require(_0x78b1('0x8'));var config=require(_0x78b1('0x9'));var attributes=require(_0x78b1('0xa'));module[_0x78b1('0xb')]=function(_0x7fbee3,_0x53f70b){return _0x7fbee3[_0x78b1('0xc')](_0x78b1('0xd'),attributes,{'tableName':_0x78b1('0xe'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x78b1('0xf')],'type':_0x78b1('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5b40ca,_0x14b19d,_0x2789dd){var _0x31b921=_0x7fbee3[_0x78b1('0x11')];var _0x5afad0=_0x5b40ca[_0x78b1('0x12')]({'plain':!![]});if(_0x5afad0[_0x78b1('0x13')][_0x78b1('0x14')]()==='in'||_0x5afad0[_0x78b1('0x13')][_0x78b1('0x14')]()===_0x78b1('0x15')&&!_0x5afad0['secret']&&!_[_0x78b1('0x16')](_0x5afad0[_0x78b1('0x17')])){_0x31b921[_0x78b1('0x18')]['findOne']({'where':{'id':_0x5afad0[_0x78b1('0x19')]}})['then'](function(_0x1dcd3d){if(_0x1dcd3d){_0x1dcd3d[_0x78b1('0x1a')]({'lastMsgAt':_0x5afad0[_0x78b1('0x1b')],'lastMsgDirection':_0x5afad0['direction'][_0x78b1('0x14')]()});}})[_0x78b1('0x1c')](function(_0x1bd3e1){console[_0x78b1('0x1d')](_0x1bd3e1);});}_0x2789dd();}},'charset':_0x78b1('0x1e'),'collate':_0x78b1('0x1f')});};
\ No newline at end of file
+var _0x8266=['fti_fax_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','request-promise','path','rimraf','./faxMessage.attributes','exports','fax_messages'];(function(_0x5ff464,_0x5038d7){var _0x347182=function(_0xeef52c){while(--_0xeef52c){_0x5ff464['push'](_0x5ff464['shift']());}};_0x347182(++_0x5038d7);}(_0x8266,0x1a7));var _0x6826=function(_0x2189e8,_0x4babdb){_0x2189e8=_0x2189e8-0x0;var _0x633add=_0x8266[_0x2189e8];return _0x633add;};'use strict';var _=require(_0x6826('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6826('0x1'));var moment=require('moment');var BPromise=require(_0x6826('0x2'));var rp=require(_0x6826('0x3'));var fs=require('fs');var path=require(_0x6826('0x4'));var rimraf=require(_0x6826('0x5'));var config=require('../../config/environment');var attributes=require(_0x6826('0x6'));module[_0x6826('0x7')]=function(_0x9be06f,_0x521ee0){return _0x9be06f['define']('FaxMessage',attributes,{'tableName':_0x6826('0x8'),'paranoid':![],'indexes':[{'name':_0x6826('0x9'),'fields':[_0x6826('0xa')],'type':_0x6826('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xcab5a9,_0xc7128a,_0x13c165){var _0x1de128=_0x9be06f['models'];var _0x35ab82=_0xcab5a9[_0x6826('0xc')]({'plain':!![]});if(_0x35ab82[_0x6826('0xd')]['toLowerCase']()==='in'||_0x35ab82['direction'][_0x6826('0xe')]()===_0x6826('0xf')&&!_0x35ab82[_0x6826('0x10')]&&!_[_0x6826('0x11')](_0x35ab82['UserId'])){_0x1de128[_0x6826('0x12')][_0x6826('0x13')]({'where':{'id':_0x35ab82[_0x6826('0x14')]}})['then'](function(_0x3e9412){if(_0x3e9412){_0x3e9412[_0x6826('0x15')]({'lastMsgAt':_0x35ab82[_0x6826('0x16')],'lastMsgDirection':_0x35ab82[_0x6826('0xd')][_0x6826('0xe')]()});}})[_0x6826('0x17')](function(_0x49da20){console[_0x6826('0x18')](_0x49da20);});}_0x13c165();}},'charset':_0x6826('0x19'),'collate':_0x6826('0x1a')});};
\ No newline at end of file
index 00acfed..6516695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./faxMessage.socket','request','then','info','request\x20sent','stringify','error','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','where','attributes','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x387b81,_0xdfb081){var _0x1a2c5d=function(_0x512596){while(--_0x512596){_0x387b81['push'](_0x387b81['shift']());}};_0x1a2c5d(++_0xdfb081);}(_0x54ef,0x112));var _0xf54e=function(_0x30ebe8,_0x1a07e9){_0x30ebe8=_0x30ebe8-0x0;var _0x50ab77=_0x54ef[_0x30ebe8];return _0x50ab77;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});config[_0xf54e('0xb')]=_[_0xf54e('0xc')](config['redis'],{'host':_0xf54e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf54e('0xb')]));require(_0xf54e('0xe'))['register'](socket);function respondWithRpcPromise(_0x26fc3e,_0xefa1c0,_0x6b9e61){return new BPromise(function(_0x3ecfb3,_0x5f232a){return client[_0xf54e('0xf')](_0x26fc3e,_0x6b9e61)[_0xf54e('0x10')](function(_0x143d66){logger[_0xf54e('0x11')]('FaxMessage,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'),JSON[_0xf54e('0x13')](_0x143d66));if(_0x143d66[_0xf54e('0x14')]){if(_0x143d66[_0xf54e('0x14')]['code']===0x1f4){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);return _0x5f232a(_0x143d66['error'][_0xf54e('0x16')]);}logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66['error']['message']);return _0x3ecfb3(_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);}else{logger[_0xf54e('0x11')](_0xf54e('0x15'),_0xefa1c0,_0xf54e('0x12'));_0x3ecfb3(_0x143d66[_0xf54e('0x17')][_0xf54e('0x16')]);}})[_0xf54e('0x18')](function(_0x1dcc04){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x1dcc04);_0x5f232a(_0x1dcc04);});});}exports['CreateFaxMessage']=function(_0x48a7e1){var _0x23e14=this;return new Promise(function(_0x59f338,_0x3e1556){return db[_0xf54e('0x19')][_0xf54e('0x1a')](_0x48a7e1[_0xf54e('0x1b')],{'raw':_0x48a7e1[_0xf54e('0x1c')]?_0x48a7e1[_0xf54e('0x1c')][_0xf54e('0x1d')]===undefined?!![]:![]:!![]})[_0xf54e('0x10')](function(_0x3c0169){logger[_0xf54e('0x11')](_0xf54e('0x1e'),_0x48a7e1);logger['debug'](_0xf54e('0x1e'),_0x48a7e1,JSON['stringify'](_0x3c0169));_0x59f338(_0x3c0169);})[_0xf54e('0x18')](function(_0x272df6){logger[_0xf54e('0x14')](_0xf54e('0x1e'),_0x272df6[_0xf54e('0x16')],_0x48a7e1);_0x3e1556(_0x23e14[_0xf54e('0x14')](0x1f4,_0x272df6[_0xf54e('0x16')]));});});};exports[_0xf54e('0x1f')]=function(_0x2342a9){var _0x33457f=this;return new Promise(function(_0xf6cdd7,_0x39c0ae){return db[_0xf54e('0x19')]['update'](_0x2342a9[_0xf54e('0x1b')],{'raw':_0x2342a9['options']?_0x2342a9[_0xf54e('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x20')]||null:null,'attributes':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x21')]||null:null,'limit':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9['options']['limit']||null:null})[_0xf54e('0x10')](function(_0x258d29){logger[_0xf54e('0x11')](_0xf54e('0x1f'),_0x2342a9);logger[_0xf54e('0x22')](_0xf54e('0x1f'),_0x2342a9,JSON[_0xf54e('0x13')](_0x258d29));_0xf6cdd7(_0x258d29);})[_0xf54e('0x18')](function(_0x3ae704){logger[_0xf54e('0x14')]('UpdateFaxMessage',_0x3ae704['message'],_0x2342a9);_0x39c0ae(_0x33457f[_0xf54e('0x14')](0x1f4,_0x3ae704[_0xf54e('0x16')]));});});};
\ No newline at end of file
+var _0xac31=['attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','UpdateFaxMessage','update','where'];(function(_0x39665f,_0x445d4c){var _0x2ed855=function(_0x17b536){while(--_0x17b536){_0x39665f['push'](_0x39665f['shift']());}};_0x2ed855(++_0x445d4c);}(_0xac31,0xca));var _0x1ac3=function(_0x1b809d,_0x2ecaab){_0x1b809d=_0x1b809d-0x0;var _0x23bc6f=_0xac31[_0x1b809d];return _0x23bc6f;};'use strict';var _=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var moment=require(_0x1ac3('0x2'));var BPromise=require(_0x1ac3('0x3'));var rs=require(_0x1ac3('0x4'));var fs=require('fs');var Redis=require(_0x1ac3('0x5'));var db=require(_0x1ac3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ac3('0x7'))(_0x1ac3('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1ac3('0x9')][_0x1ac3('0xa')]({'port':0x232a});config[_0x1ac3('0xb')]=_[_0x1ac3('0xc')](config[_0x1ac3('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1ac3('0xd'))(new Redis(config['redis']));require(_0x1ac3('0xe'))[_0x1ac3('0xf')](socket);function respondWithRpcPromise(_0x344674,_0x53500b,_0xa26c88){return new BPromise(function(_0x1e2642,_0x3e835b){return client[_0x1ac3('0x10')](_0x344674,_0xa26c88)[_0x1ac3('0x11')](function(_0x422d19){logger['info'](_0x1ac3('0x12'),_0x53500b,_0x1ac3('0x13'));logger[_0x1ac3('0x14')](_0x1ac3('0x15'),_0x53500b,'request\x20sent',JSON[_0x1ac3('0x16')](_0x422d19));if(_0x422d19[_0x1ac3('0x17')]){if(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x18')]===0x1f4){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x422d19[_0x1ac3('0x17')]['message']);return _0x3e835b(_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);}logger[_0x1ac3('0x17')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x422d19[_0x1ac3('0x17')][_0x1ac3('0x19')]);return _0x1e2642(_0x422d19[_0x1ac3('0x17')]['message']);}else{logger[_0x1ac3('0x1a')]('FaxMessage,\x20%s,\x20%s',_0x53500b,_0x1ac3('0x13'));_0x1e2642(_0x422d19[_0x1ac3('0x1b')][_0x1ac3('0x19')]);}})[_0x1ac3('0x1c')](function(_0x18b985){logger['error'](_0x1ac3('0x12'),_0x53500b,_0x18b985);_0x3e835b(_0x18b985);});});}exports[_0x1ac3('0x1d')]=function(_0x296abf){var _0x257f60=this;return new Promise(function(_0x5f1918,_0x48d18a){return db[_0x1ac3('0x1e')][_0x1ac3('0x1f')](_0x296abf[_0x1ac3('0x20')],{'raw':_0x296abf[_0x1ac3('0x21')]?_0x296abf[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![]})[_0x1ac3('0x11')](function(_0x10912a){logger[_0x1ac3('0x1a')]('CreateFaxMessage',_0x296abf);logger[_0x1ac3('0x14')](_0x1ac3('0x1d'),_0x296abf,JSON['stringify'](_0x10912a));_0x5f1918(_0x10912a);})[_0x1ac3('0x1c')](function(_0x10f30c){logger['error'](_0x1ac3('0x1d'),_0x10f30c[_0x1ac3('0x19')],_0x296abf);_0x48d18a(_0x257f60[_0x1ac3('0x17')](0x1f4,_0x10f30c[_0x1ac3('0x19')]));});});};exports[_0x1ac3('0x23')]=function(_0x565a0f){var _0x5a2ab2=this;return new Promise(function(_0x503a64,_0x528807){return db['FaxMessage'][_0x1ac3('0x24')](_0x565a0f['body'],{'raw':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f['options'][_0x1ac3('0x25')]||null:null,'attributes':_0x565a0f['options']?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x26')]||null:null,'limit':_0x565a0f[_0x1ac3('0x21')]?_0x565a0f[_0x1ac3('0x21')][_0x1ac3('0x27')]||null:null})[_0x1ac3('0x11')](function(_0x9c17c2){logger['info'](_0x1ac3('0x23'),_0x565a0f);logger[_0x1ac3('0x14')](_0x1ac3('0x23'),_0x565a0f,JSON[_0x1ac3('0x16')](_0x9c17c2));_0x503a64(_0x9c17c2);})['catch'](function(_0x3591a9){logger[_0x1ac3('0x17')](_0x1ac3('0x23'),_0x3591a9[_0x1ac3('0x19')],_0x565a0f);_0x528807(_0x5a2ab2[_0x1ac3('0x17')](0x1f4,_0x3591a9['message']));});});};
\ No newline at end of file
index 18c1616..0e439d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb112=['faxMessage:','./faxMessage.events','save','remove','length'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xb112,0x79));var _0x2b11=function(_0x2a4558,_0x1a8aa1){_0x2a4558=_0x2a4558-0x0;var _0x485153=_0xb112[_0x2a4558];return _0x485153;};'use strict';var FaxMessageEvents=require(_0x2b11('0x0'));var events=[_0x2b11('0x1'),_0x2b11('0x2'),'update'];function createListener(_0xb4f753,_0x392d2c){return function(_0x4c1291){_0x392d2c['emit'](_0xb4f753,_0x4c1291);};}function removeListener(_0x46c8c5,_0xd8fd40){return function(){FaxMessageEvents['removeListener'](_0x46c8c5,_0xd8fd40);};}exports['register']=function(_0x482d0c){for(var _0x3fca83=0x0,_0x6fc12a=events[_0x2b11('0x3')];_0x3fca83<_0x6fc12a;_0x3fca83++){var _0x5a960f=events[_0x3fca83];var _0x30c137=createListener(_0x2b11('0x4')+_0x5a960f,_0x482d0c);FaxMessageEvents['on'](_0x5a960f,_0x30c137);}};
\ No newline at end of file
+var _0x82c2=['emit','removeListener','register','length','faxMessage:','./faxMessage.events','save','remove','update'];(function(_0x2e6d8e,_0x5bc7a7){var _0x3e8c6e=function(_0x90aaae){while(--_0x90aaae){_0x2e6d8e['push'](_0x2e6d8e['shift']());}};_0x3e8c6e(++_0x5bc7a7);}(_0x82c2,0x17f));var _0x282c=function(_0x511d17,_0x9ad3ba){_0x511d17=_0x511d17-0x0;var _0x4f42e3=_0x82c2[_0x511d17];return _0x4f42e3;};'use strict';var FaxMessageEvents=require(_0x282c('0x0'));var events=[_0x282c('0x1'),_0x282c('0x2'),_0x282c('0x3')];function createListener(_0x3d7413,_0x4932ad){return function(_0x320301){_0x4932ad[_0x282c('0x4')](_0x3d7413,_0x320301);};}function removeListener(_0x44c863,_0x36b5df){return function(){FaxMessageEvents[_0x282c('0x5')](_0x44c863,_0x36b5df);};}exports[_0x282c('0x6')]=function(_0x3cb04d){for(var _0x5a2c3c=0x0,_0x3eab0d=events[_0x282c('0x7')];_0x5a2c3c<_0x3eab0d;_0x5a2c3c++){var _0x2e6fae=events[_0x5a2c3c];var _0x2ed9e7=createListener(_0x282c('0x8')+_0x2e6fae,_0x3cb04d);FaxMessageEvents['on'](_0x2e6fae,_0x2ed9e7);}};
\ No newline at end of file
index 9111b7f..5236a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','/:id','/:id/download','post','tracked'];(function(_0x19fb13,_0x4f9ba3){var _0x112756=function(_0x503591){while(--_0x503591){_0x19fb13['push'](_0x19fb13['shift']());}};_0x112756(++_0x4f9ba3);}(_0xb9a7,0x112));var _0x7b9a=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xb9a7[_0x40a045];return _0x1a687c;};'use strict';var multer=require('multer');var util=require(_0x7b9a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7b9a('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x7b9a('0x2'));var interaction=require(_0x7b9a('0x3'));var config=require(_0x7b9a('0x4'));var controller=require(_0x7b9a('0x5'));router[_0x7b9a('0x6')]('/',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x8')]);router[_0x7b9a('0x6')](_0x7b9a('0x9'),auth[_0x7b9a('0x7')](),controller['describe']);router[_0x7b9a('0x6')](_0x7b9a('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7b9a('0xb'),auth[_0x7b9a('0x7')](),controller['download']);router[_0x7b9a('0xc')]('/',auth['isAuthenticated'](),interaction[_0x7b9a('0xd')]('fax',_0x7b9a('0xe')),controller[_0x7b9a('0xf')]);router[_0x7b9a('0x10')]('/:id',auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x11')]);router['put'](_0x7b9a('0x12'),auth[_0x7b9a('0x7')](),controller['accept']);router[_0x7b9a('0x10')](_0x7b9a('0x13'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x14')]);router[_0x7b9a('0x15')](_0x7b9a('0xa'),auth[_0x7b9a('0x7')](),controller[_0x7b9a('0x16')]);module[_0x7b9a('0x17')]=router;
\ No newline at end of file
+var _0x91a7=['isAuthenticated','/:id','show','download','tracked','fax','faxmessage:create','create','put','update','accept','/:id/reject','reject','delete','exports','util','path','connect-timeout','Router','../../components/auth/service','./faxMessage.controller','get','index','/describe'];(function(_0x2338fa,_0x80579a){var _0x42df9b=function(_0x13fe56){while(--_0x13fe56){_0x2338fa['push'](_0x2338fa['shift']());}};_0x42df9b(++_0x80579a);}(_0x91a7,0xe7));var _0x791a=function(_0x361098,_0x56950f){_0x361098=_0x361098-0x0;var _0x5f56f9=_0x91a7[_0x361098];return _0x5f56f9;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['describe']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/download',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['post']('/',auth[_0x791a('0x9')](),interaction[_0x791a('0xd')](_0x791a('0xe'),_0x791a('0xf')),controller[_0x791a('0x10')]);router[_0x791a('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x791a('0x12')]);router[_0x791a('0x11')]('/:id/accept',auth[_0x791a('0x9')](),controller[_0x791a('0x13')]);router['put'](_0x791a('0x14'),auth[_0x791a('0x9')](),controller[_0x791a('0x15')]);router[_0x791a('0x16')]('/:id',auth[_0x791a('0x9')](),controller['destroy']);module[_0x791a('0x17')]=router;
\ No newline at end of file
index 279293d..81c4f92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3d5=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x22f4cc,_0x17a413){var _0x3e3e2f=function(_0x530e07){while(--_0x530e07){_0x22f4cc['push'](_0x22f4cc['shift']());}};_0x3e3e2f(++_0x17a413);}(_0xa3d5,0xc7));var _0x5a3d=function(_0x173452,_0x3aa870){_0x173452=_0x173452-0x0;var _0xee3fd0=_0xa3d5[_0x173452];return _0xee3fd0;};'use strict';var Sequelize=require(_0x5a3d('0x0'));module[_0x5a3d('0x1')]={'name':{'type':Sequelize[_0x5a3d('0x2')],'unique':_0x5a3d('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5a3d('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5a3d('0x5')](_0x5a3d('0x6'),_0x5a3d('0x7'),_0x5a3d('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5a3d('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xacf5=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0xfb0281,_0x3ff38b){var _0x408dd3=function(_0x5d8017){while(--_0x5d8017){_0xfb0281['push'](_0xfb0281['shift']());}};_0x408dd3(++_0x3ff38b);}(_0xacf5,0x110));var _0x5acf=function(_0x31c796,_0x2e3c7f){_0x31c796=_0x31c796-0x0;var _0x128356=_0xacf5[_0x31c796];return _0x128356;};'use strict';var Sequelize=require(_0x5acf('0x0'));module[_0x5acf('0x1')]={'name':{'type':Sequelize[_0x5acf('0x2')],'unique':_0x5acf('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5acf('0x2')]},'timeout':{'type':Sequelize[_0x5acf('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5acf('0x5')](_0x5acf('0x6'),_0x5acf('0x7'),_0x5acf('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9ee3c36..402e8a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4521=['getMembers','findOne','UserFaxQueue','FaxQueueId','findAndCountAll','UserId','faxPause','updatedAt','createdAt','format','getTeams','Team','addTeams','ids','User','online','interface','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','includes','all','compact','value','isEmpty','userFaxQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','FaxQueues','UserProfileResource','end','error','stack','name','send','map','FaxQueue','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','params','rawAttributes','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','find','describe'];(function(_0x53647d,_0x3d357f){var _0x4843ae=function(_0xc7da9c){while(--_0xc7da9c){_0x53647d['push'](_0x53647d['shift']());}};_0x4843ae(++_0x3d357f);}(_0x4521,0xbd));var _0x1452=function(_0x847b26,_0x221ee5){_0x847b26=_0x847b26-0x0;var _0x52b424=_0x4521[_0x847b26];return _0x52b424;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1452('0x0'));var rp=require(_0x1452('0x1'));var moment=require(_0x1452('0x2'));var BPromise=require(_0x1452('0x3'));var Mustache=require(_0x1452('0x4'));var util=require(_0x1452('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1452('0x6'));var fs=require('fs');var fs_extra=require(_0x1452('0x7'));var _=require(_0x1452('0x8'));var squel=require(_0x1452('0x9'));var crypto=require(_0x1452('0xa'));var jsforce=require(_0x1452('0xb'));var deskjs=require(_0x1452('0xc'));var toCsv=require(_0x1452('0xd'));var querystring=require(_0x1452('0xe'));var Papa=require('papaparse');var Redis=require(_0x1452('0xf'));var authService=require(_0x1452('0x10'));var qs=require(_0x1452('0x11'));var as=require(_0x1452('0x12'));var hardwareService=require(_0x1452('0x13'));var logger=require(_0x1452('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x1452('0x15'));var licenseUtil=require(_0x1452('0x16'));var db=require(_0x1452('0x17'))['db'];config[_0x1452('0x18')]=_[_0x1452('0x19')](config[_0x1452('0x18')],{'host':_0x1452('0x1a'),'port':0x18eb});var socket=require(_0x1452('0x1b'))(new Redis(config[_0x1452('0x18')]));require(_0x1452('0x1c'))[_0x1452('0x1d')](socket);function respondWithStatusCode(_0x55960f,_0x42c456){_0x42c456=_0x42c456||0xcc;return function(_0x9f4f0b){if(_0x9f4f0b){return _0x55960f[_0x1452('0x1e')](_0x42c456);}return _0x55960f['status'](_0x42c456)['end']();};}function respondWithResult(_0x27a0f4,_0x1a8c50){_0x1a8c50=_0x1a8c50||0xc8;return function(_0xb030e){if(_0xb030e){return _0x27a0f4[_0x1452('0x1f')](_0x1a8c50)[_0x1452('0x20')](_0xb030e);}};}function respondWithFilteredResult(_0x34921d,_0x1b0508){return function(_0x5e44da){if(_0x5e44da){var _0x267084=typeof _0x1b0508[_0x1452('0x21')]===_0x1452('0x22')&&typeof _0x1b0508[_0x1452('0x23')]==='undefined';var _0x12a563=_0x5e44da['count'];var _0x5e3914=_0x267084?0x0:_0x1b0508[_0x1452('0x21')];var _0x385fa7=_0x267084?_0x5e44da[_0x1452('0x24')]:_0x1b0508[_0x1452('0x21')]+_0x1b0508['limit'];var _0x524015;if(_0x385fa7>=_0x12a563){_0x385fa7=_0x12a563;_0x524015=0xc8;}else{_0x524015=0xce;}_0x34921d[_0x1452('0x1f')](_0x524015);return _0x34921d['set'](_0x1452('0x25'),_0x5e3914+'-'+_0x385fa7+'/'+_0x12a563)[_0x1452('0x20')](_0x5e44da);}return null;};}function patchUpdates(_0x56335d){return function(_0x548be5){try{jsonpatch['apply'](_0x548be5,_0x56335d,!![]);}catch(_0x43840c){return BPromise['reject'](_0x43840c);}return _0x548be5[_0x1452('0x26')]();};}function saveUpdates(_0x20297a,_0xbb06a4){return function(_0x529319){if(_0x529319){return _0x529319[_0x1452('0x27')](_0x20297a)[_0x1452('0x28')](function(_0x5b7a44){return _0x5b7a44;});}return null;};}function removeEntity(_0x3d6ea3,_0x3b27f4){return function(_0xdcf4b9){if(_0xdcf4b9){return _0xdcf4b9['destroy']()[_0x1452('0x28')](function(){var _0xe9f108=_0xdcf4b9[_0x1452('0x29')]({'plain':!![]});var _0x41a977=_0x1452('0x2a');return db[_0x1452('0x2b')]['destroy']({'where':{'type':_0x41a977,'resourceId':_0xe9f108['id']}})[_0x1452('0x28')](function(){return _0xdcf4b9;});})[_0x1452('0x28')](function(){_0x3d6ea3['status'](0xcc)[_0x1452('0x2c')]();});}};}function handleEntityNotFound(_0x1cb02a,_0x10aae3){return function(_0x2d0d9a){if(!_0x2d0d9a){_0x1cb02a[_0x1452('0x1e')](0x194);}return _0x2d0d9a;};}function handleError(_0x100a01,_0x5224da){_0x5224da=_0x5224da||0x1f4;return function(_0x3c3154){logger[_0x1452('0x2d')](_0x3c3154[_0x1452('0x2e')]);if(_0x3c3154[_0x1452('0x2f')]){delete _0x3c3154[_0x1452('0x2f')];}_0x100a01[_0x1452('0x1f')](_0x5224da)[_0x1452('0x30')](_0x3c3154);};}exports['index']=function(_0x361f07,_0x21f403){var _0x53f552={},_0x5d736c={},_0x1fe709={'count':0x0,'rows':[]};var _0x265c24=_[_0x1452('0x31')](db[_0x1452('0x32')]['rawAttributes'],function(_0x33036b){return{'name':_0x33036b[_0x1452('0x33')],'type':_0x33036b['type'][_0x1452('0x34')]};});_0x5d736c[_0x1452('0x35')]=_[_0x1452('0x31')](_0x265c24,_0x1452('0x2f'));_0x5d736c['query']=_[_0x1452('0x36')](_0x361f07[_0x1452('0x37')]);_0x5d736c['filters']=_[_0x1452('0x38')](_0x5d736c[_0x1452('0x35')],_0x5d736c[_0x1452('0x37')]);_0x53f552[_0x1452('0x39')]=_[_0x1452('0x38')](_0x5d736c[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x361f07[_0x1452('0x37')][_0x1452('0x3a')]));_0x53f552[_0x1452('0x39')]=_0x53f552['attributes'][_0x1452('0x3b')]?_0x53f552[_0x1452('0x39')]:_0x5d736c[_0x1452('0x35')];if(!_0x361f07['query'][_0x1452('0x3c')](_0x1452('0x3d'))){_0x53f552[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x361f07[_0x1452('0x37')][_0x1452('0x23')]);_0x53f552[_0x1452('0x21')]=qs['offset'](_0x361f07[_0x1452('0x37')]['offset']);}_0x53f552[_0x1452('0x3e')]=qs[_0x1452('0x3f')](_0x361f07[_0x1452('0x37')][_0x1452('0x3f')]);_0x53f552[_0x1452('0x40')]=qs[_0x1452('0x41')](_[_0x1452('0x42')](_0x361f07['query'],_0x5d736c['filters']),_0x265c24);if(_0x361f07[_0x1452('0x37')][_0x1452('0x43')]){_0x53f552[_0x1452('0x40')]=_[_0x1452('0x44')](_0x53f552[_0x1452('0x40')],{'$or':_[_0x1452('0x31')](_0x265c24,function(_0x2bb482){if(_0x2bb482[_0x1452('0x45')]!==_0x1452('0x46')){var _0x3f1918={};_0x3f1918[_0x2bb482[_0x1452('0x2f')]]={'$like':'%'+_0x361f07['query']['filter']+'%'};return _0x3f1918;}})});}_0x53f552=_['merge']({},_0x53f552,_0x361f07[_0x1452('0x47')]);var _0x4e1b82={'where':_0x53f552[_0x1452('0x40')]};return db[_0x1452('0x32')]['count'](_0x4e1b82)[_0x1452('0x28')](function(_0x80ae67){_0x1fe709[_0x1452('0x24')]=_0x80ae67;if(_0x361f07['query']['includeAll']){_0x53f552[_0x1452('0x48')]=[{'all':!![]}];}return db['FaxQueue'][_0x1452('0x49')](_0x53f552);})['then'](function(_0x4e38f9){_0x1fe709[_0x1452('0x4a')]=_0x4e38f9;return _0x1fe709;})[_0x1452('0x28')](respondWithFilteredResult(_0x21f403,_0x53f552))[_0x1452('0x4b')](handleError(_0x21f403,null));};exports['show']=function(_0x18a0c8,_0x4da442){var _0x1e185b={'raw':!![],'where':{'id':_0x18a0c8[_0x1452('0x4c')]['id']}},_0x3959b8={};_0x3959b8[_0x1452('0x35')]=_[_0x1452('0x36')](db['FaxQueue'][_0x1452('0x4d')]);_0x3959b8['query']=_['keys'](_0x18a0c8[_0x1452('0x37')]);_0x3959b8[_0x1452('0x41')]=_['intersection'](_0x3959b8[_0x1452('0x35')],_0x3959b8[_0x1452('0x37')]);_0x1e185b[_0x1452('0x39')]=_['intersection'](_0x3959b8[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x18a0c8[_0x1452('0x37')][_0x1452('0x3a')]));_0x1e185b[_0x1452('0x39')]=_0x1e185b[_0x1452('0x39')][_0x1452('0x3b')]?_0x1e185b[_0x1452('0x39')]:_0x3959b8['model'];if(_0x18a0c8[_0x1452('0x37')]['includeAll']){_0x1e185b[_0x1452('0x48')]=[{'all':!![]}];}_0x1e185b=_[_0x1452('0x44')]({},_0x1e185b,_0x18a0c8['options']);return db['FaxQueue']['find'](_0x1e185b)[_0x1452('0x28')](handleEntityNotFound(_0x4da442,null))['then'](respondWithResult(_0x4da442,null))[_0x1452('0x4b')](handleError(_0x4da442,null));};exports[_0x1452('0x4e')]=function(_0x1a65f9,_0x463691){return db[_0x1452('0x32')][_0x1452('0x4e')](_0x1a65f9[_0x1452('0x4f')],{})[_0x1452('0x28')](function(_0x8542b0){var _0x9bf1e1=_0x1a65f9[_0x1452('0x50')][_0x1452('0x29')]({'plain':!![]});if(!_0x9bf1e1)throw new Error(_0x1452('0x51'));if(_0x9bf1e1[_0x1452('0x52')]===_0x1452('0x50')){var _0x4a4e3b=_0x8542b0[_0x1452('0x29')]({'plain':!![]});var _0x5777bc=_0x1452('0x2a');return db[_0x1452('0x53')]['find']({'where':{'name':_0x5777bc,'userProfileId':_0x9bf1e1['userProfileId']},'raw':!![]})['then'](function(_0x2422c7){if(_0x2422c7&&_0x2422c7[_0x1452('0x54')]===0x0){return db[_0x1452('0x2b')][_0x1452('0x4e')]({'name':_0x4a4e3b[_0x1452('0x2f')],'resourceId':_0x4a4e3b['id'],'type':_0x2422c7[_0x1452('0x2f')],'sectionId':_0x2422c7['id']},{})[_0x1452('0x28')](function(){return _0x8542b0;});}else{return _0x8542b0;}})['catch'](function(_0x5570c4){logger['error'](_0x1452('0x55'),_0x5570c4);throw _0x5570c4;});}return _0x8542b0;})[_0x1452('0x28')](respondWithResult(_0x463691,0xc9))[_0x1452('0x4b')](handleError(_0x463691,null));};exports[_0x1452('0x27')]=function(_0x3cf126,_0x5c296a){if(_0x3cf126[_0x1452('0x4f')]['id']){delete _0x3cf126[_0x1452('0x4f')]['id'];}return db['FaxQueue']['find']({'where':{'id':_0x3cf126[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x5c296a,null))[_0x1452('0x28')](saveUpdates(_0x3cf126[_0x1452('0x4f')],null))[_0x1452('0x28')](respondWithResult(_0x5c296a,null))['catch'](handleError(_0x5c296a,null));};exports[_0x1452('0x56')]=function(_0x3b5ff0,_0x266490){return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x3b5ff0[_0x1452('0x4c')]['id']}})['then'](handleEntityNotFound(_0x266490,null))[_0x1452('0x28')](removeEntity(_0x266490,null))['catch'](handleError(_0x266490,null));};exports[_0x1452('0x58')]=function(_0x1eeca3,_0x1ee5f4){return db[_0x1452('0x32')][_0x1452('0x58')]()['then'](respondWithResult(_0x1ee5f4,null))[_0x1452('0x4b')](handleError(_0x1ee5f4,null));};exports[_0x1452('0x59')]=function(_0x391d78,_0x51465a,_0x36ed4d){var _0x3b277d={'raw':!![],'where':{}},_0x429de4={},_0x11f417;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x391d78[_0x1452('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51465a,null))[_0x1452('0x28')](function(_0x11536f){if(_0x11536f){_0x11f417=_0x11536f['get']({'plain':!![]});_0x429de4[_0x1452('0x35')]=_[_0x1452('0x36')](db[_0x1452('0x5b')][_0x1452('0x4d')]);_0x429de4[_0x1452('0x37')]=_[_0x1452('0x36')](_0x391d78[_0x1452('0x37')]);_0x429de4[_0x1452('0x41')]=_[_0x1452('0x38')](_0x429de4['model'],_0x429de4[_0x1452('0x37')]);_0x3b277d[_0x1452('0x39')]=_['intersection'](_0x429de4['model'],qs[_0x1452('0x3a')](_0x391d78[_0x1452('0x37')][_0x1452('0x3a')]));_0x3b277d['attributes']=_0x3b277d[_0x1452('0x39')][_0x1452('0x3b')]?_0x3b277d['attributes']:_0x429de4[_0x1452('0x35')];if(!_0x391d78['query'][_0x1452('0x3c')](_0x1452('0x3d'))){_0x3b277d['limit']=qs[_0x1452('0x23')](_0x391d78[_0x1452('0x37')][_0x1452('0x23')]);_0x3b277d['offset']=qs[_0x1452('0x21')](_0x391d78[_0x1452('0x37')][_0x1452('0x21')]);}_0x3b277d['order']=qs[_0x1452('0x3f')](_0x391d78[_0x1452('0x37')][_0x1452('0x3f')]);_0x3b277d[_0x1452('0x40')]=qs[_0x1452('0x41')](_[_0x1452('0x42')](_0x391d78[_0x1452('0x37')],_0x429de4['filters']));_0x3b277d[_0x1452('0x40')][_0x1452('0x5c')]=_0x11536f['id'];if(_0x391d78[_0x1452('0x37')]['filter']){_0x3b277d[_0x1452('0x40')]=_[_0x1452('0x44')](_0x3b277d['where'],{'$or':_['map'](_0x3b277d[_0x1452('0x39')],function(_0x5486bd){var _0x3f1f3b={};_0x3f1f3b[_0x5486bd]={'$like':'%'+_0x391d78[_0x1452('0x37')][_0x1452('0x43')]+'%'};return _0x3f1f3b;})});}_0x3b277d=_['merge']({},_0x3b277d,_0x391d78['options']);return db['UserFaxQueue']['findAll'](_0x3b277d);}})[_0x1452('0x28')](function(_0x22155e){if(_0x22155e){return db['User'][_0x1452('0x5d')]({'where':{'id':_[_0x1452('0x31')](_0x22155e,_0x1452('0x5e')),'role':'agent'},'attributes':['id',_0x1452('0x2f'),_0x1452('0x5f'),_0x1452('0x60'),_0x1452('0x61')]});}})[_0x1452('0x28')](function(_0x5e763d){if(_0x5e763d){return{'count':_0x5e763d[_0x1452('0x24')],'rows':_[_0x1452('0x31')](_0x5e763d[_0x1452('0x4a')],function(_0x149587){return{'membername':_0x149587[_0x1452('0x2f')],'UserId':_0x149587['id'],'queue_name':_0x11f417[_0x1452('0x2f')],'FaxQueueId':_0x11f417['id'],'interface':util[_0x1452('0x62')]('%s/%s','SIP',_0x149587[_0x1452('0x2f')]),'penalty':0x0,'paused':_0x149587['faxPause'],'createdAt':_0x149587[_0x1452('0x61')],'updatedAt':_0x149587[_0x1452('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x1452('0x28')](respondWithFilteredResult(_0x51465a,_0x3b277d))['catch'](handleError(_0x51465a,null));};exports[_0x1452('0x63')]=function(_0x206c42,_0x1344d9,_0x2c181b){var _0x4c6ead={};var _0x4c563b={};var _0x2d0a33;var _0x20d057;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x206c42[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x1344d9,null))[_0x1452('0x28')](function(_0x5bae72){if(_0x5bae72){_0x2d0a33=_0x5bae72;_0x4c563b['model']=_[_0x1452('0x36')](db[_0x1452('0x64')][_0x1452('0x4d')]);_0x4c563b[_0x1452('0x37')]=_[_0x1452('0x36')](_0x206c42[_0x1452('0x37')]);_0x4c563b[_0x1452('0x41')]=_['intersection'](_0x4c563b['model'],_0x4c563b[_0x1452('0x37')]);_0x4c6ead[_0x1452('0x39')]=_[_0x1452('0x38')](_0x4c563b[_0x1452('0x35')],qs['fields'](_0x206c42[_0x1452('0x37')]['fields']));_0x4c6ead[_0x1452('0x39')]=_0x4c6ead[_0x1452('0x39')][_0x1452('0x3b')]?_0x4c6ead[_0x1452('0x39')]:_0x4c563b[_0x1452('0x35')];_0x4c6ead[_0x1452('0x3e')]=qs[_0x1452('0x3f')](_0x206c42[_0x1452('0x37')][_0x1452('0x3f')]);_0x4c6ead[_0x1452('0x40')]=qs['filters'](_[_0x1452('0x42')](_0x206c42[_0x1452('0x37')],_0x4c563b[_0x1452('0x41')]));if(_0x206c42['query']['filter']){_0x4c6ead[_0x1452('0x40')]=_[_0x1452('0x44')](_0x4c6ead[_0x1452('0x40')],{'$or':_['map'](_0x4c6ead[_0x1452('0x39')],function(_0x25e865){var _0x5cc105={};_0x5cc105[_0x25e865]={'$like':'%'+_0x206c42[_0x1452('0x37')][_0x1452('0x43')]+'%'};return _0x5cc105;})});}_0x4c6ead=_[_0x1452('0x44')]({},_0x4c6ead,_0x206c42[_0x1452('0x47')]);return _0x2d0a33[_0x1452('0x63')](_0x4c6ead);}})[_0x1452('0x28')](function(_0x19ea2c){if(_0x19ea2c){_0x20d057=_0x19ea2c['length'];if(!_0x206c42[_0x1452('0x37')][_0x1452('0x3c')](_0x1452('0x3d'))){_0x4c6ead[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x206c42[_0x1452('0x37')]['limit']);_0x4c6ead[_0x1452('0x21')]=qs[_0x1452('0x21')](_0x206c42[_0x1452('0x37')][_0x1452('0x21')]);}return _0x2d0a33[_0x1452('0x63')](_0x4c6ead);}})['then'](function(_0x3b3eba){if(_0x3b3eba){return _0x3b3eba?{'count':_0x20d057,'rows':_0x3b3eba}:null;}})['then'](respondWithResult(_0x1344d9,null))['catch'](handleError(_0x1344d9,null));};exports[_0x1452('0x65')]=function(_0x5e2ccc,_0x10863b,_0x232e82){var _0x39aa9f=_0x5e2ccc[_0x1452('0x4f')][_0x1452('0x66')];return db[_0x1452('0x64')]['findAll']({'where':{'id':_0x39aa9f},'attributes':['id'],'include':[{'model':db[_0x1452('0x67')],'as':'Agents','attributes':['id',_0x1452('0x2f'),_0x1452('0x68'),'voicePause',_0x1452('0x69')],'raw':!![]}]})['then'](function(_0x5110ac){if(_0x5110ac){var _0x2926e2=_['flatMap'](_0x5110ac,function(_0x27870b){var _0x6103b6=_0x27870b[_0x1452('0x29')]({'plain':!![]});return _0x6103b6[_0x1452('0x6a')];});return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x5e2ccc[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](function(_0x443e56){return db[_0x1452('0x6b')][_0x1452('0x6c')](function(_0x147f65){return _0x443e56['addTeams'](_0x39aa9f,{'transaction':_0x147f65})[_0x1452('0x28')](function(){return BPromise[_0x1452('0x6d')](_0x2926e2,function(_0x35584e){return db[_0x1452('0x5b')][_0x1452('0x6e')]({'where':{'UserId':_0x35584e['id'],'FaxQueueId':_0x5e2ccc['params']['id']},'transaction':_0x147f65});});})[_0x1452('0x28')](function(){_0x2926e2[_0x1452('0x6f')](function(_0x57591f){socket[_0x1452('0x70')](_0x1452('0x71'),{'UserId':_0x57591f['id'],'FaxQueueId':_0x443e56['id']});});});});});}})[_0x1452('0x28')](respondWithStatusCode(_0x10863b,null))['catch'](handleError(_0x10863b,null));};exports[_0x1452('0x72')]=function(_0x1d355c,_0x46cea6,_0x476c65){return db['Team']['findAll']({'where':{'id':_0x1d355c[_0x1452('0x37')][_0x1452('0x66')]},'attributes':['id'],'include':[{'model':db[_0x1452('0x67')],'as':_0x1452('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x46cea6,null))[_0x1452('0x28')](function(_0x207b9){var _0x5428c9=_[_0x1452('0x31')](_0x207b9,'id');var _0x4fb2f3=[];var _0x15baa5=[];var _0x16f75b=squel[_0x1452('0x73')]();_0x16f75b['field']('tq.TeamId')[_0x1452('0x74')]('team_has_fax_queues','tq')[_0x1452('0x75')](_0x1452('0x76'),'ut',_0x1452('0x77'))[_0x1452('0x40')](_0x1452('0x78'),_0x1d355c[_0x1452('0x4c')]['id']);for(var _0xd3aa83=0x0;_0xd3aa83<_0x207b9[_0x1452('0x3b')];_0xd3aa83+=0x1){let _0x235463=_0x207b9[_0xd3aa83];for(var _0x589f57=0x0;_0x589f57<_0x235463[_0x1452('0x6a')][_0x1452('0x3b')];_0x589f57+=0x1){let _0x30ddbf=_0x235463['Agents'][_0x589f57];var _0xea375e=_0x16f75b[_0x1452('0x79')]();_0xea375e[_0x1452('0x40')](_0x1452('0x7a'),_0x30ddbf['id']);_0x15baa5['push'](db[_0x1452('0x6b')][_0x1452('0x37')](_0xea375e[_0x1452('0x7b')](),{'type':db['sequelize']['QueryTypes'][_0x1452('0x7c')]})['then'](function(_0xd476ba){if(_0xd476ba[_0x1452('0x3b')]===0x1){return _0x30ddbf['id'];}else{var _0x30eb7f=_[_0x1452('0x7d')](_[_0x1452('0x31')](_0xd476ba,_0x1452('0x7e')),function(_0xbd4a7b){return _[_0x1452('0x7f')](_0x5428c9,_0xbd4a7b);});if(_0x30eb7f){return _0x30ddbf['id'];}}}));}}return BPromise[_0x1452('0x80')](_0x15baa5)[_0x1452('0x28')](function(_0x32dcf9){_0x4fb2f3=_(_0x4fb2f3)['union'](_0x32dcf9)[_0x1452('0x81')]()[_0x1452('0x82')]();return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x1d355c['params']['id']}})[_0x1452('0x28')](function(_0x49a6f6){return db[_0x1452('0x6b')][_0x1452('0x6c')](function(_0x525340){return _0x49a6f6[_0x1452('0x72')](_0x1d355c[_0x1452('0x37')][_0x1452('0x66')],{'transaction':_0x525340})['then'](function(){if(!_[_0x1452('0x83')](_0x4fb2f3)){return _0x49a6f6['removeAgents'](_0x4fb2f3,{'transaction':_0x525340});}})['then'](function(){_0x4fb2f3[_0x1452('0x6f')](function(_0x1f5007){socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':_0x1f5007,'FaxQueueId':_0x49a6f6['id']});});});});});});})[_0x1452('0x28')](respondWithStatusCode(_0x46cea6,null))[_0x1452('0x4b')](handleError(_0x46cea6,null));};exports[_0x1452('0x85')]=function(_0x5eb588,_0xdd0535,_0x5912b2){return db[_0x1452('0x32')][_0x1452('0x57')]({'where':{'id':_0x5eb588['params']['id']}})[_0x1452('0x28')](handleEntityNotFound(_0xdd0535,null))['then'](function(_0x4853d1){if(_0x4853d1){return _0x4853d1[_0x1452('0x85')](_0x5eb588[_0x1452('0x4f')]['ids'],_[_0x1452('0x86')](_0x5eb588['body'],['ids','id'])||{})[_0x1452('0x87')](function(_0x1bbbf2){for(var _0x1c2d99=0x0;_0x1c2d99<_0x5eb588['body'][_0x1452('0x66')][_0x1452('0x3b')];_0x1c2d99+=0x1){socket['emit'](_0x1452('0x71'),{'UserId':Number(_0x5eb588[_0x1452('0x4f')][_0x1452('0x66')][_0x1c2d99]),'FaxQueueId':Number(_0x5eb588[_0x1452('0x4c')]['id'])});}return _0x1bbbf2;});}})[_0x1452('0x28')](respondWithResult(_0xdd0535,null))[_0x1452('0x4b')](handleError(_0xdd0535,null));};exports[_0x1452('0x88')]=function(_0x271535,_0x31fe75,_0x44103d){return db[_0x1452('0x32')]['find']({'where':{'id':_0x271535[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x31fe75,null))[_0x1452('0x28')](function(_0x46f465){if(_0x46f465){return _0x46f465[_0x1452('0x88')](_0x271535[_0x1452('0x37')][_0x1452('0x66')])[_0x1452('0x28')](function(){if(_[_0x1452('0x89')](_0x271535[_0x1452('0x37')][_0x1452('0x66')])){for(var _0x22fb07=0x0;_0x22fb07<_0x271535[_0x1452('0x37')][_0x1452('0x66')][_0x1452('0x3b')];_0x22fb07+=0x1){socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':Number(_0x271535[_0x1452('0x37')][_0x1452('0x66')][_0x22fb07]),'FaxQueueId':Number(_0x271535[_0x1452('0x4c')]['id'])});}}else{socket[_0x1452('0x70')](_0x1452('0x84'),{'UserId':Number(_0x271535[_0x1452('0x37')][_0x1452('0x66')]),'FaxQueueId':Number(_0x271535[_0x1452('0x4c')]['id'])});}});}})['then'](respondWithStatusCode(_0x31fe75,null))['catch'](handleError(_0x31fe75,null));};exports[_0x1452('0x8a')]=function(_0x542340,_0x5349b8,_0x14e109){var _0x5897ff={};var _0x9be57={};var _0x219a14;var _0x19d86e;return db[_0x1452('0x32')][_0x1452('0x5a')]({'where':{'id':_0x542340[_0x1452('0x4c')]['id']}})[_0x1452('0x28')](handleEntityNotFound(_0x5349b8,null))[_0x1452('0x28')](function(_0xe71cb0){if(_0xe71cb0){_0x219a14=_0xe71cb0;_0x9be57[_0x1452('0x35')]=_[_0x1452('0x36')](db[_0x1452('0x67')][_0x1452('0x4d')]);_0x9be57[_0x1452('0x37')]=_[_0x1452('0x36')](_0x542340[_0x1452('0x37')]);_0x9be57[_0x1452('0x41')]=_[_0x1452('0x38')](_0x9be57[_0x1452('0x35')],_0x9be57[_0x1452('0x37')]);_0x5897ff['attributes']=_[_0x1452('0x38')](_0x9be57[_0x1452('0x35')],qs[_0x1452('0x3a')](_0x542340[_0x1452('0x37')][_0x1452('0x3a')]));_0x5897ff[_0x1452('0x39')]=_0x5897ff['attributes'][_0x1452('0x3b')]?_0x5897ff[_0x1452('0x39')]:_0x9be57[_0x1452('0x35')];_0x5897ff['order']=qs[_0x1452('0x3f')](_0x542340[_0x1452('0x37')]['sort']);_0x5897ff['where']=qs['filters'](_[_0x1452('0x42')](_0x542340[_0x1452('0x37')],_0x9be57[_0x1452('0x41')]));if(_0x542340[_0x1452('0x37')][_0x1452('0x43')]){_0x5897ff['where']=_[_0x1452('0x44')](_0x5897ff[_0x1452('0x40')],{'$or':_['map'](_0x5897ff[_0x1452('0x39')],function(_0xe0d49e){var _0x33aed9={};_0x33aed9[_0xe0d49e]={'$like':'%'+_0x542340['query'][_0x1452('0x43')]+'%'};return _0x33aed9;})});}_0x5897ff=_[_0x1452('0x44')]({},_0x5897ff,_0x542340[_0x1452('0x47')]);return _0x219a14[_0x1452('0x8a')](_0x5897ff);}})[_0x1452('0x28')](function(_0x44fe1b){if(_0x44fe1b){_0x19d86e=_0x44fe1b[_0x1452('0x3b')];if(!_0x542340[_0x1452('0x37')]['hasOwnProperty'](_0x1452('0x3d'))){_0x5897ff[_0x1452('0x23')]=qs[_0x1452('0x23')](_0x542340[_0x1452('0x37')]['limit']);_0x5897ff[_0x1452('0x21')]=qs['offset'](_0x542340[_0x1452('0x37')][_0x1452('0x21')]);}return _0x219a14[_0x1452('0x8a')](_0x5897ff);}})[_0x1452('0x28')](function(_0x5d0cd6){if(_0x5d0cd6){return _0x5d0cd6?{'count':_0x19d86e,'rows':_0x5d0cd6}:null;}})[_0x1452('0x28')](respondWithResult(_0x5349b8,null))[_0x1452('0x4b')](handleError(_0x5349b8,null));};
\ No newline at end of file
+var _0x3d4d=['join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./faxQueue.socket','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','update','destroy','then','UserProfileResource','error','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserFaxQueue','pick','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','createdAt','format','%s/%s','updatedAt','getTeams','findOne','Team','options','addTeams','ids','online','interface','flatMap','sequelize','transaction','each','forEach','userFaxQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','team_has_fax_queues'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x3d4d,0x142));var _0xd3d4=function(_0x11561a,_0x38d7e0){_0x11561a=_0x11561a-0x0;var _0xb77b8d=_0x3d4d[_0x11561a];return _0xb77b8d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd3d4('0x0'));var zipdir=require(_0xd3d4('0x1'));var jsonpatch=require(_0xd3d4('0x2'));var rp=require('request-promise');var moment=require(_0xd3d4('0x3'));var BPromise=require(_0xd3d4('0x4'));var Mustache=require(_0xd3d4('0x5'));var util=require(_0xd3d4('0x6'));var path=require(_0xd3d4('0x7'));var sox=require(_0xd3d4('0x8'));var csv=require(_0xd3d4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd3d4('0xa'));var _=require('lodash');var squel=require(_0xd3d4('0xb'));var crypto=require('crypto');var jsforce=require(_0xd3d4('0xc'));var deskjs=require(_0xd3d4('0xd'));var toCsv=require(_0xd3d4('0x9'));var querystring=require('querystring');var Papa=require(_0xd3d4('0xe'));var Redis=require(_0xd3d4('0xf'));var authService=require(_0xd3d4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd3d4('0x11'));var hardwareService=require(_0xd3d4('0x12'));var logger=require(_0xd3d4('0x13'))(_0xd3d4('0x14'));var utils=require(_0xd3d4('0x15'));var config=require(_0xd3d4('0x16'));var licenseUtil=require(_0xd3d4('0x17'));var db=require(_0xd3d4('0x18'))['db'];config['redis']=_[_0xd3d4('0x19')](config['redis'],{'host':_0xd3d4('0x1a'),'port':0x18eb});var socket=require(_0xd3d4('0x1b'))(new Redis(config[_0xd3d4('0x1c')]));require(_0xd3d4('0x1d'))['register'](socket);function respondWithStatusCode(_0x452ff3,_0x4cea4b){_0x4cea4b=_0x4cea4b||0xcc;return function(_0xba103b){if(_0xba103b){return _0x452ff3[_0xd3d4('0x1e')](_0x4cea4b);}return _0x452ff3[_0xd3d4('0x1f')](_0x4cea4b)[_0xd3d4('0x20')]();};}function respondWithResult(_0x193ecd,_0x4d6d8d){_0x4d6d8d=_0x4d6d8d||0xc8;return function(_0x5ab0e0){if(_0x5ab0e0){return _0x193ecd[_0xd3d4('0x1f')](_0x4d6d8d)[_0xd3d4('0x21')](_0x5ab0e0);}};}function respondWithFilteredResult(_0x1530e5,_0x466c28){return function(_0x9d156f){if(_0x9d156f){var _0x19f40a=typeof _0x466c28['offset']==='undefined'&&typeof _0x466c28['limit']===_0xd3d4('0x22');var _0x543759=_0x9d156f[_0xd3d4('0x23')];var _0x561cf6=_0x19f40a?0x0:_0x466c28[_0xd3d4('0x24')];var _0x4160c8=_0x19f40a?_0x9d156f[_0xd3d4('0x23')]:_0x466c28[_0xd3d4('0x24')]+_0x466c28[_0xd3d4('0x25')];var _0x1959e6;if(_0x4160c8>=_0x543759){_0x4160c8=_0x543759;_0x1959e6=0xc8;}else{_0x1959e6=0xce;}_0x1530e5[_0xd3d4('0x1f')](_0x1959e6);return _0x1530e5['set'](_0xd3d4('0x26'),_0x561cf6+'-'+_0x4160c8+'/'+_0x543759)[_0xd3d4('0x21')](_0x9d156f);}return null;};}function patchUpdates(_0x4f8928){return function(_0x4d5626){try{jsonpatch[_0xd3d4('0x27')](_0x4d5626,_0x4f8928,!![]);}catch(_0xab2533){return BPromise[_0xd3d4('0x28')](_0xab2533);}return _0x4d5626['save']();};}function saveUpdates(_0x18e5f7,_0x587c19){return function(_0x105854){if(_0x105854){return _0x105854[_0xd3d4('0x29')](_0x18e5f7)['then'](function(_0x342649){return _0x342649;});}return null;};}function removeEntity(_0x5b8265,_0x571e14){return function(_0x2221c9){if(_0x2221c9){return _0x2221c9[_0xd3d4('0x2a')]()[_0xd3d4('0x2b')](function(){var _0xbca5ae=_0x2221c9['get']({'plain':!![]});var _0xb4f3='FaxQueues';return db[_0xd3d4('0x2c')]['destroy']({'where':{'type':_0xb4f3,'resourceId':_0xbca5ae['id']}})[_0xd3d4('0x2b')](function(){return _0x2221c9;});})['then'](function(){_0x5b8265['status'](0xcc)[_0xd3d4('0x20')]();});}};}function handleEntityNotFound(_0x51f64a,_0x39ccfa){return function(_0xe447df){if(!_0xe447df){_0x51f64a[_0xd3d4('0x1e')](0x194);}return _0xe447df;};}function handleError(_0x2afef0,_0x17fa1b){_0x17fa1b=_0x17fa1b||0x1f4;return function(_0x38fa3f){logger[_0xd3d4('0x2d')](_0x38fa3f['stack']);if(_0x38fa3f[_0xd3d4('0x2e')]){delete _0x38fa3f[_0xd3d4('0x2e')];}_0x2afef0[_0xd3d4('0x1f')](_0x17fa1b)[_0xd3d4('0x2f')](_0x38fa3f);};}exports[_0xd3d4('0x30')]=function(_0x1e60d7,_0x2536c4){var _0x2b0a35={},_0x58ed0d={},_0x407627={'count':0x0,'rows':[]};var _0x373f29=_[_0xd3d4('0x31')](db[_0xd3d4('0x32')][_0xd3d4('0x33')],function(_0x6b4634){return{'name':_0x6b4634[_0xd3d4('0x34')],'type':_0x6b4634[_0xd3d4('0x35')][_0xd3d4('0x36')]};});_0x58ed0d[_0xd3d4('0x37')]=_[_0xd3d4('0x31')](_0x373f29,_0xd3d4('0x2e'));_0x58ed0d[_0xd3d4('0x38')]=_['keys'](_0x1e60d7[_0xd3d4('0x38')]);_0x58ed0d[_0xd3d4('0x39')]=_[_0xd3d4('0x3a')](_0x58ed0d[_0xd3d4('0x37')],_0x58ed0d[_0xd3d4('0x38')]);_0x2b0a35['attributes']=_[_0xd3d4('0x3a')](_0x58ed0d[_0xd3d4('0x37')],qs[_0xd3d4('0x3b')](_0x1e60d7[_0xd3d4('0x38')][_0xd3d4('0x3b')]));_0x2b0a35[_0xd3d4('0x3c')]=_0x2b0a35[_0xd3d4('0x3c')][_0xd3d4('0x3d')]?_0x2b0a35['attributes']:_0x58ed0d['model'];if(!_0x1e60d7[_0xd3d4('0x38')][_0xd3d4('0x3e')](_0xd3d4('0x3f'))){_0x2b0a35['limit']=qs[_0xd3d4('0x25')](_0x1e60d7['query'][_0xd3d4('0x25')]);_0x2b0a35[_0xd3d4('0x24')]=qs['offset'](_0x1e60d7[_0xd3d4('0x38')][_0xd3d4('0x24')]);}_0x2b0a35[_0xd3d4('0x40')]=qs[_0xd3d4('0x41')](_0x1e60d7[_0xd3d4('0x38')][_0xd3d4('0x41')]);_0x2b0a35['where']=qs[_0xd3d4('0x39')](_['pick'](_0x1e60d7[_0xd3d4('0x38')],_0x58ed0d[_0xd3d4('0x39')]),_0x373f29);if(_0x1e60d7['query'][_0xd3d4('0x42')]){_0x2b0a35[_0xd3d4('0x43')]=_[_0xd3d4('0x44')](_0x2b0a35['where'],{'$or':_[_0xd3d4('0x31')](_0x373f29,function(_0x573ae1){if(_0x573ae1[_0xd3d4('0x35')]!==_0xd3d4('0x45')){var _0x2238f8={};_0x2238f8[_0x573ae1[_0xd3d4('0x2e')]]={'$like':'%'+_0x1e60d7['query']['filter']+'%'};return _0x2238f8;}})});}_0x2b0a35=_[_0xd3d4('0x44')]({},_0x2b0a35,_0x1e60d7['options']);var _0x4dc7b0={'where':_0x2b0a35['where']};return db[_0xd3d4('0x32')]['count'](_0x4dc7b0)[_0xd3d4('0x2b')](function(_0x416b3d){_0x407627[_0xd3d4('0x23')]=_0x416b3d;if(_0x1e60d7[_0xd3d4('0x38')][_0xd3d4('0x46')]){_0x2b0a35[_0xd3d4('0x47')]=[{'all':!![]}];}return db['FaxQueue'][_0xd3d4('0x48')](_0x2b0a35);})['then'](function(_0x5eb43e){_0x407627[_0xd3d4('0x49')]=_0x5eb43e;return _0x407627;})[_0xd3d4('0x2b')](respondWithFilteredResult(_0x2536c4,_0x2b0a35))[_0xd3d4('0x4a')](handleError(_0x2536c4,null));};exports[_0xd3d4('0x4b')]=function(_0x4364c1,_0x559c53){var _0x1cf537={'raw':!![],'where':{'id':_0x4364c1[_0xd3d4('0x4c')]['id']}},_0x13cd8d={};_0x13cd8d[_0xd3d4('0x37')]=_[_0xd3d4('0x4d')](db[_0xd3d4('0x32')][_0xd3d4('0x33')]);_0x13cd8d[_0xd3d4('0x38')]=_['keys'](_0x4364c1[_0xd3d4('0x38')]);_0x13cd8d[_0xd3d4('0x39')]=_[_0xd3d4('0x3a')](_0x13cd8d[_0xd3d4('0x37')],_0x13cd8d['query']);_0x1cf537['attributes']=_[_0xd3d4('0x3a')](_0x13cd8d[_0xd3d4('0x37')],qs[_0xd3d4('0x3b')](_0x4364c1[_0xd3d4('0x38')][_0xd3d4('0x3b')]));_0x1cf537[_0xd3d4('0x3c')]=_0x1cf537[_0xd3d4('0x3c')][_0xd3d4('0x3d')]?_0x1cf537[_0xd3d4('0x3c')]:_0x13cd8d[_0xd3d4('0x37')];if(_0x4364c1['query']['includeAll']){_0x1cf537[_0xd3d4('0x47')]=[{'all':!![]}];}_0x1cf537=_['merge']({},_0x1cf537,_0x4364c1['options']);return db[_0xd3d4('0x32')][_0xd3d4('0x4e')](_0x1cf537)[_0xd3d4('0x2b')](handleEntityNotFound(_0x559c53,null))['then'](respondWithResult(_0x559c53,null))[_0xd3d4('0x4a')](handleError(_0x559c53,null));};exports['create']=function(_0x525362,_0x1a2915){return db[_0xd3d4('0x32')][_0xd3d4('0x4f')](_0x525362[_0xd3d4('0x50')],{})[_0xd3d4('0x2b')](function(_0x1bb110){var _0x1e410d=_0x525362['user'][_0xd3d4('0x51')]({'plain':!![]});if(!_0x1e410d)throw new Error(_0xd3d4('0x52'));if(_0x1e410d[_0xd3d4('0x53')]===_0xd3d4('0x54')){var _0x86d78a=_0x1bb110[_0xd3d4('0x51')]({'plain':!![]});var _0x5201b0=_0xd3d4('0x55');return db[_0xd3d4('0x56')]['find']({'where':{'name':_0x5201b0,'userProfileId':_0x1e410d[_0xd3d4('0x57')]},'raw':!![]})[_0xd3d4('0x2b')](function(_0x3b21fe){if(_0x3b21fe&&_0x3b21fe[_0xd3d4('0x58')]===0x0){return db[_0xd3d4('0x2c')]['create']({'name':_0x86d78a[_0xd3d4('0x2e')],'resourceId':_0x86d78a['id'],'type':_0x3b21fe['name'],'sectionId':_0x3b21fe['id']},{})['then'](function(){return _0x1bb110;});}else{return _0x1bb110;}})['catch'](function(_0x2e2eb0){logger[_0xd3d4('0x2d')](_0xd3d4('0x59'),_0x2e2eb0);throw _0x2e2eb0;});}return _0x1bb110;})[_0xd3d4('0x2b')](respondWithResult(_0x1a2915,0xc9))[_0xd3d4('0x4a')](handleError(_0x1a2915,null));};exports[_0xd3d4('0x29')]=function(_0x16b75d,_0x520a41){if(_0x16b75d[_0xd3d4('0x50')]['id']){delete _0x16b75d[_0xd3d4('0x50')]['id'];}return db[_0xd3d4('0x32')]['find']({'where':{'id':_0x16b75d[_0xd3d4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x520a41,null))['then'](saveUpdates(_0x16b75d[_0xd3d4('0x50')],null))['then'](respondWithResult(_0x520a41,null))[_0xd3d4('0x4a')](handleError(_0x520a41,null));};exports[_0xd3d4('0x2a')]=function(_0x467c75,_0x10c01d){return db[_0xd3d4('0x32')]['find']({'where':{'id':_0x467c75[_0xd3d4('0x4c')]['id']}})[_0xd3d4('0x2b')](handleEntityNotFound(_0x10c01d,null))['then'](removeEntity(_0x10c01d,null))['catch'](handleError(_0x10c01d,null));};exports[_0xd3d4('0x5a')]=function(_0x1bf9c7,_0x416caa){return db[_0xd3d4('0x32')][_0xd3d4('0x5a')]()['then'](respondWithResult(_0x416caa,null))[_0xd3d4('0x4a')](handleError(_0x416caa,null));};exports[_0xd3d4('0x5b')]=function(_0x557217,_0x197e3c,_0x325d06){var _0x3351aa={'raw':!![],'where':{}},_0x5d2660={},_0x12c87c;return db['FaxQueue']['findOne']({'where':{'id':_0x557217[_0xd3d4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x197e3c,null))['then'](function(_0x194a98){if(_0x194a98){_0x12c87c=_0x194a98[_0xd3d4('0x51')]({'plain':!![]});_0x5d2660[_0xd3d4('0x37')]=_[_0xd3d4('0x4d')](db[_0xd3d4('0x5c')][_0xd3d4('0x33')]);_0x5d2660[_0xd3d4('0x38')]=_[_0xd3d4('0x4d')](_0x557217[_0xd3d4('0x38')]);_0x5d2660[_0xd3d4('0x39')]=_['intersection'](_0x5d2660[_0xd3d4('0x37')],_0x5d2660[_0xd3d4('0x38')]);_0x3351aa[_0xd3d4('0x3c')]=_[_0xd3d4('0x3a')](_0x5d2660[_0xd3d4('0x37')],qs['fields'](_0x557217[_0xd3d4('0x38')][_0xd3d4('0x3b')]));_0x3351aa[_0xd3d4('0x3c')]=_0x3351aa[_0xd3d4('0x3c')][_0xd3d4('0x3d')]?_0x3351aa[_0xd3d4('0x3c')]:_0x5d2660[_0xd3d4('0x37')];if(!_0x557217[_0xd3d4('0x38')][_0xd3d4('0x3e')](_0xd3d4('0x3f'))){_0x3351aa['limit']=qs['limit'](_0x557217[_0xd3d4('0x38')][_0xd3d4('0x25')]);_0x3351aa[_0xd3d4('0x24')]=qs['offset'](_0x557217[_0xd3d4('0x38')][_0xd3d4('0x24')]);}_0x3351aa[_0xd3d4('0x40')]=qs[_0xd3d4('0x41')](_0x557217[_0xd3d4('0x38')][_0xd3d4('0x41')]);_0x3351aa['where']=qs[_0xd3d4('0x39')](_[_0xd3d4('0x5d')](_0x557217[_0xd3d4('0x38')],_0x5d2660[_0xd3d4('0x39')]));_0x3351aa[_0xd3d4('0x43')][_0xd3d4('0x5e')]=_0x194a98['id'];if(_0x557217['query'][_0xd3d4('0x42')]){_0x3351aa[_0xd3d4('0x43')]=_[_0xd3d4('0x44')](_0x3351aa[_0xd3d4('0x43')],{'$or':_[_0xd3d4('0x31')](_0x3351aa[_0xd3d4('0x3c')],function(_0x31e73f){var _0x36e7ec={};_0x36e7ec[_0x31e73f]={'$like':'%'+_0x557217['query']['filter']+'%'};return _0x36e7ec;})});}_0x3351aa=_[_0xd3d4('0x44')]({},_0x3351aa,_0x557217['options']);return db[_0xd3d4('0x5c')][_0xd3d4('0x48')](_0x3351aa);}})[_0xd3d4('0x2b')](function(_0x2ba801){if(_0x2ba801){return db[_0xd3d4('0x5f')][_0xd3d4('0x60')]({'where':{'id':_[_0xd3d4('0x31')](_0x2ba801,_0xd3d4('0x61')),'role':_0xd3d4('0x62')},'attributes':['id',_0xd3d4('0x2e'),_0xd3d4('0x63'),'updatedAt',_0xd3d4('0x64')]});}})[_0xd3d4('0x2b')](function(_0x2f9bea){if(_0x2f9bea){return{'count':_0x2f9bea[_0xd3d4('0x23')],'rows':_[_0xd3d4('0x31')](_0x2f9bea[_0xd3d4('0x49')],function(_0x30fad0){return{'membername':_0x30fad0[_0xd3d4('0x2e')],'UserId':_0x30fad0['id'],'queue_name':_0x12c87c[_0xd3d4('0x2e')],'FaxQueueId':_0x12c87c['id'],'interface':util[_0xd3d4('0x65')](_0xd3d4('0x66'),'SIP',_0x30fad0[_0xd3d4('0x2e')]),'penalty':0x0,'paused':_0x30fad0['faxPause'],'createdAt':_0x30fad0[_0xd3d4('0x64')],'updatedAt':_0x30fad0[_0xd3d4('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd3d4('0x2b')](respondWithFilteredResult(_0x197e3c,_0x3351aa))[_0xd3d4('0x4a')](handleError(_0x197e3c,null));};exports[_0xd3d4('0x68')]=function(_0x330c53,_0x1fc980,_0x4d92cb){var _0x428152={};var _0x113a54={};var _0x502fb8;var _0x378be5;return db[_0xd3d4('0x32')][_0xd3d4('0x69')]({'where':{'id':_0x330c53[_0xd3d4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1fc980,null))['then'](function(_0x4ed45a){if(_0x4ed45a){_0x502fb8=_0x4ed45a;_0x113a54[_0xd3d4('0x37')]=_[_0xd3d4('0x4d')](db[_0xd3d4('0x6a')][_0xd3d4('0x33')]);_0x113a54[_0xd3d4('0x38')]=_[_0xd3d4('0x4d')](_0x330c53['query']);_0x113a54['filters']=_[_0xd3d4('0x3a')](_0x113a54['model'],_0x113a54[_0xd3d4('0x38')]);_0x428152[_0xd3d4('0x3c')]=_[_0xd3d4('0x3a')](_0x113a54['model'],qs['fields'](_0x330c53[_0xd3d4('0x38')][_0xd3d4('0x3b')]));_0x428152[_0xd3d4('0x3c')]=_0x428152[_0xd3d4('0x3c')][_0xd3d4('0x3d')]?_0x428152[_0xd3d4('0x3c')]:_0x113a54[_0xd3d4('0x37')];_0x428152[_0xd3d4('0x40')]=qs[_0xd3d4('0x41')](_0x330c53[_0xd3d4('0x38')]['sort']);_0x428152[_0xd3d4('0x43')]=qs[_0xd3d4('0x39')](_[_0xd3d4('0x5d')](_0x330c53[_0xd3d4('0x38')],_0x113a54[_0xd3d4('0x39')]));if(_0x330c53[_0xd3d4('0x38')][_0xd3d4('0x42')]){_0x428152[_0xd3d4('0x43')]=_[_0xd3d4('0x44')](_0x428152[_0xd3d4('0x43')],{'$or':_[_0xd3d4('0x31')](_0x428152['attributes'],function(_0xd7aeb8){var _0x4a6bf5={};_0x4a6bf5[_0xd7aeb8]={'$like':'%'+_0x330c53[_0xd3d4('0x38')]['filter']+'%'};return _0x4a6bf5;})});}_0x428152=_[_0xd3d4('0x44')]({},_0x428152,_0x330c53[_0xd3d4('0x6b')]);return _0x502fb8[_0xd3d4('0x68')](_0x428152);}})[_0xd3d4('0x2b')](function(_0x16b705){if(_0x16b705){_0x378be5=_0x16b705['length'];if(!_0x330c53[_0xd3d4('0x38')][_0xd3d4('0x3e')]('nolimit')){_0x428152[_0xd3d4('0x25')]=qs['limit'](_0x330c53[_0xd3d4('0x38')][_0xd3d4('0x25')]);_0x428152['offset']=qs['offset'](_0x330c53[_0xd3d4('0x38')][_0xd3d4('0x24')]);}return _0x502fb8[_0xd3d4('0x68')](_0x428152);}})[_0xd3d4('0x2b')](function(_0x14bbe3){if(_0x14bbe3){return _0x14bbe3?{'count':_0x378be5,'rows':_0x14bbe3}:null;}})['then'](respondWithResult(_0x1fc980,null))['catch'](handleError(_0x1fc980,null));};exports[_0xd3d4('0x6c')]=function(_0x1ef6d8,_0x3bbe49,_0x440e69){var _0x52f7fa=_0x1ef6d8[_0xd3d4('0x50')][_0xd3d4('0x6d')];return db['Team'][_0xd3d4('0x48')]({'where':{'id':_0x52f7fa},'attributes':['id'],'include':[{'model':db[_0xd3d4('0x5f')],'as':'Agents','attributes':['id',_0xd3d4('0x2e'),_0xd3d4('0x6e'),'voicePause',_0xd3d4('0x6f')],'raw':!![]}]})[_0xd3d4('0x2b')](function(_0x584be5){if(_0x584be5){var _0x4dc987=_[_0xd3d4('0x70')](_0x584be5,function(_0x2fd24b){var _0xdf710d=_0x2fd24b[_0xd3d4('0x51')]({'plain':!![]});return _0xdf710d['Agents'];});return db['FaxQueue']['find']({'where':{'id':_0x1ef6d8[_0xd3d4('0x4c')]['id']}})['then'](function(_0xa964b0){return db[_0xd3d4('0x71')][_0xd3d4('0x72')](function(_0x4188af){return _0xa964b0['addTeams'](_0x52f7fa,{'transaction':_0x4188af})[_0xd3d4('0x2b')](function(){return BPromise[_0xd3d4('0x73')](_0x4dc987,function(_0x39eedf){return db[_0xd3d4('0x5c')]['findOrCreate']({'where':{'UserId':_0x39eedf['id'],'FaxQueueId':_0x1ef6d8[_0xd3d4('0x4c')]['id']},'transaction':_0x4188af});});})[_0xd3d4('0x2b')](function(){_0x4dc987[_0xd3d4('0x74')](function(_0xb6cb19){socket['emit'](_0xd3d4('0x75'),{'UserId':_0xb6cb19['id'],'FaxQueueId':_0xa964b0['id']});});});});});}})['then'](respondWithStatusCode(_0x3bbe49,null))['catch'](handleError(_0x3bbe49,null));};exports[_0xd3d4('0x76')]=function(_0x1194ea,_0x20cdf8,_0x1e80e8){return db['Team'][_0xd3d4('0x48')]({'where':{'id':_0x1194ea[_0xd3d4('0x38')][_0xd3d4('0x6d')]},'attributes':['id'],'include':[{'model':db[_0xd3d4('0x5f')],'as':_0xd3d4('0x77'),'attributes':['id'],'raw':!![]}]})[_0xd3d4('0x2b')](handleEntityNotFound(_0x20cdf8,null))[_0xd3d4('0x2b')](function(_0x138bc3){var _0x3cc9c1=_[_0xd3d4('0x31')](_0x138bc3,'id');var _0x4a61fa=[];var _0x4925dc=[];var _0x441bfc=squel[_0xd3d4('0x78')]();_0x441bfc[_0xd3d4('0x79')](_0xd3d4('0x7a'))[_0xd3d4('0x7b')](_0xd3d4('0x7c'),'tq')[_0xd3d4('0x7d')](_0xd3d4('0x7e'),'ut',_0xd3d4('0x7f'))[_0xd3d4('0x43')](_0xd3d4('0x80'),_0x1194ea[_0xd3d4('0x4c')]['id']);for(var _0x2916e4=0x0;_0x2916e4<_0x138bc3[_0xd3d4('0x3d')];_0x2916e4+=0x1){let _0x2d078e=_0x138bc3[_0x2916e4];for(var _0x4f9992=0x0;_0x4f9992<_0x2d078e[_0xd3d4('0x77')][_0xd3d4('0x3d')];_0x4f9992+=0x1){let _0x2a1485=_0x2d078e[_0xd3d4('0x77')][_0x4f9992];var _0x53aa85=_0x441bfc[_0xd3d4('0x81')]();_0x53aa85[_0xd3d4('0x43')]('ut.UserId\x20=\x20?',_0x2a1485['id']);_0x4925dc[_0xd3d4('0x82')](db['sequelize']['query'](_0x53aa85[_0xd3d4('0x83')](),{'type':db[_0xd3d4('0x71')][_0xd3d4('0x84')][_0xd3d4('0x85')]})[_0xd3d4('0x2b')](function(_0x33ece7){if(_0x33ece7[_0xd3d4('0x3d')]===0x1){return _0x2a1485['id'];}else{var _0x29f86a=_[_0xd3d4('0x86')](_[_0xd3d4('0x31')](_0x33ece7,_0xd3d4('0x87')),function(_0x38c9d6){return _['includes'](_0x3cc9c1,_0x38c9d6);});if(_0x29f86a){return _0x2a1485['id'];}}}));}}return BPromise[_0xd3d4('0x88')](_0x4925dc)['then'](function(_0x35d0b6){_0x4a61fa=_(_0x4a61fa)[_0xd3d4('0x89')](_0x35d0b6)[_0xd3d4('0x8a')]()[_0xd3d4('0x8b')]();return db[_0xd3d4('0x32')][_0xd3d4('0x4e')]({'where':{'id':_0x1194ea[_0xd3d4('0x4c')]['id']}})[_0xd3d4('0x2b')](function(_0x46a3d2){return db['sequelize']['transaction'](function(_0x4516d4){return _0x46a3d2[_0xd3d4('0x76')](_0x1194ea[_0xd3d4('0x38')]['ids'],{'transaction':_0x4516d4})[_0xd3d4('0x2b')](function(){if(!_[_0xd3d4('0x8c')](_0x4a61fa)){return _0x46a3d2[_0xd3d4('0x8d')](_0x4a61fa,{'transaction':_0x4516d4});}})['then'](function(){_0x4a61fa['forEach'](function(_0xcd8756){socket[_0xd3d4('0x8e')](_0xd3d4('0x8f'),{'UserId':_0xcd8756,'FaxQueueId':_0x46a3d2['id']});});});});});});})[_0xd3d4('0x2b')](respondWithStatusCode(_0x20cdf8,null))['catch'](handleError(_0x20cdf8,null));};exports['addAgents']=function(_0xd2dc01,_0x3a55cb,_0x523b89){return db[_0xd3d4('0x32')][_0xd3d4('0x4e')]({'where':{'id':_0xd2dc01['params']['id']}})['then'](handleEntityNotFound(_0x3a55cb,null))[_0xd3d4('0x2b')](function(_0x20b831){if(_0x20b831){return _0x20b831[_0xd3d4('0x90')](_0xd2dc01[_0xd3d4('0x50')][_0xd3d4('0x6d')],_[_0xd3d4('0x91')](_0xd2dc01[_0xd3d4('0x50')],[_0xd3d4('0x6d'),'id'])||{})[_0xd3d4('0x92')](function(_0x23d2d4){for(var _0x2db947=0x0;_0x2db947<_0xd2dc01[_0xd3d4('0x50')][_0xd3d4('0x6d')][_0xd3d4('0x3d')];_0x2db947+=0x1){socket[_0xd3d4('0x8e')](_0xd3d4('0x75'),{'UserId':Number(_0xd2dc01['body']['ids'][_0x2db947]),'FaxQueueId':Number(_0xd2dc01[_0xd3d4('0x4c')]['id'])});}return _0x23d2d4;});}})[_0xd3d4('0x2b')](respondWithResult(_0x3a55cb,null))['catch'](handleError(_0x3a55cb,null));};exports['removeAgents']=function(_0x1fc61f,_0x4bb660,_0x40011e){return db[_0xd3d4('0x32')][_0xd3d4('0x4e')]({'where':{'id':_0x1fc61f[_0xd3d4('0x4c')]['id']}})[_0xd3d4('0x2b')](handleEntityNotFound(_0x4bb660,null))[_0xd3d4('0x2b')](function(_0x16e488){if(_0x16e488){return _0x16e488[_0xd3d4('0x8d')](_0x1fc61f[_0xd3d4('0x38')][_0xd3d4('0x6d')])['then'](function(){if(_[_0xd3d4('0x93')](_0x1fc61f[_0xd3d4('0x38')][_0xd3d4('0x6d')])){for(var _0x2df576=0x0;_0x2df576<_0x1fc61f['query']['ids'][_0xd3d4('0x3d')];_0x2df576+=0x1){socket[_0xd3d4('0x8e')](_0xd3d4('0x8f'),{'UserId':Number(_0x1fc61f['query'][_0xd3d4('0x6d')][_0x2df576]),'FaxQueueId':Number(_0x1fc61f[_0xd3d4('0x4c')]['id'])});}}else{socket[_0xd3d4('0x8e')](_0xd3d4('0x8f'),{'UserId':Number(_0x1fc61f[_0xd3d4('0x38')][_0xd3d4('0x6d')]),'FaxQueueId':Number(_0x1fc61f[_0xd3d4('0x4c')]['id'])});}});}})[_0xd3d4('0x2b')](respondWithStatusCode(_0x4bb660,null))[_0xd3d4('0x4a')](handleError(_0x4bb660,null));};exports['getAgents']=function(_0x113bf6,_0x3effbb,_0x2fa60e){var _0x5951a6={};var _0x39a532={};var _0x251d64;var _0x3ea568;return db['FaxQueue'][_0xd3d4('0x69')]({'where':{'id':_0x113bf6[_0xd3d4('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3effbb,null))[_0xd3d4('0x2b')](function(_0x5831b4){if(_0x5831b4){_0x251d64=_0x5831b4;_0x39a532[_0xd3d4('0x37')]=_[_0xd3d4('0x4d')](db['User'][_0xd3d4('0x33')]);_0x39a532[_0xd3d4('0x38')]=_[_0xd3d4('0x4d')](_0x113bf6[_0xd3d4('0x38')]);_0x39a532[_0xd3d4('0x39')]=_[_0xd3d4('0x3a')](_0x39a532['model'],_0x39a532[_0xd3d4('0x38')]);_0x5951a6[_0xd3d4('0x3c')]=_[_0xd3d4('0x3a')](_0x39a532[_0xd3d4('0x37')],qs[_0xd3d4('0x3b')](_0x113bf6['query']['fields']));_0x5951a6['attributes']=_0x5951a6['attributes'][_0xd3d4('0x3d')]?_0x5951a6[_0xd3d4('0x3c')]:_0x39a532[_0xd3d4('0x37')];_0x5951a6[_0xd3d4('0x40')]=qs[_0xd3d4('0x41')](_0x113bf6['query'][_0xd3d4('0x41')]);_0x5951a6[_0xd3d4('0x43')]=qs[_0xd3d4('0x39')](_['pick'](_0x113bf6['query'],_0x39a532[_0xd3d4('0x39')]));if(_0x113bf6[_0xd3d4('0x38')][_0xd3d4('0x42')]){_0x5951a6[_0xd3d4('0x43')]=_['merge'](_0x5951a6[_0xd3d4('0x43')],{'$or':_[_0xd3d4('0x31')](_0x5951a6[_0xd3d4('0x3c')],function(_0x39642c){var _0x592c3f={};_0x592c3f[_0x39642c]={'$like':'%'+_0x113bf6[_0xd3d4('0x38')][_0xd3d4('0x42')]+'%'};return _0x592c3f;})});}_0x5951a6=_[_0xd3d4('0x44')]({},_0x5951a6,_0x113bf6['options']);return _0x251d64[_0xd3d4('0x94')](_0x5951a6);}})[_0xd3d4('0x2b')](function(_0x85a28e){if(_0x85a28e){_0x3ea568=_0x85a28e[_0xd3d4('0x3d')];if(!_0x113bf6[_0xd3d4('0x38')][_0xd3d4('0x3e')]('nolimit')){_0x5951a6[_0xd3d4('0x25')]=qs[_0xd3d4('0x25')](_0x113bf6[_0xd3d4('0x38')][_0xd3d4('0x25')]);_0x5951a6[_0xd3d4('0x24')]=qs[_0xd3d4('0x24')](_0x113bf6[_0xd3d4('0x38')][_0xd3d4('0x24')]);}return _0x251d64[_0xd3d4('0x94')](_0x5951a6);}})['then'](function(_0x4db830){if(_0x4db830){return _0x4db830?{'count':_0x3ea568,'rows':_0x4db830}:null;}})['then'](respondWithResult(_0x3effbb,null))[_0xd3d4('0x4a')](handleError(_0x3effbb,null));};
\ No newline at end of file
index cea92ba..34aad46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9085=['events','../../mysqldb','FaxQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5093e9,_0x5154d0){var _0x4c9a22=function(_0x15176d){while(--_0x15176d){_0x5093e9['push'](_0x5093e9['shift']());}};_0x4c9a22(++_0x5154d0);}(_0x9085,0x1d6));var _0x5908=function(_0x18ccd6,_0x1098e8){_0x18ccd6=_0x18ccd6-0x0;var _0x587d2c=_0x9085[_0x18ccd6];return _0x587d2c;};'use strict';var EventEmitter=require(_0x5908('0x0'));var FaxQueue=require(_0x5908('0x1'))['db'][_0x5908('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x5908('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5908('0x4'),'afterDestroy':_0x5908('0x5')};function emitEvent(_0x2ce866){return function(_0x5ba13d,_0x14db9f,_0x4ebe22){FaxQueueEvents[_0x5908('0x6')](_0x2ce866+':'+_0x5ba13d['id'],_0x5ba13d);FaxQueueEvents[_0x5908('0x6')](_0x2ce866,_0x5ba13d);_0x4ebe22(null);};}for(var e in events){if(events[_0x5908('0x7')](e)){var event=events[e];FaxQueue[_0x5908('0x8')](e,emitEvent(event));}}module[_0x5908('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0x2f8f=['hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','setMaxListeners','save','update','remove','emit'];(function(_0x4cdaf8,_0x153297){var _0x509b16=function(_0x3fe24e){while(--_0x3fe24e){_0x4cdaf8['push'](_0x4cdaf8['shift']());}};_0x509b16(++_0x153297);}(_0x2f8f,0x189));var _0xf2f8=function(_0x2f3794,_0x3c3bec){_0x2f3794=_0x2f3794-0x0;var _0x1c9fbe=_0x2f8f[_0x2f3794];return _0x1c9fbe;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xf2f8('0x0'))['db'][_0xf2f8('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xf2f8('0x2')](0x0);var events={'afterCreate':_0xf2f8('0x3'),'afterUpdate':_0xf2f8('0x4'),'afterDestroy':_0xf2f8('0x5')};function emitEvent(_0x29bea3){return function(_0x2c0223,_0x2884aa,_0x5c3ad4){FaxQueueEvents[_0xf2f8('0x6')](_0x29bea3+':'+_0x2c0223['id'],_0x2c0223);FaxQueueEvents[_0xf2f8('0x6')](_0x29bea3,_0x2c0223);_0x5c3ad4(null);};}for(var e in events){if(events[_0xf2f8('0x7')](e)){var event=events[e];FaxQueue[_0xf2f8('0x8')](e,emitEvent(event));}}module[_0xf2f8('0x9')]=FaxQueueEvents;
\ No newline at end of file
index acd4454..0c5216e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff32=['FaxQueue','fax_queues','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','./faxQueue.attributes','exports','define'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xff32,0xb6));var _0x2ff3=function(_0xfff28b,_0x204443){_0xfff28b=_0xfff28b-0x0;var _0x13c9f0=_0xff32[_0xfff28b];return _0x13c9f0;};'use strict';var _=require(_0x2ff3('0x0'));var util=require(_0x2ff3('0x1'));var logger=require(_0x2ff3('0x2'))('api');var moment=require(_0x2ff3('0x3'));var BPromise=require(_0x2ff3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2ff3('0x5'));var rimraf=require('rimraf');var config=require(_0x2ff3('0x6'));var attributes=require(_0x2ff3('0x7'));module[_0x2ff3('0x8')]=function(_0x2bfb8c,_0x53c8d0){return _0x2bfb8c[_0x2ff3('0x9')](_0x2ff3('0xa'),attributes,{'tableName':_0x2ff3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x35e5=['FaxQueue','fax_queues','util','api','request-promise','path','../../config/environment','./faxQueue.attributes','exports','define'];(function(_0x5b58d0,_0x53e4f0){var _0x1db1d3=function(_0x2f6b1f){while(--_0x2f6b1f){_0x5b58d0['push'](_0x5b58d0['shift']());}};_0x1db1d3(++_0x53e4f0);}(_0x35e5,0x1a6));var _0x535e=function(_0x224b6e,_0x4c4cf5){_0x224b6e=_0x224b6e-0x0;var _0x41dfbb=_0x35e5[_0x224b6e];return _0x41dfbb;};'use strict';var _=require('lodash');var util=require(_0x535e('0x0'));var logger=require('../../config/logger')(_0x535e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x535e('0x2'));var fs=require('fs');var path=require(_0x535e('0x3'));var rimraf=require('rimraf');var config=require(_0x535e('0x4'));var attributes=require(_0x535e('0x5'));module[_0x535e('0x6')]=function(_0x51b09e,_0x569882){return _0x51b09e[_0x535e('0x7')](_0x535e('0x8'),attributes,{'tableName':_0x535e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7de9988..528f154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe114=['jayson/promise','client','http','redis','defaults','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetFaxQueue','findAll','options','raw','where','attributes','include','model','map','FaxQueue','find','ShowFaxQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0xa90827,_0x374815){var _0x1f1aad=function(_0x524b89){while(--_0x524b89){_0xa90827['push'](_0xa90827['shift']());}};_0x1f1aad(++_0x374815);}(_0xe114,0x89));var _0x4e11=function(_0x53f8d7,_0x2abbee){_0x53f8d7=_0x53f8d7-0x0;var _0x48427b=_0xe114[_0x53f8d7];return _0x48427b;};'use strict';var _=require(_0x4e11('0x0'));var util=require(_0x4e11('0x1'));var moment=require(_0x4e11('0x2'));var BPromise=require('bluebird');var rs=require(_0x4e11('0x3'));var fs=require('fs');var Redis=require(_0x4e11('0x4'));var db=require(_0x4e11('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4e11('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4e11('0x7'));var client=jayson[_0x4e11('0x8')][_0x4e11('0x9')]({'port':0x232a});config[_0x4e11('0xa')]=_[_0x4e11('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4e11('0xa')]));require(_0x4e11('0xc'))['register'](socket);function respondWithRpcPromise(_0xe24f3a,_0x586ec0,_0x4c97f5){return new BPromise(function(_0x426d9a,_0x4585ce){return client[_0x4e11('0xd')](_0xe24f3a,_0x4c97f5)[_0x4e11('0xe')](function(_0x5371df){logger[_0x4e11('0xf')](_0x4e11('0x10'),_0x586ec0,_0x4e11('0x11'));logger[_0x4e11('0x12')](_0x4e11('0x13'),_0x586ec0,_0x4e11('0x11'),JSON[_0x4e11('0x14')](_0x5371df));if(_0x5371df[_0x4e11('0x15')]){if(_0x5371df[_0x4e11('0x15')]['code']===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x586ec0,_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);return _0x4585ce(_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);}logger[_0x4e11('0x15')](_0x4e11('0x10'),_0x586ec0,_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);return _0x426d9a(_0x5371df[_0x4e11('0x15')][_0x4e11('0x16')]);}else{logger[_0x4e11('0xf')](_0x4e11('0x10'),_0x586ec0,'request\x20sent');_0x426d9a(_0x5371df['result'][_0x4e11('0x16')]);}})[_0x4e11('0x17')](function(_0xfef3bd){logger[_0x4e11('0x15')](_0x4e11('0x10'),_0x586ec0,_0xfef3bd);_0x4585ce(_0xfef3bd);});});}exports[_0x4e11('0x18')]=function(_0x496dd1){var _0x3978ae=this;return new Promise(function(_0x4abad3,_0x111b5f){return db['FaxQueue'][_0x4e11('0x19')]({'raw':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1b')]===undefined?!![]:![]:!![],'where':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1c')]||null:null,'attributes':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1['options'][_0x4e11('0x1d')]||null:null,'limit':_0x496dd1[_0x4e11('0x1a')]?_0x496dd1[_0x4e11('0x1a')]['limit']||null:null,'include':_0x496dd1['options']?_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1e')]?_['map'](_0x496dd1[_0x4e11('0x1a')][_0x4e11('0x1e')],function(_0x2e8c55){return{'model':db[_0x2e8c55[_0x4e11('0x1f')]],'as':_0x2e8c55['as'],'attributes':_0x2e8c55['attributes'],'include':_0x2e8c55[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x2e8c55[_0x4e11('0x1e')],function(_0x2223f7){return{'model':db[_0x2223f7[_0x4e11('0x1f')]],'as':_0x2223f7['as'],'attributes':_0x2223f7[_0x4e11('0x1d')],'include':_0x2223f7[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x2223f7['include'],function(_0x1982d4){return{'model':db[_0x1982d4[_0x4e11('0x1f')]],'as':_0x1982d4['as'],'attributes':_0x1982d4[_0x4e11('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4e11('0xe')](function(_0x2a2a4b){logger[_0x4e11('0xf')](_0x4e11('0x18'),_0x496dd1);logger[_0x4e11('0x12')](_0x4e11('0x18'),_0x496dd1,JSON[_0x4e11('0x14')](_0x2a2a4b));_0x4abad3(_0x2a2a4b);})[_0x4e11('0x17')](function(_0x1eb720){logger[_0x4e11('0x15')](_0x4e11('0x18'),_0x1eb720[_0x4e11('0x16')],_0x496dd1);_0x111b5f(_0x3978ae[_0x4e11('0x15')](0x1f4,_0x1eb720[_0x4e11('0x16')]));});});};exports['ShowFaxQueue']=function(_0x316345){var _0x424796=this;return new Promise(function(_0x56ff13,_0x184a12){return db[_0x4e11('0x21')][_0x4e11('0x22')]({'raw':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')][_0x4e11('0x1b')]===undefined?!![]:![]:!![],'where':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')][_0x4e11('0x1c')]||null:null,'attributes':_0x316345[_0x4e11('0x1a')]?_0x316345[_0x4e11('0x1a')]['attributes']||null:null,'include':_0x316345[_0x4e11('0x1a')]?_0x316345['options'][_0x4e11('0x1e')]?_['map'](_0x316345[_0x4e11('0x1a')][_0x4e11('0x1e')],function(_0x4c1bc1){return{'model':db[_0x4c1bc1[_0x4e11('0x1f')]],'as':_0x4c1bc1['as'],'attributes':_0x4c1bc1[_0x4e11('0x1d')],'include':_0x4c1bc1[_0x4e11('0x1e')]?_['map'](_0x4c1bc1[_0x4e11('0x1e')],function(_0x259136){return{'model':db[_0x259136[_0x4e11('0x1f')]],'as':_0x259136['as'],'attributes':_0x259136[_0x4e11('0x1d')],'include':_0x259136[_0x4e11('0x1e')]?_[_0x4e11('0x20')](_0x259136['include'],function(_0x6a0c8c){return{'model':db[_0x6a0c8c[_0x4e11('0x1f')]],'as':_0x6a0c8c['as'],'attributes':_0x6a0c8c[_0x4e11('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4e11('0xe')](function(_0x56456b){logger[_0x4e11('0xf')](_0x4e11('0x23'),_0x316345);logger[_0x4e11('0x12')]('ShowFaxQueue',_0x316345,JSON['stringify'](_0x56456b));_0x56ff13(_0x56456b);})['catch'](function(_0x38c063){logger[_0x4e11('0x15')](_0x4e11('0x23'),_0x38c063[_0x4e11('0x16')],_0x316345);_0x184a12(_0x424796[_0x4e11('0x15')](0x1f4,_0x38c063[_0x4e11('0x16')]));});});};
\ No newline at end of file
+var _0x8cf0=['localhost','register','then','FaxQueue,\x20%s,\x20%s','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','limit','include','map','attributes','model','debug','ShowFaxQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis'];(function(_0x2da416,_0x2356d8){var _0x4f2a3a=function(_0x10c2e4){while(--_0x10c2e4){_0x2da416['push'](_0x2da416['shift']());}};_0x4f2a3a(++_0x2356d8);}(_0x8cf0,0x12a));var _0x08cf=function(_0x323327,_0xf08c3){_0x323327=_0x323327-0x0;var _0x223257=_0x8cf0[_0x323327];return _0x223257;};'use strict';var _=require(_0x08cf('0x0'));var util=require(_0x08cf('0x1'));var moment=require(_0x08cf('0x2'));var BPromise=require(_0x08cf('0x3'));var rs=require(_0x08cf('0x4'));var fs=require('fs');var Redis=require(_0x08cf('0x5'));var db=require(_0x08cf('0x6'))['db'];var utils=require(_0x08cf('0x7'));var logger=require(_0x08cf('0x8'))(_0x08cf('0x9'));var config=require('../../config/environment');var jayson=require(_0x08cf('0xa'));var client=jayson[_0x08cf('0xb')][_0x08cf('0xc')]({'port':0x232a});config[_0x08cf('0xd')]=_['defaults'](config[_0x08cf('0xd')],{'host':_0x08cf('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x08cf('0xd')]));require('./faxQueue.socket')[_0x08cf('0xf')](socket);function respondWithRpcPromise(_0x3c843e,_0xa54f42,_0x4b731e){return new BPromise(function(_0x4a7a70,_0x1b8ca5){return client['request'](_0x3c843e,_0x4b731e)[_0x08cf('0x10')](function(_0x3b256b){logger['info'](_0x08cf('0x11'),_0xa54f42,_0x08cf('0x12'));logger['debug'](_0x08cf('0x13'),_0xa54f42,'request\x20sent',JSON[_0x08cf('0x14')](_0x3b256b));if(_0x3b256b[_0x08cf('0x15')]){if(_0x3b256b['error']['code']===0x1f4){logger['error'](_0x08cf('0x11'),_0xa54f42,_0x3b256b['error'][_0x08cf('0x16')]);return _0x1b8ca5(_0x3b256b['error'][_0x08cf('0x16')]);}logger[_0x08cf('0x15')](_0x08cf('0x11'),_0xa54f42,_0x3b256b['error'][_0x08cf('0x16')]);return _0x4a7a70(_0x3b256b[_0x08cf('0x15')][_0x08cf('0x16')]);}else{logger[_0x08cf('0x17')](_0x08cf('0x11'),_0xa54f42,'request\x20sent');_0x4a7a70(_0x3b256b[_0x08cf('0x18')][_0x08cf('0x16')]);}})[_0x08cf('0x19')](function(_0xd15ee0){logger[_0x08cf('0x15')](_0x08cf('0x11'),_0xa54f42,_0xd15ee0);_0x1b8ca5(_0xd15ee0);});});}exports[_0x08cf('0x1a')]=function(_0x27b38c){var _0x5a876f=this;return new Promise(function(_0x3e4988,_0x56b096){return db[_0x08cf('0x1b')][_0x08cf('0x1c')]({'raw':_0x27b38c[_0x08cf('0x1d')]?_0x27b38c[_0x08cf('0x1d')][_0x08cf('0x1e')]===undefined?!![]:![]:!![],'where':_0x27b38c[_0x08cf('0x1d')]?_0x27b38c[_0x08cf('0x1d')][_0x08cf('0x1f')]||null:null,'attributes':_0x27b38c[_0x08cf('0x1d')]?_0x27b38c[_0x08cf('0x1d')]['attributes']||null:null,'limit':_0x27b38c[_0x08cf('0x1d')]?_0x27b38c[_0x08cf('0x1d')][_0x08cf('0x20')]||null:null,'include':_0x27b38c[_0x08cf('0x1d')]?_0x27b38c[_0x08cf('0x1d')][_0x08cf('0x21')]?_[_0x08cf('0x22')](_0x27b38c['options']['include'],function(_0xe65a86){return{'model':db[_0xe65a86['model']],'as':_0xe65a86['as'],'attributes':_0xe65a86[_0x08cf('0x23')],'include':_0xe65a86[_0x08cf('0x21')]?_['map'](_0xe65a86['include'],function(_0x40d7ec){return{'model':db[_0x40d7ec['model']],'as':_0x40d7ec['as'],'attributes':_0x40d7ec[_0x08cf('0x23')],'include':_0x40d7ec[_0x08cf('0x21')]?_['map'](_0x40d7ec[_0x08cf('0x21')],function(_0x4b588a){return{'model':db[_0x4b588a[_0x08cf('0x24')]],'as':_0x4b588a['as'],'attributes':_0x4b588a[_0x08cf('0x23')]};}):[]};}):[]};}):[]:[]})[_0x08cf('0x10')](function(_0xc20063){logger[_0x08cf('0x17')](_0x08cf('0x1a'),_0x27b38c);logger[_0x08cf('0x25')]('GetFaxQueue',_0x27b38c,JSON[_0x08cf('0x14')](_0xc20063));_0x3e4988(_0xc20063);})[_0x08cf('0x19')](function(_0xb1cd9e){logger['error']('GetFaxQueue',_0xb1cd9e[_0x08cf('0x16')],_0x27b38c);_0x56b096(_0x5a876f['error'](0x1f4,_0xb1cd9e[_0x08cf('0x16')]));});});};exports['ShowFaxQueue']=function(_0x481c24){var _0x45be71=this;return new Promise(function(_0x2dc5fc,_0x40051a){return db[_0x08cf('0x1b')]['find']({'raw':_0x481c24[_0x08cf('0x1d')]?_0x481c24['options'][_0x08cf('0x1e')]===undefined?!![]:![]:!![],'where':_0x481c24[_0x08cf('0x1d')]?_0x481c24[_0x08cf('0x1d')]['where']||null:null,'attributes':_0x481c24['options']?_0x481c24[_0x08cf('0x1d')]['attributes']||null:null,'include':_0x481c24['options']?_0x481c24['options']['include']?_[_0x08cf('0x22')](_0x481c24[_0x08cf('0x1d')][_0x08cf('0x21')],function(_0x5749c3){return{'model':db[_0x5749c3[_0x08cf('0x24')]],'as':_0x5749c3['as'],'attributes':_0x5749c3[_0x08cf('0x23')],'include':_0x5749c3[_0x08cf('0x21')]?_[_0x08cf('0x22')](_0x5749c3['include'],function(_0x34ef92){return{'model':db[_0x34ef92[_0x08cf('0x24')]],'as':_0x34ef92['as'],'attributes':_0x34ef92[_0x08cf('0x23')],'include':_0x34ef92[_0x08cf('0x21')]?_[_0x08cf('0x22')](_0x34ef92[_0x08cf('0x21')],function(_0x2b541e){return{'model':db[_0x2b541e['model']],'as':_0x2b541e['as'],'attributes':_0x2b541e[_0x08cf('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2eaa0a){logger['info'](_0x08cf('0x26'),_0x481c24);logger['debug'](_0x08cf('0x26'),_0x481c24,JSON[_0x08cf('0x14')](_0x2eaa0a));_0x2dc5fc(_0x2eaa0a);})[_0x08cf('0x19')](function(_0x315049){logger[_0x08cf('0x15')]('ShowFaxQueue',_0x315049[_0x08cf('0x16')],_0x481c24);_0x40051a(_0x45be71[_0x08cf('0x15')](0x1f4,_0x315049['message']));});});};
\ No newline at end of file
index f8059a7..83d7052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8939=['save','remove','update','emit','removeListener','register','length'];(function(_0x423f29,_0x2ef854){var _0xc1f13e=function(_0x393856){while(--_0x393856){_0x423f29['push'](_0x423f29['shift']());}};_0xc1f13e(++_0x2ef854);}(_0x8939,0x12d));var _0x9893=function(_0x11999a,_0x41d06e){_0x11999a=_0x11999a-0x0;var _0x4255a6=_0x8939[_0x11999a];return _0x4255a6;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x9893('0x0'),_0x9893('0x1'),_0x9893('0x2')];function createListener(_0x574a2c,_0x18ef1e){return function(_0x575fa3){_0x18ef1e[_0x9893('0x3')](_0x574a2c,_0x575fa3);};}function removeListener(_0x27f124,_0x4f85fd){return function(){FaxQueueEvents[_0x9893('0x4')](_0x27f124,_0x4f85fd);};}exports[_0x9893('0x5')]=function(_0x5aee08){for(var _0x1e1654=0x0,_0x415e95=events[_0x9893('0x6')];_0x1e1654<_0x415e95;_0x1e1654++){var _0x1c97d0=events[_0x1e1654];var _0x13ff86=createListener('faxQueue:'+_0x1c97d0,_0x5aee08);FaxQueueEvents['on'](_0x1c97d0,_0x13ff86);}};
\ No newline at end of file
+var _0x84c6=['save','remove','emit','removeListener','register','length','faxQueue:','./faxQueue.events'];(function(_0x5b4f13,_0xe4ab43){var _0x46b3c2=function(_0x51198c){while(--_0x51198c){_0x5b4f13['push'](_0x5b4f13['shift']());}};_0x46b3c2(++_0xe4ab43);}(_0x84c6,0x137));var _0x684c=function(_0x84d8eb,_0x54a720){_0x84d8eb=_0x84d8eb-0x0;var _0x3817cd=_0x84c6[_0x84d8eb];return _0x3817cd;};'use strict';var FaxQueueEvents=require(_0x684c('0x0'));var events=[_0x684c('0x1'),_0x684c('0x2'),'update'];function createListener(_0x4aaf71,_0x170fba){return function(_0x5c0307){_0x170fba[_0x684c('0x3')](_0x4aaf71,_0x5c0307);};}function removeListener(_0x555e2d,_0xba362){return function(){FaxQueueEvents[_0x684c('0x4')](_0x555e2d,_0xba362);};}exports[_0x684c('0x5')]=function(_0x317609){for(var _0x47950f=0x0,_0x504184=events[_0x684c('0x6')];_0x47950f<_0x504184;_0x47950f++){var _0x59f46c=events[_0x47950f];var _0x2bf56e=createListener(_0x684c('0x7')+_0x59f46c,_0x317609);FaxQueueEvents['on'](_0x59f46c,_0x2bf56e);}};
\ No newline at end of file
index fcffa8a..7fb615c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0a=['fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','create','post','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router'];(function(_0x8d95a3,_0x735f63){var _0x1acf63=function(_0x329f34){while(--_0x329f34){_0x8d95a3['push'](_0x8d95a3['shift']());}};_0x1acf63(++_0x735f63);}(_0x5d0a,0x175));var _0xa5d0=function(_0x4a72fd,_0xe3983){_0x4a72fd=_0x4a72fd-0x0;var _0x486561=_0x5d0a[_0x4a72fd];return _0x486561;};'use strict';var multer=require(_0xa5d0('0x0'));var util=require('util');var path=require(_0xa5d0('0x1'));var timeout=require('connect-timeout');var express=require(_0xa5d0('0x2'));var router=express[_0xa5d0('0x3')]();var fs_extra=require(_0xa5d0('0x4'));var auth=require(_0xa5d0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa5d0('0x6'));var controller=require(_0xa5d0('0x7'));router[_0xa5d0('0x8')]('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xa')]);router[_0xa5d0('0x8')](_0xa5d0('0xb'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0xc')]);router[_0xa5d0('0x8')](_0xa5d0('0xd'),auth['isAuthenticated'](),controller[_0xa5d0('0xe')]);router[_0xa5d0('0x8')](_0xa5d0('0xf'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x10')]);router[_0xa5d0('0x8')](_0xa5d0('0x11'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x12')]);router[_0xa5d0('0x8')]('/:id/users',auth[_0xa5d0('0x9')](),controller['getAgents']);router['post']('/',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x13')]);router[_0xa5d0('0x14')](_0xa5d0('0x11'),auth['isAuthenticated'](),controller['addTeams']);router[_0xa5d0('0x14')](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x16')]);router[_0xa5d0('0x17')](_0xa5d0('0xd'),auth[_0xa5d0('0x9')](),controller['update']);router[_0xa5d0('0x18')]('/:id',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x19')]);router['delete']('/:id/teams',auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1a')]);router['delete'](_0xa5d0('0x15'),auth[_0xa5d0('0x9')](),controller[_0xa5d0('0x1b')]);module[_0xa5d0('0x1c')]=router;
\ No newline at end of file
+var _0xd9fb=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','post','create','addTeams','/:id/users','put','update','delete','removeTeams','removeAgents'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xd9fb,0x189));var _0xbd9f=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xd9fb[_0x29b609];return _0x54c952;};'use strict';var multer=require(_0xbd9f('0x0'));var util=require(_0xbd9f('0x1'));var path=require(_0xbd9f('0x2'));var timeout=require(_0xbd9f('0x3'));var express=require(_0xbd9f('0x4'));var router=express[_0xbd9f('0x5')]();var fs_extra=require(_0xbd9f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xbd9f('0x7'));var config=require(_0xbd9f('0x8'));var controller=require('./faxQueue.controller');router[_0xbd9f('0x9')]('/',auth['isAuthenticated'](),controller[_0xbd9f('0xa')]);router[_0xbd9f('0x9')]('/describe',auth[_0xbd9f('0xb')](),controller[_0xbd9f('0xc')]);router[_0xbd9f('0x9')](_0xbd9f('0xd'),auth['isAuthenticated'](),controller[_0xbd9f('0xe')]);router[_0xbd9f('0x9')](_0xbd9f('0xf'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x10')]);router[_0xbd9f('0x9')](_0xbd9f('0x11'),auth['isAuthenticated'](),controller['getTeams']);router['get']('/:id/users',auth[_0xbd9f('0xb')](),controller['getAgents']);router[_0xbd9f('0x12')]('/',auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x13')]);router['post'](_0xbd9f('0x11'),auth['isAuthenticated'](),controller[_0xbd9f('0x14')]);router[_0xbd9f('0x12')](_0xbd9f('0x15'),auth[_0xbd9f('0xb')](),controller['addAgents']);router[_0xbd9f('0x16')](_0xbd9f('0xd'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x17')]);router[_0xbd9f('0x18')](_0xbd9f('0xd'),auth[_0xbd9f('0xb')](),controller['destroy']);router['delete'](_0xbd9f('0x11'),auth['isAuthenticated'](),controller[_0xbd9f('0x19')]);router[_0xbd9f('0x18')](_0xbd9f('0x15'),auth[_0xbd9f('0xb')](),controller[_0xbd9f('0x1a')]);module[_0xbd9f('0x1b')]=router;
\ No newline at end of file
index 6bdd638..1bfa9fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a40=['sequelize','DATE','STRING','moment'];(function(_0x229c8c,_0x546d4a){var _0x5a1898=function(_0x1a0fa0){while(--_0x1a0fa0){_0x229c8c['push'](_0x229c8c['shift']());}};_0x5a1898(++_0x546d4a);}(_0x7a40,0x19b));var _0x07a4=function(_0x5694f9,_0x9ad985){_0x5694f9=_0x5694f9-0x0;var _0x49e9d0=_0x7a40[_0x5694f9];return _0x49e9d0;};'use strict';var moment=require(_0x07a4('0x0'));var Sequelize=require(_0x07a4('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x07a4('0x2')]},'leaveAt':{'type':Sequelize[_0x07a4('0x2')]},'acceptAt':{'type':Sequelize[_0x07a4('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x07a4('0x3')]}};
\ No newline at end of file
+var _0xe552=['moment','sequelize','exports','STRING','DATE'];(function(_0x31baac,_0x4a876f){var _0x1f428d=function(_0x292e24){while(--_0x292e24){_0x31baac['push'](_0x31baac['shift']());}};_0x1f428d(++_0x4a876f);}(_0xe552,0x1cc));var _0x2e55=function(_0x3070ec,_0x4c4d59){_0x3070ec=_0x3070ec-0x0;var _0x39aef3=_0xe552[_0x3070ec];return _0x39aef3;};'use strict';var moment=require(_0x2e55('0x0'));var Sequelize=require(_0x2e55('0x1'));module[_0x2e55('0x2')]={'uniqueid':{'type':Sequelize[_0x2e55('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x2e55('0x4')]},'leaveAt':{'type':Sequelize[_0x2e55('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x2e55('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 231007d..8520860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2116=['fieldName','type','query','keys','intersection','model','attributes','length','hasOwnProperty','order','sort','filters','pick','where','merge','VIRTUAL','filter','findAll','rows','catch','show','rawAttributes','fields','includeAll','create','body','params','destroy','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','error','stack','name','send','index','map','FaxQueueReport'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x2116,0x67));var _0x6211=function(_0x33cc14,_0x1eb42b){_0x33cc14=_0x33cc14-0x0;var _0x1763ab=_0x2116[_0x33cc14];return _0x1763ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6211('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6211('0x1'));var rp=require(_0x6211('0x2'));var moment=require(_0x6211('0x3'));var BPromise=require(_0x6211('0x4'));var Mustache=require('mustache');var util=require(_0x6211('0x5'));var path=require(_0x6211('0x6'));var sox=require(_0x6211('0x7'));var csv=require(_0x6211('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6211('0x9'));var _=require('lodash');var squel=require(_0x6211('0xa'));var crypto=require(_0x6211('0xb'));var jsforce=require(_0x6211('0xc'));var deskjs=require(_0x6211('0xd'));var toCsv=require(_0x6211('0x8'));var querystring=require(_0x6211('0xe'));var Papa=require(_0x6211('0xf'));var Redis=require('ioredis');var authService=require(_0x6211('0x10'));var qs=require(_0x6211('0x11'));var as=require(_0x6211('0x12'));var hardwareService=require(_0x6211('0x13'));var logger=require(_0x6211('0x14'))(_0x6211('0x15'));var utils=require(_0x6211('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6211('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x337362,_0x6661a7){_0x6661a7=_0x6661a7||0xcc;return function(_0x22963d){if(_0x22963d){return _0x337362['sendStatus'](_0x6661a7);}return _0x337362[_0x6211('0x18')](_0x6661a7)[_0x6211('0x19')]();};}function respondWithResult(_0x1a27a2,_0x509faa){_0x509faa=_0x509faa||0xc8;return function(_0x54a303){if(_0x54a303){return _0x1a27a2[_0x6211('0x18')](_0x509faa)[_0x6211('0x1a')](_0x54a303);}};}function respondWithFilteredResult(_0x23f8d2,_0xf69c79){return function(_0xa23863){if(_0xa23863){var _0x15adb6=typeof _0xf69c79[_0x6211('0x1b')]===_0x6211('0x1c')&&typeof _0xf69c79['limit']===_0x6211('0x1c');var _0x432c18=_0xa23863[_0x6211('0x1d')];var _0x2ccbb0=_0x15adb6?0x0:_0xf69c79[_0x6211('0x1b')];var _0x14c051=_0x15adb6?_0xa23863[_0x6211('0x1d')]:_0xf69c79['offset']+_0xf69c79[_0x6211('0x1e')];var _0x1528e6;if(_0x14c051>=_0x432c18){_0x14c051=_0x432c18;_0x1528e6=0xc8;}else{_0x1528e6=0xce;}_0x23f8d2['status'](_0x1528e6);return _0x23f8d2[_0x6211('0x1f')](_0x6211('0x20'),_0x2ccbb0+'-'+_0x14c051+'/'+_0x432c18)[_0x6211('0x1a')](_0xa23863);}return null;};}function patchUpdates(_0x30d6a5){return function(_0x4d99bc){try{jsonpatch['apply'](_0x4d99bc,_0x30d6a5,!![]);}catch(_0x4252d3){return BPromise[_0x6211('0x21')](_0x4252d3);}return _0x4d99bc['save']();};}function saveUpdates(_0x52eb53,_0x15ca00){return function(_0x1e6a53){if(_0x1e6a53){return _0x1e6a53[_0x6211('0x22')](_0x52eb53)[_0x6211('0x23')](function(_0x5b50cd){return _0x5b50cd;});}return null;};}function removeEntity(_0x2c1c0a,_0x311054){return function(_0x16fb0c){if(_0x16fb0c){return _0x16fb0c['destroy']()[_0x6211('0x23')](function(){_0x2c1c0a[_0x6211('0x18')](0xcc)[_0x6211('0x19')]();});}};}function handleEntityNotFound(_0x4a13f8,_0x532778){return function(_0x4ebae9){if(!_0x4ebae9){_0x4a13f8['sendStatus'](0x194);}return _0x4ebae9;};}function handleError(_0x524537,_0x15a096){_0x15a096=_0x15a096||0x1f4;return function(_0x2badd2){logger[_0x6211('0x24')](_0x2badd2[_0x6211('0x25')]);if(_0x2badd2[_0x6211('0x26')]){delete _0x2badd2[_0x6211('0x26')];}_0x524537[_0x6211('0x18')](_0x15a096)[_0x6211('0x27')](_0x2badd2);};}exports[_0x6211('0x28')]=function(_0x19a369,_0x105721){var _0x38f5f8={},_0x3564f2={},_0x26a8cc={'count':0x0,'rows':[]};var _0x20e576=_[_0x6211('0x29')](db[_0x6211('0x2a')]['rawAttributes'],function(_0x276a30){return{'name':_0x276a30[_0x6211('0x2b')],'type':_0x276a30[_0x6211('0x2c')]['key']};});_0x3564f2['model']=_[_0x6211('0x29')](_0x20e576,'name');_0x3564f2[_0x6211('0x2d')]=_[_0x6211('0x2e')](_0x19a369[_0x6211('0x2d')]);_0x3564f2['filters']=_[_0x6211('0x2f')](_0x3564f2[_0x6211('0x30')],_0x3564f2[_0x6211('0x2d')]);_0x38f5f8[_0x6211('0x31')]=_[_0x6211('0x2f')](_0x3564f2['model'],qs['fields'](_0x19a369[_0x6211('0x2d')]['fields']));_0x38f5f8['attributes']=_0x38f5f8['attributes'][_0x6211('0x32')]?_0x38f5f8[_0x6211('0x31')]:_0x3564f2[_0x6211('0x30')];if(!_0x19a369['query'][_0x6211('0x33')]('nolimit')){_0x38f5f8[_0x6211('0x1e')]=qs[_0x6211('0x1e')](_0x19a369[_0x6211('0x2d')]['limit']);_0x38f5f8[_0x6211('0x1b')]=qs[_0x6211('0x1b')](_0x19a369[_0x6211('0x2d')][_0x6211('0x1b')]);}_0x38f5f8[_0x6211('0x34')]=qs[_0x6211('0x35')](_0x19a369[_0x6211('0x2d')][_0x6211('0x35')]);_0x38f5f8['where']=qs[_0x6211('0x36')](_[_0x6211('0x37')](_0x19a369[_0x6211('0x2d')],_0x3564f2[_0x6211('0x36')]),_0x20e576);if(_0x19a369[_0x6211('0x2d')]['filter']){_0x38f5f8[_0x6211('0x38')]=_[_0x6211('0x39')](_0x38f5f8[_0x6211('0x38')],{'$or':_[_0x6211('0x29')](_0x20e576,function(_0x572324){if(_0x572324[_0x6211('0x2c')]!==_0x6211('0x3a')){var _0x20503a={};_0x20503a[_0x572324[_0x6211('0x26')]]={'$like':'%'+_0x19a369[_0x6211('0x2d')][_0x6211('0x3b')]+'%'};return _0x20503a;}})});}_0x38f5f8=_[_0x6211('0x39')]({},_0x38f5f8,_0x19a369['options']);var _0x5e324e={'where':_0x38f5f8['where']};return db[_0x6211('0x2a')][_0x6211('0x1d')](_0x5e324e)['then'](function(_0x1b9e5d){_0x26a8cc[_0x6211('0x1d')]=_0x1b9e5d;if(_0x19a369['query']['includeAll']){_0x38f5f8['include']=[{'all':!![]}];}return db[_0x6211('0x2a')][_0x6211('0x3c')](_0x38f5f8);})[_0x6211('0x23')](function(_0x5972d4){_0x26a8cc[_0x6211('0x3d')]=_0x5972d4;return _0x26a8cc;})[_0x6211('0x23')](respondWithFilteredResult(_0x105721,_0x38f5f8))[_0x6211('0x3e')](handleError(_0x105721,null));};exports[_0x6211('0x3f')]=function(_0x334e87,_0x476456){var _0x28721a={'raw':!![],'where':{'id':_0x334e87['params']['id']}},_0x371956={};_0x371956['model']=_[_0x6211('0x2e')](db[_0x6211('0x2a')][_0x6211('0x40')]);_0x371956[_0x6211('0x2d')]=_[_0x6211('0x2e')](_0x334e87[_0x6211('0x2d')]);_0x371956['filters']=_[_0x6211('0x2f')](_0x371956[_0x6211('0x30')],_0x371956[_0x6211('0x2d')]);_0x28721a[_0x6211('0x31')]=_[_0x6211('0x2f')](_0x371956['model'],qs[_0x6211('0x41')](_0x334e87['query'][_0x6211('0x41')]));_0x28721a['attributes']=_0x28721a[_0x6211('0x31')][_0x6211('0x32')]?_0x28721a['attributes']:_0x371956[_0x6211('0x30')];if(_0x334e87[_0x6211('0x2d')][_0x6211('0x42')]){_0x28721a['include']=[{'all':!![]}];}_0x28721a=_[_0x6211('0x39')]({},_0x28721a,_0x334e87['options']);return db[_0x6211('0x2a')]['find'](_0x28721a)[_0x6211('0x23')](handleEntityNotFound(_0x476456,null))['then'](respondWithResult(_0x476456,null))[_0x6211('0x3e')](handleError(_0x476456,null));};exports[_0x6211('0x43')]=function(_0x1cee06,_0x2111fd){return db[_0x6211('0x2a')][_0x6211('0x43')](_0x1cee06[_0x6211('0x44')],{})[_0x6211('0x23')](respondWithResult(_0x2111fd,0xc9))[_0x6211('0x3e')](handleError(_0x2111fd,null));};exports[_0x6211('0x22')]=function(_0x501c6d,_0x2bc4ae){if(_0x501c6d[_0x6211('0x44')]['id']){delete _0x501c6d[_0x6211('0x44')]['id'];}return db[_0x6211('0x2a')]['find']({'where':{'id':_0x501c6d[_0x6211('0x45')]['id']}})[_0x6211('0x23')](handleEntityNotFound(_0x2bc4ae,null))['then'](saveUpdates(_0x501c6d[_0x6211('0x44')],null))['then'](respondWithResult(_0x2bc4ae,null))['catch'](handleError(_0x2bc4ae,null));};exports[_0x6211('0x46')]=function(_0x25d2c8,_0x5aae45){return db[_0x6211('0x2a')][_0x6211('0x47')]({'where':{'id':_0x25d2c8[_0x6211('0x45')]['id']}})[_0x6211('0x23')](handleEntityNotFound(_0x5aae45,null))[_0x6211('0x23')](removeEntity(_0x5aae45,null))['catch'](handleError(_0x5aae45,null));};exports[_0x6211('0x48')]=function(_0x8a364a,_0x1901d7){return db['FaxQueueReport'][_0x6211('0x48')]()['then'](respondWithResult(_0x1901d7,null))[_0x6211('0x3e')](handleError(_0x1901d7,null));};
\ No newline at end of file
+var _0x13c0=['sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','then','destroy','error','stack','name','index','map','FaxQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x21711d,_0x5ae57d){var _0x25ae36=function(_0x1045b0){while(--_0x1045b0){_0x21711d['push'](_0x21711d['shift']());}};_0x25ae36(++_0x5ae57d);}(_0x13c0,0x79));var _0x013c=function(_0x4da690,_0x12d136){_0x4da690=_0x4da690-0x0;var _0x263c53=_0x13c0[_0x4da690];return _0x263c53;};'use strict';var emlformat=require(_0x013c('0x0'));var rimraf=require(_0x013c('0x1'));var zipdir=require(_0x013c('0x2'));var jsonpatch=require(_0x013c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x013c('0x4'));var util=require(_0x013c('0x5'));var path=require(_0x013c('0x6'));var sox=require(_0x013c('0x7'));var csv=require(_0x013c('0x8'));var ejs=require(_0x013c('0x9'));var fs=require('fs');var fs_extra=require(_0x013c('0xa'));var _=require(_0x013c('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x013c('0xc'));var toCsv=require(_0x013c('0x8'));var querystring=require('querystring');var Papa=require(_0x013c('0xd'));var Redis=require(_0x013c('0xe'));var authService=require(_0x013c('0xf'));var qs=require(_0x013c('0x10'));var as=require(_0x013c('0x11'));var hardwareService=require(_0x013c('0x12'));var logger=require(_0x013c('0x13'))(_0x013c('0x14'));var utils=require(_0x013c('0x15'));var config=require(_0x013c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xce456f,_0x4631c5){_0x4631c5=_0x4631c5||0xcc;return function(_0x1ee348){if(_0x1ee348){return _0xce456f[_0x013c('0x17')](_0x4631c5);}return _0xce456f['status'](_0x4631c5)[_0x013c('0x18')]();};}function respondWithResult(_0x2313de,_0xcfe81a){_0xcfe81a=_0xcfe81a||0xc8;return function(_0x17b085){if(_0x17b085){return _0x2313de[_0x013c('0x19')](_0xcfe81a)['json'](_0x17b085);}};}function respondWithFilteredResult(_0x307f34,_0x1c2e11){return function(_0x84244){if(_0x84244){var _0x92c3ca=typeof _0x1c2e11[_0x013c('0x1a')]===_0x013c('0x1b')&&typeof _0x1c2e11[_0x013c('0x1c')]===_0x013c('0x1b');var _0x246f11=_0x84244[_0x013c('0x1d')];var _0x34d59f=_0x92c3ca?0x0:_0x1c2e11[_0x013c('0x1a')];var _0x25eb26=_0x92c3ca?_0x84244['count']:_0x1c2e11['offset']+_0x1c2e11[_0x013c('0x1c')];var _0x153b0a;if(_0x25eb26>=_0x246f11){_0x25eb26=_0x246f11;_0x153b0a=0xc8;}else{_0x153b0a=0xce;}_0x307f34['status'](_0x153b0a);return _0x307f34[_0x013c('0x1e')](_0x013c('0x1f'),_0x34d59f+'-'+_0x25eb26+'/'+_0x246f11)[_0x013c('0x20')](_0x84244);}return null;};}function patchUpdates(_0x38bac2){return function(_0xb87452){try{jsonpatch['apply'](_0xb87452,_0x38bac2,!![]);}catch(_0xb039bc){return BPromise[_0x013c('0x21')](_0xb039bc);}return _0xb87452['save']();};}function saveUpdates(_0x1df9d2,_0x82f9f1){return function(_0x53fbbd){if(_0x53fbbd){return _0x53fbbd['update'](_0x1df9d2)[_0x013c('0x22')](function(_0x1996e6){return _0x1996e6;});}return null;};}function removeEntity(_0x2509f4,_0x447c0b){return function(_0x20aff2){if(_0x20aff2){return _0x20aff2[_0x013c('0x23')]()[_0x013c('0x22')](function(){_0x2509f4[_0x013c('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x468fe7,_0x187fd4){return function(_0x1952d0){if(!_0x1952d0){_0x468fe7[_0x013c('0x17')](0x194);}return _0x1952d0;};}function handleError(_0x2c7a76,_0x3cd072){_0x3cd072=_0x3cd072||0x1f4;return function(_0x584ddf){logger[_0x013c('0x24')](_0x584ddf[_0x013c('0x25')]);if(_0x584ddf[_0x013c('0x26')]){delete _0x584ddf['name'];}_0x2c7a76[_0x013c('0x19')](_0x3cd072)['send'](_0x584ddf);};}exports[_0x013c('0x27')]=function(_0x455b88,_0x5534ee){var _0x353cb7={},_0x32da8c={},_0x16cdad={'count':0x0,'rows':[]};var _0x43dc43=_[_0x013c('0x28')](db[_0x013c('0x29')][_0x013c('0x2a')],function(_0x1f0aab){return{'name':_0x1f0aab[_0x013c('0x2b')],'type':_0x1f0aab[_0x013c('0x2c')]['key']};});_0x32da8c[_0x013c('0x2d')]=_[_0x013c('0x28')](_0x43dc43,_0x013c('0x26'));_0x32da8c[_0x013c('0x2e')]=_[_0x013c('0x2f')](_0x455b88['query']);_0x32da8c[_0x013c('0x30')]=_[_0x013c('0x31')](_0x32da8c[_0x013c('0x2d')],_0x32da8c[_0x013c('0x2e')]);_0x353cb7['attributes']=_['intersection'](_0x32da8c['model'],qs[_0x013c('0x32')](_0x455b88[_0x013c('0x2e')][_0x013c('0x32')]));_0x353cb7[_0x013c('0x33')]=_0x353cb7[_0x013c('0x33')][_0x013c('0x34')]?_0x353cb7[_0x013c('0x33')]:_0x32da8c[_0x013c('0x2d')];if(!_0x455b88[_0x013c('0x2e')][_0x013c('0x35')](_0x013c('0x36'))){_0x353cb7[_0x013c('0x1c')]=qs['limit'](_0x455b88['query'][_0x013c('0x1c')]);_0x353cb7[_0x013c('0x1a')]=qs[_0x013c('0x1a')](_0x455b88[_0x013c('0x2e')]['offset']);}_0x353cb7[_0x013c('0x37')]=qs[_0x013c('0x38')](_0x455b88[_0x013c('0x2e')][_0x013c('0x38')]);_0x353cb7['where']=qs[_0x013c('0x30')](_[_0x013c('0x39')](_0x455b88['query'],_0x32da8c[_0x013c('0x30')]),_0x43dc43);if(_0x455b88['query'][_0x013c('0x3a')]){_0x353cb7[_0x013c('0x3b')]=_[_0x013c('0x3c')](_0x353cb7[_0x013c('0x3b')],{'$or':_['map'](_0x43dc43,function(_0x3f2fda){if(_0x3f2fda[_0x013c('0x2c')]!==_0x013c('0x3d')){var _0x2f6044={};_0x2f6044[_0x3f2fda[_0x013c('0x26')]]={'$like':'%'+_0x455b88[_0x013c('0x2e')][_0x013c('0x3a')]+'%'};return _0x2f6044;}})});}_0x353cb7=_[_0x013c('0x3c')]({},_0x353cb7,_0x455b88[_0x013c('0x3e')]);var _0x4bd189={'where':_0x353cb7[_0x013c('0x3b')]};return db[_0x013c('0x29')]['count'](_0x4bd189)[_0x013c('0x22')](function(_0x1cf2e5){_0x16cdad['count']=_0x1cf2e5;if(_0x455b88[_0x013c('0x2e')][_0x013c('0x3f')]){_0x353cb7[_0x013c('0x40')]=[{'all':!![]}];}return db[_0x013c('0x29')][_0x013c('0x41')](_0x353cb7);})['then'](function(_0x3d0ffd){_0x16cdad['rows']=_0x3d0ffd;return _0x16cdad;})['then'](respondWithFilteredResult(_0x5534ee,_0x353cb7))['catch'](handleError(_0x5534ee,null));};exports['show']=function(_0xc25f45,_0x3d7790){var _0x370a0b={'raw':!![],'where':{'id':_0xc25f45[_0x013c('0x42')]['id']}},_0x49db0c={};_0x49db0c[_0x013c('0x2d')]=_[_0x013c('0x2f')](db[_0x013c('0x29')][_0x013c('0x2a')]);_0x49db0c['query']=_[_0x013c('0x2f')](_0xc25f45[_0x013c('0x2e')]);_0x49db0c['filters']=_['intersection'](_0x49db0c['model'],_0x49db0c['query']);_0x370a0b[_0x013c('0x33')]=_[_0x013c('0x31')](_0x49db0c['model'],qs[_0x013c('0x32')](_0xc25f45[_0x013c('0x2e')]['fields']));_0x370a0b[_0x013c('0x33')]=_0x370a0b[_0x013c('0x33')][_0x013c('0x34')]?_0x370a0b[_0x013c('0x33')]:_0x49db0c[_0x013c('0x2d')];if(_0xc25f45[_0x013c('0x2e')][_0x013c('0x3f')]){_0x370a0b[_0x013c('0x40')]=[{'all':!![]}];}_0x370a0b=_['merge']({},_0x370a0b,_0xc25f45[_0x013c('0x3e')]);return db['FaxQueueReport'][_0x013c('0x43')](_0x370a0b)['then'](handleEntityNotFound(_0x3d7790,null))['then'](respondWithResult(_0x3d7790,null))[_0x013c('0x44')](handleError(_0x3d7790,null));};exports['create']=function(_0x21cc50,_0x35f81){return db[_0x013c('0x29')][_0x013c('0x45')](_0x21cc50['body'],{})['then'](respondWithResult(_0x35f81,0xc9))['catch'](handleError(_0x35f81,null));};exports['update']=function(_0x7f4350,_0x5daeda){if(_0x7f4350[_0x013c('0x46')]['id']){delete _0x7f4350[_0x013c('0x46')]['id'];}return db[_0x013c('0x29')][_0x013c('0x43')]({'where':{'id':_0x7f4350[_0x013c('0x42')]['id']}})[_0x013c('0x22')](handleEntityNotFound(_0x5daeda,null))[_0x013c('0x22')](saveUpdates(_0x7f4350[_0x013c('0x46')],null))[_0x013c('0x22')](respondWithResult(_0x5daeda,null))['catch'](handleError(_0x5daeda,null));};exports[_0x013c('0x23')]=function(_0x5163d8,_0x4ebad8){return db[_0x013c('0x29')]['find']({'where':{'id':_0x5163d8['params']['id']}})[_0x013c('0x22')](handleEntityNotFound(_0x4ebad8,null))[_0x013c('0x22')](removeEntity(_0x4ebad8,null))['catch'](handleError(_0x4ebad8,null));};exports[_0x013c('0x47')]=function(_0x369e6a,_0x33bbe8){return db['FaxQueueReport'][_0x013c('0x47')]()[_0x013c('0x22')](respondWithResult(_0x33bbe8,null))[_0x013c('0x44')](handleError(_0x33bbe8,null));};
\ No newline at end of file
index 9fd1532..b8d4fd6 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(_0x10c88d,_0x3cd6ee){var _0x5efa9c=function(_0x15c547){while(--_0x15c547){_0x10c88d['push'](_0x10c88d['shift']());}};_0x5efa9c(++_0x3cd6ee);}(_0x53ec,0x192));var _0xc53e=function(_0x47fb54,_0x28698c){_0x47fb54=_0x47fb54-0x0;var _0x1139a7=_0x53ec[_0x47fb54];return _0x1139a7;};'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 _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','util'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x814b,0x1a2));var _0xb814=function(_0x14ea32,_0x262909){_0x14ea32=_0x14ea32-0x0;var _0x137bbb=_0x814b[_0x14ea32];return _0x137bbb;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index a9e40b1..a61239e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f70=['result','catch','CreateFaxQueueReport','FaxQueueReport','body','options','raw','debug','UpdateFaxQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x5331ab,_0xe61f72){var _0x35d457=function(_0x59272c){while(--_0x59272c){_0x5331ab['push'](_0x5331ab['shift']());}};_0x35d457(++_0xe61f72);}(_0x1f70,0x1ed));var _0x01f7=function(_0xd9dda1,_0x260e39){_0xd9dda1=_0xd9dda1-0x0;var _0x57b03b=_0x1f70[_0xd9dda1];return _0x57b03b;};'use strict';var _=require(_0x01f7('0x0'));var util=require(_0x01f7('0x1'));var moment=require(_0x01f7('0x2'));var BPromise=require(_0x01f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x01f7('0x4'))['db'];var utils=require(_0x01f7('0x5'));var logger=require(_0x01f7('0x6'))(_0x01f7('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x01f7('0x8')][_0x01f7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fe226,_0x2419a7,_0x38c30b){return new BPromise(function(_0x4a7794,_0x5a183e){return client['request'](_0x1fe226,_0x38c30b)[_0x01f7('0xa')](function(_0x3914f8){logger[_0x01f7('0xb')](_0x01f7('0xc'),_0x2419a7,_0x01f7('0xd'));logger['debug'](_0x01f7('0xe'),_0x2419a7,'request\x20sent',JSON[_0x01f7('0xf')](_0x3914f8));if(_0x3914f8[_0x01f7('0x10')]){if(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x11')]===0x1f4){logger[_0x01f7('0x10')](_0x01f7('0xc'),_0x2419a7,_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);return _0x5a183e(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);}logger['error']('FaxQueueReport,\x20%s,\x20%s',_0x2419a7,_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);return _0x4a7794(_0x3914f8[_0x01f7('0x10')][_0x01f7('0x12')]);}else{logger['info'](_0x01f7('0xc'),_0x2419a7,'request\x20sent');_0x4a7794(_0x3914f8[_0x01f7('0x13')]['message']);}})[_0x01f7('0x14')](function(_0x21e2dc){logger[_0x01f7('0x10')](_0x01f7('0xc'),_0x2419a7,_0x21e2dc);_0x5a183e(_0x21e2dc);});});}exports[_0x01f7('0x15')]=function(_0x3f73f7){var _0x4b7cb0=this;return new Promise(function(_0x3a0c79,_0x3f7962){return db[_0x01f7('0x16')]['create'](_0x3f73f7[_0x01f7('0x17')],{'raw':_0x3f73f7['options']?_0x3f73f7[_0x01f7('0x18')][_0x01f7('0x19')]===undefined?!![]:![]:!![]})[_0x01f7('0xa')](function(_0x4413c6){logger[_0x01f7('0xb')](_0x01f7('0x15'),_0x3f73f7);logger[_0x01f7('0x1a')](_0x01f7('0x15'),_0x3f73f7,JSON[_0x01f7('0xf')](_0x4413c6));_0x3a0c79(_0x4413c6);})[_0x01f7('0x14')](function(_0x2f90fc){logger['error'](_0x01f7('0x15'),_0x2f90fc[_0x01f7('0x12')],_0x3f73f7);_0x3f7962(_0x4b7cb0['error'](0x1f4,_0x2f90fc[_0x01f7('0x12')]));});});};exports[_0x01f7('0x1b')]=function(_0x3cda20){var _0x77effa=this;return new Promise(function(_0x39e821,_0x1512db){return db[_0x01f7('0x16')][_0x01f7('0x1c')](_0x3cda20[_0x01f7('0x17')],{'raw':_0x3cda20['options']?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3cda20[_0x01f7('0x18')]?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1d')]||null:null,'attributes':_0x3cda20[_0x01f7('0x18')]?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1e')]||null:null,'limit':_0x3cda20['options']?_0x3cda20[_0x01f7('0x18')][_0x01f7('0x1f')]||null:null})[_0x01f7('0xa')](function(_0xbd9f13){logger[_0x01f7('0xb')](_0x01f7('0x1b'),_0x3cda20);logger['debug'](_0x01f7('0x1b'),_0x3cda20,JSON[_0x01f7('0xf')](_0xbd9f13));_0x39e821(_0xbd9f13);})[_0x01f7('0x14')](function(_0x3c2e6c){logger['error'](_0x01f7('0x1b'),_0x3c2e6c[_0x01f7('0x12')],_0x3cda20);_0x1512db(_0x77effa[_0x01f7('0x10')](0x1f4,_0x3c2e6c['message']));});});};
\ No newline at end of file
+var _0x0fcc=['ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x3400fa,_0x4c9236){var _0x449dbc=function(_0x515012){while(--_0x515012){_0x3400fa['push'](_0x3400fa['shift']());}};_0x449dbc(++_0x4c9236);}(_0x0fcc,0x124));var _0xc0fc=function(_0x46ae5a,_0x2a38d0){_0x46ae5a=_0x46ae5a-0x0;var _0x434986=_0x0fcc[_0x46ae5a];return _0x434986;};'use strict';var _=require(_0xc0fc('0x0'));var util=require(_0xc0fc('0x1'));var moment=require(_0xc0fc('0x2'));var BPromise=require(_0xc0fc('0x3'));var rs=require(_0xc0fc('0x4'));var fs=require('fs');var Redis=require(_0xc0fc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc0fc('0x6'));var logger=require('../../config/logger')(_0xc0fc('0x7'));var config=require(_0xc0fc('0x8'));var jayson=require(_0xc0fc('0x9'));var client=jayson[_0xc0fc('0xa')][_0xc0fc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x438e92,_0x1058df,_0x43b3eb){return new BPromise(function(_0x1419cb,_0x1d76ea){return client['request'](_0x438e92,_0x43b3eb)[_0xc0fc('0xc')](function(_0x356057){logger[_0xc0fc('0xd')](_0xc0fc('0xe'),_0x1058df,_0xc0fc('0xf'));logger[_0xc0fc('0x10')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x1058df,_0xc0fc('0xf'),JSON[_0xc0fc('0x11')](_0x356057));if(_0x356057[_0xc0fc('0x12')]){if(_0x356057[_0xc0fc('0x12')][_0xc0fc('0x13')]===0x1f4){logger['error'](_0xc0fc('0xe'),_0x1058df,_0x356057[_0xc0fc('0x12')]['message']);return _0x1d76ea(_0x356057[_0xc0fc('0x12')][_0xc0fc('0x14')]);}logger[_0xc0fc('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x1058df,_0x356057[_0xc0fc('0x12')][_0xc0fc('0x14')]);return _0x1419cb(_0x356057[_0xc0fc('0x12')][_0xc0fc('0x14')]);}else{logger[_0xc0fc('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x1058df,'request\x20sent');_0x1419cb(_0x356057['result']['message']);}})[_0xc0fc('0x15')](function(_0x574b9a){logger[_0xc0fc('0x12')]('FaxQueueReport,\x20%s,\x20%s',_0x1058df,_0x574b9a);_0x1d76ea(_0x574b9a);});});}exports[_0xc0fc('0x16')]=function(_0x305214){var _0x26dfb0=this;return new Promise(function(_0x3e24b3,_0x16f6dd){return db[_0xc0fc('0x17')][_0xc0fc('0x18')](_0x305214[_0xc0fc('0x19')],{'raw':_0x305214['options']?_0x305214[_0xc0fc('0x1a')][_0xc0fc('0x1b')]===undefined?!![]:![]:!![]})[_0xc0fc('0xc')](function(_0x5af963){logger[_0xc0fc('0xd')]('CreateFaxQueueReport',_0x305214);logger[_0xc0fc('0x10')](_0xc0fc('0x16'),_0x305214,JSON[_0xc0fc('0x11')](_0x5af963));_0x3e24b3(_0x5af963);})[_0xc0fc('0x15')](function(_0x17a00c){logger[_0xc0fc('0x12')](_0xc0fc('0x16'),_0x17a00c[_0xc0fc('0x14')],_0x305214);_0x16f6dd(_0x26dfb0[_0xc0fc('0x12')](0x1f4,_0x17a00c[_0xc0fc('0x14')]));});});};exports[_0xc0fc('0x1c')]=function(_0x21e9e5){var _0xf81e9b=this;return new Promise(function(_0x4b3f4a,_0x30a350){return db[_0xc0fc('0x17')][_0xc0fc('0x1d')](_0x21e9e5[_0xc0fc('0x19')],{'raw':_0x21e9e5['options']?_0x21e9e5[_0xc0fc('0x1a')][_0xc0fc('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e9e5[_0xc0fc('0x1a')]?_0x21e9e5['options'][_0xc0fc('0x1e')]||null:null,'attributes':_0x21e9e5['options']?_0x21e9e5[_0xc0fc('0x1a')][_0xc0fc('0x1f')]||null:null,'limit':_0x21e9e5[_0xc0fc('0x1a')]?_0x21e9e5[_0xc0fc('0x1a')][_0xc0fc('0x20')]||null:null})[_0xc0fc('0xc')](function(_0x23c3e1){logger['info']('UpdateFaxQueueReport',_0x21e9e5);logger[_0xc0fc('0x10')](_0xc0fc('0x1c'),_0x21e9e5,JSON[_0xc0fc('0x11')](_0x23c3e1));_0x4b3f4a(_0x23c3e1);})[_0xc0fc('0x15')](function(_0x1aab73){logger[_0xc0fc('0x12')](_0xc0fc('0x1c'),_0x1aab73[_0xc0fc('0x14')],_0x21e9e5);_0x30a350(_0xf81e9b[_0xc0fc('0x12')](0x1f4,_0x1aab73['message']));});});};
\ No newline at end of file
index 2654fd0..83fc453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b2=['Router','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put','update','delete','destroy','path','connect-timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf8b2,0xfa));var _0x2f8b=function(_0x2af276,_0xb15ec5){_0x2af276=_0x2af276-0x0;var _0x4c586e=_0xf8b2[_0x2af276];return _0x4c586e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2f8b('0x0'));var timeout=require(_0x2f8b('0x1'));var express=require('express');var router=express[_0x2f8b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2f8b('0x3'));var interaction=require(_0x2f8b('0x4'));var config=require('../../config/environment');var controller=require(_0x2f8b('0x5'));router['get']('/',auth[_0x2f8b('0x6')](),controller[_0x2f8b('0x7')]);router[_0x2f8b('0x8')](_0x2f8b('0x9'),auth[_0x2f8b('0x6')](),controller[_0x2f8b('0xa')]);router[_0x2f8b('0x8')](_0x2f8b('0xb'),auth[_0x2f8b('0x6')](),controller[_0x2f8b('0xc')]);router[_0x2f8b('0xd')]('/',auth[_0x2f8b('0x6')](),controller['create']);router[_0x2f8b('0xe')](_0x2f8b('0xb'),auth['isAuthenticated'](),controller[_0x2f8b('0xf')]);router[_0x2f8b('0x10')](_0x2f8b('0xb'),auth['isAuthenticated'](),controller[_0x2f8b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xafde=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','get'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0xafde,0x12a));var _0xeafd=function(_0x310cb2,_0x543391){_0x310cb2=_0x310cb2-0x0;var _0x58a0d7=_0xafde[_0x310cb2];return _0x58a0d7;};'use strict';var multer=require('multer');var util=require(_0xeafd('0x0'));var path=require(_0xeafd('0x1'));var timeout=require(_0xeafd('0x2'));var express=require('express');var router=express[_0xeafd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xeafd('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./faxQueueReport.controller');router[_0xeafd('0x5')]('/',auth[_0xeafd('0x6')](),controller[_0xeafd('0x7')]);router[_0xeafd('0x5')](_0xeafd('0x8'),auth[_0xeafd('0x6')](),controller[_0xeafd('0x9')]);router['get'](_0xeafd('0xa'),auth['isAuthenticated'](),controller[_0xeafd('0xb')]);router[_0xeafd('0xc')]('/',auth[_0xeafd('0x6')](),controller[_0xeafd('0xd')]);router[_0xeafd('0xe')](_0xeafd('0xa'),auth[_0xeafd('0x6')](),controller[_0xeafd('0xf')]);router[_0xeafd('0x10')](_0xeafd('0xa'),auth[_0xeafd('0x6')](),controller[_0xeafd('0x11')]);module[_0xeafd('0x12')]=router;
\ No newline at end of file
index 53d735e..0d349ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x63d462,_0x11c2ca){var _0x136f88=function(_0x4c3519){while(--_0x4c3519){_0x63d462['push'](_0x63d462['shift']());}};_0x136f88(++_0x11c2ca);}(_0xf4eb,0xec));var _0xbf4e=function(_0x10d0a9,_0x1cdca7){_0x10d0a9=_0x10d0a9-0x0;var _0x3a9603=_0xf4eb[_0x10d0a9];return _0x3a9603;};'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 _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x125798,_0x22a9c4){var _0x1b4ea6=function(_0x50766d){while(--_0x50766d){_0x125798['push'](_0x125798['shift']());}};_0x1b4ea6(++_0x22a9c4);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x14a4d0,_0x4c7068){_0x14a4d0=_0x14a4d0-0x0;var _0x18c8ab=_0xf3cd[_0x14a4d0];return _0x18c8ab;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 607b3cf..5572c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4e=['moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','error','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','attributes','fields','length','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','intersection','find','catch','create','body','describe','rimraf','fast-json-patch','request-promise'];(function(_0x1d1cc1,_0x485087){var _0x44d301=function(_0x1d1dbc){while(--_0x1d1dbc){_0x1d1cc1['push'](_0x1d1cc1['shift']());}};_0x44d301(++_0x485087);}(_0x3c4e,0x125));var _0xe3c4=function(_0x19d7e9,_0x359dd7){_0x19d7e9=_0x19d7e9-0x0;var _0x3b74db=_0x3c4e[_0x19d7e9];return _0x3b74db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe3c4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe3c4('0x1'));var rp=require(_0xe3c4('0x2'));var moment=require(_0xe3c4('0x3'));var BPromise=require(_0xe3c4('0x4'));var Mustache=require('mustache');var util=require(_0xe3c4('0x5'));var path=require(_0xe3c4('0x6'));var sox=require(_0xe3c4('0x7'));var csv=require(_0xe3c4('0x8'));var ejs=require(_0xe3c4('0x9'));var fs=require('fs');var fs_extra=require(_0xe3c4('0xa'));var _=require(_0xe3c4('0xb'));var squel=require(_0xe3c4('0xc'));var crypto=require('crypto');var jsforce=require(_0xe3c4('0xd'));var deskjs=require(_0xe3c4('0xe'));var toCsv=require(_0xe3c4('0x8'));var querystring=require('querystring');var Papa=require(_0xe3c4('0xf'));var Redis=require('ioredis');var authService=require(_0xe3c4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe3c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe3c4('0x12'))(_0xe3c4('0x13'));var utils=require(_0xe3c4('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xe3c4('0x15'));var db=require(_0xe3c4('0x16'))['db'];function respondWithStatusCode(_0x10d356,_0xb6008c){_0xb6008c=_0xb6008c||0xcc;return function(_0xacb4e7){if(_0xacb4e7){return _0x10d356[_0xe3c4('0x17')](_0xb6008c);}return _0x10d356[_0xe3c4('0x18')](_0xb6008c)[_0xe3c4('0x19')]();};}function respondWithResult(_0x55eab4,_0x2130c1){_0x2130c1=_0x2130c1||0xc8;return function(_0x177307){if(_0x177307){return _0x55eab4[_0xe3c4('0x18')](_0x2130c1)['json'](_0x177307);}};}function respondWithFilteredResult(_0x2d2159,_0x54523b){return function(_0x1bbfaa){if(_0x1bbfaa){var _0x25f04f=typeof _0x54523b[_0xe3c4('0x1a')]===_0xe3c4('0x1b')&&typeof _0x54523b[_0xe3c4('0x1c')]===_0xe3c4('0x1b');var _0x4c1ec3=_0x1bbfaa[_0xe3c4('0x1d')];var _0x252956=_0x25f04f?0x0:_0x54523b[_0xe3c4('0x1a')];var _0x35490a=_0x25f04f?_0x1bbfaa['count']:_0x54523b[_0xe3c4('0x1a')]+_0x54523b[_0xe3c4('0x1c')];var _0x2d7b40;if(_0x35490a>=_0x4c1ec3){_0x35490a=_0x4c1ec3;_0x2d7b40=0xc8;}else{_0x2d7b40=0xce;}_0x2d2159[_0xe3c4('0x18')](_0x2d7b40);return _0x2d2159[_0xe3c4('0x1e')](_0xe3c4('0x1f'),_0x252956+'-'+_0x35490a+'/'+_0x4c1ec3)[_0xe3c4('0x20')](_0x1bbfaa);}return null;};}function patchUpdates(_0x5a0dcf){return function(_0x440da3){try{jsonpatch['apply'](_0x440da3,_0x5a0dcf,!![]);}catch(_0x380fdc){return BPromise['reject'](_0x380fdc);}return _0x440da3[_0xe3c4('0x21')]();};}function saveUpdates(_0x5248db,_0x3b51b3){return function(_0x131f5c){if(_0x131f5c){return _0x131f5c[_0xe3c4('0x22')](_0x5248db)[_0xe3c4('0x23')](function(_0x3d926a){return _0x3d926a;});}return null;};}function removeEntity(_0x221f71,_0xca3d51){return function(_0x19aad5){if(_0x19aad5){return _0x19aad5[_0xe3c4('0x24')]()[_0xe3c4('0x23')](function(){_0x221f71['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28e249,_0xb7aac9){return function(_0x5ce727){if(!_0x5ce727){_0x28e249[_0xe3c4('0x17')](0x194);}return _0x5ce727;};}function handleError(_0x2c4bb3,_0x4086df){_0x4086df=_0x4086df||0x1f4;return function(_0x5c5fd7){logger[_0xe3c4('0x25')](_0x5c5fd7['stack']);if(_0x5c5fd7[_0xe3c4('0x26')]){delete _0x5c5fd7[_0xe3c4('0x26')];}_0x2c4bb3['status'](_0x4086df)[_0xe3c4('0x27')](_0x5c5fd7);};}exports[_0xe3c4('0x28')]=function(_0x16c3fe,_0x1b621e){var _0x886f17={},_0x29875d={},_0x59faeb={'count':0x0,'rows':[]};var _0x71af94=_[_0xe3c4('0x29')](db[_0xe3c4('0x2a')][_0xe3c4('0x2b')],function(_0x2d25e8){return{'name':_0x2d25e8[_0xe3c4('0x2c')],'type':_0x2d25e8[_0xe3c4('0x2d')]['key']};});_0x29875d[_0xe3c4('0x2e')]=_[_0xe3c4('0x29')](_0x71af94,'name');_0x29875d[_0xe3c4('0x2f')]=_['keys'](_0x16c3fe[_0xe3c4('0x2f')]);_0x29875d['filters']=_['intersection'](_0x29875d[_0xe3c4('0x2e')],_0x29875d['query']);_0x886f17[_0xe3c4('0x30')]=_['intersection'](_0x29875d[_0xe3c4('0x2e')],qs[_0xe3c4('0x31')](_0x16c3fe[_0xe3c4('0x2f')]['fields']));_0x886f17[_0xe3c4('0x30')]=_0x886f17['attributes'][_0xe3c4('0x32')]?_0x886f17[_0xe3c4('0x30')]:_0x29875d[_0xe3c4('0x2e')];if(!_0x16c3fe['query']['hasOwnProperty'](_0xe3c4('0x33'))){_0x886f17[_0xe3c4('0x1c')]=qs[_0xe3c4('0x1c')](_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x1c')]);_0x886f17['offset']=qs[_0xe3c4('0x1a')](_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x1a')]);}_0x886f17[_0xe3c4('0x34')]=qs[_0xe3c4('0x35')](_0x16c3fe[_0xe3c4('0x2f')]['sort']);_0x886f17[_0xe3c4('0x36')]=qs[_0xe3c4('0x37')](_[_0xe3c4('0x38')](_0x16c3fe[_0xe3c4('0x2f')],_0x29875d['filters']),_0x71af94);if(_0x16c3fe['query']['filter']){_0x886f17[_0xe3c4('0x36')]=_['merge'](_0x886f17['where'],{'$or':_[_0xe3c4('0x29')](_0x71af94,function(_0x26139f){if(_0x26139f[_0xe3c4('0x2d')]!==_0xe3c4('0x39')){var _0x139324={};_0x139324[_0x26139f[_0xe3c4('0x26')]]={'$like':'%'+_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x3a')]+'%'};return _0x139324;}})});}_0x886f17=_[_0xe3c4('0x3b')]({},_0x886f17,_0x16c3fe[_0xe3c4('0x3c')]);var _0x490fe6={'where':_0x886f17[_0xe3c4('0x36')]};return db[_0xe3c4('0x2a')][_0xe3c4('0x1d')](_0x490fe6)[_0xe3c4('0x23')](function(_0x4e2245){_0x59faeb[_0xe3c4('0x1d')]=_0x4e2245;if(_0x16c3fe[_0xe3c4('0x2f')][_0xe3c4('0x3d')]){_0x886f17[_0xe3c4('0x3e')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xe3c4('0x3f')](_0x886f17);})[_0xe3c4('0x23')](function(_0x4858ef){_0x59faeb[_0xe3c4('0x40')]=_0x4858ef;return _0x59faeb;})['then'](respondWithFilteredResult(_0x1b621e,_0x886f17))['catch'](handleError(_0x1b621e,null));};exports[_0xe3c4('0x41')]=function(_0x278ffb,_0x356ed0){var _0x1b7e47={'raw':!![],'where':{'id':_0x278ffb[_0xe3c4('0x42')]['id']}},_0xb55b52={};_0xb55b52[_0xe3c4('0x2e')]=_[_0xe3c4('0x43')](db[_0xe3c4('0x2a')][_0xe3c4('0x2b')]);_0xb55b52[_0xe3c4('0x2f')]=_['keys'](_0x278ffb[_0xe3c4('0x2f')]);_0xb55b52[_0xe3c4('0x37')]=_[_0xe3c4('0x44')](_0xb55b52['model'],_0xb55b52['query']);_0x1b7e47[_0xe3c4('0x30')]=_[_0xe3c4('0x44')](_0xb55b52[_0xe3c4('0x2e')],qs[_0xe3c4('0x31')](_0x278ffb[_0xe3c4('0x2f')][_0xe3c4('0x31')]));_0x1b7e47[_0xe3c4('0x30')]=_0x1b7e47['attributes'][_0xe3c4('0x32')]?_0x1b7e47[_0xe3c4('0x30')]:_0xb55b52['model'];if(_0x278ffb['query']['includeAll']){_0x1b7e47[_0xe3c4('0x3e')]=[{'all':!![]}];}_0x1b7e47=_[_0xe3c4('0x3b')]({},_0x1b7e47,_0x278ffb[_0xe3c4('0x3c')]);return db[_0xe3c4('0x2a')][_0xe3c4('0x45')](_0x1b7e47)[_0xe3c4('0x23')](handleEntityNotFound(_0x356ed0,null))['then'](respondWithResult(_0x356ed0,null))[_0xe3c4('0x46')](handleError(_0x356ed0,null));};exports['create']=function(_0x20155a,_0x8388d0){return db[_0xe3c4('0x2a')][_0xe3c4('0x47')](_0x20155a[_0xe3c4('0x48')],{})[_0xe3c4('0x23')](respondWithResult(_0x8388d0,0xc9))['catch'](handleError(_0x8388d0,null));};exports[_0xe3c4('0x22')]=function(_0x298ecd,_0x185cc9){if(_0x298ecd[_0xe3c4('0x48')]['id']){delete _0x298ecd[_0xe3c4('0x48')]['id'];}return db['FaxTransferReport'][_0xe3c4('0x45')]({'where':{'id':_0x298ecd[_0xe3c4('0x42')]['id']}})['then'](handleEntityNotFound(_0x185cc9,null))['then'](saveUpdates(_0x298ecd[_0xe3c4('0x48')],null))[_0xe3c4('0x23')](respondWithResult(_0x185cc9,null))[_0xe3c4('0x46')](handleError(_0x185cc9,null));};exports[_0xe3c4('0x24')]=function(_0x27c5e4,_0x465738){return db[_0xe3c4('0x2a')][_0xe3c4('0x45')]({'where':{'id':_0x27c5e4[_0xe3c4('0x42')]['id']}})[_0xe3c4('0x23')](handleEntityNotFound(_0x465738,null))[_0xe3c4('0x23')](removeEntity(_0x465738,null))[_0xe3c4('0x46')](handleError(_0x465738,null));};exports[_0xe3c4('0x49')]=function(_0x38242a,_0x40cdc1){return db[_0xe3c4('0x2a')]['describe']()[_0xe3c4('0x23')](respondWithResult(_0x40cdc1,null))['catch'](handleError(_0x40cdc1,null));};
\ No newline at end of file
+var _0x8e5e=['set','Content-Range','reject','save','then','destroy','error','name','send','index','map','FaxTransferReport','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','options','includeAll','findAll','rows','catch','params','rawAttributes','intersection','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0xb66224,_0x3a3f2f){var _0x346365=function(_0x51de16){while(--_0x51de16){_0xb66224['push'](_0xb66224['shift']());}};_0x346365(++_0x3a3f2f);}(_0x8e5e,0x1a2));var _0xe8e5=function(_0x3fbf3d,_0x3a80f4){_0x3fbf3d=_0x3fbf3d-0x0;var _0x2ff7a8=_0x8e5e[_0x3fbf3d];return _0x2ff7a8;};'use strict';var emlformat=require(_0xe8e5('0x0'));var rimraf=require(_0xe8e5('0x1'));var zipdir=require(_0xe8e5('0x2'));var jsonpatch=require(_0xe8e5('0x3'));var rp=require(_0xe8e5('0x4'));var moment=require(_0xe8e5('0x5'));var BPromise=require(_0xe8e5('0x6'));var Mustache=require(_0xe8e5('0x7'));var util=require('util');var path=require(_0xe8e5('0x8'));var sox=require(_0xe8e5('0x9'));var csv=require(_0xe8e5('0xa'));var ejs=require(_0xe8e5('0xb'));var fs=require('fs');var fs_extra=require(_0xe8e5('0xc'));var _=require('lodash');var squel=require(_0xe8e5('0xd'));var crypto=require('crypto');var jsforce=require(_0xe8e5('0xe'));var deskjs=require(_0xe8e5('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe8e5('0x10'));var Papa=require(_0xe8e5('0x11'));var Redis=require('ioredis');var authService=require(_0xe8e5('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe8e5('0x13'));var hardwareService=require(_0xe8e5('0x14'));var logger=require('../../config/logger')(_0xe8e5('0x15'));var utils=require(_0xe8e5('0x16'));var config=require(_0xe8e5('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5663b4,_0x559561){_0x559561=_0x559561||0xcc;return function(_0x406b21){if(_0x406b21){return _0x5663b4[_0xe8e5('0x18')](_0x559561);}return _0x5663b4[_0xe8e5('0x19')](_0x559561)[_0xe8e5('0x1a')]();};}function respondWithResult(_0x28b782,_0x31576a){_0x31576a=_0x31576a||0xc8;return function(_0x1809e1){if(_0x1809e1){return _0x28b782[_0xe8e5('0x19')](_0x31576a)[_0xe8e5('0x1b')](_0x1809e1);}};}function respondWithFilteredResult(_0x550928,_0x2711f7){return function(_0x5bc238){if(_0x5bc238){var _0x1c3590=typeof _0x2711f7[_0xe8e5('0x1c')]===_0xe8e5('0x1d')&&typeof _0x2711f7[_0xe8e5('0x1e')]===_0xe8e5('0x1d');var _0x309bc2=_0x5bc238[_0xe8e5('0x1f')];var _0x404bd8=_0x1c3590?0x0:_0x2711f7[_0xe8e5('0x1c')];var _0x1ff2cc=_0x1c3590?_0x5bc238[_0xe8e5('0x1f')]:_0x2711f7[_0xe8e5('0x1c')]+_0x2711f7[_0xe8e5('0x1e')];var _0x48a0b5;if(_0x1ff2cc>=_0x309bc2){_0x1ff2cc=_0x309bc2;_0x48a0b5=0xc8;}else{_0x48a0b5=0xce;}_0x550928[_0xe8e5('0x19')](_0x48a0b5);return _0x550928[_0xe8e5('0x20')](_0xe8e5('0x21'),_0x404bd8+'-'+_0x1ff2cc+'/'+_0x309bc2)[_0xe8e5('0x1b')](_0x5bc238);}return null;};}function patchUpdates(_0x1514ba){return function(_0x406482){try{jsonpatch['apply'](_0x406482,_0x1514ba,!![]);}catch(_0xc6b2a8){return BPromise[_0xe8e5('0x22')](_0xc6b2a8);}return _0x406482[_0xe8e5('0x23')]();};}function saveUpdates(_0x18f8ce,_0x25078c){return function(_0x599d73){if(_0x599d73){return _0x599d73['update'](_0x18f8ce)[_0xe8e5('0x24')](function(_0x397a76){return _0x397a76;});}return null;};}function removeEntity(_0x449562,_0x2eb3d9){return function(_0x53f764){if(_0x53f764){return _0x53f764[_0xe8e5('0x25')]()['then'](function(){_0x449562[_0xe8e5('0x19')](0xcc)[_0xe8e5('0x1a')]();});}};}function handleEntityNotFound(_0x4a89c8,_0x251270){return function(_0x257c05){if(!_0x257c05){_0x4a89c8[_0xe8e5('0x18')](0x194);}return _0x257c05;};}function handleError(_0x2b2e2b,_0x483930){_0x483930=_0x483930||0x1f4;return function(_0x3b3871){logger[_0xe8e5('0x26')](_0x3b3871['stack']);if(_0x3b3871[_0xe8e5('0x27')]){delete _0x3b3871[_0xe8e5('0x27')];}_0x2b2e2b[_0xe8e5('0x19')](_0x483930)[_0xe8e5('0x28')](_0x3b3871);};}exports[_0xe8e5('0x29')]=function(_0x584741,_0x465245){var _0x7bf1f4={},_0x16be20={},_0x6424={'count':0x0,'rows':[]};var _0x2757b8=_[_0xe8e5('0x2a')](db[_0xe8e5('0x2b')]['rawAttributes'],function(_0x5c2ad1){return{'name':_0x5c2ad1[_0xe8e5('0x2c')],'type':_0x5c2ad1['type'][_0xe8e5('0x2d')]};});_0x16be20[_0xe8e5('0x2e')]=_['map'](_0x2757b8,_0xe8e5('0x27'));_0x16be20[_0xe8e5('0x2f')]=_[_0xe8e5('0x30')](_0x584741['query']);_0x16be20[_0xe8e5('0x31')]=_['intersection'](_0x16be20['model'],_0x16be20[_0xe8e5('0x2f')]);_0x7bf1f4[_0xe8e5('0x32')]=_['intersection'](_0x16be20['model'],qs[_0xe8e5('0x33')](_0x584741['query']['fields']));_0x7bf1f4[_0xe8e5('0x32')]=_0x7bf1f4[_0xe8e5('0x32')][_0xe8e5('0x34')]?_0x7bf1f4[_0xe8e5('0x32')]:_0x16be20[_0xe8e5('0x2e')];if(!_0x584741['query'][_0xe8e5('0x35')](_0xe8e5('0x36'))){_0x7bf1f4[_0xe8e5('0x1e')]=qs[_0xe8e5('0x1e')](_0x584741[_0xe8e5('0x2f')]['limit']);_0x7bf1f4[_0xe8e5('0x1c')]=qs[_0xe8e5('0x1c')](_0x584741['query']['offset']);}_0x7bf1f4[_0xe8e5('0x37')]=qs[_0xe8e5('0x38')](_0x584741[_0xe8e5('0x2f')][_0xe8e5('0x38')]);_0x7bf1f4[_0xe8e5('0x39')]=qs[_0xe8e5('0x31')](_[_0xe8e5('0x3a')](_0x584741[_0xe8e5('0x2f')],_0x16be20[_0xe8e5('0x31')]),_0x2757b8);if(_0x584741[_0xe8e5('0x2f')]['filter']){_0x7bf1f4[_0xe8e5('0x39')]=_[_0xe8e5('0x3b')](_0x7bf1f4['where'],{'$or':_[_0xe8e5('0x2a')](_0x2757b8,function(_0x1c6d03){if(_0x1c6d03[_0xe8e5('0x3c')]!=='VIRTUAL'){var _0x1295ac={};_0x1295ac[_0x1c6d03[_0xe8e5('0x27')]]={'$like':'%'+_0x584741[_0xe8e5('0x2f')]['filter']+'%'};return _0x1295ac;}})});}_0x7bf1f4=_[_0xe8e5('0x3b')]({},_0x7bf1f4,_0x584741[_0xe8e5('0x3d')]);var _0x151578={'where':_0x7bf1f4['where']};return db[_0xe8e5('0x2b')]['count'](_0x151578)[_0xe8e5('0x24')](function(_0x4cb375){_0x6424[_0xe8e5('0x1f')]=_0x4cb375;if(_0x584741[_0xe8e5('0x2f')][_0xe8e5('0x3e')]){_0x7bf1f4['include']=[{'all':!![]}];}return db['FaxTransferReport'][_0xe8e5('0x3f')](_0x7bf1f4);})[_0xe8e5('0x24')](function(_0x35f5f3){_0x6424[_0xe8e5('0x40')]=_0x35f5f3;return _0x6424;})[_0xe8e5('0x24')](respondWithFilteredResult(_0x465245,_0x7bf1f4))[_0xe8e5('0x41')](handleError(_0x465245,null));};exports['show']=function(_0x240738,_0x198fdd){var _0x3785a3={'raw':!![],'where':{'id':_0x240738[_0xe8e5('0x42')]['id']}},_0x4751a7={};_0x4751a7[_0xe8e5('0x2e')]=_[_0xe8e5('0x30')](db[_0xe8e5('0x2b')][_0xe8e5('0x43')]);_0x4751a7[_0xe8e5('0x2f')]=_['keys'](_0x240738[_0xe8e5('0x2f')]);_0x4751a7[_0xe8e5('0x31')]=_[_0xe8e5('0x44')](_0x4751a7[_0xe8e5('0x2e')],_0x4751a7[_0xe8e5('0x2f')]);_0x3785a3[_0xe8e5('0x32')]=_['intersection'](_0x4751a7[_0xe8e5('0x2e')],qs[_0xe8e5('0x33')](_0x240738[_0xe8e5('0x2f')][_0xe8e5('0x33')]));_0x3785a3['attributes']=_0x3785a3[_0xe8e5('0x32')]['length']?_0x3785a3['attributes']:_0x4751a7[_0xe8e5('0x2e')];if(_0x240738['query'][_0xe8e5('0x3e')]){_0x3785a3[_0xe8e5('0x45')]=[{'all':!![]}];}_0x3785a3=_[_0xe8e5('0x3b')]({},_0x3785a3,_0x240738[_0xe8e5('0x3d')]);return db['FaxTransferReport'][_0xe8e5('0x46')](_0x3785a3)[_0xe8e5('0x24')](handleEntityNotFound(_0x198fdd,null))[_0xe8e5('0x24')](respondWithResult(_0x198fdd,null))[_0xe8e5('0x41')](handleError(_0x198fdd,null));};exports[_0xe8e5('0x47')]=function(_0x4f743b,_0x949083){return db[_0xe8e5('0x2b')]['create'](_0x4f743b[_0xe8e5('0x48')],{})[_0xe8e5('0x24')](respondWithResult(_0x949083,0xc9))['catch'](handleError(_0x949083,null));};exports[_0xe8e5('0x49')]=function(_0x31dff1,_0x11ffb6){if(_0x31dff1[_0xe8e5('0x48')]['id']){delete _0x31dff1[_0xe8e5('0x48')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x31dff1[_0xe8e5('0x42')]['id']}})[_0xe8e5('0x24')](handleEntityNotFound(_0x11ffb6,null))[_0xe8e5('0x24')](saveUpdates(_0x31dff1['body'],null))[_0xe8e5('0x24')](respondWithResult(_0x11ffb6,null))[_0xe8e5('0x41')](handleError(_0x11ffb6,null));};exports[_0xe8e5('0x25')]=function(_0x15b056,_0x264474){return db[_0xe8e5('0x2b')][_0xe8e5('0x46')]({'where':{'id':_0x15b056['params']['id']}})[_0xe8e5('0x24')](handleEntityNotFound(_0x264474,null))[_0xe8e5('0x24')](removeEntity(_0x264474,null))[_0xe8e5('0x41')](handleError(_0x264474,null));};exports[_0xe8e5('0x4a')]=function(_0x25f716,_0x4e2661){return db[_0xe8e5('0x2b')]['describe']()['then'](respondWithResult(_0x4e2661,null))['catch'](handleError(_0x4e2661,null));};
\ No newline at end of file
index df5502d..b659fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1780=['bluebird','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x280faf,_0x31bd74){var _0x59e18d=function(_0x308642){while(--_0x308642){_0x280faf['push'](_0x280faf['shift']());}};_0x59e18d(++_0x31bd74);}(_0x1780,0xbf));var _0x0178=function(_0x4f595c,_0x2c7a0a){_0x4f595c=_0x4f595c-0x0;var _0xf7c553=_0x1780[_0x4f595c];return _0xf7c553;};'use strict';var _=require(_0x0178('0x0'));var util=require('util');var logger=require(_0x0178('0x1'))(_0x0178('0x2'));var moment=require(_0x0178('0x3'));var BPromise=require(_0x0178('0x4'));var rp=require(_0x0178('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0178('0x6'));var config=require(_0x0178('0x7'));var attributes=require(_0x0178('0x8'));module['exports']=function(_0x574424,_0x1627af){return _0x574424[_0x0178('0x9')](_0x0178('0xa'),attributes,{'tableName':_0x0178('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0178('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2136=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','FaxTransferReport','uniqueid','lodash','util','../../config/logger'];(function(_0x193e81,_0x34d654){var _0x3a9400=function(_0xcdd649){while(--_0xcdd649){_0x193e81['push'](_0x193e81['shift']());}};_0x3a9400(++_0x34d654);}(_0x2136,0x1eb));var _0x6213=function(_0x223ace,_0x28a4f1){_0x223ace=_0x223ace-0x0;var _0x599ef9=_0x2136[_0x223ace];return _0x599ef9;};'use strict';var _=require(_0x6213('0x0'));var util=require(_0x6213('0x1'));var logger=require(_0x6213('0x2'))(_0x6213('0x3'));var moment=require(_0x6213('0x4'));var BPromise=require(_0x6213('0x5'));var rp=require(_0x6213('0x6'));var fs=require('fs');var path=require(_0x6213('0x7'));var rimraf=require(_0x6213('0x8'));var config=require(_0x6213('0x9'));var attributes=require('./faxTransferReport.attributes');module[_0x6213('0xa')]=function(_0x41b760,_0x1ae2cc){return _0x41b760['define'](_0x6213('0xb'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0x6213('0xc'),'fields':[_0x6213('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 25989d2..4acc34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3451=['../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x50fa94,_0x2471de){var _0x34849c=function(_0xbde347){while(--_0xbde347){_0x50fa94['push'](_0x50fa94['shift']());}};_0x34849c(++_0x2471de);}(_0x3451,0x92));var _0x1345=function(_0x46e427,_0xdad9a8){_0x46e427=_0x46e427-0x0;var _0x127b35=_0x3451[_0x46e427];return _0x127b35;};'use strict';var _=require(_0x1345('0x0'));var util=require(_0x1345('0x1'));var moment=require(_0x1345('0x2'));var BPromise=require(_0x1345('0x3'));var rs=require(_0x1345('0x4'));var fs=require('fs');var Redis=require(_0x1345('0x5'));var db=require(_0x1345('0x6'))['db'];var utils=require(_0x1345('0x7'));var logger=require(_0x1345('0x8'))(_0x1345('0x9'));var config=require(_0x1345('0xa'));var jayson=require(_0x1345('0xb'));var client=jayson[_0x1345('0xc')][_0x1345('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5ce1a3,_0x423e3d,_0x7372c9){return new BPromise(function(_0x288e02,_0x502107){return client[_0x1345('0xe')](_0x5ce1a3,_0x7372c9)[_0x1345('0xf')](function(_0x31d57e){logger[_0x1345('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x423e3d,_0x1345('0x11'));logger[_0x1345('0x12')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x423e3d,_0x1345('0x11'),JSON[_0x1345('0x13')](_0x31d57e));if(_0x31d57e['error']){if(_0x31d57e[_0x1345('0x14')][_0x1345('0x15')]===0x1f4){logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x31d57e['error'][_0x1345('0x17')]);return _0x502107(_0x31d57e[_0x1345('0x14')][_0x1345('0x17')]);}logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x31d57e['error'][_0x1345('0x17')]);return _0x288e02(_0x31d57e[_0x1345('0x14')][_0x1345('0x17')]);}else{logger[_0x1345('0x10')](_0x1345('0x16'),_0x423e3d,_0x1345('0x11'));_0x288e02(_0x31d57e[_0x1345('0x18')][_0x1345('0x17')]);}})[_0x1345('0x19')](function(_0x5cd036){logger[_0x1345('0x14')](_0x1345('0x16'),_0x423e3d,_0x5cd036);_0x502107(_0x5cd036);});});}
\ No newline at end of file
+var _0x1fbf=['FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x34c633,_0x2bd0ec){var _0x16a980=function(_0x1de896){while(--_0x1de896){_0x34c633['push'](_0x34c633['shift']());}};_0x16a980(++_0x2bd0ec);}(_0x1fbf,0xa8));var _0xf1fb=function(_0x60f857,_0x32c101){_0x60f857=_0x60f857-0x0;var _0x59659e=_0x1fbf[_0x60f857];return _0x59659e;};'use strict';var _=require(_0xf1fb('0x0'));var util=require(_0xf1fb('0x1'));var moment=require('moment');var BPromise=require(_0xf1fb('0x2'));var rs=require(_0xf1fb('0x3'));var fs=require('fs');var Redis=require(_0xf1fb('0x4'));var db=require(_0xf1fb('0x5'))['db'];var utils=require(_0xf1fb('0x6'));var logger=require(_0xf1fb('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf1fb('0x8'));var client=jayson[_0xf1fb('0x9')][_0xf1fb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x359710,_0x362ab3,_0x1c87a7){return new BPromise(function(_0x256b70,_0xb50fd2){return client[_0xf1fb('0xb')](_0x359710,_0x1c87a7)[_0xf1fb('0xc')](function(_0x46d9dd){logger[_0xf1fb('0xd')](_0xf1fb('0xe'),_0x362ab3,_0xf1fb('0xf'));logger['debug'](_0xf1fb('0x10'),_0x362ab3,_0xf1fb('0xf'),JSON[_0xf1fb('0x11')](_0x46d9dd));if(_0x46d9dd[_0xf1fb('0x12')]){if(_0x46d9dd['error'][_0xf1fb('0x13')]===0x1f4){logger['error'](_0xf1fb('0xe'),_0x362ab3,_0x46d9dd[_0xf1fb('0x12')][_0xf1fb('0x14')]);return _0xb50fd2(_0x46d9dd[_0xf1fb('0x12')]['message']);}logger['error'](_0xf1fb('0xe'),_0x362ab3,_0x46d9dd['error']['message']);return _0x256b70(_0x46d9dd[_0xf1fb('0x12')][_0xf1fb('0x14')]);}else{logger[_0xf1fb('0xd')](_0xf1fb('0xe'),_0x362ab3,_0xf1fb('0xf'));_0x256b70(_0x46d9dd[_0xf1fb('0x15')][_0xf1fb('0x14')]);}})[_0xf1fb('0x16')](function(_0x545fa8){logger[_0xf1fb('0x12')](_0xf1fb('0xe'),_0x362ab3,_0x545fa8);_0xb50fd2(_0x545fa8);});});}
\ No newline at end of file
index 85f7523..dea3fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65cd=['./faxTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65cd,0x84));var _0xd65c=function(_0x2bd264,_0x53a5d4){_0x2bd264=_0x2bd264-0x0;var _0x3cd2e3=_0x65cd[_0x2bd264];return _0x3cd2e3;};'use strict';var multer=require('multer');var util=require(_0xd65c('0x0'));var path=require('path');var timeout=require(_0xd65c('0x1'));var express=require(_0xd65c('0x2'));var router=express[_0xd65c('0x3')]();var fs_extra=require(_0xd65c('0x4'));var auth=require(_0xd65c('0x5'));var interaction=require(_0xd65c('0x6'));var config=require(_0xd65c('0x7'));var controller=require(_0xd65c('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xd65c('0x9')](_0xd65c('0xa'),auth[_0xd65c('0xb')](),controller[_0xd65c('0xc')]);router[_0xd65c('0x9')](_0xd65c('0xd'),auth[_0xd65c('0xb')](),controller[_0xd65c('0xe')]);router[_0xd65c('0xf')]('/',auth[_0xd65c('0xb')](),controller[_0xd65c('0x10')]);router[_0xd65c('0x11')](_0xd65c('0xd'),auth[_0xd65c('0xb')](),controller['update']);router['delete'](_0xd65c('0xd'),auth['isAuthenticated'](),controller[_0xd65c('0x12')]);module[_0xd65c('0x13')]=router;
\ No newline at end of file
+var _0x75d6=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','/:id','show','create','update','delete','destroy','util','express','Router'];(function(_0x20af01,_0x222ed4){var _0x2bfee9=function(_0x56c570){while(--_0x56c570){_0x20af01['push'](_0x20af01['shift']());}};_0x2bfee9(++_0x222ed4);}(_0x75d6,0x19b));var _0x675d=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0x75d6[_0x545b71];return _0x26e587;};'use strict';var multer=require('multer');var util=require(_0x675d('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x675d('0x1'));var router=express[_0x675d('0x2')]();var fs_extra=require(_0x675d('0x3'));var auth=require(_0x675d('0x4'));var interaction=require(_0x675d('0x5'));var config=require(_0x675d('0x6'));var controller=require('./faxTransferReport.controller');router['get']('/',auth[_0x675d('0x7')](),controller[_0x675d('0x8')]);router['get'](_0x675d('0x9'),auth[_0x675d('0x7')](),controller[_0x675d('0xa')]);router[_0x675d('0xb')](_0x675d('0xc'),auth[_0x675d('0x7')](),controller[_0x675d('0xd')]);router['post']('/',auth[_0x675d('0x7')](),controller[_0x675d('0xe')]);router['put'](_0x675d('0xc'),auth[_0x675d('0x7')](),controller[_0x675d('0xf')]);router[_0x675d('0x10')](_0x675d('0xc'),auth[_0x675d('0x7')](),controller[_0x675d('0x11')]);module['exports']=router;
\ No newline at end of file
index b484ebc..2f5c335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc731=['multer','util','path','connect-timeout','express','fs-extra','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','/:id','delete','destroy','exports'];(function(_0x50fafa,_0x50e6cc){var _0x563c1f=function(_0x260f22){while(--_0x260f22){_0x50fafa['push'](_0x50fafa['shift']());}};_0x563c1f(++_0x50e6cc);}(_0xc731,0x84));var _0x1c73=function(_0x3df3b1,_0x2ebecb){_0x3df3b1=_0x3df3b1-0x0;var _0x17461e=_0xc731[_0x3df3b1];return _0x17461e;};'use strict';var multer=require(_0x1c73('0x0'));var util=require(_0x1c73('0x1'));var path=require(_0x1c73('0x2'));var timeout=require(_0x1c73('0x3'));var express=require(_0x1c73('0x4'));var router=express['Router']();var fs_extra=require(_0x1c73('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1c73('0x6'));router[_0x1c73('0x7')]('/',auth[_0x1c73('0x8')](),controller[_0x1c73('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1c73('0xa')]);router['get'](_0x1c73('0xb'),auth[_0x1c73('0x8')](),controller[_0x1c73('0xc')]);router[_0x1c73('0x7')]('/:id/fields',auth[_0x1c73('0x8')](),controller[_0x1c73('0xd')]);router[_0x1c73('0xe')]('/',auth[_0x1c73('0x8')](),controller[_0x1c73('0xf')]);router[_0x1c73('0xe')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x1c73('0x10')]);router[_0x1c73('0x11')](_0x1c73('0x12'),auth[_0x1c73('0x8')](),controller['update']);router[_0x1c73('0x13')](_0x1c73('0x12'),auth['isAuthenticated'](),controller[_0x1c73('0x14')]);module[_0x1c73('0x15')]=router;
\ No newline at end of file
+var _0xfbde=['/:id/configurations','getConfigurations','getFields','post','create','put','/:id','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index'];(function(_0x4f4cca,_0x1065a0){var _0x63f9b6=function(_0xc65ac0){while(--_0xc65ac0){_0x4f4cca['push'](_0x4f4cca['shift']());}};_0x63f9b6(++_0x1065a0);}(_0xfbde,0x67));var _0xefbd=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0xfbde[_0x17928f];return _0x500b63;};'use strict';var multer=require(_0xefbd('0x0'));var util=require(_0xefbd('0x1'));var path=require(_0xefbd('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xefbd('0x3'));var auth=require(_0xefbd('0x4'));var interaction=require(_0xefbd('0x5'));var config=require(_0xefbd('0x6'));var controller=require(_0xefbd('0x7'));router[_0xefbd('0x8')]('/',auth[_0xefbd('0x9')](),controller[_0xefbd('0xa')]);router[_0xefbd('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xefbd('0x8')](_0xefbd('0xb'),auth[_0xefbd('0x9')](),controller[_0xefbd('0xc')]);router[_0xefbd('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0xefbd('0xd')]);router[_0xefbd('0xe')]('/',auth['isAuthenticated'](),controller[_0xefbd('0xf')]);router['post'](_0xefbd('0xb'),auth[_0xefbd('0x9')](),controller['addConfiguration']);router[_0xefbd('0x10')](_0xefbd('0x11'),auth[_0xefbd('0x9')](),controller['update']);router['delete'](_0xefbd('0x11'),auth[_0xefbd('0x9')](),controller['destroy']);module[_0xefbd('0x12')]=router;
\ No newline at end of file
index 321522f..de4b38d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b8b=['ENUM','basic','integrationTab','newTab','exports','STRING'];(function(_0x2a80c9,_0x5d4e02){var _0x7218b4=function(_0x2342ff){while(--_0x2342ff){_0x2a80c9['push'](_0x2a80c9['shift']());}};_0x7218b4(++_0x5d4e02);}(_0x9b8b,0x160));var _0xb9b8=function(_0x3835b5,_0x423301){_0x3835b5=_0x3835b5-0x0;var _0x23d8d6=_0x9b8b[_0x3835b5];return _0x23d8d6;};'use strict';var Sequelize=require('sequelize');module[_0xb9b8('0x0')]={'name':{'type':Sequelize[_0xb9b8('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xb9b8('0x1')]},'authType':{'type':Sequelize[_0xb9b8('0x2')](_0xb9b8('0x3')),'defaultValue':_0xb9b8('0x3')},'password':{'type':Sequelize[_0xb9b8('0x1')]},'consumerKey':{'type':Sequelize[_0xb9b8('0x1')]},'consumerSecret':{'type':Sequelize[_0xb9b8('0x1')]},'token':{'type':Sequelize[_0xb9b8('0x1')]},'tokenSecret':{'type':Sequelize[_0xb9b8('0x1')]},'serverUrl':{'type':Sequelize[_0xb9b8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xb9b8('0x2')](_0xb9b8('0x4'),_0xb9b8('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x080e=['newTab','sequelize','exports','STRING','ENUM','basic'];(function(_0xf99751,_0x5e8a72){var _0xc1f644=function(_0x32d136){while(--_0x32d136){_0xf99751['push'](_0xf99751['shift']());}};_0xc1f644(++_0x5e8a72);}(_0x080e,0x1db));var _0xe080=function(_0x138d18,_0x7a67b9){_0x138d18=_0x138d18-0x0;var _0x51bf13=_0x080e[_0x138d18];return _0x51bf13;};'use strict';var Sequelize=require(_0xe080('0x0'));module[_0xe080('0x1')]={'name':{'type':Sequelize[_0xe080('0x2')]},'description':{'type':Sequelize[_0xe080('0x2')]},'username':{'type':Sequelize[_0xe080('0x2')]},'remoteUri':{'type':Sequelize[_0xe080('0x2')]},'authType':{'type':Sequelize[_0xe080('0x3')]('basic'),'defaultValue':_0xe080('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0xe080('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xe080('0x2')]},'tokenSecret':{'type':Sequelize[_0xe080('0x2')]},'serverUrl':{'type':Sequelize[_0xe080('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe080('0x3')]('integrationTab',_0xe080('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 035f950..132a832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdbe=['fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','destroy','sendStatus','stack','name','index','map','DeskAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','include','find','create','body','update','params','getConfigurations','findOne','DeskConfiguration','length','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','authType','username','password','consumerSecret','token','tokenSecret','substring','lastIndexOf','GET','format','application/json','headers','toString','base64','concat','entries','active','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs'];(function(_0x5327d4,_0x4e6c82){var _0x1b0db2=function(_0x35049b){while(--_0x35049b){_0x5327d4['push'](_0x5327d4['shift']());}};_0x1b0db2(++_0x4e6c82);}(_0xcdbe,0x64));var _0xecdb=function(_0x11a289,_0x54b41c){_0x11a289=_0x11a289-0x0;var _0x224679=_0xcdbe[_0x11a289];return _0x224679;};'use strict';var emlformat=require(_0xecdb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xecdb('0x1'));var jsonpatch=require(_0xecdb('0x2'));var rp=require('request-promise');var moment=require(_0xecdb('0x3'));var BPromise=require(_0xecdb('0x4'));var Mustache=require('mustache');var util=require(_0xecdb('0x5'));var path=require(_0xecdb('0x6'));var sox=require(_0xecdb('0x7'));var csv=require(_0xecdb('0x8'));var ejs=require(_0xecdb('0x9'));var fs=require('fs');var fs_extra=require(_0xecdb('0xa'));var _=require(_0xecdb('0xb'));var squel=require('squel');var crypto=require(_0xecdb('0xc'));var jsforce=require(_0xecdb('0xd'));var deskjs=require(_0xecdb('0xe'));var toCsv=require(_0xecdb('0x8'));var querystring=require(_0xecdb('0xf'));var Papa=require(_0xecdb('0x10'));var Redis=require(_0xecdb('0x11'));var authService=require(_0xecdb('0x12'));var qs=require(_0xecdb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xecdb('0x14'))(_0xecdb('0x15'));var utils=require(_0xecdb('0x16'));var config=require(_0xecdb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xecdb('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5f3477,_0x5786ac){_0x5786ac=_0x5786ac||0xcc;return function(_0x1d9698){if(_0x1d9698){return _0x5f3477['sendStatus'](_0x5786ac);}return _0x5f3477['status'](_0x5786ac)['end']();};}function respondWithResult(_0x5c56c7,_0x26e89b){_0x26e89b=_0x26e89b||0xc8;return function(_0x1edd74){if(_0x1edd74){return _0x5c56c7[_0xecdb('0x19')](_0x26e89b)[_0xecdb('0x1a')](_0x1edd74);}};}function respondWithFilteredResult(_0x14882f,_0x4960cd){return function(_0x377dfe){if(_0x377dfe){var _0x16a53b=typeof _0x4960cd[_0xecdb('0x1b')]==='undefined'&&typeof _0x4960cd[_0xecdb('0x1c')]===_0xecdb('0x1d');var _0x26ebd7=_0x377dfe[_0xecdb('0x1e')];var _0x2225fc=_0x16a53b?0x0:_0x4960cd[_0xecdb('0x1b')];var _0x52da2c=_0x16a53b?_0x377dfe[_0xecdb('0x1e')]:_0x4960cd[_0xecdb('0x1b')]+_0x4960cd[_0xecdb('0x1c')];var _0x1314df;if(_0x52da2c>=_0x26ebd7){_0x52da2c=_0x26ebd7;_0x1314df=0xc8;}else{_0x1314df=0xce;}_0x14882f['status'](_0x1314df);return _0x14882f[_0xecdb('0x1f')](_0xecdb('0x20'),_0x2225fc+'-'+_0x52da2c+'/'+_0x26ebd7)[_0xecdb('0x1a')](_0x377dfe);}return null;};}function patchUpdates(_0x444a82){return function(_0x3840b4){try{jsonpatch['apply'](_0x3840b4,_0x444a82,!![]);}catch(_0x59ee75){return BPromise[_0xecdb('0x21')](_0x59ee75);}return _0x3840b4[_0xecdb('0x22')]();};}function saveUpdates(_0x5579d1,_0x32a7ca){return function(_0x1c6a5a){if(_0x1c6a5a){return _0x1c6a5a['update'](_0x5579d1)[_0xecdb('0x23')](function(_0x1a7ed1){return _0x1a7ed1;});}return null;};}function removeEntity(_0x41ee44,_0x25cd63){return function(_0x266c3a){if(_0x266c3a){return _0x266c3a[_0xecdb('0x24')]()[_0xecdb('0x23')](function(){_0x41ee44[_0xecdb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2188c7,_0x7bc34c){return function(_0x15f2b7){if(!_0x15f2b7){_0x2188c7[_0xecdb('0x25')](0x194);}return _0x15f2b7;};}function handleError(_0x45c009,_0xf2569b){_0xf2569b=_0xf2569b||0x1f4;return function(_0x32f966){logger['error'](_0x32f966[_0xecdb('0x26')]);if(_0x32f966[_0xecdb('0x27')]){delete _0x32f966[_0xecdb('0x27')];}_0x45c009[_0xecdb('0x19')](_0xf2569b)['send'](_0x32f966);};}exports[_0xecdb('0x28')]=function(_0x4197cd,_0x1d57c6){var _0x26ead1={},_0x1d6046={},_0x1be58b={'count':0x0,'rows':[]};var _0x50dcf6=_[_0xecdb('0x29')](db[_0xecdb('0x2a')][_0xecdb('0x2b')],function(_0x1805cd){return{'name':_0x1805cd['fieldName'],'type':_0x1805cd[_0xecdb('0x2c')][_0xecdb('0x2d')]};});_0x1d6046[_0xecdb('0x2e')]=_[_0xecdb('0x29')](_0x50dcf6,'name');_0x1d6046[_0xecdb('0x2f')]=_[_0xecdb('0x30')](_0x4197cd[_0xecdb('0x2f')]);_0x1d6046[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x1d6046['model'],_0x1d6046['query']);_0x26ead1[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x1d6046[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x34')]));_0x26ead1['attributes']=_0x26ead1[_0xecdb('0x33')]['length']?_0x26ead1[_0xecdb('0x33')]:_0x1d6046['model'];if(!_0x4197cd['query'][_0xecdb('0x35')](_0xecdb('0x36'))){_0x26ead1[_0xecdb('0x1c')]=qs['limit'](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x1c')]);_0x26ead1['offset']=qs[_0xecdb('0x1b')](_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x1b')]);}_0x26ead1[_0xecdb('0x37')]=qs[_0xecdb('0x38')](_0x4197cd[_0xecdb('0x2f')]['sort']);_0x26ead1[_0xecdb('0x39')]=qs[_0xecdb('0x31')](_[_0xecdb('0x3a')](_0x4197cd[_0xecdb('0x2f')],_0x1d6046['filters']),_0x50dcf6);if(_0x4197cd['query']['filter']){_0x26ead1[_0xecdb('0x39')]=_['merge'](_0x26ead1[_0xecdb('0x39')],{'$or':_[_0xecdb('0x29')](_0x50dcf6,function(_0x59f33d){if(_0x59f33d[_0xecdb('0x2c')]!==_0xecdb('0x3b')){var _0x1b025a={};_0x1b025a[_0x59f33d['name']]={'$like':'%'+_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x3c')]+'%'};return _0x1b025a;}})});}_0x26ead1=_[_0xecdb('0x3d')]({},_0x26ead1,_0x4197cd[_0xecdb('0x3e')]);var _0x36d986={'where':_0x26ead1[_0xecdb('0x39')]};return db[_0xecdb('0x2a')][_0xecdb('0x1e')](_0x36d986)[_0xecdb('0x23')](function(_0x326211){_0x1be58b[_0xecdb('0x1e')]=_0x326211;if(_0x4197cd[_0xecdb('0x2f')][_0xecdb('0x3f')]){_0x26ead1['include']=[{'all':!![]}];}return db[_0xecdb('0x2a')][_0xecdb('0x40')](_0x26ead1);})['then'](function(_0x211d1f){_0x1be58b[_0xecdb('0x41')]=_0x211d1f;return _0x1be58b;})['then'](respondWithFilteredResult(_0x1d57c6,_0x26ead1))[_0xecdb('0x42')](handleError(_0x1d57c6,null));};exports[_0xecdb('0x43')]=function(_0x3cd169,_0x3f1390){var _0x4fdc59={'raw':![],'where':{'id':_0x3cd169['params']['id']}},_0x55ed8f={};_0x55ed8f['model']=_[_0xecdb('0x30')](db[_0xecdb('0x2a')][_0xecdb('0x2b')]);_0x55ed8f[_0xecdb('0x2f')]=_['keys'](_0x3cd169[_0xecdb('0x2f')]);_0x55ed8f[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x55ed8f[_0xecdb('0x2e')],_0x55ed8f[_0xecdb('0x2f')]);_0x4fdc59[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x55ed8f[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x3cd169[_0xecdb('0x2f')][_0xecdb('0x34')]));_0x4fdc59[_0xecdb('0x33')]=_0x4fdc59[_0xecdb('0x33')]['length']?_0x4fdc59['attributes']:_0x55ed8f[_0xecdb('0x2e')];if(_0x3cd169[_0xecdb('0x2f')][_0xecdb('0x3f')]){_0x4fdc59[_0xecdb('0x44')]=[{'all':!![]}];}_0x4fdc59=_[_0xecdb('0x3d')]({},_0x4fdc59,_0x3cd169[_0xecdb('0x3e')]);return db['DeskAccount'][_0xecdb('0x45')](_0x4fdc59)[_0xecdb('0x23')](handleEntityNotFound(_0x3f1390,null))[_0xecdb('0x23')](respondWithResult(_0x3f1390,null))[_0xecdb('0x42')](handleError(_0x3f1390,null));};exports[_0xecdb('0x46')]=function(_0xfeb919,_0x2f78e6){return db[_0xecdb('0x2a')][_0xecdb('0x46')](_0xfeb919[_0xecdb('0x47')],{})['then'](respondWithResult(_0x2f78e6,0xc9))['catch'](handleError(_0x2f78e6,null));};exports[_0xecdb('0x48')]=function(_0x321d49,_0x141458){if(_0x321d49[_0xecdb('0x47')]['id']){delete _0x321d49['body']['id'];}return db[_0xecdb('0x2a')][_0xecdb('0x45')]({'where':{'id':_0x321d49['params']['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x141458,null))['then'](saveUpdates(_0x321d49['body'],null))[_0xecdb('0x23')](respondWithResult(_0x141458,null))[_0xecdb('0x42')](handleError(_0x141458,null));};exports[_0xecdb('0x24')]=function(_0x55d852,_0x3c8807){return db[_0xecdb('0x2a')][_0xecdb('0x45')]({'where':{'id':_0x55d852[_0xecdb('0x49')]['id']}})['then'](handleEntityNotFound(_0x3c8807,null))['then'](removeEntity(_0x3c8807,null))[_0xecdb('0x42')](handleError(_0x3c8807,null));};exports[_0xecdb('0x4a')]=function(_0x139f0c,_0x10539a,_0x3fde44){var _0x278265={};var _0x178420={};var _0x44ca2c;var _0x4b9bd7;return db['DeskAccount'][_0xecdb('0x4b')]({'where':{'id':_0x139f0c[_0xecdb('0x49')]['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x10539a,null))[_0xecdb('0x23')](function(_0x2581e0){if(_0x2581e0){_0x44ca2c=_0x2581e0;_0x178420[_0xecdb('0x2e')]=_[_0xecdb('0x30')](db[_0xecdb('0x4c')][_0xecdb('0x2b')]);_0x178420[_0xecdb('0x2f')]=_['keys'](_0x139f0c[_0xecdb('0x2f')]);_0x178420[_0xecdb('0x31')]=_[_0xecdb('0x32')](_0x178420[_0xecdb('0x2e')],_0x178420[_0xecdb('0x2f')]);_0x278265[_0xecdb('0x33')]=_[_0xecdb('0x32')](_0x178420[_0xecdb('0x2e')],qs[_0xecdb('0x34')](_0x139f0c[_0xecdb('0x2f')]['fields']));_0x278265[_0xecdb('0x33')]=_0x278265[_0xecdb('0x33')]['length']?_0x278265['attributes']:_0x178420['model'];_0x278265['order']=qs[_0xecdb('0x38')](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x38')]);_0x278265[_0xecdb('0x39')]=qs['filters'](_[_0xecdb('0x3a')](_0x139f0c[_0xecdb('0x2f')],_0x178420['filters']));if(_0x139f0c['query'][_0xecdb('0x3c')]){_0x278265[_0xecdb('0x39')]=_[_0xecdb('0x3d')](_0x278265[_0xecdb('0x39')],{'$or':_['map'](_0x278265[_0xecdb('0x33')],function(_0x28b9b7){var _0x4e9ebf={};_0x4e9ebf[_0x28b9b7]={'$like':'%'+_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x3c')]+'%'};return _0x4e9ebf;})});}_0x278265=_['merge']({},_0x278265,_0x139f0c[_0xecdb('0x3e')]);return _0x44ca2c[_0xecdb('0x4a')](_0x278265);}})[_0xecdb('0x23')](function(_0x58c294){if(_0x58c294){_0x4b9bd7=_0x58c294[_0xecdb('0x4d')];if(!_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x35')](_0xecdb('0x36'))){_0x278265[_0xecdb('0x1c')]=qs['limit'](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x1c')]);_0x278265[_0xecdb('0x1b')]=qs['offset'](_0x139f0c[_0xecdb('0x2f')][_0xecdb('0x1b')]);}return _0x44ca2c['getConfigurations'](_0x278265);}})[_0xecdb('0x23')](function(_0x12295d){if(_0x12295d){return _0x12295d?{'count':_0x4b9bd7,'rows':_0x12295d}:null;}})[_0xecdb('0x23')](respondWithResult(_0x10539a,null))[_0xecdb('0x42')](handleError(_0x10539a,null));};exports['addConfiguration']=function(_0x53851a,_0x2b1e97,_0x536ff0){if(_0x53851a[_0xecdb('0x47')]['id']){delete _0x53851a['body']['id'];}return db[_0xecdb('0x2a')][_0xecdb('0x4b')]({'where':{'id':_0x53851a[_0xecdb('0x49')]['id']}})[_0xecdb('0x23')](handleEntityNotFound(_0x2b1e97,null))[_0xecdb('0x23')](function(_0x1823c8){if(_0x1823c8){_0x53851a[_0xecdb('0x47')]['AccountId']=_0x1823c8['id'];_0x53851a['body'][_0xecdb('0x4e')]=integrations[_0xecdb('0x4f')](_0x53851a[_0xecdb('0x47')][_0xecdb('0x50')],_0x53851a[_0xecdb('0x47')][_0xecdb('0x2c')]);_0x53851a[_0xecdb('0x47')][_0xecdb('0x51')]=integrations[_0xecdb('0x52')](_0x53851a[_0xecdb('0x47')][_0xecdb('0x50')],_0x53851a['body'][_0xecdb('0x2c')]);return db[_0xecdb('0x4c')][_0xecdb('0x46')](_0x53851a['body'],{'include':[{'model':db[_0xecdb('0x53')],'as':_0xecdb('0x4e')},{'model':db[_0xecdb('0x53')],'as':_0xecdb('0x51')}]});}return null;})[_0xecdb('0x23')](respondWithResult(_0x2b1e97,null))[_0xecdb('0x42')](handleError(_0x2b1e97,null));};exports[_0xecdb('0x54')]=function(_0x3955db,_0x1568d6,_0x2e9e92){var _0x1ba1eb=[{'name':_0xecdb('0x55'),'label':_0xecdb('0x55'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x2caee2='';return db[_0xecdb('0x2a')]['findOne']({'where':{'id':_0x3955db[_0xecdb('0x49')]['id']},'attributes':['id',_0xecdb('0x56'),_0xecdb('0x57'),_0xecdb('0x58'),_0xecdb('0x59'),'consumerKey',_0xecdb('0x5a'),_0xecdb('0x5b'),_0xecdb('0x5c')]})[_0xecdb('0x23')](handleEntityNotFound(_0x1568d6,null))[_0xecdb('0x23')](function(_0x4242c9){if(_0x4242c9){_0x2caee2=_0x4242c9[_0xecdb('0x56')];var _0x5388eb=_0x2caee2['slice'](-0x1);if(_0x5388eb==='/'){_0x2caee2=_0x2caee2[_0xecdb('0x5d')](0x0,_0x2caee2[_0xecdb('0x5e')](_0x5388eb));}var _0x3c632b={'method':_0xecdb('0x5f'),'uri':util[_0xecdb('0x60')]('%s/custom_fields',_0x2caee2),'headers':{'Content-Type':_0xecdb('0x61'),'Accept':'application/json'},'json':!![]};if(_0x4242c9[_0xecdb('0x57')]==='basic'){_0x3c632b[_0xecdb('0x62')]['Authorization']=util[_0xecdb('0x60')]('Basic\x20%s',new Buffer(util['format']('%s:%s',_0x4242c9[_0xecdb('0x58')],_0x4242c9[_0xecdb('0x59')]))[_0xecdb('0x63')](_0xecdb('0x64')));}return rp(_0x3c632b)[_0xecdb('0x23')](function(_0x525090){return _0x1ba1eb[_0xecdb('0x65')](_['map'](_0x525090['_embedded'][_0xecdb('0x66')],function(_0x2c50b8){return{'id':_0x2c50b8['name'],'name':_0x2c50b8[_0xecdb('0x27')],'type':_0x2c50b8['type'],'active':_0x2c50b8[_0xecdb('0x67')],'label':_0x2c50b8[_0xecdb('0x68')],'custom':!![]};}));});}})['then'](function(_0x12e906){return{'count':_0x12e906[_0xecdb('0x4d')],'rows':_0x12e906};})[_0xecdb('0x23')](respondWithResult(_0x1568d6,null))[_0xecdb('0x42')](function(_0x20403a){var _0xb05bb3=_0x3955db['query']['test']?0x1f4:_0x20403a[_0xecdb('0x69')]||0x1f4;logger['error'](_0xecdb('0x6a'),_0xecdb('0x54'),_0xb05bb3,JSON[_0xecdb('0x6b')](_0x20403a));delete _0x20403a['name'];if(_0xb05bb3===0x191){_0xb05bb3=0x190;}_0x1568d6['status'](_0xb05bb3)[_0xecdb('0x6c')](_0x3955db[_0xecdb('0x2f')]['test']?{'message':_0xecdb('0x6d'),'statusCode':_0x20403a[_0xecdb('0x69')]}:_0x20403a);});};
\ No newline at end of file
+var _0x2ec7=['password','consumerKey','token','slice','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','base64','concat','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../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','then','destroy','error','stack','name','send','index','DeskAccount','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','rawAttributes','length','options','find','catch','create','body','params','findOne','DeskConfiguration','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','authType','username'];(function(_0x2f74b7,_0x550799){var _0x59e3cd=function(_0x38aec4){while(--_0x38aec4){_0x2f74b7['push'](_0x2f74b7['shift']());}};_0x59e3cd(++_0x550799);}(_0x2ec7,0xfb));var _0x72ec=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2ec7[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x72ec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x72ec('0x1'));var jsonpatch=require(_0x72ec('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x72ec('0x3'));var Mustache=require(_0x72ec('0x4'));var util=require(_0x72ec('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x72ec('0x6'));var ejs=require(_0x72ec('0x7'));var fs=require('fs');var fs_extra=require(_0x72ec('0x8'));var _=require(_0x72ec('0x9'));var squel=require(_0x72ec('0xa'));var crypto=require(_0x72ec('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x72ec('0xc'));var toCsv=require(_0x72ec('0x6'));var querystring=require(_0x72ec('0xd'));var Papa=require(_0x72ec('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x72ec('0xf'));var logger=require(_0x72ec('0x10'))(_0x72ec('0x11'));var utils=require(_0x72ec('0x12'));var config=require(_0x72ec('0x13'));var licenseUtil=require(_0x72ec('0x14'));var db=require(_0x72ec('0x15'))['db'];var integrations=require(_0x72ec('0x16'));function respondWithStatusCode(_0x11bf30,_0x454ae9){_0x454ae9=_0x454ae9||0xcc;return function(_0x21b135){if(_0x21b135){return _0x11bf30[_0x72ec('0x17')](_0x454ae9);}return _0x11bf30[_0x72ec('0x18')](_0x454ae9)[_0x72ec('0x19')]();};}function respondWithResult(_0x337429,_0x4c1807){_0x4c1807=_0x4c1807||0xc8;return function(_0x345a8d){if(_0x345a8d){return _0x337429[_0x72ec('0x18')](_0x4c1807)[_0x72ec('0x1a')](_0x345a8d);}};}function respondWithFilteredResult(_0x454d52,_0x16fe6c){return function(_0x465d96){if(_0x465d96){var _0x1a9b87=typeof _0x16fe6c[_0x72ec('0x1b')]===_0x72ec('0x1c')&&typeof _0x16fe6c[_0x72ec('0x1d')]==='undefined';var _0x9630d8=_0x465d96[_0x72ec('0x1e')];var _0x210275=_0x1a9b87?0x0:_0x16fe6c[_0x72ec('0x1b')];var _0x4e7ddf=_0x1a9b87?_0x465d96['count']:_0x16fe6c[_0x72ec('0x1b')]+_0x16fe6c['limit'];var _0x2e8b10;if(_0x4e7ddf>=_0x9630d8){_0x4e7ddf=_0x9630d8;_0x2e8b10=0xc8;}else{_0x2e8b10=0xce;}_0x454d52[_0x72ec('0x18')](_0x2e8b10);return _0x454d52[_0x72ec('0x1f')](_0x72ec('0x20'),_0x210275+'-'+_0x4e7ddf+'/'+_0x9630d8)[_0x72ec('0x1a')](_0x465d96);}return null;};}function patchUpdates(_0x830a04){return function(_0x243331){try{jsonpatch[_0x72ec('0x21')](_0x243331,_0x830a04,!![]);}catch(_0x33cf8b){return BPromise[_0x72ec('0x22')](_0x33cf8b);}return _0x243331['save']();};}function saveUpdates(_0x483b98,_0x4ecef5){return function(_0x20a2ad){if(_0x20a2ad){return _0x20a2ad['update'](_0x483b98)[_0x72ec('0x23')](function(_0x2ef0ca){return _0x2ef0ca;});}return null;};}function removeEntity(_0x32d23e,_0x3d20f3){return function(_0x271342){if(_0x271342){return _0x271342[_0x72ec('0x24')]()[_0x72ec('0x23')](function(){_0x32d23e['status'](0xcc)[_0x72ec('0x19')]();});}};}function handleEntityNotFound(_0x43bd3d,_0x3435e4){return function(_0x2e952b){if(!_0x2e952b){_0x43bd3d[_0x72ec('0x17')](0x194);}return _0x2e952b;};}function handleError(_0x356e80,_0x191da6){_0x191da6=_0x191da6||0x1f4;return function(_0x11f64c){logger[_0x72ec('0x25')](_0x11f64c[_0x72ec('0x26')]);if(_0x11f64c['name']){delete _0x11f64c[_0x72ec('0x27')];}_0x356e80[_0x72ec('0x18')](_0x191da6)[_0x72ec('0x28')](_0x11f64c);};}exports[_0x72ec('0x29')]=function(_0x20dc79,_0x4f7ba4){var _0x40dd63={},_0x458861={},_0x53cd1b={'count':0x0,'rows':[]};var _0x19b1d7=_['map'](db[_0x72ec('0x2a')]['rawAttributes'],function(_0x2333c0){return{'name':_0x2333c0[_0x72ec('0x2b')],'type':_0x2333c0[_0x72ec('0x2c')][_0x72ec('0x2d')]};});_0x458861[_0x72ec('0x2e')]=_[_0x72ec('0x2f')](_0x19b1d7,_0x72ec('0x27'));_0x458861['query']=_[_0x72ec('0x30')](_0x20dc79[_0x72ec('0x31')]);_0x458861[_0x72ec('0x32')]=_['intersection'](_0x458861[_0x72ec('0x2e')],_0x458861[_0x72ec('0x31')]);_0x40dd63[_0x72ec('0x33')]=_[_0x72ec('0x34')](_0x458861[_0x72ec('0x2e')],qs[_0x72ec('0x35')](_0x20dc79[_0x72ec('0x31')][_0x72ec('0x35')]));_0x40dd63[_0x72ec('0x33')]=_0x40dd63['attributes']['length']?_0x40dd63[_0x72ec('0x33')]:_0x458861['model'];if(!_0x20dc79[_0x72ec('0x31')][_0x72ec('0x36')]('nolimit')){_0x40dd63[_0x72ec('0x1d')]=qs['limit'](_0x20dc79[_0x72ec('0x31')][_0x72ec('0x1d')]);_0x40dd63[_0x72ec('0x1b')]=qs[_0x72ec('0x1b')](_0x20dc79[_0x72ec('0x31')][_0x72ec('0x1b')]);}_0x40dd63[_0x72ec('0x37')]=qs[_0x72ec('0x38')](_0x20dc79['query'][_0x72ec('0x38')]);_0x40dd63[_0x72ec('0x39')]=qs['filters'](_[_0x72ec('0x3a')](_0x20dc79[_0x72ec('0x31')],_0x458861['filters']),_0x19b1d7);if(_0x20dc79[_0x72ec('0x31')][_0x72ec('0x3b')]){_0x40dd63['where']=_[_0x72ec('0x3c')](_0x40dd63[_0x72ec('0x39')],{'$or':_[_0x72ec('0x2f')](_0x19b1d7,function(_0xbdbfe8){if(_0xbdbfe8[_0x72ec('0x2c')]!==_0x72ec('0x3d')){var _0x331894={};_0x331894[_0xbdbfe8['name']]={'$like':'%'+_0x20dc79[_0x72ec('0x31')]['filter']+'%'};return _0x331894;}})});}_0x40dd63=_[_0x72ec('0x3c')]({},_0x40dd63,_0x20dc79['options']);var _0x1f7c8d={'where':_0x40dd63['where']};return db[_0x72ec('0x2a')][_0x72ec('0x1e')](_0x1f7c8d)['then'](function(_0x31b6dc){_0x53cd1b[_0x72ec('0x1e')]=_0x31b6dc;if(_0x20dc79[_0x72ec('0x31')][_0x72ec('0x3e')]){_0x40dd63[_0x72ec('0x3f')]=[{'all':!![]}];}return db[_0x72ec('0x2a')][_0x72ec('0x40')](_0x40dd63);})[_0x72ec('0x23')](function(_0x25a11b){_0x53cd1b[_0x72ec('0x41')]=_0x25a11b;return _0x53cd1b;})[_0x72ec('0x23')](respondWithFilteredResult(_0x4f7ba4,_0x40dd63))['catch'](handleError(_0x4f7ba4,null));};exports['show']=function(_0x496574,_0x2d5065){var _0x44258c={'raw':![],'where':{'id':_0x496574['params']['id']}},_0x45f423={};_0x45f423['model']=_[_0x72ec('0x30')](db[_0x72ec('0x2a')][_0x72ec('0x42')]);_0x45f423['query']=_[_0x72ec('0x30')](_0x496574[_0x72ec('0x31')]);_0x45f423['filters']=_['intersection'](_0x45f423[_0x72ec('0x2e')],_0x45f423['query']);_0x44258c[_0x72ec('0x33')]=_[_0x72ec('0x34')](_0x45f423[_0x72ec('0x2e')],qs[_0x72ec('0x35')](_0x496574[_0x72ec('0x31')][_0x72ec('0x35')]));_0x44258c[_0x72ec('0x33')]=_0x44258c['attributes'][_0x72ec('0x43')]?_0x44258c[_0x72ec('0x33')]:_0x45f423[_0x72ec('0x2e')];if(_0x496574['query'][_0x72ec('0x3e')]){_0x44258c[_0x72ec('0x3f')]=[{'all':!![]}];}_0x44258c=_['merge']({},_0x44258c,_0x496574[_0x72ec('0x44')]);return db[_0x72ec('0x2a')][_0x72ec('0x45')](_0x44258c)['then'](handleEntityNotFound(_0x2d5065,null))[_0x72ec('0x23')](respondWithResult(_0x2d5065,null))[_0x72ec('0x46')](handleError(_0x2d5065,null));};exports[_0x72ec('0x47')]=function(_0x51af74,_0x5c6f74){return db['DeskAccount']['create'](_0x51af74[_0x72ec('0x48')],{})['then'](respondWithResult(_0x5c6f74,0xc9))[_0x72ec('0x46')](handleError(_0x5c6f74,null));};exports['update']=function(_0x4baa58,_0x3f0530){if(_0x4baa58['body']['id']){delete _0x4baa58[_0x72ec('0x48')]['id'];}return db[_0x72ec('0x2a')]['find']({'where':{'id':_0x4baa58[_0x72ec('0x49')]['id']}})[_0x72ec('0x23')](handleEntityNotFound(_0x3f0530,null))['then'](saveUpdates(_0x4baa58[_0x72ec('0x48')],null))['then'](respondWithResult(_0x3f0530,null))[_0x72ec('0x46')](handleError(_0x3f0530,null));};exports[_0x72ec('0x24')]=function(_0x532da4,_0x1c8e66){return db[_0x72ec('0x2a')][_0x72ec('0x45')]({'where':{'id':_0x532da4['params']['id']}})['then'](handleEntityNotFound(_0x1c8e66,null))[_0x72ec('0x23')](removeEntity(_0x1c8e66,null))['catch'](handleError(_0x1c8e66,null));};exports['getConfigurations']=function(_0xc292a0,_0x48d166,_0x5e7fd4){var _0xd2655d={};var _0x26d972={};var _0x5992a5;var _0xe25684;return db['DeskAccount'][_0x72ec('0x4a')]({'where':{'id':_0xc292a0[_0x72ec('0x49')]['id']}})[_0x72ec('0x23')](handleEntityNotFound(_0x48d166,null))[_0x72ec('0x23')](function(_0x1c937f){if(_0x1c937f){_0x5992a5=_0x1c937f;_0x26d972[_0x72ec('0x2e')]=_[_0x72ec('0x30')](db[_0x72ec('0x4b')]['rawAttributes']);_0x26d972[_0x72ec('0x31')]=_[_0x72ec('0x30')](_0xc292a0[_0x72ec('0x31')]);_0x26d972['filters']=_[_0x72ec('0x34')](_0x26d972[_0x72ec('0x2e')],_0x26d972['query']);_0xd2655d[_0x72ec('0x33')]=_['intersection'](_0x26d972[_0x72ec('0x2e')],qs[_0x72ec('0x35')](_0xc292a0[_0x72ec('0x31')][_0x72ec('0x35')]));_0xd2655d[_0x72ec('0x33')]=_0xd2655d['attributes'][_0x72ec('0x43')]?_0xd2655d[_0x72ec('0x33')]:_0x26d972[_0x72ec('0x2e')];_0xd2655d[_0x72ec('0x37')]=qs[_0x72ec('0x38')](_0xc292a0[_0x72ec('0x31')][_0x72ec('0x38')]);_0xd2655d[_0x72ec('0x39')]=qs[_0x72ec('0x32')](_[_0x72ec('0x3a')](_0xc292a0[_0x72ec('0x31')],_0x26d972[_0x72ec('0x32')]));if(_0xc292a0[_0x72ec('0x31')][_0x72ec('0x3b')]){_0xd2655d['where']=_[_0x72ec('0x3c')](_0xd2655d[_0x72ec('0x39')],{'$or':_[_0x72ec('0x2f')](_0xd2655d[_0x72ec('0x33')],function(_0x56e069){var _0x89f981={};_0x89f981[_0x56e069]={'$like':'%'+_0xc292a0[_0x72ec('0x31')][_0x72ec('0x3b')]+'%'};return _0x89f981;})});}_0xd2655d=_[_0x72ec('0x3c')]({},_0xd2655d,_0xc292a0[_0x72ec('0x44')]);return _0x5992a5[_0x72ec('0x4c')](_0xd2655d);}})[_0x72ec('0x23')](function(_0x50a00b){if(_0x50a00b){_0xe25684=_0x50a00b[_0x72ec('0x43')];if(!_0xc292a0[_0x72ec('0x31')][_0x72ec('0x36')](_0x72ec('0x4d'))){_0xd2655d[_0x72ec('0x1d')]=qs[_0x72ec('0x1d')](_0xc292a0[_0x72ec('0x31')][_0x72ec('0x1d')]);_0xd2655d[_0x72ec('0x1b')]=qs[_0x72ec('0x1b')](_0xc292a0[_0x72ec('0x31')][_0x72ec('0x1b')]);}return _0x5992a5[_0x72ec('0x4c')](_0xd2655d);}})[_0x72ec('0x23')](function(_0x1ab82c){if(_0x1ab82c){return _0x1ab82c?{'count':_0xe25684,'rows':_0x1ab82c}:null;}})[_0x72ec('0x23')](respondWithResult(_0x48d166,null))['catch'](handleError(_0x48d166,null));};exports[_0x72ec('0x4e')]=function(_0x398e17,_0x334d3b,_0x11ebfb){if(_0x398e17[_0x72ec('0x48')]['id']){delete _0x398e17[_0x72ec('0x48')]['id'];}return db['DeskAccount']['findOne']({'where':{'id':_0x398e17[_0x72ec('0x49')]['id']}})[_0x72ec('0x23')](handleEntityNotFound(_0x334d3b,null))[_0x72ec('0x23')](function(_0x333fe4){if(_0x333fe4){_0x398e17['body'][_0x72ec('0x4f')]=_0x333fe4['id'];_0x398e17[_0x72ec('0x48')][_0x72ec('0x50')]=integrations[_0x72ec('0x51')](_0x398e17[_0x72ec('0x48')][_0x72ec('0x52')],_0x398e17['body']['type']);_0x398e17[_0x72ec('0x48')][_0x72ec('0x53')]=integrations[_0x72ec('0x54')](_0x398e17[_0x72ec('0x48')][_0x72ec('0x52')],_0x398e17[_0x72ec('0x48')][_0x72ec('0x2c')]);return db[_0x72ec('0x4b')]['create'](_0x398e17[_0x72ec('0x48')],{'include':[{'model':db[_0x72ec('0x55')],'as':_0x72ec('0x50')},{'model':db['DeskField'],'as':_0x72ec('0x53')}]});}return null;})[_0x72ec('0x23')](respondWithResult(_0x334d3b,null))[_0x72ec('0x46')](handleError(_0x334d3b,null));};exports[_0x72ec('0x56')]=function(_0x1d984c,_0x834c4c,_0x2b091f){var _0x2a2226=[{'name':_0x72ec('0x57'),'label':_0x72ec('0x57'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x23cc75='';return db['DeskAccount'][_0x72ec('0x4a')]({'where':{'id':_0x1d984c['params']['id']},'attributes':['id',_0x72ec('0x58'),_0x72ec('0x59'),_0x72ec('0x5a'),_0x72ec('0x5b'),_0x72ec('0x5c'),'consumerSecret',_0x72ec('0x5d'),'tokenSecret']})[_0x72ec('0x23')](handleEntityNotFound(_0x834c4c,null))['then'](function(_0x200a31){if(_0x200a31){_0x23cc75=_0x200a31[_0x72ec('0x58')];var _0x361161=_0x23cc75[_0x72ec('0x5e')](-0x1);if(_0x361161==='/'){_0x23cc75=_0x23cc75['substring'](0x0,_0x23cc75['lastIndexOf'](_0x361161));}var _0x12706d={'method':_0x72ec('0x5f'),'uri':util[_0x72ec('0x60')](_0x72ec('0x61'),_0x23cc75),'headers':{'Content-Type':_0x72ec('0x62'),'Accept':'application/json'},'json':!![]};if(_0x200a31[_0x72ec('0x59')]===_0x72ec('0x63')){_0x12706d[_0x72ec('0x64')][_0x72ec('0x65')]=util[_0x72ec('0x60')](_0x72ec('0x66'),new Buffer(util[_0x72ec('0x60')](_0x72ec('0x67'),_0x200a31[_0x72ec('0x5a')],_0x200a31[_0x72ec('0x5b')]))['toString'](_0x72ec('0x68')));}return rp(_0x12706d)['then'](function(_0x4e19d5){return _0x2a2226[_0x72ec('0x69')](_[_0x72ec('0x2f')](_0x4e19d5['_embedded'][_0x72ec('0x6a')],function(_0x5d255d){return{'id':_0x5d255d[_0x72ec('0x27')],'name':_0x5d255d[_0x72ec('0x27')],'type':_0x5d255d['type'],'active':_0x5d255d[_0x72ec('0x6b')],'label':_0x5d255d[_0x72ec('0x6c')],'custom':!![]};}));});}})[_0x72ec('0x23')](function(_0x10183d){return{'count':_0x10183d[_0x72ec('0x43')],'rows':_0x10183d};})['then'](respondWithResult(_0x834c4c,null))[_0x72ec('0x46')](function(_0x38935c){var _0x24e371=_0x1d984c['query'][_0x72ec('0x6d')]?0x1f4:_0x38935c[_0x72ec('0x6e')]||0x1f4;logger[_0x72ec('0x25')](_0x72ec('0x6f'),'getFields',_0x24e371,JSON[_0x72ec('0x70')](_0x38935c));delete _0x38935c[_0x72ec('0x27')];if(_0x24e371===0x191){_0x24e371=0x190;}_0x834c4c[_0x72ec('0x18')](_0x24e371)['send'](_0x1d984c['query'][_0x72ec('0x6d')]?{'message':_0x72ec('0x71'),'statusCode':_0x38935c[_0x72ec('0x6e')]}:_0x38935c);});};
\ No newline at end of file
index d5c6cf8..2f5a0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb824=['bluebird','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','DeskAccount','int_desk_accounts','lodash','util','api','moment'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0xb824,0xe6));var _0x4b82=function(_0x60f2c1,_0x294bed){_0x60f2c1=_0x60f2c1-0x0;var _0x383c78=_0xb824[_0x60f2c1];return _0x383c78;};'use strict';var _=require(_0x4b82('0x0'));var util=require(_0x4b82('0x1'));var logger=require('../../config/logger')(_0x4b82('0x2'));var moment=require(_0x4b82('0x3'));var BPromise=require(_0x4b82('0x4'));var rp=require(_0x4b82('0x5'));var fs=require('fs');var path=require(_0x4b82('0x6'));var rimraf=require(_0x4b82('0x7'));var config=require(_0x4b82('0x8'));var attributes=require(_0x4b82('0x9'));var integrations=require(_0x4b82('0xa'));module['exports']=function(_0x493903,_0xbf6491){return _0x493903['define'](_0x4b82('0xb'),attributes,{'tableName':_0x4b82('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x835b=['request-promise','path','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','int_desk_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x57e13e,_0xfc9ca5){var _0x1dc05d=function(_0x123cd0){while(--_0x123cd0){_0x57e13e['push'](_0x57e13e['shift']());}};_0x1dc05d(++_0xfc9ca5);}(_0x835b,0xf6));var _0xb835=function(_0x2fd71a,_0x3b7db6){_0x2fd71a=_0x2fd71a-0x0;var _0x497a1f=_0x835b[_0x2fd71a];return _0x497a1f;};'use strict';var _=require(_0xb835('0x0'));var util=require(_0xb835('0x1'));var logger=require(_0xb835('0x2'))(_0xb835('0x3'));var moment=require(_0xb835('0x4'));var BPromise=require(_0xb835('0x5'));var rp=require(_0xb835('0x6'));var fs=require('fs');var path=require(_0xb835('0x7'));var rimraf=require('rimraf');var config=require(_0xb835('0x8'));var attributes=require(_0xb835('0x9'));var integrations=require(_0xb835('0xa'));module[_0xb835('0xb')]=function(_0x258ee3,_0x40eb02){return _0x258ee3[_0xb835('0xc')]('DeskAccount',attributes,{'tableName':_0xb835('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 000ece5..8311863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9d3=['options','raw','where','limit','include','map','model','attributes','info','GetDeskAccount','ShowDeskAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','DeskAccount,\x20%s,\x20%s','debug','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','DeskAccount','findAll'];(function(_0xdee490,_0x5820f4){var _0x25652a=function(_0x4d7fda){while(--_0x4d7fda){_0xdee490['push'](_0xdee490['shift']());}};_0x25652a(++_0x5820f4);}(_0xd9d3,0x71));var _0x3d9d=function(_0x37684,_0x2cff8d){_0x37684=_0x37684-0x0;var _0x31b645=_0xd9d3[_0x37684];return _0x31b645;};'use strict';var _=require(_0x3d9d('0x0'));var util=require(_0x3d9d('0x1'));var moment=require('moment');var BPromise=require(_0x3d9d('0x2'));var rs=require(_0x3d9d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d9d('0x4'))['db'];var utils=require(_0x3d9d('0x5'));var logger=require(_0x3d9d('0x6'))(_0x3d9d('0x7'));var config=require(_0x3d9d('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x367f54,_0x158d65,_0x5c2be7){return new BPromise(function(_0x3cb311,_0x3b5a5b){return client[_0x3d9d('0x9')](_0x367f54,_0x5c2be7)[_0x3d9d('0xa')](function(_0x13fbe2){logger['info'](_0x3d9d('0xb'),_0x158d65,'request\x20sent');logger[_0x3d9d('0xc')](_0x3d9d('0xd'),_0x158d65,_0x3d9d('0xe'),JSON[_0x3d9d('0xf')](_0x13fbe2));if(_0x13fbe2[_0x3d9d('0x10')]){if(_0x13fbe2[_0x3d9d('0x10')][_0x3d9d('0x11')]===0x1f4){logger['error'](_0x3d9d('0xb'),_0x158d65,_0x13fbe2['error'][_0x3d9d('0x12')]);return _0x3b5a5b(_0x13fbe2['error'][_0x3d9d('0x12')]);}logger[_0x3d9d('0x10')]('DeskAccount,\x20%s,\x20%s',_0x158d65,_0x13fbe2['error'][_0x3d9d('0x12')]);return _0x3cb311(_0x13fbe2[_0x3d9d('0x10')][_0x3d9d('0x12')]);}else{logger['info'](_0x3d9d('0xb'),_0x158d65,'request\x20sent');_0x3cb311(_0x13fbe2[_0x3d9d('0x13')][_0x3d9d('0x12')]);}})[_0x3d9d('0x14')](function(_0x24cc8a){logger[_0x3d9d('0x10')](_0x3d9d('0xb'),_0x158d65,_0x24cc8a);_0x3b5a5b(_0x24cc8a);});});}exports['GetDeskAccount']=function(_0xada4af){var _0x22c29f=this;return new Promise(function(_0x15d205,_0x156938){return db[_0x3d9d('0x15')][_0x3d9d('0x16')]({'raw':_0xada4af[_0x3d9d('0x17')]?_0xada4af['options'][_0x3d9d('0x18')]===undefined?!![]:![]:!![],'where':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x19')]||null:null,'attributes':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')]['attributes']||null:null,'limit':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x1a')]||null:null,'include':_0xada4af[_0x3d9d('0x17')]?_0xada4af[_0x3d9d('0x17')][_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0xada4af['options']['include'],function(_0x2e7f47){return{'model':db[_0x2e7f47[_0x3d9d('0x1d')]],'as':_0x2e7f47['as'],'attributes':_0x2e7f47['attributes'],'include':_0x2e7f47[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x2e7f47[_0x3d9d('0x1b')],function(_0x4c93c9){return{'model':db[_0x4c93c9[_0x3d9d('0x1d')]],'as':_0x4c93c9['as'],'attributes':_0x4c93c9[_0x3d9d('0x1e')],'include':_0x4c93c9[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x4c93c9['include'],function(_0x1082fa){return{'model':db[_0x1082fa['model']],'as':_0x1082fa['as'],'attributes':_0x1082fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x3d9d('0xa')](function(_0x2d7b10){logger[_0x3d9d('0x1f')](_0x3d9d('0x20'),_0xada4af);logger[_0x3d9d('0xc')](_0x3d9d('0x20'),_0xada4af,JSON[_0x3d9d('0xf')](_0x2d7b10));_0x15d205(_0x2d7b10);})['catch'](function(_0x4250d5){logger['error'](_0x3d9d('0x20'),_0x4250d5['message'],_0xada4af);_0x156938(_0x22c29f[_0x3d9d('0x10')](0x1f4,_0x4250d5[_0x3d9d('0x12')]));});});};exports[_0x3d9d('0x21')]=function(_0x5833e0){var _0x57e2a2=this;return new Promise(function(_0x20414b,_0x5bb779){return db[_0x3d9d('0x15')]['find']({'raw':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x19')]||null:null,'attributes':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x1e')]||null:null,'include':_0x5833e0[_0x3d9d('0x17')]?_0x5833e0['options'][_0x3d9d('0x1b')]?_['map'](_0x5833e0[_0x3d9d('0x17')][_0x3d9d('0x1b')],function(_0x1fa70d){return{'model':db[_0x1fa70d[_0x3d9d('0x1d')]],'as':_0x1fa70d['as'],'attributes':_0x1fa70d[_0x3d9d('0x1e')],'include':_0x1fa70d[_0x3d9d('0x1b')]?_['map'](_0x1fa70d[_0x3d9d('0x1b')],function(_0x3a118a){return{'model':db[_0x3a118a[_0x3d9d('0x1d')]],'as':_0x3a118a['as'],'attributes':_0x3a118a[_0x3d9d('0x1e')],'include':_0x3a118a[_0x3d9d('0x1b')]?_[_0x3d9d('0x1c')](_0x3a118a[_0x3d9d('0x1b')],function(_0x270f16){return{'model':db[_0x270f16[_0x3d9d('0x1d')]],'as':_0x270f16['as'],'attributes':_0x270f16[_0x3d9d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x3d9d('0xa')](function(_0x5dae44){logger[_0x3d9d('0x1f')](_0x3d9d('0x21'),_0x5833e0);logger['debug'](_0x3d9d('0x21'),_0x5833e0,JSON[_0x3d9d('0xf')](_0x5dae44));_0x20414b(_0x5dae44);})['catch'](function(_0x4e2a2a){logger[_0x3d9d('0x10')](_0x3d9d('0x21'),_0x4e2a2a['message'],_0x5833e0);_0x5bb779(_0x57e2a2[_0x3d9d('0x10')](0x1f4,_0x4e2a2a[_0x3d9d('0x12')]));});});};
\ No newline at end of file
+var _0xbd8e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','attributes','limit','include','map','model','ShowDeskAccount','find','where','lodash','moment'];(function(_0x1e5dd7,_0x1aff9a){var _0x48f942=function(_0x351236){while(--_0x351236){_0x1e5dd7['push'](_0x1e5dd7['shift']());}};_0x48f942(++_0x1aff9a);}(_0xbd8e,0x1df));var _0xebd8=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbd8e[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xebd8('0x0'));var util=require('util');var moment=require(_0xebd8('0x1'));var BPromise=require(_0xebd8('0x2'));var rs=require(_0xebd8('0x3'));var fs=require('fs');var Redis=require(_0xebd8('0x4'));var db=require(_0xebd8('0x5'))['db'];var utils=require(_0xebd8('0x6'));var logger=require('../../config/logger')(_0xebd8('0x7'));var config=require(_0xebd8('0x8'));var jayson=require(_0xebd8('0x9'));var client=jayson[_0xebd8('0xa')][_0xebd8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x39abef,_0x35be98,_0x1ab7bd){return new BPromise(function(_0x2713a0,_0x218ec4){return client[_0xebd8('0xc')](_0x39abef,_0x1ab7bd)[_0xebd8('0xd')](function(_0x5ae5c6){logger[_0xebd8('0xe')]('DeskAccount,\x20%s,\x20%s',_0x35be98,'request\x20sent');logger[_0xebd8('0xf')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x35be98,_0xebd8('0x10'),JSON[_0xebd8('0x11')](_0x5ae5c6));if(_0x5ae5c6[_0xebd8('0x12')]){if(_0x5ae5c6['error'][_0xebd8('0x13')]===0x1f4){logger[_0xebd8('0x12')](_0xebd8('0x14'),_0x35be98,_0x5ae5c6[_0xebd8('0x12')][_0xebd8('0x15')]);return _0x218ec4(_0x5ae5c6['error']['message']);}logger[_0xebd8('0x12')]('DeskAccount,\x20%s,\x20%s',_0x35be98,_0x5ae5c6['error'][_0xebd8('0x15')]);return _0x2713a0(_0x5ae5c6['error'][_0xebd8('0x15')]);}else{logger[_0xebd8('0xe')](_0xebd8('0x14'),_0x35be98,_0xebd8('0x10'));_0x2713a0(_0x5ae5c6[_0xebd8('0x16')]['message']);}})[_0xebd8('0x17')](function(_0xed024e){logger[_0xebd8('0x12')](_0xebd8('0x14'),_0x35be98,_0xed024e);_0x218ec4(_0xed024e);});});}exports[_0xebd8('0x18')]=function(_0x38c6f2){var _0x4a630e=this;return new Promise(function(_0x2cc977,_0x2c9912){return db[_0xebd8('0x19')][_0xebd8('0x1a')]({'raw':_0x38c6f2[_0xebd8('0x1b')]?_0x38c6f2[_0xebd8('0x1b')][_0xebd8('0x1c')]===undefined?!![]:![]:!![],'where':_0x38c6f2[_0xebd8('0x1b')]?_0x38c6f2[_0xebd8('0x1b')]['where']||null:null,'attributes':_0x38c6f2[_0xebd8('0x1b')]?_0x38c6f2[_0xebd8('0x1b')][_0xebd8('0x1d')]||null:null,'limit':_0x38c6f2[_0xebd8('0x1b')]?_0x38c6f2[_0xebd8('0x1b')][_0xebd8('0x1e')]||null:null,'include':_0x38c6f2[_0xebd8('0x1b')]?_0x38c6f2['options'][_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0x38c6f2['options'][_0xebd8('0x1f')],function(_0xdc3487){return{'model':db[_0xdc3487[_0xebd8('0x21')]],'as':_0xdc3487['as'],'attributes':_0xdc3487['attributes'],'include':_0xdc3487[_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0xdc3487['include'],function(_0x1ea725){return{'model':db[_0x1ea725[_0xebd8('0x21')]],'as':_0x1ea725['as'],'attributes':_0x1ea725[_0xebd8('0x1d')],'include':_0x1ea725[_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0x1ea725['include'],function(_0x3dc49a){return{'model':db[_0x3dc49a[_0xebd8('0x21')]],'as':_0x3dc49a['as'],'attributes':_0x3dc49a[_0xebd8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xebd8('0xd')](function(_0x12ea1f){logger['info']('GetDeskAccount',_0x38c6f2);logger[_0xebd8('0xf')](_0xebd8('0x18'),_0x38c6f2,JSON[_0xebd8('0x11')](_0x12ea1f));_0x2cc977(_0x12ea1f);})[_0xebd8('0x17')](function(_0x1b1eb4){logger[_0xebd8('0x12')](_0xebd8('0x18'),_0x1b1eb4[_0xebd8('0x15')],_0x38c6f2);_0x2c9912(_0x4a630e['error'](0x1f4,_0x1b1eb4[_0xebd8('0x15')]));});});};exports[_0xebd8('0x22')]=function(_0x188b48){var _0xb8b36d=this;return new Promise(function(_0x2f4c6d,_0x511687){return db[_0xebd8('0x19')][_0xebd8('0x23')]({'raw':_0x188b48['options']?_0x188b48[_0xebd8('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x188b48[_0xebd8('0x1b')]?_0x188b48['options'][_0xebd8('0x24')]||null:null,'attributes':_0x188b48[_0xebd8('0x1b')]?_0x188b48['options'][_0xebd8('0x1d')]||null:null,'include':_0x188b48[_0xebd8('0x1b')]?_0x188b48[_0xebd8('0x1b')][_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0x188b48['options'][_0xebd8('0x1f')],function(_0x47c800){return{'model':db[_0x47c800['model']],'as':_0x47c800['as'],'attributes':_0x47c800[_0xebd8('0x1d')],'include':_0x47c800[_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0x47c800[_0xebd8('0x1f')],function(_0x3cc799){return{'model':db[_0x3cc799['model']],'as':_0x3cc799['as'],'attributes':_0x3cc799[_0xebd8('0x1d')],'include':_0x3cc799[_0xebd8('0x1f')]?_[_0xebd8('0x20')](_0x3cc799[_0xebd8('0x1f')],function(_0x2af4d2){return{'model':db[_0x2af4d2[_0xebd8('0x21')]],'as':_0x2af4d2['as'],'attributes':_0x2af4d2[_0xebd8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xebd8('0xd')](function(_0x3aa900){logger[_0xebd8('0xe')](_0xebd8('0x22'),_0x188b48);logger[_0xebd8('0xf')](_0xebd8('0x22'),_0x188b48,JSON[_0xebd8('0x11')](_0x3aa900));_0x2f4c6d(_0x3aa900);})[_0xebd8('0x17')](function(_0x330ac6){logger[_0xebd8('0x12')]('ShowDeskAccount',_0x330ac6[_0xebd8('0x15')],_0x188b48);_0x511687(_0xb8b36d[_0xebd8('0x12')](0x1f4,_0x330ac6[_0xebd8('0x15')]));});});};
\ No newline at end of file
index a6aef9c..7bb082e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x42679f,_0x47d7cf){var _0x253ff8=function(_0x505c79){while(--_0x505c79){_0x42679f['push'](_0x42679f['shift']());}};_0x253ff8(++_0x47d7cf);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',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/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x3c481a,_0x47c77e){var _0x29516b=function(_0x4e4f7e){while(--_0x4e4f7e){_0x3c481a['push'](_0x3c481a['shift']());}};_0x29516b(++_0x47c77e);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'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/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',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/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
index 3dc85be..0d74206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98f6=['STRING','exports'];(function(_0xfbae72,_0x2f4684){var _0x244e37=function(_0x468419){while(--_0x468419){_0xfbae72['push'](_0xfbae72['shift']());}};_0x244e37(++_0x2f4684);}(_0x98f6,0x93));var _0x698f=function(_0x5dc45d,_0x55f90f){_0x5dc45d=_0x5dc45d-0x0;var _0x4ce697=_0x98f6[_0x5dc45d];return _0x4ce697;};'use strict';var Sequelize=require('sequelize');module[_0x698f('0x0')]={'name':{'type':Sequelize[_0x698f('0x1')]},'description':{'type':Sequelize[_0x698f('0x1')]}};
\ No newline at end of file
+var _0x09d5=['sequelize','STRING'];(function(_0x3b7b8a,_0x52c3b0){var _0x441206=function(_0x5d34d3){while(--_0x5d34d3){_0x3b7b8a['push'](_0x3b7b8a['shift']());}};_0x441206(++_0x52c3b0);}(_0x09d5,0xaa));var _0x509d=function(_0x360ca9,_0x24962f){_0x360ca9=_0x360ca9-0x0;var _0x10c705=_0x09d5[_0x360ca9];return _0x10c705;};'use strict';var Sequelize=require(_0x509d('0x0'));module['exports']={'name':{'type':Sequelize[_0x509d('0x1')]},'description':{'type':Sequelize[_0x509d('0x1')]}};
\ No newline at end of file
index 7511ce3..b87241a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa6=['where','merge','type','VIRTUAL','options','includeAll','rows','catch','show','include','find','create','body','params','getFields','findOne','order','getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','undefined','count','set','Content-Range','reject','update','then','destroy','status','error','name','send','index','map','DeskConfiguration','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','filters','pick','filter'];(function(_0x47a295,_0x28fc80){var _0x9a8d15=function(_0xbfcbca){while(--_0xbfcbca){_0x47a295['push'](_0x47a295['shift']());}};_0x9a8d15(++_0x28fc80);}(_0x7fa6,0x67));var _0x67fa=function(_0x41ade7,_0x21627f){_0x41ade7=_0x41ade7-0x0;var _0x248d77=_0x7fa6[_0x41ade7];return _0x248d77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x67fa('0x0'));var zipdir=require(_0x67fa('0x1'));var jsonpatch=require(_0x67fa('0x2'));var rp=require(_0x67fa('0x3'));var moment=require('moment');var BPromise=require(_0x67fa('0x4'));var Mustache=require(_0x67fa('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x67fa('0x6'));var ejs=require(_0x67fa('0x7'));var fs=require('fs');var fs_extra=require(_0x67fa('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x67fa('0x9'));var jsforce=require(_0x67fa('0xa'));var deskjs=require(_0x67fa('0xb'));var toCsv=require(_0x67fa('0x6'));var querystring=require('querystring');var Papa=require(_0x67fa('0xc'));var Redis=require(_0x67fa('0xd'));var authService=require(_0x67fa('0xe'));var qs=require(_0x67fa('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x67fa('0x10'))(_0x67fa('0x11'));var utils=require(_0x67fa('0x12'));var config=require(_0x67fa('0x13'));var licenseUtil=require(_0x67fa('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5946a3,_0xfc9057){_0xfc9057=_0xfc9057||0xcc;return function(_0x2ccf34){if(_0x2ccf34){return _0x5946a3[_0x67fa('0x15')](_0xfc9057);}return _0x5946a3['status'](_0xfc9057)[_0x67fa('0x16')]();};}function respondWithResult(_0x3d7804,_0x2eb9c4){_0x2eb9c4=_0x2eb9c4||0xc8;return function(_0x3ad37a){if(_0x3ad37a){return _0x3d7804['status'](_0x2eb9c4)['json'](_0x3ad37a);}};}function respondWithFilteredResult(_0x5bfa9f,_0x3e9235){return function(_0x3e5c9f){if(_0x3e5c9f){var _0x17c86d=typeof _0x3e9235[_0x67fa('0x17')]===_0x67fa('0x18')&&typeof _0x3e9235['limit']===_0x67fa('0x18');var _0x2d7e1e=_0x3e5c9f[_0x67fa('0x19')];var _0x3fee35=_0x17c86d?0x0:_0x3e9235[_0x67fa('0x17')];var _0x599f7d=_0x17c86d?_0x3e5c9f[_0x67fa('0x19')]:_0x3e9235[_0x67fa('0x17')]+_0x3e9235['limit'];var _0xab57c0;if(_0x599f7d>=_0x2d7e1e){_0x599f7d=_0x2d7e1e;_0xab57c0=0xc8;}else{_0xab57c0=0xce;}_0x5bfa9f['status'](_0xab57c0);return _0x5bfa9f[_0x67fa('0x1a')](_0x67fa('0x1b'),_0x3fee35+'-'+_0x599f7d+'/'+_0x2d7e1e)['json'](_0x3e5c9f);}return null;};}function patchUpdates(_0x288e18){return function(_0x1518c0){try{jsonpatch['apply'](_0x1518c0,_0x288e18,!![]);}catch(_0x51ccf8){return BPromise[_0x67fa('0x1c')](_0x51ccf8);}return _0x1518c0['save']();};}function saveUpdates(_0x11088f,_0x59412c){return function(_0x15f5fe){if(_0x15f5fe){return _0x15f5fe[_0x67fa('0x1d')](_0x11088f)[_0x67fa('0x1e')](function(_0x3d063e){return _0x3d063e;});}return null;};}function removeEntity(_0x2a85d0,_0x5eea55){return function(_0xc712b7){if(_0xc712b7){return _0xc712b7[_0x67fa('0x1f')]()['then'](function(){_0x2a85d0[_0x67fa('0x20')](0xcc)[_0x67fa('0x16')]();});}};}function handleEntityNotFound(_0x1f1466,_0xa35eb6){return function(_0x12d2fe){if(!_0x12d2fe){_0x1f1466[_0x67fa('0x15')](0x194);}return _0x12d2fe;};}function handleError(_0x4133e3,_0x199fdb){_0x199fdb=_0x199fdb||0x1f4;return function(_0x108acf){logger[_0x67fa('0x21')](_0x108acf['stack']);if(_0x108acf[_0x67fa('0x22')]){delete _0x108acf['name'];}_0x4133e3[_0x67fa('0x20')](_0x199fdb)[_0x67fa('0x23')](_0x108acf);};}exports[_0x67fa('0x24')]=function(_0x5e3d54,_0x5a3f53){var _0x22eff2={},_0x3cade4={},_0x3f7364={'count':0x0,'rows':[]};var _0x16af8b=_[_0x67fa('0x25')](db[_0x67fa('0x26')][_0x67fa('0x27')],function(_0xe647ae){return{'name':_0xe647ae[_0x67fa('0x28')],'type':_0xe647ae['type']['key']};});_0x3cade4[_0x67fa('0x29')]=_['map'](_0x16af8b,_0x67fa('0x22'));_0x3cade4[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x5e3d54[_0x67fa('0x2a')]);_0x3cade4['filters']=_[_0x67fa('0x2c')](_0x3cade4[_0x67fa('0x29')],_0x3cade4[_0x67fa('0x2a')]);_0x22eff2[_0x67fa('0x2d')]=_['intersection'](_0x3cade4[_0x67fa('0x29')],qs[_0x67fa('0x2e')](_0x5e3d54['query'][_0x67fa('0x2e')]));_0x22eff2[_0x67fa('0x2d')]=_0x22eff2[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x22eff2[_0x67fa('0x2d')]:_0x3cade4[_0x67fa('0x29')];if(!_0x5e3d54['query'][_0x67fa('0x30')](_0x67fa('0x31'))){_0x22eff2[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x32')]);_0x22eff2[_0x67fa('0x17')]=qs['offset'](_0x5e3d54['query'][_0x67fa('0x17')]);}_0x22eff2['order']=qs[_0x67fa('0x33')](_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x22eff2['where']=qs[_0x67fa('0x34')](_[_0x67fa('0x35')](_0x5e3d54[_0x67fa('0x2a')],_0x3cade4[_0x67fa('0x34')]),_0x16af8b);if(_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x36')]){_0x22eff2[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x22eff2[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x16af8b,function(_0x3541de){if(_0x3541de[_0x67fa('0x39')]!==_0x67fa('0x3a')){var _0x13c41a={};_0x13c41a[_0x3541de[_0x67fa('0x22')]]={'$like':'%'+_0x5e3d54[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x13c41a;}})});}_0x22eff2=_[_0x67fa('0x38')]({},_0x22eff2,_0x5e3d54[_0x67fa('0x3b')]);var _0x3d308f={'where':_0x22eff2['where']};return db[_0x67fa('0x26')][_0x67fa('0x19')](_0x3d308f)[_0x67fa('0x1e')](function(_0x55d7bc){_0x3f7364[_0x67fa('0x19')]=_0x55d7bc;if(_0x5e3d54['query'][_0x67fa('0x3c')]){_0x22eff2['include']=[{'all':!![]}];}return db[_0x67fa('0x26')]['findAll'](_0x22eff2);})[_0x67fa('0x1e')](function(_0x40e5ae){_0x3f7364[_0x67fa('0x3d')]=_0x40e5ae;return _0x3f7364;})['then'](respondWithFilteredResult(_0x5a3f53,_0x22eff2))[_0x67fa('0x3e')](handleError(_0x5a3f53,null));};exports[_0x67fa('0x3f')]=function(_0x48aa80,_0x498e6b){var _0x2f7c8d={'raw':![],'where':{'id':_0x48aa80['params']['id']}},_0x32373b={};_0x32373b[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x26')][_0x67fa('0x27')]);_0x32373b['query']=_['keys'](_0x48aa80[_0x67fa('0x2a')]);_0x32373b[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x32373b[_0x67fa('0x29')],_0x32373b[_0x67fa('0x2a')]);_0x2f7c8d[_0x67fa('0x2d')]=_['intersection'](_0x32373b['model'],qs[_0x67fa('0x2e')](_0x48aa80[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x2f7c8d['attributes']=_0x2f7c8d[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x2f7c8d[_0x67fa('0x2d')]:_0x32373b[_0x67fa('0x29')];if(_0x48aa80[_0x67fa('0x2a')]['includeAll']){_0x2f7c8d[_0x67fa('0x40')]=[{'all':!![]}];}_0x2f7c8d=_[_0x67fa('0x38')]({},_0x2f7c8d,_0x48aa80[_0x67fa('0x3b')]);return db[_0x67fa('0x26')][_0x67fa('0x41')](_0x2f7c8d)['then'](handleEntityNotFound(_0x498e6b,null))[_0x67fa('0x1e')](respondWithResult(_0x498e6b,null))[_0x67fa('0x3e')](handleError(_0x498e6b,null));};exports[_0x67fa('0x42')]=function(_0x3de499,_0x30b074){return db[_0x67fa('0x26')][_0x67fa('0x42')](_0x3de499[_0x67fa('0x43')],{})['then'](respondWithResult(_0x30b074,0xc9))[_0x67fa('0x3e')](handleError(_0x30b074,null));};exports[_0x67fa('0x1d')]=function(_0x1ce123,_0x322c59){if(_0x1ce123[_0x67fa('0x43')]['id']){delete _0x1ce123[_0x67fa('0x43')]['id'];}return db['DeskConfiguration'][_0x67fa('0x41')]({'where':{'id':_0x1ce123[_0x67fa('0x44')]['id']}})['then'](handleEntityNotFound(_0x322c59,null))[_0x67fa('0x1e')](saveUpdates(_0x1ce123['body'],null))[_0x67fa('0x1e')](respondWithResult(_0x322c59,null))['catch'](handleError(_0x322c59,null));};exports[_0x67fa('0x1f')]=function(_0x55c521,_0x259aa9){return db['DeskConfiguration'][_0x67fa('0x41')]({'where':{'id':_0x55c521[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x259aa9,null))['then'](removeEntity(_0x259aa9,null))[_0x67fa('0x3e')](handleError(_0x259aa9,null));};exports[_0x67fa('0x45')]=function(_0x1affdc,_0x436fa0,_0x13466b){var _0x182ddf={};var _0x16dcd7={};var _0x26b750;var _0x257f03;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x1affdc[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x436fa0,null))[_0x67fa('0x1e')](function(_0xf8ed59){if(_0xf8ed59){_0x26b750=_0xf8ed59;_0x16dcd7[_0x67fa('0x29')]=_['keys'](db['DeskField'][_0x67fa('0x27')]);_0x16dcd7[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x1affdc['query']);_0x16dcd7['filters']=_[_0x67fa('0x2c')](_0x16dcd7[_0x67fa('0x29')],_0x16dcd7['query']);_0x182ddf[_0x67fa('0x2d')]=_['intersection'](_0x16dcd7['model'],qs['fields'](_0x1affdc['query'][_0x67fa('0x2e')]));_0x182ddf[_0x67fa('0x2d')]=_0x182ddf[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x182ddf['attributes']:_0x16dcd7[_0x67fa('0x29')];_0x182ddf[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x182ddf['where']=qs[_0x67fa('0x34')](_['pick'](_0x1affdc['query'],_0x16dcd7[_0x67fa('0x34')]));if(_0x1affdc['query']['filter']){_0x182ddf['where']=_['merge'](_0x182ddf[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x182ddf[_0x67fa('0x2d')],function(_0x318dc0){var _0x3d477e={};_0x3d477e[_0x318dc0]={'$like':'%'+_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x3d477e;})});}_0x182ddf=_[_0x67fa('0x38')]({},_0x182ddf,_0x1affdc[_0x67fa('0x3b')]);return _0x26b750[_0x67fa('0x45')](_0x182ddf);}})['then'](function(_0x4d476a){if(_0x4d476a){_0x257f03=_0x4d476a['length'];if(!_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x182ddf['limit']=qs[_0x67fa('0x32')](_0x1affdc['query']['limit']);_0x182ddf['offset']=qs[_0x67fa('0x17')](_0x1affdc[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x26b750[_0x67fa('0x45')](_0x182ddf);}})[_0x67fa('0x1e')](function(_0x32cc85){if(_0x32cc85){return _0x32cc85?{'count':_0x257f03,'rows':_0x32cc85}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x436fa0,null))[_0x67fa('0x3e')](handleError(_0x436fa0,null));};exports[_0x67fa('0x48')]=function(_0x3cf588,_0x5378e7,_0x5a86c2){var _0x39eeaf={};var _0x3f5fae={};var _0x206e68;var _0x1e221a;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x3cf588[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x5378e7,null))[_0x67fa('0x1e')](function(_0x13c97c){if(_0x13c97c){_0x206e68=_0x13c97c;_0x3f5fae['model']=_['keys'](db[_0x67fa('0x49')][_0x67fa('0x27')]);_0x3f5fae[_0x67fa('0x2a')]=_['keys'](_0x3cf588['query']);_0x3f5fae[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x3f5fae['model'],_0x3f5fae[_0x67fa('0x2a')]);_0x39eeaf[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x3f5fae[_0x67fa('0x29')],qs['fields'](_0x3cf588['query'][_0x67fa('0x2e')]));_0x39eeaf[_0x67fa('0x2d')]=_0x39eeaf[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x39eeaf[_0x67fa('0x2d')]:_0x3f5fae[_0x67fa('0x29')];_0x39eeaf[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x39eeaf[_0x67fa('0x37')]=qs[_0x67fa('0x34')](_['pick'](_0x3cf588[_0x67fa('0x2a')],_0x3f5fae[_0x67fa('0x34')]));if(_0x3cf588['query'][_0x67fa('0x36')]){_0x39eeaf['where']=_[_0x67fa('0x38')](_0x39eeaf[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x39eeaf[_0x67fa('0x2d')],function(_0x3169db){var _0x20cddb={};_0x20cddb[_0x3169db]={'$like':'%'+_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x20cddb;})});}_0x39eeaf=_[_0x67fa('0x38')]({},_0x39eeaf,_0x3cf588['options']);return _0x206e68[_0x67fa('0x48')](_0x39eeaf);}})[_0x67fa('0x1e')](function(_0x3dd854){if(_0x3dd854){_0x1e221a=_0x3dd854['length'];if(!_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x39eeaf[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x3cf588[_0x67fa('0x2a')]['limit']);_0x39eeaf[_0x67fa('0x17')]=qs[_0x67fa('0x17')](_0x3cf588[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x206e68[_0x67fa('0x48')](_0x39eeaf);}})['then'](function(_0x3f8d2e){if(_0x3f8d2e){return _0x3f8d2e?{'count':_0x1e221a,'rows':_0x3f8d2e}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x5378e7,null))[_0x67fa('0x3e')](handleError(_0x5378e7,null));};exports[_0x67fa('0x4a')]=function(_0x1d373b,_0x178543,_0x5a4ac3){var _0x5deb91={};var _0x3a6c45={};var _0x59f467;var _0x87cfec;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0x1d373b[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x178543,null))['then'](function(_0x1b3ebd){if(_0x1b3ebd){_0x59f467=_0x1b3ebd;_0x3a6c45[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x49')][_0x67fa('0x27')]);_0x3a6c45[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0x1d373b[_0x67fa('0x2a')]);_0x3a6c45[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x3a6c45['model'],_0x3a6c45['query']);_0x5deb91[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x3a6c45[_0x67fa('0x29')],qs[_0x67fa('0x2e')](_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x5deb91[_0x67fa('0x2d')]=_0x5deb91[_0x67fa('0x2d')][_0x67fa('0x2f')]?_0x5deb91[_0x67fa('0x2d')]:_0x3a6c45[_0x67fa('0x29')];_0x5deb91[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0x1d373b[_0x67fa('0x2a')]['sort']);_0x5deb91[_0x67fa('0x37')]=qs['filters'](_[_0x67fa('0x35')](_0x1d373b[_0x67fa('0x2a')],_0x3a6c45['filters']));if(_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x36')]){_0x5deb91[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x5deb91[_0x67fa('0x37')],{'$or':_[_0x67fa('0x25')](_0x5deb91[_0x67fa('0x2d')],function(_0x5c597e){var _0x27627e={};_0x27627e[_0x5c597e]={'$like':'%'+_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x27627e;})});}_0x5deb91=_['merge']({},_0x5deb91,_0x1d373b[_0x67fa('0x3b')]);return _0x59f467['getDescriptions'](_0x5deb91);}})[_0x67fa('0x1e')](function(_0x178004){if(_0x178004){_0x87cfec=_0x178004[_0x67fa('0x2f')];if(!_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x30')](_0x67fa('0x31'))){_0x5deb91[_0x67fa('0x32')]=qs[_0x67fa('0x32')](_0x1d373b['query']['limit']);_0x5deb91['offset']=qs['offset'](_0x1d373b[_0x67fa('0x2a')][_0x67fa('0x17')]);}return _0x59f467[_0x67fa('0x4a')](_0x5deb91);}})[_0x67fa('0x1e')](function(_0x12c8f8){if(_0x12c8f8){return _0x12c8f8?{'count':_0x87cfec,'rows':_0x12c8f8}:null;}})['then'](respondWithResult(_0x178543,null))[_0x67fa('0x3e')](handleError(_0x178543,null));};exports[_0x67fa('0x4b')]=function(_0xcc0c91,_0x5271dc,_0x10a3b6){var _0x4da275={};var _0x52767c={};var _0x578041;var _0x3d0dfd;return db[_0x67fa('0x26')][_0x67fa('0x46')]({'where':{'id':_0xcc0c91[_0x67fa('0x44')]['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x5271dc,null))['then'](function(_0x21aa75){if(_0x21aa75){_0x578041=_0x21aa75;_0x52767c[_0x67fa('0x29')]=_[_0x67fa('0x2b')](db[_0x67fa('0x4c')][_0x67fa('0x27')]);_0x52767c[_0x67fa('0x2a')]=_[_0x67fa('0x2b')](_0xcc0c91['query']);_0x52767c[_0x67fa('0x34')]=_[_0x67fa('0x2c')](_0x52767c[_0x67fa('0x29')],_0x52767c['query']);_0x4da275[_0x67fa('0x2d')]=_[_0x67fa('0x2c')](_0x52767c['model'],qs['fields'](_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x2e')]));_0x4da275[_0x67fa('0x2d')]=_0x4da275['attributes']['length']?_0x4da275[_0x67fa('0x2d')]:_0x52767c[_0x67fa('0x29')];_0x4da275[_0x67fa('0x47')]=qs[_0x67fa('0x33')](_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x33')]);_0x4da275[_0x67fa('0x37')]=qs[_0x67fa('0x34')](_[_0x67fa('0x35')](_0xcc0c91[_0x67fa('0x2a')],_0x52767c[_0x67fa('0x34')]));if(_0xcc0c91[_0x67fa('0x2a')]['filter']){_0x4da275[_0x67fa('0x37')]=_[_0x67fa('0x38')](_0x4da275[_0x67fa('0x37')],{'$or':_['map'](_0x4da275['attributes'],function(_0x61251b){var _0x5a6fd3={};_0x5a6fd3[_0x61251b]={'$like':'%'+_0xcc0c91[_0x67fa('0x2a')][_0x67fa('0x36')]+'%'};return _0x5a6fd3;})});}_0x4da275=_[_0x67fa('0x38')]({},_0x4da275,_0xcc0c91[_0x67fa('0x3b')]);return _0x578041['getTags'](_0x4da275);}})[_0x67fa('0x1e')](function(_0x6d1c06){if(_0x6d1c06){_0x3d0dfd=_0x6d1c06[_0x67fa('0x2f')];if(!_0xcc0c91[_0x67fa('0x2a')]['hasOwnProperty'](_0x67fa('0x31'))){_0x4da275[_0x67fa('0x32')]=qs['limit'](_0xcc0c91['query']['limit']);_0x4da275[_0x67fa('0x17')]=qs[_0x67fa('0x17')](_0xcc0c91['query'][_0x67fa('0x17')]);}return _0x578041[_0x67fa('0x4b')](_0x4da275);}})[_0x67fa('0x1e')](function(_0x36562f){if(_0x36562f){return _0x36562f?{'count':_0x3d0dfd,'rows':_0x36562f}:null;}})[_0x67fa('0x1e')](respondWithResult(_0x5271dc,null))[_0x67fa('0x3e')](handleError(_0x5271dc,null));};exports['setTags']=function(_0x3c57df,_0x31a85f,_0xbbc69){if(_0x3c57df[_0x67fa('0x43')]['id']){delete _0x3c57df[_0x67fa('0x43')]['id'];}return db[_0x67fa('0x26')]['findOne']({'where':{'id':_0x3c57df['params']['id']}})[_0x67fa('0x1e')](handleEntityNotFound(_0x31a85f,null))['then'](function(_0x12384b){if(_0x12384b){return _0x12384b[_0x67fa('0x4d')](_0x3c57df[_0x67fa('0x43')][_0x67fa('0x4e')]||[]);}return null;})['then'](respondWithResult(_0x31a85f,null))['catch'](handleError(_0x31a85f,null));};
\ No newline at end of file
+var _0x3b37=['save','then','sendStatus','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','filter','options','includeAll','rows','catch','keys','include','find','create','body','update','getFields','findOne','params','DeskField','order','getSubjects','getDescriptions','getTags','setTags','rimraf','fast-json-patch','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','reject'];(function(_0x5f1b74,_0x498562){var _0x1fb5a0=function(_0x51341c){while(--_0x51341c){_0x5f1b74['push'](_0x5f1b74['shift']());}};_0x1fb5a0(++_0x498562);}(_0x3b37,0x19d));var _0x73b3=function(_0x4ef5b5,_0x3d2ae2){_0x4ef5b5=_0x4ef5b5-0x0;var _0x777012=_0x3b37[_0x4ef5b5];return _0x777012;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x73b3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x73b3('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x73b3('0x2'));var Mustache=require(_0x73b3('0x3'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x73b3('0x4'));var ejs=require(_0x73b3('0x5'));var fs=require('fs');var fs_extra=require(_0x73b3('0x6'));var _=require(_0x73b3('0x7'));var squel=require(_0x73b3('0x8'));var crypto=require(_0x73b3('0x9'));var jsforce=require(_0x73b3('0xa'));var deskjs=require(_0x73b3('0xb'));var toCsv=require(_0x73b3('0x4'));var querystring=require(_0x73b3('0xc'));var Papa=require(_0x73b3('0xd'));var Redis=require(_0x73b3('0xe'));var authService=require(_0x73b3('0xf'));var qs=require(_0x73b3('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x73b3('0x11'));var logger=require(_0x73b3('0x12'))(_0x73b3('0x13'));var utils=require(_0x73b3('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x73b3('0x15'));var db=require(_0x73b3('0x16'))['db'];function respondWithStatusCode(_0x2b9cdd,_0x5e90fb){_0x5e90fb=_0x5e90fb||0xcc;return function(_0x76e319){if(_0x76e319){return _0x2b9cdd['sendStatus'](_0x5e90fb);}return _0x2b9cdd[_0x73b3('0x17')](_0x5e90fb)[_0x73b3('0x18')]();};}function respondWithResult(_0x3148fe,_0x1c845c){_0x1c845c=_0x1c845c||0xc8;return function(_0x14adb7){if(_0x14adb7){return _0x3148fe['status'](_0x1c845c)[_0x73b3('0x19')](_0x14adb7);}};}function respondWithFilteredResult(_0x4efebf,_0x530fcd){return function(_0x2e0fe6){if(_0x2e0fe6){var _0x17012a=typeof _0x530fcd[_0x73b3('0x1a')]===_0x73b3('0x1b')&&typeof _0x530fcd[_0x73b3('0x1c')]===_0x73b3('0x1b');var _0x1e4a59=_0x2e0fe6[_0x73b3('0x1d')];var _0x2aaa68=_0x17012a?0x0:_0x530fcd[_0x73b3('0x1a')];var _0x5422a3=_0x17012a?_0x2e0fe6[_0x73b3('0x1d')]:_0x530fcd['offset']+_0x530fcd['limit'];var _0x338a3a;if(_0x5422a3>=_0x1e4a59){_0x5422a3=_0x1e4a59;_0x338a3a=0xc8;}else{_0x338a3a=0xce;}_0x4efebf[_0x73b3('0x17')](_0x338a3a);return _0x4efebf['set']('Content-Range',_0x2aaa68+'-'+_0x5422a3+'/'+_0x1e4a59)['json'](_0x2e0fe6);}return null;};}function patchUpdates(_0x369b9c){return function(_0x229232){try{jsonpatch['apply'](_0x229232,_0x369b9c,!![]);}catch(_0x5b1d60){return BPromise[_0x73b3('0x1e')](_0x5b1d60);}return _0x229232[_0x73b3('0x1f')]();};}function saveUpdates(_0xb93ef2,_0x34d498){return function(_0x375d99){if(_0x375d99){return _0x375d99['update'](_0xb93ef2)[_0x73b3('0x20')](function(_0x556e74){return _0x556e74;});}return null;};}function removeEntity(_0x10635c,_0x17286d){return function(_0x2812c7){if(_0x2812c7){return _0x2812c7['destroy']()[_0x73b3('0x20')](function(){_0x10635c[_0x73b3('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5344a0,_0x287794){return function(_0x544a42){if(!_0x544a42){_0x5344a0[_0x73b3('0x21')](0x194);}return _0x544a42;};}function handleError(_0x5850da,_0xcfd477){_0xcfd477=_0xcfd477||0x1f4;return function(_0x286b15){logger['error'](_0x286b15['stack']);if(_0x286b15[_0x73b3('0x22')]){delete _0x286b15[_0x73b3('0x22')];}_0x5850da[_0x73b3('0x17')](_0xcfd477)[_0x73b3('0x23')](_0x286b15);};}exports['index']=function(_0x29c193,_0x10dd06){var _0x3514f9={},_0x3712cc={},_0x2344a5={'count':0x0,'rows':[]};var _0x4bfad1=_[_0x73b3('0x24')](db[_0x73b3('0x25')][_0x73b3('0x26')],function(_0x18e4a6){return{'name':_0x18e4a6[_0x73b3('0x27')],'type':_0x18e4a6[_0x73b3('0x28')]['key']};});_0x3712cc[_0x73b3('0x29')]=_['map'](_0x4bfad1,_0x73b3('0x22'));_0x3712cc[_0x73b3('0x2a')]=_['keys'](_0x29c193['query']);_0x3712cc['filters']=_[_0x73b3('0x2b')](_0x3712cc['model'],_0x3712cc[_0x73b3('0x2a')]);_0x3514f9[_0x73b3('0x2c')]=_['intersection'](_0x3712cc[_0x73b3('0x29')],qs[_0x73b3('0x2d')](_0x29c193['query'][_0x73b3('0x2d')]));_0x3514f9[_0x73b3('0x2c')]=_0x3514f9[_0x73b3('0x2c')][_0x73b3('0x2e')]?_0x3514f9[_0x73b3('0x2c')]:_0x3712cc[_0x73b3('0x29')];if(!_0x29c193['query'][_0x73b3('0x2f')](_0x73b3('0x30'))){_0x3514f9[_0x73b3('0x1c')]=qs[_0x73b3('0x1c')](_0x29c193[_0x73b3('0x2a')][_0x73b3('0x1c')]);_0x3514f9[_0x73b3('0x1a')]=qs[_0x73b3('0x1a')](_0x29c193['query'][_0x73b3('0x1a')]);}_0x3514f9['order']=qs[_0x73b3('0x31')](_0x29c193[_0x73b3('0x2a')][_0x73b3('0x31')]);_0x3514f9[_0x73b3('0x32')]=qs[_0x73b3('0x33')](_[_0x73b3('0x34')](_0x29c193['query'],_0x3712cc['filters']),_0x4bfad1);if(_0x29c193[_0x73b3('0x2a')]['filter']){_0x3514f9[_0x73b3('0x32')]=_[_0x73b3('0x35')](_0x3514f9[_0x73b3('0x32')],{'$or':_[_0x73b3('0x24')](_0x4bfad1,function(_0x4c570b){if(_0x4c570b[_0x73b3('0x28')]!=='VIRTUAL'){var _0x451472={};_0x451472[_0x4c570b[_0x73b3('0x22')]]={'$like':'%'+_0x29c193[_0x73b3('0x2a')][_0x73b3('0x36')]+'%'};return _0x451472;}})});}_0x3514f9=_['merge']({},_0x3514f9,_0x29c193[_0x73b3('0x37')]);var _0x59b81a={'where':_0x3514f9[_0x73b3('0x32')]};return db['DeskConfiguration'][_0x73b3('0x1d')](_0x59b81a)[_0x73b3('0x20')](function(_0x371399){_0x2344a5['count']=_0x371399;if(_0x29c193[_0x73b3('0x2a')][_0x73b3('0x38')]){_0x3514f9['include']=[{'all':!![]}];}return db[_0x73b3('0x25')]['findAll'](_0x3514f9);})['then'](function(_0x31b261){_0x2344a5[_0x73b3('0x39')]=_0x31b261;return _0x2344a5;})[_0x73b3('0x20')](respondWithFilteredResult(_0x10dd06,_0x3514f9))[_0x73b3('0x3a')](handleError(_0x10dd06,null));};exports['show']=function(_0x49f7a3,_0x22f8b3){var _0x17da02={'raw':![],'where':{'id':_0x49f7a3['params']['id']}},_0x45eb15={};_0x45eb15[_0x73b3('0x29')]=_[_0x73b3('0x3b')](db[_0x73b3('0x25')]['rawAttributes']);_0x45eb15[_0x73b3('0x2a')]=_['keys'](_0x49f7a3[_0x73b3('0x2a')]);_0x45eb15[_0x73b3('0x33')]=_[_0x73b3('0x2b')](_0x45eb15[_0x73b3('0x29')],_0x45eb15['query']);_0x17da02[_0x73b3('0x2c')]=_[_0x73b3('0x2b')](_0x45eb15[_0x73b3('0x29')],qs[_0x73b3('0x2d')](_0x49f7a3[_0x73b3('0x2a')][_0x73b3('0x2d')]));_0x17da02[_0x73b3('0x2c')]=_0x17da02['attributes'][_0x73b3('0x2e')]?_0x17da02[_0x73b3('0x2c')]:_0x45eb15['model'];if(_0x49f7a3[_0x73b3('0x2a')]['includeAll']){_0x17da02[_0x73b3('0x3c')]=[{'all':!![]}];}_0x17da02=_[_0x73b3('0x35')]({},_0x17da02,_0x49f7a3[_0x73b3('0x37')]);return db[_0x73b3('0x25')][_0x73b3('0x3d')](_0x17da02)[_0x73b3('0x20')](handleEntityNotFound(_0x22f8b3,null))[_0x73b3('0x20')](respondWithResult(_0x22f8b3,null))['catch'](handleError(_0x22f8b3,null));};exports[_0x73b3('0x3e')]=function(_0x370912,_0x30d7c2){return db[_0x73b3('0x25')][_0x73b3('0x3e')](_0x370912[_0x73b3('0x3f')],{})[_0x73b3('0x20')](respondWithResult(_0x30d7c2,0xc9))[_0x73b3('0x3a')](handleError(_0x30d7c2,null));};exports[_0x73b3('0x40')]=function(_0x425022,_0x5bf912){if(_0x425022['body']['id']){delete _0x425022[_0x73b3('0x3f')]['id'];}return db[_0x73b3('0x25')][_0x73b3('0x3d')]({'where':{'id':_0x425022['params']['id']}})[_0x73b3('0x20')](handleEntityNotFound(_0x5bf912,null))[_0x73b3('0x20')](saveUpdates(_0x425022[_0x73b3('0x3f')],null))['then'](respondWithResult(_0x5bf912,null))['catch'](handleError(_0x5bf912,null));};exports['destroy']=function(_0x3679bf,_0x3be06a){return db[_0x73b3('0x25')]['find']({'where':{'id':_0x3679bf['params']['id']}})[_0x73b3('0x20')](handleEntityNotFound(_0x3be06a,null))[_0x73b3('0x20')](removeEntity(_0x3be06a,null))['catch'](handleError(_0x3be06a,null));};exports[_0x73b3('0x41')]=function(_0x47e13d,_0x5bcd92,_0x138feb){var _0x1f754d={};var _0x3f84da={};var _0x164d0f;var _0x10248b;return db['DeskConfiguration'][_0x73b3('0x42')]({'where':{'id':_0x47e13d[_0x73b3('0x43')]['id']}})['then'](handleEntityNotFound(_0x5bcd92,null))[_0x73b3('0x20')](function(_0x4af1a2){if(_0x4af1a2){_0x164d0f=_0x4af1a2;_0x3f84da['model']=_[_0x73b3('0x3b')](db[_0x73b3('0x44')][_0x73b3('0x26')]);_0x3f84da[_0x73b3('0x2a')]=_[_0x73b3('0x3b')](_0x47e13d[_0x73b3('0x2a')]);_0x3f84da[_0x73b3('0x33')]=_[_0x73b3('0x2b')](_0x3f84da[_0x73b3('0x29')],_0x3f84da['query']);_0x1f754d[_0x73b3('0x2c')]=_[_0x73b3('0x2b')](_0x3f84da['model'],qs[_0x73b3('0x2d')](_0x47e13d[_0x73b3('0x2a')][_0x73b3('0x2d')]));_0x1f754d['attributes']=_0x1f754d[_0x73b3('0x2c')][_0x73b3('0x2e')]?_0x1f754d[_0x73b3('0x2c')]:_0x3f84da[_0x73b3('0x29')];_0x1f754d[_0x73b3('0x45')]=qs[_0x73b3('0x31')](_0x47e13d[_0x73b3('0x2a')]['sort']);_0x1f754d[_0x73b3('0x32')]=qs[_0x73b3('0x33')](_['pick'](_0x47e13d[_0x73b3('0x2a')],_0x3f84da[_0x73b3('0x33')]));if(_0x47e13d[_0x73b3('0x2a')][_0x73b3('0x36')]){_0x1f754d[_0x73b3('0x32')]=_[_0x73b3('0x35')](_0x1f754d[_0x73b3('0x32')],{'$or':_[_0x73b3('0x24')](_0x1f754d[_0x73b3('0x2c')],function(_0x1b346c){var _0x47c97f={};_0x47c97f[_0x1b346c]={'$like':'%'+_0x47e13d[_0x73b3('0x2a')][_0x73b3('0x36')]+'%'};return _0x47c97f;})});}_0x1f754d=_[_0x73b3('0x35')]({},_0x1f754d,_0x47e13d['options']);return _0x164d0f[_0x73b3('0x41')](_0x1f754d);}})[_0x73b3('0x20')](function(_0x106584){if(_0x106584){_0x10248b=_0x106584['length'];if(!_0x47e13d[_0x73b3('0x2a')]['hasOwnProperty']('nolimit')){_0x1f754d[_0x73b3('0x1c')]=qs[_0x73b3('0x1c')](_0x47e13d['query']['limit']);_0x1f754d[_0x73b3('0x1a')]=qs[_0x73b3('0x1a')](_0x47e13d[_0x73b3('0x2a')][_0x73b3('0x1a')]);}return _0x164d0f[_0x73b3('0x41')](_0x1f754d);}})[_0x73b3('0x20')](function(_0x167e2a){if(_0x167e2a){return _0x167e2a?{'count':_0x10248b,'rows':_0x167e2a}:null;}})[_0x73b3('0x20')](respondWithResult(_0x5bcd92,null))[_0x73b3('0x3a')](handleError(_0x5bcd92,null));};exports[_0x73b3('0x46')]=function(_0x1280ea,_0x24a1b0,_0x18cc10){var _0x1aace6={};var _0x317fc8={};var _0x340c0b;var _0x1d19e3;return db[_0x73b3('0x25')][_0x73b3('0x42')]({'where':{'id':_0x1280ea[_0x73b3('0x43')]['id']}})['then'](handleEntityNotFound(_0x24a1b0,null))[_0x73b3('0x20')](function(_0x58e584){if(_0x58e584){_0x340c0b=_0x58e584;_0x317fc8[_0x73b3('0x29')]=_[_0x73b3('0x3b')](db[_0x73b3('0x44')][_0x73b3('0x26')]);_0x317fc8['query']=_['keys'](_0x1280ea[_0x73b3('0x2a')]);_0x317fc8['filters']=_[_0x73b3('0x2b')](_0x317fc8['model'],_0x317fc8[_0x73b3('0x2a')]);_0x1aace6[_0x73b3('0x2c')]=_[_0x73b3('0x2b')](_0x317fc8[_0x73b3('0x29')],qs['fields'](_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x2d')]));_0x1aace6[_0x73b3('0x2c')]=_0x1aace6['attributes'][_0x73b3('0x2e')]?_0x1aace6[_0x73b3('0x2c')]:_0x317fc8[_0x73b3('0x29')];_0x1aace6[_0x73b3('0x45')]=qs['sort'](_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x31')]);_0x1aace6['where']=qs[_0x73b3('0x33')](_[_0x73b3('0x34')](_0x1280ea[_0x73b3('0x2a')],_0x317fc8['filters']));if(_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x36')]){_0x1aace6[_0x73b3('0x32')]=_['merge'](_0x1aace6[_0x73b3('0x32')],{'$or':_['map'](_0x1aace6['attributes'],function(_0xec57fa){var _0x2052ad={};_0x2052ad[_0xec57fa]={'$like':'%'+_0x1280ea[_0x73b3('0x2a')]['filter']+'%'};return _0x2052ad;})});}_0x1aace6=_[_0x73b3('0x35')]({},_0x1aace6,_0x1280ea[_0x73b3('0x37')]);return _0x340c0b[_0x73b3('0x46')](_0x1aace6);}})[_0x73b3('0x20')](function(_0x3ae64c){if(_0x3ae64c){_0x1d19e3=_0x3ae64c[_0x73b3('0x2e')];if(!_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x2f')](_0x73b3('0x30'))){_0x1aace6[_0x73b3('0x1c')]=qs[_0x73b3('0x1c')](_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x1c')]);_0x1aace6[_0x73b3('0x1a')]=qs[_0x73b3('0x1a')](_0x1280ea[_0x73b3('0x2a')][_0x73b3('0x1a')]);}return _0x340c0b[_0x73b3('0x46')](_0x1aace6);}})['then'](function(_0xef3cef){if(_0xef3cef){return _0xef3cef?{'count':_0x1d19e3,'rows':_0xef3cef}:null;}})[_0x73b3('0x20')](respondWithResult(_0x24a1b0,null))[_0x73b3('0x3a')](handleError(_0x24a1b0,null));};exports[_0x73b3('0x47')]=function(_0x35b128,_0x460e87,_0x1220ae){var _0x2b1b1c={};var _0x2dc80f={};var _0x74f2bc;var _0x117e03;return db[_0x73b3('0x25')][_0x73b3('0x42')]({'where':{'id':_0x35b128[_0x73b3('0x43')]['id']}})[_0x73b3('0x20')](handleEntityNotFound(_0x460e87,null))['then'](function(_0x4e9dc5){if(_0x4e9dc5){_0x74f2bc=_0x4e9dc5;_0x2dc80f[_0x73b3('0x29')]=_['keys'](db['DeskField'][_0x73b3('0x26')]);_0x2dc80f['query']=_[_0x73b3('0x3b')](_0x35b128[_0x73b3('0x2a')]);_0x2dc80f[_0x73b3('0x33')]=_[_0x73b3('0x2b')](_0x2dc80f[_0x73b3('0x29')],_0x2dc80f[_0x73b3('0x2a')]);_0x2b1b1c[_0x73b3('0x2c')]=_[_0x73b3('0x2b')](_0x2dc80f['model'],qs[_0x73b3('0x2d')](_0x35b128[_0x73b3('0x2a')][_0x73b3('0x2d')]));_0x2b1b1c[_0x73b3('0x2c')]=_0x2b1b1c[_0x73b3('0x2c')][_0x73b3('0x2e')]?_0x2b1b1c[_0x73b3('0x2c')]:_0x2dc80f[_0x73b3('0x29')];_0x2b1b1c['order']=qs['sort'](_0x35b128[_0x73b3('0x2a')]['sort']);_0x2b1b1c['where']=qs[_0x73b3('0x33')](_[_0x73b3('0x34')](_0x35b128['query'],_0x2dc80f[_0x73b3('0x33')]));if(_0x35b128[_0x73b3('0x2a')][_0x73b3('0x36')]){_0x2b1b1c[_0x73b3('0x32')]=_[_0x73b3('0x35')](_0x2b1b1c[_0x73b3('0x32')],{'$or':_['map'](_0x2b1b1c[_0x73b3('0x2c')],function(_0x13dbe9){var _0x2bc81e={};_0x2bc81e[_0x13dbe9]={'$like':'%'+_0x35b128['query'][_0x73b3('0x36')]+'%'};return _0x2bc81e;})});}_0x2b1b1c=_[_0x73b3('0x35')]({},_0x2b1b1c,_0x35b128['options']);return _0x74f2bc[_0x73b3('0x47')](_0x2b1b1c);}})[_0x73b3('0x20')](function(_0x23cf34){if(_0x23cf34){_0x117e03=_0x23cf34['length'];if(!_0x35b128[_0x73b3('0x2a')][_0x73b3('0x2f')]('nolimit')){_0x2b1b1c[_0x73b3('0x1c')]=qs[_0x73b3('0x1c')](_0x35b128[_0x73b3('0x2a')][_0x73b3('0x1c')]);_0x2b1b1c[_0x73b3('0x1a')]=qs[_0x73b3('0x1a')](_0x35b128[_0x73b3('0x2a')][_0x73b3('0x1a')]);}return _0x74f2bc['getDescriptions'](_0x2b1b1c);}})['then'](function(_0x464901){if(_0x464901){return _0x464901?{'count':_0x117e03,'rows':_0x464901}:null;}})[_0x73b3('0x20')](respondWithResult(_0x460e87,null))[_0x73b3('0x3a')](handleError(_0x460e87,null));};exports[_0x73b3('0x48')]=function(_0x58a821,_0x4cd418,_0x5aa358){var _0x3291b4={};var _0x1b4160={};var _0x74cbb2;var _0x3f2128;return db[_0x73b3('0x25')][_0x73b3('0x42')]({'where':{'id':_0x58a821['params']['id']}})['then'](handleEntityNotFound(_0x4cd418,null))['then'](function(_0x771500){if(_0x771500){_0x74cbb2=_0x771500;_0x1b4160[_0x73b3('0x29')]=_[_0x73b3('0x3b')](db['Tag']['rawAttributes']);_0x1b4160['query']=_['keys'](_0x58a821['query']);_0x1b4160[_0x73b3('0x33')]=_['intersection'](_0x1b4160[_0x73b3('0x29')],_0x1b4160['query']);_0x3291b4['attributes']=_[_0x73b3('0x2b')](_0x1b4160[_0x73b3('0x29')],qs['fields'](_0x58a821[_0x73b3('0x2a')]['fields']));_0x3291b4[_0x73b3('0x2c')]=_0x3291b4[_0x73b3('0x2c')][_0x73b3('0x2e')]?_0x3291b4['attributes']:_0x1b4160['model'];_0x3291b4[_0x73b3('0x45')]=qs[_0x73b3('0x31')](_0x58a821[_0x73b3('0x2a')]['sort']);_0x3291b4['where']=qs['filters'](_[_0x73b3('0x34')](_0x58a821[_0x73b3('0x2a')],_0x1b4160[_0x73b3('0x33')]));if(_0x58a821[_0x73b3('0x2a')][_0x73b3('0x36')]){_0x3291b4[_0x73b3('0x32')]=_[_0x73b3('0x35')](_0x3291b4[_0x73b3('0x32')],{'$or':_[_0x73b3('0x24')](_0x3291b4['attributes'],function(_0x37d86c){var _0x4c3a52={};_0x4c3a52[_0x37d86c]={'$like':'%'+_0x58a821[_0x73b3('0x2a')][_0x73b3('0x36')]+'%'};return _0x4c3a52;})});}_0x3291b4=_['merge']({},_0x3291b4,_0x58a821[_0x73b3('0x37')]);return _0x74cbb2[_0x73b3('0x48')](_0x3291b4);}})['then'](function(_0x1a660b){if(_0x1a660b){_0x3f2128=_0x1a660b[_0x73b3('0x2e')];if(!_0x58a821[_0x73b3('0x2a')][_0x73b3('0x2f')](_0x73b3('0x30'))){_0x3291b4[_0x73b3('0x1c')]=qs[_0x73b3('0x1c')](_0x58a821[_0x73b3('0x2a')][_0x73b3('0x1c')]);_0x3291b4[_0x73b3('0x1a')]=qs['offset'](_0x58a821['query']['offset']);}return _0x74cbb2[_0x73b3('0x48')](_0x3291b4);}})[_0x73b3('0x20')](function(_0xccc9a4){if(_0xccc9a4){return _0xccc9a4?{'count':_0x3f2128,'rows':_0xccc9a4}:null;}})[_0x73b3('0x20')](respondWithResult(_0x4cd418,null))[_0x73b3('0x3a')](handleError(_0x4cd418,null));};exports[_0x73b3('0x49')]=function(_0x4a6d04,_0x4ef192,_0xadb513){if(_0x4a6d04[_0x73b3('0x3f')]['id']){delete _0x4a6d04['body']['id'];}return db['DeskConfiguration'][_0x73b3('0x42')]({'where':{'id':_0x4a6d04[_0x73b3('0x43')]['id']}})[_0x73b3('0x20')](handleEntityNotFound(_0x4ef192,null))[_0x73b3('0x20')](function(_0x42fd65){if(_0x42fd65){return _0x42fd65[_0x73b3('0x49')](_0x4a6d04[_0x73b3('0x3f')]['ids']||[]);}return null;})['then'](respondWithResult(_0x4ef192,null))[_0x73b3('0x3a')](handleError(_0x4ef192,null));};
\ No newline at end of file
index c3383cc..e449a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6e2=['int_desk_configurations','lodash','api','moment','bluebird','request-promise','path','./intDeskConfiguration.attributes','exports','define'];(function(_0x13b330,_0x297092){var _0x1f666c=function(_0x5ebc84){while(--_0x5ebc84){_0x13b330['push'](_0x13b330['shift']());}};_0x1f666c(++_0x297092);}(_0xd6e2,0x169));var _0x2d6e=function(_0x5e4ed6,_0x1856e7){_0x5e4ed6=_0x5e4ed6-0x0;var _0x5d93ae=_0xd6e2[_0x5e4ed6];return _0x5d93ae;};'use strict';var _=require(_0x2d6e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2d6e('0x1'));var moment=require(_0x2d6e('0x2'));var BPromise=require(_0x2d6e('0x3'));var rp=require(_0x2d6e('0x4'));var fs=require('fs');var path=require(_0x2d6e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2d6e('0x6'));module[_0x2d6e('0x7')]=function(_0x4f0eb7,_0x4176c4){return _0x4f0eb7[_0x2d6e('0x8')]('DeskConfiguration',attributes,{'tableName':_0x2d6e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c88=['bluebird','request-promise','path','../../config/environment','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','moment'];(function(_0x41bf0b,_0x28126a){var _0xfd2391=function(_0x9f1761){while(--_0x9f1761){_0x41bf0b['push'](_0x41bf0b['shift']());}};_0xfd2391(++_0x28126a);}(_0x7c88,0x16e));var _0x87c8=function(_0x2c09bd,_0x9b6aaa){_0x2c09bd=_0x2c09bd-0x0;var _0x5db5d3=_0x7c88[_0x2c09bd];return _0x5db5d3;};'use strict';var _=require(_0x87c8('0x0'));var util=require(_0x87c8('0x1'));var logger=require(_0x87c8('0x2'))('api');var moment=require(_0x87c8('0x3'));var BPromise=require(_0x87c8('0x4'));var rp=require(_0x87c8('0x5'));var fs=require('fs');var path=require(_0x87c8('0x6'));var rimraf=require('rimraf');var config=require(_0x87c8('0x7'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x3469ab,_0x3d0098){return _0x3469ab['define'](_0x87c8('0x8'),attributes,{'tableName':_0x87c8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a7bd39..61f7957 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd0=['stringify','error','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3cd0,0x8a));var _0x03cd=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0x3cd0[_0x40f9a0];return _0x3e3144;};'use strict';var _=require(_0x03cd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x03cd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x03cd('0x2'));var db=require(_0x03cd('0x3'))['db'];var utils=require(_0x03cd('0x4'));var logger=require(_0x03cd('0x5'))(_0x03cd('0x6'));var config=require('../../config/environment');var jayson=require(_0x03cd('0x7'));var client=jayson[_0x03cd('0x8')][_0x03cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ff934,_0x606150,_0x5dd6eb){return new BPromise(function(_0x67112,_0x5875af){return client[_0x03cd('0xa')](_0x1ff934,_0x5dd6eb)[_0x03cd('0xb')](function(_0x152209){logger[_0x03cd('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x03cd('0xd'));logger[_0x03cd('0xe')](_0x03cd('0xf'),_0x606150,_0x03cd('0xd'),JSON[_0x03cd('0x10')](_0x152209));if(_0x152209[_0x03cd('0x11')]){if(_0x152209['error']['code']===0x1f4){logger[_0x03cd('0x11')](_0x03cd('0x12'),_0x606150,_0x152209[_0x03cd('0x11')][_0x03cd('0x13')]);return _0x5875af(_0x152209['error'][_0x03cd('0x13')]);}logger[_0x03cd('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x152209['error']['message']);return _0x67112(_0x152209[_0x03cd('0x11')][_0x03cd('0x13')]);}else{logger[_0x03cd('0xc')](_0x03cd('0x12'),_0x606150,'request\x20sent');_0x67112(_0x152209[_0x03cd('0x14')][_0x03cd('0x13')]);}})[_0x03cd('0x15')](function(_0x459533){logger[_0x03cd('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x606150,_0x459533);_0x5875af(_0x459533);});});}
\ No newline at end of file
+var _0x23b3=['DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','request\x20sent','error','code'];(function(_0x4af81d,_0x238652){var _0x16bf50=function(_0x44389a){while(--_0x44389a){_0x4af81d['push'](_0x4af81d['shift']());}};_0x16bf50(++_0x238652);}(_0x23b3,0x101));var _0x323b=function(_0xeab168,_0x30d561){_0xeab168=_0xeab168-0x0;var _0xbbf818=_0x23b3[_0xeab168];return _0xbbf818;};'use strict';var _=require(_0x323b('0x0'));var util=require(_0x323b('0x1'));var moment=require('moment');var BPromise=require(_0x323b('0x2'));var rs=require(_0x323b('0x3'));var fs=require('fs');var Redis=require(_0x323b('0x4'));var db=require(_0x323b('0x5'))['db'];var utils=require(_0x323b('0x6'));var logger=require(_0x323b('0x7'))(_0x323b('0x8'));var config=require(_0x323b('0x9'));var jayson=require(_0x323b('0xa'));var client=jayson['client'][_0x323b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ef782,_0x1577a2,_0x69db06){return new BPromise(function(_0x59d917,_0x456662){return client[_0x323b('0xc')](_0x5ef782,_0x69db06)[_0x323b('0xd')](function(_0x545849){logger[_0x323b('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x1577a2,'request\x20sent');logger[_0x323b('0xf')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x1577a2,_0x323b('0x10'),JSON['stringify'](_0x545849));if(_0x545849[_0x323b('0x11')]){if(_0x545849[_0x323b('0x11')][_0x323b('0x12')]===0x1f4){logger[_0x323b('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x1577a2,_0x545849[_0x323b('0x11')]['message']);return _0x456662(_0x545849['error']['message']);}logger[_0x323b('0x11')](_0x323b('0x13'),_0x1577a2,_0x545849[_0x323b('0x11')]['message']);return _0x59d917(_0x545849[_0x323b('0x11')][_0x323b('0x14')]);}else{logger[_0x323b('0xe')](_0x323b('0x13'),_0x1577a2,_0x323b('0x10'));_0x59d917(_0x545849[_0x323b('0x15')]['message']);}})[_0x323b('0x16')](function(_0x13b9b4){logger[_0x323b('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x1577a2,_0x13b9b4);_0x456662(_0x13b9b4);});});}
\ No newline at end of file
index 7759ed2..c11785c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc674=['./intDeskField.controller','get','isAuthenticated','/:id','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x11fd4e,_0x1a32ec){var _0x324371=function(_0x3f90a1){while(--_0x3f90a1){_0x11fd4e['push'](_0x11fd4e['shift']());}};_0x324371(++_0x1a32ec);}(_0xc674,0xe8));var _0x4c67=function(_0xf2628e,_0x521bf7){_0xf2628e=_0xf2628e-0x0;var _0x13863a=_0xc674[_0xf2628e];return _0x13863a;};'use strict';var multer=require(_0x4c67('0x0'));var util=require(_0x4c67('0x1'));var path=require(_0x4c67('0x2'));var timeout=require(_0x4c67('0x3'));var express=require(_0x4c67('0x4'));var router=express[_0x4c67('0x5')]();var fs_extra=require(_0x4c67('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4c67('0x7'));var config=require('../../config/environment');var controller=require(_0x4c67('0x8'));router[_0x4c67('0x9')]('/',auth[_0x4c67('0xa')](),controller['index']);router['get'](_0x4c67('0xb'),auth[_0x4c67('0xa')](),controller['show']);router['post']('/',auth[_0x4c67('0xa')](),controller[_0x4c67('0xc')]);router['put'](_0x4c67('0xb'),auth['isAuthenticated'](),controller[_0x4c67('0xd')]);router['delete'](_0x4c67('0xb'),auth[_0x4c67('0xa')](),controller[_0x4c67('0xe')]);module[_0x4c67('0xf')]=router;
\ No newline at end of file
+var _0xa287=['multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','post','create','put','update'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa287,0xe0));var _0x7a28=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0xa287[_0x58965a];return _0x254efc;};'use strict';var multer=require(_0x7a28('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7a28('0x1'));var express=require('express');var router=express[_0x7a28('0x2')]();var fs_extra=require(_0x7a28('0x3'));var auth=require(_0x7a28('0x4'));var interaction=require(_0x7a28('0x5'));var config=require(_0x7a28('0x6'));var controller=require(_0x7a28('0x7'));router[_0x7a28('0x8')]('/',auth[_0x7a28('0x9')](),controller[_0x7a28('0xa')]);router[_0x7a28('0x8')](_0x7a28('0xb'),auth[_0x7a28('0x9')](),controller['show']);router[_0x7a28('0xc')]('/',auth[_0x7a28('0x9')](),controller[_0x7a28('0xd')]);router[_0x7a28('0xe')]('/:id',auth[_0x7a28('0x9')](),controller[_0x7a28('0xf')]);router['delete'](_0x7a28('0xb'),auth[_0x7a28('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cc68fba..ddb1f97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6242=['customVariable','BOOLEAN','exports','ENUM','variable','keyValue','picklist','string','STRING'];(function(_0x5a2ae6,_0xbf778f){var _0x15c392=function(_0xce6810){while(--_0xce6810){_0x5a2ae6['push'](_0x5a2ae6['shift']());}};_0x15c392(++_0xbf778f);}(_0x6242,0x161));var _0x2624=function(_0x246cb0,_0x188593){_0x246cb0=_0x246cb0-0x0;var _0xb60eba=_0x6242[_0x246cb0];return _0xb60eba;};'use strict';var Sequelize=require('sequelize');module[_0x2624('0x0')]={'type':{'type':Sequelize[_0x2624('0x1')]('string',_0x2624('0x2'),'customVariable',_0x2624('0x3'),_0x2624('0x4')),'defaultValue':_0x2624('0x5')},'content':{'type':Sequelize[_0x2624('0x6')]},'key':{'type':Sequelize[_0x2624('0x6')]},'keyType':{'type':Sequelize[_0x2624('0x1')](_0x2624('0x5'),_0x2624('0x2'),_0x2624('0x7'))},'keyContent':{'type':Sequelize[_0x2624('0x6')]},'idField':{'type':Sequelize[_0x2624('0x6')]},'nameField':{'type':Sequelize[_0x2624('0x6')]},'customField':{'type':Sequelize[_0x2624('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2624('0x6')]}};
\ No newline at end of file
+var _0x8811=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x296d42,_0x404b10){var _0x499c27=function(_0x5bc528){while(--_0x5bc528){_0x296d42['push'](_0x296d42['shift']());}};_0x499c27(++_0x404b10);}(_0x8811,0x118));var _0x1881=function(_0x15f724,_0x4d8d77){_0x15f724=_0x15f724-0x0;var _0x302435=_0x8811[_0x15f724];return _0x302435;};'use strict';var Sequelize=require(_0x1881('0x0'));module[_0x1881('0x1')]={'type':{'type':Sequelize[_0x1881('0x2')](_0x1881('0x3'),_0x1881('0x4'),'customVariable',_0x1881('0x5'),_0x1881('0x6')),'defaultValue':_0x1881('0x3')},'content':{'type':Sequelize[_0x1881('0x7')]},'key':{'type':Sequelize[_0x1881('0x7')]},'keyType':{'type':Sequelize[_0x1881('0x2')](_0x1881('0x3'),_0x1881('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x1881('0x7')]},'idField':{'type':Sequelize[_0x1881('0x7')]},'nameField':{'type':Sequelize[_0x1881('0x7')]},'customField':{'type':Sequelize[_0x1881('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1881('0x7')]}};
\ No newline at end of file
index c88cc9e..f87fccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c65=['undefined','count','offset','limit','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status'];(function(_0x317b86,_0x49c72f){var _0x3dcbfa=function(_0x42cb3f){while(--_0x42cb3f){_0x317b86['push'](_0x317b86['shift']());}};_0x3dcbfa(++_0x49c72f);}(_0x6c65,0x78));var _0x56c6=function(_0x50e07,_0x1879a7){_0x50e07=_0x50e07-0x0;var _0x2ac2db=_0x6c65[_0x50e07];return _0x2ac2db;};'use strict';var emlformat=require(_0x56c6('0x0'));var rimraf=require(_0x56c6('0x1'));var zipdir=require(_0x56c6('0x2'));var jsonpatch=require(_0x56c6('0x3'));var rp=require(_0x56c6('0x4'));var moment=require(_0x56c6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x56c6('0x6'));var util=require(_0x56c6('0x7'));var path=require(_0x56c6('0x8'));var sox=require(_0x56c6('0x9'));var csv=require(_0x56c6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x56c6('0xb'));var _=require(_0x56c6('0xc'));var squel=require(_0x56c6('0xd'));var crypto=require(_0x56c6('0xe'));var jsforce=require(_0x56c6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x56c6('0xa'));var querystring=require(_0x56c6('0x10'));var Papa=require(_0x56c6('0x11'));var Redis=require('ioredis');var authService=require(_0x56c6('0x12'));var qs=require(_0x56c6('0x13'));var as=require(_0x56c6('0x14'));var hardwareService=require(_0x56c6('0x15'));var logger=require(_0x56c6('0x16'))(_0x56c6('0x17'));var utils=require('../../config/utils');var config=require(_0x56c6('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d7c67,_0x2bb84e){_0x2bb84e=_0x2bb84e||0xcc;return function(_0x3310ed){if(_0x3310ed){return _0x1d7c67[_0x56c6('0x19')](_0x2bb84e);}return _0x1d7c67['status'](_0x2bb84e)[_0x56c6('0x1a')]();};}function respondWithResult(_0x511316,_0x17f72e){_0x17f72e=_0x17f72e||0xc8;return function(_0x59b7b5){if(_0x59b7b5){return _0x511316[_0x56c6('0x1b')](_0x17f72e)['json'](_0x59b7b5);}};}function respondWithFilteredResult(_0x557189,_0x4b47ce){return function(_0x4d0838){if(_0x4d0838){var _0x3e6082=typeof _0x4b47ce['offset']===_0x56c6('0x1c')&&typeof _0x4b47ce['limit']===_0x56c6('0x1c');var _0x49fff5=_0x4d0838[_0x56c6('0x1d')];var _0x5625f2=_0x3e6082?0x0:_0x4b47ce[_0x56c6('0x1e')];var _0x288325=_0x3e6082?_0x4d0838['count']:_0x4b47ce[_0x56c6('0x1e')]+_0x4b47ce[_0x56c6('0x1f')];var _0x27b5b0;if(_0x288325>=_0x49fff5){_0x288325=_0x49fff5;_0x27b5b0=0xc8;}else{_0x27b5b0=0xce;}_0x557189[_0x56c6('0x1b')](_0x27b5b0);return _0x557189['set'](_0x56c6('0x20'),_0x5625f2+'-'+_0x288325+'/'+_0x49fff5)[_0x56c6('0x21')](_0x4d0838);}return null;};}function patchUpdates(_0x413ca7){return function(_0x137570){try{jsonpatch[_0x56c6('0x22')](_0x137570,_0x413ca7,!![]);}catch(_0x58bc6f){return BPromise[_0x56c6('0x23')](_0x58bc6f);}return _0x137570[_0x56c6('0x24')]();};}function saveUpdates(_0x55271c,_0x40d7be){return function(_0x4d33f7){if(_0x4d33f7){return _0x4d33f7['update'](_0x55271c)[_0x56c6('0x25')](function(_0x1f1bb1){return _0x1f1bb1;});}return null;};}function removeEntity(_0x17dd94,_0x5c6682){return function(_0x27806e){if(_0x27806e){return _0x27806e[_0x56c6('0x26')]()[_0x56c6('0x25')](function(){_0x17dd94[_0x56c6('0x1b')](0xcc)[_0x56c6('0x1a')]();});}};}function handleEntityNotFound(_0x207f05,_0x50d7ee){return function(_0x4be5df){if(!_0x4be5df){_0x207f05[_0x56c6('0x19')](0x194);}return _0x4be5df;};}function handleError(_0x44164c,_0x5cb361){_0x5cb361=_0x5cb361||0x1f4;return function(_0x33f95e){logger['error'](_0x33f95e[_0x56c6('0x27')]);if(_0x33f95e['name']){delete _0x33f95e[_0x56c6('0x28')];}_0x44164c['status'](_0x5cb361)[_0x56c6('0x29')](_0x33f95e);};}exports[_0x56c6('0x2a')]=function(_0x24fb02,_0x2e6b07){var _0x1acdcf={},_0x67fec3={},_0x14094b={'count':0x0,'rows':[]};var _0x3938d4=_[_0x56c6('0x2b')](db[_0x56c6('0x2c')][_0x56c6('0x2d')],function(_0x492d80){return{'name':_0x492d80[_0x56c6('0x2e')],'type':_0x492d80[_0x56c6('0x2f')]['key']};});_0x67fec3['model']=_[_0x56c6('0x2b')](_0x3938d4,'name');_0x67fec3[_0x56c6('0x30')]=_['keys'](_0x24fb02[_0x56c6('0x30')]);_0x67fec3[_0x56c6('0x31')]=_[_0x56c6('0x32')](_0x67fec3['model'],_0x67fec3[_0x56c6('0x30')]);_0x1acdcf[_0x56c6('0x33')]=_[_0x56c6('0x32')](_0x67fec3[_0x56c6('0x34')],qs[_0x56c6('0x35')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x35')]));_0x1acdcf[_0x56c6('0x33')]=_0x1acdcf[_0x56c6('0x33')][_0x56c6('0x36')]?_0x1acdcf['attributes']:_0x67fec3[_0x56c6('0x34')];if(!_0x24fb02[_0x56c6('0x30')]['hasOwnProperty'](_0x56c6('0x37'))){_0x1acdcf[_0x56c6('0x1f')]=qs[_0x56c6('0x1f')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x1f')]);_0x1acdcf[_0x56c6('0x1e')]=qs[_0x56c6('0x1e')](_0x24fb02['query'][_0x56c6('0x1e')]);}_0x1acdcf[_0x56c6('0x38')]=qs[_0x56c6('0x39')](_0x24fb02[_0x56c6('0x30')][_0x56c6('0x39')]);_0x1acdcf[_0x56c6('0x3a')]=qs[_0x56c6('0x31')](_['pick'](_0x24fb02['query'],_0x67fec3[_0x56c6('0x31')]),_0x3938d4);if(_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3b')]){_0x1acdcf[_0x56c6('0x3a')]=_[_0x56c6('0x3c')](_0x1acdcf[_0x56c6('0x3a')],{'$or':_[_0x56c6('0x2b')](_0x3938d4,function(_0xbc92e){if(_0xbc92e[_0x56c6('0x2f')]!==_0x56c6('0x3d')){var _0x493865={};_0x493865[_0xbc92e[_0x56c6('0x28')]]={'$like':'%'+_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3b')]+'%'};return _0x493865;}})});}_0x1acdcf=_['merge']({},_0x1acdcf,_0x24fb02[_0x56c6('0x3e')]);var _0x74516a={'where':_0x1acdcf[_0x56c6('0x3a')]};return db['DeskField']['count'](_0x74516a)[_0x56c6('0x25')](function(_0x2dea5d){_0x14094b[_0x56c6('0x1d')]=_0x2dea5d;if(_0x24fb02[_0x56c6('0x30')][_0x56c6('0x3f')]){_0x1acdcf[_0x56c6('0x40')]=[{'all':!![]}];}return db[_0x56c6('0x2c')][_0x56c6('0x41')](_0x1acdcf);})[_0x56c6('0x25')](function(_0x295522){_0x14094b[_0x56c6('0x42')]=_0x295522;return _0x14094b;})[_0x56c6('0x25')](respondWithFilteredResult(_0x2e6b07,_0x1acdcf))[_0x56c6('0x43')](handleError(_0x2e6b07,null));};exports['show']=function(_0x217723,_0x851bbe){var _0x1e6b10={'raw':!![],'where':{'id':_0x217723[_0x56c6('0x44')]['id']}},_0x5968ac={};_0x5968ac[_0x56c6('0x34')]=_[_0x56c6('0x45')](db[_0x56c6('0x2c')][_0x56c6('0x2d')]);_0x5968ac[_0x56c6('0x30')]=_[_0x56c6('0x45')](_0x217723[_0x56c6('0x30')]);_0x5968ac['filters']=_[_0x56c6('0x32')](_0x5968ac['model'],_0x5968ac['query']);_0x1e6b10[_0x56c6('0x33')]=_[_0x56c6('0x32')](_0x5968ac[_0x56c6('0x34')],qs[_0x56c6('0x35')](_0x217723['query'][_0x56c6('0x35')]));_0x1e6b10[_0x56c6('0x33')]=_0x1e6b10[_0x56c6('0x33')]['length']?_0x1e6b10[_0x56c6('0x33')]:_0x5968ac[_0x56c6('0x34')];if(_0x217723[_0x56c6('0x30')][_0x56c6('0x3f')]){_0x1e6b10[_0x56c6('0x40')]=[{'all':!![]}];}_0x1e6b10=_['merge']({},_0x1e6b10,_0x217723[_0x56c6('0x3e')]);return db[_0x56c6('0x2c')][_0x56c6('0x46')](_0x1e6b10)[_0x56c6('0x25')](handleEntityNotFound(_0x851bbe,null))[_0x56c6('0x25')](respondWithResult(_0x851bbe,null))[_0x56c6('0x43')](handleError(_0x851bbe,null));};exports[_0x56c6('0x47')]=function(_0x1b6ac4,_0x4529df){return db[_0x56c6('0x2c')][_0x56c6('0x47')](_0x1b6ac4['body'],{})[_0x56c6('0x25')](respondWithResult(_0x4529df,0xc9))['catch'](handleError(_0x4529df,null));};exports[_0x56c6('0x48')]=function(_0x58cfa5,_0x5b449f){if(_0x58cfa5[_0x56c6('0x49')]['id']){delete _0x58cfa5[_0x56c6('0x49')]['id'];}return db[_0x56c6('0x2c')][_0x56c6('0x46')]({'where':{'id':_0x58cfa5[_0x56c6('0x44')]['id']}})[_0x56c6('0x25')](handleEntityNotFound(_0x5b449f,null))[_0x56c6('0x25')](saveUpdates(_0x58cfa5[_0x56c6('0x49')],null))[_0x56c6('0x25')](respondWithResult(_0x5b449f,null))[_0x56c6('0x43')](handleError(_0x5b449f,null));};exports['destroy']=function(_0x2b1ff0,_0x20598b){return db[_0x56c6('0x2c')][_0x56c6('0x46')]({'where':{'id':_0x2b1ff0['params']['id']}})[_0x56c6('0x25')](handleEntityNotFound(_0x20598b,null))[_0x56c6('0x25')](removeEntity(_0x20598b,null))[_0x56c6('0x43')](handleError(_0x20598b,null));};
\ No newline at end of file
+var _0xdbfa=['options','find','create','body','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','then','includeAll','findAll','rows','catch','show','params','include'];(function(_0x21c81e,_0x5de28f){var _0x16a6d7=function(_0x91beeb){while(--_0x91beeb){_0x21c81e['push'](_0x21c81e['shift']());}};_0x16a6d7(++_0x5de28f);}(_0xdbfa,0x128));var _0xadbf=function(_0x1074ef,_0xca44a3){_0x1074ef=_0x1074ef-0x0;var _0x949fd5=_0xdbfa[_0x1074ef];return _0x949fd5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xadbf('0x0'));var rp=require('request-promise');var moment=require(_0xadbf('0x1'));var BPromise=require(_0xadbf('0x2'));var Mustache=require('mustache');var util=require(_0xadbf('0x3'));var path=require(_0xadbf('0x4'));var sox=require(_0xadbf('0x5'));var csv=require(_0xadbf('0x6'));var ejs=require(_0xadbf('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xadbf('0x8'));var squel=require(_0xadbf('0x9'));var crypto=require(_0xadbf('0xa'));var jsforce=require(_0xadbf('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xadbf('0x6'));var querystring=require(_0xadbf('0xc'));var Papa=require(_0xadbf('0xd'));var Redis=require('ioredis');var authService=require(_0xadbf('0xe'));var qs=require(_0xadbf('0xf'));var as=require(_0xadbf('0x10'));var hardwareService=require(_0xadbf('0x11'));var logger=require(_0xadbf('0x12'))(_0xadbf('0x13'));var utils=require(_0xadbf('0x14'));var config=require(_0xadbf('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xadbf('0x16'))['db'];function respondWithStatusCode(_0x174f2e,_0x4855e5){_0x4855e5=_0x4855e5||0xcc;return function(_0x1bfce4){if(_0x1bfce4){return _0x174f2e[_0xadbf('0x17')](_0x4855e5);}return _0x174f2e['status'](_0x4855e5)['end']();};}function respondWithResult(_0x1ec136,_0x58fa1b){_0x58fa1b=_0x58fa1b||0xc8;return function(_0x2ff34c){if(_0x2ff34c){return _0x1ec136[_0xadbf('0x18')](_0x58fa1b)[_0xadbf('0x19')](_0x2ff34c);}};}function respondWithFilteredResult(_0x44b187,_0x109788){return function(_0x3c4899){if(_0x3c4899){var _0x1008e5=typeof _0x109788[_0xadbf('0x1a')]===_0xadbf('0x1b')&&typeof _0x109788[_0xadbf('0x1c')]===_0xadbf('0x1b');var _0x3e9de1=_0x3c4899['count'];var _0x1b8639=_0x1008e5?0x0:_0x109788[_0xadbf('0x1a')];var _0x38e3f2=_0x1008e5?_0x3c4899[_0xadbf('0x1d')]:_0x109788[_0xadbf('0x1a')]+_0x109788[_0xadbf('0x1c')];var _0x5dfbdf;if(_0x38e3f2>=_0x3e9de1){_0x38e3f2=_0x3e9de1;_0x5dfbdf=0xc8;}else{_0x5dfbdf=0xce;}_0x44b187[_0xadbf('0x18')](_0x5dfbdf);return _0x44b187[_0xadbf('0x1e')](_0xadbf('0x1f'),_0x1b8639+'-'+_0x38e3f2+'/'+_0x3e9de1)[_0xadbf('0x19')](_0x3c4899);}return null;};}function patchUpdates(_0x38a7e4){return function(_0x12536e){try{jsonpatch[_0xadbf('0x20')](_0x12536e,_0x38a7e4,!![]);}catch(_0x1a7f27){return BPromise[_0xadbf('0x21')](_0x1a7f27);}return _0x12536e['save']();};}function saveUpdates(_0x349f1e,_0x252d51){return function(_0x1c871f){if(_0x1c871f){return _0x1c871f[_0xadbf('0x22')](_0x349f1e)['then'](function(_0x333b57){return _0x333b57;});}return null;};}function removeEntity(_0x3f9e1b,_0x1d49c6){return function(_0x34f042){if(_0x34f042){return _0x34f042[_0xadbf('0x23')]()['then'](function(){_0x3f9e1b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x52da57,_0x31f9c8){return function(_0x9dbbd8){if(!_0x9dbbd8){_0x52da57[_0xadbf('0x17')](0x194);}return _0x9dbbd8;};}function handleError(_0x3c6946,_0x3d7f06){_0x3d7f06=_0x3d7f06||0x1f4;return function(_0x5a17e7){logger[_0xadbf('0x24')](_0x5a17e7[_0xadbf('0x25')]);if(_0x5a17e7[_0xadbf('0x26')]){delete _0x5a17e7['name'];}_0x3c6946[_0xadbf('0x18')](_0x3d7f06)[_0xadbf('0x27')](_0x5a17e7);};}exports[_0xadbf('0x28')]=function(_0x2dcda1,_0x2f3990){var _0x10a0bc={},_0x35d8ba={},_0x56e624={'count':0x0,'rows':[]};var _0x4d1015=_[_0xadbf('0x29')](db[_0xadbf('0x2a')][_0xadbf('0x2b')],function(_0x47a027){return{'name':_0x47a027[_0xadbf('0x2c')],'type':_0x47a027[_0xadbf('0x2d')][_0xadbf('0x2e')]};});_0x35d8ba['model']=_[_0xadbf('0x29')](_0x4d1015,_0xadbf('0x26'));_0x35d8ba['query']=_[_0xadbf('0x2f')](_0x2dcda1[_0xadbf('0x30')]);_0x35d8ba[_0xadbf('0x31')]=_[_0xadbf('0x32')](_0x35d8ba[_0xadbf('0x33')],_0x35d8ba[_0xadbf('0x30')]);_0x10a0bc[_0xadbf('0x34')]=_[_0xadbf('0x32')](_0x35d8ba[_0xadbf('0x33')],qs[_0xadbf('0x35')](_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x35')]));_0x10a0bc[_0xadbf('0x34')]=_0x10a0bc['attributes'][_0xadbf('0x36')]?_0x10a0bc['attributes']:_0x35d8ba[_0xadbf('0x33')];if(!_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x37')](_0xadbf('0x38'))){_0x10a0bc[_0xadbf('0x1c')]=qs[_0xadbf('0x1c')](_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x1c')]);_0x10a0bc[_0xadbf('0x1a')]=qs[_0xadbf('0x1a')](_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x1a')]);}_0x10a0bc['order']=qs[_0xadbf('0x39')](_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x39')]);_0x10a0bc[_0xadbf('0x3a')]=qs[_0xadbf('0x31')](_['pick'](_0x2dcda1[_0xadbf('0x30')],_0x35d8ba[_0xadbf('0x31')]),_0x4d1015);if(_0x2dcda1[_0xadbf('0x30')][_0xadbf('0x3b')]){_0x10a0bc[_0xadbf('0x3a')]=_[_0xadbf('0x3c')](_0x10a0bc[_0xadbf('0x3a')],{'$or':_[_0xadbf('0x29')](_0x4d1015,function(_0x436cd8){if(_0x436cd8[_0xadbf('0x2d')]!=='VIRTUAL'){var _0x52ee56={};_0x52ee56[_0x436cd8['name']]={'$like':'%'+_0x2dcda1['query'][_0xadbf('0x3b')]+'%'};return _0x52ee56;}})});}_0x10a0bc=_['merge']({},_0x10a0bc,_0x2dcda1['options']);var _0x524665={'where':_0x10a0bc[_0xadbf('0x3a')]};return db['DeskField'][_0xadbf('0x1d')](_0x524665)[_0xadbf('0x3d')](function(_0x404060){_0x56e624['count']=_0x404060;if(_0x2dcda1['query'][_0xadbf('0x3e')]){_0x10a0bc['include']=[{'all':!![]}];}return db['DeskField'][_0xadbf('0x3f')](_0x10a0bc);})[_0xadbf('0x3d')](function(_0x31f039){_0x56e624[_0xadbf('0x40')]=_0x31f039;return _0x56e624;})[_0xadbf('0x3d')](respondWithFilteredResult(_0x2f3990,_0x10a0bc))[_0xadbf('0x41')](handleError(_0x2f3990,null));};exports[_0xadbf('0x42')]=function(_0x31888c,_0x25dab9){var _0x3fec4d={'raw':!![],'where':{'id':_0x31888c[_0xadbf('0x43')]['id']}},_0x269bd3={};_0x269bd3[_0xadbf('0x33')]=_['keys'](db[_0xadbf('0x2a')][_0xadbf('0x2b')]);_0x269bd3[_0xadbf('0x30')]=_[_0xadbf('0x2f')](_0x31888c[_0xadbf('0x30')]);_0x269bd3[_0xadbf('0x31')]=_[_0xadbf('0x32')](_0x269bd3[_0xadbf('0x33')],_0x269bd3[_0xadbf('0x30')]);_0x3fec4d[_0xadbf('0x34')]=_[_0xadbf('0x32')](_0x269bd3[_0xadbf('0x33')],qs['fields'](_0x31888c[_0xadbf('0x30')][_0xadbf('0x35')]));_0x3fec4d[_0xadbf('0x34')]=_0x3fec4d['attributes'][_0xadbf('0x36')]?_0x3fec4d[_0xadbf('0x34')]:_0x269bd3[_0xadbf('0x33')];if(_0x31888c[_0xadbf('0x30')][_0xadbf('0x3e')]){_0x3fec4d[_0xadbf('0x44')]=[{'all':!![]}];}_0x3fec4d=_['merge']({},_0x3fec4d,_0x31888c[_0xadbf('0x45')]);return db[_0xadbf('0x2a')][_0xadbf('0x46')](_0x3fec4d)[_0xadbf('0x3d')](handleEntityNotFound(_0x25dab9,null))[_0xadbf('0x3d')](respondWithResult(_0x25dab9,null))[_0xadbf('0x41')](handleError(_0x25dab9,null));};exports[_0xadbf('0x47')]=function(_0x5e92c5,_0x1f7fe3){return db[_0xadbf('0x2a')][_0xadbf('0x47')](_0x5e92c5[_0xadbf('0x48')],{})['then'](respondWithResult(_0x1f7fe3,0xc9))['catch'](handleError(_0x1f7fe3,null));};exports[_0xadbf('0x22')]=function(_0x449ce2,_0x4270b1){if(_0x449ce2['body']['id']){delete _0x449ce2[_0xadbf('0x48')]['id'];}return db[_0xadbf('0x2a')][_0xadbf('0x46')]({'where':{'id':_0x449ce2[_0xadbf('0x43')]['id']}})[_0xadbf('0x3d')](handleEntityNotFound(_0x4270b1,null))[_0xadbf('0x3d')](saveUpdates(_0x449ce2[_0xadbf('0x48')],null))[_0xadbf('0x3d')](respondWithResult(_0x4270b1,null))['catch'](handleError(_0x4270b1,null));};exports['destroy']=function(_0x179d5e,_0x25ff7e){return db[_0xadbf('0x2a')][_0xadbf('0x46')]({'where':{'id':_0x179d5e[_0xadbf('0x43')]['id']}})[_0xadbf('0x3d')](handleEntityNotFound(_0x25ff7e,null))['then'](removeEntity(_0x25ff7e,null))['catch'](handleError(_0x25ff7e,null));};
\ No newline at end of file
index 4edf6ec..c2cb230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce6=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','DeskField','int_desk_fields','idField','FieldId'];(function(_0x1e81b5,_0x153b8e){var _0x63fc4f=function(_0x491bc2){while(--_0x491bc2){_0x1e81b5['push'](_0x1e81b5['shift']());}};_0x63fc4f(++_0x153b8e);}(_0x8ce6,0x78));var _0x68ce=function(_0xab35a9,_0x258920){_0xab35a9=_0xab35a9-0x0;var _0x1bf2c8=_0x8ce6[_0xab35a9];return _0x1bf2c8;};'use strict';var _=require('lodash');var util=require(_0x68ce('0x0'));var logger=require(_0x68ce('0x1'))(_0x68ce('0x2'));var moment=require(_0x68ce('0x3'));var BPromise=require('bluebird');var rp=require(_0x68ce('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ce('0x5'));var config=require(_0x68ce('0x6'));var attributes=require('./intDeskField.attributes');module[_0x68ce('0x7')]=function(_0xbbf2a1,_0x57b868){return _0xbbf2a1['define'](_0x68ce('0x8'),attributes,{'tableName':_0x68ce('0x9'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x68ce('0xa'),_0x68ce('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8171=['FieldId','lodash','../../config/logger','api','bluebird','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','desk_unique_index','idField'];(function(_0x24c688,_0x2b7eb6){var _0x42ddf4=function(_0x320ef0){while(--_0x320ef0){_0x24c688['push'](_0x24c688['shift']());}};_0x42ddf4(++_0x2b7eb6);}(_0x8171,0x9d));var _0x1817=function(_0xc34843,_0x28147e){_0xc34843=_0xc34843-0x0;var _0x56221d=_0x8171[_0xc34843];return _0x56221d;};'use strict';var _=require(_0x1817('0x0'));var util=require('util');var logger=require(_0x1817('0x1'))(_0x1817('0x2'));var moment=require('moment');var BPromise=require(_0x1817('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1817('0x4'));var config=require(_0x1817('0x5'));var attributes=require(_0x1817('0x6'));module[_0x1817('0x7')]=function(_0x365d38,_0x15f249){return _0x365d38[_0x1817('0x8')](_0x1817('0x9'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x1817('0xa'),'fields':[_0x1817('0xb'),_0x1817('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d74175a..1ee467c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076a=['message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x290eed,_0x40aa8c){var _0x331b03=function(_0x5b2cf6){while(--_0x5b2cf6){_0x290eed['push'](_0x290eed['shift']());}};_0x331b03(++_0x40aa8c);}(_0x076a,0x9a));var _0xa076=function(_0x264ca3,_0x65b645){_0x264ca3=_0x264ca3-0x0;var _0x156d1e=_0x076a[_0x264ca3];return _0x156d1e;};'use strict';var _=require(_0xa076('0x0'));var util=require(_0xa076('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa076('0x2'));var fs=require('fs');var Redis=require(_0xa076('0x3'));var db=require(_0xa076('0x4'))['db'];var utils=require(_0xa076('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa076('0x6'));var jayson=require(_0xa076('0x7'));var client=jayson[_0xa076('0x8')][_0xa076('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50af0c,_0x38f8a3,_0x291786){return new BPromise(function(_0x1d19d1,_0x375e24){return client[_0xa076('0xa')](_0x50af0c,_0x291786)[_0xa076('0xb')](function(_0x37c172){logger[_0xa076('0xc')](_0xa076('0xd'),_0x38f8a3,_0xa076('0xe'));logger[_0xa076('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x38f8a3,'request\x20sent',JSON['stringify'](_0x37c172));if(_0x37c172[_0xa076('0x10')]){if(_0x37c172[_0xa076('0x10')]['code']===0x1f4){logger['error'](_0xa076('0xd'),_0x38f8a3,_0x37c172[_0xa076('0x10')][_0xa076('0x11')]);return _0x375e24(_0x37c172[_0xa076('0x10')][_0xa076('0x11')]);}logger[_0xa076('0x10')](_0xa076('0xd'),_0x38f8a3,_0x37c172[_0xa076('0x10')]['message']);return _0x1d19d1(_0x37c172['error'][_0xa076('0x11')]);}else{logger[_0xa076('0xc')]('DeskField,\x20%s,\x20%s',_0x38f8a3,_0xa076('0xe'));_0x1d19d1(_0x37c172['result']['message']);}})[_0xa076('0x12')](function(_0xa2b84f){logger[_0xa076('0x10')](_0xa076('0xd'),_0x38f8a3,_0xa2b84f);_0x375e24(_0xa2b84f);});});}
\ No newline at end of file
+var _0xf69f=['info','DeskField,\x20%s,\x20%s','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then'];(function(_0x146a97,_0x2d8483){var _0x259d5c=function(_0x3ca436){while(--_0x3ca436){_0x146a97['push'](_0x146a97['shift']());}};_0x259d5c(++_0x2d8483);}(_0xf69f,0x19a));var _0xff69=function(_0x434f54,_0x14699a){_0x434f54=_0x434f54-0x0;var _0x173af4=_0xf69f[_0x434f54];return _0x173af4;};'use strict';var _=require('lodash');var util=require(_0xff69('0x0'));var moment=require('moment');var BPromise=require(_0xff69('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xff69('0x2'));var db=require(_0xff69('0x3'))['db'];var utils=require(_0xff69('0x4'));var logger=require(_0xff69('0x5'))(_0xff69('0x6'));var config=require(_0xff69('0x7'));var jayson=require(_0xff69('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3979b2,_0x4f7bf1,_0x54594e){return new BPromise(function(_0x22b2b9,_0x372ed6){return client['request'](_0x3979b2,_0x54594e)[_0xff69('0x9')](function(_0x2dc300){logger[_0xff69('0xa')](_0xff69('0xb'),_0x4f7bf1,'request\x20sent');logger[_0xff69('0xc')](_0xff69('0xd'),_0x4f7bf1,_0xff69('0xe'),JSON[_0xff69('0xf')](_0x2dc300));if(_0x2dc300['error']){if(_0x2dc300[_0xff69('0x10')][_0xff69('0x11')]===0x1f4){logger[_0xff69('0x10')](_0xff69('0xb'),_0x4f7bf1,_0x2dc300[_0xff69('0x10')]['message']);return _0x372ed6(_0x2dc300[_0xff69('0x10')][_0xff69('0x12')]);}logger[_0xff69('0x10')]('DeskField,\x20%s,\x20%s',_0x4f7bf1,_0x2dc300['error'][_0xff69('0x12')]);return _0x22b2b9(_0x2dc300[_0xff69('0x10')][_0xff69('0x12')]);}else{logger[_0xff69('0xa')](_0xff69('0xb'),_0x4f7bf1,_0xff69('0xe'));_0x22b2b9(_0x2dc300[_0xff69('0x13')][_0xff69('0x12')]);}})[_0xff69('0x14')](function(_0x44a34e){logger[_0xff69('0x10')]('DeskField,\x20%s,\x20%s',_0x4f7bf1,_0x44a34e);_0x372ed6(_0x44a34e);});});}
\ No newline at end of file
index 8dfa23c..36d0613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x549a=['/:id','getConfigurations','/:id/fields','getFields','post','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','./intDynamics365Account.controller','isAuthenticated','index','get'];(function(_0x41de6b,_0x46060c){var _0x8d343c=function(_0x56d057){while(--_0x56d057){_0x41de6b['push'](_0x41de6b['shift']());}};_0x8d343c(++_0x46060c);}(_0x549a,0x75));var _0xa549=function(_0x213908,_0x410ace){_0x213908=_0x213908-0x0;var _0x446eea=_0x549a[_0x213908];return _0x446eea;};'use strict';var multer=require(_0xa549('0x0'));var util=require(_0xa549('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa549('0x2')]();var fs_extra=require(_0xa549('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa549('0x4'));var config=require('../../config/environment');var controller=require(_0xa549('0x5'));router['get']('/',auth[_0xa549('0x6')](),controller[_0xa549('0x7')]);router[_0xa549('0x8')](_0xa549('0x9'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth[_0xa549('0x6')](),controller[_0xa549('0xa')]);router['get'](_0xa549('0xb'),auth[_0xa549('0x6')](),controller[_0xa549('0xc')]);router['post']('/',auth[_0xa549('0x6')](),controller['create']);router[_0xa549('0xd')](_0xa549('0xe'),auth[_0xa549('0x6')](),controller[_0xa549('0xf')]);router[_0xa549('0x10')](_0xa549('0x9'),auth[_0xa549('0x6')](),controller[_0xa549('0x11')]);router[_0xa549('0x12')](_0xa549('0x9'),auth[_0xa549('0x6')](),controller[_0xa549('0x13')]);module[_0xa549('0x14')]=router;
\ No newline at end of file
+var _0x1c77=['/:id/configurations','put','update','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','post','create'];(function(_0x3bea52,_0x49c826){var _0x206e88=function(_0x53c216){while(--_0x53c216){_0x3bea52['push'](_0x3bea52['shift']());}};_0x206e88(++_0x49c826);}(_0x1c77,0xad));var _0x71c7=function(_0x354164,_0x4c30de){_0x354164=_0x354164-0x0;var _0x5db9a8=_0x1c77[_0x354164];return _0x5db9a8;};'use strict';var multer=require(_0x71c7('0x0'));var util=require(_0x71c7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x71c7('0x2'));var router=express[_0x71c7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x71c7('0x4'));var interaction=require(_0x71c7('0x5'));var config=require(_0x71c7('0x6'));var controller=require('./intDynamics365Account.controller');router[_0x71c7('0x7')]('/',auth[_0x71c7('0x8')](),controller[_0x71c7('0x9')]);router[_0x71c7('0x7')](_0x71c7('0xa'),auth[_0x71c7('0x8')](),controller[_0x71c7('0xb')]);router[_0x71c7('0x7')]('/:id/configurations',auth[_0x71c7('0x8')](),controller[_0x71c7('0xc')]);router['get'](_0x71c7('0xd'),auth[_0x71c7('0x8')](),controller['getFields']);router[_0x71c7('0xe')]('/',auth['isAuthenticated'](),controller[_0x71c7('0xf')]);router[_0x71c7('0xe')](_0x71c7('0x10'),auth[_0x71c7('0x8')](),controller['addConfiguration']);router[_0x71c7('0x11')](_0x71c7('0xa'),auth[_0x71c7('0x8')](),controller[_0x71c7('0x12')]);router['delete'](_0x71c7('0xa'),auth[_0x71c7('0x8')](),controller[_0x71c7('0x13')]);module[_0x71c7('0x14')]=router;
\ No newline at end of file
index 4bed5b8..5087432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c1a=['sequelize','exports','STRING'];(function(_0x1e7701,_0x13fd0f){var _0x3ab707=function(_0x3c5242){while(--_0x3c5242){_0x1e7701['push'](_0x1e7701['shift']());}};_0x3ab707(++_0x13fd0f);}(_0x7c1a,0x159));var _0xa7c1=function(_0x16fef1,_0x5e80f1){_0x16fef1=_0x16fef1-0x0;var _0x2f0122=_0x7c1a[_0x16fef1];return _0x2f0122;};'use strict';var Sequelize=require(_0xa7c1('0x0'));module[_0xa7c1('0x1')]={'name':{'type':Sequelize[_0xa7c1('0x2')]},'username':{'type':Sequelize[_0xa7c1('0x2')]},'password':{'type':Sequelize[_0xa7c1('0x2')]},'remoteUri':{'type':Sequelize[_0xa7c1('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xa7c1('0x2')]},'clientSecret':{'type':Sequelize[_0xa7c1('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xa7c1('0x2')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4cc7=['STRING','BOOLEAN','sequelize','exports'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x4cc7,0x1b6));var _0x74cc=function(_0x12b0cd,_0x283c33){_0x12b0cd=_0x12b0cd-0x0;var _0x2c82f3=_0x4cc7[_0x12b0cd];return _0x2c82f3;};'use strict';var Sequelize=require(_0x74cc('0x0'));module[_0x74cc('0x1')]={'name':{'type':Sequelize[_0x74cc('0x2')]},'username':{'type':Sequelize[_0x74cc('0x2')]},'password':{'type':Sequelize[_0x74cc('0x2')]},'remoteUri':{'type':Sequelize[_0x74cc('0x2')]},'tenantId':{'type':Sequelize[_0x74cc('0x2')]},'clientId':{'type':Sequelize[_0x74cc('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x74cc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x74cc('0x2')]},'modernAuthentication':{'type':Sequelize[_0x74cc('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 83a589f..8cc0d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x403c=['modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','parentcaseidname','primarycontactidyominame','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientId','CloudProvider','data5','data7','modernAuthentication','access_token','POST','https://login.microsoftonline.com/','password','clientSecret','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','4.0','value','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','Attributes','remove','includes','LogicalName','forEach','@odata.type','push','MetadataId','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','test',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Account','includeAll','include','findAll','rows','catch','show','params','create','body','find','getConfigurations','findOne','Dynamics365Configuration','nolimit','addConfiguration','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','Dynamics365Field','slice','substring','lastIndexOf','getFields','ticketType','Incident','title','description','customerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x403c,0x112));var _0xc403=function(_0x394e67,_0x1fe14e){_0x394e67=_0x394e67-0x0;var _0x23f734=_0x403c[_0x394e67];return _0x23f734;};'use strict';var rp=require(_0xc403('0x0'));var util=require(_0xc403('0x1'));var _=require(_0xc403('0x2'));var qs=require(_0xc403('0x3'));var logger=require(_0xc403('0x4'))(_0xc403('0x5'));var db=require(_0xc403('0x6'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0xab42e4,_0x3537e7){_0x3537e7=_0x3537e7||0xc8;return function(_0x3cbeb1){if(_0x3cbeb1){return _0xab42e4[_0xc403('0x7')](_0x3537e7)[_0xc403('0x8')](_0x3cbeb1);}};}function respondWithFilteredResult(_0x2eb018,_0x4112c9){return function(_0x175901){if(_0x175901){var _0x58c585=typeof _0x4112c9[_0xc403('0x9')]==='undefined'&&typeof _0x4112c9['limit']===_0xc403('0xa');var _0x219553=_0x175901[_0xc403('0xb')];var _0x5ca2c1=_0x58c585?0x0:_0x4112c9['offset'];var _0xdbf5ad=_0x58c585?_0x175901[_0xc403('0xb')]:_0x4112c9['offset']+_0x4112c9[_0xc403('0xc')];var _0x1bcac7;if(_0xdbf5ad>=_0x219553){_0xdbf5ad=_0x219553;_0x1bcac7=0xc8;}else{_0x1bcac7=0xce;}_0x2eb018[_0xc403('0x7')](_0x1bcac7);return _0x2eb018['set'](_0xc403('0xd'),_0x5ca2c1+'-'+_0xdbf5ad+'/'+_0x219553)[_0xc403('0x8')](_0x175901);}return null;};}function saveUpdates(_0x2b4c00){return function(_0x15b132){if(_0x15b132){return _0x15b132[_0xc403('0xe')](_0x2b4c00)[_0xc403('0xf')](function(_0x4aaf2b){return _0x4aaf2b;});}return null;};}function removeEntity(_0x4eeff1){return function(_0x479ae2){if(_0x479ae2){return _0x479ae2[_0xc403('0x10')]()['then'](function(){_0x4eeff1[_0xc403('0x7')](0xcc)[_0xc403('0x11')]();});}};}function handleEntityNotFound(_0xb42219){return function(_0x140bbc){if(!_0x140bbc){_0xb42219[_0xc403('0x12')](0x194);}return _0x140bbc;};}function handleError(_0x1fe77f,_0x398fb1){_0x398fb1=_0x398fb1||0x1f4;return function(_0x26ae49){logger[_0xc403('0x13')](_0x26ae49[_0xc403('0x14')]);if(_0x26ae49[_0xc403('0x15')]){delete _0x26ae49[_0xc403('0x15')];}_0x1fe77f[_0xc403('0x7')](_0x398fb1)[_0xc403('0x16')](_0x26ae49);};}exports[_0xc403('0x17')]=function(_0x4e5de9,_0x397d4a){var _0x1e43c2={},_0x192083={},_0x428468={'count':0x0,'rows':[]};var _0x152850=_['map'](db['Dynamics365Account'][_0xc403('0x18')],function(_0x556944){return{'name':_0x556944[_0xc403('0x19')],'type':_0x556944['type']['key']};});_0x192083[_0xc403('0x1a')]=_[_0xc403('0x1b')](_0x152850,_0xc403('0x15'));_0x192083['query']=_[_0xc403('0x1c')](_0x4e5de9[_0xc403('0x1d')]);_0x192083[_0xc403('0x1e')]=_[_0xc403('0x1f')](_0x192083['model'],_0x192083['query']);_0x1e43c2[_0xc403('0x20')]=_['intersection'](_0x192083[_0xc403('0x1a')],qs[_0xc403('0x21')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0x21')]));_0x1e43c2['attributes']=_0x1e43c2[_0xc403('0x20')][_0xc403('0x22')]?_0x1e43c2[_0xc403('0x20')]:_0x192083[_0xc403('0x1a')];if(!_0x4e5de9[_0xc403('0x1d')]['hasOwnProperty']('nolimit')){_0x1e43c2['limit']=qs[_0xc403('0xc')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0xc')]);_0x1e43c2[_0xc403('0x9')]=qs[_0xc403('0x9')](_0x4e5de9[_0xc403('0x1d')][_0xc403('0x9')]);}_0x1e43c2[_0xc403('0x23')]=qs[_0xc403('0x24')](_0x4e5de9['query'][_0xc403('0x24')]);_0x1e43c2[_0xc403('0x25')]=qs['filters'](_[_0xc403('0x26')](_0x4e5de9[_0xc403('0x1d')],_0x192083[_0xc403('0x1e')]),_0x152850);if(_0x4e5de9[_0xc403('0x1d')][_0xc403('0x27')]){_0x1e43c2[_0xc403('0x25')]=_[_0xc403('0x28')](_0x1e43c2[_0xc403('0x25')],{'$or':_[_0xc403('0x1b')](_0x152850,function(_0x2fe611){if(_0x2fe611['type']!==_0xc403('0x29')){var _0x261db8={};_0x261db8[_0x2fe611[_0xc403('0x15')]]={'$like':'%'+_0x4e5de9['query'][_0xc403('0x27')]+'%'};return _0x261db8;}})});}_0x1e43c2=_[_0xc403('0x28')]({},_0x1e43c2,_0x4e5de9[_0xc403('0x2a')]);var _0x4d85ec={'where':_0x1e43c2['where']};return db[_0xc403('0x2b')][_0xc403('0xb')](_0x4d85ec)[_0xc403('0xf')](function(_0x73549a){_0x428468[_0xc403('0xb')]=_0x73549a;if(_0x4e5de9[_0xc403('0x1d')][_0xc403('0x2c')]){_0x1e43c2[_0xc403('0x2d')]=[{'all':!![]}];}return db[_0xc403('0x2b')][_0xc403('0x2e')](_0x1e43c2);})[_0xc403('0xf')](function(_0x1a23ce){_0x428468[_0xc403('0x2f')]=_0x1a23ce;return _0x428468;})[_0xc403('0xf')](respondWithFilteredResult(_0x397d4a,_0x1e43c2))[_0xc403('0x30')](handleError(_0x397d4a,null));};exports[_0xc403('0x31')]=function(_0x346f92,_0x1e73b8){var _0x3af9c7={'raw':![],'where':{'id':_0x346f92[_0xc403('0x32')]['id']}},_0x1681c6={};_0x1681c6[_0xc403('0x1a')]=_['keys'](db[_0xc403('0x2b')][_0xc403('0x18')]);_0x1681c6[_0xc403('0x1d')]=_[_0xc403('0x1c')](_0x346f92['query']);_0x1681c6[_0xc403('0x1e')]=_[_0xc403('0x1f')](_0x1681c6[_0xc403('0x1a')],_0x1681c6[_0xc403('0x1d')]);_0x3af9c7['attributes']=_[_0xc403('0x1f')](_0x1681c6['model'],qs[_0xc403('0x21')](_0x346f92[_0xc403('0x1d')][_0xc403('0x21')]));_0x3af9c7[_0xc403('0x20')]=_0x3af9c7[_0xc403('0x20')]['length']?_0x3af9c7[_0xc403('0x20')]:_0x1681c6[_0xc403('0x1a')];if(_0x346f92[_0xc403('0x1d')][_0xc403('0x2c')]){_0x3af9c7[_0xc403('0x2d')]=[{'all':!![]}];}_0x3af9c7=_[_0xc403('0x28')]({},_0x3af9c7,_0x346f92['options']);return db[_0xc403('0x2b')]['find'](_0x3af9c7)[_0xc403('0xf')](handleEntityNotFound(_0x1e73b8,null))['then'](respondWithResult(_0x1e73b8,null))['catch'](handleError(_0x1e73b8,null));};exports['create']=function(_0x3ef6be,_0x25015f){return db[_0xc403('0x2b')][_0xc403('0x33')](_0x3ef6be[_0xc403('0x34')],{})[_0xc403('0xf')](respondWithResult(_0x25015f,0xc9))[_0xc403('0x30')](handleError(_0x25015f,null));};exports[_0xc403('0xe')]=function(_0x11c44f,_0x21a21d){if(_0x11c44f[_0xc403('0x34')]['id']){delete _0x11c44f[_0xc403('0x34')]['id'];}return db[_0xc403('0x2b')][_0xc403('0x35')]({'where':{'id':_0x11c44f['params']['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x21a21d,null))[_0xc403('0xf')](saveUpdates(_0x11c44f[_0xc403('0x34')],null))['then'](respondWithResult(_0x21a21d,null))[_0xc403('0x30')](handleError(_0x21a21d,null));};exports['destroy']=function(_0x7c81d9,_0x5d585c){return db['Dynamics365Account'][_0xc403('0x35')]({'where':{'id':_0x7c81d9[_0xc403('0x32')]['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x5d585c,null))[_0xc403('0xf')](removeEntity(_0x5d585c,null))[_0xc403('0x30')](handleError(_0x5d585c,null));};exports[_0xc403('0x36')]=function(_0x19fa2c,_0x59d180){var _0x16c725={};var _0x136f32={};var _0x453c9a;var _0x418e63;return db[_0xc403('0x2b')][_0xc403('0x37')]({'where':{'id':_0x19fa2c[_0xc403('0x32')]['id']}})[_0xc403('0xf')](handleEntityNotFound(_0x59d180,null))[_0xc403('0xf')](function(_0x114112){if(_0x114112){_0x453c9a=_0x114112;_0x136f32['model']=_[_0xc403('0x1c')](db[_0xc403('0x38')][_0xc403('0x18')]);_0x136f32[_0xc403('0x1d')]=_['keys'](_0x19fa2c[_0xc403('0x1d')]);_0x136f32[_0xc403('0x1e')]=_['intersection'](_0x136f32['model'],_0x136f32[_0xc403('0x1d')]);_0x16c725[_0xc403('0x20')]=_[_0xc403('0x1f')](_0x136f32[_0xc403('0x1a')],qs[_0xc403('0x21')](_0x19fa2c[_0xc403('0x1d')][_0xc403('0x21')]));_0x16c725[_0xc403('0x20')]=_0x16c725['attributes'][_0xc403('0x22')]?_0x16c725[_0xc403('0x20')]:_0x136f32[_0xc403('0x1a')];_0x16c725[_0xc403('0x23')]=qs['sort'](_0x19fa2c['query'][_0xc403('0x24')]);_0x16c725[_0xc403('0x25')]=qs[_0xc403('0x1e')](_[_0xc403('0x26')](_0x19fa2c[_0xc403('0x1d')],_0x136f32['filters']));if(_0x19fa2c[_0xc403('0x1d')][_0xc403('0x27')]){_0x16c725[_0xc403('0x25')]=_[_0xc403('0x28')](_0x16c725['where'],{'$or':_[_0xc403('0x1b')](_0x16c725[_0xc403('0x20')],function(_0x5d331f){var _0x199afb={};_0x199afb[_0x5d331f]={'$like':'%'+_0x19fa2c[_0xc403('0x1d')]['filter']+'%'};return _0x199afb;})});}_0x16c725=_['merge']({},_0x16c725,_0x19fa2c[_0xc403('0x2a')]);return _0x453c9a[_0xc403('0x36')](_0x16c725);}})[_0xc403('0xf')](function(_0x23996b){if(_0x23996b){_0x418e63=_0x23996b[_0xc403('0x22')];if(!_0x19fa2c[_0xc403('0x1d')]['hasOwnProperty'](_0xc403('0x39'))){_0x16c725[_0xc403('0xc')]=qs['limit'](_0x19fa2c[_0xc403('0x1d')][_0xc403('0xc')]);_0x16c725[_0xc403('0x9')]=qs[_0xc403('0x9')](_0x19fa2c['query'][_0xc403('0x9')]);}return _0x453c9a[_0xc403('0x36')](_0x16c725);}})[_0xc403('0xf')](function(_0x3800af){if(_0x3800af){return _0x3800af?{'count':_0x418e63,'rows':_0x3800af}:null;}})[_0xc403('0xf')](respondWithResult(_0x59d180,null))[_0xc403('0x30')](handleError(_0x59d180,null));};exports[_0xc403('0x3a')]=function(_0x3a5c16,_0xce946e){if(_0x3a5c16['body']['id']){delete _0x3a5c16[_0xc403('0x34')]['id'];}return db[_0xc403('0x2b')][_0xc403('0x37')]({'where':{'id':_0x3a5c16['params']['id']}})['then'](handleEntityNotFound(_0xce946e,null))[_0xc403('0xf')](function(_0x566f6e){if(_0x566f6e){_0x3a5c16[_0xc403('0x34')]['AccountId']=_0x566f6e['id'];_0x3a5c16[_0xc403('0x34')][_0xc403('0x3b')]=integrations[_0xc403('0x3c')](_0x3a5c16['body'][_0xc403('0x3d')],_0x3a5c16[_0xc403('0x34')][_0xc403('0x3e')]);_0x3a5c16[_0xc403('0x34')][_0xc403('0x3f')]=integrations[_0xc403('0x40')](_0x3a5c16[_0xc403('0x34')]['channel'],_0x3a5c16['body'][_0xc403('0x3e')]);return db[_0xc403('0x38')][_0xc403('0x33')](_0x3a5c16[_0xc403('0x34')],{'include':[{'model':db['Dynamics365Field'],'as':_0xc403('0x3b')},{'model':db[_0xc403('0x41')],'as':_0xc403('0x3f')}]});}return null;})['then'](respondWithResult(_0xce946e,null))['catch'](handleError(_0xce946e,null));};function sanitizeRemoteUri(_0xd1a660){var _0x49fcf1=_0xd1a660[_0xc403('0x42')](-0x1);if(_0x49fcf1==='/')return _0xd1a660[_0xc403('0x43')](0x0,_0xd1a660[_0xc403('0x44')](_0x49fcf1));return _0xd1a660;}function getWebApiUrl(_0x13f3ad){return util['format']('%s/api/data/v9.0/',_0x13f3ad);}exports[_0xc403('0x45')]=function(_0x30c570,_0x48a94b){var _0x12af2a=_0x30c570['query'][_0xc403('0x46')];var _0x213355=_0x12af2a==='incident'?_0xc403('0x47'):'PhoneCall';var _0x2af367='';var _0x7c4f3a='';var _0x168ca='';var _0x30b2b0='';var _0x17456a='';var _0x56f111='';var _0xddbb12='';var _0x5c64d2='';var _0x13065c=[_0xc403('0x48'),_0xc403('0x49'),_0xc403('0x4a'),'ownerid',_0xc403('0x4b'),_0xc403('0x4c'),_0xc403('0x4d'),_0xc403('0x4e'),_0xc403('0x4f'),_0xc403('0x50')];var _0x40e288=[_0xc403('0x51'),_0xc403('0x52'),_0xc403('0x53'),'billedserviceunits',_0xc403('0x54'),'contactidyominame',_0xc403('0x55'),_0xc403('0x56'),_0xc403('0x57'),_0xc403('0x58'),_0xc403('0x59'),_0xc403('0x5a'),_0xc403('0x5b'),_0xc403('0x5c'),'createdonbehalfbyyominame',_0xc403('0x5d'),_0xc403('0x5e'),_0xc403('0x5f'),_0xc403('0x60'),'entitlementidname',_0xc403('0x61'),_0xc403('0x62'),_0xc403('0x63'),_0xc403('0x64'),_0xc403('0x65'),_0xc403('0x66'),_0xc403('0x67'),_0xc403('0x68'),_0xc403('0x69'),_0xc403('0x6a'),_0xc403('0x6b'),_0xc403('0x6c'),_0xc403('0x6d'),'modifiedbyname',_0xc403('0x6e'),_0xc403('0x6f'),_0xc403('0x70'),_0xc403('0x71'),_0xc403('0x72'),_0xc403('0x73'),_0xc403('0x74'),_0xc403('0x75'),'overriddencreatedon',_0xc403('0x76'),'owneridtype','owneridyominame',_0xc403('0x77'),'primarycontactidname',_0xc403('0x78'),'prioritycodename',_0xc403('0x79'),_0xc403('0x7a'),_0xc403('0x7b'),_0xc403('0x7c'),_0xc403('0x7d'),_0xc403('0x7e'),'responsiblecontactidyominame',_0xc403('0x7f'),_0xc403('0x80'),_0xc403('0x81'),_0xc403('0x82'),_0xc403('0x83'),_0xc403('0x84'),_0xc403('0x85'),'ticketnumber','timezoneruleversionnumber',_0xc403('0x86'),_0xc403('0x87'),_0xc403('0x88'),_0xc403('0x89')];var _0x574273=_0x13065c[_0xc403('0x8a')](_0x40e288);return db['Dynamics365Account']['findOne']({'where':{'id':_0x30c570['params']['id']},'attributes':['id',_0xc403('0x8b'),'password',_0xc403('0x8c'),_0xc403('0x8d'),_0xc403('0x8e'),'clientSecret','modernAuthentication'],'include':[{'model':db[_0xc403('0x8f')],'as':_0xc403('0x8f'),'attributes':['id',_0xc403('0x90'),_0xc403('0x91')]}]})[_0xc403('0xf')](handleEntityNotFound(_0x48a94b,null))['then'](function(_0x1ee22b){if(_0x1ee22b){if(_0x1ee22b[_0xc403('0x92')]){_0x1ee22b[_0xc403('0x93')]=_0x1ee22b['CloudProvider'][_0xc403('0x90')];_0x5c64d2=sanitizeRemoteUri(_0x1ee22b[_0xc403('0x8f')]['data7']);_0xddbb12=getWebApiUrl(_0x5c64d2);return _0x1ee22b;}_0x5c64d2=sanitizeRemoteUri(_0x1ee22b[_0xc403('0x8c')]);_0xddbb12=getWebApiUrl(_0x5c64d2);var _0x302ad5={'method':_0xc403('0x94'),'uri':_0xc403('0x95')+_0x1ee22b['tenantId']+'/oauth2/token','form':{'client_id':_0x1ee22b['clientId'],'resource':_0x5c64d2,'username':_0x1ee22b[_0xc403('0x8b')],'password':_0x1ee22b[_0xc403('0x96')],'grant_type':'password','client_secret':_0x1ee22b[_0xc403('0x97')]},'json':!![]};return rp(_0x302ad5);}})[_0xc403('0xf')](function(_0x816151){_0x56f111=_0x816151['access_token'];var _0x1380f3={'method':_0xc403('0x98'),'uri':encodeURI(_0xddbb12+_0xc403('0x99')+_0x213355+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x56f111,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x1380f3);})[_0xc403('0xf')](function(_0x5749a8){var _0x427f9e=_0x5749a8[_0xc403('0x9b')][0x0];var _0x4bf965=_0x427f9e['MetadataId'];var _0x1e4dce={'method':_0xc403('0x98'),'uri':_0xddbb12+_0xc403('0x9c')+_0x4bf965+_0xc403('0x9d'),'headers':{'Authorization':_0xc403('0x9e')+_0x56f111,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x1e4dce);})[_0xc403('0xf')](function(_0x518c97){_0x2af367=_0x518c97;_0x7c4f3a=_0x2af367[_0xc403('0x9f')];_0x7c4f3a=_[_0xc403('0xa0')](_0x7c4f3a,function(_0x407197){return!_0x574273[_0xc403('0xa1')](_0x407197[_0xc403('0xa2')]);});var _0x4740b0=[];var _0x507abe=[];_0x7c4f3a[_0xc403('0xa3')](function(_0x4cd85b){if(_0x4cd85b[_0xc403('0xa4')]){var _0x373711=_0x4cd85b['@odata.type']['substring'](_0x4cd85b[_0xc403('0xa4')][_0xc403('0x44')]('.')+0x1);if(_0x373711==='PicklistAttributeMetadata'){_0x4740b0[_0xc403('0xa5')](getSelectList(_0xddbb12,_0x12af2a,_0x507abe,_0x2af367['MetadataId'],_0x4cd85b[_0xc403('0xa6')],_0x56f111));}}});return Promise['all'](_0x4740b0);})[_0xc403('0xf')](function(_0x12fa17){_0x168ca=_0x12fa17[0x0];var _0x2fe5e5=[];var _0x2707bf=[];_0x7c4f3a[_0xc403('0xa3')](function(_0x4d5051){if(!_['isNil'](_0x4d5051['@odata.type'])){var _0x1bb514=_0x4d5051['@odata.type']['substring'](_0x4d5051['@odata.type'][_0xc403('0x44')]('.')+0x1);if(_0x1bb514===_0xc403('0xa7')){_0x2fe5e5[_0xc403('0xa5')](getBooleanList(_0xddbb12,_0x12af2a,_0x2707bf,_0x2af367[_0xc403('0xa6')],_0x4d5051[_0xc403('0xa6')],_0x56f111));}}});return Promise[_0xc403('0xa8')](_0x2fe5e5);})['then'](function(_0x1cc77b){_0x30b2b0=_0x1cc77b[0x0];var _0x1a6b51=[];var _0x3beb95=[];_0x7c4f3a[_0xc403('0xa3')](function(_0xc69688){if(_0xc69688['@odata.type']){var _0x286b15=_0xc69688[_0xc403('0xa4')][_0xc403('0x43')](_0xc69688['@odata.type'][_0xc403('0x44')]('.')+0x1);if(_0x286b15===_0xc403('0xa9')||_0x286b15===_0xc403('0xaa')||_0x286b15===_0xc403('0xab')||_0x286b15==='IntegerAttributeMetadata'||_0x286b15===_0xc403('0xac')||_0x286b15===_0xc403('0xad')||_0x286b15===_0xc403('0xae')||_0x286b15===_0xc403('0xaf')||_0x286b15===_0xc403('0xb0')||_0x286b15===_0xc403('0xb1')){_0x1a6b51['push'](getInputList(_0xddbb12,_0x12af2a,_0x286b15,_0x3beb95,_0x2af367[_0xc403('0xa6')],_0xc69688['MetadataId'],_0x56f111));}}});return Promise[_0xc403('0xa8')](_0x1a6b51);})[_0xc403('0xf')](function(_0xba11c1){_0x17456a=_0xba11c1[0x0];var _0x8ddb8d=_0x168ca[_0xc403('0x8a')](_0x30b2b0)[_0xc403('0x8a')](_0x17456a);var _0x54572f={'count':_0x8ddb8d[_0xc403('0x22')],'rows':_0x8ddb8d};return _0x54572f;})[_0xc403('0xf')](respondWithResult(_0x48a94b,null))[_0xc403('0x30')](function(_0x4e6eb3){var _0x138e7f=_0x30c570[_0xc403('0x1d')]['test']?0x1f4:_0x4e6eb3[_0xc403('0xb2')]||0x1f4;logger['error'](_0x4e6eb3[_0xc403('0x14')]);delete _0x4e6eb3['name'];if(_0x138e7f===0x191){_0x138e7f=0x190;}_0x48a94b['status'](_0x138e7f)[_0xc403('0x16')](_0x30c570[_0xc403('0x1d')][_0xc403('0xb3')]?{'message':'Wrong\x20credentials','statusCode':_0x4e6eb3[_0xc403('0xb2')]}:_0x4e6eb3);});};function getSelectList(_0x2c6e06,_0x305071,_0x3fcbb6,_0x1f595e,_0x39ce0b,_0x241591){var _0x110f7e={'method':_0xc403('0x98'),'uri':_0x2c6e06+'EntityDefinitions('+_0x1f595e+_0xc403('0xb4')+_0x39ce0b+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0xc403('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x241591,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x110f7e)[_0xc403('0xf')](function(_0x2f7b05){var _0x49b4d1=[];var _0x164346=_0x2f7b05[_0xc403('0xb6')]['Options'];_0x164346[_0xc403('0xa3')](function(_0x3dc018){_0x49b4d1[_0xc403('0xa5')]({'name':_0x3dc018[_0xc403('0xb7')][_0xc403('0xb8')][_0xc403('0xb7')],'value':String(_0x3dc018[_0xc403('0xb9')])});});var _0x7834b8={'id':_0x305071+'_'+_0x2f7b05[_0xc403('0xa2')],'name':_0x2f7b05[_0xc403('0xba')][_0xc403('0xb8')]['Label'],'custom':![],'options':_0x49b4d1};_0x3fcbb6[_0xc403('0xa5')](_0x7834b8);return _0x3fcbb6;});}function getBooleanList(_0x32fdb8,_0x47dece,_0x364695,_0x4de50a,_0x5b2789,_0x28f353){var _0x344ec5={'method':_0xc403('0x98'),'uri':_0x32fdb8+_0xc403('0x9c')+_0x4de50a+')/Attributes('+_0x5b2789+_0xc403('0xbb'),'headers':{'Authorization':_0xc403('0x9e')+_0x28f353,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x344ec5)['then'](function(_0x32936a){var _0x219115=[];_0x219115[_0xc403('0xa5')]({'name':_0x32936a[_0xc403('0xb6')][_0xc403('0xbc')][_0xc403('0xb7')]['UserLocalizedLabel'][_0xc403('0xb7')],'value':'true'},{'name':_0x32936a[_0xc403('0xb6')]['FalseOption'][_0xc403('0xb7')]['UserLocalizedLabel'][_0xc403('0xb7')],'value':_0xc403('0xbd')});var _0x35b92d={'id':_0x47dece+'_'+_0x32936a['LogicalName'],'name':_0x32936a[_0xc403('0xba')]['UserLocalizedLabel'][_0xc403('0xb7')],'custom':![],'options':_0x219115};_0x364695[_0xc403('0xa5')](_0x35b92d);return _0x364695;});}function getInputList(_0x180f97,_0x883231,_0x22cb37,_0x5d1f3b,_0x23e40b,_0xe3c046,_0x123f80){var _0x3b4416={'method':_0xc403('0x98'),'uri':_0x180f97+_0xc403('0x9c')+_0x23e40b+_0xc403('0xb4')+_0xe3c046+_0xc403('0xbe')+_0x22cb37+_0xc403('0xbf'),'headers':{'Authorization':_0xc403('0x9e')+_0x123f80,'If-None-Match':null,'OData-Version':_0xc403('0x9a')},'json':!![]};return rp(_0x3b4416)[_0xc403('0xf')](function(_0x49dd38){var _0x54cf1f={'id':_0x883231+'_'+_0x49dd38[_0xc403('0xa2')],'name':_0x49dd38[_0xc403('0xba')][_0xc403('0xb8')]?_0x49dd38[_0xc403('0xba')]['UserLocalizedLabel'][_0xc403('0xb7')]:_0x49dd38[_0xc403('0xa2')],'custom':![],'options':[]};_0x5d1f3b[_0xc403('0xa5')](_0x54cf1f);return _0x5d1f3b;});}
\ No newline at end of file
+var _0xbf06=['modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','productidname','resolveby','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','clientSecret','modernAuthentication','CloudProvider','data5','access_token','data7','remoteUri','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','clientId','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','remove','includes','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','forEach','BooleanAttributeMetadata','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','stack','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','UserLocalizedLabel','LogicalName','DisplayName','TrueOption','true','false','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','end','sendStatus','error','name','send','index','map','rawAttributes','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','Dynamics365Account','catch','show','params','keys','includeAll','find','create','body','getConfigurations','Dynamics365Configuration','addConfiguration','findOne','Subjects','channel','Descriptions','getDescriptions','Dynamics365Field','slice','substring','getFields','ticketType','Incident','description','customerid','caseorigincode','phonenumber','directioncode','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname'];(function(_0x104615,_0x558ce7){var _0x2435e3=function(_0x51652b){while(--_0x51652b){_0x104615['push'](_0x104615['shift']());}};_0x2435e3(++_0x558ce7);}(_0xbf06,0x101));var _0x6bf0=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0xbf06[_0x1beef3];return _0x5af964;};'use strict';var rp=require('request-promise');var util=require(_0x6bf0('0x0'));var _=require(_0x6bf0('0x1'));var qs=require(_0x6bf0('0x2'));var logger=require(_0x6bf0('0x3'))(_0x6bf0('0x4'));var db=require(_0x6bf0('0x5'))['db'];var integrations=require(_0x6bf0('0x6'));function respondWithResult(_0x58b98a,_0x58a2c6){_0x58a2c6=_0x58a2c6||0xc8;return function(_0x1f2628){if(_0x1f2628){return _0x58b98a[_0x6bf0('0x7')](_0x58a2c6)[_0x6bf0('0x8')](_0x1f2628);}};}function respondWithFilteredResult(_0x255ed6,_0x4fc26f){return function(_0x77d107){if(_0x77d107){var _0x29f59d=typeof _0x4fc26f[_0x6bf0('0x9')]===_0x6bf0('0xa')&&typeof _0x4fc26f[_0x6bf0('0xb')]==='undefined';var _0x3a3e12=_0x77d107[_0x6bf0('0xc')];var _0x2e2743=_0x29f59d?0x0:_0x4fc26f[_0x6bf0('0x9')];var _0x1eb7ec=_0x29f59d?_0x77d107['count']:_0x4fc26f['offset']+_0x4fc26f[_0x6bf0('0xb')];var _0x3a1e81;if(_0x1eb7ec>=_0x3a3e12){_0x1eb7ec=_0x3a3e12;_0x3a1e81=0xc8;}else{_0x3a1e81=0xce;}_0x255ed6[_0x6bf0('0x7')](_0x3a1e81);return _0x255ed6[_0x6bf0('0xd')](_0x6bf0('0xe'),_0x2e2743+'-'+_0x1eb7ec+'/'+_0x3a3e12)[_0x6bf0('0x8')](_0x77d107);}return null;};}function saveUpdates(_0x25b518){return function(_0xfdda14){if(_0xfdda14){return _0xfdda14[_0x6bf0('0xf')](_0x25b518)['then'](function(_0x5a0203){return _0x5a0203;});}return null;};}function removeEntity(_0x4a4f12){return function(_0x4f0aef){if(_0x4f0aef){return _0x4f0aef[_0x6bf0('0x10')]()[_0x6bf0('0x11')](function(){_0x4a4f12[_0x6bf0('0x7')](0xcc)[_0x6bf0('0x12')]();});}};}function handleEntityNotFound(_0x438060){return function(_0x87ce78){if(!_0x87ce78){_0x438060[_0x6bf0('0x13')](0x194);}return _0x87ce78;};}function handleError(_0x56bc17,_0xc5e763){_0xc5e763=_0xc5e763||0x1f4;return function(_0x3e0b2b){logger[_0x6bf0('0x14')](_0x3e0b2b['stack']);if(_0x3e0b2b['name']){delete _0x3e0b2b[_0x6bf0('0x15')];}_0x56bc17[_0x6bf0('0x7')](_0xc5e763)[_0x6bf0('0x16')](_0x3e0b2b);};}exports[_0x6bf0('0x17')]=function(_0x1eb811,_0x379639){var _0x5054bf={},_0x1ca906={},_0x1c4ed8={'count':0x0,'rows':[]};var _0x55cdf8=_[_0x6bf0('0x18')](db['Dynamics365Account'][_0x6bf0('0x19')],function(_0x2776e5){return{'name':_0x2776e5['fieldName'],'type':_0x2776e5[_0x6bf0('0x1a')][_0x6bf0('0x1b')]};});_0x1ca906['model']=_[_0x6bf0('0x18')](_0x55cdf8,_0x6bf0('0x15'));_0x1ca906[_0x6bf0('0x1c')]=_['keys'](_0x1eb811[_0x6bf0('0x1c')]);_0x1ca906[_0x6bf0('0x1d')]=_[_0x6bf0('0x1e')](_0x1ca906[_0x6bf0('0x1f')],_0x1ca906[_0x6bf0('0x1c')]);_0x5054bf['attributes']=_['intersection'](_0x1ca906['model'],qs['fields'](_0x1eb811[_0x6bf0('0x1c')][_0x6bf0('0x20')]));_0x5054bf[_0x6bf0('0x21')]=_0x5054bf[_0x6bf0('0x21')][_0x6bf0('0x22')]?_0x5054bf[_0x6bf0('0x21')]:_0x1ca906['model'];if(!_0x1eb811['query'][_0x6bf0('0x23')](_0x6bf0('0x24'))){_0x5054bf['limit']=qs[_0x6bf0('0xb')](_0x1eb811[_0x6bf0('0x1c')][_0x6bf0('0xb')]);_0x5054bf[_0x6bf0('0x9')]=qs['offset'](_0x1eb811[_0x6bf0('0x1c')][_0x6bf0('0x9')]);}_0x5054bf[_0x6bf0('0x25')]=qs[_0x6bf0('0x26')](_0x1eb811['query'][_0x6bf0('0x26')]);_0x5054bf['where']=qs[_0x6bf0('0x1d')](_[_0x6bf0('0x27')](_0x1eb811[_0x6bf0('0x1c')],_0x1ca906[_0x6bf0('0x1d')]),_0x55cdf8);if(_0x1eb811[_0x6bf0('0x1c')][_0x6bf0('0x28')]){_0x5054bf[_0x6bf0('0x29')]=_[_0x6bf0('0x2a')](_0x5054bf[_0x6bf0('0x29')],{'$or':_[_0x6bf0('0x18')](_0x55cdf8,function(_0x416b28){if(_0x416b28[_0x6bf0('0x1a')]!==_0x6bf0('0x2b')){var _0x209bfd={};_0x209bfd[_0x416b28['name']]={'$like':'%'+_0x1eb811[_0x6bf0('0x1c')][_0x6bf0('0x28')]+'%'};return _0x209bfd;}})});}_0x5054bf=_[_0x6bf0('0x2a')]({},_0x5054bf,_0x1eb811[_0x6bf0('0x2c')]);var _0x291cec={'where':_0x5054bf['where']};return db['Dynamics365Account'][_0x6bf0('0xc')](_0x291cec)[_0x6bf0('0x11')](function(_0x488aa6){_0x1c4ed8[_0x6bf0('0xc')]=_0x488aa6;if(_0x1eb811[_0x6bf0('0x1c')]['includeAll']){_0x5054bf[_0x6bf0('0x2d')]=[{'all':!![]}];}return db[_0x6bf0('0x2e')]['findAll'](_0x5054bf);})[_0x6bf0('0x11')](function(_0x55a00a){_0x1c4ed8['rows']=_0x55a00a;return _0x1c4ed8;})[_0x6bf0('0x11')](respondWithFilteredResult(_0x379639,_0x5054bf))[_0x6bf0('0x2f')](handleError(_0x379639,null));};exports[_0x6bf0('0x30')]=function(_0x3056c9,_0x3eedab){var _0x1612cd={'raw':![],'where':{'id':_0x3056c9[_0x6bf0('0x31')]['id']}},_0x3604b1={};_0x3604b1[_0x6bf0('0x1f')]=_[_0x6bf0('0x32')](db['Dynamics365Account'][_0x6bf0('0x19')]);_0x3604b1['query']=_[_0x6bf0('0x32')](_0x3056c9[_0x6bf0('0x1c')]);_0x3604b1[_0x6bf0('0x1d')]=_['intersection'](_0x3604b1[_0x6bf0('0x1f')],_0x3604b1[_0x6bf0('0x1c')]);_0x1612cd['attributes']=_[_0x6bf0('0x1e')](_0x3604b1[_0x6bf0('0x1f')],qs[_0x6bf0('0x20')](_0x3056c9['query'][_0x6bf0('0x20')]));_0x1612cd[_0x6bf0('0x21')]=_0x1612cd[_0x6bf0('0x21')][_0x6bf0('0x22')]?_0x1612cd['attributes']:_0x3604b1[_0x6bf0('0x1f')];if(_0x3056c9[_0x6bf0('0x1c')][_0x6bf0('0x33')]){_0x1612cd[_0x6bf0('0x2d')]=[{'all':!![]}];}_0x1612cd=_[_0x6bf0('0x2a')]({},_0x1612cd,_0x3056c9[_0x6bf0('0x2c')]);return db[_0x6bf0('0x2e')][_0x6bf0('0x34')](_0x1612cd)[_0x6bf0('0x11')](handleEntityNotFound(_0x3eedab,null))[_0x6bf0('0x11')](respondWithResult(_0x3eedab,null))[_0x6bf0('0x2f')](handleError(_0x3eedab,null));};exports[_0x6bf0('0x35')]=function(_0x5a6865,_0x445401){return db[_0x6bf0('0x2e')][_0x6bf0('0x35')](_0x5a6865[_0x6bf0('0x36')],{})['then'](respondWithResult(_0x445401,0xc9))[_0x6bf0('0x2f')](handleError(_0x445401,null));};exports[_0x6bf0('0xf')]=function(_0x1305ff,_0x44b73b){if(_0x1305ff[_0x6bf0('0x36')]['id']){delete _0x1305ff['body']['id'];}return db[_0x6bf0('0x2e')][_0x6bf0('0x34')]({'where':{'id':_0x1305ff[_0x6bf0('0x31')]['id']}})[_0x6bf0('0x11')](handleEntityNotFound(_0x44b73b,null))[_0x6bf0('0x11')](saveUpdates(_0x1305ff[_0x6bf0('0x36')],null))[_0x6bf0('0x11')](respondWithResult(_0x44b73b,null))[_0x6bf0('0x2f')](handleError(_0x44b73b,null));};exports[_0x6bf0('0x10')]=function(_0x433037,_0x1110ae){return db[_0x6bf0('0x2e')][_0x6bf0('0x34')]({'where':{'id':_0x433037[_0x6bf0('0x31')]['id']}})[_0x6bf0('0x11')](handleEntityNotFound(_0x1110ae,null))[_0x6bf0('0x11')](removeEntity(_0x1110ae,null))[_0x6bf0('0x2f')](handleError(_0x1110ae,null));};exports[_0x6bf0('0x37')]=function(_0x5338de,_0x1f8f82){var _0x311f8e={};var _0x4d817d={};var _0x124f7f;var _0x9cb00e;return db[_0x6bf0('0x2e')]['findOne']({'where':{'id':_0x5338de[_0x6bf0('0x31')]['id']}})[_0x6bf0('0x11')](handleEntityNotFound(_0x1f8f82,null))['then'](function(_0xcb23eb){if(_0xcb23eb){_0x124f7f=_0xcb23eb;_0x4d817d[_0x6bf0('0x1f')]=_[_0x6bf0('0x32')](db[_0x6bf0('0x38')][_0x6bf0('0x19')]);_0x4d817d[_0x6bf0('0x1c')]=_['keys'](_0x5338de[_0x6bf0('0x1c')]);_0x4d817d[_0x6bf0('0x1d')]=_[_0x6bf0('0x1e')](_0x4d817d[_0x6bf0('0x1f')],_0x4d817d['query']);_0x311f8e[_0x6bf0('0x21')]=_[_0x6bf0('0x1e')](_0x4d817d[_0x6bf0('0x1f')],qs[_0x6bf0('0x20')](_0x5338de[_0x6bf0('0x1c')][_0x6bf0('0x20')]));_0x311f8e['attributes']=_0x311f8e[_0x6bf0('0x21')][_0x6bf0('0x22')]?_0x311f8e[_0x6bf0('0x21')]:_0x4d817d[_0x6bf0('0x1f')];_0x311f8e[_0x6bf0('0x25')]=qs[_0x6bf0('0x26')](_0x5338de[_0x6bf0('0x1c')][_0x6bf0('0x26')]);_0x311f8e[_0x6bf0('0x29')]=qs[_0x6bf0('0x1d')](_[_0x6bf0('0x27')](_0x5338de[_0x6bf0('0x1c')],_0x4d817d[_0x6bf0('0x1d')]));if(_0x5338de[_0x6bf0('0x1c')][_0x6bf0('0x28')]){_0x311f8e[_0x6bf0('0x29')]=_[_0x6bf0('0x2a')](_0x311f8e[_0x6bf0('0x29')],{'$or':_[_0x6bf0('0x18')](_0x311f8e[_0x6bf0('0x21')],function(_0x1bc0f1){var _0x501ade={};_0x501ade[_0x1bc0f1]={'$like':'%'+_0x5338de[_0x6bf0('0x1c')][_0x6bf0('0x28')]+'%'};return _0x501ade;})});}_0x311f8e=_[_0x6bf0('0x2a')]({},_0x311f8e,_0x5338de[_0x6bf0('0x2c')]);return _0x124f7f[_0x6bf0('0x37')](_0x311f8e);}})['then'](function(_0x3633a2){if(_0x3633a2){_0x9cb00e=_0x3633a2[_0x6bf0('0x22')];if(!_0x5338de[_0x6bf0('0x1c')][_0x6bf0('0x23')](_0x6bf0('0x24'))){_0x311f8e[_0x6bf0('0xb')]=qs['limit'](_0x5338de['query'][_0x6bf0('0xb')]);_0x311f8e[_0x6bf0('0x9')]=qs[_0x6bf0('0x9')](_0x5338de['query'][_0x6bf0('0x9')]);}return _0x124f7f['getConfigurations'](_0x311f8e);}})[_0x6bf0('0x11')](function(_0x10c268){if(_0x10c268){return _0x10c268?{'count':_0x9cb00e,'rows':_0x10c268}:null;}})[_0x6bf0('0x11')](respondWithResult(_0x1f8f82,null))[_0x6bf0('0x2f')](handleError(_0x1f8f82,null));};exports[_0x6bf0('0x39')]=function(_0x565d41,_0x19ad28){if(_0x565d41['body']['id']){delete _0x565d41[_0x6bf0('0x36')]['id'];}return db['Dynamics365Account'][_0x6bf0('0x3a')]({'where':{'id':_0x565d41[_0x6bf0('0x31')]['id']}})[_0x6bf0('0x11')](handleEntityNotFound(_0x19ad28,null))[_0x6bf0('0x11')](function(_0x238cb3){if(_0x238cb3){_0x565d41[_0x6bf0('0x36')]['AccountId']=_0x238cb3['id'];_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x3b')]=integrations['getSubjects'](_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x3c')],_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x1a')]);_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x3d')]=integrations[_0x6bf0('0x3e')](_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x3c')],_0x565d41[_0x6bf0('0x36')][_0x6bf0('0x1a')]);return db[_0x6bf0('0x38')][_0x6bf0('0x35')](_0x565d41[_0x6bf0('0x36')],{'include':[{'model':db[_0x6bf0('0x3f')],'as':_0x6bf0('0x3b')},{'model':db[_0x6bf0('0x3f')],'as':'Descriptions'}]});}return null;})[_0x6bf0('0x11')](respondWithResult(_0x19ad28,null))[_0x6bf0('0x2f')](handleError(_0x19ad28,null));};function sanitizeRemoteUri(_0x28d046){var _0x16189c=_0x28d046[_0x6bf0('0x40')](-0x1);if(_0x16189c==='/')return _0x28d046[_0x6bf0('0x41')](0x0,_0x28d046['lastIndexOf'](_0x16189c));return _0x28d046;}function getWebApiUrl(_0x26bad7){return util['format']('%s/api/data/v9.0/',_0x26bad7);}exports[_0x6bf0('0x42')]=function(_0xb48243,_0x567472){var _0x52b081=_0xb48243[_0x6bf0('0x1c')][_0x6bf0('0x43')];var _0x29a075=_0x52b081==='incident'?_0x6bf0('0x44'):'PhoneCall';var _0x1dbb09='';var _0xebf7cb='';var _0x360a42='';var _0x38e4f7='';var _0x3232b6='';var _0x158c75='';var _0xbc5e35='';var _0x5d5de6='';var _0x93161a=['title',_0x6bf0('0x45'),_0x6bf0('0x46'),'ownerid',_0x6bf0('0x47'),'subject',_0x6bf0('0x48'),'regardingobjectid',_0x6bf0('0x49'),'phonecall_activity_parties'];var _0xa705c=[_0x6bf0('0x4a'),_0x6bf0('0x4b'),_0x6bf0('0x4c'),_0x6bf0('0x4d'),'contactidname',_0x6bf0('0x4e'),'contractdetailidname',_0x6bf0('0x4f'),_0x6bf0('0x50'),_0x6bf0('0x51'),_0x6bf0('0x52'),_0x6bf0('0x53'),_0x6bf0('0x54'),_0x6bf0('0x55'),_0x6bf0('0x56'),_0x6bf0('0x57'),_0x6bf0('0x58'),_0x6bf0('0x59'),'emailaddress',_0x6bf0('0x5a'),_0x6bf0('0x5b'),_0x6bf0('0x5c'),_0x6bf0('0x5d'),'exchangerate','firstresponsebykpiidname','followupby',_0x6bf0('0x5e'),_0x6bf0('0x5f'),_0x6bf0('0x60'),_0x6bf0('0x61'),_0x6bf0('0x62'),'modifiedbyexternalpartyname',_0x6bf0('0x63'),_0x6bf0('0x64'),'modifiedbyyominame',_0x6bf0('0x65'),_0x6bf0('0x66'),_0x6bf0('0x67'),'msdyn_incidenttypename','msdyn_iotalertname',_0x6bf0('0x68'),_0x6bf0('0x69'),_0x6bf0('0x6a'),'owneridname',_0x6bf0('0x6b'),_0x6bf0('0x6c'),'parentcaseidname',_0x6bf0('0x6d'),_0x6bf0('0x6e'),'prioritycodename',_0x6bf0('0x6f'),'productserialnumber',_0x6bf0('0x70'),_0x6bf0('0x71'),'responseby',_0x6bf0('0x72'),_0x6bf0('0x73'),_0x6bf0('0x74'),_0x6bf0('0x75'),_0x6bf0('0x76'),'socialprofileidname','statecode','statuscode',_0x6bf0('0x77'),'ticketnumber',_0x6bf0('0x78'),_0x6bf0('0x79'),_0x6bf0('0x7a'),_0x6bf0('0x7b'),_0x6bf0('0x7c')];var _0x20fb52=_0x93161a[_0x6bf0('0x7d')](_0xa705c);return db[_0x6bf0('0x2e')]['findOne']({'where':{'id':_0xb48243[_0x6bf0('0x31')]['id']},'attributes':['id',_0x6bf0('0x7e'),_0x6bf0('0x7f'),'remoteUri','tenantId','clientId',_0x6bf0('0x80'),_0x6bf0('0x81')],'include':[{'model':db[_0x6bf0('0x82')],'as':'CloudProvider','attributes':['id',_0x6bf0('0x83'),'data7']}]})[_0x6bf0('0x11')](handleEntityNotFound(_0x567472,null))[_0x6bf0('0x11')](function(_0x33aafd){if(_0x33aafd){if(_0x33aafd[_0x6bf0('0x81')]){_0x33aafd[_0x6bf0('0x84')]=_0x33aafd[_0x6bf0('0x82')][_0x6bf0('0x83')];_0x5d5de6=sanitizeRemoteUri(_0x33aafd[_0x6bf0('0x82')][_0x6bf0('0x85')]);_0xbc5e35=getWebApiUrl(_0x5d5de6);return _0x33aafd;}_0x5d5de6=sanitizeRemoteUri(_0x33aafd[_0x6bf0('0x86')]);_0xbc5e35=getWebApiUrl(_0x5d5de6);var _0x314cfd={'method':_0x6bf0('0x87'),'uri':_0x6bf0('0x88')+_0x33aafd[_0x6bf0('0x89')]+_0x6bf0('0x8a'),'form':{'client_id':_0x33aafd[_0x6bf0('0x8b')],'resource':_0x5d5de6,'username':_0x33aafd['username'],'password':_0x33aafd[_0x6bf0('0x7f')],'grant_type':_0x6bf0('0x7f'),'client_secret':_0x33aafd[_0x6bf0('0x80')]},'json':!![]};return rp(_0x314cfd);}})['then'](function(_0x43e0d4){_0x158c75=_0x43e0d4[_0x6bf0('0x84')];var _0x1e9493={'method':_0x6bf0('0x8c'),'uri':encodeURI(_0xbc5e35+_0x6bf0('0x8d')+_0x29a075+'\x27'),'headers':{'Authorization':_0x6bf0('0x8e')+_0x158c75,'If-None-Match':null,'OData-Version':_0x6bf0('0x8f')},'json':!![]};return rp(_0x1e9493);})[_0x6bf0('0x11')](function(_0x2688dd){var _0xdcb447=_0x2688dd['value'][0x0];var _0x3d994b=_0xdcb447[_0x6bf0('0x90')];var _0x17241a={'method':_0x6bf0('0x8c'),'uri':_0xbc5e35+_0x6bf0('0x91')+_0x3d994b+_0x6bf0('0x92'),'headers':{'Authorization':_0x6bf0('0x8e')+_0x158c75,'If-None-Match':null,'OData-Version':_0x6bf0('0x8f')},'json':!![]};return rp(_0x17241a);})[_0x6bf0('0x11')](function(_0x4d2671){_0x1dbb09=_0x4d2671;_0xebf7cb=_0x1dbb09['Attributes'];_0xebf7cb=_[_0x6bf0('0x93')](_0xebf7cb,function(_0x4b7b81){return!_0x20fb52[_0x6bf0('0x94')](_0x4b7b81['LogicalName']);});var _0x43e68f=[];var _0x5e58bc=[];_0xebf7cb['forEach'](function(_0x1d8fe0){if(_0x1d8fe0[_0x6bf0('0x95')]){var _0x5c4073=_0x1d8fe0[_0x6bf0('0x95')][_0x6bf0('0x41')](_0x1d8fe0[_0x6bf0('0x95')][_0x6bf0('0x96')]('.')+0x1);if(_0x5c4073===_0x6bf0('0x97')){_0x43e68f[_0x6bf0('0x98')](getSelectList(_0xbc5e35,_0x52b081,_0x5e58bc,_0x1dbb09[_0x6bf0('0x90')],_0x1d8fe0[_0x6bf0('0x90')],_0x158c75));}}});return Promise[_0x6bf0('0x99')](_0x43e68f);})[_0x6bf0('0x11')](function(_0x1d13de){_0x360a42=_0x1d13de[0x0];var _0x3ad593=[];var _0x2f5852=[];_0xebf7cb[_0x6bf0('0x9a')](function(_0x16bff2){if(!_['isNil'](_0x16bff2[_0x6bf0('0x95')])){var _0xe7cdaa=_0x16bff2[_0x6bf0('0x95')]['substring'](_0x16bff2['@odata.type']['lastIndexOf']('.')+0x1);if(_0xe7cdaa===_0x6bf0('0x9b')){_0x3ad593[_0x6bf0('0x98')](getBooleanList(_0xbc5e35,_0x52b081,_0x2f5852,_0x1dbb09['MetadataId'],_0x16bff2[_0x6bf0('0x90')],_0x158c75));}}});return Promise[_0x6bf0('0x99')](_0x3ad593);})['then'](function(_0x26e13f){_0x38e4f7=_0x26e13f[0x0];var _0x2d128b=[];var _0x260525=[];_0xebf7cb['forEach'](function(_0x46325c){if(_0x46325c[_0x6bf0('0x95')]){var _0x37ffd5=_0x46325c[_0x6bf0('0x95')][_0x6bf0('0x41')](_0x46325c['@odata.type'][_0x6bf0('0x96')]('.')+0x1);if(_0x37ffd5===_0x6bf0('0x9c')||_0x37ffd5==='DoubleAttributeMetadata'||_0x37ffd5===_0x6bf0('0x9d')||_0x37ffd5===_0x6bf0('0x9e')||_0x37ffd5===_0x6bf0('0x9f')||_0x37ffd5===_0x6bf0('0xa0')||_0x37ffd5===_0x6bf0('0xa1')||_0x37ffd5==='EntityNameAttributeMetadata'||_0x37ffd5===_0x6bf0('0xa2')||_0x37ffd5===_0x6bf0('0xa3')){_0x2d128b[_0x6bf0('0x98')](getInputList(_0xbc5e35,_0x52b081,_0x37ffd5,_0x260525,_0x1dbb09[_0x6bf0('0x90')],_0x46325c[_0x6bf0('0x90')],_0x158c75));}}});return Promise[_0x6bf0('0x99')](_0x2d128b);})[_0x6bf0('0x11')](function(_0x14afc9){_0x3232b6=_0x14afc9[0x0];var _0x1bf129=_0x360a42[_0x6bf0('0x7d')](_0x38e4f7)['concat'](_0x3232b6);var _0x18aef9={'count':_0x1bf129[_0x6bf0('0x22')],'rows':_0x1bf129};return _0x18aef9;})[_0x6bf0('0x11')](respondWithResult(_0x567472,null))[_0x6bf0('0x2f')](function(_0x6e2cb){var _0x7bd365=_0xb48243[_0x6bf0('0x1c')]['test']?0x1f4:_0x6e2cb[_0x6bf0('0xa4')]||0x1f4;logger[_0x6bf0('0x14')](_0x6e2cb[_0x6bf0('0xa5')]);delete _0x6e2cb[_0x6bf0('0x15')];if(_0x7bd365===0x191){_0x7bd365=0x190;}_0x567472[_0x6bf0('0x7')](_0x7bd365)[_0x6bf0('0x16')](_0xb48243[_0x6bf0('0x1c')]['test']?{'message':_0x6bf0('0xa6'),'statusCode':_0x6e2cb[_0x6bf0('0xa4')]}:_0x6e2cb);});};function getSelectList(_0x56190c,_0x2b06fe,_0x3137c0,_0x3a924e,_0x534926,_0x28784f){var _0x428641={'method':_0x6bf0('0x8c'),'uri':_0x56190c+'EntityDefinitions('+_0x3a924e+_0x6bf0('0xa7')+_0x534926+_0x6bf0('0xa8')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x6bf0('0x8e')+_0x28784f,'If-None-Match':null,'OData-Version':_0x6bf0('0x8f')},'json':!![]};return rp(_0x428641)[_0x6bf0('0x11')](function(_0x265837){var _0x55819d=[];var _0xfa16ee=_0x265837[_0x6bf0('0xa9')][_0x6bf0('0xaa')];_0xfa16ee[_0x6bf0('0x9a')](function(_0x3e95e4){_0x55819d[_0x6bf0('0x98')]({'name':_0x3e95e4[_0x6bf0('0xab')][_0x6bf0('0xac')][_0x6bf0('0xab')],'value':String(_0x3e95e4['Value'])});});var _0x260f87={'id':_0x2b06fe+'_'+_0x265837[_0x6bf0('0xad')],'name':_0x265837[_0x6bf0('0xae')]['UserLocalizedLabel'][_0x6bf0('0xab')],'custom':![],'options':_0x55819d};_0x3137c0[_0x6bf0('0x98')](_0x260f87);return _0x3137c0;});}function getBooleanList(_0x38946d,_0x117276,_0x4ceda7,_0x522c83,_0x498a22,_0xb7bac1){var _0x5e269d={'method':_0x6bf0('0x8c'),'uri':_0x38946d+_0x6bf0('0x91')+_0x522c83+_0x6bf0('0xa7')+_0x498a22+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x6bf0('0x8e')+_0xb7bac1,'If-None-Match':null,'OData-Version':_0x6bf0('0x8f')},'json':!![]};return rp(_0x5e269d)[_0x6bf0('0x11')](function(_0x59618d){var _0x2344b8=[];_0x2344b8[_0x6bf0('0x98')]({'name':_0x59618d[_0x6bf0('0xa9')][_0x6bf0('0xaf')][_0x6bf0('0xab')][_0x6bf0('0xac')][_0x6bf0('0xab')],'value':_0x6bf0('0xb0')},{'name':_0x59618d[_0x6bf0('0xa9')]['FalseOption']['Label']['UserLocalizedLabel']['Label'],'value':_0x6bf0('0xb1')});var _0x3eaf9a={'id':_0x117276+'_'+_0x59618d[_0x6bf0('0xad')],'name':_0x59618d[_0x6bf0('0xae')][_0x6bf0('0xac')]['Label'],'custom':![],'options':_0x2344b8};_0x4ceda7[_0x6bf0('0x98')](_0x3eaf9a);return _0x4ceda7;});}function getInputList(_0x102366,_0xc59fff,_0x595830,_0x4d4857,_0x1cfae1,_0x4d3cd1,_0x489b44){var _0x18c6de={'method':_0x6bf0('0x8c'),'uri':_0x102366+_0x6bf0('0x91')+_0x1cfae1+_0x6bf0('0xa7')+_0x4d3cd1+')/Microsoft.Dynamics.CRM.'+_0x595830+_0x6bf0('0xb2'),'headers':{'Authorization':_0x6bf0('0x8e')+_0x489b44,'If-None-Match':null,'OData-Version':_0x6bf0('0x8f')},'json':!![]};return rp(_0x18c6de)['then'](function(_0x2b2716){var _0x3dacd9={'id':_0xc59fff+'_'+_0x2b2716[_0x6bf0('0xad')],'name':_0x2b2716[_0x6bf0('0xae')][_0x6bf0('0xac')]?_0x2b2716['DisplayName'][_0x6bf0('0xac')]['Label']:_0x2b2716['LogicalName'],'custom':![],'options':[]};_0x4d4857[_0x6bf0('0x98')](_0x3dacd9);return _0x4d4857;});}
\ No newline at end of file
index 9940ee7..647c349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','Dynamics365Account','int_dynamics365_accounts','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x43a31c,_0x3e9f83){var _0x386a15=function(_0x50688c){while(--_0x50688c){_0x43a31c['push'](_0x43a31c['shift']());}};_0x386a15(++_0x3e9f83);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./intDynamics365Account.attributes');var integrations=require('../../components/integrations/configuration');module[_0x0d8b('0x7')]=function(_0x227c63,_0x39f43a){return _0x227c63['define'](_0x0d8b('0x8'),attributes,{'tableName':_0x0d8b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_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 257eafc..3368034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfb=['map','model','ShowDynamics365Account','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetDynamics365Account','findAll','options','raw','where','attributes','limit','include'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x0cfb,0xd6));var _0xb0cf=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x0cfb[_0x618414];return _0x21c19a;};'use strict';var _=require('lodash');var util=require(_0xb0cf('0x0'));var moment=require(_0xb0cf('0x1'));var BPromise=require('bluebird');var rs=require(_0xb0cf('0x2'));var fs=require('fs');var Redis=require(_0xb0cf('0x3'));var db=require(_0xb0cf('0x4'))['db'];var utils=require(_0xb0cf('0x5'));var logger=require(_0xb0cf('0x6'))(_0xb0cf('0x7'));var config=require(_0xb0cf('0x8'));var jayson=require(_0xb0cf('0x9'));var client=jayson[_0xb0cf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c63cd,_0x40ad2e,_0x38afb6){return new BPromise(function(_0x379b5d,_0x10c2fc){return client[_0xb0cf('0xb')](_0x4c63cd,_0x38afb6)[_0xb0cf('0xc')](function(_0x4f5a8d){logger[_0xb0cf('0xd')](_0xb0cf('0xe'),_0x40ad2e,_0xb0cf('0xf'));logger[_0xb0cf('0x10')](_0xb0cf('0x11'),_0x40ad2e,_0xb0cf('0xf'),JSON[_0xb0cf('0x12')](_0x4f5a8d));if(_0x4f5a8d['error']){if(_0x4f5a8d[_0xb0cf('0x13')]['code']===0x1f4){logger[_0xb0cf('0x13')](_0xb0cf('0xe'),_0x40ad2e,_0x4f5a8d[_0xb0cf('0x13')][_0xb0cf('0x14')]);return _0x10c2fc(_0x4f5a8d['error'][_0xb0cf('0x14')]);}logger[_0xb0cf('0x13')](_0xb0cf('0xe'),_0x40ad2e,_0x4f5a8d['error'][_0xb0cf('0x14')]);return _0x379b5d(_0x4f5a8d[_0xb0cf('0x13')][_0xb0cf('0x14')]);}else{logger['info'](_0xb0cf('0xe'),_0x40ad2e,_0xb0cf('0xf'));_0x379b5d(_0x4f5a8d[_0xb0cf('0x15')]['message']);}})[_0xb0cf('0x16')](function(_0x315b08){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x40ad2e,_0x315b08);_0x10c2fc(_0x315b08);});});}exports[_0xb0cf('0x17')]=function(_0x5959ac){var _0x1a1856=this;return new Promise(function(_0x3a0ea3,_0x890b09){return db['Dynamics365Account'][_0xb0cf('0x18')]({'raw':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac['options'][_0xb0cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1b')]||null:null,'attributes':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1c')]||null:null,'limit':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1d')]||null:null,'include':_0x5959ac[_0xb0cf('0x19')]?_0x5959ac[_0xb0cf('0x19')][_0xb0cf('0x1e')]?_['map'](_0x5959ac['options'][_0xb0cf('0x1e')],function(_0x163b69){return{'model':db[_0x163b69['model']],'as':_0x163b69['as'],'attributes':_0x163b69['attributes'],'include':_0x163b69['include']?_[_0xb0cf('0x1f')](_0x163b69['include'],function(_0x45eac0){return{'model':db[_0x45eac0['model']],'as':_0x45eac0['as'],'attributes':_0x45eac0[_0xb0cf('0x1c')],'include':_0x45eac0[_0xb0cf('0x1e')]?_['map'](_0x45eac0['include'],function(_0x19a437){return{'model':db[_0x19a437[_0xb0cf('0x20')]],'as':_0x19a437['as'],'attributes':_0x19a437[_0xb0cf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b911d){logger[_0xb0cf('0xd')](_0xb0cf('0x17'),_0x5959ac);logger['debug'](_0xb0cf('0x17'),_0x5959ac,JSON['stringify'](_0x3b911d));_0x3a0ea3(_0x3b911d);})[_0xb0cf('0x16')](function(_0x2c7fc1){logger[_0xb0cf('0x13')](_0xb0cf('0x17'),_0x2c7fc1[_0xb0cf('0x14')],_0x5959ac);_0x890b09(_0x1a1856[_0xb0cf('0x13')](0x1f4,_0x2c7fc1[_0xb0cf('0x14')]));});});};exports[_0xb0cf('0x21')]=function(_0x39572f){var _0x521f3a=this;return new Promise(function(_0xec0d9,_0xd75813){return db['Dynamics365Account'][_0xb0cf('0x22')]({'raw':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1b')]||null:null,'attributes':_0x39572f[_0xb0cf('0x19')]?_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1c')]||null:null,'include':_0x39572f[_0xb0cf('0x19')]?_0x39572f['options'][_0xb0cf('0x1e')]?_[_0xb0cf('0x1f')](_0x39572f[_0xb0cf('0x19')][_0xb0cf('0x1e')],function(_0x224d3a){return{'model':db[_0x224d3a[_0xb0cf('0x20')]],'as':_0x224d3a['as'],'attributes':_0x224d3a[_0xb0cf('0x1c')],'include':_0x224d3a['include']?_[_0xb0cf('0x1f')](_0x224d3a[_0xb0cf('0x1e')],function(_0x588a65){return{'model':db[_0x588a65['model']],'as':_0x588a65['as'],'attributes':_0x588a65[_0xb0cf('0x1c')],'include':_0x588a65[_0xb0cf('0x1e')]?_[_0xb0cf('0x1f')](_0x588a65[_0xb0cf('0x1e')],function(_0x6e3cf7){return{'model':db[_0x6e3cf7[_0xb0cf('0x20')]],'as':_0x6e3cf7['as'],'attributes':_0x6e3cf7[_0xb0cf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb0cf('0xc')](function(_0x32125c){logger['info'](_0xb0cf('0x21'),_0x39572f);logger[_0xb0cf('0x10')](_0xb0cf('0x21'),_0x39572f,JSON[_0xb0cf('0x12')](_0x32125c));_0xec0d9(_0x32125c);})[_0xb0cf('0x16')](function(_0xf2ab76){logger[_0xb0cf('0x13')](_0xb0cf('0x21'),_0xf2ab76[_0xb0cf('0x14')],_0x39572f);_0xd75813(_0x521f3a[_0xb0cf('0x13')](0x1f4,_0xf2ab76['message']));});});};
\ No newline at end of file
+var _0xbd22=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Dynamics365Account','options','raw','attributes','limit','map','include','model','GetDynamics365Account','debug','find','where','ShowDynamics365Account','util','moment','bluebird'];(function(_0x1bb321,_0x35464a){var _0x569646=function(_0x2b93af){while(--_0x2b93af){_0x1bb321['push'](_0x1bb321['shift']());}};_0x569646(++_0x35464a);}(_0xbd22,0x6f));var _0x2bd2=function(_0x1bb939,_0x5905e9){_0x1bb939=_0x1bb939-0x0;var _0xf8e8a6=_0xbd22[_0x1bb939];return _0xf8e8a6;};'use strict';var _=require('lodash');var util=require(_0x2bd2('0x0'));var moment=require(_0x2bd2('0x1'));var BPromise=require(_0x2bd2('0x2'));var rs=require(_0x2bd2('0x3'));var fs=require('fs');var Redis=require(_0x2bd2('0x4'));var db=require(_0x2bd2('0x5'))['db'];var utils=require(_0x2bd2('0x6'));var logger=require(_0x2bd2('0x7'))(_0x2bd2('0x8'));var config=require(_0x2bd2('0x9'));var jayson=require(_0x2bd2('0xa'));var client=jayson[_0x2bd2('0xb')][_0x2bd2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x50441a,_0x49abe3,_0x3451b3){return new BPromise(function(_0x95b7ae,_0x39de2f){return client[_0x2bd2('0xd')](_0x50441a,_0x3451b3)[_0x2bd2('0xe')](function(_0x6f35e8){logger[_0x2bd2('0xf')](_0x2bd2('0x10'),_0x49abe3,_0x2bd2('0x11'));logger['debug'](_0x2bd2('0x12'),_0x49abe3,_0x2bd2('0x11'),JSON[_0x2bd2('0x13')](_0x6f35e8));if(_0x6f35e8[_0x2bd2('0x14')]){if(_0x6f35e8[_0x2bd2('0x14')][_0x2bd2('0x15')]===0x1f4){logger[_0x2bd2('0x14')](_0x2bd2('0x10'),_0x49abe3,_0x6f35e8['error'][_0x2bd2('0x16')]);return _0x39de2f(_0x6f35e8[_0x2bd2('0x14')][_0x2bd2('0x16')]);}logger[_0x2bd2('0x14')]('Dynamics365Account,\x20%s,\x20%s',_0x49abe3,_0x6f35e8[_0x2bd2('0x14')]['message']);return _0x95b7ae(_0x6f35e8[_0x2bd2('0x14')][_0x2bd2('0x16')]);}else{logger[_0x2bd2('0xf')](_0x2bd2('0x10'),_0x49abe3,'request\x20sent');_0x95b7ae(_0x6f35e8[_0x2bd2('0x17')][_0x2bd2('0x16')]);}})[_0x2bd2('0x18')](function(_0x22b812){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x49abe3,_0x22b812);_0x39de2f(_0x22b812);});});}exports['GetDynamics365Account']=function(_0x2c8c5e){var _0x204337=this;return new Promise(function(_0x404e91,_0x5a2aa9){return db[_0x2bd2('0x19')]['findAll']({'raw':_0x2c8c5e[_0x2bd2('0x1a')]?_0x2c8c5e['options'][_0x2bd2('0x1b')]===undefined?!![]:![]:!![],'where':_0x2c8c5e['options']?_0x2c8c5e[_0x2bd2('0x1a')]['where']||null:null,'attributes':_0x2c8c5e[_0x2bd2('0x1a')]?_0x2c8c5e['options'][_0x2bd2('0x1c')]||null:null,'limit':_0x2c8c5e[_0x2bd2('0x1a')]?_0x2c8c5e[_0x2bd2('0x1a')][_0x2bd2('0x1d')]||null:null,'include':_0x2c8c5e[_0x2bd2('0x1a')]?_0x2c8c5e[_0x2bd2('0x1a')]['include']?_[_0x2bd2('0x1e')](_0x2c8c5e['options'][_0x2bd2('0x1f')],function(_0x5298df){return{'model':db[_0x5298df[_0x2bd2('0x20')]],'as':_0x5298df['as'],'attributes':_0x5298df['attributes'],'include':_0x5298df[_0x2bd2('0x1f')]?_['map'](_0x5298df[_0x2bd2('0x1f')],function(_0x2ead51){return{'model':db[_0x2ead51[_0x2bd2('0x20')]],'as':_0x2ead51['as'],'attributes':_0x2ead51[_0x2bd2('0x1c')],'include':_0x2ead51['include']?_['map'](_0x2ead51[_0x2bd2('0x1f')],function(_0x4fae72){return{'model':db[_0x4fae72[_0x2bd2('0x20')]],'as':_0x4fae72['as'],'attributes':_0x4fae72[_0x2bd2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2bd2('0xe')](function(_0xb20e7){logger[_0x2bd2('0xf')](_0x2bd2('0x21'),_0x2c8c5e);logger[_0x2bd2('0x22')]('GetDynamics365Account',_0x2c8c5e,JSON[_0x2bd2('0x13')](_0xb20e7));_0x404e91(_0xb20e7);})[_0x2bd2('0x18')](function(_0x413246){logger[_0x2bd2('0x14')]('GetDynamics365Account',_0x413246[_0x2bd2('0x16')],_0x2c8c5e);_0x5a2aa9(_0x204337[_0x2bd2('0x14')](0x1f4,_0x413246['message']));});});};exports['ShowDynamics365Account']=function(_0x417355){var _0x384fc3=this;return new Promise(function(_0x3ff580,_0x16904c){return db[_0x2bd2('0x19')][_0x2bd2('0x23')]({'raw':_0x417355[_0x2bd2('0x1a')]?_0x417355[_0x2bd2('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x417355[_0x2bd2('0x1a')]?_0x417355[_0x2bd2('0x1a')][_0x2bd2('0x24')]||null:null,'attributes':_0x417355['options']?_0x417355[_0x2bd2('0x1a')][_0x2bd2('0x1c')]||null:null,'include':_0x417355[_0x2bd2('0x1a')]?_0x417355[_0x2bd2('0x1a')]['include']?_['map'](_0x417355[_0x2bd2('0x1a')][_0x2bd2('0x1f')],function(_0x7eebcc){return{'model':db[_0x7eebcc[_0x2bd2('0x20')]],'as':_0x7eebcc['as'],'attributes':_0x7eebcc[_0x2bd2('0x1c')],'include':_0x7eebcc[_0x2bd2('0x1f')]?_['map'](_0x7eebcc[_0x2bd2('0x1f')],function(_0x5c1bb1){return{'model':db[_0x5c1bb1[_0x2bd2('0x20')]],'as':_0x5c1bb1['as'],'attributes':_0x5c1bb1[_0x2bd2('0x1c')],'include':_0x5c1bb1[_0x2bd2('0x1f')]?_['map'](_0x5c1bb1['include'],function(_0x33c315){return{'model':db[_0x33c315[_0x2bd2('0x20')]],'as':_0x33c315['as'],'attributes':_0x33c315[_0x2bd2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x2bd2('0xe')](function(_0x3f044c){logger[_0x2bd2('0xf')]('ShowDynamics365Account',_0x417355);logger[_0x2bd2('0x22')](_0x2bd2('0x25'),_0x417355,JSON[_0x2bd2('0x13')](_0x3f044c));_0x3ff580(_0x3f044c);})[_0x2bd2('0x18')](function(_0x5e3bb7){logger[_0x2bd2('0x14')](_0x2bd2('0x25'),_0x5e3bb7[_0x2bd2('0x16')],_0x417355);_0x16904c(_0x384fc3[_0x2bd2('0x14')](0x1f4,_0x5e3bb7[_0x2bd2('0x16')]));});});};
\ No newline at end of file
index 532aee2..132a831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f91=['../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','delete','destroy','exports','multer','path','Router','fs-extra','../../components/interaction/service'];(function(_0x3f7900,_0x583f17){var _0x2ca39f=function(_0x25240c){while(--_0x25240c){_0x3f7900['push'](_0x3f7900['shift']());}};_0x2ca39f(++_0x583f17);}(_0x7f91,0x93));var _0x17f9=function(_0x33f7e1,_0x48d209){_0x33f7e1=_0x33f7e1-0x0;var _0x23bab4=_0x7f91[_0x33f7e1];return _0x23bab4;};'use strict';var multer=require(_0x17f9('0x0'));var util=require('util');var path=require(_0x17f9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x17f9('0x2')]();var fs_extra=require(_0x17f9('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17f9('0x4'));var config=require(_0x17f9('0x5'));var controller=require(_0x17f9('0x6'));router[_0x17f9('0x7')]('/',auth[_0x17f9('0x8')](),controller['index']);router['get'](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller['show']);router['get'](_0x17f9('0xa'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xb')]);router['get'](_0x17f9('0xc'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xd')]);router[_0x17f9('0x7')](_0x17f9('0xe'),auth[_0x17f9('0x8')](),controller[_0x17f9('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller['update']);router[_0x17f9('0x10')](_0x17f9('0x9'),auth[_0x17f9('0x8')](),controller[_0x17f9('0x11')]);module[_0x17f9('0x12')]=router;
\ No newline at end of file
+var _0x1bfd=['/:id','/:id/fields','isAuthenticated','/:id/subjects','getSubjects','getDescriptions','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get'];(function(_0x536638,_0x5bc259){var _0xbfcc9=function(_0x251e6e){while(--_0x251e6e){_0x536638['push'](_0x536638['shift']());}};_0xbfcc9(++_0x5bc259);}(_0x1bfd,0xbc));var _0xd1bf=function(_0x18c08a,_0x46e340){_0x18c08a=_0x18c08a-0x0;var _0x388429=_0x1bfd[_0x18c08a];return _0x388429;};'use strict';var multer=require(_0xd1bf('0x0'));var util=require(_0xd1bf('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd1bf('0x2'));var router=express[_0xd1bf('0x3')]();var fs_extra=require(_0xd1bf('0x4'));var auth=require(_0xd1bf('0x5'));var interaction=require(_0xd1bf('0x6'));var config=require(_0xd1bf('0x7'));var controller=require(_0xd1bf('0x8'));router[_0xd1bf('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd1bf('0x9')](_0xd1bf('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xd1bf('0x9')](_0xd1bf('0xb'),auth[_0xd1bf('0xc')](),controller['getFields']);router[_0xd1bf('0x9')](_0xd1bf('0xd'),auth[_0xd1bf('0xc')](),controller[_0xd1bf('0xe')]);router[_0xd1bf('0x9')]('/:id/descriptions',auth[_0xd1bf('0xc')](),controller[_0xd1bf('0xf')]);router['post']('/',auth[_0xd1bf('0xc')](),controller[_0xd1bf('0x10')]);router[_0xd1bf('0x11')]('/:id',auth[_0xd1bf('0xc')](),controller[_0xd1bf('0x12')]);router[_0xd1bf('0x13')](_0xd1bf('0xa'),auth[_0xd1bf('0xc')](),controller[_0xd1bf('0x14')]);module[_0xd1bf('0x15')]=router;
\ No newline at end of file
index 2cc9692..c2d99d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d7e=['BOOLEAN','sequelize','exports','STRING','ENUM','incident','phonecall','nothing','contact'];(function(_0x34a8c8,_0x31e259){var _0x1fe6e5=function(_0x30f28d){while(--_0x30f28d){_0x34a8c8['push'](_0x34a8c8['shift']());}};_0x1fe6e5(++_0x31e259);}(_0x3d7e,0x1b1));var _0xe3d7=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x3d7e[_0x34bf97];return _0x292719;};'use strict';var Sequelize=require(_0xe3d7('0x0'));module[_0xe3d7('0x1')]={'name':{'type':Sequelize[_0xe3d7('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xe3d7('0x3')](_0xe3d7('0x4'),_0xe3d7('0x5')),'defaultValue':_0xe3d7('0x4')},'moduleCreate':{'type':Sequelize[_0xe3d7('0x3')]('contact',_0xe3d7('0x6')),'defaultValue':_0xe3d7('0x7'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xe3d7('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xe3d7('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3ae3=['STRING','ENUM','phonecall','incident','contact','nothing','BOOLEAN','sequelize','exports'];(function(_0x61942,_0x1a8623){var _0x164474=function(_0x101035){while(--_0x101035){_0x61942['push'](_0x61942['shift']());}};_0x164474(++_0x1a8623);}(_0x3ae3,0xb2));var _0x33ae=function(_0x575790,_0x188826){_0x575790=_0x575790-0x0;var _0x45729f=_0x3ae3[_0x575790];return _0x45729f;};'use strict';var Sequelize=require(_0x33ae('0x0'));module[_0x33ae('0x1')]={'name':{'type':Sequelize[_0x33ae('0x2')]},'description':{'type':Sequelize[_0x33ae('0x2')]},'ticketType':{'type':Sequelize[_0x33ae('0x3')]('incident',_0x33ae('0x4')),'defaultValue':_0x33ae('0x5')},'moduleCreate':{'type':Sequelize['ENUM'](_0x33ae('0x6'),_0x33ae('0x7')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x33ae('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x33ae('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 2cf47f5..2043dbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036e=['crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','count','limit','Content-Range','json','apply','reject','then','destroy','error','stack','name','map','Dynamics365Configuration','fieldName','type','key','keys','query','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','create','body','update','find','getFields','findOne','filter','getSubjects','order','getDescriptions','Dynamics365Field','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel'];(function(_0x3aa518,_0x4d299c){var _0x432918=function(_0x263bf9){while(--_0x263bf9){_0x3aa518['push'](_0x3aa518['shift']());}};_0x432918(++_0x4d299c);}(_0x036e,0x1c3));var _0xe036=function(_0x680fd6,_0x444b6b){_0x680fd6=_0x680fd6-0x0;var _0xab75e2=_0x036e[_0x680fd6];return _0xab75e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe036('0x0'));var zipdir=require(_0xe036('0x1'));var jsonpatch=require(_0xe036('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe036('0x3'));var Mustache=require(_0xe036('0x4'));var util=require(_0xe036('0x5'));var path=require('path');var sox=require(_0xe036('0x6'));var csv=require(_0xe036('0x7'));var ejs=require(_0xe036('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe036('0x9'));var squel=require(_0xe036('0xa'));var crypto=require(_0xe036('0xb'));var jsforce=require(_0xe036('0xc'));var deskjs=require(_0xe036('0xd'));var toCsv=require(_0xe036('0x7'));var querystring=require('querystring');var Papa=require(_0xe036('0xe'));var Redis=require(_0xe036('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe036('0x10'));var hardwareService=require(_0xe036('0x11'));var logger=require(_0xe036('0x12'))('api');var utils=require(_0xe036('0x13'));var config=require(_0xe036('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xe036('0x15'))['db'];function respondWithStatusCode(_0x53cabf,_0x6d8f0){_0x6d8f0=_0x6d8f0||0xcc;return function(_0x265997){if(_0x265997){return _0x53cabf[_0xe036('0x16')](_0x6d8f0);}return _0x53cabf[_0xe036('0x17')](_0x6d8f0)[_0xe036('0x18')]();};}function respondWithResult(_0x733a4c,_0xe64988){_0xe64988=_0xe64988||0xc8;return function(_0x412f50){if(_0x412f50){return _0x733a4c[_0xe036('0x17')](_0xe64988)['json'](_0x412f50);}};}function respondWithFilteredResult(_0x34d979,_0x3bd0bf){return function(_0x19b798){if(_0x19b798){var _0x3863f8=typeof _0x3bd0bf[_0xe036('0x19')]==='undefined'&&typeof _0x3bd0bf['limit']==='undefined';var _0x537cc7=_0x19b798[_0xe036('0x1a')];var _0x45f644=_0x3863f8?0x0:_0x3bd0bf[_0xe036('0x19')];var _0x2ce9fd=_0x3863f8?_0x19b798['count']:_0x3bd0bf[_0xe036('0x19')]+_0x3bd0bf[_0xe036('0x1b')];var _0x1285c3;if(_0x2ce9fd>=_0x537cc7){_0x2ce9fd=_0x537cc7;_0x1285c3=0xc8;}else{_0x1285c3=0xce;}_0x34d979[_0xe036('0x17')](_0x1285c3);return _0x34d979['set'](_0xe036('0x1c'),_0x45f644+'-'+_0x2ce9fd+'/'+_0x537cc7)[_0xe036('0x1d')](_0x19b798);}return null;};}function patchUpdates(_0x26d9c7){return function(_0x224bfe){try{jsonpatch[_0xe036('0x1e')](_0x224bfe,_0x26d9c7,!![]);}catch(_0x2181e8){return BPromise[_0xe036('0x1f')](_0x2181e8);}return _0x224bfe['save']();};}function saveUpdates(_0x46a3af,_0x28436d){return function(_0x3c4cc3){if(_0x3c4cc3){return _0x3c4cc3['update'](_0x46a3af)[_0xe036('0x20')](function(_0xb33765){return _0xb33765;});}return null;};}function removeEntity(_0x2598cd,_0x297b94){return function(_0x902e60){if(_0x902e60){return _0x902e60[_0xe036('0x21')]()['then'](function(){_0x2598cd[_0xe036('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x113f1f,_0x38783c){return function(_0x5d9cfc){if(!_0x5d9cfc){_0x113f1f[_0xe036('0x16')](0x194);}return _0x5d9cfc;};}function handleError(_0x473f25,_0x150b22){_0x150b22=_0x150b22||0x1f4;return function(_0x15b042){logger[_0xe036('0x22')](_0x15b042[_0xe036('0x23')]);if(_0x15b042['name']){delete _0x15b042[_0xe036('0x24')];}_0x473f25[_0xe036('0x17')](_0x150b22)['send'](_0x15b042);};}exports['index']=function(_0x981db8,_0x15b1ee){var _0x531498={},_0x3c6abb={},_0x5ae08b={'count':0x0,'rows':[]};var _0x436b89=_[_0xe036('0x25')](db[_0xe036('0x26')]['rawAttributes'],function(_0x270997){return{'name':_0x270997[_0xe036('0x27')],'type':_0x270997[_0xe036('0x28')][_0xe036('0x29')]};});_0x3c6abb['model']=_[_0xe036('0x25')](_0x436b89,_0xe036('0x24'));_0x3c6abb['query']=_[_0xe036('0x2a')](_0x981db8[_0xe036('0x2b')]);_0x3c6abb['filters']=_['intersection'](_0x3c6abb[_0xe036('0x2c')],_0x3c6abb[_0xe036('0x2b')]);_0x531498[_0xe036('0x2d')]=_['intersection'](_0x3c6abb[_0xe036('0x2c')],qs['fields'](_0x981db8[_0xe036('0x2b')][_0xe036('0x2e')]));_0x531498['attributes']=_0x531498[_0xe036('0x2d')][_0xe036('0x2f')]?_0x531498[_0xe036('0x2d')]:_0x3c6abb[_0xe036('0x2c')];if(!_0x981db8[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x531498[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x981db8[_0xe036('0x2b')][_0xe036('0x1b')]);_0x531498[_0xe036('0x19')]=qs['offset'](_0x981db8[_0xe036('0x2b')][_0xe036('0x19')]);}_0x531498['order']=qs[_0xe036('0x32')](_0x981db8['query'][_0xe036('0x32')]);_0x531498[_0xe036('0x33')]=qs[_0xe036('0x34')](_[_0xe036('0x35')](_0x981db8[_0xe036('0x2b')],_0x3c6abb[_0xe036('0x34')]),_0x436b89);if(_0x981db8['query']['filter']){_0x531498[_0xe036('0x33')]=_[_0xe036('0x36')](_0x531498['where'],{'$or':_[_0xe036('0x25')](_0x436b89,function(_0x184eb9){if(_0x184eb9['type']!==_0xe036('0x37')){var _0x2d6c24={};_0x2d6c24[_0x184eb9['name']]={'$like':'%'+_0x981db8[_0xe036('0x2b')]['filter']+'%'};return _0x2d6c24;}})});}_0x531498=_['merge']({},_0x531498,_0x981db8[_0xe036('0x38')]);var _0x2e76a4={'where':_0x531498[_0xe036('0x33')]};return db[_0xe036('0x26')][_0xe036('0x1a')](_0x2e76a4)[_0xe036('0x20')](function(_0x528fcb){_0x5ae08b['count']=_0x528fcb;if(_0x981db8[_0xe036('0x2b')][_0xe036('0x39')]){_0x531498['include']=[{'all':!![]}];}return db[_0xe036('0x26')][_0xe036('0x3a')](_0x531498);})[_0xe036('0x20')](function(_0x25758f){_0x5ae08b[_0xe036('0x3b')]=_0x25758f;return _0x5ae08b;})[_0xe036('0x20')](respondWithFilteredResult(_0x15b1ee,_0x531498))[_0xe036('0x3c')](handleError(_0x15b1ee,null));};exports[_0xe036('0x3d')]=function(_0x45eb6d,_0x177c2b){var _0x3e74d2={'raw':![],'where':{'id':_0x45eb6d[_0xe036('0x3e')]['id']}},_0x4a59c9={};_0x4a59c9['model']=_[_0xe036('0x2a')](db['Dynamics365Configuration'][_0xe036('0x3f')]);_0x4a59c9[_0xe036('0x2b')]=_[_0xe036('0x2a')](_0x45eb6d[_0xe036('0x2b')]);_0x4a59c9[_0xe036('0x34')]=_[_0xe036('0x40')](_0x4a59c9['model'],_0x4a59c9[_0xe036('0x2b')]);_0x3e74d2[_0xe036('0x2d')]=_[_0xe036('0x40')](_0x4a59c9[_0xe036('0x2c')],qs[_0xe036('0x2e')](_0x45eb6d['query']['fields']));_0x3e74d2[_0xe036('0x2d')]=_0x3e74d2[_0xe036('0x2d')][_0xe036('0x2f')]?_0x3e74d2[_0xe036('0x2d')]:_0x4a59c9[_0xe036('0x2c')];if(_0x45eb6d[_0xe036('0x2b')][_0xe036('0x39')]){_0x3e74d2[_0xe036('0x41')]=[{'all':!![]}];}_0x3e74d2=_['merge']({},_0x3e74d2,_0x45eb6d[_0xe036('0x38')]);return db['Dynamics365Configuration']['find'](_0x3e74d2)[_0xe036('0x20')](handleEntityNotFound(_0x177c2b,null))[_0xe036('0x20')](respondWithResult(_0x177c2b,null))[_0xe036('0x3c')](handleError(_0x177c2b,null));};exports['create']=function(_0x3d5aec,_0x1b66b6){return db['Dynamics365Configuration'][_0xe036('0x42')](_0x3d5aec[_0xe036('0x43')],{})[_0xe036('0x20')](respondWithResult(_0x1b66b6,0xc9))['catch'](handleError(_0x1b66b6,null));};exports[_0xe036('0x44')]=function(_0x1624fe,_0x457190){if(_0x1624fe[_0xe036('0x43')]['id']){delete _0x1624fe[_0xe036('0x43')]['id'];}return db['Dynamics365Configuration'][_0xe036('0x45')]({'where':{'id':_0x1624fe[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x457190,null))[_0xe036('0x20')](saveUpdates(_0x1624fe['body'],null))[_0xe036('0x20')](respondWithResult(_0x457190,null))[_0xe036('0x3c')](handleError(_0x457190,null));};exports[_0xe036('0x21')]=function(_0x1200f6,_0x1ae91f){return db[_0xe036('0x26')][_0xe036('0x45')]({'where':{'id':_0x1200f6[_0xe036('0x3e')]['id']}})[_0xe036('0x20')](handleEntityNotFound(_0x1ae91f,null))[_0xe036('0x20')](removeEntity(_0x1ae91f,null))[_0xe036('0x3c')](handleError(_0x1ae91f,null));};exports[_0xe036('0x46')]=function(_0x1c3b61,_0x3161e5,_0x501b13){var _0x19db4c={};var _0x1b5442={};var _0xf6a512;var _0x502731;return db['Dynamics365Configuration'][_0xe036('0x47')]({'where':{'id':_0x1c3b61[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x3161e5,null))[_0xe036('0x20')](function(_0x1277fb){if(_0x1277fb){_0xf6a512=_0x1277fb;_0x1b5442['model']=_[_0xe036('0x2a')](db['Dynamics365Field']['rawAttributes']);_0x1b5442[_0xe036('0x2b')]=_[_0xe036('0x2a')](_0x1c3b61[_0xe036('0x2b')]);_0x1b5442[_0xe036('0x34')]=_[_0xe036('0x40')](_0x1b5442[_0xe036('0x2c')],_0x1b5442[_0xe036('0x2b')]);_0x19db4c['attributes']=_[_0xe036('0x40')](_0x1b5442[_0xe036('0x2c')],qs[_0xe036('0x2e')](_0x1c3b61['query'][_0xe036('0x2e')]));_0x19db4c[_0xe036('0x2d')]=_0x19db4c['attributes'][_0xe036('0x2f')]?_0x19db4c['attributes']:_0x1b5442[_0xe036('0x2c')];_0x19db4c['order']=qs[_0xe036('0x32')](_0x1c3b61[_0xe036('0x2b')][_0xe036('0x32')]);_0x19db4c[_0xe036('0x33')]=qs[_0xe036('0x34')](_['pick'](_0x1c3b61[_0xe036('0x2b')],_0x1b5442[_0xe036('0x34')]));if(_0x1c3b61[_0xe036('0x2b')][_0xe036('0x48')]){_0x19db4c['where']=_[_0xe036('0x36')](_0x19db4c['where'],{'$or':_['map'](_0x19db4c[_0xe036('0x2d')],function(_0x278ca1){var _0x5d8394={};_0x5d8394[_0x278ca1]={'$like':'%'+_0x1c3b61['query'][_0xe036('0x48')]+'%'};return _0x5d8394;})});}_0x19db4c=_[_0xe036('0x36')]({},_0x19db4c,_0x1c3b61[_0xe036('0x38')]);return _0xf6a512[_0xe036('0x46')](_0x19db4c);}})[_0xe036('0x20')](function(_0x4c6e99){if(_0x4c6e99){_0x502731=_0x4c6e99[_0xe036('0x2f')];if(!_0x1c3b61[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x19db4c[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x1c3b61[_0xe036('0x2b')]['limit']);_0x19db4c[_0xe036('0x19')]=qs['offset'](_0x1c3b61[_0xe036('0x2b')][_0xe036('0x19')]);}return _0xf6a512[_0xe036('0x46')](_0x19db4c);}})['then'](function(_0x5744a7){if(_0x5744a7){return _0x5744a7?{'count':_0x502731,'rows':_0x5744a7}:null;}})['then'](respondWithResult(_0x3161e5,null))[_0xe036('0x3c')](handleError(_0x3161e5,null));};exports[_0xe036('0x49')]=function(_0x5c3ec5,_0x16aa22,_0x7d211c){var _0x4fffd3={};var _0x510183={};var _0xcb5e33;var _0x6a8fd2;return db[_0xe036('0x26')][_0xe036('0x47')]({'where':{'id':_0x5c3ec5[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x16aa22,null))[_0xe036('0x20')](function(_0x37ccd9){if(_0x37ccd9){_0xcb5e33=_0x37ccd9;_0x510183[_0xe036('0x2c')]=_[_0xe036('0x2a')](db['Dynamics365Field']['rawAttributes']);_0x510183['query']=_[_0xe036('0x2a')](_0x5c3ec5[_0xe036('0x2b')]);_0x510183[_0xe036('0x34')]=_['intersection'](_0x510183[_0xe036('0x2c')],_0x510183[_0xe036('0x2b')]);_0x4fffd3[_0xe036('0x2d')]=_[_0xe036('0x40')](_0x510183[_0xe036('0x2c')],qs['fields'](_0x5c3ec5['query'][_0xe036('0x2e')]));_0x4fffd3[_0xe036('0x2d')]=_0x4fffd3['attributes'][_0xe036('0x2f')]?_0x4fffd3[_0xe036('0x2d')]:_0x510183['model'];_0x4fffd3[_0xe036('0x4a')]=qs[_0xe036('0x32')](_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x32')]);_0x4fffd3[_0xe036('0x33')]=qs[_0xe036('0x34')](_['pick'](_0x5c3ec5[_0xe036('0x2b')],_0x510183[_0xe036('0x34')]));if(_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x48')]){_0x4fffd3[_0xe036('0x33')]=_[_0xe036('0x36')](_0x4fffd3[_0xe036('0x33')],{'$or':_[_0xe036('0x25')](_0x4fffd3[_0xe036('0x2d')],function(_0x3099b0){var _0x291ede={};_0x291ede[_0x3099b0]={'$like':'%'+_0x5c3ec5[_0xe036('0x2b')]['filter']+'%'};return _0x291ede;})});}_0x4fffd3=_['merge']({},_0x4fffd3,_0x5c3ec5[_0xe036('0x38')]);return _0xcb5e33[_0xe036('0x49')](_0x4fffd3);}})[_0xe036('0x20')](function(_0x3989bc){if(_0x3989bc){_0x6a8fd2=_0x3989bc[_0xe036('0x2f')];if(!_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x30')]('nolimit')){_0x4fffd3[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x5c3ec5[_0xe036('0x2b')][_0xe036('0x1b')]);_0x4fffd3[_0xe036('0x19')]=qs['offset'](_0x5c3ec5['query'][_0xe036('0x19')]);}return _0xcb5e33[_0xe036('0x49')](_0x4fffd3);}})[_0xe036('0x20')](function(_0x3e3780){if(_0x3e3780){return _0x3e3780?{'count':_0x6a8fd2,'rows':_0x3e3780}:null;}})[_0xe036('0x20')](respondWithResult(_0x16aa22,null))['catch'](handleError(_0x16aa22,null));};exports[_0xe036('0x4b')]=function(_0x273f59,_0x29fa3c,_0xa5bda1){var _0x555bc6={};var _0x3a981a={};var _0x17611d;var _0x23583b;return db[_0xe036('0x26')][_0xe036('0x47')]({'where':{'id':_0x273f59[_0xe036('0x3e')]['id']}})['then'](handleEntityNotFound(_0x29fa3c,null))[_0xe036('0x20')](function(_0x16528e){if(_0x16528e){_0x17611d=_0x16528e;_0x3a981a['model']=_[_0xe036('0x2a')](db[_0xe036('0x4c')][_0xe036('0x3f')]);_0x3a981a[_0xe036('0x2b')]=_['keys'](_0x273f59[_0xe036('0x2b')]);_0x3a981a[_0xe036('0x34')]=_['intersection'](_0x3a981a['model'],_0x3a981a[_0xe036('0x2b')]);_0x555bc6[_0xe036('0x2d')]=_['intersection'](_0x3a981a['model'],qs[_0xe036('0x2e')](_0x273f59[_0xe036('0x2b')][_0xe036('0x2e')]));_0x555bc6[_0xe036('0x2d')]=_0x555bc6[_0xe036('0x2d')][_0xe036('0x2f')]?_0x555bc6['attributes']:_0x3a981a[_0xe036('0x2c')];_0x555bc6['order']=qs[_0xe036('0x32')](_0x273f59[_0xe036('0x2b')][_0xe036('0x32')]);_0x555bc6[_0xe036('0x33')]=qs['filters'](_['pick'](_0x273f59[_0xe036('0x2b')],_0x3a981a[_0xe036('0x34')]));if(_0x273f59[_0xe036('0x2b')][_0xe036('0x48')]){_0x555bc6[_0xe036('0x33')]=_[_0xe036('0x36')](_0x555bc6['where'],{'$or':_[_0xe036('0x25')](_0x555bc6[_0xe036('0x2d')],function(_0x5156f6){var _0x14e1cd={};_0x14e1cd[_0x5156f6]={'$like':'%'+_0x273f59[_0xe036('0x2b')][_0xe036('0x48')]+'%'};return _0x14e1cd;})});}_0x555bc6=_['merge']({},_0x555bc6,_0x273f59[_0xe036('0x38')]);return _0x17611d['getDescriptions'](_0x555bc6);}})[_0xe036('0x20')](function(_0x17061c){if(_0x17061c){_0x23583b=_0x17061c['length'];if(!_0x273f59[_0xe036('0x2b')][_0xe036('0x30')](_0xe036('0x31'))){_0x555bc6[_0xe036('0x1b')]=qs[_0xe036('0x1b')](_0x273f59[_0xe036('0x2b')][_0xe036('0x1b')]);_0x555bc6[_0xe036('0x19')]=qs[_0xe036('0x19')](_0x273f59[_0xe036('0x2b')][_0xe036('0x19')]);}return _0x17611d[_0xe036('0x4b')](_0x555bc6);}})[_0xe036('0x20')](function(_0x440cff){if(_0x440cff){return _0x440cff?{'count':_0x23583b,'rows':_0x440cff}:null;}})[_0xe036('0x20')](respondWithResult(_0x29fa3c,null))[_0xe036('0x3c')](handleError(_0x29fa3c,null));};
\ No newline at end of file
+var _0x74c9=['eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','reject','save','update','then','stack','name','send','index','map','Dynamics365Configuration','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','destroy','getFields','findOne','Dynamics365Field','pick','hasOwnProperty','getSubjects','getDescriptions','rawAttributes'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x74c9,0xea));var _0x974c=function(_0x5c7694,_0x3d0d9c){_0x5c7694=_0x5c7694-0x0;var _0x77fa3b=_0x74c9[_0x5c7694];return _0x77fa3b;};'use strict';var emlformat=require(_0x974c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x974c('0x1'));var jsonpatch=require(_0x974c('0x2'));var rp=require(_0x974c('0x3'));var moment=require(_0x974c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x974c('0x5'));var path=require(_0x974c('0x6'));var sox=require(_0x974c('0x7'));var csv=require('to-csv');var ejs=require(_0x974c('0x8'));var fs=require('fs');var fs_extra=require(_0x974c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x974c('0xa'));var toCsv=require(_0x974c('0xb'));var querystring=require('querystring');var Papa=require(_0x974c('0xc'));var Redis=require(_0x974c('0xd'));var authService=require(_0x974c('0xe'));var qs=require(_0x974c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x974c('0x10'));var logger=require('../../config/logger')(_0x974c('0x11'));var utils=require(_0x974c('0x12'));var config=require(_0x974c('0x13'));var licenseUtil=require(_0x974c('0x14'));var db=require(_0x974c('0x15'))['db'];function respondWithStatusCode(_0x5240fe,_0x422cd8){_0x422cd8=_0x422cd8||0xcc;return function(_0x52daea){if(_0x52daea){return _0x5240fe[_0x974c('0x16')](_0x422cd8);}return _0x5240fe[_0x974c('0x17')](_0x422cd8)[_0x974c('0x18')]();};}function respondWithResult(_0x5b257a,_0x288df2){_0x288df2=_0x288df2||0xc8;return function(_0x5d60f0){if(_0x5d60f0){return _0x5b257a[_0x974c('0x17')](_0x288df2)['json'](_0x5d60f0);}};}function respondWithFilteredResult(_0x5ca02b,_0x461d24){return function(_0x116a68){if(_0x116a68){var _0x244c49=typeof _0x461d24[_0x974c('0x19')]===_0x974c('0x1a')&&typeof _0x461d24[_0x974c('0x1b')]==='undefined';var _0x52fb86=_0x116a68[_0x974c('0x1c')];var _0x590253=_0x244c49?0x0:_0x461d24[_0x974c('0x19')];var _0x1e0d6b=_0x244c49?_0x116a68[_0x974c('0x1c')]:_0x461d24[_0x974c('0x19')]+_0x461d24[_0x974c('0x1b')];var _0x2d55af;if(_0x1e0d6b>=_0x52fb86){_0x1e0d6b=_0x52fb86;_0x2d55af=0xc8;}else{_0x2d55af=0xce;}_0x5ca02b['status'](_0x2d55af);return _0x5ca02b['set'](_0x974c('0x1d'),_0x590253+'-'+_0x1e0d6b+'/'+_0x52fb86)['json'](_0x116a68);}return null;};}function patchUpdates(_0x4aba00){return function(_0x37a258){try{jsonpatch['apply'](_0x37a258,_0x4aba00,!![]);}catch(_0x21d641){return BPromise[_0x974c('0x1e')](_0x21d641);}return _0x37a258[_0x974c('0x1f')]();};}function saveUpdates(_0x42fe7d,_0x41bec7){return function(_0x26fda1){if(_0x26fda1){return _0x26fda1[_0x974c('0x20')](_0x42fe7d)[_0x974c('0x21')](function(_0x4dcd55){return _0x4dcd55;});}return null;};}function removeEntity(_0x4fb97c,_0x27c492){return function(_0xc182b9){if(_0xc182b9){return _0xc182b9['destroy']()['then'](function(){_0x4fb97c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d9a3c,_0x4eefba){return function(_0x3da070){if(!_0x3da070){_0x1d9a3c['sendStatus'](0x194);}return _0x3da070;};}function handleError(_0x2bf82f,_0x3ad9ff){_0x3ad9ff=_0x3ad9ff||0x1f4;return function(_0x3389a3){logger['error'](_0x3389a3[_0x974c('0x22')]);if(_0x3389a3['name']){delete _0x3389a3[_0x974c('0x23')];}_0x2bf82f[_0x974c('0x17')](_0x3ad9ff)[_0x974c('0x24')](_0x3389a3);};}exports[_0x974c('0x25')]=function(_0xac947b,_0x58587f){var _0x5a266f={},_0x28001e={},_0x372009={'count':0x0,'rows':[]};var _0x58c6cc=_[_0x974c('0x26')](db[_0x974c('0x27')]['rawAttributes'],function(_0x2b3908){return{'name':_0x2b3908[_0x974c('0x28')],'type':_0x2b3908['type'][_0x974c('0x29')]};});_0x28001e[_0x974c('0x2a')]=_[_0x974c('0x26')](_0x58c6cc,_0x974c('0x23'));_0x28001e[_0x974c('0x2b')]=_[_0x974c('0x2c')](_0xac947b[_0x974c('0x2b')]);_0x28001e[_0x974c('0x2d')]=_['intersection'](_0x28001e[_0x974c('0x2a')],_0x28001e['query']);_0x5a266f[_0x974c('0x2e')]=_[_0x974c('0x2f')](_0x28001e[_0x974c('0x2a')],qs[_0x974c('0x30')](_0xac947b['query'][_0x974c('0x30')]));_0x5a266f[_0x974c('0x2e')]=_0x5a266f[_0x974c('0x2e')][_0x974c('0x31')]?_0x5a266f[_0x974c('0x2e')]:_0x28001e[_0x974c('0x2a')];if(!_0xac947b[_0x974c('0x2b')]['hasOwnProperty'](_0x974c('0x32'))){_0x5a266f[_0x974c('0x1b')]=qs['limit'](_0xac947b[_0x974c('0x2b')][_0x974c('0x1b')]);_0x5a266f[_0x974c('0x19')]=qs[_0x974c('0x19')](_0xac947b[_0x974c('0x2b')][_0x974c('0x19')]);}_0x5a266f[_0x974c('0x33')]=qs[_0x974c('0x34')](_0xac947b[_0x974c('0x2b')]['sort']);_0x5a266f[_0x974c('0x35')]=qs[_0x974c('0x2d')](_['pick'](_0xac947b['query'],_0x28001e['filters']),_0x58c6cc);if(_0xac947b[_0x974c('0x2b')][_0x974c('0x36')]){_0x5a266f[_0x974c('0x35')]=_[_0x974c('0x37')](_0x5a266f[_0x974c('0x35')],{'$or':_['map'](_0x58c6cc,function(_0x3cb10f){if(_0x3cb10f[_0x974c('0x38')]!==_0x974c('0x39')){var _0x487045={};_0x487045[_0x3cb10f[_0x974c('0x23')]]={'$like':'%'+_0xac947b[_0x974c('0x2b')][_0x974c('0x36')]+'%'};return _0x487045;}})});}_0x5a266f=_[_0x974c('0x37')]({},_0x5a266f,_0xac947b[_0x974c('0x3a')]);var _0x5f44c2={'where':_0x5a266f['where']};return db[_0x974c('0x27')][_0x974c('0x1c')](_0x5f44c2)['then'](function(_0x5dfbf6){_0x372009[_0x974c('0x1c')]=_0x5dfbf6;if(_0xac947b[_0x974c('0x2b')][_0x974c('0x3b')]){_0x5a266f[_0x974c('0x3c')]=[{'all':!![]}];}return db[_0x974c('0x27')][_0x974c('0x3d')](_0x5a266f);})[_0x974c('0x21')](function(_0x470d1f){_0x372009[_0x974c('0x3e')]=_0x470d1f;return _0x372009;})['then'](respondWithFilteredResult(_0x58587f,_0x5a266f))[_0x974c('0x3f')](handleError(_0x58587f,null));};exports[_0x974c('0x40')]=function(_0x37b740,_0x10f69b){var _0x4a2f2e={'raw':![],'where':{'id':_0x37b740[_0x974c('0x41')]['id']}},_0x32f0c9={};_0x32f0c9[_0x974c('0x2a')]=_[_0x974c('0x2c')](db[_0x974c('0x27')]['rawAttributes']);_0x32f0c9[_0x974c('0x2b')]=_[_0x974c('0x2c')](_0x37b740[_0x974c('0x2b')]);_0x32f0c9[_0x974c('0x2d')]=_[_0x974c('0x2f')](_0x32f0c9[_0x974c('0x2a')],_0x32f0c9[_0x974c('0x2b')]);_0x4a2f2e[_0x974c('0x2e')]=_[_0x974c('0x2f')](_0x32f0c9[_0x974c('0x2a')],qs['fields'](_0x37b740[_0x974c('0x2b')][_0x974c('0x30')]));_0x4a2f2e['attributes']=_0x4a2f2e['attributes']['length']?_0x4a2f2e[_0x974c('0x2e')]:_0x32f0c9[_0x974c('0x2a')];if(_0x37b740['query'][_0x974c('0x3b')]){_0x4a2f2e['include']=[{'all':!![]}];}_0x4a2f2e=_[_0x974c('0x37')]({},_0x4a2f2e,_0x37b740[_0x974c('0x3a')]);return db['Dynamics365Configuration']['find'](_0x4a2f2e)[_0x974c('0x21')](handleEntityNotFound(_0x10f69b,null))[_0x974c('0x21')](respondWithResult(_0x10f69b,null))[_0x974c('0x3f')](handleError(_0x10f69b,null));};exports[_0x974c('0x42')]=function(_0x1ff338,_0x23f135){return db['Dynamics365Configuration'][_0x974c('0x42')](_0x1ff338['body'],{})[_0x974c('0x21')](respondWithResult(_0x23f135,0xc9))[_0x974c('0x3f')](handleError(_0x23f135,null));};exports['update']=function(_0x46c8fd,_0x4f81f1){if(_0x46c8fd[_0x974c('0x43')]['id']){delete _0x46c8fd[_0x974c('0x43')]['id'];}return db['Dynamics365Configuration'][_0x974c('0x44')]({'where':{'id':_0x46c8fd[_0x974c('0x41')]['id']}})[_0x974c('0x21')](handleEntityNotFound(_0x4f81f1,null))[_0x974c('0x21')](saveUpdates(_0x46c8fd[_0x974c('0x43')],null))[_0x974c('0x21')](respondWithResult(_0x4f81f1,null))[_0x974c('0x3f')](handleError(_0x4f81f1,null));};exports[_0x974c('0x45')]=function(_0x466b94,_0x126af7){return db[_0x974c('0x27')][_0x974c('0x44')]({'where':{'id':_0x466b94[_0x974c('0x41')]['id']}})[_0x974c('0x21')](handleEntityNotFound(_0x126af7,null))['then'](removeEntity(_0x126af7,null))[_0x974c('0x3f')](handleError(_0x126af7,null));};exports[_0x974c('0x46')]=function(_0x2900c8,_0x63bdba,_0x55125f){var _0x19aadc={};var _0x12df5d={};var _0x4989d9;var _0xaeef6c;return db['Dynamics365Configuration'][_0x974c('0x47')]({'where':{'id':_0x2900c8[_0x974c('0x41')]['id']}})['then'](handleEntityNotFound(_0x63bdba,null))['then'](function(_0x4afe24){if(_0x4afe24){_0x4989d9=_0x4afe24;_0x12df5d[_0x974c('0x2a')]=_[_0x974c('0x2c')](db[_0x974c('0x48')]['rawAttributes']);_0x12df5d['query']=_[_0x974c('0x2c')](_0x2900c8[_0x974c('0x2b')]);_0x12df5d[_0x974c('0x2d')]=_['intersection'](_0x12df5d[_0x974c('0x2a')],_0x12df5d['query']);_0x19aadc[_0x974c('0x2e')]=_[_0x974c('0x2f')](_0x12df5d[_0x974c('0x2a')],qs[_0x974c('0x30')](_0x2900c8['query'][_0x974c('0x30')]));_0x19aadc[_0x974c('0x2e')]=_0x19aadc[_0x974c('0x2e')][_0x974c('0x31')]?_0x19aadc[_0x974c('0x2e')]:_0x12df5d[_0x974c('0x2a')];_0x19aadc[_0x974c('0x33')]=qs[_0x974c('0x34')](_0x2900c8[_0x974c('0x2b')]['sort']);_0x19aadc[_0x974c('0x35')]=qs[_0x974c('0x2d')](_[_0x974c('0x49')](_0x2900c8['query'],_0x12df5d[_0x974c('0x2d')]));if(_0x2900c8['query']['filter']){_0x19aadc[_0x974c('0x35')]=_[_0x974c('0x37')](_0x19aadc['where'],{'$or':_[_0x974c('0x26')](_0x19aadc[_0x974c('0x2e')],function(_0x5b10fa){var _0x54788e={};_0x54788e[_0x5b10fa]={'$like':'%'+_0x2900c8['query'][_0x974c('0x36')]+'%'};return _0x54788e;})});}_0x19aadc=_[_0x974c('0x37')]({},_0x19aadc,_0x2900c8[_0x974c('0x3a')]);return _0x4989d9['getFields'](_0x19aadc);}})[_0x974c('0x21')](function(_0x1f03af){if(_0x1f03af){_0xaeef6c=_0x1f03af['length'];if(!_0x2900c8[_0x974c('0x2b')][_0x974c('0x4a')](_0x974c('0x32'))){_0x19aadc[_0x974c('0x1b')]=qs['limit'](_0x2900c8[_0x974c('0x2b')]['limit']);_0x19aadc[_0x974c('0x19')]=qs[_0x974c('0x19')](_0x2900c8[_0x974c('0x2b')]['offset']);}return _0x4989d9[_0x974c('0x46')](_0x19aadc);}})[_0x974c('0x21')](function(_0x33c7cf){if(_0x33c7cf){return _0x33c7cf?{'count':_0xaeef6c,'rows':_0x33c7cf}:null;}})[_0x974c('0x21')](respondWithResult(_0x63bdba,null))[_0x974c('0x3f')](handleError(_0x63bdba,null));};exports['getSubjects']=function(_0xb5e580,_0x55bf49,_0x146f6f){var _0x18c1ed={};var _0x2c935f={};var _0x4a06a4;var _0x58fc3e;return db['Dynamics365Configuration'][_0x974c('0x47')]({'where':{'id':_0xb5e580[_0x974c('0x41')]['id']}})[_0x974c('0x21')](handleEntityNotFound(_0x55bf49,null))[_0x974c('0x21')](function(_0x368728){if(_0x368728){_0x4a06a4=_0x368728;_0x2c935f[_0x974c('0x2a')]=_[_0x974c('0x2c')](db['Dynamics365Field']['rawAttributes']);_0x2c935f[_0x974c('0x2b')]=_['keys'](_0xb5e580[_0x974c('0x2b')]);_0x2c935f[_0x974c('0x2d')]=_[_0x974c('0x2f')](_0x2c935f[_0x974c('0x2a')],_0x2c935f[_0x974c('0x2b')]);_0x18c1ed[_0x974c('0x2e')]=_[_0x974c('0x2f')](_0x2c935f['model'],qs[_0x974c('0x30')](_0xb5e580['query']['fields']));_0x18c1ed[_0x974c('0x2e')]=_0x18c1ed['attributes'][_0x974c('0x31')]?_0x18c1ed[_0x974c('0x2e')]:_0x2c935f[_0x974c('0x2a')];_0x18c1ed[_0x974c('0x33')]=qs[_0x974c('0x34')](_0xb5e580[_0x974c('0x2b')][_0x974c('0x34')]);_0x18c1ed['where']=qs['filters'](_['pick'](_0xb5e580[_0x974c('0x2b')],_0x2c935f['filters']));if(_0xb5e580[_0x974c('0x2b')][_0x974c('0x36')]){_0x18c1ed[_0x974c('0x35')]=_[_0x974c('0x37')](_0x18c1ed[_0x974c('0x35')],{'$or':_['map'](_0x18c1ed[_0x974c('0x2e')],function(_0x5f1f97){var _0x592128={};_0x592128[_0x5f1f97]={'$like':'%'+_0xb5e580[_0x974c('0x2b')][_0x974c('0x36')]+'%'};return _0x592128;})});}_0x18c1ed=_['merge']({},_0x18c1ed,_0xb5e580[_0x974c('0x3a')]);return _0x4a06a4[_0x974c('0x4b')](_0x18c1ed);}})[_0x974c('0x21')](function(_0x27d09b){if(_0x27d09b){_0x58fc3e=_0x27d09b[_0x974c('0x31')];if(!_0xb5e580[_0x974c('0x2b')][_0x974c('0x4a')](_0x974c('0x32'))){_0x18c1ed['limit']=qs[_0x974c('0x1b')](_0xb5e580['query'][_0x974c('0x1b')]);_0x18c1ed[_0x974c('0x19')]=qs[_0x974c('0x19')](_0xb5e580[_0x974c('0x2b')][_0x974c('0x19')]);}return _0x4a06a4[_0x974c('0x4b')](_0x18c1ed);}})[_0x974c('0x21')](function(_0x288a25){if(_0x288a25){return _0x288a25?{'count':_0x58fc3e,'rows':_0x288a25}:null;}})[_0x974c('0x21')](respondWithResult(_0x55bf49,null))[_0x974c('0x3f')](handleError(_0x55bf49,null));};exports[_0x974c('0x4c')]=function(_0x54faba,_0x242bf8,_0x4b997a){var _0x34bdb7={};var _0x1dad98={};var _0x28b722;var _0x2eef36;return db[_0x974c('0x27')]['findOne']({'where':{'id':_0x54faba[_0x974c('0x41')]['id']}})['then'](handleEntityNotFound(_0x242bf8,null))[_0x974c('0x21')](function(_0x2af13a){if(_0x2af13a){_0x28b722=_0x2af13a;_0x1dad98['model']=_[_0x974c('0x2c')](db[_0x974c('0x48')][_0x974c('0x4d')]);_0x1dad98[_0x974c('0x2b')]=_[_0x974c('0x2c')](_0x54faba[_0x974c('0x2b')]);_0x1dad98[_0x974c('0x2d')]=_['intersection'](_0x1dad98[_0x974c('0x2a')],_0x1dad98['query']);_0x34bdb7['attributes']=_[_0x974c('0x2f')](_0x1dad98['model'],qs[_0x974c('0x30')](_0x54faba['query'][_0x974c('0x30')]));_0x34bdb7['attributes']=_0x34bdb7[_0x974c('0x2e')][_0x974c('0x31')]?_0x34bdb7['attributes']:_0x1dad98['model'];_0x34bdb7['order']=qs[_0x974c('0x34')](_0x54faba[_0x974c('0x2b')][_0x974c('0x34')]);_0x34bdb7['where']=qs[_0x974c('0x2d')](_[_0x974c('0x49')](_0x54faba[_0x974c('0x2b')],_0x1dad98[_0x974c('0x2d')]));if(_0x54faba[_0x974c('0x2b')][_0x974c('0x36')]){_0x34bdb7[_0x974c('0x35')]=_[_0x974c('0x37')](_0x34bdb7['where'],{'$or':_[_0x974c('0x26')](_0x34bdb7[_0x974c('0x2e')],function(_0x516c35){var _0x23dc05={};_0x23dc05[_0x516c35]={'$like':'%'+_0x54faba[_0x974c('0x2b')][_0x974c('0x36')]+'%'};return _0x23dc05;})});}_0x34bdb7=_[_0x974c('0x37')]({},_0x34bdb7,_0x54faba[_0x974c('0x3a')]);return _0x28b722[_0x974c('0x4c')](_0x34bdb7);}})['then'](function(_0x5cb72f){if(_0x5cb72f){_0x2eef36=_0x5cb72f[_0x974c('0x31')];if(!_0x54faba['query'][_0x974c('0x4a')]('nolimit')){_0x34bdb7[_0x974c('0x1b')]=qs[_0x974c('0x1b')](_0x54faba[_0x974c('0x2b')]['limit']);_0x34bdb7[_0x974c('0x19')]=qs[_0x974c('0x19')](_0x54faba[_0x974c('0x2b')][_0x974c('0x19')]);}return _0x28b722[_0x974c('0x4c')](_0x34bdb7);}})[_0x974c('0x21')](function(_0x57bcec){if(_0x57bcec){return _0x57bcec?{'count':_0x2eef36,'rows':_0x57bcec}:null;}})[_0x974c('0x21')](respondWithResult(_0x242bf8,null))['catch'](handleError(_0x242bf8,null));};
\ No newline at end of file
index c829b90..a4b5037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x2a1c3a,_0xcbecfa){var _0x196a72=function(_0x413b80){while(--_0x413b80){_0x2a1c3a['push'](_0x2a1c3a['shift']());}};_0x196a72(++_0xcbecfa);}(_0xb43b,0x1b2));var _0xbb43=function(_0xbc4a56,_0x3ff7e3){_0xbc4a56=_0xbc4a56-0x0;var _0xd8f8b=_0xb43b[_0xbc4a56];return _0xd8f8b;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdace=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','Dynamics365Configuration','int_dynamics365_configurations','lodash'];(function(_0x519a0d,_0x3bd56e){var _0x59da76=function(_0x3e3486){while(--_0x3e3486){_0x519a0d['push'](_0x519a0d['shift']());}};_0x59da76(++_0x3bd56e);}(_0xdace,0xc5));var _0xedac=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0xdace[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));var moment=require(_0xedac('0x3'));var BPromise=require('bluebird');var rp=require(_0xedac('0x4'));var fs=require('fs');var path=require(_0xedac('0x5'));var rimraf=require(_0xedac('0x6'));var config=require(_0xedac('0x7'));var attributes=require('./intDynamics365Configuration.attributes');module[_0xedac('0x8')]=function(_0x1cba89,_0x39328a){return _0x1cba89['define'](_0xedac('0x9'),attributes,{'tableName':_0xedac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb65629..424a1ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6fd=['stringify','error','code','message','result','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s'];(function(_0x21b3bd,_0x21cb65){var _0x36db31=function(_0x4984be){while(--_0x4984be){_0x21b3bd['push'](_0x21b3bd['shift']());}};_0x36db31(++_0x21cb65);}(_0xe6fd,0xa6));var _0xde6f=function(_0x4249c0,_0x2d61d7){_0x4249c0=_0x4249c0-0x0;var _0x202d22=_0xe6fd[_0x4249c0];return _0x202d22;};'use strict';var _=require('lodash');var util=require(_0xde6f('0x0'));var moment=require(_0xde6f('0x1'));var BPromise=require(_0xde6f('0x2'));var rs=require(_0xde6f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xde6f('0x4'));var logger=require(_0xde6f('0x5'))(_0xde6f('0x6'));var config=require(_0xde6f('0x7'));var jayson=require(_0xde6f('0x8'));var client=jayson[_0xde6f('0x9')][_0xde6f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c717b,_0x12dc2b,_0x3b8778){return new BPromise(function(_0x3df520,_0x4e55cd){return client[_0xde6f('0xb')](_0x4c717b,_0x3b8778)[_0xde6f('0xc')](function(_0x43ae34){logger[_0xde6f('0xd')](_0xde6f('0xe'),_0x12dc2b,_0xde6f('0xf'));logger[_0xde6f('0x10')](_0xde6f('0x11'),_0x12dc2b,_0xde6f('0xf'),JSON[_0xde6f('0x12')](_0x43ae34));if(_0x43ae34[_0xde6f('0x13')]){if(_0x43ae34[_0xde6f('0x13')][_0xde6f('0x14')]===0x1f4){logger[_0xde6f('0x13')](_0xde6f('0xe'),_0x12dc2b,_0x43ae34[_0xde6f('0x13')][_0xde6f('0x15')]);return _0x4e55cd(_0x43ae34[_0xde6f('0x13')][_0xde6f('0x15')]);}logger[_0xde6f('0x13')](_0xde6f('0xe'),_0x12dc2b,_0x43ae34['error'][_0xde6f('0x15')]);return _0x3df520(_0x43ae34[_0xde6f('0x13')]['message']);}else{logger[_0xde6f('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x12dc2b,_0xde6f('0xf'));_0x3df520(_0x43ae34[_0xde6f('0x16')][_0xde6f('0x15')]);}})['catch'](function(_0x25181b){logger['error'](_0xde6f('0xe'),_0x12dc2b,_0x25181b);_0x4e55cd(_0x25181b);});});}
\ No newline at end of file
+var _0x71d8=['debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Dynamics365Configuration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','info','request\x20sent'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0x71d8,0x1d7));var _0x871d=function(_0x5f4eeb,_0x4d9ccc){_0x5f4eeb=_0x5f4eeb-0x0;var _0x2d1573=_0x71d8[_0x5f4eeb];return _0x2d1573;};'use strict';var _=require(_0x871d('0x0'));var util=require(_0x871d('0x1'));var moment=require(_0x871d('0x2'));var BPromise=require(_0x871d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x871d('0x4'));var db=require(_0x871d('0x5'))['db'];var utils=require(_0x871d('0x6'));var logger=require('../../config/logger')(_0x871d('0x7'));var config=require(_0x871d('0x8'));var jayson=require(_0x871d('0x9'));var client=jayson[_0x871d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3057ed,_0x30cb31,_0x25b66c){return new BPromise(function(_0x245f06,_0x534d64){return client['request'](_0x3057ed,_0x25b66c)['then'](function(_0x179172){logger[_0x871d('0xb')]('Dynamics365Configuration,\x20%s,\x20%s',_0x30cb31,_0x871d('0xc'));logger[_0x871d('0xd')](_0x871d('0xe'),_0x30cb31,'request\x20sent',JSON[_0x871d('0xf')](_0x179172));if(_0x179172[_0x871d('0x10')]){if(_0x179172[_0x871d('0x10')][_0x871d('0x11')]===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x30cb31,_0x179172[_0x871d('0x10')][_0x871d('0x12')]);return _0x534d64(_0x179172[_0x871d('0x10')][_0x871d('0x12')]);}logger['error'](_0x871d('0x13'),_0x30cb31,_0x179172[_0x871d('0x10')]['message']);return _0x245f06(_0x179172['error']['message']);}else{logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x30cb31,'request\x20sent');_0x245f06(_0x179172[_0x871d('0x14')]['message']);}})[_0x871d('0x15')](function(_0x2056cb){logger['error'](_0x871d('0x13'),_0x30cb31,_0x2056cb);_0x534d64(_0x2056cb);});});}
\ No newline at end of file
index 493c5e8..3eb2a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['put','update','delete','exports','multer','util','path','connect-timeout','express','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2cb3ed,_0x4d36a3){var _0xe7e81a=function(_0x21b942){while(--_0x21b942){_0x2cb3ed['push'](_0x2cb3ed['shift']());}};_0xe7e81a(++_0x4d36a3);}(_0xcbe1,0x6a));var _0x1cbe=function(_0x1ee2ae,_0x17c0eb){_0x1ee2ae=_0x1ee2ae-0x0;var _0x1780e5=_0xcbe1[_0x1ee2ae];return _0x1780e5;};'use strict';var multer=require(_0x1cbe('0x0'));var util=require(_0x1cbe('0x1'));var path=require(_0x1cbe('0x2'));var timeout=require(_0x1cbe('0x3'));var express=require(_0x1cbe('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1cbe('0x5'));router[_0x1cbe('0x6')]('/',auth[_0x1cbe('0x7')](),controller[_0x1cbe('0x8')]);router[_0x1cbe('0x6')](_0x1cbe('0x9'),auth['isAuthenticated'](),controller[_0x1cbe('0xa')]);router[_0x1cbe('0xb')]('/',auth[_0x1cbe('0x7')](),controller[_0x1cbe('0xc')]);router[_0x1cbe('0xd')](_0x1cbe('0x9'),auth['isAuthenticated'](),controller[_0x1cbe('0xe')]);router[_0x1cbe('0xf')](_0x1cbe('0x9'),auth[_0x1cbe('0x7')](),controller['destroy']);module[_0x1cbe('0x10')]=router;
\ No newline at end of file
+var _0x4ed4=['create','put','update','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x4ed4,0xa5));var _0x44ed=function(_0xd6ebce,_0x36423b){_0xd6ebce=_0xd6ebce-0x0;var _0x58300c=_0x4ed4[_0xd6ebce];return _0x58300c;};'use strict';var multer=require(_0x44ed('0x0'));var util=require(_0x44ed('0x1'));var path=require(_0x44ed('0x2'));var timeout=require('connect-timeout');var express=require(_0x44ed('0x3'));var router=express[_0x44ed('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x44ed('0x5'));var interaction=require(_0x44ed('0x6'));var config=require(_0x44ed('0x7'));var controller=require(_0x44ed('0x8'));router['get']('/',auth[_0x44ed('0x9')](),controller[_0x44ed('0xa')]);router[_0x44ed('0xb')](_0x44ed('0xc'),auth[_0x44ed('0x9')](),controller[_0x44ed('0xd')]);router[_0x44ed('0xe')]('/',auth[_0x44ed('0x9')](),controller[_0x44ed('0xf')]);router[_0x44ed('0x10')](_0x44ed('0xc'),auth[_0x44ed('0x9')](),controller[_0x44ed('0x11')]);router['delete']('/:id',auth[_0x44ed('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f005ff2..28ba917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf813=['picklist','STRING','ENUM','customVariable','BOOLEAN','sequelize','exports','string','variable'];(function(_0x4a2673,_0x1290a1){var _0x20f7ff=function(_0x48b1b3){while(--_0x48b1b3){_0x4a2673['push'](_0x4a2673['shift']());}};_0x20f7ff(++_0x1290a1);}(_0xf813,0xb9));var _0x3f81=function(_0x18307e,_0x1898e8){_0x18307e=_0x18307e-0x0;var _0x24186b=_0xf813[_0x18307e];return _0x24186b;};'use strict';var Sequelize=require(_0x3f81('0x0'));module[_0x3f81('0x1')]={'type':{'type':Sequelize['ENUM'](_0x3f81('0x2'),_0x3f81('0x3'),'customVariable','keyValue',_0x3f81('0x4')),'defaultValue':_0x3f81('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x3f81('0x5')]},'keyType':{'type':Sequelize[_0x3f81('0x6')](_0x3f81('0x2'),'variable',_0x3f81('0x7'))},'keyContent':{'type':Sequelize[_0x3f81('0x5')]},'idField':{'type':Sequelize[_0x3f81('0x5')]},'nameField':{'type':Sequelize[_0x3f81('0x5')]},'customField':{'type':Sequelize[_0x3f81('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3f81('0x5')]}};
\ No newline at end of file
+var _0xe401=['sequelize','exports','ENUM','string','customVariable','keyValue','STRING','variable','BOOLEAN'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe401,0x1cb));var _0x1e40=function(_0x5ebcb8,_0x389e21){_0x5ebcb8=_0x5ebcb8-0x0;var _0x1e849e=_0xe401[_0x5ebcb8];return _0x1e849e;};'use strict';var Sequelize=require(_0x1e40('0x0'));module[_0x1e40('0x1')]={'type':{'type':Sequelize[_0x1e40('0x2')](_0x1e40('0x3'),'variable',_0x1e40('0x4'),_0x1e40('0x5'),'picklist'),'defaultValue':_0x1e40('0x3')},'content':{'type':Sequelize[_0x1e40('0x6')]},'key':{'type':Sequelize[_0x1e40('0x6')]},'keyType':{'type':Sequelize[_0x1e40('0x2')](_0x1e40('0x3'),_0x1e40('0x7'),_0x1e40('0x4'))},'keyContent':{'type':Sequelize[_0x1e40('0x6')]},'idField':{'type':Sequelize[_0x1e40('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1e40('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1e40('0x6')]}};
\ No newline at end of file
index 3fc0a9c..b9c9584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dd5=['then','destroy','end','error','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','sort','where','filter','type','VIRTUAL','options','includeAll','include','findAll','catch','keys','merge','find','create','body','params','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update'];(function(_0x10cb86,_0x305cea){var _0x6f3d6d=function(_0x2469a3){while(--_0x2469a3){_0x10cb86['push'](_0x10cb86['shift']());}};_0x6f3d6d(++_0x305cea);}(_0x0dd5,0x177));var _0x50dd=function(_0x188316,_0x345b44){_0x188316=_0x188316-0x0;var _0x279a4f=_0x0dd5[_0x188316];return _0x279a4f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x50dd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50dd('0x1'));var rp=require(_0x50dd('0x2'));var moment=require(_0x50dd('0x3'));var BPromise=require(_0x50dd('0x4'));var Mustache=require(_0x50dd('0x5'));var util=require(_0x50dd('0x6'));var path=require(_0x50dd('0x7'));var sox=require(_0x50dd('0x8'));var csv=require(_0x50dd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x50dd('0xa'));var crypto=require(_0x50dd('0xb'));var jsforce=require(_0x50dd('0xc'));var deskjs=require(_0x50dd('0xd'));var toCsv=require(_0x50dd('0x9'));var querystring=require('querystring');var Papa=require(_0x50dd('0xe'));var Redis=require('ioredis');var authService=require(_0x50dd('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x50dd('0x10'));var hardwareService=require(_0x50dd('0x11'));var logger=require('../../config/logger')(_0x50dd('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x50dd('0x13'));var db=require(_0x50dd('0x14'))['db'];function respondWithStatusCode(_0x187385,_0x16b373){_0x16b373=_0x16b373||0xcc;return function(_0x1bfabe){if(_0x1bfabe){return _0x187385[_0x50dd('0x15')](_0x16b373);}return _0x187385[_0x50dd('0x16')](_0x16b373)['end']();};}function respondWithResult(_0x2c4b11,_0x2c9d14){_0x2c9d14=_0x2c9d14||0xc8;return function(_0x4d256a){if(_0x4d256a){return _0x2c4b11[_0x50dd('0x16')](_0x2c9d14)[_0x50dd('0x17')](_0x4d256a);}};}function respondWithFilteredResult(_0x170278,_0x522dcb){return function(_0x1aed28){if(_0x1aed28){var _0x7c079f=typeof _0x522dcb[_0x50dd('0x18')]==='undefined'&&typeof _0x522dcb[_0x50dd('0x19')]===_0x50dd('0x1a');var _0x508ddd=_0x1aed28['count'];var _0x709cae=_0x7c079f?0x0:_0x522dcb[_0x50dd('0x18')];var _0x3ef21e=_0x7c079f?_0x1aed28[_0x50dd('0x1b')]:_0x522dcb['offset']+_0x522dcb['limit'];var _0x2b001c;if(_0x3ef21e>=_0x508ddd){_0x3ef21e=_0x508ddd;_0x2b001c=0xc8;}else{_0x2b001c=0xce;}_0x170278[_0x50dd('0x16')](_0x2b001c);return _0x170278[_0x50dd('0x1c')](_0x50dd('0x1d'),_0x709cae+'-'+_0x3ef21e+'/'+_0x508ddd)[_0x50dd('0x17')](_0x1aed28);}return null;};}function patchUpdates(_0x383f5a){return function(_0x4d132e){try{jsonpatch[_0x50dd('0x1e')](_0x4d132e,_0x383f5a,!![]);}catch(_0x21e8fc){return BPromise[_0x50dd('0x1f')](_0x21e8fc);}return _0x4d132e['save']();};}function saveUpdates(_0x2cc485,_0x53ee13){return function(_0x1f905a){if(_0x1f905a){return _0x1f905a[_0x50dd('0x20')](_0x2cc485)[_0x50dd('0x21')](function(_0x2af484){return _0x2af484;});}return null;};}function removeEntity(_0x4b976e,_0x2dfac6){return function(_0x7155d6){if(_0x7155d6){return _0x7155d6[_0x50dd('0x22')]()['then'](function(){_0x4b976e['status'](0xcc)[_0x50dd('0x23')]();});}};}function handleEntityNotFound(_0x419537,_0x36a5c7){return function(_0x3db676){if(!_0x3db676){_0x419537['sendStatus'](0x194);}return _0x3db676;};}function handleError(_0x152fbd,_0x3d3ff7){_0x3d3ff7=_0x3d3ff7||0x1f4;return function(_0x1ef0dc){logger[_0x50dd('0x24')](_0x1ef0dc['stack']);if(_0x1ef0dc[_0x50dd('0x25')]){delete _0x1ef0dc['name'];}_0x152fbd[_0x50dd('0x16')](_0x3d3ff7)[_0x50dd('0x26')](_0x1ef0dc);};}exports[_0x50dd('0x27')]=function(_0x4a567e,_0x5762c9){var _0x17d261={},_0x344ccb={},_0x332b98={'count':0x0,'rows':[]};var _0x5c315a=_[_0x50dd('0x28')](db[_0x50dd('0x29')][_0x50dd('0x2a')],function(_0x5a0046){return{'name':_0x5a0046[_0x50dd('0x2b')],'type':_0x5a0046['type'][_0x50dd('0x2c')]};});_0x344ccb['model']=_[_0x50dd('0x28')](_0x5c315a,'name');_0x344ccb[_0x50dd('0x2d')]=_['keys'](_0x4a567e[_0x50dd('0x2d')]);_0x344ccb[_0x50dd('0x2e')]=_[_0x50dd('0x2f')](_0x344ccb[_0x50dd('0x30')],_0x344ccb[_0x50dd('0x2d')]);_0x17d261[_0x50dd('0x31')]=_[_0x50dd('0x2f')](_0x344ccb['model'],qs[_0x50dd('0x32')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x32')]));_0x17d261[_0x50dd('0x31')]=_0x17d261[_0x50dd('0x31')][_0x50dd('0x33')]?_0x17d261[_0x50dd('0x31')]:_0x344ccb[_0x50dd('0x30')];if(!_0x4a567e[_0x50dd('0x2d')]['hasOwnProperty']('nolimit')){_0x17d261[_0x50dd('0x19')]=qs[_0x50dd('0x19')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x19')]);_0x17d261[_0x50dd('0x18')]=qs[_0x50dd('0x18')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x18')]);}_0x17d261['order']=qs[_0x50dd('0x34')](_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x34')]);_0x17d261[_0x50dd('0x35')]=qs['filters'](_['pick'](_0x4a567e['query'],_0x344ccb['filters']),_0x5c315a);if(_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x36')]){_0x17d261[_0x50dd('0x35')]=_['merge'](_0x17d261[_0x50dd('0x35')],{'$or':_['map'](_0x5c315a,function(_0x59d70f){if(_0x59d70f[_0x50dd('0x37')]!==_0x50dd('0x38')){var _0x2d8751={};_0x2d8751[_0x59d70f['name']]={'$like':'%'+_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x36')]+'%'};return _0x2d8751;}})});}_0x17d261=_['merge']({},_0x17d261,_0x4a567e[_0x50dd('0x39')]);var _0x480ebe={'where':_0x17d261[_0x50dd('0x35')]};return db['Dynamics365Field'][_0x50dd('0x1b')](_0x480ebe)[_0x50dd('0x21')](function(_0x29a463){_0x332b98['count']=_0x29a463;if(_0x4a567e[_0x50dd('0x2d')][_0x50dd('0x3a')]){_0x17d261[_0x50dd('0x3b')]=[{'all':!![]}];}return db[_0x50dd('0x29')][_0x50dd('0x3c')](_0x17d261);})[_0x50dd('0x21')](function(_0x18a2d5){_0x332b98['rows']=_0x18a2d5;return _0x332b98;})[_0x50dd('0x21')](respondWithFilteredResult(_0x5762c9,_0x17d261))[_0x50dd('0x3d')](handleError(_0x5762c9,null));};exports['show']=function(_0x521f86,_0x3c4c6c){var _0x125820={'raw':!![],'where':{'id':_0x521f86['params']['id']}},_0x5e0584={};_0x5e0584[_0x50dd('0x30')]=_['keys'](db[_0x50dd('0x29')][_0x50dd('0x2a')]);_0x5e0584[_0x50dd('0x2d')]=_[_0x50dd('0x3e')](_0x521f86[_0x50dd('0x2d')]);_0x5e0584[_0x50dd('0x2e')]=_['intersection'](_0x5e0584[_0x50dd('0x30')],_0x5e0584['query']);_0x125820[_0x50dd('0x31')]=_[_0x50dd('0x2f')](_0x5e0584[_0x50dd('0x30')],qs[_0x50dd('0x32')](_0x521f86[_0x50dd('0x2d')][_0x50dd('0x32')]));_0x125820[_0x50dd('0x31')]=_0x125820['attributes'][_0x50dd('0x33')]?_0x125820[_0x50dd('0x31')]:_0x5e0584[_0x50dd('0x30')];if(_0x521f86[_0x50dd('0x2d')][_0x50dd('0x3a')]){_0x125820[_0x50dd('0x3b')]=[{'all':!![]}];}_0x125820=_[_0x50dd('0x3f')]({},_0x125820,_0x521f86[_0x50dd('0x39')]);return db[_0x50dd('0x29')][_0x50dd('0x40')](_0x125820)[_0x50dd('0x21')](handleEntityNotFound(_0x3c4c6c,null))['then'](respondWithResult(_0x3c4c6c,null))[_0x50dd('0x3d')](handleError(_0x3c4c6c,null));};exports[_0x50dd('0x41')]=function(_0x4e8106,_0x33bfdb){return db[_0x50dd('0x29')][_0x50dd('0x41')](_0x4e8106['body'],{})[_0x50dd('0x21')](respondWithResult(_0x33bfdb,0xc9))[_0x50dd('0x3d')](handleError(_0x33bfdb,null));};exports[_0x50dd('0x20')]=function(_0x55ea91,_0x1543f3){if(_0x55ea91['body']['id']){delete _0x55ea91[_0x50dd('0x42')]['id'];}return db['Dynamics365Field'][_0x50dd('0x40')]({'where':{'id':_0x55ea91[_0x50dd('0x43')]['id']}})[_0x50dd('0x21')](handleEntityNotFound(_0x1543f3,null))[_0x50dd('0x21')](saveUpdates(_0x55ea91[_0x50dd('0x42')],null))[_0x50dd('0x21')](respondWithResult(_0x1543f3,null))['catch'](handleError(_0x1543f3,null));};exports[_0x50dd('0x22')]=function(_0x2db189,_0x569882){return db['Dynamics365Field'][_0x50dd('0x40')]({'where':{'id':_0x2db189[_0x50dd('0x43')]['id']}})[_0x50dd('0x21')](handleEntityNotFound(_0x569882,null))[_0x50dd('0x21')](removeEntity(_0x569882,null))['catch'](handleError(_0x569882,null));};
\ No newline at end of file
+var _0x9b7d=['Content-Range','save','then','end','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','type','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','keys','find','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count'];(function(_0x11afdc,_0x3c50d7){var _0x2055a8=function(_0x538b8a){while(--_0x538b8a){_0x11afdc['push'](_0x11afdc['shift']());}};_0x2055a8(++_0x3c50d7);}(_0x9b7d,0x73));var _0xd9b7=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9b7d[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xd9b7('0x0'));var rimraf=require(_0xd9b7('0x1'));var zipdir=require(_0xd9b7('0x2'));var jsonpatch=require(_0xd9b7('0x3'));var rp=require('request-promise');var moment=require(_0xd9b7('0x4'));var BPromise=require(_0xd9b7('0x5'));var Mustache=require(_0xd9b7('0x6'));var util=require(_0xd9b7('0x7'));var path=require(_0xd9b7('0x8'));var sox=require(_0xd9b7('0x9'));var csv=require(_0xd9b7('0xa'));var ejs=require(_0xd9b7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd9b7('0xc'));var crypto=require(_0xd9b7('0xd'));var jsforce=require(_0xd9b7('0xe'));var deskjs=require(_0xd9b7('0xf'));var toCsv=require(_0xd9b7('0xa'));var querystring=require('querystring');var Papa=require(_0xd9b7('0x10'));var Redis=require(_0xd9b7('0x11'));var authService=require(_0xd9b7('0x12'));var qs=require(_0xd9b7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xd9b7('0x14'))(_0xd9b7('0x15'));var utils=require(_0xd9b7('0x16'));var config=require(_0xd9b7('0x17'));var licenseUtil=require(_0xd9b7('0x18'));var db=require(_0xd9b7('0x19'))['db'];function respondWithStatusCode(_0x515195,_0x2f5b71){_0x2f5b71=_0x2f5b71||0xcc;return function(_0x44413e){if(_0x44413e){return _0x515195[_0xd9b7('0x1a')](_0x2f5b71);}return _0x515195[_0xd9b7('0x1b')](_0x2f5b71)['end']();};}function respondWithResult(_0x4137c0,_0x423ec7){_0x423ec7=_0x423ec7||0xc8;return function(_0x6f659b){if(_0x6f659b){return _0x4137c0[_0xd9b7('0x1b')](_0x423ec7)[_0xd9b7('0x1c')](_0x6f659b);}};}function respondWithFilteredResult(_0xdde24a,_0x4794cf){return function(_0x8849e0){if(_0x8849e0){var _0xecfd4c=typeof _0x4794cf[_0xd9b7('0x1d')]===_0xd9b7('0x1e')&&typeof _0x4794cf[_0xd9b7('0x1f')]===_0xd9b7('0x1e');var _0x33fd09=_0x8849e0[_0xd9b7('0x20')];var _0x19ce89=_0xecfd4c?0x0:_0x4794cf[_0xd9b7('0x1d')];var _0x2ae9f9=_0xecfd4c?_0x8849e0[_0xd9b7('0x20')]:_0x4794cf['offset']+_0x4794cf[_0xd9b7('0x1f')];var _0x193b0f;if(_0x2ae9f9>=_0x33fd09){_0x2ae9f9=_0x33fd09;_0x193b0f=0xc8;}else{_0x193b0f=0xce;}_0xdde24a[_0xd9b7('0x1b')](_0x193b0f);return _0xdde24a['set'](_0xd9b7('0x21'),_0x19ce89+'-'+_0x2ae9f9+'/'+_0x33fd09)[_0xd9b7('0x1c')](_0x8849e0);}return null;};}function patchUpdates(_0x5a8575){return function(_0x4112b8){try{jsonpatch['apply'](_0x4112b8,_0x5a8575,!![]);}catch(_0x1343d7){return BPromise['reject'](_0x1343d7);}return _0x4112b8[_0xd9b7('0x22')]();};}function saveUpdates(_0x6618aa,_0x336793){return function(_0x3c0278){if(_0x3c0278){return _0x3c0278['update'](_0x6618aa)['then'](function(_0x4f5d02){return _0x4f5d02;});}return null;};}function removeEntity(_0x25c452,_0x4b7e65){return function(_0x44ca6c){if(_0x44ca6c){return _0x44ca6c['destroy']()[_0xd9b7('0x23')](function(){_0x25c452[_0xd9b7('0x1b')](0xcc)[_0xd9b7('0x24')]();});}};}function handleEntityNotFound(_0xc6909d,_0x1720b9){return function(_0x333da6){if(!_0x333da6){_0xc6909d['sendStatus'](0x194);}return _0x333da6;};}function handleError(_0x37d694,_0x2c7e96){_0x2c7e96=_0x2c7e96||0x1f4;return function(_0x1f3249){logger[_0xd9b7('0x25')](_0x1f3249[_0xd9b7('0x26')]);if(_0x1f3249[_0xd9b7('0x27')]){delete _0x1f3249['name'];}_0x37d694['status'](_0x2c7e96)[_0xd9b7('0x28')](_0x1f3249);};}exports[_0xd9b7('0x29')]=function(_0x130539,_0x4c83f8){var _0x9ade82={},_0x26dcb9={},_0x5689b1={'count':0x0,'rows':[]};var _0x5eeaea=_[_0xd9b7('0x2a')](db[_0xd9b7('0x2b')][_0xd9b7('0x2c')],function(_0x3918a2){return{'name':_0x3918a2['fieldName'],'type':_0x3918a2[_0xd9b7('0x2d')]['key']};});_0x26dcb9['model']=_[_0xd9b7('0x2a')](_0x5eeaea,_0xd9b7('0x27'));_0x26dcb9[_0xd9b7('0x2e')]=_['keys'](_0x130539[_0xd9b7('0x2e')]);_0x26dcb9[_0xd9b7('0x2f')]=_['intersection'](_0x26dcb9['model'],_0x26dcb9[_0xd9b7('0x2e')]);_0x9ade82[_0xd9b7('0x30')]=_[_0xd9b7('0x31')](_0x26dcb9[_0xd9b7('0x32')],qs[_0xd9b7('0x33')](_0x130539[_0xd9b7('0x2e')]['fields']));_0x9ade82[_0xd9b7('0x30')]=_0x9ade82[_0xd9b7('0x30')][_0xd9b7('0x34')]?_0x9ade82[_0xd9b7('0x30')]:_0x26dcb9[_0xd9b7('0x32')];if(!_0x130539[_0xd9b7('0x2e')][_0xd9b7('0x35')](_0xd9b7('0x36'))){_0x9ade82['limit']=qs[_0xd9b7('0x1f')](_0x130539[_0xd9b7('0x2e')][_0xd9b7('0x1f')]);_0x9ade82[_0xd9b7('0x1d')]=qs[_0xd9b7('0x1d')](_0x130539['query'][_0xd9b7('0x1d')]);}_0x9ade82[_0xd9b7('0x37')]=qs['sort'](_0x130539[_0xd9b7('0x2e')][_0xd9b7('0x38')]);_0x9ade82[_0xd9b7('0x39')]=qs[_0xd9b7('0x2f')](_[_0xd9b7('0x3a')](_0x130539[_0xd9b7('0x2e')],_0x26dcb9[_0xd9b7('0x2f')]),_0x5eeaea);if(_0x130539[_0xd9b7('0x2e')][_0xd9b7('0x3b')]){_0x9ade82['where']=_[_0xd9b7('0x3c')](_0x9ade82[_0xd9b7('0x39')],{'$or':_[_0xd9b7('0x2a')](_0x5eeaea,function(_0x257637){if(_0x257637[_0xd9b7('0x2d')]!==_0xd9b7('0x3d')){var _0x27154e={};_0x27154e[_0x257637['name']]={'$like':'%'+_0x130539[_0xd9b7('0x2e')][_0xd9b7('0x3b')]+'%'};return _0x27154e;}})});}_0x9ade82=_[_0xd9b7('0x3c')]({},_0x9ade82,_0x130539[_0xd9b7('0x3e')]);var _0x5d7c83={'where':_0x9ade82['where']};return db[_0xd9b7('0x2b')]['count'](_0x5d7c83)[_0xd9b7('0x23')](function(_0x1db0d8){_0x5689b1[_0xd9b7('0x20')]=_0x1db0d8;if(_0x130539['query'][_0xd9b7('0x3f')]){_0x9ade82[_0xd9b7('0x40')]=[{'all':!![]}];}return db[_0xd9b7('0x2b')][_0xd9b7('0x41')](_0x9ade82);})['then'](function(_0x46671e){_0x5689b1['rows']=_0x46671e;return _0x5689b1;})[_0xd9b7('0x23')](respondWithFilteredResult(_0x4c83f8,_0x9ade82))[_0xd9b7('0x42')](handleError(_0x4c83f8,null));};exports['show']=function(_0x4f5ee0,_0x393083){var _0x40daf1={'raw':!![],'where':{'id':_0x4f5ee0[_0xd9b7('0x43')]['id']}},_0x3c1edf={};_0x3c1edf[_0xd9b7('0x32')]=_[_0xd9b7('0x44')](db[_0xd9b7('0x2b')][_0xd9b7('0x2c')]);_0x3c1edf[_0xd9b7('0x2e')]=_['keys'](_0x4f5ee0[_0xd9b7('0x2e')]);_0x3c1edf[_0xd9b7('0x2f')]=_[_0xd9b7('0x31')](_0x3c1edf['model'],_0x3c1edf[_0xd9b7('0x2e')]);_0x40daf1[_0xd9b7('0x30')]=_[_0xd9b7('0x31')](_0x3c1edf[_0xd9b7('0x32')],qs['fields'](_0x4f5ee0[_0xd9b7('0x2e')][_0xd9b7('0x33')]));_0x40daf1[_0xd9b7('0x30')]=_0x40daf1[_0xd9b7('0x30')][_0xd9b7('0x34')]?_0x40daf1['attributes']:_0x3c1edf[_0xd9b7('0x32')];if(_0x4f5ee0[_0xd9b7('0x2e')][_0xd9b7('0x3f')]){_0x40daf1['include']=[{'all':!![]}];}_0x40daf1=_[_0xd9b7('0x3c')]({},_0x40daf1,_0x4f5ee0['options']);return db['Dynamics365Field'][_0xd9b7('0x45')](_0x40daf1)[_0xd9b7('0x23')](handleEntityNotFound(_0x393083,null))[_0xd9b7('0x23')](respondWithResult(_0x393083,null))[_0xd9b7('0x42')](handleError(_0x393083,null));};exports[_0xd9b7('0x46')]=function(_0x2ba127,_0x101b1f){return db[_0xd9b7('0x2b')][_0xd9b7('0x46')](_0x2ba127[_0xd9b7('0x47')],{})[_0xd9b7('0x23')](respondWithResult(_0x101b1f,0xc9))[_0xd9b7('0x42')](handleError(_0x101b1f,null));};exports[_0xd9b7('0x48')]=function(_0x22b75d,_0x961eb2){if(_0x22b75d[_0xd9b7('0x47')]['id']){delete _0x22b75d['body']['id'];}return db[_0xd9b7('0x2b')][_0xd9b7('0x45')]({'where':{'id':_0x22b75d[_0xd9b7('0x43')]['id']}})[_0xd9b7('0x23')](handleEntityNotFound(_0x961eb2,null))['then'](saveUpdates(_0x22b75d['body'],null))['then'](respondWithResult(_0x961eb2,null))[_0xd9b7('0x42')](handleError(_0x961eb2,null));};exports[_0xd9b7('0x49')]=function(_0x2e711f,_0x3a7c73){return db[_0xd9b7('0x2b')]['find']({'where':{'id':_0x2e711f[_0xd9b7('0x43')]['id']}})[_0xd9b7('0x23')](handleEntityNotFound(_0x3a7c73,null))[_0xd9b7('0x23')](removeEntity(_0x3a7c73,null))['catch'](handleError(_0x3a7c73,null));};
\ No newline at end of file
index a9674e4..0dd2453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa89=['rimraf','../../config/environment','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','FieldId','util','../../config/logger','api','request-promise','path'];(function(_0x3d5e90,_0x5f308e){var _0x589758=function(_0x1b07be){while(--_0x1b07be){_0x3d5e90['push'](_0x3d5e90['shift']());}};_0x589758(++_0x5f308e);}(_0xaa89,0xe5));var _0x9aa8=function(_0x2f48cd,_0x46a75a){_0x2f48cd=_0x2f48cd-0x0;var _0x193ae2=_0xaa89[_0x2f48cd];return _0x193ae2;};'use strict';var _=require('lodash');var util=require(_0x9aa8('0x0'));var logger=require(_0x9aa8('0x1'))(_0x9aa8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9aa8('0x3'));var fs=require('fs');var path=require(_0x9aa8('0x4'));var rimraf=require(_0x9aa8('0x5'));var config=require(_0x9aa8('0x6'));var attributes=require('./intDynamics365Field.attributes');module[_0x9aa8('0x7')]=function(_0x8e69a4,_0x584d71){return _0x8e69a4[_0x9aa8('0x8')](_0x9aa8('0x9'),attributes,{'tableName':_0x9aa8('0xa'),'paranoid':![],'indexes':[{'name':_0x9aa8('0xb'),'fields':['idField',_0x9aa8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb6c=['define','dynamics365_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports'];(function(_0x137d00,_0x4febb0){var _0x373bac=function(_0x52d7f9){while(--_0x52d7f9){_0x137d00['push'](_0x137d00['shift']());}};_0x373bac(++_0x4febb0);}(_0xeb6c,0x17d));var _0xceb6=function(_0x411fbb,_0x50ea49){_0x411fbb=_0x411fbb-0x0;var _0x50cc51=_0xeb6c[_0x411fbb];return _0x50cc51;};'use strict';var _=require(_0xceb6('0x0'));var util=require(_0xceb6('0x1'));var logger=require(_0xceb6('0x2'))(_0xceb6('0x3'));var moment=require(_0xceb6('0x4'));var BPromise=require(_0xceb6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xceb6('0x6'));var rimraf=require(_0xceb6('0x7'));var config=require(_0xceb6('0x8'));var attributes=require(_0xceb6('0x9'));module[_0xceb6('0xa')]=function(_0x4ef0e8,_0x45818b){return _0x4ef0e8[_0xceb6('0xb')]('Dynamics365Field',attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xceb6('0xc'),'fields':[_0xceb6('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a9d9e80..fc5f653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x274d=['rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Field,\x20%s,\x20%s','message','result','util','moment','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x274d,0x177));var _0xd274=function(_0x475fbc,_0x353015){_0x475fbc=_0x475fbc-0x0;var _0x1741cb=_0x274d[_0x475fbc];return _0x1741cb;};'use strict';var _=require('lodash');var util=require(_0xd274('0x0'));var moment=require(_0xd274('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd274('0x2'))['db'];var utils=require(_0xd274('0x3'));var logger=require(_0xd274('0x4'))(_0xd274('0x5'));var config=require(_0xd274('0x6'));var jayson=require(_0xd274('0x7'));var client=jayson[_0xd274('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14fbeb,_0x535f86,_0x375868){return new BPromise(function(_0xf00304,_0x44200f){return client[_0xd274('0x9')](_0x14fbeb,_0x375868)[_0xd274('0xa')](function(_0x4e7f3d){logger[_0xd274('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x535f86,_0xd274('0xc'));logger[_0xd274('0xd')](_0xd274('0xe'),_0x535f86,_0xd274('0xc'),JSON['stringify'](_0x4e7f3d));if(_0x4e7f3d[_0xd274('0xf')]){if(_0x4e7f3d['error'][_0xd274('0x10')]===0x1f4){logger[_0xd274('0xf')](_0xd274('0x11'),_0x535f86,_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);return _0x44200f(_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);}logger[_0xd274('0xf')](_0xd274('0x11'),_0x535f86,_0x4e7f3d[_0xd274('0xf')][_0xd274('0x12')]);return _0xf00304(_0x4e7f3d[_0xd274('0xf')]['message']);}else{logger[_0xd274('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x535f86,_0xd274('0xc'));_0xf00304(_0x4e7f3d[_0xd274('0x13')]['message']);}})['catch'](function(_0x4f76c9){logger['error'](_0xd274('0x11'),_0x535f86,_0x4f76c9);_0x44200f(_0x4f76c9);});});}
\ No newline at end of file
+var _0x6d54=['lodash','util','bluebird','randomstring','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch'];(function(_0x53d288,_0x304072){var _0x4626dc=function(_0x33ebf8){while(--_0x33ebf8){_0x53d288['push'](_0x53d288['shift']());}};_0x4626dc(++_0x304072);}(_0x6d54,0xab));var _0x46d5=function(_0x475a39,_0x5eab52){_0x475a39=_0x475a39-0x0;var _0x194426=_0x6d54[_0x475a39];return _0x194426;};'use strict';var _=require(_0x46d5('0x0'));var util=require(_0x46d5('0x1'));var moment=require('moment');var BPromise=require(_0x46d5('0x2'));var rs=require(_0x46d5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x46d5('0x4'));var config=require(_0x46d5('0x5'));var jayson=require(_0x46d5('0x6'));var client=jayson['client'][_0x46d5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x31d921,_0x4c4aa5,_0xc831bb){return new BPromise(function(_0x34fadd,_0x5339c6){return client[_0x46d5('0x8')](_0x31d921,_0xc831bb)[_0x46d5('0x9')](function(_0xdbfbbd){logger[_0x46d5('0xa')](_0x46d5('0xb'),_0x4c4aa5,_0x46d5('0xc'));logger[_0x46d5('0xd')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x4c4aa5,_0x46d5('0xc'),JSON[_0x46d5('0xe')](_0xdbfbbd));if(_0xdbfbbd[_0x46d5('0xf')]){if(_0xdbfbbd[_0x46d5('0xf')]['code']===0x1f4){logger['error'](_0x46d5('0xb'),_0x4c4aa5,_0xdbfbbd['error'][_0x46d5('0x10')]);return _0x5339c6(_0xdbfbbd[_0x46d5('0xf')][_0x46d5('0x10')]);}logger[_0x46d5('0xf')](_0x46d5('0xb'),_0x4c4aa5,_0xdbfbbd[_0x46d5('0xf')][_0x46d5('0x10')]);return _0x34fadd(_0xdbfbbd[_0x46d5('0xf')][_0x46d5('0x10')]);}else{logger[_0x46d5('0xa')](_0x46d5('0xb'),_0x4c4aa5,_0x46d5('0xc'));_0x34fadd(_0xdbfbbd[_0x46d5('0x11')][_0x46d5('0x10')]);}})[_0x46d5('0x12')](function(_0x1afd7e){logger[_0x46d5('0xf')](_0x46d5('0xb'),_0x4c4aa5,_0x1afd7e);_0x5339c6(_0x1afd7e);});});}
\ No newline at end of file
index 70dcd44..f1e9685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4e6=['exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','destroy'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xa4e6,0xf3));var _0x6a4e=function(_0x245547,_0x37c166){_0x245547=_0x245547-0x0;var _0x3e19cc=_0xa4e6[_0x245547];return _0x3e19cc;};'use strict';var multer=require('multer');var util=require(_0x6a4e('0x0'));var path=require(_0x6a4e('0x1'));var timeout=require(_0x6a4e('0x2'));var express=require(_0x6a4e('0x3'));var router=express[_0x6a4e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6a4e('0x5'));var interaction=require(_0x6a4e('0x6'));var config=require(_0x6a4e('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x6a4e('0x8')]('/',auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xa')]);router[_0x6a4e('0x8')](_0x6a4e('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x6a4e('0x8')](_0x6a4e('0xc'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xd')]);router[_0x6a4e('0x8')](_0x6a4e('0xe'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0xf')]);router[_0x6a4e('0x10')]('/',auth['isAuthenticated'](),controller[_0x6a4e('0x11')]);router[_0x6a4e('0x10')](_0x6a4e('0xc'),auth[_0x6a4e('0x9')](),controller['addConfiguration']);router[_0x6a4e('0x12')](_0x6a4e('0xb'),auth[_0x6a4e('0x9')](),controller[_0x6a4e('0x13')]);router['delete'](_0x6a4e('0xb'),auth['isAuthenticated'](),controller[_0x6a4e('0x14')]);module[_0x6a4e('0x15')]=router;
\ No newline at end of file
+var _0x79ed=['./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x492c96,_0x7a347d){var _0x39d4c1=function(_0x19470c){while(--_0x19470c){_0x492c96['push'](_0x492c96['shift']());}};_0x39d4c1(++_0x7a347d);}(_0x79ed,0xd9));var _0xd79e=function(_0x54257,_0x36064e){_0x54257=_0x54257-0x0;var _0x49b45b=_0x79ed[_0x54257];return _0x49b45b;};'use strict';var multer=require(_0xd79e('0x0'));var util=require(_0xd79e('0x1'));var path=require(_0xd79e('0x2'));var timeout=require(_0xd79e('0x3'));var express=require('express');var router=express[_0xd79e('0x4')]();var fs_extra=require(_0xd79e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd79e('0x6'));var config=require(_0xd79e('0x7'));var controller=require(_0xd79e('0x8'));router[_0xd79e('0x9')]('/',auth[_0xd79e('0xa')](),controller[_0xd79e('0xb')]);router[_0xd79e('0x9')](_0xd79e('0xc'),auth[_0xd79e('0xa')](),controller[_0xd79e('0xd')]);router['get'](_0xd79e('0xe'),auth[_0xd79e('0xa')](),controller[_0xd79e('0xf')]);router[_0xd79e('0x9')](_0xd79e('0x10'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x11')]);router['post']('/',auth[_0xd79e('0xa')](),controller[_0xd79e('0x12')]);router[_0xd79e('0x13')](_0xd79e('0xe'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x14')]);router[_0xd79e('0x15')](_0xd79e('0xc'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x16')]);router['delete'](_0xd79e('0xc'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x17')]);module[_0xd79e('0x18')]=router;
\ No newline at end of file
index 1b16c17..0aae3c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['username','remoteUri','sequelize','STRING'];(function(_0x4c6373,_0x47cb5d){var _0x8ed848=function(_0x23d513){while(--_0x23d513){_0x4c6373['push'](_0x4c6373['shift']());}};_0x8ed848(++_0x47cb5d);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x1f514c,_0x1f8907){_0x1f514c=_0x1f514c-0x0;var _0x4f7d10=_0xdd4f[_0x1f514c];return _0x4f7d10;};'use strict';var Sequelize=require(_0xfdd4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x3')},'serverUrl':{'type':Sequelize[_0xfdd4('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xd943=['exports','STRING','username','remoteUri','sequelize'];(function(_0xa5bbd6,_0x3ed88c){var _0x4a1bed=function(_0x233c4a){while(--_0x233c4a){_0xa5bbd6['push'](_0xa5bbd6['shift']());}};_0x4a1bed(++_0x3ed88c);}(_0xd943,0x15d));var _0x3d94=function(_0x59c9c5,_0x30bc35){_0x59c9c5=_0x59c9c5-0x0;var _0x2b48cc=_0xd943[_0x59c9c5];return _0x2b48cc;};'use strict';var Sequelize=require(_0x3d94('0x0'));module[_0x3d94('0x1')]={'name':{'type':Sequelize[_0x3d94('0x2')]},'description':{'type':Sequelize[_0x3d94('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x3d94('0x3')},'apiKey':{'type':Sequelize[_0x3d94('0x2')]},'remoteUri':{'type':Sequelize[_0x3d94('0x2')],'unique':_0x3d94('0x4')},'serverUrl':{'type':Sequelize[_0x3d94('0x2')],'allowNull':![]}};
\ No newline at end of file
index 9430402..638e4e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de7=['format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','apiKey','toString','requester','subject','agent','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','then','error','stack','name','send','index','map','FreshdeskAccount','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','body','destroy','getConfigurations','findOne','FreshdeskConfiguration','order','length','addConfiguration','AccountId','getSubjects','channel','Descriptions','FreshdeskField','Subjects','getFields','slice','substring','lastIndexOf','GET'];(function(_0x5c18ef,_0xa2e81d){var _0x33789d=function(_0x5761a9){while(--_0x5761a9){_0x5c18ef['push'](_0x5c18ef['shift']());}};_0x33789d(++_0xa2e81d);}(_0x4de7,0x1f3));var _0x74de=function(_0x45e6fa,_0x398be9){_0x45e6fa=_0x45e6fa-0x0;var _0x4fec7c=_0x4de7[_0x45e6fa];return _0x4fec7c;};'use strict';var emlformat=require(_0x74de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x74de('0x1'));var jsonpatch=require(_0x74de('0x2'));var rp=require(_0x74de('0x3'));var moment=require(_0x74de('0x4'));var BPromise=require(_0x74de('0x5'));var Mustache=require('mustache');var util=require(_0x74de('0x6'));var path=require(_0x74de('0x7'));var sox=require(_0x74de('0x8'));var csv=require('to-csv');var ejs=require(_0x74de('0x9'));var fs=require('fs');var fs_extra=require(_0x74de('0xa'));var _=require(_0x74de('0xb'));var squel=require(_0x74de('0xc'));var crypto=require(_0x74de('0xd'));var jsforce=require(_0x74de('0xe'));var deskjs=require(_0x74de('0xf'));var toCsv=require(_0x74de('0x10'));var querystring=require(_0x74de('0x11'));var Papa=require(_0x74de('0x12'));var Redis=require('ioredis');var authService=require(_0x74de('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x74de('0x14'));var hardwareService=require(_0x74de('0x15'));var logger=require('../../config/logger')(_0x74de('0x16'));var utils=require(_0x74de('0x17'));var config=require(_0x74de('0x18'));var licenseUtil=require(_0x74de('0x19'));var db=require(_0x74de('0x1a'))['db'];var integrations=require(_0x74de('0x1b'));function respondWithStatusCode(_0x4ee614,_0x26f408){_0x26f408=_0x26f408||0xcc;return function(_0x4e66c0){if(_0x4e66c0){return _0x4ee614[_0x74de('0x1c')](_0x26f408);}return _0x4ee614[_0x74de('0x1d')](_0x26f408)[_0x74de('0x1e')]();};}function respondWithResult(_0x4ecd59,_0x35da91){_0x35da91=_0x35da91||0xc8;return function(_0x20b6f7){if(_0x20b6f7){return _0x4ecd59['status'](_0x35da91)[_0x74de('0x1f')](_0x20b6f7);}};}function respondWithFilteredResult(_0x3d3fee,_0x3dff38){return function(_0x431d99){if(_0x431d99){var _0x380c9c=typeof _0x3dff38[_0x74de('0x20')]===_0x74de('0x21')&&typeof _0x3dff38['limit']==='undefined';var _0x5c4732=_0x431d99[_0x74de('0x22')];var _0x20d524=_0x380c9c?0x0:_0x3dff38[_0x74de('0x20')];var _0x1e49a0=_0x380c9c?_0x431d99[_0x74de('0x22')]:_0x3dff38['offset']+_0x3dff38[_0x74de('0x23')];var _0x31872f;if(_0x1e49a0>=_0x5c4732){_0x1e49a0=_0x5c4732;_0x31872f=0xc8;}else{_0x31872f=0xce;}_0x3d3fee[_0x74de('0x1d')](_0x31872f);return _0x3d3fee['set'](_0x74de('0x24'),_0x20d524+'-'+_0x1e49a0+'/'+_0x5c4732)[_0x74de('0x1f')](_0x431d99);}return null;};}function patchUpdates(_0x439578){return function(_0x9ba11){try{jsonpatch['apply'](_0x9ba11,_0x439578,!![]);}catch(_0x52d825){return BPromise['reject'](_0x52d825);}return _0x9ba11['save']();};}function saveUpdates(_0x13c314,_0x3f7a12){return function(_0x57edf1){if(_0x57edf1){return _0x57edf1['update'](_0x13c314)[_0x74de('0x25')](function(_0x4032e1){return _0x4032e1;});}return null;};}function removeEntity(_0x44cdc4,_0x512047){return function(_0x5ad04f){if(_0x5ad04f){return _0x5ad04f['destroy']()['then'](function(){_0x44cdc4[_0x74de('0x1d')](0xcc)[_0x74de('0x1e')]();});}};}function handleEntityNotFound(_0x36b4f8,_0x3806e9){return function(_0x4f6029){if(!_0x4f6029){_0x36b4f8[_0x74de('0x1c')](0x194);}return _0x4f6029;};}function handleError(_0x37626b,_0x3bb092){_0x3bb092=_0x3bb092||0x1f4;return function(_0x10203a){logger[_0x74de('0x26')](_0x10203a[_0x74de('0x27')]);if(_0x10203a[_0x74de('0x28')]){delete _0x10203a[_0x74de('0x28')];}_0x37626b[_0x74de('0x1d')](_0x3bb092)[_0x74de('0x29')](_0x10203a);};}exports[_0x74de('0x2a')]=function(_0x542e96,_0x547d39){var _0x1d3504={},_0x15fe1b={},_0x31147f={'count':0x0,'rows':[]};var _0x5766e2=_[_0x74de('0x2b')](db[_0x74de('0x2c')]['rawAttributes'],function(_0x1cd58b){return{'name':_0x1cd58b[_0x74de('0x2d')],'type':_0x1cd58b[_0x74de('0x2e')]['key']};});_0x15fe1b[_0x74de('0x2f')]=_[_0x74de('0x2b')](_0x5766e2,_0x74de('0x28'));_0x15fe1b[_0x74de('0x30')]=_[_0x74de('0x31')](_0x542e96[_0x74de('0x30')]);_0x15fe1b[_0x74de('0x32')]=_['intersection'](_0x15fe1b['model'],_0x15fe1b[_0x74de('0x30')]);_0x1d3504[_0x74de('0x33')]=_[_0x74de('0x34')](_0x15fe1b[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x542e96[_0x74de('0x30')][_0x74de('0x35')]));_0x1d3504['attributes']=_0x1d3504[_0x74de('0x33')]['length']?_0x1d3504['attributes']:_0x15fe1b[_0x74de('0x2f')];if(!_0x542e96['query'][_0x74de('0x36')](_0x74de('0x37'))){_0x1d3504[_0x74de('0x23')]=qs['limit'](_0x542e96[_0x74de('0x30')][_0x74de('0x23')]);_0x1d3504['offset']=qs['offset'](_0x542e96[_0x74de('0x30')][_0x74de('0x20')]);}_0x1d3504['order']=qs[_0x74de('0x38')](_0x542e96[_0x74de('0x30')]['sort']);_0x1d3504[_0x74de('0x39')]=qs[_0x74de('0x32')](_[_0x74de('0x3a')](_0x542e96[_0x74de('0x30')],_0x15fe1b['filters']),_0x5766e2);if(_0x542e96[_0x74de('0x30')]['filter']){_0x1d3504[_0x74de('0x39')]=_[_0x74de('0x3b')](_0x1d3504['where'],{'$or':_[_0x74de('0x2b')](_0x5766e2,function(_0x563d3b){if(_0x563d3b['type']!==_0x74de('0x3c')){var _0x1edcac={};_0x1edcac[_0x563d3b['name']]={'$like':'%'+_0x542e96[_0x74de('0x30')][_0x74de('0x3d')]+'%'};return _0x1edcac;}})});}_0x1d3504=_[_0x74de('0x3b')]({},_0x1d3504,_0x542e96['options']);var _0x595fca={'where':_0x1d3504[_0x74de('0x39')]};return db[_0x74de('0x2c')][_0x74de('0x22')](_0x595fca)[_0x74de('0x25')](function(_0x1315c3){_0x31147f[_0x74de('0x22')]=_0x1315c3;if(_0x542e96[_0x74de('0x30')][_0x74de('0x3e')]){_0x1d3504[_0x74de('0x3f')]=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x1d3504);})['then'](function(_0x3c0574){_0x31147f[_0x74de('0x40')]=_0x3c0574;return _0x31147f;})[_0x74de('0x25')](respondWithFilteredResult(_0x547d39,_0x1d3504))[_0x74de('0x41')](handleError(_0x547d39,null));};exports[_0x74de('0x42')]=function(_0x472581,_0x1160c3){var _0x46812e={'raw':![],'where':{'id':_0x472581[_0x74de('0x43')]['id']}},_0x8261b6={};_0x8261b6[_0x74de('0x2f')]=_[_0x74de('0x31')](db['FreshdeskAccount'][_0x74de('0x44')]);_0x8261b6[_0x74de('0x30')]=_[_0x74de('0x31')](_0x472581[_0x74de('0x30')]);_0x8261b6[_0x74de('0x32')]=_[_0x74de('0x34')](_0x8261b6[_0x74de('0x2f')],_0x8261b6[_0x74de('0x30')]);_0x46812e[_0x74de('0x33')]=_['intersection'](_0x8261b6[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x472581[_0x74de('0x30')][_0x74de('0x35')]));_0x46812e[_0x74de('0x33')]=_0x46812e[_0x74de('0x33')]['length']?_0x46812e['attributes']:_0x8261b6['model'];if(_0x472581[_0x74de('0x30')][_0x74de('0x3e')]){_0x46812e['include']=[{'all':!![]}];}_0x46812e=_['merge']({},_0x46812e,_0x472581[_0x74de('0x45')]);return db['FreshdeskAccount'][_0x74de('0x46')](_0x46812e)[_0x74de('0x25')](handleEntityNotFound(_0x1160c3,null))[_0x74de('0x25')](respondWithResult(_0x1160c3,null))['catch'](handleError(_0x1160c3,null));};exports[_0x74de('0x47')]=function(_0x132ed9,_0x193012){return db[_0x74de('0x2c')][_0x74de('0x47')](_0x132ed9[_0x74de('0x48')],{})[_0x74de('0x25')](respondWithResult(_0x193012,0xc9))[_0x74de('0x41')](handleError(_0x193012,null));};exports['update']=function(_0x364043,_0x1f105a){if(_0x364043['body']['id']){delete _0x364043[_0x74de('0x48')]['id'];}return db[_0x74de('0x2c')][_0x74de('0x46')]({'where':{'id':_0x364043[_0x74de('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f105a,null))['then'](saveUpdates(_0x364043['body'],null))[_0x74de('0x25')](respondWithResult(_0x1f105a,null))[_0x74de('0x41')](handleError(_0x1f105a,null));};exports[_0x74de('0x49')]=function(_0xc245c6,_0x2ef9c3){return db[_0x74de('0x2c')][_0x74de('0x46')]({'where':{'id':_0xc245c6[_0x74de('0x43')]['id']}})[_0x74de('0x25')](handleEntityNotFound(_0x2ef9c3,null))['then'](removeEntity(_0x2ef9c3,null))[_0x74de('0x41')](handleError(_0x2ef9c3,null));};exports[_0x74de('0x4a')]=function(_0x86b4cd,_0x425f02,_0x1a0561){var _0x45223b={};var _0x1c028f={};var _0xc7f622;var _0x1706d2;return db[_0x74de('0x2c')][_0x74de('0x4b')]({'where':{'id':_0x86b4cd['params']['id']}})['then'](handleEntityNotFound(_0x425f02,null))[_0x74de('0x25')](function(_0x45a03c){if(_0x45a03c){_0xc7f622=_0x45a03c;_0x1c028f['model']=_[_0x74de('0x31')](db[_0x74de('0x4c')][_0x74de('0x44')]);_0x1c028f[_0x74de('0x30')]=_[_0x74de('0x31')](_0x86b4cd[_0x74de('0x30')]);_0x1c028f[_0x74de('0x32')]=_[_0x74de('0x34')](_0x1c028f[_0x74de('0x2f')],_0x1c028f[_0x74de('0x30')]);_0x45223b[_0x74de('0x33')]=_[_0x74de('0x34')](_0x1c028f[_0x74de('0x2f')],qs[_0x74de('0x35')](_0x86b4cd[_0x74de('0x30')]['fields']));_0x45223b[_0x74de('0x33')]=_0x45223b[_0x74de('0x33')]['length']?_0x45223b[_0x74de('0x33')]:_0x1c028f[_0x74de('0x2f')];_0x45223b[_0x74de('0x4d')]=qs[_0x74de('0x38')](_0x86b4cd[_0x74de('0x30')]['sort']);_0x45223b[_0x74de('0x39')]=qs[_0x74de('0x32')](_[_0x74de('0x3a')](_0x86b4cd[_0x74de('0x30')],_0x1c028f[_0x74de('0x32')]));if(_0x86b4cd['query'][_0x74de('0x3d')]){_0x45223b[_0x74de('0x39')]=_[_0x74de('0x3b')](_0x45223b['where'],{'$or':_[_0x74de('0x2b')](_0x45223b['attributes'],function(_0x55cd35){var _0x7dcaae={};_0x7dcaae[_0x55cd35]={'$like':'%'+_0x86b4cd[_0x74de('0x30')][_0x74de('0x3d')]+'%'};return _0x7dcaae;})});}_0x45223b=_['merge']({},_0x45223b,_0x86b4cd[_0x74de('0x45')]);return _0xc7f622[_0x74de('0x4a')](_0x45223b);}})[_0x74de('0x25')](function(_0x45f909){if(_0x45f909){_0x1706d2=_0x45f909[_0x74de('0x4e')];if(!_0x86b4cd['query'][_0x74de('0x36')](_0x74de('0x37'))){_0x45223b[_0x74de('0x23')]=qs['limit'](_0x86b4cd['query'][_0x74de('0x23')]);_0x45223b[_0x74de('0x20')]=qs[_0x74de('0x20')](_0x86b4cd['query'][_0x74de('0x20')]);}return _0xc7f622[_0x74de('0x4a')](_0x45223b);}})[_0x74de('0x25')](function(_0x5850bf){if(_0x5850bf){return _0x5850bf?{'count':_0x1706d2,'rows':_0x5850bf}:null;}})[_0x74de('0x25')](respondWithResult(_0x425f02,null))['catch'](handleError(_0x425f02,null));};exports[_0x74de('0x4f')]=function(_0x38c6a5,_0x130f51,_0x687183){if(_0x38c6a5[_0x74de('0x48')]['id']){delete _0x38c6a5[_0x74de('0x48')]['id'];}return db['FreshdeskAccount'][_0x74de('0x4b')]({'where':{'id':_0x38c6a5[_0x74de('0x43')]['id']}})['then'](handleEntityNotFound(_0x130f51,null))[_0x74de('0x25')](function(_0x2e2d6c){if(_0x2e2d6c){_0x38c6a5[_0x74de('0x48')][_0x74de('0x50')]=_0x2e2d6c['id'];_0x38c6a5[_0x74de('0x48')]['Subjects']=integrations[_0x74de('0x51')](_0x38c6a5[_0x74de('0x48')][_0x74de('0x52')],_0x38c6a5[_0x74de('0x48')][_0x74de('0x2e')]);_0x38c6a5[_0x74de('0x48')][_0x74de('0x53')]=integrations['getDescriptions'](_0x38c6a5['body'][_0x74de('0x52')],_0x38c6a5[_0x74de('0x48')][_0x74de('0x2e')]);return db[_0x74de('0x4c')][_0x74de('0x47')](_0x38c6a5[_0x74de('0x48')],{'include':[{'model':db[_0x74de('0x54')],'as':_0x74de('0x55')},{'model':db[_0x74de('0x54')],'as':'Descriptions'}]});}return null;})[_0x74de('0x25')](respondWithResult(_0x130f51,null))[_0x74de('0x41')](handleError(_0x130f51,null));};exports[_0x74de('0x56')]=function(_0x119609,_0x159357,_0x5b060f){var _0x4f84cd='';return db[_0x74de('0x2c')][_0x74de('0x4b')]({'where':{'id':_0x119609[_0x74de('0x43')]['id']},'attributes':['id','remoteUri','apiKey']})[_0x74de('0x25')](handleEntityNotFound(_0x159357,null))['then'](function(_0x37e12e){if(_0x37e12e){_0x4f84cd=_0x37e12e['remoteUri'];var _0x561dc4=_0x4f84cd[_0x74de('0x57')](-0x1);if(_0x561dc4==='/'){_0x4f84cd=_0x4f84cd[_0x74de('0x58')](0x0,_0x4f84cd[_0x74de('0x59')](_0x561dc4));}return rp({'method':_0x74de('0x5a'),'uri':util[_0x74de('0x5b')](_0x74de('0x5c'),_0x4f84cd,_0x74de('0x5d')),'headers':{'Authorization':util['format'](_0x74de('0x5e'),new Buffer(util[_0x74de('0x5b')](_0x74de('0x5f'),_0x37e12e[_0x74de('0x60')]))[_0x74de('0x61')]('base64'))},'json':!![]});}})[_0x74de('0x25')](function(_0x3f84fc){if(_0x3f84fc){var _0x2fb49f=[_0x74de('0x62'),_0x74de('0x63'),_0x74de('0x64'),_0x74de('0x65'),_0x74de('0x1d'),_0x74de('0x66'),_0x74de('0x67'),_0x74de('0x68'),_0x74de('0x69'),_0x74de('0x67'),_0x74de('0x6a')];_[_0x74de('0x6b')](_0x3f84fc,function(_0x41e14e){return _0x2fb49f[_0x74de('0x6c')](_0x41e14e[_0x74de('0x28')])||!_0x41e14e[_0x74de('0x6d')]&&_0x41e14e[_0x74de('0x2e')]!==_0x74de('0x6e')&&_0x41e14e['type']!==_0x74de('0x6f');});return{'count':_0x3f84fc[_0x74de('0x4e')],'rows':_[_0x74de('0x2b')](_0x3f84fc,function(_0x53c646){return{'id':_0x53c646[_0x74de('0x28')],'name':_0x53c646[_0x74de('0x70')],'custom':!_0x53c646[_0x74de('0x6d')],'options':_0x53c646[_0x74de('0x71')]?_[_0x74de('0x2b')](_0x53c646['choices'],function(_0x5e20bf){return{'name':_['capitalize'](_0x5e20bf),'value':_0x5e20bf};}):[]};})};}})[_0x74de('0x25')](respondWithResult(_0x159357,null))['catch'](function(_0x4fb7bc){var _0x277427=_0x119609[_0x74de('0x30')][_0x74de('0x72')]?0x1f4:_0x4fb7bc[_0x74de('0x73')]||0x1f4;logger[_0x74de('0x26')](_0x74de('0x74'),_0x74de('0x56'),_0x277427,JSON['stringify'](_0x4fb7bc));delete _0x4fb7bc[_0x74de('0x28')];if(_0x277427===0x191){_0x277427=0x190;}_0x159357[_0x74de('0x1d')](_0x277427)['send'](_0x119609[_0x74de('0x30')]['test']?{'message':_0x74de('0x75'),'statusCode':_0x4fb7bc['statusCode']}:_0x4fb7bc);});};
\ No newline at end of file
+var _0x4e5c=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','then','error','stack','name','index','map','rawAttributes','fieldName','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','FreshdeskAccount','rows','catch','show','params','include','create','body','update','destroy','find','findOne','FreshdeskConfiguration','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','apiKey','slice','substring','lastIndexOf','format','%s/%s','api/v2/ticket_fields','toString','base64','subject','agent','priority','group','ticket_type','company','remove','default','custom_text','choices','test','statusCode','getFields','stringify','eml-format','zip-dir','request-promise','moment','bluebird','sox','to-csv'];(function(_0x216405,_0x2fcb49){var _0x20ca47=function(_0x113957){while(--_0x113957){_0x216405['push'](_0x216405['shift']());}};_0x20ca47(++_0x2fcb49);}(_0x4e5c,0x149));var _0xc4e5=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x4e5c[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0xc4e5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4e5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc4e5('0x2'));var moment=require(_0xc4e5('0x3'));var BPromise=require(_0xc4e5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc4e5('0x5'));var csv=require(_0xc4e5('0x6'));var ejs=require(_0xc4e5('0x7'));var fs=require('fs');var fs_extra=require(_0xc4e5('0x8'));var _=require(_0xc4e5('0x9'));var squel=require(_0xc4e5('0xa'));var crypto=require(_0xc4e5('0xb'));var jsforce=require(_0xc4e5('0xc'));var deskjs=require(_0xc4e5('0xd'));var toCsv=require(_0xc4e5('0x6'));var querystring=require(_0xc4e5('0xe'));var Papa=require(_0xc4e5('0xf'));var Redis=require('ioredis');var authService=require(_0xc4e5('0x10'));var qs=require(_0xc4e5('0x11'));var as=require(_0xc4e5('0x12'));var hardwareService=require(_0xc4e5('0x13'));var logger=require('../../config/logger')(_0xc4e5('0x14'));var utils=require(_0xc4e5('0x15'));var config=require(_0xc4e5('0x16'));var licenseUtil=require(_0xc4e5('0x17'));var db=require(_0xc4e5('0x18'))['db'];var integrations=require(_0xc4e5('0x19'));function respondWithStatusCode(_0x3fa318,_0x54c5a7){_0x54c5a7=_0x54c5a7||0xcc;return function(_0x5f00d8){if(_0x5f00d8){return _0x3fa318[_0xc4e5('0x1a')](_0x54c5a7);}return _0x3fa318['status'](_0x54c5a7)[_0xc4e5('0x1b')]();};}function respondWithResult(_0x7cd002,_0x303037){_0x303037=_0x303037||0xc8;return function(_0x2404a7){if(_0x2404a7){return _0x7cd002['status'](_0x303037)[_0xc4e5('0x1c')](_0x2404a7);}};}function respondWithFilteredResult(_0x528de4,_0x338c37){return function(_0x3beb59){if(_0x3beb59){var _0x2937d9=typeof _0x338c37[_0xc4e5('0x1d')]===_0xc4e5('0x1e')&&typeof _0x338c37[_0xc4e5('0x1f')]===_0xc4e5('0x1e');var _0x1156ce=_0x3beb59[_0xc4e5('0x20')];var _0x57042c=_0x2937d9?0x0:_0x338c37[_0xc4e5('0x1d')];var _0x154486=_0x2937d9?_0x3beb59['count']:_0x338c37[_0xc4e5('0x1d')]+_0x338c37[_0xc4e5('0x1f')];var _0x5003e5;if(_0x154486>=_0x1156ce){_0x154486=_0x1156ce;_0x5003e5=0xc8;}else{_0x5003e5=0xce;}_0x528de4[_0xc4e5('0x21')](_0x5003e5);return _0x528de4['set']('Content-Range',_0x57042c+'-'+_0x154486+'/'+_0x1156ce)[_0xc4e5('0x1c')](_0x3beb59);}return null;};}function patchUpdates(_0x7dbe6d){return function(_0x4933b7){try{jsonpatch[_0xc4e5('0x22')](_0x4933b7,_0x7dbe6d,!![]);}catch(_0x5be68b){return BPromise[_0xc4e5('0x23')](_0x5be68b);}return _0x4933b7[_0xc4e5('0x24')]();};}function saveUpdates(_0x505078,_0x546949){return function(_0x45abe3){if(_0x45abe3){return _0x45abe3['update'](_0x505078)[_0xc4e5('0x25')](function(_0x41467f){return _0x41467f;});}return null;};}function removeEntity(_0x4bb973,_0x4ed1ff){return function(_0x44299a){if(_0x44299a){return _0x44299a['destroy']()[_0xc4e5('0x25')](function(){_0x4bb973['status'](0xcc)[_0xc4e5('0x1b')]();});}};}function handleEntityNotFound(_0x234b31,_0x53f7cd){return function(_0x5f48fc){if(!_0x5f48fc){_0x234b31['sendStatus'](0x194);}return _0x5f48fc;};}function handleError(_0x23889c,_0x183ec7){_0x183ec7=_0x183ec7||0x1f4;return function(_0x143e66){logger[_0xc4e5('0x26')](_0x143e66[_0xc4e5('0x27')]);if(_0x143e66[_0xc4e5('0x28')]){delete _0x143e66[_0xc4e5('0x28')];}_0x23889c[_0xc4e5('0x21')](_0x183ec7)['send'](_0x143e66);};}exports[_0xc4e5('0x29')]=function(_0x2ad4be,_0x261b88){var _0x23383b={},_0x94dcd0={},_0x4805b2={'count':0x0,'rows':[]};var _0x205f41=_[_0xc4e5('0x2a')](db['FreshdeskAccount'][_0xc4e5('0x2b')],function(_0x598212){return{'name':_0x598212[_0xc4e5('0x2c')],'type':_0x598212['type'][_0xc4e5('0x2d')]};});_0x94dcd0['model']=_[_0xc4e5('0x2a')](_0x205f41,'name');_0x94dcd0['query']=_[_0xc4e5('0x2e')](_0x2ad4be[_0xc4e5('0x2f')]);_0x94dcd0[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x94dcd0['model'],_0x94dcd0[_0xc4e5('0x2f')]);_0x23383b[_0xc4e5('0x32')]=_[_0xc4e5('0x31')](_0x94dcd0[_0xc4e5('0x33')],qs['fields'](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x34')]));_0x23383b[_0xc4e5('0x32')]=_0x23383b[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x23383b['attributes']:_0x94dcd0[_0xc4e5('0x33')];if(!_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x36')]('nolimit')){_0x23383b[_0xc4e5('0x1f')]=qs[_0xc4e5('0x1f')](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x1f')]);_0x23383b['offset']=qs['offset'](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x1d')]);}_0x23383b[_0xc4e5('0x37')]=qs[_0xc4e5('0x38')](_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x38')]);_0x23383b[_0xc4e5('0x39')]=qs[_0xc4e5('0x30')](_[_0xc4e5('0x3a')](_0x2ad4be['query'],_0x94dcd0['filters']),_0x205f41);if(_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x3b')]){_0x23383b[_0xc4e5('0x39')]=_[_0xc4e5('0x3c')](_0x23383b[_0xc4e5('0x39')],{'$or':_['map'](_0x205f41,function(_0x2a77dd){if(_0x2a77dd[_0xc4e5('0x3d')]!==_0xc4e5('0x3e')){var _0x2c754b={};_0x2c754b[_0x2a77dd[_0xc4e5('0x28')]]={'$like':'%'+_0x2ad4be['query'][_0xc4e5('0x3b')]+'%'};return _0x2c754b;}})});}_0x23383b=_[_0xc4e5('0x3c')]({},_0x23383b,_0x2ad4be[_0xc4e5('0x3f')]);var _0x35f940={'where':_0x23383b['where']};return db['FreshdeskAccount']['count'](_0x35f940)[_0xc4e5('0x25')](function(_0x5292a4){_0x4805b2[_0xc4e5('0x20')]=_0x5292a4;if(_0x2ad4be[_0xc4e5('0x2f')][_0xc4e5('0x40')]){_0x23383b['include']=[{'all':!![]}];}return db[_0xc4e5('0x41')]['findAll'](_0x23383b);})[_0xc4e5('0x25')](function(_0x46184f){_0x4805b2[_0xc4e5('0x42')]=_0x46184f;return _0x4805b2;})['then'](respondWithFilteredResult(_0x261b88,_0x23383b))[_0xc4e5('0x43')](handleError(_0x261b88,null));};exports[_0xc4e5('0x44')]=function(_0x1117e1,_0xba5c47){var _0x2ea4a8={'raw':![],'where':{'id':_0x1117e1[_0xc4e5('0x45')]['id']}},_0x409a3f={};_0x409a3f[_0xc4e5('0x33')]=_['keys'](db[_0xc4e5('0x41')][_0xc4e5('0x2b')]);_0x409a3f[_0xc4e5('0x2f')]=_[_0xc4e5('0x2e')](_0x1117e1[_0xc4e5('0x2f')]);_0x409a3f[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x409a3f[_0xc4e5('0x33')],_0x409a3f[_0xc4e5('0x2f')]);_0x2ea4a8[_0xc4e5('0x32')]=_[_0xc4e5('0x31')](_0x409a3f[_0xc4e5('0x33')],qs['fields'](_0x1117e1['query'][_0xc4e5('0x34')]));_0x2ea4a8[_0xc4e5('0x32')]=_0x2ea4a8[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x2ea4a8['attributes']:_0x409a3f[_0xc4e5('0x33')];if(_0x1117e1['query']['includeAll']){_0x2ea4a8[_0xc4e5('0x46')]=[{'all':!![]}];}_0x2ea4a8=_[_0xc4e5('0x3c')]({},_0x2ea4a8,_0x1117e1['options']);return db[_0xc4e5('0x41')]['find'](_0x2ea4a8)[_0xc4e5('0x25')](handleEntityNotFound(_0xba5c47,null))[_0xc4e5('0x25')](respondWithResult(_0xba5c47,null))[_0xc4e5('0x43')](handleError(_0xba5c47,null));};exports[_0xc4e5('0x47')]=function(_0xd73e5c,_0x347d7c){return db[_0xc4e5('0x41')][_0xc4e5('0x47')](_0xd73e5c[_0xc4e5('0x48')],{})['then'](respondWithResult(_0x347d7c,0xc9))[_0xc4e5('0x43')](handleError(_0x347d7c,null));};exports[_0xc4e5('0x49')]=function(_0x452a5e,_0x14614b){if(_0x452a5e[_0xc4e5('0x48')]['id']){delete _0x452a5e[_0xc4e5('0x48')]['id'];}return db[_0xc4e5('0x41')]['find']({'where':{'id':_0x452a5e[_0xc4e5('0x45')]['id']}})['then'](handleEntityNotFound(_0x14614b,null))[_0xc4e5('0x25')](saveUpdates(_0x452a5e[_0xc4e5('0x48')],null))['then'](respondWithResult(_0x14614b,null))[_0xc4e5('0x43')](handleError(_0x14614b,null));};exports[_0xc4e5('0x4a')]=function(_0x5c536c,_0x51e1d6){return db[_0xc4e5('0x41')][_0xc4e5('0x4b')]({'where':{'id':_0x5c536c[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0x51e1d6,null))['then'](removeEntity(_0x51e1d6,null))[_0xc4e5('0x43')](handleError(_0x51e1d6,null));};exports['getConfigurations']=function(_0x15fb9c,_0x466da5,_0x235d25){var _0x37bed4={};var _0x42c752={};var _0x4a7244;var _0x2c067c;return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x15fb9c[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0x466da5,null))[_0xc4e5('0x25')](function(_0x465e27){if(_0x465e27){_0x4a7244=_0x465e27;_0x42c752['model']=_[_0xc4e5('0x2e')](db[_0xc4e5('0x4d')][_0xc4e5('0x2b')]);_0x42c752[_0xc4e5('0x2f')]=_[_0xc4e5('0x2e')](_0x15fb9c[_0xc4e5('0x2f')]);_0x42c752[_0xc4e5('0x30')]=_[_0xc4e5('0x31')](_0x42c752[_0xc4e5('0x33')],_0x42c752[_0xc4e5('0x2f')]);_0x37bed4[_0xc4e5('0x32')]=_['intersection'](_0x42c752['model'],qs[_0xc4e5('0x34')](_0x15fb9c['query']['fields']));_0x37bed4[_0xc4e5('0x32')]=_0x37bed4[_0xc4e5('0x32')][_0xc4e5('0x35')]?_0x37bed4['attributes']:_0x42c752[_0xc4e5('0x33')];_0x37bed4[_0xc4e5('0x37')]=qs[_0xc4e5('0x38')](_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x38')]);_0x37bed4['where']=qs[_0xc4e5('0x30')](_[_0xc4e5('0x3a')](_0x15fb9c[_0xc4e5('0x2f')],_0x42c752[_0xc4e5('0x30')]));if(_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x3b')]){_0x37bed4[_0xc4e5('0x39')]=_[_0xc4e5('0x3c')](_0x37bed4[_0xc4e5('0x39')],{'$or':_[_0xc4e5('0x2a')](_0x37bed4[_0xc4e5('0x32')],function(_0x237c7f){var _0x66c974={};_0x66c974[_0x237c7f]={'$like':'%'+_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x3b')]+'%'};return _0x66c974;})});}_0x37bed4=_[_0xc4e5('0x3c')]({},_0x37bed4,_0x15fb9c[_0xc4e5('0x3f')]);return _0x4a7244[_0xc4e5('0x4e')](_0x37bed4);}})[_0xc4e5('0x25')](function(_0x505aae){if(_0x505aae){_0x2c067c=_0x505aae['length'];if(!_0x15fb9c[_0xc4e5('0x2f')]['hasOwnProperty'](_0xc4e5('0x4f'))){_0x37bed4[_0xc4e5('0x1f')]=qs[_0xc4e5('0x1f')](_0x15fb9c[_0xc4e5('0x2f')][_0xc4e5('0x1f')]);_0x37bed4[_0xc4e5('0x1d')]=qs[_0xc4e5('0x1d')](_0x15fb9c['query'][_0xc4e5('0x1d')]);}return _0x4a7244['getConfigurations'](_0x37bed4);}})[_0xc4e5('0x25')](function(_0x5dbeee){if(_0x5dbeee){return _0x5dbeee?{'count':_0x2c067c,'rows':_0x5dbeee}:null;}})[_0xc4e5('0x25')](respondWithResult(_0x466da5,null))['catch'](handleError(_0x466da5,null));};exports[_0xc4e5('0x50')]=function(_0x23a43e,_0xf776e0,_0x4b5a6a){if(_0x23a43e[_0xc4e5('0x48')]['id']){delete _0x23a43e['body']['id'];}return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x23a43e[_0xc4e5('0x45')]['id']}})[_0xc4e5('0x25')](handleEntityNotFound(_0xf776e0,null))[_0xc4e5('0x25')](function(_0x2d528b){if(_0x2d528b){_0x23a43e['body'][_0xc4e5('0x51')]=_0x2d528b['id'];_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x52')]=integrations[_0xc4e5('0x53')](_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x54')],_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x3d')]);_0x23a43e[_0xc4e5('0x48')][_0xc4e5('0x55')]=integrations[_0xc4e5('0x56')](_0x23a43e['body'][_0xc4e5('0x54')],_0x23a43e[_0xc4e5('0x48')]['type']);return db[_0xc4e5('0x4d')][_0xc4e5('0x47')](_0x23a43e[_0xc4e5('0x48')],{'include':[{'model':db[_0xc4e5('0x57')],'as':_0xc4e5('0x52')},{'model':db[_0xc4e5('0x57')],'as':'Descriptions'}]});}return null;})[_0xc4e5('0x25')](respondWithResult(_0xf776e0,null))[_0xc4e5('0x43')](handleError(_0xf776e0,null));};exports['getFields']=function(_0x37da48,_0x267886,_0x5d953b){var _0x4bc266='';return db[_0xc4e5('0x41')][_0xc4e5('0x4c')]({'where':{'id':_0x37da48[_0xc4e5('0x45')]['id']},'attributes':['id',_0xc4e5('0x58'),_0xc4e5('0x59')]})[_0xc4e5('0x25')](handleEntityNotFound(_0x267886,null))['then'](function(_0x5ba867){if(_0x5ba867){_0x4bc266=_0x5ba867[_0xc4e5('0x58')];var _0xc14634=_0x4bc266[_0xc4e5('0x5a')](-0x1);if(_0xc14634==='/'){_0x4bc266=_0x4bc266[_0xc4e5('0x5b')](0x0,_0x4bc266[_0xc4e5('0x5c')](_0xc14634));}return rp({'method':'GET','uri':util[_0xc4e5('0x5d')](_0xc4e5('0x5e'),_0x4bc266,_0xc4e5('0x5f')),'headers':{'Authorization':util[_0xc4e5('0x5d')]('Basic\x20%s',new Buffer(util[_0xc4e5('0x5d')]('%s:X',_0x5ba867[_0xc4e5('0x59')]))[_0xc4e5('0x60')](_0xc4e5('0x61')))},'json':!![]});}})['then'](function(_0x52e2e5){if(_0x52e2e5){var _0x5ad018=['requester',_0xc4e5('0x62'),_0xc4e5('0x63'),'description','status',_0xc4e5('0x64'),_0xc4e5('0x65'),'source',_0xc4e5('0x66'),_0xc4e5('0x65'),_0xc4e5('0x67')];_[_0xc4e5('0x68')](_0x52e2e5,function(_0x255e96){return _0x5ad018['includes'](_0x255e96[_0xc4e5('0x28')])||!_0x255e96[_0xc4e5('0x69')]&&_0x255e96[_0xc4e5('0x3d')]!==_0xc4e5('0x6a')&&_0x255e96['type']!=='custom_dropdown';});return{'count':_0x52e2e5[_0xc4e5('0x35')],'rows':_[_0xc4e5('0x2a')](_0x52e2e5,function(_0xec7a48){return{'id':_0xec7a48['name'],'name':_0xec7a48['label'],'custom':!_0xec7a48[_0xc4e5('0x69')],'options':_0xec7a48[_0xc4e5('0x6b')]?_['map'](_0xec7a48[_0xc4e5('0x6b')],function(_0x44367f){return{'name':_['capitalize'](_0x44367f),'value':_0x44367f};}):[]};})};}})['then'](respondWithResult(_0x267886,null))[_0xc4e5('0x43')](function(_0x213aa7){var _0x3492e6=_0x37da48[_0xc4e5('0x2f')][_0xc4e5('0x6c')]?0x1f4:_0x213aa7[_0xc4e5('0x6d')]||0x1f4;logger[_0xc4e5('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0xc4e5('0x6e'),_0x3492e6,JSON[_0xc4e5('0x6f')](_0x213aa7));delete _0x213aa7['name'];if(_0x3492e6===0x191){_0x3492e6=0x190;}_0x267886[_0xc4e5('0x21')](_0x3492e6)['send'](_0x37da48[_0xc4e5('0x2f')][_0xc4e5('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x213aa7[_0xc4e5('0x6d')]}:_0x213aa7);});};
\ No newline at end of file
index 664ae88..d91cdeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516a=['../../components/integrations/configuration','exports','int_freshdesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0x46d087,_0x476dff){var _0x48b413=function(_0x44cbbf){while(--_0x44cbbf){_0x46d087['push'](_0x46d087['shift']());}};_0x48b413(++_0x476dff);}(_0x516a,0x9f));var _0xa516=function(_0x47268e,_0x188a69){_0x47268e=_0x47268e-0x0;var _0x28c7a8=_0x516a[_0x47268e];return _0x28c7a8;};'use strict';var _=require('lodash');var util=require(_0xa516('0x0'));var logger=require(_0xa516('0x1'))(_0xa516('0x2'));var moment=require(_0xa516('0x3'));var BPromise=require(_0xa516('0x4'));var rp=require(_0xa516('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa516('0x6'));var config=require(_0xa516('0x7'));var attributes=require(_0xa516('0x8'));var integrations=require(_0xa516('0x9'));module[_0xa516('0xa')]=function(_0x299193,_0x3a4f58){return _0x299193['define']('FreshdeskAccount',attributes,{'tableName':_0xa516('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x195e=['FreshdeskAccount','util','../../config/logger','api','bluebird','path','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x13f92d,_0x8e69d7){var _0x51f31b=function(_0x178202){while(--_0x178202){_0x13f92d['push'](_0x13f92d['shift']());}};_0x51f31b(++_0x8e69d7);}(_0x195e,0x182));var _0xe195=function(_0x36006e,_0x2f7334){_0x36006e=_0x36006e-0x0;var _0x23323e=_0x195e[_0x36006e];return _0x23323e;};'use strict';var _=require('lodash');var util=require(_0xe195('0x0'));var logger=require(_0xe195('0x1'))(_0xe195('0x2'));var moment=require('moment');var BPromise=require(_0xe195('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe195('0x4'));var rimraf=require('rimraf');var config=require(_0xe195('0x5'));var attributes=require(_0xe195('0x6'));var integrations=require(_0xe195('0x7'));module[_0xe195('0x8')]=function(_0x1cbf85,_0x354cfb){return _0x1cbf85[_0xe195('0x9')](_0xe195('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0dfe929..d85d954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb4=['request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowFreshdeskAccount','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x1fe7e8,_0x48a4e2){var _0x2b1175=function(_0x2d216a){while(--_0x2d216a){_0x1fe7e8['push'](_0x1fe7e8['shift']());}};_0x2b1175(++_0x48a4e2);}(_0x3cb4,0xc7));var _0x43cb=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x3cb4[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x43cb('0x0'));var util=require(_0x43cb('0x1'));var moment=require(_0x43cb('0x2'));var BPromise=require('bluebird');var rs=require(_0x43cb('0x3'));var fs=require('fs');var Redis=require(_0x43cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x43cb('0x5'));var logger=require(_0x43cb('0x6'))(_0x43cb('0x7'));var config=require(_0x43cb('0x8'));var jayson=require(_0x43cb('0x9'));var client=jayson['client'][_0x43cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x268305,_0x3d6e71,_0x35c23c){return new BPromise(function(_0xe605a9,_0x2eec8e){return client[_0x43cb('0xb')](_0x268305,_0x35c23c)[_0x43cb('0xc')](function(_0x10f271){logger[_0x43cb('0xd')](_0x43cb('0xe'),_0x3d6e71,_0x43cb('0xf'));logger[_0x43cb('0x10')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x3d6e71,_0x43cb('0xf'),JSON[_0x43cb('0x11')](_0x10f271));if(_0x10f271[_0x43cb('0x12')]){if(_0x10f271[_0x43cb('0x12')][_0x43cb('0x13')]===0x1f4){logger['error'](_0x43cb('0xe'),_0x3d6e71,_0x10f271['error'][_0x43cb('0x14')]);return _0x2eec8e(_0x10f271['error'][_0x43cb('0x14')]);}logger[_0x43cb('0x12')](_0x43cb('0xe'),_0x3d6e71,_0x10f271['error']['message']);return _0xe605a9(_0x10f271['error']['message']);}else{logger[_0x43cb('0xd')](_0x43cb('0xe'),_0x3d6e71,'request\x20sent');_0xe605a9(_0x10f271[_0x43cb('0x15')][_0x43cb('0x14')]);}})[_0x43cb('0x16')](function(_0x11356b){logger[_0x43cb('0x12')](_0x43cb('0xe'),_0x3d6e71,_0x11356b);_0x2eec8e(_0x11356b);});});}exports[_0x43cb('0x17')]=function(_0x47e37a){var _0x2f8215=this;return new Promise(function(_0x2deb04,_0xa96a03){return db[_0x43cb('0x18')][_0x43cb('0x19')]({'raw':_0x47e37a['options']?_0x47e37a[_0x43cb('0x1a')][_0x43cb('0x1b')]===undefined?!![]:![]:!![],'where':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1c')]||null:null,'attributes':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1d')]||null:null,'limit':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a[_0x43cb('0x1a')][_0x43cb('0x1e')]||null:null,'include':_0x47e37a[_0x43cb('0x1a')]?_0x47e37a['options'][_0x43cb('0x1f')]?_[_0x43cb('0x20')](_0x47e37a['options'][_0x43cb('0x1f')],function(_0x4a9318){return{'model':db[_0x4a9318['model']],'as':_0x4a9318['as'],'attributes':_0x4a9318['attributes'],'include':_0x4a9318['include']?_[_0x43cb('0x20')](_0x4a9318['include'],function(_0x315e07){return{'model':db[_0x315e07[_0x43cb('0x21')]],'as':_0x315e07['as'],'attributes':_0x315e07[_0x43cb('0x1d')],'include':_0x315e07[_0x43cb('0x1f')]?_['map'](_0x315e07['include'],function(_0x3f19e0){return{'model':db[_0x3f19e0[_0x43cb('0x21')]],'as':_0x3f19e0['as'],'attributes':_0x3f19e0[_0x43cb('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x43cb('0xc')](function(_0x259cd2){logger[_0x43cb('0xd')](_0x43cb('0x17'),_0x47e37a);logger['debug'](_0x43cb('0x17'),_0x47e37a,JSON[_0x43cb('0x11')](_0x259cd2));_0x2deb04(_0x259cd2);})[_0x43cb('0x16')](function(_0xf11e60){logger[_0x43cb('0x12')]('GetFreshdeskAccount',_0xf11e60['message'],_0x47e37a);_0xa96a03(_0x2f8215[_0x43cb('0x12')](0x1f4,_0xf11e60['message']));});});};exports[_0x43cb('0x22')]=function(_0x30155e){var _0x19a4b9=this;return new Promise(function(_0x242068,_0x25d296){return db['FreshdeskAccount']['find']({'raw':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1b')]===undefined?!![]:![]:!![],'where':_0x30155e['options']?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1c')]||null:null,'attributes':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')][_0x43cb('0x1d')]||null:null,'include':_0x30155e[_0x43cb('0x1a')]?_0x30155e[_0x43cb('0x1a')]['include']?_[_0x43cb('0x20')](_0x30155e[_0x43cb('0x1a')]['include'],function(_0x103418){return{'model':db[_0x103418['model']],'as':_0x103418['as'],'attributes':_0x103418[_0x43cb('0x1d')],'include':_0x103418[_0x43cb('0x1f')]?_['map'](_0x103418[_0x43cb('0x1f')],function(_0x3b9a19){return{'model':db[_0x3b9a19[_0x43cb('0x21')]],'as':_0x3b9a19['as'],'attributes':_0x3b9a19[_0x43cb('0x1d')],'include':_0x3b9a19[_0x43cb('0x1f')]?_[_0x43cb('0x20')](_0x3b9a19[_0x43cb('0x1f')],function(_0x3d51dd){return{'model':db[_0x3d51dd[_0x43cb('0x21')]],'as':_0x3d51dd['as'],'attributes':_0x3d51dd[_0x43cb('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x43cb('0xc')](function(_0x51aecf){logger['info'](_0x43cb('0x22'),_0x30155e);logger['debug']('ShowFreshdeskAccount',_0x30155e,JSON[_0x43cb('0x11')](_0x51aecf));_0x242068(_0x51aecf);})[_0x43cb('0x16')](function(_0x3c145d){logger[_0x43cb('0x12')](_0x43cb('0x22'),_0x3c145d[_0x43cb('0x14')],_0x30155e);_0x25d296(_0x19a4b9[_0x43cb('0x12')](0x1f4,_0x3c145d[_0x43cb('0x14')]));});});};
\ No newline at end of file
+var _0x5347=['http','request','then','info','request\x20sent','debug','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','catch','GetFreshdeskAccount','options','where','limit','include','map','model','attributes','ShowFreshdeskAccount','FreshdeskAccount','find','raw','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x25cb87,_0xc2d352){var _0x3a7537=function(_0x53516a){while(--_0x53516a){_0x25cb87['push'](_0x25cb87['shift']());}};_0x3a7537(++_0xc2d352);}(_0x5347,0x19a));var _0x7534=function(_0x2bf888,_0x374f0b){_0x2bf888=_0x2bf888-0x0;var _0x3038d6=_0x5347[_0x2bf888];return _0x3038d6;};'use strict';var _=require('lodash');var util=require(_0x7534('0x0'));var moment=require(_0x7534('0x1'));var BPromise=require(_0x7534('0x2'));var rs=require(_0x7534('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7534('0x4'))['db'];var utils=require(_0x7534('0x5'));var logger=require(_0x7534('0x6'))('rpc');var config=require(_0x7534('0x7'));var jayson=require(_0x7534('0x8'));var client=jayson[_0x7534('0x9')][_0x7534('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5961cb,_0x4a9fa5,_0x552042){return new BPromise(function(_0x1ed061,_0x18e782){return client[_0x7534('0xb')](_0x5961cb,_0x552042)[_0x7534('0xc')](function(_0x2e50ad){logger[_0x7534('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x4a9fa5,_0x7534('0xe'));logger[_0x7534('0xf')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x4a9fa5,_0x7534('0xe'),JSON[_0x7534('0x10')](_0x2e50ad));if(_0x2e50ad[_0x7534('0x11')]){if(_0x2e50ad[_0x7534('0x11')][_0x7534('0x12')]===0x1f4){logger[_0x7534('0x11')](_0x7534('0x13'),_0x4a9fa5,_0x2e50ad[_0x7534('0x11')]['message']);return _0x18e782(_0x2e50ad[_0x7534('0x11')][_0x7534('0x14')]);}logger[_0x7534('0x11')](_0x7534('0x13'),_0x4a9fa5,_0x2e50ad[_0x7534('0x11')][_0x7534('0x14')]);return _0x1ed061(_0x2e50ad[_0x7534('0x11')][_0x7534('0x14')]);}else{logger[_0x7534('0xd')](_0x7534('0x13'),_0x4a9fa5,_0x7534('0xe'));_0x1ed061(_0x2e50ad[_0x7534('0x15')][_0x7534('0x14')]);}})[_0x7534('0x16')](function(_0x3e8997){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x4a9fa5,_0x3e8997);_0x18e782(_0x3e8997);});});}exports[_0x7534('0x17')]=function(_0x196c2b){var _0xb3a945=this;return new Promise(function(_0xdc4a9f,_0x3fb00d){return db['FreshdeskAccount']['findAll']({'raw':_0x196c2b[_0x7534('0x18')]?_0x196c2b[_0x7534('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x196c2b['options']?_0x196c2b[_0x7534('0x18')][_0x7534('0x19')]||null:null,'attributes':_0x196c2b['options']?_0x196c2b['options']['attributes']||null:null,'limit':_0x196c2b[_0x7534('0x18')]?_0x196c2b[_0x7534('0x18')][_0x7534('0x1a')]||null:null,'include':_0x196c2b[_0x7534('0x18')]?_0x196c2b['options'][_0x7534('0x1b')]?_[_0x7534('0x1c')](_0x196c2b[_0x7534('0x18')]['include'],function(_0x3942e9){return{'model':db[_0x3942e9[_0x7534('0x1d')]],'as':_0x3942e9['as'],'attributes':_0x3942e9[_0x7534('0x1e')],'include':_0x3942e9['include']?_[_0x7534('0x1c')](_0x3942e9[_0x7534('0x1b')],function(_0x519f4d){return{'model':db[_0x519f4d[_0x7534('0x1d')]],'as':_0x519f4d['as'],'attributes':_0x519f4d[_0x7534('0x1e')],'include':_0x519f4d[_0x7534('0x1b')]?_[_0x7534('0x1c')](_0x519f4d[_0x7534('0x1b')],function(_0x15ae74){return{'model':db[_0x15ae74[_0x7534('0x1d')]],'as':_0x15ae74['as'],'attributes':_0x15ae74[_0x7534('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x7534('0xc')](function(_0x34c7f3){logger['info'](_0x7534('0x17'),_0x196c2b);logger[_0x7534('0xf')](_0x7534('0x17'),_0x196c2b,JSON[_0x7534('0x10')](_0x34c7f3));_0xdc4a9f(_0x34c7f3);})['catch'](function(_0x559605){logger['error'](_0x7534('0x17'),_0x559605[_0x7534('0x14')],_0x196c2b);_0x3fb00d(_0xb3a945[_0x7534('0x11')](0x1f4,_0x559605[_0x7534('0x14')]));});});};exports[_0x7534('0x1f')]=function(_0x42f1bb){var _0x575305=this;return new Promise(function(_0x21fd17,_0x34a70b){return db[_0x7534('0x20')][_0x7534('0x21')]({'raw':_0x42f1bb['options']?_0x42f1bb[_0x7534('0x18')][_0x7534('0x22')]===undefined?!![]:![]:!![],'where':_0x42f1bb['options']?_0x42f1bb['options'][_0x7534('0x19')]||null:null,'attributes':_0x42f1bb[_0x7534('0x18')]?_0x42f1bb['options'][_0x7534('0x1e')]||null:null,'include':_0x42f1bb[_0x7534('0x18')]?_0x42f1bb[_0x7534('0x18')][_0x7534('0x1b')]?_['map'](_0x42f1bb[_0x7534('0x18')][_0x7534('0x1b')],function(_0x17a3dc){return{'model':db[_0x17a3dc['model']],'as':_0x17a3dc['as'],'attributes':_0x17a3dc[_0x7534('0x1e')],'include':_0x17a3dc[_0x7534('0x1b')]?_[_0x7534('0x1c')](_0x17a3dc[_0x7534('0x1b')],function(_0x1d44cd){return{'model':db[_0x1d44cd['model']],'as':_0x1d44cd['as'],'attributes':_0x1d44cd[_0x7534('0x1e')],'include':_0x1d44cd[_0x7534('0x1b')]?_['map'](_0x1d44cd[_0x7534('0x1b')],function(_0x1aff6a){return{'model':db[_0x1aff6a[_0x7534('0x1d')]],'as':_0x1aff6a['as'],'attributes':_0x1aff6a[_0x7534('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x52638f){logger['info'](_0x7534('0x1f'),_0x42f1bb);logger[_0x7534('0xf')](_0x7534('0x1f'),_0x42f1bb,JSON[_0x7534('0x10')](_0x52638f));_0x21fd17(_0x52638f);})[_0x7534('0x16')](function(_0x522196){logger[_0x7534('0x11')]('ShowFreshdeskAccount',_0x522196[_0x7534('0x14')],_0x42f1bb);_0x34a70b(_0x575305[_0x7534('0x11')](0x1f4,_0x522196['message']));});});};
\ No newline at end of file
index b3c20e2..7457e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee67=['path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','destroy','exports'];(function(_0x139e66,_0x443447){var _0x4b8334=function(_0xc6d275){while(--_0xc6d275){_0x139e66['push'](_0x139e66['shift']());}};_0x4b8334(++_0x443447);}(_0xee67,0x1b0));var _0x7ee6=function(_0x4b3d56,_0x22922f){_0x4b3d56=_0x4b3d56-0x0;var _0x56d135=_0xee67[_0x4b3d56];return _0x56d135;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7ee6('0x0'));var timeout=require(_0x7ee6('0x1'));var express=require(_0x7ee6('0x2'));var router=express[_0x7ee6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7ee6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7ee6('0x5'));var controller=require(_0x7ee6('0x6'));router[_0x7ee6('0x7')]('/',auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x9')]);router[_0x7ee6('0x7')](_0x7ee6('0xa'),auth[_0x7ee6('0x8')](),controller['show']);router[_0x7ee6('0x7')](_0x7ee6('0xb'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0xc')]);router[_0x7ee6('0x7')](_0x7ee6('0xd'),auth['isAuthenticated'](),controller[_0x7ee6('0xe')]);router['get'](_0x7ee6('0xf'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x10')]);router['get'](_0x7ee6('0x11'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x12')]);router[_0x7ee6('0x13')]('/',auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x14')]);router['post'](_0x7ee6('0x11'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x15')]);router[_0x7ee6('0x16')](_0x7ee6('0xa'),auth[_0x7ee6('0x8')](),controller[_0x7ee6('0x17')]);router[_0x7ee6('0x18')](_0x7ee6('0xa'),auth['isAuthenticated'](),controller[_0x7ee6('0x19')]);module[_0x7ee6('0x1a')]=router;
\ No newline at end of file
+var _0xbcb9=['path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects','getDescriptions','getTags','post','/:id/tags','setTags','put','update','delete','destroy','exports','multer'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xbcb9,0x144));var _0x9bcb=function(_0x3502ac,_0x1a0ad4){_0x3502ac=_0x3502ac-0x0;var _0x3a2814=_0xbcb9[_0x3502ac];return _0x3a2814;};'use strict';var multer=require(_0x9bcb('0x0'));var util=require('util');var path=require(_0x9bcb('0x1'));var timeout=require(_0x9bcb('0x2'));var express=require(_0x9bcb('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9bcb('0x4'));var interaction=require(_0x9bcb('0x5'));var config=require(_0x9bcb('0x6'));var controller=require(_0x9bcb('0x7'));router[_0x9bcb('0x8')]('/',auth[_0x9bcb('0x9')](),controller[_0x9bcb('0xa')]);router[_0x9bcb('0x8')](_0x9bcb('0xb'),auth[_0x9bcb('0x9')](),controller['show']);router['get'](_0x9bcb('0xc'),auth[_0x9bcb('0x9')](),controller[_0x9bcb('0xd')]);router[_0x9bcb('0x8')](_0x9bcb('0xe'),auth[_0x9bcb('0x9')](),controller['getSubjects']);router[_0x9bcb('0x8')]('/:id/descriptions',auth[_0x9bcb('0x9')](),controller[_0x9bcb('0xf')]);router[_0x9bcb('0x8')]('/:id/tags',auth[_0x9bcb('0x9')](),controller[_0x9bcb('0x10')]);router[_0x9bcb('0x11')]('/',auth[_0x9bcb('0x9')](),controller['create']);router[_0x9bcb('0x11')](_0x9bcb('0x12'),auth[_0x9bcb('0x9')](),controller[_0x9bcb('0x13')]);router[_0x9bcb('0x14')](_0x9bcb('0xb'),auth[_0x9bcb('0x9')](),controller[_0x9bcb('0x15')]);router[_0x9bcb('0x16')](_0x9bcb('0xb'),auth[_0x9bcb('0x9')](),controller[_0x9bcb('0x17')]);module[_0x9bcb('0x18')]=router;
\ No newline at end of file
index ffb468c..9c1cfc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x887c=['exports','STRING'];(function(_0x1accfa,_0x307461){var _0x2cc292=function(_0x3fd7ca){while(--_0x3fd7ca){_0x1accfa['push'](_0x1accfa['shift']());}};_0x2cc292(++_0x307461);}(_0x887c,0x1da));var _0xc887=function(_0x2d60e9,_0x2c196e){_0x2d60e9=_0x2d60e9-0x0;var _0x2cf5db=_0x887c[_0x2d60e9];return _0x2cf5db;};'use strict';var Sequelize=require('sequelize');module[_0xc887('0x0')]={'name':{'type':Sequelize[_0xc887('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2e3b=['exports'];(function(_0x4bf5c5,_0x470a59){var _0x52e01b=function(_0x462894){while(--_0x462894){_0x4bf5c5['push'](_0x4bf5c5['shift']());}};_0x52e01b(++_0x470a59);}(_0x2e3b,0xab));var _0xb2e3=function(_0x5d1a02,_0x24764f){_0x5d1a02=_0x5d1a02-0x0;var _0x40da7d=_0x2e3b[_0x5d1a02];return _0x40da7d;};'use strict';var Sequelize=require('sequelize');module[_0xb2e3('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8fecf7f..ab67580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa00=['stack','name','send','index','map','FreshdeskConfiguration','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','find','create','body','getFields','FreshdeskField','rawAttributes','getSubjects','findOne','order','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','then','destroy','error'];(function(_0x42c90d,_0x32a715){var _0x869d41=function(_0x2c3b6e){while(--_0x2c3b6e){_0x42c90d['push'](_0x42c90d['shift']());}};_0x869d41(++_0x32a715);}(_0xaa00,0x1c7));var _0x0aa0=function(_0x5305d1,_0x4aaf34){_0x5305d1=_0x5305d1-0x0;var _0x1a0a07=_0xaa00[_0x5305d1];return _0x1a0a07;};'use strict';var emlformat=require(_0x0aa0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0aa0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0aa0('0x2'));var BPromise=require(_0x0aa0('0x3'));var Mustache=require(_0x0aa0('0x4'));var util=require('util');var path=require(_0x0aa0('0x5'));var sox=require(_0x0aa0('0x6'));var csv=require(_0x0aa0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0aa0('0x8'));var _=require(_0x0aa0('0x9'));var squel=require(_0x0aa0('0xa'));var crypto=require(_0x0aa0('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0aa0('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0aa0('0xd'));var Redis=require(_0x0aa0('0xe'));var authService=require(_0x0aa0('0xf'));var qs=require(_0x0aa0('0x10'));var as=require(_0x0aa0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0aa0('0x12'))(_0x0aa0('0x13'));var utils=require('../../config/utils');var config=require(_0x0aa0('0x14'));var licenseUtil=require(_0x0aa0('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbd9900,_0x3dd540){_0x3dd540=_0x3dd540||0xcc;return function(_0x23378c){if(_0x23378c){return _0xbd9900[_0x0aa0('0x16')](_0x3dd540);}return _0xbd9900['status'](_0x3dd540)[_0x0aa0('0x17')]();};}function respondWithResult(_0x4a3152,_0x1c5c08){_0x1c5c08=_0x1c5c08||0xc8;return function(_0x39227a){if(_0x39227a){return _0x4a3152[_0x0aa0('0x18')](_0x1c5c08)[_0x0aa0('0x19')](_0x39227a);}};}function respondWithFilteredResult(_0x4031b7,_0x5d6654){return function(_0x19df7f){if(_0x19df7f){var _0x4956d2=typeof _0x5d6654[_0x0aa0('0x1a')]==='undefined'&&typeof _0x5d6654[_0x0aa0('0x1b')]===_0x0aa0('0x1c');var _0x25844c=_0x19df7f[_0x0aa0('0x1d')];var _0x87d8b8=_0x4956d2?0x0:_0x5d6654[_0x0aa0('0x1a')];var _0xf9501a=_0x4956d2?_0x19df7f['count']:_0x5d6654[_0x0aa0('0x1a')]+_0x5d6654[_0x0aa0('0x1b')];var _0x474e6d;if(_0xf9501a>=_0x25844c){_0xf9501a=_0x25844c;_0x474e6d=0xc8;}else{_0x474e6d=0xce;}_0x4031b7[_0x0aa0('0x18')](_0x474e6d);return _0x4031b7[_0x0aa0('0x1e')](_0x0aa0('0x1f'),_0x87d8b8+'-'+_0xf9501a+'/'+_0x25844c)[_0x0aa0('0x19')](_0x19df7f);}return null;};}function patchUpdates(_0xccb42){return function(_0x44927f){try{jsonpatch[_0x0aa0('0x20')](_0x44927f,_0xccb42,!![]);}catch(_0x726cc7){return BPromise['reject'](_0x726cc7);}return _0x44927f['save']();};}function saveUpdates(_0x493f21,_0x2b0d99){return function(_0x34b8d4){if(_0x34b8d4){return _0x34b8d4[_0x0aa0('0x21')](_0x493f21)[_0x0aa0('0x22')](function(_0xf9018a){return _0xf9018a;});}return null;};}function removeEntity(_0x2741cf,_0x543e6c){return function(_0x2860af){if(_0x2860af){return _0x2860af[_0x0aa0('0x23')]()[_0x0aa0('0x22')](function(){_0x2741cf[_0x0aa0('0x18')](0xcc)[_0x0aa0('0x17')]();});}};}function handleEntityNotFound(_0x54f5a9,_0x59e7ec){return function(_0x4466fd){if(!_0x4466fd){_0x54f5a9[_0x0aa0('0x16')](0x194);}return _0x4466fd;};}function handleError(_0x3e872b,_0xe5ae27){_0xe5ae27=_0xe5ae27||0x1f4;return function(_0x26f9ac){logger[_0x0aa0('0x24')](_0x26f9ac[_0x0aa0('0x25')]);if(_0x26f9ac[_0x0aa0('0x26')]){delete _0x26f9ac[_0x0aa0('0x26')];}_0x3e872b[_0x0aa0('0x18')](_0xe5ae27)[_0x0aa0('0x27')](_0x26f9ac);};}exports[_0x0aa0('0x28')]=function(_0x8a11e2,_0x482219){var _0x42fd5f={},_0x51e656={},_0x44e306={'count':0x0,'rows':[]};var _0x267fc6=_[_0x0aa0('0x29')](db[_0x0aa0('0x2a')]['rawAttributes'],function(_0x5e7435){return{'name':_0x5e7435[_0x0aa0('0x2b')],'type':_0x5e7435[_0x0aa0('0x2c')][_0x0aa0('0x2d')]};});_0x51e656[_0x0aa0('0x2e')]=_['map'](_0x267fc6,_0x0aa0('0x26'));_0x51e656['query']=_['keys'](_0x8a11e2[_0x0aa0('0x2f')]);_0x51e656['filters']=_[_0x0aa0('0x30')](_0x51e656[_0x0aa0('0x2e')],_0x51e656[_0x0aa0('0x2f')]);_0x42fd5f['attributes']=_['intersection'](_0x51e656[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x42fd5f[_0x0aa0('0x32')]=_0x42fd5f[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x42fd5f['attributes']:_0x51e656[_0x0aa0('0x2e')];if(!_0x8a11e2['query'][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0x42fd5f[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x8a11e2['query']['limit']);_0x42fd5f[_0x0aa0('0x1a')]=qs['offset'](_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}_0x42fd5f['order']=qs[_0x0aa0('0x36')](_0x8a11e2['query']['sort']);_0x42fd5f['where']=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x8a11e2['query'],_0x51e656[_0x0aa0('0x37')]),_0x267fc6);if(_0x8a11e2[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x42fd5f[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0x42fd5f['where'],{'$or':_[_0x0aa0('0x29')](_0x267fc6,function(_0x400924){if(_0x400924[_0x0aa0('0x2c')]!==_0x0aa0('0x3c')){var _0x266d05={};_0x266d05[_0x400924[_0x0aa0('0x26')]]={'$like':'%'+_0x8a11e2['query']['filter']+'%'};return _0x266d05;}})});}_0x42fd5f=_[_0x0aa0('0x3b')]({},_0x42fd5f,_0x8a11e2[_0x0aa0('0x3d')]);var _0x42f39e={'where':_0x42fd5f[_0x0aa0('0x3a')]};return db['FreshdeskConfiguration']['count'](_0x42f39e)[_0x0aa0('0x22')](function(_0x1d7fce){_0x44e306['count']=_0x1d7fce;if(_0x8a11e2[_0x0aa0('0x2f')]['includeAll']){_0x42fd5f[_0x0aa0('0x3e')]=[{'all':!![]}];}return db[_0x0aa0('0x2a')][_0x0aa0('0x3f')](_0x42fd5f);})['then'](function(_0x1c5385){_0x44e306['rows']=_0x1c5385;return _0x44e306;})['then'](respondWithFilteredResult(_0x482219,_0x42fd5f))[_0x0aa0('0x40')](handleError(_0x482219,null));};exports[_0x0aa0('0x41')]=function(_0x40d0df,_0x1ac483){var _0x5eaff6={'raw':![],'where':{'id':_0x40d0df[_0x0aa0('0x42')]['id']}},_0x4e804d={};_0x4e804d['model']=_[_0x0aa0('0x43')](db['FreshdeskConfiguration']['rawAttributes']);_0x4e804d[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x40d0df['query']);_0x4e804d[_0x0aa0('0x37')]=_['intersection'](_0x4e804d['model'],_0x4e804d['query']);_0x5eaff6[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x4e804d[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x40d0df['query'][_0x0aa0('0x31')]));_0x5eaff6['attributes']=_0x5eaff6['attributes'][_0x0aa0('0x33')]?_0x5eaff6[_0x0aa0('0x32')]:_0x4e804d['model'];if(_0x40d0df['query']['includeAll']){_0x5eaff6[_0x0aa0('0x3e')]=[{'all':!![]}];}_0x5eaff6=_[_0x0aa0('0x3b')]({},_0x5eaff6,_0x40d0df[_0x0aa0('0x3d')]);return db[_0x0aa0('0x2a')][_0x0aa0('0x44')](_0x5eaff6)['then'](handleEntityNotFound(_0x1ac483,null))[_0x0aa0('0x22')](respondWithResult(_0x1ac483,null))[_0x0aa0('0x40')](handleError(_0x1ac483,null));};exports[_0x0aa0('0x45')]=function(_0x234af1,_0x4aa955){return db[_0x0aa0('0x2a')]['create'](_0x234af1['body'],{})[_0x0aa0('0x22')](respondWithResult(_0x4aa955,0xc9))[_0x0aa0('0x40')](handleError(_0x4aa955,null));};exports[_0x0aa0('0x21')]=function(_0x13a66d,_0x34ec7f){if(_0x13a66d[_0x0aa0('0x46')]['id']){delete _0x13a66d[_0x0aa0('0x46')]['id'];}return db[_0x0aa0('0x2a')]['find']({'where':{'id':_0x13a66d[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x34ec7f,null))['then'](saveUpdates(_0x13a66d[_0x0aa0('0x46')],null))[_0x0aa0('0x22')](respondWithResult(_0x34ec7f,null))['catch'](handleError(_0x34ec7f,null));};exports[_0x0aa0('0x23')]=function(_0xd63bc2,_0x51e713){return db[_0x0aa0('0x2a')][_0x0aa0('0x44')]({'where':{'id':_0xd63bc2[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x51e713,null))[_0x0aa0('0x22')](removeEntity(_0x51e713,null))[_0x0aa0('0x40')](handleError(_0x51e713,null));};exports[_0x0aa0('0x47')]=function(_0x4d9fa2,_0x2e6365,_0x1d58b4){var _0x5489a5={};var _0x291126={};var _0x1b8ae0;var _0x2f35c7;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x4d9fa2['params']['id']}})['then'](handleEntityNotFound(_0x2e6365,null))[_0x0aa0('0x22')](function(_0x515d55){if(_0x515d55){_0x1b8ae0=_0x515d55;_0x291126[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x291126[_0x0aa0('0x2f')]=_['keys'](_0x4d9fa2[_0x0aa0('0x2f')]);_0x291126[_0x0aa0('0x37')]=_[_0x0aa0('0x30')](_0x291126[_0x0aa0('0x2e')],_0x291126[_0x0aa0('0x2f')]);_0x5489a5[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x291126[_0x0aa0('0x2e')],qs['fields'](_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x5489a5[_0x0aa0('0x32')]=_0x5489a5[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x5489a5['attributes']:_0x291126[_0x0aa0('0x2e')];_0x5489a5['order']=qs['sort'](_0x4d9fa2[_0x0aa0('0x2f')]['sort']);_0x5489a5[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_['pick'](_0x4d9fa2['query'],_0x291126[_0x0aa0('0x37')]));if(_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x5489a5[_0x0aa0('0x3a')]=_['merge'](_0x5489a5[_0x0aa0('0x3a')],{'$or':_['map'](_0x5489a5[_0x0aa0('0x32')],function(_0x11310b){var _0x3eb6d9={};_0x3eb6d9[_0x11310b]={'$like':'%'+_0x4d9fa2['query'][_0x0aa0('0x39')]+'%'};return _0x3eb6d9;})});}_0x5489a5=_[_0x0aa0('0x3b')]({},_0x5489a5,_0x4d9fa2['options']);return _0x1b8ae0[_0x0aa0('0x47')](_0x5489a5);}})[_0x0aa0('0x22')](function(_0x367f3b){if(_0x367f3b){_0x2f35c7=_0x367f3b[_0x0aa0('0x33')];if(!_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x34')]('nolimit')){_0x5489a5['limit']=qs[_0x0aa0('0x1b')](_0x4d9fa2[_0x0aa0('0x2f')]['limit']);_0x5489a5['offset']=qs[_0x0aa0('0x1a')](_0x4d9fa2[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}return _0x1b8ae0[_0x0aa0('0x47')](_0x5489a5);}})[_0x0aa0('0x22')](function(_0xf375fa){if(_0xf375fa){return _0xf375fa?{'count':_0x2f35c7,'rows':_0xf375fa}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x2e6365,null))[_0x0aa0('0x40')](handleError(_0x2e6365,null));};exports[_0x0aa0('0x4a')]=function(_0x12a76e,_0x169212,_0x36f2c0){var _0x596e6a={};var _0x598f4e={};var _0x38d387;var _0x2a7055;return db[_0x0aa0('0x2a')][_0x0aa0('0x4b')]({'where':{'id':_0x12a76e[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x169212,null))['then'](function(_0x3ffc9a){if(_0x3ffc9a){_0x38d387=_0x3ffc9a;_0x598f4e[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x598f4e[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x12a76e['query']);_0x598f4e[_0x0aa0('0x37')]=_[_0x0aa0('0x30')](_0x598f4e[_0x0aa0('0x2e')],_0x598f4e['query']);_0x596e6a[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x598f4e['model'],qs['fields'](_0x12a76e['query'][_0x0aa0('0x31')]));_0x596e6a['attributes']=_0x596e6a[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0x596e6a[_0x0aa0('0x32')]:_0x598f4e[_0x0aa0('0x2e')];_0x596e6a[_0x0aa0('0x4c')]=qs['sort'](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x36')]);_0x596e6a[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x12a76e['query'],_0x598f4e['filters']));if(_0x12a76e[_0x0aa0('0x2f')]['filter']){_0x596e6a['where']=_[_0x0aa0('0x3b')](_0x596e6a['where'],{'$or':_['map'](_0x596e6a[_0x0aa0('0x32')],function(_0x265f5d){var _0xb85579={};_0xb85579[_0x265f5d]={'$like':'%'+_0x12a76e[_0x0aa0('0x2f')]['filter']+'%'};return _0xb85579;})});}_0x596e6a=_[_0x0aa0('0x3b')]({},_0x596e6a,_0x12a76e[_0x0aa0('0x3d')]);return _0x38d387[_0x0aa0('0x4a')](_0x596e6a);}})[_0x0aa0('0x22')](function(_0xb922e8){if(_0xb922e8){_0x2a7055=_0xb922e8['length'];if(!_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0x596e6a[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x1b')]);_0x596e6a[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x12a76e[_0x0aa0('0x2f')][_0x0aa0('0x1a')]);}return _0x38d387[_0x0aa0('0x4a')](_0x596e6a);}})[_0x0aa0('0x22')](function(_0x3db644){if(_0x3db644){return _0x3db644?{'count':_0x2a7055,'rows':_0x3db644}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x169212,null))[_0x0aa0('0x40')](handleError(_0x169212,null));};exports['getDescriptions']=function(_0x2dc81a,_0x9ee64,_0x36253f){var _0xdc65eb={};var _0x1db74f={};var _0xaa809e;var _0x2519df;return db[_0x0aa0('0x2a')][_0x0aa0('0x4b')]({'where':{'id':_0x2dc81a[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x9ee64,null))[_0x0aa0('0x22')](function(_0x187833){if(_0x187833){_0xaa809e=_0x187833;_0x1db74f[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x48')][_0x0aa0('0x49')]);_0x1db74f[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x2dc81a[_0x0aa0('0x2f')]);_0x1db74f['filters']=_[_0x0aa0('0x30')](_0x1db74f['model'],_0x1db74f['query']);_0xdc65eb[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x1db74f[_0x0aa0('0x2e')],qs[_0x0aa0('0x31')](_0x2dc81a['query'][_0x0aa0('0x31')]));_0xdc65eb['attributes']=_0xdc65eb[_0x0aa0('0x32')][_0x0aa0('0x33')]?_0xdc65eb[_0x0aa0('0x32')]:_0x1db74f[_0x0aa0('0x2e')];_0xdc65eb[_0x0aa0('0x4c')]=qs[_0x0aa0('0x36')](_0x2dc81a['query'][_0x0aa0('0x36')]);_0xdc65eb[_0x0aa0('0x3a')]=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x2dc81a[_0x0aa0('0x2f')],_0x1db74f[_0x0aa0('0x37')]));if(_0x2dc81a[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0xdc65eb[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0xdc65eb[_0x0aa0('0x3a')],{'$or':_[_0x0aa0('0x29')](_0xdc65eb[_0x0aa0('0x32')],function(_0x31c888){var _0x9667da={};_0x9667da[_0x31c888]={'$like':'%'+_0x2dc81a[_0x0aa0('0x2f')]['filter']+'%'};return _0x9667da;})});}_0xdc65eb=_['merge']({},_0xdc65eb,_0x2dc81a[_0x0aa0('0x3d')]);return _0xaa809e[_0x0aa0('0x4d')](_0xdc65eb);}})[_0x0aa0('0x22')](function(_0x2a0f73){if(_0x2a0f73){_0x2519df=_0x2a0f73[_0x0aa0('0x33')];if(!_0x2dc81a[_0x0aa0('0x2f')][_0x0aa0('0x34')](_0x0aa0('0x35'))){_0xdc65eb[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x2dc81a[_0x0aa0('0x2f')]['limit']);_0xdc65eb[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x2dc81a['query']['offset']);}return _0xaa809e['getDescriptions'](_0xdc65eb);}})['then'](function(_0x4a0353){if(_0x4a0353){return _0x4a0353?{'count':_0x2519df,'rows':_0x4a0353}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x9ee64,null))[_0x0aa0('0x40')](handleError(_0x9ee64,null));};exports[_0x0aa0('0x4e')]=function(_0x23b13c,_0x51a0ef,_0x38110f){var _0x594418={};var _0x109408={};var _0x38f7a3;var _0x5ec273;return db[_0x0aa0('0x2a')]['findOne']({'where':{'id':_0x23b13c[_0x0aa0('0x42')]['id']}})['then'](handleEntityNotFound(_0x51a0ef,null))[_0x0aa0('0x22')](function(_0x7f351){if(_0x7f351){_0x38f7a3=_0x7f351;_0x109408[_0x0aa0('0x2e')]=_[_0x0aa0('0x43')](db[_0x0aa0('0x4f')][_0x0aa0('0x49')]);_0x109408[_0x0aa0('0x2f')]=_[_0x0aa0('0x43')](_0x23b13c[_0x0aa0('0x2f')]);_0x109408['filters']=_['intersection'](_0x109408['model'],_0x109408['query']);_0x594418[_0x0aa0('0x32')]=_[_0x0aa0('0x30')](_0x109408['model'],qs[_0x0aa0('0x31')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x31')]));_0x594418['attributes']=_0x594418['attributes']['length']?_0x594418[_0x0aa0('0x32')]:_0x109408[_0x0aa0('0x2e')];_0x594418[_0x0aa0('0x4c')]=qs[_0x0aa0('0x36')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x36')]);_0x594418['where']=qs[_0x0aa0('0x37')](_[_0x0aa0('0x38')](_0x23b13c[_0x0aa0('0x2f')],_0x109408['filters']));if(_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x39')]){_0x594418[_0x0aa0('0x3a')]=_[_0x0aa0('0x3b')](_0x594418['where'],{'$or':_[_0x0aa0('0x29')](_0x594418[_0x0aa0('0x32')],function(_0x4b3417){var _0xd1501c={};_0xd1501c[_0x4b3417]={'$like':'%'+_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x39')]+'%'};return _0xd1501c;})});}_0x594418=_[_0x0aa0('0x3b')]({},_0x594418,_0x23b13c[_0x0aa0('0x3d')]);return _0x38f7a3['getTags'](_0x594418);}})[_0x0aa0('0x22')](function(_0x15b633){if(_0x15b633){_0x5ec273=_0x15b633[_0x0aa0('0x33')];if(!_0x23b13c[_0x0aa0('0x2f')]['hasOwnProperty'](_0x0aa0('0x35'))){_0x594418[_0x0aa0('0x1b')]=qs[_0x0aa0('0x1b')](_0x23b13c[_0x0aa0('0x2f')][_0x0aa0('0x1b')]);_0x594418[_0x0aa0('0x1a')]=qs[_0x0aa0('0x1a')](_0x23b13c['query'][_0x0aa0('0x1a')]);}return _0x38f7a3[_0x0aa0('0x4e')](_0x594418);}})[_0x0aa0('0x22')](function(_0x38beed){if(_0x38beed){return _0x38beed?{'count':_0x5ec273,'rows':_0x38beed}:null;}})[_0x0aa0('0x22')](respondWithResult(_0x51a0ef,null))['catch'](handleError(_0x51a0ef,null));};exports[_0x0aa0('0x50')]=function(_0x4dc910,_0x4c8fea,_0x36295d){if(_0x4dc910[_0x0aa0('0x46')]['id']){delete _0x4dc910[_0x0aa0('0x46')]['id'];}return db[_0x0aa0('0x2a')]['findOne']({'where':{'id':_0x4dc910[_0x0aa0('0x42')]['id']}})[_0x0aa0('0x22')](handleEntityNotFound(_0x4c8fea,null))[_0x0aa0('0x22')](function(_0x2883f8){if(_0x2883f8){return _0x2883f8[_0x0aa0('0x50')](_0x4dc910['body'][_0x0aa0('0x51')]||[]);}return null;})[_0x0aa0('0x22')](respondWithResult(_0x4c8fea,null))[_0x0aa0('0x40')](handleError(_0x4c8fea,null));};
\ No newline at end of file
+var _0x60b1=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','name','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','intersection','options','find','catch','create','body','params','destroy','findOne','order','getFields','getSubjects','FreshdeskField','nolimit','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x41abd6,_0x5be06d){var _0x3c77fd=function(_0x32dd77){while(--_0x32dd77){_0x41abd6['push'](_0x41abd6['shift']());}};_0x3c77fd(++_0x5be06d);}(_0x60b1,0x142));var _0x160b=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x60b1[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x160b('0x0'));var rimraf=require(_0x160b('0x1'));var zipdir=require(_0x160b('0x2'));var jsonpatch=require(_0x160b('0x3'));var rp=require('request-promise');var moment=require(_0x160b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x160b('0x5'));var util=require(_0x160b('0x6'));var path=require(_0x160b('0x7'));var sox=require(_0x160b('0x8'));var csv=require(_0x160b('0x9'));var ejs=require(_0x160b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x160b('0xb'));var crypto=require(_0x160b('0xc'));var jsforce=require(_0x160b('0xd'));var deskjs=require(_0x160b('0xe'));var toCsv=require(_0x160b('0x9'));var querystring=require(_0x160b('0xf'));var Papa=require(_0x160b('0x10'));var Redis=require(_0x160b('0x11'));var authService=require(_0x160b('0x12'));var qs=require(_0x160b('0x13'));var as=require(_0x160b('0x14'));var hardwareService=require(_0x160b('0x15'));var logger=require(_0x160b('0x16'))(_0x160b('0x17'));var utils=require(_0x160b('0x18'));var config=require(_0x160b('0x19'));var licenseUtil=require(_0x160b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3602f7,_0x14c917){_0x14c917=_0x14c917||0xcc;return function(_0x3cf8da){if(_0x3cf8da){return _0x3602f7[_0x160b('0x1b')](_0x14c917);}return _0x3602f7[_0x160b('0x1c')](_0x14c917)[_0x160b('0x1d')]();};}function respondWithResult(_0x508926,_0x23e833){_0x23e833=_0x23e833||0xc8;return function(_0x162c8d){if(_0x162c8d){return _0x508926[_0x160b('0x1c')](_0x23e833)[_0x160b('0x1e')](_0x162c8d);}};}function respondWithFilteredResult(_0x191a65,_0x35c5ad){return function(_0x2a717b){if(_0x2a717b){var _0x540926=typeof _0x35c5ad[_0x160b('0x1f')]===_0x160b('0x20')&&typeof _0x35c5ad[_0x160b('0x21')]===_0x160b('0x20');var _0x29964c=_0x2a717b[_0x160b('0x22')];var _0x5d556c=_0x540926?0x0:_0x35c5ad[_0x160b('0x1f')];var _0x44a3ba=_0x540926?_0x2a717b[_0x160b('0x22')]:_0x35c5ad['offset']+_0x35c5ad['limit'];var _0x397a99;if(_0x44a3ba>=_0x29964c){_0x44a3ba=_0x29964c;_0x397a99=0xc8;}else{_0x397a99=0xce;}_0x191a65['status'](_0x397a99);return _0x191a65[_0x160b('0x23')](_0x160b('0x24'),_0x5d556c+'-'+_0x44a3ba+'/'+_0x29964c)[_0x160b('0x1e')](_0x2a717b);}return null;};}function patchUpdates(_0x52c42e){return function(_0x2d34ba){try{jsonpatch[_0x160b('0x25')](_0x2d34ba,_0x52c42e,!![]);}catch(_0x3adbf6){return BPromise['reject'](_0x3adbf6);}return _0x2d34ba[_0x160b('0x26')]();};}function saveUpdates(_0x40c990,_0x8588bf){return function(_0x2a44ee){if(_0x2a44ee){return _0x2a44ee[_0x160b('0x27')](_0x40c990)['then'](function(_0x3a2139){return _0x3a2139;});}return null;};}function removeEntity(_0xca4ec1,_0xb7aed1){return function(_0x3ce559){if(_0x3ce559){return _0x3ce559['destroy']()[_0x160b('0x28')](function(){_0xca4ec1[_0x160b('0x1c')](0xcc)[_0x160b('0x1d')]();});}};}function handleEntityNotFound(_0x3202ac,_0x4b686a){return function(_0x39e120){if(!_0x39e120){_0x3202ac[_0x160b('0x1b')](0x194);}return _0x39e120;};}function handleError(_0x545324,_0x35a8b1){_0x35a8b1=_0x35a8b1||0x1f4;return function(_0x251527){logger[_0x160b('0x29')](_0x251527['stack']);if(_0x251527[_0x160b('0x2a')]){delete _0x251527['name'];}_0x545324[_0x160b('0x1c')](_0x35a8b1)['send'](_0x251527);};}exports['index']=function(_0x184e6d,_0x472506){var _0x523cc6={},_0x575b91={},_0x460c6d={'count':0x0,'rows':[]};var _0x1a0d92=_['map'](db[_0x160b('0x2b')][_0x160b('0x2c')],function(_0x48f908){return{'name':_0x48f908[_0x160b('0x2d')],'type':_0x48f908[_0x160b('0x2e')][_0x160b('0x2f')]};});_0x575b91[_0x160b('0x30')]=_[_0x160b('0x31')](_0x1a0d92,_0x160b('0x2a'));_0x575b91[_0x160b('0x32')]=_[_0x160b('0x33')](_0x184e6d[_0x160b('0x32')]);_0x575b91['filters']=_['intersection'](_0x575b91[_0x160b('0x30')],_0x575b91[_0x160b('0x32')]);_0x523cc6[_0x160b('0x34')]=_['intersection'](_0x575b91[_0x160b('0x30')],qs[_0x160b('0x35')](_0x184e6d[_0x160b('0x32')]['fields']));_0x523cc6[_0x160b('0x34')]=_0x523cc6[_0x160b('0x34')][_0x160b('0x36')]?_0x523cc6[_0x160b('0x34')]:_0x575b91[_0x160b('0x30')];if(!_0x184e6d[_0x160b('0x32')][_0x160b('0x37')]('nolimit')){_0x523cc6['limit']=qs[_0x160b('0x21')](_0x184e6d[_0x160b('0x32')][_0x160b('0x21')]);_0x523cc6['offset']=qs[_0x160b('0x1f')](_0x184e6d[_0x160b('0x32')][_0x160b('0x1f')]);}_0x523cc6['order']=qs[_0x160b('0x38')](_0x184e6d['query']['sort']);_0x523cc6[_0x160b('0x39')]=qs[_0x160b('0x3a')](_[_0x160b('0x3b')](_0x184e6d[_0x160b('0x32')],_0x575b91[_0x160b('0x3a')]),_0x1a0d92);if(_0x184e6d[_0x160b('0x32')][_0x160b('0x3c')]){_0x523cc6[_0x160b('0x39')]=_[_0x160b('0x3d')](_0x523cc6['where'],{'$or':_['map'](_0x1a0d92,function(_0x21b830){if(_0x21b830[_0x160b('0x2e')]!==_0x160b('0x3e')){var _0x2395fd={};_0x2395fd[_0x21b830[_0x160b('0x2a')]]={'$like':'%'+_0x184e6d[_0x160b('0x32')][_0x160b('0x3c')]+'%'};return _0x2395fd;}})});}_0x523cc6=_[_0x160b('0x3d')]({},_0x523cc6,_0x184e6d['options']);var _0x234c2a={'where':_0x523cc6[_0x160b('0x39')]};return db[_0x160b('0x2b')][_0x160b('0x22')](_0x234c2a)[_0x160b('0x28')](function(_0x252e68){_0x460c6d[_0x160b('0x22')]=_0x252e68;if(_0x184e6d[_0x160b('0x32')][_0x160b('0x3f')]){_0x523cc6['include']=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x160b('0x40')](_0x523cc6);})['then'](function(_0x2fc8fc){_0x460c6d[_0x160b('0x41')]=_0x2fc8fc;return _0x460c6d;})[_0x160b('0x28')](respondWithFilteredResult(_0x472506,_0x523cc6))['catch'](handleError(_0x472506,null));};exports[_0x160b('0x42')]=function(_0x1794f2,_0x3237f6){var _0x16fd41={'raw':![],'where':{'id':_0x1794f2['params']['id']}},_0x498ac0={};_0x498ac0[_0x160b('0x30')]=_[_0x160b('0x33')](db[_0x160b('0x2b')][_0x160b('0x2c')]);_0x498ac0[_0x160b('0x32')]=_['keys'](_0x1794f2[_0x160b('0x32')]);_0x498ac0['filters']=_[_0x160b('0x43')](_0x498ac0[_0x160b('0x30')],_0x498ac0[_0x160b('0x32')]);_0x16fd41[_0x160b('0x34')]=_[_0x160b('0x43')](_0x498ac0[_0x160b('0x30')],qs[_0x160b('0x35')](_0x1794f2[_0x160b('0x32')]['fields']));_0x16fd41[_0x160b('0x34')]=_0x16fd41[_0x160b('0x34')]['length']?_0x16fd41['attributes']:_0x498ac0[_0x160b('0x30')];if(_0x1794f2['query'][_0x160b('0x3f')]){_0x16fd41['include']=[{'all':!![]}];}_0x16fd41=_['merge']({},_0x16fd41,_0x1794f2[_0x160b('0x44')]);return db[_0x160b('0x2b')][_0x160b('0x45')](_0x16fd41)['then'](handleEntityNotFound(_0x3237f6,null))['then'](respondWithResult(_0x3237f6,null))[_0x160b('0x46')](handleError(_0x3237f6,null));};exports[_0x160b('0x47')]=function(_0x4653e4,_0x1ac40c){return db[_0x160b('0x2b')][_0x160b('0x47')](_0x4653e4[_0x160b('0x48')],{})[_0x160b('0x28')](respondWithResult(_0x1ac40c,0xc9))['catch'](handleError(_0x1ac40c,null));};exports[_0x160b('0x27')]=function(_0x5c3ee2,_0x9b1997){if(_0x5c3ee2['body']['id']){delete _0x5c3ee2[_0x160b('0x48')]['id'];}return db[_0x160b('0x2b')][_0x160b('0x45')]({'where':{'id':_0x5c3ee2[_0x160b('0x49')]['id']}})['then'](handleEntityNotFound(_0x9b1997,null))[_0x160b('0x28')](saveUpdates(_0x5c3ee2['body'],null))['then'](respondWithResult(_0x9b1997,null))[_0x160b('0x46')](handleError(_0x9b1997,null));};exports[_0x160b('0x4a')]=function(_0x18b851,_0x3b7952){return db[_0x160b('0x2b')][_0x160b('0x45')]({'where':{'id':_0x18b851[_0x160b('0x49')]['id']}})[_0x160b('0x28')](handleEntityNotFound(_0x3b7952,null))[_0x160b('0x28')](removeEntity(_0x3b7952,null))[_0x160b('0x46')](handleError(_0x3b7952,null));};exports['getFields']=function(_0x3ad647,_0x52ba7a,_0x37d0d2){var _0x14ac60={};var _0x11fc1d={};var _0x29e8b3;var _0x46829d;return db[_0x160b('0x2b')][_0x160b('0x4b')]({'where':{'id':_0x3ad647[_0x160b('0x49')]['id']}})['then'](handleEntityNotFound(_0x52ba7a,null))[_0x160b('0x28')](function(_0x420822){if(_0x420822){_0x29e8b3=_0x420822;_0x11fc1d[_0x160b('0x30')]=_['keys'](db['FreshdeskField']['rawAttributes']);_0x11fc1d[_0x160b('0x32')]=_[_0x160b('0x33')](_0x3ad647[_0x160b('0x32')]);_0x11fc1d[_0x160b('0x3a')]=_[_0x160b('0x43')](_0x11fc1d[_0x160b('0x30')],_0x11fc1d[_0x160b('0x32')]);_0x14ac60[_0x160b('0x34')]=_['intersection'](_0x11fc1d[_0x160b('0x30')],qs[_0x160b('0x35')](_0x3ad647[_0x160b('0x32')][_0x160b('0x35')]));_0x14ac60['attributes']=_0x14ac60[_0x160b('0x34')][_0x160b('0x36')]?_0x14ac60[_0x160b('0x34')]:_0x11fc1d[_0x160b('0x30')];_0x14ac60[_0x160b('0x4c')]=qs['sort'](_0x3ad647['query'][_0x160b('0x38')]);_0x14ac60[_0x160b('0x39')]=qs[_0x160b('0x3a')](_['pick'](_0x3ad647[_0x160b('0x32')],_0x11fc1d['filters']));if(_0x3ad647[_0x160b('0x32')][_0x160b('0x3c')]){_0x14ac60['where']=_[_0x160b('0x3d')](_0x14ac60[_0x160b('0x39')],{'$or':_['map'](_0x14ac60[_0x160b('0x34')],function(_0x2102b6){var _0x35e46e={};_0x35e46e[_0x2102b6]={'$like':'%'+_0x3ad647[_0x160b('0x32')][_0x160b('0x3c')]+'%'};return _0x35e46e;})});}_0x14ac60=_['merge']({},_0x14ac60,_0x3ad647[_0x160b('0x44')]);return _0x29e8b3[_0x160b('0x4d')](_0x14ac60);}})['then'](function(_0x4f875c){if(_0x4f875c){_0x46829d=_0x4f875c[_0x160b('0x36')];if(!_0x3ad647[_0x160b('0x32')][_0x160b('0x37')]('nolimit')){_0x14ac60['limit']=qs[_0x160b('0x21')](_0x3ad647[_0x160b('0x32')][_0x160b('0x21')]);_0x14ac60[_0x160b('0x1f')]=qs[_0x160b('0x1f')](_0x3ad647[_0x160b('0x32')][_0x160b('0x1f')]);}return _0x29e8b3[_0x160b('0x4d')](_0x14ac60);}})[_0x160b('0x28')](function(_0x58bb66){if(_0x58bb66){return _0x58bb66?{'count':_0x46829d,'rows':_0x58bb66}:null;}})['then'](respondWithResult(_0x52ba7a,null))['catch'](handleError(_0x52ba7a,null));};exports[_0x160b('0x4e')]=function(_0x108ae9,_0xa3cb8d,_0x154a60){var _0x4f24cb={};var _0x5db60d={};var _0x42273a;var _0x3e1bce;return db[_0x160b('0x2b')][_0x160b('0x4b')]({'where':{'id':_0x108ae9[_0x160b('0x49')]['id']}})['then'](handleEntityNotFound(_0xa3cb8d,null))[_0x160b('0x28')](function(_0x3705a8){if(_0x3705a8){_0x42273a=_0x3705a8;_0x5db60d['model']=_['keys'](db[_0x160b('0x4f')][_0x160b('0x2c')]);_0x5db60d['query']=_['keys'](_0x108ae9[_0x160b('0x32')]);_0x5db60d[_0x160b('0x3a')]=_['intersection'](_0x5db60d[_0x160b('0x30')],_0x5db60d[_0x160b('0x32')]);_0x4f24cb[_0x160b('0x34')]=_[_0x160b('0x43')](_0x5db60d[_0x160b('0x30')],qs[_0x160b('0x35')](_0x108ae9[_0x160b('0x32')][_0x160b('0x35')]));_0x4f24cb[_0x160b('0x34')]=_0x4f24cb[_0x160b('0x34')][_0x160b('0x36')]?_0x4f24cb[_0x160b('0x34')]:_0x5db60d['model'];_0x4f24cb['order']=qs[_0x160b('0x38')](_0x108ae9[_0x160b('0x32')]['sort']);_0x4f24cb[_0x160b('0x39')]=qs[_0x160b('0x3a')](_[_0x160b('0x3b')](_0x108ae9[_0x160b('0x32')],_0x5db60d[_0x160b('0x3a')]));if(_0x108ae9[_0x160b('0x32')]['filter']){_0x4f24cb[_0x160b('0x39')]=_[_0x160b('0x3d')](_0x4f24cb[_0x160b('0x39')],{'$or':_[_0x160b('0x31')](_0x4f24cb[_0x160b('0x34')],function(_0x3a23ac){var _0x2c6820={};_0x2c6820[_0x3a23ac]={'$like':'%'+_0x108ae9[_0x160b('0x32')]['filter']+'%'};return _0x2c6820;})});}_0x4f24cb=_[_0x160b('0x3d')]({},_0x4f24cb,_0x108ae9[_0x160b('0x44')]);return _0x42273a[_0x160b('0x4e')](_0x4f24cb);}})[_0x160b('0x28')](function(_0xf820c){if(_0xf820c){_0x3e1bce=_0xf820c[_0x160b('0x36')];if(!_0x108ae9[_0x160b('0x32')]['hasOwnProperty'](_0x160b('0x50'))){_0x4f24cb['limit']=qs[_0x160b('0x21')](_0x108ae9['query'][_0x160b('0x21')]);_0x4f24cb[_0x160b('0x1f')]=qs[_0x160b('0x1f')](_0x108ae9['query'][_0x160b('0x1f')]);}return _0x42273a[_0x160b('0x4e')](_0x4f24cb);}})[_0x160b('0x28')](function(_0x54fa96){if(_0x54fa96){return _0x54fa96?{'count':_0x3e1bce,'rows':_0x54fa96}:null;}})['then'](respondWithResult(_0xa3cb8d,null))[_0x160b('0x46')](handleError(_0xa3cb8d,null));};exports[_0x160b('0x51')]=function(_0x2f1f93,_0x374b84,_0x3af7a3){var _0x468365={};var _0x2993a4={};var _0x4775b9;var _0x4f1bf5;return db[_0x160b('0x2b')][_0x160b('0x4b')]({'where':{'id':_0x2f1f93[_0x160b('0x49')]['id']}})[_0x160b('0x28')](handleEntityNotFound(_0x374b84,null))[_0x160b('0x28')](function(_0x3530e5){if(_0x3530e5){_0x4775b9=_0x3530e5;_0x2993a4['model']=_['keys'](db['FreshdeskField']['rawAttributes']);_0x2993a4[_0x160b('0x32')]=_[_0x160b('0x33')](_0x2f1f93[_0x160b('0x32')]);_0x2993a4['filters']=_[_0x160b('0x43')](_0x2993a4['model'],_0x2993a4['query']);_0x468365[_0x160b('0x34')]=_[_0x160b('0x43')](_0x2993a4[_0x160b('0x30')],qs['fields'](_0x2f1f93[_0x160b('0x32')][_0x160b('0x35')]));_0x468365['attributes']=_0x468365['attributes'][_0x160b('0x36')]?_0x468365['attributes']:_0x2993a4['model'];_0x468365[_0x160b('0x4c')]=qs[_0x160b('0x38')](_0x2f1f93[_0x160b('0x32')]['sort']);_0x468365[_0x160b('0x39')]=qs[_0x160b('0x3a')](_[_0x160b('0x3b')](_0x2f1f93[_0x160b('0x32')],_0x2993a4['filters']));if(_0x2f1f93['query'][_0x160b('0x3c')]){_0x468365[_0x160b('0x39')]=_[_0x160b('0x3d')](_0x468365[_0x160b('0x39')],{'$or':_['map'](_0x468365['attributes'],function(_0xb28a7b){var _0x1810d1={};_0x1810d1[_0xb28a7b]={'$like':'%'+_0x2f1f93[_0x160b('0x32')]['filter']+'%'};return _0x1810d1;})});}_0x468365=_[_0x160b('0x3d')]({},_0x468365,_0x2f1f93[_0x160b('0x44')]);return _0x4775b9[_0x160b('0x51')](_0x468365);}})['then'](function(_0x37b9f6){if(_0x37b9f6){_0x4f1bf5=_0x37b9f6[_0x160b('0x36')];if(!_0x2f1f93[_0x160b('0x32')][_0x160b('0x37')](_0x160b('0x50'))){_0x468365[_0x160b('0x21')]=qs['limit'](_0x2f1f93[_0x160b('0x32')][_0x160b('0x21')]);_0x468365[_0x160b('0x1f')]=qs[_0x160b('0x1f')](_0x2f1f93[_0x160b('0x32')][_0x160b('0x1f')]);}return _0x4775b9[_0x160b('0x51')](_0x468365);}})[_0x160b('0x28')](function(_0x5531be){if(_0x5531be){return _0x5531be?{'count':_0x4f1bf5,'rows':_0x5531be}:null;}})[_0x160b('0x28')](respondWithResult(_0x374b84,null))['catch'](handleError(_0x374b84,null));};exports[_0x160b('0x52')]=function(_0x500165,_0x2fc489,_0x59b20f){var _0xdef622={};var _0xd21623={};var _0x53710e;var _0x23e921;return db[_0x160b('0x2b')][_0x160b('0x4b')]({'where':{'id':_0x500165['params']['id']}})[_0x160b('0x28')](handleEntityNotFound(_0x2fc489,null))[_0x160b('0x28')](function(_0x36554a){if(_0x36554a){_0x53710e=_0x36554a;_0xd21623[_0x160b('0x30')]=_[_0x160b('0x33')](db[_0x160b('0x53')][_0x160b('0x2c')]);_0xd21623[_0x160b('0x32')]=_[_0x160b('0x33')](_0x500165[_0x160b('0x32')]);_0xd21623['filters']=_[_0x160b('0x43')](_0xd21623['model'],_0xd21623[_0x160b('0x32')]);_0xdef622[_0x160b('0x34')]=_[_0x160b('0x43')](_0xd21623[_0x160b('0x30')],qs[_0x160b('0x35')](_0x500165[_0x160b('0x32')][_0x160b('0x35')]));_0xdef622[_0x160b('0x34')]=_0xdef622[_0x160b('0x34')]['length']?_0xdef622[_0x160b('0x34')]:_0xd21623[_0x160b('0x30')];_0xdef622['order']=qs[_0x160b('0x38')](_0x500165[_0x160b('0x32')][_0x160b('0x38')]);_0xdef622[_0x160b('0x39')]=qs[_0x160b('0x3a')](_[_0x160b('0x3b')](_0x500165['query'],_0xd21623[_0x160b('0x3a')]));if(_0x500165[_0x160b('0x32')][_0x160b('0x3c')]){_0xdef622[_0x160b('0x39')]=_[_0x160b('0x3d')](_0xdef622[_0x160b('0x39')],{'$or':_['map'](_0xdef622['attributes'],function(_0x1b162a){var _0x57f06f={};_0x57f06f[_0x1b162a]={'$like':'%'+_0x500165['query'][_0x160b('0x3c')]+'%'};return _0x57f06f;})});}_0xdef622=_[_0x160b('0x3d')]({},_0xdef622,_0x500165[_0x160b('0x44')]);return _0x53710e['getTags'](_0xdef622);}})[_0x160b('0x28')](function(_0x195279){if(_0x195279){_0x23e921=_0x195279[_0x160b('0x36')];if(!_0x500165[_0x160b('0x32')][_0x160b('0x37')](_0x160b('0x50'))){_0xdef622['limit']=qs[_0x160b('0x21')](_0x500165[_0x160b('0x32')]['limit']);_0xdef622[_0x160b('0x1f')]=qs[_0x160b('0x1f')](_0x500165[_0x160b('0x32')][_0x160b('0x1f')]);}return _0x53710e[_0x160b('0x52')](_0xdef622);}})[_0x160b('0x28')](function(_0x2702ba){if(_0x2702ba){return _0x2702ba?{'count':_0x23e921,'rows':_0x2702ba}:null;}})[_0x160b('0x28')](respondWithResult(_0x2fc489,null))[_0x160b('0x46')](handleError(_0x2fc489,null));};exports[_0x160b('0x54')]=function(_0x5a6d29,_0x209822,_0x563d72){if(_0x5a6d29['body']['id']){delete _0x5a6d29[_0x160b('0x48')]['id'];}return db[_0x160b('0x2b')]['findOne']({'where':{'id':_0x5a6d29[_0x160b('0x49')]['id']}})[_0x160b('0x28')](handleEntityNotFound(_0x209822,null))[_0x160b('0x28')](function(_0x159a03){if(_0x159a03){return _0x159a03['setTags'](_0x5a6d29[_0x160b('0x48')][_0x160b('0x55')]||[]);}return null;})[_0x160b('0x28')](respondWithResult(_0x209822,null))[_0x160b('0x46')](handleError(_0x209822,null));};
\ No newline at end of file
index ac82645..17d062f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x744a=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x306162,_0xb30d28){var _0x5a94ad=function(_0x1947df){while(--_0x1947df){_0x306162['push'](_0x306162['shift']());}};_0x5a94ad(++_0xb30d28);}(_0x744a,0xf1));var _0xa744=function(_0x171d03,_0x3eebb0){_0x171d03=_0x171d03-0x0;var _0x5f0402=_0x744a[_0x171d03];return _0x5f0402;};'use strict';var _=require(_0xa744('0x0'));var util=require(_0xa744('0x1'));var logger=require(_0xa744('0x2'))('api');var moment=require(_0xa744('0x3'));var BPromise=require(_0xa744('0x4'));var rp=require(_0xa744('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa744('0x6'));var config=require(_0xa744('0x7'));var attributes=require(_0xa744('0x8'));module[_0xa744('0x9')]=function(_0x50a7d4,_0x443a48){return _0x50a7d4[_0xa744('0xa')](_0xa744('0xb'),attributes,{'tableName':_0xa744('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3712=['./intFreshdeskConfiguration.attributes','exports','define','int_freshdesk_configurations','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x4307f0,_0x58a367){var _0x35b1ac=function(_0x2bb356){while(--_0x2bb356){_0x4307f0['push'](_0x4307f0['shift']());}};_0x35b1ac(++_0x58a367);}(_0x3712,0x94));var _0x2371=function(_0xf5d71c,_0x2613a6){_0xf5d71c=_0xf5d71c-0x0;var _0x5af672=_0x3712[_0xf5d71c];return _0x5af672;};'use strict';var _=require('lodash');var util=require(_0x2371('0x0'));var logger=require(_0x2371('0x1'))(_0x2371('0x2'));var moment=require(_0x2371('0x3'));var BPromise=require('bluebird');var rp=require(_0x2371('0x4'));var fs=require('fs');var path=require(_0x2371('0x5'));var rimraf=require(_0x2371('0x6'));var config=require(_0x2371('0x7'));var attributes=require(_0x2371('0x8'));module[_0x2371('0x9')]=function(_0x37646f,_0x17dfdb){return _0x37646f[_0x2371('0xa')]('FreshdeskConfiguration',attributes,{'tableName':_0x2371('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72b811d..1d0b204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f19=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','lodash','util'];(function(_0x197127,_0x48bbfd){var _0x558ca6=function(_0x580faf){while(--_0x580faf){_0x197127['push'](_0x197127['shift']());}};_0x558ca6(++_0x48bbfd);}(_0x2f19,0x1cc));var _0x92f1=function(_0xf80b3,_0x25d5f3){_0xf80b3=_0xf80b3-0x0;var _0x10c489=_0x2f19[_0xf80b3];return _0x10c489;};'use strict';var _=require(_0x92f1('0x0'));var util=require(_0x92f1('0x1'));var moment=require('moment');var BPromise=require(_0x92f1('0x2'));var rs=require(_0x92f1('0x3'));var fs=require('fs');var Redis=require(_0x92f1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x92f1('0x5'));var logger=require(_0x92f1('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x92f1('0x7'));var client=jayson[_0x92f1('0x8')][_0x92f1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f587a,_0x4944b3,_0x10d99a){return new BPromise(function(_0x470579,_0x77b274){return client[_0x92f1('0xa')](_0x5f587a,_0x10d99a)[_0x92f1('0xb')](function(_0x54e229){logger[_0x92f1('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x4944b3,_0x92f1('0xd'));logger[_0x92f1('0xe')](_0x92f1('0xf'),_0x4944b3,'request\x20sent',JSON[_0x92f1('0x10')](_0x54e229));if(_0x54e229['error']){if(_0x54e229[_0x92f1('0x11')][_0x92f1('0x12')]===0x1f4){logger['error'](_0x92f1('0x13'),_0x4944b3,_0x54e229[_0x92f1('0x11')][_0x92f1('0x14')]);return _0x77b274(_0x54e229['error'][_0x92f1('0x14')]);}logger[_0x92f1('0x11')](_0x92f1('0x13'),_0x4944b3,_0x54e229[_0x92f1('0x11')][_0x92f1('0x14')]);return _0x470579(_0x54e229[_0x92f1('0x11')]['message']);}else{logger[_0x92f1('0xc')](_0x92f1('0x13'),_0x4944b3,_0x92f1('0xd'));_0x470579(_0x54e229[_0x92f1('0x15')]['message']);}})['catch'](function(_0x4fdf09){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x4944b3,_0x4fdf09);_0x77b274(_0x4fdf09);});});}
\ No newline at end of file
+var _0xec5c=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x122b0d,_0x538bf1){var _0x50378f=function(_0x3a5211){while(--_0x3a5211){_0x122b0d['push'](_0x122b0d['shift']());}};_0x50378f(++_0x538bf1);}(_0xec5c,0xf8));var _0xcec5=function(_0x26e727,_0x3e65be){_0x26e727=_0x26e727-0x0;var _0x563800=_0xec5c[_0x26e727];return _0x563800;};'use strict';var _=require(_0xcec5('0x0'));var util=require(_0xcec5('0x1'));var moment=require(_0xcec5('0x2'));var BPromise=require(_0xcec5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcec5('0x4'));var db=require(_0xcec5('0x5'))['db'];var utils=require(_0xcec5('0x6'));var logger=require(_0xcec5('0x7'))('rpc');var config=require(_0xcec5('0x8'));var jayson=require(_0xcec5('0x9'));var client=jayson[_0xcec5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x207fa3,_0x311cb0,_0x1748a2){return new BPromise(function(_0x23bb46,_0x59ef23){return client[_0xcec5('0xb')](_0x207fa3,_0x1748a2)['then'](function(_0x15cb24){logger[_0xcec5('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x311cb0,_0xcec5('0xd'));logger[_0xcec5('0xe')](_0xcec5('0xf'),_0x311cb0,_0xcec5('0xd'),JSON[_0xcec5('0x10')](_0x15cb24));if(_0x15cb24[_0xcec5('0x11')]){if(_0x15cb24[_0xcec5('0x11')][_0xcec5('0x12')]===0x1f4){logger['error'](_0xcec5('0x13'),_0x311cb0,_0x15cb24[_0xcec5('0x11')]['message']);return _0x59ef23(_0x15cb24['error'][_0xcec5('0x14')]);}logger[_0xcec5('0x11')](_0xcec5('0x13'),_0x311cb0,_0x15cb24['error'][_0xcec5('0x14')]);return _0x23bb46(_0x15cb24['error']['message']);}else{logger['info'](_0xcec5('0x13'),_0x311cb0,_0xcec5('0xd'));_0x23bb46(_0x15cb24[_0xcec5('0x15')][_0xcec5('0x14')]);}})[_0xcec5('0x16')](function(_0x47da4f){logger[_0xcec5('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x311cb0,_0x47da4f);_0x59ef23(_0x47da4f);});});}
\ No newline at end of file
index 29e0d6d..3209681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe593=['create','put','update','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x9ff1c0,_0x207afc){var _0x3e6c23=function(_0x11ad15){while(--_0x11ad15){_0x9ff1c0['push'](_0x9ff1c0['shift']());}};_0x3e6c23(++_0x207afc);}(_0xe593,0x10e));var _0x3e59=function(_0x3cafde,_0x1d57c0){_0x3cafde=_0x3cafde-0x0;var _0x4f7496=_0xe593[_0x3cafde];return _0x4f7496;};'use strict';var multer=require(_0x3e59('0x0'));var util=require(_0x3e59('0x1'));var path=require('path');var timeout=require(_0x3e59('0x2'));var express=require('express');var router=express[_0x3e59('0x3')]();var fs_extra=require(_0x3e59('0x4'));var auth=require(_0x3e59('0x5'));var interaction=require(_0x3e59('0x6'));var config=require(_0x3e59('0x7'));var controller=require(_0x3e59('0x8'));router[_0x3e59('0x9')]('/',auth['isAuthenticated'](),controller[_0x3e59('0xa')]);router[_0x3e59('0x9')](_0x3e59('0xb'),auth[_0x3e59('0xc')](),controller[_0x3e59('0xd')]);router[_0x3e59('0xe')]('/',auth[_0x3e59('0xc')](),controller[_0x3e59('0xf')]);router[_0x3e59('0x10')](_0x3e59('0xb'),auth[_0x3e59('0xc')](),controller[_0x3e59('0x11')]);router['delete'](_0x3e59('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x3e59('0x12')]=router;
\ No newline at end of file
+var _0x27d1=['post','create','put','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x4799cd,_0x1f49a7){var _0x2d4ecc=function(_0x19882b){while(--_0x19882b){_0x4799cd['push'](_0x4799cd['shift']());}};_0x2d4ecc(++_0x1f49a7);}(_0x27d1,0x1c7));var _0x127d=function(_0x30b9f7,_0x5dd8df){_0x30b9f7=_0x30b9f7-0x0;var _0x2e5f48=_0x27d1[_0x30b9f7];return _0x2e5f48;};'use strict';var multer=require(_0x127d('0x0'));var util=require(_0x127d('0x1'));var path=require(_0x127d('0x2'));var timeout=require(_0x127d('0x3'));var express=require(_0x127d('0x4'));var router=express['Router']();var fs_extra=require(_0x127d('0x5'));var auth=require(_0x127d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x127d('0x7'));var controller=require('./intFreshdeskField.controller');router[_0x127d('0x8')]('/',auth[_0x127d('0x9')](),controller[_0x127d('0xa')]);router[_0x127d('0x8')](_0x127d('0xb'),auth[_0x127d('0x9')](),controller[_0x127d('0xc')]);router[_0x127d('0xd')]('/',auth[_0x127d('0x9')](),controller[_0x127d('0xe')]);router[_0x127d('0xf')](_0x127d('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x127d('0x10')]('/:id',auth[_0x127d('0x9')](),controller['destroy']);module[_0x127d('0x11')]=router;
\ No newline at end of file
index c1011d3..754fa24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3613=['STRING','ENUM','variable','BOOLEAN','sequelize','string','customVariable','keyValue','picklist'];(function(_0x1f41b6,_0x1363cf){var _0x5ac1bc=function(_0x32dac0){while(--_0x32dac0){_0x1f41b6['push'](_0x1f41b6['shift']());}};_0x5ac1bc(++_0x1363cf);}(_0x3613,0x16c));var _0x3361=function(_0x34ac05,_0x116d66){_0x34ac05=_0x34ac05-0x0;var _0x9e1bd=_0x3613[_0x34ac05];return _0x9e1bd;};'use strict';var Sequelize=require(_0x3361('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x3361('0x1'),'variable',_0x3361('0x2'),_0x3361('0x3'),_0x3361('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3361('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3361('0x6')]('string',_0x3361('0x7'),_0x3361('0x2'))},'keyContent':{'type':Sequelize[_0x3361('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3361('0x5')]},'customField':{'type':Sequelize[_0x3361('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3361('0x5')]}};
\ No newline at end of file
+var _0x5137=['keyValue','picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable'];(function(_0x37baa1,_0x2d1505){var _0x39664e=function(_0x3dbed2){while(--_0x3dbed2){_0x37baa1['push'](_0x37baa1['shift']());}};_0x39664e(++_0x2d1505);}(_0x5137,0x68));var _0x7513=function(_0x1b1d8d,_0x3d8270){_0x1b1d8d=_0x1b1d8d-0x0;var _0x7734a8=_0x5137[_0x1b1d8d];return _0x7734a8;};'use strict';var Sequelize=require(_0x7513('0x0'));module['exports']={'type':{'type':Sequelize[_0x7513('0x1')](_0x7513('0x2'),'variable',_0x7513('0x3'),_0x7513('0x4'),_0x7513('0x5')),'defaultValue':_0x7513('0x2')},'content':{'type':Sequelize[_0x7513('0x6')]},'key':{'type':Sequelize[_0x7513('0x6')]},'keyType':{'type':Sequelize[_0x7513('0x1')](_0x7513('0x2'),_0x7513('0x7'),_0x7513('0x3'))},'keyContent':{'type':Sequelize[_0x7513('0x6')]},'idField':{'type':Sequelize[_0x7513('0x6')]},'nameField':{'type':Sequelize[_0x7513('0x6')]},'customField':{'type':Sequelize[_0x7513('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7513('0x6')]}};
\ No newline at end of file
index 556351c..8e21a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6953=['rimraf','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','query','filters','model','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','eml-format'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6953,0x91));var _0x3695=function(_0x2cdd4d,_0x394c2f){_0x2cdd4d=_0x2cdd4d-0x0;var _0x55cbc8=_0x6953[_0x2cdd4d];return _0x55cbc8;};'use strict';var emlformat=require(_0x3695('0x0'));var rimraf=require(_0x3695('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3695('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3695('0x3'));var util=require(_0x3695('0x4'));var path=require(_0x3695('0x5'));var sox=require('sox');var csv=require(_0x3695('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3695('0x7'));var _=require(_0x3695('0x8'));var squel=require(_0x3695('0x9'));var crypto=require(_0x3695('0xa'));var jsforce=require(_0x3695('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3695('0x6'));var querystring=require('querystring');var Papa=require(_0x3695('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3695('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3695('0xe'));var logger=require(_0x3695('0xf'))(_0x3695('0x10'));var utils=require(_0x3695('0x11'));var config=require(_0x3695('0x12'));var licenseUtil=require(_0x3695('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x19080e,_0x345587){_0x345587=_0x345587||0xcc;return function(_0x212011){if(_0x212011){return _0x19080e[_0x3695('0x14')](_0x345587);}return _0x19080e[_0x3695('0x15')](_0x345587)[_0x3695('0x16')]();};}function respondWithResult(_0x439bd9,_0x4df429){_0x4df429=_0x4df429||0xc8;return function(_0x26dfc9){if(_0x26dfc9){return _0x439bd9[_0x3695('0x15')](_0x4df429)[_0x3695('0x17')](_0x26dfc9);}};}function respondWithFilteredResult(_0x4ca317,_0x3aa59d){return function(_0x231c7d){if(_0x231c7d){var _0x2cdd3=typeof _0x3aa59d[_0x3695('0x18')]===_0x3695('0x19')&&typeof _0x3aa59d[_0x3695('0x1a')]===_0x3695('0x19');var _0x4fa2d9=_0x231c7d[_0x3695('0x1b')];var _0x5edf8d=_0x2cdd3?0x0:_0x3aa59d[_0x3695('0x18')];var _0xcc93bb=_0x2cdd3?_0x231c7d[_0x3695('0x1b')]:_0x3aa59d[_0x3695('0x18')]+_0x3aa59d[_0x3695('0x1a')];var _0x5dec2a;if(_0xcc93bb>=_0x4fa2d9){_0xcc93bb=_0x4fa2d9;_0x5dec2a=0xc8;}else{_0x5dec2a=0xce;}_0x4ca317[_0x3695('0x15')](_0x5dec2a);return _0x4ca317[_0x3695('0x1c')](_0x3695('0x1d'),_0x5edf8d+'-'+_0xcc93bb+'/'+_0x4fa2d9)[_0x3695('0x17')](_0x231c7d);}return null;};}function patchUpdates(_0xc076a9){return function(_0x1ebba8){try{jsonpatch[_0x3695('0x1e')](_0x1ebba8,_0xc076a9,!![]);}catch(_0xb85811){return BPromise[_0x3695('0x1f')](_0xb85811);}return _0x1ebba8[_0x3695('0x20')]();};}function saveUpdates(_0x1b97d2,_0xf2c747){return function(_0x459f33){if(_0x459f33){return _0x459f33[_0x3695('0x21')](_0x1b97d2)['then'](function(_0x42648c){return _0x42648c;});}return null;};}function removeEntity(_0xdb0934,_0x4899c0){return function(_0x4940e9){if(_0x4940e9){return _0x4940e9[_0x3695('0x22')]()[_0x3695('0x23')](function(){_0xdb0934[_0x3695('0x15')](0xcc)[_0x3695('0x16')]();});}};}function handleEntityNotFound(_0x534d38,_0x180f77){return function(_0x48c2fd){if(!_0x48c2fd){_0x534d38[_0x3695('0x14')](0x194);}return _0x48c2fd;};}function handleError(_0x5319f4,_0xe085de){_0xe085de=_0xe085de||0x1f4;return function(_0x5adea3){logger[_0x3695('0x24')](_0x5adea3[_0x3695('0x25')]);if(_0x5adea3[_0x3695('0x26')]){delete _0x5adea3[_0x3695('0x26')];}_0x5319f4[_0x3695('0x15')](_0xe085de)[_0x3695('0x27')](_0x5adea3);};}exports['index']=function(_0x2be6ee,_0x354ae0){var _0x5f193c={},_0x392107={},_0x4d0742={'count':0x0,'rows':[]};var _0x39c39f=_[_0x3695('0x28')](db[_0x3695('0x29')][_0x3695('0x2a')],function(_0x30a5ba){return{'name':_0x30a5ba[_0x3695('0x2b')],'type':_0x30a5ba[_0x3695('0x2c')][_0x3695('0x2d')]};});_0x392107['model']=_[_0x3695('0x28')](_0x39c39f,_0x3695('0x26'));_0x392107[_0x3695('0x2e')]=_['keys'](_0x2be6ee['query']);_0x392107[_0x3695('0x2f')]=_['intersection'](_0x392107[_0x3695('0x30')],_0x392107[_0x3695('0x2e')]);_0x5f193c['attributes']=_[_0x3695('0x31')](_0x392107['model'],qs[_0x3695('0x32')](_0x2be6ee[_0x3695('0x2e')][_0x3695('0x32')]));_0x5f193c[_0x3695('0x33')]=_0x5f193c[_0x3695('0x33')][_0x3695('0x34')]?_0x5f193c['attributes']:_0x392107[_0x3695('0x30')];if(!_0x2be6ee[_0x3695('0x2e')]['hasOwnProperty'](_0x3695('0x35'))){_0x5f193c[_0x3695('0x1a')]=qs['limit'](_0x2be6ee['query']['limit']);_0x5f193c['offset']=qs[_0x3695('0x18')](_0x2be6ee[_0x3695('0x2e')]['offset']);}_0x5f193c[_0x3695('0x36')]=qs[_0x3695('0x37')](_0x2be6ee[_0x3695('0x2e')][_0x3695('0x37')]);_0x5f193c['where']=qs['filters'](_[_0x3695('0x38')](_0x2be6ee[_0x3695('0x2e')],_0x392107['filters']),_0x39c39f);if(_0x2be6ee[_0x3695('0x2e')][_0x3695('0x39')]){_0x5f193c[_0x3695('0x3a')]=_[_0x3695('0x3b')](_0x5f193c[_0x3695('0x3a')],{'$or':_[_0x3695('0x28')](_0x39c39f,function(_0x36cfd5){if(_0x36cfd5[_0x3695('0x2c')]!==_0x3695('0x3c')){var _0x927c71={};_0x927c71[_0x36cfd5[_0x3695('0x26')]]={'$like':'%'+_0x2be6ee[_0x3695('0x2e')][_0x3695('0x39')]+'%'};return _0x927c71;}})});}_0x5f193c=_[_0x3695('0x3b')]({},_0x5f193c,_0x2be6ee[_0x3695('0x3d')]);var _0x318551={'where':_0x5f193c['where']};return db[_0x3695('0x29')][_0x3695('0x1b')](_0x318551)[_0x3695('0x23')](function(_0xb0931){_0x4d0742[_0x3695('0x1b')]=_0xb0931;if(_0x2be6ee[_0x3695('0x2e')][_0x3695('0x3e')]){_0x5f193c['include']=[{'all':!![]}];}return db[_0x3695('0x29')][_0x3695('0x3f')](_0x5f193c);})[_0x3695('0x23')](function(_0x547af9){_0x4d0742[_0x3695('0x40')]=_0x547af9;return _0x4d0742;})[_0x3695('0x23')](respondWithFilteredResult(_0x354ae0,_0x5f193c))[_0x3695('0x41')](handleError(_0x354ae0,null));};exports[_0x3695('0x42')]=function(_0x22d1e1,_0x322923){var _0x4261d1={'raw':!![],'where':{'id':_0x22d1e1[_0x3695('0x43')]['id']}},_0x5b825a={};_0x5b825a['model']=_['keys'](db[_0x3695('0x29')]['rawAttributes']);_0x5b825a[_0x3695('0x2e')]=_[_0x3695('0x44')](_0x22d1e1[_0x3695('0x2e')]);_0x5b825a[_0x3695('0x2f')]=_['intersection'](_0x5b825a[_0x3695('0x30')],_0x5b825a[_0x3695('0x2e')]);_0x4261d1[_0x3695('0x33')]=_['intersection'](_0x5b825a[_0x3695('0x30')],qs[_0x3695('0x32')](_0x22d1e1[_0x3695('0x2e')][_0x3695('0x32')]));_0x4261d1[_0x3695('0x33')]=_0x4261d1[_0x3695('0x33')][_0x3695('0x34')]?_0x4261d1[_0x3695('0x33')]:_0x5b825a[_0x3695('0x30')];if(_0x22d1e1['query']['includeAll']){_0x4261d1[_0x3695('0x45')]=[{'all':!![]}];}_0x4261d1=_[_0x3695('0x3b')]({},_0x4261d1,_0x22d1e1[_0x3695('0x3d')]);return db['FreshdeskField'][_0x3695('0x46')](_0x4261d1)[_0x3695('0x23')](handleEntityNotFound(_0x322923,null))[_0x3695('0x23')](respondWithResult(_0x322923,null))['catch'](handleError(_0x322923,null));};exports[_0x3695('0x47')]=function(_0x161752,_0x3d6a61){return db[_0x3695('0x29')][_0x3695('0x47')](_0x161752['body'],{})[_0x3695('0x23')](respondWithResult(_0x3d6a61,0xc9))[_0x3695('0x41')](handleError(_0x3d6a61,null));};exports[_0x3695('0x21')]=function(_0x361a9f,_0x557619){if(_0x361a9f[_0x3695('0x48')]['id']){delete _0x361a9f['body']['id'];}return db['FreshdeskField'][_0x3695('0x46')]({'where':{'id':_0x361a9f[_0x3695('0x43')]['id']}})[_0x3695('0x23')](handleEntityNotFound(_0x557619,null))[_0x3695('0x23')](saveUpdates(_0x361a9f[_0x3695('0x48')],null))['then'](respondWithResult(_0x557619,null))['catch'](handleError(_0x557619,null));};exports['destroy']=function(_0x5173b8,_0x5eeaca){return db['FreshdeskField']['find']({'where':{'id':_0x5173b8['params']['id']}})[_0x3695('0x23')](handleEntityNotFound(_0x5eeaca,null))[_0x3695('0x23')](removeEntity(_0x5eeaca,null))['catch'](handleError(_0x5eeaca,null));};
\ No newline at end of file
+var _0x0db9=['where','filter','merge','FreshdeskField','includeAll','include','findAll','rows','catch','show','keys','options','find','create','body','params','destroy','eml-format','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort'];(function(_0x36a236,_0x3cc5fc){var _0xa4ab27=function(_0xac60ea){while(--_0xac60ea){_0x36a236['push'](_0x36a236['shift']());}};_0xa4ab27(++_0x3cc5fc);}(_0x0db9,0xa3));var _0x90db=function(_0x409fb8,_0x5ab3d3){_0x409fb8=_0x409fb8-0x0;var _0x278270=_0x0db9[_0x409fb8];return _0x278270;};'use strict';var emlformat=require(_0x90db('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x90db('0x1'));var moment=require(_0x90db('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x90db('0x3'));var util=require('util');var path=require(_0x90db('0x4'));var sox=require(_0x90db('0x5'));var csv=require('to-csv');var ejs=require(_0x90db('0x6'));var fs=require('fs');var fs_extra=require(_0x90db('0x7'));var _=require(_0x90db('0x8'));var squel=require(_0x90db('0x9'));var crypto=require(_0x90db('0xa'));var jsforce=require(_0x90db('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x90db('0xc'));var querystring=require(_0x90db('0xd'));var Papa=require(_0x90db('0xe'));var Redis=require(_0x90db('0xf'));var authService=require(_0x90db('0x10'));var qs=require(_0x90db('0x11'));var as=require(_0x90db('0x12'));var hardwareService=require(_0x90db('0x13'));var logger=require(_0x90db('0x14'))(_0x90db('0x15'));var utils=require(_0x90db('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x90db('0x17'));var db=require(_0x90db('0x18'))['db'];function respondWithStatusCode(_0x45ad3c,_0x436327){_0x436327=_0x436327||0xcc;return function(_0x1b410d){if(_0x1b410d){return _0x45ad3c[_0x90db('0x19')](_0x436327);}return _0x45ad3c[_0x90db('0x1a')](_0x436327)[_0x90db('0x1b')]();};}function respondWithResult(_0x7826f7,_0x309aea){_0x309aea=_0x309aea||0xc8;return function(_0x334e22){if(_0x334e22){return _0x7826f7[_0x90db('0x1a')](_0x309aea)[_0x90db('0x1c')](_0x334e22);}};}function respondWithFilteredResult(_0xda2abe,_0x544226){return function(_0x3124d4){if(_0x3124d4){var _0x5ef456=typeof _0x544226[_0x90db('0x1d')]===_0x90db('0x1e')&&typeof _0x544226[_0x90db('0x1f')]===_0x90db('0x1e');var _0x32ff04=_0x3124d4[_0x90db('0x20')];var _0x15e33e=_0x5ef456?0x0:_0x544226[_0x90db('0x1d')];var _0x24a16a=_0x5ef456?_0x3124d4[_0x90db('0x20')]:_0x544226['offset']+_0x544226[_0x90db('0x1f')];var _0x445a22;if(_0x24a16a>=_0x32ff04){_0x24a16a=_0x32ff04;_0x445a22=0xc8;}else{_0x445a22=0xce;}_0xda2abe['status'](_0x445a22);return _0xda2abe['set'](_0x90db('0x21'),_0x15e33e+'-'+_0x24a16a+'/'+_0x32ff04)[_0x90db('0x1c')](_0x3124d4);}return null;};}function patchUpdates(_0x300dc2){return function(_0x3a58c4){try{jsonpatch[_0x90db('0x22')](_0x3a58c4,_0x300dc2,!![]);}catch(_0x168eaf){return BPromise[_0x90db('0x23')](_0x168eaf);}return _0x3a58c4['save']();};}function saveUpdates(_0xb45340,_0x1aeab9){return function(_0x23934a){if(_0x23934a){return _0x23934a[_0x90db('0x24')](_0xb45340)['then'](function(_0x43028e){return _0x43028e;});}return null;};}function removeEntity(_0x5a98f6,_0x459068){return function(_0x19f9c6){if(_0x19f9c6){return _0x19f9c6['destroy']()[_0x90db('0x25')](function(){_0x5a98f6[_0x90db('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f8469,_0x3e3fbd){return function(_0x5b3c09){if(!_0x5b3c09){_0x2f8469[_0x90db('0x19')](0x194);}return _0x5b3c09;};}function handleError(_0xe026cf,_0x1cc660){_0x1cc660=_0x1cc660||0x1f4;return function(_0x94cd84){logger['error'](_0x94cd84[_0x90db('0x26')]);if(_0x94cd84[_0x90db('0x27')]){delete _0x94cd84[_0x90db('0x27')];}_0xe026cf[_0x90db('0x1a')](_0x1cc660)[_0x90db('0x28')](_0x94cd84);};}exports[_0x90db('0x29')]=function(_0x44b5b6,_0x3c7f67){var _0x4c6311={},_0x3489d1={},_0x552c2e={'count':0x0,'rows':[]};var _0xa2bb=_[_0x90db('0x2a')](db['FreshdeskField'][_0x90db('0x2b')],function(_0xfc4ceb){return{'name':_0xfc4ceb[_0x90db('0x2c')],'type':_0xfc4ceb[_0x90db('0x2d')]['key']};});_0x3489d1[_0x90db('0x2e')]=_[_0x90db('0x2a')](_0xa2bb,_0x90db('0x27'));_0x3489d1['query']=_['keys'](_0x44b5b6[_0x90db('0x2f')]);_0x3489d1[_0x90db('0x30')]=_[_0x90db('0x31')](_0x3489d1['model'],_0x3489d1[_0x90db('0x2f')]);_0x4c6311[_0x90db('0x32')]=_['intersection'](_0x3489d1[_0x90db('0x2e')],qs[_0x90db('0x33')](_0x44b5b6['query'][_0x90db('0x33')]));_0x4c6311[_0x90db('0x32')]=_0x4c6311[_0x90db('0x32')][_0x90db('0x34')]?_0x4c6311['attributes']:_0x3489d1['model'];if(!_0x44b5b6[_0x90db('0x2f')]['hasOwnProperty'](_0x90db('0x35'))){_0x4c6311[_0x90db('0x1f')]=qs[_0x90db('0x1f')](_0x44b5b6['query'][_0x90db('0x1f')]);_0x4c6311['offset']=qs[_0x90db('0x1d')](_0x44b5b6[_0x90db('0x2f')]['offset']);}_0x4c6311[_0x90db('0x36')]=qs[_0x90db('0x37')](_0x44b5b6[_0x90db('0x2f')][_0x90db('0x37')]);_0x4c6311[_0x90db('0x38')]=qs[_0x90db('0x30')](_['pick'](_0x44b5b6[_0x90db('0x2f')],_0x3489d1[_0x90db('0x30')]),_0xa2bb);if(_0x44b5b6['query'][_0x90db('0x39')]){_0x4c6311[_0x90db('0x38')]=_[_0x90db('0x3a')](_0x4c6311['where'],{'$or':_[_0x90db('0x2a')](_0xa2bb,function(_0x2c9f57){if(_0x2c9f57['type']!=='VIRTUAL'){var _0x57c06b={};_0x57c06b[_0x2c9f57['name']]={'$like':'%'+_0x44b5b6[_0x90db('0x2f')][_0x90db('0x39')]+'%'};return _0x57c06b;}})});}_0x4c6311=_[_0x90db('0x3a')]({},_0x4c6311,_0x44b5b6['options']);var _0x55b0b2={'where':_0x4c6311[_0x90db('0x38')]};return db[_0x90db('0x3b')]['count'](_0x55b0b2)[_0x90db('0x25')](function(_0x592c01){_0x552c2e[_0x90db('0x20')]=_0x592c01;if(_0x44b5b6[_0x90db('0x2f')][_0x90db('0x3c')]){_0x4c6311[_0x90db('0x3d')]=[{'all':!![]}];}return db[_0x90db('0x3b')][_0x90db('0x3e')](_0x4c6311);})[_0x90db('0x25')](function(_0x1d6f9a){_0x552c2e[_0x90db('0x3f')]=_0x1d6f9a;return _0x552c2e;})['then'](respondWithFilteredResult(_0x3c7f67,_0x4c6311))[_0x90db('0x40')](handleError(_0x3c7f67,null));};exports[_0x90db('0x41')]=function(_0x2e1fc8,_0xd45db3){var _0x4611f1={'raw':!![],'where':{'id':_0x2e1fc8['params']['id']}},_0x4f0b46={};_0x4f0b46[_0x90db('0x2e')]=_['keys'](db[_0x90db('0x3b')][_0x90db('0x2b')]);_0x4f0b46[_0x90db('0x2f')]=_[_0x90db('0x42')](_0x2e1fc8[_0x90db('0x2f')]);_0x4f0b46['filters']=_['intersection'](_0x4f0b46['model'],_0x4f0b46[_0x90db('0x2f')]);_0x4611f1[_0x90db('0x32')]=_[_0x90db('0x31')](_0x4f0b46['model'],qs[_0x90db('0x33')](_0x2e1fc8[_0x90db('0x2f')][_0x90db('0x33')]));_0x4611f1[_0x90db('0x32')]=_0x4611f1['attributes'][_0x90db('0x34')]?_0x4611f1[_0x90db('0x32')]:_0x4f0b46[_0x90db('0x2e')];if(_0x2e1fc8[_0x90db('0x2f')]['includeAll']){_0x4611f1['include']=[{'all':!![]}];}_0x4611f1=_[_0x90db('0x3a')]({},_0x4611f1,_0x2e1fc8[_0x90db('0x43')]);return db[_0x90db('0x3b')][_0x90db('0x44')](_0x4611f1)['then'](handleEntityNotFound(_0xd45db3,null))[_0x90db('0x25')](respondWithResult(_0xd45db3,null))['catch'](handleError(_0xd45db3,null));};exports[_0x90db('0x45')]=function(_0x2e4a8a,_0x576449){return db[_0x90db('0x3b')][_0x90db('0x45')](_0x2e4a8a[_0x90db('0x46')],{})[_0x90db('0x25')](respondWithResult(_0x576449,0xc9))[_0x90db('0x40')](handleError(_0x576449,null));};exports[_0x90db('0x24')]=function(_0x407f50,_0x62b965){if(_0x407f50[_0x90db('0x46')]['id']){delete _0x407f50[_0x90db('0x46')]['id'];}return db[_0x90db('0x3b')]['find']({'where':{'id':_0x407f50[_0x90db('0x47')]['id']}})[_0x90db('0x25')](handleEntityNotFound(_0x62b965,null))[_0x90db('0x25')](saveUpdates(_0x407f50[_0x90db('0x46')],null))[_0x90db('0x25')](respondWithResult(_0x62b965,null))[_0x90db('0x40')](handleError(_0x62b965,null));};exports[_0x90db('0x48')]=function(_0x3a768b,_0x43c760){return db[_0x90db('0x3b')][_0x90db('0x44')]({'where':{'id':_0x3a768b[_0x90db('0x47')]['id']}})['then'](handleEntityNotFound(_0x43c760,null))[_0x90db('0x25')](removeEntity(_0x43c760,null))['catch'](handleError(_0x43c760,null));};
\ No newline at end of file
index 71e023d..6f1e6a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2e2=['api','moment','bluebird','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','lodash','util','../../config/logger'];(function(_0x4c87c6,_0x249281){var _0x5b01b1=function(_0x4a753f){while(--_0x4a753f){_0x4c87c6['push'](_0x4c87c6['shift']());}};_0x5b01b1(++_0x249281);}(_0xd2e2,0xa2));var _0x2d2e=function(_0x112f57,_0x2434cc){_0x112f57=_0x112f57-0x0;var _0x11217b=_0xd2e2[_0x112f57];return _0x11217b;};'use strict';var _=require(_0x2d2e('0x0'));var util=require(_0x2d2e('0x1'));var logger=require(_0x2d2e('0x2'))(_0x2d2e('0x3'));var moment=require(_0x2d2e('0x4'));var BPromise=require(_0x2d2e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d2e('0x6'));var rimraf=require(_0x2d2e('0x7'));var config=require(_0x2d2e('0x8'));var attributes=require(_0x2d2e('0x9'));module[_0x2d2e('0xa')]=function(_0x55cc13,_0x2adde5){return _0x55cc13[_0x2d2e('0xb')](_0x2d2e('0xc'),attributes,{'tableName':_0x2d2e('0xd'),'paranoid':![],'indexes':[{'name':_0x2d2e('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','FreshdeskField','idField','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports'];(function(_0x1498ac,_0x4171e1){var _0x2ceb5b=function(_0x4103bc){while(--_0x4103bc){_0x1498ac['push'](_0x1498ac['shift']());}};_0x2ceb5b(++_0x4171e1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x0a9e('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 44003e1..c785f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da3=['info','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x57979a,_0x41a396){var _0x2e3aec=function(_0x15d3e1){while(--_0x15d3e1){_0x57979a['push'](_0x57979a['shift']());}};_0x2e3aec(++_0x41a396);}(_0x2da3,0x18e));var _0x32da=function(_0x1199b8,_0x147130){_0x1199b8=_0x1199b8-0x0;var _0x20ca30=_0x2da3[_0x1199b8];return _0x20ca30;};'use strict';var _=require(_0x32da('0x0'));var util=require(_0x32da('0x1'));var moment=require(_0x32da('0x2'));var BPromise=require(_0x32da('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x32da('0x4'))['db'];var utils=require(_0x32da('0x5'));var logger=require(_0x32da('0x6'))(_0x32da('0x7'));var config=require(_0x32da('0x8'));var jayson=require(_0x32da('0x9'));var client=jayson['client'][_0x32da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d8cc2,_0x1506f4,_0x28d063){return new BPromise(function(_0x3b4259,_0x54e4cc){return client[_0x32da('0xb')](_0x1d8cc2,_0x28d063)[_0x32da('0xc')](function(_0x40f701){logger['info'](_0x32da('0xd'),_0x1506f4,_0x32da('0xe'));logger[_0x32da('0xf')](_0x32da('0x10'),_0x1506f4,_0x32da('0xe'),JSON[_0x32da('0x11')](_0x40f701));if(_0x40f701[_0x32da('0x12')]){if(_0x40f701[_0x32da('0x12')]['code']===0x1f4){logger[_0x32da('0x12')](_0x32da('0xd'),_0x1506f4,_0x40f701[_0x32da('0x12')]['message']);return _0x54e4cc(_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);}logger[_0x32da('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x1506f4,_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);return _0x3b4259(_0x40f701[_0x32da('0x12')][_0x32da('0x13')]);}else{logger[_0x32da('0x14')](_0x32da('0xd'),_0x1506f4,'request\x20sent');_0x3b4259(_0x40f701['result'][_0x32da('0x13')]);}})[_0x32da('0x15')](function(_0x68e272){logger['error'](_0x32da('0xd'),_0x1506f4,_0x68e272);_0x54e4cc(_0x68e272);});});}
\ No newline at end of file
+var _0x5093=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x315f75,_0x453472){var _0x2365f1=function(_0x2f5aa4){while(--_0x2f5aa4){_0x315f75['push'](_0x315f75['shift']());}};_0x2365f1(++_0x453472);}(_0x5093,0xc9));var _0x3509=function(_0xa990b7,_0x26c527){_0xa990b7=_0xa990b7-0x0;var _0x52c99c=_0x5093[_0xa990b7];return _0x52c99c;};'use strict';var _=require(_0x3509('0x0'));var util=require(_0x3509('0x1'));var moment=require(_0x3509('0x2'));var BPromise=require(_0x3509('0x3'));var rs=require(_0x3509('0x4'));var fs=require('fs');var Redis=require(_0x3509('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3509('0x6'));var logger=require(_0x3509('0x7'))(_0x3509('0x8'));var config=require(_0x3509('0x9'));var jayson=require(_0x3509('0xa'));var client=jayson[_0x3509('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1052b3,_0x3b8303,_0x195058){return new BPromise(function(_0x310a39,_0x35920d){return client['request'](_0x1052b3,_0x195058)[_0x3509('0xc')](function(_0xfbfe5b){logger['info'](_0x3509('0xd'),_0x3b8303,_0x3509('0xe'));logger[_0x3509('0xf')](_0x3509('0x10'),_0x3b8303,_0x3509('0xe'),JSON[_0x3509('0x11')](_0xfbfe5b));if(_0xfbfe5b[_0x3509('0x12')]){if(_0xfbfe5b[_0x3509('0x12')][_0x3509('0x13')]===0x1f4){logger[_0x3509('0x12')](_0x3509('0xd'),_0x3b8303,_0xfbfe5b[_0x3509('0x12')][_0x3509('0x14')]);return _0x35920d(_0xfbfe5b[_0x3509('0x12')][_0x3509('0x14')]);}logger['error']('FreshdeskField,\x20%s,\x20%s',_0x3b8303,_0xfbfe5b['error']['message']);return _0x310a39(_0xfbfe5b[_0x3509('0x12')][_0x3509('0x14')]);}else{logger[_0x3509('0x15')](_0x3509('0xd'),_0x3b8303,_0x3509('0xe'));_0x310a39(_0xfbfe5b['result'][_0x3509('0x14')]);}})[_0x3509('0x16')](function(_0x12a879){logger[_0x3509('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x3b8303,_0x12a879);_0x35920d(_0x12a879);});});}
\ No newline at end of file
index 7071241..77140fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','get'];(function(_0x25e410,_0x1622b8){var _0x462966=function(_0x3214a6){while(--_0x3214a6){_0x25e410['push'](_0x25e410['shift']());}};_0x462966(++_0x1622b8);}(_0xea28,0x13a));var _0x8ea2=function(_0x2990ab,_0x47458f){_0x2990ab=_0x2990ab-0x0;var _0x248d70=_0xea28[_0x2990ab];return _0x248d70;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xa')](_0x8ea2('0xf'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0xa')](_0x8ea2('0x11'),auth[_0x8ea2('0xd')](),controller['getFields']);router['post']('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router[_0x8ea2('0x13')]('/:id/configurations',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x14')]);router[_0x8ea2('0x15')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller['update']);router[_0x8ea2('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x8ea2('0x17')]);module[_0x8ea2('0x18')]=router;
\ No newline at end of file
+var _0x57f8=['/:id','/:id/configurations','/:id/fields','post','create','addConfiguration','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated'];(function(_0x48f85e,_0x35d236){var _0x1a6fa3=function(_0x25ceeb){while(--_0x25ceeb){_0x48f85e['push'](_0x48f85e['shift']());}};_0x1a6fa3(++_0x35d236);}(_0x57f8,0x198));var _0x857f=function(_0x2984d0,_0x1a7211){_0x2984d0=_0x2984d0-0x0;var _0x2885f2=_0x57f8[_0x2984d0];return _0x2885f2;};'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['show']);router[_0x857f('0xa')](_0x857f('0xd'),auth[_0x857f('0xb')](),controller['getConfigurations']);router[_0x857f('0xa')](_0x857f('0xe'),auth[_0x857f('0xb')](),controller['getFields']);router[_0x857f('0xf')]('/',auth[_0x857f('0xb')](),controller[_0x857f('0x10')]);router[_0x857f('0xf')](_0x857f('0xd'),auth[_0x857f('0xb')](),controller[_0x857f('0x11')]);router['put'](_0x857f('0xc'),auth[_0x857f('0xb')](),controller[_0x857f('0x12')]);router[_0x857f('0x13')](_0x857f('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x857f('0x14')]=router;
\ No newline at end of file
index 84ea53e..a87335f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['remoteUri','sequelize','exports','STRING','username'];(function(_0x335da3,_0x8bac2a){var _0x359a6d=function(_0x15bf93){while(--_0x15bf93){_0x335da3['push'](_0x335da3['shift']());}};_0x359a6d(++_0x8bac2a);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x2cc973,_0x554a8c){_0x2cc973=_0x2cc973-0x0;var _0x3adfe1=_0xbbbc[_0x2cc973];return _0x3adfe1;};'use strict';var Sequelize=require(_0xcbbb('0x0'));module[_0xcbbb('0x1')]={'name':{'type':Sequelize[_0xcbbb('0x2')]},'description':{'type':Sequelize[_0xcbbb('0x2')]},'username':{'type':Sequelize[_0xcbbb('0x2')],'unique':_0xcbbb('0x3')},'apiKey':{'type':Sequelize[_0xcbbb('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xcbbb('0x4')},'serverUrl':{'type':Sequelize[_0xcbbb('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x7096=['exports','STRING','username','remoteUri'];(function(_0x4aacdf,_0x10db04){var _0x13f73d=function(_0x177212){while(--_0x177212){_0x4aacdf['push'](_0x4aacdf['shift']());}};_0x13f73d(++_0x10db04);}(_0x7096,0x10c));var _0x6709=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7096[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module[_0x6709('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6709('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6709('0x2')},'apiKey':{'type':Sequelize[_0x6709('0x1')]},'remoteUri':{'type':Sequelize[_0x6709('0x1')],'unique':_0x6709('0x3')},'serverUrl':{'type':Sequelize[_0x6709('0x1')],'allowNull':![]}};
\ No newline at end of file
index 5e49761..19bb7d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe013=['getSubjects','getDescriptions','FreshsalesField','Descriptions','remoteUri','apiKey','username','slice','substring','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','papaparse','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','index','FreshsalesAccount','rawAttributes','fieldName','type','model','map','query','keys','intersection','fields','length','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','filters','find','catch','body','update','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','Subjects'];(function(_0x3e75d5,_0x1871a5){var _0x2e6908=function(_0xe44a46){while(--_0xe44a46){_0x3e75d5['push'](_0x3e75d5['shift']());}};_0x2e6908(++_0x1871a5);}(_0xe013,0x140));var _0x3e01=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xe013[_0x29b609];return _0x54c952;};'use strict';var emlformat=require(_0x3e01('0x0'));var rimraf=require(_0x3e01('0x1'));var zipdir=require(_0x3e01('0x2'));var jsonpatch=require(_0x3e01('0x3'));var rp=require(_0x3e01('0x4'));var moment=require('moment');var BPromise=require(_0x3e01('0x5'));var Mustache=require(_0x3e01('0x6'));var util=require(_0x3e01('0x7'));var path=require(_0x3e01('0x8'));var sox=require('sox');var csv=require(_0x3e01('0x9'));var ejs=require(_0x3e01('0xa'));var fs=require('fs');var fs_extra=require(_0x3e01('0xb'));var _=require(_0x3e01('0xc'));var squel=require('squel');var crypto=require(_0x3e01('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3e01('0x9'));var querystring=require('querystring');var Papa=require(_0x3e01('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3e01('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3e01('0x10'));var licenseUtil=require(_0x3e01('0x11'));var db=require(_0x3e01('0x12'))['db'];var integrations=require(_0x3e01('0x13'));function respondWithStatusCode(_0xc99f45,_0x54cf08){_0x54cf08=_0x54cf08||0xcc;return function(_0x174028){if(_0x174028){return _0xc99f45['sendStatus'](_0x54cf08);}return _0xc99f45[_0x3e01('0x14')](_0x54cf08)[_0x3e01('0x15')]();};}function respondWithResult(_0x581930,_0x3c4acb){_0x3c4acb=_0x3c4acb||0xc8;return function(_0x1fc53e){if(_0x1fc53e){return _0x581930['status'](_0x3c4acb)[_0x3e01('0x16')](_0x1fc53e);}};}function respondWithFilteredResult(_0x787ac,_0x31240f){return function(_0x120b27){if(_0x120b27){var _0x40fabf=typeof _0x31240f[_0x3e01('0x17')]===_0x3e01('0x18')&&typeof _0x31240f[_0x3e01('0x19')]==='undefined';var _0x43ae77=_0x120b27[_0x3e01('0x1a')];var _0x16925d=_0x40fabf?0x0:_0x31240f[_0x3e01('0x17')];var _0x227f06=_0x40fabf?_0x120b27[_0x3e01('0x1a')]:_0x31240f[_0x3e01('0x17')]+_0x31240f[_0x3e01('0x19')];var _0x34cfcb;if(_0x227f06>=_0x43ae77){_0x227f06=_0x43ae77;_0x34cfcb=0xc8;}else{_0x34cfcb=0xce;}_0x787ac[_0x3e01('0x14')](_0x34cfcb);return _0x787ac[_0x3e01('0x1b')](_0x3e01('0x1c'),_0x16925d+'-'+_0x227f06+'/'+_0x43ae77)[_0x3e01('0x16')](_0x120b27);}return null;};}function patchUpdates(_0x17dbeb){return function(_0x3542bc){try{jsonpatch[_0x3e01('0x1d')](_0x3542bc,_0x17dbeb,!![]);}catch(_0x1f2a11){return BPromise[_0x3e01('0x1e')](_0x1f2a11);}return _0x3542bc[_0x3e01('0x1f')]();};}function saveUpdates(_0x4b28e1,_0x2731a5){return function(_0x28c23a){if(_0x28c23a){return _0x28c23a['update'](_0x4b28e1)[_0x3e01('0x20')](function(_0x42c99e){return _0x42c99e;});}return null;};}function removeEntity(_0x23bfa5,_0x5f2787){return function(_0x21dbc9){if(_0x21dbc9){return _0x21dbc9[_0x3e01('0x21')]()[_0x3e01('0x20')](function(){_0x23bfa5[_0x3e01('0x14')](0xcc)[_0x3e01('0x15')]();});}};}function handleEntityNotFound(_0x1cecd8,_0x4fc18b){return function(_0x1a9162){if(!_0x1a9162){_0x1cecd8[_0x3e01('0x22')](0x194);}return _0x1a9162;};}function handleError(_0xb2a604,_0x258568){_0x258568=_0x258568||0x1f4;return function(_0x1068b1){logger[_0x3e01('0x23')](_0x1068b1[_0x3e01('0x24')]);if(_0x1068b1[_0x3e01('0x25')]){delete _0x1068b1['name'];}_0xb2a604[_0x3e01('0x14')](_0x258568)['send'](_0x1068b1);};}exports[_0x3e01('0x26')]=function(_0xe1234a,_0xae1589){var _0x3ab0d2={},_0x186105={},_0x5fb3de={'count':0x0,'rows':[]};var _0x487ce3=_['map'](db[_0x3e01('0x27')][_0x3e01('0x28')],function(_0x5b6df0){return{'name':_0x5b6df0[_0x3e01('0x29')],'type':_0x5b6df0[_0x3e01('0x2a')]['key']};});_0x186105[_0x3e01('0x2b')]=_[_0x3e01('0x2c')](_0x487ce3,'name');_0x186105[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0xe1234a['query']);_0x186105['filters']=_['intersection'](_0x186105[_0x3e01('0x2b')],_0x186105[_0x3e01('0x2d')]);_0x3ab0d2['attributes']=_[_0x3e01('0x2f')](_0x186105['model'],qs[_0x3e01('0x30')](_0xe1234a['query'][_0x3e01('0x30')]));_0x3ab0d2['attributes']=_0x3ab0d2['attributes'][_0x3e01('0x31')]?_0x3ab0d2[_0x3e01('0x32')]:_0x186105[_0x3e01('0x2b')];if(!_0xe1234a['query']['hasOwnProperty'](_0x3e01('0x33'))){_0x3ab0d2[_0x3e01('0x19')]=qs[_0x3e01('0x19')](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x19')]);_0x3ab0d2[_0x3e01('0x17')]=qs[_0x3e01('0x17')](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x17')]);}_0x3ab0d2[_0x3e01('0x34')]=qs['sort'](_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x35')]);_0x3ab0d2[_0x3e01('0x36')]=qs['filters'](_[_0x3e01('0x37')](_0xe1234a['query'],_0x186105['filters']),_0x487ce3);if(_0xe1234a[_0x3e01('0x2d')][_0x3e01('0x38')]){_0x3ab0d2[_0x3e01('0x36')]=_[_0x3e01('0x39')](_0x3ab0d2[_0x3e01('0x36')],{'$or':_[_0x3e01('0x2c')](_0x487ce3,function(_0x427f64){if(_0x427f64['type']!==_0x3e01('0x3a')){var _0x19ce85={};_0x19ce85[_0x427f64[_0x3e01('0x25')]]={'$like':'%'+_0xe1234a['query'][_0x3e01('0x38')]+'%'};return _0x19ce85;}})});}_0x3ab0d2=_[_0x3e01('0x39')]({},_0x3ab0d2,_0xe1234a[_0x3e01('0x3b')]);var _0x69c02={'where':_0x3ab0d2[_0x3e01('0x36')]};return db[_0x3e01('0x27')][_0x3e01('0x1a')](_0x69c02)[_0x3e01('0x20')](function(_0x3d56c3){_0x5fb3de['count']=_0x3d56c3;if(_0xe1234a['query'][_0x3e01('0x3c')]){_0x3ab0d2[_0x3e01('0x3d')]=[{'all':!![]}];}return db[_0x3e01('0x27')][_0x3e01('0x3e')](_0x3ab0d2);})[_0x3e01('0x20')](function(_0x4f2baf){_0x5fb3de[_0x3e01('0x3f')]=_0x4f2baf;return _0x5fb3de;})[_0x3e01('0x20')](respondWithFilteredResult(_0xae1589,_0x3ab0d2))['catch'](handleError(_0xae1589,null));};exports[_0x3e01('0x40')]=function(_0x5a98bc,_0x1ab634){var _0x47392c={'raw':![],'where':{'id':_0x5a98bc[_0x3e01('0x41')]['id']}},_0x40171f={};_0x40171f[_0x3e01('0x2b')]=_[_0x3e01('0x2e')](db['FreshsalesAccount'][_0x3e01('0x28')]);_0x40171f[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0x5a98bc[_0x3e01('0x2d')]);_0x40171f[_0x3e01('0x42')]=_[_0x3e01('0x2f')](_0x40171f['model'],_0x40171f[_0x3e01('0x2d')]);_0x47392c[_0x3e01('0x32')]=_[_0x3e01('0x2f')](_0x40171f[_0x3e01('0x2b')],qs[_0x3e01('0x30')](_0x5a98bc[_0x3e01('0x2d')]['fields']));_0x47392c[_0x3e01('0x32')]=_0x47392c[_0x3e01('0x32')]['length']?_0x47392c[_0x3e01('0x32')]:_0x40171f['model'];if(_0x5a98bc[_0x3e01('0x2d')][_0x3e01('0x3c')]){_0x47392c[_0x3e01('0x3d')]=[{'all':!![]}];}_0x47392c=_['merge']({},_0x47392c,_0x5a98bc[_0x3e01('0x3b')]);return db[_0x3e01('0x27')][_0x3e01('0x43')](_0x47392c)[_0x3e01('0x20')](handleEntityNotFound(_0x1ab634,null))[_0x3e01('0x20')](respondWithResult(_0x1ab634,null))[_0x3e01('0x44')](handleError(_0x1ab634,null));};exports['create']=function(_0x30f9f7,_0x954fee){return db[_0x3e01('0x27')]['create'](_0x30f9f7[_0x3e01('0x45')],{})[_0x3e01('0x20')](respondWithResult(_0x954fee,0xc9))[_0x3e01('0x44')](handleError(_0x954fee,null));};exports[_0x3e01('0x46')]=function(_0x99534d,_0x120352){if(_0x99534d[_0x3e01('0x45')]['id']){delete _0x99534d['body']['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x99534d['params']['id']}})[_0x3e01('0x20')](handleEntityNotFound(_0x120352,null))[_0x3e01('0x20')](saveUpdates(_0x99534d['body'],null))[_0x3e01('0x20')](respondWithResult(_0x120352,null))[_0x3e01('0x44')](handleError(_0x120352,null));};exports[_0x3e01('0x21')]=function(_0x1f3632,_0x5e597c){return db[_0x3e01('0x27')][_0x3e01('0x43')]({'where':{'id':_0x1f3632[_0x3e01('0x41')]['id']}})['then'](handleEntityNotFound(_0x5e597c,null))[_0x3e01('0x20')](removeEntity(_0x5e597c,null))['catch'](handleError(_0x5e597c,null));};exports[_0x3e01('0x47')]=function(_0x109574,_0x563603,_0x582c9f){var _0x4d5d44={};var _0x2dc52e={};var _0x8c9a9a;var _0x4e774e;return db[_0x3e01('0x27')][_0x3e01('0x48')]({'where':{'id':_0x109574[_0x3e01('0x41')]['id']}})[_0x3e01('0x20')](handleEntityNotFound(_0x563603,null))[_0x3e01('0x20')](function(_0x5cf007){if(_0x5cf007){_0x8c9a9a=_0x5cf007;_0x2dc52e[_0x3e01('0x2b')]=_[_0x3e01('0x2e')](db[_0x3e01('0x49')][_0x3e01('0x28')]);_0x2dc52e[_0x3e01('0x2d')]=_[_0x3e01('0x2e')](_0x109574['query']);_0x2dc52e[_0x3e01('0x42')]=_[_0x3e01('0x2f')](_0x2dc52e['model'],_0x2dc52e[_0x3e01('0x2d')]);_0x4d5d44[_0x3e01('0x32')]=_[_0x3e01('0x2f')](_0x2dc52e[_0x3e01('0x2b')],qs[_0x3e01('0x30')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x30')]));_0x4d5d44[_0x3e01('0x32')]=_0x4d5d44[_0x3e01('0x32')][_0x3e01('0x31')]?_0x4d5d44[_0x3e01('0x32')]:_0x2dc52e[_0x3e01('0x2b')];_0x4d5d44[_0x3e01('0x34')]=qs[_0x3e01('0x35')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x35')]);_0x4d5d44[_0x3e01('0x36')]=qs[_0x3e01('0x42')](_['pick'](_0x109574[_0x3e01('0x2d')],_0x2dc52e[_0x3e01('0x42')]));if(_0x109574[_0x3e01('0x2d')][_0x3e01('0x38')]){_0x4d5d44[_0x3e01('0x36')]=_[_0x3e01('0x39')](_0x4d5d44[_0x3e01('0x36')],{'$or':_[_0x3e01('0x2c')](_0x4d5d44['attributes'],function(_0x1323ec){var _0x182669={};_0x182669[_0x1323ec]={'$like':'%'+_0x109574[_0x3e01('0x2d')][_0x3e01('0x38')]+'%'};return _0x182669;})});}_0x4d5d44=_[_0x3e01('0x39')]({},_0x4d5d44,_0x109574['options']);return _0x8c9a9a[_0x3e01('0x47')](_0x4d5d44);}})[_0x3e01('0x20')](function(_0x31d8f0){if(_0x31d8f0){_0x4e774e=_0x31d8f0[_0x3e01('0x31')];if(!_0x109574[_0x3e01('0x2d')][_0x3e01('0x4a')](_0x3e01('0x33'))){_0x4d5d44['limit']=qs[_0x3e01('0x19')](_0x109574['query'][_0x3e01('0x19')]);_0x4d5d44[_0x3e01('0x17')]=qs[_0x3e01('0x17')](_0x109574[_0x3e01('0x2d')][_0x3e01('0x17')]);}return _0x8c9a9a['getConfigurations'](_0x4d5d44);}})[_0x3e01('0x20')](function(_0x2b99fc){if(_0x2b99fc){return _0x2b99fc?{'count':_0x4e774e,'rows':_0x2b99fc}:null;}})['then'](respondWithResult(_0x563603,null))['catch'](handleError(_0x563603,null));};exports['addConfiguration']=function(_0x2f0802,_0x1bb87a,_0x2d49dd){if(_0x2f0802[_0x3e01('0x45')]['id']){delete _0x2f0802[_0x3e01('0x45')]['id'];}return db['FreshsalesAccount'][_0x3e01('0x48')]({'where':{'id':_0x2f0802[_0x3e01('0x41')]['id']}})['then'](handleEntityNotFound(_0x1bb87a,null))[_0x3e01('0x20')](function(_0x52fb2a){if(_0x52fb2a){_0x2f0802[_0x3e01('0x45')]['AccountId']=_0x52fb2a['id'];_0x2f0802[_0x3e01('0x45')][_0x3e01('0x4b')]=integrations[_0x3e01('0x4c')](_0x2f0802['body']['channel'],_0x2f0802[_0x3e01('0x45')][_0x3e01('0x2a')]);_0x2f0802[_0x3e01('0x45')]['Descriptions']=integrations[_0x3e01('0x4d')](_0x2f0802[_0x3e01('0x45')]['channel'],_0x2f0802[_0x3e01('0x45')][_0x3e01('0x2a')]);return db[_0x3e01('0x49')]['create'](_0x2f0802[_0x3e01('0x45')],{'include':[{'model':db[_0x3e01('0x4e')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':_0x3e01('0x4f')}]});}return null;})[_0x3e01('0x20')](respondWithResult(_0x1bb87a,null))[_0x3e01('0x44')](handleError(_0x1bb87a,null));};exports['getFields']=function(_0x4c75f1,_0x23c32e,_0x266007){var _0x2e6684='';var _0x965bf2='';return db['FreshsalesAccount'][_0x3e01('0x48')]({'where':{'id':_0x4c75f1[_0x3e01('0x41')]['id']},'attributes':['id','username',_0x3e01('0x50'),_0x3e01('0x51')]})[_0x3e01('0x20')](handleEntityNotFound(_0x23c32e,null))[_0x3e01('0x20')](function(_0x4ca368){if(_0x4ca368){_0x965bf2=_0x4ca368[_0x3e01('0x52')];_0x2e6684=_0x4ca368[_0x3e01('0x50')];var _0x1eec7a=_0x4ca368[_0x3e01('0x50')][_0x3e01('0x53')](-0x1);if(_0x1eec7a==='/'){_0x2e6684=_0x2e6684[_0x3e01('0x54')](0x0,_0x2e6684[_0x3e01('0x55')](_0x1eec7a));}return rp({'method':_0x3e01('0x56'),'uri':util[_0x3e01('0x57')]('%s%s',_0x2e6684,_0x3e01('0x58')),'headers':{'Authorization':_0x3e01('0x59')+_0x4ca368[_0x3e01('0x51')]},'json':!![]});}})[_0x3e01('0x20')](function(_0x3e846f){if(_0x3e846f){var _0x17710a=_0x3e846f[_0x3e01('0x5a')];var _0x47de28=![];var _0x4e0b25=null;for(_0x4e0b25=0x0;_0x4e0b25<_0x17710a['length'];_0x4e0b25++){if(_0x17710a[_0x4e0b25]['email']===_0x965bf2){_0x47de28=!![];}}if(_0x47de28){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x3e01('0x5b')});}}})[_0x3e01('0x20')](respondWithResult(_0x23c32e,null))['catch'](function(_0x891f92){var _0x33629d=_0x4c75f1[_0x3e01('0x2d')]['test']?0x1f4:_0x891f92[_0x3e01('0x5c')]||0x1f4;logger['error'](_0x3e01('0x5d'),_0x3e01('0x5e'),_0x33629d,JSON[_0x3e01('0x5f')](_0x891f92));delete _0x891f92['name'];if(_0x33629d===0x191){_0x33629d=0x190;}_0x23c32e[_0x3e01('0x14')](_0x33629d)[_0x3e01('0x60')](_0x4c75f1[_0x3e01('0x2d')][_0x3e01('0x61')]?{'message':_0x3e01('0x62'),'statusCode':_0x891f92[_0x3e01('0x5c')]}:_0x891f92);});};
\ No newline at end of file
+var _0xeffd=['users','email','Requested\x20Resource\x20not\x20Found','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','statusCode','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','name','map','FreshsalesAccount','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','addConfiguration','AccountId','getSubjects','channel','Descriptions','FreshsalesField','username','remoteUri','apiKey','slice','substring','GET','format','%s%s','/api/selector/owners'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0xeffd,0x192));var _0xdeff=function(_0x58dcbf,_0x4b0461){_0x58dcbf=_0x58dcbf-0x0;var _0x15935a=_0xeffd[_0x58dcbf];return _0x15935a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdeff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xdeff('0x1'));var moment=require(_0xdeff('0x2'));var BPromise=require(_0xdeff('0x3'));var Mustache=require('mustache');var util=require(_0xdeff('0x4'));var path=require(_0xdeff('0x5'));var sox=require(_0xdeff('0x6'));var csv=require(_0xdeff('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdeff('0x8'));var _=require(_0xdeff('0x9'));var squel=require(_0xdeff('0xa'));var crypto=require(_0xdeff('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdeff('0x7'));var querystring=require(_0xdeff('0xc'));var Papa=require(_0xdeff('0xd'));var Redis=require(_0xdeff('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xdeff('0xf'));var as=require(_0xdeff('0x10'));var hardwareService=require(_0xdeff('0x11'));var logger=require(_0xdeff('0x12'))(_0xdeff('0x13'));var utils=require('../../config/utils');var config=require(_0xdeff('0x14'));var licenseUtil=require(_0xdeff('0x15'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x281cbb,_0xb1df08){_0xb1df08=_0xb1df08||0xcc;return function(_0x341a66){if(_0x341a66){return _0x281cbb[_0xdeff('0x16')](_0xb1df08);}return _0x281cbb[_0xdeff('0x17')](_0xb1df08)['end']();};}function respondWithResult(_0x29dbfb,_0x5d80c2){_0x5d80c2=_0x5d80c2||0xc8;return function(_0x3ea6ec){if(_0x3ea6ec){return _0x29dbfb['status'](_0x5d80c2)[_0xdeff('0x18')](_0x3ea6ec);}};}function respondWithFilteredResult(_0xe8967a,_0x1551cd){return function(_0x41f595){if(_0x41f595){var _0x5eb880=typeof _0x1551cd[_0xdeff('0x19')]===_0xdeff('0x1a')&&typeof _0x1551cd['limit']===_0xdeff('0x1a');var _0x1f25ed=_0x41f595[_0xdeff('0x1b')];var _0x3f1173=_0x5eb880?0x0:_0x1551cd[_0xdeff('0x19')];var _0x51ab87=_0x5eb880?_0x41f595[_0xdeff('0x1b')]:_0x1551cd['offset']+_0x1551cd[_0xdeff('0x1c')];var _0x336d99;if(_0x51ab87>=_0x1f25ed){_0x51ab87=_0x1f25ed;_0x336d99=0xc8;}else{_0x336d99=0xce;}_0xe8967a[_0xdeff('0x17')](_0x336d99);return _0xe8967a[_0xdeff('0x1d')](_0xdeff('0x1e'),_0x3f1173+'-'+_0x51ab87+'/'+_0x1f25ed)[_0xdeff('0x18')](_0x41f595);}return null;};}function patchUpdates(_0x5e88a3){return function(_0x717be2){try{jsonpatch[_0xdeff('0x1f')](_0x717be2,_0x5e88a3,!![]);}catch(_0x318c23){return BPromise[_0xdeff('0x20')](_0x318c23);}return _0x717be2['save']();};}function saveUpdates(_0x4e9900,_0xbe33f9){return function(_0x61bc7e){if(_0x61bc7e){return _0x61bc7e[_0xdeff('0x21')](_0x4e9900)[_0xdeff('0x22')](function(_0x4df303){return _0x4df303;});}return null;};}function removeEntity(_0x7a5c39,_0x2b8f80){return function(_0xf94152){if(_0xf94152){return _0xf94152[_0xdeff('0x23')]()[_0xdeff('0x22')](function(){_0x7a5c39[_0xdeff('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f2840,_0xb6c45){return function(_0x1cf734){if(!_0x1cf734){_0x2f2840[_0xdeff('0x16')](0x194);}return _0x1cf734;};}function handleError(_0x2514c3,_0x560a06){_0x560a06=_0x560a06||0x1f4;return function(_0x3aeeb4){logger['error'](_0x3aeeb4['stack']);if(_0x3aeeb4[_0xdeff('0x24')]){delete _0x3aeeb4[_0xdeff('0x24')];}_0x2514c3[_0xdeff('0x17')](_0x560a06)['send'](_0x3aeeb4);};}exports['index']=function(_0x3ddf55,_0x134447){var _0x274434={},_0x42861a={},_0x1e4f8a={'count':0x0,'rows':[]};var _0x3685f3=_[_0xdeff('0x25')](db[_0xdeff('0x26')]['rawAttributes'],function(_0x116555){return{'name':_0x116555[_0xdeff('0x27')],'type':_0x116555['type'][_0xdeff('0x28')]};});_0x42861a[_0xdeff('0x29')]=_['map'](_0x3685f3,_0xdeff('0x24'));_0x42861a[_0xdeff('0x2a')]=_[_0xdeff('0x2b')](_0x3ddf55[_0xdeff('0x2a')]);_0x42861a[_0xdeff('0x2c')]=_['intersection'](_0x42861a['model'],_0x42861a[_0xdeff('0x2a')]);_0x274434['attributes']=_[_0xdeff('0x2d')](_0x42861a[_0xdeff('0x29')],qs[_0xdeff('0x2e')](_0x3ddf55['query'][_0xdeff('0x2e')]));_0x274434[_0xdeff('0x2f')]=_0x274434[_0xdeff('0x2f')][_0xdeff('0x30')]?_0x274434[_0xdeff('0x2f')]:_0x42861a['model'];if(!_0x3ddf55[_0xdeff('0x2a')][_0xdeff('0x31')](_0xdeff('0x32'))){_0x274434[_0xdeff('0x1c')]=qs[_0xdeff('0x1c')](_0x3ddf55[_0xdeff('0x2a')][_0xdeff('0x1c')]);_0x274434['offset']=qs['offset'](_0x3ddf55[_0xdeff('0x2a')][_0xdeff('0x19')]);}_0x274434[_0xdeff('0x33')]=qs[_0xdeff('0x34')](_0x3ddf55['query'][_0xdeff('0x34')]);_0x274434['where']=qs[_0xdeff('0x2c')](_[_0xdeff('0x35')](_0x3ddf55['query'],_0x42861a[_0xdeff('0x2c')]),_0x3685f3);if(_0x3ddf55[_0xdeff('0x2a')][_0xdeff('0x36')]){_0x274434['where']=_[_0xdeff('0x37')](_0x274434[_0xdeff('0x38')],{'$or':_[_0xdeff('0x25')](_0x3685f3,function(_0x2fac5a){if(_0x2fac5a[_0xdeff('0x39')]!==_0xdeff('0x3a')){var _0x5e7f4d={};_0x5e7f4d[_0x2fac5a['name']]={'$like':'%'+_0x3ddf55[_0xdeff('0x2a')][_0xdeff('0x36')]+'%'};return _0x5e7f4d;}})});}_0x274434=_['merge']({},_0x274434,_0x3ddf55[_0xdeff('0x3b')]);var _0x1e2f4d={'where':_0x274434[_0xdeff('0x38')]};return db[_0xdeff('0x26')][_0xdeff('0x1b')](_0x1e2f4d)[_0xdeff('0x22')](function(_0x214310){_0x1e4f8a[_0xdeff('0x1b')]=_0x214310;if(_0x3ddf55['query'][_0xdeff('0x3c')]){_0x274434[_0xdeff('0x3d')]=[{'all':!![]}];}return db[_0xdeff('0x26')][_0xdeff('0x3e')](_0x274434);})[_0xdeff('0x22')](function(_0x36ab10){_0x1e4f8a['rows']=_0x36ab10;return _0x1e4f8a;})[_0xdeff('0x22')](respondWithFilteredResult(_0x134447,_0x274434))[_0xdeff('0x3f')](handleError(_0x134447,null));};exports[_0xdeff('0x40')]=function(_0x4f580d,_0x35ff96){var _0x1b3436={'raw':![],'where':{'id':_0x4f580d[_0xdeff('0x41')]['id']}},_0x133951={};_0x133951[_0xdeff('0x29')]=_['keys'](db['FreshsalesAccount'][_0xdeff('0x42')]);_0x133951[_0xdeff('0x2a')]=_[_0xdeff('0x2b')](_0x4f580d[_0xdeff('0x2a')]);_0x133951[_0xdeff('0x2c')]=_['intersection'](_0x133951[_0xdeff('0x29')],_0x133951[_0xdeff('0x2a')]);_0x1b3436[_0xdeff('0x2f')]=_[_0xdeff('0x2d')](_0x133951[_0xdeff('0x29')],qs[_0xdeff('0x2e')](_0x4f580d[_0xdeff('0x2a')][_0xdeff('0x2e')]));_0x1b3436[_0xdeff('0x2f')]=_0x1b3436[_0xdeff('0x2f')][_0xdeff('0x30')]?_0x1b3436[_0xdeff('0x2f')]:_0x133951[_0xdeff('0x29')];if(_0x4f580d[_0xdeff('0x2a')][_0xdeff('0x3c')]){_0x1b3436[_0xdeff('0x3d')]=[{'all':!![]}];}_0x1b3436=_[_0xdeff('0x37')]({},_0x1b3436,_0x4f580d[_0xdeff('0x3b')]);return db[_0xdeff('0x26')][_0xdeff('0x43')](_0x1b3436)['then'](handleEntityNotFound(_0x35ff96,null))[_0xdeff('0x22')](respondWithResult(_0x35ff96,null))[_0xdeff('0x3f')](handleError(_0x35ff96,null));};exports['create']=function(_0x1b6c65,_0x4b2915){return db[_0xdeff('0x26')][_0xdeff('0x44')](_0x1b6c65[_0xdeff('0x45')],{})[_0xdeff('0x22')](respondWithResult(_0x4b2915,0xc9))[_0xdeff('0x3f')](handleError(_0x4b2915,null));};exports[_0xdeff('0x21')]=function(_0x645b17,_0x29c721){if(_0x645b17['body']['id']){delete _0x645b17[_0xdeff('0x45')]['id'];}return db[_0xdeff('0x26')]['find']({'where':{'id':_0x645b17[_0xdeff('0x41')]['id']}})[_0xdeff('0x22')](handleEntityNotFound(_0x29c721,null))[_0xdeff('0x22')](saveUpdates(_0x645b17[_0xdeff('0x45')],null))['then'](respondWithResult(_0x29c721,null))[_0xdeff('0x3f')](handleError(_0x29c721,null));};exports[_0xdeff('0x23')]=function(_0x2b67ba,_0x287282){return db[_0xdeff('0x26')][_0xdeff('0x43')]({'where':{'id':_0x2b67ba[_0xdeff('0x41')]['id']}})[_0xdeff('0x22')](handleEntityNotFound(_0x287282,null))[_0xdeff('0x22')](removeEntity(_0x287282,null))['catch'](handleError(_0x287282,null));};exports[_0xdeff('0x46')]=function(_0x322462,_0x41bfcd,_0x130b3a){var _0x3be6b9={};var _0x6a90c1={};var _0x27b80c;var _0x29c337;return db['FreshsalesAccount'][_0xdeff('0x47')]({'where':{'id':_0x322462['params']['id']}})['then'](handleEntityNotFound(_0x41bfcd,null))[_0xdeff('0x22')](function(_0x581500){if(_0x581500){_0x27b80c=_0x581500;_0x6a90c1[_0xdeff('0x29')]=_[_0xdeff('0x2b')](db[_0xdeff('0x48')]['rawAttributes']);_0x6a90c1[_0xdeff('0x2a')]=_[_0xdeff('0x2b')](_0x322462[_0xdeff('0x2a')]);_0x6a90c1['filters']=_[_0xdeff('0x2d')](_0x6a90c1[_0xdeff('0x29')],_0x6a90c1[_0xdeff('0x2a')]);_0x3be6b9['attributes']=_[_0xdeff('0x2d')](_0x6a90c1[_0xdeff('0x29')],qs[_0xdeff('0x2e')](_0x322462['query'][_0xdeff('0x2e')]));_0x3be6b9[_0xdeff('0x2f')]=_0x3be6b9['attributes'][_0xdeff('0x30')]?_0x3be6b9[_0xdeff('0x2f')]:_0x6a90c1[_0xdeff('0x29')];_0x3be6b9['order']=qs[_0xdeff('0x34')](_0x322462[_0xdeff('0x2a')][_0xdeff('0x34')]);_0x3be6b9[_0xdeff('0x38')]=qs[_0xdeff('0x2c')](_[_0xdeff('0x35')](_0x322462[_0xdeff('0x2a')],_0x6a90c1[_0xdeff('0x2c')]));if(_0x322462['query'][_0xdeff('0x36')]){_0x3be6b9[_0xdeff('0x38')]=_[_0xdeff('0x37')](_0x3be6b9[_0xdeff('0x38')],{'$or':_[_0xdeff('0x25')](_0x3be6b9[_0xdeff('0x2f')],function(_0x3e7ada){var _0x586822={};_0x586822[_0x3e7ada]={'$like':'%'+_0x322462[_0xdeff('0x2a')][_0xdeff('0x36')]+'%'};return _0x586822;})});}_0x3be6b9=_[_0xdeff('0x37')]({},_0x3be6b9,_0x322462[_0xdeff('0x3b')]);return _0x27b80c[_0xdeff('0x46')](_0x3be6b9);}})['then'](function(_0x4bf8e4){if(_0x4bf8e4){_0x29c337=_0x4bf8e4['length'];if(!_0x322462[_0xdeff('0x2a')][_0xdeff('0x31')](_0xdeff('0x32'))){_0x3be6b9[_0xdeff('0x1c')]=qs[_0xdeff('0x1c')](_0x322462[_0xdeff('0x2a')][_0xdeff('0x1c')]);_0x3be6b9['offset']=qs[_0xdeff('0x19')](_0x322462[_0xdeff('0x2a')][_0xdeff('0x19')]);}return _0x27b80c[_0xdeff('0x46')](_0x3be6b9);}})['then'](function(_0x22fb1c){if(_0x22fb1c){return _0x22fb1c?{'count':_0x29c337,'rows':_0x22fb1c}:null;}})[_0xdeff('0x22')](respondWithResult(_0x41bfcd,null))['catch'](handleError(_0x41bfcd,null));};exports[_0xdeff('0x49')]=function(_0xe9d6c6,_0x4d25e3,_0x2ba647){if(_0xe9d6c6['body']['id']){delete _0xe9d6c6[_0xdeff('0x45')]['id'];}return db[_0xdeff('0x26')][_0xdeff('0x47')]({'where':{'id':_0xe9d6c6[_0xdeff('0x41')]['id']}})[_0xdeff('0x22')](handleEntityNotFound(_0x4d25e3,null))[_0xdeff('0x22')](function(_0x234b28){if(_0x234b28){_0xe9d6c6[_0xdeff('0x45')][_0xdeff('0x4a')]=_0x234b28['id'];_0xe9d6c6[_0xdeff('0x45')]['Subjects']=integrations[_0xdeff('0x4b')](_0xe9d6c6[_0xdeff('0x45')][_0xdeff('0x4c')],_0xe9d6c6[_0xdeff('0x45')]['type']);_0xe9d6c6[_0xdeff('0x45')][_0xdeff('0x4d')]=integrations['getDescriptions'](_0xe9d6c6[_0xdeff('0x45')]['channel'],_0xe9d6c6['body'][_0xdeff('0x39')]);return db[_0xdeff('0x48')][_0xdeff('0x44')](_0xe9d6c6[_0xdeff('0x45')],{'include':[{'model':db[_0xdeff('0x4e')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0xdeff('0x22')](respondWithResult(_0x4d25e3,null))['catch'](handleError(_0x4d25e3,null));};exports['getFields']=function(_0x5beeb6,_0x377a3c,_0x1be825){var _0x20e835='';var _0x3cb4db='';return db[_0xdeff('0x26')][_0xdeff('0x47')]({'where':{'id':_0x5beeb6[_0xdeff('0x41')]['id']},'attributes':['id',_0xdeff('0x4f'),_0xdeff('0x50'),_0xdeff('0x51')]})[_0xdeff('0x22')](handleEntityNotFound(_0x377a3c,null))[_0xdeff('0x22')](function(_0x407473){if(_0x407473){_0x3cb4db=_0x407473['username'];_0x20e835=_0x407473[_0xdeff('0x50')];var _0x23124d=_0x407473[_0xdeff('0x50')][_0xdeff('0x52')](-0x1);if(_0x23124d==='/'){_0x20e835=_0x20e835[_0xdeff('0x53')](0x0,_0x20e835['lastIndexOf'](_0x23124d));}return rp({'method':_0xdeff('0x54'),'uri':util[_0xdeff('0x55')](_0xdeff('0x56'),_0x20e835,_0xdeff('0x57')),'headers':{'Authorization':'Token\x20token='+_0x407473[_0xdeff('0x51')]},'json':!![]});}})[_0xdeff('0x22')](function(_0xce3746){if(_0xce3746){var _0xedf106=_0xce3746[_0xdeff('0x58')];var _0x257d16=![];var _0x4e9a2d=null;for(_0x4e9a2d=0x0;_0x4e9a2d<_0xedf106[_0xdeff('0x30')];_0x4e9a2d++){if(_0xedf106[_0x4e9a2d][_0xdeff('0x59')]===_0x3cb4db){_0x257d16=!![];}}if(_0x257d16){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xdeff('0x5a')});}}})[_0xdeff('0x22')](respondWithResult(_0x377a3c,null))['catch'](function(_0x1bc579){var _0x5aba9e=_0x5beeb6[_0xdeff('0x2a')][_0xdeff('0x5b')]?0x1f4:_0x1bc579['statusCode']||0x1f4;logger[_0xdeff('0x5c')](_0xdeff('0x5d'),'getFields',_0x5aba9e,JSON[_0xdeff('0x5e')](_0x1bc579));delete _0x1bc579[_0xdeff('0x24')];if(_0x5aba9e===0x191){_0x5aba9e=0x190;}_0x377a3c[_0xdeff('0x17')](_0x5aba9e)[_0xdeff('0x5f')](_0x5beeb6[_0xdeff('0x2a')][_0xdeff('0x5b')]?{'message':_0xdeff('0x60'),'statusCode':_0x1bc579[_0xdeff('0x61')]}:_0x1bc579);});};
\ No newline at end of file
index 0b3c104..ba7989f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6343=['../../components/integrations/configuration','exports','define','../../config/logger','api','rimraf','../../config/environment'];(function(_0x50a613,_0x21203b){var _0x1653a5=function(_0x3fe71a){while(--_0x3fe71a){_0x50a613['push'](_0x50a613['shift']());}};_0x1653a5(++_0x21203b);}(_0x6343,0x168));var _0x3634=function(_0x58ce9f,_0x3e1954){_0x58ce9f=_0x58ce9f-0x0;var _0x45cf2d=_0x6343[_0x58ce9f];return _0x45cf2d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3634('0x0'))(_0x3634('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(_0x3634('0x2'));var config=require(_0x3634('0x3'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x3634('0x4'));module[_0x3634('0x5')]=function(_0x4bb496,_0x302828){return _0x4bb496[_0x3634('0x6')]('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4888=['exports','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0xfe1515,_0x5a9292){var _0x3c9ea6=function(_0x1911d7){while(--_0x1911d7){_0xfe1515['push'](_0xfe1515['shift']());}};_0x3c9ea6(++_0x5a9292);}(_0x4888,0x198));var _0x8488=function(_0x525513,_0x44220c){_0x525513=_0x525513-0x0;var _0x17f77f=_0x4888[_0x525513];return _0x17f77f;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var logger=require(_0x8488('0x1'))(_0x8488('0x2'));var moment=require(_0x8488('0x3'));var BPromise=require(_0x8488('0x4'));var rp=require(_0x8488('0x5'));var fs=require('fs');var path=require(_0x8488('0x6'));var rimraf=require('rimraf');var config=require(_0x8488('0x7'));var attributes=require(_0x8488('0x8'));var integrations=require(_0x8488('0x9'));module[_0x8488('0xa')]=function(_0x326887,_0x19e508){return _0x326887['define']('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 40751b6..4c4103a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['find','map','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','model','then','debug','stringify','catch','ShowFreshsalesAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x4881be,_0x244db3){_0x4881be=_0x4881be-0x0;var _0x24fdc8=_0x0a6b[_0x4881be];return _0x24fdc8;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb0a6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0a6('0x2'))['db'];var utils=require(_0xb0a6('0x3'));var logger=require(_0xb0a6('0x4'))('rpc');var config=require(_0xb0a6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xb0a6('0x6')][_0xb0a6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e2d2d,_0x11cd5b,_0x24515c){return new BPromise(function(_0x2a8516,_0x530c05){return client['request'](_0x5e2d2d,_0x24515c)['then'](function(_0x2ded05){logger[_0xb0a6('0x8')](_0xb0a6('0x9'),_0x11cd5b,_0xb0a6('0xa'));logger['debug'](_0xb0a6('0xb'),_0x11cd5b,_0xb0a6('0xa'),JSON['stringify'](_0x2ded05));if(_0x2ded05[_0xb0a6('0xc')]){if(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xd')]===0x1f4){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);return _0x530c05(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);}logger[_0xb0a6('0xc')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0x2ded05[_0xb0a6('0xc')]['message']);return _0x2a8516(_0x2ded05[_0xb0a6('0xc')]['message']);}else{logger[_0xb0a6('0x8')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0xb0a6('0xa'));_0x2a8516(_0x2ded05[_0xb0a6('0xf')][_0xb0a6('0xe')]);}})['catch'](function(_0x56b594){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x56b594);_0x530c05(_0x56b594);});});}exports[_0xb0a6('0x10')]=function(_0x18f994){var _0x10f504=this;return new Promise(function(_0x13a1c8,_0x567dd5){return db[_0xb0a6('0x11')][_0xb0a6('0x12')]({'raw':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x15')]||null:null,'attributes':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'limit':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x17')]||null:null,'include':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x18')]?_['map'](_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4997df){return{'model':db[_0x4997df['model']],'as':_0x4997df['as'],'attributes':_0x4997df[_0xb0a6('0x16')],'include':_0x4997df[_0xb0a6('0x18')]?_['map'](_0x4997df[_0xb0a6('0x18')],function(_0x24574a){return{'model':db[_0x24574a[_0xb0a6('0x19')]],'as':_0x24574a['as'],'attributes':_0x24574a[_0xb0a6('0x16')],'include':_0x24574a['include']?_['map'](_0x24574a[_0xb0a6('0x18')],function(_0x1e9947){return{'model':db[_0x1e9947[_0xb0a6('0x19')]],'as':_0x1e9947['as'],'attributes':_0x1e9947['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x3347ac){logger[_0xb0a6('0x8')](_0xb0a6('0x10'),_0x18f994);logger[_0xb0a6('0x1b')](_0xb0a6('0x10'),_0x18f994,JSON[_0xb0a6('0x1c')](_0x3347ac));_0x13a1c8(_0x3347ac);})[_0xb0a6('0x1d')](function(_0x4255b9){logger['error'](_0xb0a6('0x10'),_0x4255b9[_0xb0a6('0xe')],_0x18f994);_0x567dd5(_0x10f504[_0xb0a6('0xc')](0x1f4,_0x4255b9['message']));});});};exports[_0xb0a6('0x1e')]=function(_0x582fc2){var _0x131e46=this;return new Promise(function(_0x309a91,_0x114f91){return db[_0xb0a6('0x11')][_0xb0a6('0x1f')]({'raw':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')]['where']||null:null,'attributes':_0x582fc2['options']?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'include':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4b0479){return{'model':db[_0x4b0479[_0xb0a6('0x19')]],'as':_0x4b0479['as'],'attributes':_0x4b0479[_0xb0a6('0x16')],'include':_0x4b0479['include']?_[_0xb0a6('0x20')](_0x4b0479[_0xb0a6('0x18')],function(_0x52e397){return{'model':db[_0x52e397['model']],'as':_0x52e397['as'],'attributes':_0x52e397[_0xb0a6('0x16')],'include':_0x52e397[_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x52e397[_0xb0a6('0x18')],function(_0x4310ae){return{'model':db[_0x4310ae[_0xb0a6('0x19')]],'as':_0x4310ae['as'],'attributes':_0x4310ae['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x5c280e){logger[_0xb0a6('0x8')](_0xb0a6('0x1e'),_0x582fc2);logger['debug']('ShowFreshsalesAccount',_0x582fc2,JSON['stringify'](_0x5c280e));_0x309a91(_0x5c280e);})[_0xb0a6('0x1d')](function(_0xd484f){logger[_0xb0a6('0xc')](_0xb0a6('0x1e'),_0xd484f[_0xb0a6('0xe')],_0x582fc2);_0x114f91(_0x131e46['error'](0x1f4,_0xd484f[_0xb0a6('0xe')]));});});};
\ No newline at end of file
+var _0xffd6=['options','raw','limit','include','model','attributes','ShowFreshsalesAccount','FreshsalesAccount','find','where','map','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetFreshsalesAccount','findAll'];(function(_0x4b9978,_0x58eb71){var _0x42f0e5=function(_0x4ff5dc){while(--_0x4ff5dc){_0x4b9978['push'](_0x4b9978['shift']());}};_0x42f0e5(++_0x58eb71);}(_0xffd6,0x97));var _0x6ffd=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0xffd6[_0x50aa2e];return _0x5e07f0;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var moment=require(_0x6ffd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ffd('0x3'));var db=require(_0x6ffd('0x4'))['db'];var utils=require(_0x6ffd('0x5'));var logger=require('../../config/logger')(_0x6ffd('0x6'));var config=require(_0x6ffd('0x7'));var jayson=require(_0x6ffd('0x8'));var client=jayson[_0x6ffd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x122b71,_0xeefe34,_0x2445a0){return new BPromise(function(_0x1fbbe6,_0x1d8b50){return client['request'](_0x122b71,_0x2445a0)[_0x6ffd('0xa')](function(_0x417f34){logger['info'](_0x6ffd('0xb'),_0xeefe34,_0x6ffd('0xc'));logger[_0x6ffd('0xd')](_0x6ffd('0xe'),_0xeefe34,_0x6ffd('0xc'),JSON[_0x6ffd('0xf')](_0x417f34));if(_0x417f34[_0x6ffd('0x10')]){if(_0x417f34['error'][_0x6ffd('0x11')]===0x1f4){logger[_0x6ffd('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xeefe34,_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);return _0x1d8b50(_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);}logger['error'](_0x6ffd('0xb'),_0xeefe34,_0x417f34['error'][_0x6ffd('0x12')]);return _0x1fbbe6(_0x417f34['error'][_0x6ffd('0x12')]);}else{logger[_0x6ffd('0x13')](_0x6ffd('0xb'),_0xeefe34,'request\x20sent');_0x1fbbe6(_0x417f34[_0x6ffd('0x14')][_0x6ffd('0x12')]);}})[_0x6ffd('0x15')](function(_0x3394b2){logger[_0x6ffd('0x10')](_0x6ffd('0xb'),_0xeefe34,_0x3394b2);_0x1d8b50(_0x3394b2);});});}exports[_0x6ffd('0x16')]=function(_0x889a4b){var _0x545576=this;return new Promise(function(_0x11a609,_0x56c541){return db['FreshsalesAccount'][_0x6ffd('0x17')]({'raw':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options'][_0x6ffd('0x19')]===undefined?!![]:![]:!![],'where':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options']['where']||null:null,'attributes':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')]['attributes']||null:null,'limit':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1a')]||null:null,'include':_0x889a4b['options']?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_['map'](_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x50c19a){return{'model':db[_0x50c19a[_0x6ffd('0x1c')]],'as':_0x50c19a['as'],'attributes':_0x50c19a[_0x6ffd('0x1d')],'include':_0x50c19a[_0x6ffd('0x1b')]?_['map'](_0x50c19a[_0x6ffd('0x1b')],function(_0x3e5726){return{'model':db[_0x3e5726[_0x6ffd('0x1c')]],'as':_0x3e5726['as'],'attributes':_0x3e5726['attributes'],'include':_0x3e5726[_0x6ffd('0x1b')]?_['map'](_0x3e5726[_0x6ffd('0x1b')],function(_0x43269c){return{'model':db[_0x43269c['model']],'as':_0x43269c['as'],'attributes':_0x43269c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x2a0391){logger[_0x6ffd('0x13')]('GetFreshsalesAccount',_0x889a4b);logger['debug'](_0x6ffd('0x16'),_0x889a4b,JSON['stringify'](_0x2a0391));_0x11a609(_0x2a0391);})[_0x6ffd('0x15')](function(_0x20c007){logger['error'](_0x6ffd('0x16'),_0x20c007[_0x6ffd('0x12')],_0x889a4b);_0x56c541(_0x545576[_0x6ffd('0x10')](0x1f4,_0x20c007[_0x6ffd('0x12')]));});});};exports[_0x6ffd('0x1e')]=function(_0x31c609){var _0x225c66=this;return new Promise(function(_0xccb8c,_0x17f627){return db[_0x6ffd('0x1f')][_0x6ffd('0x20')]({'raw':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x31c609['options']?_0x31c609['options'][_0x6ffd('0x21')]||null:null,'attributes':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1d')]||null:null,'include':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_[_0x6ffd('0x22')](_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x26394c){return{'model':db[_0x26394c[_0x6ffd('0x1c')]],'as':_0x26394c['as'],'attributes':_0x26394c[_0x6ffd('0x1d')],'include':_0x26394c['include']?_[_0x6ffd('0x22')](_0x26394c[_0x6ffd('0x1b')],function(_0x2efc20){return{'model':db[_0x2efc20[_0x6ffd('0x1c')]],'as':_0x2efc20['as'],'attributes':_0x2efc20['attributes'],'include':_0x2efc20[_0x6ffd('0x1b')]?_['map'](_0x2efc20['include'],function(_0x617d52){return{'model':db[_0x617d52[_0x6ffd('0x1c')]],'as':_0x617d52['as'],'attributes':_0x617d52[_0x6ffd('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x55e9b4){logger[_0x6ffd('0x13')]('ShowFreshsalesAccount',_0x31c609);logger[_0x6ffd('0xd')](_0x6ffd('0x1e'),_0x31c609,JSON[_0x6ffd('0xf')](_0x55e9b4));_0xccb8c(_0x55e9b4);})[_0x6ffd('0x15')](function(_0x23fae4){logger['error']('ShowFreshsalesAccount',_0x23fae4[_0x6ffd('0x12')],_0x31c609);_0x17f627(_0x225c66['error'](0x1f4,_0x23fae4[_0x6ffd('0x12')]));});});};
\ No newline at end of file
index 3cdbea8..16c9d5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc9=['./intFreshsalesConfiguration.controller','index','get','/:id','show','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x3e6707,_0x37475e){var _0x12b38d=function(_0x54c152){while(--_0x54c152){_0x3e6707['push'](_0x3e6707['shift']());}};_0x12b38d(++_0x37475e);}(_0xbcc9,0x1dd));var _0x9bcc=function(_0xeb6f8d,_0x1138f1){_0xeb6f8d=_0xeb6f8d-0x0;var _0x41f045=_0xbcc9[_0xeb6f8d];return _0x41f045;};'use strict';var multer=require(_0x9bcc('0x0'));var util=require('util');var path=require(_0x9bcc('0x1'));var timeout=require(_0x9bcc('0x2'));var express=require(_0x9bcc('0x3'));var router=express[_0x9bcc('0x4')]();var fs_extra=require(_0x9bcc('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9bcc('0x6'));var controller=require(_0x9bcc('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x9bcc('0x8')]);router[_0x9bcc('0x9')](_0x9bcc('0xa'),auth['isAuthenticated'](),controller[_0x9bcc('0xb')]);router['get']('/:id/subjects',auth[_0x9bcc('0xc')](),controller[_0x9bcc('0xd')]);router[_0x9bcc('0x9')](_0x9bcc('0xe'),auth[_0x9bcc('0xc')](),controller[_0x9bcc('0xf')]);router[_0x9bcc('0x9')](_0x9bcc('0x10'),auth[_0x9bcc('0xc')](),controller[_0x9bcc('0x11')]);router[_0x9bcc('0x12')]('/',auth[_0x9bcc('0xc')](),controller['create']);router[_0x9bcc('0x13')](_0x9bcc('0xa'),auth[_0x9bcc('0xc')](),controller['update']);router[_0x9bcc('0x14')](_0x9bcc('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x9bcc('0x15')]=router;
\ No newline at end of file
+var _0x3e85=['update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getFields','create','put'];(function(_0xc2b758,_0x38ad84){var _0x1265fc=function(_0x528eab){while(--_0x528eab){_0xc2b758['push'](_0xc2b758['shift']());}};_0x1265fc(++_0x38ad84);}(_0x3e85,0xf3));var _0x53e8=function(_0x5db99b,_0xdee23a){_0x5db99b=_0x5db99b-0x0;var _0x4b2d0e=_0x3e85[_0x5db99b];return _0x4b2d0e;};'use strict';var multer=require(_0x53e8('0x0'));var util=require(_0x53e8('0x1'));var path=require(_0x53e8('0x2'));var timeout=require(_0x53e8('0x3'));var express=require(_0x53e8('0x4'));var router=express[_0x53e8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x53e8('0x6'));var interaction=require(_0x53e8('0x7'));var config=require('../../config/environment');var controller=require(_0x53e8('0x8'));router[_0x53e8('0x9')]('/',auth['isAuthenticated'](),controller[_0x53e8('0xa')]);router[_0x53e8('0x9')](_0x53e8('0xb'),auth[_0x53e8('0xc')](),controller[_0x53e8('0xd')]);router[_0x53e8('0x9')](_0x53e8('0xe'),auth[_0x53e8('0xc')](),controller[_0x53e8('0xf')]);router['get'](_0x53e8('0x10'),auth[_0x53e8('0xc')](),controller[_0x53e8('0x11')]);router[_0x53e8('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x53e8('0x12')]);router['post']('/',auth[_0x53e8('0xc')](),controller[_0x53e8('0x13')]);router[_0x53e8('0x14')](_0x53e8('0xb'),auth[_0x53e8('0xc')](),controller[_0x53e8('0x15')]);router[_0x53e8('0x16')](_0x53e8('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x53e8('0x17')]=router;
\ No newline at end of file
index 5be2a47..1de44ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c35=['sequelize','exports','STRING'];(function(_0x1d2bc8,_0x2860bc){var _0x1857e1=function(_0x3a3073){while(--_0x3a3073){_0x1d2bc8['push'](_0x1d2bc8['shift']());}};_0x1857e1(++_0x2860bc);}(_0x8c35,0xae));var _0x58c3=function(_0x248306,_0x33fdb7){_0x248306=_0x248306-0x0;var _0x1e834e=_0x8c35[_0x248306];return _0x1e834e;};'use strict';var Sequelize=require(_0x58c3('0x0'));module[_0x58c3('0x1')]={'name':{'type':Sequelize[_0x58c3('0x2')]},'description':{'type':Sequelize[_0x58c3('0x2')]}};
\ No newline at end of file
+var _0x573f=['sequelize','STRING'];(function(_0x58b4d1,_0x2b441b){var _0x386700=function(_0x129d98){while(--_0x129d98){_0x58b4d1['push'](_0x58b4d1['shift']());}};_0x386700(++_0x2b441b);}(_0x573f,0x17a));var _0xf573=function(_0xa0152d,_0x37dc73){_0xa0152d=_0xa0152d-0x0;var _0x712ee9=_0x573f[_0xa0152d];return _0x712ee9;};'use strict';var Sequelize=require(_0xf573('0x0'));module['exports']={'name':{'type':Sequelize[_0xf573('0x1')]},'description':{'type':Sequelize[_0xf573('0x1')]}};
\ No newline at end of file
index f4d7780..7aaf59d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5317=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','fieldName','type','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','FreshsalesConfiguration','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','getSubjects','findOne','getDescriptions','getFields','FreshsalesField','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5cc9ae,_0x116739){var _0xef9aa1=function(_0x403b0c){while(--_0x403b0c){_0x5cc9ae['push'](_0x5cc9ae['shift']());}};_0xef9aa1(++_0x116739);}(_0x5317,0x18a));var _0x7531=function(_0x466d36,_0xfb512c){_0x466d36=_0x466d36-0x0;var _0x19ab6f=_0x5317[_0x466d36];return _0x19ab6f;};'use strict';var emlformat=require(_0x7531('0x0'));var rimraf=require(_0x7531('0x1'));var zipdir=require(_0x7531('0x2'));var jsonpatch=require(_0x7531('0x3'));var rp=require(_0x7531('0x4'));var moment=require(_0x7531('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7531('0x6'));var path=require(_0x7531('0x7'));var sox=require(_0x7531('0x8'));var csv=require(_0x7531('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7531('0xa'));var _=require(_0x7531('0xb'));var squel=require(_0x7531('0xc'));var crypto=require(_0x7531('0xd'));var jsforce=require(_0x7531('0xe'));var deskjs=require(_0x7531('0xf'));var toCsv=require(_0x7531('0x9'));var querystring=require(_0x7531('0x10'));var Papa=require(_0x7531('0x11'));var Redis=require(_0x7531('0x12'));var authService=require(_0x7531('0x13'));var qs=require(_0x7531('0x14'));var as=require(_0x7531('0x15'));var hardwareService=require(_0x7531('0x16'));var logger=require(_0x7531('0x17'))(_0x7531('0x18'));var utils=require('../../config/utils');var config=require(_0x7531('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43b60a,_0x4fec56){_0x4fec56=_0x4fec56||0xcc;return function(_0x324aa1){if(_0x324aa1){return _0x43b60a[_0x7531('0x1a')](_0x4fec56);}return _0x43b60a[_0x7531('0x1b')](_0x4fec56)[_0x7531('0x1c')]();};}function respondWithResult(_0x35e738,_0x4b6646){_0x4b6646=_0x4b6646||0xc8;return function(_0x2d952c){if(_0x2d952c){return _0x35e738[_0x7531('0x1b')](_0x4b6646)[_0x7531('0x1d')](_0x2d952c);}};}function respondWithFilteredResult(_0x1e8557,_0x151bb8){return function(_0x3bc20a){if(_0x3bc20a){var _0x3df9ea=typeof _0x151bb8[_0x7531('0x1e')]===_0x7531('0x1f')&&typeof _0x151bb8['limit']===_0x7531('0x1f');var _0x274d73=_0x3bc20a[_0x7531('0x20')];var _0x4a1874=_0x3df9ea?0x0:_0x151bb8[_0x7531('0x1e')];var _0x499392=_0x3df9ea?_0x3bc20a[_0x7531('0x20')]:_0x151bb8[_0x7531('0x1e')]+_0x151bb8[_0x7531('0x21')];var _0x262ca3;if(_0x499392>=_0x274d73){_0x499392=_0x274d73;_0x262ca3=0xc8;}else{_0x262ca3=0xce;}_0x1e8557['status'](_0x262ca3);return _0x1e8557[_0x7531('0x22')](_0x7531('0x23'),_0x4a1874+'-'+_0x499392+'/'+_0x274d73)['json'](_0x3bc20a);}return null;};}function patchUpdates(_0xdbcd32){return function(_0x343bb0){try{jsonpatch['apply'](_0x343bb0,_0xdbcd32,!![]);}catch(_0x244f67){return BPromise[_0x7531('0x24')](_0x244f67);}return _0x343bb0[_0x7531('0x25')]();};}function saveUpdates(_0x55505d,_0x4c6c24){return function(_0x3b615d){if(_0x3b615d){return _0x3b615d['update'](_0x55505d)[_0x7531('0x26')](function(_0x44e184){return _0x44e184;});}return null;};}function removeEntity(_0xee4945,_0x4dab6a){return function(_0x453821){if(_0x453821){return _0x453821[_0x7531('0x27')]()[_0x7531('0x26')](function(){_0xee4945[_0x7531('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1441e5,_0x3a5ef1){return function(_0x103230){if(!_0x103230){_0x1441e5[_0x7531('0x1a')](0x194);}return _0x103230;};}function handleError(_0x18e964,_0x37f7be){_0x37f7be=_0x37f7be||0x1f4;return function(_0x2cf8d8){logger[_0x7531('0x28')](_0x2cf8d8[_0x7531('0x29')]);if(_0x2cf8d8[_0x7531('0x2a')]){delete _0x2cf8d8[_0x7531('0x2a')];}_0x18e964['status'](_0x37f7be)[_0x7531('0x2b')](_0x2cf8d8);};}exports[_0x7531('0x2c')]=function(_0x5d6d37,_0xf79208){var _0x2ce4f5={},_0x4f9044={},_0x48eabe={'count':0x0,'rows':[]};var _0x28c9c3=_['map'](db['FreshsalesConfiguration']['rawAttributes'],function(_0x199801){return{'name':_0x199801[_0x7531('0x2d')],'type':_0x199801[_0x7531('0x2e')]['key']};});_0x4f9044[_0x7531('0x2f')]=_[_0x7531('0x30')](_0x28c9c3,_0x7531('0x2a'));_0x4f9044['query']=_['keys'](_0x5d6d37[_0x7531('0x31')]);_0x4f9044['filters']=_['intersection'](_0x4f9044[_0x7531('0x2f')],_0x4f9044[_0x7531('0x31')]);_0x2ce4f5[_0x7531('0x32')]=_[_0x7531('0x33')](_0x4f9044['model'],qs[_0x7531('0x34')](_0x5d6d37[_0x7531('0x31')][_0x7531('0x34')]));_0x2ce4f5['attributes']=_0x2ce4f5[_0x7531('0x32')][_0x7531('0x35')]?_0x2ce4f5['attributes']:_0x4f9044[_0x7531('0x2f')];if(!_0x5d6d37[_0x7531('0x31')][_0x7531('0x36')](_0x7531('0x37'))){_0x2ce4f5['limit']=qs['limit'](_0x5d6d37[_0x7531('0x31')][_0x7531('0x21')]);_0x2ce4f5[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x5d6d37[_0x7531('0x31')]['offset']);}_0x2ce4f5[_0x7531('0x38')]=qs[_0x7531('0x39')](_0x5d6d37[_0x7531('0x31')][_0x7531('0x39')]);_0x2ce4f5[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_[_0x7531('0x3c')](_0x5d6d37['query'],_0x4f9044[_0x7531('0x3b')]),_0x28c9c3);if(_0x5d6d37[_0x7531('0x31')][_0x7531('0x3d')]){_0x2ce4f5[_0x7531('0x3a')]=_['merge'](_0x2ce4f5[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x28c9c3,function(_0x3c393d){if(_0x3c393d[_0x7531('0x2e')]!==_0x7531('0x3e')){var _0xc096ae={};_0xc096ae[_0x3c393d[_0x7531('0x2a')]]={'$like':'%'+_0x5d6d37[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0xc096ae;}})});}_0x2ce4f5=_[_0x7531('0x3f')]({},_0x2ce4f5,_0x5d6d37[_0x7531('0x40')]);var _0xc91b6a={'where':_0x2ce4f5[_0x7531('0x3a')]};return db[_0x7531('0x41')][_0x7531('0x20')](_0xc91b6a)[_0x7531('0x26')](function(_0x5181b1){_0x48eabe[_0x7531('0x20')]=_0x5181b1;if(_0x5d6d37[_0x7531('0x31')][_0x7531('0x42')]){_0x2ce4f5['include']=[{'all':!![]}];}return db[_0x7531('0x41')][_0x7531('0x43')](_0x2ce4f5);})['then'](function(_0xc3d1d7){_0x48eabe[_0x7531('0x44')]=_0xc3d1d7;return _0x48eabe;})[_0x7531('0x26')](respondWithFilteredResult(_0xf79208,_0x2ce4f5))[_0x7531('0x45')](handleError(_0xf79208,null));};exports[_0x7531('0x46')]=function(_0x476498,_0x377acf){var _0x361f2d={'raw':![],'where':{'id':_0x476498[_0x7531('0x47')]['id']}},_0x110e46={};_0x110e46[_0x7531('0x2f')]=_[_0x7531('0x48')](db['FreshsalesConfiguration'][_0x7531('0x49')]);_0x110e46[_0x7531('0x31')]=_[_0x7531('0x48')](_0x476498['query']);_0x110e46[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x110e46[_0x7531('0x2f')],_0x110e46[_0x7531('0x31')]);_0x361f2d['attributes']=_[_0x7531('0x33')](_0x110e46[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x476498[_0x7531('0x31')][_0x7531('0x34')]));_0x361f2d['attributes']=_0x361f2d[_0x7531('0x32')][_0x7531('0x35')]?_0x361f2d[_0x7531('0x32')]:_0x110e46[_0x7531('0x2f')];if(_0x476498['query']['includeAll']){_0x361f2d[_0x7531('0x4a')]=[{'all':!![]}];}_0x361f2d=_[_0x7531('0x3f')]({},_0x361f2d,_0x476498['options']);return db[_0x7531('0x41')][_0x7531('0x4b')](_0x361f2d)[_0x7531('0x26')](handleEntityNotFound(_0x377acf,null))['then'](respondWithResult(_0x377acf,null))[_0x7531('0x45')](handleError(_0x377acf,null));};exports[_0x7531('0x4c')]=function(_0x7f49d2,_0x1e003f){return db['FreshsalesConfiguration']['create'](_0x7f49d2[_0x7531('0x4d')],{})[_0x7531('0x26')](respondWithResult(_0x1e003f,0xc9))[_0x7531('0x45')](handleError(_0x1e003f,null));};exports['update']=function(_0x4d8c18,_0x13aa6a){if(_0x4d8c18[_0x7531('0x4d')]['id']){delete _0x4d8c18[_0x7531('0x4d')]['id'];}return db[_0x7531('0x41')]['find']({'where':{'id':_0x4d8c18[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x13aa6a,null))[_0x7531('0x26')](saveUpdates(_0x4d8c18[_0x7531('0x4d')],null))[_0x7531('0x26')](respondWithResult(_0x13aa6a,null))[_0x7531('0x45')](handleError(_0x13aa6a,null));};exports[_0x7531('0x27')]=function(_0x17c0c6,_0x9f0a00){return db[_0x7531('0x41')][_0x7531('0x4b')]({'where':{'id':_0x17c0c6['params']['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x9f0a00,null))['then'](removeEntity(_0x9f0a00,null))[_0x7531('0x45')](handleError(_0x9f0a00,null));};exports[_0x7531('0x4e')]=function(_0x158cfa,_0x5d4d1d,_0x26c335){var _0x1b9d7f={};var _0x270796={};var _0x4ab4cf;var _0x5ea72e;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x158cfa[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x5d4d1d,null))[_0x7531('0x26')](function(_0x74b76d){if(_0x74b76d){_0x4ab4cf=_0x74b76d;_0x270796[_0x7531('0x2f')]=_[_0x7531('0x48')](db['FreshsalesField'][_0x7531('0x49')]);_0x270796['query']=_[_0x7531('0x48')](_0x158cfa[_0x7531('0x31')]);_0x270796[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x270796[_0x7531('0x2f')],_0x270796[_0x7531('0x31')]);_0x1b9d7f[_0x7531('0x32')]=_[_0x7531('0x33')](_0x270796[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x158cfa[_0x7531('0x31')]['fields']));_0x1b9d7f[_0x7531('0x32')]=_0x1b9d7f['attributes']['length']?_0x1b9d7f[_0x7531('0x32')]:_0x270796[_0x7531('0x2f')];_0x1b9d7f['order']=qs['sort'](_0x158cfa[_0x7531('0x31')]['sort']);_0x1b9d7f[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_[_0x7531('0x3c')](_0x158cfa[_0x7531('0x31')],_0x270796[_0x7531('0x3b')]));if(_0x158cfa['query'][_0x7531('0x3d')]){_0x1b9d7f[_0x7531('0x3a')]=_['merge'](_0x1b9d7f[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x1b9d7f['attributes'],function(_0x26ab79){var _0x2cb73a={};_0x2cb73a[_0x26ab79]={'$like':'%'+_0x158cfa[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x2cb73a;})});}_0x1b9d7f=_[_0x7531('0x3f')]({},_0x1b9d7f,_0x158cfa[_0x7531('0x40')]);return _0x4ab4cf[_0x7531('0x4e')](_0x1b9d7f);}})[_0x7531('0x26')](function(_0x5d4baa){if(_0x5d4baa){_0x5ea72e=_0x5d4baa[_0x7531('0x35')];if(!_0x158cfa[_0x7531('0x31')][_0x7531('0x36')](_0x7531('0x37'))){_0x1b9d7f[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x158cfa[_0x7531('0x31')][_0x7531('0x21')]);_0x1b9d7f['offset']=qs['offset'](_0x158cfa['query'][_0x7531('0x1e')]);}return _0x4ab4cf[_0x7531('0x4e')](_0x1b9d7f);}})[_0x7531('0x26')](function(_0x49c7fa){if(_0x49c7fa){return _0x49c7fa?{'count':_0x5ea72e,'rows':_0x49c7fa}:null;}})['then'](respondWithResult(_0x5d4d1d,null))['catch'](handleError(_0x5d4d1d,null));};exports[_0x7531('0x50')]=function(_0x27e016,_0x2e951c,_0x536cdb){var _0x1b130e={};var _0x1bdac9={};var _0x5208b1;var _0x1358ff;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x27e016[_0x7531('0x47')]['id']}})[_0x7531('0x26')](handleEntityNotFound(_0x2e951c,null))['then'](function(_0x484314){if(_0x484314){_0x5208b1=_0x484314;_0x1bdac9[_0x7531('0x2f')]=_['keys'](db['FreshsalesField'][_0x7531('0x49')]);_0x1bdac9[_0x7531('0x31')]=_[_0x7531('0x48')](_0x27e016['query']);_0x1bdac9[_0x7531('0x3b')]=_[_0x7531('0x33')](_0x1bdac9[_0x7531('0x2f')],_0x1bdac9[_0x7531('0x31')]);_0x1b130e[_0x7531('0x32')]=_[_0x7531('0x33')](_0x1bdac9['model'],qs[_0x7531('0x34')](_0x27e016[_0x7531('0x31')][_0x7531('0x34')]));_0x1b130e[_0x7531('0x32')]=_0x1b130e[_0x7531('0x32')][_0x7531('0x35')]?_0x1b130e[_0x7531('0x32')]:_0x1bdac9['model'];_0x1b130e[_0x7531('0x38')]=qs['sort'](_0x27e016[_0x7531('0x31')]['sort']);_0x1b130e[_0x7531('0x3a')]=qs[_0x7531('0x3b')](_['pick'](_0x27e016[_0x7531('0x31')],_0x1bdac9[_0x7531('0x3b')]));if(_0x27e016[_0x7531('0x31')][_0x7531('0x3d')]){_0x1b130e['where']=_[_0x7531('0x3f')](_0x1b130e[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x1b130e[_0x7531('0x32')],function(_0x25476a){var _0x3422af={};_0x3422af[_0x25476a]={'$like':'%'+_0x27e016[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x3422af;})});}_0x1b130e=_[_0x7531('0x3f')]({},_0x1b130e,_0x27e016['options']);return _0x5208b1[_0x7531('0x50')](_0x1b130e);}})[_0x7531('0x26')](function(_0x5d1ce0){if(_0x5d1ce0){_0x1358ff=_0x5d1ce0[_0x7531('0x35')];if(!_0x27e016['query']['hasOwnProperty'](_0x7531('0x37'))){_0x1b130e[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x27e016[_0x7531('0x31')][_0x7531('0x21')]);_0x1b130e[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x27e016[_0x7531('0x31')][_0x7531('0x1e')]);}return _0x5208b1['getDescriptions'](_0x1b130e);}})['then'](function(_0x238916){if(_0x238916){return _0x238916?{'count':_0x1358ff,'rows':_0x238916}:null;}})['then'](respondWithResult(_0x2e951c,null))[_0x7531('0x45')](handleError(_0x2e951c,null));};exports[_0x7531('0x51')]=function(_0x50f189,_0x4f3fa5,_0x2516b7){var _0x37b8f3={};var _0x4befbb={};var _0x237b47;var _0x5b164a;return db[_0x7531('0x41')][_0x7531('0x4f')]({'where':{'id':_0x50f189[_0x7531('0x47')]['id']}})['then'](handleEntityNotFound(_0x4f3fa5,null))['then'](function(_0x3d108f){if(_0x3d108f){_0x237b47=_0x3d108f;_0x4befbb[_0x7531('0x2f')]=_['keys'](db[_0x7531('0x52')]['rawAttributes']);_0x4befbb[_0x7531('0x31')]=_[_0x7531('0x48')](_0x50f189[_0x7531('0x31')]);_0x4befbb['filters']=_['intersection'](_0x4befbb[_0x7531('0x2f')],_0x4befbb[_0x7531('0x31')]);_0x37b8f3[_0x7531('0x32')]=_['intersection'](_0x4befbb[_0x7531('0x2f')],qs[_0x7531('0x34')](_0x50f189[_0x7531('0x31')]['fields']));_0x37b8f3[_0x7531('0x32')]=_0x37b8f3[_0x7531('0x32')]['length']?_0x37b8f3[_0x7531('0x32')]:_0x4befbb[_0x7531('0x2f')];_0x37b8f3['order']=qs[_0x7531('0x39')](_0x50f189['query'][_0x7531('0x39')]);_0x37b8f3[_0x7531('0x3a')]=qs['filters'](_['pick'](_0x50f189['query'],_0x4befbb[_0x7531('0x3b')]));if(_0x50f189['query'][_0x7531('0x3d')]){_0x37b8f3[_0x7531('0x3a')]=_[_0x7531('0x3f')](_0x37b8f3[_0x7531('0x3a')],{'$or':_[_0x7531('0x30')](_0x37b8f3['attributes'],function(_0x99e16d){var _0x1efe71={};_0x1efe71[_0x99e16d]={'$like':'%'+_0x50f189[_0x7531('0x31')][_0x7531('0x3d')]+'%'};return _0x1efe71;})});}_0x37b8f3=_[_0x7531('0x3f')]({},_0x37b8f3,_0x50f189[_0x7531('0x40')]);return _0x237b47[_0x7531('0x51')](_0x37b8f3);}})[_0x7531('0x26')](function(_0x2a36a4){if(_0x2a36a4){_0x5b164a=_0x2a36a4[_0x7531('0x35')];if(!_0x50f189[_0x7531('0x31')][_0x7531('0x36')]('nolimit')){_0x37b8f3[_0x7531('0x21')]=qs[_0x7531('0x21')](_0x50f189['query'][_0x7531('0x21')]);_0x37b8f3[_0x7531('0x1e')]=qs[_0x7531('0x1e')](_0x50f189[_0x7531('0x31')][_0x7531('0x1e')]);}return _0x237b47[_0x7531('0x51')](_0x37b8f3);}})['then'](function(_0x5b8030){if(_0x5b8030){return _0x5b8030?{'count':_0x5b164a,'rows':_0x5b8030}:null;}})[_0x7531('0x26')](respondWithResult(_0x4f3fa5,null))['catch'](handleError(_0x4f3fa5,null));};
\ No newline at end of file
+var _0x9ce0=['sendStatus','error','stack','name','map','FreshsalesConfiguration','rawAttributes','fieldName','type','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','getSubjects','findOne','FreshsalesField','getDescriptions','getFields','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','end','offset','undefined','limit','status','set','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9ce0,0x7b));var _0x09ce=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9ce0[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x09ce('0x0'));var rimraf=require(_0x09ce('0x1'));var zipdir=require(_0x09ce('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x09ce('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x09ce('0x4'));var path=require(_0x09ce('0x5'));var sox=require(_0x09ce('0x6'));var csv=require(_0x09ce('0x7'));var ejs=require(_0x09ce('0x8'));var fs=require('fs');var fs_extra=require(_0x09ce('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x09ce('0xa'));var jsforce=require(_0x09ce('0xb'));var deskjs=require(_0x09ce('0xc'));var toCsv=require('to-csv');var querystring=require(_0x09ce('0xd'));var Papa=require(_0x09ce('0xe'));var Redis=require(_0x09ce('0xf'));var authService=require(_0x09ce('0x10'));var qs=require(_0x09ce('0x11'));var as=require(_0x09ce('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x09ce('0x13'));var utils=require(_0x09ce('0x14'));var config=require(_0x09ce('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x09ce('0x16'))['db'];function respondWithStatusCode(_0x986cb3,_0x3c119f){_0x3c119f=_0x3c119f||0xcc;return function(_0x538c59){if(_0x538c59){return _0x986cb3['sendStatus'](_0x3c119f);}return _0x986cb3['status'](_0x3c119f)[_0x09ce('0x17')]();};}function respondWithResult(_0x2b4dc7,_0x340e46){_0x340e46=_0x340e46||0xc8;return function(_0x366631){if(_0x366631){return _0x2b4dc7['status'](_0x340e46)['json'](_0x366631);}};}function respondWithFilteredResult(_0x214541,_0xe8b289){return function(_0xacfd1f){if(_0xacfd1f){var _0x2b5851=typeof _0xe8b289[_0x09ce('0x18')]===_0x09ce('0x19')&&typeof _0xe8b289[_0x09ce('0x1a')]===_0x09ce('0x19');var _0x15d2a8=_0xacfd1f['count'];var _0x45e11c=_0x2b5851?0x0:_0xe8b289['offset'];var _0x15a5d4=_0x2b5851?_0xacfd1f['count']:_0xe8b289['offset']+_0xe8b289[_0x09ce('0x1a')];var _0x388b30;if(_0x15a5d4>=_0x15d2a8){_0x15a5d4=_0x15d2a8;_0x388b30=0xc8;}else{_0x388b30=0xce;}_0x214541[_0x09ce('0x1b')](_0x388b30);return _0x214541[_0x09ce('0x1c')](_0x09ce('0x1d'),_0x45e11c+'-'+_0x15a5d4+'/'+_0x15d2a8)[_0x09ce('0x1e')](_0xacfd1f);}return null;};}function patchUpdates(_0x17d91f){return function(_0x3ac7b2){try{jsonpatch[_0x09ce('0x1f')](_0x3ac7b2,_0x17d91f,!![]);}catch(_0x493ed0){return BPromise[_0x09ce('0x20')](_0x493ed0);}return _0x3ac7b2[_0x09ce('0x21')]();};}function saveUpdates(_0x141438,_0x2b6d8e){return function(_0x1d466c){if(_0x1d466c){return _0x1d466c[_0x09ce('0x22')](_0x141438)[_0x09ce('0x23')](function(_0x43ec95){return _0x43ec95;});}return null;};}function removeEntity(_0x237708,_0x5b8b74){return function(_0x3bf8b5){if(_0x3bf8b5){return _0x3bf8b5[_0x09ce('0x24')]()[_0x09ce('0x23')](function(){_0x237708[_0x09ce('0x1b')](0xcc)[_0x09ce('0x17')]();});}};}function handleEntityNotFound(_0x350179,_0x23b41f){return function(_0x212bf0){if(!_0x212bf0){_0x350179[_0x09ce('0x25')](0x194);}return _0x212bf0;};}function handleError(_0x4a2f33,_0x415771){_0x415771=_0x415771||0x1f4;return function(_0x2f2e19){logger[_0x09ce('0x26')](_0x2f2e19[_0x09ce('0x27')]);if(_0x2f2e19[_0x09ce('0x28')]){delete _0x2f2e19[_0x09ce('0x28')];}_0x4a2f33['status'](_0x415771)['send'](_0x2f2e19);};}exports['index']=function(_0x57a135,_0x2f699c){var _0x1a394b={},_0x5e0950={},_0x1f9135={'count':0x0,'rows':[]};var _0x323b04=_[_0x09ce('0x29')](db[_0x09ce('0x2a')][_0x09ce('0x2b')],function(_0x363dbb){return{'name':_0x363dbb[_0x09ce('0x2c')],'type':_0x363dbb[_0x09ce('0x2d')]['key']};});_0x5e0950['model']=_['map'](_0x323b04,_0x09ce('0x28'));_0x5e0950[_0x09ce('0x2e')]=_[_0x09ce('0x2f')](_0x57a135[_0x09ce('0x2e')]);_0x5e0950[_0x09ce('0x30')]=_['intersection'](_0x5e0950[_0x09ce('0x31')],_0x5e0950['query']);_0x1a394b[_0x09ce('0x32')]=_['intersection'](_0x5e0950[_0x09ce('0x31')],qs[_0x09ce('0x33')](_0x57a135[_0x09ce('0x2e')][_0x09ce('0x33')]));_0x1a394b[_0x09ce('0x32')]=_0x1a394b['attributes'][_0x09ce('0x34')]?_0x1a394b[_0x09ce('0x32')]:_0x5e0950[_0x09ce('0x31')];if(!_0x57a135[_0x09ce('0x2e')][_0x09ce('0x35')](_0x09ce('0x36'))){_0x1a394b[_0x09ce('0x1a')]=qs[_0x09ce('0x1a')](_0x57a135[_0x09ce('0x2e')][_0x09ce('0x1a')]);_0x1a394b[_0x09ce('0x18')]=qs[_0x09ce('0x18')](_0x57a135['query'][_0x09ce('0x18')]);}_0x1a394b[_0x09ce('0x37')]=qs[_0x09ce('0x38')](_0x57a135[_0x09ce('0x2e')][_0x09ce('0x38')]);_0x1a394b['where']=qs['filters'](_[_0x09ce('0x39')](_0x57a135[_0x09ce('0x2e')],_0x5e0950[_0x09ce('0x30')]),_0x323b04);if(_0x57a135[_0x09ce('0x2e')][_0x09ce('0x3a')]){_0x1a394b[_0x09ce('0x3b')]=_[_0x09ce('0x3c')](_0x1a394b['where'],{'$or':_[_0x09ce('0x29')](_0x323b04,function(_0x307b90){if(_0x307b90[_0x09ce('0x2d')]!==_0x09ce('0x3d')){var _0x3a3fed={};_0x3a3fed[_0x307b90[_0x09ce('0x28')]]={'$like':'%'+_0x57a135[_0x09ce('0x2e')][_0x09ce('0x3a')]+'%'};return _0x3a3fed;}})});}_0x1a394b=_[_0x09ce('0x3c')]({},_0x1a394b,_0x57a135[_0x09ce('0x3e')]);var _0x5e63b0={'where':_0x1a394b[_0x09ce('0x3b')]};return db['FreshsalesConfiguration'][_0x09ce('0x3f')](_0x5e63b0)[_0x09ce('0x23')](function(_0x3265c8){_0x1f9135[_0x09ce('0x3f')]=_0x3265c8;if(_0x57a135[_0x09ce('0x2e')][_0x09ce('0x40')]){_0x1a394b[_0x09ce('0x41')]=[{'all':!![]}];}return db[_0x09ce('0x2a')][_0x09ce('0x42')](_0x1a394b);})[_0x09ce('0x23')](function(_0x50d1d8){_0x1f9135[_0x09ce('0x43')]=_0x50d1d8;return _0x1f9135;})['then'](respondWithFilteredResult(_0x2f699c,_0x1a394b))[_0x09ce('0x44')](handleError(_0x2f699c,null));};exports[_0x09ce('0x45')]=function(_0x5d1c1b,_0x1769a5){var _0x53a1f4={'raw':![],'where':{'id':_0x5d1c1b[_0x09ce('0x46')]['id']}},_0x16f97d={};_0x16f97d[_0x09ce('0x31')]=_[_0x09ce('0x2f')](db['FreshsalesConfiguration'][_0x09ce('0x2b')]);_0x16f97d[_0x09ce('0x2e')]=_[_0x09ce('0x2f')](_0x5d1c1b[_0x09ce('0x2e')]);_0x16f97d[_0x09ce('0x30')]=_[_0x09ce('0x47')](_0x16f97d['model'],_0x16f97d[_0x09ce('0x2e')]);_0x53a1f4[_0x09ce('0x32')]=_[_0x09ce('0x47')](_0x16f97d[_0x09ce('0x31')],qs[_0x09ce('0x33')](_0x5d1c1b[_0x09ce('0x2e')][_0x09ce('0x33')]));_0x53a1f4[_0x09ce('0x32')]=_0x53a1f4[_0x09ce('0x32')][_0x09ce('0x34')]?_0x53a1f4[_0x09ce('0x32')]:_0x16f97d[_0x09ce('0x31')];if(_0x5d1c1b['query'][_0x09ce('0x40')]){_0x53a1f4['include']=[{'all':!![]}];}_0x53a1f4=_[_0x09ce('0x3c')]({},_0x53a1f4,_0x5d1c1b[_0x09ce('0x3e')]);return db[_0x09ce('0x2a')][_0x09ce('0x48')](_0x53a1f4)[_0x09ce('0x23')](handleEntityNotFound(_0x1769a5,null))[_0x09ce('0x23')](respondWithResult(_0x1769a5,null))['catch'](handleError(_0x1769a5,null));};exports['create']=function(_0x4fc13d,_0x3f9fc0){return db[_0x09ce('0x2a')][_0x09ce('0x49')](_0x4fc13d[_0x09ce('0x4a')],{})[_0x09ce('0x23')](respondWithResult(_0x3f9fc0,0xc9))[_0x09ce('0x44')](handleError(_0x3f9fc0,null));};exports[_0x09ce('0x22')]=function(_0x1cd88f,_0x45100a){if(_0x1cd88f[_0x09ce('0x4a')]['id']){delete _0x1cd88f[_0x09ce('0x4a')]['id'];}return db[_0x09ce('0x2a')][_0x09ce('0x48')]({'where':{'id':_0x1cd88f['params']['id']}})[_0x09ce('0x23')](handleEntityNotFound(_0x45100a,null))[_0x09ce('0x23')](saveUpdates(_0x1cd88f[_0x09ce('0x4a')],null))[_0x09ce('0x23')](respondWithResult(_0x45100a,null))['catch'](handleError(_0x45100a,null));};exports['destroy']=function(_0x252e4b,_0xe039e6){return db[_0x09ce('0x2a')][_0x09ce('0x48')]({'where':{'id':_0x252e4b[_0x09ce('0x46')]['id']}})[_0x09ce('0x23')](handleEntityNotFound(_0xe039e6,null))['then'](removeEntity(_0xe039e6,null))[_0x09ce('0x44')](handleError(_0xe039e6,null));};exports[_0x09ce('0x4b')]=function(_0x17a700,_0x5a34e9,_0x2b1f5b){var _0x373202={};var _0x1cac3e={};var _0x3d1f4d;var _0x4cdc72;return db[_0x09ce('0x2a')][_0x09ce('0x4c')]({'where':{'id':_0x17a700[_0x09ce('0x46')]['id']}})[_0x09ce('0x23')](handleEntityNotFound(_0x5a34e9,null))[_0x09ce('0x23')](function(_0x1f3358){if(_0x1f3358){_0x3d1f4d=_0x1f3358;_0x1cac3e[_0x09ce('0x31')]=_['keys'](db[_0x09ce('0x4d')][_0x09ce('0x2b')]);_0x1cac3e['query']=_[_0x09ce('0x2f')](_0x17a700['query']);_0x1cac3e[_0x09ce('0x30')]=_[_0x09ce('0x47')](_0x1cac3e['model'],_0x1cac3e[_0x09ce('0x2e')]);_0x373202[_0x09ce('0x32')]=_['intersection'](_0x1cac3e[_0x09ce('0x31')],qs[_0x09ce('0x33')](_0x17a700[_0x09ce('0x2e')]['fields']));_0x373202['attributes']=_0x373202[_0x09ce('0x32')][_0x09ce('0x34')]?_0x373202[_0x09ce('0x32')]:_0x1cac3e['model'];_0x373202['order']=qs[_0x09ce('0x38')](_0x17a700[_0x09ce('0x2e')][_0x09ce('0x38')]);_0x373202['where']=qs[_0x09ce('0x30')](_[_0x09ce('0x39')](_0x17a700['query'],_0x1cac3e[_0x09ce('0x30')]));if(_0x17a700[_0x09ce('0x2e')]['filter']){_0x373202[_0x09ce('0x3b')]=_['merge'](_0x373202['where'],{'$or':_['map'](_0x373202[_0x09ce('0x32')],function(_0x23d731){var _0x38d0f4={};_0x38d0f4[_0x23d731]={'$like':'%'+_0x17a700[_0x09ce('0x2e')][_0x09ce('0x3a')]+'%'};return _0x38d0f4;})});}_0x373202=_[_0x09ce('0x3c')]({},_0x373202,_0x17a700[_0x09ce('0x3e')]);return _0x3d1f4d[_0x09ce('0x4b')](_0x373202);}})[_0x09ce('0x23')](function(_0x43bd6e){if(_0x43bd6e){_0x4cdc72=_0x43bd6e['length'];if(!_0x17a700[_0x09ce('0x2e')]['hasOwnProperty'](_0x09ce('0x36'))){_0x373202['limit']=qs[_0x09ce('0x1a')](_0x17a700[_0x09ce('0x2e')][_0x09ce('0x1a')]);_0x373202[_0x09ce('0x18')]=qs['offset'](_0x17a700['query'][_0x09ce('0x18')]);}return _0x3d1f4d[_0x09ce('0x4b')](_0x373202);}})[_0x09ce('0x23')](function(_0x501869){if(_0x501869){return _0x501869?{'count':_0x4cdc72,'rows':_0x501869}:null;}})[_0x09ce('0x23')](respondWithResult(_0x5a34e9,null))[_0x09ce('0x44')](handleError(_0x5a34e9,null));};exports['getDescriptions']=function(_0x363fd0,_0xda4430,_0x3d4338){var _0x46b3a1={};var _0x1ea0d0={};var _0x2d607d;var _0x3598f7;return db['FreshsalesConfiguration'][_0x09ce('0x4c')]({'where':{'id':_0x363fd0[_0x09ce('0x46')]['id']}})[_0x09ce('0x23')](handleEntityNotFound(_0xda4430,null))[_0x09ce('0x23')](function(_0x4f57b9){if(_0x4f57b9){_0x2d607d=_0x4f57b9;_0x1ea0d0[_0x09ce('0x31')]=_[_0x09ce('0x2f')](db['FreshsalesField']['rawAttributes']);_0x1ea0d0[_0x09ce('0x2e')]=_[_0x09ce('0x2f')](_0x363fd0[_0x09ce('0x2e')]);_0x1ea0d0[_0x09ce('0x30')]=_['intersection'](_0x1ea0d0[_0x09ce('0x31')],_0x1ea0d0['query']);_0x46b3a1['attributes']=_[_0x09ce('0x47')](_0x1ea0d0['model'],qs[_0x09ce('0x33')](_0x363fd0[_0x09ce('0x2e')]['fields']));_0x46b3a1['attributes']=_0x46b3a1[_0x09ce('0x32')][_0x09ce('0x34')]?_0x46b3a1['attributes']:_0x1ea0d0['model'];_0x46b3a1[_0x09ce('0x37')]=qs['sort'](_0x363fd0[_0x09ce('0x2e')][_0x09ce('0x38')]);_0x46b3a1['where']=qs[_0x09ce('0x30')](_[_0x09ce('0x39')](_0x363fd0[_0x09ce('0x2e')],_0x1ea0d0[_0x09ce('0x30')]));if(_0x363fd0[_0x09ce('0x2e')][_0x09ce('0x3a')]){_0x46b3a1[_0x09ce('0x3b')]=_['merge'](_0x46b3a1[_0x09ce('0x3b')],{'$or':_[_0x09ce('0x29')](_0x46b3a1[_0x09ce('0x32')],function(_0x2e7d21){var _0x18325b={};_0x18325b[_0x2e7d21]={'$like':'%'+_0x363fd0['query']['filter']+'%'};return _0x18325b;})});}_0x46b3a1=_['merge']({},_0x46b3a1,_0x363fd0[_0x09ce('0x3e')]);return _0x2d607d[_0x09ce('0x4e')](_0x46b3a1);}})['then'](function(_0x3ea3a2){if(_0x3ea3a2){_0x3598f7=_0x3ea3a2[_0x09ce('0x34')];if(!_0x363fd0[_0x09ce('0x2e')][_0x09ce('0x35')](_0x09ce('0x36'))){_0x46b3a1['limit']=qs[_0x09ce('0x1a')](_0x363fd0['query'][_0x09ce('0x1a')]);_0x46b3a1[_0x09ce('0x18')]=qs[_0x09ce('0x18')](_0x363fd0['query']['offset']);}return _0x2d607d['getDescriptions'](_0x46b3a1);}})[_0x09ce('0x23')](function(_0xf70a58){if(_0xf70a58){return _0xf70a58?{'count':_0x3598f7,'rows':_0xf70a58}:null;}})[_0x09ce('0x23')](respondWithResult(_0xda4430,null))[_0x09ce('0x44')](handleError(_0xda4430,null));};exports[_0x09ce('0x4f')]=function(_0x476d9a,_0x18453a,_0x12de73){var _0x493819={};var _0x1c55c0={};var _0x57a219;var _0x51b74f;return db[_0x09ce('0x2a')]['findOne']({'where':{'id':_0x476d9a[_0x09ce('0x46')]['id']}})[_0x09ce('0x23')](handleEntityNotFound(_0x18453a,null))[_0x09ce('0x23')](function(_0x341c0c){if(_0x341c0c){_0x57a219=_0x341c0c;_0x1c55c0[_0x09ce('0x31')]=_[_0x09ce('0x2f')](db['FreshsalesField'][_0x09ce('0x2b')]);_0x1c55c0[_0x09ce('0x2e')]=_['keys'](_0x476d9a[_0x09ce('0x2e')]);_0x1c55c0['filters']=_[_0x09ce('0x47')](_0x1c55c0[_0x09ce('0x31')],_0x1c55c0[_0x09ce('0x2e')]);_0x493819['attributes']=_['intersection'](_0x1c55c0['model'],qs[_0x09ce('0x33')](_0x476d9a[_0x09ce('0x2e')][_0x09ce('0x33')]));_0x493819[_0x09ce('0x32')]=_0x493819[_0x09ce('0x32')][_0x09ce('0x34')]?_0x493819[_0x09ce('0x32')]:_0x1c55c0[_0x09ce('0x31')];_0x493819['order']=qs[_0x09ce('0x38')](_0x476d9a[_0x09ce('0x2e')][_0x09ce('0x38')]);_0x493819[_0x09ce('0x3b')]=qs[_0x09ce('0x30')](_[_0x09ce('0x39')](_0x476d9a[_0x09ce('0x2e')],_0x1c55c0['filters']));if(_0x476d9a[_0x09ce('0x2e')]['filter']){_0x493819['where']=_[_0x09ce('0x3c')](_0x493819[_0x09ce('0x3b')],{'$or':_[_0x09ce('0x29')](_0x493819[_0x09ce('0x32')],function(_0xee7de3){var _0x2391b0={};_0x2391b0[_0xee7de3]={'$like':'%'+_0x476d9a[_0x09ce('0x2e')][_0x09ce('0x3a')]+'%'};return _0x2391b0;})});}_0x493819=_[_0x09ce('0x3c')]({},_0x493819,_0x476d9a[_0x09ce('0x3e')]);return _0x57a219[_0x09ce('0x4f')](_0x493819);}})['then'](function(_0x10952f){if(_0x10952f){_0x51b74f=_0x10952f[_0x09ce('0x34')];if(!_0x476d9a[_0x09ce('0x2e')]['hasOwnProperty'](_0x09ce('0x36'))){_0x493819[_0x09ce('0x1a')]=qs['limit'](_0x476d9a[_0x09ce('0x2e')][_0x09ce('0x1a')]);_0x493819[_0x09ce('0x18')]=qs['offset'](_0x476d9a[_0x09ce('0x2e')][_0x09ce('0x18')]);}return _0x57a219[_0x09ce('0x4f')](_0x493819);}})[_0x09ce('0x23')](function(_0x407940){if(_0x407940){return _0x407940?{'count':_0x51b74f,'rows':_0x407940}:null;}})[_0x09ce('0x23')](respondWithResult(_0x18453a,null))[_0x09ce('0x44')](handleError(_0x18453a,null));};
\ No newline at end of file
index d7e6677..3b5934d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5304=['api','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','util'];(function(_0x82140,_0x3a9d87){var _0x2b15a6=function(_0x2b565e){while(--_0x2b565e){_0x82140['push'](_0x82140['shift']());}};_0x2b15a6(++_0x3a9d87);}(_0x5304,0x15e));var _0x4530=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x5304[_0x5c9307];return _0x373e29;};'use strict';var _=require('lodash');var util=require(_0x4530('0x0'));var logger=require('../../config/logger')(_0x4530('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4530('0x2'));var fs=require('fs');var path=require(_0x4530('0x3'));var rimraf=require(_0x4530('0x4'));var config=require(_0x4530('0x5'));var attributes=require(_0x4530('0x6'));module['exports']=function(_0x5ae286,_0x59e547){return _0x5ae286[_0x4530('0x7')](_0x4530('0x8'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x79dc=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x128a08,_0x28f08a){var _0x561fe3=function(_0x372f68){while(--_0x372f68){_0x128a08['push'](_0x128a08['shift']());}};_0x561fe3(++_0x28f08a);}(_0x79dc,0x68));var _0xc79d=function(_0x24a890,_0x290dbd){_0x24a890=_0x24a890-0x0;var _0x4654eb=_0x79dc[_0x24a890];return _0x4654eb;};'use strict';var _=require(_0xc79d('0x0'));var util=require(_0xc79d('0x1'));var logger=require(_0xc79d('0x2'))(_0xc79d('0x3'));var moment=require('moment');var BPromise=require(_0xc79d('0x4'));var rp=require(_0xc79d('0x5'));var fs=require('fs');var path=require(_0xc79d('0x6'));var rimraf=require(_0xc79d('0x7'));var config=require(_0xc79d('0x8'));var attributes=require(_0xc79d('0x9'));module[_0xc79d('0xa')]=function(_0x5d91f3,_0x54d33d){return _0x5d91f3[_0xc79d('0xb')](_0xc79d('0xc'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6dc1615..df9cc9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1fe=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','ioredis'];(function(_0x25d4ee,_0xc95872){var _0x214a35=function(_0x4285a0){while(--_0x4285a0){_0x25d4ee['push'](_0x25d4ee['shift']());}};_0x214a35(++_0xc95872);}(_0xe1fe,0xb8));var _0xee1f=function(_0x19111f,_0x560f32){_0x19111f=_0x19111f-0x0;var _0x5f27a5=_0xe1fe[_0x19111f];return _0x5f27a5;};'use strict';var _=require(_0xee1f('0x0'));var util=require(_0xee1f('0x1'));var moment=require(_0xee1f('0x2'));var BPromise=require(_0xee1f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee1f('0x4'));var db=require(_0xee1f('0x5'))['db'];var utils=require(_0xee1f('0x6'));var logger=require(_0xee1f('0x7'))(_0xee1f('0x8'));var config=require(_0xee1f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xee1f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x341b85,_0x4c0e3e,_0x525cd9){return new BPromise(function(_0x322fa3,_0x2f75a7){return client['request'](_0x341b85,_0x525cd9)[_0xee1f('0xb')](function(_0x3eda72){logger[_0xee1f('0xc')](_0xee1f('0xd'),_0x4c0e3e,_0xee1f('0xe'));logger[_0xee1f('0xf')](_0xee1f('0x10'),_0x4c0e3e,_0xee1f('0xe'),JSON[_0xee1f('0x11')](_0x3eda72));if(_0x3eda72[_0xee1f('0x12')]){if(_0x3eda72['error'][_0xee1f('0x13')]===0x1f4){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x4c0e3e,_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);return _0x2f75a7(_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);}logger[_0xee1f('0x12')](_0xee1f('0xd'),_0x4c0e3e,_0x3eda72['error'][_0xee1f('0x14')]);return _0x322fa3(_0x3eda72[_0xee1f('0x12')][_0xee1f('0x14')]);}else{logger[_0xee1f('0xc')](_0xee1f('0xd'),_0x4c0e3e,'request\x20sent');_0x322fa3(_0x3eda72['result'][_0xee1f('0x14')]);}})['catch'](function(_0x42f9a9){logger[_0xee1f('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x4c0e3e,_0x42f9a9);_0x2f75a7(_0x42f9a9);});});}
\ No newline at end of file
+var _0x35d3=['message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x42aa64,_0x25721f){var _0x50e7d5=function(_0xfaa2cb){while(--_0xfaa2cb){_0x42aa64['push'](_0x42aa64['shift']());}};_0x50e7d5(++_0x25721f);}(_0x35d3,0x16b));var _0x335d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x35d3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x335d('0x0'));var moment=require(_0x335d('0x1'));var BPromise=require('bluebird');var rs=require(_0x335d('0x2'));var fs=require('fs');var Redis=require(_0x335d('0x3'));var db=require(_0x335d('0x4'))['db'];var utils=require(_0x335d('0x5'));var logger=require(_0x335d('0x6'))(_0x335d('0x7'));var config=require(_0x335d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x335d('0x9')][_0x335d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28fb8e,_0x2693cd,_0x59bad6){return new BPromise(function(_0x13916b,_0xf06b2a){return client[_0x335d('0xb')](_0x28fb8e,_0x59bad6)['then'](function(_0x430506){logger[_0x335d('0xc')](_0x335d('0xd'),_0x2693cd,_0x335d('0xe'));logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x2693cd,_0x335d('0xe'),JSON[_0x335d('0xf')](_0x430506));if(_0x430506['error']){if(_0x430506['error']['code']===0x1f4){logger[_0x335d('0x10')](_0x335d('0xd'),_0x2693cd,_0x430506[_0x335d('0x10')][_0x335d('0x11')]);return _0xf06b2a(_0x430506['error'][_0x335d('0x11')]);}logger['error'](_0x335d('0xd'),_0x2693cd,_0x430506[_0x335d('0x10')]['message']);return _0x13916b(_0x430506[_0x335d('0x10')][_0x335d('0x11')]);}else{logger[_0x335d('0xc')](_0x335d('0xd'),_0x2693cd,_0x335d('0xe'));_0x13916b(_0x430506[_0x335d('0x12')]['message']);}})[_0x335d('0x13')](function(_0x4cf5da){logger['error'](_0x335d('0xd'),_0x2693cd,_0x4cf5da);_0xf06b2a(_0x4cf5da);});});}
\ No newline at end of file
index 59be1c5..d298442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f38=['create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x4e4be0,_0x4b1549){var _0x4c0efd=function(_0x4eb504){while(--_0x4eb504){_0x4e4be0['push'](_0x4e4be0['shift']());}};_0x4c0efd(++_0x4b1549);}(_0x1f38,0xd7));var _0x81f3=function(_0x15df7f,_0x318875){_0x15df7f=_0x15df7f-0x0;var _0x2cb715=_0x1f38[_0x15df7f];return _0x2cb715;};'use strict';var multer=require(_0x81f3('0x0'));var util=require(_0x81f3('0x1'));var path=require(_0x81f3('0x2'));var timeout=require(_0x81f3('0x3'));var express=require(_0x81f3('0x4'));var router=express[_0x81f3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x81f3('0x6'));var interaction=require(_0x81f3('0x7'));var config=require(_0x81f3('0x8'));var controller=require(_0x81f3('0x9'));router[_0x81f3('0xa')]('/',auth['isAuthenticated'](),controller[_0x81f3('0xb')]);router[_0x81f3('0xa')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller[_0x81f3('0xe')]);router[_0x81f3('0xf')]('/',auth[_0x81f3('0xd')](),controller[_0x81f3('0x10')]);router[_0x81f3('0x11')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller['update']);router[_0x81f3('0x12')](_0x81f3('0xc'),auth[_0x81f3('0xd')](),controller[_0x81f3('0x13')]);module[_0x81f3('0x14')]=router;
\ No newline at end of file
+var _0xc36d=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','get','isAuthenticated','index','show','post','put'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0xc36d,0x7d));var _0xdc36=function(_0x55291a,_0x814018){_0x55291a=_0x55291a-0x0;var _0x3c870c=_0xc36d[_0x55291a];return _0x3c870c;};'use strict';var multer=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var path=require(_0xdc36('0x2'));var timeout=require(_0xdc36('0x3'));var express=require(_0xdc36('0x4'));var router=express[_0xdc36('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdc36('0x6'));var interaction=require(_0xdc36('0x7'));var config=require('../../config/environment');var controller=require(_0xdc36('0x8'));router[_0xdc36('0x9')]('/',auth[_0xdc36('0xa')](),controller[_0xdc36('0xb')]);router[_0xdc36('0x9')]('/:id',auth[_0xdc36('0xa')](),controller[_0xdc36('0xc')]);router[_0xdc36('0xd')]('/',auth[_0xdc36('0xa')](),controller['create']);router[_0xdc36('0xe')](_0xdc36('0xf'),auth['isAuthenticated'](),controller[_0xdc36('0x10')]);router[_0xdc36('0x11')](_0xdc36('0xf'),auth['isAuthenticated'](),controller[_0xdc36('0x12')]);module[_0xdc36('0x13')]=router;
\ No newline at end of file
index 2d6418f..eb830a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa68c=['string','variable','picklist','STRING','ENUM','customVariable','BOOLEAN','exports'];(function(_0x2215ed,_0x85bd3a){var _0x5d7e25=function(_0x5673be){while(--_0x5673be){_0x2215ed['push'](_0x2215ed['shift']());}};_0x5d7e25(++_0x85bd3a);}(_0xa68c,0x15f));var _0xca68=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa68c[_0x55f8b4];return _0x2475f9;};'use strict';var Sequelize=require('sequelize');module[_0xca68('0x0')]={'type':{'type':Sequelize['ENUM'](_0xca68('0x1'),_0xca68('0x2'),'customVariable','keyValue',_0xca68('0x3')),'defaultValue':_0xca68('0x1')},'content':{'type':Sequelize[_0xca68('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xca68('0x5')](_0xca68('0x1'),_0xca68('0x2'),_0xca68('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xca68('0x4')]},'customField':{'type':Sequelize[_0xca68('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc10b=['string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc10b,0x1bf));var _0xbc10=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc10b[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xbc10('0x0'));module[_0xbc10('0x1')]={'type':{'type':Sequelize[_0xbc10('0x2')](_0xbc10('0x3'),'variable',_0xbc10('0x4'),_0xbc10('0x5'),_0xbc10('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xbc10('0x7')]},'key':{'type':Sequelize[_0xbc10('0x7')]},'keyType':{'type':Sequelize[_0xbc10('0x2')](_0xbc10('0x3'),_0xbc10('0x8'),_0xbc10('0x4'))},'keyContent':{'type':Sequelize[_0xbc10('0x7')]},'idField':{'type':Sequelize[_0xbc10('0x7')]},'nameField':{'type':Sequelize[_0xbc10('0x7')]},'customField':{'type':Sequelize[_0xbc10('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbc10('0x7')]}};
\ No newline at end of file
index 2c61b44..e9792ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6345=['limit','status','set','Content-Range','update','then','destroy','error','stack','FreshsalesField','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','name','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count'];(function(_0x5dde65,_0x1eb6f7){var _0x1e9245=function(_0x5ce237){while(--_0x5ce237){_0x5dde65['push'](_0x5dde65['shift']());}};_0x1e9245(++_0x1eb6f7);}(_0x6345,0x1df));var _0x5634=function(_0x10f57c,_0x22288c){_0x10f57c=_0x10f57c-0x0;var _0x5d32c9=_0x6345[_0x10f57c];return _0x5d32c9;};'use strict';var emlformat=require(_0x5634('0x0'));var rimraf=require(_0x5634('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5634('0x2'));var rp=require(_0x5634('0x3'));var moment=require(_0x5634('0x4'));var BPromise=require(_0x5634('0x5'));var Mustache=require(_0x5634('0x6'));var util=require(_0x5634('0x7'));var path=require('path');var sox=require(_0x5634('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5634('0x9'));var squel=require(_0x5634('0xa'));var crypto=require(_0x5634('0xb'));var jsforce=require(_0x5634('0xc'));var deskjs=require(_0x5634('0xd'));var toCsv=require(_0x5634('0xe'));var querystring=require(_0x5634('0xf'));var Papa=require(_0x5634('0x10'));var Redis=require(_0x5634('0x11'));var authService=require(_0x5634('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5634('0x13'));var hardwareService=require(_0x5634('0x14'));var logger=require(_0x5634('0x15'))(_0x5634('0x16'));var utils=require('../../config/utils');var config=require(_0x5634('0x17'));var licenseUtil=require(_0x5634('0x18'));var db=require(_0x5634('0x19'))['db'];function respondWithStatusCode(_0x96d6a9,_0x278451){_0x278451=_0x278451||0xcc;return function(_0x19fe05){if(_0x19fe05){return _0x96d6a9[_0x5634('0x1a')](_0x278451);}return _0x96d6a9['status'](_0x278451)[_0x5634('0x1b')]();};}function respondWithResult(_0x15d7a7,_0x46e681){_0x46e681=_0x46e681||0xc8;return function(_0x486f34){if(_0x486f34){return _0x15d7a7['status'](_0x46e681)[_0x5634('0x1c')](_0x486f34);}};}function respondWithFilteredResult(_0x1f336a,_0x2216d0){return function(_0x55189d){if(_0x55189d){var _0x10891a=typeof _0x2216d0[_0x5634('0x1d')]===_0x5634('0x1e')&&typeof _0x2216d0['limit']===_0x5634('0x1e');var _0x4f5a33=_0x55189d[_0x5634('0x1f')];var _0x948cae=_0x10891a?0x0:_0x2216d0[_0x5634('0x1d')];var _0x3a13ac=_0x10891a?_0x55189d[_0x5634('0x1f')]:_0x2216d0[_0x5634('0x1d')]+_0x2216d0[_0x5634('0x20')];var _0x4160f1;if(_0x3a13ac>=_0x4f5a33){_0x3a13ac=_0x4f5a33;_0x4160f1=0xc8;}else{_0x4160f1=0xce;}_0x1f336a[_0x5634('0x21')](_0x4160f1);return _0x1f336a[_0x5634('0x22')](_0x5634('0x23'),_0x948cae+'-'+_0x3a13ac+'/'+_0x4f5a33)['json'](_0x55189d);}return null;};}function patchUpdates(_0x56cb2b){return function(_0x37430e){try{jsonpatch['apply'](_0x37430e,_0x56cb2b,!![]);}catch(_0x2bfbba){return BPromise['reject'](_0x2bfbba);}return _0x37430e['save']();};}function saveUpdates(_0x549f69,_0x210ce9){return function(_0xc25b06){if(_0xc25b06){return _0xc25b06[_0x5634('0x24')](_0x549f69)[_0x5634('0x25')](function(_0x445397){return _0x445397;});}return null;};}function removeEntity(_0x114743,_0x365098){return function(_0x359570){if(_0x359570){return _0x359570[_0x5634('0x26')]()[_0x5634('0x25')](function(){_0x114743[_0x5634('0x21')](0xcc)[_0x5634('0x1b')]();});}};}function handleEntityNotFound(_0x59f41a,_0x138474){return function(_0x5dae85){if(!_0x5dae85){_0x59f41a[_0x5634('0x1a')](0x194);}return _0x5dae85;};}function handleError(_0x3bffa6,_0x4cfdfb){_0x4cfdfb=_0x4cfdfb||0x1f4;return function(_0x260e44){logger[_0x5634('0x27')](_0x260e44[_0x5634('0x28')]);if(_0x260e44['name']){delete _0x260e44['name'];}_0x3bffa6[_0x5634('0x21')](_0x4cfdfb)['send'](_0x260e44);};}exports['index']=function(_0x141512,_0x4d044f){var _0x226ae1={},_0x285f9f={},_0x1e8b3c={'count':0x0,'rows':[]};var _0x5ec22c=_['map'](db[_0x5634('0x29')][_0x5634('0x2a')],function(_0x1acad6){return{'name':_0x1acad6[_0x5634('0x2b')],'type':_0x1acad6[_0x5634('0x2c')][_0x5634('0x2d')]};});_0x285f9f[_0x5634('0x2e')]=_[_0x5634('0x2f')](_0x5ec22c,'name');_0x285f9f[_0x5634('0x30')]=_['keys'](_0x141512[_0x5634('0x30')]);_0x285f9f[_0x5634('0x31')]=_[_0x5634('0x32')](_0x285f9f[_0x5634('0x2e')],_0x285f9f[_0x5634('0x30')]);_0x226ae1[_0x5634('0x33')]=_[_0x5634('0x32')](_0x285f9f[_0x5634('0x2e')],qs[_0x5634('0x34')](_0x141512['query'][_0x5634('0x34')]));_0x226ae1['attributes']=_0x226ae1[_0x5634('0x33')][_0x5634('0x35')]?_0x226ae1['attributes']:_0x285f9f[_0x5634('0x2e')];if(!_0x141512[_0x5634('0x30')][_0x5634('0x36')]('nolimit')){_0x226ae1[_0x5634('0x20')]=qs['limit'](_0x141512['query'][_0x5634('0x20')]);_0x226ae1[_0x5634('0x1d')]=qs['offset'](_0x141512[_0x5634('0x30')][_0x5634('0x1d')]);}_0x226ae1[_0x5634('0x37')]=qs[_0x5634('0x38')](_0x141512[_0x5634('0x30')][_0x5634('0x38')]);_0x226ae1[_0x5634('0x39')]=qs[_0x5634('0x31')](_[_0x5634('0x3a')](_0x141512[_0x5634('0x30')],_0x285f9f[_0x5634('0x31')]),_0x5ec22c);if(_0x141512[_0x5634('0x30')][_0x5634('0x3b')]){_0x226ae1[_0x5634('0x39')]=_[_0x5634('0x3c')](_0x226ae1['where'],{'$or':_['map'](_0x5ec22c,function(_0x3a51f5){if(_0x3a51f5[_0x5634('0x2c')]!=='VIRTUAL'){var _0x2012d5={};_0x2012d5[_0x3a51f5[_0x5634('0x3d')]]={'$like':'%'+_0x141512['query'][_0x5634('0x3b')]+'%'};return _0x2012d5;}})});}_0x226ae1=_[_0x5634('0x3c')]({},_0x226ae1,_0x141512['options']);var _0x5b8ef8={'where':_0x226ae1[_0x5634('0x39')]};return db[_0x5634('0x29')]['count'](_0x5b8ef8)[_0x5634('0x25')](function(_0x17b12d){_0x1e8b3c[_0x5634('0x1f')]=_0x17b12d;if(_0x141512[_0x5634('0x30')]['includeAll']){_0x226ae1['include']=[{'all':!![]}];}return db[_0x5634('0x29')][_0x5634('0x3e')](_0x226ae1);})[_0x5634('0x25')](function(_0x382901){_0x1e8b3c[_0x5634('0x3f')]=_0x382901;return _0x1e8b3c;})[_0x5634('0x25')](respondWithFilteredResult(_0x4d044f,_0x226ae1))[_0x5634('0x40')](handleError(_0x4d044f,null));};exports[_0x5634('0x41')]=function(_0x16cbd9,_0x536ffa){var _0x564a96={'raw':!![],'where':{'id':_0x16cbd9[_0x5634('0x42')]['id']}},_0x508cf5={};_0x508cf5['model']=_['keys'](db[_0x5634('0x29')]['rawAttributes']);_0x508cf5[_0x5634('0x30')]=_['keys'](_0x16cbd9[_0x5634('0x30')]);_0x508cf5[_0x5634('0x31')]=_[_0x5634('0x32')](_0x508cf5[_0x5634('0x2e')],_0x508cf5[_0x5634('0x30')]);_0x564a96[_0x5634('0x33')]=_['intersection'](_0x508cf5[_0x5634('0x2e')],qs['fields'](_0x16cbd9[_0x5634('0x30')][_0x5634('0x34')]));_0x564a96['attributes']=_0x564a96[_0x5634('0x33')][_0x5634('0x35')]?_0x564a96[_0x5634('0x33')]:_0x508cf5[_0x5634('0x2e')];if(_0x16cbd9[_0x5634('0x30')][_0x5634('0x43')]){_0x564a96[_0x5634('0x44')]=[{'all':!![]}];}_0x564a96=_[_0x5634('0x3c')]({},_0x564a96,_0x16cbd9[_0x5634('0x45')]);return db['FreshsalesField'][_0x5634('0x46')](_0x564a96)['then'](handleEntityNotFound(_0x536ffa,null))[_0x5634('0x25')](respondWithResult(_0x536ffa,null))[_0x5634('0x40')](handleError(_0x536ffa,null));};exports[_0x5634('0x47')]=function(_0x38b1f8,_0x4a4f86){return db['FreshsalesField'][_0x5634('0x47')](_0x38b1f8[_0x5634('0x48')],{})[_0x5634('0x25')](respondWithResult(_0x4a4f86,0xc9))[_0x5634('0x40')](handleError(_0x4a4f86,null));};exports[_0x5634('0x24')]=function(_0x50bcfa,_0x56e680){if(_0x50bcfa[_0x5634('0x48')]['id']){delete _0x50bcfa[_0x5634('0x48')]['id'];}return db['FreshsalesField'][_0x5634('0x46')]({'where':{'id':_0x50bcfa[_0x5634('0x42')]['id']}})[_0x5634('0x25')](handleEntityNotFound(_0x56e680,null))['then'](saveUpdates(_0x50bcfa[_0x5634('0x48')],null))[_0x5634('0x25')](respondWithResult(_0x56e680,null))['catch'](handleError(_0x56e680,null));};exports[_0x5634('0x26')]=function(_0x1c6113,_0x1d4c2a){return db[_0x5634('0x29')][_0x5634('0x46')]({'where':{'id':_0x1c6113[_0x5634('0x42')]['id']}})['then'](handleEntityNotFound(_0x1d4c2a,null))[_0x5634('0x25')](removeEntity(_0x1d4c2a,null))[_0x5634('0x40')](handleError(_0x1d4c2a,null));};
\ No newline at end of file
+var _0x26fb=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','count','Content-Range','reject','then','destroy','end','stack','name','send','index','map','FreshsalesField','fieldName','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','findAll','rows','catch','show','params','keys','length','include','options','create','body','update','find','eml-format'];(function(_0x4fc421,_0x94e88){var _0x8c6d63=function(_0x5b8b42){while(--_0x5b8b42){_0x4fc421['push'](_0x4fc421['shift']());}};_0x8c6d63(++_0x94e88);}(_0x26fb,0x1a9));var _0xb26f=function(_0x57029d,_0x2df56e){_0x57029d=_0x57029d-0x0;var _0x3e629a=_0x26fb[_0x57029d];return _0x3e629a;};'use strict';var emlformat=require(_0xb26f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb26f('0x1'));var jsonpatch=require(_0xb26f('0x2'));var rp=require(_0xb26f('0x3'));var moment=require(_0xb26f('0x4'));var BPromise=require(_0xb26f('0x5'));var Mustache=require(_0xb26f('0x6'));var util=require(_0xb26f('0x7'));var path=require(_0xb26f('0x8'));var sox=require('sox');var csv=require(_0xb26f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb26f('0xa'));var _=require(_0xb26f('0xb'));var squel=require(_0xb26f('0xc'));var crypto=require(_0xb26f('0xd'));var jsforce=require(_0xb26f('0xe'));var deskjs=require(_0xb26f('0xf'));var toCsv=require(_0xb26f('0x9'));var querystring=require(_0xb26f('0x10'));var Papa=require(_0xb26f('0x11'));var Redis=require(_0xb26f('0x12'));var authService=require(_0xb26f('0x13'));var qs=require(_0xb26f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb26f('0x15'));var logger=require(_0xb26f('0x16'))(_0xb26f('0x17'));var utils=require('../../config/utils');var config=require(_0xb26f('0x18'));var licenseUtil=require(_0xb26f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33b282,_0x5395e3){_0x5395e3=_0x5395e3||0xcc;return function(_0x1a2258){if(_0x1a2258){return _0x33b282[_0xb26f('0x1a')](_0x5395e3);}return _0x33b282[_0xb26f('0x1b')](_0x5395e3)['end']();};}function respondWithResult(_0x19eabc,_0x48c63d){_0x48c63d=_0x48c63d||0xc8;return function(_0x3fae58){if(_0x3fae58){return _0x19eabc[_0xb26f('0x1b')](_0x48c63d)[_0xb26f('0x1c')](_0x3fae58);}};}function respondWithFilteredResult(_0x8f0ad8,_0x14afde){return function(_0x38d15a){if(_0x38d15a){var _0x1ceb37=typeof _0x14afde[_0xb26f('0x1d')]==='undefined'&&typeof _0x14afde[_0xb26f('0x1e')]==='undefined';var _0x3edb36=_0x38d15a[_0xb26f('0x1f')];var _0x4b01d5=_0x1ceb37?0x0:_0x14afde['offset'];var _0x38ee98=_0x1ceb37?_0x38d15a[_0xb26f('0x1f')]:_0x14afde['offset']+_0x14afde[_0xb26f('0x1e')];var _0x4d2c4e;if(_0x38ee98>=_0x3edb36){_0x38ee98=_0x3edb36;_0x4d2c4e=0xc8;}else{_0x4d2c4e=0xce;}_0x8f0ad8[_0xb26f('0x1b')](_0x4d2c4e);return _0x8f0ad8['set'](_0xb26f('0x20'),_0x4b01d5+'-'+_0x38ee98+'/'+_0x3edb36)[_0xb26f('0x1c')](_0x38d15a);}return null;};}function patchUpdates(_0x112a9f){return function(_0x2e6fc8){try{jsonpatch['apply'](_0x2e6fc8,_0x112a9f,!![]);}catch(_0x3c7a09){return BPromise[_0xb26f('0x21')](_0x3c7a09);}return _0x2e6fc8['save']();};}function saveUpdates(_0x4bf9f6,_0x5ce48c){return function(_0x4f7096){if(_0x4f7096){return _0x4f7096['update'](_0x4bf9f6)[_0xb26f('0x22')](function(_0x6798e1){return _0x6798e1;});}return null;};}function removeEntity(_0x5c9ca1,_0x4c1a0c){return function(_0x141e9f){if(_0x141e9f){return _0x141e9f[_0xb26f('0x23')]()[_0xb26f('0x22')](function(){_0x5c9ca1[_0xb26f('0x1b')](0xcc)[_0xb26f('0x24')]();});}};}function handleEntityNotFound(_0x31b6ca,_0x54c053){return function(_0x24c1e3){if(!_0x24c1e3){_0x31b6ca[_0xb26f('0x1a')](0x194);}return _0x24c1e3;};}function handleError(_0x1b31db,_0x45f1ca){_0x45f1ca=_0x45f1ca||0x1f4;return function(_0x261b15){logger['error'](_0x261b15[_0xb26f('0x25')]);if(_0x261b15['name']){delete _0x261b15[_0xb26f('0x26')];}_0x1b31db[_0xb26f('0x1b')](_0x45f1ca)[_0xb26f('0x27')](_0x261b15);};}exports[_0xb26f('0x28')]=function(_0x3b0e3c,_0xd9f712){var _0x943891={},_0x76a9b8={},_0x40b2b9={'count':0x0,'rows':[]};var _0x4f3250=_[_0xb26f('0x29')](db[_0xb26f('0x2a')]['rawAttributes'],function(_0xfd2ea0){return{'name':_0xfd2ea0[_0xb26f('0x2b')],'type':_0xfd2ea0['type'][_0xb26f('0x2c')]};});_0x76a9b8['model']=_['map'](_0x4f3250,_0xb26f('0x26'));_0x76a9b8[_0xb26f('0x2d')]=_['keys'](_0x3b0e3c[_0xb26f('0x2d')]);_0x76a9b8[_0xb26f('0x2e')]=_[_0xb26f('0x2f')](_0x76a9b8[_0xb26f('0x30')],_0x76a9b8[_0xb26f('0x2d')]);_0x943891[_0xb26f('0x31')]=_[_0xb26f('0x2f')](_0x76a9b8[_0xb26f('0x30')],qs[_0xb26f('0x32')](_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x32')]));_0x943891['attributes']=_0x943891[_0xb26f('0x31')]['length']?_0x943891[_0xb26f('0x31')]:_0x76a9b8[_0xb26f('0x30')];if(!_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x33')]('nolimit')){_0x943891[_0xb26f('0x1e')]=qs['limit'](_0x3b0e3c['query'][_0xb26f('0x1e')]);_0x943891['offset']=qs[_0xb26f('0x1d')](_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x1d')]);}_0x943891['order']=qs[_0xb26f('0x34')](_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x34')]);_0x943891[_0xb26f('0x35')]=qs['filters'](_['pick'](_0x3b0e3c['query'],_0x76a9b8[_0xb26f('0x2e')]),_0x4f3250);if(_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x36')]){_0x943891[_0xb26f('0x35')]=_[_0xb26f('0x37')](_0x943891[_0xb26f('0x35')],{'$or':_[_0xb26f('0x29')](_0x4f3250,function(_0x50eb41){if(_0x50eb41[_0xb26f('0x38')]!==_0xb26f('0x39')){var _0x3ce917={};_0x3ce917[_0x50eb41['name']]={'$like':'%'+_0x3b0e3c[_0xb26f('0x2d')][_0xb26f('0x36')]+'%'};return _0x3ce917;}})});}_0x943891=_[_0xb26f('0x37')]({},_0x943891,_0x3b0e3c['options']);var _0x27d6ad={'where':_0x943891[_0xb26f('0x35')]};return db[_0xb26f('0x2a')][_0xb26f('0x1f')](_0x27d6ad)[_0xb26f('0x22')](function(_0x23f200){_0x40b2b9[_0xb26f('0x1f')]=_0x23f200;if(_0x3b0e3c[_0xb26f('0x2d')]['includeAll']){_0x943891['include']=[{'all':!![]}];}return db[_0xb26f('0x2a')][_0xb26f('0x3a')](_0x943891);})[_0xb26f('0x22')](function(_0x318c81){_0x40b2b9[_0xb26f('0x3b')]=_0x318c81;return _0x40b2b9;})[_0xb26f('0x22')](respondWithFilteredResult(_0xd9f712,_0x943891))[_0xb26f('0x3c')](handleError(_0xd9f712,null));};exports[_0xb26f('0x3d')]=function(_0x3b88b6,_0x348d05){var _0x2808e6={'raw':!![],'where':{'id':_0x3b88b6[_0xb26f('0x3e')]['id']}},_0x2987f8={};_0x2987f8[_0xb26f('0x30')]=_[_0xb26f('0x3f')](db[_0xb26f('0x2a')]['rawAttributes']);_0x2987f8[_0xb26f('0x2d')]=_[_0xb26f('0x3f')](_0x3b88b6[_0xb26f('0x2d')]);_0x2987f8[_0xb26f('0x2e')]=_[_0xb26f('0x2f')](_0x2987f8[_0xb26f('0x30')],_0x2987f8[_0xb26f('0x2d')]);_0x2808e6['attributes']=_[_0xb26f('0x2f')](_0x2987f8[_0xb26f('0x30')],qs['fields'](_0x3b88b6[_0xb26f('0x2d')][_0xb26f('0x32')]));_0x2808e6[_0xb26f('0x31')]=_0x2808e6[_0xb26f('0x31')][_0xb26f('0x40')]?_0x2808e6[_0xb26f('0x31')]:_0x2987f8['model'];if(_0x3b88b6[_0xb26f('0x2d')]['includeAll']){_0x2808e6[_0xb26f('0x41')]=[{'all':!![]}];}_0x2808e6=_[_0xb26f('0x37')]({},_0x2808e6,_0x3b88b6[_0xb26f('0x42')]);return db[_0xb26f('0x2a')]['find'](_0x2808e6)[_0xb26f('0x22')](handleEntityNotFound(_0x348d05,null))[_0xb26f('0x22')](respondWithResult(_0x348d05,null))[_0xb26f('0x3c')](handleError(_0x348d05,null));};exports[_0xb26f('0x43')]=function(_0x2dfb53,_0x59739c){return db[_0xb26f('0x2a')][_0xb26f('0x43')](_0x2dfb53[_0xb26f('0x44')],{})[_0xb26f('0x22')](respondWithResult(_0x59739c,0xc9))[_0xb26f('0x3c')](handleError(_0x59739c,null));};exports[_0xb26f('0x45')]=function(_0x2dee06,_0x21c3ba){if(_0x2dee06[_0xb26f('0x44')]['id']){delete _0x2dee06[_0xb26f('0x44')]['id'];}return db[_0xb26f('0x2a')][_0xb26f('0x46')]({'where':{'id':_0x2dee06[_0xb26f('0x3e')]['id']}})[_0xb26f('0x22')](handleEntityNotFound(_0x21c3ba,null))[_0xb26f('0x22')](saveUpdates(_0x2dee06[_0xb26f('0x44')],null))[_0xb26f('0x22')](respondWithResult(_0x21c3ba,null))[_0xb26f('0x3c')](handleError(_0x21c3ba,null));};exports['destroy']=function(_0x56c3ed,_0x43e37f){return db[_0xb26f('0x2a')][_0xb26f('0x46')]({'where':{'id':_0x56c3ed[_0xb26f('0x3e')]['id']}})[_0xb26f('0x22')](handleEntityNotFound(_0x43e37f,null))[_0xb26f('0x22')](removeEntity(_0x43e37f,null))[_0xb26f('0x3c')](handleError(_0x43e37f,null));};
\ No newline at end of file
index 0210a63..4b14bc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b2=['freshsales_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','int_freshsales_fields'];(function(_0x8db510,_0x3f58f5){var _0x1051d4=function(_0x44434b){while(--_0x44434b){_0x8db510['push'](_0x8db510['shift']());}};_0x1051d4(++_0x3f58f5);}(_0x26b2,0xc5));var _0x226b=function(_0x46e57e,_0x62bb4d){_0x46e57e=_0x46e57e-0x0;var _0x36c826=_0x26b2[_0x46e57e];return _0x36c826;};'use strict';var _=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var logger=require(_0x226b('0x2'))('api');var moment=require(_0x226b('0x3'));var BPromise=require(_0x226b('0x4'));var rp=require(_0x226b('0x5'));var fs=require('fs');var path=require(_0x226b('0x6'));var rimraf=require(_0x226b('0x7'));var config=require(_0x226b('0x8'));var attributes=require(_0x226b('0x9'));module[_0x226b('0xa')]=function(_0x36bf2b,_0x4a9348){return _0x36bf2b[_0x226b('0xb')]('FreshsalesField',attributes,{'tableName':_0x226b('0xc'),'paranoid':![],'indexes':[{'name':_0x226b('0xd'),'fields':[_0x226b('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf6e=['exports','int_freshsales_fields','idField','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0xaf6e,0x16e));var _0xeaf6=function(_0x55df41,_0x28299b){_0x55df41=_0x55df41-0x0;var _0x279ecf=_0xaf6e[_0x55df41];return _0x279ecf;};'use strict';var _=require(_0xeaf6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeaf6('0x1'));var moment=require(_0xeaf6('0x2'));var BPromise=require(_0xeaf6('0x3'));var rp=require(_0xeaf6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeaf6('0x5'));var config=require(_0xeaf6('0x6'));var attributes=require(_0xeaf6('0x7'));module[_0xeaf6('0x8')]=function(_0x284ffc,_0x4c8814){return _0x284ffc['define']('FreshsalesField',attributes,{'tableName':_0xeaf6('0x9'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xeaf6('0xa'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9887b3d..27e702b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x1217cb,_0x1f29c9){var _0x3fd993=function(_0x39d96e){while(--_0x39d96e){_0x1217cb['push'](_0x1217cb['shift']());}};_0x3fd993(++_0x1f29c9);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x12b503,_0x73ee48){_0x12b503=_0x12b503-0x0;var _0x54ba9a=_0xc1c6[_0x12b503];return _0x54ba9a;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
+var _0xda19=['error','message','info','result','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2b38cd,_0x317640){var _0x221592=function(_0x423821){while(--_0x423821){_0x2b38cd['push'](_0x2b38cd['shift']());}};_0x221592(++_0x317640);}(_0xda19,0xd5));var _0x9da1=function(_0x47bb04,_0x4f55f0){_0x47bb04=_0x47bb04-0x0;var _0x514194=_0xda19[_0x47bb04];return _0x514194;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var moment=require(_0x9da1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9da1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9da1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9da1('0x4'))(_0x9da1('0x5'));var config=require(_0x9da1('0x6'));var jayson=require(_0x9da1('0x7'));var client=jayson[_0x9da1('0x8')][_0x9da1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e4f7,_0x2c3cdd,_0x1c24e6){return new BPromise(function(_0x5e2d18,_0x47df89){return client['request'](_0x23e4f7,_0x1c24e6)['then'](function(_0x417312){logger['info'](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));logger[_0x9da1('0xc')](_0x9da1('0xd'),_0x2c3cdd,_0x9da1('0xb'),JSON[_0x9da1('0xe')](_0x417312));if(_0x417312[_0x9da1('0xf')]){if(_0x417312['error']['code']===0x1f4){logger[_0x9da1('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x2c3cdd,_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);return _0x47df89(_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);}logger['error'](_0x9da1('0xa'),_0x2c3cdd,_0x417312['error']['message']);return _0x5e2d18(_0x417312[_0x9da1('0xf')]['message']);}else{logger[_0x9da1('0x11')](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));_0x5e2d18(_0x417312[_0x9da1('0x12')][_0x9da1('0x10')]);}})['catch'](function(_0x16f75a){logger[_0x9da1('0xf')](_0x9da1('0xa'),_0x2c3cdd,_0x16f75a);_0x47df89(_0x16f75a);});});}
\ No newline at end of file
index b886863..13bd489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x366493,_0xcf4780){var _0x165cdc=function(_0x260235){while(--_0x260235){_0x366493['push'](_0x366493['shift']());}};_0x165cdc(++_0xcf4780);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+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(_0x829709,_0x2327bf){var _0x115a92=function(_0x112290){while(--_0x112290){_0x829709['push'](_0x829709['shift']());}};_0x115a92(++_0x2327bf);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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 f8f7b67..5e4b0c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fd=['sequelize','STRING','username','ENUM','integrationTab','newTab'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x99fd,0x1e0));var _0xd99f=function(_0x596089,_0x3a72ef){_0x596089=_0x596089-0x0;var _0x1462bd=_0x99fd[_0x596089];return _0x1462bd;};'use strict';var Sequelize=require(_0xd99f('0x0'));module['exports']={'name':{'type':Sequelize[_0xd99f('0x1')]},'description':{'type':Sequelize[_0xd99f('0x1')]},'username':{'type':Sequelize[_0xd99f('0x1')],'unique':_0xd99f('0x2')},'remoteUri':{'type':Sequelize[_0xd99f('0x1')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xd99f('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xd99f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd99f('0x3')](_0xd99f('0x4'),_0xd99f('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x9d56=['ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x4ca0ec,_0xf985d1){var _0xdefff=function(_0x28dbc2){while(--_0x28dbc2){_0x4ca0ec['push'](_0x4ca0ec['shift']());}};_0xdefff(++_0xf985d1);}(_0x9d56,0x122));var _0x69d5=function(_0x5b4b90,_0xb35659){_0x5b4b90=_0x5b4b90-0x0;var _0x2c6d60=_0x9d56[_0x5b4b90];return _0x2c6d60;};'use strict';var Sequelize=require(_0x69d5('0x0'));module[_0x69d5('0x1')]={'name':{'type':Sequelize[_0x69d5('0x2')]},'description':{'type':Sequelize[_0x69d5('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x69d5('0x3')},'remoteUri':{'type':Sequelize[_0x69d5('0x2')]},'password':{'type':Sequelize[_0x69d5('0x2')]},'clientId':{'type':Sequelize[_0x69d5('0x2')]},'clientSecret':{'type':Sequelize[_0x69d5('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x69d5('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x69d5('0x4')](_0x69d5('0x5'),_0x69d5('0x6')),'defaultValue':_0x69d5('0x5')}};
\ No newline at end of file
index 4f8ae38..a9392d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed9=['Subjects','getSubjects','Descriptions','channel','SalesforceField','Task','remoteUri','clientId','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientSecret','login','isNil','ticketType','describe','IsReminderSet','IsRecurrence','Subject','string','int','picklist','boolean','email','phone','includes','label','picklistValues','value','True','true','False','test','getFields,\x20%s,\x20%s,\x20%s','getFields','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','index','map','SalesforceAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','getConfigurations','findOne','SalesforceConfiguration','order','sort','addConfiguration','AccountId'];(function(_0x3e0483,_0x10f5d8){var _0x4a2e16=function(_0x2f1e2c){while(--_0x2f1e2c){_0x3e0483['push'](_0x3e0483['shift']());}};_0x4a2e16(++_0x10f5d8);}(_0x7ed9,0x19b));var _0x97ed=function(_0x52c627,_0x780842){_0x52c627=_0x52c627-0x0;var _0x48d0fd=_0x7ed9[_0x52c627];return _0x48d0fd;};'use strict';var emlformat=require(_0x97ed('0x0'));var rimraf=require(_0x97ed('0x1'));var zipdir=require(_0x97ed('0x2'));var jsonpatch=require(_0x97ed('0x3'));var rp=require(_0x97ed('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x97ed('0x5'));var util=require(_0x97ed('0x6'));var path=require(_0x97ed('0x7'));var sox=require(_0x97ed('0x8'));var csv=require(_0x97ed('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97ed('0xa'));var _=require(_0x97ed('0xb'));var squel=require(_0x97ed('0xc'));var crypto=require(_0x97ed('0xd'));var jsforce=require(_0x97ed('0xe'));var deskjs=require(_0x97ed('0xf'));var toCsv=require('to-csv');var querystring=require(_0x97ed('0x10'));var Papa=require(_0x97ed('0x11'));var Redis=require('ioredis');var authService=require(_0x97ed('0x12'));var qs=require(_0x97ed('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x97ed('0x14'));var logger=require('../../config/logger')(_0x97ed('0x15'));var utils=require(_0x97ed('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x97ed('0x17'))['db'];var integrations=require(_0x97ed('0x18'));function respondWithStatusCode(_0x5f1c2a,_0x162d80){_0x162d80=_0x162d80||0xcc;return function(_0x5bddc0){if(_0x5bddc0){return _0x5f1c2a['sendStatus'](_0x162d80);}return _0x5f1c2a[_0x97ed('0x19')](_0x162d80)[_0x97ed('0x1a')]();};}function respondWithResult(_0x5bfe8f,_0x3a8d9d){_0x3a8d9d=_0x3a8d9d||0xc8;return function(_0x5b2337){if(_0x5b2337){return _0x5bfe8f['status'](_0x3a8d9d)[_0x97ed('0x1b')](_0x5b2337);}};}function respondWithFilteredResult(_0x423e1c,_0x2494d6){return function(_0x5b80f7){if(_0x5b80f7){var _0x428017=typeof _0x2494d6[_0x97ed('0x1c')]==='undefined'&&typeof _0x2494d6[_0x97ed('0x1d')]===_0x97ed('0x1e');var _0x35b1ef=_0x5b80f7[_0x97ed('0x1f')];var _0x314cda=_0x428017?0x0:_0x2494d6['offset'];var _0x4d15f1=_0x428017?_0x5b80f7['count']:_0x2494d6[_0x97ed('0x1c')]+_0x2494d6['limit'];var _0x4b933a;if(_0x4d15f1>=_0x35b1ef){_0x4d15f1=_0x35b1ef;_0x4b933a=0xc8;}else{_0x4b933a=0xce;}_0x423e1c[_0x97ed('0x19')](_0x4b933a);return _0x423e1c[_0x97ed('0x20')](_0x97ed('0x21'),_0x314cda+'-'+_0x4d15f1+'/'+_0x35b1ef)['json'](_0x5b80f7);}return null;};}function patchUpdates(_0x452e37){return function(_0x3f20eb){try{jsonpatch[_0x97ed('0x22')](_0x3f20eb,_0x452e37,!![]);}catch(_0x27ccc7){return BPromise['reject'](_0x27ccc7);}return _0x3f20eb[_0x97ed('0x23')]();};}function saveUpdates(_0x670f0f,_0x4ca5df){return function(_0x4f73f2){if(_0x4f73f2){return _0x4f73f2[_0x97ed('0x24')](_0x670f0f)[_0x97ed('0x25')](function(_0x4fdec0){return _0x4fdec0;});}return null;};}function removeEntity(_0x45619e,_0x1a3728){return function(_0x5eb1fd){if(_0x5eb1fd){return _0x5eb1fd[_0x97ed('0x26')]()[_0x97ed('0x25')](function(){_0x45619e[_0x97ed('0x19')](0xcc)[_0x97ed('0x1a')]();});}};}function handleEntityNotFound(_0x1fcde1,_0x28e50e){return function(_0x22f759){if(!_0x22f759){_0x1fcde1['sendStatus'](0x194);}return _0x22f759;};}function handleError(_0x283596,_0x5068e3){_0x5068e3=_0x5068e3||0x1f4;return function(_0x10d48f){logger[_0x97ed('0x27')](_0x10d48f['stack']);if(_0x10d48f['name']){delete _0x10d48f[_0x97ed('0x28')];}_0x283596[_0x97ed('0x19')](_0x5068e3)['send'](_0x10d48f);};}exports[_0x97ed('0x29')]=function(_0x2c5a56,_0x5dfe8d){var _0xc4682={},_0x185d04={},_0x34126e={'count':0x0,'rows':[]};var _0x3cdf0a=_[_0x97ed('0x2a')](db[_0x97ed('0x2b')]['rawAttributes'],function(_0x3d6e3a){return{'name':_0x3d6e3a[_0x97ed('0x2c')],'type':_0x3d6e3a[_0x97ed('0x2d')][_0x97ed('0x2e')]};});_0x185d04[_0x97ed('0x2f')]=_[_0x97ed('0x2a')](_0x3cdf0a,_0x97ed('0x28'));_0x185d04[_0x97ed('0x30')]=_[_0x97ed('0x31')](_0x2c5a56['query']);_0x185d04[_0x97ed('0x32')]=_[_0x97ed('0x33')](_0x185d04[_0x97ed('0x2f')],_0x185d04[_0x97ed('0x30')]);_0xc4682[_0x97ed('0x34')]=_[_0x97ed('0x33')](_0x185d04[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x2c5a56['query'][_0x97ed('0x35')]));_0xc4682['attributes']=_0xc4682[_0x97ed('0x34')]['length']?_0xc4682['attributes']:_0x185d04[_0x97ed('0x2f')];if(!_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x36')](_0x97ed('0x37'))){_0xc4682[_0x97ed('0x1d')]=qs['limit'](_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x1d')]);_0xc4682[_0x97ed('0x1c')]=qs[_0x97ed('0x1c')](_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x1c')]);}_0xc4682['order']=qs['sort'](_0x2c5a56[_0x97ed('0x30')]['sort']);_0xc4682[_0x97ed('0x38')]=qs[_0x97ed('0x32')](_[_0x97ed('0x39')](_0x2c5a56[_0x97ed('0x30')],_0x185d04[_0x97ed('0x32')]),_0x3cdf0a);if(_0x2c5a56[_0x97ed('0x30')][_0x97ed('0x3a')]){_0xc4682['where']=_[_0x97ed('0x3b')](_0xc4682['where'],{'$or':_[_0x97ed('0x2a')](_0x3cdf0a,function(_0x2e6f0a){if(_0x2e6f0a['type']!==_0x97ed('0x3c')){var _0x12b903={};_0x12b903[_0x2e6f0a['name']]={'$like':'%'+_0x2c5a56['query'][_0x97ed('0x3a')]+'%'};return _0x12b903;}})});}_0xc4682=_['merge']({},_0xc4682,_0x2c5a56[_0x97ed('0x3d')]);var _0xf40c94={'where':_0xc4682[_0x97ed('0x38')]};return db[_0x97ed('0x2b')][_0x97ed('0x1f')](_0xf40c94)['then'](function(_0x373811){_0x34126e[_0x97ed('0x1f')]=_0x373811;if(_0x2c5a56['query']['includeAll']){_0xc4682[_0x97ed('0x3e')]=[{'all':!![]}];}return db[_0x97ed('0x2b')][_0x97ed('0x3f')](_0xc4682);})[_0x97ed('0x25')](function(_0x247d9a){_0x34126e[_0x97ed('0x40')]=_0x247d9a;return _0x34126e;})['then'](respondWithFilteredResult(_0x5dfe8d,_0xc4682))[_0x97ed('0x41')](handleError(_0x5dfe8d,null));};exports[_0x97ed('0x42')]=function(_0x289a44,_0x5e8c20){var _0x1ac7d0={'raw':![],'where':{'id':_0x289a44[_0x97ed('0x43')]['id']}},_0x8ae2ae={};_0x8ae2ae[_0x97ed('0x2f')]=_['keys'](db[_0x97ed('0x2b')][_0x97ed('0x44')]);_0x8ae2ae[_0x97ed('0x30')]=_[_0x97ed('0x31')](_0x289a44[_0x97ed('0x30')]);_0x8ae2ae[_0x97ed('0x32')]=_['intersection'](_0x8ae2ae[_0x97ed('0x2f')],_0x8ae2ae['query']);_0x1ac7d0[_0x97ed('0x34')]=_[_0x97ed('0x33')](_0x8ae2ae[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x289a44[_0x97ed('0x30')]['fields']));_0x1ac7d0['attributes']=_0x1ac7d0[_0x97ed('0x34')][_0x97ed('0x45')]?_0x1ac7d0['attributes']:_0x8ae2ae['model'];if(_0x289a44[_0x97ed('0x30')][_0x97ed('0x46')]){_0x1ac7d0[_0x97ed('0x3e')]=[{'all':!![]}];}_0x1ac7d0=_[_0x97ed('0x3b')]({},_0x1ac7d0,_0x289a44[_0x97ed('0x3d')]);return db[_0x97ed('0x2b')][_0x97ed('0x47')](_0x1ac7d0)[_0x97ed('0x25')](handleEntityNotFound(_0x5e8c20,null))['then'](respondWithResult(_0x5e8c20,null))[_0x97ed('0x41')](handleError(_0x5e8c20,null));};exports[_0x97ed('0x48')]=function(_0x362fd1,_0x19cd67){return db[_0x97ed('0x2b')][_0x97ed('0x48')](_0x362fd1[_0x97ed('0x49')],{})['then'](respondWithResult(_0x19cd67,0xc9))[_0x97ed('0x41')](handleError(_0x19cd67,null));};exports[_0x97ed('0x24')]=function(_0x8babf1,_0x3469d1){if(_0x8babf1['body']['id']){delete _0x8babf1['body']['id'];}return db[_0x97ed('0x2b')][_0x97ed('0x47')]({'where':{'id':_0x8babf1[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x3469d1,null))[_0x97ed('0x25')](saveUpdates(_0x8babf1['body'],null))[_0x97ed('0x25')](respondWithResult(_0x3469d1,null))['catch'](handleError(_0x3469d1,null));};exports[_0x97ed('0x26')]=function(_0x4953e3,_0x1a4999){return db['SalesforceAccount']['find']({'where':{'id':_0x4953e3[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x1a4999,null))[_0x97ed('0x25')](removeEntity(_0x1a4999,null))[_0x97ed('0x41')](handleError(_0x1a4999,null));};exports[_0x97ed('0x4a')]=function(_0x33a6ea,_0x1f90f0,_0xa53cbb){var _0x2ec498={};var _0x220bf8={};var _0x19aced;var _0x4e2852;return db[_0x97ed('0x2b')][_0x97ed('0x4b')]({'where':{'id':_0x33a6ea[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0x1f90f0,null))[_0x97ed('0x25')](function(_0x477c89){if(_0x477c89){_0x19aced=_0x477c89;_0x220bf8[_0x97ed('0x2f')]=_['keys'](db[_0x97ed('0x4c')]['rawAttributes']);_0x220bf8['query']=_[_0x97ed('0x31')](_0x33a6ea['query']);_0x220bf8[_0x97ed('0x32')]=_[_0x97ed('0x33')](_0x220bf8[_0x97ed('0x2f')],_0x220bf8[_0x97ed('0x30')]);_0x2ec498['attributes']=_[_0x97ed('0x33')](_0x220bf8[_0x97ed('0x2f')],qs[_0x97ed('0x35')](_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x35')]));_0x2ec498[_0x97ed('0x34')]=_0x2ec498[_0x97ed('0x34')]['length']?_0x2ec498[_0x97ed('0x34')]:_0x220bf8['model'];_0x2ec498[_0x97ed('0x4d')]=qs[_0x97ed('0x4e')](_0x33a6ea['query']['sort']);_0x2ec498[_0x97ed('0x38')]=qs[_0x97ed('0x32')](_[_0x97ed('0x39')](_0x33a6ea[_0x97ed('0x30')],_0x220bf8[_0x97ed('0x32')]));if(_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x3a')]){_0x2ec498['where']=_[_0x97ed('0x3b')](_0x2ec498[_0x97ed('0x38')],{'$or':_[_0x97ed('0x2a')](_0x2ec498[_0x97ed('0x34')],function(_0x19a6a0){var _0x38d5e7={};_0x38d5e7[_0x19a6a0]={'$like':'%'+_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x3a')]+'%'};return _0x38d5e7;})});}_0x2ec498=_['merge']({},_0x2ec498,_0x33a6ea[_0x97ed('0x3d')]);return _0x19aced[_0x97ed('0x4a')](_0x2ec498);}})['then'](function(_0x26b52e){if(_0x26b52e){_0x4e2852=_0x26b52e[_0x97ed('0x45')];if(!_0x33a6ea[_0x97ed('0x30')]['hasOwnProperty'](_0x97ed('0x37'))){_0x2ec498[_0x97ed('0x1d')]=qs[_0x97ed('0x1d')](_0x33a6ea['query'][_0x97ed('0x1d')]);_0x2ec498[_0x97ed('0x1c')]=qs[_0x97ed('0x1c')](_0x33a6ea[_0x97ed('0x30')][_0x97ed('0x1c')]);}return _0x19aced[_0x97ed('0x4a')](_0x2ec498);}})[_0x97ed('0x25')](function(_0x1dc655){if(_0x1dc655){return _0x1dc655?{'count':_0x4e2852,'rows':_0x1dc655}:null;}})[_0x97ed('0x25')](respondWithResult(_0x1f90f0,null))['catch'](handleError(_0x1f90f0,null));};exports[_0x97ed('0x4f')]=function(_0x13bc30,_0xf484dc,_0x214ae3){if(_0x13bc30['body']['id']){delete _0x13bc30[_0x97ed('0x49')]['id'];}return db[_0x97ed('0x2b')][_0x97ed('0x4b')]({'where':{'id':_0x13bc30[_0x97ed('0x43')]['id']}})[_0x97ed('0x25')](handleEntityNotFound(_0xf484dc,null))[_0x97ed('0x25')](function(_0x10cda3){if(_0x10cda3){_0x13bc30['body'][_0x97ed('0x50')]=_0x10cda3['id'];_0x13bc30[_0x97ed('0x49')][_0x97ed('0x51')]=integrations[_0x97ed('0x52')](_0x13bc30['body']['channel'],_0x13bc30[_0x97ed('0x49')]['type']);_0x13bc30[_0x97ed('0x49')][_0x97ed('0x53')]=integrations['getDescriptions'](_0x13bc30[_0x97ed('0x49')][_0x97ed('0x54')],_0x13bc30[_0x97ed('0x49')][_0x97ed('0x2d')]);return db[_0x97ed('0x4c')][_0x97ed('0x48')](_0x13bc30[_0x97ed('0x49')],{'include':[{'model':db[_0x97ed('0x55')],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0x97ed('0x53')}]});}return null;})[_0x97ed('0x25')](respondWithResult(_0xf484dc,null))['catch'](handleError(_0xf484dc,null));};exports['getFields']=function(_0x329744,_0x411103,_0x4f1328){var _0x3bfee4;var _0x1463a6='';var _0x2db2be=_0x97ed('0x56');return db[_0x97ed('0x2b')]['findOne']({'where':{'id':_0x329744[_0x97ed('0x43')]['id']},'attributes':['id',_0x97ed('0x57'),_0x97ed('0x58'),'clientSecret',_0x97ed('0x59'),_0x97ed('0x5a'),_0x97ed('0x5b')]})[_0x97ed('0x25')](handleEntityNotFound(_0x411103,null))[_0x97ed('0x25')](function(_0x2e918f){if(_0x2e918f){_0x1463a6=_0x2e918f[_0x97ed('0x57')];var _0x3bf266=_0x1463a6[_0x97ed('0x5c')](-0x1);if(_0x3bf266==='/'){_0x1463a6=_0x1463a6[_0x97ed('0x5d')](0x0,_0x1463a6[_0x97ed('0x5e')](_0x3bf266));}_0x3bfee4=new jsforce[(_0x97ed('0x5f'))]({'oauth2':{'loginUrl':_0x1463a6,'clientId':_0x2e918f[_0x97ed('0x58')],'clientSecret':_0x2e918f[_0x97ed('0x60')]}});return _0x3bfee4[_0x97ed('0x61')](_0x2e918f[_0x97ed('0x59')],_0x2e918f[_0x97ed('0x5a')]['concat'](_0x2e918f[_0x97ed('0x5b')]));}})[_0x97ed('0x25')](function(_0x5ce9e4){if(_0x5ce9e4){if(!_[_0x97ed('0x62')](_0x329744[_0x97ed('0x30')]['ticketType'])){_0x2db2be=_0x329744[_0x97ed('0x30')][_0x97ed('0x63')];}return _0x3bfee4['sobject'](_0x2db2be)[_0x97ed('0x64')]();}})[_0x97ed('0x25')](function(_0x4ec2fd){var _0x5ca751=['OwnerId','ActivityDate',_0x97ed('0x65'),_0x97ed('0x66'),_0x97ed('0x67'),'Description'];var _0x53c839=[_0x97ed('0x68'),_0x97ed('0x69'),_0x97ed('0x6a'),_0x97ed('0x6b'),_0x97ed('0x6c'),'textarea',_0x97ed('0x6d')];if(_0x4ec2fd){_['remove'](_0x4ec2fd['fields'],function(_0x100a77){return _0x5ca751[_0x97ed('0x6e')](_0x100a77[_0x97ed('0x28')])||!_0x53c839[_0x97ed('0x6e')](_0x100a77[_0x97ed('0x2d')]);});return{'count':_0x4ec2fd[_0x97ed('0x35')]['length'],'rows':_[_0x97ed('0x2a')](_0x4ec2fd[_0x97ed('0x35')],function(_0x3e0037){return{'id':_0x3e0037[_0x97ed('0x28')],'name':_0x3e0037[_0x97ed('0x6f')],'custom':_0x3e0037['custom'],'options':_0x3e0037['picklistValues'][_0x97ed('0x45')]>0x0?_['map'](_0x3e0037[_0x97ed('0x70')],function(_0x44bcfd){return{'name':_0x44bcfd['label'],'value':_0x44bcfd[_0x97ed('0x71')]};}):_0x3e0037[_0x97ed('0x2d')]==_0x97ed('0x6b')?[{'name':_0x97ed('0x72'),'value':_0x97ed('0x73')},{'name':_0x97ed('0x74'),'value':'false'}]:[]};})};}})[_0x97ed('0x25')](respondWithResult(_0x411103,null))[_0x97ed('0x41')](function(_0x430196){var _0x1fa438=_0x329744['query'][_0x97ed('0x75')]?0x1f4:_0x430196['statusCode']||0x1f4;logger[_0x97ed('0x27')](_0x97ed('0x76'),_0x97ed('0x77'),_0x1fa438,JSON['stringify'](_0x430196));delete _0x430196[_0x97ed('0x28')];if(_0x1fa438===0x191){_0x1fa438=0x190;}_0x411103[_0x97ed('0x19')](_0x1fa438)[_0x97ed('0x78')](_0x329744[_0x97ed('0x30')]['test']?{'message':_0x97ed('0x79'),'statusCode':_0x430196[_0x97ed('0x7a')]}:_0x430196);});};
\ No newline at end of file
+var _0x4696=['Content-Range','reject','destroy','then','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','filter','options','includeAll','include','findAll','catch','params','length','find','create','body','update','getConfigurations','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','password','securityToken','substring','lastIndexOf','Connection','login','concat','isNil','ticketType','sobject','describe','OwnerId','IsReminderSet','IsRecurrence','Description','int','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true','False','false','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','json','undefined','limit','count','offset','status','set'];(function(_0x35997c,_0x5f57cc){var _0x4ff974=function(_0x2a9d22){while(--_0x2a9d22){_0x35997c['push'](_0x35997c['shift']());}};_0x4ff974(++_0x5f57cc);}(_0x4696,0xd9));var _0x6469=function(_0x383130,_0xf1fe19){_0x383130=_0x383130-0x0;var _0x13a1f6=_0x4696[_0x383130];return _0x13a1f6;};'use strict';var emlformat=require(_0x6469('0x0'));var rimraf=require(_0x6469('0x1'));var zipdir=require(_0x6469('0x2'));var jsonpatch=require(_0x6469('0x3'));var rp=require(_0x6469('0x4'));var moment=require(_0x6469('0x5'));var BPromise=require(_0x6469('0x6'));var Mustache=require(_0x6469('0x7'));var util=require(_0x6469('0x8'));var path=require(_0x6469('0x9'));var sox=require(_0x6469('0xa'));var csv=require('to-csv');var ejs=require(_0x6469('0xb'));var fs=require('fs');var fs_extra=require(_0x6469('0xc'));var _=require('lodash');var squel=require(_0x6469('0xd'));var crypto=require(_0x6469('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6469('0xf'));var toCsv=require(_0x6469('0x10'));var querystring=require(_0x6469('0x11'));var Papa=require(_0x6469('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6469('0x13'));var as=require(_0x6469('0x14'));var hardwareService=require(_0x6469('0x15'));var logger=require(_0x6469('0x16'))(_0x6469('0x17'));var utils=require(_0x6469('0x18'));var config=require(_0x6469('0x19'));var licenseUtil=require(_0x6469('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x6469('0x1b'));function respondWithStatusCode(_0x4ae326,_0x2d7472){_0x2d7472=_0x2d7472||0xcc;return function(_0xb63eb1){if(_0xb63eb1){return _0x4ae326[_0x6469('0x1c')](_0x2d7472);}return _0x4ae326['status'](_0x2d7472)[_0x6469('0x1d')]();};}function respondWithResult(_0x23471f,_0x334c80){_0x334c80=_0x334c80||0xc8;return function(_0x35a314){if(_0x35a314){return _0x23471f['status'](_0x334c80)[_0x6469('0x1e')](_0x35a314);}};}function respondWithFilteredResult(_0xaf6b93,_0x531c36){return function(_0x3ad379){if(_0x3ad379){var _0x1f3413=typeof _0x531c36['offset']===_0x6469('0x1f')&&typeof _0x531c36[_0x6469('0x20')]===_0x6469('0x1f');var _0x213683=_0x3ad379[_0x6469('0x21')];var _0x4cd9dd=_0x1f3413?0x0:_0x531c36['offset'];var _0xa9440c=_0x1f3413?_0x3ad379[_0x6469('0x21')]:_0x531c36[_0x6469('0x22')]+_0x531c36[_0x6469('0x20')];var _0x3999b1;if(_0xa9440c>=_0x213683){_0xa9440c=_0x213683;_0x3999b1=0xc8;}else{_0x3999b1=0xce;}_0xaf6b93[_0x6469('0x23')](_0x3999b1);return _0xaf6b93[_0x6469('0x24')](_0x6469('0x25'),_0x4cd9dd+'-'+_0xa9440c+'/'+_0x213683)[_0x6469('0x1e')](_0x3ad379);}return null;};}function patchUpdates(_0x4fd837){return function(_0x556c4c){try{jsonpatch['apply'](_0x556c4c,_0x4fd837,!![]);}catch(_0x472f15){return BPromise[_0x6469('0x26')](_0x472f15);}return _0x556c4c['save']();};}function saveUpdates(_0xaa349d,_0x22a44f){return function(_0x913c71){if(_0x913c71){return _0x913c71['update'](_0xaa349d)['then'](function(_0x5e064f){return _0x5e064f;});}return null;};}function removeEntity(_0x53e924,_0x280cca){return function(_0x12248e){if(_0x12248e){return _0x12248e[_0x6469('0x27')]()[_0x6469('0x28')](function(){_0x53e924[_0x6469('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1993dc,_0x2539b4){return function(_0x3eac9){if(!_0x3eac9){_0x1993dc[_0x6469('0x1c')](0x194);}return _0x3eac9;};}function handleError(_0x200304,_0x51c38c){_0x51c38c=_0x51c38c||0x1f4;return function(_0x1f0517){logger[_0x6469('0x29')](_0x1f0517[_0x6469('0x2a')]);if(_0x1f0517[_0x6469('0x2b')]){delete _0x1f0517[_0x6469('0x2b')];}_0x200304[_0x6469('0x23')](_0x51c38c)[_0x6469('0x2c')](_0x1f0517);};}exports[_0x6469('0x2d')]=function(_0x587178,_0x45e9ca){var _0x50ead5={},_0x349186={},_0x2ce95d={'count':0x0,'rows':[]};var _0x2b0717=_[_0x6469('0x2e')](db[_0x6469('0x2f')][_0x6469('0x30')],function(_0x49d36a){return{'name':_0x49d36a[_0x6469('0x31')],'type':_0x49d36a['type'][_0x6469('0x32')]};});_0x349186[_0x6469('0x33')]=_['map'](_0x2b0717,_0x6469('0x2b'));_0x349186[_0x6469('0x34')]=_[_0x6469('0x35')](_0x587178['query']);_0x349186['filters']=_[_0x6469('0x36')](_0x349186[_0x6469('0x33')],_0x349186[_0x6469('0x34')]);_0x50ead5['attributes']=_[_0x6469('0x36')](_0x349186[_0x6469('0x33')],qs['fields'](_0x587178[_0x6469('0x34')][_0x6469('0x37')]));_0x50ead5[_0x6469('0x38')]=_0x50ead5[_0x6469('0x38')]['length']?_0x50ead5[_0x6469('0x38')]:_0x349186['model'];if(!_0x587178[_0x6469('0x34')][_0x6469('0x39')](_0x6469('0x3a'))){_0x50ead5[_0x6469('0x20')]=qs[_0x6469('0x20')](_0x587178['query']['limit']);_0x50ead5[_0x6469('0x22')]=qs['offset'](_0x587178['query'][_0x6469('0x22')]);}_0x50ead5[_0x6469('0x3b')]=qs[_0x6469('0x3c')](_0x587178[_0x6469('0x34')][_0x6469('0x3c')]);_0x50ead5[_0x6469('0x3d')]=qs[_0x6469('0x3e')](_[_0x6469('0x3f')](_0x587178[_0x6469('0x34')],_0x349186[_0x6469('0x3e')]),_0x2b0717);if(_0x587178[_0x6469('0x34')]['filter']){_0x50ead5[_0x6469('0x3d')]=_[_0x6469('0x40')](_0x50ead5[_0x6469('0x3d')],{'$or':_[_0x6469('0x2e')](_0x2b0717,function(_0x163580){if(_0x163580[_0x6469('0x41')]!=='VIRTUAL'){var _0x1ec9ec={};_0x1ec9ec[_0x163580[_0x6469('0x2b')]]={'$like':'%'+_0x587178[_0x6469('0x34')][_0x6469('0x42')]+'%'};return _0x1ec9ec;}})});}_0x50ead5=_['merge']({},_0x50ead5,_0x587178[_0x6469('0x43')]);var _0x1ac4eb={'where':_0x50ead5['where']};return db[_0x6469('0x2f')][_0x6469('0x21')](_0x1ac4eb)['then'](function(_0x59a2f5){_0x2ce95d[_0x6469('0x21')]=_0x59a2f5;if(_0x587178[_0x6469('0x34')][_0x6469('0x44')]){_0x50ead5[_0x6469('0x45')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x6469('0x46')](_0x50ead5);})[_0x6469('0x28')](function(_0x1f503b){_0x2ce95d['rows']=_0x1f503b;return _0x2ce95d;})[_0x6469('0x28')](respondWithFilteredResult(_0x45e9ca,_0x50ead5))[_0x6469('0x47')](handleError(_0x45e9ca,null));};exports['show']=function(_0x17fd4a,_0x397f2f){var _0x5e3a70={'raw':![],'where':{'id':_0x17fd4a[_0x6469('0x48')]['id']}},_0x13e0c1={};_0x13e0c1[_0x6469('0x33')]=_[_0x6469('0x35')](db['SalesforceAccount'][_0x6469('0x30')]);_0x13e0c1[_0x6469('0x34')]=_[_0x6469('0x35')](_0x17fd4a[_0x6469('0x34')]);_0x13e0c1[_0x6469('0x3e')]=_['intersection'](_0x13e0c1['model'],_0x13e0c1[_0x6469('0x34')]);_0x5e3a70[_0x6469('0x38')]=_[_0x6469('0x36')](_0x13e0c1['model'],qs['fields'](_0x17fd4a[_0x6469('0x34')]['fields']));_0x5e3a70['attributes']=_0x5e3a70[_0x6469('0x38')][_0x6469('0x49')]?_0x5e3a70[_0x6469('0x38')]:_0x13e0c1[_0x6469('0x33')];if(_0x17fd4a[_0x6469('0x34')][_0x6469('0x44')]){_0x5e3a70[_0x6469('0x45')]=[{'all':!![]}];}_0x5e3a70=_[_0x6469('0x40')]({},_0x5e3a70,_0x17fd4a[_0x6469('0x43')]);return db[_0x6469('0x2f')][_0x6469('0x4a')](_0x5e3a70)[_0x6469('0x28')](handleEntityNotFound(_0x397f2f,null))[_0x6469('0x28')](respondWithResult(_0x397f2f,null))[_0x6469('0x47')](handleError(_0x397f2f,null));};exports[_0x6469('0x4b')]=function(_0x5dc705,_0x47c5fd){return db[_0x6469('0x2f')][_0x6469('0x4b')](_0x5dc705[_0x6469('0x4c')],{})[_0x6469('0x28')](respondWithResult(_0x47c5fd,0xc9))['catch'](handleError(_0x47c5fd,null));};exports[_0x6469('0x4d')]=function(_0x29e8f9,_0x15b3ad){if(_0x29e8f9[_0x6469('0x4c')]['id']){delete _0x29e8f9['body']['id'];}return db[_0x6469('0x2f')][_0x6469('0x4a')]({'where':{'id':_0x29e8f9[_0x6469('0x48')]['id']}})[_0x6469('0x28')](handleEntityNotFound(_0x15b3ad,null))[_0x6469('0x28')](saveUpdates(_0x29e8f9[_0x6469('0x4c')],null))[_0x6469('0x28')](respondWithResult(_0x15b3ad,null))['catch'](handleError(_0x15b3ad,null));};exports[_0x6469('0x27')]=function(_0x16e929,_0xb93e4){return db['SalesforceAccount'][_0x6469('0x4a')]({'where':{'id':_0x16e929[_0x6469('0x48')]['id']}})[_0x6469('0x28')](handleEntityNotFound(_0xb93e4,null))['then'](removeEntity(_0xb93e4,null))['catch'](handleError(_0xb93e4,null));};exports[_0x6469('0x4e')]=function(_0x308d81,_0x5e9ab4,_0x1094f0){var _0x345210={};var _0x15bc46={};var _0x999171;var _0x513420;return db[_0x6469('0x2f')][_0x6469('0x4f')]({'where':{'id':_0x308d81[_0x6469('0x48')]['id']}})['then'](handleEntityNotFound(_0x5e9ab4,null))[_0x6469('0x28')](function(_0x5d8152){if(_0x5d8152){_0x999171=_0x5d8152;_0x15bc46['model']=_['keys'](db['SalesforceConfiguration'][_0x6469('0x30')]);_0x15bc46[_0x6469('0x34')]=_[_0x6469('0x35')](_0x308d81['query']);_0x15bc46[_0x6469('0x3e')]=_[_0x6469('0x36')](_0x15bc46[_0x6469('0x33')],_0x15bc46[_0x6469('0x34')]);_0x345210[_0x6469('0x38')]=_[_0x6469('0x36')](_0x15bc46[_0x6469('0x33')],qs[_0x6469('0x37')](_0x308d81[_0x6469('0x34')]['fields']));_0x345210[_0x6469('0x38')]=_0x345210[_0x6469('0x38')][_0x6469('0x49')]?_0x345210[_0x6469('0x38')]:_0x15bc46[_0x6469('0x33')];_0x345210[_0x6469('0x3b')]=qs[_0x6469('0x3c')](_0x308d81[_0x6469('0x34')][_0x6469('0x3c')]);_0x345210[_0x6469('0x3d')]=qs['filters'](_[_0x6469('0x3f')](_0x308d81[_0x6469('0x34')],_0x15bc46[_0x6469('0x3e')]));if(_0x308d81[_0x6469('0x34')]['filter']){_0x345210[_0x6469('0x3d')]=_[_0x6469('0x40')](_0x345210['where'],{'$or':_[_0x6469('0x2e')](_0x345210['attributes'],function(_0x35e196){var _0x2d385f={};_0x2d385f[_0x35e196]={'$like':'%'+_0x308d81[_0x6469('0x34')]['filter']+'%'};return _0x2d385f;})});}_0x345210=_[_0x6469('0x40')]({},_0x345210,_0x308d81[_0x6469('0x43')]);return _0x999171[_0x6469('0x4e')](_0x345210);}})[_0x6469('0x28')](function(_0x1276a9){if(_0x1276a9){_0x513420=_0x1276a9[_0x6469('0x49')];if(!_0x308d81[_0x6469('0x34')][_0x6469('0x39')](_0x6469('0x3a'))){_0x345210[_0x6469('0x20')]=qs[_0x6469('0x20')](_0x308d81[_0x6469('0x34')][_0x6469('0x20')]);_0x345210[_0x6469('0x22')]=qs[_0x6469('0x22')](_0x308d81[_0x6469('0x34')]['offset']);}return _0x999171[_0x6469('0x4e')](_0x345210);}})[_0x6469('0x28')](function(_0x16519d){if(_0x16519d){return _0x16519d?{'count':_0x513420,'rows':_0x16519d}:null;}})[_0x6469('0x28')](respondWithResult(_0x5e9ab4,null))['catch'](handleError(_0x5e9ab4,null));};exports['addConfiguration']=function(_0x376352,_0x56b010,_0x23ba5e){if(_0x376352[_0x6469('0x4c')]['id']){delete _0x376352[_0x6469('0x4c')]['id'];}return db[_0x6469('0x2f')]['findOne']({'where':{'id':_0x376352[_0x6469('0x48')]['id']}})[_0x6469('0x28')](handleEntityNotFound(_0x56b010,null))[_0x6469('0x28')](function(_0x38a231){if(_0x38a231){_0x376352['body']['AccountId']=_0x38a231['id'];_0x376352['body'][_0x6469('0x50')]=integrations[_0x6469('0x51')](_0x376352['body'][_0x6469('0x52')],_0x376352['body'][_0x6469('0x41')]);_0x376352[_0x6469('0x4c')][_0x6469('0x53')]=integrations[_0x6469('0x54')](_0x376352[_0x6469('0x4c')]['channel'],_0x376352[_0x6469('0x4c')][_0x6469('0x41')]);return db[_0x6469('0x55')]['create'](_0x376352[_0x6469('0x4c')],{'include':[{'model':db[_0x6469('0x56')],'as':_0x6469('0x50')},{'model':db[_0x6469('0x56')],'as':_0x6469('0x53')}]});}return null;})[_0x6469('0x28')](respondWithResult(_0x56b010,null))[_0x6469('0x47')](handleError(_0x56b010,null));};exports[_0x6469('0x57')]=function(_0xa2daee,_0x26f13b,_0x4c551d){var _0x5aed01;var _0x5003d9='';var _0x162b08=_0x6469('0x58');return db[_0x6469('0x2f')][_0x6469('0x4f')]({'where':{'id':_0xa2daee['params']['id']},'attributes':['id',_0x6469('0x59'),_0x6469('0x5a'),_0x6469('0x5b'),_0x6469('0x5c'),_0x6469('0x5d'),_0x6469('0x5e')]})[_0x6469('0x28')](handleEntityNotFound(_0x26f13b,null))['then'](function(_0x429b1e){if(_0x429b1e){_0x5003d9=_0x429b1e[_0x6469('0x59')];var _0x9c8b3c=_0x5003d9['slice'](-0x1);if(_0x9c8b3c==='/'){_0x5003d9=_0x5003d9[_0x6469('0x5f')](0x0,_0x5003d9[_0x6469('0x60')](_0x9c8b3c));}_0x5aed01=new jsforce[(_0x6469('0x61'))]({'oauth2':{'loginUrl':_0x5003d9,'clientId':_0x429b1e[_0x6469('0x5a')],'clientSecret':_0x429b1e['clientSecret']}});return _0x5aed01[_0x6469('0x62')](_0x429b1e[_0x6469('0x5c')],_0x429b1e[_0x6469('0x5d')][_0x6469('0x63')](_0x429b1e[_0x6469('0x5e')]));}})[_0x6469('0x28')](function(_0x36a1c1){if(_0x36a1c1){if(!_[_0x6469('0x64')](_0xa2daee['query'][_0x6469('0x65')])){_0x162b08=_0xa2daee[_0x6469('0x34')]['ticketType'];}return _0x5aed01[_0x6469('0x66')](_0x162b08)[_0x6469('0x67')]();}})[_0x6469('0x28')](function(_0x2996c1){var _0x16f4a8=[_0x6469('0x68'),'ActivityDate',_0x6469('0x69'),_0x6469('0x6a'),'Subject',_0x6469('0x6b')];var _0x59bfa5=['string',_0x6469('0x6c'),'picklist',_0x6469('0x6d'),_0x6469('0x6e'),_0x6469('0x6f'),_0x6469('0x70')];if(_0x2996c1){_['remove'](_0x2996c1[_0x6469('0x37')],function(_0x5b7b39){return _0x16f4a8[_0x6469('0x71')](_0x5b7b39[_0x6469('0x2b')])||!_0x59bfa5['includes'](_0x5b7b39[_0x6469('0x41')]);});return{'count':_0x2996c1[_0x6469('0x37')][_0x6469('0x49')],'rows':_['map'](_0x2996c1[_0x6469('0x37')],function(_0x50bbac){return{'id':_0x50bbac[_0x6469('0x2b')],'name':_0x50bbac[_0x6469('0x72')],'custom':_0x50bbac[_0x6469('0x73')],'options':_0x50bbac[_0x6469('0x74')][_0x6469('0x49')]>0x0?_['map'](_0x50bbac[_0x6469('0x74')],function(_0x31da21){return{'name':_0x31da21[_0x6469('0x72')],'value':_0x31da21[_0x6469('0x75')]};}):_0x50bbac[_0x6469('0x41')]=='boolean'?[{'name':_0x6469('0x76'),'value':_0x6469('0x77')},{'name':_0x6469('0x78'),'value':_0x6469('0x79')}]:[]};})};}})[_0x6469('0x28')](respondWithResult(_0x26f13b,null))[_0x6469('0x47')](function(_0xd86bbe){var _0x786bef=_0xa2daee['query'][_0x6469('0x7a')]?0x1f4:_0xd86bbe['statusCode']||0x1f4;logger[_0x6469('0x29')](_0x6469('0x7b'),_0x6469('0x57'),_0x786bef,JSON[_0x6469('0x7c')](_0xd86bbe));delete _0xd86bbe[_0x6469('0x2b')];if(_0x786bef===0x191){_0x786bef=0x190;}_0x26f13b[_0x6469('0x23')](_0x786bef)[_0x6469('0x2c')](_0xa2daee[_0x6469('0x34')][_0x6469('0x7a')]?{'message':_0x6469('0x7d'),'statusCode':_0xd86bbe[_0x6469('0x7e')]}:_0xd86bbe);});};
\ No newline at end of file
index b8d3e93..f77e058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f02=['request-promise','path','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','lodash','util','../../config/logger','api','moment'];(function(_0x50e3b3,_0x5a3090){var _0x2ff644=function(_0x3051ab){while(--_0x3051ab){_0x50e3b3['push'](_0x50e3b3['shift']());}};_0x2ff644(++_0x5a3090);}(_0x8f02,0x73));var _0x28f0=function(_0x1a60ff,_0x2ae572){_0x1a60ff=_0x1a60ff-0x0;var _0x300522=_0x8f02[_0x1a60ff];return _0x300522;};'use strict';var _=require(_0x28f0('0x0'));var util=require(_0x28f0('0x1'));var logger=require(_0x28f0('0x2'))(_0x28f0('0x3'));var moment=require(_0x28f0('0x4'));var BPromise=require('bluebird');var rp=require(_0x28f0('0x5'));var fs=require('fs');var path=require(_0x28f0('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x28f0('0x7'));var integrations=require(_0x28f0('0x8'));module[_0x28f0('0x9')]=function(_0x4250b4,_0x551918){return _0x4250b4[_0x28f0('0xa')](_0x28f0('0xb'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe829=['./intSalesforceAccount.attributes','exports','define','SalesforceAccount','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xe829,0x1d8));var _0x9e82=function(_0x55e605,_0x162ddb){_0x55e605=_0x55e605-0x0;var _0x20c0cc=_0xe829[_0x55e605];return _0x20c0cc;};'use strict';var _=require(_0x9e82('0x0'));var util=require(_0x9e82('0x1'));var logger=require(_0x9e82('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9e82('0x3'));var rp=require(_0x9e82('0x4'));var fs=require('fs');var path=require(_0x9e82('0x5'));var rimraf=require(_0x9e82('0x6'));var config=require(_0x9e82('0x7'));var attributes=require(_0x9e82('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x9e82('0x9')]=function(_0x2338e7,_0x1a63b3){return _0x2338e7[_0x9e82('0xa')](_0x9e82('0xb'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3016a71..4617e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8328=['jayson/promise','client','request','then','info','request\x20sent','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','GetSalesforceAccount','SalesforceAccount','options','where','attributes','include','map','model','debug','catch','ShowSalesforceAccount','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x400318,_0xa7c1b3){var _0x56030a=function(_0x41ecd3){while(--_0x41ecd3){_0x400318['push'](_0x400318['shift']());}};_0x56030a(++_0xa7c1b3);}(_0x8328,0xb3));var _0x8832=function(_0x56d274,_0x4461cb){_0x56d274=_0x56d274-0x0;var _0x17b15e=_0x8328[_0x56d274];return _0x17b15e;};'use strict';var _=require(_0x8832('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8832('0x1'));var fs=require('fs');var Redis=require(_0x8832('0x2'));var db=require(_0x8832('0x3'))['db'];var utils=require(_0x8832('0x4'));var logger=require(_0x8832('0x5'))(_0x8832('0x6'));var config=require('../../config/environment');var jayson=require(_0x8832('0x7'));var client=jayson[_0x8832('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34e04d,_0x1823ef,_0x506f3c){return new BPromise(function(_0x1f22b8,_0x425057){return client[_0x8832('0x9')](_0x34e04d,_0x506f3c)[_0x8832('0xa')](function(_0x4be73f){logger[_0x8832('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x1823ef,_0x8832('0xc'));logger['debug'](_0x8832('0xd'),_0x1823ef,_0x8832('0xc'),JSON[_0x8832('0xe')](_0x4be73f));if(_0x4be73f['error']){if(_0x4be73f[_0x8832('0xf')][_0x8832('0x10')]===0x1f4){logger[_0x8832('0xf')](_0x8832('0x11'),_0x1823ef,_0x4be73f['error']['message']);return _0x425057(_0x4be73f[_0x8832('0xf')][_0x8832('0x12')]);}logger[_0x8832('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x1823ef,_0x4be73f['error'][_0x8832('0x12')]);return _0x1f22b8(_0x4be73f[_0x8832('0xf')]['message']);}else{logger['info'](_0x8832('0x11'),_0x1823ef,_0x8832('0xc'));_0x1f22b8(_0x4be73f['result'][_0x8832('0x12')]);}})['catch'](function(_0x5efb4d){logger['error'](_0x8832('0x11'),_0x1823ef,_0x5efb4d);_0x425057(_0x5efb4d);});});}exports[_0x8832('0x13')]=function(_0x47a7c0){var _0x38b96d=this;return new Promise(function(_0x23100a,_0x485adb){return db[_0x8832('0x14')]['findAll']({'raw':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0['options'][_0x8832('0x16')]||null:null,'attributes':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')][_0x8832('0x17')]||null:null,'limit':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')]['limit']||null:null,'include':_0x47a7c0[_0x8832('0x15')]?_0x47a7c0[_0x8832('0x15')][_0x8832('0x18')]?_[_0x8832('0x19')](_0x47a7c0['options'][_0x8832('0x18')],function(_0x41d280){return{'model':db[_0x41d280[_0x8832('0x1a')]],'as':_0x41d280['as'],'attributes':_0x41d280['attributes'],'include':_0x41d280[_0x8832('0x18')]?_[_0x8832('0x19')](_0x41d280['include'],function(_0x169f96){return{'model':db[_0x169f96['model']],'as':_0x169f96['as'],'attributes':_0x169f96[_0x8832('0x17')],'include':_0x169f96['include']?_['map'](_0x169f96[_0x8832('0x18')],function(_0x2a0c52){return{'model':db[_0x2a0c52['model']],'as':_0x2a0c52['as'],'attributes':_0x2a0c52[_0x8832('0x17')]};}):[]};}):[]};}):[]:[]})[_0x8832('0xa')](function(_0x18d318){logger['info'](_0x8832('0x13'),_0x47a7c0);logger[_0x8832('0x1b')]('GetSalesforceAccount',_0x47a7c0,JSON[_0x8832('0xe')](_0x18d318));_0x23100a(_0x18d318);})[_0x8832('0x1c')](function(_0x127a73){logger['error'](_0x8832('0x13'),_0x127a73['message'],_0x47a7c0);_0x485adb(_0x38b96d[_0x8832('0xf')](0x1f4,_0x127a73['message']));});});};exports[_0x8832('0x1d')]=function(_0x2e18d7){var _0x2bef07=this;return new Promise(function(_0x321fb1,_0x34d3db){return db['SalesforceAccount'][_0x8832('0x1e')]({'raw':_0x2e18d7['options']?_0x2e18d7['options']['raw']===undefined?!![]:![]:!![],'where':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x16')]||null:null,'attributes':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x17')]||null:null,'include':_0x2e18d7[_0x8832('0x15')]?_0x2e18d7[_0x8832('0x15')][_0x8832('0x18')]?_[_0x8832('0x19')](_0x2e18d7[_0x8832('0x15')][_0x8832('0x18')],function(_0x1033dd){return{'model':db[_0x1033dd['model']],'as':_0x1033dd['as'],'attributes':_0x1033dd[_0x8832('0x17')],'include':_0x1033dd[_0x8832('0x18')]?_[_0x8832('0x19')](_0x1033dd[_0x8832('0x18')],function(_0x4c1352){return{'model':db[_0x4c1352[_0x8832('0x1a')]],'as':_0x4c1352['as'],'attributes':_0x4c1352['attributes'],'include':_0x4c1352['include']?_['map'](_0x4c1352[_0x8832('0x18')],function(_0x3cddea){return{'model':db[_0x3cddea[_0x8832('0x1a')]],'as':_0x3cddea['as'],'attributes':_0x3cddea['attributes']};}):[]};}):[]};}):[]:[]})[_0x8832('0xa')](function(_0x17056b){logger[_0x8832('0xb')](_0x8832('0x1d'),_0x2e18d7);logger['debug']('ShowSalesforceAccount',_0x2e18d7,JSON[_0x8832('0xe')](_0x17056b));_0x321fb1(_0x17056b);})['catch'](function(_0x15a9a4){logger[_0x8832('0xf')](_0x8832('0x1d'),_0x15a9a4['message'],_0x2e18d7);_0x34d3db(_0x2bef07[_0x8832('0xf')](0x1f4,_0x15a9a4['message']));});});};
\ No newline at end of file
+var _0x1e82=['include','model','then','debug','ShowSalesforceAccount','find','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','where','attributes','map'];(function(_0x5228e9,_0x1d5c4a){var _0x56529b=function(_0x48fa64){while(--_0x48fa64){_0x5228e9['push'](_0x5228e9['shift']());}};_0x56529b(++_0x1d5c4a);}(_0x1e82,0x8b));var _0x21e8=function(_0x284b44,_0x26278b){_0x284b44=_0x284b44-0x0;var _0x267766=_0x1e82[_0x284b44];return _0x267766;};'use strict';var _=require(_0x21e8('0x0'));var util=require(_0x21e8('0x1'));var moment=require(_0x21e8('0x2'));var BPromise=require(_0x21e8('0x3'));var rs=require(_0x21e8('0x4'));var fs=require('fs');var Redis=require(_0x21e8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x21e8('0x6'));var logger=require(_0x21e8('0x7'))('rpc');var config=require(_0x21e8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x21e8('0x9')][_0x21e8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38c3d0,_0x22cbd4,_0x47b3b3){return new BPromise(function(_0x45e5c1,_0x3754c9){return client[_0x21e8('0xb')](_0x38c3d0,_0x47b3b3)['then'](function(_0x31b6c2){logger[_0x21e8('0xc')](_0x21e8('0xd'),_0x22cbd4,_0x21e8('0xe'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x22cbd4,_0x21e8('0xe'),JSON['stringify'](_0x31b6c2));if(_0x31b6c2[_0x21e8('0xf')]){if(_0x31b6c2[_0x21e8('0xf')]['code']===0x1f4){logger[_0x21e8('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x22cbd4,_0x31b6c2[_0x21e8('0xf')][_0x21e8('0x10')]);return _0x3754c9(_0x31b6c2[_0x21e8('0xf')]['message']);}logger[_0x21e8('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x22cbd4,_0x31b6c2[_0x21e8('0xf')][_0x21e8('0x10')]);return _0x45e5c1(_0x31b6c2[_0x21e8('0xf')]['message']);}else{logger['info'](_0x21e8('0xd'),_0x22cbd4,_0x21e8('0xe'));_0x45e5c1(_0x31b6c2[_0x21e8('0x11')][_0x21e8('0x10')]);}})[_0x21e8('0x12')](function(_0x13da4f){logger[_0x21e8('0xf')](_0x21e8('0xd'),_0x22cbd4,_0x13da4f);_0x3754c9(_0x13da4f);});});}exports[_0x21e8('0x13')]=function(_0x552c6f){var _0x1c70cc=this;return new Promise(function(_0x4f76b8,_0x504522){return db[_0x21e8('0x14')][_0x21e8('0x15')]({'raw':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')][_0x21e8('0x17')]||null:null,'attributes':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')][_0x21e8('0x18')]||null:null,'limit':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['limit']||null:null,'include':_0x552c6f[_0x21e8('0x16')]?_0x552c6f[_0x21e8('0x16')]['include']?_[_0x21e8('0x19')](_0x552c6f[_0x21e8('0x16')][_0x21e8('0x1a')],function(_0x168f1){return{'model':db[_0x168f1[_0x21e8('0x1b')]],'as':_0x168f1['as'],'attributes':_0x168f1[_0x21e8('0x18')],'include':_0x168f1[_0x21e8('0x1a')]?_[_0x21e8('0x19')](_0x168f1['include'],function(_0x155d04){return{'model':db[_0x155d04['model']],'as':_0x155d04['as'],'attributes':_0x155d04[_0x21e8('0x18')],'include':_0x155d04[_0x21e8('0x1a')]?_[_0x21e8('0x19')](_0x155d04['include'],function(_0x1bdd15){return{'model':db[_0x1bdd15['model']],'as':_0x1bdd15['as'],'attributes':_0x1bdd15[_0x21e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x21e8('0x1c')](function(_0x6de0b2){logger['info'](_0x21e8('0x13'),_0x552c6f);logger[_0x21e8('0x1d')](_0x21e8('0x13'),_0x552c6f,JSON['stringify'](_0x6de0b2));_0x4f76b8(_0x6de0b2);})[_0x21e8('0x12')](function(_0x3a5ff1){logger[_0x21e8('0xf')](_0x21e8('0x13'),_0x3a5ff1[_0x21e8('0x10')],_0x552c6f);_0x504522(_0x1c70cc[_0x21e8('0xf')](0x1f4,_0x3a5ff1[_0x21e8('0x10')]));});});};exports[_0x21e8('0x1e')]=function(_0x20d095){var _0xd4f119=this;return new Promise(function(_0x4711a4,_0x37d56c){return db['SalesforceAccount'][_0x21e8('0x1f')]({'raw':_0x20d095[_0x21e8('0x16')]?_0x20d095['options']['raw']===undefined?!![]:![]:!![],'where':_0x20d095['options']?_0x20d095[_0x21e8('0x16')]['where']||null:null,'attributes':_0x20d095[_0x21e8('0x16')]?_0x20d095[_0x21e8('0x16')][_0x21e8('0x18')]||null:null,'include':_0x20d095[_0x21e8('0x16')]?_0x20d095['options']['include']?_[_0x21e8('0x19')](_0x20d095['options'][_0x21e8('0x1a')],function(_0x1cf161){return{'model':db[_0x1cf161[_0x21e8('0x1b')]],'as':_0x1cf161['as'],'attributes':_0x1cf161[_0x21e8('0x18')],'include':_0x1cf161['include']?_[_0x21e8('0x19')](_0x1cf161[_0x21e8('0x1a')],function(_0x27c8bd){return{'model':db[_0x27c8bd[_0x21e8('0x1b')]],'as':_0x27c8bd['as'],'attributes':_0x27c8bd[_0x21e8('0x18')],'include':_0x27c8bd['include']?_[_0x21e8('0x19')](_0x27c8bd[_0x21e8('0x1a')],function(_0x28ab9d){return{'model':db[_0x28ab9d[_0x21e8('0x1b')]],'as':_0x28ab9d['as'],'attributes':_0x28ab9d[_0x21e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x21e8('0x1c')](function(_0x1abde0){logger[_0x21e8('0xc')](_0x21e8('0x1e'),_0x20d095);logger[_0x21e8('0x1d')](_0x21e8('0x1e'),_0x20d095,JSON[_0x21e8('0x20')](_0x1abde0));_0x4711a4(_0x1abde0);})[_0x21e8('0x12')](function(_0x3c83bb){logger[_0x21e8('0xf')]('ShowSalesforceAccount',_0x3c83bb[_0x21e8('0x10')],_0x20d095);_0x37d56c(_0xd4f119[_0x21e8('0xf')](0x1f4,_0x3c83bb[_0x21e8('0x10')]));});});};
\ No newline at end of file
index f9d9b8e..e774a87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x233268,_0x52ec20){var _0x99ff92=function(_0x4ba9c4){while(--_0x4ba9c4){_0x233268['push'](_0x233268['shift']());}};_0x99ff92(++_0x52ec20);}(_0xadb5,0xad));var _0x5adb=function(_0x421678,_0xcc6d1e){_0x421678=_0x421678-0x0;var _0xd66a2e=_0xadb5[_0x421678];return _0xd66a2e;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0xcabd96,_0x121eae){var _0x2d038c=function(_0x363618){while(--_0x363618){_0xcabd96['push'](_0xcabd96['shift']());}};_0x2d038c(++_0x121eae);}(_0x7a54,0x106));var _0x47a5=function(_0x1d58b4,_0x4f19df){_0x1d58b4=_0x1d58b4-0x0;var _0xe4a9c9=_0x7a54[_0x1d58b4];return _0xe4a9c9;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index eae86b3..cedb8c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc045=['Case','contact','account','contact_lead','lead','exports','STRING','ENUM','Task'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xc045,0x19a));var _0x5c04=function(_0x3cf5a3,_0x5a4492){_0x3cf5a3=_0x3cf5a3-0x0;var _0x39ba2d=_0xc045[_0x3cf5a3];return _0x39ba2d;};'use strict';var Sequelize=require('sequelize');module[_0x5c04('0x0')]={'name':{'type':Sequelize[_0x5c04('0x1')]},'description':{'type':Sequelize[_0x5c04('0x1')]},'ticketType':{'type':Sequelize[_0x5c04('0x2')](_0x5c04('0x3'),_0x5c04('0x4')),'defaultValue':_0x5c04('0x3')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x5c04('0x5'),'lead','account_contact_lead',_0x5c04('0x6')),'defaultValue':_0x5c04('0x7')},'moduleCreate':{'type':Sequelize['ENUM']('nothing','contact',_0x5c04('0x8'),_0x5c04('0x6')),'defaultValue':_0x5c04('0x8')},'leadId':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x5c04('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x5c04('0x1')]}};
\ No newline at end of file
+var _0x5d3a=['exports','STRING','Case','contact_lead','contact','lead','ENUM','account','sequelize'];(function(_0x38d499,_0x218aee){var _0x190a46=function(_0x1b3584){while(--_0x1b3584){_0x38d499['push'](_0x38d499['shift']());}};_0x190a46(++_0x218aee);}(_0x5d3a,0x13a));var _0xa5d3=function(_0x40bdbc,_0x3fabcd){_0x40bdbc=_0x40bdbc-0x0;var _0xc603a8=_0x5d3a[_0x40bdbc];return _0xc603a8;};'use strict';var Sequelize=require(_0xa5d3('0x0'));module[_0xa5d3('0x1')]={'name':{'type':Sequelize[_0xa5d3('0x2')]},'description':{'type':Sequelize[_0xa5d3('0x2')]},'ticketType':{'type':Sequelize['ENUM']('Task',_0xa5d3('0x3')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM'](_0xa5d3('0x4'),_0xa5d3('0x5'),_0xa5d3('0x6'),'account_contact_lead','account'),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xa5d3('0x7')]('nothing',_0xa5d3('0x5'),_0xa5d3('0x6'),_0xa5d3('0x8')),'defaultValue':_0xa5d3('0x6')},'leadId':{'type':Sequelize[_0xa5d3('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xa5d3('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xa5d3('0x2')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6075563..d3b773e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a8=['limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','getFields','findOne','SalesforceField','pick','getSubjects','hasOwnProperty','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined'];(function(_0xf09991,_0x135fd7){var _0x2d31b6=function(_0x57d449){while(--_0x57d449){_0xf09991['push'](_0xf09991['shift']());}};_0x2d31b6(++_0x135fd7);}(_0x00a8,0xda));var _0x800a=function(_0x5604ca,_0x1e9e1f){_0x5604ca=_0x5604ca-0x0;var _0x4aceb4=_0x00a8[_0x5604ca];return _0x4aceb4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x800a('0x0'));var zipdir=require(_0x800a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x800a('0x2'));var moment=require(_0x800a('0x3'));var BPromise=require(_0x800a('0x4'));var Mustache=require(_0x800a('0x5'));var util=require(_0x800a('0x6'));var path=require(_0x800a('0x7'));var sox=require(_0x800a('0x8'));var csv=require(_0x800a('0x9'));var ejs=require(_0x800a('0xa'));var fs=require('fs');var fs_extra=require(_0x800a('0xb'));var _=require('lodash');var squel=require(_0x800a('0xc'));var crypto=require(_0x800a('0xd'));var jsforce=require(_0x800a('0xe'));var deskjs=require(_0x800a('0xf'));var toCsv=require(_0x800a('0x9'));var querystring=require(_0x800a('0x10'));var Papa=require(_0x800a('0x11'));var Redis=require(_0x800a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x800a('0x13'));var as=require(_0x800a('0x14'));var hardwareService=require(_0x800a('0x15'));var logger=require(_0x800a('0x16'))('api');var utils=require(_0x800a('0x17'));var config=require(_0x800a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x800a('0x19'))['db'];function respondWithStatusCode(_0x12dfa8,_0x1ea500){_0x1ea500=_0x1ea500||0xcc;return function(_0xf520c8){if(_0xf520c8){return _0x12dfa8[_0x800a('0x1a')](_0x1ea500);}return _0x12dfa8['status'](_0x1ea500)[_0x800a('0x1b')]();};}function respondWithResult(_0x4d071e,_0x5aa054){_0x5aa054=_0x5aa054||0xc8;return function(_0x9c39c9){if(_0x9c39c9){return _0x4d071e[_0x800a('0x1c')](_0x5aa054)[_0x800a('0x1d')](_0x9c39c9);}};}function respondWithFilteredResult(_0x3369f0,_0x474fa6){return function(_0x178045){if(_0x178045){var _0x47bc5d=typeof _0x474fa6['offset']===_0x800a('0x1e')&&typeof _0x474fa6[_0x800a('0x1f')]===_0x800a('0x1e');var _0x502c66=_0x178045[_0x800a('0x20')];var _0x4e3020=_0x47bc5d?0x0:_0x474fa6[_0x800a('0x21')];var _0x549793=_0x47bc5d?_0x178045[_0x800a('0x20')]:_0x474fa6[_0x800a('0x21')]+_0x474fa6[_0x800a('0x1f')];var _0x5984ef;if(_0x549793>=_0x502c66){_0x549793=_0x502c66;_0x5984ef=0xc8;}else{_0x5984ef=0xce;}_0x3369f0[_0x800a('0x1c')](_0x5984ef);return _0x3369f0[_0x800a('0x22')](_0x800a('0x23'),_0x4e3020+'-'+_0x549793+'/'+_0x502c66)[_0x800a('0x1d')](_0x178045);}return null;};}function patchUpdates(_0xb03acf){return function(_0x129302){try{jsonpatch[_0x800a('0x24')](_0x129302,_0xb03acf,!![]);}catch(_0x19953b){return BPromise[_0x800a('0x25')](_0x19953b);}return _0x129302[_0x800a('0x26')]();};}function saveUpdates(_0x3eddc1,_0x541282){return function(_0x1ffd0c){if(_0x1ffd0c){return _0x1ffd0c[_0x800a('0x27')](_0x3eddc1)['then'](function(_0x4c3ac8){return _0x4c3ac8;});}return null;};}function removeEntity(_0x55d706,_0x2c00be){return function(_0x1ada86){if(_0x1ada86){return _0x1ada86[_0x800a('0x28')]()[_0x800a('0x29')](function(){_0x55d706[_0x800a('0x1c')](0xcc)[_0x800a('0x1b')]();});}};}function handleEntityNotFound(_0x50b97d,_0x575c78){return function(_0x3a7e77){if(!_0x3a7e77){_0x50b97d[_0x800a('0x1a')](0x194);}return _0x3a7e77;};}function handleError(_0x49b8fb,_0x47f5d2){_0x47f5d2=_0x47f5d2||0x1f4;return function(_0x13d065){logger[_0x800a('0x2a')](_0x13d065[_0x800a('0x2b')]);if(_0x13d065[_0x800a('0x2c')]){delete _0x13d065[_0x800a('0x2c')];}_0x49b8fb['status'](_0x47f5d2)[_0x800a('0x2d')](_0x13d065);};}exports[_0x800a('0x2e')]=function(_0xd42ce,_0x41da53){var _0xd3da52={},_0x1e8633={},_0x2cba1a={'count':0x0,'rows':[]};var _0x55bdea=_[_0x800a('0x2f')](db[_0x800a('0x30')][_0x800a('0x31')],function(_0x56dbb2){return{'name':_0x56dbb2['fieldName'],'type':_0x56dbb2[_0x800a('0x32')][_0x800a('0x33')]};});_0x1e8633[_0x800a('0x34')]=_[_0x800a('0x2f')](_0x55bdea,_0x800a('0x2c'));_0x1e8633[_0x800a('0x35')]=_[_0x800a('0x36')](_0xd42ce[_0x800a('0x35')]);_0x1e8633[_0x800a('0x37')]=_[_0x800a('0x38')](_0x1e8633['model'],_0x1e8633[_0x800a('0x35')]);_0xd3da52[_0x800a('0x39')]=_[_0x800a('0x38')](_0x1e8633['model'],qs[_0x800a('0x3a')](_0xd42ce[_0x800a('0x35')][_0x800a('0x3a')]));_0xd3da52[_0x800a('0x39')]=_0xd3da52['attributes'][_0x800a('0x3b')]?_0xd3da52['attributes']:_0x1e8633[_0x800a('0x34')];if(!_0xd42ce[_0x800a('0x35')]['hasOwnProperty'](_0x800a('0x3c'))){_0xd3da52['limit']=qs[_0x800a('0x1f')](_0xd42ce[_0x800a('0x35')][_0x800a('0x1f')]);_0xd3da52['offset']=qs[_0x800a('0x21')](_0xd42ce[_0x800a('0x35')][_0x800a('0x21')]);}_0xd3da52[_0x800a('0x3d')]=qs[_0x800a('0x3e')](_0xd42ce['query']['sort']);_0xd3da52['where']=qs[_0x800a('0x37')](_['pick'](_0xd42ce[_0x800a('0x35')],_0x1e8633['filters']),_0x55bdea);if(_0xd42ce['query'][_0x800a('0x3f')]){_0xd3da52[_0x800a('0x40')]=_['merge'](_0xd3da52[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0x55bdea,function(_0x95ce2b){if(_0x95ce2b[_0x800a('0x32')]!==_0x800a('0x41')){var _0x5eee9d={};_0x5eee9d[_0x95ce2b[_0x800a('0x2c')]]={'$like':'%'+_0xd42ce[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x5eee9d;}})});}_0xd3da52=_[_0x800a('0x42')]({},_0xd3da52,_0xd42ce[_0x800a('0x43')]);var _0x41ae51={'where':_0xd3da52['where']};return db[_0x800a('0x30')]['count'](_0x41ae51)['then'](function(_0x11cd65){_0x2cba1a[_0x800a('0x20')]=_0x11cd65;if(_0xd42ce[_0x800a('0x35')][_0x800a('0x44')]){_0xd3da52[_0x800a('0x45')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x800a('0x46')](_0xd3da52);})[_0x800a('0x29')](function(_0x3cbf6f){_0x2cba1a['rows']=_0x3cbf6f;return _0x2cba1a;})[_0x800a('0x29')](respondWithFilteredResult(_0x41da53,_0xd3da52))[_0x800a('0x47')](handleError(_0x41da53,null));};exports['show']=function(_0xe6ea7,_0x553c07){var _0x3fa1b2={'raw':![],'where':{'id':_0xe6ea7[_0x800a('0x48')]['id']}},_0x2f47b7={};_0x2f47b7[_0x800a('0x34')]=_['keys'](db[_0x800a('0x30')][_0x800a('0x31')]);_0x2f47b7[_0x800a('0x35')]=_[_0x800a('0x36')](_0xe6ea7[_0x800a('0x35')]);_0x2f47b7['filters']=_[_0x800a('0x38')](_0x2f47b7[_0x800a('0x34')],_0x2f47b7[_0x800a('0x35')]);_0x3fa1b2['attributes']=_[_0x800a('0x38')](_0x2f47b7[_0x800a('0x34')],qs['fields'](_0xe6ea7[_0x800a('0x35')]['fields']));_0x3fa1b2[_0x800a('0x39')]=_0x3fa1b2[_0x800a('0x39')][_0x800a('0x3b')]?_0x3fa1b2[_0x800a('0x39')]:_0x2f47b7['model'];if(_0xe6ea7[_0x800a('0x35')][_0x800a('0x44')]){_0x3fa1b2['include']=[{'all':!![]}];}_0x3fa1b2=_[_0x800a('0x42')]({},_0x3fa1b2,_0xe6ea7[_0x800a('0x43')]);return db[_0x800a('0x30')][_0x800a('0x49')](_0x3fa1b2)[_0x800a('0x29')](handleEntityNotFound(_0x553c07,null))[_0x800a('0x29')](respondWithResult(_0x553c07,null))[_0x800a('0x47')](handleError(_0x553c07,null));};exports[_0x800a('0x4a')]=function(_0x338368,_0x46f9c6){return db[_0x800a('0x30')][_0x800a('0x4a')](_0x338368['body'],{})[_0x800a('0x29')](respondWithResult(_0x46f9c6,0xc9))[_0x800a('0x47')](handleError(_0x46f9c6,null));};exports['update']=function(_0xcec797,_0x1ad6ca){if(_0xcec797[_0x800a('0x4b')]['id']){delete _0xcec797[_0x800a('0x4b')]['id'];}return db[_0x800a('0x30')][_0x800a('0x49')]({'where':{'id':_0xcec797[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x1ad6ca,null))[_0x800a('0x29')](saveUpdates(_0xcec797[_0x800a('0x4b')],null))[_0x800a('0x29')](respondWithResult(_0x1ad6ca,null))[_0x800a('0x47')](handleError(_0x1ad6ca,null));};exports[_0x800a('0x28')]=function(_0x225dba,_0x55cb2d){return db[_0x800a('0x30')]['find']({'where':{'id':_0x225dba['params']['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x55cb2d,null))[_0x800a('0x29')](removeEntity(_0x55cb2d,null))[_0x800a('0x47')](handleError(_0x55cb2d,null));};exports[_0x800a('0x4c')]=function(_0x4eb7c9,_0x348a7c,_0x3a1f54){var _0x203dda={};var _0x33ca19={};var _0x5c28dc;var _0x444eb8;return db[_0x800a('0x30')][_0x800a('0x4d')]({'where':{'id':_0x4eb7c9[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x348a7c,null))[_0x800a('0x29')](function(_0x269421){if(_0x269421){_0x5c28dc=_0x269421;_0x33ca19['model']=_[_0x800a('0x36')](db[_0x800a('0x4e')]['rawAttributes']);_0x33ca19['query']=_[_0x800a('0x36')](_0x4eb7c9[_0x800a('0x35')]);_0x33ca19[_0x800a('0x37')]=_['intersection'](_0x33ca19[_0x800a('0x34')],_0x33ca19[_0x800a('0x35')]);_0x203dda[_0x800a('0x39')]=_[_0x800a('0x38')](_0x33ca19[_0x800a('0x34')],qs['fields'](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3a')]));_0x203dda[_0x800a('0x39')]=_0x203dda[_0x800a('0x39')][_0x800a('0x3b')]?_0x203dda[_0x800a('0x39')]:_0x33ca19[_0x800a('0x34')];_0x203dda['order']=qs[_0x800a('0x3e')](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3e')]);_0x203dda[_0x800a('0x40')]=qs['filters'](_['pick'](_0x4eb7c9[_0x800a('0x35')],_0x33ca19[_0x800a('0x37')]));if(_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3f')]){_0x203dda[_0x800a('0x40')]=_['merge'](_0x203dda[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0x203dda[_0x800a('0x39')],function(_0x25dc08){var _0x43cc54={};_0x43cc54[_0x25dc08]={'$like':'%'+_0x4eb7c9[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x43cc54;})});}_0x203dda=_[_0x800a('0x42')]({},_0x203dda,_0x4eb7c9[_0x800a('0x43')]);return _0x5c28dc[_0x800a('0x4c')](_0x203dda);}})[_0x800a('0x29')](function(_0x35eff1){if(_0x35eff1){_0x444eb8=_0x35eff1[_0x800a('0x3b')];if(!_0x4eb7c9[_0x800a('0x35')]['hasOwnProperty'](_0x800a('0x3c'))){_0x203dda[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x4eb7c9[_0x800a('0x35')][_0x800a('0x1f')]);_0x203dda[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x4eb7c9[_0x800a('0x35')]['offset']);}return _0x5c28dc[_0x800a('0x4c')](_0x203dda);}})[_0x800a('0x29')](function(_0x5e0e02){if(_0x5e0e02){return _0x5e0e02?{'count':_0x444eb8,'rows':_0x5e0e02}:null;}})[_0x800a('0x29')](respondWithResult(_0x348a7c,null))[_0x800a('0x47')](handleError(_0x348a7c,null));};exports['getSubjects']=function(_0x5cec10,_0x4c47ac,_0x3cc9d7){var _0xefcd8e={};var _0xb51365={};var _0xfb290;var _0x15afe2;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x5cec10[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x4c47ac,null))[_0x800a('0x29')](function(_0xd8c089){if(_0xd8c089){_0xfb290=_0xd8c089;_0xb51365[_0x800a('0x34')]=_['keys'](db[_0x800a('0x4e')][_0x800a('0x31')]);_0xb51365['query']=_[_0x800a('0x36')](_0x5cec10[_0x800a('0x35')]);_0xb51365[_0x800a('0x37')]=_[_0x800a('0x38')](_0xb51365[_0x800a('0x34')],_0xb51365[_0x800a('0x35')]);_0xefcd8e[_0x800a('0x39')]=_[_0x800a('0x38')](_0xb51365['model'],qs['fields'](_0x5cec10[_0x800a('0x35')][_0x800a('0x3a')]));_0xefcd8e[_0x800a('0x39')]=_0xefcd8e['attributes'][_0x800a('0x3b')]?_0xefcd8e[_0x800a('0x39')]:_0xb51365[_0x800a('0x34')];_0xefcd8e[_0x800a('0x3d')]=qs[_0x800a('0x3e')](_0x5cec10[_0x800a('0x35')][_0x800a('0x3e')]);_0xefcd8e[_0x800a('0x40')]=qs[_0x800a('0x37')](_[_0x800a('0x4f')](_0x5cec10[_0x800a('0x35')],_0xb51365[_0x800a('0x37')]));if(_0x5cec10['query'][_0x800a('0x3f')]){_0xefcd8e['where']=_['merge'](_0xefcd8e[_0x800a('0x40')],{'$or':_[_0x800a('0x2f')](_0xefcd8e['attributes'],function(_0x432caa){var _0x51326e={};_0x51326e[_0x432caa]={'$like':'%'+_0x5cec10['query'][_0x800a('0x3f')]+'%'};return _0x51326e;})});}_0xefcd8e=_[_0x800a('0x42')]({},_0xefcd8e,_0x5cec10['options']);return _0xfb290[_0x800a('0x50')](_0xefcd8e);}})[_0x800a('0x29')](function(_0x503076){if(_0x503076){_0x15afe2=_0x503076[_0x800a('0x3b')];if(!_0x5cec10[_0x800a('0x35')][_0x800a('0x51')](_0x800a('0x3c'))){_0xefcd8e[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x5cec10[_0x800a('0x35')]['limit']);_0xefcd8e[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x5cec10[_0x800a('0x35')]['offset']);}return _0xfb290[_0x800a('0x50')](_0xefcd8e);}})[_0x800a('0x29')](function(_0x231c5d){if(_0x231c5d){return _0x231c5d?{'count':_0x15afe2,'rows':_0x231c5d}:null;}})[_0x800a('0x29')](respondWithResult(_0x4c47ac,null))[_0x800a('0x47')](handleError(_0x4c47ac,null));};exports[_0x800a('0x52')]=function(_0x4276fb,_0x303af0,_0x2e906c){var _0x5f3324={};var _0x2e3f3e={};var _0x3c4123;var _0x5c14e7;return db[_0x800a('0x30')][_0x800a('0x4d')]({'where':{'id':_0x4276fb[_0x800a('0x48')]['id']}})[_0x800a('0x29')](handleEntityNotFound(_0x303af0,null))[_0x800a('0x29')](function(_0x4ec9aa){if(_0x4ec9aa){_0x3c4123=_0x4ec9aa;_0x2e3f3e[_0x800a('0x34')]=_[_0x800a('0x36')](db['SalesforceField']['rawAttributes']);_0x2e3f3e[_0x800a('0x35')]=_['keys'](_0x4276fb[_0x800a('0x35')]);_0x2e3f3e['filters']=_[_0x800a('0x38')](_0x2e3f3e[_0x800a('0x34')],_0x2e3f3e[_0x800a('0x35')]);_0x5f3324[_0x800a('0x39')]=_[_0x800a('0x38')](_0x2e3f3e['model'],qs['fields'](_0x4276fb[_0x800a('0x35')]['fields']));_0x5f3324['attributes']=_0x5f3324[_0x800a('0x39')][_0x800a('0x3b')]?_0x5f3324[_0x800a('0x39')]:_0x2e3f3e[_0x800a('0x34')];_0x5f3324[_0x800a('0x3d')]=qs['sort'](_0x4276fb[_0x800a('0x35')][_0x800a('0x3e')]);_0x5f3324['where']=qs[_0x800a('0x37')](_['pick'](_0x4276fb[_0x800a('0x35')],_0x2e3f3e[_0x800a('0x37')]));if(_0x4276fb[_0x800a('0x35')][_0x800a('0x3f')]){_0x5f3324[_0x800a('0x40')]=_['merge'](_0x5f3324[_0x800a('0x40')],{'$or':_['map'](_0x5f3324[_0x800a('0x39')],function(_0x4a1c79){var _0x434509={};_0x434509[_0x4a1c79]={'$like':'%'+_0x4276fb[_0x800a('0x35')][_0x800a('0x3f')]+'%'};return _0x434509;})});}_0x5f3324=_[_0x800a('0x42')]({},_0x5f3324,_0x4276fb[_0x800a('0x43')]);return _0x3c4123[_0x800a('0x52')](_0x5f3324);}})[_0x800a('0x29')](function(_0x1632d6){if(_0x1632d6){_0x5c14e7=_0x1632d6[_0x800a('0x3b')];if(!_0x4276fb[_0x800a('0x35')][_0x800a('0x51')](_0x800a('0x3c'))){_0x5f3324[_0x800a('0x1f')]=qs[_0x800a('0x1f')](_0x4276fb[_0x800a('0x35')][_0x800a('0x1f')]);_0x5f3324[_0x800a('0x21')]=qs[_0x800a('0x21')](_0x4276fb[_0x800a('0x35')][_0x800a('0x21')]);}return _0x3c4123['getDescriptions'](_0x5f3324);}})[_0x800a('0x29')](function(_0x552842){if(_0x552842){return _0x552842?{'count':_0x5c14e7,'rows':_0x552842}:null;}})[_0x800a('0x29')](respondWithResult(_0x303af0,null))[_0x800a('0x47')](handleError(_0x303af0,null));};
\ No newline at end of file
+var _0xa166=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','index','SalesforceConfiguration','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','catch','show','rawAttributes','length','create','body','find','params','getFields','findOne','SalesforceField','order','options','getSubjects','getDescriptions','eml-format','request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x1722bf,_0x2fa7f4){var _0x58c607=function(_0x4b13f5){while(--_0x4b13f5){_0x1722bf['push'](_0x1722bf['shift']());}};_0x58c607(++_0x2fa7f4);}(_0xa166,0x1be));var _0x6a16=function(_0x5dd83e,_0x986fd9){_0x5dd83e=_0x5dd83e-0x0;var _0x5988ba=_0xa166[_0x5dd83e];return _0x5988ba;};'use strict';var emlformat=require(_0x6a16('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6a16('0x1'));var moment=require(_0x6a16('0x2'));var BPromise=require(_0x6a16('0x3'));var Mustache=require('mustache');var util=require(_0x6a16('0x4'));var path=require('path');var sox=require(_0x6a16('0x5'));var csv=require(_0x6a16('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6a16('0x7'));var squel=require(_0x6a16('0x8'));var crypto=require(_0x6a16('0x9'));var jsforce=require(_0x6a16('0xa'));var deskjs=require(_0x6a16('0xb'));var toCsv=require(_0x6a16('0x6'));var querystring=require(_0x6a16('0xc'));var Papa=require('papaparse');var Redis=require(_0x6a16('0xd'));var authService=require(_0x6a16('0xe'));var qs=require(_0x6a16('0xf'));var as=require(_0x6a16('0x10'));var hardwareService=require(_0x6a16('0x11'));var logger=require(_0x6a16('0x12'))('api');var utils=require(_0x6a16('0x13'));var config=require(_0x6a16('0x14'));var licenseUtil=require(_0x6a16('0x15'));var db=require(_0x6a16('0x16'))['db'];function respondWithStatusCode(_0x1fc1e0,_0x4d55c2){_0x4d55c2=_0x4d55c2||0xcc;return function(_0x2a03ff){if(_0x2a03ff){return _0x1fc1e0['sendStatus'](_0x4d55c2);}return _0x1fc1e0[_0x6a16('0x17')](_0x4d55c2)[_0x6a16('0x18')]();};}function respondWithResult(_0x5c4888,_0x4829da){_0x4829da=_0x4829da||0xc8;return function(_0x38835f){if(_0x38835f){return _0x5c4888[_0x6a16('0x17')](_0x4829da)[_0x6a16('0x19')](_0x38835f);}};}function respondWithFilteredResult(_0x2195bf,_0x36a3ac){return function(_0x2d05a0){if(_0x2d05a0){var _0x530c32=typeof _0x36a3ac[_0x6a16('0x1a')]===_0x6a16('0x1b')&&typeof _0x36a3ac[_0x6a16('0x1c')]===_0x6a16('0x1b');var _0x244d01=_0x2d05a0[_0x6a16('0x1d')];var _0x3f36a7=_0x530c32?0x0:_0x36a3ac['offset'];var _0x4704fa=_0x530c32?_0x2d05a0['count']:_0x36a3ac[_0x6a16('0x1a')]+_0x36a3ac[_0x6a16('0x1c')];var _0x33f637;if(_0x4704fa>=_0x244d01){_0x4704fa=_0x244d01;_0x33f637=0xc8;}else{_0x33f637=0xce;}_0x2195bf['status'](_0x33f637);return _0x2195bf[_0x6a16('0x1e')](_0x6a16('0x1f'),_0x3f36a7+'-'+_0x4704fa+'/'+_0x244d01)['json'](_0x2d05a0);}return null;};}function patchUpdates(_0xe7d99f){return function(_0x5e0a5f){try{jsonpatch[_0x6a16('0x20')](_0x5e0a5f,_0xe7d99f,!![]);}catch(_0x2fcd9b){return BPromise[_0x6a16('0x21')](_0x2fcd9b);}return _0x5e0a5f[_0x6a16('0x22')]();};}function saveUpdates(_0x11e210,_0x8aa476){return function(_0x4b027d){if(_0x4b027d){return _0x4b027d[_0x6a16('0x23')](_0x11e210)[_0x6a16('0x24')](function(_0x2bf7ab){return _0x2bf7ab;});}return null;};}function removeEntity(_0x2d0d7e,_0x9cb29e){return function(_0x9fbd6f){if(_0x9fbd6f){return _0x9fbd6f[_0x6a16('0x25')]()['then'](function(){_0x2d0d7e[_0x6a16('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11dc41,_0x2a42b0){return function(_0x2c70c4){if(!_0x2c70c4){_0x11dc41['sendStatus'](0x194);}return _0x2c70c4;};}function handleError(_0xd6583e,_0x1ee5d1){_0x1ee5d1=_0x1ee5d1||0x1f4;return function(_0x2c9052){logger['error'](_0x2c9052['stack']);if(_0x2c9052['name']){delete _0x2c9052[_0x6a16('0x26')];}_0xd6583e['status'](_0x1ee5d1)['send'](_0x2c9052);};}exports[_0x6a16('0x27')]=function(_0x3e4b67,_0x5f564d){var _0x4a361e={},_0x4a4381={},_0x3e4411={'count':0x0,'rows':[]};var _0x40a0d9=_['map'](db[_0x6a16('0x28')]['rawAttributes'],function(_0x2f0eee){return{'name':_0x2f0eee[_0x6a16('0x29')],'type':_0x2f0eee[_0x6a16('0x2a')][_0x6a16('0x2b')]};});_0x4a4381[_0x6a16('0x2c')]=_[_0x6a16('0x2d')](_0x40a0d9,_0x6a16('0x26'));_0x4a4381[_0x6a16('0x2e')]=_[_0x6a16('0x2f')](_0x3e4b67[_0x6a16('0x2e')]);_0x4a4381[_0x6a16('0x30')]=_[_0x6a16('0x31')](_0x4a4381[_0x6a16('0x2c')],_0x4a4381[_0x6a16('0x2e')]);_0x4a361e['attributes']=_[_0x6a16('0x31')](_0x4a4381[_0x6a16('0x2c')],qs[_0x6a16('0x32')](_0x3e4b67[_0x6a16('0x2e')]['fields']));_0x4a361e[_0x6a16('0x33')]=_0x4a361e[_0x6a16('0x33')]['length']?_0x4a361e[_0x6a16('0x33')]:_0x4a4381[_0x6a16('0x2c')];if(!_0x3e4b67['query'][_0x6a16('0x34')](_0x6a16('0x35'))){_0x4a361e[_0x6a16('0x1c')]=qs[_0x6a16('0x1c')](_0x3e4b67['query']['limit']);_0x4a361e[_0x6a16('0x1a')]=qs[_0x6a16('0x1a')](_0x3e4b67['query']['offset']);}_0x4a361e['order']=qs[_0x6a16('0x36')](_0x3e4b67[_0x6a16('0x2e')]['sort']);_0x4a361e[_0x6a16('0x37')]=qs['filters'](_[_0x6a16('0x38')](_0x3e4b67[_0x6a16('0x2e')],_0x4a4381[_0x6a16('0x30')]),_0x40a0d9);if(_0x3e4b67[_0x6a16('0x2e')][_0x6a16('0x39')]){_0x4a361e['where']=_[_0x6a16('0x3a')](_0x4a361e['where'],{'$or':_[_0x6a16('0x2d')](_0x40a0d9,function(_0x29351c){if(_0x29351c['type']!=='VIRTUAL'){var _0x29961b={};_0x29961b[_0x29351c[_0x6a16('0x26')]]={'$like':'%'+_0x3e4b67[_0x6a16('0x2e')][_0x6a16('0x39')]+'%'};return _0x29961b;}})});}_0x4a361e=_[_0x6a16('0x3a')]({},_0x4a361e,_0x3e4b67['options']);var _0x3fdb7f={'where':_0x4a361e['where']};return db[_0x6a16('0x28')][_0x6a16('0x1d')](_0x3fdb7f)[_0x6a16('0x24')](function(_0x293a67){_0x3e4411[_0x6a16('0x1d')]=_0x293a67;if(_0x3e4b67['query'][_0x6a16('0x3b')]){_0x4a361e[_0x6a16('0x3c')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0x6a16('0x3d')](_0x4a361e);})['then'](function(_0x301878){_0x3e4411['rows']=_0x301878;return _0x3e4411;})['then'](respondWithFilteredResult(_0x5f564d,_0x4a361e))[_0x6a16('0x3e')](handleError(_0x5f564d,null));};exports[_0x6a16('0x3f')]=function(_0x2258c6,_0x1d079b){var _0x85bab9={'raw':![],'where':{'id':_0x2258c6['params']['id']}},_0x5e020e={};_0x5e020e[_0x6a16('0x2c')]=_['keys'](db[_0x6a16('0x28')][_0x6a16('0x40')]);_0x5e020e[_0x6a16('0x2e')]=_[_0x6a16('0x2f')](_0x2258c6[_0x6a16('0x2e')]);_0x5e020e[_0x6a16('0x30')]=_['intersection'](_0x5e020e[_0x6a16('0x2c')],_0x5e020e[_0x6a16('0x2e')]);_0x85bab9[_0x6a16('0x33')]=_[_0x6a16('0x31')](_0x5e020e[_0x6a16('0x2c')],qs[_0x6a16('0x32')](_0x2258c6[_0x6a16('0x2e')][_0x6a16('0x32')]));_0x85bab9[_0x6a16('0x33')]=_0x85bab9['attributes'][_0x6a16('0x41')]?_0x85bab9[_0x6a16('0x33')]:_0x5e020e[_0x6a16('0x2c')];if(_0x2258c6['query'][_0x6a16('0x3b')]){_0x85bab9[_0x6a16('0x3c')]=[{'all':!![]}];}_0x85bab9=_[_0x6a16('0x3a')]({},_0x85bab9,_0x2258c6['options']);return db[_0x6a16('0x28')]['find'](_0x85bab9)['then'](handleEntityNotFound(_0x1d079b,null))['then'](respondWithResult(_0x1d079b,null))['catch'](handleError(_0x1d079b,null));};exports[_0x6a16('0x42')]=function(_0x396091,_0x417f78){return db['SalesforceConfiguration'][_0x6a16('0x42')](_0x396091['body'],{})[_0x6a16('0x24')](respondWithResult(_0x417f78,0xc9))[_0x6a16('0x3e')](handleError(_0x417f78,null));};exports[_0x6a16('0x23')]=function(_0x5b08cc,_0x4a80a2){if(_0x5b08cc[_0x6a16('0x43')]['id']){delete _0x5b08cc['body']['id'];}return db[_0x6a16('0x28')][_0x6a16('0x44')]({'where':{'id':_0x5b08cc[_0x6a16('0x45')]['id']}})[_0x6a16('0x24')](handleEntityNotFound(_0x4a80a2,null))[_0x6a16('0x24')](saveUpdates(_0x5b08cc[_0x6a16('0x43')],null))[_0x6a16('0x24')](respondWithResult(_0x4a80a2,null))[_0x6a16('0x3e')](handleError(_0x4a80a2,null));};exports[_0x6a16('0x25')]=function(_0x4d74ec,_0x37fc06){return db[_0x6a16('0x28')]['find']({'where':{'id':_0x4d74ec[_0x6a16('0x45')]['id']}})[_0x6a16('0x24')](handleEntityNotFound(_0x37fc06,null))[_0x6a16('0x24')](removeEntity(_0x37fc06,null))[_0x6a16('0x3e')](handleError(_0x37fc06,null));};exports[_0x6a16('0x46')]=function(_0x39e253,_0x58eeda,_0x4137f4){var _0x44fcf6={};var _0x5144c9={};var _0x5d5fbc;var _0x211986;return db['SalesforceConfiguration'][_0x6a16('0x47')]({'where':{'id':_0x39e253[_0x6a16('0x45')]['id']}})[_0x6a16('0x24')](handleEntityNotFound(_0x58eeda,null))[_0x6a16('0x24')](function(_0x3527d8){if(_0x3527d8){_0x5d5fbc=_0x3527d8;_0x5144c9[_0x6a16('0x2c')]=_['keys'](db[_0x6a16('0x48')]['rawAttributes']);_0x5144c9['query']=_[_0x6a16('0x2f')](_0x39e253[_0x6a16('0x2e')]);_0x5144c9[_0x6a16('0x30')]=_[_0x6a16('0x31')](_0x5144c9[_0x6a16('0x2c')],_0x5144c9[_0x6a16('0x2e')]);_0x44fcf6[_0x6a16('0x33')]=_[_0x6a16('0x31')](_0x5144c9[_0x6a16('0x2c')],qs['fields'](_0x39e253['query'][_0x6a16('0x32')]));_0x44fcf6[_0x6a16('0x33')]=_0x44fcf6['attributes']['length']?_0x44fcf6['attributes']:_0x5144c9[_0x6a16('0x2c')];_0x44fcf6[_0x6a16('0x49')]=qs[_0x6a16('0x36')](_0x39e253[_0x6a16('0x2e')][_0x6a16('0x36')]);_0x44fcf6[_0x6a16('0x37')]=qs[_0x6a16('0x30')](_[_0x6a16('0x38')](_0x39e253[_0x6a16('0x2e')],_0x5144c9[_0x6a16('0x30')]));if(_0x39e253[_0x6a16('0x2e')][_0x6a16('0x39')]){_0x44fcf6['where']=_[_0x6a16('0x3a')](_0x44fcf6['where'],{'$or':_[_0x6a16('0x2d')](_0x44fcf6[_0x6a16('0x33')],function(_0x1c6412){var _0x3c921={};_0x3c921[_0x1c6412]={'$like':'%'+_0x39e253[_0x6a16('0x2e')][_0x6a16('0x39')]+'%'};return _0x3c921;})});}_0x44fcf6=_[_0x6a16('0x3a')]({},_0x44fcf6,_0x39e253[_0x6a16('0x4a')]);return _0x5d5fbc[_0x6a16('0x46')](_0x44fcf6);}})['then'](function(_0x53aeda){if(_0x53aeda){_0x211986=_0x53aeda[_0x6a16('0x41')];if(!_0x39e253['query']['hasOwnProperty'](_0x6a16('0x35'))){_0x44fcf6['limit']=qs[_0x6a16('0x1c')](_0x39e253[_0x6a16('0x2e')][_0x6a16('0x1c')]);_0x44fcf6[_0x6a16('0x1a')]=qs[_0x6a16('0x1a')](_0x39e253[_0x6a16('0x2e')]['offset']);}return _0x5d5fbc[_0x6a16('0x46')](_0x44fcf6);}})[_0x6a16('0x24')](function(_0x5c3fd4){if(_0x5c3fd4){return _0x5c3fd4?{'count':_0x211986,'rows':_0x5c3fd4}:null;}})[_0x6a16('0x24')](respondWithResult(_0x58eeda,null))['catch'](handleError(_0x58eeda,null));};exports['getSubjects']=function(_0x2a9124,_0x11ba18,_0x4f0b3b){var _0x1d3922={};var _0x21feb9={};var _0x4f332b;var _0xf193ba;return db[_0x6a16('0x28')][_0x6a16('0x47')]({'where':{'id':_0x2a9124[_0x6a16('0x45')]['id']}})[_0x6a16('0x24')](handleEntityNotFound(_0x11ba18,null))[_0x6a16('0x24')](function(_0x3ce777){if(_0x3ce777){_0x4f332b=_0x3ce777;_0x21feb9[_0x6a16('0x2c')]=_[_0x6a16('0x2f')](db[_0x6a16('0x48')]['rawAttributes']);_0x21feb9[_0x6a16('0x2e')]=_[_0x6a16('0x2f')](_0x2a9124[_0x6a16('0x2e')]);_0x21feb9[_0x6a16('0x30')]=_[_0x6a16('0x31')](_0x21feb9[_0x6a16('0x2c')],_0x21feb9[_0x6a16('0x2e')]);_0x1d3922[_0x6a16('0x33')]=_['intersection'](_0x21feb9[_0x6a16('0x2c')],qs[_0x6a16('0x32')](_0x2a9124[_0x6a16('0x2e')][_0x6a16('0x32')]));_0x1d3922[_0x6a16('0x33')]=_0x1d3922[_0x6a16('0x33')][_0x6a16('0x41')]?_0x1d3922['attributes']:_0x21feb9[_0x6a16('0x2c')];_0x1d3922['order']=qs[_0x6a16('0x36')](_0x2a9124['query']['sort']);_0x1d3922[_0x6a16('0x37')]=qs['filters'](_['pick'](_0x2a9124[_0x6a16('0x2e')],_0x21feb9['filters']));if(_0x2a9124[_0x6a16('0x2e')][_0x6a16('0x39')]){_0x1d3922['where']=_[_0x6a16('0x3a')](_0x1d3922[_0x6a16('0x37')],{'$or':_['map'](_0x1d3922[_0x6a16('0x33')],function(_0x506c9a){var _0x29120c={};_0x29120c[_0x506c9a]={'$like':'%'+_0x2a9124[_0x6a16('0x2e')]['filter']+'%'};return _0x29120c;})});}_0x1d3922=_['merge']({},_0x1d3922,_0x2a9124[_0x6a16('0x4a')]);return _0x4f332b[_0x6a16('0x4b')](_0x1d3922);}})[_0x6a16('0x24')](function(_0x36222f){if(_0x36222f){_0xf193ba=_0x36222f[_0x6a16('0x41')];if(!_0x2a9124[_0x6a16('0x2e')][_0x6a16('0x34')](_0x6a16('0x35'))){_0x1d3922[_0x6a16('0x1c')]=qs[_0x6a16('0x1c')](_0x2a9124[_0x6a16('0x2e')]['limit']);_0x1d3922['offset']=qs[_0x6a16('0x1a')](_0x2a9124['query'][_0x6a16('0x1a')]);}return _0x4f332b[_0x6a16('0x4b')](_0x1d3922);}})[_0x6a16('0x24')](function(_0x492c69){if(_0x492c69){return _0x492c69?{'count':_0xf193ba,'rows':_0x492c69}:null;}})[_0x6a16('0x24')](respondWithResult(_0x11ba18,null))['catch'](handleError(_0x11ba18,null));};exports[_0x6a16('0x4c')]=function(_0x39447b,_0x35c8f2,_0x23771c){var _0x178fad={};var _0x868e3e={};var _0x8f7438;var _0xce263b;return db[_0x6a16('0x28')][_0x6a16('0x47')]({'where':{'id':_0x39447b[_0x6a16('0x45')]['id']}})[_0x6a16('0x24')](handleEntityNotFound(_0x35c8f2,null))['then'](function(_0x150959){if(_0x150959){_0x8f7438=_0x150959;_0x868e3e[_0x6a16('0x2c')]=_[_0x6a16('0x2f')](db['SalesforceField'][_0x6a16('0x40')]);_0x868e3e[_0x6a16('0x2e')]=_['keys'](_0x39447b['query']);_0x868e3e[_0x6a16('0x30')]=_[_0x6a16('0x31')](_0x868e3e['model'],_0x868e3e[_0x6a16('0x2e')]);_0x178fad[_0x6a16('0x33')]=_[_0x6a16('0x31')](_0x868e3e[_0x6a16('0x2c')],qs[_0x6a16('0x32')](_0x39447b['query'][_0x6a16('0x32')]));_0x178fad[_0x6a16('0x33')]=_0x178fad[_0x6a16('0x33')][_0x6a16('0x41')]?_0x178fad['attributes']:_0x868e3e[_0x6a16('0x2c')];_0x178fad[_0x6a16('0x49')]=qs[_0x6a16('0x36')](_0x39447b['query'][_0x6a16('0x36')]);_0x178fad['where']=qs[_0x6a16('0x30')](_[_0x6a16('0x38')](_0x39447b[_0x6a16('0x2e')],_0x868e3e['filters']));if(_0x39447b[_0x6a16('0x2e')]['filter']){_0x178fad[_0x6a16('0x37')]=_['merge'](_0x178fad[_0x6a16('0x37')],{'$or':_[_0x6a16('0x2d')](_0x178fad[_0x6a16('0x33')],function(_0x57e6f5){var _0x51f2af={};_0x51f2af[_0x57e6f5]={'$like':'%'+_0x39447b['query'][_0x6a16('0x39')]+'%'};return _0x51f2af;})});}_0x178fad=_[_0x6a16('0x3a')]({},_0x178fad,_0x39447b['options']);return _0x8f7438[_0x6a16('0x4c')](_0x178fad);}})[_0x6a16('0x24')](function(_0x37f5b3){if(_0x37f5b3){_0xce263b=_0x37f5b3[_0x6a16('0x41')];if(!_0x39447b[_0x6a16('0x2e')][_0x6a16('0x34')](_0x6a16('0x35'))){_0x178fad['limit']=qs[_0x6a16('0x1c')](_0x39447b[_0x6a16('0x2e')][_0x6a16('0x1c')]);_0x178fad[_0x6a16('0x1a')]=qs[_0x6a16('0x1a')](_0x39447b[_0x6a16('0x2e')][_0x6a16('0x1a')]);}return _0x8f7438[_0x6a16('0x4c')](_0x178fad);}})[_0x6a16('0x24')](function(_0x26ff78){if(_0x26ff78){return _0x26ff78?{'count':_0xce263b,'rows':_0x26ff78}:null;}})[_0x6a16('0x24')](respondWithResult(_0x35c8f2,null))[_0x6a16('0x3e')](handleError(_0x35c8f2,null));};
\ No newline at end of file
index 597c875..a59d64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9579=['./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x4470c0,_0x5b9cd1){var _0x2c079a=function(_0x1a91c5){while(--_0x1a91c5){_0x4470c0['push'](_0x4470c0['shift']());}};_0x2c079a(++_0x5b9cd1);}(_0x9579,0xc3));var _0x9957=function(_0x32f05c,_0x273aef){_0x32f05c=_0x32f05c-0x0;var _0x4307ed=_0x9579[_0x32f05c];return _0x4307ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9957('0x0'))('api');var moment=require(_0x9957('0x1'));var BPromise=require('bluebird');var rp=require(_0x9957('0x2'));var fs=require('fs');var path=require(_0x9957('0x3'));var rimraf=require(_0x9957('0x4'));var config=require('../../config/environment');var attributes=require(_0x9957('0x5'));module[_0x9957('0x6')]=function(_0x36da2f,_0x28f100){return _0x36da2f[_0x9957('0x7')](_0x9957('0x8'),attributes,{'tableName':_0x9957('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb061=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','SalesforceConfiguration','int_salesforce_configurations'];(function(_0x23d2bf,_0x1b1f6a){var _0x48ad94=function(_0x16d30e){while(--_0x16d30e){_0x23d2bf['push'](_0x23d2bf['shift']());}};_0x48ad94(++_0x1b1f6a);}(_0xb061,0x108));var _0x1b06=function(_0x5ac03a,_0x973ca7){_0x5ac03a=_0x5ac03a-0x0;var _0x6ab71=_0xb061[_0x5ac03a];return _0x6ab71;};'use strict';var _=require(_0x1b06('0x0'));var util=require('util');var logger=require(_0x1b06('0x1'))(_0x1b06('0x2'));var moment=require(_0x1b06('0x3'));var BPromise=require(_0x1b06('0x4'));var rp=require(_0x1b06('0x5'));var fs=require('fs');var path=require(_0x1b06('0x6'));var rimraf=require(_0x1b06('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceConfiguration.attributes');module[_0x1b06('0x8')]=function(_0x28d92d,_0x4fd41f){return _0x28d92d[_0x1b06('0x9')](_0x1b06('0xa'),attributes,{'tableName':_0x1b06('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57c146c..2ed317d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefdd=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x9d14e3,_0x5a6072){var _0x19bf32=function(_0x19da07){while(--_0x19da07){_0x9d14e3['push'](_0x9d14e3['shift']());}};_0x19bf32(++_0x5a6072);}(_0xefdd,0x120));var _0xdefd=function(_0x1bcd5a,_0x4a41d1){_0x1bcd5a=_0x1bcd5a-0x0;var _0x5e07cf=_0xefdd[_0x1bcd5a];return _0x5e07cf;};'use strict';var _=require(_0xdefd('0x0'));var util=require(_0xdefd('0x1'));var moment=require(_0xdefd('0x2'));var BPromise=require(_0xdefd('0x3'));var rs=require(_0xdefd('0x4'));var fs=require('fs');var Redis=require(_0xdefd('0x5'));var db=require(_0xdefd('0x6'))['db'];var utils=require(_0xdefd('0x7'));var logger=require(_0xdefd('0x8'))(_0xdefd('0x9'));var config=require(_0xdefd('0xa'));var jayson=require(_0xdefd('0xb'));var client=jayson[_0xdefd('0xc')][_0xdefd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5208aa,_0x5eb0c3,_0x45cab8){return new BPromise(function(_0x3515c3,_0x528ca5){return client[_0xdefd('0xe')](_0x5208aa,_0x45cab8)['then'](function(_0x5d9509){logger[_0xdefd('0xf')](_0xdefd('0x10'),_0x5eb0c3,_0xdefd('0x11'));logger[_0xdefd('0x12')](_0xdefd('0x13'),_0x5eb0c3,_0xdefd('0x11'),JSON[_0xdefd('0x14')](_0x5d9509));if(_0x5d9509[_0xdefd('0x15')]){if(_0x5d9509[_0xdefd('0x15')][_0xdefd('0x16')]===0x1f4){logger['error'](_0xdefd('0x10'),_0x5eb0c3,_0x5d9509[_0xdefd('0x15')][_0xdefd('0x17')]);return _0x528ca5(_0x5d9509[_0xdefd('0x15')]['message']);}logger[_0xdefd('0x15')](_0xdefd('0x10'),_0x5eb0c3,_0x5d9509[_0xdefd('0x15')][_0xdefd('0x17')]);return _0x3515c3(_0x5d9509[_0xdefd('0x15')]['message']);}else{logger[_0xdefd('0xf')](_0xdefd('0x10'),_0x5eb0c3,_0xdefd('0x11'));_0x3515c3(_0x5d9509[_0xdefd('0x18')]['message']);}})[_0xdefd('0x19')](function(_0x59625c){logger['error'](_0xdefd('0x10'),_0x5eb0c3,_0x59625c);_0x528ca5(_0x59625c);});});}
\ No newline at end of file
+var _0x5b08=['../../mysqldb','rpc','jayson/promise','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x55608a,_0x59c205){var _0x1ad0a8=function(_0x805dab){while(--_0x805dab){_0x55608a['push'](_0x55608a['shift']());}};_0x1ad0a8(++_0x59c205);}(_0x5b08,0x94));var _0x85b0=function(_0x5e23e3,_0x859a20){_0x5e23e3=_0x5e23e3-0x0;var _0x388dba=_0x5b08[_0x5e23e3];return _0x388dba;};'use strict';var _=require(_0x85b0('0x0'));var util=require(_0x85b0('0x1'));var moment=require(_0x85b0('0x2'));var BPromise=require(_0x85b0('0x3'));var rs=require(_0x85b0('0x4'));var fs=require('fs');var Redis=require(_0x85b0('0x5'));var db=require(_0x85b0('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x85b0('0x7'));var config=require('../../config/environment');var jayson=require(_0x85b0('0x8'));var client=jayson[_0x85b0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5028d6,_0x57ff7b,_0x239d8a){return new BPromise(function(_0x3a57e9,_0x50dd21){return client[_0x85b0('0xa')](_0x5028d6,_0x239d8a)[_0x85b0('0xb')](function(_0x200f61){logger[_0x85b0('0xc')](_0x85b0('0xd'),_0x57ff7b,'request\x20sent');logger[_0x85b0('0xe')](_0x85b0('0xf'),_0x57ff7b,'request\x20sent',JSON['stringify'](_0x200f61));if(_0x200f61['error']){if(_0x200f61[_0x85b0('0x10')][_0x85b0('0x11')]===0x1f4){logger[_0x85b0('0x10')](_0x85b0('0xd'),_0x57ff7b,_0x200f61[_0x85b0('0x10')][_0x85b0('0x12')]);return _0x50dd21(_0x200f61[_0x85b0('0x10')][_0x85b0('0x12')]);}logger[_0x85b0('0x10')](_0x85b0('0xd'),_0x57ff7b,_0x200f61[_0x85b0('0x10')]['message']);return _0x3a57e9(_0x200f61['error'][_0x85b0('0x12')]);}else{logger[_0x85b0('0xc')](_0x85b0('0xd'),_0x57ff7b,_0x85b0('0x13'));_0x3a57e9(_0x200f61[_0x85b0('0x14')][_0x85b0('0x12')]);}})[_0x85b0('0x15')](function(_0x4de40f){logger[_0x85b0('0x10')](_0x85b0('0xd'),_0x57ff7b,_0x4de40f);_0x50dd21(_0x4de40f);});});}
\ No newline at end of file
index 64486fc..02f5cdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x805c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post','put','isAuthenticated','update','delete','destroy','path','connect-timeout','Router'];(function(_0x58175c,_0x2d9373){var _0x55b88f=function(_0x13ed84){while(--_0x13ed84){_0x58175c['push'](_0x58175c['shift']());}};_0x55b88f(++_0x2d9373);}(_0x805c,0x74));var _0xc805=function(_0x147a55,_0x18a8ed){_0x147a55=_0x147a55-0x0;var _0xabf3ff=_0x805c[_0x147a55];return _0xabf3ff;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc805('0x0'));var timeout=require(_0xc805('0x1'));var express=require('express');var router=express[_0xc805('0x2')]();var fs_extra=require(_0xc805('0x3'));var auth=require(_0xc805('0x4'));var interaction=require(_0xc805('0x5'));var config=require(_0xc805('0x6'));var controller=require('./intSalesforceField.controller');router[_0xc805('0x7')]('/',auth['isAuthenticated'](),controller[_0xc805('0x8')]);router['get'](_0xc805('0x9'),auth['isAuthenticated'](),controller[_0xc805('0xa')]);router[_0xc805('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc805('0xc')]('/:id',auth[_0xc805('0xd')](),controller[_0xc805('0xe')]);router[_0xc805('0xf')](_0xc805('0x9'),auth[_0xc805('0xd')](),controller[_0xc805('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xfd7b=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','isAuthenticated','index','get','show','post','put','update','delete','/:id'];(function(_0x1d4640,_0x5c6aaf){var _0x3017af=function(_0xbeaf73){while(--_0xbeaf73){_0x1d4640['push'](_0x1d4640['shift']());}};_0x3017af(++_0x5c6aaf);}(_0xfd7b,0xbf));var _0xbfd7=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0xfd7b[_0x999b85];return _0x1d7124;};'use strict';var multer=require(_0xbfd7('0x0'));var util=require(_0xbfd7('0x1'));var path=require(_0xbfd7('0x2'));var timeout=require(_0xbfd7('0x3'));var express=require(_0xbfd7('0x4'));var router=express[_0xbfd7('0x5')]();var fs_extra=require(_0xbfd7('0x6'));var auth=require(_0xbfd7('0x7'));var interaction=require(_0xbfd7('0x8'));var config=require('../../config/environment');var controller=require(_0xbfd7('0x9'));router['get']('/',auth[_0xbfd7('0xa')](),controller[_0xbfd7('0xb')]);router[_0xbfd7('0xc')]('/:id',auth[_0xbfd7('0xa')](),controller[_0xbfd7('0xd')]);router[_0xbfd7('0xe')]('/',auth[_0xbfd7('0xa')](),controller['create']);router[_0xbfd7('0xf')]('/:id',auth[_0xbfd7('0xa')](),controller[_0xbfd7('0x10')]);router[_0xbfd7('0x11')](_0xbfd7('0x12'),auth[_0xbfd7('0xa')](),controller[_0xbfd7('0x13')]);module[_0xbfd7('0x14')]=router;
\ No newline at end of file
index 169c022..27eb9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6cf=['STRING','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x367e8a,_0x26e803){var _0x24d084=function(_0x512c03){while(--_0x512c03){_0x367e8a['push'](_0x367e8a['shift']());}};_0x24d084(++_0x26e803);}(_0xd6cf,0x166));var _0xfd6c=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xd6cf[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require('sequelize');module[_0xfd6c('0x0')]={'type':{'type':Sequelize[_0xfd6c('0x1')](_0xfd6c('0x2'),_0xfd6c('0x3'),_0xfd6c('0x4'),_0xfd6c('0x5'),'picklist'),'defaultValue':_0xfd6c('0x2')},'content':{'type':Sequelize[_0xfd6c('0x6')]},'key':{'type':Sequelize[_0xfd6c('0x6')]},'keyType':{'type':Sequelize[_0xfd6c('0x1')](_0xfd6c('0x2'),'variable',_0xfd6c('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xfd6c('0x6')]}};
\ No newline at end of file
+var _0xa11d=['keyValue','picklist','STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x403e73,_0x43a5df){var _0x5d59e2=function(_0x456dcf){while(--_0x456dcf){_0x403e73['push'](_0x403e73['shift']());}};_0x5d59e2(++_0x43a5df);}(_0xa11d,0x162));var _0xda11=function(_0x4ebace,_0x158e68){_0x4ebace=_0x4ebace-0x0;var _0x497865=_0xa11d[_0x4ebace];return _0x497865;};'use strict';var Sequelize=require(_0xda11('0x0'));module[_0xda11('0x1')]={'type':{'type':Sequelize[_0xda11('0x2')](_0xda11('0x3'),_0xda11('0x4'),_0xda11('0x5'),_0xda11('0x6'),_0xda11('0x7')),'defaultValue':_0xda11('0x3')},'content':{'type':Sequelize[_0xda11('0x8')]},'key':{'type':Sequelize[_0xda11('0x8')]},'keyType':{'type':Sequelize[_0xda11('0x2')]('string',_0xda11('0x4'),_0xda11('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xda11('0x8')]},'variableName':{'type':Sequelize[_0xda11('0x8')]}};
\ No newline at end of file
index 74933da..b9c70f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ea=['name','SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','map','type','VIRTUAL','merge','options','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','update','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','to-csv','ejs','lodash','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','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','reject','then','destroy','error','stack'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x27ea,0x186));var _0xa27e=function(_0x123e0e,_0x37deee){_0x123e0e=_0x123e0e-0x0;var _0x5f3051=_0x27ea[_0x123e0e];return _0x5f3051;};'use strict';var emlformat=require(_0xa27e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa27e('0x1'));var jsonpatch=require(_0xa27e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa27e('0x3'));var Mustache=require(_0xa27e('0x4'));var util=require('util');var path=require(_0xa27e('0x5'));var sox=require('sox');var csv=require(_0xa27e('0x6'));var ejs=require(_0xa27e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa27e('0x8'));var squel=require('squel');var crypto=require(_0xa27e('0x9'));var jsforce=require(_0xa27e('0xa'));var deskjs=require(_0xa27e('0xb'));var toCsv=require(_0xa27e('0x6'));var querystring=require('querystring');var Papa=require(_0xa27e('0xc'));var Redis=require(_0xa27e('0xd'));var authService=require(_0xa27e('0xe'));var qs=require(_0xa27e('0xf'));var as=require(_0xa27e('0x10'));var hardwareService=require(_0xa27e('0x11'));var logger=require(_0xa27e('0x12'))(_0xa27e('0x13'));var utils=require(_0xa27e('0x14'));var config=require(_0xa27e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa27e('0x16'))['db'];function respondWithStatusCode(_0x4e0b07,_0x5764c0){_0x5764c0=_0x5764c0||0xcc;return function(_0x258e1a){if(_0x258e1a){return _0x4e0b07[_0xa27e('0x17')](_0x5764c0);}return _0x4e0b07[_0xa27e('0x18')](_0x5764c0)[_0xa27e('0x19')]();};}function respondWithResult(_0x36129f,_0x1e4200){_0x1e4200=_0x1e4200||0xc8;return function(_0x4156d0){if(_0x4156d0){return _0x36129f['status'](_0x1e4200)[_0xa27e('0x1a')](_0x4156d0);}};}function respondWithFilteredResult(_0x1a7ba5,_0x596b1e){return function(_0x2150a7){if(_0x2150a7){var _0x2c4204=typeof _0x596b1e[_0xa27e('0x1b')]==='undefined'&&typeof _0x596b1e[_0xa27e('0x1c')]===_0xa27e('0x1d');var _0x177758=_0x2150a7[_0xa27e('0x1e')];var _0x555521=_0x2c4204?0x0:_0x596b1e[_0xa27e('0x1b')];var _0x59e559=_0x2c4204?_0x2150a7[_0xa27e('0x1e')]:_0x596b1e['offset']+_0x596b1e['limit'];var _0x244807;if(_0x59e559>=_0x177758){_0x59e559=_0x177758;_0x244807=0xc8;}else{_0x244807=0xce;}_0x1a7ba5[_0xa27e('0x18')](_0x244807);return _0x1a7ba5['set']('Content-Range',_0x555521+'-'+_0x59e559+'/'+_0x177758)[_0xa27e('0x1a')](_0x2150a7);}return null;};}function patchUpdates(_0x35668e){return function(_0x2c855b){try{jsonpatch['apply'](_0x2c855b,_0x35668e,!![]);}catch(_0x427d82){return BPromise[_0xa27e('0x1f')](_0x427d82);}return _0x2c855b['save']();};}function saveUpdates(_0xfee593,_0x14f916){return function(_0x8a83ef){if(_0x8a83ef){return _0x8a83ef['update'](_0xfee593)[_0xa27e('0x20')](function(_0x568b4f){return _0x568b4f;});}return null;};}function removeEntity(_0x1f76c4,_0x32eab0){return function(_0x501be7){if(_0x501be7){return _0x501be7[_0xa27e('0x21')]()[_0xa27e('0x20')](function(){_0x1f76c4[_0xa27e('0x18')](0xcc)[_0xa27e('0x19')]();});}};}function handleEntityNotFound(_0x3d0786,_0x3b9d16){return function(_0x4e10e1){if(!_0x4e10e1){_0x3d0786[_0xa27e('0x17')](0x194);}return _0x4e10e1;};}function handleError(_0x5cb47f,_0x5ea34c){_0x5ea34c=_0x5ea34c||0x1f4;return function(_0x211eac){logger[_0xa27e('0x22')](_0x211eac[_0xa27e('0x23')]);if(_0x211eac[_0xa27e('0x24')]){delete _0x211eac[_0xa27e('0x24')];}_0x5cb47f['status'](_0x5ea34c)['send'](_0x211eac);};}exports['index']=function(_0x595597,_0xf9d13c){var _0x4134cf={},_0x359e68={},_0x6d7752={'count':0x0,'rows':[]};var _0x255578=_['map'](db[_0xa27e('0x25')][_0xa27e('0x26')],function(_0x980aaa){return{'name':_0x980aaa[_0xa27e('0x27')],'type':_0x980aaa['type'][_0xa27e('0x28')]};});_0x359e68[_0xa27e('0x29')]=_['map'](_0x255578,'name');_0x359e68[_0xa27e('0x2a')]=_['keys'](_0x595597[_0xa27e('0x2a')]);_0x359e68[_0xa27e('0x2b')]=_[_0xa27e('0x2c')](_0x359e68['model'],_0x359e68['query']);_0x4134cf['attributes']=_['intersection'](_0x359e68[_0xa27e('0x29')],qs[_0xa27e('0x2d')](_0x595597['query']['fields']));_0x4134cf['attributes']=_0x4134cf[_0xa27e('0x2e')][_0xa27e('0x2f')]?_0x4134cf['attributes']:_0x359e68['model'];if(!_0x595597[_0xa27e('0x2a')][_0xa27e('0x30')]('nolimit')){_0x4134cf[_0xa27e('0x1c')]=qs[_0xa27e('0x1c')](_0x595597[_0xa27e('0x2a')][_0xa27e('0x1c')]);_0x4134cf['offset']=qs[_0xa27e('0x1b')](_0x595597[_0xa27e('0x2a')][_0xa27e('0x1b')]);}_0x4134cf[_0xa27e('0x31')]=qs[_0xa27e('0x32')](_0x595597[_0xa27e('0x2a')]['sort']);_0x4134cf['where']=qs[_0xa27e('0x2b')](_[_0xa27e('0x33')](_0x595597[_0xa27e('0x2a')],_0x359e68[_0xa27e('0x2b')]),_0x255578);if(_0x595597[_0xa27e('0x2a')][_0xa27e('0x34')]){_0x4134cf[_0xa27e('0x35')]=_['merge'](_0x4134cf['where'],{'$or':_[_0xa27e('0x36')](_0x255578,function(_0xa62e5d){if(_0xa62e5d[_0xa27e('0x37')]!==_0xa27e('0x38')){var _0x39d14e={};_0x39d14e[_0xa62e5d[_0xa27e('0x24')]]={'$like':'%'+_0x595597[_0xa27e('0x2a')][_0xa27e('0x34')]+'%'};return _0x39d14e;}})});}_0x4134cf=_[_0xa27e('0x39')]({},_0x4134cf,_0x595597[_0xa27e('0x3a')]);var _0x5ceaee={'where':_0x4134cf[_0xa27e('0x35')]};return db[_0xa27e('0x25')][_0xa27e('0x1e')](_0x5ceaee)[_0xa27e('0x20')](function(_0x64659b){_0x6d7752[_0xa27e('0x1e')]=_0x64659b;if(_0x595597[_0xa27e('0x2a')]['includeAll']){_0x4134cf['include']=[{'all':!![]}];}return db[_0xa27e('0x25')][_0xa27e('0x3b')](_0x4134cf);})[_0xa27e('0x20')](function(_0x57f252){_0x6d7752[_0xa27e('0x3c')]=_0x57f252;return _0x6d7752;})[_0xa27e('0x20')](respondWithFilteredResult(_0xf9d13c,_0x4134cf))[_0xa27e('0x3d')](handleError(_0xf9d13c,null));};exports[_0xa27e('0x3e')]=function(_0x137af7,_0x2f03d7){var _0xfbdbb4={'raw':!![],'where':{'id':_0x137af7[_0xa27e('0x3f')]['id']}},_0x13198a={};_0x13198a[_0xa27e('0x29')]=_[_0xa27e('0x40')](db[_0xa27e('0x25')][_0xa27e('0x26')]);_0x13198a[_0xa27e('0x2a')]=_[_0xa27e('0x40')](_0x137af7[_0xa27e('0x2a')]);_0x13198a[_0xa27e('0x2b')]=_['intersection'](_0x13198a[_0xa27e('0x29')],_0x13198a[_0xa27e('0x2a')]);_0xfbdbb4[_0xa27e('0x2e')]=_[_0xa27e('0x2c')](_0x13198a[_0xa27e('0x29')],qs[_0xa27e('0x2d')](_0x137af7[_0xa27e('0x2a')][_0xa27e('0x2d')]));_0xfbdbb4[_0xa27e('0x2e')]=_0xfbdbb4['attributes']['length']?_0xfbdbb4[_0xa27e('0x2e')]:_0x13198a[_0xa27e('0x29')];if(_0x137af7[_0xa27e('0x2a')][_0xa27e('0x41')]){_0xfbdbb4[_0xa27e('0x42')]=[{'all':!![]}];}_0xfbdbb4=_[_0xa27e('0x39')]({},_0xfbdbb4,_0x137af7['options']);return db['SalesforceField'][_0xa27e('0x43')](_0xfbdbb4)['then'](handleEntityNotFound(_0x2f03d7,null))[_0xa27e('0x20')](respondWithResult(_0x2f03d7,null))[_0xa27e('0x3d')](handleError(_0x2f03d7,null));};exports[_0xa27e('0x44')]=function(_0x4006b8,_0x39803a){return db[_0xa27e('0x25')]['create'](_0x4006b8[_0xa27e('0x45')],{})[_0xa27e('0x20')](respondWithResult(_0x39803a,0xc9))[_0xa27e('0x3d')](handleError(_0x39803a,null));};exports[_0xa27e('0x46')]=function(_0x20b699,_0x35d295){if(_0x20b699[_0xa27e('0x45')]['id']){delete _0x20b699[_0xa27e('0x45')]['id'];}return db[_0xa27e('0x25')][_0xa27e('0x43')]({'where':{'id':_0x20b699[_0xa27e('0x3f')]['id']}})[_0xa27e('0x20')](handleEntityNotFound(_0x35d295,null))[_0xa27e('0x20')](saveUpdates(_0x20b699['body'],null))[_0xa27e('0x20')](respondWithResult(_0x35d295,null))[_0xa27e('0x3d')](handleError(_0x35d295,null));};exports[_0xa27e('0x21')]=function(_0x463ace,_0x2b1c06){return db[_0xa27e('0x25')][_0xa27e('0x43')]({'where':{'id':_0x463ace[_0xa27e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2b1c06,null))[_0xa27e('0x20')](removeEntity(_0x2b1c06,null))[_0xa27e('0x3d')](handleError(_0x2b1c06,null));};
\ No newline at end of file
+var _0xec8f=['map','SalesforceField','fieldName','key','model','name','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','then','error','stack','index'];(function(_0x527c21,_0x4b5ad8){var _0x142414=function(_0x6d6010){while(--_0x6d6010){_0x527c21['push'](_0x527c21['shift']());}};_0x142414(++_0x4b5ad8);}(_0xec8f,0x18b));var _0xfec8=function(_0x32a2cf,_0x20b153){_0x32a2cf=_0x32a2cf-0x0;var _0x250e9d=_0xec8f[_0x32a2cf];return _0x250e9d;};'use strict';var emlformat=require(_0xfec8('0x0'));var rimraf=require(_0xfec8('0x1'));var zipdir=require(_0xfec8('0x2'));var jsonpatch=require(_0xfec8('0x3'));var rp=require('request-promise');var moment=require(_0xfec8('0x4'));var BPromise=require(_0xfec8('0x5'));var Mustache=require(_0xfec8('0x6'));var util=require(_0xfec8('0x7'));var path=require(_0xfec8('0x8'));var sox=require(_0xfec8('0x9'));var csv=require(_0xfec8('0xa'));var ejs=require(_0xfec8('0xb'));var fs=require('fs');var fs_extra=require(_0xfec8('0xc'));var _=require(_0xfec8('0xd'));var squel=require(_0xfec8('0xe'));var crypto=require('crypto');var jsforce=require(_0xfec8('0xf'));var deskjs=require(_0xfec8('0x10'));var toCsv=require('to-csv');var querystring=require(_0xfec8('0x11'));var Papa=require(_0xfec8('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfec8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xfec8('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfec8('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56a2d4,_0x37c176){_0x37c176=_0x37c176||0xcc;return function(_0x37fb9a){if(_0x37fb9a){return _0x56a2d4[_0xfec8('0x16')](_0x37c176);}return _0x56a2d4[_0xfec8('0x17')](_0x37c176)[_0xfec8('0x18')]();};}function respondWithResult(_0x35a690,_0x188a65){_0x188a65=_0x188a65||0xc8;return function(_0x4fb877){if(_0x4fb877){return _0x35a690[_0xfec8('0x17')](_0x188a65)[_0xfec8('0x19')](_0x4fb877);}};}function respondWithFilteredResult(_0x536fed,_0x242a8c){return function(_0x5be5b5){if(_0x5be5b5){var _0x208e79=typeof _0x242a8c[_0xfec8('0x1a')]===_0xfec8('0x1b')&&typeof _0x242a8c['limit']===_0xfec8('0x1b');var _0x4b00c4=_0x5be5b5[_0xfec8('0x1c')];var _0x3c0f65=_0x208e79?0x0:_0x242a8c['offset'];var _0x143d0b=_0x208e79?_0x5be5b5['count']:_0x242a8c['offset']+_0x242a8c[_0xfec8('0x1d')];var _0x4e143e;if(_0x143d0b>=_0x4b00c4){_0x143d0b=_0x4b00c4;_0x4e143e=0xc8;}else{_0x4e143e=0xce;}_0x536fed['status'](_0x4e143e);return _0x536fed[_0xfec8('0x1e')]('Content-Range',_0x3c0f65+'-'+_0x143d0b+'/'+_0x4b00c4)[_0xfec8('0x19')](_0x5be5b5);}return null;};}function patchUpdates(_0x50553a){return function(_0x1f8eab){try{jsonpatch[_0xfec8('0x1f')](_0x1f8eab,_0x50553a,!![]);}catch(_0x4cdaab){return BPromise[_0xfec8('0x20')](_0x4cdaab);}return _0x1f8eab['save']();};}function saveUpdates(_0x48c405,_0x5e01f6){return function(_0x2803b8){if(_0x2803b8){return _0x2803b8['update'](_0x48c405)[_0xfec8('0x21')](function(_0x3cbb5c){return _0x3cbb5c;});}return null;};}function removeEntity(_0x15e821,_0x4e6148){return function(_0x2ea5f3){if(_0x2ea5f3){return _0x2ea5f3['destroy']()[_0xfec8('0x21')](function(){_0x15e821[_0xfec8('0x17')](0xcc)[_0xfec8('0x18')]();});}};}function handleEntityNotFound(_0x50e4c2,_0x276e4f){return function(_0x2d097e){if(!_0x2d097e){_0x50e4c2['sendStatus'](0x194);}return _0x2d097e;};}function handleError(_0x465a13,_0x5d7a85){_0x5d7a85=_0x5d7a85||0x1f4;return function(_0x4f963d){logger[_0xfec8('0x22')](_0x4f963d[_0xfec8('0x23')]);if(_0x4f963d['name']){delete _0x4f963d['name'];}_0x465a13[_0xfec8('0x17')](_0x5d7a85)['send'](_0x4f963d);};}exports[_0xfec8('0x24')]=function(_0x46b1a3,_0x9a8efc){var _0xf3900b={},_0x3cb240={},_0x471cf8={'count':0x0,'rows':[]};var _0x1eb31c=_[_0xfec8('0x25')](db[_0xfec8('0x26')]['rawAttributes'],function(_0xefd549){return{'name':_0xefd549[_0xfec8('0x27')],'type':_0xefd549['type'][_0xfec8('0x28')]};});_0x3cb240[_0xfec8('0x29')]=_[_0xfec8('0x25')](_0x1eb31c,_0xfec8('0x2a'));_0x3cb240[_0xfec8('0x2b')]=_[_0xfec8('0x2c')](_0x46b1a3['query']);_0x3cb240[_0xfec8('0x2d')]=_['intersection'](_0x3cb240[_0xfec8('0x29')],_0x3cb240['query']);_0xf3900b[_0xfec8('0x2e')]=_[_0xfec8('0x2f')](_0x3cb240[_0xfec8('0x29')],qs['fields'](_0x46b1a3[_0xfec8('0x2b')]['fields']));_0xf3900b['attributes']=_0xf3900b['attributes'][_0xfec8('0x30')]?_0xf3900b[_0xfec8('0x2e')]:_0x3cb240[_0xfec8('0x29')];if(!_0x46b1a3['query'][_0xfec8('0x31')](_0xfec8('0x32'))){_0xf3900b['limit']=qs[_0xfec8('0x1d')](_0x46b1a3[_0xfec8('0x2b')][_0xfec8('0x1d')]);_0xf3900b[_0xfec8('0x1a')]=qs['offset'](_0x46b1a3[_0xfec8('0x2b')]['offset']);}_0xf3900b['order']=qs['sort'](_0x46b1a3['query'][_0xfec8('0x33')]);_0xf3900b['where']=qs[_0xfec8('0x2d')](_[_0xfec8('0x34')](_0x46b1a3[_0xfec8('0x2b')],_0x3cb240['filters']),_0x1eb31c);if(_0x46b1a3[_0xfec8('0x2b')][_0xfec8('0x35')]){_0xf3900b[_0xfec8('0x36')]=_[_0xfec8('0x37')](_0xf3900b['where'],{'$or':_[_0xfec8('0x25')](_0x1eb31c,function(_0x38b8d7){if(_0x38b8d7[_0xfec8('0x38')]!==_0xfec8('0x39')){var _0x303793={};_0x303793[_0x38b8d7[_0xfec8('0x2a')]]={'$like':'%'+_0x46b1a3[_0xfec8('0x2b')][_0xfec8('0x35')]+'%'};return _0x303793;}})});}_0xf3900b=_[_0xfec8('0x37')]({},_0xf3900b,_0x46b1a3[_0xfec8('0x3a')]);var _0x21fb18={'where':_0xf3900b[_0xfec8('0x36')]};return db[_0xfec8('0x26')]['count'](_0x21fb18)[_0xfec8('0x21')](function(_0xe12bd2){_0x471cf8[_0xfec8('0x1c')]=_0xe12bd2;if(_0x46b1a3[_0xfec8('0x2b')][_0xfec8('0x3b')]){_0xf3900b[_0xfec8('0x3c')]=[{'all':!![]}];}return db[_0xfec8('0x26')][_0xfec8('0x3d')](_0xf3900b);})[_0xfec8('0x21')](function(_0x5b4d34){_0x471cf8[_0xfec8('0x3e')]=_0x5b4d34;return _0x471cf8;})[_0xfec8('0x21')](respondWithFilteredResult(_0x9a8efc,_0xf3900b))[_0xfec8('0x3f')](handleError(_0x9a8efc,null));};exports[_0xfec8('0x40')]=function(_0xf7116,_0x466b91){var _0x3c8f4a={'raw':!![],'where':{'id':_0xf7116[_0xfec8('0x41')]['id']}},_0xc9ca72={};_0xc9ca72['model']=_['keys'](db[_0xfec8('0x26')]['rawAttributes']);_0xc9ca72[_0xfec8('0x2b')]=_[_0xfec8('0x2c')](_0xf7116[_0xfec8('0x2b')]);_0xc9ca72[_0xfec8('0x2d')]=_[_0xfec8('0x2f')](_0xc9ca72[_0xfec8('0x29')],_0xc9ca72[_0xfec8('0x2b')]);_0x3c8f4a[_0xfec8('0x2e')]=_['intersection'](_0xc9ca72[_0xfec8('0x29')],qs[_0xfec8('0x42')](_0xf7116[_0xfec8('0x2b')][_0xfec8('0x42')]));_0x3c8f4a[_0xfec8('0x2e')]=_0x3c8f4a['attributes'][_0xfec8('0x30')]?_0x3c8f4a[_0xfec8('0x2e')]:_0xc9ca72['model'];if(_0xf7116[_0xfec8('0x2b')][_0xfec8('0x3b')]){_0x3c8f4a[_0xfec8('0x3c')]=[{'all':!![]}];}_0x3c8f4a=_[_0xfec8('0x37')]({},_0x3c8f4a,_0xf7116[_0xfec8('0x3a')]);return db[_0xfec8('0x26')][_0xfec8('0x43')](_0x3c8f4a)['then'](handleEntityNotFound(_0x466b91,null))[_0xfec8('0x21')](respondWithResult(_0x466b91,null))[_0xfec8('0x3f')](handleError(_0x466b91,null));};exports[_0xfec8('0x44')]=function(_0x142627,_0x1c8545){return db[_0xfec8('0x26')][_0xfec8('0x44')](_0x142627[_0xfec8('0x45')],{})[_0xfec8('0x21')](respondWithResult(_0x1c8545,0xc9))[_0xfec8('0x3f')](handleError(_0x1c8545,null));};exports[_0xfec8('0x46')]=function(_0x31a462,_0x59f73b){if(_0x31a462['body']['id']){delete _0x31a462[_0xfec8('0x45')]['id'];}return db[_0xfec8('0x26')][_0xfec8('0x43')]({'where':{'id':_0x31a462[_0xfec8('0x41')]['id']}})[_0xfec8('0x21')](handleEntityNotFound(_0x59f73b,null))[_0xfec8('0x21')](saveUpdates(_0x31a462[_0xfec8('0x45')],null))[_0xfec8('0x21')](respondWithResult(_0x59f73b,null))[_0xfec8('0x3f')](handleError(_0x59f73b,null));};exports[_0xfec8('0x47')]=function(_0x1b5989,_0x2dfc98){return db[_0xfec8('0x26')][_0xfec8('0x43')]({'where':{'id':_0x1b5989['params']['id']}})[_0xfec8('0x21')](handleEntityNotFound(_0x2dfc98,null))[_0xfec8('0x21')](removeEntity(_0x2dfc98,null))[_0xfec8('0x3f')](handleError(_0x2dfc98,null));};
\ No newline at end of file
index 5f75b7d..e538f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88bb=['api','moment','bluebird','request-promise','../../config/environment','exports','define','SalesforceField','int_salesforce_fields','FieldId','lodash','util','../../config/logger'];(function(_0x13cab0,_0x14d825){var _0x38804f=function(_0x1bffaf){while(--_0x1bffaf){_0x13cab0['push'](_0x13cab0['shift']());}};_0x38804f(++_0x14d825);}(_0x88bb,0xda));var _0xb88b=function(_0x4dc5ca,_0x10f670){_0x4dc5ca=_0x4dc5ca-0x0;var _0x5e094d=_0x88bb[_0x4dc5ca];return _0x5e094d;};'use strict';var _=require(_0xb88b('0x0'));var util=require(_0xb88b('0x1'));var logger=require(_0xb88b('0x2'))(_0xb88b('0x3'));var moment=require(_0xb88b('0x4'));var BPromise=require(_0xb88b('0x5'));var rp=require(_0xb88b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb88b('0x7'));var attributes=require('./intSalesforceField.attributes');module[_0xb88b('0x8')]=function(_0x22aa32,_0x1d8942){return _0x22aa32[_0xb88b('0x9')](_0xb88b('0xa'),attributes,{'tableName':_0xb88b('0xb'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':['idField',_0xb88b('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3724=['FieldId','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','define','SalesforceField','salesforce_unique_index'];(function(_0x91cc04,_0x48e6a6){var _0x26b085=function(_0x2720bf){while(--_0x2720bf){_0x91cc04['push'](_0x91cc04['shift']());}};_0x26b085(++_0x48e6a6);}(_0x3724,0x76));var _0x4372=function(_0x275293,_0x31bf61){_0x275293=_0x275293-0x0;var _0x539b28=_0x3724[_0x275293];return _0x539b28;};'use strict';var _=require(_0x4372('0x0'));var util=require('util');var logger=require(_0x4372('0x1'))(_0x4372('0x2'));var moment=require(_0x4372('0x3'));var BPromise=require('bluebird');var rp=require(_0x4372('0x4'));var fs=require('fs');var path=require(_0x4372('0x5'));var rimraf=require(_0x4372('0x6'));var config=require(_0x4372('0x7'));var attributes=require(_0x4372('0x8'));module['exports']=function(_0x5aa874,_0x522c16){return _0x5aa874[_0x4372('0x9')](_0x4372('0xa'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x4372('0xb'),'fields':['idField',_0x4372('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 433adfa..193082f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec02=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xec02,0x17d));var _0x2ec0=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xec02[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x2ec0('0x0'));var util=require(_0x2ec0('0x1'));var moment=require('moment');var BPromise=require(_0x2ec0('0x2'));var rs=require(_0x2ec0('0x3'));var fs=require('fs');var Redis=require(_0x2ec0('0x4'));var db=require(_0x2ec0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2ec0('0x6'))(_0x2ec0('0x7'));var config=require(_0x2ec0('0x8'));var jayson=require(_0x2ec0('0x9'));var client=jayson[_0x2ec0('0xa')][_0x2ec0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x586c9f,_0xe63a4a,_0x199bc5){return new BPromise(function(_0x2e598c,_0x4a73a1){return client[_0x2ec0('0xc')](_0x586c9f,_0x199bc5)[_0x2ec0('0xd')](function(_0x9ce8f6){logger[_0x2ec0('0xe')](_0x2ec0('0xf'),_0xe63a4a,_0x2ec0('0x10'));logger[_0x2ec0('0x11')](_0x2ec0('0x12'),_0xe63a4a,'request\x20sent',JSON[_0x2ec0('0x13')](_0x9ce8f6));if(_0x9ce8f6['error']){if(_0x9ce8f6[_0x2ec0('0x14')]['code']===0x1f4){logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);return _0x4a73a1(_0x9ce8f6['error'][_0x2ec0('0x15')]);}logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);return _0x2e598c(_0x9ce8f6[_0x2ec0('0x14')][_0x2ec0('0x15')]);}else{logger[_0x2ec0('0xe')](_0x2ec0('0xf'),_0xe63a4a,_0x2ec0('0x10'));_0x2e598c(_0x9ce8f6[_0x2ec0('0x16')][_0x2ec0('0x15')]);}})[_0x2ec0('0x17')](function(_0x166781){logger[_0x2ec0('0x14')](_0x2ec0('0xf'),_0xe63a4a,_0x166781);_0x4a73a1(_0x166781);});});}
\ No newline at end of file
+var _0x8e0b=['request','then','info','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x8e0b,0x139));var _0xb8e0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e0b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb8e0('0x0'));var util=require(_0xb8e0('0x1'));var moment=require(_0xb8e0('0x2'));var BPromise=require(_0xb8e0('0x3'));var rs=require(_0xb8e0('0x4'));var fs=require('fs');var Redis=require(_0xb8e0('0x5'));var db=require(_0xb8e0('0x6'))['db'];var utils=require(_0xb8e0('0x7'));var logger=require(_0xb8e0('0x8'))(_0xb8e0('0x9'));var config=require('../../config/environment');var jayson=require(_0xb8e0('0xa'));var client=jayson[_0xb8e0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5cd363,_0x2b89c5,_0x23d9ce){return new BPromise(function(_0x28be20,_0x26a365){return client[_0xb8e0('0xc')](_0x5cd363,_0x23d9ce)[_0xb8e0('0xd')](function(_0x303a0d){logger[_0xb8e0('0xe')]('SalesforceField,\x20%s,\x20%s',_0x2b89c5,_0xb8e0('0xf'));logger[_0xb8e0('0x10')](_0xb8e0('0x11'),_0x2b89c5,_0xb8e0('0xf'),JSON[_0xb8e0('0x12')](_0x303a0d));if(_0x303a0d['error']){if(_0x303a0d[_0xb8e0('0x13')][_0xb8e0('0x14')]===0x1f4){logger[_0xb8e0('0x13')](_0xb8e0('0x15'),_0x2b89c5,_0x303a0d[_0xb8e0('0x13')][_0xb8e0('0x16')]);return _0x26a365(_0x303a0d[_0xb8e0('0x13')][_0xb8e0('0x16')]);}logger['error'](_0xb8e0('0x15'),_0x2b89c5,_0x303a0d[_0xb8e0('0x13')][_0xb8e0('0x16')]);return _0x28be20(_0x303a0d[_0xb8e0('0x13')][_0xb8e0('0x16')]);}else{logger[_0xb8e0('0xe')](_0xb8e0('0x15'),_0x2b89c5,_0xb8e0('0xf'));_0x28be20(_0x303a0d[_0xb8e0('0x17')][_0xb8e0('0x16')]);}})[_0xb8e0('0x18')](function(_0x5e8c7f){logger[_0xb8e0('0x13')](_0xb8e0('0x15'),_0x2b89c5,_0x5e8c7f);_0x26a365(_0x5e8c7f);});});}
\ No newline at end of file
index d7085cf..809dcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd757=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','destroy'];(function(_0x1abeb2,_0x79f462){var _0x48da20=function(_0x42a90b){while(--_0x42a90b){_0x1abeb2['push'](_0x1abeb2['shift']());}};_0x48da20(++_0x79f462);}(_0xd757,0x1e5));var _0x7d75=function(_0x16c644,_0x197403){_0x16c644=_0x16c644-0x0;var _0x5a1b24=_0xd757[_0x16c644];return _0x5a1b24;};'use strict';var multer=require(_0x7d75('0x0'));var util=require(_0x7d75('0x1'));var path=require(_0x7d75('0x2'));var timeout=require(_0x7d75('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7d75('0x4'));var auth=require(_0x7d75('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7d75('0x6'));var controller=require(_0x7d75('0x7'));router[_0x7d75('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7d75('0x8')](_0x7d75('0x9'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xb')]);router[_0x7d75('0x8')](_0x7d75('0xc'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xd')]);router[_0x7d75('0x8')](_0x7d75('0xe'),auth[_0x7d75('0xa')](),controller[_0x7d75('0xf')]);router[_0x7d75('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7d75('0x10')](_0x7d75('0xc'),auth[_0x7d75('0xa')](),controller['addConfiguration']);router[_0x7d75('0x11')](_0x7d75('0x9'),auth['isAuthenticated'](),controller[_0x7d75('0x12')]);router[_0x7d75('0x13')](_0x7d75('0x9'),auth[_0x7d75('0xa')](),controller[_0x7d75('0x14')]);module[_0x7d75('0x15')]=router;
\ No newline at end of file
+var _0xbb98=['put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','post','create'];(function(_0x276468,_0x29685a){var _0x36dc3a=function(_0x291f0a){while(--_0x291f0a){_0x276468['push'](_0x276468['shift']());}};_0x36dc3a(++_0x29685a);}(_0xbb98,0x140));var _0x8bb9=function(_0x25701b,_0x2a6976){_0x25701b=_0x25701b-0x0;var _0x3a8a2c=_0xbb98[_0x25701b];return _0x3a8a2c;};'use strict';var multer=require(_0x8bb9('0x0'));var util=require(_0x8bb9('0x1'));var path=require(_0x8bb9('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8bb9('0x3')]();var fs_extra=require(_0x8bb9('0x4'));var auth=require(_0x8bb9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8bb9('0x6'));var controller=require('./intServicenowAccount.controller');router[_0x8bb9('0x7')]('/',auth[_0x8bb9('0x8')](),controller[_0x8bb9('0x9')]);router[_0x8bb9('0x7')](_0x8bb9('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x8bb9('0x7')](_0x8bb9('0xb'),auth[_0x8bb9('0x8')](),controller[_0x8bb9('0xc')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x8bb9('0xd')]);router[_0x8bb9('0xe')]('/',auth[_0x8bb9('0x8')](),controller[_0x8bb9('0xf')]);router['post']('/:id/configurations',auth[_0x8bb9('0x8')](),controller['addConfiguration']);router[_0x8bb9('0x10')](_0x8bb9('0xa'),auth['isAuthenticated'](),controller[_0x8bb9('0x11')]);router[_0x8bb9('0x12')](_0x8bb9('0xa'),auth[_0x8bb9('0x8')](),controller[_0x8bb9('0x13')]);module[_0x8bb9('0x14')]=router;
\ No newline at end of file
index a493a0a..cc57904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9f9=['sequelize','exports','STRING','remoteUri'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb9f9,0x64));var _0x9b9f=function(_0x52b360,_0x4f7b42){_0x52b360=_0x52b360-0x0;var _0x29e22b=_0xb9f9[_0x52b360];return _0x29e22b;};'use strict';var Sequelize=require(_0x9b9f('0x0'));module[_0x9b9f('0x1')]={'name':{'type':Sequelize[_0x9b9f('0x2')]},'description':{'type':Sequelize[_0x9b9f('0x2')]},'username':{'type':Sequelize[_0x9b9f('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9b9f('0x2')]},'remoteUri':{'type':Sequelize[_0x9b9f('0x2')],'unique':_0x9b9f('0x3')},'serverUrl':{'type':Sequelize[_0x9b9f('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x9fd3=['STRING','remoteUri','sequelize','exports'];(function(_0x12d033,_0x25fa2f){var _0x3b4e80=function(_0x46c1f4){while(--_0x46c1f4){_0x12d033['push'](_0x12d033['shift']());}};_0x3b4e80(++_0x25fa2f);}(_0x9fd3,0x1be));var _0x39fd=function(_0x385789,_0x5bd784){_0x385789=_0x385789-0x0;var _0x7b391b=_0x9fd3[_0x385789];return _0x7b391b;};'use strict';var Sequelize=require(_0x39fd('0x0'));module[_0x39fd('0x1')]={'name':{'type':Sequelize[_0x39fd('0x2')]},'description':{'type':Sequelize[_0x39fd('0x2')]},'username':{'type':Sequelize[_0x39fd('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x39fd('0x2')]},'email':{'type':Sequelize[_0x39fd('0x2')]},'remoteUri':{'type':Sequelize[_0x39fd('0x2')],'unique':_0x39fd('0x3')},'serverUrl':{'type':Sequelize[_0x39fd('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0ad9506..2e12bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c1=['intersection','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','include','findAll','fields','find','create','body','catch','params','destroy','findOne','options','nolimit','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','type','Descriptions','getDescriptions','channel','ServicenowConfiguration','ServicenowField','getFields','made_sla','hold_reason','knowledge','close_code','incident_state','severity','category','parent','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','opened_by','sys_created_on','state','closed_at','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','notify','sys_class_name','follow_up','contact_type','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','location','username','email','remoteUri','serverUrl','slice','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','all','TCL:\x20_object','log','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','test','statusCode','error','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','push','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','stack','name','send','index','map','ServicenowAccount','rawAttributes','fieldName','model','query','keys','filters'];(function(_0x84ff0c,_0x1f0859){var _0x108602=function(_0x27daae){while(--_0x27daae){_0x84ff0c['push'](_0x84ff0c['shift']());}};_0x108602(++_0x1f0859);}(_0xf2c1,0x84));var _0x1f2c=function(_0x4e128b,_0x3c9313){_0x4e128b=_0x4e128b-0x0;var _0x1020d7=_0xf2c1[_0x4e128b];return _0x1020d7;};'use strict';var emlformat=require(_0x1f2c('0x0'));var rimraf=require(_0x1f2c('0x1'));var zipdir=require(_0x1f2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f2c('0x3'));var moment=require(_0x1f2c('0x4'));var BPromise=require(_0x1f2c('0x5'));var Mustache=require(_0x1f2c('0x6'));var util=require(_0x1f2c('0x7'));var path=require('path');var sox=require(_0x1f2c('0x8'));var csv=require(_0x1f2c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f2c('0xa'));var _=require(_0x1f2c('0xb'));var squel=require(_0x1f2c('0xc'));var crypto=require(_0x1f2c('0xd'));var jsforce=require(_0x1f2c('0xe'));var deskjs=require(_0x1f2c('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1f2c('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1f2c('0x11'));var as=require(_0x1f2c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1f2c('0x13'))(_0x1f2c('0x14'));var utils=require(_0x1f2c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1f2c('0x16'));var db=require(_0x1f2c('0x17'))['db'];var integrations=require(_0x1f2c('0x18'));function respondWithStatusCode(_0x121e58,_0xd55c1c){_0xd55c1c=_0xd55c1c||0xcc;return function(_0x2de718){if(_0x2de718){return _0x121e58[_0x1f2c('0x19')](_0xd55c1c);}return _0x121e58[_0x1f2c('0x1a')](_0xd55c1c)[_0x1f2c('0x1b')]();};}function respondWithResult(_0x4c093c,_0x5757b0){_0x5757b0=_0x5757b0||0xc8;return function(_0x584057){if(_0x584057){return _0x4c093c[_0x1f2c('0x1a')](_0x5757b0)[_0x1f2c('0x1c')](_0x584057);}};}function respondWithFilteredResult(_0x5beeef,_0x1ff996){return function(_0x43da31){if(_0x43da31){var _0x545d3c=typeof _0x1ff996[_0x1f2c('0x1d')]===_0x1f2c('0x1e')&&typeof _0x1ff996[_0x1f2c('0x1f')]===_0x1f2c('0x1e');var _0x5751b9=_0x43da31[_0x1f2c('0x20')];var _0x191fa4=_0x545d3c?0x0:_0x1ff996[_0x1f2c('0x1d')];var _0x49afa5=_0x545d3c?_0x43da31[_0x1f2c('0x20')]:_0x1ff996['offset']+_0x1ff996['limit'];var _0x39ed98;if(_0x49afa5>=_0x5751b9){_0x49afa5=_0x5751b9;_0x39ed98=0xc8;}else{_0x39ed98=0xce;}_0x5beeef['status'](_0x39ed98);return _0x5beeef[_0x1f2c('0x21')]('Content-Range',_0x191fa4+'-'+_0x49afa5+'/'+_0x5751b9)[_0x1f2c('0x1c')](_0x43da31);}return null;};}function patchUpdates(_0x5c4246){return function(_0x376bf9){try{jsonpatch[_0x1f2c('0x22')](_0x376bf9,_0x5c4246,!![]);}catch(_0x1896f7){return BPromise[_0x1f2c('0x23')](_0x1896f7);}return _0x376bf9['save']();};}function saveUpdates(_0x26684f,_0x5ae781){return function(_0x331a88){if(_0x331a88){return _0x331a88[_0x1f2c('0x24')](_0x26684f)[_0x1f2c('0x25')](function(_0x1653c2){return _0x1653c2;});}return null;};}function removeEntity(_0x5932cc,_0x58a978){return function(_0x2c401f){if(_0x2c401f){return _0x2c401f['destroy']()[_0x1f2c('0x25')](function(){_0x5932cc[_0x1f2c('0x1a')](0xcc)[_0x1f2c('0x1b')]();});}};}function handleEntityNotFound(_0x4c14ee,_0x8bbc8c){return function(_0x559c44){if(!_0x559c44){_0x4c14ee[_0x1f2c('0x19')](0x194);}return _0x559c44;};}function handleError(_0x1da025,_0x4da7a0){_0x4da7a0=_0x4da7a0||0x1f4;return function(_0x58d406){logger['error'](_0x58d406[_0x1f2c('0x26')]);if(_0x58d406[_0x1f2c('0x27')]){delete _0x58d406[_0x1f2c('0x27')];}_0x1da025['status'](_0x4da7a0)[_0x1f2c('0x28')](_0x58d406);};}exports[_0x1f2c('0x29')]=function(_0x502502,_0x39ae74){var _0x4302f2={},_0x9baa22={},_0x1f54ac={'count':0x0,'rows':[]};var _0x151b05=_[_0x1f2c('0x2a')](db[_0x1f2c('0x2b')][_0x1f2c('0x2c')],function(_0x11e560){return{'name':_0x11e560[_0x1f2c('0x2d')],'type':_0x11e560['type']['key']};});_0x9baa22[_0x1f2c('0x2e')]=_[_0x1f2c('0x2a')](_0x151b05,_0x1f2c('0x27'));_0x9baa22[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x502502[_0x1f2c('0x2f')]);_0x9baa22[_0x1f2c('0x31')]=_[_0x1f2c('0x32')](_0x9baa22[_0x1f2c('0x2e')],_0x9baa22[_0x1f2c('0x2f')]);_0x4302f2['attributes']=_[_0x1f2c('0x32')](_0x9baa22['model'],qs['fields'](_0x502502[_0x1f2c('0x2f')]['fields']));_0x4302f2['attributes']=_0x4302f2[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x4302f2[_0x1f2c('0x33')]:_0x9baa22[_0x1f2c('0x2e')];if(!_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x35')]('nolimit')){_0x4302f2['limit']=qs[_0x1f2c('0x1f')](_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x1f')]);_0x4302f2[_0x1f2c('0x1d')]=qs[_0x1f2c('0x1d')](_0x502502[_0x1f2c('0x2f')]['offset']);}_0x4302f2[_0x1f2c('0x36')]=qs['sort'](_0x502502[_0x1f2c('0x2f')][_0x1f2c('0x37')]);_0x4302f2[_0x1f2c('0x38')]=qs[_0x1f2c('0x31')](_['pick'](_0x502502[_0x1f2c('0x2f')],_0x9baa22[_0x1f2c('0x31')]),_0x151b05);if(_0x502502['query'][_0x1f2c('0x39')]){_0x4302f2[_0x1f2c('0x38')]=_[_0x1f2c('0x3a')](_0x4302f2[_0x1f2c('0x38')],{'$or':_[_0x1f2c('0x2a')](_0x151b05,function(_0x508567){if(_0x508567['type']!==_0x1f2c('0x3b')){var _0x3cab96={};_0x3cab96[_0x508567[_0x1f2c('0x27')]]={'$like':'%'+_0x502502['query'][_0x1f2c('0x39')]+'%'};return _0x3cab96;}})});}_0x4302f2=_[_0x1f2c('0x3a')]({},_0x4302f2,_0x502502['options']);var _0x330c4d={'where':_0x4302f2[_0x1f2c('0x38')]};return db['ServicenowAccount'][_0x1f2c('0x20')](_0x330c4d)['then'](function(_0x3824b9){_0x1f54ac[_0x1f2c('0x20')]=_0x3824b9;if(_0x502502[_0x1f2c('0x2f')]['includeAll']){_0x4302f2[_0x1f2c('0x3c')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x1f2c('0x3d')](_0x4302f2);})[_0x1f2c('0x25')](function(_0x21345e){_0x1f54ac['rows']=_0x21345e;return _0x1f54ac;})[_0x1f2c('0x25')](respondWithFilteredResult(_0x39ae74,_0x4302f2))['catch'](handleError(_0x39ae74,null));};exports['show']=function(_0x14c617,_0x4c1416){var _0x5ea228={'raw':![],'where':{'id':_0x14c617['params']['id']}},_0x1a2bf1={};_0x1a2bf1[_0x1f2c('0x2e')]=_[_0x1f2c('0x30')](db['ServicenowAccount'][_0x1f2c('0x2c')]);_0x1a2bf1[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x14c617['query']);_0x1a2bf1[_0x1f2c('0x31')]=_[_0x1f2c('0x32')](_0x1a2bf1[_0x1f2c('0x2e')],_0x1a2bf1[_0x1f2c('0x2f')]);_0x5ea228['attributes']=_['intersection'](_0x1a2bf1['model'],qs[_0x1f2c('0x3e')](_0x14c617[_0x1f2c('0x2f')][_0x1f2c('0x3e')]));_0x5ea228['attributes']=_0x5ea228[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x5ea228[_0x1f2c('0x33')]:_0x1a2bf1[_0x1f2c('0x2e')];if(_0x14c617[_0x1f2c('0x2f')]['includeAll']){_0x5ea228[_0x1f2c('0x3c')]=[{'all':!![]}];}_0x5ea228=_['merge']({},_0x5ea228,_0x14c617['options']);return db[_0x1f2c('0x2b')][_0x1f2c('0x3f')](_0x5ea228)[_0x1f2c('0x25')](handleEntityNotFound(_0x4c1416,null))[_0x1f2c('0x25')](respondWithResult(_0x4c1416,null))['catch'](handleError(_0x4c1416,null));};exports[_0x1f2c('0x40')]=function(_0xfb9df5,_0x2eec15){return db[_0x1f2c('0x2b')]['create'](_0xfb9df5[_0x1f2c('0x41')],{})['then'](respondWithResult(_0x2eec15,0xc9))[_0x1f2c('0x42')](handleError(_0x2eec15,null));};exports['update']=function(_0x15171e,_0x56335e){if(_0x15171e[_0x1f2c('0x41')]['id']){delete _0x15171e[_0x1f2c('0x41')]['id'];}return db[_0x1f2c('0x2b')]['find']({'where':{'id':_0x15171e[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x56335e,null))[_0x1f2c('0x25')](saveUpdates(_0x15171e[_0x1f2c('0x41')],null))[_0x1f2c('0x25')](respondWithResult(_0x56335e,null))[_0x1f2c('0x42')](handleError(_0x56335e,null));};exports[_0x1f2c('0x44')]=function(_0xfe27b2,_0x5cb439){return db['ServicenowAccount'][_0x1f2c('0x3f')]({'where':{'id':_0xfe27b2['params']['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x5cb439,null))[_0x1f2c('0x25')](removeEntity(_0x5cb439,null))[_0x1f2c('0x42')](handleError(_0x5cb439,null));};exports['getConfigurations']=function(_0x932721,_0x2a1db5,_0x964c0f){var _0x2f2f87={};var _0x2e48cb={};var _0x2a96d7;var _0x545df1;return db[_0x1f2c('0x2b')][_0x1f2c('0x45')]({'where':{'id':_0x932721[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x2a1db5,null))[_0x1f2c('0x25')](function(_0x16e49c){if(_0x16e49c){_0x2a96d7=_0x16e49c;_0x2e48cb[_0x1f2c('0x2e')]=_['keys'](db['ServicenowConfiguration'][_0x1f2c('0x2c')]);_0x2e48cb[_0x1f2c('0x2f')]=_[_0x1f2c('0x30')](_0x932721['query']);_0x2e48cb['filters']=_['intersection'](_0x2e48cb[_0x1f2c('0x2e')],_0x2e48cb[_0x1f2c('0x2f')]);_0x2f2f87[_0x1f2c('0x33')]=_[_0x1f2c('0x32')](_0x2e48cb['model'],qs[_0x1f2c('0x3e')](_0x932721['query'][_0x1f2c('0x3e')]));_0x2f2f87[_0x1f2c('0x33')]=_0x2f2f87[_0x1f2c('0x33')][_0x1f2c('0x34')]?_0x2f2f87[_0x1f2c('0x33')]:_0x2e48cb[_0x1f2c('0x2e')];_0x2f2f87[_0x1f2c('0x36')]=qs['sort'](_0x932721['query'][_0x1f2c('0x37')]);_0x2f2f87[_0x1f2c('0x38')]=qs[_0x1f2c('0x31')](_['pick'](_0x932721[_0x1f2c('0x2f')],_0x2e48cb[_0x1f2c('0x31')]));if(_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x39')]){_0x2f2f87[_0x1f2c('0x38')]=_[_0x1f2c('0x3a')](_0x2f2f87['where'],{'$or':_[_0x1f2c('0x2a')](_0x2f2f87[_0x1f2c('0x33')],function(_0x11f9a2){var _0x5cee9e={};_0x5cee9e[_0x11f9a2]={'$like':'%'+_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x39')]+'%'};return _0x5cee9e;})});}_0x2f2f87=_[_0x1f2c('0x3a')]({},_0x2f2f87,_0x932721[_0x1f2c('0x46')]);return _0x2a96d7['getConfigurations'](_0x2f2f87);}})[_0x1f2c('0x25')](function(_0x2d7ea0){if(_0x2d7ea0){_0x545df1=_0x2d7ea0[_0x1f2c('0x34')];if(!_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x35')](_0x1f2c('0x47'))){_0x2f2f87[_0x1f2c('0x1f')]=qs[_0x1f2c('0x1f')](_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x1f')]);_0x2f2f87[_0x1f2c('0x1d')]=qs[_0x1f2c('0x1d')](_0x932721[_0x1f2c('0x2f')][_0x1f2c('0x1d')]);}return _0x2a96d7[_0x1f2c('0x48')](_0x2f2f87);}})['then'](function(_0x255197){if(_0x255197){return _0x255197?{'count':_0x545df1,'rows':_0x255197}:null;}})[_0x1f2c('0x25')](respondWithResult(_0x2a1db5,null))[_0x1f2c('0x42')](handleError(_0x2a1db5,null));};exports[_0x1f2c('0x49')]=function(_0x581c77,_0x10fdcd,_0x5632d6){if(_0x581c77[_0x1f2c('0x41')]['id']){delete _0x581c77[_0x1f2c('0x41')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x581c77[_0x1f2c('0x43')]['id']}})[_0x1f2c('0x25')](handleEntityNotFound(_0x10fdcd,null))[_0x1f2c('0x25')](function(_0x1d4d2b){if(_0x1d4d2b){_0x581c77['body'][_0x1f2c('0x4a')]=_0x1d4d2b['id'];_0x581c77['body'][_0x1f2c('0x4b')]=integrations[_0x1f2c('0x4c')](_0x581c77[_0x1f2c('0x41')]['channel'],_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4d')]);_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4e')]=integrations[_0x1f2c('0x4f')](_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x50')],_0x581c77[_0x1f2c('0x41')][_0x1f2c('0x4d')]);return db[_0x1f2c('0x51')][_0x1f2c('0x40')](_0x581c77[_0x1f2c('0x41')],{'include':[{'model':db['ServicenowField'],'as':_0x1f2c('0x4b')},{'model':db[_0x1f2c('0x52')],'as':_0x1f2c('0x4e')}]});}return null;})[_0x1f2c('0x25')](respondWithResult(_0x10fdcd,null))[_0x1f2c('0x42')](handleError(_0x10fdcd,null));};exports[_0x1f2c('0x53')]=function(_0x43b54f,_0x318180,_0x39da8f){var _0x277f30=[_0x1f2c('0x54'),_0x1f2c('0x55'),_0x1f2c('0x56'),'subcategory',_0x1f2c('0x57'),'notify',_0x1f2c('0x58'),_0x1f2c('0x59'),_0x1f2c('0x5a')];var _0x55991b=[_0x1f2c('0x5b'),_0x1f2c('0x54'),'caused_by',_0x1f2c('0x5c'),_0x1f2c('0x5d'),_0x1f2c('0x5e'),_0x1f2c('0x5f'),_0x1f2c('0x55'),_0x1f2c('0x60'),_0x1f2c('0x61'),_0x1f2c('0x62'),'sys_updated_by',_0x1f2c('0x63'),'user_input',_0x1f2c('0x64'),'sys_domain',_0x1f2c('0x65'),'sys_created_by',_0x1f2c('0x56'),'order','calendar_stc',_0x1f2c('0x66'),'cmdb_ci',_0x1f2c('0x67'),_0x1f2c('0x68'),_0x1f2c('0x69'),_0x1f2c('0x6a'),_0x1f2c('0x6b'),_0x1f2c('0x6c'),_0x1f2c('0x6d'),'rfc',_0x1f2c('0x6e'),_0x1f2c('0x6f'),_0x1f2c('0x70'),_0x1f2c('0x71'),_0x1f2c('0x72'),_0x1f2c('0x73'),_0x1f2c('0x74'),_0x1f2c('0x75'),'caller_id',_0x1f2c('0x76'),'subcategory',_0x1f2c('0x77'),_0x1f2c('0x78'),_0x1f2c('0x57'),_0x1f2c('0x79'),_0x1f2c('0x7a'),_0x1f2c('0x7b'),_0x1f2c('0x7c'),_0x1f2c('0x7d'),_0x1f2c('0x7e'),_0x1f2c('0x7f'),_0x1f2c('0x80'),_0x1f2c('0x81'),_0x1f2c('0x82'),'close_notes','closed_by',_0x1f2c('0x83'),'parent_incident','sys_id',_0x1f2c('0x84'),_0x1f2c('0x85'),'incident_state','urgency',_0x1f2c('0x86'),_0x1f2c('0x87'),_0x1f2c('0x88'),_0x1f2c('0x89'),_0x1f2c('0x8a'),_0x1f2c('0x59'),_0x1f2c('0x8b'),_0x1f2c('0x8c'),'approval',_0x1f2c('0x8d'),_0x1f2c('0x8e'),_0x1f2c('0x8f'),_0x1f2c('0x90'),_0x1f2c('0x91'),'escalation','upon_approval',_0x1f2c('0x92'),_0x1f2c('0x93'),_0x1f2c('0x5a')];var _0x4744a8='';var _0x1bffc2='';var _0x566dc4=[];var _0x419746='';var _0x5f4b41='';var _0x4183cc=[];var _0x307e34='';var _0x5ccc7b='';var _0x7a6286={};var _0x277c18='';return db[_0x1f2c('0x2b')]['findOne']({'where':{'id':_0x43b54f['params']['id']},'attributes':['id',_0x1f2c('0x94'),'password',_0x1f2c('0x95'),_0x1f2c('0x96'),_0x1f2c('0x97')]})[_0x1f2c('0x25')](handleEntityNotFound(_0x318180,null))['then'](function(_0x1787b4){if(_0x1787b4){_0x277c18=_0x1787b4[_0x1f2c('0x96')];var _0x59f261=_0x277c18[_0x1f2c('0x98')](-0x1);if(_0x59f261==='/'){_0x277c18=_0x277c18['substring'](0x0,_0x277c18['lastIndexOf'](_0x59f261));}_0x5ccc7b=util[_0x1f2c('0x99')]('%s/api/now/doc/table/schema/',_0x277c18);_0x307e34=util['format'](_0x1f2c('0x9a'),_0x277c18);_0x7a6286={'user':_0x1787b4[_0x1f2c('0x94')],'pass':_0x1787b4['password']};var _0x4100c7={'method':_0x1f2c('0x9b'),'uri':_0x5ccc7b+_0x1f2c('0x9c'),'auth':_0x7a6286,'json':!![]};return rp(_0x4100c7);}})[_0x1f2c('0x25')](function(_0x56fa15){if(_0x56fa15[_0x1f2c('0x9d')][_0x1f2c('0x34')]>0x0){_0x4744a8=_0x56fa15[_0x1f2c('0x9d')];}console['log'](_0x1f2c('0x9e'),_0x4744a8);_0x4183cc=[];_0x1bffc2=Object[_0x1f2c('0x9f')]([],_0x4744a8);_[_0x1f2c('0xa0')](_0x1bffc2,function(_0x497860){return!_0x277f30[_0x1f2c('0xa1')](_0x497860[_0x1f2c('0x27')]);});_0x1bffc2[_0x1f2c('0xa2')](function(_0x246086){var _0xf525de=createFieldObject(_0x307e34,_0x7a6286,_0x246086[_0x1f2c('0xa3')],_0x246086[_0x1f2c('0x27')],_0x246086[_0x1f2c('0xa4')],![]);_0x4183cc['push'](_0xf525de);});return Promise[_0x1f2c('0xa5')](_0x4183cc);})[_0x1f2c('0x25')](function(_0x93b89b){_0x566dc4=_0x93b89b;_0x419746=Object['assign']([],_0x4744a8);console['log'](_0x1f2c('0xa6'),_0x4744a8);_[_0x1f2c('0xa0')](_0x419746,function(_0x266b2f){return _0x55991b[_0x1f2c('0xa1')](_0x266b2f[_0x1f2c('0x27')]);});console[_0x1f2c('0xa7')](_0x1f2c('0xa8'),_0x419746);_0x4183cc=[];_0x419746['forEach'](function(_0x54460c){var _0x2d1d5a=createFieldObject(_0x307e34,_0x7a6286,_0x54460c[_0x1f2c('0xa3')],_0x54460c[_0x1f2c('0x27')],_0x54460c[_0x1f2c('0xa4')],!![]);_0x4183cc['push'](_0x2d1d5a);});return Promise[_0x1f2c('0xa5')](_0x4183cc);})['then'](function(_0x516174){_0x5f4b41=_0x516174;var _0x57f83b=_0x566dc4[_0x1f2c('0xa9')](_0x5f4b41);return{'count':_0x57f83b['length'],'rows':_0x57f83b};})[_0x1f2c('0x25')](respondWithResult(_0x318180,null))[_0x1f2c('0x42')](function(_0x1acb7d){console[_0x1f2c('0xa7')]('ServiceNow\x20error:\x20'+_0x1acb7d);var _0x4e8ff5=_0x43b54f['query'][_0x1f2c('0xaa')]?0x1f4:_0x1acb7d[_0x1f2c('0xab')]||0x1f4;logger[_0x1f2c('0xac')](_0x1acb7d[_0x1f2c('0x26')]);delete _0x1acb7d['name'];if(_0x4e8ff5===0x191){_0x4e8ff5=0x190;}_0x318180[_0x1f2c('0x1a')](_0x4e8ff5)[_0x1f2c('0x28')](_0x43b54f['query'][_0x1f2c('0xaa')]?{'message':_0x1f2c('0xad'),'statusCode':_0x1acb7d[_0x1f2c('0xab')]}:_0x1acb7d);});};function createFieldObject(_0x50b63a,_0x2cf52f,_0x59c194,_0x370f57,_0x1d37f7,_0x635153){return new Promise(function(_0x1a978b,_0x346c96){var _0x2671ca={'id':_0x370f57,'name':_0x1d37f7,'custom':_0x635153};if(_0x59c194===_0x1f2c('0xae')){_0x2671ca[_0x1f2c('0x46')]=[{'name':_0x1f2c('0xaf'),'value':_0x1f2c('0xb0')},{'name':_0x1f2c('0xb1'),'value':_0x1f2c('0xb2')}];_0x1a978b(_0x2671ca);}else{var _0x1b7327={'method':'GET','uri':_0x50b63a+_0x1f2c('0xb3')+_0x370f57,'auth':_0x2cf52f,'json':!![]};return rp(_0x1b7327)[_0x1f2c('0x25')](function(_0x123190){var _0x52c69a=[];if(_0x123190['result'][_0x1f2c('0x34')]>0x0){_0x123190[_0x1f2c('0x9d')][_0x1f2c('0xa2')](function(_0x1dad2b){if(_0x1dad2b['inactive']===_0x1f2c('0xb2')){var _0x262168={'name':_0x1dad2b[_0x1f2c('0xa4')],'value':_0x1dad2b[_0x1f2c('0xb4')]};_0x52c69a[_0x1f2c('0xb5')](_0x262168);}});}_0x2671ca['options']=_0x52c69a;if(_0x2671ca[_0x1f2c('0x46')][_0x1f2c('0x34')]>0x0){_0x1a978b(_0x2671ca);}else{if(_0x635153==![]){_0x1a978b();}else{_0x1a978b(_0x2671ca);}}});}});}
\ No newline at end of file
+var _0x7b42=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','sendStatus','error','stack','name','send','index','map','ServicenowAccount','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','update','body','getConfigurations','findOne','ServicenowConfiguration','rawAttributes','length','addConfiguration','Subjects','getSubjects','Descriptions','channel','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','notify','incident_state','severity','category','parent','caused_by','upon_reject','sys_updated_on','child_incidents','approval_history','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','calendar_stc','cmdb_ci','delivery_plan','impact','active','business_service','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','close_code','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','due_date','sys_mod_count','reopen_count','sys_tags','escalation','correlation_id','location','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','internalType','push','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','label','concat','test','Wrong\x20credentials','statusCode','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x3a887d,_0x439f75){var _0x280152=function(_0x3dd026){while(--_0x3dd026){_0x3a887d['push'](_0x3a887d['shift']());}};_0x280152(++_0x439f75);}(_0x7b42,0x16d));var _0x27b4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7b42[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x27b4('0x0'));var rimraf=require(_0x27b4('0x1'));var zipdir=require(_0x27b4('0x2'));var jsonpatch=require(_0x27b4('0x3'));var rp=require('request-promise');var moment=require(_0x27b4('0x4'));var BPromise=require(_0x27b4('0x5'));var Mustache=require(_0x27b4('0x6'));var util=require(_0x27b4('0x7'));var path=require('path');var sox=require(_0x27b4('0x8'));var csv=require(_0x27b4('0x9'));var ejs=require(_0x27b4('0xa'));var fs=require('fs');var fs_extra=require(_0x27b4('0xb'));var _=require(_0x27b4('0xc'));var squel=require(_0x27b4('0xd'));var crypto=require(_0x27b4('0xe'));var jsforce=require(_0x27b4('0xf'));var deskjs=require(_0x27b4('0x10'));var toCsv=require(_0x27b4('0x9'));var querystring=require(_0x27b4('0x11'));var Papa=require(_0x27b4('0x12'));var Redis=require(_0x27b4('0x13'));var authService=require(_0x27b4('0x14'));var qs=require(_0x27b4('0x15'));var as=require(_0x27b4('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x27b4('0x17'));var config=require(_0x27b4('0x18'));var licenseUtil=require(_0x27b4('0x19'));var db=require(_0x27b4('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x126e2b,_0x35aff8){_0x35aff8=_0x35aff8||0xcc;return function(_0x8fca26){if(_0x8fca26){return _0x126e2b['sendStatus'](_0x35aff8);}return _0x126e2b[_0x27b4('0x1b')](_0x35aff8)[_0x27b4('0x1c')]();};}function respondWithResult(_0x200c09,_0xbbd5a5){_0xbbd5a5=_0xbbd5a5||0xc8;return function(_0x8a08be){if(_0x8a08be){return _0x200c09[_0x27b4('0x1b')](_0xbbd5a5)['json'](_0x8a08be);}};}function respondWithFilteredResult(_0x13f592,_0x4d2d72){return function(_0x321c58){if(_0x321c58){var _0x1f5175=typeof _0x4d2d72[_0x27b4('0x1d')]===_0x27b4('0x1e')&&typeof _0x4d2d72[_0x27b4('0x1f')]===_0x27b4('0x1e');var _0x535082=_0x321c58[_0x27b4('0x20')];var _0x5ba293=_0x1f5175?0x0:_0x4d2d72['offset'];var _0x8993d7=_0x1f5175?_0x321c58[_0x27b4('0x20')]:_0x4d2d72['offset']+_0x4d2d72['limit'];var _0x4a44ba;if(_0x8993d7>=_0x535082){_0x8993d7=_0x535082;_0x4a44ba=0xc8;}else{_0x4a44ba=0xce;}_0x13f592[_0x27b4('0x1b')](_0x4a44ba);return _0x13f592['set'](_0x27b4('0x21'),_0x5ba293+'-'+_0x8993d7+'/'+_0x535082)[_0x27b4('0x22')](_0x321c58);}return null;};}function patchUpdates(_0x22f0ee){return function(_0x3c01a6){try{jsonpatch[_0x27b4('0x23')](_0x3c01a6,_0x22f0ee,!![]);}catch(_0x239cb0){return BPromise[_0x27b4('0x24')](_0x239cb0);}return _0x3c01a6[_0x27b4('0x25')]();};}function saveUpdates(_0x45b6f1,_0x3d94cd){return function(_0x3c71f0){if(_0x3c71f0){return _0x3c71f0['update'](_0x45b6f1)[_0x27b4('0x26')](function(_0x3a0dd6){return _0x3a0dd6;});}return null;};}function removeEntity(_0x22cd6a,_0x359742){return function(_0x365835){if(_0x365835){return _0x365835['destroy']()['then'](function(){_0x22cd6a['status'](0xcc)[_0x27b4('0x1c')]();});}};}function handleEntityNotFound(_0x1df70b,_0x24017d){return function(_0x30b563){if(!_0x30b563){_0x1df70b[_0x27b4('0x27')](0x194);}return _0x30b563;};}function handleError(_0x25bf93,_0x5a628f){_0x5a628f=_0x5a628f||0x1f4;return function(_0x6ee96){logger[_0x27b4('0x28')](_0x6ee96[_0x27b4('0x29')]);if(_0x6ee96[_0x27b4('0x2a')]){delete _0x6ee96[_0x27b4('0x2a')];}_0x25bf93[_0x27b4('0x1b')](_0x5a628f)[_0x27b4('0x2b')](_0x6ee96);};}exports[_0x27b4('0x2c')]=function(_0x30d77a,_0x398ee7){var _0x479252={},_0x50c65c={},_0x4d2e5c={'count':0x0,'rows':[]};var _0x1e8221=_[_0x27b4('0x2d')](db[_0x27b4('0x2e')]['rawAttributes'],function(_0x2a490b){return{'name':_0x2a490b[_0x27b4('0x2f')],'type':_0x2a490b[_0x27b4('0x30')][_0x27b4('0x31')]};});_0x50c65c[_0x27b4('0x32')]=_['map'](_0x1e8221,'name');_0x50c65c[_0x27b4('0x33')]=_['keys'](_0x30d77a[_0x27b4('0x33')]);_0x50c65c['filters']=_[_0x27b4('0x34')](_0x50c65c[_0x27b4('0x32')],_0x50c65c[_0x27b4('0x33')]);_0x479252[_0x27b4('0x35')]=_[_0x27b4('0x34')](_0x50c65c['model'],qs[_0x27b4('0x36')](_0x30d77a[_0x27b4('0x33')][_0x27b4('0x36')]));_0x479252['attributes']=_0x479252[_0x27b4('0x35')]['length']?_0x479252[_0x27b4('0x35')]:_0x50c65c[_0x27b4('0x32')];if(!_0x30d77a[_0x27b4('0x33')][_0x27b4('0x37')](_0x27b4('0x38'))){_0x479252[_0x27b4('0x1f')]=qs[_0x27b4('0x1f')](_0x30d77a[_0x27b4('0x33')][_0x27b4('0x1f')]);_0x479252[_0x27b4('0x1d')]=qs[_0x27b4('0x1d')](_0x30d77a['query'][_0x27b4('0x1d')]);}_0x479252[_0x27b4('0x39')]=qs[_0x27b4('0x3a')](_0x30d77a['query'][_0x27b4('0x3a')]);_0x479252[_0x27b4('0x3b')]=qs[_0x27b4('0x3c')](_[_0x27b4('0x3d')](_0x30d77a[_0x27b4('0x33')],_0x50c65c['filters']),_0x1e8221);if(_0x30d77a['query'][_0x27b4('0x3e')]){_0x479252[_0x27b4('0x3b')]=_[_0x27b4('0x3f')](_0x479252[_0x27b4('0x3b')],{'$or':_['map'](_0x1e8221,function(_0xff59f){if(_0xff59f[_0x27b4('0x30')]!==_0x27b4('0x40')){var _0x2bc003={};_0x2bc003[_0xff59f[_0x27b4('0x2a')]]={'$like':'%'+_0x30d77a[_0x27b4('0x33')][_0x27b4('0x3e')]+'%'};return _0x2bc003;}})});}_0x479252=_[_0x27b4('0x3f')]({},_0x479252,_0x30d77a[_0x27b4('0x41')]);var _0x3dc57c={'where':_0x479252[_0x27b4('0x3b')]};return db['ServicenowAccount']['count'](_0x3dc57c)[_0x27b4('0x26')](function(_0x255d64){_0x4d2e5c[_0x27b4('0x20')]=_0x255d64;if(_0x30d77a[_0x27b4('0x33')]['includeAll']){_0x479252[_0x27b4('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x27b4('0x43')](_0x479252);})['then'](function(_0x3bb491){_0x4d2e5c[_0x27b4('0x44')]=_0x3bb491;return _0x4d2e5c;})[_0x27b4('0x26')](respondWithFilteredResult(_0x398ee7,_0x479252))[_0x27b4('0x45')](handleError(_0x398ee7,null));};exports[_0x27b4('0x46')]=function(_0x4e7605,_0x3d0dc9){var _0x13ec7f={'raw':![],'where':{'id':_0x4e7605[_0x27b4('0x47')]['id']}},_0x236388={};_0x236388[_0x27b4('0x32')]=_[_0x27b4('0x48')](db['ServicenowAccount']['rawAttributes']);_0x236388['query']=_['keys'](_0x4e7605[_0x27b4('0x33')]);_0x236388[_0x27b4('0x3c')]=_['intersection'](_0x236388['model'],_0x236388[_0x27b4('0x33')]);_0x13ec7f['attributes']=_[_0x27b4('0x34')](_0x236388['model'],qs['fields'](_0x4e7605['query'][_0x27b4('0x36')]));_0x13ec7f['attributes']=_0x13ec7f[_0x27b4('0x35')]['length']?_0x13ec7f['attributes']:_0x236388[_0x27b4('0x32')];if(_0x4e7605[_0x27b4('0x33')][_0x27b4('0x49')]){_0x13ec7f[_0x27b4('0x42')]=[{'all':!![]}];}_0x13ec7f=_[_0x27b4('0x3f')]({},_0x13ec7f,_0x4e7605['options']);return db[_0x27b4('0x2e')][_0x27b4('0x4a')](_0x13ec7f)[_0x27b4('0x26')](handleEntityNotFound(_0x3d0dc9,null))[_0x27b4('0x26')](respondWithResult(_0x3d0dc9,null))[_0x27b4('0x45')](handleError(_0x3d0dc9,null));};exports['create']=function(_0x381d43,_0x161daa){return db['ServicenowAccount'][_0x27b4('0x4b')](_0x381d43['body'],{})[_0x27b4('0x26')](respondWithResult(_0x161daa,0xc9))[_0x27b4('0x45')](handleError(_0x161daa,null));};exports[_0x27b4('0x4c')]=function(_0x253157,_0x31958d){if(_0x253157[_0x27b4('0x4d')]['id']){delete _0x253157[_0x27b4('0x4d')]['id'];}return db[_0x27b4('0x2e')]['find']({'where':{'id':_0x253157[_0x27b4('0x47')]['id']}})['then'](handleEntityNotFound(_0x31958d,null))['then'](saveUpdates(_0x253157[_0x27b4('0x4d')],null))[_0x27b4('0x26')](respondWithResult(_0x31958d,null))[_0x27b4('0x45')](handleError(_0x31958d,null));};exports['destroy']=function(_0x3a326d,_0x1f4add){return db[_0x27b4('0x2e')]['find']({'where':{'id':_0x3a326d[_0x27b4('0x47')]['id']}})[_0x27b4('0x26')](handleEntityNotFound(_0x1f4add,null))[_0x27b4('0x26')](removeEntity(_0x1f4add,null))[_0x27b4('0x45')](handleError(_0x1f4add,null));};exports[_0x27b4('0x4e')]=function(_0x1d70f9,_0x10f3d9,_0x1d36d3){var _0x249d98={};var _0x9e9a60={};var _0x4b4a9f;var _0x1b0069;return db[_0x27b4('0x2e')][_0x27b4('0x4f')]({'where':{'id':_0x1d70f9['params']['id']}})[_0x27b4('0x26')](handleEntityNotFound(_0x10f3d9,null))[_0x27b4('0x26')](function(_0x550d4c){if(_0x550d4c){_0x4b4a9f=_0x550d4c;_0x9e9a60[_0x27b4('0x32')]=_[_0x27b4('0x48')](db[_0x27b4('0x50')][_0x27b4('0x51')]);_0x9e9a60['query']=_[_0x27b4('0x48')](_0x1d70f9[_0x27b4('0x33')]);_0x9e9a60[_0x27b4('0x3c')]=_[_0x27b4('0x34')](_0x9e9a60[_0x27b4('0x32')],_0x9e9a60[_0x27b4('0x33')]);_0x249d98[_0x27b4('0x35')]=_[_0x27b4('0x34')](_0x9e9a60[_0x27b4('0x32')],qs[_0x27b4('0x36')](_0x1d70f9[_0x27b4('0x33')][_0x27b4('0x36')]));_0x249d98[_0x27b4('0x35')]=_0x249d98[_0x27b4('0x35')][_0x27b4('0x52')]?_0x249d98['attributes']:_0x9e9a60[_0x27b4('0x32')];_0x249d98['order']=qs[_0x27b4('0x3a')](_0x1d70f9[_0x27b4('0x33')][_0x27b4('0x3a')]);_0x249d98['where']=qs[_0x27b4('0x3c')](_['pick'](_0x1d70f9[_0x27b4('0x33')],_0x9e9a60[_0x27b4('0x3c')]));if(_0x1d70f9[_0x27b4('0x33')][_0x27b4('0x3e')]){_0x249d98['where']=_['merge'](_0x249d98[_0x27b4('0x3b')],{'$or':_[_0x27b4('0x2d')](_0x249d98['attributes'],function(_0x351c67){var _0x15db39={};_0x15db39[_0x351c67]={'$like':'%'+_0x1d70f9[_0x27b4('0x33')][_0x27b4('0x3e')]+'%'};return _0x15db39;})});}_0x249d98=_['merge']({},_0x249d98,_0x1d70f9['options']);return _0x4b4a9f[_0x27b4('0x4e')](_0x249d98);}})[_0x27b4('0x26')](function(_0x2cdc7b){if(_0x2cdc7b){_0x1b0069=_0x2cdc7b[_0x27b4('0x52')];if(!_0x1d70f9[_0x27b4('0x33')][_0x27b4('0x37')](_0x27b4('0x38'))){_0x249d98[_0x27b4('0x1f')]=qs[_0x27b4('0x1f')](_0x1d70f9['query'][_0x27b4('0x1f')]);_0x249d98[_0x27b4('0x1d')]=qs[_0x27b4('0x1d')](_0x1d70f9[_0x27b4('0x33')]['offset']);}return _0x4b4a9f['getConfigurations'](_0x249d98);}})[_0x27b4('0x26')](function(_0x2d6b19){if(_0x2d6b19){return _0x2d6b19?{'count':_0x1b0069,'rows':_0x2d6b19}:null;}})[_0x27b4('0x26')](respondWithResult(_0x10f3d9,null))[_0x27b4('0x45')](handleError(_0x10f3d9,null));};exports[_0x27b4('0x53')]=function(_0x1c5777,_0xe69382,_0xddfb27){if(_0x1c5777[_0x27b4('0x4d')]['id']){delete _0x1c5777['body']['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x1c5777['params']['id']}})[_0x27b4('0x26')](handleEntityNotFound(_0xe69382,null))[_0x27b4('0x26')](function(_0x2d421d){if(_0x2d421d){_0x1c5777[_0x27b4('0x4d')]['AccountId']=_0x2d421d['id'];_0x1c5777[_0x27b4('0x4d')][_0x27b4('0x54')]=integrations[_0x27b4('0x55')](_0x1c5777['body']['channel'],_0x1c5777[_0x27b4('0x4d')]['type']);_0x1c5777[_0x27b4('0x4d')][_0x27b4('0x56')]=integrations['getDescriptions'](_0x1c5777[_0x27b4('0x4d')][_0x27b4('0x57')],_0x1c5777[_0x27b4('0x4d')][_0x27b4('0x30')]);return db[_0x27b4('0x50')][_0x27b4('0x4b')](_0x1c5777[_0x27b4('0x4d')],{'include':[{'model':db[_0x27b4('0x58')],'as':'Subjects'},{'model':db['ServicenowField'],'as':_0x27b4('0x56')}]});}return null;})[_0x27b4('0x26')](respondWithResult(_0xe69382,null))['catch'](handleError(_0xe69382,null));};exports[_0x27b4('0x59')]=function(_0x33f1e2,_0x281a87,_0x58f237){var _0x27da5a=[_0x27b4('0x5a'),_0x27b4('0x5b'),_0x27b4('0x5c'),_0x27b4('0x5d'),'close_code',_0x27b4('0x5e'),_0x27b4('0x5f'),_0x27b4('0x60'),_0x27b4('0x61')];var _0x599e3b=[_0x27b4('0x62'),'made_sla',_0x27b4('0x63'),'watch_list',_0x27b4('0x64'),_0x27b4('0x65'),_0x27b4('0x66'),_0x27b4('0x5b'),_0x27b4('0x67'),'number',_0x27b4('0x68'),_0x27b4('0x69'),_0x27b4('0x6a'),_0x27b4('0x6b'),_0x27b4('0x6c'),_0x27b4('0x6d'),_0x27b4('0x6e'),'sys_created_by','knowledge','order',_0x27b4('0x6f'),'closed_at',_0x27b4('0x70'),_0x27b4('0x71'),_0x27b4('0x72'),_0x27b4('0x73'),'work_notes_list',_0x27b4('0x74'),'priority','sys_domain_path',_0x27b4('0x75'),_0x27b4('0x76'),_0x27b4('0x77'),_0x27b4('0x78'),_0x27b4('0x79'),_0x27b4('0x7a'),_0x27b4('0x7b'),_0x27b4('0x7c'),_0x27b4('0x7d'),_0x27b4('0x7e'),'approval_set',_0x27b4('0x5d'),'work_notes','short_description',_0x27b4('0x7f'),_0x27b4('0x80'),_0x27b4('0x81'),'work_start',_0x27b4('0x82'),_0x27b4('0x83'),_0x27b4('0x84'),_0x27b4('0x85'),'calendar_duration','notify','sys_class_name',_0x27b4('0x86'),_0x27b4('0x87'),_0x27b4('0x88'),_0x27b4('0x89'),_0x27b4('0x8a'),_0x27b4('0x8b'),_0x27b4('0x8c'),_0x27b4('0x5f'),_0x27b4('0x8d'),_0x27b4('0x8e'),_0x27b4('0x8f'),_0x27b4('0x90'),_0x27b4('0x91'),_0x27b4('0x92'),_0x27b4('0x60'),_0x27b4('0x93'),_0x27b4('0x94'),'approval','comments_and_work_notes',_0x27b4('0x95'),_0x27b4('0x96'),_0x27b4('0x97'),_0x27b4('0x98'),_0x27b4('0x99'),'upon_approval',_0x27b4('0x9a'),_0x27b4('0x9b'),_0x27b4('0x61')];var _0x10cf1b='';var _0x2aa2d9='';var _0x5c8873=[];var _0x1d760a='';var _0x3b7ad4='';var _0x8aac9b=[];var _0x3972d6='';var _0x5982c9='';var _0x277153={};var _0xf929b9='';return db[_0x27b4('0x2e')][_0x27b4('0x4f')]({'where':{'id':_0x33f1e2[_0x27b4('0x47')]['id']},'attributes':['id',_0x27b4('0x9c'),_0x27b4('0x9d'),_0x27b4('0x9e'),_0x27b4('0x9f'),_0x27b4('0xa0')]})['then'](handleEntityNotFound(_0x281a87,null))[_0x27b4('0x26')](function(_0x32e7b6){if(_0x32e7b6){_0xf929b9=_0x32e7b6[_0x27b4('0x9f')];var _0x4ab979=_0xf929b9[_0x27b4('0xa1')](-0x1);if(_0x4ab979==='/'){_0xf929b9=_0xf929b9[_0x27b4('0xa2')](0x0,_0xf929b9[_0x27b4('0xa3')](_0x4ab979));}_0x5982c9=util[_0x27b4('0xa4')]('%s/api/now/doc/table/schema/',_0xf929b9);_0x3972d6=util[_0x27b4('0xa4')](_0x27b4('0xa5'),_0xf929b9);_0x277153={'user':_0x32e7b6[_0x27b4('0x9c')],'pass':_0x32e7b6[_0x27b4('0x9d')]};var _0x3c5097={'method':_0x27b4('0xa6'),'uri':_0x5982c9+_0x27b4('0xa7'),'auth':_0x277153,'json':!![]};return rp(_0x3c5097);}})[_0x27b4('0x26')](function(_0x49df12){if(_0x49df12[_0x27b4('0xa8')]['length']>0x0){_0x10cf1b=_0x49df12[_0x27b4('0xa8')];}console[_0x27b4('0xa9')](_0x27b4('0xaa'),_0x10cf1b);_0x8aac9b=[];_0x2aa2d9=Object[_0x27b4('0xab')]([],_0x10cf1b);_[_0x27b4('0xac')](_0x2aa2d9,function(_0x7723d1){return!_0x27da5a['includes'](_0x7723d1[_0x27b4('0x2a')]);});_0x2aa2d9['forEach'](function(_0x4b165b){var _0xcfd641=createFieldObject(_0x3972d6,_0x277153,_0x4b165b[_0x27b4('0xad')],_0x4b165b[_0x27b4('0x2a')],_0x4b165b['label'],![]);_0x8aac9b[_0x27b4('0xae')](_0xcfd641);});return Promise[_0x27b4('0xaf')](_0x8aac9b);})[_0x27b4('0x26')](function(_0x276427){_0x5c8873=_0x276427;_0x1d760a=Object[_0x27b4('0xab')]([],_0x10cf1b);console['log']('TCL:\x20_object',_0x10cf1b);_[_0x27b4('0xac')](_0x1d760a,function(_0x4abc31){return _0x599e3b[_0x27b4('0xb0')](_0x4abc31[_0x27b4('0x2a')]);});console['log'](_0x27b4('0xb1'),_0x1d760a);_0x8aac9b=[];_0x1d760a[_0x27b4('0xb2')](function(_0x9dd4ff){var _0x149211=createFieldObject(_0x3972d6,_0x277153,_0x9dd4ff[_0x27b4('0xad')],_0x9dd4ff[_0x27b4('0x2a')],_0x9dd4ff[_0x27b4('0xb3')],!![]);_0x8aac9b['push'](_0x149211);});return Promise['all'](_0x8aac9b);})[_0x27b4('0x26')](function(_0x536ffb){_0x3b7ad4=_0x536ffb;var _0x283f1e=_0x5c8873[_0x27b4('0xb4')](_0x3b7ad4);return{'count':_0x283f1e[_0x27b4('0x52')],'rows':_0x283f1e};})[_0x27b4('0x26')](respondWithResult(_0x281a87,null))['catch'](function(_0x397898){console[_0x27b4('0xa9')]('ServiceNow\x20error:\x20'+_0x397898);var _0x57f2f8=_0x33f1e2[_0x27b4('0x33')][_0x27b4('0xb5')]?0x1f4:_0x397898['statusCode']||0x1f4;logger[_0x27b4('0x28')](_0x397898[_0x27b4('0x29')]);delete _0x397898['name'];if(_0x57f2f8===0x191){_0x57f2f8=0x190;}_0x281a87['status'](_0x57f2f8)[_0x27b4('0x2b')](_0x33f1e2[_0x27b4('0x33')][_0x27b4('0xb5')]?{'message':_0x27b4('0xb6'),'statusCode':_0x397898[_0x27b4('0xb7')]}:_0x397898);});};function createFieldObject(_0x535899,_0x1dd51d,_0x493b50,_0x5e9eee,_0x50d8cb,_0x131737){return new Promise(function(_0x3e8e53,_0x330bab){var _0x1bd180={'id':_0x5e9eee,'name':_0x50d8cb,'custom':_0x131737};if(_0x493b50===_0x27b4('0xb8')){_0x1bd180[_0x27b4('0x41')]=[{'name':_0x27b4('0xb9'),'value':_0x27b4('0xba')},{'name':_0x27b4('0xbb'),'value':_0x27b4('0xbc')}];_0x3e8e53(_0x1bd180);}else{var _0x2fec49={'method':_0x27b4('0xa6'),'uri':_0x535899+_0x27b4('0xbd')+_0x5e9eee,'auth':_0x1dd51d,'json':!![]};return rp(_0x2fec49)[_0x27b4('0x26')](function(_0x18993e){var _0x2b0996=[];if(_0x18993e[_0x27b4('0xa8')][_0x27b4('0x52')]>0x0){_0x18993e['result'][_0x27b4('0xb2')](function(_0x37efff){if(_0x37efff[_0x27b4('0xbe')]===_0x27b4('0xbc')){var _0x21d16d={'name':_0x37efff['label'],'value':_0x37efff[_0x27b4('0xbf')]};_0x2b0996['push'](_0x21d16d);}});}_0x1bd180[_0x27b4('0x41')]=_0x2b0996;if(_0x1bd180[_0x27b4('0x41')][_0x27b4('0x52')]>0x0){_0x3e8e53(_0x1bd180);}else{if(_0x131737==![]){_0x3e8e53();}else{_0x3e8e53(_0x1bd180);}}});}});}
\ No newline at end of file
index 96a090e..0e76ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x3bcc56,_0x14138d){var _0x5e687c=function(_0x58d90d){while(--_0x58d90d){_0x3bcc56['push'](_0x3bcc56['shift']());}};_0x5e687c(++_0x14138d);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2a31e2,_0x34b6e0){_0x2a31e2=_0x2a31e2-0x0;var _0x1ea6a3=_0xb4c7[_0x2a31e2];return _0x1ea6a3;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xda19=['request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','moment'];(function(_0x3e0455,_0x4c54b0){var _0x3a2037=function(_0x5b56b7){while(--_0x5b56b7){_0x3e0455['push'](_0x3e0455['shift']());}};_0x3a2037(++_0x4c54b0);}(_0xda19,0xd5));var _0x9da1=function(_0x5a66bb,_0x4da8ef){_0x5a66bb=_0x5a66bb-0x0;var _0x20e0bf=_0xda19[_0x5a66bb];return _0x20e0bf;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var logger=require(_0x9da1('0x1'))('api');var moment=require(_0x9da1('0x2'));var BPromise=require('bluebird');var rp=require(_0x9da1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var attributes=require(_0x9da1('0x6'));var integrations=require(_0x9da1('0x7'));module[_0x9da1('0x8')]=function(_0x2dcbc6,_0x23e4f7){return _0x2dcbc6[_0x9da1('0x9')](_0x9da1('0xa'),attributes,{'tableName':_0x9da1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6028fe4..2b14c6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b1=['../../config/environment','jayson/promise','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ServicenowAccount','findAll','options','raw','where','limit','map','model','include','attributes','GetServicenowAccount','catch','find','ShowServicenowAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc'];(function(_0x582274,_0x2cbd9c){var _0x8f14d3=function(_0x1cfe08){while(--_0x1cfe08){_0x582274['push'](_0x582274['shift']());}};_0x8f14d3(++_0x2cbd9c);}(_0x43b1,0x1f0));var _0x143b=function(_0x263a5f,_0x4c3231){_0x263a5f=_0x263a5f-0x0;var _0x282047=_0x43b1[_0x263a5f];return _0x282047;};'use strict';var _=require(_0x143b('0x0'));var util=require(_0x143b('0x1'));var moment=require(_0x143b('0x2'));var BPromise=require(_0x143b('0x3'));var rs=require(_0x143b('0x4'));var fs=require('fs');var Redis=require(_0x143b('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x143b('0x6'))(_0x143b('0x7'));var config=require(_0x143b('0x8'));var jayson=require(_0x143b('0x9'));var client=jayson[_0x143b('0xa')][_0x143b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x42fff6,_0x47c1e4,_0x4119c0){return new BPromise(function(_0xd20f78,_0x1c16f6){return client[_0x143b('0xc')](_0x42fff6,_0x4119c0)[_0x143b('0xd')](function(_0x5ed52f){logger[_0x143b('0xe')](_0x143b('0xf'),_0x47c1e4,'request\x20sent');logger[_0x143b('0x10')](_0x143b('0x11'),_0x47c1e4,'request\x20sent',JSON[_0x143b('0x12')](_0x5ed52f));if(_0x5ed52f[_0x143b('0x13')]){if(_0x5ed52f['error']['code']===0x1f4){logger[_0x143b('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x47c1e4,_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);return _0x1c16f6(_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);}logger['error'](_0x143b('0xf'),_0x47c1e4,_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);return _0xd20f78(_0x5ed52f[_0x143b('0x13')][_0x143b('0x14')]);}else{logger[_0x143b('0xe')](_0x143b('0xf'),_0x47c1e4,'request\x20sent');_0xd20f78(_0x5ed52f[_0x143b('0x15')][_0x143b('0x14')]);}})['catch'](function(_0x13eb02){logger[_0x143b('0x13')](_0x143b('0xf'),_0x47c1e4,_0x13eb02);_0x1c16f6(_0x13eb02);});});}exports['GetServicenowAccount']=function(_0xf764ec){var _0x5a709d=this;return new Promise(function(_0x49e210,_0x45df8d){return db[_0x143b('0x16')][_0x143b('0x17')]({'raw':_0xf764ec['options']?_0xf764ec[_0x143b('0x18')][_0x143b('0x19')]===undefined?!![]:![]:!![],'where':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')][_0x143b('0x1a')]||null:null,'attributes':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')]['attributes']||null:null,'limit':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')][_0x143b('0x1b')]||null:null,'include':_0xf764ec[_0x143b('0x18')]?_0xf764ec[_0x143b('0x18')]['include']?_[_0x143b('0x1c')](_0xf764ec['options']['include'],function(_0x1f5957){return{'model':db[_0x1f5957[_0x143b('0x1d')]],'as':_0x1f5957['as'],'attributes':_0x1f5957['attributes'],'include':_0x1f5957['include']?_['map'](_0x1f5957[_0x143b('0x1e')],function(_0x1f3520){return{'model':db[_0x1f3520['model']],'as':_0x1f3520['as'],'attributes':_0x1f3520[_0x143b('0x1f')],'include':_0x1f3520[_0x143b('0x1e')]?_['map'](_0x1f3520[_0x143b('0x1e')],function(_0x39b545){return{'model':db[_0x39b545['model']],'as':_0x39b545['as'],'attributes':_0x39b545[_0x143b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x143b('0xd')](function(_0x31ee20){logger[_0x143b('0xe')]('GetServicenowAccount',_0xf764ec);logger['debug'](_0x143b('0x20'),_0xf764ec,JSON[_0x143b('0x12')](_0x31ee20));_0x49e210(_0x31ee20);})[_0x143b('0x21')](function(_0x5526ce){logger[_0x143b('0x13')](_0x143b('0x20'),_0x5526ce[_0x143b('0x14')],_0xf764ec);_0x45df8d(_0x5a709d['error'](0x1f4,_0x5526ce[_0x143b('0x14')]));});});};exports['ShowServicenowAccount']=function(_0x2a804c){var _0x1e1b85=this;return new Promise(function(_0x629764,_0x469463){return db['ServicenowAccount'][_0x143b('0x22')]({'raw':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')][_0x143b('0x19')]===undefined?!![]:![]:!![],'where':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')]['where']||null:null,'attributes':_0x2a804c[_0x143b('0x18')]?_0x2a804c[_0x143b('0x18')][_0x143b('0x1f')]||null:null,'include':_0x2a804c[_0x143b('0x18')]?_0x2a804c['options'][_0x143b('0x1e')]?_[_0x143b('0x1c')](_0x2a804c[_0x143b('0x18')]['include'],function(_0x342be1){return{'model':db[_0x342be1[_0x143b('0x1d')]],'as':_0x342be1['as'],'attributes':_0x342be1[_0x143b('0x1f')],'include':_0x342be1[_0x143b('0x1e')]?_[_0x143b('0x1c')](_0x342be1['include'],function(_0x5a8a48){return{'model':db[_0x5a8a48[_0x143b('0x1d')]],'as':_0x5a8a48['as'],'attributes':_0x5a8a48[_0x143b('0x1f')],'include':_0x5a8a48[_0x143b('0x1e')]?_['map'](_0x5a8a48[_0x143b('0x1e')],function(_0x568cfb){return{'model':db[_0x568cfb[_0x143b('0x1d')]],'as':_0x568cfb['as'],'attributes':_0x568cfb['attributes']};}):[]};}):[]};}):[]:[]})[_0x143b('0xd')](function(_0x1a30e8){logger[_0x143b('0xe')]('ShowServicenowAccount',_0x2a804c);logger[_0x143b('0x10')](_0x143b('0x23'),_0x2a804c,JSON['stringify'](_0x1a30e8));_0x629764(_0x1a30e8);})[_0x143b('0x21')](function(_0x58a722){logger[_0x143b('0x13')](_0x143b('0x23'),_0x58a722['message'],_0x2a804c);_0x469463(_0x1e1b85['error'](0x1f4,_0x58a722[_0x143b('0x14')]));});});};
\ No newline at end of file
+var _0x4ddd=['GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include','model','map','ShowServicenowAccount','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x18f122,_0x3bd93b){var _0x1126b0=function(_0x5b1f27){while(--_0x5b1f27){_0x18f122['push'](_0x18f122['shift']());}};_0x1126b0(++_0x3bd93b);}(_0x4ddd,0x1b1));var _0xd4dd=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x4ddd[_0x220dbb];return _0x2b77de;};'use strict';var _=require(_0xd4dd('0x0'));var util=require(_0xd4dd('0x1'));var moment=require(_0xd4dd('0x2'));var BPromise=require(_0xd4dd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd4dd('0x4'))['db'];var utils=require(_0xd4dd('0x5'));var logger=require(_0xd4dd('0x6'))('rpc');var config=require(_0xd4dd('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd4dd('0x8')][_0xd4dd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x544728,_0x127c2d,_0x5bd012){return new BPromise(function(_0x16342c,_0x12ab47){return client['request'](_0x544728,_0x5bd012)[_0xd4dd('0xa')](function(_0x4f2433){logger[_0xd4dd('0xb')](_0xd4dd('0xc'),_0x127c2d,_0xd4dd('0xd'));logger[_0xd4dd('0xe')](_0xd4dd('0xf'),_0x127c2d,'request\x20sent',JSON[_0xd4dd('0x10')](_0x4f2433));if(_0x4f2433[_0xd4dd('0x11')]){if(_0x4f2433[_0xd4dd('0x11')][_0xd4dd('0x12')]===0x1f4){logger[_0xd4dd('0x11')](_0xd4dd('0xc'),_0x127c2d,_0x4f2433[_0xd4dd('0x11')][_0xd4dd('0x13')]);return _0x12ab47(_0x4f2433[_0xd4dd('0x11')][_0xd4dd('0x13')]);}logger[_0xd4dd('0x11')](_0xd4dd('0xc'),_0x127c2d,_0x4f2433[_0xd4dd('0x11')][_0xd4dd('0x13')]);return _0x16342c(_0x4f2433[_0xd4dd('0x11')]['message']);}else{logger['info'](_0xd4dd('0xc'),_0x127c2d,_0xd4dd('0xd'));_0x16342c(_0x4f2433[_0xd4dd('0x14')][_0xd4dd('0x13')]);}})[_0xd4dd('0x15')](function(_0x48f3ca){logger[_0xd4dd('0x11')](_0xd4dd('0xc'),_0x127c2d,_0x48f3ca);_0x12ab47(_0x48f3ca);});});}exports[_0xd4dd('0x16')]=function(_0x5af990){var _0xa1bdd9=this;return new Promise(function(_0x31e1d0,_0xe4e927){return db[_0xd4dd('0x17')][_0xd4dd('0x18')]({'raw':_0x5af990['options']?_0x5af990[_0xd4dd('0x19')][_0xd4dd('0x1a')]===undefined?!![]:![]:!![],'where':_0x5af990['options']?_0x5af990[_0xd4dd('0x19')][_0xd4dd('0x1b')]||null:null,'attributes':_0x5af990[_0xd4dd('0x19')]?_0x5af990['options'][_0xd4dd('0x1c')]||null:null,'limit':_0x5af990['options']?_0x5af990[_0xd4dd('0x19')][_0xd4dd('0x1d')]||null:null,'include':_0x5af990[_0xd4dd('0x19')]?_0x5af990[_0xd4dd('0x19')][_0xd4dd('0x1e')]?_['map'](_0x5af990['options'][_0xd4dd('0x1e')],function(_0x33009f){return{'model':db[_0x33009f[_0xd4dd('0x1f')]],'as':_0x33009f['as'],'attributes':_0x33009f['attributes'],'include':_0x33009f['include']?_[_0xd4dd('0x20')](_0x33009f[_0xd4dd('0x1e')],function(_0x48d8cb){return{'model':db[_0x48d8cb[_0xd4dd('0x1f')]],'as':_0x48d8cb['as'],'attributes':_0x48d8cb[_0xd4dd('0x1c')],'include':_0x48d8cb['include']?_[_0xd4dd('0x20')](_0x48d8cb['include'],function(_0x428b48){return{'model':db[_0x428b48[_0xd4dd('0x1f')]],'as':_0x428b48['as'],'attributes':_0x428b48[_0xd4dd('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xd4dd('0xa')](function(_0x51fe7b){logger[_0xd4dd('0xb')](_0xd4dd('0x16'),_0x5af990);logger[_0xd4dd('0xe')](_0xd4dd('0x16'),_0x5af990,JSON[_0xd4dd('0x10')](_0x51fe7b));_0x31e1d0(_0x51fe7b);})[_0xd4dd('0x15')](function(_0xc66c33){logger[_0xd4dd('0x11')](_0xd4dd('0x16'),_0xc66c33[_0xd4dd('0x13')],_0x5af990);_0xe4e927(_0xa1bdd9[_0xd4dd('0x11')](0x1f4,_0xc66c33['message']));});});};exports[_0xd4dd('0x21')]=function(_0x3741dd){var _0x56733f=this;return new Promise(function(_0x5b4ba7,_0x56c7ed){return db['ServicenowAccount'][_0xd4dd('0x22')]({'raw':_0x3741dd['options']?_0x3741dd[_0xd4dd('0x19')][_0xd4dd('0x1a')]===undefined?!![]:![]:!![],'where':_0x3741dd['options']?_0x3741dd[_0xd4dd('0x19')]['where']||null:null,'attributes':_0x3741dd[_0xd4dd('0x19')]?_0x3741dd[_0xd4dd('0x19')]['attributes']||null:null,'include':_0x3741dd[_0xd4dd('0x19')]?_0x3741dd[_0xd4dd('0x19')]['include']?_[_0xd4dd('0x20')](_0x3741dd[_0xd4dd('0x19')][_0xd4dd('0x1e')],function(_0x3b48f1){return{'model':db[_0x3b48f1[_0xd4dd('0x1f')]],'as':_0x3b48f1['as'],'attributes':_0x3b48f1[_0xd4dd('0x1c')],'include':_0x3b48f1[_0xd4dd('0x1e')]?_[_0xd4dd('0x20')](_0x3b48f1[_0xd4dd('0x1e')],function(_0x38af5a){return{'model':db[_0x38af5a['model']],'as':_0x38af5a['as'],'attributes':_0x38af5a[_0xd4dd('0x1c')],'include':_0x38af5a[_0xd4dd('0x1e')]?_[_0xd4dd('0x20')](_0x38af5a[_0xd4dd('0x1e')],function(_0x1b0f5f){return{'model':db[_0x1b0f5f[_0xd4dd('0x1f')]],'as':_0x1b0f5f['as'],'attributes':_0x1b0f5f[_0xd4dd('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xd4dd('0xa')](function(_0x5bdf91){logger[_0xd4dd('0xb')]('ShowServicenowAccount',_0x3741dd);logger[_0xd4dd('0xe')]('ShowServicenowAccount',_0x3741dd,JSON[_0xd4dd('0x10')](_0x5bdf91));_0x5b4ba7(_0x5bdf91);})[_0xd4dd('0x15')](function(_0x2798fe){logger[_0xd4dd('0x11')](_0xd4dd('0x21'),_0x2798fe[_0xd4dd('0x13')],_0x3741dd);_0x56c7ed(_0x56733f['error'](0x1f4,_0x2798fe['message']));});});};
\ No newline at end of file
index 30caf86..466e6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da3=['put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','getFields','/:id/subjects','getSubjects','getDescriptions','post'];(function(_0x2b8547,_0x4c7b2a){var _0x2f5249=function(_0x5a022c){while(--_0x5a022c){_0x2b8547['push'](_0x2b8547['shift']());}};_0x2f5249(++_0x4c7b2a);}(_0x0da3,0x1d1));var _0x30da=function(_0x304316,_0x91fa59){_0x304316=_0x304316-0x0;var _0x1cd72e=_0x0da3[_0x304316];return _0x1cd72e;};'use strict';var multer=require(_0x30da('0x0'));var util=require(_0x30da('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x30da('0x2'));var router=express[_0x30da('0x3')]();var fs_extra=require(_0x30da('0x4'));var auth=require(_0x30da('0x5'));var interaction=require(_0x30da('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth[_0x30da('0x7')](),controller[_0x30da('0x8')]);router[_0x30da('0x9')]('/:id',auth[_0x30da('0x7')](),controller['show']);router[_0x30da('0x9')]('/:id/fields',auth[_0x30da('0x7')](),controller[_0x30da('0xa')]);router[_0x30da('0x9')](_0x30da('0xb'),auth[_0x30da('0x7')](),controller[_0x30da('0xc')]);router[_0x30da('0x9')]('/:id/descriptions',auth[_0x30da('0x7')](),controller[_0x30da('0xd')]);router[_0x30da('0xe')]('/',auth[_0x30da('0x7')](),controller['create']);router[_0x30da('0xf')](_0x30da('0x10'),auth[_0x30da('0x7')](),controller[_0x30da('0x11')]);router[_0x30da('0x12')](_0x30da('0x10'),auth[_0x30da('0x7')](),controller['destroy']);module[_0x30da('0x13')]=router;
\ No newline at end of file
+var _0xf5f7=['../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0xeb6ac,_0xac55ec){var _0x37e2e9=function(_0x16a537){while(--_0x16a537){_0xeb6ac['push'](_0xeb6ac['shift']());}};_0x37e2e9(++_0xac55ec);}(_0xf5f7,0x1a9));var _0x7f5f=function(_0x49a26b,_0x3217e1){_0x49a26b=_0x49a26b-0x0;var _0x36a4b1=_0xf5f7[_0x49a26b];return _0x36a4b1;};'use strict';var multer=require(_0x7f5f('0x0'));var util=require(_0x7f5f('0x1'));var path=require(_0x7f5f('0x2'));var timeout=require(_0x7f5f('0x3'));var express=require(_0x7f5f('0x4'));var router=express[_0x7f5f('0x5')]();var fs_extra=require(_0x7f5f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7f5f('0x7'));var config=require(_0x7f5f('0x8'));var controller=require(_0x7f5f('0x9'));router[_0x7f5f('0xa')]('/',auth[_0x7f5f('0xb')](),controller[_0x7f5f('0xc')]);router[_0x7f5f('0xa')]('/:id',auth[_0x7f5f('0xb')](),controller[_0x7f5f('0xd')]);router[_0x7f5f('0xa')]('/:id/fields',auth[_0x7f5f('0xb')](),controller[_0x7f5f('0xe')]);router[_0x7f5f('0xa')](_0x7f5f('0xf'),auth[_0x7f5f('0xb')](),controller[_0x7f5f('0x10')]);router[_0x7f5f('0xa')](_0x7f5f('0x11'),auth[_0x7f5f('0xb')](),controller[_0x7f5f('0x12')]);router[_0x7f5f('0x13')]('/',auth[_0x7f5f('0xb')](),controller[_0x7f5f('0x14')]);router['put'](_0x7f5f('0x15'),auth[_0x7f5f('0xb')](),controller[_0x7f5f('0x16')]);router['delete'](_0x7f5f('0x15'),auth['isAuthenticated'](),controller['destroy']);module[_0x7f5f('0x17')]=router;
\ No newline at end of file
index fb46976..1b8f828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a03=['sequelize','exports','STRING'];(function(_0x81a8b2,_0x63b173){var _0x253d3f=function(_0x110823){while(--_0x110823){_0x81a8b2['push'](_0x81a8b2['shift']());}};_0x253d3f(++_0x63b173);}(_0x4a03,0x7b));var _0x34a0=function(_0x3da10e,_0xbf3f19){_0x3da10e=_0x3da10e-0x0;var _0x18f0cd=_0x4a03[_0x3da10e];return _0x18f0cd;};'use strict';var Sequelize=require(_0x34a0('0x0'));module[_0x34a0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x34a0('0x2')]}};
\ No newline at end of file
+var _0x00e8=['exports','STRING','sequelize'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x00e8,0xf5));var _0x800e=function(_0x12db12,_0x3077d6){_0x12db12=_0x12db12-0x0;var _0x258f55=_0x00e8[_0x12db12];return _0x258f55;};'use strict';var Sequelize=require(_0x800e('0x0'));module[_0x800e('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x800e('0x2')]}};
\ No newline at end of file
index 9a55bc3..9d5e9a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8829=['type','key','model','name','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','pick','merge','where','filter','count','include','findAll','rows','catch','show','rawAttributes','length','includeAll','options','find','create','body','params','getFields','findOne','ServicenowField','sort','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','then','destroy','error','send','index','map','ServicenowConfiguration'];(function(_0x381741,_0x5011cf){var _0x1092c7=function(_0xd1177){while(--_0xd1177){_0x381741['push'](_0x381741['shift']());}};_0x1092c7(++_0x5011cf);}(_0x8829,0x10f));var _0x9882=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8829[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9882('0x0'));var rimraf=require(_0x9882('0x1'));var zipdir=require(_0x9882('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9882('0x3'));var moment=require(_0x9882('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9882('0x5'));var path=require(_0x9882('0x6'));var sox=require('sox');var csv=require(_0x9882('0x7'));var ejs=require(_0x9882('0x8'));var fs=require('fs');var fs_extra=require(_0x9882('0x9'));var _=require(_0x9882('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9882('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9882('0x7'));var querystring=require(_0x9882('0xc'));var Papa=require('papaparse');var Redis=require(_0x9882('0xd'));var authService=require(_0x9882('0xe'));var qs=require(_0x9882('0xf'));var as=require(_0x9882('0x10'));var hardwareService=require(_0x9882('0x11'));var logger=require(_0x9882('0x12'))(_0x9882('0x13'));var utils=require(_0x9882('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9882('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x377557,_0x39e987){_0x39e987=_0x39e987||0xcc;return function(_0x12fe3a){if(_0x12fe3a){return _0x377557[_0x9882('0x16')](_0x39e987);}return _0x377557[_0x9882('0x17')](_0x39e987)[_0x9882('0x18')]();};}function respondWithResult(_0x36c926,_0x29976b){_0x29976b=_0x29976b||0xc8;return function(_0x13aeef){if(_0x13aeef){return _0x36c926[_0x9882('0x17')](_0x29976b)[_0x9882('0x19')](_0x13aeef);}};}function respondWithFilteredResult(_0x10de45,_0x373097){return function(_0x3afc50){if(_0x3afc50){var _0x50effa=typeof _0x373097[_0x9882('0x1a')]===_0x9882('0x1b')&&typeof _0x373097[_0x9882('0x1c')]===_0x9882('0x1b');var _0x487657=_0x3afc50['count'];var _0x3de5ee=_0x50effa?0x0:_0x373097['offset'];var _0x5061a9=_0x50effa?_0x3afc50['count']:_0x373097[_0x9882('0x1a')]+_0x373097[_0x9882('0x1c')];var _0x18fab5;if(_0x5061a9>=_0x487657){_0x5061a9=_0x487657;_0x18fab5=0xc8;}else{_0x18fab5=0xce;}_0x10de45[_0x9882('0x17')](_0x18fab5);return _0x10de45[_0x9882('0x1d')](_0x9882('0x1e'),_0x3de5ee+'-'+_0x5061a9+'/'+_0x487657)[_0x9882('0x19')](_0x3afc50);}return null;};}function patchUpdates(_0x3de2f0){return function(_0x5bc3d5){try{jsonpatch['apply'](_0x5bc3d5,_0x3de2f0,!![]);}catch(_0x1a3ed5){return BPromise[_0x9882('0x1f')](_0x1a3ed5);}return _0x5bc3d5[_0x9882('0x20')]();};}function saveUpdates(_0x335878,_0x2d7265){return function(_0x187307){if(_0x187307){return _0x187307[_0x9882('0x21')](_0x335878)[_0x9882('0x22')](function(_0x467cc9){return _0x467cc9;});}return null;};}function removeEntity(_0x37653a,_0x3d56a7){return function(_0xd4fab){if(_0xd4fab){return _0xd4fab[_0x9882('0x23')]()[_0x9882('0x22')](function(){_0x37653a[_0x9882('0x17')](0xcc)[_0x9882('0x18')]();});}};}function handleEntityNotFound(_0x415672,_0x2df178){return function(_0x3a01e7){if(!_0x3a01e7){_0x415672[_0x9882('0x16')](0x194);}return _0x3a01e7;};}function handleError(_0x159e8b,_0x4b8312){_0x4b8312=_0x4b8312||0x1f4;return function(_0x5554fd){logger[_0x9882('0x24')](_0x5554fd['stack']);if(_0x5554fd['name']){delete _0x5554fd['name'];}_0x159e8b[_0x9882('0x17')](_0x4b8312)[_0x9882('0x25')](_0x5554fd);};}exports[_0x9882('0x26')]=function(_0x495b5d,_0x39aa78){var _0x43baba={},_0x1716fc={},_0x1a0ac5={'count':0x0,'rows':[]};var _0x4e7f70=_[_0x9882('0x27')](db[_0x9882('0x28')]['rawAttributes'],function(_0x2f3e3b){return{'name':_0x2f3e3b['fieldName'],'type':_0x2f3e3b[_0x9882('0x29')][_0x9882('0x2a')]};});_0x1716fc[_0x9882('0x2b')]=_[_0x9882('0x27')](_0x4e7f70,_0x9882('0x2c'));_0x1716fc[_0x9882('0x2d')]=_[_0x9882('0x2e')](_0x495b5d[_0x9882('0x2d')]);_0x1716fc[_0x9882('0x2f')]=_['intersection'](_0x1716fc['model'],_0x1716fc[_0x9882('0x2d')]);_0x43baba[_0x9882('0x30')]=_[_0x9882('0x31')](_0x1716fc[_0x9882('0x2b')],qs['fields'](_0x495b5d['query'][_0x9882('0x32')]));_0x43baba[_0x9882('0x30')]=_0x43baba[_0x9882('0x30')]['length']?_0x43baba[_0x9882('0x30')]:_0x1716fc[_0x9882('0x2b')];if(!_0x495b5d[_0x9882('0x2d')][_0x9882('0x33')](_0x9882('0x34'))){_0x43baba[_0x9882('0x1c')]=qs['limit'](_0x495b5d[_0x9882('0x2d')]['limit']);_0x43baba[_0x9882('0x1a')]=qs['offset'](_0x495b5d[_0x9882('0x2d')][_0x9882('0x1a')]);}_0x43baba[_0x9882('0x35')]=qs['sort'](_0x495b5d['query']['sort']);_0x43baba['where']=qs[_0x9882('0x2f')](_[_0x9882('0x36')](_0x495b5d['query'],_0x1716fc[_0x9882('0x2f')]),_0x4e7f70);if(_0x495b5d['query']['filter']){_0x43baba['where']=_[_0x9882('0x37')](_0x43baba[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x4e7f70,function(_0x58cb38){if(_0x58cb38[_0x9882('0x29')]!=='VIRTUAL'){var _0x2f1adb={};_0x2f1adb[_0x58cb38[_0x9882('0x2c')]]={'$like':'%'+_0x495b5d['query'][_0x9882('0x39')]+'%'};return _0x2f1adb;}})});}_0x43baba=_[_0x9882('0x37')]({},_0x43baba,_0x495b5d['options']);var _0x39c703={'where':_0x43baba[_0x9882('0x38')]};return db[_0x9882('0x28')][_0x9882('0x3a')](_0x39c703)[_0x9882('0x22')](function(_0x415eeb){_0x1a0ac5[_0x9882('0x3a')]=_0x415eeb;if(_0x495b5d[_0x9882('0x2d')]['includeAll']){_0x43baba[_0x9882('0x3b')]=[{'all':!![]}];}return db[_0x9882('0x28')][_0x9882('0x3c')](_0x43baba);})[_0x9882('0x22')](function(_0xd26c27){_0x1a0ac5[_0x9882('0x3d')]=_0xd26c27;return _0x1a0ac5;})[_0x9882('0x22')](respondWithFilteredResult(_0x39aa78,_0x43baba))[_0x9882('0x3e')](handleError(_0x39aa78,null));};exports[_0x9882('0x3f')]=function(_0x3d721d,_0x470607){var _0x23ab62={'raw':![],'where':{'id':_0x3d721d['params']['id']}},_0x2efe8a={};_0x2efe8a[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x28')][_0x9882('0x40')]);_0x2efe8a[_0x9882('0x2d')]=_[_0x9882('0x2e')](_0x3d721d[_0x9882('0x2d')]);_0x2efe8a[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x2efe8a[_0x9882('0x2b')],_0x2efe8a[_0x9882('0x2d')]);_0x23ab62[_0x9882('0x30')]=_[_0x9882('0x31')](_0x2efe8a[_0x9882('0x2b')],qs[_0x9882('0x32')](_0x3d721d[_0x9882('0x2d')][_0x9882('0x32')]));_0x23ab62[_0x9882('0x30')]=_0x23ab62[_0x9882('0x30')][_0x9882('0x41')]?_0x23ab62[_0x9882('0x30')]:_0x2efe8a[_0x9882('0x2b')];if(_0x3d721d['query'][_0x9882('0x42')]){_0x23ab62[_0x9882('0x3b')]=[{'all':!![]}];}_0x23ab62=_['merge']({},_0x23ab62,_0x3d721d[_0x9882('0x43')]);return db[_0x9882('0x28')][_0x9882('0x44')](_0x23ab62)[_0x9882('0x22')](handleEntityNotFound(_0x470607,null))['then'](respondWithResult(_0x470607,null))[_0x9882('0x3e')](handleError(_0x470607,null));};exports[_0x9882('0x45')]=function(_0x1473c3,_0x3fbe6c){return db[_0x9882('0x28')][_0x9882('0x45')](_0x1473c3['body'],{})['then'](respondWithResult(_0x3fbe6c,0xc9))[_0x9882('0x3e')](handleError(_0x3fbe6c,null));};exports[_0x9882('0x21')]=function(_0xac3e76,_0x336dc1){if(_0xac3e76[_0x9882('0x46')]['id']){delete _0xac3e76[_0x9882('0x46')]['id'];}return db[_0x9882('0x28')]['find']({'where':{'id':_0xac3e76[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x336dc1,null))[_0x9882('0x22')](saveUpdates(_0xac3e76[_0x9882('0x46')],null))['then'](respondWithResult(_0x336dc1,null))['catch'](handleError(_0x336dc1,null));};exports[_0x9882('0x23')]=function(_0x477864,_0x2f11d5){return db[_0x9882('0x28')][_0x9882('0x44')]({'where':{'id':_0x477864[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x2f11d5,null))[_0x9882('0x22')](removeEntity(_0x2f11d5,null))[_0x9882('0x3e')](handleError(_0x2f11d5,null));};exports[_0x9882('0x48')]=function(_0x1781bc,_0x8ac135,_0x287ba9){var _0x330798={};var _0x4b52d3={};var _0x51dc55;var _0x58d25b;return db[_0x9882('0x28')][_0x9882('0x49')]({'where':{'id':_0x1781bc[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x8ac135,null))['then'](function(_0x303162){if(_0x303162){_0x51dc55=_0x303162;_0x4b52d3[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x4b52d3['query']=_[_0x9882('0x2e')](_0x1781bc[_0x9882('0x2d')]);_0x4b52d3[_0x9882('0x2f')]=_['intersection'](_0x4b52d3[_0x9882('0x2b')],_0x4b52d3['query']);_0x330798[_0x9882('0x30')]=_[_0x9882('0x31')](_0x4b52d3[_0x9882('0x2b')],qs['fields'](_0x1781bc[_0x9882('0x2d')][_0x9882('0x32')]));_0x330798[_0x9882('0x30')]=_0x330798[_0x9882('0x30')][_0x9882('0x41')]?_0x330798['attributes']:_0x4b52d3['model'];_0x330798['order']=qs['sort'](_0x1781bc[_0x9882('0x2d')][_0x9882('0x4b')]);_0x330798[_0x9882('0x38')]=qs['filters'](_[_0x9882('0x36')](_0x1781bc['query'],_0x4b52d3[_0x9882('0x2f')]));if(_0x1781bc['query'][_0x9882('0x39')]){_0x330798[_0x9882('0x38')]=_[_0x9882('0x37')](_0x330798[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x330798['attributes'],function(_0x3d6293){var _0x4501e2={};_0x4501e2[_0x3d6293]={'$like':'%'+_0x1781bc[_0x9882('0x2d')][_0x9882('0x39')]+'%'};return _0x4501e2;})});}_0x330798=_[_0x9882('0x37')]({},_0x330798,_0x1781bc[_0x9882('0x43')]);return _0x51dc55['getFields'](_0x330798);}})[_0x9882('0x22')](function(_0x2d8b89){if(_0x2d8b89){_0x58d25b=_0x2d8b89[_0x9882('0x41')];if(!_0x1781bc['query'][_0x9882('0x33')](_0x9882('0x34'))){_0x330798[_0x9882('0x1c')]=qs['limit'](_0x1781bc['query'][_0x9882('0x1c')]);_0x330798[_0x9882('0x1a')]=qs[_0x9882('0x1a')](_0x1781bc[_0x9882('0x2d')][_0x9882('0x1a')]);}return _0x51dc55[_0x9882('0x48')](_0x330798);}})[_0x9882('0x22')](function(_0x2696c5){if(_0x2696c5){return _0x2696c5?{'count':_0x58d25b,'rows':_0x2696c5}:null;}})['then'](respondWithResult(_0x8ac135,null))['catch'](handleError(_0x8ac135,null));};exports['getSubjects']=function(_0x5f5664,_0x26379a,_0x1d9c7b){var _0x559d6b={};var _0x5bebc7={};var _0x567ec1;var _0x4da263;return db[_0x9882('0x28')]['findOne']({'where':{'id':_0x5f5664[_0x9882('0x47')]['id']}})[_0x9882('0x22')](handleEntityNotFound(_0x26379a,null))['then'](function(_0x2ab607){if(_0x2ab607){_0x567ec1=_0x2ab607;_0x5bebc7[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x5bebc7['query']=_[_0x9882('0x2e')](_0x5f5664[_0x9882('0x2d')]);_0x5bebc7[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x5bebc7[_0x9882('0x2b')],_0x5bebc7[_0x9882('0x2d')]);_0x559d6b[_0x9882('0x30')]=_['intersection'](_0x5bebc7[_0x9882('0x2b')],qs[_0x9882('0x32')](_0x5f5664[_0x9882('0x2d')][_0x9882('0x32')]));_0x559d6b[_0x9882('0x30')]=_0x559d6b[_0x9882('0x30')][_0x9882('0x41')]?_0x559d6b[_0x9882('0x30')]:_0x5bebc7[_0x9882('0x2b')];_0x559d6b[_0x9882('0x35')]=qs[_0x9882('0x4b')](_0x5f5664[_0x9882('0x2d')][_0x9882('0x4b')]);_0x559d6b[_0x9882('0x38')]=qs['filters'](_[_0x9882('0x36')](_0x5f5664[_0x9882('0x2d')],_0x5bebc7[_0x9882('0x2f')]));if(_0x5f5664[_0x9882('0x2d')]['filter']){_0x559d6b[_0x9882('0x38')]=_[_0x9882('0x37')](_0x559d6b[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x559d6b['attributes'],function(_0x4de9a6){var _0xea4312={};_0xea4312[_0x4de9a6]={'$like':'%'+_0x5f5664[_0x9882('0x2d')][_0x9882('0x39')]+'%'};return _0xea4312;})});}_0x559d6b=_[_0x9882('0x37')]({},_0x559d6b,_0x5f5664['options']);return _0x567ec1[_0x9882('0x4c')](_0x559d6b);}})[_0x9882('0x22')](function(_0x39eb84){if(_0x39eb84){_0x4da263=_0x39eb84[_0x9882('0x41')];if(!_0x5f5664[_0x9882('0x2d')][_0x9882('0x33')]('nolimit')){_0x559d6b['limit']=qs['limit'](_0x5f5664['query'][_0x9882('0x1c')]);_0x559d6b[_0x9882('0x1a')]=qs['offset'](_0x5f5664[_0x9882('0x2d')][_0x9882('0x1a')]);}return _0x567ec1[_0x9882('0x4c')](_0x559d6b);}})[_0x9882('0x22')](function(_0x22d1dd){if(_0x22d1dd){return _0x22d1dd?{'count':_0x4da263,'rows':_0x22d1dd}:null;}})[_0x9882('0x22')](respondWithResult(_0x26379a,null))[_0x9882('0x3e')](handleError(_0x26379a,null));};exports[_0x9882('0x4d')]=function(_0x584f21,_0x784874,_0x32939f){var _0x39bba5={};var _0x261c66={};var _0x160d57;var _0x495515;return db['ServicenowConfiguration'][_0x9882('0x49')]({'where':{'id':_0x584f21[_0x9882('0x47')]['id']}})['then'](handleEntityNotFound(_0x784874,null))[_0x9882('0x22')](function(_0x34bb2f){if(_0x34bb2f){_0x160d57=_0x34bb2f;_0x261c66[_0x9882('0x2b')]=_[_0x9882('0x2e')](db[_0x9882('0x4a')][_0x9882('0x40')]);_0x261c66[_0x9882('0x2d')]=_['keys'](_0x584f21['query']);_0x261c66[_0x9882('0x2f')]=_[_0x9882('0x31')](_0x261c66[_0x9882('0x2b')],_0x261c66[_0x9882('0x2d')]);_0x39bba5['attributes']=_[_0x9882('0x31')](_0x261c66[_0x9882('0x2b')],qs['fields'](_0x584f21[_0x9882('0x2d')][_0x9882('0x32')]));_0x39bba5['attributes']=_0x39bba5[_0x9882('0x30')][_0x9882('0x41')]?_0x39bba5['attributes']:_0x261c66[_0x9882('0x2b')];_0x39bba5[_0x9882('0x35')]=qs['sort'](_0x584f21[_0x9882('0x2d')]['sort']);_0x39bba5[_0x9882('0x38')]=qs[_0x9882('0x2f')](_[_0x9882('0x36')](_0x584f21[_0x9882('0x2d')],_0x261c66['filters']));if(_0x584f21['query'][_0x9882('0x39')]){_0x39bba5[_0x9882('0x38')]=_[_0x9882('0x37')](_0x39bba5[_0x9882('0x38')],{'$or':_[_0x9882('0x27')](_0x39bba5[_0x9882('0x30')],function(_0x4d0380){var _0x3c6bcd={};_0x3c6bcd[_0x4d0380]={'$like':'%'+_0x584f21[_0x9882('0x2d')]['filter']+'%'};return _0x3c6bcd;})});}_0x39bba5=_[_0x9882('0x37')]({},_0x39bba5,_0x584f21[_0x9882('0x43')]);return _0x160d57[_0x9882('0x4d')](_0x39bba5);}})[_0x9882('0x22')](function(_0x11e5b3){if(_0x11e5b3){_0x495515=_0x11e5b3['length'];if(!_0x584f21['query']['hasOwnProperty'](_0x9882('0x34'))){_0x39bba5[_0x9882('0x1c')]=qs['limit'](_0x584f21[_0x9882('0x2d')][_0x9882('0x1c')]);_0x39bba5['offset']=qs[_0x9882('0x1a')](_0x584f21[_0x9882('0x2d')]['offset']);}return _0x160d57[_0x9882('0x4d')](_0x39bba5);}})['then'](function(_0x3dc5a4){if(_0x3dc5a4){return _0x3dc5a4?{'count':_0x495515,'rows':_0x3dc5a4}:null;}})[_0x9882('0x22')](respondWithResult(_0x784874,null))[_0x9882('0x3e')](handleError(_0x784874,null));};
\ No newline at end of file
+var _0x9d14=['attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','includeAll','findAll','rows','params','include','options','create','catch','body','find','getFields','ServicenowField','getSubjects','findOne','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','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','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','end','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','key','query','keys','filters','intersection','model','fields'];(function(_0x28c294,_0x30b186){var _0x2481fc=function(_0xb856c4){while(--_0xb856c4){_0x28c294['push'](_0x28c294['shift']());}};_0x2481fc(++_0x30b186);}(_0x9d14,0x11a));var _0x49d1=function(_0x8eab72,_0x466dc9){_0x8eab72=_0x8eab72-0x0;var _0x332af9=_0x9d14[_0x8eab72];return _0x332af9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x49d1('0x0'));var zipdir=require(_0x49d1('0x1'));var jsonpatch=require(_0x49d1('0x2'));var rp=require(_0x49d1('0x3'));var moment=require(_0x49d1('0x4'));var BPromise=require(_0x49d1('0x5'));var Mustache=require('mustache');var util=require(_0x49d1('0x6'));var path=require(_0x49d1('0x7'));var sox=require(_0x49d1('0x8'));var csv=require(_0x49d1('0x9'));var ejs=require(_0x49d1('0xa'));var fs=require('fs');var fs_extra=require(_0x49d1('0xb'));var _=require(_0x49d1('0xc'));var squel=require(_0x49d1('0xd'));var crypto=require(_0x49d1('0xe'));var jsforce=require(_0x49d1('0xf'));var deskjs=require(_0x49d1('0x10'));var toCsv=require(_0x49d1('0x9'));var querystring=require(_0x49d1('0x11'));var Papa=require(_0x49d1('0x12'));var Redis=require(_0x49d1('0x13'));var authService=require(_0x49d1('0x14'));var qs=require(_0x49d1('0x15'));var as=require(_0x49d1('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49d1('0x17'))(_0x49d1('0x18'));var utils=require(_0x49d1('0x19'));var config=require(_0x49d1('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x49d1('0x1b'))['db'];function respondWithStatusCode(_0x40d872,_0x4d0b4a){_0x4d0b4a=_0x4d0b4a||0xcc;return function(_0x1da20f){if(_0x1da20f){return _0x40d872[_0x49d1('0x1c')](_0x4d0b4a);}return _0x40d872[_0x49d1('0x1d')](_0x4d0b4a)['end']();};}function respondWithResult(_0x101508,_0x36cb6a){_0x36cb6a=_0x36cb6a||0xc8;return function(_0x5969d3){if(_0x5969d3){return _0x101508[_0x49d1('0x1d')](_0x36cb6a)[_0x49d1('0x1e')](_0x5969d3);}};}function respondWithFilteredResult(_0x5ec067,_0x3ed44e){return function(_0xe1ec3a){if(_0xe1ec3a){var _0x3ef6b8=typeof _0x3ed44e[_0x49d1('0x1f')]===_0x49d1('0x20')&&typeof _0x3ed44e[_0x49d1('0x21')]===_0x49d1('0x20');var _0x592b1b=_0xe1ec3a[_0x49d1('0x22')];var _0x2800ae=_0x3ef6b8?0x0:_0x3ed44e['offset'];var _0x3fc2f5=_0x3ef6b8?_0xe1ec3a['count']:_0x3ed44e[_0x49d1('0x1f')]+_0x3ed44e[_0x49d1('0x21')];var _0x17f62d;if(_0x3fc2f5>=_0x592b1b){_0x3fc2f5=_0x592b1b;_0x17f62d=0xc8;}else{_0x17f62d=0xce;}_0x5ec067[_0x49d1('0x1d')](_0x17f62d);return _0x5ec067[_0x49d1('0x23')](_0x49d1('0x24'),_0x2800ae+'-'+_0x3fc2f5+'/'+_0x592b1b)['json'](_0xe1ec3a);}return null;};}function patchUpdates(_0x3d0c3c){return function(_0x3119e7){try{jsonpatch[_0x49d1('0x25')](_0x3119e7,_0x3d0c3c,!![]);}catch(_0x36ffcd){return BPromise['reject'](_0x36ffcd);}return _0x3119e7[_0x49d1('0x26')]();};}function saveUpdates(_0x4ae694,_0xfc6ef8){return function(_0x38cb92){if(_0x38cb92){return _0x38cb92[_0x49d1('0x27')](_0x4ae694)['then'](function(_0x314bee){return _0x314bee;});}return null;};}function removeEntity(_0x35b0ce,_0x512335){return function(_0x54bab3){if(_0x54bab3){return _0x54bab3[_0x49d1('0x28')]()[_0x49d1('0x29')](function(){_0x35b0ce[_0x49d1('0x1d')](0xcc)[_0x49d1('0x2a')]();});}};}function handleEntityNotFound(_0x3c3bea,_0x2432f6){return function(_0x298daa){if(!_0x298daa){_0x3c3bea[_0x49d1('0x1c')](0x194);}return _0x298daa;};}function handleError(_0x28e479,_0x295313){_0x295313=_0x295313||0x1f4;return function(_0x4eeecd){logger[_0x49d1('0x2b')](_0x4eeecd[_0x49d1('0x2c')]);if(_0x4eeecd[_0x49d1('0x2d')]){delete _0x4eeecd[_0x49d1('0x2d')];}_0x28e479[_0x49d1('0x1d')](_0x295313)[_0x49d1('0x2e')](_0x4eeecd);};}exports[_0x49d1('0x2f')]=function(_0xd309c5,_0x377f0e){var _0x2fd1d0={},_0x5f024d={},_0x54356e={'count':0x0,'rows':[]};var _0x11e842=_[_0x49d1('0x30')](db[_0x49d1('0x31')][_0x49d1('0x32')],function(_0x28b140){return{'name':_0x28b140['fieldName'],'type':_0x28b140['type'][_0x49d1('0x33')]};});_0x5f024d['model']=_[_0x49d1('0x30')](_0x11e842,'name');_0x5f024d[_0x49d1('0x34')]=_[_0x49d1('0x35')](_0xd309c5[_0x49d1('0x34')]);_0x5f024d[_0x49d1('0x36')]=_[_0x49d1('0x37')](_0x5f024d[_0x49d1('0x38')],_0x5f024d[_0x49d1('0x34')]);_0x2fd1d0['attributes']=_[_0x49d1('0x37')](_0x5f024d['model'],qs[_0x49d1('0x39')](_0xd309c5['query'][_0x49d1('0x39')]));_0x2fd1d0[_0x49d1('0x3a')]=_0x2fd1d0['attributes'][_0x49d1('0x3b')]?_0x2fd1d0['attributes']:_0x5f024d['model'];if(!_0xd309c5[_0x49d1('0x34')][_0x49d1('0x3c')](_0x49d1('0x3d'))){_0x2fd1d0[_0x49d1('0x21')]=qs[_0x49d1('0x21')](_0xd309c5['query'][_0x49d1('0x21')]);_0x2fd1d0['offset']=qs[_0x49d1('0x1f')](_0xd309c5['query']['offset']);}_0x2fd1d0[_0x49d1('0x3e')]=qs[_0x49d1('0x3f')](_0xd309c5[_0x49d1('0x34')]['sort']);_0x2fd1d0['where']=qs[_0x49d1('0x36')](_[_0x49d1('0x40')](_0xd309c5[_0x49d1('0x34')],_0x5f024d['filters']),_0x11e842);if(_0xd309c5[_0x49d1('0x34')][_0x49d1('0x41')]){_0x2fd1d0[_0x49d1('0x42')]=_[_0x49d1('0x43')](_0x2fd1d0['where'],{'$or':_['map'](_0x11e842,function(_0x10a4f0){if(_0x10a4f0[_0x49d1('0x44')]!==_0x49d1('0x45')){var _0xf60b1e={};_0xf60b1e[_0x10a4f0[_0x49d1('0x2d')]]={'$like':'%'+_0xd309c5[_0x49d1('0x34')][_0x49d1('0x41')]+'%'};return _0xf60b1e;}})});}_0x2fd1d0=_[_0x49d1('0x43')]({},_0x2fd1d0,_0xd309c5['options']);var _0x11e448={'where':_0x2fd1d0['where']};return db[_0x49d1('0x31')]['count'](_0x11e448)['then'](function(_0x1daaed){_0x54356e[_0x49d1('0x22')]=_0x1daaed;if(_0xd309c5[_0x49d1('0x34')][_0x49d1('0x46')]){_0x2fd1d0['include']=[{'all':!![]}];}return db[_0x49d1('0x31')][_0x49d1('0x47')](_0x2fd1d0);})[_0x49d1('0x29')](function(_0x665b8c){_0x54356e[_0x49d1('0x48')]=_0x665b8c;return _0x54356e;})['then'](respondWithFilteredResult(_0x377f0e,_0x2fd1d0))['catch'](handleError(_0x377f0e,null));};exports['show']=function(_0x2c9a18,_0xdbb390){var _0xc23bc8={'raw':![],'where':{'id':_0x2c9a18[_0x49d1('0x49')]['id']}},_0x134fd1={};_0x134fd1[_0x49d1('0x38')]=_[_0x49d1('0x35')](db[_0x49d1('0x31')][_0x49d1('0x32')]);_0x134fd1['query']=_[_0x49d1('0x35')](_0x2c9a18[_0x49d1('0x34')]);_0x134fd1[_0x49d1('0x36')]=_[_0x49d1('0x37')](_0x134fd1[_0x49d1('0x38')],_0x134fd1[_0x49d1('0x34')]);_0xc23bc8[_0x49d1('0x3a')]=_['intersection'](_0x134fd1[_0x49d1('0x38')],qs[_0x49d1('0x39')](_0x2c9a18[_0x49d1('0x34')]['fields']));_0xc23bc8[_0x49d1('0x3a')]=_0xc23bc8[_0x49d1('0x3a')][_0x49d1('0x3b')]?_0xc23bc8[_0x49d1('0x3a')]:_0x134fd1['model'];if(_0x2c9a18[_0x49d1('0x34')][_0x49d1('0x46')]){_0xc23bc8[_0x49d1('0x4a')]=[{'all':!![]}];}_0xc23bc8=_[_0x49d1('0x43')]({},_0xc23bc8,_0x2c9a18[_0x49d1('0x4b')]);return db[_0x49d1('0x31')]['find'](_0xc23bc8)[_0x49d1('0x29')](handleEntityNotFound(_0xdbb390,null))['then'](respondWithResult(_0xdbb390,null))['catch'](handleError(_0xdbb390,null));};exports['create']=function(_0x2731c8,_0x16442b){return db['ServicenowConfiguration'][_0x49d1('0x4c')](_0x2731c8['body'],{})[_0x49d1('0x29')](respondWithResult(_0x16442b,0xc9))[_0x49d1('0x4d')](handleError(_0x16442b,null));};exports[_0x49d1('0x27')]=function(_0x5697b2,_0xaa2e54){if(_0x5697b2[_0x49d1('0x4e')]['id']){delete _0x5697b2[_0x49d1('0x4e')]['id'];}return db[_0x49d1('0x31')][_0x49d1('0x4f')]({'where':{'id':_0x5697b2[_0x49d1('0x49')]['id']}})['then'](handleEntityNotFound(_0xaa2e54,null))[_0x49d1('0x29')](saveUpdates(_0x5697b2['body'],null))[_0x49d1('0x29')](respondWithResult(_0xaa2e54,null))['catch'](handleError(_0xaa2e54,null));};exports[_0x49d1('0x28')]=function(_0x42d099,_0x153986){return db[_0x49d1('0x31')][_0x49d1('0x4f')]({'where':{'id':_0x42d099[_0x49d1('0x49')]['id']}})[_0x49d1('0x29')](handleEntityNotFound(_0x153986,null))[_0x49d1('0x29')](removeEntity(_0x153986,null))['catch'](handleError(_0x153986,null));};exports[_0x49d1('0x50')]=function(_0x2df3fb,_0x1c5818,_0x5cb0b3){var _0x205fa9={};var _0x1de1e7={};var _0x182ebf;var _0x2d9f39;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x2df3fb[_0x49d1('0x49')]['id']}})[_0x49d1('0x29')](handleEntityNotFound(_0x1c5818,null))['then'](function(_0xb55bc5){if(_0xb55bc5){_0x182ebf=_0xb55bc5;_0x1de1e7[_0x49d1('0x38')]=_[_0x49d1('0x35')](db[_0x49d1('0x51')][_0x49d1('0x32')]);_0x1de1e7['query']=_[_0x49d1('0x35')](_0x2df3fb[_0x49d1('0x34')]);_0x1de1e7['filters']=_['intersection'](_0x1de1e7[_0x49d1('0x38')],_0x1de1e7[_0x49d1('0x34')]);_0x205fa9[_0x49d1('0x3a')]=_[_0x49d1('0x37')](_0x1de1e7[_0x49d1('0x38')],qs[_0x49d1('0x39')](_0x2df3fb[_0x49d1('0x34')][_0x49d1('0x39')]));_0x205fa9['attributes']=_0x205fa9['attributes']['length']?_0x205fa9[_0x49d1('0x3a')]:_0x1de1e7[_0x49d1('0x38')];_0x205fa9['order']=qs[_0x49d1('0x3f')](_0x2df3fb[_0x49d1('0x34')][_0x49d1('0x3f')]);_0x205fa9[_0x49d1('0x42')]=qs[_0x49d1('0x36')](_['pick'](_0x2df3fb['query'],_0x1de1e7[_0x49d1('0x36')]));if(_0x2df3fb[_0x49d1('0x34')][_0x49d1('0x41')]){_0x205fa9[_0x49d1('0x42')]=_[_0x49d1('0x43')](_0x205fa9[_0x49d1('0x42')],{'$or':_[_0x49d1('0x30')](_0x205fa9[_0x49d1('0x3a')],function(_0x8f2884){var _0x12545a={};_0x12545a[_0x8f2884]={'$like':'%'+_0x2df3fb['query'][_0x49d1('0x41')]+'%'};return _0x12545a;})});}_0x205fa9=_[_0x49d1('0x43')]({},_0x205fa9,_0x2df3fb[_0x49d1('0x4b')]);return _0x182ebf[_0x49d1('0x50')](_0x205fa9);}})[_0x49d1('0x29')](function(_0x734d2e){if(_0x734d2e){_0x2d9f39=_0x734d2e[_0x49d1('0x3b')];if(!_0x2df3fb[_0x49d1('0x34')][_0x49d1('0x3c')](_0x49d1('0x3d'))){_0x205fa9[_0x49d1('0x21')]=qs[_0x49d1('0x21')](_0x2df3fb[_0x49d1('0x34')][_0x49d1('0x21')]);_0x205fa9['offset']=qs[_0x49d1('0x1f')](_0x2df3fb['query']['offset']);}return _0x182ebf['getFields'](_0x205fa9);}})[_0x49d1('0x29')](function(_0x3f730a){if(_0x3f730a){return _0x3f730a?{'count':_0x2d9f39,'rows':_0x3f730a}:null;}})[_0x49d1('0x29')](respondWithResult(_0x1c5818,null))[_0x49d1('0x4d')](handleError(_0x1c5818,null));};exports[_0x49d1('0x52')]=function(_0x26bc0e,_0x48daf6,_0xdcc13d){var _0x31a239={};var _0x4b504b={};var _0x434107;var _0x150a4c;return db[_0x49d1('0x31')][_0x49d1('0x53')]({'where':{'id':_0x26bc0e[_0x49d1('0x49')]['id']}})[_0x49d1('0x29')](handleEntityNotFound(_0x48daf6,null))[_0x49d1('0x29')](function(_0x2e010c){if(_0x2e010c){_0x434107=_0x2e010c;_0x4b504b[_0x49d1('0x38')]=_[_0x49d1('0x35')](db[_0x49d1('0x51')]['rawAttributes']);_0x4b504b[_0x49d1('0x34')]=_[_0x49d1('0x35')](_0x26bc0e[_0x49d1('0x34')]);_0x4b504b[_0x49d1('0x36')]=_[_0x49d1('0x37')](_0x4b504b[_0x49d1('0x38')],_0x4b504b[_0x49d1('0x34')]);_0x31a239[_0x49d1('0x3a')]=_[_0x49d1('0x37')](_0x4b504b[_0x49d1('0x38')],qs[_0x49d1('0x39')](_0x26bc0e[_0x49d1('0x34')][_0x49d1('0x39')]));_0x31a239[_0x49d1('0x3a')]=_0x31a239[_0x49d1('0x3a')][_0x49d1('0x3b')]?_0x31a239[_0x49d1('0x3a')]:_0x4b504b['model'];_0x31a239[_0x49d1('0x3e')]=qs[_0x49d1('0x3f')](_0x26bc0e['query'][_0x49d1('0x3f')]);_0x31a239[_0x49d1('0x42')]=qs[_0x49d1('0x36')](_[_0x49d1('0x40')](_0x26bc0e[_0x49d1('0x34')],_0x4b504b[_0x49d1('0x36')]));if(_0x26bc0e[_0x49d1('0x34')][_0x49d1('0x41')]){_0x31a239[_0x49d1('0x42')]=_[_0x49d1('0x43')](_0x31a239[_0x49d1('0x42')],{'$or':_['map'](_0x31a239[_0x49d1('0x3a')],function(_0x1e24f3){var _0x4f974f={};_0x4f974f[_0x1e24f3]={'$like':'%'+_0x26bc0e['query'][_0x49d1('0x41')]+'%'};return _0x4f974f;})});}_0x31a239=_[_0x49d1('0x43')]({},_0x31a239,_0x26bc0e[_0x49d1('0x4b')]);return _0x434107[_0x49d1('0x52')](_0x31a239);}})[_0x49d1('0x29')](function(_0x5a2184){if(_0x5a2184){_0x150a4c=_0x5a2184[_0x49d1('0x3b')];if(!_0x26bc0e[_0x49d1('0x34')][_0x49d1('0x3c')](_0x49d1('0x3d'))){_0x31a239['limit']=qs[_0x49d1('0x21')](_0x26bc0e[_0x49d1('0x34')]['limit']);_0x31a239[_0x49d1('0x1f')]=qs[_0x49d1('0x1f')](_0x26bc0e[_0x49d1('0x34')][_0x49d1('0x1f')]);}return _0x434107[_0x49d1('0x52')](_0x31a239);}})[_0x49d1('0x29')](function(_0x227eca){if(_0x227eca){return _0x227eca?{'count':_0x150a4c,'rows':_0x227eca}:null;}})[_0x49d1('0x29')](respondWithResult(_0x48daf6,null))[_0x49d1('0x4d')](handleError(_0x48daf6,null));};exports[_0x49d1('0x54')]=function(_0x52e8a7,_0x33bc9a,_0x7896c0){var _0x50d3d4={};var _0x3853ce={};var _0xfae70e;var _0x5f059a;return db['ServicenowConfiguration'][_0x49d1('0x53')]({'where':{'id':_0x52e8a7[_0x49d1('0x49')]['id']}})[_0x49d1('0x29')](handleEntityNotFound(_0x33bc9a,null))[_0x49d1('0x29')](function(_0x29df86){if(_0x29df86){_0xfae70e=_0x29df86;_0x3853ce[_0x49d1('0x38')]=_[_0x49d1('0x35')](db[_0x49d1('0x51')]['rawAttributes']);_0x3853ce[_0x49d1('0x34')]=_[_0x49d1('0x35')](_0x52e8a7['query']);_0x3853ce[_0x49d1('0x36')]=_[_0x49d1('0x37')](_0x3853ce[_0x49d1('0x38')],_0x3853ce['query']);_0x50d3d4[_0x49d1('0x3a')]=_[_0x49d1('0x37')](_0x3853ce[_0x49d1('0x38')],qs[_0x49d1('0x39')](_0x52e8a7[_0x49d1('0x34')][_0x49d1('0x39')]));_0x50d3d4['attributes']=_0x50d3d4[_0x49d1('0x3a')][_0x49d1('0x3b')]?_0x50d3d4[_0x49d1('0x3a')]:_0x3853ce[_0x49d1('0x38')];_0x50d3d4[_0x49d1('0x3e')]=qs[_0x49d1('0x3f')](_0x52e8a7[_0x49d1('0x34')]['sort']);_0x50d3d4[_0x49d1('0x42')]=qs[_0x49d1('0x36')](_[_0x49d1('0x40')](_0x52e8a7[_0x49d1('0x34')],_0x3853ce[_0x49d1('0x36')]));if(_0x52e8a7[_0x49d1('0x34')][_0x49d1('0x41')]){_0x50d3d4[_0x49d1('0x42')]=_['merge'](_0x50d3d4[_0x49d1('0x42')],{'$or':_[_0x49d1('0x30')](_0x50d3d4[_0x49d1('0x3a')],function(_0x435816){var _0x46de58={};_0x46de58[_0x435816]={'$like':'%'+_0x52e8a7[_0x49d1('0x34')]['filter']+'%'};return _0x46de58;})});}_0x50d3d4=_[_0x49d1('0x43')]({},_0x50d3d4,_0x52e8a7[_0x49d1('0x4b')]);return _0xfae70e[_0x49d1('0x54')](_0x50d3d4);}})[_0x49d1('0x29')](function(_0x5add40){if(_0x5add40){_0x5f059a=_0x5add40[_0x49d1('0x3b')];if(!_0x52e8a7[_0x49d1('0x34')]['hasOwnProperty'](_0x49d1('0x3d'))){_0x50d3d4['limit']=qs[_0x49d1('0x21')](_0x52e8a7['query']['limit']);_0x50d3d4[_0x49d1('0x1f')]=qs['offset'](_0x52e8a7[_0x49d1('0x34')]['offset']);}return _0xfae70e[_0x49d1('0x54')](_0x50d3d4);}})[_0x49d1('0x29')](function(_0x40e676){if(_0x40e676){return _0x40e676?{'count':_0x5f059a,'rows':_0x40e676}:null;}})['then'](respondWithResult(_0x33bc9a,null))[_0x49d1('0x4d')](handleError(_0x33bc9a,null));};
\ No newline at end of file
index 8f8e712..f717db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x590a=['./intServicenowConfiguration.attributes','define','ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x3afbdf,_0x9e463b){var _0x5b6861=function(_0x31d287){while(--_0x31d287){_0x3afbdf['push'](_0x3afbdf['shift']());}};_0x5b6861(++_0x9e463b);}(_0x590a,0x159));var _0xa590=function(_0x38037f,_0x48c6d3){_0x38037f=_0x38037f-0x0;var _0x331304=_0x590a[_0x38037f];return _0x331304;};'use strict';var _=require('lodash');var util=require(_0xa590('0x0'));var logger=require(_0xa590('0x1'))(_0xa590('0x2'));var moment=require(_0xa590('0x3'));var BPromise=require(_0xa590('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa590('0x5'));var config=require(_0xa590('0x6'));var attributes=require(_0xa590('0x7'));module['exports']=function(_0x20f21b,_0x4c127b){return _0x20f21b[_0xa590('0x8')](_0xa590('0x9'),attributes,{'tableName':_0xa590('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a86=['define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x9a86,0x1ed));var _0x69a8=function(_0x187d80,_0x5b793f){_0x187d80=_0x187d80-0x0;var _0x498a77=_0x9a86[_0x187d80];return _0x498a77;};'use strict';var _=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var logger=require('../../config/logger')(_0x69a8('0x2'));var moment=require(_0x69a8('0x3'));var BPromise=require(_0x69a8('0x4'));var rp=require(_0x69a8('0x5'));var fs=require('fs');var path=require(_0x69a8('0x6'));var rimraf=require(_0x69a8('0x7'));var config=require(_0x69a8('0x8'));var attributes=require(_0x69a8('0x9'));module[_0x69a8('0xa')]=function(_0x36c9ac,_0x3ed1d5){return _0x36c9ac[_0x69a8('0xb')](_0x69a8('0xc'),attributes,{'tableName':_0x69a8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a9d5a0..e7a1181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf77f=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf77f,0x134));var _0xff77=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xf77f[_0x3635ce];return _0x97ecd0;};'use strict';var _=require(_0xff77('0x0'));var util=require('util');var moment=require(_0xff77('0x1'));var BPromise=require(_0xff77('0x2'));var rs=require(_0xff77('0x3'));var fs=require('fs');var Redis=require(_0xff77('0x4'));var db=require(_0xff77('0x5'))['db'];var utils=require(_0xff77('0x6'));var logger=require(_0xff77('0x7'))(_0xff77('0x8'));var config=require('../../config/environment');var jayson=require(_0xff77('0x9'));var client=jayson[_0xff77('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e6e64,_0x3c7cd9,_0x11735f){return new BPromise(function(_0x2c5b62,_0xecc548){return client['request'](_0x4e6e64,_0x11735f)[_0xff77('0xb')](function(_0x223112){logger[_0xff77('0xc')](_0xff77('0xd'),_0x3c7cd9,_0xff77('0xe'));logger[_0xff77('0xf')](_0xff77('0x10'),_0x3c7cd9,'request\x20sent',JSON[_0xff77('0x11')](_0x223112));if(_0x223112[_0xff77('0x12')]){if(_0x223112[_0xff77('0x12')][_0xff77('0x13')]===0x1f4){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x3c7cd9,_0x223112['error'][_0xff77('0x14')]);return _0xecc548(_0x223112[_0xff77('0x12')]['message']);}logger[_0xff77('0x12')](_0xff77('0xd'),_0x3c7cd9,_0x223112[_0xff77('0x12')][_0xff77('0x14')]);return _0x2c5b62(_0x223112['error'][_0xff77('0x14')]);}else{logger[_0xff77('0xc')](_0xff77('0xd'),_0x3c7cd9,_0xff77('0xe'));_0x2c5b62(_0x223112[_0xff77('0x15')]['message']);}})['catch'](function(_0x4a1189){logger[_0xff77('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c7cd9,_0x4a1189);_0xecc548(_0x4a1189);});});}
\ No newline at end of file
+var _0x3ca4=['client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x13cdd2,_0x9b289c){var _0x19914d=function(_0x31d997){while(--_0x31d997){_0x13cdd2['push'](_0x13cdd2['shift']());}};_0x19914d(++_0x9b289c);}(_0x3ca4,0xce));var _0x43ca=function(_0x57101b,_0x181c6e){_0x57101b=_0x57101b-0x0;var _0x43d74e=_0x3ca4[_0x57101b];return _0x43d74e;};'use strict';var _=require(_0x43ca('0x0'));var util=require(_0x43ca('0x1'));var moment=require(_0x43ca('0x2'));var BPromise=require(_0x43ca('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x43ca('0x4'));var db=require(_0x43ca('0x5'))['db'];var utils=require(_0x43ca('0x6'));var logger=require(_0x43ca('0x7'))(_0x43ca('0x8'));var config=require('../../config/environment');var jayson=require(_0x43ca('0x9'));var client=jayson[_0x43ca('0xa')][_0x43ca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x320a16,_0x27567e,_0x4e6cfe){return new BPromise(function(_0x2bc795,_0x223bc0){return client[_0x43ca('0xc')](_0x320a16,_0x4e6cfe)[_0x43ca('0xd')](function(_0xd2ee9e){logger[_0x43ca('0xe')](_0x43ca('0xf'),_0x27567e,_0x43ca('0x10'));logger[_0x43ca('0x11')](_0x43ca('0x12'),_0x27567e,_0x43ca('0x10'),JSON['stringify'](_0xd2ee9e));if(_0xd2ee9e[_0x43ca('0x13')]){if(_0xd2ee9e[_0x43ca('0x13')][_0x43ca('0x14')]===0x1f4){logger[_0x43ca('0x13')](_0x43ca('0xf'),_0x27567e,_0xd2ee9e[_0x43ca('0x13')]['message']);return _0x223bc0(_0xd2ee9e['error'][_0x43ca('0x15')]);}logger[_0x43ca('0x13')](_0x43ca('0xf'),_0x27567e,_0xd2ee9e[_0x43ca('0x13')][_0x43ca('0x15')]);return _0x2bc795(_0xd2ee9e[_0x43ca('0x13')][_0x43ca('0x15')]);}else{logger[_0x43ca('0xe')](_0x43ca('0xf'),_0x27567e,'request\x20sent');_0x2bc795(_0xd2ee9e[_0x43ca('0x16')]['message']);}})[_0x43ca('0x17')](function(_0xb6e880){logger[_0x43ca('0x13')](_0x43ca('0xf'),_0x27567e,_0xb6e880);_0x223bc0(_0xb6e880);});});}
\ No newline at end of file
index 5047b2d..ddebacd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac3f=['/:id','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x5c88df,_0x13b00f){var _0x4285be=function(_0x12b0fe){while(--_0x12b0fe){_0x5c88df['push'](_0x5c88df['shift']());}};_0x4285be(++_0x13b00f);}(_0xac3f,0x1cf));var _0xfac3=function(_0x266ddc,_0x45aa52){_0x266ddc=_0x266ddc-0x0;var _0x39c1d7=_0xac3f[_0x266ddc];return _0x39c1d7;};'use strict';var multer=require(_0xfac3('0x0'));var util=require(_0xfac3('0x1'));var path=require(_0xfac3('0x2'));var timeout=require(_0xfac3('0x3'));var express=require('express');var router=express[_0xfac3('0x4')]();var fs_extra=require(_0xfac3('0x5'));var auth=require(_0xfac3('0x6'));var interaction=require(_0xfac3('0x7'));var config=require(_0xfac3('0x8'));var controller=require('./intServicenowField.controller');router[_0xfac3('0x9')]('/',auth[_0xfac3('0xa')](),controller[_0xfac3('0xb')]);router[_0xfac3('0x9')](_0xfac3('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xfac3('0xd')]('/',auth[_0xfac3('0xa')](),controller[_0xfac3('0xe')]);router[_0xfac3('0xf')](_0xfac3('0xc'),auth[_0xfac3('0xa')](),controller[_0xfac3('0x10')]);router['delete'](_0xfac3('0xc'),auth[_0xfac3('0xa')](),controller[_0xfac3('0x11')]);module[_0xfac3('0x12')]=router;
\ No newline at end of file
+var _0xf8da=['../../config/environment','./intServicenowField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x555069,_0x23d66a){var _0x100af7=function(_0x1606bd){while(--_0x1606bd){_0x555069['push'](_0x555069['shift']());}};_0x100af7(++_0x23d66a);}(_0xf8da,0xde));var _0xaf8d=function(_0x10de1b,_0x443e1f){_0x10de1b=_0x10de1b-0x0;var _0x384a2e=_0xf8da[_0x10de1b];return _0x384a2e;};'use strict';var multer=require(_0xaf8d('0x0'));var util=require('util');var path=require(_0xaf8d('0x1'));var timeout=require(_0xaf8d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xaf8d('0x3'));var auth=require(_0xaf8d('0x4'));var interaction=require(_0xaf8d('0x5'));var config=require(_0xaf8d('0x6'));var controller=require(_0xaf8d('0x7'));router['get']('/',auth[_0xaf8d('0x8')](),controller[_0xaf8d('0x9')]);router[_0xaf8d('0xa')](_0xaf8d('0xb'),auth[_0xaf8d('0x8')](),controller[_0xaf8d('0xc')]);router[_0xaf8d('0xd')]('/',auth[_0xaf8d('0x8')](),controller[_0xaf8d('0xe')]);router[_0xaf8d('0xf')](_0xaf8d('0xb'),auth[_0xaf8d('0x8')](),controller[_0xaf8d('0x10')]);router[_0xaf8d('0x11')](_0xaf8d('0xb'),auth[_0xaf8d('0x8')](),controller['destroy']);module[_0xaf8d('0x12')]=router;
\ No newline at end of file
index de54ad7..a28e451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e88=['STRING','variable','BOOLEAN','sequelize','string','customVariable','keyValue','picklist'];(function(_0x5a7b40,_0x585230){var _0x463559=function(_0x280fe4){while(--_0x280fe4){_0x5a7b40['push'](_0x5a7b40['shift']());}};_0x463559(++_0x585230);}(_0x3e88,0xb3));var _0x83e8=function(_0x5eaa1f,_0xafbf6b){_0x5eaa1f=_0x5eaa1f-0x0;var _0x3f056d=_0x3e88[_0x5eaa1f];return _0x3f056d;};'use strict';var Sequelize=require(_0x83e8('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x83e8('0x1'),'variable',_0x83e8('0x2'),_0x83e8('0x3'),_0x83e8('0x4')),'defaultValue':_0x83e8('0x1')},'content':{'type':Sequelize[_0x83e8('0x5')]},'key':{'type':Sequelize[_0x83e8('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x83e8('0x1'),_0x83e8('0x6'),_0x83e8('0x2'))},'keyContent':{'type':Sequelize[_0x83e8('0x5')]},'idField':{'type':Sequelize[_0x83e8('0x5')]},'nameField':{'type':Sequelize[_0x83e8('0x5')]},'customField':{'type':Sequelize[_0x83e8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83e8('0x5')]}};
\ No newline at end of file
+var _0xd7c9=['picklist','customVariable','STRING','BOOLEAN','sequelize','string','variable','keyValue'];(function(_0x10f908,_0x1fd33d){var _0x3be4a9=function(_0x378380){while(--_0x378380){_0x10f908['push'](_0x10f908['shift']());}};_0x3be4a9(++_0x1fd33d);}(_0xd7c9,0xac));var _0x9d7c=function(_0x39c341,_0x2f47ff){_0x39c341=_0x39c341-0x0;var _0x58f61e=_0xd7c9[_0x39c341];return _0x58f61e;};'use strict';var Sequelize=require(_0x9d7c('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x9d7c('0x1'),_0x9d7c('0x2'),'customVariable',_0x9d7c('0x3'),_0x9d7c('0x4')),'defaultValue':_0x9d7c('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x9d7c('0x1'),_0x9d7c('0x2'),_0x9d7c('0x5'))},'keyContent':{'type':Sequelize[_0x9d7c('0x6')]},'idField':{'type':Sequelize[_0x9d7c('0x6')]},'nameField':{'type':Sequelize[_0x9d7c('0x6')]},'customField':{'type':Sequelize[_0x9d7c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9d7c('0x6')]}};
\ No newline at end of file
index e9d6fe7..eb52104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c88=['rows','catch','show','params','keys','rawAttributes','find','create','body','destroy','rimraf','fast-json-patch','request-promise','mustache','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','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','apply','reject','save','update','error','stack','name','send','index','ServicenowField','fieldName','type','key','model','map','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','then','includeAll','findAll'];(function(_0x32315f,_0x4bf79e){var _0x5f51fc=function(_0x39b7ce){while(--_0x39b7ce){_0x32315f['push'](_0x32315f['shift']());}};_0x5f51fc(++_0x4bf79e);}(_0x4c88,0x17c));var _0x84c8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4c88[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x84c8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x84c8('0x1'));var rp=require(_0x84c8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x84c8('0x3'));var util=require('util');var path=require(_0x84c8('0x4'));var sox=require('sox');var csv=require(_0x84c8('0x5'));var ejs=require(_0x84c8('0x6'));var fs=require('fs');var fs_extra=require(_0x84c8('0x7'));var _=require(_0x84c8('0x8'));var squel=require(_0x84c8('0x9'));var crypto=require(_0x84c8('0xa'));var jsforce=require(_0x84c8('0xb'));var deskjs=require(_0x84c8('0xc'));var toCsv=require(_0x84c8('0x5'));var querystring=require(_0x84c8('0xd'));var Papa=require(_0x84c8('0xe'));var Redis=require(_0x84c8('0xf'));var authService=require(_0x84c8('0x10'));var qs=require(_0x84c8('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x84c8('0x12'))(_0x84c8('0x13'));var utils=require(_0x84c8('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x84c8('0x15'));var db=require(_0x84c8('0x16'))['db'];function respondWithStatusCode(_0x365ed3,_0x18fcfb){_0x18fcfb=_0x18fcfb||0xcc;return function(_0x365f36){if(_0x365f36){return _0x365ed3[_0x84c8('0x17')](_0x18fcfb);}return _0x365ed3['status'](_0x18fcfb)[_0x84c8('0x18')]();};}function respondWithResult(_0x2e4e61,_0x139118){_0x139118=_0x139118||0xc8;return function(_0x126134){if(_0x126134){return _0x2e4e61[_0x84c8('0x19')](_0x139118)['json'](_0x126134);}};}function respondWithFilteredResult(_0x1c14c2,_0x52f163){return function(_0x735258){if(_0x735258){var _0x182ea8=typeof _0x52f163[_0x84c8('0x1a')]===_0x84c8('0x1b')&&typeof _0x52f163['limit']===_0x84c8('0x1b');var _0x154603=_0x735258['count'];var _0x4264d0=_0x182ea8?0x0:_0x52f163[_0x84c8('0x1a')];var _0x4e6ca5=_0x182ea8?_0x735258[_0x84c8('0x1c')]:_0x52f163[_0x84c8('0x1a')]+_0x52f163[_0x84c8('0x1d')];var _0x3d9939;if(_0x4e6ca5>=_0x154603){_0x4e6ca5=_0x154603;_0x3d9939=0xc8;}else{_0x3d9939=0xce;}_0x1c14c2[_0x84c8('0x19')](_0x3d9939);return _0x1c14c2[_0x84c8('0x1e')]('Content-Range',_0x4264d0+'-'+_0x4e6ca5+'/'+_0x154603)['json'](_0x735258);}return null;};}function patchUpdates(_0x220899){return function(_0x59ee70){try{jsonpatch[_0x84c8('0x1f')](_0x59ee70,_0x220899,!![]);}catch(_0x24b0aa){return BPromise[_0x84c8('0x20')](_0x24b0aa);}return _0x59ee70[_0x84c8('0x21')]();};}function saveUpdates(_0x5c7279,_0x519535){return function(_0x3ca3fc){if(_0x3ca3fc){return _0x3ca3fc[_0x84c8('0x22')](_0x5c7279)['then'](function(_0x47acc1){return _0x47acc1;});}return null;};}function removeEntity(_0x4987cc,_0x5956e2){return function(_0x4ad973){if(_0x4ad973){return _0x4ad973['destroy']()['then'](function(){_0x4987cc[_0x84c8('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5779fc,_0x492979){return function(_0x1c0043){if(!_0x1c0043){_0x5779fc['sendStatus'](0x194);}return _0x1c0043;};}function handleError(_0x3cdf75,_0xd029ad){_0xd029ad=_0xd029ad||0x1f4;return function(_0x532134){logger[_0x84c8('0x23')](_0x532134[_0x84c8('0x24')]);if(_0x532134['name']){delete _0x532134[_0x84c8('0x25')];}_0x3cdf75['status'](_0xd029ad)[_0x84c8('0x26')](_0x532134);};}exports[_0x84c8('0x27')]=function(_0x16c7f9,_0x7fe072){var _0x2c8fe2={},_0x58de3e={},_0x2563f2={'count':0x0,'rows':[]};var _0x58a30f=_['map'](db[_0x84c8('0x28')]['rawAttributes'],function(_0x31f4fc){return{'name':_0x31f4fc[_0x84c8('0x29')],'type':_0x31f4fc[_0x84c8('0x2a')][_0x84c8('0x2b')]};});_0x58de3e[_0x84c8('0x2c')]=_[_0x84c8('0x2d')](_0x58a30f,_0x84c8('0x25'));_0x58de3e[_0x84c8('0x2e')]=_['keys'](_0x16c7f9['query']);_0x58de3e['filters']=_[_0x84c8('0x2f')](_0x58de3e[_0x84c8('0x2c')],_0x58de3e['query']);_0x2c8fe2[_0x84c8('0x30')]=_[_0x84c8('0x2f')](_0x58de3e[_0x84c8('0x2c')],qs[_0x84c8('0x31')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x31')]));_0x2c8fe2[_0x84c8('0x30')]=_0x2c8fe2[_0x84c8('0x30')][_0x84c8('0x32')]?_0x2c8fe2[_0x84c8('0x30')]:_0x58de3e[_0x84c8('0x2c')];if(!_0x16c7f9[_0x84c8('0x2e')]['hasOwnProperty'](_0x84c8('0x33'))){_0x2c8fe2[_0x84c8('0x1d')]=qs[_0x84c8('0x1d')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x1d')]);_0x2c8fe2[_0x84c8('0x1a')]=qs[_0x84c8('0x1a')](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x1a')]);}_0x2c8fe2[_0x84c8('0x34')]=qs['sort'](_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x35')]);_0x2c8fe2[_0x84c8('0x36')]=qs[_0x84c8('0x37')](_[_0x84c8('0x38')](_0x16c7f9[_0x84c8('0x2e')],_0x58de3e[_0x84c8('0x37')]),_0x58a30f);if(_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x39')]){_0x2c8fe2[_0x84c8('0x36')]=_[_0x84c8('0x3a')](_0x2c8fe2[_0x84c8('0x36')],{'$or':_[_0x84c8('0x2d')](_0x58a30f,function(_0x3e753f){if(_0x3e753f[_0x84c8('0x2a')]!==_0x84c8('0x3b')){var _0x2438d4={};_0x2438d4[_0x3e753f[_0x84c8('0x25')]]={'$like':'%'+_0x16c7f9[_0x84c8('0x2e')][_0x84c8('0x39')]+'%'};return _0x2438d4;}})});}_0x2c8fe2=_[_0x84c8('0x3a')]({},_0x2c8fe2,_0x16c7f9[_0x84c8('0x3c')]);var _0x2b945f={'where':_0x2c8fe2[_0x84c8('0x36')]};return db[_0x84c8('0x28')]['count'](_0x2b945f)[_0x84c8('0x3d')](function(_0x521e67){_0x2563f2[_0x84c8('0x1c')]=_0x521e67;if(_0x16c7f9['query'][_0x84c8('0x3e')]){_0x2c8fe2['include']=[{'all':!![]}];}return db['ServicenowField'][_0x84c8('0x3f')](_0x2c8fe2);})[_0x84c8('0x3d')](function(_0x1c8826){_0x2563f2[_0x84c8('0x40')]=_0x1c8826;return _0x2563f2;})[_0x84c8('0x3d')](respondWithFilteredResult(_0x7fe072,_0x2c8fe2))[_0x84c8('0x41')](handleError(_0x7fe072,null));};exports[_0x84c8('0x42')]=function(_0x11281a,_0x4046f9){var _0x3eb6e9={'raw':!![],'where':{'id':_0x11281a[_0x84c8('0x43')]['id']}},_0x555eec={};_0x555eec[_0x84c8('0x2c')]=_[_0x84c8('0x44')](db[_0x84c8('0x28')][_0x84c8('0x45')]);_0x555eec[_0x84c8('0x2e')]=_['keys'](_0x11281a[_0x84c8('0x2e')]);_0x555eec[_0x84c8('0x37')]=_['intersection'](_0x555eec['model'],_0x555eec[_0x84c8('0x2e')]);_0x3eb6e9[_0x84c8('0x30')]=_[_0x84c8('0x2f')](_0x555eec[_0x84c8('0x2c')],qs[_0x84c8('0x31')](_0x11281a[_0x84c8('0x2e')][_0x84c8('0x31')]));_0x3eb6e9[_0x84c8('0x30')]=_0x3eb6e9[_0x84c8('0x30')][_0x84c8('0x32')]?_0x3eb6e9[_0x84c8('0x30')]:_0x555eec['model'];if(_0x11281a['query'][_0x84c8('0x3e')]){_0x3eb6e9['include']=[{'all':!![]}];}_0x3eb6e9=_[_0x84c8('0x3a')]({},_0x3eb6e9,_0x11281a[_0x84c8('0x3c')]);return db[_0x84c8('0x28')][_0x84c8('0x46')](_0x3eb6e9)[_0x84c8('0x3d')](handleEntityNotFound(_0x4046f9,null))[_0x84c8('0x3d')](respondWithResult(_0x4046f9,null))[_0x84c8('0x41')](handleError(_0x4046f9,null));};exports['create']=function(_0x427f95,_0xf981a4){return db[_0x84c8('0x28')][_0x84c8('0x47')](_0x427f95[_0x84c8('0x48')],{})[_0x84c8('0x3d')](respondWithResult(_0xf981a4,0xc9))['catch'](handleError(_0xf981a4,null));};exports[_0x84c8('0x22')]=function(_0x454a65,_0xd2fc33){if(_0x454a65['body']['id']){delete _0x454a65[_0x84c8('0x48')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x454a65[_0x84c8('0x43')]['id']}})[_0x84c8('0x3d')](handleEntityNotFound(_0xd2fc33,null))[_0x84c8('0x3d')](saveUpdates(_0x454a65['body'],null))[_0x84c8('0x3d')](respondWithResult(_0xd2fc33,null))[_0x84c8('0x41')](handleError(_0xd2fc33,null));};exports[_0x84c8('0x49')]=function(_0xe7529f,_0x28221b){return db[_0x84c8('0x28')][_0x84c8('0x46')]({'where':{'id':_0xe7529f[_0x84c8('0x43')]['id']}})[_0x84c8('0x3d')](handleEntityNotFound(_0x28221b,null))[_0x84c8('0x3d')](removeEntity(_0x28221b,null))['catch'](handleError(_0x28221b,null));};
\ No newline at end of file
+var _0x9d1e=['index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','ServicenowField','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name'];(function(_0x13843f,_0x50422d){var _0x1063ae=function(_0x12fd6b){while(--_0x12fd6b){_0x13843f['push'](_0x13843f['shift']());}};_0x1063ae(++_0x50422d);}(_0x9d1e,0x1d1));var _0xe9d1=function(_0x43982a,_0x3119bf){_0x43982a=_0x43982a-0x0;var _0x1a2749=_0x9d1e[_0x43982a];return _0x1a2749;};'use strict';var emlformat=require(_0xe9d1('0x0'));var rimraf=require(_0xe9d1('0x1'));var zipdir=require(_0xe9d1('0x2'));var jsonpatch=require(_0xe9d1('0x3'));var rp=require(_0xe9d1('0x4'));var moment=require(_0xe9d1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe9d1('0x6'));var util=require('util');var path=require(_0xe9d1('0x7'));var sox=require(_0xe9d1('0x8'));var csv=require(_0xe9d1('0x9'));var ejs=require(_0xe9d1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe9d1('0xb'));var squel=require('squel');var crypto=require(_0xe9d1('0xc'));var jsforce=require(_0xe9d1('0xd'));var deskjs=require(_0xe9d1('0xe'));var toCsv=require(_0xe9d1('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe9d1('0xf'));var authService=require(_0xe9d1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe9d1('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe9d1('0x12'))(_0xe9d1('0x13'));var utils=require('../../config/utils');var config=require(_0xe9d1('0x14'));var licenseUtil=require(_0xe9d1('0x15'));var db=require(_0xe9d1('0x16'))['db'];function respondWithStatusCode(_0x54a5a9,_0x4b7e8f){_0x4b7e8f=_0x4b7e8f||0xcc;return function(_0x59cf29){if(_0x59cf29){return _0x54a5a9[_0xe9d1('0x17')](_0x4b7e8f);}return _0x54a5a9['status'](_0x4b7e8f)['end']();};}function respondWithResult(_0x4efa82,_0x1d6bee){_0x1d6bee=_0x1d6bee||0xc8;return function(_0x1f7945){if(_0x1f7945){return _0x4efa82[_0xe9d1('0x18')](_0x1d6bee)['json'](_0x1f7945);}};}function respondWithFilteredResult(_0x54cda4,_0x1c61f4){return function(_0x11a4f9){if(_0x11a4f9){var _0x30d9e4=typeof _0x1c61f4[_0xe9d1('0x19')]===_0xe9d1('0x1a')&&typeof _0x1c61f4['limit']===_0xe9d1('0x1a');var _0x4d9a90=_0x11a4f9[_0xe9d1('0x1b')];var _0x19c4af=_0x30d9e4?0x0:_0x1c61f4[_0xe9d1('0x19')];var _0x3c458f=_0x30d9e4?_0x11a4f9['count']:_0x1c61f4[_0xe9d1('0x19')]+_0x1c61f4[_0xe9d1('0x1c')];var _0x56af98;if(_0x3c458f>=_0x4d9a90){_0x3c458f=_0x4d9a90;_0x56af98=0xc8;}else{_0x56af98=0xce;}_0x54cda4[_0xe9d1('0x18')](_0x56af98);return _0x54cda4[_0xe9d1('0x1d')](_0xe9d1('0x1e'),_0x19c4af+'-'+_0x3c458f+'/'+_0x4d9a90)['json'](_0x11a4f9);}return null;};}function patchUpdates(_0x5adbd0){return function(_0x56ec62){try{jsonpatch[_0xe9d1('0x1f')](_0x56ec62,_0x5adbd0,!![]);}catch(_0x7c30ce){return BPromise[_0xe9d1('0x20')](_0x7c30ce);}return _0x56ec62[_0xe9d1('0x21')]();};}function saveUpdates(_0x8745a5,_0x276483){return function(_0x4aca9a){if(_0x4aca9a){return _0x4aca9a[_0xe9d1('0x22')](_0x8745a5)[_0xe9d1('0x23')](function(_0x4dd78d){return _0x4dd78d;});}return null;};}function removeEntity(_0x6f0ea5,_0x3f0dee){return function(_0x29370b){if(_0x29370b){return _0x29370b[_0xe9d1('0x24')]()['then'](function(){_0x6f0ea5[_0xe9d1('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa178d,_0x4439c8){return function(_0x2c324b){if(!_0x2c324b){_0xa178d[_0xe9d1('0x17')](0x194);}return _0x2c324b;};}function handleError(_0x2516f1,_0x246866){_0x246866=_0x246866||0x1f4;return function(_0x220e5a){logger[_0xe9d1('0x25')](_0x220e5a['stack']);if(_0x220e5a[_0xe9d1('0x26')]){delete _0x220e5a[_0xe9d1('0x26')];}_0x2516f1[_0xe9d1('0x18')](_0x246866)['send'](_0x220e5a);};}exports[_0xe9d1('0x27')]=function(_0x2ca605,_0x1f23c1){var _0x3585b1={},_0x43e84e={},_0x537cf6={'count':0x0,'rows':[]};var _0x32f81d=_[_0xe9d1('0x28')](db['ServicenowField'][_0xe9d1('0x29')],function(_0xae60c9){return{'name':_0xae60c9['fieldName'],'type':_0xae60c9[_0xe9d1('0x2a')][_0xe9d1('0x2b')]};});_0x43e84e[_0xe9d1('0x2c')]=_[_0xe9d1('0x28')](_0x32f81d,'name');_0x43e84e[_0xe9d1('0x2d')]=_[_0xe9d1('0x2e')](_0x2ca605['query']);_0x43e84e[_0xe9d1('0x2f')]=_[_0xe9d1('0x30')](_0x43e84e['model'],_0x43e84e['query']);_0x3585b1[_0xe9d1('0x31')]=_['intersection'](_0x43e84e[_0xe9d1('0x2c')],qs['fields'](_0x2ca605['query'][_0xe9d1('0x32')]));_0x3585b1['attributes']=_0x3585b1[_0xe9d1('0x31')][_0xe9d1('0x33')]?_0x3585b1[_0xe9d1('0x31')]:_0x43e84e[_0xe9d1('0x2c')];if(!_0x2ca605['query']['hasOwnProperty'](_0xe9d1('0x34'))){_0x3585b1[_0xe9d1('0x1c')]=qs[_0xe9d1('0x1c')](_0x2ca605[_0xe9d1('0x2d')]['limit']);_0x3585b1['offset']=qs[_0xe9d1('0x19')](_0x2ca605[_0xe9d1('0x2d')][_0xe9d1('0x19')]);}_0x3585b1[_0xe9d1('0x35')]=qs[_0xe9d1('0x36')](_0x2ca605[_0xe9d1('0x2d')][_0xe9d1('0x36')]);_0x3585b1[_0xe9d1('0x37')]=qs[_0xe9d1('0x2f')](_[_0xe9d1('0x38')](_0x2ca605['query'],_0x43e84e[_0xe9d1('0x2f')]),_0x32f81d);if(_0x2ca605['query']['filter']){_0x3585b1[_0xe9d1('0x37')]=_[_0xe9d1('0x39')](_0x3585b1[_0xe9d1('0x37')],{'$or':_['map'](_0x32f81d,function(_0x87ea32){if(_0x87ea32[_0xe9d1('0x2a')]!==_0xe9d1('0x3a')){var _0x57db60={};_0x57db60[_0x87ea32[_0xe9d1('0x26')]]={'$like':'%'+_0x2ca605[_0xe9d1('0x2d')][_0xe9d1('0x3b')]+'%'};return _0x57db60;}})});}_0x3585b1=_[_0xe9d1('0x39')]({},_0x3585b1,_0x2ca605['options']);var _0x3b1514={'where':_0x3585b1[_0xe9d1('0x37')]};return db[_0xe9d1('0x3c')][_0xe9d1('0x1b')](_0x3b1514)[_0xe9d1('0x23')](function(_0x511e88){_0x537cf6[_0xe9d1('0x1b')]=_0x511e88;if(_0x2ca605[_0xe9d1('0x2d')][_0xe9d1('0x3d')]){_0x3585b1['include']=[{'all':!![]}];}return db['ServicenowField'][_0xe9d1('0x3e')](_0x3585b1);})['then'](function(_0x28852c){_0x537cf6[_0xe9d1('0x3f')]=_0x28852c;return _0x537cf6;})[_0xe9d1('0x23')](respondWithFilteredResult(_0x1f23c1,_0x3585b1))[_0xe9d1('0x40')](handleError(_0x1f23c1,null));};exports[_0xe9d1('0x41')]=function(_0x41af18,_0xd3d74d){var _0x5d83fd={'raw':!![],'where':{'id':_0x41af18[_0xe9d1('0x42')]['id']}},_0x23617a={};_0x23617a[_0xe9d1('0x2c')]=_['keys'](db[_0xe9d1('0x3c')]['rawAttributes']);_0x23617a[_0xe9d1('0x2d')]=_[_0xe9d1('0x2e')](_0x41af18[_0xe9d1('0x2d')]);_0x23617a['filters']=_[_0xe9d1('0x30')](_0x23617a[_0xe9d1('0x2c')],_0x23617a['query']);_0x5d83fd[_0xe9d1('0x31')]=_[_0xe9d1('0x30')](_0x23617a[_0xe9d1('0x2c')],qs[_0xe9d1('0x32')](_0x41af18[_0xe9d1('0x2d')]['fields']));_0x5d83fd[_0xe9d1('0x31')]=_0x5d83fd[_0xe9d1('0x31')][_0xe9d1('0x33')]?_0x5d83fd[_0xe9d1('0x31')]:_0x23617a[_0xe9d1('0x2c')];if(_0x41af18[_0xe9d1('0x2d')][_0xe9d1('0x3d')]){_0x5d83fd[_0xe9d1('0x43')]=[{'all':!![]}];}_0x5d83fd=_[_0xe9d1('0x39')]({},_0x5d83fd,_0x41af18[_0xe9d1('0x44')]);return db[_0xe9d1('0x3c')][_0xe9d1('0x45')](_0x5d83fd)[_0xe9d1('0x23')](handleEntityNotFound(_0xd3d74d,null))['then'](respondWithResult(_0xd3d74d,null))[_0xe9d1('0x40')](handleError(_0xd3d74d,null));};exports[_0xe9d1('0x46')]=function(_0x491f82,_0xfd83d6){return db[_0xe9d1('0x3c')][_0xe9d1('0x46')](_0x491f82[_0xe9d1('0x47')],{})[_0xe9d1('0x23')](respondWithResult(_0xfd83d6,0xc9))[_0xe9d1('0x40')](handleError(_0xfd83d6,null));};exports[_0xe9d1('0x22')]=function(_0x2e1461,_0x35a157){if(_0x2e1461[_0xe9d1('0x47')]['id']){delete _0x2e1461[_0xe9d1('0x47')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x2e1461[_0xe9d1('0x42')]['id']}})[_0xe9d1('0x23')](handleEntityNotFound(_0x35a157,null))['then'](saveUpdates(_0x2e1461['body'],null))['then'](respondWithResult(_0x35a157,null))[_0xe9d1('0x40')](handleError(_0x35a157,null));};exports[_0xe9d1('0x24')]=function(_0xc56b8a,_0x5b1519){return db[_0xe9d1('0x3c')][_0xe9d1('0x45')]({'where':{'id':_0xc56b8a[_0xe9d1('0x42')]['id']}})['then'](handleEntityNotFound(_0x5b1519,null))[_0xe9d1('0x23')](removeEntity(_0x5b1519,null))[_0xe9d1('0x40')](handleError(_0x5b1519,null));};
\ No newline at end of file
index d599f0d..d732537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc4b=['ServicenowField','int_servicenow_fields','servicenow_unique_index','FieldId','lodash','util','../../config/logger','api','request-promise','path','rimraf','./intServicenowField.attributes','define'];(function(_0x3c23e4,_0x1ea25d){var _0x2f4546=function(_0x1d9e65){while(--_0x1d9e65){_0x3c23e4['push'](_0x3c23e4['shift']());}};_0x2f4546(++_0x1ea25d);}(_0xcc4b,0x149));var _0xbcc4=function(_0x2ea4c4,_0x1fe353){_0x2ea4c4=_0x2ea4c4-0x0;var _0x34fcb0=_0xcc4b[_0x2ea4c4];return _0x34fcb0;};'use strict';var _=require(_0xbcc4('0x0'));var util=require(_0xbcc4('0x1'));var logger=require(_0xbcc4('0x2'))(_0xbcc4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbcc4('0x4'));var fs=require('fs');var path=require(_0xbcc4('0x5'));var rimraf=require(_0xbcc4('0x6'));var config=require('../../config/environment');var attributes=require(_0xbcc4('0x7'));module['exports']=function(_0x237c05,_0x994929){return _0x237c05[_0xbcc4('0x8')](_0xbcc4('0x9'),attributes,{'tableName':_0xbcc4('0xa'),'paranoid':![],'indexes':[{'name':_0xbcc4('0xb'),'fields':['idField',_0xbcc4('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x307c=['request-promise','./intServicenowField.attributes','exports','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','../../config/logger','api','bluebird'];(function(_0x3cc9d9,_0x69ed38){var _0x1a425d=function(_0x44d109){while(--_0x44d109){_0x3cc9d9['push'](_0x3cc9d9['shift']());}};_0x1a425d(++_0x69ed38);}(_0x307c,0x164));var _0xc307=function(_0x3e68d0,_0x7e5014){_0x3e68d0=_0x3e68d0-0x0;var _0x28492a=_0x307c[_0x3e68d0];return _0x28492a;};'use strict';var _=require(_0xc307('0x0'));var util=require('util');var logger=require(_0xc307('0x1'))(_0xc307('0x2'));var moment=require('moment');var BPromise=require(_0xc307('0x3'));var rp=require(_0xc307('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc307('0x5'));module[_0xc307('0x6')]=function(_0x55112f,_0x1ae9da){return _0x55112f['define'](_0xc307('0x7'),attributes,{'tableName':_0xc307('0x8'),'paranoid':![],'indexes':[{'name':_0xc307('0x9'),'fields':[_0xc307('0xa'),_0xc307('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7ac6966..19ba312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4b4c68,_0x14d416){var _0x1686e6=function(_0x56ab6c){while(--_0x56ab6c){_0x4b4c68['push'](_0x4b4c68['shift']());}};_0x1686e6(++_0x14d416);}(_0xf4eb,0xec));var _0xbf4e=function(_0x344838,_0x1bf512){_0x344838=_0x344838-0x0;var _0x21a472=_0xf4eb[_0x344838];return _0x21a472;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x2fb1fb,_0xd136fa){var _0x1dd0a5=function(_0x40e0d5){while(--_0x40e0d5){_0x2fb1fb['push'](_0x2fb1fb['shift']());}};_0x1dd0a5(++_0xd136fa);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xc40b9f,_0x17ec1f){_0xc40b9f=_0xc40b9f-0x0;var _0x535b9c=_0xcb91[_0xc40b9f];return _0x535b9c;};'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
index 4e43924..e118f2b 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(_0xa6e2f,_0x591aa3){var _0x19b869=function(_0x5183f5){while(--_0x5183f5){_0xa6e2f['push'](_0xa6e2f['shift']());}};_0x19b869(++_0x591aa3);}(_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
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x528c49,_0x498a81){var _0xe01b6a=function(_0x32fea9){while(--_0x32fea9){_0x528c49['push'](_0x528c49['shift']());}};_0xe01b6a(++_0x498a81);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 797b20e..dd5bdda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x279fa9,_0x2b36ce){var _0x1f4294=function(_0x288649){while(--_0x288649){_0x279fa9['push'](_0x279fa9['shift']());}};_0x1f4294(++_0x2b36ce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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(_0x52b7ee,_0x322eb1){var _0x4391de=function(_0x155fb6){while(--_0x155fb6){_0x52b7ee['push'](_0x52b7ee['shift']());}};_0x4391de(++_0x322eb1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 4c89f24..889eafa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97df=['../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','sendStatus','name','send','map','SugarcrmAccount','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','keys','create','body','find','params','findOne','SugarcrmConfiguration','length','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','/service/v4_1/rest.php','get_module_fields','Calls','module_fields','remove','includes','label','endsWith','values','value','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x3c7549,_0x1451d5){var _0x2b3b39=function(_0xb1617){while(--_0xb1617){_0x3c7549['push'](_0x3c7549['shift']());}};_0x2b3b39(++_0x1451d5);}(_0x97df,0xde));var _0xf97d=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x97df[_0x1e7b16];return _0x37fadc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf97d('0x0'));var zipdir=require(_0xf97d('0x1'));var jsonpatch=require(_0xf97d('0x2'));var rp=require(_0xf97d('0x3'));var moment=require(_0xf97d('0x4'));var BPromise=require(_0xf97d('0x5'));var Mustache=require(_0xf97d('0x6'));var util=require(_0xf97d('0x7'));var path=require(_0xf97d('0x8'));var sox=require(_0xf97d('0x9'));var csv=require(_0xf97d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf97d('0xb'));var squel=require(_0xf97d('0xc'));var crypto=require(_0xf97d('0xd'));var jsforce=require(_0xf97d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf97d('0xa'));var querystring=require(_0xf97d('0xf'));var Papa=require(_0xf97d('0x10'));var Redis=require(_0xf97d('0x11'));var authService=require(_0xf97d('0x12'));var qs=require(_0xf97d('0x13'));var as=require(_0xf97d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf97d('0x15'))(_0xf97d('0x16'));var utils=require(_0xf97d('0x17'));var config=require(_0xf97d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf97d('0x19'))['db'];var integrations=require(_0xf97d('0x1a'));function respondWithStatusCode(_0x7cb411,_0x28a7c3){_0x28a7c3=_0x28a7c3||0xcc;return function(_0x360181){if(_0x360181){return _0x7cb411['sendStatus'](_0x28a7c3);}return _0x7cb411[_0xf97d('0x1b')](_0x28a7c3)[_0xf97d('0x1c')]();};}function respondWithResult(_0x44d511,_0x3a3f9b){_0x3a3f9b=_0x3a3f9b||0xc8;return function(_0x407e3c){if(_0x407e3c){return _0x44d511['status'](_0x3a3f9b)[_0xf97d('0x1d')](_0x407e3c);}};}function respondWithFilteredResult(_0xa26f71,_0x2d3eda){return function(_0x1698a9){if(_0x1698a9){var _0x384105=typeof _0x2d3eda['offset']===_0xf97d('0x1e')&&typeof _0x2d3eda[_0xf97d('0x1f')]==='undefined';var _0x560352=_0x1698a9[_0xf97d('0x20')];var _0x558675=_0x384105?0x0:_0x2d3eda[_0xf97d('0x21')];var _0x401af4=_0x384105?_0x1698a9[_0xf97d('0x20')]:_0x2d3eda[_0xf97d('0x21')]+_0x2d3eda[_0xf97d('0x1f')];var _0x30e164;if(_0x401af4>=_0x560352){_0x401af4=_0x560352;_0x30e164=0xc8;}else{_0x30e164=0xce;}_0xa26f71[_0xf97d('0x1b')](_0x30e164);return _0xa26f71[_0xf97d('0x22')](_0xf97d('0x23'),_0x558675+'-'+_0x401af4+'/'+_0x560352)[_0xf97d('0x1d')](_0x1698a9);}return null;};}function patchUpdates(_0x3428d9){return function(_0x3bdc9c){try{jsonpatch[_0xf97d('0x24')](_0x3bdc9c,_0x3428d9,!![]);}catch(_0x5f1423){return BPromise[_0xf97d('0x25')](_0x5f1423);}return _0x3bdc9c['save']();};}function saveUpdates(_0x2a845f,_0x2c14ed){return function(_0x109f0e){if(_0x109f0e){return _0x109f0e[_0xf97d('0x26')](_0x2a845f)['then'](function(_0x5901f7){return _0x5901f7;});}return null;};}function removeEntity(_0x56cd5e,_0x5513ba){return function(_0x358161){if(_0x358161){return _0x358161[_0xf97d('0x27')]()[_0xf97d('0x28')](function(){_0x56cd5e['status'](0xcc)[_0xf97d('0x1c')]();});}};}function handleEntityNotFound(_0x519b1d,_0x18a6a0){return function(_0x3e503b){if(!_0x3e503b){_0x519b1d[_0xf97d('0x29')](0x194);}return _0x3e503b;};}function handleError(_0x3c39ec,_0xf543d4){_0xf543d4=_0xf543d4||0x1f4;return function(_0x29ca96){logger['error'](_0x29ca96['stack']);if(_0x29ca96[_0xf97d('0x2a')]){delete _0x29ca96[_0xf97d('0x2a')];}_0x3c39ec[_0xf97d('0x1b')](_0xf543d4)[_0xf97d('0x2b')](_0x29ca96);};}exports['index']=function(_0x236054,_0x392d8d){var _0x368815={},_0x15bac5={},_0x562a5d={'count':0x0,'rows':[]};var _0x49d590=_[_0xf97d('0x2c')](db[_0xf97d('0x2d')][_0xf97d('0x2e')],function(_0x39d401){return{'name':_0x39d401[_0xf97d('0x2f')],'type':_0x39d401['type'][_0xf97d('0x30')]};});_0x15bac5[_0xf97d('0x31')]=_['map'](_0x49d590,_0xf97d('0x2a'));_0x15bac5[_0xf97d('0x32')]=_['keys'](_0x236054[_0xf97d('0x32')]);_0x15bac5[_0xf97d('0x33')]=_['intersection'](_0x15bac5[_0xf97d('0x31')],_0x15bac5[_0xf97d('0x32')]);_0x368815[_0xf97d('0x34')]=_[_0xf97d('0x35')](_0x15bac5['model'],qs[_0xf97d('0x36')](_0x236054[_0xf97d('0x32')][_0xf97d('0x36')]));_0x368815[_0xf97d('0x34')]=_0x368815['attributes']['length']?_0x368815[_0xf97d('0x34')]:_0x15bac5[_0xf97d('0x31')];if(!_0x236054[_0xf97d('0x32')][_0xf97d('0x37')]('nolimit')){_0x368815[_0xf97d('0x1f')]=qs[_0xf97d('0x1f')](_0x236054[_0xf97d('0x32')][_0xf97d('0x1f')]);_0x368815[_0xf97d('0x21')]=qs['offset'](_0x236054[_0xf97d('0x32')][_0xf97d('0x21')]);}_0x368815[_0xf97d('0x38')]=qs[_0xf97d('0x39')](_0x236054['query'][_0xf97d('0x39')]);_0x368815[_0xf97d('0x3a')]=qs['filters'](_[_0xf97d('0x3b')](_0x236054[_0xf97d('0x32')],_0x15bac5['filters']),_0x49d590);if(_0x236054[_0xf97d('0x32')][_0xf97d('0x3c')]){_0x368815[_0xf97d('0x3a')]=_[_0xf97d('0x3d')](_0x368815[_0xf97d('0x3a')],{'$or':_['map'](_0x49d590,function(_0x3364f0){if(_0x3364f0[_0xf97d('0x3e')]!=='VIRTUAL'){var _0x2501bc={};_0x2501bc[_0x3364f0[_0xf97d('0x2a')]]={'$like':'%'+_0x236054[_0xf97d('0x32')]['filter']+'%'};return _0x2501bc;}})});}_0x368815=_[_0xf97d('0x3d')]({},_0x368815,_0x236054[_0xf97d('0x3f')]);var _0x31eefe={'where':_0x368815[_0xf97d('0x3a')]};return db[_0xf97d('0x2d')][_0xf97d('0x20')](_0x31eefe)['then'](function(_0x1c6e5b){_0x562a5d[_0xf97d('0x20')]=_0x1c6e5b;if(_0x236054[_0xf97d('0x32')][_0xf97d('0x40')]){_0x368815[_0xf97d('0x41')]=[{'all':!![]}];}return db[_0xf97d('0x2d')][_0xf97d('0x42')](_0x368815);})[_0xf97d('0x28')](function(_0xa22018){_0x562a5d[_0xf97d('0x43')]=_0xa22018;return _0x562a5d;})[_0xf97d('0x28')](respondWithFilteredResult(_0x392d8d,_0x368815))[_0xf97d('0x44')](handleError(_0x392d8d,null));};exports[_0xf97d('0x45')]=function(_0x16d336,_0x5b1d6f){var _0x58befc={'raw':![],'where':{'id':_0x16d336['params']['id']}},_0x3b6f39={};_0x3b6f39[_0xf97d('0x31')]=_[_0xf97d('0x46')](db['SugarcrmAccount']['rawAttributes']);_0x3b6f39[_0xf97d('0x32')]=_[_0xf97d('0x46')](_0x16d336[_0xf97d('0x32')]);_0x3b6f39[_0xf97d('0x33')]=_[_0xf97d('0x35')](_0x3b6f39[_0xf97d('0x31')],_0x3b6f39['query']);_0x58befc['attributes']=_[_0xf97d('0x35')](_0x3b6f39[_0xf97d('0x31')],qs[_0xf97d('0x36')](_0x16d336[_0xf97d('0x32')][_0xf97d('0x36')]));_0x58befc[_0xf97d('0x34')]=_0x58befc[_0xf97d('0x34')]['length']?_0x58befc['attributes']:_0x3b6f39[_0xf97d('0x31')];if(_0x16d336[_0xf97d('0x32')]['includeAll']){_0x58befc[_0xf97d('0x41')]=[{'all':!![]}];}_0x58befc=_[_0xf97d('0x3d')]({},_0x58befc,_0x16d336['options']);return db['SugarcrmAccount']['find'](_0x58befc)[_0xf97d('0x28')](handleEntityNotFound(_0x5b1d6f,null))[_0xf97d('0x28')](respondWithResult(_0x5b1d6f,null))[_0xf97d('0x44')](handleError(_0x5b1d6f,null));};exports[_0xf97d('0x47')]=function(_0x4f2ede,_0x5724ae){return db[_0xf97d('0x2d')][_0xf97d('0x47')](_0x4f2ede[_0xf97d('0x48')],{})[_0xf97d('0x28')](respondWithResult(_0x5724ae,0xc9))[_0xf97d('0x44')](handleError(_0x5724ae,null));};exports[_0xf97d('0x26')]=function(_0x1faeeb,_0x2764b4){if(_0x1faeeb[_0xf97d('0x48')]['id']){delete _0x1faeeb[_0xf97d('0x48')]['id'];}return db[_0xf97d('0x2d')][_0xf97d('0x49')]({'where':{'id':_0x1faeeb[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x2764b4,null))[_0xf97d('0x28')](saveUpdates(_0x1faeeb[_0xf97d('0x48')],null))['then'](respondWithResult(_0x2764b4,null))['catch'](handleError(_0x2764b4,null));};exports[_0xf97d('0x27')]=function(_0x13fee1,_0x4256d8){return db['SugarcrmAccount'][_0xf97d('0x49')]({'where':{'id':_0x13fee1[_0xf97d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4256d8,null))['then'](removeEntity(_0x4256d8,null))[_0xf97d('0x44')](handleError(_0x4256d8,null));};exports['getConfigurations']=function(_0x5b8441,_0x620fcb,_0x1edd13){var _0x3ddac4={};var _0x192f3b={};var _0x17207d;var _0x43123d;return db[_0xf97d('0x2d')][_0xf97d('0x4b')]({'where':{'id':_0x5b8441[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x620fcb,null))['then'](function(_0x79e981){if(_0x79e981){_0x17207d=_0x79e981;_0x192f3b[_0xf97d('0x31')]=_[_0xf97d('0x46')](db[_0xf97d('0x4c')][_0xf97d('0x2e')]);_0x192f3b[_0xf97d('0x32')]=_[_0xf97d('0x46')](_0x5b8441[_0xf97d('0x32')]);_0x192f3b[_0xf97d('0x33')]=_[_0xf97d('0x35')](_0x192f3b[_0xf97d('0x31')],_0x192f3b[_0xf97d('0x32')]);_0x3ddac4['attributes']=_[_0xf97d('0x35')](_0x192f3b[_0xf97d('0x31')],qs['fields'](_0x5b8441[_0xf97d('0x32')]['fields']));_0x3ddac4['attributes']=_0x3ddac4['attributes'][_0xf97d('0x4d')]?_0x3ddac4[_0xf97d('0x34')]:_0x192f3b[_0xf97d('0x31')];_0x3ddac4[_0xf97d('0x38')]=qs['sort'](_0x5b8441['query']['sort']);_0x3ddac4['where']=qs[_0xf97d('0x33')](_[_0xf97d('0x3b')](_0x5b8441['query'],_0x192f3b['filters']));if(_0x5b8441['query']['filter']){_0x3ddac4[_0xf97d('0x3a')]=_['merge'](_0x3ddac4[_0xf97d('0x3a')],{'$or':_[_0xf97d('0x2c')](_0x3ddac4[_0xf97d('0x34')],function(_0x5cfc04){var _0x1142c4={};_0x1142c4[_0x5cfc04]={'$like':'%'+_0x5b8441[_0xf97d('0x32')][_0xf97d('0x3c')]+'%'};return _0x1142c4;})});}_0x3ddac4=_[_0xf97d('0x3d')]({},_0x3ddac4,_0x5b8441[_0xf97d('0x3f')]);return _0x17207d['getConfigurations'](_0x3ddac4);}})[_0xf97d('0x28')](function(_0x26a8f1){if(_0x26a8f1){_0x43123d=_0x26a8f1[_0xf97d('0x4d')];if(!_0x5b8441[_0xf97d('0x32')]['hasOwnProperty']('nolimit')){_0x3ddac4[_0xf97d('0x1f')]=qs[_0xf97d('0x1f')](_0x5b8441[_0xf97d('0x32')][_0xf97d('0x1f')]);_0x3ddac4[_0xf97d('0x21')]=qs[_0xf97d('0x21')](_0x5b8441[_0xf97d('0x32')][_0xf97d('0x21')]);}return _0x17207d[_0xf97d('0x4e')](_0x3ddac4);}})['then'](function(_0x230121){if(_0x230121){return _0x230121?{'count':_0x43123d,'rows':_0x230121}:null;}})[_0xf97d('0x28')](respondWithResult(_0x620fcb,null))['catch'](handleError(_0x620fcb,null));};exports[_0xf97d('0x4f')]=function(_0x394db3,_0x41e387,_0x1d3f53){if(_0x394db3[_0xf97d('0x48')]['id']){delete _0x394db3[_0xf97d('0x48')]['id'];}return db['SugarcrmAccount'][_0xf97d('0x4b')]({'where':{'id':_0x394db3[_0xf97d('0x4a')]['id']}})[_0xf97d('0x28')](handleEntityNotFound(_0x41e387,null))[_0xf97d('0x28')](function(_0x17ac40){if(_0x17ac40){_0x394db3[_0xf97d('0x48')][_0xf97d('0x50')]=_0x17ac40['id'];_0x394db3[_0xf97d('0x48')][_0xf97d('0x51')]=integrations[_0xf97d('0x52')](_0x394db3[_0xf97d('0x48')]['channel'],_0x394db3['body'][_0xf97d('0x3e')]);_0x394db3[_0xf97d('0x48')][_0xf97d('0x53')]=integrations[_0xf97d('0x54')](_0x394db3[_0xf97d('0x48')]['channel'],_0x394db3[_0xf97d('0x48')][_0xf97d('0x3e')]);return db[_0xf97d('0x4c')][_0xf97d('0x47')](_0x394db3[_0xf97d('0x48')],{'include':[{'model':db[_0xf97d('0x55')],'as':_0xf97d('0x51')},{'model':db[_0xf97d('0x55')],'as':_0xf97d('0x53')}]});}return null;})['then'](respondWithResult(_0x41e387,null))[_0xf97d('0x44')](handleError(_0x41e387,null));};exports[_0xf97d('0x56')]=function(_0x14ca18,_0x487638,_0x1caa08){var _0x5d0f2f='';var _0x2890d1=['id',_0xf97d('0x2a'),_0xf97d('0x57'),_0xf97d('0x58'),_0xf97d('0x59'),_0xf97d('0x5a'),_0xf97d('0x5b'),'duration_minutes',_0xf97d('0x5c'),_0xf97d('0x5d'),_0xf97d('0x5e'),_0xf97d('0x5f')];return db['SugarcrmAccount']['findOne']({'where':{'id':_0x14ca18[_0xf97d('0x4a')]['id']},'attributes':['id','username',_0xf97d('0x60'),_0xf97d('0x61')]})[_0xf97d('0x28')](handleEntityNotFound(_0x487638,null))['then'](function(_0x3aa292){if(_0x3aa292){_0x5d0f2f=_0x3aa292[_0xf97d('0x61')];var _0x541822=_0x5d0f2f[_0xf97d('0x62')](-0x1);if(_0x541822==='/'){_0x5d0f2f=_0x5d0f2f[_0xf97d('0x63')](0x0,_0x5d0f2f[_0xf97d('0x64')](_0x541822));}return rp({'method':_0xf97d('0x65'),'uri':util[_0xf97d('0x66')](_0xf97d('0x67'),_0x5d0f2f,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'login','input_type':_0xf97d('0x68'),'response_type':_0xf97d('0x68'),'rest_data':JSON[_0xf97d('0x69')]({'user_auth':{'user_name':_0x3aa292[_0xf97d('0x6a')],'password':_0x3aa292[_0xf97d('0x60')],'encryption':_0xf97d('0x6b')},'application':_0xf97d('0x6c')})}});}})[_0xf97d('0x28')](function(_0x730fff){if(_0x730fff&&_0x730fff[_0xf97d('0x2a')]!==_0xf97d('0x6d')&&_0x730fff[_0xf97d('0x2a')]!==_0xf97d('0x6e')){return rp({'method':_0xf97d('0x65'),'uri':util[_0xf97d('0x66')](_0xf97d('0x67'),_0x5d0f2f,_0xf97d('0x6f')),'json':!![],'form':{'method':_0xf97d('0x70'),'input_type':_0xf97d('0x68'),'response_type':'JSON','rest_data':JSON[_0xf97d('0x69')]({'session':_0x730fff['id'],'module_name':_0xf97d('0x71')})}})[_0xf97d('0x28')](function(_0x2e83f0){if(_0x2e83f0){var _0x207880=_['values'](_0x2e83f0[_0xf97d('0x72')]);_[_0xf97d('0x73')](_0x207880,function(_0x494b96){return _0x2890d1[_0xf97d('0x74')](_0x494b96['name']);});return{'count':_0x207880['length'],'rows':_[_0xf97d('0x2c')](_0x207880,function(_0x3ba426){return{'id':_0x3ba426['name'],'name':_0x3ba426[_0xf97d('0x75')],'custom':_[_0xf97d('0x76')](_0x3ba426[_0xf97d('0x2a')],'_c')?!![]:![],'options':_0x3ba426[_0xf97d('0x3f')]?_['map'](_[_0xf97d('0x77')](_0x3ba426[_0xf97d('0x3f')]),function(_0x49d4af){return{'name':_0x49d4af[_0xf97d('0x78')],'value':_0x49d4af['name']};}):[]};})};}})['then'](respondWithResult(_0x487638,null))[_0xf97d('0x44')](function(_0x4958c4){var _0x148e31=_0x14ca18[_0xf97d('0x32')][_0xf97d('0x79')]?0x1f4:_0x4958c4['statusCode']||0x1f4;logger['error'](_0xf97d('0x7a'),_0xf97d('0x56'),_0x148e31,JSON[_0xf97d('0x69')](_0x4958c4));delete _0x4958c4[_0xf97d('0x2a')];if(_0x148e31===0x191){_0x148e31=0x190;}_0x487638[_0xf97d('0x1b')](_0x148e31)['send'](_0x14ca18[_0xf97d('0x32')][_0xf97d('0x79')]?{'message':_0xf97d('0x7b'),'statusCode':_0x4958c4['statusCode']}:_0x4958c4);});}else{var _0x3e2ab7=0x1f4;_0x487638[_0xf97d('0x1b')](_0x3e2ab7)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0x252b=['date_start','duration_hours','parent_id','parent_type','parent_name','direction','username','password','remoteUri','substring','lastIndexOf','POST','%s%s','login','JSON','stringify','PLAIN','Password\x20Expired','format','/service/v4_1/rest.php','get_module_fields','Calls','values','module_fields','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','SugarcrmAccount','rawAttributes','type','key','map','query','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','length','find','create','body','getConfigurations','hasOwnProperty','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by'];(function(_0x515990,_0x36e029){var _0x1b8003=function(_0x202622){while(--_0x202622){_0x515990['push'](_0x515990['shift']());}};_0x1b8003(++_0x36e029);}(_0x252b,0x117));var _0xb252=function(_0x161ab6,_0x51ee5c){_0x161ab6=_0x161ab6-0x0;var _0x437d12=_0x252b[_0x161ab6];return _0x437d12;};'use strict';var emlformat=require(_0xb252('0x0'));var rimraf=require(_0xb252('0x1'));var zipdir=require(_0xb252('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb252('0x3'));var moment=require(_0xb252('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb252('0x5'));var util=require(_0xb252('0x6'));var path=require(_0xb252('0x7'));var sox=require(_0xb252('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb252('0x9'));var _=require(_0xb252('0xa'));var squel=require(_0xb252('0xb'));var crypto=require(_0xb252('0xc'));var jsforce=require(_0xb252('0xd'));var deskjs=require(_0xb252('0xe'));var toCsv=require(_0xb252('0xf'));var querystring=require(_0xb252('0x10'));var Papa=require(_0xb252('0x11'));var Redis=require(_0xb252('0x12'));var authService=require(_0xb252('0x13'));var qs=require(_0xb252('0x14'));var as=require(_0xb252('0x15'));var hardwareService=require(_0xb252('0x16'));var logger=require(_0xb252('0x17'))('api');var utils=require(_0xb252('0x18'));var config=require(_0xb252('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xb252('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3b9082,_0x5db497){_0x5db497=_0x5db497||0xcc;return function(_0x3b2bfc){if(_0x3b2bfc){return _0x3b9082[_0xb252('0x1b')](_0x5db497);}return _0x3b9082[_0xb252('0x1c')](_0x5db497)[_0xb252('0x1d')]();};}function respondWithResult(_0xbbcc70,_0x1b7f1b){_0x1b7f1b=_0x1b7f1b||0xc8;return function(_0x337235){if(_0x337235){return _0xbbcc70[_0xb252('0x1c')](_0x1b7f1b)[_0xb252('0x1e')](_0x337235);}};}function respondWithFilteredResult(_0x3c09f7,_0x424c66){return function(_0x1ea9d6){if(_0x1ea9d6){var _0x386e0b=typeof _0x424c66[_0xb252('0x1f')]==='undefined'&&typeof _0x424c66[_0xb252('0x20')]===_0xb252('0x21');var _0x46ecaa=_0x1ea9d6[_0xb252('0x22')];var _0x3ce75e=_0x386e0b?0x0:_0x424c66['offset'];var _0x429d5d=_0x386e0b?_0x1ea9d6['count']:_0x424c66['offset']+_0x424c66['limit'];var _0x566558;if(_0x429d5d>=_0x46ecaa){_0x429d5d=_0x46ecaa;_0x566558=0xc8;}else{_0x566558=0xce;}_0x3c09f7[_0xb252('0x1c')](_0x566558);return _0x3c09f7[_0xb252('0x23')](_0xb252('0x24'),_0x3ce75e+'-'+_0x429d5d+'/'+_0x46ecaa)[_0xb252('0x1e')](_0x1ea9d6);}return null;};}function patchUpdates(_0x45a5ab){return function(_0x53f410){try{jsonpatch[_0xb252('0x25')](_0x53f410,_0x45a5ab,!![]);}catch(_0x163e8b){return BPromise[_0xb252('0x26')](_0x163e8b);}return _0x53f410['save']();};}function saveUpdates(_0x126034,_0x1c65b6){return function(_0x923f18){if(_0x923f18){return _0x923f18[_0xb252('0x27')](_0x126034)[_0xb252('0x28')](function(_0xf87fd2){return _0xf87fd2;});}return null;};}function removeEntity(_0x2eb0d6,_0x5b113a){return function(_0x4faa76){if(_0x4faa76){return _0x4faa76[_0xb252('0x29')]()['then'](function(){_0x2eb0d6['status'](0xcc)[_0xb252('0x1d')]();});}};}function handleEntityNotFound(_0x3d5f8f,_0x1ab213){return function(_0x4e2292){if(!_0x4e2292){_0x3d5f8f[_0xb252('0x1b')](0x194);}return _0x4e2292;};}function handleError(_0x1df18f,_0x53599c){_0x53599c=_0x53599c||0x1f4;return function(_0x113644){logger[_0xb252('0x2a')](_0x113644[_0xb252('0x2b')]);if(_0x113644[_0xb252('0x2c')]){delete _0x113644['name'];}_0x1df18f[_0xb252('0x1c')](_0x53599c)['send'](_0x113644);};}exports[_0xb252('0x2d')]=function(_0x18a4c6,_0x1ef65a){var _0xfc44af={},_0x3b5b10={},_0x4d51f0={'count':0x0,'rows':[]};var _0xc293ce=_['map'](db[_0xb252('0x2e')][_0xb252('0x2f')],function(_0x51e66e){return{'name':_0x51e66e['fieldName'],'type':_0x51e66e[_0xb252('0x30')][_0xb252('0x31')]};});_0x3b5b10['model']=_[_0xb252('0x32')](_0xc293ce,_0xb252('0x2c'));_0x3b5b10[_0xb252('0x33')]=_['keys'](_0x18a4c6[_0xb252('0x33')]);_0x3b5b10[_0xb252('0x34')]=_[_0xb252('0x35')](_0x3b5b10[_0xb252('0x36')],_0x3b5b10[_0xb252('0x33')]);_0xfc44af[_0xb252('0x37')]=_[_0xb252('0x35')](_0x3b5b10[_0xb252('0x36')],qs['fields'](_0x18a4c6[_0xb252('0x33')][_0xb252('0x38')]));_0xfc44af[_0xb252('0x37')]=_0xfc44af[_0xb252('0x37')]['length']?_0xfc44af['attributes']:_0x3b5b10[_0xb252('0x36')];if(!_0x18a4c6[_0xb252('0x33')]['hasOwnProperty'](_0xb252('0x39'))){_0xfc44af[_0xb252('0x20')]=qs[_0xb252('0x20')](_0x18a4c6[_0xb252('0x33')]['limit']);_0xfc44af[_0xb252('0x1f')]=qs['offset'](_0x18a4c6[_0xb252('0x33')][_0xb252('0x1f')]);}_0xfc44af[_0xb252('0x3a')]=qs[_0xb252('0x3b')](_0x18a4c6['query']['sort']);_0xfc44af[_0xb252('0x3c')]=qs[_0xb252('0x34')](_[_0xb252('0x3d')](_0x18a4c6[_0xb252('0x33')],_0x3b5b10[_0xb252('0x34')]),_0xc293ce);if(_0x18a4c6[_0xb252('0x33')]['filter']){_0xfc44af['where']=_['merge'](_0xfc44af[_0xb252('0x3c')],{'$or':_['map'](_0xc293ce,function(_0x11636a){if(_0x11636a[_0xb252('0x30')]!==_0xb252('0x3e')){var _0x17ea8e={};_0x17ea8e[_0x11636a[_0xb252('0x2c')]]={'$like':'%'+_0x18a4c6['query'][_0xb252('0x3f')]+'%'};return _0x17ea8e;}})});}_0xfc44af=_[_0xb252('0x40')]({},_0xfc44af,_0x18a4c6[_0xb252('0x41')]);var _0x3c460e={'where':_0xfc44af[_0xb252('0x3c')]};return db[_0xb252('0x2e')]['count'](_0x3c460e)['then'](function(_0x230a77){_0x4d51f0[_0xb252('0x22')]=_0x230a77;if(_0x18a4c6['query'][_0xb252('0x42')]){_0xfc44af[_0xb252('0x43')]=[{'all':!![]}];}return db[_0xb252('0x2e')][_0xb252('0x44')](_0xfc44af);})[_0xb252('0x28')](function(_0x3afff0){_0x4d51f0[_0xb252('0x45')]=_0x3afff0;return _0x4d51f0;})[_0xb252('0x28')](respondWithFilteredResult(_0x1ef65a,_0xfc44af))[_0xb252('0x46')](handleError(_0x1ef65a,null));};exports['show']=function(_0x47f3da,_0x2170d4){var _0x495181={'raw':![],'where':{'id':_0x47f3da[_0xb252('0x47')]['id']}},_0xe5d08={};_0xe5d08[_0xb252('0x36')]=_[_0xb252('0x48')](db[_0xb252('0x2e')][_0xb252('0x2f')]);_0xe5d08['query']=_[_0xb252('0x48')](_0x47f3da[_0xb252('0x33')]);_0xe5d08['filters']=_[_0xb252('0x35')](_0xe5d08[_0xb252('0x36')],_0xe5d08[_0xb252('0x33')]);_0x495181[_0xb252('0x37')]=_['intersection'](_0xe5d08[_0xb252('0x36')],qs[_0xb252('0x38')](_0x47f3da[_0xb252('0x33')]['fields']));_0x495181[_0xb252('0x37')]=_0x495181['attributes'][_0xb252('0x49')]?_0x495181[_0xb252('0x37')]:_0xe5d08[_0xb252('0x36')];if(_0x47f3da[_0xb252('0x33')][_0xb252('0x42')]){_0x495181[_0xb252('0x43')]=[{'all':!![]}];}_0x495181=_[_0xb252('0x40')]({},_0x495181,_0x47f3da[_0xb252('0x41')]);return db[_0xb252('0x2e')][_0xb252('0x4a')](_0x495181)[_0xb252('0x28')](handleEntityNotFound(_0x2170d4,null))[_0xb252('0x28')](respondWithResult(_0x2170d4,null))['catch'](handleError(_0x2170d4,null));};exports[_0xb252('0x4b')]=function(_0x4dfc95,_0x1d3d11){return db['SugarcrmAccount']['create'](_0x4dfc95[_0xb252('0x4c')],{})[_0xb252('0x28')](respondWithResult(_0x1d3d11,0xc9))['catch'](handleError(_0x1d3d11,null));};exports[_0xb252('0x27')]=function(_0x5c16a8,_0xd78ea3){if(_0x5c16a8[_0xb252('0x4c')]['id']){delete _0x5c16a8[_0xb252('0x4c')]['id'];}return db['SugarcrmAccount'][_0xb252('0x4a')]({'where':{'id':_0x5c16a8[_0xb252('0x47')]['id']}})[_0xb252('0x28')](handleEntityNotFound(_0xd78ea3,null))['then'](saveUpdates(_0x5c16a8[_0xb252('0x4c')],null))[_0xb252('0x28')](respondWithResult(_0xd78ea3,null))['catch'](handleError(_0xd78ea3,null));};exports['destroy']=function(_0x28117a,_0x3d5c35){return db[_0xb252('0x2e')][_0xb252('0x4a')]({'where':{'id':_0x28117a[_0xb252('0x47')]['id']}})['then'](handleEntityNotFound(_0x3d5c35,null))[_0xb252('0x28')](removeEntity(_0x3d5c35,null))[_0xb252('0x46')](handleError(_0x3d5c35,null));};exports[_0xb252('0x4d')]=function(_0x2fc60c,_0x476a72,_0x3c3b7f){var _0x1b79f4={};var _0x2d370={};var _0x9b2fbc;var _0x14384a;return db[_0xb252('0x2e')]['findOne']({'where':{'id':_0x2fc60c[_0xb252('0x47')]['id']}})[_0xb252('0x28')](handleEntityNotFound(_0x476a72,null))[_0xb252('0x28')](function(_0x33e079){if(_0x33e079){_0x9b2fbc=_0x33e079;_0x2d370[_0xb252('0x36')]=_[_0xb252('0x48')](db['SugarcrmConfiguration']['rawAttributes']);_0x2d370['query']=_[_0xb252('0x48')](_0x2fc60c[_0xb252('0x33')]);_0x2d370[_0xb252('0x34')]=_['intersection'](_0x2d370[_0xb252('0x36')],_0x2d370[_0xb252('0x33')]);_0x1b79f4[_0xb252('0x37')]=_[_0xb252('0x35')](_0x2d370[_0xb252('0x36')],qs[_0xb252('0x38')](_0x2fc60c[_0xb252('0x33')][_0xb252('0x38')]));_0x1b79f4[_0xb252('0x37')]=_0x1b79f4['attributes'][_0xb252('0x49')]?_0x1b79f4['attributes']:_0x2d370[_0xb252('0x36')];_0x1b79f4[_0xb252('0x3a')]=qs[_0xb252('0x3b')](_0x2fc60c[_0xb252('0x33')][_0xb252('0x3b')]);_0x1b79f4[_0xb252('0x3c')]=qs[_0xb252('0x34')](_[_0xb252('0x3d')](_0x2fc60c['query'],_0x2d370[_0xb252('0x34')]));if(_0x2fc60c[_0xb252('0x33')][_0xb252('0x3f')]){_0x1b79f4[_0xb252('0x3c')]=_[_0xb252('0x40')](_0x1b79f4[_0xb252('0x3c')],{'$or':_['map'](_0x1b79f4[_0xb252('0x37')],function(_0xf91147){var _0x40d656={};_0x40d656[_0xf91147]={'$like':'%'+_0x2fc60c[_0xb252('0x33')][_0xb252('0x3f')]+'%'};return _0x40d656;})});}_0x1b79f4=_[_0xb252('0x40')]({},_0x1b79f4,_0x2fc60c[_0xb252('0x41')]);return _0x9b2fbc[_0xb252('0x4d')](_0x1b79f4);}})[_0xb252('0x28')](function(_0xd688a7){if(_0xd688a7){_0x14384a=_0xd688a7[_0xb252('0x49')];if(!_0x2fc60c[_0xb252('0x33')][_0xb252('0x4e')](_0xb252('0x39'))){_0x1b79f4[_0xb252('0x20')]=qs['limit'](_0x2fc60c[_0xb252('0x33')]['limit']);_0x1b79f4[_0xb252('0x1f')]=qs[_0xb252('0x1f')](_0x2fc60c['query'][_0xb252('0x1f')]);}return _0x9b2fbc[_0xb252('0x4d')](_0x1b79f4);}})[_0xb252('0x28')](function(_0x261b06){if(_0x261b06){return _0x261b06?{'count':_0x14384a,'rows':_0x261b06}:null;}})[_0xb252('0x28')](respondWithResult(_0x476a72,null))[_0xb252('0x46')](handleError(_0x476a72,null));};exports[_0xb252('0x4f')]=function(_0x35cf4f,_0x5379cc,_0x5ccea9){if(_0x35cf4f[_0xb252('0x4c')]['id']){delete _0x35cf4f[_0xb252('0x4c')]['id'];}return db[_0xb252('0x2e')][_0xb252('0x50')]({'where':{'id':_0x35cf4f[_0xb252('0x47')]['id']}})['then'](handleEntityNotFound(_0x5379cc,null))[_0xb252('0x28')](function(_0x720be0){if(_0x720be0){_0x35cf4f[_0xb252('0x4c')]['AccountId']=_0x720be0['id'];_0x35cf4f[_0xb252('0x4c')][_0xb252('0x51')]=integrations[_0xb252('0x52')](_0x35cf4f[_0xb252('0x4c')][_0xb252('0x53')],_0x35cf4f[_0xb252('0x4c')][_0xb252('0x30')]);_0x35cf4f[_0xb252('0x4c')][_0xb252('0x54')]=integrations[_0xb252('0x55')](_0x35cf4f[_0xb252('0x4c')][_0xb252('0x53')],_0x35cf4f[_0xb252('0x4c')]['type']);return db['SugarcrmConfiguration'][_0xb252('0x4b')](_0x35cf4f[_0xb252('0x4c')],{'include':[{'model':db[_0xb252('0x56')],'as':_0xb252('0x51')},{'model':db[_0xb252('0x56')],'as':_0xb252('0x54')}]});}return null;})[_0xb252('0x28')](respondWithResult(_0x5379cc,null))[_0xb252('0x46')](handleError(_0x5379cc,null));};exports[_0xb252('0x57')]=function(_0x5d2fe5,_0x41c0bb,_0x16cccb){var _0x125b83='';var _0xea272d=['id','name',_0xb252('0x58'),_0xb252('0x59'),'description',_0xb252('0x5a'),_0xb252('0x5b'),'duration_minutes',_0xb252('0x5c'),_0xb252('0x5d'),_0xb252('0x5e'),_0xb252('0x5f')];return db[_0xb252('0x2e')][_0xb252('0x50')]({'where':{'id':_0x5d2fe5[_0xb252('0x47')]['id']},'attributes':['id',_0xb252('0x60'),_0xb252('0x61'),_0xb252('0x62')]})[_0xb252('0x28')](handleEntityNotFound(_0x41c0bb,null))['then'](function(_0x3e65bc){if(_0x3e65bc){_0x125b83=_0x3e65bc[_0xb252('0x62')];var _0x1cd804=_0x125b83['slice'](-0x1);if(_0x1cd804==='/'){_0x125b83=_0x125b83[_0xb252('0x63')](0x0,_0x125b83[_0xb252('0x64')](_0x1cd804));}return rp({'method':_0xb252('0x65'),'uri':util['format'](_0xb252('0x66'),_0x125b83,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xb252('0x67'),'input_type':_0xb252('0x68'),'response_type':_0xb252('0x68'),'rest_data':JSON[_0xb252('0x69')]({'user_auth':{'user_name':_0x3e65bc[_0xb252('0x60')],'password':_0x3e65bc[_0xb252('0x61')],'encryption':_0xb252('0x6a')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xb252('0x28')](function(_0xe13e7d){if(_0xe13e7d&&_0xe13e7d[_0xb252('0x2c')]!=='Invalid\x20Login'&&_0xe13e7d[_0xb252('0x2c')]!==_0xb252('0x6b')){return rp({'method':_0xb252('0x65'),'uri':util[_0xb252('0x6c')](_0xb252('0x66'),_0x125b83,_0xb252('0x6d')),'json':!![],'form':{'method':_0xb252('0x6e'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xb252('0x69')]({'session':_0xe13e7d['id'],'module_name':_0xb252('0x6f')})}})[_0xb252('0x28')](function(_0x3472f9){if(_0x3472f9){var _0x5c20af=_[_0xb252('0x70')](_0x3472f9[_0xb252('0x71')]);_['remove'](_0x5c20af,function(_0x453aa1){return _0xea272d[_0xb252('0x72')](_0x453aa1[_0xb252('0x2c')]);});return{'count':_0x5c20af[_0xb252('0x49')],'rows':_[_0xb252('0x32')](_0x5c20af,function(_0x7a7322){return{'id':_0x7a7322[_0xb252('0x2c')],'name':_0x7a7322[_0xb252('0x73')],'custom':_[_0xb252('0x74')](_0x7a7322[_0xb252('0x2c')],'_c')?!![]:![],'options':_0x7a7322[_0xb252('0x41')]?_[_0xb252('0x32')](_['values'](_0x7a7322['options']),function(_0x57b486){return{'name':_0x57b486[_0xb252('0x75')],'value':_0x57b486['name']};}):[]};})};}})[_0xb252('0x28')](respondWithResult(_0x41c0bb,null))[_0xb252('0x46')](function(_0x3c7ceb){var _0x5c0937=_0x5d2fe5[_0xb252('0x33')][_0xb252('0x76')]?0x1f4:_0x3c7ceb[_0xb252('0x77')]||0x1f4;logger[_0xb252('0x2a')](_0xb252('0x78'),'getFields',_0x5c0937,JSON['stringify'](_0x3c7ceb));delete _0x3c7ceb[_0xb252('0x2c')];if(_0x5c0937===0x191){_0x5c0937=0x190;}_0x41c0bb[_0xb252('0x1c')](_0x5c0937)[_0xb252('0x79')](_0x5d2fe5[_0xb252('0x33')][_0xb252('0x76')]?{'message':_0xb252('0x7a'),'statusCode':_0x3c7ceb['statusCode']}:_0x3c7ceb);});}else{var _0x12a634=0x1f4;_0x41c0bb[_0xb252('0x1c')](_0x12a634)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index aa5413c..4699efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd94d=['path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','bluebird','request-promise'];(function(_0x7bc4a8,_0x19022a){var _0x4a13e9=function(_0x43ac34){while(--_0x43ac34){_0x7bc4a8['push'](_0x7bc4a8['shift']());}};_0x4a13e9(++_0x19022a);}(_0xd94d,0x16f));var _0xdd94=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd94d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xdd94('0x0'));var logger=require(_0xdd94('0x1'))(_0xdd94('0x2'));var moment=require('moment');var BPromise=require(_0xdd94('0x3'));var rp=require(_0xdd94('0x4'));var fs=require('fs');var path=require(_0xdd94('0x5'));var rimraf=require(_0xdd94('0x6'));var config=require(_0xdd94('0x7'));var attributes=require(_0xdd94('0x8'));var integrations=require(_0xdd94('0x9'));module['exports']=function(_0x1fd8a8,_0xa08a87){return _0x1fd8a8['define'](_0xdd94('0xa'),attributes,{'tableName':_0xdd94('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9809=['./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x5db326,_0x42c971){var _0x1bd71a=function(_0x416cc5){while(--_0x416cc5){_0x5db326['push'](_0x5db326['shift']());}};_0x1bd71a(++_0x42c971);}(_0x9809,0x1b2));var _0x9980=function(_0xd470d5,_0x134759){_0xd470d5=_0xd470d5-0x0;var _0x93eee8=_0x9809[_0xd470d5];return _0x93eee8;};'use strict';var _=require(_0x9980('0x0'));var util=require(_0x9980('0x1'));var logger=require(_0x9980('0x2'))(_0x9980('0x3'));var moment=require('moment');var BPromise=require(_0x9980('0x4'));var rp=require(_0x9980('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9980('0x6'));var config=require(_0x9980('0x7'));var attributes=require(_0x9980('0x8'));var integrations=require(_0x9980('0x9'));module[_0x9980('0xa')]=function(_0x225429,_0x25d908){return _0x225429[_0x9980('0xb')](_0x9980('0xc'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3aefa33..000a30b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b2c=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','model','map','ShowSugarcrmAccount','find'];(function(_0x507b87,_0x48c977){var _0x5967fc=function(_0x248cf4){while(--_0x248cf4){_0x507b87['push'](_0x507b87['shift']());}};_0x5967fc(++_0x48c977);}(_0x4b2c,0x1d4));var _0xc4b2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b2c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc4b2('0x0'));var util=require(_0xc4b2('0x1'));var moment=require(_0xc4b2('0x2'));var BPromise=require(_0xc4b2('0x3'));var rs=require(_0xc4b2('0x4'));var fs=require('fs');var Redis=require(_0xc4b2('0x5'));var db=require(_0xc4b2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc4b2('0x7'))(_0xc4b2('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc4b2('0x9')][_0xc4b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23d9b0,_0x15bca9,_0x8099e9){return new BPromise(function(_0x40b506,_0x3ed48e){return client[_0xc4b2('0xb')](_0x23d9b0,_0x8099e9)[_0xc4b2('0xc')](function(_0x404c88){logger[_0xc4b2('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x15bca9,'request\x20sent');logger[_0xc4b2('0xe')](_0xc4b2('0xf'),_0x15bca9,_0xc4b2('0x10'),JSON[_0xc4b2('0x11')](_0x404c88));if(_0x404c88['error']){if(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x13')]===0x1f4){logger['error'](_0xc4b2('0x14'),_0x15bca9,_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);return _0x3ed48e(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);}logger[_0xc4b2('0x12')](_0xc4b2('0x14'),_0x15bca9,_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);return _0x40b506(_0x404c88[_0xc4b2('0x12')][_0xc4b2('0x15')]);}else{logger[_0xc4b2('0xd')](_0xc4b2('0x14'),_0x15bca9,'request\x20sent');_0x40b506(_0x404c88[_0xc4b2('0x16')][_0xc4b2('0x15')]);}})['catch'](function(_0x521243){logger[_0xc4b2('0x12')](_0xc4b2('0x14'),_0x15bca9,_0x521243);_0x3ed48e(_0x521243);});});}exports[_0xc4b2('0x17')]=function(_0x572684){var _0x1ec60f=this;return new Promise(function(_0xfc9cfc,_0x4bb5fc){return db[_0xc4b2('0x18')][_0xc4b2('0x19')]({'raw':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1b')]===undefined?!![]:![]:!![],'where':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1c')]||null:null,'attributes':_0x572684[_0xc4b2('0x1a')]?_0x572684['options'][_0xc4b2('0x1d')]||null:null,'limit':_0x572684['options']?_0x572684['options'][_0xc4b2('0x1e')]||null:null,'include':_0x572684[_0xc4b2('0x1a')]?_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1f')]?_['map'](_0x572684[_0xc4b2('0x1a')][_0xc4b2('0x1f')],function(_0x55fdf5){return{'model':db[_0x55fdf5[_0xc4b2('0x20')]],'as':_0x55fdf5['as'],'attributes':_0x55fdf5[_0xc4b2('0x1d')],'include':_0x55fdf5[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x55fdf5[_0xc4b2('0x1f')],function(_0x7f98d4){return{'model':db[_0x7f98d4[_0xc4b2('0x20')]],'as':_0x7f98d4['as'],'attributes':_0x7f98d4[_0xc4b2('0x1d')],'include':_0x7f98d4[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x7f98d4[_0xc4b2('0x1f')],function(_0x5a379a){return{'model':db[_0x5a379a[_0xc4b2('0x20')]],'as':_0x5a379a['as'],'attributes':_0x5a379a[_0xc4b2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4b2('0xc')](function(_0x34b3bd){logger['info'](_0xc4b2('0x17'),_0x572684);logger[_0xc4b2('0xe')]('GetSugarcrmAccount',_0x572684,JSON[_0xc4b2('0x11')](_0x34b3bd));_0xfc9cfc(_0x34b3bd);})['catch'](function(_0x5c04f3){logger[_0xc4b2('0x12')](_0xc4b2('0x17'),_0x5c04f3[_0xc4b2('0x15')],_0x572684);_0x4bb5fc(_0x1ec60f['error'](0x1f4,_0x5c04f3[_0xc4b2('0x15')]));});});};exports[_0xc4b2('0x22')]=function(_0x32407b){var _0x2dbfc3=this;return new Promise(function(_0x832f22,_0xe11a43){return db['SugarcrmAccount'][_0xc4b2('0x23')]({'raw':_0x32407b['options']?_0x32407b[_0xc4b2('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x32407b['options']?_0x32407b['options'][_0xc4b2('0x1c')]||null:null,'attributes':_0x32407b[_0xc4b2('0x1a')]?_0x32407b['options'][_0xc4b2('0x1d')]||null:null,'include':_0x32407b['options']?_0x32407b[_0xc4b2('0x1a')][_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x32407b[_0xc4b2('0x1a')]['include'],function(_0x3b8da2){return{'model':db[_0x3b8da2[_0xc4b2('0x20')]],'as':_0x3b8da2['as'],'attributes':_0x3b8da2[_0xc4b2('0x1d')],'include':_0x3b8da2[_0xc4b2('0x1f')]?_[_0xc4b2('0x21')](_0x3b8da2['include'],function(_0x55a08c){return{'model':db[_0x55a08c[_0xc4b2('0x20')]],'as':_0x55a08c['as'],'attributes':_0x55a08c[_0xc4b2('0x1d')],'include':_0x55a08c['include']?_[_0xc4b2('0x21')](_0x55a08c[_0xc4b2('0x1f')],function(_0x403c9c){return{'model':db[_0x403c9c[_0xc4b2('0x20')]],'as':_0x403c9c['as'],'attributes':_0x403c9c[_0xc4b2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc4b2('0xc')](function(_0x23828b){logger[_0xc4b2('0xd')](_0xc4b2('0x22'),_0x32407b);logger[_0xc4b2('0xe')](_0xc4b2('0x22'),_0x32407b,JSON[_0xc4b2('0x11')](_0x23828b));_0x832f22(_0x23828b);})['catch'](function(_0xd6a313){logger[_0xc4b2('0x12')](_0xc4b2('0x22'),_0xd6a313[_0xc4b2('0x15')],_0x32407b);_0xe11a43(_0x2dbfc3[_0xc4b2('0x12')](0x1f4,_0xd6a313['message']));});});};
\ No newline at end of file
+var _0xde20=['rpc','../../config/environment','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSugarcrmAccount','findAll','options','raw','where','attributes','include','map','model','ShowSugarcrmAccount','SugarcrmAccount','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3ea2d8,_0x505018){var _0xb20457=function(_0xa59c52){while(--_0xa59c52){_0x3ea2d8['push'](_0x3ea2d8['shift']());}};_0xb20457(++_0x505018);}(_0xde20,0x161));var _0x0de2=function(_0x1b50b2,_0x501f46){_0x1b50b2=_0x1b50b2-0x0;var _0x38e1a5=_0xde20[_0x1b50b2];return _0x38e1a5;};'use strict';var _=require(_0x0de2('0x0'));var util=require('util');var moment=require(_0x0de2('0x1'));var BPromise=require(_0x0de2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0de2('0x3'));var db=require(_0x0de2('0x4'))['db'];var utils=require(_0x0de2('0x5'));var logger=require(_0x0de2('0x6'))(_0x0de2('0x7'));var config=require(_0x0de2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0de2('0x9')][_0x0de2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x524ae7,_0x191d9a,_0x5525f3){return new BPromise(function(_0xa214db,_0x5a427f){return client[_0x0de2('0xb')](_0x524ae7,_0x5525f3)[_0x0de2('0xc')](function(_0x387a2a){logger[_0x0de2('0xd')](_0x0de2('0xe'),_0x191d9a,_0x0de2('0xf'));logger[_0x0de2('0x10')](_0x0de2('0x11'),_0x191d9a,_0x0de2('0xf'),JSON[_0x0de2('0x12')](_0x387a2a));if(_0x387a2a[_0x0de2('0x13')]){if(_0x387a2a[_0x0de2('0x13')][_0x0de2('0x14')]===0x1f4){logger[_0x0de2('0x13')]('SugarcrmAccount,\x20%s,\x20%s',_0x191d9a,_0x387a2a[_0x0de2('0x13')][_0x0de2('0x15')]);return _0x5a427f(_0x387a2a[_0x0de2('0x13')]['message']);}logger['error'](_0x0de2('0xe'),_0x191d9a,_0x387a2a[_0x0de2('0x13')][_0x0de2('0x15')]);return _0xa214db(_0x387a2a[_0x0de2('0x13')][_0x0de2('0x15')]);}else{logger[_0x0de2('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x191d9a,_0x0de2('0xf'));_0xa214db(_0x387a2a[_0x0de2('0x16')][_0x0de2('0x15')]);}})[_0x0de2('0x17')](function(_0x45da94){logger[_0x0de2('0x13')](_0x0de2('0xe'),_0x191d9a,_0x45da94);_0x5a427f(_0x45da94);});});}exports[_0x0de2('0x18')]=function(_0x37ccd3){var _0x400eb4=this;return new Promise(function(_0x3bfed9,_0x6a8c23){return db['SugarcrmAccount'][_0x0de2('0x19')]({'raw':_0x37ccd3[_0x0de2('0x1a')]?_0x37ccd3[_0x0de2('0x1a')][_0x0de2('0x1b')]===undefined?!![]:![]:!![],'where':_0x37ccd3['options']?_0x37ccd3[_0x0de2('0x1a')][_0x0de2('0x1c')]||null:null,'attributes':_0x37ccd3['options']?_0x37ccd3[_0x0de2('0x1a')][_0x0de2('0x1d')]||null:null,'limit':_0x37ccd3[_0x0de2('0x1a')]?_0x37ccd3[_0x0de2('0x1a')]['limit']||null:null,'include':_0x37ccd3[_0x0de2('0x1a')]?_0x37ccd3['options'][_0x0de2('0x1e')]?_[_0x0de2('0x1f')](_0x37ccd3['options'][_0x0de2('0x1e')],function(_0x1325b3){return{'model':db[_0x1325b3[_0x0de2('0x20')]],'as':_0x1325b3['as'],'attributes':_0x1325b3['attributes'],'include':_0x1325b3[_0x0de2('0x1e')]?_[_0x0de2('0x1f')](_0x1325b3[_0x0de2('0x1e')],function(_0x37c724){return{'model':db[_0x37c724[_0x0de2('0x20')]],'as':_0x37c724['as'],'attributes':_0x37c724[_0x0de2('0x1d')],'include':_0x37c724[_0x0de2('0x1e')]?_[_0x0de2('0x1f')](_0x37c724['include'],function(_0x2bdcee){return{'model':db[_0x2bdcee[_0x0de2('0x20')]],'as':_0x2bdcee['as'],'attributes':_0x2bdcee[_0x0de2('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x418eb2){logger[_0x0de2('0xd')](_0x0de2('0x18'),_0x37ccd3);logger[_0x0de2('0x10')](_0x0de2('0x18'),_0x37ccd3,JSON['stringify'](_0x418eb2));_0x3bfed9(_0x418eb2);})[_0x0de2('0x17')](function(_0x2621c7){logger[_0x0de2('0x13')](_0x0de2('0x18'),_0x2621c7[_0x0de2('0x15')],_0x37ccd3);_0x6a8c23(_0x400eb4[_0x0de2('0x13')](0x1f4,_0x2621c7[_0x0de2('0x15')]));});});};exports[_0x0de2('0x21')]=function(_0x4ce9e2){var _0xf98c6f=this;return new Promise(function(_0x275c8c,_0x15eb97){return db[_0x0de2('0x22')][_0x0de2('0x23')]({'raw':_0x4ce9e2['options']?_0x4ce9e2[_0x0de2('0x1a')][_0x0de2('0x1b')]===undefined?!![]:![]:!![],'where':_0x4ce9e2[_0x0de2('0x1a')]?_0x4ce9e2[_0x0de2('0x1a')]['where']||null:null,'attributes':_0x4ce9e2[_0x0de2('0x1a')]?_0x4ce9e2[_0x0de2('0x1a')]['attributes']||null:null,'include':_0x4ce9e2[_0x0de2('0x1a')]?_0x4ce9e2[_0x0de2('0x1a')][_0x0de2('0x1e')]?_[_0x0de2('0x1f')](_0x4ce9e2[_0x0de2('0x1a')][_0x0de2('0x1e')],function(_0xa88c2a){return{'model':db[_0xa88c2a[_0x0de2('0x20')]],'as':_0xa88c2a['as'],'attributes':_0xa88c2a[_0x0de2('0x1d')],'include':_0xa88c2a[_0x0de2('0x1e')]?_[_0x0de2('0x1f')](_0xa88c2a[_0x0de2('0x1e')],function(_0x19aa16){return{'model':db[_0x19aa16[_0x0de2('0x20')]],'as':_0x19aa16['as'],'attributes':_0x19aa16['attributes'],'include':_0x19aa16['include']?_[_0x0de2('0x1f')](_0x19aa16[_0x0de2('0x1e')],function(_0x4707c7){return{'model':db[_0x4707c7[_0x0de2('0x20')]],'as':_0x4707c7['as'],'attributes':_0x4707c7[_0x0de2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0de2('0xc')](function(_0x2759a9){logger['info'](_0x0de2('0x21'),_0x4ce9e2);logger[_0x0de2('0x10')](_0x0de2('0x21'),_0x4ce9e2,JSON[_0x0de2('0x12')](_0x2759a9));_0x275c8c(_0x2759a9);})[_0x0de2('0x17')](function(_0x2a63f6){logger[_0x0de2('0x13')]('ShowSugarcrmAccount',_0x2a63f6[_0x0de2('0x15')],_0x4ce9e2);_0x15eb97(_0xf98c6f['error'](0x1f4,_0x2a63f6[_0x0de2('0x15')]));});});};
\ No newline at end of file
index 605f94b..8cc200a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e44=['../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','post','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x0e44,0x73));var _0x40e4=function(_0x15ebab,_0x2397f8){_0x15ebab=_0x15ebab-0x0;var _0x5d9319=_0x0e44[_0x15ebab];return _0x5d9319;};'use strict';var multer=require(_0x40e4('0x0'));var util=require('util');var path=require(_0x40e4('0x1'));var timeout=require(_0x40e4('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x40e4('0x3'));var auth=require(_0x40e4('0x4'));var interaction=require(_0x40e4('0x5'));var config=require('../../config/environment');var controller=require(_0x40e4('0x6'));router[_0x40e4('0x7')]('/',auth[_0x40e4('0x8')](),controller[_0x40e4('0x9')]);router['get'](_0x40e4('0xa'),auth[_0x40e4('0x8')](),controller[_0x40e4('0xb')]);router[_0x40e4('0x7')](_0x40e4('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0x40e4('0x7')](_0x40e4('0xd'),auth['isAuthenticated'](),controller[_0x40e4('0xe')]);router[_0x40e4('0x7')]('/:id/descriptions',auth[_0x40e4('0x8')](),controller[_0x40e4('0xf')]);router[_0x40e4('0x10')]('/',auth[_0x40e4('0x8')](),controller['create']);router['put'](_0x40e4('0xa'),auth[_0x40e4('0x8')](),controller['update']);router[_0x40e4('0x11')]('/:id',auth[_0x40e4('0x8')](),controller[_0x40e4('0x12')]);module[_0x40e4('0x13')]=router;
\ No newline at end of file
+var _0xfa76=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x536bd1,_0x42e796){var _0x29aeec=function(_0x2a9dd7){while(--_0x2a9dd7){_0x536bd1['push'](_0x536bd1['shift']());}};_0x29aeec(++_0x42e796);}(_0xfa76,0x112));var _0x6fa7=function(_0x29cb75,_0xbd686f){_0x29cb75=_0x29cb75-0x0;var _0x5846cf=_0xfa76[_0x29cb75];return _0x5846cf;};'use strict';var multer=require(_0x6fa7('0x0'));var util=require('util');var path=require(_0x6fa7('0x1'));var timeout=require(_0x6fa7('0x2'));var express=require(_0x6fa7('0x3'));var router=express[_0x6fa7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6fa7('0x5'));var interaction=require(_0x6fa7('0x6'));var config=require(_0x6fa7('0x7'));var controller=require(_0x6fa7('0x8'));router['get']('/',auth[_0x6fa7('0x9')](),controller['index']);router[_0x6fa7('0xa')]('/:id',auth[_0x6fa7('0x9')](),controller[_0x6fa7('0xb')]);router[_0x6fa7('0xa')](_0x6fa7('0xc'),auth['isAuthenticated'](),controller[_0x6fa7('0xd')]);router[_0x6fa7('0xa')](_0x6fa7('0xe'),auth[_0x6fa7('0x9')](),controller[_0x6fa7('0xf')]);router['get'](_0x6fa7('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6fa7('0x11')]('/',auth['isAuthenticated'](),controller[_0x6fa7('0x12')]);router[_0x6fa7('0x13')](_0x6fa7('0x14'),auth['isAuthenticated'](),controller[_0x6fa7('0x15')]);router[_0x6fa7('0x16')](_0x6fa7('0x14'),auth[_0x6fa7('0x9')](),controller[_0x6fa7('0x17')]);module[_0x6fa7('0x18')]=router;
\ No newline at end of file
index 24ab91f..c068d3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7c1=['exports','STRING','sequelize'];(function(_0x2ba885,_0x20763b){var _0x3a6fbd=function(_0x8a49b9){while(--_0x8a49b9){_0x2ba885['push'](_0x2ba885['shift']());}};_0x3a6fbd(++_0x20763b);}(_0xd7c1,0x1b2));var _0x1d7c=function(_0x340e88,_0xefa352){_0x340e88=_0x340e88-0x0;var _0x1642f9=_0xd7c1[_0x340e88];return _0x1642f9;};'use strict';var Sequelize=require(_0x1d7c('0x0'));module[_0x1d7c('0x1')]={'name':{'type':Sequelize[_0x1d7c('0x2')]},'description':{'type':Sequelize[_0x1d7c('0x2')]}};
\ No newline at end of file
+var _0xc83f=['STRING','sequelize'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xc83f,0xa1));var _0xfc83=function(_0x1c31fa,_0x2925cb){_0x1c31fa=_0x1c31fa-0x0;var _0xdf751=_0xc83f[_0x1c31fa];return _0xdf751;};'use strict';var Sequelize=require(_0xfc83('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xfc83('0x1')]}};
\ No newline at end of file
index 7ad1ee4..a7b3884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f5a=['undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','SugarcrmConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','show','params','rawAttributes','include','options','find','create','body','catch','SugarcrmField','getFields','getSubjects','findOne','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset'];(function(_0x2ee20d,_0x354e70){var _0xade530=function(_0x1db7cc){while(--_0x1db7cc){_0x2ee20d['push'](_0x2ee20d['shift']());}};_0xade530(++_0x354e70);}(_0x6f5a,0x1d9));var _0xa6f5=function(_0x4e5f1e,_0x1b376a){_0x4e5f1e=_0x4e5f1e-0x0;var _0x19fbc7=_0x6f5a[_0x4e5f1e];return _0x19fbc7;};'use strict';var emlformat=require(_0xa6f5('0x0'));var rimraf=require(_0xa6f5('0x1'));var zipdir=require(_0xa6f5('0x2'));var jsonpatch=require(_0xa6f5('0x3'));var rp=require(_0xa6f5('0x4'));var moment=require(_0xa6f5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa6f5('0x6'));var util=require(_0xa6f5('0x7'));var path=require(_0xa6f5('0x8'));var sox=require(_0xa6f5('0x9'));var csv=require(_0xa6f5('0xa'));var ejs=require(_0xa6f5('0xb'));var fs=require('fs');var fs_extra=require(_0xa6f5('0xc'));var _=require(_0xa6f5('0xd'));var squel=require('squel');var crypto=require(_0xa6f5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa6f5('0xf'));var toCsv=require(_0xa6f5('0xa'));var querystring=require(_0xa6f5('0x10'));var Papa=require(_0xa6f5('0x11'));var Redis=require(_0xa6f5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa6f5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa6f5('0x14'));var logger=require(_0xa6f5('0x15'))(_0xa6f5('0x16'));var utils=require(_0xa6f5('0x17'));var config=require(_0xa6f5('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa6f5('0x19'))['db'];function respondWithStatusCode(_0x525403,_0x204b08){_0x204b08=_0x204b08||0xcc;return function(_0x14f0c1){if(_0x14f0c1){return _0x525403[_0xa6f5('0x1a')](_0x204b08);}return _0x525403['status'](_0x204b08)[_0xa6f5('0x1b')]();};}function respondWithResult(_0x465c3d,_0x581c5a){_0x581c5a=_0x581c5a||0xc8;return function(_0x20955f){if(_0x20955f){return _0x465c3d[_0xa6f5('0x1c')](_0x581c5a)[_0xa6f5('0x1d')](_0x20955f);}};}function respondWithFilteredResult(_0x492d0a,_0xa885dd){return function(_0x515683){if(_0x515683){var _0x531b20=typeof _0xa885dd[_0xa6f5('0x1e')]===_0xa6f5('0x1f')&&typeof _0xa885dd[_0xa6f5('0x20')]===_0xa6f5('0x1f');var _0x1b211d=_0x515683[_0xa6f5('0x21')];var _0xd7e6f2=_0x531b20?0x0:_0xa885dd[_0xa6f5('0x1e')];var _0xb0fb4a=_0x531b20?_0x515683['count']:_0xa885dd[_0xa6f5('0x1e')]+_0xa885dd[_0xa6f5('0x20')];var _0x30feb8;if(_0xb0fb4a>=_0x1b211d){_0xb0fb4a=_0x1b211d;_0x30feb8=0xc8;}else{_0x30feb8=0xce;}_0x492d0a[_0xa6f5('0x1c')](_0x30feb8);return _0x492d0a[_0xa6f5('0x22')](_0xa6f5('0x23'),_0xd7e6f2+'-'+_0xb0fb4a+'/'+_0x1b211d)[_0xa6f5('0x1d')](_0x515683);}return null;};}function patchUpdates(_0x2b0db0){return function(_0x4ecbec){try{jsonpatch[_0xa6f5('0x24')](_0x4ecbec,_0x2b0db0,!![]);}catch(_0x29258a){return BPromise[_0xa6f5('0x25')](_0x29258a);}return _0x4ecbec['save']();};}function saveUpdates(_0x3c6bb3,_0x19774b){return function(_0x19183b){if(_0x19183b){return _0x19183b[_0xa6f5('0x26')](_0x3c6bb3)[_0xa6f5('0x27')](function(_0x37bd8a){return _0x37bd8a;});}return null;};}function removeEntity(_0x10c8e4,_0x2f05bb){return function(_0x4aaf61){if(_0x4aaf61){return _0x4aaf61[_0xa6f5('0x28')]()[_0xa6f5('0x27')](function(){_0x10c8e4[_0xa6f5('0x1c')](0xcc)[_0xa6f5('0x1b')]();});}};}function handleEntityNotFound(_0x1c7a3a,_0x567204){return function(_0x240143){if(!_0x240143){_0x1c7a3a[_0xa6f5('0x1a')](0x194);}return _0x240143;};}function handleError(_0x3d76d1,_0x2e7d05){_0x2e7d05=_0x2e7d05||0x1f4;return function(_0x50263a){logger[_0xa6f5('0x29')](_0x50263a[_0xa6f5('0x2a')]);if(_0x50263a[_0xa6f5('0x2b')]){delete _0x50263a['name'];}_0x3d76d1[_0xa6f5('0x1c')](_0x2e7d05)[_0xa6f5('0x2c')](_0x50263a);};}exports[_0xa6f5('0x2d')]=function(_0xdd884f,_0x4e2026){var _0x3562bb={},_0x2a0a7c={},_0x42e945={'count':0x0,'rows':[]};var _0x543406=_['map'](db[_0xa6f5('0x2e')]['rawAttributes'],function(_0x598c32){return{'name':_0x598c32[_0xa6f5('0x2f')],'type':_0x598c32[_0xa6f5('0x30')][_0xa6f5('0x31')]};});_0x2a0a7c[_0xa6f5('0x32')]=_['map'](_0x543406,_0xa6f5('0x2b'));_0x2a0a7c[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0xdd884f[_0xa6f5('0x33')]);_0x2a0a7c[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x2a0a7c[_0xa6f5('0x32')],_0x2a0a7c[_0xa6f5('0x33')]);_0x3562bb[_0xa6f5('0x37')]=_[_0xa6f5('0x36')](_0x2a0a7c[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0xdd884f['query'][_0xa6f5('0x38')]));_0x3562bb[_0xa6f5('0x37')]=_0x3562bb[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x3562bb[_0xa6f5('0x37')]:_0x2a0a7c[_0xa6f5('0x32')];if(!_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3a')]('nolimit')){_0x3562bb['limit']=qs['limit'](_0xdd884f['query'][_0xa6f5('0x20')]);_0x3562bb[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0xdd884f['query'][_0xa6f5('0x1e')]);}_0x3562bb[_0xa6f5('0x3b')]=qs[_0xa6f5('0x3c')](_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x3562bb[_0xa6f5('0x3d')]=qs[_0xa6f5('0x35')](_[_0xa6f5('0x3e')](_0xdd884f[_0xa6f5('0x33')],_0x2a0a7c[_0xa6f5('0x35')]),_0x543406);if(_0xdd884f[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x3562bb[_0xa6f5('0x3d')]=_[_0xa6f5('0x40')](_0x3562bb['where'],{'$or':_[_0xa6f5('0x41')](_0x543406,function(_0x322b62){if(_0x322b62['type']!==_0xa6f5('0x42')){var _0x3d858e={};_0x3d858e[_0x322b62[_0xa6f5('0x2b')]]={'$like':'%'+_0xdd884f['query'][_0xa6f5('0x3f')]+'%'};return _0x3d858e;}})});}_0x3562bb=_['merge']({},_0x3562bb,_0xdd884f['options']);var _0x30a917={'where':_0x3562bb[_0xa6f5('0x3d')]};return db[_0xa6f5('0x2e')][_0xa6f5('0x21')](_0x30a917)[_0xa6f5('0x27')](function(_0x78282e){_0x42e945[_0xa6f5('0x21')]=_0x78282e;if(_0xdd884f['query'][_0xa6f5('0x43')]){_0x3562bb['include']=[{'all':!![]}];}return db[_0xa6f5('0x2e')][_0xa6f5('0x44')](_0x3562bb);})[_0xa6f5('0x27')](function(_0x4bcb60){_0x42e945['rows']=_0x4bcb60;return _0x42e945;})[_0xa6f5('0x27')](respondWithFilteredResult(_0x4e2026,_0x3562bb))['catch'](handleError(_0x4e2026,null));};exports[_0xa6f5('0x45')]=function(_0x171c6d,_0x136bcd){var _0x5e9a05={'raw':![],'where':{'id':_0x171c6d[_0xa6f5('0x46')]['id']}},_0x1932f7={};_0x1932f7[_0xa6f5('0x32')]=_['keys'](db[_0xa6f5('0x2e')][_0xa6f5('0x47')]);_0x1932f7[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x171c6d[_0xa6f5('0x33')]);_0x1932f7[_0xa6f5('0x35')]=_['intersection'](_0x1932f7[_0xa6f5('0x32')],_0x1932f7[_0xa6f5('0x33')]);_0x5e9a05['attributes']=_['intersection'](_0x1932f7[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x171c6d['query'][_0xa6f5('0x38')]));_0x5e9a05[_0xa6f5('0x37')]=_0x5e9a05[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x5e9a05['attributes']:_0x1932f7['model'];if(_0x171c6d[_0xa6f5('0x33')][_0xa6f5('0x43')]){_0x5e9a05[_0xa6f5('0x48')]=[{'all':!![]}];}_0x5e9a05=_[_0xa6f5('0x40')]({},_0x5e9a05,_0x171c6d[_0xa6f5('0x49')]);return db[_0xa6f5('0x2e')][_0xa6f5('0x4a')](_0x5e9a05)[_0xa6f5('0x27')](handleEntityNotFound(_0x136bcd,null))[_0xa6f5('0x27')](respondWithResult(_0x136bcd,null))['catch'](handleError(_0x136bcd,null));};exports[_0xa6f5('0x4b')]=function(_0x3f46ac,_0x1535e9){return db[_0xa6f5('0x2e')]['create'](_0x3f46ac[_0xa6f5('0x4c')],{})['then'](respondWithResult(_0x1535e9,0xc9))['catch'](handleError(_0x1535e9,null));};exports[_0xa6f5('0x26')]=function(_0x302672,_0xd51a05){if(_0x302672[_0xa6f5('0x4c')]['id']){delete _0x302672[_0xa6f5('0x4c')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x302672[_0xa6f5('0x46')]['id']}})['then'](handleEntityNotFound(_0xd51a05,null))[_0xa6f5('0x27')](saveUpdates(_0x302672[_0xa6f5('0x4c')],null))[_0xa6f5('0x27')](respondWithResult(_0xd51a05,null))[_0xa6f5('0x4d')](handleError(_0xd51a05,null));};exports[_0xa6f5('0x28')]=function(_0x26e3ae,_0x397b36){return db['SugarcrmConfiguration'][_0xa6f5('0x4a')]({'where':{'id':_0x26e3ae[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x397b36,null))['then'](removeEntity(_0x397b36,null))[_0xa6f5('0x4d')](handleError(_0x397b36,null));};exports['getFields']=function(_0x1107b0,_0x55b412,_0x5d1f62){var _0x2ccb87={};var _0x414955={};var _0x51191e;var _0x3d9c11;return db[_0xa6f5('0x2e')]['findOne']({'where':{'id':_0x1107b0[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x55b412,null))[_0xa6f5('0x27')](function(_0x105cae){if(_0x105cae){_0x51191e=_0x105cae;_0x414955[_0xa6f5('0x32')]=_['keys'](db[_0xa6f5('0x4e')]['rawAttributes']);_0x414955['query']=_[_0xa6f5('0x34')](_0x1107b0[_0xa6f5('0x33')]);_0x414955[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x414955[_0xa6f5('0x32')],_0x414955['query']);_0x2ccb87['attributes']=_['intersection'](_0x414955['model'],qs[_0xa6f5('0x38')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x38')]));_0x2ccb87[_0xa6f5('0x37')]=_0x2ccb87[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x2ccb87[_0xa6f5('0x37')]:_0x414955[_0xa6f5('0x32')];_0x2ccb87['order']=qs[_0xa6f5('0x3c')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x2ccb87[_0xa6f5('0x3d')]=qs[_0xa6f5('0x35')](_[_0xa6f5('0x3e')](_0x1107b0[_0xa6f5('0x33')],_0x414955['filters']));if(_0x1107b0[_0xa6f5('0x33')]['filter']){_0x2ccb87['where']=_['merge'](_0x2ccb87['where'],{'$or':_['map'](_0x2ccb87['attributes'],function(_0x37ca39){var _0x5e6a4b={};_0x5e6a4b[_0x37ca39]={'$like':'%'+_0x1107b0['query'][_0xa6f5('0x3f')]+'%'};return _0x5e6a4b;})});}_0x2ccb87=_[_0xa6f5('0x40')]({},_0x2ccb87,_0x1107b0['options']);return _0x51191e['getFields'](_0x2ccb87);}})[_0xa6f5('0x27')](function(_0x287bd5){if(_0x287bd5){_0x3d9c11=_0x287bd5['length'];if(!_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x3a')]('nolimit')){_0x2ccb87['limit']=qs[_0xa6f5('0x20')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x20')]);_0x2ccb87['offset']=qs[_0xa6f5('0x1e')](_0x1107b0[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x51191e[_0xa6f5('0x4f')](_0x2ccb87);}})[_0xa6f5('0x27')](function(_0x5119a7){if(_0x5119a7){return _0x5119a7?{'count':_0x3d9c11,'rows':_0x5119a7}:null;}})['then'](respondWithResult(_0x55b412,null))[_0xa6f5('0x4d')](handleError(_0x55b412,null));};exports[_0xa6f5('0x50')]=function(_0x5a6c4f,_0xcf1273,_0x5ab183){var _0x2b9731={};var _0x3e387d={};var _0x5945a4;var _0x427383;return db[_0xa6f5('0x2e')][_0xa6f5('0x51')]({'where':{'id':_0x5a6c4f[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0xcf1273,null))[_0xa6f5('0x27')](function(_0x204423){if(_0x204423){_0x5945a4=_0x204423;_0x3e387d[_0xa6f5('0x32')]=_[_0xa6f5('0x34')](db[_0xa6f5('0x4e')][_0xa6f5('0x47')]);_0x3e387d[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x5a6c4f[_0xa6f5('0x33')]);_0x3e387d[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x3e387d[_0xa6f5('0x32')],_0x3e387d[_0xa6f5('0x33')]);_0x2b9731[_0xa6f5('0x37')]=_[_0xa6f5('0x36')](_0x3e387d[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x5a6c4f[_0xa6f5('0x33')]['fields']));_0x2b9731[_0xa6f5('0x37')]=_0x2b9731[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x2b9731[_0xa6f5('0x37')]:_0x3e387d[_0xa6f5('0x32')];_0x2b9731[_0xa6f5('0x3b')]=qs['sort'](_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x2b9731[_0xa6f5('0x3d')]=qs['filters'](_[_0xa6f5('0x3e')](_0x5a6c4f['query'],_0x3e387d[_0xa6f5('0x35')]));if(_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x2b9731[_0xa6f5('0x3d')]=_[_0xa6f5('0x40')](_0x2b9731[_0xa6f5('0x3d')],{'$or':_[_0xa6f5('0x41')](_0x2b9731[_0xa6f5('0x37')],function(_0x4e910c){var _0x551511={};_0x551511[_0x4e910c]={'$like':'%'+_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3f')]+'%'};return _0x551511;})});}_0x2b9731=_['merge']({},_0x2b9731,_0x5a6c4f[_0xa6f5('0x49')]);return _0x5945a4[_0xa6f5('0x50')](_0x2b9731);}})[_0xa6f5('0x27')](function(_0x4b314b){if(_0x4b314b){_0x427383=_0x4b314b['length'];if(!_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x3a')](_0xa6f5('0x52'))){_0x2b9731[_0xa6f5('0x20')]=qs[_0xa6f5('0x20')](_0x5a6c4f[_0xa6f5('0x33')]['limit']);_0x2b9731[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0x5a6c4f[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x5945a4['getSubjects'](_0x2b9731);}})[_0xa6f5('0x27')](function(_0x44d6ec){if(_0x44d6ec){return _0x44d6ec?{'count':_0x427383,'rows':_0x44d6ec}:null;}})[_0xa6f5('0x27')](respondWithResult(_0xcf1273,null))[_0xa6f5('0x4d')](handleError(_0xcf1273,null));};exports[_0xa6f5('0x53')]=function(_0x1a793d,_0x22272d,_0x7e68fe){var _0x3ec185={};var _0x78c3cf={};var _0x45cb80;var _0x228065;return db[_0xa6f5('0x2e')]['findOne']({'where':{'id':_0x1a793d[_0xa6f5('0x46')]['id']}})[_0xa6f5('0x27')](handleEntityNotFound(_0x22272d,null))[_0xa6f5('0x27')](function(_0x3e2202){if(_0x3e2202){_0x45cb80=_0x3e2202;_0x78c3cf[_0xa6f5('0x32')]=_[_0xa6f5('0x34')](db['SugarcrmField']['rawAttributes']);_0x78c3cf[_0xa6f5('0x33')]=_[_0xa6f5('0x34')](_0x1a793d[_0xa6f5('0x33')]);_0x78c3cf[_0xa6f5('0x35')]=_[_0xa6f5('0x36')](_0x78c3cf[_0xa6f5('0x32')],_0x78c3cf['query']);_0x3ec185['attributes']=_[_0xa6f5('0x36')](_0x78c3cf[_0xa6f5('0x32')],qs[_0xa6f5('0x38')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x38')]));_0x3ec185[_0xa6f5('0x37')]=_0x3ec185[_0xa6f5('0x37')][_0xa6f5('0x39')]?_0x3ec185[_0xa6f5('0x37')]:_0x78c3cf['model'];_0x3ec185[_0xa6f5('0x3b')]=qs[_0xa6f5('0x3c')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x3c')]);_0x3ec185[_0xa6f5('0x3d')]=qs['filters'](_[_0xa6f5('0x3e')](_0x1a793d[_0xa6f5('0x33')],_0x78c3cf[_0xa6f5('0x35')]));if(_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x3f')]){_0x3ec185[_0xa6f5('0x3d')]=_['merge'](_0x3ec185[_0xa6f5('0x3d')],{'$or':_[_0xa6f5('0x41')](_0x3ec185[_0xa6f5('0x37')],function(_0xf603b3){var _0xdaa49c={};_0xdaa49c[_0xf603b3]={'$like':'%'+_0x1a793d['query'][_0xa6f5('0x3f')]+'%'};return _0xdaa49c;})});}_0x3ec185=_[_0xa6f5('0x40')]({},_0x3ec185,_0x1a793d[_0xa6f5('0x49')]);return _0x45cb80['getDescriptions'](_0x3ec185);}})['then'](function(_0x4327ab){if(_0x4327ab){_0x228065=_0x4327ab[_0xa6f5('0x39')];if(!_0x1a793d['query'][_0xa6f5('0x3a')](_0xa6f5('0x52'))){_0x3ec185[_0xa6f5('0x20')]=qs['limit'](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x20')]);_0x3ec185[_0xa6f5('0x1e')]=qs[_0xa6f5('0x1e')](_0x1a793d[_0xa6f5('0x33')][_0xa6f5('0x1e')]);}return _0x45cb80[_0xa6f5('0x53')](_0x3ec185);}})[_0xa6f5('0x27')](function(_0x2a7234){if(_0x2a7234){return _0x2a7234?{'count':_0x228065,'rows':_0x2a7234}:null;}})[_0xa6f5('0x27')](respondWithResult(_0x22272d,null))[_0xa6f5('0x4d')](handleError(_0x22272d,null));};
\ No newline at end of file
+var _0x8cc0=['rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','destroy','then','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SugarcrmConfiguration','includeAll','include','findAll','rows','catch','show','params','fields','create','body','find','findOne','SugarcrmField','pick','getFields','getSubjects','getDescriptions','eml-format'];(function(_0x41f6df,_0x1d9d1b){var _0x45c9a7=function(_0x2c0a86){while(--_0x2c0a86){_0x41f6df['push'](_0x41f6df['shift']());}};_0x45c9a7(++_0x1d9d1b);}(_0x8cc0,0xef));var _0x08cc=function(_0x51ec1a,_0x5d6a5a){_0x51ec1a=_0x51ec1a-0x0;var _0x19acf2=_0x8cc0[_0x51ec1a];return _0x19acf2;};'use strict';var emlformat=require(_0x08cc('0x0'));var rimraf=require(_0x08cc('0x1'));var zipdir=require(_0x08cc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x08cc('0x3'));var moment=require('moment');var BPromise=require(_0x08cc('0x4'));var Mustache=require(_0x08cc('0x5'));var util=require(_0x08cc('0x6'));var path=require(_0x08cc('0x7'));var sox=require(_0x08cc('0x8'));var csv=require(_0x08cc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x08cc('0xa'));var _=require(_0x08cc('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x08cc('0xc'));var deskjs=require(_0x08cc('0xd'));var toCsv=require(_0x08cc('0x9'));var querystring=require(_0x08cc('0xe'));var Papa=require('papaparse');var Redis=require(_0x08cc('0xf'));var authService=require(_0x08cc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x08cc('0x11'))(_0x08cc('0x12'));var utils=require(_0x08cc('0x13'));var config=require(_0x08cc('0x14'));var licenseUtil=require(_0x08cc('0x15'));var db=require(_0x08cc('0x16'))['db'];function respondWithStatusCode(_0x47edc4,_0x559ec2){_0x559ec2=_0x559ec2||0xcc;return function(_0x596c35){if(_0x596c35){return _0x47edc4['sendStatus'](_0x559ec2);}return _0x47edc4[_0x08cc('0x17')](_0x559ec2)[_0x08cc('0x18')]();};}function respondWithResult(_0x4a40bd,_0x51d590){_0x51d590=_0x51d590||0xc8;return function(_0x1941a7){if(_0x1941a7){return _0x4a40bd[_0x08cc('0x17')](_0x51d590)['json'](_0x1941a7);}};}function respondWithFilteredResult(_0x151c3f,_0x41af4a){return function(_0x1b88d6){if(_0x1b88d6){var _0x32a673=typeof _0x41af4a[_0x08cc('0x19')]===_0x08cc('0x1a')&&typeof _0x41af4a[_0x08cc('0x1b')]===_0x08cc('0x1a');var _0x356f4c=_0x1b88d6[_0x08cc('0x1c')];var _0x5ee755=_0x32a673?0x0:_0x41af4a[_0x08cc('0x19')];var _0x2da5ad=_0x32a673?_0x1b88d6[_0x08cc('0x1c')]:_0x41af4a[_0x08cc('0x19')]+_0x41af4a['limit'];var _0xb1d440;if(_0x2da5ad>=_0x356f4c){_0x2da5ad=_0x356f4c;_0xb1d440=0xc8;}else{_0xb1d440=0xce;}_0x151c3f['status'](_0xb1d440);return _0x151c3f[_0x08cc('0x1d')](_0x08cc('0x1e'),_0x5ee755+'-'+_0x2da5ad+'/'+_0x356f4c)[_0x08cc('0x1f')](_0x1b88d6);}return null;};}function patchUpdates(_0x3df0e5){return function(_0x3eaa02){try{jsonpatch['apply'](_0x3eaa02,_0x3df0e5,!![]);}catch(_0xbed8d0){return BPromise['reject'](_0xbed8d0);}return _0x3eaa02[_0x08cc('0x20')]();};}function saveUpdates(_0x4d9269,_0x4cc139){return function(_0xf28869){if(_0xf28869){return _0xf28869[_0x08cc('0x21')](_0x4d9269)['then'](function(_0x50731f){return _0x50731f;});}return null;};}function removeEntity(_0x344985,_0x3d5dc5){return function(_0x11c7fd){if(_0x11c7fd){return _0x11c7fd[_0x08cc('0x22')]()[_0x08cc('0x23')](function(){_0x344985[_0x08cc('0x17')](0xcc)[_0x08cc('0x18')]();});}};}function handleEntityNotFound(_0x16f56b,_0x572cc9){return function(_0x4cfc8f){if(!_0x4cfc8f){_0x16f56b[_0x08cc('0x24')](0x194);}return _0x4cfc8f;};}function handleError(_0x16de2a,_0x4e3045){_0x4e3045=_0x4e3045||0x1f4;return function(_0x121512){logger[_0x08cc('0x25')](_0x121512[_0x08cc('0x26')]);if(_0x121512[_0x08cc('0x27')]){delete _0x121512[_0x08cc('0x27')];}_0x16de2a[_0x08cc('0x17')](_0x4e3045)['send'](_0x121512);};}exports[_0x08cc('0x28')]=function(_0x1b32bb,_0x367c8b){var _0x4c6668={},_0x524190={},_0x3072cb={'count':0x0,'rows':[]};var _0x3d869e=_[_0x08cc('0x29')](db['SugarcrmConfiguration'][_0x08cc('0x2a')],function(_0x22307){return{'name':_0x22307[_0x08cc('0x2b')],'type':_0x22307[_0x08cc('0x2c')][_0x08cc('0x2d')]};});_0x524190['model']=_[_0x08cc('0x29')](_0x3d869e,'name');_0x524190[_0x08cc('0x2e')]=_[_0x08cc('0x2f')](_0x1b32bb[_0x08cc('0x2e')]);_0x524190[_0x08cc('0x30')]=_[_0x08cc('0x31')](_0x524190['model'],_0x524190[_0x08cc('0x2e')]);_0x4c6668[_0x08cc('0x32')]=_['intersection'](_0x524190[_0x08cc('0x33')],qs['fields'](_0x1b32bb['query']['fields']));_0x4c6668[_0x08cc('0x32')]=_0x4c6668[_0x08cc('0x32')][_0x08cc('0x34')]?_0x4c6668[_0x08cc('0x32')]:_0x524190['model'];if(!_0x1b32bb[_0x08cc('0x2e')][_0x08cc('0x35')](_0x08cc('0x36'))){_0x4c6668[_0x08cc('0x1b')]=qs['limit'](_0x1b32bb[_0x08cc('0x2e')][_0x08cc('0x1b')]);_0x4c6668['offset']=qs['offset'](_0x1b32bb['query']['offset']);}_0x4c6668[_0x08cc('0x37')]=qs[_0x08cc('0x38')](_0x1b32bb['query'][_0x08cc('0x38')]);_0x4c6668[_0x08cc('0x39')]=qs[_0x08cc('0x30')](_['pick'](_0x1b32bb[_0x08cc('0x2e')],_0x524190[_0x08cc('0x30')]),_0x3d869e);if(_0x1b32bb[_0x08cc('0x2e')][_0x08cc('0x3a')]){_0x4c6668[_0x08cc('0x39')]=_[_0x08cc('0x3b')](_0x4c6668[_0x08cc('0x39')],{'$or':_['map'](_0x3d869e,function(_0x9eaa03){if(_0x9eaa03[_0x08cc('0x2c')]!==_0x08cc('0x3c')){var _0x4ee425={};_0x4ee425[_0x9eaa03[_0x08cc('0x27')]]={'$like':'%'+_0x1b32bb[_0x08cc('0x2e')]['filter']+'%'};return _0x4ee425;}})});}_0x4c6668=_[_0x08cc('0x3b')]({},_0x4c6668,_0x1b32bb[_0x08cc('0x3d')]);var _0xe06ce7={'where':_0x4c6668['where']};return db[_0x08cc('0x3e')][_0x08cc('0x1c')](_0xe06ce7)[_0x08cc('0x23')](function(_0x2a5b68){_0x3072cb[_0x08cc('0x1c')]=_0x2a5b68;if(_0x1b32bb[_0x08cc('0x2e')][_0x08cc('0x3f')]){_0x4c6668[_0x08cc('0x40')]=[{'all':!![]}];}return db[_0x08cc('0x3e')][_0x08cc('0x41')](_0x4c6668);})[_0x08cc('0x23')](function(_0x1e8896){_0x3072cb[_0x08cc('0x42')]=_0x1e8896;return _0x3072cb;})[_0x08cc('0x23')](respondWithFilteredResult(_0x367c8b,_0x4c6668))[_0x08cc('0x43')](handleError(_0x367c8b,null));};exports[_0x08cc('0x44')]=function(_0x5533bf,_0x582946){var _0x497f3b={'raw':![],'where':{'id':_0x5533bf[_0x08cc('0x45')]['id']}},_0xdef516={};_0xdef516[_0x08cc('0x33')]=_[_0x08cc('0x2f')](db['SugarcrmConfiguration'][_0x08cc('0x2a')]);_0xdef516[_0x08cc('0x2e')]=_[_0x08cc('0x2f')](_0x5533bf[_0x08cc('0x2e')]);_0xdef516[_0x08cc('0x30')]=_['intersection'](_0xdef516[_0x08cc('0x33')],_0xdef516[_0x08cc('0x2e')]);_0x497f3b[_0x08cc('0x32')]=_['intersection'](_0xdef516[_0x08cc('0x33')],qs[_0x08cc('0x46')](_0x5533bf[_0x08cc('0x2e')][_0x08cc('0x46')]));_0x497f3b[_0x08cc('0x32')]=_0x497f3b['attributes']['length']?_0x497f3b['attributes']:_0xdef516['model'];if(_0x5533bf[_0x08cc('0x2e')][_0x08cc('0x3f')]){_0x497f3b['include']=[{'all':!![]}];}_0x497f3b=_[_0x08cc('0x3b')]({},_0x497f3b,_0x5533bf['options']);return db[_0x08cc('0x3e')]['find'](_0x497f3b)[_0x08cc('0x23')](handleEntityNotFound(_0x582946,null))[_0x08cc('0x23')](respondWithResult(_0x582946,null))['catch'](handleError(_0x582946,null));};exports[_0x08cc('0x47')]=function(_0x144cb2,_0x8a42e){return db[_0x08cc('0x3e')][_0x08cc('0x47')](_0x144cb2['body'],{})[_0x08cc('0x23')](respondWithResult(_0x8a42e,0xc9))[_0x08cc('0x43')](handleError(_0x8a42e,null));};exports[_0x08cc('0x21')]=function(_0x19a4a3,_0x44516e){if(_0x19a4a3[_0x08cc('0x48')]['id']){delete _0x19a4a3[_0x08cc('0x48')]['id'];}return db[_0x08cc('0x3e')][_0x08cc('0x49')]({'where':{'id':_0x19a4a3[_0x08cc('0x45')]['id']}})[_0x08cc('0x23')](handleEntityNotFound(_0x44516e,null))[_0x08cc('0x23')](saveUpdates(_0x19a4a3[_0x08cc('0x48')],null))[_0x08cc('0x23')](respondWithResult(_0x44516e,null))[_0x08cc('0x43')](handleError(_0x44516e,null));};exports[_0x08cc('0x22')]=function(_0x3173b1,_0x20e248){return db[_0x08cc('0x3e')]['find']({'where':{'id':_0x3173b1[_0x08cc('0x45')]['id']}})['then'](handleEntityNotFound(_0x20e248,null))['then'](removeEntity(_0x20e248,null))[_0x08cc('0x43')](handleError(_0x20e248,null));};exports['getFields']=function(_0x27f673,_0x53e798,_0x2b0bd1){var _0x3be478={};var _0xd55bad={};var _0x40a9c3;var _0x2da2e0;return db[_0x08cc('0x3e')][_0x08cc('0x4a')]({'where':{'id':_0x27f673[_0x08cc('0x45')]['id']}})[_0x08cc('0x23')](handleEntityNotFound(_0x53e798,null))[_0x08cc('0x23')](function(_0x37c33a){if(_0x37c33a){_0x40a9c3=_0x37c33a;_0xd55bad[_0x08cc('0x33')]=_[_0x08cc('0x2f')](db[_0x08cc('0x4b')][_0x08cc('0x2a')]);_0xd55bad[_0x08cc('0x2e')]=_[_0x08cc('0x2f')](_0x27f673[_0x08cc('0x2e')]);_0xd55bad[_0x08cc('0x30')]=_['intersection'](_0xd55bad[_0x08cc('0x33')],_0xd55bad[_0x08cc('0x2e')]);_0x3be478[_0x08cc('0x32')]=_['intersection'](_0xd55bad[_0x08cc('0x33')],qs[_0x08cc('0x46')](_0x27f673[_0x08cc('0x2e')]['fields']));_0x3be478[_0x08cc('0x32')]=_0x3be478[_0x08cc('0x32')][_0x08cc('0x34')]?_0x3be478[_0x08cc('0x32')]:_0xd55bad[_0x08cc('0x33')];_0x3be478[_0x08cc('0x37')]=qs[_0x08cc('0x38')](_0x27f673[_0x08cc('0x2e')][_0x08cc('0x38')]);_0x3be478[_0x08cc('0x39')]=qs['filters'](_[_0x08cc('0x4c')](_0x27f673[_0x08cc('0x2e')],_0xd55bad[_0x08cc('0x30')]));if(_0x27f673[_0x08cc('0x2e')][_0x08cc('0x3a')]){_0x3be478['where']=_[_0x08cc('0x3b')](_0x3be478[_0x08cc('0x39')],{'$or':_[_0x08cc('0x29')](_0x3be478[_0x08cc('0x32')],function(_0x513642){var _0x3c06e0={};_0x3c06e0[_0x513642]={'$like':'%'+_0x27f673[_0x08cc('0x2e')]['filter']+'%'};return _0x3c06e0;})});}_0x3be478=_[_0x08cc('0x3b')]({},_0x3be478,_0x27f673[_0x08cc('0x3d')]);return _0x40a9c3[_0x08cc('0x4d')](_0x3be478);}})[_0x08cc('0x23')](function(_0x576964){if(_0x576964){_0x2da2e0=_0x576964[_0x08cc('0x34')];if(!_0x27f673[_0x08cc('0x2e')][_0x08cc('0x35')](_0x08cc('0x36'))){_0x3be478['limit']=qs[_0x08cc('0x1b')](_0x27f673['query'][_0x08cc('0x1b')]);_0x3be478[_0x08cc('0x19')]=qs[_0x08cc('0x19')](_0x27f673[_0x08cc('0x2e')][_0x08cc('0x19')]);}return _0x40a9c3['getFields'](_0x3be478);}})[_0x08cc('0x23')](function(_0x187123){if(_0x187123){return _0x187123?{'count':_0x2da2e0,'rows':_0x187123}:null;}})[_0x08cc('0x23')](respondWithResult(_0x53e798,null))[_0x08cc('0x43')](handleError(_0x53e798,null));};exports[_0x08cc('0x4e')]=function(_0x44b636,_0x1ebba8,_0x303bca){var _0x26539d={};var _0x3b8a62={};var _0x1e0603;var _0x245c76;return db[_0x08cc('0x3e')][_0x08cc('0x4a')]({'where':{'id':_0x44b636[_0x08cc('0x45')]['id']}})[_0x08cc('0x23')](handleEntityNotFound(_0x1ebba8,null))['then'](function(_0x500d44){if(_0x500d44){_0x1e0603=_0x500d44;_0x3b8a62['model']=_[_0x08cc('0x2f')](db[_0x08cc('0x4b')][_0x08cc('0x2a')]);_0x3b8a62[_0x08cc('0x2e')]=_[_0x08cc('0x2f')](_0x44b636[_0x08cc('0x2e')]);_0x3b8a62['filters']=_[_0x08cc('0x31')](_0x3b8a62[_0x08cc('0x33')],_0x3b8a62[_0x08cc('0x2e')]);_0x26539d[_0x08cc('0x32')]=_[_0x08cc('0x31')](_0x3b8a62[_0x08cc('0x33')],qs[_0x08cc('0x46')](_0x44b636[_0x08cc('0x2e')]['fields']));_0x26539d[_0x08cc('0x32')]=_0x26539d['attributes'][_0x08cc('0x34')]?_0x26539d[_0x08cc('0x32')]:_0x3b8a62[_0x08cc('0x33')];_0x26539d[_0x08cc('0x37')]=qs['sort'](_0x44b636['query'][_0x08cc('0x38')]);_0x26539d['where']=qs[_0x08cc('0x30')](_['pick'](_0x44b636['query'],_0x3b8a62['filters']));if(_0x44b636[_0x08cc('0x2e')]['filter']){_0x26539d[_0x08cc('0x39')]=_['merge'](_0x26539d['where'],{'$or':_['map'](_0x26539d['attributes'],function(_0x1514fe){var _0x3c8c8f={};_0x3c8c8f[_0x1514fe]={'$like':'%'+_0x44b636['query']['filter']+'%'};return _0x3c8c8f;})});}_0x26539d=_[_0x08cc('0x3b')]({},_0x26539d,_0x44b636[_0x08cc('0x3d')]);return _0x1e0603['getSubjects'](_0x26539d);}})[_0x08cc('0x23')](function(_0x5aa8c1){if(_0x5aa8c1){_0x245c76=_0x5aa8c1['length'];if(!_0x44b636[_0x08cc('0x2e')][_0x08cc('0x35')](_0x08cc('0x36'))){_0x26539d[_0x08cc('0x1b')]=qs[_0x08cc('0x1b')](_0x44b636[_0x08cc('0x2e')][_0x08cc('0x1b')]);_0x26539d[_0x08cc('0x19')]=qs['offset'](_0x44b636['query'][_0x08cc('0x19')]);}return _0x1e0603[_0x08cc('0x4e')](_0x26539d);}})[_0x08cc('0x23')](function(_0x4b908e){if(_0x4b908e){return _0x4b908e?{'count':_0x245c76,'rows':_0x4b908e}:null;}})[_0x08cc('0x23')](respondWithResult(_0x1ebba8,null))[_0x08cc('0x43')](handleError(_0x1ebba8,null));};exports[_0x08cc('0x4f')]=function(_0x20db0d,_0x474d24,_0x247093){var _0x3db1ff={};var _0xf4992={};var _0xc02618;var _0x561786;return db[_0x08cc('0x3e')][_0x08cc('0x4a')]({'where':{'id':_0x20db0d[_0x08cc('0x45')]['id']}})[_0x08cc('0x23')](handleEntityNotFound(_0x474d24,null))[_0x08cc('0x23')](function(_0x3c7d4b){if(_0x3c7d4b){_0xc02618=_0x3c7d4b;_0xf4992[_0x08cc('0x33')]=_[_0x08cc('0x2f')](db[_0x08cc('0x4b')][_0x08cc('0x2a')]);_0xf4992[_0x08cc('0x2e')]=_[_0x08cc('0x2f')](_0x20db0d[_0x08cc('0x2e')]);_0xf4992[_0x08cc('0x30')]=_['intersection'](_0xf4992[_0x08cc('0x33')],_0xf4992[_0x08cc('0x2e')]);_0x3db1ff[_0x08cc('0x32')]=_[_0x08cc('0x31')](_0xf4992[_0x08cc('0x33')],qs[_0x08cc('0x46')](_0x20db0d['query'][_0x08cc('0x46')]));_0x3db1ff[_0x08cc('0x32')]=_0x3db1ff[_0x08cc('0x32')][_0x08cc('0x34')]?_0x3db1ff[_0x08cc('0x32')]:_0xf4992[_0x08cc('0x33')];_0x3db1ff[_0x08cc('0x37')]=qs[_0x08cc('0x38')](_0x20db0d['query'][_0x08cc('0x38')]);_0x3db1ff[_0x08cc('0x39')]=qs[_0x08cc('0x30')](_[_0x08cc('0x4c')](_0x20db0d[_0x08cc('0x2e')],_0xf4992[_0x08cc('0x30')]));if(_0x20db0d[_0x08cc('0x2e')][_0x08cc('0x3a')]){_0x3db1ff[_0x08cc('0x39')]=_[_0x08cc('0x3b')](_0x3db1ff['where'],{'$or':_[_0x08cc('0x29')](_0x3db1ff['attributes'],function(_0x341118){var _0x39abbb={};_0x39abbb[_0x341118]={'$like':'%'+_0x20db0d['query'][_0x08cc('0x3a')]+'%'};return _0x39abbb;})});}_0x3db1ff=_['merge']({},_0x3db1ff,_0x20db0d[_0x08cc('0x3d')]);return _0xc02618['getDescriptions'](_0x3db1ff);}})[_0x08cc('0x23')](function(_0x4310ab){if(_0x4310ab){_0x561786=_0x4310ab[_0x08cc('0x34')];if(!_0x20db0d[_0x08cc('0x2e')][_0x08cc('0x35')]('nolimit')){_0x3db1ff['limit']=qs['limit'](_0x20db0d['query']['limit']);_0x3db1ff[_0x08cc('0x19')]=qs['offset'](_0x20db0d[_0x08cc('0x2e')]['offset']);}return _0xc02618[_0x08cc('0x4f')](_0x3db1ff);}})['then'](function(_0x3cbd8e){if(_0x3cbd8e){return _0x3cbd8e?{'count':_0x561786,'rows':_0x3cbd8e}:null;}})['then'](respondWithResult(_0x474d24,null))[_0x08cc('0x43')](handleError(_0x474d24,null));};
\ No newline at end of file
index c1fe546..eb9e727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab0f=['define','SugarcrmConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intSugarcrmConfiguration.attributes','exports'];(function(_0x4e8286,_0x4eaeb4){var _0x44a440=function(_0x5e0907){while(--_0x5e0907){_0x4e8286['push'](_0x4e8286['shift']());}};_0x44a440(++_0x4eaeb4);}(_0xab0f,0x182));var _0xfab0=function(_0x4843b3,_0x2cb00f){_0x4843b3=_0x4843b3-0x0;var _0x1755f6=_0xab0f[_0x4843b3];return _0x1755f6;};'use strict';var _=require(_0xfab0('0x0'));var util=require('util');var logger=require(_0xfab0('0x1'))(_0xfab0('0x2'));var moment=require(_0xfab0('0x3'));var BPromise=require(_0xfab0('0x4'));var rp=require(_0xfab0('0x5'));var fs=require('fs');var path=require(_0xfab0('0x6'));var rimraf=require('rimraf');var config=require(_0xfab0('0x7'));var attributes=require(_0xfab0('0x8'));module[_0xfab0('0x9')]=function(_0x1acea2,_0x248e7c){return _0x1acea2[_0xfab0('0xa')](_0xfab0('0xb'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bb1=['exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes'];(function(_0x2b9890,_0x2becfb){var _0x4d2a3d=function(_0x3646aa){while(--_0x3646aa){_0x2b9890['push'](_0x2b9890['shift']());}};_0x4d2a3d(++_0x2becfb);}(_0x3bb1,0x1e0));var _0x13bb=function(_0x4e8430,_0xa923c2){_0x4e8430=_0x4e8430-0x0;var _0x5bfc2a=_0x3bb1[_0x4e8430];return _0x5bfc2a;};'use strict';var _=require(_0x13bb('0x0'));var util=require(_0x13bb('0x1'));var logger=require(_0x13bb('0x2'))(_0x13bb('0x3'));var moment=require(_0x13bb('0x4'));var BPromise=require('bluebird');var rp=require(_0x13bb('0x5'));var fs=require('fs');var path=require(_0x13bb('0x6'));var rimraf=require(_0x13bb('0x7'));var config=require(_0x13bb('0x8'));var attributes=require(_0x13bb('0x9'));module[_0x13bb('0xa')]=function(_0x263ea4,_0x22b091){return _0x263ea4[_0x13bb('0xb')](_0x13bb('0xc'),attributes,{'tableName':_0x13bb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a2adaaa..b45ec7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a8=['catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','http','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x72a8,0x1bb));var _0x872a=function(_0xcc652c,_0x2969ed){_0xcc652c=_0xcc652c-0x0;var _0x43174e=_0x72a8[_0xcc652c];return _0x43174e;};'use strict';var _=require(_0x872a('0x0'));var util=require(_0x872a('0x1'));var moment=require(_0x872a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x872a('0x3'))['db'];var utils=require(_0x872a('0x4'));var logger=require(_0x872a('0x5'))(_0x872a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x872a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16c467,_0x49d0ce,_0xf5d000){return new BPromise(function(_0x489ef7,_0x2e35a6){return client['request'](_0x16c467,_0xf5d000)['then'](function(_0x5c202d){logger[_0x872a('0x8')](_0x872a('0x9'),_0x49d0ce,_0x872a('0xa'));logger[_0x872a('0xb')](_0x872a('0xc'),_0x49d0ce,'request\x20sent',JSON['stringify'](_0x5c202d));if(_0x5c202d['error']){if(_0x5c202d[_0x872a('0xd')][_0x872a('0xe')]===0x1f4){logger['error'](_0x872a('0x9'),_0x49d0ce,_0x5c202d['error'][_0x872a('0xf')]);return _0x2e35a6(_0x5c202d['error'][_0x872a('0xf')]);}logger[_0x872a('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x49d0ce,_0x5c202d[_0x872a('0xd')][_0x872a('0xf')]);return _0x489ef7(_0x5c202d[_0x872a('0xd')][_0x872a('0xf')]);}else{logger[_0x872a('0x8')](_0x872a('0x9'),_0x49d0ce,_0x872a('0xa'));_0x489ef7(_0x5c202d['result']['message']);}})[_0x872a('0x10')](function(_0x10ad84){logger[_0x872a('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x49d0ce,_0x10ad84);_0x2e35a6(_0x10ad84);});});}
\ No newline at end of file
+var _0xf434=['catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result'];(function(_0x885eff,_0x555809){var _0x17819f=function(_0x3a69f0){while(--_0x3a69f0){_0x885eff['push'](_0x885eff['shift']());}};_0x17819f(++_0x555809);}(_0xf434,0xf3));var _0x4f43=function(_0x521e8b,_0x59d60e){_0x521e8b=_0x521e8b-0x0;var _0xa47685=_0xf434[_0x521e8b];return _0xa47685;};'use strict';var _=require(_0x4f43('0x0'));var util=require('util');var moment=require(_0x4f43('0x1'));var BPromise=require(_0x4f43('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4f43('0x3'));var db=require(_0x4f43('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4f43('0x5'))('rpc');var config=require(_0x4f43('0x6'));var jayson=require(_0x4f43('0x7'));var client=jayson[_0x4f43('0x8')][_0x4f43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5a8449,_0x50a0c4,_0x53f77d){return new BPromise(function(_0x462649,_0x1a516d){return client[_0x4f43('0xa')](_0x5a8449,_0x53f77d)[_0x4f43('0xb')](function(_0x137062){logger[_0x4f43('0xc')](_0x4f43('0xd'),_0x50a0c4,'request\x20sent');logger[_0x4f43('0xe')](_0x4f43('0xf'),_0x50a0c4,_0x4f43('0x10'),JSON[_0x4f43('0x11')](_0x137062));if(_0x137062[_0x4f43('0x12')]){if(_0x137062[_0x4f43('0x12')]['code']===0x1f4){logger[_0x4f43('0x12')](_0x4f43('0xd'),_0x50a0c4,_0x137062[_0x4f43('0x12')][_0x4f43('0x13')]);return _0x1a516d(_0x137062[_0x4f43('0x12')][_0x4f43('0x13')]);}logger[_0x4f43('0x12')](_0x4f43('0xd'),_0x50a0c4,_0x137062[_0x4f43('0x12')][_0x4f43('0x13')]);return _0x462649(_0x137062['error'][_0x4f43('0x13')]);}else{logger[_0x4f43('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x50a0c4,_0x4f43('0x10'));_0x462649(_0x137062[_0x4f43('0x14')][_0x4f43('0x13')]);}})[_0x4f43('0x15')](function(_0x1df3c1){logger[_0x4f43('0x12')](_0x4f43('0xd'),_0x50a0c4,_0x1df3c1);_0x1a516d(_0x1df3c1);});});}
\ No newline at end of file
index 021f452..f267004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb24=['isAuthenticated','index','/:id','show','post','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get'];(function(_0x22ea66,_0x30123a){var _0x529757=function(_0x2340e){while(--_0x2340e){_0x22ea66['push'](_0x22ea66['shift']());}};_0x529757(++_0x30123a);}(_0xfb24,0xc6));var _0x4fb2=function(_0x1cbd7b,_0x4da717){_0x1cbd7b=_0x1cbd7b-0x0;var _0xa37553=_0xfb24[_0x1cbd7b];return _0xa37553;};'use strict';var multer=require(_0x4fb2('0x0'));var util=require(_0x4fb2('0x1'));var path=require(_0x4fb2('0x2'));var timeout=require(_0x4fb2('0x3'));var express=require(_0x4fb2('0x4'));var router=express[_0x4fb2('0x5')]();var fs_extra=require(_0x4fb2('0x6'));var auth=require(_0x4fb2('0x7'));var interaction=require(_0x4fb2('0x8'));var config=require(_0x4fb2('0x9'));var controller=require(_0x4fb2('0xa'));router[_0x4fb2('0xb')]('/',auth[_0x4fb2('0xc')](),controller[_0x4fb2('0xd')]);router['get'](_0x4fb2('0xe'),auth['isAuthenticated'](),controller[_0x4fb2('0xf')]);router[_0x4fb2('0x10')]('/',auth[_0x4fb2('0xc')](),controller[_0x4fb2('0x11')]);router[_0x4fb2('0x12')](_0x4fb2('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x4fb2('0x13')](_0x4fb2('0xe'),auth[_0x4fb2('0xc')](),controller['destroy']);module[_0x4fb2('0x14')]=router;
\ No newline at end of file
+var _0xe1fb=['../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x209aee,_0x21d407){var _0x4e7264=function(_0x4ddbc2){while(--_0x4ddbc2){_0x209aee['push'](_0x209aee['shift']());}};_0x4e7264(++_0x21d407);}(_0xe1fb,0x151));var _0xbe1f=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xe1fb[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0xbe1f('0x0'));var util=require('util');var path=require(_0xbe1f('0x1'));var timeout=require(_0xbe1f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbe1f('0x3'));var auth=require(_0xbe1f('0x4'));var interaction=require(_0xbe1f('0x5'));var config=require(_0xbe1f('0x6'));var controller=require(_0xbe1f('0x7'));router[_0xbe1f('0x8')]('/',auth[_0xbe1f('0x9')](),controller[_0xbe1f('0xa')]);router[_0xbe1f('0x8')](_0xbe1f('0xb'),auth[_0xbe1f('0x9')](),controller[_0xbe1f('0xc')]);router[_0xbe1f('0xd')]('/',auth['isAuthenticated'](),controller[_0xbe1f('0xe')]);router[_0xbe1f('0xf')](_0xbe1f('0xb'),auth[_0xbe1f('0x9')](),controller[_0xbe1f('0x10')]);router[_0xbe1f('0x11')]('/:id',auth[_0xbe1f('0x9')](),controller['destroy']);module[_0xbe1f('0x12')]=router;
\ No newline at end of file
index 7f00c1b..f25ab9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ab=['STRING','variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable','picklist'];(function(_0x295f08,_0x58ac97){var _0x318d5a=function(_0x1c80d0){while(--_0x1c80d0){_0x295f08['push'](_0x295f08['shift']());}};_0x318d5a(++_0x58ac97);}(_0x27ab,0x78));var _0xb27a=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x27ab[_0x311c35];return _0x5cc50c;};'use strict';var Sequelize=require(_0xb27a('0x0'));module[_0xb27a('0x1')]={'type':{'type':Sequelize[_0xb27a('0x2')](_0xb27a('0x3'),'variable',_0xb27a('0x4'),'keyValue',_0xb27a('0x5')),'defaultValue':_0xb27a('0x3')},'content':{'type':Sequelize[_0xb27a('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xb27a('0x2')](_0xb27a('0x3'),_0xb27a('0x7'),_0xb27a('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb27a('0x6')]},'nameField':{'type':Sequelize[_0xb27a('0x6')]},'customField':{'type':Sequelize[_0xb27a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb27a('0x6')]}};
\ No newline at end of file
+var _0x08a5=['exports','customVariable','picklist','string','STRING','BOOLEAN','sequelize'];(function(_0x179160,_0x1d5158){var _0x1603a0=function(_0x51dba0){while(--_0x51dba0){_0x179160['push'](_0x179160['shift']());}};_0x1603a0(++_0x1d5158);}(_0x08a5,0x102));var _0x508a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x08a5[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x508a('0x0'));module[_0x508a('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x508a('0x2'),'keyValue',_0x508a('0x3')),'defaultValue':_0x508a('0x4')},'content':{'type':Sequelize[_0x508a('0x5')]},'key':{'type':Sequelize[_0x508a('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x508a('0x4'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x508a('0x5')]},'idField':{'type':Sequelize[_0x508a('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x508a('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x508a('0x5')]}};
\ No newline at end of file
index edc6687..07efc70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a1=['error','send','index','map','SugarcrmField','rawAttributes','fieldName','type','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','name','filter','merge','options','includeAll','include','rows','catch','show','params','keys','length','find','create','body','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','squel','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy'];(function(_0x510645,_0x5349c4){var _0x37623d=function(_0x273d3c){while(--_0x273d3c){_0x510645['push'](_0x510645['shift']());}};_0x37623d(++_0x5349c4);}(_0x30a1,0xf9));var _0x130a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x30a1[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x130a('0x0'));var rimraf=require(_0x130a('0x1'));var zipdir=require(_0x130a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x130a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x130a('0x4'));var util=require(_0x130a('0x5'));var path=require(_0x130a('0x6'));var sox=require(_0x130a('0x7'));var csv=require(_0x130a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x130a('0x9'));var _=require('lodash');var squel=require(_0x130a('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x130a('0xb'));var toCsv=require(_0x130a('0x8'));var querystring=require(_0x130a('0xc'));var Papa=require(_0x130a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x130a('0xe'));var hardwareService=require(_0x130a('0xf'));var logger=require(_0x130a('0x10'))(_0x130a('0x11'));var utils=require(_0x130a('0x12'));var config=require(_0x130a('0x13'));var licenseUtil=require(_0x130a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a4e4a,_0x33e9a9){_0x33e9a9=_0x33e9a9||0xcc;return function(_0x4fcddf){if(_0x4fcddf){return _0x2a4e4a[_0x130a('0x15')](_0x33e9a9);}return _0x2a4e4a[_0x130a('0x16')](_0x33e9a9)[_0x130a('0x17')]();};}function respondWithResult(_0x33e48f,_0x18a419){_0x18a419=_0x18a419||0xc8;return function(_0xe905b8){if(_0xe905b8){return _0x33e48f[_0x130a('0x16')](_0x18a419)[_0x130a('0x18')](_0xe905b8);}};}function respondWithFilteredResult(_0x1e542a,_0xedd791){return function(_0x31dbd4){if(_0x31dbd4){var _0x2258a5=typeof _0xedd791[_0x130a('0x19')]===_0x130a('0x1a')&&typeof _0xedd791[_0x130a('0x1b')]===_0x130a('0x1a');var _0x513125=_0x31dbd4[_0x130a('0x1c')];var _0x41d7f1=_0x2258a5?0x0:_0xedd791[_0x130a('0x19')];var _0x32af25=_0x2258a5?_0x31dbd4['count']:_0xedd791['offset']+_0xedd791[_0x130a('0x1b')];var _0x4c8d56;if(_0x32af25>=_0x513125){_0x32af25=_0x513125;_0x4c8d56=0xc8;}else{_0x4c8d56=0xce;}_0x1e542a[_0x130a('0x16')](_0x4c8d56);return _0x1e542a[_0x130a('0x1d')](_0x130a('0x1e'),_0x41d7f1+'-'+_0x32af25+'/'+_0x513125)[_0x130a('0x18')](_0x31dbd4);}return null;};}function patchUpdates(_0x4671ca){return function(_0x5312a0){try{jsonpatch[_0x130a('0x1f')](_0x5312a0,_0x4671ca,!![]);}catch(_0x176301){return BPromise['reject'](_0x176301);}return _0x5312a0[_0x130a('0x20')]();};}function saveUpdates(_0x312879,_0x38a81d){return function(_0xb7dc3b){if(_0xb7dc3b){return _0xb7dc3b['update'](_0x312879)[_0x130a('0x21')](function(_0xcb6ea7){return _0xcb6ea7;});}return null;};}function removeEntity(_0x4520d3,_0x8cb068){return function(_0x59811d){if(_0x59811d){return _0x59811d[_0x130a('0x22')]()[_0x130a('0x21')](function(){_0x4520d3[_0x130a('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x380f36,_0x3ffedf){return function(_0x3cac83){if(!_0x3cac83){_0x380f36[_0x130a('0x15')](0x194);}return _0x3cac83;};}function handleError(_0x5e7652,_0x1f4c90){_0x1f4c90=_0x1f4c90||0x1f4;return function(_0x4a30e9){logger[_0x130a('0x23')](_0x4a30e9['stack']);if(_0x4a30e9['name']){delete _0x4a30e9['name'];}_0x5e7652['status'](_0x1f4c90)[_0x130a('0x24')](_0x4a30e9);};}exports[_0x130a('0x25')]=function(_0x36b1a6,_0x12e3ce){var _0xaee690={},_0x4d5f45={},_0x20a90c={'count':0x0,'rows':[]};var _0x1bb089=_[_0x130a('0x26')](db[_0x130a('0x27')][_0x130a('0x28')],function(_0x59e26c){return{'name':_0x59e26c[_0x130a('0x29')],'type':_0x59e26c[_0x130a('0x2a')]['key']};});_0x4d5f45['model']=_['map'](_0x1bb089,'name');_0x4d5f45[_0x130a('0x2b')]=_['keys'](_0x36b1a6[_0x130a('0x2b')]);_0x4d5f45[_0x130a('0x2c')]=_[_0x130a('0x2d')](_0x4d5f45[_0x130a('0x2e')],_0x4d5f45['query']);_0xaee690['attributes']=_['intersection'](_0x4d5f45[_0x130a('0x2e')],qs[_0x130a('0x2f')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x2f')]));_0xaee690[_0x130a('0x30')]=_0xaee690[_0x130a('0x30')]['length']?_0xaee690[_0x130a('0x30')]:_0x4d5f45[_0x130a('0x2e')];if(!_0x36b1a6[_0x130a('0x2b')][_0x130a('0x31')](_0x130a('0x32'))){_0xaee690[_0x130a('0x1b')]=qs[_0x130a('0x1b')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x1b')]);_0xaee690[_0x130a('0x19')]=qs[_0x130a('0x19')](_0x36b1a6[_0x130a('0x2b')][_0x130a('0x19')]);}_0xaee690[_0x130a('0x33')]=qs['sort'](_0x36b1a6['query'][_0x130a('0x34')]);_0xaee690['where']=qs[_0x130a('0x2c')](_[_0x130a('0x35')](_0x36b1a6[_0x130a('0x2b')],_0x4d5f45[_0x130a('0x2c')]),_0x1bb089);if(_0x36b1a6['query']['filter']){_0xaee690[_0x130a('0x36')]=_['merge'](_0xaee690[_0x130a('0x36')],{'$or':_['map'](_0x1bb089,function(_0x2d9cc0){if(_0x2d9cc0['type']!==_0x130a('0x37')){var _0x236c1d={};_0x236c1d[_0x2d9cc0[_0x130a('0x38')]]={'$like':'%'+_0x36b1a6[_0x130a('0x2b')][_0x130a('0x39')]+'%'};return _0x236c1d;}})});}_0xaee690=_[_0x130a('0x3a')]({},_0xaee690,_0x36b1a6[_0x130a('0x3b')]);var _0x3e8460={'where':_0xaee690[_0x130a('0x36')]};return db[_0x130a('0x27')][_0x130a('0x1c')](_0x3e8460)[_0x130a('0x21')](function(_0x4e09a7){_0x20a90c[_0x130a('0x1c')]=_0x4e09a7;if(_0x36b1a6[_0x130a('0x2b')][_0x130a('0x3c')]){_0xaee690[_0x130a('0x3d')]=[{'all':!![]}];}return db[_0x130a('0x27')]['findAll'](_0xaee690);})[_0x130a('0x21')](function(_0x49c910){_0x20a90c[_0x130a('0x3e')]=_0x49c910;return _0x20a90c;})[_0x130a('0x21')](respondWithFilteredResult(_0x12e3ce,_0xaee690))[_0x130a('0x3f')](handleError(_0x12e3ce,null));};exports[_0x130a('0x40')]=function(_0x46ff8b,_0xe90716){var _0x576d79={'raw':!![],'where':{'id':_0x46ff8b[_0x130a('0x41')]['id']}},_0xc52b32={};_0xc52b32['model']=_[_0x130a('0x42')](db[_0x130a('0x27')][_0x130a('0x28')]);_0xc52b32[_0x130a('0x2b')]=_[_0x130a('0x42')](_0x46ff8b[_0x130a('0x2b')]);_0xc52b32[_0x130a('0x2c')]=_[_0x130a('0x2d')](_0xc52b32[_0x130a('0x2e')],_0xc52b32['query']);_0x576d79[_0x130a('0x30')]=_['intersection'](_0xc52b32[_0x130a('0x2e')],qs[_0x130a('0x2f')](_0x46ff8b[_0x130a('0x2b')][_0x130a('0x2f')]));_0x576d79['attributes']=_0x576d79[_0x130a('0x30')][_0x130a('0x43')]?_0x576d79[_0x130a('0x30')]:_0xc52b32[_0x130a('0x2e')];if(_0x46ff8b[_0x130a('0x2b')]['includeAll']){_0x576d79[_0x130a('0x3d')]=[{'all':!![]}];}_0x576d79=_['merge']({},_0x576d79,_0x46ff8b['options']);return db[_0x130a('0x27')][_0x130a('0x44')](_0x576d79)[_0x130a('0x21')](handleEntityNotFound(_0xe90716,null))['then'](respondWithResult(_0xe90716,null))['catch'](handleError(_0xe90716,null));};exports[_0x130a('0x45')]=function(_0x47eb0f,_0x11932e){return db['SugarcrmField'][_0x130a('0x45')](_0x47eb0f['body'],{})[_0x130a('0x21')](respondWithResult(_0x11932e,0xc9))[_0x130a('0x3f')](handleError(_0x11932e,null));};exports['update']=function(_0x362ec6,_0x2001c2){if(_0x362ec6[_0x130a('0x46')]['id']){delete _0x362ec6[_0x130a('0x46')]['id'];}return db[_0x130a('0x27')]['find']({'where':{'id':_0x362ec6[_0x130a('0x41')]['id']}})[_0x130a('0x21')](handleEntityNotFound(_0x2001c2,null))[_0x130a('0x21')](saveUpdates(_0x362ec6[_0x130a('0x46')],null))[_0x130a('0x21')](respondWithResult(_0x2001c2,null))[_0x130a('0x3f')](handleError(_0x2001c2,null));};exports[_0x130a('0x22')]=function(_0x25664d,_0x3cb89e){return db[_0x130a('0x27')][_0x130a('0x44')]({'where':{'id':_0x25664d['params']['id']}})[_0x130a('0x21')](handleEntityNotFound(_0x3cb89e,null))[_0x130a('0x21')](removeEntity(_0x3cb89e,null))[_0x130a('0x3f')](handleError(_0x3cb89e,null));};
\ No newline at end of file
+var _0x8268=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then','includeAll','include','SugarcrmField','findAll','rows','catch','show','params','options','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','status','end','json','undefined','limit','offset','count','Content-Range','destroy','sendStatus','error','stack','name','index'];(function(_0x117276,_0x2c725e){var _0x51b05f=function(_0x3c933c){while(--_0x3c933c){_0x117276['push'](_0x117276['shift']());}};_0x51b05f(++_0x2c725e);}(_0x8268,0x144));var _0x8826=function(_0xed7f2a,_0x3b9edb){_0xed7f2a=_0xed7f2a-0x0;var _0x415be9=_0x8268[_0xed7f2a];return _0x415be9;};'use strict';var emlformat=require(_0x8826('0x0'));var rimraf=require(_0x8826('0x1'));var zipdir=require(_0x8826('0x2'));var jsonpatch=require(_0x8826('0x3'));var rp=require(_0x8826('0x4'));var moment=require('moment');var BPromise=require(_0x8826('0x5'));var Mustache=require(_0x8826('0x6'));var util=require(_0x8826('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x8826('0x8'));var ejs=require(_0x8826('0x9'));var fs=require('fs');var fs_extra=require(_0x8826('0xa'));var _=require(_0x8826('0xb'));var squel=require(_0x8826('0xc'));var crypto=require(_0x8826('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8826('0x8'));var querystring=require(_0x8826('0xe'));var Papa=require(_0x8826('0xf'));var Redis=require(_0x8826('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8826('0x11'));var as=require(_0x8826('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8826('0x13'));var utils=require(_0x8826('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8826('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3771ef,_0x2a3735){_0x2a3735=_0x2a3735||0xcc;return function(_0x6e015a){if(_0x6e015a){return _0x3771ef['sendStatus'](_0x2a3735);}return _0x3771ef[_0x8826('0x16')](_0x2a3735)[_0x8826('0x17')]();};}function respondWithResult(_0x79469b,_0x182055){_0x182055=_0x182055||0xc8;return function(_0x3da675){if(_0x3da675){return _0x79469b[_0x8826('0x16')](_0x182055)[_0x8826('0x18')](_0x3da675);}};}function respondWithFilteredResult(_0x3b4925,_0x19c35c){return function(_0x491168){if(_0x491168){var _0x4252bb=typeof _0x19c35c['offset']===_0x8826('0x19')&&typeof _0x19c35c[_0x8826('0x1a')]===_0x8826('0x19');var _0x22a366=_0x491168['count'];var _0x5aace2=_0x4252bb?0x0:_0x19c35c[_0x8826('0x1b')];var _0x54bcf4=_0x4252bb?_0x491168[_0x8826('0x1c')]:_0x19c35c['offset']+_0x19c35c[_0x8826('0x1a')];var _0x24afdb;if(_0x54bcf4>=_0x22a366){_0x54bcf4=_0x22a366;_0x24afdb=0xc8;}else{_0x24afdb=0xce;}_0x3b4925[_0x8826('0x16')](_0x24afdb);return _0x3b4925['set'](_0x8826('0x1d'),_0x5aace2+'-'+_0x54bcf4+'/'+_0x22a366)['json'](_0x491168);}return null;};}function patchUpdates(_0x347777){return function(_0x47f63f){try{jsonpatch['apply'](_0x47f63f,_0x347777,!![]);}catch(_0x2f5f6d){return BPromise['reject'](_0x2f5f6d);}return _0x47f63f['save']();};}function saveUpdates(_0x5655cf,_0x3bcbea){return function(_0xead040){if(_0xead040){return _0xead040['update'](_0x5655cf)['then'](function(_0x2c45c1){return _0x2c45c1;});}return null;};}function removeEntity(_0x440b20,_0x4625d2){return function(_0xec8345){if(_0xec8345){return _0xec8345[_0x8826('0x1e')]()['then'](function(){_0x440b20[_0x8826('0x16')](0xcc)[_0x8826('0x17')]();});}};}function handleEntityNotFound(_0x5335b5,_0xf4022e){return function(_0x2ba29d){if(!_0x2ba29d){_0x5335b5[_0x8826('0x1f')](0x194);}return _0x2ba29d;};}function handleError(_0x2be246,_0x42beea){_0x42beea=_0x42beea||0x1f4;return function(_0x473c01){logger[_0x8826('0x20')](_0x473c01[_0x8826('0x21')]);if(_0x473c01[_0x8826('0x22')]){delete _0x473c01[_0x8826('0x22')];}_0x2be246[_0x8826('0x16')](_0x42beea)['send'](_0x473c01);};}exports[_0x8826('0x23')]=function(_0x142acf,_0x55c90e){var _0x3eb64d={},_0x337be6={},_0xd4581f={'count':0x0,'rows':[]};var _0xab637b=_[_0x8826('0x24')](db['SugarcrmField'][_0x8826('0x25')],function(_0x465d1a){return{'name':_0x465d1a[_0x8826('0x26')],'type':_0x465d1a[_0x8826('0x27')][_0x8826('0x28')]};});_0x337be6[_0x8826('0x29')]=_[_0x8826('0x24')](_0xab637b,'name');_0x337be6[_0x8826('0x2a')]=_[_0x8826('0x2b')](_0x142acf[_0x8826('0x2a')]);_0x337be6[_0x8826('0x2c')]=_[_0x8826('0x2d')](_0x337be6['model'],_0x337be6['query']);_0x3eb64d[_0x8826('0x2e')]=_[_0x8826('0x2d')](_0x337be6[_0x8826('0x29')],qs[_0x8826('0x2f')](_0x142acf[_0x8826('0x2a')][_0x8826('0x2f')]));_0x3eb64d[_0x8826('0x2e')]=_0x3eb64d[_0x8826('0x2e')][_0x8826('0x30')]?_0x3eb64d[_0x8826('0x2e')]:_0x337be6['model'];if(!_0x142acf[_0x8826('0x2a')][_0x8826('0x31')](_0x8826('0x32'))){_0x3eb64d[_0x8826('0x1a')]=qs[_0x8826('0x1a')](_0x142acf[_0x8826('0x2a')][_0x8826('0x1a')]);_0x3eb64d[_0x8826('0x1b')]=qs[_0x8826('0x1b')](_0x142acf['query'][_0x8826('0x1b')]);}_0x3eb64d[_0x8826('0x33')]=qs[_0x8826('0x34')](_0x142acf[_0x8826('0x2a')][_0x8826('0x34')]);_0x3eb64d['where']=qs[_0x8826('0x2c')](_[_0x8826('0x35')](_0x142acf[_0x8826('0x2a')],_0x337be6[_0x8826('0x2c')]),_0xab637b);if(_0x142acf[_0x8826('0x2a')][_0x8826('0x36')]){_0x3eb64d[_0x8826('0x37')]=_[_0x8826('0x38')](_0x3eb64d[_0x8826('0x37')],{'$or':_[_0x8826('0x24')](_0xab637b,function(_0x40ab52){if(_0x40ab52['type']!==_0x8826('0x39')){var _0xefc8e1={};_0xefc8e1[_0x40ab52[_0x8826('0x22')]]={'$like':'%'+_0x142acf[_0x8826('0x2a')][_0x8826('0x36')]+'%'};return _0xefc8e1;}})});}_0x3eb64d=_[_0x8826('0x38')]({},_0x3eb64d,_0x142acf['options']);var _0x3fda65={'where':_0x3eb64d[_0x8826('0x37')]};return db['SugarcrmField'][_0x8826('0x1c')](_0x3fda65)[_0x8826('0x3a')](function(_0x91742){_0xd4581f['count']=_0x91742;if(_0x142acf['query'][_0x8826('0x3b')]){_0x3eb64d[_0x8826('0x3c')]=[{'all':!![]}];}return db[_0x8826('0x3d')][_0x8826('0x3e')](_0x3eb64d);})[_0x8826('0x3a')](function(_0x201e57){_0xd4581f[_0x8826('0x3f')]=_0x201e57;return _0xd4581f;})[_0x8826('0x3a')](respondWithFilteredResult(_0x55c90e,_0x3eb64d))[_0x8826('0x40')](handleError(_0x55c90e,null));};exports[_0x8826('0x41')]=function(_0x2c5fe3,_0x5c2424){var _0x37acb5={'raw':!![],'where':{'id':_0x2c5fe3[_0x8826('0x42')]['id']}},_0x396430={};_0x396430['model']=_[_0x8826('0x2b')](db[_0x8826('0x3d')][_0x8826('0x25')]);_0x396430[_0x8826('0x2a')]=_[_0x8826('0x2b')](_0x2c5fe3[_0x8826('0x2a')]);_0x396430[_0x8826('0x2c')]=_[_0x8826('0x2d')](_0x396430[_0x8826('0x29')],_0x396430[_0x8826('0x2a')]);_0x37acb5[_0x8826('0x2e')]=_[_0x8826('0x2d')](_0x396430[_0x8826('0x29')],qs['fields'](_0x2c5fe3[_0x8826('0x2a')][_0x8826('0x2f')]));_0x37acb5[_0x8826('0x2e')]=_0x37acb5[_0x8826('0x2e')]['length']?_0x37acb5[_0x8826('0x2e')]:_0x396430[_0x8826('0x29')];if(_0x2c5fe3[_0x8826('0x2a')][_0x8826('0x3b')]){_0x37acb5[_0x8826('0x3c')]=[{'all':!![]}];}_0x37acb5=_[_0x8826('0x38')]({},_0x37acb5,_0x2c5fe3[_0x8826('0x43')]);return db['SugarcrmField'][_0x8826('0x44')](_0x37acb5)['then'](handleEntityNotFound(_0x5c2424,null))[_0x8826('0x3a')](respondWithResult(_0x5c2424,null))['catch'](handleError(_0x5c2424,null));};exports[_0x8826('0x45')]=function(_0x594db4,_0x2a5455){return db[_0x8826('0x3d')]['create'](_0x594db4[_0x8826('0x46')],{})[_0x8826('0x3a')](respondWithResult(_0x2a5455,0xc9))[_0x8826('0x40')](handleError(_0x2a5455,null));};exports[_0x8826('0x47')]=function(_0x3d629f,_0x1d8530){if(_0x3d629f[_0x8826('0x46')]['id']){delete _0x3d629f[_0x8826('0x46')]['id'];}return db[_0x8826('0x3d')]['find']({'where':{'id':_0x3d629f[_0x8826('0x42')]['id']}})[_0x8826('0x3a')](handleEntityNotFound(_0x1d8530,null))['then'](saveUpdates(_0x3d629f[_0x8826('0x46')],null))[_0x8826('0x3a')](respondWithResult(_0x1d8530,null))[_0x8826('0x40')](handleError(_0x1d8530,null));};exports[_0x8826('0x1e')]=function(_0x43e157,_0x227dea){return db[_0x8826('0x3d')][_0x8826('0x44')]({'where':{'id':_0x43e157[_0x8826('0x42')]['id']}})[_0x8826('0x3a')](handleEntityNotFound(_0x227dea,null))[_0x8826('0x3a')](removeEntity(_0x227dea,null))['catch'](handleError(_0x227dea,null));};
\ No newline at end of file
index 711f205..9f90c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7720=['define','SugarcrmField','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x692a8f,_0x4938bc){var _0x1362c1=function(_0x2453c7){while(--_0x2453c7){_0x692a8f['push'](_0x692a8f['shift']());}};_0x1362c1(++_0x4938bc);}(_0x7720,0x165));var _0x0772=function(_0x12afea,_0x3aa505){_0x12afea=_0x12afea-0x0;var _0x1c00b3=_0x7720[_0x12afea];return _0x1c00b3;};'use strict';var _=require(_0x0772('0x0'));var util=require(_0x0772('0x1'));var logger=require(_0x0772('0x2'))(_0x0772('0x3'));var moment=require(_0x0772('0x4'));var BPromise=require(_0x0772('0x5'));var rp=require(_0x0772('0x6'));var fs=require('fs');var path=require(_0x0772('0x7'));var rimraf=require(_0x0772('0x8'));var config=require(_0x0772('0x9'));var attributes=require('./intSugarcrmField.attributes');module[_0x0772('0xa')]=function(_0x4894cf,_0x55a1ee){return _0x4894cf[_0x0772('0xb')](_0x0772('0xc'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x0772('0xd'),'fields':[_0x0772('0xe'),_0x0772('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5264=['moment','bluebird','request-promise','path','./intSugarcrmField.attributes','exports','SugarcrmField','int_sugarcrm_fields','lodash','util','../../config/logger'];(function(_0x9b2bb0,_0x3965b1){var _0x2cdb3b=function(_0x177d75){while(--_0x177d75){_0x9b2bb0['push'](_0x9b2bb0['shift']());}};_0x2cdb3b(++_0x3965b1);}(_0x5264,0x81));var _0x4526=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5264[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x4526('0x0'));var util=require(_0x4526('0x1'));var logger=require(_0x4526('0x2'))('api');var moment=require(_0x4526('0x3'));var BPromise=require(_0x4526('0x4'));var rp=require(_0x4526('0x5'));var fs=require('fs');var path=require(_0x4526('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4526('0x7'));module[_0x4526('0x8')]=function(_0x55d043,_0x249ee5){return _0x55d043['define'](_0x4526('0x9'),attributes,{'tableName':_0x4526('0xa'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cd6004f..db7e6af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7429=['../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2644c4,_0xe8c00c){var _0x502f32=function(_0x255e38){while(--_0x255e38){_0x2644c4['push'](_0x2644c4['shift']());}};_0x502f32(++_0xe8c00c);}(_0x7429,0x179));var _0x9742=function(_0x4eb1d7,_0x4f496a){_0x4eb1d7=_0x4eb1d7-0x0;var _0x1541b9=_0x7429[_0x4eb1d7];return _0x1541b9;};'use strict';var _=require(_0x9742('0x0'));var util=require(_0x9742('0x1'));var moment=require(_0x9742('0x2'));var BPromise=require(_0x9742('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9742('0x4'))['db'];var utils=require(_0x9742('0x5'));var logger=require(_0x9742('0x6'))('rpc');var config=require(_0x9742('0x7'));var jayson=require(_0x9742('0x8'));var client=jayson[_0x9742('0x9')][_0x9742('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2314fb,_0x190c80,_0x65121b){return new BPromise(function(_0x34ae4f,_0x1a1c86){return client[_0x9742('0xb')](_0x2314fb,_0x65121b)[_0x9742('0xc')](function(_0x5f2bbe){logger[_0x9742('0xd')](_0x9742('0xe'),_0x190c80,_0x9742('0xf'));logger[_0x9742('0x10')](_0x9742('0x11'),_0x190c80,_0x9742('0xf'),JSON[_0x9742('0x12')](_0x5f2bbe));if(_0x5f2bbe[_0x9742('0x13')]){if(_0x5f2bbe[_0x9742('0x13')][_0x9742('0x14')]===0x1f4){logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);return _0x1a1c86(_0x5f2bbe['error'][_0x9742('0x15')]);}logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);return _0x34ae4f(_0x5f2bbe[_0x9742('0x13')][_0x9742('0x15')]);}else{logger[_0x9742('0xd')](_0x9742('0xe'),_0x190c80,_0x9742('0xf'));_0x34ae4f(_0x5f2bbe[_0x9742('0x16')]['message']);}})[_0x9742('0x17')](function(_0x1fbf00){logger[_0x9742('0x13')](_0x9742('0xe'),_0x190c80,_0x1fbf00);_0x1a1c86(_0x1fbf00);});});}
\ No newline at end of file
+var _0xeec5=['lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x22e38e,_0x22b160){var _0x247042=function(_0x3451a9){while(--_0x3451a9){_0x22e38e['push'](_0x22e38e['shift']());}};_0x247042(++_0x22b160);}(_0xeec5,0x8a));var _0x5eec=function(_0x885437,_0x6bd635){_0x885437=_0x885437-0x0;var _0x5d463e=_0xeec5[_0x885437];return _0x5d463e;};'use strict';var _=require(_0x5eec('0x0'));var util=require(_0x5eec('0x1'));var moment=require(_0x5eec('0x2'));var BPromise=require(_0x5eec('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5eec('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5eec('0x5'));var logger=require('../../config/logger')(_0x5eec('0x6'));var config=require(_0x5eec('0x7'));var jayson=require(_0x5eec('0x8'));var client=jayson[_0x5eec('0x9')][_0x5eec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x125746,_0x9bdcee,_0x49d5e5){return new BPromise(function(_0x44266f,_0x506a1d){return client[_0x5eec('0xb')](_0x125746,_0x49d5e5)[_0x5eec('0xc')](function(_0x513539){logger['info'](_0x5eec('0xd'),_0x9bdcee,_0x5eec('0xe'));logger[_0x5eec('0xf')](_0x5eec('0x10'),_0x9bdcee,_0x5eec('0xe'),JSON[_0x5eec('0x11')](_0x513539));if(_0x513539[_0x5eec('0x12')]){if(_0x513539['error'][_0x5eec('0x13')]===0x1f4){logger[_0x5eec('0x12')]('SugarcrmField,\x20%s,\x20%s',_0x9bdcee,_0x513539['error'][_0x5eec('0x14')]);return _0x506a1d(_0x513539['error'][_0x5eec('0x14')]);}logger['error'](_0x5eec('0xd'),_0x9bdcee,_0x513539[_0x5eec('0x12')][_0x5eec('0x14')]);return _0x44266f(_0x513539['error'][_0x5eec('0x14')]);}else{logger[_0x5eec('0x15')](_0x5eec('0xd'),_0x9bdcee,_0x5eec('0xe'));_0x44266f(_0x513539[_0x5eec('0x16')][_0x5eec('0x14')]);}})['catch'](function(_0x2064e1){logger[_0x5eec('0x12')]('SugarcrmField,\x20%s,\x20%s',_0x9bdcee,_0x2064e1);_0x506a1d(_0x2064e1);});});}
\ No newline at end of file
index ac5b599..ad1dc1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54da=['addConfiguration','update','delete','/:id','destroy','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','index','get','/:id/configurations','isAuthenticated','/:id/fields','post','create'];(function(_0x4a68a9,_0x5bb708){var _0x16023b=function(_0x2fdeeb){while(--_0x2fdeeb){_0x4a68a9['push'](_0x4a68a9['shift']());}};_0x16023b(++_0x5bb708);}(_0x54da,0x9d));var _0xa54d=function(_0x3d6626,_0x447998){_0x3d6626=_0x3d6626-0x0;var _0x3f08b3=_0x54da[_0x3d6626];return _0x3f08b3;};'use strict';var multer=require(_0xa54d('0x0'));var util=require('util');var path=require(_0xa54d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa54d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa54d('0x3'));var interaction=require(_0xa54d('0x4'));var config=require(_0xa54d('0x5'));var controller=require(_0xa54d('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xa54d('0x7')]);router[_0xa54d('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xa54d('0x8')](_0xa54d('0x9'),auth[_0xa54d('0xa')](),controller['getConfigurations']);router[_0xa54d('0x8')](_0xa54d('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0xa54d('0xc')]('/',auth['isAuthenticated'](),controller[_0xa54d('0xd')]);router[_0xa54d('0xc')](_0xa54d('0x9'),auth['isAuthenticated'](),controller[_0xa54d('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xa54d('0xf')]);router[_0xa54d('0x10')](_0xa54d('0x11'),auth[_0xa54d('0xa')](),controller[_0xa54d('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb4e6=['express','Router','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','exports','multer','util','path','connect-timeout'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xb4e6,0xd8));var _0x6b4e=function(_0x375492,_0x4ed149){_0x375492=_0x375492-0x0;var _0x18ba5b=_0xb4e6[_0x375492];return _0x18ba5b;};'use strict';var multer=require(_0x6b4e('0x0'));var util=require(_0x6b4e('0x1'));var path=require(_0x6b4e('0x2'));var timeout=require(_0x6b4e('0x3'));var express=require(_0x6b4e('0x4'));var router=express[_0x6b4e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6b4e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6b4e('0x7'));var controller=require(_0x6b4e('0x8'));router[_0x6b4e('0x9')]('/',auth[_0x6b4e('0xa')](),controller['index']);router[_0x6b4e('0x9')](_0x6b4e('0xb'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xc')]);router[_0x6b4e('0x9')](_0x6b4e('0xd'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0xe')]);router[_0x6b4e('0x9')](_0x6b4e('0xf'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x10')]);router[_0x6b4e('0x11')]('/',auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x12')]);router[_0x6b4e('0x11')](_0x6b4e('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x6b4e('0x13')](_0x6b4e('0xb'),auth[_0x6b4e('0xa')](),controller[_0x6b4e('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x6b4e('0x15')]=router;
\ No newline at end of file
index 249df78..64b5f9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6622=['HelpDesk','exports','STRING'];(function(_0x25e2a5,_0x2d7270){var _0x429243=function(_0x16853){while(--_0x16853){_0x25e2a5['push'](_0x25e2a5['shift']());}};_0x429243(++_0x2d7270);}(_0x6622,0x8e));var _0x2662=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x6622[_0x1e3c16];return _0x47a0c9;};'use strict';var Sequelize=require('sequelize');module[_0x2662('0x0')]={'name':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2662('0x1')]},'username':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2662('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2662('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x1212=['exports','STRING','HelpDesk','sequelize'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x1212,0x113));var _0x2121=function(_0x291b8c,_0x6b7ed8){_0x291b8c=_0x291b8c-0x0;var _0x22ba34=_0x1212[_0x291b8c];return _0x22ba34;};'use strict';var Sequelize=require(_0x2121('0x0'));module[_0x2121('0x1')]={'name':{'type':Sequelize[_0x2121('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2121('0x2')]},'username':{'type':Sequelize[_0x2121('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x2121('0x2')],'allowNull':![],'defaultValue':_0x2121('0x3')},'remoteUri':{'type':Sequelize[_0x2121('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2121('0x2')],'allowNull':![]}};
\ No newline at end of file
index 88eb4d3..b3f0e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0910=['error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','name','send','map','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','order','pick','where','type','filter','options','VtigerAccount','includeAll','include','catch','show','params','length','merge','find','create','body','getConfigurations','findOne','VtigerConfiguration','sort','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','serverUrl','accessKey','remoteUri','slice','format','%s/webservice.php','getchallenge','success','POST','login','result','GET','describe','autogenerated','owner','includes','remove','editable','label','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0910,0x79));var _0x0091=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0910[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x0091('0x0'));var rimraf=require(_0x0091('0x1'));var zipdir=require(_0x0091('0x2'));var jsonpatch=require(_0x0091('0x3'));var rp=require('request-promise');var moment=require(_0x0091('0x4'));var BPromise=require(_0x0091('0x5'));var Mustache=require(_0x0091('0x6'));var util=require(_0x0091('0x7'));var path=require('path');var sox=require(_0x0091('0x8'));var csv=require(_0x0091('0x9'));var ejs=require(_0x0091('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0091('0xb'));var crypto=require(_0x0091('0xc'));var jsforce=require(_0x0091('0xd'));var deskjs=require(_0x0091('0xe'));var toCsv=require(_0x0091('0x9'));var querystring=require(_0x0091('0xf'));var Papa=require(_0x0091('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0091('0x11'));var as=require(_0x0091('0x12'));var hardwareService=require(_0x0091('0x13'));var logger=require('../../config/logger')(_0x0091('0x14'));var utils=require('../../config/utils');var config=require(_0x0091('0x15'));var licenseUtil=require(_0x0091('0x16'));var db=require(_0x0091('0x17'))['db'];var integrations=require(_0x0091('0x18'));function respondWithStatusCode(_0x4a8bd7,_0x597a9d){_0x597a9d=_0x597a9d||0xcc;return function(_0x304634){if(_0x304634){return _0x4a8bd7[_0x0091('0x19')](_0x597a9d);}return _0x4a8bd7['status'](_0x597a9d)['end']();};}function respondWithResult(_0x224e60,_0x2d230c){_0x2d230c=_0x2d230c||0xc8;return function(_0xdb8d39){if(_0xdb8d39){return _0x224e60[_0x0091('0x1a')](_0x2d230c)[_0x0091('0x1b')](_0xdb8d39);}};}function respondWithFilteredResult(_0x595ef2,_0x3e42cf){return function(_0x50a147){if(_0x50a147){var _0x2a4e6a=typeof _0x3e42cf[_0x0091('0x1c')]===_0x0091('0x1d')&&typeof _0x3e42cf[_0x0091('0x1e')]===_0x0091('0x1d');var _0x1044e9=_0x50a147[_0x0091('0x1f')];var _0x41ad14=_0x2a4e6a?0x0:_0x3e42cf[_0x0091('0x1c')];var _0x5a620c=_0x2a4e6a?_0x50a147['count']:_0x3e42cf[_0x0091('0x1c')]+_0x3e42cf['limit'];var _0x512475;if(_0x5a620c>=_0x1044e9){_0x5a620c=_0x1044e9;_0x512475=0xc8;}else{_0x512475=0xce;}_0x595ef2[_0x0091('0x1a')](_0x512475);return _0x595ef2[_0x0091('0x20')](_0x0091('0x21'),_0x41ad14+'-'+_0x5a620c+'/'+_0x1044e9)[_0x0091('0x1b')](_0x50a147);}return null;};}function patchUpdates(_0x57ad2a){return function(_0x3ad5f1){try{jsonpatch['apply'](_0x3ad5f1,_0x57ad2a,!![]);}catch(_0x1390da){return BPromise[_0x0091('0x22')](_0x1390da);}return _0x3ad5f1[_0x0091('0x23')]();};}function saveUpdates(_0x5f3d7d,_0x904e7c){return function(_0x3259fc){if(_0x3259fc){return _0x3259fc[_0x0091('0x24')](_0x5f3d7d)[_0x0091('0x25')](function(_0x2e07db){return _0x2e07db;});}return null;};}function removeEntity(_0xffc990,_0x1a36b8){return function(_0x2fb405){if(_0x2fb405){return _0x2fb405[_0x0091('0x26')]()['then'](function(){_0xffc990[_0x0091('0x1a')](0xcc)[_0x0091('0x27')]();});}};}function handleEntityNotFound(_0x346dfd,_0x47afc0){return function(_0x40f5ca){if(!_0x40f5ca){_0x346dfd[_0x0091('0x19')](0x194);}return _0x40f5ca;};}function handleError(_0x334c7c,_0xa72155){_0xa72155=_0xa72155||0x1f4;return function(_0x292f44){logger['error'](_0x292f44['stack']);if(_0x292f44[_0x0091('0x28')]){delete _0x292f44[_0x0091('0x28')];}_0x334c7c[_0x0091('0x1a')](_0xa72155)[_0x0091('0x29')](_0x292f44);};}exports['index']=function(_0x18c718,_0x2e65d6){var _0x21756a={},_0x1c6423={},_0xac9b10={'count':0x0,'rows':[]};var _0x2b9183=_[_0x0091('0x2a')](db['VtigerAccount'][_0x0091('0x2b')],function(_0x5ab79c){return{'name':_0x5ab79c['fieldName'],'type':_0x5ab79c['type'][_0x0091('0x2c')]};});_0x1c6423['model']=_[_0x0091('0x2a')](_0x2b9183,_0x0091('0x28'));_0x1c6423[_0x0091('0x2d')]=_[_0x0091('0x2e')](_0x18c718[_0x0091('0x2d')]);_0x1c6423[_0x0091('0x2f')]=_[_0x0091('0x30')](_0x1c6423[_0x0091('0x31')],_0x1c6423[_0x0091('0x2d')]);_0x21756a[_0x0091('0x32')]=_['intersection'](_0x1c6423[_0x0091('0x31')],qs[_0x0091('0x33')](_0x18c718[_0x0091('0x2d')]['fields']));_0x21756a[_0x0091('0x32')]=_0x21756a[_0x0091('0x32')]['length']?_0x21756a['attributes']:_0x1c6423['model'];if(!_0x18c718[_0x0091('0x2d')]['hasOwnProperty']('nolimit')){_0x21756a['limit']=qs[_0x0091('0x1e')](_0x18c718[_0x0091('0x2d')][_0x0091('0x1e')]);_0x21756a['offset']=qs['offset'](_0x18c718[_0x0091('0x2d')]['offset']);}_0x21756a[_0x0091('0x34')]=qs['sort'](_0x18c718['query']['sort']);_0x21756a['where']=qs[_0x0091('0x2f')](_[_0x0091('0x35')](_0x18c718[_0x0091('0x2d')],_0x1c6423[_0x0091('0x2f')]),_0x2b9183);if(_0x18c718[_0x0091('0x2d')]['filter']){_0x21756a['where']=_['merge'](_0x21756a[_0x0091('0x36')],{'$or':_[_0x0091('0x2a')](_0x2b9183,function(_0x26e508){if(_0x26e508[_0x0091('0x37')]!=='VIRTUAL'){var _0x3b3459={};_0x3b3459[_0x26e508[_0x0091('0x28')]]={'$like':'%'+_0x18c718['query'][_0x0091('0x38')]+'%'};return _0x3b3459;}})});}_0x21756a=_['merge']({},_0x21756a,_0x18c718[_0x0091('0x39')]);var _0x7e86be={'where':_0x21756a[_0x0091('0x36')]};return db[_0x0091('0x3a')][_0x0091('0x1f')](_0x7e86be)['then'](function(_0x4d5a58){_0xac9b10[_0x0091('0x1f')]=_0x4d5a58;if(_0x18c718[_0x0091('0x2d')][_0x0091('0x3b')]){_0x21756a[_0x0091('0x3c')]=[{'all':!![]}];}return db[_0x0091('0x3a')]['findAll'](_0x21756a);})[_0x0091('0x25')](function(_0x310eea){_0xac9b10['rows']=_0x310eea;return _0xac9b10;})[_0x0091('0x25')](respondWithFilteredResult(_0x2e65d6,_0x21756a))[_0x0091('0x3d')](handleError(_0x2e65d6,null));};exports[_0x0091('0x3e')]=function(_0x3e290b,_0x1d9f0f){var _0x3c64ca={'raw':![],'where':{'id':_0x3e290b[_0x0091('0x3f')]['id']}},_0x32bbfc={};_0x32bbfc[_0x0091('0x31')]=_[_0x0091('0x2e')](db['VtigerAccount'][_0x0091('0x2b')]);_0x32bbfc[_0x0091('0x2d')]=_['keys'](_0x3e290b[_0x0091('0x2d')]);_0x32bbfc['filters']=_['intersection'](_0x32bbfc[_0x0091('0x31')],_0x32bbfc[_0x0091('0x2d')]);_0x3c64ca[_0x0091('0x32')]=_[_0x0091('0x30')](_0x32bbfc[_0x0091('0x31')],qs[_0x0091('0x33')](_0x3e290b[_0x0091('0x2d')]['fields']));_0x3c64ca['attributes']=_0x3c64ca[_0x0091('0x32')][_0x0091('0x40')]?_0x3c64ca[_0x0091('0x32')]:_0x32bbfc[_0x0091('0x31')];if(_0x3e290b[_0x0091('0x2d')][_0x0091('0x3b')]){_0x3c64ca[_0x0091('0x3c')]=[{'all':!![]}];}_0x3c64ca=_[_0x0091('0x41')]({},_0x3c64ca,_0x3e290b[_0x0091('0x39')]);return db[_0x0091('0x3a')][_0x0091('0x42')](_0x3c64ca)[_0x0091('0x25')](handleEntityNotFound(_0x1d9f0f,null))['then'](respondWithResult(_0x1d9f0f,null))['catch'](handleError(_0x1d9f0f,null));};exports['create']=function(_0x84e277,_0x46d542){return db[_0x0091('0x3a')][_0x0091('0x43')](_0x84e277[_0x0091('0x44')],{})[_0x0091('0x25')](respondWithResult(_0x46d542,0xc9))[_0x0091('0x3d')](handleError(_0x46d542,null));};exports[_0x0091('0x24')]=function(_0x425132,_0xa17086){if(_0x425132[_0x0091('0x44')]['id']){delete _0x425132[_0x0091('0x44')]['id'];}return db[_0x0091('0x3a')]['find']({'where':{'id':_0x425132[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0xa17086,null))[_0x0091('0x25')](saveUpdates(_0x425132[_0x0091('0x44')],null))[_0x0091('0x25')](respondWithResult(_0xa17086,null))[_0x0091('0x3d')](handleError(_0xa17086,null));};exports[_0x0091('0x26')]=function(_0x471eae,_0x4997e7){return db['VtigerAccount'][_0x0091('0x42')]({'where':{'id':_0x471eae[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x4997e7,null))['then'](removeEntity(_0x4997e7,null))['catch'](handleError(_0x4997e7,null));};exports[_0x0091('0x45')]=function(_0x9e06a1,_0x403a06,_0x32dd9c){var _0x1f72b6={};var _0x9e8b8a={};var _0x383701;var _0x333a95;return db[_0x0091('0x3a')][_0x0091('0x46')]({'where':{'id':_0x9e06a1['params']['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x403a06,null))[_0x0091('0x25')](function(_0x1e4887){if(_0x1e4887){_0x383701=_0x1e4887;_0x9e8b8a[_0x0091('0x31')]=_[_0x0091('0x2e')](db[_0x0091('0x47')][_0x0091('0x2b')]);_0x9e8b8a[_0x0091('0x2d')]=_[_0x0091('0x2e')](_0x9e06a1[_0x0091('0x2d')]);_0x9e8b8a[_0x0091('0x2f')]=_['intersection'](_0x9e8b8a['model'],_0x9e8b8a[_0x0091('0x2d')]);_0x1f72b6[_0x0091('0x32')]=_[_0x0091('0x30')](_0x9e8b8a['model'],qs['fields'](_0x9e06a1[_0x0091('0x2d')][_0x0091('0x33')]));_0x1f72b6['attributes']=_0x1f72b6['attributes'][_0x0091('0x40')]?_0x1f72b6[_0x0091('0x32')]:_0x9e8b8a['model'];_0x1f72b6[_0x0091('0x34')]=qs[_0x0091('0x48')](_0x9e06a1[_0x0091('0x2d')][_0x0091('0x48')]);_0x1f72b6[_0x0091('0x36')]=qs[_0x0091('0x2f')](_['pick'](_0x9e06a1['query'],_0x9e8b8a[_0x0091('0x2f')]));if(_0x9e06a1[_0x0091('0x2d')][_0x0091('0x38')]){_0x1f72b6[_0x0091('0x36')]=_['merge'](_0x1f72b6[_0x0091('0x36')],{'$or':_[_0x0091('0x2a')](_0x1f72b6[_0x0091('0x32')],function(_0x466a66){var _0x46a218={};_0x46a218[_0x466a66]={'$like':'%'+_0x9e06a1['query'][_0x0091('0x38')]+'%'};return _0x46a218;})});}_0x1f72b6=_[_0x0091('0x41')]({},_0x1f72b6,_0x9e06a1[_0x0091('0x39')]);return _0x383701['getConfigurations'](_0x1f72b6);}})[_0x0091('0x25')](function(_0x48c8ae){if(_0x48c8ae){_0x333a95=_0x48c8ae[_0x0091('0x40')];if(!_0x9e06a1[_0x0091('0x2d')][_0x0091('0x49')](_0x0091('0x4a'))){_0x1f72b6[_0x0091('0x1e')]=qs[_0x0091('0x1e')](_0x9e06a1[_0x0091('0x2d')]['limit']);_0x1f72b6['offset']=qs['offset'](_0x9e06a1['query'][_0x0091('0x1c')]);}return _0x383701[_0x0091('0x45')](_0x1f72b6);}})[_0x0091('0x25')](function(_0x34f5ce){if(_0x34f5ce){return _0x34f5ce?{'count':_0x333a95,'rows':_0x34f5ce}:null;}})[_0x0091('0x25')](respondWithResult(_0x403a06,null))[_0x0091('0x3d')](handleError(_0x403a06,null));};exports[_0x0091('0x4b')]=function(_0x1698ad,_0x23d1a9,_0x571783){if(_0x1698ad[_0x0091('0x44')]['id']){delete _0x1698ad[_0x0091('0x44')]['id'];}return db[_0x0091('0x3a')][_0x0091('0x46')]({'where':{'id':_0x1698ad[_0x0091('0x3f')]['id']}})[_0x0091('0x25')](handleEntityNotFound(_0x23d1a9,null))[_0x0091('0x25')](function(_0x265d0f){if(_0x265d0f){_0x1698ad[_0x0091('0x44')][_0x0091('0x4c')]=_0x265d0f['id'];_0x1698ad[_0x0091('0x44')][_0x0091('0x4d')]=integrations[_0x0091('0x4e')](_0x1698ad[_0x0091('0x44')][_0x0091('0x4f')],_0x1698ad[_0x0091('0x44')]['type']);_0x1698ad[_0x0091('0x44')][_0x0091('0x50')]=integrations['getDescriptions'](_0x1698ad['body'][_0x0091('0x4f')],_0x1698ad[_0x0091('0x44')]['type']);return db[_0x0091('0x47')][_0x0091('0x43')](_0x1698ad[_0x0091('0x44')],{'include':[{'model':db[_0x0091('0x51')],'as':'Subjects'},{'model':db[_0x0091('0x51')],'as':_0x0091('0x50')}]});}return null;})['then'](respondWithResult(_0x23d1a9,null))[_0x0091('0x3d')](handleError(_0x23d1a9,null));};var md5=require(_0x0091('0x52'));exports[_0x0091('0x53')]=function(_0x2bc16a,_0x345cfd,_0x202eec){var _0x36d97b=null;var _0x3a3026=null;var _0x1bbe35=null;var _0xa36003=null;var _0xf20875='';return db[_0x0091('0x3a')]['findOne']({'where':{'id':_0x2bc16a[_0x0091('0x3f')]['id']},'attributes':['id',_0x0091('0x28'),_0x0091('0x54'),_0x0091('0x55'),_0x0091('0x56'),'remoteUri',_0x0091('0x57'),_0x0091('0x58')]})[_0x0091('0x25')](handleEntityNotFound(_0x345cfd,null))[_0x0091('0x25')](function(_0x3ccde4){if(_0x3ccde4){_0x36d97b=_0x3ccde4['username'];_0x3a3026=_0x3ccde4[_0x0091('0x58')];_0x1bbe35=_0x3ccde4[_0x0091('0x56')];_0xf20875=_0x3ccde4[_0x0091('0x59')];var _0x173ac8=_0xf20875[_0x0091('0x5a')](-0x1);if(_0x173ac8==='/'){_0xf20875=_0xf20875['substring'](0x0,_0xf20875['lastIndexOf'](_0x173ac8));}_0xa36003=util[_0x0091('0x5b')](_0x0091('0x5c'),_0xf20875);var _0x3116a3={'method':'GET','uri':_0xa36003,'qs':{'operation':_0x0091('0x5d'),'username':_0x3ccde4[_0x0091('0x54')]},'json':!![]};return rp(_0x3116a3);}})['then'](function(_0x1ee758){if(_0x1ee758[_0x0091('0x5e')]){var _0x37b747={'method':_0x0091('0x5f'),'uri':_0xa36003,'form':{'operation':_0x0091('0x60'),'username':_0x36d97b,'accessKey':md5(_0x1ee758[_0x0091('0x61')]['token']+_0x3a3026)},'json':!![]};return rp(_0x37b747);}})['then'](function(_0x3228cf){if(_0x3228cf[_0x0091('0x5e')]){var _0x54e820={'method':_0x0091('0x62'),'uri':_0xa36003,'qs':{'operation':_0x0091('0x63'),'username':_0x36d97b,'sessionName':_0x3228cf[_0x0091('0x61')]['sessionName'],'elementType':_0x1bbe35},'json':!![]};return rp(_0x54e820);}})[_0x0091('0x25')](function(_0x13ea54){if(_0x13ea54[_0x0091('0x5e')]){var _0x2aa8ba=[_0x0091('0x64'),'reference',_0x0091('0x65')];_['remove'](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0x5bcff3){return _0x2aa8ba[_0x0091('0x66')](_0x5bcff3[_0x0091('0x37')][_0x0091('0x28')]);});_[_0x0091('0x67')](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0x46733c){return _0x46733c[_0x0091('0x68')]==='false';});return{'count':_0x13ea54[_0x0091('0x61')][_0x0091('0x33')][_0x0091('0x40')],'rows':_[_0x0091('0x2a')](_0x13ea54[_0x0091('0x61')][_0x0091('0x33')],function(_0xaeefb9){return{'id':_0xaeefb9[_0x0091('0x28')],'name':_0xaeefb9[_0x0091('0x69')],'custom':_['startsWith'](_0xaeefb9[_0x0091('0x28')],_0x0091('0x6a'))?!![]:![],'options':_0xaeefb9['type'][_0x0091('0x28')]===_0x0091('0x6b')&&_0xaeefb9[_0x0091('0x37')][_0x0091('0x6c')][_0x0091('0x40')]>0x0?_['map'](_0xaeefb9[_0x0091('0x37')][_0x0091('0x6c')],function(_0x44f120){return{'name':_0x44f120[_0x0091('0x69')],'value':_0x44f120[_0x0091('0x6d')]};}):[]};})};}})[_0x0091('0x25')](respondWithResult(_0x345cfd,null))['catch'](function(_0x3d0927){console[_0x0091('0x6e')](_0x0091('0x6f')+_0x3d0927);var _0x141a14=_0x2bc16a[_0x0091('0x2d')][_0x0091('0x70')]?0x1f4:_0x3d0927['statusCode']||0x1f4;logger[_0x0091('0x71')](_0x0091('0x72'),_0x0091('0x53'),_0x141a14,JSON['stringify'](_0x3d0927));delete _0x3d0927[_0x0091('0x28')];if(_0x141a14===0x191){_0x141a14=0x190;}_0x345cfd['status'](_0x141a14)[_0x0091('0x29')](_0x2bc16a[_0x0091('0x2d')][_0x0091('0x70')]?{'message':_0x0091('0x73'),'statusCode':_0x3d0927[_0x0091('0x74')]}:_0x3d0927);});};
\ No newline at end of file
+var _0x3008=['getchallenge','success','POST','login','result','describe','reference','owner','remove','includes','editable','startsWith','cf_','picklist','picklistValues','label','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','end','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','find','create','body','destroy','getConfigurations','VtigerConfiguration','fields','pick','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','getDescriptions','VtigerField','Subjects','md5','getFields','username','moduleName','remoteUri','serverUrl','accessKey','substring','lastIndexOf','format','%s/webservice.php','GET'];(function(_0x54106e,_0x161007){var _0x4a9d5=function(_0x2c92fa){while(--_0x2c92fa){_0x54106e['push'](_0x54106e['shift']());}};_0x4a9d5(++_0x161007);}(_0x3008,0x177));var _0x8300=function(_0x3a8db5,_0x31cff7){_0x3a8db5=_0x3a8db5-0x0;var _0x2c03cd=_0x3008[_0x3a8db5];return _0x2c03cd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8300('0x0'));var zipdir=require(_0x8300('0x1'));var jsonpatch=require(_0x8300('0x2'));var rp=require(_0x8300('0x3'));var moment=require(_0x8300('0x4'));var BPromise=require(_0x8300('0x5'));var Mustache=require(_0x8300('0x6'));var util=require(_0x8300('0x7'));var path=require(_0x8300('0x8'));var sox=require(_0x8300('0x9'));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(_0x8300('0xa'));var crypto=require('crypto');var jsforce=require(_0x8300('0xb'));var deskjs=require(_0x8300('0xc'));var toCsv=require(_0x8300('0xd'));var querystring=require(_0x8300('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8300('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8300('0x10'));var hardwareService=require(_0x8300('0x11'));var logger=require(_0x8300('0x12'))(_0x8300('0x13'));var utils=require(_0x8300('0x14'));var config=require(_0x8300('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8300('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1e48cb,_0x21595c){_0x21595c=_0x21595c||0xcc;return function(_0x5a95d0){if(_0x5a95d0){return _0x1e48cb[_0x8300('0x17')](_0x21595c);}return _0x1e48cb[_0x8300('0x18')](_0x21595c)['end']();};}function respondWithResult(_0x431652,_0x6a1ffd){_0x6a1ffd=_0x6a1ffd||0xc8;return function(_0x729e9c){if(_0x729e9c){return _0x431652['status'](_0x6a1ffd)['json'](_0x729e9c);}};}function respondWithFilteredResult(_0x12f032,_0x5c4c30){return function(_0x4c6129){if(_0x4c6129){var _0x3fcc44=typeof _0x5c4c30[_0x8300('0x19')]===_0x8300('0x1a')&&typeof _0x5c4c30[_0x8300('0x1b')]===_0x8300('0x1a');var _0x48d60e=_0x4c6129[_0x8300('0x1c')];var _0x5e60c3=_0x3fcc44?0x0:_0x5c4c30[_0x8300('0x19')];var _0x305969=_0x3fcc44?_0x4c6129[_0x8300('0x1c')]:_0x5c4c30[_0x8300('0x19')]+_0x5c4c30[_0x8300('0x1b')];var _0x4b92cd;if(_0x305969>=_0x48d60e){_0x305969=_0x48d60e;_0x4b92cd=0xc8;}else{_0x4b92cd=0xce;}_0x12f032['status'](_0x4b92cd);return _0x12f032[_0x8300('0x1d')](_0x8300('0x1e'),_0x5e60c3+'-'+_0x305969+'/'+_0x48d60e)[_0x8300('0x1f')](_0x4c6129);}return null;};}function patchUpdates(_0x5e6a1d){return function(_0x482886){try{jsonpatch['apply'](_0x482886,_0x5e6a1d,!![]);}catch(_0x45e1ef){return BPromise[_0x8300('0x20')](_0x45e1ef);}return _0x482886[_0x8300('0x21')]();};}function saveUpdates(_0x4027dc,_0x52bd3e){return function(_0x5ad23a){if(_0x5ad23a){return _0x5ad23a[_0x8300('0x22')](_0x4027dc)['then'](function(_0x5c7862){return _0x5c7862;});}return null;};}function removeEntity(_0x16f766,_0x32f3d4){return function(_0x6b9a56){if(_0x6b9a56){return _0x6b9a56['destroy']()[_0x8300('0x23')](function(){_0x16f766[_0x8300('0x18')](0xcc)[_0x8300('0x24')]();});}};}function handleEntityNotFound(_0x3b5832,_0x1e1e48){return function(_0x28da06){if(!_0x28da06){_0x3b5832[_0x8300('0x17')](0x194);}return _0x28da06;};}function handleError(_0x1140af,_0x48a3f4){_0x48a3f4=_0x48a3f4||0x1f4;return function(_0x11bcca){logger[_0x8300('0x25')](_0x11bcca[_0x8300('0x26')]);if(_0x11bcca['name']){delete _0x11bcca[_0x8300('0x27')];}_0x1140af[_0x8300('0x18')](_0x48a3f4)[_0x8300('0x28')](_0x11bcca);};}exports[_0x8300('0x29')]=function(_0x41ed45,_0x37f628){var _0x230cd2={},_0x27cd35={},_0x511f43={'count':0x0,'rows':[]};var _0x27c522=_[_0x8300('0x2a')](db[_0x8300('0x2b')][_0x8300('0x2c')],function(_0x33b352){return{'name':_0x33b352[_0x8300('0x2d')],'type':_0x33b352[_0x8300('0x2e')][_0x8300('0x2f')]};});_0x27cd35[_0x8300('0x30')]=_[_0x8300('0x2a')](_0x27c522,_0x8300('0x27'));_0x27cd35[_0x8300('0x31')]=_[_0x8300('0x32')](_0x41ed45[_0x8300('0x31')]);_0x27cd35[_0x8300('0x33')]=_[_0x8300('0x34')](_0x27cd35[_0x8300('0x30')],_0x27cd35[_0x8300('0x31')]);_0x230cd2['attributes']=_[_0x8300('0x34')](_0x27cd35['model'],qs['fields'](_0x41ed45[_0x8300('0x31')]['fields']));_0x230cd2[_0x8300('0x35')]=_0x230cd2['attributes'][_0x8300('0x36')]?_0x230cd2[_0x8300('0x35')]:_0x27cd35[_0x8300('0x30')];if(!_0x41ed45[_0x8300('0x31')]['hasOwnProperty'](_0x8300('0x37'))){_0x230cd2[_0x8300('0x1b')]=qs[_0x8300('0x1b')](_0x41ed45['query']['limit']);_0x230cd2[_0x8300('0x19')]=qs[_0x8300('0x19')](_0x41ed45[_0x8300('0x31')][_0x8300('0x19')]);}_0x230cd2[_0x8300('0x38')]=qs['sort'](_0x41ed45[_0x8300('0x31')][_0x8300('0x39')]);_0x230cd2['where']=qs['filters'](_['pick'](_0x41ed45[_0x8300('0x31')],_0x27cd35[_0x8300('0x33')]),_0x27c522);if(_0x41ed45[_0x8300('0x31')][_0x8300('0x3a')]){_0x230cd2[_0x8300('0x3b')]=_[_0x8300('0x3c')](_0x230cd2[_0x8300('0x3b')],{'$or':_[_0x8300('0x2a')](_0x27c522,function(_0x4026ad){if(_0x4026ad[_0x8300('0x2e')]!==_0x8300('0x3d')){var _0x161af6={};_0x161af6[_0x4026ad[_0x8300('0x27')]]={'$like':'%'+_0x41ed45[_0x8300('0x31')]['filter']+'%'};return _0x161af6;}})});}_0x230cd2=_[_0x8300('0x3c')]({},_0x230cd2,_0x41ed45[_0x8300('0x3e')]);var _0x438965={'where':_0x230cd2['where']};return db[_0x8300('0x2b')][_0x8300('0x1c')](_0x438965)[_0x8300('0x23')](function(_0x3ff54e){_0x511f43[_0x8300('0x1c')]=_0x3ff54e;if(_0x41ed45[_0x8300('0x31')]['includeAll']){_0x230cd2[_0x8300('0x3f')]=[{'all':!![]}];}return db[_0x8300('0x2b')][_0x8300('0x40')](_0x230cd2);})[_0x8300('0x23')](function(_0x4ea74b){_0x511f43['rows']=_0x4ea74b;return _0x511f43;})[_0x8300('0x23')](respondWithFilteredResult(_0x37f628,_0x230cd2))[_0x8300('0x41')](handleError(_0x37f628,null));};exports[_0x8300('0x42')]=function(_0x4db7da,_0xc13341){var _0x335a94={'raw':![],'where':{'id':_0x4db7da[_0x8300('0x43')]['id']}},_0x3fb045={};_0x3fb045[_0x8300('0x30')]=_[_0x8300('0x32')](db[_0x8300('0x2b')][_0x8300('0x2c')]);_0x3fb045['query']=_[_0x8300('0x32')](_0x4db7da[_0x8300('0x31')]);_0x3fb045['filters']=_[_0x8300('0x34')](_0x3fb045[_0x8300('0x30')],_0x3fb045['query']);_0x335a94[_0x8300('0x35')]=_[_0x8300('0x34')](_0x3fb045[_0x8300('0x30')],qs['fields'](_0x4db7da[_0x8300('0x31')]['fields']));_0x335a94[_0x8300('0x35')]=_0x335a94[_0x8300('0x35')][_0x8300('0x36')]?_0x335a94[_0x8300('0x35')]:_0x3fb045[_0x8300('0x30')];if(_0x4db7da['query']['includeAll']){_0x335a94[_0x8300('0x3f')]=[{'all':!![]}];}_0x335a94=_[_0x8300('0x3c')]({},_0x335a94,_0x4db7da['options']);return db[_0x8300('0x2b')][_0x8300('0x44')](_0x335a94)[_0x8300('0x23')](handleEntityNotFound(_0xc13341,null))['then'](respondWithResult(_0xc13341,null))['catch'](handleError(_0xc13341,null));};exports[_0x8300('0x45')]=function(_0x5eca61,_0xc6c924){return db[_0x8300('0x2b')][_0x8300('0x45')](_0x5eca61[_0x8300('0x46')],{})[_0x8300('0x23')](respondWithResult(_0xc6c924,0xc9))[_0x8300('0x41')](handleError(_0xc6c924,null));};exports['update']=function(_0x826bde,_0x3ba824){if(_0x826bde[_0x8300('0x46')]['id']){delete _0x826bde[_0x8300('0x46')]['id'];}return db[_0x8300('0x2b')][_0x8300('0x44')]({'where':{'id':_0x826bde['params']['id']}})[_0x8300('0x23')](handleEntityNotFound(_0x3ba824,null))[_0x8300('0x23')](saveUpdates(_0x826bde['body'],null))[_0x8300('0x23')](respondWithResult(_0x3ba824,null))[_0x8300('0x41')](handleError(_0x3ba824,null));};exports[_0x8300('0x47')]=function(_0x1ed8a6,_0x2c545c){return db[_0x8300('0x2b')]['find']({'where':{'id':_0x1ed8a6[_0x8300('0x43')]['id']}})['then'](handleEntityNotFound(_0x2c545c,null))['then'](removeEntity(_0x2c545c,null))[_0x8300('0x41')](handleError(_0x2c545c,null));};exports[_0x8300('0x48')]=function(_0x4299c9,_0x5cc972,_0x328f49){var _0x1f4ebd={};var _0x589d24={};var _0x29bab4;var _0x5a1050;return db[_0x8300('0x2b')]['findOne']({'where':{'id':_0x4299c9[_0x8300('0x43')]['id']}})[_0x8300('0x23')](handleEntityNotFound(_0x5cc972,null))['then'](function(_0x3dce57){if(_0x3dce57){_0x29bab4=_0x3dce57;_0x589d24[_0x8300('0x30')]=_['keys'](db[_0x8300('0x49')][_0x8300('0x2c')]);_0x589d24['query']=_[_0x8300('0x32')](_0x4299c9['query']);_0x589d24[_0x8300('0x33')]=_[_0x8300('0x34')](_0x589d24[_0x8300('0x30')],_0x589d24['query']);_0x1f4ebd[_0x8300('0x35')]=_['intersection'](_0x589d24[_0x8300('0x30')],qs[_0x8300('0x4a')](_0x4299c9[_0x8300('0x31')][_0x8300('0x4a')]));_0x1f4ebd[_0x8300('0x35')]=_0x1f4ebd[_0x8300('0x35')]['length']?_0x1f4ebd['attributes']:_0x589d24[_0x8300('0x30')];_0x1f4ebd[_0x8300('0x38')]=qs['sort'](_0x4299c9[_0x8300('0x31')][_0x8300('0x39')]);_0x1f4ebd[_0x8300('0x3b')]=qs[_0x8300('0x33')](_[_0x8300('0x4b')](_0x4299c9['query'],_0x589d24[_0x8300('0x33')]));if(_0x4299c9['query']['filter']){_0x1f4ebd['where']=_[_0x8300('0x3c')](_0x1f4ebd[_0x8300('0x3b')],{'$or':_[_0x8300('0x2a')](_0x1f4ebd['attributes'],function(_0x24b971){var _0x4293bb={};_0x4293bb[_0x24b971]={'$like':'%'+_0x4299c9[_0x8300('0x31')]['filter']+'%'};return _0x4293bb;})});}_0x1f4ebd=_['merge']({},_0x1f4ebd,_0x4299c9[_0x8300('0x3e')]);return _0x29bab4[_0x8300('0x48')](_0x1f4ebd);}})[_0x8300('0x23')](function(_0x12a8fb){if(_0x12a8fb){_0x5a1050=_0x12a8fb['length'];if(!_0x4299c9[_0x8300('0x31')]['hasOwnProperty'](_0x8300('0x37'))){_0x1f4ebd[_0x8300('0x1b')]=qs[_0x8300('0x1b')](_0x4299c9['query'][_0x8300('0x1b')]);_0x1f4ebd[_0x8300('0x19')]=qs['offset'](_0x4299c9[_0x8300('0x31')][_0x8300('0x19')]);}return _0x29bab4[_0x8300('0x48')](_0x1f4ebd);}})[_0x8300('0x23')](function(_0x1cce4f){if(_0x1cce4f){return _0x1cce4f?{'count':_0x5a1050,'rows':_0x1cce4f}:null;}})[_0x8300('0x23')](respondWithResult(_0x5cc972,null))[_0x8300('0x41')](handleError(_0x5cc972,null));};exports[_0x8300('0x4c')]=function(_0x381dbc,_0xfee5c0,_0xc9d77f){if(_0x381dbc[_0x8300('0x46')]['id']){delete _0x381dbc['body']['id'];}return db['VtigerAccount'][_0x8300('0x4d')]({'where':{'id':_0x381dbc[_0x8300('0x43')]['id']}})[_0x8300('0x23')](handleEntityNotFound(_0xfee5c0,null))['then'](function(_0x17f5b3){if(_0x17f5b3){_0x381dbc[_0x8300('0x46')][_0x8300('0x4e')]=_0x17f5b3['id'];_0x381dbc['body']['Subjects']=integrations[_0x8300('0x4f')](_0x381dbc[_0x8300('0x46')][_0x8300('0x50')],_0x381dbc['body'][_0x8300('0x2e')]);_0x381dbc[_0x8300('0x46')][_0x8300('0x51')]=integrations[_0x8300('0x52')](_0x381dbc[_0x8300('0x46')][_0x8300('0x50')],_0x381dbc[_0x8300('0x46')][_0x8300('0x2e')]);return db[_0x8300('0x49')][_0x8300('0x45')](_0x381dbc['body'],{'include':[{'model':db[_0x8300('0x53')],'as':_0x8300('0x54')},{'model':db['VtigerField'],'as':_0x8300('0x51')}]});}return null;})['then'](respondWithResult(_0xfee5c0,null))[_0x8300('0x41')](handleError(_0xfee5c0,null));};var md5=require(_0x8300('0x55'));exports[_0x8300('0x56')]=function(_0x36d2fe,_0x1262b4,_0x4c9736){var _0x1c423f=null;var _0x3eb6e9=null;var _0x2334e1=null;var _0x9a8d5d=null;var _0x4b4c38='';return db[_0x8300('0x2b')][_0x8300('0x4d')]({'where':{'id':_0x36d2fe[_0x8300('0x43')]['id']},'attributes':['id','name',_0x8300('0x57'),'description',_0x8300('0x58'),_0x8300('0x59'),_0x8300('0x5a'),'accessKey']})[_0x8300('0x23')](handleEntityNotFound(_0x1262b4,null))[_0x8300('0x23')](function(_0x1543e8){if(_0x1543e8){_0x1c423f=_0x1543e8['username'];_0x3eb6e9=_0x1543e8[_0x8300('0x5b')];_0x2334e1=_0x1543e8[_0x8300('0x58')];_0x4b4c38=_0x1543e8['remoteUri'];var _0x4269ee=_0x4b4c38['slice'](-0x1);if(_0x4269ee==='/'){_0x4b4c38=_0x4b4c38[_0x8300('0x5c')](0x0,_0x4b4c38[_0x8300('0x5d')](_0x4269ee));}_0x9a8d5d=util[_0x8300('0x5e')](_0x8300('0x5f'),_0x4b4c38);var _0x2b2ab5={'method':_0x8300('0x60'),'uri':_0x9a8d5d,'qs':{'operation':_0x8300('0x61'),'username':_0x1543e8[_0x8300('0x57')]},'json':!![]};return rp(_0x2b2ab5);}})[_0x8300('0x23')](function(_0x50fd7f){if(_0x50fd7f[_0x8300('0x62')]){var _0x48f7f0={'method':_0x8300('0x63'),'uri':_0x9a8d5d,'form':{'operation':_0x8300('0x64'),'username':_0x1c423f,'accessKey':md5(_0x50fd7f[_0x8300('0x65')]['token']+_0x3eb6e9)},'json':!![]};return rp(_0x48f7f0);}})['then'](function(_0x4d7939){if(_0x4d7939[_0x8300('0x62')]){var _0x34ff14={'method':_0x8300('0x60'),'uri':_0x9a8d5d,'qs':{'operation':_0x8300('0x66'),'username':_0x1c423f,'sessionName':_0x4d7939[_0x8300('0x65')]['sessionName'],'elementType':_0x2334e1},'json':!![]};return rp(_0x34ff14);}})['then'](function(_0x2957fa){if(_0x2957fa[_0x8300('0x62')]){var _0x68be27=['autogenerated',_0x8300('0x67'),_0x8300('0x68')];_[_0x8300('0x69')](_0x2957fa[_0x8300('0x65')][_0x8300('0x4a')],function(_0x209c76){return _0x68be27[_0x8300('0x6a')](_0x209c76[_0x8300('0x2e')][_0x8300('0x27')]);});_['remove'](_0x2957fa['result'][_0x8300('0x4a')],function(_0x4ad802){return _0x4ad802[_0x8300('0x6b')]==='false';});return{'count':_0x2957fa['result'][_0x8300('0x4a')][_0x8300('0x36')],'rows':_[_0x8300('0x2a')](_0x2957fa[_0x8300('0x65')]['fields'],function(_0x18ab8e){return{'id':_0x18ab8e[_0x8300('0x27')],'name':_0x18ab8e['label'],'custom':_[_0x8300('0x6c')](_0x18ab8e['name'],_0x8300('0x6d'))?!![]:![],'options':_0x18ab8e[_0x8300('0x2e')][_0x8300('0x27')]===_0x8300('0x6e')&&_0x18ab8e[_0x8300('0x2e')]['picklistValues'][_0x8300('0x36')]>0x0?_[_0x8300('0x2a')](_0x18ab8e[_0x8300('0x2e')][_0x8300('0x6f')],function(_0x5c3d75){return{'name':_0x5c3d75[_0x8300('0x70')],'value':_0x5c3d75['value']};}):[]};})};}})[_0x8300('0x23')](respondWithResult(_0x1262b4,null))['catch'](function(_0x90448d){console['log'](_0x8300('0x71')+_0x90448d);var _0x4bb603=_0x36d2fe[_0x8300('0x31')][_0x8300('0x72')]?0x1f4:_0x90448d[_0x8300('0x73')]||0x1f4;logger['error'](_0x8300('0x74'),_0x8300('0x56'),_0x4bb603,JSON['stringify'](_0x90448d));delete _0x90448d[_0x8300('0x27')];if(_0x4bb603===0x191){_0x4bb603=0x190;}_0x1262b4[_0x8300('0x18')](_0x4bb603)[_0x8300('0x28')](_0x36d2fe[_0x8300('0x31')][_0x8300('0x72')]?{'message':_0x8300('0x75'),'statusCode':_0x90448d[_0x8300('0x73')]}:_0x90448d);});};
\ No newline at end of file
index 60f4475..f0ae595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc415=['define','int_vtiger_accounts','lodash','util','../../config/logger','api','bluebird','path','./intVtigerAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x250f95,_0x5a5728){var _0x4ada97=function(_0x392edc){while(--_0x392edc){_0x250f95['push'](_0x250f95['shift']());}};_0x4ada97(++_0x5a5728);}(_0xc415,0x183));var _0x5c41=function(_0x5c6b43,_0x545170){_0x5c6b43=_0x5c6b43-0x0;var _0x26ec87=_0xc415[_0x5c6b43];return _0x26ec87;};'use strict';var _=require(_0x5c41('0x0'));var util=require(_0x5c41('0x1'));var logger=require(_0x5c41('0x2'))(_0x5c41('0x3'));var moment=require('moment');var BPromise=require(_0x5c41('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c41('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5c41('0x6'));var integrations=require(_0x5c41('0x7'));module[_0x5c41('0x8')]=function(_0x3618f2,_0x517e72){return _0x3618f2[_0x5c41('0x9')]('VtigerAccount',attributes,{'tableName':_0x5c41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x876b=['int_vtiger_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./intVtigerAccount.attributes','exports'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x876b,0xa6));var _0xb876=function(_0x626bd3,_0x14819b){_0x626bd3=_0x626bd3-0x0;var _0x3bf86b=_0x876b[_0x626bd3];return _0x3bf86b;};'use strict';var _=require(_0xb876('0x0'));var util=require(_0xb876('0x1'));var logger=require(_0xb876('0x2'))('api');var moment=require(_0xb876('0x3'));var BPromise=require(_0xb876('0x4'));var rp=require(_0xb876('0x5'));var fs=require('fs');var path=require(_0xb876('0x6'));var rimraf=require(_0xb876('0x7'));var config=require('../../config/environment');var attributes=require(_0xb876('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xb876('0x9')]=function(_0x314d8e,_0x599689){return _0x314d8e['define']('VtigerAccount',attributes,{'tableName':_0xb876('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 972df8c..a2ad63a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['GetVtigerAccount','VtigerAccount','options','where','attributes','include','map','model','debug','ShowVtigerAccount','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','VtigerAccount,\x20%s,\x20%s','message','result','catch'];(function(_0x259d17,_0x220710){var _0x407535=function(_0x49bc38){while(--_0x49bc38){_0x259d17['push'](_0x259d17['shift']());}};_0x407535(++_0x220710);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x4ee9cd,_0xd375b0){_0x4ee9cd=_0x4ee9cd-0x0;var _0x328a5b=_0xe5b5[_0x4ee9cd];return _0x328a5b;};'use strict';var _=require(_0x5e5b('0x0'));var util=require(_0x5e5b('0x1'));var moment=require(_0x5e5b('0x2'));var BPromise=require(_0x5e5b('0x3'));var rs=require(_0x5e5b('0x4'));var fs=require('fs');var Redis=require(_0x5e5b('0x5'));var db=require(_0x5e5b('0x6'))['db'];var utils=require(_0x5e5b('0x7'));var logger=require(_0x5e5b('0x8'))(_0x5e5b('0x9'));var config=require(_0x5e5b('0xa'));var jayson=require(_0x5e5b('0xb'));var client=jayson[_0x5e5b('0xc')][_0x5e5b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x545eb3,_0x29db2c,_0xe089b1){return new BPromise(function(_0xcbd478,_0x258414){return client[_0x5e5b('0xe')](_0x545eb3,_0xe089b1)[_0x5e5b('0xf')](function(_0x3a37db){logger[_0x5e5b('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,_0x5e5b('0x11'));logger['debug'](_0x5e5b('0x12'),_0x29db2c,_0x5e5b('0x11'),JSON[_0x5e5b('0x13')](_0x3a37db));if(_0x3a37db[_0x5e5b('0x14')]){if(_0x3a37db['error']['code']===0x1f4){logger['error'](_0x5e5b('0x15'),_0x29db2c,_0x3a37db[_0x5e5b('0x14')][_0x5e5b('0x16')]);return _0x258414(_0x3a37db[_0x5e5b('0x14')][_0x5e5b('0x16')]);}logger[_0x5e5b('0x14')](_0x5e5b('0x15'),_0x29db2c,_0x3a37db['error'][_0x5e5b('0x16')]);return _0xcbd478(_0x3a37db[_0x5e5b('0x14')]['message']);}else{logger[_0x5e5b('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,'request\x20sent');_0xcbd478(_0x3a37db[_0x5e5b('0x17')][_0x5e5b('0x16')]);}})[_0x5e5b('0x18')](function(_0x5c7148){logger[_0x5e5b('0x14')]('VtigerAccount,\x20%s,\x20%s',_0x29db2c,_0x5c7148);_0x258414(_0x5c7148);});});}exports[_0x5e5b('0x19')]=function(_0x45a091){var _0x4c5f9a=this;return new Promise(function(_0xe5aa6b,_0x1560e1){return db[_0x5e5b('0x1a')]['findAll']({'raw':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1c')]||null:null,'attributes':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1d')]||null:null,'limit':_0x45a091[_0x5e5b('0x1b')]?_0x45a091[_0x5e5b('0x1b')]['limit']||null:null,'include':_0x45a091['options']?_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x45a091[_0x5e5b('0x1b')][_0x5e5b('0x1e')],function(_0x28cd95){return{'model':db[_0x28cd95[_0x5e5b('0x20')]],'as':_0x28cd95['as'],'attributes':_0x28cd95[_0x5e5b('0x1d')],'include':_0x28cd95[_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x28cd95[_0x5e5b('0x1e')],function(_0x4da321){return{'model':db[_0x4da321[_0x5e5b('0x20')]],'as':_0x4da321['as'],'attributes':_0x4da321[_0x5e5b('0x1d')],'include':_0x4da321[_0x5e5b('0x1e')]?_['map'](_0x4da321[_0x5e5b('0x1e')],function(_0xdb2863){return{'model':db[_0xdb2863['model']],'as':_0xdb2863['as'],'attributes':_0xdb2863[_0x5e5b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5e5b('0xf')](function(_0x39ce16){logger[_0x5e5b('0x10')](_0x5e5b('0x19'),_0x45a091);logger[_0x5e5b('0x21')](_0x5e5b('0x19'),_0x45a091,JSON[_0x5e5b('0x13')](_0x39ce16));_0xe5aa6b(_0x39ce16);})[_0x5e5b('0x18')](function(_0x42da3b){logger[_0x5e5b('0x14')](_0x5e5b('0x19'),_0x42da3b['message'],_0x45a091);_0x1560e1(_0x4c5f9a['error'](0x1f4,_0x42da3b[_0x5e5b('0x16')]));});});};exports[_0x5e5b('0x22')]=function(_0xb68419){var _0x3dcdab=this;return new Promise(function(_0x12f1ee,_0x4b9be8){return db[_0x5e5b('0x1a')]['find']({'raw':_0xb68419[_0x5e5b('0x1b')]?_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x23')]===undefined?!![]:![]:!![],'where':_0xb68419[_0x5e5b('0x1b')]?_0xb68419['options'][_0x5e5b('0x1c')]||null:null,'attributes':_0xb68419[_0x5e5b('0x1b')]?_0xb68419['options'][_0x5e5b('0x1d')]||null:null,'include':_0xb68419[_0x5e5b('0x1b')]?_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0xb68419[_0x5e5b('0x1b')][_0x5e5b('0x1e')],function(_0x317451){return{'model':db[_0x317451['model']],'as':_0x317451['as'],'attributes':_0x317451[_0x5e5b('0x1d')],'include':_0x317451[_0x5e5b('0x1e')]?_[_0x5e5b('0x1f')](_0x317451[_0x5e5b('0x1e')],function(_0x7da7a5){return{'model':db[_0x7da7a5[_0x5e5b('0x20')]],'as':_0x7da7a5['as'],'attributes':_0x7da7a5['attributes'],'include':_0x7da7a5['include']?_[_0x5e5b('0x1f')](_0x7da7a5[_0x5e5b('0x1e')],function(_0x8ec651){return{'model':db[_0x8ec651['model']],'as':_0x8ec651['as'],'attributes':_0x8ec651[_0x5e5b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5e5b('0xf')](function(_0x18f5ba){logger[_0x5e5b('0x10')]('ShowVtigerAccount',_0xb68419);logger[_0x5e5b('0x21')](_0x5e5b('0x22'),_0xb68419,JSON['stringify'](_0x18f5ba));_0x12f1ee(_0x18f5ba);})['catch'](function(_0xe9c586){logger[_0x5e5b('0x14')](_0x5e5b('0x22'),_0xe9c586['message'],_0xb68419);_0x4b9be8(_0x3dcdab[_0x5e5b('0x14')](0x1f4,_0xe9c586['message']));});});};
\ No newline at end of file
+var _0xb7e7=['request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include','map','model','ShowVtigerAccount','find','where','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http'];(function(_0x9f0424,_0xc8d5d6){var _0x5b3285=function(_0x41d62c){while(--_0x41d62c){_0x9f0424['push'](_0x9f0424['shift']());}};_0x5b3285(++_0xc8d5d6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb7e7[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}exports[_0x7b7e('0x14')]=function(_0x242368){var _0x200ef7=this;return new Promise(function(_0x2acb8c,_0x429a0e){return db[_0x7b7e('0x15')][_0x7b7e('0x16')]({'raw':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x18')]===undefined?!![]:![]:!![],'where':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')]['where']||null:null,'attributes':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x19')]||null:null,'limit':_0x242368['options']?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1a')]||null:null,'include':_0x242368[_0x7b7e('0x17')]?_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x242368[_0x7b7e('0x17')][_0x7b7e('0x1b')],function(_0x53bbb3){return{'model':db[_0x53bbb3['model']],'as':_0x53bbb3['as'],'attributes':_0x53bbb3['attributes'],'include':_0x53bbb3[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x53bbb3[_0x7b7e('0x1b')],function(_0x483c6f){return{'model':db[_0x483c6f['model']],'as':_0x483c6f['as'],'attributes':_0x483c6f['attributes'],'include':_0x483c6f[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x483c6f[_0x7b7e('0x1b')],function(_0x7aa71){return{'model':db[_0x7aa71[_0x7b7e('0x1d')]],'as':_0x7aa71['as'],'attributes':_0x7aa71['attributes']};}):[]};}):[]};}):[]:[]})[_0x7b7e('0x9')](function(_0x21a15){logger['info']('GetVtigerAccount',_0x242368);logger['debug'](_0x7b7e('0x14'),_0x242368,JSON[_0x7b7e('0xf')](_0x21a15));_0x2acb8c(_0x21a15);})['catch'](function(_0x3db8c4){logger['error'](_0x7b7e('0x14'),_0x3db8c4[_0x7b7e('0x12')],_0x242368);_0x429a0e(_0x200ef7[_0x7b7e('0x10')](0x1f4,_0x3db8c4['message']));});});};exports[_0x7b7e('0x1e')]=function(_0xe31336){var _0x35602a=this;return new Promise(function(_0x326dd2,_0x33f9a1){return db['VtigerAccount'][_0x7b7e('0x1f')]({'raw':_0xe31336['options']?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x18')]===undefined?!![]:![]:!![],'where':_0xe31336[_0x7b7e('0x17')]?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x20')]||null:null,'attributes':_0xe31336[_0x7b7e('0x17')]?_0xe31336[_0x7b7e('0x17')]['attributes']||null:null,'include':_0xe31336['options']?_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x1b')]?_['map'](_0xe31336[_0x7b7e('0x17')][_0x7b7e('0x1b')],function(_0x2ca366){return{'model':db[_0x2ca366['model']],'as':_0x2ca366['as'],'attributes':_0x2ca366[_0x7b7e('0x19')],'include':_0x2ca366[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x2ca366[_0x7b7e('0x1b')],function(_0x31043a){return{'model':db[_0x31043a[_0x7b7e('0x1d')]],'as':_0x31043a['as'],'attributes':_0x31043a[_0x7b7e('0x19')],'include':_0x31043a[_0x7b7e('0x1b')]?_[_0x7b7e('0x1c')](_0x31043a[_0x7b7e('0x1b')],function(_0xd5a64d){return{'model':db[_0xd5a64d[_0x7b7e('0x1d')]],'as':_0xd5a64d['as'],'attributes':_0xd5a64d[_0x7b7e('0x19')]};}):[]};}):[]};}):[]:[]})[_0x7b7e('0x9')](function(_0x116563){logger[_0x7b7e('0xa')]('ShowVtigerAccount',_0xe31336);logger[_0x7b7e('0xc')](_0x7b7e('0x1e'),_0xe31336,JSON[_0x7b7e('0xf')](_0x116563));_0x326dd2(_0x116563);})[_0x7b7e('0x13')](function(_0x36abfc){logger[_0x7b7e('0x10')](_0x7b7e('0x1e'),_0x36abfc[_0x7b7e('0x12')],_0xe31336);_0x33f9a1(_0x35602a[_0x7b7e('0x10')](0x1f4,_0x36abfc[_0x7b7e('0x12')]));});});};
\ No newline at end of file
index 8d55e3a..7ebef8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4623=['getFields','/:id/subjects','getSubjects','getDescriptions','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields'];(function(_0x5400b,_0x55943a){var _0x36a39b=function(_0x56963c){while(--_0x56963c){_0x5400b['push'](_0x5400b['shift']());}};_0x36a39b(++_0x55943a);}(_0x4623,0x111));var _0x3462=function(_0x40eee4,_0x380171){_0x40eee4=_0x40eee4-0x0;var _0x3ba92d=_0x4623[_0x40eee4];return _0x3ba92d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3462('0x0'));var timeout=require('connect-timeout');var express=require(_0x3462('0x1'));var router=express[_0x3462('0x2')]();var fs_extra=require(_0x3462('0x3'));var auth=require(_0x3462('0x4'));var interaction=require(_0x3462('0x5'));var config=require(_0x3462('0x6'));var controller=require(_0x3462('0x7'));router[_0x3462('0x8')]('/',auth[_0x3462('0x9')](),controller[_0x3462('0xa')]);router[_0x3462('0x8')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller['show']);router[_0x3462('0x8')](_0x3462('0xc'),auth['isAuthenticated'](),controller[_0x3462('0xd')]);router[_0x3462('0x8')](_0x3462('0xe'),auth[_0x3462('0x9')](),controller[_0x3462('0xf')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller[_0x3462('0x10')]);router['post']('/',auth[_0x3462('0x9')](),controller['create']);router[_0x3462('0x11')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller[_0x3462('0x12')]);router[_0x3462('0x13')](_0x3462('0xb'),auth[_0x3462('0x9')](),controller[_0x3462('0x14')]);module[_0x3462('0x15')]=router;
\ No newline at end of file
+var _0x9bd8=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','destroy','exports','multer','util','path'];(function(_0x535912,_0x3d5375){var _0x4c1803=function(_0x2febf5){while(--_0x2febf5){_0x535912['push'](_0x535912['shift']());}};_0x4c1803(++_0x3d5375);}(_0x9bd8,0x1f1));var _0x89bd=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x9bd8[_0x5dfc2a];return _0x3f1a71;};'use strict';var multer=require(_0x89bd('0x0'));var util=require(_0x89bd('0x1'));var path=require(_0x89bd('0x2'));var timeout=require('connect-timeout');var express=require(_0x89bd('0x3'));var router=express[_0x89bd('0x4')]();var fs_extra=require(_0x89bd('0x5'));var auth=require(_0x89bd('0x6'));var interaction=require(_0x89bd('0x7'));var config=require('../../config/environment');var controller=require(_0x89bd('0x8'));router[_0x89bd('0x9')]('/',auth['isAuthenticated'](),controller[_0x89bd('0xa')]);router[_0x89bd('0x9')](_0x89bd('0xb'),auth[_0x89bd('0xc')](),controller[_0x89bd('0xd')]);router[_0x89bd('0x9')]('/:id/fields',auth[_0x89bd('0xc')](),controller[_0x89bd('0xe')]);router[_0x89bd('0x9')](_0x89bd('0xf'),auth[_0x89bd('0xc')](),controller[_0x89bd('0x10')]);router[_0x89bd('0x9')](_0x89bd('0x11'),auth[_0x89bd('0xc')](),controller[_0x89bd('0x12')]);router[_0x89bd('0x13')]('/',auth[_0x89bd('0xc')](),controller['create']);router[_0x89bd('0x14')]('/:id',auth[_0x89bd('0xc')](),controller[_0x89bd('0x15')]);router[_0x89bd('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x89bd('0x17')]);module[_0x89bd('0x18')]=router;
\ No newline at end of file
index 380b8e1..42266eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde13=['sequelize','exports','STRING'];(function(_0x4d0c97,_0x254789){var _0x2a7f30=function(_0x128972){while(--_0x128972){_0x4d0c97['push'](_0x4d0c97['shift']());}};_0x2a7f30(++_0x254789);}(_0xde13,0x99));var _0x3de1=function(_0x2172e2,_0x5956cb){_0x2172e2=_0x2172e2-0x0;var _0xcf8a04=_0xde13[_0x2172e2];return _0xcf8a04;};'use strict';var Sequelize=require(_0x3de1('0x0'));module[_0x3de1('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3de1('0x2')]}};
\ No newline at end of file
+var _0x1187=['sequelize','STRING'];(function(_0x435fa1,_0x58550a){var _0x845f9f=function(_0x89867e){while(--_0x89867e){_0x435fa1['push'](_0x435fa1['shift']());}};_0x845f9f(++_0x58550a);}(_0x1187,0x158));var _0x7118=function(_0x179b7f,_0x580056){_0x179b7f=_0x179b7f-0x0;var _0x25affe=_0x1187[_0x179b7f];return _0x25affe;};'use strict';var Sequelize=require(_0x7118('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7118('0x1')]}};
\ No newline at end of file
index d293590..f9e0341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a0f=['show','create','body','params','find','findOne','VtigerField','getFields','hasOwnProperty','getSubjects','getDescriptions','nolimit','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','error','stack','name','send','map','rawAttributes','type','query','keys','intersection','model','attributes','fields','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','VtigerConfiguration','then','includeAll','include','findAll','rows','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8a0f,0x1e6));var _0xf8a0=function(_0x5874a3,_0x4f6f41){_0x5874a3=_0x5874a3-0x0;var _0x316116=_0x8a0f[_0x5874a3];return _0x316116;};'use strict';var emlformat=require(_0xf8a0('0x0'));var rimraf=require(_0xf8a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf8a0('0x2'));var rp=require(_0xf8a0('0x3'));var moment=require('moment');var BPromise=require(_0xf8a0('0x4'));var Mustache=require(_0xf8a0('0x5'));var util=require(_0xf8a0('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf8a0('0x7'));var ejs=require(_0xf8a0('0x8'));var fs=require('fs');var fs_extra=require(_0xf8a0('0x9'));var _=require(_0xf8a0('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf8a0('0xb'));var deskjs=require(_0xf8a0('0xc'));var toCsv=require(_0xf8a0('0x7'));var querystring=require(_0xf8a0('0xd'));var Papa=require(_0xf8a0('0xe'));var Redis=require(_0xf8a0('0xf'));var authService=require(_0xf8a0('0x10'));var qs=require(_0xf8a0('0x11'));var as=require(_0xf8a0('0x12'));var hardwareService=require(_0xf8a0('0x13'));var logger=require(_0xf8a0('0x14'))(_0xf8a0('0x15'));var utils=require(_0xf8a0('0x16'));var config=require(_0xf8a0('0x17'));var licenseUtil=require(_0xf8a0('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e11c1,_0x211ff3){_0x211ff3=_0x211ff3||0xcc;return function(_0x325b2a){if(_0x325b2a){return _0x4e11c1[_0xf8a0('0x19')](_0x211ff3);}return _0x4e11c1[_0xf8a0('0x1a')](_0x211ff3)[_0xf8a0('0x1b')]();};}function respondWithResult(_0x505c0d,_0x64ab3c){_0x64ab3c=_0x64ab3c||0xc8;return function(_0x34b771){if(_0x34b771){return _0x505c0d['status'](_0x64ab3c)[_0xf8a0('0x1c')](_0x34b771);}};}function respondWithFilteredResult(_0x4b5d41,_0x471d60){return function(_0x986220){if(_0x986220){var _0x28a6a7=typeof _0x471d60[_0xf8a0('0x1d')]===_0xf8a0('0x1e')&&typeof _0x471d60[_0xf8a0('0x1f')]===_0xf8a0('0x1e');var _0x353aad=_0x986220['count'];var _0x1f31a2=_0x28a6a7?0x0:_0x471d60[_0xf8a0('0x1d')];var _0x4f6904=_0x28a6a7?_0x986220[_0xf8a0('0x20')]:_0x471d60['offset']+_0x471d60[_0xf8a0('0x1f')];var _0x1cc62b;if(_0x4f6904>=_0x353aad){_0x4f6904=_0x353aad;_0x1cc62b=0xc8;}else{_0x1cc62b=0xce;}_0x4b5d41['status'](_0x1cc62b);return _0x4b5d41[_0xf8a0('0x21')](_0xf8a0('0x22'),_0x1f31a2+'-'+_0x4f6904+'/'+_0x353aad)['json'](_0x986220);}return null;};}function patchUpdates(_0x431f93){return function(_0x3ae578){try{jsonpatch['apply'](_0x3ae578,_0x431f93,!![]);}catch(_0x32b549){return BPromise['reject'](_0x32b549);}return _0x3ae578[_0xf8a0('0x23')]();};}function saveUpdates(_0x2909ec,_0x160ac8){return function(_0x2e3947){if(_0x2e3947){return _0x2e3947[_0xf8a0('0x24')](_0x2909ec)['then'](function(_0x3c99ee){return _0x3c99ee;});}return null;};}function removeEntity(_0x2d182c,_0x3a8a17){return function(_0x57c242){if(_0x57c242){return _0x57c242['destroy']()['then'](function(){_0x2d182c[_0xf8a0('0x1a')](0xcc)[_0xf8a0('0x1b')]();});}};}function handleEntityNotFound(_0x17d138,_0xab310d){return function(_0x23436f){if(!_0x23436f){_0x17d138[_0xf8a0('0x19')](0x194);}return _0x23436f;};}function handleError(_0x265694,_0x4a2129){_0x4a2129=_0x4a2129||0x1f4;return function(_0x290145){logger[_0xf8a0('0x25')](_0x290145[_0xf8a0('0x26')]);if(_0x290145[_0xf8a0('0x27')]){delete _0x290145[_0xf8a0('0x27')];}_0x265694[_0xf8a0('0x1a')](_0x4a2129)[_0xf8a0('0x28')](_0x290145);};}exports['index']=function(_0x54586f,_0x5e968e){var _0x1aa7c6={},_0x1a1971={},_0x4044f4={'count':0x0,'rows':[]};var _0x8b7b72=_[_0xf8a0('0x29')](db['VtigerConfiguration'][_0xf8a0('0x2a')],function(_0x4e94f1){return{'name':_0x4e94f1['fieldName'],'type':_0x4e94f1[_0xf8a0('0x2b')]['key']};});_0x1a1971['model']=_[_0xf8a0('0x29')](_0x8b7b72,_0xf8a0('0x27'));_0x1a1971[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x54586f[_0xf8a0('0x2c')]);_0x1a1971['filters']=_[_0xf8a0('0x2e')](_0x1a1971[_0xf8a0('0x2f')],_0x1a1971['query']);_0x1aa7c6[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x1a1971[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x1aa7c6['attributes']=_0x1aa7c6[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x1aa7c6['attributes']:_0x1a1971['model'];if(!_0x54586f['query']['hasOwnProperty']('nolimit')){_0x1aa7c6[_0xf8a0('0x1f')]=qs[_0xf8a0('0x1f')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x1f')]);_0x1aa7c6[_0xf8a0('0x1d')]=qs[_0xf8a0('0x1d')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x1d')]);}_0x1aa7c6[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x34')]);_0x1aa7c6[_0xf8a0('0x35')]=qs['filters'](_[_0xf8a0('0x36')](_0x54586f[_0xf8a0('0x2c')],_0x1a1971[_0xf8a0('0x37')]),_0x8b7b72);if(_0x54586f['query'][_0xf8a0('0x38')]){_0x1aa7c6[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x1aa7c6['where'],{'$or':_[_0xf8a0('0x29')](_0x8b7b72,function(_0x32d015){if(_0x32d015[_0xf8a0('0x2b')]!==_0xf8a0('0x3a')){var _0x1eb63e={};_0x1eb63e[_0x32d015[_0xf8a0('0x27')]]={'$like':'%'+_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x38')]+'%'};return _0x1eb63e;}})});}_0x1aa7c6=_[_0xf8a0('0x39')]({},_0x1aa7c6,_0x54586f[_0xf8a0('0x3b')]);var _0xa8fa2b={'where':_0x1aa7c6[_0xf8a0('0x35')]};return db[_0xf8a0('0x3c')]['count'](_0xa8fa2b)[_0xf8a0('0x3d')](function(_0x55674c){_0x4044f4[_0xf8a0('0x20')]=_0x55674c;if(_0x54586f[_0xf8a0('0x2c')][_0xf8a0('0x3e')]){_0x1aa7c6[_0xf8a0('0x3f')]=[{'all':!![]}];}return db[_0xf8a0('0x3c')][_0xf8a0('0x40')](_0x1aa7c6);})[_0xf8a0('0x3d')](function(_0x196c88){_0x4044f4[_0xf8a0('0x41')]=_0x196c88;return _0x4044f4;})[_0xf8a0('0x3d')](respondWithFilteredResult(_0x5e968e,_0x1aa7c6))[_0xf8a0('0x42')](handleError(_0x5e968e,null));};exports[_0xf8a0('0x43')]=function(_0x25ec6c,_0x5217ac){var _0x48511f={'raw':![],'where':{'id':_0x25ec6c['params']['id']}},_0xd8260={};_0xd8260['model']=_[_0xf8a0('0x2d')](db['VtigerConfiguration'][_0xf8a0('0x2a')]);_0xd8260[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x25ec6c[_0xf8a0('0x2c')]);_0xd8260[_0xf8a0('0x37')]=_['intersection'](_0xd8260[_0xf8a0('0x2f')],_0xd8260[_0xf8a0('0x2c')]);_0x48511f['attributes']=_[_0xf8a0('0x2e')](_0xd8260['model'],qs[_0xf8a0('0x31')](_0x25ec6c[_0xf8a0('0x2c')]['fields']));_0x48511f[_0xf8a0('0x30')]=_0x48511f['attributes'][_0xf8a0('0x32')]?_0x48511f[_0xf8a0('0x30')]:_0xd8260[_0xf8a0('0x2f')];if(_0x25ec6c[_0xf8a0('0x2c')][_0xf8a0('0x3e')]){_0x48511f[_0xf8a0('0x3f')]=[{'all':!![]}];}_0x48511f=_[_0xf8a0('0x39')]({},_0x48511f,_0x25ec6c[_0xf8a0('0x3b')]);return db[_0xf8a0('0x3c')]['find'](_0x48511f)['then'](handleEntityNotFound(_0x5217ac,null))[_0xf8a0('0x3d')](respondWithResult(_0x5217ac,null))[_0xf8a0('0x42')](handleError(_0x5217ac,null));};exports['create']=function(_0x765f5b,_0x211355){return db[_0xf8a0('0x3c')][_0xf8a0('0x44')](_0x765f5b[_0xf8a0('0x45')],{})[_0xf8a0('0x3d')](respondWithResult(_0x211355,0xc9))[_0xf8a0('0x42')](handleError(_0x211355,null));};exports[_0xf8a0('0x24')]=function(_0x1050d8,_0x34fb0a){if(_0x1050d8['body']['id']){delete _0x1050d8['body']['id'];}return db[_0xf8a0('0x3c')]['find']({'where':{'id':_0x1050d8[_0xf8a0('0x46')]['id']}})['then'](handleEntityNotFound(_0x34fb0a,null))[_0xf8a0('0x3d')](saveUpdates(_0x1050d8[_0xf8a0('0x45')],null))[_0xf8a0('0x3d')](respondWithResult(_0x34fb0a,null))[_0xf8a0('0x42')](handleError(_0x34fb0a,null));};exports['destroy']=function(_0x4cc763,_0x33e935){return db[_0xf8a0('0x3c')][_0xf8a0('0x47')]({'where':{'id':_0x4cc763['params']['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x33e935,null))[_0xf8a0('0x3d')](removeEntity(_0x33e935,null))[_0xf8a0('0x42')](handleError(_0x33e935,null));};exports['getFields']=function(_0x3042f3,_0x1918c4,_0x478177){var _0x361113={};var _0x351976={};var _0x346382;var _0x1301f6;return db[_0xf8a0('0x3c')][_0xf8a0('0x48')]({'where':{'id':_0x3042f3[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x1918c4,null))['then'](function(_0x507846){if(_0x507846){_0x346382=_0x507846;_0x351976[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db[_0xf8a0('0x49')][_0xf8a0('0x2a')]);_0x351976[_0xf8a0('0x2c')]=_['keys'](_0x3042f3[_0xf8a0('0x2c')]);_0x351976['filters']=_[_0xf8a0('0x2e')](_0x351976[_0xf8a0('0x2f')],_0x351976[_0xf8a0('0x2c')]);_0x361113[_0xf8a0('0x30')]=_['intersection'](_0x351976[_0xf8a0('0x2f')],qs['fields'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x361113[_0xf8a0('0x30')]=_0x361113[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x361113[_0xf8a0('0x30')]:_0x351976[_0xf8a0('0x2f')];_0x361113[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x34')]);_0x361113[_0xf8a0('0x35')]=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0x3042f3[_0xf8a0('0x2c')],_0x351976['filters']));if(_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x38')]){_0x361113[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x361113['where'],{'$or':_[_0xf8a0('0x29')](_0x361113[_0xf8a0('0x30')],function(_0x425732){var _0x16b11d={};_0x16b11d[_0x425732]={'$like':'%'+_0x3042f3['query']['filter']+'%'};return _0x16b11d;})});}_0x361113=_[_0xf8a0('0x39')]({},_0x361113,_0x3042f3['options']);return _0x346382[_0xf8a0('0x4a')](_0x361113);}})[_0xf8a0('0x3d')](function(_0x32ec7d){if(_0x32ec7d){_0x1301f6=_0x32ec7d[_0xf8a0('0x32')];if(!_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x4b')]('nolimit')){_0x361113[_0xf8a0('0x1f')]=qs['limit'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x1f')]);_0x361113[_0xf8a0('0x1d')]=qs['offset'](_0x3042f3[_0xf8a0('0x2c')][_0xf8a0('0x1d')]);}return _0x346382[_0xf8a0('0x4a')](_0x361113);}})[_0xf8a0('0x3d')](function(_0x299990){if(_0x299990){return _0x299990?{'count':_0x1301f6,'rows':_0x299990}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x1918c4,null))[_0xf8a0('0x42')](handleError(_0x1918c4,null));};exports[_0xf8a0('0x4c')]=function(_0xf308ea,_0x19c2c6,_0x4668fc){var _0x4876a2={};var _0x36de6a={};var _0x41258c;var _0x19e6f5;return db[_0xf8a0('0x3c')][_0xf8a0('0x48')]({'where':{'id':_0xf308ea[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x19c2c6,null))[_0xf8a0('0x3d')](function(_0x4c1fda){if(_0x4c1fda){_0x41258c=_0x4c1fda;_0x36de6a[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db[_0xf8a0('0x49')][_0xf8a0('0x2a')]);_0x36de6a[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0xf308ea[_0xf8a0('0x2c')]);_0x36de6a['filters']=_[_0xf8a0('0x2e')](_0x36de6a['model'],_0x36de6a[_0xf8a0('0x2c')]);_0x4876a2[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x36de6a[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0xf308ea[_0xf8a0('0x2c')]['fields']));_0x4876a2[_0xf8a0('0x30')]=_0x4876a2['attributes'][_0xf8a0('0x32')]?_0x4876a2[_0xf8a0('0x30')]:_0x36de6a[_0xf8a0('0x2f')];_0x4876a2[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0xf308ea['query'][_0xf8a0('0x34')]);_0x4876a2[_0xf8a0('0x35')]=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0xf308ea[_0xf8a0('0x2c')],_0x36de6a[_0xf8a0('0x37')]));if(_0xf308ea['query'][_0xf8a0('0x38')]){_0x4876a2[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x4876a2[_0xf8a0('0x35')],{'$or':_[_0xf8a0('0x29')](_0x4876a2['attributes'],function(_0x25142c){var _0x38d53c={};_0x38d53c[_0x25142c]={'$like':'%'+_0xf308ea[_0xf8a0('0x2c')]['filter']+'%'};return _0x38d53c;})});}_0x4876a2=_[_0xf8a0('0x39')]({},_0x4876a2,_0xf308ea[_0xf8a0('0x3b')]);return _0x41258c[_0xf8a0('0x4c')](_0x4876a2);}})[_0xf8a0('0x3d')](function(_0x4254cf){if(_0x4254cf){_0x19e6f5=_0x4254cf[_0xf8a0('0x32')];if(!_0xf308ea['query'][_0xf8a0('0x4b')]('nolimit')){_0x4876a2[_0xf8a0('0x1f')]=qs['limit'](_0xf308ea[_0xf8a0('0x2c')]['limit']);_0x4876a2[_0xf8a0('0x1d')]=qs[_0xf8a0('0x1d')](_0xf308ea['query'][_0xf8a0('0x1d')]);}return _0x41258c[_0xf8a0('0x4c')](_0x4876a2);}})[_0xf8a0('0x3d')](function(_0x544cc1){if(_0x544cc1){return _0x544cc1?{'count':_0x19e6f5,'rows':_0x544cc1}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x19c2c6,null))[_0xf8a0('0x42')](handleError(_0x19c2c6,null));};exports[_0xf8a0('0x4d')]=function(_0x26611d,_0x3b45b9,_0x4658fd){var _0x54122d={};var _0x2ebb40={};var _0x16e12e;var _0x3a503d;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x26611d[_0xf8a0('0x46')]['id']}})[_0xf8a0('0x3d')](handleEntityNotFound(_0x3b45b9,null))[_0xf8a0('0x3d')](function(_0x56f750){if(_0x56f750){_0x16e12e=_0x56f750;_0x2ebb40[_0xf8a0('0x2f')]=_[_0xf8a0('0x2d')](db['VtigerField']['rawAttributes']);_0x2ebb40[_0xf8a0('0x2c')]=_[_0xf8a0('0x2d')](_0x26611d[_0xf8a0('0x2c')]);_0x2ebb40[_0xf8a0('0x37')]=_[_0xf8a0('0x2e')](_0x2ebb40[_0xf8a0('0x2f')],_0x2ebb40[_0xf8a0('0x2c')]);_0x54122d[_0xf8a0('0x30')]=_[_0xf8a0('0x2e')](_0x2ebb40[_0xf8a0('0x2f')],qs[_0xf8a0('0x31')](_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x31')]));_0x54122d[_0xf8a0('0x30')]=_0x54122d[_0xf8a0('0x30')][_0xf8a0('0x32')]?_0x54122d['attributes']:_0x2ebb40['model'];_0x54122d[_0xf8a0('0x33')]=qs[_0xf8a0('0x34')](_0x26611d[_0xf8a0('0x2c')]['sort']);_0x54122d['where']=qs[_0xf8a0('0x37')](_[_0xf8a0('0x36')](_0x26611d[_0xf8a0('0x2c')],_0x2ebb40[_0xf8a0('0x37')]));if(_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x38')]){_0x54122d[_0xf8a0('0x35')]=_[_0xf8a0('0x39')](_0x54122d[_0xf8a0('0x35')],{'$or':_[_0xf8a0('0x29')](_0x54122d['attributes'],function(_0x5607cc){var _0x190f92={};_0x190f92[_0x5607cc]={'$like':'%'+_0x26611d[_0xf8a0('0x2c')]['filter']+'%'};return _0x190f92;})});}_0x54122d=_[_0xf8a0('0x39')]({},_0x54122d,_0x26611d['options']);return _0x16e12e['getDescriptions'](_0x54122d);}})[_0xf8a0('0x3d')](function(_0x59e821){if(_0x59e821){_0x3a503d=_0x59e821['length'];if(!_0x26611d[_0xf8a0('0x2c')][_0xf8a0('0x4b')](_0xf8a0('0x4e'))){_0x54122d[_0xf8a0('0x1f')]=qs['limit'](_0x26611d[_0xf8a0('0x2c')]['limit']);_0x54122d['offset']=qs[_0xf8a0('0x1d')](_0x26611d['query'][_0xf8a0('0x1d')]);}return _0x16e12e[_0xf8a0('0x4d')](_0x54122d);}})[_0xf8a0('0x3d')](function(_0x1e2506){if(_0x1e2506){return _0x1e2506?{'count':_0x3a503d,'rows':_0x1e2506}:null;}})[_0xf8a0('0x3d')](respondWithResult(_0x3b45b9,null))[_0xf8a0('0x42')](handleError(_0x3b45b9,null));};
\ No newline at end of file
+var _0xf73a=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','body','VtigerConfiguration','VtigerField','getFields','getSubjects','findOne','getDescriptions','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../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','name','send','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x55515d,_0x16538d){var _0x1426de=function(_0x32cd05){while(--_0x32cd05){_0x55515d['push'](_0x55515d['shift']());}};_0x1426de(++_0x16538d);}(_0xf73a,0x115));var _0xaf73=function(_0x206931,_0x32f7f9){_0x206931=_0x206931-0x0;var _0x544305=_0xf73a[_0x206931];return _0x544305;};'use strict';var emlformat=require(_0xaf73('0x0'));var rimraf=require(_0xaf73('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaf73('0x2'));var rp=require('request-promise');var moment=require(_0xaf73('0x3'));var BPromise=require(_0xaf73('0x4'));var Mustache=require(_0xaf73('0x5'));var util=require(_0xaf73('0x6'));var path=require(_0xaf73('0x7'));var sox=require(_0xaf73('0x8'));var csv=require(_0xaf73('0x9'));var ejs=require(_0xaf73('0xa'));var fs=require('fs');var fs_extra=require(_0xaf73('0xb'));var _=require(_0xaf73('0xc'));var squel=require(_0xaf73('0xd'));var crypto=require('crypto');var jsforce=require(_0xaf73('0xe'));var deskjs=require(_0xaf73('0xf'));var toCsv=require(_0xaf73('0x9'));var querystring=require(_0xaf73('0x10'));var Papa=require(_0xaf73('0x11'));var Redis=require('ioredis');var authService=require(_0xaf73('0x12'));var qs=require(_0xaf73('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xaf73('0x14'))(_0xaf73('0x15'));var utils=require(_0xaf73('0x16'));var config=require(_0xaf73('0x17'));var licenseUtil=require(_0xaf73('0x18'));var db=require(_0xaf73('0x19'))['db'];function respondWithStatusCode(_0x5092af,_0x1c8050){_0x1c8050=_0x1c8050||0xcc;return function(_0xdbb9ec){if(_0xdbb9ec){return _0x5092af[_0xaf73('0x1a')](_0x1c8050);}return _0x5092af[_0xaf73('0x1b')](_0x1c8050)[_0xaf73('0x1c')]();};}function respondWithResult(_0x13e1f7,_0x4c1d8d){_0x4c1d8d=_0x4c1d8d||0xc8;return function(_0x3c1ca8){if(_0x3c1ca8){return _0x13e1f7[_0xaf73('0x1b')](_0x4c1d8d)[_0xaf73('0x1d')](_0x3c1ca8);}};}function respondWithFilteredResult(_0x2818ac,_0x38b8c0){return function(_0x18b01c){if(_0x18b01c){var _0x54fa0e=typeof _0x38b8c0[_0xaf73('0x1e')]===_0xaf73('0x1f')&&typeof _0x38b8c0[_0xaf73('0x20')]===_0xaf73('0x1f');var _0x48c7e7=_0x18b01c[_0xaf73('0x21')];var _0x503cb5=_0x54fa0e?0x0:_0x38b8c0[_0xaf73('0x1e')];var _0x2b04da=_0x54fa0e?_0x18b01c[_0xaf73('0x21')]:_0x38b8c0['offset']+_0x38b8c0[_0xaf73('0x20')];var _0x464792;if(_0x2b04da>=_0x48c7e7){_0x2b04da=_0x48c7e7;_0x464792=0xc8;}else{_0x464792=0xce;}_0x2818ac['status'](_0x464792);return _0x2818ac[_0xaf73('0x22')](_0xaf73('0x23'),_0x503cb5+'-'+_0x2b04da+'/'+_0x48c7e7)[_0xaf73('0x1d')](_0x18b01c);}return null;};}function patchUpdates(_0x2e4f19){return function(_0x4dc39a){try{jsonpatch[_0xaf73('0x24')](_0x4dc39a,_0x2e4f19,!![]);}catch(_0x296381){return BPromise[_0xaf73('0x25')](_0x296381);}return _0x4dc39a[_0xaf73('0x26')]();};}function saveUpdates(_0x5b1827,_0x511c78){return function(_0x5b7a5c){if(_0x5b7a5c){return _0x5b7a5c[_0xaf73('0x27')](_0x5b1827)[_0xaf73('0x28')](function(_0x3a43fe){return _0x3a43fe;});}return null;};}function removeEntity(_0x14d89a,_0x2e7699){return function(_0x3058d3){if(_0x3058d3){return _0x3058d3[_0xaf73('0x29')]()[_0xaf73('0x28')](function(){_0x14d89a[_0xaf73('0x1b')](0xcc)[_0xaf73('0x1c')]();});}};}function handleEntityNotFound(_0x2b82a3,_0x51a0c0){return function(_0x57c078){if(!_0x57c078){_0x2b82a3[_0xaf73('0x1a')](0x194);}return _0x57c078;};}function handleError(_0x687146,_0x53f5f4){_0x53f5f4=_0x53f5f4||0x1f4;return function(_0x124d11){logger['error'](_0x124d11['stack']);if(_0x124d11[_0xaf73('0x2a')]){delete _0x124d11['name'];}_0x687146[_0xaf73('0x1b')](_0x53f5f4)[_0xaf73('0x2b')](_0x124d11);};}exports['index']=function(_0x1216d9,_0x3885f8){var _0x57bfba={},_0x52731c={},_0x3330d3={'count':0x0,'rows':[]};var _0x46877f=_['map'](db['VtigerConfiguration'][_0xaf73('0x2c')],function(_0x16bb0f){return{'name':_0x16bb0f[_0xaf73('0x2d')],'type':_0x16bb0f[_0xaf73('0x2e')][_0xaf73('0x2f')]};});_0x52731c[_0xaf73('0x30')]=_['map'](_0x46877f,_0xaf73('0x2a'));_0x52731c[_0xaf73('0x31')]=_[_0xaf73('0x32')](_0x1216d9[_0xaf73('0x31')]);_0x52731c[_0xaf73('0x33')]=_[_0xaf73('0x34')](_0x52731c[_0xaf73('0x30')],_0x52731c[_0xaf73('0x31')]);_0x57bfba[_0xaf73('0x35')]=_[_0xaf73('0x34')](_0x52731c[_0xaf73('0x30')],qs[_0xaf73('0x36')](_0x1216d9[_0xaf73('0x31')][_0xaf73('0x36')]));_0x57bfba['attributes']=_0x57bfba[_0xaf73('0x35')][_0xaf73('0x37')]?_0x57bfba[_0xaf73('0x35')]:_0x52731c[_0xaf73('0x30')];if(!_0x1216d9[_0xaf73('0x31')][_0xaf73('0x38')](_0xaf73('0x39'))){_0x57bfba[_0xaf73('0x20')]=qs[_0xaf73('0x20')](_0x1216d9[_0xaf73('0x31')]['limit']);_0x57bfba[_0xaf73('0x1e')]=qs[_0xaf73('0x1e')](_0x1216d9[_0xaf73('0x31')][_0xaf73('0x1e')]);}_0x57bfba[_0xaf73('0x3a')]=qs[_0xaf73('0x3b')](_0x1216d9[_0xaf73('0x31')][_0xaf73('0x3b')]);_0x57bfba[_0xaf73('0x3c')]=qs['filters'](_[_0xaf73('0x3d')](_0x1216d9['query'],_0x52731c[_0xaf73('0x33')]),_0x46877f);if(_0x1216d9[_0xaf73('0x31')][_0xaf73('0x3e')]){_0x57bfba[_0xaf73('0x3c')]=_[_0xaf73('0x3f')](_0x57bfba['where'],{'$or':_[_0xaf73('0x40')](_0x46877f,function(_0x4716cb){if(_0x4716cb[_0xaf73('0x2e')]!==_0xaf73('0x41')){var _0x2c59d7={};_0x2c59d7[_0x4716cb['name']]={'$like':'%'+_0x1216d9[_0xaf73('0x31')]['filter']+'%'};return _0x2c59d7;}})});}_0x57bfba=_['merge']({},_0x57bfba,_0x1216d9['options']);var _0x4ad6ef={'where':_0x57bfba[_0xaf73('0x3c')]};return db['VtigerConfiguration']['count'](_0x4ad6ef)['then'](function(_0x525358){_0x3330d3[_0xaf73('0x21')]=_0x525358;if(_0x1216d9[_0xaf73('0x31')][_0xaf73('0x42')]){_0x57bfba[_0xaf73('0x43')]=[{'all':!![]}];}return db['VtigerConfiguration']['findAll'](_0x57bfba);})['then'](function(_0x4dfc04){_0x3330d3[_0xaf73('0x44')]=_0x4dfc04;return _0x3330d3;})[_0xaf73('0x28')](respondWithFilteredResult(_0x3885f8,_0x57bfba))[_0xaf73('0x45')](handleError(_0x3885f8,null));};exports[_0xaf73('0x46')]=function(_0x18da13,_0x5af381){var _0x378877={'raw':![],'where':{'id':_0x18da13[_0xaf73('0x47')]['id']}},_0x370806={};_0x370806[_0xaf73('0x30')]=_[_0xaf73('0x32')](db['VtigerConfiguration'][_0xaf73('0x2c')]);_0x370806[_0xaf73('0x31')]=_[_0xaf73('0x32')](_0x18da13[_0xaf73('0x31')]);_0x370806[_0xaf73('0x33')]=_['intersection'](_0x370806['model'],_0x370806['query']);_0x378877[_0xaf73('0x35')]=_[_0xaf73('0x34')](_0x370806[_0xaf73('0x30')],qs[_0xaf73('0x36')](_0x18da13[_0xaf73('0x31')]['fields']));_0x378877[_0xaf73('0x35')]=_0x378877[_0xaf73('0x35')]['length']?_0x378877['attributes']:_0x370806[_0xaf73('0x30')];if(_0x18da13[_0xaf73('0x31')][_0xaf73('0x42')]){_0x378877[_0xaf73('0x43')]=[{'all':!![]}];}_0x378877=_[_0xaf73('0x3f')]({},_0x378877,_0x18da13[_0xaf73('0x48')]);return db['VtigerConfiguration'][_0xaf73('0x49')](_0x378877)[_0xaf73('0x28')](handleEntityNotFound(_0x5af381,null))['then'](respondWithResult(_0x5af381,null))[_0xaf73('0x45')](handleError(_0x5af381,null));};exports[_0xaf73('0x4a')]=function(_0x58fb5f,_0x38e8bc){return db['VtigerConfiguration'][_0xaf73('0x4a')](_0x58fb5f[_0xaf73('0x4b')],{})['then'](respondWithResult(_0x38e8bc,0xc9))[_0xaf73('0x45')](handleError(_0x38e8bc,null));};exports[_0xaf73('0x27')]=function(_0x495b80,_0x2969c5){if(_0x495b80[_0xaf73('0x4b')]['id']){delete _0x495b80[_0xaf73('0x4b')]['id'];}return db[_0xaf73('0x4c')][_0xaf73('0x49')]({'where':{'id':_0x495b80[_0xaf73('0x47')]['id']}})[_0xaf73('0x28')](handleEntityNotFound(_0x2969c5,null))[_0xaf73('0x28')](saveUpdates(_0x495b80['body'],null))[_0xaf73('0x28')](respondWithResult(_0x2969c5,null))[_0xaf73('0x45')](handleError(_0x2969c5,null));};exports[_0xaf73('0x29')]=function(_0x17838c,_0x5ecc6c){return db[_0xaf73('0x4c')]['find']({'where':{'id':_0x17838c[_0xaf73('0x47')]['id']}})[_0xaf73('0x28')](handleEntityNotFound(_0x5ecc6c,null))[_0xaf73('0x28')](removeEntity(_0x5ecc6c,null))[_0xaf73('0x45')](handleError(_0x5ecc6c,null));};exports['getFields']=function(_0x1bd16a,_0x40be29,_0x129f76){var _0x573de1={};var _0x10b57f={};var _0x16e215;var _0x1d4d3f;return db[_0xaf73('0x4c')]['findOne']({'where':{'id':_0x1bd16a[_0xaf73('0x47')]['id']}})[_0xaf73('0x28')](handleEntityNotFound(_0x40be29,null))[_0xaf73('0x28')](function(_0x719354){if(_0x719354){_0x16e215=_0x719354;_0x10b57f['model']=_[_0xaf73('0x32')](db[_0xaf73('0x4d')][_0xaf73('0x2c')]);_0x10b57f[_0xaf73('0x31')]=_[_0xaf73('0x32')](_0x1bd16a[_0xaf73('0x31')]);_0x10b57f[_0xaf73('0x33')]=_[_0xaf73('0x34')](_0x10b57f[_0xaf73('0x30')],_0x10b57f[_0xaf73('0x31')]);_0x573de1[_0xaf73('0x35')]=_[_0xaf73('0x34')](_0x10b57f['model'],qs[_0xaf73('0x36')](_0x1bd16a[_0xaf73('0x31')][_0xaf73('0x36')]));_0x573de1[_0xaf73('0x35')]=_0x573de1[_0xaf73('0x35')]['length']?_0x573de1[_0xaf73('0x35')]:_0x10b57f[_0xaf73('0x30')];_0x573de1[_0xaf73('0x3a')]=qs[_0xaf73('0x3b')](_0x1bd16a[_0xaf73('0x31')][_0xaf73('0x3b')]);_0x573de1[_0xaf73('0x3c')]=qs[_0xaf73('0x33')](_[_0xaf73('0x3d')](_0x1bd16a[_0xaf73('0x31')],_0x10b57f[_0xaf73('0x33')]));if(_0x1bd16a[_0xaf73('0x31')][_0xaf73('0x3e')]){_0x573de1[_0xaf73('0x3c')]=_['merge'](_0x573de1[_0xaf73('0x3c')],{'$or':_['map'](_0x573de1[_0xaf73('0x35')],function(_0x17ee8b){var _0x318ce7={};_0x318ce7[_0x17ee8b]={'$like':'%'+_0x1bd16a[_0xaf73('0x31')]['filter']+'%'};return _0x318ce7;})});}_0x573de1=_[_0xaf73('0x3f')]({},_0x573de1,_0x1bd16a[_0xaf73('0x48')]);return _0x16e215[_0xaf73('0x4e')](_0x573de1);}})['then'](function(_0x401e6d){if(_0x401e6d){_0x1d4d3f=_0x401e6d[_0xaf73('0x37')];if(!_0x1bd16a['query']['hasOwnProperty'](_0xaf73('0x39'))){_0x573de1[_0xaf73('0x20')]=qs[_0xaf73('0x20')](_0x1bd16a[_0xaf73('0x31')]['limit']);_0x573de1[_0xaf73('0x1e')]=qs['offset'](_0x1bd16a[_0xaf73('0x31')][_0xaf73('0x1e')]);}return _0x16e215[_0xaf73('0x4e')](_0x573de1);}})[_0xaf73('0x28')](function(_0x4f253b){if(_0x4f253b){return _0x4f253b?{'count':_0x1d4d3f,'rows':_0x4f253b}:null;}})[_0xaf73('0x28')](respondWithResult(_0x40be29,null))[_0xaf73('0x45')](handleError(_0x40be29,null));};exports[_0xaf73('0x4f')]=function(_0x86877a,_0x5f6fbd,_0x15cbaa){var _0x3590e6={};var _0x171eaa={};var _0xb89f54;var _0xacd32b;return db['VtigerConfiguration'][_0xaf73('0x50')]({'where':{'id':_0x86877a[_0xaf73('0x47')]['id']}})['then'](handleEntityNotFound(_0x5f6fbd,null))[_0xaf73('0x28')](function(_0x279ad1){if(_0x279ad1){_0xb89f54=_0x279ad1;_0x171eaa[_0xaf73('0x30')]=_['keys'](db[_0xaf73('0x4d')]['rawAttributes']);_0x171eaa[_0xaf73('0x31')]=_['keys'](_0x86877a[_0xaf73('0x31')]);_0x171eaa[_0xaf73('0x33')]=_[_0xaf73('0x34')](_0x171eaa[_0xaf73('0x30')],_0x171eaa[_0xaf73('0x31')]);_0x3590e6[_0xaf73('0x35')]=_['intersection'](_0x171eaa[_0xaf73('0x30')],qs[_0xaf73('0x36')](_0x86877a[_0xaf73('0x31')][_0xaf73('0x36')]));_0x3590e6[_0xaf73('0x35')]=_0x3590e6['attributes'][_0xaf73('0x37')]?_0x3590e6['attributes']:_0x171eaa['model'];_0x3590e6[_0xaf73('0x3a')]=qs[_0xaf73('0x3b')](_0x86877a[_0xaf73('0x31')][_0xaf73('0x3b')]);_0x3590e6[_0xaf73('0x3c')]=qs[_0xaf73('0x33')](_['pick'](_0x86877a[_0xaf73('0x31')],_0x171eaa['filters']));if(_0x86877a['query']['filter']){_0x3590e6[_0xaf73('0x3c')]=_[_0xaf73('0x3f')](_0x3590e6[_0xaf73('0x3c')],{'$or':_[_0xaf73('0x40')](_0x3590e6[_0xaf73('0x35')],function(_0x2fb1bc){var _0x3dd373={};_0x3dd373[_0x2fb1bc]={'$like':'%'+_0x86877a[_0xaf73('0x31')]['filter']+'%'};return _0x3dd373;})});}_0x3590e6=_[_0xaf73('0x3f')]({},_0x3590e6,_0x86877a[_0xaf73('0x48')]);return _0xb89f54[_0xaf73('0x4f')](_0x3590e6);}})[_0xaf73('0x28')](function(_0x40d0e1){if(_0x40d0e1){_0xacd32b=_0x40d0e1['length'];if(!_0x86877a[_0xaf73('0x31')][_0xaf73('0x38')]('nolimit')){_0x3590e6['limit']=qs[_0xaf73('0x20')](_0x86877a[_0xaf73('0x31')][_0xaf73('0x20')]);_0x3590e6[_0xaf73('0x1e')]=qs[_0xaf73('0x1e')](_0x86877a[_0xaf73('0x31')][_0xaf73('0x1e')]);}return _0xb89f54['getSubjects'](_0x3590e6);}})[_0xaf73('0x28')](function(_0x25a3ec){if(_0x25a3ec){return _0x25a3ec?{'count':_0xacd32b,'rows':_0x25a3ec}:null;}})['then'](respondWithResult(_0x5f6fbd,null))['catch'](handleError(_0x5f6fbd,null));};exports[_0xaf73('0x51')]=function(_0x283352,_0xa301bd,_0x13b001){var _0x32637d={};var _0x1c4356={};var _0x344379;var _0x2548f3;return db[_0xaf73('0x4c')][_0xaf73('0x50')]({'where':{'id':_0x283352[_0xaf73('0x47')]['id']}})[_0xaf73('0x28')](handleEntityNotFound(_0xa301bd,null))['then'](function(_0x4e3737){if(_0x4e3737){_0x344379=_0x4e3737;_0x1c4356[_0xaf73('0x30')]=_[_0xaf73('0x32')](db[_0xaf73('0x4d')][_0xaf73('0x2c')]);_0x1c4356[_0xaf73('0x31')]=_[_0xaf73('0x32')](_0x283352[_0xaf73('0x31')]);_0x1c4356['filters']=_['intersection'](_0x1c4356['model'],_0x1c4356['query']);_0x32637d['attributes']=_[_0xaf73('0x34')](_0x1c4356['model'],qs['fields'](_0x283352[_0xaf73('0x31')]['fields']));_0x32637d[_0xaf73('0x35')]=_0x32637d[_0xaf73('0x35')][_0xaf73('0x37')]?_0x32637d[_0xaf73('0x35')]:_0x1c4356['model'];_0x32637d['order']=qs['sort'](_0x283352[_0xaf73('0x31')]['sort']);_0x32637d[_0xaf73('0x3c')]=qs[_0xaf73('0x33')](_[_0xaf73('0x3d')](_0x283352['query'],_0x1c4356[_0xaf73('0x33')]));if(_0x283352[_0xaf73('0x31')][_0xaf73('0x3e')]){_0x32637d['where']=_['merge'](_0x32637d['where'],{'$or':_[_0xaf73('0x40')](_0x32637d[_0xaf73('0x35')],function(_0x8e786a){var _0x1374ec={};_0x1374ec[_0x8e786a]={'$like':'%'+_0x283352[_0xaf73('0x31')][_0xaf73('0x3e')]+'%'};return _0x1374ec;})});}_0x32637d=_[_0xaf73('0x3f')]({},_0x32637d,_0x283352['options']);return _0x344379['getDescriptions'](_0x32637d);}})[_0xaf73('0x28')](function(_0x5b0cf8){if(_0x5b0cf8){_0x2548f3=_0x5b0cf8[_0xaf73('0x37')];if(!_0x283352[_0xaf73('0x31')]['hasOwnProperty']('nolimit')){_0x32637d[_0xaf73('0x20')]=qs[_0xaf73('0x20')](_0x283352[_0xaf73('0x31')]['limit']);_0x32637d[_0xaf73('0x1e')]=qs[_0xaf73('0x1e')](_0x283352[_0xaf73('0x31')][_0xaf73('0x1e')]);}return _0x344379[_0xaf73('0x51')](_0x32637d);}})[_0xaf73('0x28')](function(_0xaafc52){if(_0xaafc52){return _0xaafc52?{'count':_0x2548f3,'rows':_0xaafc52}:null;}})[_0xaf73('0x28')](respondWithResult(_0xa301bd,null))[_0xaf73('0x45')](handleError(_0xa301bd,null));};
\ No newline at end of file
index 5159964..3c2df72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27f=['util','api','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','VtigerConfiguration','lodash'];(function(_0x5cff65,_0x1b40de){var _0x45ec8a=function(_0x2c7937){while(--_0x2c7937){_0x5cff65['push'](_0x5cff65['shift']());}};_0x45ec8a(++_0x1b40de);}(_0xb27f,0xd1));var _0xfb27=function(_0x520964,_0x4e13c4){_0x520964=_0x520964-0x0;var _0x29f4e0=_0xb27f[_0x520964];return _0x29f4e0;};'use strict';var _=require(_0xfb27('0x0'));var util=require(_0xfb27('0x1'));var logger=require('../../config/logger')(_0xfb27('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfb27('0x3'));var fs=require('fs');var path=require(_0xfb27('0x4'));var rimraf=require(_0xfb27('0x5'));var config=require(_0xfb27('0x6'));var attributes=require(_0xfb27('0x7'));module[_0xfb27('0x8')]=function(_0x46f8c9,_0x329bad){return _0x46f8c9['define'](_0xfb27('0x9'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde4e=['define','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./intVtigerConfiguration.attributes'];(function(_0xdee7ec,_0x29d552){var _0x1879b6=function(_0x3a3e13){while(--_0x3a3e13){_0xdee7ec['push'](_0xdee7ec['shift']());}};_0x1879b6(++_0x29d552);}(_0xde4e,0x153));var _0xede4=function(_0x29987b,_0x1bd046){_0x29987b=_0x29987b-0x0;var _0x4fcde2=_0xde4e[_0x29987b];return _0x4fcde2;};'use strict';var _=require(_0xede4('0x0'));var util=require(_0xede4('0x1'));var logger=require(_0xede4('0x2'))('api');var moment=require(_0xede4('0x3'));var BPromise=require(_0xede4('0x4'));var rp=require(_0xede4('0x5'));var fs=require('fs');var path=require(_0xede4('0x6'));var rimraf=require(_0xede4('0x7'));var config=require('../../config/environment');var attributes=require(_0xede4('0x8'));module['exports']=function(_0x19acda,_0x4a6515){return _0x19acda[_0xede4('0x9')](_0xede4('0xa'),attributes,{'tableName':_0xede4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f92b16e..a147210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa101=['lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x3354ac,_0x1ddce2){var _0x5547da=function(_0x227722){while(--_0x227722){_0x3354ac['push'](_0x3354ac['shift']());}};_0x5547da(++_0x1ddce2);}(_0xa101,0x154));var _0x1a10=function(_0xc40b9f,_0x17ec1f){_0xc40b9f=_0xc40b9f-0x0;var _0x535b9c=_0xa101[_0xc40b9f];return _0x535b9c;};'use strict';var _=require(_0x1a10('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1a10('0x1'));var rs=require(_0x1a10('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a10('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1a10('0x4'))(_0x1a10('0x5'));var config=require('../../config/environment');var jayson=require(_0x1a10('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x545f4e,_0x54bf9b,_0x126bef){return new BPromise(function(_0x32dee4,_0x5bf290){return client[_0x1a10('0x7')](_0x545f4e,_0x126bef)[_0x1a10('0x8')](function(_0xcdd86){logger[_0x1a10('0x9')](_0x1a10('0xa'),_0x54bf9b,_0x1a10('0xb'));logger[_0x1a10('0xc')](_0x1a10('0xd'),_0x54bf9b,_0x1a10('0xb'),JSON[_0x1a10('0xe')](_0xcdd86));if(_0xcdd86['error']){if(_0xcdd86[_0x1a10('0xf')][_0x1a10('0x10')]===0x1f4){logger[_0x1a10('0xf')](_0x1a10('0xa'),_0x54bf9b,_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);return _0x5bf290(_0xcdd86['error'][_0x1a10('0x11')]);}logger['error'](_0x1a10('0xa'),_0x54bf9b,_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);return _0x32dee4(_0xcdd86[_0x1a10('0xf')][_0x1a10('0x11')]);}else{logger[_0x1a10('0x9')](_0x1a10('0xa'),_0x54bf9b,'request\x20sent');_0x32dee4(_0xcdd86[_0x1a10('0x12')]['message']);}})[_0x1a10('0x13')](function(_0x28e932){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x54bf9b,_0x28e932);_0x5bf290(_0x28e932);});});}
\ No newline at end of file
+var _0x7341=['jayson/promise','client','then','info','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','VtigerConfiguration,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x7341,0x157));var _0x1734=function(_0x134518,_0x8c5c84){_0x134518=_0x134518-0x0;var _0x6eb8dd=_0x7341[_0x134518];return _0x6eb8dd;};'use strict';var _=require(_0x1734('0x0'));var util=require('util');var moment=require(_0x1734('0x1'));var BPromise=require(_0x1734('0x2'));var rs=require(_0x1734('0x3'));var fs=require('fs');var Redis=require(_0x1734('0x4'));var db=require(_0x1734('0x5'))['db'];var utils=require(_0x1734('0x6'));var logger=require(_0x1734('0x7'))(_0x1734('0x8'));var config=require('../../config/environment');var jayson=require(_0x1734('0x9'));var client=jayson[_0x1734('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bb34e,_0x4951f3,_0xd80030){return new BPromise(function(_0x44c22a,_0x4c4afd){return client['request'](_0x5bb34e,_0xd80030)[_0x1734('0xb')](function(_0x1b20b9){logger[_0x1734('0xc')]('VtigerConfiguration,\x20%s,\x20%s',_0x4951f3,_0x1734('0xd'));logger[_0x1734('0xe')](_0x1734('0xf'),_0x4951f3,_0x1734('0xd'),JSON['stringify'](_0x1b20b9));if(_0x1b20b9['error']){if(_0x1b20b9[_0x1734('0x10')][_0x1734('0x11')]===0x1f4){logger[_0x1734('0x10')](_0x1734('0x12'),_0x4951f3,_0x1b20b9[_0x1734('0x10')][_0x1734('0x13')]);return _0x4c4afd(_0x1b20b9[_0x1734('0x10')][_0x1734('0x13')]);}logger[_0x1734('0x10')](_0x1734('0x12'),_0x4951f3,_0x1b20b9[_0x1734('0x10')][_0x1734('0x13')]);return _0x44c22a(_0x1b20b9[_0x1734('0x10')][_0x1734('0x13')]);}else{logger[_0x1734('0xc')](_0x1734('0x12'),_0x4951f3,_0x1734('0xd'));_0x44c22a(_0x1b20b9[_0x1734('0x14')][_0x1734('0x13')]);}})[_0x1734('0x15')](function(_0x40cb7b){logger[_0x1734('0x10')](_0x1734('0x12'),_0x4951f3,_0x40cb7b);_0x4c4afd(_0x40cb7b);});});}
\ No newline at end of file
index 6d75f49..cf3c7bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf51=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intVtigerField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x20e76e,_0x35ae19){var _0x5a9049=function(_0x17e17e){while(--_0x17e17e){_0x20e76e['push'](_0x20e76e['shift']());}};_0x5a9049(++_0x35ae19);}(_0xbf51,0x167));var _0x1bf5=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xbf51[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require(_0x1bf5('0x0'));var util=require(_0x1bf5('0x1'));var path=require(_0x1bf5('0x2'));var timeout=require(_0x1bf5('0x3'));var express=require(_0x1bf5('0x4'));var router=express[_0x1bf5('0x5')]();var fs_extra=require(_0x1bf5('0x6'));var auth=require(_0x1bf5('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1bf5('0x8'));router[_0x1bf5('0x9')]('/',auth[_0x1bf5('0xa')](),controller[_0x1bf5('0xb')]);router['get'](_0x1bf5('0xc'),auth['isAuthenticated'](),controller[_0x1bf5('0xd')]);router[_0x1bf5('0xe')]('/',auth[_0x1bf5('0xa')](),controller[_0x1bf5('0xf')]);router[_0x1bf5('0x10')](_0x1bf5('0xc'),auth[_0x1bf5('0xa')](),controller[_0x1bf5('0x11')]);router[_0x1bf5('0x12')](_0x1bf5('0xc'),auth[_0x1bf5('0xa')](),controller[_0x1bf5('0x13')]);module[_0x1bf5('0x14')]=router;
\ No newline at end of file
+var _0xc004=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','post','update','delete','destroy','exports','multer','path'];(function(_0x2ffb3d,_0x1db261){var _0x363180=function(_0x1d77ad){while(--_0x1d77ad){_0x2ffb3d['push'](_0x2ffb3d['shift']());}};_0x363180(++_0x1db261);}(_0xc004,0x157));var _0x4c00=function(_0x3e6b2f,_0x1ffa07){_0x3e6b2f=_0x3e6b2f-0x0;var _0x323215=_0xc004[_0x3e6b2f];return _0x323215;};'use strict';var multer=require(_0x4c00('0x0'));var util=require('util');var path=require(_0x4c00('0x1'));var timeout=require(_0x4c00('0x2'));var express=require(_0x4c00('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4c00('0x4'));var interaction=require(_0x4c00('0x5'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router[_0x4c00('0x6')]('/',auth[_0x4c00('0x7')](),controller[_0x4c00('0x8')]);router[_0x4c00('0x6')](_0x4c00('0x9'),auth[_0x4c00('0x7')](),controller['show']);router[_0x4c00('0xa')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x4c00('0x9'),auth[_0x4c00('0x7')](),controller[_0x4c00('0xb')]);router[_0x4c00('0xc')](_0x4c00('0x9'),auth['isAuthenticated'](),controller[_0x4c00('0xd')]);module[_0x4c00('0xe')]=router;
\ No newline at end of file
index 41e176b..33e7d1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8100=['variable','customVariable','keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0xdabb35,_0x252235){var _0x1b8e97=function(_0x341116){while(--_0x341116){_0xdabb35['push'](_0xdabb35['shift']());}};_0x1b8e97(++_0x252235);}(_0x8100,0x1e2));var _0x0810=function(_0xe4848d,_0x5e6e4a){_0xe4848d=_0xe4848d-0x0;var _0xed9c92=_0x8100[_0xe4848d];return _0xed9c92;};'use strict';var Sequelize=require(_0x0810('0x0'));module[_0x0810('0x1')]={'type':{'type':Sequelize[_0x0810('0x2')](_0x0810('0x3'),_0x0810('0x4'),_0x0810('0x5'),_0x0810('0x6'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x0810('0x7')]},'key':{'type':Sequelize[_0x0810('0x7')]},'keyType':{'type':Sequelize[_0x0810('0x2')](_0x0810('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x0810('0x7')]},'idField':{'type':Sequelize[_0x0810('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0810('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0810('0x7')]}};
\ No newline at end of file
+var _0x0213=['variable','customVariable','picklist','string','STRING','BOOLEAN','exports','ENUM'];(function(_0x1fd441,_0x2629bf){var _0x411a91=function(_0x5d14e3){while(--_0x5d14e3){_0x1fd441['push'](_0x1fd441['shift']());}};_0x411a91(++_0x2629bf);}(_0x0213,0x1de));var _0x3021=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x0213[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require('sequelize');module[_0x3021('0x0')]={'type':{'type':Sequelize[_0x3021('0x1')]('string',_0x3021('0x2'),_0x3021('0x3'),'keyValue',_0x3021('0x4')),'defaultValue':_0x3021('0x5')},'content':{'type':Sequelize[_0x3021('0x6')]},'key':{'type':Sequelize[_0x3021('0x6')]},'keyType':{'type':Sequelize[_0x3021('0x1')]('string',_0x3021('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x3021('0x6')]},'idField':{'type':Sequelize[_0x3021('0x6')]},'nameField':{'type':Sequelize[_0x3021('0x6')]},'customField':{'type':Sequelize[_0x3021('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3021('0x6')]}};
\ No newline at end of file
index 82901af..5f9acd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd8=['mustache','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','VtigerField','include','rows','show','params','includeAll','find','catch','body','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x30ca52,_0x4a3403){var _0x4c7cc5=function(_0x41d78f){while(--_0x41d78f){_0x30ca52['push'](_0x30ca52['shift']());}};_0x4c7cc5(++_0x4a3403);}(_0xdfd8,0x1a6));var _0x8dfd=function(_0x8771d2,_0x5b701f){_0x8771d2=_0x8771d2-0x0;var _0x3f9758=_0xdfd8[_0x8771d2];return _0x3f9758;};'use strict';var emlformat=require(_0x8dfd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8dfd('0x1'));var jsonpatch=require(_0x8dfd('0x2'));var rp=require('request-promise');var moment=require(_0x8dfd('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8dfd('0x4'));var util=require('util');var path=require(_0x8dfd('0x5'));var sox=require(_0x8dfd('0x6'));var csv=require(_0x8dfd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8dfd('0x8'));var _=require(_0x8dfd('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8dfd('0xa'));var deskjs=require(_0x8dfd('0xb'));var toCsv=require(_0x8dfd('0x7'));var querystring=require(_0x8dfd('0xc'));var Papa=require(_0x8dfd('0xd'));var Redis=require('ioredis');var authService=require(_0x8dfd('0xe'));var qs=require(_0x8dfd('0xf'));var as=require(_0x8dfd('0x10'));var hardwareService=require(_0x8dfd('0x11'));var logger=require(_0x8dfd('0x12'))(_0x8dfd('0x13'));var utils=require(_0x8dfd('0x14'));var config=require(_0x8dfd('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8dfd('0x16'))['db'];function respondWithStatusCode(_0x4cbfa3,_0x1f40e7){_0x1f40e7=_0x1f40e7||0xcc;return function(_0x24f909){if(_0x24f909){return _0x4cbfa3['sendStatus'](_0x1f40e7);}return _0x4cbfa3[_0x8dfd('0x17')](_0x1f40e7)[_0x8dfd('0x18')]();};}function respondWithResult(_0x1bb91c,_0x3d0c9c){_0x3d0c9c=_0x3d0c9c||0xc8;return function(_0xcfae63){if(_0xcfae63){return _0x1bb91c[_0x8dfd('0x17')](_0x3d0c9c)[_0x8dfd('0x19')](_0xcfae63);}};}function respondWithFilteredResult(_0x41699d,_0x3af0be){return function(_0x769278){if(_0x769278){var _0xe5a4eb=typeof _0x3af0be[_0x8dfd('0x1a')]==='undefined'&&typeof _0x3af0be[_0x8dfd('0x1b')]===_0x8dfd('0x1c');var _0x511fb9=_0x769278[_0x8dfd('0x1d')];var _0x23e586=_0xe5a4eb?0x0:_0x3af0be[_0x8dfd('0x1a')];var _0x1bb85c=_0xe5a4eb?_0x769278['count']:_0x3af0be[_0x8dfd('0x1a')]+_0x3af0be[_0x8dfd('0x1b')];var _0x5bc649;if(_0x1bb85c>=_0x511fb9){_0x1bb85c=_0x511fb9;_0x5bc649=0xc8;}else{_0x5bc649=0xce;}_0x41699d[_0x8dfd('0x17')](_0x5bc649);return _0x41699d[_0x8dfd('0x1e')](_0x8dfd('0x1f'),_0x23e586+'-'+_0x1bb85c+'/'+_0x511fb9)[_0x8dfd('0x19')](_0x769278);}return null;};}function patchUpdates(_0x3eeb29){return function(_0x24074d){try{jsonpatch[_0x8dfd('0x20')](_0x24074d,_0x3eeb29,!![]);}catch(_0x5235a7){return BPromise[_0x8dfd('0x21')](_0x5235a7);}return _0x24074d['save']();};}function saveUpdates(_0x5c89c0,_0x3280f8){return function(_0x307a6b){if(_0x307a6b){return _0x307a6b['update'](_0x5c89c0)[_0x8dfd('0x22')](function(_0x2ff729){return _0x2ff729;});}return null;};}function removeEntity(_0x4d835f,_0x36edba){return function(_0xe2cc16){if(_0xe2cc16){return _0xe2cc16[_0x8dfd('0x23')]()[_0x8dfd('0x22')](function(){_0x4d835f[_0x8dfd('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4479be,_0x6e1817){return function(_0x32994f){if(!_0x32994f){_0x4479be[_0x8dfd('0x24')](0x194);}return _0x32994f;};}function handleError(_0x4e5897,_0x21c246){_0x21c246=_0x21c246||0x1f4;return function(_0x39cbcc){logger[_0x8dfd('0x25')](_0x39cbcc['stack']);if(_0x39cbcc[_0x8dfd('0x26')]){delete _0x39cbcc['name'];}_0x4e5897[_0x8dfd('0x17')](_0x21c246)[_0x8dfd('0x27')](_0x39cbcc);};}exports[_0x8dfd('0x28')]=function(_0x4866a1,_0x8fa332){var _0x120766={},_0x2f21fa={},_0x5c8f61={'count':0x0,'rows':[]};var _0x48923b=_[_0x8dfd('0x29')](db['VtigerField'][_0x8dfd('0x2a')],function(_0x58e1d0){return{'name':_0x58e1d0['fieldName'],'type':_0x58e1d0[_0x8dfd('0x2b')][_0x8dfd('0x2c')]};});_0x2f21fa[_0x8dfd('0x2d')]=_[_0x8dfd('0x29')](_0x48923b,_0x8dfd('0x26'));_0x2f21fa['query']=_[_0x8dfd('0x2e')](_0x4866a1[_0x8dfd('0x2f')]);_0x2f21fa['filters']=_[_0x8dfd('0x30')](_0x2f21fa[_0x8dfd('0x2d')],_0x2f21fa[_0x8dfd('0x2f')]);_0x120766[_0x8dfd('0x31')]=_['intersection'](_0x2f21fa[_0x8dfd('0x2d')],qs['fields'](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x32')]));_0x120766[_0x8dfd('0x31')]=_0x120766[_0x8dfd('0x31')][_0x8dfd('0x33')]?_0x120766[_0x8dfd('0x31')]:_0x2f21fa[_0x8dfd('0x2d')];if(!_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x34')](_0x8dfd('0x35'))){_0x120766[_0x8dfd('0x1b')]=qs['limit'](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x1b')]);_0x120766[_0x8dfd('0x1a')]=qs[_0x8dfd('0x1a')](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x1a')]);}_0x120766['order']=qs[_0x8dfd('0x36')](_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x36')]);_0x120766[_0x8dfd('0x37')]=qs[_0x8dfd('0x38')](_[_0x8dfd('0x39')](_0x4866a1[_0x8dfd('0x2f')],_0x2f21fa['filters']),_0x48923b);if(_0x4866a1['query'][_0x8dfd('0x3a')]){_0x120766['where']=_[_0x8dfd('0x3b')](_0x120766[_0x8dfd('0x37')],{'$or':_[_0x8dfd('0x29')](_0x48923b,function(_0x455c5c){if(_0x455c5c['type']!==_0x8dfd('0x3c')){var _0x30ae03={};_0x30ae03[_0x455c5c[_0x8dfd('0x26')]]={'$like':'%'+_0x4866a1[_0x8dfd('0x2f')][_0x8dfd('0x3a')]+'%'};return _0x30ae03;}})});}_0x120766=_['merge']({},_0x120766,_0x4866a1[_0x8dfd('0x3d')]);var _0x1c1ad0={'where':_0x120766[_0x8dfd('0x37')]};return db[_0x8dfd('0x3e')]['count'](_0x1c1ad0)[_0x8dfd('0x22')](function(_0x4127db){_0x5c8f61[_0x8dfd('0x1d')]=_0x4127db;if(_0x4866a1[_0x8dfd('0x2f')]['includeAll']){_0x120766[_0x8dfd('0x3f')]=[{'all':!![]}];}return db[_0x8dfd('0x3e')]['findAll'](_0x120766);})[_0x8dfd('0x22')](function(_0x3d3348){_0x5c8f61[_0x8dfd('0x40')]=_0x3d3348;return _0x5c8f61;})[_0x8dfd('0x22')](respondWithFilteredResult(_0x8fa332,_0x120766))['catch'](handleError(_0x8fa332,null));};exports[_0x8dfd('0x41')]=function(_0x1a3a5b,_0x1510d5){var _0x41673b={'raw':!![],'where':{'id':_0x1a3a5b[_0x8dfd('0x42')]['id']}},_0x560826={};_0x560826[_0x8dfd('0x2d')]=_['keys'](db[_0x8dfd('0x3e')][_0x8dfd('0x2a')]);_0x560826[_0x8dfd('0x2f')]=_['keys'](_0x1a3a5b['query']);_0x560826['filters']=_['intersection'](_0x560826[_0x8dfd('0x2d')],_0x560826[_0x8dfd('0x2f')]);_0x41673b[_0x8dfd('0x31')]=_[_0x8dfd('0x30')](_0x560826[_0x8dfd('0x2d')],qs[_0x8dfd('0x32')](_0x1a3a5b[_0x8dfd('0x2f')]['fields']));_0x41673b[_0x8dfd('0x31')]=_0x41673b[_0x8dfd('0x31')][_0x8dfd('0x33')]?_0x41673b[_0x8dfd('0x31')]:_0x560826[_0x8dfd('0x2d')];if(_0x1a3a5b[_0x8dfd('0x2f')][_0x8dfd('0x43')]){_0x41673b[_0x8dfd('0x3f')]=[{'all':!![]}];}_0x41673b=_[_0x8dfd('0x3b')]({},_0x41673b,_0x1a3a5b[_0x8dfd('0x3d')]);return db[_0x8dfd('0x3e')][_0x8dfd('0x44')](_0x41673b)['then'](handleEntityNotFound(_0x1510d5,null))[_0x8dfd('0x22')](respondWithResult(_0x1510d5,null))[_0x8dfd('0x45')](handleError(_0x1510d5,null));};exports['create']=function(_0x1b4185,_0x360b74){return db[_0x8dfd('0x3e')]['create'](_0x1b4185[_0x8dfd('0x46')],{})[_0x8dfd('0x22')](respondWithResult(_0x360b74,0xc9))[_0x8dfd('0x45')](handleError(_0x360b74,null));};exports['update']=function(_0x1a82ca,_0x4d3b82){if(_0x1a82ca['body']['id']){delete _0x1a82ca[_0x8dfd('0x46')]['id'];}return db[_0x8dfd('0x3e')][_0x8dfd('0x44')]({'where':{'id':_0x1a82ca[_0x8dfd('0x42')]['id']}})[_0x8dfd('0x22')](handleEntityNotFound(_0x4d3b82,null))[_0x8dfd('0x22')](saveUpdates(_0x1a82ca['body'],null))[_0x8dfd('0x22')](respondWithResult(_0x4d3b82,null))[_0x8dfd('0x45')](handleError(_0x4d3b82,null));};exports[_0x8dfd('0x23')]=function(_0x236ca5,_0x57271c){return db[_0x8dfd('0x3e')]['find']({'where':{'id':_0x236ca5[_0x8dfd('0x42')]['id']}})[_0x8dfd('0x22')](handleEntityNotFound(_0x57271c,null))[_0x8dfd('0x22')](removeEntity(_0x57271c,null))[_0x8dfd('0x45')](handleError(_0x57271c,null));};
\ No newline at end of file
+var _0xa6c1=['offset','limit','undefined','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','map','VtigerField','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','count','include','findAll','rows','catch','show','fields','includeAll','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xa6c1,0x1a1));var _0x1a6c=function(_0x273f77,_0xe5b0cb){_0x273f77=_0x273f77-0x0;var _0x71e147=_0xa6c1[_0x273f77];return _0x71e147;};'use strict';var emlformat=require(_0x1a6c('0x0'));var rimraf=require(_0x1a6c('0x1'));var zipdir=require(_0x1a6c('0x2'));var jsonpatch=require(_0x1a6c('0x3'));var rp=require(_0x1a6c('0x4'));var moment=require(_0x1a6c('0x5'));var BPromise=require(_0x1a6c('0x6'));var Mustache=require('mustache');var util=require(_0x1a6c('0x7'));var path=require(_0x1a6c('0x8'));var sox=require(_0x1a6c('0x9'));var csv=require(_0x1a6c('0xa'));var ejs=require(_0x1a6c('0xb'));var fs=require('fs');var fs_extra=require(_0x1a6c('0xc'));var _=require(_0x1a6c('0xd'));var squel=require('squel');var crypto=require(_0x1a6c('0xe'));var jsforce=require(_0x1a6c('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1a6c('0x10'));var Papa=require(_0x1a6c('0x11'));var Redis=require(_0x1a6c('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1a6c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1a6c('0x14'))(_0x1a6c('0x15'));var utils=require(_0x1a6c('0x16'));var config=require(_0x1a6c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1a6c('0x18'))['db'];function respondWithStatusCode(_0xb1337,_0xeeac41){_0xeeac41=_0xeeac41||0xcc;return function(_0x379c68){if(_0x379c68){return _0xb1337['sendStatus'](_0xeeac41);}return _0xb1337['status'](_0xeeac41)[_0x1a6c('0x19')]();};}function respondWithResult(_0x42cd91,_0x3829df){_0x3829df=_0x3829df||0xc8;return function(_0x21029e){if(_0x21029e){return _0x42cd91[_0x1a6c('0x1a')](_0x3829df)['json'](_0x21029e);}};}function respondWithFilteredResult(_0x2bb8ca,_0x276899){return function(_0x219b34){if(_0x219b34){var _0x343c5a=typeof _0x276899[_0x1a6c('0x1b')]==='undefined'&&typeof _0x276899[_0x1a6c('0x1c')]===_0x1a6c('0x1d');var _0x50c003=_0x219b34['count'];var _0x44cc75=_0x343c5a?0x0:_0x276899[_0x1a6c('0x1b')];var _0x4030b0=_0x343c5a?_0x219b34['count']:_0x276899[_0x1a6c('0x1b')]+_0x276899['limit'];var _0x3e9a63;if(_0x4030b0>=_0x50c003){_0x4030b0=_0x50c003;_0x3e9a63=0xc8;}else{_0x3e9a63=0xce;}_0x2bb8ca[_0x1a6c('0x1a')](_0x3e9a63);return _0x2bb8ca[_0x1a6c('0x1e')](_0x1a6c('0x1f'),_0x44cc75+'-'+_0x4030b0+'/'+_0x50c003)[_0x1a6c('0x20')](_0x219b34);}return null;};}function patchUpdates(_0x252c34){return function(_0x520d35){try{jsonpatch['apply'](_0x520d35,_0x252c34,!![]);}catch(_0x36462d){return BPromise[_0x1a6c('0x21')](_0x36462d);}return _0x520d35[_0x1a6c('0x22')]();};}function saveUpdates(_0x516212,_0x2c8f44){return function(_0x2584bb){if(_0x2584bb){return _0x2584bb[_0x1a6c('0x23')](_0x516212)[_0x1a6c('0x24')](function(_0x55576b){return _0x55576b;});}return null;};}function removeEntity(_0x5b191e,_0x2ed125){return function(_0x4d28aa){if(_0x4d28aa){return _0x4d28aa[_0x1a6c('0x25')]()['then'](function(){_0x5b191e['status'](0xcc)[_0x1a6c('0x19')]();});}};}function handleEntityNotFound(_0x25d1b9,_0xd0db8f){return function(_0x58ad62){if(!_0x58ad62){_0x25d1b9['sendStatus'](0x194);}return _0x58ad62;};}function handleError(_0x4f3808,_0x40a0d8){_0x40a0d8=_0x40a0d8||0x1f4;return function(_0x229042){logger[_0x1a6c('0x26')](_0x229042[_0x1a6c('0x27')]);if(_0x229042['name']){delete _0x229042[_0x1a6c('0x28')];}_0x4f3808[_0x1a6c('0x1a')](_0x40a0d8)['send'](_0x229042);};}exports['index']=function(_0x1ad2e7,_0x438e30){var _0x1ebe20={},_0x4b0dc5={},_0x57e2f2={'count':0x0,'rows':[]};var _0x3806d8=_[_0x1a6c('0x29')](db[_0x1a6c('0x2a')][_0x1a6c('0x2b')],function(_0x380342){return{'name':_0x380342[_0x1a6c('0x2c')],'type':_0x380342[_0x1a6c('0x2d')][_0x1a6c('0x2e')]};});_0x4b0dc5[_0x1a6c('0x2f')]=_[_0x1a6c('0x29')](_0x3806d8,_0x1a6c('0x28'));_0x4b0dc5['query']=_[_0x1a6c('0x30')](_0x1ad2e7['query']);_0x4b0dc5[_0x1a6c('0x31')]=_[_0x1a6c('0x32')](_0x4b0dc5['model'],_0x4b0dc5[_0x1a6c('0x33')]);_0x1ebe20[_0x1a6c('0x34')]=_[_0x1a6c('0x32')](_0x4b0dc5['model'],qs['fields'](_0x1ad2e7['query']['fields']));_0x1ebe20[_0x1a6c('0x34')]=_0x1ebe20[_0x1a6c('0x34')][_0x1a6c('0x35')]?_0x1ebe20[_0x1a6c('0x34')]:_0x4b0dc5['model'];if(!_0x1ad2e7[_0x1a6c('0x33')][_0x1a6c('0x36')](_0x1a6c('0x37'))){_0x1ebe20[_0x1a6c('0x1c')]=qs[_0x1a6c('0x1c')](_0x1ad2e7[_0x1a6c('0x33')]['limit']);_0x1ebe20[_0x1a6c('0x1b')]=qs[_0x1a6c('0x1b')](_0x1ad2e7[_0x1a6c('0x33')][_0x1a6c('0x1b')]);}_0x1ebe20['order']=qs['sort'](_0x1ad2e7[_0x1a6c('0x33')][_0x1a6c('0x38')]);_0x1ebe20[_0x1a6c('0x39')]=qs[_0x1a6c('0x31')](_[_0x1a6c('0x3a')](_0x1ad2e7[_0x1a6c('0x33')],_0x4b0dc5[_0x1a6c('0x31')]),_0x3806d8);if(_0x1ad2e7[_0x1a6c('0x33')][_0x1a6c('0x3b')]){_0x1ebe20['where']=_[_0x1a6c('0x3c')](_0x1ebe20[_0x1a6c('0x39')],{'$or':_[_0x1a6c('0x29')](_0x3806d8,function(_0x1f3ec4){if(_0x1f3ec4[_0x1a6c('0x2d')]!=='VIRTUAL'){var _0x4851fe={};_0x4851fe[_0x1f3ec4[_0x1a6c('0x28')]]={'$like':'%'+_0x1ad2e7[_0x1a6c('0x33')]['filter']+'%'};return _0x4851fe;}})});}_0x1ebe20=_[_0x1a6c('0x3c')]({},_0x1ebe20,_0x1ad2e7['options']);var _0x505593={'where':_0x1ebe20[_0x1a6c('0x39')]};return db['VtigerField'][_0x1a6c('0x3d')](_0x505593)[_0x1a6c('0x24')](function(_0x5915d1){_0x57e2f2[_0x1a6c('0x3d')]=_0x5915d1;if(_0x1ad2e7['query']['includeAll']){_0x1ebe20[_0x1a6c('0x3e')]=[{'all':!![]}];}return db[_0x1a6c('0x2a')][_0x1a6c('0x3f')](_0x1ebe20);})[_0x1a6c('0x24')](function(_0x4d502c){_0x57e2f2[_0x1a6c('0x40')]=_0x4d502c;return _0x57e2f2;})['then'](respondWithFilteredResult(_0x438e30,_0x1ebe20))[_0x1a6c('0x41')](handleError(_0x438e30,null));};exports[_0x1a6c('0x42')]=function(_0x4ad0f4,_0x578511){var _0x402921={'raw':!![],'where':{'id':_0x4ad0f4['params']['id']}},_0x50fbd1={};_0x50fbd1[_0x1a6c('0x2f')]=_[_0x1a6c('0x30')](db[_0x1a6c('0x2a')][_0x1a6c('0x2b')]);_0x50fbd1[_0x1a6c('0x33')]=_[_0x1a6c('0x30')](_0x4ad0f4[_0x1a6c('0x33')]);_0x50fbd1[_0x1a6c('0x31')]=_[_0x1a6c('0x32')](_0x50fbd1[_0x1a6c('0x2f')],_0x50fbd1[_0x1a6c('0x33')]);_0x402921['attributes']=_[_0x1a6c('0x32')](_0x50fbd1[_0x1a6c('0x2f')],qs[_0x1a6c('0x43')](_0x4ad0f4[_0x1a6c('0x33')][_0x1a6c('0x43')]));_0x402921[_0x1a6c('0x34')]=_0x402921['attributes'][_0x1a6c('0x35')]?_0x402921[_0x1a6c('0x34')]:_0x50fbd1['model'];if(_0x4ad0f4['query'][_0x1a6c('0x44')]){_0x402921[_0x1a6c('0x3e')]=[{'all':!![]}];}_0x402921=_['merge']({},_0x402921,_0x4ad0f4[_0x1a6c('0x45')]);return db['VtigerField'][_0x1a6c('0x46')](_0x402921)[_0x1a6c('0x24')](handleEntityNotFound(_0x578511,null))[_0x1a6c('0x24')](respondWithResult(_0x578511,null))[_0x1a6c('0x41')](handleError(_0x578511,null));};exports[_0x1a6c('0x47')]=function(_0x1b0e65,_0x115787){return db[_0x1a6c('0x2a')][_0x1a6c('0x47')](_0x1b0e65[_0x1a6c('0x48')],{})[_0x1a6c('0x24')](respondWithResult(_0x115787,0xc9))[_0x1a6c('0x41')](handleError(_0x115787,null));};exports['update']=function(_0x3336aa,_0x579038){if(_0x3336aa['body']['id']){delete _0x3336aa[_0x1a6c('0x48')]['id'];}return db[_0x1a6c('0x2a')][_0x1a6c('0x46')]({'where':{'id':_0x3336aa[_0x1a6c('0x49')]['id']}})[_0x1a6c('0x24')](handleEntityNotFound(_0x579038,null))[_0x1a6c('0x24')](saveUpdates(_0x3336aa[_0x1a6c('0x48')],null))[_0x1a6c('0x24')](respondWithResult(_0x579038,null))[_0x1a6c('0x41')](handleError(_0x579038,null));};exports[_0x1a6c('0x25')]=function(_0x29c218,_0x2f68f4){return db['VtigerField'][_0x1a6c('0x46')]({'where':{'id':_0x29c218['params']['id']}})[_0x1a6c('0x24')](handleEntityNotFound(_0x2f68f4,null))[_0x1a6c('0x24')](removeEntity(_0x2f68f4,null))['catch'](handleError(_0x2f68f4,null));};
\ No newline at end of file
index 82b8ade..32a3bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6bb=['./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xde7fd6,_0x521d3b){var _0x68bc6e=function(_0x42d671){while(--_0x42d671){_0xde7fd6['push'](_0xde7fd6['shift']());}};_0x68bc6e(++_0x521d3b);}(_0xe6bb,0x1e4));var _0xbe6b=function(_0x21973e,_0x18e525){_0x21973e=_0x21973e-0x0;var _0x51453f=_0xe6bb[_0x21973e];return _0x51453f;};'use strict';var _=require(_0xbe6b('0x0'));var util=require('util');var logger=require(_0xbe6b('0x1'))(_0xbe6b('0x2'));var moment=require(_0xbe6b('0x3'));var BPromise=require(_0xbe6b('0x4'));var rp=require(_0xbe6b('0x5'));var fs=require('fs');var path=require(_0xbe6b('0x6'));var rimraf=require(_0xbe6b('0x7'));var config=require(_0xbe6b('0x8'));var attributes=require(_0xbe6b('0x9'));module[_0xbe6b('0xa')]=function(_0x21065e,_0x4b9b2b){return _0x21065e[_0xbe6b('0xb')](_0xbe6b('0xc'),attributes,{'tableName':_0xbe6b('0xd'),'paranoid':![],'indexes':[{'name':_0xbe6b('0xe'),'fields':[_0xbe6b('0xf'),_0xbe6b('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6aa=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intVtigerField.attributes','int_vtiger_fields','vtiger_unique_index','idField','FieldId'];(function(_0x119be8,_0x1eb989){var _0x5b3a0c=function(_0x1c473e){while(--_0x1c473e){_0x119be8['push'](_0x119be8['shift']());}};_0x5b3a0c(++_0x1eb989);}(_0xa6aa,0x186));var _0xaa6a=function(_0xdeffe6,_0x198150){_0xdeffe6=_0xdeffe6-0x0;var _0x5baeb=_0xa6aa[_0xdeffe6];return _0x5baeb;};'use strict';var _=require(_0xaa6a('0x0'));var util=require(_0xaa6a('0x1'));var logger=require(_0xaa6a('0x2'))(_0xaa6a('0x3'));var moment=require(_0xaa6a('0x4'));var BPromise=require(_0xaa6a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaa6a('0x6'));var config=require(_0xaa6a('0x7'));var attributes=require(_0xaa6a('0x8'));module['exports']=function(_0x3d9eab,_0x2bbb60){return _0x3d9eab['define']('VtigerField',attributes,{'tableName':_0xaa6a('0x9'),'paranoid':![],'indexes':[{'name':_0xaa6a('0xa'),'fields':[_0xaa6a('0xb'),_0xaa6a('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c210168..7a8286a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d54=['error','message','request\x20sent','result','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','stringify','code'];(function(_0x3850de,_0x2acfca){var _0x3c405f=function(_0x1e0b0d){while(--_0x1e0b0d){_0x3850de['push'](_0x3850de['shift']());}};_0x3c405f(++_0x2acfca);}(_0x9d54,0x155));var _0x49d5=function(_0x56e8c4,_0x1bf06e){_0x56e8c4=_0x56e8c4-0x0;var _0x330e03=_0x9d54[_0x56e8c4];return _0x330e03;};'use strict';var _=require('lodash');var util=require(_0x49d5('0x0'));var moment=require(_0x49d5('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x49d5('0x2'));var db=require(_0x49d5('0x3'))['db'];var utils=require(_0x49d5('0x4'));var logger=require(_0x49d5('0x5'))(_0x49d5('0x6'));var config=require(_0x49d5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x49d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2903fc,_0x5b18b8,_0x386942){return new BPromise(function(_0x50ddc0,_0x4cc598){return client[_0x49d5('0x9')](_0x2903fc,_0x386942)[_0x49d5('0xa')](function(_0x5d66f1){logger[_0x49d5('0xb')](_0x49d5('0xc'),_0x5b18b8,'request\x20sent');logger[_0x49d5('0xd')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x5b18b8,'request\x20sent',JSON[_0x49d5('0xe')](_0x5d66f1));if(_0x5d66f1['error']){if(_0x5d66f1['error'][_0x49d5('0xf')]===0x1f4){logger[_0x49d5('0x10')](_0x49d5('0xc'),_0x5b18b8,_0x5d66f1[_0x49d5('0x10')][_0x49d5('0x11')]);return _0x4cc598(_0x5d66f1['error'][_0x49d5('0x11')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x5b18b8,_0x5d66f1['error']['message']);return _0x50ddc0(_0x5d66f1[_0x49d5('0x10')]['message']);}else{logger[_0x49d5('0xb')](_0x49d5('0xc'),_0x5b18b8,_0x49d5('0x12'));_0x50ddc0(_0x5d66f1[_0x49d5('0x13')][_0x49d5('0x11')]);}})[_0x49d5('0x14')](function(_0x531388){logger[_0x49d5('0x10')](_0x49d5('0xc'),_0x5b18b8,_0x531388);_0x4cc598(_0x531388);});});}
\ No newline at end of file
+var _0x4bb8=['client','request','then','info','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x25f204,_0x572f9a){var _0x298087=function(_0x2079ff){while(--_0x2079ff){_0x25f204['push'](_0x25f204['shift']());}};_0x298087(++_0x572f9a);}(_0x4bb8,0x15f));var _0x84bb=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x4bb8[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0x84bb('0x0'));var util=require(_0x84bb('0x1'));var moment=require(_0x84bb('0x2'));var BPromise=require(_0x84bb('0x3'));var rs=require(_0x84bb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x84bb('0x5'));var logger=require(_0x84bb('0x6'))(_0x84bb('0x7'));var config=require(_0x84bb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x84bb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x598c24,_0x69141,_0x294c82){return new BPromise(function(_0x232367,_0x285433){return client[_0x84bb('0xa')](_0x598c24,_0x294c82)[_0x84bb('0xb')](function(_0x2d6aff){logger[_0x84bb('0xc')]('VtigerField,\x20%s,\x20%s',_0x69141,'request\x20sent');logger['debug'](_0x84bb('0xd'),_0x69141,'request\x20sent',JSON[_0x84bb('0xe')](_0x2d6aff));if(_0x2d6aff[_0x84bb('0xf')]){if(_0x2d6aff[_0x84bb('0xf')]['code']===0x1f4){logger[_0x84bb('0xf')](_0x84bb('0x10'),_0x69141,_0x2d6aff['error']['message']);return _0x285433(_0x2d6aff[_0x84bb('0xf')][_0x84bb('0x11')]);}logger[_0x84bb('0xf')](_0x84bb('0x10'),_0x69141,_0x2d6aff['error'][_0x84bb('0x11')]);return _0x232367(_0x2d6aff[_0x84bb('0xf')]['message']);}else{logger[_0x84bb('0xc')]('VtigerField,\x20%s,\x20%s',_0x69141,'request\x20sent');_0x232367(_0x2d6aff[_0x84bb('0x12')]['message']);}})[_0x84bb('0x13')](function(_0x2ccf75){logger[_0x84bb('0xf')](_0x84bb('0x10'),_0x69141,_0x2ccf75);_0x285433(_0x2ccf75);});});}
\ No newline at end of file
index ff2fc2a..c52a917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1315=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','/:id/fields','post','create','put','delete'];(function(_0x39551a,_0x116007){var _0x4b0b62=function(_0x3d8a12){while(--_0x3d8a12){_0x39551a['push'](_0x39551a['shift']());}};_0x4b0b62(++_0x116007);}(_0x1315,0xdd));var _0x5131=function(_0x1c3331,_0x49ecd7){_0x1c3331=_0x1c3331-0x0;var _0x4a2b9f=_0x1315[_0x1c3331];return _0x4a2b9f;};'use strict';var multer=require(_0x5131('0x0'));var util=require(_0x5131('0x1'));var path=require(_0x5131('0x2'));var timeout=require(_0x5131('0x3'));var express=require(_0x5131('0x4'));var router=express[_0x5131('0x5')]();var fs_extra=require(_0x5131('0x6'));var auth=require(_0x5131('0x7'));var interaction=require(_0x5131('0x8'));var config=require('../../config/environment');var controller=require(_0x5131('0x9'));router[_0x5131('0xa')]('/',auth['isAuthenticated'](),controller[_0x5131('0xb')]);router[_0x5131('0xa')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller[_0x5131('0xe')]);router[_0x5131('0xa')](_0x5131('0xf'),auth[_0x5131('0xd')](),controller['getConfigurations']);router['get'](_0x5131('0x10'),auth['isAuthenticated'](),controller['getFields']);router[_0x5131('0x11')]('/',auth[_0x5131('0xd')](),controller[_0x5131('0x12')]);router[_0x5131('0x11')]('/:id/configurations',auth[_0x5131('0xd')](),controller['addConfiguration']);router[_0x5131('0x13')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller['update']);router[_0x5131('0x14')](_0x5131('0xc'),auth[_0x5131('0xd')](),controller[_0x5131('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x3dbe=['../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5775d4,_0x25117f){var _0xdde1=function(_0x2dbd50){while(--_0x2dbd50){_0x5775d4['push'](_0x5775d4['shift']());}};_0xdde1(++_0x25117f);}(_0x3dbe,0x71));var _0xe3db=function(_0x30e284,_0x4e1cee){_0x30e284=_0x30e284-0x0;var _0x20f572=_0x3dbe[_0x30e284];return _0x20f572;};'use strict';var multer=require(_0xe3db('0x0'));var util=require('util');var path=require(_0xe3db('0x1'));var timeout=require(_0xe3db('0x2'));var express=require(_0xe3db('0x3'));var router=express[_0xe3db('0x4')]();var fs_extra=require(_0xe3db('0x5'));var auth=require(_0xe3db('0x6'));var interaction=require(_0xe3db('0x7'));var config=require(_0xe3db('0x8'));var controller=require(_0xe3db('0x9'));router[_0xe3db('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe3db('0xb'),auth[_0xe3db('0xc')](),controller[_0xe3db('0xd')]);router[_0xe3db('0xa')](_0xe3db('0xe'),auth[_0xe3db('0xc')](),controller[_0xe3db('0xf')]);router[_0xe3db('0xa')](_0xe3db('0x10'),auth['isAuthenticated'](),controller[_0xe3db('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe3db('0x12')]);router[_0xe3db('0x13')](_0xe3db('0xe'),auth['isAuthenticated'](),controller[_0xe3db('0x14')]);router[_0xe3db('0x15')](_0xe3db('0xb'),auth[_0xe3db('0xc')](),controller['update']);router[_0xe3db('0x16')](_0xe3db('0xb'),auth[_0xe3db('0xc')](),controller[_0xe3db('0x17')]);module['exports']=router;
\ No newline at end of file
index d39fcc0..66df0d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7de=['integrationTab','sequelize','exports','STRING','username','ENUM','password','token','newTab'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0xb7de,0xc7));var _0xeb7d=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xb7de[_0x24237f];return _0x48298e;};'use strict';var Sequelize=require(_0xeb7d('0x0'));module[_0xeb7d('0x1')]={'name':{'type':Sequelize[_0xeb7d('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xeb7d('0x2')],'unique':_0xeb7d('0x3')},'password':{'type':Sequelize[_0xeb7d('0x2')]},'token':{'type':Sequelize[_0xeb7d('0x2')]},'remoteUri':{'type':Sequelize[_0xeb7d('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0xeb7d('0x4')](_0xeb7d('0x5'),_0xeb7d('0x6')),'defaultValue':_0xeb7d('0x5')},'serverUrl':{'type':Sequelize[_0xeb7d('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0xeb7d('0x7')),'defaultValue':_0xeb7d('0x8')}};
\ No newline at end of file
+var _0x13f5=['ENUM','password','token','integrationTab','newTab','sequelize','exports','STRING','username','remoteUri'];(function(_0x9a3e0f,_0x2f796d){var _0x3d2a9a=function(_0x3aeb03){while(--_0x3aeb03){_0x9a3e0f['push'](_0x9a3e0f['shift']());}};_0x3d2a9a(++_0x2f796d);}(_0x13f5,0xc3));var _0x513f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x13f5[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0x513f('0x0'));module[_0x513f('0x1')]={'name':{'type':Sequelize[_0x513f('0x2')]},'description':{'type':Sequelize[_0x513f('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x513f('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x513f('0x2')],'unique':_0x513f('0x4')},'authType':{'type':Sequelize[_0x513f('0x5')](_0x513f('0x6'),_0x513f('0x7')),'defaultValue':_0x513f('0x6')},'serverUrl':{'type':Sequelize[_0x513f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x513f('0x5')](_0x513f('0x8'),_0x513f('0x9')),'defaultValue':_0x513f('0x8')}};
\ No newline at end of file
index 18ee6b9..f7a0570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2c=['error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','end','stack','name','send','index','map','ZendeskAccount','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','update','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','addConfiguration','findOne','AccountId','channel','Descriptions','ZendeskField','Subjects','getFields','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','headers','Basic\x20%s','%s:%s','username','base64','%s/token:%s','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','group','assignee','remove','ticket_fields','includes','position','title','custom_field_options','test'];(function(_0x40c3de,_0x51473e){var _0x4317ec=function(_0x4f39b9){while(--_0x4f39b9){_0x40c3de['push'](_0x40c3de['shift']());}};_0x4317ec(++_0x51473e);}(_0xde2c,0x7f));var _0xcde2=function(_0x48c4ef,_0x319d44){_0x48c4ef=_0x48c4ef-0x0;var _0x435715=_0xde2c[_0x48c4ef];return _0x435715;};'use strict';var emlformat=require(_0xcde2('0x0'));var rimraf=require(_0xcde2('0x1'));var zipdir=require(_0xcde2('0x2'));var jsonpatch=require(_0xcde2('0x3'));var rp=require(_0xcde2('0x4'));var moment=require(_0xcde2('0x5'));var BPromise=require(_0xcde2('0x6'));var Mustache=require(_0xcde2('0x7'));var util=require('util');var path=require(_0xcde2('0x8'));var sox=require(_0xcde2('0x9'));var csv=require(_0xcde2('0xa'));var ejs=require(_0xcde2('0xb'));var fs=require('fs');var fs_extra=require(_0xcde2('0xc'));var _=require('lodash');var squel=require(_0xcde2('0xd'));var crypto=require(_0xcde2('0xe'));var jsforce=require(_0xcde2('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcde2('0x10'));var Papa=require(_0xcde2('0x11'));var Redis=require('ioredis');var authService=require(_0xcde2('0x12'));var qs=require(_0xcde2('0x13'));var as=require(_0xcde2('0x14'));var hardwareService=require(_0xcde2('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xcde2('0x16'));var config=require(_0xcde2('0x17'));var licenseUtil=require(_0xcde2('0x18'));var db=require(_0xcde2('0x19'))['db'];var integrations=require(_0xcde2('0x1a'));function respondWithStatusCode(_0x1ea4bb,_0x599294){_0x599294=_0x599294||0xcc;return function(_0x211215){if(_0x211215){return _0x1ea4bb['sendStatus'](_0x599294);}return _0x1ea4bb[_0xcde2('0x1b')](_0x599294)['end']();};}function respondWithResult(_0x4b0e0e,_0x34e079){_0x34e079=_0x34e079||0xc8;return function(_0x1c7103){if(_0x1c7103){return _0x4b0e0e[_0xcde2('0x1b')](_0x34e079)[_0xcde2('0x1c')](_0x1c7103);}};}function respondWithFilteredResult(_0x11665c,_0x5312c7){return function(_0x39b023){if(_0x39b023){var _0x4c558b=typeof _0x5312c7[_0xcde2('0x1d')]===_0xcde2('0x1e')&&typeof _0x5312c7[_0xcde2('0x1f')]===_0xcde2('0x1e');var _0x5223f1=_0x39b023['count'];var _0x4fe586=_0x4c558b?0x0:_0x5312c7[_0xcde2('0x1d')];var _0x582e84=_0x4c558b?_0x39b023[_0xcde2('0x20')]:_0x5312c7[_0xcde2('0x1d')]+_0x5312c7[_0xcde2('0x1f')];var _0x481fc0;if(_0x582e84>=_0x5223f1){_0x582e84=_0x5223f1;_0x481fc0=0xc8;}else{_0x481fc0=0xce;}_0x11665c[_0xcde2('0x1b')](_0x481fc0);return _0x11665c[_0xcde2('0x21')](_0xcde2('0x22'),_0x4fe586+'-'+_0x582e84+'/'+_0x5223f1)[_0xcde2('0x1c')](_0x39b023);}return null;};}function patchUpdates(_0x43df7a){return function(_0x57210d){try{jsonpatch['apply'](_0x57210d,_0x43df7a,!![]);}catch(_0x5a92b9){return BPromise[_0xcde2('0x23')](_0x5a92b9);}return _0x57210d[_0xcde2('0x24')]();};}function saveUpdates(_0x2c9562,_0x4063d4){return function(_0xc86374){if(_0xc86374){return _0xc86374['update'](_0x2c9562)[_0xcde2('0x25')](function(_0x52368b){return _0x52368b;});}return null;};}function removeEntity(_0x280d8c,_0xb2123c){return function(_0x26d18e){if(_0x26d18e){return _0x26d18e['destroy']()['then'](function(){_0x280d8c[_0xcde2('0x1b')](0xcc)[_0xcde2('0x26')]();});}};}function handleEntityNotFound(_0x3e8aaf,_0x217ec9){return function(_0xcadb2){if(!_0xcadb2){_0x3e8aaf['sendStatus'](0x194);}return _0xcadb2;};}function handleError(_0x2d1d17,_0x45275a){_0x45275a=_0x45275a||0x1f4;return function(_0x1dce65){logger['error'](_0x1dce65[_0xcde2('0x27')]);if(_0x1dce65[_0xcde2('0x28')]){delete _0x1dce65[_0xcde2('0x28')];}_0x2d1d17[_0xcde2('0x1b')](_0x45275a)[_0xcde2('0x29')](_0x1dce65);};}exports[_0xcde2('0x2a')]=function(_0x40b12c,_0x3e492f){var _0x5bf1e6={},_0x3c3c01={},_0x4a0826={'count':0x0,'rows':[]};var _0x141072=_[_0xcde2('0x2b')](db[_0xcde2('0x2c')]['rawAttributes'],function(_0xae46dc){return{'name':_0xae46dc[_0xcde2('0x2d')],'type':_0xae46dc['type'][_0xcde2('0x2e')]};});_0x3c3c01[_0xcde2('0x2f')]=_[_0xcde2('0x2b')](_0x141072,_0xcde2('0x28'));_0x3c3c01[_0xcde2('0x30')]=_[_0xcde2('0x31')](_0x40b12c[_0xcde2('0x30')]);_0x3c3c01[_0xcde2('0x32')]=_['intersection'](_0x3c3c01[_0xcde2('0x2f')],_0x3c3c01[_0xcde2('0x30')]);_0x5bf1e6[_0xcde2('0x33')]=_[_0xcde2('0x34')](_0x3c3c01['model'],qs[_0xcde2('0x35')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x35')]));_0x5bf1e6[_0xcde2('0x33')]=_0x5bf1e6['attributes'][_0xcde2('0x36')]?_0x5bf1e6[_0xcde2('0x33')]:_0x3c3c01[_0xcde2('0x2f')];if(!_0x40b12c[_0xcde2('0x30')]['hasOwnProperty'](_0xcde2('0x37'))){_0x5bf1e6[_0xcde2('0x1f')]=qs[_0xcde2('0x1f')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x1f')]);_0x5bf1e6['offset']=qs[_0xcde2('0x1d')](_0x40b12c[_0xcde2('0x30')][_0xcde2('0x1d')]);}_0x5bf1e6[_0xcde2('0x38')]=qs['sort'](_0x40b12c['query'][_0xcde2('0x39')]);_0x5bf1e6[_0xcde2('0x3a')]=qs[_0xcde2('0x32')](_[_0xcde2('0x3b')](_0x40b12c[_0xcde2('0x30')],_0x3c3c01[_0xcde2('0x32')]),_0x141072);if(_0x40b12c[_0xcde2('0x30')][_0xcde2('0x3c')]){_0x5bf1e6[_0xcde2('0x3a')]=_['merge'](_0x5bf1e6[_0xcde2('0x3a')],{'$or':_[_0xcde2('0x2b')](_0x141072,function(_0x30f843){if(_0x30f843[_0xcde2('0x3d')]!==_0xcde2('0x3e')){var _0x47b6ee={};_0x47b6ee[_0x30f843['name']]={'$like':'%'+_0x40b12c[_0xcde2('0x30')][_0xcde2('0x3c')]+'%'};return _0x47b6ee;}})});}_0x5bf1e6=_[_0xcde2('0x3f')]({},_0x5bf1e6,_0x40b12c[_0xcde2('0x40')]);var _0x144de9={'where':_0x5bf1e6[_0xcde2('0x3a')]};return db['ZendeskAccount']['count'](_0x144de9)['then'](function(_0x18f723){_0x4a0826[_0xcde2('0x20')]=_0x18f723;if(_0x40b12c[_0xcde2('0x30')][_0xcde2('0x41')]){_0x5bf1e6[_0xcde2('0x42')]=[{'all':!![]}];}return db[_0xcde2('0x2c')][_0xcde2('0x43')](_0x5bf1e6);})['then'](function(_0x48580a){_0x4a0826[_0xcde2('0x44')]=_0x48580a;return _0x4a0826;})['then'](respondWithFilteredResult(_0x3e492f,_0x5bf1e6))[_0xcde2('0x45')](handleError(_0x3e492f,null));};exports['show']=function(_0x1126b2,_0x3239a0){var _0x2cf372={'raw':![],'where':{'id':_0x1126b2[_0xcde2('0x46')]['id']}},_0x5ea9a9={};_0x5ea9a9['model']=_[_0xcde2('0x31')](db[_0xcde2('0x2c')][_0xcde2('0x47')]);_0x5ea9a9[_0xcde2('0x30')]=_[_0xcde2('0x31')](_0x1126b2[_0xcde2('0x30')]);_0x5ea9a9['filters']=_['intersection'](_0x5ea9a9[_0xcde2('0x2f')],_0x5ea9a9['query']);_0x2cf372['attributes']=_[_0xcde2('0x34')](_0x5ea9a9['model'],qs[_0xcde2('0x35')](_0x1126b2[_0xcde2('0x30')]['fields']));_0x2cf372[_0xcde2('0x33')]=_0x2cf372['attributes']['length']?_0x2cf372[_0xcde2('0x33')]:_0x5ea9a9[_0xcde2('0x2f')];if(_0x1126b2['query'][_0xcde2('0x41')]){_0x2cf372['include']=[{'all':!![]}];}_0x2cf372=_[_0xcde2('0x3f')]({},_0x2cf372,_0x1126b2[_0xcde2('0x40')]);return db[_0xcde2('0x2c')][_0xcde2('0x48')](_0x2cf372)[_0xcde2('0x25')](handleEntityNotFound(_0x3239a0,null))['then'](respondWithResult(_0x3239a0,null))[_0xcde2('0x45')](handleError(_0x3239a0,null));};exports[_0xcde2('0x49')]=function(_0x40d14b,_0x2c78a5){return db['ZendeskAccount']['create'](_0x40d14b[_0xcde2('0x4a')],{})['then'](respondWithResult(_0x2c78a5,0xc9))[_0xcde2('0x45')](handleError(_0x2c78a5,null));};exports[_0xcde2('0x4b')]=function(_0x381bd4,_0x16675f){if(_0x381bd4[_0xcde2('0x4a')]['id']){delete _0x381bd4[_0xcde2('0x4a')]['id'];}return db['ZendeskAccount'][_0xcde2('0x48')]({'where':{'id':_0x381bd4['params']['id']}})[_0xcde2('0x25')](handleEntityNotFound(_0x16675f,null))['then'](saveUpdates(_0x381bd4[_0xcde2('0x4a')],null))[_0xcde2('0x25')](respondWithResult(_0x16675f,null))[_0xcde2('0x45')](handleError(_0x16675f,null));};exports[_0xcde2('0x4c')]=function(_0x446cf0,_0x5071ce){return db['ZendeskAccount'][_0xcde2('0x48')]({'where':{'id':_0x446cf0['params']['id']}})[_0xcde2('0x25')](handleEntityNotFound(_0x5071ce,null))[_0xcde2('0x25')](removeEntity(_0x5071ce,null))[_0xcde2('0x45')](handleError(_0x5071ce,null));};exports[_0xcde2('0x4d')]=function(_0x1e1c9e,_0x9067c8,_0x3a0760){var _0x28bd25={};var _0x373cdc={};var _0x21585a;var _0x3c5a17;return db[_0xcde2('0x2c')]['findOne']({'where':{'id':_0x1e1c9e['params']['id']}})['then'](handleEntityNotFound(_0x9067c8,null))[_0xcde2('0x25')](function(_0x59a64d){if(_0x59a64d){_0x21585a=_0x59a64d;_0x373cdc[_0xcde2('0x2f')]=_[_0xcde2('0x31')](db[_0xcde2('0x4e')]['rawAttributes']);_0x373cdc[_0xcde2('0x30')]=_['keys'](_0x1e1c9e[_0xcde2('0x30')]);_0x373cdc['filters']=_[_0xcde2('0x34')](_0x373cdc[_0xcde2('0x2f')],_0x373cdc['query']);_0x28bd25[_0xcde2('0x33')]=_['intersection'](_0x373cdc['model'],qs[_0xcde2('0x35')](_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x35')]));_0x28bd25[_0xcde2('0x33')]=_0x28bd25[_0xcde2('0x33')][_0xcde2('0x36')]?_0x28bd25['attributes']:_0x373cdc[_0xcde2('0x2f')];_0x28bd25[_0xcde2('0x38')]=qs[_0xcde2('0x39')](_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x39')]);_0x28bd25[_0xcde2('0x3a')]=qs['filters'](_['pick'](_0x1e1c9e[_0xcde2('0x30')],_0x373cdc[_0xcde2('0x32')]));if(_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x3c')]){_0x28bd25['where']=_[_0xcde2('0x3f')](_0x28bd25[_0xcde2('0x3a')],{'$or':_[_0xcde2('0x2b')](_0x28bd25[_0xcde2('0x33')],function(_0x5e4733){var _0x35453a={};_0x35453a[_0x5e4733]={'$like':'%'+_0x1e1c9e['query'][_0xcde2('0x3c')]+'%'};return _0x35453a;})});}_0x28bd25=_[_0xcde2('0x3f')]({},_0x28bd25,_0x1e1c9e['options']);return _0x21585a[_0xcde2('0x4d')](_0x28bd25);}})[_0xcde2('0x25')](function(_0x408535){if(_0x408535){_0x3c5a17=_0x408535[_0xcde2('0x36')];if(!_0x1e1c9e[_0xcde2('0x30')][_0xcde2('0x4f')](_0xcde2('0x37'))){_0x28bd25[_0xcde2('0x1f')]=qs[_0xcde2('0x1f')](_0x1e1c9e[_0xcde2('0x30')]['limit']);_0x28bd25[_0xcde2('0x1d')]=qs[_0xcde2('0x1d')](_0x1e1c9e['query'][_0xcde2('0x1d')]);}return _0x21585a[_0xcde2('0x4d')](_0x28bd25);}})[_0xcde2('0x25')](function(_0x5aaa3f){if(_0x5aaa3f){return _0x5aaa3f?{'count':_0x3c5a17,'rows':_0x5aaa3f}:null;}})[_0xcde2('0x25')](respondWithResult(_0x9067c8,null))[_0xcde2('0x45')](handleError(_0x9067c8,null));};exports[_0xcde2('0x50')]=function(_0x3b1ca7,_0x24ddd2,_0x3aa334){if(_0x3b1ca7[_0xcde2('0x4a')]['id']){delete _0x3b1ca7[_0xcde2('0x4a')]['id'];}return db[_0xcde2('0x2c')][_0xcde2('0x51')]({'where':{'id':_0x3b1ca7[_0xcde2('0x46')]['id']}})['then'](handleEntityNotFound(_0x24ddd2,null))['then'](function(_0x39c723){if(_0x39c723){_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x52')]=_0x39c723['id'];_0x3b1ca7['body']['Subjects']=integrations['getSubjects'](_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x53')],_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x3d')]);_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x54')]=integrations['getDescriptions'](_0x3b1ca7['body'][_0xcde2('0x53')],_0x3b1ca7[_0xcde2('0x4a')][_0xcde2('0x3d')]);return db[_0xcde2('0x4e')][_0xcde2('0x49')](_0x3b1ca7[_0xcde2('0x4a')],{'include':[{'model':db[_0xcde2('0x55')],'as':_0xcde2('0x56')},{'model':db[_0xcde2('0x55')],'as':_0xcde2('0x54')}]});}return null;})[_0xcde2('0x25')](respondWithResult(_0x24ddd2,null))[_0xcde2('0x45')](handleError(_0x24ddd2,null));};exports[_0xcde2('0x57')]=function(_0x16b6b3,_0x3f46ca,_0xb5e3){var _0x3cf1aa='';return db[_0xcde2('0x2c')][_0xcde2('0x51')]({'where':{'id':_0x16b6b3[_0xcde2('0x46')]['id']},'attributes':['id','username',_0xcde2('0x58'),_0xcde2('0x59'),_0xcde2('0x5a'),_0xcde2('0x5b')]})[_0xcde2('0x25')](handleEntityNotFound(_0x3f46ca,null))['then'](function(_0x2e9714){if(_0x2e9714){_0x3cf1aa=_0x2e9714['remoteUri'];var _0x103932=_0x3cf1aa[_0xcde2('0x5c')](-0x1);if(_0x103932==='/'){_0x3cf1aa=_0x3cf1aa[_0xcde2('0x5d')](0x0,_0x3cf1aa[_0xcde2('0x5e')](_0x103932));}var _0x31815f={'method':_0xcde2('0x5f'),'uri':util[_0xcde2('0x60')]('%s/%s',_0x3cf1aa,'ticket_fields'),'json':!![]};switch(_0x2e9714[_0xcde2('0x5a')]){case'password':_0x31815f[_0xcde2('0x61')]={'Authorization':util[_0xcde2('0x60')](_0xcde2('0x62'),new Buffer(util[_0xcde2('0x60')](_0xcde2('0x63'),_0x2e9714[_0xcde2('0x64')],_0x2e9714[_0xcde2('0x58')]))['toString'](_0xcde2('0x65')))};break;case _0xcde2('0x59'):_0x31815f[_0xcde2('0x61')]={'Authorization':util[_0xcde2('0x60')]('Basic\x20%s',new Buffer(util[_0xcde2('0x60')](_0xcde2('0x66'),_0x2e9714[_0xcde2('0x64')],_0x2e9714[_0xcde2('0x59')]))[_0xcde2('0x67')](_0xcde2('0x65')))};break;default:throw new db[(_0xcde2('0x68'))][(_0xcde2('0x69'))](_0xcde2('0x6a'));}return rp(_0x31815f);}})[_0xcde2('0x25')](function(_0x213901){if(_0x213901){var _0x225ddd=[_0xcde2('0x6b'),'description',_0xcde2('0x6c'),_0xcde2('0x6d')];_[_0xcde2('0x6e')](_0x213901[_0xcde2('0x6f')],function(_0x1f1f71){return _0x225ddd[_0xcde2('0x70')](_0x1f1f71[_0xcde2('0x3d')]);});return{'count':_0x213901[_0xcde2('0x6f')][_0xcde2('0x36')],'rows':_[_0xcde2('0x2b')](_0x213901[_0xcde2('0x6f')],function(_0x18b0a1){return{'id':_0x18b0a1['id'],'name':_0x18b0a1[_0xcde2('0x71')]>0x7?_0x18b0a1[_0xcde2('0x72')]:_0x18b0a1[_0xcde2('0x3d')],'custom':_0x18b0a1[_0xcde2('0x71')]>0x7?!![]:![],'options':_0x18b0a1['system_field_options']?_0x18b0a1['system_field_options']:_0x18b0a1[_0xcde2('0x73')]?_0x18b0a1[_0xcde2('0x73')]:[]};})};}})[_0xcde2('0x25')](respondWithResult(_0x3f46ca,null))[_0xcde2('0x45')](function(_0x4ffd32){var _0x9afade=_0x16b6b3['query'][_0xcde2('0x74')]?0x1f4:_0x4ffd32['statusCode']||0x1f4;logger[_0xcde2('0x75')](_0xcde2('0x76'),'getFields',_0x9afade,JSON[_0xcde2('0x77')](_0x4ffd32));delete _0x4ffd32[_0xcde2('0x28')];if(_0x9afade===0x191){_0x9afade=0x190;}_0x3f46ca[_0xcde2('0x1b')](_0x9afade)['send'](_0x16b6b3[_0xcde2('0x30')][_0xcde2('0x74')]?{'message':_0xcde2('0x78'),'statusCode':_0x4ffd32[_0xcde2('0x79')]}:_0x4ffd32);});};
\ No newline at end of file
+var _0xe706=['getConfigurations','findOne','ZendeskConfiguration','pick','hasOwnProperty','AccountId','Subjects','getSubjects','Descriptions','channel','ZendeskField','getFields','username','token','authType','remoteUri','slice','substring','GET','format','password','headers','Basic\x20%s','base64','%s/token:%s','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','remove','includes','ticket_fields','title','position','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','json','offset','undefined','limit','status','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','ZendeskAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','findAll','rows','show','includeAll','include','find','create','body','catch','params'];(function(_0x3a3b9e,_0xc59037){var _0x148103=function(_0x406731){while(--_0x406731){_0x3a3b9e['push'](_0x3a3b9e['shift']());}};_0x148103(++_0xc59037);}(_0xe706,0xa3));var _0x6e70=function(_0x5ba513,_0x459c3b){_0x5ba513=_0x5ba513-0x0;var _0x1132a0=_0xe706[_0x5ba513];return _0x1132a0;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];var integrations=require(_0x6e70('0x1d'));function respondWithStatusCode(_0x3b38f3,_0x310eb7){_0x310eb7=_0x310eb7||0xcc;return function(_0xa1eb74){if(_0xa1eb74){return _0x3b38f3[_0x6e70('0x1e')](_0x310eb7);}return _0x3b38f3['status'](_0x310eb7)['end']();};}function respondWithResult(_0x48bc72,_0x257e81){_0x257e81=_0x257e81||0xc8;return function(_0x5a37a6){if(_0x5a37a6){return _0x48bc72['status'](_0x257e81)[_0x6e70('0x1f')](_0x5a37a6);}};}function respondWithFilteredResult(_0x22c50c,_0x5d9263){return function(_0x24f3ac){if(_0x24f3ac){var _0x5c3fe7=typeof _0x5d9263[_0x6e70('0x20')]===_0x6e70('0x21')&&typeof _0x5d9263['limit']==='undefined';var _0x3bd572=_0x24f3ac['count'];var _0x28a21f=_0x5c3fe7?0x0:_0x5d9263[_0x6e70('0x20')];var _0x53acdc=_0x5c3fe7?_0x24f3ac['count']:_0x5d9263[_0x6e70('0x20')]+_0x5d9263[_0x6e70('0x22')];var _0x2368eb;if(_0x53acdc>=_0x3bd572){_0x53acdc=_0x3bd572;_0x2368eb=0xc8;}else{_0x2368eb=0xce;}_0x22c50c[_0x6e70('0x23')](_0x2368eb);return _0x22c50c[_0x6e70('0x24')](_0x6e70('0x25'),_0x28a21f+'-'+_0x53acdc+'/'+_0x3bd572)[_0x6e70('0x1f')](_0x24f3ac);}return null;};}function patchUpdates(_0x44a49f){return function(_0x29326f){try{jsonpatch[_0x6e70('0x26')](_0x29326f,_0x44a49f,!![]);}catch(_0x4a0cfe){return BPromise[_0x6e70('0x27')](_0x4a0cfe);}return _0x29326f[_0x6e70('0x28')]();};}function saveUpdates(_0x27b294,_0x502b2d){return function(_0x3ccd87){if(_0x3ccd87){return _0x3ccd87[_0x6e70('0x29')](_0x27b294)[_0x6e70('0x2a')](function(_0x50da2c){return _0x50da2c;});}return null;};}function removeEntity(_0x10fc91,_0x538b9c){return function(_0x50aec2){if(_0x50aec2){return _0x50aec2['destroy']()[_0x6e70('0x2a')](function(){_0x10fc91[_0x6e70('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ecdf1,_0x1196ed){return function(_0x5f268f){if(!_0x5f268f){_0x3ecdf1[_0x6e70('0x1e')](0x194);}return _0x5f268f;};}function handleError(_0x67fb43,_0x2bb231){_0x2bb231=_0x2bb231||0x1f4;return function(_0x4a67ac){logger['error'](_0x4a67ac[_0x6e70('0x2b')]);if(_0x4a67ac[_0x6e70('0x2c')]){delete _0x4a67ac[_0x6e70('0x2c')];}_0x67fb43[_0x6e70('0x23')](_0x2bb231)[_0x6e70('0x2d')](_0x4a67ac);};}exports['index']=function(_0x1952ea,_0x406f29){var _0xecf336={},_0x2864a0={},_0x396a67={'count':0x0,'rows':[]};var _0x20a225=_[_0x6e70('0x2e')](db[_0x6e70('0x2f')][_0x6e70('0x30')],function(_0x3a5d30){return{'name':_0x3a5d30['fieldName'],'type':_0x3a5d30[_0x6e70('0x31')]['key']};});_0x2864a0[_0x6e70('0x32')]=_['map'](_0x20a225,_0x6e70('0x2c'));_0x2864a0[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x1952ea['query']);_0x2864a0[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0x2864a0['model'],_0x2864a0[_0x6e70('0x33')]);_0xecf336[_0x6e70('0x37')]=_['intersection'](_0x2864a0[_0x6e70('0x32')],qs[_0x6e70('0x38')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x38')]));_0xecf336[_0x6e70('0x37')]=_0xecf336[_0x6e70('0x37')][_0x6e70('0x39')]?_0xecf336[_0x6e70('0x37')]:_0x2864a0[_0x6e70('0x32')];if(!_0x1952ea[_0x6e70('0x33')]['hasOwnProperty'](_0x6e70('0x3a'))){_0xecf336['limit']=qs[_0x6e70('0x22')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x22')]);_0xecf336[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x20')]);}_0xecf336[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3c')]);_0xecf336[_0x6e70('0x3d')]=qs[_0x6e70('0x35')](_['pick'](_0x1952ea['query'],_0x2864a0['filters']),_0x20a225);if(_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3e')]){_0xecf336[_0x6e70('0x3d')]=_[_0x6e70('0x3f')](_0xecf336[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x20a225,function(_0x572a71){if(_0x572a71[_0x6e70('0x31')]!==_0x6e70('0x40')){var _0x1c5cde={};_0x1c5cde[_0x572a71[_0x6e70('0x2c')]]={'$like':'%'+_0x1952ea[_0x6e70('0x33')][_0x6e70('0x3e')]+'%'};return _0x1c5cde;}})});}_0xecf336=_[_0x6e70('0x3f')]({},_0xecf336,_0x1952ea[_0x6e70('0x41')]);var _0x5be100={'where':_0xecf336[_0x6e70('0x3d')]};return db[_0x6e70('0x2f')][_0x6e70('0x42')](_0x5be100)[_0x6e70('0x2a')](function(_0x201da9){_0x396a67[_0x6e70('0x42')]=_0x201da9;if(_0x1952ea[_0x6e70('0x33')]['includeAll']){_0xecf336['include']=[{'all':!![]}];}return db['ZendeskAccount'][_0x6e70('0x43')](_0xecf336);})[_0x6e70('0x2a')](function(_0x83847b){_0x396a67[_0x6e70('0x44')]=_0x83847b;return _0x396a67;})[_0x6e70('0x2a')](respondWithFilteredResult(_0x406f29,_0xecf336))['catch'](handleError(_0x406f29,null));};exports[_0x6e70('0x45')]=function(_0x2a58d7,_0x2a2aca){var _0x52b197={'raw':![],'where':{'id':_0x2a58d7['params']['id']}},_0x544ad0={};_0x544ad0[_0x6e70('0x32')]=_['keys'](db[_0x6e70('0x2f')][_0x6e70('0x30')]);_0x544ad0[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x2a58d7['query']);_0x544ad0[_0x6e70('0x35')]=_['intersection'](_0x544ad0[_0x6e70('0x32')],_0x544ad0[_0x6e70('0x33')]);_0x52b197[_0x6e70('0x37')]=_[_0x6e70('0x36')](_0x544ad0['model'],qs[_0x6e70('0x38')](_0x2a58d7[_0x6e70('0x33')][_0x6e70('0x38')]));_0x52b197[_0x6e70('0x37')]=_0x52b197[_0x6e70('0x37')][_0x6e70('0x39')]?_0x52b197[_0x6e70('0x37')]:_0x544ad0['model'];if(_0x2a58d7[_0x6e70('0x33')][_0x6e70('0x46')]){_0x52b197[_0x6e70('0x47')]=[{'all':!![]}];}_0x52b197=_[_0x6e70('0x3f')]({},_0x52b197,_0x2a58d7[_0x6e70('0x41')]);return db[_0x6e70('0x2f')][_0x6e70('0x48')](_0x52b197)['then'](handleEntityNotFound(_0x2a2aca,null))[_0x6e70('0x2a')](respondWithResult(_0x2a2aca,null))['catch'](handleError(_0x2a2aca,null));};exports[_0x6e70('0x49')]=function(_0x3836e4,_0x4b351e){return db['ZendeskAccount'][_0x6e70('0x49')](_0x3836e4[_0x6e70('0x4a')],{})[_0x6e70('0x2a')](respondWithResult(_0x4b351e,0xc9))['catch'](handleError(_0x4b351e,null));};exports['update']=function(_0x238ebb,_0x11ac3d){if(_0x238ebb[_0x6e70('0x4a')]['id']){delete _0x238ebb[_0x6e70('0x4a')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x238ebb['params']['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x11ac3d,null))[_0x6e70('0x2a')](saveUpdates(_0x238ebb[_0x6e70('0x4a')],null))[_0x6e70('0x2a')](respondWithResult(_0x11ac3d,null))[_0x6e70('0x4b')](handleError(_0x11ac3d,null));};exports['destroy']=function(_0x4ae901,_0x2c5538){return db[_0x6e70('0x2f')][_0x6e70('0x48')]({'where':{'id':_0x4ae901[_0x6e70('0x4c')]['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x2c5538,null))['then'](removeEntity(_0x2c5538,null))[_0x6e70('0x4b')](handleError(_0x2c5538,null));};exports[_0x6e70('0x4d')]=function(_0x1fa320,_0x23ebfb,_0x3aba34){var _0x4a111a={};var _0x1142cd={};var _0x1dd242;var _0x2c20d3;return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x1fa320[_0x6e70('0x4c')]['id']}})['then'](handleEntityNotFound(_0x23ebfb,null))[_0x6e70('0x2a')](function(_0x8d425d){if(_0x8d425d){_0x1dd242=_0x8d425d;_0x1142cd['model']=_[_0x6e70('0x34')](db[_0x6e70('0x4f')]['rawAttributes']);_0x1142cd[_0x6e70('0x33')]=_[_0x6e70('0x34')](_0x1fa320[_0x6e70('0x33')]);_0x1142cd[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0x1142cd['model'],_0x1142cd[_0x6e70('0x33')]);_0x4a111a[_0x6e70('0x37')]=_[_0x6e70('0x36')](_0x1142cd[_0x6e70('0x32')],qs[_0x6e70('0x38')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x38')]));_0x4a111a[_0x6e70('0x37')]=_0x4a111a[_0x6e70('0x37')][_0x6e70('0x39')]?_0x4a111a[_0x6e70('0x37')]:_0x1142cd[_0x6e70('0x32')];_0x4a111a[_0x6e70('0x3b')]=qs[_0x6e70('0x3c')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x3c')]);_0x4a111a[_0x6e70('0x3d')]=qs[_0x6e70('0x35')](_[_0x6e70('0x50')](_0x1fa320[_0x6e70('0x33')],_0x1142cd['filters']));if(_0x1fa320[_0x6e70('0x33')][_0x6e70('0x3e')]){_0x4a111a[_0x6e70('0x3d')]=_[_0x6e70('0x3f')](_0x4a111a[_0x6e70('0x3d')],{'$or':_[_0x6e70('0x2e')](_0x4a111a['attributes'],function(_0x42bd85){var _0x6cabf0={};_0x6cabf0[_0x42bd85]={'$like':'%'+_0x1fa320['query'][_0x6e70('0x3e')]+'%'};return _0x6cabf0;})});}_0x4a111a=_[_0x6e70('0x3f')]({},_0x4a111a,_0x1fa320[_0x6e70('0x41')]);return _0x1dd242['getConfigurations'](_0x4a111a);}})['then'](function(_0x2f9be4){if(_0x2f9be4){_0x2c20d3=_0x2f9be4[_0x6e70('0x39')];if(!_0x1fa320[_0x6e70('0x33')][_0x6e70('0x51')](_0x6e70('0x3a'))){_0x4a111a[_0x6e70('0x22')]=qs[_0x6e70('0x22')](_0x1fa320['query']['limit']);_0x4a111a[_0x6e70('0x20')]=qs[_0x6e70('0x20')](_0x1fa320[_0x6e70('0x33')][_0x6e70('0x20')]);}return _0x1dd242['getConfigurations'](_0x4a111a);}})['then'](function(_0x2e972b){if(_0x2e972b){return _0x2e972b?{'count':_0x2c20d3,'rows':_0x2e972b}:null;}})[_0x6e70('0x2a')](respondWithResult(_0x23ebfb,null))['catch'](handleError(_0x23ebfb,null));};exports['addConfiguration']=function(_0x355708,_0x47fbed,_0x2a8fb7){if(_0x355708[_0x6e70('0x4a')]['id']){delete _0x355708[_0x6e70('0x4a')]['id'];}return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x355708[_0x6e70('0x4c')]['id']}})[_0x6e70('0x2a')](handleEntityNotFound(_0x47fbed,null))[_0x6e70('0x2a')](function(_0x570115){if(_0x570115){_0x355708[_0x6e70('0x4a')][_0x6e70('0x52')]=_0x570115['id'];_0x355708[_0x6e70('0x4a')][_0x6e70('0x53')]=integrations[_0x6e70('0x54')](_0x355708['body']['channel'],_0x355708['body'][_0x6e70('0x31')]);_0x355708[_0x6e70('0x4a')][_0x6e70('0x55')]=integrations['getDescriptions'](_0x355708['body'][_0x6e70('0x56')],_0x355708[_0x6e70('0x4a')][_0x6e70('0x31')]);return db[_0x6e70('0x4f')][_0x6e70('0x49')](_0x355708[_0x6e70('0x4a')],{'include':[{'model':db['ZendeskField'],'as':_0x6e70('0x53')},{'model':db[_0x6e70('0x57')],'as':_0x6e70('0x55')}]});}return null;})[_0x6e70('0x2a')](respondWithResult(_0x47fbed,null))['catch'](handleError(_0x47fbed,null));};exports[_0x6e70('0x58')]=function(_0x531097,_0x5b4046,_0x30487b){var _0x3249a5='';return db[_0x6e70('0x2f')][_0x6e70('0x4e')]({'where':{'id':_0x531097[_0x6e70('0x4c')]['id']},'attributes':['id',_0x6e70('0x59'),'password',_0x6e70('0x5a'),_0x6e70('0x5b'),_0x6e70('0x5c')]})[_0x6e70('0x2a')](handleEntityNotFound(_0x5b4046,null))[_0x6e70('0x2a')](function(_0x13c092){if(_0x13c092){_0x3249a5=_0x13c092[_0x6e70('0x5c')];var _0xd9b4a9=_0x3249a5[_0x6e70('0x5d')](-0x1);if(_0xd9b4a9==='/'){_0x3249a5=_0x3249a5[_0x6e70('0x5e')](0x0,_0x3249a5['lastIndexOf'](_0xd9b4a9));}var _0x44c877={'method':_0x6e70('0x5f'),'uri':util[_0x6e70('0x60')]('%s/%s',_0x3249a5,'ticket_fields'),'json':!![]};switch(_0x13c092[_0x6e70('0x5b')]){case _0x6e70('0x61'):_0x44c877[_0x6e70('0x62')]={'Authorization':util[_0x6e70('0x60')](_0x6e70('0x63'),new Buffer(util['format']('%s:%s',_0x13c092[_0x6e70('0x59')],_0x13c092[_0x6e70('0x61')]))['toString'](_0x6e70('0x64')))};break;case _0x6e70('0x5a'):_0x44c877[_0x6e70('0x62')]={'Authorization':util[_0x6e70('0x60')](_0x6e70('0x63'),new Buffer(util[_0x6e70('0x60')](_0x6e70('0x65'),_0x13c092[_0x6e70('0x59')],_0x13c092[_0x6e70('0x5a')]))[_0x6e70('0x66')](_0x6e70('0x64')))};break;default:throw new db[(_0x6e70('0x67'))][(_0x6e70('0x68'))](_0x6e70('0x69'));}return rp(_0x44c877);}})['then'](function(_0x5b3cb0){if(_0x5b3cb0){var _0x39ed95=['subject',_0x6e70('0x6a'),'group','assignee'];_[_0x6e70('0x6b')](_0x5b3cb0['ticket_fields'],function(_0x576069){return _0x39ed95[_0x6e70('0x6c')](_0x576069[_0x6e70('0x31')]);});return{'count':_0x5b3cb0[_0x6e70('0x6d')]['length'],'rows':_['map'](_0x5b3cb0['ticket_fields'],function(_0x3e7be7){return{'id':_0x3e7be7['id'],'name':_0x3e7be7['position']>0x7?_0x3e7be7[_0x6e70('0x6e')]:_0x3e7be7[_0x6e70('0x31')],'custom':_0x3e7be7[_0x6e70('0x6f')]>0x7?!![]:![],'options':_0x3e7be7[_0x6e70('0x70')]?_0x3e7be7[_0x6e70('0x70')]:_0x3e7be7[_0x6e70('0x71')]?_0x3e7be7[_0x6e70('0x71')]:[]};})};}})['then'](respondWithResult(_0x5b4046,null))[_0x6e70('0x4b')](function(_0x2493b0){var _0xb649a6=_0x531097['query'][_0x6e70('0x72')]?0x1f4:_0x2493b0[_0x6e70('0x73')]||0x1f4;logger[_0x6e70('0x74')](_0x6e70('0x75'),_0x6e70('0x58'),_0xb649a6,JSON[_0x6e70('0x76')](_0x2493b0));delete _0x2493b0[_0x6e70('0x2c')];if(_0xb649a6===0x191){_0xb649a6=0x190;}_0x5b4046[_0x6e70('0x23')](_0xb649a6)[_0x6e70('0x2d')](_0x531097['query'][_0x6e70('0x72')]?{'message':_0x6e70('0x77'),'statusCode':_0x2493b0['statusCode']}:_0x2493b0);});};
\ No newline at end of file
index 966f82e..b248799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd2=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_zendesk_accounts','util','../../config/logger','moment','bluebird'];(function(_0x3a2501,_0x40a515){var _0x4eaf55=function(_0x460380){while(--_0x460380){_0x3a2501['push'](_0x3a2501['shift']());}};_0x4eaf55(++_0x40a515);}(_0x6dd2,0x1f4));var _0x26dd=function(_0x2d3aae,_0x518765){_0x2d3aae=_0x2d3aae-0x0;var _0x47a134=_0x6dd2[_0x2d3aae];return _0x47a134;};'use strict';var _=require('lodash');var util=require(_0x26dd('0x0'));var logger=require(_0x26dd('0x1'))('api');var moment=require(_0x26dd('0x2'));var BPromise=require(_0x26dd('0x3'));var rp=require(_0x26dd('0x4'));var fs=require('fs');var path=require(_0x26dd('0x5'));var rimraf=require(_0x26dd('0x6'));var config=require(_0x26dd('0x7'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x26dd('0x8'));module[_0x26dd('0x9')]=function(_0x2c8136,_0x52578a){return _0x2c8136[_0x26dd('0xa')]('ZendeskAccount',attributes,{'tableName':_0x26dd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd40=['../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x30f610,_0x34a818){var _0x380d52=function(_0x114b68){while(--_0x114b68){_0x30f610['push'](_0x30f610['shift']());}};_0x380d52(++_0x34a818);}(_0xcd40,0x101));var _0x0cd4=function(_0x1dd6e2,_0x420d75){_0x1dd6e2=_0x1dd6e2-0x0;var _0x247718=_0xcd40[_0x1dd6e2];return _0x247718;};'use strict';var _=require(_0x0cd4('0x0'));var util=require(_0x0cd4('0x1'));var logger=require(_0x0cd4('0x2'))('api');var moment=require(_0x0cd4('0x3'));var BPromise=require(_0x0cd4('0x4'));var rp=require(_0x0cd4('0x5'));var fs=require('fs');var path=require(_0x0cd4('0x6'));var rimraf=require('rimraf');var config=require(_0x0cd4('0x7'));var attributes=require(_0x0cd4('0x8'));var integrations=require(_0x0cd4('0x9'));module['exports']=function(_0x42de6a,_0x5effbb){return _0x42de6a[_0x0cd4('0xa')](_0x0cd4('0xb'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6e2152..0502449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9439=['lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','ZendeskAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetZendeskAccount','stringify','ShowZendeskAccount','find','catch'];(function(_0x5a3fa6,_0x13eeef){var _0x5d5d93=function(_0xf373fd){while(--_0xf373fd){_0x5a3fa6['push'](_0x5a3fa6['shift']());}};_0x5d5d93(++_0x13eeef);}(_0x9439,0xb4));var _0x9943=function(_0x11ef94,_0x393f87){_0x11ef94=_0x11ef94-0x0;var _0x5e67c3=_0x9439[_0x11ef94];return _0x5e67c3;};'use strict';var _=require(_0x9943('0x0'));var util=require('util');var moment=require(_0x9943('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9943('0x2'));var db=require(_0x9943('0x3'))['db'];var utils=require(_0x9943('0x4'));var logger=require(_0x9943('0x5'))(_0x9943('0x6'));var config=require(_0x9943('0x7'));var jayson=require(_0x9943('0x8'));var client=jayson[_0x9943('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a815d,_0x5cdf40,_0x2dbc30){return new BPromise(function(_0x4c997b,_0x3fd4db){return client[_0x9943('0xa')](_0x5a815d,_0x2dbc30)[_0x9943('0xb')](function(_0x108058){logger['info'](_0x9943('0xc'),_0x5cdf40,'request\x20sent');logger[_0x9943('0xd')](_0x9943('0xe'),_0x5cdf40,_0x9943('0xf'),JSON['stringify'](_0x108058));if(_0x108058[_0x9943('0x10')]){if(_0x108058[_0x9943('0x10')][_0x9943('0x11')]===0x1f4){logger[_0x9943('0x10')](_0x9943('0xc'),_0x5cdf40,_0x108058[_0x9943('0x10')][_0x9943('0x12')]);return _0x3fd4db(_0x108058[_0x9943('0x10')]['message']);}logger[_0x9943('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x5cdf40,_0x108058['error']['message']);return _0x4c997b(_0x108058[_0x9943('0x10')][_0x9943('0x12')]);}else{logger[_0x9943('0x13')](_0x9943('0xc'),_0x5cdf40,'request\x20sent');_0x4c997b(_0x108058[_0x9943('0x14')][_0x9943('0x12')]);}})['catch'](function(_0x239cb3){logger[_0x9943('0x10')](_0x9943('0xc'),_0x5cdf40,_0x239cb3);_0x3fd4db(_0x239cb3);});});}exports['GetZendeskAccount']=function(_0x1cea65){var _0x233623=this;return new Promise(function(_0x4408e7,_0x5c0b73){return db[_0x9943('0x15')][_0x9943('0x16')]({'raw':_0x1cea65[_0x9943('0x17')]?_0x1cea65['options'][_0x9943('0x18')]===undefined?!![]:![]:!![],'where':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x19')]||null:null,'attributes':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')]['attributes']||null:null,'limit':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x1a')]||null:null,'include':_0x1cea65[_0x9943('0x17')]?_0x1cea65[_0x9943('0x17')][_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x1cea65[_0x9943('0x17')][_0x9943('0x1b')],function(_0x56b237){return{'model':db[_0x56b237[_0x9943('0x1d')]],'as':_0x56b237['as'],'attributes':_0x56b237[_0x9943('0x1e')],'include':_0x56b237[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x56b237[_0x9943('0x1b')],function(_0x39058c){return{'model':db[_0x39058c['model']],'as':_0x39058c['as'],'attributes':_0x39058c['attributes'],'include':_0x39058c[_0x9943('0x1b')]?_['map'](_0x39058c[_0x9943('0x1b')],function(_0x3dd294){return{'model':db[_0x3dd294[_0x9943('0x1d')]],'as':_0x3dd294['as'],'attributes':_0x3dd294[_0x9943('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9943('0xb')](function(_0x3cf9b1){logger[_0x9943('0x13')]('GetZendeskAccount',_0x1cea65);logger[_0x9943('0xd')](_0x9943('0x1f'),_0x1cea65,JSON[_0x9943('0x20')](_0x3cf9b1));_0x4408e7(_0x3cf9b1);})['catch'](function(_0x186741){logger[_0x9943('0x10')]('GetZendeskAccount',_0x186741[_0x9943('0x12')],_0x1cea65);_0x5c0b73(_0x233623['error'](0x1f4,_0x186741[_0x9943('0x12')]));});});};exports[_0x9943('0x21')]=function(_0x469f5a){var _0x389a9d=this;return new Promise(function(_0xe03631,_0x38f4ee){return db[_0x9943('0x15')][_0x9943('0x22')]({'raw':_0x469f5a['options']?_0x469f5a[_0x9943('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x469f5a['options']?_0x469f5a[_0x9943('0x17')][_0x9943('0x19')]||null:null,'attributes':_0x469f5a[_0x9943('0x17')]?_0x469f5a[_0x9943('0x17')][_0x9943('0x1e')]||null:null,'include':_0x469f5a[_0x9943('0x17')]?_0x469f5a['options']['include']?_[_0x9943('0x1c')](_0x469f5a['options'][_0x9943('0x1b')],function(_0x31581f){return{'model':db[_0x31581f[_0x9943('0x1d')]],'as':_0x31581f['as'],'attributes':_0x31581f[_0x9943('0x1e')],'include':_0x31581f[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0x31581f[_0x9943('0x1b')],function(_0xe8f235){return{'model':db[_0xe8f235[_0x9943('0x1d')]],'as':_0xe8f235['as'],'attributes':_0xe8f235[_0x9943('0x1e')],'include':_0xe8f235[_0x9943('0x1b')]?_[_0x9943('0x1c')](_0xe8f235[_0x9943('0x1b')],function(_0xbda969){return{'model':db[_0xbda969[_0x9943('0x1d')]],'as':_0xbda969['as'],'attributes':_0xbda969['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ec74e){logger[_0x9943('0x13')](_0x9943('0x21'),_0x469f5a);logger[_0x9943('0xd')](_0x9943('0x21'),_0x469f5a,JSON[_0x9943('0x20')](_0x1ec74e));_0xe03631(_0x1ec74e);})[_0x9943('0x23')](function(_0xa1057){logger[_0x9943('0x10')](_0x9943('0x21'),_0xa1057['message'],_0x469f5a);_0x38f4ee(_0x389a9d[_0x9943('0x10')](0x1f4,_0xa1057[_0x9943('0x12')]));});});};
\ No newline at end of file
+var _0x5a78=['request','then','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskAccount,\x20%s,\x20%s','info','GetZendeskAccount','ZendeskAccount','findAll','options','raw','attributes','limit','include','map','model','ShowZendeskAccount','find','where','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x8b0f43,_0x1c57b8){var _0x3f4425=function(_0x16e59a){while(--_0x16e59a){_0x8b0f43['push'](_0x8b0f43['shift']());}};_0x3f4425(++_0x1c57b8);}(_0x5a78,0x1b0));var _0x85a7=function(_0x2eb330,_0x196cb7){_0x2eb330=_0x2eb330-0x0;var _0x3e5973=_0x5a78[_0x2eb330];return _0x3e5973;};'use strict';var _=require(_0x85a7('0x0'));var util=require(_0x85a7('0x1'));var moment=require(_0x85a7('0x2'));var BPromise=require(_0x85a7('0x3'));var rs=require(_0x85a7('0x4'));var fs=require('fs');var Redis=require(_0x85a7('0x5'));var db=require(_0x85a7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x85a7('0x7'))('rpc');var config=require(_0x85a7('0x8'));var jayson=require(_0x85a7('0x9'));var client=jayson[_0x85a7('0xa')][_0x85a7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x8ccd32,_0x29ce4f,_0xeb62b1){return new BPromise(function(_0x56f4d5,_0x2ca5a2){return client[_0x85a7('0xc')](_0x8ccd32,_0xeb62b1)[_0x85a7('0xd')](function(_0x14dc5c){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x29ce4f,_0x85a7('0xe'));logger[_0x85a7('0xf')](_0x85a7('0x10'),_0x29ce4f,'request\x20sent',JSON[_0x85a7('0x11')](_0x14dc5c));if(_0x14dc5c[_0x85a7('0x12')]){if(_0x14dc5c[_0x85a7('0x12')][_0x85a7('0x13')]===0x1f4){logger[_0x85a7('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x29ce4f,_0x14dc5c[_0x85a7('0x12')][_0x85a7('0x14')]);return _0x2ca5a2(_0x14dc5c[_0x85a7('0x12')][_0x85a7('0x14')]);}logger[_0x85a7('0x12')](_0x85a7('0x15'),_0x29ce4f,_0x14dc5c['error']['message']);return _0x56f4d5(_0x14dc5c['error'][_0x85a7('0x14')]);}else{logger[_0x85a7('0x16')]('ZendeskAccount,\x20%s,\x20%s',_0x29ce4f,_0x85a7('0xe'));_0x56f4d5(_0x14dc5c['result'][_0x85a7('0x14')]);}})['catch'](function(_0x2d015b){logger[_0x85a7('0x12')](_0x85a7('0x15'),_0x29ce4f,_0x2d015b);_0x2ca5a2(_0x2d015b);});});}exports[_0x85a7('0x17')]=function(_0x508ea2){var _0x131192=this;return new Promise(function(_0x5d293b,_0x2b2d61){return db[_0x85a7('0x18')][_0x85a7('0x19')]({'raw':_0x508ea2['options']?_0x508ea2[_0x85a7('0x1a')][_0x85a7('0x1b')]===undefined?!![]:![]:!![],'where':_0x508ea2[_0x85a7('0x1a')]?_0x508ea2[_0x85a7('0x1a')]['where']||null:null,'attributes':_0x508ea2[_0x85a7('0x1a')]?_0x508ea2[_0x85a7('0x1a')][_0x85a7('0x1c')]||null:null,'limit':_0x508ea2[_0x85a7('0x1a')]?_0x508ea2[_0x85a7('0x1a')][_0x85a7('0x1d')]||null:null,'include':_0x508ea2[_0x85a7('0x1a')]?_0x508ea2[_0x85a7('0x1a')][_0x85a7('0x1e')]?_[_0x85a7('0x1f')](_0x508ea2[_0x85a7('0x1a')][_0x85a7('0x1e')],function(_0x4a6b78){return{'model':db[_0x4a6b78[_0x85a7('0x20')]],'as':_0x4a6b78['as'],'attributes':_0x4a6b78[_0x85a7('0x1c')],'include':_0x4a6b78['include']?_[_0x85a7('0x1f')](_0x4a6b78[_0x85a7('0x1e')],function(_0x1dbaf0){return{'model':db[_0x1dbaf0[_0x85a7('0x20')]],'as':_0x1dbaf0['as'],'attributes':_0x1dbaf0[_0x85a7('0x1c')],'include':_0x1dbaf0[_0x85a7('0x1e')]?_[_0x85a7('0x1f')](_0x1dbaf0[_0x85a7('0x1e')],function(_0xe0e426){return{'model':db[_0xe0e426[_0x85a7('0x20')]],'as':_0xe0e426['as'],'attributes':_0xe0e426[_0x85a7('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x314a7b){logger[_0x85a7('0x16')](_0x85a7('0x17'),_0x508ea2);logger[_0x85a7('0xf')](_0x85a7('0x17'),_0x508ea2,JSON['stringify'](_0x314a7b));_0x5d293b(_0x314a7b);})['catch'](function(_0x2931bc){logger[_0x85a7('0x12')]('GetZendeskAccount',_0x2931bc['message'],_0x508ea2);_0x2b2d61(_0x131192[_0x85a7('0x12')](0x1f4,_0x2931bc['message']));});});};exports[_0x85a7('0x21')]=function(_0x57a8a0){var _0x44bcbb=this;return new Promise(function(_0xbccf31,_0x1d6cea){return db[_0x85a7('0x18')][_0x85a7('0x22')]({'raw':_0x57a8a0[_0x85a7('0x1a')]?_0x57a8a0[_0x85a7('0x1a')][_0x85a7('0x1b')]===undefined?!![]:![]:!![],'where':_0x57a8a0[_0x85a7('0x1a')]?_0x57a8a0[_0x85a7('0x1a')][_0x85a7('0x23')]||null:null,'attributes':_0x57a8a0[_0x85a7('0x1a')]?_0x57a8a0[_0x85a7('0x1a')][_0x85a7('0x1c')]||null:null,'include':_0x57a8a0[_0x85a7('0x1a')]?_0x57a8a0['options'][_0x85a7('0x1e')]?_[_0x85a7('0x1f')](_0x57a8a0[_0x85a7('0x1a')][_0x85a7('0x1e')],function(_0xc3c560){return{'model':db[_0xc3c560[_0x85a7('0x20')]],'as':_0xc3c560['as'],'attributes':_0xc3c560['attributes'],'include':_0xc3c560[_0x85a7('0x1e')]?_[_0x85a7('0x1f')](_0xc3c560[_0x85a7('0x1e')],function(_0x32e441){return{'model':db[_0x32e441['model']],'as':_0x32e441['as'],'attributes':_0x32e441['attributes'],'include':_0x32e441[_0x85a7('0x1e')]?_[_0x85a7('0x1f')](_0x32e441[_0x85a7('0x1e')],function(_0x230427){return{'model':db[_0x230427[_0x85a7('0x20')]],'as':_0x230427['as'],'attributes':_0x230427[_0x85a7('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x85a7('0xd')](function(_0xc8cd73){logger['info'](_0x85a7('0x21'),_0x57a8a0);logger[_0x85a7('0xf')]('ShowZendeskAccount',_0x57a8a0,JSON['stringify'](_0xc8cd73));_0xbccf31(_0xc8cd73);})[_0x85a7('0x24')](function(_0x3470f1){logger[_0x85a7('0x12')](_0x85a7('0x21'),_0x3470f1[_0x85a7('0x14')],_0x57a8a0);_0x1d6cea(_0x44bcbb[_0x85a7('0x12')](0x1f4,_0x3470f1[_0x85a7('0x14')]));});});};
\ No newline at end of file
index 8822639..ee54f32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','post','create','put','update','delete','exports','multer','util','path','express','Router'];(function(_0x279c9c,_0x308efc){var _0x5497f1=function(_0x29d1f2){while(--_0x29d1f2){_0x279c9c['push'](_0x279c9c['shift']());}};_0x5497f1(++_0x308efc);}(_0xe706,0xa3));var _0x6e70=function(_0x5b311b,_0x3e0280){_0x5b311b=_0x5b311b-0x0;var _0x4fa0de=_0xe706[_0x5b311b];return _0x4fa0de;};'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('0xa')](_0x6e70('0x11'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0xa')](_0x6e70('0x13'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x6e70('0xa')](_0x6e70('0x14'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x15')]);router[_0x6e70('0x16')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x17')]);router[_0x6e70('0x16')]('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x6e70('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x6e70('0x19')]);router[_0x6e70('0x1a')]('/:id',auth[_0x6e70('0xb')](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
+var _0x4483=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects'];(function(_0x50ee83,_0x106751){var _0x3099ea=function(_0x1d38a4){while(--_0x1d38a4){_0x50ee83['push'](_0x50ee83['shift']());}};_0x3099ea(++_0x106751);}(_0x4483,0x1a3));var _0x3448=function(_0x62e16f,_0x592754){_0x62e16f=_0x62e16f-0x0;var _0x5884f4=_0x4483[_0x62e16f];return _0x5884f4;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id/fields',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x9')](_0x3448('0x11'),auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x3448('0x13')]);router[_0x3448('0x14')]('/',auth['isAuthenticated'](),controller[_0x3448('0x15')]);router[_0x3448('0x14')](_0x3448('0x16'),auth['isAuthenticated'](),controller[_0x3448('0x17')]);router[_0x3448('0x18')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x19')]);router[_0x3448('0x1a')]('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0x1b')]);module[_0x3448('0x1c')]=router;
\ No newline at end of file
index 75576ed..a3120cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84e=['STRING','sequelize','exports'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xd84e,0xe8));var _0xed84=function(_0x371db0,_0x2a0961){_0x371db0=_0x371db0-0x0;var _0x359c07=_0xd84e[_0x371db0];return _0x359c07;};'use strict';var Sequelize=require(_0xed84('0x0'));module[_0xed84('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xed84('0x2')]}};
\ No newline at end of file
+var _0xf2a9=['STRING','exports'];(function(_0x460c7e,_0x74005e){var _0x29ea7f=function(_0x5e66c9){while(--_0x5e66c9){_0x460c7e['push'](_0x460c7e['shift']());}};_0x29ea7f(++_0x74005e);}(_0xf2a9,0x12b));var _0x9f2a=function(_0x5ce857,_0x4dde19){_0x5ce857=_0x5ce857-0x0;var _0x1c3139=_0xf2a9[_0x5ce857];return _0x1c3139;};'use strict';var Sequelize=require('sequelize');module[_0x9f2a('0x0')]={'name':{'type':Sequelize[_0x9f2a('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f36c329..5f4fda9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe46=['ZendeskField','order','sort','getFields','getSubjects','getDescriptions','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/environment','sendStatus','status','end','json','limit','undefined','count','offset','apply','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','length','hasOwnProperty','nolimit','where','pick','merge','VIRTUAL','filter','options','includeAll','include','ZendeskConfiguration','rows','catch','show','attributes','find','create','body','update','params','findOne'];(function(_0x176e10,_0x5839d7){var _0x216cda=function(_0x4da88b){while(--_0x4da88b){_0x176e10['push'](_0x176e10['shift']());}};_0x216cda(++_0x5839d7);}(_0xfe46,0xa0));var _0x6fe4=function(_0x21e8f9,_0x24ce8e){_0x21e8f9=_0x21e8f9-0x0;var _0x5946e=_0xfe46[_0x21e8f9];return _0x5946e;};'use strict';var emlformat=require(_0x6fe4('0x0'));var rimraf=require(_0x6fe4('0x1'));var zipdir=require(_0x6fe4('0x2'));var jsonpatch=require(_0x6fe4('0x3'));var rp=require(_0x6fe4('0x4'));var moment=require(_0x6fe4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6fe4('0x6'));var path=require('path');var sox=require(_0x6fe4('0x7'));var csv=require(_0x6fe4('0x8'));var ejs=require(_0x6fe4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6fe4('0xa'));var squel=require(_0x6fe4('0xb'));var crypto=require(_0x6fe4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6fe4('0xd'));var toCsv=require(_0x6fe4('0x8'));var querystring=require(_0x6fe4('0xe'));var Papa=require(_0x6fe4('0xf'));var Redis=require('ioredis');var authService=require(_0x6fe4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fe4('0x11'))(_0x6fe4('0x12'));var utils=require('../../config/utils');var config=require(_0x6fe4('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29d79e,_0x2a936f){_0x2a936f=_0x2a936f||0xcc;return function(_0x59bb3f){if(_0x59bb3f){return _0x29d79e[_0x6fe4('0x14')](_0x2a936f);}return _0x29d79e[_0x6fe4('0x15')](_0x2a936f)[_0x6fe4('0x16')]();};}function respondWithResult(_0x6774da,_0x4ee3a9){_0x4ee3a9=_0x4ee3a9||0xc8;return function(_0x2398aa){if(_0x2398aa){return _0x6774da[_0x6fe4('0x15')](_0x4ee3a9)[_0x6fe4('0x17')](_0x2398aa);}};}function respondWithFilteredResult(_0x2b2537,_0x25d502){return function(_0x1a58ed){if(_0x1a58ed){var _0x1273da=typeof _0x25d502['offset']==='undefined'&&typeof _0x25d502[_0x6fe4('0x18')]===_0x6fe4('0x19');var _0x3c6784=_0x1a58ed[_0x6fe4('0x1a')];var _0x2cdc76=_0x1273da?0x0:_0x25d502[_0x6fe4('0x1b')];var _0x4217c5=_0x1273da?_0x1a58ed['count']:_0x25d502[_0x6fe4('0x1b')]+_0x25d502[_0x6fe4('0x18')];var _0x545efd;if(_0x4217c5>=_0x3c6784){_0x4217c5=_0x3c6784;_0x545efd=0xc8;}else{_0x545efd=0xce;}_0x2b2537[_0x6fe4('0x15')](_0x545efd);return _0x2b2537['set']('Content-Range',_0x2cdc76+'-'+_0x4217c5+'/'+_0x3c6784)['json'](_0x1a58ed);}return null;};}function patchUpdates(_0x2b3536){return function(_0x2a9a58){try{jsonpatch[_0x6fe4('0x1c')](_0x2a9a58,_0x2b3536,!![]);}catch(_0x3af1e2){return BPromise['reject'](_0x3af1e2);}return _0x2a9a58['save']();};}function saveUpdates(_0x34402e,_0x21e2ee){return function(_0x479506){if(_0x479506){return _0x479506['update'](_0x34402e)[_0x6fe4('0x1d')](function(_0x3a0682){return _0x3a0682;});}return null;};}function removeEntity(_0x555aa2,_0x1cfeed){return function(_0x376edd){if(_0x376edd){return _0x376edd[_0x6fe4('0x1e')]()[_0x6fe4('0x1d')](function(){_0x555aa2[_0x6fe4('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a0ab9,_0x280c77){return function(_0x207783){if(!_0x207783){_0x3a0ab9[_0x6fe4('0x14')](0x194);}return _0x207783;};}function handleError(_0x48e158,_0xb07ecd){_0xb07ecd=_0xb07ecd||0x1f4;return function(_0x3a6cc4){logger[_0x6fe4('0x1f')](_0x3a6cc4[_0x6fe4('0x20')]);if(_0x3a6cc4[_0x6fe4('0x21')]){delete _0x3a6cc4['name'];}_0x48e158['status'](_0xb07ecd)[_0x6fe4('0x22')](_0x3a6cc4);};}exports[_0x6fe4('0x23')]=function(_0x34ca35,_0x417212){var _0x4cfc57={},_0x3fff9e={},_0xe9795c={'count':0x0,'rows':[]};var _0x276eb5=_['map'](db['ZendeskConfiguration'][_0x6fe4('0x24')],function(_0x102dd2){return{'name':_0x102dd2[_0x6fe4('0x25')],'type':_0x102dd2[_0x6fe4('0x26')]['key']};});_0x3fff9e[_0x6fe4('0x27')]=_[_0x6fe4('0x28')](_0x276eb5,_0x6fe4('0x21'));_0x3fff9e[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x34ca35[_0x6fe4('0x29')]);_0x3fff9e[_0x6fe4('0x2b')]=_[_0x6fe4('0x2c')](_0x3fff9e['model'],_0x3fff9e['query']);_0x4cfc57['attributes']=_['intersection'](_0x3fff9e[_0x6fe4('0x27')],qs['fields'](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x4cfc57['attributes']=_0x4cfc57['attributes'][_0x6fe4('0x2e')]?_0x4cfc57['attributes']:_0x3fff9e[_0x6fe4('0x27')];if(!_0x34ca35['query'][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x4cfc57['limit']=qs[_0x6fe4('0x18')](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x18')]);_0x4cfc57[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x1b')]);}_0x4cfc57['order']=qs['sort'](_0x34ca35[_0x6fe4('0x29')]['sort']);_0x4cfc57[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x34ca35[_0x6fe4('0x29')],_0x3fff9e[_0x6fe4('0x2b')]),_0x276eb5);if(_0x34ca35[_0x6fe4('0x29')]['filter']){_0x4cfc57[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x4cfc57[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0x276eb5,function(_0x538c63){if(_0x538c63[_0x6fe4('0x26')]!==_0x6fe4('0x34')){var _0x311b29={};_0x311b29[_0x538c63[_0x6fe4('0x21')]]={'$like':'%'+_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x35')]+'%'};return _0x311b29;}})});}_0x4cfc57=_[_0x6fe4('0x33')]({},_0x4cfc57,_0x34ca35[_0x6fe4('0x36')]);var _0x29eb62={'where':_0x4cfc57[_0x6fe4('0x31')]};return db['ZendeskConfiguration'][_0x6fe4('0x1a')](_0x29eb62)['then'](function(_0x39c9dc){_0xe9795c[_0x6fe4('0x1a')]=_0x39c9dc;if(_0x34ca35[_0x6fe4('0x29')][_0x6fe4('0x37')]){_0x4cfc57[_0x6fe4('0x38')]=[{'all':!![]}];}return db[_0x6fe4('0x39')]['findAll'](_0x4cfc57);})[_0x6fe4('0x1d')](function(_0x433c6f){_0xe9795c[_0x6fe4('0x3a')]=_0x433c6f;return _0xe9795c;})[_0x6fe4('0x1d')](respondWithFilteredResult(_0x417212,_0x4cfc57))[_0x6fe4('0x3b')](handleError(_0x417212,null));};exports[_0x6fe4('0x3c')]=function(_0x1c6c3f,_0x7a1597){var _0x4a62fb={'raw':![],'where':{'id':_0x1c6c3f['params']['id']}},_0x287c98={};_0x287c98[_0x6fe4('0x27')]=_['keys'](db[_0x6fe4('0x39')]['rawAttributes']);_0x287c98[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x1c6c3f[_0x6fe4('0x29')]);_0x287c98['filters']=_[_0x6fe4('0x2c')](_0x287c98[_0x6fe4('0x27')],_0x287c98[_0x6fe4('0x29')]);_0x4a62fb[_0x6fe4('0x3d')]=_[_0x6fe4('0x2c')](_0x287c98[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x1c6c3f['query'][_0x6fe4('0x2d')]));_0x4a62fb['attributes']=_0x4a62fb[_0x6fe4('0x3d')]['length']?_0x4a62fb['attributes']:_0x287c98[_0x6fe4('0x27')];if(_0x1c6c3f['query'][_0x6fe4('0x37')]){_0x4a62fb[_0x6fe4('0x38')]=[{'all':!![]}];}_0x4a62fb=_[_0x6fe4('0x33')]({},_0x4a62fb,_0x1c6c3f[_0x6fe4('0x36')]);return db['ZendeskConfiguration'][_0x6fe4('0x3e')](_0x4a62fb)['then'](handleEntityNotFound(_0x7a1597,null))['then'](respondWithResult(_0x7a1597,null))[_0x6fe4('0x3b')](handleError(_0x7a1597,null));};exports[_0x6fe4('0x3f')]=function(_0x17d486,_0x3f4cff){return db['ZendeskConfiguration']['create'](_0x17d486[_0x6fe4('0x40')],{})[_0x6fe4('0x1d')](respondWithResult(_0x3f4cff,0xc9))[_0x6fe4('0x3b')](handleError(_0x3f4cff,null));};exports[_0x6fe4('0x41')]=function(_0x508ed2,_0x465290){if(_0x508ed2[_0x6fe4('0x40')]['id']){delete _0x508ed2[_0x6fe4('0x40')]['id'];}return db[_0x6fe4('0x39')][_0x6fe4('0x3e')]({'where':{'id':_0x508ed2[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x465290,null))['then'](saveUpdates(_0x508ed2[_0x6fe4('0x40')],null))[_0x6fe4('0x1d')](respondWithResult(_0x465290,null))[_0x6fe4('0x3b')](handleError(_0x465290,null));};exports['destroy']=function(_0x1453ea,_0x4dd1c8){return db[_0x6fe4('0x39')][_0x6fe4('0x3e')]({'where':{'id':_0x1453ea[_0x6fe4('0x42')]['id']}})['then'](handleEntityNotFound(_0x4dd1c8,null))[_0x6fe4('0x1d')](removeEntity(_0x4dd1c8,null))[_0x6fe4('0x3b')](handleError(_0x4dd1c8,null));};exports['getFields']=function(_0x493977,_0x142d20,_0x12fc40){var _0x43dca0={};var _0x38c8f9={};var _0xdb0ec2;var _0x126924;return db['ZendeskConfiguration'][_0x6fe4('0x43')]({'where':{'id':_0x493977['params']['id']}})['then'](handleEntityNotFound(_0x142d20,null))['then'](function(_0xddf13f){if(_0xddf13f){_0xdb0ec2=_0xddf13f;_0x38c8f9['model']=_['keys'](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x38c8f9[_0x6fe4('0x29')]=_['keys'](_0x493977[_0x6fe4('0x29')]);_0x38c8f9[_0x6fe4('0x2b')]=_[_0x6fe4('0x2c')](_0x38c8f9[_0x6fe4('0x27')],_0x38c8f9['query']);_0x43dca0['attributes']=_[_0x6fe4('0x2c')](_0x38c8f9[_0x6fe4('0x27')],qs['fields'](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x43dca0[_0x6fe4('0x3d')]=_0x43dca0[_0x6fe4('0x3d')]['length']?_0x43dca0[_0x6fe4('0x3d')]:_0x38c8f9['model'];_0x43dca0[_0x6fe4('0x45')]=qs[_0x6fe4('0x46')](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x46')]);_0x43dca0[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x493977[_0x6fe4('0x29')],_0x38c8f9['filters']));if(_0x493977[_0x6fe4('0x29')]['filter']){_0x43dca0[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x43dca0[_0x6fe4('0x31')],{'$or':_['map'](_0x43dca0[_0x6fe4('0x3d')],function(_0x813374){var _0x52fe6d={};_0x52fe6d[_0x813374]={'$like':'%'+_0x493977[_0x6fe4('0x29')]['filter']+'%'};return _0x52fe6d;})});}_0x43dca0=_[_0x6fe4('0x33')]({},_0x43dca0,_0x493977[_0x6fe4('0x36')]);return _0xdb0ec2['getFields'](_0x43dca0);}})[_0x6fe4('0x1d')](function(_0x39afe8){if(_0x39afe8){_0x126924=_0x39afe8[_0x6fe4('0x2e')];if(!_0x493977[_0x6fe4('0x29')][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x43dca0[_0x6fe4('0x18')]=qs['limit'](_0x493977[_0x6fe4('0x29')][_0x6fe4('0x18')]);_0x43dca0[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x493977[_0x6fe4('0x29')]['offset']);}return _0xdb0ec2[_0x6fe4('0x47')](_0x43dca0);}})[_0x6fe4('0x1d')](function(_0x4055fa){if(_0x4055fa){return _0x4055fa?{'count':_0x126924,'rows':_0x4055fa}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0x142d20,null))[_0x6fe4('0x3b')](handleError(_0x142d20,null));};exports['getSubjects']=function(_0x2fb718,_0x3e5464,_0x39c22d){var _0xf62d04={};var _0x917568={};var _0x1dd38c;var _0x24a911;return db['ZendeskConfiguration'][_0x6fe4('0x43')]({'where':{'id':_0x2fb718[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x3e5464,null))[_0x6fe4('0x1d')](function(_0x392dfc){if(_0x392dfc){_0x1dd38c=_0x392dfc;_0x917568[_0x6fe4('0x27')]=_[_0x6fe4('0x2a')](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x917568[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x2fb718[_0x6fe4('0x29')]);_0x917568[_0x6fe4('0x2b')]=_['intersection'](_0x917568[_0x6fe4('0x27')],_0x917568[_0x6fe4('0x29')]);_0xf62d04[_0x6fe4('0x3d')]=_['intersection'](_0x917568['model'],qs[_0x6fe4('0x2d')](_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0xf62d04[_0x6fe4('0x3d')]=_0xf62d04['attributes']['length']?_0xf62d04['attributes']:_0x917568[_0x6fe4('0x27')];_0xf62d04['order']=qs[_0x6fe4('0x46')](_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x46')]);_0xf62d04[_0x6fe4('0x31')]=qs[_0x6fe4('0x2b')](_[_0x6fe4('0x32')](_0x2fb718[_0x6fe4('0x29')],_0x917568[_0x6fe4('0x2b')]));if(_0x2fb718[_0x6fe4('0x29')][_0x6fe4('0x35')]){_0xf62d04['where']=_['merge'](_0xf62d04[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0xf62d04[_0x6fe4('0x3d')],function(_0x363f1e){var _0x2a382f={};_0x2a382f[_0x363f1e]={'$like':'%'+_0x2fb718['query'][_0x6fe4('0x35')]+'%'};return _0x2a382f;})});}_0xf62d04=_[_0x6fe4('0x33')]({},_0xf62d04,_0x2fb718[_0x6fe4('0x36')]);return _0x1dd38c['getSubjects'](_0xf62d04);}})['then'](function(_0x3d2af3){if(_0x3d2af3){_0x24a911=_0x3d2af3[_0x6fe4('0x2e')];if(!_0x2fb718[_0x6fe4('0x29')]['hasOwnProperty']('nolimit')){_0xf62d04[_0x6fe4('0x18')]=qs[_0x6fe4('0x18')](_0x2fb718[_0x6fe4('0x29')]['limit']);_0xf62d04['offset']=qs[_0x6fe4('0x1b')](_0x2fb718[_0x6fe4('0x29')]['offset']);}return _0x1dd38c[_0x6fe4('0x48')](_0xf62d04);}})[_0x6fe4('0x1d')](function(_0x2655aa){if(_0x2655aa){return _0x2655aa?{'count':_0x24a911,'rows':_0x2655aa}:null;}})['then'](respondWithResult(_0x3e5464,null))[_0x6fe4('0x3b')](handleError(_0x3e5464,null));};exports['getDescriptions']=function(_0x1111d6,_0x2bfff0,_0x8bb869){var _0x61c936={};var _0x2c5b29={};var _0x3a05a3;var _0x1002a9;return db[_0x6fe4('0x39')][_0x6fe4('0x43')]({'where':{'id':_0x1111d6[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x2bfff0,null))['then'](function(_0x422df3){if(_0x422df3){_0x3a05a3=_0x422df3;_0x2c5b29[_0x6fe4('0x27')]=_['keys'](db[_0x6fe4('0x44')][_0x6fe4('0x24')]);_0x2c5b29[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x1111d6[_0x6fe4('0x29')]);_0x2c5b29['filters']=_[_0x6fe4('0x2c')](_0x2c5b29[_0x6fe4('0x27')],_0x2c5b29[_0x6fe4('0x29')]);_0x61c936['attributes']=_['intersection'](_0x2c5b29[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x1111d6[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x61c936[_0x6fe4('0x3d')]=_0x61c936[_0x6fe4('0x3d')][_0x6fe4('0x2e')]?_0x61c936['attributes']:_0x2c5b29[_0x6fe4('0x27')];_0x61c936[_0x6fe4('0x45')]=qs[_0x6fe4('0x46')](_0x1111d6['query']['sort']);_0x61c936[_0x6fe4('0x31')]=qs['filters'](_[_0x6fe4('0x32')](_0x1111d6[_0x6fe4('0x29')],_0x2c5b29[_0x6fe4('0x2b')]));if(_0x1111d6['query'][_0x6fe4('0x35')]){_0x61c936[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x61c936[_0x6fe4('0x31')],{'$or':_[_0x6fe4('0x28')](_0x61c936['attributes'],function(_0x20827d){var _0xeccd77={};_0xeccd77[_0x20827d]={'$like':'%'+_0x1111d6['query'][_0x6fe4('0x35')]+'%'};return _0xeccd77;})});}_0x61c936=_[_0x6fe4('0x33')]({},_0x61c936,_0x1111d6[_0x6fe4('0x36')]);return _0x3a05a3[_0x6fe4('0x49')](_0x61c936);}})[_0x6fe4('0x1d')](function(_0x3e3870){if(_0x3e3870){_0x1002a9=_0x3e3870[_0x6fe4('0x2e')];if(!_0x1111d6['query'][_0x6fe4('0x2f')]('nolimit')){_0x61c936[_0x6fe4('0x18')]=qs[_0x6fe4('0x18')](_0x1111d6['query'][_0x6fe4('0x18')]);_0x61c936[_0x6fe4('0x1b')]=qs['offset'](_0x1111d6[_0x6fe4('0x29')][_0x6fe4('0x1b')]);}return _0x3a05a3[_0x6fe4('0x49')](_0x61c936);}})['then'](function(_0x5253c4){if(_0x5253c4){return _0x5253c4?{'count':_0x1002a9,'rows':_0x5253c4}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0x2bfff0,null))[_0x6fe4('0x3b')](handleError(_0x2bfff0,null));};exports['getTags']=function(_0x10bf38,_0xac955c,_0x542c63){var _0x58638b={};var _0x3fb958={};var _0x3464b7;var _0x15dd72;return db[_0x6fe4('0x39')]['findOne']({'where':{'id':_0x10bf38['params']['id']}})['then'](handleEntityNotFound(_0xac955c,null))[_0x6fe4('0x1d')](function(_0x291099){if(_0x291099){_0x3464b7=_0x291099;_0x3fb958[_0x6fe4('0x27')]=_[_0x6fe4('0x2a')](db['Tag'][_0x6fe4('0x24')]);_0x3fb958[_0x6fe4('0x29')]=_[_0x6fe4('0x2a')](_0x10bf38[_0x6fe4('0x29')]);_0x3fb958[_0x6fe4('0x2b')]=_['intersection'](_0x3fb958[_0x6fe4('0x27')],_0x3fb958[_0x6fe4('0x29')]);_0x58638b[_0x6fe4('0x3d')]=_[_0x6fe4('0x2c')](_0x3fb958[_0x6fe4('0x27')],qs[_0x6fe4('0x2d')](_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x2d')]));_0x58638b[_0x6fe4('0x3d')]=_0x58638b[_0x6fe4('0x3d')]['length']?_0x58638b[_0x6fe4('0x3d')]:_0x3fb958[_0x6fe4('0x27')];_0x58638b['order']=qs['sort'](_0x10bf38['query'][_0x6fe4('0x46')]);_0x58638b[_0x6fe4('0x31')]=qs['filters'](_[_0x6fe4('0x32')](_0x10bf38[_0x6fe4('0x29')],_0x3fb958[_0x6fe4('0x2b')]));if(_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x35')]){_0x58638b[_0x6fe4('0x31')]=_[_0x6fe4('0x33')](_0x58638b[_0x6fe4('0x31')],{'$or':_['map'](_0x58638b['attributes'],function(_0x4fff94){var _0x1b72e5={};_0x1b72e5[_0x4fff94]={'$like':'%'+_0x10bf38[_0x6fe4('0x29')]['filter']+'%'};return _0x1b72e5;})});}_0x58638b=_[_0x6fe4('0x33')]({},_0x58638b,_0x10bf38[_0x6fe4('0x36')]);return _0x3464b7['getTags'](_0x58638b);}})[_0x6fe4('0x1d')](function(_0x2c2bb2){if(_0x2c2bb2){_0x15dd72=_0x2c2bb2['length'];if(!_0x10bf38[_0x6fe4('0x29')][_0x6fe4('0x2f')](_0x6fe4('0x30'))){_0x58638b[_0x6fe4('0x18')]=qs['limit'](_0x10bf38[_0x6fe4('0x29')]['limit']);_0x58638b[_0x6fe4('0x1b')]=qs[_0x6fe4('0x1b')](_0x10bf38['query']['offset']);}return _0x3464b7['getTags'](_0x58638b);}})[_0x6fe4('0x1d')](function(_0x1afbc4){if(_0x1afbc4){return _0x1afbc4?{'count':_0x15dd72,'rows':_0x1afbc4}:null;}})[_0x6fe4('0x1d')](respondWithResult(_0xac955c,null))[_0x6fe4('0x3b')](handleError(_0xac955c,null));};exports[_0x6fe4('0x4a')]=function(_0x2a841d,_0x4009f4,_0x4fda01){if(_0x2a841d[_0x6fe4('0x40')]['id']){delete _0x2a841d[_0x6fe4('0x40')]['id'];}return db[_0x6fe4('0x39')][_0x6fe4('0x43')]({'where':{'id':_0x2a841d[_0x6fe4('0x42')]['id']}})[_0x6fe4('0x1d')](handleEntityNotFound(_0x4009f4,null))['then'](function(_0x40735c){if(_0x40735c){return _0x40735c['setTags'](_0x2a841d[_0x6fe4('0x40')][_0x6fe4('0x4b')]||[]);}return null;})[_0x6fe4('0x1d')](respondWithResult(_0x4009f4,null))['catch'](handleError(_0x4009f4,null));};
\ No newline at end of file
+var _0x377a=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','status','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','map','filter','options','include','rows','catch','show','includeAll','body','find','params','getFields','findOne','ZendeskField','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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/utils'];(function(_0x5084cd,_0x5392e3){var _0x53a662=function(_0x1dc82f){while(--_0x1dc82f){_0x5084cd['push'](_0x5084cd['shift']());}};_0x53a662(++_0x5392e3);}(_0x377a,0x13d));var _0xa377=function(_0x10dc94,_0x2fed4f){_0x10dc94=_0x10dc94-0x0;var _0x4a462d=_0x377a[_0x10dc94];return _0x4a462d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa377('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa377('0x1'));var rp=require(_0xa377('0x2'));var moment=require(_0xa377('0x3'));var BPromise=require(_0xa377('0x4'));var Mustache=require(_0xa377('0x5'));var util=require(_0xa377('0x6'));var path=require(_0xa377('0x7'));var sox=require(_0xa377('0x8'));var csv=require('to-csv');var ejs=require(_0xa377('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa377('0xa'));var squel=require('squel');var crypto=require(_0xa377('0xb'));var jsforce=require(_0xa377('0xc'));var deskjs=require(_0xa377('0xd'));var toCsv=require(_0xa377('0xe'));var querystring=require(_0xa377('0xf'));var Papa=require(_0xa377('0x10'));var Redis=require(_0xa377('0x11'));var authService=require(_0xa377('0x12'));var qs=require(_0xa377('0x13'));var as=require(_0xa377('0x14'));var hardwareService=require(_0xa377('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xa377('0x16'));var config=require(_0xa377('0x17'));var licenseUtil=require(_0xa377('0x18'));var db=require(_0xa377('0x19'))['db'];function respondWithStatusCode(_0x552473,_0x5729c3){_0x5729c3=_0x5729c3||0xcc;return function(_0x4385a0){if(_0x4385a0){return _0x552473[_0xa377('0x1a')](_0x5729c3);}return _0x552473['status'](_0x5729c3)[_0xa377('0x1b')]();};}function respondWithResult(_0x4c672c,_0x3cb14c){_0x3cb14c=_0x3cb14c||0xc8;return function(_0x135b4d){if(_0x135b4d){return _0x4c672c['status'](_0x3cb14c)[_0xa377('0x1c')](_0x135b4d);}};}function respondWithFilteredResult(_0x526cd7,_0x49bda0){return function(_0x32ab35){if(_0x32ab35){var _0x50fd91=typeof _0x49bda0[_0xa377('0x1d')]===_0xa377('0x1e')&&typeof _0x49bda0['limit']===_0xa377('0x1e');var _0xa9118b=_0x32ab35[_0xa377('0x1f')];var _0x28f742=_0x50fd91?0x0:_0x49bda0[_0xa377('0x1d')];var _0x38924d=_0x50fd91?_0x32ab35[_0xa377('0x1f')]:_0x49bda0[_0xa377('0x1d')]+_0x49bda0[_0xa377('0x20')];var _0x5d7432;if(_0x38924d>=_0xa9118b){_0x38924d=_0xa9118b;_0x5d7432=0xc8;}else{_0x5d7432=0xce;}_0x526cd7[_0xa377('0x21')](_0x5d7432);return _0x526cd7[_0xa377('0x22')](_0xa377('0x23'),_0x28f742+'-'+_0x38924d+'/'+_0xa9118b)[_0xa377('0x1c')](_0x32ab35);}return null;};}function patchUpdates(_0x871e9e){return function(_0x4a8f6b){try{jsonpatch['apply'](_0x4a8f6b,_0x871e9e,!![]);}catch(_0x26c5f7){return BPromise[_0xa377('0x24')](_0x26c5f7);}return _0x4a8f6b['save']();};}function saveUpdates(_0x1cec46,_0x4e2711){return function(_0x5be303){if(_0x5be303){return _0x5be303[_0xa377('0x25')](_0x1cec46)[_0xa377('0x26')](function(_0x4a5590){return _0x4a5590;});}return null;};}function removeEntity(_0x57f830,_0x4f1d16){return function(_0x5adaea){if(_0x5adaea){return _0x5adaea[_0xa377('0x27')]()[_0xa377('0x26')](function(){_0x57f830[_0xa377('0x21')](0xcc)[_0xa377('0x1b')]();});}};}function handleEntityNotFound(_0xad2ea,_0x1bf102){return function(_0x5601ce){if(!_0x5601ce){_0xad2ea[_0xa377('0x1a')](0x194);}return _0x5601ce;};}function handleError(_0x359199,_0x4deba1){_0x4deba1=_0x4deba1||0x1f4;return function(_0x3860a0){logger[_0xa377('0x28')](_0x3860a0[_0xa377('0x29')]);if(_0x3860a0[_0xa377('0x2a')]){delete _0x3860a0['name'];}_0x359199['status'](_0x4deba1)[_0xa377('0x2b')](_0x3860a0);};}exports[_0xa377('0x2c')]=function(_0x29a639,_0x56bddd){var _0x3ce153={},_0x2fc7a2={},_0x4e8e58={'count':0x0,'rows':[]};var _0x23676a=_['map'](db[_0xa377('0x2d')][_0xa377('0x2e')],function(_0xcda0f2){return{'name':_0xcda0f2[_0xa377('0x2f')],'type':_0xcda0f2[_0xa377('0x30')][_0xa377('0x31')]};});_0x2fc7a2[_0xa377('0x32')]=_['map'](_0x23676a,_0xa377('0x2a'));_0x2fc7a2[_0xa377('0x33')]=_[_0xa377('0x34')](_0x29a639[_0xa377('0x33')]);_0x2fc7a2['filters']=_['intersection'](_0x2fc7a2['model'],_0x2fc7a2[_0xa377('0x33')]);_0x3ce153[_0xa377('0x35')]=_[_0xa377('0x36')](_0x2fc7a2[_0xa377('0x32')],qs[_0xa377('0x37')](_0x29a639[_0xa377('0x33')][_0xa377('0x37')]));_0x3ce153['attributes']=_0x3ce153[_0xa377('0x35')][_0xa377('0x38')]?_0x3ce153[_0xa377('0x35')]:_0x2fc7a2[_0xa377('0x32')];if(!_0x29a639[_0xa377('0x33')][_0xa377('0x39')](_0xa377('0x3a'))){_0x3ce153[_0xa377('0x20')]=qs['limit'](_0x29a639[_0xa377('0x33')][_0xa377('0x20')]);_0x3ce153['offset']=qs['offset'](_0x29a639[_0xa377('0x33')][_0xa377('0x1d')]);}_0x3ce153[_0xa377('0x3b')]=qs[_0xa377('0x3c')](_0x29a639['query'][_0xa377('0x3c')]);_0x3ce153[_0xa377('0x3d')]=qs[_0xa377('0x3e')](_[_0xa377('0x3f')](_0x29a639['query'],_0x2fc7a2[_0xa377('0x3e')]),_0x23676a);if(_0x29a639[_0xa377('0x33')]['filter']){_0x3ce153[_0xa377('0x3d')]=_[_0xa377('0x40')](_0x3ce153['where'],{'$or':_[_0xa377('0x41')](_0x23676a,function(_0x5491dd){if(_0x5491dd[_0xa377('0x30')]!=='VIRTUAL'){var _0x24538d={};_0x24538d[_0x5491dd[_0xa377('0x2a')]]={'$like':'%'+_0x29a639[_0xa377('0x33')][_0xa377('0x42')]+'%'};return _0x24538d;}})});}_0x3ce153=_[_0xa377('0x40')]({},_0x3ce153,_0x29a639[_0xa377('0x43')]);var _0x4a7102={'where':_0x3ce153[_0xa377('0x3d')]};return db[_0xa377('0x2d')][_0xa377('0x1f')](_0x4a7102)[_0xa377('0x26')](function(_0x1e5992){_0x4e8e58[_0xa377('0x1f')]=_0x1e5992;if(_0x29a639[_0xa377('0x33')]['includeAll']){_0x3ce153[_0xa377('0x44')]=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x3ce153);})[_0xa377('0x26')](function(_0x1aaf34){_0x4e8e58[_0xa377('0x45')]=_0x1aaf34;return _0x4e8e58;})[_0xa377('0x26')](respondWithFilteredResult(_0x56bddd,_0x3ce153))[_0xa377('0x46')](handleError(_0x56bddd,null));};exports[_0xa377('0x47')]=function(_0x4d2e98,_0x2d9462){var _0x48f290={'raw':![],'where':{'id':_0x4d2e98['params']['id']}},_0x590de8={};_0x590de8[_0xa377('0x32')]=_[_0xa377('0x34')](db['ZendeskConfiguration'][_0xa377('0x2e')]);_0x590de8[_0xa377('0x33')]=_['keys'](_0x4d2e98[_0xa377('0x33')]);_0x590de8['filters']=_[_0xa377('0x36')](_0x590de8[_0xa377('0x32')],_0x590de8[_0xa377('0x33')]);_0x48f290[_0xa377('0x35')]=_[_0xa377('0x36')](_0x590de8[_0xa377('0x32')],qs['fields'](_0x4d2e98[_0xa377('0x33')]['fields']));_0x48f290['attributes']=_0x48f290[_0xa377('0x35')][_0xa377('0x38')]?_0x48f290[_0xa377('0x35')]:_0x590de8['model'];if(_0x4d2e98[_0xa377('0x33')][_0xa377('0x48')]){_0x48f290['include']=[{'all':!![]}];}_0x48f290=_[_0xa377('0x40')]({},_0x48f290,_0x4d2e98['options']);return db[_0xa377('0x2d')]['find'](_0x48f290)['then'](handleEntityNotFound(_0x2d9462,null))[_0xa377('0x26')](respondWithResult(_0x2d9462,null))['catch'](handleError(_0x2d9462,null));};exports['create']=function(_0x4a42bc,_0x11ff10){return db[_0xa377('0x2d')]['create'](_0x4a42bc['body'],{})['then'](respondWithResult(_0x11ff10,0xc9))['catch'](handleError(_0x11ff10,null));};exports[_0xa377('0x25')]=function(_0xf66a6f,_0x63111f){if(_0xf66a6f[_0xa377('0x49')]['id']){delete _0xf66a6f[_0xa377('0x49')]['id'];}return db[_0xa377('0x2d')][_0xa377('0x4a')]({'where':{'id':_0xf66a6f[_0xa377('0x4b')]['id']}})['then'](handleEntityNotFound(_0x63111f,null))[_0xa377('0x26')](saveUpdates(_0xf66a6f[_0xa377('0x49')],null))[_0xa377('0x26')](respondWithResult(_0x63111f,null))[_0xa377('0x46')](handleError(_0x63111f,null));};exports['destroy']=function(_0x17fbd0,_0x186742){return db[_0xa377('0x2d')][_0xa377('0x4a')]({'where':{'id':_0x17fbd0[_0xa377('0x4b')]['id']}})[_0xa377('0x26')](handleEntityNotFound(_0x186742,null))['then'](removeEntity(_0x186742,null))[_0xa377('0x46')](handleError(_0x186742,null));};exports[_0xa377('0x4c')]=function(_0x3bbad5,_0x310e62,_0x4e27b7){var _0x25b5aa={};var _0x2b51d5={};var _0x30033b;var _0x2c05ba;return db[_0xa377('0x2d')][_0xa377('0x4d')]({'where':{'id':_0x3bbad5['params']['id']}})['then'](handleEntityNotFound(_0x310e62,null))['then'](function(_0x56c6da){if(_0x56c6da){_0x30033b=_0x56c6da;_0x2b51d5[_0xa377('0x32')]=_[_0xa377('0x34')](db[_0xa377('0x4e')][_0xa377('0x2e')]);_0x2b51d5[_0xa377('0x33')]=_[_0xa377('0x34')](_0x3bbad5[_0xa377('0x33')]);_0x2b51d5[_0xa377('0x3e')]=_[_0xa377('0x36')](_0x2b51d5['model'],_0x2b51d5[_0xa377('0x33')]);_0x25b5aa[_0xa377('0x35')]=_[_0xa377('0x36')](_0x2b51d5[_0xa377('0x32')],qs[_0xa377('0x37')](_0x3bbad5['query'][_0xa377('0x37')]));_0x25b5aa[_0xa377('0x35')]=_0x25b5aa['attributes']['length']?_0x25b5aa[_0xa377('0x35')]:_0x2b51d5[_0xa377('0x32')];_0x25b5aa['order']=qs['sort'](_0x3bbad5['query']['sort']);_0x25b5aa['where']=qs[_0xa377('0x3e')](_['pick'](_0x3bbad5[_0xa377('0x33')],_0x2b51d5[_0xa377('0x3e')]));if(_0x3bbad5['query'][_0xa377('0x42')]){_0x25b5aa[_0xa377('0x3d')]=_[_0xa377('0x40')](_0x25b5aa[_0xa377('0x3d')],{'$or':_[_0xa377('0x41')](_0x25b5aa['attributes'],function(_0x32125c){var _0x29c445={};_0x29c445[_0x32125c]={'$like':'%'+_0x3bbad5[_0xa377('0x33')][_0xa377('0x42')]+'%'};return _0x29c445;})});}_0x25b5aa=_[_0xa377('0x40')]({},_0x25b5aa,_0x3bbad5[_0xa377('0x43')]);return _0x30033b[_0xa377('0x4c')](_0x25b5aa);}})[_0xa377('0x26')](function(_0x51ff4b){if(_0x51ff4b){_0x2c05ba=_0x51ff4b[_0xa377('0x38')];if(!_0x3bbad5[_0xa377('0x33')][_0xa377('0x39')]('nolimit')){_0x25b5aa[_0xa377('0x20')]=qs[_0xa377('0x20')](_0x3bbad5[_0xa377('0x33')][_0xa377('0x20')]);_0x25b5aa[_0xa377('0x1d')]=qs[_0xa377('0x1d')](_0x3bbad5['query'][_0xa377('0x1d')]);}return _0x30033b[_0xa377('0x4c')](_0x25b5aa);}})[_0xa377('0x26')](function(_0x28c07b){if(_0x28c07b){return _0x28c07b?{'count':_0x2c05ba,'rows':_0x28c07b}:null;}})[_0xa377('0x26')](respondWithResult(_0x310e62,null))[_0xa377('0x46')](handleError(_0x310e62,null));};exports[_0xa377('0x4f')]=function(_0x7b1919,_0x2c09e0,_0x34dfa0){var _0x2b9fe1={};var _0x27e703={};var _0x5d8775;var _0x55e65a;return db[_0xa377('0x2d')][_0xa377('0x4d')]({'where':{'id':_0x7b1919[_0xa377('0x4b')]['id']}})[_0xa377('0x26')](handleEntityNotFound(_0x2c09e0,null))['then'](function(_0x1eaa73){if(_0x1eaa73){_0x5d8775=_0x1eaa73;_0x27e703[_0xa377('0x32')]=_[_0xa377('0x34')](db[_0xa377('0x4e')][_0xa377('0x2e')]);_0x27e703['query']=_['keys'](_0x7b1919[_0xa377('0x33')]);_0x27e703[_0xa377('0x3e')]=_[_0xa377('0x36')](_0x27e703['model'],_0x27e703[_0xa377('0x33')]);_0x2b9fe1['attributes']=_[_0xa377('0x36')](_0x27e703[_0xa377('0x32')],qs['fields'](_0x7b1919[_0xa377('0x33')]['fields']));_0x2b9fe1['attributes']=_0x2b9fe1['attributes'][_0xa377('0x38')]?_0x2b9fe1['attributes']:_0x27e703['model'];_0x2b9fe1[_0xa377('0x3b')]=qs[_0xa377('0x3c')](_0x7b1919['query'][_0xa377('0x3c')]);_0x2b9fe1[_0xa377('0x3d')]=qs['filters'](_['pick'](_0x7b1919[_0xa377('0x33')],_0x27e703['filters']));if(_0x7b1919['query']['filter']){_0x2b9fe1['where']=_[_0xa377('0x40')](_0x2b9fe1[_0xa377('0x3d')],{'$or':_[_0xa377('0x41')](_0x2b9fe1[_0xa377('0x35')],function(_0xf015aa){var _0x353032={};_0x353032[_0xf015aa]={'$like':'%'+_0x7b1919[_0xa377('0x33')][_0xa377('0x42')]+'%'};return _0x353032;})});}_0x2b9fe1=_[_0xa377('0x40')]({},_0x2b9fe1,_0x7b1919[_0xa377('0x43')]);return _0x5d8775[_0xa377('0x4f')](_0x2b9fe1);}})['then'](function(_0x2b61b7){if(_0x2b61b7){_0x55e65a=_0x2b61b7['length'];if(!_0x7b1919[_0xa377('0x33')]['hasOwnProperty'](_0xa377('0x3a'))){_0x2b9fe1[_0xa377('0x20')]=qs[_0xa377('0x20')](_0x7b1919[_0xa377('0x33')][_0xa377('0x20')]);_0x2b9fe1[_0xa377('0x1d')]=qs[_0xa377('0x1d')](_0x7b1919[_0xa377('0x33')]['offset']);}return _0x5d8775[_0xa377('0x4f')](_0x2b9fe1);}})[_0xa377('0x26')](function(_0x3f833a){if(_0x3f833a){return _0x3f833a?{'count':_0x55e65a,'rows':_0x3f833a}:null;}})[_0xa377('0x26')](respondWithResult(_0x2c09e0,null))['catch'](handleError(_0x2c09e0,null));};exports['getDescriptions']=function(_0x418c5f,_0x5d36a5,_0x7ea976){var _0x23dfe5={};var _0x45e9b9={};var _0x252356;var _0x849e06;return db[_0xa377('0x2d')][_0xa377('0x4d')]({'where':{'id':_0x418c5f[_0xa377('0x4b')]['id']}})[_0xa377('0x26')](handleEntityNotFound(_0x5d36a5,null))[_0xa377('0x26')](function(_0x442423){if(_0x442423){_0x252356=_0x442423;_0x45e9b9['model']=_[_0xa377('0x34')](db[_0xa377('0x4e')]['rawAttributes']);_0x45e9b9['query']=_[_0xa377('0x34')](_0x418c5f[_0xa377('0x33')]);_0x45e9b9[_0xa377('0x3e')]=_[_0xa377('0x36')](_0x45e9b9['model'],_0x45e9b9[_0xa377('0x33')]);_0x23dfe5[_0xa377('0x35')]=_['intersection'](_0x45e9b9['model'],qs[_0xa377('0x37')](_0x418c5f[_0xa377('0x33')][_0xa377('0x37')]));_0x23dfe5[_0xa377('0x35')]=_0x23dfe5[_0xa377('0x35')][_0xa377('0x38')]?_0x23dfe5['attributes']:_0x45e9b9[_0xa377('0x32')];_0x23dfe5[_0xa377('0x3b')]=qs['sort'](_0x418c5f[_0xa377('0x33')][_0xa377('0x3c')]);_0x23dfe5['where']=qs['filters'](_['pick'](_0x418c5f['query'],_0x45e9b9[_0xa377('0x3e')]));if(_0x418c5f[_0xa377('0x33')][_0xa377('0x42')]){_0x23dfe5[_0xa377('0x3d')]=_[_0xa377('0x40')](_0x23dfe5[_0xa377('0x3d')],{'$or':_[_0xa377('0x41')](_0x23dfe5[_0xa377('0x35')],function(_0x419241){var _0x201e7d={};_0x201e7d[_0x419241]={'$like':'%'+_0x418c5f[_0xa377('0x33')][_0xa377('0x42')]+'%'};return _0x201e7d;})});}_0x23dfe5=_[_0xa377('0x40')]({},_0x23dfe5,_0x418c5f['options']);return _0x252356[_0xa377('0x50')](_0x23dfe5);}})[_0xa377('0x26')](function(_0x5c30a2){if(_0x5c30a2){_0x849e06=_0x5c30a2[_0xa377('0x38')];if(!_0x418c5f[_0xa377('0x33')][_0xa377('0x39')](_0xa377('0x3a'))){_0x23dfe5['limit']=qs['limit'](_0x418c5f[_0xa377('0x33')][_0xa377('0x20')]);_0x23dfe5[_0xa377('0x1d')]=qs[_0xa377('0x1d')](_0x418c5f['query'][_0xa377('0x1d')]);}return _0x252356[_0xa377('0x50')](_0x23dfe5);}})['then'](function(_0x46e5e5){if(_0x46e5e5){return _0x46e5e5?{'count':_0x849e06,'rows':_0x46e5e5}:null;}})['then'](respondWithResult(_0x5d36a5,null))[_0xa377('0x46')](handleError(_0x5d36a5,null));};exports[_0xa377('0x51')]=function(_0x5a910,_0x1bcb47,_0xad8383){var _0x1e2927={};var _0x368a32={};var _0x49da90;var _0x35351b;return db[_0xa377('0x2d')][_0xa377('0x4d')]({'where':{'id':_0x5a910[_0xa377('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1bcb47,null))[_0xa377('0x26')](function(_0xdefbed){if(_0xdefbed){_0x49da90=_0xdefbed;_0x368a32['model']=_['keys'](db[_0xa377('0x52')][_0xa377('0x2e')]);_0x368a32[_0xa377('0x33')]=_[_0xa377('0x34')](_0x5a910['query']);_0x368a32[_0xa377('0x3e')]=_[_0xa377('0x36')](_0x368a32[_0xa377('0x32')],_0x368a32[_0xa377('0x33')]);_0x1e2927[_0xa377('0x35')]=_[_0xa377('0x36')](_0x368a32[_0xa377('0x32')],qs[_0xa377('0x37')](_0x5a910['query'][_0xa377('0x37')]));_0x1e2927[_0xa377('0x35')]=_0x1e2927['attributes'][_0xa377('0x38')]?_0x1e2927[_0xa377('0x35')]:_0x368a32['model'];_0x1e2927[_0xa377('0x3b')]=qs['sort'](_0x5a910[_0xa377('0x33')][_0xa377('0x3c')]);_0x1e2927[_0xa377('0x3d')]=qs[_0xa377('0x3e')](_[_0xa377('0x3f')](_0x5a910[_0xa377('0x33')],_0x368a32[_0xa377('0x3e')]));if(_0x5a910[_0xa377('0x33')][_0xa377('0x42')]){_0x1e2927[_0xa377('0x3d')]=_[_0xa377('0x40')](_0x1e2927[_0xa377('0x3d')],{'$or':_[_0xa377('0x41')](_0x1e2927[_0xa377('0x35')],function(_0x32f370){var _0x306e23={};_0x306e23[_0x32f370]={'$like':'%'+_0x5a910[_0xa377('0x33')][_0xa377('0x42')]+'%'};return _0x306e23;})});}_0x1e2927=_[_0xa377('0x40')]({},_0x1e2927,_0x5a910[_0xa377('0x43')]);return _0x49da90[_0xa377('0x51')](_0x1e2927);}})[_0xa377('0x26')](function(_0x4da852){if(_0x4da852){_0x35351b=_0x4da852[_0xa377('0x38')];if(!_0x5a910[_0xa377('0x33')]['hasOwnProperty'](_0xa377('0x3a'))){_0x1e2927['limit']=qs['limit'](_0x5a910[_0xa377('0x33')][_0xa377('0x20')]);_0x1e2927['offset']=qs['offset'](_0x5a910[_0xa377('0x33')]['offset']);}return _0x49da90[_0xa377('0x51')](_0x1e2927);}})[_0xa377('0x26')](function(_0x49ff1b){if(_0x49ff1b){return _0x49ff1b?{'count':_0x35351b,'rows':_0x49ff1b}:null;}})['then'](respondWithResult(_0x1bcb47,null))[_0xa377('0x46')](handleError(_0x1bcb47,null));};exports[_0xa377('0x53')]=function(_0x71e36,_0x3ef713,_0x2e03f4){if(_0x71e36['body']['id']){delete _0x71e36[_0xa377('0x49')]['id'];}return db['ZendeskConfiguration'][_0xa377('0x4d')]({'where':{'id':_0x71e36[_0xa377('0x4b')]['id']}})[_0xa377('0x26')](handleEntityNotFound(_0x3ef713,null))[_0xa377('0x26')](function(_0x5e8ff2){if(_0x5e8ff2){return _0x5e8ff2['setTags'](_0x71e36[_0xa377('0x49')][_0xa377('0x54')]||[]);}return null;})['then'](respondWithResult(_0x3ef713,null))[_0xa377('0x46')](handleError(_0x3ef713,null));};
\ No newline at end of file
index a5d40c0..d5dc9e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['./intZendeskConfiguration.attributes','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x2a210c,_0x537bcf){var _0x11288c=function(_0x36c042){while(--_0x36c042){_0x2a210c['push'](_0x2a210c['shift']());}};_0x11288c(++_0x537bcf);}(_0xb574,0x106));var _0x4b57=function(_0x4e0322,_0x48e336){_0x4e0322=_0x4e0322-0x0;var _0x221dc7=_0xb574[_0x4e0322];return _0x221dc7;};'use strict';var _=require(_0x4b57('0x0'));var util=require(_0x4b57('0x1'));var logger=require('../../config/logger')(_0x4b57('0x2'));var moment=require(_0x4b57('0x3'));var BPromise=require('bluebird');var rp=require(_0x4b57('0x4'));var fs=require('fs');var path=require(_0x4b57('0x5'));var rimraf=require(_0x4b57('0x6'));var config=require(_0x4b57('0x7'));var attributes=require(_0x4b57('0x8'));module['exports']=function(_0x4eb019,_0x1c97e5){return _0x4eb019['define']('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28f2=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','int_zendesk_configurations'];(function(_0x4235ca,_0x5049d5){var _0x24ad7a=function(_0x345da0){while(--_0x345da0){_0x4235ca['push'](_0x4235ca['shift']());}};_0x24ad7a(++_0x5049d5);}(_0x28f2,0x193));var _0x228f=function(_0x1bc78d,_0x3ccd8a){_0x1bc78d=_0x1bc78d-0x0;var _0x3cbba8=_0x28f2[_0x1bc78d];return _0x3cbba8;};'use strict';var _=require(_0x228f('0x0'));var util=require(_0x228f('0x1'));var logger=require(_0x228f('0x2'))(_0x228f('0x3'));var moment=require(_0x228f('0x4'));var BPromise=require('bluebird');var rp=require(_0x228f('0x5'));var fs=require('fs');var path=require(_0x228f('0x6'));var rimraf=require(_0x228f('0x7'));var config=require(_0x228f('0x8'));var attributes=require(_0x228f('0x9'));module[_0x228f('0xa')]=function(_0x32c5c3,_0x485423){return _0x32c5c3[_0x228f('0xb')]('ZendeskConfiguration',attributes,{'tableName':_0x228f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2d3b4e4..89e2383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf15=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x542c88,_0x5d6405){var _0x141def=function(_0x496314){while(--_0x496314){_0x542c88['push'](_0x542c88['shift']());}};_0x141def(++_0x5d6405);}(_0xbf15,0x167));var _0x5bf1=function(_0xead40a,_0x4d4c36){_0xead40a=_0xead40a-0x0;var _0x49c93b=_0xbf15[_0xead40a];return _0x49c93b;};'use strict';var _=require(_0x5bf1('0x0'));var util=require(_0x5bf1('0x1'));var moment=require(_0x5bf1('0x2'));var BPromise=require(_0x5bf1('0x3'));var rs=require(_0x5bf1('0x4'));var fs=require('fs');var Redis=require(_0x5bf1('0x5'));var db=require(_0x5bf1('0x6'))['db'];var utils=require(_0x5bf1('0x7'));var logger=require(_0x5bf1('0x8'))(_0x5bf1('0x9'));var config=require(_0x5bf1('0xa'));var jayson=require(_0x5bf1('0xb'));var client=jayson[_0x5bf1('0xc')][_0x5bf1('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x462f71,_0x3a5b01,_0x4c48ea){return new BPromise(function(_0x50fda3,_0x19a151){return client['request'](_0x462f71,_0x4c48ea)[_0x5bf1('0xe')](function(_0xd7d3ce){logger[_0x5bf1('0xf')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0x5bf1('0x10'));logger[_0x5bf1('0x11')](_0x5bf1('0x12'),_0x3a5b01,_0x5bf1('0x10'),JSON[_0x5bf1('0x13')](_0xd7d3ce));if(_0xd7d3ce[_0x5bf1('0x14')]){if(_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x15')]===0x1f4){logger[_0x5bf1('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);return _0x19a151(_0xd7d3ce[_0x5bf1('0x14')]['message']);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x3a5b01,_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);return _0x50fda3(_0xd7d3ce[_0x5bf1('0x14')][_0x5bf1('0x16')]);}else{logger['info'](_0x5bf1('0x17'),_0x3a5b01,'request\x20sent');_0x50fda3(_0xd7d3ce[_0x5bf1('0x18')]['message']);}})[_0x5bf1('0x19')](function(_0x3528b9){logger[_0x5bf1('0x14')](_0x5bf1('0x17'),_0x3a5b01,_0x3528b9);_0x19a151(_0x3528b9);});});}
\ No newline at end of file
+var _0x1222=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment'];(function(_0x21235c,_0x40697b){var _0x46f2e6=function(_0xef621){while(--_0xef621){_0x21235c['push'](_0x21235c['shift']());}};_0x46f2e6(++_0x40697b);}(_0x1222,0x14d));var _0x2122=function(_0xaaffc9,_0x1db33d){_0xaaffc9=_0xaaffc9-0x0;var _0xf447d3=_0x1222[_0xaaffc9];return _0xf447d3;};'use strict';var _=require(_0x2122('0x0'));var util=require(_0x2122('0x1'));var moment=require(_0x2122('0x2'));var BPromise=require(_0x2122('0x3'));var rs=require(_0x2122('0x4'));var fs=require('fs');var Redis=require(_0x2122('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2122('0x6'))(_0x2122('0x7'));var config=require(_0x2122('0x8'));var jayson=require(_0x2122('0x9'));var client=jayson[_0x2122('0xa')][_0x2122('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c622f,_0x564a24,_0x5ce1f3){return new BPromise(function(_0x4d165b,_0x3babe2){return client[_0x2122('0xc')](_0x3c622f,_0x5ce1f3)['then'](function(_0x1b5d93){logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x564a24,_0x2122('0xd'));logger[_0x2122('0xe')](_0x2122('0xf'),_0x564a24,'request\x20sent',JSON['stringify'](_0x1b5d93));if(_0x1b5d93[_0x2122('0x10')]){if(_0x1b5d93[_0x2122('0x10')]['code']===0x1f4){logger['error'](_0x2122('0x11'),_0x564a24,_0x1b5d93['error'][_0x2122('0x12')]);return _0x3babe2(_0x1b5d93[_0x2122('0x10')]['message']);}logger[_0x2122('0x10')](_0x2122('0x11'),_0x564a24,_0x1b5d93['error'][_0x2122('0x12')]);return _0x4d165b(_0x1b5d93[_0x2122('0x10')]['message']);}else{logger['info'](_0x2122('0x11'),_0x564a24,_0x2122('0xd'));_0x4d165b(_0x1b5d93[_0x2122('0x13')]['message']);}})[_0x2122('0x14')](function(_0x150cb1){logger[_0x2122('0x10')](_0x2122('0x11'),_0x564a24,_0x150cb1);_0x3babe2(_0x150cb1);});});}
\ No newline at end of file
index 034b47f..631d9d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9a3=['express','Router','fs-extra','../../components/auth/service','get','/:id','isAuthenticated','show','post','create','update','delete','destroy','multer','path'];(function(_0x540393,_0x49bd1d){var _0x155384=function(_0x596e3a){while(--_0x596e3a){_0x540393['push'](_0x540393['shift']());}};_0x155384(++_0x49bd1d);}(_0xc9a3,0x1b1));var _0x3c9a=function(_0x5ad400,_0x5ed83d){_0x5ad400=_0x5ad400-0x0;var _0xc635ef=_0xc9a3[_0x5ad400];return _0xc635ef;};'use strict';var multer=require(_0x3c9a('0x0'));var util=require('util');var path=require(_0x3c9a('0x1'));var timeout=require('connect-timeout');var express=require(_0x3c9a('0x2'));var router=express[_0x3c9a('0x3')]();var fs_extra=require(_0x3c9a('0x4'));var auth=require(_0x3c9a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x3c9a('0x6')](_0x3c9a('0x7'),auth[_0x3c9a('0x8')](),controller[_0x3c9a('0x9')]);router[_0x3c9a('0xa')]('/',auth['isAuthenticated'](),controller[_0x3c9a('0xb')]);router['put']('/:id',auth[_0x3c9a('0x8')](),controller[_0x3c9a('0xc')]);router[_0x3c9a('0xd')](_0x3c9a('0x7'),auth['isAuthenticated'](),controller[_0x3c9a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xd659=['express','../../components/auth/service','get','isAuthenticated','index','/:id','show','post','put','update','exports','util','path','connect-timeout'];(function(_0x49eeaf,_0xf8d93d){var _0x18ff8c=function(_0x59c7c3){while(--_0x59c7c3){_0x49eeaf['push'](_0x49eeaf['shift']());}};_0x18ff8c(++_0xf8d93d);}(_0xd659,0x169));var _0x9d65=function(_0x52d842,_0x4134f2){_0x52d842=_0x52d842-0x0;var _0xcfb104=_0xd659[_0x52d842];return _0xcfb104;};'use strict';var multer=require('multer');var util=require(_0x9d65('0x0'));var path=require(_0x9d65('0x1'));var timeout=require(_0x9d65('0x2'));var express=require(_0x9d65('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9d65('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router[_0x9d65('0x5')]('/',auth[_0x9d65('0x6')](),controller[_0x9d65('0x7')]);router[_0x9d65('0x5')](_0x9d65('0x8'),auth[_0x9d65('0x6')](),controller[_0x9d65('0x9')]);router[_0x9d65('0xa')]('/',auth[_0x9d65('0x6')](),controller['create']);router[_0x9d65('0xb')](_0x9d65('0x8'),auth['isAuthenticated'](),controller[_0x9d65('0xc')]);router['delete'](_0x9d65('0x8'),auth[_0x9d65('0x6')](),controller['destroy']);module[_0x9d65('0xd')]=router;
\ No newline at end of file
index 27147f6..d71091f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc140=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM','string'];(function(_0x491cbe,_0x45c8ba){var _0x59449d=function(_0x21b463){while(--_0x21b463){_0x491cbe['push'](_0x491cbe['shift']());}};_0x59449d(++_0x45c8ba);}(_0xc140,0xb1));var _0x0c14=function(_0x37862a,_0x2bc98e){_0x37862a=_0x37862a-0x0;var _0x5b0104=_0xc140[_0x37862a];return _0x5b0104;};'use strict';var Sequelize=require(_0x0c14('0x0'));module['exports']={'type':{'type':Sequelize[_0x0c14('0x1')](_0x0c14('0x2'),_0x0c14('0x3'),_0x0c14('0x4'),_0x0c14('0x5'),_0x0c14('0x6')),'defaultValue':_0x0c14('0x2')},'content':{'type':Sequelize[_0x0c14('0x7')]},'key':{'type':Sequelize[_0x0c14('0x7')]},'keyType':{'type':Sequelize[_0x0c14('0x1')]('string',_0x0c14('0x3'),_0x0c14('0x4'))},'keyContent':{'type':Sequelize[_0x0c14('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x0c14('0x7')]},'customField':{'type':Sequelize[_0x0c14('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0c14('0x7')]}};
\ No newline at end of file
+var _0xc202=['STRING','variable','BOOLEAN','sequelize','exports','ENUM','customVariable','picklist','string'];(function(_0x504628,_0x5689cd){var _0x55583f=function(_0x4a174e){while(--_0x4a174e){_0x504628['push'](_0x504628['shift']());}};_0x55583f(++_0x5689cd);}(_0xc202,0x123));var _0x2c20=function(_0x1efb29,_0x41cd3b){_0x1efb29=_0x1efb29-0x0;var _0xae79e9=_0xc202[_0x1efb29];return _0xae79e9;};'use strict';var Sequelize=require(_0x2c20('0x0'));module[_0x2c20('0x1')]={'type':{'type':Sequelize[_0x2c20('0x2')]('string','variable',_0x2c20('0x3'),'keyValue',_0x2c20('0x4')),'defaultValue':_0x2c20('0x5')},'content':{'type':Sequelize[_0x2c20('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x2c20('0x2')](_0x2c20('0x5'),_0x2c20('0x7'),_0x2c20('0x3'))},'keyContent':{'type':Sequelize[_0x2c20('0x6')]},'idField':{'type':Sequelize[_0x2c20('0x6')]},'nameField':{'type':Sequelize[_0x2c20('0x6')]},'customField':{'type':Sequelize[_0x2c20('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2c20('0x6')]}};
\ No newline at end of file
index e8b68e7..476a578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5fe=['update','eml-format','rimraf','fast-json-patch','moment','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','length','create','body'];(function(_0x578429,_0x24956f){var _0x40801e=function(_0xce0a24){while(--_0xce0a24){_0x578429['push'](_0x578429['shift']());}};_0x40801e(++_0x24956f);}(_0xd5fe,0x1ab));var _0xed5f=function(_0x3f0b30,_0x159bc8){_0x3f0b30=_0x3f0b30-0x0;var _0x2748a5=_0xd5fe[_0x3f0b30];return _0x2748a5;};'use strict';var emlformat=require(_0xed5f('0x0'));var rimraf=require(_0xed5f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed5f('0x2'));var rp=require('request-promise');var moment=require(_0xed5f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xed5f('0x4'));var path=require(_0xed5f('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xed5f('0x6'));var fs=require('fs');var fs_extra=require(_0xed5f('0x7'));var _=require(_0xed5f('0x8'));var squel=require(_0xed5f('0x9'));var crypto=require(_0xed5f('0xa'));var jsforce=require(_0xed5f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xed5f('0xc'));var querystring=require('querystring');var Papa=require(_0xed5f('0xd'));var Redis=require('ioredis');var authService=require(_0xed5f('0xe'));var qs=require(_0xed5f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed5f('0x10'));var logger=require(_0xed5f('0x11'))(_0xed5f('0x12'));var utils=require(_0xed5f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xed5f('0x14'));var db=require(_0xed5f('0x15'))['db'];function respondWithStatusCode(_0xc738d7,_0x51b774){_0x51b774=_0x51b774||0xcc;return function(_0x5c138b){if(_0x5c138b){return _0xc738d7[_0xed5f('0x16')](_0x51b774);}return _0xc738d7[_0xed5f('0x17')](_0x51b774)[_0xed5f('0x18')]();};}function respondWithResult(_0x3ab39d,_0x35ee0a){_0x35ee0a=_0x35ee0a||0xc8;return function(_0x2e1263){if(_0x2e1263){return _0x3ab39d[_0xed5f('0x17')](_0x35ee0a)[_0xed5f('0x19')](_0x2e1263);}};}function respondWithFilteredResult(_0x229f3b,_0x2f8210){return function(_0x67a4f2){if(_0x67a4f2){var _0x339e09=typeof _0x2f8210[_0xed5f('0x1a')]==='undefined'&&typeof _0x2f8210[_0xed5f('0x1b')]===_0xed5f('0x1c');var _0x4278ec=_0x67a4f2['count'];var _0x1c74a2=_0x339e09?0x0:_0x2f8210[_0xed5f('0x1a')];var _0x3bda83=_0x339e09?_0x67a4f2['count']:_0x2f8210[_0xed5f('0x1a')]+_0x2f8210[_0xed5f('0x1b')];var _0x20f063;if(_0x3bda83>=_0x4278ec){_0x3bda83=_0x4278ec;_0x20f063=0xc8;}else{_0x20f063=0xce;}_0x229f3b[_0xed5f('0x17')](_0x20f063);return _0x229f3b[_0xed5f('0x1d')](_0xed5f('0x1e'),_0x1c74a2+'-'+_0x3bda83+'/'+_0x4278ec)['json'](_0x67a4f2);}return null;};}function patchUpdates(_0x304bd9){return function(_0x5b7359){try{jsonpatch[_0xed5f('0x1f')](_0x5b7359,_0x304bd9,!![]);}catch(_0x488f90){return BPromise['reject'](_0x488f90);}return _0x5b7359[_0xed5f('0x20')]();};}function saveUpdates(_0x53f068,_0x5ecabb){return function(_0x3ed112){if(_0x3ed112){return _0x3ed112['update'](_0x53f068)['then'](function(_0x4f283a){return _0x4f283a;});}return null;};}function removeEntity(_0x1204b5,_0x1df3aa){return function(_0x32b23c){if(_0x32b23c){return _0x32b23c[_0xed5f('0x21')]()[_0xed5f('0x22')](function(){_0x1204b5['status'](0xcc)[_0xed5f('0x18')]();});}};}function handleEntityNotFound(_0x10b632,_0xa232c2){return function(_0x151037){if(!_0x151037){_0x10b632[_0xed5f('0x16')](0x194);}return _0x151037;};}function handleError(_0x96a37b,_0x954bc1){_0x954bc1=_0x954bc1||0x1f4;return function(_0x100c15){logger[_0xed5f('0x23')](_0x100c15[_0xed5f('0x24')]);if(_0x100c15[_0xed5f('0x25')]){delete _0x100c15['name'];}_0x96a37b[_0xed5f('0x17')](_0x954bc1)[_0xed5f('0x26')](_0x100c15);};}exports[_0xed5f('0x27')]=function(_0x3c7906,_0x4dfd02){var _0x5eaa20={},_0xdc354e={},_0x2883db={'count':0x0,'rows':[]};var _0x355a8c=_[_0xed5f('0x28')](db[_0xed5f('0x29')][_0xed5f('0x2a')],function(_0xea7797){return{'name':_0xea7797[_0xed5f('0x2b')],'type':_0xea7797[_0xed5f('0x2c')][_0xed5f('0x2d')]};});_0xdc354e[_0xed5f('0x2e')]=_['map'](_0x355a8c,_0xed5f('0x25'));_0xdc354e[_0xed5f('0x2f')]=_[_0xed5f('0x30')](_0x3c7906[_0xed5f('0x2f')]);_0xdc354e['filters']=_[_0xed5f('0x31')](_0xdc354e[_0xed5f('0x2e')],_0xdc354e['query']);_0x5eaa20[_0xed5f('0x32')]=_['intersection'](_0xdc354e[_0xed5f('0x2e')],qs[_0xed5f('0x33')](_0x3c7906[_0xed5f('0x2f')]['fields']));_0x5eaa20['attributes']=_0x5eaa20[_0xed5f('0x32')]['length']?_0x5eaa20[_0xed5f('0x32')]:_0xdc354e[_0xed5f('0x2e')];if(!_0x3c7906[_0xed5f('0x2f')]['hasOwnProperty'](_0xed5f('0x34'))){_0x5eaa20[_0xed5f('0x1b')]=qs['limit'](_0x3c7906[_0xed5f('0x2f')]['limit']);_0x5eaa20[_0xed5f('0x1a')]=qs[_0xed5f('0x1a')](_0x3c7906['query']['offset']);}_0x5eaa20['order']=qs[_0xed5f('0x35')](_0x3c7906[_0xed5f('0x2f')]['sort']);_0x5eaa20[_0xed5f('0x36')]=qs[_0xed5f('0x37')](_['pick'](_0x3c7906[_0xed5f('0x2f')],_0xdc354e['filters']),_0x355a8c);if(_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x38')]){_0x5eaa20[_0xed5f('0x36')]=_[_0xed5f('0x39')](_0x5eaa20[_0xed5f('0x36')],{'$or':_[_0xed5f('0x28')](_0x355a8c,function(_0x4134a7){if(_0x4134a7[_0xed5f('0x2c')]!==_0xed5f('0x3a')){var _0x53be37={};_0x53be37[_0x4134a7['name']]={'$like':'%'+_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x38')]+'%'};return _0x53be37;}})});}_0x5eaa20=_[_0xed5f('0x39')]({},_0x5eaa20,_0x3c7906[_0xed5f('0x3b')]);var _0xe3bd7c={'where':_0x5eaa20[_0xed5f('0x36')]};return db[_0xed5f('0x29')][_0xed5f('0x3c')](_0xe3bd7c)[_0xed5f('0x22')](function(_0x4d8c7c){_0x2883db[_0xed5f('0x3c')]=_0x4d8c7c;if(_0x3c7906[_0xed5f('0x2f')][_0xed5f('0x3d')]){_0x5eaa20[_0xed5f('0x3e')]=[{'all':!![]}];}return db['ZendeskField']['findAll'](_0x5eaa20);})[_0xed5f('0x22')](function(_0x2494d9){_0x2883db[_0xed5f('0x3f')]=_0x2494d9;return _0x2883db;})[_0xed5f('0x22')](respondWithFilteredResult(_0x4dfd02,_0x5eaa20))[_0xed5f('0x40')](handleError(_0x4dfd02,null));};exports[_0xed5f('0x41')]=function(_0x1fdee9,_0x3374f4){var _0x17649c={'raw':!![],'where':{'id':_0x1fdee9[_0xed5f('0x42')]['id']}},_0x360fb7={};_0x360fb7[_0xed5f('0x2e')]=_[_0xed5f('0x30')](db['ZendeskField'][_0xed5f('0x2a')]);_0x360fb7['query']=_[_0xed5f('0x30')](_0x1fdee9['query']);_0x360fb7[_0xed5f('0x37')]=_[_0xed5f('0x31')](_0x360fb7[_0xed5f('0x2e')],_0x360fb7['query']);_0x17649c[_0xed5f('0x32')]=_[_0xed5f('0x31')](_0x360fb7[_0xed5f('0x2e')],qs[_0xed5f('0x33')](_0x1fdee9[_0xed5f('0x2f')][_0xed5f('0x33')]));_0x17649c[_0xed5f('0x32')]=_0x17649c[_0xed5f('0x32')][_0xed5f('0x43')]?_0x17649c[_0xed5f('0x32')]:_0x360fb7[_0xed5f('0x2e')];if(_0x1fdee9[_0xed5f('0x2f')][_0xed5f('0x3d')]){_0x17649c[_0xed5f('0x3e')]=[{'all':!![]}];}_0x17649c=_[_0xed5f('0x39')]({},_0x17649c,_0x1fdee9[_0xed5f('0x3b')]);return db[_0xed5f('0x29')]['find'](_0x17649c)[_0xed5f('0x22')](handleEntityNotFound(_0x3374f4,null))[_0xed5f('0x22')](respondWithResult(_0x3374f4,null))[_0xed5f('0x40')](handleError(_0x3374f4,null));};exports[_0xed5f('0x44')]=function(_0x5cf862,_0x2f6809){return db[_0xed5f('0x29')][_0xed5f('0x44')](_0x5cf862[_0xed5f('0x45')],{})['then'](respondWithResult(_0x2f6809,0xc9))[_0xed5f('0x40')](handleError(_0x2f6809,null));};exports[_0xed5f('0x46')]=function(_0x5c8473,_0x40a875){if(_0x5c8473['body']['id']){delete _0x5c8473['body']['id'];}return db[_0xed5f('0x29')]['find']({'where':{'id':_0x5c8473['params']['id']}})[_0xed5f('0x22')](handleEntityNotFound(_0x40a875,null))[_0xed5f('0x22')](saveUpdates(_0x5c8473[_0xed5f('0x45')],null))['then'](respondWithResult(_0x40a875,null))[_0xed5f('0x40')](handleError(_0x40a875,null));};exports[_0xed5f('0x21')]=function(_0x52407,_0x84b3c0){return db[_0xed5f('0x29')]['find']({'where':{'id':_0x52407[_0xed5f('0x42')]['id']}})[_0xed5f('0x22')](handleEntityNotFound(_0x84b3c0,null))[_0xed5f('0x22')](removeEntity(_0x84b3c0,null))[_0xed5f('0x40')](handleError(_0x84b3c0,null));};
\ No newline at end of file
+var _0x1816=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','ZendeskField','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows','catch','params','rawAttributes','include','create','body','find','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x1816,0x15e));var _0x6181=function(_0x4c8222,_0x40f8e3){_0x4c8222=_0x4c8222-0x0;var _0x1bc3df=_0x1816[_0x4c8222];return _0x1bc3df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6181('0x0'));var zipdir=require(_0x6181('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6181('0x2'));var moment=require(_0x6181('0x3'));var BPromise=require(_0x6181('0x4'));var Mustache=require(_0x6181('0x5'));var util=require('util');var path=require(_0x6181('0x6'));var sox=require(_0x6181('0x7'));var csv=require('to-csv');var ejs=require(_0x6181('0x8'));var fs=require('fs');var fs_extra=require(_0x6181('0x9'));var _=require(_0x6181('0xa'));var squel=require(_0x6181('0xb'));var crypto=require('crypto');var jsforce=require(_0x6181('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6181('0xd'));var querystring=require(_0x6181('0xe'));var Papa=require(_0x6181('0xf'));var Redis=require(_0x6181('0x10'));var authService=require(_0x6181('0x11'));var qs=require(_0x6181('0x12'));var as=require(_0x6181('0x13'));var hardwareService=require(_0x6181('0x14'));var logger=require(_0x6181('0x15'))('api');var utils=require(_0x6181('0x16'));var config=require(_0x6181('0x17'));var licenseUtil=require(_0x6181('0x18'));var db=require(_0x6181('0x19'))['db'];function respondWithStatusCode(_0x93edd,_0x4b0aec){_0x4b0aec=_0x4b0aec||0xcc;return function(_0x4f961d){if(_0x4f961d){return _0x93edd[_0x6181('0x1a')](_0x4b0aec);}return _0x93edd[_0x6181('0x1b')](_0x4b0aec)['end']();};}function respondWithResult(_0x4b7666,_0x481210){_0x481210=_0x481210||0xc8;return function(_0x14a741){if(_0x14a741){return _0x4b7666[_0x6181('0x1b')](_0x481210)[_0x6181('0x1c')](_0x14a741);}};}function respondWithFilteredResult(_0x204003,_0x254e87){return function(_0x4e9295){if(_0x4e9295){var _0x12988c=typeof _0x254e87[_0x6181('0x1d')]===_0x6181('0x1e')&&typeof _0x254e87['limit']===_0x6181('0x1e');var _0x44ea54=_0x4e9295[_0x6181('0x1f')];var _0x577f44=_0x12988c?0x0:_0x254e87[_0x6181('0x1d')];var _0x4a1033=_0x12988c?_0x4e9295[_0x6181('0x1f')]:_0x254e87[_0x6181('0x1d')]+_0x254e87[_0x6181('0x20')];var _0x12ac30;if(_0x4a1033>=_0x44ea54){_0x4a1033=_0x44ea54;_0x12ac30=0xc8;}else{_0x12ac30=0xce;}_0x204003['status'](_0x12ac30);return _0x204003[_0x6181('0x21')](_0x6181('0x22'),_0x577f44+'-'+_0x4a1033+'/'+_0x44ea54)[_0x6181('0x1c')](_0x4e9295);}return null;};}function patchUpdates(_0x1be6bf){return function(_0x1144c8){try{jsonpatch[_0x6181('0x23')](_0x1144c8,_0x1be6bf,!![]);}catch(_0xd9f7a2){return BPromise[_0x6181('0x24')](_0xd9f7a2);}return _0x1144c8[_0x6181('0x25')]();};}function saveUpdates(_0x37d078,_0x26a9e0){return function(_0xcd8319){if(_0xcd8319){return _0xcd8319[_0x6181('0x26')](_0x37d078)[_0x6181('0x27')](function(_0x17d539){return _0x17d539;});}return null;};}function removeEntity(_0x477b6e,_0x231b9e){return function(_0x58348c){if(_0x58348c){return _0x58348c[_0x6181('0x28')]()[_0x6181('0x27')](function(){_0x477b6e[_0x6181('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44f3e8,_0xbbeff1){return function(_0x180e85){if(!_0x180e85){_0x44f3e8['sendStatus'](0x194);}return _0x180e85;};}function handleError(_0x221698,_0x10f41f){_0x10f41f=_0x10f41f||0x1f4;return function(_0xd2bfd2){logger['error'](_0xd2bfd2[_0x6181('0x29')]);if(_0xd2bfd2[_0x6181('0x2a')]){delete _0xd2bfd2['name'];}_0x221698[_0x6181('0x1b')](_0x10f41f)[_0x6181('0x2b')](_0xd2bfd2);};}exports['index']=function(_0x1d69d8,_0x1472e7){var _0x241582={},_0x2b849c={},_0xc46ba5={'count':0x0,'rows':[]};var _0x19e8b3=_[_0x6181('0x2c')](db[_0x6181('0x2d')]['rawAttributes'],function(_0x459ab7){return{'name':_0x459ab7['fieldName'],'type':_0x459ab7[_0x6181('0x2e')][_0x6181('0x2f')]};});_0x2b849c[_0x6181('0x30')]=_['map'](_0x19e8b3,_0x6181('0x2a'));_0x2b849c['query']=_[_0x6181('0x31')](_0x1d69d8[_0x6181('0x32')]);_0x2b849c[_0x6181('0x33')]=_[_0x6181('0x34')](_0x2b849c['model'],_0x2b849c[_0x6181('0x32')]);_0x241582['attributes']=_[_0x6181('0x34')](_0x2b849c[_0x6181('0x30')],qs[_0x6181('0x35')](_0x1d69d8[_0x6181('0x32')]['fields']));_0x241582[_0x6181('0x36')]=_0x241582['attributes'][_0x6181('0x37')]?_0x241582[_0x6181('0x36')]:_0x2b849c['model'];if(!_0x1d69d8[_0x6181('0x32')]['hasOwnProperty'](_0x6181('0x38'))){_0x241582[_0x6181('0x20')]=qs['limit'](_0x1d69d8[_0x6181('0x32')][_0x6181('0x20')]);_0x241582[_0x6181('0x1d')]=qs['offset'](_0x1d69d8[_0x6181('0x32')][_0x6181('0x1d')]);}_0x241582[_0x6181('0x39')]=qs[_0x6181('0x3a')](_0x1d69d8[_0x6181('0x32')]['sort']);_0x241582[_0x6181('0x3b')]=qs[_0x6181('0x33')](_[_0x6181('0x3c')](_0x1d69d8[_0x6181('0x32')],_0x2b849c[_0x6181('0x33')]),_0x19e8b3);if(_0x1d69d8[_0x6181('0x32')]['filter']){_0x241582['where']=_[_0x6181('0x3d')](_0x241582[_0x6181('0x3b')],{'$or':_[_0x6181('0x2c')](_0x19e8b3,function(_0x2a8818){if(_0x2a8818['type']!==_0x6181('0x3e')){var _0x5a7f79={};_0x5a7f79[_0x2a8818[_0x6181('0x2a')]]={'$like':'%'+_0x1d69d8[_0x6181('0x32')]['filter']+'%'};return _0x5a7f79;}})});}_0x241582=_[_0x6181('0x3d')]({},_0x241582,_0x1d69d8[_0x6181('0x3f')]);var _0x2a94da={'where':_0x241582[_0x6181('0x3b')]};return db['ZendeskField'][_0x6181('0x1f')](_0x2a94da)[_0x6181('0x27')](function(_0x1b00b8){_0xc46ba5[_0x6181('0x1f')]=_0x1b00b8;if(_0x1d69d8[_0x6181('0x32')]['includeAll']){_0x241582['include']=[{'all':!![]}];}return db['ZendeskField'][_0x6181('0x40')](_0x241582);})[_0x6181('0x27')](function(_0xcb260){_0xc46ba5[_0x6181('0x41')]=_0xcb260;return _0xc46ba5;})['then'](respondWithFilteredResult(_0x1472e7,_0x241582))[_0x6181('0x42')](handleError(_0x1472e7,null));};exports['show']=function(_0x4cd6e0,_0x559adc){var _0x31fc13={'raw':!![],'where':{'id':_0x4cd6e0[_0x6181('0x43')]['id']}},_0x27194e={};_0x27194e[_0x6181('0x30')]=_[_0x6181('0x31')](db[_0x6181('0x2d')][_0x6181('0x44')]);_0x27194e[_0x6181('0x32')]=_['keys'](_0x4cd6e0[_0x6181('0x32')]);_0x27194e[_0x6181('0x33')]=_[_0x6181('0x34')](_0x27194e[_0x6181('0x30')],_0x27194e[_0x6181('0x32')]);_0x31fc13[_0x6181('0x36')]=_[_0x6181('0x34')](_0x27194e[_0x6181('0x30')],qs[_0x6181('0x35')](_0x4cd6e0[_0x6181('0x32')][_0x6181('0x35')]));_0x31fc13['attributes']=_0x31fc13['attributes'][_0x6181('0x37')]?_0x31fc13[_0x6181('0x36')]:_0x27194e[_0x6181('0x30')];if(_0x4cd6e0['query']['includeAll']){_0x31fc13[_0x6181('0x45')]=[{'all':!![]}];}_0x31fc13=_[_0x6181('0x3d')]({},_0x31fc13,_0x4cd6e0[_0x6181('0x3f')]);return db[_0x6181('0x2d')]['find'](_0x31fc13)['then'](handleEntityNotFound(_0x559adc,null))[_0x6181('0x27')](respondWithResult(_0x559adc,null))[_0x6181('0x42')](handleError(_0x559adc,null));};exports[_0x6181('0x46')]=function(_0x215dc0,_0xd8e083){return db[_0x6181('0x2d')][_0x6181('0x46')](_0x215dc0[_0x6181('0x47')],{})[_0x6181('0x27')](respondWithResult(_0xd8e083,0xc9))[_0x6181('0x42')](handleError(_0xd8e083,null));};exports['update']=function(_0x23cfc5,_0xd5956){if(_0x23cfc5[_0x6181('0x47')]['id']){delete _0x23cfc5[_0x6181('0x47')]['id'];}return db[_0x6181('0x2d')][_0x6181('0x48')]({'where':{'id':_0x23cfc5[_0x6181('0x43')]['id']}})[_0x6181('0x27')](handleEntityNotFound(_0xd5956,null))['then'](saveUpdates(_0x23cfc5[_0x6181('0x47')],null))[_0x6181('0x27')](respondWithResult(_0xd5956,null))['catch'](handleError(_0xd5956,null));};exports[_0x6181('0x28')]=function(_0x14151a,_0x5a75a9){return db[_0x6181('0x2d')][_0x6181('0x48')]({'where':{'id':_0x14151a[_0x6181('0x43')]['id']}})[_0x6181('0x27')](handleEntityNotFound(_0x5a75a9,null))[_0x6181('0x27')](removeEntity(_0x5a75a9,null))[_0x6181('0x42')](handleError(_0x5a75a9,null));};
\ No newline at end of file
index e9d8aa5..5e60b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe6=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','zendesk_unique_index','idField','lodash'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xabe6,0x14f));var _0x6abe=function(_0x181548,_0x405bbe){_0x181548=_0x181548-0x0;var _0x538253=_0xabe6[_0x181548];return _0x538253;};'use strict';var _=require(_0x6abe('0x0'));var util=require(_0x6abe('0x1'));var logger=require(_0x6abe('0x2'))('api');var moment=require(_0x6abe('0x3'));var BPromise=require(_0x6abe('0x4'));var rp=require(_0x6abe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6abe('0x6'));var config=require(_0x6abe('0x7'));var attributes=require('./intZendeskField.attributes');module[_0x6abe('0x8')]=function(_0x46a4ef,_0x3184ac){return _0x46a4ef[_0x6abe('0x9')]('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x6abe('0xa'),'fields':[_0x6abe('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d7d=['../../config/logger','bluebird','../../config/environment','./intZendeskField.attributes','exports','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util'];(function(_0x55f890,_0x6211b2){var _0x262247=function(_0x45fddc){while(--_0x45fddc){_0x55f890['push'](_0x55f890['shift']());}};_0x262247(++_0x6211b2);}(_0x0d7d,0x82));var _0xd0d7=function(_0x19c5f2,_0x44ed13){_0x19c5f2=_0x19c5f2-0x0;var _0xb94caf=_0x0d7d[_0x19c5f2];return _0xb94caf;};'use strict';var _=require(_0xd0d7('0x0'));var util=require(_0xd0d7('0x1'));var logger=require(_0xd0d7('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd0d7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd0d7('0x4'));var attributes=require(_0xd0d7('0x5'));module[_0xd0d7('0x6')]=function(_0x16a7e7,_0x3c3ff3){return _0x16a7e7['define'](_0xd0d7('0x7'),attributes,{'tableName':_0xd0d7('0x8'),'paranoid':![],'indexes':[{'name':_0xd0d7('0x9'),'fields':['idField',_0xd0d7('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d1326a6..0e4dd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0cc=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','debug','error','code','ZendeskField,\x20%s,\x20%s','message','info','catch'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0xc0cc,0x190));var _0xcc0c=function(_0x24a90a,_0x40e57e){_0x24a90a=_0x24a90a-0x0;var _0x1fb916=_0xc0cc[_0x24a90a];return _0x1fb916;};'use strict';var _=require(_0xcc0c('0x0'));var util=require('util');var moment=require(_0xcc0c('0x1'));var BPromise=require(_0xcc0c('0x2'));var rs=require(_0xcc0c('0x3'));var fs=require('fs');var Redis=require(_0xcc0c('0x4'));var db=require(_0xcc0c('0x5'))['db'];var utils=require(_0xcc0c('0x6'));var logger=require('../../config/logger')(_0xcc0c('0x7'));var config=require(_0xcc0c('0x8'));var jayson=require(_0xcc0c('0x9'));var client=jayson['client'][_0xcc0c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fb8f8,_0x32be23,_0x43225d){return new BPromise(function(_0x3445bb,_0x163f7e){return client['request'](_0x1fb8f8,_0x43225d)[_0xcc0c('0xb')](function(_0x4a7d7b){logger['info']('ZendeskField,\x20%s,\x20%s',_0x32be23,_0xcc0c('0xc'));logger[_0xcc0c('0xd')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x32be23,'request\x20sent',JSON['stringify'](_0x4a7d7b));if(_0x4a7d7b['error']){if(_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0xf')]===0x1f4){logger[_0xcc0c('0xe')](_0xcc0c('0x10'),_0x32be23,_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);return _0x163f7e(_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);}logger[_0xcc0c('0xe')]('ZendeskField,\x20%s,\x20%s',_0x32be23,_0x4a7d7b[_0xcc0c('0xe')][_0xcc0c('0x11')]);return _0x3445bb(_0x4a7d7b['error'][_0xcc0c('0x11')]);}else{logger[_0xcc0c('0x12')](_0xcc0c('0x10'),_0x32be23,_0xcc0c('0xc'));_0x3445bb(_0x4a7d7b['result'][_0xcc0c('0x11')]);}})[_0xcc0c('0x13')](function(_0x15621a){logger[_0xcc0c('0xe')](_0xcc0c('0x10'),_0x32be23,_0x15621a);_0x163f7e(_0x15621a);});});}
\ No newline at end of file
+var _0xa9a0=['info','ZendeskField,\x20%s,\x20%s','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9a0,0x7d));var _0x0a9a=function(_0x386aa8,_0x2c634c){_0x386aa8=_0x386aa8-0x0;var _0x4ed4bf=_0xa9a0[_0x386aa8];return _0x4ed4bf;};'use strict';var _=require(_0x0a9a('0x0'));var util=require('util');var moment=require(_0x0a9a('0x1'));var BPromise=require(_0x0a9a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9a('0x3'));var db=require(_0x0a9a('0x4'))['db'];var utils=require(_0x0a9a('0x5'));var logger=require(_0x0a9a('0x6'))(_0x0a9a('0x7'));var config=require(_0x0a9a('0x8'));var jayson=require(_0x0a9a('0x9'));var client=jayson[_0x0a9a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30e366,_0x586474,_0x165d08){return new BPromise(function(_0x9b701b,_0x43dc6e){return client[_0x0a9a('0xb')](_0x30e366,_0x165d08)[_0x0a9a('0xc')](function(_0x53d6c9){logger[_0x0a9a('0xd')](_0x0a9a('0xe'),_0x586474,'request\x20sent');logger['debug'](_0x0a9a('0xf'),_0x586474,_0x0a9a('0x10'),JSON[_0x0a9a('0x11')](_0x53d6c9));if(_0x53d6c9[_0x0a9a('0x12')]){if(_0x53d6c9[_0x0a9a('0x12')][_0x0a9a('0x13')]===0x1f4){logger[_0x0a9a('0x12')]('ZendeskField,\x20%s,\x20%s',_0x586474,_0x53d6c9['error'][_0x0a9a('0x14')]);return _0x43dc6e(_0x53d6c9[_0x0a9a('0x12')][_0x0a9a('0x14')]);}logger[_0x0a9a('0x12')](_0x0a9a('0xe'),_0x586474,_0x53d6c9[_0x0a9a('0x12')][_0x0a9a('0x14')]);return _0x9b701b(_0x53d6c9['error'][_0x0a9a('0x14')]);}else{logger['info'](_0x0a9a('0xe'),_0x586474,_0x0a9a('0x10'));_0x9b701b(_0x53d6c9[_0x0a9a('0x15')][_0x0a9a('0x14')]);}})[_0x0a9a('0x16')](function(_0x17c55a){logger[_0x0a9a('0x12')](_0x0a9a('0xe'),_0x586474,_0x17c55a);_0x43dc6e(_0x17c55a);});});}
\ No newline at end of file
index ee839a8..bc6175b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc210=['./intZohoAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','create','addConfiguration','put','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x45174e,_0x4bc311){var _0xea9b8a=function(_0x535141){while(--_0x535141){_0x45174e['push'](_0x45174e['shift']());}};_0xea9b8a(++_0x4bc311);}(_0xc210,0xfe));var _0x0c21=function(_0x5d2d76,_0x47c4f6){_0x5d2d76=_0x5d2d76-0x0;var _0x56c9fe=_0xc210[_0x5d2d76];return _0x56c9fe;};'use strict';var multer=require(_0x0c21('0x0'));var util=require(_0x0c21('0x1'));var path=require(_0x0c21('0x2'));var timeout=require(_0x0c21('0x3'));var express=require(_0x0c21('0x4'));var router=express[_0x0c21('0x5')]();var fs_extra=require(_0x0c21('0x6'));var auth=require(_0x0c21('0x7'));var interaction=require(_0x0c21('0x8'));var config=require(_0x0c21('0x9'));var controller=require(_0x0c21('0xa'));router[_0x0c21('0xb')]('/',auth[_0x0c21('0xc')](),controller[_0x0c21('0xd')]);router['get'](_0x0c21('0xe'),auth[_0x0c21('0xc')](),controller['show']);router[_0x0c21('0xb')](_0x0c21('0xf'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x10')]);router['get'](_0x0c21('0x11'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x12')]);router['post']('/',auth[_0x0c21('0xc')](),controller[_0x0c21('0x13')]);router['post'](_0x0c21('0xf'),auth[_0x0c21('0xc')](),controller[_0x0c21('0x14')]);router[_0x0c21('0x15')](_0x0c21('0xe'),auth[_0x0c21('0xc')](),controller['update']);router[_0x0c21('0x16')]('/:id',auth[_0x0c21('0xc')](),controller[_0x0c21('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x2d23=['put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','getFields','create','addConfiguration'];(function(_0x52ea08,_0x15d935){var _0x28d546=function(_0x4a3aa7){while(--_0x4a3aa7){_0x52ea08['push'](_0x52ea08['shift']());}};_0x28d546(++_0x15d935);}(_0x2d23,0x10e));var _0x32d2=function(_0x5ef5c1,_0x3fc4ca){_0x5ef5c1=_0x5ef5c1-0x0;var _0x4d35db=_0x2d23[_0x5ef5c1];return _0x4d35db;};'use strict';var multer=require(_0x32d2('0x0'));var util=require(_0x32d2('0x1'));var path=require(_0x32d2('0x2'));var timeout=require(_0x32d2('0x3'));var express=require(_0x32d2('0x4'));var router=express[_0x32d2('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x32d2('0x6'));var config=require(_0x32d2('0x7'));var controller=require(_0x32d2('0x8'));router[_0x32d2('0x9')]('/',auth[_0x32d2('0xa')](),controller[_0x32d2('0xb')]);router[_0x32d2('0x9')]('/:id',auth[_0x32d2('0xa')](),controller[_0x32d2('0xc')]);router['get']('/:id/configurations',auth[_0x32d2('0xa')](),controller[_0x32d2('0xd')]);router['get'](_0x32d2('0xe'),auth[_0x32d2('0xa')](),controller[_0x32d2('0xf')]);router['post']('/',auth[_0x32d2('0xa')](),controller[_0x32d2('0x10')]);router['post']('/:id/configurations',auth[_0x32d2('0xa')](),controller[_0x32d2('0x11')]);router[_0x32d2('0x12')]('/:id',auth[_0x32d2('0xa')](),controller[_0x32d2('0x13')]);router[_0x32d2('0x14')](_0x32d2('0x15'),auth[_0x32d2('0xa')](),controller[_0x32d2('0x16')]);module[_0x32d2('0x17')]=router;
\ No newline at end of file
index b678d75..df9f1de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['sequelize','exports','STRING'];(function(_0x381372,_0xf0a5a){var _0x4e959a=function(_0x25a897){while(--_0x25a897){_0x381372['push'](_0x381372['shift']());}};_0x4e959a(++_0xf0a5a);}(_0x34e8,0x12c));var _0x834e=function(_0x4c5f04,_0x109ff5){_0x4c5f04=_0x4c5f04-0x0;var _0x32b0ae=_0x34e8[_0x4c5f04];return _0x32b0ae;};'use strict';var Sequelize=require(_0x834e('0x0'));module[_0x834e('0x1')]={'name':{'type':Sequelize[_0x834e('0x2')]},'description':{'type':Sequelize[_0x834e('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x834e('0x2')]},'clientId':{'type':Sequelize[_0x834e('0x2')]},'clientSecret':{'type':Sequelize[_0x834e('0x2')]},'serverUrl':{'type':Sequelize[_0x834e('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x834e('0x2')]},'refreshToken':{'type':Sequelize[_0x834e('0x2')]}};
\ No newline at end of file
+var _0x91a7=['STRING','exports'];(function(_0x46cea9,_0x476e05){var _0x210bda=function(_0x4472dd){while(--_0x4472dd){_0x46cea9['push'](_0x46cea9['shift']());}};_0x210bda(++_0x476e05);}(_0x91a7,0xe7));var _0x791a=function(_0x350f55,_0xaaba60){_0x350f55=_0x350f55-0x0;var _0x2ee2a1=_0x91a7[_0x350f55];return _0x2ee2a1;};'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 6ea8885..2c0c382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc42f=['sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','update','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','body','getConfigurations','findOne','ZohoConfiguration','order','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','refreshToken','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','zoho.eu','serverUrl','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Result','Call_Type','remove','includes','api_name','push','display_label','data_type','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','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','../../components/integrations/configuration'];(function(_0x3799b2,_0x3728da){var _0x1d7571=function(_0x4993b3){while(--_0x4993b3){_0x3799b2['push'](_0x3799b2['shift']());}};_0x1d7571(++_0x3728da);}(_0xc42f,0x65));var _0xfc42=function(_0x311012,_0x1e30b0){_0x311012=_0x311012-0x0;var _0x176a8b=_0xc42f[_0x311012];return _0x176a8b;};'use strict';var emlformat=require(_0xfc42('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfc42('0x1'));var rp=require('request-promise');var moment=require(_0xfc42('0x2'));var BPromise=require(_0xfc42('0x3'));var Mustache=require(_0xfc42('0x4'));var util=require('util');var path=require(_0xfc42('0x5'));var sox=require(_0xfc42('0x6'));var csv=require('to-csv');var ejs=require(_0xfc42('0x7'));var fs=require('fs');var fs_extra=require(_0xfc42('0x8'));var _=require(_0xfc42('0x9'));var squel=require(_0xfc42('0xa'));var crypto=require('crypto');var jsforce=require(_0xfc42('0xb'));var deskjs=require(_0xfc42('0xc'));var toCsv=require(_0xfc42('0xd'));var querystring=require('querystring');var Papa=require(_0xfc42('0xe'));var Redis=require(_0xfc42('0xf'));var authService=require(_0xfc42('0x10'));var qs=require(_0xfc42('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfc42('0x12'));var logger=require('../../config/logger')(_0xfc42('0x13'));var utils=require(_0xfc42('0x14'));var config=require(_0xfc42('0x15'));var licenseUtil=require(_0xfc42('0x16'));var db=require(_0xfc42('0x17'))['db'];var integrations=require(_0xfc42('0x18'));function respondWithStatusCode(_0x338aca,_0x2b909d){_0x2b909d=_0x2b909d||0xcc;return function(_0xc8560){if(_0xc8560){return _0x338aca[_0xfc42('0x19')](_0x2b909d);}return _0x338aca[_0xfc42('0x1a')](_0x2b909d)[_0xfc42('0x1b')]();};}function respondWithResult(_0x5aa6bd,_0x45ec6e){_0x45ec6e=_0x45ec6e||0xc8;return function(_0x27c2a5){if(_0x27c2a5){return _0x5aa6bd['status'](_0x45ec6e)['json'](_0x27c2a5);}};}function respondWithFilteredResult(_0x512bc3,_0x48dc42){return function(_0x58046f){if(_0x58046f){var _0x4cbc54=typeof _0x48dc42[_0xfc42('0x1c')]===_0xfc42('0x1d')&&typeof _0x48dc42['limit']===_0xfc42('0x1d');var _0x23764f=_0x58046f[_0xfc42('0x1e')];var _0xd06e0e=_0x4cbc54?0x0:_0x48dc42[_0xfc42('0x1c')];var _0x14ea84=_0x4cbc54?_0x58046f['count']:_0x48dc42[_0xfc42('0x1c')]+_0x48dc42[_0xfc42('0x1f')];var _0x362fca;if(_0x14ea84>=_0x23764f){_0x14ea84=_0x23764f;_0x362fca=0xc8;}else{_0x362fca=0xce;}_0x512bc3[_0xfc42('0x1a')](_0x362fca);return _0x512bc3['set'](_0xfc42('0x20'),_0xd06e0e+'-'+_0x14ea84+'/'+_0x23764f)[_0xfc42('0x21')](_0x58046f);}return null;};}function patchUpdates(_0x544bf1){return function(_0x5f0d0e){try{jsonpatch[_0xfc42('0x22')](_0x5f0d0e,_0x544bf1,!![]);}catch(_0x194a62){return BPromise[_0xfc42('0x23')](_0x194a62);}return _0x5f0d0e['save']();};}function saveUpdates(_0x281f09,_0x369095){return function(_0x1b8a1d){if(_0x1b8a1d){return _0x1b8a1d[_0xfc42('0x24')](_0x281f09)[_0xfc42('0x25')](function(_0x3c2f98){return _0x3c2f98;});}return null;};}function removeEntity(_0x1395b0,_0x2d1d32){return function(_0x488fc7){if(_0x488fc7){return _0x488fc7[_0xfc42('0x26')]()[_0xfc42('0x25')](function(){_0x1395b0[_0xfc42('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x319ce0,_0x53751c){return function(_0x2a9900){if(!_0x2a9900){_0x319ce0[_0xfc42('0x19')](0x194);}return _0x2a9900;};}function handleError(_0x26b0a7,_0x3fc2f6){_0x3fc2f6=_0x3fc2f6||0x1f4;return function(_0x124203){logger[_0xfc42('0x27')](_0x124203['stack']);if(_0x124203['name']){delete _0x124203[_0xfc42('0x28')];}_0x26b0a7[_0xfc42('0x1a')](_0x3fc2f6)[_0xfc42('0x29')](_0x124203);};}exports[_0xfc42('0x2a')]=function(_0x1e320d,_0x55c730){var _0x5c0278={},_0x10c769={},_0x77f286={'count':0x0,'rows':[]};var _0x134f42=_[_0xfc42('0x2b')](db[_0xfc42('0x2c')][_0xfc42('0x2d')],function(_0x119dff){return{'name':_0x119dff[_0xfc42('0x2e')],'type':_0x119dff['type'][_0xfc42('0x2f')]};});_0x10c769[_0xfc42('0x30')]=_[_0xfc42('0x2b')](_0x134f42,_0xfc42('0x28'));_0x10c769[_0xfc42('0x31')]=_[_0xfc42('0x32')](_0x1e320d['query']);_0x10c769[_0xfc42('0x33')]=_[_0xfc42('0x34')](_0x10c769[_0xfc42('0x30')],_0x10c769[_0xfc42('0x31')]);_0x5c0278[_0xfc42('0x35')]=_[_0xfc42('0x34')](_0x10c769[_0xfc42('0x30')],qs['fields'](_0x1e320d[_0xfc42('0x31')]['fields']));_0x5c0278[_0xfc42('0x35')]=_0x5c0278[_0xfc42('0x35')][_0xfc42('0x36')]?_0x5c0278['attributes']:_0x10c769['model'];if(!_0x1e320d[_0xfc42('0x31')][_0xfc42('0x37')](_0xfc42('0x38'))){_0x5c0278[_0xfc42('0x1f')]=qs[_0xfc42('0x1f')](_0x1e320d['query']['limit']);_0x5c0278['offset']=qs[_0xfc42('0x1c')](_0x1e320d['query'][_0xfc42('0x1c')]);}_0x5c0278['order']=qs[_0xfc42('0x39')](_0x1e320d[_0xfc42('0x31')]['sort']);_0x5c0278['where']=qs[_0xfc42('0x33')](_[_0xfc42('0x3a')](_0x1e320d[_0xfc42('0x31')],_0x10c769[_0xfc42('0x33')]),_0x134f42);if(_0x1e320d[_0xfc42('0x31')][_0xfc42('0x3b')]){_0x5c0278['where']=_[_0xfc42('0x3c')](_0x5c0278[_0xfc42('0x3d')],{'$or':_['map'](_0x134f42,function(_0x1588e7){if(_0x1588e7[_0xfc42('0x3e')]!==_0xfc42('0x3f')){var _0x3f28f8={};_0x3f28f8[_0x1588e7[_0xfc42('0x28')]]={'$like':'%'+_0x1e320d[_0xfc42('0x31')][_0xfc42('0x3b')]+'%'};return _0x3f28f8;}})});}_0x5c0278=_[_0xfc42('0x3c')]({},_0x5c0278,_0x1e320d[_0xfc42('0x40')]);var _0xb7ad0b={'where':_0x5c0278[_0xfc42('0x3d')]};return db[_0xfc42('0x2c')][_0xfc42('0x1e')](_0xb7ad0b)['then'](function(_0x458690){_0x77f286[_0xfc42('0x1e')]=_0x458690;if(_0x1e320d[_0xfc42('0x31')][_0xfc42('0x41')]){_0x5c0278[_0xfc42('0x42')]=[{'all':!![]}];}return db[_0xfc42('0x2c')][_0xfc42('0x43')](_0x5c0278);})[_0xfc42('0x25')](function(_0x3b7323){_0x77f286[_0xfc42('0x44')]=_0x3b7323;return _0x77f286;})[_0xfc42('0x25')](respondWithFilteredResult(_0x55c730,_0x5c0278))[_0xfc42('0x45')](handleError(_0x55c730,null));};exports[_0xfc42('0x46')]=function(_0x49dd25,_0x323310){var _0x3255f2={'raw':![],'where':{'id':_0x49dd25[_0xfc42('0x47')]['id']}},_0x20c210={};_0x20c210[_0xfc42('0x30')]=_['keys'](db[_0xfc42('0x2c')][_0xfc42('0x2d')]);_0x20c210['query']=_[_0xfc42('0x32')](_0x49dd25[_0xfc42('0x31')]);_0x20c210['filters']=_['intersection'](_0x20c210['model'],_0x20c210[_0xfc42('0x31')]);_0x3255f2['attributes']=_[_0xfc42('0x34')](_0x20c210[_0xfc42('0x30')],qs[_0xfc42('0x48')](_0x49dd25['query'][_0xfc42('0x48')]));_0x3255f2[_0xfc42('0x35')]=_0x3255f2['attributes'][_0xfc42('0x36')]?_0x3255f2['attributes']:_0x20c210[_0xfc42('0x30')];if(_0x49dd25['query'][_0xfc42('0x41')]){_0x3255f2[_0xfc42('0x42')]=[{'all':!![]}];}_0x3255f2=_['merge']({},_0x3255f2,_0x49dd25[_0xfc42('0x40')]);return db[_0xfc42('0x2c')][_0xfc42('0x49')](_0x3255f2)[_0xfc42('0x25')](handleEntityNotFound(_0x323310,null))[_0xfc42('0x25')](respondWithResult(_0x323310,null))['catch'](handleError(_0x323310,null));};exports['create']=function(_0x188abe,_0x53f2b1){return db[_0xfc42('0x2c')]['create'](_0x188abe[_0xfc42('0x4a')],{})[_0xfc42('0x25')](respondWithResult(_0x53f2b1,0xc9))[_0xfc42('0x45')](handleError(_0x53f2b1,null));};exports[_0xfc42('0x24')]=function(_0x24eb13,_0x14b6bf){if(_0x24eb13[_0xfc42('0x4a')]['id']){delete _0x24eb13[_0xfc42('0x4a')]['id'];}return db[_0xfc42('0x2c')][_0xfc42('0x49')]({'where':{'id':_0x24eb13['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x14b6bf,null))[_0xfc42('0x25')](saveUpdates(_0x24eb13[_0xfc42('0x4a')],null))[_0xfc42('0x25')](respondWithResult(_0x14b6bf,null))['catch'](handleError(_0x14b6bf,null));};exports[_0xfc42('0x26')]=function(_0x2ea947,_0x20b82a){return db['ZohoAccount'][_0xfc42('0x49')]({'where':{'id':_0x2ea947['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x20b82a,null))[_0xfc42('0x25')](removeEntity(_0x20b82a,null))['catch'](handleError(_0x20b82a,null));};exports[_0xfc42('0x4b')]=function(_0xf46c0b,_0x4da504,_0x5dac4b){var _0x75a77e={};var _0x507b26={};var _0x23fa53;var _0x2917e0;return db['ZohoAccount'][_0xfc42('0x4c')]({'where':{'id':_0xf46c0b['params']['id']}})['then'](handleEntityNotFound(_0x4da504,null))[_0xfc42('0x25')](function(_0x1775f3){if(_0x1775f3){_0x23fa53=_0x1775f3;_0x507b26[_0xfc42('0x30')]=_[_0xfc42('0x32')](db[_0xfc42('0x4d')][_0xfc42('0x2d')]);_0x507b26[_0xfc42('0x31')]=_[_0xfc42('0x32')](_0xf46c0b['query']);_0x507b26['filters']=_[_0xfc42('0x34')](_0x507b26[_0xfc42('0x30')],_0x507b26[_0xfc42('0x31')]);_0x75a77e[_0xfc42('0x35')]=_[_0xfc42('0x34')](_0x507b26['model'],qs['fields'](_0xf46c0b['query'][_0xfc42('0x48')]));_0x75a77e[_0xfc42('0x35')]=_0x75a77e[_0xfc42('0x35')][_0xfc42('0x36')]?_0x75a77e[_0xfc42('0x35')]:_0x507b26[_0xfc42('0x30')];_0x75a77e[_0xfc42('0x4e')]=qs['sort'](_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x39')]);_0x75a77e[_0xfc42('0x3d')]=qs['filters'](_[_0xfc42('0x3a')](_0xf46c0b['query'],_0x507b26[_0xfc42('0x33')]));if(_0xf46c0b[_0xfc42('0x31')]['filter']){_0x75a77e[_0xfc42('0x3d')]=_['merge'](_0x75a77e['where'],{'$or':_[_0xfc42('0x2b')](_0x75a77e['attributes'],function(_0x44bf87){var _0x4a3187={};_0x4a3187[_0x44bf87]={'$like':'%'+_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x3b')]+'%'};return _0x4a3187;})});}_0x75a77e=_[_0xfc42('0x3c')]({},_0x75a77e,_0xf46c0b[_0xfc42('0x40')]);return _0x23fa53[_0xfc42('0x4b')](_0x75a77e);}})[_0xfc42('0x25')](function(_0x59460c){if(_0x59460c){_0x2917e0=_0x59460c[_0xfc42('0x36')];if(!_0xf46c0b[_0xfc42('0x31')]['hasOwnProperty']('nolimit')){_0x75a77e[_0xfc42('0x1f')]=qs[_0xfc42('0x1f')](_0xf46c0b[_0xfc42('0x31')]['limit']);_0x75a77e[_0xfc42('0x1c')]=qs[_0xfc42('0x1c')](_0xf46c0b[_0xfc42('0x31')][_0xfc42('0x1c')]);}return _0x23fa53['getConfigurations'](_0x75a77e);}})[_0xfc42('0x25')](function(_0xa0c89){if(_0xa0c89){return _0xa0c89?{'count':_0x2917e0,'rows':_0xa0c89}:null;}})['then'](respondWithResult(_0x4da504,null))[_0xfc42('0x45')](handleError(_0x4da504,null));};exports['addConfiguration']=function(_0x5d0952,_0x2e4a21,_0x23cf70){if(_0x5d0952[_0xfc42('0x4a')]['id']){delete _0x5d0952[_0xfc42('0x4a')]['id'];}return db[_0xfc42('0x2c')][_0xfc42('0x4c')]({'where':{'id':_0x5d0952['params']['id']}})[_0xfc42('0x25')](handleEntityNotFound(_0x2e4a21,null))[_0xfc42('0x25')](function(_0x351e7d){if(_0x351e7d){_0x5d0952[_0xfc42('0x4a')]['AccountId']=_0x351e7d['id'];_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x4f')]=integrations[_0xfc42('0x50')](_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x51')],_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x3e')]);_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x52')]=integrations[_0xfc42('0x53')](_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x51')],_0x5d0952[_0xfc42('0x4a')][_0xfc42('0x3e')]);return db['ZohoConfiguration']['create'](_0x5d0952[_0xfc42('0x4a')],{'include':[{'model':db[_0xfc42('0x54')],'as':_0xfc42('0x4f')},{'model':db[_0xfc42('0x54')],'as':_0xfc42('0x52')}]});}return null;})[_0xfc42('0x25')](respondWithResult(_0x2e4a21,null))[_0xfc42('0x45')](handleError(_0x2e4a21,null));};function getAccessToken(_0x4fb02b){return new Promise(function(_0x1dc138,_0x5a1ab9){var _0x208be9;switch(_0x4fb02b['zone']){case'US':_0x208be9=_0xfc42('0x55');break;case'AU':_0x208be9=_0xfc42('0x56');break;case'EU':_0x208be9='https://accounts.zoho.eu';break;case'IN':_0x208be9=_0xfc42('0x57');break;case'CN':_0x208be9=_0xfc42('0x58');break;default:_0x208be9=_0xfc42('0x59');break;}var _0x938b7c={'method':_0xfc42('0x5a'),'uri':_0x208be9+'/oauth/v2/token','qs':{'refresh_token':_0x4fb02b[_0xfc42('0x5b')],'client_id':_0x4fb02b['clientId'],'client_secret':_0x4fb02b[_0xfc42('0x5c')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x938b7c)[_0xfc42('0x25')](function(_0x293be0){if(_0x293be0[_0xfc42('0x5d')]){_0x1dc138(_0x293be0[_0xfc42('0x5d')]);}else{_0x5a1ab9(_0xfc42('0x5e'));}})[_0xfc42('0x45')](function(_0x5f014b){_0x5a1ab9(_0x5f014b);});});}exports[_0xfc42('0x5f')]=function(_0x341c19,_0x18d01e,_0x32c0ed){var _0x493f82,_0x1396d6,_0x3dff76,_0x262fb4,_0xe8fac9;return db[_0xfc42('0x2c')][_0xfc42('0x4c')]({'where':{'id':_0x341c19[_0xfc42('0x47')]['id']},'attributes':['id',_0xfc42('0x60'),'zone',_0xfc42('0x61'),_0xfc42('0x5c'),'serverUrl','code',_0xfc42('0x5b')]})['then'](handleEntityNotFound(_0x18d01e,null))[_0xfc42('0x25')](function(_0x31c9fb){_0xe8fac9=_0x31c9fb;_0x493f82=_0xe8fac9[_0xfc42('0x60')];_0x1396d6=_0x493f82===_0xfc42('0x62')?'eu':'com';_0x3dff76=_0xe8fac9[_0xfc42('0x63')];var _0x136dc8=_0x3dff76[_0xfc42('0x64')](-0x1);if(_0x136dc8==='/'||_0x136dc8==='\x5c'||_0x136dc8===':'){_0x3dff76=_0x3dff76[_0xfc42('0x65')](0x0,_0x3dff76['lastIndexOf'](_0x136dc8));}if(!_0xe8fac9[_0xfc42('0x5b')]){throw new Error(_0xfc42('0x66'));}return getAccessToken(_0xe8fac9);})['then'](function(_0x129ee4){if(_0x129ee4){return rp({'method':_0xfc42('0x67'),'uri':util[_0xfc42('0x68')](_0xfc42('0x69'),_0x1396d6),'qs':{'module':_0xfc42('0x6a')},'headers':{'Authorization':_0xfc42('0x6b')+_0x129ee4},'json':!![]});}})[_0xfc42('0x25')](function(_0xa7612d){if(_0xa7612d){if(_0xa7612d['response']&&_0xa7612d['response']['error']){throw new Error(_0xa7612d[_0xfc42('0x6c')]['error']['message']);}var _0x482ce0=[];var _0x6e2d0b=[];var _0x5efecb=[_0xfc42('0x6d'),_0xfc42('0x6e'),_0xfc42('0x6f'),_0xfc42('0x70'),'Call_Duration',_0xfc42('0x71'),'Call_Start_Time',_0xfc42('0x72')];_0x6e2d0b=_[_0xfc42('0x73')](_0xa7612d[_0xfc42('0x48')],function(_0x401a64){return _0x5efecb[_0xfc42('0x74')](_0x401a64[_0xfc42('0x75')]);});for(var _0x31cbe9=0x0;_0x31cbe9<_0x6e2d0b['length'];_0x31cbe9++){if(_0x6e2d0b[_0x31cbe9]['system_mandatory']===![]){_0x482ce0[_0xfc42('0x76')]({'id':_0x6e2d0b[_0x31cbe9]['id'],'name':_0x6e2d0b[_0x31cbe9][_0xfc42('0x77')],'custom':_0x6e2d0b[_0x31cbe9]['custom_field'],'options':_0x6e2d0b[_0x31cbe9][_0xfc42('0x78')]==='picklist'&&_0x6e2d0b[_0x31cbe9][_0xfc42('0x79')]['length']>-0x1?_[_0xfc42('0x2b')](_0x6e2d0b[_0x31cbe9][_0xfc42('0x79')],function(_0x41f249){return{'name':_0x41f249,'value':_0x41f249};}):[]});}}return{'count':_0x482ce0[_0xfc42('0x36')],'rows':_0x482ce0};}else{return{'count':0x0,'rows':[]};}})[_0xfc42('0x25')](respondWithResult(_0x18d01e,null))[_0xfc42('0x45')](function(_0x99afab){var _0x28a93a=_0x341c19[_0xfc42('0x31')][_0xfc42('0x7a')]?0x1f4:_0x99afab['statusCode']||0x1f4;logger[_0xfc42('0x27')](_0xfc42('0x7b'),_0xfc42('0x5f'),_0x28a93a,JSON['stringify'](_0x99afab));delete _0x99afab['name'];if(_0x28a93a===0x191){_0x28a93a=0x190;}_0x18d01e[_0xfc42('0x1a')](_0x28a93a)['send'](_0x341c19[_0xfc42('0x31')][_0xfc42('0x7a')]?{'message':_0xfc42('0x7c'),'statusCode':_0x99afab[_0xfc42('0x7d')]}:_0x99afab);});};
\ No newline at end of file
+var _0x478a=['/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','zoho.eu','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Subject','WhoId','Call_Duration','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','include','findAll','rows','catch','show','params','keys','fields','length','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn'];(function(_0x414fc1,_0x1c6fcb){var _0x57eae2=function(_0x25ade9){while(--_0x25ade9){_0x414fc1['push'](_0x414fc1['shift']());}};_0x57eae2(++_0x1c6fcb);}(_0x478a,0x132));var _0xa478=function(_0x1119cc,_0x33358f){_0x1119cc=_0x1119cc-0x0;var _0x20d631=_0x478a[_0x1119cc];return _0x20d631;};'use strict';var emlformat=require(_0xa478('0x0'));var rimraf=require(_0xa478('0x1'));var zipdir=require(_0xa478('0x2'));var jsonpatch=require(_0xa478('0x3'));var rp=require(_0xa478('0x4'));var moment=require(_0xa478('0x5'));var BPromise=require(_0xa478('0x6'));var Mustache=require('mustache');var util=require(_0xa478('0x7'));var path=require(_0xa478('0x8'));var sox=require(_0xa478('0x9'));var csv=require(_0xa478('0xa'));var ejs=require(_0xa478('0xb'));var fs=require('fs');var fs_extra=require(_0xa478('0xc'));var _=require(_0xa478('0xd'));var squel=require(_0xa478('0xe'));var crypto=require(_0xa478('0xf'));var jsforce=require(_0xa478('0x10'));var deskjs=require(_0xa478('0x11'));var toCsv=require('to-csv');var querystring=require(_0xa478('0x12'));var Papa=require(_0xa478('0x13'));var Redis=require(_0xa478('0x14'));var authService=require(_0xa478('0x15'));var qs=require(_0xa478('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa478('0x17'));var logger=require(_0xa478('0x18'))('api');var utils=require(_0xa478('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xa478('0x1a'));var db=require(_0xa478('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x10dd13,_0x1b8f27){_0x1b8f27=_0x1b8f27||0xcc;return function(_0x1a6542){if(_0x1a6542){return _0x10dd13[_0xa478('0x1c')](_0x1b8f27);}return _0x10dd13[_0xa478('0x1d')](_0x1b8f27)[_0xa478('0x1e')]();};}function respondWithResult(_0xf8fe06,_0x1bd6f4){_0x1bd6f4=_0x1bd6f4||0xc8;return function(_0xcfbed3){if(_0xcfbed3){return _0xf8fe06[_0xa478('0x1d')](_0x1bd6f4)[_0xa478('0x1f')](_0xcfbed3);}};}function respondWithFilteredResult(_0x53a574,_0x37afd5){return function(_0x41484f){if(_0x41484f){var _0x47cc07=typeof _0x37afd5[_0xa478('0x20')]===_0xa478('0x21')&&typeof _0x37afd5[_0xa478('0x22')]===_0xa478('0x21');var _0x3d84c5=_0x41484f[_0xa478('0x23')];var _0x14d334=_0x47cc07?0x0:_0x37afd5[_0xa478('0x20')];var _0x218c87=_0x47cc07?_0x41484f['count']:_0x37afd5[_0xa478('0x20')]+_0x37afd5['limit'];var _0xae92a1;if(_0x218c87>=_0x3d84c5){_0x218c87=_0x3d84c5;_0xae92a1=0xc8;}else{_0xae92a1=0xce;}_0x53a574[_0xa478('0x1d')](_0xae92a1);return _0x53a574[_0xa478('0x24')](_0xa478('0x25'),_0x14d334+'-'+_0x218c87+'/'+_0x3d84c5)['json'](_0x41484f);}return null;};}function patchUpdates(_0x2dae0e){return function(_0x101513){try{jsonpatch['apply'](_0x101513,_0x2dae0e,!![]);}catch(_0x3d2a99){return BPromise[_0xa478('0x26')](_0x3d2a99);}return _0x101513[_0xa478('0x27')]();};}function saveUpdates(_0x1b4362,_0x55ae2b){return function(_0x2486b6){if(_0x2486b6){return _0x2486b6[_0xa478('0x28')](_0x1b4362)[_0xa478('0x29')](function(_0x4af98f){return _0x4af98f;});}return null;};}function removeEntity(_0x2f4544,_0xe0ae36){return function(_0x2c80b8){if(_0x2c80b8){return _0x2c80b8[_0xa478('0x2a')]()['then'](function(){_0x2f4544[_0xa478('0x1d')](0xcc)[_0xa478('0x1e')]();});}};}function handleEntityNotFound(_0x397120,_0x22b961){return function(_0x3d926b){if(!_0x3d926b){_0x397120[_0xa478('0x1c')](0x194);}return _0x3d926b;};}function handleError(_0x44774d,_0x3eb379){_0x3eb379=_0x3eb379||0x1f4;return function(_0x13c1b8){logger[_0xa478('0x2b')](_0x13c1b8[_0xa478('0x2c')]);if(_0x13c1b8[_0xa478('0x2d')]){delete _0x13c1b8[_0xa478('0x2d')];}_0x44774d[_0xa478('0x1d')](_0x3eb379)[_0xa478('0x2e')](_0x13c1b8);};}exports[_0xa478('0x2f')]=function(_0x1bf5d4,_0x4ef557){var _0xbac4b7={},_0x520586={},_0x5cded2={'count':0x0,'rows':[]};var _0x1cdb56=_[_0xa478('0x30')](db['ZohoAccount'][_0xa478('0x31')],function(_0x462983){return{'name':_0x462983[_0xa478('0x32')],'type':_0x462983[_0xa478('0x33')][_0xa478('0x34')]};});_0x520586['model']=_[_0xa478('0x30')](_0x1cdb56,_0xa478('0x2d'));_0x520586[_0xa478('0x35')]=_['keys'](_0x1bf5d4[_0xa478('0x35')]);_0x520586[_0xa478('0x36')]=_[_0xa478('0x37')](_0x520586[_0xa478('0x38')],_0x520586[_0xa478('0x35')]);_0xbac4b7[_0xa478('0x39')]=_['intersection'](_0x520586[_0xa478('0x38')],qs['fields'](_0x1bf5d4[_0xa478('0x35')]['fields']));_0xbac4b7[_0xa478('0x39')]=_0xbac4b7[_0xa478('0x39')]['length']?_0xbac4b7['attributes']:_0x520586['model'];if(!_0x1bf5d4['query'][_0xa478('0x3a')](_0xa478('0x3b'))){_0xbac4b7[_0xa478('0x22')]=qs[_0xa478('0x22')](_0x1bf5d4['query']['limit']);_0xbac4b7[_0xa478('0x20')]=qs[_0xa478('0x20')](_0x1bf5d4[_0xa478('0x35')][_0xa478('0x20')]);}_0xbac4b7[_0xa478('0x3c')]=qs[_0xa478('0x3d')](_0x1bf5d4['query'][_0xa478('0x3d')]);_0xbac4b7[_0xa478('0x3e')]=qs[_0xa478('0x36')](_[_0xa478('0x3f')](_0x1bf5d4[_0xa478('0x35')],_0x520586['filters']),_0x1cdb56);if(_0x1bf5d4[_0xa478('0x35')][_0xa478('0x40')]){_0xbac4b7['where']=_[_0xa478('0x41')](_0xbac4b7[_0xa478('0x3e')],{'$or':_[_0xa478('0x30')](_0x1cdb56,function(_0x51263f){if(_0x51263f[_0xa478('0x33')]!==_0xa478('0x42')){var _0x19f865={};_0x19f865[_0x51263f['name']]={'$like':'%'+_0x1bf5d4['query']['filter']+'%'};return _0x19f865;}})});}_0xbac4b7=_[_0xa478('0x41')]({},_0xbac4b7,_0x1bf5d4[_0xa478('0x43')]);var _0x379c0b={'where':_0xbac4b7['where']};return db[_0xa478('0x44')]['count'](_0x379c0b)[_0xa478('0x29')](function(_0x203c21){_0x5cded2['count']=_0x203c21;if(_0x1bf5d4['query'][_0xa478('0x45')]){_0xbac4b7[_0xa478('0x46')]=[{'all':!![]}];}return db['ZohoAccount'][_0xa478('0x47')](_0xbac4b7);})['then'](function(_0x27c359){_0x5cded2[_0xa478('0x48')]=_0x27c359;return _0x5cded2;})['then'](respondWithFilteredResult(_0x4ef557,_0xbac4b7))[_0xa478('0x49')](handleError(_0x4ef557,null));};exports[_0xa478('0x4a')]=function(_0x33bc65,_0x5e0022){var _0x17badd={'raw':![],'where':{'id':_0x33bc65[_0xa478('0x4b')]['id']}},_0x52cd0c={};_0x52cd0c[_0xa478('0x38')]=_[_0xa478('0x4c')](db[_0xa478('0x44')][_0xa478('0x31')]);_0x52cd0c[_0xa478('0x35')]=_[_0xa478('0x4c')](_0x33bc65[_0xa478('0x35')]);_0x52cd0c[_0xa478('0x36')]=_[_0xa478('0x37')](_0x52cd0c[_0xa478('0x38')],_0x52cd0c[_0xa478('0x35')]);_0x17badd['attributes']=_[_0xa478('0x37')](_0x52cd0c[_0xa478('0x38')],qs[_0xa478('0x4d')](_0x33bc65[_0xa478('0x35')][_0xa478('0x4d')]));_0x17badd[_0xa478('0x39')]=_0x17badd['attributes'][_0xa478('0x4e')]?_0x17badd[_0xa478('0x39')]:_0x52cd0c[_0xa478('0x38')];if(_0x33bc65['query'][_0xa478('0x45')]){_0x17badd['include']=[{'all':!![]}];}_0x17badd=_['merge']({},_0x17badd,_0x33bc65['options']);return db[_0xa478('0x44')][_0xa478('0x4f')](_0x17badd)['then'](handleEntityNotFound(_0x5e0022,null))[_0xa478('0x29')](respondWithResult(_0x5e0022,null))[_0xa478('0x49')](handleError(_0x5e0022,null));};exports[_0xa478('0x50')]=function(_0x998220,_0x17b67e){return db[_0xa478('0x44')][_0xa478('0x50')](_0x998220[_0xa478('0x51')],{})['then'](respondWithResult(_0x17b67e,0xc9))[_0xa478('0x49')](handleError(_0x17b67e,null));};exports[_0xa478('0x28')]=function(_0x424fc9,_0x29dc38){if(_0x424fc9[_0xa478('0x51')]['id']){delete _0x424fc9[_0xa478('0x51')]['id'];}return db[_0xa478('0x44')][_0xa478('0x4f')]({'where':{'id':_0x424fc9[_0xa478('0x4b')]['id']}})['then'](handleEntityNotFound(_0x29dc38,null))[_0xa478('0x29')](saveUpdates(_0x424fc9['body'],null))[_0xa478('0x29')](respondWithResult(_0x29dc38,null))[_0xa478('0x49')](handleError(_0x29dc38,null));};exports['destroy']=function(_0x530bd3,_0x3d1b93){return db['ZohoAccount'][_0xa478('0x4f')]({'where':{'id':_0x530bd3['params']['id']}})[_0xa478('0x29')](handleEntityNotFound(_0x3d1b93,null))[_0xa478('0x29')](removeEntity(_0x3d1b93,null))[_0xa478('0x49')](handleError(_0x3d1b93,null));};exports[_0xa478('0x52')]=function(_0xe17fa,_0xeb25af,_0x4ce381){var _0x4da887={};var _0x51834e={};var _0x100a97;var _0x5954eb;return db[_0xa478('0x44')][_0xa478('0x53')]({'where':{'id':_0xe17fa[_0xa478('0x4b')]['id']}})[_0xa478('0x29')](handleEntityNotFound(_0xeb25af,null))[_0xa478('0x29')](function(_0x1ef5a9){if(_0x1ef5a9){_0x100a97=_0x1ef5a9;_0x51834e[_0xa478('0x38')]=_[_0xa478('0x4c')](db[_0xa478('0x54')][_0xa478('0x31')]);_0x51834e['query']=_[_0xa478('0x4c')](_0xe17fa['query']);_0x51834e['filters']=_[_0xa478('0x37')](_0x51834e[_0xa478('0x38')],_0x51834e[_0xa478('0x35')]);_0x4da887['attributes']=_[_0xa478('0x37')](_0x51834e[_0xa478('0x38')],qs['fields'](_0xe17fa[_0xa478('0x35')][_0xa478('0x4d')]));_0x4da887[_0xa478('0x39')]=_0x4da887[_0xa478('0x39')][_0xa478('0x4e')]?_0x4da887[_0xa478('0x39')]:_0x51834e[_0xa478('0x38')];_0x4da887['order']=qs['sort'](_0xe17fa['query'][_0xa478('0x3d')]);_0x4da887[_0xa478('0x3e')]=qs[_0xa478('0x36')](_[_0xa478('0x3f')](_0xe17fa['query'],_0x51834e[_0xa478('0x36')]));if(_0xe17fa['query'][_0xa478('0x40')]){_0x4da887[_0xa478('0x3e')]=_['merge'](_0x4da887[_0xa478('0x3e')],{'$or':_[_0xa478('0x30')](_0x4da887[_0xa478('0x39')],function(_0xd05ec5){var _0x2e221b={};_0x2e221b[_0xd05ec5]={'$like':'%'+_0xe17fa[_0xa478('0x35')][_0xa478('0x40')]+'%'};return _0x2e221b;})});}_0x4da887=_[_0xa478('0x41')]({},_0x4da887,_0xe17fa[_0xa478('0x43')]);return _0x100a97[_0xa478('0x52')](_0x4da887);}})[_0xa478('0x29')](function(_0x153228){if(_0x153228){_0x5954eb=_0x153228[_0xa478('0x4e')];if(!_0xe17fa[_0xa478('0x35')][_0xa478('0x3a')](_0xa478('0x3b'))){_0x4da887[_0xa478('0x22')]=qs[_0xa478('0x22')](_0xe17fa[_0xa478('0x35')]['limit']);_0x4da887[_0xa478('0x20')]=qs[_0xa478('0x20')](_0xe17fa[_0xa478('0x35')][_0xa478('0x20')]);}return _0x100a97[_0xa478('0x52')](_0x4da887);}})[_0xa478('0x29')](function(_0x32e693){if(_0x32e693){return _0x32e693?{'count':_0x5954eb,'rows':_0x32e693}:null;}})['then'](respondWithResult(_0xeb25af,null))[_0xa478('0x49')](handleError(_0xeb25af,null));};exports[_0xa478('0x55')]=function(_0x3ea868,_0x34ded2,_0x7a1c05){if(_0x3ea868[_0xa478('0x51')]['id']){delete _0x3ea868[_0xa478('0x51')]['id'];}return db[_0xa478('0x44')][_0xa478('0x53')]({'where':{'id':_0x3ea868[_0xa478('0x4b')]['id']}})[_0xa478('0x29')](handleEntityNotFound(_0x34ded2,null))[_0xa478('0x29')](function(_0x8b3d56){if(_0x8b3d56){_0x3ea868[_0xa478('0x51')][_0xa478('0x56')]=_0x8b3d56['id'];_0x3ea868[_0xa478('0x51')][_0xa478('0x57')]=integrations[_0xa478('0x58')](_0x3ea868['body'][_0xa478('0x59')],_0x3ea868['body'][_0xa478('0x33')]);_0x3ea868[_0xa478('0x51')]['Descriptions']=integrations[_0xa478('0x5a')](_0x3ea868[_0xa478('0x51')]['channel'],_0x3ea868[_0xa478('0x51')][_0xa478('0x33')]);return db[_0xa478('0x54')][_0xa478('0x50')](_0x3ea868[_0xa478('0x51')],{'include':[{'model':db[_0xa478('0x5b')],'as':_0xa478('0x57')},{'model':db[_0xa478('0x5b')],'as':_0xa478('0x5c')}]});}return null;})['then'](respondWithResult(_0x34ded2,null))['catch'](handleError(_0x34ded2,null));};function getAccessToken(_0xb68b63){return new Promise(function(_0x4ba12d,_0x1a4506){var _0x4eebeb;switch(_0xb68b63[_0xa478('0x5d')]){case'US':_0x4eebeb=_0xa478('0x5e');break;case'AU':_0x4eebeb=_0xa478('0x5f');break;case'EU':_0x4eebeb=_0xa478('0x60');break;case'IN':_0x4eebeb=_0xa478('0x61');break;case'CN':_0x4eebeb=_0xa478('0x62');break;default:_0x4eebeb=_0xa478('0x60');break;}var _0xd7dcd0={'method':'POST','uri':_0x4eebeb+_0xa478('0x63'),'qs':{'refresh_token':_0xb68b63[_0xa478('0x64')],'client_id':_0xb68b63[_0xa478('0x65')],'client_secret':_0xb68b63[_0xa478('0x66')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xd7dcd0)[_0xa478('0x29')](function(_0x2b96b9){if(_0x2b96b9['access_token']){_0x4ba12d(_0x2b96b9[_0xa478('0x67')]);}else{_0x1a4506(_0xa478('0x68'));}})[_0xa478('0x49')](function(_0x401f95){_0x1a4506(_0x401f95);});});}exports[_0xa478('0x69')]=function(_0x50b6f3,_0xddfa52,_0x48228f){var _0x5197b2,_0x1647a9,_0x4f9bed,_0x114f22,_0x1d447b;return db[_0xa478('0x44')][_0xa478('0x53')]({'where':{'id':_0x50b6f3[_0xa478('0x4b')]['id']},'attributes':['id',_0xa478('0x6a'),_0xa478('0x5d'),_0xa478('0x65'),_0xa478('0x66'),_0xa478('0x6b'),'code',_0xa478('0x64')]})[_0xa478('0x29')](handleEntityNotFound(_0xddfa52,null))['then'](function(_0x2737b9){_0x1d447b=_0x2737b9;_0x5197b2=_0x1d447b['host'];_0x1647a9=_0x5197b2===_0xa478('0x6c')?'eu':'com';_0x4f9bed=_0x1d447b[_0xa478('0x6b')];var _0x402476=_0x4f9bed['slice'](-0x1);if(_0x402476==='/'||_0x402476==='\x5c'||_0x402476===':'){_0x4f9bed=_0x4f9bed['substring'](0x0,_0x4f9bed['lastIndexOf'](_0x402476));}if(!_0x1d447b['refreshToken']){throw new Error(_0xa478('0x6d'));}return getAccessToken(_0x1d447b);})['then'](function(_0x33d80b){if(_0x33d80b){return rp({'method':_0xa478('0x6e'),'uri':util[_0xa478('0x6f')](_0xa478('0x70'),_0x1647a9),'qs':{'module':_0xa478('0x71')},'headers':{'Authorization':_0xa478('0x72')+_0x33d80b},'json':!![]});}})[_0xa478('0x29')](function(_0xe1173c){if(_0xe1173c){if(_0xe1173c['response']&&_0xe1173c[_0xa478('0x73')][_0xa478('0x2b')]){throw new Error(_0xe1173c[_0xa478('0x73')][_0xa478('0x2b')][_0xa478('0x74')]);}var _0x6d021b=[];var _0x48fb15=[];var _0x5751b4=['Owner',_0xa478('0x75'),'Description',_0xa478('0x76'),_0xa478('0x77'),'Call_Result',_0xa478('0x78'),_0xa478('0x79')];_0x48fb15=_[_0xa478('0x7a')](_0xe1173c[_0xa478('0x4d')],function(_0x2256ff){return _0x5751b4[_0xa478('0x7b')](_0x2256ff[_0xa478('0x7c')]);});for(var _0x31793d=0x0;_0x31793d<_0x48fb15['length'];_0x31793d++){if(_0x48fb15[_0x31793d][_0xa478('0x7d')]===![]){_0x6d021b[_0xa478('0x7e')]({'id':_0x48fb15[_0x31793d]['id'],'name':_0x48fb15[_0x31793d][_0xa478('0x7f')],'custom':_0x48fb15[_0x31793d][_0xa478('0x80')],'options':_0x48fb15[_0x31793d][_0xa478('0x81')]==='picklist'&&_0x48fb15[_0x31793d][_0xa478('0x82')][_0xa478('0x4e')]>-0x1?_[_0xa478('0x30')](_0x48fb15[_0x31793d][_0xa478('0x82')],function(_0x4c5ce4){return{'name':_0x4c5ce4,'value':_0x4c5ce4};}):[]});}}return{'count':_0x6d021b[_0xa478('0x4e')],'rows':_0x6d021b};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0xddfa52,null))['catch'](function(_0x1ca42d){var _0x228cce=_0x50b6f3['query'][_0xa478('0x83')]?0x1f4:_0x1ca42d['statusCode']||0x1f4;logger[_0xa478('0x2b')](_0xa478('0x84'),'getFields',_0x228cce,JSON['stringify'](_0x1ca42d));delete _0x1ca42d['name'];if(_0x228cce===0x191){_0x228cce=0x190;}_0xddfa52['status'](_0x228cce)[_0xa478('0x2e')](_0x50b6f3['query'][_0xa478('0x83')]?{'message':_0xa478('0x85'),'statusCode':_0x1ca42d[_0xa478('0x86')]}:_0x1ca42d);});};
\ No newline at end of file
index d62ba62..35e9bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5450=['rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','slice','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','then','refresh_token','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch','inspect','substring','application/x-www-form-urlencoded','parse','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3e38d8,_0x470860){var _0x33e5ac=function(_0x25fd68){while(--_0x25fd68){_0x3e38d8['push'](_0x3e38d8['shift']());}};_0x33e5ac(++_0x470860);}(_0x5450,0xf5));var _0x0545=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x5450[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0x0545('0x0'));var util=require('util');var logger=require(_0x0545('0x1'))(_0x0545('0x2'));var moment=require(_0x0545('0x3'));var BPromise=require(_0x0545('0x4'));var rp=require(_0x0545('0x5'));var fs=require('fs');var path=require(_0x0545('0x6'));var rimraf=require(_0x0545('0x7'));var config=require('../../config/environment');var attributes=require(_0x0545('0x8'));var integrations=require(_0x0545('0x9'));module['exports']=function(_0x4588b8,_0xcc1109){return _0x4588b8[_0x0545('0xa')](_0x0545('0xb'),attributes,{'tableName':_0x0545('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x445f85,_0xd01d53,_0x592380){if(_0x445f85[_0x0545('0xd')](_0x0545('0xe'))||_0x445f85[_0x0545('0xd')](_0x0545('0xf'))||_0x445f85[_0x0545('0xd')](_0x0545('0x10'))||_0x445f85[_0x0545('0xd')](_0x0545('0x11'))||_0x445f85[_0x0545('0xd')](_0x0545('0x12'))||_0x445f85[_0x0545('0xd')](_0x0545('0x13'))){var _0x199ab4,_0x2842d0;_0x199ab4=_0x445f85[_0x0545('0xf')];var _0x5b3997=_0x199ab4[_0x0545('0x14')](-0x1);if(_0x5b3997==='/'||_0x5b3997==='\x5c'||_0x5b3997===':'){_0x199ab4=_0x199ab4['substring'](0x0,_0x199ab4[_0x0545('0x15')](_0x5b3997));}switch(_0x445f85[_0x0545('0xe')]){case'US':_0x2842d0=_0x0545('0x16');break;case'AU':_0x2842d0=_0x0545('0x17');break;case'IN':_0x2842d0=_0x0545('0x18');break;case'CN':_0x2842d0=_0x0545('0x19');break;default:_0x2842d0=_0x0545('0x1a');break;}var _0x12bb2b={'method':'POST','uri':_0x2842d0+_0x0545('0x1b'),'form':{'grant_type':_0x0545('0x1c'),'client_id':_0x445f85['clientId'],'client_secret':_0x445f85[_0x0545('0x11')],'redirect_uri':_0x445f85[_0x0545('0xf')],'code':_0x445f85[_0x0545('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x12bb2b)[_0x0545('0x1d')](function(_0x1e29ed){var _0x21ebda=JSON['parse'](_0x1e29ed);if(_0x21ebda['refresh_token']){_0x445f85['refreshToken']=_0x21ebda[_0x0545('0x1e')];logger[_0x0545('0x1f')](util[_0x0545('0x20')](_0x0545('0x21'),_0x445f85[_0x0545('0x22')],_0x445f85['id']));}else{logger[_0x0545('0x23')](util[_0x0545('0x20')](_0x0545('0x24'),_0x445f85[_0x0545('0x22')],_0x445f85['id']),util['inspect'](_0x21ebda,{'showHidden':![],'depth':null}));}return _0x592380(null,_0xd01d53);})[_0x0545('0x25')](function(_0x5f2fb6){logger[_0x0545('0x23')](util[_0x0545('0x20')](_0x0545('0x24'),_0x445f85[_0x0545('0x22')],_0x445f85['id']),util[_0x0545('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x592380(_0x5f2fb6);});}else{return _0x592380(null,_0xd01d53);}},'beforeUpdate':function(_0x550beb,_0x58df31,_0x30317d){if(_0x550beb[_0x0545('0xd')](_0x0545('0xe'))||_0x550beb[_0x0545('0xd')]('serverUrl')||_0x550beb[_0x0545('0xd')]('clientId')||_0x550beb[_0x0545('0xd')](_0x0545('0x11'))||_0x550beb[_0x0545('0xd')](_0x0545('0x12'))||_0x550beb[_0x0545('0xd')](_0x0545('0x13'))){var _0x1eb6b1,_0x2959ce;_0x1eb6b1=_0x550beb[_0x0545('0xf')];var _0x475a7c=_0x1eb6b1[_0x0545('0x14')](-0x1);if(_0x475a7c==='/'||_0x475a7c==='\x5c'||_0x475a7c===':'){_0x1eb6b1=_0x1eb6b1[_0x0545('0x27')](0x0,_0x1eb6b1['lastIndexOf'](_0x475a7c));}switch(_0x550beb[_0x0545('0xe')]){case'US':_0x2959ce=_0x0545('0x16');break;case'AU':_0x2959ce=_0x0545('0x17');break;case'IN':_0x2959ce='https://accounts.zoho.in';break;case'CN':_0x2959ce=_0x0545('0x19');break;default:_0x2959ce=_0x0545('0x1a');break;}var _0x3e33a2={'method':'POST','uri':_0x2959ce+_0x0545('0x1b'),'form':{'grant_type':'authorization_code','client_id':_0x550beb['clientId'],'client_secret':_0x550beb['clientSecret'],'redirect_uri':_0x550beb['serverUrl'],'code':_0x550beb[_0x0545('0x12')]},'headers':{'Content-Type':_0x0545('0x28')}};return rp(_0x3e33a2)['then'](function(_0x52ba32){var _0x48fbdd=JSON[_0x0545('0x29')](_0x52ba32);if(_0x48fbdd[_0x0545('0x1e')]){_0x550beb['refreshToken']=_0x48fbdd[_0x0545('0x1e')];logger[_0x0545('0x1f')](util[_0x0545('0x20')](_0x0545('0x21'),_0x550beb[_0x0545('0x22')],_0x550beb['id']));}else{logger['error'](util[_0x0545('0x20')](_0x0545('0x24'),_0x550beb[_0x0545('0x22')],_0x550beb['id']),util['inspect'](_0x48fbdd,{'showHidden':![],'depth':null}));}return _0x30317d(null,_0x58df31);})[_0x0545('0x25')](function(_0x24a8c7){logger['error'](util[_0x0545('0x20')](_0x0545('0x24'),_0x550beb[_0x0545('0x22')],_0x550beb['id']),util[_0x0545('0x26')](parsedResult,{'showHidden':![],'depth':null}));return _0x30317d(_0x24a8c7);});}else{return _0x30317d(null,_0x58df31);}}}});};
\ No newline at end of file
+var _0x4038=['https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch','substring','lastIndexOf','https://accounts.zoho.com.cn','application/x-www-form-urlencoded','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','slice','https://accounts.zoho.com','https://accounts.zoho.com.au'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x4038,0xb8));var _0x8403=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x4038[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8403('0x0'))('api');var moment=require(_0x8403('0x1'));var BPromise=require(_0x8403('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8403('0x3'));var rimraf=require(_0x8403('0x4'));var config=require(_0x8403('0x5'));var attributes=require(_0x8403('0x6'));var integrations=require(_0x8403('0x7'));module[_0x8403('0x8')]=function(_0x4155e1,_0x1b4915){return _0x4155e1[_0x8403('0x9')]('ZohoAccount',attributes,{'tableName':_0x8403('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x218983,_0x10fce3,_0x4c6b42){if(_0x218983[_0x8403('0xb')](_0x8403('0xc'))||_0x218983['changed'](_0x8403('0xd'))||_0x218983['changed'](_0x8403('0xe'))||_0x218983[_0x8403('0xb')](_0x8403('0xf'))||_0x218983[_0x8403('0xb')](_0x8403('0x10'))||_0x218983[_0x8403('0xb')](_0x8403('0x11'))){var _0x3b53f1,_0x224bc9;_0x3b53f1=_0x218983[_0x8403('0xd')];var _0x5adb72=_0x3b53f1[_0x8403('0x12')](-0x1);if(_0x5adb72==='/'||_0x5adb72==='\x5c'||_0x5adb72===':'){_0x3b53f1=_0x3b53f1['substring'](0x0,_0x3b53f1['lastIndexOf'](_0x5adb72));}switch(_0x218983[_0x8403('0xc')]){case'US':_0x224bc9=_0x8403('0x13');break;case'AU':_0x224bc9=_0x8403('0x14');break;case'IN':_0x224bc9=_0x8403('0x15');break;case'CN':_0x224bc9='https://accounts.zoho.com.cn';break;default:_0x224bc9=_0x8403('0x16');break;}var _0x16b157={'method':_0x8403('0x17'),'uri':_0x224bc9+_0x8403('0x18'),'form':{'grant_type':_0x8403('0x19'),'client_id':_0x218983['clientId'],'client_secret':_0x218983[_0x8403('0xf')],'redirect_uri':_0x218983[_0x8403('0xd')],'code':_0x218983[_0x8403('0x10')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x16b157)[_0x8403('0x1a')](function(_0x1ccd27){var _0xa7a506=JSON[_0x8403('0x1b')](_0x1ccd27);if(_0xa7a506[_0x8403('0x1c')]){_0x218983[_0x8403('0x1d')]=_0xa7a506[_0x8403('0x1c')];logger[_0x8403('0x1e')](util[_0x8403('0x1f')](_0x8403('0x20'),_0x218983[_0x8403('0x21')],_0x218983['id']));}else{logger[_0x8403('0x22')](util[_0x8403('0x1f')](_0x8403('0x23'),_0x218983[_0x8403('0x21')],_0x218983['id']),util['inspect'](_0xa7a506,{'showHidden':![],'depth':null}));}return _0x4c6b42(null,_0x10fce3);})[_0x8403('0x24')](function(_0x728770){logger[_0x8403('0x22')](util['format'](_0x8403('0x23'),_0x218983[_0x8403('0x21')],_0x218983['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x4c6b42(_0x728770);});}else{return _0x4c6b42(null,_0x10fce3);}},'beforeUpdate':function(_0x5b5ebf,_0x44c778,_0x285a8b){if(_0x5b5ebf['changed']('zone')||_0x5b5ebf['changed'](_0x8403('0xd'))||_0x5b5ebf[_0x8403('0xb')](_0x8403('0xe'))||_0x5b5ebf['changed'](_0x8403('0xf'))||_0x5b5ebf[_0x8403('0xb')](_0x8403('0x10'))||_0x5b5ebf[_0x8403('0xb')](_0x8403('0x11'))){var _0x55f2b9,_0xa4ba14;_0x55f2b9=_0x5b5ebf[_0x8403('0xd')];var _0x4dbb80=_0x55f2b9[_0x8403('0x12')](-0x1);if(_0x4dbb80==='/'||_0x4dbb80==='\x5c'||_0x4dbb80===':'){_0x55f2b9=_0x55f2b9[_0x8403('0x25')](0x0,_0x55f2b9[_0x8403('0x26')](_0x4dbb80));}switch(_0x5b5ebf[_0x8403('0xc')]){case'US':_0xa4ba14=_0x8403('0x13');break;case'AU':_0xa4ba14=_0x8403('0x14');break;case'IN':_0xa4ba14='https://accounts.zoho.in';break;case'CN':_0xa4ba14=_0x8403('0x27');break;default:_0xa4ba14=_0x8403('0x16');break;}var _0x476e7d={'method':_0x8403('0x17'),'uri':_0xa4ba14+_0x8403('0x18'),'form':{'grant_type':'authorization_code','client_id':_0x5b5ebf[_0x8403('0xe')],'client_secret':_0x5b5ebf[_0x8403('0xf')],'redirect_uri':_0x5b5ebf[_0x8403('0xd')],'code':_0x5b5ebf['code']},'headers':{'Content-Type':_0x8403('0x28')}};return rp(_0x476e7d)[_0x8403('0x1a')](function(_0x1b3d45){var _0x2c5b89=JSON[_0x8403('0x1b')](_0x1b3d45);if(_0x2c5b89[_0x8403('0x1c')]){_0x5b5ebf[_0x8403('0x1d')]=_0x2c5b89[_0x8403('0x1c')];logger[_0x8403('0x1e')](util[_0x8403('0x1f')](_0x8403('0x20'),_0x5b5ebf[_0x8403('0x21')],_0x5b5ebf['id']));}else{logger[_0x8403('0x22')](util[_0x8403('0x1f')](_0x8403('0x23'),_0x5b5ebf[_0x8403('0x21')],_0x5b5ebf['id']),util['inspect'](_0x2c5b89,{'showHidden':![],'depth':null}));}return _0x285a8b(null,_0x44c778);})[_0x8403('0x24')](function(_0x5760fc){logger[_0x8403('0x22')](util['format'](_0x8403('0x23'),_0x5b5ebf[_0x8403('0x21')],_0x5b5ebf['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x285a8b(_0x5760fc);});}else{return _0x285a8b(null,_0x44c778);}}}});};
\ No newline at end of file
index 51dae6c..6a21f60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cad=['stringify','error','code','message','info','result','catch','GetZohoAccount','findAll','options','raw','attributes','limit','map','include','model','then','find','where','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x8cad,0xfe));var _0xd8ca=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x8cad[_0x46d0c9];return _0x174506;};'use strict';var _=require(_0xd8ca('0x0'));var util=require(_0xd8ca('0x1'));var moment=require(_0xd8ca('0x2'));var BPromise=require(_0xd8ca('0x3'));var rs=require(_0xd8ca('0x4'));var fs=require('fs');var Redis=require(_0xd8ca('0x5'));var db=require(_0xd8ca('0x6'))['db'];var utils=require(_0xd8ca('0x7'));var logger=require(_0xd8ca('0x8'))(_0xd8ca('0x9'));var config=require(_0xd8ca('0xa'));var jayson=require(_0xd8ca('0xb'));var client=jayson[_0xd8ca('0xc')][_0xd8ca('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x48709f,_0x23e864,_0x125ae9){return new BPromise(function(_0x1ba551,_0x2bcb4a){return client[_0xd8ca('0xe')](_0x48709f,_0x125ae9)['then'](function(_0x461039){logger['info'](_0xd8ca('0xf'),_0x23e864,_0xd8ca('0x10'));logger[_0xd8ca('0x11')](_0xd8ca('0x12'),_0x23e864,_0xd8ca('0x10'),JSON[_0xd8ca('0x13')](_0x461039));if(_0x461039['error']){if(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x15')]===0x1f4){logger[_0xd8ca('0x14')](_0xd8ca('0xf'),_0x23e864,_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);return _0x2bcb4a(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);}logger[_0xd8ca('0x14')]('ZohoAccount,\x20%s,\x20%s',_0x23e864,_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);return _0x1ba551(_0x461039[_0xd8ca('0x14')][_0xd8ca('0x16')]);}else{logger[_0xd8ca('0x17')](_0xd8ca('0xf'),_0x23e864,_0xd8ca('0x10'));_0x1ba551(_0x461039[_0xd8ca('0x18')][_0xd8ca('0x16')]);}})[_0xd8ca('0x19')](function(_0x5c5c41){logger[_0xd8ca('0x14')](_0xd8ca('0xf'),_0x23e864,_0x5c5c41);_0x2bcb4a(_0x5c5c41);});});}exports[_0xd8ca('0x1a')]=function(_0x437ac5){var _0x4ef034=this;return new Promise(function(_0x47e368,_0x37fdc3){return db['ZohoAccount'][_0xd8ca('0x1b')]({'raw':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x1d')]===undefined?!![]:![]:!![],'where':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')]['where']||null:null,'attributes':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x1e')]||null:null,'limit':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5['options'][_0xd8ca('0x1f')]||null:null,'include':_0x437ac5[_0xd8ca('0x1c')]?_0x437ac5[_0xd8ca('0x1c')]['include']?_[_0xd8ca('0x20')](_0x437ac5[_0xd8ca('0x1c')][_0xd8ca('0x21')],function(_0xbf3254){return{'model':db[_0xbf3254[_0xd8ca('0x22')]],'as':_0xbf3254['as'],'attributes':_0xbf3254[_0xd8ca('0x1e')],'include':_0xbf3254[_0xd8ca('0x21')]?_['map'](_0xbf3254[_0xd8ca('0x21')],function(_0x3f8e42){return{'model':db[_0x3f8e42['model']],'as':_0x3f8e42['as'],'attributes':_0x3f8e42[_0xd8ca('0x1e')],'include':_0x3f8e42[_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x3f8e42[_0xd8ca('0x21')],function(_0x15a71d){return{'model':db[_0x15a71d[_0xd8ca('0x22')]],'as':_0x15a71d['as'],'attributes':_0x15a71d['attributes']};}):[]};}):[]};}):[]:[]})[_0xd8ca('0x23')](function(_0x49b14c){logger[_0xd8ca('0x17')](_0xd8ca('0x1a'),_0x437ac5);logger['debug']('GetZohoAccount',_0x437ac5,JSON[_0xd8ca('0x13')](_0x49b14c));_0x47e368(_0x49b14c);})[_0xd8ca('0x19')](function(_0x3b1098){logger[_0xd8ca('0x14')](_0xd8ca('0x1a'),_0x3b1098[_0xd8ca('0x16')],_0x437ac5);_0x37fdc3(_0x4ef034[_0xd8ca('0x14')](0x1f4,_0x3b1098[_0xd8ca('0x16')]));});});};exports['ShowZohoAccount']=function(_0x405265){var _0x33bfe0=this;return new Promise(function(_0x216c8b,_0x58bcd7){return db['ZohoAccount'][_0xd8ca('0x24')]({'raw':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x1d')]===undefined?!![]:![]:!![],'where':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x25')]||null:null,'attributes':_0x405265[_0xd8ca('0x1c')]?_0x405265['options'][_0xd8ca('0x1e')]||null:null,'include':_0x405265[_0xd8ca('0x1c')]?_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x405265[_0xd8ca('0x1c')][_0xd8ca('0x21')],function(_0x353b42){return{'model':db[_0x353b42['model']],'as':_0x353b42['as'],'attributes':_0x353b42[_0xd8ca('0x1e')],'include':_0x353b42[_0xd8ca('0x21')]?_[_0xd8ca('0x20')](_0x353b42['include'],function(_0x3fcf94){return{'model':db[_0x3fcf94[_0xd8ca('0x22')]],'as':_0x3fcf94['as'],'attributes':_0x3fcf94[_0xd8ca('0x1e')],'include':_0x3fcf94['include']?_[_0xd8ca('0x20')](_0x3fcf94['include'],function(_0x275557){return{'model':db[_0x275557['model']],'as':_0x275557['as'],'attributes':_0x275557[_0xd8ca('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd8ca('0x23')](function(_0x9e3e49){logger['info'](_0xd8ca('0x26'),_0x405265);logger[_0xd8ca('0x11')]('ShowZohoAccount',_0x405265,JSON[_0xd8ca('0x13')](_0x9e3e49));_0x216c8b(_0x9e3e49);})[_0xd8ca('0x19')](function(_0x57c573){logger[_0xd8ca('0x14')](_0xd8ca('0x26'),_0x57c573['message'],_0x405265);_0x58bcd7(_0x33bfe0[_0xd8ca('0x14')](0x1f4,_0x57c573[_0xd8ca('0x16')]));});});};
\ No newline at end of file
+var _0x4744=['../../config/environment','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','message','result','GetZohoAccount','ZohoAccount','options','raw','where','attributes','limit','include','map','model','stringify','catch','ShowZohoAccount','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x4744,0x107));var _0x4474=function(_0xae3974,_0x1801e2){_0xae3974=_0xae3974-0x0;var _0x505416=_0x4744[_0xae3974];return _0x505416;};'use strict';var _=require(_0x4474('0x0'));var util=require(_0x4474('0x1'));var moment=require('moment');var BPromise=require(_0x4474('0x2'));var rs=require(_0x4474('0x3'));var fs=require('fs');var Redis=require(_0x4474('0x4'));var db=require(_0x4474('0x5'))['db'];var utils=require(_0x4474('0x6'));var logger=require(_0x4474('0x7'))(_0x4474('0x8'));var config=require(_0x4474('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4474('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc08a4c,_0x3024cd,_0x1dcdf0){return new BPromise(function(_0x387297,_0x247b66){return client[_0x4474('0xb')](_0xc08a4c,_0x1dcdf0)['then'](function(_0x17c4f7){logger[_0x4474('0xc')](_0x4474('0xd'),_0x3024cd,_0x4474('0xe'));logger[_0x4474('0xf')](_0x4474('0x10'),_0x3024cd,_0x4474('0xe'),JSON['stringify'](_0x17c4f7));if(_0x17c4f7['error']){if(_0x17c4f7['error']['code']===0x1f4){logger[_0x4474('0x11')](_0x4474('0xd'),_0x3024cd,_0x17c4f7['error'][_0x4474('0x12')]);return _0x247b66(_0x17c4f7['error'][_0x4474('0x12')]);}logger[_0x4474('0x11')](_0x4474('0xd'),_0x3024cd,_0x17c4f7[_0x4474('0x11')][_0x4474('0x12')]);return _0x387297(_0x17c4f7[_0x4474('0x11')][_0x4474('0x12')]);}else{logger[_0x4474('0xc')](_0x4474('0xd'),_0x3024cd,'request\x20sent');_0x387297(_0x17c4f7[_0x4474('0x13')]['message']);}})['catch'](function(_0x46b79d){logger[_0x4474('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x3024cd,_0x46b79d);_0x247b66(_0x46b79d);});});}exports[_0x4474('0x14')]=function(_0x356a37){var _0x1dc845=this;return new Promise(function(_0x22ed33,_0x21debd){return db[_0x4474('0x15')]['findAll']({'raw':_0x356a37[_0x4474('0x16')]?_0x356a37['options'][_0x4474('0x17')]===undefined?!![]:![]:!![],'where':_0x356a37[_0x4474('0x16')]?_0x356a37[_0x4474('0x16')][_0x4474('0x18')]||null:null,'attributes':_0x356a37['options']?_0x356a37['options'][_0x4474('0x19')]||null:null,'limit':_0x356a37[_0x4474('0x16')]?_0x356a37['options'][_0x4474('0x1a')]||null:null,'include':_0x356a37[_0x4474('0x16')]?_0x356a37[_0x4474('0x16')][_0x4474('0x1b')]?_[_0x4474('0x1c')](_0x356a37[_0x4474('0x16')][_0x4474('0x1b')],function(_0x3009d8){return{'model':db[_0x3009d8[_0x4474('0x1d')]],'as':_0x3009d8['as'],'attributes':_0x3009d8[_0x4474('0x19')],'include':_0x3009d8[_0x4474('0x1b')]?_['map'](_0x3009d8[_0x4474('0x1b')],function(_0xd34139){return{'model':db[_0xd34139[_0x4474('0x1d')]],'as':_0xd34139['as'],'attributes':_0xd34139['attributes'],'include':_0xd34139['include']?_['map'](_0xd34139['include'],function(_0x5870aa){return{'model':db[_0x5870aa[_0x4474('0x1d')]],'as':_0x5870aa['as'],'attributes':_0x5870aa[_0x4474('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x37e58d){logger[_0x4474('0xc')](_0x4474('0x14'),_0x356a37);logger[_0x4474('0xf')](_0x4474('0x14'),_0x356a37,JSON[_0x4474('0x1e')](_0x37e58d));_0x22ed33(_0x37e58d);})[_0x4474('0x1f')](function(_0x3be419){logger[_0x4474('0x11')](_0x4474('0x14'),_0x3be419[_0x4474('0x12')],_0x356a37);_0x21debd(_0x1dc845[_0x4474('0x11')](0x1f4,_0x3be419['message']));});});};exports[_0x4474('0x20')]=function(_0x19f048){var _0x283963=this;return new Promise(function(_0x49b381,_0xc1b736){return db[_0x4474('0x15')]['find']({'raw':_0x19f048[_0x4474('0x16')]?_0x19f048[_0x4474('0x16')][_0x4474('0x17')]===undefined?!![]:![]:!![],'where':_0x19f048[_0x4474('0x16')]?_0x19f048['options'][_0x4474('0x18')]||null:null,'attributes':_0x19f048['options']?_0x19f048[_0x4474('0x16')][_0x4474('0x19')]||null:null,'include':_0x19f048['options']?_0x19f048['options']['include']?_[_0x4474('0x1c')](_0x19f048[_0x4474('0x16')][_0x4474('0x1b')],function(_0x15a96d){return{'model':db[_0x15a96d[_0x4474('0x1d')]],'as':_0x15a96d['as'],'attributes':_0x15a96d[_0x4474('0x19')],'include':_0x15a96d[_0x4474('0x1b')]?_[_0x4474('0x1c')](_0x15a96d[_0x4474('0x1b')],function(_0x5e650e){return{'model':db[_0x5e650e['model']],'as':_0x5e650e['as'],'attributes':_0x5e650e['attributes'],'include':_0x5e650e[_0x4474('0x1b')]?_[_0x4474('0x1c')](_0x5e650e[_0x4474('0x1b')],function(_0xbe64b3){return{'model':db[_0xbe64b3[_0x4474('0x1d')]],'as':_0xbe64b3['as'],'attributes':_0xbe64b3[_0x4474('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4474('0x21')](function(_0x2d7fbd){logger['info']('ShowZohoAccount',_0x19f048);logger[_0x4474('0xf')](_0x4474('0x20'),_0x19f048,JSON['stringify'](_0x2d7fbd));_0x49b381(_0x2d7fbd);})[_0x4474('0x1f')](function(_0x48c1e0){logger[_0x4474('0x11')]('ShowZohoAccount',_0x48c1e0[_0x4474('0x12')],_0x19f048);_0xc1b736(_0x283963[_0x4474('0x11')](0x1f4,_0x48c1e0[_0x4474('0x12')]));});});};
\ No newline at end of file
index 375adb0..ab234f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4d3=['getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoConfiguration.controller','isAuthenticated','get','/:id','show','/:id/fields','getFields','/:id/subjects'];(function(_0x21c6b8,_0x16d6f6){var _0x39d474=function(_0x27dbf5){while(--_0x27dbf5){_0x21c6b8['push'](_0x21c6b8['shift']());}};_0x39d474(++_0x16d6f6);}(_0xa4d3,0x1bd));var _0x3a4d=function(_0x167aa2,_0x402b14){_0x167aa2=_0x167aa2-0x0;var _0xc92931=_0xa4d3[_0x167aa2];return _0xc92931;};'use strict';var multer=require(_0x3a4d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3a4d('0x1'));var express=require(_0x3a4d('0x2'));var router=express[_0x3a4d('0x3')]();var fs_extra=require(_0x3a4d('0x4'));var auth=require(_0x3a4d('0x5'));var interaction=require(_0x3a4d('0x6'));var config=require('../../config/environment');var controller=require(_0x3a4d('0x7'));router['get']('/',auth[_0x3a4d('0x8')](),controller['index']);router[_0x3a4d('0x9')](_0x3a4d('0xa'),auth['isAuthenticated'](),controller[_0x3a4d('0xb')]);router[_0x3a4d('0x9')](_0x3a4d('0xc'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0xd')]);router[_0x3a4d('0x9')](_0x3a4d('0xe'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0xf')]);router[_0x3a4d('0x9')](_0x3a4d('0x10'),auth[_0x3a4d('0x8')](),controller[_0x3a4d('0x11')]);router[_0x3a4d('0x12')]('/',auth[_0x3a4d('0x8')](),controller['create']);router[_0x3a4d('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x3a4d('0x14')]);router[_0x3a4d('0x15')](_0x3a4d('0xa'),auth[_0x3a4d('0x8')](),controller['destroy']);module[_0x3a4d('0x16')]=router;
\ No newline at end of file
+var _0xbf8c=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','/:id'];(function(_0x1d5c3a,_0x36973c){var _0x56df88=function(_0x59aec9){while(--_0x59aec9){_0x1d5c3a['push'](_0x1d5c3a['shift']());}};_0x56df88(++_0x36973c);}(_0xbf8c,0x188));var _0xcbf8=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xbf8c[_0x2160a9];return _0xa88cf7;};'use strict';var multer=require('multer');var util=require(_0xcbf8('0x0'));var path=require(_0xcbf8('0x1'));var timeout=require(_0xcbf8('0x2'));var express=require(_0xcbf8('0x3'));var router=express[_0xcbf8('0x4')]();var fs_extra=require(_0xcbf8('0x5'));var auth=require(_0xcbf8('0x6'));var interaction=require(_0xcbf8('0x7'));var config=require(_0xcbf8('0x8'));var controller=require(_0xcbf8('0x9'));router[_0xcbf8('0xa')]('/',auth[_0xcbf8('0xb')](),controller[_0xcbf8('0xc')]);router[_0xcbf8('0xa')]('/:id',auth[_0xcbf8('0xb')](),controller[_0xcbf8('0xd')]);router[_0xcbf8('0xa')](_0xcbf8('0xe'),auth[_0xcbf8('0xb')](),controller[_0xcbf8('0xf')]);router['get'](_0xcbf8('0x10'),auth[_0xcbf8('0xb')](),controller[_0xcbf8('0x11')]);router[_0xcbf8('0xa')](_0xcbf8('0x12'),auth['isAuthenticated'](),controller[_0xcbf8('0x13')]);router['post']('/',auth[_0xcbf8('0xb')](),controller['create']);router[_0xcbf8('0x14')]('/:id',auth[_0xcbf8('0xb')](),controller['update']);router['delete'](_0xcbf8('0x15'),auth[_0xcbf8('0xb')](),controller['destroy']);module[_0xcbf8('0x16')]=router;
\ No newline at end of file
index c89dd18..36844eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb143=['lead','sequelize','STRING','ENUM','contact','contact_lead'];(function(_0x251202,_0x2b55da){var _0x1043c0=function(_0x23f401){while(--_0x23f401){_0x251202['push'](_0x251202['shift']());}};_0x1043c0(++_0x2b55da);}(_0xb143,0x1c3));var _0x3b14=function(_0x632270,_0x24cba0){_0x632270=_0x632270-0x0;var _0x395fc5=_0xb143[_0x632270];return _0x395fc5;};'use strict';var Sequelize=require(_0x3b14('0x0'));module['exports']={'name':{'type':Sequelize[_0x3b14('0x1')]},'moduleCreate':{'type':Sequelize[_0x3b14('0x2')]('lead',_0x3b14('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x3b14('0x2')](_0x3b14('0x4'),_0x3b14('0x3'),_0x3b14('0x5')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x3b14('0x1')]}};
\ No newline at end of file
+var _0xc142=['nothing','sequelize','STRING','ENUM','lead','contact'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc142,0xb5));var _0x2c14=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xc142[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x2c14('0x0'));module['exports']={'name':{'type':Sequelize[_0x2c14('0x1')]},'moduleCreate':{'type':Sequelize[_0x2c14('0x2')](_0x2c14('0x3'),_0x2c14('0x4'),_0x2c14('0x5')),'defaultValue':_0x2c14('0x3')},'moduleSearch':{'type':Sequelize[_0x2c14('0x2')]('contact_lead',_0x2c14('0x4'),_0x2c14('0x3')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x2c14('0x1')]}};
\ No newline at end of file
index badb62d..2b85311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ac=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','stack','name','send','ZohoConfiguration','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','fields','length','create','body','params','getFields','findOne','ZohoField','pick','getSubjects','getDescriptions','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/qs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb9ac,0x1d7));var _0xcb9a=function(_0x7ed4c7,_0x114694){_0x7ed4c7=_0x7ed4c7-0x0;var _0x27e894=_0xb9ac[_0x7ed4c7];return _0x27e894;};'use strict';var emlformat=require(_0xcb9a('0x0'));var rimraf=require(_0xcb9a('0x1'));var zipdir=require(_0xcb9a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcb9a('0x3'));var BPromise=require(_0xcb9a('0x4'));var Mustache=require('mustache');var util=require(_0xcb9a('0x5'));var path=require(_0xcb9a('0x6'));var sox=require(_0xcb9a('0x7'));var csv=require(_0xcb9a('0x8'));var ejs=require(_0xcb9a('0x9'));var fs=require('fs');var fs_extra=require(_0xcb9a('0xa'));var _=require(_0xcb9a('0xb'));var squel=require(_0xcb9a('0xc'));var crypto=require(_0xcb9a('0xd'));var jsforce=require(_0xcb9a('0xe'));var deskjs=require(_0xcb9a('0xf'));var toCsv=require(_0xcb9a('0x8'));var querystring=require(_0xcb9a('0x10'));var Papa=require(_0xcb9a('0x11'));var Redis=require(_0xcb9a('0x12'));var authService=require(_0xcb9a('0x13'));var qs=require(_0xcb9a('0x14'));var as=require(_0xcb9a('0x15'));var hardwareService=require(_0xcb9a('0x16'));var logger=require('../../config/logger')(_0xcb9a('0x17'));var utils=require(_0xcb9a('0x18'));var config=require(_0xcb9a('0x19'));var licenseUtil=require(_0xcb9a('0x1a'));var db=require(_0xcb9a('0x1b'))['db'];function respondWithStatusCode(_0x5437f1,_0xdabfe6){_0xdabfe6=_0xdabfe6||0xcc;return function(_0x164fd0){if(_0x164fd0){return _0x5437f1[_0xcb9a('0x1c')](_0xdabfe6);}return _0x5437f1['status'](_0xdabfe6)[_0xcb9a('0x1d')]();};}function respondWithResult(_0x343cc9,_0x3653e8){_0x3653e8=_0x3653e8||0xc8;return function(_0x56ddb8){if(_0x56ddb8){return _0x343cc9[_0xcb9a('0x1e')](_0x3653e8)[_0xcb9a('0x1f')](_0x56ddb8);}};}function respondWithFilteredResult(_0x906f8c,_0x146712){return function(_0x46697e){if(_0x46697e){var _0x25c7b3=typeof _0x146712[_0xcb9a('0x20')]==='undefined'&&typeof _0x146712[_0xcb9a('0x21')]===_0xcb9a('0x22');var _0x128d63=_0x46697e['count'];var _0x242643=_0x25c7b3?0x0:_0x146712[_0xcb9a('0x20')];var _0x459d06=_0x25c7b3?_0x46697e[_0xcb9a('0x23')]:_0x146712[_0xcb9a('0x20')]+_0x146712[_0xcb9a('0x21')];var _0x473234;if(_0x459d06>=_0x128d63){_0x459d06=_0x128d63;_0x473234=0xc8;}else{_0x473234=0xce;}_0x906f8c[_0xcb9a('0x1e')](_0x473234);return _0x906f8c[_0xcb9a('0x24')]('Content-Range',_0x242643+'-'+_0x459d06+'/'+_0x128d63)['json'](_0x46697e);}return null;};}function patchUpdates(_0x47c399){return function(_0x19a4a5){try{jsonpatch[_0xcb9a('0x25')](_0x19a4a5,_0x47c399,!![]);}catch(_0x53f08f){return BPromise[_0xcb9a('0x26')](_0x53f08f);}return _0x19a4a5[_0xcb9a('0x27')]();};}function saveUpdates(_0x5077b2,_0x2ebc88){return function(_0x3000a0){if(_0x3000a0){return _0x3000a0[_0xcb9a('0x28')](_0x5077b2)[_0xcb9a('0x29')](function(_0x524a47){return _0x524a47;});}return null;};}function removeEntity(_0x3cefc9,_0xe7fee3){return function(_0xab4c4){if(_0xab4c4){return _0xab4c4[_0xcb9a('0x2a')]()[_0xcb9a('0x29')](function(){_0x3cefc9[_0xcb9a('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37edd5,_0x5bb7c5){return function(_0x364f98){if(!_0x364f98){_0x37edd5['sendStatus'](0x194);}return _0x364f98;};}function handleError(_0x29dcb6,_0x4fed7d){_0x4fed7d=_0x4fed7d||0x1f4;return function(_0x4b6226){logger['error'](_0x4b6226[_0xcb9a('0x2b')]);if(_0x4b6226['name']){delete _0x4b6226[_0xcb9a('0x2c')];}_0x29dcb6[_0xcb9a('0x1e')](_0x4fed7d)[_0xcb9a('0x2d')](_0x4b6226);};}exports['index']=function(_0x22219e,_0x57f9fe){var _0x318868={},_0x465ad5={},_0x2630b3={'count':0x0,'rows':[]};var _0x34d637=_['map'](db[_0xcb9a('0x2e')][_0xcb9a('0x2f')],function(_0x468420){return{'name':_0x468420['fieldName'],'type':_0x468420[_0xcb9a('0x30')][_0xcb9a('0x31')]};});_0x465ad5[_0xcb9a('0x32')]=_[_0xcb9a('0x33')](_0x34d637,'name');_0x465ad5['query']=_[_0xcb9a('0x34')](_0x22219e[_0xcb9a('0x35')]);_0x465ad5[_0xcb9a('0x36')]=_[_0xcb9a('0x37')](_0x465ad5[_0xcb9a('0x32')],_0x465ad5[_0xcb9a('0x35')]);_0x318868['attributes']=_['intersection'](_0x465ad5[_0xcb9a('0x32')],qs['fields'](_0x22219e[_0xcb9a('0x35')]['fields']));_0x318868[_0xcb9a('0x38')]=_0x318868[_0xcb9a('0x38')]['length']?_0x318868['attributes']:_0x465ad5[_0xcb9a('0x32')];if(!_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x39')](_0xcb9a('0x3a'))){_0x318868['limit']=qs[_0xcb9a('0x21')](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x318868[_0xcb9a('0x20')]=qs['offset'](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x20')]);}_0x318868[_0xcb9a('0x3b')]=qs['sort'](_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x318868['where']=qs['filters'](_['pick'](_0x22219e[_0xcb9a('0x35')],_0x465ad5[_0xcb9a('0x36')]),_0x34d637);if(_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x318868['where']=_[_0xcb9a('0x3e')](_0x318868[_0xcb9a('0x3f')],{'$or':_[_0xcb9a('0x33')](_0x34d637,function(_0x562581){if(_0x562581['type']!==_0xcb9a('0x40')){var _0x2b8873={};_0x2b8873[_0x562581[_0xcb9a('0x2c')]]={'$like':'%'+_0x22219e['query']['filter']+'%'};return _0x2b8873;}})});}_0x318868=_[_0xcb9a('0x3e')]({},_0x318868,_0x22219e[_0xcb9a('0x41')]);var _0xd581f2={'where':_0x318868[_0xcb9a('0x3f')]};return db[_0xcb9a('0x2e')][_0xcb9a('0x23')](_0xd581f2)[_0xcb9a('0x29')](function(_0x2c1f2b){_0x2630b3['count']=_0x2c1f2b;if(_0x22219e[_0xcb9a('0x35')][_0xcb9a('0x42')]){_0x318868[_0xcb9a('0x43')]=[{'all':!![]}];}return db[_0xcb9a('0x2e')][_0xcb9a('0x44')](_0x318868);})[_0xcb9a('0x29')](function(_0x56cb0f){_0x2630b3[_0xcb9a('0x45')]=_0x56cb0f;return _0x2630b3;})['then'](respondWithFilteredResult(_0x57f9fe,_0x318868))[_0xcb9a('0x46')](handleError(_0x57f9fe,null));};exports['show']=function(_0x766653,_0x140187){var _0x432921={'raw':![],'where':{'id':_0x766653['params']['id']}},_0x4b7f3f={};_0x4b7f3f[_0xcb9a('0x32')]=_['keys'](db[_0xcb9a('0x2e')][_0xcb9a('0x2f')]);_0x4b7f3f[_0xcb9a('0x35')]=_[_0xcb9a('0x34')](_0x766653[_0xcb9a('0x35')]);_0x4b7f3f[_0xcb9a('0x36')]=_['intersection'](_0x4b7f3f[_0xcb9a('0x32')],_0x4b7f3f[_0xcb9a('0x35')]);_0x432921[_0xcb9a('0x38')]=_['intersection'](_0x4b7f3f[_0xcb9a('0x32')],qs[_0xcb9a('0x47')](_0x766653[_0xcb9a('0x35')][_0xcb9a('0x47')]));_0x432921[_0xcb9a('0x38')]=_0x432921[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x432921['attributes']:_0x4b7f3f['model'];if(_0x766653[_0xcb9a('0x35')]['includeAll']){_0x432921['include']=[{'all':!![]}];}_0x432921=_[_0xcb9a('0x3e')]({},_0x432921,_0x766653[_0xcb9a('0x41')]);return db['ZohoConfiguration']['find'](_0x432921)[_0xcb9a('0x29')](handleEntityNotFound(_0x140187,null))[_0xcb9a('0x29')](respondWithResult(_0x140187,null))[_0xcb9a('0x46')](handleError(_0x140187,null));};exports[_0xcb9a('0x49')]=function(_0xb4dba5,_0x477941){return db['ZohoConfiguration']['create'](_0xb4dba5[_0xcb9a('0x4a')],{})[_0xcb9a('0x29')](respondWithResult(_0x477941,0xc9))[_0xcb9a('0x46')](handleError(_0x477941,null));};exports['update']=function(_0x4752ce,_0x3106d8){if(_0x4752ce[_0xcb9a('0x4a')]['id']){delete _0x4752ce[_0xcb9a('0x4a')]['id'];}return db[_0xcb9a('0x2e')]['find']({'where':{'id':_0x4752ce[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x3106d8,null))['then'](saveUpdates(_0x4752ce[_0xcb9a('0x4a')],null))['then'](respondWithResult(_0x3106d8,null))['catch'](handleError(_0x3106d8,null));};exports[_0xcb9a('0x2a')]=function(_0x4edf0a,_0x523ca5){return db[_0xcb9a('0x2e')]['find']({'where':{'id':_0x4edf0a[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x523ca5,null))[_0xcb9a('0x29')](removeEntity(_0x523ca5,null))[_0xcb9a('0x46')](handleError(_0x523ca5,null));};exports[_0xcb9a('0x4c')]=function(_0x29cb97,_0x4ede80,_0x3aa3fa){var _0x10f905={};var _0x53adda={};var _0x1b0a1a;var _0x3ca09b;return db[_0xcb9a('0x2e')][_0xcb9a('0x4d')]({'where':{'id':_0x29cb97[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x4ede80,null))[_0xcb9a('0x29')](function(_0x165467){if(_0x165467){_0x1b0a1a=_0x165467;_0x53adda[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db[_0xcb9a('0x4e')]['rawAttributes']);_0x53adda[_0xcb9a('0x35')]=_['keys'](_0x29cb97[_0xcb9a('0x35')]);_0x53adda[_0xcb9a('0x36')]=_['intersection'](_0x53adda[_0xcb9a('0x32')],_0x53adda[_0xcb9a('0x35')]);_0x10f905['attributes']=_[_0xcb9a('0x37')](_0x53adda['model'],qs[_0xcb9a('0x47')](_0x29cb97[_0xcb9a('0x35')]['fields']));_0x10f905[_0xcb9a('0x38')]=_0x10f905[_0xcb9a('0x38')]['length']?_0x10f905[_0xcb9a('0x38')]:_0x53adda[_0xcb9a('0x32')];_0x10f905[_0xcb9a('0x3b')]=qs[_0xcb9a('0x3c')](_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x10f905[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x29cb97[_0xcb9a('0x35')],_0x53adda[_0xcb9a('0x36')]));if(_0x29cb97['query'][_0xcb9a('0x3d')]){_0x10f905['where']=_[_0xcb9a('0x3e')](_0x10f905['where'],{'$or':_['map'](_0x10f905['attributes'],function(_0x2017de){var _0x42f3f0={};_0x42f3f0[_0x2017de]={'$like':'%'+_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x42f3f0;})});}_0x10f905=_[_0xcb9a('0x3e')]({},_0x10f905,_0x29cb97[_0xcb9a('0x41')]);return _0x1b0a1a[_0xcb9a('0x4c')](_0x10f905);}})['then'](function(_0x183493){if(_0x183493){_0x3ca09b=_0x183493[_0xcb9a('0x48')];if(!_0x29cb97['query']['hasOwnProperty'](_0xcb9a('0x3a'))){_0x10f905[_0xcb9a('0x21')]=qs[_0xcb9a('0x21')](_0x29cb97['query']['limit']);_0x10f905[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x29cb97[_0xcb9a('0x35')][_0xcb9a('0x20')]);}return _0x1b0a1a[_0xcb9a('0x4c')](_0x10f905);}})['then'](function(_0x137e36){if(_0x137e36){return _0x137e36?{'count':_0x3ca09b,'rows':_0x137e36}:null;}})['then'](respondWithResult(_0x4ede80,null))[_0xcb9a('0x46')](handleError(_0x4ede80,null));};exports['getSubjects']=function(_0x347365,_0x43ff92,_0xdb8ae0){var _0x473832={};var _0x16bee5={};var _0x27dbf4;var _0x3f1c10;return db[_0xcb9a('0x2e')]['findOne']({'where':{'id':_0x347365[_0xcb9a('0x4b')]['id']}})[_0xcb9a('0x29')](handleEntityNotFound(_0x43ff92,null))[_0xcb9a('0x29')](function(_0x832077){if(_0x832077){_0x27dbf4=_0x832077;_0x16bee5[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db[_0xcb9a('0x4e')][_0xcb9a('0x2f')]);_0x16bee5[_0xcb9a('0x35')]=_['keys'](_0x347365['query']);_0x16bee5['filters']=_[_0xcb9a('0x37')](_0x16bee5[_0xcb9a('0x32')],_0x16bee5['query']);_0x473832[_0xcb9a('0x38')]=_[_0xcb9a('0x37')](_0x16bee5[_0xcb9a('0x32')],qs[_0xcb9a('0x47')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x47')]));_0x473832[_0xcb9a('0x38')]=_0x473832[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x473832[_0xcb9a('0x38')]:_0x16bee5[_0xcb9a('0x32')];_0x473832[_0xcb9a('0x3b')]=qs[_0xcb9a('0x3c')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x473832[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x347365[_0xcb9a('0x35')],_0x16bee5[_0xcb9a('0x36')]));if(_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x473832[_0xcb9a('0x3f')]=_[_0xcb9a('0x3e')](_0x473832['where'],{'$or':_[_0xcb9a('0x33')](_0x473832[_0xcb9a('0x38')],function(_0x27b56e){var _0x139832={};_0x139832[_0x27b56e]={'$like':'%'+_0x347365[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x139832;})});}_0x473832=_[_0xcb9a('0x3e')]({},_0x473832,_0x347365[_0xcb9a('0x41')]);return _0x27dbf4[_0xcb9a('0x50')](_0x473832);}})[_0xcb9a('0x29')](function(_0x2700bb){if(_0x2700bb){_0x3f1c10=_0x2700bb[_0xcb9a('0x48')];if(!_0x347365[_0xcb9a('0x35')][_0xcb9a('0x39')]('nolimit')){_0x473832[_0xcb9a('0x21')]=qs[_0xcb9a('0x21')](_0x347365[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x473832[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x347365['query'][_0xcb9a('0x20')]);}return _0x27dbf4[_0xcb9a('0x50')](_0x473832);}})[_0xcb9a('0x29')](function(_0x5d8e30){if(_0x5d8e30){return _0x5d8e30?{'count':_0x3f1c10,'rows':_0x5d8e30}:null;}})[_0xcb9a('0x29')](respondWithResult(_0x43ff92,null))[_0xcb9a('0x46')](handleError(_0x43ff92,null));};exports[_0xcb9a('0x51')]=function(_0x4fdafa,_0x490035,_0x8aeda2){var _0x25faf2={};var _0x6b3fb9={};var _0x8c0d3b;var _0x894d60;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x4fdafa[_0xcb9a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x490035,null))[_0xcb9a('0x29')](function(_0x38edc4){if(_0x38edc4){_0x8c0d3b=_0x38edc4;_0x6b3fb9[_0xcb9a('0x32')]=_[_0xcb9a('0x34')](db['ZohoField'][_0xcb9a('0x2f')]);_0x6b3fb9[_0xcb9a('0x35')]=_[_0xcb9a('0x34')](_0x4fdafa['query']);_0x6b3fb9['filters']=_[_0xcb9a('0x37')](_0x6b3fb9[_0xcb9a('0x32')],_0x6b3fb9[_0xcb9a('0x35')]);_0x25faf2[_0xcb9a('0x38')]=_[_0xcb9a('0x37')](_0x6b3fb9['model'],qs[_0xcb9a('0x47')](_0x4fdafa['query'][_0xcb9a('0x47')]));_0x25faf2[_0xcb9a('0x38')]=_0x25faf2[_0xcb9a('0x38')][_0xcb9a('0x48')]?_0x25faf2[_0xcb9a('0x38')]:_0x6b3fb9[_0xcb9a('0x32')];_0x25faf2['order']=qs[_0xcb9a('0x3c')](_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3c')]);_0x25faf2[_0xcb9a('0x3f')]=qs[_0xcb9a('0x36')](_[_0xcb9a('0x4f')](_0x4fdafa[_0xcb9a('0x35')],_0x6b3fb9[_0xcb9a('0x36')]));if(_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3d')]){_0x25faf2[_0xcb9a('0x3f')]=_[_0xcb9a('0x3e')](_0x25faf2[_0xcb9a('0x3f')],{'$or':_[_0xcb9a('0x33')](_0x25faf2['attributes'],function(_0x173b84){var _0x1eb809={};_0x1eb809[_0x173b84]={'$like':'%'+_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x3d')]+'%'};return _0x1eb809;})});}_0x25faf2=_['merge']({},_0x25faf2,_0x4fdafa[_0xcb9a('0x41')]);return _0x8c0d3b[_0xcb9a('0x51')](_0x25faf2);}})['then'](function(_0x1a5297){if(_0x1a5297){_0x894d60=_0x1a5297[_0xcb9a('0x48')];if(!_0x4fdafa[_0xcb9a('0x35')]['hasOwnProperty'](_0xcb9a('0x3a'))){_0x25faf2[_0xcb9a('0x21')]=qs['limit'](_0x4fdafa[_0xcb9a('0x35')][_0xcb9a('0x21')]);_0x25faf2[_0xcb9a('0x20')]=qs[_0xcb9a('0x20')](_0x4fdafa[_0xcb9a('0x35')]['offset']);}return _0x8c0d3b['getDescriptions'](_0x25faf2);}})[_0xcb9a('0x29')](function(_0x5d1b53){if(_0x5d1b53){return _0x5d1b53?{'count':_0x894d60,'rows':_0x5d1b53}:null;}})[_0xcb9a('0x29')](respondWithResult(_0x490035,null))[_0xcb9a('0x46')](handleError(_0x490035,null));};
\ No newline at end of file
+var _0xf473=['squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','name','send','map','ZohoConfiguration','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','where','filter','merge','VIRTUAL','options','include','rows','show','rawAttributes','includeAll','catch','create','body','find','params','destroy','getFields','ZohoField','sort','pick','hasOwnProperty','getSubjects','order','findOne','getDescriptions','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3b811c,_0x1e5435){var _0x126b18=function(_0x493c48){while(--_0x493c48){_0x3b811c['push'](_0x3b811c['shift']());}};_0x126b18(++_0x1e5435);}(_0xf473,0x17a));var _0x3f47=function(_0x4dcf1d,_0x491ea1){_0x4dcf1d=_0x4dcf1d-0x0;var _0x773104=_0xf473[_0x4dcf1d];return _0x773104;};'use strict';var emlformat=require(_0x3f47('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3f47('0x1'));var rp=require('request-promise');var moment=require(_0x3f47('0x2'));var BPromise=require(_0x3f47('0x3'));var Mustache=require(_0x3f47('0x4'));var util=require(_0x3f47('0x5'));var path=require(_0x3f47('0x6'));var sox=require(_0x3f47('0x7'));var csv=require(_0x3f47('0x8'));var ejs=require(_0x3f47('0x9'));var fs=require('fs');var fs_extra=require(_0x3f47('0xa'));var _=require(_0x3f47('0xb'));var squel=require(_0x3f47('0xc'));var crypto=require(_0x3f47('0xd'));var jsforce=require(_0x3f47('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3f47('0xf'));var authService=require(_0x3f47('0x10'));var qs=require(_0x3f47('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3f47('0x12'))(_0x3f47('0x13'));var utils=require(_0x3f47('0x14'));var config=require(_0x3f47('0x15'));var licenseUtil=require(_0x3f47('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c2b82,_0x1ee95c){_0x1ee95c=_0x1ee95c||0xcc;return function(_0x50b737){if(_0x50b737){return _0x1c2b82[_0x3f47('0x17')](_0x1ee95c);}return _0x1c2b82[_0x3f47('0x18')](_0x1ee95c)[_0x3f47('0x19')]();};}function respondWithResult(_0x161299,_0x370801){_0x370801=_0x370801||0xc8;return function(_0x392a3c){if(_0x392a3c){return _0x161299[_0x3f47('0x18')](_0x370801)[_0x3f47('0x1a')](_0x392a3c);}};}function respondWithFilteredResult(_0x2bed39,_0x100e2f){return function(_0x31ab40){if(_0x31ab40){var _0x19667b=typeof _0x100e2f[_0x3f47('0x1b')]===_0x3f47('0x1c')&&typeof _0x100e2f[_0x3f47('0x1d')]===_0x3f47('0x1c');var _0x4b26aa=_0x31ab40[_0x3f47('0x1e')];var _0x37119c=_0x19667b?0x0:_0x100e2f[_0x3f47('0x1b')];var _0x57f13a=_0x19667b?_0x31ab40[_0x3f47('0x1e')]:_0x100e2f[_0x3f47('0x1b')]+_0x100e2f[_0x3f47('0x1d')];var _0xbe33c4;if(_0x57f13a>=_0x4b26aa){_0x57f13a=_0x4b26aa;_0xbe33c4=0xc8;}else{_0xbe33c4=0xce;}_0x2bed39[_0x3f47('0x18')](_0xbe33c4);return _0x2bed39[_0x3f47('0x1f')](_0x3f47('0x20'),_0x37119c+'-'+_0x57f13a+'/'+_0x4b26aa)[_0x3f47('0x1a')](_0x31ab40);}return null;};}function patchUpdates(_0x256ee3){return function(_0x514935){try{jsonpatch[_0x3f47('0x21')](_0x514935,_0x256ee3,!![]);}catch(_0x182bd1){return BPromise[_0x3f47('0x22')](_0x182bd1);}return _0x514935[_0x3f47('0x23')]();};}function saveUpdates(_0x4f5ede,_0x365283){return function(_0x1b8848){if(_0x1b8848){return _0x1b8848[_0x3f47('0x24')](_0x4f5ede)[_0x3f47('0x25')](function(_0x4db796){return _0x4db796;});}return null;};}function removeEntity(_0x223f69,_0x33b7aa){return function(_0x462b35){if(_0x462b35){return _0x462b35['destroy']()['then'](function(){_0x223f69[_0x3f47('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45b0fe,_0x504613){return function(_0x329952){if(!_0x329952){_0x45b0fe[_0x3f47('0x17')](0x194);}return _0x329952;};}function handleError(_0x4a927f,_0x57b57e){_0x57b57e=_0x57b57e||0x1f4;return function(_0xd452a4){logger['error'](_0xd452a4['stack']);if(_0xd452a4[_0x3f47('0x26')]){delete _0xd452a4[_0x3f47('0x26')];}_0x4a927f[_0x3f47('0x18')](_0x57b57e)[_0x3f47('0x27')](_0xd452a4);};}exports['index']=function(_0x4faeba,_0x30a6b3){var _0x4b55f1={},_0x253633={},_0x3c2c48={'count':0x0,'rows':[]};var _0x2661ce=_[_0x3f47('0x28')](db[_0x3f47('0x29')]['rawAttributes'],function(_0x44a88c){return{'name':_0x44a88c['fieldName'],'type':_0x44a88c[_0x3f47('0x2a')][_0x3f47('0x2b')]};});_0x253633['model']=_[_0x3f47('0x28')](_0x2661ce,_0x3f47('0x26'));_0x253633[_0x3f47('0x2c')]=_[_0x3f47('0x2d')](_0x4faeba[_0x3f47('0x2c')]);_0x253633[_0x3f47('0x2e')]=_[_0x3f47('0x2f')](_0x253633[_0x3f47('0x30')],_0x253633[_0x3f47('0x2c')]);_0x4b55f1['attributes']=_[_0x3f47('0x2f')](_0x253633['model'],qs[_0x3f47('0x31')](_0x4faeba[_0x3f47('0x2c')][_0x3f47('0x31')]));_0x4b55f1['attributes']=_0x4b55f1[_0x3f47('0x32')][_0x3f47('0x33')]?_0x4b55f1['attributes']:_0x253633[_0x3f47('0x30')];if(!_0x4faeba['query']['hasOwnProperty'](_0x3f47('0x34'))){_0x4b55f1['limit']=qs['limit'](_0x4faeba[_0x3f47('0x2c')][_0x3f47('0x1d')]);_0x4b55f1['offset']=qs[_0x3f47('0x1b')](_0x4faeba[_0x3f47('0x2c')]['offset']);}_0x4b55f1['order']=qs['sort'](_0x4faeba['query']['sort']);_0x4b55f1[_0x3f47('0x35')]=qs[_0x3f47('0x2e')](_['pick'](_0x4faeba[_0x3f47('0x2c')],_0x253633[_0x3f47('0x2e')]),_0x2661ce);if(_0x4faeba[_0x3f47('0x2c')][_0x3f47('0x36')]){_0x4b55f1['where']=_[_0x3f47('0x37')](_0x4b55f1[_0x3f47('0x35')],{'$or':_[_0x3f47('0x28')](_0x2661ce,function(_0x58e3a8){if(_0x58e3a8[_0x3f47('0x2a')]!==_0x3f47('0x38')){var _0x324358={};_0x324358[_0x58e3a8[_0x3f47('0x26')]]={'$like':'%'+_0x4faeba['query'][_0x3f47('0x36')]+'%'};return _0x324358;}})});}_0x4b55f1=_[_0x3f47('0x37')]({},_0x4b55f1,_0x4faeba[_0x3f47('0x39')]);var _0x49059e={'where':_0x4b55f1[_0x3f47('0x35')]};return db['ZohoConfiguration'][_0x3f47('0x1e')](_0x49059e)['then'](function(_0xd98b01){_0x3c2c48[_0x3f47('0x1e')]=_0xd98b01;if(_0x4faeba[_0x3f47('0x2c')]['includeAll']){_0x4b55f1[_0x3f47('0x3a')]=[{'all':!![]}];}return db[_0x3f47('0x29')]['findAll'](_0x4b55f1);})[_0x3f47('0x25')](function(_0x469d57){_0x3c2c48[_0x3f47('0x3b')]=_0x469d57;return _0x3c2c48;})[_0x3f47('0x25')](respondWithFilteredResult(_0x30a6b3,_0x4b55f1))['catch'](handleError(_0x30a6b3,null));};exports[_0x3f47('0x3c')]=function(_0x15d58d,_0x257900){var _0x160d80={'raw':![],'where':{'id':_0x15d58d['params']['id']}},_0x382027={};_0x382027['model']=_[_0x3f47('0x2d')](db[_0x3f47('0x29')][_0x3f47('0x3d')]);_0x382027[_0x3f47('0x2c')]=_[_0x3f47('0x2d')](_0x15d58d['query']);_0x382027[_0x3f47('0x2e')]=_[_0x3f47('0x2f')](_0x382027['model'],_0x382027['query']);_0x160d80['attributes']=_[_0x3f47('0x2f')](_0x382027[_0x3f47('0x30')],qs[_0x3f47('0x31')](_0x15d58d[_0x3f47('0x2c')][_0x3f47('0x31')]));_0x160d80[_0x3f47('0x32')]=_0x160d80[_0x3f47('0x32')]['length']?_0x160d80[_0x3f47('0x32')]:_0x382027[_0x3f47('0x30')];if(_0x15d58d[_0x3f47('0x2c')][_0x3f47('0x3e')]){_0x160d80[_0x3f47('0x3a')]=[{'all':!![]}];}_0x160d80=_['merge']({},_0x160d80,_0x15d58d['options']);return db['ZohoConfiguration']['find'](_0x160d80)[_0x3f47('0x25')](handleEntityNotFound(_0x257900,null))[_0x3f47('0x25')](respondWithResult(_0x257900,null))[_0x3f47('0x3f')](handleError(_0x257900,null));};exports[_0x3f47('0x40')]=function(_0x2c9d30,_0x273faf){return db['ZohoConfiguration']['create'](_0x2c9d30['body'],{})[_0x3f47('0x25')](respondWithResult(_0x273faf,0xc9))['catch'](handleError(_0x273faf,null));};exports[_0x3f47('0x24')]=function(_0x5b4bb2,_0x20e02b){if(_0x5b4bb2[_0x3f47('0x41')]['id']){delete _0x5b4bb2[_0x3f47('0x41')]['id'];}return db[_0x3f47('0x29')][_0x3f47('0x42')]({'where':{'id':_0x5b4bb2[_0x3f47('0x43')]['id']}})[_0x3f47('0x25')](handleEntityNotFound(_0x20e02b,null))[_0x3f47('0x25')](saveUpdates(_0x5b4bb2[_0x3f47('0x41')],null))[_0x3f47('0x25')](respondWithResult(_0x20e02b,null))['catch'](handleError(_0x20e02b,null));};exports[_0x3f47('0x44')]=function(_0x3a877f,_0xfc2f45){return db[_0x3f47('0x29')][_0x3f47('0x42')]({'where':{'id':_0x3a877f[_0x3f47('0x43')]['id']}})[_0x3f47('0x25')](handleEntityNotFound(_0xfc2f45,null))[_0x3f47('0x25')](removeEntity(_0xfc2f45,null))[_0x3f47('0x3f')](handleError(_0xfc2f45,null));};exports[_0x3f47('0x45')]=function(_0x3f78d3,_0xe6abdc,_0x1bae47){var _0x4370ea={};var _0x1b1c79={};var _0x4918ba;var _0x23296c;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x3f78d3[_0x3f47('0x43')]['id']}})[_0x3f47('0x25')](handleEntityNotFound(_0xe6abdc,null))[_0x3f47('0x25')](function(_0xa1d704){if(_0xa1d704){_0x4918ba=_0xa1d704;_0x1b1c79[_0x3f47('0x30')]=_['keys'](db[_0x3f47('0x46')]['rawAttributes']);_0x1b1c79[_0x3f47('0x2c')]=_[_0x3f47('0x2d')](_0x3f78d3['query']);_0x1b1c79[_0x3f47('0x2e')]=_[_0x3f47('0x2f')](_0x1b1c79[_0x3f47('0x30')],_0x1b1c79['query']);_0x4370ea['attributes']=_['intersection'](_0x1b1c79['model'],qs[_0x3f47('0x31')](_0x3f78d3[_0x3f47('0x2c')]['fields']));_0x4370ea['attributes']=_0x4370ea[_0x3f47('0x32')]['length']?_0x4370ea['attributes']:_0x1b1c79[_0x3f47('0x30')];_0x4370ea['order']=qs[_0x3f47('0x47')](_0x3f78d3['query'][_0x3f47('0x47')]);_0x4370ea[_0x3f47('0x35')]=qs[_0x3f47('0x2e')](_[_0x3f47('0x48')](_0x3f78d3['query'],_0x1b1c79[_0x3f47('0x2e')]));if(_0x3f78d3[_0x3f47('0x2c')][_0x3f47('0x36')]){_0x4370ea[_0x3f47('0x35')]=_[_0x3f47('0x37')](_0x4370ea[_0x3f47('0x35')],{'$or':_['map'](_0x4370ea['attributes'],function(_0x34f0fd){var _0x98a455={};_0x98a455[_0x34f0fd]={'$like':'%'+_0x3f78d3[_0x3f47('0x2c')][_0x3f47('0x36')]+'%'};return _0x98a455;})});}_0x4370ea=_[_0x3f47('0x37')]({},_0x4370ea,_0x3f78d3[_0x3f47('0x39')]);return _0x4918ba[_0x3f47('0x45')](_0x4370ea);}})[_0x3f47('0x25')](function(_0x2dcce3){if(_0x2dcce3){_0x23296c=_0x2dcce3[_0x3f47('0x33')];if(!_0x3f78d3[_0x3f47('0x2c')][_0x3f47('0x49')]('nolimit')){_0x4370ea[_0x3f47('0x1d')]=qs['limit'](_0x3f78d3[_0x3f47('0x2c')][_0x3f47('0x1d')]);_0x4370ea['offset']=qs[_0x3f47('0x1b')](_0x3f78d3['query'][_0x3f47('0x1b')]);}return _0x4918ba[_0x3f47('0x45')](_0x4370ea);}})['then'](function(_0x19e4b1){if(_0x19e4b1){return _0x19e4b1?{'count':_0x23296c,'rows':_0x19e4b1}:null;}})[_0x3f47('0x25')](respondWithResult(_0xe6abdc,null))[_0x3f47('0x3f')](handleError(_0xe6abdc,null));};exports[_0x3f47('0x4a')]=function(_0x4d3b80,_0x355b27,_0x2e3a56){var _0x1c16ec={};var _0x13a306={};var _0x468fa4;var _0x503072;return db[_0x3f47('0x29')]['findOne']({'where':{'id':_0x4d3b80[_0x3f47('0x43')]['id']}})['then'](handleEntityNotFound(_0x355b27,null))[_0x3f47('0x25')](function(_0x3a589e){if(_0x3a589e){_0x468fa4=_0x3a589e;_0x13a306[_0x3f47('0x30')]=_['keys'](db['ZohoField'][_0x3f47('0x3d')]);_0x13a306[_0x3f47('0x2c')]=_[_0x3f47('0x2d')](_0x4d3b80[_0x3f47('0x2c')]);_0x13a306['filters']=_[_0x3f47('0x2f')](_0x13a306[_0x3f47('0x30')],_0x13a306[_0x3f47('0x2c')]);_0x1c16ec['attributes']=_[_0x3f47('0x2f')](_0x13a306['model'],qs[_0x3f47('0x31')](_0x4d3b80[_0x3f47('0x2c')]['fields']));_0x1c16ec[_0x3f47('0x32')]=_0x1c16ec['attributes']['length']?_0x1c16ec[_0x3f47('0x32')]:_0x13a306['model'];_0x1c16ec[_0x3f47('0x4b')]=qs[_0x3f47('0x47')](_0x4d3b80['query'][_0x3f47('0x47')]);_0x1c16ec[_0x3f47('0x35')]=qs[_0x3f47('0x2e')](_[_0x3f47('0x48')](_0x4d3b80[_0x3f47('0x2c')],_0x13a306[_0x3f47('0x2e')]));if(_0x4d3b80[_0x3f47('0x2c')]['filter']){_0x1c16ec[_0x3f47('0x35')]=_[_0x3f47('0x37')](_0x1c16ec[_0x3f47('0x35')],{'$or':_[_0x3f47('0x28')](_0x1c16ec['attributes'],function(_0x16d39f){var _0x7ff7a1={};_0x7ff7a1[_0x16d39f]={'$like':'%'+_0x4d3b80[_0x3f47('0x2c')][_0x3f47('0x36')]+'%'};return _0x7ff7a1;})});}_0x1c16ec=_[_0x3f47('0x37')]({},_0x1c16ec,_0x4d3b80['options']);return _0x468fa4[_0x3f47('0x4a')](_0x1c16ec);}})[_0x3f47('0x25')](function(_0x3a0fa5){if(_0x3a0fa5){_0x503072=_0x3a0fa5[_0x3f47('0x33')];if(!_0x4d3b80[_0x3f47('0x2c')][_0x3f47('0x49')](_0x3f47('0x34'))){_0x1c16ec[_0x3f47('0x1d')]=qs[_0x3f47('0x1d')](_0x4d3b80[_0x3f47('0x2c')][_0x3f47('0x1d')]);_0x1c16ec[_0x3f47('0x1b')]=qs[_0x3f47('0x1b')](_0x4d3b80[_0x3f47('0x2c')][_0x3f47('0x1b')]);}return _0x468fa4[_0x3f47('0x4a')](_0x1c16ec);}})[_0x3f47('0x25')](function(_0x53e44d){if(_0x53e44d){return _0x53e44d?{'count':_0x503072,'rows':_0x53e44d}:null;}})[_0x3f47('0x25')](respondWithResult(_0x355b27,null))[_0x3f47('0x3f')](handleError(_0x355b27,null));};exports['getDescriptions']=function(_0xd1b865,_0x395404,_0x445437){var _0x2f32a2={};var _0x190c59={};var _0x34185e;var _0x407158;return db[_0x3f47('0x29')][_0x3f47('0x4c')]({'where':{'id':_0xd1b865[_0x3f47('0x43')]['id']}})[_0x3f47('0x25')](handleEntityNotFound(_0x395404,null))[_0x3f47('0x25')](function(_0x1b31ee){if(_0x1b31ee){_0x34185e=_0x1b31ee;_0x190c59[_0x3f47('0x30')]=_[_0x3f47('0x2d')](db[_0x3f47('0x46')][_0x3f47('0x3d')]);_0x190c59[_0x3f47('0x2c')]=_[_0x3f47('0x2d')](_0xd1b865[_0x3f47('0x2c')]);_0x190c59[_0x3f47('0x2e')]=_[_0x3f47('0x2f')](_0x190c59[_0x3f47('0x30')],_0x190c59[_0x3f47('0x2c')]);_0x2f32a2[_0x3f47('0x32')]=_['intersection'](_0x190c59[_0x3f47('0x30')],qs[_0x3f47('0x31')](_0xd1b865['query']['fields']));_0x2f32a2[_0x3f47('0x32')]=_0x2f32a2[_0x3f47('0x32')]['length']?_0x2f32a2['attributes']:_0x190c59[_0x3f47('0x30')];_0x2f32a2[_0x3f47('0x4b')]=qs[_0x3f47('0x47')](_0xd1b865[_0x3f47('0x2c')][_0x3f47('0x47')]);_0x2f32a2[_0x3f47('0x35')]=qs[_0x3f47('0x2e')](_[_0x3f47('0x48')](_0xd1b865[_0x3f47('0x2c')],_0x190c59[_0x3f47('0x2e')]));if(_0xd1b865[_0x3f47('0x2c')]['filter']){_0x2f32a2[_0x3f47('0x35')]=_['merge'](_0x2f32a2['where'],{'$or':_['map'](_0x2f32a2[_0x3f47('0x32')],function(_0x5e4de1){var _0x2cef2d={};_0x2cef2d[_0x5e4de1]={'$like':'%'+_0xd1b865[_0x3f47('0x2c')][_0x3f47('0x36')]+'%'};return _0x2cef2d;})});}_0x2f32a2=_[_0x3f47('0x37')]({},_0x2f32a2,_0xd1b865[_0x3f47('0x39')]);return _0x34185e[_0x3f47('0x4d')](_0x2f32a2);}})[_0x3f47('0x25')](function(_0x1d4dbb){if(_0x1d4dbb){_0x407158=_0x1d4dbb[_0x3f47('0x33')];if(!_0xd1b865['query']['hasOwnProperty']('nolimit')){_0x2f32a2[_0x3f47('0x1d')]=qs[_0x3f47('0x1d')](_0xd1b865['query']['limit']);_0x2f32a2[_0x3f47('0x1b')]=qs['offset'](_0xd1b865[_0x3f47('0x2c')][_0x3f47('0x1b')]);}return _0x34185e[_0x3f47('0x4d')](_0x2f32a2);}})[_0x3f47('0x25')](function(_0x3a5dcb){if(_0x3a5dcb){return _0x3a5dcb?{'count':_0x407158,'rows':_0x3a5dcb}:null;}})[_0x3f47('0x25')](respondWithResult(_0x395404,null))[_0x3f47('0x3f')](handleError(_0x395404,null));};
\ No newline at end of file
index 84d856e..21dd9e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd27e=['./intZohoConfiguration.attributes','exports','ZohoConfiguration','lodash','util','../../config/logger','api','moment','path','../../config/environment'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xd27e,0x7b));var _0xed27=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xd27e[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xed27('0x0'));var util=require(_0xed27('0x1'));var logger=require(_0xed27('0x2'))(_0xed27('0x3'));var moment=require(_0xed27('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xed27('0x5'));var rimraf=require('rimraf');var config=require(_0xed27('0x6'));var attributes=require(_0xed27('0x7'));module[_0xed27('0x8')]=function(_0x2d9a4b,_0x394c38){return _0x2d9a4b['define'](_0xed27('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8b95=['define','ZohoConfiguration','util','moment','path','exports'];(function(_0x41050f,_0x336141){var _0x21b8bf=function(_0x3de1b2){while(--_0x3de1b2){_0x41050f['push'](_0x41050f['shift']());}};_0x21b8bf(++_0x336141);}(_0x8b95,0x122));var _0x58b9=function(_0x4115cc,_0x528b1c){_0x4115cc=_0x4115cc-0x0;var _0x9620b9=_0x8b95[_0x4115cc];return _0x9620b9;};'use strict';var _=require('lodash');var util=require(_0x58b9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x58b9('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x58b9('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module[_0x58b9('0x3')]=function(_0x22c849,_0x12b7a4){return _0x22c849[_0x58b9('0x4')](_0x58b9('0x5'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 061c056..0572b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe448=['ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe448,0x194));var _0x8e44=function(_0xa78723,_0x1b2cc7){_0xa78723=_0xa78723-0x0;var _0x4d9d4c=_0xe448[_0xa78723];return _0x4d9d4c;};'use strict';var _=require(_0x8e44('0x0'));var util=require(_0x8e44('0x1'));var moment=require(_0x8e44('0x2'));var BPromise=require(_0x8e44('0x3'));var rs=require(_0x8e44('0x4'));var fs=require('fs');var Redis=require(_0x8e44('0x5'));var db=require(_0x8e44('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e44('0x7'))(_0x8e44('0x8'));var config=require('../../config/environment');var jayson=require(_0x8e44('0x9'));var client=jayson['client'][_0x8e44('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2417e3,_0x15f795,_0x12130d){return new BPromise(function(_0x93a8e0,_0x11b9a7){return client['request'](_0x2417e3,_0x12130d)[_0x8e44('0xb')](function(_0x5aad6c){logger[_0x8e44('0xc')](_0x8e44('0xd'),_0x15f795,_0x8e44('0xe'));logger[_0x8e44('0xf')](_0x8e44('0x10'),_0x15f795,_0x8e44('0xe'),JSON['stringify'](_0x5aad6c));if(_0x5aad6c[_0x8e44('0x11')]){if(_0x5aad6c[_0x8e44('0x11')]['code']===0x1f4){logger[_0x8e44('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x15f795,_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);return _0x11b9a7(_0x5aad6c['error'][_0x8e44('0x12')]);}logger['error'](_0x8e44('0xd'),_0x15f795,_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);return _0x93a8e0(_0x5aad6c[_0x8e44('0x11')][_0x8e44('0x12')]);}else{logger[_0x8e44('0xc')](_0x8e44('0xd'),_0x15f795,'request\x20sent');_0x93a8e0(_0x5aad6c[_0x8e44('0x13')][_0x8e44('0x12')]);}})[_0x8e44('0x14')](function(_0x330e13){logger[_0x8e44('0x11')](_0x8e44('0xd'),_0x15f795,_0x330e13);_0x11b9a7(_0x330e13);});});}
\ No newline at end of file
+var _0x3bc8=['../../config/utils','rpc','jayson/promise','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x35d59c,_0x4aa57e){var _0x55d5cc=function(_0x243c04){while(--_0x243c04){_0x35d59c['push'](_0x35d59c['shift']());}};_0x55d5cc(++_0x4aa57e);}(_0x3bc8,0xf6));var _0x83bc=function(_0x321575,_0x458292){_0x321575=_0x321575-0x0;var _0x147fc3=_0x3bc8[_0x321575];return _0x147fc3;};'use strict';var _=require(_0x83bc('0x0'));var util=require(_0x83bc('0x1'));var moment=require('moment');var BPromise=require(_0x83bc('0x2'));var rs=require(_0x83bc('0x3'));var fs=require('fs');var Redis=require(_0x83bc('0x4'));var db=require(_0x83bc('0x5'))['db'];var utils=require(_0x83bc('0x6'));var logger=require('../../config/logger')(_0x83bc('0x7'));var config=require('../../config/environment');var jayson=require(_0x83bc('0x8'));var client=jayson['client'][_0x83bc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b979b,_0x10f06c,_0x1d9b3e){return new BPromise(function(_0x5e2bfd,_0x48580c){return client[_0x83bc('0xa')](_0x4b979b,_0x1d9b3e)[_0x83bc('0xb')](function(_0x530598){logger[_0x83bc('0xc')](_0x83bc('0xd'),_0x10f06c,_0x83bc('0xe'));logger[_0x83bc('0xf')](_0x83bc('0x10'),_0x10f06c,'request\x20sent',JSON['stringify'](_0x530598));if(_0x530598[_0x83bc('0x11')]){if(_0x530598['error'][_0x83bc('0x12')]===0x1f4){logger['error'](_0x83bc('0xd'),_0x10f06c,_0x530598[_0x83bc('0x11')]['message']);return _0x48580c(_0x530598[_0x83bc('0x11')][_0x83bc('0x13')]);}logger[_0x83bc('0x11')](_0x83bc('0xd'),_0x10f06c,_0x530598['error']['message']);return _0x5e2bfd(_0x530598[_0x83bc('0x11')][_0x83bc('0x13')]);}else{logger[_0x83bc('0xc')](_0x83bc('0xd'),_0x10f06c,_0x83bc('0xe'));_0x5e2bfd(_0x530598[_0x83bc('0x14')][_0x83bc('0x13')]);}})['catch'](function(_0x2defcd){logger[_0x83bc('0x11')](_0x83bc('0xd'),_0x10f06c,_0x2defcd);_0x48580c(_0x2defcd);});});}
\ No newline at end of file
index e966ab7..b7853bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06b2=['fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','multer','util','path','connect-timeout','express'];(function(_0x1679e8,_0x427dad){var _0xcb8835=function(_0x4748db){while(--_0x4748db){_0x1679e8['push'](_0x1679e8['shift']());}};_0xcb8835(++_0x427dad);}(_0x06b2,0x199));var _0x206b=function(_0x5c85fc,_0x244d57){_0x5c85fc=_0x5c85fc-0x0;var _0x453bd0=_0x06b2[_0x5c85fc];return _0x453bd0;};'use strict';var multer=require(_0x206b('0x0'));var util=require(_0x206b('0x1'));var path=require(_0x206b('0x2'));var timeout=require(_0x206b('0x3'));var express=require(_0x206b('0x4'));var router=express['Router']();var fs_extra=require(_0x206b('0x5'));var auth=require(_0x206b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x206b('0x7'));var controller=require(_0x206b('0x8'));router[_0x206b('0x9')]('/',auth[_0x206b('0xa')](),controller[_0x206b('0xb')]);router[_0x206b('0x9')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller[_0x206b('0xd')]);router[_0x206b('0xe')]('/',auth['isAuthenticated'](),controller[_0x206b('0xf')]);router[_0x206b('0x10')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller['update']);router[_0x206b('0x11')](_0x206b('0xc'),auth[_0x206b('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5e6f=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2a0739,_0x148e11){var _0x2c0f19=function(_0x2b2267){while(--_0x2b2267){_0x2a0739['push'](_0x2a0739['shift']());}};_0x2c0f19(++_0x148e11);}(_0x5e6f,0xb9));var _0xf5e6=function(_0xffc56b,_0x5caa71){_0xffc56b=_0xffc56b-0x0;var _0xa0731b=_0x5e6f[_0xffc56b];return _0xa0731b;};'use strict';var multer=require(_0xf5e6('0x0'));var util=require(_0xf5e6('0x1'));var path=require(_0xf5e6('0x2'));var timeout=require(_0xf5e6('0x3'));var express=require(_0xf5e6('0x4'));var router=express[_0xf5e6('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf5e6('0x6'));var interaction=require(_0xf5e6('0x7'));var config=require(_0xf5e6('0x8'));var controller=require(_0xf5e6('0x9'));router[_0xf5e6('0xa')]('/',auth[_0xf5e6('0xb')](),controller[_0xf5e6('0xc')]);router['get'](_0xf5e6('0xd'),auth[_0xf5e6('0xb')](),controller[_0xf5e6('0xe')]);router[_0xf5e6('0xf')]('/',auth[_0xf5e6('0xb')](),controller['create']);router[_0xf5e6('0x10')](_0xf5e6('0xd'),auth[_0xf5e6('0xb')](),controller[_0xf5e6('0x11')]);router[_0xf5e6('0x12')]('/:id',auth[_0xf5e6('0xb')](),controller[_0xf5e6('0x13')]);module[_0xf5e6('0x14')]=router;
\ No newline at end of file
index cf8af89..d689b98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96ce=['sequelize','exports','string','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0x460ea3,_0x42970b){var _0x1b6b53=function(_0x2a6476){while(--_0x2a6476){_0x460ea3['push'](_0x460ea3['shift']());}};_0x1b6b53(++_0x42970b);}(_0x96ce,0xd0));var _0xe96c=function(_0x5398db,_0xd69970){_0x5398db=_0x5398db-0x0;var _0x7aeb65=_0x96ce[_0x5398db];return _0x7aeb65;};'use strict';var Sequelize=require(_0xe96c('0x0'));module[_0xe96c('0x1')]={'type':{'type':Sequelize['ENUM'](_0xe96c('0x2'),_0xe96c('0x3'),_0xe96c('0x4'),'keyValue',_0xe96c('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xe96c('0x6')]},'key':{'type':Sequelize[_0xe96c('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xe96c('0x2'),_0xe96c('0x3'),_0xe96c('0x4'))},'keyContent':{'type':Sequelize[_0xe96c('0x6')]},'idField':{'type':Sequelize[_0xe96c('0x6')]},'nameField':{'type':Sequelize[_0xe96c('0x6')]},'customField':{'type':Sequelize[_0xe96c('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe96c('0x6')]}};
\ No newline at end of file
+var _0x6b79=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x3e3547,_0x5df323){var _0x7186d5=function(_0x4accd5){while(--_0x4accd5){_0x3e3547['push'](_0x3e3547['shift']());}};_0x7186d5(++_0x5df323);}(_0x6b79,0x1ed));var _0x96b7=function(_0x3d848f,_0x51d2aa){_0x3d848f=_0x3d848f-0x0;var _0x1313a3=_0x6b79[_0x3d848f];return _0x1313a3;};'use strict';var Sequelize=require(_0x96b7('0x0'));module[_0x96b7('0x1')]={'type':{'type':Sequelize[_0x96b7('0x2')](_0x96b7('0x3'),_0x96b7('0x4'),_0x96b7('0x5'),_0x96b7('0x6'),_0x96b7('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x96b7('0x8')]},'key':{'type':Sequelize[_0x96b7('0x8')]},'keyType':{'type':Sequelize[_0x96b7('0x2')](_0x96b7('0x3'),_0x96b7('0x4'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x96b7('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x96b7('0x8')]}};
\ No newline at end of file
index 01eaa8c..8147aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb07d=['destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','count','offset','set','Content-Range','reject','save','update','then','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','limit','order','sort','pick','filter','where','VIRTUAL','options','ZohoField','include','findAll','rows','catch','find','create','body','params'];(function(_0x3fd9ee,_0x3daaed){var _0x18f9e4=function(_0x28df2b){while(--_0x28df2b){_0x3fd9ee['push'](_0x3fd9ee['shift']());}};_0x18f9e4(++_0x3daaed);}(_0xb07d,0x85));var _0xdb07=function(_0x2a5f96,_0x576abb){_0x2a5f96=_0x2a5f96-0x0;var _0x49dc1e=_0xb07d[_0x2a5f96];return _0x49dc1e;};'use strict';var emlformat=require(_0xdb07('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdb07('0x1'));var jsonpatch=require(_0xdb07('0x2'));var rp=require(_0xdb07('0x3'));var moment=require(_0xdb07('0x4'));var BPromise=require(_0xdb07('0x5'));var Mustache=require(_0xdb07('0x6'));var util=require(_0xdb07('0x7'));var path=require('path');var sox=require(_0xdb07('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb07('0x9'));var _=require(_0xdb07('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdb07('0xb'));var Redis=require(_0xdb07('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xdb07('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdb07('0xe'));var logger=require('../../config/logger')(_0xdb07('0xf'));var utils=require(_0xdb07('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xdb07('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x636768,_0x17831e){_0x17831e=_0x17831e||0xcc;return function(_0xea1944){if(_0xea1944){return _0x636768[_0xdb07('0x12')](_0x17831e);}return _0x636768['status'](_0x17831e)['end']();};}function respondWithResult(_0x58d54e,_0x5a531b){_0x5a531b=_0x5a531b||0xc8;return function(_0xca9bff){if(_0xca9bff){return _0x58d54e[_0xdb07('0x13')](_0x5a531b)[_0xdb07('0x14')](_0xca9bff);}};}function respondWithFilteredResult(_0x19ea1c,_0xb7a16c){return function(_0x47f509){if(_0x47f509){var _0x2ebbb6=typeof _0xb7a16c['offset']===_0xdb07('0x15')&&typeof _0xb7a16c['limit']===_0xdb07('0x15');var _0x2e2cf5=_0x47f509[_0xdb07('0x16')];var _0x307c73=_0x2ebbb6?0x0:_0xb7a16c[_0xdb07('0x17')];var _0x90a095=_0x2ebbb6?_0x47f509[_0xdb07('0x16')]:_0xb7a16c[_0xdb07('0x17')]+_0xb7a16c['limit'];var _0xe7d8ba;if(_0x90a095>=_0x2e2cf5){_0x90a095=_0x2e2cf5;_0xe7d8ba=0xc8;}else{_0xe7d8ba=0xce;}_0x19ea1c[_0xdb07('0x13')](_0xe7d8ba);return _0x19ea1c[_0xdb07('0x18')](_0xdb07('0x19'),_0x307c73+'-'+_0x90a095+'/'+_0x2e2cf5)[_0xdb07('0x14')](_0x47f509);}return null;};}function patchUpdates(_0x59f706){return function(_0x14b3dc){try{jsonpatch['apply'](_0x14b3dc,_0x59f706,!![]);}catch(_0x124b01){return BPromise[_0xdb07('0x1a')](_0x124b01);}return _0x14b3dc[_0xdb07('0x1b')]();};}function saveUpdates(_0x15bb67,_0x1f50d4){return function(_0x465788){if(_0x465788){return _0x465788[_0xdb07('0x1c')](_0x15bb67)[_0xdb07('0x1d')](function(_0x407afc){return _0x407afc;});}return null;};}function removeEntity(_0x58b8b9,_0x4e42aa){return function(_0x74d453){if(_0x74d453){return _0x74d453['destroy']()['then'](function(){_0x58b8b9[_0xdb07('0x13')](0xcc)[_0xdb07('0x1e')]();});}};}function handleEntityNotFound(_0x12c0e0,_0x51f2e3){return function(_0x1d9c4c){if(!_0x1d9c4c){_0x12c0e0[_0xdb07('0x12')](0x194);}return _0x1d9c4c;};}function handleError(_0x21846a,_0x41c42c){_0x41c42c=_0x41c42c||0x1f4;return function(_0x3f1f99){logger[_0xdb07('0x1f')](_0x3f1f99[_0xdb07('0x20')]);if(_0x3f1f99[_0xdb07('0x21')]){delete _0x3f1f99['name'];}_0x21846a[_0xdb07('0x13')](_0x41c42c)[_0xdb07('0x22')](_0x3f1f99);};}exports[_0xdb07('0x23')]=function(_0x22ccb2,_0x48cc3e){var _0x32ee73={},_0x3c2320={},_0x4657a0={'count':0x0,'rows':[]};var _0x35e797=_[_0xdb07('0x24')](db['ZohoField'][_0xdb07('0x25')],function(_0x3b8143){return{'name':_0x3b8143['fieldName'],'type':_0x3b8143[_0xdb07('0x26')][_0xdb07('0x27')]};});_0x3c2320[_0xdb07('0x28')]=_[_0xdb07('0x24')](_0x35e797,_0xdb07('0x21'));_0x3c2320[_0xdb07('0x29')]=_[_0xdb07('0x2a')](_0x22ccb2[_0xdb07('0x29')]);_0x3c2320[_0xdb07('0x2b')]=_['intersection'](_0x3c2320[_0xdb07('0x28')],_0x3c2320['query']);_0x32ee73[_0xdb07('0x2c')]=_[_0xdb07('0x2d')](_0x3c2320[_0xdb07('0x28')],qs[_0xdb07('0x2e')](_0x22ccb2['query'][_0xdb07('0x2e')]));_0x32ee73[_0xdb07('0x2c')]=_0x32ee73[_0xdb07('0x2c')][_0xdb07('0x2f')]?_0x32ee73['attributes']:_0x3c2320[_0xdb07('0x28')];if(!_0x22ccb2[_0xdb07('0x29')]['hasOwnProperty']('nolimit')){_0x32ee73['limit']=qs[_0xdb07('0x30')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x30')]);_0x32ee73[_0xdb07('0x17')]=qs[_0xdb07('0x17')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x17')]);}_0x32ee73[_0xdb07('0x31')]=qs[_0xdb07('0x32')](_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x32')]);_0x32ee73['where']=qs[_0xdb07('0x2b')](_[_0xdb07('0x33')](_0x22ccb2[_0xdb07('0x29')],_0x3c2320[_0xdb07('0x2b')]),_0x35e797);if(_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x34')]){_0x32ee73['where']=_['merge'](_0x32ee73[_0xdb07('0x35')],{'$or':_['map'](_0x35e797,function(_0x3f0b4f){if(_0x3f0b4f['type']!==_0xdb07('0x36')){var _0x12e54c={};_0x12e54c[_0x3f0b4f['name']]={'$like':'%'+_0x22ccb2[_0xdb07('0x29')][_0xdb07('0x34')]+'%'};return _0x12e54c;}})});}_0x32ee73=_['merge']({},_0x32ee73,_0x22ccb2[_0xdb07('0x37')]);var _0x1e26a5={'where':_0x32ee73[_0xdb07('0x35')]};return db[_0xdb07('0x38')][_0xdb07('0x16')](_0x1e26a5)[_0xdb07('0x1d')](function(_0x4729bc){_0x4657a0[_0xdb07('0x16')]=_0x4729bc;if(_0x22ccb2[_0xdb07('0x29')]['includeAll']){_0x32ee73[_0xdb07('0x39')]=[{'all':!![]}];}return db[_0xdb07('0x38')][_0xdb07('0x3a')](_0x32ee73);})[_0xdb07('0x1d')](function(_0x32216c){_0x4657a0[_0xdb07('0x3b')]=_0x32216c;return _0x4657a0;})[_0xdb07('0x1d')](respondWithFilteredResult(_0x48cc3e,_0x32ee73))[_0xdb07('0x3c')](handleError(_0x48cc3e,null));};exports['show']=function(_0x46ffe5,_0x1451f2){var _0x27ccd4={'raw':!![],'where':{'id':_0x46ffe5['params']['id']}},_0xa6c84a={};_0xa6c84a[_0xdb07('0x28')]=_[_0xdb07('0x2a')](db['ZohoField']['rawAttributes']);_0xa6c84a['query']=_[_0xdb07('0x2a')](_0x46ffe5[_0xdb07('0x29')]);_0xa6c84a['filters']=_['intersection'](_0xa6c84a['model'],_0xa6c84a[_0xdb07('0x29')]);_0x27ccd4['attributes']=_['intersection'](_0xa6c84a[_0xdb07('0x28')],qs[_0xdb07('0x2e')](_0x46ffe5[_0xdb07('0x29')][_0xdb07('0x2e')]));_0x27ccd4[_0xdb07('0x2c')]=_0x27ccd4['attributes']['length']?_0x27ccd4[_0xdb07('0x2c')]:_0xa6c84a[_0xdb07('0x28')];if(_0x46ffe5[_0xdb07('0x29')]['includeAll']){_0x27ccd4[_0xdb07('0x39')]=[{'all':!![]}];}_0x27ccd4=_['merge']({},_0x27ccd4,_0x46ffe5['options']);return db[_0xdb07('0x38')][_0xdb07('0x3d')](_0x27ccd4)[_0xdb07('0x1d')](handleEntityNotFound(_0x1451f2,null))[_0xdb07('0x1d')](respondWithResult(_0x1451f2,null))['catch'](handleError(_0x1451f2,null));};exports['create']=function(_0x38bca4,_0x376ca1){return db[_0xdb07('0x38')][_0xdb07('0x3e')](_0x38bca4['body'],{})[_0xdb07('0x1d')](respondWithResult(_0x376ca1,0xc9))[_0xdb07('0x3c')](handleError(_0x376ca1,null));};exports[_0xdb07('0x1c')]=function(_0x14c276,_0x5493f0){if(_0x14c276[_0xdb07('0x3f')]['id']){delete _0x14c276[_0xdb07('0x3f')]['id'];}return db[_0xdb07('0x38')][_0xdb07('0x3d')]({'where':{'id':_0x14c276[_0xdb07('0x40')]['id']}})['then'](handleEntityNotFound(_0x5493f0,null))[_0xdb07('0x1d')](saveUpdates(_0x14c276[_0xdb07('0x3f')],null))[_0xdb07('0x1d')](respondWithResult(_0x5493f0,null))[_0xdb07('0x3c')](handleError(_0x5493f0,null));};exports[_0xdb07('0x41')]=function(_0x16e4ff,_0x7af4a4){return db[_0xdb07('0x38')]['find']({'where':{'id':_0x16e4ff[_0xdb07('0x40')]['id']}})['then'](handleEntityNotFound(_0x7af4a4,null))[_0xdb07('0x1d')](removeEntity(_0x7af4a4,null))[_0xdb07('0x3c')](handleError(_0x7af4a4,null));};
\ No newline at end of file
+var _0xbfba=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','index','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis'];(function(_0x220ca2,_0x4617f0){var _0x3acd14=function(_0x10e884){while(--_0x10e884){_0x220ca2['push'](_0x220ca2['shift']());}};_0x3acd14(++_0x4617f0);}(_0xbfba,0x1ac));var _0xabfb=function(_0x4dc20e,_0x104524){_0x4dc20e=_0x4dc20e-0x0;var _0x61d20e=_0xbfba[_0x4dc20e];return _0x61d20e;};'use strict';var emlformat=require(_0xabfb('0x0'));var rimraf=require(_0xabfb('0x1'));var zipdir=require(_0xabfb('0x2'));var jsonpatch=require(_0xabfb('0x3'));var rp=require(_0xabfb('0x4'));var moment=require(_0xabfb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xabfb('0x6'));var util=require('util');var path=require(_0xabfb('0x7'));var sox=require(_0xabfb('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(_0xabfb('0x9'));var crypto=require(_0xabfb('0xa'));var jsforce=require(_0xabfb('0xb'));var deskjs=require(_0xabfb('0xc'));var toCsv=require(_0xabfb('0xd'));var querystring=require('querystring');var Papa=require(_0xabfb('0xe'));var Redis=require(_0xabfb('0xf'));var authService=require(_0xabfb('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xabfb('0x11'));var hardwareService=require(_0xabfb('0x12'));var logger=require(_0xabfb('0x13'))(_0xabfb('0x14'));var utils=require('../../config/utils');var config=require(_0xabfb('0x15'));var licenseUtil=require(_0xabfb('0x16'));var db=require(_0xabfb('0x17'))['db'];function respondWithStatusCode(_0x4d6889,_0x43cd3d){_0x43cd3d=_0x43cd3d||0xcc;return function(_0xc56c9){if(_0xc56c9){return _0x4d6889[_0xabfb('0x18')](_0x43cd3d);}return _0x4d6889['status'](_0x43cd3d)[_0xabfb('0x19')]();};}function respondWithResult(_0x4f9d37,_0x4f22fc){_0x4f22fc=_0x4f22fc||0xc8;return function(_0x256502){if(_0x256502){return _0x4f9d37[_0xabfb('0x1a')](_0x4f22fc)[_0xabfb('0x1b')](_0x256502);}};}function respondWithFilteredResult(_0x54e13b,_0x31b758){return function(_0x1b1d76){if(_0x1b1d76){var _0x2e42d2=typeof _0x31b758[_0xabfb('0x1c')]===_0xabfb('0x1d')&&typeof _0x31b758[_0xabfb('0x1e')]===_0xabfb('0x1d');var _0x5c6f4c=_0x1b1d76[_0xabfb('0x1f')];var _0x17791f=_0x2e42d2?0x0:_0x31b758['offset'];var _0x472440=_0x2e42d2?_0x1b1d76['count']:_0x31b758['offset']+_0x31b758[_0xabfb('0x1e')];var _0x1dd60e;if(_0x472440>=_0x5c6f4c){_0x472440=_0x5c6f4c;_0x1dd60e=0xc8;}else{_0x1dd60e=0xce;}_0x54e13b[_0xabfb('0x1a')](_0x1dd60e);return _0x54e13b['set']('Content-Range',_0x17791f+'-'+_0x472440+'/'+_0x5c6f4c)[_0xabfb('0x1b')](_0x1b1d76);}return null;};}function patchUpdates(_0x4abf11){return function(_0x191567){try{jsonpatch[_0xabfb('0x20')](_0x191567,_0x4abf11,!![]);}catch(_0x4c983f){return BPromise[_0xabfb('0x21')](_0x4c983f);}return _0x191567[_0xabfb('0x22')]();};}function saveUpdates(_0x3fb16b,_0x21b752){return function(_0x4aaf1f){if(_0x4aaf1f){return _0x4aaf1f[_0xabfb('0x23')](_0x3fb16b)[_0xabfb('0x24')](function(_0x5ecc0c){return _0x5ecc0c;});}return null;};}function removeEntity(_0x51c249,_0x819016){return function(_0xbb4167){if(_0xbb4167){return _0xbb4167[_0xabfb('0x25')]()[_0xabfb('0x24')](function(){_0x51c249[_0xabfb('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5777e1,_0x4c952e){return function(_0x52fc24){if(!_0x52fc24){_0x5777e1[_0xabfb('0x18')](0x194);}return _0x52fc24;};}function handleError(_0xbb3828,_0x4eda52){_0x4eda52=_0x4eda52||0x1f4;return function(_0x1b5d03){logger[_0xabfb('0x26')](_0x1b5d03[_0xabfb('0x27')]);if(_0x1b5d03[_0xabfb('0x28')]){delete _0x1b5d03['name'];}_0xbb3828[_0xabfb('0x1a')](_0x4eda52)['send'](_0x1b5d03);};}exports[_0xabfb('0x29')]=function(_0x342f11,_0x39f5bd){var _0x1b4e6c={},_0x26818f={},_0x2ebe4b={'count':0x0,'rows':[]};var _0x2f4e12=_[_0xabfb('0x2a')](db[_0xabfb('0x2b')][_0xabfb('0x2c')],function(_0x2ea471){return{'name':_0x2ea471[_0xabfb('0x2d')],'type':_0x2ea471[_0xabfb('0x2e')][_0xabfb('0x2f')]};});_0x26818f[_0xabfb('0x30')]=_[_0xabfb('0x2a')](_0x2f4e12,_0xabfb('0x28'));_0x26818f[_0xabfb('0x31')]=_[_0xabfb('0x32')](_0x342f11[_0xabfb('0x31')]);_0x26818f[_0xabfb('0x33')]=_[_0xabfb('0x34')](_0x26818f[_0xabfb('0x30')],_0x26818f[_0xabfb('0x31')]);_0x1b4e6c['attributes']=_[_0xabfb('0x34')](_0x26818f['model'],qs[_0xabfb('0x35')](_0x342f11[_0xabfb('0x31')]['fields']));_0x1b4e6c[_0xabfb('0x36')]=_0x1b4e6c[_0xabfb('0x36')][_0xabfb('0x37')]?_0x1b4e6c['attributes']:_0x26818f[_0xabfb('0x30')];if(!_0x342f11[_0xabfb('0x31')][_0xabfb('0x38')](_0xabfb('0x39'))){_0x1b4e6c['limit']=qs['limit'](_0x342f11[_0xabfb('0x31')]['limit']);_0x1b4e6c[_0xabfb('0x1c')]=qs[_0xabfb('0x1c')](_0x342f11[_0xabfb('0x31')]['offset']);}_0x1b4e6c[_0xabfb('0x3a')]=qs[_0xabfb('0x3b')](_0x342f11['query'][_0xabfb('0x3b')]);_0x1b4e6c[_0xabfb('0x3c')]=qs[_0xabfb('0x33')](_[_0xabfb('0x3d')](_0x342f11['query'],_0x26818f[_0xabfb('0x33')]),_0x2f4e12);if(_0x342f11[_0xabfb('0x31')][_0xabfb('0x3e')]){_0x1b4e6c[_0xabfb('0x3c')]=_[_0xabfb('0x3f')](_0x1b4e6c[_0xabfb('0x3c')],{'$or':_[_0xabfb('0x2a')](_0x2f4e12,function(_0x51d953){if(_0x51d953[_0xabfb('0x2e')]!=='VIRTUAL'){var _0x243573={};_0x243573[_0x51d953[_0xabfb('0x28')]]={'$like':'%'+_0x342f11[_0xabfb('0x31')][_0xabfb('0x3e')]+'%'};return _0x243573;}})});}_0x1b4e6c=_[_0xabfb('0x3f')]({},_0x1b4e6c,_0x342f11[_0xabfb('0x40')]);var _0x230373={'where':_0x1b4e6c['where']};return db['ZohoField'][_0xabfb('0x1f')](_0x230373)[_0xabfb('0x24')](function(_0x4b2198){_0x2ebe4b[_0xabfb('0x1f')]=_0x4b2198;if(_0x342f11['query']['includeAll']){_0x1b4e6c['include']=[{'all':!![]}];}return db[_0xabfb('0x2b')][_0xabfb('0x41')](_0x1b4e6c);})['then'](function(_0x127f12){_0x2ebe4b[_0xabfb('0x42')]=_0x127f12;return _0x2ebe4b;})[_0xabfb('0x24')](respondWithFilteredResult(_0x39f5bd,_0x1b4e6c))[_0xabfb('0x43')](handleError(_0x39f5bd,null));};exports[_0xabfb('0x44')]=function(_0x53fd56,_0x13fa55){var _0x17b2ae={'raw':!![],'where':{'id':_0x53fd56[_0xabfb('0x45')]['id']}},_0x4a009f={};_0x4a009f[_0xabfb('0x30')]=_[_0xabfb('0x32')](db[_0xabfb('0x2b')][_0xabfb('0x2c')]);_0x4a009f[_0xabfb('0x31')]=_[_0xabfb('0x32')](_0x53fd56['query']);_0x4a009f[_0xabfb('0x33')]=_[_0xabfb('0x34')](_0x4a009f['model'],_0x4a009f['query']);_0x17b2ae['attributes']=_[_0xabfb('0x34')](_0x4a009f['model'],qs[_0xabfb('0x35')](_0x53fd56[_0xabfb('0x31')]['fields']));_0x17b2ae[_0xabfb('0x36')]=_0x17b2ae[_0xabfb('0x36')][_0xabfb('0x37')]?_0x17b2ae[_0xabfb('0x36')]:_0x4a009f[_0xabfb('0x30')];if(_0x53fd56[_0xabfb('0x31')][_0xabfb('0x46')]){_0x17b2ae['include']=[{'all':!![]}];}_0x17b2ae=_[_0xabfb('0x3f')]({},_0x17b2ae,_0x53fd56[_0xabfb('0x40')]);return db['ZohoField'][_0xabfb('0x47')](_0x17b2ae)[_0xabfb('0x24')](handleEntityNotFound(_0x13fa55,null))[_0xabfb('0x24')](respondWithResult(_0x13fa55,null))['catch'](handleError(_0x13fa55,null));};exports[_0xabfb('0x48')]=function(_0x382694,_0x29efe1){return db[_0xabfb('0x2b')]['create'](_0x382694['body'],{})['then'](respondWithResult(_0x29efe1,0xc9))[_0xabfb('0x43')](handleError(_0x29efe1,null));};exports['update']=function(_0x50421e,_0x58c269){if(_0x50421e['body']['id']){delete _0x50421e[_0xabfb('0x49')]['id'];}return db[_0xabfb('0x2b')][_0xabfb('0x47')]({'where':{'id':_0x50421e['params']['id']}})[_0xabfb('0x24')](handleEntityNotFound(_0x58c269,null))[_0xabfb('0x24')](saveUpdates(_0x50421e['body'],null))[_0xabfb('0x24')](respondWithResult(_0x58c269,null))['catch'](handleError(_0x58c269,null));};exports[_0xabfb('0x25')]=function(_0x4c02e6,_0xfed89c){return db['ZohoField'][_0xabfb('0x47')]({'where':{'id':_0x4c02e6[_0xabfb('0x45')]['id']}})['then'](handleEntityNotFound(_0xfed89c,null))[_0xabfb('0x24')](removeEntity(_0xfed89c,null))[_0xabfb('0x43')](handleError(_0xfed89c,null));};
\ No newline at end of file
index 1dec7d4..d95d886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x781d,0x14a));var _0xd781=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x781d[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd781('0x2'));var BPromise=require(_0xd781('0x3'));var rp=require(_0xd781('0x4'));var fs=require('fs');var path=require(_0xd781('0x5'));var rimraf=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var attributes=require(_0xd781('0x8'));module[_0xd781('0x9')]=function(_0x830b,_0x2f98ee){return _0x830b['define'](_0xd781('0xa'),attributes,{'tableName':_0xd781('0xb'),'paranoid':![],'indexes':[{'name':_0xd781('0xc'),'fields':[_0xd781('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33af=['moment','bluebird','request-promise','path','rimraf','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','util','api'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x33af,0xec));var _0xf33a=function(_0x2e6c75,_0x1bdbb7){_0x2e6c75=_0x2e6c75-0x0;var _0x13a9ea=_0x33af[_0x2e6c75];return _0x13a9ea;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var logger=require('../../config/logger')(_0xf33a('0x1'));var moment=require(_0xf33a('0x2'));var BPromise=require(_0xf33a('0x3'));var rp=require(_0xf33a('0x4'));var fs=require('fs');var path=require(_0xf33a('0x5'));var rimraf=require(_0xf33a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf33a('0x7'));module[_0xf33a('0x8')]=function(_0x583e54,_0xc0dd13){return _0x583e54[_0xf33a('0x9')](_0xf33a('0xa'),attributes,{'tableName':_0xf33a('0xb'),'paranoid':![],'indexes':[{'name':_0xf33a('0xc'),'fields':[_0xf33a('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 813dcae..9b41327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c2e=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x41527f,_0x1ee91a){var _0x973122=function(_0x458855){while(--_0x458855){_0x41527f['push'](_0x41527f['shift']());}};_0x973122(++_0x1ee91a);}(_0x5c2e,0x10a));var _0xe5c2=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x5c2e[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xe5c2('0x0'));var util=require(_0xe5c2('0x1'));var moment=require(_0xe5c2('0x2'));var BPromise=require(_0xe5c2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe5c2('0x4'));var db=require(_0xe5c2('0x5'))['db'];var utils=require(_0xe5c2('0x6'));var logger=require('../../config/logger')(_0xe5c2('0x7'));var config=require(_0xe5c2('0x8'));var jayson=require(_0xe5c2('0x9'));var client=jayson[_0xe5c2('0xa')][_0xe5c2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5999be,_0x1d04b7,_0x122535){return new BPromise(function(_0x17f64b,_0x36c9bf){return client['request'](_0x5999be,_0x122535)[_0xe5c2('0xc')](function(_0xde7136){logger[_0xe5c2('0xd')](_0xe5c2('0xe'),_0x1d04b7,_0xe5c2('0xf'));logger[_0xe5c2('0x10')](_0xe5c2('0x11'),_0x1d04b7,'request\x20sent',JSON[_0xe5c2('0x12')](_0xde7136));if(_0xde7136[_0xe5c2('0x13')]){if(_0xde7136['error'][_0xe5c2('0x14')]===0x1f4){logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0xde7136['error'][_0xe5c2('0x15')]);return _0x36c9bf(_0xde7136['error'][_0xe5c2('0x15')]);}logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0xde7136[_0xe5c2('0x13')][_0xe5c2('0x15')]);return _0x17f64b(_0xde7136['error'][_0xe5c2('0x15')]);}else{logger[_0xe5c2('0xd')](_0xe5c2('0xe'),_0x1d04b7,_0xe5c2('0xf'));_0x17f64b(_0xde7136[_0xe5c2('0x16')]['message']);}})[_0xe5c2('0x17')](function(_0x4f3991){logger[_0xe5c2('0x13')](_0xe5c2('0xe'),_0x1d04b7,_0x4f3991);_0x36c9bf(_0x4f3991);});});}
\ No newline at end of file
+var _0x3641=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','jayson/promise','client','http','then','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoField,\x20%s,\x20%s','message'];(function(_0x76dd6e,_0x14dd80){var _0x35fb11=function(_0x493aaf){while(--_0x493aaf){_0x76dd6e['push'](_0x76dd6e['shift']());}};_0x35fb11(++_0x14dd80);}(_0x3641,0x1cd));var _0x1364=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3641[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1364('0x0'));var util=require(_0x1364('0x1'));var moment=require(_0x1364('0x2'));var BPromise=require(_0x1364('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1364('0x4'));var db=require(_0x1364('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1364('0x6'));var config=require('../../config/environment');var jayson=require(_0x1364('0x7'));var client=jayson[_0x1364('0x8')][_0x1364('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3a3c17,_0x4b5258,_0x29c91b){return new BPromise(function(_0x445286,_0x4bdda3){return client['request'](_0x3a3c17,_0x29c91b)[_0x1364('0xa')](function(_0x1a9d98){logger['info']('ZohoField,\x20%s,\x20%s',_0x4b5258,_0x1364('0xb'));logger[_0x1364('0xc')](_0x1364('0xd'),_0x4b5258,_0x1364('0xb'),JSON[_0x1364('0xe')](_0x1a9d98));if(_0x1a9d98[_0x1364('0xf')]){if(_0x1a9d98[_0x1364('0xf')][_0x1364('0x10')]===0x1f4){logger['error'](_0x1364('0x11'),_0x4b5258,_0x1a9d98[_0x1364('0xf')][_0x1364('0x12')]);return _0x4bdda3(_0x1a9d98[_0x1364('0xf')]['message']);}logger[_0x1364('0xf')](_0x1364('0x11'),_0x4b5258,_0x1a9d98[_0x1364('0xf')][_0x1364('0x12')]);return _0x445286(_0x1a9d98['error'][_0x1364('0x12')]);}else{logger['info'](_0x1364('0x11'),_0x4b5258,_0x1364('0xb'));_0x445286(_0x1a9d98['result'][_0x1364('0x12')]);}})[_0x1364('0x13')](function(_0x1d0a52){logger[_0x1364('0xf')](_0x1364('0x11'),_0x4b5258,_0x1d0a52);_0x4bdda3(_0x1d0a52);});});}
\ No newline at end of file
index 3096f4c..bb3e293 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(_0x5350c2,_0x3bb595){var _0x1bc271=function(_0x10ae1e){while(--_0x10ae1e){_0x5350c2['push'](_0x5350c2['shift']());}};_0x1bc271(++_0x3bb595);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x11574c,_0x4a20c8){var _0x73c2ed=function(_0x5d2efb){while(--_0x5d2efb){_0x11574c['push'](_0x11574c['shift']());}};_0x73c2ed(++_0x4a20c8);}(_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 22a9550..45687f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fcc=['STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state','sequelize','exports'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x9fcc,0x146));var _0xc9fc=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9fcc[_0x4b055c];return _0x4b62bb;};'use strict';var Sequelize=require(_0xc9fc('0x0'));module[_0xc9fc('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xc9fc('0x2')],'allowNull':![],'unique':_0xc9fc('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':_0xc9fc('0x4')},'filename':{'type':Sequelize[_0xc9fc('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc9fc('0x2')]},'size':{'type':Sequelize[_0xc9fc('0x5')]},'active':{'type':Sequelize[_0xc9fc('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xc9fc('0x2')]},'logo':{'type':Sequelize[_0xc9fc('0x2')]},'state':{'type':Sequelize[_0xc9fc('0x2')],'unique':_0xc9fc('0x7')},'description':{'type':Sequelize[_0xc9fc('0x2')]},'title':{'type':Sequelize[_0xc9fc('0x2')]},'remoteUri':{'type':Sequelize[_0xc9fc('0x2')]},'link':{'type':Sequelize[_0xc9fc('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x6aff=['exports','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state'];(function(_0x3c1a81,_0x1b80fc){var _0x5e845b=function(_0x10bd4a){while(--_0x10bd4a){_0x3c1a81['push'](_0x3c1a81['shift']());}};_0x5e845b(++_0x1b80fc);}(_0x6aff,0x15e));var _0xf6af=function(_0x575010,_0x5931ae){_0x575010=_0x575010-0x0;var _0x1bc2c1=_0x6aff[_0x575010];return _0x1bc2c1;};'use strict';var Sequelize=require('sequelize');module[_0xf6af('0x0')]={'name':{'type':Sequelize[_0xf6af('0x1')],'allowNull':![],'unique':_0xf6af('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf6af('0x2')},'main':{'type':Sequelize[_0xf6af('0x1')],'defaultValue':_0xf6af('0x3')},'filename':{'type':Sequelize[_0xf6af('0x1')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xf6af('0x4')]},'active':{'type':Sequelize[_0xf6af('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xf6af('0x1')]},'logo':{'type':Sequelize[_0xf6af('0x1')]},'state':{'type':Sequelize[_0xf6af('0x1')],'unique':_0xf6af('0x6')},'description':{'type':Sequelize[_0xf6af('0x1')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xf6af('0x1')]},'link':{'type':Sequelize[_0xf6af('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index a36b201..0daaeff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','params','Integration','find','catch','create','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end'];(function(_0x5a50d0,_0x2508cf){var _0x42741b=function(_0x3e8a30){while(--_0x3e8a30){_0x5a50d0['push'](_0x5a50d0['shift']());}};_0x42741b(++_0x2508cf);}(_0x7096,0x10c));var _0x6709=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x7096[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6709('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6709('0x1'));var rp=require('request-promise');var moment=require(_0x6709('0x2'));var BPromise=require(_0x6709('0x3'));var Mustache=require(_0x6709('0x4'));var util=require(_0x6709('0x5'));var path=require(_0x6709('0x6'));var sox=require(_0x6709('0x7'));var csv=require(_0x6709('0x8'));var ejs=require(_0x6709('0x9'));var fs=require('fs');var fs_extra=require(_0x6709('0xa'));var _=require(_0x6709('0xb'));var squel=require(_0x6709('0xc'));var crypto=require(_0x6709('0xd'));var jsforce=require(_0x6709('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6709('0xf'));var Papa=require(_0x6709('0x10'));var Redis=require(_0x6709('0x11'));var authService=require(_0x6709('0x12'));var qs=require(_0x6709('0x13'));var as=require(_0x6709('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6709('0x15'));var utils=require(_0x6709('0x16'));var config=require(_0x6709('0x17'));var licenseUtil=require(_0x6709('0x18'));var db=require(_0x6709('0x19'))['db'];function respondWithStatusCode(_0x288f51,_0x1d56a5){_0x1d56a5=_0x1d56a5||0xcc;return function(_0x1ac547){if(_0x1ac547){return _0x288f51['sendStatus'](_0x1d56a5);}return _0x288f51[_0x6709('0x1a')](_0x1d56a5)[_0x6709('0x1b')]();};}function respondWithResult(_0x4d5255,_0x3706e1){_0x3706e1=_0x3706e1||0xc8;return function(_0x4e4587){if(_0x4e4587){return _0x4d5255[_0x6709('0x1a')](_0x3706e1)['json'](_0x4e4587);}};}function respondWithFilteredResult(_0x41af1f,_0x4bc059){return function(_0x149233){if(_0x149233){var _0x28866a=typeof _0x4bc059[_0x6709('0x1c')]===_0x6709('0x1d')&&typeof _0x4bc059['limit']==='undefined';var _0x5c4f94=_0x149233[_0x6709('0x1e')];var _0x235a54=_0x28866a?0x0:_0x4bc059['offset'];var _0x9c1fd8=_0x28866a?_0x149233[_0x6709('0x1e')]:_0x4bc059[_0x6709('0x1c')]+_0x4bc059['limit'];var _0x13cf04;if(_0x9c1fd8>=_0x5c4f94){_0x9c1fd8=_0x5c4f94;_0x13cf04=0xc8;}else{_0x13cf04=0xce;}_0x41af1f[_0x6709('0x1a')](_0x13cf04);return _0x41af1f[_0x6709('0x1f')](_0x6709('0x20'),_0x235a54+'-'+_0x9c1fd8+'/'+_0x5c4f94)['json'](_0x149233);}return null;};}function patchUpdates(_0x3c4971){return function(_0x1edac3){try{jsonpatch[_0x6709('0x21')](_0x1edac3,_0x3c4971,!![]);}catch(_0x3cf882){return BPromise[_0x6709('0x22')](_0x3cf882);}return _0x1edac3[_0x6709('0x23')]();};}function saveUpdates(_0x45921e,_0x17763d){return function(_0x386224){if(_0x386224){return _0x386224[_0x6709('0x24')](_0x45921e)[_0x6709('0x25')](function(_0xa36371){return _0xa36371;});}return null;};}function removeEntity(_0x5cf48b,_0x29f25f){return function(_0x81138e){if(_0x81138e){return _0x81138e[_0x6709('0x26')]()['then'](function(){_0x5cf48b[_0x6709('0x1a')](0xcc)[_0x6709('0x1b')]();});}};}function handleEntityNotFound(_0x20a347,_0x44b465){return function(_0x588e00){if(!_0x588e00){_0x20a347[_0x6709('0x27')](0x194);}return _0x588e00;};}function handleError(_0x3076fe,_0x50f7d6){_0x50f7d6=_0x50f7d6||0x1f4;return function(_0x585073){logger[_0x6709('0x28')](_0x585073['stack']);if(_0x585073[_0x6709('0x29')]){delete _0x585073[_0x6709('0x29')];}_0x3076fe['status'](_0x50f7d6)[_0x6709('0x2a')](_0x585073);};}exports['index']=function(_0x46a325,_0x3cd555){var _0x5b6906={},_0x137137={},_0x4e6989={'count':0x0,'rows':[]};var _0xe066d8=_[_0x6709('0x2b')](db['Integration'][_0x6709('0x2c')],function(_0x5deff5){return{'name':_0x5deff5[_0x6709('0x2d')],'type':_0x5deff5[_0x6709('0x2e')]['key']};});_0x137137['model']=_[_0x6709('0x2b')](_0xe066d8,_0x6709('0x29'));_0x137137[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x46a325[_0x6709('0x2f')]);_0x137137[_0x6709('0x31')]=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],_0x137137[_0x6709('0x2f')]);_0x5b6906['attributes']=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],qs[_0x6709('0x34')](_0x46a325[_0x6709('0x2f')]['fields']));_0x5b6906[_0x6709('0x35')]=_0x5b6906[_0x6709('0x35')][_0x6709('0x36')]?_0x5b6906[_0x6709('0x35')]:_0x137137['model'];if(!_0x46a325[_0x6709('0x2f')][_0x6709('0x37')]('nolimit')){_0x5b6906[_0x6709('0x38')]=qs[_0x6709('0x38')](_0x46a325['query'][_0x6709('0x38')]);_0x5b6906[_0x6709('0x1c')]=qs[_0x6709('0x1c')](_0x46a325[_0x6709('0x2f')][_0x6709('0x1c')]);}_0x5b6906[_0x6709('0x39')]=qs[_0x6709('0x3a')](_0x46a325['query'][_0x6709('0x3a')]);_0x5b6906[_0x6709('0x3b')]=qs['filters'](_[_0x6709('0x3c')](_0x46a325[_0x6709('0x2f')],_0x137137[_0x6709('0x31')]),_0xe066d8);if(_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]){_0x5b6906[_0x6709('0x3b')]=_['merge'](_0x5b6906[_0x6709('0x3b')],{'$or':_['map'](_0xe066d8,function(_0x31e05a){if(_0x31e05a[_0x6709('0x2e')]!==_0x6709('0x3e')){var _0x48492f={};_0x48492f[_0x31e05a[_0x6709('0x29')]]={'$like':'%'+_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]+'%'};return _0x48492f;}})});}_0x5b6906=_[_0x6709('0x3f')]({},_0x5b6906,_0x46a325[_0x6709('0x40')]);var _0x1030ee={'where':_0x5b6906[_0x6709('0x3b')]};return db['Integration'][_0x6709('0x1e')](_0x1030ee)[_0x6709('0x25')](function(_0x50fbcd){_0x4e6989[_0x6709('0x1e')]=_0x50fbcd;if(_0x46a325[_0x6709('0x2f')][_0x6709('0x41')]){_0x5b6906[_0x6709('0x42')]=[{'all':!![]}];}return db['Integration']['findAll'](_0x5b6906);})[_0x6709('0x25')](function(_0x3f0da1){_0x4e6989[_0x6709('0x43')]=_0x3f0da1;return _0x4e6989;})[_0x6709('0x25')](respondWithFilteredResult(_0x3cd555,_0x5b6906))['catch'](handleError(_0x3cd555,null));};exports['show']=function(_0x5af1fb,_0x3d4237){var _0x293577={'raw':![],'where':{'id':_0x5af1fb[_0x6709('0x44')]['id']}},_0x54f74e={};_0x54f74e[_0x6709('0x33')]=_['keys'](db['Integration'][_0x6709('0x2c')]);_0x54f74e[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x5af1fb[_0x6709('0x2f')]);_0x54f74e[_0x6709('0x31')]=_['intersection'](_0x54f74e[_0x6709('0x33')],_0x54f74e['query']);_0x293577[_0x6709('0x35')]=_[_0x6709('0x32')](_0x54f74e[_0x6709('0x33')],qs['fields'](_0x5af1fb[_0x6709('0x2f')]['fields']));_0x293577['attributes']=_0x293577[_0x6709('0x35')][_0x6709('0x36')]?_0x293577[_0x6709('0x35')]:_0x54f74e[_0x6709('0x33')];if(_0x5af1fb[_0x6709('0x2f')][_0x6709('0x41')]){_0x293577[_0x6709('0x42')]=[{'all':!![]}];}_0x293577=_[_0x6709('0x3f')]({},_0x293577,_0x5af1fb[_0x6709('0x40')]);return db[_0x6709('0x45')][_0x6709('0x46')](_0x293577)[_0x6709('0x25')](handleEntityNotFound(_0x3d4237,null))[_0x6709('0x25')](respondWithResult(_0x3d4237,null))[_0x6709('0x47')](handleError(_0x3d4237,null));};exports[_0x6709('0x48')]=function(_0x4f82a0,_0xfbb810){return db['Integration']['create'](_0x4f82a0[_0x6709('0x49')],{})[_0x6709('0x25')](respondWithResult(_0xfbb810,0xc9))[_0x6709('0x47')](handleError(_0xfbb810,null));};exports[_0x6709('0x24')]=function(_0x22363b,_0x2b05dc){if(_0x22363b[_0x6709('0x49')]['id']){delete _0x22363b[_0x6709('0x49')]['id'];}return db['Integration'][_0x6709('0x46')]({'where':{'id':_0x22363b[_0x6709('0x44')]['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2b05dc,null))[_0x6709('0x25')](saveUpdates(_0x22363b['body'],null))[_0x6709('0x25')](respondWithResult(_0x2b05dc,null))['catch'](handleError(_0x2b05dc,null));};exports[_0x6709('0x26')]=function(_0x34a950,_0x2a563b){return db[_0x6709('0x45')][_0x6709('0x46')]({'where':{'id':_0x34a950['params']['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2a563b,null))[_0x6709('0x25')](removeEntity(_0x2a563b,null))[_0x6709('0x47')](handleError(_0x2a563b,null));};
\ No newline at end of file
+var _0x9536=['includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','length','options','find','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','error','stack','name','index','map','Integration','fieldName','model','query','keys','filters','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9536,0x179));var _0x6953=function(_0x4178af,_0x388652){_0x4178af=_0x4178af-0x0;var _0x20f4b1=_0x9536[_0x4178af];return _0x20f4b1;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x358388,_0x513dd0){_0x513dd0=_0x513dd0||0xcc;return function(_0x8de91e){if(_0x8de91e){return _0x358388[_0x6953('0x1a')](_0x513dd0);}return _0x358388[_0x6953('0x1b')](_0x513dd0)[_0x6953('0x1c')]();};}function respondWithResult(_0x1b5221,_0x244713){_0x244713=_0x244713||0xc8;return function(_0x175fa9){if(_0x175fa9){return _0x1b5221[_0x6953('0x1b')](_0x244713)[_0x6953('0x1d')](_0x175fa9);}};}function respondWithFilteredResult(_0x31d182,_0xae5515){return function(_0x548473){if(_0x548473){var _0x5f49db=typeof _0xae5515[_0x6953('0x1e')]===_0x6953('0x1f')&&typeof _0xae5515[_0x6953('0x20')]===_0x6953('0x1f');var _0x510d46=_0x548473[_0x6953('0x21')];var _0x2da771=_0x5f49db?0x0:_0xae5515['offset'];var _0x10858a=_0x5f49db?_0x548473[_0x6953('0x21')]:_0xae5515[_0x6953('0x1e')]+_0xae5515[_0x6953('0x20')];var _0xc714d3;if(_0x10858a>=_0x510d46){_0x10858a=_0x510d46;_0xc714d3=0xc8;}else{_0xc714d3=0xce;}_0x31d182['status'](_0xc714d3);return _0x31d182[_0x6953('0x22')](_0x6953('0x23'),_0x2da771+'-'+_0x10858a+'/'+_0x510d46)[_0x6953('0x1d')](_0x548473);}return null;};}function patchUpdates(_0x2ba433){return function(_0x41f021){try{jsonpatch['apply'](_0x41f021,_0x2ba433,!![]);}catch(_0xf96d07){return BPromise[_0x6953('0x24')](_0xf96d07);}return _0x41f021['save']();};}function saveUpdates(_0x317979,_0x40c9d1){return function(_0xb92529){if(_0xb92529){return _0xb92529[_0x6953('0x25')](_0x317979)['then'](function(_0x37f339){return _0x37f339;});}return null;};}function removeEntity(_0x231cb2,_0x2a7f6a){return function(_0x508ea7){if(_0x508ea7){return _0x508ea7['destroy']()['then'](function(){_0x231cb2[_0x6953('0x1b')](0xcc)[_0x6953('0x1c')]();});}};}function handleEntityNotFound(_0x550be4,_0x1a32f4){return function(_0x587df0){if(!_0x587df0){_0x550be4[_0x6953('0x1a')](0x194);}return _0x587df0;};}function handleError(_0x2bf39b,_0xcdbce8){_0xcdbce8=_0xcdbce8||0x1f4;return function(_0x2cc01e){logger[_0x6953('0x26')](_0x2cc01e[_0x6953('0x27')]);if(_0x2cc01e['name']){delete _0x2cc01e[_0x6953('0x28')];}_0x2bf39b[_0x6953('0x1b')](_0xcdbce8)['send'](_0x2cc01e);};}exports[_0x6953('0x29')]=function(_0x4af39d,_0x173b3c){var _0x3b1175={},_0x426c7c={},_0x4b0325={'count':0x0,'rows':[]};var _0x131992=_[_0x6953('0x2a')](db[_0x6953('0x2b')]['rawAttributes'],function(_0x4c49fc){return{'name':_0x4c49fc[_0x6953('0x2c')],'type':_0x4c49fc['type']['key']};});_0x426c7c[_0x6953('0x2d')]=_[_0x6953('0x2a')](_0x131992,_0x6953('0x28'));_0x426c7c[_0x6953('0x2e')]=_[_0x6953('0x2f')](_0x4af39d['query']);_0x426c7c[_0x6953('0x30')]=_['intersection'](_0x426c7c[_0x6953('0x2d')],_0x426c7c[_0x6953('0x2e')]);_0x3b1175['attributes']=_['intersection'](_0x426c7c[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x4af39d[_0x6953('0x2e')]['fields']));_0x3b1175[_0x6953('0x32')]=_0x3b1175['attributes']['length']?_0x3b1175['attributes']:_0x426c7c['model'];if(!_0x4af39d[_0x6953('0x2e')][_0x6953('0x33')](_0x6953('0x34'))){_0x3b1175[_0x6953('0x20')]=qs[_0x6953('0x20')](_0x4af39d[_0x6953('0x2e')]['limit']);_0x3b1175[_0x6953('0x1e')]=qs['offset'](_0x4af39d[_0x6953('0x2e')]['offset']);}_0x3b1175[_0x6953('0x35')]=qs[_0x6953('0x36')](_0x4af39d[_0x6953('0x2e')][_0x6953('0x36')]);_0x3b1175['where']=qs[_0x6953('0x30')](_[_0x6953('0x37')](_0x4af39d[_0x6953('0x2e')],_0x426c7c[_0x6953('0x30')]),_0x131992);if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x38')]){_0x3b1175[_0x6953('0x39')]=_[_0x6953('0x3a')](_0x3b1175[_0x6953('0x39')],{'$or':_[_0x6953('0x2a')](_0x131992,function(_0x2d9d81){if(_0x2d9d81['type']!==_0x6953('0x3b')){var _0x3c03ab={};_0x3c03ab[_0x2d9d81[_0x6953('0x28')]]={'$like':'%'+_0x4af39d['query']['filter']+'%'};return _0x3c03ab;}})});}_0x3b1175=_[_0x6953('0x3a')]({},_0x3b1175,_0x4af39d['options']);var _0x5abaf2={'where':_0x3b1175[_0x6953('0x39')]};return db[_0x6953('0x2b')]['count'](_0x5abaf2)[_0x6953('0x3c')](function(_0x263728){_0x4b0325[_0x6953('0x21')]=_0x263728;if(_0x4af39d[_0x6953('0x2e')][_0x6953('0x3d')]){_0x3b1175[_0x6953('0x3e')]=[{'all':!![]}];}return db['Integration'][_0x6953('0x3f')](_0x3b1175);})[_0x6953('0x3c')](function(_0x30a27a){_0x4b0325[_0x6953('0x40')]=_0x30a27a;return _0x4b0325;})[_0x6953('0x3c')](respondWithFilteredResult(_0x173b3c,_0x3b1175))[_0x6953('0x41')](handleError(_0x173b3c,null));};exports['show']=function(_0x5a40de,_0xeef91a){var _0x54d7c2={'raw':![],'where':{'id':_0x5a40de[_0x6953('0x42')]['id']}},_0x588ff8={};_0x588ff8[_0x6953('0x2d')]=_[_0x6953('0x2f')](db[_0x6953('0x2b')][_0x6953('0x43')]);_0x588ff8['query']=_['keys'](_0x5a40de[_0x6953('0x2e')]);_0x588ff8[_0x6953('0x30')]=_['intersection'](_0x588ff8[_0x6953('0x2d')],_0x588ff8['query']);_0x54d7c2[_0x6953('0x32')]=_[_0x6953('0x44')](_0x588ff8[_0x6953('0x2d')],qs[_0x6953('0x31')](_0x5a40de['query'][_0x6953('0x31')]));_0x54d7c2[_0x6953('0x32')]=_0x54d7c2['attributes'][_0x6953('0x45')]?_0x54d7c2[_0x6953('0x32')]:_0x588ff8[_0x6953('0x2d')];if(_0x5a40de[_0x6953('0x2e')][_0x6953('0x3d')]){_0x54d7c2[_0x6953('0x3e')]=[{'all':!![]}];}_0x54d7c2=_[_0x6953('0x3a')]({},_0x54d7c2,_0x5a40de[_0x6953('0x46')]);return db[_0x6953('0x2b')][_0x6953('0x47')](_0x54d7c2)[_0x6953('0x3c')](handleEntityNotFound(_0xeef91a,null))['then'](respondWithResult(_0xeef91a,null))[_0x6953('0x41')](handleError(_0xeef91a,null));};exports['create']=function(_0x15c142,_0x1d5979){return db[_0x6953('0x2b')]['create'](_0x15c142[_0x6953('0x48')],{})[_0x6953('0x3c')](respondWithResult(_0x1d5979,0xc9))['catch'](handleError(_0x1d5979,null));};exports['update']=function(_0xbf5b61,_0x265b44){if(_0xbf5b61[_0x6953('0x48')]['id']){delete _0xbf5b61[_0x6953('0x48')]['id'];}return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0xbf5b61[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x265b44,null))[_0x6953('0x3c')](saveUpdates(_0xbf5b61[_0x6953('0x48')],null))[_0x6953('0x3c')](respondWithResult(_0x265b44,null))['catch'](handleError(_0x265b44,null));};exports['destroy']=function(_0x14a7bf,_0x38e3e8){return db[_0x6953('0x2b')][_0x6953('0x47')]({'where':{'id':_0x14a7bf[_0x6953('0x42')]['id']}})[_0x6953('0x3c')](handleEntityNotFound(_0x38e3e8,null))[_0x6953('0x3c')](removeEntity(_0x38e3e8,null))[_0x6953('0x41')](handleError(_0x38e3e8,null));};
\ No newline at end of file
index baef8aa..38860a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d61=['bluebird','path','rimraf','../../config/environment','exports','define','Integration','integrations','lodash','util','../../config/logger','api'];(function(_0x2639a8,_0x5d4e83){var _0x442857=function(_0x557e3a){while(--_0x557e3a){_0x2639a8['push'](_0x2639a8['shift']());}};_0x442857(++_0x5d4e83);}(_0x1d61,0x8c));var _0x11d6=function(_0xcf0e21,_0x4359a5){_0xcf0e21=_0xcf0e21-0x0;var _0x163d93=_0x1d61[_0xcf0e21];return _0x163d93;};'use strict';var _=require(_0x11d6('0x0'));var util=require(_0x11d6('0x1'));var logger=require(_0x11d6('0x2'))(_0x11d6('0x3'));var moment=require('moment');var BPromise=require(_0x11d6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x11d6('0x5'));var rimraf=require(_0x11d6('0x6'));var config=require(_0x11d6('0x7'));var attributes=require('./integration.attributes');module[_0x11d6('0x8')]=function(_0x225e8b,_0x1fc66e){return _0x225e8b[_0x11d6('0x9')](_0x11d6('0xa'),attributes,{'tableName':_0x11d6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ba6=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','integrations','lodash','util'];(function(_0x150cc4,_0x15e9f1){var _0x22a995=function(_0x114834){while(--_0x114834){_0x150cc4['push'](_0x150cc4['shift']());}};_0x22a995(++_0x15e9f1);}(_0x2ba6,0x11e));var _0x62ba=function(_0x752329,_0x91aac6){_0x752329=_0x752329-0x0;var _0x3dac19=_0x2ba6[_0x752329];return _0x3dac19;};'use strict';var _=require(_0x62ba('0x0'));var util=require(_0x62ba('0x1'));var logger=require(_0x62ba('0x2'))(_0x62ba('0x3'));var moment=require(_0x62ba('0x4'));var BPromise=require(_0x62ba('0x5'));var rp=require(_0x62ba('0x6'));var fs=require('fs');var path=require(_0x62ba('0x7'));var rimraf=require(_0x62ba('0x8'));var config=require('../../config/environment');var attributes=require('./integration.attributes');module[_0x62ba('0x9')]=function(_0x5997b5,_0x14dd76){return _0x5997b5[_0x62ba('0xa')]('Integration',attributes,{'tableName':_0x62ba('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9df1e96..31137c5 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(_0x31b300,_0x44f20c){var _0x254ce1=function(_0x152550){while(--_0x152550){_0x31b300['push'](_0x31b300['shift']());}};_0x254ce1(++_0x44f20c);}(_0x66fa,0x117));var _0xa66f=function(_0x5dc07d,_0x31ad13){_0x5dc07d=_0x5dc07d-0x0;var _0x19ca73=_0x66fa[_0x5dc07d];return _0x19ca73;};'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 _0x1a85=['../../config/logger','rpc','jayson/promise','http','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','../../config/utils'];(function(_0x439e3a,_0x1cfd79){var _0x93de6f=function(_0x58c872){while(--_0x58c872){_0x439e3a['push'](_0x439e3a['shift']());}};_0x93de6f(++_0x1cfd79);}(_0x1a85,0x178));var _0x51a8=function(_0x43186d,_0x4b40ec){_0x43186d=_0x43186d-0x0;var _0x5f562c=_0x1a85[_0x43186d];return _0x5f562c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5cf430,_0x331117,_0x16a21e){return new BPromise(function(_0x4f3919,_0x228c64){return client['request'](_0x5cf430,_0x16a21e)['then'](function(_0x39e06a){logger[_0x51a8('0x8')](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));logger[_0x51a8('0xb')](_0x51a8('0xc'),_0x331117,_0x51a8('0xa'),JSON[_0x51a8('0xd')](_0x39e06a));if(_0x39e06a[_0x51a8('0xe')]){if(_0x39e06a[_0x51a8('0xe')][_0x51a8('0xf')]===0x1f4){logger[_0x51a8('0xe')](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x228c64(_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);}logger['error'](_0x51a8('0x9'),_0x331117,_0x39e06a[_0x51a8('0xe')][_0x51a8('0x10')]);return _0x4f3919(_0x39e06a['error'][_0x51a8('0x10')]);}else{logger['info'](_0x51a8('0x9'),_0x331117,_0x51a8('0xa'));_0x4f3919(_0x39e06a[_0x51a8('0x11')][_0x51a8('0x10')]);}})[_0x51a8('0x12')](function(_0x3e0603){logger[_0x51a8('0xe')]('Integration,\x20%s,\x20%s',_0x331117,_0x3e0603);_0x228c64(_0x3e0603);});});}
\ No newline at end of file
index bc2652e..5f19cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe'];(function(_0x45754f,_0x402a29){var _0x850de2=function(_0x4b2080){while(--_0x4b2080){_0x45754f['push'](_0x45754f['shift']());}};_0x850de2(++_0x402a29);}(_0xc2c7,0x134));var _0x7c2c=function(_0x1e598a,_0x1e472b){_0x1e598a=_0x1e598a-0x0;var _0x40a02a=_0xc2c7[_0x1e598a];return _0x40a02a;};'use strict';var multer=require('multer');var util=require(_0x7c2c('0x0'));var path=require(_0x7c2c('0x1'));var timeout=require(_0x7c2c('0x2'));var express=require(_0x7c2c('0x3'));var router=express[_0x7c2c('0x4')]();var fs_extra=require(_0x7c2c('0x5'));var auth=require(_0x7c2c('0x6'));var interaction=require(_0x7c2c('0x7'));var config=require('../../config/environment');var controller=require('./integrationReport.controller');router[_0x7c2c('0x8')]('/',auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x7c2c('0xb')]);router[_0x7c2c('0x8')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xd')]);router['post']('/',auth[_0x7c2c('0x9')](),controller[_0x7c2c('0xe')]);router[_0x7c2c('0xf')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0x10')]);router[_0x7c2c('0x11')](_0x7c2c('0xc'),auth[_0x7c2c('0x9')](),controller[_0x7c2c('0x12')]);module[_0x7c2c('0x13')]=router;
\ No newline at end of file
+var _0xef0f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x40bc62,_0x2cdbc4){var _0x56d856=function(_0x34f5c9){while(--_0x34f5c9){_0x40bc62['push'](_0x40bc62['shift']());}};_0x56d856(++_0x2cdbc4);}(_0xef0f,0x168));var _0xfef0=function(_0x1c7410,_0x163541){_0x1c7410=_0x1c7410-0x0;var _0x20565d=_0xef0f[_0x1c7410];return _0x20565d;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0xf')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x11')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x13')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x14')]);module['exports']=router;
\ No newline at end of file
index a931474..3432283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c77=['STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','sequelize'];(function(_0xe6e557,_0x4f724b){var _0x15f8a1=function(_0x50a1cf){while(--_0x50a1cf){_0xe6e557['push'](_0xe6e557['shift']());}};_0x15f8a1(++_0x4f724b);}(_0x8c77,0xf9));var _0x78c7=function(_0x5b8a1d,_0x2ab127){_0x5b8a1d=_0x5b8a1d-0x0;var _0x33b270=_0x8c77[_0x5b8a1d];return _0x33b270;};'use strict';var Sequelize=require(_0x78c7('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0x78c7('0x1')]},'ticketId':{'type':Sequelize[_0x78c7('0x1')]},'integrationId':{'type':Sequelize[_0x78c7('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x78c7('0x1')]},'calleridnum':{'type':Sequelize[_0x78c7('0x1')]},'calleridname':{'type':Sequelize[_0x78c7('0x1')]},'queue':{'type':Sequelize[_0x78c7('0x1')]},'interface':{'type':Sequelize[_0x78c7('0x1')]},'membername':{'type':Sequelize[_0x78c7('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x78c7('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x78c7('0x3')]},'talktime':{'type':Sequelize[_0x78c7('0x2')]},'agentacw':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x78c7('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x78c7('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x78c7('0x1')]},'channel':{'type':Sequelize[_0x78c7('0x1')]},'channelstate':{'type':Sequelize[_0x78c7('0x2')]},'channelstatedesc':{'type':Sequelize[_0x78c7('0x1')]},'connectedlinenum':{'type':Sequelize[_0x78c7('0x1')]},'connectedlinename':{'type':Sequelize[_0x78c7('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x78c7('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x78c7('0x1')]},'priority':{'type':Sequelize[_0x78c7('0x1')]},'destchannel':{'type':Sequelize[_0x78c7('0x1')]},'destchannelstate':{'type':Sequelize[_0x78c7('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x78c7('0x1')]},'destcalleridnum':{'type':Sequelize[_0x78c7('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x78c7('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x78c7('0x1')]},'destlanguage':{'type':Sequelize[_0x78c7('0x1')]},'destaccountcode':{'type':Sequelize[_0x78c7('0x1')]},'destcontext':{'type':Sequelize[_0x78c7('0x1')]},'destexten':{'type':Sequelize[_0x78c7('0x1')]},'destpriority':{'type':Sequelize[_0x78c7('0x1')]},'destuniqueid':{'type':Sequelize[_0x78c7('0x1')]},'messageId':{'type':Sequelize[_0x78c7('0x1')]},'inReplyTo':{'type':Sequelize[_0x78c7('0x1')]},'subject':{'type':Sequelize[_0x78c7('0x1')]},'from':{'type':Sequelize[_0x78c7('0x1')]},'to':{'type':Sequelize[_0x78c7('0x1')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize['TEXT']},'text':{'type':Sequelize[_0x78c7('0x5')]},'status':{'type':Sequelize[_0x78c7('0x6')](_0x78c7('0x7'),_0x78c7('0x8'),_0x78c7('0x9'),'FAILED')},'url':{'type':Sequelize[_0x78c7('0x1')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x78c7('0x1')]},'projectId':{'type':Sequelize[_0x78c7('0x2')]}};
\ No newline at end of file
+var _0x1ab5=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING','sequelize'];(function(_0x7ad6cb,_0xffee6c){var _0x22a0ba=function(_0x47f291){while(--_0x47f291){_0x7ad6cb['push'](_0x7ad6cb['shift']());}};_0x22a0ba(++_0xffee6c);}(_0x1ab5,0x95));var _0x51ab=function(_0x53b77e,_0x5a9694){_0x53b77e=_0x53b77e-0x0;var _0x51c533=_0x1ab5[_0x53b77e];return _0x51c533;};'use strict';var Sequelize=require(_0x51ab('0x0'));module[_0x51ab('0x1')]={'integration':{'type':Sequelize[_0x51ab('0x2')]},'eventChannel':{'type':Sequelize[_0x51ab('0x2')]},'exitStatus':{'type':Sequelize[_0x51ab('0x2')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x51ab('0x3')]},'contacts':{'type':Sequelize[_0x51ab('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x51ab('0x2')]},'calleridname':{'type':Sequelize[_0x51ab('0x2')]},'queue':{'type':Sequelize[_0x51ab('0x2')]},'interface':{'type':Sequelize[_0x51ab('0x2')]},'membername':{'type':Sequelize[_0x51ab('0x2')]},'agentcalledAt':{'type':Sequelize[_0x51ab('0x4')]},'agentconnectAt':{'type':Sequelize[_0x51ab('0x4')]},'holdtime':{'type':Sequelize[_0x51ab('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x51ab('0x4')]},'talktime':{'type':Sequelize[_0x51ab('0x3')]},'agentacw':{'type':Sequelize[_0x51ab('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x51ab('0x3')]},'reason':{'type':Sequelize[_0x51ab('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x51ab('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x51ab('0x4')]},'agentdump':{'type':Sequelize[_0x51ab('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x51ab('0x4')]},'lastevent':{'type':Sequelize[_0x51ab('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x51ab('0x3')]},'channelstatedesc':{'type':Sequelize[_0x51ab('0x2')]},'connectedlinenum':{'type':Sequelize[_0x51ab('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x51ab('0x2')]},'accountcode':{'type':Sequelize[_0x51ab('0x2')]},'context':{'type':Sequelize[_0x51ab('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x51ab('0x2')]},'destchannel':{'type':Sequelize[_0x51ab('0x2')]},'destchannelstate':{'type':Sequelize[_0x51ab('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x51ab('0x2')]},'destcalleridnum':{'type':Sequelize[_0x51ab('0x2')]},'destcalleridname':{'type':Sequelize[_0x51ab('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x51ab('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x51ab('0x2')]},'destaccountcode':{'type':Sequelize[_0x51ab('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x51ab('0x2')]},'destuniqueid':{'type':Sequelize[_0x51ab('0x2')]},'messageId':{'type':Sequelize[_0x51ab('0x2')]},'inReplyTo':{'type':Sequelize[_0x51ab('0x2')]},'subject':{'type':Sequelize[_0x51ab('0x2')]},'from':{'type':Sequelize[_0x51ab('0x2')]},'to':{'type':Sequelize[_0x51ab('0x2')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x51ab('0x6')]},'html':{'type':Sequelize[_0x51ab('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x51ab('0x7')](_0x51ab('0x8'),_0x51ab('0x9'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0x51ab('0x2')]},'app':{'type':Sequelize[_0x51ab('0x2')]},'appdata':{'type':Sequelize[_0x51ab('0x2')]},'projectId':{'type':Sequelize[_0x51ab('0x3')]}};
\ No newline at end of file
index 9104b31..8b414ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2bf=['fieldName','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','rows','show','params','keys','fields','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','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','json','undefined','count','offset','set','reject','save','update','then','destroy','end','error','stack','name','send','index','map','IntegrationReport','rawAttributes'];(function(_0x152a11,_0x3b638d){var _0x4e5666=function(_0x2cefff){while(--_0x2cefff){_0x152a11['push'](_0x152a11['shift']());}};_0x4e5666(++_0x3b638d);}(_0xe2bf,0x18b));var _0xfe2b=function(_0x3b6897,_0xe8f61d){_0x3b6897=_0x3b6897-0x0;var _0x5dde49=_0xe2bf[_0x3b6897];return _0x5dde49;};'use strict';var emlformat=require(_0xfe2b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe2b('0x1'));var jsonpatch=require(_0xfe2b('0x2'));var rp=require(_0xfe2b('0x3'));var moment=require(_0xfe2b('0x4'));var BPromise=require(_0xfe2b('0x5'));var Mustache=require(_0xfe2b('0x6'));var util=require('util');var path=require('path');var sox=require(_0xfe2b('0x7'));var csv=require(_0xfe2b('0x8'));var ejs=require(_0xfe2b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfe2b('0xa'));var deskjs=require(_0xfe2b('0xb'));var toCsv=require(_0xfe2b('0x8'));var querystring=require('querystring');var Papa=require(_0xfe2b('0xc'));var Redis=require(_0xfe2b('0xd'));var authService=require(_0xfe2b('0xe'));var qs=require(_0xfe2b('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe2b('0x10'));var logger=require(_0xfe2b('0x11'))(_0xfe2b('0x12'));var utils=require(_0xfe2b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfe2b('0x14'));var db=require(_0xfe2b('0x15'))['db'];function respondWithStatusCode(_0x32f883,_0x2079e5){_0x2079e5=_0x2079e5||0xcc;return function(_0x2f3f6a){if(_0x2f3f6a){return _0x32f883[_0xfe2b('0x16')](_0x2079e5);}return _0x32f883[_0xfe2b('0x17')](_0x2079e5)['end']();};}function respondWithResult(_0x57a7d1,_0x510b9e){_0x510b9e=_0x510b9e||0xc8;return function(_0x525952){if(_0x525952){return _0x57a7d1['status'](_0x510b9e)[_0xfe2b('0x18')](_0x525952);}};}function respondWithFilteredResult(_0x49f0b2,_0x3b1d0c){return function(_0x119768){if(_0x119768){var _0x336543=typeof _0x3b1d0c['offset']===_0xfe2b('0x19')&&typeof _0x3b1d0c['limit']===_0xfe2b('0x19');var _0x52464a=_0x119768[_0xfe2b('0x1a')];var _0x49464=_0x336543?0x0:_0x3b1d0c[_0xfe2b('0x1b')];var _0x2ea0fb=_0x336543?_0x119768[_0xfe2b('0x1a')]:_0x3b1d0c[_0xfe2b('0x1b')]+_0x3b1d0c['limit'];var _0x3d66be;if(_0x2ea0fb>=_0x52464a){_0x2ea0fb=_0x52464a;_0x3d66be=0xc8;}else{_0x3d66be=0xce;}_0x49f0b2[_0xfe2b('0x17')](_0x3d66be);return _0x49f0b2[_0xfe2b('0x1c')]('Content-Range',_0x49464+'-'+_0x2ea0fb+'/'+_0x52464a)[_0xfe2b('0x18')](_0x119768);}return null;};}function patchUpdates(_0x3de367){return function(_0xfb2ada){try{jsonpatch['apply'](_0xfb2ada,_0x3de367,!![]);}catch(_0x53a7ff){return BPromise[_0xfe2b('0x1d')](_0x53a7ff);}return _0xfb2ada[_0xfe2b('0x1e')]();};}function saveUpdates(_0x37915a,_0xe17768){return function(_0x19fc5d){if(_0x19fc5d){return _0x19fc5d[_0xfe2b('0x1f')](_0x37915a)[_0xfe2b('0x20')](function(_0xeda1f4){return _0xeda1f4;});}return null;};}function removeEntity(_0x36974f,_0x1b13a9){return function(_0xca629a){if(_0xca629a){return _0xca629a[_0xfe2b('0x21')]()[_0xfe2b('0x20')](function(){_0x36974f[_0xfe2b('0x17')](0xcc)[_0xfe2b('0x22')]();});}};}function handleEntityNotFound(_0x11e474,_0x3cc63c){return function(_0x3296de){if(!_0x3296de){_0x11e474[_0xfe2b('0x16')](0x194);}return _0x3296de;};}function handleError(_0x19d4a3,_0x59887e){_0x59887e=_0x59887e||0x1f4;return function(_0x174ed9){logger[_0xfe2b('0x23')](_0x174ed9[_0xfe2b('0x24')]);if(_0x174ed9[_0xfe2b('0x25')]){delete _0x174ed9['name'];}_0x19d4a3[_0xfe2b('0x17')](_0x59887e)[_0xfe2b('0x26')](_0x174ed9);};}exports[_0xfe2b('0x27')]=function(_0x1830a4,_0x1310d5){var _0x286268={},_0x11f189={},_0x3c3b00={'count':0x0,'rows':[]};var _0x38fc5f=_[_0xfe2b('0x28')](db[_0xfe2b('0x29')][_0xfe2b('0x2a')],function(_0x2c267b){return{'name':_0x2c267b[_0xfe2b('0x2b')],'type':_0x2c267b['type']['key']};});_0x11f189[_0xfe2b('0x2c')]=_[_0xfe2b('0x28')](_0x38fc5f,_0xfe2b('0x25'));_0x11f189[_0xfe2b('0x2d')]=_['keys'](_0x1830a4[_0xfe2b('0x2d')]);_0x11f189[_0xfe2b('0x2e')]=_[_0xfe2b('0x2f')](_0x11f189['model'],_0x11f189['query']);_0x286268['attributes']=_[_0xfe2b('0x2f')](_0x11f189[_0xfe2b('0x2c')],qs['fields'](_0x1830a4[_0xfe2b('0x2d')]['fields']));_0x286268[_0xfe2b('0x30')]=_0x286268[_0xfe2b('0x30')][_0xfe2b('0x31')]?_0x286268[_0xfe2b('0x30')]:_0x11f189['model'];if(!_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x32')](_0xfe2b('0x33'))){_0x286268['limit']=qs[_0xfe2b('0x34')](_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x34')]);_0x286268[_0xfe2b('0x1b')]=qs['offset'](_0x1830a4[_0xfe2b('0x2d')]['offset']);}_0x286268['order']=qs[_0xfe2b('0x35')](_0x1830a4['query'][_0xfe2b('0x35')]);_0x286268[_0xfe2b('0x36')]=qs[_0xfe2b('0x2e')](_[_0xfe2b('0x37')](_0x1830a4[_0xfe2b('0x2d')],_0x11f189[_0xfe2b('0x2e')]),_0x38fc5f);if(_0x1830a4['query'][_0xfe2b('0x38')]){_0x286268[_0xfe2b('0x36')]=_['merge'](_0x286268['where'],{'$or':_[_0xfe2b('0x28')](_0x38fc5f,function(_0x15000f){if(_0x15000f[_0xfe2b('0x39')]!==_0xfe2b('0x3a')){var _0x39f513={};_0x39f513[_0x15000f[_0xfe2b('0x25')]]={'$like':'%'+_0x1830a4[_0xfe2b('0x2d')][_0xfe2b('0x38')]+'%'};return _0x39f513;}})});}_0x286268=_[_0xfe2b('0x3b')]({},_0x286268,_0x1830a4[_0xfe2b('0x3c')]);var _0x5d36fb={'where':_0x286268['where']};return db[_0xfe2b('0x29')][_0xfe2b('0x1a')](_0x5d36fb)[_0xfe2b('0x20')](function(_0x2cb134){_0x3c3b00[_0xfe2b('0x1a')]=_0x2cb134;if(_0x1830a4['query'][_0xfe2b('0x3d')]){_0x286268[_0xfe2b('0x3e')]=[{'all':!![]}];}return db[_0xfe2b('0x29')]['findAll'](_0x286268);})[_0xfe2b('0x20')](function(_0xd0af1c){_0x3c3b00[_0xfe2b('0x3f')]=_0xd0af1c;return _0x3c3b00;})[_0xfe2b('0x20')](respondWithFilteredResult(_0x1310d5,_0x286268))['catch'](handleError(_0x1310d5,null));};exports[_0xfe2b('0x40')]=function(_0xdd0028,_0x502a39){var _0x37b48d={'raw':![],'where':{'id':_0xdd0028[_0xfe2b('0x41')]['id']}},_0x320470={};_0x320470[_0xfe2b('0x2c')]=_[_0xfe2b('0x42')](db[_0xfe2b('0x29')][_0xfe2b('0x2a')]);_0x320470[_0xfe2b('0x2d')]=_[_0xfe2b('0x42')](_0xdd0028['query']);_0x320470[_0xfe2b('0x2e')]=_[_0xfe2b('0x2f')](_0x320470[_0xfe2b('0x2c')],_0x320470[_0xfe2b('0x2d')]);_0x37b48d[_0xfe2b('0x30')]=_['intersection'](_0x320470[_0xfe2b('0x2c')],qs[_0xfe2b('0x43')](_0xdd0028[_0xfe2b('0x2d')][_0xfe2b('0x43')]));_0x37b48d[_0xfe2b('0x30')]=_0x37b48d[_0xfe2b('0x30')][_0xfe2b('0x31')]?_0x37b48d[_0xfe2b('0x30')]:_0x320470['model'];if(_0xdd0028[_0xfe2b('0x2d')][_0xfe2b('0x3d')]){_0x37b48d[_0xfe2b('0x3e')]=[{'all':!![]}];}_0x37b48d=_[_0xfe2b('0x3b')]({},_0x37b48d,_0xdd0028[_0xfe2b('0x3c')]);return db[_0xfe2b('0x29')][_0xfe2b('0x44')](_0x37b48d)[_0xfe2b('0x20')](handleEntityNotFound(_0x502a39,null))[_0xfe2b('0x20')](respondWithResult(_0x502a39,null))[_0xfe2b('0x45')](handleError(_0x502a39,null));};exports['create']=function(_0x197ee0,_0x285180){return db[_0xfe2b('0x29')][_0xfe2b('0x46')](_0x197ee0[_0xfe2b('0x47')],{})['then'](respondWithResult(_0x285180,0xc9))[_0xfe2b('0x45')](handleError(_0x285180,null));};exports[_0xfe2b('0x1f')]=function(_0x4c9d2f,_0x29a928){if(_0x4c9d2f[_0xfe2b('0x47')]['id']){delete _0x4c9d2f[_0xfe2b('0x47')]['id'];}return db[_0xfe2b('0x29')][_0xfe2b('0x44')]({'where':{'id':_0x4c9d2f[_0xfe2b('0x41')]['id']}})[_0xfe2b('0x20')](handleEntityNotFound(_0x29a928,null))['then'](saveUpdates(_0x4c9d2f[_0xfe2b('0x47')],null))[_0xfe2b('0x20')](respondWithResult(_0x29a928,null))[_0xfe2b('0x45')](handleError(_0x29a928,null));};exports[_0xfe2b('0x21')]=function(_0x5b15a7,_0x3ae276){return db[_0xfe2b('0x29')][_0xfe2b('0x44')]({'where':{'id':_0x5b15a7[_0xfe2b('0x41')]['id']}})[_0xfe2b('0x20')](handleEntityNotFound(_0x3ae276,null))[_0xfe2b('0x20')](removeEntity(_0x3ae276,null))[_0xfe2b('0x45')](handleError(_0x3ae276,null));};exports['describe']=function(_0x462fc1,_0x5d54be){return db[_0xfe2b('0x29')][_0xfe2b('0x48')]()[_0xfe2b('0x20')](respondWithResult(_0x5d54be,null))[_0xfe2b('0x45')](handleError(_0x5d54be,null));};
\ No newline at end of file
+var _0xb3ae=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','then','sendStatus','error','stack','name','send','index','IntegrationReport','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','update','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/logger','api'];(function(_0x194576,_0x543558){var _0x67603e=function(_0x2f2a4a){while(--_0x2f2a4a){_0x194576['push'](_0x194576['shift']());}};_0x67603e(++_0x543558);}(_0xb3ae,0x1e6));var _0xeb3a=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0xb3ae[_0x16b9ed];return _0x66b1f8;};'use strict';var emlformat=require(_0xeb3a('0x0'));var rimraf=require(_0xeb3a('0x1'));var zipdir=require(_0xeb3a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeb3a('0x3'));var moment=require(_0xeb3a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xeb3a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xeb3a('0x6'));var ejs=require(_0xeb3a('0x7'));var fs=require('fs');var fs_extra=require(_0xeb3a('0x8'));var _=require(_0xeb3a('0x9'));var squel=require(_0xeb3a('0xa'));var crypto=require(_0xeb3a('0xb'));var jsforce=require(_0xeb3a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xeb3a('0x6'));var querystring=require('querystring');var Papa=require(_0xeb3a('0xd'));var Redis=require(_0xeb3a('0xe'));var authService=require(_0xeb3a('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb3a('0x10'))(_0xeb3a('0x11'));var utils=require(_0xeb3a('0x12'));var config=require(_0xeb3a('0x13'));var licenseUtil=require(_0xeb3a('0x14'));var db=require(_0xeb3a('0x15'))['db'];function respondWithStatusCode(_0x3b819f,_0x1faa5c){_0x1faa5c=_0x1faa5c||0xcc;return function(_0x39b6ad){if(_0x39b6ad){return _0x3b819f['sendStatus'](_0x1faa5c);}return _0x3b819f[_0xeb3a('0x16')](_0x1faa5c)[_0xeb3a('0x17')]();};}function respondWithResult(_0x19d287,_0x2aae23){_0x2aae23=_0x2aae23||0xc8;return function(_0x482e77){if(_0x482e77){return _0x19d287[_0xeb3a('0x16')](_0x2aae23)[_0xeb3a('0x18')](_0x482e77);}};}function respondWithFilteredResult(_0xe6406d,_0x172ded){return function(_0x4084fe){if(_0x4084fe){var _0xe75876=typeof _0x172ded['offset']===_0xeb3a('0x19')&&typeof _0x172ded['limit']===_0xeb3a('0x19');var _0xca05da=_0x4084fe[_0xeb3a('0x1a')];var _0x19da62=_0xe75876?0x0:_0x172ded[_0xeb3a('0x1b')];var _0x82ce0f=_0xe75876?_0x4084fe[_0xeb3a('0x1a')]:_0x172ded[_0xeb3a('0x1b')]+_0x172ded[_0xeb3a('0x1c')];var _0x4d47f8;if(_0x82ce0f>=_0xca05da){_0x82ce0f=_0xca05da;_0x4d47f8=0xc8;}else{_0x4d47f8=0xce;}_0xe6406d['status'](_0x4d47f8);return _0xe6406d[_0xeb3a('0x1d')]('Content-Range',_0x19da62+'-'+_0x82ce0f+'/'+_0xca05da)[_0xeb3a('0x18')](_0x4084fe);}return null;};}function patchUpdates(_0x3b4481){return function(_0x5aec43){try{jsonpatch[_0xeb3a('0x1e')](_0x5aec43,_0x3b4481,!![]);}catch(_0x13651b){return BPromise['reject'](_0x13651b);}return _0x5aec43['save']();};}function saveUpdates(_0x22b7b5,_0x23ced7){return function(_0xc0d6b5){if(_0xc0d6b5){return _0xc0d6b5['update'](_0x22b7b5)['then'](function(_0x28adcd){return _0x28adcd;});}return null;};}function removeEntity(_0x5bd105,_0x4a9656){return function(_0x42a685){if(_0x42a685){return _0x42a685['destroy']()[_0xeb3a('0x1f')](function(){_0x5bd105[_0xeb3a('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41ae0e,_0x128ec8){return function(_0x5c699d){if(!_0x5c699d){_0x41ae0e[_0xeb3a('0x20')](0x194);}return _0x5c699d;};}function handleError(_0xf56b6b,_0x4d9136){_0x4d9136=_0x4d9136||0x1f4;return function(_0x469ce7){logger[_0xeb3a('0x21')](_0x469ce7[_0xeb3a('0x22')]);if(_0x469ce7[_0xeb3a('0x23')]){delete _0x469ce7[_0xeb3a('0x23')];}_0xf56b6b['status'](_0x4d9136)[_0xeb3a('0x24')](_0x469ce7);};}exports[_0xeb3a('0x25')]=function(_0x43a941,_0x22a4d2){var _0x3ed476={},_0x323e9c={},_0x4f521d={'count':0x0,'rows':[]};var _0x269b07=_['map'](db[_0xeb3a('0x26')][_0xeb3a('0x27')],function(_0x29dfbd){return{'name':_0x29dfbd[_0xeb3a('0x28')],'type':_0x29dfbd[_0xeb3a('0x29')][_0xeb3a('0x2a')]};});_0x323e9c[_0xeb3a('0x2b')]=_[_0xeb3a('0x2c')](_0x269b07,'name');_0x323e9c['query']=_['keys'](_0x43a941[_0xeb3a('0x2d')]);_0x323e9c[_0xeb3a('0x2e')]=_[_0xeb3a('0x2f')](_0x323e9c[_0xeb3a('0x2b')],_0x323e9c[_0xeb3a('0x2d')]);_0x3ed476[_0xeb3a('0x30')]=_[_0xeb3a('0x2f')](_0x323e9c[_0xeb3a('0x2b')],qs[_0xeb3a('0x31')](_0x43a941[_0xeb3a('0x2d')][_0xeb3a('0x31')]));_0x3ed476['attributes']=_0x3ed476[_0xeb3a('0x30')][_0xeb3a('0x32')]?_0x3ed476[_0xeb3a('0x30')]:_0x323e9c[_0xeb3a('0x2b')];if(!_0x43a941[_0xeb3a('0x2d')][_0xeb3a('0x33')](_0xeb3a('0x34'))){_0x3ed476[_0xeb3a('0x1c')]=qs[_0xeb3a('0x1c')](_0x43a941['query']['limit']);_0x3ed476[_0xeb3a('0x1b')]=qs[_0xeb3a('0x1b')](_0x43a941[_0xeb3a('0x2d')][_0xeb3a('0x1b')]);}_0x3ed476['order']=qs[_0xeb3a('0x35')](_0x43a941[_0xeb3a('0x2d')]['sort']);_0x3ed476[_0xeb3a('0x36')]=qs['filters'](_['pick'](_0x43a941[_0xeb3a('0x2d')],_0x323e9c[_0xeb3a('0x2e')]),_0x269b07);if(_0x43a941[_0xeb3a('0x2d')][_0xeb3a('0x37')]){_0x3ed476['where']=_[_0xeb3a('0x38')](_0x3ed476[_0xeb3a('0x36')],{'$or':_[_0xeb3a('0x2c')](_0x269b07,function(_0x5cfbef){if(_0x5cfbef[_0xeb3a('0x29')]!==_0xeb3a('0x39')){var _0x5562f0={};_0x5562f0[_0x5cfbef[_0xeb3a('0x23')]]={'$like':'%'+_0x43a941['query'][_0xeb3a('0x37')]+'%'};return _0x5562f0;}})});}_0x3ed476=_[_0xeb3a('0x38')]({},_0x3ed476,_0x43a941[_0xeb3a('0x3a')]);var _0x4c10fa={'where':_0x3ed476[_0xeb3a('0x36')]};return db[_0xeb3a('0x26')]['count'](_0x4c10fa)[_0xeb3a('0x1f')](function(_0x2d89d9){_0x4f521d[_0xeb3a('0x1a')]=_0x2d89d9;if(_0x43a941[_0xeb3a('0x2d')][_0xeb3a('0x3b')]){_0x3ed476[_0xeb3a('0x3c')]=[{'all':!![]}];}return db['IntegrationReport'][_0xeb3a('0x3d')](_0x3ed476);})[_0xeb3a('0x1f')](function(_0x26ab2e){_0x4f521d[_0xeb3a('0x3e')]=_0x26ab2e;return _0x4f521d;})[_0xeb3a('0x1f')](respondWithFilteredResult(_0x22a4d2,_0x3ed476))[_0xeb3a('0x3f')](handleError(_0x22a4d2,null));};exports[_0xeb3a('0x40')]=function(_0x24deb4,_0x5bdb17){var _0x3457ac={'raw':![],'where':{'id':_0x24deb4[_0xeb3a('0x41')]['id']}},_0x535930={};_0x535930[_0xeb3a('0x2b')]=_[_0xeb3a('0x42')](db[_0xeb3a('0x26')][_0xeb3a('0x27')]);_0x535930[_0xeb3a('0x2d')]=_[_0xeb3a('0x42')](_0x24deb4[_0xeb3a('0x2d')]);_0x535930[_0xeb3a('0x2e')]=_[_0xeb3a('0x2f')](_0x535930[_0xeb3a('0x2b')],_0x535930['query']);_0x3457ac[_0xeb3a('0x30')]=_[_0xeb3a('0x2f')](_0x535930['model'],qs[_0xeb3a('0x31')](_0x24deb4[_0xeb3a('0x2d')]['fields']));_0x3457ac[_0xeb3a('0x30')]=_0x3457ac[_0xeb3a('0x30')][_0xeb3a('0x32')]?_0x3457ac['attributes']:_0x535930[_0xeb3a('0x2b')];if(_0x24deb4[_0xeb3a('0x2d')][_0xeb3a('0x3b')]){_0x3457ac[_0xeb3a('0x3c')]=[{'all':!![]}];}_0x3457ac=_['merge']({},_0x3457ac,_0x24deb4[_0xeb3a('0x3a')]);return db['IntegrationReport'][_0xeb3a('0x43')](_0x3457ac)[_0xeb3a('0x1f')](handleEntityNotFound(_0x5bdb17,null))[_0xeb3a('0x1f')](respondWithResult(_0x5bdb17,null))[_0xeb3a('0x3f')](handleError(_0x5bdb17,null));};exports[_0xeb3a('0x44')]=function(_0x1415a7,_0x88196f){return db['IntegrationReport'][_0xeb3a('0x44')](_0x1415a7[_0xeb3a('0x45')],{})[_0xeb3a('0x1f')](respondWithResult(_0x88196f,0xc9))[_0xeb3a('0x3f')](handleError(_0x88196f,null));};exports[_0xeb3a('0x46')]=function(_0x277c52,_0x3fb273){if(_0x277c52['body']['id']){delete _0x277c52[_0xeb3a('0x45')]['id'];}return db['IntegrationReport'][_0xeb3a('0x43')]({'where':{'id':_0x277c52[_0xeb3a('0x41')]['id']}})['then'](handleEntityNotFound(_0x3fb273,null))['then'](saveUpdates(_0x277c52[_0xeb3a('0x45')],null))['then'](respondWithResult(_0x3fb273,null))[_0xeb3a('0x3f')](handleError(_0x3fb273,null));};exports['destroy']=function(_0x57249b,_0x4d7774){return db[_0xeb3a('0x26')][_0xeb3a('0x43')]({'where':{'id':_0x57249b[_0xeb3a('0x41')]['id']}})[_0xeb3a('0x1f')](handleEntityNotFound(_0x4d7774,null))['then'](removeEntity(_0x4d7774,null))['catch'](handleError(_0x4d7774,null));};exports['describe']=function(_0x4ec0be,_0x52f8ec){return db[_0xeb3a('0x26')][_0xeb3a('0x47')]()['then'](respondWithResult(_0x52f8ec,null))[_0xeb3a('0x3f')](handleError(_0x52f8ec,null));};
\ No newline at end of file
index a4cf4ae..014475c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf2=['./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4b6c5a,_0x9bb3b5){var _0x4026d0=function(_0x37c4b5){while(--_0x37c4b5){_0x4b6c5a['push'](_0x4b6c5a['shift']());}};_0x4026d0(++_0x9bb3b5);}(_0xbbf2,0x14f));var _0x2bbf=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0xbbf2[_0x35da42];return _0x370035;};'use strict';var _=require(_0x2bbf('0x0'));var util=require(_0x2bbf('0x1'));var logger=require(_0x2bbf('0x2'))(_0x2bbf('0x3'));var moment=require(_0x2bbf('0x4'));var BPromise=require(_0x2bbf('0x5'));var rp=require(_0x2bbf('0x6'));var fs=require('fs');var path=require(_0x2bbf('0x7'));var rimraf=require(_0x2bbf('0x8'));var config=require(_0x2bbf('0x9'));var attributes=require(_0x2bbf('0xa'));module[_0x2bbf('0xb')]=function(_0x15d8f6,_0x2bed0b){return _0x15d8f6[_0x2bbf('0xc')](_0x2bbf('0xd'),attributes,{'tableName':_0x2bbf('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a7b=['request-promise','rimraf','../../config/environment','./integrationReport.attributes','define','IntegrationReport','lodash','moment','bluebird'];(function(_0x86b219,_0x43038f){var _0x1f320c=function(_0x8cd63f){while(--_0x8cd63f){_0x86b219['push'](_0x86b219['shift']());}};_0x1f320c(++_0x43038f);}(_0x9a7b,0x1ec));var _0xb9a7=function(_0x193176,_0x4d443b){_0x193176=_0x193176-0x0;var _0xf629f4=_0x9a7b[_0x193176];return _0xf629f4;};'use strict';var _=require(_0xb9a7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb9a7('0x1'));var BPromise=require(_0xb9a7('0x2'));var rp=require(_0xb9a7('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb9a7('0x4'));var config=require(_0xb9a7('0x5'));var attributes=require(_0xb9a7('0x6'));module['exports']=function(_0x1fe658,_0x186db7){return _0x1fe658[_0xb9a7('0x7')](_0xb9a7('0x8'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e3c705..97a5702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x53ec,0x192));var _0xc53e=function(_0x4d5308,_0x268d72){_0x4d5308=_0x4d5308-0x0;var _0x56635a=_0x53ec[_0x4d5308];return _0x56635a;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0xf494=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xf494,0x1c6));var _0x4f49=function(_0x39d4b5,_0x5735fb){_0x39d4b5=_0x39d4b5-0x0;var _0x3516f1=_0xf494[_0x39d4b5];return _0x3516f1;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}
\ No newline at end of file
index ea5353f..8ad123f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf3e=['getIntervals','create','post','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','/:id','show','/:id/sub_intervals'];(function(_0x514030,_0x45aa55){var _0x5aab41=function(_0x4c255d){while(--_0x4c255d){_0x514030['push'](_0x514030['shift']());}};_0x5aab41(++_0x45aa55);}(_0xaf3e,0xcf));var _0xeaf3=function(_0x845505,_0x19e5f3){_0x845505=_0x845505-0x0;var _0x2513b9=_0xaf3e[_0x845505];return _0x2513b9;};'use strict';var multer=require(_0xeaf3('0x0'));var util=require(_0xeaf3('0x1'));var path=require('path');var timeout=require(_0xeaf3('0x2'));var express=require('express');var router=express[_0xeaf3('0x3')]();var fs_extra=require(_0xeaf3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeaf3('0x5'));var config=require(_0xeaf3('0x6'));var controller=require(_0xeaf3('0x7'));router[_0xeaf3('0x8')]('/',auth[_0xeaf3('0x9')](),controller['index']);router[_0xeaf3('0x8')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xb')]);router[_0xeaf3('0x8')](_0xeaf3('0xc'),auth['isAuthenticated'](),controller[_0xeaf3('0xd')]);router['post']('/',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0xe')]);router[_0xeaf3('0xf')]('/:id/sub_intervals',auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x10')]);router['post'](_0xeaf3('0x11'),auth['isAuthenticated'](),controller[_0xeaf3('0x12')]);router[_0xeaf3('0x13')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller['update']);router[_0xeaf3('0x14')](_0xeaf3('0xa'),auth[_0xeaf3('0x9')](),controller[_0xeaf3('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x624c=['/:id','show','/:id/sub_intervals','getIntervals','create','addInterval','post','/:id/sub_intervals/create_many','addIntervals','put','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index'];(function(_0x36d1f1,_0x1410f3){var _0x8f4c70=function(_0x59ab3f){while(--_0x59ab3f){_0x36d1f1['push'](_0x36d1f1['shift']());}};_0x8f4c70(++_0x1410f3);}(_0x624c,0x1ee));var _0xc624=function(_0x4402b6,_0x2c8543){_0x4402b6=_0x4402b6-0x0;var _0x1c9a9b=_0x624c[_0x4402b6];return _0x1c9a9b;};'use strict';var multer=require('multer');var util=require(_0xc624('0x0'));var path=require(_0xc624('0x1'));var timeout=require(_0xc624('0x2'));var express=require(_0xc624('0x3'));var router=express[_0xc624('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc624('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc624('0x6'));var controller=require('./interval.controller');router[_0xc624('0x7')]('/',auth[_0xc624('0x8')](),controller[_0xc624('0x9')]);router[_0xc624('0x7')](_0xc624('0xa'),auth[_0xc624('0x8')](),controller[_0xc624('0xb')]);router['get'](_0xc624('0xc'),auth[_0xc624('0x8')](),controller[_0xc624('0xd')]);router['post']('/',auth[_0xc624('0x8')](),controller[_0xc624('0xe')]);router['post'](_0xc624('0xc'),auth[_0xc624('0x8')](),controller[_0xc624('0xf')]);router[_0xc624('0x10')](_0xc624('0x11'),auth['isAuthenticated'](),controller[_0xc624('0x12')]);router[_0xc624('0x13')](_0xc624('0xa'),auth[_0xc624('0x8')](),controller['update']);router['delete']('/:id',auth[_0xc624('0x8')](),controller['destroy']);module[_0xc624('0x14')]=router;
\ No newline at end of file
index 7becaca..29f0585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa84f=['STRING','sequelize','exports'];(function(_0x3afb9f,_0x47489d){var _0x53b96c=function(_0x15da12){while(--_0x15da12){_0x3afb9f['push'](_0x3afb9f['shift']());}};_0x53b96c(++_0x47489d);}(_0xa84f,0xdf));var _0xfa84=function(_0x55ae99,_0x5ab789){_0x55ae99=_0x55ae99-0x0;var _0x4297e1=_0xa84f[_0x55ae99];return _0x4297e1;};'use strict';var Sequelize=require(_0xfa84('0x0'));module[_0xfa84('0x1')]={'name':{'type':Sequelize[_0xfa84('0x2')]},'description':{'type':Sequelize[_0xfa84('0x2')]},'interval':{'type':Sequelize[_0xfa84('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xe76b=['exports','STRING','sequelize'];(function(_0x50d428,_0x2e4b62){var _0x4aa089=function(_0x57b7f0){while(--_0x57b7f0){_0x50d428['push'](_0x50d428['shift']());}};_0x4aa089(++_0x2e4b62);}(_0xe76b,0xec));var _0xbe76=function(_0x27842c,_0x324fcb){_0x27842c=_0x27842c-0x0;var _0x493de8=_0xe76b[_0x27842c];return _0x493de8;};'use strict';var Sequelize=require(_0xbe76('0x0'));module[_0xbe76('0x1')]={'name':{'type':Sequelize[_0xbe76('0x2')]},'description':{'type':Sequelize[_0xbe76('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 9b1880e..6164f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02b=['json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','get','Intervals','UserProfileResource','destroy','error','stack','name','index','map','Interval','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','addInterval','IntervalId','getIntervals','sequelize','bulkCreate','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end'];(function(_0x4a3082,_0x5ad01b){var _0x4bae90=function(_0x5ee3a0){while(--_0x5ee3a0){_0x4a3082['push'](_0x4a3082['shift']());}};_0x4bae90(++_0x5ad01b);}(_0xf02b,0x9e));var _0xbf02=function(_0x57f7d7,_0x41443c){_0x57f7d7=_0x57f7d7-0x0;var _0x11b297=_0xf02b[_0x57f7d7];return _0x11b297;};'use strict';var emlformat=require(_0xbf02('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbf02('0x1'));var jsonpatch=require(_0xbf02('0x2'));var rp=require(_0xbf02('0x3'));var moment=require(_0xbf02('0x4'));var BPromise=require(_0xbf02('0x5'));var Mustache=require('mustache');var util=require(_0xbf02('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf02('0x7'));var squel=require(_0xbf02('0x8'));var crypto=require(_0xbf02('0x9'));var jsforce=require(_0xbf02('0xa'));var deskjs=require(_0xbf02('0xb'));var toCsv=require(_0xbf02('0xc'));var querystring=require(_0xbf02('0xd'));var Papa=require(_0xbf02('0xe'));var Redis=require(_0xbf02('0xf'));var authService=require(_0xbf02('0x10'));var qs=require(_0xbf02('0x11'));var as=require(_0xbf02('0x12'));var hardwareService=require(_0xbf02('0x13'));var logger=require('../../config/logger')(_0xbf02('0x14'));var utils=require(_0xbf02('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xbf02('0x16'));var db=require(_0xbf02('0x17'))['db'];var extensions=require(_0xbf02('0x18'));function respondWithStatusCode(_0x1929a2,_0x13ccc6){_0x13ccc6=_0x13ccc6||0xcc;return function(_0xffaa7b){if(_0xffaa7b){return _0x1929a2[_0xbf02('0x19')](_0x13ccc6);}return _0x1929a2[_0xbf02('0x1a')](_0x13ccc6)[_0xbf02('0x1b')]();};}function respondWithResult(_0xcf8948,_0x151a6c){_0x151a6c=_0x151a6c||0xc8;return function(_0x16a84e){if(_0x16a84e){return _0xcf8948[_0xbf02('0x1a')](_0x151a6c)[_0xbf02('0x1c')](_0x16a84e);}};}function respondWithFilteredResult(_0x55ec08,_0x8b8921){return function(_0x3aed19){if(_0x3aed19){var _0x192858=typeof _0x8b8921[_0xbf02('0x1d')]==='undefined'&&typeof _0x8b8921[_0xbf02('0x1e')]===_0xbf02('0x1f');var _0xc4ba03=_0x3aed19[_0xbf02('0x20')];var _0x4571f6=_0x192858?0x0:_0x8b8921[_0xbf02('0x1d')];var _0x59f3de=_0x192858?_0x3aed19[_0xbf02('0x20')]:_0x8b8921[_0xbf02('0x1d')]+_0x8b8921[_0xbf02('0x1e')];var _0x5e3761;if(_0x59f3de>=_0xc4ba03){_0x59f3de=_0xc4ba03;_0x5e3761=0xc8;}else{_0x5e3761=0xce;}_0x55ec08[_0xbf02('0x1a')](_0x5e3761);return _0x55ec08[_0xbf02('0x21')](_0xbf02('0x22'),_0x4571f6+'-'+_0x59f3de+'/'+_0xc4ba03)['json'](_0x3aed19);}return null;};}function patchUpdates(_0x37b637){return function(_0x1d9f89){try{jsonpatch[_0xbf02('0x23')](_0x1d9f89,_0x37b637,!![]);}catch(_0x59b58d){return BPromise[_0xbf02('0x24')](_0x59b58d);}return _0x1d9f89[_0xbf02('0x25')]();};}function saveUpdates(_0x5f016d,_0x191d0a){return function(_0x20b9c8){if(_0x20b9c8){return _0x20b9c8['update'](_0x5f016d)['then'](function(_0x26f0ed){return _0x26f0ed;});}return null;};}function removeEntity(_0x4e738f,_0x52ad96){return function(_0x4c3d40){if(_0x4c3d40){return _0x4c3d40['destroy']()[_0xbf02('0x26')](function(){var _0x245fd3=_0x4c3d40[_0xbf02('0x27')]({'plain':!![]});var _0x4b9431=_0xbf02('0x28');return db[_0xbf02('0x29')][_0xbf02('0x2a')]({'where':{'type':_0x4b9431,'resourceId':_0x245fd3['id']}})[_0xbf02('0x26')](function(){return _0x4c3d40;});})[_0xbf02('0x26')](function(){_0x4e738f[_0xbf02('0x1a')](0xcc)[_0xbf02('0x1b')]();});}};}function handleEntityNotFound(_0xa167e6,_0x1133c1){return function(_0x498f70){if(!_0x498f70){_0xa167e6['sendStatus'](0x194);}return _0x498f70;};}function handleError(_0x20cadb,_0x286697){_0x286697=_0x286697||0x1f4;return function(_0xbcec4){logger[_0xbf02('0x2b')](_0xbcec4[_0xbf02('0x2c')]);if(_0xbcec4['name']){delete _0xbcec4[_0xbf02('0x2d')];}_0x20cadb[_0xbf02('0x1a')](_0x286697)['send'](_0xbcec4);};}exports[_0xbf02('0x2e')]=function(_0x98bc4d,_0x2442f6){var _0xcc2353={},_0x43908f={},_0x5b4d54={'count':0x0,'rows':[]};var _0x528437=_[_0xbf02('0x2f')](db[_0xbf02('0x30')][_0xbf02('0x31')],function(_0x6f95b9){return{'name':_0x6f95b9[_0xbf02('0x32')],'type':_0x6f95b9['type'][_0xbf02('0x33')]};});_0x43908f[_0xbf02('0x34')]=_[_0xbf02('0x2f')](_0x528437,'name');_0x43908f[_0xbf02('0x35')]=_[_0xbf02('0x36')](_0x98bc4d[_0xbf02('0x35')]);_0x43908f[_0xbf02('0x37')]=_[_0xbf02('0x38')](_0x43908f[_0xbf02('0x34')],_0x43908f[_0xbf02('0x35')]);_0xcc2353[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x43908f['model'],qs[_0xbf02('0x3a')](_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x3a')]));_0xcc2353[_0xbf02('0x39')]=_0xcc2353[_0xbf02('0x39')][_0xbf02('0x3b')]?_0xcc2353[_0xbf02('0x39')]:_0x43908f[_0xbf02('0x34')];if(!_0x98bc4d['query'][_0xbf02('0x3c')](_0xbf02('0x3d'))){_0xcc2353[_0xbf02('0x1e')]=qs['limit'](_0x98bc4d['query'][_0xbf02('0x1e')]);_0xcc2353[_0xbf02('0x1d')]=qs[_0xbf02('0x1d')](_0x98bc4d['query'][_0xbf02('0x1d')]);}_0xcc2353[_0xbf02('0x3e')]=qs['sort'](_0x98bc4d['query'][_0xbf02('0x3f')]);_0xcc2353[_0xbf02('0x40')]=qs[_0xbf02('0x37')](_['pick'](_0x98bc4d[_0xbf02('0x35')],_0x43908f[_0xbf02('0x37')]),_0x528437);if(_0x98bc4d[_0xbf02('0x35')]['filter']){_0xcc2353[_0xbf02('0x40')]=_[_0xbf02('0x41')](_0xcc2353[_0xbf02('0x40')],{'$or':_[_0xbf02('0x2f')](_0x528437,function(_0x332861){if(_0x332861[_0xbf02('0x42')]!==_0xbf02('0x43')){var _0x20dd97={};_0x20dd97[_0x332861[_0xbf02('0x2d')]]={'$like':'%'+_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x44')]+'%'};return _0x20dd97;}})});}_0xcc2353=_[_0xbf02('0x41')]({},_0xcc2353,_0x98bc4d[_0xbf02('0x45')]);var _0x3607b2={'where':_0xcc2353[_0xbf02('0x40')]};return db[_0xbf02('0x30')]['count'](_0x3607b2)['then'](function(_0x3ddbf0){_0x5b4d54['count']=_0x3ddbf0;if(_0x98bc4d[_0xbf02('0x35')][_0xbf02('0x46')]){_0xcc2353[_0xbf02('0x47')]=[{'all':!![]}];}return db[_0xbf02('0x30')][_0xbf02('0x48')](_0xcc2353);})[_0xbf02('0x26')](function(_0x5c7fe6){_0x5b4d54[_0xbf02('0x49')]=_0x5c7fe6;return _0x5b4d54;})[_0xbf02('0x26')](respondWithFilteredResult(_0x2442f6,_0xcc2353))['catch'](handleError(_0x2442f6,null));};exports[_0xbf02('0x4a')]=function(_0x2f53cf,_0x1b257a){var _0x35c58f={'raw':!![],'where':{'id':_0x2f53cf[_0xbf02('0x4b')]['id']}},_0x57a6ab={};_0x57a6ab[_0xbf02('0x34')]=_[_0xbf02('0x36')](db['Interval']['rawAttributes']);_0x57a6ab['query']=_[_0xbf02('0x36')](_0x2f53cf['query']);_0x57a6ab['filters']=_[_0xbf02('0x38')](_0x57a6ab['model'],_0x57a6ab[_0xbf02('0x35')]);_0x35c58f[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x57a6ab['model'],qs['fields'](_0x2f53cf[_0xbf02('0x35')][_0xbf02('0x3a')]));_0x35c58f[_0xbf02('0x39')]=_0x35c58f['attributes'][_0xbf02('0x3b')]?_0x35c58f[_0xbf02('0x39')]:_0x57a6ab['model'];if(_0x2f53cf[_0xbf02('0x35')][_0xbf02('0x46')]){_0x35c58f[_0xbf02('0x47')]=[{'all':!![]}];}_0x35c58f=_['merge']({},_0x35c58f,_0x2f53cf[_0xbf02('0x45')]);return db['Interval'][_0xbf02('0x4c')](_0x35c58f)[_0xbf02('0x26')](handleEntityNotFound(_0x1b257a,null))['then'](respondWithResult(_0x1b257a,null))[_0xbf02('0x4d')](handleError(_0x1b257a,null));};exports[_0xbf02('0x4e')]=function(_0x12810d,_0x134aa0){return db['Interval']['create'](_0x12810d['body'],{})[_0xbf02('0x26')](function(_0x1da8cb){var _0x278361=_0x12810d[_0xbf02('0x4f')][_0xbf02('0x27')]({'plain':!![]});if(!_0x278361)throw new Error(_0xbf02('0x50'));if(_0x278361[_0xbf02('0x51')]===_0xbf02('0x4f')){var _0x145cf0=_0x1da8cb[_0xbf02('0x27')]({'plain':!![]});var _0x4c66a6='Intervals';return db[_0xbf02('0x52')][_0xbf02('0x4c')]({'where':{'name':_0x4c66a6,'userProfileId':_0x278361[_0xbf02('0x53')]},'raw':!![]})[_0xbf02('0x26')](function(_0x4ac7a2){if(_0x4ac7a2&&_0x4ac7a2[_0xbf02('0x54')]===0x0){return db[_0xbf02('0x29')][_0xbf02('0x4e')]({'name':_0x145cf0[_0xbf02('0x2d')],'resourceId':_0x145cf0['id'],'type':_0x4ac7a2[_0xbf02('0x2d')],'sectionId':_0x4ac7a2['id']},{})['then'](function(){return _0x1da8cb;});}else{return _0x1da8cb;}})['catch'](function(_0x7ec26d){logger['error'](_0xbf02('0x55'),_0x7ec26d);throw _0x7ec26d;});}return _0x1da8cb;})['then'](respondWithResult(_0x134aa0,0xc9))[_0xbf02('0x4d')](handleError(_0x134aa0,null));};exports[_0xbf02('0x56')]=function(_0x568dad,_0x5e1b1a){if(_0x568dad[_0xbf02('0x57')]['id']){delete _0x568dad['body']['id'];}return db['Interval'][_0xbf02('0x4c')]({'where':{'id':_0x568dad[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x5e1b1a,null))['then'](saveUpdates(_0x568dad['body'],null))[_0xbf02('0x26')](respondWithResult(_0x5e1b1a,null))[_0xbf02('0x4d')](handleError(_0x5e1b1a,null));};exports[_0xbf02('0x2a')]=function(_0x1a4a46,_0x1d613e){return db[_0xbf02('0x30')][_0xbf02('0x4c')]({'where':{'id':_0x1a4a46[_0xbf02('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1d613e,null))[_0xbf02('0x26')](removeEntity(_0x1d613e,null))[_0xbf02('0x4d')](handleError(_0x1d613e,null));};exports[_0xbf02('0x58')]=function(_0x2966d0,_0x42c9f0,_0x4730b2){if(_0x2966d0[_0xbf02('0x57')]['id']){delete _0x2966d0[_0xbf02('0x57')]['id'];}return db[_0xbf02('0x30')][_0xbf02('0x4c')]({'where':{'id':_0x2966d0[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x42c9f0,null))['then'](function(_0x5b364f){if(_0x5b364f){_0x2966d0[_0xbf02('0x57')][_0xbf02('0x59')]=_0x5b364f['id'];return db[_0xbf02('0x30')]['create'](_0x2966d0['body']);}})[_0xbf02('0x26')](respondWithResult(_0x42c9f0,null))['catch'](handleError(_0x42c9f0,null));};exports[_0xbf02('0x5a')]=function(_0x92f3be,_0x11e905,_0x1d28d5){var _0x1155ae={};var _0x21f17a={};var _0x41ad19;var _0x33a652;return db[_0xbf02('0x30')]['findOne']({'where':{'id':_0x92f3be[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x11e905,null))[_0xbf02('0x26')](function(_0x18185c){if(_0x18185c){_0x41ad19=_0x18185c;_0x21f17a[_0xbf02('0x34')]=_[_0xbf02('0x36')](db[_0xbf02('0x30')][_0xbf02('0x31')]);_0x21f17a['query']=_[_0xbf02('0x36')](_0x92f3be[_0xbf02('0x35')]);_0x21f17a[_0xbf02('0x37')]=_['intersection'](_0x21f17a['model'],_0x21f17a['query']);_0x1155ae[_0xbf02('0x39')]=_[_0xbf02('0x38')](_0x21f17a['model'],qs[_0xbf02('0x3a')](_0x92f3be[_0xbf02('0x35')][_0xbf02('0x3a')]));_0x1155ae[_0xbf02('0x39')]=_0x1155ae['attributes']['length']?_0x1155ae[_0xbf02('0x39')]:_0x21f17a[_0xbf02('0x34')];_0x1155ae[_0xbf02('0x3e')]=qs['sort'](_0x92f3be['query'][_0xbf02('0x3f')]);_0x1155ae[_0xbf02('0x40')]=qs[_0xbf02('0x37')](_['pick'](_0x92f3be[_0xbf02('0x35')],_0x21f17a[_0xbf02('0x37')]));if(_0x92f3be[_0xbf02('0x35')][_0xbf02('0x44')]){_0x1155ae[_0xbf02('0x40')]=_['merge'](_0x1155ae[_0xbf02('0x40')],{'$or':_[_0xbf02('0x2f')](_0x1155ae[_0xbf02('0x39')],function(_0x19aa5f){var _0x37eb6a={};_0x37eb6a[_0x19aa5f]={'$like':'%'+_0x92f3be[_0xbf02('0x35')][_0xbf02('0x44')]+'%'};return _0x37eb6a;})});}_0x1155ae=_['merge']({},_0x1155ae,_0x92f3be[_0xbf02('0x45')]);return _0x41ad19['getIntervals'](_0x1155ae);}})[_0xbf02('0x26')](function(_0x10cb47){if(_0x10cb47){_0x33a652=_0x10cb47[_0xbf02('0x3b')];if(!_0x92f3be[_0xbf02('0x35')][_0xbf02('0x3c')](_0xbf02('0x3d'))){_0x1155ae['limit']=qs[_0xbf02('0x1e')](_0x92f3be['query'][_0xbf02('0x1e')]);_0x1155ae[_0xbf02('0x1d')]=qs[_0xbf02('0x1d')](_0x92f3be['query'][_0xbf02('0x1d')]);}return _0x41ad19['getIntervals'](_0x1155ae);}})[_0xbf02('0x26')](function(_0x1cb1fb){if(_0x1cb1fb){return _0x1cb1fb?{'count':_0x33a652,'rows':_0x1cb1fb}:null;}})[_0xbf02('0x26')](respondWithResult(_0x11e905,null))[_0xbf02('0x4d')](handleError(_0x11e905,null));};exports['addIntervals']=function(_0x22425b,_0x8ac57c,_0x595460){return db[_0xbf02('0x30')]['findOne']({'where':{'id':_0x22425b[_0xbf02('0x4b')]['id']}})[_0xbf02('0x26')](handleEntityNotFound(_0x8ac57c,null))[_0xbf02('0x26')](function(_0xc9f3b8){if(_0xc9f3b8){return db[_0xbf02('0x5b')]['transaction'](function(_0x459461){return db[_0xbf02('0x30')]['destroy']({'where':{'IntervalId':_0x22425b['params']['id']},'transaction':_0x459461})[_0xbf02('0x26')](function(_0x208249){var _0x854d5a=_['map'](_0x22425b[_0xbf02('0x57')],function(_0x3ba15a){delete _0x3ba15a['id'];_0x3ba15a[_0xbf02('0x59')]=_0x22425b[_0xbf02('0x4b')]['id'];return _0x3ba15a;});return db[_0xbf02('0x30')][_0xbf02('0x5c')](_0x854d5a,{'transaction':_0x459461});});})[_0xbf02('0x26')](function(){return db['Interval'][_0xbf02('0x48')]({'where':{'IntervalId':_0x22425b[_0xbf02('0x4b')]['id']}});});}})[_0xbf02('0x26')](respondWithResult(_0x8ac57c,null))['catch'](handleError(_0x8ac57c,null));};
\ No newline at end of file
+var _0x105e=['Intervals','UserProfileResource','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','filters','pick','filter','merge','where','type','VIRTUAL','options','Interval','includeAll','findAll','catch','show','params','length','include','find','create','user','get','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','addInterval','IntervalId','order','getIntervals','addIntervals','findOne','sequelize','transaction','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','json','reject','save','then','destroy'];(function(_0x36c4a1,_0x4124fc){var _0x20c639=function(_0x30fe4f){while(--_0x30fe4f){_0x36c4a1['push'](_0x36c4a1['shift']());}};_0x20c639(++_0x4124fc);}(_0x105e,0xe6));var _0xe105=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x105e[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe105('0x0'));var zipdir=require(_0xe105('0x1'));var jsonpatch=require(_0xe105('0x2'));var rp=require('request-promise');var moment=require(_0xe105('0x3'));var BPromise=require(_0xe105('0x4'));var Mustache=require('mustache');var util=require(_0xe105('0x5'));var path=require(_0xe105('0x6'));var sox=require('sox');var csv=require(_0xe105('0x7'));var ejs=require(_0xe105('0x8'));var fs=require('fs');var fs_extra=require(_0xe105('0x9'));var _=require(_0xe105('0xa'));var squel=require(_0xe105('0xb'));var crypto=require(_0xe105('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe105('0x7'));var querystring=require(_0xe105('0xd'));var Papa=require(_0xe105('0xe'));var Redis=require(_0xe105('0xf'));var authService=require(_0xe105('0x10'));var qs=require(_0xe105('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe105('0x12'));var logger=require(_0xe105('0x13'))('api');var utils=require(_0xe105('0x14'));var config=require(_0xe105('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe105('0x16'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0xd76a19,_0x1d1bec){_0x1d1bec=_0x1d1bec||0xcc;return function(_0x36558c){if(_0x36558c){return _0xd76a19[_0xe105('0x17')](_0x1d1bec);}return _0xd76a19[_0xe105('0x18')](_0x1d1bec)[_0xe105('0x19')]();};}function respondWithResult(_0x289644,_0x3284b2){_0x3284b2=_0x3284b2||0xc8;return function(_0x508b6c){if(_0x508b6c){return _0x289644[_0xe105('0x18')](_0x3284b2)['json'](_0x508b6c);}};}function respondWithFilteredResult(_0x17d839,_0x2dd0b4){return function(_0x3888a4){if(_0x3888a4){var _0x13f65a=typeof _0x2dd0b4[_0xe105('0x1a')]===_0xe105('0x1b')&&typeof _0x2dd0b4['limit']===_0xe105('0x1b');var _0x1054db=_0x3888a4[_0xe105('0x1c')];var _0x35c04a=_0x13f65a?0x0:_0x2dd0b4[_0xe105('0x1a')];var _0x46f415=_0x13f65a?_0x3888a4[_0xe105('0x1c')]:_0x2dd0b4[_0xe105('0x1a')]+_0x2dd0b4['limit'];var _0x57451c;if(_0x46f415>=_0x1054db){_0x46f415=_0x1054db;_0x57451c=0xc8;}else{_0x57451c=0xce;}_0x17d839[_0xe105('0x18')](_0x57451c);return _0x17d839['set']('Content-Range',_0x35c04a+'-'+_0x46f415+'/'+_0x1054db)[_0xe105('0x1d')](_0x3888a4);}return null;};}function patchUpdates(_0x3747e0){return function(_0x55a92a){try{jsonpatch['apply'](_0x55a92a,_0x3747e0,!![]);}catch(_0x44a435){return BPromise[_0xe105('0x1e')](_0x44a435);}return _0x55a92a[_0xe105('0x1f')]();};}function saveUpdates(_0xde0399,_0x16ebde){return function(_0x2b7dba){if(_0x2b7dba){return _0x2b7dba['update'](_0xde0399)[_0xe105('0x20')](function(_0x3e420f){return _0x3e420f;});}return null;};}function removeEntity(_0x2b7951,_0x29ccb9){return function(_0x382dc1){if(_0x382dc1){return _0x382dc1[_0xe105('0x21')]()['then'](function(){var _0xba0ccb=_0x382dc1['get']({'plain':!![]});var _0x107264=_0xe105('0x22');return db[_0xe105('0x23')][_0xe105('0x21')]({'where':{'type':_0x107264,'resourceId':_0xba0ccb['id']}})[_0xe105('0x20')](function(){return _0x382dc1;});})[_0xe105('0x20')](function(){_0x2b7951[_0xe105('0x18')](0xcc)[_0xe105('0x19')]();});}};}function handleEntityNotFound(_0x2cee7a,_0x30208e){return function(_0x4a39e6){if(!_0x4a39e6){_0x2cee7a[_0xe105('0x17')](0x194);}return _0x4a39e6;};}function handleError(_0x2b04dd,_0x5cf33f){_0x5cf33f=_0x5cf33f||0x1f4;return function(_0x1ba5fb){logger['error'](_0x1ba5fb[_0xe105('0x24')]);if(_0x1ba5fb[_0xe105('0x25')]){delete _0x1ba5fb[_0xe105('0x25')];}_0x2b04dd[_0xe105('0x18')](_0x5cf33f)['send'](_0x1ba5fb);};}exports[_0xe105('0x26')]=function(_0x12d653,_0x3b0ea0){var _0x3cc79b={},_0x19c6ea={},_0x27bf58={'count':0x0,'rows':[]};var _0x176c43=_[_0xe105('0x27')](db['Interval'][_0xe105('0x28')],function(_0xdfad9){return{'name':_0xdfad9[_0xe105('0x29')],'type':_0xdfad9['type'][_0xe105('0x2a')]};});_0x19c6ea[_0xe105('0x2b')]=_[_0xe105('0x27')](_0x176c43,_0xe105('0x25'));_0x19c6ea[_0xe105('0x2c')]=_[_0xe105('0x2d')](_0x12d653[_0xe105('0x2c')]);_0x19c6ea['filters']=_[_0xe105('0x2e')](_0x19c6ea['model'],_0x19c6ea[_0xe105('0x2c')]);_0x3cc79b[_0xe105('0x2f')]=_[_0xe105('0x2e')](_0x19c6ea[_0xe105('0x2b')],qs[_0xe105('0x30')](_0x12d653['query'][_0xe105('0x30')]));_0x3cc79b[_0xe105('0x2f')]=_0x3cc79b[_0xe105('0x2f')]['length']?_0x3cc79b['attributes']:_0x19c6ea['model'];if(!_0x12d653[_0xe105('0x2c')][_0xe105('0x31')](_0xe105('0x32'))){_0x3cc79b[_0xe105('0x33')]=qs['limit'](_0x12d653[_0xe105('0x2c')][_0xe105('0x33')]);_0x3cc79b[_0xe105('0x1a')]=qs['offset'](_0x12d653['query'][_0xe105('0x1a')]);}_0x3cc79b['order']=qs[_0xe105('0x34')](_0x12d653['query'][_0xe105('0x34')]);_0x3cc79b['where']=qs[_0xe105('0x35')](_[_0xe105('0x36')](_0x12d653[_0xe105('0x2c')],_0x19c6ea['filters']),_0x176c43);if(_0x12d653['query'][_0xe105('0x37')]){_0x3cc79b['where']=_[_0xe105('0x38')](_0x3cc79b[_0xe105('0x39')],{'$or':_['map'](_0x176c43,function(_0x2a7fc5){if(_0x2a7fc5[_0xe105('0x3a')]!==_0xe105('0x3b')){var _0x4104dc={};_0x4104dc[_0x2a7fc5[_0xe105('0x25')]]={'$like':'%'+_0x12d653[_0xe105('0x2c')][_0xe105('0x37')]+'%'};return _0x4104dc;}})});}_0x3cc79b=_[_0xe105('0x38')]({},_0x3cc79b,_0x12d653[_0xe105('0x3c')]);var _0x4ce51d={'where':_0x3cc79b[_0xe105('0x39')]};return db[_0xe105('0x3d')][_0xe105('0x1c')](_0x4ce51d)[_0xe105('0x20')](function(_0x26ff26){_0x27bf58[_0xe105('0x1c')]=_0x26ff26;if(_0x12d653['query'][_0xe105('0x3e')]){_0x3cc79b['include']=[{'all':!![]}];}return db[_0xe105('0x3d')][_0xe105('0x3f')](_0x3cc79b);})['then'](function(_0x32bfc5){_0x27bf58['rows']=_0x32bfc5;return _0x27bf58;})[_0xe105('0x20')](respondWithFilteredResult(_0x3b0ea0,_0x3cc79b))[_0xe105('0x40')](handleError(_0x3b0ea0,null));};exports[_0xe105('0x41')]=function(_0x5ab779,_0x460626){var _0x410fdc={'raw':!![],'where':{'id':_0x5ab779[_0xe105('0x42')]['id']}},_0x502c7b={};_0x502c7b[_0xe105('0x2b')]=_[_0xe105('0x2d')](db[_0xe105('0x3d')][_0xe105('0x28')]);_0x502c7b[_0xe105('0x2c')]=_['keys'](_0x5ab779['query']);_0x502c7b[_0xe105('0x35')]=_[_0xe105('0x2e')](_0x502c7b[_0xe105('0x2b')],_0x502c7b['query']);_0x410fdc[_0xe105('0x2f')]=_['intersection'](_0x502c7b['model'],qs[_0xe105('0x30')](_0x5ab779[_0xe105('0x2c')]['fields']));_0x410fdc[_0xe105('0x2f')]=_0x410fdc[_0xe105('0x2f')][_0xe105('0x43')]?_0x410fdc[_0xe105('0x2f')]:_0x502c7b[_0xe105('0x2b')];if(_0x5ab779[_0xe105('0x2c')][_0xe105('0x3e')]){_0x410fdc[_0xe105('0x44')]=[{'all':!![]}];}_0x410fdc=_[_0xe105('0x38')]({},_0x410fdc,_0x5ab779[_0xe105('0x3c')]);return db[_0xe105('0x3d')][_0xe105('0x45')](_0x410fdc)['then'](handleEntityNotFound(_0x460626,null))[_0xe105('0x20')](respondWithResult(_0x460626,null))['catch'](handleError(_0x460626,null));};exports[_0xe105('0x46')]=function(_0x4ab5f6,_0x37550f){return db[_0xe105('0x3d')][_0xe105('0x46')](_0x4ab5f6['body'],{})[_0xe105('0x20')](function(_0x4ca370){var _0x46ec7a=_0x4ab5f6[_0xe105('0x47')][_0xe105('0x48')]({'plain':!![]});if(!_0x46ec7a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x46ec7a[_0xe105('0x49')]===_0xe105('0x47')){var _0x163692=_0x4ca370[_0xe105('0x48')]({'plain':!![]});var _0x139c13='Intervals';return db['UserProfileSection']['find']({'where':{'name':_0x139c13,'userProfileId':_0x46ec7a[_0xe105('0x4a')]},'raw':!![]})['then'](function(_0x4be34d){if(_0x4be34d&&_0x4be34d[_0xe105('0x4b')]===0x0){return db[_0xe105('0x23')]['create']({'name':_0x163692[_0xe105('0x25')],'resourceId':_0x163692['id'],'type':_0x4be34d[_0xe105('0x25')],'sectionId':_0x4be34d['id']},{})[_0xe105('0x20')](function(){return _0x4ca370;});}else{return _0x4ca370;}})[_0xe105('0x40')](function(_0x371b33){logger[_0xe105('0x4c')](_0xe105('0x4d'),_0x371b33);throw _0x371b33;});}return _0x4ca370;})['then'](respondWithResult(_0x37550f,0xc9))[_0xe105('0x40')](handleError(_0x37550f,null));};exports[_0xe105('0x4e')]=function(_0xd7575e,_0x1f70b2){if(_0xd7575e[_0xe105('0x4f')]['id']){delete _0xd7575e[_0xe105('0x4f')]['id'];}return db[_0xe105('0x3d')][_0xe105('0x45')]({'where':{'id':_0xd7575e[_0xe105('0x42')]['id']}})[_0xe105('0x20')](handleEntityNotFound(_0x1f70b2,null))[_0xe105('0x20')](saveUpdates(_0xd7575e[_0xe105('0x4f')],null))[_0xe105('0x20')](respondWithResult(_0x1f70b2,null))['catch'](handleError(_0x1f70b2,null));};exports[_0xe105('0x21')]=function(_0x3d8377,_0x38b7ae){return db[_0xe105('0x3d')][_0xe105('0x45')]({'where':{'id':_0x3d8377[_0xe105('0x42')]['id']}})[_0xe105('0x20')](handleEntityNotFound(_0x38b7ae,null))[_0xe105('0x20')](removeEntity(_0x38b7ae,null))['catch'](handleError(_0x38b7ae,null));};exports[_0xe105('0x50')]=function(_0xc084a6,_0x4a964f,_0x4f0f56){if(_0xc084a6['body']['id']){delete _0xc084a6[_0xe105('0x4f')]['id'];}return db[_0xe105('0x3d')][_0xe105('0x45')]({'where':{'id':_0xc084a6[_0xe105('0x42')]['id']}})['then'](handleEntityNotFound(_0x4a964f,null))['then'](function(_0x551c88){if(_0x551c88){_0xc084a6[_0xe105('0x4f')][_0xe105('0x51')]=_0x551c88['id'];return db[_0xe105('0x3d')][_0xe105('0x46')](_0xc084a6[_0xe105('0x4f')]);}})[_0xe105('0x20')](respondWithResult(_0x4a964f,null))[_0xe105('0x40')](handleError(_0x4a964f,null));};exports['getIntervals']=function(_0x17ca21,_0x2d2783,_0x5095b4){var _0x5524ae={};var _0x3d3615={};var _0x24aaac;var _0x4a8e37;return db[_0xe105('0x3d')]['findOne']({'where':{'id':_0x17ca21[_0xe105('0x42')]['id']}})['then'](handleEntityNotFound(_0x2d2783,null))[_0xe105('0x20')](function(_0x53cb58){if(_0x53cb58){_0x24aaac=_0x53cb58;_0x3d3615[_0xe105('0x2b')]=_[_0xe105('0x2d')](db['Interval']['rawAttributes']);_0x3d3615[_0xe105('0x2c')]=_[_0xe105('0x2d')](_0x17ca21['query']);_0x3d3615[_0xe105('0x35')]=_[_0xe105('0x2e')](_0x3d3615[_0xe105('0x2b')],_0x3d3615['query']);_0x5524ae[_0xe105('0x2f')]=_[_0xe105('0x2e')](_0x3d3615[_0xe105('0x2b')],qs[_0xe105('0x30')](_0x17ca21[_0xe105('0x2c')][_0xe105('0x30')]));_0x5524ae[_0xe105('0x2f')]=_0x5524ae[_0xe105('0x2f')][_0xe105('0x43')]?_0x5524ae[_0xe105('0x2f')]:_0x3d3615[_0xe105('0x2b')];_0x5524ae[_0xe105('0x52')]=qs[_0xe105('0x34')](_0x17ca21[_0xe105('0x2c')]['sort']);_0x5524ae[_0xe105('0x39')]=qs['filters'](_[_0xe105('0x36')](_0x17ca21[_0xe105('0x2c')],_0x3d3615[_0xe105('0x35')]));if(_0x17ca21[_0xe105('0x2c')][_0xe105('0x37')]){_0x5524ae[_0xe105('0x39')]=_[_0xe105('0x38')](_0x5524ae['where'],{'$or':_[_0xe105('0x27')](_0x5524ae['attributes'],function(_0x59e498){var _0x3c0fbb={};_0x3c0fbb[_0x59e498]={'$like':'%'+_0x17ca21[_0xe105('0x2c')][_0xe105('0x37')]+'%'};return _0x3c0fbb;})});}_0x5524ae=_[_0xe105('0x38')]({},_0x5524ae,_0x17ca21[_0xe105('0x3c')]);return _0x24aaac[_0xe105('0x53')](_0x5524ae);}})[_0xe105('0x20')](function(_0x1ae400){if(_0x1ae400){_0x4a8e37=_0x1ae400[_0xe105('0x43')];if(!_0x17ca21[_0xe105('0x2c')][_0xe105('0x31')](_0xe105('0x32'))){_0x5524ae[_0xe105('0x33')]=qs[_0xe105('0x33')](_0x17ca21['query'][_0xe105('0x33')]);_0x5524ae[_0xe105('0x1a')]=qs[_0xe105('0x1a')](_0x17ca21['query']['offset']);}return _0x24aaac[_0xe105('0x53')](_0x5524ae);}})['then'](function(_0x2b097a){if(_0x2b097a){return _0x2b097a?{'count':_0x4a8e37,'rows':_0x2b097a}:null;}})['then'](respondWithResult(_0x2d2783,null))[_0xe105('0x40')](handleError(_0x2d2783,null));};exports[_0xe105('0x54')]=function(_0x5ecb84,_0x3c8f95,_0xec728d){return db['Interval'][_0xe105('0x55')]({'where':{'id':_0x5ecb84[_0xe105('0x42')]['id']}})[_0xe105('0x20')](handleEntityNotFound(_0x3c8f95,null))[_0xe105('0x20')](function(_0x3675da){if(_0x3675da){return db[_0xe105('0x56')][_0xe105('0x57')](function(_0x58e4fa){return db[_0xe105('0x3d')][_0xe105('0x21')]({'where':{'IntervalId':_0x5ecb84[_0xe105('0x42')]['id']},'transaction':_0x58e4fa})[_0xe105('0x20')](function(_0x490765){var _0x1a41e2=_['map'](_0x5ecb84[_0xe105('0x4f')],function(_0xa392d){delete _0xa392d['id'];_0xa392d['IntervalId']=_0x5ecb84[_0xe105('0x42')]['id'];return _0xa392d;});return db[_0xe105('0x3d')]['bulkCreate'](_0x1a41e2,{'transaction':_0x58e4fa});});})[_0xe105('0x20')](function(){return db[_0xe105('0x3d')][_0xe105('0x3f')]({'where':{'IntervalId':_0x5ecb84[_0xe105('0x42')]['id']}});});}})[_0xe105('0x20')](respondWithResult(_0x3c8f95,null))[_0xe105('0x40')](handleError(_0x3c8f95,null));};
\ No newline at end of file
index 8f498eb..ec3aa7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5907=['lodash','../../config/logger','api','path','rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite'];(function(_0x4e1bd3,_0xda464d){var _0x234e83=function(_0x144f4d){while(--_0x144f4d){_0x4e1bd3['push'](_0x4e1bd3['shift']());}};_0x234e83(++_0xda464d);}(_0x5907,0xa8));var _0x7590=function(_0x1ee14b,_0x3e2f6e){_0x1ee14b=_0x1ee14b-0x0;var _0x51f54f=_0x5907[_0x1ee14b];return _0x51f54f;};'use strict';var _=require(_0x7590('0x0'));var util=require('util');var logger=require(_0x7590('0x1'))(_0x7590('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7590('0x3'));var rimraf=require(_0x7590('0x4'));var config=require(_0x7590('0x5'));var attributes=require('./interval.attributes');var extensions=require(_0x7590('0x6'));module[_0x7590('0x7')]=function(_0x10298a,_0x3e9c07){return _0x10298a[_0x7590('0x8')](_0x7590('0x9'),attributes,{'tableName':_0x7590('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x211bd1,_0x468728){extensions[_0x7590('0xb')](_0x10298a,_0x211bd1);},'afterBulkCreate':function(_0x18c887,_0x350772,_0x561f54){_0x561f54();extensions[_0x7590('0xb')](_0x10298a,_0x18c887[0x0]);},'afterUpdate':function(_0x41ede6,_0x234e9f){extensions['rewrite'](_0x10298a,_0x41ede6);},'afterDestroy':function(_0x324452,_0x118892){extensions[_0x7590('0xb')](_0x10298a,_0x324452);}}});};
\ No newline at end of file
+var _0xcb7a=['api','bluebird','request-promise','path','./interval.attributes','../../components/extensions/rewrite','exports','Interval','tools_intervals','rewrite','lodash','../../config/logger'];(function(_0x3cb6dc,_0x120dd3){var _0x47ec89=function(_0x55150a){while(--_0x55150a){_0x3cb6dc['push'](_0x3cb6dc['shift']());}};_0x47ec89(++_0x120dd3);}(_0xcb7a,0x1c6));var _0xacb7=function(_0x469b25,_0x46e36f){_0x469b25=_0x469b25-0x0;var _0x362902=_0xcb7a[_0x469b25];return _0x362902;};'use strict';var _=require(_0xacb7('0x0'));var util=require('util');var logger=require(_0xacb7('0x1'))(_0xacb7('0x2'));var moment=require('moment');var BPromise=require(_0xacb7('0x3'));var rp=require(_0xacb7('0x4'));var fs=require('fs');var path=require(_0xacb7('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xacb7('0x6'));var extensions=require(_0xacb7('0x7'));module[_0xacb7('0x8')]=function(_0x260e16,_0x5ac503){return _0x260e16['define'](_0xacb7('0x9'),attributes,{'tableName':_0xacb7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x21a26a,_0x16e42f){extensions['rewrite'](_0x260e16,_0x21a26a);},'afterBulkCreate':function(_0x1b2981,_0xd688d,_0x277aee){_0x277aee();extensions[_0xacb7('0xb')](_0x260e16,_0x1b2981[0x0]);},'afterUpdate':function(_0x33086c,_0x2884b0){extensions[_0xacb7('0xb')](_0x260e16,_0x33086c);},'afterDestroy':function(_0x5713ab,_0x320285){extensions['rewrite'](_0x260e16,_0x5713ab);}}});};
\ No newline at end of file
index a0f741a..1cda144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x56825b,_0x172b8d){var _0x69ce77=function(_0x348a1c){while(--_0x348a1c){_0x56825b['push'](_0x56825b['shift']());}};_0x69ce77(++_0x172b8d);}(_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 moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x4b1032,_0x36952e){var _0x5a1d55=function(_0x282e9b){while(--_0x282e9b){_0x4b1032['push'](_0x4b1032['shift']());}};_0x5a1d55(++_0x36952e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 815c003..1f67f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x209fd0,_0x103307){var _0x4d26fe=function(_0x14633d){while(--_0x14633d){_0x209fd0['push'](_0x209fd0['shift']());}};_0x4d26fe(++_0x103307);}(_0xadb5,0xad));var _0x5adb=function(_0x152aad,_0x204de8){_0x152aad=_0x152aad-0x0;var _0x363bb4=_0xadb5[_0x152aad];return _0x363bb4;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
+var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x25b4ea,_0xbda421){var _0x2b3cf3=function(_0x362e3f){while(--_0x362e3f){_0x25b4ea['push'](_0x25b4ea['shift']());}};_0x2b3cf3(++_0xbda421);}(_0xdb28,0x106));var _0x8db2=function(_0x1af0ef,_0x9ef983){_0x1af0ef=_0x1af0ef-0x0;var _0x475be8=_0xdb28[_0x1af0ef];return _0x475be8;};'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
index 84ed116..caffa47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa76a=['send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','MOTGUI','summary','Report','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','newToken','customfield_11503','name','customfield_11504','reason','application/json','Basic\x20','toString','base64','setEncoding','utf8','data','end','status','statusCode','json','parse','error','api.jira','write','openIssue'];(function(_0x1531f6,_0x55f1c1){var _0x586be1=function(_0x263ad4){while(--_0x263ad4){_0x1531f6['push'](_0x1531f6['shift']());}};_0x586be1(++_0x55f1c1);}(_0xa76a,0x1bf));var _0xaa76=function(_0x3fb9dd,_0x174fff){_0x3fb9dd=_0x3fb9dd-0x0;var _0x20136a=_0xa76a[_0x3fb9dd];return _0x20136a;};'use strict';var BPromise=require(_0xaa76('0x0'));var https=require(_0xaa76('0x1'));var logger=require('../../config/logger')(_0xaa76('0x2'));var USERNAME=_0xaa76('0x3');var PASSWORD='3eAmWpBVP0';function openIssue(_0x13764f,_0x5b144b){var _0x5df6dd={'fields':{'project':{'key':_0x13764f['key']||_0xaa76('0x4')},'summary':(_0x13764f[_0xaa76('0x5')]||_0xaa76('0x6'))+'\x20from\x20'+_0x13764f['ip'],'description':_0x13764f[_0xaa76('0x7')]||JSON[_0xaa76('0x8')](_0x13764f),'issuetype':{'name':_0x13764f[_0xaa76('0x9')]||_0xaa76('0xa')}}};_0x5df6dd[_0xaa76('0xb')][_0xaa76('0xc')]=_0x13764f[_0xaa76('0xd')];_0x5df6dd['fields'][_0xaa76('0xe')]=_0x13764f[_0xaa76('0xf')];_0x5df6dd[_0xaa76('0xb')]['customfield_11502']=_0x13764f[_0xaa76('0x10')];_0x5df6dd[_0xaa76('0xb')][_0xaa76('0x11')]=_0x13764f[_0xaa76('0x12')];_0x5df6dd[_0xaa76('0xb')][_0xaa76('0x13')]=_0x13764f[_0xaa76('0x14')];_0x5df6dd['fields']['customfield_10102']=_0x13764f['ip'];var _0x4dde12={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xaa76('0x15'),'Authorization':_0xaa76('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xaa76('0x17')](_0xaa76('0x18'))}};var _0x3dd8b6=JSON[_0xaa76('0x8')](_0x5df6dd);var _0x4cde91=https['request'](_0x4dde12,function(_0x56c98e){_0x56c98e[_0xaa76('0x19')](_0xaa76('0x1a'));var _0x58bb44='';_0x56c98e['on'](_0xaa76('0x1b'),function(_0x33928f){_0x58bb44+=_0x33928f;});_0x56c98e['on'](_0xaa76('0x1c'),function(){if(_0x5b144b){return _0x5b144b[_0xaa76('0x1d')](_0x56c98e[_0xaa76('0x1e')])[_0xaa76('0x1f')](JSON[_0xaa76('0x20')](_0x58bb44));}});});_0x4cde91['on'](_0xaa76('0x21'),function(_0x2f4369){if(_0x5b144b){return _0x5b144b[_0xaa76('0x1d')](0x1f4)[_0xaa76('0x1f')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xaa76('0x22')}]});}});_0x4cde91[_0xaa76('0x23')](_0x3dd8b6);_0x4cde91[_0xaa76('0x1c')]();}exports[_0xaa76('0x24')]=openIssue;exports[_0xaa76('0x25')]=function(_0x47b41c,_0x600d26){_0x47b41c[_0xaa76('0x26')]['ip']=_0x47b41c[_0xaa76('0x27')][_0xaa76('0x28')]||_0x47b41c[_0xaa76('0x29')][_0xaa76('0x2a')]||_0x47b41c['socket']['remoteAddress']||_0x47b41c[_0xaa76('0x29')][_0xaa76('0x2b')][_0xaa76('0x2a')];return openIssue(_0x47b41c['body'],_0x600d26);};
\ No newline at end of file
+var _0x1abc=['Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','body','headers','connection','remoteAddress','socket','bluebird','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','Bug','fields','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','base64','stringify','request','setEncoding','data','end','status','statusCode','json','parse'];(function(_0x367698,_0x3bdbe8){var _0x5b8fc8=function(_0x541362){while(--_0x541362){_0x367698['push'](_0x367698['shift']());}};_0x5b8fc8(++_0x3bdbe8);}(_0x1abc,0x181));var _0xc1ab=function(_0x38a2fa,_0xb21e12){_0x38a2fa=_0x38a2fa-0x0;var _0x1fb3ad=_0x1abc[_0x38a2fa];return _0x1fb3ad;};'use strict';var BPromise=require(_0xc1ab('0x0'));var https=require('https');var logger=require(_0xc1ab('0x1'))(_0xc1ab('0x2'));var USERNAME=_0xc1ab('0x3');var PASSWORD=_0xc1ab('0x4');function openIssue(_0x446d70,_0x4c25af){var _0x5ad4e7={'fields':{'project':{'key':_0x446d70[_0xc1ab('0x5')]||'MOTGUI'},'summary':(_0x446d70[_0xc1ab('0x6')]||_0xc1ab('0x7'))+_0xc1ab('0x8')+_0x446d70['ip'],'description':_0x446d70[_0xc1ab('0x9')]||JSON['stringify'](_0x446d70),'issuetype':{'name':_0x446d70['issuetype']||_0xc1ab('0xa')}}};_0x5ad4e7[_0xc1ab('0xb')]['customfield_11500']=_0x446d70['email'];_0x5ad4e7[_0xc1ab('0xb')]['customfield_11501']=_0x446d70[_0xc1ab('0xc')];_0x5ad4e7[_0xc1ab('0xb')][_0xc1ab('0xd')]=_0x446d70[_0xc1ab('0xe')];_0x5ad4e7[_0xc1ab('0xb')][_0xc1ab('0xf')]=_0x446d70[_0xc1ab('0x10')];_0x5ad4e7['fields'][_0xc1ab('0x11')]=_0x446d70[_0xc1ab('0x12')];_0x5ad4e7[_0xc1ab('0xb')][_0xc1ab('0x13')]=_0x446d70['ip'];var _0x390303={'host':_0xc1ab('0x14'),'port':0x1bb,'path':_0xc1ab('0x15'),'method':_0xc1ab('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0xc1ab('0x17'),'Authorization':_0xc1ab('0x18')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0xc1ab('0x19'))}};var _0x2f6e8a=JSON[_0xc1ab('0x1a')](_0x5ad4e7);var _0xddd1d4=https[_0xc1ab('0x1b')](_0x390303,function(_0x3b51e1){_0x3b51e1[_0xc1ab('0x1c')]('utf8');var _0x5b3a9e='';_0x3b51e1['on'](_0xc1ab('0x1d'),function(_0x582513){_0x5b3a9e+=_0x582513;});_0x3b51e1['on'](_0xc1ab('0x1e'),function(){if(_0x4c25af){return _0x4c25af[_0xc1ab('0x1f')](_0x3b51e1[_0xc1ab('0x20')])[_0xc1ab('0x21')](JSON[_0xc1ab('0x22')](_0x5b3a9e));}});});_0xddd1d4['on']('error',function(_0x166930){if(_0x4c25af){return _0x4c25af['status'](0x1f4)['json']({'errors':[{'message':_0xc1ab('0x23'),'type':'api.jira'}]});}});_0xddd1d4[_0xc1ab('0x24')](_0x2f6e8a);_0xddd1d4['end']();}exports['openIssue']=openIssue;exports['send']=function(_0xa2ab0,_0x124638){_0xa2ab0[_0xc1ab('0x25')]['ip']=_0xa2ab0[_0xc1ab('0x26')]['x-forwarded-for']||_0xa2ab0[_0xc1ab('0x27')][_0xc1ab('0x28')]||_0xa2ab0[_0xc1ab('0x29')][_0xc1ab('0x28')]||_0xa2ab0[_0xc1ab('0x27')][_0xc1ab('0x29')]['remoteAddress'];return openIssue(_0xa2ab0[_0xc1ab('0x25')],_0x124638);};
\ No newline at end of file
index a4086c7..ed3dd87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','create','put','/:id','update'];(function(_0x235a88,_0x4fca20){var _0x1d8323=function(_0xb85a8b){while(--_0xb85a8b){_0x235a88['push'](_0x235a88['shift']());}};_0x1d8323(++_0x4fca20);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xf3cd[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var path=require(_0xdf3c('0x2'));var timeout=require(_0xdf3c('0x3'));var express=require(_0xdf3c('0x4'));var router=express[_0xdf3c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdf3c('0x6'));var interaction=require(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var controller=require('./jscriptyAnswerReport.controller');router[_0xdf3c('0x9')]('/',auth[_0xdf3c('0xa')](),controller[_0xdf3c('0xb')]);router[_0xdf3c('0x9')](_0xdf3c('0xc'),auth[_0xdf3c('0xa')](),controller['describe']);router[_0xdf3c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0xe')]('/',auth['isAuthenticated'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x10')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller[_0xdf3c('0x12')]);router[_0xdf3c('0x13')](_0xdf3c('0x11'),auth[_0xdf3c('0xa')](),controller['destroy']);module[_0xdf3c('0x14')]=router;
\ No newline at end of file
+var _0x6c76=['express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','post','create','update','delete','destroy','multer','util','path'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6c76,0x184));var _0x66c7=function(_0x430f35,_0x509f96){_0x430f35=_0x430f35-0x0;var _0xae3a81=_0x6c76[_0x430f35];return _0xae3a81;};'use strict';var multer=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var path=require(_0x66c7('0x2'));var timeout=require('connect-timeout');var express=require(_0x66c7('0x3'));var router=express[_0x66c7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x66c7('0x5'));var config=require(_0x66c7('0x6'));var controller=require('./jscriptyAnswerReport.controller');router[_0x66c7('0x7')]('/',auth[_0x66c7('0x8')](),controller['index']);router[_0x66c7('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x66c7('0x9')]);router[_0x66c7('0x7')](_0x66c7('0xa'),auth['isAuthenticated'](),controller[_0x66c7('0xb')]);router[_0x66c7('0xc')]('/',auth[_0x66c7('0x8')](),controller[_0x66c7('0xd')]);router['put'](_0x66c7('0xa'),auth[_0x66c7('0x8')](),controller[_0x66c7('0xe')]);router[_0x66c7('0xf')](_0x66c7('0xa'),auth[_0x66c7('0x8')](),controller[_0x66c7('0x10')]);module['exports']=router;
\ No newline at end of file
index 582ee50..edd9d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x7a54,0x106));var _0x47a5=function(_0x7d10cf,_0x209a3a){_0x7d10cf=_0x7d10cf-0x0;var _0x396a1b=_0x7a54[_0x7d10cf];return _0x396a1b;};'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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x342fdb,_0x8c24ff){_0x342fdb=_0x342fdb-0x0;var _0x51ffd2=_0x7a54[_0x342fdb];return _0x51ffd2;};'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 3817dbd..70aa8b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae1c=['send','index','map','JscriptyAnswerReport','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x390733,_0x1e3d32){var _0x33beb9=function(_0x4491a3){while(--_0x4491a3){_0x390733['push'](_0x390733['shift']());}};_0x33beb9(++_0x1e3d32);}(_0xae1c,0xff));var _0xcae1=function(_0x1d8d01,_0x709a1b){_0x1d8d01=_0x1d8d01-0x0;var _0x51a8ec=_0xae1c[_0x1d8d01];return _0x51a8ec;};'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(_0xcae1('0x0'));var moment=require(_0xcae1('0x1'));var BPromise=require(_0xcae1('0x2'));var Mustache=require(_0xcae1('0x3'));var util=require(_0xcae1('0x4'));var path=require(_0xcae1('0x5'));var sox=require(_0xcae1('0x6'));var csv=require(_0xcae1('0x7'));var ejs=require(_0xcae1('0x8'));var fs=require('fs');var fs_extra=require(_0xcae1('0x9'));var _=require(_0xcae1('0xa'));var squel=require(_0xcae1('0xb'));var crypto=require(_0xcae1('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcae1('0x7'));var querystring=require(_0xcae1('0xd'));var Papa=require(_0xcae1('0xe'));var Redis=require('ioredis');var authService=require(_0xcae1('0xf'));var qs=require(_0xcae1('0x10'));var as=require(_0xcae1('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcae1('0x12'))(_0xcae1('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcae1('0x14'));var db=require(_0xcae1('0x15'))['db'];function respondWithStatusCode(_0x340bdc,_0x27cbd9){_0x27cbd9=_0x27cbd9||0xcc;return function(_0x41d7bb){if(_0x41d7bb){return _0x340bdc[_0xcae1('0x16')](_0x27cbd9);}return _0x340bdc[_0xcae1('0x17')](_0x27cbd9)[_0xcae1('0x18')]();};}function respondWithResult(_0x41fd7a,_0x277c6d){_0x277c6d=_0x277c6d||0xc8;return function(_0x13ad2c){if(_0x13ad2c){return _0x41fd7a[_0xcae1('0x17')](_0x277c6d)[_0xcae1('0x19')](_0x13ad2c);}};}function respondWithFilteredResult(_0x12d6cb,_0x2ac1ea){return function(_0x54ab10){if(_0x54ab10){var _0x4743b4=typeof _0x2ac1ea[_0xcae1('0x1a')]==='undefined'&&typeof _0x2ac1ea['limit']===_0xcae1('0x1b');var _0x143c21=_0x54ab10['count'];var _0x5f18d5=_0x4743b4?0x0:_0x2ac1ea[_0xcae1('0x1a')];var _0x4dcd4b=_0x4743b4?_0x54ab10[_0xcae1('0x1c')]:_0x2ac1ea[_0xcae1('0x1a')]+_0x2ac1ea[_0xcae1('0x1d')];var _0x14cd02;if(_0x4dcd4b>=_0x143c21){_0x4dcd4b=_0x143c21;_0x14cd02=0xc8;}else{_0x14cd02=0xce;}_0x12d6cb[_0xcae1('0x17')](_0x14cd02);return _0x12d6cb[_0xcae1('0x1e')](_0xcae1('0x1f'),_0x5f18d5+'-'+_0x4dcd4b+'/'+_0x143c21)[_0xcae1('0x19')](_0x54ab10);}return null;};}function patchUpdates(_0x11fda8){return function(_0x33e1af){try{jsonpatch[_0xcae1('0x20')](_0x33e1af,_0x11fda8,!![]);}catch(_0x401659){return BPromise[_0xcae1('0x21')](_0x401659);}return _0x33e1af[_0xcae1('0x22')]();};}function saveUpdates(_0x480365,_0x1f8beb){return function(_0x17f9f4){if(_0x17f9f4){return _0x17f9f4[_0xcae1('0x23')](_0x480365)[_0xcae1('0x24')](function(_0x514501){return _0x514501;});}return null;};}function removeEntity(_0x137a21,_0x2227e4){return function(_0x737966){if(_0x737966){return _0x737966[_0xcae1('0x25')]()[_0xcae1('0x24')](function(){_0x137a21[_0xcae1('0x17')](0xcc)[_0xcae1('0x18')]();});}};}function handleEntityNotFound(_0x9fac02,_0x556f45){return function(_0x285b9a){if(!_0x285b9a){_0x9fac02['sendStatus'](0x194);}return _0x285b9a;};}function handleError(_0x22710b,_0x300758){_0x300758=_0x300758||0x1f4;return function(_0x5bb602){logger[_0xcae1('0x26')](_0x5bb602[_0xcae1('0x27')]);if(_0x5bb602[_0xcae1('0x28')]){delete _0x5bb602['name'];}_0x22710b['status'](_0x300758)[_0xcae1('0x29')](_0x5bb602);};}exports[_0xcae1('0x2a')]=function(_0xbba4eb,_0x3be989){var _0x38b76d={},_0x2348df={},_0x3e7b1d={'count':0x0,'rows':[]};var _0x4ed7d8=_[_0xcae1('0x2b')](db[_0xcae1('0x2c')][_0xcae1('0x2d')],function(_0x5defb0){return{'name':_0x5defb0['fieldName'],'type':_0x5defb0[_0xcae1('0x2e')]['key']};});_0x2348df[_0xcae1('0x2f')]=_[_0xcae1('0x2b')](_0x4ed7d8,_0xcae1('0x28'));_0x2348df[_0xcae1('0x30')]=_[_0xcae1('0x31')](_0xbba4eb[_0xcae1('0x30')]);_0x2348df[_0xcae1('0x32')]=_[_0xcae1('0x33')](_0x2348df[_0xcae1('0x2f')],_0x2348df[_0xcae1('0x30')]);_0x38b76d['attributes']=_[_0xcae1('0x33')](_0x2348df[_0xcae1('0x2f')],qs[_0xcae1('0x34')](_0xbba4eb[_0xcae1('0x30')]['fields']));_0x38b76d[_0xcae1('0x35')]=_0x38b76d['attributes'][_0xcae1('0x36')]?_0x38b76d['attributes']:_0x2348df[_0xcae1('0x2f')];if(!_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x37')](_0xcae1('0x38'))){_0x38b76d[_0xcae1('0x1d')]=qs[_0xcae1('0x1d')](_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x1d')]);_0x38b76d[_0xcae1('0x1a')]=qs[_0xcae1('0x1a')](_0xbba4eb['query'][_0xcae1('0x1a')]);}_0x38b76d['order']=qs[_0xcae1('0x39')](_0xbba4eb['query'][_0xcae1('0x39')]);_0x38b76d[_0xcae1('0x3a')]=qs['filters'](_[_0xcae1('0x3b')](_0xbba4eb[_0xcae1('0x30')],_0x2348df[_0xcae1('0x32')]),_0x4ed7d8);if(_0xbba4eb[_0xcae1('0x30')]['filter']){_0x38b76d[_0xcae1('0x3a')]=_[_0xcae1('0x3c')](_0x38b76d['where'],{'$or':_[_0xcae1('0x2b')](_0x4ed7d8,function(_0xb5e255){if(_0xb5e255[_0xcae1('0x2e')]!=='VIRTUAL'){var _0x16295b={};_0x16295b[_0xb5e255['name']]={'$like':'%'+_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x3d')]+'%'};return _0x16295b;}})});}_0x38b76d=_[_0xcae1('0x3c')]({},_0x38b76d,_0xbba4eb['options']);var _0xcd95de={'where':_0x38b76d[_0xcae1('0x3a')]};return db[_0xcae1('0x2c')][_0xcae1('0x1c')](_0xcd95de)[_0xcae1('0x24')](function(_0x237201){_0x3e7b1d['count']=_0x237201;if(_0xbba4eb[_0xcae1('0x30')][_0xcae1('0x3e')]){_0x38b76d[_0xcae1('0x3f')]=[{'all':!![]}];}return db[_0xcae1('0x2c')][_0xcae1('0x40')](_0x38b76d);})[_0xcae1('0x24')](function(_0x349a18){_0x3e7b1d[_0xcae1('0x41')]=_0x349a18;return _0x3e7b1d;})[_0xcae1('0x24')](respondWithFilteredResult(_0x3be989,_0x38b76d))[_0xcae1('0x42')](handleError(_0x3be989,null));};exports[_0xcae1('0x43')]=function(_0x47b77e,_0x296d31){var _0x2f6d1b={'raw':!![],'where':{'id':_0x47b77e[_0xcae1('0x44')]['id']}},_0x1df5f0={};_0x1df5f0[_0xcae1('0x2f')]=_[_0xcae1('0x31')](db[_0xcae1('0x2c')]['rawAttributes']);_0x1df5f0[_0xcae1('0x30')]=_[_0xcae1('0x31')](_0x47b77e[_0xcae1('0x30')]);_0x1df5f0[_0xcae1('0x32')]=_['intersection'](_0x1df5f0['model'],_0x1df5f0['query']);_0x2f6d1b[_0xcae1('0x35')]=_[_0xcae1('0x33')](_0x1df5f0[_0xcae1('0x2f')],qs[_0xcae1('0x34')](_0x47b77e[_0xcae1('0x30')][_0xcae1('0x34')]));_0x2f6d1b['attributes']=_0x2f6d1b[_0xcae1('0x35')][_0xcae1('0x36')]?_0x2f6d1b['attributes']:_0x1df5f0[_0xcae1('0x2f')];if(_0x47b77e[_0xcae1('0x30')][_0xcae1('0x3e')]){_0x2f6d1b['include']=[{'all':!![]}];}_0x2f6d1b=_['merge']({},_0x2f6d1b,_0x47b77e[_0xcae1('0x45')]);return db[_0xcae1('0x2c')][_0xcae1('0x46')](_0x2f6d1b)[_0xcae1('0x24')](handleEntityNotFound(_0x296d31,null))[_0xcae1('0x24')](respondWithResult(_0x296d31,null))[_0xcae1('0x42')](handleError(_0x296d31,null));};exports[_0xcae1('0x47')]=function(_0x168c0f,_0x417f9f){return db[_0xcae1('0x2c')][_0xcae1('0x47')](_0x168c0f[_0xcae1('0x48')],{})['then'](respondWithResult(_0x417f9f,0xc9))[_0xcae1('0x42')](handleError(_0x417f9f,null));};exports[_0xcae1('0x23')]=function(_0x3bf8b0,_0x258630){if(_0x3bf8b0[_0xcae1('0x48')]['id']){delete _0x3bf8b0[_0xcae1('0x48')]['id'];}return db[_0xcae1('0x2c')][_0xcae1('0x46')]({'where':{'id':_0x3bf8b0[_0xcae1('0x44')]['id']}})[_0xcae1('0x24')](handleEntityNotFound(_0x258630,null))[_0xcae1('0x24')](saveUpdates(_0x3bf8b0[_0xcae1('0x48')],null))['then'](respondWithResult(_0x258630,null))[_0xcae1('0x42')](handleError(_0x258630,null));};exports[_0xcae1('0x25')]=function(_0x3a203f,_0x58c63c){return db[_0xcae1('0x2c')][_0xcae1('0x46')]({'where':{'id':_0x3a203f[_0xcae1('0x44')]['id']}})[_0xcae1('0x24')](handleEntityNotFound(_0x58c63c,null))['then'](removeEntity(_0x58c63c,null))[_0xcae1('0x42')](handleError(_0x58c63c,null));};exports[_0xcae1('0x49')]=function(_0x1b40b9,_0x4b195a){return db[_0xcae1('0x2c')][_0xcae1('0x49')]()[_0xcae1('0x24')](respondWithResult(_0x4b195a,null))['catch'](handleError(_0x4b195a,null));};
\ No newline at end of file
+var _0x9f5a=['limit','status','set','apply','reject','save','update','then','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','catch','params','include','create','body','destroy','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count'];(function(_0x33d239,_0x24bb87){var _0x6784c2=function(_0x2d8fb6){while(--_0x2d8fb6){_0x33d239['push'](_0x33d239['shift']());}};_0x6784c2(++_0x24bb87);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x280aeb,_0x52653b){_0x280aeb=_0x280aeb-0x0;var _0x58933b=_0x9f5a[_0x280aeb];return _0x58933b;};'use strict';var emlformat=require(_0xa9f5('0x0'));var rimraf=require(_0xa9f5('0x1'));var zipdir=require(_0xa9f5('0x2'));var jsonpatch=require(_0xa9f5('0x3'));var rp=require('request-promise');var moment=require(_0xa9f5('0x4'));var BPromise=require(_0xa9f5('0x5'));var Mustache=require(_0xa9f5('0x6'));var util=require('util');var path=require(_0xa9f5('0x7'));var sox=require('sox');var csv=require(_0xa9f5('0x8'));var ejs=require(_0xa9f5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9f5('0xa'));var squel=require(_0xa9f5('0xb'));var crypto=require(_0xa9f5('0xc'));var jsforce=require(_0xa9f5('0xd'));var deskjs=require(_0xa9f5('0xe'));var toCsv=require(_0xa9f5('0x8'));var querystring=require(_0xa9f5('0xf'));var Papa=require('papaparse');var Redis=require(_0xa9f5('0x10'));var authService=require(_0xa9f5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa9f5('0x12'));var hardwareService=require(_0xa9f5('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xa9f5('0x14'));var config=require(_0xa9f5('0x15'));var licenseUtil=require(_0xa9f5('0x16'));var db=require(_0xa9f5('0x17'))['db'];function respondWithStatusCode(_0x4c26a8,_0x788dec){_0x788dec=_0x788dec||0xcc;return function(_0x24ce85){if(_0x24ce85){return _0x4c26a8[_0xa9f5('0x18')](_0x788dec);}return _0x4c26a8['status'](_0x788dec)[_0xa9f5('0x19')]();};}function respondWithResult(_0x899513,_0x5a5653){_0x5a5653=_0x5a5653||0xc8;return function(_0x58609c){if(_0x58609c){return _0x899513['status'](_0x5a5653)[_0xa9f5('0x1a')](_0x58609c);}};}function respondWithFilteredResult(_0x48bfdc,_0x5f2b6a){return function(_0x870466){if(_0x870466){var _0x131ed6=typeof _0x5f2b6a[_0xa9f5('0x1b')]===_0xa9f5('0x1c')&&typeof _0x5f2b6a['limit']===_0xa9f5('0x1c');var _0x401ae7=_0x870466[_0xa9f5('0x1d')];var _0x45af85=_0x131ed6?0x0:_0x5f2b6a[_0xa9f5('0x1b')];var _0x1ee027=_0x131ed6?_0x870466[_0xa9f5('0x1d')]:_0x5f2b6a[_0xa9f5('0x1b')]+_0x5f2b6a[_0xa9f5('0x1e')];var _0x38bd22;if(_0x1ee027>=_0x401ae7){_0x1ee027=_0x401ae7;_0x38bd22=0xc8;}else{_0x38bd22=0xce;}_0x48bfdc[_0xa9f5('0x1f')](_0x38bd22);return _0x48bfdc[_0xa9f5('0x20')]('Content-Range',_0x45af85+'-'+_0x1ee027+'/'+_0x401ae7)[_0xa9f5('0x1a')](_0x870466);}return null;};}function patchUpdates(_0x131f21){return function(_0x28779c){try{jsonpatch[_0xa9f5('0x21')](_0x28779c,_0x131f21,!![]);}catch(_0x322430){return BPromise[_0xa9f5('0x22')](_0x322430);}return _0x28779c[_0xa9f5('0x23')]();};}function saveUpdates(_0x48b473,_0x1bf2c7){return function(_0x2ea752){if(_0x2ea752){return _0x2ea752[_0xa9f5('0x24')](_0x48b473)[_0xa9f5('0x25')](function(_0xf15d71){return _0xf15d71;});}return null;};}function removeEntity(_0x2626ca,_0x1a204e){return function(_0x41e9aa){if(_0x41e9aa){return _0x41e9aa['destroy']()[_0xa9f5('0x25')](function(){_0x2626ca[_0xa9f5('0x1f')](0xcc)[_0xa9f5('0x19')]();});}};}function handleEntityNotFound(_0x24c8eb,_0x2c2e9f){return function(_0x31b517){if(!_0x31b517){_0x24c8eb['sendStatus'](0x194);}return _0x31b517;};}function handleError(_0x3911c8,_0x49e850){_0x49e850=_0x49e850||0x1f4;return function(_0x53caa4){logger['error'](_0x53caa4[_0xa9f5('0x26')]);if(_0x53caa4[_0xa9f5('0x27')]){delete _0x53caa4[_0xa9f5('0x27')];}_0x3911c8[_0xa9f5('0x1f')](_0x49e850)[_0xa9f5('0x28')](_0x53caa4);};}exports[_0xa9f5('0x29')]=function(_0x51741f,_0x2fbe8c){var _0x43ba93={},_0x41f2f4={},_0x5faf64={'count':0x0,'rows':[]};var _0x23dee2=_[_0xa9f5('0x2a')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')],function(_0x5a422b){return{'name':_0x5a422b['fieldName'],'type':_0x5a422b['type'][_0xa9f5('0x2d')]};});_0x41f2f4[_0xa9f5('0x2e')]=_[_0xa9f5('0x2a')](_0x23dee2,_0xa9f5('0x27'));_0x41f2f4[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0x51741f[_0xa9f5('0x2f')]);_0x41f2f4[_0xa9f5('0x31')]=_[_0xa9f5('0x32')](_0x41f2f4[_0xa9f5('0x2e')],_0x41f2f4[_0xa9f5('0x2f')]);_0x43ba93[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x41f2f4['model'],qs[_0xa9f5('0x34')](_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x43ba93[_0xa9f5('0x33')]=_0x43ba93[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x43ba93[_0xa9f5('0x33')]:_0x41f2f4[_0xa9f5('0x2e')];if(!_0x51741f['query'][_0xa9f5('0x36')]('nolimit')){_0x43ba93[_0xa9f5('0x1e')]=qs[_0xa9f5('0x1e')](_0x51741f['query'][_0xa9f5('0x1e')]);_0x43ba93[_0xa9f5('0x1b')]=qs[_0xa9f5('0x1b')](_0x51741f[_0xa9f5('0x2f')]['offset']);}_0x43ba93[_0xa9f5('0x37')]=qs[_0xa9f5('0x38')](_0x51741f['query'][_0xa9f5('0x38')]);_0x43ba93[_0xa9f5('0x39')]=qs[_0xa9f5('0x31')](_[_0xa9f5('0x3a')](_0x51741f[_0xa9f5('0x2f')],_0x41f2f4[_0xa9f5('0x31')]),_0x23dee2);if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3b')]){_0x43ba93[_0xa9f5('0x39')]=_['merge'](_0x43ba93['where'],{'$or':_[_0xa9f5('0x2a')](_0x23dee2,function(_0x2930eb){if(_0x2930eb['type']!==_0xa9f5('0x3c')){var _0x256212={};_0x256212[_0x2930eb[_0xa9f5('0x27')]]={'$like':'%'+_0x51741f[_0xa9f5('0x2f')]['filter']+'%'};return _0x256212;}})});}_0x43ba93=_[_0xa9f5('0x3d')]({},_0x43ba93,_0x51741f[_0xa9f5('0x3e')]);var _0x5a4715={'where':_0x43ba93[_0xa9f5('0x39')]};return db[_0xa9f5('0x2b')]['count'](_0x5a4715)[_0xa9f5('0x25')](function(_0x40b5fb){_0x5faf64['count']=_0x40b5fb;if(_0x51741f[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x43ba93['include']=[{'all':!![]}];}return db[_0xa9f5('0x2b')][_0xa9f5('0x40')](_0x43ba93);})['then'](function(_0x465f95){_0x5faf64['rows']=_0x465f95;return _0x5faf64;})[_0xa9f5('0x25')](respondWithFilteredResult(_0x2fbe8c,_0x43ba93))[_0xa9f5('0x41')](handleError(_0x2fbe8c,null));};exports['show']=function(_0xde7ab7,_0x488380){var _0x5de828={'raw':!![],'where':{'id':_0xde7ab7[_0xa9f5('0x42')]['id']}},_0x2732b2={};_0x2732b2[_0xa9f5('0x2e')]=_[_0xa9f5('0x30')](db[_0xa9f5('0x2b')][_0xa9f5('0x2c')]);_0x2732b2[_0xa9f5('0x2f')]=_[_0xa9f5('0x30')](_0xde7ab7[_0xa9f5('0x2f')]);_0x2732b2['filters']=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],_0x2732b2[_0xa9f5('0x2f')]);_0x5de828[_0xa9f5('0x33')]=_[_0xa9f5('0x32')](_0x2732b2[_0xa9f5('0x2e')],qs[_0xa9f5('0x34')](_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x34')]));_0x5de828[_0xa9f5('0x33')]=_0x5de828[_0xa9f5('0x33')][_0xa9f5('0x35')]?_0x5de828[_0xa9f5('0x33')]:_0x2732b2[_0xa9f5('0x2e')];if(_0xde7ab7[_0xa9f5('0x2f')][_0xa9f5('0x3f')]){_0x5de828[_0xa9f5('0x43')]=[{'all':!![]}];}_0x5de828=_[_0xa9f5('0x3d')]({},_0x5de828,_0xde7ab7[_0xa9f5('0x3e')]);return db['JscriptyAnswerReport']['find'](_0x5de828)[_0xa9f5('0x25')](handleEntityNotFound(_0x488380,null))[_0xa9f5('0x25')](respondWithResult(_0x488380,null))['catch'](handleError(_0x488380,null));};exports[_0xa9f5('0x44')]=function(_0x30ae0f,_0x44ee96){return db['JscriptyAnswerReport'][_0xa9f5('0x44')](_0x30ae0f['body'],{})[_0xa9f5('0x25')](respondWithResult(_0x44ee96,0xc9))[_0xa9f5('0x41')](handleError(_0x44ee96,null));};exports[_0xa9f5('0x24')]=function(_0x836a8d,_0x102ed8){if(_0x836a8d[_0xa9f5('0x45')]['id']){delete _0x836a8d['body']['id'];}return db[_0xa9f5('0x2b')]['find']({'where':{'id':_0x836a8d['params']['id']}})[_0xa9f5('0x25')](handleEntityNotFound(_0x102ed8,null))['then'](saveUpdates(_0x836a8d[_0xa9f5('0x45')],null))['then'](respondWithResult(_0x102ed8,null))[_0xa9f5('0x41')](handleError(_0x102ed8,null));};exports[_0xa9f5('0x46')]=function(_0xafeecc,_0x4c3587){return db[_0xa9f5('0x2b')][_0xa9f5('0x47')]({'where':{'id':_0xafeecc[_0xa9f5('0x42')]['id']}})['then'](handleEntityNotFound(_0x4c3587,null))[_0xa9f5('0x25')](removeEntity(_0x4c3587,null))['catch'](handleError(_0x4c3587,null));};exports['describe']=function(_0x455918,_0x1f6bd3){return db[_0xa9f5('0x2b')][_0xa9f5('0x48')]()['then'](respondWithResult(_0x1f6bd3,null))[_0xa9f5('0x41')](handleError(_0x1f6bd3,null));};
\ No newline at end of file
index 0a4ca6d..7a5155a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb411=['JscriptyAnswerReport','report_jscripty_answers','util','../../config/logger','request-promise','rimraf','../../config/environment','exports','define'];(function(_0x1be370,_0xfb6985){var _0x4610ac=function(_0x407172){while(--_0x407172){_0x1be370['push'](_0x1be370['shift']());}};_0x4610ac(++_0xfb6985);}(_0xb411,0x12b));var _0x1b41=function(_0x541e7e,_0x1e773d){_0x541e7e=_0x541e7e-0x0;var _0x2e8b57=_0xb411[_0x541e7e];return _0x2e8b57;};'use strict';var _=require('lodash');var util=require(_0x1b41('0x0'));var logger=require(_0x1b41('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1b41('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1b41('0x3'));var config=require(_0x1b41('0x4'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0x1b41('0x5')]=function(_0x4021fa,_0x3925eb){return _0x4021fa[_0x1b41('0x6')](_0x1b41('0x7'),attributes,{'tableName':_0x1b41('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde2e=['define','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports'];(function(_0xa3a10c,_0x217927){var _0x17ece0=function(_0x435023){while(--_0x435023){_0xa3a10c['push'](_0xa3a10c['shift']());}};_0x17ece0(++_0x217927);}(_0xde2e,0x177));var _0xede2=function(_0x5ecadc,_0x1cf9f1){_0x5ecadc=_0x5ecadc-0x0;var _0x565037=_0xde2e[_0x5ecadc];return _0x565037;};'use strict';var _=require('lodash');var util=require(_0xede2('0x0'));var logger=require('../../config/logger')(_0xede2('0x1'));var moment=require(_0xede2('0x2'));var BPromise=require(_0xede2('0x3'));var rp=require(_0xede2('0x4'));var fs=require('fs');var path=require(_0xede2('0x5'));var rimraf=require(_0xede2('0x6'));var config=require(_0xede2('0x7'));var attributes=require(_0xede2('0x8'));module[_0xede2('0x9')]=function(_0xf8379c,_0x3862dc){return _0xf8379c[_0xede2('0xa')]('JscriptyAnswerReport',attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 851b700..74945cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c8=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','request\x20sent','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','info'];(function(_0x2014b8,_0x13ba7a){var _0x42d592=function(_0x293ef5){while(--_0x293ef5){_0x2014b8['push'](_0x2014b8['shift']());}};_0x42d592(++_0x13ba7a);}(_0xa6c8,0xaa));var _0x8a6c=function(_0x48f422,_0xcaa83a){_0x48f422=_0x48f422-0x0;var _0x369538=_0xa6c8[_0x48f422];return _0x369538;};'use strict';var _=require(_0x8a6c('0x0'));var util=require(_0x8a6c('0x1'));var moment=require('moment');var BPromise=require(_0x8a6c('0x2'));var rs=require(_0x8a6c('0x3'));var fs=require('fs');var Redis=require(_0x8a6c('0x4'));var db=require(_0x8a6c('0x5'))['db'];var utils=require(_0x8a6c('0x6'));var logger=require('../../config/logger')(_0x8a6c('0x7'));var config=require('../../config/environment');var jayson=require(_0x8a6c('0x8'));var client=jayson['client'][_0x8a6c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14f91f,_0x4690aa,_0x18f911){return new BPromise(function(_0xaa1e97,_0xe0d4f5){return client[_0x8a6c('0xa')](_0x14f91f,_0x18f911)[_0x8a6c('0xb')](function(_0x227708){logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x4690aa,_0x8a6c('0xc'));logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x4690aa,'request\x20sent',JSON[_0x8a6c('0xd')](_0x227708));if(_0x227708['error']){if(_0x227708[_0x8a6c('0xe')][_0x8a6c('0xf')]===0x1f4){logger['error'](_0x8a6c('0x10'),_0x4690aa,_0x227708[_0x8a6c('0xe')]['message']);return _0xe0d4f5(_0x227708['error'][_0x8a6c('0x11')]);}logger[_0x8a6c('0xe')](_0x8a6c('0x10'),_0x4690aa,_0x227708[_0x8a6c('0xe')][_0x8a6c('0x11')]);return _0xaa1e97(_0x227708[_0x8a6c('0xe')]['message']);}else{logger[_0x8a6c('0x12')](_0x8a6c('0x10'),_0x4690aa,_0x8a6c('0xc'));_0xaa1e97(_0x227708[_0x8a6c('0x13')][_0x8a6c('0x11')]);}})[_0x8a6c('0x14')](function(_0x4cb59c){logger['error'](_0x8a6c('0x10'),_0x4690aa,_0x4cb59c);_0xe0d4f5(_0x4cb59c);});});}
\ No newline at end of file
+var _0x4d41=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','JscriptyAnswerReport,\x20%s,\x20%s','message','catch','lodash','util','bluebird'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0x4d41,0x8d));var _0x14d4=function(_0x4f34d8,_0x40f022){_0x4f34d8=_0x4f34d8-0x0;var _0xc97536=_0x4d41[_0x4f34d8];return _0xc97536;};'use strict';var _=require(_0x14d4('0x0'));var util=require(_0x14d4('0x1'));var moment=require('moment');var BPromise=require(_0x14d4('0x2'));var rs=require(_0x14d4('0x3'));var fs=require('fs');var Redis=require(_0x14d4('0x4'));var db=require(_0x14d4('0x5'))['db'];var utils=require(_0x14d4('0x6'));var logger=require(_0x14d4('0x7'))(_0x14d4('0x8'));var config=require(_0x14d4('0x9'));var jayson=require(_0x14d4('0xa'));var client=jayson[_0x14d4('0xb')][_0x14d4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x40addc,_0x58bd1b,_0xcc8130){return new BPromise(function(_0x4d3ca1,_0x47760d){return client[_0x14d4('0xd')](_0x40addc,_0xcc8130)[_0x14d4('0xe')](function(_0x465f9d){logger[_0x14d4('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x58bd1b,_0x14d4('0x10'));logger[_0x14d4('0x11')](_0x14d4('0x12'),_0x58bd1b,_0x14d4('0x10'),JSON[_0x14d4('0x13')](_0x465f9d));if(_0x465f9d['error']){if(_0x465f9d[_0x14d4('0x14')]['code']===0x1f4){logger[_0x14d4('0x14')](_0x14d4('0x15'),_0x58bd1b,_0x465f9d['error'][_0x14d4('0x16')]);return _0x47760d(_0x465f9d[_0x14d4('0x14')]['message']);}logger['error'](_0x14d4('0x15'),_0x58bd1b,_0x465f9d[_0x14d4('0x14')][_0x14d4('0x16')]);return _0x4d3ca1(_0x465f9d['error'][_0x14d4('0x16')]);}else{logger['info'](_0x14d4('0x15'),_0x58bd1b,_0x14d4('0x10'));_0x4d3ca1(_0x465f9d['result'][_0x14d4('0x16')]);}})[_0x14d4('0x17')](function(_0x280663){logger[_0x14d4('0x14')](_0x14d4('0x15'),_0x58bd1b,_0x280663);_0x47760d(_0x280663);});});}
\ No newline at end of file
index a7cb85f..066ae4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b0e=['/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','getSessions','/:id/answers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put'];(function(_0x21b52,_0x317ebd){var _0x52a154=function(_0x5b773b){while(--_0x5b773b){_0x21b52['push'](_0x21b52['shift']());}};_0x52a154(++_0x317ebd);}(_0x5b0e,0x1c7));var _0xe5b0=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x5b0e[_0x160c73];return _0xd9302;};'use strict';var multer=require('multer');var util=require(_0xe5b0('0x0'));var path=require(_0xe5b0('0x1'));var timeout=require(_0xe5b0('0x2'));var express=require(_0xe5b0('0x3'));var router=express[_0xe5b0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5b0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe5b0('0x6'));var controller=require('./jscriptyProject.controller');router[_0xe5b0('0x7')]('/',auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x9')]);router[_0xe5b0('0x7')]('/:id',auth[_0xe5b0('0x8')](),controller['show']);router['get']('/:id/sessions',auth['isAuthenticated'](),controller[_0xe5b0('0xa')]);router[_0xe5b0('0x7')](_0xe5b0('0xb'),auth[_0xe5b0('0x8')](),controller['getAnswers']);router['get'](_0xe5b0('0xc'),auth['isAuthenticated'](),timeout(_0xe5b0('0xd')),controller[_0xe5b0('0xe')]);router[_0xe5b0('0xf')]('/',auth['isAuthenticated'](),controller[_0xe5b0('0x10')]);router['post'](_0xe5b0('0x11'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x12')]);router[_0xe5b0('0x13')](_0xe5b0('0x14'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x15')]);router[_0xe5b0('0x16')](_0xe5b0('0x14'),auth[_0xe5b0('0x8')](),controller[_0xe5b0('0x17')]);module[_0xe5b0('0x18')]=router;
\ No newline at end of file
+var _0xbda5=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','30s','getSummary','create','post','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x1a6244,_0x5a2053){var _0x25f5e0=function(_0x2d065b){while(--_0x2d065b){_0x1a6244['push'](_0x1a6244['shift']());}};_0x25f5e0(++_0x5a2053);}(_0xbda5,0x14e));var _0x5bda=function(_0x2c8827,_0x1a8f31){_0x2c8827=_0x2c8827-0x0;var _0x6d7bed=_0xbda5[_0x2c8827];return _0x6d7bed;};'use strict';var multer=require(_0x5bda('0x0'));var util=require(_0x5bda('0x1'));var path=require(_0x5bda('0x2'));var timeout=require(_0x5bda('0x3'));var express=require(_0x5bda('0x4'));var router=express[_0x5bda('0x5')]();var fs_extra=require(_0x5bda('0x6'));var auth=require(_0x5bda('0x7'));var interaction=require(_0x5bda('0x8'));var config=require(_0x5bda('0x9'));var controller=require(_0x5bda('0xa'));router[_0x5bda('0xb')]('/',auth[_0x5bda('0xc')](),controller[_0x5bda('0xd')]);router['get'](_0x5bda('0xe'),auth[_0x5bda('0xc')](),controller[_0x5bda('0xf')]);router['get'](_0x5bda('0x10'),auth['isAuthenticated'](),controller[_0x5bda('0x11')]);router['get']('/:id/answers',auth[_0x5bda('0xc')](),controller['getAnswers']);router[_0x5bda('0xb')]('/:id/summary',auth[_0x5bda('0xc')](),timeout(_0x5bda('0x12')),controller[_0x5bda('0x13')]);router['post']('/',auth[_0x5bda('0xc')](),controller[_0x5bda('0x14')]);router[_0x5bda('0x15')]('/:id/clone',auth[_0x5bda('0xc')](),controller['clone']);router[_0x5bda('0x16')](_0x5bda('0xe'),auth[_0x5bda('0xc')](),controller[_0x5bda('0x17')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5bda('0x18')]);module[_0x5bda('0x19')]=router;
\ No newline at end of file
index f2e87c3..fb35a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c03=['setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','util','exports','STRING','name','isObjectLike','formData','isString'];(function(_0x55336a,_0x240d59){var _0x28ceb3=function(_0x399d5c){while(--_0x399d5c){_0x55336a['push'](_0x55336a['shift']());}};_0x28ceb3(++_0x240d59);}(_0x3c03,0x13a));var _0x33c0=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x3c03[_0x39096d];return _0x13da4f;};'use strict';var Sequelize=require(_0x33c0('0x0'));var _=require('lodash');var util=require(_0x33c0('0x1'));module[_0x33c0('0x2')]={'name':{'type':Sequelize[_0x33c0('0x3')],'unique':_0x33c0('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize['TEXT']('long'),'set':function(_0x430dc8){if(_[_0x33c0('0x5')](_0x430dc8)){this['setDataValue'](_0x33c0('0x6'),JSON['stringify'](_0x430dc8));}else if(_[_0x33c0('0x7')](_0x430dc8)){this[_0x33c0('0x8')](_0x33c0('0x6'),_0x430dc8);}else{this['setDataValue'](_0x33c0('0x6'),util[_0x33c0('0x9')](_0x33c0('0xa'),this[_0x33c0('0xb')](_0x33c0('0x4'))||'',this['getDataValue'](_0x33c0('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x33c0('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xca11=['STRING','TEXT','long','isObjectLike','setDataValue','formData','format','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','name'];(function(_0xfa3369,_0x102c81){var _0x4b07f6=function(_0x29c77b){while(--_0x29c77b){_0xfa3369['push'](_0xfa3369['shift']());}};_0x4b07f6(++_0x102c81);}(_0xca11,0x1db));var _0x1ca1=function(_0x244b89,_0x244943){_0x244b89=_0x244b89-0x0;var _0x1c7837=_0xca11[_0x244b89];return _0x1c7837;};'use strict';var Sequelize=require(_0x1ca1('0x0'));var _=require(_0x1ca1('0x1'));var util=require(_0x1ca1('0x2'));module[_0x1ca1('0x3')]={'name':{'type':Sequelize['STRING'],'unique':_0x1ca1('0x4')},'description':{'type':Sequelize[_0x1ca1('0x5')]},'formData':{'type':Sequelize[_0x1ca1('0x6')](_0x1ca1('0x7')),'set':function(_0x49e5c1){if(_[_0x1ca1('0x8')](_0x49e5c1)){this[_0x1ca1('0x9')]('formData',JSON['stringify'](_0x49e5c1));}else if(_['isString'](_0x49e5c1)){this['setDataValue'](_0x1ca1('0xa'),_0x49e5c1);}else{this[_0x1ca1('0x9')](_0x1ca1('0xa'),util[_0x1ca1('0xb')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x1ca1('0xc')](_0x1ca1('0x4'))||'',this[_0x1ca1('0xc')](_0x1ca1('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x1ca1('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x1ca1('0xe')],'defaultValue':![]}};
\ No newline at end of file
index d2df4a4..98493ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e2=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','sendStatus','stack','send','map','JscriptyProject','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','name','options','include','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rawAttributes','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getSessions','JscriptySessionReport','nolimit','order','ProjectId','rows','getAnswers','findOne','JscriptyAnswerReport','fromCharCode','toString','indexOf','getSummary','startTime','parse','findAll','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x2eb9d4,_0x169887){var _0x40afb4=function(_0x7d12e7){while(--_0x7d12e7){_0x2eb9d4['push'](_0x2eb9d4['shift']());}};_0x40afb4(++_0x169887);}(_0xf3e2,0x168));var _0x2f3e=function(_0x53e9b3,_0x10ebad){_0x53e9b3=_0x53e9b3-0x0;var _0x1c394e=_0xf3e2[_0x53e9b3];return _0x1c394e;};'use strict';var emlformat=require(_0x2f3e('0x0'));var rimraf=require(_0x2f3e('0x1'));var zipdir=require(_0x2f3e('0x2'));var jsonpatch=require(_0x2f3e('0x3'));var rp=require(_0x2f3e('0x4'));var moment=require(_0x2f3e('0x5'));var BPromise=require(_0x2f3e('0x6'));var Mustache=require(_0x2f3e('0x7'));var util=require('util');var path=require(_0x2f3e('0x8'));var sox=require('sox');var csv=require(_0x2f3e('0x9'));var ejs=require(_0x2f3e('0xa'));var fs=require('fs');var fs_extra=require(_0x2f3e('0xb'));var _=require(_0x2f3e('0xc'));var squel=require(_0x2f3e('0xd'));var crypto=require(_0x2f3e('0xe'));var jsforce=require(_0x2f3e('0xf'));var deskjs=require(_0x2f3e('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2f3e('0x11'));var Papa=require('papaparse');var Redis=require(_0x2f3e('0x12'));var authService=require(_0x2f3e('0x13'));var qs=require(_0x2f3e('0x14'));var as=require(_0x2f3e('0x15'));var hardwareService=require(_0x2f3e('0x16'));var logger=require(_0x2f3e('0x17'))(_0x2f3e('0x18'));var utils=require(_0x2f3e('0x19'));var config=require(_0x2f3e('0x1a'));var licenseUtil=require(_0x2f3e('0x1b'));var db=require(_0x2f3e('0x1c'))['db'];function respondWithStatusCode(_0x105ea6,_0x507078){_0x507078=_0x507078||0xcc;return function(_0x25b913){if(_0x25b913){return _0x105ea6['sendStatus'](_0x507078);}return _0x105ea6[_0x2f3e('0x1d')](_0x507078)[_0x2f3e('0x1e')]();};}function respondWithResult(_0x5f3734,_0x536f5e){_0x536f5e=_0x536f5e||0xc8;return function(_0x1ad130){if(_0x1ad130){return _0x5f3734[_0x2f3e('0x1d')](_0x536f5e)[_0x2f3e('0x1f')](_0x1ad130);}};}function respondWithFilteredResult(_0x14a2a1,_0x38ac85){return function(_0xd6710){if(_0xd6710){var _0x4ecd41=typeof _0x38ac85[_0x2f3e('0x20')]===_0x2f3e('0x21')&&typeof _0x38ac85[_0x2f3e('0x22')]===_0x2f3e('0x21');var _0x52ab9c=_0xd6710[_0x2f3e('0x23')];var _0x480aa4=_0x4ecd41?0x0:_0x38ac85[_0x2f3e('0x20')];var _0x452bd8=_0x4ecd41?_0xd6710[_0x2f3e('0x23')]:_0x38ac85[_0x2f3e('0x20')]+_0x38ac85[_0x2f3e('0x22')];var _0x3f0cd1;if(_0x452bd8>=_0x52ab9c){_0x452bd8=_0x52ab9c;_0x3f0cd1=0xc8;}else{_0x3f0cd1=0xce;}_0x14a2a1[_0x2f3e('0x1d')](_0x3f0cd1);return _0x14a2a1[_0x2f3e('0x24')](_0x2f3e('0x25'),_0x480aa4+'-'+_0x452bd8+'/'+_0x52ab9c)[_0x2f3e('0x1f')](_0xd6710);}return null;};}function patchUpdates(_0x2ef1eb){return function(_0x14113e){try{jsonpatch[_0x2f3e('0x26')](_0x14113e,_0x2ef1eb,!![]);}catch(_0x44404a){return BPromise[_0x2f3e('0x27')](_0x44404a);}return _0x14113e[_0x2f3e('0x28')]();};}function saveUpdates(_0x37a48a,_0x2c4db5){return function(_0x22dd45){if(_0x22dd45){return _0x22dd45[_0x2f3e('0x29')](_0x37a48a)[_0x2f3e('0x2a')](function(_0x3bd446){return _0x3bd446;});}return null;};}function removeEntity(_0x16c8fc,_0x1217b9){return function(_0x5b4d8d){if(_0x5b4d8d){return _0x5b4d8d[_0x2f3e('0x2b')]()[_0x2f3e('0x2a')](function(){var _0x54970b=_0x5b4d8d[_0x2f3e('0x2c')]({'plain':!![]});var _0x43a4c8=_0x2f3e('0x2d');return db[_0x2f3e('0x2e')]['destroy']({'where':{'type':_0x43a4c8,'resourceId':_0x54970b['id']}})['then'](function(){return _0x5b4d8d;});})[_0x2f3e('0x2a')](function(){_0x16c8fc[_0x2f3e('0x1d')](0xcc)[_0x2f3e('0x1e')]();});}};}function handleEntityNotFound(_0x192edf,_0x1699bf){return function(_0x5bce49){if(!_0x5bce49){_0x192edf[_0x2f3e('0x2f')](0x194);}return _0x5bce49;};}function handleError(_0x4aa4a0,_0x593181){_0x593181=_0x593181||0x1f4;return function(_0x13d8a7){logger['error'](_0x13d8a7[_0x2f3e('0x30')]);if(_0x13d8a7['name']){delete _0x13d8a7['name'];}_0x4aa4a0[_0x2f3e('0x1d')](_0x593181)[_0x2f3e('0x31')](_0x13d8a7);};}exports['index']=function(_0x3f5735,_0x290ec7){var _0x2e9e39={},_0x3760c4={},_0x3ab758={'count':0x0,'rows':[]};var _0x52f2f1=_[_0x2f3e('0x32')](db[_0x2f3e('0x33')]['rawAttributes'],function(_0xd166ef){return{'name':_0xd166ef[_0x2f3e('0x34')],'type':_0xd166ef[_0x2f3e('0x35')][_0x2f3e('0x36')]};});_0x3760c4[_0x2f3e('0x37')]=_['map'](_0x52f2f1,'name');_0x3760c4[_0x2f3e('0x38')]=_[_0x2f3e('0x39')](_0x3f5735[_0x2f3e('0x38')]);_0x3760c4[_0x2f3e('0x3a')]=_[_0x2f3e('0x3b')](_0x3760c4[_0x2f3e('0x37')],_0x3760c4['query']);_0x2e9e39[_0x2f3e('0x3c')]=_['intersection'](_0x3760c4[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x2e9e39[_0x2f3e('0x3c')]=_0x2e9e39[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x2e9e39[_0x2f3e('0x3c')]:_0x3760c4['model'];if(!_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x3f')]('nolimit')){_0x2e9e39[_0x2f3e('0x22')]=qs['limit'](_0x3f5735['query'][_0x2f3e('0x22')]);_0x2e9e39[_0x2f3e('0x20')]=qs['offset'](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x20')]);}_0x2e9e39['order']=qs['sort'](_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x40')]);_0x2e9e39[_0x2f3e('0x41')]=qs[_0x2f3e('0x3a')](_[_0x2f3e('0x42')](_0x3f5735[_0x2f3e('0x38')],_0x3760c4[_0x2f3e('0x3a')]),_0x52f2f1);if(_0x3f5735[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x2e9e39[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x2e9e39[_0x2f3e('0x41')],{'$or':_[_0x2f3e('0x32')](_0x52f2f1,function(_0x436e13){if(_0x436e13[_0x2f3e('0x35')]!=='VIRTUAL'){var _0x3f7676={};_0x3f7676[_0x436e13[_0x2f3e('0x45')]]={'$like':'%'+_0x3f5735[_0x2f3e('0x38')]['filter']+'%'};return _0x3f7676;}})});}_0x2e9e39=_[_0x2f3e('0x44')]({},_0x2e9e39,_0x3f5735[_0x2f3e('0x46')]);var _0x98bf0b={'where':_0x2e9e39[_0x2f3e('0x41')]};return db[_0x2f3e('0x33')][_0x2f3e('0x23')](_0x98bf0b)[_0x2f3e('0x2a')](function(_0x326493){_0x3ab758[_0x2f3e('0x23')]=_0x326493;if(_0x3f5735[_0x2f3e('0x38')]['includeAll']){_0x2e9e39[_0x2f3e('0x47')]=[{'all':!![]}];}return db[_0x2f3e('0x33')]['findAll'](_0x2e9e39);})[_0x2f3e('0x2a')](function(_0x16d83b){_0x3ab758['rows']=_0x16d83b;return _0x3ab758;})[_0x2f3e('0x2a')](respondWithFilteredResult(_0x290ec7,_0x2e9e39))[_0x2f3e('0x48')](handleError(_0x290ec7,null));};exports[_0x2f3e('0x49')]=function(_0x51d89f,_0xf48c39){var _0x14f230={'raw':![],'where':{'id':_0x51d89f[_0x2f3e('0x4a')]['id']}},_0x3d878c={};_0x3d878c['model']=_[_0x2f3e('0x39')](db[_0x2f3e('0x33')]['rawAttributes']);_0x3d878c[_0x2f3e('0x38')]=_['keys'](_0x51d89f[_0x2f3e('0x38')]);_0x3d878c[_0x2f3e('0x3a')]=_[_0x2f3e('0x3b')](_0x3d878c[_0x2f3e('0x37')],_0x3d878c[_0x2f3e('0x38')]);_0x14f230[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x3d878c[_0x2f3e('0x37')],qs['fields'](_0x51d89f['query']['fields']));_0x14f230['attributes']=_0x14f230[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x14f230[_0x2f3e('0x3c')]:_0x3d878c[_0x2f3e('0x37')];if(_0x51d89f['query'][_0x2f3e('0x4b')]){_0x14f230[_0x2f3e('0x47')]=[{'all':!![]}];}_0x14f230=_['merge']({},_0x14f230,_0x51d89f['options']);return db[_0x2f3e('0x33')][_0x2f3e('0x4c')](_0x14f230)[_0x2f3e('0x2a')](handleEntityNotFound(_0xf48c39,null))[_0x2f3e('0x2a')](respondWithResult(_0xf48c39,null))[_0x2f3e('0x48')](handleError(_0xf48c39,null));};exports[_0x2f3e('0x4d')]=function(_0x45cf90,_0x12b9a8){return db['JscriptyProject'][_0x2f3e('0x4d')](_0x45cf90[_0x2f3e('0x4e')],{})[_0x2f3e('0x2a')](function(_0x88fa23){var _0x474e69=_0x45cf90[_0x2f3e('0x4f')][_0x2f3e('0x2c')]({'plain':!![]});if(!_0x474e69)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x474e69[_0x2f3e('0x50')]===_0x2f3e('0x4f')){var _0x5c93e6=_0x88fa23[_0x2f3e('0x2c')]({'plain':!![]});var _0x3bc22e=_0x2f3e('0x2d');return db[_0x2f3e('0x51')][_0x2f3e('0x4c')]({'where':{'name':_0x3bc22e,'userProfileId':_0x474e69[_0x2f3e('0x52')]},'raw':!![]})['then'](function(_0x59474e){if(_0x59474e&&_0x59474e[_0x2f3e('0x53')]===0x0){return db[_0x2f3e('0x2e')][_0x2f3e('0x4d')]({'name':_0x5c93e6[_0x2f3e('0x45')],'resourceId':_0x5c93e6['id'],'type':_0x59474e[_0x2f3e('0x45')],'sectionId':_0x59474e['id']},{})['then'](function(){return _0x88fa23;});}else{return _0x88fa23;}})['catch'](function(_0x19376a){logger[_0x2f3e('0x54')](_0x2f3e('0x55'),_0x19376a);throw _0x19376a;});}return _0x88fa23;})[_0x2f3e('0x2a')](respondWithResult(_0x12b9a8,0xc9))['catch'](handleError(_0x12b9a8,null));};exports['clone']=function(_0x52cef2,_0x4d3745){var _0x513eb0={'where':{'id':_0x52cef2[_0x2f3e('0x4a')]['id']}},_0x2f2643={};_0x2f2643[_0x2f3e('0x37')]=_['keys'](db[_0x2f3e('0x33')][_0x2f3e('0x56')]);_0x513eb0[_0x2f3e('0x3c')]=_['intersection'](_0x2f2643[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x52cef2[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x513eb0['attributes']=_0x513eb0[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x513eb0[_0x2f3e('0x3c')]:_0x2f2643[_0x2f3e('0x37')];if(_0x52cef2['query']['includeAll']){_0x513eb0[_0x2f3e('0x47')]=[{'all':!![]}];}_0x513eb0=_[_0x2f3e('0x44')]({},_0x513eb0,_0x52cef2[_0x2f3e('0x46')]);return db[_0x2f3e('0x33')][_0x2f3e('0x4c')](_0x513eb0)[_0x2f3e('0x2a')](handleEntityNotFound(_0x4d3745,null))['then'](function(_0x1701f3){if(_0x1701f3){var _0x361a60=_0x1701f3[_0x2f3e('0x2c')]({'plain':!![]});_0x361a60=qs['omit'](_0x361a60,['id',_0x2f3e('0x57'),_0x2f3e('0x58')]);_0x52cef2['body']=_['omit'](_0x52cef2[_0x2f3e('0x4e')],['id','createdAt','updatedAt']);return db[_0x2f3e('0x33')][_0x2f3e('0x4d')](_[_0x2f3e('0x44')](_0x361a60,_0x52cef2[_0x2f3e('0x4e')]),{'include':_0x52cef2['query'][_0x2f3e('0x4b')]?[{'all':!![]}]:undefined})[_0x2f3e('0x2a')](function(_0x5cf850){var _0x54cb38=_0x52cef2[_0x2f3e('0x4f')]['get']({'plain':!![]});if(!_0x54cb38)throw new Error(_0x2f3e('0x59'));if(_0x54cb38[_0x2f3e('0x50')]==='user'){var _0x361cda=_0x5cf850[_0x2f3e('0x2c')]({'plain':!![]});var _0x3bba04=_0x2f3e('0x2d');return db[_0x2f3e('0x51')][_0x2f3e('0x4c')]({'where':{'name':_0x3bba04,'userProfileId':_0x54cb38[_0x2f3e('0x52')]},'raw':!![]})[_0x2f3e('0x2a')](function(_0x174db5){if(_0x174db5&&_0x174db5[_0x2f3e('0x53')]===0x0){return db[_0x2f3e('0x2e')][_0x2f3e('0x4d')]({'name':_0x361cda[_0x2f3e('0x45')],'resourceId':_0x361cda['id'],'type':_0x174db5['name'],'sectionId':_0x174db5['id']},{})[_0x2f3e('0x2a')](function(){return _0x5cf850;});}else{return _0x5cf850;}})[_0x2f3e('0x48')](function(_0x349037){logger['error'](_0x2f3e('0x55'),_0x349037);throw _0x349037;});}return _0x5cf850;});}})[_0x2f3e('0x2a')](respondWithResult(_0x4d3745,0xc9))[_0x2f3e('0x48')](handleError(_0x4d3745,null));};exports[_0x2f3e('0x29')]=function(_0x40e8cd,_0x3c541d){if(_0x40e8cd[_0x2f3e('0x4e')]['id']){delete _0x40e8cd[_0x2f3e('0x4e')]['id'];}return db[_0x2f3e('0x33')]['find']({'where':{'id':_0x40e8cd[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x3c541d,null))[_0x2f3e('0x2a')](saveUpdates(_0x40e8cd[_0x2f3e('0x4e')],null))[_0x2f3e('0x2a')](respondWithResult(_0x3c541d,null))[_0x2f3e('0x48')](handleError(_0x3c541d,null));};exports[_0x2f3e('0x2b')]=function(_0x25e677,_0x54535d){return db['JscriptyProject'][_0x2f3e('0x4c')]({'where':{'id':_0x25e677[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x54535d,null))[_0x2f3e('0x2a')](removeEntity(_0x54535d,null))['catch'](handleError(_0x54535d,null));};exports[_0x2f3e('0x5a')]=function(_0x3d7b09,_0x1fb565,_0x5b58e9){var _0x382a27={'raw':!![],'where':{}};var _0x3f6319={};var _0x51f8ef={'count':0x0,'rows':[]};return db['JscriptyProject']['findOne']({'where':{'id':_0x3d7b09[_0x2f3e('0x4a')]['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x1fb565,null))['then'](function(_0x282c7c){if(_0x282c7c){_0x3f6319[_0x2f3e('0x37')]=_[_0x2f3e('0x39')](db[_0x2f3e('0x5b')]['rawAttributes']);_0x3f6319[_0x2f3e('0x38')]=_[_0x2f3e('0x39')](_0x3d7b09[_0x2f3e('0x38')]);_0x3f6319['filters']=_['intersection'](_0x3f6319[_0x2f3e('0x37')],_0x3f6319[_0x2f3e('0x38')]);_0x382a27[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x3f6319[_0x2f3e('0x37')],qs['fields'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x382a27[_0x2f3e('0x3c')]=_0x382a27[_0x2f3e('0x3c')][_0x2f3e('0x3e')]?_0x382a27[_0x2f3e('0x3c')]:_0x3f6319[_0x2f3e('0x37')];if(!_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x3f')](_0x2f3e('0x5c'))){_0x382a27[_0x2f3e('0x22')]=qs['limit'](_0x3d7b09[_0x2f3e('0x38')]['limit']);_0x382a27[_0x2f3e('0x20')]=qs['offset'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x20')]);}_0x382a27[_0x2f3e('0x5d')]=qs['sort'](_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x40')]);_0x382a27[_0x2f3e('0x41')]=qs[_0x2f3e('0x3a')](_['pick'](_0x3d7b09[_0x2f3e('0x38')],_0x3f6319[_0x2f3e('0x3a')]));_0x382a27[_0x2f3e('0x41')][_0x2f3e('0x5e')]=_0x282c7c['id'];if(_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x382a27[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x382a27['where'],{'$or':_[_0x2f3e('0x32')](_0x382a27[_0x2f3e('0x3c')],function(_0x12fff9){var _0x266128={};_0x266128[_0x12fff9]={'$like':'%'+_0x3d7b09[_0x2f3e('0x38')][_0x2f3e('0x43')]+'%'};return _0x266128;})});}_0x382a27=_[_0x2f3e('0x44')]({},_0x382a27,_0x3d7b09[_0x2f3e('0x46')]);return db[_0x2f3e('0x5b')][_0x2f3e('0x23')]({'where':_0x382a27[_0x2f3e('0x41')]})[_0x2f3e('0x2a')](function(_0x44640f){_0x51f8ef[_0x2f3e('0x23')]=_0x44640f;if(_0x3d7b09[_0x2f3e('0x38')]['includeAll']){_0x382a27[_0x2f3e('0x47')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x382a27);})[_0x2f3e('0x2a')](function(_0xd18361){_0x51f8ef[_0x2f3e('0x5f')]=_0xd18361;return _0x51f8ef;});}})['then'](respondWithFilteredResult(_0x1fb565,_0x382a27))['catch'](handleError(_0x1fb565,null));};exports[_0x2f3e('0x60')]=function(_0x42bef9,_0x2787e4,_0x21e60f){var _0x3f84fb={'raw':!![],'where':{}};var _0x325acc={};var _0x4a1f48={'count':0x0,'rows':[]};return db[_0x2f3e('0x33')][_0x2f3e('0x61')]({'where':{'id':_0x42bef9['params']['id']}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x2787e4,null))[_0x2f3e('0x2a')](function(_0x3bd18d){if(_0x3bd18d){_0x325acc[_0x2f3e('0x37')]=_[_0x2f3e('0x39')](db[_0x2f3e('0x62')][_0x2f3e('0x56')]);_0x325acc[_0x2f3e('0x38')]=_['keys'](_0x42bef9['query']);_0x325acc[_0x2f3e('0x3a')]=_['intersection'](_0x325acc['model'],_0x325acc[_0x2f3e('0x38')]);_0x3f84fb[_0x2f3e('0x3c')]=_[_0x2f3e('0x3b')](_0x325acc[_0x2f3e('0x37')],qs[_0x2f3e('0x3d')](_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x3d')]));_0x3f84fb['attributes']=_0x3f84fb['attributes'][_0x2f3e('0x3e')]?_0x3f84fb['attributes']:_0x325acc[_0x2f3e('0x37')];if(!_0x42bef9[_0x2f3e('0x38')]['hasOwnProperty'](_0x2f3e('0x5c'))){_0x3f84fb['limit']=qs['limit'](_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x22')]);_0x3f84fb[_0x2f3e('0x20')]=qs['offset'](_0x42bef9['query'][_0x2f3e('0x20')]);}_0x3f84fb[_0x2f3e('0x5d')]=qs[_0x2f3e('0x40')](_0x42bef9[_0x2f3e('0x38')]['sort']);_0x3f84fb[_0x2f3e('0x41')]=qs['filters'](_[_0x2f3e('0x42')](_0x42bef9[_0x2f3e('0x38')],_0x325acc[_0x2f3e('0x3a')]));_0x3f84fb[_0x2f3e('0x41')]['ProjectId']=_0x3bd18d['id'];if(_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x43')]){_0x3f84fb[_0x2f3e('0x41')]=_[_0x2f3e('0x44')](_0x3f84fb[_0x2f3e('0x41')],{'$or':_['map'](_0x3f84fb['attributes'],function(_0x343040){var _0x244f55={};_0x244f55[_0x343040]={'$like':'%'+_0x42bef9[_0x2f3e('0x38')][_0x2f3e('0x43')]+'%'};return _0x244f55;})});}_0x3f84fb=_['merge']({},_0x3f84fb,_0x42bef9[_0x2f3e('0x46')]);return db['JscriptyAnswerReport'][_0x2f3e('0x23')]({'where':_0x3f84fb[_0x2f3e('0x41')]})[_0x2f3e('0x2a')](function(_0x143568){_0x4a1f48['count']=_0x143568;if(_0x42bef9[_0x2f3e('0x38')]['includeAll']){_0x3f84fb[_0x2f3e('0x47')]=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x3f84fb);})[_0x2f3e('0x2a')](function(_0x5a50cb){_0x4a1f48['rows']=_0x5a50cb;return _0x4a1f48;});}})['then'](respondWithFilteredResult(_0x2787e4,_0x3f84fb))[_0x2f3e('0x48')](handleError(_0x2787e4,null));};function char(_0x30eebb){return'number'===typeof _0x30eebb?String[_0x2f3e('0x63')][_0x2f3e('0x26')](null,arguments):_0x30eebb;}function needsEncapsulation(_0x114957){return!!_0x114957&&(_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0xd))>=0x0||_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0xa))>=0x0||_0x114957[_0x2f3e('0x64')]()[_0x2f3e('0x65')](char(0x2c))>=0x0||_0x114957['toString']()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x5bfedc){var _0xb29d8f=char(0x22),_0x267ca7='\x5c'+char(0x22),_0x3b232c=_0x5bfedc['toString']()['replace'](new RegExp(_0xb29d8f,'g'),_0x267ca7);return _0xb29d8f+_0x3b232c+_0xb29d8f;}exports[_0x2f3e('0x66')]=function(_0x8063a5,_0x1163de,_0x301022){var _0x2afcd3,_0x23fb52;var _0x1cf6de={'where':{'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id']}};if(_0x8063a5[_0x2f3e('0x38')][_0x2f3e('0x67')]){_0x1cf6de[_0x2f3e('0x41')]['starttime']=JSON[_0x2f3e('0x68')](_0x8063a5[_0x2f3e('0x38')]['startTime']);}return db[_0x2f3e('0x5b')][_0x2f3e('0x69')](_0x1cf6de)[_0x2f3e('0x2a')](handleEntityNotFound(_0x1163de,null))[_0x2f3e('0x2a')](function(_0x55f19b){if(_0x55f19b){_0x2afcd3=_0x55f19b;return db[_0x2f3e('0x6a')][_0x2f3e('0x69')]({'where':{'SessionId':{'$in':_['map'](_0x2afcd3,'id')},'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id']},'order':_0x2f3e('0x6b')});}})[_0x2f3e('0x2a')](handleEntityNotFound(_0x1163de,null))[_0x2f3e('0x2a')](function(_0xacee03){if(_0xacee03){_0x23fb52=_0xacee03;var _0x173d83={};for(var _0x3c7165=0x0,_0x37caf0=_0x23fb52['length'];_0x3c7165<_0x37caf0;_0x3c7165++){if(!_0x173d83[_0x2f3e('0x3f')](_0x23fb52[_0x3c7165][_0x2f3e('0x6c')])){_0x173d83[_0x23fb52[_0x3c7165][_0x2f3e('0x6c')]]=needsEncapsulation(_0x23fb52[_0x3c7165]['question'])?encapsulate(_0x23fb52[_0x3c7165][_0x2f3e('0x6d')]):_0x23fb52[_0x3c7165]['question'];}}var _0x7e942a=[],_0x59a91f={};for(var _0x32564c=0x0,_0x52123a=_0x2afcd3['length'];_0x32564c<_0x52123a;_0x32564c++){_0x59a91f={'ProjectId':_0x8063a5[_0x2f3e('0x4a')]['id'],'SessionId':_0x2afcd3[_0x32564c]['id'],'StartTime':moment(_0x2afcd3[_0x32564c][_0x2f3e('0x6e')])[_0x2f3e('0x6f')](_0x2f3e('0x70'))};for(var _0x224aca=0x0,_0x449ea9=_0x23fb52[_0x2f3e('0x3e')];_0x224aca<_0x449ea9;_0x224aca++){if(_0x23fb52[_0x224aca][_0x2f3e('0x71')]==_0x2afcd3[_0x32564c]['id']&&_0x173d83[_0x2f3e('0x3f')](_0x23fb52[_0x224aca][_0x2f3e('0x6c')])){_0x59a91f[_0x173d83[_0x23fb52[_0x224aca]['questionId']]]=_0x23fb52[_0x224aca][_0x2f3e('0x72')];}}for(var _0x55d6b2 in _0x173d83){if(!_0x59a91f[_0x2f3e('0x3f')](_0x173d83[_0x55d6b2])){_0x59a91f[_0x173d83[_0x55d6b2]]=null;}}_0x7e942a[_0x2f3e('0x73')](_0x59a91f);}return _0x7e942a;}})[_0x2f3e('0x2a')](function(_0x249fae){if(!_[_0x2f3e('0x74')](_0x249fae)){var _0x441d1c=toCsv(_0x249fae);var _0x2c98b3=Date[_0x2f3e('0x75')]();fs[_0x2f3e('0x76')](util[_0x2f3e('0x6f')](_0x2f3e('0x77'),_0x8063a5['params']['id'],_0x2c98b3),_0x441d1c);_0x1163de[_0x2f3e('0x78')](_0x2f3e('0x79'),'attachment;\x20filename='+util[_0x2f3e('0x6f')](_0x2f3e('0x7a'),_0x8063a5[_0x2f3e('0x4a')]['id'],_0x2c98b3));_0x1163de[_0x2f3e('0x78')](_0x2f3e('0x7b'),_0x2f3e('0x7c'));return _0x1163de[_0x2f3e('0x7d')](util[_0x2f3e('0x6f')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x8063a5[_0x2f3e('0x4a')]['id'],_0x2c98b3));}else{return _0x1163de[_0x2f3e('0x2f')](0xcc);}})[_0x2f3e('0x48')](handleError(_0x1163de,null));};
\ No newline at end of file
+var _0xa45b=['fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getSessions','findOne','JscriptySessionReport','pick','ProjectId','getAnswers','JscriptyAnswerReport','toString','indexOf','replace','startTime','starttime','-createdAt','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','questionId','answer','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Projects','UserProfileResource','destroy','end','error','name','index','map','JscriptyProject','rawAttributes'];(function(_0x1da661,_0x461d0c){var _0x23de30=function(_0xc2f852){while(--_0xc2f852){_0x1da661['push'](_0x1da661['shift']());}};_0x23de30(++_0x461d0c);}(_0xa45b,0x199));var _0xba45=function(_0x25003f,_0x33944e){_0x25003f=_0x25003f-0x0;var _0x3388e8=_0xa45b[_0x25003f];return _0x3388e8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xba45('0x0'));var zipdir=require(_0xba45('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xba45('0x2'));var Mustache=require(_0xba45('0x3'));var util=require(_0xba45('0x4'));var path=require(_0xba45('0x5'));var sox=require('sox');var csv=require(_0xba45('0x6'));var ejs=require(_0xba45('0x7'));var fs=require('fs');var fs_extra=require(_0xba45('0x8'));var _=require(_0xba45('0x9'));var squel=require(_0xba45('0xa'));var crypto=require(_0xba45('0xb'));var jsforce=require(_0xba45('0xc'));var deskjs=require(_0xba45('0xd'));var toCsv=require('to-csv');var querystring=require(_0xba45('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xba45('0xf'));var hardwareService=require(_0xba45('0x10'));var logger=require('../../config/logger')(_0xba45('0x11'));var utils=require(_0xba45('0x12'));var config=require(_0xba45('0x13'));var licenseUtil=require(_0xba45('0x14'));var db=require(_0xba45('0x15'))['db'];function respondWithStatusCode(_0x5b878e,_0x2d8063){_0x2d8063=_0x2d8063||0xcc;return function(_0x33ed14){if(_0x33ed14){return _0x5b878e[_0xba45('0x16')](_0x2d8063);}return _0x5b878e[_0xba45('0x17')](_0x2d8063)['end']();};}function respondWithResult(_0x4d78c8,_0x4d2ec5){_0x4d2ec5=_0x4d2ec5||0xc8;return function(_0x1972d7){if(_0x1972d7){return _0x4d78c8[_0xba45('0x17')](_0x4d2ec5)[_0xba45('0x18')](_0x1972d7);}};}function respondWithFilteredResult(_0x253db1,_0x734d93){return function(_0x13f291){if(_0x13f291){var _0x298d62=typeof _0x734d93[_0xba45('0x19')]===_0xba45('0x1a')&&typeof _0x734d93[_0xba45('0x1b')]==='undefined';var _0x35d1f8=_0x13f291[_0xba45('0x1c')];var _0x2d523c=_0x298d62?0x0:_0x734d93[_0xba45('0x19')];var _0x5df222=_0x298d62?_0x13f291[_0xba45('0x1c')]:_0x734d93['offset']+_0x734d93[_0xba45('0x1b')];var _0x187b2a;if(_0x5df222>=_0x35d1f8){_0x5df222=_0x35d1f8;_0x187b2a=0xc8;}else{_0x187b2a=0xce;}_0x253db1[_0xba45('0x17')](_0x187b2a);return _0x253db1[_0xba45('0x1d')](_0xba45('0x1e'),_0x2d523c+'-'+_0x5df222+'/'+_0x35d1f8)[_0xba45('0x18')](_0x13f291);}return null;};}function patchUpdates(_0x47fa7c){return function(_0x1f5979){try{jsonpatch[_0xba45('0x1f')](_0x1f5979,_0x47fa7c,!![]);}catch(_0x5b558a){return BPromise[_0xba45('0x20')](_0x5b558a);}return _0x1f5979[_0xba45('0x21')]();};}function saveUpdates(_0x252fdb,_0x3e31b9){return function(_0x11894d){if(_0x11894d){return _0x11894d[_0xba45('0x22')](_0x252fdb)[_0xba45('0x23')](function(_0x3988df){return _0x3988df;});}return null;};}function removeEntity(_0x35185e,_0x274f1b){return function(_0x5e840e){if(_0x5e840e){return _0x5e840e['destroy']()['then'](function(){var _0xcddf3f=_0x5e840e[_0xba45('0x24')]({'plain':!![]});var _0x346ef0=_0xba45('0x25');return db[_0xba45('0x26')][_0xba45('0x27')]({'where':{'type':_0x346ef0,'resourceId':_0xcddf3f['id']}})['then'](function(){return _0x5e840e;});})[_0xba45('0x23')](function(){_0x35185e[_0xba45('0x17')](0xcc)[_0xba45('0x28')]();});}};}function handleEntityNotFound(_0x508fcd,_0x52e9e7){return function(_0x541db4){if(!_0x541db4){_0x508fcd['sendStatus'](0x194);}return _0x541db4;};}function handleError(_0x1e5a50,_0x300a0b){_0x300a0b=_0x300a0b||0x1f4;return function(_0x7b5735){logger[_0xba45('0x29')](_0x7b5735['stack']);if(_0x7b5735[_0xba45('0x2a')]){delete _0x7b5735[_0xba45('0x2a')];}_0x1e5a50['status'](_0x300a0b)['send'](_0x7b5735);};}exports[_0xba45('0x2b')]=function(_0x44b4e0,_0x9d7bd3){var _0x18a04e={},_0x3bc8e3={},_0x4a5a19={'count':0x0,'rows':[]};var _0x7e284a=_[_0xba45('0x2c')](db[_0xba45('0x2d')][_0xba45('0x2e')],function(_0x145236){return{'name':_0x145236[_0xba45('0x2f')],'type':_0x145236[_0xba45('0x30')][_0xba45('0x31')]};});_0x3bc8e3['model']=_[_0xba45('0x2c')](_0x7e284a,_0xba45('0x2a'));_0x3bc8e3[_0xba45('0x32')]=_[_0xba45('0x33')](_0x44b4e0['query']);_0x3bc8e3[_0xba45('0x34')]=_['intersection'](_0x3bc8e3[_0xba45('0x35')],_0x3bc8e3[_0xba45('0x32')]);_0x18a04e[_0xba45('0x36')]=_[_0xba45('0x37')](_0x3bc8e3['model'],qs[_0xba45('0x38')](_0x44b4e0[_0xba45('0x32')]['fields']));_0x18a04e[_0xba45('0x36')]=_0x18a04e['attributes'][_0xba45('0x39')]?_0x18a04e[_0xba45('0x36')]:_0x3bc8e3['model'];if(!_0x44b4e0[_0xba45('0x32')][_0xba45('0x3a')](_0xba45('0x3b'))){_0x18a04e['limit']=qs[_0xba45('0x1b')](_0x44b4e0[_0xba45('0x32')]['limit']);_0x18a04e[_0xba45('0x19')]=qs[_0xba45('0x19')](_0x44b4e0[_0xba45('0x32')][_0xba45('0x19')]);}_0x18a04e[_0xba45('0x3c')]=qs[_0xba45('0x3d')](_0x44b4e0[_0xba45('0x32')][_0xba45('0x3d')]);_0x18a04e[_0xba45('0x3e')]=qs[_0xba45('0x34')](_['pick'](_0x44b4e0[_0xba45('0x32')],_0x3bc8e3['filters']),_0x7e284a);if(_0x44b4e0[_0xba45('0x32')][_0xba45('0x3f')]){_0x18a04e[_0xba45('0x3e')]=_[_0xba45('0x40')](_0x18a04e[_0xba45('0x3e')],{'$or':_[_0xba45('0x2c')](_0x7e284a,function(_0x5eb36b){if(_0x5eb36b[_0xba45('0x30')]!=='VIRTUAL'){var _0x3a3981={};_0x3a3981[_0x5eb36b[_0xba45('0x2a')]]={'$like':'%'+_0x44b4e0[_0xba45('0x32')][_0xba45('0x3f')]+'%'};return _0x3a3981;}})});}_0x18a04e=_[_0xba45('0x40')]({},_0x18a04e,_0x44b4e0[_0xba45('0x41')]);var _0x186ab0={'where':_0x18a04e['where']};return db[_0xba45('0x2d')][_0xba45('0x1c')](_0x186ab0)[_0xba45('0x23')](function(_0x5781d6){_0x4a5a19[_0xba45('0x1c')]=_0x5781d6;if(_0x44b4e0[_0xba45('0x32')][_0xba45('0x42')]){_0x18a04e[_0xba45('0x43')]=[{'all':!![]}];}return db['JscriptyProject'][_0xba45('0x44')](_0x18a04e);})[_0xba45('0x23')](function(_0x969ca7){_0x4a5a19[_0xba45('0x45')]=_0x969ca7;return _0x4a5a19;})[_0xba45('0x23')](respondWithFilteredResult(_0x9d7bd3,_0x18a04e))[_0xba45('0x46')](handleError(_0x9d7bd3,null));};exports[_0xba45('0x47')]=function(_0x20a65f,_0x24c935){var _0x4da222={'raw':![],'where':{'id':_0x20a65f[_0xba45('0x48')]['id']}},_0x41574b={};_0x41574b[_0xba45('0x35')]=_[_0xba45('0x33')](db[_0xba45('0x2d')][_0xba45('0x2e')]);_0x41574b[_0xba45('0x32')]=_[_0xba45('0x33')](_0x20a65f[_0xba45('0x32')]);_0x41574b[_0xba45('0x34')]=_['intersection'](_0x41574b['model'],_0x41574b[_0xba45('0x32')]);_0x4da222[_0xba45('0x36')]=_[_0xba45('0x37')](_0x41574b[_0xba45('0x35')],qs[_0xba45('0x38')](_0x20a65f['query'][_0xba45('0x38')]));_0x4da222['attributes']=_0x4da222[_0xba45('0x36')][_0xba45('0x39')]?_0x4da222[_0xba45('0x36')]:_0x41574b[_0xba45('0x35')];if(_0x20a65f[_0xba45('0x32')][_0xba45('0x42')]){_0x4da222['include']=[{'all':!![]}];}_0x4da222=_[_0xba45('0x40')]({},_0x4da222,_0x20a65f[_0xba45('0x41')]);return db[_0xba45('0x2d')][_0xba45('0x49')](_0x4da222)[_0xba45('0x23')](handleEntityNotFound(_0x24c935,null))[_0xba45('0x23')](respondWithResult(_0x24c935,null))[_0xba45('0x46')](handleError(_0x24c935,null));};exports['create']=function(_0x302ff8,_0x185cad){return db['JscriptyProject'][_0xba45('0x4a')](_0x302ff8[_0xba45('0x4b')],{})[_0xba45('0x23')](function(_0x55b508){var _0x29024c=_0x302ff8['user'][_0xba45('0x24')]({'plain':!![]});if(!_0x29024c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x29024c[_0xba45('0x4c')]===_0xba45('0x4d')){var _0x5f19a0=_0x55b508['get']({'plain':!![]});var _0x2e82dc=_0xba45('0x25');return db['UserProfileSection']['find']({'where':{'name':_0x2e82dc,'userProfileId':_0x29024c[_0xba45('0x4e')]},'raw':!![]})[_0xba45('0x23')](function(_0x19e76e){if(_0x19e76e&&_0x19e76e[_0xba45('0x4f')]===0x0){return db[_0xba45('0x26')][_0xba45('0x4a')]({'name':_0x5f19a0[_0xba45('0x2a')],'resourceId':_0x5f19a0['id'],'type':_0x19e76e[_0xba45('0x2a')],'sectionId':_0x19e76e['id']},{})[_0xba45('0x23')](function(){return _0x55b508;});}else{return _0x55b508;}})[_0xba45('0x46')](function(_0x14fa7d){logger[_0xba45('0x29')](_0xba45('0x50'),_0x14fa7d);throw _0x14fa7d;});}return _0x55b508;})[_0xba45('0x23')](respondWithResult(_0x185cad,0xc9))[_0xba45('0x46')](handleError(_0x185cad,null));};exports[_0xba45('0x51')]=function(_0x3f33fe,_0x54ac64){var _0x184889={'where':{'id':_0x3f33fe[_0xba45('0x48')]['id']}},_0x32c727={};_0x32c727[_0xba45('0x35')]=_['keys'](db[_0xba45('0x2d')][_0xba45('0x2e')]);_0x184889[_0xba45('0x36')]=_[_0xba45('0x37')](_0x32c727[_0xba45('0x35')],qs[_0xba45('0x38')](_0x3f33fe[_0xba45('0x32')][_0xba45('0x38')]));_0x184889[_0xba45('0x36')]=_0x184889[_0xba45('0x36')]['length']?_0x184889[_0xba45('0x36')]:_0x32c727[_0xba45('0x35')];if(_0x3f33fe['query']['includeAll']){_0x184889[_0xba45('0x43')]=[{'all':!![]}];}_0x184889=_[_0xba45('0x40')]({},_0x184889,_0x3f33fe[_0xba45('0x41')]);return db[_0xba45('0x2d')][_0xba45('0x49')](_0x184889)[_0xba45('0x23')](handleEntityNotFound(_0x54ac64,null))[_0xba45('0x23')](function(_0x4475b9){if(_0x4475b9){var _0x5e8c37=_0x4475b9[_0xba45('0x24')]({'plain':!![]});_0x5e8c37=qs[_0xba45('0x52')](_0x5e8c37,['id',_0xba45('0x53'),_0xba45('0x54')]);_0x3f33fe[_0xba45('0x4b')]=_[_0xba45('0x52')](_0x3f33fe['body'],['id',_0xba45('0x53'),_0xba45('0x54')]);return db[_0xba45('0x2d')][_0xba45('0x4a')](_[_0xba45('0x40')](_0x5e8c37,_0x3f33fe[_0xba45('0x4b')]),{'include':_0x3f33fe[_0xba45('0x32')][_0xba45('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x5b2dea){var _0x32f4e8=_0x3f33fe[_0xba45('0x4d')][_0xba45('0x24')]({'plain':!![]});if(!_0x32f4e8)throw new Error(_0xba45('0x55'));if(_0x32f4e8[_0xba45('0x4c')]===_0xba45('0x4d')){var _0x5cdc50=_0x5b2dea[_0xba45('0x24')]({'plain':!![]});var _0xae56b8=_0xba45('0x25');return db['UserProfileSection'][_0xba45('0x49')]({'where':{'name':_0xae56b8,'userProfileId':_0x32f4e8['userProfileId']},'raw':!![]})[_0xba45('0x23')](function(_0x228376){if(_0x228376&&_0x228376[_0xba45('0x4f')]===0x0){return db['UserProfileResource'][_0xba45('0x4a')]({'name':_0x5cdc50['name'],'resourceId':_0x5cdc50['id'],'type':_0x228376[_0xba45('0x2a')],'sectionId':_0x228376['id']},{})['then'](function(){return _0x5b2dea;});}else{return _0x5b2dea;}})[_0xba45('0x46')](function(_0x3f1571){logger[_0xba45('0x29')](_0xba45('0x50'),_0x3f1571);throw _0x3f1571;});}return _0x5b2dea;});}})[_0xba45('0x23')](respondWithResult(_0x54ac64,0xc9))[_0xba45('0x46')](handleError(_0x54ac64,null));};exports[_0xba45('0x22')]=function(_0xd9e844,_0x48a516){if(_0xd9e844[_0xba45('0x4b')]['id']){delete _0xd9e844[_0xba45('0x4b')]['id'];}return db[_0xba45('0x2d')][_0xba45('0x49')]({'where':{'id':_0xd9e844[_0xba45('0x48')]['id']}})[_0xba45('0x23')](handleEntityNotFound(_0x48a516,null))[_0xba45('0x23')](saveUpdates(_0xd9e844['body'],null))[_0xba45('0x23')](respondWithResult(_0x48a516,null))[_0xba45('0x46')](handleError(_0x48a516,null));};exports[_0xba45('0x27')]=function(_0x3613ca,_0x599cd4){return db[_0xba45('0x2d')]['find']({'where':{'id':_0x3613ca['params']['id']}})[_0xba45('0x23')](handleEntityNotFound(_0x599cd4,null))[_0xba45('0x23')](removeEntity(_0x599cd4,null))[_0xba45('0x46')](handleError(_0x599cd4,null));};exports[_0xba45('0x56')]=function(_0x3b97eb,_0x11ff78,_0x986d50){var _0x5dc3e9={'raw':!![],'where':{}};var _0x158f84={};var _0x29049f={'count':0x0,'rows':[]};return db[_0xba45('0x2d')][_0xba45('0x57')]({'where':{'id':_0x3b97eb[_0xba45('0x48')]['id']}})['then'](handleEntityNotFound(_0x11ff78,null))[_0xba45('0x23')](function(_0x50f481){if(_0x50f481){_0x158f84['model']=_['keys'](db[_0xba45('0x58')][_0xba45('0x2e')]);_0x158f84['query']=_[_0xba45('0x33')](_0x3b97eb[_0xba45('0x32')]);_0x158f84[_0xba45('0x34')]=_[_0xba45('0x37')](_0x158f84['model'],_0x158f84['query']);_0x5dc3e9[_0xba45('0x36')]=_['intersection'](_0x158f84[_0xba45('0x35')],qs[_0xba45('0x38')](_0x3b97eb['query'][_0xba45('0x38')]));_0x5dc3e9[_0xba45('0x36')]=_0x5dc3e9['attributes'][_0xba45('0x39')]?_0x5dc3e9[_0xba45('0x36')]:_0x158f84[_0xba45('0x35')];if(!_0x3b97eb[_0xba45('0x32')]['hasOwnProperty']('nolimit')){_0x5dc3e9[_0xba45('0x1b')]=qs[_0xba45('0x1b')](_0x3b97eb[_0xba45('0x32')][_0xba45('0x1b')]);_0x5dc3e9['offset']=qs['offset'](_0x3b97eb[_0xba45('0x32')]['offset']);}_0x5dc3e9[_0xba45('0x3c')]=qs[_0xba45('0x3d')](_0x3b97eb[_0xba45('0x32')][_0xba45('0x3d')]);_0x5dc3e9['where']=qs[_0xba45('0x34')](_[_0xba45('0x59')](_0x3b97eb['query'],_0x158f84[_0xba45('0x34')]));_0x5dc3e9[_0xba45('0x3e')][_0xba45('0x5a')]=_0x50f481['id'];if(_0x3b97eb[_0xba45('0x32')][_0xba45('0x3f')]){_0x5dc3e9[_0xba45('0x3e')]=_['merge'](_0x5dc3e9[_0xba45('0x3e')],{'$or':_['map'](_0x5dc3e9['attributes'],function(_0x58b69f){var _0x32fa6e={};_0x32fa6e[_0x58b69f]={'$like':'%'+_0x3b97eb[_0xba45('0x32')][_0xba45('0x3f')]+'%'};return _0x32fa6e;})});}_0x5dc3e9=_[_0xba45('0x40')]({},_0x5dc3e9,_0x3b97eb[_0xba45('0x41')]);return db[_0xba45('0x58')][_0xba45('0x1c')]({'where':_0x5dc3e9['where']})['then'](function(_0x2ae1e5){_0x29049f[_0xba45('0x1c')]=_0x2ae1e5;if(_0x3b97eb[_0xba45('0x32')][_0xba45('0x42')]){_0x5dc3e9[_0xba45('0x43')]=[{'all':!![]}];}return db[_0xba45('0x58')]['findAll'](_0x5dc3e9);})[_0xba45('0x23')](function(_0x3a5411){_0x29049f[_0xba45('0x45')]=_0x3a5411;return _0x29049f;});}})['then'](respondWithFilteredResult(_0x11ff78,_0x5dc3e9))[_0xba45('0x46')](handleError(_0x11ff78,null));};exports[_0xba45('0x5b')]=function(_0x189250,_0x4030eb,_0x38d130){var _0x23a26d={'raw':!![],'where':{}};var _0x2e1fb5={};var _0x660d54={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xba45('0x57')]({'where':{'id':_0x189250[_0xba45('0x48')]['id']}})[_0xba45('0x23')](handleEntityNotFound(_0x4030eb,null))[_0xba45('0x23')](function(_0x347a70){if(_0x347a70){_0x2e1fb5[_0xba45('0x35')]=_[_0xba45('0x33')](db[_0xba45('0x5c')][_0xba45('0x2e')]);_0x2e1fb5[_0xba45('0x32')]=_[_0xba45('0x33')](_0x189250[_0xba45('0x32')]);_0x2e1fb5[_0xba45('0x34')]=_[_0xba45('0x37')](_0x2e1fb5[_0xba45('0x35')],_0x2e1fb5['query']);_0x23a26d[_0xba45('0x36')]=_[_0xba45('0x37')](_0x2e1fb5[_0xba45('0x35')],qs[_0xba45('0x38')](_0x189250[_0xba45('0x32')][_0xba45('0x38')]));_0x23a26d['attributes']=_0x23a26d[_0xba45('0x36')][_0xba45('0x39')]?_0x23a26d['attributes']:_0x2e1fb5[_0xba45('0x35')];if(!_0x189250['query'][_0xba45('0x3a')](_0xba45('0x3b'))){_0x23a26d[_0xba45('0x1b')]=qs['limit'](_0x189250[_0xba45('0x32')]['limit']);_0x23a26d['offset']=qs['offset'](_0x189250['query']['offset']);}_0x23a26d[_0xba45('0x3c')]=qs[_0xba45('0x3d')](_0x189250[_0xba45('0x32')][_0xba45('0x3d')]);_0x23a26d[_0xba45('0x3e')]=qs['filters'](_[_0xba45('0x59')](_0x189250[_0xba45('0x32')],_0x2e1fb5[_0xba45('0x34')]));_0x23a26d[_0xba45('0x3e')][_0xba45('0x5a')]=_0x347a70['id'];if(_0x189250[_0xba45('0x32')]['filter']){_0x23a26d[_0xba45('0x3e')]=_[_0xba45('0x40')](_0x23a26d[_0xba45('0x3e')],{'$or':_['map'](_0x23a26d['attributes'],function(_0x21b3f8){var _0x4258d4={};_0x4258d4[_0x21b3f8]={'$like':'%'+_0x189250['query'][_0xba45('0x3f')]+'%'};return _0x4258d4;})});}_0x23a26d=_[_0xba45('0x40')]({},_0x23a26d,_0x189250[_0xba45('0x41')]);return db[_0xba45('0x5c')][_0xba45('0x1c')]({'where':_0x23a26d[_0xba45('0x3e')]})[_0xba45('0x23')](function(_0x34ae41){_0x660d54[_0xba45('0x1c')]=_0x34ae41;if(_0x189250[_0xba45('0x32')]['includeAll']){_0x23a26d[_0xba45('0x43')]=[{'all':!![]}];}return db[_0xba45('0x5c')]['findAll'](_0x23a26d);})['then'](function(_0x5beefb){_0x660d54['rows']=_0x5beefb;return _0x660d54;});}})[_0xba45('0x23')](respondWithFilteredResult(_0x4030eb,_0x23a26d))[_0xba45('0x46')](handleError(_0x4030eb,null));};function char(_0x51a756){return'number'===typeof _0x51a756?String['fromCharCode'][_0xba45('0x1f')](null,arguments):_0x51a756;}function needsEncapsulation(_0x2cd129){return!!_0x2cd129&&(_0x2cd129[_0xba45('0x5d')]()['indexOf'](char(0xd))>=0x0||_0x2cd129[_0xba45('0x5d')]()['indexOf'](char(0xa))>=0x0||_0x2cd129['toString']()[_0xba45('0x5e')](char(0x2c))>=0x0||_0x2cd129[_0xba45('0x5d')]()[_0xba45('0x5e')](char(0x22))>=0x0);}function encapsulate(_0x230c19){var _0x4677f9=char(0x22),_0x118337='\x5c'+char(0x22),_0x1a7e83=_0x230c19[_0xba45('0x5d')]()[_0xba45('0x5f')](new RegExp(_0x4677f9,'g'),_0x118337);return _0x4677f9+_0x1a7e83+_0x4677f9;}exports['getSummary']=function(_0x13f9db,_0x58a99e,_0x59bee8){var _0x380a6e,_0x29b0e5;var _0xa57d57={'where':{'ProjectId':_0x13f9db[_0xba45('0x48')]['id']}};if(_0x13f9db['query'][_0xba45('0x60')]){_0xa57d57['where'][_0xba45('0x61')]=JSON['parse'](_0x13f9db[_0xba45('0x32')][_0xba45('0x60')]);}return db['JscriptySessionReport'][_0xba45('0x44')](_0xa57d57)[_0xba45('0x23')](handleEntityNotFound(_0x58a99e,null))[_0xba45('0x23')](function(_0x1ff407){if(_0x1ff407){_0x380a6e=_0x1ff407;return db['JscriptyQuestionReport']['findAll']({'where':{'SessionId':{'$in':_[_0xba45('0x2c')](_0x380a6e,'id')},'ProjectId':_0x13f9db[_0xba45('0x48')]['id']},'order':_0xba45('0x62')});}})[_0xba45('0x23')](handleEntityNotFound(_0x58a99e,null))[_0xba45('0x23')](function(_0x16a801){if(_0x16a801){_0x29b0e5=_0x16a801;var _0x5f39e8={};for(var _0x48fddc=0x0,_0x75c0bd=_0x29b0e5['length'];_0x48fddc<_0x75c0bd;_0x48fddc++){if(!_0x5f39e8[_0xba45('0x3a')](_0x29b0e5[_0x48fddc]['questionId'])){_0x5f39e8[_0x29b0e5[_0x48fddc]['questionId']]=needsEncapsulation(_0x29b0e5[_0x48fddc]['question'])?encapsulate(_0x29b0e5[_0x48fddc]['question']):_0x29b0e5[_0x48fddc]['question'];}}var _0x5561f0=[],_0x564a45={};for(var _0x396ea7=0x0,_0x43ec08=_0x380a6e[_0xba45('0x39')];_0x396ea7<_0x43ec08;_0x396ea7++){_0x564a45={'ProjectId':_0x13f9db['params']['id'],'SessionId':_0x380a6e[_0x396ea7]['id'],'StartTime':moment(_0x380a6e[_0x396ea7][_0xba45('0x61')])[_0xba45('0x63')](_0xba45('0x64'))};for(var _0x4689b3=0x0,_0x453a45=_0x29b0e5[_0xba45('0x39')];_0x4689b3<_0x453a45;_0x4689b3++){if(_0x29b0e5[_0x4689b3][_0xba45('0x65')]==_0x380a6e[_0x396ea7]['id']&&_0x5f39e8['hasOwnProperty'](_0x29b0e5[_0x4689b3][_0xba45('0x66')])){_0x564a45[_0x5f39e8[_0x29b0e5[_0x4689b3][_0xba45('0x66')]]]=_0x29b0e5[_0x4689b3][_0xba45('0x67')];}}for(var _0xe0576 in _0x5f39e8){if(!_0x564a45[_0xba45('0x3a')](_0x5f39e8[_0xe0576])){_0x564a45[_0x5f39e8[_0xe0576]]=null;}}_0x5561f0['push'](_0x564a45);}return _0x5561f0;}})['then'](function(_0x24fa7a){if(!_[_0xba45('0x68')](_0x24fa7a)){var _0x551049=toCsv(_0x24fa7a);var _0x20180c=Date[_0xba45('0x69')]();fs[_0xba45('0x6a')](util[_0xba45('0x63')](_0xba45('0x6b'),_0x13f9db[_0xba45('0x48')]['id'],_0x20180c),_0x551049);_0x58a99e[_0xba45('0x6c')](_0xba45('0x6d'),_0xba45('0x6e')+util[_0xba45('0x63')](_0xba45('0x6f'),_0x13f9db[_0xba45('0x48')]['id'],_0x20180c));_0x58a99e[_0xba45('0x6c')]('Content-type',_0xba45('0x70'));return _0x58a99e[_0xba45('0x71')](util[_0xba45('0x63')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x13f9db['params']['id'],_0x20180c));}else{return _0x58a99e[_0xba45('0x16')](0xcc);}})['catch'](handleError(_0x58a99e,null));};
\ No newline at end of file
index aa6b35b..dfe013c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe52=['../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x228fc2,_0x782cb5){var _0x5f3a50=function(_0x16f9ef){while(--_0x16f9ef){_0x228fc2['push'](_0x228fc2['shift']());}};_0x5f3a50(++_0x782cb5);}(_0xbe52,0x164));var _0x2be5=function(_0x515c3c,_0x204e4c){_0x515c3c=_0x515c3c-0x0;var _0x13d935=_0xbe52[_0x515c3c];return _0x13d935;};'use strict';var _=require(_0x2be5('0x0'));var util=require(_0x2be5('0x1'));var logger=require(_0x2be5('0x2'))(_0x2be5('0x3'));var moment=require(_0x2be5('0x4'));var BPromise=require('bluebird');var rp=require(_0x2be5('0x5'));var fs=require('fs');var path=require(_0x2be5('0x6'));var rimraf=require(_0x2be5('0x7'));var config=require(_0x2be5('0x8'));var attributes=require(_0x2be5('0x9'));module[_0x2be5('0xa')]=function(_0x39dc18,_0x13fadf){return _0x39dc18[_0x2be5('0xb')](_0x2be5('0xc'),attributes,{'tableName':_0x2be5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1670=['lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','JscriptyProject','jscripty_projects'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1670,0x9a));var _0x0167=function(_0x14cb5d,_0x204e68){_0x14cb5d=_0x14cb5d-0x0;var _0x97be65=_0x1670[_0x14cb5d];return _0x97be65;};'use strict';var _=require(_0x0167('0x0'));var util=require(_0x0167('0x1'));var logger=require('../../config/logger')(_0x0167('0x2'));var moment=require('moment');var BPromise=require(_0x0167('0x3'));var rp=require(_0x0167('0x4'));var fs=require('fs');var path=require(_0x0167('0x5'));var rimraf=require(_0x0167('0x6'));var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module[_0x0167('0x7')]=function(_0x1ae650,_0x295e51){return _0x1ae650[_0x0167('0x8')](_0x0167('0x9'),attributes,{'tableName':_0x0167('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fee4d7..01e9742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x43b9b5,_0x3d8f95){var _0x3d6c8f=function(_0x1e538e){while(--_0x1e538e){_0x43b9b5['push'](_0x43b9b5['shift']());}};_0x3d6c8f(++_0x3d8f95);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xbdb7=['request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','JscriptyProject,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x490413,_0xb5dd06){_0x490413=_0x490413-0x0;var _0x4dba2e=_0xbdb7[_0x490413];return _0x4dba2e;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index 747698e..797283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b0=['/describe','describe','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./jscriptyQuestionReport.controller','get','isAuthenticated','index'];(function(_0x157aa9,_0x11340f){var _0x519af8=function(_0x4f060f){while(--_0x4f060f){_0x157aa9['push'](_0x157aa9['shift']());}};_0x519af8(++_0x11340f);}(_0xb3b0,0x1ac));var _0x0b3b=function(_0x115155,_0x12a890){_0x115155=_0x115155-0x0;var _0x181d09=_0xb3b0[_0x115155];return _0x181d09;};'use strict';var multer=require(_0x0b3b('0x0'));var util=require(_0x0b3b('0x1'));var path=require(_0x0b3b('0x2'));var timeout=require(_0x0b3b('0x3'));var express=require(_0x0b3b('0x4'));var router=express[_0x0b3b('0x5')]();var fs_extra=require(_0x0b3b('0x6'));var auth=require(_0x0b3b('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0b3b('0x8'));router[_0x0b3b('0x9')]('/',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xb')]);router[_0x0b3b('0x9')](_0x0b3b('0xc'),auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xd')]);router[_0x0b3b('0x9')]('/:id',auth[_0x0b3b('0xa')](),controller['show']);router[_0x0b3b('0xe')]('/',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0xf')]);router[_0x0b3b('0x10')]('/:id',auth[_0x0b3b('0xa')](),controller[_0x0b3b('0x11')]);router[_0x0b3b('0x12')](_0x0b3b('0x13'),auth[_0x0b3b('0xa')](),controller[_0x0b3b('0x14')]);module[_0x0b3b('0x15')]=router;
\ No newline at end of file
+var _0xa28e=['../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x18bbfb,_0x49a75b){var _0x2ecb96=function(_0x196c50){while(--_0x196c50){_0x18bbfb['push'](_0x18bbfb['shift']());}};_0x2ecb96(++_0x49a75b);}(_0xa28e,0x15d));var _0xea28=function(_0x4814d2,_0x22c926){_0x4814d2=_0x4814d2-0x0;var _0x2bb7c8=_0xa28e[_0x4814d2];return _0x2bb7c8;};'use strict';var multer=require(_0xea28('0x0'));var util=require(_0xea28('0x1'));var path=require('path');var timeout=require(_0xea28('0x2'));var express=require(_0xea28('0x3'));var router=express[_0xea28('0x4')]();var fs_extra=require(_0xea28('0x5'));var auth=require(_0xea28('0x6'));var interaction=require(_0xea28('0x7'));var config=require(_0xea28('0x8'));var controller=require(_0xea28('0x9'));router[_0xea28('0xa')]('/',auth[_0xea28('0xb')](),controller[_0xea28('0xc')]);router[_0xea28('0xa')]('/describe',auth[_0xea28('0xb')](),controller[_0xea28('0xd')]);router[_0xea28('0xa')](_0xea28('0xe'),auth[_0xea28('0xb')](),controller['show']);router[_0xea28('0xf')]('/',auth['isAuthenticated'](),controller[_0xea28('0x10')]);router[_0xea28('0x11')]('/:id',auth[_0xea28('0xb')](),controller[_0xea28('0x12')]);router[_0xea28('0x13')](_0xea28('0xe'),auth['isAuthenticated'](),controller[_0xea28('0x14')]);module['exports']=router;
\ No newline at end of file
index fc611c6..c3560a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x7a54,0x106));var _0x47a5=function(_0x1b10bd,_0x14d05f){_0x1b10bd=_0x1b10bd-0x0;var _0x4780a9=_0x7a54[_0x1b10bd];return _0x4780a9;};'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(_0x4a1c49,_0x418192){_0x4a1c49=_0x4a1c49-0x0;var _0x43a1a7=_0x7a54[_0x4a1c49];return _0x43a1a7;};'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 a9bd389..1af9a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9407=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','then','error','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filters','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce'];(function(_0x475300,_0x382015){var _0x581269=function(_0x35d175){while(--_0x35d175){_0x475300['push'](_0x475300['shift']());}};_0x581269(++_0x382015);}(_0x9407,0x8b));var _0x7940=function(_0x44ce86,_0x4c152e){_0x44ce86=_0x44ce86-0x0;var _0x5b4576=_0x9407[_0x44ce86];return _0x5b4576;};'use strict';var emlformat=require(_0x7940('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7940('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7940('0x2'));var moment=require(_0x7940('0x3'));var BPromise=require(_0x7940('0x4'));var Mustache=require(_0x7940('0x5'));var util=require('util');var path=require('path');var sox=require(_0x7940('0x6'));var csv=require(_0x7940('0x7'));var ejs=require(_0x7940('0x8'));var fs=require('fs');var fs_extra=require(_0x7940('0x9'));var _=require(_0x7940('0xa'));var squel=require(_0x7940('0xb'));var crypto=require('crypto');var jsforce=require(_0x7940('0xc'));var deskjs=require(_0x7940('0xd'));var toCsv=require(_0x7940('0x7'));var querystring=require(_0x7940('0xe'));var Papa=require(_0x7940('0xf'));var Redis=require(_0x7940('0x10'));var authService=require(_0x7940('0x11'));var qs=require(_0x7940('0x12'));var as=require(_0x7940('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7940('0x14'))(_0x7940('0x15'));var utils=require(_0x7940('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7940('0x17'));var db=require(_0x7940('0x18'))['db'];function respondWithStatusCode(_0xcbd2c9,_0x1bcb12){_0x1bcb12=_0x1bcb12||0xcc;return function(_0x48949e){if(_0x48949e){return _0xcbd2c9[_0x7940('0x19')](_0x1bcb12);}return _0xcbd2c9[_0x7940('0x1a')](_0x1bcb12)[_0x7940('0x1b')]();};}function respondWithResult(_0x44f085,_0x507900){_0x507900=_0x507900||0xc8;return function(_0xa2e164){if(_0xa2e164){return _0x44f085['status'](_0x507900)[_0x7940('0x1c')](_0xa2e164);}};}function respondWithFilteredResult(_0x34863a,_0x4728dd){return function(_0x22bbb2){if(_0x22bbb2){var _0x14cccb=typeof _0x4728dd[_0x7940('0x1d')]===_0x7940('0x1e')&&typeof _0x4728dd[_0x7940('0x1f')]===_0x7940('0x1e');var _0x17d78e=_0x22bbb2[_0x7940('0x20')];var _0x44299f=_0x14cccb?0x0:_0x4728dd[_0x7940('0x1d')];var _0x1e7b19=_0x14cccb?_0x22bbb2[_0x7940('0x20')]:_0x4728dd[_0x7940('0x1d')]+_0x4728dd[_0x7940('0x1f')];var _0x14648e;if(_0x1e7b19>=_0x17d78e){_0x1e7b19=_0x17d78e;_0x14648e=0xc8;}else{_0x14648e=0xce;}_0x34863a[_0x7940('0x1a')](_0x14648e);return _0x34863a['set'](_0x7940('0x21'),_0x44299f+'-'+_0x1e7b19+'/'+_0x17d78e)[_0x7940('0x1c')](_0x22bbb2);}return null;};}function patchUpdates(_0x45e205){return function(_0xcebfa8){try{jsonpatch[_0x7940('0x22')](_0xcebfa8,_0x45e205,!![]);}catch(_0x447e22){return BPromise[_0x7940('0x23')](_0x447e22);}return _0xcebfa8['save']();};}function saveUpdates(_0x4baab6,_0x3039ca){return function(_0x5179e8){if(_0x5179e8){return _0x5179e8['update'](_0x4baab6)[_0x7940('0x24')](function(_0x1ea0bd){return _0x1ea0bd;});}return null;};}function removeEntity(_0x2faa87,_0x453dc4){return function(_0x5d114b){if(_0x5d114b){return _0x5d114b['destroy']()[_0x7940('0x24')](function(){_0x2faa87[_0x7940('0x1a')](0xcc)[_0x7940('0x1b')]();});}};}function handleEntityNotFound(_0x16484c,_0x21816a){return function(_0x5a90eb){if(!_0x5a90eb){_0x16484c[_0x7940('0x19')](0x194);}return _0x5a90eb;};}function handleError(_0x15c2b4,_0x218d3b){_0x218d3b=_0x218d3b||0x1f4;return function(_0x51faa9){logger[_0x7940('0x25')](_0x51faa9[_0x7940('0x26')]);if(_0x51faa9['name']){delete _0x51faa9[_0x7940('0x27')];}_0x15c2b4[_0x7940('0x1a')](_0x218d3b)[_0x7940('0x28')](_0x51faa9);};}exports[_0x7940('0x29')]=function(_0x41a0a3,_0x93ab44){var _0x44f9ea={},_0x468ba4={},_0x362a6b={'count':0x0,'rows':[]};var _0x40137e=_['map'](db[_0x7940('0x2a')][_0x7940('0x2b')],function(_0x404048){return{'name':_0x404048[_0x7940('0x2c')],'type':_0x404048[_0x7940('0x2d')][_0x7940('0x2e')]};});_0x468ba4[_0x7940('0x2f')]=_[_0x7940('0x30')](_0x40137e,_0x7940('0x27'));_0x468ba4[_0x7940('0x31')]=_[_0x7940('0x32')](_0x41a0a3['query']);_0x468ba4['filters']=_[_0x7940('0x33')](_0x468ba4[_0x7940('0x2f')],_0x468ba4[_0x7940('0x31')]);_0x44f9ea['attributes']=_[_0x7940('0x33')](_0x468ba4[_0x7940('0x2f')],qs[_0x7940('0x34')](_0x41a0a3[_0x7940('0x31')][_0x7940('0x34')]));_0x44f9ea[_0x7940('0x35')]=_0x44f9ea[_0x7940('0x35')][_0x7940('0x36')]?_0x44f9ea[_0x7940('0x35')]:_0x468ba4[_0x7940('0x2f')];if(!_0x41a0a3['query'][_0x7940('0x37')](_0x7940('0x38'))){_0x44f9ea[_0x7940('0x1f')]=qs[_0x7940('0x1f')](_0x41a0a3['query'][_0x7940('0x1f')]);_0x44f9ea[_0x7940('0x1d')]=qs[_0x7940('0x1d')](_0x41a0a3[_0x7940('0x31')][_0x7940('0x1d')]);}_0x44f9ea[_0x7940('0x39')]=qs['sort'](_0x41a0a3['query']['sort']);_0x44f9ea[_0x7940('0x3a')]=qs['filters'](_[_0x7940('0x3b')](_0x41a0a3[_0x7940('0x31')],_0x468ba4[_0x7940('0x3c')]),_0x40137e);if(_0x41a0a3['query'][_0x7940('0x3d')]){_0x44f9ea['where']=_['merge'](_0x44f9ea[_0x7940('0x3a')],{'$or':_[_0x7940('0x30')](_0x40137e,function(_0x304868){if(_0x304868['type']!==_0x7940('0x3e')){var _0x3021f2={};_0x3021f2[_0x304868[_0x7940('0x27')]]={'$like':'%'+_0x41a0a3[_0x7940('0x31')][_0x7940('0x3d')]+'%'};return _0x3021f2;}})});}_0x44f9ea=_[_0x7940('0x3f')]({},_0x44f9ea,_0x41a0a3[_0x7940('0x40')]);var _0x1a3b05={'where':_0x44f9ea[_0x7940('0x3a')]};return db['JscriptyQuestionReport'][_0x7940('0x20')](_0x1a3b05)[_0x7940('0x24')](function(_0x2f2bdd){_0x362a6b[_0x7940('0x20')]=_0x2f2bdd;if(_0x41a0a3[_0x7940('0x31')]['includeAll']){_0x44f9ea[_0x7940('0x41')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x7940('0x42')](_0x44f9ea);})['then'](function(_0x3f55a9){_0x362a6b[_0x7940('0x43')]=_0x3f55a9;return _0x362a6b;})[_0x7940('0x24')](respondWithFilteredResult(_0x93ab44,_0x44f9ea))[_0x7940('0x44')](handleError(_0x93ab44,null));};exports[_0x7940('0x45')]=function(_0x6cde2d,_0x9792a0){var _0x4aec8c={'raw':!![],'where':{'id':_0x6cde2d[_0x7940('0x46')]['id']}},_0xe9c024={};_0xe9c024[_0x7940('0x2f')]=_[_0x7940('0x32')](db[_0x7940('0x2a')][_0x7940('0x2b')]);_0xe9c024['query']=_['keys'](_0x6cde2d[_0x7940('0x31')]);_0xe9c024[_0x7940('0x3c')]=_[_0x7940('0x33')](_0xe9c024['model'],_0xe9c024[_0x7940('0x31')]);_0x4aec8c['attributes']=_['intersection'](_0xe9c024[_0x7940('0x2f')],qs[_0x7940('0x34')](_0x6cde2d[_0x7940('0x31')]['fields']));_0x4aec8c[_0x7940('0x35')]=_0x4aec8c[_0x7940('0x35')][_0x7940('0x36')]?_0x4aec8c['attributes']:_0xe9c024['model'];if(_0x6cde2d['query']['includeAll']){_0x4aec8c['include']=[{'all':!![]}];}_0x4aec8c=_[_0x7940('0x3f')]({},_0x4aec8c,_0x6cde2d[_0x7940('0x40')]);return db[_0x7940('0x2a')][_0x7940('0x47')](_0x4aec8c)[_0x7940('0x24')](handleEntityNotFound(_0x9792a0,null))[_0x7940('0x24')](respondWithResult(_0x9792a0,null))[_0x7940('0x44')](handleError(_0x9792a0,null));};exports[_0x7940('0x48')]=function(_0x56756f,_0x45e143){return db[_0x7940('0x2a')]['create'](_0x56756f[_0x7940('0x49')],{})['then'](respondWithResult(_0x45e143,0xc9))[_0x7940('0x44')](handleError(_0x45e143,null));};exports[_0x7940('0x4a')]=function(_0x55bdcb,_0x5e8ab1){if(_0x55bdcb[_0x7940('0x49')]['id']){delete _0x55bdcb[_0x7940('0x49')]['id'];}return db[_0x7940('0x2a')][_0x7940('0x47')]({'where':{'id':_0x55bdcb[_0x7940('0x46')]['id']}})[_0x7940('0x24')](handleEntityNotFound(_0x5e8ab1,null))[_0x7940('0x24')](saveUpdates(_0x55bdcb['body'],null))[_0x7940('0x24')](respondWithResult(_0x5e8ab1,null))[_0x7940('0x44')](handleError(_0x5e8ab1,null));};exports['destroy']=function(_0x344d1f,_0x3474db){return db[_0x7940('0x2a')][_0x7940('0x47')]({'where':{'id':_0x344d1f[_0x7940('0x46')]['id']}})[_0x7940('0x24')](handleEntityNotFound(_0x3474db,null))[_0x7940('0x24')](removeEntity(_0x3474db,null))[_0x7940('0x44')](handleError(_0x3474db,null));};exports[_0x7940('0x4b')]=function(_0x49081f,_0x39b359){return db[_0x7940('0x2a')][_0x7940('0x4b')]()[_0x7940('0x24')](respondWithResult(_0x39b359,null))[_0x7940('0x44')](handleError(_0x39b359,null));};
\ No newline at end of file
+var _0x8712=['apply','save','then','destroy','error','name','send','index','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','filter','JscriptyQuestionReport','include','findAll','catch','show','keys','options','find','create','body','update','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range'];(function(_0x19fe42,_0x168635){var _0x3db34e=function(_0x4e311f){while(--_0x4e311f){_0x19fe42['push'](_0x19fe42['shift']());}};_0x3db34e(++_0x168635);}(_0x8712,0x1dd));var _0x2871=function(_0x44c742,_0x5d69a4){_0x44c742=_0x44c742-0x0;var _0x40fcf0=_0x8712[_0x44c742];return _0x40fcf0;};'use strict';var emlformat=require(_0x2871('0x0'));var rimraf=require(_0x2871('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2871('0x2'));var moment=require(_0x2871('0x3'));var BPromise=require(_0x2871('0x4'));var Mustache=require(_0x2871('0x5'));var util=require(_0x2871('0x6'));var path=require('path');var sox=require(_0x2871('0x7'));var csv=require(_0x2871('0x8'));var ejs=require(_0x2871('0x9'));var fs=require('fs');var fs_extra=require(_0x2871('0xa'));var _=require(_0x2871('0xb'));var squel=require(_0x2871('0xc'));var crypto=require('crypto');var jsforce=require(_0x2871('0xd'));var deskjs=require(_0x2871('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2871('0xf'));var Redis=require(_0x2871('0x10'));var authService=require(_0x2871('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2871('0x12'));var hardwareService=require(_0x2871('0x13'));var logger=require('../../config/logger')(_0x2871('0x14'));var utils=require(_0x2871('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2871('0x16'));var db=require(_0x2871('0x17'))['db'];function respondWithStatusCode(_0x2254bf,_0x22cedb){_0x22cedb=_0x22cedb||0xcc;return function(_0x372a07){if(_0x372a07){return _0x2254bf[_0x2871('0x18')](_0x22cedb);}return _0x2254bf[_0x2871('0x19')](_0x22cedb)[_0x2871('0x1a')]();};}function respondWithResult(_0x14c88f,_0x747efd){_0x747efd=_0x747efd||0xc8;return function(_0x5d532c){if(_0x5d532c){return _0x14c88f[_0x2871('0x19')](_0x747efd)[_0x2871('0x1b')](_0x5d532c);}};}function respondWithFilteredResult(_0x485c42,_0x49d29a){return function(_0x55769f){if(_0x55769f){var _0x5bec02=typeof _0x49d29a['offset']===_0x2871('0x1c')&&typeof _0x49d29a[_0x2871('0x1d')]===_0x2871('0x1c');var _0x3184d7=_0x55769f['count'];var _0x4e738d=_0x5bec02?0x0:_0x49d29a[_0x2871('0x1e')];var _0x225733=_0x5bec02?_0x55769f[_0x2871('0x1f')]:_0x49d29a[_0x2871('0x1e')]+_0x49d29a[_0x2871('0x1d')];var _0xd5ac97;if(_0x225733>=_0x3184d7){_0x225733=_0x3184d7;_0xd5ac97=0xc8;}else{_0xd5ac97=0xce;}_0x485c42[_0x2871('0x19')](_0xd5ac97);return _0x485c42[_0x2871('0x20')](_0x2871('0x21'),_0x4e738d+'-'+_0x225733+'/'+_0x3184d7)['json'](_0x55769f);}return null;};}function patchUpdates(_0xff0dd9){return function(_0x369af0){try{jsonpatch[_0x2871('0x22')](_0x369af0,_0xff0dd9,!![]);}catch(_0x403f90){return BPromise['reject'](_0x403f90);}return _0x369af0[_0x2871('0x23')]();};}function saveUpdates(_0x5ad19f,_0xb9cf33){return function(_0x538c1a){if(_0x538c1a){return _0x538c1a['update'](_0x5ad19f)[_0x2871('0x24')](function(_0x2ab498){return _0x2ab498;});}return null;};}function removeEntity(_0x4ce0b7,_0x4cf01c){return function(_0x1ed9af){if(_0x1ed9af){return _0x1ed9af[_0x2871('0x25')]()[_0x2871('0x24')](function(){_0x4ce0b7[_0x2871('0x19')](0xcc)[_0x2871('0x1a')]();});}};}function handleEntityNotFound(_0x2d0313,_0x5c0a36){return function(_0x26daa4){if(!_0x26daa4){_0x2d0313[_0x2871('0x18')](0x194);}return _0x26daa4;};}function handleError(_0x33acd9,_0x48fe5f){_0x48fe5f=_0x48fe5f||0x1f4;return function(_0xf235cc){logger[_0x2871('0x26')](_0xf235cc['stack']);if(_0xf235cc[_0x2871('0x27')]){delete _0xf235cc[_0x2871('0x27')];}_0x33acd9[_0x2871('0x19')](_0x48fe5f)[_0x2871('0x28')](_0xf235cc);};}exports[_0x2871('0x29')]=function(_0x5180e2,_0xbf6261){var _0x5d1d0={},_0x742789={},_0x42ec68={'count':0x0,'rows':[]};var _0x5ba4ed=_['map'](db['JscriptyQuestionReport'][_0x2871('0x2a')],function(_0x3d971d){return{'name':_0x3d971d['fieldName'],'type':_0x3d971d[_0x2871('0x2b')][_0x2871('0x2c')]};});_0x742789[_0x2871('0x2d')]=_['map'](_0x5ba4ed,_0x2871('0x27'));_0x742789[_0x2871('0x2e')]=_['keys'](_0x5180e2['query']);_0x742789['filters']=_[_0x2871('0x2f')](_0x742789['model'],_0x742789['query']);_0x5d1d0[_0x2871('0x30')]=_['intersection'](_0x742789[_0x2871('0x2d')],qs[_0x2871('0x31')](_0x5180e2[_0x2871('0x2e')][_0x2871('0x31')]));_0x5d1d0[_0x2871('0x30')]=_0x5d1d0['attributes'][_0x2871('0x32')]?_0x5d1d0[_0x2871('0x30')]:_0x742789['model'];if(!_0x5180e2['query'][_0x2871('0x33')](_0x2871('0x34'))){_0x5d1d0[_0x2871('0x1d')]=qs['limit'](_0x5180e2['query']['limit']);_0x5d1d0[_0x2871('0x1e')]=qs[_0x2871('0x1e')](_0x5180e2[_0x2871('0x2e')][_0x2871('0x1e')]);}_0x5d1d0[_0x2871('0x35')]=qs[_0x2871('0x36')](_0x5180e2[_0x2871('0x2e')][_0x2871('0x36')]);_0x5d1d0['where']=qs[_0x2871('0x37')](_[_0x2871('0x38')](_0x5180e2['query'],_0x742789[_0x2871('0x37')]),_0x5ba4ed);if(_0x5180e2['query']['filter']){_0x5d1d0[_0x2871('0x39')]=_[_0x2871('0x3a')](_0x5d1d0[_0x2871('0x39')],{'$or':_['map'](_0x5ba4ed,function(_0x5aceb0){if(_0x5aceb0[_0x2871('0x2b')]!=='VIRTUAL'){var _0x3f1c82={};_0x3f1c82[_0x5aceb0['name']]={'$like':'%'+_0x5180e2[_0x2871('0x2e')][_0x2871('0x3b')]+'%'};return _0x3f1c82;}})});}_0x5d1d0=_[_0x2871('0x3a')]({},_0x5d1d0,_0x5180e2['options']);var _0x379567={'where':_0x5d1d0[_0x2871('0x39')]};return db[_0x2871('0x3c')]['count'](_0x379567)[_0x2871('0x24')](function(_0xfdec1e){_0x42ec68[_0x2871('0x1f')]=_0xfdec1e;if(_0x5180e2[_0x2871('0x2e')]['includeAll']){_0x5d1d0[_0x2871('0x3d')]=[{'all':!![]}];}return db[_0x2871('0x3c')][_0x2871('0x3e')](_0x5d1d0);})['then'](function(_0x20e1a2){_0x42ec68['rows']=_0x20e1a2;return _0x42ec68;})['then'](respondWithFilteredResult(_0xbf6261,_0x5d1d0))[_0x2871('0x3f')](handleError(_0xbf6261,null));};exports[_0x2871('0x40')]=function(_0x251d09,_0x423457){var _0x5b071e={'raw':!![],'where':{'id':_0x251d09['params']['id']}},_0x195124={};_0x195124[_0x2871('0x2d')]=_[_0x2871('0x41')](db[_0x2871('0x3c')][_0x2871('0x2a')]);_0x195124['query']=_[_0x2871('0x41')](_0x251d09[_0x2871('0x2e')]);_0x195124[_0x2871('0x37')]=_[_0x2871('0x2f')](_0x195124[_0x2871('0x2d')],_0x195124[_0x2871('0x2e')]);_0x5b071e[_0x2871('0x30')]=_[_0x2871('0x2f')](_0x195124[_0x2871('0x2d')],qs['fields'](_0x251d09['query'][_0x2871('0x31')]));_0x5b071e[_0x2871('0x30')]=_0x5b071e[_0x2871('0x30')][_0x2871('0x32')]?_0x5b071e[_0x2871('0x30')]:_0x195124[_0x2871('0x2d')];if(_0x251d09[_0x2871('0x2e')]['includeAll']){_0x5b071e[_0x2871('0x3d')]=[{'all':!![]}];}_0x5b071e=_[_0x2871('0x3a')]({},_0x5b071e,_0x251d09[_0x2871('0x42')]);return db[_0x2871('0x3c')][_0x2871('0x43')](_0x5b071e)[_0x2871('0x24')](handleEntityNotFound(_0x423457,null))['then'](respondWithResult(_0x423457,null))[_0x2871('0x3f')](handleError(_0x423457,null));};exports[_0x2871('0x44')]=function(_0x1f01aa,_0x2fe8b0){return db[_0x2871('0x3c')][_0x2871('0x44')](_0x1f01aa[_0x2871('0x45')],{})[_0x2871('0x24')](respondWithResult(_0x2fe8b0,0xc9))[_0x2871('0x3f')](handleError(_0x2fe8b0,null));};exports[_0x2871('0x46')]=function(_0x4b378e,_0x10686e){if(_0x4b378e[_0x2871('0x45')]['id']){delete _0x4b378e[_0x2871('0x45')]['id'];}return db[_0x2871('0x3c')][_0x2871('0x43')]({'where':{'id':_0x4b378e[_0x2871('0x47')]['id']}})[_0x2871('0x24')](handleEntityNotFound(_0x10686e,null))[_0x2871('0x24')](saveUpdates(_0x4b378e['body'],null))[_0x2871('0x24')](respondWithResult(_0x10686e,null))[_0x2871('0x3f')](handleError(_0x10686e,null));};exports[_0x2871('0x25')]=function(_0x226fd1,_0x585501){return db[_0x2871('0x3c')][_0x2871('0x43')]({'where':{'id':_0x226fd1[_0x2871('0x47')]['id']}})[_0x2871('0x24')](handleEntityNotFound(_0x585501,null))[_0x2871('0x24')](removeEntity(_0x585501,null))['catch'](handleError(_0x585501,null));};exports[_0x2871('0x48')]=function(_0x263fd5,_0x123376){return db[_0x2871('0x3c')][_0x2871('0x48')]()[_0x2871('0x24')](respondWithResult(_0x123376,null))[_0x2871('0x3f')](handleError(_0x123376,null));};
\ No newline at end of file
index 7b7dc34..41bd2c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc33d=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util'];(function(_0x2a829f,_0x1b0c15){var _0x5737c3=function(_0x2376f9){while(--_0x2376f9){_0x2a829f['push'](_0x2a829f['shift']());}};_0x5737c3(++_0x1b0c15);}(_0xc33d,0x166));var _0xdc33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc33d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xdc33('0x0'));var util=require(_0xdc33('0x1'));var logger=require('../../config/logger')(_0xdc33('0x2'));var moment=require(_0xdc33('0x3'));var BPromise=require(_0xdc33('0x4'));var rp=require(_0xdc33('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdc33('0x6'));var config=require(_0xdc33('0x7'));var attributes=require(_0xdc33('0x8'));module[_0xdc33('0x9')]=function(_0x455e91,_0x443ea5){return _0x455e91[_0xdc33('0xa')]('JscriptyQuestionReport',attributes,{'tableName':_0xdc33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x595f=['moment','bluebird','path','rimraf','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','util','api'];(function(_0xea7b6a,_0xe01444){var _0x12849f=function(_0x274748){while(--_0x274748){_0xea7b6a['push'](_0xea7b6a['shift']());}};_0x12849f(++_0xe01444);}(_0x595f,0x198));var _0xf595=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x595f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xf595('0x0'));var logger=require('../../config/logger')(_0xf595('0x1'));var moment=require(_0xf595('0x2'));var BPromise=require(_0xf595('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf595('0x4'));var rimraf=require(_0xf595('0x5'));var config=require('../../config/environment');var attributes=require(_0xf595('0x6'));module[_0xf595('0x7')]=function(_0x1845bf,_0x243bae){return _0x1845bf['define'](_0xf595('0x8'),attributes,{'tableName':_0xf595('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2295d32..60bfbaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d1=['JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','catch','lodash','moment','../../config/logger','../../config/environment','jayson/promise','then'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x49d1,0xcc));var _0x149d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x49d1[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x149d('0x0'));var util=require('util');var moment=require(_0x149d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x149d('0x2'))('rpc');var config=require(_0x149d('0x3'));var jayson=require(_0x149d('0x4'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c025b,_0x3ce2ed,_0x23090c){return new BPromise(function(_0x4acda0,_0x53f4cc){return client['request'](_0x3c025b,_0x23090c)[_0x149d('0x5')](function(_0x1175f9){logger['info'](_0x149d('0x6'),_0x3ce2ed,'request\x20sent');logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x3ce2ed,_0x149d('0x7'),JSON[_0x149d('0x8')](_0x1175f9));if(_0x1175f9['error']){if(_0x1175f9['error'][_0x149d('0x9')]===0x1f4){logger[_0x149d('0xa')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x3ce2ed,_0x1175f9['error'][_0x149d('0xb')]);return _0x53f4cc(_0x1175f9[_0x149d('0xa')][_0x149d('0xb')]);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x3ce2ed,_0x1175f9[_0x149d('0xa')][_0x149d('0xb')]);return _0x4acda0(_0x1175f9[_0x149d('0xa')]['message']);}else{logger[_0x149d('0xc')](_0x149d('0x6'),_0x3ce2ed,'request\x20sent');_0x4acda0(_0x1175f9['result'][_0x149d('0xb')]);}})[_0x149d('0xd')](function(_0x3c390c){logger[_0x149d('0xa')](_0x149d('0x6'),_0x3ce2ed,_0x3c390c);_0x53f4cc(_0x3c390c);});});}
\ No newline at end of file
+var _0xc460=['info','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x468c03,_0x190103){var _0x5b12ba=function(_0xcc8da0){while(--_0xcc8da0){_0x468c03['push'](_0x468c03['shift']());}};_0x5b12ba(++_0x190103);}(_0xc460,0x16a));var _0x0c46=function(_0x1d22b3,_0x3cb781){_0x1d22b3=_0x1d22b3-0x0;var _0x33b0ca=_0xc460[_0x1d22b3];return _0x33b0ca;};'use strict';var _=require('lodash');var util=require(_0x0c46('0x0'));var moment=require(_0x0c46('0x1'));var BPromise=require(_0x0c46('0x2'));var rs=require(_0x0c46('0x3'));var fs=require('fs');var Redis=require(_0x0c46('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0c46('0x5'))(_0x0c46('0x6'));var config=require(_0x0c46('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0c46('0x8')][_0x0c46('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x487105,_0x486303,_0x586166){return new BPromise(function(_0x43b387,_0x171a15){return client[_0x0c46('0xa')](_0x487105,_0x586166)['then'](function(_0x43bade){logger['info'](_0x0c46('0xb'),_0x486303,_0x0c46('0xc'));logger[_0x0c46('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x486303,_0x0c46('0xc'),JSON[_0x0c46('0xe')](_0x43bade));if(_0x43bade[_0x0c46('0xf')]){if(_0x43bade[_0x0c46('0xf')][_0x0c46('0x10')]===0x1f4){logger[_0x0c46('0xf')](_0x0c46('0xb'),_0x486303,_0x43bade[_0x0c46('0xf')][_0x0c46('0x11')]);return _0x171a15(_0x43bade[_0x0c46('0xf')][_0x0c46('0x11')]);}logger[_0x0c46('0xf')](_0x0c46('0xb'),_0x486303,_0x43bade['error'][_0x0c46('0x11')]);return _0x43b387(_0x43bade[_0x0c46('0xf')][_0x0c46('0x11')]);}else{logger[_0x0c46('0x12')](_0x0c46('0xb'),_0x486303,_0x0c46('0xc'));_0x43b387(_0x43bade['result']['message']);}})[_0x0c46('0x13')](function(_0xdee391){logger[_0x0c46('0xf')](_0x0c46('0xb'),_0x486303,_0xdee391);_0x171a15(_0xdee391);});});}
\ No newline at end of file
index 89fe201..eed6bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c83=['/describe','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','./jscriptySessionReport.controller','get','index'];(function(_0x208d47,_0xa4c52f){var _0x5d537f=function(_0x1554f1){while(--_0x1554f1){_0x208d47['push'](_0x208d47['shift']());}};_0x5d537f(++_0xa4c52f);}(_0x7c83,0xa7));var _0x37c8=function(_0xd7e8b0,_0x11be47){_0xd7e8b0=_0xd7e8b0-0x0;var _0x1db786=_0x7c83[_0xd7e8b0];return _0x1db786;};'use strict';var multer=require(_0x37c8('0x0'));var util=require('util');var path=require(_0x37c8('0x1'));var timeout=require(_0x37c8('0x2'));var express=require('express');var router=express[_0x37c8('0x3')]();var fs_extra=require(_0x37c8('0x4'));var auth=require(_0x37c8('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x37c8('0x6'));router[_0x37c8('0x7')]('/',auth['isAuthenticated'](),controller[_0x37c8('0x8')]);router['get'](_0x37c8('0x9'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xb')]);router[_0x37c8('0x7')](_0x37c8('0xc'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xd')]);router[_0x37c8('0x7')](_0x37c8('0xe'),auth[_0x37c8('0xa')](),controller[_0x37c8('0xf')]);router[_0x37c8('0x10')]('/',auth[_0x37c8('0xa')](),controller[_0x37c8('0x11')]);router[_0x37c8('0x12')](_0x37c8('0xc'),auth['isAuthenticated'](),controller[_0x37c8('0x13')]);router[_0x37c8('0x14')]('/:id',auth[_0x37c8('0xa')](),controller[_0x37c8('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x0fba=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/questions','getQuestions','delete'];(function(_0x51f606,_0x99b021){var _0x139078=function(_0x37e957){while(--_0x37e957){_0x51f606['push'](_0x51f606['shift']());}};_0x139078(++_0x99b021);}(_0x0fba,0x17c));var _0xa0fb=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x0fba[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require(_0xa0fb('0x0'));var util=require('util');var path=require(_0xa0fb('0x1'));var timeout=require(_0xa0fb('0x2'));var express=require(_0xa0fb('0x3'));var router=express[_0xa0fb('0x4')]();var fs_extra=require(_0xa0fb('0x5'));var auth=require(_0xa0fb('0x6'));var interaction=require(_0xa0fb('0x7'));var config=require(_0xa0fb('0x8'));var controller=require(_0xa0fb('0x9'));router[_0xa0fb('0xa')]('/',auth[_0xa0fb('0xb')](),controller['index']);router[_0xa0fb('0xa')](_0xa0fb('0xc'),auth[_0xa0fb('0xb')](),controller[_0xa0fb('0xd')]);router[_0xa0fb('0xa')](_0xa0fb('0xe'),auth[_0xa0fb('0xb')](),controller[_0xa0fb('0xf')]);router['get'](_0xa0fb('0x10'),auth['isAuthenticated'](),controller[_0xa0fb('0x11')]);router['post']('/',auth[_0xa0fb('0xb')](),controller['create']);router['put'](_0xa0fb('0xe'),auth[_0xa0fb('0xb')](),controller['update']);router[_0xa0fb('0x12')](_0xa0fb('0xe'),auth[_0xa0fb('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 58be2b8..5b700d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1507=['YYYY-MM-DD\x20HH:mm:ss','STRING','sequelize','exports','DATE','endtime','format'];(function(_0x5d2507,_0x556fac){var _0x198c07=function(_0x2e2b6b){while(--_0x2e2b6b){_0x5d2507['push'](_0x5d2507['shift']());}};_0x198c07(++_0x556fac);}(_0x1507,0x121));var _0x7150=function(_0x1406c8,_0x40a801){_0x1406c8=_0x1406c8-0x0;var _0x3ec6f8=_0x1507[_0x1406c8];return _0x3ec6f8;};'use strict';var moment=require('moment');var Sequelize=require(_0x7150('0x0'));module[_0x7150('0x1')]={'starttime':{'type':Sequelize[_0x7150('0x2')],'set':function(_0x502001){this['setDataValue']('starttime',_0x502001);this['setDataValue'](_0x7150('0x3'),moment()[_0x7150('0x4')](_0x7150('0x5')));}},'endtime':{'type':Sequelize[_0x7150('0x2')]},'membername':{'type':Sequelize[_0x7150('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x7150('0x6')]},'calleridname':{'type':Sequelize[_0x7150('0x6')]},'calleridnum':{'type':Sequelize[_0x7150('0x6')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xefd8=['DATE','setDataValue','starttime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0xefd8,0x1d3));var _0x8efd=function(_0x22a524,_0x32c0d0){_0x22a524=_0x22a524-0x0;var _0x2ebb53=_0xefd8[_0x22a524];return _0x2ebb53;};'use strict';var moment=require(_0x8efd('0x0'));var Sequelize=require(_0x8efd('0x1'));module[_0x8efd('0x2')]={'starttime':{'type':Sequelize[_0x8efd('0x3')],'set':function(_0x3b197e){this[_0x8efd('0x4')](_0x8efd('0x5'),_0x3b197e);this['setDataValue']('endtime',moment()[_0x8efd('0x6')](_0x8efd('0x7')));}},'endtime':{'type':Sequelize[_0x8efd('0x3')]},'membername':{'type':Sequelize[_0x8efd('0x8')]},'projectname':{'type':Sequelize[_0x8efd('0x8')]},'queue':{'type':Sequelize[_0x8efd('0x8')]},'uniqueid':{'type':Sequelize[_0x8efd('0x8')]},'calleridname':{'type':Sequelize[_0x8efd('0x8')]},'calleridnum':{'type':Sequelize[_0x8efd('0x8')]},'completed':{'type':Sequelize[_0x8efd('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 6c4283a..f9b1f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb74e=['keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','fields','find','create','body','update','params','describe','getQuestions','JscriptyQuestionReport','SessionId','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','limit','count','apply','reject','save','then','destroy','status','end','error','stack','name','send','index','map','JscriptySessionReport','rawAttributes','type','key','query'];(function(_0x39e736,_0x55ba66){var _0x49270d=function(_0x47e110){while(--_0x47e110){_0x39e736['push'](_0x39e736['shift']());}};_0x49270d(++_0x55ba66);}(_0xb74e,0x163));var _0xeb74=function(_0x4509a3,_0x40fdd6){_0x4509a3=_0x4509a3-0x0;var _0x1f6003=_0xb74e[_0x4509a3];return _0x1f6003;};'use strict';var emlformat=require(_0xeb74('0x0'));var rimraf=require(_0xeb74('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeb74('0x2'));var moment=require(_0xeb74('0x3'));var BPromise=require(_0xeb74('0x4'));var Mustache=require(_0xeb74('0x5'));var util=require(_0xeb74('0x6'));var path=require(_0xeb74('0x7'));var sox=require(_0xeb74('0x8'));var csv=require(_0xeb74('0x9'));var ejs=require(_0xeb74('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeb74('0xb'));var squel=require(_0xeb74('0xc'));var crypto=require(_0xeb74('0xd'));var jsforce=require(_0xeb74('0xe'));var deskjs=require(_0xeb74('0xf'));var toCsv=require(_0xeb74('0x9'));var querystring=require(_0xeb74('0x10'));var Papa=require(_0xeb74('0x11'));var Redis=require(_0xeb74('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xeb74('0x13'));var as=require(_0xeb74('0x14'));var hardwareService=require(_0xeb74('0x15'));var logger=require(_0xeb74('0x16'))(_0xeb74('0x17'));var utils=require('../../config/utils');var config=require(_0xeb74('0x18'));var licenseUtil=require(_0xeb74('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b0507,_0x475a3d){_0x475a3d=_0x475a3d||0xcc;return function(_0x4d87b6){if(_0x4d87b6){return _0x3b0507[_0xeb74('0x1a')](_0x475a3d);}return _0x3b0507['status'](_0x475a3d)['end']();};}function respondWithResult(_0x23543b,_0x3c6907){_0x3c6907=_0x3c6907||0xc8;return function(_0x3f3faf){if(_0x3f3faf){return _0x23543b['status'](_0x3c6907)[_0xeb74('0x1b')](_0x3f3faf);}};}function respondWithFilteredResult(_0x44f9a4,_0x1775f5){return function(_0x3b108b){if(_0x3b108b){var _0xe62978=typeof _0x1775f5[_0xeb74('0x1c')]===_0xeb74('0x1d')&&typeof _0x1775f5[_0xeb74('0x1e')]===_0xeb74('0x1d');var _0x2d1112=_0x3b108b[_0xeb74('0x1f')];var _0x5d09e4=_0xe62978?0x0:_0x1775f5[_0xeb74('0x1c')];var _0x4e8ccd=_0xe62978?_0x3b108b[_0xeb74('0x1f')]:_0x1775f5['offset']+_0x1775f5['limit'];var _0x5f2b4c;if(_0x4e8ccd>=_0x2d1112){_0x4e8ccd=_0x2d1112;_0x5f2b4c=0xc8;}else{_0x5f2b4c=0xce;}_0x44f9a4['status'](_0x5f2b4c);return _0x44f9a4['set']('Content-Range',_0x5d09e4+'-'+_0x4e8ccd+'/'+_0x2d1112)[_0xeb74('0x1b')](_0x3b108b);}return null;};}function patchUpdates(_0x2cd972){return function(_0x2db6f1){try{jsonpatch[_0xeb74('0x20')](_0x2db6f1,_0x2cd972,!![]);}catch(_0x50eb61){return BPromise[_0xeb74('0x21')](_0x50eb61);}return _0x2db6f1[_0xeb74('0x22')]();};}function saveUpdates(_0x4a4b2f,_0x2320d8){return function(_0x5bb50a){if(_0x5bb50a){return _0x5bb50a['update'](_0x4a4b2f)[_0xeb74('0x23')](function(_0x563392){return _0x563392;});}return null;};}function removeEntity(_0x3da8b5,_0x3438ba){return function(_0x263c58){if(_0x263c58){return _0x263c58[_0xeb74('0x24')]()[_0xeb74('0x23')](function(){_0x3da8b5[_0xeb74('0x25')](0xcc)[_0xeb74('0x26')]();});}};}function handleEntityNotFound(_0x9f836d,_0xe4f34d){return function(_0xadf2b6){if(!_0xadf2b6){_0x9f836d['sendStatus'](0x194);}return _0xadf2b6;};}function handleError(_0x206a3f,_0x13be27){_0x13be27=_0x13be27||0x1f4;return function(_0x3ed0bf){logger[_0xeb74('0x27')](_0x3ed0bf[_0xeb74('0x28')]);if(_0x3ed0bf[_0xeb74('0x29')]){delete _0x3ed0bf[_0xeb74('0x29')];}_0x206a3f[_0xeb74('0x25')](_0x13be27)[_0xeb74('0x2a')](_0x3ed0bf);};}exports[_0xeb74('0x2b')]=function(_0x2b4c15,_0xc73055){var _0x1f1cf2={},_0xa6baa0={},_0x23d81c={'count':0x0,'rows':[]};var _0x1baa85=_[_0xeb74('0x2c')](db[_0xeb74('0x2d')][_0xeb74('0x2e')],function(_0x1fef5b){return{'name':_0x1fef5b['fieldName'],'type':_0x1fef5b[_0xeb74('0x2f')][_0xeb74('0x30')]};});_0xa6baa0['model']=_[_0xeb74('0x2c')](_0x1baa85,_0xeb74('0x29'));_0xa6baa0[_0xeb74('0x31')]=_[_0xeb74('0x32')](_0x2b4c15[_0xeb74('0x31')]);_0xa6baa0[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0xa6baa0[_0xeb74('0x35')],_0xa6baa0[_0xeb74('0x31')]);_0x1f1cf2['attributes']=_[_0xeb74('0x34')](_0xa6baa0[_0xeb74('0x35')],qs['fields'](_0x2b4c15[_0xeb74('0x31')]['fields']));_0x1f1cf2[_0xeb74('0x36')]=_0x1f1cf2[_0xeb74('0x36')][_0xeb74('0x37')]?_0x1f1cf2[_0xeb74('0x36')]:_0xa6baa0[_0xeb74('0x35')];if(!_0x2b4c15['query'][_0xeb74('0x38')](_0xeb74('0x39'))){_0x1f1cf2[_0xeb74('0x1e')]=qs['limit'](_0x2b4c15['query'][_0xeb74('0x1e')]);_0x1f1cf2[_0xeb74('0x1c')]=qs[_0xeb74('0x1c')](_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x1c')]);}_0x1f1cf2[_0xeb74('0x3a')]=qs[_0xeb74('0x3b')](_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x3b')]);_0x1f1cf2[_0xeb74('0x3c')]=qs[_0xeb74('0x33')](_[_0xeb74('0x3d')](_0x2b4c15[_0xeb74('0x31')],_0xa6baa0[_0xeb74('0x33')]),_0x1baa85);if(_0x2b4c15['query'][_0xeb74('0x3e')]){_0x1f1cf2[_0xeb74('0x3c')]=_[_0xeb74('0x3f')](_0x1f1cf2[_0xeb74('0x3c')],{'$or':_[_0xeb74('0x2c')](_0x1baa85,function(_0x40d1d7){if(_0x40d1d7[_0xeb74('0x2f')]!==_0xeb74('0x40')){var _0x5af173={};_0x5af173[_0x40d1d7[_0xeb74('0x29')]]={'$like':'%'+_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x3e')]+'%'};return _0x5af173;}})});}_0x1f1cf2=_['merge']({},_0x1f1cf2,_0x2b4c15[_0xeb74('0x41')]);var _0x5831b2={'where':_0x1f1cf2[_0xeb74('0x3c')]};return db[_0xeb74('0x2d')][_0xeb74('0x1f')](_0x5831b2)[_0xeb74('0x23')](function(_0x28cf61){_0x23d81c['count']=_0x28cf61;if(_0x2b4c15[_0xeb74('0x31')][_0xeb74('0x42')]){_0x1f1cf2[_0xeb74('0x43')]=[{'all':!![]}];}return db[_0xeb74('0x2d')][_0xeb74('0x44')](_0x1f1cf2);})[_0xeb74('0x23')](function(_0x152042){_0x23d81c['rows']=_0x152042;return _0x23d81c;})[_0xeb74('0x23')](respondWithFilteredResult(_0xc73055,_0x1f1cf2))[_0xeb74('0x45')](handleError(_0xc73055,null));};exports[_0xeb74('0x46')]=function(_0x9f35dd,_0x310802){var _0xc07899={'raw':!![],'where':{'id':_0x9f35dd['params']['id']}},_0x24be2e={};_0x24be2e[_0xeb74('0x35')]=_[_0xeb74('0x32')](db[_0xeb74('0x2d')][_0xeb74('0x2e')]);_0x24be2e[_0xeb74('0x31')]=_['keys'](_0x9f35dd['query']);_0x24be2e[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0x24be2e[_0xeb74('0x35')],_0x24be2e[_0xeb74('0x31')]);_0xc07899[_0xeb74('0x36')]=_[_0xeb74('0x34')](_0x24be2e[_0xeb74('0x35')],qs[_0xeb74('0x47')](_0x9f35dd['query']['fields']));_0xc07899[_0xeb74('0x36')]=_0xc07899['attributes'][_0xeb74('0x37')]?_0xc07899[_0xeb74('0x36')]:_0x24be2e['model'];if(_0x9f35dd[_0xeb74('0x31')]['includeAll']){_0xc07899[_0xeb74('0x43')]=[{'all':!![]}];}_0xc07899=_[_0xeb74('0x3f')]({},_0xc07899,_0x9f35dd[_0xeb74('0x41')]);return db['JscriptySessionReport'][_0xeb74('0x48')](_0xc07899)[_0xeb74('0x23')](handleEntityNotFound(_0x310802,null))['then'](respondWithResult(_0x310802,null))[_0xeb74('0x45')](handleError(_0x310802,null));};exports['create']=function(_0x2fd615,_0x19c81c){return db[_0xeb74('0x2d')][_0xeb74('0x49')](_0x2fd615[_0xeb74('0x4a')],{})[_0xeb74('0x23')](respondWithResult(_0x19c81c,0xc9))[_0xeb74('0x45')](handleError(_0x19c81c,null));};exports[_0xeb74('0x4b')]=function(_0x5d4923,_0x460ee8){if(_0x5d4923['body']['id']){delete _0x5d4923[_0xeb74('0x4a')]['id'];}return db['JscriptySessionReport'][_0xeb74('0x48')]({'where':{'id':_0x5d4923[_0xeb74('0x4c')]['id']}})[_0xeb74('0x23')](handleEntityNotFound(_0x460ee8,null))[_0xeb74('0x23')](saveUpdates(_0x5d4923[_0xeb74('0x4a')],null))[_0xeb74('0x23')](respondWithResult(_0x460ee8,null))['catch'](handleError(_0x460ee8,null));};exports[_0xeb74('0x24')]=function(_0x5454b6,_0x4ee2fc){return db[_0xeb74('0x2d')][_0xeb74('0x48')]({'where':{'id':_0x5454b6[_0xeb74('0x4c')]['id']}})[_0xeb74('0x23')](handleEntityNotFound(_0x4ee2fc,null))[_0xeb74('0x23')](removeEntity(_0x4ee2fc,null))[_0xeb74('0x45')](handleError(_0x4ee2fc,null));};exports[_0xeb74('0x4d')]=function(_0x43c270,_0x1eba72){return db[_0xeb74('0x2d')][_0xeb74('0x4d')]()[_0xeb74('0x23')](respondWithResult(_0x1eba72,null))[_0xeb74('0x45')](handleError(_0x1eba72,null));};exports[_0xeb74('0x4e')]=function(_0x5ee3f3,_0x4fc509,_0x4ccdef){var _0x443dec={'raw':!![],'where':{}};var _0x42c21b={};var _0x23de7b={'count':0x0,'rows':[]};return db[_0xeb74('0x2d')]['findOne']({'where':{'id':_0x5ee3f3[_0xeb74('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4fc509,null))[_0xeb74('0x23')](function(_0x1dd97e){if(_0x1dd97e){_0x42c21b[_0xeb74('0x35')]=_['keys'](db[_0xeb74('0x4f')][_0xeb74('0x2e')]);_0x42c21b[_0xeb74('0x31')]=_[_0xeb74('0x32')](_0x5ee3f3['query']);_0x42c21b[_0xeb74('0x33')]=_[_0xeb74('0x34')](_0x42c21b['model'],_0x42c21b[_0xeb74('0x31')]);_0x443dec[_0xeb74('0x36')]=_[_0xeb74('0x34')](_0x42c21b[_0xeb74('0x35')],qs[_0xeb74('0x47')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x47')]));_0x443dec['attributes']=_0x443dec['attributes'][_0xeb74('0x37')]?_0x443dec[_0xeb74('0x36')]:_0x42c21b[_0xeb74('0x35')];if(!_0x5ee3f3['query'][_0xeb74('0x38')](_0xeb74('0x39'))){_0x443dec[_0xeb74('0x1e')]=qs['limit'](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x1e')]);_0x443dec[_0xeb74('0x1c')]=qs[_0xeb74('0x1c')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x1c')]);}_0x443dec[_0xeb74('0x3a')]=qs[_0xeb74('0x3b')](_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x3b')]);_0x443dec['where']=qs['filters'](_[_0xeb74('0x3d')](_0x5ee3f3[_0xeb74('0x31')],_0x42c21b['filters']));_0x443dec[_0xeb74('0x3c')][_0xeb74('0x50')]=_0x1dd97e['id'];if(_0x5ee3f3['query']['filter']){_0x443dec[_0xeb74('0x3c')]=_['merge'](_0x443dec[_0xeb74('0x3c')],{'$or':_[_0xeb74('0x2c')](_0x443dec[_0xeb74('0x36')],function(_0x9f5847){var _0x1f96d5={};_0x1f96d5[_0x9f5847]={'$like':'%'+_0x5ee3f3[_0xeb74('0x31')][_0xeb74('0x3e')]+'%'};return _0x1f96d5;})});}_0x443dec=_[_0xeb74('0x3f')]({},_0x443dec,_0x5ee3f3[_0xeb74('0x41')]);return db['JscriptyQuestionReport'][_0xeb74('0x1f')]({'where':_0x443dec[_0xeb74('0x3c')]})[_0xeb74('0x23')](function(_0x201f71){_0x23de7b['count']=_0x201f71;if(_0x5ee3f3['query'][_0xeb74('0x42')]){_0x443dec[_0xeb74('0x43')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x443dec);})[_0xeb74('0x23')](function(_0x401fe3){_0x23de7b['rows']=_0x401fe3;return _0x23de7b;});}})[_0xeb74('0x23')](respondWithFilteredResult(_0x4fc509,_0x443dec))[_0xeb74('0x45')](handleError(_0x4fc509,null));};
\ No newline at end of file
+var _0x5fc0=['querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','save','update','then','destroy','error','stack','name','send','map','JscriptySessionReport','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','getQuestions','findOne','JscriptyQuestionReport','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x46dd7c,_0x59c2b4){var _0x472a1e=function(_0x5d8bf7){while(--_0x5d8bf7){_0x46dd7c['push'](_0x46dd7c['shift']());}};_0x472a1e(++_0x59c2b4);}(_0x5fc0,0x1c5));var _0x05fc=function(_0x513f57,_0x382564){_0x513f57=_0x513f57-0x0;var _0x559a5d=_0x5fc0[_0x513f57];return _0x559a5d;};'use strict';var emlformat=require(_0x05fc('0x0'));var rimraf=require(_0x05fc('0x1'));var zipdir=require(_0x05fc('0x2'));var jsonpatch=require(_0x05fc('0x3'));var rp=require(_0x05fc('0x4'));var moment=require('moment');var BPromise=require(_0x05fc('0x5'));var Mustache=require('mustache');var util=require(_0x05fc('0x6'));var path=require(_0x05fc('0x7'));var sox=require('sox');var csv=require(_0x05fc('0x8'));var ejs=require(_0x05fc('0x9'));var fs=require('fs');var fs_extra=require(_0x05fc('0xa'));var _=require(_0x05fc('0xb'));var squel=require('squel');var crypto=require(_0x05fc('0xc'));var jsforce=require(_0x05fc('0xd'));var deskjs=require(_0x05fc('0xe'));var toCsv=require('to-csv');var querystring=require(_0x05fc('0xf'));var Papa=require('papaparse');var Redis=require(_0x05fc('0x10'));var authService=require(_0x05fc('0x11'));var qs=require(_0x05fc('0x12'));var as=require(_0x05fc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x05fc('0x14'))(_0x05fc('0x15'));var utils=require(_0x05fc('0x16'));var config=require(_0x05fc('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x05fc('0x18'))['db'];function respondWithStatusCode(_0x4abf66,_0x11b573){_0x11b573=_0x11b573||0xcc;return function(_0x51bc0c){if(_0x51bc0c){return _0x4abf66[_0x05fc('0x19')](_0x11b573);}return _0x4abf66[_0x05fc('0x1a')](_0x11b573)[_0x05fc('0x1b')]();};}function respondWithResult(_0x2d8502,_0x1b06a9){_0x1b06a9=_0x1b06a9||0xc8;return function(_0x1eef7d){if(_0x1eef7d){return _0x2d8502[_0x05fc('0x1a')](_0x1b06a9)['json'](_0x1eef7d);}};}function respondWithFilteredResult(_0x38ca25,_0x5cfc1e){return function(_0x24b4d8){if(_0x24b4d8){var _0x2864ec=typeof _0x5cfc1e[_0x05fc('0x1c')]===_0x05fc('0x1d')&&typeof _0x5cfc1e['limit']===_0x05fc('0x1d');var _0x357af3=_0x24b4d8[_0x05fc('0x1e')];var _0x1f9b46=_0x2864ec?0x0:_0x5cfc1e[_0x05fc('0x1c')];var _0x2a862b=_0x2864ec?_0x24b4d8[_0x05fc('0x1e')]:_0x5cfc1e[_0x05fc('0x1c')]+_0x5cfc1e[_0x05fc('0x1f')];var _0x1e9c6a;if(_0x2a862b>=_0x357af3){_0x2a862b=_0x357af3;_0x1e9c6a=0xc8;}else{_0x1e9c6a=0xce;}_0x38ca25[_0x05fc('0x1a')](_0x1e9c6a);return _0x38ca25[_0x05fc('0x20')](_0x05fc('0x21'),_0x1f9b46+'-'+_0x2a862b+'/'+_0x357af3)['json'](_0x24b4d8);}return null;};}function patchUpdates(_0x3e2617){return function(_0x169a5b){try{jsonpatch['apply'](_0x169a5b,_0x3e2617,!![]);}catch(_0x2940c0){return BPromise['reject'](_0x2940c0);}return _0x169a5b[_0x05fc('0x22')]();};}function saveUpdates(_0x1e3daa,_0x1bd06a){return function(_0xe9f16){if(_0xe9f16){return _0xe9f16[_0x05fc('0x23')](_0x1e3daa)[_0x05fc('0x24')](function(_0x516d44){return _0x516d44;});}return null;};}function removeEntity(_0x1a85c4,_0x6801df){return function(_0x2ec841){if(_0x2ec841){return _0x2ec841[_0x05fc('0x25')]()['then'](function(){_0x1a85c4[_0x05fc('0x1a')](0xcc)[_0x05fc('0x1b')]();});}};}function handleEntityNotFound(_0x4da28d,_0x1738e7){return function(_0x4065e4){if(!_0x4065e4){_0x4da28d['sendStatus'](0x194);}return _0x4065e4;};}function handleError(_0x598d6c,_0x46a8ed){_0x46a8ed=_0x46a8ed||0x1f4;return function(_0x5b399e){logger[_0x05fc('0x26')](_0x5b399e[_0x05fc('0x27')]);if(_0x5b399e['name']){delete _0x5b399e[_0x05fc('0x28')];}_0x598d6c[_0x05fc('0x1a')](_0x46a8ed)[_0x05fc('0x29')](_0x5b399e);};}exports['index']=function(_0x547b53,_0x488fcf){var _0x353a77={},_0x372c33={},_0xcc1a99={'count':0x0,'rows':[]};var _0x14a9db=_[_0x05fc('0x2a')](db[_0x05fc('0x2b')][_0x05fc('0x2c')],function(_0x562131){return{'name':_0x562131[_0x05fc('0x2d')],'type':_0x562131['type']['key']};});_0x372c33['model']=_['map'](_0x14a9db,_0x05fc('0x28'));_0x372c33[_0x05fc('0x2e')]=_[_0x05fc('0x2f')](_0x547b53['query']);_0x372c33[_0x05fc('0x30')]=_[_0x05fc('0x31')](_0x372c33['model'],_0x372c33[_0x05fc('0x2e')]);_0x353a77[_0x05fc('0x32')]=_[_0x05fc('0x31')](_0x372c33[_0x05fc('0x33')],qs[_0x05fc('0x34')](_0x547b53[_0x05fc('0x2e')][_0x05fc('0x34')]));_0x353a77[_0x05fc('0x32')]=_0x353a77[_0x05fc('0x32')][_0x05fc('0x35')]?_0x353a77[_0x05fc('0x32')]:_0x372c33[_0x05fc('0x33')];if(!_0x547b53[_0x05fc('0x2e')][_0x05fc('0x36')](_0x05fc('0x37'))){_0x353a77[_0x05fc('0x1f')]=qs[_0x05fc('0x1f')](_0x547b53['query'][_0x05fc('0x1f')]);_0x353a77['offset']=qs[_0x05fc('0x1c')](_0x547b53[_0x05fc('0x2e')][_0x05fc('0x1c')]);}_0x353a77['order']=qs[_0x05fc('0x38')](_0x547b53['query'][_0x05fc('0x38')]);_0x353a77[_0x05fc('0x39')]=qs['filters'](_[_0x05fc('0x3a')](_0x547b53[_0x05fc('0x2e')],_0x372c33[_0x05fc('0x30')]),_0x14a9db);if(_0x547b53[_0x05fc('0x2e')][_0x05fc('0x3b')]){_0x353a77[_0x05fc('0x39')]=_[_0x05fc('0x3c')](_0x353a77[_0x05fc('0x39')],{'$or':_[_0x05fc('0x2a')](_0x14a9db,function(_0x591e17){if(_0x591e17[_0x05fc('0x3d')]!==_0x05fc('0x3e')){var _0x308a88={};_0x308a88[_0x591e17[_0x05fc('0x28')]]={'$like':'%'+_0x547b53[_0x05fc('0x2e')][_0x05fc('0x3b')]+'%'};return _0x308a88;}})});}_0x353a77=_[_0x05fc('0x3c')]({},_0x353a77,_0x547b53[_0x05fc('0x3f')]);var _0x5d509a={'where':_0x353a77['where']};return db[_0x05fc('0x2b')][_0x05fc('0x1e')](_0x5d509a)['then'](function(_0x5b0e14){_0xcc1a99[_0x05fc('0x1e')]=_0x5b0e14;if(_0x547b53['query'][_0x05fc('0x40')]){_0x353a77[_0x05fc('0x41')]=[{'all':!![]}];}return db[_0x05fc('0x2b')][_0x05fc('0x42')](_0x353a77);})['then'](function(_0x1d4614){_0xcc1a99[_0x05fc('0x43')]=_0x1d4614;return _0xcc1a99;})[_0x05fc('0x24')](respondWithFilteredResult(_0x488fcf,_0x353a77))[_0x05fc('0x44')](handleError(_0x488fcf,null));};exports[_0x05fc('0x45')]=function(_0x5ca008,_0x6bb7a9){var _0x3628e8={'raw':!![],'where':{'id':_0x5ca008[_0x05fc('0x46')]['id']}},_0x43b1d3={};_0x43b1d3[_0x05fc('0x33')]=_['keys'](db[_0x05fc('0x2b')][_0x05fc('0x2c')]);_0x43b1d3[_0x05fc('0x2e')]=_[_0x05fc('0x2f')](_0x5ca008[_0x05fc('0x2e')]);_0x43b1d3[_0x05fc('0x30')]=_[_0x05fc('0x31')](_0x43b1d3[_0x05fc('0x33')],_0x43b1d3['query']);_0x3628e8[_0x05fc('0x32')]=_[_0x05fc('0x31')](_0x43b1d3[_0x05fc('0x33')],qs[_0x05fc('0x34')](_0x5ca008[_0x05fc('0x2e')][_0x05fc('0x34')]));_0x3628e8[_0x05fc('0x32')]=_0x3628e8['attributes'][_0x05fc('0x35')]?_0x3628e8[_0x05fc('0x32')]:_0x43b1d3[_0x05fc('0x33')];if(_0x5ca008[_0x05fc('0x2e')][_0x05fc('0x40')]){_0x3628e8[_0x05fc('0x41')]=[{'all':!![]}];}_0x3628e8=_[_0x05fc('0x3c')]({},_0x3628e8,_0x5ca008['options']);return db[_0x05fc('0x2b')][_0x05fc('0x47')](_0x3628e8)[_0x05fc('0x24')](handleEntityNotFound(_0x6bb7a9,null))[_0x05fc('0x24')](respondWithResult(_0x6bb7a9,null))['catch'](handleError(_0x6bb7a9,null));};exports['create']=function(_0x9ceabf,_0x3968fc){return db[_0x05fc('0x2b')]['create'](_0x9ceabf[_0x05fc('0x48')],{})[_0x05fc('0x24')](respondWithResult(_0x3968fc,0xc9))[_0x05fc('0x44')](handleError(_0x3968fc,null));};exports['update']=function(_0x5e472a,_0x142822){if(_0x5e472a[_0x05fc('0x48')]['id']){delete _0x5e472a[_0x05fc('0x48')]['id'];}return db['JscriptySessionReport'][_0x05fc('0x47')]({'where':{'id':_0x5e472a['params']['id']}})[_0x05fc('0x24')](handleEntityNotFound(_0x142822,null))[_0x05fc('0x24')](saveUpdates(_0x5e472a[_0x05fc('0x48')],null))['then'](respondWithResult(_0x142822,null))[_0x05fc('0x44')](handleError(_0x142822,null));};exports['destroy']=function(_0x26f883,_0x397900){return db[_0x05fc('0x2b')][_0x05fc('0x47')]({'where':{'id':_0x26f883[_0x05fc('0x46')]['id']}})['then'](handleEntityNotFound(_0x397900,null))[_0x05fc('0x24')](removeEntity(_0x397900,null))[_0x05fc('0x44')](handleError(_0x397900,null));};exports[_0x05fc('0x49')]=function(_0x5d992d,_0x39d0f8){return db['JscriptySessionReport'][_0x05fc('0x49')]()['then'](respondWithResult(_0x39d0f8,null))[_0x05fc('0x44')](handleError(_0x39d0f8,null));};exports[_0x05fc('0x4a')]=function(_0x31bb86,_0x5c58b8,_0x4c3cb6){var _0x3b203b={'raw':!![],'where':{}};var _0x2e95a5={};var _0x3c8a0c={'count':0x0,'rows':[]};return db[_0x05fc('0x2b')][_0x05fc('0x4b')]({'where':{'id':_0x31bb86[_0x05fc('0x46')]['id']}})[_0x05fc('0x24')](handleEntityNotFound(_0x5c58b8,null))[_0x05fc('0x24')](function(_0x2564d4){if(_0x2564d4){_0x2e95a5['model']=_[_0x05fc('0x2f')](db[_0x05fc('0x4c')][_0x05fc('0x2c')]);_0x2e95a5[_0x05fc('0x2e')]=_[_0x05fc('0x2f')](_0x31bb86[_0x05fc('0x2e')]);_0x2e95a5['filters']=_[_0x05fc('0x31')](_0x2e95a5[_0x05fc('0x33')],_0x2e95a5[_0x05fc('0x2e')]);_0x3b203b[_0x05fc('0x32')]=_['intersection'](_0x2e95a5['model'],qs['fields'](_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x34')]));_0x3b203b[_0x05fc('0x32')]=_0x3b203b['attributes'][_0x05fc('0x35')]?_0x3b203b[_0x05fc('0x32')]:_0x2e95a5[_0x05fc('0x33')];if(!_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x36')](_0x05fc('0x37'))){_0x3b203b['limit']=qs[_0x05fc('0x1f')](_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x1f')]);_0x3b203b[_0x05fc('0x1c')]=qs[_0x05fc('0x1c')](_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x1c')]);}_0x3b203b[_0x05fc('0x4d')]=qs['sort'](_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x38')]);_0x3b203b[_0x05fc('0x39')]=qs[_0x05fc('0x30')](_[_0x05fc('0x3a')](_0x31bb86['query'],_0x2e95a5[_0x05fc('0x30')]));_0x3b203b[_0x05fc('0x39')]['SessionId']=_0x2564d4['id'];if(_0x31bb86[_0x05fc('0x2e')]['filter']){_0x3b203b[_0x05fc('0x39')]=_[_0x05fc('0x3c')](_0x3b203b['where'],{'$or':_[_0x05fc('0x2a')](_0x3b203b[_0x05fc('0x32')],function(_0x4a85c4){var _0x1eefd7={};_0x1eefd7[_0x4a85c4]={'$like':'%'+_0x31bb86['query'][_0x05fc('0x3b')]+'%'};return _0x1eefd7;})});}_0x3b203b=_[_0x05fc('0x3c')]({},_0x3b203b,_0x31bb86[_0x05fc('0x3f')]);return db[_0x05fc('0x4c')][_0x05fc('0x1e')]({'where':_0x3b203b['where']})[_0x05fc('0x24')](function(_0x542ea6){_0x3c8a0c[_0x05fc('0x1e')]=_0x542ea6;if(_0x31bb86[_0x05fc('0x2e')][_0x05fc('0x40')]){_0x3b203b[_0x05fc('0x41')]=[{'all':!![]}];}return db[_0x05fc('0x4c')]['findAll'](_0x3b203b);})[_0x05fc('0x24')](function(_0x3d93ef){_0x3c8a0c[_0x05fc('0x43')]=_0x3d93ef;return _0x3c8a0c;});}})[_0x05fc('0x24')](respondWithFilteredResult(_0x5c58b8,_0x3b203b))[_0x05fc('0x44')](handleError(_0x5c58b8,null));};
\ No newline at end of file
index 7e31cd2..a303a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['moment','request-promise','../../config/environment','./jscriptySessionReport.attributes','define','report_jscripty_sessions','util','../../config/logger','api'];(function(_0x5a613b,_0x4b2515){var _0x2fd179=function(_0x48c0d8){while(--_0x48c0d8){_0x5a613b['push'](_0x5a613b['shift']());}};_0x2fd179(++_0x4b2515);}(_0xb091,0x16e));var _0x1b09=function(_0x4988e8,_0x58761a){_0x4988e8=_0x4988e8-0x0;var _0x4b17ea=_0xb091[_0x4988e8];return _0x4b17ea;};'use strict';var _=require('lodash');var util=require(_0x1b09('0x0'));var logger=require(_0x1b09('0x1'))(_0x1b09('0x2'));var moment=require(_0x1b09('0x3'));var BPromise=require('bluebird');var rp=require(_0x1b09('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1b09('0x5'));var attributes=require(_0x1b09('0x6'));module['exports']=function(_0xda8caa,_0x5fa348){return _0xda8caa[_0x1b09('0x7')]('JscriptySessionReport',attributes,{'tableName':_0x1b09('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa630=['define','JscriptySessionReport','report_jscripty_sessions','lodash','util','moment','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa630,0xbe));var _0x0a63=function(_0x52c732,_0x39bdbe){_0x52c732=_0x52c732-0x0;var _0x5a9a55=_0xa630[_0x52c732];return _0x5a9a55;};'use strict';var _=require(_0x0a63('0x0'));var util=require(_0x0a63('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0a63('0x2'));var BPromise=require('bluebird');var rp=require(_0x0a63('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a63('0x4'));var config=require(_0x0a63('0x5'));var attributes=require(_0x0a63('0x6'));module[_0x0a63('0x7')]=function(_0x37b4c9,_0x4b7474){return _0x37b4c9[_0x0a63('0x8')](_0x0a63('0x9'),attributes,{'tableName':_0x0a63('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0eab8c..fea4d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x128aae,_0x32427d){var _0x1f2a2e=function(_0x161054){while(--_0x161054){_0x128aae['push'](_0x128aae['shift']());}};_0x1f2a2e(++_0x32427d);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x5b1384,_0x3d9019){_0x5b1384=_0x5b1384-0x0;var _0x40e880=_0xa6b0[_0x5b1384];return _0x40e880;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a6b('0x2'));var fs=require('fs');var Redis=require(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a6b('0x5'))(_0x0a6b('0x6'));var config=require(_0x0a6b('0x7'));var jayson=require(_0x0a6b('0x8'));var client=jayson[_0x0a6b('0x9')][_0x0a6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b5fb5,_0xa908dd,_0x26f761){return new BPromise(function(_0x340a33,_0x8e89f){return client[_0x0a6b('0xb')](_0x1b5fb5,_0x26f761)['then'](function(_0x493948){logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));logger[_0x0a6b('0xf')](_0x0a6b('0x10'),_0xa908dd,_0x0a6b('0xe'),JSON[_0x0a6b('0x11')](_0x493948));if(_0x493948[_0x0a6b('0x12')]){if(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x13')]===0x1f4){logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x8e89f(_0x493948['error']['message']);}logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x340a33(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);}else{logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));_0x340a33(_0x493948[_0x0a6b('0x15')]['message']);}})[_0x0a6b('0x16')](function(_0x1538f4){logger['error'](_0x0a6b('0xd'),_0xa908dd,_0x1538f4);_0x8e89f(_0x1538f4);});});}
\ No newline at end of file
+var _0x68b3=['rpc','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x487b9e,_0x5d149b){var _0x18602f=function(_0x1a5469){while(--_0x1a5469){_0x487b9e['push'](_0x487b9e['shift']());}};_0x18602f(++_0x5d149b);}(_0x68b3,0x1d8));var _0x368b=function(_0x22fd7e,_0x3629ba){_0x22fd7e=_0x22fd7e-0x0;var _0x1cecfc=_0x68b3[_0x22fd7e];return _0x1cecfc;};'use strict';var _=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var moment=require(_0x368b('0x2'));var BPromise=require(_0x368b('0x3'));var rs=require(_0x368b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x368b('0x5'))['db'];var utils=require(_0x368b('0x6'));var logger=require(_0x368b('0x7'))(_0x368b('0x8'));var config=require('../../config/environment');var jayson=require(_0x368b('0x9'));var client=jayson[_0x368b('0xa')][_0x368b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23584a,_0x4406c8,_0x127c1e){return new BPromise(function(_0x2dec1c,_0x142d05){return client[_0x368b('0xc')](_0x23584a,_0x127c1e)[_0x368b('0xd')](function(_0x2a7b9f){logger['info'](_0x368b('0xe'),_0x4406c8,_0x368b('0xf'));logger[_0x368b('0x10')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x4406c8,_0x368b('0xf'),JSON[_0x368b('0x11')](_0x2a7b9f));if(_0x2a7b9f[_0x368b('0x12')]){if(_0x2a7b9f['error'][_0x368b('0x13')]===0x1f4){logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x142d05(_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);}logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x2dec1c(_0x2a7b9f['error'][_0x368b('0x14')]);}else{logger[_0x368b('0x15')](_0x368b('0xe'),_0x4406c8,'request\x20sent');_0x2dec1c(_0x2a7b9f[_0x368b('0x16')][_0x368b('0x14')]);}})[_0x368b('0x17')](function(_0x4d6d9d){logger[_0x368b('0x12')](_0x368b('0xe'),_0x4406c8,_0x4d6d9d);_0x142d05(_0x4d6d9d);});});}
\ No newline at end of file
index 82e10c8..4152e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf837=['multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./license.controller','get','index','put','/:id','isAuthenticated','update','downloadLogFile','exports'];(function(_0x2889fb,_0x1471b1){var _0x1bab24=function(_0x54b8cd){while(--_0x54b8cd){_0x2889fb['push'](_0x2889fb['shift']());}};_0x1bab24(++_0x1471b1);}(_0xf837,0x1c2));var _0x7f83=function(_0x4c7cc9,_0x816b07){_0x4c7cc9=_0x4c7cc9-0x0;var _0x19560b=_0xf837[_0x4c7cc9];return _0x19560b;};'use strict';var multer=require(_0x7f83('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7f83('0x1'));var router=express[_0x7f83('0x2')]();var fs_extra=require(_0x7f83('0x3'));var auth=require(_0x7f83('0x4'));var interaction=require(_0x7f83('0x5'));var config=require('../../config/environment');var controller=require(_0x7f83('0x6'));router[_0x7f83('0x7')]('/',controller[_0x7f83('0x8')]);router[_0x7f83('0x9')](_0x7f83('0xa'),auth[_0x7f83('0xb')](),controller[_0x7f83('0xc')]);router['get']('/download_log_file',auth[_0x7f83('0xb')](),controller[_0x7f83('0xd')]);module[_0x7f83('0xe')]=router;
\ No newline at end of file
+var _0xc565=['get','put','isAuthenticated','update','downloadLogFile','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x38831b,_0x4611ea){var _0x5a508a=function(_0x2df441){while(--_0x2df441){_0x38831b['push'](_0x38831b['shift']());}};_0x5a508a(++_0x4611ea);}(_0xc565,0x172));var _0x5c56=function(_0x2246ea,_0xfd027d){_0x2246ea=_0x2246ea-0x0;var _0x2d76a1=_0xc565[_0x2246ea];return _0x2d76a1;};'use strict';var multer=require(_0x5c56('0x0'));var util=require(_0x5c56('0x1'));var path=require('path');var timeout=require(_0x5c56('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5c56('0x3'));var auth=require(_0x5c56('0x4'));var interaction=require(_0x5c56('0x5'));var config=require(_0x5c56('0x6'));var controller=require('./license.controller');router[_0x5c56('0x7')]('/',controller['index']);router[_0x5c56('0x8')]('/:id',auth[_0x5c56('0x9')](),controller[_0x5c56('0xa')]);router[_0x5c56('0x7')]('/download_log_file',auth[_0x5c56('0x9')](),controller[_0x5c56('0xb')]);module[_0x5c56('0xc')]=router;
\ No newline at end of file
index 3967def..593b703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5455=['sequelize','exports','STRING'];(function(_0xb650a3,_0x190cc6){var _0x4bf041=function(_0x3c9938){while(--_0x3c9938){_0xb650a3['push'](_0xb650a3['shift']());}};_0x4bf041(++_0x190cc6);}(_0x5455,0x7e));var _0x5545=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5455[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x5545('0x0'));module[_0x5545('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x5545('0x2')]},'data2':{'type':Sequelize[_0x5545('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5c54=['exports','STRING','INTEGER'];(function(_0x5ba353,_0x11fd8b){var _0x149f6b=function(_0x59b92e){while(--_0x59b92e){_0x5ba353['push'](_0x5ba353['shift']());}};_0x149f6b(++_0x11fd8b);}(_0x5c54,0x1e3));var _0x45c5=function(_0x3ac0ab,_0x2f5f63){_0x3ac0ab=_0x3ac0ab-0x0;var _0x475ce9=_0x5c54[_0x3ac0ab];return _0x475ce9;};'use strict';var Sequelize=require('sequelize');module[_0x45c5('0x0')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x45c5('0x1')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0x45c5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 536238b..b129556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde8b=['util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','then','error','stack','name','send','index','model','keys','query','intersection','attributes','fields','length','options','getLicense','catch','update','body','License','params','get','checkLicense','key','downloadLogFile','license-info.log','join','xcally','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','request-promise','bluebird','mustache'];(function(_0x578616,_0x3fdb48){var _0x4fe109=function(_0x326b42){while(--_0x326b42){_0x578616['push'](_0x578616['shift']());}};_0x4fe109(++_0x3fdb48);}(_0xde8b,0x140));var _0xbde8=function(_0x39c793,_0x8e253e){_0x39c793=_0x39c793-0x0;var _0x4e2769=_0xde8b[_0x39c793];return _0x4e2769;};'use strict';var emlformat=require(_0xbde8('0x0'));var rimraf=require(_0xbde8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbde8('0x2'));var moment=require('moment');var BPromise=require(_0xbde8('0x3'));var Mustache=require(_0xbde8('0x4'));var util=require(_0xbde8('0x5'));var path=require('path');var sox=require(_0xbde8('0x6'));var csv=require(_0xbde8('0x7'));var ejs=require(_0xbde8('0x8'));var fs=require('fs');var fs_extra=require(_0xbde8('0x9'));var _=require(_0xbde8('0xa'));var squel=require('squel');var crypto=require(_0xbde8('0xb'));var jsforce=require(_0xbde8('0xc'));var deskjs=require(_0xbde8('0xd'));var toCsv=require(_0xbde8('0x7'));var querystring=require('querystring');var Papa=require(_0xbde8('0xe'));var Redis=require(_0xbde8('0xf'));var authService=require(_0xbde8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xbde8('0x11'));var hardwareService=require(_0xbde8('0x12'));var logger=require('../../config/logger')(_0xbde8('0x13'));var utils=require(_0xbde8('0x14'));var config=require(_0xbde8('0x15'));var licenseUtil=require(_0xbde8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e9fa1,_0xe716cd){_0xe716cd=_0xe716cd||0xcc;return function(_0x579ab7){if(_0x579ab7){return _0x5e9fa1[_0xbde8('0x17')](_0xe716cd);}return _0x5e9fa1['status'](_0xe716cd)[_0xbde8('0x18')]();};}function respondWithResult(_0x3d88f8,_0x4acc70){_0x4acc70=_0x4acc70||0xc8;return function(_0x31c374){if(_0x31c374){return _0x3d88f8[_0xbde8('0x19')](_0x4acc70)[_0xbde8('0x1a')](_0x31c374);}};}function respondWithFilteredResult(_0x1e2ec2,_0x3fe3a0){return function(_0x1e2d0d){if(_0x1e2d0d){var _0xa124a2=typeof _0x3fe3a0[_0xbde8('0x1b')]===_0xbde8('0x1c')&&typeof _0x3fe3a0[_0xbde8('0x1d')]===_0xbde8('0x1c');var _0x520134=_0x1e2d0d[_0xbde8('0x1e')];var _0x2a07d8=_0xa124a2?0x0:_0x3fe3a0['offset'];var _0x1f5074=_0xa124a2?_0x1e2d0d[_0xbde8('0x1e')]:_0x3fe3a0[_0xbde8('0x1b')]+_0x3fe3a0[_0xbde8('0x1d')];var _0x18f2ac;if(_0x1f5074>=_0x520134){_0x1f5074=_0x520134;_0x18f2ac=0xc8;}else{_0x18f2ac=0xce;}_0x1e2ec2[_0xbde8('0x19')](_0x18f2ac);return _0x1e2ec2[_0xbde8('0x1f')]('Content-Range',_0x2a07d8+'-'+_0x1f5074+'/'+_0x520134)['json'](_0x1e2d0d);}return null;};}function patchUpdates(_0x461772){return function(_0x3c6cad){try{jsonpatch[_0xbde8('0x20')](_0x3c6cad,_0x461772,!![]);}catch(_0x289a5c){return BPromise['reject'](_0x289a5c);}return _0x3c6cad[_0xbde8('0x21')]();};}function saveUpdates(_0x2d1e4a,_0x50b22f){return function(_0x3290e2){if(_0x3290e2){return _0x3290e2['update'](_0x2d1e4a)[_0xbde8('0x22')](function(_0xac0ab4){return _0xac0ab4;});}return null;};}function removeEntity(_0x115a7f,_0x3733eb){return function(_0x94cf8b){if(_0x94cf8b){return _0x94cf8b['destroy']()[_0xbde8('0x22')](function(){_0x115a7f[_0xbde8('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x292c42,_0x38b9fd){return function(_0x34f2ee){if(!_0x34f2ee){_0x292c42[_0xbde8('0x17')](0x194);}return _0x34f2ee;};}function handleError(_0x1ba7a2,_0x41ae60){_0x41ae60=_0x41ae60||0x1f4;return function(_0x22e055){logger[_0xbde8('0x23')](_0x22e055[_0xbde8('0x24')]);if(_0x22e055[_0xbde8('0x25')]){delete _0x22e055[_0xbde8('0x25')];}_0x1ba7a2['status'](_0x41ae60)[_0xbde8('0x26')](_0x22e055);};}var utilLicense=require(_0xbde8('0x16'));exports[_0xbde8('0x27')]=function(_0x307281,_0xd30713){var _0x1e9b6e={'raw':!![],'where':{'id':0x1}},_0x1b04d7={};_0x1b04d7[_0xbde8('0x28')]=_[_0xbde8('0x29')](db['License']['rawAttributes']);_0x1b04d7[_0xbde8('0x2a')]=_['keys'](_0x307281[_0xbde8('0x2a')]);_0x1b04d7['filters']=_[_0xbde8('0x2b')](_0x1b04d7[_0xbde8('0x28')],_0x1b04d7['query']);_0x1e9b6e[_0xbde8('0x2c')]=_[_0xbde8('0x2b')](_0x1b04d7[_0xbde8('0x28')],qs['fields'](_0x307281[_0xbde8('0x2a')][_0xbde8('0x2d')]));_0x1e9b6e['attributes']=_0x1e9b6e[_0xbde8('0x2c')][_0xbde8('0x2e')]?_0x1e9b6e[_0xbde8('0x2c')]:_0x1b04d7[_0xbde8('0x28')];_0x1e9b6e=_['merge']({},_0x1e9b6e,_0x307281[_0xbde8('0x2f')]);return utilLicense[_0xbde8('0x30')](_0x1e9b6e)[_0xbde8('0x22')](respondWithResult(_0xd30713,null))[_0xbde8('0x31')](handleError(_0xd30713,null));};exports[_0xbde8('0x32')]=function(_0x2b1518,_0x484977){if(_0x2b1518['body']['id']){delete _0x2b1518[_0xbde8('0x33')]['id'];}return db[_0xbde8('0x34')]['find']({'where':{'id':_0x2b1518[_0xbde8('0x35')]['id']}})[_0xbde8('0x22')](handleEntityNotFound(_0x484977,null))['then'](function(_0xe3e981){var _0x16981e=_0xe3e981[_0xbde8('0x36')]({'plain':!![]});return utilLicense[_0xbde8('0x37')](_0x16981e,_0x2b1518[_0xbde8('0x33')][_0xbde8('0x38')]);})['then'](function(_0x121d49){if(!_0x121d49['demo']){return saveUpdates(_0x2b1518['body'],null);}return _0x121d49;})[_0xbde8('0x22')](respondWithResult(_0x484977,null))[_0xbde8('0x31')](handleError(_0x484977,null));};exports[_0xbde8('0x39')]=function(_0x53a27e,_0x5d90c5){var _0x50f991=_0xbde8('0x3a');var _0x25462e=path[_0xbde8('0x3b')]('/var','log',_0xbde8('0x3c'),_0x50f991);_0x5d90c5['setHeader']('Content-disposition',_0xbde8('0x3d')+_0x50f991);_0x5d90c5['set'](_0xbde8('0x3e'),_0xbde8('0x3f'));_0x5d90c5[_0xbde8('0x40')](_0x25462e);};
\ No newline at end of file
+var _0xbe07=['filters','intersection','attributes','fields','length','merge','options','getLicense','catch','update','body','find','params','get','checkLicense','key','downloadLogFile','license-info.log','/var','log','Content-disposition','attachment;\x20filename=','text/plain','download','rimraf','zip-dir','request-promise','moment','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','then','error','stack','name','send','index','model','keys','License','rawAttributes','query'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0xbe07,0x16c));var _0x7be0=function(_0x5e975c,_0x49af17){_0x5e975c=_0x5e975c-0x0;var _0x2c5166=_0xbe07[_0x5e975c];return _0x2c5166;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7be0('0x0'));var zipdir=require(_0x7be0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7be0('0x2'));var moment=require(_0x7be0('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7be0('0x4'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7be0('0x5'));var _=require(_0x7be0('0x6'));var squel=require(_0x7be0('0x7'));var crypto=require(_0x7be0('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x7be0('0x9'));var toCsv=require('to-csv');var querystring=require(_0x7be0('0xa'));var Papa=require(_0x7be0('0xb'));var Redis=require('ioredis');var authService=require(_0x7be0('0xc'));var qs=require(_0x7be0('0xd'));var as=require(_0x7be0('0xe'));var hardwareService=require(_0x7be0('0xf'));var logger=require('../../config/logger')(_0x7be0('0x10'));var utils=require(_0x7be0('0x11'));var config=require(_0x7be0('0x12'));var licenseUtil=require(_0x7be0('0x13'));var db=require(_0x7be0('0x14'))['db'];function respondWithStatusCode(_0x2b2d9f,_0x8c5530){_0x8c5530=_0x8c5530||0xcc;return function(_0x3ce225){if(_0x3ce225){return _0x2b2d9f[_0x7be0('0x15')](_0x8c5530);}return _0x2b2d9f[_0x7be0('0x16')](_0x8c5530)[_0x7be0('0x17')]();};}function respondWithResult(_0x594e08,_0x27c322){_0x27c322=_0x27c322||0xc8;return function(_0x5aae1f){if(_0x5aae1f){return _0x594e08['status'](_0x27c322)[_0x7be0('0x18')](_0x5aae1f);}};}function respondWithFilteredResult(_0x484a02,_0x52d76d){return function(_0x5d6f54){if(_0x5d6f54){var _0x2b0ab0=typeof _0x52d76d['offset']==='undefined'&&typeof _0x52d76d[_0x7be0('0x19')]===_0x7be0('0x1a');var _0x274098=_0x5d6f54['count'];var _0xb31da9=_0x2b0ab0?0x0:_0x52d76d['offset'];var _0x565fc3=_0x2b0ab0?_0x5d6f54[_0x7be0('0x1b')]:_0x52d76d[_0x7be0('0x1c')]+_0x52d76d[_0x7be0('0x19')];var _0x5111c2;if(_0x565fc3>=_0x274098){_0x565fc3=_0x274098;_0x5111c2=0xc8;}else{_0x5111c2=0xce;}_0x484a02[_0x7be0('0x16')](_0x5111c2);return _0x484a02[_0x7be0('0x1d')](_0x7be0('0x1e'),_0xb31da9+'-'+_0x565fc3+'/'+_0x274098)['json'](_0x5d6f54);}return null;};}function patchUpdates(_0x43a9fc){return function(_0x153e8f){try{jsonpatch[_0x7be0('0x1f')](_0x153e8f,_0x43a9fc,!![]);}catch(_0x374501){return BPromise['reject'](_0x374501);}return _0x153e8f[_0x7be0('0x20')]();};}function saveUpdates(_0x298b08,_0x585dbd){return function(_0x2506f5){if(_0x2506f5){return _0x2506f5['update'](_0x298b08)[_0x7be0('0x21')](function(_0x1a33dc){return _0x1a33dc;});}return null;};}function removeEntity(_0x3ab8d4,_0x4a7762){return function(_0x16048){if(_0x16048){return _0x16048['destroy']()['then'](function(){_0x3ab8d4[_0x7be0('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ea14d,_0x217564){return function(_0x275cc7){if(!_0x275cc7){_0x2ea14d[_0x7be0('0x15')](0x194);}return _0x275cc7;};}function handleError(_0x4b68d5,_0x3b17c7){_0x3b17c7=_0x3b17c7||0x1f4;return function(_0x2bd552){logger[_0x7be0('0x22')](_0x2bd552[_0x7be0('0x23')]);if(_0x2bd552[_0x7be0('0x24')]){delete _0x2bd552[_0x7be0('0x24')];}_0x4b68d5[_0x7be0('0x16')](_0x3b17c7)[_0x7be0('0x25')](_0x2bd552);};}var utilLicense=require(_0x7be0('0x13'));exports[_0x7be0('0x26')]=function(_0x15dcab,_0x214693){var _0x51b4a9={'raw':!![],'where':{'id':0x1}},_0x33ef52={};_0x33ef52[_0x7be0('0x27')]=_[_0x7be0('0x28')](db[_0x7be0('0x29')][_0x7be0('0x2a')]);_0x33ef52[_0x7be0('0x2b')]=_[_0x7be0('0x28')](_0x15dcab['query']);_0x33ef52[_0x7be0('0x2c')]=_[_0x7be0('0x2d')](_0x33ef52['model'],_0x33ef52[_0x7be0('0x2b')]);_0x51b4a9[_0x7be0('0x2e')]=_[_0x7be0('0x2d')](_0x33ef52[_0x7be0('0x27')],qs[_0x7be0('0x2f')](_0x15dcab['query'][_0x7be0('0x2f')]));_0x51b4a9[_0x7be0('0x2e')]=_0x51b4a9[_0x7be0('0x2e')][_0x7be0('0x30')]?_0x51b4a9[_0x7be0('0x2e')]:_0x33ef52[_0x7be0('0x27')];_0x51b4a9=_[_0x7be0('0x31')]({},_0x51b4a9,_0x15dcab[_0x7be0('0x32')]);return utilLicense[_0x7be0('0x33')](_0x51b4a9)[_0x7be0('0x21')](respondWithResult(_0x214693,null))[_0x7be0('0x34')](handleError(_0x214693,null));};exports[_0x7be0('0x35')]=function(_0x10f0ca,_0x42d620){if(_0x10f0ca[_0x7be0('0x36')]['id']){delete _0x10f0ca[_0x7be0('0x36')]['id'];}return db[_0x7be0('0x29')][_0x7be0('0x37')]({'where':{'id':_0x10f0ca[_0x7be0('0x38')]['id']}})[_0x7be0('0x21')](handleEntityNotFound(_0x42d620,null))[_0x7be0('0x21')](function(_0x48f56d){var _0x3cf8df=_0x48f56d[_0x7be0('0x39')]({'plain':!![]});return utilLicense[_0x7be0('0x3a')](_0x3cf8df,_0x10f0ca['body'][_0x7be0('0x3b')]);})['then'](function(_0x3bfb4e){if(!_0x3bfb4e['demo']){return saveUpdates(_0x10f0ca[_0x7be0('0x36')],null);}return _0x3bfb4e;})[_0x7be0('0x21')](respondWithResult(_0x42d620,null))[_0x7be0('0x34')](handleError(_0x42d620,null));};exports[_0x7be0('0x3c')]=function(_0xa1ed64,_0x5b5b9c){var _0x355b19=_0x7be0('0x3d');var _0x13a9d2=path['join'](_0x7be0('0x3e'),_0x7be0('0x3f'),'xcally',_0x355b19);_0x5b5b9c['setHeader'](_0x7be0('0x40'),_0x7be0('0x41')+_0x355b19);_0x5b5b9c[_0x7be0('0x1d')]('Content-Type',_0x7be0('0x42'));_0x5b5b9c[_0x7be0('0x43')](_0x13a9d2);};
\ No newline at end of file
index be78d77..0540b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x204e=['path','rimraf','../../config/environment','exports','define','License','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x582d60,_0x1da061){var _0x1ce1f6=function(_0x435b9c){while(--_0x435b9c){_0x582d60['push'](_0x582d60['shift']());}};_0x1ce1f6(++_0x1da061);}(_0x204e,0x19e));var _0xe204=function(_0x591b79,_0x5dced5){_0x591b79=_0x591b79-0x0;var _0x3ed768=_0x204e[_0x591b79];return _0x3ed768;};'use strict';var _=require(_0xe204('0x0'));var util=require(_0xe204('0x1'));var logger=require(_0xe204('0x2'))(_0xe204('0x3'));var moment=require('moment');var BPromise=require(_0xe204('0x4'));var rp=require(_0xe204('0x5'));var fs=require('fs');var path=require(_0xe204('0x6'));var rimraf=require(_0xe204('0x7'));var config=require(_0xe204('0x8'));var attributes=require('./license.attributes');module[_0xe204('0x9')]=function(_0x5e4316,_0xcfa43f){return _0x5e4316[_0xe204('0xa')](_0xe204('0xb'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x385c=['request-promise','rimraf','../../config/environment','./license.attributes','License','util','../../config/logger'];(function(_0x297b20,_0x5b3a2f){var _0x447682=function(_0x63dbeb){while(--_0x63dbeb){_0x297b20['push'](_0x297b20['shift']());}};_0x447682(++_0x5b3a2f);}(_0x385c,0x11d));var _0xc385=function(_0x292e78,_0x1bdd40){_0x292e78=_0x292e78-0x0;var _0x1e2c24=_0x385c[_0x292e78];return _0x1e2c24;};'use strict';var _=require('lodash');var util=require(_0xc385('0x0'));var logger=require(_0xc385('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc385('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc385('0x3'));var config=require(_0xc385('0x4'));var attributes=require(_0xc385('0x5'));module['exports']=function(_0x163d4f,_0x47ae41){return _0x163d4f['define'](_0xc385('0x6'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d73afe..62da9f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51ff=['info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then'];(function(_0x32e6fc,_0x8249f4){var _0x364f7c=function(_0x2bb4ee){while(--_0x2bb4ee){_0x32e6fc['push'](_0x32e6fc['shift']());}};_0x364f7c(++_0x8249f4);}(_0x51ff,0x1d5));var _0xf51f=function(_0x335923,_0x554711){_0x335923=_0x335923-0x0;var _0x53892b=_0x51ff[_0x335923];return _0x53892b;};'use strict';var _=require(_0xf51f('0x0'));var util=require(_0xf51f('0x1'));var moment=require(_0xf51f('0x2'));var BPromise=require(_0xf51f('0x3'));var rs=require(_0xf51f('0x4'));var fs=require('fs');var Redis=require(_0xf51f('0x5'));var db=require(_0xf51f('0x6'))['db'];var utils=require(_0xf51f('0x7'));var logger=require(_0xf51f('0x8'))(_0xf51f('0x9'));var config=require('../../config/environment');var jayson=require(_0xf51f('0xa'));var client=jayson[_0xf51f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d3eca,_0x321b51,_0x134798){return new BPromise(function(_0x2757c2,_0x2e5fb8){return client[_0xf51f('0xc')](_0x5d3eca,_0x134798)[_0xf51f('0xd')](function(_0x1c7888){logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x321b51,_0xf51f('0x10'));logger[_0xf51f('0x11')](_0xf51f('0x12'),_0x321b51,_0xf51f('0x10'),JSON['stringify'](_0x1c7888));if(_0x1c7888['error']){if(_0x1c7888[_0xf51f('0x13')]['code']===0x1f4){logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x1c7888['error']['message']);return _0x2e5fb8(_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);}logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);return _0x2757c2(_0x1c7888[_0xf51f('0x13')][_0xf51f('0x14')]);}else{logger[_0xf51f('0xe')](_0xf51f('0xf'),_0x321b51,_0xf51f('0x10'));_0x2757c2(_0x1c7888[_0xf51f('0x15')][_0xf51f('0x14')]);}})[_0xf51f('0x16')](function(_0x5cf67c){logger[_0xf51f('0x13')](_0xf51f('0xf'),_0x321b51,_0x5cf67c);_0x2e5fb8(_0x5cf67c);});});}
\ No newline at end of file
+var _0xa172=['http','request','then','info','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','util','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x58d4ce,_0x154425){var _0x3c5170=function(_0x235a0a){while(--_0x235a0a){_0x58d4ce['push'](_0x58d4ce['shift']());}};_0x3c5170(++_0x154425);}(_0xa172,0x1c5));var _0x2a17=function(_0x3ad639,_0x198acb){_0x3ad639=_0x3ad639-0x0;var _0x162fe5=_0xa172[_0x3ad639];return _0x162fe5;};'use strict';var _=require('lodash');var util=require(_0x2a17('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a17('0x1'))['db'];var utils=require(_0x2a17('0x2'));var logger=require(_0x2a17('0x3'))(_0x2a17('0x4'));var config=require('../../config/environment');var jayson=require(_0x2a17('0x5'));var client=jayson[_0x2a17('0x6')][_0x2a17('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x17104e,_0x55f287,_0x319ce7){return new BPromise(function(_0x2f2a70,_0x3ad10c){return client[_0x2a17('0x8')](_0x17104e,_0x319ce7)[_0x2a17('0x9')](function(_0x33b8c6){logger[_0x2a17('0xa')](_0x2a17('0xb'),_0x55f287,'request\x20sent');logger[_0x2a17('0xc')](_0x2a17('0xd'),_0x55f287,_0x2a17('0xe'),JSON[_0x2a17('0xf')](_0x33b8c6));if(_0x33b8c6[_0x2a17('0x10')]){if(_0x33b8c6['error'][_0x2a17('0x11')]===0x1f4){logger['error']('License,\x20%s,\x20%s',_0x55f287,_0x33b8c6[_0x2a17('0x10')]['message']);return _0x3ad10c(_0x33b8c6[_0x2a17('0x10')][_0x2a17('0x12')]);}logger['error'](_0x2a17('0xb'),_0x55f287,_0x33b8c6['error'][_0x2a17('0x12')]);return _0x2f2a70(_0x33b8c6[_0x2a17('0x10')][_0x2a17('0x12')]);}else{logger['info'](_0x2a17('0xb'),_0x55f287,_0x2a17('0xe'));_0x2f2a70(_0x33b8c6[_0x2a17('0x13')]['message']);}})['catch'](function(_0x258569){logger[_0x2a17('0x10')](_0x2a17('0xb'),_0x55f287,_0x258569);_0x3ad10c(_0x258569);});});}
\ No newline at end of file
index 255beea..7e00610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cbe=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/verify','verifySmtp','/:id/users','addDisposition','post','addAnswer','create','/:id/in_servers','addImap','addInteraction','addApplications','/:id/send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x2d28d9,_0x5488dc){var _0x11f240=function(_0x5fae97){while(--_0x5fae97){_0x2d28d9['push'](_0x2d28d9['shift']());}};_0x11f240(++_0x5488dc);}(_0x8cbe,0xc2));var _0xe8cb=function(_0x1b1432,_0x4672d6){_0x1b1432=_0x1b1432-0x0;var _0x1c41b7=_0x8cbe[_0x1b1432];return _0x1c41b7;};'use strict';var multer=require(_0xe8cb('0x0'));var util=require(_0xe8cb('0x1'));var path=require(_0xe8cb('0x2'));var timeout=require(_0xe8cb('0x3'));var express=require(_0xe8cb('0x4'));var router=express[_0xe8cb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe8cb('0x6'));var interaction=require(_0xe8cb('0x7'));var config=require(_0xe8cb('0x8'));var controller=require(_0xe8cb('0x9'));router[_0xe8cb('0xa')]('/',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xe8cb('0xd')]);router[_0xe8cb('0xa')](_0xe8cb('0xe'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0xf')]);router[_0xe8cb('0xa')](_0xe8cb('0x10'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x11')]);router['get'](_0xe8cb('0x12'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x13')]);router[_0xe8cb('0xa')]('/:id/in_servers',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x14')]);router['get'](_0xe8cb('0x15'),auth['isAuthenticated'](),controller[_0xe8cb('0x16')]);router['get'](_0xe8cb('0x17'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x18')]);router[_0xe8cb('0xa')](_0xe8cb('0x19'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x1a')]);router['get'](_0xe8cb('0x1b'),auth['isAuthenticated'](),controller['getMessages']);router['get'](_0xe8cb('0x1c'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x1d')]);router['get'](_0xe8cb('0x1e'),auth[_0xe8cb('0xb')](),controller['getAgents']);router['post'](_0xe8cb('0x10'),auth['isAuthenticated'](),controller[_0xe8cb('0x1f')]);router[_0xe8cb('0x20')](_0xe8cb('0x12'),auth['isAuthenticated'](),controller[_0xe8cb('0x21')]);router[_0xe8cb('0x20')]('/',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x22')]);router[_0xe8cb('0x20')](_0xe8cb('0x23'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x24')]);router[_0xe8cb('0x20')]('/:id/out_servers',auth[_0xe8cb('0xb')](),controller['addSmtp']);router[_0xe8cb('0x20')](_0xe8cb('0x17'),auth['isAuthenticated'](),controller[_0xe8cb('0x25')]);router[_0xe8cb('0x20')]('/:id/applications',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x26')]);router['post'](_0xe8cb('0x27'),auth['isAuthenticated'](),controller['send']);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0xe8cb('0x28')]);router[_0xe8cb('0x29')](_0xe8cb('0xe'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2a')]);router[_0xe8cb('0x2b')](_0xe8cb('0x10'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2c')]);router[_0xe8cb('0x2b')](_0xe8cb('0x12'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2d')]);router[_0xe8cb('0x2b')]('/:id/in_servers',auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2e')]);router['delete'](_0xe8cb('0x15'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x2f')]);router[_0xe8cb('0x2b')](_0xe8cb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe8cb('0x2b')](_0xe8cb('0x1e'),auth[_0xe8cb('0xb')](),controller[_0xe8cb('0x30')]);module[_0xe8cb('0x31')]=router;
\ No newline at end of file
+var _0x56ce=['delete','removeDispositions','removeAnswers','removeSmtp','destroy','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addImap','addInteraction','send','put','update'];(function(_0x407c8c,_0x4464dc){var _0x26c47f=function(_0x42a31){while(--_0x42a31){_0x407c8c['push'](_0x407c8c['shift']());}};_0x26c47f(++_0x4464dc);}(_0x56ce,0xe8));var _0xe56c=function(_0x24b036,_0x52f93e){_0x24b036=_0x24b036-0x0;var _0x494cf0=_0x56ce[_0x24b036];return _0x494cf0;};'use strict';var multer=require(_0xe56c('0x0'));var util=require(_0xe56c('0x1'));var path=require(_0xe56c('0x2'));var timeout=require('connect-timeout');var express=require(_0xe56c('0x3'));var router=express[_0xe56c('0x4')]();var fs_extra=require(_0xe56c('0x5'));var auth=require(_0xe56c('0x6'));var interaction=require(_0xe56c('0x7'));var config=require(_0xe56c('0x8'));var controller=require(_0xe56c('0x9'));router[_0xe56c('0xa')]('/',auth[_0xe56c('0xb')](),controller[_0xe56c('0xc')]);router['get'](_0xe56c('0xd'),auth[_0xe56c('0xb')](),controller[_0xe56c('0xe')]);router[_0xe56c('0xa')](_0xe56c('0xf'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x10')]);router[_0xe56c('0xa')](_0xe56c('0x11'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x12')]);router[_0xe56c('0xa')](_0xe56c('0x13'),auth['isAuthenticated'](),controller[_0xe56c('0x14')]);router[_0xe56c('0xa')](_0xe56c('0x15'),auth['isAuthenticated'](),controller['getImap']);router[_0xe56c('0xa')](_0xe56c('0x16'),auth['isAuthenticated'](),controller['getSmtp']);router[_0xe56c('0xa')](_0xe56c('0x17'),auth['isAuthenticated'](),controller[_0xe56c('0x18')]);router[_0xe56c('0xa')](_0xe56c('0x19'),auth[_0xe56c('0xb')](),controller['getApplications']);router[_0xe56c('0xa')]('/:id/messages',auth[_0xe56c('0xb')](),controller[_0xe56c('0x1a')]);router[_0xe56c('0xa')](_0xe56c('0x1b'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x1c')]);router[_0xe56c('0xa')](_0xe56c('0x1d'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x1e')]);router[_0xe56c('0x1f')](_0xe56c('0x11'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x20')]);router[_0xe56c('0x1f')](_0xe56c('0x13'),auth['isAuthenticated'](),controller['addAnswer']);router['post']('/',auth[_0xe56c('0xb')](),controller['create']);router[_0xe56c('0x1f')](_0xe56c('0x15'),auth['isAuthenticated'](),controller[_0xe56c('0x21')]);router[_0xe56c('0x1f')](_0xe56c('0x16'),auth[_0xe56c('0xb')](),controller['addSmtp']);router[_0xe56c('0x1f')](_0xe56c('0x17'),auth['isAuthenticated'](),controller[_0xe56c('0x22')]);router[_0xe56c('0x1f')](_0xe56c('0x19'),auth[_0xe56c('0xb')](),controller['addApplications']);router[_0xe56c('0x1f')]('/:id/send',auth[_0xe56c('0xb')](),controller[_0xe56c('0x23')]);router['post'](_0xe56c('0x1d'),auth[_0xe56c('0xb')](),controller['addAgents']);router[_0xe56c('0x24')](_0xe56c('0xf'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x25')]);router[_0xe56c('0x26')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xe56c('0x27')]);router[_0xe56c('0x26')](_0xe56c('0x13'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x28')]);router['delete'](_0xe56c('0x15'),auth['isAuthenticated'](),controller['removeImap']);router['delete'](_0xe56c('0x16'),auth[_0xe56c('0xb')](),controller[_0xe56c('0x29')]);router['delete']('/:id',auth[_0xe56c('0xb')](),controller[_0xe56c('0x2a')]);router[_0xe56c('0x26')](_0xe56c('0x1d'),auth['isAuthenticated'](),controller[_0xe56c('0x2b')]);module[_0xe56c('0x2c')]=router;
\ No newline at end of file
index 49253ef..570a52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ea=['outlook365','provider','custom','getDataValue','sequelize','exports','BOOLEAN','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','ENUM','gmail','hotmail'];(function(_0x2967c1,_0x202a72){var _0x103397=function(_0x14b5cc){while(--_0x14b5cc){_0x2967c1['push'](_0x2967c1['shift']());}};_0x103397(++_0x202a72);}(_0x50ea,0x89));var _0xa50e=function(_0x4a4f6e,_0x41dc09){_0x4a4f6e=_0x4a4f6e-0x0;var _0x1a69fc=_0x50ea[_0x4a4f6e];return _0x1a69fc;};'use strict';var Sequelize=require(_0xa50e('0x0'));module[_0xa50e('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xa50e('0x3')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0xa50e('0x3')],'allowNull':![]},'template':{'type':Sequelize[_0xa50e('0x4')]},'markAsUnread':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xa50e('0x3')],'allowNull':![],'defaultValue':_0xa50e('0x5')},'fontSize':{'type':Sequelize[_0xa50e('0x6')](0x2)[_0xa50e('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xa50e('0x4')],'defaultValue':function(){return _0xa50e('0x8');}},'notificationSound':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa50e('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa50e('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xa50e('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xa50e('0x2')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2f7dfc){if(!_0x2f7dfc)this[_0xa50e('0xa')](_0xa50e('0xb'),null);this[_0xa50e('0xa')]('mandatoryDisposition',_0x2f7dfc);}},'provider':{'type':Sequelize[_0xa50e('0xc')](_0xa50e('0xd'),_0xa50e('0xe'),'yahoo',_0xa50e('0xf')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0xa50e('0x10')))return _0xa50e('0x11');return this[_0xa50e('0x12')]('provider');},'set':function(_0x29c513){if(_0x29c513===_0xa50e('0x11'))_0x29c513=null;return this[_0xa50e('0xa')]('provider',_0x29c513);}}};
\ No newline at end of file
+var _0x5971=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','outlook365','getDataValue','provider','custom','setDataValue','sequelize','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x286a73,_0x378182){var _0x1ec447=function(_0x2157a2){while(--_0x2157a2){_0x286a73['push'](_0x286a73['shift']());}};_0x1ec447(++_0x378182);}(_0x5971,0x119));var _0x1597=function(_0xd69ee9,_0x258b3d){_0xd69ee9=_0xd69ee9-0x0;var _0x563f9d=_0x5971[_0xd69ee9];return _0x563f9d;};'use strict';var Sequelize=require(_0x1597('0x0'));module['exports']={'description':{'type':Sequelize[_0x1597('0x1')]},'name':{'type':Sequelize[_0x1597('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x1597('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x1597('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x1597('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x1597('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x1597('0x3')]},'markAsUnread':{'type':Sequelize[_0x1597('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1597('0x4')},'fontSize':{'type':Sequelize[_0x1597('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x1597('0x6');}},'notificationSound':{'type':Sequelize[_0x1597('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1597('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x1597('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x1597('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1597('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x1597('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x1597('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x1597('0x2')],'defaultValue':![],'comment':_0x1597('0x8'),'set':function(_0x3202c8){if(!_0x3202c8)this['setDataValue'](_0x1597('0x9'),null);this['setDataValue'](_0x1597('0xa'),_0x3202c8);}},'provider':{'type':Sequelize[_0x1597('0xb')]('gmail','hotmail','yahoo',_0x1597('0xc')),'defaultValue':null,'get':function(){if(!this[_0x1597('0xd')](_0x1597('0xe')))return'custom';return this[_0x1597('0xd')](_0x1597('0xe'));},'set':function(_0x5d5b61){if(_0x5d5b61===_0x1597('0xf'))_0x5d5b61=null;return this[_0x1597('0x10')](_0x1597('0xe'),_0x5d5b61);}}};
\ No newline at end of file
index 0489197..00b8791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ea=['juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','destroy','get','MailAccounts','stack','name','gmail','yahoo','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','username','pass','password','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','MailServerIn','Pause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','MailAccount','includeAll','include','findAll','show','params','MailServerOut','mandatoryDispositionPause','find','body','provider','update','Disposition','create','findOne','length','nolimit','rows','removeDispositions','ids','addAnswer','getAnswers','MailAccountId','CannedAnswer','removeAnswers','email','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','omit','getInteractions','CmContact','Contact','Owner','internal','Tag','Tags','tag','sequelize','ISOLATION_LEVELS','MailApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','getMessages','MailMessage','inlineCss','true','split','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','User','getAgents','bluebird','util','path'];(function(_0x4d8ab0,_0x27a098){var _0x13b5bc=function(_0x29c817){while(--_0x29c817){_0x4d8ab0['push'](_0x4d8ab0['shift']());}};_0x13b5bc(++_0x27a098);}(_0xd0ea,0x17b));var _0xad0e=function(_0x62b58e,_0x46fe1e){_0x62b58e=_0x62b58e-0x0;var _0x37fe84=_0xd0ea[_0x62b58e];return _0x37fe84;};'use strict';var moment=require('moment');var BPromise=require(_0xad0e('0x0'));var util=require(_0xad0e('0x1'));var path=require(_0xad0e('0x2'));var _=require('lodash');var juice=require(_0xad0e('0x3'));var Redis=require(_0xad0e('0x4'));var qs=require(_0xad0e('0x5'));var logger=require(_0xad0e('0x6'))(_0xad0e('0x7'));var config=require(_0xad0e('0x8'));var db=require('../../mysqldb')['db'];config[_0xad0e('0x9')]=_[_0xad0e('0xa')](config[_0xad0e('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xad0e('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xad0e('0xc')](socket);var jayson=require(_0xad0e('0xd'));var client=jayson[_0xad0e('0xe')]['http']({'port':0x232b});function respondWithRpcPromise(_0x5c9332,_0x250086,_0x1e27f2,_0x3e1b0e){return new BPromise(function(_0xf4607d,_0x3ef8f9){var _0x1240ea=_0x3e1b0e||client;return _0x1240ea[_0xad0e('0xf')](_0x5c9332,_0x1e27f2)[_0xad0e('0x10')](function(_0x4e8db2){logger[_0xad0e('0x11')](_0xad0e('0x12'),_0x250086,_0xad0e('0x13'));logger[_0xad0e('0x14')](_0xad0e('0x15'),_0x250086,_0xad0e('0x13'),JSON['stringify'](_0x4e8db2));if(_0x4e8db2['error']){if(_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x17')]===0x1f4){logger[_0xad0e('0x16')](_0xad0e('0x12'),_0x250086,_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);return _0x3ef8f9(_0x4e8db2[_0xad0e('0x16')]['message']);}logger[_0xad0e('0x16')]('MailAccount,\x20%s,\x20%s',_0x250086,_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);return _0xf4607d(_0x4e8db2[_0xad0e('0x16')][_0xad0e('0x18')]);}else{logger[_0xad0e('0x11')](_0xad0e('0x12'),_0x250086,'request\x20sent');_0xf4607d(_0x4e8db2['result'][_0xad0e('0x18')]);}})[_0xad0e('0x19')](function(_0xd2764){logger[_0xad0e('0x16')](_0xad0e('0x12'),_0x250086,_0xd2764);_0x3ef8f9(_0xd2764);});});}function respondWithStatusCode(_0x56f751,_0x53989b){_0x53989b=_0x53989b||0xcc;return function(_0x3cd81f){if(_0x3cd81f){return _0x56f751[_0xad0e('0x1a')](_0x53989b);}return _0x56f751[_0xad0e('0x1b')](_0x53989b)[_0xad0e('0x1c')]();};}function respondWithResult(_0x5c259a,_0x49f5bc){_0x49f5bc=_0x49f5bc||0xc8;return function(_0x59bc87){if(_0x59bc87){return _0x5c259a[_0xad0e('0x1b')](_0x49f5bc)[_0xad0e('0x1d')](_0x59bc87);}};}function respondWithFilteredResult(_0x38cb3c,_0x19a273){return function(_0x51ee73){if(_0x51ee73){var _0x1ed1e8=typeof _0x19a273[_0xad0e('0x1e')]===_0xad0e('0x1f')&&typeof _0x19a273['limit']===_0xad0e('0x1f');var _0x355d9e=_0x51ee73['count'];var _0x4172b9=_0x1ed1e8?0x0:_0x19a273[_0xad0e('0x1e')];var _0x193871=_0x1ed1e8?_0x51ee73[_0xad0e('0x20')]:_0x19a273[_0xad0e('0x1e')]+_0x19a273['limit'];var _0x41370f;if(_0x193871>=_0x355d9e){_0x193871=_0x355d9e;_0x41370f=0xc8;}else{_0x41370f=0xce;}_0x38cb3c['status'](_0x41370f);return _0x38cb3c[_0xad0e('0x21')](_0xad0e('0x22'),_0x4172b9+'-'+_0x193871+'/'+_0x355d9e)[_0xad0e('0x1d')](_0x51ee73);}return null;};}function saveUpdates(_0x18f157){return function(_0xd3944a){if(_0xd3944a){return _0xd3944a['update'](_0x18f157)[_0xad0e('0x10')](function(_0x12d585){return _0x12d585;});}return null;};}function removeEntity(_0x51e008){return function(_0x4157b2){if(_0x4157b2){return _0x4157b2[_0xad0e('0x23')]()[_0xad0e('0x10')](function(){var _0x4ea7cd=_0x4157b2[_0xad0e('0x24')]({'plain':!![]});var _0x51f9e2=_0xad0e('0x25');return db['UserProfileResource'][_0xad0e('0x23')]({'where':{'type':_0x51f9e2,'resourceId':_0x4ea7cd['id']}})[_0xad0e('0x10')](function(){return _0x4157b2;});})[_0xad0e('0x10')](function(){_0x51e008[_0xad0e('0x1b')](0xcc)[_0xad0e('0x1c')]();});}};}function handleEntityNotFound(_0x2a67d4){return function(_0x4b5247){if(!_0x4b5247){_0x2a67d4[_0xad0e('0x1a')](0x194);}return _0x4b5247;};}function handleError(_0x432148,_0x47873e){_0x47873e=_0x47873e||0x1f4;return function(_0x491fc0){logger['error'](_0x491fc0[_0xad0e('0x26')]);if(_0x491fc0[_0xad0e('0x27')]){delete _0x491fc0[_0xad0e('0x27')];}_0x432148[_0xad0e('0x1b')](_0x47873e)['send'](_0x491fc0);};}function getImapHost(_0x192711){switch(_0x192711){case _0xad0e('0x28'):return'imap.gmail.com';case _0xad0e('0x29'):return _0xad0e('0x2a');case _0xad0e('0x2b'):return'imap-mail.outlook.com';case _0xad0e('0x2c'):return _0xad0e('0x2d');}throw new Error(_0xad0e('0x2e'),_0x192711);}function getSmtpHost(_0x313672){switch(_0x313672){case'gmail':return _0xad0e('0x2f');case _0xad0e('0x29'):return'smtp.mail.yahoo.com';case'hotmail':return _0xad0e('0x30');case _0xad0e('0x2c'):return _0xad0e('0x31');}throw new Error(_0xad0e('0x2e'),_0x313672);}function getAuthenticationOptions(_0x2a5229,_0x53760b){var _0x44af65={};var _0x6c1ccc={};if(_0x2a5229){_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=_0x53760b[_0xad0e('0x33')];_0x44af65['password']=_0x6c1ccc[_0xad0e('0x34')]=_0x53760b[_0xad0e('0x35')];if(_0x53760b[_0xad0e('0x36')]){_0x44af65['modernAuthentication']=_0x6c1ccc[_0xad0e('0x36')]=!![];_0x44af65[_0xad0e('0x37')]=_0x6c1ccc[_0xad0e('0x37')]=_0x53760b[_0xad0e('0x37')];_0x44af65[_0xad0e('0x35')]=_0x6c1ccc[_0xad0e('0x34')]=null;}else{_0x44af65[_0xad0e('0x37')]=_0x6c1ccc[_0xad0e('0x37')]=null;}_0x44af65[_0xad0e('0x38')]=getImapHost(_0x2a5229);_0x44af65[_0xad0e('0x39')]=0x3e1;_0x6c1ccc[_0xad0e('0x38')]=getSmtpHost(_0x2a5229);_0x6c1ccc[_0xad0e('0x39')]=0x24b;_0x6c1ccc[_0xad0e('0x3a')]=![];_0x44af65[_0xad0e('0x3b')]=_0x6c1ccc[_0xad0e('0x3b')]=null;}else{if(_0x53760b[_0xad0e('0x3c')]){_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=_0x53760b[_0xad0e('0x33')];_0x44af65['password']=_0x6c1ccc[_0xad0e('0x34')]=_0x53760b[_0xad0e('0x35')];}else{_0x44af65[_0xad0e('0x3c')]=_0x6c1ccc[_0xad0e('0x3c')]=![];_0x44af65[_0xad0e('0x32')]=_0x6c1ccc[_0xad0e('0x32')]=null;_0x44af65[_0xad0e('0x35')]=_0x6c1ccc[_0xad0e('0x34')]=null;}_0x44af65[_0xad0e('0x38')]=_0x53760b['Imap'][_0xad0e('0x38')];_0x44af65[_0xad0e('0x39')]=_0x53760b[_0xad0e('0x3d')][_0xad0e('0x39')];_0x6c1ccc[_0xad0e('0x38')]=_0x53760b[_0xad0e('0x3e')][_0xad0e('0x38')];_0x6c1ccc['port']=_0x53760b[_0xad0e('0x3e')][_0xad0e('0x39')];}return{'Imap':_0x44af65,'Smtp':_0x6c1ccc};}exports['index']=function(_0x3afd7a,_0x5f20d7){var _0x366c67={'include':[{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')},{'model':db['MailServerOut'],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x40')],'as':'mandatoryDispositionPause'}]},_0x2f0de2={},_0x40114f={'count':0x0,'rows':[]};var _0x3ca061=_[_0xad0e('0x41')](db['MailAccount'][_0xad0e('0x42')],function(_0x8c09ae){return{'name':_0x8c09ae[_0xad0e('0x43')],'type':_0x8c09ae[_0xad0e('0x44')][_0xad0e('0x45')]};});_0x2f0de2[_0xad0e('0x46')]=_[_0xad0e('0x41')](_0x3ca061,'name');_0x2f0de2[_0xad0e('0x47')]=_[_0xad0e('0x48')](_0x3afd7a[_0xad0e('0x47')]);_0x2f0de2[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x2f0de2[_0xad0e('0x46')],_0x2f0de2[_0xad0e('0x47')]);_0x366c67[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x2f0de2[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x366c67[_0xad0e('0x4b')]=_0x366c67[_0xad0e('0x4b')]['length']?_0x366c67[_0xad0e('0x4b')]:_0x2f0de2[_0xad0e('0x46')];if(!_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x4d')]('nolimit')){_0x366c67[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x3afd7a['query'][_0xad0e('0x4e')]);_0x366c67[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x366c67[_0xad0e('0x4f')]=qs['sort'](_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x50')]);_0x366c67[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x3afd7a[_0xad0e('0x47')],_0x2f0de2['filters']),_0x3ca061);if(_0x3afd7a['query']['filter']){_0x366c67[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x366c67[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x3ca061,function(_0x2e5d97){if(_0x2e5d97['type']!==_0xad0e('0x54')){var _0x31b6c9={};_0x31b6c9[_0x2e5d97[_0xad0e('0x27')]]={'$like':'%'+_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x31b6c9;}})});}_0x366c67=_[_0xad0e('0x53')]({},_0x366c67,_0x3afd7a[_0xad0e('0x56')]);var _0x27a495={'where':_0x366c67[_0xad0e('0x51')]};return db[_0xad0e('0x57')][_0xad0e('0x20')](_0x27a495)[_0xad0e('0x10')](function(_0x285507){_0x40114f[_0xad0e('0x20')]=_0x285507;if(_0x3afd7a[_0xad0e('0x47')][_0xad0e('0x58')]){_0x366c67[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x57')][_0xad0e('0x5a')](_0x366c67);})['then'](function(_0x17683b){_0x40114f['rows']=_0x17683b;return _0x40114f;})[_0xad0e('0x10')](respondWithFilteredResult(_0x5f20d7,_0x366c67))[_0xad0e('0x19')](handleError(_0x5f20d7,null));};exports[_0xad0e('0x5b')]=function(_0x15e081,_0x1d2e88){var _0x39f239={'raw':![],'where':{'id':_0x15e081[_0xad0e('0x5c')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x40')],'as':_0xad0e('0x5e')}]},_0x203b78={};_0x203b78[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x57')][_0xad0e('0x42')]);_0x203b78['query']=_['keys'](_0x15e081[_0xad0e('0x47')]);_0x203b78[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x203b78[_0xad0e('0x46')],_0x203b78[_0xad0e('0x47')]);_0x39f239[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x203b78[_0xad0e('0x46')],qs['fields'](_0x15e081['query'][_0xad0e('0x4c')]));_0x39f239[_0xad0e('0x4b')]=_0x39f239[_0xad0e('0x4b')]['length']?_0x39f239[_0xad0e('0x4b')]:_0x203b78[_0xad0e('0x46')];if(_0x15e081[_0xad0e('0x47')]['includeAll']){_0x39f239[_0xad0e('0x59')]=[{'all':!![]}];}_0x39f239=_[_0xad0e('0x53')]({},_0x39f239,_0x15e081[_0xad0e('0x56')]);return db['MailAccount'][_0xad0e('0x5f')](_0x39f239)['then'](handleEntityNotFound(_0x1d2e88,null))[_0xad0e('0x10')](respondWithResult(_0x1d2e88,null))[_0xad0e('0x19')](handleError(_0x1d2e88,null));};exports['update']=function(_0xa6917,_0x180a25){if(_0xa6917['body']['id']){delete _0xa6917[_0xad0e('0x60')]['id'];}var _0x2110b7=_0xa6917[_0xad0e('0x60')][_0xad0e('0x61')]==='custom'?null:_0xa6917[_0xad0e('0x60')][_0xad0e('0x61')];var _0x537ebb=_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')]||{};var _0x3a2675=_0xa6917[_0xad0e('0x60')][_0xad0e('0x3e')]||{};if(_0x2110b7){_0x537ebb[_0xad0e('0x38')]=getImapHost(_0x2110b7);_0x537ebb['port']=0x3e1;_0x3a2675[_0xad0e('0x38')]=getSmtpHost(_0x2110b7);_0x3a2675[_0xad0e('0x39')]=0x24b;_0x3a2675[_0xad0e('0x3a')]=![];}if(_0x3a2675[_0xad0e('0x36')]){_0x3a2675['secure']=![];}else{_0x3a2675[_0xad0e('0x37')]=null;}if(!_0x537ebb[_0xad0e('0x36')])_0x537ebb[_0xad0e('0x37')]=null;_0xa6917['body'][_0xad0e('0x3d')]=_0x537ebb;_0xa6917[_0xad0e('0x60')]['Smtp']=_0x3a2675;return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0xa6917[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')},{'model':db[_0xad0e('0x5d')],'as':'Smtp'},{'model':db[_0xad0e('0x40')],'as':_0xad0e('0x5e')}]})['then'](handleEntityNotFound(_0x180a25,null))[_0xad0e('0x10')](function(_0x2a2e07){if(!_0x2a2e07)throw new Error('Mail\x20Account\x20not\x20found');if(_0x2a2e07[_0xad0e('0x3b')])delete _0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')];return _0x2a2e07;})[_0xad0e('0x10')](saveUpdates(_0xa6917[_0xad0e('0x60')],null))[_0xad0e('0x10')](function(_0x51569c){if(!_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')])return _0x51569c;return db['MailServerIn']['update'](_0xa6917[_0xad0e('0x60')][_0xad0e('0x3d')],{'where':{'MailAccountId':_0x51569c['id']}})[_0xad0e('0x10')](function(){return _0x51569c;});})[_0xad0e('0x10')](function(_0x39f67a){if(!_0xa6917[_0xad0e('0x60')][_0xad0e('0x3e')])return _0x39f67a;return db[_0xad0e('0x5d')][_0xad0e('0x62')](_0xa6917['body'][_0xad0e('0x3e')],{'where':{'MailAccountId':_0x39f67a['id']}})[_0xad0e('0x10')](function(){return _0x39f67a;});})[_0xad0e('0x10')](respondWithResult(_0x180a25,null))[_0xad0e('0x19')](handleError(_0x180a25,null));};exports['describe']=function(_0x4f7295,_0xa8594a){return db[_0xad0e('0x57')]['describe']()['then'](respondWithResult(_0xa8594a,null))[_0xad0e('0x19')](handleError(_0xa8594a,null));};exports['addDisposition']=function(_0x368f9e,_0x2df0dd){if(_0x368f9e[_0xad0e('0x60')]['id']){delete _0x368f9e[_0xad0e('0x60')]['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x368f9e['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x2df0dd,null))[_0xad0e('0x10')](function(_0x30de6e){if(_0x30de6e){_0x368f9e['body']['MailAccountId']=_0x30de6e['id'];return db[_0xad0e('0x63')][_0xad0e('0x64')](_0x368f9e[_0xad0e('0x60')]);}})[_0xad0e('0x10')](respondWithResult(_0x2df0dd,null))['catch'](handleError(_0x2df0dd,null));};exports['getDispositions']=function(_0x42b403,_0x47d10c){var _0x479d96={'raw':![],'where':{}};var _0x5e9c18={};var _0x3dc612={'count':0x0,'rows':[]};return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x42b403['params']['id']}})['then'](handleEntityNotFound(_0x47d10c,null))[_0xad0e('0x10')](function(_0x580712){if(_0x580712){_0x5e9c18['model']=_[_0xad0e('0x48')](db[_0xad0e('0x63')][_0xad0e('0x42')]);_0x5e9c18['query']=_[_0xad0e('0x48')](_0x42b403[_0xad0e('0x47')]);_0x5e9c18['filters']=_['intersection'](_0x5e9c18[_0xad0e('0x46')],_0x5e9c18[_0xad0e('0x47')]);_0x479d96[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x5e9c18['model'],qs[_0xad0e('0x4c')](_0x42b403[_0xad0e('0x47')]['fields']));_0x479d96[_0xad0e('0x4b')]=_0x479d96[_0xad0e('0x4b')][_0xad0e('0x66')]?_0x479d96[_0xad0e('0x4b')]:_0x5e9c18[_0xad0e('0x46')];if(!_0x42b403['query'][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x479d96[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x42b403[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x479d96[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x42b403[_0xad0e('0x47')]['offset']);}_0x479d96[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x42b403['query'][_0xad0e('0x50')]);_0x479d96[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x42b403['query'],_0x5e9c18['filters']));_0x479d96[_0xad0e('0x51')]['MailAccountId']=_0x580712['id'];if(_0x42b403[_0xad0e('0x47')][_0xad0e('0x55')]){_0x479d96[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x479d96[_0xad0e('0x51')],{'$or':_['map'](_0x479d96['attributes'],function(_0x19b91c){var _0x567e52={};_0x567e52[_0x19b91c]={'$like':'%'+_0x42b403[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x567e52;})});}_0x479d96=_[_0xad0e('0x53')]({},_0x479d96,_0x42b403['options']);return db[_0xad0e('0x63')][_0xad0e('0x20')]({'where':_0x479d96[_0xad0e('0x51')]})['then'](function(_0x173110){_0x3dc612['count']=_0x173110;if(_0x42b403[_0xad0e('0x47')][_0xad0e('0x58')]){_0x479d96[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x63')]['findAll'](_0x479d96);})[_0xad0e('0x10')](function(_0x4f2537){_0x3dc612[_0xad0e('0x68')]=_0x4f2537;return _0x3dc612;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x47d10c,_0x479d96))[_0xad0e('0x19')](handleError(_0x47d10c,null));};exports[_0xad0e('0x69')]=function(_0x89fdc,_0x5b68a8){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x89fdc[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5b68a8,null))['then'](function(_0x70ab73){if(_0x70ab73){return _0x70ab73[_0xad0e('0x69')](_0x89fdc[_0xad0e('0x47')][_0xad0e('0x6a')]);}})[_0xad0e('0x10')](respondWithStatusCode(_0x5b68a8,null))[_0xad0e('0x19')](handleError(_0x5b68a8,null));};exports[_0xad0e('0x6b')]=function(_0x4eea48,_0x1f89f6){if(_0x4eea48[_0xad0e('0x60')]['id']){delete _0x4eea48['body']['id'];}return db[_0xad0e('0x57')]['find']({'where':{'id':_0x4eea48[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x1f89f6,null))[_0xad0e('0x10')](function(_0x3dec21){if(_0x3dec21){_0x4eea48['body']['MailAccountId']=_0x3dec21['id'];return db['CannedAnswer'][_0xad0e('0x64')](_0x4eea48[_0xad0e('0x60')]);}})[_0xad0e('0x10')](respondWithResult(_0x1f89f6,null))[_0xad0e('0x19')](handleError(_0x1f89f6,null));};exports[_0xad0e('0x6c')]=function(_0x41fd62,_0x582d30){var _0x286b92={'raw':![],'where':{}};var _0x228a95={};var _0x37faf0={'count':0x0,'rows':[]};return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x41fd62[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x582d30,null))[_0xad0e('0x10')](function(_0x245a96){if(_0x245a96){_0x228a95['model']=_[_0xad0e('0x48')](db['CannedAnswer'][_0xad0e('0x42')]);_0x228a95[_0xad0e('0x47')]=_['keys'](_0x41fd62[_0xad0e('0x47')]);_0x228a95['filters']=_['intersection'](_0x228a95[_0xad0e('0x46')],_0x228a95[_0xad0e('0x47')]);_0x286b92[_0xad0e('0x4b')]=_['intersection'](_0x228a95[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x41fd62[_0xad0e('0x47')]['fields']));_0x286b92['attributes']=_0x286b92[_0xad0e('0x4b')][_0xad0e('0x66')]?_0x286b92[_0xad0e('0x4b')]:_0x228a95['model'];if(!_0x41fd62['query'][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x286b92['limit']=qs[_0xad0e('0x4e')](_0x41fd62['query'][_0xad0e('0x4e')]);_0x286b92[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x41fd62[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x286b92[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x41fd62[_0xad0e('0x47')][_0xad0e('0x50')]);_0x286b92['where']=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x41fd62[_0xad0e('0x47')],_0x228a95[_0xad0e('0x49')]));_0x286b92[_0xad0e('0x51')][_0xad0e('0x6d')]=_0x245a96['id'];if(_0x41fd62['query']['filter']){_0x286b92['where']=_['merge'](_0x286b92[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x286b92['attributes'],function(_0x515575){var _0x805128={};_0x805128[_0x515575]={'$like':'%'+_0x41fd62['query']['filter']+'%'};return _0x805128;})});}_0x286b92=_[_0xad0e('0x53')]({},_0x286b92,_0x41fd62['options']);return db['CannedAnswer'][_0xad0e('0x20')]({'where':_0x286b92[_0xad0e('0x51')]})['then'](function(_0x378330){_0x37faf0[_0xad0e('0x20')]=_0x378330;if(_0x41fd62[_0xad0e('0x47')][_0xad0e('0x58')]){_0x286b92[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x6e')]['findAll'](_0x286b92);})[_0xad0e('0x10')](function(_0x354dca){_0x37faf0[_0xad0e('0x68')]=_0x354dca;return _0x37faf0;});}})['then'](respondWithFilteredResult(_0x582d30,_0x286b92))['catch'](handleError(_0x582d30,null));};exports[_0xad0e('0x6f')]=function(_0x4130eb,_0x123fcb){return db['MailAccount'][_0xad0e('0x5f')]({'where':{'id':_0x4130eb['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x123fcb,null))[_0xad0e('0x10')](function(_0x436e10){if(_0x436e10){return _0x436e10['removeAnswers'](_0x4130eb[_0xad0e('0x47')][_0xad0e('0x6a')]);}})['then'](respondWithStatusCode(_0x123fcb,null))[_0xad0e('0x19')](handleError(_0x123fcb,null));};exports[_0xad0e('0x64')]=function(_0x4fcf3d,_0x351827){var _0x42484d={'name':_0x4fcf3d['body'][_0xad0e('0x27')],'key':_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x45')],'provider':_0x4fcf3d['body'][_0xad0e('0x61')]==='custom'?null:_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x61')],'email':_0x4fcf3d['body'][_0xad0e('0x70')],'ListId':_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x71')],'active':!_[_0xad0e('0x72')](_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x73')])?_0x4fcf3d[_0xad0e('0x60')][_0xad0e('0x73')]:!![],'description':_0x4fcf3d[_0xad0e('0x60')]['description']||null};var _0x2064cf=getAuthenticationOptions(_0x42484d[_0xad0e('0x61')],_0x4fcf3d[_0xad0e('0x60')]);_0x42484d[_0xad0e('0x3d')]=_0x2064cf[_0xad0e('0x3d')];_0x42484d[_0xad0e('0x3e')]=_0x2064cf[_0xad0e('0x3e')];return db['MailAccount']['create'](_0x42484d,{'include':[{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e')},{'model':db[_0xad0e('0x3f')],'as':_0xad0e('0x3d')}]})[_0xad0e('0x10')](function(_0x3cd43a){var _0x10b178=_0x4fcf3d[_0xad0e('0x32')][_0xad0e('0x24')]({'plain':!![]});if(!_0x10b178)throw new Error(_0xad0e('0x74'));if(_0x10b178[_0xad0e('0x75')]===_0xad0e('0x32')){var _0x3b1596=_0x3cd43a[_0xad0e('0x24')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'MailAccounts','userProfileId':_0x10b178['userProfileId']},'raw':!![]})[_0xad0e('0x10')](function(_0x1c26b9){if(_0x1c26b9&&_0x1c26b9[_0xad0e('0x76')]===0x0){return db[_0xad0e('0x77')][_0xad0e('0x64')]({'name':_0x3b1596[_0xad0e('0x27')],'resourceId':_0x3b1596['id'],'type':_0x1c26b9['name'],'sectionId':_0x1c26b9['id']},{})[_0xad0e('0x10')](function(){return _0x3cd43a;});}else{return _0x3cd43a;}})[_0xad0e('0x19')](function(_0x5a8b63){logger[_0xad0e('0x16')](_0xad0e('0x78'),_0x5a8b63);throw _0x5a8b63;});}return _0x3cd43a;})[_0xad0e('0x10')](respondWithResult(_0x351827,0xc9))['catch'](handleError(_0x351827,null));};exports['getImap']=function(_0xf03f8d,_0xb4e73f){return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0xf03f8d[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xb4e73f,null))['then'](function(_0x5c9aff){if(_0x5c9aff){return _0x5c9aff[_0xad0e('0x79')]();}return null;})[_0xad0e('0x10')](respondWithResult(_0xb4e73f,null))['catch'](handleError(_0xb4e73f,null));};exports[_0xad0e('0x7a')]=function(_0x218de6,_0x2ce226){if(_0x218de6[_0xad0e('0x60')]['id']){delete _0x218de6['body']['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x218de6[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x2ce226,null))[_0xad0e('0x10')](function(_0x5e1cbd){if(_0x5e1cbd){_0x218de6['body'][_0xad0e('0x6d')]=_0x5e1cbd['id'];return db['MailServerIn']['create'](_0x218de6['body']);}})[_0xad0e('0x10')](respondWithResult(_0x2ce226,null))[_0xad0e('0x19')](handleError(_0x2ce226,null));};exports[_0xad0e('0x7b')]=function(_0x135c3a,_0x13cb6b){return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x135c3a[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x13cb6b,null))['then'](function(_0xf30139){if(_0xf30139){return _0xf30139[_0xad0e('0x7c')](null);}return null;})[_0xad0e('0x10')](respondWithStatusCode(_0x13cb6b,null))[_0xad0e('0x19')](handleError(_0x13cb6b,null));};exports['getSmtp']=function(_0x1c31fb,_0x3798a9){return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x1c31fb[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x3798a9,null))[_0xad0e('0x10')](function(_0xc0bc57){if(_0xc0bc57){return _0xc0bc57[_0xad0e('0x7d')]();}return null;})[_0xad0e('0x10')](respondWithResult(_0x3798a9,null))[_0xad0e('0x19')](handleError(_0x3798a9,null));};exports['addSmtp']=function(_0x58bd48,_0x44c23c){if(_0x58bd48['body']['id']){delete _0x58bd48['body']['id'];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x58bd48['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x44c23c,null))[_0xad0e('0x10')](function(_0x67f0ef){if(_0x67f0ef){_0x58bd48[_0xad0e('0x60')]['MailAccountId']=_0x67f0ef['id'];return db[_0xad0e('0x5d')]['create'](_0x58bd48['body']);}})[_0xad0e('0x10')](respondWithResult(_0x44c23c,null))['catch'](handleError(_0x44c23c,null));};exports[_0xad0e('0x7e')]=function(_0x4591df,_0x19590d){return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x4591df['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x19590d,null))['then'](function(_0x3b8892){if(_0x3b8892){return _0x3b8892[_0xad0e('0x7f')](null);}return null;})[_0xad0e('0x10')](respondWithStatusCode(_0x19590d,null))[_0xad0e('0x19')](handleError(_0x19590d,null));};exports['addInteraction']=function(_0x18f10e,_0xd4029c){return db[_0xad0e('0x80')][_0xad0e('0x5f')]({'where':{'id':_0x18f10e['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xd4029c,null))[_0xad0e('0x10')](function(_0x1ca8e1){if(_0x1ca8e1){return _0x1ca8e1[_0xad0e('0x81')](_0x18f10e['body'][_0xad0e('0x6a')],_[_0xad0e('0x82')](_0x18f10e['body'],['ids','id'])||{});}})[_0xad0e('0x10')](respondWithResult(_0xd4029c,null))['catch'](handleError(_0xd4029c,null));};exports[_0xad0e('0x83')]=function(_0x48ebda,_0x268207){var _0x2fc643={'raw':![],'where':{}};var _0x1e495e={};var _0x2f3e88={'count':0x0,'rows':[]};return db[_0xad0e('0x57')]['findOne']({'where':{'id':_0x48ebda[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x268207,null))['then'](function(_0x5e5c9c){if(_0x5e5c9c){_0x1e495e[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x80')][_0xad0e('0x42')]);_0x1e495e[_0xad0e('0x47')]=_['keys'](_0x48ebda[_0xad0e('0x47')]);_0x1e495e['filters']=_[_0xad0e('0x4a')](_0x1e495e[_0xad0e('0x46')],_0x1e495e[_0xad0e('0x47')]);_0x2fc643['attributes']=_[_0xad0e('0x4a')](_0x1e495e[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x48ebda[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x2fc643[_0xad0e('0x4b')]=_0x2fc643[_0xad0e('0x4b')]['length']?_0x2fc643[_0xad0e('0x4b')]:_0x1e495e[_0xad0e('0x46')];if(!_0x48ebda[_0xad0e('0x47')]['hasOwnProperty']('nolimit')){_0x2fc643[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x48ebda['query'][_0xad0e('0x4e')]);_0x2fc643[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x48ebda[_0xad0e('0x47')][_0xad0e('0x1e')]);}_0x2fc643[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x48ebda[_0xad0e('0x47')]['sort']);_0x2fc643['where']=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x48ebda[_0xad0e('0x47')],_0x1e495e[_0xad0e('0x49')]));_0x2fc643['where'][_0xad0e('0x6d')]=_0x5e5c9c['id'];if(_0x48ebda[_0xad0e('0x47')][_0xad0e('0x55')]){_0x2fc643[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x2fc643[_0xad0e('0x51')],{'$or':_[_0xad0e('0x41')](_0x2fc643['attributes'],function(_0x4651fa){var _0x5e0a50={};_0x5e0a50[_0x4651fa]={'$like':'%'+_0x48ebda['query'][_0xad0e('0x55')]+'%'};return _0x5e0a50;})});}_0x2fc643=_['merge']({},_0x2fc643,_0x48ebda['options']);return db[_0xad0e('0x80')][_0xad0e('0x20')]({'where':_0x2fc643[_0xad0e('0x51')]})['then'](function(_0x3df240){_0x2f3e88[_0xad0e('0x20')]=_0x3df240;if(_0x48ebda[_0xad0e('0x47')][_0xad0e('0x58')]){_0x2fc643[_0xad0e('0x59')]=[{'model':db[_0xad0e('0x84')],'as':_0xad0e('0x85'),'required':![]},{'model':db['User'],'as':_0xad0e('0x86'),'attributes':[_0xad0e('0x27'),'fullname',_0xad0e('0x87')],'required':![]},{'model':db[_0xad0e('0x88')],'as':_0xad0e('0x89'),'attributes':['id',_0xad0e('0x27'),'color'],'where':_0x48ebda[_0xad0e('0x47')][_0xad0e('0x8a')]?{'id':_0x48ebda[_0xad0e('0x47')]['tag']}:undefined,'required':_0x48ebda[_0xad0e('0x47')][_0xad0e('0x8a')]?!![]:![]}];}return db[_0xad0e('0x80')][_0xad0e('0x5a')](_0x2fc643);})[_0xad0e('0x10')](function(_0x38f703){_0x2f3e88[_0xad0e('0x68')]=_0x38f703;return _0x2f3e88;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x268207,_0x2fc643))[_0xad0e('0x19')](handleError(_0x268207,null));};exports['addApplications']=function addApplications(_0x1beb99,_0x43f07b){var _0x202a70=_0x1beb99['params']['id'];var _0x3e40a4=_0x1beb99[_0xad0e('0x60')];var _0x1e685c=0xc8;var _0x572cf5=null;return db[_0xad0e('0x8b')]['transaction']({'isolationLevel':db[_0xad0e('0x8b')]['Transaction'][_0xad0e('0x8c')]['READ_COMMITTED']},function(_0x39036f){return db['MailAccount']['findOne']({'where':{'id':_0x202a70},'transaction':_0x39036f})['then'](function(_0x9defcb){if(_0x9defcb){return db[_0xad0e('0x8d')][_0xad0e('0x23')]({'where':{'MailAccountId':_0x202a70},'transaction':_0x39036f})['then'](function(){var _0x7f0a9f=_[_0xad0e('0x41')](_0x3e40a4,function(_0x46170e){_0x46170e[_0xad0e('0x6d')]=_0x202a70;return _0x46170e;});return db['MailApplication'][_0xad0e('0x8e')](_0x7f0a9f,{'transaction':_0x39036f});});}else{_0x1e685c=0x194;_0x572cf5=[];}});})[_0xad0e('0x10')](function(){if(_0x1e685c!==0x194){return db[_0xad0e('0x8d')][_0xad0e('0x8f')]({'where':{'MailAccountId':_0x202a70},'order':_0xad0e('0x90')})[_0xad0e('0x10')](function(_0x3f9985){_0x572cf5=_0x3f9985;});}})['catch'](function(_0x3e8d4e){_0x1e685c=0x1f4;logger[_0xad0e('0x16')](_0x3e8d4e[_0xad0e('0x26')]);if(_0x3e8d4e['name']){delete _0x3e8d4e['name'];}_0x572cf5=_0x3e8d4e;})[_0xad0e('0x91')](function(){if(_0x572cf5===null){_0x43f07b['sendStatus'](_0x1e685c);}else{if(_0x1e685c===0x1f4){_0x43f07b[_0xad0e('0x1b')](_0x1e685c)[_0xad0e('0x92')](_0x572cf5);}else{_0x43f07b[_0xad0e('0x1b')](_0x1e685c)['json'](_0x572cf5);}}});};exports['getApplications']=function(_0x54489f,_0xb76aa){var _0x1154b1={};var _0x3ed1e7={};var _0x2841f1;var _0x5543bd;return db['MailAccount'][_0xad0e('0x65')]({'where':{'id':_0x54489f[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0xb76aa,null))[_0xad0e('0x10')](function(_0x28b47f){if(_0x28b47f){_0x2841f1=_0x28b47f;_0x3ed1e7[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x8d')][_0xad0e('0x42')]);_0x3ed1e7[_0xad0e('0x47')]=_['keys'](_0x54489f[_0xad0e('0x47')]);_0x3ed1e7[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x3ed1e7[_0xad0e('0x46')],_0x3ed1e7['query']);_0x1154b1[_0xad0e('0x4b')]=_[_0xad0e('0x4a')](_0x3ed1e7[_0xad0e('0x46')],qs['fields'](_0x54489f[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x1154b1[_0xad0e('0x4b')]=_0x1154b1[_0xad0e('0x4b')]['length']?_0x1154b1[_0xad0e('0x4b')]:_0x3ed1e7[_0xad0e('0x46')];_0x1154b1[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x54489f[_0xad0e('0x47')][_0xad0e('0x50')]);_0x1154b1[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_['pick'](_0x54489f[_0xad0e('0x47')],_0x3ed1e7[_0xad0e('0x49')]));if(_0x54489f[_0xad0e('0x47')]['filter']){_0x1154b1[_0xad0e('0x51')]=_['merge'](_0x1154b1['where'],{'$or':_['map'](_0x1154b1[_0xad0e('0x4b')],function(_0x2535f9){var _0x1efb25={};_0x1efb25[_0x2535f9]={'$like':'%'+_0x54489f[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x1efb25;})});}_0x1154b1=_[_0xad0e('0x53')]({},_0x1154b1,_0x54489f[_0xad0e('0x56')]);return _0x2841f1[_0xad0e('0x93')](_0x1154b1);}})[_0xad0e('0x10')](function(_0x1d839b){if(_0x1d839b){_0x5543bd=_0x1d839b['length'];if(!_0x54489f['query']['hasOwnProperty'](_0xad0e('0x67'))){_0x1154b1[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x54489f[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x1154b1['offset']=qs['offset'](_0x54489f[_0xad0e('0x47')][_0xad0e('0x1e')]);}return _0x2841f1[_0xad0e('0x93')](_0x1154b1);}})[_0xad0e('0x10')](function(_0x2faf6b){if(_0x2faf6b){return _0x2faf6b?{'count':_0x5543bd,'rows':_0x2faf6b}:null;}})[_0xad0e('0x10')](respondWithResult(_0xb76aa,null))[_0xad0e('0x19')](handleError(_0xb76aa,null));};exports[_0xad0e('0x94')]=function(_0x3cdc70,_0x5927ab){var _0x334933={'raw':!![],'where':{}};var _0x5d7392={};var _0x266e21={'count':0x0,'rows':[]};return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x3cdc70[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5927ab,null))['then'](function(_0x284f55){if(_0x284f55){_0x5d7392[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0x95')][_0xad0e('0x42')]);_0x5d7392[_0xad0e('0x47')]=_['keys'](_0x3cdc70[_0xad0e('0x47')]);_0x5d7392[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x5d7392[_0xad0e('0x46')],_0x5d7392['query']);_0x334933[_0xad0e('0x4b')]=_['intersection'](_0x5d7392[_0xad0e('0x46')],qs[_0xad0e('0x4c')](_0x3cdc70[_0xad0e('0x47')]['fields']));_0x334933[_0xad0e('0x4b')]=_0x334933['attributes'][_0xad0e('0x66')]?_0x334933[_0xad0e('0x4b')]:_0x5d7392[_0xad0e('0x46')];if(!_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x4d')](_0xad0e('0x67'))){_0x334933[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x4e')]);_0x334933[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x3cdc70[_0xad0e('0x47')]['offset']);}_0x334933[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x50')]);_0x334933[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x3cdc70[_0xad0e('0x47')],_0x5d7392['filters']));_0x334933[_0xad0e('0x51')][_0xad0e('0x6d')]=_0x284f55['id'];if(_0x3cdc70[_0xad0e('0x47')]['filter']){_0x334933['where']=_['merge'](_0x334933[_0xad0e('0x51')],{'$or':_['map'](_0x334933['attributes'],function(_0x4494db){var _0x552e53={};_0x552e53[_0x4494db]={'$like':'%'+_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x55')]+'%'};return _0x552e53;})});}if(_0x3cdc70[_0xad0e('0x47')]['$gte']){var _0x395055=_0x3cdc70['query']['$gte']['split'](',');var _0x50349f={};_0x50349f[_0x395055[0x0]]={'$gte':moment(_0x395055[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x334933[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x334933[_0xad0e('0x51')],_0x50349f);}_0x334933=_[_0xad0e('0x53')]({},_0x334933,_0x3cdc70[_0xad0e('0x56')]);return db[_0xad0e('0x95')][_0xad0e('0x20')]({'where':_0x334933[_0xad0e('0x51')]})[_0xad0e('0x10')](function(_0x320735){_0x266e21['count']=_0x320735;if(_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x58')]){_0x334933[_0xad0e('0x59')]=[{'all':!![]}];}return db[_0xad0e('0x95')][_0xad0e('0x5a')](_0x334933);})[_0xad0e('0x10')](function(_0x4f3620){if(_0x3cdc70[_0xad0e('0x47')][_0xad0e('0x96')]===_0xad0e('0x97')){for(var _0x210d21=0x0;_0x210d21<_0x4f3620[_0xad0e('0x66')];_0x210d21++){_0x4f3620[_0x210d21][_0xad0e('0x60')]=juice(_0x4f3620[_0x210d21][_0xad0e('0x60')]);}}_0x266e21['rows']=_0x4f3620;return _0x266e21;});}})[_0xad0e('0x10')](respondWithFilteredResult(_0x5927ab,_0x334933))[_0xad0e('0x19')](handleError(_0x5927ab,null));};exports[_0xad0e('0x92')]=function(_0x2c5b78,_0x621a0c){var _0x242569,_0x470b46={},_0x230d46;if(_0x2c5b78[_0xad0e('0x60')]['to']){_0x230d46=_0x2c5b78[_0xad0e('0x60')]['to'][_0xad0e('0x98')](',')[0x0];}return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x2c5b78[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x99')],'as':_0xad0e('0x9a'),'include':[{'model':db['CmContact'],'as':_0xad0e('0x9b'),'where':{'email':_0x230d46},'limit':0x1,'order':[[_0xad0e('0x9c'),_0xad0e('0x9d')]]}]},{'model':db[_0xad0e('0x5d')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xad0e('0x9e'),'raw':!![]}]}]})[_0xad0e('0x10')](handleEntityNotFound(_0x621a0c,null))[_0xad0e('0x10')](function(_0x3ad8db){if(!_0x3ad8db)return;_0x242569=_0x3ad8db;if(!_0x3ad8db[_0xad0e('0x3e')])throw new Error(_0xad0e('0x9f'));if(_[_0xad0e('0x72')](_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')])){_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')]=util[_0xad0e('0xa1')](_0xad0e('0xa2'),_0x3ad8db['name'],_0x3ad8db[_0xad0e('0x70')]||_0x3ad8db[_0xad0e('0x3e')][_0xad0e('0x32')]);}if(_0x2c5b78[_0xad0e('0x60')]['attachments']&&_0x2c5b78['body'][_0xad0e('0xa3')][_0xad0e('0x66')]){for(var _0x47510c=0x0;_0x47510c<_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0xad0e('0x66')];_0x47510c+=0x1){_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c]={'filename':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c]['name'],'path':path[_0xad0e('0xa4')](config[_0xad0e('0xa5')],_0xad0e('0xa6'),_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa3')][_0x47510c][_0xad0e('0xa7')])};}}var _0x4f1fe5=_0x3ad8db[_0xad0e('0xa8')]();return respondWithRpcPromise(_0xad0e('0xa9'),_0xad0e('0xaa'),{'account':_0x4f1fe5,'message':_0x2c5b78[_0xad0e('0x60')]});})[_0xad0e('0x10')](function(_0x4be0b4){if(!_0x4be0b4)return;_0x470b46=_0x4be0b4;if(!_0x242569['List'])throw new Error(_0xad0e('0xab'));if(_0x242569['List'][_0xad0e('0x9b')][_0xad0e('0x66')])return _0x242569[_0xad0e('0x9a')][_0xad0e('0x9b')][0x0];return db[_0xad0e('0x84')][_0xad0e('0x64')](_[_0xad0e('0xa')](_0x2c5b78[_0xad0e('0x60')],{'firstName':_0x2c5b78['body']['to'],'email':_0x2c5b78[_0xad0e('0x60')]['to'],'phone':_0x2c5b78[_0xad0e('0x60')]['to'],'ListId':_0x242569['ListId']}));})[_0xad0e('0x10')](function(_0x68bc35){if(!_0x68bc35)return;var _0x267d47={'UserId':_0x2c5b78['user']['id'],'ContactId':_0x68bc35['id'],'MailAccountId':_0x242569['id'],'inReplyTo':_0x470b46[_0xad0e('0xac')],'to':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xa0')],'cc':_0x2c5b78['body']['cc'],'subject':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xad')],'attach':_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xae')],'firstMsgDirection':_0xad0e('0xaf'),'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xad0e('0xaf'),'Messages':[_[_0xad0e('0x53')](_0x2c5b78[_0xad0e('0x60')],{'messageId':_0x470b46[_0xad0e('0xac')],'sentAt':moment()['format'](_0xad0e('0xb0')),'read':!![],'MailAccountId':_0x242569['id'],'UserId':_0x2c5b78[_0xad0e('0x32')]['id'],'ContactId':_0x68bc35['id']})]};if(_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xb1')]){_0x267d47=_[_0xad0e('0x53')](_0x267d47,_0x2c5b78[_0xad0e('0x60')][_0xad0e('0xb1')]);}return db[_0xad0e('0x80')][_0xad0e('0x64')](_0x267d47,{'include':[{'model':db[_0xad0e('0x95')],'as':_0xad0e('0xb2')}]});})[_0xad0e('0x10')](respondWithResult(_0x621a0c,null))[_0xad0e('0x19')](handleError(_0x621a0c,null));};exports[_0xad0e('0xb3')]=function(_0x4f9774,_0xafc6f9){return db[_0xad0e('0x57')]['find']({'where':{'id':_0x4f9774[_0xad0e('0x5c')]['id']},'include':[{'model':db[_0xad0e('0x5d')],'as':_0xad0e('0x3e'),'raw':!![],'include':[{'model':db[_0xad0e('0x9e')],'as':_0xad0e('0x9e'),'raw':!![]}]}]})[_0xad0e('0x10')](handleEntityNotFound(_0xafc6f9,null))[_0xad0e('0x10')](function(_0x2286c2){if(!_0x2286c2[_0xad0e('0x3e')])return;var _0x5188c5=_0x2286c2['getSmtpOptions']();return respondWithRpcPromise('VerifySmtp','verifySmtp',{'account':_0x5188c5});})[_0xad0e('0x10')](respondWithResult(_0xafc6f9,null))['catch'](handleError(_0xafc6f9,null));};exports[_0xad0e('0x23')]=function(_0x250681,_0x5aca24){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x250681[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x5aca24,null))['then'](function(_0x522d72){if(_0x522d72&&_0x522d72[_0xad0e('0x3b')]){throw new db[(_0xad0e('0xb4'))][(_0xad0e('0xb5'))](_0xad0e('0xb6'));}return _0x522d72;})[_0xad0e('0x10')](removeEntity(_0x5aca24,null))['catch'](handleError(_0x5aca24,null));};exports['addAgents']=function(_0x279e12,_0x46cc2b){return db[_0xad0e('0x57')][_0xad0e('0x5f')]({'where':{'id':_0x279e12[_0xad0e('0x5c')]['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x46cc2b,null))[_0xad0e('0x10')](function(_0x4b1a61){if(_0x4b1a61){return _0x4b1a61[_0xad0e('0xb7')](_0x279e12[_0xad0e('0x60')][_0xad0e('0x6a')],_[_0xad0e('0x82')](_0x279e12[_0xad0e('0x60')],[_0xad0e('0x6a'),'id'])||{})[_0xad0e('0xb8')](function(_0x5562cd){for(var _0x3fb250=0x0;_0x3fb250<_0x279e12[_0xad0e('0x60')]['ids'][_0xad0e('0x66')];_0x3fb250+=0x1){socket[_0xad0e('0xb9')]('userMailAccount:save',{'UserId':Number(_0x279e12['body']['ids'][_0x3fb250]),'MailAccountId':Number(_0x279e12[_0xad0e('0x5c')]['id'])});}return _0x5562cd;});}})['then'](respondWithResult(_0x46cc2b,null))[_0xad0e('0x19')](handleError(_0x46cc2b,null));};exports[_0xad0e('0xba')]=function(_0x46f16,_0x205919){return db[_0xad0e('0x57')]['find']({'where':{'id':_0x46f16['params']['id']}})[_0xad0e('0x10')](handleEntityNotFound(_0x205919,null))['then'](function(_0x3e40a8){if(_0x3e40a8){return _0x3e40a8[_0xad0e('0xba')](_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')])[_0xad0e('0x10')](function(){if(_[_0xad0e('0xbb')](_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')])){for(var _0x9d1a35=0x0;_0x9d1a35<_0x46f16[_0xad0e('0x47')][_0xad0e('0x6a')][_0xad0e('0x66')];_0x9d1a35+=0x1){socket[_0xad0e('0xb9')](_0xad0e('0xbc'),{'UserId':Number(_0x46f16['query'][_0xad0e('0x6a')][_0x9d1a35]),'MailAccountId':Number(_0x46f16[_0xad0e('0x5c')]['id'])});}}else{socket[_0xad0e('0xb9')](_0xad0e('0xbc'),{'UserId':Number(_0x46f16['query'][_0xad0e('0x6a')]),'MailAccountId':Number(_0x46f16[_0xad0e('0x5c')]['id'])});}});}})[_0xad0e('0x10')](respondWithStatusCode(_0x205919,null))[_0xad0e('0x19')](handleError(_0x205919,null));};exports['getAgents']=function(_0x317c3e,_0x2ebe08){var _0x489c88={};var _0x10442e={};var _0x413e14;var _0x2e2484;return db[_0xad0e('0x57')][_0xad0e('0x65')]({'where':{'id':_0x317c3e[_0xad0e('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2ebe08,null))['then'](function(_0x3a96f0){if(_0x3a96f0){_0x413e14=_0x3a96f0;_0x10442e[_0xad0e('0x46')]=_[_0xad0e('0x48')](db[_0xad0e('0xbd')][_0xad0e('0x42')]);_0x10442e[_0xad0e('0x47')]=_[_0xad0e('0x48')](_0x317c3e[_0xad0e('0x47')]);_0x10442e[_0xad0e('0x49')]=_[_0xad0e('0x4a')](_0x10442e[_0xad0e('0x46')],_0x10442e[_0xad0e('0x47')]);_0x489c88['attributes']=_[_0xad0e('0x4a')](_0x10442e[_0xad0e('0x46')],qs['fields'](_0x317c3e[_0xad0e('0x47')][_0xad0e('0x4c')]));_0x489c88[_0xad0e('0x4b')]=_0x489c88['attributes'][_0xad0e('0x66')]?_0x489c88[_0xad0e('0x4b')]:_0x10442e[_0xad0e('0x46')];_0x489c88[_0xad0e('0x4f')]=qs[_0xad0e('0x50')](_0x317c3e['query']['sort']);_0x489c88[_0xad0e('0x51')]=qs[_0xad0e('0x49')](_[_0xad0e('0x52')](_0x317c3e['query'],_0x10442e[_0xad0e('0x49')]));if(_0x317c3e[_0xad0e('0x47')][_0xad0e('0x55')]){_0x489c88[_0xad0e('0x51')]=_[_0xad0e('0x53')](_0x489c88['where'],{'$or':_[_0xad0e('0x41')](_0x489c88[_0xad0e('0x4b')],function(_0x25f7cb){var _0x39b1cf={};_0x39b1cf[_0x25f7cb]={'$like':'%'+_0x317c3e['query'][_0xad0e('0x55')]+'%'};return _0x39b1cf;})});}_0x489c88=_[_0xad0e('0x53')]({},_0x489c88,_0x317c3e['options']);return _0x413e14['getAgents'](_0x489c88);}})[_0xad0e('0x10')](function(_0x5e6208){if(_0x5e6208){_0x2e2484=_0x5e6208['length'];if(!_0x317c3e['query']['hasOwnProperty'](_0xad0e('0x67'))){_0x489c88[_0xad0e('0x4e')]=qs[_0xad0e('0x4e')](_0x317c3e[_0xad0e('0x47')]['limit']);_0x489c88[_0xad0e('0x1e')]=qs[_0xad0e('0x1e')](_0x317c3e['query']['offset']);}return _0x413e14[_0xad0e('0xbe')](_0x489c88);}})[_0xad0e('0x10')](function(_0x4b722d){if(_0x4b722d){return _0x4b722d?{'count':_0x2e2484,'rows':_0x4b722d}:null;}})[_0xad0e('0x10')](respondWithResult(_0x2ebe08,null))[_0xad0e('0x19')](handleError(_0x2ebe08,null));};
\ No newline at end of file
+var _0x7aef=['findAll','removeAnswers','ids','email','ListId','isNil','active','description','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','MailInteraction','getInteractions','options','CmContact','Contact','User','Owner','Tag','Tags','color','tag','addApplications','sequelize','Transaction','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','$gte','format','MailMessage','inlineCss','true','split','CmList','List','Contacts','updatedAt','DESC','CloudProvider','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','SendMail','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','verifySmtp','getSmtpOptions','VerifySmtp','Sequelize','ValidationError','addAgents','omit','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','moment','bluebird','util','path','lodash','juice','../../config/logger','api','../../config/environment','../../mysqldb','redis','./mailAccount.socket','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','MailAccounts','UserProfileResource','end','stack','send','gmail','imap.gmail.com','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','yahoo','smtp-mail.outlook.com','user','username','password','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','index','MailServerIn','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','key','name','query','keys','filters','intersection','attributes','model','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','includeAll','include','rows','show','params','MailServerOut','find','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','Disposition','getDispositions','findOne','hasOwnProperty','order','MailAccountId','filter','removeDispositions','addAnswer','CannedAnswer','create'];(function(_0x417e4a,_0x70098e){var _0x2a30b8=function(_0x39d1a5){while(--_0x39d1a5){_0x417e4a['push'](_0x417e4a['shift']());}};_0x2a30b8(++_0x70098e);}(_0x7aef,0x110));var _0xf7ae=function(_0x5bcd20,_0x4d1321){_0x5bcd20=_0x5bcd20-0x0;var _0x209a4a=_0x7aef[_0x5bcd20];return _0x209a4a;};'use strict';var moment=require(_0xf7ae('0x0'));var BPromise=require(_0xf7ae('0x1'));var util=require(_0xf7ae('0x2'));var path=require(_0xf7ae('0x3'));var _=require(_0xf7ae('0x4'));var juice=require(_0xf7ae('0x5'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xf7ae('0x6'))(_0xf7ae('0x7'));var config=require(_0xf7ae('0x8'));var db=require(_0xf7ae('0x9'))['db'];config[_0xf7ae('0xa')]=_['defaults'](config[_0xf7ae('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf7ae('0xa')]));require(_0xf7ae('0xb'))['register'](socket);var jayson=require(_0xf7ae('0xc'));var client=jayson[_0xf7ae('0xd')][_0xf7ae('0xe')]({'port':0x232b});function respondWithRpcPromise(_0x8dbdd4,_0x18374f,_0x5966b9,_0xb2a498){return new BPromise(function(_0x282b60,_0x23acfb){var _0x3d3915=_0xb2a498||client;return _0x3d3915[_0xf7ae('0xf')](_0x8dbdd4,_0x5966b9)['then'](function(_0x13a22b){logger[_0xf7ae('0x10')](_0xf7ae('0x11'),_0x18374f,_0xf7ae('0x12'));logger['debug'](_0xf7ae('0x13'),_0x18374f,_0xf7ae('0x12'),JSON['stringify'](_0x13a22b));if(_0x13a22b[_0xf7ae('0x14')]){if(_0x13a22b['error']['code']===0x1f4){logger[_0xf7ae('0x14')](_0xf7ae('0x11'),_0x18374f,_0x13a22b[_0xf7ae('0x14')][_0xf7ae('0x15')]);return _0x23acfb(_0x13a22b[_0xf7ae('0x14')][_0xf7ae('0x15')]);}logger['error'](_0xf7ae('0x11'),_0x18374f,_0x13a22b[_0xf7ae('0x14')]['message']);return _0x282b60(_0x13a22b[_0xf7ae('0x14')]['message']);}else{logger[_0xf7ae('0x10')](_0xf7ae('0x11'),_0x18374f,_0xf7ae('0x12'));_0x282b60(_0x13a22b['result'][_0xf7ae('0x15')]);}})[_0xf7ae('0x16')](function(_0x130d71){logger['error'](_0xf7ae('0x11'),_0x18374f,_0x130d71);_0x23acfb(_0x130d71);});});}function respondWithStatusCode(_0x54a4ed,_0x46c41a){_0x46c41a=_0x46c41a||0xcc;return function(_0xe3b8b5){if(_0xe3b8b5){return _0x54a4ed[_0xf7ae('0x17')](_0x46c41a);}return _0x54a4ed['status'](_0x46c41a)['end']();};}function respondWithResult(_0x3a05d3,_0x1865c6){_0x1865c6=_0x1865c6||0xc8;return function(_0x1e7927){if(_0x1e7927){return _0x3a05d3[_0xf7ae('0x18')](_0x1865c6)[_0xf7ae('0x19')](_0x1e7927);}};}function respondWithFilteredResult(_0x5bbe76,_0x4cca93){return function(_0xf209b2){if(_0xf209b2){var _0x267fbb=typeof _0x4cca93['offset']===_0xf7ae('0x1a')&&typeof _0x4cca93[_0xf7ae('0x1b')]===_0xf7ae('0x1a');var _0x502e71=_0xf209b2[_0xf7ae('0x1c')];var _0x58b4e9=_0x267fbb?0x0:_0x4cca93['offset'];var _0x114a45=_0x267fbb?_0xf209b2[_0xf7ae('0x1c')]:_0x4cca93[_0xf7ae('0x1d')]+_0x4cca93['limit'];var _0x5d6aad;if(_0x114a45>=_0x502e71){_0x114a45=_0x502e71;_0x5d6aad=0xc8;}else{_0x5d6aad=0xce;}_0x5bbe76[_0xf7ae('0x18')](_0x5d6aad);return _0x5bbe76[_0xf7ae('0x1e')](_0xf7ae('0x1f'),_0x58b4e9+'-'+_0x114a45+'/'+_0x502e71)[_0xf7ae('0x19')](_0xf209b2);}return null;};}function saveUpdates(_0x43950c){return function(_0x1321c7){if(_0x1321c7){return _0x1321c7[_0xf7ae('0x20')](_0x43950c)[_0xf7ae('0x21')](function(_0x68e83a){return _0x68e83a;});}return null;};}function removeEntity(_0x2074f0){return function(_0x23e62b){if(_0x23e62b){return _0x23e62b[_0xf7ae('0x22')]()['then'](function(){var _0x63debb=_0x23e62b['get']({'plain':!![]});var _0x4a9810=_0xf7ae('0x23');return db[_0xf7ae('0x24')][_0xf7ae('0x22')]({'where':{'type':_0x4a9810,'resourceId':_0x63debb['id']}})[_0xf7ae('0x21')](function(){return _0x23e62b;});})[_0xf7ae('0x21')](function(){_0x2074f0['status'](0xcc)[_0xf7ae('0x25')]();});}};}function handleEntityNotFound(_0x441681){return function(_0x47df14){if(!_0x47df14){_0x441681[_0xf7ae('0x17')](0x194);}return _0x47df14;};}function handleError(_0x37fa2e,_0x4e9709){_0x4e9709=_0x4e9709||0x1f4;return function(_0x1c1efe){logger[_0xf7ae('0x14')](_0x1c1efe[_0xf7ae('0x26')]);if(_0x1c1efe['name']){delete _0x1c1efe['name'];}_0x37fa2e[_0xf7ae('0x18')](_0x4e9709)[_0xf7ae('0x27')](_0x1c1efe);};}function getImapHost(_0x532986){switch(_0x532986){case _0xf7ae('0x28'):return _0xf7ae('0x29');case'yahoo':return'imap.mail.yahoo.com';case _0xf7ae('0x2a'):return'imap-mail.outlook.com';case _0xf7ae('0x2b'):return _0xf7ae('0x2c');}throw new Error(_0xf7ae('0x2d'),_0x532986);}function getSmtpHost(_0x584432){switch(_0x584432){case _0xf7ae('0x28'):return _0xf7ae('0x2e');case _0xf7ae('0x2f'):return'smtp.mail.yahoo.com';case _0xf7ae('0x2a'):return _0xf7ae('0x30');case'outlook365':return'smtp.office365.com';}throw new Error(_0xf7ae('0x2d'),_0x584432);}function getAuthenticationOptions(_0x5ebf70,_0x784998){var _0x37ff4f={};var _0x78cb3e={};if(_0x5ebf70){_0x37ff4f[_0xf7ae('0x31')]=_0x78cb3e[_0xf7ae('0x31')]=_0x784998[_0xf7ae('0x32')];_0x37ff4f['password']=_0x78cb3e['pass']=_0x784998[_0xf7ae('0x33')];if(_0x784998[_0xf7ae('0x34')]){_0x37ff4f[_0xf7ae('0x34')]=_0x78cb3e['modernAuthentication']=!![];_0x37ff4f[_0xf7ae('0x35')]=_0x78cb3e[_0xf7ae('0x35')]=_0x784998['CloudProviderId'];_0x37ff4f['password']=_0x78cb3e['pass']=null;}else{_0x37ff4f[_0xf7ae('0x35')]=_0x78cb3e['CloudProviderId']=null;}_0x37ff4f['host']=getImapHost(_0x5ebf70);_0x37ff4f[_0xf7ae('0x36')]=0x3e1;_0x78cb3e[_0xf7ae('0x37')]=getSmtpHost(_0x5ebf70);_0x78cb3e[_0xf7ae('0x36')]=0x24b;_0x78cb3e[_0xf7ae('0x38')]=![];_0x37ff4f[_0xf7ae('0x39')]=_0x78cb3e[_0xf7ae('0x39')]=null;}else{if(_0x784998[_0xf7ae('0x3a')]){_0x37ff4f['user']=_0x78cb3e[_0xf7ae('0x31')]=_0x784998['username'];_0x37ff4f['password']=_0x78cb3e['pass']=_0x784998[_0xf7ae('0x33')];}else{_0x37ff4f[_0xf7ae('0x3a')]=_0x78cb3e[_0xf7ae('0x3a')]=![];_0x37ff4f[_0xf7ae('0x31')]=_0x78cb3e[_0xf7ae('0x31')]=null;_0x37ff4f[_0xf7ae('0x33')]=_0x78cb3e['pass']=null;}_0x37ff4f[_0xf7ae('0x37')]=_0x784998['Imap'][_0xf7ae('0x37')];_0x37ff4f['port']=_0x784998[_0xf7ae('0x3b')]['port'];_0x78cb3e[_0xf7ae('0x37')]=_0x784998[_0xf7ae('0x3c')][_0xf7ae('0x37')];_0x78cb3e['port']=_0x784998[_0xf7ae('0x3c')][_0xf7ae('0x36')];}return{'Imap':_0x37ff4f,'Smtp':_0x78cb3e};}exports[_0xf7ae('0x3d')]=function(_0x46d7d5,_0x1ec0eb){var _0x33a453={'include':[{'model':db[_0xf7ae('0x3e')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0xf7ae('0x3c')},{'model':db[_0xf7ae('0x3f')],'as':_0xf7ae('0x40')}]},_0x315b25={},_0xc060ff={'count':0x0,'rows':[]};var _0x2342f3=_[_0xf7ae('0x41')](db[_0xf7ae('0x42')][_0xf7ae('0x43')],function(_0x57f4ff){return{'name':_0x57f4ff[_0xf7ae('0x44')],'type':_0x57f4ff['type'][_0xf7ae('0x45')]};});_0x315b25['model']=_[_0xf7ae('0x41')](_0x2342f3,_0xf7ae('0x46'));_0x315b25[_0xf7ae('0x47')]=_[_0xf7ae('0x48')](_0x46d7d5[_0xf7ae('0x47')]);_0x315b25[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x315b25['model'],_0x315b25['query']);_0x33a453[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x315b25[_0xf7ae('0x4c')],qs[_0xf7ae('0x4d')](_0x46d7d5[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x33a453[_0xf7ae('0x4b')]=_0x33a453[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x33a453['attributes']:_0x315b25['model'];if(!_0x46d7d5['query']['hasOwnProperty'](_0xf7ae('0x4f'))){_0x33a453[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x46d7d5[_0xf7ae('0x47')][_0xf7ae('0x1b')]);_0x33a453[_0xf7ae('0x1d')]=qs[_0xf7ae('0x1d')](_0x46d7d5[_0xf7ae('0x47')][_0xf7ae('0x1d')]);}_0x33a453['order']=qs[_0xf7ae('0x50')](_0x46d7d5[_0xf7ae('0x47')][_0xf7ae('0x50')]);_0x33a453[_0xf7ae('0x51')]=qs[_0xf7ae('0x49')](_[_0xf7ae('0x52')](_0x46d7d5['query'],_0x315b25['filters']),_0x2342f3);if(_0x46d7d5[_0xf7ae('0x47')]['filter']){_0x33a453['where']=_[_0xf7ae('0x53')](_0x33a453[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x2342f3,function(_0x4129b0){if(_0x4129b0[_0xf7ae('0x54')]!==_0xf7ae('0x55')){var _0x2b1ed9={};_0x2b1ed9[_0x4129b0[_0xf7ae('0x46')]]={'$like':'%'+_0x46d7d5[_0xf7ae('0x47')]['filter']+'%'};return _0x2b1ed9;}})});}_0x33a453=_[_0xf7ae('0x53')]({},_0x33a453,_0x46d7d5['options']);var _0x345635={'where':_0x33a453[_0xf7ae('0x51')]};return db[_0xf7ae('0x42')][_0xf7ae('0x1c')](_0x345635)[_0xf7ae('0x21')](function(_0xd60679){_0xc060ff[_0xf7ae('0x1c')]=_0xd60679;if(_0x46d7d5[_0xf7ae('0x47')][_0xf7ae('0x56')]){_0x33a453[_0xf7ae('0x57')]=[{'all':!![]}];}return db[_0xf7ae('0x42')]['findAll'](_0x33a453);})[_0xf7ae('0x21')](function(_0xc18135){_0xc060ff[_0xf7ae('0x58')]=_0xc18135;return _0xc060ff;})[_0xf7ae('0x21')](respondWithFilteredResult(_0x1ec0eb,_0x33a453))[_0xf7ae('0x16')](handleError(_0x1ec0eb,null));};exports[_0xf7ae('0x59')]=function(_0x229527,_0x31b96c){var _0x4dc450={'raw':![],'where':{'id':_0x229527[_0xf7ae('0x5a')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xf7ae('0x3b')},{'model':db[_0xf7ae('0x5b')],'as':_0xf7ae('0x3c')},{'model':db[_0xf7ae('0x3f')],'as':'mandatoryDispositionPause'}]},_0x32d51e={};_0x32d51e['model']=_[_0xf7ae('0x48')](db[_0xf7ae('0x42')][_0xf7ae('0x43')]);_0x32d51e[_0xf7ae('0x47')]=_[_0xf7ae('0x48')](_0x229527[_0xf7ae('0x47')]);_0x32d51e[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x32d51e[_0xf7ae('0x4c')],_0x32d51e[_0xf7ae('0x47')]);_0x4dc450[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x32d51e['model'],qs[_0xf7ae('0x4d')](_0x229527[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x4dc450['attributes']=_0x4dc450[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x4dc450[_0xf7ae('0x4b')]:_0x32d51e['model'];if(_0x229527[_0xf7ae('0x47')]['includeAll']){_0x4dc450[_0xf7ae('0x57')]=[{'all':!![]}];}_0x4dc450=_[_0xf7ae('0x53')]({},_0x4dc450,_0x229527['options']);return db[_0xf7ae('0x42')][_0xf7ae('0x5c')](_0x4dc450)[_0xf7ae('0x21')](handleEntityNotFound(_0x31b96c,null))[_0xf7ae('0x21')](respondWithResult(_0x31b96c,null))[_0xf7ae('0x16')](handleError(_0x31b96c,null));};exports[_0xf7ae('0x20')]=function(_0x4a81f2,_0x2afb46){if(_0x4a81f2['body']['id']){delete _0x4a81f2[_0xf7ae('0x5d')]['id'];}var _0x128d83=_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x5e')]===_0xf7ae('0x5f')?null:_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x5e')];var _0xfa9c7c=_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x3b')]||{};var _0x3ae147=_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x3c')]||{};if(_0x128d83){_0xfa9c7c[_0xf7ae('0x37')]=getImapHost(_0x128d83);_0xfa9c7c[_0xf7ae('0x36')]=0x3e1;_0x3ae147[_0xf7ae('0x37')]=getSmtpHost(_0x128d83);_0x3ae147[_0xf7ae('0x36')]=0x24b;_0x3ae147['secure']=![];}if(_0x3ae147['modernAuthentication']){_0x3ae147['secure']=![];}else{_0x3ae147[_0xf7ae('0x35')]=null;}if(!_0xfa9c7c['modernAuthentication'])_0xfa9c7c['CloudProviderId']=null;_0x4a81f2['body'][_0xf7ae('0x3b')]=_0xfa9c7c;_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x3c')]=_0x3ae147;return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x4a81f2[_0xf7ae('0x5a')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xf7ae('0x3b')},{'model':db[_0xf7ae('0x5b')],'as':_0xf7ae('0x3c')},{'model':db['Pause'],'as':_0xf7ae('0x40')}]})['then'](handleEntityNotFound(_0x2afb46,null))['then'](function(_0x442a78){if(!_0x442a78)throw new Error(_0xf7ae('0x60'));if(_0x442a78['service'])delete _0x4a81f2[_0xf7ae('0x5d')]['Imap'];return _0x442a78;})['then'](saveUpdates(_0x4a81f2[_0xf7ae('0x5d')],null))[_0xf7ae('0x21')](function(_0x451a96){if(!_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x3b')])return _0x451a96;return db[_0xf7ae('0x3e')][_0xf7ae('0x20')](_0x4a81f2[_0xf7ae('0x5d')][_0xf7ae('0x3b')],{'where':{'MailAccountId':_0x451a96['id']}})[_0xf7ae('0x21')](function(){return _0x451a96;});})['then'](function(_0x7f5720){if(!_0x4a81f2['body'][_0xf7ae('0x3c')])return _0x7f5720;return db['MailServerOut']['update'](_0x4a81f2[_0xf7ae('0x5d')]['Smtp'],{'where':{'MailAccountId':_0x7f5720['id']}})[_0xf7ae('0x21')](function(){return _0x7f5720;});})[_0xf7ae('0x21')](respondWithResult(_0x2afb46,null))[_0xf7ae('0x16')](handleError(_0x2afb46,null));};exports[_0xf7ae('0x61')]=function(_0x56e323,_0x3302ce){return db[_0xf7ae('0x42')][_0xf7ae('0x61')]()['then'](respondWithResult(_0x3302ce,null))['catch'](handleError(_0x3302ce,null));};exports[_0xf7ae('0x62')]=function(_0x8c009c,_0x25cc5e){if(_0x8c009c[_0xf7ae('0x5d')]['id']){delete _0x8c009c[_0xf7ae('0x5d')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x8c009c[_0xf7ae('0x5a')]['id']}})['then'](handleEntityNotFound(_0x25cc5e,null))[_0xf7ae('0x21')](function(_0x205c36){if(_0x205c36){_0x8c009c[_0xf7ae('0x5d')]['MailAccountId']=_0x205c36['id'];return db[_0xf7ae('0x63')]['create'](_0x8c009c[_0xf7ae('0x5d')]);}})[_0xf7ae('0x21')](respondWithResult(_0x25cc5e,null))[_0xf7ae('0x16')](handleError(_0x25cc5e,null));};exports[_0xf7ae('0x64')]=function(_0x5e30b3,_0x5e6a93){var _0x38c3f0={'raw':![],'where':{}};var _0x3ce7e2={};var _0x17443a={'count':0x0,'rows':[]};return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x5e30b3[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x5e6a93,null))[_0xf7ae('0x21')](function(_0x4b0938){if(_0x4b0938){_0x3ce7e2[_0xf7ae('0x4c')]=_['keys'](db[_0xf7ae('0x63')][_0xf7ae('0x43')]);_0x3ce7e2[_0xf7ae('0x47')]=_[_0xf7ae('0x48')](_0x5e30b3[_0xf7ae('0x47')]);_0x3ce7e2[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x3ce7e2[_0xf7ae('0x4c')],_0x3ce7e2[_0xf7ae('0x47')]);_0x38c3f0[_0xf7ae('0x4b')]=_['intersection'](_0x3ce7e2[_0xf7ae('0x4c')],qs[_0xf7ae('0x4d')](_0x5e30b3[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x38c3f0[_0xf7ae('0x4b')]=_0x38c3f0[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x38c3f0[_0xf7ae('0x4b')]:_0x3ce7e2[_0xf7ae('0x4c')];if(!_0x5e30b3['query'][_0xf7ae('0x66')]('nolimit')){_0x38c3f0[_0xf7ae('0x1b')]=qs['limit'](_0x5e30b3[_0xf7ae('0x47')][_0xf7ae('0x1b')]);_0x38c3f0[_0xf7ae('0x1d')]=qs[_0xf7ae('0x1d')](_0x5e30b3[_0xf7ae('0x47')]['offset']);}_0x38c3f0[_0xf7ae('0x67')]=qs[_0xf7ae('0x50')](_0x5e30b3[_0xf7ae('0x47')][_0xf7ae('0x50')]);_0x38c3f0[_0xf7ae('0x51')]=qs['filters'](_[_0xf7ae('0x52')](_0x5e30b3['query'],_0x3ce7e2[_0xf7ae('0x49')]));_0x38c3f0['where'][_0xf7ae('0x68')]=_0x4b0938['id'];if(_0x5e30b3['query'][_0xf7ae('0x69')]){_0x38c3f0[_0xf7ae('0x51')]=_[_0xf7ae('0x53')](_0x38c3f0[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x38c3f0[_0xf7ae('0x4b')],function(_0x42c23c){var _0x3d70bf={};_0x3d70bf[_0x42c23c]={'$like':'%'+_0x5e30b3[_0xf7ae('0x47')][_0xf7ae('0x69')]+'%'};return _0x3d70bf;})});}_0x38c3f0=_[_0xf7ae('0x53')]({},_0x38c3f0,_0x5e30b3['options']);return db[_0xf7ae('0x63')][_0xf7ae('0x1c')]({'where':_0x38c3f0[_0xf7ae('0x51')]})['then'](function(_0x1cd0df){_0x17443a[_0xf7ae('0x1c')]=_0x1cd0df;if(_0x5e30b3['query'][_0xf7ae('0x56')]){_0x38c3f0[_0xf7ae('0x57')]=[{'all':!![]}];}return db[_0xf7ae('0x63')]['findAll'](_0x38c3f0);})[_0xf7ae('0x21')](function(_0x234444){_0x17443a[_0xf7ae('0x58')]=_0x234444;return _0x17443a;});}})[_0xf7ae('0x21')](respondWithFilteredResult(_0x5e6a93,_0x38c3f0))[_0xf7ae('0x16')](handleError(_0x5e6a93,null));};exports[_0xf7ae('0x6a')]=function(_0x34323a,_0x5bb6f0){return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x34323a[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x5bb6f0,null))[_0xf7ae('0x21')](function(_0x2f9f16){if(_0x2f9f16){return _0x2f9f16['removeDispositions'](_0x34323a['query']['ids']);}})['then'](respondWithStatusCode(_0x5bb6f0,null))[_0xf7ae('0x16')](handleError(_0x5bb6f0,null));};exports[_0xf7ae('0x6b')]=function(_0x8d6b80,_0x28917f){if(_0x8d6b80[_0xf7ae('0x5d')]['id']){delete _0x8d6b80['body']['id'];}return db['MailAccount'][_0xf7ae('0x5c')]({'where':{'id':_0x8d6b80['params']['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x28917f,null))['then'](function(_0x305c84){if(_0x305c84){_0x8d6b80[_0xf7ae('0x5d')][_0xf7ae('0x68')]=_0x305c84['id'];return db[_0xf7ae('0x6c')][_0xf7ae('0x6d')](_0x8d6b80['body']);}})['then'](respondWithResult(_0x28917f,null))[_0xf7ae('0x16')](handleError(_0x28917f,null));};exports['getAnswers']=function(_0x1c6fa9,_0x5b297a){var _0x3ed3af={'raw':![],'where':{}};var _0x5197e8={};var _0x56cae3={'count':0x0,'rows':[]};return db[_0xf7ae('0x42')]['findOne']({'where':{'id':_0x1c6fa9[_0xf7ae('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5b297a,null))[_0xf7ae('0x21')](function(_0x27edc0){if(_0x27edc0){_0x5197e8[_0xf7ae('0x4c')]=_[_0xf7ae('0x48')](db[_0xf7ae('0x6c')]['rawAttributes']);_0x5197e8['query']=_['keys'](_0x1c6fa9[_0xf7ae('0x47')]);_0x5197e8[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x5197e8[_0xf7ae('0x4c')],_0x5197e8[_0xf7ae('0x47')]);_0x3ed3af[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x5197e8['model'],qs['fields'](_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x3ed3af[_0xf7ae('0x4b')]=_0x3ed3af[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x3ed3af[_0xf7ae('0x4b')]:_0x5197e8[_0xf7ae('0x4c')];if(!_0x1c6fa9[_0xf7ae('0x47')]['hasOwnProperty'](_0xf7ae('0x4f'))){_0x3ed3af[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x1b')]);_0x3ed3af['offset']=qs[_0xf7ae('0x1d')](_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x1d')]);}_0x3ed3af[_0xf7ae('0x67')]=qs[_0xf7ae('0x50')](_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x50')]);_0x3ed3af['where']=qs[_0xf7ae('0x49')](_[_0xf7ae('0x52')](_0x1c6fa9[_0xf7ae('0x47')],_0x5197e8[_0xf7ae('0x49')]));_0x3ed3af['where']['MailAccountId']=_0x27edc0['id'];if(_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x69')]){_0x3ed3af[_0xf7ae('0x51')]=_[_0xf7ae('0x53')](_0x3ed3af[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x3ed3af[_0xf7ae('0x4b')],function(_0x57018b){var _0x13b779={};_0x13b779[_0x57018b]={'$like':'%'+_0x1c6fa9['query'][_0xf7ae('0x69')]+'%'};return _0x13b779;})});}_0x3ed3af=_[_0xf7ae('0x53')]({},_0x3ed3af,_0x1c6fa9['options']);return db[_0xf7ae('0x6c')][_0xf7ae('0x1c')]({'where':_0x3ed3af[_0xf7ae('0x51')]})[_0xf7ae('0x21')](function(_0x3b81d7){_0x56cae3[_0xf7ae('0x1c')]=_0x3b81d7;if(_0x1c6fa9[_0xf7ae('0x47')][_0xf7ae('0x56')]){_0x3ed3af[_0xf7ae('0x57')]=[{'all':!![]}];}return db[_0xf7ae('0x6c')][_0xf7ae('0x6e')](_0x3ed3af);})[_0xf7ae('0x21')](function(_0x400eba){_0x56cae3[_0xf7ae('0x58')]=_0x400eba;return _0x56cae3;});}})[_0xf7ae('0x21')](respondWithFilteredResult(_0x5b297a,_0x3ed3af))[_0xf7ae('0x16')](handleError(_0x5b297a,null));};exports[_0xf7ae('0x6f')]=function(_0x3d5961,_0x1db398){return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x3d5961['params']['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x1db398,null))[_0xf7ae('0x21')](function(_0x143a05){if(_0x143a05){return _0x143a05[_0xf7ae('0x6f')](_0x3d5961['query'][_0xf7ae('0x70')]);}})[_0xf7ae('0x21')](respondWithStatusCode(_0x1db398,null))[_0xf7ae('0x16')](handleError(_0x1db398,null));};exports[_0xf7ae('0x6d')]=function(_0x54ff73,_0x4bcc70){var _0x52ddcc={'name':_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x46')],'key':_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x45')],'provider':_0x54ff73['body'][_0xf7ae('0x5e')]==='custom'?null:_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x5e')],'email':_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x71')],'ListId':_0x54ff73['body'][_0xf7ae('0x72')],'active':!_[_0xf7ae('0x73')](_0x54ff73[_0xf7ae('0x5d')]['active'])?_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x74')]:!![],'description':_0x54ff73[_0xf7ae('0x5d')][_0xf7ae('0x75')]||null};var _0x51f6cd=getAuthenticationOptions(_0x52ddcc['provider'],_0x54ff73[_0xf7ae('0x5d')]);_0x52ddcc[_0xf7ae('0x3b')]=_0x51f6cd[_0xf7ae('0x3b')];_0x52ddcc[_0xf7ae('0x3c')]=_0x51f6cd[_0xf7ae('0x3c')];return db[_0xf7ae('0x42')][_0xf7ae('0x6d')](_0x52ddcc,{'include':[{'model':db[_0xf7ae('0x5b')],'as':_0xf7ae('0x3c')},{'model':db[_0xf7ae('0x3e')],'as':'Imap'}]})[_0xf7ae('0x21')](function(_0x17c68c){var _0x2494cf=_0x54ff73['user'][_0xf7ae('0x76')]({'plain':!![]});if(!_0x2494cf)throw new Error(_0xf7ae('0x77'));if(_0x2494cf[_0xf7ae('0x78')]===_0xf7ae('0x31')){var _0x5b4357=_0x17c68c[_0xf7ae('0x76')]({'plain':!![]});return db[_0xf7ae('0x79')][_0xf7ae('0x5c')]({'where':{'name':_0xf7ae('0x23'),'userProfileId':_0x2494cf[_0xf7ae('0x7a')]},'raw':!![]})[_0xf7ae('0x21')](function(_0x53c6dc){if(_0x53c6dc&&_0x53c6dc['autoAssociation']===0x0){return db['UserProfileResource'][_0xf7ae('0x6d')]({'name':_0x5b4357[_0xf7ae('0x46')],'resourceId':_0x5b4357['id'],'type':_0x53c6dc['name'],'sectionId':_0x53c6dc['id']},{})[_0xf7ae('0x21')](function(){return _0x17c68c;});}else{return _0x17c68c;}})['catch'](function(_0x53fdbf){logger['error'](_0xf7ae('0x7b'),_0x53fdbf);throw _0x53fdbf;});}return _0x17c68c;})[_0xf7ae('0x21')](respondWithResult(_0x4bcc70,0xc9))['catch'](handleError(_0x4bcc70,null));};exports[_0xf7ae('0x7c')]=function(_0x588a0a,_0x29aa5f){return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x588a0a[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x29aa5f,null))[_0xf7ae('0x21')](function(_0x47b79a){if(_0x47b79a){return _0x47b79a[_0xf7ae('0x7c')]();}return null;})[_0xf7ae('0x21')](respondWithResult(_0x29aa5f,null))[_0xf7ae('0x16')](handleError(_0x29aa5f,null));};exports['addImap']=function(_0x149809,_0x232ec9){if(_0x149809['body']['id']){delete _0x149809[_0xf7ae('0x5d')]['id'];}return db[_0xf7ae('0x42')]['find']({'where':{'id':_0x149809[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x232ec9,null))[_0xf7ae('0x21')](function(_0xc5c591){if(_0xc5c591){_0x149809[_0xf7ae('0x5d')][_0xf7ae('0x68')]=_0xc5c591['id'];return db[_0xf7ae('0x3e')][_0xf7ae('0x6d')](_0x149809[_0xf7ae('0x5d')]);}})[_0xf7ae('0x21')](respondWithResult(_0x232ec9,null))[_0xf7ae('0x16')](handleError(_0x232ec9,null));};exports['removeImap']=function(_0x2a09b6,_0x2b1a18){return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x2a09b6[_0xf7ae('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2b1a18,null))['then'](function(_0x4a7157){if(_0x4a7157){return _0x4a7157[_0xf7ae('0x7d')](null);}return null;})[_0xf7ae('0x21')](respondWithStatusCode(_0x2b1a18,null))['catch'](handleError(_0x2b1a18,null));};exports['getSmtp']=function(_0x2fd99a,_0x16bcb6){return db['MailAccount'][_0xf7ae('0x65')]({'where':{'id':_0x2fd99a[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x16bcb6,null))[_0xf7ae('0x21')](function(_0x1e36c1){if(_0x1e36c1){return _0x1e36c1[_0xf7ae('0x7e')]();}return null;})[_0xf7ae('0x21')](respondWithResult(_0x16bcb6,null))['catch'](handleError(_0x16bcb6,null));};exports[_0xf7ae('0x7f')]=function(_0x518a46,_0x43ec39){if(_0x518a46['body']['id']){delete _0x518a46[_0xf7ae('0x5d')]['id'];}return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x518a46[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x43ec39,null))[_0xf7ae('0x21')](function(_0x5067ce){if(_0x5067ce){_0x518a46['body'][_0xf7ae('0x68')]=_0x5067ce['id'];return db[_0xf7ae('0x5b')]['create'](_0x518a46[_0xf7ae('0x5d')]);}})[_0xf7ae('0x21')](respondWithResult(_0x43ec39,null))[_0xf7ae('0x16')](handleError(_0x43ec39,null));};exports['removeSmtp']=function(_0x28bb6e,_0x1cf963){return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x28bb6e[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x1cf963,null))['then'](function(_0x466077){if(_0x466077){return _0x466077[_0xf7ae('0x80')](null);}return null;})[_0xf7ae('0x21')](respondWithStatusCode(_0x1cf963,null))['catch'](handleError(_0x1cf963,null));};exports[_0xf7ae('0x81')]=function(_0x2251ee,_0x431c91){return db[_0xf7ae('0x82')][_0xf7ae('0x5c')]({'where':{'id':_0x2251ee[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x431c91,null))[_0xf7ae('0x21')](function(_0x3b7b68){if(_0x3b7b68){return _0x3b7b68[_0xf7ae('0x81')](_0x2251ee[_0xf7ae('0x5d')][_0xf7ae('0x70')],_['omit'](_0x2251ee[_0xf7ae('0x5d')],[_0xf7ae('0x70'),'id'])||{});}})['then'](respondWithResult(_0x431c91,null))['catch'](handleError(_0x431c91,null));};exports[_0xf7ae('0x83')]=function(_0x193e1e,_0x184178){var _0x598744={'raw':![],'where':{}};var _0x4328ec={};var _0x2158ec={'count':0x0,'rows':[]};return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x193e1e['params']['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x184178,null))[_0xf7ae('0x21')](function(_0x4f8a64){if(_0x4f8a64){_0x4328ec[_0xf7ae('0x4c')]=_[_0xf7ae('0x48')](db[_0xf7ae('0x82')][_0xf7ae('0x43')]);_0x4328ec[_0xf7ae('0x47')]=_[_0xf7ae('0x48')](_0x193e1e[_0xf7ae('0x47')]);_0x4328ec[_0xf7ae('0x49')]=_['intersection'](_0x4328ec[_0xf7ae('0x4c')],_0x4328ec[_0xf7ae('0x47')]);_0x598744[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x4328ec[_0xf7ae('0x4c')],qs[_0xf7ae('0x4d')](_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x598744['attributes']=_0x598744[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x598744['attributes']:_0x4328ec[_0xf7ae('0x4c')];if(!_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x66')]('nolimit')){_0x598744[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x1b')]);_0x598744[_0xf7ae('0x1d')]=qs['offset'](_0x193e1e[_0xf7ae('0x47')]['offset']);}_0x598744[_0xf7ae('0x67')]=qs[_0xf7ae('0x50')](_0x193e1e['query'][_0xf7ae('0x50')]);_0x598744['where']=qs[_0xf7ae('0x49')](_[_0xf7ae('0x52')](_0x193e1e['query'],_0x4328ec[_0xf7ae('0x49')]));_0x598744[_0xf7ae('0x51')][_0xf7ae('0x68')]=_0x4f8a64['id'];if(_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x69')]){_0x598744[_0xf7ae('0x51')]=_[_0xf7ae('0x53')](_0x598744[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x598744[_0xf7ae('0x4b')],function(_0x312730){var _0x4a0d15={};_0x4a0d15[_0x312730]={'$like':'%'+_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x69')]+'%'};return _0x4a0d15;})});}_0x598744=_[_0xf7ae('0x53')]({},_0x598744,_0x193e1e[_0xf7ae('0x84')]);return db[_0xf7ae('0x82')][_0xf7ae('0x1c')]({'where':_0x598744[_0xf7ae('0x51')]})[_0xf7ae('0x21')](function(_0x17f059){_0x2158ec[_0xf7ae('0x1c')]=_0x17f059;if(_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x56')]){_0x598744[_0xf7ae('0x57')]=[{'model':db[_0xf7ae('0x85')],'as':_0xf7ae('0x86'),'required':![]},{'model':db[_0xf7ae('0x87')],'as':_0xf7ae('0x88'),'attributes':[_0xf7ae('0x46'),'fullname','internal'],'required':![]},{'model':db[_0xf7ae('0x89')],'as':_0xf7ae('0x8a'),'attributes':['id',_0xf7ae('0x46'),_0xf7ae('0x8b')],'where':_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x8c')]?{'id':_0x193e1e[_0xf7ae('0x47')][_0xf7ae('0x8c')]}:undefined,'required':_0x193e1e[_0xf7ae('0x47')]['tag']?!![]:![]}];}return db[_0xf7ae('0x82')][_0xf7ae('0x6e')](_0x598744);})[_0xf7ae('0x21')](function(_0x30024a){_0x2158ec[_0xf7ae('0x58')]=_0x30024a;return _0x2158ec;});}})[_0xf7ae('0x21')](respondWithFilteredResult(_0x184178,_0x598744))[_0xf7ae('0x16')](handleError(_0x184178,null));};exports[_0xf7ae('0x8d')]=function addApplications(_0x463e47,_0x3850df){var _0x14c3a3=_0x463e47[_0xf7ae('0x5a')]['id'];var _0x17c430=_0x463e47[_0xf7ae('0x5d')];var _0x260f06=0xc8;var _0x402178=null;return db[_0xf7ae('0x8e')]['transaction']({'isolationLevel':db[_0xf7ae('0x8e')][_0xf7ae('0x8f')]['ISOLATION_LEVELS'][_0xf7ae('0x90')]},function(_0x19a4d3){return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x14c3a3},'transaction':_0x19a4d3})[_0xf7ae('0x21')](function(_0x101061){if(_0x101061){return db[_0xf7ae('0x91')]['destroy']({'where':{'MailAccountId':_0x14c3a3},'transaction':_0x19a4d3})['then'](function(){var _0x10a1d9=_[_0xf7ae('0x41')](_0x17c430,function(_0x5383a2){_0x5383a2[_0xf7ae('0x68')]=_0x14c3a3;return _0x5383a2;});return db['MailApplication'][_0xf7ae('0x92')](_0x10a1d9,{'transaction':_0x19a4d3});});}else{_0x260f06=0x194;_0x402178=[];}});})[_0xf7ae('0x21')](function(){if(_0x260f06!==0x194){return db[_0xf7ae('0x91')][_0xf7ae('0x93')]({'where':{'MailAccountId':_0x14c3a3},'order':_0xf7ae('0x94')})[_0xf7ae('0x21')](function(_0x1c0adc){_0x402178=_0x1c0adc;});}})[_0xf7ae('0x16')](function(_0x564d46){_0x260f06=0x1f4;logger[_0xf7ae('0x14')](_0x564d46[_0xf7ae('0x26')]);if(_0x564d46[_0xf7ae('0x46')]){delete _0x564d46[_0xf7ae('0x46')];}_0x402178=_0x564d46;})[_0xf7ae('0x95')](function(){if(_0x402178===null){_0x3850df[_0xf7ae('0x17')](_0x260f06);}else{if(_0x260f06===0x1f4){_0x3850df[_0xf7ae('0x18')](_0x260f06)[_0xf7ae('0x27')](_0x402178);}else{_0x3850df[_0xf7ae('0x18')](_0x260f06)['json'](_0x402178);}}});};exports[_0xf7ae('0x96')]=function(_0x3a166a,_0x1b1bed){var _0x10913f={};var _0x4789c2={};var _0x55464a;var _0x3576cc;return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x3a166a[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x1b1bed,null))[_0xf7ae('0x21')](function(_0x3cd9fd){if(_0x3cd9fd){_0x55464a=_0x3cd9fd;_0x4789c2[_0xf7ae('0x4c')]=_[_0xf7ae('0x48')](db['MailApplication'][_0xf7ae('0x43')]);_0x4789c2[_0xf7ae('0x47')]=_[_0xf7ae('0x48')](_0x3a166a[_0xf7ae('0x47')]);_0x4789c2[_0xf7ae('0x49')]=_['intersection'](_0x4789c2[_0xf7ae('0x4c')],_0x4789c2[_0xf7ae('0x47')]);_0x10913f[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x4789c2[_0xf7ae('0x4c')],qs['fields'](_0x3a166a[_0xf7ae('0x47')]['fields']));_0x10913f[_0xf7ae('0x4b')]=_0x10913f[_0xf7ae('0x4b')][_0xf7ae('0x4e')]?_0x10913f[_0xf7ae('0x4b')]:_0x4789c2[_0xf7ae('0x4c')];_0x10913f[_0xf7ae('0x67')]=qs['sort'](_0x3a166a[_0xf7ae('0x47')][_0xf7ae('0x50')]);_0x10913f[_0xf7ae('0x51')]=qs[_0xf7ae('0x49')](_[_0xf7ae('0x52')](_0x3a166a['query'],_0x4789c2[_0xf7ae('0x49')]));if(_0x3a166a['query']['filter']){_0x10913f['where']=_[_0xf7ae('0x53')](_0x10913f[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x10913f[_0xf7ae('0x4b')],function(_0x30f6fb){var _0x4f5f0f={};_0x4f5f0f[_0x30f6fb]={'$like':'%'+_0x3a166a[_0xf7ae('0x47')]['filter']+'%'};return _0x4f5f0f;})});}_0x10913f=_['merge']({},_0x10913f,_0x3a166a[_0xf7ae('0x84')]);return _0x55464a[_0xf7ae('0x96')](_0x10913f);}})[_0xf7ae('0x21')](function(_0x22a35a){if(_0x22a35a){_0x3576cc=_0x22a35a[_0xf7ae('0x4e')];if(!_0x3a166a[_0xf7ae('0x47')]['hasOwnProperty'](_0xf7ae('0x4f'))){_0x10913f[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x3a166a[_0xf7ae('0x47')]['limit']);_0x10913f[_0xf7ae('0x1d')]=qs[_0xf7ae('0x1d')](_0x3a166a['query']['offset']);}return _0x55464a[_0xf7ae('0x96')](_0x10913f);}})['then'](function(_0x392cac){if(_0x392cac){return _0x392cac?{'count':_0x3576cc,'rows':_0x392cac}:null;}})[_0xf7ae('0x21')](respondWithResult(_0x1b1bed,null))[_0xf7ae('0x16')](handleError(_0x1b1bed,null));};exports['getMessages']=function(_0x4789d5,_0x54a46e){var _0x55007e={'raw':!![],'where':{}};var _0x3f0ec1={};var _0x5e1e71={'count':0x0,'rows':[]};return db[_0xf7ae('0x42')]['findOne']({'where':{'id':_0x4789d5[_0xf7ae('0x5a')]['id']}})['then'](handleEntityNotFound(_0x54a46e,null))['then'](function(_0x53ba69){if(_0x53ba69){_0x3f0ec1[_0xf7ae('0x4c')]=_[_0xf7ae('0x48')](db['MailMessage'][_0xf7ae('0x43')]);_0x3f0ec1['query']=_[_0xf7ae('0x48')](_0x4789d5[_0xf7ae('0x47')]);_0x3f0ec1[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x3f0ec1[_0xf7ae('0x4c')],_0x3f0ec1[_0xf7ae('0x47')]);_0x55007e[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x3f0ec1[_0xf7ae('0x4c')],qs[_0xf7ae('0x4d')](_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x4d')]));_0x55007e[_0xf7ae('0x4b')]=_0x55007e['attributes'][_0xf7ae('0x4e')]?_0x55007e[_0xf7ae('0x4b')]:_0x3f0ec1['model'];if(!_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x66')](_0xf7ae('0x4f'))){_0x55007e[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x4789d5[_0xf7ae('0x47')]['limit']);_0x55007e[_0xf7ae('0x1d')]=qs[_0xf7ae('0x1d')](_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x1d')]);}_0x55007e[_0xf7ae('0x67')]=qs[_0xf7ae('0x50')](_0x4789d5['query'][_0xf7ae('0x50')]);_0x55007e[_0xf7ae('0x51')]=qs[_0xf7ae('0x49')](_['pick'](_0x4789d5[_0xf7ae('0x47')],_0x3f0ec1[_0xf7ae('0x49')]));_0x55007e[_0xf7ae('0x51')][_0xf7ae('0x68')]=_0x53ba69['id'];if(_0x4789d5['query']['filter']){_0x55007e['where']=_[_0xf7ae('0x53')](_0x55007e['where'],{'$or':_[_0xf7ae('0x41')](_0x55007e[_0xf7ae('0x4b')],function(_0xa6a4e1){var _0x5e6fce={};_0x5e6fce[_0xa6a4e1]={'$like':'%'+_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x69')]+'%'};return _0x5e6fce;})});}if(_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x97')]){var _0x575c31=_0x4789d5[_0xf7ae('0x47')]['$gte']['split'](',');var _0x31a05e={};_0x31a05e[_0x575c31[0x0]]={'$gte':moment(_0x575c31[0x1])[_0xf7ae('0x98')]('YYYY-MM-DD\x20HH:mm:ss')};_0x55007e['where']=_[_0xf7ae('0x53')](_0x55007e[_0xf7ae('0x51')],_0x31a05e);}_0x55007e=_[_0xf7ae('0x53')]({},_0x55007e,_0x4789d5['options']);return db[_0xf7ae('0x99')][_0xf7ae('0x1c')]({'where':_0x55007e[_0xf7ae('0x51')]})[_0xf7ae('0x21')](function(_0x23e4e1){_0x5e1e71['count']=_0x23e4e1;if(_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x56')]){_0x55007e['include']=[{'all':!![]}];}return db[_0xf7ae('0x99')][_0xf7ae('0x6e')](_0x55007e);})[_0xf7ae('0x21')](function(_0x385faa){if(_0x4789d5[_0xf7ae('0x47')][_0xf7ae('0x9a')]===_0xf7ae('0x9b')){for(var _0x5703ad=0x0;_0x5703ad<_0x385faa[_0xf7ae('0x4e')];_0x5703ad++){_0x385faa[_0x5703ad][_0xf7ae('0x5d')]=juice(_0x385faa[_0x5703ad][_0xf7ae('0x5d')]);}}_0x5e1e71[_0xf7ae('0x58')]=_0x385faa;return _0x5e1e71;});}})[_0xf7ae('0x21')](respondWithFilteredResult(_0x54a46e,_0x55007e))['catch'](handleError(_0x54a46e,null));};exports['send']=function(_0xf7e2a5,_0x5509b4){var _0x26f932,_0x443a30={},_0x338849;if(_0xf7e2a5[_0xf7ae('0x5d')]['to']){_0x338849=_0xf7e2a5[_0xf7ae('0x5d')]['to'][_0xf7ae('0x9c')](',')[0x0];}return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0xf7e2a5[_0xf7ae('0x5a')]['id']},'include':[{'model':db[_0xf7ae('0x9d')],'as':_0xf7ae('0x9e'),'include':[{'model':db[_0xf7ae('0x85')],'as':_0xf7ae('0x9f'),'where':{'email':_0x338849},'limit':0x1,'order':[[_0xf7ae('0xa0'),_0xf7ae('0xa1')]]}]},{'model':db['MailServerOut'],'as':_0xf7ae('0x3c'),'raw':!![],'include':[{'model':db[_0xf7ae('0xa2')],'as':_0xf7ae('0xa2'),'raw':!![]}]}]})[_0xf7ae('0x21')](handleEntityNotFound(_0x5509b4,null))[_0xf7ae('0x21')](function(_0x57f216){if(!_0x57f216)return;_0x26f932=_0x57f216;if(!_0x57f216['Smtp'])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0xf7ae('0x73')](_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xa3')])){_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xa3')]=util[_0xf7ae('0x98')](_0xf7ae('0xa4'),_0x57f216['name'],_0x57f216[_0xf7ae('0x71')]||_0x57f216[_0xf7ae('0x3c')][_0xf7ae('0x31')]);}if(_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xa5')]&&_0xf7e2a5[_0xf7ae('0x5d')]['attachments'][_0xf7ae('0x4e')]){for(var _0x26c5c6=0x0;_0x26c5c6<_0xf7e2a5[_0xf7ae('0x5d')]['attachments'][_0xf7ae('0x4e')];_0x26c5c6+=0x1){_0xf7e2a5[_0xf7ae('0x5d')]['attachments'][_0x26c5c6]={'filename':_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xa5')][_0x26c5c6]['name'],'path':path[_0xf7ae('0xa6')](config['root'],_0xf7ae('0xa7'),_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xa5')][_0x26c5c6][_0xf7ae('0xa8')])};}}var _0x3d7440=_0x57f216['getSmtpOptions']();return respondWithRpcPromise(_0xf7ae('0xa9'),'sendMail',{'account':_0x3d7440,'message':_0xf7e2a5[_0xf7ae('0x5d')]});})[_0xf7ae('0x21')](function(_0x10eb20){if(!_0x10eb20)return;_0x443a30=_0x10eb20;if(!_0x26f932['List'])throw new Error(_0xf7ae('0xaa'));if(_0x26f932['List'][_0xf7ae('0x9f')][_0xf7ae('0x4e')])return _0x26f932[_0xf7ae('0x9e')][_0xf7ae('0x9f')][0x0];return db[_0xf7ae('0x85')]['create'](_['defaults'](_0xf7e2a5[_0xf7ae('0x5d')],{'firstName':_0xf7e2a5['body']['to'],'email':_0xf7e2a5['body']['to'],'phone':_0xf7e2a5[_0xf7ae('0x5d')]['to'],'ListId':_0x26f932[_0xf7ae('0x72')]}));})[_0xf7ae('0x21')](function(_0x38008d){if(!_0x38008d)return;var _0x232eeb={'UserId':_0xf7e2a5['user']['id'],'ContactId':_0x38008d['id'],'MailAccountId':_0x26f932['id'],'inReplyTo':_0x443a30[_0xf7ae('0xab')],'to':_0xf7e2a5[_0xf7ae('0x5d')]['from'],'cc':_0xf7e2a5[_0xf7ae('0x5d')]['cc'],'subject':_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xac')],'attach':_0xf7e2a5['body'][_0xf7ae('0xad')],'firstMsgDirection':_0xf7ae('0xae'),'lastMsgAt':moment()[_0xf7ae('0x98')](_0xf7ae('0xaf')),'lastMsgDirection':_0xf7ae('0xae'),'Messages':[_['merge'](_0xf7e2a5[_0xf7ae('0x5d')],{'messageId':_0x443a30[_0xf7ae('0xab')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x26f932['id'],'UserId':_0xf7e2a5[_0xf7ae('0x31')]['id'],'ContactId':_0x38008d['id']})]};if(_0xf7e2a5[_0xf7ae('0x5d')][_0xf7ae('0xb0')]){_0x232eeb=_[_0xf7ae('0x53')](_0x232eeb,_0xf7e2a5[_0xf7ae('0x5d')]['Interaction']);}return db['MailInteraction']['create'](_0x232eeb,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});})['then'](respondWithResult(_0x5509b4,null))[_0xf7ae('0x16')](handleError(_0x5509b4,null));};exports[_0xf7ae('0xb1')]=function(_0x2401aa,_0x85da90){return db[_0xf7ae('0x42')]['find']({'where':{'id':_0x2401aa[_0xf7ae('0x5a')]['id']},'include':[{'model':db[_0xf7ae('0x5b')],'as':_0xf7ae('0x3c'),'raw':!![],'include':[{'model':db[_0xf7ae('0xa2')],'as':_0xf7ae('0xa2'),'raw':!![]}]}]})[_0xf7ae('0x21')](handleEntityNotFound(_0x85da90,null))['then'](function(_0x623ef){if(!_0x623ef[_0xf7ae('0x3c')])return;var _0x284a2c=_0x623ef[_0xf7ae('0xb2')]();return respondWithRpcPromise(_0xf7ae('0xb3'),_0xf7ae('0xb1'),{'account':_0x284a2c});})[_0xf7ae('0x21')](respondWithResult(_0x85da90,null))[_0xf7ae('0x16')](handleError(_0x85da90,null));};exports['destroy']=function(_0x11f427,_0x4bf8a8){return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x11f427[_0xf7ae('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4bf8a8,null))[_0xf7ae('0x21')](function(_0x38a791){if(_0x38a791&&_0x38a791['service']){throw new db[(_0xf7ae('0xb4'))][(_0xf7ae('0xb5'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x38a791;})[_0xf7ae('0x21')](removeEntity(_0x4bf8a8,null))[_0xf7ae('0x16')](handleError(_0x4bf8a8,null));};exports[_0xf7ae('0xb6')]=function(_0x43c2b4,_0x29538a){return db[_0xf7ae('0x42')]['find']({'where':{'id':_0x43c2b4[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x29538a,null))['then'](function(_0x2b567f){if(_0x2b567f){return _0x2b567f[_0xf7ae('0xb6')](_0x43c2b4[_0xf7ae('0x5d')][_0xf7ae('0x70')],_[_0xf7ae('0xb7')](_0x43c2b4[_0xf7ae('0x5d')],[_0xf7ae('0x70'),'id'])||{})[_0xf7ae('0xb8')](function(_0x28d9e8){for(var _0x4f9c7c=0x0;_0x4f9c7c<_0x43c2b4[_0xf7ae('0x5d')][_0xf7ae('0x70')][_0xf7ae('0x4e')];_0x4f9c7c+=0x1){socket[_0xf7ae('0xb9')](_0xf7ae('0xba'),{'UserId':Number(_0x43c2b4[_0xf7ae('0x5d')]['ids'][_0x4f9c7c]),'MailAccountId':Number(_0x43c2b4[_0xf7ae('0x5a')]['id'])});}return _0x28d9e8;});}})[_0xf7ae('0x21')](respondWithResult(_0x29538a,null))[_0xf7ae('0x16')](handleError(_0x29538a,null));};exports[_0xf7ae('0xbb')]=function(_0x3a972c,_0x4ea99b){return db[_0xf7ae('0x42')][_0xf7ae('0x5c')]({'where':{'id':_0x3a972c[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x4ea99b,null))[_0xf7ae('0x21')](function(_0x4ed0bd){if(_0x4ed0bd){return _0x4ed0bd[_0xf7ae('0xbb')](_0x3a972c[_0xf7ae('0x47')][_0xf7ae('0x70')])[_0xf7ae('0x21')](function(){if(_[_0xf7ae('0xbc')](_0x3a972c['query'][_0xf7ae('0x70')])){for(var _0x44cd95=0x0;_0x44cd95<_0x3a972c[_0xf7ae('0x47')][_0xf7ae('0x70')]['length'];_0x44cd95+=0x1){socket[_0xf7ae('0xb9')](_0xf7ae('0xbd'),{'UserId':Number(_0x3a972c[_0xf7ae('0x47')][_0xf7ae('0x70')][_0x44cd95]),'MailAccountId':Number(_0x3a972c['params']['id'])});}}else{socket['emit'](_0xf7ae('0xbd'),{'UserId':Number(_0x3a972c[_0xf7ae('0x47')][_0xf7ae('0x70')]),'MailAccountId':Number(_0x3a972c[_0xf7ae('0x5a')]['id'])});}});}})[_0xf7ae('0x21')](respondWithStatusCode(_0x4ea99b,null))[_0xf7ae('0x16')](handleError(_0x4ea99b,null));};exports[_0xf7ae('0xbe')]=function(_0x2431bd,_0x57965b){var _0x25fc80={};var _0x479037={};var _0x23dba1;var _0x18c147;return db[_0xf7ae('0x42')][_0xf7ae('0x65')]({'where':{'id':_0x2431bd[_0xf7ae('0x5a')]['id']}})[_0xf7ae('0x21')](handleEntityNotFound(_0x57965b,null))[_0xf7ae('0x21')](function(_0x43bd9d){if(_0x43bd9d){_0x23dba1=_0x43bd9d;_0x479037[_0xf7ae('0x4c')]=_[_0xf7ae('0x48')](db['User'][_0xf7ae('0x43')]);_0x479037['query']=_[_0xf7ae('0x48')](_0x2431bd[_0xf7ae('0x47')]);_0x479037[_0xf7ae('0x49')]=_[_0xf7ae('0x4a')](_0x479037[_0xf7ae('0x4c')],_0x479037[_0xf7ae('0x47')]);_0x25fc80[_0xf7ae('0x4b')]=_[_0xf7ae('0x4a')](_0x479037[_0xf7ae('0x4c')],qs[_0xf7ae('0x4d')](_0x2431bd[_0xf7ae('0x47')]['fields']));_0x25fc80[_0xf7ae('0x4b')]=_0x25fc80['attributes'][_0xf7ae('0x4e')]?_0x25fc80[_0xf7ae('0x4b')]:_0x479037[_0xf7ae('0x4c')];_0x25fc80[_0xf7ae('0x67')]=qs[_0xf7ae('0x50')](_0x2431bd[_0xf7ae('0x47')][_0xf7ae('0x50')]);_0x25fc80[_0xf7ae('0x51')]=qs['filters'](_['pick'](_0x2431bd[_0xf7ae('0x47')],_0x479037[_0xf7ae('0x49')]));if(_0x2431bd[_0xf7ae('0x47')]['filter']){_0x25fc80['where']=_[_0xf7ae('0x53')](_0x25fc80[_0xf7ae('0x51')],{'$or':_[_0xf7ae('0x41')](_0x25fc80[_0xf7ae('0x4b')],function(_0x22bc8e){var _0x4c8123={};_0x4c8123[_0x22bc8e]={'$like':'%'+_0x2431bd[_0xf7ae('0x47')][_0xf7ae('0x69')]+'%'};return _0x4c8123;})});}_0x25fc80=_[_0xf7ae('0x53')]({},_0x25fc80,_0x2431bd[_0xf7ae('0x84')]);return _0x23dba1['getAgents'](_0x25fc80);}})['then'](function(_0xa853be){if(_0xa853be){_0x18c147=_0xa853be['length'];if(!_0x2431bd[_0xf7ae('0x47')][_0xf7ae('0x66')](_0xf7ae('0x4f'))){_0x25fc80[_0xf7ae('0x1b')]=qs[_0xf7ae('0x1b')](_0x2431bd[_0xf7ae('0x47')]['limit']);_0x25fc80['offset']=qs[_0xf7ae('0x1d')](_0x2431bd[_0xf7ae('0x47')][_0xf7ae('0x1d')]);}return _0x23dba1['getAgents'](_0x25fc80);}})['then'](function(_0x42a3a6){if(_0x42a3a6){return _0x42a3a6?{'count':_0x18c147,'rows':_0x42a3a6}:null;}})['then'](respondWithResult(_0x57965b,null))['catch'](handleError(_0x57965b,null));};
\ No newline at end of file
index d937843..7308562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29eb=['hasOwnProperty','hook','exports','events','../../mysqldb','MailAccount','save','update','remove','emit'];(function(_0x1b63ad,_0x4b2d70){var _0xff794a=function(_0x36af61){while(--_0x36af61){_0x1b63ad['push'](_0x1b63ad['shift']());}};_0xff794a(++_0x4b2d70);}(_0x29eb,0x1c5));var _0xb29e=function(_0x458cc9,_0x339c9c){_0x458cc9=_0x458cc9-0x0;var _0x2ed851=_0x29eb[_0x458cc9];return _0x2ed851;};'use strict';var EventEmitter=require(_0xb29e('0x0'));var MailAccount=require(_0xb29e('0x1'))['db'][_0xb29e('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb29e('0x3'),'afterUpdate':_0xb29e('0x4'),'afterDestroy':_0xb29e('0x5')};function emitEvent(_0x4a9b91){return function(_0x29356f,_0x4c648e,_0x14c35b){MailAccountEvents[_0xb29e('0x6')](_0x4a9b91+':'+_0x29356f['id'],_0x29356f);MailAccountEvents[_0xb29e('0x6')](_0x4a9b91,_0x29356f);_0x14c35b(null);};}for(var e in events){if(events[_0xb29e('0x7')](e)){var event=events[e];MailAccount[_0xb29e('0x8')](e,emitEvent(event));}}module[_0xb29e('0x9')]=MailAccountEvents;
\ No newline at end of file
+var _0xd4f4=['setMaxListeners','save','emit','hook','events'];(function(_0x7d2919,_0x3861dc){var _0x5e93f5=function(_0x1e43a0){while(--_0x1e43a0){_0x7d2919['push'](_0x7d2919['shift']());}};_0x5e93f5(++_0x3861dc);}(_0xd4f4,0x1bc));var _0x4d4f=function(_0x5c9b38,_0x213a46){_0x5c9b38=_0x5c9b38-0x0;var _0xc1d6aa=_0xd4f4[_0x5c9b38];return _0xc1d6aa;};'use strict';var EventEmitter=require(_0x4d4f('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x4d4f('0x1')](0x0);var events={'afterCreate':_0x4d4f('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x160665){return function(_0x48e54e,_0x49f0ac,_0x41e226){MailAccountEvents[_0x4d4f('0x3')](_0x160665+':'+_0x48e54e['id'],_0x48e54e);MailAccountEvents[_0x4d4f('0x3')](_0x160665,_0x48e54e);_0x41e226(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x4d4f('0x4')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 350ddb7..892ae03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf35=['data5','auth','pass','./mailAccount.attributes','exports','MailAccount','provider','service','host','Smtp','port','secure','authentication','CloudProvider','OAuth2','user'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xaf35,0x1d3));var _0x5af3=function(_0x1db481,_0x1627b2){_0x1db481=_0x1db481-0x0;var _0x3db95b=_0xaf35[_0x1db481];return _0x3db95b;};'use strict';var attributes=require(_0x5af3('0x0'));module[_0x5af3('0x1')]=function(_0x480d87){return _0x480d87['define'](_0x5af3('0x2'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x8d10dc=this;var _0x535742={'id':_0x8d10dc['id'],'tls':{'rejectUnauthorized':![]}};if(_0x8d10dc[_0x5af3('0x3')]!=='custom'){_0x535742[_0x5af3('0x4')]=_0x8d10dc[_0x5af3('0x3')];}else{_0x535742['host']=_0x8d10dc['Smtp'][_0x5af3('0x5')];_0x535742['port']=_0x8d10dc[_0x5af3('0x6')][_0x5af3('0x7')];_0x535742[_0x5af3('0x8')]=_0x8d10dc[_0x5af3('0x6')][_0x5af3('0x8')];}if(_0x8d10dc['Smtp'][_0x5af3('0x9')]){if(_0x8d10dc[_0x5af3('0x6')]['modernAuthentication']){if(!_0x8d10dc['Smtp'][_0x5af3('0xa')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x535742['auth']={'type':_0x5af3('0xb'),'user':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xc')],'accessToken':_0x8d10dc[_0x5af3('0x6')]['CloudProvider'][_0x5af3('0xd')]};}else{_0x535742[_0x5af3('0xe')]={'user':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xc')],'pass':_0x8d10dc[_0x5af3('0x6')][_0x5af3('0xf')]};}}return _0x535742;}}});};
\ No newline at end of file
+var _0x1e3b=['OAuth2','user','data5','./mailAccount.attributes','exports','define','mail_accounts','provider','custom','service','host','port','Smtp','secure','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x1e3b,0x1f1));var _0xb1e3=function(_0xefe1ca,_0x41f0c8){_0xefe1ca=_0xefe1ca-0x0;var _0x791279=_0x1e3b[_0xefe1ca];return _0x791279;};'use strict';var attributes=require(_0xb1e3('0x0'));module[_0xb1e3('0x1')]=function(_0x39abbd){return _0x39abbd[_0xb1e3('0x2')]('MailAccount',attributes,{'tableName':_0xb1e3('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x22c33c=this;var _0x202785={'id':_0x22c33c['id'],'tls':{'rejectUnauthorized':![]}};if(_0x22c33c[_0xb1e3('0x4')]!==_0xb1e3('0x5')){_0x202785[_0xb1e3('0x6')]=_0x22c33c[_0xb1e3('0x4')];}else{_0x202785[_0xb1e3('0x7')]=_0x22c33c['Smtp'][_0xb1e3('0x7')];_0x202785[_0xb1e3('0x8')]=_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0x8')];_0x202785[_0xb1e3('0xa')]=_0x22c33c['Smtp']['secure'];}if(_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0xb')]){if(_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0xc')]){if(!_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0xd')])throw new Error(_0xb1e3('0xe'));_0x202785[_0xb1e3('0xf')]={'type':_0xb1e3('0x10'),'user':_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0x11')],'accessToken':_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0xd')][_0xb1e3('0x12')]};}else{_0x202785[_0xb1e3('0xf')]={'user':_0x22c33c[_0xb1e3('0x9')][_0xb1e3('0x11')],'pass':_0x22c33c[_0xb1e3('0x9')]['pass']};}}return _0x202785;}}});};
\ No newline at end of file
index 9f4c8b4..732e2f1 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(_0x12d79d,_0x461854){var _0x517f74=function(_0x43e855){while(--_0x43e855){_0x12d79d['push'](_0x12d79d['shift']());}};_0x517f74(++_0x461854);}(_0xd943,0x15d));var _0x3d94=function(_0x50f4ac,_0x220208){_0x50f4ac=_0x50f4ac-0x0;var _0x13db18=_0xd943[_0x50f4ac];return _0x13db18;};'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 _0xc6ac=['update','interaction','created','contact','attachments','originTo','bcc','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','limit','include','map','attributes','model','ShowMailAccount','find','smtp','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','difference','keys','CmContact','rawAttributes','createdAt','CompanyId','ListId','body','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','get','omit','applications','list','orderBy','priority','asc','autoclose','length','*,*,*,*','Contacts','create','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread'];(function(_0x5208fa,_0x2e0115){var _0x340255=function(_0x243db1){while(--_0x243db1){_0x5208fa['push'](_0x5208fa['shift']());}};_0x340255(++_0x2e0115);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x1a071a,_0x1d9c84){_0x1a071a=_0x1a071a-0x0;var _0x52918e=_0xc6ac[_0x1a071a];return _0x52918e;};'use strict';var _=require(_0xcc6a('0x0'));var moment=require(_0xcc6a('0x1'));var BPromise=require(_0xcc6a('0x2'));var rs=require(_0xcc6a('0x3'));var Redis=require(_0xcc6a('0x4'));var db=require(_0xcc6a('0x5'))['db'];var logger=require(_0xcc6a('0x6'))(_0xcc6a('0x7'));var config=require(_0xcc6a('0x8'));var jayson=require(_0xcc6a('0x9'));var client=jayson[_0xcc6a('0xa')][_0xcc6a('0xb')]({'port':0x232c});config[_0xcc6a('0xc')]=_[_0xcc6a('0xd')](config['redis'],{'host':_0xcc6a('0xe'),'port':0x18eb});var socket=require(_0xcc6a('0xf'))(new Redis(config[_0xcc6a('0xc')]));require('./mailAccount.socket')[_0xcc6a('0x10')](socket);function respondWithRpcPromise(_0x210f63,_0x7806a0,_0x463ebb){return new BPromise(function(_0x3eb04a,_0x5e91a2){return client[_0xcc6a('0x11')](_0x210f63,_0x463ebb)[_0xcc6a('0x12')](function(_0x109693){logger['info'](_0xcc6a('0x13'),_0x7806a0,_0xcc6a('0x14'));logger[_0xcc6a('0x15')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x7806a0,'request\x20sent',JSON[_0xcc6a('0x16')](_0x109693));if(_0x109693[_0xcc6a('0x17')]){if(_0x109693[_0xcc6a('0x17')]['code']===0x1f4){logger['error'](_0xcc6a('0x13'),_0x7806a0,_0x109693[_0xcc6a('0x17')][_0xcc6a('0x18')]);return _0x5e91a2(_0x109693[_0xcc6a('0x17')][_0xcc6a('0x18')]);}logger[_0xcc6a('0x17')](_0xcc6a('0x13'),_0x7806a0,_0x109693[_0xcc6a('0x17')]['message']);return _0x3eb04a(_0x109693['error']['message']);}else{logger[_0xcc6a('0x19')](_0xcc6a('0x13'),_0x7806a0,_0xcc6a('0x14'));_0x3eb04a(_0x109693[_0xcc6a('0x1a')][_0xcc6a('0x18')]);}})[_0xcc6a('0x1b')](function(_0x2d9585){logger[_0xcc6a('0x17')](_0xcc6a('0x13'),_0x7806a0,_0x2d9585);_0x5e91a2(_0x2d9585);});});}exports[_0xcc6a('0x1c')]=function(_0x1d20a3){var _0x5b657e=this;return new Promise(function(_0xfec60f,_0x3e1fda){return db[_0xcc6a('0x1d')][_0xcc6a('0x1e')]({'raw':_0x1d20a3[_0xcc6a('0x1f')]?_0x1d20a3[_0xcc6a('0x1f')][_0xcc6a('0x20')]===undefined?!![]:![]:!![],'where':_0x1d20a3[_0xcc6a('0x1f')]?_0x1d20a3[_0xcc6a('0x1f')][_0xcc6a('0x21')]||null:null,'attributes':_0x1d20a3[_0xcc6a('0x1f')]?_0x1d20a3[_0xcc6a('0x1f')]['attributes']||null:null,'limit':_0x1d20a3[_0xcc6a('0x1f')]?_0x1d20a3[_0xcc6a('0x1f')][_0xcc6a('0x22')]||null:null,'include':_0x1d20a3['options']?_0x1d20a3[_0xcc6a('0x1f')][_0xcc6a('0x23')]?_[_0xcc6a('0x24')](_0x1d20a3[_0xcc6a('0x1f')][_0xcc6a('0x23')],function(_0x5fc697){return{'model':db[_0x5fc697['model']],'as':_0x5fc697['as'],'attributes':_0x5fc697[_0xcc6a('0x25')],'include':_0x5fc697[_0xcc6a('0x23')]?_[_0xcc6a('0x24')](_0x5fc697['include'],function(_0x3afb3a){return{'model':db[_0x3afb3a[_0xcc6a('0x26')]],'as':_0x3afb3a['as'],'attributes':_0x3afb3a['attributes'],'include':_0x3afb3a[_0xcc6a('0x23')]?_[_0xcc6a('0x24')](_0x3afb3a[_0xcc6a('0x23')],function(_0x473f88){return{'model':db[_0x473f88['model']],'as':_0x473f88['as'],'attributes':_0x473f88[_0xcc6a('0x25')]};}):[]};}):[]};}):[]:[]})[_0xcc6a('0x12')](function(_0x2c6d88){logger['info'](_0xcc6a('0x1c'),_0x1d20a3);logger['debug']('GetMailAccount',_0x1d20a3,JSON[_0xcc6a('0x16')](_0x2c6d88));_0xfec60f(_0x2c6d88);})[_0xcc6a('0x1b')](function(_0x3aa315){logger[_0xcc6a('0x17')](_0xcc6a('0x1c'),_0x3aa315[_0xcc6a('0x18')],_0x1d20a3);_0x3e1fda(_0x5b657e['error'](0x1f4,_0x3aa315[_0xcc6a('0x18')]));});});};exports[_0xcc6a('0x27')]=function(_0x147aff){var _0x2faeb5=this;return new Promise(function(_0x211a8c,_0x152ebd){return db[_0xcc6a('0x1d')][_0xcc6a('0x28')]({'raw':_0x147aff['options']?_0x147aff[_0xcc6a('0x1f')][_0xcc6a('0x20')]===undefined?!![]:![]:!![],'where':_0x147aff[_0xcc6a('0x1f')]?_0x147aff[_0xcc6a('0x1f')][_0xcc6a('0x21')]||null:null,'attributes':_0x147aff[_0xcc6a('0x1f')]?_0x147aff[_0xcc6a('0x1f')]['attributes']||null:null,'include':_0x147aff[_0xcc6a('0x1f')]?_0x147aff['options']['include']?_['map'](_0x147aff[_0xcc6a('0x1f')][_0xcc6a('0x23')],function(_0x1101ec){return{'model':db[_0x1101ec[_0xcc6a('0x26')]],'as':_0x1101ec['as'],'attributes':_0x1101ec[_0xcc6a('0x25')],'include':_0x1101ec['include']?_['map'](_0x1101ec[_0xcc6a('0x23')],function(_0x11173a){return{'model':db[_0x11173a[_0xcc6a('0x26')]],'as':_0x11173a['as'],'attributes':_0x11173a['attributes'],'include':_0x11173a[_0xcc6a('0x23')]?_[_0xcc6a('0x24')](_0x11173a[_0xcc6a('0x23')],function(_0xa326b2){return{'model':db[_0xa326b2[_0xcc6a('0x26')]],'as':_0xa326b2['as'],'attributes':_0xa326b2[_0xcc6a('0x25')]};}):[]};}):[]};}):[]:[]})[_0xcc6a('0x12')](function(_0x18a252){if(_0x147aff[_0xcc6a('0x1f')][_0xcc6a('0x29')]===!![])_0x18a252[_0xcc6a('0x2a')](_0xcc6a('0x2b'),_0x18a252[_0xcc6a('0x2c')]());logger[_0xcc6a('0x19')](_0xcc6a('0x27'),_0x147aff);logger[_0xcc6a('0x15')](_0xcc6a('0x27'),_0x147aff,JSON[_0xcc6a('0x16')](_0x18a252));_0x211a8c(_0x18a252);})['catch'](function(_0x553e66){logger[_0xcc6a('0x17')](_0xcc6a('0x27'),_0x553e66[_0xcc6a('0x18')],_0x147aff);_0x152ebd(_0x2faeb5[_0xcc6a('0x17')](0x1f4,_0x553e66[_0xcc6a('0x18')]));});});};exports[_0xcc6a('0x2d')]=function(_0x3273bc){var _0x1199f1=this;return new Promise(function(_0x49b65c,_0x56bc7d){var _0x470e3b={'body':_0x3273bc['body'],'channel':'mail'};var _0x5cf1ba=_[_0xcc6a('0x2e')](_[_0xcc6a('0x2f')](db[_0xcc6a('0x30')][_0xcc6a('0x31')]),[_0xcc6a('0x32'),'updatedAt',_0xcc6a('0x33'),_0xcc6a('0x34')]);var _0x17e5a0=![];if(_0x3273bc[_0xcc6a('0x35')]['id']){delete _0x3273bc[_0xcc6a('0x35')]['id'];}if(_[_0xcc6a('0x36')](_0x3273bc['body'][_0xcc6a('0x37')])){return _0x56bc7d(_0x1199f1[_0xcc6a('0x17')](0x1f4,_0xcc6a('0x38')));}if(_[_0xcc6a('0x36')](_0x3273bc['body'][_0xcc6a('0x35')])||_0x3273bc['body'][_0xcc6a('0x35')]===''){return _0x56bc7d(_0x1199f1[_0xcc6a('0x17')](0x1f4,_0xcc6a('0x39')));}if(_['isNil'](_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x3a')])){return _0x56bc7d(_0x1199f1[_0xcc6a('0x17')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5cf1ba));}if(!_['includes'](_0x5cf1ba,_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x3a')])){return _0x56bc7d(_0x1199f1[_0xcc6a('0x17')](0x1f4,_0xcc6a('0x3b')+_0x5cf1ba));}var _0x345e94={};_0x345e94[_0x3273bc['body'][_0xcc6a('0x3a')]]=_0x3273bc[_0xcc6a('0x35')]['from'];return db[_0xcc6a('0x1d')][_0xcc6a('0x28')]({'where':{'id':_0x3273bc[_0xcc6a('0x3c')]['id']},'include':[{'model':db[_0xcc6a('0x3d')],'as':_0xcc6a('0x3e'),'include':[{'model':db[_0xcc6a('0x30')],'as':'Contacts','where':_0x345e94,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xcc6a('0x3f')],'as':_0xcc6a('0x40')},{'model':db[_0xcc6a('0x41')],'as':_0xcc6a('0x42'),'include':[{'model':db['CloudProvider'],'as':_0xcc6a('0x43')}]}]})['then'](function(_0x3aa7dd){if(_0x3aa7dd&&_0x3aa7dd[_0xcc6a('0x3e')]){var _0xcfc540=_0x3aa7dd[_0xcc6a('0x44')]({'plain':!![]});_0x470e3b[_0xcc6a('0x3c')]=_[_0xcc6a('0x45')](_0xcfc540,['Applications',_0xcc6a('0x3e')]);_0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x2b')]=_0x3aa7dd[_0xcc6a('0x2c')]();_0x470e3b[_0xcc6a('0x46')]=_0xcfc540[_0xcc6a('0x40')];_0x470e3b[_0xcc6a('0x47')]=_0xcfc540[_0xcc6a('0x3e')];_0x470e3b[_0xcc6a('0x46')]=_[_0xcc6a('0x48')](_0x470e3b['applications'],[_0xcc6a('0x49')],[_0xcc6a('0x4a')]);if(_0x470e3b[_0xcc6a('0x3c')]&&_0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x4b')]){_0x470e3b[_0xcc6a('0x46')]['push']({'id':0x0,'priority':_0x470e3b['applications'][_0xcc6a('0x4c')]+0x1,'app':'close','appdata':_0xcc6a('0x4b'),'interval':_0xcc6a('0x4d')});}if(_0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x40')]){delete _0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x40')];}if(_0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x3e')]){delete _0x470e3b[_0xcc6a('0x3c')][_0xcc6a('0x3e')];}if(_0xcfc540[_0xcc6a('0x3e')]['Contacts'][_0xcc6a('0x4c')]){return _0xcfc540['List'][_0xcc6a('0x4e')][0x0];}var _0x1570fe=_[_0xcc6a('0xd')](_0x3273bc['body'],{'firstName':_0x3273bc[_0xcc6a('0x35')]['from'],'ListId':_0xcfc540[_0xcc6a('0x34')]});_0x1570fe[_0x3273bc['body'][_0xcc6a('0x3a')]]=_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x37')];return db[_0xcc6a('0x30')][_0xcc6a('0x4f')](_0x1570fe);}else{throw new Error(_0xcc6a('0x50'));}})[_0xcc6a('0x12')](function(_0x11459f){_0x470e3b['contact']=_0x11459f;if(_0x11459f){if(!_0x3273bc[_0xcc6a('0x35')]['message'][_0xcc6a('0x51')]){_0x3273bc['body'][_0xcc6a('0x18')][_0xcc6a('0x51')]=rs[_0xcc6a('0x52')]()+'\x20'+_0x3273bc['body'][_0xcc6a('0x18')]['from'];}var _0x5e53e4={'ContactId':_0x11459f['id'],'MailAccountId':_0x3273bc[_0xcc6a('0x3c')]['id'],'inReplyTo':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x51')],'to':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x37')],'cc':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['cc'],'subject':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x53')],'attach':_0x3273bc[_0xcc6a('0x35')]['message'][_0xcc6a('0x54')],'lastMsgAt':moment()[_0xcc6a('0x55')](_0xcc6a('0x56')),'lastMsgDirection':'in'};return db[_0xcc6a('0x57')]['find']({'where':{'closed':![],'MailAccountId':_0x3273bc[_0xcc6a('0x3c')]['id']},'include':[{'model':db[_0xcc6a('0x58')],'as':_0xcc6a('0x59'),'attributes':[_0xcc6a('0x51')],'where':{'messageId':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x5a')]}}]})[_0xcc6a('0x12')](function(_0x2686c8){if(_0x2686c8){return[_0x2686c8,![]];}return db[_0xcc6a('0x57')]['create'](_0x5e53e4)['then'](function(_0x4fe041){return[_0x4fe041,!![]];});});}else{throw new Error(_0xcc6a('0x5b'));}})[_0xcc6a('0x5c')](function(_0x9c444,_0x4a9f34){if(_0x9c444){_0x17e5a0=_0x4a9f34;if(!_0x4a9f34){return _0x9c444[_0xcc6a('0x5d')]({'inReplyTo':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x51')],'to':_0x3273bc['body']['message'][_0xcc6a('0x37')],'cc':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['cc'],'subject':_0x3273bc[_0xcc6a('0x35')]['message'][_0xcc6a('0x53')],'attach':_0x9c444[_0xcc6a('0x54')]?_0x9c444[_0xcc6a('0x54')]:_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['attach'],'substatus':null,'substatusAt':moment()['format'](_0xcc6a('0x56')),'lastMsgAt':moment()[_0xcc6a('0x55')](_0xcc6a('0x56')),'lastMsgDirection':'in'});}else{return _0x9c444;}}})[_0xcc6a('0x12')](function(_0x56a3a0){_0x470e3b['interaction']=_0x56a3a0[_0xcc6a('0x44')]({'plain':!![]});_0x470e3b[_0xcc6a('0x5e')][_0xcc6a('0x5f')]=_0x17e5a0;return db[_0xcc6a('0x58')]['create']({'body':_0x3273bc['body']['body'],'MailAccountId':_0x3273bc[_0xcc6a('0x3c')]['id'],'MailInteractionId':_0x56a3a0['id'],'direction':'in','ContactId':_0x470e3b[_0xcc6a('0x60')]['id'],'messageId':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['messageId'],'from':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['from'],'to':_0x3273bc[_0xcc6a('0x35')]['message']['to'],'cc':_0x3273bc[_0xcc6a('0x35')]['message']['cc'],'subject':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x53')],'attach':_0x3273bc['body'][_0xcc6a('0x18')]['attach'],'Attachments':_0x3273bc[_0xcc6a('0x35')]['message'][_0xcc6a('0x61')],'originTo':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x62')],'originCc':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['originCc'],'bcc':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x63')],'ChatWebsiteId':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['ChatWebsiteId']||null,'originChannel':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')]['originChannel']||'Email','ChatOfflineMessageId':_0x3273bc[_0xcc6a('0x35')][_0xcc6a('0x18')][_0xcc6a('0x64')]||null},{'include':[{'model':db[_0xcc6a('0x65')],'as':_0xcc6a('0x66')}]});})[_0xcc6a('0x12')](function(_0x598833){_0x470e3b[_0xcc6a('0x18')]=_0x598833;if(_0x470e3b[_0xcc6a('0x5e')][_0xcc6a('0x67')]){return db[_0xcc6a('0x68')][_0xcc6a('0x28')]({'attributes':['id',_0xcc6a('0x69')],'where':{'id':_0x470e3b['interaction']['UserId']}})[_0xcc6a('0x12')](function(_0x43cbee){if(_0x43cbee){_0x470e3b[_0xcc6a('0x46')][_0xcc6a('0x6a')]({'id':0x0,'priority':0x0,'app':_0xcc6a('0x6b'),'appdata':_0x43cbee[_0xcc6a('0x69')]+','+(_0x470e3b[_0xcc6a('0x3c')]['waitForTheAssignedAgent']||0xa),'interval':_0xcc6a('0x4d')});}return respondWithRpcPromise(_0xcc6a('0x6c'),_0xcc6a('0x6d'),_0x470e3b);});}return respondWithRpcPromise(_0xcc6a('0x6c'),_0xcc6a('0x6d'),_0x470e3b);})[_0xcc6a('0x12')](function(_0x5e8e19){_0x49b65c(_0x5e8e19);})[_0xcc6a('0x1b')](function(_0x4688d3){_0x56bc7d(_0x1199f1[_0xcc6a('0x17')](0x1f4,_0x4688d3['message']));});});};
\ No newline at end of file
index 4e4b32f..c50fcf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7b=['./mailAccount.events','save','update','emit','register','length','mailAccount:'];(function(_0x1a46c6,_0xdc9de2){var _0x4de97e=function(_0x74b2f3){while(--_0x74b2f3){_0x1a46c6['push'](_0x1a46c6['shift']());}};_0x4de97e(++_0xdc9de2);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0x1e7b[_0x2c0dc0];return _0x4c0990;};'use strict';var MailAccountEvents=require(_0xb1e7('0x0'));var events=[_0xb1e7('0x1'),'remove',_0xb1e7('0x2')];function createListener(_0x173016,_0x4ffad7){return function(_0x8105ca){_0x4ffad7[_0xb1e7('0x3')](_0x173016,_0x8105ca);};}function removeListener(_0x41ab3e,_0x2222eb){return function(){MailAccountEvents['removeListener'](_0x41ab3e,_0x2222eb);};}exports[_0xb1e7('0x4')]=function(_0x2f733c){for(var _0x3bc43b=0x0,_0x35c43c=events[_0xb1e7('0x5')];_0x3bc43b<_0x35c43c;_0x3bc43b++){var _0x578f37=events[_0x3bc43b];var _0x161376=createListener(_0xb1e7('0x6')+_0x578f37,_0x2f733c);MailAccountEvents['on'](_0x578f37,_0x161376);}};
\ No newline at end of file
+var _0x2072=['emit','removeListener','register','length','mailAccount:','./mailAccount.events','save','remove','update'];(function(_0x14102c,_0x1cb214){var _0x13297b=function(_0x1f4372){while(--_0x1f4372){_0x14102c['push'](_0x14102c['shift']());}};_0x13297b(++_0x1cb214);}(_0x2072,0x1d9));var _0x2207=function(_0x57472d,_0x4b8e86){_0x57472d=_0x57472d-0x0;var _0x4c69c3=_0x2072[_0x57472d];return _0x4c69c3;};'use strict';var MailAccountEvents=require(_0x2207('0x0'));var events=[_0x2207('0x1'),_0x2207('0x2'),_0x2207('0x3')];function createListener(_0x1e1c82,_0x12708f){return function(_0x3e9252){_0x12708f[_0x2207('0x4')](_0x1e1c82,_0x3e9252);};}function removeListener(_0x8ae12f,_0x141a54){return function(){MailAccountEvents[_0x2207('0x5')](_0x8ae12f,_0x141a54);};}exports[_0x2207('0x6')]=function(_0x23e704){for(var _0x2727ee=0x0,_0x1959a7=events[_0x2207('0x7')];_0x2727ee<_0x1959a7;_0x2727ee++){var _0x3b09b4=events[_0x2727ee];var _0x16a0ef=createListener(_0x2207('0x8')+_0x3b09b4,_0x23e704);MailAccountEvents['on'](_0x3b09b4,_0x16a0ef);}};
\ No newline at end of file
index a647f67..59eec86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b26=['../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra'];(function(_0x32a2f5,_0x4758b3){var _0x437b=function(_0x21bf05){while(--_0x21bf05){_0x32a2f5['push'](_0x32a2f5['shift']());}};_0x437b(++_0x4758b3);}(_0x3b26,0x189));var _0x63b2=function(_0x55f581,_0x391cca){_0x55f581=_0x55f581-0x0;var _0x5156b6=_0x3b26[_0x55f581];return _0x5156b6;};'use strict';var multer=require(_0x63b2('0x0'));var util=require(_0x63b2('0x1'));var path=require(_0x63b2('0x2'));var timeout=require('connect-timeout');var express=require(_0x63b2('0x3'));var router=express[_0x63b2('0x4')]();var fs_extra=require(_0x63b2('0x5'));var auth=require(_0x63b2('0x6'));var interaction=require(_0x63b2('0x7'));var config=require(_0x63b2('0x8'));var controller=require(_0x63b2('0x9'));router[_0x63b2('0xa')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0xd')]);router[_0x63b2('0xe')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0xf')]);router[_0x63b2('0x10')](_0x63b2('0xb'),auth[_0x63b2('0xc')](),controller[_0x63b2('0x11')]);module[_0x63b2('0x12')]=router;
\ No newline at end of file
+var _0x7eaa=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','put','update','destroy'];(function(_0x9814cb,_0x5e5605){var _0x200928=function(_0x2e16eb){while(--_0x2e16eb){_0x9814cb['push'](_0x9814cb['shift']());}};_0x200928(++_0x5e5605);}(_0x7eaa,0x13c));var _0xa7ea=function(_0x3d5929,_0x22f75c){_0x3d5929=_0x3d5929-0x0;var _0x448d41=_0x7eaa[_0x3d5929];return _0x448d41;};'use strict';var multer=require(_0xa7ea('0x0'));var util=require(_0xa7ea('0x1'));var path=require(_0xa7ea('0x2'));var timeout=require(_0xa7ea('0x3'));var express=require(_0xa7ea('0x4'));var router=express[_0xa7ea('0x5')]();var fs_extra=require(_0xa7ea('0x6'));var auth=require(_0xa7ea('0x7'));var interaction=require(_0xa7ea('0x8'));var config=require(_0xa7ea('0x9'));var controller=require('./mailApplication.controller');router['get'](_0xa7ea('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xa7ea('0xb')](_0xa7ea('0xa'),auth['isAuthenticated'](),controller[_0xa7ea('0xc')]);router['delete'](_0xa7ea('0xa'),auth['isAuthenticated'](),controller[_0xa7ea('0xd')]);module[_0xa7ea('0xe')]=router;
\ No newline at end of file
index 2257c05..f5c9046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2357=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x2357,0xa9));var _0x7235=function(_0x4c8fa9,_0x2a1337){_0x4c8fa9=_0x4c8fa9-0x0;var _0x192648=_0x2357[_0x4c8fa9];return _0x192648;};'use strict';var Sequelize=require('sequelize');module[_0x7235('0x0')]={'priority':{'type':Sequelize[_0x7235('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x7235('0x2')],'allowNull':![],'defaultValue':_0x7235('0x3')},'appdata':{'type':Sequelize[_0x7235('0x4')]()},'description':{'type':Sequelize[_0x7235('0x2')]},'interval':{'type':Sequelize[_0x7235('0x2')],'defaultValue':_0x7235('0x5')}};
\ No newline at end of file
+var _0xae9b=['STRING','noop','TEXT','exports','INTEGER'];(function(_0x49d41c,_0x2bdc35){var _0xb64c5f=function(_0x28f535){while(--_0x28f535){_0x49d41c['push'](_0x49d41c['shift']());}};_0xb64c5f(++_0x2bdc35);}(_0xae9b,0x107));var _0xbae9=function(_0x5a93eb,_0x29345b){_0x5a93eb=_0x5a93eb-0x0;var _0x11d2fa=_0xae9b[_0x5a93eb];return _0x11d2fa;};'use strict';var Sequelize=require('sequelize');module[_0xbae9('0x0')]={'priority':{'type':Sequelize[_0xbae9('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xbae9('0x2')],'allowNull':![],'defaultValue':_0xbae9('0x3')},'appdata':{'type':Sequelize[_0xbae9('0x4')]()},'description':{'type':Sequelize[_0xbae9('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 34bafd2..fddc3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x5e73a9,_0x4fde31){var _0x58e9b6=function(_0x201638){while(--_0x201638){_0x5e73a9['push'](_0x5e73a9['shift']());}};_0x58e9b6(++_0x4fde31);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2f9b61,_0x19c09a){_0x2f9b61=_0x2f9b61-0x0;var _0x14f41f=_0xb43b[_0x2f9b61];return _0x14f41f;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
+var _0xac4a=['Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','show','params','model','keys','MailApplication','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set'];(function(_0x1e003b,_0x3e4ded){var _0x268789=function(_0x559062){while(--_0x559062){_0x1e003b['push'](_0x1e003b['shift']());}};_0x268789(++_0x3e4ded);}(_0xac4a,0x13f));var _0xaac4=function(_0x217199,_0x27e1e2){_0x217199=_0x217199-0x0;var _0x46f204=_0xac4a[_0x217199];return _0x46f204;};'use strict';var emlformat=require(_0xaac4('0x0'));var rimraf=require(_0xaac4('0x1'));var zipdir=require(_0xaac4('0x2'));var jsonpatch=require(_0xaac4('0x3'));var rp=require(_0xaac4('0x4'));var moment=require(_0xaac4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaac4('0x6'));var path=require(_0xaac4('0x7'));var sox=require(_0xaac4('0x8'));var csv=require('to-csv');var ejs=require(_0xaac4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaac4('0xa'));var squel=require('squel');var crypto=require(_0xaac4('0xb'));var jsforce=require(_0xaac4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaac4('0xd'));var Papa=require('papaparse');var Redis=require(_0xaac4('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaac4('0xf'));var hardwareService=require(_0xaac4('0x10'));var logger=require(_0xaac4('0x11'))(_0xaac4('0x12'));var utils=require(_0xaac4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaac4('0x14'))['db'];function respondWithStatusCode(_0x2e2d02,_0x45e512){_0x45e512=_0x45e512||0xcc;return function(_0x5a4801){if(_0x5a4801){return _0x2e2d02[_0xaac4('0x15')](_0x45e512);}return _0x2e2d02[_0xaac4('0x16')](_0x45e512)['end']();};}function respondWithResult(_0xf06b1d,_0x2b20d0){_0x2b20d0=_0x2b20d0||0xc8;return function(_0x46698d){if(_0x46698d){return _0xf06b1d[_0xaac4('0x16')](_0x2b20d0)[_0xaac4('0x17')](_0x46698d);}};}function respondWithFilteredResult(_0x2fbeb7,_0x31b7e5){return function(_0x1df9ae){if(_0x1df9ae){var _0x233278=typeof _0x31b7e5[_0xaac4('0x18')]===_0xaac4('0x19')&&typeof _0x31b7e5[_0xaac4('0x1a')]===_0xaac4('0x19');var _0x52686a=_0x1df9ae[_0xaac4('0x1b')];var _0x52085a=_0x233278?0x0:_0x31b7e5[_0xaac4('0x18')];var _0x5b6fd6=_0x233278?_0x1df9ae[_0xaac4('0x1b')]:_0x31b7e5[_0xaac4('0x18')]+_0x31b7e5[_0xaac4('0x1a')];var _0x271bcb;if(_0x5b6fd6>=_0x52686a){_0x5b6fd6=_0x52686a;_0x271bcb=0xc8;}else{_0x271bcb=0xce;}_0x2fbeb7[_0xaac4('0x16')](_0x271bcb);return _0x2fbeb7[_0xaac4('0x1c')](_0xaac4('0x1d'),_0x52085a+'-'+_0x5b6fd6+'/'+_0x52686a)[_0xaac4('0x17')](_0x1df9ae);}return null;};}function patchUpdates(_0x4166ee){return function(_0x480fb0){try{jsonpatch[_0xaac4('0x1e')](_0x480fb0,_0x4166ee,!![]);}catch(_0x4e1e89){return BPromise[_0xaac4('0x1f')](_0x4e1e89);}return _0x480fb0[_0xaac4('0x20')]();};}function saveUpdates(_0x43625c,_0x477b77){return function(_0x17140f){if(_0x17140f){return _0x17140f[_0xaac4('0x21')](_0x43625c)['then'](function(_0x43ccdc){return _0x43ccdc;});}return null;};}function removeEntity(_0x27a84d,_0x174860){return function(_0x4f10ec){if(_0x4f10ec){return _0x4f10ec[_0xaac4('0x22')]()[_0xaac4('0x23')](function(){_0x27a84d[_0xaac4('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24186b,_0x4f1b65){return function(_0x54203b){if(!_0x54203b){_0x24186b['sendStatus'](0x194);}return _0x54203b;};}function handleError(_0x5a0bb3,_0x22d5a6){_0x22d5a6=_0x22d5a6||0x1f4;return function(_0x17d25f){logger[_0xaac4('0x24')](_0x17d25f[_0xaac4('0x25')]);if(_0x17d25f[_0xaac4('0x26')]){delete _0x17d25f[_0xaac4('0x26')];}_0x5a0bb3[_0xaac4('0x16')](_0x22d5a6)[_0xaac4('0x27')](_0x17d25f);};}exports[_0xaac4('0x28')]=function(_0x386c9b,_0x4d0f5f){var _0x316445={'raw':!![],'where':{'id':_0x386c9b[_0xaac4('0x29')]['id']}},_0x16b33c={};_0x16b33c[_0xaac4('0x2a')]=_[_0xaac4('0x2b')](db[_0xaac4('0x2c')]['rawAttributes']);_0x16b33c[_0xaac4('0x2d')]=_['keys'](_0x386c9b[_0xaac4('0x2d')]);_0x16b33c[_0xaac4('0x2e')]=_[_0xaac4('0x2f')](_0x16b33c[_0xaac4('0x2a')],_0x16b33c['query']);_0x316445['attributes']=_['intersection'](_0x16b33c[_0xaac4('0x2a')],qs[_0xaac4('0x30')](_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x30')]));_0x316445[_0xaac4('0x31')]=_0x316445[_0xaac4('0x31')][_0xaac4('0x32')]?_0x316445[_0xaac4('0x31')]:_0x16b33c[_0xaac4('0x2a')];if(_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x33')]){_0x316445[_0xaac4('0x34')]=[{'all':!![]}];}_0x316445=_[_0xaac4('0x35')]({},_0x316445,_0x386c9b[_0xaac4('0x36')]);return db[_0xaac4('0x2c')]['find'](_0x316445)['then'](handleEntityNotFound(_0x4d0f5f,null))[_0xaac4('0x23')](respondWithResult(_0x4d0f5f,null))[_0xaac4('0x37')](handleError(_0x4d0f5f,null));};exports[_0xaac4('0x21')]=function(_0x5e6080,_0x191d0f){if(_0x5e6080[_0xaac4('0x38')]['id']){delete _0x5e6080[_0xaac4('0x38')]['id'];}return db[_0xaac4('0x2c')][_0xaac4('0x39')]({'where':{'id':_0x5e6080[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x191d0f,null))['then'](saveUpdates(_0x5e6080[_0xaac4('0x38')],null))[_0xaac4('0x23')](respondWithResult(_0x191d0f,null))[_0xaac4('0x37')](handleError(_0x191d0f,null));};exports['destroy']=function(_0x36d84a,_0x497e7b){return db['MailApplication'][_0xaac4('0x39')]({'where':{'id':_0x36d84a[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x497e7b,null))['then'](removeEntity(_0x497e7b,null))['catch'](handleError(_0x497e7b,null));};
\ No newline at end of file
index ba08e95..f341b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55a8=['mail_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define'];(function(_0x470252,_0x457603){var _0xeec8b4=function(_0x2cca72){while(--_0x2cca72){_0x470252['push'](_0x470252['shift']());}};_0xeec8b4(++_0x457603);}(_0x55a8,0x13d));var _0x855a=function(_0x130ac6,_0x4df135){_0x130ac6=_0x130ac6-0x0;var _0x4eefd7=_0x55a8[_0x130ac6];return _0x4eefd7;};'use strict';var _=require(_0x855a('0x0'));var util=require(_0x855a('0x1'));var logger=require(_0x855a('0x2'))(_0x855a('0x3'));var moment=require(_0x855a('0x4'));var BPromise=require(_0x855a('0x5'));var rp=require(_0x855a('0x6'));var fs=require('fs');var path=require(_0x855a('0x7'));var rimraf=require(_0x855a('0x8'));var config=require(_0x855a('0x9'));var attributes=require(_0x855a('0xa'));module[_0x855a('0xb')]=function(_0x3fd7ec,_0x96ca5a){return _0x3fd7ec[_0x855a('0xc')]('MailApplication',attributes,{'tableName':_0x855a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x855a('0xe')});};
\ No newline at end of file
+var _0x8888=['utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailApplication.attributes','exports','define','mail_applications'];(function(_0x4afac5,_0x1ab4ed){var _0x2404b3=function(_0x5c700b){while(--_0x5c700b){_0x4afac5['push'](_0x4afac5['shift']());}};_0x2404b3(++_0x1ab4ed);}(_0x8888,0x18a));var _0x8888=function(_0x1f7ceb,_0x56450a){_0x1f7ceb=_0x1f7ceb-0x0;var _0x1f558b=_0x8888[_0x1f7ceb];return _0x1f558b;};'use strict';var _=require(_0x8888('0x0'));var util=require(_0x8888('0x1'));var logger=require('../../config/logger')(_0x8888('0x2'));var moment=require(_0x8888('0x3'));var BPromise=require(_0x8888('0x4'));var rp=require(_0x8888('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8888('0x6'));var config=require(_0x8888('0x7'));var attributes=require(_0x8888('0x8'));module[_0x8888('0x9')]=function(_0xa04b0b,_0x120678){return _0xa04b0b[_0x8888('0xa')]('MailApplication',attributes,{'tableName':_0x8888('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8888('0xc'),'collate':_0x8888('0xd')});};
\ No newline at end of file
index 67b884b..e344485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b33=['debug','request\x20sent','error','code','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','update','body','options','raw','stringify','lodash','moment','ioredis','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x298fbb,_0x53a4ac){var _0x41470a=function(_0x40f4d4){while(--_0x40f4d4){_0x298fbb['push'](_0x298fbb['shift']());}};_0x41470a(++_0x53a4ac);}(_0x5b33,0xaf));var _0x35b3=function(_0x44dc4c,_0x357e6a){_0x44dc4c=_0x44dc4c-0x0;var _0x4e644e=_0x5b33[_0x44dc4c];return _0x4e644e;};'use strict';var _=require(_0x35b3('0x0'));var util=require('util');var moment=require(_0x35b3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35b3('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x35b3('0x3'));var config=require(_0x35b3('0x4'));var jayson=require(_0x35b3('0x5'));var client=jayson[_0x35b3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e5821,_0x3d823,_0x442638){return new BPromise(function(_0x5cfb30,_0x5ec9da){return client['request'](_0x5e5821,_0x442638)[_0x35b3('0x7')](function(_0x5f191e){logger[_0x35b3('0x8')]('MailApplication,\x20%s,\x20%s',_0x3d823,'request\x20sent');logger[_0x35b3('0x9')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3d823,_0x35b3('0xa'),JSON['stringify'](_0x5f191e));if(_0x5f191e['error']){if(_0x5f191e[_0x35b3('0xb')][_0x35b3('0xc')]===0x1f4){logger[_0x35b3('0xb')](_0x35b3('0xd'),_0x3d823,_0x5f191e[_0x35b3('0xb')][_0x35b3('0xe')]);return _0x5ec9da(_0x5f191e[_0x35b3('0xb')]['message']);}logger['error']('MailApplication,\x20%s,\x20%s',_0x3d823,_0x5f191e[_0x35b3('0xb')][_0x35b3('0xe')]);return _0x5cfb30(_0x5f191e['error']['message']);}else{logger[_0x35b3('0x8')](_0x35b3('0xd'),_0x3d823,_0x35b3('0xa'));_0x5cfb30(_0x5f191e[_0x35b3('0xf')]['message']);}})[_0x35b3('0x10')](function(_0x279255){logger[_0x35b3('0xb')](_0x35b3('0xd'),_0x3d823,_0x279255);_0x5ec9da(_0x279255);});});}exports[_0x35b3('0x11')]=function(_0x2a85a8){var _0x33d076=this;return new Promise(function(_0x2dd999,_0x4b6906){return db['MailApplication'][_0x35b3('0x12')](_0x2a85a8[_0x35b3('0x13')],{'raw':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8[_0x35b3('0x14')][_0x35b3('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a85a8['options']?_0x2a85a8['options']['where']||null:null,'attributes':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8[_0x35b3('0x14')]['attributes']||null:null,'limit':_0x2a85a8[_0x35b3('0x14')]?_0x2a85a8['options']['limit']||null:null})[_0x35b3('0x7')](function(_0x31d1e5){logger[_0x35b3('0x8')](_0x35b3('0x11'),_0x2a85a8);logger['debug'](_0x35b3('0x11'),_0x2a85a8,JSON[_0x35b3('0x16')](_0x31d1e5));_0x2dd999(_0x31d1e5);})[_0x35b3('0x10')](function(_0xff00d){logger[_0x35b3('0xb')]('UpdateMailApplication',_0xff00d[_0x35b3('0xe')],_0x2a85a8);_0x4b6906(_0x33d076[_0x35b3('0xb')](0x1f4,_0xff00d[_0x35b3('0xe')]));});});};
\ No newline at end of file
+var _0xd813=['body','options','where','attributes','limit','stringify','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error','MailApplication,\x20%s,\x20%s','message','catch','UpdateMailApplication','MailApplication'];(function(_0x212877,_0xa07aab){var _0x2e4ff3=function(_0x54c4af){while(--_0x54c4af){_0x212877['push'](_0x212877['shift']());}};_0x2e4ff3(++_0xa07aab);}(_0xd813,0x19c));var _0x3d81=function(_0x1c6a0c,_0x5705ab){_0x1c6a0c=_0x1c6a0c-0x0;var _0x58c88c=_0xd813[_0x1c6a0c];return _0x58c88c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3d81('0x0'));var BPromise=require(_0x3d81('0x1'));var rs=require(_0x3d81('0x2'));var fs=require('fs');var Redis=require(_0x3d81('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3d81('0x4'));var logger=require(_0x3d81('0x5'))(_0x3d81('0x6'));var config=require(_0x3d81('0x7'));var jayson=require(_0x3d81('0x8'));var client=jayson[_0x3d81('0x9')][_0x3d81('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a94c6,_0x35f582,_0x36275e){return new BPromise(function(_0x528344,_0x14bbfd){return client[_0x3d81('0xb')](_0x2a94c6,_0x36275e)[_0x3d81('0xc')](function(_0x3780d7){logger[_0x3d81('0xd')]('MailApplication,\x20%s,\x20%s',_0x35f582,_0x3d81('0xe'));logger[_0x3d81('0xf')](_0x3d81('0x10'),_0x35f582,_0x3d81('0xe'),JSON['stringify'](_0x3780d7));if(_0x3780d7[_0x3d81('0x11')]){if(_0x3780d7['error']['code']===0x1f4){logger['error'](_0x3d81('0x12'),_0x35f582,_0x3780d7[_0x3d81('0x11')][_0x3d81('0x13')]);return _0x14bbfd(_0x3780d7['error'][_0x3d81('0x13')]);}logger[_0x3d81('0x11')](_0x3d81('0x12'),_0x35f582,_0x3780d7['error'][_0x3d81('0x13')]);return _0x528344(_0x3780d7[_0x3d81('0x11')]['message']);}else{logger[_0x3d81('0xd')](_0x3d81('0x12'),_0x35f582,'request\x20sent');_0x528344(_0x3780d7['result'][_0x3d81('0x13')]);}})[_0x3d81('0x14')](function(_0x233e0e){logger[_0x3d81('0x11')](_0x3d81('0x12'),_0x35f582,_0x233e0e);_0x14bbfd(_0x233e0e);});});}exports[_0x3d81('0x15')]=function(_0x5ad83b){var _0x4285ec=this;return new Promise(function(_0x5e1770,_0x3a3281){return db[_0x3d81('0x16')]['update'](_0x5ad83b[_0x3d81('0x17')],{'raw':_0x5ad83b[_0x3d81('0x18')]?_0x5ad83b[_0x3d81('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ad83b[_0x3d81('0x18')]?_0x5ad83b[_0x3d81('0x18')][_0x3d81('0x19')]||null:null,'attributes':_0x5ad83b['options']?_0x5ad83b[_0x3d81('0x18')][_0x3d81('0x1a')]||null:null,'limit':_0x5ad83b[_0x3d81('0x18')]?_0x5ad83b[_0x3d81('0x18')][_0x3d81('0x1b')]||null:null})['then'](function(_0x2ceba6){logger['info']('UpdateMailApplication',_0x5ad83b);logger[_0x3d81('0xf')](_0x3d81('0x15'),_0x5ad83b,JSON[_0x3d81('0x1c')](_0x2ceba6));_0x5e1770(_0x2ceba6);})[_0x3d81('0x14')](function(_0x11412d){logger[_0x3d81('0x11')](_0x3d81('0x15'),_0x11412d[_0x3d81('0x13')],_0x5ad83b);_0x3a3281(_0x4285ec[_0x3d81('0x11')](0x1f4,_0x11412d[_0x3d81('0x13')]));});});};
\ No newline at end of file
index 0c0abfc..e7c8d29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e4c=['put','mail','delete','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','get','index','/:id','show','/:id/messages','getMessages','/:id/download','isAuthenticated','download','post','addMessage','/:id/tags','tracked','mailinteraction:addtags','addTags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e4c,0x1b9));var _0xc4e4=function(_0x67edc0,_0x1f079f){_0x67edc0=_0x67edc0-0x0;var _0x46712f=_0x4e4c[_0x67edc0];return _0x46712f;};'use strict';var express=require(_0xc4e4('0x0'));var router=express[_0xc4e4('0x1')]();var auth=require(_0xc4e4('0x2'));var interaction=require(_0xc4e4('0x3'));var controller=require('./mailInteraction.controller');router[_0xc4e4('0x4')]('/',auth['isAuthenticated'](),controller[_0xc4e4('0x5')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xc4e4('0x4')](_0xc4e4('0x6'),auth['isAuthenticated'](),controller[_0xc4e4('0x7')]);router[_0xc4e4('0x4')](_0xc4e4('0x8'),auth['isAuthenticated'](),controller[_0xc4e4('0x9')]);router['get'](_0xc4e4('0xa'),auth[_0xc4e4('0xb')](),controller[_0xc4e4('0xc')]);router[_0xc4e4('0xd')]('/',auth[_0xc4e4('0xb')](),controller['create']);router[_0xc4e4('0xd')]('/:id/messages',auth[_0xc4e4('0xb')](),controller[_0xc4e4('0xe')]);router[_0xc4e4('0xd')](_0xc4e4('0xf'),auth[_0xc4e4('0xb')](),interaction[_0xc4e4('0x10')]('mail',_0xc4e4('0x11')),controller[_0xc4e4('0x12')]);router[_0xc4e4('0x13')](_0xc4e4('0x6'),auth[_0xc4e4('0xb')](),interaction['tracked'](_0xc4e4('0x14'),'mailinteraction:update'),controller['update']);router[_0xc4e4('0x15')](_0xc4e4('0x6'),auth[_0xc4e4('0xb')](),interaction[_0xc4e4('0x10')](_0xc4e4('0x14'),'mailinteraction:destroy'),controller['destroy']);router[_0xc4e4('0x15')](_0xc4e4('0xf'),auth[_0xc4e4('0xb')](),controller[_0xc4e4('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x5186=['mail','mailinteraction:addtags','put','mailinteraction:update','mailinteraction:destroy','delete','removeTags','exports','express','Router','../../components/auth/service','./mailInteraction.controller','get','isAuthenticated','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked'];(function(_0x4b4277,_0x22676f){var _0x1ff405=function(_0x2fa9e2){while(--_0x2fa9e2){_0x4b4277['push'](_0x4b4277['shift']());}};_0x1ff405(++_0x22676f);}(_0x5186,0xbe));var _0x6518=function(_0x29c29d,_0x8bce63){_0x29c29d=_0x29c29d-0x0;var _0x4a1475=_0x5186[_0x29c29d];return _0x4a1475;};'use strict';var express=require(_0x6518('0x0'));var router=express[_0x6518('0x1')]();var auth=require(_0x6518('0x2'));var interaction=require('../../components/interaction/service');var controller=require(_0x6518('0x3'));router[_0x6518('0x4')]('/',auth[_0x6518('0x5')](),controller['index']);router[_0x6518('0x4')](_0x6518('0x6'),auth[_0x6518('0x5')](),controller['describe']);router[_0x6518('0x4')](_0x6518('0x7'),auth[_0x6518('0x5')](),controller[_0x6518('0x8')]);router[_0x6518('0x4')](_0x6518('0x9'),auth[_0x6518('0x5')](),controller[_0x6518('0xa')]);router[_0x6518('0x4')](_0x6518('0xb'),auth[_0x6518('0x5')](),controller[_0x6518('0xc')]);router[_0x6518('0xd')]('/',auth[_0x6518('0x5')](),controller[_0x6518('0xe')]);router['post'](_0x6518('0x9'),auth[_0x6518('0x5')](),controller[_0x6518('0xf')]);router['post'](_0x6518('0x10'),auth['isAuthenticated'](),interaction[_0x6518('0x11')](_0x6518('0x12'),_0x6518('0x13')),controller['addTags']);router[_0x6518('0x14')](_0x6518('0x7'),auth[_0x6518('0x5')](),interaction[_0x6518('0x11')](_0x6518('0x12'),_0x6518('0x15')),controller['update']);router['delete'](_0x6518('0x7'),auth[_0x6518('0x5')](),interaction['tracked'](_0x6518('0x12'),_0x6518('0x16')),controller['destroy']);router[_0x6518('0x17')](_0x6518('0x10'),auth[_0x6518('0x5')](),controller[_0x6518('0x18')]);module[_0x6518('0x19')]=router;
\ No newline at end of file
index 0df7076..295419f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ad8=['long','out','ENUM','iconv','exports','BOOLEAN','DATE','STRING','TEXT'];(function(_0xc22619,_0x4321f9){var _0x3782c9=function(_0x1152a1){while(--_0x1152a1){_0xc22619['push'](_0xc22619['shift']());}};_0x3782c9(++_0x4321f9);}(_0x8ad8,0x17d));var _0x88ad=function(_0x3c0c4c,_0x3a02e8){_0x3c0c4c=_0x3c0c4c-0x0;var _0x5b6428=_0x8ad8[_0x3c0c4c];return _0x5b6428;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x88ad('0x0'));module[_0x88ad('0x1')]={'closed':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x88ad('0x3')]},'disposition':{'type':Sequelize[_0x88ad('0x4')]},'secondDisposition':{'type':Sequelize[_0x88ad('0x4')]},'thirdDisposition':{'type':Sequelize[_0x88ad('0x4')]},'note':{'type':Sequelize[_0x88ad('0x4')]},'inReplyTo':{'type':Sequelize[_0x88ad('0x4')](0x1fe)},'to':{'type':Sequelize[_0x88ad('0x4')]},'cc':{'type':Sequelize[_0x88ad('0x5')](_0x88ad('0x6'))},'subject':{'type':Sequelize[_0x88ad('0x5')]()},'attach':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x88ad('0x3')]},'substatus':{'type':Sequelize[_0x88ad('0x4')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x88ad('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x88ad('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x88ad('0x8')]('in',_0x88ad('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x88ad('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1b78=['sequelize','iconv','STRING','TEXT','long','BOOLEAN','DATE','ENUM','out'];(function(_0x5aef5a,_0x3ad0db){var _0xcff0b4=function(_0x414da0){while(--_0x414da0){_0x5aef5a['push'](_0x5aef5a['shift']());}};_0xcff0b4(++_0x3ad0db);}(_0x1b78,0x105));var _0x81b7=function(_0x9b25d,_0x3657af){_0x9b25d=_0x9b25d-0x0;var _0x57159d=_0x1b78[_0x9b25d];return _0x57159d;};'use strict';var Sequelize=require(_0x81b7('0x0'));var iconv=require(_0x81b7('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x81b7('0x2')]},'thirdDisposition':{'type':Sequelize[_0x81b7('0x2')]},'note':{'type':Sequelize[_0x81b7('0x2')]},'inReplyTo':{'type':Sequelize[_0x81b7('0x2')](0x1fe)},'to':{'type':Sequelize[_0x81b7('0x2')]},'cc':{'type':Sequelize[_0x81b7('0x3')](_0x81b7('0x4'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0x81b7('0x5')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x81b7('0x6')]},'substatus':{'type':Sequelize[_0x81b7('0x2')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x81b7('0x7')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x81b7('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x81b7('0x7')]('in',_0x81b7('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x81b7('0x5')],'defaultValue':![]}};
\ No newline at end of file
index 4d730b5..e7c902d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe538=['getMessages','findOne','filters','hasOwnProperty','order','sort','where','MailInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','true','rows','addTags','omit','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','server','root','files','attachments','Attachment','Attachments','Messages','get','missing.recipient@your.company.com','subject','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','push','readFileSync','build','writeFileSync','message%d.eml','unlinkSync','rimraf','zip-dir','bluebird','path','lodash','juice','ioredis','../../components/interaction/service','../../config/logger','api','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','set','update','then','destroy','error','name','send','map','rawAttributes','type','key','getOptions','findAll','mail','catch','model','query','keys','intersection','attributes','fields','length','includeAll','include','merge','options','MailInteraction','find','body','params','describe','addMessage','MailMessage','ids'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xe538,0x173));var _0x8e53=function(_0x33a21a,_0x22d1a8){_0x33a21a=_0x33a21a-0x0;var _0x4c628e=_0xe538[_0x33a21a];return _0x4c628e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8e53('0x0'));var zipdir=require(_0x8e53('0x1'));var moment=require('moment');var BPromise=require(_0x8e53('0x2'));var util=require('util');var path=require(_0x8e53('0x3'));var fs=require('fs');var _=require(_0x8e53('0x4'));var juice=require(_0x8e53('0x5'));var Redis=require(_0x8e53('0x6'));var interaction=require(_0x8e53('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x8e53('0x8'))(_0x8e53('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var htmlEntities=require('html-entities');config[_0x8e53('0xa')]=_[_0x8e53('0xb')](config[_0x8e53('0xa')],{'host':_0x8e53('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8e53('0xa')]));require(_0x8e53('0xd'))[_0x8e53('0xe')](socket);function respondWithStatusCode(_0x35c41b,_0x59928f){_0x59928f=_0x59928f||0xcc;return function(_0x35973d){if(_0x35973d){return _0x35c41b[_0x8e53('0xf')](_0x59928f);}return _0x35c41b['status'](_0x59928f)[_0x8e53('0x10')]();};}function respondWithResult(_0x3c031c,_0x209482){_0x209482=_0x209482||0xc8;return function(_0x589369){if(_0x589369){return _0x3c031c[_0x8e53('0x11')](_0x209482)[_0x8e53('0x12')](_0x589369);}};}function respondWithFilteredResult(_0x43fbc8,_0x41688d){return function(_0x4ef3aa){if(_0x4ef3aa){var _0x274dec=typeof _0x41688d['offset']===_0x8e53('0x13')&&typeof _0x41688d[_0x8e53('0x14')]===_0x8e53('0x13');var _0x3601b8=_0x4ef3aa[_0x8e53('0x15')];var _0x3f5097=_0x274dec?0x0:_0x41688d['offset'];var _0x2d50c6=_0x274dec?_0x4ef3aa[_0x8e53('0x15')]:_0x41688d[_0x8e53('0x16')]+_0x41688d['limit'];var _0x81be29;if(_0x2d50c6>=_0x3601b8){_0x2d50c6=_0x3601b8;_0x81be29=0xc8;}else{_0x81be29=0xce;}_0x43fbc8[_0x8e53('0x11')](_0x81be29);return _0x43fbc8[_0x8e53('0x17')]('Content-Range',_0x3f5097+'-'+_0x2d50c6+'/'+_0x3601b8)['json'](_0x4ef3aa);}return null;};}function saveUpdates(_0x45efa3){return function(_0x1ce726){if(_0x1ce726){return _0x1ce726[_0x8e53('0x18')](_0x45efa3)[_0x8e53('0x19')](function(_0x33f49d){return _0x33f49d;});}return null;};}function removeEntity(_0x2af34b){return function(_0xd39987){if(_0xd39987){return _0xd39987[_0x8e53('0x1a')]()[_0x8e53('0x19')](function(){_0x2af34b[_0x8e53('0x11')](0xcc)[_0x8e53('0x10')]();});}};}function handleEntityNotFound(_0x209f75){return function(_0x54b557){if(!_0x54b557){_0x209f75['sendStatus'](0x194);}return _0x54b557;};}function handleError(_0x4bd77b,_0x10c894){_0x10c894=_0x10c894||0x1f4;return function(_0x15910f){logger[_0x8e53('0x1b')](_0x15910f['stack']);if(_0x15910f[_0x8e53('0x1c')]){delete _0x15910f[_0x8e53('0x1c')];}_0x4bd77b['status'](_0x10c894)[_0x8e53('0x1d')](_0x15910f);};}exports['index']=function(_0x706e0f,_0x1799c1){var _0x365da0={};var _0x337bbf=_[_0x8e53('0x1e')](db['MailInteraction'][_0x8e53('0x1f')],function(_0x2b3c23){return{'name':_0x2b3c23['fieldName'],'type':_0x2b3c23[_0x8e53('0x20')][_0x8e53('0x21')]};});_0x365da0=qs[_0x8e53('0x22')](_0x337bbf,_0x706e0f);return interaction[_0x8e53('0x23')](_0x8e53('0x24'),_0x706e0f['query'],_0x706e0f['user'],_0x365da0,_0x337bbf)[_0x8e53('0x19')](respondWithFilteredResult(_0x1799c1,_0x365da0))[_0x8e53('0x25')](handleError(_0x1799c1,null));};exports['show']=function(_0x201702,_0x8212e7){var _0x30ef0b={'raw':![],'where':{'id':_0x201702['params']['id']}},_0x46e023={};_0x46e023[_0x8e53('0x26')]=_['keys'](db['MailInteraction'][_0x8e53('0x1f')]);_0x46e023[_0x8e53('0x27')]=_[_0x8e53('0x28')](_0x201702[_0x8e53('0x27')]);_0x46e023['filters']=_[_0x8e53('0x29')](_0x46e023[_0x8e53('0x26')],_0x46e023['query']);_0x30ef0b[_0x8e53('0x2a')]=_[_0x8e53('0x29')](_0x46e023[_0x8e53('0x26')],qs[_0x8e53('0x2b')](_0x201702[_0x8e53('0x27')][_0x8e53('0x2b')]));_0x30ef0b[_0x8e53('0x2a')]=_0x30ef0b[_0x8e53('0x2a')][_0x8e53('0x2c')]?_0x30ef0b[_0x8e53('0x2a')]:_0x46e023[_0x8e53('0x26')];if(_0x201702[_0x8e53('0x27')][_0x8e53('0x2d')]){_0x30ef0b[_0x8e53('0x2e')]=[{'all':!![]}];}_0x30ef0b=_[_0x8e53('0x2f')]({},_0x30ef0b,_0x201702[_0x8e53('0x30')]);return db[_0x8e53('0x31')][_0x8e53('0x32')](_0x30ef0b)[_0x8e53('0x19')](handleEntityNotFound(_0x8212e7,null))['then'](respondWithResult(_0x8212e7,null))[_0x8e53('0x25')](handleError(_0x8212e7,null));};exports['create']=function(_0x285ce2,_0x3cbeaa){return db['MailInteraction']['create'](_0x285ce2[_0x8e53('0x33')],{})[_0x8e53('0x19')](respondWithResult(_0x3cbeaa,0xc9))[_0x8e53('0x25')](handleError(_0x3cbeaa,null));};exports['update']=function(_0xaa5053,_0x4aabf6){if(_0xaa5053[_0x8e53('0x33')]['id']){delete _0xaa5053[_0x8e53('0x33')]['id'];}return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0xaa5053[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x4aabf6,null))[_0x8e53('0x19')](saveUpdates(_0xaa5053[_0x8e53('0x33')],null))[_0x8e53('0x19')](respondWithResult(_0x4aabf6,null))[_0x8e53('0x25')](handleError(_0x4aabf6,null));};exports[_0x8e53('0x1a')]=function(_0x2d0345,_0x4412ac){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x2d0345[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x4412ac,null))[_0x8e53('0x19')](removeEntity(_0x4412ac,null))[_0x8e53('0x25')](handleError(_0x4412ac,null));};exports[_0x8e53('0x35')]=function(_0x2f11f5,_0x55f328){return db['MailInteraction'][_0x8e53('0x35')]()['then'](respondWithResult(_0x55f328,null))[_0x8e53('0x25')](handleError(_0x55f328,null));};exports[_0x8e53('0x36')]=function(_0x414a9b,_0x496a94){return db[_0x8e53('0x37')]['find']({'where':{'id':_0x414a9b[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x496a94,null))[_0x8e53('0x19')](function(_0x290440){if(_0x290440){return _0x290440[_0x8e53('0x36')](_0x414a9b[_0x8e53('0x33')][_0x8e53('0x38')],_['omit'](_0x414a9b[_0x8e53('0x33')],[_0x8e53('0x38'),'id'])||{});}})[_0x8e53('0x19')](respondWithResult(_0x496a94,null))[_0x8e53('0x25')](handleError(_0x496a94,null));};exports[_0x8e53('0x39')]=function(_0x179fbf,_0x15ff9e){var _0x44beb6={'raw':![],'where':{}};var _0x49b1e8={};var _0x1de2d5={'count':0x0,'rows':[]};return db['MailInteraction'][_0x8e53('0x3a')]({'where':{'id':_0x179fbf[_0x8e53('0x34')]['id']}})['then'](handleEntityNotFound(_0x15ff9e,null))[_0x8e53('0x19')](function(_0x2213cf){if(_0x2213cf){_0x49b1e8['model']=_['keys'](db[_0x8e53('0x37')][_0x8e53('0x1f')]);_0x49b1e8[_0x8e53('0x27')]=_[_0x8e53('0x28')](_0x179fbf[_0x8e53('0x27')]);_0x49b1e8[_0x8e53('0x3b')]=_[_0x8e53('0x29')](_0x49b1e8[_0x8e53('0x26')],_0x49b1e8['query']);_0x44beb6['attributes']=_[_0x8e53('0x29')](_0x49b1e8[_0x8e53('0x26')],qs[_0x8e53('0x2b')](_0x179fbf[_0x8e53('0x27')]['fields']));_0x44beb6[_0x8e53('0x2a')]=_0x44beb6[_0x8e53('0x2a')][_0x8e53('0x2c')]?_0x44beb6['attributes']:_0x49b1e8[_0x8e53('0x26')];if(!_0x179fbf[_0x8e53('0x27')][_0x8e53('0x3c')]('nolimit')){_0x44beb6[_0x8e53('0x14')]=qs[_0x8e53('0x14')](_0x179fbf['query'][_0x8e53('0x14')]);_0x44beb6[_0x8e53('0x16')]=qs[_0x8e53('0x16')](_0x179fbf['query']['offset']);}_0x44beb6[_0x8e53('0x3d')]=qs[_0x8e53('0x3e')](_0x179fbf['query'][_0x8e53('0x3e')]);_0x44beb6[_0x8e53('0x3f')]=qs[_0x8e53('0x3b')](_['pick'](_0x179fbf[_0x8e53('0x27')],_0x49b1e8[_0x8e53('0x3b')]));_0x44beb6['where'][_0x8e53('0x40')]=_0x2213cf['id'];if(_0x179fbf[_0x8e53('0x27')][_0x8e53('0x41')]){_0x44beb6['where']=_[_0x8e53('0x2f')](_0x44beb6[_0x8e53('0x3f')],{'$or':_[_0x8e53('0x1e')](_0x44beb6[_0x8e53('0x2a')],function(_0x1691fd){var _0x2acf0c={};_0x2acf0c[_0x1691fd]={'$like':'%'+_0x179fbf['query'][_0x8e53('0x41')]+'%'};return _0x2acf0c;})});}if(_0x179fbf[_0x8e53('0x27')][_0x8e53('0x42')]){var _0x20f8ce=_0x179fbf[_0x8e53('0x27')]['$gte']['split'](',');var _0x54ed2d={};_0x54ed2d[_0x20f8ce[0x0]]={'$gte':moment(_0x20f8ce[0x1])[_0x8e53('0x43')](_0x8e53('0x44'))};_0x44beb6[_0x8e53('0x3f')]=_['merge'](_0x44beb6[_0x8e53('0x3f')],_0x54ed2d);}_0x44beb6=_[_0x8e53('0x2f')]({},_0x44beb6,_0x179fbf[_0x8e53('0x30')]);return db[_0x8e53('0x37')][_0x8e53('0x15')]({'where':_0x44beb6[_0x8e53('0x3f')]})['then'](function(_0x295c6b){_0x1de2d5['count']=_0x295c6b;if(_0x179fbf[_0x8e53('0x27')]['includeAll']){_0x44beb6[_0x8e53('0x2e')]=[{'all':!![]}];}return db[_0x8e53('0x37')][_0x8e53('0x23')](_0x44beb6);})[_0x8e53('0x19')](function(_0x122b17){if(_0x179fbf[_0x8e53('0x27')]['inlineCss']===_0x8e53('0x45')){for(var _0x2ca935=0x0;_0x2ca935<_0x122b17[_0x8e53('0x2c')];_0x2ca935++){_0x122b17[_0x2ca935][_0x8e53('0x33')]=juice(_0x122b17[_0x2ca935][_0x8e53('0x33')]);}}_0x1de2d5[_0x8e53('0x46')]=_0x122b17;return _0x1de2d5;});}})['then'](respondWithFilteredResult(_0x15ff9e,_0x44beb6))[_0x8e53('0x25')](handleError(_0x15ff9e,null));};exports[_0x8e53('0x47')]=function(_0x3d2fd4,_0x20b5e2){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x3d2fd4[_0x8e53('0x34')]['id']}})['then'](handleEntityNotFound(_0x20b5e2,null))[_0x8e53('0x19')](function(_0x557b5c){if(_0x557b5c){return _0x557b5c['setTags'](_0x3d2fd4[_0x8e53('0x33')]['ids'],_[_0x8e53('0x48')](_0x3d2fd4[_0x8e53('0x33')],[_0x8e53('0x38'),'id'])||{})[_0x8e53('0x49')](function(){return db[_0x8e53('0x4a')][_0x8e53('0x23')]({'attributes':['id',_0x8e53('0x1c'),_0x8e53('0x4b')],'where':{'id':_0x3d2fd4[_0x8e53('0x33')][_0x8e53('0x38')]}});})[_0x8e53('0x19')](function(_0x378c71){socket[_0x8e53('0x4c')](_0x8e53('0x4d'),{'id':Number(_0x3d2fd4[_0x8e53('0x34')]['id']),'tags':_0x378c71||[]});return{'id':Number(_0x3d2fd4[_0x8e53('0x34')]['id']),'tags':_0x378c71||[]};});}})[_0x8e53('0x19')](respondWithResult(_0x20b5e2,null))[_0x8e53('0x25')](handleError(_0x20b5e2,null));};exports[_0x8e53('0x4e')]=function(_0x3ea4a5,_0x10ca36){return db[_0x8e53('0x31')][_0x8e53('0x32')]({'where':{'id':_0x3ea4a5[_0x8e53('0x34')]['id']}})[_0x8e53('0x19')](handleEntityNotFound(_0x10ca36,null))['then'](function(_0x2e52bc){if(_0x2e52bc){return _0x2e52bc['removeTags'](_0x3ea4a5[_0x8e53('0x27')][_0x8e53('0x38')]);}})[_0x8e53('0x19')](respondWithStatusCode(_0x10ca36,null))[_0x8e53('0x25')](handleError(_0x10ca36,null));};exports[_0x8e53('0x4f')]=function(_0x4f51b7,_0x1647e6){var _0x3d63c4=moment()[_0x8e53('0x50')]()[_0x8e53('0x51')]();var _0x431fe9=path[_0x8e53('0x52')](config['root'],_0x8e53('0x53'),'files','tmp');var _0x2f1027=path[_0x8e53('0x52')](config[_0x8e53('0x54')],_0x8e53('0x53'),_0x8e53('0x55'),_0x8e53('0x56'));var _0x50cc33=path[_0x8e53('0x52')](_0x431fe9,_0x3d63c4);var _0x149bb9=util['format']('transcript-%d-%s.zip',_0x4f51b7['params']['id'],_0x3d63c4);var _0x50d4d7=path['join'](_0x431fe9,_0x149bb9);var _0x4c62ae=[];if(_0x4f51b7[_0x8e53('0x27')][_0x8e53('0x56')]){_0x4c62ae['push']({'model':db[_0x8e53('0x57')],'as':_0x8e53('0x58'),'raw':!![]});}var _0x3344f8=[{'model':db[_0x8e53('0x37')],'as':_0x8e53('0x59'),'attributes':['id',_0x8e53('0x33'),'from','to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x8e53('0x3e')]('id'),'include':_0x4c62ae}];return db['MailInteraction']['find']({'where':{'id':_0x4f51b7[_0x8e53('0x34')]['id']},'include':_0x3344f8})['then'](handleEntityNotFound(_0x1647e6,null))[_0x8e53('0x19')](function(_0x25580e){if(_0x25580e&&_0x25580e[_0x8e53('0x59')]){var _0x275bab=_0x25580e[_0x8e53('0x5a')]({'plain':!![]});fs['mkdirSync'](_0x50cc33);return BPromise['each'](_0x275bab[_0x8e53('0x59')],function(_0x12f484,_0x30e520){var _0x4a4028={'from':_0x12f484['from'],'to':_0x12f484['to']||_0x8e53('0x5b'),'subject':_0x12f484[_0x8e53('0x5c')],'html':htmlEntities[_0x8e53('0x5d')](_0x12f484[_0x8e53('0x33')]),'headers':{'Date':moment(_0x12f484[_0x8e53('0x5e')])[_0x8e53('0x43')](_0x8e53('0x5f'))},'attachments':[]};if(_0x12f484['cc']){_0x4a4028[_0x8e53('0x60')]['Cc']=_0x12f484['cc'];}if(_0x12f484[_0x8e53('0x61')]){_0x4a4028[_0x8e53('0x60')][_0x8e53('0x62')]=_0x12f484[_0x8e53('0x61')];}return new BPromise(function(_0x38f589,_0x5ec6ce){if(_0x12f484[_0x8e53('0x58')]){for(var _0x42c7e9=0x0;_0x42c7e9<_0x12f484[_0x8e53('0x58')]['length'];_0x42c7e9++){var _0x30344a=_0x12f484[_0x8e53('0x58')][_0x42c7e9];var _0x4a75f7=path[_0x8e53('0x52')](_0x2f1027,_0x30344a[_0x8e53('0x63')]);if(fs[_0x8e53('0x64')](_0x4a75f7)){_0x4a4028['attachments'][_0x8e53('0x65')]({'name':_0x30344a['name'],'contentType':_0x30344a[_0x8e53('0x20')],'data':fs[_0x8e53('0x66')](_0x4a75f7)});}}}emlformat[_0x8e53('0x67')](_0x4a4028,function(_0x56b61b,_0x1b3ccb){if(_0x56b61b)return _0x5ec6ce(_0x56b61b);fs[_0x8e53('0x68')](path[_0x8e53('0x52')](_0x50cc33,util[_0x8e53('0x43')](_0x8e53('0x69'),_0x30e520)),_0x1b3ccb);return _0x38f589(_0x1b3ccb);});});})[_0x8e53('0x19')](function(){return new BPromise(function(_0x2aa9a0,_0x49bf58){zipdir(_0x50cc33,{'saveTo':_0x50d4d7},function(_0x40789b,_0x368ced){if(_0x40789b)return _0x49bf58(_0x40789b);return _0x2aa9a0(_0x368ced);});})[_0x8e53('0x19')](function(){return new BPromise(function(_0x7fe85a,_0x9dbb09){rimraf(_0x50cc33,function(_0x3e88cd){if(_0x3e88cd)_0x9dbb09(_0x3e88cd);return _0x7fe85a();});});})[_0x8e53('0x19')](function(){return _0x1647e6[_0x8e53('0x4f')](_0x50d4d7,_0x149bb9,function(_0x40fd63){if(!_0x40fd63)fs[_0x8e53('0x6a')](_0x50d4d7);});});});}else{return _0x1647e6[_0x8e53('0xf')](0xc8);}})[_0x8e53('0x25')](handleError(_0x1647e6,null));};
\ No newline at end of file
+var _0x0df6=['addTags','setTags','emit','mailInteractionTags:save','removeTags','unix','toString','join','root','files','tmp','server','transcript-%d-%s.zip','attachments','push','Attachments','from','subject','createdAt','Messages','mkdirSync','each','missing.recipient@your.company.com','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','ioredis','../../config/logger','../../config/environment','../../mysqldb','html-entities','defaults','redis','localhost','./mailInteraction.socket','register','sendStatus','end','undefined','limit','count','offset','set','Content-Range','json','then','destroy','status','error','name','send','map','MailInteraction','rawAttributes','type','getOptions','findAll','mail','query','user','catch','keys','attributes','model','fields','length','include','merge','options','find','create','update','body','params','describe','MailMessage','addMessage','ids','omit','getMessages','findOne','filters','intersection','hasOwnProperty','nolimit','sort','pick','where','filter','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','true','rows'];(function(_0x34505f,_0x4ea3f5){var _0x6c52d0=function(_0x13b2c6){while(--_0x13b2c6){_0x34505f['push'](_0x34505f['shift']());}};_0x6c52d0(++_0x4ea3f5);}(_0x0df6,0x16e));var _0x60df=function(_0x291fd0,_0x400d3b){_0x291fd0=_0x291fd0-0x0;var _0x6e8c44=_0x0df6[_0x291fd0];return _0x6e8c44;};'use strict';var emlformat=require(_0x60df('0x0'));var rimraf=require(_0x60df('0x1'));var zipdir=require(_0x60df('0x2'));var moment=require(_0x60df('0x3'));var BPromise=require(_0x60df('0x4'));var util=require(_0x60df('0x5'));var path=require(_0x60df('0x6'));var fs=require('fs');var _=require(_0x60df('0x7'));var juice=require(_0x60df('0x8'));var Redis=require(_0x60df('0x9'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var logger=require(_0x60df('0xa'))('api');var config=require(_0x60df('0xb'));var db=require(_0x60df('0xc'))['db'];var htmlEntities=require(_0x60df('0xd'));config['redis']=_[_0x60df('0xe')](config[_0x60df('0xf')],{'host':_0x60df('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x60df('0xf')]));require(_0x60df('0x11'))[_0x60df('0x12')](socket);function respondWithStatusCode(_0x4b8da5,_0x40c52c){_0x40c52c=_0x40c52c||0xcc;return function(_0x1362ae){if(_0x1362ae){return _0x4b8da5[_0x60df('0x13')](_0x40c52c);}return _0x4b8da5['status'](_0x40c52c)[_0x60df('0x14')]();};}function respondWithResult(_0x57e422,_0x5905e0){_0x5905e0=_0x5905e0||0xc8;return function(_0x2a188a){if(_0x2a188a){return _0x57e422['status'](_0x5905e0)['json'](_0x2a188a);}};}function respondWithFilteredResult(_0x544a68,_0x399836){return function(_0x4fcad6){if(_0x4fcad6){var _0x41c03e=typeof _0x399836['offset']===_0x60df('0x15')&&typeof _0x399836[_0x60df('0x16')]===_0x60df('0x15');var _0x57cbe5=_0x4fcad6[_0x60df('0x17')];var _0x530dc6=_0x41c03e?0x0:_0x399836['offset'];var _0x161fb8=_0x41c03e?_0x4fcad6['count']:_0x399836[_0x60df('0x18')]+_0x399836[_0x60df('0x16')];var _0x5e9f9b;if(_0x161fb8>=_0x57cbe5){_0x161fb8=_0x57cbe5;_0x5e9f9b=0xc8;}else{_0x5e9f9b=0xce;}_0x544a68['status'](_0x5e9f9b);return _0x544a68[_0x60df('0x19')](_0x60df('0x1a'),_0x530dc6+'-'+_0x161fb8+'/'+_0x57cbe5)[_0x60df('0x1b')](_0x4fcad6);}return null;};}function saveUpdates(_0x4fbe62){return function(_0x28f11d){if(_0x28f11d){return _0x28f11d['update'](_0x4fbe62)[_0x60df('0x1c')](function(_0x579c7c){return _0x579c7c;});}return null;};}function removeEntity(_0x341db0){return function(_0x1925cd){if(_0x1925cd){return _0x1925cd[_0x60df('0x1d')]()[_0x60df('0x1c')](function(){_0x341db0[_0x60df('0x1e')](0xcc)[_0x60df('0x14')]();});}};}function handleEntityNotFound(_0x499668){return function(_0x2acff7){if(!_0x2acff7){_0x499668[_0x60df('0x13')](0x194);}return _0x2acff7;};}function handleError(_0x5a8808,_0x1386bd){_0x1386bd=_0x1386bd||0x1f4;return function(_0x503841){logger[_0x60df('0x1f')](_0x503841['stack']);if(_0x503841[_0x60df('0x20')]){delete _0x503841[_0x60df('0x20')];}_0x5a8808['status'](_0x1386bd)[_0x60df('0x21')](_0x503841);};}exports['index']=function(_0x5af1a2,_0x5bdd77){var _0x3417ad={};var _0x1ef47a=_[_0x60df('0x22')](db[_0x60df('0x23')][_0x60df('0x24')],function(_0x2a19ee){return{'name':_0x2a19ee['fieldName'],'type':_0x2a19ee[_0x60df('0x25')]['key']};});_0x3417ad=qs[_0x60df('0x26')](_0x1ef47a,_0x5af1a2);return interaction[_0x60df('0x27')](_0x60df('0x28'),_0x5af1a2[_0x60df('0x29')],_0x5af1a2[_0x60df('0x2a')],_0x3417ad,_0x1ef47a)[_0x60df('0x1c')](respondWithFilteredResult(_0x5bdd77,_0x3417ad))[_0x60df('0x2b')](handleError(_0x5bdd77,null));};exports['show']=function(_0x2226ad,_0x417d62){var _0x45f458={'raw':![],'where':{'id':_0x2226ad['params']['id']}},_0x590d26={};_0x590d26['model']=_[_0x60df('0x2c')](db[_0x60df('0x23')]['rawAttributes']);_0x590d26[_0x60df('0x29')]=_[_0x60df('0x2c')](_0x2226ad[_0x60df('0x29')]);_0x590d26['filters']=_['intersection'](_0x590d26['model'],_0x590d26[_0x60df('0x29')]);_0x45f458[_0x60df('0x2d')]=_['intersection'](_0x590d26[_0x60df('0x2e')],qs[_0x60df('0x2f')](_0x2226ad['query'][_0x60df('0x2f')]));_0x45f458['attributes']=_0x45f458[_0x60df('0x2d')][_0x60df('0x30')]?_0x45f458[_0x60df('0x2d')]:_0x590d26[_0x60df('0x2e')];if(_0x2226ad['query']['includeAll']){_0x45f458[_0x60df('0x31')]=[{'all':!![]}];}_0x45f458=_[_0x60df('0x32')]({},_0x45f458,_0x2226ad[_0x60df('0x33')]);return db[_0x60df('0x23')][_0x60df('0x34')](_0x45f458)[_0x60df('0x1c')](handleEntityNotFound(_0x417d62,null))[_0x60df('0x1c')](respondWithResult(_0x417d62,null))[_0x60df('0x2b')](handleError(_0x417d62,null));};exports[_0x60df('0x35')]=function(_0x55b37d,_0x107867){return db[_0x60df('0x23')][_0x60df('0x35')](_0x55b37d['body'],{})['then'](respondWithResult(_0x107867,0xc9))[_0x60df('0x2b')](handleError(_0x107867,null));};exports[_0x60df('0x36')]=function(_0xbf17bf,_0x2ed7a3){if(_0xbf17bf[_0x60df('0x37')]['id']){delete _0xbf17bf[_0x60df('0x37')]['id'];}return db[_0x60df('0x23')][_0x60df('0x34')]({'where':{'id':_0xbf17bf[_0x60df('0x38')]['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x2ed7a3,null))[_0x60df('0x1c')](saveUpdates(_0xbf17bf[_0x60df('0x37')],null))[_0x60df('0x1c')](respondWithResult(_0x2ed7a3,null))['catch'](handleError(_0x2ed7a3,null));};exports[_0x60df('0x1d')]=function(_0x4ef1ce,_0x3ef5ec){return db[_0x60df('0x23')][_0x60df('0x34')]({'where':{'id':_0x4ef1ce[_0x60df('0x38')]['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x3ef5ec,null))['then'](removeEntity(_0x3ef5ec,null))[_0x60df('0x2b')](handleError(_0x3ef5ec,null));};exports['describe']=function(_0x34ba5f,_0x59b8c1){return db[_0x60df('0x23')][_0x60df('0x39')]()[_0x60df('0x1c')](respondWithResult(_0x59b8c1,null))[_0x60df('0x2b')](handleError(_0x59b8c1,null));};exports['addMessage']=function(_0x1b448b,_0x49660e){return db[_0x60df('0x3a')][_0x60df('0x34')]({'where':{'id':_0x1b448b['params']['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x49660e,null))[_0x60df('0x1c')](function(_0x5aa3ed){if(_0x5aa3ed){return _0x5aa3ed[_0x60df('0x3b')](_0x1b448b['body'][_0x60df('0x3c')],_[_0x60df('0x3d')](_0x1b448b[_0x60df('0x37')],['ids','id'])||{});}})[_0x60df('0x1c')](respondWithResult(_0x49660e,null))[_0x60df('0x2b')](handleError(_0x49660e,null));};exports[_0x60df('0x3e')]=function(_0x49be43,_0x50c43b){var _0x261da1={'raw':![],'where':{}};var _0x3de06a={};var _0x56826a={'count':0x0,'rows':[]};return db['MailInteraction'][_0x60df('0x3f')]({'where':{'id':_0x49be43[_0x60df('0x38')]['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x50c43b,null))['then'](function(_0x1c7d7d){if(_0x1c7d7d){_0x3de06a[_0x60df('0x2e')]=_[_0x60df('0x2c')](db[_0x60df('0x3a')][_0x60df('0x24')]);_0x3de06a[_0x60df('0x29')]=_[_0x60df('0x2c')](_0x49be43[_0x60df('0x29')]);_0x3de06a[_0x60df('0x40')]=_[_0x60df('0x41')](_0x3de06a[_0x60df('0x2e')],_0x3de06a[_0x60df('0x29')]);_0x261da1['attributes']=_['intersection'](_0x3de06a['model'],qs['fields'](_0x49be43[_0x60df('0x29')][_0x60df('0x2f')]));_0x261da1[_0x60df('0x2d')]=_0x261da1[_0x60df('0x2d')][_0x60df('0x30')]?_0x261da1[_0x60df('0x2d')]:_0x3de06a[_0x60df('0x2e')];if(!_0x49be43[_0x60df('0x29')][_0x60df('0x42')](_0x60df('0x43'))){_0x261da1[_0x60df('0x16')]=qs[_0x60df('0x16')](_0x49be43[_0x60df('0x29')]['limit']);_0x261da1[_0x60df('0x18')]=qs[_0x60df('0x18')](_0x49be43[_0x60df('0x29')][_0x60df('0x18')]);}_0x261da1['order']=qs[_0x60df('0x44')](_0x49be43[_0x60df('0x29')]['sort']);_0x261da1['where']=qs['filters'](_[_0x60df('0x45')](_0x49be43['query'],_0x3de06a[_0x60df('0x40')]));_0x261da1[_0x60df('0x46')]['MailInteractionId']=_0x1c7d7d['id'];if(_0x49be43[_0x60df('0x29')][_0x60df('0x47')]){_0x261da1['where']=_[_0x60df('0x32')](_0x261da1[_0x60df('0x46')],{'$or':_['map'](_0x261da1[_0x60df('0x2d')],function(_0x57e043){var _0x4c9e7d={};_0x4c9e7d[_0x57e043]={'$like':'%'+_0x49be43[_0x60df('0x29')][_0x60df('0x47')]+'%'};return _0x4c9e7d;})});}if(_0x49be43[_0x60df('0x29')]['$gte']){var _0x4a3e99=_0x49be43[_0x60df('0x29')]['$gte'][_0x60df('0x48')](',');var _0x31d8d4={};_0x31d8d4[_0x4a3e99[0x0]]={'$gte':moment(_0x4a3e99[0x1])[_0x60df('0x49')](_0x60df('0x4a'))};_0x261da1[_0x60df('0x46')]=_[_0x60df('0x32')](_0x261da1['where'],_0x31d8d4);}_0x261da1=_[_0x60df('0x32')]({},_0x261da1,_0x49be43[_0x60df('0x33')]);return db[_0x60df('0x3a')]['count']({'where':_0x261da1[_0x60df('0x46')]})[_0x60df('0x1c')](function(_0x3328ef){_0x56826a['count']=_0x3328ef;if(_0x49be43[_0x60df('0x29')][_0x60df('0x4b')]){_0x261da1[_0x60df('0x31')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x261da1);})['then'](function(_0x1a21d8){if(_0x49be43['query']['inlineCss']===_0x60df('0x4c')){for(var _0x71d62=0x0;_0x71d62<_0x1a21d8['length'];_0x71d62++){_0x1a21d8[_0x71d62][_0x60df('0x37')]=juice(_0x1a21d8[_0x71d62][_0x60df('0x37')]);}}_0x56826a[_0x60df('0x4d')]=_0x1a21d8;return _0x56826a;});}})[_0x60df('0x1c')](respondWithFilteredResult(_0x50c43b,_0x261da1))[_0x60df('0x2b')](handleError(_0x50c43b,null));};exports[_0x60df('0x4e')]=function(_0x44b430,_0x3e3a39){return db[_0x60df('0x23')]['find']({'where':{'id':_0x44b430[_0x60df('0x38')]['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x3e3a39,null))[_0x60df('0x1c')](function(_0x58637f){if(_0x58637f){return _0x58637f[_0x60df('0x4f')](_0x44b430['body']['ids'],_['omit'](_0x44b430['body'],[_0x60df('0x3c'),'id'])||{})['spread'](function(){return db['Tag']['findAll']({'attributes':['id',_0x60df('0x20'),'color'],'where':{'id':_0x44b430['body'][_0x60df('0x3c')]}});})[_0x60df('0x1c')](function(_0x1c4d95){socket[_0x60df('0x50')](_0x60df('0x51'),{'id':Number(_0x44b430[_0x60df('0x38')]['id']),'tags':_0x1c4d95||[]});return{'id':Number(_0x44b430[_0x60df('0x38')]['id']),'tags':_0x1c4d95||[]};});}})[_0x60df('0x1c')](respondWithResult(_0x3e3a39,null))[_0x60df('0x2b')](handleError(_0x3e3a39,null));};exports[_0x60df('0x52')]=function(_0x2188dd,_0x22817c){return db[_0x60df('0x23')][_0x60df('0x34')]({'where':{'id':_0x2188dd[_0x60df('0x38')]['id']}})[_0x60df('0x1c')](handleEntityNotFound(_0x22817c,null))['then'](function(_0x3e6ea5){if(_0x3e6ea5){return _0x3e6ea5[_0x60df('0x52')](_0x2188dd[_0x60df('0x29')]['ids']);}})['then'](respondWithStatusCode(_0x22817c,null))[_0x60df('0x2b')](handleError(_0x22817c,null));};exports['download']=function(_0x437607,_0x9f0433){var _0x468a4c=moment()[_0x60df('0x53')]()[_0x60df('0x54')]();var _0x2b3617=path[_0x60df('0x55')](config[_0x60df('0x56')],'server',_0x60df('0x57'),_0x60df('0x58'));var _0x5e2565=path[_0x60df('0x55')](config['root'],_0x60df('0x59'),'files','attachments');var _0x3394c0=path[_0x60df('0x55')](_0x2b3617,_0x468a4c);var _0x42a9a0=util['format'](_0x60df('0x5a'),_0x437607['params']['id'],_0x468a4c);var _0x4c1138=path[_0x60df('0x55')](_0x2b3617,_0x42a9a0);var _0x1d69c7=[];if(_0x437607[_0x60df('0x29')][_0x60df('0x5b')]){_0x1d69c7[_0x60df('0x5c')]({'model':db['Attachment'],'as':_0x60df('0x5d'),'raw':!![]});}var _0x24c8be=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0x60df('0x37'),_0x60df('0x5e'),'to','cc','bcc',_0x60df('0x5f'),_0x60df('0x60')],'where':{'secret':![]},'order':qs[_0x60df('0x44')]('id'),'include':_0x1d69c7}];return db[_0x60df('0x23')][_0x60df('0x34')]({'where':{'id':_0x437607[_0x60df('0x38')]['id']},'include':_0x24c8be})[_0x60df('0x1c')](handleEntityNotFound(_0x9f0433,null))[_0x60df('0x1c')](function(_0x14f11c){if(_0x14f11c&&_0x14f11c[_0x60df('0x61')]){var _0x11ba38=_0x14f11c['get']({'plain':!![]});fs[_0x60df('0x62')](_0x3394c0);return BPromise[_0x60df('0x63')](_0x11ba38[_0x60df('0x61')],function(_0x5abf49,_0xaf0006){var _0x1b2e29={'from':_0x5abf49[_0x60df('0x5e')],'to':_0x5abf49['to']||_0x60df('0x64'),'subject':_0x5abf49[_0x60df('0x5f')],'html':htmlEntities['decode'](_0x5abf49['body']),'headers':{'Date':moment(_0x5abf49[_0x60df('0x60')])[_0x60df('0x49')](_0x60df('0x65'))},'attachments':[]};if(_0x5abf49['cc']){_0x1b2e29[_0x60df('0x66')]['Cc']=_0x5abf49['cc'];}if(_0x5abf49[_0x60df('0x67')]){_0x1b2e29[_0x60df('0x66')]['Bcc']=_0x5abf49[_0x60df('0x67')];}return new BPromise(function(_0x230c0b,_0x13ac6d){if(_0x5abf49['Attachments']){for(var _0xb686ad=0x0;_0xb686ad<_0x5abf49[_0x60df('0x5d')][_0x60df('0x30')];_0xb686ad++){var _0x2f282d=_0x5abf49[_0x60df('0x5d')][_0xb686ad];var _0x8dc0e7=path[_0x60df('0x55')](_0x5e2565,_0x2f282d['basename']);if(fs[_0x60df('0x68')](_0x8dc0e7)){_0x1b2e29[_0x60df('0x5b')][_0x60df('0x5c')]({'name':_0x2f282d[_0x60df('0x20')],'contentType':_0x2f282d[_0x60df('0x25')],'data':fs[_0x60df('0x69')](_0x8dc0e7)});}}}emlformat[_0x60df('0x6a')](_0x1b2e29,function(_0x4cfc1b,_0x3fe2aa){if(_0x4cfc1b)return _0x13ac6d(_0x4cfc1b);fs[_0x60df('0x6b')](path[_0x60df('0x55')](_0x3394c0,util[_0x60df('0x49')](_0x60df('0x6c'),_0xaf0006)),_0x3fe2aa);return _0x230c0b(_0x3fe2aa);});});})[_0x60df('0x1c')](function(){return new BPromise(function(_0x13cf69,_0x5c451a){zipdir(_0x3394c0,{'saveTo':_0x4c1138},function(_0x2ae023,_0x2f349f){if(_0x2ae023)return _0x5c451a(_0x2ae023);return _0x13cf69(_0x2f349f);});})['then'](function(){return new BPromise(function(_0x5df7aa,_0x17d7ce){rimraf(_0x3394c0,function(_0x38e293){if(_0x38e293)_0x17d7ce(_0x38e293);return _0x5df7aa();});});})[_0x60df('0x1c')](function(){return _0x9f0433[_0x60df('0x6d')](_0x4c1138,_0x42a9a0,function(_0x1dbe0f){if(!_0x1dbe0f)fs[_0x60df('0x6e')](_0x4c1138);});});});}else{return _0x9f0433['sendStatus'](0xc8);}})['catch'](handleError(_0x9f0433,null));};
\ No newline at end of file
index fadc8fd..8955c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b0e=['exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','getUsers','Users','map','then','setDataValue','length','emit','catch','hasOwnProperty','hook'];(function(_0x34ebde,_0x3c3000){var _0x5669df=function(_0x291b24){while(--_0x291b24){_0x34ebde['push'](_0x34ebde['shift']());}};_0x5669df(++_0x3c3000);}(_0x4b0e,0x188));var _0xe4b0=function(_0x5e373e,_0x4ca21a){_0x5e373e=_0x5e373e-0x0;var _0x36bd2e=_0x4b0e[_0x5e373e];return _0x36bd2e;};'use strict';var EventEmitter=require(_0xe4b0('0x0'));var MailInteraction=require(_0xe4b0('0x1'))['db'][_0xe4b0('0x2')];var MailMessage=require(_0xe4b0('0x1'))['db'][_0xe4b0('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xe4b0('0x4')](0x0);var events={'afterCreate':_0xe4b0('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2fc74e){return function(_0x1ea662,_0x1829c3,_0x62b9c3){_0x1ea662[_0xe4b0('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x385a81){_0x1ea662['setDataValue'](_0xe4b0('0x7'),_0x385a81[_0xe4b0('0x8')](function(_0x3a2233){return{'id':_0x3a2233['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x1ea662['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe4b0('0x9')](function(_0xe4abd){_0x1ea662[_0xe4b0('0xa')]('unreadMessages',_0xe4abd[_0xe4b0('0xb')]);MailInteractionEvents[_0xe4b0('0xc')](_0x2fc74e+':'+_0x1ea662['id'],_0x1ea662);MailInteractionEvents[_0xe4b0('0xc')](_0x2fc74e,_0x1ea662);_0x62b9c3(null);})[_0xe4b0('0xd')](_0x62b9c3(null));};}for(var e in events){if(events[_0xe4b0('0xe')](e)){var event=events[e];MailInteraction[_0xe4b0('0xf')](e,emitEvent(event));}}module[_0xe4b0('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0xd6c3=['Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','remove','then','setDataValue'];(function(_0x2d2ccc,_0x5aa730){var _0x412520=function(_0x3a47bc){while(--_0x3a47bc){_0x2d2ccc['push'](_0x2d2ccc['shift']());}};_0x412520(++_0x5aa730);}(_0xd6c3,0x1d1));var _0x3d6c=function(_0x24694b,_0x5a7bc3){_0x24694b=_0x24694b-0x0;var _0x17d706=_0xd6c3[_0x24694b];return _0x17d706;};'use strict';var EventEmitter=require(_0x3d6c('0x0'));var MailInteraction=require(_0x3d6c('0x1'))['db'][_0x3d6c('0x2')];var MailMessage=require(_0x3d6c('0x1'))['db'][_0x3d6c('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x3d6c('0x4')](0x0);var events={'afterCreate':_0x3d6c('0x5'),'afterUpdate':_0x3d6c('0x6'),'afterDestroy':_0x3d6c('0x7')};function emitEvent(_0x334115){return function(_0x505401,_0x4d35d2,_0x77cb4b){_0x505401['getUsers']({'attributes':['id'],'raw':!![]})[_0x3d6c('0x8')](function(_0x17446c){_0x505401[_0x3d6c('0x9')](_0x3d6c('0xa'),_0x17446c[_0x3d6c('0xb')](function(_0x42845b){return{'id':_0x42845b['id']};}));return MailMessage[_0x3d6c('0xc')]({'where':{'MailInteractionId':_0x505401['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3d6c('0x8')](function(_0x36e08c){_0x505401[_0x3d6c('0x9')](_0x3d6c('0xd'),_0x36e08c[_0x3d6c('0xe')]);MailInteractionEvents[_0x3d6c('0xf')](_0x334115+':'+_0x505401['id'],_0x505401);MailInteractionEvents[_0x3d6c('0xf')](_0x334115,_0x505401);_0x77cb4b(null);})['catch'](_0x77cb4b(null));};}for(var e in events){if(events[_0x3d6c('0x10')](e)){var event=events[e];MailInteraction[_0x3d6c('0x11')](e,emitEvent(event));}}module[_0x3d6c('0x12')]=MailInteractionEvents;
\ No newline at end of file
index 82dc4df..78bb64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb30c=['changed','YYYY-MM-DD\x20HH:mm:ss','closedAt','models','get','MailMessage','update','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','closed','format'];(function(_0x4e4eea,_0x1cebc8){var _0x584206=function(_0x28c0ca){while(--_0x28c0ca){_0x4e4eea['push'](_0x4e4eea['shift']());}};_0x584206(++_0x1cebc8);}(_0xb30c,0x1da));var _0xcb30=function(_0x53f6b8,_0x161198){_0x53f6b8=_0x53f6b8-0x0;var _0x973445=_0xb30c[_0x53f6b8];return _0x973445;};'use strict';var _=require(_0xcb30('0x0'));var util=require(_0xcb30('0x1'));var logger=require('../../config/logger')(_0xcb30('0x2'));var moment=require(_0xcb30('0x3'));var BPromise=require(_0xcb30('0x4'));var rp=require(_0xcb30('0x5'));var fs=require('fs');var path=require(_0xcb30('0x6'));var rimraf=require(_0xcb30('0x7'));var config=require(_0xcb30('0x8'));var attributes=require(_0xcb30('0x9'));module[_0xcb30('0xa')]=function(_0x18106e,_0x4d6c4a){return _0x18106e['define']('MailInteraction',attributes,{'tableName':_0xcb30('0xb'),'paranoid':![],'indexes':[{'name':_0xcb30('0xc'),'fields':[_0xcb30('0xd'),'to'],'type':_0xcb30('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2e899b,_0x5dbbb1,_0x5ac64c){if(_0x2e899b[_0xcb30('0xf')]){_0x2e899b[_0xcb30('0x10')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x2e899b[_0xcb30('0x11')]){_0x2e899b['closedAt']=moment()[_0xcb30('0x12')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5ac64c(null,_0x5dbbb1);},'beforeUpdate':function(_0x3940ec,_0x1b7eb0,_0x107f06){if(_0x3940ec[_0xcb30('0x13')](_0xcb30('0xf'))){_0x3940ec['substatusAt']=_0x3940ec[_0xcb30('0xf')]?moment()[_0xcb30('0x12')](_0xcb30('0x14')):null;}if(_0x3940ec['changed'](_0xcb30('0x11'))){_0x3940ec[_0xcb30('0x15')]=moment()[_0xcb30('0x12')](_0xcb30('0x14'));_0x3940ec[_0xcb30('0xf')]=null;_0x3940ec[_0xcb30('0x10')]=null;}_0x107f06(null,_0x3940ec);},'afterUpdate':function(_0x54a144,_0x2da7c8,_0x152cb0){var _0x397a51=_0x18106e[_0xcb30('0x16')];var _0x3805ea=_0x54a144[_0xcb30('0x17')]({'plain':!![]});if(_0x3805ea['closed']){return _0x397a51[_0xcb30('0x18')][_0xcb30('0x19')]({'read':!![]},{'where':{'MailInteractionId':_0x3805ea['id']}})['then'](function(){_0x152cb0();})[_0xcb30('0x1a')](function(_0x29c9c9){_0x152cb0(_0x29c9c9);});}else{_0x152cb0();}}},'charset':_0xcb30('0x1b'),'collate':_0xcb30('0x1c')});};
\ No newline at end of file
+var _0x143f=['fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','models','get','MailMessage','update','then','catch','lodash','util','api','path','rimraf','./mailInteraction.attributes','exports','define','MailInteraction'];(function(_0xaf365b,_0x3b1ee2){var _0x608a9d=function(_0x2f0ab7){while(--_0x2f0ab7){_0xaf365b['push'](_0xaf365b['shift']());}};_0x608a9d(++_0x3b1ee2);}(_0x143f,0x177));var _0xf143=function(_0x1d8017,_0x3abd73){_0x1d8017=_0x1d8017-0x0;var _0x5143f4=_0x143f[_0x1d8017];return _0x5143f4;};'use strict';var _=require(_0xf143('0x0'));var util=require(_0xf143('0x1'));var logger=require('../../config/logger')(_0xf143('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf143('0x3'));var rimraf=require(_0xf143('0x4'));var config=require('../../config/environment');var attributes=require(_0xf143('0x5'));module[_0xf143('0x6')]=function(_0x4d71d6,_0xac00a6){return _0x4d71d6[_0xf143('0x7')](_0xf143('0x8'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xf143('0x9'),'fields':[_0xf143('0xa'),'to'],'type':_0xf143('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1bb321,_0x2eeae9,_0x2145e1){if(_0x1bb321[_0xf143('0xc')]){_0x1bb321[_0xf143('0xd')]=moment()[_0xf143('0xe')](_0xf143('0xf'));}if(_0x1bb321[_0xf143('0x10')]){_0x1bb321['closedAt']=moment()[_0xf143('0xe')](_0xf143('0xf'));}_0x2145e1(null,_0x2eeae9);},'beforeUpdate':function(_0x19b030,_0x49e176,_0x27f6b8){if(_0x19b030['changed'](_0xf143('0xc'))){_0x19b030[_0xf143('0xd')]=_0x19b030['substatus']?moment()[_0xf143('0xe')](_0xf143('0xf')):null;}if(_0x19b030['changed'](_0xf143('0x10'))){_0x19b030[_0xf143('0x11')]=moment()[_0xf143('0xe')](_0xf143('0xf'));_0x19b030[_0xf143('0xc')]=null;_0x19b030[_0xf143('0xd')]=null;}_0x27f6b8(null,_0x19b030);},'afterUpdate':function(_0x2b8734,_0x4ccef6,_0x23304e){var _0x107809=_0x4d71d6[_0xf143('0x12')];var _0x13d0b8=_0x2b8734[_0xf143('0x13')]({'plain':!![]});if(_0x13d0b8['closed']){return _0x107809[_0xf143('0x14')][_0xf143('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x13d0b8['id']}})[_0xf143('0x16')](function(){_0x23304e();})[_0xf143('0x17')](function(_0x43b24d){_0x23304e(_0x43b24d);});}else{_0x23304e();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8b18575..4bb0852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9208=['request','info','request\x20sent','debug','error','code','MailInteraction,\x20%s,\x20%s','message','result','catch','UpdateMailInteraction','update','body','options','where','attributes','then','stringify','AddTagsToMailInteraction','MailInteraction','find','addTags','spread','AddTags','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register'];(function(_0x52f798,_0x566906){var _0x4f05fd=function(_0x434e1f){while(--_0x434e1f){_0x52f798['push'](_0x52f798['shift']());}};_0x4f05fd(++_0x566906);}(_0x9208,0x108));var _0x8920=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9208[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8920('0x0'));var util=require(_0x8920('0x1'));var moment=require('moment');var BPromise=require(_0x8920('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8920('0x3'))['db'];var utils=require(_0x8920('0x4'));var logger=require(_0x8920('0x5'))(_0x8920('0x6'));var config=require('../../config/environment');var jayson=require(_0x8920('0x7'));var client=jayson[_0x8920('0x8')][_0x8920('0x9')]({'port':0x232a});config['redis']=_[_0x8920('0xa')](config[_0x8920('0xb')],{'host':_0x8920('0xc'),'port':0x18eb});var socket=require(_0x8920('0xd'))(new Redis(config[_0x8920('0xb')]));require(_0x8920('0xe'))[_0x8920('0xf')](socket);function respondWithRpcPromise(_0x35fb8f,_0x5055aa,_0x2de879){return new BPromise(function(_0xf815e,_0x2fb0cb){return client[_0x8920('0x10')](_0x35fb8f,_0x2de879)['then'](function(_0x355dc8){logger[_0x8920('0x11')]('MailInteraction,\x20%s,\x20%s',_0x5055aa,_0x8920('0x12'));logger[_0x8920('0x13')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x5055aa,_0x8920('0x12'),JSON['stringify'](_0x355dc8));if(_0x355dc8[_0x8920('0x14')]){if(_0x355dc8[_0x8920('0x14')][_0x8920('0x15')]===0x1f4){logger[_0x8920('0x14')](_0x8920('0x16'),_0x5055aa,_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);return _0x2fb0cb(_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);}logger[_0x8920('0x14')]('MailInteraction,\x20%s,\x20%s',_0x5055aa,_0x355dc8[_0x8920('0x14')][_0x8920('0x17')]);return _0xf815e(_0x355dc8[_0x8920('0x14')]['message']);}else{logger[_0x8920('0x11')](_0x8920('0x16'),_0x5055aa,'request\x20sent');_0xf815e(_0x355dc8[_0x8920('0x18')][_0x8920('0x17')]);}})[_0x8920('0x19')](function(_0x19d9b1){logger[_0x8920('0x14')](_0x8920('0x16'),_0x5055aa,_0x19d9b1);_0x2fb0cb(_0x19d9b1);});});}exports[_0x8920('0x1a')]=function(_0x3db0b0){var _0x34ed57=this;return new Promise(function(_0xf26e7c,_0x50cc12){return db['MailInteraction'][_0x8920('0x1b')](_0x3db0b0[_0x8920('0x1c')],{'raw':_0x3db0b0['options']?_0x3db0b0['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0[_0x8920('0x1d')][_0x8920('0x1e')]||null:null,'attributes':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0['options'][_0x8920('0x1f')]||null:null,'limit':_0x3db0b0[_0x8920('0x1d')]?_0x3db0b0[_0x8920('0x1d')]['limit']||null:null})[_0x8920('0x20')](function(_0x2ed29a){logger[_0x8920('0x11')](_0x8920('0x1a'),_0x3db0b0);logger[_0x8920('0x13')](_0x8920('0x1a'),_0x3db0b0,JSON[_0x8920('0x21')](_0x2ed29a));_0xf26e7c(_0x2ed29a);})[_0x8920('0x19')](function(_0x5b1ffe){logger[_0x8920('0x14')](_0x8920('0x1a'),_0x5b1ffe['message'],_0x3db0b0);_0x50cc12(_0x34ed57['error'](0x1f4,_0x5b1ffe[_0x8920('0x17')]));});});};exports[_0x8920('0x22')]=function(_0x255d79){return new Promise(function(_0x3c2611,_0x93c798){return db[_0x8920('0x23')][_0x8920('0x24')]({'where':_0x255d79[_0x8920('0x1d')]?_0x255d79[_0x8920('0x1d')][_0x8920('0x1e')]||null:null})[_0x8920('0x20')](function(_0x5910ad){if(_0x5910ad){return _0x5910ad[_0x8920('0x25')](_0x255d79[_0x8920('0x1c')]['ids'],_['omit'](_0x255d79['body'],['ids','id'])||{});}})[_0x8920('0x26')](function(_0x5116fd){logger[_0x8920('0x11')](_0x8920('0x27'),_0x255d79);logger[_0x8920('0x13')](_0x8920('0x27'),_0x255d79,JSON[_0x8920('0x21')](_0x5116fd));_0x3c2611(_0x5116fd);})[_0x8920('0x19')](function(_0xdcaca9){logger[_0x8920('0x14')]('AddTags',_0xdcaca9['message'],_0x255d79);_0x93c798(_this[_0x8920('0x14')](0x1f4,_0xdcaca9[_0x8920('0x17')]));});});};
\ No newline at end of file
+var _0xf2ee=['MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateMailInteraction','options','attributes','AddTagsToMailInteraction','MailInteraction','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info'];(function(_0x1c601a,_0x4d86a6){var _0x37aa61=function(_0x2856ca){while(--_0x2856ca){_0x1c601a['push'](_0x1c601a['shift']());}};_0x37aa61(++_0x4d86a6);}(_0xf2ee,0x110));var _0xef2e=function(_0x7c31c7,_0x43ae98){_0x7c31c7=_0x7c31c7-0x0;var _0xf64255=_0xf2ee[_0x7c31c7];return _0xf64255;};'use strict';var _=require(_0xef2e('0x0'));var util=require(_0xef2e('0x1'));var moment=require(_0xef2e('0x2'));var BPromise=require(_0xef2e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xef2e('0x4'));var logger=require('../../config/logger')(_0xef2e('0x5'));var config=require(_0xef2e('0x6'));var jayson=require(_0xef2e('0x7'));var client=jayson[_0xef2e('0x8')][_0xef2e('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xef2e('0xa')],{'host':_0xef2e('0xb'),'port':0x18eb});var socket=require(_0xef2e('0xc'))(new Redis(config[_0xef2e('0xa')]));require('./mailInteraction.socket')[_0xef2e('0xd')](socket);function respondWithRpcPromise(_0x167f6c,_0x56ac9a,_0x4d9266){return new BPromise(function(_0x501cc2,_0x2e8fd7){return client['request'](_0x167f6c,_0x4d9266)[_0xef2e('0xe')](function(_0x568765){logger[_0xef2e('0xf')](_0xef2e('0x10'),_0x56ac9a,_0xef2e('0x11'));logger[_0xef2e('0x12')](_0xef2e('0x13'),_0x56ac9a,_0xef2e('0x11'),JSON[_0xef2e('0x14')](_0x568765));if(_0x568765[_0xef2e('0x15')]){if(_0x568765[_0xef2e('0x15')]['code']===0x1f4){logger[_0xef2e('0x15')]('MailInteraction,\x20%s,\x20%s',_0x56ac9a,_0x568765[_0xef2e('0x15')][_0xef2e('0x16')]);return _0x2e8fd7(_0x568765[_0xef2e('0x15')][_0xef2e('0x16')]);}logger[_0xef2e('0x15')](_0xef2e('0x10'),_0x56ac9a,_0x568765['error'][_0xef2e('0x16')]);return _0x501cc2(_0x568765[_0xef2e('0x15')][_0xef2e('0x16')]);}else{logger[_0xef2e('0xf')](_0xef2e('0x10'),_0x56ac9a,'request\x20sent');_0x501cc2(_0x568765[_0xef2e('0x17')][_0xef2e('0x16')]);}})[_0xef2e('0x18')](function(_0x5e7a26){logger['error'](_0xef2e('0x10'),_0x56ac9a,_0x5e7a26);_0x2e8fd7(_0x5e7a26);});});}exports[_0xef2e('0x19')]=function(_0x2f2008){var _0x1dc996=this;return new Promise(function(_0x36283e,_0x5258ec){return db['MailInteraction']['update'](_0x2f2008['body'],{'raw':_0x2f2008['options']?_0x2f2008['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f2008[_0xef2e('0x1a')]?_0x2f2008[_0xef2e('0x1a')]['where']||null:null,'attributes':_0x2f2008[_0xef2e('0x1a')]?_0x2f2008[_0xef2e('0x1a')][_0xef2e('0x1b')]||null:null,'limit':_0x2f2008['options']?_0x2f2008[_0xef2e('0x1a')]['limit']||null:null})['then'](function(_0x2af42b){logger[_0xef2e('0xf')](_0xef2e('0x19'),_0x2f2008);logger[_0xef2e('0x12')](_0xef2e('0x19'),_0x2f2008,JSON[_0xef2e('0x14')](_0x2af42b));_0x36283e(_0x2af42b);})['catch'](function(_0x160ab5){logger[_0xef2e('0x15')](_0xef2e('0x19'),_0x160ab5[_0xef2e('0x16')],_0x2f2008);_0x5258ec(_0x1dc996[_0xef2e('0x15')](0x1f4,_0x160ab5[_0xef2e('0x16')]));});});};exports[_0xef2e('0x1c')]=function(_0x4193e7){return new Promise(function(_0x4f8418,_0x19d42a){return db[_0xef2e('0x1d')]['find']({'where':_0x4193e7['options']?_0x4193e7[_0xef2e('0x1a')]['where']||null:null})[_0xef2e('0xe')](function(_0x385211){if(_0x385211){return _0x385211[_0xef2e('0x1e')](_0x4193e7[_0xef2e('0x1f')][_0xef2e('0x20')],_[_0xef2e('0x21')](_0x4193e7[_0xef2e('0x1f')],[_0xef2e('0x20'),'id'])||{});}})[_0xef2e('0x22')](function(_0xc9a2b2){logger[_0xef2e('0xf')](_0xef2e('0x23'),_0x4193e7);logger['debug'](_0xef2e('0x23'),_0x4193e7,JSON['stringify'](_0xc9a2b2));_0x4f8418(_0xc9a2b2);})[_0xef2e('0x18')](function(_0x5c4b9e){logger[_0xef2e('0x15')](_0xef2e('0x23'),_0x5c4b9e[_0xef2e('0x16')],_0x4193e7);_0x19d42a(_this[_0xef2e('0x15')](0x1f4,_0x5c4b9e[_0xef2e('0x16')]));});});};
\ No newline at end of file
index 4c1b397..f98813e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x600f=['length','mailInteraction:','./mailInteraction.events','save','remove','update','register'];(function(_0x299206,_0x4e7a52){var _0xd6c05d=function(_0x34025f){while(--_0x34025f){_0x299206['push'](_0x299206['shift']());}};_0xd6c05d(++_0x4e7a52);}(_0x600f,0xf7));var _0xf600=function(_0x915de9,_0xabf9e5){_0x915de9=_0x915de9-0x0;var _0x274129=_0x600f[_0x915de9];return _0x274129;};'use strict';var MailInteractionEvents=require(_0xf600('0x0'));var events=[_0xf600('0x1'),_0xf600('0x2'),_0xf600('0x3')];function createListener(_0x7327ef,_0x9c62e7){return function(_0xec4127){_0x9c62e7['emit'](_0x7327ef,_0xec4127);};}function removeListener(_0x520818,_0x5e4cff){return function(){MailInteractionEvents['removeListener'](_0x520818,_0x5e4cff);};}exports[_0xf600('0x4')]=function(_0x5d04ae){for(var _0x3d2fbf=0x0,_0x3b8e8f=events[_0xf600('0x5')];_0x3d2fbf<_0x3b8e8f;_0x3d2fbf++){var _0x3256d4=events[_0x3d2fbf];var _0x411a93=createListener(_0xf600('0x6')+_0x3256d4,_0x5d04ae);MailInteractionEvents['on'](_0x3256d4,_0x411a93);}};
\ No newline at end of file
+var _0x2453=['remove','emit','removeListener','register','length','save'];(function(_0x244f83,_0x2dc051){var _0x2d855=function(_0x3e0f4f){while(--_0x3e0f4f){_0x244f83['push'](_0x244f83['shift']());}};_0x2d855(++_0x2dc051);}(_0x2453,0x119));var _0x3245=function(_0x332e15,_0xab6034){_0x332e15=_0x332e15-0x0;var _0x383fcb=_0x2453[_0x332e15];return _0x383fcb;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0x3245('0x0'),_0x3245('0x1'),'update'];function createListener(_0x362922,_0x30ddcf){return function(_0x25366d){_0x30ddcf[_0x3245('0x2')](_0x362922,_0x25366d);};}function removeListener(_0x3d61e9,_0x55c516){return function(){MailInteractionEvents[_0x3245('0x3')](_0x3d61e9,_0x55c516);};}exports[_0x3245('0x4')]=function(_0x120007){for(var _0x544555=0x0,_0x15f24e=events[_0x3245('0x5')];_0x544555<_0x15f24e;_0x544555++){var _0x5b5151=events[_0x544555];var _0x37f18d=createListener('mailInteraction:'+_0x5b5151,_0x120007);MailInteractionEvents['on'](_0x5b5151,_0x37f18d);}};
\ No newline at end of file
index 207164d..948dc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b0b=['/:id','update','/:id/accept','accept','reject','destroy','exports','multer','util','path','express','Router','fs-extra','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id/download','download','post','tracked','mailmessage:create','create','put'];(function(_0x43f79b,_0x1297f8){var _0x24727c=function(_0x4f165c){while(--_0x4f165c){_0x43f79b['push'](_0x43f79b['shift']());}};_0x24727c(++_0x1297f8);}(_0x1b0b,0x173));var _0xb1b0=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x1b0b[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xb1b0('0x0'));var util=require(_0xb1b0('0x1'));var path=require(_0xb1b0('0x2'));var timeout=require('connect-timeout');var express=require(_0xb1b0('0x3'));var router=express[_0xb1b0('0x4')]();var fs_extra=require(_0xb1b0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb1b0('0x6'));router[_0xb1b0('0x7')]('/',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x9')]);router[_0xb1b0('0x7')](_0xb1b0('0xa'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xb')]);router[_0xb1b0('0x7')]('/:id',auth[_0xb1b0('0x8')](),controller['show']);router['get'](_0xb1b0('0xc'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0xd')]);router[_0xb1b0('0xe')]('/',auth[_0xb1b0('0x8')](),interaction[_0xb1b0('0xf')]('mail',_0xb1b0('0x10')),controller[_0xb1b0('0x11')]);router[_0xb1b0('0x12')](_0xb1b0('0x13'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x14')]);router[_0xb1b0('0x12')](_0xb1b0('0x15'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x16')]);router[_0xb1b0('0x12')]('/:id/reject',auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x17')]);router['delete'](_0xb1b0('0x13'),auth[_0xb1b0('0x8')](),controller[_0xb1b0('0x18')]);module[_0xb1b0('0x19')]=router;
\ No newline at end of file
+var _0x1152=['mail','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','download','post'];(function(_0x378e8c,_0x5e8f01){var _0x533ef9=function(_0x57b3d2){while(--_0x57b3d2){_0x378e8c['push'](_0x378e8c['shift']());}};_0x533ef9(++_0x5e8f01);}(_0x1152,0x182));var _0x2115=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x1152[_0x37e845];return _0x59e55b;};'use strict';var multer=require(_0x2115('0x0'));var util=require(_0x2115('0x1'));var path=require(_0x2115('0x2'));var timeout=require(_0x2115('0x3'));var express=require(_0x2115('0x4'));var router=express[_0x2115('0x5')]();var fs_extra=require(_0x2115('0x6'));var auth=require(_0x2115('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x2115('0x8'));var controller=require('./mailMessage.controller');router[_0x2115('0x9')]('/',auth[_0x2115('0xa')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x2115('0x9')](_0x2115('0xb'),auth[_0x2115('0xa')](),controller['show']);router[_0x2115('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x2115('0xc')]);router[_0x2115('0xd')]('/',auth[_0x2115('0xa')](),interaction['tracked'](_0x2115('0xe'),'mailmessage:create'),controller[_0x2115('0xf')]);router[_0x2115('0x10')](_0x2115('0xb'),auth[_0x2115('0xa')](),controller[_0x2115('0x11')]);router['put'](_0x2115('0x12'),auth['isAuthenticated'](),controller[_0x2115('0x13')]);router[_0x2115('0x10')](_0x2115('0x14'),auth[_0x2115('0xa')](),controller[_0x2115('0x15')]);router[_0x2115('0x16')](_0x2115('0xb'),auth['isAuthenticated'](),controller[_0x2115('0x17')]);module[_0x2115('0x18')]=router;
\ No newline at end of file
index c85b6fb..123774c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f22=['ENUM','out','STRING','DATE','INTEGER','Email','Chat','sequelize','lodash','exports','TEXT','long','medium','BOOLEAN'];(function(_0x4321a9,_0xb05630){var _0x2daccc=function(_0x348898){while(--_0x348898){_0x4321a9['push'](_0x4321a9['shift']());}};_0x2daccc(++_0xb05630);}(_0x8f22,0x1e3));var _0x28f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8f22[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x28f2('0x0'));var _=require(_0x28f2('0x1'));module[_0x28f2('0x2')]={'body':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x5'))},'read':{'type':Sequelize[_0x28f2('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0x28f2('0x7')]('in',_0x28f2('0x8')),'defaultValue':_0x28f2('0x8'),'allowNull':![]},'messageId':{'type':Sequelize[_0x28f2('0x9')](0x1fe)},'from':{'type':Sequelize[_0x28f2('0x9')]},'to':{'type':Sequelize[_0x28f2('0x3')](_0x28f2('0x4'))},'cc':{'type':Sequelize[_0x28f2('0x3')]('long')},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x28f2('0x3')]},'sentAt':{'type':Sequelize[_0x28f2('0xa')]},'attach':{'type':Sequelize[_0x28f2('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x28f2('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x28f2('0xa')]},'originTo':{'type':Sequelize[_0x28f2('0x3')]('long')},'originCc':{'type':Sequelize[_0x28f2('0x3')]('long')},'originChannel':{'type':Sequelize[_0x28f2('0x7')](_0x28f2('0xc'),_0x28f2('0xd')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x7513=['Chat','lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','Email'];(function(_0x51172d,_0x200cf2){var _0x52064d=function(_0xa3008f){while(--_0xa3008f){_0x51172d['push'](_0x51172d['shift']());}};_0x52064d(++_0x200cf2);}(_0x7513,0x1b1));var _0x3751=function(_0x2567f1,_0x16d4c1){_0x2567f1=_0x2567f1-0x0;var _0x8a4cda=_0x7513[_0x2567f1];return _0x8a4cda;};'use strict';var Sequelize=require('sequelize');var _=require(_0x3751('0x0'));module[_0x3751('0x1')]={'body':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x4'))},'read':{'type':Sequelize[_0x3751('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3751('0x6')]('in',_0x3751('0x7')),'defaultValue':_0x3751('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3751('0x8')](0x1fe)},'from':{'type':Sequelize[_0x3751('0x8')]},'to':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x3'))},'cc':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x3'))},'bcc':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x3'))},'subject':{'type':Sequelize[_0x3751('0x2')]},'sentAt':{'type':Sequelize[_0x3751('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x3751('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x3751('0x9')]},'originTo':{'type':Sequelize[_0x3751('0x2')](_0x3751('0x3'))},'originCc':{'type':Sequelize['TEXT'](_0x3751('0x3'))},'originChannel':{'type':Sequelize[_0x3751('0x6')](_0x3751('0xa'),_0x3751('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index f1fc1d3..f607a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b3=['filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','rawAttributes','include','body','find','describe','create','direction','secret','split','findOne','MailAccountId','CmList','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','getSmtpOptions','attachments','root','basename','Contacts','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','read','readAt','UserId','user','agent','MailInteraction','MailInteractionId','read1stAt','interaction','get','role','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','channel','motionChannel','event','accept','EventManager','acceptmessage','reject','mail','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','interface','SIP/%s','fromString','rejectmessage','download','join','files','tmp','server','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','path','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','end','stack','name','index','map','MailMessage','fieldName','type','key','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0x3aa129,_0x1bf02c){var _0x52af5a=function(_0x1b1b89){while(--_0x1b1b89){_0x3aa129['push'](_0x3aa129['shift']());}};_0x52af5a(++_0x1bf02c);}(_0x49b3,0x101));var _0x349b=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x49b3[_0x15bc81];return _0x59440e;};'use strict';var emlformat=require(_0x349b('0x0'));var moment=require(_0x349b('0x1'));var BPromise=require(_0x349b('0x2'));var util=require(_0x349b('0x3'));var path=require(_0x349b('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x349b('0x5'));var htmlToText=require('html-to-text');var qs=require(_0x349b('0x6'));var logger=require(_0x349b('0x7'))(_0x349b('0x8'));var interaction_log=require(_0x349b('0x7'))(_0x349b('0x9'));var config=require(_0x349b('0xa'));var db=require(_0x349b('0xb'))['db'];config[_0x349b('0xc')]=_[_0x349b('0xd')](config[_0x349b('0xc')],{'host':_0x349b('0xe'),'port':0x18eb});var socket=require(_0x349b('0xf'))(new Redis(config['redis']));var htmlEntities=require('html-entities');require(_0x349b('0x10'))[_0x349b('0x11')](socket);var jayson=require(_0x349b('0x12'));var client=jayson[_0x349b('0x13')][_0x349b('0x14')]({'port':0x232c});var client9003=jayson[_0x349b('0x13')][_0x349b('0x14')]({'port':0x232b});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc4d0b0,_0x50ba1e,_0x2aa4e5,_0x3c268f){return new BPromise(function(_0x25e4db,_0x3c49f4){var _0x2c9a8d=_0x3c268f||client;return _0x2c9a8d[_0x349b('0x15')](_0xc4d0b0,_0x2aa4e5)[_0x349b('0x16')](function(_0x340e38){logger[_0x349b('0x17')]('MailMessage,\x20%s,\x20%s',_0x50ba1e,_0x349b('0x18'));logger[_0x349b('0x19')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x50ba1e,_0x349b('0x18'),JSON[_0x349b('0x1a')](_0x340e38));if(_0x340e38[_0x349b('0x1b')]){if(_0x340e38[_0x349b('0x1b')][_0x349b('0x1c')]===0x1f4){logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x340e38[_0x349b('0x1b')][_0x349b('0x1e')]);return _0x3c49f4(_0x340e38[_0x349b('0x1b')][_0x349b('0x1e')]);}logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x340e38['error'][_0x349b('0x1e')]);return _0x25e4db(_0x340e38[_0x349b('0x1b')]['message']);}else{logger['info'](_0x349b('0x1d'),_0x50ba1e,_0x349b('0x18'));_0x25e4db(_0x340e38[_0x349b('0x1f')][_0x349b('0x1e')]);}})[_0x349b('0x20')](function(_0x5612e2){logger[_0x349b('0x1b')](_0x349b('0x1d'),_0x50ba1e,_0x5612e2);_0x3c49f4(_0x5612e2);});});}function respondWithResult(_0x4d4d18,_0x138a86){_0x138a86=_0x138a86||0xc8;return function(_0xef0166){if(_0xef0166){return _0x4d4d18[_0x349b('0x21')](_0x138a86)[_0x349b('0x22')](_0xef0166);}};}function respondWithFilteredResult(_0x34c487,_0x20a667){return function(_0x5871ea){if(_0x5871ea){var _0x4bc03a=typeof _0x20a667[_0x349b('0x23')]===_0x349b('0x24')&&typeof _0x20a667['limit']===_0x349b('0x24');var _0x2f9b18=_0x5871ea[_0x349b('0x25')];var _0x474844=_0x4bc03a?0x0:_0x20a667[_0x349b('0x23')];var _0x3631ff=_0x4bc03a?_0x5871ea[_0x349b('0x25')]:_0x20a667[_0x349b('0x23')]+_0x20a667[_0x349b('0x26')];var _0x2e26a4;if(_0x3631ff>=_0x2f9b18){_0x3631ff=_0x2f9b18;_0x2e26a4=0xc8;}else{_0x2e26a4=0xce;}_0x34c487[_0x349b('0x21')](_0x2e26a4);return _0x34c487[_0x349b('0x27')](_0x349b('0x28'),_0x474844+'-'+_0x3631ff+'/'+_0x2f9b18)['json'](_0x5871ea);}return null;};}function saveUpdates(_0x58b39d){return function(_0x26ff07){if(_0x26ff07){return _0x26ff07[_0x349b('0x29')](_0x58b39d)[_0x349b('0x16')](function(_0x4718f2){return _0x4718f2;});}return null;};}function removeEntity(_0x303395){return function(_0x3de811){if(_0x3de811){return _0x3de811[_0x349b('0x2a')]()['then'](function(){_0x303395[_0x349b('0x21')](0xcc)[_0x349b('0x2b')]();});}};}function handleEntityNotFound(_0x3d4701){return function(_0x24b7d2){if(!_0x24b7d2){_0x3d4701['sendStatus'](0x194);}return _0x24b7d2;};}function handleError(_0x44846c,_0x59d28f){_0x59d28f=_0x59d28f||0x1f4;return function(_0x4a8906){logger[_0x349b('0x1b')](_0x4a8906[_0x349b('0x2c')]);if(_0x4a8906[_0x349b('0x2d')]){delete _0x4a8906[_0x349b('0x2d')];}_0x44846c[_0x349b('0x21')](_0x59d28f)['send'](_0x4a8906);};}exports[_0x349b('0x2e')]=function(_0x372280,_0xd740ba){var _0x15c561={},_0x5dc8ce={},_0xed8ef={'count':0x0,'rows':[]};var _0x5d1966=_[_0x349b('0x2f')](db[_0x349b('0x30')]['rawAttributes'],function(_0x154d35){return{'name':_0x154d35[_0x349b('0x31')],'type':_0x154d35[_0x349b('0x32')][_0x349b('0x33')]};});_0x5dc8ce['model']=_[_0x349b('0x2f')](_0x5d1966,_0x349b('0x2d'));_0x5dc8ce['query']=_['keys'](_0x372280['query']);_0x5dc8ce[_0x349b('0x34')]=_[_0x349b('0x35')](_0x5dc8ce[_0x349b('0x36')],_0x5dc8ce[_0x349b('0x37')]);_0x15c561[_0x349b('0x38')]=_[_0x349b('0x35')](_0x5dc8ce[_0x349b('0x36')],qs['fields'](_0x372280[_0x349b('0x37')][_0x349b('0x39')]));_0x15c561[_0x349b('0x38')]=_0x15c561['attributes'][_0x349b('0x3a')]?_0x15c561[_0x349b('0x38')]:_0x5dc8ce[_0x349b('0x36')];if(!_0x372280[_0x349b('0x37')][_0x349b('0x3b')](_0x349b('0x3c'))){_0x15c561[_0x349b('0x26')]=qs[_0x349b('0x26')](_0x372280['query']['limit']);_0x15c561[_0x349b('0x23')]=qs[_0x349b('0x23')](_0x372280[_0x349b('0x37')][_0x349b('0x23')]);}_0x15c561['order']=qs[_0x349b('0x3d')](_0x372280[_0x349b('0x37')]['sort']);_0x15c561[_0x349b('0x3e')]=qs[_0x349b('0x34')](_['pick'](_0x372280['query'],_0x5dc8ce[_0x349b('0x34')]),_0x5d1966);if(_0x372280[_0x349b('0x37')][_0x349b('0x3f')]){_0x15c561[_0x349b('0x3e')]=_[_0x349b('0x40')](_0x15c561[_0x349b('0x3e')],{'$or':_[_0x349b('0x2f')](_0x5d1966,function(_0x5cf0c4){if(_0x5cf0c4['type']!==_0x349b('0x41')){var _0x2bc51b={};_0x2bc51b[_0x5cf0c4['name']]={'$like':'%'+_0x372280[_0x349b('0x37')]['filter']+'%'};return _0x2bc51b;}})});}_0x15c561=_[_0x349b('0x40')]({},_0x15c561,_0x372280[_0x349b('0x42')]);var _0x3e6af2={'where':_0x15c561[_0x349b('0x3e')]};return db['MailMessage'][_0x349b('0x25')](_0x3e6af2)[_0x349b('0x16')](function(_0x2ef179){_0xed8ef[_0x349b('0x25')]=_0x2ef179;if(_0x372280[_0x349b('0x37')][_0x349b('0x43')]){_0x15c561['include']=[{'all':!![]}];}return db[_0x349b('0x30')]['findAll'](_0x15c561);})[_0x349b('0x16')](function(_0x38555a){_0xed8ef[_0x349b('0x44')]=_0x38555a;return _0xed8ef;})[_0x349b('0x16')](respondWithFilteredResult(_0xd740ba,_0x15c561))[_0x349b('0x20')](handleError(_0xd740ba,null));};exports[_0x349b('0x45')]=function(_0x5e186d,_0x240539){var _0x552778={'raw':!![],'where':{'id':_0x5e186d[_0x349b('0x46')]['id']}},_0x49f58f={};_0x49f58f['model']=_[_0x349b('0x47')](db['MailMessage'][_0x349b('0x48')]);_0x49f58f[_0x349b('0x37')]=_[_0x349b('0x47')](_0x5e186d[_0x349b('0x37')]);_0x49f58f[_0x349b('0x34')]=_[_0x349b('0x35')](_0x49f58f[_0x349b('0x36')],_0x49f58f[_0x349b('0x37')]);_0x552778[_0x349b('0x38')]=_['intersection'](_0x49f58f[_0x349b('0x36')],qs[_0x349b('0x39')](_0x5e186d[_0x349b('0x37')][_0x349b('0x39')]));_0x552778[_0x349b('0x38')]=_0x552778[_0x349b('0x38')]['length']?_0x552778['attributes']:_0x49f58f[_0x349b('0x36')];if(_0x5e186d[_0x349b('0x37')][_0x349b('0x43')]){_0x552778[_0x349b('0x49')]=[{'all':!![]}];}_0x552778=_[_0x349b('0x40')]({},_0x552778,_0x5e186d[_0x349b('0x42')]);return db[_0x349b('0x30')]['find'](_0x552778)[_0x349b('0x16')](handleEntityNotFound(_0x240539,null))[_0x349b('0x16')](respondWithResult(_0x240539,null))[_0x349b('0x20')](handleError(_0x240539,null));};exports['update']=function(_0x33562b,_0x87e616){if(_0x33562b[_0x349b('0x4a')]['id']){delete _0x33562b[_0x349b('0x4a')]['id'];}return db['MailMessage'][_0x349b('0x4b')]({'where':{'id':_0x33562b[_0x349b('0x46')]['id']}})[_0x349b('0x16')](handleEntityNotFound(_0x87e616,null))['then'](saveUpdates(_0x33562b[_0x349b('0x4a')],null))['then'](respondWithResult(_0x87e616,null))[_0x349b('0x20')](handleError(_0x87e616,null));};exports[_0x349b('0x2a')]=function(_0x51e4bc,_0x890867){return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x51e4bc[_0x349b('0x46')]['id']}})[_0x349b('0x16')](handleEntityNotFound(_0x890867,null))[_0x349b('0x16')](removeEntity(_0x890867,null))[_0x349b('0x20')](handleError(_0x890867,null));};exports['describe']=function(_0x2097a2,_0x225944){return db['MailMessage'][_0x349b('0x4c')]()['then'](respondWithResult(_0x225944,null))[_0x349b('0x20')](handleError(_0x225944,null));};exports[_0x349b('0x4d')]=function(_0x395df7,_0x3c53b8){return db[_0x349b('0x30')][_0x349b('0x4d')](_0x395df7[_0x349b('0x4a')])[_0x349b('0x16')](function(_0x1e4e99){if(_0x1e4e99){if(_0x1e4e99[_0x349b('0x4e')]==='out'&&!_0x1e4e99[_0x349b('0x4f')]){var _0x443592,_0x56b43e,_0x2191cb;if(_0x395df7[_0x349b('0x4a')]['to']){_0x56b43e=_0x395df7[_0x349b('0x4a')]['to'][_0x349b('0x50')](',')[0x0];}return db['MailAccount'][_0x349b('0x51')]({'where':{'id':_0x1e4e99[_0x349b('0x52')]},'include':[{'model':db[_0x349b('0x53')],'as':_0x349b('0x54'),'include':[{'model':db[_0x349b('0x55')],'as':'Contacts','where':{'email':_0x56b43e},'limit':0x1,'order':[[_0x349b('0x56'),_0x349b('0x57')]]}]},{'model':db[_0x349b('0x58')],'as':_0x349b('0x59'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})[_0x349b('0x16')](function(_0xa7035c){_0x443592=_0xa7035c;if(!_0x443592||!_0x443592[_0x349b('0x59')])return;var _0x51de63=_0x443592[_0x349b('0x5a')]();if(_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')]&&_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0x349b('0x3a')]){for(var _0xc406ee=0x0;_0xc406ee<_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0x349b('0x3a')];_0xc406ee+=0x1){_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0xc406ee]={'filename':_0x395df7['body'][_0x349b('0x5b')][_0xc406ee][_0x349b('0x2d')],'path':path['join'](config[_0x349b('0x5c')],'server/files/attachments',_0x395df7[_0x349b('0x4a')][_0x349b('0x5b')][_0xc406ee][_0x349b('0x5d')])};}}_0x2191cb={'account':_0x51de63,'message':_0x395df7[_0x349b('0x4a')]};return;})[_0x349b('0x16')](function(){if(_0x443592[_0x349b('0x54')]){if(_0x443592[_0x349b('0x54')][_0x349b('0x5e')]['length']){return _0x443592['List'][_0x349b('0x5e')][0x0];}else{return db['CmContact']['create'](_[_0x349b('0xd')](_0x395df7[_0x349b('0x4a')],{'firstName':_0x395df7[_0x349b('0x4a')]['to'],'email':_0x395df7[_0x349b('0x4a')]['to'],'phone':_0x395df7[_0x349b('0x4a')]['to'],'ListId':_0x443592[_0x349b('0x5f')]}));}}else{throw new Error(_0x349b('0x60'));}})['then'](function(){if(_0x2191cb){return respondWithRpcPromise('SendMail',_0x349b('0x61'),_0x2191cb,client9003)[_0x349b('0x16')](function(_0x10b191){return _0x1e4e99[_0x349b('0x29')]({'read':!![],'messageId':_0x10b191[_0x349b('0x62')],'sentAt':moment()[_0x349b('0x63')](_0x349b('0x64'))});})[_0x349b('0x20')](function(_0x2a0bf6){logger[_0x349b('0x1b')]('%s',JSON['stringify'](_0x2a0bf6));return _0x1e4e99;});}return _0x1e4e99;});}return _0x1e4e99;}})[_0x349b('0x16')](respondWithResult(_0x3c53b8,0xc9))['catch'](handleError(_0x3c53b8,null));};exports['accept']=function(_0x38a9a6,_0x3b6eb6){var _0x2c71b3={'agent':{},'channel':'mail'};if(_0x38a9a6[_0x349b('0x4a')]['id']){delete _0x38a9a6[_0x349b('0x4a')]['id'];}_0x38a9a6[_0x349b('0x4a')][_0x349b('0x65')]=!![];_0x38a9a6[_0x349b('0x4a')][_0x349b('0x66')]=moment()['format'](_0x349b('0x64'));_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')]=_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')]||_0x38a9a6[_0x349b('0x68')]['id'];_0x2c71b3[_0x349b('0x69')]['id']=_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')];return db[_0x349b('0x30')]['find']({'where':{'id':_0x38a9a6[_0x349b('0x46')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3b6eb6,null))['then'](saveUpdates(_0x38a9a6[_0x349b('0x4a')],null))[_0x349b('0x16')](function(_0x2c617b){if(_0x2c617b){_0x2c71b3['message']=_0x2c617b['get']({'plain':!![]});return db[_0x349b('0x6a')]['find']({'where':{'id':_0x2c617b[_0x349b('0x6b')]}});}return null;})[_0x349b('0x16')](handleEntityNotFound(_0x3b6eb6,null))['then'](function(_0x4829e5){if(_0x4829e5){return _0x4829e5['update']({'UserId':_0x38a9a6[_0x349b('0x4a')]['UserId'],'read1stAt':_['isNil'](_0x4829e5[_0x349b('0x6c')])?moment()[_0x349b('0x63')](_0x349b('0x64')):undefined});}return null;})[_0x349b('0x16')](function(_0x1c75ac){if(_0x1c75ac){_0x2c71b3[_0x349b('0x6d')]=_0x1c75ac[_0x349b('0x6e')]({'plain':!![]});interaction_log[_0x349b('0x17')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x38a9a6['user']['id'],_0x38a9a6[_0x349b('0x68')][_0x349b('0x2d')],_0x38a9a6['user'][_0x349b('0x6f')],_0x2c71b3['interaction']['id'],_0x38a9a6[_0x349b('0x4a')]?JSON[_0x349b('0x1a')](_0x38a9a6['body']):'null');return respondWithRpcPromise(_0x349b('0x70'),_0x349b('0x71'),_0x2c71b3);}return null;})[_0x349b('0x16')](function(_0xea3a5c){var _0x1ca702='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xea3a5c['message']['ContactId'];return db[_0x349b('0x72')]['query'](_0x1ca702,{'type':db[_0x349b('0x73')][_0x349b('0x74')][_0x349b('0x75')],'raw':!![]})['then'](function(_0x176de1){return _0x176de1;});})[_0x349b('0x16')](function(_0x95f2af){if(_0x95f2af){_0x2c71b3[_0x349b('0x1e')]['contact']=_0x95f2af[0x0];if(!_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')])return;return db[_0x349b('0x76')]['find']({'where':{'id':_0x38a9a6[_0x349b('0x4a')][_0x349b('0x67')],'role':'agent'},'attributes':['id',_0x349b('0x2d'),_0x349b('0x77'),_0x349b('0x78'),_0x349b('0x79')],'raw':!![]});}return null;})[_0x349b('0x16')](function(_0x2bb668){if(!_0x2bb668)return null;_0x2c71b3[_0x349b('0x1e')]['agent']=_0x2bb668;return _0x2c71b3;})[_0x349b('0x16')](function(_0x43f6c6){if(_0x43f6c6){if(_0x38a9a6[_0x349b('0x4a')][_0x349b('0x7a')]){_0x2c71b3[_0x349b('0x1e')]['interface']=util[_0x349b('0x63')]('SIP/%s',_0x38a9a6['user'][_0x349b('0x2d')]);_0x2c71b3[_0x349b('0x1e')][_0x349b('0x7b')]=_0x2c71b3[_0x349b('0x7b')];_0x2c71b3[_0x349b('0x1e')][_0x349b('0x7c')]=_0x2c71b3[_0x349b('0x7b')];_0x2c71b3['message'][_0x349b('0x7d')]=_0x349b('0x7e');_0x2c71b3[_0x349b('0x1e')][_0x349b('0x4a')]=htmlToText['fromString'](_0x2c71b3[_0x349b('0x1e')]['body']);return respondWithRpcPromise(_0x349b('0x7f'),_0x349b('0x7f'),{'event':_0x349b('0x80'),'message':_0x2c71b3[_0x349b('0x1e')]},client9002)[_0x349b('0x16')](function(){return _0x2c71b3;});}return _0x2c71b3;}return null;})[_0x349b('0x16')](respondWithResult(_0x3b6eb6,null))[_0x349b('0x20')](handleError(_0x3b6eb6,null));};exports[_0x349b('0x81')]=function(_0x4385fb,_0x280726){var _0x5f1fa6={'agent':{},'channel':_0x349b('0x82')};if(_0x4385fb[_0x349b('0x4a')]['id']){delete _0x4385fb[_0x349b('0x4a')]['id'];}_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')]=_0x4385fb['body']['UserId']||_0x4385fb[_0x349b('0x68')]['id'];_0x5f1fa6[_0x349b('0x69')]['id']=_0x4385fb[_0x349b('0x4a')]['UserId'];return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x4385fb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x280726,null))[_0x349b('0x16')](function(_0x4c3269){if(_0x4c3269){_0x5f1fa6[_0x349b('0x1e')]=_0x4c3269[_0x349b('0x6e')]({'plain':!![]});return db[_0x349b('0x6a')]['find']({'where':{'id':_0x4c3269[_0x349b('0x6b')]}});}return null;})[_0x349b('0x16')](handleEntityNotFound(_0x280726,null))[_0x349b('0x16')](function(_0x82b6bd){if(_0x82b6bd){_0x5f1fa6['interaction']=_0x82b6bd[_0x349b('0x6e')]({'plain':!![]});interaction_log[_0x349b('0x17')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4385fb['user']['id'],_0x4385fb[_0x349b('0x68')][_0x349b('0x2d')],_0x4385fb[_0x349b('0x68')][_0x349b('0x6f')],_0x5f1fa6[_0x349b('0x6d')]['id'],_0x4385fb[_0x349b('0x4a')]?JSON[_0x349b('0x1a')](_0x4385fb[_0x349b('0x4a')]):_0x349b('0x83'));return respondWithRpcPromise(_0x349b('0x84'),'rejectMessage',_0x5f1fa6);}return null;})['then'](function(_0xfbc04c){var _0x50bf5c=_0x349b('0x85')+_0xfbc04c[_0x349b('0x1e')][_0x349b('0x86')];return db[_0x349b('0x72')]['query'](_0x50bf5c,{'type':db[_0x349b('0x73')][_0x349b('0x74')]['SELECT'],'raw':!![]})[_0x349b('0x16')](function(_0x377de8){return _0x377de8;});})['then'](function(_0x2a0037){if(_0x2a0037){_0x5f1fa6[_0x349b('0x1e')]['contact']=_0x2a0037[0x0];if(!_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')])return;return db[_0x349b('0x76')][_0x349b('0x4b')]({'where':{'id':_0x4385fb[_0x349b('0x4a')][_0x349b('0x67')],'role':'agent'},'attributes':['id',_0x349b('0x2d'),_0x349b('0x77'),_0x349b('0x78'),_0x349b('0x79')],'raw':!![]});}return null;})[_0x349b('0x16')](function(_0x3c35b6){if(!_0x3c35b6)return null;_0x5f1fa6['message']['agent']=_0x3c35b6;return _0x5f1fa6;})['then'](function(_0x24b2fc){if(_0x24b2fc){_0x24b2fc['message'][_0x349b('0x87')]=util['format'](_0x349b('0x88'),_0x4385fb[_0x349b('0x68')][_0x349b('0x2d')]);_0x24b2fc[_0x349b('0x1e')][_0x349b('0x7b')]=_0x5f1fa6[_0x349b('0x7b')];_0x24b2fc[_0x349b('0x1e')]['motionChannel']=_0x5f1fa6[_0x349b('0x7b')];_0x24b2fc[_0x349b('0x1e')][_0x349b('0x7d')]=_0x349b('0x81');_0x24b2fc[_0x349b('0x1e')][_0x349b('0x4a')]=htmlToText[_0x349b('0x89')](_0x5f1fa6['message']['body']);respondWithRpcPromise(_0x349b('0x7f'),_0x349b('0x7f'),{'event':_0x349b('0x8a'),'message':_0x24b2fc[_0x349b('0x1e')]},client9002);return _0x5f1fa6;}return null;})[_0x349b('0x16')](respondWithResult(_0x280726,null))['catch'](handleError(_0x280726,null));};exports[_0x349b('0x8b')]=function(_0x1c0d86,_0x4c03d1){var _0x7df1fa=moment()['unix']()['toString']();var _0x2cc5bb=path[_0x349b('0x8c')](config[_0x349b('0x5c')],'server',_0x349b('0x8d'),_0x349b('0x8e'));var _0x9b1ba5=path[_0x349b('0x8c')](config[_0x349b('0x5c')],_0x349b('0x8f'),_0x349b('0x8d'),'attachments');var _0x4093c4=util[_0x349b('0x63')](_0x349b('0x90'),_0x7df1fa);return db[_0x349b('0x30')][_0x349b('0x4b')]({'where':{'id':_0x1c0d86[_0x349b('0x46')]['id']},'attributes':['id',_0x349b('0x4a'),_0x349b('0x91'),'to','cc',_0x349b('0x92'),_0x349b('0x93'),_0x349b('0x94')],'include':_0x1c0d86['query'][_0x349b('0x5b')]?[{'model':db[_0x349b('0x95')],'as':_0x349b('0x96')}]:undefined})[_0x349b('0x16')](handleEntityNotFound(_0x4c03d1,null))['then'](function(_0x201410){if(_0x201410){var _0x497335=_0x201410;var _0x1e5572={'from':_0x497335[_0x349b('0x91')],'to':_0x497335['to'],'subject':_0x497335[_0x349b('0x93')],'html':htmlEntities[_0x349b('0x97')](_0x497335[_0x349b('0x4a')]),'headers':{'Date':moment(_0x497335[_0x349b('0x94')])[_0x349b('0x63')](_0x349b('0x98'))},'attachments':[]};if(_0x201410['cc']){_0x1e5572[_0x349b('0x99')]['Cc']=_0x201410['cc'];}if(_0x201410['bcc']){_0x1e5572['headers'][_0x349b('0x9a')]=_0x201410[_0x349b('0x92')];}return new BPromise(function(_0x47505f,_0x2eb306){if(_0x201410['Attachments']){for(var _0x31ee45=0x0;_0x31ee45<_0x201410[_0x349b('0x96')][_0x349b('0x3a')];_0x31ee45++){var _0x1c0783=_0x201410[_0x349b('0x96')][_0x31ee45];var _0x55ff55=path['join'](_0x9b1ba5,_0x1c0783[_0x349b('0x5d')]);if(fs['existsSync'](_0x55ff55)){_0x1e5572['attachments'][_0x349b('0x9b')]({'name':_0x1c0783[_0x349b('0x2d')],'contentType':_0x1c0783[_0x349b('0x32')],'data':fs[_0x349b('0x9c')](_0x55ff55)});}}}emlformat[_0x349b('0x9d')](_0x1e5572,function(_0x92ecd0,_0x2f6923){if(_0x92ecd0)return _0x2eb306(_0x92ecd0);fs[_0x349b('0x9e')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4),_0x2f6923);return _0x47505f(_0x2f6923);});});}})['then'](function(_0x2d797f){if(_0x2d797f){return _0x4c03d1[_0x349b('0x8b')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4),_0x4093c4,function(_0x1879a3){if(!_0x1879a3)fs[_0x349b('0x9f')](path[_0x349b('0x8c')](_0x2cc5bb,_0x4093c4));});}})[_0x349b('0x20')](handleError(_0x4c03d1,null));};
\ No newline at end of file
+var _0x47c9=['mail-interactions','../../mysqldb','redis','socket.io-emitter','client','http','then','info','MailMessage,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','status','json','offset','undefined','limit','count','set','Content-Range','end','stack','name','map','MailMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','destroy','describe','create','direction','split','MailAccount','findOne','MailAccountId','CmList','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','basename','List','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','readAt','UserId','user','agent','get','MailInteraction','update','isNil','read1stAt','[MAILMESSAGE: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','QueryTypes','SELECT','email','interface','channel','event','fromString','EventManager','acceptmessage','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','User','SIP/%s','motionChannel','rejectmessage','download','toString','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','Bcc','push','readFileSync','build','writeFileSync','unlinkSync','moment','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api'];(function(_0x32b2c4,_0x505cdb){var _0xe4df85=function(_0x51bcbb){while(--_0x51bcbb){_0x32b2c4['push'](_0x32b2c4['shift']());}};_0xe4df85(++_0x505cdb);}(_0x47c9,0x120));var _0x947c=function(_0x4d1229,_0x48f66a){_0x4d1229=_0x4d1229-0x0;var _0x4fb314=_0x47c9[_0x4d1229];return _0x4fb314;};'use strict';var emlformat=require('eml-format');var moment=require(_0x947c('0x0'));var BPromise=require('bluebird');var util=require(_0x947c('0x1'));var path=require(_0x947c('0x2'));var fs=require('fs');var _=require(_0x947c('0x3'));var Redis=require('ioredis');var htmlToText=require(_0x947c('0x4'));var qs=require(_0x947c('0x5'));var logger=require(_0x947c('0x6'))(_0x947c('0x7'));var interaction_log=require(_0x947c('0x6'))(_0x947c('0x8'));var config=require('../../config/environment');var db=require(_0x947c('0x9'))['db'];config['redis']=_['defaults'](config[_0x947c('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x947c('0xb'))(new Redis(config[_0x947c('0xa')]));var htmlEntities=require('html-entities');require('./mailMessage.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x947c('0xc')][_0x947c('0xd')]({'port':0x232c});var client9003=jayson[_0x947c('0xc')][_0x947c('0xd')]({'port':0x232b});var client9002=jayson[_0x947c('0xc')][_0x947c('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2985ff,_0xe02ac1,_0x365daf,_0x38f851){return new BPromise(function(_0x437c71,_0x4a31eb){var _0x4d0ec0=_0x38f851||client;return _0x4d0ec0['request'](_0x2985ff,_0x365daf)[_0x947c('0xe')](function(_0x1d31b2){logger[_0x947c('0xf')](_0x947c('0x10'),_0xe02ac1,'request\x20sent');logger[_0x947c('0x11')]('MailMessage,\x20%s,\x20%s,\x20%s',_0xe02ac1,'request\x20sent',JSON[_0x947c('0x12')](_0x1d31b2));if(_0x1d31b2[_0x947c('0x13')]){if(_0x1d31b2['error'][_0x947c('0x14')]===0x1f4){logger[_0x947c('0x13')]('MailMessage,\x20%s,\x20%s',_0xe02ac1,_0x1d31b2[_0x947c('0x13')]['message']);return _0x4a31eb(_0x1d31b2['error'][_0x947c('0x15')]);}logger[_0x947c('0x13')](_0x947c('0x10'),_0xe02ac1,_0x1d31b2['error'][_0x947c('0x15')]);return _0x437c71(_0x1d31b2[_0x947c('0x13')][_0x947c('0x15')]);}else{logger[_0x947c('0xf')]('MailMessage,\x20%s,\x20%s',_0xe02ac1,_0x947c('0x16'));_0x437c71(_0x1d31b2[_0x947c('0x17')]['message']);}})['catch'](function(_0xc3d787){logger[_0x947c('0x13')](_0x947c('0x10'),_0xe02ac1,_0xc3d787);_0x4a31eb(_0xc3d787);});});}function respondWithResult(_0x5e783c,_0x5bcc75){_0x5bcc75=_0x5bcc75||0xc8;return function(_0x53135d){if(_0x53135d){return _0x5e783c[_0x947c('0x18')](_0x5bcc75)[_0x947c('0x19')](_0x53135d);}};}function respondWithFilteredResult(_0x18e473,_0x1522fe){return function(_0x184205){if(_0x184205){var _0x3b45f7=typeof _0x1522fe[_0x947c('0x1a')]===_0x947c('0x1b')&&typeof _0x1522fe[_0x947c('0x1c')]===_0x947c('0x1b');var _0x15143b=_0x184205[_0x947c('0x1d')];var _0x10ed21=_0x3b45f7?0x0:_0x1522fe[_0x947c('0x1a')];var _0x23b503=_0x3b45f7?_0x184205[_0x947c('0x1d')]:_0x1522fe[_0x947c('0x1a')]+_0x1522fe[_0x947c('0x1c')];var _0x638596;if(_0x23b503>=_0x15143b){_0x23b503=_0x15143b;_0x638596=0xc8;}else{_0x638596=0xce;}_0x18e473['status'](_0x638596);return _0x18e473[_0x947c('0x1e')](_0x947c('0x1f'),_0x10ed21+'-'+_0x23b503+'/'+_0x15143b)[_0x947c('0x19')](_0x184205);}return null;};}function saveUpdates(_0x1203bd){return function(_0x517f9f){if(_0x517f9f){return _0x517f9f['update'](_0x1203bd)[_0x947c('0xe')](function(_0x47fa19){return _0x47fa19;});}return null;};}function removeEntity(_0x270577){return function(_0x1570dd){if(_0x1570dd){return _0x1570dd['destroy']()['then'](function(){_0x270577['status'](0xcc)[_0x947c('0x20')]();});}};}function handleEntityNotFound(_0x56d58d){return function(_0x3b215c){if(!_0x3b215c){_0x56d58d['sendStatus'](0x194);}return _0x3b215c;};}function handleError(_0xccf963,_0x2464e6){_0x2464e6=_0x2464e6||0x1f4;return function(_0x356d95){logger[_0x947c('0x13')](_0x356d95[_0x947c('0x21')]);if(_0x356d95[_0x947c('0x22')]){delete _0x356d95[_0x947c('0x22')];}_0xccf963[_0x947c('0x18')](_0x2464e6)['send'](_0x356d95);};}exports['index']=function(_0x31aa54,_0x3c792b){var _0x13aa0d={},_0x25764f={},_0x27c093={'count':0x0,'rows':[]};var _0x53909d=_[_0x947c('0x23')](db[_0x947c('0x24')][_0x947c('0x25')],function(_0x7eef53){return{'name':_0x7eef53[_0x947c('0x26')],'type':_0x7eef53[_0x947c('0x27')][_0x947c('0x28')]};});_0x25764f[_0x947c('0x29')]=_[_0x947c('0x23')](_0x53909d,_0x947c('0x22'));_0x25764f['query']=_[_0x947c('0x2a')](_0x31aa54[_0x947c('0x2b')]);_0x25764f[_0x947c('0x2c')]=_[_0x947c('0x2d')](_0x25764f[_0x947c('0x29')],_0x25764f[_0x947c('0x2b')]);_0x13aa0d[_0x947c('0x2e')]=_['intersection'](_0x25764f['model'],qs[_0x947c('0x2f')](_0x31aa54[_0x947c('0x2b')][_0x947c('0x2f')]));_0x13aa0d[_0x947c('0x2e')]=_0x13aa0d[_0x947c('0x2e')][_0x947c('0x30')]?_0x13aa0d['attributes']:_0x25764f[_0x947c('0x29')];if(!_0x31aa54[_0x947c('0x2b')][_0x947c('0x31')](_0x947c('0x32'))){_0x13aa0d[_0x947c('0x1c')]=qs[_0x947c('0x1c')](_0x31aa54[_0x947c('0x2b')]['limit']);_0x13aa0d[_0x947c('0x1a')]=qs[_0x947c('0x1a')](_0x31aa54[_0x947c('0x2b')][_0x947c('0x1a')]);}_0x13aa0d[_0x947c('0x33')]=qs[_0x947c('0x34')](_0x31aa54[_0x947c('0x2b')]['sort']);_0x13aa0d[_0x947c('0x35')]=qs[_0x947c('0x2c')](_['pick'](_0x31aa54[_0x947c('0x2b')],_0x25764f['filters']),_0x53909d);if(_0x31aa54['query'][_0x947c('0x36')]){_0x13aa0d[_0x947c('0x35')]=_['merge'](_0x13aa0d['where'],{'$or':_[_0x947c('0x23')](_0x53909d,function(_0x3b0c90){if(_0x3b0c90[_0x947c('0x27')]!==_0x947c('0x37')){var _0x226299={};_0x226299[_0x3b0c90['name']]={'$like':'%'+_0x31aa54['query'][_0x947c('0x36')]+'%'};return _0x226299;}})});}_0x13aa0d=_[_0x947c('0x38')]({},_0x13aa0d,_0x31aa54['options']);var _0xf20d5f={'where':_0x13aa0d[_0x947c('0x35')]};return db[_0x947c('0x24')]['count'](_0xf20d5f)['then'](function(_0x1e9ace){_0x27c093[_0x947c('0x1d')]=_0x1e9ace;if(_0x31aa54[_0x947c('0x2b')][_0x947c('0x39')]){_0x13aa0d[_0x947c('0x3a')]=[{'all':!![]}];}return db['MailMessage'][_0x947c('0x3b')](_0x13aa0d);})['then'](function(_0x2ccf40){_0x27c093[_0x947c('0x3c')]=_0x2ccf40;return _0x27c093;})['then'](respondWithFilteredResult(_0x3c792b,_0x13aa0d))[_0x947c('0x3d')](handleError(_0x3c792b,null));};exports[_0x947c('0x3e')]=function(_0x4215be,_0x13afc2){var _0x8c40f9={'raw':!![],'where':{'id':_0x4215be[_0x947c('0x3f')]['id']}},_0x239127={};_0x239127[_0x947c('0x29')]=_['keys'](db[_0x947c('0x24')][_0x947c('0x25')]);_0x239127[_0x947c('0x2b')]=_['keys'](_0x4215be['query']);_0x239127['filters']=_[_0x947c('0x2d')](_0x239127['model'],_0x239127[_0x947c('0x2b')]);_0x8c40f9[_0x947c('0x2e')]=_[_0x947c('0x2d')](_0x239127[_0x947c('0x29')],qs['fields'](_0x4215be['query']['fields']));_0x8c40f9[_0x947c('0x2e')]=_0x8c40f9[_0x947c('0x2e')][_0x947c('0x30')]?_0x8c40f9[_0x947c('0x2e')]:_0x239127[_0x947c('0x29')];if(_0x4215be['query'][_0x947c('0x39')]){_0x8c40f9[_0x947c('0x3a')]=[{'all':!![]}];}_0x8c40f9=_[_0x947c('0x38')]({},_0x8c40f9,_0x4215be[_0x947c('0x40')]);return db[_0x947c('0x24')][_0x947c('0x41')](_0x8c40f9)['then'](handleEntityNotFound(_0x13afc2,null))[_0x947c('0xe')](respondWithResult(_0x13afc2,null))['catch'](handleError(_0x13afc2,null));};exports['update']=function(_0x1df28d,_0x64024c){if(_0x1df28d[_0x947c('0x42')]['id']){delete _0x1df28d[_0x947c('0x42')]['id'];}return db[_0x947c('0x24')][_0x947c('0x41')]({'where':{'id':_0x1df28d[_0x947c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x64024c,null))[_0x947c('0xe')](saveUpdates(_0x1df28d['body'],null))[_0x947c('0xe')](respondWithResult(_0x64024c,null))[_0x947c('0x3d')](handleError(_0x64024c,null));};exports[_0x947c('0x43')]=function(_0x2bfbb0,_0x484b3f){return db[_0x947c('0x24')]['find']({'where':{'id':_0x2bfbb0[_0x947c('0x3f')]['id']}})['then'](handleEntityNotFound(_0x484b3f,null))[_0x947c('0xe')](removeEntity(_0x484b3f,null))[_0x947c('0x3d')](handleError(_0x484b3f,null));};exports[_0x947c('0x44')]=function(_0x1e2f97,_0x425b89){return db[_0x947c('0x24')]['describe']()[_0x947c('0xe')](respondWithResult(_0x425b89,null))[_0x947c('0x3d')](handleError(_0x425b89,null));};exports[_0x947c('0x45')]=function(_0x180797,_0x48923a){return db['MailMessage']['create'](_0x180797[_0x947c('0x42')])[_0x947c('0xe')](function(_0x31a495){if(_0x31a495){if(_0x31a495[_0x947c('0x46')]==='out'&&!_0x31a495['secret']){var _0x4373c1,_0x277dcb,_0x57206f;if(_0x180797[_0x947c('0x42')]['to']){_0x277dcb=_0x180797[_0x947c('0x42')]['to'][_0x947c('0x47')](',')[0x0];}return db[_0x947c('0x48')][_0x947c('0x49')]({'where':{'id':_0x31a495[_0x947c('0x4a')]},'include':[{'model':db[_0x947c('0x4b')],'as':'List','include':[{'model':db[_0x947c('0x4c')],'as':_0x947c('0x4d'),'where':{'email':_0x277dcb},'limit':0x1,'order':[[_0x947c('0x4e'),_0x947c('0x4f')]]}]},{'model':db[_0x947c('0x50')],'as':_0x947c('0x51'),'raw':!![],'include':[{'model':db[_0x947c('0x52')],'as':_0x947c('0x52'),'raw':!![]}]}]})['then'](function(_0x96a307){_0x4373c1=_0x96a307;if(!_0x4373c1||!_0x4373c1[_0x947c('0x51')])return;var _0x1b42ec=_0x4373c1[_0x947c('0x53')]();if(_0x180797[_0x947c('0x42')][_0x947c('0x54')]&&_0x180797[_0x947c('0x42')][_0x947c('0x54')][_0x947c('0x30')]){for(var _0x1f1dec=0x0;_0x1f1dec<_0x180797[_0x947c('0x42')][_0x947c('0x54')][_0x947c('0x30')];_0x1f1dec+=0x1){_0x180797[_0x947c('0x42')][_0x947c('0x54')][_0x1f1dec]={'filename':_0x180797[_0x947c('0x42')]['attachments'][_0x1f1dec][_0x947c('0x22')],'path':path[_0x947c('0x55')](config[_0x947c('0x56')],'server/files/attachments',_0x180797['body'][_0x947c('0x54')][_0x1f1dec][_0x947c('0x57')])};}}_0x57206f={'account':_0x1b42ec,'message':_0x180797['body']};return;})[_0x947c('0xe')](function(){if(_0x4373c1[_0x947c('0x58')]){if(_0x4373c1[_0x947c('0x58')][_0x947c('0x4d')][_0x947c('0x30')]){return _0x4373c1['List'][_0x947c('0x4d')][0x0];}else{return db[_0x947c('0x4c')][_0x947c('0x45')](_['defaults'](_0x180797[_0x947c('0x42')],{'firstName':_0x180797['body']['to'],'email':_0x180797[_0x947c('0x42')]['to'],'phone':_0x180797['body']['to'],'ListId':_0x4373c1[_0x947c('0x59')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x57206f){return respondWithRpcPromise(_0x947c('0x5a'),_0x947c('0x5b'),_0x57206f,client9003)[_0x947c('0xe')](function(_0x4921b9){return _0x31a495['update']({'read':!![],'messageId':_0x4921b9[_0x947c('0x5c')],'sentAt':moment()[_0x947c('0x5d')](_0x947c('0x5e'))});})['catch'](function(_0x42617b){logger[_0x947c('0x13')]('%s',JSON[_0x947c('0x12')](_0x42617b));return _0x31a495;});}return _0x31a495;});}return _0x31a495;}})[_0x947c('0xe')](respondWithResult(_0x48923a,0xc9))[_0x947c('0x3d')](handleError(_0x48923a,null));};exports[_0x947c('0x5f')]=function(_0x5655e4,_0x257cef){var _0xff2411={'agent':{},'channel':'mail'};if(_0x5655e4[_0x947c('0x42')]['id']){delete _0x5655e4[_0x947c('0x42')]['id'];}_0x5655e4[_0x947c('0x42')]['read']=!![];_0x5655e4[_0x947c('0x42')][_0x947c('0x60')]=moment()['format'](_0x947c('0x5e'));_0x5655e4[_0x947c('0x42')][_0x947c('0x61')]=_0x5655e4[_0x947c('0x42')][_0x947c('0x61')]||_0x5655e4[_0x947c('0x62')]['id'];_0xff2411[_0x947c('0x63')]['id']=_0x5655e4[_0x947c('0x42')][_0x947c('0x61')];return db[_0x947c('0x24')][_0x947c('0x41')]({'where':{'id':_0x5655e4[_0x947c('0x3f')]['id'],'UserId':null}})[_0x947c('0xe')](handleEntityNotFound(_0x257cef,null))['then'](saveUpdates(_0x5655e4[_0x947c('0x42')],null))[_0x947c('0xe')](function(_0x5346b8){if(_0x5346b8){_0xff2411[_0x947c('0x15')]=_0x5346b8[_0x947c('0x64')]({'plain':!![]});return db[_0x947c('0x65')][_0x947c('0x41')]({'where':{'id':_0x5346b8['MailInteractionId']}});}return null;})[_0x947c('0xe')](handleEntityNotFound(_0x257cef,null))['then'](function(_0x41c41f){if(_0x41c41f){return _0x41c41f[_0x947c('0x66')]({'UserId':_0x5655e4[_0x947c('0x42')]['UserId'],'read1stAt':_[_0x947c('0x67')](_0x41c41f[_0x947c('0x68')])?moment()[_0x947c('0x5d')](_0x947c('0x5e')):undefined});}return null;})[_0x947c('0xe')](function(_0x2a3797){if(_0x2a3797){_0xff2411['interaction']=_0x2a3797[_0x947c('0x64')]({'plain':!![]});interaction_log[_0x947c('0xf')](_0x947c('0x69'),_0x5655e4['user']['id'],_0x5655e4[_0x947c('0x62')][_0x947c('0x22')],_0x5655e4[_0x947c('0x62')][_0x947c('0x6a')],_0xff2411[_0x947c('0x6b')]['id'],_0x5655e4[_0x947c('0x42')]?JSON[_0x947c('0x12')](_0x5655e4['body']):_0x947c('0x6c'));return respondWithRpcPromise(_0x947c('0x6d'),_0x947c('0x6e'),_0xff2411);}return null;})[_0x947c('0xe')](function(_0x5de6c9){var _0x3737d7=_0x947c('0x6f')+_0x5de6c9[_0x947c('0x15')][_0x947c('0x70')];return db['sequelize'][_0x947c('0x2b')](_0x3737d7,{'type':db['Sequelize'][_0x947c('0x71')][_0x947c('0x72')],'raw':!![]})[_0x947c('0xe')](function(_0x1facee){return _0x1facee;});})[_0x947c('0xe')](function(_0x3be44c){if(_0x3be44c){_0xff2411['message']['contact']=_0x3be44c[0x0];if(!_0x5655e4[_0x947c('0x42')][_0x947c('0x61')])return;return db['User']['find']({'where':{'id':_0x5655e4[_0x947c('0x42')][_0x947c('0x61')],'role':_0x947c('0x63')},'attributes':['id','name','fullname',_0x947c('0x73'),'internal'],'raw':!![]});}return null;})[_0x947c('0xe')](function(_0x71a9fa){if(!_0x71a9fa)return null;_0xff2411[_0x947c('0x15')]['agent']=_0x71a9fa;return _0xff2411;})[_0x947c('0xe')](function(_0x47a545){if(_0x47a545){if(_0x5655e4['body']['manual']){_0xff2411[_0x947c('0x15')][_0x947c('0x74')]=util['format']('SIP/%s',_0x5655e4[_0x947c('0x62')][_0x947c('0x22')]);_0xff2411[_0x947c('0x15')][_0x947c('0x75')]=_0xff2411[_0x947c('0x75')];_0xff2411[_0x947c('0x15')]['motionChannel']=_0xff2411[_0x947c('0x75')];_0xff2411[_0x947c('0x15')][_0x947c('0x76')]='accept';_0xff2411[_0x947c('0x15')][_0x947c('0x42')]=htmlToText[_0x947c('0x77')](_0xff2411[_0x947c('0x15')][_0x947c('0x42')]);return respondWithRpcPromise(_0x947c('0x78'),_0x947c('0x78'),{'event':_0x947c('0x79'),'message':_0xff2411[_0x947c('0x15')]},client9002)[_0x947c('0xe')](function(){return _0xff2411;});}return _0xff2411;}return null;})[_0x947c('0xe')](respondWithResult(_0x257cef,null))[_0x947c('0x3d')](handleError(_0x257cef,null));};exports['reject']=function(_0x14341e,_0x2efc9d){var _0x2daee2={'agent':{},'channel':'mail'};if(_0x14341e[_0x947c('0x42')]['id']){delete _0x14341e[_0x947c('0x42')]['id'];}_0x14341e[_0x947c('0x42')][_0x947c('0x61')]=_0x14341e[_0x947c('0x42')]['UserId']||_0x14341e[_0x947c('0x62')]['id'];_0x2daee2[_0x947c('0x63')]['id']=_0x14341e[_0x947c('0x42')][_0x947c('0x61')];return db[_0x947c('0x24')][_0x947c('0x41')]({'where':{'id':_0x14341e[_0x947c('0x3f')]['id'],'UserId':null}})[_0x947c('0xe')](handleEntityNotFound(_0x2efc9d,null))['then'](function(_0x469e66){if(_0x469e66){_0x2daee2[_0x947c('0x15')]=_0x469e66['get']({'plain':!![]});return db[_0x947c('0x65')][_0x947c('0x41')]({'where':{'id':_0x469e66[_0x947c('0x7a')]}});}return null;})[_0x947c('0xe')](handleEntityNotFound(_0x2efc9d,null))[_0x947c('0xe')](function(_0x5b2465){if(_0x5b2465){_0x2daee2[_0x947c('0x6b')]=_0x5b2465[_0x947c('0x64')]({'plain':!![]});interaction_log['info'](_0x947c('0x7b'),_0x14341e[_0x947c('0x62')]['id'],_0x14341e['user'][_0x947c('0x22')],_0x14341e[_0x947c('0x62')][_0x947c('0x6a')],_0x2daee2[_0x947c('0x6b')]['id'],_0x14341e['body']?JSON[_0x947c('0x12')](_0x14341e[_0x947c('0x42')]):_0x947c('0x6c'));return respondWithRpcPromise('RejectMessage',_0x947c('0x7c'),_0x2daee2);}return null;})[_0x947c('0xe')](function(_0x513dcb){var _0x2e834c=_0x947c('0x6f')+_0x513dcb[_0x947c('0x15')][_0x947c('0x70')];return db['sequelize'][_0x947c('0x2b')](_0x2e834c,{'type':db['Sequelize'][_0x947c('0x71')][_0x947c('0x72')],'raw':!![]})[_0x947c('0xe')](function(_0x2aa21b){return _0x2aa21b;});})[_0x947c('0xe')](function(_0x4a25cc){if(_0x4a25cc){_0x2daee2[_0x947c('0x15')]['contact']=_0x4a25cc[0x0];if(!_0x14341e[_0x947c('0x42')][_0x947c('0x61')])return;return db[_0x947c('0x7d')][_0x947c('0x41')]({'where':{'id':_0x14341e[_0x947c('0x42')][_0x947c('0x61')],'role':_0x947c('0x63')},'attributes':['id',_0x947c('0x22'),'fullname',_0x947c('0x73'),'internal'],'raw':!![]});}return null;})[_0x947c('0xe')](function(_0x209464){if(!_0x209464)return null;_0x2daee2[_0x947c('0x15')][_0x947c('0x63')]=_0x209464;return _0x2daee2;})[_0x947c('0xe')](function(_0x108e00){if(_0x108e00){_0x108e00[_0x947c('0x15')]['interface']=util[_0x947c('0x5d')](_0x947c('0x7e'),_0x14341e[_0x947c('0x62')][_0x947c('0x22')]);_0x108e00[_0x947c('0x15')]['channel']=_0x2daee2['channel'];_0x108e00[_0x947c('0x15')][_0x947c('0x7f')]=_0x2daee2['channel'];_0x108e00['message'][_0x947c('0x76')]='reject';_0x108e00[_0x947c('0x15')][_0x947c('0x42')]=htmlToText[_0x947c('0x77')](_0x2daee2[_0x947c('0x15')][_0x947c('0x42')]);respondWithRpcPromise(_0x947c('0x78'),'EventManager',{'event':_0x947c('0x80'),'message':_0x108e00[_0x947c('0x15')]},client9002);return _0x2daee2;}return null;})[_0x947c('0xe')](respondWithResult(_0x2efc9d,null))['catch'](handleError(_0x2efc9d,null));};exports[_0x947c('0x81')]=function(_0x11c638,_0xa9b8f){var _0x2b881d=moment()['unix']()[_0x947c('0x82')]();var _0x12c0ae=path[_0x947c('0x55')](config[_0x947c('0x56')],_0x947c('0x83'),_0x947c('0x84'),_0x947c('0x85'));var _0x481315=path[_0x947c('0x55')](config['root'],'server',_0x947c('0x84'),_0x947c('0x54'));var _0x2fd7ad=util[_0x947c('0x5d')](_0x947c('0x86'),_0x2b881d);return db['MailMessage'][_0x947c('0x41')]({'where':{'id':_0x11c638[_0x947c('0x3f')]['id']},'attributes':['id',_0x947c('0x42'),_0x947c('0x87'),'to','cc',_0x947c('0x88'),_0x947c('0x89'),_0x947c('0x8a')],'include':_0x11c638[_0x947c('0x2b')][_0x947c('0x54')]?[{'model':db[_0x947c('0x8b')],'as':_0x947c('0x8c')}]:undefined})['then'](handleEntityNotFound(_0xa9b8f,null))['then'](function(_0xe5a2c2){if(_0xe5a2c2){var _0x1d9bf1=_0xe5a2c2;var _0x2cf612={'from':_0x1d9bf1[_0x947c('0x87')],'to':_0x1d9bf1['to'],'subject':_0x1d9bf1[_0x947c('0x89')],'html':htmlEntities[_0x947c('0x8d')](_0x1d9bf1['body']),'headers':{'Date':moment(_0x1d9bf1[_0x947c('0x8a')])[_0x947c('0x5d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0xe5a2c2['cc']){_0x2cf612['headers']['Cc']=_0xe5a2c2['cc'];}if(_0xe5a2c2[_0x947c('0x88')]){_0x2cf612['headers'][_0x947c('0x8e')]=_0xe5a2c2[_0x947c('0x88')];}return new BPromise(function(_0x23f46d,_0x24d8b1){if(_0xe5a2c2[_0x947c('0x8c')]){for(var _0x3f32f8=0x0;_0x3f32f8<_0xe5a2c2[_0x947c('0x8c')]['length'];_0x3f32f8++){var _0x3e209c=_0xe5a2c2['Attachments'][_0x3f32f8];var _0x496bc4=path[_0x947c('0x55')](_0x481315,_0x3e209c[_0x947c('0x57')]);if(fs['existsSync'](_0x496bc4)){_0x2cf612[_0x947c('0x54')][_0x947c('0x8f')]({'name':_0x3e209c['name'],'contentType':_0x3e209c[_0x947c('0x27')],'data':fs[_0x947c('0x90')](_0x496bc4)});}}}emlformat[_0x947c('0x91')](_0x2cf612,function(_0x12852c,_0x33b9aa){if(_0x12852c)return _0x24d8b1(_0x12852c);fs[_0x947c('0x92')](path[_0x947c('0x55')](_0x12c0ae,_0x2fd7ad),_0x33b9aa);return _0x23f46d(_0x33b9aa);});});}})['then'](function(_0xf00eac){if(_0xf00eac){return _0xa9b8f[_0x947c('0x81')](path['join'](_0x12c0ae,_0x2fd7ad),_0x2fd7ad,function(_0x240e06){if(!_0x240e06)fs[_0x947c('0x93')](path[_0x947c('0x55')](_0x12c0ae,_0x2fd7ad));});}})[_0x947c('0x3d')](handleError(_0xa9b8f,null));};
\ No newline at end of file
index 6d10811..75bdda9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2775=['exports','events','../../mysqldb','MailMessage','save','update','remove','hook'];(function(_0x30a52d,_0x422634){var _0xf938f3=function(_0x39502f){while(--_0x39502f){_0x30a52d['push'](_0x30a52d['shift']());}};_0xf938f3(++_0x422634);}(_0x2775,0xd9));var _0x5277=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x2775[_0x3e44fa];return _0x2a0aba;};'use strict';var EventEmitter=require(_0x5277('0x0'));var MailMessage=require(_0x5277('0x1'))['db'][_0x5277('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5277('0x3'),'afterUpdate':_0x5277('0x4'),'afterDestroy':_0x5277('0x5')};function emitEvent(_0x56709c){return function(_0x41e806,_0x53d7d6,_0x4acde3){MailMessageEvents['emit'](_0x56709c+':'+_0x41e806['id'],_0x41e806);MailMessageEvents['emit'](_0x56709c,_0x41e806);_0x4acde3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0x5277('0x6')](e,emitEvent(event));}}module[_0x5277('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0x11df=['update','emit','hasOwnProperty','exports','events','setMaxListeners'];(function(_0x576ab9,_0x2e6eef){var _0x4fcf15=function(_0x366831){while(--_0x366831){_0x576ab9['push'](_0x576ab9['shift']());}};_0x4fcf15(++_0x2e6eef);}(_0x11df,0xa0));var _0xf11d=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x11df[_0x2dea24];return _0x309d58;};'use strict';var EventEmitter=require(_0xf11d('0x0'));var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xf11d('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf11d('0x2'),'afterDestroy':'remove'};function emitEvent(_0xe7d08a){return function(_0x488604,_0x35ee20,_0x349b03){MailMessageEvents[_0xf11d('0x3')](_0xe7d08a+':'+_0x488604['id'],_0x488604);MailMessageEvents[_0xf11d('0x3')](_0xe7d08a,_0x488604);_0x349b03(null);};}for(var e in events){if(events[_0xf11d('0x4')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0xf11d('0x5')]=MailMessageEvents;
\ No newline at end of file
index 0df34ca..040e74a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc551=['secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','html-to-text','path','rimraf','exports','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString','models','get','toLowerCase','direction','out'];(function(_0x1de75c,_0x326a1b){var _0x48fe19=function(_0x258e25){while(--_0x258e25){_0x1de75c['push'](_0x1de75c['shift']());}};_0x48fe19(++_0x326a1b);}(_0xc551,0x1a5));var _0x1c55=function(_0x5a5c80,_0x579447){_0x5a5c80=_0x5a5c80-0x0;var _0x2ac2ec=_0xc551[_0x5a5c80];return _0x2ac2ec;};'use strict';var _=require(_0x1c55('0x0'));var util=require('util');var logger=require(_0x1c55('0x1'))(_0x1c55('0x2'));var moment=require('moment');var BPromise=require(_0x1c55('0x3'));var rp=require('request-promise');var htmlToText=require(_0x1c55('0x4'));var fs=require('fs');var path=require(_0x1c55('0x5'));var rimraf=require(_0x1c55('0x6'));var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module[_0x1c55('0x7')]=function(_0x3075c6,_0x436885){return _0x3075c6['define'](_0x1c55('0x8'),attributes,{'tableName':_0x1c55('0x9'),'paranoid':![],'indexes':[{'name':_0x1c55('0xa'),'fields':[_0x1c55('0xa')]},{'name':_0x1c55('0xb'),'fields':[_0x1c55('0xc'),'subject'],'type':_0x1c55('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x453863,_0x1f16cc,_0x1beffc){if(_0x453863[_0x1c55('0xe')]){_0x453863[_0x1c55('0xc')]=htmlToText[_0x1c55('0xf')](_0x453863[_0x1c55('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1beffc(null,_0x1f16cc);},'afterCreate':function(_0x45f0d3,_0x418b5a,_0x4d7062){var _0x2c2155=_0x3075c6[_0x1c55('0x10')];var _0x1a7750=_0x45f0d3[_0x1c55('0x11')]({'plain':!![]});if(_0x1a7750['direction'][_0x1c55('0x12')]()==='in'||_0x1a7750[_0x1c55('0x13')][_0x1c55('0x12')]()===_0x1c55('0x14')&&!_0x1a7750[_0x1c55('0x15')]&&!_[_0x1c55('0x16')](_0x1a7750[_0x1c55('0x17')])){_0x2c2155[_0x1c55('0x18')][_0x1c55('0x19')]({'where':{'id':_0x1a7750[_0x1c55('0x1a')]}})[_0x1c55('0x1b')](function(_0x32bd28){if(_0x32bd28){_0x32bd28[_0x1c55('0x1c')]({'lastMsgAt':_0x1a7750[_0x1c55('0x1d')],'lastMsgDirection':_0x1a7750[_0x1c55('0x13')]['toLowerCase']()});}})[_0x1c55('0x1e')](function(_0x3e88c7){console[_0x1c55('0x1f')](_0x3e88c7);});}_0x4d7062();}},'charset':_0x1c55('0x20'),'collate':_0x1c55('0x21')});};
\ No newline at end of file
+var _0x89bd=['createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','messageId','fti_mail_messages','plainBody','FULLTEXT','body','models','direction','toLowerCase','out','secret','isNil','UserId','findOne','then','update'];(function(_0x3f52d9,_0x1d748c){var _0x21e01f=function(_0x22e584){while(--_0x22e584){_0x3f52d9['push'](_0x3f52d9['shift']());}};_0x21e01f(++_0x1d748c);}(_0x89bd,0xe4));var _0xd89b=function(_0x1cb84c,_0x576b00){_0x1cb84c=_0x1cb84c-0x0;var _0x1ff4ed=_0x89bd[_0x1cb84c];return _0x1ff4ed;};'use strict';var _=require(_0xd89b('0x0'));var util=require(_0xd89b('0x1'));var logger=require(_0xd89b('0x2'))(_0xd89b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd89b('0x4'));var htmlToText=require(_0xd89b('0x5'));var fs=require('fs');var path=require(_0xd89b('0x6'));var rimraf=require(_0xd89b('0x7'));var config=require(_0xd89b('0x8'));var attributes=require(_0xd89b('0x9'));module[_0xd89b('0xa')]=function(_0x1b3ea8,_0x5eb86c){return _0x1b3ea8[_0xd89b('0xb')](_0xd89b('0xc'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xd89b('0xd'),'fields':[_0xd89b('0xd')]},{'name':_0xd89b('0xe'),'fields':[_0xd89b('0xf'),'subject'],'type':_0xd89b('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x519490,_0x30a984,_0x4697f8){if(_0x519490[_0xd89b('0x11')]){_0x519490[_0xd89b('0xf')]=htmlToText['fromString'](_0x519490[_0xd89b('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4697f8(null,_0x30a984);},'afterCreate':function(_0x4eb518,_0x2c2a7b,_0x4648b3){var _0xe24b3a=_0x1b3ea8[_0xd89b('0x12')];var _0x17a9fc=_0x4eb518['get']({'plain':!![]});if(_0x17a9fc[_0xd89b('0x13')][_0xd89b('0x14')]()==='in'||_0x17a9fc[_0xd89b('0x13')]['toLowerCase']()===_0xd89b('0x15')&&!_0x17a9fc[_0xd89b('0x16')]&&!_[_0xd89b('0x17')](_0x17a9fc[_0xd89b('0x18')])){_0xe24b3a['MailInteraction'][_0xd89b('0x19')]({'where':{'id':_0x17a9fc['MailInteractionId']}})[_0xd89b('0x1a')](function(_0x1184cf){if(_0x1184cf){_0x1184cf[_0xd89b('0x1b')]({'lastMsgAt':_0x17a9fc[_0xd89b('0x1c')],'lastMsgDirection':_0x17a9fc[_0xd89b('0x13')][_0xd89b('0x14')]()});}})[_0xd89b('0x1d')](function(_0x3b0467){console[_0xd89b('0x1e')](_0x3b0467);});}_0x4648b3();}},'charset':'utf8mb4','collate':_0xd89b('0x1f')});};
\ No newline at end of file
index 25abb0f..1906aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['client','http','redis','defaults','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x53d985,_0x1cd580){var _0x34bdde=function(_0x34d312){while(--_0x34d312){_0x53d985['push'](_0x53d985['shift']());}};_0x34bdde(++_0x1cd580);}(_0x9582,0x95));var _0x2958=function(_0x3abbf3,_0x272622){_0x3abbf3=_0x3abbf3-0x0;var _0x4808c7=_0x9582[_0x3abbf3];return _0x4808c7;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});config[_0x2958('0xd')]=_[_0x2958('0xe')](config[_0x2958('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2958('0xd')]));require('./mailMessage.socket')[_0x2958('0xf')](socket);function respondWithRpcPromise(_0x51e460,_0x44cccc,_0x5ef23c){return new BPromise(function(_0x3aacfa,_0x29776c){return client[_0x2958('0x10')](_0x51e460,_0x5ef23c)[_0x2958('0x11')](function(_0x11ec8d){logger['info'](_0x2958('0x12'),_0x44cccc,_0x2958('0x13'));logger[_0x2958('0x14')](_0x2958('0x15'),_0x44cccc,_0x2958('0x13'),JSON[_0x2958('0x16')](_0x11ec8d));if(_0x11ec8d[_0x2958('0x17')]){if(_0x11ec8d[_0x2958('0x17')]['code']===0x1f4){logger[_0x2958('0x17')](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x29776c(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}logger['error'](_0x2958('0x12'),_0x44cccc,_0x11ec8d['error']['message']);return _0x3aacfa(_0x11ec8d[_0x2958('0x17')][_0x2958('0x18')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x44cccc,_0x2958('0x13'));_0x3aacfa(_0x11ec8d[_0x2958('0x19')][_0x2958('0x18')]);}})[_0x2958('0x1a')](function(_0x27599c){logger['error'](_0x2958('0x12'),_0x44cccc,_0x27599c);_0x29776c(_0x27599c);});});}exports[_0x2958('0x1b')]=function(_0x1a12fa){var _0x57b6c5=this;return new Promise(function(_0x1e77eb,_0x53b100){return db[_0x2958('0x1c')]['create'](_0x1a12fa['body'],{'raw':_0x1a12fa[_0x2958('0x1d')]?_0x1a12fa[_0x2958('0x1d')][_0x2958('0x1e')]===undefined?!![]:![]:!![]})[_0x2958('0x11')](function(_0x2202f8){logger[_0x2958('0x1f')](_0x2958('0x1b'),_0x1a12fa);logger[_0x2958('0x14')](_0x2958('0x1b'),_0x1a12fa,JSON[_0x2958('0x16')](_0x2202f8));_0x1e77eb(_0x2202f8);})[_0x2958('0x1a')](function(_0xd58ae1){logger[_0x2958('0x17')](_0x2958('0x1b'),_0xd58ae1[_0x2958('0x18')],_0x1a12fa);_0x53b100(_0x57b6c5['error'](0x1f4,_0xd58ae1['message']));});});};
\ No newline at end of file
+var _0xe820=['client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','CreateMailMessage','body','options','raw','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x572dd9,_0x500c41){var _0x39e3c7=function(_0x5b7228){while(--_0x5b7228){_0x572dd9['push'](_0x572dd9['shift']());}};_0x39e3c7(++_0x500c41);}(_0xe820,0xd2));var _0x0e82=function(_0x17cc73,_0x280568){_0x17cc73=_0x17cc73-0x0;var _0xa8afb4=_0xe820[_0x17cc73];return _0xa8afb4;};'use strict';var _=require(_0x0e82('0x0'));var util=require('util');var moment=require(_0x0e82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e82('0x2'));var db=require(_0x0e82('0x3'))['db'];var utils=require(_0x0e82('0x4'));var logger=require('../../config/logger')(_0x0e82('0x5'));var config=require('../../config/environment');var jayson=require(_0x0e82('0x6'));var client=jayson[_0x0e82('0x7')][_0x0e82('0x8')]({'port':0x232a});config[_0x0e82('0x9')]=_[_0x0e82('0xa')](config['redis'],{'host':_0x0e82('0xb'),'port':0x18eb});var socket=require(_0x0e82('0xc'))(new Redis(config[_0x0e82('0x9')]));require(_0x0e82('0xd'))[_0x0e82('0xe')](socket);function respondWithRpcPromise(_0x4b3302,_0x43b550,_0x38b362){return new BPromise(function(_0x2dfacf,_0x10b2e2){return client[_0x0e82('0xf')](_0x4b3302,_0x38b362)[_0x0e82('0x10')](function(_0x270173){logger['info'](_0x0e82('0x11'),_0x43b550,_0x0e82('0x12'));logger[_0x0e82('0x13')](_0x0e82('0x14'),_0x43b550,_0x0e82('0x12'),JSON[_0x0e82('0x15')](_0x270173));if(_0x270173['error']){if(_0x270173[_0x0e82('0x16')]['code']===0x1f4){logger['error'](_0x0e82('0x11'),_0x43b550,_0x270173['error']['message']);return _0x10b2e2(_0x270173['error'][_0x0e82('0x17')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x43b550,_0x270173[_0x0e82('0x16')]['message']);return _0x2dfacf(_0x270173[_0x0e82('0x16')][_0x0e82('0x17')]);}else{logger[_0x0e82('0x18')](_0x0e82('0x11'),_0x43b550,'request\x20sent');_0x2dfacf(_0x270173[_0x0e82('0x19')][_0x0e82('0x17')]);}})[_0x0e82('0x1a')](function(_0xc3d043){logger[_0x0e82('0x16')](_0x0e82('0x11'),_0x43b550,_0xc3d043);_0x10b2e2(_0xc3d043);});});}exports[_0x0e82('0x1b')]=function(_0x3735c0){var _0xc9f7ac=this;return new Promise(function(_0x224455,_0x5903c){return db['MailMessage']['create'](_0x3735c0[_0x0e82('0x1c')],{'raw':_0x3735c0[_0x0e82('0x1d')]?_0x3735c0[_0x0e82('0x1d')][_0x0e82('0x1e')]===undefined?!![]:![]:!![]})[_0x0e82('0x10')](function(_0x1bdad4){logger[_0x0e82('0x18')](_0x0e82('0x1b'),_0x3735c0);logger['debug'](_0x0e82('0x1b'),_0x3735c0,JSON[_0x0e82('0x15')](_0x1bdad4));_0x224455(_0x1bdad4);})[_0x0e82('0x1a')](function(_0x24f883){logger['error'](_0x0e82('0x1b'),_0x24f883[_0x0e82('0x17')],_0x3735c0);_0x5903c(_0xc9f7ac[_0x0e82('0x16')](0x1f4,_0x24f883[_0x0e82('0x17')]));});});};
\ No newline at end of file
index 2b3f344..fbd19fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f93=['update','emit','removeListener','register','length','mailMessage:','save','remove'];(function(_0x311a00,_0x14f9b8){var _0x5ae163=function(_0x19cd2c){while(--_0x19cd2c){_0x311a00['push'](_0x311a00['shift']());}};_0x5ae163(++_0x14f9b8);}(_0x0f93,0x66));var _0x30f9=function(_0xeb2d28,_0x5150fd){_0xeb2d28=_0xeb2d28-0x0;var _0xefd115=_0x0f93[_0xeb2d28];return _0xefd115;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x30f9('0x0'),_0x30f9('0x1'),_0x30f9('0x2')];function createListener(_0x43e3be,_0x1ca80f){return function(_0x193be5){_0x1ca80f[_0x30f9('0x3')](_0x43e3be,_0x193be5);};}function removeListener(_0x3ef34b,_0x443add){return function(){MailMessageEvents[_0x30f9('0x4')](_0x3ef34b,_0x443add);};}exports[_0x30f9('0x5')]=function(_0x4d6276){for(var _0xaad949=0x0,_0x2c3442=events[_0x30f9('0x6')];_0xaad949<_0x2c3442;_0xaad949++){var _0x554ef5=events[_0xaad949];var _0x48e098=createListener(_0x30f9('0x7')+_0x554ef5,_0x4d6276);MailMessageEvents['on'](_0x554ef5,_0x48e098);}};
\ No newline at end of file
+var _0x1e0f=['save','remove','update','emit','mailMessage:'];(function(_0x5022f3,_0x97e704){var _0x1ad4bf=function(_0x20109a){while(--_0x20109a){_0x5022f3['push'](_0x5022f3['shift']());}};_0x1ad4bf(++_0x97e704);}(_0x1e0f,0x1e5));var _0xf1e0=function(_0x274693,_0x2ca06a){_0x274693=_0x274693-0x0;var _0xb010c1=_0x1e0f[_0x274693];return _0xb010c1;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xf1e0('0x0'),_0xf1e0('0x1'),_0xf1e0('0x2')];function createListener(_0x532952,_0x4281dc){return function(_0x8a1927){_0x4281dc[_0xf1e0('0x3')](_0x532952,_0x8a1927);};}function removeListener(_0xe16d76,_0x12725b){return function(){MailMessageEvents['removeListener'](_0xe16d76,_0x12725b);};}exports['register']=function(_0x347690){for(var _0x45e0d0=0x0,_0x3cde85=events['length'];_0x45e0d0<_0x3cde85;_0x45e0d0++){var _0x310a7c=events[_0x45e0d0];var _0xb6a1ec=createListener(_0xf1e0('0x4')+_0x310a7c,_0x347690);MailMessageEvents['on'](_0x310a7c,_0xb6a1ec);}};
\ No newline at end of file
index c46448a..190310d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc731=['create','addTeams','addAgents','put','update','delete','/:id/users','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xc731,0x169));var _0x1c73=function(_0x326215,_0x596e40){_0x326215=_0x326215-0x0;var _0x4807e5=_0xc731[_0x326215];return _0x4807e5;};'use strict';var multer=require(_0x1c73('0x0'));var util=require(_0x1c73('0x1'));var path=require(_0x1c73('0x2'));var timeout=require('connect-timeout');var express=require(_0x1c73('0x3'));var router=express[_0x1c73('0x4')]();var fs_extra=require(_0x1c73('0x5'));var auth=require(_0x1c73('0x6'));var interaction=require(_0x1c73('0x7'));var config=require(_0x1c73('0x8'));var controller=require(_0x1c73('0x9'));router[_0x1c73('0xa')]('/',auth[_0x1c73('0xb')](),controller[_0x1c73('0xc')]);router[_0x1c73('0xa')](_0x1c73('0xd'),auth[_0x1c73('0xb')](),controller[_0x1c73('0xe')]);router[_0x1c73('0xa')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x10')]);router[_0x1c73('0xa')](_0x1c73('0x11'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x12')]);router['get'](_0x1c73('0x13'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x14')]);router['get']('/:id/users',auth[_0x1c73('0xb')](),controller[_0x1c73('0x15')]);router[_0x1c73('0x16')]('/',auth['isAuthenticated'](),controller[_0x1c73('0x17')]);router[_0x1c73('0x16')]('/:id/teams',auth[_0x1c73('0xb')](),controller[_0x1c73('0x18')]);router['post']('/:id/users',auth[_0x1c73('0xb')](),controller[_0x1c73('0x19')]);router[_0x1c73('0x1a')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x1b')]);router[_0x1c73('0x1c')](_0x1c73('0xf'),auth[_0x1c73('0xb')](),controller['destroy']);router[_0x1c73('0x1c')](_0x1c73('0x13'),auth[_0x1c73('0xb')](),controller['removeTeams']);router[_0x1c73('0x1c')](_0x1c73('0x1d'),auth[_0x1c73('0xb')](),controller[_0x1c73('0x1e')]);module[_0x1c73('0x1f')]=router;
\ No newline at end of file
+var _0x1f26=['describe','/:id','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','express','../../components/interaction/service','./mailQueue.controller','get','isAuthenticated','index','/describe'];(function(_0x303c7b,_0x19dc8d){var _0x109ec3=function(_0x3ede81){while(--_0x3ede81){_0x303c7b['push'](_0x303c7b['shift']());}};_0x109ec3(++_0x19dc8d);}(_0x1f26,0x9e));var _0x61f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1f26[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x61f2('0x0'));var util=require(_0x61f2('0x1'));var path=require(_0x61f2('0x2'));var timeout=require('connect-timeout');var express=require(_0x61f2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x61f2('0x4'));var config=require('../../config/environment');var controller=require(_0x61f2('0x5'));router[_0x61f2('0x6')]('/',auth[_0x61f2('0x7')](),controller[_0x61f2('0x8')]);router[_0x61f2('0x6')](_0x61f2('0x9'),auth['isAuthenticated'](),controller[_0x61f2('0xa')]);router[_0x61f2('0x6')](_0x61f2('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x61f2('0x6')](_0x61f2('0xc'),auth[_0x61f2('0x7')](),controller[_0x61f2('0xd')]);router[_0x61f2('0x6')]('/:id/teams',auth['isAuthenticated'](),controller[_0x61f2('0xe')]);router[_0x61f2('0x6')](_0x61f2('0xf'),auth[_0x61f2('0x7')](),controller[_0x61f2('0x10')]);router[_0x61f2('0x11')]('/',auth[_0x61f2('0x7')](),controller[_0x61f2('0x12')]);router[_0x61f2('0x11')](_0x61f2('0x13'),auth['isAuthenticated'](),controller[_0x61f2('0x14')]);router[_0x61f2('0x11')](_0x61f2('0xf'),auth[_0x61f2('0x7')](),controller['addAgents']);router[_0x61f2('0x15')](_0x61f2('0xb'),auth[_0x61f2('0x7')](),controller[_0x61f2('0x16')]);router[_0x61f2('0x17')](_0x61f2('0xb'),auth['isAuthenticated'](),controller[_0x61f2('0x18')]);router['delete'](_0x61f2('0x13'),auth[_0x61f2('0x7')](),controller[_0x61f2('0x19')]);router['delete'](_0x61f2('0xf'),auth[_0x61f2('0x7')](),controller[_0x61f2('0x1a')]);module[_0x61f2('0x1b')]=router;
\ No newline at end of file
index 22199a0..2a82b9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4146=['sequelize','exports','STRING','name','INTEGER','beepall'];(function(_0x2a415b,_0x462501){var _0x1d9847=function(_0x4756f2){while(--_0x4756f2){_0x2a415b['push'](_0x2a415b['shift']());}};_0x1d9847(++_0x462501);}(_0x4146,0x8a));var _0x6414=function(_0x414825,_0x7b33cd){_0x414825=_0x414825-0x0;var _0x3568b1=_0x4146[_0x414825];return _0x3568b1;};'use strict';var Sequelize=require(_0x6414('0x0'));module[_0x6414('0x1')]={'name':{'type':Sequelize[_0x6414('0x2')],'unique':_0x6414('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6414('0x2')]},'timeout':{'type':Sequelize[_0x6414('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x6414('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x5b53=['roundrobin','STRING','INTEGER','ENUM','rrmemory'];(function(_0x2a390b,_0xf49f9b){var _0x5df10a=function(_0x115dbe){while(--_0x115dbe){_0x2a390b['push'](_0x2a390b['shift']());}};_0x5df10a(++_0xf49f9b);}(_0x5b53,0x141));var _0x35b5=function(_0x31c5e9,_0x30e373){_0x31c5e9=_0x31c5e9-0x0;var _0x517a8d=_0x5b53[_0x31c5e9];return _0x517a8d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x35b5('0x0')]},'timeout':{'type':Sequelize[_0x35b5('0x1')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x35b5('0x2')](_0x35b5('0x3'),'beepall',_0x35b5('0x4'))}};
\ No newline at end of file
index 900db4a..fb82cb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc7=['Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','emit','userMailQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','UserProfileResource','destroy','error','name','send','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','MailQueue','includeAll','findAll','rows','catch','show','params','include','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','find','userProfileId','autoAssociation','update','describe','getMembers','findOne','hasOwnProperty','pick','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','getTeams'];(function(_0x14e202,_0x4bcff8){var _0x26f66e=function(_0x5ce60c){while(--_0x5ce60c){_0x14e202['push'](_0x14e202['shift']());}};_0x26f66e(++_0x4bcff8);}(_0x5fc7,0x1e1));var _0x75fc=function(_0x264b9b,_0xa1181e){_0x264b9b=_0x264b9b-0x0;var _0x4c7a0e=_0x5fc7[_0x264b9b];return _0x4c7a0e;};'use strict';var emlformat=require(_0x75fc('0x0'));var rimraf=require(_0x75fc('0x1'));var zipdir=require(_0x75fc('0x2'));var jsonpatch=require(_0x75fc('0x3'));var rp=require(_0x75fc('0x4'));var moment=require(_0x75fc('0x5'));var BPromise=require(_0x75fc('0x6'));var Mustache=require(_0x75fc('0x7'));var util=require(_0x75fc('0x8'));var path=require(_0x75fc('0x9'));var sox=require(_0x75fc('0xa'));var csv=require(_0x75fc('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75fc('0xc'));var _=require(_0x75fc('0xd'));var squel=require(_0x75fc('0xe'));var crypto=require(_0x75fc('0xf'));var jsforce=require(_0x75fc('0x10'));var deskjs=require(_0x75fc('0x11'));var toCsv=require(_0x75fc('0xb'));var querystring=require(_0x75fc('0x12'));var Papa=require(_0x75fc('0x13'));var Redis=require(_0x75fc('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x75fc('0x15'));var as=require(_0x75fc('0x16'));var hardwareService=require(_0x75fc('0x17'));var logger=require(_0x75fc('0x18'))('api');var utils=require(_0x75fc('0x19'));var config=require(_0x75fc('0x1a'));var licenseUtil=require(_0x75fc('0x1b'));var db=require(_0x75fc('0x1c'))['db'];config[_0x75fc('0x1d')]=_[_0x75fc('0x1e')](config[_0x75fc('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x75fc('0x1f'))[_0x75fc('0x20')](socket);function respondWithStatusCode(_0x2e073b,_0x2cb4ed){_0x2cb4ed=_0x2cb4ed||0xcc;return function(_0x2a8725){if(_0x2a8725){return _0x2e073b[_0x75fc('0x21')](_0x2cb4ed);}return _0x2e073b[_0x75fc('0x22')](_0x2cb4ed)[_0x75fc('0x23')]();};}function respondWithResult(_0x53f23d,_0xf3dec8){_0xf3dec8=_0xf3dec8||0xc8;return function(_0x382201){if(_0x382201){return _0x53f23d['status'](_0xf3dec8)[_0x75fc('0x24')](_0x382201);}};}function respondWithFilteredResult(_0x9a1359,_0x5a3311){return function(_0x5cdf1e){if(_0x5cdf1e){var _0x25b52b=typeof _0x5a3311[_0x75fc('0x25')]===_0x75fc('0x26')&&typeof _0x5a3311[_0x75fc('0x27')]===_0x75fc('0x26');var _0x47123f=_0x5cdf1e['count'];var _0x3b7d6c=_0x25b52b?0x0:_0x5a3311['offset'];var _0xb47e2c=_0x25b52b?_0x5cdf1e[_0x75fc('0x28')]:_0x5a3311[_0x75fc('0x25')]+_0x5a3311[_0x75fc('0x27')];var _0x518945;if(_0xb47e2c>=_0x47123f){_0xb47e2c=_0x47123f;_0x518945=0xc8;}else{_0x518945=0xce;}_0x9a1359[_0x75fc('0x22')](_0x518945);return _0x9a1359[_0x75fc('0x29')]('Content-Range',_0x3b7d6c+'-'+_0xb47e2c+'/'+_0x47123f)[_0x75fc('0x24')](_0x5cdf1e);}return null;};}function patchUpdates(_0x3ed9d5){return function(_0x4d5346){try{jsonpatch[_0x75fc('0x2a')](_0x4d5346,_0x3ed9d5,!![]);}catch(_0x5a79e0){return BPromise[_0x75fc('0x2b')](_0x5a79e0);}return _0x4d5346[_0x75fc('0x2c')]();};}function saveUpdates(_0x54b684,_0xd8b8e1){return function(_0x151046){if(_0x151046){return _0x151046['update'](_0x54b684)[_0x75fc('0x2d')](function(_0x2418be){return _0x2418be;});}return null;};}function removeEntity(_0x53fcd2,_0x5774bb){return function(_0x10a59a){if(_0x10a59a){return _0x10a59a['destroy']()[_0x75fc('0x2d')](function(){var _0x4268ed=_0x10a59a['get']({'plain':!![]});var _0x56a7a4='MailQueues';return db[_0x75fc('0x2e')][_0x75fc('0x2f')]({'where':{'type':_0x56a7a4,'resourceId':_0x4268ed['id']}})[_0x75fc('0x2d')](function(){return _0x10a59a;});})[_0x75fc('0x2d')](function(){_0x53fcd2[_0x75fc('0x22')](0xcc)[_0x75fc('0x23')]();});}};}function handleEntityNotFound(_0x337058,_0x54bcd5){return function(_0x23aa27){if(!_0x23aa27){_0x337058[_0x75fc('0x21')](0x194);}return _0x23aa27;};}function handleError(_0x17b0c0,_0x1be47b){_0x1be47b=_0x1be47b||0x1f4;return function(_0x5c8adb){logger[_0x75fc('0x30')](_0x5c8adb['stack']);if(_0x5c8adb[_0x75fc('0x31')]){delete _0x5c8adb[_0x75fc('0x31')];}_0x17b0c0[_0x75fc('0x22')](_0x1be47b)[_0x75fc('0x32')](_0x5c8adb);};}exports['index']=function(_0x26fdf0,_0x4d5981){var _0xaddfc9={},_0x2cdd21={},_0x5e4cdb={'count':0x0,'rows':[]};var _0x1131d5=_[_0x75fc('0x33')](db['MailQueue'][_0x75fc('0x34')],function(_0xdeacca){return{'name':_0xdeacca[_0x75fc('0x35')],'type':_0xdeacca[_0x75fc('0x36')][_0x75fc('0x37')]};});_0x2cdd21[_0x75fc('0x38')]=_[_0x75fc('0x33')](_0x1131d5,_0x75fc('0x31'));_0x2cdd21['query']=_[_0x75fc('0x39')](_0x26fdf0[_0x75fc('0x3a')]);_0x2cdd21[_0x75fc('0x3b')]=_[_0x75fc('0x3c')](_0x2cdd21[_0x75fc('0x38')],_0x2cdd21[_0x75fc('0x3a')]);_0xaddfc9[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x2cdd21[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0xaddfc9[_0x75fc('0x3d')]=_0xaddfc9['attributes'][_0x75fc('0x3f')]?_0xaddfc9[_0x75fc('0x3d')]:_0x2cdd21[_0x75fc('0x38')];if(!_0x26fdf0[_0x75fc('0x3a')]['hasOwnProperty'](_0x75fc('0x40'))){_0xaddfc9[_0x75fc('0x27')]=qs[_0x75fc('0x27')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x27')]);_0xaddfc9[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x26fdf0[_0x75fc('0x3a')]['offset']);}_0xaddfc9[_0x75fc('0x41')]=qs[_0x75fc('0x42')](_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x42')]);_0xaddfc9[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_['pick'](_0x26fdf0[_0x75fc('0x3a')],_0x2cdd21[_0x75fc('0x3b')]),_0x1131d5);if(_0x26fdf0['query'][_0x75fc('0x44')]){_0xaddfc9[_0x75fc('0x43')]=_[_0x75fc('0x45')](_0xaddfc9[_0x75fc('0x43')],{'$or':_[_0x75fc('0x33')](_0x1131d5,function(_0x5736e8){if(_0x5736e8[_0x75fc('0x36')]!=='VIRTUAL'){var _0x42c3ae={};_0x42c3ae[_0x5736e8[_0x75fc('0x31')]]={'$like':'%'+_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x42c3ae;}})});}_0xaddfc9=_[_0x75fc('0x45')]({},_0xaddfc9,_0x26fdf0[_0x75fc('0x46')]);var _0x23df91={'where':_0xaddfc9[_0x75fc('0x43')]};return db[_0x75fc('0x47')]['count'](_0x23df91)[_0x75fc('0x2d')](function(_0x3e8ec6){_0x5e4cdb[_0x75fc('0x28')]=_0x3e8ec6;if(_0x26fdf0[_0x75fc('0x3a')][_0x75fc('0x48')]){_0xaddfc9['include']=[{'all':!![]}];}return db[_0x75fc('0x47')][_0x75fc('0x49')](_0xaddfc9);})[_0x75fc('0x2d')](function(_0x58a94e){_0x5e4cdb[_0x75fc('0x4a')]=_0x58a94e;return _0x5e4cdb;})[_0x75fc('0x2d')](respondWithFilteredResult(_0x4d5981,_0xaddfc9))[_0x75fc('0x4b')](handleError(_0x4d5981,null));};exports[_0x75fc('0x4c')]=function(_0x387f33,_0x2fcd4b){var _0x3a2f92={'raw':!![],'where':{'id':_0x387f33[_0x75fc('0x4d')]['id']}},_0x592211={};_0x592211[_0x75fc('0x38')]=_['keys'](db[_0x75fc('0x47')][_0x75fc('0x34')]);_0x592211[_0x75fc('0x3a')]=_['keys'](_0x387f33[_0x75fc('0x3a')]);_0x592211['filters']=_['intersection'](_0x592211['model'],_0x592211[_0x75fc('0x3a')]);_0x3a2f92[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x592211['model'],qs[_0x75fc('0x3e')](_0x387f33['query'][_0x75fc('0x3e')]));_0x3a2f92[_0x75fc('0x3d')]=_0x3a2f92[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x3a2f92['attributes']:_0x592211[_0x75fc('0x38')];if(_0x387f33[_0x75fc('0x3a')][_0x75fc('0x48')]){_0x3a2f92[_0x75fc('0x4e')]=[{'all':!![]}];}_0x3a2f92=_[_0x75fc('0x45')]({},_0x3a2f92,_0x387f33[_0x75fc('0x46')]);return db[_0x75fc('0x47')]['find'](_0x3a2f92)[_0x75fc('0x2d')](handleEntityNotFound(_0x2fcd4b,null))['then'](respondWithResult(_0x2fcd4b,null))[_0x75fc('0x4b')](handleError(_0x2fcd4b,null));};exports[_0x75fc('0x4f')]=function(_0x1da347,_0x2bff37){return db[_0x75fc('0x47')][_0x75fc('0x4f')](_0x1da347[_0x75fc('0x50')],{})[_0x75fc('0x2d')](function(_0x11eade){var _0x55af83=_0x1da347[_0x75fc('0x51')][_0x75fc('0x52')]({'plain':!![]});if(!_0x55af83)throw new Error(_0x75fc('0x53'));if(_0x55af83[_0x75fc('0x54')]==='user'){var _0x4c4082=_0x11eade[_0x75fc('0x52')]({'plain':!![]});var _0x491e7c=_0x75fc('0x55');return db[_0x75fc('0x56')][_0x75fc('0x57')]({'where':{'name':_0x491e7c,'userProfileId':_0x55af83[_0x75fc('0x58')]},'raw':!![]})[_0x75fc('0x2d')](function(_0xee6e51){if(_0xee6e51&&_0xee6e51[_0x75fc('0x59')]===0x0){return db[_0x75fc('0x2e')][_0x75fc('0x4f')]({'name':_0x4c4082[_0x75fc('0x31')],'resourceId':_0x4c4082['id'],'type':_0xee6e51['name'],'sectionId':_0xee6e51['id']},{})[_0x75fc('0x2d')](function(){return _0x11eade;});}else{return _0x11eade;}})[_0x75fc('0x4b')](function(_0x1518bf){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1518bf);throw _0x1518bf;});}return _0x11eade;})[_0x75fc('0x2d')](respondWithResult(_0x2bff37,0xc9))[_0x75fc('0x4b')](handleError(_0x2bff37,null));};exports[_0x75fc('0x5a')]=function(_0x7e65e1,_0x4f6d63){if(_0x7e65e1[_0x75fc('0x50')]['id']){delete _0x7e65e1[_0x75fc('0x50')]['id'];}return db['MailQueue'][_0x75fc('0x57')]({'where':{'id':_0x7e65e1['params']['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x4f6d63,null))[_0x75fc('0x2d')](saveUpdates(_0x7e65e1[_0x75fc('0x50')],null))['then'](respondWithResult(_0x4f6d63,null))[_0x75fc('0x4b')](handleError(_0x4f6d63,null));};exports[_0x75fc('0x2f')]=function(_0x3c5e96,_0x3c01c0){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x3c5e96[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x3c01c0,null))[_0x75fc('0x2d')](removeEntity(_0x3c01c0,null))['catch'](handleError(_0x3c01c0,null));};exports['describe']=function(_0x40ce47,_0x5f0717){return db[_0x75fc('0x47')][_0x75fc('0x5b')]()['then'](respondWithResult(_0x5f0717,null))[_0x75fc('0x4b')](handleError(_0x5f0717,null));};exports[_0x75fc('0x5c')]=function(_0x5b749b,_0x10fcb3,_0x3217f4){var _0x441e02={'raw':!![],'where':{}},_0x4f1ace={},_0x2eb4a7;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x5b749b[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x10fcb3,null))[_0x75fc('0x2d')](function(_0x4709ca){if(_0x4709ca){_0x2eb4a7=_0x4709ca['get']({'plain':!![]});_0x4f1ace[_0x75fc('0x38')]=_['keys'](db['UserMailQueue']['rawAttributes']);_0x4f1ace[_0x75fc('0x3a')]=_[_0x75fc('0x39')](_0x5b749b[_0x75fc('0x3a')]);_0x4f1ace[_0x75fc('0x3b')]=_['intersection'](_0x4f1ace[_0x75fc('0x38')],_0x4f1ace[_0x75fc('0x3a')]);_0x441e02['attributes']=_[_0x75fc('0x3c')](_0x4f1ace[_0x75fc('0x38')],qs['fields'](_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0x441e02[_0x75fc('0x3d')]=_0x441e02[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x441e02[_0x75fc('0x3d')]:_0x4f1ace[_0x75fc('0x38')];if(!_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x5e')](_0x75fc('0x40'))){_0x441e02['limit']=qs[_0x75fc('0x27')](_0x5b749b[_0x75fc('0x3a')][_0x75fc('0x27')]);_0x441e02[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x5b749b['query'][_0x75fc('0x25')]);}_0x441e02[_0x75fc('0x41')]=qs['sort'](_0x5b749b['query']['sort']);_0x441e02[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_[_0x75fc('0x5f')](_0x5b749b[_0x75fc('0x3a')],_0x4f1ace[_0x75fc('0x3b')]));_0x441e02[_0x75fc('0x43')]['MailQueueId']=_0x4709ca['id'];if(_0x5b749b['query'][_0x75fc('0x44')]){_0x441e02[_0x75fc('0x43')]=_['merge'](_0x441e02['where'],{'$or':_[_0x75fc('0x33')](_0x441e02[_0x75fc('0x3d')],function(_0x32f71b){var _0x12f4a9={};_0x12f4a9[_0x32f71b]={'$like':'%'+_0x5b749b['query']['filter']+'%'};return _0x12f4a9;})});}_0x441e02=_[_0x75fc('0x45')]({},_0x441e02,_0x5b749b['options']);return db[_0x75fc('0x60')][_0x75fc('0x49')](_0x441e02);}})[_0x75fc('0x2d')](function(_0x4274a3){if(_0x4274a3){return db[_0x75fc('0x61')][_0x75fc('0x62')]({'where':{'id':_[_0x75fc('0x33')](_0x4274a3,_0x75fc('0x63')),'role':_0x75fc('0x64')},'attributes':['id','name',_0x75fc('0x65'),_0x75fc('0x66'),_0x75fc('0x67')]});}})[_0x75fc('0x2d')](function(_0x3d8f1f){if(_0x3d8f1f){return{'count':_0x3d8f1f['count'],'rows':_[_0x75fc('0x33')](_0x3d8f1f['rows'],function(_0x41c38c){return{'membername':_0x41c38c[_0x75fc('0x31')],'UserId':_0x41c38c['id'],'queue_name':_0x2eb4a7[_0x75fc('0x31')],'MailQueueId':_0x2eb4a7['id'],'interface':util[_0x75fc('0x68')](_0x75fc('0x69'),'SIP',_0x41c38c[_0x75fc('0x31')]),'penalty':0x0,'paused':_0x41c38c[_0x75fc('0x65')],'createdAt':_0x41c38c[_0x75fc('0x67')],'updatedAt':_0x41c38c[_0x75fc('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x75fc('0x2d')](respondWithFilteredResult(_0x10fcb3,_0x441e02))['catch'](handleError(_0x10fcb3,null));};exports[_0x75fc('0x6a')]=function(_0x16d3b3,_0x3a3100,_0x1514ab){var _0x29b8f7={};var _0x1b24ee={};var _0x53f918;var _0x5e8ddf;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x16d3b3[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x3a3100,null))[_0x75fc('0x2d')](function(_0x1a2594){if(_0x1a2594){_0x53f918=_0x1a2594;_0x1b24ee[_0x75fc('0x38')]=_[_0x75fc('0x39')](db[_0x75fc('0x6b')]['rawAttributes']);_0x1b24ee[_0x75fc('0x3a')]=_[_0x75fc('0x39')](_0x16d3b3[_0x75fc('0x3a')]);_0x1b24ee['filters']=_['intersection'](_0x1b24ee[_0x75fc('0x38')],_0x1b24ee[_0x75fc('0x3a')]);_0x29b8f7[_0x75fc('0x3d')]=_[_0x75fc('0x3c')](_0x1b24ee[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x16d3b3['query'][_0x75fc('0x3e')]));_0x29b8f7[_0x75fc('0x3d')]=_0x29b8f7[_0x75fc('0x3d')][_0x75fc('0x3f')]?_0x29b8f7['attributes']:_0x1b24ee[_0x75fc('0x38')];_0x29b8f7[_0x75fc('0x41')]=qs['sort'](_0x16d3b3[_0x75fc('0x3a')][_0x75fc('0x42')]);_0x29b8f7[_0x75fc('0x43')]=qs[_0x75fc('0x3b')](_[_0x75fc('0x5f')](_0x16d3b3[_0x75fc('0x3a')],_0x1b24ee[_0x75fc('0x3b')]));if(_0x16d3b3['query'][_0x75fc('0x44')]){_0x29b8f7['where']=_['merge'](_0x29b8f7[_0x75fc('0x43')],{'$or':_['map'](_0x29b8f7[_0x75fc('0x3d')],function(_0xeac7a1){var _0x4eb52a={};_0x4eb52a[_0xeac7a1]={'$like':'%'+_0x16d3b3[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x4eb52a;})});}_0x29b8f7=_[_0x75fc('0x45')]({},_0x29b8f7,_0x16d3b3['options']);return _0x53f918[_0x75fc('0x6a')](_0x29b8f7);}})[_0x75fc('0x2d')](function(_0x45bb96){if(_0x45bb96){_0x5e8ddf=_0x45bb96[_0x75fc('0x3f')];if(!_0x16d3b3[_0x75fc('0x3a')]['hasOwnProperty']('nolimit')){_0x29b8f7[_0x75fc('0x27')]=qs['limit'](_0x16d3b3[_0x75fc('0x3a')]['limit']);_0x29b8f7[_0x75fc('0x25')]=qs[_0x75fc('0x25')](_0x16d3b3[_0x75fc('0x3a')]['offset']);}return _0x53f918[_0x75fc('0x6a')](_0x29b8f7);}})[_0x75fc('0x2d')](function(_0x2f3ae2){if(_0x2f3ae2){return _0x2f3ae2?{'count':_0x5e8ddf,'rows':_0x2f3ae2}:null;}})[_0x75fc('0x2d')](respondWithResult(_0x3a3100,null))[_0x75fc('0x4b')](handleError(_0x3a3100,null));};exports[_0x75fc('0x6c')]=function(_0x3b07f0,_0x245ae6,_0x147185){var _0x30cb1b=_0x3b07f0[_0x75fc('0x50')][_0x75fc('0x6d')];return db[_0x75fc('0x6b')][_0x75fc('0x49')]({'where':{'id':_0x30cb1b},'attributes':['id'],'include':[{'model':db[_0x75fc('0x61')],'as':_0x75fc('0x6e'),'attributes':['id',_0x75fc('0x31'),'online',_0x75fc('0x6f'),_0x75fc('0x70')],'raw':!![]}]})['then'](function(_0x4e1f1d){if(_0x4e1f1d){var _0x45d640=_[_0x75fc('0x71')](_0x4e1f1d,function(_0x118738){var _0x1267a2=_0x118738[_0x75fc('0x52')]({'plain':!![]});return _0x1267a2[_0x75fc('0x6e')];});return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x3b07f0[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](function(_0x3ce96a){return db[_0x75fc('0x72')][_0x75fc('0x73')](function(_0x5bf55b){return _0x3ce96a[_0x75fc('0x6c')](_0x30cb1b,{'transaction':_0x5bf55b})[_0x75fc('0x2d')](function(){return BPromise[_0x75fc('0x74')](_0x45d640,function(_0x6fcb6e){return db[_0x75fc('0x60')]['findOrCreate']({'where':{'UserId':_0x6fcb6e['id'],'MailQueueId':_0x3b07f0[_0x75fc('0x4d')]['id']},'transaction':_0x5bf55b});});})[_0x75fc('0x2d')](function(){_0x45d640[_0x75fc('0x75')](function(_0x5c5300){socket['emit']('userMailQueue:save',{'UserId':_0x5c5300['id'],'MailQueueId':_0x3ce96a['id']});});});});});}})[_0x75fc('0x2d')](respondWithStatusCode(_0x245ae6,null))[_0x75fc('0x4b')](handleError(_0x245ae6,null));};exports['removeTeams']=function(_0x30ddc4,_0x119c25,_0x1ddd4e){return db[_0x75fc('0x6b')]['findAll']({'where':{'id':_0x30ddc4['query'][_0x75fc('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x75fc('0x61')],'as':_0x75fc('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x75fc('0x2d')](handleEntityNotFound(_0x119c25,null))[_0x75fc('0x2d')](function(_0x42c0cd){var _0x17b17e=_[_0x75fc('0x33')](_0x42c0cd,'id');var _0x211526=[];var _0x52a163=[];var _0x548d89=squel[_0x75fc('0x76')]();_0x548d89[_0x75fc('0x77')](_0x75fc('0x78'))[_0x75fc('0x79')]('team_has_mail_queues','tq')[_0x75fc('0x7a')](_0x75fc('0x7b'),'ut',_0x75fc('0x7c'))[_0x75fc('0x43')](_0x75fc('0x7d'),_0x30ddc4['params']['id']);for(var _0x5e19b5=0x0;_0x5e19b5<_0x42c0cd[_0x75fc('0x3f')];_0x5e19b5+=0x1){let _0x535a89=_0x42c0cd[_0x5e19b5];for(var _0x4db6b4=0x0;_0x4db6b4<_0x535a89[_0x75fc('0x6e')]['length'];_0x4db6b4+=0x1){let _0x462108=_0x535a89[_0x75fc('0x6e')][_0x4db6b4];var _0x486ae3=_0x548d89['clone']();_0x486ae3[_0x75fc('0x43')](_0x75fc('0x7e'),_0x462108['id']);_0x52a163[_0x75fc('0x7f')](db[_0x75fc('0x72')][_0x75fc('0x3a')](_0x486ae3[_0x75fc('0x80')](),{'type':db[_0x75fc('0x72')][_0x75fc('0x81')][_0x75fc('0x82')]})['then'](function(_0x1b3588){if(_0x1b3588[_0x75fc('0x3f')]===0x1){return _0x462108['id'];}else{var _0x252401=_[_0x75fc('0x83')](_['map'](_0x1b3588,'TeamId'),function(_0x43b1c3){return _[_0x75fc('0x84')](_0x17b17e,_0x43b1c3);});if(_0x252401){return _0x462108['id'];}}}));}}return BPromise[_0x75fc('0x85')](_0x52a163)[_0x75fc('0x2d')](function(_0x5a339f){_0x211526=_(_0x211526)[_0x75fc('0x86')](_0x5a339f)[_0x75fc('0x87')]()[_0x75fc('0x88')]();return db['MailQueue'][_0x75fc('0x57')]({'where':{'id':_0x30ddc4[_0x75fc('0x4d')]['id']}})['then'](function(_0x31b0da){return db[_0x75fc('0x72')]['transaction'](function(_0x3518d1){return _0x31b0da[_0x75fc('0x89')](_0x30ddc4[_0x75fc('0x3a')][_0x75fc('0x6d')],{'transaction':_0x3518d1})['then'](function(){if(!_[_0x75fc('0x8a')](_0x211526)){return _0x31b0da[_0x75fc('0x8b')](_0x211526,{'transaction':_0x3518d1});}})[_0x75fc('0x2d')](function(){_0x211526[_0x75fc('0x75')](function(_0x494e88){socket['emit'](_0x75fc('0x8c'),{'UserId':_0x494e88,'MailQueueId':_0x31b0da['id']});});});});});});})[_0x75fc('0x2d')](respondWithStatusCode(_0x119c25,null))['catch'](handleError(_0x119c25,null));};exports[_0x75fc('0x8d')]=function(_0x2efc42,_0xe66511,_0x412e84){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x2efc42['params']['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0xe66511,null))[_0x75fc('0x2d')](function(_0xa5a5d1){if(_0xa5a5d1){return _0xa5a5d1[_0x75fc('0x8d')](_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')],_[_0x75fc('0x8e')](_0x2efc42[_0x75fc('0x50')],['ids','id'])||{})['spread'](function(_0x12fca5){for(var _0x50723c=0x0;_0x50723c<_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')][_0x75fc('0x3f')];_0x50723c+=0x1){socket[_0x75fc('0x8f')](_0x75fc('0x90'),{'UserId':Number(_0x2efc42[_0x75fc('0x50')][_0x75fc('0x6d')][_0x50723c]),'MailQueueId':Number(_0x2efc42[_0x75fc('0x4d')]['id'])});}return _0x12fca5;});}})[_0x75fc('0x2d')](respondWithResult(_0xe66511,null))[_0x75fc('0x4b')](handleError(_0xe66511,null));};exports[_0x75fc('0x8b')]=function(_0x1a4a8f,_0x259edc,_0x22cf7b){return db[_0x75fc('0x47')][_0x75fc('0x57')]({'where':{'id':_0x1a4a8f[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x259edc,null))['then'](function(_0x1aa16a){if(_0x1aa16a){return _0x1aa16a[_0x75fc('0x8b')](_0x1a4a8f['query'][_0x75fc('0x6d')])[_0x75fc('0x2d')](function(){if(_[_0x75fc('0x91')](_0x1a4a8f['query']['ids'])){for(var _0x4f7dc2=0x0;_0x4f7dc2<_0x1a4a8f[_0x75fc('0x3a')]['ids'][_0x75fc('0x3f')];_0x4f7dc2+=0x1){socket[_0x75fc('0x8f')](_0x75fc('0x8c'),{'UserId':Number(_0x1a4a8f[_0x75fc('0x3a')]['ids'][_0x4f7dc2]),'MailQueueId':Number(_0x1a4a8f['params']['id'])});}}else{socket['emit'](_0x75fc('0x8c'),{'UserId':Number(_0x1a4a8f[_0x75fc('0x3a')]['ids']),'MailQueueId':Number(_0x1a4a8f[_0x75fc('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x259edc,null))[_0x75fc('0x4b')](handleError(_0x259edc,null));};exports[_0x75fc('0x92')]=function(_0x2ed08e,_0x5401e0,_0x354f4b){var _0x2ebae2={};var _0x26925a={};var _0x3a4657;var _0x5e227c;return db[_0x75fc('0x47')][_0x75fc('0x5d')]({'where':{'id':_0x2ed08e[_0x75fc('0x4d')]['id']}})[_0x75fc('0x2d')](handleEntityNotFound(_0x5401e0,null))[_0x75fc('0x2d')](function(_0x2cb73a){if(_0x2cb73a){_0x3a4657=_0x2cb73a;_0x26925a['model']=_[_0x75fc('0x39')](db['User'][_0x75fc('0x34')]);_0x26925a['query']=_[_0x75fc('0x39')](_0x2ed08e[_0x75fc('0x3a')]);_0x26925a[_0x75fc('0x3b')]=_[_0x75fc('0x3c')](_0x26925a['model'],_0x26925a['query']);_0x2ebae2['attributes']=_[_0x75fc('0x3c')](_0x26925a[_0x75fc('0x38')],qs[_0x75fc('0x3e')](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x3e')]));_0x2ebae2[_0x75fc('0x3d')]=_0x2ebae2[_0x75fc('0x3d')]['length']?_0x2ebae2['attributes']:_0x26925a['model'];_0x2ebae2[_0x75fc('0x41')]=qs['sort'](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x42')]);_0x2ebae2[_0x75fc('0x43')]=qs['filters'](_['pick'](_0x2ed08e['query'],_0x26925a[_0x75fc('0x3b')]));if(_0x2ed08e[_0x75fc('0x3a')]['filter']){_0x2ebae2[_0x75fc('0x43')]=_[_0x75fc('0x45')](_0x2ebae2[_0x75fc('0x43')],{'$or':_['map'](_0x2ebae2[_0x75fc('0x3d')],function(_0x46c8f5){var _0x17f2c9={};_0x17f2c9[_0x46c8f5]={'$like':'%'+_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x44')]+'%'};return _0x17f2c9;})});}_0x2ebae2=_[_0x75fc('0x45')]({},_0x2ebae2,_0x2ed08e[_0x75fc('0x46')]);return _0x3a4657[_0x75fc('0x92')](_0x2ebae2);}})[_0x75fc('0x2d')](function(_0x10cd7e){if(_0x10cd7e){_0x5e227c=_0x10cd7e['length'];if(!_0x2ed08e['query'][_0x75fc('0x5e')]('nolimit')){_0x2ebae2[_0x75fc('0x27')]=qs['limit'](_0x2ed08e[_0x75fc('0x3a')]['limit']);_0x2ebae2['offset']=qs[_0x75fc('0x25')](_0x2ed08e[_0x75fc('0x3a')][_0x75fc('0x25')]);}return _0x3a4657[_0x75fc('0x92')](_0x2ebae2);}})[_0x75fc('0x2d')](function(_0x440d76){if(_0x440d76){return _0x440d76?{'count':_0x5e227c,'rows':_0x440d76}:null;}})[_0x75fc('0x2d')](respondWithResult(_0x5401e0,null))[_0x75fc('0x4b')](handleError(_0x5401e0,null));};
\ No newline at end of file
+var _0x5d87=['order','sort','where','filters','pick','filter','merge','options','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','hasOwnProperty','MailQueueId','UserMailQueue','User','findAndCountAll','UserId','mailPause','updatedAt','SIP','createdAt','Team','getTeams','addTeams','ids','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','removeTeams','Agents','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','isEmpty','userMailQueue:remove','addAgents','spread','userMailQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./mailQueue.socket','register','undefined','count','offset','limit','status','apply','save','update','destroy','get','UserProfileResource','then','sendStatus','error','stack','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','length','nolimit'];(function(_0x232cf2,_0x4ffb79){var _0x463cec=function(_0x581b60){while(--_0x581b60){_0x232cf2['push'](_0x232cf2['shift']());}};_0x463cec(++_0x4ffb79);}(_0x5d87,0xdc));var _0x75d8=function(_0x1aa65f,_0x3d65e5){_0x1aa65f=_0x1aa65f-0x0;var _0x4410f4=_0x5d87[_0x1aa65f];return _0x4410f4;};'use strict';var emlformat=require(_0x75d8('0x0'));var rimraf=require(_0x75d8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x75d8('0x2'));var rp=require(_0x75d8('0x3'));var moment=require(_0x75d8('0x4'));var BPromise=require(_0x75d8('0x5'));var Mustache=require(_0x75d8('0x6'));var util=require(_0x75d8('0x7'));var path=require(_0x75d8('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x75d8('0x9'));var fs=require('fs');var fs_extra=require(_0x75d8('0xa'));var _=require(_0x75d8('0xb'));var squel=require('squel');var crypto=require(_0x75d8('0xc'));var jsforce=require(_0x75d8('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x75d8('0xe'));var querystring=require('querystring');var Papa=require(_0x75d8('0xf'));var Redis=require(_0x75d8('0x10'));var authService=require(_0x75d8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x75d8('0x12'));var hardwareService=require(_0x75d8('0x13'));var logger=require(_0x75d8('0x14'))(_0x75d8('0x15'));var utils=require(_0x75d8('0x16'));var config=require(_0x75d8('0x17'));var licenseUtil=require(_0x75d8('0x18'));var db=require('../../mysqldb')['db'];config[_0x75d8('0x19')]=_[_0x75d8('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x75d8('0x1b'))(new Redis(config[_0x75d8('0x19')]));require(_0x75d8('0x1c'))[_0x75d8('0x1d')](socket);function respondWithStatusCode(_0x46f302,_0x5e4892){_0x5e4892=_0x5e4892||0xcc;return function(_0x310603){if(_0x310603){return _0x46f302['sendStatus'](_0x5e4892);}return _0x46f302['status'](_0x5e4892)['end']();};}function respondWithResult(_0x2f1532,_0x1efb52){_0x1efb52=_0x1efb52||0xc8;return function(_0x3270db){if(_0x3270db){return _0x2f1532['status'](_0x1efb52)['json'](_0x3270db);}};}function respondWithFilteredResult(_0x36c31f,_0x1223c3){return function(_0x4f1e9a){if(_0x4f1e9a){var _0x1ecafb=typeof _0x1223c3['offset']===_0x75d8('0x1e')&&typeof _0x1223c3['limit']===_0x75d8('0x1e');var _0x29de3d=_0x4f1e9a[_0x75d8('0x1f')];var _0x4e1b11=_0x1ecafb?0x0:_0x1223c3[_0x75d8('0x20')];var _0x459f0f=_0x1ecafb?_0x4f1e9a[_0x75d8('0x1f')]:_0x1223c3['offset']+_0x1223c3[_0x75d8('0x21')];var _0x2d257f;if(_0x459f0f>=_0x29de3d){_0x459f0f=_0x29de3d;_0x2d257f=0xc8;}else{_0x2d257f=0xce;}_0x36c31f[_0x75d8('0x22')](_0x2d257f);return _0x36c31f['set']('Content-Range',_0x4e1b11+'-'+_0x459f0f+'/'+_0x29de3d)['json'](_0x4f1e9a);}return null;};}function patchUpdates(_0x48a00a){return function(_0x52b740){try{jsonpatch[_0x75d8('0x23')](_0x52b740,_0x48a00a,!![]);}catch(_0x55a852){return BPromise['reject'](_0x55a852);}return _0x52b740[_0x75d8('0x24')]();};}function saveUpdates(_0x201ef4,_0x52d681){return function(_0x3272cb){if(_0x3272cb){return _0x3272cb[_0x75d8('0x25')](_0x201ef4)['then'](function(_0x114b49){return _0x114b49;});}return null;};}function removeEntity(_0x196cc1,_0x2f8c13){return function(_0x4836a9){if(_0x4836a9){return _0x4836a9[_0x75d8('0x26')]()['then'](function(){var _0x223da7=_0x4836a9[_0x75d8('0x27')]({'plain':!![]});var _0x1e1841='MailQueues';return db[_0x75d8('0x28')][_0x75d8('0x26')]({'where':{'type':_0x1e1841,'resourceId':_0x223da7['id']}})['then'](function(){return _0x4836a9;});})[_0x75d8('0x29')](function(){_0x196cc1[_0x75d8('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38a3ff,_0x4c7fd6){return function(_0x1c403f){if(!_0x1c403f){_0x38a3ff[_0x75d8('0x2a')](0x194);}return _0x1c403f;};}function handleError(_0x413245,_0x5ebabe){_0x5ebabe=_0x5ebabe||0x1f4;return function(_0x50e897){logger[_0x75d8('0x2b')](_0x50e897[_0x75d8('0x2c')]);if(_0x50e897['name']){delete _0x50e897['name'];}_0x413245[_0x75d8('0x22')](_0x5ebabe)[_0x75d8('0x2d')](_0x50e897);};}exports[_0x75d8('0x2e')]=function(_0xebb56d,_0x1a7589){var _0x400117={},_0x156566={},_0x2a0124={'count':0x0,'rows':[]};var _0x1aca8c=_[_0x75d8('0x2f')](db[_0x75d8('0x30')][_0x75d8('0x31')],function(_0xb69adf){return{'name':_0xb69adf[_0x75d8('0x32')],'type':_0xb69adf[_0x75d8('0x33')][_0x75d8('0x34')]};});_0x156566[_0x75d8('0x35')]=_[_0x75d8('0x2f')](_0x1aca8c,_0x75d8('0x36'));_0x156566[_0x75d8('0x37')]=_[_0x75d8('0x38')](_0xebb56d[_0x75d8('0x37')]);_0x156566['filters']=_[_0x75d8('0x39')](_0x156566['model'],_0x156566[_0x75d8('0x37')]);_0x400117[_0x75d8('0x3a')]=_[_0x75d8('0x39')](_0x156566[_0x75d8('0x35')],qs[_0x75d8('0x3b')](_0xebb56d[_0x75d8('0x37')][_0x75d8('0x3b')]));_0x400117[_0x75d8('0x3a')]=_0x400117[_0x75d8('0x3a')][_0x75d8('0x3c')]?_0x400117[_0x75d8('0x3a')]:_0x156566[_0x75d8('0x35')];if(!_0xebb56d[_0x75d8('0x37')]['hasOwnProperty'](_0x75d8('0x3d'))){_0x400117[_0x75d8('0x21')]=qs['limit'](_0xebb56d[_0x75d8('0x37')][_0x75d8('0x21')]);_0x400117[_0x75d8('0x20')]=qs[_0x75d8('0x20')](_0xebb56d[_0x75d8('0x37')]['offset']);}_0x400117[_0x75d8('0x3e')]=qs[_0x75d8('0x3f')](_0xebb56d[_0x75d8('0x37')][_0x75d8('0x3f')]);_0x400117[_0x75d8('0x40')]=qs[_0x75d8('0x41')](_[_0x75d8('0x42')](_0xebb56d[_0x75d8('0x37')],_0x156566[_0x75d8('0x41')]),_0x1aca8c);if(_0xebb56d['query'][_0x75d8('0x43')]){_0x400117[_0x75d8('0x40')]=_[_0x75d8('0x44')](_0x400117[_0x75d8('0x40')],{'$or':_[_0x75d8('0x2f')](_0x1aca8c,function(_0x47c510){if(_0x47c510[_0x75d8('0x33')]!=='VIRTUAL'){var _0x39d382={};_0x39d382[_0x47c510['name']]={'$like':'%'+_0xebb56d[_0x75d8('0x37')][_0x75d8('0x43')]+'%'};return _0x39d382;}})});}_0x400117=_[_0x75d8('0x44')]({},_0x400117,_0xebb56d[_0x75d8('0x45')]);var _0x1150ce={'where':_0x400117['where']};return db[_0x75d8('0x30')][_0x75d8('0x1f')](_0x1150ce)[_0x75d8('0x29')](function(_0x208d38){_0x2a0124['count']=_0x208d38;if(_0xebb56d['query']['includeAll']){_0x400117[_0x75d8('0x46')]=[{'all':!![]}];}return db[_0x75d8('0x30')][_0x75d8('0x47')](_0x400117);})[_0x75d8('0x29')](function(_0x2c17c8){_0x2a0124[_0x75d8('0x48')]=_0x2c17c8;return _0x2a0124;})['then'](respondWithFilteredResult(_0x1a7589,_0x400117))[_0x75d8('0x49')](handleError(_0x1a7589,null));};exports[_0x75d8('0x4a')]=function(_0x2ad475,_0x440f9e){var _0x115b7a={'raw':!![],'where':{'id':_0x2ad475[_0x75d8('0x4b')]['id']}},_0x3f4986={};_0x3f4986[_0x75d8('0x35')]=_[_0x75d8('0x38')](db[_0x75d8('0x30')][_0x75d8('0x31')]);_0x3f4986[_0x75d8('0x37')]=_[_0x75d8('0x38')](_0x2ad475[_0x75d8('0x37')]);_0x3f4986[_0x75d8('0x41')]=_[_0x75d8('0x39')](_0x3f4986['model'],_0x3f4986[_0x75d8('0x37')]);_0x115b7a[_0x75d8('0x3a')]=_['intersection'](_0x3f4986[_0x75d8('0x35')],qs[_0x75d8('0x3b')](_0x2ad475[_0x75d8('0x37')]['fields']));_0x115b7a[_0x75d8('0x3a')]=_0x115b7a[_0x75d8('0x3a')][_0x75d8('0x3c')]?_0x115b7a['attributes']:_0x3f4986['model'];if(_0x2ad475[_0x75d8('0x37')]['includeAll']){_0x115b7a['include']=[{'all':!![]}];}_0x115b7a=_[_0x75d8('0x44')]({},_0x115b7a,_0x2ad475[_0x75d8('0x45')]);return db[_0x75d8('0x30')][_0x75d8('0x4c')](_0x115b7a)[_0x75d8('0x29')](handleEntityNotFound(_0x440f9e,null))[_0x75d8('0x29')](respondWithResult(_0x440f9e,null))[_0x75d8('0x49')](handleError(_0x440f9e,null));};exports[_0x75d8('0x4d')]=function(_0x24d12e,_0x40e97f){return db[_0x75d8('0x30')][_0x75d8('0x4d')](_0x24d12e[_0x75d8('0x4e')],{})[_0x75d8('0x29')](function(_0x536e42){var _0xc2aef=_0x24d12e[_0x75d8('0x4f')][_0x75d8('0x27')]({'plain':!![]});if(!_0xc2aef)throw new Error(_0x75d8('0x50'));if(_0xc2aef[_0x75d8('0x51')]===_0x75d8('0x4f')){var _0x31b557=_0x536e42[_0x75d8('0x27')]({'plain':!![]});var _0x215624='MailQueues';return db['UserProfileSection'][_0x75d8('0x4c')]({'where':{'name':_0x215624,'userProfileId':_0xc2aef['userProfileId']},'raw':!![]})[_0x75d8('0x29')](function(_0x530d78){if(_0x530d78&&_0x530d78[_0x75d8('0x52')]===0x0){return db['UserProfileResource'][_0x75d8('0x4d')]({'name':_0x31b557[_0x75d8('0x36')],'resourceId':_0x31b557['id'],'type':_0x530d78[_0x75d8('0x36')],'sectionId':_0x530d78['id']},{})[_0x75d8('0x29')](function(){return _0x536e42;});}else{return _0x536e42;}})['catch'](function(_0x312d6d){logger['error'](_0x75d8('0x53'),_0x312d6d);throw _0x312d6d;});}return _0x536e42;})[_0x75d8('0x29')](respondWithResult(_0x40e97f,0xc9))['catch'](handleError(_0x40e97f,null));};exports['update']=function(_0x5907ce,_0x2fabe6){if(_0x5907ce[_0x75d8('0x4e')]['id']){delete _0x5907ce[_0x75d8('0x4e')]['id'];}return db[_0x75d8('0x30')][_0x75d8('0x4c')]({'where':{'id':_0x5907ce[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x2fabe6,null))[_0x75d8('0x29')](saveUpdates(_0x5907ce[_0x75d8('0x4e')],null))[_0x75d8('0x29')](respondWithResult(_0x2fabe6,null))[_0x75d8('0x49')](handleError(_0x2fabe6,null));};exports[_0x75d8('0x26')]=function(_0x14fdd9,_0x19e4fb){return db[_0x75d8('0x30')]['find']({'where':{'id':_0x14fdd9[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x19e4fb,null))[_0x75d8('0x29')](removeEntity(_0x19e4fb,null))[_0x75d8('0x49')](handleError(_0x19e4fb,null));};exports['describe']=function(_0x35aa9e,_0x2d1e68){return db[_0x75d8('0x30')][_0x75d8('0x54')]()[_0x75d8('0x29')](respondWithResult(_0x2d1e68,null))[_0x75d8('0x49')](handleError(_0x2d1e68,null));};exports[_0x75d8('0x55')]=function(_0x3e9ca7,_0x46c7dc,_0x32f01d){var _0x1ac168={'raw':!![],'where':{}},_0x2a14e3={},_0x3dfb55;return db[_0x75d8('0x30')][_0x75d8('0x56')]({'where':{'id':_0x3e9ca7[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x46c7dc,null))[_0x75d8('0x29')](function(_0x625e29){if(_0x625e29){_0x3dfb55=_0x625e29[_0x75d8('0x27')]({'plain':!![]});_0x2a14e3['model']=_['keys'](db['UserMailQueue'][_0x75d8('0x31')]);_0x2a14e3[_0x75d8('0x37')]=_[_0x75d8('0x38')](_0x3e9ca7[_0x75d8('0x37')]);_0x2a14e3[_0x75d8('0x41')]=_['intersection'](_0x2a14e3[_0x75d8('0x35')],_0x2a14e3[_0x75d8('0x37')]);_0x1ac168[_0x75d8('0x3a')]=_[_0x75d8('0x39')](_0x2a14e3[_0x75d8('0x35')],qs[_0x75d8('0x3b')](_0x3e9ca7[_0x75d8('0x37')][_0x75d8('0x3b')]));_0x1ac168[_0x75d8('0x3a')]=_0x1ac168[_0x75d8('0x3a')][_0x75d8('0x3c')]?_0x1ac168[_0x75d8('0x3a')]:_0x2a14e3[_0x75d8('0x35')];if(!_0x3e9ca7[_0x75d8('0x37')][_0x75d8('0x57')](_0x75d8('0x3d'))){_0x1ac168[_0x75d8('0x21')]=qs['limit'](_0x3e9ca7['query'][_0x75d8('0x21')]);_0x1ac168['offset']=qs['offset'](_0x3e9ca7[_0x75d8('0x37')]['offset']);}_0x1ac168[_0x75d8('0x3e')]=qs[_0x75d8('0x3f')](_0x3e9ca7[_0x75d8('0x37')]['sort']);_0x1ac168['where']=qs[_0x75d8('0x41')](_[_0x75d8('0x42')](_0x3e9ca7['query'],_0x2a14e3[_0x75d8('0x41')]));_0x1ac168['where'][_0x75d8('0x58')]=_0x625e29['id'];if(_0x3e9ca7[_0x75d8('0x37')][_0x75d8('0x43')]){_0x1ac168[_0x75d8('0x40')]=_[_0x75d8('0x44')](_0x1ac168[_0x75d8('0x40')],{'$or':_[_0x75d8('0x2f')](_0x1ac168[_0x75d8('0x3a')],function(_0x4e1a3d){var _0x577db6={};_0x577db6[_0x4e1a3d]={'$like':'%'+_0x3e9ca7['query'][_0x75d8('0x43')]+'%'};return _0x577db6;})});}_0x1ac168=_[_0x75d8('0x44')]({},_0x1ac168,_0x3e9ca7[_0x75d8('0x45')]);return db[_0x75d8('0x59')][_0x75d8('0x47')](_0x1ac168);}})[_0x75d8('0x29')](function(_0x2dac86){if(_0x2dac86){return db[_0x75d8('0x5a')][_0x75d8('0x5b')]({'where':{'id':_[_0x75d8('0x2f')](_0x2dac86,_0x75d8('0x5c')),'role':'agent'},'attributes':['id',_0x75d8('0x36'),_0x75d8('0x5d'),_0x75d8('0x5e'),'createdAt']});}})['then'](function(_0x114983){if(_0x114983){return{'count':_0x114983[_0x75d8('0x1f')],'rows':_[_0x75d8('0x2f')](_0x114983[_0x75d8('0x48')],function(_0x1dd782){return{'membername':_0x1dd782[_0x75d8('0x36')],'UserId':_0x1dd782['id'],'queue_name':_0x3dfb55[_0x75d8('0x36')],'MailQueueId':_0x3dfb55['id'],'interface':util['format']('%s/%s',_0x75d8('0x5f'),_0x1dd782['name']),'penalty':0x0,'paused':_0x1dd782[_0x75d8('0x5d')],'createdAt':_0x1dd782[_0x75d8('0x60')],'updatedAt':_0x1dd782[_0x75d8('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x46c7dc,_0x1ac168))[_0x75d8('0x49')](handleError(_0x46c7dc,null));};exports['getTeams']=function(_0x3bd0cd,_0xe5c035,_0x3e3f84){var _0x448c22={};var _0x3a3da1={};var _0x51f5ef;var _0x4bd65f;return db['MailQueue'][_0x75d8('0x56')]({'where':{'id':_0x3bd0cd[_0x75d8('0x4b')]['id']}})['then'](handleEntityNotFound(_0xe5c035,null))[_0x75d8('0x29')](function(_0x40b4b4){if(_0x40b4b4){_0x51f5ef=_0x40b4b4;_0x3a3da1['model']=_[_0x75d8('0x38')](db[_0x75d8('0x61')][_0x75d8('0x31')]);_0x3a3da1[_0x75d8('0x37')]=_[_0x75d8('0x38')](_0x3bd0cd[_0x75d8('0x37')]);_0x3a3da1[_0x75d8('0x41')]=_[_0x75d8('0x39')](_0x3a3da1[_0x75d8('0x35')],_0x3a3da1[_0x75d8('0x37')]);_0x448c22[_0x75d8('0x3a')]=_['intersection'](_0x3a3da1['model'],qs[_0x75d8('0x3b')](_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x3b')]));_0x448c22[_0x75d8('0x3a')]=_0x448c22[_0x75d8('0x3a')][_0x75d8('0x3c')]?_0x448c22[_0x75d8('0x3a')]:_0x3a3da1[_0x75d8('0x35')];_0x448c22[_0x75d8('0x3e')]=qs[_0x75d8('0x3f')](_0x3bd0cd['query'][_0x75d8('0x3f')]);_0x448c22['where']=qs[_0x75d8('0x41')](_['pick'](_0x3bd0cd[_0x75d8('0x37')],_0x3a3da1['filters']));if(_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x43')]){_0x448c22[_0x75d8('0x40')]=_[_0x75d8('0x44')](_0x448c22[_0x75d8('0x40')],{'$or':_[_0x75d8('0x2f')](_0x448c22[_0x75d8('0x3a')],function(_0x26cb4d){var _0x12371d={};_0x12371d[_0x26cb4d]={'$like':'%'+_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x43')]+'%'};return _0x12371d;})});}_0x448c22=_['merge']({},_0x448c22,_0x3bd0cd['options']);return _0x51f5ef[_0x75d8('0x62')](_0x448c22);}})[_0x75d8('0x29')](function(_0x60c24d){if(_0x60c24d){_0x4bd65f=_0x60c24d[_0x75d8('0x3c')];if(!_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x57')](_0x75d8('0x3d'))){_0x448c22[_0x75d8('0x21')]=qs[_0x75d8('0x21')](_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x21')]);_0x448c22[_0x75d8('0x20')]=qs[_0x75d8('0x20')](_0x3bd0cd[_0x75d8('0x37')][_0x75d8('0x20')]);}return _0x51f5ef[_0x75d8('0x62')](_0x448c22);}})[_0x75d8('0x29')](function(_0x4243a3){if(_0x4243a3){return _0x4243a3?{'count':_0x4bd65f,'rows':_0x4243a3}:null;}})[_0x75d8('0x29')](respondWithResult(_0xe5c035,null))[_0x75d8('0x49')](handleError(_0xe5c035,null));};exports[_0x75d8('0x63')]=function(_0x464d2e,_0x1eeb01,_0x18ac28){var _0x1eee9f=_0x464d2e[_0x75d8('0x4e')][_0x75d8('0x64')];return db[_0x75d8('0x61')][_0x75d8('0x47')]({'where':{'id':_0x1eee9f},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0x75d8('0x65'),'voicePause',_0x75d8('0x66')],'raw':!![]}]})[_0x75d8('0x29')](function(_0x1948a6){if(_0x1948a6){var _0x539b81=_[_0x75d8('0x67')](_0x1948a6,function(_0x86562e){var _0x1b2065=_0x86562e['get']({'plain':!![]});return _0x1b2065['Agents'];});return db[_0x75d8('0x30')]['find']({'where':{'id':_0x464d2e['params']['id']}})[_0x75d8('0x29')](function(_0x168f73){return db[_0x75d8('0x68')][_0x75d8('0x69')](function(_0x9ff4f8){return _0x168f73['addTeams'](_0x1eee9f,{'transaction':_0x9ff4f8})[_0x75d8('0x29')](function(){return BPromise[_0x75d8('0x6a')](_0x539b81,function(_0x39a829){return db[_0x75d8('0x59')][_0x75d8('0x6b')]({'where':{'UserId':_0x39a829['id'],'MailQueueId':_0x464d2e[_0x75d8('0x4b')]['id']},'transaction':_0x9ff4f8});});})['then'](function(){_0x539b81[_0x75d8('0x6c')](function(_0x1fb6bf){socket[_0x75d8('0x6d')]('userMailQueue:save',{'UserId':_0x1fb6bf['id'],'MailQueueId':_0x168f73['id']});});});});});}})[_0x75d8('0x29')](respondWithStatusCode(_0x1eeb01,null))[_0x75d8('0x49')](handleError(_0x1eeb01,null));};exports[_0x75d8('0x6e')]=function(_0x585470,_0x5e9255,_0x307674){return db[_0x75d8('0x61')]['findAll']({'where':{'id':_0x585470[_0x75d8('0x37')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x75d8('0x6f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5e9255,null))[_0x75d8('0x29')](function(_0x3f05a0){var _0xcc06c7=_[_0x75d8('0x2f')](_0x3f05a0,'id');var _0x1f41f1=[];var _0x453a46=[];var _0x4e4deb=squel[_0x75d8('0x70')]();_0x4e4deb[_0x75d8('0x71')](_0x75d8('0x72'))[_0x75d8('0x73')](_0x75d8('0x74'),'tq')[_0x75d8('0x75')](_0x75d8('0x76'),'ut',_0x75d8('0x77'))[_0x75d8('0x40')](_0x75d8('0x78'),_0x585470[_0x75d8('0x4b')]['id']);for(var _0x5ef2e4=0x0;_0x5ef2e4<_0x3f05a0['length'];_0x5ef2e4+=0x1){let _0x53ee3c=_0x3f05a0[_0x5ef2e4];for(var _0x3b56b2=0x0;_0x3b56b2<_0x53ee3c[_0x75d8('0x6f')]['length'];_0x3b56b2+=0x1){let _0x3521af=_0x53ee3c[_0x75d8('0x6f')][_0x3b56b2];var _0x4b62b4=_0x4e4deb[_0x75d8('0x79')]();_0x4b62b4['where'](_0x75d8('0x7a'),_0x3521af['id']);_0x453a46[_0x75d8('0x7b')](db['sequelize'][_0x75d8('0x37')](_0x4b62b4[_0x75d8('0x7c')](),{'type':db[_0x75d8('0x68')][_0x75d8('0x7d')][_0x75d8('0x7e')]})['then'](function(_0x3c81c){if(_0x3c81c[_0x75d8('0x3c')]===0x1){return _0x3521af['id'];}else{var _0x20989f=_[_0x75d8('0x7f')](_[_0x75d8('0x2f')](_0x3c81c,_0x75d8('0x80')),function(_0x404dff){return _[_0x75d8('0x81')](_0xcc06c7,_0x404dff);});if(_0x20989f){return _0x3521af['id'];}}}));}}return BPromise[_0x75d8('0x82')](_0x453a46)[_0x75d8('0x29')](function(_0x4e542d){_0x1f41f1=_(_0x1f41f1)[_0x75d8('0x83')](_0x4e542d)['compact']()[_0x75d8('0x84')]();return db[_0x75d8('0x30')][_0x75d8('0x4c')]({'where':{'id':_0x585470[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](function(_0x4fb2fc){return db[_0x75d8('0x68')][_0x75d8('0x69')](function(_0x1aca38){return _0x4fb2fc[_0x75d8('0x6e')](_0x585470['query'][_0x75d8('0x64')],{'transaction':_0x1aca38})['then'](function(){if(!_[_0x75d8('0x85')](_0x1f41f1)){return _0x4fb2fc['removeAgents'](_0x1f41f1,{'transaction':_0x1aca38});}})[_0x75d8('0x29')](function(){_0x1f41f1['forEach'](function(_0x2450c7){socket[_0x75d8('0x6d')](_0x75d8('0x86'),{'UserId':_0x2450c7,'MailQueueId':_0x4fb2fc['id']});});});});});});})[_0x75d8('0x29')](respondWithStatusCode(_0x5e9255,null))[_0x75d8('0x49')](handleError(_0x5e9255,null));};exports['addAgents']=function(_0x4761bc,_0x4c0e86,_0x1b20fd){return db[_0x75d8('0x30')]['find']({'where':{'id':_0x4761bc[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x4c0e86,null))[_0x75d8('0x29')](function(_0x2edce0){if(_0x2edce0){return _0x2edce0[_0x75d8('0x87')](_0x4761bc['body']['ids'],_['omit'](_0x4761bc[_0x75d8('0x4e')],['ids','id'])||{})[_0x75d8('0x88')](function(_0x2c1498){for(var _0x30e45c=0x0;_0x30e45c<_0x4761bc['body'][_0x75d8('0x64')][_0x75d8('0x3c')];_0x30e45c+=0x1){socket[_0x75d8('0x6d')](_0x75d8('0x89'),{'UserId':Number(_0x4761bc[_0x75d8('0x4e')]['ids'][_0x30e45c]),'MailQueueId':Number(_0x4761bc[_0x75d8('0x4b')]['id'])});}return _0x2c1498;});}})['then'](respondWithResult(_0x4c0e86,null))['catch'](handleError(_0x4c0e86,null));};exports[_0x75d8('0x8a')]=function(_0x28b99e,_0x3b76f8,_0x28da03){return db[_0x75d8('0x30')][_0x75d8('0x4c')]({'where':{'id':_0x28b99e[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x3b76f8,null))[_0x75d8('0x29')](function(_0x26c020){if(_0x26c020){return _0x26c020[_0x75d8('0x8a')](_0x28b99e[_0x75d8('0x37')]['ids'])[_0x75d8('0x29')](function(){if(_[_0x75d8('0x8b')](_0x28b99e[_0x75d8('0x37')][_0x75d8('0x64')])){for(var _0x2820c3=0x0;_0x2820c3<_0x28b99e[_0x75d8('0x37')][_0x75d8('0x64')][_0x75d8('0x3c')];_0x2820c3+=0x1){socket['emit'](_0x75d8('0x86'),{'UserId':Number(_0x28b99e[_0x75d8('0x37')]['ids'][_0x2820c3]),'MailQueueId':Number(_0x28b99e[_0x75d8('0x4b')]['id'])});}}else{socket[_0x75d8('0x6d')]('userMailQueue:remove',{'UserId':Number(_0x28b99e[_0x75d8('0x37')][_0x75d8('0x64')]),'MailQueueId':Number(_0x28b99e[_0x75d8('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x3b76f8,null))[_0x75d8('0x49')](handleError(_0x3b76f8,null));};exports[_0x75d8('0x8c')]=function(_0x4458e6,_0x4c21aa,_0x246ed3){var _0x35aa96={};var _0x37d3d7={};var _0x426d19;var _0x203909;return db[_0x75d8('0x30')][_0x75d8('0x56')]({'where':{'id':_0x4458e6[_0x75d8('0x4b')]['id']}})[_0x75d8('0x29')](handleEntityNotFound(_0x4c21aa,null))['then'](function(_0x53eb49){if(_0x53eb49){_0x426d19=_0x53eb49;_0x37d3d7[_0x75d8('0x35')]=_['keys'](db['User']['rawAttributes']);_0x37d3d7['query']=_[_0x75d8('0x38')](_0x4458e6['query']);_0x37d3d7[_0x75d8('0x41')]=_[_0x75d8('0x39')](_0x37d3d7['model'],_0x37d3d7[_0x75d8('0x37')]);_0x35aa96[_0x75d8('0x3a')]=_['intersection'](_0x37d3d7[_0x75d8('0x35')],qs[_0x75d8('0x3b')](_0x4458e6[_0x75d8('0x37')][_0x75d8('0x3b')]));_0x35aa96['attributes']=_0x35aa96[_0x75d8('0x3a')][_0x75d8('0x3c')]?_0x35aa96[_0x75d8('0x3a')]:_0x37d3d7[_0x75d8('0x35')];_0x35aa96[_0x75d8('0x3e')]=qs[_0x75d8('0x3f')](_0x4458e6[_0x75d8('0x37')][_0x75d8('0x3f')]);_0x35aa96['where']=qs[_0x75d8('0x41')](_[_0x75d8('0x42')](_0x4458e6['query'],_0x37d3d7[_0x75d8('0x41')]));if(_0x4458e6[_0x75d8('0x37')]['filter']){_0x35aa96['where']=_[_0x75d8('0x44')](_0x35aa96[_0x75d8('0x40')],{'$or':_['map'](_0x35aa96['attributes'],function(_0x12e973){var _0xc04850={};_0xc04850[_0x12e973]={'$like':'%'+_0x4458e6[_0x75d8('0x37')]['filter']+'%'};return _0xc04850;})});}_0x35aa96=_['merge']({},_0x35aa96,_0x4458e6[_0x75d8('0x45')]);return _0x426d19[_0x75d8('0x8c')](_0x35aa96);}})['then'](function(_0x3c5371){if(_0x3c5371){_0x203909=_0x3c5371['length'];if(!_0x4458e6['query'][_0x75d8('0x57')](_0x75d8('0x3d'))){_0x35aa96[_0x75d8('0x21')]=qs[_0x75d8('0x21')](_0x4458e6[_0x75d8('0x37')][_0x75d8('0x21')]);_0x35aa96[_0x75d8('0x20')]=qs['offset'](_0x4458e6[_0x75d8('0x37')][_0x75d8('0x20')]);}return _0x426d19['getAgents'](_0x35aa96);}})[_0x75d8('0x29')](function(_0xc45514){if(_0xc45514){return _0xc45514?{'count':_0x203909,'rows':_0xc45514}:null;}})[_0x75d8('0x29')](respondWithResult(_0x4c21aa,null))[_0x75d8('0x49')](handleError(_0x4c21aa,null));};
\ No newline at end of file
index f9416c2..b9e3f77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828a=['../../mysqldb','MailQueue','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1518d6,_0x5a398f){var _0x561551=function(_0x4b75a6){while(--_0x4b75a6){_0x1518d6['push'](_0x1518d6['shift']());}};_0x561551(++_0x5a398f);}(_0x828a,0x1b0));var _0xa828=function(_0x18cc2f,_0x46f507){_0x18cc2f=_0x18cc2f-0x0;var _0x4685f6=_0x828a[_0x18cc2f];return _0x4685f6;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0xa828('0x0'))['db'][_0xa828('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa828('0x2'),'afterDestroy':_0xa828('0x3')};function emitEvent(_0x3ee23f){return function(_0x5c4bef,_0x4b9b70,_0x51e5c3){MailQueueEvents[_0xa828('0x4')](_0x3ee23f+':'+_0x5c4bef['id'],_0x5c4bef);MailQueueEvents[_0xa828('0x4')](_0x3ee23f,_0x5c4bef);_0x51e5c3(null);};}for(var e in events){if(events[_0xa828('0x5')](e)){var event=events[e];MailQueue[_0xa828('0x6')](e,emitEvent(event));}}module[_0xa828('0x7')]=MailQueueEvents;
\ No newline at end of file
+var _0x828f=['events','../../mysqldb','setMaxListeners','save','update','hasOwnProperty','exports'];(function(_0x446350,_0x394d85){var _0x50c48f=function(_0x3fcc88){while(--_0x3fcc88){_0x446350['push'](_0x446350['shift']());}};_0x50c48f(++_0x394d85);}(_0x828f,0x126));var _0xf828=function(_0x44d9ab,_0x76bc69){_0x44d9ab=_0x44d9ab-0x0;var _0x31485e=_0x828f[_0x44d9ab];return _0x31485e;};'use strict';var EventEmitter=require(_0xf828('0x0'));var MailQueue=require(_0xf828('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xf828('0x2')](0x0);var events={'afterCreate':_0xf828('0x3'),'afterUpdate':_0xf828('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4a8985){return function(_0x2fc3a1,_0x3aa1f3,_0x2c1978){MailQueueEvents['emit'](_0x4a8985+':'+_0x2fc3a1['id'],_0x2fc3a1);MailQueueEvents['emit'](_0x4a8985,_0x2fc3a1);_0x2c1978(null);};}for(var e in events){if(events[_0xf828('0x5')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0xf828('0x6')]=MailQueueEvents;
\ No newline at end of file
index 956d4f9..fcd5ac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc103=['mail_queues','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','MailQueue'];(function(_0x5f0c39,_0x191cff){var _0x7e6ca3=function(_0x41da98){while(--_0x41da98){_0x5f0c39['push'](_0x5f0c39['shift']());}};_0x7e6ca3(++_0x191cff);}(_0xc103,0xe8));var _0x3c10=function(_0xedf622,_0x5a854d){_0xedf622=_0xedf622-0x0;var _0x245b71=_0xc103[_0xedf622];return _0x245b71;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3c10('0x0'))(_0x3c10('0x1'));var moment=require(_0x3c10('0x2'));var BPromise=require(_0x3c10('0x3'));var rp=require(_0x3c10('0x4'));var fs=require('fs');var path=require(_0x3c10('0x5'));var rimraf=require(_0x3c10('0x6'));var config=require(_0x3c10('0x7'));var attributes=require('./mailQueue.attributes');module[_0x3c10('0x8')]=function(_0x8a334a,_0x1b1e89){return _0x8a334a['define'](_0x3c10('0x9'),attributes,{'tableName':_0x3c10('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6838=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','MailQueue','lodash','util'];(function(_0x26b767,_0x167373){var _0xb91798=function(_0x1a6c17){while(--_0x1a6c17){_0x26b767['push'](_0x26b767['shift']());}};_0xb91798(++_0x167373);}(_0x6838,0x120));var _0x8683=function(_0x2e612a,_0x106dd7){_0x2e612a=_0x2e612a-0x0;var _0x3cb97c=_0x6838[_0x2e612a];return _0x3cb97c;};'use strict';var _=require(_0x8683('0x0'));var util=require(_0x8683('0x1'));var logger=require(_0x8683('0x2'))(_0x8683('0x3'));var moment=require(_0x8683('0x4'));var BPromise=require(_0x8683('0x5'));var rp=require(_0x8683('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8683('0x7'));var config=require(_0x8683('0x8'));var attributes=require('./mailQueue.attributes');module['exports']=function(_0xe00e8f,_0x11ff34){return _0xe00e8f['define'](_0x8683('0x9'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ac62102..64fe5ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6fe=['MailQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','MailQueue,\x20%s,\x20%s','result','catch','MailQueue','findAll','options','where','attributes','limit','include','map','model','GetMailQueue','find','ShowMailQueue','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','request\x20sent','debug'];(function(_0x1deb49,_0x4411fb){var _0x1d3310=function(_0x17fc17){while(--_0x17fc17){_0x1deb49['push'](_0x1deb49['shift']());}};_0x1d3310(++_0x4411fb);}(_0xc6fe,0xbc));var _0xec6f=function(_0x9c2c7c,_0x2257e3){_0x9c2c7c=_0x9c2c7c-0x0;var _0x1348dd=_0xc6fe[_0x9c2c7c];return _0x1348dd;};'use strict';var _=require(_0xec6f('0x0'));var util=require(_0xec6f('0x1'));var moment=require('moment');var BPromise=require(_0xec6f('0x2'));var rs=require(_0xec6f('0x3'));var fs=require('fs');var Redis=require(_0xec6f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xec6f('0x5'));var logger=require('../../config/logger')(_0xec6f('0x6'));var config=require(_0xec6f('0x7'));var jayson=require(_0xec6f('0x8'));var client=jayson[_0xec6f('0x9')][_0xec6f('0xa')]({'port':0x232a});config[_0xec6f('0xb')]=_[_0xec6f('0xc')](config[_0xec6f('0xb')],{'host':_0xec6f('0xd'),'port':0x18eb});var socket=require(_0xec6f('0xe'))(new Redis(config['redis']));require(_0xec6f('0xf'))[_0xec6f('0x10')](socket);function respondWithRpcPromise(_0x3ef099,_0x138d0b,_0x39d545){return new BPromise(function(_0x1dab3a,_0x35e7e1){return client[_0xec6f('0x11')](_0x3ef099,_0x39d545)[_0xec6f('0x12')](function(_0x294650){logger[_0xec6f('0x13')]('MailQueue,\x20%s,\x20%s',_0x138d0b,_0xec6f('0x14'));logger[_0xec6f('0x15')](_0xec6f('0x16'),_0x138d0b,_0xec6f('0x14'),JSON[_0xec6f('0x17')](_0x294650));if(_0x294650['error']){if(_0x294650['error'][_0xec6f('0x18')]===0x1f4){logger[_0xec6f('0x19')]('MailQueue,\x20%s,\x20%s',_0x138d0b,_0x294650['error'][_0xec6f('0x1a')]);return _0x35e7e1(_0x294650[_0xec6f('0x19')]['message']);}logger['error'](_0xec6f('0x1b'),_0x138d0b,_0x294650[_0xec6f('0x19')][_0xec6f('0x1a')]);return _0x1dab3a(_0x294650[_0xec6f('0x19')]['message']);}else{logger['info'](_0xec6f('0x1b'),_0x138d0b,_0xec6f('0x14'));_0x1dab3a(_0x294650[_0xec6f('0x1c')][_0xec6f('0x1a')]);}})[_0xec6f('0x1d')](function(_0x434a0b){logger[_0xec6f('0x19')](_0xec6f('0x1b'),_0x138d0b,_0x434a0b);_0x35e7e1(_0x434a0b);});});}exports['GetMailQueue']=function(_0x8d5a48){var _0x179b2c=this;return new Promise(function(_0x29720a,_0x38e72b){return db[_0xec6f('0x1e')][_0xec6f('0x1f')]({'raw':_0x8d5a48['options']?_0x8d5a48[_0xec6f('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x21')]||null:null,'attributes':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48['options'][_0xec6f('0x22')]||null:null,'limit':_0x8d5a48['options']?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x23')]||null:null,'include':_0x8d5a48[_0xec6f('0x20')]?_0x8d5a48[_0xec6f('0x20')][_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x8d5a48['options'][_0xec6f('0x24')],function(_0x2251fe){return{'model':db[_0x2251fe[_0xec6f('0x26')]],'as':_0x2251fe['as'],'attributes':_0x2251fe[_0xec6f('0x22')],'include':_0x2251fe[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x2251fe[_0xec6f('0x24')],function(_0x5a78e6){return{'model':db[_0x5a78e6[_0xec6f('0x26')]],'as':_0x5a78e6['as'],'attributes':_0x5a78e6[_0xec6f('0x22')],'include':_0x5a78e6[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x5a78e6[_0xec6f('0x24')],function(_0x29e06a){return{'model':db[_0x29e06a['model']],'as':_0x29e06a['as'],'attributes':_0x29e06a['attributes']};}):[]};}):[]};}):[]:[]})[_0xec6f('0x12')](function(_0x47eccb){logger[_0xec6f('0x13')](_0xec6f('0x27'),_0x8d5a48);logger[_0xec6f('0x15')](_0xec6f('0x27'),_0x8d5a48,JSON[_0xec6f('0x17')](_0x47eccb));_0x29720a(_0x47eccb);})['catch'](function(_0x10fa1a){logger['error'](_0xec6f('0x27'),_0x10fa1a[_0xec6f('0x1a')],_0x8d5a48);_0x38e72b(_0x179b2c[_0xec6f('0x19')](0x1f4,_0x10fa1a[_0xec6f('0x1a')]));});});};exports['ShowMailQueue']=function(_0x60e05c){var _0x2766c9=this;return new Promise(function(_0x409704,_0x82643a){return db[_0xec6f('0x1e')][_0xec6f('0x28')]({'raw':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')][_0xec6f('0x21')]||null:null,'attributes':_0x60e05c[_0xec6f('0x20')]?_0x60e05c['options']['attributes']||null:null,'include':_0x60e05c[_0xec6f('0x20')]?_0x60e05c[_0xec6f('0x20')][_0xec6f('0x24')]?_['map'](_0x60e05c[_0xec6f('0x20')][_0xec6f('0x24')],function(_0x51176d){return{'model':db[_0x51176d[_0xec6f('0x26')]],'as':_0x51176d['as'],'attributes':_0x51176d['attributes'],'include':_0x51176d['include']?_[_0xec6f('0x25')](_0x51176d[_0xec6f('0x24')],function(_0x5dc4ea){return{'model':db[_0x5dc4ea[_0xec6f('0x26')]],'as':_0x5dc4ea['as'],'attributes':_0x5dc4ea[_0xec6f('0x22')],'include':_0x5dc4ea[_0xec6f('0x24')]?_[_0xec6f('0x25')](_0x5dc4ea['include'],function(_0x1bd50a){return{'model':db[_0x1bd50a[_0xec6f('0x26')]],'as':_0x1bd50a['as'],'attributes':_0x1bd50a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x7bcaeb){logger[_0xec6f('0x13')](_0xec6f('0x29'),_0x60e05c);logger[_0xec6f('0x15')](_0xec6f('0x29'),_0x60e05c,JSON[_0xec6f('0x17')](_0x7bcaeb));_0x409704(_0x7bcaeb);})[_0xec6f('0x1d')](function(_0x1f8f97){logger[_0xec6f('0x19')](_0xec6f('0x29'),_0x1f8f97[_0xec6f('0x1a')],_0x60e05c);_0x82643a(_0x2766c9[_0xec6f('0x19')](0x1f4,_0x1f8f97['message']));});});};
\ No newline at end of file
+var _0xbe5d=['../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','findAll','raw','options','where','attributes','limit','include','map','model','ShowMailQueue','find','debug','util','moment','bluebird','../../config/utils'];(function(_0x1ade42,_0x388658){var _0x32887b=function(_0x142982){while(--_0x142982){_0x1ade42['push'](_0x1ade42['shift']());}};_0x32887b(++_0x388658);}(_0xbe5d,0xd4));var _0xdbe5=function(_0x27ca78,_0x3b5796){_0x27ca78=_0x27ca78-0x0;var _0x528091=_0xbe5d[_0x27ca78];return _0x528091;};'use strict';var _=require('lodash');var util=require(_0xdbe5('0x0'));var moment=require(_0xdbe5('0x1'));var BPromise=require(_0xdbe5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdbe5('0x3'));var logger=require(_0xdbe5('0x4'))(_0xdbe5('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xdbe5('0x6')]({'port':0x232a});config[_0xdbe5('0x7')]=_[_0xdbe5('0x8')](config[_0xdbe5('0x7')],{'host':_0xdbe5('0x9'),'port':0x18eb});var socket=require(_0xdbe5('0xa'))(new Redis(config[_0xdbe5('0x7')]));require(_0xdbe5('0xb'))['register'](socket);function respondWithRpcPromise(_0x54e820,_0x23db01,_0x47027d){return new BPromise(function(_0x45bde8,_0xe089e1){return client['request'](_0x54e820,_0x47027d)[_0xdbe5('0xc')](function(_0x394db4){logger[_0xdbe5('0xd')](_0xdbe5('0xe'),_0x23db01,_0xdbe5('0xf'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0x23db01,_0xdbe5('0xf'),JSON[_0xdbe5('0x10')](_0x394db4));if(_0x394db4['error']){if(_0x394db4[_0xdbe5('0x11')][_0xdbe5('0x12')]===0x1f4){logger[_0xdbe5('0x11')](_0xdbe5('0xe'),_0x23db01,_0x394db4[_0xdbe5('0x11')][_0xdbe5('0x13')]);return _0xe089e1(_0x394db4[_0xdbe5('0x11')][_0xdbe5('0x13')]);}logger['error']('MailQueue,\x20%s,\x20%s',_0x23db01,_0x394db4[_0xdbe5('0x11')][_0xdbe5('0x13')]);return _0x45bde8(_0x394db4[_0xdbe5('0x11')][_0xdbe5('0x13')]);}else{logger['info'](_0xdbe5('0xe'),_0x23db01,_0xdbe5('0xf'));_0x45bde8(_0x394db4[_0xdbe5('0x14')][_0xdbe5('0x13')]);}})[_0xdbe5('0x15')](function(_0x3251db){logger[_0xdbe5('0x11')](_0xdbe5('0xe'),_0x23db01,_0x3251db);_0xe089e1(_0x3251db);});});}exports[_0xdbe5('0x16')]=function(_0x3be20f){var _0x196e57=this;return new Promise(function(_0x64952c,_0x2831e1){return db[_0xdbe5('0x17')][_0xdbe5('0x18')]({'raw':_0x3be20f['options']?_0x3be20f['options'][_0xdbe5('0x19')]===undefined?!![]:![]:!![],'where':_0x3be20f[_0xdbe5('0x1a')]?_0x3be20f['options'][_0xdbe5('0x1b')]||null:null,'attributes':_0x3be20f['options']?_0x3be20f['options'][_0xdbe5('0x1c')]||null:null,'limit':_0x3be20f[_0xdbe5('0x1a')]?_0x3be20f[_0xdbe5('0x1a')][_0xdbe5('0x1d')]||null:null,'include':_0x3be20f[_0xdbe5('0x1a')]?_0x3be20f['options'][_0xdbe5('0x1e')]?_[_0xdbe5('0x1f')](_0x3be20f[_0xdbe5('0x1a')][_0xdbe5('0x1e')],function(_0x33e838){return{'model':db[_0x33e838['model']],'as':_0x33e838['as'],'attributes':_0x33e838[_0xdbe5('0x1c')],'include':_0x33e838[_0xdbe5('0x1e')]?_['map'](_0x33e838[_0xdbe5('0x1e')],function(_0xd10441){return{'model':db[_0xd10441[_0xdbe5('0x20')]],'as':_0xd10441['as'],'attributes':_0xd10441[_0xdbe5('0x1c')],'include':_0xd10441[_0xdbe5('0x1e')]?_[_0xdbe5('0x1f')](_0xd10441[_0xdbe5('0x1e')],function(_0x43779c){return{'model':db[_0x43779c['model']],'as':_0x43779c['as'],'attributes':_0x43779c[_0xdbe5('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdbe5('0xc')](function(_0xcab060){logger[_0xdbe5('0xd')](_0xdbe5('0x16'),_0x3be20f);logger['debug'](_0xdbe5('0x16'),_0x3be20f,JSON[_0xdbe5('0x10')](_0xcab060));_0x64952c(_0xcab060);})[_0xdbe5('0x15')](function(_0x55a1e1){logger[_0xdbe5('0x11')](_0xdbe5('0x16'),_0x55a1e1['message'],_0x3be20f);_0x2831e1(_0x196e57[_0xdbe5('0x11')](0x1f4,_0x55a1e1[_0xdbe5('0x13')]));});});};exports[_0xdbe5('0x21')]=function(_0x4f7b02){var _0xe93271=this;return new Promise(function(_0x2fe080,_0x33c6e1){return db[_0xdbe5('0x17')][_0xdbe5('0x22')]({'raw':_0x4f7b02['options']?_0x4f7b02[_0xdbe5('0x1a')][_0xdbe5('0x19')]===undefined?!![]:![]:!![],'where':_0x4f7b02['options']?_0x4f7b02[_0xdbe5('0x1a')][_0xdbe5('0x1b')]||null:null,'attributes':_0x4f7b02[_0xdbe5('0x1a')]?_0x4f7b02[_0xdbe5('0x1a')][_0xdbe5('0x1c')]||null:null,'include':_0x4f7b02[_0xdbe5('0x1a')]?_0x4f7b02[_0xdbe5('0x1a')][_0xdbe5('0x1e')]?_['map'](_0x4f7b02['options'][_0xdbe5('0x1e')],function(_0x371021){return{'model':db[_0x371021[_0xdbe5('0x20')]],'as':_0x371021['as'],'attributes':_0x371021[_0xdbe5('0x1c')],'include':_0x371021[_0xdbe5('0x1e')]?_[_0xdbe5('0x1f')](_0x371021[_0xdbe5('0x1e')],function(_0x44b069){return{'model':db[_0x44b069[_0xdbe5('0x20')]],'as':_0x44b069['as'],'attributes':_0x44b069['attributes'],'include':_0x44b069['include']?_['map'](_0x44b069['include'],function(_0x66db25){return{'model':db[_0x66db25['model']],'as':_0x66db25['as'],'attributes':_0x66db25[_0xdbe5('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdbe5('0xc')](function(_0x10f20d){logger[_0xdbe5('0xd')](_0xdbe5('0x21'),_0x4f7b02);logger[_0xdbe5('0x23')](_0xdbe5('0x21'),_0x4f7b02,JSON[_0xdbe5('0x10')](_0x10f20d));_0x2fe080(_0x10f20d);})['catch'](function(_0x17a17b){logger['error']('ShowMailQueue',_0x17a17b[_0xdbe5('0x13')],_0x4f7b02);_0x33c6e1(_0xe93271[_0xdbe5('0x11')](0x1f4,_0x17a17b['message']));});});};
\ No newline at end of file
index c7c3822..0679f46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdb4=['emit','removeListener','register','length','./mailQueue.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdb4,0x1f3));var _0x4cdb=function(_0x254ed9,_0x297d5f){_0x254ed9=_0x254ed9-0x0;var _0x36c055=_0xcdb4[_0x254ed9];return _0x36c055;};'use strict';var MailQueueEvents=require(_0x4cdb('0x0'));var events=['save','remove','update'];function createListener(_0x126130,_0x2cfe4c){return function(_0x387aff){_0x2cfe4c[_0x4cdb('0x1')](_0x126130,_0x387aff);};}function removeListener(_0x3807f6,_0x208819){return function(){MailQueueEvents[_0x4cdb('0x2')](_0x3807f6,_0x208819);};}exports[_0x4cdb('0x3')]=function(_0x4a81c3){for(var _0x57a171=0x0,_0x5d0a21=events[_0x4cdb('0x4')];_0x57a171<_0x5d0a21;_0x57a171++){var _0x4985c1=events[_0x57a171];var _0x3df0f0=createListener('mailQueue:'+_0x4985c1,_0x4a81c3);MailQueueEvents['on'](_0x4985c1,_0x3df0f0);}};
\ No newline at end of file
+var _0x7497=['./mailQueue.events','save','remove','emit','removeListener','register','length','mailQueue:'];(function(_0x85fa5d,_0x4ff20a){var _0xa7bde=function(_0x579620){while(--_0x579620){_0x85fa5d['push'](_0x85fa5d['shift']());}};_0xa7bde(++_0x4ff20a);}(_0x7497,0xd0));var _0x7749=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7497[_0x3dd15e];return _0x231fd0;};'use strict';var MailQueueEvents=require(_0x7749('0x0'));var events=[_0x7749('0x1'),_0x7749('0x2'),'update'];function createListener(_0x4c75af,_0x5e36cc){return function(_0x4000cf){_0x5e36cc[_0x7749('0x3')](_0x4c75af,_0x4000cf);};}function removeListener(_0x5d360f,_0x1f0553){return function(){MailQueueEvents[_0x7749('0x4')](_0x5d360f,_0x1f0553);};}exports[_0x7749('0x5')]=function(_0x455d05){for(var _0x289268=0x0,_0x29f84f=events[_0x7749('0x6')];_0x289268<_0x29f84f;_0x289268++){var _0x344fa8=events[_0x289268];var _0x38dd37=createListener(_0x7749('0x7')+_0x344fa8,_0x455d05);MailQueueEvents['on'](_0x344fa8,_0x38dd37);}};
\ No newline at end of file
index e7bab32..db84e2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdea5=['get','/describe','isAuthenticated','post','create','put','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0xdea5,0x199));var _0x5dea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdea5[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5dea('0x0'));var util=require(_0x5dea('0x1'));var path=require(_0x5dea('0x2'));var timeout=require('connect-timeout');var express=require(_0x5dea('0x3'));var router=express[_0x5dea('0x4')]();var fs_extra=require(_0x5dea('0x5'));var auth=require(_0x5dea('0x6'));var interaction=require(_0x5dea('0x7'));var config=require(_0x5dea('0x8'));var controller=require('./mailQueueReport.controller');router[_0x5dea('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5dea('0x9')](_0x5dea('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x5dea('0x9')]('/:id',auth[_0x5dea('0xb')](),controller['show']);router[_0x5dea('0xc')]('/',auth[_0x5dea('0xb')](),controller[_0x5dea('0xd')]);router[_0x5dea('0xe')](_0x5dea('0xf'),auth[_0x5dea('0xb')](),controller['update']);router[_0x5dea('0x10')](_0x5dea('0xf'),auth[_0x5dea('0xb')](),controller[_0x5dea('0x11')]);module[_0x5dea('0x12')]=router;
\ No newline at end of file
+var _0xf77d=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','/:id','show','put','update','delete'];(function(_0x56fbb6,_0x570f05){var _0x4e9a77=function(_0x320be4){while(--_0x320be4){_0x56fbb6['push'](_0x56fbb6['shift']());}};_0x4e9a77(++_0x570f05);}(_0xf77d,0x168));var _0xdf77=function(_0x13cd20,_0x1d9211){_0x13cd20=_0x13cd20-0x0;var _0x22b6de=_0xf77d[_0x13cd20];return _0x22b6de;};'use strict';var multer=require(_0xdf77('0x0'));var util=require('util');var path=require(_0xdf77('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf77('0x2'));var router=express[_0xdf77('0x3')]();var fs_extra=require(_0xdf77('0x4'));var auth=require(_0xdf77('0x5'));var interaction=require(_0xdf77('0x6'));var config=require(_0xdf77('0x7'));var controller=require(_0xdf77('0x8'));router[_0xdf77('0x9')]('/',auth['isAuthenticated'](),controller[_0xdf77('0xa')]);router['get'](_0xdf77('0xb'),auth[_0xdf77('0xc')](),controller['describe']);router['get'](_0xdf77('0xd'),auth['isAuthenticated'](),controller[_0xdf77('0xe')]);router['post']('/',auth[_0xdf77('0xc')](),controller['create']);router[_0xdf77('0xf')]('/:id',auth[_0xdf77('0xc')](),controller[_0xdf77('0x10')]);router[_0xdf77('0x11')](_0xdf77('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 851e7d4..ada028e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffaa=['DATE','moment','sequelize','STRING'];(function(_0x5a7d7c,_0x9ae68a){var _0x239238=function(_0x32777a){while(--_0x32777a){_0x5a7d7c['push'](_0x5a7d7c['shift']());}};_0x239238(++_0x9ae68a);}(_0xffaa,0xb1));var _0xaffa=function(_0x4188a9,_0x1a5e63){_0x4188a9=_0x4188a9-0x0;var _0x25d468=_0xffaa[_0x4188a9];return _0x25d468;};'use strict';var moment=require(_0xaffa('0x0'));var Sequelize=require(_0xaffa('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xaffa('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xaffa('0x2')]},'joinAt':{'type':Sequelize[_0xaffa('0x3')]},'leaveAt':{'type':Sequelize[_0xaffa('0x3')]},'acceptAt':{'type':Sequelize[_0xaffa('0x3')]},'exitAt':{'type':Sequelize[_0xaffa('0x3')]},'reason':{'type':Sequelize[_0xaffa('0x2')]}};
\ No newline at end of file
+var _0x0ec4=['moment','sequelize','exports','DATE'];(function(_0x179615,_0x7796fa){var _0xa115d=function(_0x37e9e0){while(--_0x37e9e0){_0x179615['push'](_0x179615['shift']());}};_0xa115d(++_0x7796fa);}(_0x0ec4,0x154));var _0x40ec=function(_0x46203d,_0x16f203){_0x46203d=_0x46203d-0x0;var _0x46998c=_0x0ec4[_0x46203d];return _0x46998c;};'use strict';var moment=require(_0x40ec('0x0'));var Sequelize=require(_0x40ec('0x1'));module[_0x40ec('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x40ec('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x40ec('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index afe9c4b..7a2eb5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','MailQueueReport','rawAttributes','type','key','model','query'];(function(_0x39a6f5,_0x4f0afb){var _0x1ee0a2=function(_0x3445ac){while(--_0x3445ac){_0x39a6f5['push'](_0x39a6f5['shift']());}};_0x1ee0a2(++_0x4f0afb);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x521d33,_0x5bbfdd){_0x521d33=_0x521d33-0x0;var _0x3748c2=_0xc1c6[_0x521d33];return _0x3748c2;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require('moment');var BPromise=require(_0x6c1c('0x4'));var Mustache=require(_0x6c1c('0x5'));var util=require(_0x6c1c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6c1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c1c('0x8'));var _=require('lodash');var squel=require(_0x6c1c('0x9'));var crypto=require(_0x6c1c('0xa'));var jsforce=require(_0x6c1c('0xb'));var deskjs=require(_0x6c1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xd'));var Papa=require(_0x6c1c('0xe'));var Redis=require('ioredis');var authService=require(_0x6c1c('0xf'));var qs=require(_0x6c1c('0x10'));var as=require(_0x6c1c('0x11'));var hardwareService=require(_0x6c1c('0x12'));var logger=require('../../config/logger')(_0x6c1c('0x13'));var utils=require(_0x6c1c('0x14'));var config=require(_0x6c1c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x16'))['db'];function respondWithStatusCode(_0x12a9e6,_0x2067bd){_0x2067bd=_0x2067bd||0xcc;return function(_0x49304f){if(_0x49304f){return _0x12a9e6[_0x6c1c('0x17')](_0x2067bd);}return _0x12a9e6['status'](_0x2067bd)[_0x6c1c('0x18')]();};}function respondWithResult(_0x15a1fc,_0x2d279e){_0x2d279e=_0x2d279e||0xc8;return function(_0x154107){if(_0x154107){return _0x15a1fc[_0x6c1c('0x19')](_0x2d279e)[_0x6c1c('0x1a')](_0x154107);}};}function respondWithFilteredResult(_0x297c33,_0x41aa74){return function(_0x448f35){if(_0x448f35){var _0x5f3758=typeof _0x41aa74[_0x6c1c('0x1b')]===_0x6c1c('0x1c')&&typeof _0x41aa74['limit']===_0x6c1c('0x1c');var _0x237cac=_0x448f35['count'];var _0x137770=_0x5f3758?0x0:_0x41aa74['offset'];var _0x338dc2=_0x5f3758?_0x448f35[_0x6c1c('0x1d')]:_0x41aa74['offset']+_0x41aa74[_0x6c1c('0x1e')];var _0x59ab38;if(_0x338dc2>=_0x237cac){_0x338dc2=_0x237cac;_0x59ab38=0xc8;}else{_0x59ab38=0xce;}_0x297c33[_0x6c1c('0x19')](_0x59ab38);return _0x297c33[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x137770+'-'+_0x338dc2+'/'+_0x237cac)[_0x6c1c('0x1a')](_0x448f35);}return null;};}function patchUpdates(_0x1acf7f){return function(_0x1efb19){try{jsonpatch[_0x6c1c('0x21')](_0x1efb19,_0x1acf7f,!![]);}catch(_0x2ed830){return BPromise[_0x6c1c('0x22')](_0x2ed830);}return _0x1efb19[_0x6c1c('0x23')]();};}function saveUpdates(_0x3d2bf3,_0x450b1f){return function(_0x2382c0){if(_0x2382c0){return _0x2382c0[_0x6c1c('0x24')](_0x3d2bf3)[_0x6c1c('0x25')](function(_0x19c269){return _0x19c269;});}return null;};}function removeEntity(_0x2319d3,_0x12c638){return function(_0x3a3f13){if(_0x3a3f13){return _0x3a3f13[_0x6c1c('0x26')]()[_0x6c1c('0x25')](function(){_0x2319d3[_0x6c1c('0x19')](0xcc)[_0x6c1c('0x18')]();});}};}function handleEntityNotFound(_0x7ff10d,_0x18452d){return function(_0x80bc05){if(!_0x80bc05){_0x7ff10d[_0x6c1c('0x17')](0x194);}return _0x80bc05;};}function handleError(_0x1b9d7d,_0x2feaf4){_0x2feaf4=_0x2feaf4||0x1f4;return function(_0x5f4568){logger[_0x6c1c('0x27')](_0x5f4568['stack']);if(_0x5f4568[_0x6c1c('0x28')]){delete _0x5f4568['name'];}_0x1b9d7d[_0x6c1c('0x19')](_0x2feaf4)['send'](_0x5f4568);};}exports[_0x6c1c('0x29')]=function(_0xf557ba,_0x504348){var _0x3b1a4f={},_0x24da4c={},_0x4e13e3={'count':0x0,'rows':[]};var _0x3b319a=_[_0x6c1c('0x2a')](db[_0x6c1c('0x2b')][_0x6c1c('0x2c')],function(_0x4fc279){return{'name':_0x4fc279['fieldName'],'type':_0x4fc279[_0x6c1c('0x2d')][_0x6c1c('0x2e')]};});_0x24da4c[_0x6c1c('0x2f')]=_[_0x6c1c('0x2a')](_0x3b319a,_0x6c1c('0x28'));_0x24da4c[_0x6c1c('0x30')]=_['keys'](_0xf557ba[_0x6c1c('0x30')]);_0x24da4c[_0x6c1c('0x31')]=_['intersection'](_0x24da4c[_0x6c1c('0x2f')],_0x24da4c[_0x6c1c('0x30')]);_0x3b1a4f[_0x6c1c('0x32')]=_[_0x6c1c('0x33')](_0x24da4c['model'],qs[_0x6c1c('0x34')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x3b1a4f['attributes']=_0x3b1a4f[_0x6c1c('0x32')]['length']?_0x3b1a4f[_0x6c1c('0x32')]:_0x24da4c['model'];if(!_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x35')](_0x6c1c('0x36'))){_0x3b1a4f['limit']=qs['limit'](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x1e')]);_0x3b1a4f[_0x6c1c('0x1b')]=qs['offset'](_0xf557ba[_0x6c1c('0x30')]['offset']);}_0x3b1a4f['order']=qs[_0x6c1c('0x37')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x37')]);_0x3b1a4f[_0x6c1c('0x38')]=qs['filters'](_[_0x6c1c('0x39')](_0xf557ba[_0x6c1c('0x30')],_0x24da4c[_0x6c1c('0x31')]),_0x3b319a);if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]){_0x3b1a4f[_0x6c1c('0x38')]=_[_0x6c1c('0x3b')](_0x3b1a4f[_0x6c1c('0x38')],{'$or':_[_0x6c1c('0x2a')](_0x3b319a,function(_0x232508){if(_0x232508['type']!==_0x6c1c('0x3c')){var _0x464549={};_0x464549[_0x232508[_0x6c1c('0x28')]]={'$like':'%'+_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]+'%'};return _0x464549;}})});}_0x3b1a4f=_['merge']({},_0x3b1a4f,_0xf557ba['options']);var _0x549db1={'where':_0x3b1a4f[_0x6c1c('0x38')]};return db['MailQueueReport']['count'](_0x549db1)[_0x6c1c('0x25')](function(_0x37244e){_0x4e13e3['count']=_0x37244e;if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x3b1a4f[_0x6c1c('0x3e')]=[{'all':!![]}];}return db['MailQueueReport'][_0x6c1c('0x3f')](_0x3b1a4f);})[_0x6c1c('0x25')](function(_0x502e75){_0x4e13e3[_0x6c1c('0x40')]=_0x502e75;return _0x4e13e3;})['then'](respondWithFilteredResult(_0x504348,_0x3b1a4f))[_0x6c1c('0x41')](handleError(_0x504348,null));};exports[_0x6c1c('0x42')]=function(_0x16a389,_0x174f2c){var _0x10764a={'raw':!![],'where':{'id':_0x16a389[_0x6c1c('0x43')]['id']}},_0x595ba2={};_0x595ba2[_0x6c1c('0x2f')]=_[_0x6c1c('0x44')](db['MailQueueReport'][_0x6c1c('0x2c')]);_0x595ba2[_0x6c1c('0x30')]=_[_0x6c1c('0x44')](_0x16a389[_0x6c1c('0x30')]);_0x595ba2[_0x6c1c('0x31')]=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],_0x595ba2['query']);_0x10764a['attributes']=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],qs[_0x6c1c('0x34')](_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x10764a[_0x6c1c('0x32')]=_0x10764a[_0x6c1c('0x32')][_0x6c1c('0x45')]?_0x10764a[_0x6c1c('0x32')]:_0x595ba2['model'];if(_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x10764a['include']=[{'all':!![]}];}_0x10764a=_[_0x6c1c('0x3b')]({},_0x10764a,_0x16a389['options']);return db[_0x6c1c('0x2b')][_0x6c1c('0x46')](_0x10764a)[_0x6c1c('0x25')](handleEntityNotFound(_0x174f2c,null))[_0x6c1c('0x25')](respondWithResult(_0x174f2c,null))[_0x6c1c('0x41')](handleError(_0x174f2c,null));};exports['create']=function(_0x1fe6e8,_0x58d075){return db[_0x6c1c('0x2b')][_0x6c1c('0x47')](_0x1fe6e8[_0x6c1c('0x48')],{})[_0x6c1c('0x25')](respondWithResult(_0x58d075,0xc9))[_0x6c1c('0x41')](handleError(_0x58d075,null));};exports[_0x6c1c('0x24')]=function(_0x52c14d,_0xa9889a){if(_0x52c14d[_0x6c1c('0x48')]['id']){delete _0x52c14d['body']['id'];}return db[_0x6c1c('0x2b')][_0x6c1c('0x46')]({'where':{'id':_0x52c14d[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0xa9889a,null))['then'](saveUpdates(_0x52c14d[_0x6c1c('0x48')],null))[_0x6c1c('0x25')](respondWithResult(_0xa9889a,null))[_0x6c1c('0x41')](handleError(_0xa9889a,null));};exports['destroy']=function(_0x5b8d69,_0x56b367){return db['MailQueueReport']['find']({'where':{'id':_0x5b8d69[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0x56b367,null))['then'](removeEntity(_0x56b367,null))[_0x6c1c('0x41')](handleError(_0x56b367,null));};exports[_0x6c1c('0x49')]=function(_0x2450ab,_0x5489ac){return db['MailQueueReport'][_0x6c1c('0x49')]()[_0x6c1c('0x25')](respondWithResult(_0x5489ac,null))['catch'](handleError(_0x5489ac,null));};
\ No newline at end of file
+var _0xfcbb=['destroy','error','stack','name','send','index','MailQueueReport','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','options','include','rows','catch','show','length','includeAll','find','create','body','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','update','then'];(function(_0x7f1339,_0x53ce40){var _0x364870=function(_0x371b0b){while(--_0x371b0b){_0x7f1339['push'](_0x7f1339['shift']());}};_0x364870(++_0x53ce40);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x4dfb0f,_0x1d7048){_0x4dfb0f=_0x4dfb0f-0x0;var _0x5520f2=_0xfcbb[_0x4dfb0f];return _0x5520f2;};'use strict';var emlformat=require(_0xbfcb('0x0'));var rimraf=require(_0xbfcb('0x1'));var zipdir=require(_0xbfcb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbfcb('0x3'));var BPromise=require(_0xbfcb('0x4'));var Mustache=require(_0xbfcb('0x5'));var util=require(_0xbfcb('0x6'));var path=require(_0xbfcb('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbfcb('0x8'));var fs=require('fs');var fs_extra=require(_0xbfcb('0x9'));var _=require(_0xbfcb('0xa'));var squel=require(_0xbfcb('0xb'));var crypto=require(_0xbfcb('0xc'));var jsforce=require(_0xbfcb('0xd'));var deskjs=require(_0xbfcb('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbfcb('0xf'));var Papa=require(_0xbfcb('0x10'));var Redis=require(_0xbfcb('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbfcb('0x12'));var as=require(_0xbfcb('0x13'));var hardwareService=require(_0xbfcb('0x14'));var logger=require(_0xbfcb('0x15'))(_0xbfcb('0x16'));var utils=require(_0xbfcb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xbfcb('0x18'));var db=require(_0xbfcb('0x19'))['db'];function respondWithStatusCode(_0xb2f601,_0x2268da){_0x2268da=_0x2268da||0xcc;return function(_0x4ba4f1){if(_0x4ba4f1){return _0xb2f601[_0xbfcb('0x1a')](_0x2268da);}return _0xb2f601['status'](_0x2268da)[_0xbfcb('0x1b')]();};}function respondWithResult(_0x1c52df,_0x44ad6c){_0x44ad6c=_0x44ad6c||0xc8;return function(_0x1047c4){if(_0x1047c4){return _0x1c52df[_0xbfcb('0x1c')](_0x44ad6c)[_0xbfcb('0x1d')](_0x1047c4);}};}function respondWithFilteredResult(_0x71304e,_0x2d314a){return function(_0x90ed8c){if(_0x90ed8c){var _0x339347=typeof _0x2d314a[_0xbfcb('0x1e')]===_0xbfcb('0x1f')&&typeof _0x2d314a[_0xbfcb('0x20')]===_0xbfcb('0x1f');var _0x318d07=_0x90ed8c[_0xbfcb('0x21')];var _0xba1d6=_0x339347?0x0:_0x2d314a[_0xbfcb('0x1e')];var _0x3404aa=_0x339347?_0x90ed8c[_0xbfcb('0x21')]:_0x2d314a[_0xbfcb('0x1e')]+_0x2d314a[_0xbfcb('0x20')];var _0x53c9e0;if(_0x3404aa>=_0x318d07){_0x3404aa=_0x318d07;_0x53c9e0=0xc8;}else{_0x53c9e0=0xce;}_0x71304e[_0xbfcb('0x1c')](_0x53c9e0);return _0x71304e[_0xbfcb('0x22')]('Content-Range',_0xba1d6+'-'+_0x3404aa+'/'+_0x318d07)[_0xbfcb('0x1d')](_0x90ed8c);}return null;};}function patchUpdates(_0x1a7225){return function(_0x48c3c8){try{jsonpatch['apply'](_0x48c3c8,_0x1a7225,!![]);}catch(_0x4199c5){return BPromise[_0xbfcb('0x23')](_0x4199c5);}return _0x48c3c8[_0xbfcb('0x24')]();};}function saveUpdates(_0x45661a,_0x1c5924){return function(_0x56c158){if(_0x56c158){return _0x56c158[_0xbfcb('0x25')](_0x45661a)[_0xbfcb('0x26')](function(_0x2d9288){return _0x2d9288;});}return null;};}function removeEntity(_0xd4d29,_0x1651e5){return function(_0x19616c){if(_0x19616c){return _0x19616c[_0xbfcb('0x27')]()[_0xbfcb('0x26')](function(){_0xd4d29[_0xbfcb('0x1c')](0xcc)[_0xbfcb('0x1b')]();});}};}function handleEntityNotFound(_0x1ca8c3,_0xf6dbb7){return function(_0x3ef71c){if(!_0x3ef71c){_0x1ca8c3[_0xbfcb('0x1a')](0x194);}return _0x3ef71c;};}function handleError(_0x3e954d,_0x2a1272){_0x2a1272=_0x2a1272||0x1f4;return function(_0x5cd703){logger[_0xbfcb('0x28')](_0x5cd703[_0xbfcb('0x29')]);if(_0x5cd703['name']){delete _0x5cd703[_0xbfcb('0x2a')];}_0x3e954d[_0xbfcb('0x1c')](_0x2a1272)[_0xbfcb('0x2b')](_0x5cd703);};}exports[_0xbfcb('0x2c')]=function(_0xf4b944,_0x3542e9){var _0x4069a7={},_0x1a5db2={},_0x434764={'count':0x0,'rows':[]};var _0x27606f=_['map'](db[_0xbfcb('0x2d')][_0xbfcb('0x2e')],function(_0x43c3c3){return{'name':_0x43c3c3[_0xbfcb('0x2f')],'type':_0x43c3c3[_0xbfcb('0x30')][_0xbfcb('0x31')]};});_0x1a5db2[_0xbfcb('0x32')]=_[_0xbfcb('0x33')](_0x27606f,_0xbfcb('0x2a'));_0x1a5db2['query']=_[_0xbfcb('0x34')](_0xf4b944[_0xbfcb('0x35')]);_0x1a5db2[_0xbfcb('0x36')]=_[_0xbfcb('0x37')](_0x1a5db2['model'],_0x1a5db2['query']);_0x4069a7[_0xbfcb('0x38')]=_[_0xbfcb('0x37')](_0x1a5db2[_0xbfcb('0x32')],qs[_0xbfcb('0x39')](_0xf4b944[_0xbfcb('0x35')][_0xbfcb('0x39')]));_0x4069a7[_0xbfcb('0x38')]=_0x4069a7['attributes']['length']?_0x4069a7['attributes']:_0x1a5db2[_0xbfcb('0x32')];if(!_0xf4b944['query'][_0xbfcb('0x3a')](_0xbfcb('0x3b'))){_0x4069a7['limit']=qs['limit'](_0xf4b944[_0xbfcb('0x35')][_0xbfcb('0x20')]);_0x4069a7[_0xbfcb('0x1e')]=qs[_0xbfcb('0x1e')](_0xf4b944['query'][_0xbfcb('0x1e')]);}_0x4069a7[_0xbfcb('0x3c')]=qs['sort'](_0xf4b944['query'][_0xbfcb('0x3d')]);_0x4069a7['where']=qs['filters'](_[_0xbfcb('0x3e')](_0xf4b944[_0xbfcb('0x35')],_0x1a5db2[_0xbfcb('0x36')]),_0x27606f);if(_0xf4b944[_0xbfcb('0x35')]['filter']){_0x4069a7[_0xbfcb('0x3f')]=_[_0xbfcb('0x40')](_0x4069a7[_0xbfcb('0x3f')],{'$or':_[_0xbfcb('0x33')](_0x27606f,function(_0x2289fd){if(_0x2289fd[_0xbfcb('0x30')]!=='VIRTUAL'){var _0x2fc01f={};_0x2fc01f[_0x2289fd['name']]={'$like':'%'+_0xf4b944[_0xbfcb('0x35')]['filter']+'%'};return _0x2fc01f;}})});}_0x4069a7=_[_0xbfcb('0x40')]({},_0x4069a7,_0xf4b944[_0xbfcb('0x41')]);var _0xe719cd={'where':_0x4069a7[_0xbfcb('0x3f')]};return db[_0xbfcb('0x2d')][_0xbfcb('0x21')](_0xe719cd)[_0xbfcb('0x26')](function(_0x149bd5){_0x434764[_0xbfcb('0x21')]=_0x149bd5;if(_0xf4b944[_0xbfcb('0x35')]['includeAll']){_0x4069a7[_0xbfcb('0x42')]=[{'all':!![]}];}return db[_0xbfcb('0x2d')]['findAll'](_0x4069a7);})[_0xbfcb('0x26')](function(_0x306ea4){_0x434764[_0xbfcb('0x43')]=_0x306ea4;return _0x434764;})[_0xbfcb('0x26')](respondWithFilteredResult(_0x3542e9,_0x4069a7))[_0xbfcb('0x44')](handleError(_0x3542e9,null));};exports[_0xbfcb('0x45')]=function(_0x500e7c,_0x96691c){var _0x10ffa0={'raw':!![],'where':{'id':_0x500e7c['params']['id']}},_0x10ea4f={};_0x10ea4f[_0xbfcb('0x32')]=_[_0xbfcb('0x34')](db[_0xbfcb('0x2d')]['rawAttributes']);_0x10ea4f[_0xbfcb('0x35')]=_[_0xbfcb('0x34')](_0x500e7c['query']);_0x10ea4f['filters']=_[_0xbfcb('0x37')](_0x10ea4f[_0xbfcb('0x32')],_0x10ea4f['query']);_0x10ffa0[_0xbfcb('0x38')]=_[_0xbfcb('0x37')](_0x10ea4f['model'],qs[_0xbfcb('0x39')](_0x500e7c[_0xbfcb('0x35')][_0xbfcb('0x39')]));_0x10ffa0[_0xbfcb('0x38')]=_0x10ffa0[_0xbfcb('0x38')][_0xbfcb('0x46')]?_0x10ffa0[_0xbfcb('0x38')]:_0x10ea4f[_0xbfcb('0x32')];if(_0x500e7c[_0xbfcb('0x35')][_0xbfcb('0x47')]){_0x10ffa0[_0xbfcb('0x42')]=[{'all':!![]}];}_0x10ffa0=_[_0xbfcb('0x40')]({},_0x10ffa0,_0x500e7c['options']);return db[_0xbfcb('0x2d')][_0xbfcb('0x48')](_0x10ffa0)[_0xbfcb('0x26')](handleEntityNotFound(_0x96691c,null))['then'](respondWithResult(_0x96691c,null))[_0xbfcb('0x44')](handleError(_0x96691c,null));};exports['create']=function(_0x4a3b40,_0x2dcfb3){return db[_0xbfcb('0x2d')][_0xbfcb('0x49')](_0x4a3b40['body'],{})[_0xbfcb('0x26')](respondWithResult(_0x2dcfb3,0xc9))['catch'](handleError(_0x2dcfb3,null));};exports['update']=function(_0x33725a,_0x588d32){if(_0x33725a[_0xbfcb('0x4a')]['id']){delete _0x33725a[_0xbfcb('0x4a')]['id'];}return db['MailQueueReport'][_0xbfcb('0x48')]({'where':{'id':_0x33725a['params']['id']}})[_0xbfcb('0x26')](handleEntityNotFound(_0x588d32,null))['then'](saveUpdates(_0x33725a[_0xbfcb('0x4a')],null))['then'](respondWithResult(_0x588d32,null))[_0xbfcb('0x44')](handleError(_0x588d32,null));};exports[_0xbfcb('0x27')]=function(_0x5efbe1,_0x131af7){return db['MailQueueReport']['find']({'where':{'id':_0x5efbe1[_0xbfcb('0x4b')]['id']}})[_0xbfcb('0x26')](handleEntityNotFound(_0x131af7,null))[_0xbfcb('0x26')](removeEntity(_0x131af7,null))['catch'](handleError(_0x131af7,null));};exports['describe']=function(_0x19dca9,_0x931bf){return db[_0xbfcb('0x2d')][_0xbfcb('0x4c')]()[_0xbfcb('0x26')](respondWithResult(_0x931bf,null))['catch'](handleError(_0x931bf,null));};
\ No newline at end of file
index bcd39ba..bee5aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa683=['report_mail_queue','uniqueid','lodash','../../config/logger','bluebird','request-promise','path','exports','MailQueueReport'];(function(_0x26df48,_0x22aa50){var _0x209047=function(_0x1d068b){while(--_0x1d068b){_0x26df48['push'](_0x26df48['shift']());}};_0x209047(++_0x22aa50);}(_0xa683,0xda));var _0x3a68=function(_0x5c17bf,_0x3c97e7){_0x5c17bf=_0x5c17bf-0x0;var _0x1781b2=_0xa683[_0x5c17bf];return _0x1781b2;};'use strict';var _=require(_0x3a68('0x0'));var util=require('util');var logger=require(_0x3a68('0x1'))('api');var moment=require('moment');var BPromise=require(_0x3a68('0x2'));var rp=require(_0x3a68('0x3'));var fs=require('fs');var path=require(_0x3a68('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailQueueReport.attributes');module[_0x3a68('0x5')]=function(_0x292546,_0x41dfdf){return _0x292546['define'](_0x3a68('0x6'),attributes,{'tableName':_0x3a68('0x7'),'paranoid':![],'indexes':[{'name':_0x3a68('0x8'),'fields':[_0x3a68('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x95c2=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid'];(function(_0x464a8e,_0x8e1f39){var _0xd87e6d=function(_0xb38078){while(--_0xb38078){_0x464a8e['push'](_0x464a8e['shift']());}};_0xd87e6d(++_0x8e1f39);}(_0x95c2,0x9a));var _0x295c=function(_0x2f51e6,_0x40e233){_0x2f51e6=_0x2f51e6-0x0;var _0x4007fa=_0x95c2[_0x2f51e6];return _0x4007fa;};'use strict';var _=require(_0x295c('0x0'));var util=require(_0x295c('0x1'));var logger=require('../../config/logger')(_0x295c('0x2'));var moment=require(_0x295c('0x3'));var BPromise=require(_0x295c('0x4'));var rp=require(_0x295c('0x5'));var fs=require('fs');var path=require(_0x295c('0x6'));var rimraf=require('rimraf');var config=require(_0x295c('0x7'));var attributes=require(_0x295c('0x8'));module[_0x295c('0x9')]=function(_0x492971,_0x3e65ef){return _0x492971[_0x295c('0xa')](_0x295c('0xb'),attributes,{'tableName':_0x295c('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x295c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 0cdeb9d..7ddd2e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x53785b,_0x14b386){var _0x2ae6da=function(_0x262d6b){while(--_0x262d6b){_0x53785b['push'](_0x53785b['shift']());}};_0x2ae6da(++_0x14b386);}(_0x2ef3,0xba));var _0x32ef=function(_0x128578,_0x19f2ce){_0x128578=_0x128578-0x0;var _0xd1fb4e=_0x2ef3[_0x128578];return _0xd1fb4e;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
+var _0x5f2f=['error','code','message','request\x20sent','result','catch','CreateMailQueueReport','MailQueueReport','create','body','options','raw','UpdateMailQueueReport','update','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailQueueReport,\x20%s,\x20%s','debug','stringify'];(function(_0x3c3fb1,_0x375b43){var _0x30d95e=function(_0x18aac7){while(--_0x18aac7){_0x3c3fb1['push'](_0x3c3fb1['shift']());}};_0x30d95e(++_0x375b43);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4d8134,_0x57e5ac){_0x4d8134=_0x4d8134-0x0;var _0x2f85e2=_0x5f2f[_0x4d8134];return _0x2f85e2;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}exports[_0xf5f2('0x17')]=function(_0x20fccd){var _0x28e097=this;return new Promise(function(_0x4ff59b,_0x3ee69){return db[_0xf5f2('0x18')][_0xf5f2('0x19')](_0x20fccd[_0xf5f2('0x1a')],{'raw':_0x20fccd['options']?_0x20fccd[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x47acfc){logger[_0xf5f2('0xd')](_0xf5f2('0x17'),_0x20fccd);logger['debug'](_0xf5f2('0x17'),_0x20fccd,JSON[_0xf5f2('0x10')](_0x47acfc));_0x4ff59b(_0x47acfc);})[_0xf5f2('0x16')](function(_0x39c024){logger[_0xf5f2('0x11')]('CreateMailQueueReport',_0x39c024[_0xf5f2('0x13')],_0x20fccd);_0x3ee69(_0x28e097[_0xf5f2('0x11')](0x1f4,_0x39c024[_0xf5f2('0x13')]));});});};exports[_0xf5f2('0x1d')]=function(_0x287ad5){var _0x5bdf4a=this;return new Promise(function(_0x529f07,_0x5f1124){return db[_0xf5f2('0x18')][_0xf5f2('0x1e')](_0x287ad5[_0xf5f2('0x1a')],{'raw':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')]['where']||null:null,'attributes':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x1f')]||null:null,'limit':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x20')]||null:null})['then'](function(_0x53cb96){logger[_0xf5f2('0xd')](_0xf5f2('0x1d'),_0x287ad5);logger[_0xf5f2('0xf')]('UpdateMailQueueReport',_0x287ad5,JSON['stringify'](_0x53cb96));_0x529f07(_0x53cb96);})[_0xf5f2('0x16')](function(_0x50b8a2){logger[_0xf5f2('0x11')](_0xf5f2('0x1d'),_0x50b8a2[_0xf5f2('0x13')],_0x287ad5);_0x5f1124(_0x5bdf4a['error'](0x1f4,_0x50b8a2['message']));});});};
\ No newline at end of file
index 3b36fe0..7f95446 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(_0x5ada35,_0x2a1af2){var _0x1e80ad=function(_0x5e7f4c){while(--_0x5e7f4c){_0x5ada35['push'](_0x5ada35['shift']());}};_0x1e80ad(++_0x2a1af2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x33080e,_0x1c600a){_0x33080e=_0x33080e-0x0;var _0x407395=_0xcb91[_0x33080e];return _0x407395;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x54e48d,_0x34ca98){var _0x10bc4b=function(_0x19b9c3){while(--_0x19b9c3){_0x54e48d['push'](_0x54e48d['shift']());}};_0x10bc4b(++_0x34ca98);}(_0x70e0,0x17b));var _0x070e=function(_0x2921b6,_0x3ac3e5){_0x2921b6=_0x2921b6-0x0;var _0x9e9068=_0x70e0[_0x2921b6];return _0x9e9068;};'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 18fa955..8362a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93ea=['STRING','BOOLEAN','INTEGER','exports'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x93ea,0x157));var _0xa93e=function(_0xc77819,_0x139fdc){_0xc77819=_0xc77819-0x0;var _0x1c9434=_0x93ea[_0xc77819];return _0x1c9434;};'use strict';var Sequelize=require('sequelize');module[_0xa93e('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xa93e('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xa93e('0x1')]},'password':{'type':Sequelize[_0xa93e('0x1')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0xa93e('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xa93e('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xa93e('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xa93e('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xfefa=['INBOX','INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfefa,0x14c));var _0xafef=function(_0x22e96d,_0x1ee97f){_0x22e96d=_0x22e96d-0x0;var _0x20bcd9=_0xfefa[_0x22e96d];return _0x20bcd9;};'use strict';var Sequelize=require(_0xafef('0x0'));module[_0xafef('0x1')]={'description':{'type':Sequelize[_0xafef('0x2')]},'host':{'type':Sequelize[_0xafef('0x2')]},'authentication':{'type':Sequelize[_0xafef('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0xafef('0x2')]},'password':{'type':Sequelize[_0xafef('0x2')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xafef('0x2')],'defaultValue':_0xafef('0x4')},'connTimeout':{'type':Sequelize[_0xafef('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xafef('0x5')],'defaultValue':0x5},'service':{'type':Sequelize[_0xafef('0x2')]},'modernAuthentication':{'type':Sequelize[_0xafef('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 05092ac..23f41bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x563f=['bluebird','request-promise','path','rimraf','./mailServerIn.attributes','exports','define','mail_servers_in','util'];(function(_0x5e51b5,_0x229df5){var _0x11e19e=function(_0x292a22){while(--_0x292a22){_0x5e51b5['push'](_0x5e51b5['shift']());}};_0x11e19e(++_0x229df5);}(_0x563f,0x1ee));var _0xf563=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x563f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xf563('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf563('0x1'));var rp=require(_0xf563('0x2'));var fs=require('fs');var path=require(_0xf563('0x3'));var rimraf=require(_0xf563('0x4'));var config=require('../../config/environment');var attributes=require(_0xf563('0x5'));module[_0xf563('0x6')]=function(_0x1b977b,_0x88dcf4){return _0x1b977b[_0xf563('0x7')]('MailServerIn',attributes,{'tableName':_0xf563('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc21c=['rimraf','../../config/environment','define','MailServerIn','mail_servers_in','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x244b18,_0x3e8f78){var _0xf3bf67=function(_0x9aedf8){while(--_0x9aedf8){_0x244b18['push'](_0x244b18['shift']());}};_0xf3bf67(++_0x3e8f78);}(_0xc21c,0x16d));var _0xcc21=function(_0x349a3c,_0x35a7a1){_0x349a3c=_0x349a3c-0x0;var _0x26600f=_0xc21c[_0x349a3c];return _0x26600f;};'use strict';var _=require(_0xcc21('0x0'));var util=require(_0xcc21('0x1'));var logger=require(_0xcc21('0x2'))('api');var moment=require(_0xcc21('0x3'));var BPromise=require(_0xcc21('0x4'));var rp=require(_0xcc21('0x5'));var fs=require('fs');var path=require(_0xcc21('0x6'));var rimraf=require(_0xcc21('0x7'));var config=require(_0xcc21('0x8'));var attributes=require('./mailServerIn.attributes');module['exports']=function(_0x96471d,_0x40cdd6){return _0x96471d[_0xcc21('0x9')](_0xcc21('0xa'),attributes,{'tableName':_0xcc21('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bc203b..5d822e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf76=['limit','include','map','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','MailServerIn,\x20%s,\x20%s','message','info','result','GetMailServerIn','MailServerIn','options','raw'];(function(_0x465d4d,_0x2ebb4a){var _0x248ed1=function(_0x4c2e1c){while(--_0x4c2e1c){_0x465d4d['push'](_0x465d4d['shift']());}};_0x248ed1(++_0x2ebb4a);}(_0xcf76,0x10d));var _0x6cf7=function(_0x47e42a,_0x3ac626){_0x47e42a=_0x47e42a-0x0;var _0x5364b5=_0xcf76[_0x47e42a];return _0x5364b5;};'use strict';var _=require(_0x6cf7('0x0'));var util=require('util');var moment=require(_0x6cf7('0x1'));var BPromise=require(_0x6cf7('0x2'));var rs=require(_0x6cf7('0x3'));var fs=require('fs');var Redis=require(_0x6cf7('0x4'));var db=require(_0x6cf7('0x5'))['db'];var utils=require(_0x6cf7('0x6'));var logger=require(_0x6cf7('0x7'))(_0x6cf7('0x8'));var config=require(_0x6cf7('0x9'));var jayson=require(_0x6cf7('0xa'));var client=jayson['client'][_0x6cf7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x198a49,_0xb76b72,_0x5ea5c7){return new BPromise(function(_0xcb4683,_0x333f86){return client[_0x6cf7('0xc')](_0x198a49,_0x5ea5c7)[_0x6cf7('0xd')](function(_0x44ad37){logger['info']('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x6cf7('0xe'));logger[_0x6cf7('0xf')](_0x6cf7('0x10'),_0xb76b72,_0x6cf7('0xe'),JSON[_0x6cf7('0x11')](_0x44ad37));if(_0x44ad37['error']){if(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x13')]===0x1f4){logger['error'](_0x6cf7('0x14'),_0xb76b72,_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);return _0x333f86(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);}logger[_0x6cf7('0x12')]('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);return _0xcb4683(_0x44ad37[_0x6cf7('0x12')][_0x6cf7('0x15')]);}else{logger[_0x6cf7('0x16')]('MailServerIn,\x20%s,\x20%s',_0xb76b72,_0x6cf7('0xe'));_0xcb4683(_0x44ad37[_0x6cf7('0x17')][_0x6cf7('0x15')]);}})['catch'](function(_0x2ae2d1){logger['error'](_0x6cf7('0x14'),_0xb76b72,_0x2ae2d1);_0x333f86(_0x2ae2d1);});});}exports[_0x6cf7('0x18')]=function(_0xd6b9c0){var _0x3b4a54=this;return new Promise(function(_0x344cfc,_0x598bfb){return db[_0x6cf7('0x19')]['findAll']({'raw':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0['options'][_0x6cf7('0x1b')]===undefined?!![]:![]:!![],'where':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0[_0x6cf7('0x1a')]['where']||null:null,'attributes':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0['options']['attributes']||null:null,'limit':_0xd6b9c0['options']?_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1c')]||null:null,'include':_0xd6b9c0[_0x6cf7('0x1a')]?_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0xd6b9c0[_0x6cf7('0x1a')][_0x6cf7('0x1d')],function(_0x696c30){return{'model':db[_0x696c30[_0x6cf7('0x1f')]],'as':_0x696c30['as'],'attributes':_0x696c30[_0x6cf7('0x20')],'include':_0x696c30[_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0x696c30[_0x6cf7('0x1d')],function(_0x29c840){return{'model':db[_0x29c840['model']],'as':_0x29c840['as'],'attributes':_0x29c840['attributes'],'include':_0x29c840[_0x6cf7('0x1d')]?_[_0x6cf7('0x1e')](_0x29c840['include'],function(_0x2f0507){return{'model':db[_0x2f0507[_0x6cf7('0x1f')]],'as':_0x2f0507['as'],'attributes':_0x2f0507[_0x6cf7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6cf7('0xd')](function(_0x2cfc1b){logger[_0x6cf7('0x16')](_0x6cf7('0x18'),_0xd6b9c0);logger[_0x6cf7('0xf')]('GetMailServerIn',_0xd6b9c0,JSON['stringify'](_0x2cfc1b));_0x344cfc(_0x2cfc1b);})['catch'](function(_0x9256f8){logger[_0x6cf7('0x12')](_0x6cf7('0x18'),_0x9256f8[_0x6cf7('0x15')],_0xd6b9c0);_0x598bfb(_0x3b4a54[_0x6cf7('0x12')](0x1f4,_0x9256f8[_0x6cf7('0x15')]));});});};
\ No newline at end of file
+var _0x44a3=['limit','include','map','model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','message','MailServerIn,\x20%s,\x20%s','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes'];(function(_0x51b05,_0x20cbb6){var _0x1a5246=function(_0x14fbe3){while(--_0x14fbe3){_0x51b05['push'](_0x51b05['shift']());}};_0x1a5246(++_0x20cbb6);}(_0x44a3,0x1a9));var _0x344a=function(_0x384447,_0x41669a){_0x384447=_0x384447-0x0;var _0x3810db=_0x44a3[_0x384447];return _0x3810db;};'use strict';var _=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var moment=require(_0x344a('0x2'));var BPromise=require(_0x344a('0x3'));var rs=require(_0x344a('0x4'));var fs=require('fs');var Redis=require(_0x344a('0x5'));var db=require(_0x344a('0x6'))['db'];var utils=require(_0x344a('0x7'));var logger=require('../../config/logger')(_0x344a('0x8'));var config=require(_0x344a('0x9'));var jayson=require(_0x344a('0xa'));var client=jayson[_0x344a('0xb')][_0x344a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x504bd1,_0x553d97,_0x55ddca){return new BPromise(function(_0x484661,_0x475dab){return client[_0x344a('0xd')](_0x504bd1,_0x55ddca)[_0x344a('0xe')](function(_0x233ca1){logger[_0x344a('0xf')]('MailServerIn,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'));logger[_0x344a('0x11')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'),JSON['stringify'](_0x233ca1));if(_0x233ca1[_0x344a('0x12')]){if(_0x233ca1['error'][_0x344a('0x13')]===0x1f4){logger[_0x344a('0x12')]('MailServerIn,\x20%s,\x20%s',_0x553d97,_0x233ca1['error'][_0x344a('0x14')]);return _0x475dab(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}logger[_0x344a('0x12')](_0x344a('0x15'),_0x553d97,_0x233ca1[_0x344a('0x12')]['message']);return _0x484661(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}else{logger[_0x344a('0xf')](_0x344a('0x15'),_0x553d97,'request\x20sent');_0x484661(_0x233ca1['result'][_0x344a('0x14')]);}})[_0x344a('0x16')](function(_0x36227e){logger[_0x344a('0x12')]('MailServerIn,\x20%s,\x20%s',_0x553d97,_0x36227e);_0x475dab(_0x36227e);});});}exports[_0x344a('0x17')]=function(_0x277c06){var _0x49b55f=this;return new Promise(function(_0x9fe854,_0x274016){return db[_0x344a('0x18')][_0x344a('0x19')]({'raw':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1b')]===undefined?!![]:![]:!![],'where':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1c')]||null:null,'attributes':_0x277c06['options']?_0x277c06[_0x344a('0x1a')][_0x344a('0x1d')]||null:null,'limit':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1e')]||null:null,'include':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')]?_[_0x344a('0x20')](_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')],function(_0x3b2ab9){return{'model':db[_0x3b2ab9[_0x344a('0x21')]],'as':_0x3b2ab9['as'],'attributes':_0x3b2ab9[_0x344a('0x1d')],'include':_0x3b2ab9['include']?_[_0x344a('0x20')](_0x3b2ab9['include'],function(_0x2a5e49){return{'model':db[_0x2a5e49['model']],'as':_0x2a5e49['as'],'attributes':_0x2a5e49[_0x344a('0x1d')],'include':_0x2a5e49[_0x344a('0x1f')]?_[_0x344a('0x20')](_0x2a5e49[_0x344a('0x1f')],function(_0x26f059){return{'model':db[_0x26f059[_0x344a('0x21')]],'as':_0x26f059['as'],'attributes':_0x26f059[_0x344a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x344a('0xe')](function(_0x4f2499){logger[_0x344a('0xf')](_0x344a('0x17'),_0x277c06);logger[_0x344a('0x11')](_0x344a('0x17'),_0x277c06,JSON[_0x344a('0x22')](_0x4f2499));_0x9fe854(_0x4f2499);})[_0x344a('0x16')](function(_0x5b877d){logger[_0x344a('0x12')]('GetMailServerIn',_0x5b877d['message'],_0x277c06);_0x274016(_0x49b55f[_0x344a('0x12')](0x1f4,_0x5b877d[_0x344a('0x14')]));});});};
\ No newline at end of file
index 2a0fa9f..4b99344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x7a54,0x106));var _0x47a5=function(_0x55320b,_0x3aca91){_0x55320b=_0x55320b-0x0;var _0x331ad2=_0x7a54[_0x55320b];return _0x331ad2;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_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('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 5765a60..370b656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['exports','STRING','BOOLEAN'];(function(_0x2fe292,_0x3c1b6f){var _0x4b5e9e=function(_0xa6ee4){while(--_0xa6ee4){_0x2fe292['push'](_0x2fe292['shift']());}};_0x4b5e9e(++_0x3c1b6f);}(_0xbee3,0xd5));var _0x3bee=function(_0x2d3b84,_0x160ed0){_0x2d3b84=_0x2d3b84-0x0;var _0x10ad44=_0xbee3[_0x2d3b84];return _0x10ad44;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x3bee('0x1')]},'pass':{'type':Sequelize[_0x3bee('0x1')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':![]},'service':{'type':Sequelize[_0x3bee('0x1')]},'authentication':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xa478=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x2e1592,_0x17f1c2){var _0xe26434=function(_0x4885fc){while(--_0x4885fc){_0x2e1592['push'](_0x2e1592['shift']());}};_0xe26434(++_0x17f1c2);}(_0xa478,0x136));var _0x8a47=function(_0x2ef8c1,_0x2f72f4){_0x2ef8c1=_0x2ef8c1-0x0;var _0x288305=_0xa478[_0x2ef8c1];return _0x288305;};'use strict';var Sequelize=require(_0x8a47('0x0'));module[_0x8a47('0x1')]={'description':{'type':Sequelize[_0x8a47('0x2')]},'host':{'type':Sequelize[_0x8a47('0x2')]},'user':{'type':Sequelize[_0x8a47('0x2')]},'pass':{'type':Sequelize[_0x8a47('0x2')]},'port':{'type':Sequelize[_0x8a47('0x3')]},'secure':{'type':Sequelize[_0x8a47('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x8a47('0x2')]},'authentication':{'type':Sequelize[_0x8a47('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x8a47('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 8165783..8e3b9ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52de=['../../config/license/util','../../mysqldb','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','status','name','index','map','MailServerOut','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x27687e,_0x441d16){var _0x560d4c=function(_0x43a52b){while(--_0x43a52b){_0x27687e['push'](_0x27687e['shift']());}};_0x560d4c(++_0x441d16);}(_0x52de,0x132));var _0xe52d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x52de[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe52d('0x0'));var rimraf=require(_0xe52d('0x1'));var zipdir=require(_0xe52d('0x2'));var jsonpatch=require(_0xe52d('0x3'));var rp=require(_0xe52d('0x4'));var moment=require('moment');var BPromise=require(_0xe52d('0x5'));var Mustache=require(_0xe52d('0x6'));var util=require(_0xe52d('0x7'));var path=require(_0xe52d('0x8'));var sox=require(_0xe52d('0x9'));var csv=require(_0xe52d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe52d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe52d('0xa'));var querystring=require(_0xe52d('0xc'));var Papa=require(_0xe52d('0xd'));var Redis=require(_0xe52d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe52d('0xf'));var as=require(_0xe52d('0x10'));var hardwareService=require(_0xe52d('0x11'));var logger=require('../../config/logger')(_0xe52d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe52d('0x13'));var db=require(_0xe52d('0x14'))['db'];function respondWithStatusCode(_0x47d002,_0x46f5cf){_0x46f5cf=_0x46f5cf||0xcc;return function(_0x2c8d27){if(_0x2c8d27){return _0x47d002['sendStatus'](_0x46f5cf);}return _0x47d002['status'](_0x46f5cf)['end']();};}function respondWithResult(_0x44ddaa,_0x30a7d1){_0x30a7d1=_0x30a7d1||0xc8;return function(_0x191ec8){if(_0x191ec8){return _0x44ddaa['status'](_0x30a7d1)[_0xe52d('0x15')](_0x191ec8);}};}function respondWithFilteredResult(_0x521a02,_0x216c79){return function(_0x5f20be){if(_0x5f20be){var _0x39f1fa=typeof _0x216c79[_0xe52d('0x16')]===_0xe52d('0x17')&&typeof _0x216c79[_0xe52d('0x18')]===_0xe52d('0x17');var _0xfc8d44=_0x5f20be['count'];var _0x3e1915=_0x39f1fa?0x0:_0x216c79['offset'];var _0x357c1b=_0x39f1fa?_0x5f20be[_0xe52d('0x19')]:_0x216c79[_0xe52d('0x16')]+_0x216c79[_0xe52d('0x18')];var _0x45e435;if(_0x357c1b>=_0xfc8d44){_0x357c1b=_0xfc8d44;_0x45e435=0xc8;}else{_0x45e435=0xce;}_0x521a02['status'](_0x45e435);return _0x521a02[_0xe52d('0x1a')](_0xe52d('0x1b'),_0x3e1915+'-'+_0x357c1b+'/'+_0xfc8d44)[_0xe52d('0x15')](_0x5f20be);}return null;};}function patchUpdates(_0x4df4ca){return function(_0x2218bb){try{jsonpatch[_0xe52d('0x1c')](_0x2218bb,_0x4df4ca,!![]);}catch(_0x388c5d){return BPromise[_0xe52d('0x1d')](_0x388c5d);}return _0x2218bb[_0xe52d('0x1e')]();};}function saveUpdates(_0x118153,_0x3a5b18){return function(_0xbce816){if(_0xbce816){return _0xbce816['update'](_0x118153)[_0xe52d('0x1f')](function(_0x3024a6){return _0x3024a6;});}return null;};}function removeEntity(_0x57e4c8,_0x3c3ca5){return function(_0x49746f){if(_0x49746f){return _0x49746f['destroy']()[_0xe52d('0x1f')](function(){_0x57e4c8[_0xe52d('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59f7d5,_0x4aa2f5){return function(_0x118155){if(!_0x118155){_0x59f7d5['sendStatus'](0x194);}return _0x118155;};}function handleError(_0x2508b3,_0x560793){_0x560793=_0x560793||0x1f4;return function(_0x54bfa0){logger['error'](_0x54bfa0['stack']);if(_0x54bfa0[_0xe52d('0x21')]){delete _0x54bfa0[_0xe52d('0x21')];}_0x2508b3[_0xe52d('0x20')](_0x560793)['send'](_0x54bfa0);};}exports[_0xe52d('0x22')]=function(_0x10c8e8,_0x3298a6){var _0x14d5f9={},_0x437a94={},_0x4f851d={'count':0x0,'rows':[]};var _0xc5d503=_[_0xe52d('0x23')](db[_0xe52d('0x24')][_0xe52d('0x25')],function(_0x1b027c){return{'name':_0x1b027c['fieldName'],'type':_0x1b027c['type'][_0xe52d('0x26')]};});_0x437a94['model']=_[_0xe52d('0x23')](_0xc5d503,_0xe52d('0x21'));_0x437a94[_0xe52d('0x27')]=_[_0xe52d('0x28')](_0x10c8e8[_0xe52d('0x27')]);_0x437a94[_0xe52d('0x29')]=_[_0xe52d('0x2a')](_0x437a94[_0xe52d('0x2b')],_0x437a94[_0xe52d('0x27')]);_0x14d5f9['attributes']=_['intersection'](_0x437a94[_0xe52d('0x2b')],qs[_0xe52d('0x2c')](_0x10c8e8['query'][_0xe52d('0x2c')]));_0x14d5f9['attributes']=_0x14d5f9[_0xe52d('0x2d')][_0xe52d('0x2e')]?_0x14d5f9['attributes']:_0x437a94[_0xe52d('0x2b')];if(!_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x2f')]('nolimit')){_0x14d5f9[_0xe52d('0x18')]=qs[_0xe52d('0x18')](_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x18')]);_0x14d5f9[_0xe52d('0x16')]=qs[_0xe52d('0x16')](_0x10c8e8[_0xe52d('0x27')]['offset']);}_0x14d5f9['order']=qs['sort'](_0x10c8e8[_0xe52d('0x27')]['sort']);_0x14d5f9[_0xe52d('0x30')]=qs[_0xe52d('0x29')](_[_0xe52d('0x31')](_0x10c8e8[_0xe52d('0x27')],_0x437a94[_0xe52d('0x29')]),_0xc5d503);if(_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x32')]){_0x14d5f9[_0xe52d('0x30')]=_['merge'](_0x14d5f9[_0xe52d('0x30')],{'$or':_['map'](_0xc5d503,function(_0x542c9c){if(_0x542c9c['type']!==_0xe52d('0x33')){var _0x1a05b9={};_0x1a05b9[_0x542c9c[_0xe52d('0x21')]]={'$like':'%'+_0x10c8e8['query'][_0xe52d('0x32')]+'%'};return _0x1a05b9;}})});}_0x14d5f9=_[_0xe52d('0x34')]({},_0x14d5f9,_0x10c8e8[_0xe52d('0x35')]);var _0x588119={'where':_0x14d5f9[_0xe52d('0x30')]};return db[_0xe52d('0x24')][_0xe52d('0x19')](_0x588119)[_0xe52d('0x1f')](function(_0x45be3c){_0x4f851d[_0xe52d('0x19')]=_0x45be3c;if(_0x10c8e8[_0xe52d('0x27')][_0xe52d('0x36')]){_0x14d5f9[_0xe52d('0x37')]=[{'all':!![]}];}return db['MailServerOut'][_0xe52d('0x38')](_0x14d5f9);})[_0xe52d('0x1f')](function(_0x526f5a){_0x4f851d[_0xe52d('0x39')]=_0x526f5a;return _0x4f851d;})[_0xe52d('0x1f')](respondWithFilteredResult(_0x3298a6,_0x14d5f9))[_0xe52d('0x3a')](handleError(_0x3298a6,null));};exports[_0xe52d('0x3b')]=function(_0x2c7982,_0x21fe9e){var _0x1efac1={'raw':!![],'where':{'id':_0x2c7982[_0xe52d('0x3c')]['id']}},_0x1ce8c3={};_0x1ce8c3['model']=_[_0xe52d('0x28')](db[_0xe52d('0x24')][_0xe52d('0x25')]);_0x1ce8c3[_0xe52d('0x27')]=_['keys'](_0x2c7982[_0xe52d('0x27')]);_0x1ce8c3['filters']=_[_0xe52d('0x2a')](_0x1ce8c3['model'],_0x1ce8c3['query']);_0x1efac1[_0xe52d('0x2d')]=_[_0xe52d('0x2a')](_0x1ce8c3[_0xe52d('0x2b')],qs[_0xe52d('0x2c')](_0x2c7982['query'][_0xe52d('0x2c')]));_0x1efac1[_0xe52d('0x2d')]=_0x1efac1[_0xe52d('0x2d')]['length']?_0x1efac1[_0xe52d('0x2d')]:_0x1ce8c3[_0xe52d('0x2b')];if(_0x2c7982['query']['includeAll']){_0x1efac1[_0xe52d('0x37')]=[{'all':!![]}];}_0x1efac1=_['merge']({},_0x1efac1,_0x2c7982['options']);return db[_0xe52d('0x24')][_0xe52d('0x3d')](_0x1efac1)[_0xe52d('0x1f')](handleEntityNotFound(_0x21fe9e,null))[_0xe52d('0x1f')](respondWithResult(_0x21fe9e,null))[_0xe52d('0x3a')](handleError(_0x21fe9e,null));};exports[_0xe52d('0x3e')]=function(_0x369f48,_0x1e4b85){return db[_0xe52d('0x24')][_0xe52d('0x3e')](_0x369f48[_0xe52d('0x3f')],{})[_0xe52d('0x1f')](respondWithResult(_0x1e4b85,0xc9))[_0xe52d('0x3a')](handleError(_0x1e4b85,null));};exports[_0xe52d('0x40')]=function(_0x16a0a1,_0x4d2c6d){if(_0x16a0a1['body']['id']){delete _0x16a0a1[_0xe52d('0x3f')]['id'];}return db['MailServerOut'][_0xe52d('0x3d')]({'where':{'id':_0x16a0a1['params']['id']}})[_0xe52d('0x1f')](handleEntityNotFound(_0x4d2c6d,null))[_0xe52d('0x1f')](saveUpdates(_0x16a0a1[_0xe52d('0x3f')],null))[_0xe52d('0x1f')](respondWithResult(_0x4d2c6d,null))['catch'](handleError(_0x4d2c6d,null));};exports['destroy']=function(_0x28aea8,_0x42b74b){return db[_0xe52d('0x24')][_0xe52d('0x3d')]({'where':{'id':_0x28aea8[_0xe52d('0x3c')]['id']}})['then'](handleEntityNotFound(_0x42b74b,null))[_0xe52d('0x1f')](removeEntity(_0x42b74b,null))[_0xe52d('0x3a')](handleError(_0x42b74b,null));};
\ No newline at end of file
+var _0xbbb6=['name','send','index','map','MailServerOut','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','rawAttributes','include','create','body','update','find','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','end'];(function(_0x9bca53,_0x59b4f8){var _0x3894bc=function(_0x1ae67d){while(--_0x1ae67d){_0x9bca53['push'](_0x9bca53['shift']());}};_0x3894bc(++_0x59b4f8);}(_0xbbb6,0x177));var _0x6bbb=function(_0x4bf4b0,_0xbdf90d){_0x4bf4b0=_0x4bf4b0-0x0;var _0x3b4c25=_0xbbb6[_0x4bf4b0];return _0x3b4c25;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6bbb('0x0'));var jsonpatch=require(_0x6bbb('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6bbb('0x2'));var Mustache=require(_0x6bbb('0x3'));var util=require(_0x6bbb('0x4'));var path=require(_0x6bbb('0x5'));var sox=require(_0x6bbb('0x6'));var csv=require(_0x6bbb('0x7'));var ejs=require(_0x6bbb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6bbb('0x9'));var squel=require(_0x6bbb('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6bbb('0x7'));var querystring=require(_0x6bbb('0xb'));var Papa=require(_0x6bbb('0xc'));var Redis=require(_0x6bbb('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x6bbb('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6bbb('0xf'));var logger=require(_0x6bbb('0x10'))('api');var utils=require(_0x6bbb('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x6bbb('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5f3b02,_0x3dee53){_0x3dee53=_0x3dee53||0xcc;return function(_0x36e34c){if(_0x36e34c){return _0x5f3b02[_0x6bbb('0x13')](_0x3dee53);}return _0x5f3b02[_0x6bbb('0x14')](_0x3dee53)['end']();};}function respondWithResult(_0x26626b,_0x21e84e){_0x21e84e=_0x21e84e||0xc8;return function(_0x1ee582){if(_0x1ee582){return _0x26626b['status'](_0x21e84e)[_0x6bbb('0x15')](_0x1ee582);}};}function respondWithFilteredResult(_0x3ee29a,_0x38eeb9){return function(_0x24c11a){if(_0x24c11a){var _0x1f4980=typeof _0x38eeb9[_0x6bbb('0x16')]===_0x6bbb('0x17')&&typeof _0x38eeb9[_0x6bbb('0x18')]===_0x6bbb('0x17');var _0x5146c2=_0x24c11a[_0x6bbb('0x19')];var _0x16dac4=_0x1f4980?0x0:_0x38eeb9[_0x6bbb('0x16')];var _0x590cdf=_0x1f4980?_0x24c11a['count']:_0x38eeb9[_0x6bbb('0x16')]+_0x38eeb9[_0x6bbb('0x18')];var _0x59c1ce;if(_0x590cdf>=_0x5146c2){_0x590cdf=_0x5146c2;_0x59c1ce=0xc8;}else{_0x59c1ce=0xce;}_0x3ee29a[_0x6bbb('0x14')](_0x59c1ce);return _0x3ee29a[_0x6bbb('0x1a')](_0x6bbb('0x1b'),_0x16dac4+'-'+_0x590cdf+'/'+_0x5146c2)[_0x6bbb('0x15')](_0x24c11a);}return null;};}function patchUpdates(_0x4fe144){return function(_0x419b76){try{jsonpatch['apply'](_0x419b76,_0x4fe144,!![]);}catch(_0x58b60f){return BPromise[_0x6bbb('0x1c')](_0x58b60f);}return _0x419b76[_0x6bbb('0x1d')]();};}function saveUpdates(_0x5149fc,_0x40f04d){return function(_0x235903){if(_0x235903){return _0x235903['update'](_0x5149fc)[_0x6bbb('0x1e')](function(_0x19fcb7){return _0x19fcb7;});}return null;};}function removeEntity(_0x1f54e0,_0x584dbd){return function(_0x380b5f){if(_0x380b5f){return _0x380b5f[_0x6bbb('0x1f')]()['then'](function(){_0x1f54e0['status'](0xcc)[_0x6bbb('0x20')]();});}};}function handleEntityNotFound(_0x78f7fd,_0x52872c){return function(_0x33fbb8){if(!_0x33fbb8){_0x78f7fd[_0x6bbb('0x13')](0x194);}return _0x33fbb8;};}function handleError(_0x443981,_0x261ae8){_0x261ae8=_0x261ae8||0x1f4;return function(_0x1a3874){logger['error'](_0x1a3874['stack']);if(_0x1a3874[_0x6bbb('0x21')]){delete _0x1a3874[_0x6bbb('0x21')];}_0x443981[_0x6bbb('0x14')](_0x261ae8)[_0x6bbb('0x22')](_0x1a3874);};}exports[_0x6bbb('0x23')]=function(_0x497ffa,_0x13a287){var _0x5e540f={},_0x3d1b79={},_0x46dd55={'count':0x0,'rows':[]};var _0x264086=_[_0x6bbb('0x24')](db[_0x6bbb('0x25')]['rawAttributes'],function(_0x1523a9){return{'name':_0x1523a9[_0x6bbb('0x26')],'type':_0x1523a9[_0x6bbb('0x27')][_0x6bbb('0x28')]};});_0x3d1b79[_0x6bbb('0x29')]=_[_0x6bbb('0x24')](_0x264086,_0x6bbb('0x21'));_0x3d1b79[_0x6bbb('0x2a')]=_['keys'](_0x497ffa['query']);_0x3d1b79[_0x6bbb('0x2b')]=_['intersection'](_0x3d1b79[_0x6bbb('0x29')],_0x3d1b79[_0x6bbb('0x2a')]);_0x5e540f['attributes']=_[_0x6bbb('0x2c')](_0x3d1b79[_0x6bbb('0x29')],qs[_0x6bbb('0x2d')](_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x2d')]));_0x5e540f[_0x6bbb('0x2e')]=_0x5e540f[_0x6bbb('0x2e')][_0x6bbb('0x2f')]?_0x5e540f[_0x6bbb('0x2e')]:_0x3d1b79[_0x6bbb('0x29')];if(!_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x30')]('nolimit')){_0x5e540f[_0x6bbb('0x18')]=qs['limit'](_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x18')]);_0x5e540f['offset']=qs[_0x6bbb('0x16')](_0x497ffa['query'][_0x6bbb('0x16')]);}_0x5e540f[_0x6bbb('0x31')]=qs[_0x6bbb('0x32')](_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x32')]);_0x5e540f[_0x6bbb('0x33')]=qs[_0x6bbb('0x2b')](_['pick'](_0x497ffa[_0x6bbb('0x2a')],_0x3d1b79['filters']),_0x264086);if(_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x34')]){_0x5e540f[_0x6bbb('0x33')]=_[_0x6bbb('0x35')](_0x5e540f[_0x6bbb('0x33')],{'$or':_['map'](_0x264086,function(_0x2b267c){if(_0x2b267c[_0x6bbb('0x27')]!==_0x6bbb('0x36')){var _0x455daa={};_0x455daa[_0x2b267c[_0x6bbb('0x21')]]={'$like':'%'+_0x497ffa[_0x6bbb('0x2a')]['filter']+'%'};return _0x455daa;}})});}_0x5e540f=_['merge']({},_0x5e540f,_0x497ffa[_0x6bbb('0x37')]);var _0x237952={'where':_0x5e540f[_0x6bbb('0x33')]};return db[_0x6bbb('0x25')][_0x6bbb('0x19')](_0x237952)[_0x6bbb('0x1e')](function(_0x4e5307){_0x46dd55[_0x6bbb('0x19')]=_0x4e5307;if(_0x497ffa[_0x6bbb('0x2a')][_0x6bbb('0x38')]){_0x5e540f['include']=[{'all':!![]}];}return db[_0x6bbb('0x25')]['findAll'](_0x5e540f);})['then'](function(_0x541d3f){_0x46dd55[_0x6bbb('0x39')]=_0x541d3f;return _0x46dd55;})[_0x6bbb('0x1e')](respondWithFilteredResult(_0x13a287,_0x5e540f))[_0x6bbb('0x3a')](handleError(_0x13a287,null));};exports[_0x6bbb('0x3b')]=function(_0x59577b,_0x498dfe){var _0x5f3109={'raw':!![],'where':{'id':_0x59577b[_0x6bbb('0x3c')]['id']}},_0x199091={};_0x199091[_0x6bbb('0x29')]=_[_0x6bbb('0x3d')](db['MailServerOut'][_0x6bbb('0x3e')]);_0x199091['query']=_['keys'](_0x59577b[_0x6bbb('0x2a')]);_0x199091['filters']=_[_0x6bbb('0x2c')](_0x199091['model'],_0x199091[_0x6bbb('0x2a')]);_0x5f3109[_0x6bbb('0x2e')]=_[_0x6bbb('0x2c')](_0x199091[_0x6bbb('0x29')],qs['fields'](_0x59577b[_0x6bbb('0x2a')][_0x6bbb('0x2d')]));_0x5f3109[_0x6bbb('0x2e')]=_0x5f3109[_0x6bbb('0x2e')][_0x6bbb('0x2f')]?_0x5f3109[_0x6bbb('0x2e')]:_0x199091[_0x6bbb('0x29')];if(_0x59577b[_0x6bbb('0x2a')][_0x6bbb('0x38')]){_0x5f3109[_0x6bbb('0x3f')]=[{'all':!![]}];}_0x5f3109=_['merge']({},_0x5f3109,_0x59577b[_0x6bbb('0x37')]);return db['MailServerOut']['find'](_0x5f3109)[_0x6bbb('0x1e')](handleEntityNotFound(_0x498dfe,null))['then'](respondWithResult(_0x498dfe,null))[_0x6bbb('0x3a')](handleError(_0x498dfe,null));};exports[_0x6bbb('0x40')]=function(_0x6fec55,_0xe085db){return db[_0x6bbb('0x25')][_0x6bbb('0x40')](_0x6fec55[_0x6bbb('0x41')],{})[_0x6bbb('0x1e')](respondWithResult(_0xe085db,0xc9))[_0x6bbb('0x3a')](handleError(_0xe085db,null));};exports[_0x6bbb('0x42')]=function(_0x4b8f03,_0xad253d){if(_0x4b8f03[_0x6bbb('0x41')]['id']){delete _0x4b8f03[_0x6bbb('0x41')]['id'];}return db[_0x6bbb('0x25')][_0x6bbb('0x43')]({'where':{'id':_0x4b8f03[_0x6bbb('0x3c')]['id']}})[_0x6bbb('0x1e')](handleEntityNotFound(_0xad253d,null))[_0x6bbb('0x1e')](saveUpdates(_0x4b8f03[_0x6bbb('0x41')],null))[_0x6bbb('0x1e')](respondWithResult(_0xad253d,null))[_0x6bbb('0x3a')](handleError(_0xad253d,null));};exports[_0x6bbb('0x1f')]=function(_0x146307,_0x356f68){return db[_0x6bbb('0x25')][_0x6bbb('0x43')]({'where':{'id':_0x146307[_0x6bbb('0x3c')]['id']}})[_0x6bbb('0x1e')](handleEntityNotFound(_0x356f68,null))[_0x6bbb('0x1e')](removeEntity(_0x356f68,null))[_0x6bbb('0x3a')](handleError(_0x356f68,null));};
\ No newline at end of file
index 0bd2b07..1ce142d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb902=['MailServerOut','mail_servers_out','lodash','api','bluebird','request-promise','path','./mailServerOut.attributes','exports','define'];(function(_0x41bdb7,_0x2d3c1c){var _0xa1e594=function(_0x4aa014){while(--_0x4aa014){_0x41bdb7['push'](_0x41bdb7['shift']());}};_0xa1e594(++_0x2d3c1c);}(_0xb902,0x192));var _0x2b90=function(_0x55afdd,_0x48a505){_0x55afdd=_0x55afdd-0x0;var _0x3e758a=_0xb902[_0x55afdd];return _0x3e758a;};'use strict';var _=require(_0x2b90('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2b90('0x1'));var moment=require('moment');var BPromise=require(_0x2b90('0x2'));var rp=require(_0x2b90('0x3'));var fs=require('fs');var path=require(_0x2b90('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2b90('0x5'));module[_0x2b90('0x6')]=function(_0x5b3c66,_0x408266){return _0x5b3c66[_0x2b90('0x7')](_0x2b90('0x8'),attributes,{'tableName':_0x2b90('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabfc=['path','./mailServerOut.attributes','exports','MailServerOut','mail_servers_out','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x695d83,_0x2d6ebf){var _0x37ffe4=function(_0x46a810){while(--_0x46a810){_0x695d83['push'](_0x695d83['shift']());}};_0x37ffe4(++_0x2d6ebf);}(_0xabfc,0x94));var _0xcabf=function(_0x398294,_0x5ceb9d){_0x398294=_0x398294-0x0;var _0x2a872d=_0xabfc[_0x398294];return _0x2a872d;};'use strict';var _=require('lodash');var util=require(_0xcabf('0x0'));var logger=require(_0xcabf('0x1'))(_0xcabf('0x2'));var moment=require(_0xcabf('0x3'));var BPromise=require(_0xcabf('0x4'));var rp=require(_0xcabf('0x5'));var fs=require('fs');var path=require(_0xcabf('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xcabf('0x7'));module[_0xcabf('0x8')]=function(_0x1c6bc4,_0x256c87){return _0x1c6bc4['define'](_0xcabf('0x9'),attributes,{'tableName':_0xcabf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d8d773..0374287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7a54,0x106));var _0x47a5=function(_0x47c46d,_0x2ca6b4){_0x47c46d=_0x47c46d-0x0;var _0x1efe49=_0x7a54[_0x47c46d];return _0x1efe49;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x2f072f,_0x258d2c){var _0x709e6e=function(_0x388ba0){while(--_0x388ba0){_0x2f072f['push'](_0x2f072f['shift']());}};_0x709e6e(++_0x258d2c);}(_0xdb28,0x106));var _0x8db2=function(_0x351bda,_0x31a441){_0x351bda=_0x351bda-0x0;var _0x4038d4=_0xdb28[_0x351bda];return _0x4038d4;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 26b8e7d..8e10597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c29=['put','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3c29,0xf5));var _0x93c2=function(_0x331a4b,_0x2b59d9){_0x331a4b=_0x331a4b-0x0;var _0x26bcca=_0x3c29[_0x331a4b];return _0x26bcca;};'use strict';var multer=require('multer');var util=require(_0x93c2('0x0'));var path=require(_0x93c2('0x1'));var timeout=require(_0x93c2('0x2'));var express=require(_0x93c2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x93c2('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x93c2('0x5'));var controller=require(_0x93c2('0x6'));router[_0x93c2('0x7')]('/',auth[_0x93c2('0x8')](),controller[_0x93c2('0x9')]);router['get'](_0x93c2('0xa'),auth[_0x93c2('0x8')](),controller[_0x93c2('0xb')]);router[_0x93c2('0x7')](_0x93c2('0xc'),auth[_0x93c2('0x8')](),controller[_0x93c2('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x93c2('0xe')]);router[_0x93c2('0xf')](_0x93c2('0xc'),auth[_0x93c2('0x8')](),controller[_0x93c2('0x10')]);router[_0x93c2('0x11')](_0x93c2('0xc'),auth['isAuthenticated'](),controller[_0x93c2('0x12')]);module[_0x93c2('0x13')]=router;
\ No newline at end of file
+var _0x75d9=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','/:id','post','update','delete','destroy','exports','multer','util','path'];(function(_0x29d623,_0x1a5c9c){var _0x242e59=function(_0x2c78ab){while(--_0x2c78ab){_0x29d623['push'](_0x29d623['shift']());}};_0x242e59(++_0x1a5c9c);}(_0x75d9,0x162));var _0x975d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x75d9[_0x42245d];return _0x4b211a;};'use strict';var multer=require(_0x975d('0x0'));var util=require(_0x975d('0x1'));var path=require(_0x975d('0x2'));var timeout=require(_0x975d('0x3'));var express=require(_0x975d('0x4'));var router=express[_0x975d('0x5')]();var fs_extra=require(_0x975d('0x6'));var auth=require(_0x975d('0x7'));var interaction=require(_0x975d('0x8'));var config=require(_0x975d('0x9'));var controller=require(_0x975d('0xa'));router[_0x975d('0xb')]('/',auth[_0x975d('0xc')](),controller[_0x975d('0xd')]);router['get'](_0x975d('0xe'),auth[_0x975d('0xc')](),controller['describe']);router[_0x975d('0xb')](_0x975d('0xf'),auth[_0x975d('0xc')](),controller['show']);router[_0x975d('0x10')]('/',auth[_0x975d('0xc')](),controller['create']);router['put'](_0x975d('0xf'),auth['isAuthenticated'](),controller[_0x975d('0x11')]);router[_0x975d('0x12')](_0x975d('0xf'),auth[_0x975d('0xc')](),controller[_0x975d('0x13')]);module[_0x975d('0x14')]=router;
\ No newline at end of file
index 6343587..8f14017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e24=['exports','STRING','name','sequelize'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x3e24,0x167));var _0x43e2=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0x3e24[_0x1780f8];return _0x33a410;};'use strict';var Sequelize=require(_0x43e2('0x0'));module[_0x43e2('0x1')]={'name':{'type':Sequelize[_0x43e2('0x2')],'unique':_0x43e2('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x43e2('0x2')]}};
\ No newline at end of file
+var _0xda19=['STRING','exports'];(function(_0x43dcdd,_0x580d07){var _0x7bcdbc=function(_0x34e721){while(--_0x34e721){_0x43dcdd['push'](_0x43dcdd['shift']());}};_0x7bcdbc(++_0x580d07);}(_0xda19,0xd5));var _0x9da1=function(_0x41811d,_0x367063){_0x41811d=_0x41811d-0x0;var _0x1a5ad2=_0xda19[_0x41811d];return _0x1a5ad2;};'use strict';var Sequelize=require('sequelize');module[_0x9da1('0x0')]={'name':{'type':Sequelize[_0x9da1('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9da1('0x1')]}};
\ No newline at end of file
index badce8f..f5c26ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ef=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','then','destroy','error','name','send','index','map','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','order','where','pick','type','VIRTUAL','filter','MailSubstatus','include','catch','show','includeAll','merge','create','body','update','find','params','describe','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x72ef,0x7b));var _0xf72e=function(_0x4eb2e8,_0x3c1389){_0x4eb2e8=_0x4eb2e8-0x0;var _0x1bdefd=_0x72ef[_0x4eb2e8];return _0x1bdefd;};'use strict';var emlformat=require(_0xf72e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf72e('0x1'));var rp=require('request-promise');var moment=require(_0xf72e('0x2'));var BPromise=require(_0xf72e('0x3'));var Mustache=require(_0xf72e('0x4'));var util=require(_0xf72e('0x5'));var path=require(_0xf72e('0x6'));var sox=require(_0xf72e('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf72e('0x8'));var _=require(_0xf72e('0x9'));var squel=require('squel');var crypto=require(_0xf72e('0xa'));var jsforce=require(_0xf72e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf72e('0xc'));var querystring=require(_0xf72e('0xd'));var Papa=require(_0xf72e('0xe'));var Redis=require('ioredis');var authService=require(_0xf72e('0xf'));var qs=require(_0xf72e('0x10'));var as=require(_0xf72e('0x11'));var hardwareService=require(_0xf72e('0x12'));var logger=require(_0xf72e('0x13'))(_0xf72e('0x14'));var utils=require(_0xf72e('0x15'));var config=require(_0xf72e('0x16'));var licenseUtil=require(_0xf72e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226db9,_0x1d5ec7){_0x1d5ec7=_0x1d5ec7||0xcc;return function(_0x45d9b5){if(_0x45d9b5){return _0x226db9[_0xf72e('0x18')](_0x1d5ec7);}return _0x226db9[_0xf72e('0x19')](_0x1d5ec7)[_0xf72e('0x1a')]();};}function respondWithResult(_0x56c77b,_0x16f215){_0x16f215=_0x16f215||0xc8;return function(_0x3ed30c){if(_0x3ed30c){return _0x56c77b['status'](_0x16f215)[_0xf72e('0x1b')](_0x3ed30c);}};}function respondWithFilteredResult(_0x2ddffe,_0x1a5d7e){return function(_0x18d2d1){if(_0x18d2d1){var _0x26d24f=typeof _0x1a5d7e[_0xf72e('0x1c')]==='undefined'&&typeof _0x1a5d7e['limit']===_0xf72e('0x1d');var _0x4f4a1e=_0x18d2d1[_0xf72e('0x1e')];var _0x524a72=_0x26d24f?0x0:_0x1a5d7e[_0xf72e('0x1c')];var _0x28cf87=_0x26d24f?_0x18d2d1[_0xf72e('0x1e')]:_0x1a5d7e['offset']+_0x1a5d7e[_0xf72e('0x1f')];var _0x5e3734;if(_0x28cf87>=_0x4f4a1e){_0x28cf87=_0x4f4a1e;_0x5e3734=0xc8;}else{_0x5e3734=0xce;}_0x2ddffe[_0xf72e('0x19')](_0x5e3734);return _0x2ddffe[_0xf72e('0x20')](_0xf72e('0x21'),_0x524a72+'-'+_0x28cf87+'/'+_0x4f4a1e)['json'](_0x18d2d1);}return null;};}function patchUpdates(_0x42e7f5){return function(_0x462d57){try{jsonpatch['apply'](_0x462d57,_0x42e7f5,!![]);}catch(_0x5b769a){return BPromise[_0xf72e('0x22')](_0x5b769a);}return _0x462d57['save']();};}function saveUpdates(_0x4e7905,_0x301bec){return function(_0x10d1b7){if(_0x10d1b7){return _0x10d1b7['update'](_0x4e7905)[_0xf72e('0x23')](function(_0x40c900){return _0x40c900;});}return null;};}function removeEntity(_0x5b4301,_0x2ff8b5){return function(_0x22254c){if(_0x22254c){return _0x22254c[_0xf72e('0x24')]()[_0xf72e('0x23')](function(){_0x5b4301[_0xf72e('0x19')](0xcc)[_0xf72e('0x1a')]();});}};}function handleEntityNotFound(_0x380aa8,_0x18422e){return function(_0x21c545){if(!_0x21c545){_0x380aa8[_0xf72e('0x18')](0x194);}return _0x21c545;};}function handleError(_0xe0faa8,_0x26d4c8){_0x26d4c8=_0x26d4c8||0x1f4;return function(_0x26b8ab){logger[_0xf72e('0x25')](_0x26b8ab['stack']);if(_0x26b8ab[_0xf72e('0x26')]){delete _0x26b8ab[_0xf72e('0x26')];}_0xe0faa8['status'](_0x26d4c8)[_0xf72e('0x27')](_0x26b8ab);};}exports[_0xf72e('0x28')]=function(_0x367440,_0x54fe89){var _0x42f3e5={},_0x425032={},_0x9e1c15={'count':0x0,'rows':[]};var _0x452047=_[_0xf72e('0x29')](db['MailSubstatus'][_0xf72e('0x2a')],function(_0x45586f){return{'name':_0x45586f['fieldName'],'type':_0x45586f['type'][_0xf72e('0x2b')]};});_0x425032['model']=_[_0xf72e('0x29')](_0x452047,_0xf72e('0x26'));_0x425032[_0xf72e('0x2c')]=_[_0xf72e('0x2d')](_0x367440['query']);_0x425032[_0xf72e('0x2e')]=_[_0xf72e('0x2f')](_0x425032[_0xf72e('0x30')],_0x425032[_0xf72e('0x2c')]);_0x42f3e5[_0xf72e('0x31')]=_[_0xf72e('0x2f')](_0x425032[_0xf72e('0x30')],qs[_0xf72e('0x32')](_0x367440[_0xf72e('0x2c')]['fields']));_0x42f3e5[_0xf72e('0x31')]=_0x42f3e5[_0xf72e('0x31')][_0xf72e('0x33')]?_0x42f3e5['attributes']:_0x425032[_0xf72e('0x30')];if(!_0x367440[_0xf72e('0x2c')]['hasOwnProperty']('nolimit')){_0x42f3e5[_0xf72e('0x1f')]=qs['limit'](_0x367440[_0xf72e('0x2c')][_0xf72e('0x1f')]);_0x42f3e5[_0xf72e('0x1c')]=qs[_0xf72e('0x1c')](_0x367440[_0xf72e('0x2c')][_0xf72e('0x1c')]);}_0x42f3e5[_0xf72e('0x34')]=qs['sort'](_0x367440[_0xf72e('0x2c')]['sort']);_0x42f3e5[_0xf72e('0x35')]=qs[_0xf72e('0x2e')](_[_0xf72e('0x36')](_0x367440[_0xf72e('0x2c')],_0x425032[_0xf72e('0x2e')]),_0x452047);if(_0x367440['query']['filter']){_0x42f3e5[_0xf72e('0x35')]=_['merge'](_0x42f3e5[_0xf72e('0x35')],{'$or':_[_0xf72e('0x29')](_0x452047,function(_0x433fe3){if(_0x433fe3[_0xf72e('0x37')]!==_0xf72e('0x38')){var _0x41a1c2={};_0x41a1c2[_0x433fe3[_0xf72e('0x26')]]={'$like':'%'+_0x367440[_0xf72e('0x2c')][_0xf72e('0x39')]+'%'};return _0x41a1c2;}})});}_0x42f3e5=_['merge']({},_0x42f3e5,_0x367440['options']);var _0x461892={'where':_0x42f3e5[_0xf72e('0x35')]};return db[_0xf72e('0x3a')][_0xf72e('0x1e')](_0x461892)['then'](function(_0xe222da){_0x9e1c15[_0xf72e('0x1e')]=_0xe222da;if(_0x367440[_0xf72e('0x2c')]['includeAll']){_0x42f3e5[_0xf72e('0x3b')]=[{'all':!![]}];}return db['MailSubstatus']['findAll'](_0x42f3e5);})[_0xf72e('0x23')](function(_0x340a21){_0x9e1c15['rows']=_0x340a21;return _0x9e1c15;})['then'](respondWithFilteredResult(_0x54fe89,_0x42f3e5))[_0xf72e('0x3c')](handleError(_0x54fe89,null));};exports[_0xf72e('0x3d')]=function(_0x396442,_0x34f1f3){var _0x238f86={'raw':!![],'where':{'id':_0x396442['params']['id']}},_0x22bc13={};_0x22bc13[_0xf72e('0x30')]=_[_0xf72e('0x2d')](db[_0xf72e('0x3a')][_0xf72e('0x2a')]);_0x22bc13[_0xf72e('0x2c')]=_[_0xf72e('0x2d')](_0x396442[_0xf72e('0x2c')]);_0x22bc13[_0xf72e('0x2e')]=_[_0xf72e('0x2f')](_0x22bc13[_0xf72e('0x30')],_0x22bc13[_0xf72e('0x2c')]);_0x238f86[_0xf72e('0x31')]=_[_0xf72e('0x2f')](_0x22bc13[_0xf72e('0x30')],qs['fields'](_0x396442[_0xf72e('0x2c')][_0xf72e('0x32')]));_0x238f86[_0xf72e('0x31')]=_0x238f86[_0xf72e('0x31')][_0xf72e('0x33')]?_0x238f86[_0xf72e('0x31')]:_0x22bc13[_0xf72e('0x30')];if(_0x396442[_0xf72e('0x2c')][_0xf72e('0x3e')]){_0x238f86[_0xf72e('0x3b')]=[{'all':!![]}];}_0x238f86=_[_0xf72e('0x3f')]({},_0x238f86,_0x396442['options']);return db[_0xf72e('0x3a')]['find'](_0x238f86)['then'](handleEntityNotFound(_0x34f1f3,null))[_0xf72e('0x23')](respondWithResult(_0x34f1f3,null))['catch'](handleError(_0x34f1f3,null));};exports[_0xf72e('0x40')]=function(_0x5a99df,_0x19924a){return db[_0xf72e('0x3a')]['create'](_0x5a99df[_0xf72e('0x41')],{})['then'](respondWithResult(_0x19924a,0xc9))[_0xf72e('0x3c')](handleError(_0x19924a,null));};exports[_0xf72e('0x42')]=function(_0x5d7130,_0x3b8bb0){if(_0x5d7130[_0xf72e('0x41')]['id']){delete _0x5d7130[_0xf72e('0x41')]['id'];}return db[_0xf72e('0x3a')][_0xf72e('0x43')]({'where':{'id':_0x5d7130[_0xf72e('0x44')]['id']}})[_0xf72e('0x23')](handleEntityNotFound(_0x3b8bb0,null))[_0xf72e('0x23')](saveUpdates(_0x5d7130[_0xf72e('0x41')],null))['then'](respondWithResult(_0x3b8bb0,null))[_0xf72e('0x3c')](handleError(_0x3b8bb0,null));};exports['destroy']=function(_0x10beed,_0x47ad8b){return db[_0xf72e('0x3a')][_0xf72e('0x43')]({'where':{'id':_0x10beed['params']['id']}})['then'](handleEntityNotFound(_0x47ad8b,null))[_0xf72e('0x23')](removeEntity(_0x47ad8b,null))['catch'](handleError(_0x47ad8b,null));};exports[_0xf72e('0x45')]=function(_0x8435f0,_0x89bd3b){return db['MailSubstatus']['describe']()[_0xf72e('0x23')](respondWithResult(_0x89bd3b,null))[_0xf72e('0x3c')](handleError(_0x89bd3b,null));};
\ No newline at end of file
+var _0x6186=['index','rawAttributes','fieldName','key','model','keys','filters','attributes','intersection','fields','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','MailSubstatus','includeAll','include','findAll','show','params','length','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','error','stack','name'];(function(_0x327b2f,_0x26bfca){var _0x505ff7=function(_0x4855a1){while(--_0x4855a1){_0x327b2f['push'](_0x327b2f['shift']());}};_0x505ff7(++_0x26bfca);}(_0x6186,0x1f0));var _0x6618=function(_0x11deef,_0x34bbdb){_0x11deef=_0x11deef-0x0;var _0xe9ba85=_0x6186[_0x11deef];return _0xe9ba85;};'use strict';var emlformat=require(_0x6618('0x0'));var rimraf=require(_0x6618('0x1'));var zipdir=require(_0x6618('0x2'));var jsonpatch=require(_0x6618('0x3'));var rp=require(_0x6618('0x4'));var moment=require(_0x6618('0x5'));var BPromise=require(_0x6618('0x6'));var Mustache=require(_0x6618('0x7'));var util=require(_0x6618('0x8'));var path=require('path');var sox=require(_0x6618('0x9'));var csv=require('to-csv');var ejs=require(_0x6618('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6618('0xb'));var squel=require(_0x6618('0xc'));var crypto=require(_0x6618('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6618('0xe'));var toCsv=require(_0x6618('0xf'));var querystring=require(_0x6618('0x10'));var Papa=require(_0x6618('0x11'));var Redis=require('ioredis');var authService=require(_0x6618('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6618('0x13'));var hardwareService=require(_0x6618('0x14'));var logger=require(_0x6618('0x15'))(_0x6618('0x16'));var utils=require(_0x6618('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x6618('0x18'));var db=require(_0x6618('0x19'))['db'];function respondWithStatusCode(_0x431c14,_0x39a834){_0x39a834=_0x39a834||0xcc;return function(_0x5dd455){if(_0x5dd455){return _0x431c14[_0x6618('0x1a')](_0x39a834);}return _0x431c14['status'](_0x39a834)[_0x6618('0x1b')]();};}function respondWithResult(_0x577bba,_0x3f4f0a){_0x3f4f0a=_0x3f4f0a||0xc8;return function(_0x27e6eb){if(_0x27e6eb){return _0x577bba[_0x6618('0x1c')](_0x3f4f0a)['json'](_0x27e6eb);}};}function respondWithFilteredResult(_0x3f1a18,_0x3641f4){return function(_0x4df77c){if(_0x4df77c){var _0x1bab6f=typeof _0x3641f4[_0x6618('0x1d')]===_0x6618('0x1e')&&typeof _0x3641f4[_0x6618('0x1f')]==='undefined';var _0x2a5ecb=_0x4df77c[_0x6618('0x20')];var _0x9bcb74=_0x1bab6f?0x0:_0x3641f4[_0x6618('0x1d')];var _0x588775=_0x1bab6f?_0x4df77c[_0x6618('0x20')]:_0x3641f4[_0x6618('0x1d')]+_0x3641f4['limit'];var _0x1610a3;if(_0x588775>=_0x2a5ecb){_0x588775=_0x2a5ecb;_0x1610a3=0xc8;}else{_0x1610a3=0xce;}_0x3f1a18['status'](_0x1610a3);return _0x3f1a18['set'](_0x6618('0x21'),_0x9bcb74+'-'+_0x588775+'/'+_0x2a5ecb)[_0x6618('0x22')](_0x4df77c);}return null;};}function patchUpdates(_0x2f6cf1){return function(_0xa1dc12){try{jsonpatch[_0x6618('0x23')](_0xa1dc12,_0x2f6cf1,!![]);}catch(_0x356fca){return BPromise[_0x6618('0x24')](_0x356fca);}return _0xa1dc12[_0x6618('0x25')]();};}function saveUpdates(_0x56db93,_0x11310a){return function(_0x5eea7e){if(_0x5eea7e){return _0x5eea7e['update'](_0x56db93)[_0x6618('0x26')](function(_0x4cec10){return _0x4cec10;});}return null;};}function removeEntity(_0x28a715,_0x4ab3b1){return function(_0x44cad0){if(_0x44cad0){return _0x44cad0[_0x6618('0x27')]()[_0x6618('0x26')](function(){_0x28a715[_0x6618('0x1c')](0xcc)[_0x6618('0x1b')]();});}};}function handleEntityNotFound(_0x5c1f46,_0x4c5291){return function(_0x564c37){if(!_0x564c37){_0x5c1f46[_0x6618('0x1a')](0x194);}return _0x564c37;};}function handleError(_0x25ecbb,_0x475c6a){_0x475c6a=_0x475c6a||0x1f4;return function(_0x25b76a){logger[_0x6618('0x28')](_0x25b76a[_0x6618('0x29')]);if(_0x25b76a[_0x6618('0x2a')]){delete _0x25b76a[_0x6618('0x2a')];}_0x25ecbb[_0x6618('0x1c')](_0x475c6a)['send'](_0x25b76a);};}exports[_0x6618('0x2b')]=function(_0xab2337,_0x679185){var _0x3c4624={},_0x3c209d={},_0x1fc261={'count':0x0,'rows':[]};var _0x41c3ac=_['map'](db['MailSubstatus'][_0x6618('0x2c')],function(_0x52517e){return{'name':_0x52517e[_0x6618('0x2d')],'type':_0x52517e['type'][_0x6618('0x2e')]};});_0x3c209d[_0x6618('0x2f')]=_['map'](_0x41c3ac,_0x6618('0x2a'));_0x3c209d['query']=_[_0x6618('0x30')](_0xab2337['query']);_0x3c209d[_0x6618('0x31')]=_['intersection'](_0x3c209d[_0x6618('0x2f')],_0x3c209d['query']);_0x3c4624[_0x6618('0x32')]=_[_0x6618('0x33')](_0x3c209d[_0x6618('0x2f')],qs[_0x6618('0x34')](_0xab2337[_0x6618('0x35')][_0x6618('0x34')]));_0x3c4624['attributes']=_0x3c4624['attributes']['length']?_0x3c4624[_0x6618('0x32')]:_0x3c209d[_0x6618('0x2f')];if(!_0xab2337[_0x6618('0x35')][_0x6618('0x36')](_0x6618('0x37'))){_0x3c4624[_0x6618('0x1f')]=qs[_0x6618('0x1f')](_0xab2337[_0x6618('0x35')]['limit']);_0x3c4624[_0x6618('0x1d')]=qs[_0x6618('0x1d')](_0xab2337[_0x6618('0x35')][_0x6618('0x1d')]);}_0x3c4624[_0x6618('0x38')]=qs[_0x6618('0x39')](_0xab2337[_0x6618('0x35')][_0x6618('0x39')]);_0x3c4624[_0x6618('0x3a')]=qs[_0x6618('0x31')](_[_0x6618('0x3b')](_0xab2337[_0x6618('0x35')],_0x3c209d[_0x6618('0x31')]),_0x41c3ac);if(_0xab2337[_0x6618('0x35')][_0x6618('0x3c')]){_0x3c4624[_0x6618('0x3a')]=_[_0x6618('0x3d')](_0x3c4624[_0x6618('0x3a')],{'$or':_['map'](_0x41c3ac,function(_0x298e90){if(_0x298e90[_0x6618('0x3e')]!==_0x6618('0x3f')){var _0x12c870={};_0x12c870[_0x298e90[_0x6618('0x2a')]]={'$like':'%'+_0xab2337[_0x6618('0x35')][_0x6618('0x3c')]+'%'};return _0x12c870;}})});}_0x3c4624=_['merge']({},_0x3c4624,_0xab2337[_0x6618('0x40')]);var _0x312738={'where':_0x3c4624[_0x6618('0x3a')]};return db[_0x6618('0x41')]['count'](_0x312738)[_0x6618('0x26')](function(_0x2730b8){_0x1fc261[_0x6618('0x20')]=_0x2730b8;if(_0xab2337[_0x6618('0x35')][_0x6618('0x42')]){_0x3c4624[_0x6618('0x43')]=[{'all':!![]}];}return db[_0x6618('0x41')][_0x6618('0x44')](_0x3c4624);})[_0x6618('0x26')](function(_0x21371d){_0x1fc261['rows']=_0x21371d;return _0x1fc261;})[_0x6618('0x26')](respondWithFilteredResult(_0x679185,_0x3c4624))['catch'](handleError(_0x679185,null));};exports[_0x6618('0x45')]=function(_0x3957f8,_0x303124){var _0x6461cf={'raw':!![],'where':{'id':_0x3957f8[_0x6618('0x46')]['id']}},_0x27ce66={};_0x27ce66['model']=_[_0x6618('0x30')](db[_0x6618('0x41')][_0x6618('0x2c')]);_0x27ce66[_0x6618('0x35')]=_[_0x6618('0x30')](_0x3957f8[_0x6618('0x35')]);_0x27ce66[_0x6618('0x31')]=_[_0x6618('0x33')](_0x27ce66[_0x6618('0x2f')],_0x27ce66[_0x6618('0x35')]);_0x6461cf['attributes']=_[_0x6618('0x33')](_0x27ce66[_0x6618('0x2f')],qs[_0x6618('0x34')](_0x3957f8[_0x6618('0x35')][_0x6618('0x34')]));_0x6461cf[_0x6618('0x32')]=_0x6461cf[_0x6618('0x32')][_0x6618('0x47')]?_0x6461cf[_0x6618('0x32')]:_0x27ce66[_0x6618('0x2f')];if(_0x3957f8[_0x6618('0x35')][_0x6618('0x42')]){_0x6461cf[_0x6618('0x43')]=[{'all':!![]}];}_0x6461cf=_['merge']({},_0x6461cf,_0x3957f8[_0x6618('0x40')]);return db[_0x6618('0x41')][_0x6618('0x48')](_0x6461cf)['then'](handleEntityNotFound(_0x303124,null))['then'](respondWithResult(_0x303124,null))[_0x6618('0x49')](handleError(_0x303124,null));};exports[_0x6618('0x4a')]=function(_0x516931,_0x5293b3){return db['MailSubstatus'][_0x6618('0x4a')](_0x516931['body'],{})['then'](respondWithResult(_0x5293b3,0xc9))[_0x6618('0x49')](handleError(_0x5293b3,null));};exports['update']=function(_0x17e53e,_0x24b76b){if(_0x17e53e['body']['id']){delete _0x17e53e[_0x6618('0x4b')]['id'];}return db['MailSubstatus']['find']({'where':{'id':_0x17e53e[_0x6618('0x46')]['id']}})[_0x6618('0x26')](handleEntityNotFound(_0x24b76b,null))['then'](saveUpdates(_0x17e53e[_0x6618('0x4b')],null))[_0x6618('0x26')](respondWithResult(_0x24b76b,null))[_0x6618('0x49')](handleError(_0x24b76b,null));};exports['destroy']=function(_0x411497,_0x1c5ae6){return db[_0x6618('0x41')]['find']({'where':{'id':_0x411497[_0x6618('0x46')]['id']}})[_0x6618('0x26')](handleEntityNotFound(_0x1c5ae6,null))['then'](removeEntity(_0x1c5ae6,null))[_0x6618('0x49')](handleError(_0x1c5ae6,null));};exports[_0x6618('0x4c')]=function(_0x19f400,_0x1d471f){return db[_0x6618('0x41')][_0x6618('0x4c')]()[_0x6618('0x26')](respondWithResult(_0x1d471f,null))[_0x6618('0x49')](handleError(_0x1d471f,null));};
\ No newline at end of file
index a842768..ff29678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd77f=['../../mysqldb','MailSubstatus','setMaxListeners','emit','hook'];(function(_0x1eced6,_0x2b138f){var _0x1520c6=function(_0xa8fbd0){while(--_0xa8fbd0){_0x1eced6['push'](_0x1eced6['shift']());}};_0x1520c6(++_0x2b138f);}(_0xd77f,0x73));var _0xfd77=function(_0x11a0f9,_0x585f50){_0x11a0f9=_0x11a0f9-0x0;var _0x319e19=_0xd77f[_0x11a0f9];return _0x319e19;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0xfd77('0x0'))['db'][_0xfd77('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xfd77('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x521a6a){return function(_0x2e7751,_0x246750,_0x57304d){MailSubstatusEvents[_0xfd77('0x3')](_0x521a6a+':'+_0x2e7751['id'],_0x2e7751);MailSubstatusEvents[_0xfd77('0x3')](_0x521a6a,_0x2e7751);_0x57304d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus[_0xfd77('0x4')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0xf5c8=['hook','exports','events','../../mysqldb','setMaxListeners','emit','hasOwnProperty'];(function(_0x2defc4,_0x25dbea){var _0x10e80a=function(_0x2c13c1){while(--_0x2c13c1){_0x2defc4['push'](_0x2defc4['shift']());}};_0x10e80a(++_0x25dbea);}(_0xf5c8,0x19f));var _0x8f5c=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xf5c8[_0x4e9d3c];return _0x2d0825;};'use strict';var EventEmitter=require(_0x8f5c('0x0'));var MailSubstatus=require(_0x8f5c('0x1'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x8f5c('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x2b0c65){return function(_0x3015ea,_0x477434,_0x2823d8){MailSubstatusEvents[_0x8f5c('0x3')](_0x2b0c65+':'+_0x3015ea['id'],_0x3015ea);MailSubstatusEvents['emit'](_0x2b0c65,_0x3015ea);_0x2823d8(null);};}for(var e in events){if(events[_0x8f5c('0x4')](e)){var event=events[e];MailSubstatus[_0x8f5c('0x5')](e,emitEvent(event));}}module[_0x8f5c('0x6')]=MailSubstatusEvents;
\ No newline at end of file
index 64b2c31..345d3c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c90=['update','name','mailSubstatus','_previousDataValues','catch','./mailSubstatus.attributes','exports','models','define'];(function(_0x193130,_0x50e123){var _0x53371c=function(_0x424c31){while(--_0x424c31){_0x193130['push'](_0x193130['shift']());}};_0x53371c(++_0x50e123);}(_0x8c90,0x16d));var _0x08c9=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x8c90[_0x56482c];return _0x5aae7a;};'use strict';var attributes=require(_0x08c9('0x0'));module[_0x08c9('0x1')]=function(_0x3065a2){var _0x1d1aa2=_0x3065a2[_0x08c9('0x2')];return _0x3065a2[_0x08c9('0x3')]('MailSubstatus',attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x504915,_0xc46dce,_0x38f9a9){return _0x1d1aa2['Condition'][_0x08c9('0x4')]({'value':_0x504915[_0x08c9('0x5')]},{'where':{'field':_0x08c9('0x6'),'value':_0x504915[_0x08c9('0x7')][_0x08c9('0x5')]}})['then'](function(){_0x38f9a9();})[_0x08c9('0x8')](function(_0x496b06){_0x38f9a9(_0x496b06);});}}});};
\ No newline at end of file
+var _0x8a44=['define','MailSubstatus','mail_substatuses','Condition','update','_previousDataValues','then','catch','./mailSubstatus.attributes','exports','models'];(function(_0x2809e9,_0xf18ee5){var _0x37f76a=function(_0xf9c25a){while(--_0xf9c25a){_0x2809e9['push'](_0x2809e9['shift']());}};_0x37f76a(++_0xf18ee5);}(_0x8a44,0x126));var _0x48a4=function(_0x4a7b5f,_0x25e86c){_0x4a7b5f=_0x4a7b5f-0x0;var _0x332f87=_0x8a44[_0x4a7b5f];return _0x332f87;};'use strict';var attributes=require(_0x48a4('0x0'));module[_0x48a4('0x1')]=function(_0x39331b){var _0x1af7a1=_0x39331b[_0x48a4('0x2')];return _0x39331b[_0x48a4('0x3')](_0x48a4('0x4'),attributes,{'tableName':_0x48a4('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x374b65,_0x49a9b1,_0x506e37){return _0x1af7a1[_0x48a4('0x6')][_0x48a4('0x7')]({'value':_0x374b65['name']},{'where':{'field':'mailSubstatus','value':_0x374b65[_0x48a4('0x8')]['name']}})[_0x48a4('0x9')](function(){_0x506e37();})[_0x48a4('0xa')](function(_0x243ca4){_0x506e37(_0x243ca4);});}}});};
\ No newline at end of file
index 24f4772..91bb9be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe19d=['rpc','../../config/environment','jayson/promise','client','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x3604f7,_0x5e66b9){var _0x538586=function(_0x208608){while(--_0x208608){_0x3604f7['push'](_0x3604f7['shift']());}};_0x538586(++_0x5e66b9);}(_0xe19d,0x1a9));var _0xde19=function(_0x33e4a7,_0x2e80a2){_0x33e4a7=_0x33e4a7-0x0;var _0x598620=_0xe19d[_0x33e4a7];return _0x598620;};'use strict';var _=require(_0xde19('0x0'));var util=require(_0xde19('0x1'));var moment=require('moment');var BPromise=require(_0xde19('0x2'));var rs=require(_0xde19('0x3'));var fs=require('fs');var Redis=require(_0xde19('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xde19('0x5'));var logger=require(_0xde19('0x6'))(_0xde19('0x7'));var config=require(_0xde19('0x8'));var jayson=require(_0xde19('0x9'));var client=jayson[_0xde19('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5667e9,_0x3b7d63,_0x5868ab){return new BPromise(function(_0x5bdc6c,_0x13baf4){return client[_0xde19('0xb')](_0x5667e9,_0x5868ab)[_0xde19('0xc')](function(_0x4d3fe9){logger['info'](_0xde19('0xd'),_0x3b7d63,_0xde19('0xe'));logger[_0xde19('0xf')](_0xde19('0x10'),_0x3b7d63,_0xde19('0xe'),JSON[_0xde19('0x11')](_0x4d3fe9));if(_0x4d3fe9[_0xde19('0x12')]){if(_0x4d3fe9[_0xde19('0x12')][_0xde19('0x13')]===0x1f4){logger[_0xde19('0x12')](_0xde19('0xd'),_0x3b7d63,_0x4d3fe9['error']['message']);return _0x13baf4(_0x4d3fe9[_0xde19('0x12')]['message']);}logger[_0xde19('0x12')](_0xde19('0xd'),_0x3b7d63,_0x4d3fe9[_0xde19('0x12')]['message']);return _0x5bdc6c(_0x4d3fe9[_0xde19('0x12')][_0xde19('0x14')]);}else{logger[_0xde19('0x15')]('MailSubstatus,\x20%s,\x20%s',_0x3b7d63,_0xde19('0xe'));_0x5bdc6c(_0x4d3fe9[_0xde19('0x16')][_0xde19('0x14')]);}})[_0xde19('0x17')](function(_0x266242){logger[_0xde19('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x3b7d63,_0x266242);_0x13baf4(_0x266242);});});}
\ No newline at end of file
+var _0xcefd=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','util','moment'];(function(_0x1e1f6a,_0x2de6e7){var _0x555320=function(_0x1c9138){while(--_0x1c9138){_0x1e1f6a['push'](_0x1e1f6a['shift']());}};_0x555320(++_0x2de6e7);}(_0xcefd,0x87));var _0xdcef=function(_0x42d58c,_0x1a757a){_0x42d58c=_0x42d58c-0x0;var _0x3c3ce5=_0xcefd[_0x42d58c];return _0x3c3ce5;};'use strict';var _=require(_0xdcef('0x0'));var util=require(_0xdcef('0x1'));var moment=require(_0xdcef('0x2'));var BPromise=require(_0xdcef('0x3'));var rs=require(_0xdcef('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdcef('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xdcef('0x6'))(_0xdcef('0x7'));var config=require(_0xdcef('0x8'));var jayson=require(_0xdcef('0x9'));var client=jayson[_0xdcef('0xa')][_0xdcef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x15aef5,_0x3a54d9,_0x5ccd79){return new BPromise(function(_0x54f02a,_0x46d515){return client[_0xdcef('0xc')](_0x15aef5,_0x5ccd79)[_0xdcef('0xd')](function(_0x5c53f2){logger['info'](_0xdcef('0xe'),_0x3a54d9,_0xdcef('0xf'));logger[_0xdcef('0x10')](_0xdcef('0x11'),_0x3a54d9,_0xdcef('0xf'),JSON['stringify'](_0x5c53f2));if(_0x5c53f2[_0xdcef('0x12')]){if(_0x5c53f2['error']['code']===0x1f4){logger[_0xdcef('0x12')](_0xdcef('0xe'),_0x3a54d9,_0x5c53f2['error'][_0xdcef('0x13')]);return _0x46d515(_0x5c53f2['error']['message']);}logger[_0xdcef('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x3a54d9,_0x5c53f2[_0xdcef('0x12')][_0xdcef('0x13')]);return _0x54f02a(_0x5c53f2[_0xdcef('0x12')][_0xdcef('0x13')]);}else{logger[_0xdcef('0x14')](_0xdcef('0xe'),_0x3a54d9,'request\x20sent');_0x54f02a(_0x5c53f2[_0xdcef('0x15')][_0xdcef('0x13')]);}})[_0xdcef('0x16')](function(_0x57ac6f){logger[_0xdcef('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x3a54d9,_0x57ac6f);_0x46d515(_0x57ac6f);});});}
\ No newline at end of file
index 1d69b67..8e8b422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb617=['/describe','describe','/:id','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x56be45,_0x10cd0e){var _0x1b75d3=function(_0x314616){while(--_0x314616){_0x56be45['push'](_0x56be45['shift']());}};_0x1b75d3(++_0x10cd0e);}(_0xb617,0xda));var _0x7b61=function(_0x55f87f,_0x30fe00){_0x55f87f=_0x55f87f-0x0;var _0x3a99b7=_0xb617[_0x55f87f];return _0x3a99b7;};'use strict';var multer=require(_0x7b61('0x0'));var util=require(_0x7b61('0x1'));var path=require(_0x7b61('0x2'));var timeout=require('connect-timeout');var express=require(_0x7b61('0x3'));var router=express[_0x7b61('0x4')]();var fs_extra=require(_0x7b61('0x5'));var auth=require(_0x7b61('0x6'));var interaction=require(_0x7b61('0x7'));var config=require('../../config/environment');var controller=require('./mailTransferReport.controller');router[_0x7b61('0x8')]('/',auth[_0x7b61('0x9')](),controller['index']);router['get'](_0x7b61('0xa'),auth[_0x7b61('0x9')](),controller[_0x7b61('0xb')]);router['get'](_0x7b61('0xc'),auth[_0x7b61('0x9')](),controller['show']);router[_0x7b61('0xd')]('/',auth['isAuthenticated'](),controller[_0x7b61('0xe')]);router[_0x7b61('0xf')](_0x7b61('0xc'),auth[_0x7b61('0x9')](),controller[_0x7b61('0x10')]);router[_0x7b61('0x11')]('/:id',auth[_0x7b61('0x9')](),controller['destroy']);module[_0x7b61('0x12')]=router;
\ No newline at end of file
+var _0x5c64=['/:id','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x14ebe1,_0x28333a){var _0x17f153=function(_0x5adf07){while(--_0x5adf07){_0x14ebe1['push'](_0x14ebe1['shift']());}};_0x17f153(++_0x28333a);}(_0x5c64,0x93));var _0x45c6=function(_0x12903a,_0x2d1e15){_0x12903a=_0x12903a-0x0;var _0x11f154=_0x5c64[_0x12903a];return _0x11f154;};'use strict';var multer=require(_0x45c6('0x0'));var util=require(_0x45c6('0x1'));var path=require('path');var timeout=require(_0x45c6('0x2'));var express=require(_0x45c6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x45c6('0x4'));var interaction=require(_0x45c6('0x5'));var config=require(_0x45c6('0x6'));var controller=require(_0x45c6('0x7'));router[_0x45c6('0x8')]('/',auth[_0x45c6('0x9')](),controller[_0x45c6('0xa')]);router[_0x45c6('0x8')](_0x45c6('0xb'),auth[_0x45c6('0x9')](),controller[_0x45c6('0xc')]);router[_0x45c6('0x8')](_0x45c6('0xd'),auth[_0x45c6('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x45c6('0xe')]);router[_0x45c6('0xf')](_0x45c6('0xd'),auth[_0x45c6('0x9')](),controller[_0x45c6('0x10')]);router[_0x45c6('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x45c6('0x12')]);module[_0x45c6('0x13')]=router;
\ No newline at end of file
index eea047c..60a9853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x27c679,_0x5d53f2){var _0x478c05=function(_0x1bd35a){while(--_0x1bd35a){_0x27c679['push'](_0x27c679['shift']());}};_0x478c05(++_0x5d53f2);}(_0xedd9,0xfc));var _0x9edd=function(_0x40c611,_0x13febe){_0x40c611=_0x40c611-0x0;var _0x126bc0=_0xedd9[_0x40c611];return _0x126bc0;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0xd9f102,_0x5a0d28){var _0x2652e4=function(_0x5021a1){while(--_0x5021a1){_0xd9f102['push'](_0xd9f102['shift']());}};_0x2652e4(++_0x5a0d28);}(_0x9bde,0xe1));var _0xe9bd=function(_0x420345,_0x216a1c){_0x420345=_0x420345-0x0;var _0x225773=_0x9bde[_0x420345];return _0x225773;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 625bca6..dac0dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da0=['../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','MailTransferReport','then','includeAll','include','rows','show','params','length','create','body','find','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x7da0,0xd2));var _0x07da=function(_0x24b0de,_0x5f34db){_0x24b0de=_0x24b0de-0x0;var _0x5b71c5=_0x7da0[_0x24b0de];return _0x5b71c5;};'use strict';var emlformat=require(_0x07da('0x0'));var rimraf=require(_0x07da('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x07da('0x2'));var rp=require(_0x07da('0x3'));var moment=require(_0x07da('0x4'));var BPromise=require(_0x07da('0x5'));var Mustache=require(_0x07da('0x6'));var util=require(_0x07da('0x7'));var path=require(_0x07da('0x8'));var sox=require('sox');var csv=require(_0x07da('0x9'));var ejs=require(_0x07da('0xa'));var fs=require('fs');var fs_extra=require(_0x07da('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x07da('0xc'));var jsforce=require(_0x07da('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x07da('0x9'));var querystring=require(_0x07da('0xe'));var Papa=require(_0x07da('0xf'));var Redis=require(_0x07da('0x10'));var authService=require(_0x07da('0x11'));var qs=require(_0x07da('0x12'));var as=require(_0x07da('0x13'));var hardwareService=require(_0x07da('0x14'));var logger=require(_0x07da('0x15'))(_0x07da('0x16'));var utils=require(_0x07da('0x17'));var config=require(_0x07da('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3e92fa,_0x30c41c){_0x30c41c=_0x30c41c||0xcc;return function(_0x34f729){if(_0x34f729){return _0x3e92fa[_0x07da('0x19')](_0x30c41c);}return _0x3e92fa[_0x07da('0x1a')](_0x30c41c)[_0x07da('0x1b')]();};}function respondWithResult(_0x267ba2,_0x363776){_0x363776=_0x363776||0xc8;return function(_0x1355dc){if(_0x1355dc){return _0x267ba2[_0x07da('0x1a')](_0x363776)[_0x07da('0x1c')](_0x1355dc);}};}function respondWithFilteredResult(_0x2cba85,_0x1a7414){return function(_0x28c2d5){if(_0x28c2d5){var _0x2fdedc=typeof _0x1a7414[_0x07da('0x1d')]==='undefined'&&typeof _0x1a7414['limit']===_0x07da('0x1e');var _0x2498b8=_0x28c2d5[_0x07da('0x1f')];var _0x3031c0=_0x2fdedc?0x0:_0x1a7414['offset'];var _0x2a4e27=_0x2fdedc?_0x28c2d5[_0x07da('0x1f')]:_0x1a7414[_0x07da('0x1d')]+_0x1a7414[_0x07da('0x20')];var _0x425d4c;if(_0x2a4e27>=_0x2498b8){_0x2a4e27=_0x2498b8;_0x425d4c=0xc8;}else{_0x425d4c=0xce;}_0x2cba85[_0x07da('0x1a')](_0x425d4c);return _0x2cba85['set'](_0x07da('0x21'),_0x3031c0+'-'+_0x2a4e27+'/'+_0x2498b8)[_0x07da('0x1c')](_0x28c2d5);}return null;};}function patchUpdates(_0x269485){return function(_0x2bc015){try{jsonpatch[_0x07da('0x22')](_0x2bc015,_0x269485,!![]);}catch(_0x1a0e13){return BPromise['reject'](_0x1a0e13);}return _0x2bc015[_0x07da('0x23')]();};}function saveUpdates(_0x27b804,_0x10fbd7){return function(_0xcaef31){if(_0xcaef31){return _0xcaef31[_0x07da('0x24')](_0x27b804)['then'](function(_0x75ad23){return _0x75ad23;});}return null;};}function removeEntity(_0x53ed9f,_0x241e55){return function(_0x461503){if(_0x461503){return _0x461503[_0x07da('0x25')]()['then'](function(){_0x53ed9f[_0x07da('0x1a')](0xcc)[_0x07da('0x1b')]();});}};}function handleEntityNotFound(_0x4e32e0,_0x809d61){return function(_0x508b5f){if(!_0x508b5f){_0x4e32e0[_0x07da('0x19')](0x194);}return _0x508b5f;};}function handleError(_0x19f626,_0x53d9af){_0x53d9af=_0x53d9af||0x1f4;return function(_0x2912dd){logger[_0x07da('0x26')](_0x2912dd[_0x07da('0x27')]);if(_0x2912dd[_0x07da('0x28')]){delete _0x2912dd[_0x07da('0x28')];}_0x19f626[_0x07da('0x1a')](_0x53d9af)[_0x07da('0x29')](_0x2912dd);};}exports[_0x07da('0x2a')]=function(_0x3a3bfa,_0x3dec1c){var _0x506d0b={},_0x3dfdfd={},_0x6b4ba8={'count':0x0,'rows':[]};var _0x16d589=_[_0x07da('0x2b')](db['MailTransferReport'][_0x07da('0x2c')],function(_0x32726e){return{'name':_0x32726e[_0x07da('0x2d')],'type':_0x32726e[_0x07da('0x2e')][_0x07da('0x2f')]};});_0x3dfdfd[_0x07da('0x30')]=_[_0x07da('0x2b')](_0x16d589,'name');_0x3dfdfd[_0x07da('0x31')]=_[_0x07da('0x32')](_0x3a3bfa[_0x07da('0x31')]);_0x3dfdfd['filters']=_[_0x07da('0x33')](_0x3dfdfd['model'],_0x3dfdfd['query']);_0x506d0b['attributes']=_[_0x07da('0x33')](_0x3dfdfd[_0x07da('0x30')],qs[_0x07da('0x34')](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x34')]));_0x506d0b['attributes']=_0x506d0b[_0x07da('0x35')]['length']?_0x506d0b[_0x07da('0x35')]:_0x3dfdfd[_0x07da('0x30')];if(!_0x3a3bfa[_0x07da('0x31')][_0x07da('0x36')](_0x07da('0x37'))){_0x506d0b[_0x07da('0x20')]=qs[_0x07da('0x20')](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x20')]);_0x506d0b[_0x07da('0x1d')]=qs['offset'](_0x3a3bfa[_0x07da('0x31')][_0x07da('0x1d')]);}_0x506d0b['order']=qs[_0x07da('0x38')](_0x3a3bfa['query'][_0x07da('0x38')]);_0x506d0b[_0x07da('0x39')]=qs['filters'](_[_0x07da('0x3a')](_0x3a3bfa[_0x07da('0x31')],_0x3dfdfd[_0x07da('0x3b')]),_0x16d589);if(_0x3a3bfa['query'][_0x07da('0x3c')]){_0x506d0b[_0x07da('0x39')]=_[_0x07da('0x3d')](_0x506d0b[_0x07da('0x39')],{'$or':_[_0x07da('0x2b')](_0x16d589,function(_0x3a8128){if(_0x3a8128[_0x07da('0x2e')]!==_0x07da('0x3e')){var _0x211d3b={};_0x211d3b[_0x3a8128[_0x07da('0x28')]]={'$like':'%'+_0x3a3bfa['query']['filter']+'%'};return _0x211d3b;}})});}_0x506d0b=_[_0x07da('0x3d')]({},_0x506d0b,_0x3a3bfa[_0x07da('0x3f')]);var _0x58a283={'where':_0x506d0b['where']};return db[_0x07da('0x40')][_0x07da('0x1f')](_0x58a283)[_0x07da('0x41')](function(_0x37454d){_0x6b4ba8[_0x07da('0x1f')]=_0x37454d;if(_0x3a3bfa[_0x07da('0x31')][_0x07da('0x42')]){_0x506d0b[_0x07da('0x43')]=[{'all':!![]}];}return db[_0x07da('0x40')]['findAll'](_0x506d0b);})['then'](function(_0x2db334){_0x6b4ba8[_0x07da('0x44')]=_0x2db334;return _0x6b4ba8;})[_0x07da('0x41')](respondWithFilteredResult(_0x3dec1c,_0x506d0b))['catch'](handleError(_0x3dec1c,null));};exports[_0x07da('0x45')]=function(_0x4a9d68,_0x5f0a2e){var _0x154543={'raw':!![],'where':{'id':_0x4a9d68[_0x07da('0x46')]['id']}},_0x4ab22f={};_0x4ab22f[_0x07da('0x30')]=_['keys'](db[_0x07da('0x40')][_0x07da('0x2c')]);_0x4ab22f[_0x07da('0x31')]=_[_0x07da('0x32')](_0x4a9d68[_0x07da('0x31')]);_0x4ab22f[_0x07da('0x3b')]=_[_0x07da('0x33')](_0x4ab22f['model'],_0x4ab22f[_0x07da('0x31')]);_0x154543[_0x07da('0x35')]=_[_0x07da('0x33')](_0x4ab22f[_0x07da('0x30')],qs[_0x07da('0x34')](_0x4a9d68[_0x07da('0x31')][_0x07da('0x34')]));_0x154543['attributes']=_0x154543['attributes'][_0x07da('0x47')]?_0x154543['attributes']:_0x4ab22f[_0x07da('0x30')];if(_0x4a9d68[_0x07da('0x31')][_0x07da('0x42')]){_0x154543['include']=[{'all':!![]}];}_0x154543=_[_0x07da('0x3d')]({},_0x154543,_0x4a9d68[_0x07da('0x3f')]);return db[_0x07da('0x40')]['find'](_0x154543)[_0x07da('0x41')](handleEntityNotFound(_0x5f0a2e,null))['then'](respondWithResult(_0x5f0a2e,null))['catch'](handleError(_0x5f0a2e,null));};exports[_0x07da('0x48')]=function(_0x554ecd,_0x478bf3){return db[_0x07da('0x40')][_0x07da('0x48')](_0x554ecd[_0x07da('0x49')],{})['then'](respondWithResult(_0x478bf3,0xc9))['catch'](handleError(_0x478bf3,null));};exports['update']=function(_0x9996a0,_0x235b60){if(_0x9996a0[_0x07da('0x49')]['id']){delete _0x9996a0['body']['id'];}return db['MailTransferReport'][_0x07da('0x4a')]({'where':{'id':_0x9996a0[_0x07da('0x46')]['id']}})[_0x07da('0x41')](handleEntityNotFound(_0x235b60,null))[_0x07da('0x41')](saveUpdates(_0x9996a0['body'],null))[_0x07da('0x41')](respondWithResult(_0x235b60,null))[_0x07da('0x4b')](handleError(_0x235b60,null));};exports['destroy']=function(_0x5bc524,_0x20ff4c){return db['MailTransferReport'][_0x07da('0x4a')]({'where':{'id':_0x5bc524[_0x07da('0x46')]['id']}})[_0x07da('0x41')](handleEntityNotFound(_0x20ff4c,null))[_0x07da('0x41')](removeEntity(_0x20ff4c,null))[_0x07da('0x4b')](handleError(_0x20ff4c,null));};exports['describe']=function(_0x1899be,_0x5b9c51){return db['MailTransferReport'][_0x07da('0x4c')]()['then'](respondWithResult(_0x5b9c51,null))[_0x07da('0x4b')](handleError(_0x5b9c51,null));};
\ No newline at end of file
+var _0xe237=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','send','index','map','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','MailTransferReport','findAll','rows','catch','show','params','find','create','body','describe','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x470365,_0x59d027){var _0x547d59=function(_0x5e9eac){while(--_0x5e9eac){_0x470365['push'](_0x470365['shift']());}};_0x547d59(++_0x59d027);}(_0xe237,0x16c));var _0x7e23=function(_0x47f05e,_0x4df9e1){_0x47f05e=_0x47f05e-0x0;var _0x416161=_0xe237[_0x47f05e];return _0x416161;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7e23('0x0'));var rp=require('request-promise');var moment=require(_0x7e23('0x1'));var BPromise=require(_0x7e23('0x2'));var Mustache=require(_0x7e23('0x3'));var util=require(_0x7e23('0x4'));var path=require(_0x7e23('0x5'));var sox=require(_0x7e23('0x6'));var csv=require(_0x7e23('0x7'));var ejs=require(_0x7e23('0x8'));var fs=require('fs');var fs_extra=require(_0x7e23('0x9'));var _=require(_0x7e23('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7e23('0xb'));var deskjs=require(_0x7e23('0xc'));var toCsv=require(_0x7e23('0x7'));var querystring=require(_0x7e23('0xd'));var Papa=require(_0x7e23('0xe'));var Redis=require(_0x7e23('0xf'));var authService=require(_0x7e23('0x10'));var qs=require(_0x7e23('0x11'));var as=require(_0x7e23('0x12'));var hardwareService=require(_0x7e23('0x13'));var logger=require(_0x7e23('0x14'))('api');var utils=require(_0x7e23('0x15'));var config=require(_0x7e23('0x16'));var licenseUtil=require(_0x7e23('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f1386,_0x12659c){_0x12659c=_0x12659c||0xcc;return function(_0x4e00b7){if(_0x4e00b7){return _0x1f1386[_0x7e23('0x18')](_0x12659c);}return _0x1f1386['status'](_0x12659c)['end']();};}function respondWithResult(_0x325bd7,_0x257301){_0x257301=_0x257301||0xc8;return function(_0x408cec){if(_0x408cec){return _0x325bd7[_0x7e23('0x19')](_0x257301)[_0x7e23('0x1a')](_0x408cec);}};}function respondWithFilteredResult(_0x43ef6a,_0x12bd55){return function(_0x36ac53){if(_0x36ac53){var _0x2d5f14=typeof _0x12bd55['offset']===_0x7e23('0x1b')&&typeof _0x12bd55[_0x7e23('0x1c')]==='undefined';var _0x19e80a=_0x36ac53[_0x7e23('0x1d')];var _0x2e588a=_0x2d5f14?0x0:_0x12bd55['offset'];var _0x1c759d=_0x2d5f14?_0x36ac53[_0x7e23('0x1d')]:_0x12bd55[_0x7e23('0x1e')]+_0x12bd55[_0x7e23('0x1c')];var _0x546ca9;if(_0x1c759d>=_0x19e80a){_0x1c759d=_0x19e80a;_0x546ca9=0xc8;}else{_0x546ca9=0xce;}_0x43ef6a['status'](_0x546ca9);return _0x43ef6a[_0x7e23('0x1f')](_0x7e23('0x20'),_0x2e588a+'-'+_0x1c759d+'/'+_0x19e80a)[_0x7e23('0x1a')](_0x36ac53);}return null;};}function patchUpdates(_0x4c8df2){return function(_0x1634e3){try{jsonpatch[_0x7e23('0x21')](_0x1634e3,_0x4c8df2,!![]);}catch(_0x482abe){return BPromise[_0x7e23('0x22')](_0x482abe);}return _0x1634e3[_0x7e23('0x23')]();};}function saveUpdates(_0x1d70a0,_0x5932ed){return function(_0x2e44a7){if(_0x2e44a7){return _0x2e44a7[_0x7e23('0x24')](_0x1d70a0)[_0x7e23('0x25')](function(_0x20c0da){return _0x20c0da;});}return null;};}function removeEntity(_0x2fed3d,_0x18e431){return function(_0x36407){if(_0x36407){return _0x36407[_0x7e23('0x26')]()[_0x7e23('0x25')](function(){_0x2fed3d[_0x7e23('0x19')](0xcc)[_0x7e23('0x27')]();});}};}function handleEntityNotFound(_0x540f22,_0xaa64c7){return function(_0x44a405){if(!_0x44a405){_0x540f22[_0x7e23('0x18')](0x194);}return _0x44a405;};}function handleError(_0x54b673,_0x4c0ad3){_0x4c0ad3=_0x4c0ad3||0x1f4;return function(_0x5e21fb){logger[_0x7e23('0x28')](_0x5e21fb[_0x7e23('0x29')]);if(_0x5e21fb['name']){delete _0x5e21fb['name'];}_0x54b673[_0x7e23('0x19')](_0x4c0ad3)[_0x7e23('0x2a')](_0x5e21fb);};}exports[_0x7e23('0x2b')]=function(_0x14f1a8,_0x379fe1){var _0x41438f={},_0x1330e3={},_0x5931f8={'count':0x0,'rows':[]};var _0x5b80a0=_[_0x7e23('0x2c')](db['MailTransferReport'][_0x7e23('0x2d')],function(_0x520f77){return{'name':_0x520f77['fieldName'],'type':_0x520f77[_0x7e23('0x2e')][_0x7e23('0x2f')]};});_0x1330e3[_0x7e23('0x30')]=_[_0x7e23('0x2c')](_0x5b80a0,_0x7e23('0x31'));_0x1330e3[_0x7e23('0x32')]=_[_0x7e23('0x33')](_0x14f1a8[_0x7e23('0x32')]);_0x1330e3[_0x7e23('0x34')]=_[_0x7e23('0x35')](_0x1330e3[_0x7e23('0x30')],_0x1330e3['query']);_0x41438f[_0x7e23('0x36')]=_[_0x7e23('0x35')](_0x1330e3[_0x7e23('0x30')],qs[_0x7e23('0x37')](_0x14f1a8['query'][_0x7e23('0x37')]));_0x41438f[_0x7e23('0x36')]=_0x41438f[_0x7e23('0x36')][_0x7e23('0x38')]?_0x41438f[_0x7e23('0x36')]:_0x1330e3['model'];if(!_0x14f1a8[_0x7e23('0x32')][_0x7e23('0x39')](_0x7e23('0x3a'))){_0x41438f[_0x7e23('0x1c')]=qs['limit'](_0x14f1a8[_0x7e23('0x32')][_0x7e23('0x1c')]);_0x41438f[_0x7e23('0x1e')]=qs[_0x7e23('0x1e')](_0x14f1a8[_0x7e23('0x32')][_0x7e23('0x1e')]);}_0x41438f[_0x7e23('0x3b')]=qs['sort'](_0x14f1a8['query'][_0x7e23('0x3c')]);_0x41438f[_0x7e23('0x3d')]=qs[_0x7e23('0x34')](_['pick'](_0x14f1a8[_0x7e23('0x32')],_0x1330e3['filters']),_0x5b80a0);if(_0x14f1a8['query'][_0x7e23('0x3e')]){_0x41438f[_0x7e23('0x3d')]=_['merge'](_0x41438f[_0x7e23('0x3d')],{'$or':_[_0x7e23('0x2c')](_0x5b80a0,function(_0x231b40){if(_0x231b40['type']!=='VIRTUAL'){var _0x4b0fda={};_0x4b0fda[_0x231b40[_0x7e23('0x31')]]={'$like':'%'+_0x14f1a8[_0x7e23('0x32')][_0x7e23('0x3e')]+'%'};return _0x4b0fda;}})});}_0x41438f=_[_0x7e23('0x3f')]({},_0x41438f,_0x14f1a8[_0x7e23('0x40')]);var _0x272115={'where':_0x41438f[_0x7e23('0x3d')]};return db['MailTransferReport']['count'](_0x272115)[_0x7e23('0x25')](function(_0x26bba3){_0x5931f8[_0x7e23('0x1d')]=_0x26bba3;if(_0x14f1a8[_0x7e23('0x32')][_0x7e23('0x41')]){_0x41438f[_0x7e23('0x42')]=[{'all':!![]}];}return db[_0x7e23('0x43')][_0x7e23('0x44')](_0x41438f);})[_0x7e23('0x25')](function(_0x62ad2f){_0x5931f8[_0x7e23('0x45')]=_0x62ad2f;return _0x5931f8;})[_0x7e23('0x25')](respondWithFilteredResult(_0x379fe1,_0x41438f))[_0x7e23('0x46')](handleError(_0x379fe1,null));};exports[_0x7e23('0x47')]=function(_0x185695,_0x4d5034){var _0x49ede6={'raw':!![],'where':{'id':_0x185695[_0x7e23('0x48')]['id']}},_0x1c019f={};_0x1c019f[_0x7e23('0x30')]=_[_0x7e23('0x33')](db[_0x7e23('0x43')][_0x7e23('0x2d')]);_0x1c019f[_0x7e23('0x32')]=_[_0x7e23('0x33')](_0x185695[_0x7e23('0x32')]);_0x1c019f[_0x7e23('0x34')]=_[_0x7e23('0x35')](_0x1c019f['model'],_0x1c019f['query']);_0x49ede6['attributes']=_[_0x7e23('0x35')](_0x1c019f[_0x7e23('0x30')],qs[_0x7e23('0x37')](_0x185695[_0x7e23('0x32')][_0x7e23('0x37')]));_0x49ede6[_0x7e23('0x36')]=_0x49ede6[_0x7e23('0x36')]['length']?_0x49ede6[_0x7e23('0x36')]:_0x1c019f[_0x7e23('0x30')];if(_0x185695['query'][_0x7e23('0x41')]){_0x49ede6['include']=[{'all':!![]}];}_0x49ede6=_[_0x7e23('0x3f')]({},_0x49ede6,_0x185695[_0x7e23('0x40')]);return db['MailTransferReport'][_0x7e23('0x49')](_0x49ede6)[_0x7e23('0x25')](handleEntityNotFound(_0x4d5034,null))[_0x7e23('0x25')](respondWithResult(_0x4d5034,null))[_0x7e23('0x46')](handleError(_0x4d5034,null));};exports[_0x7e23('0x4a')]=function(_0x3c2940,_0x50aaee){return db['MailTransferReport']['create'](_0x3c2940[_0x7e23('0x4b')],{})[_0x7e23('0x25')](respondWithResult(_0x50aaee,0xc9))[_0x7e23('0x46')](handleError(_0x50aaee,null));};exports[_0x7e23('0x24')]=function(_0x5046ee,_0x426edd){if(_0x5046ee[_0x7e23('0x4b')]['id']){delete _0x5046ee[_0x7e23('0x4b')]['id'];}return db[_0x7e23('0x43')][_0x7e23('0x49')]({'where':{'id':_0x5046ee[_0x7e23('0x48')]['id']}})['then'](handleEntityNotFound(_0x426edd,null))['then'](saveUpdates(_0x5046ee[_0x7e23('0x4b')],null))[_0x7e23('0x25')](respondWithResult(_0x426edd,null))[_0x7e23('0x46')](handleError(_0x426edd,null));};exports[_0x7e23('0x26')]=function(_0x43aa83,_0x56ac36){return db[_0x7e23('0x43')][_0x7e23('0x49')]({'where':{'id':_0x43aa83[_0x7e23('0x48')]['id']}})['then'](handleEntityNotFound(_0x56ac36,null))['then'](removeEntity(_0x56ac36,null))[_0x7e23('0x46')](handleError(_0x56ac36,null));};exports[_0x7e23('0x4c')]=function(_0x1ec153,_0x35a89a){return db[_0x7e23('0x43')][_0x7e23('0x4c')]()['then'](respondWithResult(_0x35a89a,null))[_0x7e23('0x46')](handleError(_0x35a89a,null));};
\ No newline at end of file
index a455190..8f132f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c17=['bluebird','request-promise','rimraf','../../config/environment','./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','lodash','../../config/logger','moment'];(function(_0x4bdedc,_0x1b0aab){var _0x3d3453=function(_0x77972d){while(--_0x77972d){_0x4bdedc['push'](_0x4bdedc['shift']());}};_0x3d3453(++_0x1b0aab);}(_0x3c17,0x1a1));var _0x73c1=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x3c17[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x73c1('0x0'));var util=require('util');var logger=require(_0x73c1('0x1'))('api');var moment=require(_0x73c1('0x2'));var BPromise=require(_0x73c1('0x3'));var rp=require(_0x73c1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73c1('0x5'));var config=require(_0x73c1('0x6'));var attributes=require(_0x73c1('0x7'));module[_0x73c1('0x8')]=function(_0x48c943,_0x382f82){return _0x48c943['define'](_0x73c1('0x9'),attributes,{'tableName':_0x73c1('0xa'),'paranoid':![],'indexes':[{'name':_0x73c1('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5db2=['./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x497b6f,_0x2bf834){var _0x3c6c84=function(_0x236653){while(--_0x236653){_0x497b6f['push'](_0x497b6f['shift']());}};_0x3c6c84(++_0x2bf834);}(_0x5db2,0xf3));var _0x25db=function(_0x473a79,_0x5e608b){_0x473a79=_0x473a79-0x0;var _0x5a91b3=_0x5db2[_0x473a79];return _0x5a91b3;};'use strict';var _=require(_0x25db('0x0'));var util=require(_0x25db('0x1'));var logger=require(_0x25db('0x2'))('api');var moment=require(_0x25db('0x3'));var BPromise=require(_0x25db('0x4'));var rp=require(_0x25db('0x5'));var fs=require('fs');var path=require(_0x25db('0x6'));var rimraf=require(_0x25db('0x7'));var config=require(_0x25db('0x8'));var attributes=require(_0x25db('0x9'));module[_0x25db('0xa')]=function(_0x4b9260,_0x248306){return _0x4b9260['define'](_0x25db('0xb'),attributes,{'tableName':_0x25db('0xc'),'paranoid':![],'indexes':[{'name':_0x25db('0xd'),'fields':[_0x25db('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 160130a..49f1f38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0222=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x0222,0x1b7));var _0x2022=function(_0x90909d,_0x8dc805){_0x90909d=_0x90909d-0x0;var _0x5e802d=_0x0222[_0x90909d];return _0x5e802d;};'use strict';var _=require(_0x2022('0x0'));var util=require(_0x2022('0x1'));var moment=require('moment');var BPromise=require(_0x2022('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2022('0x3'));var db=require(_0x2022('0x4'))['db'];var utils=require(_0x2022('0x5'));var logger=require(_0x2022('0x6'))(_0x2022('0x7'));var config=require(_0x2022('0x8'));var jayson=require(_0x2022('0x9'));var client=jayson['client'][_0x2022('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x70ccfe,_0x65fa2a,_0x52432f){return new BPromise(function(_0x2a28ac,_0x360575){return client[_0x2022('0xb')](_0x70ccfe,_0x52432f)[_0x2022('0xc')](function(_0x1795d2){logger[_0x2022('0xd')](_0x2022('0xe'),_0x65fa2a,_0x2022('0xf'));logger[_0x2022('0x10')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x65fa2a,_0x2022('0xf'),JSON['stringify'](_0x1795d2));if(_0x1795d2[_0x2022('0x11')]){if(_0x1795d2[_0x2022('0x11')][_0x2022('0x12')]===0x1f4){logger[_0x2022('0x11')](_0x2022('0xe'),_0x65fa2a,_0x1795d2[_0x2022('0x11')]['message']);return _0x360575(_0x1795d2[_0x2022('0x11')]['message']);}logger[_0x2022('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x65fa2a,_0x1795d2[_0x2022('0x11')][_0x2022('0x13')]);return _0x2a28ac(_0x1795d2['error'][_0x2022('0x13')]);}else{logger[_0x2022('0xd')](_0x2022('0xe'),_0x65fa2a,'request\x20sent');_0x2a28ac(_0x1795d2['result'][_0x2022('0x13')]);}})[_0x2022('0x14')](function(_0x209e50){logger['error'](_0x2022('0xe'),_0x65fa2a,_0x209e50);_0x360575(_0x209e50);});});}
\ No newline at end of file
+var _0x7535=['error','message','result','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x3fc9ed,_0x5c315f){var _0x446644=function(_0x49fd5d){while(--_0x49fd5d){_0x3fc9ed['push'](_0x3fc9ed['shift']());}};_0x446644(++_0x5c315f);}(_0x7535,0x193));var _0x5753=function(_0x48c4ef,_0x319d44){_0x48c4ef=_0x48c4ef-0x0;var _0x435715=_0x7535[_0x48c4ef];return _0x435715;};'use strict';var _=require(_0x5753('0x0'));var util=require(_0x5753('0x1'));var moment=require(_0x5753('0x2'));var BPromise=require(_0x5753('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5753('0x4'));var logger=require(_0x5753('0x5'))('rpc');var config=require(_0x5753('0x6'));var jayson=require(_0x5753('0x7'));var client=jayson[_0x5753('0x8')][_0x5753('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2389a0,_0x512f6c,_0x1cafc2){return new BPromise(function(_0x42275f,_0x199e52){return client[_0x5753('0xa')](_0x2389a0,_0x1cafc2)[_0x5753('0xb')](function(_0x2551cd){logger[_0x5753('0xc')](_0x5753('0xd'),_0x512f6c,_0x5753('0xe'));logger[_0x5753('0xf')](_0x5753('0x10'),_0x512f6c,_0x5753('0xe'),JSON['stringify'](_0x2551cd));if(_0x2551cd[_0x5753('0x11')]){if(_0x2551cd['error']['code']===0x1f4){logger['error'](_0x5753('0xd'),_0x512f6c,_0x2551cd[_0x5753('0x11')][_0x5753('0x12')]);return _0x199e52(_0x2551cd[_0x5753('0x11')][_0x5753('0x12')]);}logger['error']('MailTransferReport,\x20%s,\x20%s',_0x512f6c,_0x2551cd['error'][_0x5753('0x12')]);return _0x42275f(_0x2551cd[_0x5753('0x11')]['message']);}else{logger[_0x5753('0xc')]('MailTransferReport,\x20%s,\x20%s',_0x512f6c,_0x5753('0xe'));_0x42275f(_0x2551cd[_0x5753('0x13')]['message']);}})[_0x5753('0x14')](function(_0xea5f7b){logger[_0x5753('0x11')](_0x5753('0xd'),_0x512f6c,_0xea5f7b);_0x199e52(_0xea5f7b);});});}
\ No newline at end of file
index b3d2a4a..4bc0e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f12=['isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get'];(function(_0xf29fa8,_0x4e2f6b){var _0x5a7b84=function(_0x42ae62){while(--_0x42ae62){_0xf29fa8['push'](_0xf29fa8['shift']());}};_0x5a7b84(++_0x4e2f6b);}(_0x8f12,0x15c));var _0x28f1=function(_0x5dc2fa,_0x56279d){_0x5dc2fa=_0x5dc2fa-0x0;var _0x16eaf9=_0x8f12[_0x5dc2fa];return _0x16eaf9;};'use strict';var multer=require('multer');var util=require(_0x28f1('0x0'));var path=require(_0x28f1('0x1'));var timeout=require(_0x28f1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x28f1('0x3'));var auth=require(_0x28f1('0x4'));var interaction=require(_0x28f1('0x5'));var config=require(_0x28f1('0x6'));var controller=require(_0x28f1('0x7'));router[_0x28f1('0x8')]('/',auth[_0x28f1('0x9')](),controller[_0x28f1('0xa')]);router[_0x28f1('0x8')](_0x28f1('0xb'),auth[_0x28f1('0x9')](),controller[_0x28f1('0xc')]);router['get'](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller['show']);router[_0x28f1('0xe')]('/',auth['isAuthenticated'](),controller[_0x28f1('0xf')]);router[_0x28f1('0x10')](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller[_0x28f1('0x11')]);router[_0x28f1('0x12')](_0x28f1('0xd'),auth[_0x28f1('0x9')](),controller[_0x28f1('0x13')]);module[_0x28f1('0x14')]=router;
\ No newline at end of file
+var _0x88bd=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util'];(function(_0x396954,_0x57f698){var _0x397b10=function(_0x3c44c0){while(--_0x3c44c0){_0x396954['push'](_0x396954['shift']());}};_0x397b10(++_0x57f698);}(_0x88bd,0x11b));var _0xd88b=function(_0xf95af8,_0x2f35d3){_0xf95af8=_0xf95af8-0x0;var _0x489344=_0x88bd[_0xf95af8];return _0x489344;};'use strict';var multer=require(_0xd88b('0x0'));var util=require(_0xd88b('0x1'));var path=require(_0xd88b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd88b('0x3')]();var fs_extra=require(_0xd88b('0x4'));var auth=require(_0xd88b('0x5'));var interaction=require(_0xd88b('0x6'));var config=require('../../config/environment');var controller=require('./memberReport.controller');router['get']('/',auth[_0xd88b('0x7')](),controller['index']);router[_0xd88b('0x8')](_0xd88b('0x9'),auth['isAuthenticated'](),controller[_0xd88b('0xa')]);router[_0xd88b('0x8')](_0xd88b('0xb'),auth[_0xd88b('0x7')](),controller[_0xd88b('0xc')]);router['post']('/',auth[_0xd88b('0x7')](),controller[_0xd88b('0xd')]);router[_0xd88b('0xe')](_0xd88b('0xb'),auth[_0xd88b('0x7')](),controller[_0xd88b('0xf')]);router[_0xd88b('0x10')](_0xd88b('0xb'),auth['isAuthenticated'](),controller[_0xd88b('0x11')]);module[_0xd88b('0x12')]=router;
\ No newline at end of file
index 0a0bc72..b66b7f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487e=['INTEGER','DATE','getDataValue','diff','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','sequelize','exports','STRING','DEFAULT\x20PAUSE'];(function(_0x1a27f3,_0x1c082d){var _0x3ce222=function(_0x3f93e1){while(--_0x3f93e1){_0x1a27f3['push'](_0x1a27f3['shift']());}};_0x3ce222(++_0x1c082d);}(_0x487e,0xbf));var _0xe487=function(_0x4fb263,_0x4bc9b6){_0x4fb263=_0x4fb263-0x0;var _0x280529=_0x487e[_0x4fb263];return _0x280529;};'use strict';var Sequelize=require(_0xe487('0x0'));var moment=require('moment');module[_0xe487('0x1')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xe487('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xe487('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0xe487('0x4')]},'enterAt':{'type':Sequelize[_0xe487('0x5')]},'exitAt':{'type':Sequelize[_0xe487('0x5')],'set':function(_0x2c92b5){var _0x2173e9=moment(_0x2c92b5);var _0x317e53=moment(this[_0xe487('0x6')]('enterAt'));var _0x9d00e8=_0x2173e9[_0xe487('0x7')](_0x317e53,_0xe487('0x8'));this[_0xe487('0x9')]('exitAt',_0x2c92b5);this[_0xe487('0x9')](_0xe487('0xa'),_0x9d00e8>=0x0?_0x9d00e8:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xe487('0xb')},'data2':{'type':Sequelize[_0xe487('0x2')],'comment':_0xe487('0xc')},'data3':{'type':Sequelize['STRING'],'comment':_0xe487('0xd')},'data4':{'type':Sequelize[_0xe487('0x2')],'comment':_0xe487('0xe')},'data5':{'type':Sequelize[_0xe487('0x2')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xe487('0x4')]},'uniqueid':{'type':Sequelize[_0xe487('0x2')]}};
\ No newline at end of file
+var _0xd480=['INTEGER','DATE','getDataValue','diff','seconds','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','STRING','DEFAULT\x20PAUSE'];(function(_0x1bc984,_0x3d3ecd){var _0x181685=function(_0xdf29db){while(--_0xdf29db){_0x1bc984['push'](_0x1bc984['shift']());}};_0x181685(++_0x3d3ecd);}(_0xd480,0x8c));var _0x0d48=function(_0xf47ad9,_0x257ae2){_0xf47ad9=_0xf47ad9-0x0;var _0x2ff18e=_0xd480[_0xf47ad9];return _0x2ff18e;};'use strict';var Sequelize=require(_0x0d48('0x0'));var moment=require(_0x0d48('0x1'));module['exports']={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x0d48('0x2')]},'interface':{'type':Sequelize[_0x0d48('0x2')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0x0d48('0x3'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x0d48('0x4')]},'enterAt':{'type':Sequelize[_0x0d48('0x5')]},'exitAt':{'type':Sequelize[_0x0d48('0x5')],'set':function(_0x304dc1){var _0x499ce1=moment(_0x304dc1);var _0x32276e=moment(this[_0x0d48('0x6')]('enterAt'));var _0x3ff03d=_0x499ce1[_0x0d48('0x7')](_0x32276e,_0x0d48('0x8'));this['setDataValue'](_0x0d48('0x9'),_0x304dc1);this['setDataValue'](_0x0d48('0xa'),_0x3ff03d>=0x0?_0x3ff03d:null);}},'data1':{'type':Sequelize[_0x0d48('0x2')],'comment':_0x0d48('0xb')},'data2':{'type':Sequelize['STRING'],'comment':_0x0d48('0xc')},'data3':{'type':Sequelize['STRING'],'comment':_0x0d48('0xd')},'data4':{'type':Sequelize[_0x0d48('0x2')],'comment':_0x0d48('0xe')},'data5':{'type':Sequelize[_0x0d48('0x2')],'comment':_0x0d48('0xf')},'role':{'type':Sequelize[_0x0d48('0x2')]},'internal':{'type':Sequelize[_0x0d48('0x4')]},'uniqueid':{'type':Sequelize[_0x0d48('0x2')]}};
\ No newline at end of file
index 90e5e10..67ba657 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x55ca,0x126));var _0xa55c=function(_0xd056f7,_0xedbba9){_0xd056f7=_0xd056f7-0x0;var _0xbcb407=_0x55ca[_0xd056f7];return _0xbcb407;};'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 _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x1091a8,_0x466c06){var _0x5414dc=function(_0x5658fc){while(--_0x5658fc){_0x1091a8['push'](_0x1091a8['shift']());}};_0x5414dc(++_0x466c06);}(_0x7217,0x19e));var _0x7721=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x7217[_0x1ddedd];return _0xa3e1ac;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
index d63f9c2..6b6ab69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34d2=['path','rimraf','exports','define','MemberReport','report_member','membername_interface','interface','util','bluebird'];(function(_0x5d5979,_0x3b4921){var _0x237182=function(_0xbd4df7){while(--_0xbd4df7){_0x5d5979['push'](_0x5d5979['shift']());}};_0x237182(++_0x3b4921);}(_0x34d2,0x12a));var _0x234d=function(_0x2319ff,_0x43805f){_0x2319ff=_0x2319ff-0x0;var _0xf5c03d=_0x34d2[_0x2319ff];return _0xf5c03d;};'use strict';var _=require('lodash');var util=require(_0x234d('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x234d('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x234d('0x2'));var rimraf=require(_0x234d('0x3'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x234d('0x4')]=function(_0x51b0bd,_0x567456){return _0x51b0bd[_0x234d('0x5')](_0x234d('0x6'),attributes,{'tableName':_0x234d('0x7'),'paranoid':![],'indexes':[{'name':_0x234d('0x8'),'fields':['membername',_0x234d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8745=['MemberReport','report_member','membername_interface','membername','lodash','util','api','moment','request-promise','path','../../config/environment','./memberReport.attributes','exports','define'];(function(_0x17c8cc,_0x5e5647){var _0x3db4eb=function(_0x2082db){while(--_0x2082db){_0x17c8cc['push'](_0x17c8cc['shift']());}};_0x3db4eb(++_0x5e5647);}(_0x8745,0xc8));var _0x5874=function(_0x1ebba2,_0x71be2e){_0x1ebba2=_0x1ebba2-0x0;var _0xd7a1a2=_0x8745[_0x1ebba2];return _0xd7a1a2;};'use strict';var _=require(_0x5874('0x0'));var util=require(_0x5874('0x1'));var logger=require('../../config/logger')(_0x5874('0x2'));var moment=require(_0x5874('0x3'));var BPromise=require('bluebird');var rp=require(_0x5874('0x4'));var fs=require('fs');var path=require(_0x5874('0x5'));var rimraf=require('rimraf');var config=require(_0x5874('0x6'));var attributes=require(_0x5874('0x7'));module[_0x5874('0x8')]=function(_0x46848c,_0x2bba11){return _0x46848c[_0x5874('0x9')](_0x5874('0xa'),attributes,{'tableName':_0x5874('0xb'),'paranoid':![],'indexes':[{'name':_0x5874('0xc'),'fields':[_0x5874('0xd'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index f19a1b9..196948d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91c6=['http','request','info','MemberReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetMemberReport','MemberReport','raw','options','attributes','limit','map','include','model','debug','CreateMemberReport','create','body','then','UpdateMemberReport','update','where','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x91c6,0xf9));var _0x691c=function(_0x5e548c,_0x143ad9){_0x5e548c=_0x5e548c-0x0;var _0xbf0b87=_0x91c6[_0x5e548c];return _0xbf0b87;};'use strict';var _=require(_0x691c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x691c('0x1'));var rs=require(_0x691c('0x2'));var fs=require('fs');var Redis=require(_0x691c('0x3'));var db=require(_0x691c('0x4'))['db'];var utils=require(_0x691c('0x5'));var logger=require('../../config/logger')(_0x691c('0x6'));var config=require(_0x691c('0x7'));var jayson=require(_0x691c('0x8'));var client=jayson[_0x691c('0x9')][_0x691c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29876a,_0x5ccbe0,_0x93b7b0){return new BPromise(function(_0x40629a,_0xda904f){return client[_0x691c('0xb')](_0x29876a,_0x93b7b0)['then'](function(_0x2cfa1f){logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,'request\x20sent');logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x5ccbe0,_0x691c('0xe'),JSON[_0x691c('0xf')](_0x2cfa1f));if(_0x2cfa1f[_0x691c('0x10')]){if(_0x2cfa1f[_0x691c('0x10')]['code']===0x1f4){logger['error'](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);return _0xda904f(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x2cfa1f[_0x691c('0x10')]['message']);return _0x40629a(_0x2cfa1f[_0x691c('0x10')][_0x691c('0x11')]);}else{logger[_0x691c('0xc')](_0x691c('0xd'),_0x5ccbe0,_0x691c('0xe'));_0x40629a(_0x2cfa1f[_0x691c('0x12')][_0x691c('0x11')]);}})[_0x691c('0x13')](function(_0x482351){logger[_0x691c('0x10')](_0x691c('0xd'),_0x5ccbe0,_0x482351);_0xda904f(_0x482351);});});}exports[_0x691c('0x14')]=function(_0x299653){var _0x436951=this;return new Promise(function(_0x522ad0,_0x11e7b5){return db[_0x691c('0x15')]['findAll']({'raw':_0x299653['options']?_0x299653['options'][_0x691c('0x16')]===undefined?!![]:![]:!![],'where':_0x299653['options']?_0x299653[_0x691c('0x17')]['where']||null:null,'attributes':_0x299653['options']?_0x299653[_0x691c('0x17')][_0x691c('0x18')]||null:null,'limit':_0x299653[_0x691c('0x17')]?_0x299653[_0x691c('0x17')][_0x691c('0x19')]||null:null,'include':_0x299653['options']?_0x299653[_0x691c('0x17')]['include']?_[_0x691c('0x1a')](_0x299653['options'][_0x691c('0x1b')],function(_0x52abf){return{'model':db[_0x52abf[_0x691c('0x1c')]],'as':_0x52abf['as'],'attributes':_0x52abf[_0x691c('0x18')],'include':_0x52abf[_0x691c('0x1b')]?_['map'](_0x52abf[_0x691c('0x1b')],function(_0x5a1635){return{'model':db[_0x5a1635[_0x691c('0x1c')]],'as':_0x5a1635['as'],'attributes':_0x5a1635[_0x691c('0x18')],'include':_0x5a1635[_0x691c('0x1b')]?_[_0x691c('0x1a')](_0x5a1635[_0x691c('0x1b')],function(_0x4281ad){return{'model':db[_0x4281ad[_0x691c('0x1c')]],'as':_0x4281ad['as'],'attributes':_0x4281ad[_0x691c('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x7a07ec){logger[_0x691c('0xc')](_0x691c('0x14'),_0x299653);logger[_0x691c('0x1d')]('GetMemberReport',_0x299653,JSON['stringify'](_0x7a07ec));_0x522ad0(_0x7a07ec);})[_0x691c('0x13')](function(_0xcceaa){logger['error'](_0x691c('0x14'),_0xcceaa['message'],_0x299653);_0x11e7b5(_0x436951[_0x691c('0x10')](0x1f4,_0xcceaa['message']));});});};exports[_0x691c('0x1e')]=function(_0x2cb3ab){var _0x21c531=this;return new Promise(function(_0x5cebbd,_0x547db9){return db[_0x691c('0x15')][_0x691c('0x1f')](_0x2cb3ab[_0x691c('0x20')],{'raw':_0x2cb3ab[_0x691c('0x17')]?_0x2cb3ab[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![]})[_0x691c('0x21')](function(_0x5b1259){logger[_0x691c('0xc')](_0x691c('0x1e'),_0x2cb3ab);logger['debug'](_0x691c('0x1e'),_0x2cb3ab,JSON[_0x691c('0xf')](_0x5b1259));_0x5cebbd(_0x5b1259);})[_0x691c('0x13')](function(_0x4367cc){logger['error'](_0x691c('0x1e'),_0x4367cc[_0x691c('0x11')],_0x2cb3ab);_0x547db9(_0x21c531[_0x691c('0x10')](0x1f4,_0x4367cc['message']));});});};exports[_0x691c('0x22')]=function(_0x37a7da){var _0x8cbbf7=this;return new Promise(function(_0x2ca9d4,_0x278f65){return db['MemberReport'][_0x691c('0x23')](_0x37a7da[_0x691c('0x20')],{'raw':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37a7da[_0x691c('0x17')]?_0x37a7da['options'][_0x691c('0x24')]||null:null,'attributes':_0x37a7da['options']?_0x37a7da['options'][_0x691c('0x18')]||null:null,'limit':_0x37a7da[_0x691c('0x17')]?_0x37a7da[_0x691c('0x17')][_0x691c('0x19')]||null:null})['then'](function(_0x41dfb5){logger[_0x691c('0xc')](_0x691c('0x22'),_0x37a7da);logger[_0x691c('0x1d')](_0x691c('0x22'),_0x37a7da,JSON[_0x691c('0xf')](_0x41dfb5));_0x2ca9d4(_0x41dfb5);})[_0x691c('0x13')](function(_0x2c2cc4){logger[_0x691c('0x10')](_0x691c('0x22'),_0x2c2cc4[_0x691c('0x11')],_0x37a7da);_0x278f65(_0x8cbbf7['error'](0x1f4,_0x2c2cc4[_0x691c('0x11')]));});});};
\ No newline at end of file
+var _0x236d=['info','result','catch','GetMemberReport','MemberReport','options','raw','where','attributes','limit','include','model','map','CreateMemberReport','create','update','body','UpdateMemberReport','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x471549,_0x57e70c){var _0x3edc50=function(_0x370551){while(--_0x370551){_0x471549['push'](_0x471549['shift']());}};_0x3edc50(++_0x57e70c);}(_0x236d,0x7e));var _0xd236=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x236d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd236('0x0'));var util=require(_0xd236('0x1'));var moment=require('moment');var BPromise=require(_0xd236('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd236('0x3'));var db=require(_0xd236('0x4'))['db'];var utils=require(_0xd236('0x5'));var logger=require(_0xd236('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd236('0x7'));var client=jayson[_0xd236('0x8')][_0xd236('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1aedc6,_0x58c59e,_0x54ac9c){return new BPromise(function(_0x2d9025,_0x18d969){return client['request'](_0x1aedc6,_0x54ac9c)[_0xd236('0xa')](function(_0x110545){logger['info'](_0xd236('0xb'),_0x58c59e,_0xd236('0xc'));logger[_0xd236('0xd')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x58c59e,_0xd236('0xc'),JSON[_0xd236('0xe')](_0x110545));if(_0x110545[_0xd236('0xf')]){if(_0x110545['error'][_0xd236('0x10')]===0x1f4){logger[_0xd236('0xf')](_0xd236('0xb'),_0x58c59e,_0x110545[_0xd236('0xf')][_0xd236('0x11')]);return _0x18d969(_0x110545[_0xd236('0xf')][_0xd236('0x11')]);}logger[_0xd236('0xf')](_0xd236('0xb'),_0x58c59e,_0x110545[_0xd236('0xf')][_0xd236('0x11')]);return _0x2d9025(_0x110545[_0xd236('0xf')][_0xd236('0x11')]);}else{logger[_0xd236('0x12')](_0xd236('0xb'),_0x58c59e,_0xd236('0xc'));_0x2d9025(_0x110545[_0xd236('0x13')][_0xd236('0x11')]);}})[_0xd236('0x14')](function(_0x1956a4){logger['error']('MemberReport,\x20%s,\x20%s',_0x58c59e,_0x1956a4);_0x18d969(_0x1956a4);});});}exports[_0xd236('0x15')]=function(_0x1b02a5){var _0x5346f1=this;return new Promise(function(_0x11c6ec,_0x3484fb){return db[_0xd236('0x16')]['findAll']({'raw':_0x1b02a5[_0xd236('0x17')]?_0x1b02a5[_0xd236('0x17')][_0xd236('0x18')]===undefined?!![]:![]:!![],'where':_0x1b02a5['options']?_0x1b02a5[_0xd236('0x17')][_0xd236('0x19')]||null:null,'attributes':_0x1b02a5[_0xd236('0x17')]?_0x1b02a5[_0xd236('0x17')][_0xd236('0x1a')]||null:null,'limit':_0x1b02a5['options']?_0x1b02a5[_0xd236('0x17')][_0xd236('0x1b')]||null:null,'include':_0x1b02a5[_0xd236('0x17')]?_0x1b02a5[_0xd236('0x17')][_0xd236('0x1c')]?_['map'](_0x1b02a5['options'][_0xd236('0x1c')],function(_0x4be5ac){return{'model':db[_0x4be5ac[_0xd236('0x1d')]],'as':_0x4be5ac['as'],'attributes':_0x4be5ac['attributes'],'include':_0x4be5ac[_0xd236('0x1c')]?_[_0xd236('0x1e')](_0x4be5ac[_0xd236('0x1c')],function(_0x49d822){return{'model':db[_0x49d822[_0xd236('0x1d')]],'as':_0x49d822['as'],'attributes':_0x49d822[_0xd236('0x1a')],'include':_0x49d822[_0xd236('0x1c')]?_[_0xd236('0x1e')](_0x49d822[_0xd236('0x1c')],function(_0x17f927){return{'model':db[_0x17f927[_0xd236('0x1d')]],'as':_0x17f927['as'],'attributes':_0x17f927[_0xd236('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd236('0xa')](function(_0x2be500){logger[_0xd236('0x12')](_0xd236('0x15'),_0x1b02a5);logger[_0xd236('0xd')](_0xd236('0x15'),_0x1b02a5,JSON[_0xd236('0xe')](_0x2be500));_0x11c6ec(_0x2be500);})[_0xd236('0x14')](function(_0x436a19){logger[_0xd236('0xf')](_0xd236('0x15'),_0x436a19[_0xd236('0x11')],_0x1b02a5);_0x3484fb(_0x5346f1[_0xd236('0xf')](0x1f4,_0x436a19[_0xd236('0x11')]));});});};exports[_0xd236('0x1f')]=function(_0x36f8d4){var _0xdd34a4=this;return new Promise(function(_0x1c50ae,_0xed1acb){return db[_0xd236('0x16')][_0xd236('0x20')](_0x36f8d4['body'],{'raw':_0x36f8d4[_0xd236('0x17')]?_0x36f8d4['options'][_0xd236('0x18')]===undefined?!![]:![]:!![]})[_0xd236('0xa')](function(_0x73a2fb){logger['info'](_0xd236('0x1f'),_0x36f8d4);logger[_0xd236('0xd')](_0xd236('0x1f'),_0x36f8d4,JSON[_0xd236('0xe')](_0x73a2fb));_0x1c50ae(_0x73a2fb);})[_0xd236('0x14')](function(_0x4457f2){logger[_0xd236('0xf')]('CreateMemberReport',_0x4457f2[_0xd236('0x11')],_0x36f8d4);_0xed1acb(_0xdd34a4['error'](0x1f4,_0x4457f2[_0xd236('0x11')]));});});};exports['UpdateMemberReport']=function(_0x1fd01b){var _0xb75faa=this;return new Promise(function(_0x366128,_0x208914){return db[_0xd236('0x16')][_0xd236('0x21')](_0x1fd01b[_0xd236('0x22')],{'raw':_0x1fd01b[_0xd236('0x17')]?_0x1fd01b[_0xd236('0x17')][_0xd236('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fd01b[_0xd236('0x17')]?_0x1fd01b[_0xd236('0x17')][_0xd236('0x19')]||null:null,'attributes':_0x1fd01b['options']?_0x1fd01b[_0xd236('0x17')][_0xd236('0x1a')]||null:null,'limit':_0x1fd01b[_0xd236('0x17')]?_0x1fd01b['options'][_0xd236('0x1b')]||null:null})[_0xd236('0xa')](function(_0x10e3de){logger[_0xd236('0x12')](_0xd236('0x23'),_0x1fd01b);logger[_0xd236('0xd')]('UpdateMemberReport',_0x1fd01b,JSON[_0xd236('0xe')](_0x10e3de));_0x366128(_0x10e3de);})[_0xd236('0x14')](function(_0x21da6b){logger[_0xd236('0xf')](_0xd236('0x23'),_0x21da6b[_0xd236('0x11')],_0x1fd01b);_0x208914(_0xb75faa['error'](0x1f4,_0x21da6b[_0xd236('0x11')]));});});};
\ No newline at end of file
index fa02198..0ccc8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0a2=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','./migration.controller','index','multer'];(function(_0x1ab21c,_0x446e99){var _0x53dcb1=function(_0x482a6f){while(--_0x482a6f){_0x1ab21c['push'](_0x1ab21c['shift']());}};_0x53dcb1(++_0x446e99);}(_0xf0a2,0x1ca));var _0x2f0a=function(_0x813f9e,_0x1a7588){_0x813f9e=_0x813f9e-0x0;var _0x7c37e7=_0xf0a2[_0x813f9e];return _0x7c37e7;};'use strict';var multer=require(_0x2f0a('0x0'));var util=require(_0x2f0a('0x1'));var path=require(_0x2f0a('0x2'));var timeout=require(_0x2f0a('0x3'));var express=require(_0x2f0a('0x4'));var router=express['Router']();var fs_extra=require(_0x2f0a('0x5'));var auth=require(_0x2f0a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2f0a('0x7'));router['get']('/',controller[_0x2f0a('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x5e40=['multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','./migration.controller','index','exports'];(function(_0x54c880,_0x111122){var _0x5d4241=function(_0x183911){while(--_0x183911){_0x54c880['push'](_0x54c880['shift']());}};_0x5d4241(++_0x111122);}(_0x5e40,0x1a4));var _0x05e4=function(_0xc8be6f,_0x12a6ae){_0xc8be6f=_0xc8be6f-0x0;var _0x338373=_0x5e40[_0xc8be6f];return _0x338373;};'use strict';var multer=require(_0x05e4('0x0'));var util=require(_0x05e4('0x1'));var path=require('path');var timeout=require(_0x05e4('0x2'));var express=require(_0x05e4('0x3'));var router=express[_0x05e4('0x4')]();var fs_extra=require(_0x05e4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x05e4('0x6'));var controller=require(_0x05e4('0x7'));router['get']('/',controller[_0x05e4('0x8')]);module[_0x05e4('0x9')]=router;
\ No newline at end of file
index 64097de..2998a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8299=['STRING','version','sequelize','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x8299,0x96));var _0x9829=function(_0x364780,_0x5ae20a){_0x364780=_0x364780-0x0;var _0x2dfcd8=_0x8299[_0x364780];return _0x2dfcd8;};'use strict';var Sequelize=require(_0x9829('0x0'));module[_0x9829('0x1')]={'version':{'type':Sequelize[_0x9829('0x2')],'unique':_0x9829('0x3')}};
\ No newline at end of file
+var _0x93e5=['exports','version','sequelize'];(function(_0x1c499c,_0x1ba2bf){var _0x1dfccf=function(_0x5e82a3){while(--_0x5e82a3){_0x1c499c['push'](_0x1c499c['shift']());}};_0x1dfccf(++_0x1ba2bf);}(_0x93e5,0x140));var _0x593e=function(_0xd22a4e,_0x118b23){_0xd22a4e=_0xd22a4e-0x0;var _0x44f81e=_0x93e5[_0xd22a4e];return _0x44f81e;};'use strict';var Sequelize=require(_0x593e('0x0'));module[_0x593e('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0x593e('0x2')}};
\ No newline at end of file
index 7f8a8eb..9541188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b4=['includeAll','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','merge','VIRTUAL','filter','options','Migration'];(function(_0x5067c6,_0x3f1e9e){var _0xb5daa3=function(_0x45337e){while(--_0x45337e){_0x5067c6['push'](_0x5067c6['shift']());}};_0xb5daa3(++_0x3f1e9e);}(_0x37b4,0x16d));var _0x437b=function(_0x5b3ce1,_0xedd65b){_0x5b3ce1=_0x5b3ce1-0x0;var _0x38b358=_0x37b4[_0x5b3ce1];return _0x38b358;};'use strict';var emlformat=require(_0x437b('0x0'));var rimraf=require(_0x437b('0x1'));var zipdir=require(_0x437b('0x2'));var jsonpatch=require(_0x437b('0x3'));var rp=require(_0x437b('0x4'));var moment=require(_0x437b('0x5'));var BPromise=require(_0x437b('0x6'));var Mustache=require(_0x437b('0x7'));var util=require(_0x437b('0x8'));var path=require(_0x437b('0x9'));var sox=require(_0x437b('0xa'));var csv=require(_0x437b('0xb'));var ejs=require(_0x437b('0xc'));var fs=require('fs');var fs_extra=require(_0x437b('0xd'));var _=require(_0x437b('0xe'));var squel=require(_0x437b('0xf'));var crypto=require(_0x437b('0x10'));var jsforce=require(_0x437b('0x11'));var deskjs=require(_0x437b('0x12'));var toCsv=require(_0x437b('0xb'));var querystring=require(_0x437b('0x13'));var Papa=require(_0x437b('0x14'));var Redis=require(_0x437b('0x15'));var authService=require(_0x437b('0x16'));var qs=require(_0x437b('0x17'));var as=require(_0x437b('0x18'));var hardwareService=require(_0x437b('0x19'));var logger=require('../../config/logger')(_0x437b('0x1a'));var utils=require(_0x437b('0x1b'));var config=require(_0x437b('0x1c'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x572a46,_0x3ff94e){_0x3ff94e=_0x3ff94e||0xcc;return function(_0x185ba4){if(_0x185ba4){return _0x572a46[_0x437b('0x1d')](_0x3ff94e);}return _0x572a46[_0x437b('0x1e')](_0x3ff94e)[_0x437b('0x1f')]();};}function respondWithResult(_0x5122ad,_0x4910db){_0x4910db=_0x4910db||0xc8;return function(_0x4c5b93){if(_0x4c5b93){return _0x5122ad[_0x437b('0x1e')](_0x4910db)[_0x437b('0x20')](_0x4c5b93);}};}function respondWithFilteredResult(_0x47aada,_0x216152){return function(_0x4e5419){if(_0x4e5419){var _0x4f9a9b=typeof _0x216152[_0x437b('0x21')]===_0x437b('0x22')&&typeof _0x216152[_0x437b('0x23')]==='undefined';var _0x4a1a67=_0x4e5419['count'];var _0x484971=_0x4f9a9b?0x0:_0x216152[_0x437b('0x21')];var _0xa4af68=_0x4f9a9b?_0x4e5419[_0x437b('0x24')]:_0x216152[_0x437b('0x21')]+_0x216152[_0x437b('0x23')];var _0x5e66e7;if(_0xa4af68>=_0x4a1a67){_0xa4af68=_0x4a1a67;_0x5e66e7=0xc8;}else{_0x5e66e7=0xce;}_0x47aada[_0x437b('0x1e')](_0x5e66e7);return _0x47aada[_0x437b('0x25')](_0x437b('0x26'),_0x484971+'-'+_0xa4af68+'/'+_0x4a1a67)[_0x437b('0x20')](_0x4e5419);}return null;};}function patchUpdates(_0x540ecd){return function(_0x3d27fb){try{jsonpatch['apply'](_0x3d27fb,_0x540ecd,!![]);}catch(_0x375790){return BPromise['reject'](_0x375790);}return _0x3d27fb[_0x437b('0x27')]();};}function saveUpdates(_0x26de4d,_0x7bd7a1){return function(_0x39924e){if(_0x39924e){return _0x39924e[_0x437b('0x28')](_0x26de4d)[_0x437b('0x29')](function(_0x47395b){return _0x47395b;});}return null;};}function removeEntity(_0x7739a0,_0x13746a){return function(_0x1d617f){if(_0x1d617f){return _0x1d617f[_0x437b('0x2a')]()['then'](function(){_0x7739a0[_0x437b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x287996,_0x4ecdb3){return function(_0x2400c7){if(!_0x2400c7){_0x287996[_0x437b('0x1d')](0x194);}return _0x2400c7;};}function handleError(_0x2c2199,_0x4c77fc){_0x4c77fc=_0x4c77fc||0x1f4;return function(_0x44ff83){logger['error'](_0x44ff83[_0x437b('0x2b')]);if(_0x44ff83['name']){delete _0x44ff83['name'];}_0x2c2199['status'](_0x4c77fc)[_0x437b('0x2c')](_0x44ff83);};}exports[_0x437b('0x2d')]=function(_0x1c4801,_0xecd8e7){var _0x1816bd={},_0x2f30aa={},_0x2dc6ad={'count':0x0,'rows':[]};var _0x43594d=_[_0x437b('0x2e')](db['Migration'][_0x437b('0x2f')],function(_0x4cde46){return{'name':_0x4cde46[_0x437b('0x30')],'type':_0x4cde46[_0x437b('0x31')][_0x437b('0x32')]};});_0x2f30aa[_0x437b('0x33')]=_[_0x437b('0x2e')](_0x43594d,_0x437b('0x34'));_0x2f30aa[_0x437b('0x35')]=_['keys'](_0x1c4801[_0x437b('0x35')]);_0x2f30aa['filters']=_[_0x437b('0x36')](_0x2f30aa[_0x437b('0x33')],_0x2f30aa[_0x437b('0x35')]);_0x1816bd[_0x437b('0x37')]=_[_0x437b('0x36')](_0x2f30aa['model'],qs[_0x437b('0x38')](_0x1c4801['query'][_0x437b('0x38')]));_0x1816bd[_0x437b('0x37')]=_0x1816bd['attributes'][_0x437b('0x39')]?_0x1816bd[_0x437b('0x37')]:_0x2f30aa[_0x437b('0x33')];if(!_0x1c4801[_0x437b('0x35')][_0x437b('0x3a')]('nolimit')){_0x1816bd[_0x437b('0x23')]=qs[_0x437b('0x23')](_0x1c4801[_0x437b('0x35')][_0x437b('0x23')]);_0x1816bd[_0x437b('0x21')]=qs[_0x437b('0x21')](_0x1c4801['query'][_0x437b('0x21')]);}_0x1816bd['order']=qs[_0x437b('0x3b')](_0x1c4801[_0x437b('0x35')][_0x437b('0x3b')]);_0x1816bd[_0x437b('0x3c')]=qs['filters'](_['pick'](_0x1c4801['query'],_0x2f30aa[_0x437b('0x3d')]),_0x43594d);if(_0x1c4801[_0x437b('0x35')]['filter']){_0x1816bd[_0x437b('0x3c')]=_[_0x437b('0x3e')](_0x1816bd[_0x437b('0x3c')],{'$or':_[_0x437b('0x2e')](_0x43594d,function(_0x31d421){if(_0x31d421[_0x437b('0x31')]!==_0x437b('0x3f')){var _0x13e37d={};_0x13e37d[_0x31d421['name']]={'$like':'%'+_0x1c4801['query'][_0x437b('0x40')]+'%'};return _0x13e37d;}})});}_0x1816bd=_[_0x437b('0x3e')]({},_0x1816bd,_0x1c4801[_0x437b('0x41')]);var _0x2fd486={'where':_0x1816bd[_0x437b('0x3c')]};return db[_0x437b('0x42')][_0x437b('0x24')](_0x2fd486)[_0x437b('0x29')](function(_0x4f0057){_0x2dc6ad[_0x437b('0x24')]=_0x4f0057;if(_0x1c4801[_0x437b('0x35')][_0x437b('0x43')]){_0x1816bd[_0x437b('0x44')]=[{'all':!![]}];}return db[_0x437b('0x42')][_0x437b('0x45')](_0x1816bd);})[_0x437b('0x29')](function(_0x24b532){_0x2dc6ad[_0x437b('0x46')]=_0x24b532;return _0x2dc6ad;})[_0x437b('0x29')](respondWithFilteredResult(_0xecd8e7,_0x1816bd))[_0x437b('0x47')](handleError(_0xecd8e7,null));};
\ No newline at end of file
+var _0x5c7b=['zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','error','name','send','map','Migration','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','rows','catch','eml-format','rimraf'];(function(_0x32d52a,_0x51451e){var _0x5663af=function(_0x2bb1de){while(--_0x2bb1de){_0x32d52a['push'](_0x32d52a['shift']());}};_0x5663af(++_0x51451e);}(_0x5c7b,0x194));var _0xb5c7=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x5c7b[_0x36ed48];return _0x51c63a;};'use strict';var emlformat=require(_0xb5c7('0x0'));var rimraf=require(_0xb5c7('0x1'));var zipdir=require(_0xb5c7('0x2'));var jsonpatch=require(_0xb5c7('0x3'));var rp=require('request-promise');var moment=require(_0xb5c7('0x4'));var BPromise=require(_0xb5c7('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb5c7('0x6'));var csv=require(_0xb5c7('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5c7('0x8'));var _=require(_0xb5c7('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb5c7('0xa'));var deskjs=require(_0xb5c7('0xb'));var toCsv=require(_0xb5c7('0x7'));var querystring=require('querystring');var Papa=require(_0xb5c7('0xc'));var Redis=require(_0xb5c7('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xb5c7('0xe'));var as=require(_0xb5c7('0xf'));var hardwareService=require(_0xb5c7('0x10'));var logger=require('../../config/logger')(_0xb5c7('0x11'));var utils=require(_0xb5c7('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21a886,_0x50a0df){_0x50a0df=_0x50a0df||0xcc;return function(_0x3faf45){if(_0x3faf45){return _0x21a886['sendStatus'](_0x50a0df);}return _0x21a886[_0xb5c7('0x13')](_0x50a0df)[_0xb5c7('0x14')]();};}function respondWithResult(_0x3dd1e9,_0xddfb7a){_0xddfb7a=_0xddfb7a||0xc8;return function(_0x1fc686){if(_0x1fc686){return _0x3dd1e9[_0xb5c7('0x13')](_0xddfb7a)[_0xb5c7('0x15')](_0x1fc686);}};}function respondWithFilteredResult(_0x4829aa,_0x59acfb){return function(_0x74f5df){if(_0x74f5df){var _0x883641=typeof _0x59acfb[_0xb5c7('0x16')]===_0xb5c7('0x17')&&typeof _0x59acfb[_0xb5c7('0x18')]==='undefined';var _0x42dba7=_0x74f5df[_0xb5c7('0x19')];var _0x2f1805=_0x883641?0x0:_0x59acfb[_0xb5c7('0x16')];var _0x3ab805=_0x883641?_0x74f5df[_0xb5c7('0x19')]:_0x59acfb[_0xb5c7('0x16')]+_0x59acfb[_0xb5c7('0x18')];var _0x3841cd;if(_0x3ab805>=_0x42dba7){_0x3ab805=_0x42dba7;_0x3841cd=0xc8;}else{_0x3841cd=0xce;}_0x4829aa['status'](_0x3841cd);return _0x4829aa[_0xb5c7('0x1a')]('Content-Range',_0x2f1805+'-'+_0x3ab805+'/'+_0x42dba7)['json'](_0x74f5df);}return null;};}function patchUpdates(_0x2490b9){return function(_0x543c6c){try{jsonpatch[_0xb5c7('0x1b')](_0x543c6c,_0x2490b9,!![]);}catch(_0x43d11c){return BPromise[_0xb5c7('0x1c')](_0x43d11c);}return _0x543c6c[_0xb5c7('0x1d')]();};}function saveUpdates(_0x416194,_0x14fd09){return function(_0x124a83){if(_0x124a83){return _0x124a83['update'](_0x416194)[_0xb5c7('0x1e')](function(_0x19c0ea){return _0x19c0ea;});}return null;};}function removeEntity(_0x479d02,_0x59c755){return function(_0x20505c){if(_0x20505c){return _0x20505c['destroy']()[_0xb5c7('0x1e')](function(){_0x479d02['status'](0xcc)[_0xb5c7('0x14')]();});}};}function handleEntityNotFound(_0x45d402,_0x450b93){return function(_0x2155b0){if(!_0x2155b0){_0x45d402['sendStatus'](0x194);}return _0x2155b0;};}function handleError(_0x137be3,_0x4bddb5){_0x4bddb5=_0x4bddb5||0x1f4;return function(_0x48b749){logger[_0xb5c7('0x1f')](_0x48b749['stack']);if(_0x48b749[_0xb5c7('0x20')]){delete _0x48b749[_0xb5c7('0x20')];}_0x137be3['status'](_0x4bddb5)[_0xb5c7('0x21')](_0x48b749);};}exports['index']=function(_0xff8c42,_0x528106){var _0x397dcd={},_0x2ae576={},_0x230ffc={'count':0x0,'rows':[]};var _0x110d58=_[_0xb5c7('0x22')](db[_0xb5c7('0x23')][_0xb5c7('0x24')],function(_0x56e20b){return{'name':_0x56e20b[_0xb5c7('0x25')],'type':_0x56e20b[_0xb5c7('0x26')]['key']};});_0x2ae576[_0xb5c7('0x27')]=_[_0xb5c7('0x22')](_0x110d58,_0xb5c7('0x20'));_0x2ae576[_0xb5c7('0x28')]=_['keys'](_0xff8c42[_0xb5c7('0x28')]);_0x2ae576[_0xb5c7('0x29')]=_[_0xb5c7('0x2a')](_0x2ae576[_0xb5c7('0x27')],_0x2ae576[_0xb5c7('0x28')]);_0x397dcd[_0xb5c7('0x2b')]=_[_0xb5c7('0x2a')](_0x2ae576[_0xb5c7('0x27')],qs[_0xb5c7('0x2c')](_0xff8c42[_0xb5c7('0x28')]['fields']));_0x397dcd['attributes']=_0x397dcd[_0xb5c7('0x2b')][_0xb5c7('0x2d')]?_0x397dcd[_0xb5c7('0x2b')]:_0x2ae576[_0xb5c7('0x27')];if(!_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x2e')](_0xb5c7('0x2f'))){_0x397dcd[_0xb5c7('0x18')]=qs[_0xb5c7('0x18')](_0xff8c42['query'][_0xb5c7('0x18')]);_0x397dcd[_0xb5c7('0x16')]=qs[_0xb5c7('0x16')](_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x16')]);}_0x397dcd[_0xb5c7('0x30')]=qs[_0xb5c7('0x31')](_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x31')]);_0x397dcd[_0xb5c7('0x32')]=qs[_0xb5c7('0x29')](_[_0xb5c7('0x33')](_0xff8c42['query'],_0x2ae576[_0xb5c7('0x29')]),_0x110d58);if(_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x34')]){_0x397dcd[_0xb5c7('0x32')]=_['merge'](_0x397dcd['where'],{'$or':_[_0xb5c7('0x22')](_0x110d58,function(_0x23b146){if(_0x23b146['type']!=='VIRTUAL'){var _0x52fe4f={};_0x52fe4f[_0x23b146[_0xb5c7('0x20')]]={'$like':'%'+_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x34')]+'%'};return _0x52fe4f;}})});}_0x397dcd=_[_0xb5c7('0x35')]({},_0x397dcd,_0xff8c42[_0xb5c7('0x36')]);var _0x4164a7={'where':_0x397dcd[_0xb5c7('0x32')]};return db[_0xb5c7('0x23')][_0xb5c7('0x19')](_0x4164a7)[_0xb5c7('0x1e')](function(_0x44430d){_0x230ffc['count']=_0x44430d;if(_0xff8c42[_0xb5c7('0x28')][_0xb5c7('0x37')]){_0x397dcd['include']=[{'all':!![]}];}return db[_0xb5c7('0x23')]['findAll'](_0x397dcd);})[_0xb5c7('0x1e')](function(_0x48caec){_0x230ffc[_0xb5c7('0x38')]=_0x48caec;return _0x230ffc;})[_0xb5c7('0x1e')](respondWithFilteredResult(_0x528106,_0x397dcd))[_0xb5c7('0x39')](handleError(_0x528106,null));};
\ No newline at end of file
index 11420d1..ebc8ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd8=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Migration','lodash','../../config/logger'];(function(_0x5007f6,_0x1ab6d9){var _0x1d686f=function(_0x12a0fc){while(--_0x12a0fc){_0x5007f6['push'](_0x5007f6['shift']());}};_0x1d686f(++_0x1ab6d9);}(_0x1bd8,0x15a));var _0x81bd=function(_0x3c87b0,_0x25ad68){_0x3c87b0=_0x3c87b0-0x0;var _0x1da20c=_0x1bd8[_0x3c87b0];return _0x1da20c;};'use strict';var _=require(_0x81bd('0x0'));var util=require('util');var logger=require(_0x81bd('0x1'))(_0x81bd('0x2'));var moment=require(_0x81bd('0x3'));var BPromise=require(_0x81bd('0x4'));var rp=require(_0x81bd('0x5'));var fs=require('fs');var path=require(_0x81bd('0x6'));var rimraf=require(_0x81bd('0x7'));var config=require(_0x81bd('0x8'));var attributes=require('./migration.attributes');module[_0x81bd('0x9')]=function(_0x334be1,_0x596d2a){return _0x334be1[_0x81bd('0xa')](_0x81bd('0xb'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ddf=['define','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./migration.attributes','exports'];(function(_0x3f48e0,_0x453a44){var _0x2333e1=function(_0x4b540a){while(--_0x4b540a){_0x3f48e0['push'](_0x3f48e0['shift']());}};_0x2333e1(++_0x453a44);}(_0x9ddf,0x182));var _0xf9dd=function(_0x5b8685,_0x1a1c28){_0x5b8685=_0x5b8685-0x0;var _0xa3ef57=_0x9ddf[_0x5b8685];return _0xa3ef57;};'use strict';var _=require(_0xf9dd('0x0'));var util=require(_0xf9dd('0x1'));var logger=require('../../config/logger')(_0xf9dd('0x2'));var moment=require(_0xf9dd('0x3'));var BPromise=require(_0xf9dd('0x4'));var rp=require(_0xf9dd('0x5'));var fs=require('fs');var path=require(_0xf9dd('0x6'));var rimraf=require(_0xf9dd('0x7'));var config=require('../../config/environment');var attributes=require(_0xf9dd('0x8'));module[_0xf9dd('0x9')]=function(_0x147172,_0x37698f){return _0x147172[_0xf9dd('0xa')]('Migration',attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0cd64f..0e4e855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d90=['message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x1d90,0x13e));var _0x01d9=function(_0x32874f,_0x2b45c6){_0x32874f=_0x32874f-0x0;var _0x5a89c6=_0x1d90[_0x32874f];return _0x5a89c6;};'use strict';var _=require(_0x01d9('0x0'));var util=require('util');var moment=require(_0x01d9('0x1'));var BPromise=require('bluebird');var rs=require(_0x01d9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x01d9('0x3'))['db'];var utils=require(_0x01d9('0x4'));var logger=require('../../config/logger')(_0x01d9('0x5'));var config=require(_0x01d9('0x6'));var jayson=require(_0x01d9('0x7'));var client=jayson['client'][_0x01d9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1664eb,_0x31c11d,_0x598409){return new BPromise(function(_0xef9d5b,_0x479447){return client['request'](_0x1664eb,_0x598409)[_0x01d9('0x9')](function(_0x2b8e06){logger[_0x01d9('0xa')]('Migration,\x20%s,\x20%s',_0x31c11d,_0x01d9('0xb'));logger[_0x01d9('0xc')](_0x01d9('0xd'),_0x31c11d,'request\x20sent',JSON[_0x01d9('0xe')](_0x2b8e06));if(_0x2b8e06[_0x01d9('0xf')]){if(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x10')]===0x1f4){logger[_0x01d9('0xf')](_0x01d9('0x11'),_0x31c11d,_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);return _0x479447(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);}logger[_0x01d9('0xf')](_0x01d9('0x11'),_0x31c11d,_0x2b8e06['error'][_0x01d9('0x12')]);return _0xef9d5b(_0x2b8e06[_0x01d9('0xf')][_0x01d9('0x12')]);}else{logger[_0x01d9('0xa')]('Migration,\x20%s,\x20%s',_0x31c11d,_0x01d9('0xb'));_0xef9d5b(_0x2b8e06[_0x01d9('0x13')][_0x01d9('0x12')]);}})[_0x01d9('0x14')](function(_0x147911){logger['error'](_0x01d9('0x11'),_0x31c11d,_0x147911);_0x479447(_0x147911);});});}
\ No newline at end of file
+var _0x9090=['jayson/promise','client','http','request','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','Migration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x9d9f9e,_0x52a029){var _0x48cb13=function(_0x177d55){while(--_0x177d55){_0x9d9f9e['push'](_0x9d9f9e['shift']());}};_0x48cb13(++_0x52a029);}(_0x9090,0x17f));var _0x0909=function(_0x306aa,_0x5f5d89){_0x306aa=_0x306aa-0x0;var _0x5bd091=_0x9090[_0x306aa];return _0x5bd091;};'use strict';var _=require(_0x0909('0x0'));var util=require(_0x0909('0x1'));var moment=require(_0x0909('0x2'));var BPromise=require(_0x0909('0x3'));var rs=require(_0x0909('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0909('0x5'));var logger=require(_0x0909('0x6'))(_0x0909('0x7'));var config=require('../../config/environment');var jayson=require(_0x0909('0x8'));var client=jayson[_0x0909('0x9')][_0x0909('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41d8fc,_0x26dfbe,_0x32bf48){return new BPromise(function(_0x1755ee,_0x571b3c){return client[_0x0909('0xb')](_0x41d8fc,_0x32bf48)[_0x0909('0xc')](function(_0x4f961d){logger[_0x0909('0xd')]('Migration,\x20%s,\x20%s',_0x26dfbe,_0x0909('0xe'));logger[_0x0909('0xf')](_0x0909('0x10'),_0x26dfbe,_0x0909('0xe'),JSON['stringify'](_0x4f961d));if(_0x4f961d[_0x0909('0x11')]){if(_0x4f961d[_0x0909('0x11')][_0x0909('0x12')]===0x1f4){logger[_0x0909('0x11')]('Migration,\x20%s,\x20%s',_0x26dfbe,_0x4f961d[_0x0909('0x11')][_0x0909('0x13')]);return _0x571b3c(_0x4f961d[_0x0909('0x11')][_0x0909('0x13')]);}logger[_0x0909('0x11')](_0x0909('0x14'),_0x26dfbe,_0x4f961d[_0x0909('0x11')][_0x0909('0x13')]);return _0x1755ee(_0x4f961d[_0x0909('0x11')][_0x0909('0x13')]);}else{logger['info'](_0x0909('0x14'),_0x26dfbe,_0x0909('0xe'));_0x1755ee(_0x4f961d[_0x0909('0x15')][_0x0909('0x13')]);}})[_0x0909('0x16')](function(_0x1d68cd){logger[_0x0909('0x11')](_0x0909('0x14'),_0x26dfbe,_0x1d68cd);_0x571b3c(_0x1d68cd);});});}
\ No newline at end of file
index e1e61e7..84aac46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf496=['../../config/environment','./network.controller','get','isAuthenticated','/:id','put','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x136619,_0x31c9b2){var _0x38c4a5=function(_0x10b74d){while(--_0x10b74d){_0x136619['push'](_0x136619['shift']());}};_0x38c4a5(++_0x31c9b2);}(_0xf496,0x1c7));var _0x6f49=function(_0x3f06b6,_0x551f6c){_0x3f06b6=_0x3f06b6-0x0;var _0xaae9b3=_0xf496[_0x3f06b6];return _0xaae9b3;};'use strict';var multer=require(_0x6f49('0x0'));var util=require(_0x6f49('0x1'));var path=require(_0x6f49('0x2'));var timeout=require(_0x6f49('0x3'));var express=require(_0x6f49('0x4'));var router=express['Router']();var fs_extra=require(_0x6f49('0x5'));var auth=require(_0x6f49('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6f49('0x7'));var controller=require(_0x6f49('0x8'));router[_0x6f49('0x9')]('/',auth[_0x6f49('0xa')](),controller['index']);router[_0x6f49('0x9')](_0x6f49('0xb'),auth[_0x6f49('0xa')](),controller['show']);router['post']('/',auth[_0x6f49('0xa')](),controller['create']);router[_0x6f49('0xc')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x6f49('0xb'),auth[_0x6f49('0xa')](),controller['destroy']);module[_0x6f49('0xd')]=router;
\ No newline at end of file
+var _0x761c=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','multer','path'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x761c,0x18a));var _0xc761=function(_0x356000,_0x45129f){_0x356000=_0x356000-0x0;var _0x4168be=_0x761c[_0x356000];return _0x4168be;};'use strict';var multer=require(_0xc761('0x0'));var util=require('util');var path=require(_0xc761('0x1'));var timeout=require(_0xc761('0x2'));var express=require('express');var router=express[_0xc761('0x3')]();var fs_extra=require(_0xc761('0x4'));var auth=require(_0xc761('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc761('0x6'));var controller=require('./network.controller');router[_0xc761('0x7')]('/',auth[_0xc761('0x8')](),controller[_0xc761('0x9')]);router[_0xc761('0x7')](_0xc761('0xa'),auth[_0xc761('0x8')](),controller[_0xc761('0xb')]);router['post']('/',auth[_0xc761('0x8')](),controller[_0xc761('0xc')]);router[_0xc761('0xd')](_0xc761('0xa'),auth[_0xc761('0x8')](),controller[_0xc761('0xe')]);router[_0xc761('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xc761('0x10')]);module[_0xc761('0x11')]=router;
\ No newline at end of file
index 1f19c6b..5387349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d01=['stun','turn','STRING','ENUM','localnet','externip'];(function(_0x475eea,_0x58ee9a){var _0x38f868=function(_0x39e7e0){while(--_0x39e7e0){_0x475eea['push'](_0x475eea['shift']());}};_0x38f868(++_0x58ee9a);}(_0x5d01,0x1d7));var _0x15d0=function(_0x5e8677,_0x12cb22){_0x5e8677=_0x5e8677-0x0;var _0x531614=_0x5d01[_0x5e8677];return _0x531614;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x15d0('0x0')](_0x15d0('0x1'),_0x15d0('0x2'),_0x15d0('0x3'),_0x15d0('0x4'))},'value':{'type':Sequelize[_0x15d0('0x5')]},'username':{'type':Sequelize[_0x15d0('0x5')]},'password':{'type':Sequelize[_0x15d0('0x5')]}};
\ No newline at end of file
+var _0x0ad5=['STRING','sequelize','exports','localnet','stun','turn'];(function(_0x56717c,_0x1933a6){var _0x51583d=function(_0x13d05e){while(--_0x13d05e){_0x56717c['push'](_0x56717c['shift']());}};_0x51583d(++_0x1933a6);}(_0x0ad5,0x151));var _0x50ad=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0ad5[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x50ad('0x0'));module[_0x50ad('0x1')]={'type':{'type':Sequelize['ENUM'](_0x50ad('0x2'),'externip',_0x50ad('0x3'),_0x50ad('0x4'))},'value':{'type':Sequelize[_0x50ad('0x5')]},'username':{'type':Sequelize[_0x50ad('0x5')]},'password':{'type':Sequelize[_0x50ad('0x5')]}};
\ No newline at end of file
index 8016d46..7435939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89b9=['order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','rows','show','include','find','create','body','findAll','toUpperCase','STUN','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','res_stun_monitor.so','format','toLowerCase','update','params','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','chan_sip.so','destroy','/etc/asterisk/sip_xcally_%s.conf','util','path','ejs','../../components/parsers/qs','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','offset','undefined','count','status','set','Content-Range','json','sendStatus','stack','name','send','index','map','Network','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit'];(function(_0x22d74f,_0x39ca52){var _0x53c78d=function(_0x5eb51){while(--_0x5eb51){_0x22d74f['push'](_0x22d74f['shift']());}};_0x53c78d(++_0x39ca52);}(_0x89b9,0x7d));var _0x989b=function(_0x1dcc84,_0x341ab8){_0x1dcc84=_0x1dcc84-0x0;var _0x564262=_0x89b9[_0x1dcc84];return _0x564262;};'use strict';var util=require(_0x989b('0x0'));var path=require(_0x989b('0x1'));var ejs=require(_0x989b('0x2'));var fs=require('fs');var _=require('lodash');var qs=require(_0x989b('0x3'));var logger=require('../../config/logger')('api');var config=require(_0x989b('0x4'));var db=require(_0x989b('0x5'))['db'];var jayson=require(_0x989b('0x6'));var client=jayson[_0x989b('0x7')][_0x989b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dc042,_0x5b88a7,_0x4fd0df,_0x51f512){return new Promise(function(_0x4d0de7,_0x4c7291){var _0x9fc27c=_0x51f512||client;return _0x9fc27c[_0x989b('0x9')](_0x4dc042,_0x4fd0df)[_0x989b('0xa')](function(_0x1f3cfa){logger['info'](_0x989b('0xb'),_0x5b88a7,_0x989b('0xc'));logger[_0x989b('0xd')](_0x989b('0xe'),_0x5b88a7,_0x989b('0xc'),JSON['stringify'](_0x1f3cfa));if(_0x1f3cfa[_0x989b('0xf')]){if(_0x1f3cfa[_0x989b('0xf')][_0x989b('0x10')]===0x1f4){logger[_0x989b('0xf')](_0x989b('0xb'),_0x5b88a7,_0x1f3cfa[_0x989b('0xf')][_0x989b('0x11')]);return _0x4c7291(_0x1f3cfa['error']['message']);}logger[_0x989b('0xf')]('Network,\x20%s,\x20%s',_0x5b88a7,_0x1f3cfa[_0x989b('0xf')][_0x989b('0x11')]);return _0x4d0de7(_0x1f3cfa['error'][_0x989b('0x11')]);}else{logger[_0x989b('0x12')](_0x989b('0xb'),_0x5b88a7,_0x989b('0xc'));_0x4d0de7(_0x1f3cfa['result'][_0x989b('0x11')]);}})[_0x989b('0x13')](function(_0x38487b){logger[_0x989b('0xf')]('Network,\x20%s,\x20%s',_0x5b88a7,_0x38487b);_0x4c7291(_0x38487b);});});}function respondWithResult(_0x47fb22,_0x240f47){_0x240f47=_0x240f47||0xc8;return function(_0x454e4d){if(_0x454e4d){return _0x47fb22['status'](_0x240f47)['json'](_0x454e4d);}};}function respondWithFilteredResult(_0x12648e,_0x393ef5){return function(_0x21d2f4){if(_0x21d2f4){var _0x93af09=typeof _0x393ef5[_0x989b('0x14')]===_0x989b('0x15')&&typeof _0x393ef5['limit']===_0x989b('0x15');var _0x4e38c6=_0x21d2f4[_0x989b('0x16')];var _0x5bf072=_0x93af09?0x0:_0x393ef5[_0x989b('0x14')];var _0x3246bd=_0x93af09?_0x21d2f4[_0x989b('0x16')]:_0x393ef5[_0x989b('0x14')]+_0x393ef5['limit'];var _0x366e5f;if(_0x3246bd>=_0x4e38c6){_0x3246bd=_0x4e38c6;_0x366e5f=0xc8;}else{_0x366e5f=0xce;}_0x12648e[_0x989b('0x17')](_0x366e5f);return _0x12648e[_0x989b('0x18')](_0x989b('0x19'),_0x5bf072+'-'+_0x3246bd+'/'+_0x4e38c6)[_0x989b('0x1a')](_0x21d2f4);}return null;};}function saveUpdates(_0x56a433){return function(_0x327a64){if(_0x327a64){return _0x327a64['update'](_0x56a433)[_0x989b('0xa')](function(_0x22f447){return _0x22f447;});}return null;};}function removeEntity(_0x3808b1){return function(_0x1cf472){if(_0x1cf472){return _0x1cf472['destroy']()[_0x989b('0xa')](function(){_0x3808b1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x11d566){return function(_0xa7945d){if(!_0xa7945d){_0x11d566[_0x989b('0x1b')](0x194);}return _0xa7945d;};}function handleError(_0x24e1f0,_0x53c0ee){_0x53c0ee=_0x53c0ee||0x1f4;return function(_0x33bdce){logger['error'](_0x33bdce[_0x989b('0x1c')]);if(_0x33bdce[_0x989b('0x1d')]){delete _0x33bdce[_0x989b('0x1d')];}_0x24e1f0[_0x989b('0x17')](_0x53c0ee)[_0x989b('0x1e')](_0x33bdce);};}exports[_0x989b('0x1f')]=function(_0x24be78,_0x5a388c){var _0x12e7ae={},_0x2a5ffe={},_0xeef2dc={'count':0x0,'rows':[]};var _0x186275=_[_0x989b('0x20')](db[_0x989b('0x21')][_0x989b('0x22')],function(_0x393b4f){return{'name':_0x393b4f[_0x989b('0x23')],'type':_0x393b4f['type']['key']};});_0x2a5ffe[_0x989b('0x24')]=_['map'](_0x186275,'name');_0x2a5ffe['query']=_[_0x989b('0x25')](_0x24be78[_0x989b('0x26')]);_0x2a5ffe[_0x989b('0x27')]=_[_0x989b('0x28')](_0x2a5ffe[_0x989b('0x24')],_0x2a5ffe['query']);_0x12e7ae[_0x989b('0x29')]=_[_0x989b('0x28')](_0x2a5ffe['model'],qs['fields'](_0x24be78[_0x989b('0x26')][_0x989b('0x2a')]));_0x12e7ae[_0x989b('0x29')]=_0x12e7ae[_0x989b('0x29')][_0x989b('0x2b')]?_0x12e7ae[_0x989b('0x29')]:_0x2a5ffe[_0x989b('0x24')];if(!_0x24be78[_0x989b('0x26')][_0x989b('0x2c')](_0x989b('0x2d'))){_0x12e7ae[_0x989b('0x2e')]=qs[_0x989b('0x2e')](_0x24be78[_0x989b('0x26')][_0x989b('0x2e')]);_0x12e7ae[_0x989b('0x14')]=qs[_0x989b('0x14')](_0x24be78['query'][_0x989b('0x14')]);}_0x12e7ae[_0x989b('0x2f')]=qs[_0x989b('0x30')](_0x24be78[_0x989b('0x26')][_0x989b('0x30')]);_0x12e7ae['where']=qs[_0x989b('0x27')](_[_0x989b('0x31')](_0x24be78[_0x989b('0x26')],_0x2a5ffe['filters']),_0x186275);if(_0x24be78[_0x989b('0x26')][_0x989b('0x32')]){_0x12e7ae[_0x989b('0x33')]=_[_0x989b('0x34')](_0x12e7ae[_0x989b('0x33')],{'$or':_['map'](_0x186275,function(_0x4fd984){if(_0x4fd984[_0x989b('0x35')]!==_0x989b('0x36')){var _0x15d596={};_0x15d596[_0x4fd984['name']]={'$like':'%'+_0x24be78[_0x989b('0x26')][_0x989b('0x32')]+'%'};return _0x15d596;}})});}_0x12e7ae=_[_0x989b('0x34')]({},_0x12e7ae,_0x24be78[_0x989b('0x37')]);var _0x2bfc9a={'where':_0x12e7ae[_0x989b('0x33')]};return db['Network'][_0x989b('0x16')](_0x2bfc9a)[_0x989b('0xa')](function(_0x24eae6){_0xeef2dc['count']=_0x24eae6;if(_0x24be78[_0x989b('0x26')][_0x989b('0x38')]){_0x12e7ae['include']=[{'all':!![]}];}return db['Network']['findAll'](_0x12e7ae);})[_0x989b('0xa')](function(_0x3662d3){_0xeef2dc[_0x989b('0x39')]=_0x3662d3;return _0xeef2dc;})[_0x989b('0xa')](respondWithFilteredResult(_0x5a388c,_0x12e7ae))['catch'](handleError(_0x5a388c,null));};exports[_0x989b('0x3a')]=function(_0x50d911,_0x4a571e){var _0x4b4c84={'raw':!![],'where':{'id':_0x50d911['params']['id']}},_0x422528={};_0x422528[_0x989b('0x24')]=_[_0x989b('0x25')](db[_0x989b('0x21')][_0x989b('0x22')]);_0x422528[_0x989b('0x26')]=_[_0x989b('0x25')](_0x50d911[_0x989b('0x26')]);_0x422528['filters']=_['intersection'](_0x422528[_0x989b('0x24')],_0x422528['query']);_0x4b4c84[_0x989b('0x29')]=_[_0x989b('0x28')](_0x422528[_0x989b('0x24')],qs['fields'](_0x50d911[_0x989b('0x26')]['fields']));_0x4b4c84[_0x989b('0x29')]=_0x4b4c84[_0x989b('0x29')][_0x989b('0x2b')]?_0x4b4c84['attributes']:_0x422528[_0x989b('0x24')];if(_0x50d911[_0x989b('0x26')][_0x989b('0x38')]){_0x4b4c84[_0x989b('0x3b')]=[{'all':!![]}];}_0x4b4c84=_['merge']({},_0x4b4c84,_0x50d911[_0x989b('0x37')]);return db[_0x989b('0x21')][_0x989b('0x3c')](_0x4b4c84)[_0x989b('0xa')](handleEntityNotFound(_0x4a571e,null))[_0x989b('0xa')](respondWithResult(_0x4a571e,null))['catch'](handleError(_0x4a571e,null));};exports[_0x989b('0x3d')]=function(_0x39df17,_0x2d75f3){var _0x413b48;return db[_0x989b('0x21')]['create'](_0x39df17[_0x989b('0x3e')],{'raw':!![]})['then'](function(_0x778e2c){_0x413b48=_0x778e2c;return db[_0x989b('0x21')][_0x989b('0x3f')]({'where':{'type':_0x39df17[_0x989b('0x3e')][_0x989b('0x35')]},'raw':!![]});})['then'](function(_0x24638e){if(_0x413b48[_0x989b('0x35')][_0x989b('0x40')]()==_0x989b('0x41')){var _0x58897b=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/stun_multiple.ejs'),_0x989b('0x45'));var _0x43ee2d=ejs[_0x989b('0x46')](_0x58897b,{'networks':_0x24638e||[]});fs[_0x989b('0x47')](_0x989b('0x48'),_0x43ee2d);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x3d'),{'module':'res_stun_monitor.so'});}else if(_0x413b48[_0x989b('0x35')]['toUpperCase']()==_0x989b('0x4a')){var _0x406174=fs['readFileSync'](path['join'](config['root'],'server/files/templates/turn_multiple.ejs'),_0x989b('0x45'));var _0x11eeda=ejs[_0x989b('0x46')](_0x406174,{'networks':_0x24638e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x11eeda);return respondWithRpcPromise(_0x989b('0x49'),'create',{'module':_0x989b('0x4b')});}else{var _0x2aa619=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/network.ejs'),'utf8');var _0x457143=ejs[_0x989b('0x46')](_0x2aa619,{'networks':_0x24638e||[]});fs['writeFileSync'](util[_0x989b('0x4c')]('/etc/asterisk/sip_xcally_%s.conf',_0x39df17[_0x989b('0x3e')]['type'][_0x989b('0x4d')]()),_0x457143);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x3d'),{'module':'chan_sip.so'});}})[_0x989b('0xa')](function(){return _0x413b48;})[_0x989b('0xa')](respondWithResult(_0x2d75f3,0xc9))['catch'](handleError(_0x2d75f3,null));};exports[_0x989b('0x4e')]=function(_0x269de2,_0x4c20fe){var _0x12a3db;return db[_0x989b('0x21')][_0x989b('0x3c')]({'where':{'id':_0x269de2[_0x989b('0x4f')]['id']}})[_0x989b('0xa')](handleEntityNotFound(_0x4c20fe,null))[_0x989b('0xa')](saveUpdates(_0x269de2[_0x989b('0x3e')],null))[_0x989b('0xa')](function(_0xf35d4){if(_0xf35d4){_0x12a3db=_0xf35d4;return db[_0x989b('0x21')][_0x989b('0x3f')]({'where':{'type':_0x12a3db[_0x989b('0x35')]},'raw':!![]});}return null;})[_0x989b('0xa')](function(_0x7a9778){if(_0x12a3db[_0x989b('0x35')][_0x989b('0x40')]()=='STUN'){var _0x496ef6=fs['readFileSync'](path[_0x989b('0x43')](config[_0x989b('0x44')],_0x989b('0x50')),_0x989b('0x45'));var _0x13cfc1=ejs[_0x989b('0x46')](_0x496ef6,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](_0x989b('0x48'),_0x13cfc1);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x4e'),{'module':'res_stun_monitor.so'});}else if(_0x12a3db['type'][_0x989b('0x40')]()==_0x989b('0x4a')){var _0x48d8dc=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],_0x989b('0x51')),'utf8');var _0x683e1b=ejs[_0x989b('0x46')](_0x48d8dc,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](_0x989b('0x52'),_0x683e1b);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x4e'),{'module':'res_stun_monitor.so'});}else{var _0x5d448d=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],'server/files/templates/network.ejs'),'utf8');var _0x22de2c=ejs[_0x989b('0x46')](_0x5d448d,{'networks':_0x7a9778||[]});fs[_0x989b('0x47')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x269de2[_0x989b('0x3e')][_0x989b('0x35')][_0x989b('0x4d')]()),_0x22de2c);return respondWithRpcPromise('Reload','update',{'module':_0x989b('0x53')});}})[_0x989b('0xa')](function(_0x2645b5){if(_0x2645b5){return _0x12a3db;}return null;})[_0x989b('0xa')](respondWithResult(_0x4c20fe,null))['catch'](handleError(_0x4c20fe,null));};exports[_0x989b('0x54')]=function(_0x10cc96,_0x271da4){var _0x36d8a9;return db[_0x989b('0x21')]['find']({'where':{'id':_0x10cc96[_0x989b('0x4f')]['id']}})['then'](function(_0x22ba68){_0x36d8a9=_0x22ba68;return _0x22ba68;})['then'](handleEntityNotFound(_0x271da4,null))[_0x989b('0xa')](removeEntity(_0x271da4,null))[_0x989b('0xa')](function(){if(_0x36d8a9){return db[_0x989b('0x21')]['findAll']({'where':{'type':_0x36d8a9['type']},'raw':!![]});}})['then'](function(_0xa112a){if(_0x36d8a9[_0x989b('0x35')][_0x989b('0x40')]()=='STUN'){var _0x58776c=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],_0x989b('0x50')),_0x989b('0x45'));var _0x2bab9f=ejs[_0x989b('0x46')](_0x58776c,{'networks':_0xa112a||[]});fs[_0x989b('0x47')]('/etc/asterisk/stun_xcally.conf',_0x2bab9f);return respondWithRpcPromise(_0x989b('0x49'),'destroy',{'module':_0x989b('0x4b')});}else if(_0x36d8a9[_0x989b('0x35')][_0x989b('0x40')]()==_0x989b('0x4a')){var _0x2ef1a9=fs[_0x989b('0x42')](path[_0x989b('0x43')](config[_0x989b('0x44')],_0x989b('0x51')),_0x989b('0x45'));var _0x375881=ejs[_0x989b('0x46')](_0x2ef1a9,{'networks':_0xa112a||[]});fs[_0x989b('0x47')](_0x989b('0x52'),_0x375881);return respondWithRpcPromise(_0x989b('0x49'),'destroy',{'module':_0x989b('0x4b')});}else{var _0xabc363=fs[_0x989b('0x42')](path[_0x989b('0x43')](config['root'],'server/files/templates/network.ejs'),_0x989b('0x45'));var _0x9b1698=ejs[_0x989b('0x46')](_0xabc363,{'networks':_0xa112a||[]});fs[_0x989b('0x47')](util['format'](_0x989b('0x55'),_0x36d8a9[_0x989b('0x35')][_0x989b('0x4d')]()),_0x9b1698);return respondWithRpcPromise(_0x989b('0x49'),_0x989b('0x54'),{'module':'chan_sip.so'});}})[_0x989b('0x13')](handleError(_0x271da4,null));};
\ No newline at end of file
+var _0x273a=['../../components/parsers/qs','../../config/logger','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','error','code','message','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','end','sendStatus','stack','name','send','map','Network','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','params','find','catch','create','body','toUpperCase','STUN','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','join','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','readFileSync','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','render','util','path','ejs','lodash'];(function(_0x404f3a,_0x164dcc){var _0x31c182=function(_0x4e69b7){while(--_0x4e69b7){_0x404f3a['push'](_0x404f3a['shift']());}};_0x31c182(++_0x164dcc);}(_0x273a,0xef));var _0xa273=function(_0xcd3593,_0x518549){_0xcd3593=_0xcd3593-0x0;var _0x387794=_0x273a[_0xcd3593];return _0x387794;};'use strict';var util=require(_0xa273('0x0'));var path=require(_0xa273('0x1'));var ejs=require(_0xa273('0x2'));var fs=require('fs');var _=require(_0xa273('0x3'));var qs=require(_0xa273('0x4'));var logger=require(_0xa273('0x5'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xa273('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4eb907,_0x53a574,_0x26025b,_0x498b94){return new Promise(function(_0x2fad82,_0x486003){var _0x1da6be=_0x498b94||client;return _0x1da6be[_0xa273('0x7')](_0x4eb907,_0x26025b)['then'](function(_0x1a0266){logger[_0xa273('0x8')](_0xa273('0x9'),_0x53a574,_0xa273('0xa'));logger[_0xa273('0xb')]('Network,\x20%s,\x20%s,\x20%s',_0x53a574,_0xa273('0xa'),JSON['stringify'](_0x1a0266));if(_0x1a0266['error']){if(_0x1a0266[_0xa273('0xc')][_0xa273('0xd')]===0x1f4){logger['error'](_0xa273('0x9'),_0x53a574,_0x1a0266[_0xa273('0xc')][_0xa273('0xe')]);return _0x486003(_0x1a0266[_0xa273('0xc')]['message']);}logger[_0xa273('0xc')](_0xa273('0x9'),_0x53a574,_0x1a0266[_0xa273('0xc')]['message']);return _0x2fad82(_0x1a0266[_0xa273('0xc')][_0xa273('0xe')]);}else{logger[_0xa273('0x8')](_0xa273('0x9'),_0x53a574,_0xa273('0xa'));_0x2fad82(_0x1a0266['result'][_0xa273('0xe')]);}})['catch'](function(_0x4b5085){logger[_0xa273('0xc')](_0xa273('0x9'),_0x53a574,_0x4b5085);_0x486003(_0x4b5085);});});}function respondWithResult(_0x42a54d,_0x831e4){_0x831e4=_0x831e4||0xc8;return function(_0x21a1c1){if(_0x21a1c1){return _0x42a54d[_0xa273('0xf')](_0x831e4)[_0xa273('0x10')](_0x21a1c1);}};}function respondWithFilteredResult(_0x5e83a1,_0x3ddc2c){return function(_0x4d8dc1){if(_0x4d8dc1){var _0x5df8d8=typeof _0x3ddc2c[_0xa273('0x11')]===_0xa273('0x12')&&typeof _0x3ddc2c['limit']==='undefined';var _0x3753a0=_0x4d8dc1[_0xa273('0x13')];var _0x45a033=_0x5df8d8?0x0:_0x3ddc2c[_0xa273('0x11')];var _0x4161c7=_0x5df8d8?_0x4d8dc1[_0xa273('0x13')]:_0x3ddc2c[_0xa273('0x11')]+_0x3ddc2c[_0xa273('0x14')];var _0xe87360;if(_0x4161c7>=_0x3753a0){_0x4161c7=_0x3753a0;_0xe87360=0xc8;}else{_0xe87360=0xce;}_0x5e83a1[_0xa273('0xf')](_0xe87360);return _0x5e83a1[_0xa273('0x15')](_0xa273('0x16'),_0x45a033+'-'+_0x4161c7+'/'+_0x3753a0)[_0xa273('0x10')](_0x4d8dc1);}return null;};}function saveUpdates(_0x4943af){return function(_0x34ee7b){if(_0x34ee7b){return _0x34ee7b[_0xa273('0x17')](_0x4943af)[_0xa273('0x18')](function(_0x32c435){return _0x32c435;});}return null;};}function removeEntity(_0x1de699){return function(_0x97729b){if(_0x97729b){return _0x97729b[_0xa273('0x19')]()['then'](function(){_0x1de699['status'](0xcc)[_0xa273('0x1a')]();});}};}function handleEntityNotFound(_0x109bec){return function(_0x4f90f9){if(!_0x4f90f9){_0x109bec[_0xa273('0x1b')](0x194);}return _0x4f90f9;};}function handleError(_0x5447e5,_0x4f86ca){_0x4f86ca=_0x4f86ca||0x1f4;return function(_0x3bdaa5){logger[_0xa273('0xc')](_0x3bdaa5[_0xa273('0x1c')]);if(_0x3bdaa5[_0xa273('0x1d')]){delete _0x3bdaa5['name'];}_0x5447e5[_0xa273('0xf')](_0x4f86ca)[_0xa273('0x1e')](_0x3bdaa5);};}exports['index']=function(_0x5ed748,_0x458818){var _0x11e11f={},_0x4c444d={},_0x4b0871={'count':0x0,'rows':[]};var _0xdc46f6=_[_0xa273('0x1f')](db[_0xa273('0x20')][_0xa273('0x21')],function(_0x7509f4){return{'name':_0x7509f4[_0xa273('0x22')],'type':_0x7509f4['type'][_0xa273('0x23')]};});_0x4c444d['model']=_[_0xa273('0x1f')](_0xdc46f6,_0xa273('0x1d'));_0x4c444d[_0xa273('0x24')]=_[_0xa273('0x25')](_0x5ed748['query']);_0x4c444d[_0xa273('0x26')]=_[_0xa273('0x27')](_0x4c444d[_0xa273('0x28')],_0x4c444d[_0xa273('0x24')]);_0x11e11f[_0xa273('0x29')]=_[_0xa273('0x27')](_0x4c444d['model'],qs[_0xa273('0x2a')](_0x5ed748[_0xa273('0x24')]['fields']));_0x11e11f[_0xa273('0x29')]=_0x11e11f[_0xa273('0x29')][_0xa273('0x2b')]?_0x11e11f[_0xa273('0x29')]:_0x4c444d[_0xa273('0x28')];if(!_0x5ed748['query'][_0xa273('0x2c')](_0xa273('0x2d'))){_0x11e11f[_0xa273('0x14')]=qs[_0xa273('0x14')](_0x5ed748[_0xa273('0x24')][_0xa273('0x14')]);_0x11e11f['offset']=qs[_0xa273('0x11')](_0x5ed748['query'][_0xa273('0x11')]);}_0x11e11f['order']=qs[_0xa273('0x2e')](_0x5ed748[_0xa273('0x24')][_0xa273('0x2e')]);_0x11e11f[_0xa273('0x2f')]=qs[_0xa273('0x26')](_[_0xa273('0x30')](_0x5ed748['query'],_0x4c444d['filters']),_0xdc46f6);if(_0x5ed748[_0xa273('0x24')][_0xa273('0x31')]){_0x11e11f[_0xa273('0x2f')]=_[_0xa273('0x32')](_0x11e11f[_0xa273('0x2f')],{'$or':_['map'](_0xdc46f6,function(_0x28d290){if(_0x28d290[_0xa273('0x33')]!=='VIRTUAL'){var _0x32d8c5={};_0x32d8c5[_0x28d290['name']]={'$like':'%'+_0x5ed748[_0xa273('0x24')][_0xa273('0x31')]+'%'};return _0x32d8c5;}})});}_0x11e11f=_[_0xa273('0x32')]({},_0x11e11f,_0x5ed748[_0xa273('0x34')]);var _0x50cfc6={'where':_0x11e11f[_0xa273('0x2f')]};return db[_0xa273('0x20')][_0xa273('0x13')](_0x50cfc6)[_0xa273('0x18')](function(_0x29a275){_0x4b0871['count']=_0x29a275;if(_0x5ed748[_0xa273('0x24')][_0xa273('0x35')]){_0x11e11f['include']=[{'all':!![]}];}return db[_0xa273('0x20')][_0xa273('0x36')](_0x11e11f);})['then'](function(_0xb05bc6){_0x4b0871[_0xa273('0x37')]=_0xb05bc6;return _0x4b0871;})[_0xa273('0x18')](respondWithFilteredResult(_0x458818,_0x11e11f))['catch'](handleError(_0x458818,null));};exports['show']=function(_0x10f9f6,_0x5ac42f){var _0x193819={'raw':!![],'where':{'id':_0x10f9f6[_0xa273('0x38')]['id']}},_0x57575f={};_0x57575f['model']=_[_0xa273('0x25')](db[_0xa273('0x20')][_0xa273('0x21')]);_0x57575f['query']=_['keys'](_0x10f9f6['query']);_0x57575f[_0xa273('0x26')]=_[_0xa273('0x27')](_0x57575f[_0xa273('0x28')],_0x57575f[_0xa273('0x24')]);_0x193819['attributes']=_[_0xa273('0x27')](_0x57575f['model'],qs['fields'](_0x10f9f6[_0xa273('0x24')][_0xa273('0x2a')]));_0x193819[_0xa273('0x29')]=_0x193819[_0xa273('0x29')]['length']?_0x193819[_0xa273('0x29')]:_0x57575f[_0xa273('0x28')];if(_0x10f9f6['query'][_0xa273('0x35')]){_0x193819['include']=[{'all':!![]}];}_0x193819=_['merge']({},_0x193819,_0x10f9f6[_0xa273('0x34')]);return db[_0xa273('0x20')][_0xa273('0x39')](_0x193819)[_0xa273('0x18')](handleEntityNotFound(_0x5ac42f,null))[_0xa273('0x18')](respondWithResult(_0x5ac42f,null))[_0xa273('0x3a')](handleError(_0x5ac42f,null));};exports[_0xa273('0x3b')]=function(_0x3bcf3b,_0x15a1c7){var _0x57c9b7;return db[_0xa273('0x20')]['create'](_0x3bcf3b[_0xa273('0x3c')],{'raw':!![]})[_0xa273('0x18')](function(_0x41fd11){_0x57c9b7=_0x41fd11;return db['Network'][_0xa273('0x36')]({'where':{'type':_0x3bcf3b[_0xa273('0x3c')][_0xa273('0x33')]},'raw':!![]});})['then'](function(_0x151cce){if(_0x57c9b7['type'][_0xa273('0x3d')]()==_0xa273('0x3e')){var _0x5d0024=fs['readFileSync'](path['join'](config[_0xa273('0x3f')],_0xa273('0x40')),_0xa273('0x41'));var _0x1726ae=ejs['render'](_0x5d0024,{'networks':_0x151cce||[]});fs[_0xa273('0x42')](_0xa273('0x43'),_0x1726ae);return respondWithRpcPromise(_0xa273('0x44'),'create',{'module':_0xa273('0x45')});}else if(_0x57c9b7[_0xa273('0x33')][_0xa273('0x3d')]()==_0xa273('0x46')){var _0x1595d8=fs['readFileSync'](path[_0xa273('0x47')](config['root'],_0xa273('0x48')),_0xa273('0x41'));var _0x30b14d=ejs['render'](_0x1595d8,{'networks':_0x151cce||[]});fs[_0xa273('0x42')](_0xa273('0x49'),_0x30b14d);return respondWithRpcPromise(_0xa273('0x44'),_0xa273('0x3b'),{'module':_0xa273('0x45')});}else{var _0x3a9259=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config['root'],_0xa273('0x4b')),_0xa273('0x41'));var _0x940a14=ejs['render'](_0x3a9259,{'networks':_0x151cce||[]});fs[_0xa273('0x42')](util[_0xa273('0x4c')](_0xa273('0x4d'),_0x3bcf3b[_0xa273('0x3c')]['type'][_0xa273('0x4e')]()),_0x940a14);return respondWithRpcPromise(_0xa273('0x44'),_0xa273('0x3b'),{'module':_0xa273('0x4f')});}})['then'](function(){return _0x57c9b7;})[_0xa273('0x18')](respondWithResult(_0x15a1c7,0xc9))['catch'](handleError(_0x15a1c7,null));};exports['update']=function(_0x23dc70,_0x364e6d){var _0x546671;return db[_0xa273('0x20')][_0xa273('0x39')]({'where':{'id':_0x23dc70['params']['id']}})[_0xa273('0x18')](handleEntityNotFound(_0x364e6d,null))['then'](saveUpdates(_0x23dc70[_0xa273('0x3c')],null))[_0xa273('0x18')](function(_0xb141){if(_0xb141){_0x546671=_0xb141;return db[_0xa273('0x20')][_0xa273('0x36')]({'where':{'type':_0x546671[_0xa273('0x33')]},'raw':!![]});}return null;})[_0xa273('0x18')](function(_0xcf6ac9){if(_0x546671['type'][_0xa273('0x3d')]()==_0xa273('0x3e')){var _0x2e151a=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config['root'],'server/files/templates/stun_multiple.ejs'),_0xa273('0x41'));var _0x2f4639=ejs['render'](_0x2e151a,{'networks':_0xcf6ac9||[]});fs['writeFileSync'](_0xa273('0x43'),_0x2f4639);return respondWithRpcPromise('Reload',_0xa273('0x17'),{'module':'res_stun_monitor.so'});}else if(_0x546671['type']['toUpperCase']()==_0xa273('0x46')){var _0x551bcb=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config[_0xa273('0x3f')],_0xa273('0x48')),_0xa273('0x41'));var _0x127439=ejs['render'](_0x551bcb,{'networks':_0xcf6ac9||[]});fs[_0xa273('0x42')](_0xa273('0x49'),_0x127439);return respondWithRpcPromise('Reload',_0xa273('0x17'),{'module':'res_stun_monitor.so'});}else{var _0x254a95=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config[_0xa273('0x3f')],_0xa273('0x4b')),_0xa273('0x41'));var _0x3cbfcb=ejs[_0xa273('0x50')](_0x254a95,{'networks':_0xcf6ac9||[]});fs[_0xa273('0x42')](util[_0xa273('0x4c')](_0xa273('0x4d'),_0x23dc70['body'][_0xa273('0x33')][_0xa273('0x4e')]()),_0x3cbfcb);return respondWithRpcPromise(_0xa273('0x44'),_0xa273('0x17'),{'module':_0xa273('0x4f')});}})[_0xa273('0x18')](function(_0x1e8d6e){if(_0x1e8d6e){return _0x546671;}return null;})['then'](respondWithResult(_0x364e6d,null))[_0xa273('0x3a')](handleError(_0x364e6d,null));};exports[_0xa273('0x19')]=function(_0x226689,_0x58e738){var _0x24bfa4;return db[_0xa273('0x20')][_0xa273('0x39')]({'where':{'id':_0x226689['params']['id']}})[_0xa273('0x18')](function(_0x30b87e){_0x24bfa4=_0x30b87e;return _0x30b87e;})[_0xa273('0x18')](handleEntityNotFound(_0x58e738,null))[_0xa273('0x18')](removeEntity(_0x58e738,null))[_0xa273('0x18')](function(){if(_0x24bfa4){return db['Network'][_0xa273('0x36')]({'where':{'type':_0x24bfa4[_0xa273('0x33')]},'raw':!![]});}})[_0xa273('0x18')](function(_0x2ff47c){if(_0x24bfa4[_0xa273('0x33')][_0xa273('0x3d')]()==_0xa273('0x3e')){var _0x3fe7ca=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config[_0xa273('0x3f')],_0xa273('0x40')),_0xa273('0x41'));var _0x239e26=ejs[_0xa273('0x50')](_0x3fe7ca,{'networks':_0x2ff47c||[]});fs['writeFileSync'](_0xa273('0x43'),_0x239e26);return respondWithRpcPromise(_0xa273('0x44'),_0xa273('0x19'),{'module':'res_stun_monitor.so'});}else if(_0x24bfa4[_0xa273('0x33')][_0xa273('0x3d')]()==_0xa273('0x46')){var _0x574f8e=fs['readFileSync'](path['join'](config[_0xa273('0x3f')],_0xa273('0x48')),_0xa273('0x41'));var _0x1a5671=ejs[_0xa273('0x50')](_0x574f8e,{'networks':_0x2ff47c||[]});fs[_0xa273('0x42')](_0xa273('0x49'),_0x1a5671);return respondWithRpcPromise(_0xa273('0x44'),'destroy',{'module':_0xa273('0x45')});}else{var _0x136f2a=fs[_0xa273('0x4a')](path[_0xa273('0x47')](config[_0xa273('0x3f')],_0xa273('0x4b')),_0xa273('0x41'));var _0x5a714d=ejs[_0xa273('0x50')](_0x136f2a,{'networks':_0x2ff47c||[]});fs['writeFileSync'](util[_0xa273('0x4c')](_0xa273('0x4d'),_0x24bfa4[_0xa273('0x33')][_0xa273('0x4e')]()),_0x5a714d);return respondWithRpcPromise(_0xa273('0x44'),_0xa273('0x19'),{'module':_0xa273('0x4f')});}})[_0xa273('0x3a')](handleError(_0x58e738,null));};
\ No newline at end of file
index 388c3fc..eaf0aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['request-promise','path','rimraf','exports','define','lodash','../../config/logger','api','bluebird'];(function(_0x3ab761,_0x49fe89){var _0x218ba3=function(_0xa2ac1c){while(--_0xa2ac1c){_0x3ab761['push'](_0x3ab761['shift']());}};_0x218ba3(++_0x49fe89);}(_0xee5b,0x1f4));var _0xbee5=function(_0x5d710,_0x4771c2){_0x5d710=_0x5d710-0x0;var _0x18287c=_0xee5b[_0x5d710];return _0x18287c;};'use strict';var _=require(_0xbee5('0x0'));var util=require('util');var logger=require(_0xbee5('0x1'))(_0xbee5('0x2'));var moment=require('moment');var BPromise=require(_0xbee5('0x3'));var rp=require(_0xbee5('0x4'));var fs=require('fs');var path=require(_0xbee5('0x5'));var rimraf=require(_0xbee5('0x6'));var config=require('../../config/environment');var attributes=require('./network.attributes');module[_0xbee5('0x7')]=function(_0x2c0bde,_0xab6e4d){return _0x2c0bde[_0xbee5('0x8')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb43b=['rimraf','../../config/environment','./network.attributes','Network','network','lodash','util','api','moment','bluebird','path'];(function(_0x4f9af6,_0xe3c88b){var _0x421d57=function(_0x2c39f1){while(--_0x2c39f1){_0x4f9af6['push'](_0x4f9af6['shift']());}};_0x421d57(++_0xe3c88b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x181102,_0x186af6){_0x181102=_0x181102-0x0;var _0x5ab8e5=_0xb43b[_0x181102];return _0x5ab8e5;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 638c82f..5a9aca7 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(_0x5f2a1d,_0x3e2050){var _0x7ca519=function(_0xd1679b){while(--_0xd1679b){_0x5f2a1d['push'](_0x5f2a1d['shift']());}};_0x7ca519(++_0x3e2050);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x4f08fa,_0x5df1f0){_0x4f08fa=_0x4f08fa-0x0;var _0x4444b7=_0x7a54[_0x4f08fa];return _0x4444b7;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 7e80564..06c0ef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc277=['/describe','describe','get','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','getInteractions','/:id/users','getAgents','post','addDisposition','/:id/notify','notify','/:id/applications','addAgents','/:id/send','send','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x5d4e95,_0x578112){var _0x475873=function(_0x1c0d29){while(--_0x1c0d29){_0x5d4e95['push'](_0x5d4e95['shift']());}};_0x475873(++_0x578112);}(_0xc277,0x169));var _0x7c27=function(_0x33faeb,_0x1f33a4){_0x33faeb=_0x33faeb-0x0;var _0x3a8f5e=_0xc277[_0x33faeb];return _0x3a8f5e;};'use strict';var multer=require('multer');var util=require(_0x7c27('0x0'));var path=require(_0x7c27('0x1'));var timeout=require(_0x7c27('0x2'));var express=require(_0x7c27('0x3'));var router=express['Router']();var fs_extra=require(_0x7c27('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7c27('0x5'));var config=require(_0x7c27('0x6'));var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0x7c27('0x7')](),controller[_0x7c27('0x8')]);router['get'](_0x7c27('0x9'),auth[_0x7c27('0x7')](),controller[_0x7c27('0xa')]);router[_0x7c27('0xb')]('/:id',auth[_0x7c27('0x7')](),controller[_0x7c27('0xc')]);router[_0x7c27('0xb')](_0x7c27('0xd'),auth['isAuthenticated'](),controller[_0x7c27('0xe')]);router[_0x7c27('0xb')](_0x7c27('0xf'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x10')]);router[_0x7c27('0xb')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7c27('0x11')]);router[_0x7c27('0xb')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x7c27('0x12')]);router['get'](_0x7c27('0x13'),auth['isAuthenticated'](),controller[_0x7c27('0x14')]);router[_0x7c27('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7c27('0x15')]('/:id/dispositions',auth[_0x7c27('0x7')](),controller[_0x7c27('0x16')]);router['post'](_0x7c27('0xf'),auth['isAuthenticated'](),controller['addAnswer']);router['post'](_0x7c27('0x17'),controller[_0x7c27('0x18')]);router[_0x7c27('0x15')](_0x7c27('0x19'),auth[_0x7c27('0x7')](),controller['addApplications']);router[_0x7c27('0x15')](_0x7c27('0x13'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x1a')]);router[_0x7c27('0x15')](_0x7c27('0x1b'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x1c')]);router[_0x7c27('0x1d')](_0x7c27('0x1e'),auth[_0x7c27('0x7')](),controller['update']);router[_0x7c27('0x1f')](_0x7c27('0x1e'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x20')]);router['delete'](_0x7c27('0xd'),auth['isAuthenticated'](),controller[_0x7c27('0x21')]);router[_0x7c27('0x1f')](_0x7c27('0xf'),auth[_0x7c27('0x7')](),controller[_0x7c27('0x22')]);router['delete'](_0x7c27('0x13'),auth['isAuthenticated'](),controller[_0x7c27('0x23')]);module[_0x7c27('0x24')]=router;
\ No newline at end of file
+var _0x58eb=['util','path','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','/:id','/:id/dispositions','/:id/canned_answers','/:id/applications','getApplications','/:id/interactions','/:id/users','create','post','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','update','delete','destroy','removeAgents','exports','multer'];(function(_0x5ddaac,_0x2697a8){var _0x2a9c58=function(_0x851032){while(--_0x851032){_0x5ddaac['push'](_0x5ddaac['shift']());}};_0x2a9c58(++_0x2697a8);}(_0x58eb,0x1db));var _0xb58e=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x58eb[_0x341e0f];return _0x59555a;};'use strict';var multer=require(_0xb58e('0x0'));var util=require(_0xb58e('0x1'));var path=require(_0xb58e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb58e('0x3')]();var fs_extra=require(_0xb58e('0x4'));var auth=require(_0xb58e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb58e('0x6'));var controller=require('./openchannelAccount.controller');router[_0xb58e('0x7')]('/',auth['isAuthenticated'](),controller[_0xb58e('0x8')]);router[_0xb58e('0x7')](_0xb58e('0x9'),auth[_0xb58e('0xa')](),controller['describe']);router['get'](_0xb58e('0xb'),auth[_0xb58e('0xa')](),controller['show']);router[_0xb58e('0x7')](_0xb58e('0xc'),auth[_0xb58e('0xa')](),controller['getDispositions']);router[_0xb58e('0x7')](_0xb58e('0xd'),auth[_0xb58e('0xa')](),controller['getAnswers']);router[_0xb58e('0x7')](_0xb58e('0xe'),auth[_0xb58e('0xa')](),controller[_0xb58e('0xf')]);router['get'](_0xb58e('0x10'),auth[_0xb58e('0xa')](),controller['getInteractions']);router[_0xb58e('0x7')](_0xb58e('0x11'),auth[_0xb58e('0xa')](),controller['getAgents']);router['post']('/',auth[_0xb58e('0xa')](),controller[_0xb58e('0x12')]);router[_0xb58e('0x13')]('/:id/dispositions',auth[_0xb58e('0xa')](),controller[_0xb58e('0x14')]);router[_0xb58e('0x13')](_0xb58e('0xd'),auth[_0xb58e('0xa')](),controller[_0xb58e('0x15')]);router[_0xb58e('0x13')](_0xb58e('0x16'),controller[_0xb58e('0x17')]);router[_0xb58e('0x13')]('/:id/applications',auth['isAuthenticated'](),controller[_0xb58e('0x18')]);router[_0xb58e('0x13')](_0xb58e('0x11'),auth[_0xb58e('0xa')](),controller[_0xb58e('0x19')]);router[_0xb58e('0x13')](_0xb58e('0x1a'),auth[_0xb58e('0xa')](),controller[_0xb58e('0x1b')]);router[_0xb58e('0x1c')](_0xb58e('0xb'),auth[_0xb58e('0xa')](),controller[_0xb58e('0x1d')]);router[_0xb58e('0x1e')](_0xb58e('0xb'),auth['isAuthenticated'](),controller[_0xb58e('0x1f')]);router[_0xb58e('0x1e')]('/:id/dispositions',auth[_0xb58e('0xa')](),controller['removeDispositions']);router['delete'](_0xb58e('0xd'),auth[_0xb58e('0xa')](),controller['removeAnswers']);router['delete'](_0xb58e('0x11'),auth[_0xb58e('0xa')](),controller[_0xb58e('0x20')]);module[_0xb58e('0x21')]=router;
\ No newline at end of file
index 7089d9c..c02146f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fcc=['randomstring','exports','STRING','generate','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','mandatoryDisposition','sequelize'];(function(_0x5f39d5,_0x376bc9){var _0x1e47e7=function(_0x14460a){while(--_0x14460a){_0x5f39d5['push'](_0x5f39d5['shift']());}};_0x1e47e7(++_0x376bc9);}(_0x6fcc,0x175));var _0xc6fc=function(_0x25e323,_0x20e141){_0x25e323=_0x25e323-0x0;var _0xb39acf=_0x6fcc[_0x25e323];return _0xb39acf;};'use strict';var Sequelize=require(_0xc6fc('0x0'));var rs=require(_0xc6fc('0x1'));module[_0xc6fc('0x2')]={'name':{'type':Sequelize[_0xc6fc('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xc6fc('0x3')]},'token':{'type':Sequelize[_0xc6fc('0x3')],'defaultValue':function(){return rs[_0xc6fc('0x4')]();}},'replyUri':{'type':Sequelize[_0xc6fc('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc6fc('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xc6fc('0x5');}},'notificationSound':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xc6fc('0x3')]},'queueTransfer':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc6fc('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc6fc('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc6fc('0x7')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc6fc('0x8'),'set':function(_0x4e624e){if(!_0x4e624e)this[_0xc6fc('0x9')]('mandatoryDispositionPauseId',null);this[_0xc6fc('0x9')](_0xc6fc('0xa'),_0x4e624e);}}};
\ No newline at end of file
+var _0x0413=['setDataValue','mandatoryDisposition','randomstring','exports','name','STRING','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId'];(function(_0x359908,_0x122f88){var _0x1f1d54=function(_0x54b837){while(--_0x54b837){_0x359908['push'](_0x359908['shift']());}};_0x1f1d54(++_0x122f88);}(_0x0413,0x161));var _0x3041=function(_0xf34a89,_0x57acc4){_0xf34a89=_0xf34a89-0x0;var _0x41a65b=_0x0413[_0xf34a89];return _0x41a65b;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x3041('0x0'));module[_0x3041('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3041('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x3041('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3041('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x3041('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3041('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x3041('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3041('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3041('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x3041('0x3')]},'queueTransfer':{'type':Sequelize[_0x3041('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3041('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3041('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3041('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3041('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x3041('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x3041('0x6')],'defaultValue':![],'comment':_0x3041('0x9'),'set':function(_0x235f6d){if(!_0x235f6d)this['setDataValue'](_0x3041('0xa'),null);this[_0x3041('0xb')](_0x3041('0xc'),_0x235f6d);}}};
\ No newline at end of file
index 1eaea6d..02c74ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeff=['catch','sendStatus','status','end','json','offset','undefined','limit','count','apply','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','then','stack','name','send','index','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','Pause','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','getDispositions','findOne','Disposition','hasOwnProperty','OpenchannelAccountId','options','removeDispositions','CannedAnswer','removeAnswers','ids','notify','openchannel','CmContact','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','from','ValidationError','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','OpenchannelApplication','account','applications','Applications','list','orderBy','priority','asc','Contacts','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','push','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','startRouting','Start','EventManager','addApplications','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','getApplications','Contact','Owner','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','emit','userOpenchannelAccount:remove','getAgents','DESC','out','OpenchannelMessage','dataValues','Messages','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','http','client','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x55715d,_0xba2ede){var _0x514d01=function(_0x53e2fc){while(--_0x53e2fc){_0x55715d['push'](_0x55715d['shift']());}};_0x514d01(++_0xba2ede);}(_0xbeff,0x8e));var _0xfbef=function(_0x496671,_0x3da759){_0x496671=_0x496671-0x0;var _0x477a1e=_0xbeff[_0x496671];return _0x477a1e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfbef('0x0'));var zipdir=require(_0xfbef('0x1'));var jsonpatch=require(_0xfbef('0x2'));var rp=require(_0xfbef('0x3'));var moment=require(_0xfbef('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfbef('0x5'));var path=require(_0xfbef('0x6'));var sox=require(_0xfbef('0x7'));var csv=require(_0xfbef('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfbef('0x9'));var _=require(_0xfbef('0xa'));var squel=require('squel');var crypto=require(_0xfbef('0xb'));var jsforce=require(_0xfbef('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfbef('0x8'));var querystring=require('querystring');var Papa=require(_0xfbef('0xd'));var Redis=require('ioredis');var authService=require(_0xfbef('0xe'));var qs=require(_0xfbef('0xf'));var as=require(_0xfbef('0x10'));var hardwareService=require(_0xfbef('0x11'));var logger=require(_0xfbef('0x12'))(_0xfbef('0x13'));var utils=require(_0xfbef('0x14'));var config=require(_0xfbef('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfbef('0x16'))['db'];config[_0xfbef('0x17')]=_[_0xfbef('0x18')](config[_0xfbef('0x17')],{'host':_0xfbef('0x19'),'port':0x18eb});var socket=require(_0xfbef('0x1a'))(new Redis(config[_0xfbef('0x17')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xfbef('0x1b')]({'port':0x232c});var client9002=jayson[_0xfbef('0x1c')][_0xfbef('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x4d74eb,_0x1e9a88,_0x2b24ff,_0x385eb){return new BPromise(function(_0x10b3fd,_0x1bad94){var _0x1fc8ac=_0x385eb||client;return _0x1fc8ac['request'](_0x4d74eb,_0x2b24ff)['then'](function(_0x4004dc){logger[_0xfbef('0x1d')](_0xfbef('0x1e'),_0x1e9a88,_0xfbef('0x1f'));logger['debug'](_0xfbef('0x20'),_0x1e9a88,_0xfbef('0x1f'),JSON[_0xfbef('0x21')](_0x4004dc));if(_0x4004dc[_0xfbef('0x22')]){if(_0x4004dc[_0xfbef('0x22')][_0xfbef('0x23')]===0x1f4){logger['error'](_0xfbef('0x1e'),_0x1e9a88,_0x4004dc[_0xfbef('0x22')]['message']);return _0x1bad94(_0x4004dc[_0xfbef('0x22')]['message']);}logger[_0xfbef('0x22')](_0xfbef('0x1e'),_0x1e9a88,_0x4004dc[_0xfbef('0x22')][_0xfbef('0x24')]);return _0x10b3fd(_0x4004dc[_0xfbef('0x22')][_0xfbef('0x24')]);}else{logger['info'](_0xfbef('0x1e'),_0x1e9a88,_0xfbef('0x1f'));_0x10b3fd(_0x4004dc[_0xfbef('0x25')][_0xfbef('0x24')]);}})[_0xfbef('0x26')](function(_0x561e7c){logger[_0xfbef('0x22')](_0xfbef('0x1e'),_0x1e9a88,_0x561e7c);_0x1bad94(_0x561e7c);});});}function respondWithStatusCode(_0x3a4212,_0x4dc7a4){_0x4dc7a4=_0x4dc7a4||0xcc;return function(_0x3f7010){if(_0x3f7010){return _0x3a4212[_0xfbef('0x27')](_0x4dc7a4);}return _0x3a4212[_0xfbef('0x28')](_0x4dc7a4)[_0xfbef('0x29')]();};}function respondWithResult(_0x31f5dc,_0x4fe0ed){_0x4fe0ed=_0x4fe0ed||0xc8;return function(_0x3776e4){if(_0x3776e4){return _0x31f5dc[_0xfbef('0x28')](_0x4fe0ed)[_0xfbef('0x2a')](_0x3776e4);}};}function respondWithFilteredResult(_0x30faae,_0x1384ee){return function(_0x2c6a75){if(_0x2c6a75){var _0x590180=typeof _0x1384ee[_0xfbef('0x2b')]===_0xfbef('0x2c')&&typeof _0x1384ee[_0xfbef('0x2d')]===_0xfbef('0x2c');var _0x6250bc=_0x2c6a75['count'];var _0xf0cfd9=_0x590180?0x0:_0x1384ee['offset'];var _0x396a05=_0x590180?_0x2c6a75[_0xfbef('0x2e')]:_0x1384ee[_0xfbef('0x2b')]+_0x1384ee[_0xfbef('0x2d')];var _0x39e1e2;if(_0x396a05>=_0x6250bc){_0x396a05=_0x6250bc;_0x39e1e2=0xc8;}else{_0x39e1e2=0xce;}_0x30faae[_0xfbef('0x28')](_0x39e1e2);return _0x30faae['set']('Content-Range',_0xf0cfd9+'-'+_0x396a05+'/'+_0x6250bc)[_0xfbef('0x2a')](_0x2c6a75);}return null;};}function patchUpdates(_0xc730df){return function(_0x4dfe5c){try{jsonpatch[_0xfbef('0x2f')](_0x4dfe5c,_0xc730df,!![]);}catch(_0x27a8ca){return BPromise['reject'](_0x27a8ca);}return _0x4dfe5c[_0xfbef('0x30')]();};}function saveUpdates(_0x1b7ef9,_0x52aefb){return function(_0x1d2889){if(_0x1d2889){return _0x1d2889[_0xfbef('0x31')](_0x1b7ef9)['then'](function(_0x353268){return _0x353268;});}return null;};}function removeEntity(_0x473444,_0x3a427f){return function(_0x52a242){if(_0x52a242){return _0x52a242[_0xfbef('0x32')]()['then'](function(){var _0x25d97b=_0x52a242[_0xfbef('0x33')]({'plain':!![]});var _0x58b42e=_0xfbef('0x34');return db[_0xfbef('0x35')]['destroy']({'where':{'type':_0x58b42e,'resourceId':_0x25d97b['id']}})[_0xfbef('0x36')](function(){return _0x52a242;});})[_0xfbef('0x36')](function(){_0x473444[_0xfbef('0x28')](0xcc)[_0xfbef('0x29')]();});}};}function handleEntityNotFound(_0x5cdb49,_0x3be688){return function(_0x46e4cf){if(!_0x46e4cf){_0x5cdb49[_0xfbef('0x27')](0x194);}return _0x46e4cf;};}function handleError(_0x45c796,_0x1741a8){_0x1741a8=_0x1741a8||0x1f4;return function(_0x25bcd2){logger['error'](_0x25bcd2[_0xfbef('0x37')]);if(_0x25bcd2[_0xfbef('0x38')]){delete _0x25bcd2[_0xfbef('0x38')];}_0x45c796[_0xfbef('0x28')](_0x1741a8)[_0xfbef('0x39')](_0x25bcd2);};}exports[_0xfbef('0x3a')]=function(_0x585589,_0x4381e6){var _0x32dfb6={'include':[{'model':db['Pause'],'as':_0xfbef('0x3b')}]},_0x156dd9={},_0x19c57a={'count':0x0,'rows':[]};var _0x23496e=_[_0xfbef('0x3c')](db[_0xfbef('0x3d')][_0xfbef('0x3e')],function(_0x40cd33){return{'name':_0x40cd33[_0xfbef('0x3f')],'type':_0x40cd33[_0xfbef('0x40')][_0xfbef('0x41')]};});_0x156dd9[_0xfbef('0x42')]=_[_0xfbef('0x3c')](_0x23496e,'name');_0x156dd9[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x585589[_0xfbef('0x43')]);_0x156dd9[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x156dd9[_0xfbef('0x42')],_0x156dd9[_0xfbef('0x43')]);_0x32dfb6['attributes']=_[_0xfbef('0x46')](_0x156dd9[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x585589[_0xfbef('0x43')][_0xfbef('0x47')]));_0x32dfb6['attributes']=_0x32dfb6[_0xfbef('0x48')][_0xfbef('0x49')]?_0x32dfb6['attributes']:_0x156dd9[_0xfbef('0x42')];if(!_0x585589[_0xfbef('0x43')]['hasOwnProperty'](_0xfbef('0x4a'))){_0x32dfb6[_0xfbef('0x2d')]=qs['limit'](_0x585589['query'][_0xfbef('0x2d')]);_0x32dfb6[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x585589[_0xfbef('0x43')][_0xfbef('0x2b')]);}_0x32dfb6[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x585589[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x32dfb6['where']=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x585589['query'],_0x156dd9['filters']),_0x23496e);if(_0x585589[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x32dfb6[_0xfbef('0x4f')]=_['merge'](_0x32dfb6['where'],{'$or':_['map'](_0x23496e,function(_0x57b80f){if(_0x57b80f['type']!==_0xfbef('0x50')){var _0x5e5205={};_0x5e5205[_0x57b80f[_0xfbef('0x38')]]={'$like':'%'+_0x585589[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x5e5205;}})});}_0x32dfb6=_[_0xfbef('0x51')]({},_0x32dfb6,_0x585589['options']);var _0x280c9c={'where':_0x32dfb6[_0xfbef('0x4f')]};return db[_0xfbef('0x3d')][_0xfbef('0x2e')](_0x280c9c)['then'](function(_0x36cbac){_0x19c57a[_0xfbef('0x2e')]=_0x36cbac;if(_0x585589[_0xfbef('0x43')][_0xfbef('0x52')]){_0x32dfb6[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x3d')][_0xfbef('0x54')](_0x32dfb6);})[_0xfbef('0x36')](function(_0x4d86e8){_0x19c57a[_0xfbef('0x55')]=_0x4d86e8;return _0x19c57a;})[_0xfbef('0x36')](respondWithFilteredResult(_0x4381e6,_0x32dfb6))[_0xfbef('0x26')](handleError(_0x4381e6,null));};exports[_0xfbef('0x56')]=function(_0x5d678f,_0x52350e){var _0x28b000={'raw':![],'where':{'id':_0x5d678f[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x58')],'as':_0xfbef('0x3b')}]},_0x2f19df={};_0x2f19df[_0xfbef('0x42')]=_['keys'](db[_0xfbef('0x3d')][_0xfbef('0x3e')]);_0x2f19df[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x5d678f[_0xfbef('0x43')]);_0x2f19df[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x2f19df[_0xfbef('0x42')],_0x2f19df[_0xfbef('0x43')]);_0x28b000[_0xfbef('0x48')]=_['intersection'](_0x2f19df[_0xfbef('0x42')],qs['fields'](_0x5d678f[_0xfbef('0x43')]['fields']));_0x28b000['attributes']=_0x28b000[_0xfbef('0x48')][_0xfbef('0x49')]?_0x28b000[_0xfbef('0x48')]:_0x2f19df[_0xfbef('0x42')];if(_0x5d678f[_0xfbef('0x43')][_0xfbef('0x52')]){_0x28b000[_0xfbef('0x53')]=[{'all':!![]}];}_0x28b000=_['merge']({},_0x28b000,_0x5d678f['options']);return db[_0xfbef('0x3d')][_0xfbef('0x59')](_0x28b000)[_0xfbef('0x36')](handleEntityNotFound(_0x52350e,null))[_0xfbef('0x36')](respondWithResult(_0x52350e,null))[_0xfbef('0x26')](handleError(_0x52350e,null));};exports[_0xfbef('0x5a')]=function(_0x5b2a,_0x578dda){return db['OpenchannelAccount'][_0xfbef('0x5a')](_0x5b2a[_0xfbef('0x5b')],{})[_0xfbef('0x36')](function(_0x32ee04){var _0x3a58ed=_0x5b2a[_0xfbef('0x5c')][_0xfbef('0x33')]({'plain':!![]});if(!_0x3a58ed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a58ed[_0xfbef('0x5d')]===_0xfbef('0x5c')){var _0x1d9659=_0x32ee04['get']({'plain':!![]});var _0x4dea27=_0xfbef('0x34');return db[_0xfbef('0x5e')][_0xfbef('0x59')]({'where':{'name':_0x4dea27,'userProfileId':_0x3a58ed[_0xfbef('0x5f')]},'raw':!![]})[_0xfbef('0x36')](function(_0x5f1a70){if(_0x5f1a70&&_0x5f1a70['autoAssociation']===0x0){return db[_0xfbef('0x35')][_0xfbef('0x5a')]({'name':_0x1d9659[_0xfbef('0x38')],'resourceId':_0x1d9659['id'],'type':_0x5f1a70[_0xfbef('0x38')],'sectionId':_0x5f1a70['id']},{})[_0xfbef('0x36')](function(){return _0x32ee04;});}else{return _0x32ee04;}})[_0xfbef('0x26')](function(_0x55f116){logger['error'](_0xfbef('0x60'),_0x55f116);throw _0x55f116;});}return _0x32ee04;})[_0xfbef('0x36')](respondWithResult(_0x578dda,0xc9))[_0xfbef('0x26')](handleError(_0x578dda,null));};exports[_0xfbef('0x31')]=function(_0x242390,_0x4c0268){if(_0x242390[_0xfbef('0x5b')]['id']){delete _0x242390['body']['id'];}return db['OpenchannelAccount'][_0xfbef('0x59')]({'where':{'id':_0x242390[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x58')],'as':_0xfbef('0x3b')}]})[_0xfbef('0x36')](handleEntityNotFound(_0x4c0268,null))[_0xfbef('0x36')](saveUpdates(_0x242390[_0xfbef('0x5b')],null))['then'](respondWithResult(_0x4c0268,null))[_0xfbef('0x26')](handleError(_0x4c0268,null));};exports[_0xfbef('0x32')]=function(_0x4040df,_0x5e516b){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x4040df[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x5e516b,null))[_0xfbef('0x36')](removeEntity(_0x5e516b,null))['catch'](handleError(_0x5e516b,null));};exports[_0xfbef('0x61')]=function(_0x2667aa,_0x2b55ac){return db['OpenchannelAccount'][_0xfbef('0x61')]()[_0xfbef('0x36')](respondWithResult(_0x2b55ac,null))[_0xfbef('0x26')](handleError(_0x2b55ac,null));};exports[_0xfbef('0x62')]=function(_0x58625a,_0x6aac82,_0x428c16){if(_0x58625a[_0xfbef('0x5b')]['id']){delete _0x58625a['body']['id'];}return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x58625a[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x6aac82,null))[_0xfbef('0x36')](function(_0x162ac9){if(_0x162ac9){_0x58625a[_0xfbef('0x5b')]['OpenchannelAccountId']=_0x162ac9['id'];return db['Disposition'][_0xfbef('0x5a')](_0x58625a['body']);}})[_0xfbef('0x36')](respondWithResult(_0x6aac82,null))[_0xfbef('0x26')](handleError(_0x6aac82,null));};exports[_0xfbef('0x63')]=function(_0x44f002,_0x5bf4bb,_0xc247ae){var _0x1bc503={'raw':![],'where':{}};var _0x24f511={};var _0x107ffe={'count':0x0,'rows':[]};return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x44f002[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x5bf4bb,null))[_0xfbef('0x36')](function(_0x122811){if(_0x122811){_0x24f511[_0xfbef('0x42')]=_[_0xfbef('0x44')](db[_0xfbef('0x65')][_0xfbef('0x3e')]);_0x24f511[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x44f002['query']);_0x24f511['filters']=_['intersection'](_0x24f511[_0xfbef('0x42')],_0x24f511[_0xfbef('0x43')]);_0x1bc503[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x24f511[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x44f002['query']['fields']));_0x1bc503[_0xfbef('0x48')]=_0x1bc503[_0xfbef('0x48')]['length']?_0x1bc503[_0xfbef('0x48')]:_0x24f511['model'];if(!_0x44f002['query'][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x1bc503[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x44f002['query'][_0xfbef('0x2d')]);_0x1bc503['offset']=qs[_0xfbef('0x2b')](_0x44f002['query']['offset']);}_0x1bc503[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x44f002[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x1bc503[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x44f002[_0xfbef('0x43')],_0x24f511[_0xfbef('0x45')]));_0x1bc503['where'][_0xfbef('0x67')]=_0x122811['id'];if(_0x44f002[_0xfbef('0x43')]['filter']){_0x1bc503[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x1bc503[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x1bc503[_0xfbef('0x48')],function(_0xcadaf3){var _0x332b29={};_0x332b29[_0xcadaf3]={'$like':'%'+_0x44f002[_0xfbef('0x43')]['filter']+'%'};return _0x332b29;})});}_0x1bc503=_[_0xfbef('0x51')]({},_0x1bc503,_0x44f002[_0xfbef('0x68')]);return db[_0xfbef('0x65')]['count']({'where':_0x1bc503[_0xfbef('0x4f')]})[_0xfbef('0x36')](function(_0x4a5985){_0x107ffe[_0xfbef('0x2e')]=_0x4a5985;if(_0x44f002['query'][_0xfbef('0x52')]){_0x1bc503[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x65')][_0xfbef('0x54')](_0x1bc503);})[_0xfbef('0x36')](function(_0x20f75f){_0x107ffe[_0xfbef('0x55')]=_0x20f75f;return _0x107ffe;});}})['then'](respondWithFilteredResult(_0x5bf4bb,_0x1bc503))[_0xfbef('0x26')](handleError(_0x5bf4bb,null));};exports[_0xfbef('0x69')]=function(_0x2a1cd4,_0x10a1e0,_0x111e5b){return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x2a1cd4['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x10a1e0,null))[_0xfbef('0x36')](function(_0x12be21){if(_0x12be21){return _0x12be21['removeDispositions'](_0x2a1cd4[_0xfbef('0x43')]['ids']);}})[_0xfbef('0x36')](respondWithStatusCode(_0x10a1e0,null))[_0xfbef('0x26')](handleError(_0x10a1e0,null));};exports['addAnswer']=function(_0x4da21f,_0x724e4c,_0x532722){if(_0x4da21f[_0xfbef('0x5b')]['id']){delete _0x4da21f['body']['id'];}return db[_0xfbef('0x3d')]['find']({'where':{'id':_0x4da21f['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x724e4c,null))['then'](function(_0x5e48ee){if(_0x5e48ee){_0x4da21f[_0xfbef('0x5b')][_0xfbef('0x67')]=_0x5e48ee['id'];return db[_0xfbef('0x6a')]['create'](_0x4da21f[_0xfbef('0x5b')]);}})['then'](respondWithResult(_0x724e4c,null))[_0xfbef('0x26')](handleError(_0x724e4c,null));};exports['getAnswers']=function(_0x45cc66,_0x2a691b,_0x37f0b1){var _0x267e5a={'raw':![],'where':{}};var _0x128312={};var _0x1fc9d0={'count':0x0,'rows':[]};return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x45cc66['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x2a691b,null))[_0xfbef('0x36')](function(_0x55422a){if(_0x55422a){_0x128312[_0xfbef('0x42')]=_[_0xfbef('0x44')](db['CannedAnswer'][_0xfbef('0x3e')]);_0x128312[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x45cc66[_0xfbef('0x43')]);_0x128312[_0xfbef('0x45')]=_['intersection'](_0x128312[_0xfbef('0x42')],_0x128312[_0xfbef('0x43')]);_0x267e5a[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x128312[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x47')]));_0x267e5a[_0xfbef('0x48')]=_0x267e5a[_0xfbef('0x48')][_0xfbef('0x49')]?_0x267e5a[_0xfbef('0x48')]:_0x128312[_0xfbef('0x42')];if(!_0x45cc66[_0xfbef('0x43')][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x267e5a[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x267e5a[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x45cc66[_0xfbef('0x43')][_0xfbef('0x2b')]);}_0x267e5a[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x45cc66[_0xfbef('0x43')]['sort']);_0x267e5a[_0xfbef('0x4f')]=qs['filters'](_[_0xfbef('0x4d')](_0x45cc66['query'],_0x128312[_0xfbef('0x45')]));_0x267e5a[_0xfbef('0x4f')][_0xfbef('0x67')]=_0x55422a['id'];if(_0x45cc66[_0xfbef('0x43')]['filter']){_0x267e5a[_0xfbef('0x4f')]=_['merge'](_0x267e5a['where'],{'$or':_[_0xfbef('0x3c')](_0x267e5a[_0xfbef('0x48')],function(_0x424b28){var _0x150fd9={};_0x150fd9[_0x424b28]={'$like':'%'+_0x45cc66[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x150fd9;})});}_0x267e5a=_['merge']({},_0x267e5a,_0x45cc66['options']);return db[_0xfbef('0x6a')][_0xfbef('0x2e')]({'where':_0x267e5a['where']})['then'](function(_0x3a36af){_0x1fc9d0[_0xfbef('0x2e')]=_0x3a36af;if(_0x45cc66[_0xfbef('0x43')][_0xfbef('0x52')]){_0x267e5a[_0xfbef('0x53')]=[{'all':!![]}];}return db[_0xfbef('0x6a')]['findAll'](_0x267e5a);})[_0xfbef('0x36')](function(_0x4f2c74){_0x1fc9d0[_0xfbef('0x55')]=_0x4f2c74;return _0x1fc9d0;});}})[_0xfbef('0x36')](respondWithFilteredResult(_0x2a691b,_0x267e5a))[_0xfbef('0x26')](handleError(_0x2a691b,null));};exports[_0xfbef('0x6b')]=function(_0x5a8923,_0x2a6a53,_0x5ecb6a){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x5a8923[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x2a6a53,null))['then'](function(_0x258028){if(_0x258028){return _0x258028[_0xfbef('0x6b')](_0x5a8923['query'][_0xfbef('0x6c')]);}})[_0xfbef('0x36')](respondWithStatusCode(_0x2a6a53,null))['catch'](handleError(_0x2a6a53,null));};exports[_0xfbef('0x6d')]=function(_0x4e9d2b,_0x371455,_0x2fcda7){var _0xe3924f={'body':_0x4e9d2b[_0xfbef('0x5b')],'channel':_0xfbef('0x6e')};var _0x59c02c=[];var _0xa34ea6=[];var _0x6dfd11={};var _0x3aef78=![];return db[_0xfbef('0x6f')][_0xfbef('0x61')]()[_0xfbef('0x36')](function(_0x4dc32b){if(!_0x4dc32b){throw new db[(_0xfbef('0x70'))]['ValidationError']('no\x20available\x20attributes');}_0x59c02c=_[_0xfbef('0x71')](_[_0xfbef('0x44')](_0x4dc32b),[_0xfbef('0x72'),_0xfbef('0x73')]);_0xa34ea6=_[_0xfbef('0x71')](_[_0xfbef('0x44')](_0x4dc32b),[_0xfbef('0x72'),_0xfbef('0x73'),_0xfbef('0x74'),_0xfbef('0x75')]);if(_0x4e9d2b[_0xfbef('0x5b')]['id']){delete _0x4e9d2b['body']['id'];}if(_['isNil'](_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')])){throw new db[(_0xfbef('0x70'))][(_0xfbef('0x77'))]('from\x20is\x20mandatory');}if(_[_0xfbef('0x78')](_0x4e9d2b['body'][_0xfbef('0x5b')])||_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x5b')]===''){throw new db[(_0xfbef('0x70'))][(_0xfbef('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfbef('0x78')](_0x4e9d2b[_0xfbef('0x5b')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0xfbef('0x79')+_0xa34ea6);}if(!_[_0xfbef('0x7a')](_0xa34ea6,_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x7b')])){throw new db[(_0xfbef('0x70'))]['ValidationError'](_0xfbef('0x7c')+_0xa34ea6);}_0x6dfd11[_0x4e9d2b['body'][_0xfbef('0x7b')]]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')];})[_0xfbef('0x36')](function(){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x4e9d2b[_0xfbef('0x57')]['id']},'include':[{'model':db[_0xfbef('0x7d')],'as':_0xfbef('0x7e'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x6dfd11,'limit':0x1,'order':[[_0xfbef('0x73'),'DESC']]}]},{'model':db[_0xfbef('0x7f')],'as':'Applications'}]});})[_0xfbef('0x36')](handleEntityNotFound(_0x371455,null))['then'](function(_0xf49b66){if(_0xf49b66&&_0xf49b66['List']){_0xe3924f[_0xfbef('0x80')]=_0xf49b66;_0xe3924f[_0xfbef('0x81')]=_0xf49b66[_0xfbef('0x82')];_0xe3924f[_0xfbef('0x83')]=_0xf49b66[_0xfbef('0x7e')];_0xe3924f[_0xfbef('0x81')]=_[_0xfbef('0x84')](_0xe3924f[_0xfbef('0x81')],[_0xfbef('0x85')],[_0xfbef('0x86')]);if(_0xe3924f[_0xfbef('0x80')][_0xfbef('0x82')]){delete _0xe3924f[_0xfbef('0x80')][_0xfbef('0x82')];}if(_0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')]&&_0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')]['Contacts'][_0xfbef('0x49')]){return _0xe3924f[_0xfbef('0x80')][_0xfbef('0x7e')][_0xfbef('0x87')][0x0];}var _0x5bd862=_[_0xfbef('0x18')](_0x4e9d2b[_0xfbef('0x5b')],{'firstName':_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x76')],'ListId':_0xf49b66[_0xfbef('0x75')]});_0x5bd862[_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x7b')]]=_0x4e9d2b['body'][_0xfbef('0x76')];return db['CmContact']['create'](_0x5bd862,{'fields':_0x59c02c,'raw':!![]});}})[_0xfbef('0x36')](handleEntityNotFound(_0x371455,null))[_0xfbef('0x36')](function(_0x5bd9cb){_0xe3924f[_0xfbef('0x88')]=_0x5bd9cb;if(_0x5bd9cb){var _0x1306b7={'ContactId':_0x5bd9cb['id'],'OpenchannelAccountId':_0x4e9d2b['params']['id'],'from':(_0x5bd9cb[_0xfbef('0x89')]||'')+'\x20'+(_0x5bd9cb['lastName']||'')};var _0x1e7757={'OpenchannelAccountId':_0x4e9d2b[_0xfbef('0x57')]['id'],'closed':![]};if(_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]){_0x1e7757[_0xfbef('0x8a')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')];return db[_0xfbef('0x8b')][_0xfbef('0x59')]({'where':_0x1e7757})[_0xfbef('0x36')](function(_0x192f23){if(_0x192f23){return[_0x192f23,![]];}_0x1306b7[_0xfbef('0x8a')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')];_0x1306b7[_0xfbef('0x8c')]=_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8c')];return db['OpenchannelInteraction']['create'](_0x1306b7)[_0xfbef('0x36')](function(_0x167fea){return[_0x167fea,!![]];});});}else{_0x1e7757[_0xfbef('0x8a')]=null;}_0x1e7757['ContactId']=_0x5bd9cb['id'];return db['OpenchannelInteraction'][_0xfbef('0x59')]({'where':_0x1e7757})[_0xfbef('0x36')](function(_0x5d079f){if(_0x5d079f){return[_0x5d079f,![]];}return db['OpenchannelInteraction'][_0xfbef('0x5a')](_0x1306b7)[_0xfbef('0x36')](function(_0x2fe142){return[_0x2fe142,!![]];});});}})[_0xfbef('0x8d')](function(_0x1a1349,_0x21ee3d){if(_0x1a1349){_0x3aef78=_0x21ee3d;if(!_0x21ee3d){var _0x2d607e={'from':(_0xe3924f[_0xfbef('0x88')][_0xfbef('0x89')]||'')+'\x20'+(_0xe3924f[_0xfbef('0x88')]['lastName']||'')};if(_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]&&_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8e')]&&_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x8a')]!=_0x4e9d2b[_0xfbef('0x5b')]['messageId']){_0x2d607e['threadId']=_0x4e9d2b[_0xfbef('0x5b')]['messageId'];}return _0x1a1349[_0xfbef('0x31')](_0x2d607e);}else{return _0x1a1349;}}})[_0xfbef('0x36')](function(_0x3f97f4){_0xe3924f[_0xfbef('0x8f')]=_0x3f97f4[_0xfbef('0x33')]({'plain':!![]});_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x90')]=_0x3aef78;if(_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x90')]){if(_0xe3924f[_0xfbef('0x80')]['autoclose']){_0xe3924f[_0xfbef('0x81')][_0xfbef('0x91')]({'id':0x0,'priority':_0xe3924f[_0xfbef('0x81')]['length']+0x1,'app':'close','appdata':_0xfbef('0x92'),'interval':_0xfbef('0x93')});}}return db['OpenchannelMessage'][_0xfbef('0x5a')]({'body':_0x4e9d2b['body'][_0xfbef('0x5b')],'OpenchannelAccountId':_0x4e9d2b[_0xfbef('0x57')]['id'],'OpenchannelInteractionId':_0x3f97f4['id'],'direction':'in','ContactId':_0xe3924f['contact']['id'],'AttachmentId':_0x4e9d2b[_0xfbef('0x5b')][_0xfbef('0x94')]});})[_0xfbef('0x36')](function(_0x4a237e){_0xe3924f[_0xfbef('0x24')]=_0x4a237e;if(_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x95')]){return db[_0xfbef('0x96')][_0xfbef('0x59')]({'attributes':['id',_0xfbef('0x38')],'where':{'id':_0xe3924f[_0xfbef('0x8f')][_0xfbef('0x95')]}})[_0xfbef('0x36')](function(_0x54c5cc){if(_0x54c5cc){_0xe3924f[_0xfbef('0x81')][_0xfbef('0x97')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x54c5cc[_0xfbef('0x38')]+','+(_0xe3924f['account'][_0xfbef('0x98')]||0xa),'interval':_0xfbef('0x93')});_0xe3924f['forcedOwnership']=![];}return respondWithRpcPromise('Start',_0xfbef('0x99'),_0xe3924f);});}return respondWithRpcPromise(_0xfbef('0x9a'),_0xfbef('0x99'),_0xe3924f);})[_0xfbef('0x36')](function(_0x24f5f7){respondWithRpcPromise(_0xfbef('0x9b'),_0xfbef('0x9b'),{'event':'notify','message':_0x24f5f7},client9002);return _0x24f5f7;})[_0xfbef('0x36')](respondWithResult(_0x371455,null))[_0xfbef('0x26')](handleError(_0x371455,null));};exports[_0xfbef('0x9c')]=function(_0x385b54,_0x245e03){var _0x39f492=_0x385b54[_0xfbef('0x57')]['id'];var _0x1d3d00=_0x385b54['body'];var _0x2b42a3=0xc8;var _0x124f16=null;return db['sequelize'][_0xfbef('0x9d')]({'isolationLevel':db['sequelize']['Transaction'][_0xfbef('0x9e')][_0xfbef('0x9f')]},function(_0x4f76e5){return db['OpenchannelAccount'][_0xfbef('0x64')]({'where':{'id':_0x39f492},'transaction':_0x4f76e5})[_0xfbef('0x36')](function(_0x28fea0){if(_0x28fea0){return db[_0xfbef('0x7f')][_0xfbef('0x32')]({'where':{'OpenchannelAccountId':_0x39f492},'transaction':_0x4f76e5})[_0xfbef('0x36')](function(){var _0x1766b9=_['map'](_0x1d3d00,function(_0x4bfb0f){_0x4bfb0f[_0xfbef('0x67')]=_0x39f492;return _0x4bfb0f;});return db[_0xfbef('0x7f')][_0xfbef('0xa0')](_0x1766b9,{'transaction':_0x4f76e5});});}else{_0x2b42a3=0x194;_0x124f16=[];}});})[_0xfbef('0x36')](function(){if(_0x2b42a3!==0x194){return db[_0xfbef('0x7f')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x39f492},'order':_0xfbef('0x85')})[_0xfbef('0x36')](function(_0x37a16d){_0x124f16=_0x37a16d;});}})[_0xfbef('0x26')](function(_0x70eb95){_0x2b42a3=0x1f4;logger[_0xfbef('0x22')](_0x70eb95[_0xfbef('0x37')]);if(_0x70eb95[_0xfbef('0x38')]){delete _0x70eb95[_0xfbef('0x38')];}_0x124f16=_0x70eb95;})['finally'](function(){if(_0x124f16===null){_0x245e03[_0xfbef('0x27')](_0x2b42a3);}else{if(_0x2b42a3===0x1f4){_0x245e03[_0xfbef('0x28')](_0x2b42a3)[_0xfbef('0x39')](_0x124f16);}else{_0x245e03[_0xfbef('0x28')](_0x2b42a3)[_0xfbef('0x2a')](_0x124f16);}}});};exports[_0xfbef('0xa1')]=function(_0x3c5422,_0x56b295,_0x1f9d58){var _0x17b704={};var _0x2a1db8={};var _0xaba93f;var _0x55076c;return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x3c5422[_0xfbef('0x57')]['id']}})['then'](handleEntityNotFound(_0x56b295,null))[_0xfbef('0x36')](function(_0x489a00){if(_0x489a00){_0xaba93f=_0x489a00;_0x2a1db8[_0xfbef('0x42')]=_[_0xfbef('0x44')](db[_0xfbef('0x7f')][_0xfbef('0x3e')]);_0x2a1db8['query']=_[_0xfbef('0x44')](_0x3c5422[_0xfbef('0x43')]);_0x2a1db8['filters']=_[_0xfbef('0x46')](_0x2a1db8[_0xfbef('0x42')],_0x2a1db8[_0xfbef('0x43')]);_0x17b704[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x2a1db8['model'],qs[_0xfbef('0x47')](_0x3c5422['query']['fields']));_0x17b704[_0xfbef('0x48')]=_0x17b704[_0xfbef('0x48')][_0xfbef('0x49')]?_0x17b704[_0xfbef('0x48')]:_0x2a1db8[_0xfbef('0x42')];_0x17b704[_0xfbef('0x4b')]=qs['sort'](_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x17b704[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_[_0xfbef('0x4d')](_0x3c5422[_0xfbef('0x43')],_0x2a1db8[_0xfbef('0x45')]));if(_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x17b704[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x17b704[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x17b704['attributes'],function(_0x24af1f){var _0x190c99={};_0x190c99[_0x24af1f]={'$like':'%'+_0x3c5422[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x190c99;})});}_0x17b704=_[_0xfbef('0x51')]({},_0x17b704,_0x3c5422[_0xfbef('0x68')]);return _0xaba93f[_0xfbef('0xa1')](_0x17b704);}})[_0xfbef('0x36')](function(_0x4bebdb){if(_0x4bebdb){_0x55076c=_0x4bebdb[_0xfbef('0x49')];if(!_0x3c5422[_0xfbef('0x43')]['hasOwnProperty']('nolimit')){_0x17b704[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x3c5422[_0xfbef('0x43')]['limit']);_0x17b704[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x3c5422['query'][_0xfbef('0x2b')]);}return _0xaba93f[_0xfbef('0xa1')](_0x17b704);}})[_0xfbef('0x36')](function(_0x5aa92c){if(_0x5aa92c){return _0x5aa92c?{'count':_0x55076c,'rows':_0x5aa92c}:null;}})[_0xfbef('0x36')](respondWithResult(_0x56b295,null))['catch'](handleError(_0x56b295,null));};exports['getInteractions']=function(_0x22a4e3,_0x85a2a7,_0x1ad31e){var _0x4976f9={'raw':![],'where':{}};var _0x2c5f60={};var _0x3df10f={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x22a4e3[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x85a2a7,null))[_0xfbef('0x36')](function(_0x55ab25){if(_0x55ab25){_0x2c5f60[_0xfbef('0x42')]=_[_0xfbef('0x44')](db['OpenchannelInteraction']['rawAttributes']);_0x2c5f60[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x22a4e3[_0xfbef('0x43')]);_0x2c5f60[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x2c5f60['model'],_0x2c5f60[_0xfbef('0x43')]);_0x4976f9[_0xfbef('0x48')]=_['intersection'](_0x2c5f60[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x47')]));_0x4976f9['attributes']=_0x4976f9[_0xfbef('0x48')][_0xfbef('0x49')]?_0x4976f9[_0xfbef('0x48')]:_0x2c5f60[_0xfbef('0x42')];if(!_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x66')](_0xfbef('0x4a'))){_0x4976f9[_0xfbef('0x2d')]=qs['limit'](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x4976f9['offset']=qs[_0xfbef('0x2b')](_0x22a4e3['query']['offset']);}_0x4976f9['order']=qs['sort'](_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x4976f9[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_['pick'](_0x22a4e3[_0xfbef('0x43')],_0x2c5f60[_0xfbef('0x45')]));_0x4976f9[_0xfbef('0x4f')][_0xfbef('0x67')]=_0x55ab25['id'];if(_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4e')]){_0x4976f9['where']=_[_0xfbef('0x51')](_0x4976f9['where'],{'$or':_[_0xfbef('0x3c')](_0x4976f9[_0xfbef('0x48')],function(_0x4d73b5){var _0x3811a4={};_0x3811a4[_0x4d73b5]={'$like':'%'+_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0x3811a4;})});}_0x4976f9=_[_0xfbef('0x51')]({},_0x4976f9,_0x22a4e3[_0xfbef('0x68')]);return db[_0xfbef('0x8b')][_0xfbef('0x2e')]({'where':_0x4976f9[_0xfbef('0x4f')]})[_0xfbef('0x36')](function(_0x49f146){_0x3df10f['count']=_0x49f146;if(_0x22a4e3[_0xfbef('0x43')][_0xfbef('0x52')]){_0x4976f9[_0xfbef('0x53')]=[{'model':db[_0xfbef('0x6f')],'as':_0xfbef('0xa2'),'required':![]},{'model':db[_0xfbef('0x96')],'as':_0xfbef('0xa3'),'attributes':[_0xfbef('0x38'),'fullname','internal'],'required':![]},{'model':db[_0xfbef('0xa4')],'as':_0xfbef('0xa5'),'attributes':['id',_0xfbef('0x38'),_0xfbef('0xa6')],'where':_0x22a4e3['query'][_0xfbef('0xa7')]?{'id':_0x22a4e3[_0xfbef('0x43')]['tag']}:undefined,'required':_0x22a4e3['query'][_0xfbef('0xa7')]?!![]:![]}];}return db[_0xfbef('0x8b')]['findAll'](_0x4976f9);})[_0xfbef('0x36')](function(_0x75267f){_0x3df10f[_0xfbef('0x55')]=_0x75267f;return _0x3df10f;});}})['then'](respondWithFilteredResult(_0x85a2a7,_0x4976f9))['catch'](handleError(_0x85a2a7,null));};exports[_0xfbef('0xa8')]=function(_0x1fb74b,_0x5c96ef,_0x3d4f83){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x1fb74b[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x5c96ef,null))[_0xfbef('0x36')](function(_0x356576){if(_0x356576){return _0x356576[_0xfbef('0xa8')](_0x1fb74b[_0xfbef('0x5b')][_0xfbef('0x6c')],_[_0xfbef('0xa9')](_0x1fb74b[_0xfbef('0x5b')],[_0xfbef('0x6c'),'id'])||{})[_0xfbef('0x8d')](function(_0x32f0fe){for(var _0x18ba43=0x0;_0x18ba43<_0x1fb74b[_0xfbef('0x5b')]['ids'][_0xfbef('0x49')];_0x18ba43+=0x1){socket['emit'](_0xfbef('0xaa'),{'UserId':Number(_0x1fb74b[_0xfbef('0x5b')][_0xfbef('0x6c')][_0x18ba43]),'OpenchannelAccountId':Number(_0x1fb74b[_0xfbef('0x57')]['id'])});}return _0x32f0fe;});}})['then'](respondWithResult(_0x5c96ef,null))[_0xfbef('0x26')](handleError(_0x5c96ef,null));};exports[_0xfbef('0xab')]=function(_0x46e546,_0x3445d3,_0x3407dc){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x46e546[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x3445d3,null))[_0xfbef('0x36')](function(_0x5519f5){if(_0x5519f5){return _0x5519f5[_0xfbef('0xab')](_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')])['then'](function(){if(_['isArray'](_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')])){for(var _0x3c6f59=0x0;_0x3c6f59<_0x46e546[_0xfbef('0x43')]['ids']['length'];_0x3c6f59+=0x1){socket[_0xfbef('0xac')](_0xfbef('0xad'),{'UserId':Number(_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')][_0x3c6f59]),'OpenchannelAccountId':Number(_0x46e546['params']['id'])});}}else{socket[_0xfbef('0xac')](_0xfbef('0xad'),{'UserId':Number(_0x46e546[_0xfbef('0x43')][_0xfbef('0x6c')]),'OpenchannelAccountId':Number(_0x46e546['params']['id'])});}});}})[_0xfbef('0x36')](respondWithStatusCode(_0x3445d3,null))[_0xfbef('0x26')](handleError(_0x3445d3,null));};exports[_0xfbef('0xae')]=function(_0x3c127c,_0x359d2e,_0x2ae1eb){var _0x286a5b={};var _0x4ebfde={};var _0xa3564c;var _0xe84558;return db[_0xfbef('0x3d')][_0xfbef('0x64')]({'where':{'id':_0x3c127c['params']['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x359d2e,null))[_0xfbef('0x36')](function(_0x361945){if(_0x361945){_0xa3564c=_0x361945;_0x4ebfde[_0xfbef('0x42')]=_['keys'](db[_0xfbef('0x96')][_0xfbef('0x3e')]);_0x4ebfde[_0xfbef('0x43')]=_[_0xfbef('0x44')](_0x3c127c[_0xfbef('0x43')]);_0x4ebfde[_0xfbef('0x45')]=_[_0xfbef('0x46')](_0x4ebfde[_0xfbef('0x42')],_0x4ebfde[_0xfbef('0x43')]);_0x286a5b[_0xfbef('0x48')]=_[_0xfbef('0x46')](_0x4ebfde[_0xfbef('0x42')],qs[_0xfbef('0x47')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x47')]));_0x286a5b[_0xfbef('0x48')]=_0x286a5b[_0xfbef('0x48')]['length']?_0x286a5b[_0xfbef('0x48')]:_0x4ebfde['model'];_0x286a5b[_0xfbef('0x4b')]=qs[_0xfbef('0x4c')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x4c')]);_0x286a5b[_0xfbef('0x4f')]=qs[_0xfbef('0x45')](_['pick'](_0x3c127c[_0xfbef('0x43')],_0x4ebfde[_0xfbef('0x45')]));if(_0x3c127c['query']['filter']){_0x286a5b[_0xfbef('0x4f')]=_[_0xfbef('0x51')](_0x286a5b[_0xfbef('0x4f')],{'$or':_[_0xfbef('0x3c')](_0x286a5b[_0xfbef('0x48')],function(_0x4fbc1c){var _0xd0bd3f={};_0xd0bd3f[_0x4fbc1c]={'$like':'%'+_0x3c127c[_0xfbef('0x43')][_0xfbef('0x4e')]+'%'};return _0xd0bd3f;})});}_0x286a5b=_['merge']({},_0x286a5b,_0x3c127c[_0xfbef('0x68')]);return _0xa3564c[_0xfbef('0xae')](_0x286a5b);}})['then'](function(_0x3221e5){if(_0x3221e5){_0xe84558=_0x3221e5[_0xfbef('0x49')];if(!_0x3c127c[_0xfbef('0x43')][_0xfbef('0x66')]('nolimit')){_0x286a5b[_0xfbef('0x2d')]=qs[_0xfbef('0x2d')](_0x3c127c[_0xfbef('0x43')][_0xfbef('0x2d')]);_0x286a5b[_0xfbef('0x2b')]=qs[_0xfbef('0x2b')](_0x3c127c['query'][_0xfbef('0x2b')]);}return _0xa3564c[_0xfbef('0xae')](_0x286a5b);}})[_0xfbef('0x36')](function(_0x131f26){if(_0x131f26){return _0x131f26?{'count':_0xe84558,'rows':_0x131f26}:null;}})[_0xfbef('0x36')](respondWithResult(_0x359d2e,null))['catch'](handleError(_0x359d2e,null));};exports[_0xfbef('0x39')]=function(_0x3a644c,_0x1781ea,_0x36a182){var _0x51c77f,_0x2130b4,_0x42fd04;if(_['isNil'](_0x3a644c[_0xfbef('0x5b')][_0xfbef('0x5b')])||_0x3a644c[_0xfbef('0x5b')]['body']===''){throw new db[(_0xfbef('0x70'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfbef('0x78')](_0x3a644c[_0xfbef('0x5b')]['to'])){}_0x51c77f=_0x3a644c['body']['to'];return db['OpenchannelAccount'][_0xfbef('0x64')]({'where':{'id':_0x3a644c[_0xfbef('0x57')]['id']}})[_0xfbef('0x36')](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x39d259){if(_0x39d259){return db[_0xfbef('0x3d')][_0xfbef('0x59')]({'where':{'id':_0x39d259['id']},'include':[{'model':db[_0xfbef('0x7d')],'as':_0xfbef('0x7e'),'include':[{'model':db[_0xfbef('0x6f')],'as':_0xfbef('0x87'),'where':{[_0x39d259[_0xfbef('0x7b')]]:_0x51c77f},'limit':0x1,'order':[[_0xfbef('0x73'),_0xfbef('0xaf')]]}]}]})['then'](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x301e73){if(_0x301e73&&_0x301e73[_0xfbef('0x7e')]){_0x2130b4=_0x301e73[_0xfbef('0x33')]({'plain':!![]});if(_0x2130b4[_0xfbef('0x7e')]&&_0x2130b4[_0xfbef('0x7e')]['Contacts'][_0xfbef('0x49')]){return _0x2130b4['List'][_0xfbef('0x87')][0x0];}return db['CmContact'][_0xfbef('0x5a')](_['defaults'](_0x3a644c['body'],{'firstName':_0x51c77f,[_0x301e73[_0xfbef('0x7b')]]:_0x51c77f,'phone':_0x51c77f,'ListId':_0x2130b4[_0xfbef('0x75')]}));}})[_0xfbef('0x36')](handleEntityNotFound(_0x1781ea,null))[_0xfbef('0x36')](function(_0x33d228){if(_0x33d228){_0x42fd04=_0x33d228;return db[_0xfbef('0x8b')][_0xfbef('0x59')]({'where':{'ContactId':_0x42fd04['id'],'closed':![],'OpenchannelAccountId':_0x2130b4['id']}})[_0xfbef('0x36')](function(_0x3f3660){if(_0x3f3660){return[_0x3f3660,![]];}return db['OpenchannelInteraction'][_0xfbef('0x5a')]({'UserId':_0x3a644c['user']['id'],'ContactId':_0x42fd04['id'],'OpenchannelAccountId':_0x2130b4['id'],'lastMsgDirection':_0xfbef('0xb0'),'firstMsgDirection':_0xfbef('0xb0'),'Messages':[_[_0xfbef('0x51')](_0x3a644c[_0xfbef('0x5b')],{'read':![],'body':_0x3a644c['body'][_0xfbef('0x5b')],'OpenchannelAccountId':_0x2130b4['id'],'UserId':_0x3a644c[_0xfbef('0x5c')]['id'],'ContactId':_0x42fd04['id']})]},{'include':[{'model':db[_0xfbef('0xb1')],'as':'Messages'}]})['then'](function(_0x173e1f){return[_0x173e1f,!![]];});});}})[_0xfbef('0x8d')](function(_0x1cd593,_0x10e699){if(_0x10e699){return _0x1cd593;}return db[_0xfbef('0xb1')][_0xfbef('0x5a')](_[_0xfbef('0x51')](_0x3a644c[_0xfbef('0x5b')],{'read':![],'body':_0x3a644c[_0xfbef('0x5b')]['body'],'OpenchannelAccountId':_0x2130b4['id'],'OpenchannelInteractionId':_0x1cd593['id'],'UserId':_0x3a644c['user']['id'],'ContactId':_0x42fd04['id']}))[_0xfbef('0x36')](function(_0x2aaebb){_0x1cd593[_0xfbef('0xb2')][_0xfbef('0xb3')]=[];_0x1cd593[_0xfbef('0xb2')][_0xfbef('0xb3')]['push'](_0x2aaebb[_0xfbef('0xb2')]);return _0x1cd593;});});}})[_0xfbef('0x36')](respondWithResult(_0x1781ea,null))[_0xfbef('0x26')](handleError(_0x1781ea,null));};
\ No newline at end of file
+var _0x01e7=['order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','rawAttributes','intersection','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','nolimit','OpenchannelAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','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','OpenchannelApplication','Applications','list','applications','orderBy','priority','asc','account','defaults','contact','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','push','close','unmanaged','AttachmentId','UserId','User','unshift','*,*,*,*','startRouting','Start','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','sendStatus','getApplications','getInteractions','Contact','Owner','Tags','color','tag','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','Messages','dataValues','eml-format','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','fieldName','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','limit'];(function(_0x39f6c6,_0x49e942){var _0x3df9ca=function(_0x113846){while(--_0x113846){_0x39f6c6['push'](_0x39f6c6['shift']());}};_0x3df9ca(++_0x49e942);}(_0x01e7,0x134));var _0x701e=function(_0xdcae81,_0xa0d46b){_0xdcae81=_0xdcae81-0x0;var _0x2f44d3=_0x01e7[_0xdcae81];return _0x2f44d3;};'use strict';var emlformat=require(_0x701e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x701e('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x701e('0x2'));var Mustache=require(_0x701e('0x3'));var util=require(_0x701e('0x4'));var path=require('path');var sox=require(_0x701e('0x5'));var csv=require(_0x701e('0x6'));var ejs=require(_0x701e('0x7'));var fs=require('fs');var fs_extra=require(_0x701e('0x8'));var _=require('lodash');var squel=require(_0x701e('0x9'));var crypto=require(_0x701e('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x701e('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x701e('0xc'));var Redis=require('ioredis');var authService=require(_0x701e('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x701e('0xe'));var hardwareService=require(_0x701e('0xf'));var logger=require('../../config/logger')(_0x701e('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x701e('0x11'));var db=require(_0x701e('0x12'))['db'];config[_0x701e('0x13')]=_['defaults'](config[_0x701e('0x13')],{'host':_0x701e('0x14'),'port':0x18eb});var socket=require(_0x701e('0x15'))(new Redis(config[_0x701e('0x13')]));require('./openchannelAccount.socket')[_0x701e('0x16')](socket);var jayson=require(_0x701e('0x17'));var client=jayson[_0x701e('0x18')][_0x701e('0x19')]({'port':0x232c});var client9002=jayson[_0x701e('0x18')][_0x701e('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x8c360,_0x34d5f4,_0x386dc6,_0x2a284c){return new BPromise(function(_0x2384cf,_0x186c8d){var _0x14a2b1=_0x2a284c||client;return _0x14a2b1[_0x701e('0x1a')](_0x8c360,_0x386dc6)[_0x701e('0x1b')](function(_0x4bc86e){logger[_0x701e('0x1c')](_0x701e('0x1d'),_0x34d5f4,_0x701e('0x1e'));logger[_0x701e('0x1f')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x34d5f4,_0x701e('0x1e'),JSON['stringify'](_0x4bc86e));if(_0x4bc86e[_0x701e('0x20')]){if(_0x4bc86e['error'][_0x701e('0x21')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x34d5f4,_0x4bc86e[_0x701e('0x20')][_0x701e('0x22')]);return _0x186c8d(_0x4bc86e[_0x701e('0x20')]['message']);}logger[_0x701e('0x20')](_0x701e('0x1d'),_0x34d5f4,_0x4bc86e[_0x701e('0x20')][_0x701e('0x22')]);return _0x2384cf(_0x4bc86e['error'][_0x701e('0x22')]);}else{logger[_0x701e('0x1c')](_0x701e('0x1d'),_0x34d5f4,'request\x20sent');_0x2384cf(_0x4bc86e[_0x701e('0x23')][_0x701e('0x22')]);}})['catch'](function(_0x3c128b){logger[_0x701e('0x20')](_0x701e('0x1d'),_0x34d5f4,_0x3c128b);_0x186c8d(_0x3c128b);});});}function respondWithStatusCode(_0x33a0a9,_0x3b2502){_0x3b2502=_0x3b2502||0xcc;return function(_0x34fc25){if(_0x34fc25){return _0x33a0a9['sendStatus'](_0x3b2502);}return _0x33a0a9['status'](_0x3b2502)['end']();};}function respondWithResult(_0x22e5ad,_0x4596c2){_0x4596c2=_0x4596c2||0xc8;return function(_0x3dbb08){if(_0x3dbb08){return _0x22e5ad[_0x701e('0x24')](_0x4596c2)[_0x701e('0x25')](_0x3dbb08);}};}function respondWithFilteredResult(_0x3d75e9,_0x48e697){return function(_0xc85d32){if(_0xc85d32){var _0x170fc2=typeof _0x48e697[_0x701e('0x26')]===_0x701e('0x27')&&typeof _0x48e697['limit']==='undefined';var _0x36cc3f=_0xc85d32[_0x701e('0x28')];var _0x53909f=_0x170fc2?0x0:_0x48e697[_0x701e('0x26')];var _0xd1b089=_0x170fc2?_0xc85d32[_0x701e('0x28')]:_0x48e697['offset']+_0x48e697['limit'];var _0x2e3ebe;if(_0xd1b089>=_0x36cc3f){_0xd1b089=_0x36cc3f;_0x2e3ebe=0xc8;}else{_0x2e3ebe=0xce;}_0x3d75e9[_0x701e('0x24')](_0x2e3ebe);return _0x3d75e9[_0x701e('0x29')](_0x701e('0x2a'),_0x53909f+'-'+_0xd1b089+'/'+_0x36cc3f)[_0x701e('0x25')](_0xc85d32);}return null;};}function patchUpdates(_0x4b5800){return function(_0x5bf25d){try{jsonpatch[_0x701e('0x2b')](_0x5bf25d,_0x4b5800,!![]);}catch(_0x161f81){return BPromise[_0x701e('0x2c')](_0x161f81);}return _0x5bf25d[_0x701e('0x2d')]();};}function saveUpdates(_0x671efd,_0x3179c9){return function(_0x5240b4){if(_0x5240b4){return _0x5240b4[_0x701e('0x2e')](_0x671efd)['then'](function(_0x22796e){return _0x22796e;});}return null;};}function removeEntity(_0x2c6d82,_0x20ed07){return function(_0x1537dc){if(_0x1537dc){return _0x1537dc[_0x701e('0x2f')]()[_0x701e('0x1b')](function(){var _0x41f8f1=_0x1537dc['get']({'plain':!![]});var _0x316229='OpenchannelAccounts';return db[_0x701e('0x30')]['destroy']({'where':{'type':_0x316229,'resourceId':_0x41f8f1['id']}})[_0x701e('0x1b')](function(){return _0x1537dc;});})[_0x701e('0x1b')](function(){_0x2c6d82[_0x701e('0x24')](0xcc)[_0x701e('0x31')]();});}};}function handleEntityNotFound(_0x5ae53c,_0x24e997){return function(_0x3015f3){if(!_0x3015f3){_0x5ae53c['sendStatus'](0x194);}return _0x3015f3;};}function handleError(_0x4485a1,_0x10fdb4){_0x10fdb4=_0x10fdb4||0x1f4;return function(_0x19c9fa){logger[_0x701e('0x20')](_0x19c9fa[_0x701e('0x32')]);if(_0x19c9fa[_0x701e('0x33')]){delete _0x19c9fa[_0x701e('0x33')];}_0x4485a1[_0x701e('0x24')](_0x10fdb4)[_0x701e('0x34')](_0x19c9fa);};}exports[_0x701e('0x35')]=function(_0x503b67,_0x3a5895){var _0x5c6aaa={'include':[{'model':db[_0x701e('0x36')],'as':_0x701e('0x37')}]},_0x55dcb8={},_0x434d2c={'count':0x0,'rows':[]};var _0x4bdf82=_[_0x701e('0x38')](db[_0x701e('0x39')]['rawAttributes'],function(_0xed5c4e){return{'name':_0xed5c4e[_0x701e('0x3a')],'type':_0xed5c4e[_0x701e('0x3b')][_0x701e('0x3c')]};});_0x55dcb8['model']=_['map'](_0x4bdf82,'name');_0x55dcb8[_0x701e('0x3d')]=_[_0x701e('0x3e')](_0x503b67[_0x701e('0x3d')]);_0x55dcb8[_0x701e('0x3f')]=_['intersection'](_0x55dcb8[_0x701e('0x40')],_0x55dcb8['query']);_0x5c6aaa[_0x701e('0x41')]=_['intersection'](_0x55dcb8[_0x701e('0x40')],qs[_0x701e('0x42')](_0x503b67[_0x701e('0x3d')]['fields']));_0x5c6aaa[_0x701e('0x41')]=_0x5c6aaa[_0x701e('0x41')][_0x701e('0x43')]?_0x5c6aaa[_0x701e('0x41')]:_0x55dcb8['model'];if(!_0x503b67[_0x701e('0x3d')][_0x701e('0x44')]('nolimit')){_0x5c6aaa[_0x701e('0x45')]=qs[_0x701e('0x45')](_0x503b67[_0x701e('0x3d')]['limit']);_0x5c6aaa[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x503b67[_0x701e('0x3d')][_0x701e('0x26')]);}_0x5c6aaa[_0x701e('0x46')]=qs[_0x701e('0x47')](_0x503b67[_0x701e('0x3d')][_0x701e('0x47')]);_0x5c6aaa[_0x701e('0x48')]=qs[_0x701e('0x3f')](_[_0x701e('0x49')](_0x503b67['query'],_0x55dcb8['filters']),_0x4bdf82);if(_0x503b67[_0x701e('0x3d')][_0x701e('0x4a')]){_0x5c6aaa[_0x701e('0x48')]=_[_0x701e('0x4b')](_0x5c6aaa['where'],{'$or':_[_0x701e('0x38')](_0x4bdf82,function(_0x2cdfa0){if(_0x2cdfa0[_0x701e('0x3b')]!==_0x701e('0x4c')){var _0x4a4d7e={};_0x4a4d7e[_0x2cdfa0['name']]={'$like':'%'+_0x503b67[_0x701e('0x3d')][_0x701e('0x4a')]+'%'};return _0x4a4d7e;}})});}_0x5c6aaa=_[_0x701e('0x4b')]({},_0x5c6aaa,_0x503b67['options']);var _0x532b19={'where':_0x5c6aaa[_0x701e('0x48')]};return db[_0x701e('0x39')][_0x701e('0x28')](_0x532b19)[_0x701e('0x1b')](function(_0x6f3642){_0x434d2c[_0x701e('0x28')]=_0x6f3642;if(_0x503b67[_0x701e('0x3d')][_0x701e('0x4d')]){_0x5c6aaa[_0x701e('0x4e')]=[{'all':!![]}];}return db[_0x701e('0x39')][_0x701e('0x4f')](_0x5c6aaa);})[_0x701e('0x1b')](function(_0x2a95f1){_0x434d2c['rows']=_0x2a95f1;return _0x434d2c;})[_0x701e('0x1b')](respondWithFilteredResult(_0x3a5895,_0x5c6aaa))[_0x701e('0x50')](handleError(_0x3a5895,null));};exports[_0x701e('0x51')]=function(_0x21fddd,_0x2e4164){var _0x50824d={'raw':![],'where':{'id':_0x21fddd[_0x701e('0x52')]['id']},'include':[{'model':db[_0x701e('0x36')],'as':_0x701e('0x37')}]},_0x47873b={};_0x47873b['model']=_[_0x701e('0x3e')](db[_0x701e('0x39')][_0x701e('0x53')]);_0x47873b['query']=_[_0x701e('0x3e')](_0x21fddd['query']);_0x47873b[_0x701e('0x3f')]=_[_0x701e('0x54')](_0x47873b['model'],_0x47873b[_0x701e('0x3d')]);_0x50824d['attributes']=_[_0x701e('0x54')](_0x47873b[_0x701e('0x40')],qs[_0x701e('0x42')](_0x21fddd[_0x701e('0x3d')][_0x701e('0x42')]));_0x50824d['attributes']=_0x50824d[_0x701e('0x41')][_0x701e('0x43')]?_0x50824d[_0x701e('0x41')]:_0x47873b[_0x701e('0x40')];if(_0x21fddd['query'][_0x701e('0x4d')]){_0x50824d[_0x701e('0x4e')]=[{'all':!![]}];}_0x50824d=_[_0x701e('0x4b')]({},_0x50824d,_0x21fddd[_0x701e('0x55')]);return db['OpenchannelAccount'][_0x701e('0x56')](_0x50824d)['then'](handleEntityNotFound(_0x2e4164,null))[_0x701e('0x1b')](respondWithResult(_0x2e4164,null))['catch'](handleError(_0x2e4164,null));};exports['create']=function(_0x336bca,_0x3e65b8){return db[_0x701e('0x39')][_0x701e('0x57')](_0x336bca[_0x701e('0x58')],{})[_0x701e('0x1b')](function(_0x2d244c){var _0x560edb=_0x336bca['user']['get']({'plain':!![]});if(!_0x560edb)throw new Error(_0x701e('0x59'));if(_0x560edb[_0x701e('0x5a')]===_0x701e('0x5b')){var _0x360230=_0x2d244c[_0x701e('0x5c')]({'plain':!![]});var _0x4ed329=_0x701e('0x5d');return db[_0x701e('0x5e')][_0x701e('0x56')]({'where':{'name':_0x4ed329,'userProfileId':_0x560edb[_0x701e('0x5f')]},'raw':!![]})[_0x701e('0x1b')](function(_0x37e75b){if(_0x37e75b&&_0x37e75b[_0x701e('0x60')]===0x0){return db['UserProfileResource'][_0x701e('0x57')]({'name':_0x360230[_0x701e('0x33')],'resourceId':_0x360230['id'],'type':_0x37e75b[_0x701e('0x33')],'sectionId':_0x37e75b['id']},{})[_0x701e('0x1b')](function(){return _0x2d244c;});}else{return _0x2d244c;}})[_0x701e('0x50')](function(_0x4ea149){logger[_0x701e('0x20')](_0x701e('0x61'),_0x4ea149);throw _0x4ea149;});}return _0x2d244c;})[_0x701e('0x1b')](respondWithResult(_0x3e65b8,0xc9))[_0x701e('0x50')](handleError(_0x3e65b8,null));};exports[_0x701e('0x2e')]=function(_0x123fbb,_0xc04917){if(_0x123fbb['body']['id']){delete _0x123fbb[_0x701e('0x58')]['id'];}return db[_0x701e('0x39')]['find']({'where':{'id':_0x123fbb[_0x701e('0x52')]['id']},'include':[{'model':db[_0x701e('0x36')],'as':'mandatoryDispositionPause'}]})[_0x701e('0x1b')](handleEntityNotFound(_0xc04917,null))[_0x701e('0x1b')](saveUpdates(_0x123fbb['body'],null))[_0x701e('0x1b')](respondWithResult(_0xc04917,null))[_0x701e('0x50')](handleError(_0xc04917,null));};exports[_0x701e('0x2f')]=function(_0x387c60,_0x367fd0){return db[_0x701e('0x39')][_0x701e('0x56')]({'where':{'id':_0x387c60[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x367fd0,null))[_0x701e('0x1b')](removeEntity(_0x367fd0,null))[_0x701e('0x50')](handleError(_0x367fd0,null));};exports['describe']=function(_0x2bba63,_0x2dff9f){return db['OpenchannelAccount'][_0x701e('0x62')]()[_0x701e('0x1b')](respondWithResult(_0x2dff9f,null))['catch'](handleError(_0x2dff9f,null));};exports[_0x701e('0x63')]=function(_0x1d3f3c,_0x32e0d9,_0x1a5d64){if(_0x1d3f3c[_0x701e('0x58')]['id']){delete _0x1d3f3c[_0x701e('0x58')]['id'];}return db[_0x701e('0x39')][_0x701e('0x56')]({'where':{'id':_0x1d3f3c['params']['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x32e0d9,null))[_0x701e('0x1b')](function(_0x393c39){if(_0x393c39){_0x1d3f3c[_0x701e('0x58')]['OpenchannelAccountId']=_0x393c39['id'];return db[_0x701e('0x64')][_0x701e('0x57')](_0x1d3f3c['body']);}})[_0x701e('0x1b')](respondWithResult(_0x32e0d9,null))['catch'](handleError(_0x32e0d9,null));};exports[_0x701e('0x65')]=function(_0x80c8c5,_0x132788,_0x399947){var _0x5c81fa={'raw':![],'where':{}};var _0x56673b={};var _0x1d1448={'count':0x0,'rows':[]};return db[_0x701e('0x39')][_0x701e('0x66')]({'where':{'id':_0x80c8c5[_0x701e('0x52')]['id']}})['then'](handleEntityNotFound(_0x132788,null))[_0x701e('0x1b')](function(_0x1fda92){if(_0x1fda92){_0x56673b['model']=_[_0x701e('0x3e')](db[_0x701e('0x64')]['rawAttributes']);_0x56673b['query']=_[_0x701e('0x3e')](_0x80c8c5[_0x701e('0x3d')]);_0x56673b[_0x701e('0x3f')]=_[_0x701e('0x54')](_0x56673b[_0x701e('0x40')],_0x56673b[_0x701e('0x3d')]);_0x5c81fa[_0x701e('0x41')]=_['intersection'](_0x56673b[_0x701e('0x40')],qs[_0x701e('0x42')](_0x80c8c5[_0x701e('0x3d')][_0x701e('0x42')]));_0x5c81fa[_0x701e('0x41')]=_0x5c81fa['attributes'][_0x701e('0x43')]?_0x5c81fa[_0x701e('0x41')]:_0x56673b['model'];if(!_0x80c8c5['query'][_0x701e('0x44')](_0x701e('0x67'))){_0x5c81fa['limit']=qs[_0x701e('0x45')](_0x80c8c5[_0x701e('0x3d')][_0x701e('0x45')]);_0x5c81fa[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x80c8c5[_0x701e('0x3d')][_0x701e('0x26')]);}_0x5c81fa[_0x701e('0x46')]=qs[_0x701e('0x47')](_0x80c8c5[_0x701e('0x3d')][_0x701e('0x47')]);_0x5c81fa[_0x701e('0x48')]=qs[_0x701e('0x3f')](_[_0x701e('0x49')](_0x80c8c5[_0x701e('0x3d')],_0x56673b['filters']));_0x5c81fa[_0x701e('0x48')][_0x701e('0x68')]=_0x1fda92['id'];if(_0x80c8c5[_0x701e('0x3d')]['filter']){_0x5c81fa['where']=_[_0x701e('0x4b')](_0x5c81fa[_0x701e('0x48')],{'$or':_[_0x701e('0x38')](_0x5c81fa[_0x701e('0x41')],function(_0x128240){var _0x4dfc6e={};_0x4dfc6e[_0x128240]={'$like':'%'+_0x80c8c5[_0x701e('0x3d')][_0x701e('0x4a')]+'%'};return _0x4dfc6e;})});}_0x5c81fa=_[_0x701e('0x4b')]({},_0x5c81fa,_0x80c8c5[_0x701e('0x55')]);return db[_0x701e('0x64')][_0x701e('0x28')]({'where':_0x5c81fa[_0x701e('0x48')]})[_0x701e('0x1b')](function(_0x3832ba){_0x1d1448[_0x701e('0x28')]=_0x3832ba;if(_0x80c8c5[_0x701e('0x3d')]['includeAll']){_0x5c81fa['include']=[{'all':!![]}];}return db['Disposition'][_0x701e('0x4f')](_0x5c81fa);})['then'](function(_0x13d1f4){_0x1d1448[_0x701e('0x69')]=_0x13d1f4;return _0x1d1448;});}})['then'](respondWithFilteredResult(_0x132788,_0x5c81fa))['catch'](handleError(_0x132788,null));};exports[_0x701e('0x6a')]=function(_0x2d6762,_0x9042ca,_0x5a08b4){return db['OpenchannelAccount'][_0x701e('0x56')]({'where':{'id':_0x2d6762[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x9042ca,null))[_0x701e('0x1b')](function(_0x5a2cb8){if(_0x5a2cb8){return _0x5a2cb8['removeDispositions'](_0x2d6762['query'][_0x701e('0x6b')]);}})[_0x701e('0x1b')](respondWithStatusCode(_0x9042ca,null))[_0x701e('0x50')](handleError(_0x9042ca,null));};exports[_0x701e('0x6c')]=function(_0x478ef4,_0x22540a,_0x537501){if(_0x478ef4['body']['id']){delete _0x478ef4[_0x701e('0x58')]['id'];}return db['OpenchannelAccount'][_0x701e('0x56')]({'where':{'id':_0x478ef4['params']['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x22540a,null))[_0x701e('0x1b')](function(_0x48c9a3){if(_0x48c9a3){_0x478ef4[_0x701e('0x58')][_0x701e('0x68')]=_0x48c9a3['id'];return db[_0x701e('0x6d')]['create'](_0x478ef4['body']);}})[_0x701e('0x1b')](respondWithResult(_0x22540a,null))[_0x701e('0x50')](handleError(_0x22540a,null));};exports['getAnswers']=function(_0x5d452b,_0x4e8e9c,_0x101642){var _0x37aa74={'raw':![],'where':{}};var _0x37d624={};var _0x3fc0a8={'count':0x0,'rows':[]};return db[_0x701e('0x39')][_0x701e('0x66')]({'where':{'id':_0x5d452b[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x4e8e9c,null))['then'](function(_0x2063af){if(_0x2063af){_0x37d624[_0x701e('0x40')]=_[_0x701e('0x3e')](db[_0x701e('0x6d')][_0x701e('0x53')]);_0x37d624[_0x701e('0x3d')]=_[_0x701e('0x3e')](_0x5d452b[_0x701e('0x3d')]);_0x37d624[_0x701e('0x3f')]=_[_0x701e('0x54')](_0x37d624['model'],_0x37d624[_0x701e('0x3d')]);_0x37aa74[_0x701e('0x41')]=_[_0x701e('0x54')](_0x37d624[_0x701e('0x40')],qs[_0x701e('0x42')](_0x5d452b['query'][_0x701e('0x42')]));_0x37aa74[_0x701e('0x41')]=_0x37aa74[_0x701e('0x41')][_0x701e('0x43')]?_0x37aa74[_0x701e('0x41')]:_0x37d624[_0x701e('0x40')];if(!_0x5d452b['query'][_0x701e('0x44')](_0x701e('0x67'))){_0x37aa74[_0x701e('0x45')]=qs['limit'](_0x5d452b[_0x701e('0x3d')][_0x701e('0x45')]);_0x37aa74[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x5d452b[_0x701e('0x3d')][_0x701e('0x26')]);}_0x37aa74[_0x701e('0x46')]=qs['sort'](_0x5d452b[_0x701e('0x3d')][_0x701e('0x47')]);_0x37aa74['where']=qs[_0x701e('0x3f')](_['pick'](_0x5d452b[_0x701e('0x3d')],_0x37d624['filters']));_0x37aa74[_0x701e('0x48')][_0x701e('0x68')]=_0x2063af['id'];if(_0x5d452b[_0x701e('0x3d')][_0x701e('0x4a')]){_0x37aa74[_0x701e('0x48')]=_['merge'](_0x37aa74[_0x701e('0x48')],{'$or':_['map'](_0x37aa74[_0x701e('0x41')],function(_0x107c21){var _0x25449f={};_0x25449f[_0x107c21]={'$like':'%'+_0x5d452b[_0x701e('0x3d')][_0x701e('0x4a')]+'%'};return _0x25449f;})});}_0x37aa74=_['merge']({},_0x37aa74,_0x5d452b[_0x701e('0x55')]);return db[_0x701e('0x6d')][_0x701e('0x28')]({'where':_0x37aa74[_0x701e('0x48')]})[_0x701e('0x1b')](function(_0x26e4d1){_0x3fc0a8['count']=_0x26e4d1;if(_0x5d452b[_0x701e('0x3d')][_0x701e('0x4d')]){_0x37aa74[_0x701e('0x4e')]=[{'all':!![]}];}return db[_0x701e('0x6d')][_0x701e('0x4f')](_0x37aa74);})[_0x701e('0x1b')](function(_0x1b27cf){_0x3fc0a8[_0x701e('0x69')]=_0x1b27cf;return _0x3fc0a8;});}})[_0x701e('0x1b')](respondWithFilteredResult(_0x4e8e9c,_0x37aa74))[_0x701e('0x50')](handleError(_0x4e8e9c,null));};exports['removeAnswers']=function(_0x18dfc5,_0x17bf51,_0xb2431e){return db['OpenchannelAccount'][_0x701e('0x56')]({'where':{'id':_0x18dfc5['params']['id']}})['then'](handleEntityNotFound(_0x17bf51,null))['then'](function(_0x13b87b){if(_0x13b87b){return _0x13b87b[_0x701e('0x6e')](_0x18dfc5[_0x701e('0x3d')]['ids']);}})[_0x701e('0x1b')](respondWithStatusCode(_0x17bf51,null))[_0x701e('0x50')](handleError(_0x17bf51,null));};exports[_0x701e('0x6f')]=function(_0x499312,_0x4f4a18,_0x89f7fd){var _0x10abaf={'body':_0x499312[_0x701e('0x58')],'channel':_0x701e('0x70')};var _0x5562c8=[];var _0x2a52c3=[];var _0x30f492={};var _0x4b6f1a=![];return db[_0x701e('0x71')]['describe']()[_0x701e('0x1b')](function(_0x25d2db){if(!_0x25d2db){throw new db[(_0x701e('0x72'))]['ValidationError'](_0x701e('0x73'));}_0x5562c8=_[_0x701e('0x74')](_[_0x701e('0x3e')](_0x25d2db),[_0x701e('0x75'),_0x701e('0x76')]);_0x2a52c3=_[_0x701e('0x74')](_[_0x701e('0x3e')](_0x25d2db),['createdAt',_0x701e('0x76'),_0x701e('0x77'),_0x701e('0x78')]);if(_0x499312[_0x701e('0x58')]['id']){delete _0x499312['body']['id'];}if(_[_0x701e('0x79')](_0x499312[_0x701e('0x58')][_0x701e('0x7a')])){throw new db[(_0x701e('0x72'))][(_0x701e('0x7b'))]('from\x20is\x20mandatory');}if(_[_0x701e('0x79')](_0x499312[_0x701e('0x58')][_0x701e('0x58')])||_0x499312[_0x701e('0x58')]['body']===''){throw new db['Sequelize'][(_0x701e('0x7b'))](_0x701e('0x7c'));}if(_['isNil'](_0x499312[_0x701e('0x58')][_0x701e('0x7d')])){throw new db['Sequelize'][(_0x701e('0x7b'))](_0x701e('0x7e')+_0x2a52c3);}if(!_[_0x701e('0x7f')](_0x2a52c3,_0x499312['body']['mapKey'])){throw new db[(_0x701e('0x72'))][(_0x701e('0x7b'))](_0x701e('0x80')+_0x2a52c3);}_0x30f492[_0x499312[_0x701e('0x58')][_0x701e('0x7d')]]=_0x499312['body']['from'];})[_0x701e('0x1b')](function(){return db[_0x701e('0x39')]['find']({'where':{'id':_0x499312['params']['id']},'include':[{'model':db[_0x701e('0x81')],'as':_0x701e('0x82'),'include':[{'model':db[_0x701e('0x71')],'as':_0x701e('0x83'),'where':_0x30f492,'limit':0x1,'order':[[_0x701e('0x76'),'DESC']]}]},{'model':db[_0x701e('0x84')],'as':'Applications'}]});})[_0x701e('0x1b')](handleEntityNotFound(_0x4f4a18,null))[_0x701e('0x1b')](function(_0x3c2352){if(_0x3c2352&&_0x3c2352['List']){_0x10abaf['account']=_0x3c2352;_0x10abaf['applications']=_0x3c2352[_0x701e('0x85')];_0x10abaf[_0x701e('0x86')]=_0x3c2352[_0x701e('0x82')];_0x10abaf[_0x701e('0x87')]=_[_0x701e('0x88')](_0x10abaf[_0x701e('0x87')],[_0x701e('0x89')],[_0x701e('0x8a')]);if(_0x10abaf[_0x701e('0x8b')][_0x701e('0x85')]){delete _0x10abaf[_0x701e('0x8b')][_0x701e('0x85')];}if(_0x10abaf['account']['List']&&_0x10abaf[_0x701e('0x8b')][_0x701e('0x82')][_0x701e('0x83')]['length']){return _0x10abaf[_0x701e('0x8b')][_0x701e('0x82')][_0x701e('0x83')][0x0];}var _0xac3aa=_[_0x701e('0x8c')](_0x499312[_0x701e('0x58')],{'firstName':_0x499312[_0x701e('0x58')][_0x701e('0x7a')],'ListId':_0x3c2352[_0x701e('0x78')]});_0xac3aa[_0x499312[_0x701e('0x58')][_0x701e('0x7d')]]=_0x499312[_0x701e('0x58')][_0x701e('0x7a')];return db[_0x701e('0x71')][_0x701e('0x57')](_0xac3aa,{'fields':_0x5562c8,'raw':!![]});}})[_0x701e('0x1b')](handleEntityNotFound(_0x4f4a18,null))[_0x701e('0x1b')](function(_0xef4ade){_0x10abaf[_0x701e('0x8d')]=_0xef4ade;if(_0xef4ade){var _0x21e6f5={'ContactId':_0xef4ade['id'],'OpenchannelAccountId':_0x499312[_0x701e('0x52')]['id'],'from':(_0xef4ade[_0x701e('0x8e')]||'')+'\x20'+(_0xef4ade['lastName']||'')};var _0x58a570={'OpenchannelAccountId':_0x499312['params']['id'],'closed':![]};if(_0x499312[_0x701e('0x58')][_0x701e('0x8f')]){_0x58a570[_0x701e('0x8f')]=_0x499312['body']['threadId'];return db[_0x701e('0x90')][_0x701e('0x56')]({'where':_0x58a570})[_0x701e('0x1b')](function(_0x4630a7){if(_0x4630a7){return[_0x4630a7,![]];}_0x21e6f5[_0x701e('0x8f')]=_0x499312['body'][_0x701e('0x8f')];_0x21e6f5[_0x701e('0x91')]=_0x499312[_0x701e('0x58')][_0x701e('0x91')];return db[_0x701e('0x90')]['create'](_0x21e6f5)[_0x701e('0x1b')](function(_0x539df1){return[_0x539df1,!![]];});});}else{_0x58a570[_0x701e('0x8f')]=null;}_0x58a570[_0x701e('0x92')]=_0xef4ade['id'];return db['OpenchannelInteraction'][_0x701e('0x56')]({'where':_0x58a570})[_0x701e('0x1b')](function(_0x27dc60){if(_0x27dc60){return[_0x27dc60,![]];}return db[_0x701e('0x90')]['create'](_0x21e6f5)['then'](function(_0x5b34df){return[_0x5b34df,!![]];});});}})[_0x701e('0x93')](function(_0x5544ba,_0x587bf0){if(_0x5544ba){_0x4b6f1a=_0x587bf0;if(!_0x587bf0){var _0x1517b8={'from':(_0x10abaf[_0x701e('0x8d')][_0x701e('0x8e')]||'')+'\x20'+(_0x10abaf[_0x701e('0x8d')]['lastName']||'')};if(_0x499312['body'][_0x701e('0x8f')]&&_0x499312[_0x701e('0x58')][_0x701e('0x94')]&&_0x499312['body'][_0x701e('0x8f')]!=_0x499312['body'][_0x701e('0x94')]){_0x1517b8[_0x701e('0x8f')]=_0x499312[_0x701e('0x58')][_0x701e('0x94')];}return _0x5544ba[_0x701e('0x2e')](_0x1517b8);}else{return _0x5544ba;}}})['then'](function(_0x17c665){_0x10abaf[_0x701e('0x95')]=_0x17c665[_0x701e('0x5c')]({'plain':!![]});_0x10abaf['interaction'][_0x701e('0x96')]=_0x4b6f1a;if(_0x10abaf[_0x701e('0x95')][_0x701e('0x96')]){if(_0x10abaf[_0x701e('0x8b')][_0x701e('0x97')]){_0x10abaf[_0x701e('0x87')][_0x701e('0x98')]({'id':0x0,'priority':_0x10abaf[_0x701e('0x87')][_0x701e('0x43')]+0x1,'app':_0x701e('0x99'),'appdata':_0x701e('0x9a'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0x701e('0x57')]({'body':_0x499312[_0x701e('0x58')]['body'],'OpenchannelAccountId':_0x499312[_0x701e('0x52')]['id'],'OpenchannelInteractionId':_0x17c665['id'],'direction':'in','ContactId':_0x10abaf[_0x701e('0x8d')]['id'],'AttachmentId':_0x499312['body'][_0x701e('0x9b')]});})['then'](function(_0x2787b9){_0x10abaf['message']=_0x2787b9;if(_0x10abaf[_0x701e('0x95')][_0x701e('0x9c')]){return db[_0x701e('0x9d')][_0x701e('0x56')]({'attributes':['id',_0x701e('0x33')],'where':{'id':_0x10abaf[_0x701e('0x95')][_0x701e('0x9c')]}})[_0x701e('0x1b')](function(_0x5bd456){if(_0x5bd456){_0x10abaf['applications'][_0x701e('0x9e')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5bd456[_0x701e('0x33')]+','+(_0x10abaf[_0x701e('0x8b')]['waitForTheAssignedAgent']||0xa),'interval':_0x701e('0x9f')});_0x10abaf['forcedOwnership']=![];}return respondWithRpcPromise('Start',_0x701e('0xa0'),_0x10abaf);});}return respondWithRpcPromise(_0x701e('0xa1'),_0x701e('0xa0'),_0x10abaf);})[_0x701e('0x1b')](function(_0x4ef27e){respondWithRpcPromise(_0x701e('0xa2'),'EventManager',{'event':_0x701e('0x6f'),'message':_0x4ef27e},client9002);return _0x4ef27e;})['then'](respondWithResult(_0x4f4a18,null))[_0x701e('0x50')](handleError(_0x4f4a18,null));};exports[_0x701e('0xa3')]=function(_0x368925,_0x1d03c0){var _0x8339=_0x368925[_0x701e('0x52')]['id'];var _0x4bdc76=_0x368925[_0x701e('0x58')];var _0x22bc3f=0xc8;var _0x4c8cfa=null;return db[_0x701e('0xa4')][_0x701e('0xa5')]({'isolationLevel':db[_0x701e('0xa4')][_0x701e('0xa6')][_0x701e('0xa7')][_0x701e('0xa8')]},function(_0x4948da){return db['OpenchannelAccount'][_0x701e('0x66')]({'where':{'id':_0x8339},'transaction':_0x4948da})['then'](function(_0x359bd2){if(_0x359bd2){return db[_0x701e('0x84')][_0x701e('0x2f')]({'where':{'OpenchannelAccountId':_0x8339},'transaction':_0x4948da})[_0x701e('0x1b')](function(){var _0x781185=_[_0x701e('0x38')](_0x4bdc76,function(_0x4b8b73){_0x4b8b73[_0x701e('0x68')]=_0x8339;return _0x4b8b73;});return db[_0x701e('0x84')]['bulkCreate'](_0x781185,{'transaction':_0x4948da});});}else{_0x22bc3f=0x194;_0x4c8cfa=[];}});})[_0x701e('0x1b')](function(){if(_0x22bc3f!==0x194){return db[_0x701e('0x84')][_0x701e('0xa9')]({'where':{'OpenchannelAccountId':_0x8339},'order':_0x701e('0x89')})[_0x701e('0x1b')](function(_0x2c9f89){_0x4c8cfa=_0x2c9f89;});}})[_0x701e('0x50')](function(_0x40a9ec){_0x22bc3f=0x1f4;logger['error'](_0x40a9ec['stack']);if(_0x40a9ec['name']){delete _0x40a9ec['name'];}_0x4c8cfa=_0x40a9ec;})['finally'](function(){if(_0x4c8cfa===null){_0x1d03c0[_0x701e('0xaa')](_0x22bc3f);}else{if(_0x22bc3f===0x1f4){_0x1d03c0[_0x701e('0x24')](_0x22bc3f)[_0x701e('0x34')](_0x4c8cfa);}else{_0x1d03c0[_0x701e('0x24')](_0x22bc3f)['json'](_0x4c8cfa);}}});};exports['getApplications']=function(_0x11579e,_0x28e450,_0x19b1b3){var _0x3782ed={};var _0x4e30a7={};var _0x2d8100;var _0x4d5396;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x11579e[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x28e450,null))[_0x701e('0x1b')](function(_0x269de8){if(_0x269de8){_0x2d8100=_0x269de8;_0x4e30a7['model']=_[_0x701e('0x3e')](db[_0x701e('0x84')][_0x701e('0x53')]);_0x4e30a7[_0x701e('0x3d')]=_[_0x701e('0x3e')](_0x11579e[_0x701e('0x3d')]);_0x4e30a7[_0x701e('0x3f')]=_['intersection'](_0x4e30a7[_0x701e('0x40')],_0x4e30a7[_0x701e('0x3d')]);_0x3782ed[_0x701e('0x41')]=_['intersection'](_0x4e30a7['model'],qs[_0x701e('0x42')](_0x11579e[_0x701e('0x3d')][_0x701e('0x42')]));_0x3782ed[_0x701e('0x41')]=_0x3782ed[_0x701e('0x41')][_0x701e('0x43')]?_0x3782ed['attributes']:_0x4e30a7[_0x701e('0x40')];_0x3782ed[_0x701e('0x46')]=qs[_0x701e('0x47')](_0x11579e[_0x701e('0x3d')][_0x701e('0x47')]);_0x3782ed[_0x701e('0x48')]=qs[_0x701e('0x3f')](_[_0x701e('0x49')](_0x11579e[_0x701e('0x3d')],_0x4e30a7['filters']));if(_0x11579e['query'][_0x701e('0x4a')]){_0x3782ed[_0x701e('0x48')]=_[_0x701e('0x4b')](_0x3782ed[_0x701e('0x48')],{'$or':_['map'](_0x3782ed[_0x701e('0x41')],function(_0x1a1201){var _0x572770={};_0x572770[_0x1a1201]={'$like':'%'+_0x11579e['query']['filter']+'%'};return _0x572770;})});}_0x3782ed=_[_0x701e('0x4b')]({},_0x3782ed,_0x11579e[_0x701e('0x55')]);return _0x2d8100[_0x701e('0xab')](_0x3782ed);}})[_0x701e('0x1b')](function(_0xb77876){if(_0xb77876){_0x4d5396=_0xb77876['length'];if(!_0x11579e[_0x701e('0x3d')][_0x701e('0x44')](_0x701e('0x67'))){_0x3782ed[_0x701e('0x45')]=qs[_0x701e('0x45')](_0x11579e[_0x701e('0x3d')][_0x701e('0x45')]);_0x3782ed[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x11579e[_0x701e('0x3d')][_0x701e('0x26')]);}return _0x2d8100[_0x701e('0xab')](_0x3782ed);}})[_0x701e('0x1b')](function(_0x3220b8){if(_0x3220b8){return _0x3220b8?{'count':_0x4d5396,'rows':_0x3220b8}:null;}})['then'](respondWithResult(_0x28e450,null))['catch'](handleError(_0x28e450,null));};exports[_0x701e('0xac')]=function(_0x3f48ea,_0x30f48c,_0x12a33b){var _0x3ade42={'raw':![],'where':{}};var _0x39ce4f={};var _0x5cdf1c={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x701e('0x66')]({'where':{'id':_0x3f48ea[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x30f48c,null))['then'](function(_0x53f571){if(_0x53f571){_0x39ce4f[_0x701e('0x40')]=_[_0x701e('0x3e')](db[_0x701e('0x90')][_0x701e('0x53')]);_0x39ce4f[_0x701e('0x3d')]=_[_0x701e('0x3e')](_0x3f48ea[_0x701e('0x3d')]);_0x39ce4f['filters']=_[_0x701e('0x54')](_0x39ce4f[_0x701e('0x40')],_0x39ce4f[_0x701e('0x3d')]);_0x3ade42[_0x701e('0x41')]=_[_0x701e('0x54')](_0x39ce4f[_0x701e('0x40')],qs['fields'](_0x3f48ea[_0x701e('0x3d')][_0x701e('0x42')]));_0x3ade42[_0x701e('0x41')]=_0x3ade42['attributes'][_0x701e('0x43')]?_0x3ade42[_0x701e('0x41')]:_0x39ce4f[_0x701e('0x40')];if(!_0x3f48ea[_0x701e('0x3d')]['hasOwnProperty'](_0x701e('0x67'))){_0x3ade42[_0x701e('0x45')]=qs[_0x701e('0x45')](_0x3f48ea[_0x701e('0x3d')][_0x701e('0x45')]);_0x3ade42[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x3f48ea['query'][_0x701e('0x26')]);}_0x3ade42[_0x701e('0x46')]=qs['sort'](_0x3f48ea['query']['sort']);_0x3ade42[_0x701e('0x48')]=qs[_0x701e('0x3f')](_[_0x701e('0x49')](_0x3f48ea[_0x701e('0x3d')],_0x39ce4f[_0x701e('0x3f')]));_0x3ade42[_0x701e('0x48')][_0x701e('0x68')]=_0x53f571['id'];if(_0x3f48ea[_0x701e('0x3d')][_0x701e('0x4a')]){_0x3ade42[_0x701e('0x48')]=_['merge'](_0x3ade42[_0x701e('0x48')],{'$or':_[_0x701e('0x38')](_0x3ade42['attributes'],function(_0x4c20b7){var _0x51c48e={};_0x51c48e[_0x4c20b7]={'$like':'%'+_0x3f48ea[_0x701e('0x3d')][_0x701e('0x4a')]+'%'};return _0x51c48e;})});}_0x3ade42=_[_0x701e('0x4b')]({},_0x3ade42,_0x3f48ea[_0x701e('0x55')]);return db[_0x701e('0x90')]['count']({'where':_0x3ade42['where']})[_0x701e('0x1b')](function(_0x4086c9){_0x5cdf1c[_0x701e('0x28')]=_0x4086c9;if(_0x3f48ea[_0x701e('0x3d')]['includeAll']){_0x3ade42['include']=[{'model':db[_0x701e('0x71')],'as':_0x701e('0xad'),'required':![]},{'model':db[_0x701e('0x9d')],'as':_0x701e('0xae'),'attributes':[_0x701e('0x33'),'fullname','internal'],'required':![]},{'model':db['Tag'],'as':_0x701e('0xaf'),'attributes':['id',_0x701e('0x33'),_0x701e('0xb0')],'where':_0x3f48ea[_0x701e('0x3d')][_0x701e('0xb1')]?{'id':_0x3f48ea['query']['tag']}:undefined,'required':_0x3f48ea['query'][_0x701e('0xb1')]?!![]:![]}];}return db['OpenchannelInteraction'][_0x701e('0x4f')](_0x3ade42);})[_0x701e('0x1b')](function(_0x4ed1f9){_0x5cdf1c[_0x701e('0x69')]=_0x4ed1f9;return _0x5cdf1c;});}})[_0x701e('0x1b')](respondWithFilteredResult(_0x30f48c,_0x3ade42))[_0x701e('0x50')](handleError(_0x30f48c,null));};exports['addAgents']=function(_0x2f60b1,_0x45b0b9,_0x59d2e5){return db[_0x701e('0x39')]['find']({'where':{'id':_0x2f60b1[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x45b0b9,null))[_0x701e('0x1b')](function(_0x52742f){if(_0x52742f){return _0x52742f['addAgents'](_0x2f60b1['body'][_0x701e('0x6b')],_[_0x701e('0xb2')](_0x2f60b1[_0x701e('0x58')],['ids','id'])||{})[_0x701e('0x93')](function(_0x580954){for(var _0x2e3705=0x0;_0x2e3705<_0x2f60b1[_0x701e('0x58')][_0x701e('0x6b')][_0x701e('0x43')];_0x2e3705+=0x1){socket[_0x701e('0xb3')](_0x701e('0xb4'),{'UserId':Number(_0x2f60b1[_0x701e('0x58')][_0x701e('0x6b')][_0x2e3705]),'OpenchannelAccountId':Number(_0x2f60b1[_0x701e('0x52')]['id'])});}return _0x580954;});}})['then'](respondWithResult(_0x45b0b9,null))[_0x701e('0x50')](handleError(_0x45b0b9,null));};exports[_0x701e('0xb5')]=function(_0x364805,_0x36b73e,_0x4284ae){return db[_0x701e('0x39')]['find']({'where':{'id':_0x364805[_0x701e('0x52')]['id']}})['then'](handleEntityNotFound(_0x36b73e,null))[_0x701e('0x1b')](function(_0x1d92d1){if(_0x1d92d1){return _0x1d92d1[_0x701e('0xb5')](_0x364805[_0x701e('0x3d')][_0x701e('0x6b')])['then'](function(){if(_[_0x701e('0xb6')](_0x364805[_0x701e('0x3d')]['ids'])){for(var _0x1e2e3d=0x0;_0x1e2e3d<_0x364805['query'][_0x701e('0x6b')][_0x701e('0x43')];_0x1e2e3d+=0x1){socket[_0x701e('0xb3')]('userOpenchannelAccount:remove',{'UserId':Number(_0x364805[_0x701e('0x3d')][_0x701e('0x6b')][_0x1e2e3d]),'OpenchannelAccountId':Number(_0x364805['params']['id'])});}}else{socket[_0x701e('0xb3')](_0x701e('0xb7'),{'UserId':Number(_0x364805[_0x701e('0x3d')][_0x701e('0x6b')]),'OpenchannelAccountId':Number(_0x364805[_0x701e('0x52')]['id'])});}});}})[_0x701e('0x1b')](respondWithStatusCode(_0x36b73e,null))[_0x701e('0x50')](handleError(_0x36b73e,null));};exports['getAgents']=function(_0x2264f8,_0xb32a8c,_0x12ebfd){var _0x3dae00={};var _0xedd491={};var _0x4edec1;var _0x5a5384;return db['OpenchannelAccount'][_0x701e('0x66')]({'where':{'id':_0x2264f8[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0xb32a8c,null))['then'](function(_0xe2d175){if(_0xe2d175){_0x4edec1=_0xe2d175;_0xedd491[_0x701e('0x40')]=_[_0x701e('0x3e')](db[_0x701e('0x9d')]['rawAttributes']);_0xedd491['query']=_[_0x701e('0x3e')](_0x2264f8['query']);_0xedd491['filters']=_[_0x701e('0x54')](_0xedd491[_0x701e('0x40')],_0xedd491['query']);_0x3dae00[_0x701e('0x41')]=_[_0x701e('0x54')](_0xedd491[_0x701e('0x40')],qs[_0x701e('0x42')](_0x2264f8['query'][_0x701e('0x42')]));_0x3dae00[_0x701e('0x41')]=_0x3dae00[_0x701e('0x41')]['length']?_0x3dae00[_0x701e('0x41')]:_0xedd491[_0x701e('0x40')];_0x3dae00[_0x701e('0x46')]=qs[_0x701e('0x47')](_0x2264f8[_0x701e('0x3d')][_0x701e('0x47')]);_0x3dae00['where']=qs['filters'](_[_0x701e('0x49')](_0x2264f8['query'],_0xedd491['filters']));if(_0x2264f8[_0x701e('0x3d')][_0x701e('0x4a')]){_0x3dae00[_0x701e('0x48')]=_[_0x701e('0x4b')](_0x3dae00[_0x701e('0x48')],{'$or':_[_0x701e('0x38')](_0x3dae00[_0x701e('0x41')],function(_0x36431e){var _0x60540f={};_0x60540f[_0x36431e]={'$like':'%'+_0x2264f8[_0x701e('0x3d')]['filter']+'%'};return _0x60540f;})});}_0x3dae00=_[_0x701e('0x4b')]({},_0x3dae00,_0x2264f8[_0x701e('0x55')]);return _0x4edec1['getAgents'](_0x3dae00);}})[_0x701e('0x1b')](function(_0x1dadec){if(_0x1dadec){_0x5a5384=_0x1dadec['length'];if(!_0x2264f8[_0x701e('0x3d')][_0x701e('0x44')](_0x701e('0x67'))){_0x3dae00[_0x701e('0x45')]=qs[_0x701e('0x45')](_0x2264f8[_0x701e('0x3d')][_0x701e('0x45')]);_0x3dae00[_0x701e('0x26')]=qs[_0x701e('0x26')](_0x2264f8[_0x701e('0x3d')][_0x701e('0x26')]);}return _0x4edec1[_0x701e('0xb8')](_0x3dae00);}})[_0x701e('0x1b')](function(_0x3e7d2a){if(_0x3e7d2a){return _0x3e7d2a?{'count':_0x5a5384,'rows':_0x3e7d2a}:null;}})[_0x701e('0x1b')](respondWithResult(_0xb32a8c,null))[_0x701e('0x50')](handleError(_0xb32a8c,null));};exports[_0x701e('0x34')]=function(_0x4cd895,_0x854e40,_0xb38be2){var _0x15da8d,_0x2d46f6,_0x2a0e14;if(_[_0x701e('0x79')](_0x4cd895[_0x701e('0x58')][_0x701e('0x58')])||_0x4cd895[_0x701e('0x58')][_0x701e('0x58')]===''){throw new db[(_0x701e('0x72'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x701e('0x79')](_0x4cd895[_0x701e('0x58')]['to'])){}_0x15da8d=_0x4cd895[_0x701e('0x58')]['to'];return db[_0x701e('0x39')]['findOne']({'where':{'id':_0x4cd895[_0x701e('0x52')]['id']}})[_0x701e('0x1b')](handleEntityNotFound(_0x854e40,null))[_0x701e('0x1b')](function(_0x856db){if(_0x856db){return db['OpenchannelAccount']['find']({'where':{'id':_0x856db['id']},'include':[{'model':db[_0x701e('0x81')],'as':'List','include':[{'model':db['CmContact'],'as':_0x701e('0x83'),'where':{[_0x856db[_0x701e('0x7d')]]:_0x15da8d},'limit':0x1,'order':[[_0x701e('0x76'),'DESC']]}]}]})[_0x701e('0x1b')](handleEntityNotFound(_0x854e40,null))[_0x701e('0x1b')](function(_0x3206fe){if(_0x3206fe&&_0x3206fe[_0x701e('0x82')]){_0x2d46f6=_0x3206fe[_0x701e('0x5c')]({'plain':!![]});if(_0x2d46f6[_0x701e('0x82')]&&_0x2d46f6[_0x701e('0x82')][_0x701e('0x83')][_0x701e('0x43')]){return _0x2d46f6[_0x701e('0x82')][_0x701e('0x83')][0x0];}return db['CmContact'][_0x701e('0x57')](_[_0x701e('0x8c')](_0x4cd895['body'],{'firstName':_0x15da8d,[_0x3206fe[_0x701e('0x7d')]]:_0x15da8d,'phone':_0x15da8d,'ListId':_0x2d46f6['ListId']}));}})[_0x701e('0x1b')](handleEntityNotFound(_0x854e40,null))[_0x701e('0x1b')](function(_0x2a0a21){if(_0x2a0a21){_0x2a0e14=_0x2a0a21;return db[_0x701e('0x90')][_0x701e('0x56')]({'where':{'ContactId':_0x2a0e14['id'],'closed':![],'OpenchannelAccountId':_0x2d46f6['id']}})[_0x701e('0x1b')](function(_0x320535){if(_0x320535){return[_0x320535,![]];}return db[_0x701e('0x90')]['create']({'UserId':_0x4cd895[_0x701e('0x5b')]['id'],'ContactId':_0x2a0e14['id'],'OpenchannelAccountId':_0x2d46f6['id'],'lastMsgDirection':_0x701e('0xb9'),'firstMsgDirection':_0x701e('0xb9'),'Messages':[_['merge'](_0x4cd895['body'],{'read':![],'body':_0x4cd895['body']['body'],'OpenchannelAccountId':_0x2d46f6['id'],'UserId':_0x4cd895['user']['id'],'ContactId':_0x2a0e14['id']})]},{'include':[{'model':db[_0x701e('0xba')],'as':_0x701e('0xbb')}]})[_0x701e('0x1b')](function(_0x1692ec){return[_0x1692ec,!![]];});});}})['spread'](function(_0xf3866f,_0xae8e87){if(_0xae8e87){return _0xf3866f;}return db[_0x701e('0xba')][_0x701e('0x57')](_[_0x701e('0x4b')](_0x4cd895[_0x701e('0x58')],{'read':![],'body':_0x4cd895[_0x701e('0x58')]['body'],'OpenchannelAccountId':_0x2d46f6['id'],'OpenchannelInteractionId':_0xf3866f['id'],'UserId':_0x4cd895[_0x701e('0x5b')]['id'],'ContactId':_0x2a0e14['id']}))[_0x701e('0x1b')](function(_0x5578ca){_0xf3866f[_0x701e('0xbc')][_0x701e('0xbb')]=[];_0xf3866f[_0x701e('0xbc')][_0x701e('0xbb')]['push'](_0x5578ca[_0x701e('0xbc')]);return _0xf3866f;});});}})[_0x701e('0x1b')](respondWithResult(_0x854e40,null))[_0x701e('0x50')](handleError(_0x854e40,null));};
\ No newline at end of file
index 938edc8..794c374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0x668b,0x140));var _0xb668=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0x668b[_0x179b53];return _0x38a146;};'use strict';var EventEmitter=require(_0xb668('0x0'));var OpenchannelAccount=require(_0xb668('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xb668('0x2')](0x0);var events={'afterCreate':_0xb668('0x3'),'afterUpdate':'update','afterDestroy':_0xb668('0x4')};function emitEvent(_0x5e2e83){return function(_0x2fab11,_0x4092a6,_0x2960f5){OpenchannelAccountEvents['emit'](_0x5e2e83+':'+_0x2fab11['id'],_0x2fab11);OpenchannelAccountEvents[_0xb668('0x5')](_0x5e2e83,_0x2fab11);_0x2960f5(null);};}for(var e in events){if(events[_0xb668('0x6')](e)){var event=events[e];OpenchannelAccount[_0xb668('0x7')](e,emitEvent(event));}}module[_0xb668('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x2dae=['remove','emit','hasOwnProperty','hook','exports','events','OpenchannelAccount','setMaxListeners','save','update'];(function(_0x7904e9,_0x2dadc6){var _0x657a19=function(_0x18c094){while(--_0x18c094){_0x7904e9['push'](_0x7904e9['shift']());}};_0x657a19(++_0x2dadc6);}(_0x2dae,0xc3));var _0xe2da=function(_0x1269c6,_0x1c8942){_0x1269c6=_0x1269c6-0x0;var _0x4868c7=_0x2dae[_0x1269c6];return _0x4868c7;};'use strict';var EventEmitter=require(_0xe2da('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xe2da('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xe2da('0x2')](0x0);var events={'afterCreate':_0xe2da('0x3'),'afterUpdate':_0xe2da('0x4'),'afterDestroy':_0xe2da('0x5')};function emitEvent(_0x481d97){return function(_0x25b9f2,_0x439b5d,_0x77e45e){OpenchannelAccountEvents[_0xe2da('0x6')](_0x481d97+':'+_0x25b9f2['id'],_0x25b9f2);OpenchannelAccountEvents['emit'](_0x481d97,_0x25b9f2);_0x77e45e(null);};}for(var e in events){if(events[_0xe2da('0x7')](e)){var event=events[e];OpenchannelAccount[_0xe2da('0x8')](e,emitEvent(event));}}module[_0xe2da('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
index e8043ca..4a83a29 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(_0x25e8f3,_0x17de7a){var _0x5da1c4=function(_0x14fce5){while(--_0x14fce5){_0x25e8f3['push'](_0x25e8f3['shift']());}};_0x5da1c4(++_0x17de7a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'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(_0x4966fb,_0x5cd5df){var _0x4e58b2=function(_0x5c8bc4){while(--_0x5c8bc4){_0x4966fb['push'](_0x4966fb['shift']());}};_0x4e58b2(++_0x5cd5df);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var 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 0ffafa8..7f0d4b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c5=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x16fb52,_0xd7d1bd){var _0x2bb121=function(_0x3d18ab){while(--_0x3d18ab){_0x16fb52['push'](_0x16fb52['shift']());}};_0x2bb121(++_0xd7d1bd);}(_0x51c5,0x8f));var _0x551c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x51c5[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x551c('0x0'));var util=require(_0x551c('0x1'));var moment=require(_0x551c('0x2'));var BPromise=require(_0x551c('0x3'));var rs=require(_0x551c('0x4'));var fs=require('fs');var Redis=require(_0x551c('0x5'));var db=require(_0x551c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x551c('0x7'))(_0x551c('0x8'));var config=require(_0x551c('0x9'));var jayson=require(_0x551c('0xa'));var client=jayson[_0x551c('0xb')][_0x551c('0xc')]({'port':0x232a});config[_0x551c('0xd')]=_[_0x551c('0xe')](config['redis'],{'host':_0x551c('0xf'),'port':0x18eb});var socket=require(_0x551c('0x10'))(new Redis(config[_0x551c('0xd')]));require('./openchannelAccount.socket')[_0x551c('0x11')](socket);function respondWithRpcPromise(_0x5c0257,_0x5682ef,_0x5ed459){return new BPromise(function(_0x1a92a3,_0x5cad27){return client[_0x551c('0x12')](_0x5c0257,_0x5ed459)[_0x551c('0x13')](function(_0xe61359){logger[_0x551c('0x14')](_0x551c('0x15'),_0x5682ef,_0x551c('0x16'));logger['debug'](_0x551c('0x17'),_0x5682ef,_0x551c('0x16'),JSON[_0x551c('0x18')](_0xe61359));if(_0xe61359['error']){if(_0xe61359[_0x551c('0x19')][_0x551c('0x1a')]===0x1f4){logger['error'](_0x551c('0x15'),_0x5682ef,_0xe61359['error'][_0x551c('0x1b')]);return _0x5cad27(_0xe61359[_0x551c('0x19')][_0x551c('0x1b')]);}logger[_0x551c('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x5682ef,_0xe61359['error'][_0x551c('0x1b')]);return _0x1a92a3(_0xe61359[_0x551c('0x19')]['message']);}else{logger[_0x551c('0x14')](_0x551c('0x15'),_0x5682ef,_0x551c('0x16'));_0x1a92a3(_0xe61359[_0x551c('0x1c')]['message']);}})['catch'](function(_0x491fec){logger[_0x551c('0x19')]('OpenchannelAccount,\x20%s,\x20%s',_0x5682ef,_0x491fec);_0x5cad27(_0x491fec);});});}
\ No newline at end of file
+var _0xf4eb=['then','info','OpenchannelAccount,\x20%s,\x20%s','debug','stringify','error','code','message','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','./openchannelAccount.socket','register'];(function(_0xfbdf56,_0x3e2e22){var _0x2e3349=function(_0x3d7799){while(--_0x3d7799){_0xfbdf56['push'](_0xfbdf56['shift']());}};_0x2e3349(++_0x3e2e22);}(_0xf4eb,0xec));var _0xbf4e=function(_0x5d9f82,_0x59427b){_0x5d9f82=_0x5d9f82-0x0;var _0x508f5e=_0xf4eb[_0x5d9f82];return _0x508f5e;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});config[_0xbf4e('0x8')]=_['defaults'](config[_0xbf4e('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbf4e('0x8')]));require(_0xbf4e('0x9'))[_0xbf4e('0xa')](socket);function respondWithRpcPromise(_0xc86f04,_0x5da823,_0x22668b){return new BPromise(function(_0x177342,_0x580a26){return client['request'](_0xc86f04,_0x22668b)[_0xbf4e('0xb')](function(_0x5a8397){logger[_0xbf4e('0xc')](_0xbf4e('0xd'),_0x5da823,'request\x20sent');logger[_0xbf4e('0xe')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x5da823,'request\x20sent',JSON[_0xbf4e('0xf')](_0x5a8397));if(_0x5a8397[_0xbf4e('0x10')]){if(_0x5a8397[_0xbf4e('0x10')][_0xbf4e('0x11')]===0x1f4){logger[_0xbf4e('0x10')](_0xbf4e('0xd'),_0x5da823,_0x5a8397['error']['message']);return _0x580a26(_0x5a8397[_0xbf4e('0x10')][_0xbf4e('0x12')]);}logger[_0xbf4e('0x10')]('OpenchannelAccount,\x20%s,\x20%s',_0x5da823,_0x5a8397[_0xbf4e('0x10')][_0xbf4e('0x12')]);return _0x177342(_0x5a8397[_0xbf4e('0x10')][_0xbf4e('0x12')]);}else{logger['info'](_0xbf4e('0xd'),_0x5da823,'request\x20sent');_0x177342(_0x5a8397['result']['message']);}})['catch'](function(_0x35992b){logger[_0xbf4e('0x10')](_0xbf4e('0xd'),_0x5da823,_0x35992b);_0x580a26(_0x35992b);});});}
\ No newline at end of file
index ba3e7f7..46a0975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6931=['./openchannelAccount.events','save','removeListener','length','openchannelAccount:'];(function(_0x479a46,_0x5e79a1){var _0x3638d5=function(_0x140317){while(--_0x140317){_0x479a46['push'](_0x479a46['shift']());}};_0x3638d5(++_0x5e79a1);}(_0x6931,0xa5));var _0x1693=function(_0x46d69c,_0x3cc674){_0x46d69c=_0x46d69c-0x0;var _0x4fd642=_0x6931[_0x46d69c];return _0x4fd642;};'use strict';var OpenchannelAccountEvents=require(_0x1693('0x0'));var events=[_0x1693('0x1'),'remove','update'];function createListener(_0x7828b9,_0x190052){return function(_0x37c53b){_0x190052['emit'](_0x7828b9,_0x37c53b);};}function removeListener(_0x1c8ac6,_0x3ea966){return function(){OpenchannelAccountEvents[_0x1693('0x2')](_0x1c8ac6,_0x3ea966);};}exports['register']=function(_0x361381){for(var _0x4bd166=0x0,_0x3594e0=events[_0x1693('0x3')];_0x4bd166<_0x3594e0;_0x4bd166++){var _0x328cfc=events[_0x4bd166];var _0x2ab0a0=createListener(_0x1693('0x4')+_0x328cfc,_0x361381);OpenchannelAccountEvents['on'](_0x328cfc,_0x2ab0a0);}};
\ No newline at end of file
+var _0xbd3b=['removeListener','length','openchannelAccount:','./openchannelAccount.events','save','remove','emit'];(function(_0x41ee11,_0x10bf15){var _0x2ef2c9=function(_0x5ee57a){while(--_0x5ee57a){_0x41ee11['push'](_0x41ee11['shift']());}};_0x2ef2c9(++_0x10bf15);}(_0xbd3b,0x1c3));var _0xbbd3=function(_0x424c0f,_0x31a27d){_0x424c0f=_0x424c0f-0x0;var _0x265bf4=_0xbd3b[_0x424c0f];return _0x265bf4;};'use strict';var OpenchannelAccountEvents=require(_0xbbd3('0x0'));var events=[_0xbbd3('0x1'),_0xbbd3('0x2'),'update'];function createListener(_0x5e9577,_0xe94b7b){return function(_0x1cf5ef){_0xe94b7b[_0xbbd3('0x3')](_0x5e9577,_0x1cf5ef);};}function removeListener(_0x4e911b,_0x173684){return function(){OpenchannelAccountEvents[_0xbbd3('0x4')](_0x4e911b,_0x173684);};}exports['register']=function(_0x2e1bcb){for(var _0x494774=0x0,_0x3cc5d9=events[_0xbbd3('0x5')];_0x494774<_0x3cc5d9;_0x494774++){var _0x44f331=events[_0x494774];var _0x4b8667=createListener(_0xbbd3('0x6')+_0x44f331,_0x2e1bcb);OpenchannelAccountEvents['on'](_0x44f331,_0x4b8667);}};
\ No newline at end of file
index 9cf5187..6f1558a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83a6=['/:id','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','show','post','create','put'];(function(_0x1f5d2f,_0x21f19e){var _0x4dbf1b=function(_0x406c9b){while(--_0x406c9b){_0x1f5d2f['push'](_0x1f5d2f['shift']());}};_0x4dbf1b(++_0x21f19e);}(_0x83a6,0xe1));var _0x683a=function(_0x2beabe,_0x399f59){_0x2beabe=_0x2beabe-0x0;var _0x1cc8cd=_0x83a6[_0x2beabe];return _0x1cc8cd;};'use strict';var multer=require(_0x683a('0x0'));var util=require('util');var path=require(_0x683a('0x1'));var timeout=require(_0x683a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x683a('0x3'));var auth=require(_0x683a('0x4'));var interaction=require(_0x683a('0x5'));var config=require(_0x683a('0x6'));var controller=require(_0x683a('0x7'));router[_0x683a('0x8')]('/',auth[_0x683a('0x9')](),controller[_0x683a('0xa')]);router[_0x683a('0x8')]('/:id',auth[_0x683a('0x9')](),controller[_0x683a('0xb')]);router[_0x683a('0xc')]('/',auth[_0x683a('0x9')](),controller[_0x683a('0xd')]);router[_0x683a('0xe')](_0x683a('0xf'),auth[_0x683a('0x9')](),controller[_0x683a('0x10')]);router[_0x683a('0x11')]('/:id',auth[_0x683a('0x9')](),controller[_0x683a('0x12')]);module[_0x683a('0x13')]=router;
\ No newline at end of file
+var _0x7a31=['post','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show'];(function(_0x8d5e38,_0x12d11d){var _0xd6aa34=function(_0x24f5da){while(--_0x24f5da){_0x8d5e38['push'](_0x8d5e38['shift']());}};_0xd6aa34(++_0x12d11d);}(_0x7a31,0x183));var _0x17a3=function(_0x3a3c3b,_0x391866){_0x3a3c3b=_0x3a3c3b-0x0;var _0x372ac0=_0x7a31[_0x3a3c3b];return _0x372ac0;};'use strict';var multer=require(_0x17a3('0x0'));var util=require(_0x17a3('0x1'));var path=require(_0x17a3('0x2'));var timeout=require(_0x17a3('0x3'));var express=require(_0x17a3('0x4'));var router=express[_0x17a3('0x5')]();var fs_extra=require(_0x17a3('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x17a3('0x7'));var controller=require(_0x17a3('0x8'));router[_0x17a3('0x9')]('/',auth[_0x17a3('0xa')](),controller['index']);router[_0x17a3('0x9')](_0x17a3('0xb'),auth[_0x17a3('0xa')](),controller[_0x17a3('0xc')]);router[_0x17a3('0xd')]('/',auth[_0x17a3('0xa')](),controller['create']);router[_0x17a3('0xe')](_0x17a3('0xb'),auth[_0x17a3('0xa')](),controller['update']);router['delete'](_0x17a3('0xb'),auth[_0x17a3('0xa')](),controller['destroy']);module[_0x17a3('0xf')]=router;
\ No newline at end of file
index c93135a..100cb4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a26=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x2b965b,_0x227f85){var _0x35e5a3=function(_0x5dd30){while(--_0x5dd30){_0x2b965b['push'](_0x2b965b['shift']());}};_0x35e5a3(++_0x227f85);}(_0x2a26,0x19d));var _0x62a2=function(_0x5b7963,_0x10bff5){_0x5b7963=_0x5b7963-0x0;var _0x57f611=_0x2a26[_0x5b7963];return _0x57f611;};'use strict';var Sequelize=require(_0x62a2('0x0'));module[_0x62a2('0x1')]={'priority':{'type':Sequelize[_0x62a2('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x62a2('0x3')],'allowNull':![],'defaultValue':_0x62a2('0x4')},'appdata':{'type':Sequelize[_0x62a2('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x62a2('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x4582=['TEXT','*,*,*,*','INTEGER','STRING','noop'];(function(_0x334637,_0x1b2fd0){var _0x9f1c2a=function(_0x379e7d){while(--_0x379e7d){_0x334637['push'](_0x334637['shift']());}};_0x9f1c2a(++_0x1b2fd0);}(_0x4582,0x174));var _0x2458=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4582[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x2458('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x2458('0x1')],'allowNull':![],'defaultValue':_0x2458('0x2')},'appdata':{'type':Sequelize[_0x2458('0x3')]()},'description':{'type':Sequelize[_0x2458('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x2458('0x4')}};
\ No newline at end of file
index a68a2e0..d7005df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99bd=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','save','update','destroy','then','end','error','name','index','map','OpenchannelApplication','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x99bd,0x1ca));var _0xd99b=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x99bd[_0x485b5a];return _0xd2b34d;};'use strict';var emlformat=require(_0xd99b('0x0'));var rimraf=require(_0xd99b('0x1'));var zipdir=require(_0xd99b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd99b('0x3'));var moment=require('moment');var BPromise=require(_0xd99b('0x4'));var Mustache=require(_0xd99b('0x5'));var util=require(_0xd99b('0x6'));var path=require('path');var sox=require(_0xd99b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd99b('0x8'));var squel=require('squel');var crypto=require(_0xd99b('0x9'));var jsforce=require(_0xd99b('0xa'));var deskjs=require(_0xd99b('0xb'));var toCsv=require(_0xd99b('0xc'));var querystring=require(_0xd99b('0xd'));var Papa=require(_0xd99b('0xe'));var Redis=require(_0xd99b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd99b('0x10'));var hardwareService=require(_0xd99b('0x11'));var logger=require('../../config/logger')(_0xd99b('0x12'));var utils=require(_0xd99b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd99b('0x14'));var db=require(_0xd99b('0x15'))['db'];function respondWithStatusCode(_0x54b1c9,_0x47f199){_0x47f199=_0x47f199||0xcc;return function(_0x531c31){if(_0x531c31){return _0x54b1c9[_0xd99b('0x16')](_0x47f199);}return _0x54b1c9[_0xd99b('0x17')](_0x47f199)['end']();};}function respondWithResult(_0x3e4296,_0x20c554){_0x20c554=_0x20c554||0xc8;return function(_0x39c437){if(_0x39c437){return _0x3e4296[_0xd99b('0x17')](_0x20c554)[_0xd99b('0x18')](_0x39c437);}};}function respondWithFilteredResult(_0x60f2da,_0x3a4d8f){return function(_0x2de586){if(_0x2de586){var _0x5e533a=typeof _0x3a4d8f[_0xd99b('0x19')]===_0xd99b('0x1a')&&typeof _0x3a4d8f[_0xd99b('0x1b')]===_0xd99b('0x1a');var _0x43817c=_0x2de586['count'];var _0x4b3e49=_0x5e533a?0x0:_0x3a4d8f[_0xd99b('0x19')];var _0x2dc000=_0x5e533a?_0x2de586['count']:_0x3a4d8f[_0xd99b('0x19')]+_0x3a4d8f['limit'];var _0x127a1f;if(_0x2dc000>=_0x43817c){_0x2dc000=_0x43817c;_0x127a1f=0xc8;}else{_0x127a1f=0xce;}_0x60f2da[_0xd99b('0x17')](_0x127a1f);return _0x60f2da[_0xd99b('0x1c')]('Content-Range',_0x4b3e49+'-'+_0x2dc000+'/'+_0x43817c)[_0xd99b('0x18')](_0x2de586);}return null;};}function patchUpdates(_0x131243){return function(_0x39f7e7){try{jsonpatch['apply'](_0x39f7e7,_0x131243,!![]);}catch(_0x3795c9){return BPromise['reject'](_0x3795c9);}return _0x39f7e7[_0xd99b('0x1d')]();};}function saveUpdates(_0x3bf247,_0x4edc9d){return function(_0x4f24bd){if(_0x4f24bd){return _0x4f24bd[_0xd99b('0x1e')](_0x3bf247)['then'](function(_0x4e517a){return _0x4e517a;});}return null;};}function removeEntity(_0x269644,_0x25d7ed){return function(_0x24e252){if(_0x24e252){return _0x24e252[_0xd99b('0x1f')]()[_0xd99b('0x20')](function(){_0x269644[_0xd99b('0x17')](0xcc)[_0xd99b('0x21')]();});}};}function handleEntityNotFound(_0x35faa9,_0x40cf4b){return function(_0x4386fd){if(!_0x4386fd){_0x35faa9['sendStatus'](0x194);}return _0x4386fd;};}function handleError(_0x39573e,_0x487233){_0x487233=_0x487233||0x1f4;return function(_0x1d63ac){logger[_0xd99b('0x22')](_0x1d63ac['stack']);if(_0x1d63ac['name']){delete _0x1d63ac[_0xd99b('0x23')];}_0x39573e[_0xd99b('0x17')](_0x487233)['send'](_0x1d63ac);};}exports[_0xd99b('0x24')]=function(_0x127ff2,_0x268c1c){var _0x293acd={},_0x4a9690={},_0x30514f={'count':0x0,'rows':[]};var _0x579cc5=_[_0xd99b('0x25')](db[_0xd99b('0x26')][_0xd99b('0x27')],function(_0x188bcd){return{'name':_0x188bcd[_0xd99b('0x28')],'type':_0x188bcd['type'][_0xd99b('0x29')]};});_0x4a9690[_0xd99b('0x2a')]=_[_0xd99b('0x25')](_0x579cc5,_0xd99b('0x23'));_0x4a9690['query']=_[_0xd99b('0x2b')](_0x127ff2[_0xd99b('0x2c')]);_0x4a9690[_0xd99b('0x2d')]=_[_0xd99b('0x2e')](_0x4a9690['model'],_0x4a9690[_0xd99b('0x2c')]);_0x293acd[_0xd99b('0x2f')]=_[_0xd99b('0x2e')](_0x4a9690['model'],qs[_0xd99b('0x30')](_0x127ff2['query']['fields']));_0x293acd[_0xd99b('0x2f')]=_0x293acd[_0xd99b('0x2f')][_0xd99b('0x31')]?_0x293acd[_0xd99b('0x2f')]:_0x4a9690[_0xd99b('0x2a')];if(!_0x127ff2['query']['hasOwnProperty'](_0xd99b('0x32'))){_0x293acd[_0xd99b('0x1b')]=qs[_0xd99b('0x1b')](_0x127ff2['query'][_0xd99b('0x1b')]);_0x293acd['offset']=qs['offset'](_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x19')]);}_0x293acd['order']=qs[_0xd99b('0x33')](_0x127ff2[_0xd99b('0x2c')]['sort']);_0x293acd[_0xd99b('0x34')]=qs[_0xd99b('0x2d')](_['pick'](_0x127ff2[_0xd99b('0x2c')],_0x4a9690['filters']),_0x579cc5);if(_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x35')]){_0x293acd[_0xd99b('0x34')]=_[_0xd99b('0x36')](_0x293acd[_0xd99b('0x34')],{'$or':_[_0xd99b('0x25')](_0x579cc5,function(_0x1818d0){if(_0x1818d0['type']!==_0xd99b('0x37')){var _0x37129a={};_0x37129a[_0x1818d0[_0xd99b('0x23')]]={'$like':'%'+_0x127ff2[_0xd99b('0x2c')]['filter']+'%'};return _0x37129a;}})});}_0x293acd=_['merge']({},_0x293acd,_0x127ff2[_0xd99b('0x38')]);var _0x45ec3d={'where':_0x293acd['where']};return db[_0xd99b('0x26')][_0xd99b('0x39')](_0x45ec3d)[_0xd99b('0x20')](function(_0x1e0fd7){_0x30514f[_0xd99b('0x39')]=_0x1e0fd7;if(_0x127ff2[_0xd99b('0x2c')][_0xd99b('0x3a')]){_0x293acd[_0xd99b('0x3b')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0xd99b('0x3c')](_0x293acd);})[_0xd99b('0x20')](function(_0x48efa2){_0x30514f[_0xd99b('0x3d')]=_0x48efa2;return _0x30514f;})[_0xd99b('0x20')](respondWithFilteredResult(_0x268c1c,_0x293acd))[_0xd99b('0x3e')](handleError(_0x268c1c,null));};exports[_0xd99b('0x3f')]=function(_0xf6933,_0x23ef67){var _0x18a1dd={'raw':!![],'where':{'id':_0xf6933[_0xd99b('0x40')]['id']}},_0x266a10={};_0x266a10[_0xd99b('0x2a')]=_[_0xd99b('0x2b')](db['OpenchannelApplication'][_0xd99b('0x27')]);_0x266a10[_0xd99b('0x2c')]=_[_0xd99b('0x2b')](_0xf6933[_0xd99b('0x2c')]);_0x266a10[_0xd99b('0x2d')]=_[_0xd99b('0x2e')](_0x266a10[_0xd99b('0x2a')],_0x266a10[_0xd99b('0x2c')]);_0x18a1dd[_0xd99b('0x2f')]=_[_0xd99b('0x2e')](_0x266a10[_0xd99b('0x2a')],qs['fields'](_0xf6933[_0xd99b('0x2c')][_0xd99b('0x30')]));_0x18a1dd['attributes']=_0x18a1dd[_0xd99b('0x2f')][_0xd99b('0x31')]?_0x18a1dd['attributes']:_0x266a10[_0xd99b('0x2a')];if(_0xf6933[_0xd99b('0x2c')][_0xd99b('0x3a')]){_0x18a1dd[_0xd99b('0x3b')]=[{'all':!![]}];}_0x18a1dd=_[_0xd99b('0x36')]({},_0x18a1dd,_0xf6933[_0xd99b('0x38')]);return db['OpenchannelApplication'][_0xd99b('0x41')](_0x18a1dd)[_0xd99b('0x20')](handleEntityNotFound(_0x23ef67,null))[_0xd99b('0x20')](respondWithResult(_0x23ef67,null))[_0xd99b('0x3e')](handleError(_0x23ef67,null));};exports[_0xd99b('0x42')]=function(_0x4913cc,_0x46d2ec){return db['OpenchannelApplication'][_0xd99b('0x42')](_0x4913cc[_0xd99b('0x43')],{})[_0xd99b('0x20')](respondWithResult(_0x46d2ec,0xc9))[_0xd99b('0x3e')](handleError(_0x46d2ec,null));};exports[_0xd99b('0x1e')]=function(_0x8c73c,_0x1b41b4){if(_0x8c73c[_0xd99b('0x43')]['id']){delete _0x8c73c[_0xd99b('0x43')]['id'];}return db[_0xd99b('0x26')][_0xd99b('0x41')]({'where':{'id':_0x8c73c[_0xd99b('0x40')]['id']}})[_0xd99b('0x20')](handleEntityNotFound(_0x1b41b4,null))['then'](saveUpdates(_0x8c73c[_0xd99b('0x43')],null))[_0xd99b('0x20')](respondWithResult(_0x1b41b4,null))['catch'](handleError(_0x1b41b4,null));};exports['destroy']=function(_0x593fb9,_0xaf95a5){return db[_0xd99b('0x26')][_0xd99b('0x41')]({'where':{'id':_0x593fb9[_0xd99b('0x40')]['id']}})[_0xd99b('0x20')](handleEntityNotFound(_0xaf95a5,null))[_0xd99b('0x20')](removeEntity(_0xaf95a5,null))[_0xd99b('0x3e')](handleError(_0xaf95a5,null));};
\ No newline at end of file
+var _0xd5d9=['bluebird','util','path','to-csv','fs-extra','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','reject','save','then','sendStatus','stack','name','send','index','map','OpenchannelApplication','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','create','body','destroy','find','rimraf','zip-dir','request-promise','moment'];(function(_0x80ba33,_0x19332b){var _0x324f6c=function(_0x1fa1e5){while(--_0x1fa1e5){_0x80ba33['push'](_0x80ba33['shift']());}};_0x324f6c(++_0x19332b);}(_0xd5d9,0x14b));var _0x9d5d=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0xd5d9[_0x2601b4];return _0x3e3661;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9d5d('0x0'));var zipdir=require(_0x9d5d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9d5d('0x2'));var moment=require(_0x9d5d('0x3'));var BPromise=require(_0x9d5d('0x4'));var Mustache=require('mustache');var util=require(_0x9d5d('0x5'));var path=require(_0x9d5d('0x6'));var sox=require('sox');var csv=require(_0x9d5d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9d5d('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9d5d('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x9d5d('0xa'));var toCsv=require(_0x9d5d('0x7'));var querystring=require(_0x9d5d('0xb'));var Papa=require('papaparse');var Redis=require(_0x9d5d('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x9d5d('0xd'));var as=require(_0x9d5d('0xe'));var hardwareService=require(_0x9d5d('0xf'));var logger=require(_0x9d5d('0x10'))(_0x9d5d('0x11'));var utils=require(_0x9d5d('0x12'));var config=require(_0x9d5d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9d5d('0x14'))['db'];function respondWithStatusCode(_0x40ec31,_0x3ec28f){_0x3ec28f=_0x3ec28f||0xcc;return function(_0x13ae3f){if(_0x13ae3f){return _0x40ec31['sendStatus'](_0x3ec28f);}return _0x40ec31[_0x9d5d('0x15')](_0x3ec28f)[_0x9d5d('0x16')]();};}function respondWithResult(_0x56dce3,_0x359a57){_0x359a57=_0x359a57||0xc8;return function(_0x287199){if(_0x287199){return _0x56dce3[_0x9d5d('0x15')](_0x359a57)[_0x9d5d('0x17')](_0x287199);}};}function respondWithFilteredResult(_0x54d8fa,_0x42743b){return function(_0x530d73){if(_0x530d73){var _0x35a459=typeof _0x42743b[_0x9d5d('0x18')]==='undefined'&&typeof _0x42743b[_0x9d5d('0x19')]===_0x9d5d('0x1a');var _0x46fef9=_0x530d73[_0x9d5d('0x1b')];var _0x2a1afb=_0x35a459?0x0:_0x42743b['offset'];var _0x5d5974=_0x35a459?_0x530d73['count']:_0x42743b[_0x9d5d('0x18')]+_0x42743b[_0x9d5d('0x19')];var _0x45bbf5;if(_0x5d5974>=_0x46fef9){_0x5d5974=_0x46fef9;_0x45bbf5=0xc8;}else{_0x45bbf5=0xce;}_0x54d8fa['status'](_0x45bbf5);return _0x54d8fa['set']('Content-Range',_0x2a1afb+'-'+_0x5d5974+'/'+_0x46fef9)['json'](_0x530d73);}return null;};}function patchUpdates(_0x5d3dbc){return function(_0x1a4aae){try{jsonpatch['apply'](_0x1a4aae,_0x5d3dbc,!![]);}catch(_0x585e1e){return BPromise[_0x9d5d('0x1c')](_0x585e1e);}return _0x1a4aae[_0x9d5d('0x1d')]();};}function saveUpdates(_0x2261a0,_0x23d82a){return function(_0x2cd599){if(_0x2cd599){return _0x2cd599['update'](_0x2261a0)['then'](function(_0xe70d9a){return _0xe70d9a;});}return null;};}function removeEntity(_0x3511b8,_0x5c8eb3){return function(_0x5a0309){if(_0x5a0309){return _0x5a0309['destroy']()[_0x9d5d('0x1e')](function(){_0x3511b8[_0x9d5d('0x15')](0xcc)[_0x9d5d('0x16')]();});}};}function handleEntityNotFound(_0x19e26f,_0x5a839b){return function(_0x5b09c9){if(!_0x5b09c9){_0x19e26f[_0x9d5d('0x1f')](0x194);}return _0x5b09c9;};}function handleError(_0xd7c006,_0x3e1fb9){_0x3e1fb9=_0x3e1fb9||0x1f4;return function(_0x1826d9){logger['error'](_0x1826d9[_0x9d5d('0x20')]);if(_0x1826d9[_0x9d5d('0x21')]){delete _0x1826d9[_0x9d5d('0x21')];}_0xd7c006['status'](_0x3e1fb9)[_0x9d5d('0x22')](_0x1826d9);};}exports[_0x9d5d('0x23')]=function(_0x4c1dae,_0x18bf92){var _0x23cc5e={},_0x171e40={},_0x2ffeb5={'count':0x0,'rows':[]};var _0x868e8f=_[_0x9d5d('0x24')](db[_0x9d5d('0x25')][_0x9d5d('0x26')],function(_0x106895){return{'name':_0x106895['fieldName'],'type':_0x106895[_0x9d5d('0x27')]['key']};});_0x171e40[_0x9d5d('0x28')]=_[_0x9d5d('0x24')](_0x868e8f,'name');_0x171e40[_0x9d5d('0x29')]=_[_0x9d5d('0x2a')](_0x4c1dae['query']);_0x171e40[_0x9d5d('0x2b')]=_['intersection'](_0x171e40[_0x9d5d('0x28')],_0x171e40[_0x9d5d('0x29')]);_0x23cc5e[_0x9d5d('0x2c')]=_[_0x9d5d('0x2d')](_0x171e40[_0x9d5d('0x28')],qs[_0x9d5d('0x2e')](_0x4c1dae['query'][_0x9d5d('0x2e')]));_0x23cc5e[_0x9d5d('0x2c')]=_0x23cc5e['attributes'][_0x9d5d('0x2f')]?_0x23cc5e['attributes']:_0x171e40['model'];if(!_0x4c1dae['query'][_0x9d5d('0x30')](_0x9d5d('0x31'))){_0x23cc5e['limit']=qs['limit'](_0x4c1dae[_0x9d5d('0x29')][_0x9d5d('0x19')]);_0x23cc5e[_0x9d5d('0x18')]=qs[_0x9d5d('0x18')](_0x4c1dae[_0x9d5d('0x29')][_0x9d5d('0x18')]);}_0x23cc5e[_0x9d5d('0x32')]=qs[_0x9d5d('0x33')](_0x4c1dae[_0x9d5d('0x29')][_0x9d5d('0x33')]);_0x23cc5e['where']=qs[_0x9d5d('0x2b')](_[_0x9d5d('0x34')](_0x4c1dae['query'],_0x171e40[_0x9d5d('0x2b')]),_0x868e8f);if(_0x4c1dae['query'][_0x9d5d('0x35')]){_0x23cc5e[_0x9d5d('0x36')]=_[_0x9d5d('0x37')](_0x23cc5e[_0x9d5d('0x36')],{'$or':_['map'](_0x868e8f,function(_0x1c613f){if(_0x1c613f['type']!==_0x9d5d('0x38')){var _0x3e4eb2={};_0x3e4eb2[_0x1c613f[_0x9d5d('0x21')]]={'$like':'%'+_0x4c1dae[_0x9d5d('0x29')][_0x9d5d('0x35')]+'%'};return _0x3e4eb2;}})});}_0x23cc5e=_[_0x9d5d('0x37')]({},_0x23cc5e,_0x4c1dae[_0x9d5d('0x39')]);var _0x58a816={'where':_0x23cc5e[_0x9d5d('0x36')]};return db[_0x9d5d('0x25')]['count'](_0x58a816)[_0x9d5d('0x1e')](function(_0x357a8c){_0x2ffeb5[_0x9d5d('0x1b')]=_0x357a8c;if(_0x4c1dae[_0x9d5d('0x29')][_0x9d5d('0x3a')]){_0x23cc5e[_0x9d5d('0x3b')]=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x23cc5e);})['then'](function(_0x20b21e){_0x2ffeb5['rows']=_0x20b21e;return _0x2ffeb5;})['then'](respondWithFilteredResult(_0x18bf92,_0x23cc5e))[_0x9d5d('0x3c')](handleError(_0x18bf92,null));};exports[_0x9d5d('0x3d')]=function(_0x55d780,_0x5cb31d){var _0xa1b587={'raw':!![],'where':{'id':_0x55d780[_0x9d5d('0x3e')]['id']}},_0x31a57f={};_0x31a57f[_0x9d5d('0x28')]=_[_0x9d5d('0x2a')](db[_0x9d5d('0x25')][_0x9d5d('0x26')]);_0x31a57f[_0x9d5d('0x29')]=_[_0x9d5d('0x2a')](_0x55d780[_0x9d5d('0x29')]);_0x31a57f['filters']=_[_0x9d5d('0x2d')](_0x31a57f[_0x9d5d('0x28')],_0x31a57f[_0x9d5d('0x29')]);_0xa1b587[_0x9d5d('0x2c')]=_[_0x9d5d('0x2d')](_0x31a57f[_0x9d5d('0x28')],qs['fields'](_0x55d780[_0x9d5d('0x29')][_0x9d5d('0x2e')]));_0xa1b587[_0x9d5d('0x2c')]=_0xa1b587['attributes'][_0x9d5d('0x2f')]?_0xa1b587[_0x9d5d('0x2c')]:_0x31a57f[_0x9d5d('0x28')];if(_0x55d780['query'][_0x9d5d('0x3a')]){_0xa1b587['include']=[{'all':!![]}];}_0xa1b587=_[_0x9d5d('0x37')]({},_0xa1b587,_0x55d780[_0x9d5d('0x39')]);return db[_0x9d5d('0x25')]['find'](_0xa1b587)[_0x9d5d('0x1e')](handleEntityNotFound(_0x5cb31d,null))[_0x9d5d('0x1e')](respondWithResult(_0x5cb31d,null))[_0x9d5d('0x3c')](handleError(_0x5cb31d,null));};exports[_0x9d5d('0x3f')]=function(_0x56403b,_0x5a6e92){return db[_0x9d5d('0x25')][_0x9d5d('0x3f')](_0x56403b[_0x9d5d('0x40')],{})[_0x9d5d('0x1e')](respondWithResult(_0x5a6e92,0xc9))[_0x9d5d('0x3c')](handleError(_0x5a6e92,null));};exports['update']=function(_0x3e116f,_0x17b0f1){if(_0x3e116f['body']['id']){delete _0x3e116f['body']['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x3e116f['params']['id']}})[_0x9d5d('0x1e')](handleEntityNotFound(_0x17b0f1,null))[_0x9d5d('0x1e')](saveUpdates(_0x3e116f[_0x9d5d('0x40')],null))[_0x9d5d('0x1e')](respondWithResult(_0x17b0f1,null))['catch'](handleError(_0x17b0f1,null));};exports[_0x9d5d('0x41')]=function(_0x4ef95d,_0xbe6243){return db[_0x9d5d('0x25')][_0x9d5d('0x42')]({'where':{'id':_0x4ef95d[_0x9d5d('0x3e')]['id']}})[_0x9d5d('0x1e')](handleEntityNotFound(_0xbe6243,null))['then'](removeEntity(_0xbe6243,null))[_0x9d5d('0x3c')](handleError(_0xbe6243,null));};
\ No newline at end of file
index e2a8642..eae85e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x151a=['exports','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x24aa5c,_0x4ee4d3){var _0x19eb18=function(_0xf3b56b){while(--_0xf3b56b){_0x24aa5c['push'](_0x24aa5c['shift']());}};_0x19eb18(++_0x4ee4d3);}(_0x151a,0xff));var _0xa151=function(_0xa96436,_0x656eb1){_0xa96436=_0xa96436-0x0;var _0x310513=_0x151a[_0xa96436];return _0x310513;};'use strict';var _=require(_0xa151('0x0'));var util=require(_0xa151('0x1'));var logger=require(_0xa151('0x2'))(_0xa151('0x3'));var moment=require(_0xa151('0x4'));var BPromise=require('bluebird');var rp=require(_0xa151('0x5'));var fs=require('fs');var path=require(_0xa151('0x6'));var rimraf=require(_0xa151('0x7'));var config=require(_0xa151('0x8'));var attributes=require('./openchannelApplication.attributes');module[_0xa151('0x9')]=function(_0x5c581d,_0xbd4b1b){return _0x5c581d['define']('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa151('0xa'),'collate':_0xa151('0xb')});};
\ No newline at end of file
+var _0x6628=['openchannel_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./openchannelApplication.attributes','exports','define','OpenchannelApplication'];(function(_0x1b745b,_0x3e2d40){var _0x120a9d=function(_0x882a6c){while(--_0x882a6c){_0x1b745b['push'](_0x1b745b['shift']());}};_0x120a9d(++_0x3e2d40);}(_0x6628,0xdf));var _0x8662=function(_0x5dabcf,_0x18db31){_0x5dabcf=_0x5dabcf-0x0;var _0x1f70b0=_0x6628[_0x5dabcf];return _0x1f70b0;};'use strict';var _=require(_0x8662('0x0'));var util=require(_0x8662('0x1'));var logger=require(_0x8662('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8662('0x3'));var rp=require(_0x8662('0x4'));var fs=require('fs');var path=require(_0x8662('0x5'));var rimraf=require(_0x8662('0x6'));var config=require('../../config/environment');var attributes=require(_0x8662('0x7'));module[_0x8662('0x8')]=function(_0x43c3e5,_0x46e1e3){return _0x43c3e5[_0x8662('0x9')](_0x8662('0xa'),attributes,{'tableName':_0x8662('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8662('0xc')});};
\ No newline at end of file
index 9f343ec..f79c075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a66=['request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','limit','catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','OpenchannelApplication,\x20%s,\x20%s'];(function(_0x575057,_0x14baf3){var _0x49dbc8=function(_0x23599a){while(--_0x23599a){_0x575057['push'](_0x575057['shift']());}};_0x49dbc8(++_0x14baf3);}(_0x5a66,0x15b));var _0x65a6=function(_0x4e6766,_0x43c16a){_0x4e6766=_0x4e6766-0x0;var _0x13fc37=_0x5a66[_0x4e6766];return _0x13fc37;};'use strict';var _=require(_0x65a6('0x0'));var util=require(_0x65a6('0x1'));var moment=require('moment');var BPromise=require(_0x65a6('0x2'));var rs=require(_0x65a6('0x3'));var fs=require('fs');var Redis=require(_0x65a6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x65a6('0x5'))(_0x65a6('0x6'));var config=require(_0x65a6('0x7'));var jayson=require(_0x65a6('0x8'));var client=jayson['client'][_0x65a6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20e94e,_0x3881e6,_0x7a7246){return new BPromise(function(_0x4ecdb6,_0x33bc7b){return client['request'](_0x20e94e,_0x7a7246)[_0x65a6('0xa')](function(_0x1fc0b1){logger[_0x65a6('0xb')](_0x65a6('0xc'),_0x3881e6,_0x65a6('0xd'));logger['debug'](_0x65a6('0xe'),_0x3881e6,_0x65a6('0xd'),JSON[_0x65a6('0xf')](_0x1fc0b1));if(_0x1fc0b1[_0x65a6('0x10')]){if(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x11')]===0x1f4){logger[_0x65a6('0x10')](_0x65a6('0xc'),_0x3881e6,_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);return _0x33bc7b(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);}logger['error'](_0x65a6('0xc'),_0x3881e6,_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);return _0x4ecdb6(_0x1fc0b1[_0x65a6('0x10')][_0x65a6('0x12')]);}else{logger[_0x65a6('0xb')](_0x65a6('0xc'),_0x3881e6,_0x65a6('0xd'));_0x4ecdb6(_0x1fc0b1[_0x65a6('0x13')][_0x65a6('0x12')]);}})['catch'](function(_0x32b146){logger[_0x65a6('0x10')](_0x65a6('0xc'),_0x3881e6,_0x32b146);_0x33bc7b(_0x32b146);});});}exports[_0x65a6('0x14')]=function(_0x4bc2db){var _0x17d26c=this;return new Promise(function(_0x172772,_0x26fe31){return db[_0x65a6('0x15')][_0x65a6('0x16')](_0x4bc2db[_0x65a6('0x17')],{'raw':_0x4bc2db[_0x65a6('0x18')]?_0x4bc2db['options'][_0x65a6('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bc2db['options']?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1a')]||null:null,'attributes':_0x4bc2db['options']?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1b')]||null:null,'limit':_0x4bc2db[_0x65a6('0x18')]?_0x4bc2db[_0x65a6('0x18')][_0x65a6('0x1c')]||null:null})[_0x65a6('0xa')](function(_0x4c2d83){logger[_0x65a6('0xb')]('UpdateOpenchannelApplication',_0x4bc2db);logger['debug'](_0x65a6('0x14'),_0x4bc2db,JSON[_0x65a6('0xf')](_0x4c2d83));_0x172772(_0x4c2d83);})[_0x65a6('0x1d')](function(_0x3d909a){logger['error'](_0x65a6('0x14'),_0x3d909a[_0x65a6('0x12')],_0x4bc2db);_0x26fe31(_0x17d26c[_0x65a6('0x10')](0x1f4,_0x3d909a[_0x65a6('0x12')]));});});};
\ No newline at end of file
+var _0xc07d=['result','catch','body','options','where','attributes','limit','UpdateOpenchannelApplication','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x38b14f,_0xd08fa8){var _0x22a324=function(_0x4bbb05){while(--_0x4bbb05){_0x38b14f['push'](_0x38b14f['shift']());}};_0x22a324(++_0xd08fa8);}(_0xc07d,0xfb));var _0xdc07=function(_0x305a5b,_0x242353){_0x305a5b=_0x305a5b-0x0;var _0x206760=_0xc07d[_0x305a5b];return _0x206760;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xdc07('0x0'));var BPromise=require(_0xdc07('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdc07('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xdc07('0x3'));var logger=require('../../config/logger')(_0xdc07('0x4'));var config=require(_0xdc07('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xdc07('0x6')][_0xdc07('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xbcaa84,_0x2a47e5,_0x5e60fd){return new BPromise(function(_0x13f565,_0x7b45fa){return client[_0xdc07('0x8')](_0xbcaa84,_0x5e60fd)[_0xdc07('0x9')](function(_0x1c1d18){logger['info'](_0xdc07('0xa'),_0x2a47e5,_0xdc07('0xb'));logger[_0xdc07('0xc')](_0xdc07('0xd'),_0x2a47e5,_0xdc07('0xb'),JSON[_0xdc07('0xe')](_0x1c1d18));if(_0x1c1d18[_0xdc07('0xf')]){if(_0x1c1d18[_0xdc07('0xf')][_0xdc07('0x10')]===0x1f4){logger[_0xdc07('0xf')](_0xdc07('0xa'),_0x2a47e5,_0x1c1d18[_0xdc07('0xf')]['message']);return _0x7b45fa(_0x1c1d18[_0xdc07('0xf')][_0xdc07('0x11')]);}logger[_0xdc07('0xf')](_0xdc07('0xa'),_0x2a47e5,_0x1c1d18['error'][_0xdc07('0x11')]);return _0x13f565(_0x1c1d18[_0xdc07('0xf')][_0xdc07('0x11')]);}else{logger[_0xdc07('0x12')](_0xdc07('0xa'),_0x2a47e5,_0xdc07('0xb'));_0x13f565(_0x1c1d18[_0xdc07('0x13')]['message']);}})[_0xdc07('0x14')](function(_0x4079f3){logger[_0xdc07('0xf')](_0xdc07('0xa'),_0x2a47e5,_0x4079f3);_0x7b45fa(_0x4079f3);});});}exports['UpdateOpenchannelApplication']=function(_0x45aea7){var _0x420dbc=this;return new Promise(function(_0x71ec2,_0x3ddeab){return db['OpenchannelApplication']['update'](_0x45aea7[_0xdc07('0x15')],{'raw':_0x45aea7[_0xdc07('0x16')]?_0x45aea7[_0xdc07('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45aea7['options']?_0x45aea7[_0xdc07('0x16')][_0xdc07('0x17')]||null:null,'attributes':_0x45aea7['options']?_0x45aea7[_0xdc07('0x16')][_0xdc07('0x18')]||null:null,'limit':_0x45aea7[_0xdc07('0x16')]?_0x45aea7[_0xdc07('0x16')][_0xdc07('0x19')]||null:null})[_0xdc07('0x9')](function(_0x13af17){logger[_0xdc07('0x12')](_0xdc07('0x1a'),_0x45aea7);logger[_0xdc07('0xc')](_0xdc07('0x1a'),_0x45aea7,JSON[_0xdc07('0xe')](_0x13af17));_0x71ec2(_0x13af17);})[_0xdc07('0x14')](function(_0x32ccf9){logger[_0xdc07('0xf')]('UpdateOpenchannelApplication',_0x32ccf9[_0xdc07('0x11')],_0x45aea7);_0x3ddeab(_0x420dbc[_0xdc07('0xf')](0x1f4,_0x32ccf9[_0xdc07('0x11')]));});});};
\ No newline at end of file
index 23664ca..b1529c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7467=['openchannelinteraction:addtags','addTags','put','tracked','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','isAuthenticated','show','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','openchannel'];(function(_0x49c67a,_0x40f325){var _0x4e078c=function(_0x4468fe){while(--_0x4468fe){_0x49c67a['push'](_0x49c67a['shift']());}};_0x4e078c(++_0x40f325);}(_0x7467,0x69));var _0x7746=function(_0x283b00,_0x2c0bac){_0x283b00=_0x283b00-0x0;var _0x1042e1=_0x7467[_0x283b00];return _0x1042e1;};'use strict';var multer=require(_0x7746('0x0'));var util=require(_0x7746('0x1'));var path=require(_0x7746('0x2'));var timeout=require('connect-timeout');var express=require(_0x7746('0x3'));var router=express['Router']();var fs_extra=require(_0x7746('0x4'));var auth=require(_0x7746('0x5'));var interaction=require(_0x7746('0x6'));var config=require(_0x7746('0x7'));var controller=require('./openchannelInteraction.controller');router[_0x7746('0x8')]('/',auth['isAuthenticated'](),controller[_0x7746('0x9')]);router[_0x7746('0x8')](_0x7746('0xa'),auth['isAuthenticated'](),controller[_0x7746('0xb')]);router[_0x7746('0x8')](_0x7746('0xc'),auth[_0x7746('0xd')](),controller[_0x7746('0xe')]);router[_0x7746('0x8')](_0x7746('0xf'),auth[_0x7746('0xd')](),controller['getMessages']);router[_0x7746('0x8')](_0x7746('0x10'),auth['isAuthenticated'](),controller[_0x7746('0x11')]);router[_0x7746('0x12')]('/',auth[_0x7746('0xd')](),controller[_0x7746('0x13')]);router[_0x7746('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0x7746('0x14')]);router[_0x7746('0x12')](_0x7746('0x15'),auth['isAuthenticated'](),interaction['tracked'](_0x7746('0x16'),_0x7746('0x17')),controller[_0x7746('0x18')]);router[_0x7746('0x19')](_0x7746('0xc'),auth['isAuthenticated'](),interaction[_0x7746('0x1a')]('openchannel',_0x7746('0x1b')),controller[_0x7746('0x1c')]);router[_0x7746('0x1d')](_0x7746('0xc'),auth[_0x7746('0xd')](),interaction[_0x7746('0x1a')](_0x7746('0x16'),_0x7746('0x1e')),controller[_0x7746('0x1f')]);router[_0x7746('0x1d')](_0x7746('0x15'),auth[_0x7746('0xd')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x711d=['/:id/tags','removeTags','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/messages','getMessages','post','addMessage','openchannelinteraction:addtags','/:id','tracked','openchannelinteraction:update','update','delete','openchannel'];(function(_0x438456,_0x5e1146){var _0x1d4085=function(_0x9081ee){while(--_0x9081ee){_0x438456['push'](_0x438456['shift']());}};_0x1d4085(++_0x5e1146);}(_0x711d,0xc2));var _0xd711=function(_0x488690,_0x396274){_0x488690=_0x488690-0x0;var _0x31c15f=_0x711d[_0x488690];return _0x31c15f;};'use strict';var multer=require(_0xd711('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd711('0x1'));var express=require(_0xd711('0x2'));var router=express[_0xd711('0x3')]();var fs_extra=require(_0xd711('0x4'));var auth=require(_0xd711('0x5'));var interaction=require(_0xd711('0x6'));var config=require(_0xd711('0x7'));var controller=require('./openchannelInteraction.controller');router[_0xd711('0x8')]('/',auth[_0xd711('0x9')](),controller[_0xd711('0xa')]);router[_0xd711('0x8')]('/describe',auth[_0xd711('0x9')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xd711('0x8')](_0xd711('0xb'),auth['isAuthenticated'](),controller[_0xd711('0xc')]);router['get']('/:id/download',auth[_0xd711('0x9')](),controller['download']);router[_0xd711('0xd')]('/',auth[_0xd711('0x9')](),controller['create']);router[_0xd711('0xd')](_0xd711('0xb'),auth[_0xd711('0x9')](),controller[_0xd711('0xe')]);router[_0xd711('0xd')]('/:id/tags',auth['isAuthenticated'](),interaction['tracked']('openchannel',_0xd711('0xf')),controller['addTags']);router['put'](_0xd711('0x10'),auth[_0xd711('0x9')](),interaction[_0xd711('0x11')]('openchannel',_0xd711('0x12')),controller[_0xd711('0x13')]);router[_0xd711('0x14')](_0xd711('0x10'),auth[_0xd711('0x9')](),interaction[_0xd711('0x11')](_0xd711('0x15'),'openchannelinteraction:destroy'),controller['destroy']);router['delete'](_0xd711('0x16'),auth[_0xd711('0x9')](),controller[_0xd711('0x17')]);module['exports']=router;
\ No newline at end of file
index 4d28d1e..8b869e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d25=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x361782,_0x683927){var _0x3887e8=function(_0x39f1eb){while(--_0x39f1eb){_0x361782['push'](_0x361782['shift']());}};_0x3887e8(++_0x683927);}(_0x1d25,0xba));var _0x51d2=function(_0x3d4ef1,_0x5a957c){_0x3d4ef1=_0x3d4ef1-0x0;var _0x409423=_0x1d25[_0x3d4ef1];return _0x409423;};'use strict';var Sequelize=require(_0x51d2('0x0'));module[_0x51d2('0x1')]={'closed':{'type':Sequelize[_0x51d2('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x51d2('0x3')]},'disposition':{'type':Sequelize[_0x51d2('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x51d2('0x4')]},'note':{'type':Sequelize[_0x51d2('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x51d2('0x4')]},'externalUrl':{'type':Sequelize[_0x51d2('0x4')]},'lastMsgAt':{'type':Sequelize[_0x51d2('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x51d2('0x5')]('in',_0x51d2('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x51d2('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x51d2('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xc2cc=['STRING','ENUM','exports','BOOLEAN','DATE'];(function(_0x314534,_0x5598ef){var _0x2fd449=function(_0x148c55){while(--_0x148c55){_0x314534['push'](_0x314534['shift']());}};_0x2fd449(++_0x5598ef);}(_0xc2cc,0x70));var _0xcc2c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc2cc[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0xcc2c('0x0')]={'closed':{'type':Sequelize[_0xcc2c('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xcc2c('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xcc2c('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xcc2c('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0xcc2c('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0xcc2c('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xcc2c('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xcc2c('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b66e9c7..84f3faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fb3=['attributes','fields','length','includeAll','include','options','find','catch','create','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','filters','hasOwnProperty','nolimit','order','sort','where','OpenchannelInteractionId','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','count','rows','addTags','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','tmp','attachments','transcript-%d-%s.zip','push','User','fullname','firstName','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','Owner','mkdirSync','N.A.','toString','closedAt','disposition','threadId','Public','Private','existsSync','createReadStream','createWriteStream','basename','out','System','Contact','value','renderFile','views','downloadInteraction.ejs','transcript-','Openchannel','createPdfFromHTML','error','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','set','Content-Range','update','then','destroy','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','findAll','openchannel','query','user','show','from','params','keys','intersection','model'];(function(_0x2f41ce,_0x23208a){var _0x25dde4=function(_0x15c15f){while(--_0x15c15f){_0x2f41ce['push'](_0x2f41ce['shift']());}};_0x25dde4(++_0x23208a);}(_0x2fb3,0x1dc));var _0x32fb=function(_0x25260e,_0x4ea9f9){_0x25260e=_0x25260e-0x0;var _0x5d19c6=_0x2fb3[_0x25260e];return _0x5d19c6;};'use strict';var rimraf=require(_0x32fb('0x0'));var zipdir=require(_0x32fb('0x1'));var moment=require(_0x32fb('0x2'));var util=require(_0x32fb('0x3'));var path=require(_0x32fb('0x4'));var ejs=require(_0x32fb('0x5'));var fs=require('fs');var _=require(_0x32fb('0x6'));var Redis=require(_0x32fb('0x7'));var interaction=require(_0x32fb('0x8'));var qs=require('../../components/parsers/qs');var pdf=require(_0x32fb('0x9'));var logger=require('../../config/logger')(_0x32fb('0xa'));var config=require('../../config/environment');var db=require(_0x32fb('0xb'))['db'];config[_0x32fb('0xc')]=_[_0x32fb('0xd')](config[_0x32fb('0xc')],{'host':_0x32fb('0xe'),'port':0x18eb});var socket=require(_0x32fb('0xf'))(new Redis(config[_0x32fb('0xc')]));require(_0x32fb('0x10'))[_0x32fb('0x11')](socket);function respondWithStatusCode(_0x50592c,_0x2b6b5c){_0x2b6b5c=_0x2b6b5c||0xcc;return function(_0x1f98de){if(_0x1f98de){return _0x50592c[_0x32fb('0x12')](_0x2b6b5c);}return _0x50592c[_0x32fb('0x13')](_0x2b6b5c)[_0x32fb('0x14')]();};}function respondWithResult(_0x330157,_0x325db2){_0x325db2=_0x325db2||0xc8;return function(_0x26259c){if(_0x26259c){return _0x330157[_0x32fb('0x13')](_0x325db2)['json'](_0x26259c);}};}function respondWithFilteredResult(_0x917e75,_0x3fa49f){return function(_0x39a474){if(_0x39a474){var _0x48976d=typeof _0x3fa49f[_0x32fb('0x15')]===_0x32fb('0x16')&&typeof _0x3fa49f['limit']===_0x32fb('0x16');var _0x4b3d8a=_0x39a474['count'];var _0x481fa1=_0x48976d?0x0:_0x3fa49f[_0x32fb('0x15')];var _0x5c786c=_0x48976d?_0x39a474['count']:_0x3fa49f[_0x32fb('0x15')]+_0x3fa49f[_0x32fb('0x17')];var _0x8ed24c;if(_0x5c786c>=_0x4b3d8a){_0x5c786c=_0x4b3d8a;_0x8ed24c=0xc8;}else{_0x8ed24c=0xce;}_0x917e75[_0x32fb('0x13')](_0x8ed24c);return _0x917e75[_0x32fb('0x18')](_0x32fb('0x19'),_0x481fa1+'-'+_0x5c786c+'/'+_0x4b3d8a)['json'](_0x39a474);}return null;};}function saveUpdates(_0x3a1ee2){return function(_0x5563ab){if(_0x5563ab){return _0x5563ab[_0x32fb('0x1a')](_0x3a1ee2)[_0x32fb('0x1b')](function(_0x3237f2){return _0x3237f2;});}return null;};}function removeEntity(_0x1cbfd5){return function(_0x790a24){if(_0x790a24){return _0x790a24[_0x32fb('0x1c')]()[_0x32fb('0x1b')](function(){_0x1cbfd5[_0x32fb('0x13')](0xcc)[_0x32fb('0x14')]();});}};}function handleEntityNotFound(_0x804186){return function(_0x5ddf79){if(!_0x5ddf79){_0x804186[_0x32fb('0x12')](0x194);}return _0x5ddf79;};}function handleError(_0xc0e24b,_0x1b37af){_0x1b37af=_0x1b37af||0x1f4;return function(_0x4b17e1){logger['error'](_0x4b17e1[_0x32fb('0x1d')]);if(_0x4b17e1[_0x32fb('0x1e')]){delete _0x4b17e1[_0x32fb('0x1e')];}_0xc0e24b[_0x32fb('0x13')](_0x1b37af)[_0x32fb('0x1f')](_0x4b17e1);};}exports[_0x32fb('0x20')]=function(_0x4866eb,_0x37d512){var _0xab97ce={};var _0x3fff1=_[_0x32fb('0x21')](db[_0x32fb('0x22')][_0x32fb('0x23')],function(_0x4069e4){return{'name':_0x4069e4[_0x32fb('0x24')],'type':_0x4069e4[_0x32fb('0x25')]['key']};});_0xab97ce=qs['getOptions'](_0x3fff1,_0x4866eb);return interaction[_0x32fb('0x26')](_0x32fb('0x27'),_0x4866eb[_0x32fb('0x28')],_0x4866eb[_0x32fb('0x29')],_0xab97ce,_0x3fff1)[_0x32fb('0x1b')](respondWithFilteredResult(_0x37d512,_0xab97ce))['catch'](handleError(_0x37d512,null));};exports[_0x32fb('0x2a')]=function(_0x2d2fbb,_0x42a080){var _0x3c0aed={};if(_0x2d2fbb['query'][_0x32fb('0x25')]&&_0x2d2fbb[_0x32fb('0x28')][_0x32fb('0x25')]===_0x32fb('0x2b')){_0x3c0aed['from']=_0x2d2fbb['params']['id'];}else{_0x3c0aed['id']=_0x2d2fbb[_0x32fb('0x2c')]['id'];}var _0x3a6d56={'raw':![],'where':_0x3c0aed},_0x4008d7={};_0x4008d7['model']=_[_0x32fb('0x2d')](db[_0x32fb('0x22')][_0x32fb('0x23')]);_0x4008d7['query']=_[_0x32fb('0x2d')](_0x2d2fbb[_0x32fb('0x28')]);_0x4008d7['filters']=_[_0x32fb('0x2e')](_0x4008d7[_0x32fb('0x2f')],_0x4008d7[_0x32fb('0x28')]);_0x3a6d56[_0x32fb('0x30')]=_[_0x32fb('0x2e')](_0x4008d7['model'],qs[_0x32fb('0x31')](_0x2d2fbb['query']['fields']));_0x3a6d56[_0x32fb('0x30')]=_0x3a6d56[_0x32fb('0x30')][_0x32fb('0x32')]?_0x3a6d56[_0x32fb('0x30')]:_0x4008d7[_0x32fb('0x2f')];if(_0x2d2fbb['query'][_0x32fb('0x33')]){_0x3a6d56[_0x32fb('0x34')]=[{'all':!![]}];}_0x3a6d56=_['merge']({},_0x3a6d56,_0x2d2fbb[_0x32fb('0x35')]);return db['OpenchannelInteraction'][_0x32fb('0x36')](_0x3a6d56)[_0x32fb('0x1b')](handleEntityNotFound(_0x42a080,null))[_0x32fb('0x1b')](respondWithResult(_0x42a080,null))[_0x32fb('0x37')](handleError(_0x42a080,null));};exports[_0x32fb('0x38')]=function(_0x3e5a54,_0x345409){return db[_0x32fb('0x22')][_0x32fb('0x38')](_0x3e5a54[_0x32fb('0x39')],{})[_0x32fb('0x1b')](respondWithResult(_0x345409,0xc9))[_0x32fb('0x37')](handleError(_0x345409,null));};exports[_0x32fb('0x1a')]=function(_0xce750,_0x4e4558){if(_0xce750[_0x32fb('0x39')]['id']){delete _0xce750[_0x32fb('0x39')]['id'];}return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0xce750[_0x32fb('0x2c')]['id']}})['then'](handleEntityNotFound(_0x4e4558,null))['then'](saveUpdates(_0xce750[_0x32fb('0x39')],null))[_0x32fb('0x1b')](respondWithResult(_0x4e4558,null))[_0x32fb('0x37')](handleError(_0x4e4558,null));};exports[_0x32fb('0x1c')]=function(_0x23f84a,_0x9275b0){return db['OpenchannelInteraction'][_0x32fb('0x36')]({'where':{'id':_0x23f84a[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x9275b0,null))[_0x32fb('0x1b')](removeEntity(_0x9275b0,null))[_0x32fb('0x37')](handleError(_0x9275b0,null));};exports['describe']=function(_0x39ec80,_0x493101){return db[_0x32fb('0x22')][_0x32fb('0x3a')]()[_0x32fb('0x1b')](respondWithResult(_0x493101,null))['catch'](handleError(_0x493101,null));};exports[_0x32fb('0x3b')]=function(_0x1cd449,_0x29db28){return db[_0x32fb('0x3c')][_0x32fb('0x36')]({'where':{'id':_0x1cd449[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x29db28,null))['then'](function(_0x1b6f73){if(_0x1b6f73){return _0x1b6f73[_0x32fb('0x3b')](_0x1cd449[_0x32fb('0x39')][_0x32fb('0x3d')],_[_0x32fb('0x3e')](_0x1cd449[_0x32fb('0x39')],[_0x32fb('0x3d'),'id'])||{});}})[_0x32fb('0x1b')](respondWithResult(_0x29db28,null))['catch'](handleError(_0x29db28,null));};exports[_0x32fb('0x3f')]=function(_0x488ed4,_0x687452){var _0x4ff4cc={'raw':![],'where':{}};var _0x18fe96={};var _0x582236={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x488ed4[_0x32fb('0x2c')]['id']}})['then'](handleEntityNotFound(_0x687452,null))[_0x32fb('0x1b')](function(_0x26d85c){if(_0x26d85c){_0x18fe96[_0x32fb('0x2f')]=_['keys'](db[_0x32fb('0x3c')][_0x32fb('0x23')]);_0x18fe96['query']=_[_0x32fb('0x2d')](_0x488ed4[_0x32fb('0x28')]);_0x18fe96[_0x32fb('0x40')]=_[_0x32fb('0x2e')](_0x18fe96['model'],_0x18fe96[_0x32fb('0x28')]);_0x4ff4cc[_0x32fb('0x30')]=_['intersection'](_0x18fe96[_0x32fb('0x2f')],qs[_0x32fb('0x31')](_0x488ed4['query'][_0x32fb('0x31')]));_0x4ff4cc[_0x32fb('0x30')]=_0x4ff4cc[_0x32fb('0x30')][_0x32fb('0x32')]?_0x4ff4cc[_0x32fb('0x30')]:_0x18fe96[_0x32fb('0x2f')];if(!_0x488ed4[_0x32fb('0x28')][_0x32fb('0x41')](_0x32fb('0x42'))){_0x4ff4cc[_0x32fb('0x17')]=qs[_0x32fb('0x17')](_0x488ed4[_0x32fb('0x28')]['limit']);_0x4ff4cc[_0x32fb('0x15')]=qs[_0x32fb('0x15')](_0x488ed4[_0x32fb('0x28')][_0x32fb('0x15')]);}_0x4ff4cc[_0x32fb('0x43')]=qs[_0x32fb('0x44')](_0x488ed4[_0x32fb('0x28')][_0x32fb('0x44')]);_0x4ff4cc[_0x32fb('0x45')]=qs[_0x32fb('0x40')](_['pick'](_0x488ed4['query'],_0x18fe96[_0x32fb('0x40')]));_0x4ff4cc[_0x32fb('0x45')][_0x32fb('0x46')]=_0x26d85c['id'];if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x47')]){_0x4ff4cc[_0x32fb('0x45')]=_[_0x32fb('0x48')](_0x4ff4cc['where'],{'$or':_['map'](_0x4ff4cc[_0x32fb('0x30')],function(_0x43f417){var _0x47d416={};_0x47d416[_0x43f417]={'$like':'%'+_0x488ed4[_0x32fb('0x28')][_0x32fb('0x47')]+'%'};return _0x47d416;})});}if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x49')]){var _0x9a8ce1=_0x488ed4[_0x32fb('0x28')]['$gte'][_0x32fb('0x4a')](',');var _0x17926a={};_0x17926a[_0x9a8ce1[0x0]]={'$gte':moment(_0x9a8ce1[0x1])[_0x32fb('0x4b')](_0x32fb('0x4c'))};_0x4ff4cc['where']=_['merge'](_0x4ff4cc['where'],_0x17926a);}_0x4ff4cc=_[_0x32fb('0x48')]({},_0x4ff4cc,_0x488ed4['options']);return db[_0x32fb('0x3c')][_0x32fb('0x4d')]({'where':_0x4ff4cc[_0x32fb('0x45')]})[_0x32fb('0x1b')](function(_0x30455f){_0x582236['count']=_0x30455f;if(_0x488ed4[_0x32fb('0x28')][_0x32fb('0x33')]){_0x4ff4cc[_0x32fb('0x34')]=[{'all':!![]}];}return db[_0x32fb('0x3c')][_0x32fb('0x26')](_0x4ff4cc);})[_0x32fb('0x1b')](function(_0x1a58cd){_0x582236[_0x32fb('0x4e')]=_0x1a58cd;return _0x582236;});}})['then'](respondWithFilteredResult(_0x687452,_0x4ff4cc))[_0x32fb('0x37')](handleError(_0x687452,null));};exports[_0x32fb('0x4f')]=function(_0x10e1c5,_0x1a614c){return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0x10e1c5[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x1a614c,null))['then'](function(_0x421191){if(_0x421191){return _0x421191['setTags'](_0x10e1c5[_0x32fb('0x39')][_0x32fb('0x3d')],_[_0x32fb('0x3e')](_0x10e1c5[_0x32fb('0x39')],[_0x32fb('0x3d'),'id'])||{})['spread'](function(){return db['Tag'][_0x32fb('0x26')]({'attributes':['id','name',_0x32fb('0x50')],'where':{'id':_0x10e1c5[_0x32fb('0x39')][_0x32fb('0x3d')]}});})[_0x32fb('0x1b')](function(_0x55d473){socket[_0x32fb('0x51')](_0x32fb('0x52'),{'id':Number(_0x10e1c5[_0x32fb('0x2c')]['id']),'tags':_0x55d473||[]});return{'id':Number(_0x10e1c5['params']['id']),'tags':_0x55d473||[]};});}})[_0x32fb('0x1b')](respondWithResult(_0x1a614c,null))['catch'](handleError(_0x1a614c,null));};exports['removeTags']=function(_0x46158e,_0x44c00b){return db['OpenchannelInteraction'][_0x32fb('0x36')]({'where':{'id':_0x46158e[_0x32fb('0x2c')]['id']}})[_0x32fb('0x1b')](handleEntityNotFound(_0x44c00b,null))['then'](function(_0x4555e2){if(_0x4555e2){return _0x4555e2[_0x32fb('0x53')](_0x46158e[_0x32fb('0x28')][_0x32fb('0x3d')]);}})[_0x32fb('0x1b')](respondWithStatusCode(_0x44c00b,null))[_0x32fb('0x37')](handleError(_0x44c00b,null));};exports[_0x32fb('0x54')]=function(_0x1d3c5a,_0x49f38c){var _0x42cc2e=moment()[_0x32fb('0x55')]()['toString']();var _0x5a80ac=path[_0x32fb('0x56')](config[_0x32fb('0x57')],_0x32fb('0x58'),'files',_0x32fb('0x59'));var _0x946a30=path[_0x32fb('0x56')](config['root'],_0x32fb('0x58'),'files',_0x32fb('0x5a'));var _0x4d966d=path['join'](_0x5a80ac,_0x42cc2e);var _0x114df3=util[_0x32fb('0x4b')](_0x32fb('0x5b'),_0x1d3c5a[_0x32fb('0x2c')]['id'],_0x42cc2e);var _0x4d68a4=path['join'](_0x5a80ac,_0x114df3);var _0x433cd1=[];_0x433cd1[_0x32fb('0x5c')]({'model':db['User'],'as':_0x32fb('0x5d'),'attributes':['id',_0x32fb('0x5e')],'raw':!![]});_0x433cd1[_0x32fb('0x5c')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x32fb('0x5f'),_0x32fb('0x60')],'raw':!![]});if(_0x1d3c5a[_0x32fb('0x28')][_0x32fb('0x5a')]){_0x433cd1[_0x32fb('0x5c')]({'model':db[_0x32fb('0x61')],'as':'Attachment','raw':!![]});}var _0x1095fd=[{'model':db[_0x32fb('0x3c')],'as':_0x32fb('0x62'),'attributes':['id',_0x32fb('0x39'),_0x32fb('0x63'),_0x32fb('0x64'),_0x32fb('0x65'),_0x32fb('0x66')],'include':_0x433cd1}];_0x1095fd[_0x32fb('0x5c')]({'model':db[_0x32fb('0x67')],'as':_0x32fb('0x68'),'attributes':['id',_0x32fb('0x1e')]});_0x1095fd[_0x32fb('0x5c')]({'model':db[_0x32fb('0x5d')],'as':_0x32fb('0x69'),'attributes':['id','fullname']});return db[_0x32fb('0x22')][_0x32fb('0x36')]({'where':{'id':_0x1d3c5a[_0x32fb('0x2c')]['id']},'include':_0x1095fd})[_0x32fb('0x1b')](handleEntityNotFound(_0x49f38c,null))['then'](function(_0x5cc0e1){if(_0x5cc0e1){var _0x40512c=_0x5cc0e1['get']({'plain':!![]});fs[_0x32fb('0x6a')](_0x4d966d);var _0x224852={'channel':'Openchannel','account':_0x40512c['Account']['name'],'agent':_0x40512c[_0x32fb('0x69')]?_0x40512c[_0x32fb('0x69')][_0x32fb('0x5e')]:_0x32fb('0x6b'),'createdAt':moment(_0x40512c[_0x32fb('0x63')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')](),'closedAt':_0x40512c['closed']?moment(_0x40512c[_0x32fb('0x6d')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')]():'','disposition':_0x40512c[_0x32fb('0x6e')],'visibility':_0x40512c[_0x32fb('0x6f')]?_0x32fb('0x70'):_0x32fb('0x71'),'messages':_(_0x40512c[_0x32fb('0x62')])[_0x32fb('0x47')]({'secret':![]})[_0x32fb('0x21')](function(_0x78619){if(_0x78619[_0x32fb('0x61')]){var _0x3e4ec7=path['join'](_0x946a30,_0x78619['Attachment']['basename']);if(fs[_0x32fb('0x72')](_0x3e4ec7)){fs[_0x32fb('0x73')](_0x3e4ec7)['pipe'](fs[_0x32fb('0x74')](path[_0x32fb('0x56')](_0x4d966d,_0x78619[_0x32fb('0x61')][_0x32fb('0x75')])));}}return{'date':moment(_0x78619[_0x32fb('0x63')])[_0x32fb('0x4b')](_0x32fb('0x4c'))[_0x32fb('0x6c')](),'sender':_0x78619['direction']===_0x32fb('0x76')?_0x78619[_0x32fb('0x5d')]?_0x78619[_0x32fb('0x5d')][_0x32fb('0x5e')]:_0x32fb('0x77'):_0x78619[_0x32fb('0x78')]['firstName']+(_0x78619[_0x32fb('0x78')][_0x32fb('0x60')]?'\x20'+_0x78619[_0x32fb('0x78')][_0x32fb('0x60')]:''),'body':_0x78619[_0x32fb('0x61')]?_0x78619[_0x32fb('0x61')]['basename']:_0x78619[_0x32fb('0x39')],'direction':_0x78619[_0x32fb('0x64')]===_0x32fb('0x76')?'A':'C','secret':_0x78619[_0x32fb('0x65')],'read':_0x78619[_0x32fb('0x66')],'attachment':_0x78619['Attachment']};})[_0x32fb('0x79')]()};return ejs[_0x32fb('0x7a')](path['join'](config[_0x32fb('0x57')],_0x32fb('0x58'),_0x32fb('0x7b'),_0x32fb('0x7c')),{'interaction':_0x224852})[_0x32fb('0x1b')](function(_0x9b93bc){var _0x140218=path[_0x32fb('0x56')](_0x4d966d,_0x32fb('0x7d')+_0x40512c['id']+'-'+_0x42cc2e+'.pdf');var _0x22d3b6={'path':_0x140218,'channel':_0x32fb('0x7e'),'interactionId':_0x40512c['id']};return pdf[_0x32fb('0x7f')](_0x9b93bc,_0x22d3b6);})['then'](function(){return new Promise(function(_0x2feaad,_0xea61c){zipdir(_0x4d966d,{'saveTo':_0x4d68a4},function(_0x4df0ae,_0x1d2bd3){if(_0x4df0ae)return _0xea61c(_0x4df0ae);return _0x2feaad(_0x1d2bd3);});})['then'](function(){return new Promise(function(_0x313b44,_0x15abcc){rimraf(_0x4d966d,function(_0x2d0e53){if(_0x2d0e53)_0x15abcc(_0x2d0e53);return _0x313b44();});});})[_0x32fb('0x1b')](function(){return _0x49f38c[_0x32fb('0x54')](_0x4d68a4,_0x114df3,function(_0x4a9392){if(_0x4a9392){logger[_0x32fb('0x80')](_0x32fb('0x81'),_0x4a9392);}else{fs[_0x32fb('0x82')](_0x4d68a4);}});});});}else{return _0x49f38c[_0x32fb('0x12')](0xc8);}})[_0x32fb('0x37')](handleError(_0x49f38c,null));};
\ No newline at end of file
+var _0x3a8f=['count','set','Content-Range','json','update','then','destroy','end','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','openchannel','query','user','catch','show','from','params','keys','model','fields','attributes','includeAll','include','options','find','body','describe','addMessage','OpenchannelMessage','intersection','length','hasOwnProperty','nolimit','sort','where','filters','pick','OpenchannelInteractionId','filter','merge','$gte','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','omit','spread','Tag','color','ids','openchannelInteractionTags:save','removeTags','download','toString','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','lastName','Attachment','Messages','createdAt','direction','Account','Owner','get','mkdirSync','Openchannel','format','closed','disposition','threadId','Private','basename','existsSync','pipe','createWriteStream','out','System','firstName','secret','value','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','rimraf','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','offset','limit','undefined'];(function(_0x289f60,_0x537bc8){var _0x74917c=function(_0x39dc0a){while(--_0x39dc0a){_0x289f60['push'](_0x289f60['shift']());}};_0x74917c(++_0x537bc8);}(_0x3a8f,0xe6));var _0xf3a8=function(_0x5c98c6,_0x353093){_0x5c98c6=_0x5c98c6-0x0;var _0xdb2b91=_0x3a8f[_0x5c98c6];return _0xdb2b91;};'use strict';var rimraf=require(_0xf3a8('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var util=require('util');var path=require(_0xf3a8('0x1'));var ejs=require(_0xf3a8('0x2'));var fs=require('fs');var _=require(_0xf3a8('0x3'));var Redis=require(_0xf3a8('0x4'));var interaction=require(_0xf3a8('0x5'));var qs=require('../../components/parsers/qs');var pdf=require(_0xf3a8('0x6'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xf3a8('0x7')]=_[_0xf3a8('0x8')](config[_0xf3a8('0x7')],{'host':_0xf3a8('0x9'),'port':0x18eb});var socket=require(_0xf3a8('0xa'))(new Redis(config[_0xf3a8('0x7')]));require(_0xf3a8('0xb'))[_0xf3a8('0xc')](socket);function respondWithStatusCode(_0x3be9eb,_0x89991c){_0x89991c=_0x89991c||0xcc;return function(_0x528de8){if(_0x528de8){return _0x3be9eb[_0xf3a8('0xd')](_0x89991c);}return _0x3be9eb[_0xf3a8('0xe')](_0x89991c)['end']();};}function respondWithResult(_0x78a59a,_0xb1545){_0xb1545=_0xb1545||0xc8;return function(_0x1fc552){if(_0x1fc552){return _0x78a59a[_0xf3a8('0xe')](_0xb1545)['json'](_0x1fc552);}};}function respondWithFilteredResult(_0x135bca,_0xa5a0c0){return function(_0x4761ce){if(_0x4761ce){var _0x3eb8e7=typeof _0xa5a0c0[_0xf3a8('0xf')]==='undefined'&&typeof _0xa5a0c0[_0xf3a8('0x10')]===_0xf3a8('0x11');var _0x5594c5=_0x4761ce[_0xf3a8('0x12')];var _0x11848d=_0x3eb8e7?0x0:_0xa5a0c0[_0xf3a8('0xf')];var _0x472621=_0x3eb8e7?_0x4761ce[_0xf3a8('0x12')]:_0xa5a0c0[_0xf3a8('0xf')]+_0xa5a0c0['limit'];var _0x28f77d;if(_0x472621>=_0x5594c5){_0x472621=_0x5594c5;_0x28f77d=0xc8;}else{_0x28f77d=0xce;}_0x135bca[_0xf3a8('0xe')](_0x28f77d);return _0x135bca[_0xf3a8('0x13')](_0xf3a8('0x14'),_0x11848d+'-'+_0x472621+'/'+_0x5594c5)[_0xf3a8('0x15')](_0x4761ce);}return null;};}function saveUpdates(_0x3af243){return function(_0x45725c){if(_0x45725c){return _0x45725c[_0xf3a8('0x16')](_0x3af243)[_0xf3a8('0x17')](function(_0x1062da){return _0x1062da;});}return null;};}function removeEntity(_0x5815d7){return function(_0x42cc60){if(_0x42cc60){return _0x42cc60[_0xf3a8('0x18')]()[_0xf3a8('0x17')](function(){_0x5815d7['status'](0xcc)[_0xf3a8('0x19')]();});}};}function handleEntityNotFound(_0x5ce944){return function(_0x10b46e){if(!_0x10b46e){_0x5ce944['sendStatus'](0x194);}return _0x10b46e;};}function handleError(_0x325aa5,_0x143cbe){_0x143cbe=_0x143cbe||0x1f4;return function(_0x22eaa5){logger[_0xf3a8('0x1a')](_0x22eaa5[_0xf3a8('0x1b')]);if(_0x22eaa5[_0xf3a8('0x1c')]){delete _0x22eaa5[_0xf3a8('0x1c')];}_0x325aa5[_0xf3a8('0xe')](_0x143cbe)[_0xf3a8('0x1d')](_0x22eaa5);};}exports[_0xf3a8('0x1e')]=function(_0x1ab53e,_0x2ba766){var _0x49e206={};var _0x15a3b4=_[_0xf3a8('0x1f')](db[_0xf3a8('0x20')][_0xf3a8('0x21')],function(_0x286003){return{'name':_0x286003[_0xf3a8('0x22')],'type':_0x286003[_0xf3a8('0x23')][_0xf3a8('0x24')]};});_0x49e206=qs[_0xf3a8('0x25')](_0x15a3b4,_0x1ab53e);return interaction[_0xf3a8('0x26')](_0xf3a8('0x27'),_0x1ab53e[_0xf3a8('0x28')],_0x1ab53e[_0xf3a8('0x29')],_0x49e206,_0x15a3b4)[_0xf3a8('0x17')](respondWithFilteredResult(_0x2ba766,_0x49e206))[_0xf3a8('0x2a')](handleError(_0x2ba766,null));};exports[_0xf3a8('0x2b')]=function(_0x497763,_0x5df357){var _0x472384={};if(_0x497763[_0xf3a8('0x28')][_0xf3a8('0x23')]&&_0x497763[_0xf3a8('0x28')][_0xf3a8('0x23')]===_0xf3a8('0x2c')){_0x472384[_0xf3a8('0x2c')]=_0x497763['params']['id'];}else{_0x472384['id']=_0x497763[_0xf3a8('0x2d')]['id'];}var _0x5855c3={'raw':![],'where':_0x472384},_0x52421={};_0x52421['model']=_[_0xf3a8('0x2e')](db[_0xf3a8('0x20')][_0xf3a8('0x21')]);_0x52421[_0xf3a8('0x28')]=_[_0xf3a8('0x2e')](_0x497763['query']);_0x52421['filters']=_['intersection'](_0x52421[_0xf3a8('0x2f')],_0x52421[_0xf3a8('0x28')]);_0x5855c3['attributes']=_['intersection'](_0x52421[_0xf3a8('0x2f')],qs[_0xf3a8('0x30')](_0x497763['query'][_0xf3a8('0x30')]));_0x5855c3[_0xf3a8('0x31')]=_0x5855c3[_0xf3a8('0x31')]['length']?_0x5855c3['attributes']:_0x52421[_0xf3a8('0x2f')];if(_0x497763[_0xf3a8('0x28')][_0xf3a8('0x32')]){_0x5855c3[_0xf3a8('0x33')]=[{'all':!![]}];}_0x5855c3=_['merge']({},_0x5855c3,_0x497763[_0xf3a8('0x34')]);return db[_0xf3a8('0x20')][_0xf3a8('0x35')](_0x5855c3)[_0xf3a8('0x17')](handleEntityNotFound(_0x5df357,null))[_0xf3a8('0x17')](respondWithResult(_0x5df357,null))[_0xf3a8('0x2a')](handleError(_0x5df357,null));};exports['create']=function(_0x495969,_0x397893){return db['OpenchannelInteraction']['create'](_0x495969[_0xf3a8('0x36')],{})[_0xf3a8('0x17')](respondWithResult(_0x397893,0xc9))[_0xf3a8('0x2a')](handleError(_0x397893,null));};exports[_0xf3a8('0x16')]=function(_0x146372,_0x2ad83d){if(_0x146372['body']['id']){delete _0x146372[_0xf3a8('0x36')]['id'];}return db['OpenchannelInteraction'][_0xf3a8('0x35')]({'where':{'id':_0x146372[_0xf3a8('0x2d')]['id']}})[_0xf3a8('0x17')](handleEntityNotFound(_0x2ad83d,null))[_0xf3a8('0x17')](saveUpdates(_0x146372['body'],null))[_0xf3a8('0x17')](respondWithResult(_0x2ad83d,null))[_0xf3a8('0x2a')](handleError(_0x2ad83d,null));};exports['destroy']=function(_0x12e467,_0x5a5ebd){return db['OpenchannelInteraction'][_0xf3a8('0x35')]({'where':{'id':_0x12e467[_0xf3a8('0x2d')]['id']}})[_0xf3a8('0x17')](handleEntityNotFound(_0x5a5ebd,null))[_0xf3a8('0x17')](removeEntity(_0x5a5ebd,null))[_0xf3a8('0x2a')](handleError(_0x5a5ebd,null));};exports[_0xf3a8('0x37')]=function(_0x3a74c1,_0x36f56b){return db[_0xf3a8('0x20')][_0xf3a8('0x37')]()[_0xf3a8('0x17')](respondWithResult(_0x36f56b,null))[_0xf3a8('0x2a')](handleError(_0x36f56b,null));};exports[_0xf3a8('0x38')]=function(_0xb2b829,_0xd2a674){return db[_0xf3a8('0x39')][_0xf3a8('0x35')]({'where':{'id':_0xb2b829[_0xf3a8('0x2d')]['id']}})[_0xf3a8('0x17')](handleEntityNotFound(_0xd2a674,null))[_0xf3a8('0x17')](function(_0x143801){if(_0x143801){return _0x143801['addMessage'](_0xb2b829[_0xf3a8('0x36')]['ids'],_['omit'](_0xb2b829['body'],['ids','id'])||{});}})[_0xf3a8('0x17')](respondWithResult(_0xd2a674,null))[_0xf3a8('0x2a')](handleError(_0xd2a674,null));};exports['getMessages']=function(_0x12fb10,_0x34221e){var _0x1682c5={'raw':![],'where':{}};var _0x144b3c={};var _0x4e36ec={'count':0x0,'rows':[]};return db[_0xf3a8('0x20')]['findOne']({'where':{'id':_0x12fb10['params']['id']}})[_0xf3a8('0x17')](handleEntityNotFound(_0x34221e,null))[_0xf3a8('0x17')](function(_0x4f45bc){if(_0x4f45bc){_0x144b3c[_0xf3a8('0x2f')]=_[_0xf3a8('0x2e')](db[_0xf3a8('0x39')][_0xf3a8('0x21')]);_0x144b3c[_0xf3a8('0x28')]=_['keys'](_0x12fb10[_0xf3a8('0x28')]);_0x144b3c['filters']=_['intersection'](_0x144b3c[_0xf3a8('0x2f')],_0x144b3c[_0xf3a8('0x28')]);_0x1682c5[_0xf3a8('0x31')]=_[_0xf3a8('0x3a')](_0x144b3c[_0xf3a8('0x2f')],qs[_0xf3a8('0x30')](_0x12fb10['query']['fields']));_0x1682c5[_0xf3a8('0x31')]=_0x1682c5[_0xf3a8('0x31')][_0xf3a8('0x3b')]?_0x1682c5[_0xf3a8('0x31')]:_0x144b3c[_0xf3a8('0x2f')];if(!_0x12fb10[_0xf3a8('0x28')][_0xf3a8('0x3c')](_0xf3a8('0x3d'))){_0x1682c5[_0xf3a8('0x10')]=qs[_0xf3a8('0x10')](_0x12fb10[_0xf3a8('0x28')][_0xf3a8('0x10')]);_0x1682c5[_0xf3a8('0xf')]=qs[_0xf3a8('0xf')](_0x12fb10[_0xf3a8('0x28')]['offset']);}_0x1682c5['order']=qs[_0xf3a8('0x3e')](_0x12fb10[_0xf3a8('0x28')][_0xf3a8('0x3e')]);_0x1682c5[_0xf3a8('0x3f')]=qs[_0xf3a8('0x40')](_[_0xf3a8('0x41')](_0x12fb10['query'],_0x144b3c['filters']));_0x1682c5[_0xf3a8('0x3f')][_0xf3a8('0x42')]=_0x4f45bc['id'];if(_0x12fb10[_0xf3a8('0x28')][_0xf3a8('0x43')]){_0x1682c5['where']=_[_0xf3a8('0x44')](_0x1682c5['where'],{'$or':_[_0xf3a8('0x1f')](_0x1682c5['attributes'],function(_0x3ea22b){var _0x189cd9={};_0x189cd9[_0x3ea22b]={'$like':'%'+_0x12fb10[_0xf3a8('0x28')]['filter']+'%'};return _0x189cd9;})});}if(_0x12fb10[_0xf3a8('0x28')]['$gte']){var _0x5cda3d=_0x12fb10[_0xf3a8('0x28')][_0xf3a8('0x45')]['split'](',');var _0x17e365={};_0x17e365[_0x5cda3d[0x0]]={'$gte':moment(_0x5cda3d[0x1])['format'](_0xf3a8('0x46'))};_0x1682c5['where']=_[_0xf3a8('0x44')](_0x1682c5[_0xf3a8('0x3f')],_0x17e365);}_0x1682c5=_[_0xf3a8('0x44')]({},_0x1682c5,_0x12fb10['options']);return db[_0xf3a8('0x39')][_0xf3a8('0x12')]({'where':_0x1682c5[_0xf3a8('0x3f')]})[_0xf3a8('0x17')](function(_0x2ba7c4){_0x4e36ec[_0xf3a8('0x12')]=_0x2ba7c4;if(_0x12fb10['query'][_0xf3a8('0x32')]){_0x1682c5['include']=[{'all':!![]}];}return db[_0xf3a8('0x39')][_0xf3a8('0x26')](_0x1682c5);})[_0xf3a8('0x17')](function(_0x3b1db4){_0x4e36ec[_0xf3a8('0x47')]=_0x3b1db4;return _0x4e36ec;});}})[_0xf3a8('0x17')](respondWithFilteredResult(_0x34221e,_0x1682c5))[_0xf3a8('0x2a')](handleError(_0x34221e,null));};exports[_0xf3a8('0x48')]=function(_0x58d1bf,_0x1702dd){return db[_0xf3a8('0x20')][_0xf3a8('0x35')]({'where':{'id':_0x58d1bf[_0xf3a8('0x2d')]['id']}})[_0xf3a8('0x17')](handleEntityNotFound(_0x1702dd,null))[_0xf3a8('0x17')](function(_0x5c306a){if(_0x5c306a){return _0x5c306a['setTags'](_0x58d1bf['body']['ids'],_[_0xf3a8('0x49')](_0x58d1bf[_0xf3a8('0x36')],['ids','id'])||{})[_0xf3a8('0x4a')](function(){return db[_0xf3a8('0x4b')][_0xf3a8('0x26')]({'attributes':['id','name',_0xf3a8('0x4c')],'where':{'id':_0x58d1bf[_0xf3a8('0x36')][_0xf3a8('0x4d')]}});})[_0xf3a8('0x17')](function(_0x1f7e37){socket['emit'](_0xf3a8('0x4e'),{'id':Number(_0x58d1bf['params']['id']),'tags':_0x1f7e37||[]});return{'id':Number(_0x58d1bf[_0xf3a8('0x2d')]['id']),'tags':_0x1f7e37||[]};});}})[_0xf3a8('0x17')](respondWithResult(_0x1702dd,null))[_0xf3a8('0x2a')](handleError(_0x1702dd,null));};exports[_0xf3a8('0x4f')]=function(_0x3666dc,_0x3cb67f){return db[_0xf3a8('0x20')]['find']({'where':{'id':_0x3666dc[_0xf3a8('0x2d')]['id']}})['then'](handleEntityNotFound(_0x3cb67f,null))[_0xf3a8('0x17')](function(_0x368ab6){if(_0x368ab6){return _0x368ab6['removeTags'](_0x3666dc[_0xf3a8('0x28')][_0xf3a8('0x4d')]);}})[_0xf3a8('0x17')](respondWithStatusCode(_0x3cb67f,null))[_0xf3a8('0x2a')](handleError(_0x3cb67f,null));};exports[_0xf3a8('0x50')]=function(_0x2c591d,_0x1893a2){var _0x278c35=moment()['unix']()[_0xf3a8('0x51')]();var _0x529b56=path[_0xf3a8('0x52')](config[_0xf3a8('0x53')],_0xf3a8('0x54'),'files',_0xf3a8('0x55'));var _0x42a68f=path[_0xf3a8('0x52')](config[_0xf3a8('0x53')],_0xf3a8('0x54'),_0xf3a8('0x56'),_0xf3a8('0x57'));var _0x262034=path[_0xf3a8('0x52')](_0x529b56,_0x278c35);var _0xc21ad4=util['format'](_0xf3a8('0x58'),_0x2c591d[_0xf3a8('0x2d')]['id'],_0x278c35);var _0x23f7a1=path[_0xf3a8('0x52')](_0x529b56,_0xc21ad4);var _0x516584=[];_0x516584[_0xf3a8('0x59')]({'model':db[_0xf3a8('0x5a')],'as':_0xf3a8('0x5a'),'attributes':['id',_0xf3a8('0x5b')],'raw':!![]});_0x516584[_0xf3a8('0x59')]({'model':db[_0xf3a8('0x5c')],'as':_0xf3a8('0x5d'),'attributes':['id','firstName',_0xf3a8('0x5e')],'raw':!![]});if(_0x2c591d[_0xf3a8('0x28')][_0xf3a8('0x57')]){_0x516584[_0xf3a8('0x59')]({'model':db[_0xf3a8('0x5f')],'as':'Attachment','raw':!![]});}var _0x563dcb=[{'model':db[_0xf3a8('0x39')],'as':_0xf3a8('0x60'),'attributes':['id',_0xf3a8('0x36'),_0xf3a8('0x61'),_0xf3a8('0x62'),'secret','read'],'include':_0x516584}];_0x563dcb[_0xf3a8('0x59')]({'model':db['OpenchannelAccount'],'as':_0xf3a8('0x63'),'attributes':['id',_0xf3a8('0x1c')]});_0x563dcb[_0xf3a8('0x59')]({'model':db[_0xf3a8('0x5a')],'as':_0xf3a8('0x64'),'attributes':['id','fullname']});return db[_0xf3a8('0x20')][_0xf3a8('0x35')]({'where':{'id':_0x2c591d[_0xf3a8('0x2d')]['id']},'include':_0x563dcb})[_0xf3a8('0x17')](handleEntityNotFound(_0x1893a2,null))[_0xf3a8('0x17')](function(_0x4c73e7){if(_0x4c73e7){var _0x168627=_0x4c73e7[_0xf3a8('0x65')]({'plain':!![]});fs[_0xf3a8('0x66')](_0x262034);var _0x4b3be9={'channel':_0xf3a8('0x67'),'account':_0x168627[_0xf3a8('0x63')]['name'],'agent':_0x168627['Owner']?_0x168627[_0xf3a8('0x64')][_0xf3a8('0x5b')]:'N.A.','createdAt':moment(_0x168627[_0xf3a8('0x61')])[_0xf3a8('0x68')](_0xf3a8('0x46'))[_0xf3a8('0x51')](),'closedAt':_0x168627[_0xf3a8('0x69')]?moment(_0x168627['closedAt'])[_0xf3a8('0x68')](_0xf3a8('0x46'))[_0xf3a8('0x51')]():'','disposition':_0x168627[_0xf3a8('0x6a')],'visibility':_0x168627[_0xf3a8('0x6b')]?'Public':_0xf3a8('0x6c'),'messages':_(_0x168627[_0xf3a8('0x60')])['filter']({'secret':![]})[_0xf3a8('0x1f')](function(_0x49033d){if(_0x49033d[_0xf3a8('0x5f')]){var _0x86b1b1=path[_0xf3a8('0x52')](_0x42a68f,_0x49033d['Attachment'][_0xf3a8('0x6d')]);if(fs[_0xf3a8('0x6e')](_0x86b1b1)){fs['createReadStream'](_0x86b1b1)[_0xf3a8('0x6f')](fs[_0xf3a8('0x70')](path['join'](_0x262034,_0x49033d[_0xf3a8('0x5f')][_0xf3a8('0x6d')])));}}return{'date':moment(_0x49033d['createdAt'])[_0xf3a8('0x68')](_0xf3a8('0x46'))[_0xf3a8('0x51')](),'sender':_0x49033d[_0xf3a8('0x62')]===_0xf3a8('0x71')?_0x49033d[_0xf3a8('0x5a')]?_0x49033d[_0xf3a8('0x5a')][_0xf3a8('0x5b')]:_0xf3a8('0x72'):_0x49033d[_0xf3a8('0x5d')][_0xf3a8('0x73')]+(_0x49033d[_0xf3a8('0x5d')][_0xf3a8('0x5e')]?'\x20'+_0x49033d[_0xf3a8('0x5d')][_0xf3a8('0x5e')]:''),'body':_0x49033d[_0xf3a8('0x5f')]?_0x49033d[_0xf3a8('0x5f')][_0xf3a8('0x6d')]:_0x49033d['body'],'direction':_0x49033d['direction']===_0xf3a8('0x71')?'A':'C','secret':_0x49033d[_0xf3a8('0x74')],'read':_0x49033d['read'],'attachment':_0x49033d[_0xf3a8('0x5f')]};})[_0xf3a8('0x75')]()};return ejs['renderFile'](path['join'](config['root'],'server',_0xf3a8('0x76'),_0xf3a8('0x77')),{'interaction':_0x4b3be9})[_0xf3a8('0x17')](function(_0x9c938d){var _0x3f01f8=path[_0xf3a8('0x52')](_0x262034,_0xf3a8('0x78')+_0x168627['id']+'-'+_0x278c35+'.pdf');var _0x4f3ffc={'path':_0x3f01f8,'channel':_0xf3a8('0x67'),'interactionId':_0x168627['id']};return pdf[_0xf3a8('0x79')](_0x9c938d,_0x4f3ffc);})[_0xf3a8('0x17')](function(){return new Promise(function(_0x2ab395,_0x4045c4){zipdir(_0x262034,{'saveTo':_0x23f7a1},function(_0x30344f,_0x450c33){if(_0x30344f)return _0x4045c4(_0x30344f);return _0x2ab395(_0x450c33);});})[_0xf3a8('0x17')](function(){return new Promise(function(_0x170bb3,_0xb95e9e){rimraf(_0x262034,function(_0x963138){if(_0x963138)_0xb95e9e(_0x963138);return _0x170bb3();});});})['then'](function(){return _0x1893a2[_0xf3a8('0x50')](_0x23f7a1,_0xc21ad4,function(_0x4472c8){if(_0x4472c8){logger[_0xf3a8('0x1a')](_0xf3a8('0x7a'),_0x4472c8);}else{fs[_0xf3a8('0x7b')](_0x23f7a1);}});});});}else{return _0x1893a2[_0xf3a8('0xd')](0xc8);}})[_0xf3a8('0x2a')](handleError(_0x1893a2,null));};
\ No newline at end of file
index e7dd40c..2a088a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6df=['setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','OpenchannelInteraction','update','getUsers'];(function(_0x3c99dd,_0x1aa50d){var _0x5ef455=function(_0x2d01d0){while(--_0x2d01d0){_0x3c99dd['push'](_0x3c99dd['shift']());}};_0x5ef455(++_0x1aa50d);}(_0xe6df,0x10e));var _0xfe6d=function(_0x980ddd,_0x5cbc5e){_0x980ddd=_0x980ddd-0x0;var _0x32575a=_0xe6df[_0x980ddd];return _0x32575a;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db'][_0xfe6d('0x0')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xfe6d('0x1'),'afterDestroy':'remove'};function emitEvent(_0x1c9d5d){return function(_0x4f2e05,_0xcfbd82,_0x42933c){_0x4f2e05[_0xfe6d('0x2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x6667a5){_0x4f2e05[_0xfe6d('0x3')](_0xfe6d('0x4'),_0x6667a5[_0xfe6d('0x5')](function(_0x308fe1){return{'id':_0x308fe1['id']};}));return OpenchannelMessage[_0xfe6d('0x6')]({'where':{'OpenchannelInteractionId':_0x4f2e05['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x35a7d6){_0x4f2e05[_0xfe6d('0x3')](_0xfe6d('0x7'),_0x35a7d6['length']);OpenchannelInteractionEvents['emit'](_0x1c9d5d+':'+_0x4f2e05['id'],_0x4f2e05);OpenchannelInteractionEvents[_0xfe6d('0x8')](_0x1c9d5d,_0x4f2e05);_0x42933c(null);})[_0xfe6d('0x9')](_0x42933c(null));};}for(var e in events){if(events[_0xfe6d('0xa')](e)){var event=events[e];OpenchannelInteraction[_0xfe6d('0xb')](e,emitEvent(event));}}module[_0xfe6d('0xc')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xf7c0=['getUsers','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','remove'];(function(_0x3cc9ec,_0x5991d5){var _0x80b67=function(_0x4ea072){while(--_0x4ea072){_0x3cc9ec['push'](_0x3cc9ec['shift']());}};_0x80b67(++_0x5991d5);}(_0xf7c0,0x191));var _0x0f7c=function(_0x344cb8,_0x1f54af){_0x344cb8=_0x344cb8-0x0;var _0x264f32=_0xf7c0[_0x344cb8];return _0x264f32;};'use strict';var EventEmitter=require(_0x0f7c('0x0'));var OpenchannelInteraction=require(_0x0f7c('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0x0f7c('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x0f7c('0x3')](0x0);var events={'afterCreate':_0x0f7c('0x4'),'afterUpdate':_0x0f7c('0x5'),'afterDestroy':_0x0f7c('0x6')};function emitEvent(_0x4c7c0f){return function(_0x20b9c4,_0x21be9c,_0x5e9c12){_0x20b9c4[_0x0f7c('0x7')]({'attributes':['id'],'raw':!![]})[_0x0f7c('0x8')](function(_0xc67395){_0x20b9c4[_0x0f7c('0x9')](_0x0f7c('0xa'),_0xc67395[_0x0f7c('0xb')](function(_0x141ed9){return{'id':_0x141ed9['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x20b9c4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0f7c('0x8')](function(_0xaacf51){_0x20b9c4[_0x0f7c('0x9')](_0x0f7c('0xc'),_0xaacf51[_0x0f7c('0xd')]);OpenchannelInteractionEvents[_0x0f7c('0xe')](_0x4c7c0f+':'+_0x20b9c4['id'],_0x20b9c4);OpenchannelInteractionEvents['emit'](_0x4c7c0f,_0x20b9c4);_0x5e9c12(null);})[_0x0f7c('0xf')](_0x5e9c12(null));};}for(var e in events){if(events[_0x0f7c('0x10')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index ec3824e..689bbb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75bc=['../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5df99e,_0x235d0f){var _0x24d7a0=function(_0xce6efa){while(--_0xce6efa){_0x5df99e['push'](_0x5df99e['shift']());}};_0x24d7a0(++_0x235d0f);}(_0x75bc,0x10f));var _0xc75b=function(_0x3d3179,_0x5e3c51){_0x3d3179=_0x3d3179-0x0;var _0x5bde8e=_0x75bc[_0x3d3179];return _0x5bde8e;};'use strict';var _=require(_0xc75b('0x0'));var util=require(_0xc75b('0x1'));var logger=require(_0xc75b('0x2'))(_0xc75b('0x3'));var moment=require(_0xc75b('0x4'));var BPromise=require(_0xc75b('0x5'));var rp=require(_0xc75b('0x6'));var fs=require('fs');var path=require(_0xc75b('0x7'));var rimraf=require(_0xc75b('0x8'));var config=require(_0xc75b('0x9'));var attributes=require(_0xc75b('0xa'));module[_0xc75b('0xb')]=function(_0x2f7861,_0x2b008){return _0x2f7861[_0xc75b('0xc')](_0xc75b('0xd'),attributes,{'tableName':_0xc75b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc75b('0xf'),'collate':_0xc75b('0x10'),'hooks':{'beforeUpdate':function(_0x979d2b,_0x400d6e,_0x4fd9d4){if(_0x979d2b[_0xc75b('0x11')]('closed')){_0x979d2b[_0xc75b('0x12')]=moment()[_0xc75b('0x13')]('YYYY-MM-DD\x20HH:mm:ss');}_0x4fd9d4(null,_0x979d2b);}}});};
\ No newline at end of file
+var _0xb9b6=['utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelInteraction.attributes','OpenchannelInteraction','openchannel_interactions'];(function(_0x15ef2f,_0x4c1f34){var _0x3c0e96=function(_0xa4bdf2){while(--_0xa4bdf2){_0x15ef2f['push'](_0x15ef2f['shift']());}};_0x3c0e96(++_0x4c1f34);}(_0xb9b6,0x114));var _0x6b9b=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0xb9b6[_0xb24a3e];return _0x4038d7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6b9b('0x0'))(_0x6b9b('0x1'));var moment=require(_0x6b9b('0x2'));var BPromise=require(_0x6b9b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6b9b('0x4'));var rimraf=require(_0x6b9b('0x5'));var config=require('../../config/environment');var attributes=require(_0x6b9b('0x6'));module['exports']=function(_0x4cc5a3,_0x31e159){return _0x4cc5a3['define'](_0x6b9b('0x7'),attributes,{'tableName':_0x6b9b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6b9b('0x9'),'collate':_0x6b9b('0xa'),'hooks':{'beforeUpdate':function(_0x27e35b,_0x29884b,_0x5edc26){if(_0x27e35b[_0x6b9b('0xb')]('closed')){_0x27e35b[_0x6b9b('0xc')]=moment()[_0x6b9b('0xd')](_0x6b9b('0xe'));}_0x5edc26(null,_0x27e35b);}}});};
\ No newline at end of file
index daec472..ee68799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5819=['stringify','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x319311,_0x4242a4){var _0x4f6bf3=function(_0xb4358b){while(--_0xb4358b){_0x319311['push'](_0x319311['shift']());}};_0x4f6bf3(++_0x4242a4);}(_0x5819,0x6b));var _0x9581=function(_0x372b9d,_0x547e8c){_0x372b9d=_0x372b9d-0x0;var _0x48cb9b=_0x5819[_0x372b9d];return _0x48cb9b;};'use strict';var _=require(_0x9581('0x0'));var util=require(_0x9581('0x1'));var moment=require(_0x9581('0x2'));var BPromise=require(_0x9581('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9581('0x4'));var db=require(_0x9581('0x5'))['db'];var utils=require(_0x9581('0x6'));var logger=require(_0x9581('0x7'))(_0x9581('0x8'));var config=require(_0x9581('0x9'));var jayson=require(_0x9581('0xa'));var client=jayson[_0x9581('0xb')][_0x9581('0xc')]({'port':0x232a});config[_0x9581('0xd')]=_[_0x9581('0xe')](config['redis'],{'host':_0x9581('0xf'),'port':0x18eb});var socket=require(_0x9581('0x10'))(new Redis(config[_0x9581('0xd')]));require('./openchannelInteraction.socket')[_0x9581('0x11')](socket);function respondWithRpcPromise(_0x52918d,_0x48723e,_0x3d7b3b){return new BPromise(function(_0x4ec5fc,_0x7310da){return client[_0x9581('0x12')](_0x52918d,_0x3d7b3b)[_0x9581('0x13')](function(_0x1bc3ab){logger[_0x9581('0x14')](_0x9581('0x15'),_0x48723e,_0x9581('0x16'));logger[_0x9581('0x17')](_0x9581('0x18'),_0x48723e,_0x9581('0x16'),JSON[_0x9581('0x19')](_0x1bc3ab));if(_0x1bc3ab['error']){if(_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1b')]===0x1f4){logger[_0x9581('0x1a')](_0x9581('0x15'),_0x48723e,_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);return _0x7310da(_0x1bc3ab[_0x9581('0x1a')]['message']);}logger[_0x9581('0x1a')](_0x9581('0x15'),_0x48723e,_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);return _0x4ec5fc(_0x1bc3ab[_0x9581('0x1a')][_0x9581('0x1c')]);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x48723e,'request\x20sent');_0x4ec5fc(_0x1bc3ab['result'][_0x9581('0x1c')]);}})[_0x9581('0x1d')](function(_0x3bc512){logger[_0x9581('0x1a')]('OpenchannelInteraction,\x20%s,\x20%s',_0x48723e,_0x3bc512);_0x7310da(_0x3bc512);});});}exports[_0x9581('0x1e')]=function(_0x6707e3){var _0x45ebcd=this;return new Promise(function(_0x3700c2,_0x2cefa7){return db[_0x9581('0x1f')][_0x9581('0x20')](_0x6707e3[_0x9581('0x21')],{'raw':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x24')]||null:null,'attributes':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x25')]||null:null,'limit':_0x6707e3[_0x9581('0x22')]?_0x6707e3[_0x9581('0x22')][_0x9581('0x26')]||null:null})[_0x9581('0x13')](function(_0x3af26f){logger['info']('UpdateOpenchannelInteraction',_0x6707e3);logger[_0x9581('0x17')](_0x9581('0x1e'),_0x6707e3,JSON[_0x9581('0x19')](_0x3af26f));_0x3700c2(_0x3af26f);})[_0x9581('0x1d')](function(_0x5a3df7){logger[_0x9581('0x1a')](_0x9581('0x1e'),_0x5a3df7[_0x9581('0x1c')],_0x6707e3);_0x2cefa7(_0x45ebcd[_0x9581('0x1a')](0x1f4,_0x5a3df7['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x37be13){return new Promise(function(_0x10936e,_0x54dfeb){return db[_0x9581('0x1f')]['find']({'where':_0x37be13[_0x9581('0x22')]?_0x37be13['options'][_0x9581('0x24')]||null:null})['then'](function(_0x1d7144){if(_0x1d7144){return _0x1d7144[_0x9581('0x27')](_0x37be13['body'][_0x9581('0x28')],_[_0x9581('0x29')](_0x37be13[_0x9581('0x21')],['ids','id'])||{});}})[_0x9581('0x2a')](function(_0x5278d2){logger[_0x9581('0x14')](_0x9581('0x2b'),_0x37be13);logger['debug'](_0x9581('0x2b'),_0x37be13,JSON['stringify'](_0x5278d2));_0x10936e(_0x5278d2);})[_0x9581('0x1d')](function(_0x4659c8){logger[_0x9581('0x1a')](_0x9581('0x2b'),_0x4659c8['message'],_0x37be13);_0x54dfeb(_this[_0x9581('0x1a')](0x1f4,_0x4659c8['message']));});});};
\ No newline at end of file
+var _0x1d54=['UpdateOpenchannelInteraction','debug','catch','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','omit','ids','spread','AddTags','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','update','body','options','raw','where','attributes','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d54,0xfb));var _0x41d5=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x1d54[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x41d5('0x0'));var util=require(_0x41d5('0x1'));var moment=require(_0x41d5('0x2'));var BPromise=require('bluebird');var rs=require(_0x41d5('0x3'));var fs=require('fs');var Redis=require(_0x41d5('0x4'));var db=require(_0x41d5('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x41d5('0x6'));var jayson=require(_0x41d5('0x7'));var client=jayson['client'][_0x41d5('0x8')]({'port':0x232a});config['redis']=_[_0x41d5('0x9')](config[_0x41d5('0xa')],{'host':_0x41d5('0xb'),'port':0x18eb});var socket=require(_0x41d5('0xc'))(new Redis(config['redis']));require(_0x41d5('0xd'))['register'](socket);function respondWithRpcPromise(_0x44de5a,_0x10e244,_0x5910cb){return new BPromise(function(_0x302ba5,_0x10270c){return client[_0x41d5('0xe')](_0x44de5a,_0x5910cb)['then'](function(_0x867b00){logger[_0x41d5('0xf')](_0x41d5('0x10'),_0x10e244,_0x41d5('0x11'));logger['debug'](_0x41d5('0x12'),_0x10e244,_0x41d5('0x11'),JSON['stringify'](_0x867b00));if(_0x867b00[_0x41d5('0x13')]){if(_0x867b00[_0x41d5('0x13')][_0x41d5('0x14')]===0x1f4){logger['error'](_0x41d5('0x10'),_0x10e244,_0x867b00['error'][_0x41d5('0x15')]);return _0x10270c(_0x867b00[_0x41d5('0x13')][_0x41d5('0x15')]);}logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x10e244,_0x867b00[_0x41d5('0x13')][_0x41d5('0x15')]);return _0x302ba5(_0x867b00[_0x41d5('0x13')][_0x41d5('0x15')]);}else{logger[_0x41d5('0xf')](_0x41d5('0x10'),_0x10e244,_0x41d5('0x11'));_0x302ba5(_0x867b00['result'][_0x41d5('0x15')]);}})['catch'](function(_0x56b474){logger[_0x41d5('0x13')](_0x41d5('0x10'),_0x10e244,_0x56b474);_0x10270c(_0x56b474);});});}exports['UpdateOpenchannelInteraction']=function(_0x52f258){var _0x5221f8=this;return new Promise(function(_0x549e75,_0x338448){return db['OpenchannelInteraction'][_0x41d5('0x16')](_0x52f258[_0x41d5('0x17')],{'raw':_0x52f258[_0x41d5('0x18')]?_0x52f258['options'][_0x41d5('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52f258[_0x41d5('0x18')]?_0x52f258[_0x41d5('0x18')][_0x41d5('0x1a')]||null:null,'attributes':_0x52f258['options']?_0x52f258['options'][_0x41d5('0x1b')]||null:null,'limit':_0x52f258[_0x41d5('0x18')]?_0x52f258[_0x41d5('0x18')]['limit']||null:null})[_0x41d5('0x1c')](function(_0x579719){logger[_0x41d5('0xf')](_0x41d5('0x1d'),_0x52f258);logger[_0x41d5('0x1e')](_0x41d5('0x1d'),_0x52f258,JSON['stringify'](_0x579719));_0x549e75(_0x579719);})[_0x41d5('0x1f')](function(_0x37d85d){logger[_0x41d5('0x13')]('UpdateOpenchannelInteraction',_0x37d85d[_0x41d5('0x15')],_0x52f258);_0x338448(_0x5221f8[_0x41d5('0x13')](0x1f4,_0x37d85d[_0x41d5('0x15')]));});});};exports[_0x41d5('0x20')]=function(_0x531ab5){return new Promise(function(_0x19b88d,_0x16a2cf){return db[_0x41d5('0x21')][_0x41d5('0x22')]({'where':_0x531ab5[_0x41d5('0x18')]?_0x531ab5[_0x41d5('0x18')][_0x41d5('0x1a')]||null:null})[_0x41d5('0x1c')](function(_0x34f640){if(_0x34f640){return _0x34f640['addTags'](_0x531ab5['body']['ids'],_[_0x41d5('0x23')](_0x531ab5[_0x41d5('0x17')],[_0x41d5('0x24'),'id'])||{});}})[_0x41d5('0x25')](function(_0x41114b){logger[_0x41d5('0xf')]('AddTags',_0x531ab5);logger['debug'](_0x41d5('0x26'),_0x531ab5,JSON[_0x41d5('0x27')](_0x41114b));_0x19b88d(_0x41114b);})[_0x41d5('0x1f')](function(_0x238ec9){logger[_0x41d5('0x13')](_0x41d5('0x26'),_0x238ec9[_0x41d5('0x15')],_0x531ab5);_0x16a2cf(_this[_0x41d5('0x13')](0x1f4,_0x238ec9[_0x41d5('0x15')]));});});};
\ No newline at end of file
index 600f364..96df179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb4=['save','remove','update','emit','register','length','./openchannelInteraction.events'];(function(_0x5565ef,_0x557acf){var _0x29c3df=function(_0xe21cd3){while(--_0xe21cd3){_0x5565ef['push'](_0x5565ef['shift']());}};_0x29c3df(++_0x557acf);}(_0xafb4,0xb5));var _0x4afb=function(_0x2fca9d,_0x1acd79){_0x2fca9d=_0x2fca9d-0x0;var _0x3cb2e9=_0xafb4[_0x2fca9d];return _0x3cb2e9;};'use strict';var OpenchannelInteractionEvents=require(_0x4afb('0x0'));var events=[_0x4afb('0x1'),_0x4afb('0x2'),_0x4afb('0x3')];function createListener(_0x30f5b7,_0x5a748b){return function(_0x446c20){_0x5a748b[_0x4afb('0x4')](_0x30f5b7,_0x446c20);};}function removeListener(_0x156f44,_0x2cc767){return function(){OpenchannelInteractionEvents['removeListener'](_0x156f44,_0x2cc767);};}exports[_0x4afb('0x5')]=function(_0x21bf9c){for(var _0x49cad8=0x0,_0x570434=events[_0x4afb('0x6')];_0x49cad8<_0x570434;_0x49cad8++){var _0xea3004=events[_0x49cad8];var _0xd30172=createListener('openchannelInteraction:'+_0xea3004,_0x21bf9c);OpenchannelInteractionEvents['on'](_0xea3004,_0xd30172);}};
\ No newline at end of file
+var _0x676a=['removeListener','register','openchannelInteraction:','./openchannelInteraction.events','save','remove','emit'];(function(_0x272716,_0x18a4be){var _0x32890b=function(_0x3b9808){while(--_0x3b9808){_0x272716['push'](_0x272716['shift']());}};_0x32890b(++_0x18a4be);}(_0x676a,0xf1));var _0xa676=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x676a[_0x28947d];return _0x12d2ee;};'use strict';var OpenchannelInteractionEvents=require(_0xa676('0x0'));var events=[_0xa676('0x1'),_0xa676('0x2'),'update'];function createListener(_0x1b7458,_0x1a371b){return function(_0x4c21dc){_0x1a371b[_0xa676('0x3')](_0x1b7458,_0x4c21dc);};}function removeListener(_0x26e486,_0x5448a9){return function(){OpenchannelInteractionEvents[_0xa676('0x4')](_0x26e486,_0x5448a9);};}exports[_0xa676('0x5')]=function(_0x9f08d2){for(var _0x3459f9=0x0,_0x1b8086=events['length'];_0x3459f9<_0x1b8086;_0x3459f9++){var _0x143d86=events[_0x3459f9];var _0x1693f5=createListener(_0xa676('0x6')+_0x143d86,_0x9f08d2);OpenchannelInteractionEvents['on'](_0x143d86,_0x1693f5);}};
\ No newline at end of file
index 9abe2ed..0f87a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x221a9f,_0x2a5e1c){var _0x5976c7=function(_0x1c2055){while(--_0x1c2055){_0x221a9f['push'](_0x221a9f['shift']());}};_0x5976c7(++_0x2a5e1c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x50f0a9,_0x2b0c57){_0x50f0a9=_0x50f0a9-0x0;var _0x5a33d9=_0xcb91[_0x50f0a9];return _0x5a33d9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x449d97,_0x3516eb){var _0x502ef2=function(_0xf06db0){while(--_0xf06db0){_0x449d97['push'](_0x449d97['shift']());}};_0x502ef2(++_0x3516eb);}(_0xe706,0xa3));var _0x6e70=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xe706[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index f2354cf..dea1419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0647=['medium','BOOLEAN','ENUM','DATE','STRING','sequelize','TEXT'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0647,0xd0));var _0x7064=function(_0xbeb808,_0x881ddf){_0xbeb808=_0xbeb808-0x0;var _0x5d6909=_0x0647[_0xbeb808];return _0x5d6909;};'use strict';var Sequelize=require(_0x7064('0x0'));module['exports']={'body':{'type':Sequelize[_0x7064('0x1')](_0x7064('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7064('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x7064('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x7064('0x5')]},'providerName':{'type':Sequelize[_0x7064('0x6')]},'providerResponse':{'type':Sequelize[_0x7064('0x1')]}};
\ No newline at end of file
+var _0xf894=['STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xf894,0xfd));var _0x4f89=function(_0x2beefa,_0xf0a6ad){_0x2beefa=_0x2beefa-0x0;var _0x4c1a23=_0xf894[_0x2beefa];return _0x4c1a23;};'use strict';var Sequelize=require(_0x4f89('0x0'));module[_0x4f89('0x1')]={'body':{'type':Sequelize[_0x4f89('0x2')](_0x4f89('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x4f89('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x4f89('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4f89('0x5')]('in',_0x4f89('0x6')),'defaultValue':_0x4f89('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x4f89('0x7')]},'providerName':{'type':Sequelize[_0x4f89('0x8')]},'providerResponse':{'type':Sequelize[_0x4f89('0x2')]}};
\ No newline at end of file
index 8d74284..246b9af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be6=['stringify','error','code','message','result','catch','end','status','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','index','OpenchannelMessage','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','order','where','pick','filter','merge','options','count','include','findAll','rows','show','includeAll','find','create','body','params','describe','openchannel-interactions','accept','openchannel','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','[OPENCHANNELMESSAGE: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','QueryTypes','SELECT','contact','User','agent','fullname','internal','channel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','email','interface','SIP/%s','motionChannel','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x28669c,_0x1f62c4){var _0x4a3af6=function(_0x3e25d5){while(--_0x3e25d5){_0x28669c['push'](_0x28669c['shift']());}};_0x4a3af6(++_0x1f62c4);}(_0x8be6,0x1e9));var _0x68be=function(_0x4022b6,_0x122806){_0x4022b6=_0x4022b6-0x0;var _0x4c8ffa=_0x8be6[_0x4022b6];return _0x4c8ffa;};'use strict';var emlformat=require(_0x68be('0x0'));var rimraf=require(_0x68be('0x1'));var zipdir=require(_0x68be('0x2'));var jsonpatch=require(_0x68be('0x3'));var rp=require(_0x68be('0x4'));var moment=require(_0x68be('0x5'));var BPromise=require(_0x68be('0x6'));var Mustache=require(_0x68be('0x7'));var util=require(_0x68be('0x8'));var path=require(_0x68be('0x9'));var sox=require(_0x68be('0xa'));var csv=require(_0x68be('0xb'));var ejs=require(_0x68be('0xc'));var fs=require('fs');var fs_extra=require(_0x68be('0xd'));var _=require(_0x68be('0xe'));var squel=require(_0x68be('0xf'));var crypto=require(_0x68be('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x68be('0x11'));var toCsv=require(_0x68be('0xb'));var querystring=require(_0x68be('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x68be('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68be('0x14'));var logger=require(_0x68be('0x15'))(_0x68be('0x16'));var utils=require('../../config/utils');var config=require(_0x68be('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x68be('0x18')]=_[_0x68be('0x19')](config[_0x68be('0x18')],{'host':_0x68be('0x1a'),'port':0x18eb});var socket=require(_0x68be('0x1b'))(new Redis(config[_0x68be('0x18')]));require(_0x68be('0x1c'))[_0x68be('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x68be('0x1e')][_0x68be('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x68be('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3c458f,_0x5f1269,_0x2c6451,_0xbfa545){return new BPromise(function(_0x44597c,_0x590cad){var _0x483163=_0xbfa545||client;return _0x483163[_0x68be('0x20')](_0x3c458f,_0x2c6451)['then'](function(_0x5a8508){logger[_0x68be('0x21')](_0x68be('0x22'),_0x5f1269,'request\x20sent');logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x5f1269,'request\x20sent',JSON[_0x68be('0x23')](_0x5a8508));if(_0x5a8508[_0x68be('0x24')]){if(_0x5a8508['error'][_0x68be('0x25')]===0x1f4){logger[_0x68be('0x24')](_0x68be('0x22'),_0x5f1269,_0x5a8508['error'][_0x68be('0x26')]);return _0x590cad(_0x5a8508[_0x68be('0x24')][_0x68be('0x26')]);}logger[_0x68be('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x5f1269,_0x5a8508[_0x68be('0x24')][_0x68be('0x26')]);return _0x44597c(_0x5a8508[_0x68be('0x24')]['message']);}else{logger['info'](_0x68be('0x22'),_0x5f1269,'request\x20sent');_0x44597c(_0x5a8508[_0x68be('0x27')][_0x68be('0x26')]);}})[_0x68be('0x28')](function(_0x1c28ad){logger[_0x68be('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x5f1269,_0x1c28ad);_0x590cad(_0x1c28ad);});});}function respondWithStatusCode(_0x124dcb,_0x25ecf3){_0x25ecf3=_0x25ecf3||0xcc;return function(_0x3c04fa){if(_0x3c04fa){return _0x124dcb['sendStatus'](_0x25ecf3);}return _0x124dcb['status'](_0x25ecf3)[_0x68be('0x29')]();};}function respondWithResult(_0x5185dc,_0x3a3974){_0x3a3974=_0x3a3974||0xc8;return function(_0x2e0559){if(_0x2e0559){return _0x5185dc[_0x68be('0x2a')](_0x3a3974)[_0x68be('0x2b')](_0x2e0559);}};}function respondWithFilteredResult(_0xbac983,_0x2176bf){return function(_0x181340){if(_0x181340){var _0x9ef7c2=typeof _0x2176bf['offset']===_0x68be('0x2c')&&typeof _0x2176bf[_0x68be('0x2d')]===_0x68be('0x2c');var _0x1ec592=_0x181340['count'];var _0x1fff0b=_0x9ef7c2?0x0:_0x2176bf[_0x68be('0x2e')];var _0x3a68de=_0x9ef7c2?_0x181340['count']:_0x2176bf[_0x68be('0x2e')]+_0x2176bf['limit'];var _0x486594;if(_0x3a68de>=_0x1ec592){_0x3a68de=_0x1ec592;_0x486594=0xc8;}else{_0x486594=0xce;}_0xbac983[_0x68be('0x2a')](_0x486594);return _0xbac983[_0x68be('0x2f')](_0x68be('0x30'),_0x1fff0b+'-'+_0x3a68de+'/'+_0x1ec592)[_0x68be('0x2b')](_0x181340);}return null;};}function patchUpdates(_0x20caf2){return function(_0x171601){try{jsonpatch[_0x68be('0x31')](_0x171601,_0x20caf2,!![]);}catch(_0x31c095){return BPromise[_0x68be('0x32')](_0x31c095);}return _0x171601[_0x68be('0x33')]();};}function saveUpdates(_0x56830e,_0xdbbce6){return function(_0x4a46c6){if(_0x4a46c6){return _0x4a46c6[_0x68be('0x34')](_0x56830e)[_0x68be('0x35')](function(_0x56c97f){return _0x56c97f;});}return null;};}function removeEntity(_0x55c9a8,_0x479d4d){return function(_0x5aeea0){if(_0x5aeea0){return _0x5aeea0[_0x68be('0x36')]()['then'](function(){_0x55c9a8[_0x68be('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5092cc,_0x2b3762){return function(_0x24339a){if(!_0x24339a){_0x5092cc[_0x68be('0x37')](0x194);}return _0x24339a;};}function handleError(_0x52353c,_0xf1480a){_0xf1480a=_0xf1480a||0x1f4;return function(_0x46bf17){logger[_0x68be('0x24')](_0x46bf17['stack']);if(_0x46bf17[_0x68be('0x38')]){delete _0x46bf17[_0x68be('0x38')];}_0x52353c[_0x68be('0x2a')](_0xf1480a)[_0x68be('0x39')](_0x46bf17);};}exports[_0x68be('0x3a')]=function(_0x594266,_0x167ffb){var _0x4a4181={},_0x43b507={},_0x4f064f={'count':0x0,'rows':[]};var _0x1ddf54=_['map'](db[_0x68be('0x3b')][_0x68be('0x3c')],function(_0x489f84){return{'name':_0x489f84[_0x68be('0x3d')],'type':_0x489f84[_0x68be('0x3e')][_0x68be('0x3f')]};});_0x43b507[_0x68be('0x40')]=_[_0x68be('0x41')](_0x1ddf54,_0x68be('0x38'));_0x43b507['query']=_[_0x68be('0x42')](_0x594266['query']);_0x43b507[_0x68be('0x43')]=_[_0x68be('0x44')](_0x43b507[_0x68be('0x40')],_0x43b507['query']);_0x4a4181['attributes']=_[_0x68be('0x44')](_0x43b507[_0x68be('0x40')],qs[_0x68be('0x45')](_0x594266[_0x68be('0x46')][_0x68be('0x45')]));_0x4a4181[_0x68be('0x47')]=_0x4a4181['attributes'][_0x68be('0x48')]?_0x4a4181[_0x68be('0x47')]:_0x43b507[_0x68be('0x40')];if(!_0x594266[_0x68be('0x46')][_0x68be('0x49')]('nolimit')){_0x4a4181[_0x68be('0x2d')]=qs['limit'](_0x594266['query'][_0x68be('0x2d')]);_0x4a4181[_0x68be('0x2e')]=qs['offset'](_0x594266[_0x68be('0x46')]['offset']);}_0x4a4181[_0x68be('0x4a')]=qs['sort'](_0x594266['query']['sort']);_0x4a4181[_0x68be('0x4b')]=qs[_0x68be('0x43')](_[_0x68be('0x4c')](_0x594266['query'],_0x43b507[_0x68be('0x43')]),_0x1ddf54);if(_0x594266[_0x68be('0x46')][_0x68be('0x4d')]){_0x4a4181[_0x68be('0x4b')]=_[_0x68be('0x4e')](_0x4a4181[_0x68be('0x4b')],{'$or':_['map'](_0x1ddf54,function(_0xcb9924){if(_0xcb9924['type']!=='VIRTUAL'){var _0x32e49e={};_0x32e49e[_0xcb9924[_0x68be('0x38')]]={'$like':'%'+_0x594266[_0x68be('0x46')][_0x68be('0x4d')]+'%'};return _0x32e49e;}})});}_0x4a4181=_[_0x68be('0x4e')]({},_0x4a4181,_0x594266[_0x68be('0x4f')]);var _0xf1d495={'where':_0x4a4181[_0x68be('0x4b')]};return db[_0x68be('0x3b')][_0x68be('0x50')](_0xf1d495)[_0x68be('0x35')](function(_0x1ccf36){_0x4f064f[_0x68be('0x50')]=_0x1ccf36;if(_0x594266[_0x68be('0x46')]['includeAll']){_0x4a4181[_0x68be('0x51')]=[{'all':!![]}];}return db[_0x68be('0x3b')][_0x68be('0x52')](_0x4a4181);})[_0x68be('0x35')](function(_0x1e15c8){_0x4f064f[_0x68be('0x53')]=_0x1e15c8;return _0x4f064f;})[_0x68be('0x35')](respondWithFilteredResult(_0x167ffb,_0x4a4181))['catch'](handleError(_0x167ffb,null));};exports[_0x68be('0x54')]=function(_0x287c27,_0x30bad5){var _0x59447b={'raw':!![],'where':{'id':_0x287c27['params']['id']}},_0x5ef977={};_0x5ef977[_0x68be('0x40')]=_[_0x68be('0x42')](db[_0x68be('0x3b')][_0x68be('0x3c')]);_0x5ef977[_0x68be('0x46')]=_[_0x68be('0x42')](_0x287c27[_0x68be('0x46')]);_0x5ef977['filters']=_['intersection'](_0x5ef977[_0x68be('0x40')],_0x5ef977[_0x68be('0x46')]);_0x59447b[_0x68be('0x47')]=_[_0x68be('0x44')](_0x5ef977['model'],qs[_0x68be('0x45')](_0x287c27[_0x68be('0x46')]['fields']));_0x59447b[_0x68be('0x47')]=_0x59447b[_0x68be('0x47')][_0x68be('0x48')]?_0x59447b[_0x68be('0x47')]:_0x5ef977[_0x68be('0x40')];if(_0x287c27['query'][_0x68be('0x55')]){_0x59447b[_0x68be('0x51')]=[{'all':!![]}];}_0x59447b=_['merge']({},_0x59447b,_0x287c27[_0x68be('0x4f')]);return db[_0x68be('0x3b')][_0x68be('0x56')](_0x59447b)['then'](handleEntityNotFound(_0x30bad5,null))[_0x68be('0x35')](respondWithResult(_0x30bad5,null))[_0x68be('0x28')](handleError(_0x30bad5,null));};exports['create']=function(_0x480022,_0x587b34){return db[_0x68be('0x3b')][_0x68be('0x57')](_0x480022[_0x68be('0x58')],{})[_0x68be('0x35')](respondWithResult(_0x587b34,0xc9))[_0x68be('0x28')](handleError(_0x587b34,null));};exports[_0x68be('0x34')]=function(_0x5e816c,_0x1afa59){if(_0x5e816c[_0x68be('0x58')]['id']){delete _0x5e816c[_0x68be('0x58')]['id'];}return db[_0x68be('0x3b')]['find']({'where':{'id':_0x5e816c[_0x68be('0x59')]['id']}})[_0x68be('0x35')](handleEntityNotFound(_0x1afa59,null))['then'](saveUpdates(_0x5e816c['body'],null))[_0x68be('0x35')](respondWithResult(_0x1afa59,null))['catch'](handleError(_0x1afa59,null));};exports['destroy']=function(_0x2ad1c0,_0x3babef){return db['OpenchannelMessage'][_0x68be('0x56')]({'where':{'id':_0x2ad1c0[_0x68be('0x59')]['id']}})[_0x68be('0x35')](handleEntityNotFound(_0x3babef,null))[_0x68be('0x35')](removeEntity(_0x3babef,null))['catch'](handleError(_0x3babef,null));};exports[_0x68be('0x5a')]=function(_0xb5611a,_0x69899e){return db['OpenchannelMessage']['describe']()[_0x68be('0x35')](respondWithResult(_0x69899e,null))[_0x68be('0x28')](handleError(_0x69899e,null));};var interaction_log=require(_0x68be('0x15'))(_0x68be('0x5b'));exports[_0x68be('0x5c')]=function(_0x259fdb,_0x1ae6b4,_0x8090bc){var _0x2a5ac8={'agent':{},'channel':_0x68be('0x5d')};if(_0x259fdb[_0x68be('0x58')]['id']){delete _0x259fdb[_0x68be('0x58')]['id'];}_0x259fdb[_0x68be('0x58')]['read']=!![];_0x259fdb[_0x68be('0x58')]['readAt']=moment()[_0x68be('0x5e')](_0x68be('0x5f'));_0x259fdb[_0x68be('0x58')]['UserId']=_0x259fdb['body'][_0x68be('0x60')]||_0x259fdb[_0x68be('0x61')]['id'];_0x2a5ac8['agent']['id']=_0x259fdb['body'][_0x68be('0x60')];return db[_0x68be('0x3b')][_0x68be('0x56')]({'where':{'id':_0x259fdb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1ae6b4,null))['then'](saveUpdates(_0x259fdb['body'],null))['then'](function(_0xdc9df7){if(_0xdc9df7){_0x2a5ac8[_0x68be('0x26')]=_0xdc9df7[_0x68be('0x62')]({'plain':!![]});return db[_0x68be('0x63')][_0x68be('0x56')]({'where':{'id':_0xdc9df7[_0x68be('0x64')]}});}return null;})[_0x68be('0x35')](handleEntityNotFound(_0x1ae6b4,null))[_0x68be('0x35')](function(_0xc6d61d){if(_0xc6d61d){return _0xc6d61d[_0x68be('0x34')]({'UserId':_0x259fdb['body'][_0x68be('0x60')],'read1stAt':_[_0x68be('0x65')](_0xc6d61d[_0x68be('0x66')])?moment()[_0x68be('0x5e')](_0x68be('0x5f')):undefined});}return null;})[_0x68be('0x35')](function(_0x737b29){if(_0x737b29){_0x2a5ac8['interaction']=_0x737b29[_0x68be('0x62')]({'plain':!![]});interaction_log['info'](_0x68be('0x67'),_0x259fdb[_0x68be('0x61')]['id'],_0x259fdb[_0x68be('0x61')]['name'],_0x259fdb[_0x68be('0x61')][_0x68be('0x68')],_0x2a5ac8[_0x68be('0x69')]['id'],_0x259fdb[_0x68be('0x58')]?JSON[_0x68be('0x23')](_0x259fdb[_0x68be('0x58')]):_0x68be('0x6a'));return respondWithRpcPromise(_0x68be('0x6b'),_0x68be('0x6c'),_0x2a5ac8);}return null;})[_0x68be('0x35')](function(_0x2e1b8a){var _0x38a227=_0x68be('0x6d')+_0x2e1b8a[_0x68be('0x26')][_0x68be('0x6e')];return db[_0x68be('0x6f')][_0x68be('0x46')](_0x38a227,{'type':db[_0x68be('0x70')][_0x68be('0x71')][_0x68be('0x72')],'raw':!![]})[_0x68be('0x35')](function(_0x11dfbb){return _0x11dfbb;});})[_0x68be('0x35')](function(_0x35a70f){if(_0x35a70f){_0x2a5ac8[_0x68be('0x26')][_0x68be('0x73')]=_0x35a70f[0x0];if(!_0x259fdb[_0x68be('0x58')][_0x68be('0x60')])return;return db[_0x68be('0x74')][_0x68be('0x56')]({'where':{'id':_0x259fdb[_0x68be('0x58')][_0x68be('0x60')],'role':_0x68be('0x75')},'attributes':['id',_0x68be('0x38'),_0x68be('0x76'),'email',_0x68be('0x77')],'raw':!![]});}return null;})[_0x68be('0x35')](function(_0x3d6546){if(!_0x3d6546)return null;_0x2a5ac8[_0x68be('0x26')]['agent']=_0x3d6546;return _0x2a5ac8;})[_0x68be('0x35')](function(_0x567e0e){if(_0x567e0e){if(_0x259fdb['body']['manual']){_0x2a5ac8[_0x68be('0x26')]['interface']=util[_0x68be('0x5e')]('SIP/%s',_0x259fdb['user'][_0x68be('0x38')]);_0x2a5ac8[_0x68be('0x26')]['channel']=_0x2a5ac8['channel'];_0x2a5ac8[_0x68be('0x26')]['motionChannel']=_0x2a5ac8[_0x68be('0x78')];_0x2a5ac8[_0x68be('0x26')][_0x68be('0x79')]=_0x68be('0x5c');return respondWithRpcPromise(_0x68be('0x7a'),_0x68be('0x7a'),{'event':_0x68be('0x7b'),'message':_0x2a5ac8[_0x68be('0x26')]},client9002)['then'](function(){return _0x2a5ac8;});}return _0x2a5ac8;}return null;})['then'](respondWithResult(_0x1ae6b4,null))[_0x68be('0x28')](handleError(_0x1ae6b4,null));};var interaction_log=require(_0x68be('0x15'))(_0x68be('0x5b'));exports['reject']=function(_0x106002,_0x1518cd,_0x481ac1){var _0x431058={'agent':{},'channel':_0x68be('0x5d')};if(_0x106002[_0x68be('0x58')]['id']){delete _0x106002['body']['id'];}_0x106002[_0x68be('0x58')][_0x68be('0x60')]=_0x106002[_0x68be('0x58')][_0x68be('0x60')]||_0x106002[_0x68be('0x61')]['id'];_0x431058[_0x68be('0x75')]['id']=_0x106002['body'][_0x68be('0x60')];return db[_0x68be('0x3b')][_0x68be('0x56')]({'where':{'id':_0x106002['params']['id'],'UserId':null}})[_0x68be('0x35')](handleEntityNotFound(_0x1518cd,null))['then'](function(_0x42876e){if(_0x42876e){_0x431058[_0x68be('0x26')]=_0x42876e[_0x68be('0x62')]({'plain':!![]});return db[_0x68be('0x63')][_0x68be('0x56')]({'where':{'id':_0x42876e[_0x68be('0x64')]}});}return null;})[_0x68be('0x35')](handleEntityNotFound(_0x1518cd,null))[_0x68be('0x35')](function(_0x1e6254){if(_0x1e6254){_0x431058['interaction']=_0x1e6254[_0x68be('0x62')]({'plain':!![]});interaction_log[_0x68be('0x21')](_0x68be('0x7c'),_0x106002[_0x68be('0x61')]['id'],_0x106002['user'][_0x68be('0x38')],_0x106002[_0x68be('0x61')][_0x68be('0x68')],_0x431058['interaction']['id'],_0x106002[_0x68be('0x58')]?JSON[_0x68be('0x23')](_0x106002[_0x68be('0x58')]):_0x68be('0x6a'));return respondWithRpcPromise(_0x68be('0x7d'),_0x68be('0x7e'),_0x431058);}return null;})[_0x68be('0x35')](function(_0x317599){var _0x3c8aba=_0x68be('0x6d')+_0x317599[_0x68be('0x26')][_0x68be('0x6e')];return db['sequelize'][_0x68be('0x46')](_0x3c8aba,{'type':db[_0x68be('0x70')][_0x68be('0x71')]['SELECT'],'raw':!![]})['then'](function(_0x2aa5e9){return _0x2aa5e9;});})[_0x68be('0x35')](function(_0x147269){if(_0x147269){_0x431058[_0x68be('0x26')]['contact']=_0x147269[0x0];if(!_0x106002[_0x68be('0x58')][_0x68be('0x60')])return;return db[_0x68be('0x74')][_0x68be('0x56')]({'where':{'id':_0x106002[_0x68be('0x58')]['UserId'],'role':'agent'},'attributes':['id','name',_0x68be('0x76'),_0x68be('0x7f'),_0x68be('0x77')],'raw':!![]});}return null;})[_0x68be('0x35')](function(_0x20dcf9){if(!_0x20dcf9)return null;_0x431058[_0x68be('0x26')]['agent']=_0x20dcf9;return _0x431058;})[_0x68be('0x35')](function(_0x5d0bb0){if(_0x5d0bb0){_0x5d0bb0['message'][_0x68be('0x80')]=util[_0x68be('0x5e')](_0x68be('0x81'),_0x106002[_0x68be('0x61')][_0x68be('0x38')]);_0x5d0bb0[_0x68be('0x26')]['channel']=_0x431058[_0x68be('0x78')];_0x5d0bb0[_0x68be('0x26')][_0x68be('0x82')]=_0x431058[_0x68be('0x78')];_0x5d0bb0[_0x68be('0x26')][_0x68be('0x79')]=_0x68be('0x32');respondWithRpcPromise(_0x68be('0x7a'),_0x68be('0x7a'),{'event':'rejectmessage','message':_0x5d0bb0[_0x68be('0x26')]},client9002);return _0x431058;}return null;})[_0x68be('0x35')](respondWithResult(_0x1518cd,null))[_0x68be('0x28')](handleError(_0x1518cd,null));};
\ No newline at end of file
+var _0x289f=['mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','sendStatus','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','OpenchannelMessage','findAll','length','create','body','find','params','destroy','describe','openchannel-interactions','accept','openchannel','read','readAt','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE: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','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','SELECT','event','rejectmessage','eml-format','zip-dir','fast-json-patch','moment','bluebird'];(function(_0x3d3cc9,_0x57b7b2){var _0x2df889=function(_0x4f0adb){while(--_0x4f0adb){_0x3d3cc9['push'](_0x3d3cc9['shift']());}};_0x2df889(++_0x57b7b2);}(_0x289f,0x7d));var _0xf289=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x289f[_0x62c958];return _0x57ec61;};'use strict';var emlformat=require(_0xf289('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf289('0x1'));var jsonpatch=require(_0xf289('0x2'));var rp=require('request-promise');var moment=require(_0xf289('0x3'));var BPromise=require(_0xf289('0x4'));var Mustache=require(_0xf289('0x5'));var util=require(_0xf289('0x6'));var path=require(_0xf289('0x7'));var sox=require(_0xf289('0x8'));var csv=require(_0xf289('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf289('0xa'));var _=require('lodash');var squel=require(_0xf289('0xb'));var crypto=require(_0xf289('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf289('0xd'));var toCsv=require(_0xf289('0x9'));var querystring=require(_0xf289('0xe'));var Papa=require(_0xf289('0xf'));var Redis=require('ioredis');var authService=require(_0xf289('0x10'));var qs=require(_0xf289('0x11'));var as=require(_0xf289('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf289('0x13'))(_0xf289('0x14'));var utils=require(_0xf289('0x15'));var config=require(_0xf289('0x16'));var licenseUtil=require(_0xf289('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xf289('0x18')](config[_0xf289('0x19')],{'host':_0xf289('0x1a'),'port':0x18eb});var socket=require(_0xf289('0x1b'))(new Redis(config[_0xf289('0x19')]));require('./openchannelMessage.socket')[_0xf289('0x1c')](socket);var jayson=require(_0xf289('0x1d'));var client=jayson[_0xf289('0x1e')][_0xf289('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0xf289('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x3581de,_0xcb203,_0x5d40e3,_0x3ee6e3){return new BPromise(function(_0x102e87,_0xa475ca){var _0x5a67e5=_0x3ee6e3||client;return _0x5a67e5[_0xf289('0x20')](_0x3581de,_0x5d40e3)[_0xf289('0x21')](function(_0x14f4d8){logger[_0xf289('0x22')](_0xf289('0x23'),_0xcb203,_0xf289('0x24'));logger[_0xf289('0x25')](_0xf289('0x26'),_0xcb203,_0xf289('0x24'),JSON[_0xf289('0x27')](_0x14f4d8));if(_0x14f4d8[_0xf289('0x28')]){if(_0x14f4d8['error']['code']===0x1f4){logger[_0xf289('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0xcb203,_0x14f4d8[_0xf289('0x28')]['message']);return _0xa475ca(_0x14f4d8[_0xf289('0x28')][_0xf289('0x29')]);}logger[_0xf289('0x28')](_0xf289('0x23'),_0xcb203,_0x14f4d8['error'][_0xf289('0x29')]);return _0x102e87(_0x14f4d8[_0xf289('0x28')]['message']);}else{logger['info'](_0xf289('0x23'),_0xcb203,_0xf289('0x24'));_0x102e87(_0x14f4d8[_0xf289('0x2a')][_0xf289('0x29')]);}})[_0xf289('0x2b')](function(_0x373a2b){logger[_0xf289('0x28')]('OpenchannelMessage,\x20%s,\x20%s',_0xcb203,_0x373a2b);_0xa475ca(_0x373a2b);});});}function respondWithStatusCode(_0x43ad12,_0x336bc6){_0x336bc6=_0x336bc6||0xcc;return function(_0x546022){if(_0x546022){return _0x43ad12['sendStatus'](_0x336bc6);}return _0x43ad12[_0xf289('0x2c')](_0x336bc6)[_0xf289('0x2d')]();};}function respondWithResult(_0x423d8d,_0x3b9c9c){_0x3b9c9c=_0x3b9c9c||0xc8;return function(_0x548bb2){if(_0x548bb2){return _0x423d8d[_0xf289('0x2c')](_0x3b9c9c)[_0xf289('0x2e')](_0x548bb2);}};}function respondWithFilteredResult(_0x1734ba,_0x25d539){return function(_0x21b7b2){if(_0x21b7b2){var _0x469067=typeof _0x25d539[_0xf289('0x2f')]===_0xf289('0x30')&&typeof _0x25d539['limit']===_0xf289('0x30');var _0x1ad2ed=_0x21b7b2['count'];var _0x100b97=_0x469067?0x0:_0x25d539[_0xf289('0x2f')];var _0x103a46=_0x469067?_0x21b7b2[_0xf289('0x31')]:_0x25d539[_0xf289('0x2f')]+_0x25d539[_0xf289('0x32')];var _0xca5979;if(_0x103a46>=_0x1ad2ed){_0x103a46=_0x1ad2ed;_0xca5979=0xc8;}else{_0xca5979=0xce;}_0x1734ba['status'](_0xca5979);return _0x1734ba[_0xf289('0x33')](_0xf289('0x34'),_0x100b97+'-'+_0x103a46+'/'+_0x1ad2ed)[_0xf289('0x2e')](_0x21b7b2);}return null;};}function patchUpdates(_0x4a5731){return function(_0x1f87bf){try{jsonpatch[_0xf289('0x35')](_0x1f87bf,_0x4a5731,!![]);}catch(_0x2bf9eb){return BPromise[_0xf289('0x36')](_0x2bf9eb);}return _0x1f87bf[_0xf289('0x37')]();};}function saveUpdates(_0x3c7a8d,_0x131765){return function(_0x2f4040){if(_0x2f4040){return _0x2f4040[_0xf289('0x38')](_0x3c7a8d)[_0xf289('0x21')](function(_0x1907cf){return _0x1907cf;});}return null;};}function removeEntity(_0x155501,_0x56fbff){return function(_0x579ee3){if(_0x579ee3){return _0x579ee3['destroy']()[_0xf289('0x21')](function(){_0x155501['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fc006,_0x5417f9){return function(_0x3fe785){if(!_0x3fe785){_0x4fc006[_0xf289('0x39')](0x194);}return _0x3fe785;};}function handleError(_0x3bae1f,_0x48b8f5){_0x48b8f5=_0x48b8f5||0x1f4;return function(_0x26496b){logger[_0xf289('0x28')](_0x26496b['stack']);if(_0x26496b[_0xf289('0x3a')]){delete _0x26496b[_0xf289('0x3a')];}_0x3bae1f['status'](_0x48b8f5)[_0xf289('0x3b')](_0x26496b);};}exports[_0xf289('0x3c')]=function(_0x5e7be0,_0x3f2784){var _0x14b885={},_0x413871={},_0x2e1775={'count':0x0,'rows':[]};var _0x55035f=_[_0xf289('0x3d')](db['OpenchannelMessage'][_0xf289('0x3e')],function(_0x404c7d){return{'name':_0x404c7d['fieldName'],'type':_0x404c7d[_0xf289('0x3f')]['key']};});_0x413871[_0xf289('0x40')]=_[_0xf289('0x3d')](_0x55035f,'name');_0x413871[_0xf289('0x41')]=_[_0xf289('0x42')](_0x5e7be0['query']);_0x413871[_0xf289('0x43')]=_[_0xf289('0x44')](_0x413871['model'],_0x413871[_0xf289('0x41')]);_0x14b885['attributes']=_['intersection'](_0x413871[_0xf289('0x40')],qs[_0xf289('0x45')](_0x5e7be0[_0xf289('0x41')][_0xf289('0x45')]));_0x14b885[_0xf289('0x46')]=_0x14b885[_0xf289('0x46')]['length']?_0x14b885[_0xf289('0x46')]:_0x413871['model'];if(!_0x5e7be0[_0xf289('0x41')]['hasOwnProperty']('nolimit')){_0x14b885[_0xf289('0x32')]=qs['limit'](_0x5e7be0[_0xf289('0x41')][_0xf289('0x32')]);_0x14b885[_0xf289('0x2f')]=qs[_0xf289('0x2f')](_0x5e7be0[_0xf289('0x41')][_0xf289('0x2f')]);}_0x14b885[_0xf289('0x47')]=qs['sort'](_0x5e7be0[_0xf289('0x41')][_0xf289('0x48')]);_0x14b885[_0xf289('0x49')]=qs[_0xf289('0x43')](_['pick'](_0x5e7be0['query'],_0x413871['filters']),_0x55035f);if(_0x5e7be0[_0xf289('0x41')][_0xf289('0x4a')]){_0x14b885[_0xf289('0x49')]=_[_0xf289('0x4b')](_0x14b885[_0xf289('0x49')],{'$or':_['map'](_0x55035f,function(_0x7bdbd4){if(_0x7bdbd4[_0xf289('0x3f')]!==_0xf289('0x4c')){var _0x4e287b={};_0x4e287b[_0x7bdbd4[_0xf289('0x3a')]]={'$like':'%'+_0x5e7be0['query']['filter']+'%'};return _0x4e287b;}})});}_0x14b885=_[_0xf289('0x4b')]({},_0x14b885,_0x5e7be0[_0xf289('0x4d')]);var _0x34d72f={'where':_0x14b885[_0xf289('0x49')]};return db['OpenchannelMessage'][_0xf289('0x31')](_0x34d72f)[_0xf289('0x21')](function(_0x47a6a0){_0x2e1775['count']=_0x47a6a0;if(_0x5e7be0[_0xf289('0x41')][_0xf289('0x4e')]){_0x14b885[_0xf289('0x4f')]=[{'all':!![]}];}return db[_0xf289('0x50')][_0xf289('0x51')](_0x14b885);})[_0xf289('0x21')](function(_0x214190){_0x2e1775['rows']=_0x214190;return _0x2e1775;})['then'](respondWithFilteredResult(_0x3f2784,_0x14b885))[_0xf289('0x2b')](handleError(_0x3f2784,null));};exports['show']=function(_0x2e0764,_0x36fc83){var _0x35e503={'raw':!![],'where':{'id':_0x2e0764['params']['id']}},_0x4f327d={};_0x4f327d[_0xf289('0x40')]=_[_0xf289('0x42')](db[_0xf289('0x50')]['rawAttributes']);_0x4f327d[_0xf289('0x41')]=_[_0xf289('0x42')](_0x2e0764['query']);_0x4f327d[_0xf289('0x43')]=_[_0xf289('0x44')](_0x4f327d[_0xf289('0x40')],_0x4f327d[_0xf289('0x41')]);_0x35e503[_0xf289('0x46')]=_[_0xf289('0x44')](_0x4f327d[_0xf289('0x40')],qs[_0xf289('0x45')](_0x2e0764[_0xf289('0x41')][_0xf289('0x45')]));_0x35e503[_0xf289('0x46')]=_0x35e503[_0xf289('0x46')][_0xf289('0x52')]?_0x35e503[_0xf289('0x46')]:_0x4f327d[_0xf289('0x40')];if(_0x2e0764[_0xf289('0x41')][_0xf289('0x4e')]){_0x35e503[_0xf289('0x4f')]=[{'all':!![]}];}_0x35e503=_['merge']({},_0x35e503,_0x2e0764['options']);return db[_0xf289('0x50')]['find'](_0x35e503)['then'](handleEntityNotFound(_0x36fc83,null))[_0xf289('0x21')](respondWithResult(_0x36fc83,null))['catch'](handleError(_0x36fc83,null));};exports[_0xf289('0x53')]=function(_0xb58727,_0x5db840){return db[_0xf289('0x50')][_0xf289('0x53')](_0xb58727[_0xf289('0x54')],{})[_0xf289('0x21')](respondWithResult(_0x5db840,0xc9))[_0xf289('0x2b')](handleError(_0x5db840,null));};exports['update']=function(_0x44c46b,_0x502c81){if(_0x44c46b['body']['id']){delete _0x44c46b[_0xf289('0x54')]['id'];}return db[_0xf289('0x50')][_0xf289('0x55')]({'where':{'id':_0x44c46b[_0xf289('0x56')]['id']}})['then'](handleEntityNotFound(_0x502c81,null))['then'](saveUpdates(_0x44c46b[_0xf289('0x54')],null))[_0xf289('0x21')](respondWithResult(_0x502c81,null))[_0xf289('0x2b')](handleError(_0x502c81,null));};exports[_0xf289('0x57')]=function(_0x1e1647,_0x19b568){return db[_0xf289('0x50')][_0xf289('0x55')]({'where':{'id':_0x1e1647['params']['id']}})[_0xf289('0x21')](handleEntityNotFound(_0x19b568,null))[_0xf289('0x21')](removeEntity(_0x19b568,null))[_0xf289('0x2b')](handleError(_0x19b568,null));};exports[_0xf289('0x58')]=function(_0xc03856,_0x528426){return db[_0xf289('0x50')]['describe']()[_0xf289('0x21')](respondWithResult(_0x528426,null))['catch'](handleError(_0x528426,null));};var interaction_log=require(_0xf289('0x13'))(_0xf289('0x59'));exports[_0xf289('0x5a')]=function(_0x5010f4,_0x92383f,_0x5409a9){var _0x4ff82e={'agent':{},'channel':_0xf289('0x5b')};if(_0x5010f4[_0xf289('0x54')]['id']){delete _0x5010f4['body']['id'];}_0x5010f4[_0xf289('0x54')][_0xf289('0x5c')]=!![];_0x5010f4[_0xf289('0x54')][_0xf289('0x5d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5010f4[_0xf289('0x54')][_0xf289('0x5e')]=_0x5010f4[_0xf289('0x54')][_0xf289('0x5e')]||_0x5010f4[_0xf289('0x5f')]['id'];_0x4ff82e[_0xf289('0x60')]['id']=_0x5010f4[_0xf289('0x54')]['UserId'];return db[_0xf289('0x50')][_0xf289('0x55')]({'where':{'id':_0x5010f4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x92383f,null))['then'](saveUpdates(_0x5010f4['body'],null))['then'](function(_0x2cb672){if(_0x2cb672){_0x4ff82e[_0xf289('0x29')]=_0x2cb672[_0xf289('0x61')]({'plain':!![]});return db[_0xf289('0x62')]['find']({'where':{'id':_0x2cb672[_0xf289('0x63')]}});}return null;})[_0xf289('0x21')](handleEntityNotFound(_0x92383f,null))[_0xf289('0x21')](function(_0x427f3a){if(_0x427f3a){return _0x427f3a['update']({'UserId':_0x5010f4[_0xf289('0x54')][_0xf289('0x5e')],'read1stAt':_[_0xf289('0x64')](_0x427f3a[_0xf289('0x65')])?moment()[_0xf289('0x66')](_0xf289('0x67')):undefined});}return null;})[_0xf289('0x21')](function(_0x11f0e5){if(_0x11f0e5){_0x4ff82e[_0xf289('0x68')]=_0x11f0e5[_0xf289('0x61')]({'plain':!![]});interaction_log[_0xf289('0x22')](_0xf289('0x69'),_0x5010f4[_0xf289('0x5f')]['id'],_0x5010f4[_0xf289('0x5f')]['name'],_0x5010f4[_0xf289('0x5f')][_0xf289('0x6a')],_0x4ff82e[_0xf289('0x68')]['id'],_0x5010f4[_0xf289('0x54')]?JSON[_0xf289('0x27')](_0x5010f4['body']):'null');return respondWithRpcPromise(_0xf289('0x6b'),'acceptMessage',_0x4ff82e);}return null;})['then'](function(_0x45e4bc){var _0x2eb361=_0xf289('0x6c')+_0x45e4bc[_0xf289('0x29')][_0xf289('0x6d')];return db[_0xf289('0x6e')][_0xf289('0x41')](_0x2eb361,{'type':db[_0xf289('0x6f')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x2f4e22){return _0x2f4e22;});})[_0xf289('0x21')](function(_0x1b990b){if(_0x1b990b){_0x4ff82e['message'][_0xf289('0x70')]=_0x1b990b[0x0];if(!_0x5010f4[_0xf289('0x54')][_0xf289('0x5e')])return;return db[_0xf289('0x71')]['find']({'where':{'id':_0x5010f4[_0xf289('0x54')][_0xf289('0x5e')],'role':_0xf289('0x60')},'attributes':['id',_0xf289('0x3a'),_0xf289('0x72'),_0xf289('0x73'),_0xf289('0x74')],'raw':!![]});}return null;})[_0xf289('0x21')](function(_0x12ac4b){if(!_0x12ac4b)return null;_0x4ff82e[_0xf289('0x29')][_0xf289('0x60')]=_0x12ac4b;return _0x4ff82e;})[_0xf289('0x21')](function(_0x56184e){if(_0x56184e){if(_0x5010f4['body'][_0xf289('0x75')]){_0x4ff82e[_0xf289('0x29')][_0xf289('0x76')]=util[_0xf289('0x66')](_0xf289('0x77'),_0x5010f4['user'][_0xf289('0x3a')]);_0x4ff82e[_0xf289('0x29')]['channel']=_0x4ff82e[_0xf289('0x78')];_0x4ff82e[_0xf289('0x29')][_0xf289('0x79')]=_0x4ff82e[_0xf289('0x78')];_0x4ff82e[_0xf289('0x29')]['event']=_0xf289('0x5a');return respondWithRpcPromise(_0xf289('0x7a'),_0xf289('0x7a'),{'event':'acceptmessage','message':_0x4ff82e[_0xf289('0x29')]},client9002)[_0xf289('0x21')](function(){return _0x4ff82e;});}return _0x4ff82e;}return null;})['then'](respondWithResult(_0x92383f,null))[_0xf289('0x2b')](handleError(_0x92383f,null));};var interaction_log=require('../../config/logger')(_0xf289('0x59'));exports[_0xf289('0x36')]=function(_0x3c7cb0,_0x2249cc,_0x4a5a68){var _0x50087c={'agent':{},'channel':_0xf289('0x5b')};if(_0x3c7cb0['body']['id']){delete _0x3c7cb0[_0xf289('0x54')]['id'];}_0x3c7cb0[_0xf289('0x54')][_0xf289('0x5e')]=_0x3c7cb0['body'][_0xf289('0x5e')]||_0x3c7cb0[_0xf289('0x5f')]['id'];_0x50087c[_0xf289('0x60')]['id']=_0x3c7cb0[_0xf289('0x54')][_0xf289('0x5e')];return db['OpenchannelMessage'][_0xf289('0x55')]({'where':{'id':_0x3c7cb0[_0xf289('0x56')]['id'],'UserId':null}})[_0xf289('0x21')](handleEntityNotFound(_0x2249cc,null))[_0xf289('0x21')](function(_0x2935db){if(_0x2935db){_0x50087c['message']=_0x2935db[_0xf289('0x61')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x2935db[_0xf289('0x63')]}});}return null;})[_0xf289('0x21')](handleEntityNotFound(_0x2249cc,null))[_0xf289('0x21')](function(_0x1a5ebf){if(_0x1a5ebf){_0x50087c['interaction']=_0x1a5ebf[_0xf289('0x61')]({'plain':!![]});interaction_log[_0xf289('0x22')](_0xf289('0x7b'),_0x3c7cb0[_0xf289('0x5f')]['id'],_0x3c7cb0[_0xf289('0x5f')][_0xf289('0x3a')],_0x3c7cb0[_0xf289('0x5f')]['role'],_0x50087c[_0xf289('0x68')]['id'],_0x3c7cb0[_0xf289('0x54')]?JSON[_0xf289('0x27')](_0x3c7cb0[_0xf289('0x54')]):_0xf289('0x7c'));return respondWithRpcPromise(_0xf289('0x7d'),_0xf289('0x7e'),_0x50087c);}return null;})[_0xf289('0x21')](function(_0x4e578e){var _0x1901e2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e578e['message'][_0xf289('0x6d')];return db[_0xf289('0x6e')][_0xf289('0x41')](_0x1901e2,{'type':db[_0xf289('0x6f')]['QueryTypes'][_0xf289('0x7f')],'raw':!![]})[_0xf289('0x21')](function(_0x50d5dc){return _0x50d5dc;});})['then'](function(_0x5ca293){if(_0x5ca293){_0x50087c['message'][_0xf289('0x70')]=_0x5ca293[0x0];if(!_0x3c7cb0['body'][_0xf289('0x5e')])return;return db['User']['find']({'where':{'id':_0x3c7cb0['body'][_0xf289('0x5e')],'role':_0xf289('0x60')},'attributes':['id',_0xf289('0x3a'),_0xf289('0x72'),_0xf289('0x73'),_0xf289('0x74')],'raw':!![]});}return null;})[_0xf289('0x21')](function(_0x246997){if(!_0x246997)return null;_0x50087c[_0xf289('0x29')][_0xf289('0x60')]=_0x246997;return _0x50087c;})['then'](function(_0x49c18e){if(_0x49c18e){_0x49c18e[_0xf289('0x29')][_0xf289('0x76')]=util[_0xf289('0x66')](_0xf289('0x77'),_0x3c7cb0[_0xf289('0x5f')][_0xf289('0x3a')]);_0x49c18e['message'][_0xf289('0x78')]=_0x50087c[_0xf289('0x78')];_0x49c18e[_0xf289('0x29')]['motionChannel']=_0x50087c[_0xf289('0x78')];_0x49c18e[_0xf289('0x29')][_0xf289('0x80')]=_0xf289('0x36');respondWithRpcPromise(_0xf289('0x7a'),_0xf289('0x7a'),{'event':_0xf289('0x81'),'message':_0x49c18e['message']},client9002);return _0x50087c;}return null;})[_0xf289('0x21')](respondWithResult(_0x2249cc,null))[_0xf289('0x2b')](handleError(_0x2249cc,null));};
\ No newline at end of file
index 14e426f..a8eee7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c50=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','OpenchannelMessage'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x3c50,0x9f));var _0x03c5=function(_0x5ce391,_0x193c64){_0x5ce391=_0x5ce391-0x0;var _0x3e6c1e=_0x3c50[_0x5ce391];return _0x3e6c1e;};'use strict';var EventEmitter=require(_0x03c5('0x0'));var OpenchannelMessage=require(_0x03c5('0x1'))['db'][_0x03c5('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x03c5('0x3')](0x0);var events={'afterCreate':_0x03c5('0x4'),'afterUpdate':_0x03c5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x47422c){return function(_0x25991a,_0x4ebbbb,_0x1ae91b){OpenchannelMessageEvents[_0x03c5('0x6')](_0x47422c+':'+_0x25991a['id'],_0x25991a);OpenchannelMessageEvents[_0x03c5('0x6')](_0x47422c,_0x25991a);_0x1ae91b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x03c5('0x7')](e,emitEvent(event));}}module[_0x03c5('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x7abe=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x413e23,_0x146884){var _0x37ecaa=function(_0xb08626){while(--_0xb08626){_0x413e23['push'](_0x413e23['shift']());}};_0x37ecaa(++_0x146884);}(_0x7abe,0x150));var _0xe7ab=function(_0x160c95,_0x8b7291){_0x160c95=_0x160c95-0x0;var _0x45dd63=_0x7abe[_0x160c95];return _0x45dd63;};'use strict';var EventEmitter=require(_0xe7ab('0x0'));var OpenchannelMessage=require(_0xe7ab('0x1'))['db'][_0xe7ab('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xe7ab('0x3')](0x0);var events={'afterCreate':_0xe7ab('0x4'),'afterUpdate':_0xe7ab('0x5'),'afterDestroy':_0xe7ab('0x6')};function emitEvent(_0x3acdd2){return function(_0x569ae9,_0x56f563,_0x853522){OpenchannelMessageEvents[_0xe7ab('0x7')](_0x3acdd2+':'+_0x569ae9['id'],_0x569ae9);OpenchannelMessageEvents[_0xe7ab('0x7')](_0x3acdd2,_0x569ae9);_0x853522(null);};}for(var e in events){if(events[_0xe7ab('0x8')](e)){var event=events[e];OpenchannelMessage[_0xe7ab('0x9')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index bceb222..ca86899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1adb=['out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','error','CmContact','OpenchannelAccount','find','Interactions','Contact','keys','replyUri','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','omit','method','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','catch','OpenchannelMessage,\x20%s,\x20%s','inspect','finally','moment','bluebird','request-promise','path','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase'];(function(_0x3b3466,_0x228276){var _0x16157f=function(_0x51a1af){while(--_0x51a1af){_0x3b3466['push'](_0x3b3466['shift']());}};_0x16157f(++_0x228276);}(_0x1adb,0x7b));var _0xb1ad=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1adb[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb1ad('0x0'));var BPromise=require(_0xb1ad('0x1'));var rp=require(_0xb1ad('0x2'));var fs=require('fs');var path=require(_0xb1ad('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0xb1ad('0x4')]=function(_0x5ef30b,_0x4f2d84){return _0x5ef30b[_0xb1ad('0x5')](_0xb1ad('0x6'),attributes,{'tableName':_0xb1ad('0x7'),'paranoid':![],'indexes':[{'name':_0xb1ad('0x8'),'fields':[_0xb1ad('0x9')],'type':_0xb1ad('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3be1cc,_0x22d8e6,_0x22e410){var _0xbfa95d=_0x5ef30b[_0xb1ad('0xb')];var _0x5f4610=_0x3be1cc[_0xb1ad('0xc')]({'plain':!![]});if(_0x5f4610[_0xb1ad('0xd')][_0xb1ad('0xe')]()==='in'||_0x5f4610[_0xb1ad('0xd')][_0xb1ad('0xe')]()===_0xb1ad('0xf')&&!_0x5f4610[_0xb1ad('0x10')]&&!_[_0xb1ad('0x11')](_0x5f4610[_0xb1ad('0x12')])){_0xbfa95d[_0xb1ad('0x13')][_0xb1ad('0x14')]({'where':{'id':_0x5f4610[_0xb1ad('0x15')]}})[_0xb1ad('0x16')](function(_0x46df5a){if(_0x46df5a){_0x46df5a[_0xb1ad('0x17')]({'lastMsgAt':_0x5f4610[_0xb1ad('0x18')],'lastMsgDirection':_0x5f4610['direction'][_0xb1ad('0xe')]()});}})['catch'](function(_0x4cb2c4){console[_0xb1ad('0x19')](_0x4cb2c4);});}if(_0x5f4610[_0xb1ad('0xd')]===_0xb1ad('0xf')&&!_0x5f4610[_0xb1ad('0x10')]){var _0x12089d;_0xbfa95d[_0xb1ad('0x1a')]['describe']()[_0xb1ad('0x16')](function(_0x18bc7b){return _0xbfa95d[_0xb1ad('0x1b')][_0xb1ad('0x1c')]({'where':{'id':_0x5f4610['OpenchannelAccountId']},'include':[{'model':_0xbfa95d['OpenchannelInteraction'],'as':_0xb1ad('0x1d'),'where':{'id':_0x5f4610[_0xb1ad('0x15')]},'limit':0x1,'include':[{'model':_0xbfa95d['CmContact'],'as':_0xb1ad('0x1e'),'attributes':_[_0xb1ad('0x1f')](_0x18bc7b)}]}]});})[_0xb1ad('0x16')](function(_0x5e08ee){_0x12089d=_0x5e08ee['get']({'plain':!![]});if(_0x12089d&&_0x12089d[_0xb1ad('0x20')]){logger[_0xb1ad('0x21')]('OpenchannelMessage,\x20%s,\x20%s',_0xb1ad('0x22'),util[_0xb1ad('0x23')](_0xb1ad('0x24'),_0x5f4610['id'],_0x12089d['replyUri']));if(_0x12089d[_0xb1ad('0x1d')]&&_0x12089d[_0xb1ad('0x1d')]['length']){_0x5f4610['Interaction']=_[_0xb1ad('0x25')](_0x12089d[_0xb1ad('0x1d')][0x0],'Contact');_0x5f4610[_0xb1ad('0x1e')]=_0x12089d[_0xb1ad('0x1d')][0x0]['Contact'];}var _0x22d8e6={'method':'POST','uri':encodeURI(_0x12089d[_0xb1ad('0x20')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x22d8e6[_0xb1ad('0x26')]){case'GET':_0x22d8e6['qs']=_0x5f4610;break;case'POST':_0x22d8e6[_0xb1ad('0x9')]=_0x5f4610;break;}return rp(_0x22d8e6)[_0xb1ad('0x16')](function(_0x2efcc4){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xb1ad('0x22'),util[_0xb1ad('0x23')](_0xb1ad('0x27'),_0x5f4610['id'],_0x12089d[_0xb1ad('0x20')]));if(_0x2efcc4['body']['threadId']&&_0x2efcc4[_0xb1ad('0x9')]['threadId']!=_0x5f4610['Interaction'][_0xb1ad('0x28')]){return _0xbfa95d[_0xb1ad('0x13')][_0xb1ad('0x17')]({'threadId':_0x2efcc4[_0xb1ad('0x9')]['threadId']},{'where':{'id':_0x5f4610[_0xb1ad('0x29')]['id']}});}else{return;}})[_0xb1ad('0x16')](function(){return _0x3be1cc[_0xb1ad('0x17')]({'read':!![]});})[_0xb1ad('0x2a')](function(_0x371463){logger['error'](_0xb1ad('0x2b'),_0xb1ad('0x22'),util[_0xb1ad('0x2c')](_0x371463,{'showHidden':![],'depth':null}));_0x22e410();});}else{_0x22e410();}})[_0xb1ad('0x2d')](function(){_0x22e410();});}else{_0x22e410();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb7f3=['OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','error','OpenchannelAccount','find','CmContact','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Interactions','length','Interaction','omit','POST','method','GET','body','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define'];(function(_0x29a0a3,_0x5e558e){var _0x29e6b0=function(_0x9b4ddf){while(--_0x9b4ddf){_0x29a0a3['push'](_0x29a0a3['shift']());}};_0x29e6b0(++_0x5e558e);}(_0xb7f3,0x9c));var _0x3b7f=function(_0x5d30de,_0x515c6b){_0x5d30de=_0x5d30de-0x0;var _0x221daf=_0xb7f3[_0x5d30de];return _0x221daf;};'use strict';var _=require(_0x3b7f('0x0'));var util=require(_0x3b7f('0x1'));var logger=require(_0x3b7f('0x2'))(_0x3b7f('0x3'));var moment=require(_0x3b7f('0x4'));var BPromise=require('bluebird');var rp=require(_0x3b7f('0x5'));var fs=require('fs');var path=require(_0x3b7f('0x6'));var rimraf=require(_0x3b7f('0x7'));var config=require(_0x3b7f('0x8'));var attributes=require(_0x3b7f('0x9'));module[_0x3b7f('0xa')]=function(_0x22f02f,_0x199e16){return _0x22f02f[_0x3b7f('0xb')](_0x3b7f('0xc'),attributes,{'tableName':_0x3b7f('0xd'),'paranoid':![],'indexes':[{'name':_0x3b7f('0xe'),'fields':['body'],'type':_0x3b7f('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1f03db,_0x5fd806,_0x3d1798){var _0x564e91=_0x22f02f[_0x3b7f('0x10')];var _0x38cc5e=_0x1f03db[_0x3b7f('0x11')]({'plain':!![]});if(_0x38cc5e[_0x3b7f('0x12')][_0x3b7f('0x13')]()==='in'||_0x38cc5e[_0x3b7f('0x12')][_0x3b7f('0x13')]()===_0x3b7f('0x14')&&!_0x38cc5e[_0x3b7f('0x15')]&&!_[_0x3b7f('0x16')](_0x38cc5e[_0x3b7f('0x17')])){_0x564e91[_0x3b7f('0x18')][_0x3b7f('0x19')]({'where':{'id':_0x38cc5e[_0x3b7f('0x1a')]}})[_0x3b7f('0x1b')](function(_0x18222a){if(_0x18222a){_0x18222a[_0x3b7f('0x1c')]({'lastMsgAt':_0x38cc5e[_0x3b7f('0x1d')],'lastMsgDirection':_0x38cc5e['direction'][_0x3b7f('0x13')]()});}})['catch'](function(_0x1c09dc){console[_0x3b7f('0x1e')](_0x1c09dc);});}if(_0x38cc5e[_0x3b7f('0x12')]==='out'&&!_0x38cc5e[_0x3b7f('0x15')]){var _0x3eecd5;_0x564e91['CmContact']['describe']()[_0x3b7f('0x1b')](function(_0x3c0b82){return _0x564e91[_0x3b7f('0x1f')][_0x3b7f('0x20')]({'where':{'id':_0x38cc5e['OpenchannelAccountId']},'include':[{'model':_0x564e91['OpenchannelInteraction'],'as':'Interactions','where':{'id':_0x38cc5e['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x564e91[_0x3b7f('0x21')],'as':_0x3b7f('0x22'),'attributes':_[_0x3b7f('0x23')](_0x3c0b82)}]}]});})[_0x3b7f('0x1b')](function(_0x4a7aa9){_0x3eecd5=_0x4a7aa9[_0x3b7f('0x11')]({'plain':!![]});if(_0x3eecd5&&_0x3eecd5[_0x3b7f('0x24')]){logger['info'](_0x3b7f('0x25'),_0x3b7f('0x26'),util[_0x3b7f('0x27')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x38cc5e['id'],_0x3eecd5[_0x3b7f('0x24')]));if(_0x3eecd5[_0x3b7f('0x28')]&&_0x3eecd5['Interactions'][_0x3b7f('0x29')]){_0x38cc5e[_0x3b7f('0x2a')]=_[_0x3b7f('0x2b')](_0x3eecd5[_0x3b7f('0x28')][0x0],_0x3b7f('0x22'));_0x38cc5e[_0x3b7f('0x22')]=_0x3eecd5[_0x3b7f('0x28')][0x0]['Contact'];}var _0x5fd806={'method':_0x3b7f('0x2c'),'uri':encodeURI(_0x3eecd5[_0x3b7f('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5fd806[_0x3b7f('0x2d')]){case _0x3b7f('0x2e'):_0x5fd806['qs']=_0x38cc5e;break;case _0x3b7f('0x2c'):_0x5fd806[_0x3b7f('0x2f')]=_0x38cc5e;break;}return rp(_0x5fd806)[_0x3b7f('0x1b')](function(_0x2c1509){logger[_0x3b7f('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x3b7f('0x26'),util[_0x3b7f('0x27')](_0x3b7f('0x31'),_0x38cc5e['id'],_0x3eecd5[_0x3b7f('0x24')]));if(_0x2c1509[_0x3b7f('0x2f')][_0x3b7f('0x32')]&&_0x2c1509[_0x3b7f('0x2f')][_0x3b7f('0x32')]!=_0x38cc5e['Interaction'][_0x3b7f('0x32')]){return _0x564e91[_0x3b7f('0x18')][_0x3b7f('0x1c')]({'threadId':_0x2c1509['body'][_0x3b7f('0x32')]},{'where':{'id':_0x38cc5e['Interaction']['id']}});}else{return;}})[_0x3b7f('0x1b')](function(){return _0x1f03db[_0x3b7f('0x1c')]({'read':!![]});})[_0x3b7f('0x33')](function(_0x1dcfed){logger[_0x3b7f('0x1e')]('OpenchannelMessage,\x20%s,\x20%s',_0x3b7f('0x26'),util[_0x3b7f('0x34')](_0x1dcfed,{'showHidden':![],'depth':null}));_0x3d1798();});}else{_0x3d1798();}})[_0x3b7f('0x35')](function(){_0x3d1798();});}else{_0x3d1798();}}},'charset':_0x3b7f('0x36'),'collate':_0x3b7f('0x37')});};
\ No newline at end of file
index 453e4d8..82fdff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x240662,_0x38d5e2){var _0x5c7bd7=function(_0x2a8e98){while(--_0x2a8e98){_0x240662['push'](_0x240662['shift']());}};_0x5c7bd7(++_0x38d5e2);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3dd812,_0x5af958){_0x3dd812=_0x3dd812-0x0;var _0x21f70c=_0x5f2f[_0x3dd812];return _0x21f70c;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','OpenchannelMessage','options','raw','then','CreateOpenchannelMessage','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4ef826,_0x2e0ac8){var _0x154b8=function(_0x4fae58){while(--_0x4fae58){_0x4ef826['push'](_0x4ef826['shift']());}};_0x154b8(++_0x2e0ac8);}(_0x1261,0x144));var _0x1126=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0x1261[_0x68ee8b];return _0x5148f7;};'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});config[_0x1126('0xb')]=_['defaults'](config[_0x1126('0xb')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require(_0x1126('0xd'))(new Redis(config[_0x1126('0xb')]));require(_0x1126('0xe'))['register'](socket);function respondWithRpcPromise(_0x3f09ac,_0x18dbe6,_0x167ef1){return new BPromise(function(_0x5e72e2,_0x34571c){return client['request'](_0x3f09ac,_0x167ef1)['then'](function(_0x15c071){logger['info'](_0x1126('0xf'),_0x18dbe6,_0x1126('0x10'));logger[_0x1126('0x11')](_0x1126('0x12'),_0x18dbe6,_0x1126('0x10'),JSON[_0x1126('0x13')](_0x15c071));if(_0x15c071[_0x1126('0x14')]){if(_0x15c071[_0x1126('0x14')][_0x1126('0x15')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x34571c(_0x15c071[_0x1126('0x14')]['message']);}logger[_0x1126('0x14')]('OpenchannelMessage,\x20%s,\x20%s',_0x18dbe6,_0x15c071[_0x1126('0x14')][_0x1126('0x16')]);return _0x5e72e2(_0x15c071[_0x1126('0x14')]['message']);}else{logger[_0x1126('0x17')](_0x1126('0xf'),_0x18dbe6,'request\x20sent');_0x5e72e2(_0x15c071['result'][_0x1126('0x16')]);}})[_0x1126('0x18')](function(_0x58d11a){logger['error'](_0x1126('0xf'),_0x18dbe6,_0x58d11a);_0x34571c(_0x58d11a);});});}exports['CreateOpenchannelMessage']=function(_0x22ed37){var _0x1d6d19=this;return new Promise(function(_0x2f70ac,_0x54400a){return db[_0x1126('0x19')]['create'](_0x22ed37['body'],{'raw':_0x22ed37[_0x1126('0x1a')]?_0x22ed37[_0x1126('0x1a')][_0x1126('0x1b')]===undefined?!![]:![]:!![]})[_0x1126('0x1c')](function(_0x526ca1){logger[_0x1126('0x17')](_0x1126('0x1d'),_0x22ed37);logger['debug'](_0x1126('0x1d'),_0x22ed37,JSON['stringify'](_0x526ca1));_0x2f70ac(_0x526ca1);})['catch'](function(_0x4b57ab){logger[_0x1126('0x14')](_0x1126('0x1d'),_0x4b57ab[_0x1126('0x16')],_0x22ed37);_0x54400a(_0x1d6d19[_0x1126('0x14')](0x1f4,_0x4b57ab[_0x1126('0x16')]));});});};
\ No newline at end of file
index a36316c..b6ad10e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61c=['register','openchannelMessage:','save','remove','update','emit','removeListener'];(function(_0x424bd6,_0xbcd2ba){var _0x227767=function(_0x2517bc){while(--_0x2517bc){_0x424bd6['push'](_0x424bd6['shift']());}};_0x227767(++_0xbcd2ba);}(_0xd61c,0x6b));var _0xcd61=function(_0x54249b,_0xfdbe9a){_0x54249b=_0x54249b-0x0;var _0x57ef0d=_0xd61c[_0x54249b];return _0x57ef0d;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xcd61('0x0'),_0xcd61('0x1'),_0xcd61('0x2')];function createListener(_0x33c015,_0x444580){return function(_0x2443df){_0x444580[_0xcd61('0x3')](_0x33c015,_0x2443df);};}function removeListener(_0x1cdcd1,_0x53b293){return function(){OpenchannelMessageEvents[_0xcd61('0x4')](_0x1cdcd1,_0x53b293);};}exports[_0xcd61('0x5')]=function(_0x3d1d05){for(var _0x90ef3d=0x0,_0x191440=events['length'];_0x90ef3d<_0x191440;_0x90ef3d++){var _0x338d86=events[_0x90ef3d];var _0x754876=createListener(_0xcd61('0x6')+_0x338d86,_0x3d1d05);OpenchannelMessageEvents['on'](_0x338d86,_0x754876);}};
\ No newline at end of file
+var _0x5e4c=['remove','update','emit','register','length','openchannelMessage:','./openchannelMessage.events','save'];(function(_0x4c7232,_0x4109aa){var _0x2175ca=function(_0x52bbfc){while(--_0x52bbfc){_0x4c7232['push'](_0x4c7232['shift']());}};_0x2175ca(++_0x4109aa);}(_0x5e4c,0xd6));var _0xc5e4=function(_0xcd4b7e,_0xfaf322){_0xcd4b7e=_0xcd4b7e-0x0;var _0x2f600d=_0x5e4c[_0xcd4b7e];return _0x2f600d;};'use strict';var OpenchannelMessageEvents=require(_0xc5e4('0x0'));var events=[_0xc5e4('0x1'),_0xc5e4('0x2'),_0xc5e4('0x3')];function createListener(_0x560d24,_0x42e7d9){return function(_0x44fd4e){_0x42e7d9[_0xc5e4('0x4')](_0x560d24,_0x44fd4e);};}function removeListener(_0x39095c,_0x58709d){return function(){OpenchannelMessageEvents['removeListener'](_0x39095c,_0x58709d);};}exports[_0xc5e4('0x5')]=function(_0x50f80c){for(var _0x38381c=0x0,_0x23362a=events[_0xc5e4('0x6')];_0x38381c<_0x23362a;_0x38381c++){var _0x30a958=events[_0x38381c];var _0x1ec748=createListener(_0xc5e4('0x7')+_0x30a958,_0x50f80c);OpenchannelMessageEvents['on'](_0x30a958,_0x1ec748);}};
\ No newline at end of file
index 24645c7..6ceaaef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ef=['show','getMembers','getTeams','/:id/users','post','create','/:id/teams','addAgents','put','delete','removeTeams','removeAgents','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x07ef,0x99));var _0xf07e=function(_0x4854d6,_0x2f1264){_0x4854d6=_0x4854d6-0x0;var _0x3885c0=_0x07ef[_0x4854d6];return _0x3885c0;};'use strict';var multer=require(_0xf07e('0x0'));var util=require(_0xf07e('0x1'));var path=require(_0xf07e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf07e('0x3')]();var fs_extra=require(_0xf07e('0x4'));var auth=require(_0xf07e('0x5'));var interaction=require(_0xf07e('0x6'));var config=require(_0xf07e('0x7'));var controller=require(_0xf07e('0x8'));router[_0xf07e('0x9')]('/',auth['isAuthenticated'](),controller[_0xf07e('0xa')]);router['get'](_0xf07e('0xb'),auth[_0xf07e('0xc')](),controller[_0xf07e('0xd')]);router[_0xf07e('0x9')](_0xf07e('0xe'),auth[_0xf07e('0xc')](),controller[_0xf07e('0xf')]);router[_0xf07e('0x9')]('/:id/members',auth[_0xf07e('0xc')](),controller[_0xf07e('0x10')]);router['get']('/:id/teams',auth[_0xf07e('0xc')](),controller[_0xf07e('0x11')]);router[_0xf07e('0x9')](_0xf07e('0x12'),auth['isAuthenticated'](),controller['getAgents']);router[_0xf07e('0x13')]('/',auth[_0xf07e('0xc')](),controller[_0xf07e('0x14')]);router[_0xf07e('0x13')](_0xf07e('0x15'),auth['isAuthenticated'](),controller['addTeams']);router[_0xf07e('0x13')](_0xf07e('0x12'),auth['isAuthenticated'](),controller[_0xf07e('0x16')]);router[_0xf07e('0x17')](_0xf07e('0xe'),auth[_0xf07e('0xc')](),controller['update']);router[_0xf07e('0x18')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0xf07e('0x18')](_0xf07e('0x15'),auth[_0xf07e('0xc')](),controller[_0xf07e('0x19')]);router[_0xf07e('0x18')](_0xf07e('0x12'),auth[_0xf07e('0xc')](),controller[_0xf07e('0x1a')]);module[_0xf07e('0x1b')]=router;
\ No newline at end of file
+var _0xd46e=['/describe','/:id','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','removeTeams','util','path','express','Router','fs-extra','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index'];(function(_0x188bfe,_0x2517cc){var _0x1a9efa=function(_0x361964){while(--_0x361964){_0x188bfe['push'](_0x188bfe['shift']());}};_0x1a9efa(++_0x2517cc);}(_0xd46e,0x12e));var _0xed46=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xd46e[_0x5416db];return _0x243e35;};'use strict';var multer=require('multer');var util=require(_0xed46('0x0'));var path=require(_0xed46('0x1'));var timeout=require('connect-timeout');var express=require(_0xed46('0x2'));var router=express[_0xed46('0x3')]();var fs_extra=require(_0xed46('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xed46('0x5'));var controller=require(_0xed46('0x6'));router[_0xed46('0x7')]('/',auth[_0xed46('0x8')](),controller[_0xed46('0x9')]);router[_0xed46('0x7')](_0xed46('0xa'),auth[_0xed46('0x8')](),controller['describe']);router['get'](_0xed46('0xb'),auth[_0xed46('0x8')](),controller[_0xed46('0xc')]);router['get']('/:id/members',auth[_0xed46('0x8')](),controller['getMembers']);router['get'](_0xed46('0xd'),auth[_0xed46('0x8')](),controller[_0xed46('0xe')]);router['get'](_0xed46('0xf'),auth[_0xed46('0x8')](),controller[_0xed46('0x10')]);router[_0xed46('0x11')]('/',auth[_0xed46('0x8')](),controller['create']);router[_0xed46('0x11')]('/:id/teams',auth[_0xed46('0x8')](),controller[_0xed46('0x12')]);router[_0xed46('0x11')](_0xed46('0xf'),auth[_0xed46('0x8')](),controller[_0xed46('0x13')]);router[_0xed46('0x14')]('/:id',auth[_0xed46('0x8')](),controller[_0xed46('0x15')]);router[_0xed46('0x16')](_0xed46('0xb'),auth[_0xed46('0x8')](),controller['destroy']);router[_0xed46('0x16')]('/:id/teams',auth['isAuthenticated'](),controller[_0xed46('0x17')]);router[_0xed46('0x16')](_0xed46('0xf'),auth[_0xed46('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index f2984cb..89ea1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b99=['exports','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0b99,0xd2));var _0x90b9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0b99[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x90b9('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x90b9('0x1')]},'timeout':{'type':Sequelize[_0x90b9('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x90b9('0x3')](_0x90b9('0x4'),_0x90b9('0x5'),_0x90b9('0x6'))}};
\ No newline at end of file
+var _0x61a9=['beepall','roundrobin','sequelize','STRING','name','INTEGER','rrmemory'];(function(_0x1b2bde,_0x32ea63){var _0x1743b9=function(_0x1202ca){while(--_0x1202ca){_0x1b2bde['push'](_0x1b2bde['shift']());}};_0x1743b9(++_0x32ea63);}(_0x61a9,0x136));var _0x961a=function(_0x4028bd,_0xb6c8a0){_0x4028bd=_0x4028bd-0x0;var _0x5c2eae=_0x61a9[_0x4028bd];return _0x5c2eae;};'use strict';var Sequelize=require(_0x961a('0x0'));module['exports']={'name':{'type':Sequelize[_0x961a('0x1')],'unique':_0x961a('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x961a('0x1')]},'timeout':{'type':Sequelize[_0x961a('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x961a('0x4'),_0x961a('0x5'),_0x961a('0x6'))}};
\ No newline at end of file
index 7523fd4..4d04406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fa4=['fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','describe','findOne','rawAttributes','OpenchannelQueueId','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','createdAt','%s/%s','SIP','Team','getTeams','addTeams','ids','online','interface','flatMap','Agents','sequelize','transaction','each','forEach','removeTeams','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','compact','value','isEmpty','removeAgents','omit','spread','emit','userOpenchannelQueue:save','isArray','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir'];(function(_0x99ed02,_0x2fb1d7){var _0x5b2335=function(_0x5f54ea){while(--_0x5f54ea){_0x99ed02['push'](_0x99ed02['shift']());}};_0x5b2335(++_0x2fb1d7);}(_0x2fa4,0x11d));var _0x42fa=function(_0x2588dd,_0x16f4cb){_0x2588dd=_0x2588dd-0x0;var _0x3bc258=_0x2fa4[_0x2588dd];return _0x3bc258;};'use strict';var emlformat=require(_0x42fa('0x0'));var rimraf=require(_0x42fa('0x1'));var zipdir=require(_0x42fa('0x2'));var jsonpatch=require(_0x42fa('0x3'));var rp=require('request-promise');var moment=require(_0x42fa('0x4'));var BPromise=require(_0x42fa('0x5'));var Mustache=require('mustache');var util=require(_0x42fa('0x6'));var path=require(_0x42fa('0x7'));var sox=require(_0x42fa('0x8'));var csv=require(_0x42fa('0x9'));var ejs=require(_0x42fa('0xa'));var fs=require('fs');var fs_extra=require(_0x42fa('0xb'));var _=require('lodash');var squel=require(_0x42fa('0xc'));var crypto=require(_0x42fa('0xd'));var jsforce=require(_0x42fa('0xe'));var deskjs=require(_0x42fa('0xf'));var toCsv=require(_0x42fa('0x9'));var querystring=require(_0x42fa('0x10'));var Papa=require(_0x42fa('0x11'));var Redis=require(_0x42fa('0x12'));var authService=require(_0x42fa('0x13'));var qs=require(_0x42fa('0x14'));var as=require(_0x42fa('0x15'));var hardwareService=require(_0x42fa('0x16'));var logger=require('../../config/logger')(_0x42fa('0x17'));var utils=require(_0x42fa('0x18'));var config=require(_0x42fa('0x19'));var licenseUtil=require(_0x42fa('0x1a'));var db=require(_0x42fa('0x1b'))['db'];config['redis']=_['defaults'](config[_0x42fa('0x1c')],{'host':_0x42fa('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x42fa('0x1c')]));require('./openchannelQueue.socket')[_0x42fa('0x1e')](socket);function respondWithStatusCode(_0x190ea5,_0x349944){_0x349944=_0x349944||0xcc;return function(_0x218eeb){if(_0x218eeb){return _0x190ea5[_0x42fa('0x1f')](_0x349944);}return _0x190ea5[_0x42fa('0x20')](_0x349944)[_0x42fa('0x21')]();};}function respondWithResult(_0x575f3f,_0x124d25){_0x124d25=_0x124d25||0xc8;return function(_0x27213f){if(_0x27213f){return _0x575f3f[_0x42fa('0x20')](_0x124d25)[_0x42fa('0x22')](_0x27213f);}};}function respondWithFilteredResult(_0x4fbd30,_0x2795d7){return function(_0x6fe383){if(_0x6fe383){var _0x418159=typeof _0x2795d7[_0x42fa('0x23')]===_0x42fa('0x24')&&typeof _0x2795d7[_0x42fa('0x25')]===_0x42fa('0x24');var _0x63258e=_0x6fe383[_0x42fa('0x26')];var _0x129114=_0x418159?0x0:_0x2795d7[_0x42fa('0x23')];var _0x225d6d=_0x418159?_0x6fe383[_0x42fa('0x26')]:_0x2795d7[_0x42fa('0x23')]+_0x2795d7[_0x42fa('0x25')];var _0x4fba63;if(_0x225d6d>=_0x63258e){_0x225d6d=_0x63258e;_0x4fba63=0xc8;}else{_0x4fba63=0xce;}_0x4fbd30[_0x42fa('0x20')](_0x4fba63);return _0x4fbd30[_0x42fa('0x27')]('Content-Range',_0x129114+'-'+_0x225d6d+'/'+_0x63258e)[_0x42fa('0x22')](_0x6fe383);}return null;};}function patchUpdates(_0x397787){return function(_0x457b89){try{jsonpatch[_0x42fa('0x28')](_0x457b89,_0x397787,!![]);}catch(_0x156749){return BPromise[_0x42fa('0x29')](_0x156749);}return _0x457b89[_0x42fa('0x2a')]();};}function saveUpdates(_0x179761,_0x206238){return function(_0x71af2f){if(_0x71af2f){return _0x71af2f['update'](_0x179761)[_0x42fa('0x2b')](function(_0x2b1c03){return _0x2b1c03;});}return null;};}function removeEntity(_0x235a58,_0x185166){return function(_0x3d341c){if(_0x3d341c){return _0x3d341c[_0x42fa('0x2c')]()[_0x42fa('0x2b')](function(){var _0x39dfcb=_0x3d341c[_0x42fa('0x2d')]({'plain':!![]});var _0x3bb8db=_0x42fa('0x2e');return db[_0x42fa('0x2f')][_0x42fa('0x2c')]({'where':{'type':_0x3bb8db,'resourceId':_0x39dfcb['id']}})['then'](function(){return _0x3d341c;});})[_0x42fa('0x2b')](function(){_0x235a58['status'](0xcc)[_0x42fa('0x21')]();});}};}function handleEntityNotFound(_0x1205cd,_0x3e9fec){return function(_0x37643a){if(!_0x37643a){_0x1205cd[_0x42fa('0x1f')](0x194);}return _0x37643a;};}function handleError(_0x18534e,_0x16d5fe){_0x16d5fe=_0x16d5fe||0x1f4;return function(_0x2071c3){logger[_0x42fa('0x30')](_0x2071c3[_0x42fa('0x31')]);if(_0x2071c3[_0x42fa('0x32')]){delete _0x2071c3['name'];}_0x18534e[_0x42fa('0x20')](_0x16d5fe)[_0x42fa('0x33')](_0x2071c3);};}exports[_0x42fa('0x34')]=function(_0x48e8ac,_0x87dbdc){var _0x11a11b={},_0x49881e={},_0x22b36b={'count':0x0,'rows':[]};var _0x394152=_[_0x42fa('0x35')](db[_0x42fa('0x36')]['rawAttributes'],function(_0xae4bf8){return{'name':_0xae4bf8[_0x42fa('0x37')],'type':_0xae4bf8[_0x42fa('0x38')][_0x42fa('0x39')]};});_0x49881e[_0x42fa('0x3a')]=_['map'](_0x394152,_0x42fa('0x32'));_0x49881e[_0x42fa('0x3b')]=_['keys'](_0x48e8ac[_0x42fa('0x3b')]);_0x49881e[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x49881e[_0x42fa('0x3a')],_0x49881e['query']);_0x11a11b[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x49881e['model'],qs[_0x42fa('0x3f')](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x11a11b[_0x42fa('0x3e')]=_0x11a11b[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x11a11b[_0x42fa('0x3e')]:_0x49881e['model'];if(!_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x41')](_0x42fa('0x42'))){_0x11a11b[_0x42fa('0x25')]=qs['limit'](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x25')]);_0x11a11b[_0x42fa('0x23')]=qs['offset'](_0x48e8ac[_0x42fa('0x3b')]['offset']);}_0x11a11b[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x44')]);_0x11a11b['where']=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x48e8ac[_0x42fa('0x3b')],_0x49881e[_0x42fa('0x3c')]),_0x394152);if(_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x46')]){_0x11a11b[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x11a11b[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x394152,function(_0x4b3468){if(_0x4b3468['type']!==_0x42fa('0x49')){var _0x530b17={};_0x530b17[_0x4b3468[_0x42fa('0x32')]]={'$like':'%'+_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x46')]+'%'};return _0x530b17;}})});}_0x11a11b=_[_0x42fa('0x48')]({},_0x11a11b,_0x48e8ac['options']);var _0x21bb70={'where':_0x11a11b[_0x42fa('0x47')]};return db[_0x42fa('0x36')][_0x42fa('0x26')](_0x21bb70)[_0x42fa('0x2b')](function(_0x4af921){_0x22b36b[_0x42fa('0x26')]=_0x4af921;if(_0x48e8ac[_0x42fa('0x3b')][_0x42fa('0x4a')]){_0x11a11b[_0x42fa('0x4b')]=[{'all':!![]}];}return db[_0x42fa('0x36')]['findAll'](_0x11a11b);})['then'](function(_0x17aa8f){_0x22b36b[_0x42fa('0x4c')]=_0x17aa8f;return _0x22b36b;})[_0x42fa('0x2b')](respondWithFilteredResult(_0x87dbdc,_0x11a11b))[_0x42fa('0x4d')](handleError(_0x87dbdc,null));};exports[_0x42fa('0x4e')]=function(_0x19b131,_0x4e3351){var _0x193414={'raw':!![],'where':{'id':_0x19b131[_0x42fa('0x4f')]['id']}},_0x231882={};_0x231882[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db[_0x42fa('0x36')]['rawAttributes']);_0x231882['query']=_[_0x42fa('0x50')](_0x19b131[_0x42fa('0x3b')]);_0x231882[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x231882['model'],_0x231882[_0x42fa('0x3b')]);_0x193414[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x231882['model'],qs[_0x42fa('0x3f')](_0x19b131[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x193414[_0x42fa('0x3e')]=_0x193414[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x193414['attributes']:_0x231882['model'];if(_0x19b131[_0x42fa('0x3b')]['includeAll']){_0x193414[_0x42fa('0x4b')]=[{'all':!![]}];}_0x193414=_['merge']({},_0x193414,_0x19b131[_0x42fa('0x51')]);return db['OpenchannelQueue'][_0x42fa('0x52')](_0x193414)[_0x42fa('0x2b')](handleEntityNotFound(_0x4e3351,null))['then'](respondWithResult(_0x4e3351,null))[_0x42fa('0x4d')](handleError(_0x4e3351,null));};exports['create']=function(_0x18c023,_0x5cf17c){return db[_0x42fa('0x36')][_0x42fa('0x53')](_0x18c023[_0x42fa('0x54')],{})[_0x42fa('0x2b')](function(_0x253fff){var _0x3c9db7=_0x18c023[_0x42fa('0x55')][_0x42fa('0x2d')]({'plain':!![]});if(!_0x3c9db7)throw new Error(_0x42fa('0x56'));if(_0x3c9db7[_0x42fa('0x57')]===_0x42fa('0x55')){var _0x50f8ef=_0x253fff[_0x42fa('0x2d')]({'plain':!![]});var _0x376749='OpenchannelQueues';return db['UserProfileSection'][_0x42fa('0x52')]({'where':{'name':_0x376749,'userProfileId':_0x3c9db7[_0x42fa('0x58')]},'raw':!![]})['then'](function(_0x1dbcde){if(_0x1dbcde&&_0x1dbcde[_0x42fa('0x59')]===0x0){return db[_0x42fa('0x2f')]['create']({'name':_0x50f8ef[_0x42fa('0x32')],'resourceId':_0x50f8ef['id'],'type':_0x1dbcde[_0x42fa('0x32')],'sectionId':_0x1dbcde['id']},{})[_0x42fa('0x2b')](function(){return _0x253fff;});}else{return _0x253fff;}})[_0x42fa('0x4d')](function(_0x3bd348){logger[_0x42fa('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3bd348);throw _0x3bd348;});}return _0x253fff;})['then'](respondWithResult(_0x5cf17c,0xc9))[_0x42fa('0x4d')](handleError(_0x5cf17c,null));};exports[_0x42fa('0x5a')]=function(_0x4846e3,_0xf92936){if(_0x4846e3[_0x42fa('0x54')]['id']){delete _0x4846e3[_0x42fa('0x54')]['id'];}return db[_0x42fa('0x36')]['find']({'where':{'id':_0x4846e3[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0xf92936,null))[_0x42fa('0x2b')](saveUpdates(_0x4846e3['body'],null))[_0x42fa('0x2b')](respondWithResult(_0xf92936,null))[_0x42fa('0x4d')](handleError(_0xf92936,null));};exports[_0x42fa('0x2c')]=function(_0xdd1b91,_0x116870){return db[_0x42fa('0x36')]['find']({'where':{'id':_0xdd1b91[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x116870,null))[_0x42fa('0x2b')](removeEntity(_0x116870,null))[_0x42fa('0x4d')](handleError(_0x116870,null));};exports[_0x42fa('0x5b')]=function(_0x41fd5a,_0xecd5e2){return db[_0x42fa('0x36')][_0x42fa('0x5b')]()[_0x42fa('0x2b')](respondWithResult(_0xecd5e2,null))['catch'](handleError(_0xecd5e2,null));};exports['getMembers']=function(_0xba9bc2,_0x26550e,_0x30f172){var _0x2eb050={'raw':!![],'where':{}},_0x25f85d={},_0xb0eb65;return db[_0x42fa('0x36')][_0x42fa('0x5c')]({'where':{'id':_0xba9bc2[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x26550e,null))[_0x42fa('0x2b')](function(_0x2e04ac){if(_0x2e04ac){_0xb0eb65=_0x2e04ac[_0x42fa('0x2d')]({'plain':!![]});_0x25f85d[_0x42fa('0x3a')]=_['keys'](db['UserOpenchannelQueue'][_0x42fa('0x5d')]);_0x25f85d[_0x42fa('0x3b')]=_[_0x42fa('0x50')](_0xba9bc2[_0x42fa('0x3b')]);_0x25f85d[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x25f85d[_0x42fa('0x3a')],_0x25f85d[_0x42fa('0x3b')]);_0x2eb050[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x25f85d['model'],qs[_0x42fa('0x3f')](_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x2eb050[_0x42fa('0x3e')]=_0x2eb050[_0x42fa('0x3e')]['length']?_0x2eb050[_0x42fa('0x3e')]:_0x25f85d[_0x42fa('0x3a')];if(!_0xba9bc2['query'][_0x42fa('0x41')](_0x42fa('0x42'))){_0x2eb050[_0x42fa('0x25')]=qs[_0x42fa('0x25')](_0xba9bc2['query'][_0x42fa('0x25')]);_0x2eb050[_0x42fa('0x23')]=qs[_0x42fa('0x23')](_0xba9bc2[_0x42fa('0x3b')]['offset']);}_0x2eb050[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x44')]);_0x2eb050[_0x42fa('0x47')]=qs['filters'](_[_0x42fa('0x45')](_0xba9bc2['query'],_0x25f85d['filters']));_0x2eb050[_0x42fa('0x47')][_0x42fa('0x5e')]=_0x2e04ac['id'];if(_0xba9bc2[_0x42fa('0x3b')]['filter']){_0x2eb050[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x2eb050[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x2eb050[_0x42fa('0x3e')],function(_0x148fd8){var _0x4ce09f={};_0x4ce09f[_0x148fd8]={'$like':'%'+_0xba9bc2[_0x42fa('0x3b')][_0x42fa('0x46')]+'%'};return _0x4ce09f;})});}_0x2eb050=_[_0x42fa('0x48')]({},_0x2eb050,_0xba9bc2[_0x42fa('0x51')]);return db[_0x42fa('0x5f')][_0x42fa('0x60')](_0x2eb050);}})[_0x42fa('0x2b')](function(_0x62eb37){if(_0x62eb37){return db[_0x42fa('0x61')][_0x42fa('0x62')]({'where':{'id':_[_0x42fa('0x35')](_0x62eb37,_0x42fa('0x63')),'role':_0x42fa('0x64')},'attributes':['id','name',_0x42fa('0x65'),_0x42fa('0x66'),_0x42fa('0x67')]});}})[_0x42fa('0x2b')](function(_0x12696e){if(_0x12696e){return{'count':_0x12696e[_0x42fa('0x26')],'rows':_[_0x42fa('0x35')](_0x12696e[_0x42fa('0x4c')],function(_0x2910e6){return{'membername':_0x2910e6[_0x42fa('0x32')],'UserId':_0x2910e6['id'],'queue_name':_0xb0eb65[_0x42fa('0x32')],'OpenchannelQueueId':_0xb0eb65['id'],'interface':util['format'](_0x42fa('0x68'),_0x42fa('0x69'),_0x2910e6[_0x42fa('0x32')]),'penalty':0x0,'paused':_0x2910e6[_0x42fa('0x65')],'createdAt':_0x2910e6['createdAt'],'updatedAt':_0x2910e6['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x26550e,_0x2eb050))[_0x42fa('0x4d')](handleError(_0x26550e,null));};exports['getTeams']=function(_0x915a78,_0x3b4985,_0x25e356){var _0x5db07d={};var _0x711ab2={};var _0x11b86d;var _0x3938a5;return db[_0x42fa('0x36')]['findOne']({'where':{'id':_0x915a78[_0x42fa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3b4985,null))[_0x42fa('0x2b')](function(_0x154c85){if(_0x154c85){_0x11b86d=_0x154c85;_0x711ab2[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db[_0x42fa('0x6a')][_0x42fa('0x5d')]);_0x711ab2['query']=_[_0x42fa('0x50')](_0x915a78[_0x42fa('0x3b')]);_0x711ab2[_0x42fa('0x3c')]=_[_0x42fa('0x3d')](_0x711ab2[_0x42fa('0x3a')],_0x711ab2[_0x42fa('0x3b')]);_0x5db07d[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x711ab2[_0x42fa('0x3a')],qs[_0x42fa('0x3f')](_0x915a78[_0x42fa('0x3b')]['fields']));_0x5db07d[_0x42fa('0x3e')]=_0x5db07d[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x5db07d[_0x42fa('0x3e')]:_0x711ab2[_0x42fa('0x3a')];_0x5db07d[_0x42fa('0x43')]=qs[_0x42fa('0x44')](_0x915a78['query']['sort']);_0x5db07d[_0x42fa('0x47')]=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x915a78[_0x42fa('0x3b')],_0x711ab2[_0x42fa('0x3c')]));if(_0x915a78['query'][_0x42fa('0x46')]){_0x5db07d[_0x42fa('0x47')]=_['merge'](_0x5db07d[_0x42fa('0x47')],{'$or':_[_0x42fa('0x35')](_0x5db07d[_0x42fa('0x3e')],function(_0x53f4d9){var _0x2c830b={};_0x2c830b[_0x53f4d9]={'$like':'%'+_0x915a78['query']['filter']+'%'};return _0x2c830b;})});}_0x5db07d=_[_0x42fa('0x48')]({},_0x5db07d,_0x915a78[_0x42fa('0x51')]);return _0x11b86d[_0x42fa('0x6b')](_0x5db07d);}})['then'](function(_0x27c45f){if(_0x27c45f){_0x3938a5=_0x27c45f[_0x42fa('0x40')];if(!_0x915a78[_0x42fa('0x3b')][_0x42fa('0x41')](_0x42fa('0x42'))){_0x5db07d['limit']=qs['limit'](_0x915a78['query'][_0x42fa('0x25')]);_0x5db07d[_0x42fa('0x23')]=qs[_0x42fa('0x23')](_0x915a78[_0x42fa('0x3b')][_0x42fa('0x23')]);}return _0x11b86d[_0x42fa('0x6b')](_0x5db07d);}})[_0x42fa('0x2b')](function(_0x514a89){if(_0x514a89){return _0x514a89?{'count':_0x3938a5,'rows':_0x514a89}:null;}})[_0x42fa('0x2b')](respondWithResult(_0x3b4985,null))['catch'](handleError(_0x3b4985,null));};exports[_0x42fa('0x6c')]=function(_0xc1ed35,_0x3e34b4,_0x2f9d31){var _0x578855=_0xc1ed35[_0x42fa('0x54')][_0x42fa('0x6d')];return db['Team'][_0x42fa('0x60')]({'where':{'id':_0x578855},'attributes':['id'],'include':[{'model':db[_0x42fa('0x61')],'as':'Agents','attributes':['id','name',_0x42fa('0x6e'),'voicePause',_0x42fa('0x6f')],'raw':!![]}]})['then'](function(_0x2e4801){if(_0x2e4801){var _0x4ff8e2=_[_0x42fa('0x70')](_0x2e4801,function(_0x28647a){var _0x3a8357=_0x28647a['get']({'plain':!![]});return _0x3a8357[_0x42fa('0x71')];});return db['OpenchannelQueue'][_0x42fa('0x52')]({'where':{'id':_0xc1ed35[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](function(_0x899d1c){return db[_0x42fa('0x72')][_0x42fa('0x73')](function(_0x278a18){return _0x899d1c[_0x42fa('0x6c')](_0x578855,{'transaction':_0x278a18})[_0x42fa('0x2b')](function(){return BPromise[_0x42fa('0x74')](_0x4ff8e2,function(_0xcdd22d){return db[_0x42fa('0x5f')]['findOrCreate']({'where':{'UserId':_0xcdd22d['id'],'OpenchannelQueueId':_0xc1ed35[_0x42fa('0x4f')]['id']},'transaction':_0x278a18});});})[_0x42fa('0x2b')](function(){_0x4ff8e2[_0x42fa('0x75')](function(_0x596f30){socket['emit']('userOpenchannelQueue:save',{'UserId':_0x596f30['id'],'OpenchannelQueueId':_0x899d1c['id']});});});});});}})[_0x42fa('0x2b')](respondWithStatusCode(_0x3e34b4,null))[_0x42fa('0x4d')](handleError(_0x3e34b4,null));};exports[_0x42fa('0x76')]=function(_0x165834,_0x48e96d,_0x5b8b05){return db[_0x42fa('0x6a')]['findAll']({'where':{'id':_0x165834[_0x42fa('0x3b')][_0x42fa('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x42fa('0x61')],'as':_0x42fa('0x71'),'attributes':['id'],'raw':!![]}]})[_0x42fa('0x2b')](handleEntityNotFound(_0x48e96d,null))['then'](function(_0x2d99df){var _0x1e542f=_[_0x42fa('0x35')](_0x2d99df,'id');var _0x255e20=[];var _0x1ad793=[];var _0x49f93e=squel['select']();_0x49f93e['field'](_0x42fa('0x77'))[_0x42fa('0x78')](_0x42fa('0x79'),'tq')[_0x42fa('0x7a')](_0x42fa('0x7b'),'ut',_0x42fa('0x7c'))[_0x42fa('0x47')](_0x42fa('0x7d'),_0x165834[_0x42fa('0x4f')]['id']);for(var _0x38d8f9=0x0;_0x38d8f9<_0x2d99df['length'];_0x38d8f9+=0x1){let _0x3365c4=_0x2d99df[_0x38d8f9];for(var _0xa0362b=0x0;_0xa0362b<_0x3365c4[_0x42fa('0x71')]['length'];_0xa0362b+=0x1){let _0x428750=_0x3365c4['Agents'][_0xa0362b];var _0x576340=_0x49f93e['clone']();_0x576340[_0x42fa('0x47')](_0x42fa('0x7e'),_0x428750['id']);_0x1ad793['push'](db[_0x42fa('0x72')]['query'](_0x576340[_0x42fa('0x7f')](),{'type':db[_0x42fa('0x72')][_0x42fa('0x80')][_0x42fa('0x81')]})[_0x42fa('0x2b')](function(_0x5ee393){if(_0x5ee393[_0x42fa('0x40')]===0x1){return _0x428750['id'];}else{var _0x2423ee=_[_0x42fa('0x82')](_[_0x42fa('0x35')](_0x5ee393,_0x42fa('0x83')),function(_0x290fed){return _[_0x42fa('0x84')](_0x1e542f,_0x290fed);});if(_0x2423ee){return _0x428750['id'];}}}));}}return BPromise['all'](_0x1ad793)[_0x42fa('0x2b')](function(_0x2157de){_0x255e20=_(_0x255e20)['union'](_0x2157de)[_0x42fa('0x85')]()[_0x42fa('0x86')]();return db[_0x42fa('0x36')][_0x42fa('0x52')]({'where':{'id':_0x165834[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](function(_0x1cb56a){return db[_0x42fa('0x72')][_0x42fa('0x73')](function(_0x5e0f8f){return _0x1cb56a[_0x42fa('0x76')](_0x165834['query'][_0x42fa('0x6d')],{'transaction':_0x5e0f8f})[_0x42fa('0x2b')](function(){if(!_[_0x42fa('0x87')](_0x255e20)){return _0x1cb56a[_0x42fa('0x88')](_0x255e20,{'transaction':_0x5e0f8f});}})[_0x42fa('0x2b')](function(){_0x255e20['forEach'](function(_0x19e1ec){socket['emit']('userOpenchannelQueue:remove',{'UserId':_0x19e1ec,'OpenchannelQueueId':_0x1cb56a['id']});});});});});});})[_0x42fa('0x2b')](respondWithStatusCode(_0x48e96d,null))[_0x42fa('0x4d')](handleError(_0x48e96d,null));};exports['addAgents']=function(_0x11f299,_0x2549e4,_0x5b1ef8){return db['OpenchannelQueue'][_0x42fa('0x52')]({'where':{'id':_0x11f299[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x2549e4,null))[_0x42fa('0x2b')](function(_0x18690d){if(_0x18690d){return _0x18690d['addAgents'](_0x11f299[_0x42fa('0x54')][_0x42fa('0x6d')],_[_0x42fa('0x89')](_0x11f299[_0x42fa('0x54')],['ids','id'])||{})[_0x42fa('0x8a')](function(_0x48d257){for(var _0x2a6704=0x0;_0x2a6704<_0x11f299[_0x42fa('0x54')][_0x42fa('0x6d')][_0x42fa('0x40')];_0x2a6704+=0x1){socket[_0x42fa('0x8b')](_0x42fa('0x8c'),{'UserId':Number(_0x11f299['body'][_0x42fa('0x6d')][_0x2a6704]),'OpenchannelQueueId':Number(_0x11f299['params']['id'])});}return _0x48d257;});}})[_0x42fa('0x2b')](respondWithResult(_0x2549e4,null))[_0x42fa('0x4d')](handleError(_0x2549e4,null));};exports['removeAgents']=function(_0x1dad17,_0x3ce253,_0x3f9f0e){return db[_0x42fa('0x36')][_0x42fa('0x52')]({'where':{'id':_0x1dad17[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0x3ce253,null))['then'](function(_0xb05074){if(_0xb05074){return _0xb05074[_0x42fa('0x88')](_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')])[_0x42fa('0x2b')](function(){if(_[_0x42fa('0x8d')](_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')])){for(var _0x2b5cb8=0x0;_0x2b5cb8<_0x1dad17['query'][_0x42fa('0x6d')]['length'];_0x2b5cb8+=0x1){socket['emit'](_0x42fa('0x8e'),{'UserId':Number(_0x1dad17[_0x42fa('0x3b')][_0x42fa('0x6d')][_0x2b5cb8]),'OpenchannelQueueId':Number(_0x1dad17[_0x42fa('0x4f')]['id'])});}}else{socket[_0x42fa('0x8b')](_0x42fa('0x8e'),{'UserId':Number(_0x1dad17[_0x42fa('0x3b')]['ids']),'OpenchannelQueueId':Number(_0x1dad17[_0x42fa('0x4f')]['id'])});}});}})[_0x42fa('0x2b')](respondWithStatusCode(_0x3ce253,null))[_0x42fa('0x4d')](handleError(_0x3ce253,null));};exports['getAgents']=function(_0x4de3a4,_0xead5c3,_0x76d1ed){var _0x31949d={};var _0x297a19={};var _0x2b9cd4;var _0x2dd42a;return db[_0x42fa('0x36')][_0x42fa('0x5c')]({'where':{'id':_0x4de3a4[_0x42fa('0x4f')]['id']}})[_0x42fa('0x2b')](handleEntityNotFound(_0xead5c3,null))[_0x42fa('0x2b')](function(_0x5dcf66){if(_0x5dcf66){_0x2b9cd4=_0x5dcf66;_0x297a19[_0x42fa('0x3a')]=_[_0x42fa('0x50')](db['User'][_0x42fa('0x5d')]);_0x297a19['query']=_['keys'](_0x4de3a4[_0x42fa('0x3b')]);_0x297a19['filters']=_[_0x42fa('0x3d')](_0x297a19[_0x42fa('0x3a')],_0x297a19[_0x42fa('0x3b')]);_0x31949d[_0x42fa('0x3e')]=_[_0x42fa('0x3d')](_0x297a19[_0x42fa('0x3a')],qs[_0x42fa('0x3f')](_0x4de3a4[_0x42fa('0x3b')][_0x42fa('0x3f')]));_0x31949d[_0x42fa('0x3e')]=_0x31949d[_0x42fa('0x3e')][_0x42fa('0x40')]?_0x31949d['attributes']:_0x297a19['model'];_0x31949d['order']=qs[_0x42fa('0x44')](_0x4de3a4['query'][_0x42fa('0x44')]);_0x31949d[_0x42fa('0x47')]=qs[_0x42fa('0x3c')](_[_0x42fa('0x45')](_0x4de3a4[_0x42fa('0x3b')],_0x297a19[_0x42fa('0x3c')]));if(_0x4de3a4[_0x42fa('0x3b')]['filter']){_0x31949d[_0x42fa('0x47')]=_[_0x42fa('0x48')](_0x31949d[_0x42fa('0x47')],{'$or':_['map'](_0x31949d[_0x42fa('0x3e')],function(_0x734e34){var _0x1e1e08={};_0x1e1e08[_0x734e34]={'$like':'%'+_0x4de3a4['query'][_0x42fa('0x46')]+'%'};return _0x1e1e08;})});}_0x31949d=_[_0x42fa('0x48')]({},_0x31949d,_0x4de3a4[_0x42fa('0x51')]);return _0x2b9cd4[_0x42fa('0x8f')](_0x31949d);}})[_0x42fa('0x2b')](function(_0x47de3f){if(_0x47de3f){_0x2dd42a=_0x47de3f[_0x42fa('0x40')];if(!_0x4de3a4['query'][_0x42fa('0x41')](_0x42fa('0x42'))){_0x31949d[_0x42fa('0x25')]=qs[_0x42fa('0x25')](_0x4de3a4[_0x42fa('0x3b')][_0x42fa('0x25')]);_0x31949d['offset']=qs['offset'](_0x4de3a4['query'][_0x42fa('0x23')]);}return _0x2b9cd4['getAgents'](_0x31949d);}})['then'](function(_0x5f52e0){if(_0x5f52e0){return _0x5f52e0?{'count':_0x2dd42a,'rows':_0x5f52e0}:null;}})['then'](respondWithResult(_0xead5c3,null))[_0x42fa('0x4d')](handleError(_0xead5c3,null));};
\ No newline at end of file
+var _0x6530=['isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','localhost','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','OpenchannelQueues','UserProfileResource','sendStatus','error','stack','send','OpenchannelQueue','rawAttributes','fieldName','type','key','map','name','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','intersection','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','catch','update','describe','getMembers','UserOpenchannelQueue','OpenchannelQueueId','User','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','getTeams','findOne','addTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','TeamId','includes','union','value','isEmpty','userOpenchannelQueue:remove','addAgents','spread','removeAgents'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x6530,0x120));var _0x0653=function(_0x5b5ffe,_0xa8bf6e){_0x5b5ffe=_0x5b5ffe-0x0;var _0x4c2fb0=_0x6530[_0x5b5ffe];return _0x4c2fb0;};'use strict';var emlformat=require(_0x0653('0x0'));var rimraf=require(_0x0653('0x1'));var zipdir=require(_0x0653('0x2'));var jsonpatch=require(_0x0653('0x3'));var rp=require(_0x0653('0x4'));var moment=require('moment');var BPromise=require(_0x0653('0x5'));var Mustache=require(_0x0653('0x6'));var util=require(_0x0653('0x7'));var path=require(_0x0653('0x8'));var sox=require(_0x0653('0x9'));var csv=require(_0x0653('0xa'));var ejs=require(_0x0653('0xb'));var fs=require('fs');var fs_extra=require(_0x0653('0xc'));var _=require(_0x0653('0xd'));var squel=require(_0x0653('0xe'));var crypto=require(_0x0653('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x0653('0x10'));var toCsv=require(_0x0653('0xa'));var querystring=require(_0x0653('0x11'));var Papa=require(_0x0653('0x12'));var Redis=require(_0x0653('0x13'));var authService=require(_0x0653('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x0653('0x15'));var hardwareService=require(_0x0653('0x16'));var logger=require(_0x0653('0x17'))('api');var utils=require(_0x0653('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0653('0x19'))['db'];config[_0x0653('0x1a')]=_[_0x0653('0x1b')](config[_0x0653('0x1a')],{'host':_0x0653('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0653('0x1a')]));require('./openchannelQueue.socket')[_0x0653('0x1d')](socket);function respondWithStatusCode(_0x2948f6,_0x89072d){_0x89072d=_0x89072d||0xcc;return function(_0x54eb87){if(_0x54eb87){return _0x2948f6['sendStatus'](_0x89072d);}return _0x2948f6[_0x0653('0x1e')](_0x89072d)[_0x0653('0x1f')]();};}function respondWithResult(_0x579ef,_0x3b18e9){_0x3b18e9=_0x3b18e9||0xc8;return function(_0x54f395){if(_0x54f395){return _0x579ef[_0x0653('0x1e')](_0x3b18e9)[_0x0653('0x20')](_0x54f395);}};}function respondWithFilteredResult(_0x5f091c,_0x466201){return function(_0xb4e3dd){if(_0xb4e3dd){var _0x36fdd0=typeof _0x466201[_0x0653('0x21')]===_0x0653('0x22')&&typeof _0x466201[_0x0653('0x23')]==='undefined';var _0x4d306a=_0xb4e3dd[_0x0653('0x24')];var _0x8ad0e0=_0x36fdd0?0x0:_0x466201[_0x0653('0x21')];var _0x15da85=_0x36fdd0?_0xb4e3dd['count']:_0x466201['offset']+_0x466201['limit'];var _0x2bc3c2;if(_0x15da85>=_0x4d306a){_0x15da85=_0x4d306a;_0x2bc3c2=0xc8;}else{_0x2bc3c2=0xce;}_0x5f091c[_0x0653('0x1e')](_0x2bc3c2);return _0x5f091c[_0x0653('0x25')](_0x0653('0x26'),_0x8ad0e0+'-'+_0x15da85+'/'+_0x4d306a)[_0x0653('0x20')](_0xb4e3dd);}return null;};}function patchUpdates(_0x423162){return function(_0x1f2528){try{jsonpatch[_0x0653('0x27')](_0x1f2528,_0x423162,!![]);}catch(_0x66720d){return BPromise[_0x0653('0x28')](_0x66720d);}return _0x1f2528[_0x0653('0x29')]();};}function saveUpdates(_0x6c4474,_0xf4fd0b){return function(_0x3e01c2){if(_0x3e01c2){return _0x3e01c2['update'](_0x6c4474)[_0x0653('0x2a')](function(_0x8e59b4){return _0x8e59b4;});}return null;};}function removeEntity(_0x3a6ac5,_0x373785){return function(_0x203edf){if(_0x203edf){return _0x203edf[_0x0653('0x2b')]()[_0x0653('0x2a')](function(){var _0x3a7abe=_0x203edf[_0x0653('0x2c')]({'plain':!![]});var _0x3a3dde=_0x0653('0x2d');return db[_0x0653('0x2e')][_0x0653('0x2b')]({'where':{'type':_0x3a3dde,'resourceId':_0x3a7abe['id']}})[_0x0653('0x2a')](function(){return _0x203edf;});})[_0x0653('0x2a')](function(){_0x3a6ac5['status'](0xcc)[_0x0653('0x1f')]();});}};}function handleEntityNotFound(_0x1f791d,_0x85df3b){return function(_0x4f4549){if(!_0x4f4549){_0x1f791d[_0x0653('0x2f')](0x194);}return _0x4f4549;};}function handleError(_0x3e059a,_0x5912e4){_0x5912e4=_0x5912e4||0x1f4;return function(_0x1b6929){logger[_0x0653('0x30')](_0x1b6929[_0x0653('0x31')]);if(_0x1b6929['name']){delete _0x1b6929['name'];}_0x3e059a[_0x0653('0x1e')](_0x5912e4)[_0x0653('0x32')](_0x1b6929);};}exports['index']=function(_0x18da10,_0x410dc7){var _0x9b3ad7={},_0x56d9a8={},_0x376d29={'count':0x0,'rows':[]};var _0x1eae7c=_['map'](db[_0x0653('0x33')][_0x0653('0x34')],function(_0x1f5c04){return{'name':_0x1f5c04[_0x0653('0x35')],'type':_0x1f5c04[_0x0653('0x36')][_0x0653('0x37')]};});_0x56d9a8['model']=_[_0x0653('0x38')](_0x1eae7c,_0x0653('0x39'));_0x56d9a8[_0x0653('0x3a')]=_[_0x0653('0x3b')](_0x18da10[_0x0653('0x3a')]);_0x56d9a8['filters']=_['intersection'](_0x56d9a8[_0x0653('0x3c')],_0x56d9a8['query']);_0x9b3ad7[_0x0653('0x3d')]=_['intersection'](_0x56d9a8['model'],qs[_0x0653('0x3e')](_0x18da10[_0x0653('0x3a')][_0x0653('0x3e')]));_0x9b3ad7[_0x0653('0x3d')]=_0x9b3ad7[_0x0653('0x3d')][_0x0653('0x3f')]?_0x9b3ad7['attributes']:_0x56d9a8[_0x0653('0x3c')];if(!_0x18da10[_0x0653('0x3a')][_0x0653('0x40')](_0x0653('0x41'))){_0x9b3ad7[_0x0653('0x23')]=qs['limit'](_0x18da10[_0x0653('0x3a')][_0x0653('0x23')]);_0x9b3ad7[_0x0653('0x21')]=qs[_0x0653('0x21')](_0x18da10[_0x0653('0x3a')][_0x0653('0x21')]);}_0x9b3ad7[_0x0653('0x42')]=qs[_0x0653('0x43')](_0x18da10[_0x0653('0x3a')][_0x0653('0x43')]);_0x9b3ad7[_0x0653('0x44')]=qs[_0x0653('0x45')](_[_0x0653('0x46')](_0x18da10[_0x0653('0x3a')],_0x56d9a8[_0x0653('0x45')]),_0x1eae7c);if(_0x18da10[_0x0653('0x3a')][_0x0653('0x47')]){_0x9b3ad7[_0x0653('0x44')]=_[_0x0653('0x48')](_0x9b3ad7[_0x0653('0x44')],{'$or':_[_0x0653('0x38')](_0x1eae7c,function(_0x86ef91){if(_0x86ef91['type']!==_0x0653('0x49')){var _0xb6ec5c={};_0xb6ec5c[_0x86ef91[_0x0653('0x39')]]={'$like':'%'+_0x18da10[_0x0653('0x3a')][_0x0653('0x47')]+'%'};return _0xb6ec5c;}})});}_0x9b3ad7=_[_0x0653('0x48')]({},_0x9b3ad7,_0x18da10[_0x0653('0x4a')]);var _0x527821={'where':_0x9b3ad7['where']};return db['OpenchannelQueue']['count'](_0x527821)['then'](function(_0x52d5b2){_0x376d29[_0x0653('0x24')]=_0x52d5b2;if(_0x18da10[_0x0653('0x3a')][_0x0653('0x4b')]){_0x9b3ad7[_0x0653('0x4c')]=[{'all':!![]}];}return db[_0x0653('0x33')][_0x0653('0x4d')](_0x9b3ad7);})['then'](function(_0x41efd1){_0x376d29[_0x0653('0x4e')]=_0x41efd1;return _0x376d29;})[_0x0653('0x2a')](respondWithFilteredResult(_0x410dc7,_0x9b3ad7))['catch'](handleError(_0x410dc7,null));};exports[_0x0653('0x4f')]=function(_0x4559f3,_0x10f7df){var _0xd57b23={'raw':!![],'where':{'id':_0x4559f3[_0x0653('0x50')]['id']}},_0x1e2111={};_0x1e2111[_0x0653('0x3c')]=_[_0x0653('0x3b')](db[_0x0653('0x33')][_0x0653('0x34')]);_0x1e2111[_0x0653('0x3a')]=_[_0x0653('0x3b')](_0x4559f3['query']);_0x1e2111[_0x0653('0x45')]=_[_0x0653('0x51')](_0x1e2111[_0x0653('0x3c')],_0x1e2111[_0x0653('0x3a')]);_0xd57b23[_0x0653('0x3d')]=_[_0x0653('0x51')](_0x1e2111['model'],qs['fields'](_0x4559f3[_0x0653('0x3a')][_0x0653('0x3e')]));_0xd57b23[_0x0653('0x3d')]=_0xd57b23[_0x0653('0x3d')][_0x0653('0x3f')]?_0xd57b23['attributes']:_0x1e2111['model'];if(_0x4559f3[_0x0653('0x3a')][_0x0653('0x4b')]){_0xd57b23[_0x0653('0x4c')]=[{'all':!![]}];}_0xd57b23=_[_0x0653('0x48')]({},_0xd57b23,_0x4559f3[_0x0653('0x4a')]);return db[_0x0653('0x33')][_0x0653('0x52')](_0xd57b23)['then'](handleEntityNotFound(_0x10f7df,null))['then'](respondWithResult(_0x10f7df,null))['catch'](handleError(_0x10f7df,null));};exports['create']=function(_0x8e7ef8,_0x382334){return db['OpenchannelQueue'][_0x0653('0x53')](_0x8e7ef8[_0x0653('0x54')],{})['then'](function(_0x5c7fb7){var _0x1e230f=_0x8e7ef8['user'][_0x0653('0x2c')]({'plain':!![]});if(!_0x1e230f)throw new Error(_0x0653('0x55'));if(_0x1e230f[_0x0653('0x56')]===_0x0653('0x57')){var _0x1872f1=_0x5c7fb7[_0x0653('0x2c')]({'plain':!![]});var _0x55eb96='OpenchannelQueues';return db[_0x0653('0x58')][_0x0653('0x52')]({'where':{'name':_0x55eb96,'userProfileId':_0x1e230f[_0x0653('0x59')]},'raw':!![]})[_0x0653('0x2a')](function(_0x1969ae){if(_0x1969ae&&_0x1969ae['autoAssociation']===0x0){return db[_0x0653('0x2e')][_0x0653('0x53')]({'name':_0x1872f1[_0x0653('0x39')],'resourceId':_0x1872f1['id'],'type':_0x1969ae[_0x0653('0x39')],'sectionId':_0x1969ae['id']},{})[_0x0653('0x2a')](function(){return _0x5c7fb7;});}else{return _0x5c7fb7;}})[_0x0653('0x5a')](function(_0x189553){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x189553);throw _0x189553;});}return _0x5c7fb7;})[_0x0653('0x2a')](respondWithResult(_0x382334,0xc9))['catch'](handleError(_0x382334,null));};exports[_0x0653('0x5b')]=function(_0x4d0710,_0x4ada30){if(_0x4d0710['body']['id']){delete _0x4d0710[_0x0653('0x54')]['id'];}return db[_0x0653('0x33')][_0x0653('0x52')]({'where':{'id':_0x4d0710[_0x0653('0x50')]['id']}})[_0x0653('0x2a')](handleEntityNotFound(_0x4ada30,null))[_0x0653('0x2a')](saveUpdates(_0x4d0710[_0x0653('0x54')],null))[_0x0653('0x2a')](respondWithResult(_0x4ada30,null))[_0x0653('0x5a')](handleError(_0x4ada30,null));};exports[_0x0653('0x2b')]=function(_0xee3132,_0x14f743){return db['OpenchannelQueue'][_0x0653('0x52')]({'where':{'id':_0xee3132[_0x0653('0x50')]['id']}})['then'](handleEntityNotFound(_0x14f743,null))[_0x0653('0x2a')](removeEntity(_0x14f743,null))[_0x0653('0x5a')](handleError(_0x14f743,null));};exports[_0x0653('0x5c')]=function(_0x5977ec,_0x2973ef){return db[_0x0653('0x33')][_0x0653('0x5c')]()[_0x0653('0x2a')](respondWithResult(_0x2973ef,null))['catch'](handleError(_0x2973ef,null));};exports[_0x0653('0x5d')]=function(_0x397c91,_0x186a30,_0x45d87b){var _0x31af7c={'raw':!![],'where':{}},_0x3efdd5={},_0x2b37a1;return db[_0x0653('0x33')]['findOne']({'where':{'id':_0x397c91[_0x0653('0x50')]['id']}})[_0x0653('0x2a')](handleEntityNotFound(_0x186a30,null))[_0x0653('0x2a')](function(_0x352188){if(_0x352188){_0x2b37a1=_0x352188[_0x0653('0x2c')]({'plain':!![]});_0x3efdd5[_0x0653('0x3c')]=_[_0x0653('0x3b')](db[_0x0653('0x5e')][_0x0653('0x34')]);_0x3efdd5[_0x0653('0x3a')]=_[_0x0653('0x3b')](_0x397c91[_0x0653('0x3a')]);_0x3efdd5[_0x0653('0x45')]=_[_0x0653('0x51')](_0x3efdd5['model'],_0x3efdd5['query']);_0x31af7c[_0x0653('0x3d')]=_[_0x0653('0x51')](_0x3efdd5[_0x0653('0x3c')],qs[_0x0653('0x3e')](_0x397c91[_0x0653('0x3a')]['fields']));_0x31af7c[_0x0653('0x3d')]=_0x31af7c['attributes'][_0x0653('0x3f')]?_0x31af7c[_0x0653('0x3d')]:_0x3efdd5['model'];if(!_0x397c91[_0x0653('0x3a')][_0x0653('0x40')](_0x0653('0x41'))){_0x31af7c[_0x0653('0x23')]=qs[_0x0653('0x23')](_0x397c91[_0x0653('0x3a')][_0x0653('0x23')]);_0x31af7c[_0x0653('0x21')]=qs[_0x0653('0x21')](_0x397c91['query']['offset']);}_0x31af7c['order']=qs['sort'](_0x397c91[_0x0653('0x3a')][_0x0653('0x43')]);_0x31af7c[_0x0653('0x44')]=qs[_0x0653('0x45')](_[_0x0653('0x46')](_0x397c91[_0x0653('0x3a')],_0x3efdd5[_0x0653('0x45')]));_0x31af7c[_0x0653('0x44')][_0x0653('0x5f')]=_0x352188['id'];if(_0x397c91['query'][_0x0653('0x47')]){_0x31af7c['where']=_[_0x0653('0x48')](_0x31af7c[_0x0653('0x44')],{'$or':_[_0x0653('0x38')](_0x31af7c[_0x0653('0x3d')],function(_0x40d4fd){var _0x32f86a={};_0x32f86a[_0x40d4fd]={'$like':'%'+_0x397c91[_0x0653('0x3a')][_0x0653('0x47')]+'%'};return _0x32f86a;})});}_0x31af7c=_[_0x0653('0x48')]({},_0x31af7c,_0x397c91[_0x0653('0x4a')]);return db[_0x0653('0x5e')]['findAll'](_0x31af7c);}})['then'](function(_0x3c8a46){if(_0x3c8a46){return db[_0x0653('0x60')]['findAndCountAll']({'where':{'id':_[_0x0653('0x38')](_0x3c8a46,'UserId'),'role':_0x0653('0x61')},'attributes':['id','name',_0x0653('0x62'),_0x0653('0x63'),_0x0653('0x64')]});}})[_0x0653('0x2a')](function(_0x110534){if(_0x110534){return{'count':_0x110534[_0x0653('0x24')],'rows':_[_0x0653('0x38')](_0x110534[_0x0653('0x4e')],function(_0x4bd024){return{'membername':_0x4bd024[_0x0653('0x39')],'UserId':_0x4bd024['id'],'queue_name':_0x2b37a1['name'],'OpenchannelQueueId':_0x2b37a1['id'],'interface':util[_0x0653('0x65')](_0x0653('0x66'),'SIP',_0x4bd024[_0x0653('0x39')]),'penalty':0x0,'paused':_0x4bd024[_0x0653('0x62')],'createdAt':_0x4bd024[_0x0653('0x64')],'updatedAt':_0x4bd024[_0x0653('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x186a30,_0x31af7c))[_0x0653('0x5a')](handleError(_0x186a30,null));};exports[_0x0653('0x67')]=function(_0x533213,_0x5df3e2,_0x144d17){var _0x771b8a={};var _0x5ef4bc={};var _0x517067;var _0x2bf579;return db[_0x0653('0x33')][_0x0653('0x68')]({'where':{'id':_0x533213['params']['id']}})[_0x0653('0x2a')](handleEntityNotFound(_0x5df3e2,null))[_0x0653('0x2a')](function(_0x48f207){if(_0x48f207){_0x517067=_0x48f207;_0x5ef4bc[_0x0653('0x3c')]=_[_0x0653('0x3b')](db['Team'][_0x0653('0x34')]);_0x5ef4bc[_0x0653('0x3a')]=_[_0x0653('0x3b')](_0x533213[_0x0653('0x3a')]);_0x5ef4bc[_0x0653('0x45')]=_[_0x0653('0x51')](_0x5ef4bc['model'],_0x5ef4bc[_0x0653('0x3a')]);_0x771b8a[_0x0653('0x3d')]=_[_0x0653('0x51')](_0x5ef4bc[_0x0653('0x3c')],qs[_0x0653('0x3e')](_0x533213[_0x0653('0x3a')][_0x0653('0x3e')]));_0x771b8a[_0x0653('0x3d')]=_0x771b8a[_0x0653('0x3d')][_0x0653('0x3f')]?_0x771b8a[_0x0653('0x3d')]:_0x5ef4bc[_0x0653('0x3c')];_0x771b8a[_0x0653('0x42')]=qs[_0x0653('0x43')](_0x533213['query']['sort']);_0x771b8a[_0x0653('0x44')]=qs['filters'](_[_0x0653('0x46')](_0x533213[_0x0653('0x3a')],_0x5ef4bc[_0x0653('0x45')]));if(_0x533213[_0x0653('0x3a')]['filter']){_0x771b8a[_0x0653('0x44')]=_[_0x0653('0x48')](_0x771b8a[_0x0653('0x44')],{'$or':_[_0x0653('0x38')](_0x771b8a[_0x0653('0x3d')],function(_0x5890cf){var _0x37c982={};_0x37c982[_0x5890cf]={'$like':'%'+_0x533213[_0x0653('0x3a')][_0x0653('0x47')]+'%'};return _0x37c982;})});}_0x771b8a=_['merge']({},_0x771b8a,_0x533213[_0x0653('0x4a')]);return _0x517067['getTeams'](_0x771b8a);}})[_0x0653('0x2a')](function(_0x4738cf){if(_0x4738cf){_0x2bf579=_0x4738cf[_0x0653('0x3f')];if(!_0x533213[_0x0653('0x3a')][_0x0653('0x40')](_0x0653('0x41'))){_0x771b8a[_0x0653('0x23')]=qs[_0x0653('0x23')](_0x533213['query'][_0x0653('0x23')]);_0x771b8a['offset']=qs[_0x0653('0x21')](_0x533213[_0x0653('0x3a')][_0x0653('0x21')]);}return _0x517067[_0x0653('0x67')](_0x771b8a);}})[_0x0653('0x2a')](function(_0x2fdfcd){if(_0x2fdfcd){return _0x2fdfcd?{'count':_0x2bf579,'rows':_0x2fdfcd}:null;}})['then'](respondWithResult(_0x5df3e2,null))[_0x0653('0x5a')](handleError(_0x5df3e2,null));};exports[_0x0653('0x69')]=function(_0x58e0e8,_0x269875,_0x263150){var _0xac3057=_0x58e0e8[_0x0653('0x54')][_0x0653('0x6a')];return db[_0x0653('0x6b')][_0x0653('0x4d')]({'where':{'id':_0xac3057},'attributes':['id'],'include':[{'model':db[_0x0653('0x60')],'as':_0x0653('0x6c'),'attributes':['id','name','online',_0x0653('0x6d'),_0x0653('0x6e')],'raw':!![]}]})[_0x0653('0x2a')](function(_0x2024ad){if(_0x2024ad){var _0xd208ac=_[_0x0653('0x6f')](_0x2024ad,function(_0x52fd71){var _0x208d36=_0x52fd71[_0x0653('0x2c')]({'plain':!![]});return _0x208d36[_0x0653('0x6c')];});return db['OpenchannelQueue'][_0x0653('0x52')]({'where':{'id':_0x58e0e8[_0x0653('0x50')]['id']}})[_0x0653('0x2a')](function(_0x5cbba9){return db[_0x0653('0x70')][_0x0653('0x71')](function(_0x14ce73){return _0x5cbba9[_0x0653('0x69')](_0xac3057,{'transaction':_0x14ce73})[_0x0653('0x2a')](function(){return BPromise[_0x0653('0x72')](_0xd208ac,function(_0x3ac987){return db[_0x0653('0x5e')][_0x0653('0x73')]({'where':{'UserId':_0x3ac987['id'],'OpenchannelQueueId':_0x58e0e8[_0x0653('0x50')]['id']},'transaction':_0x14ce73});});})[_0x0653('0x2a')](function(){_0xd208ac[_0x0653('0x74')](function(_0x10bb97){socket[_0x0653('0x75')](_0x0653('0x76'),{'UserId':_0x10bb97['id'],'OpenchannelQueueId':_0x5cbba9['id']});});});});});}})[_0x0653('0x2a')](respondWithStatusCode(_0x269875,null))[_0x0653('0x5a')](handleError(_0x269875,null));};exports[_0x0653('0x77')]=function(_0x7c46da,_0x2a2e38,_0x3281ac){return db[_0x0653('0x6b')][_0x0653('0x4d')]({'where':{'id':_0x7c46da[_0x0653('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x0653('0x60')],'as':_0x0653('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x0653('0x2a')](handleEntityNotFound(_0x2a2e38,null))[_0x0653('0x2a')](function(_0x24a035){var _0x2d93f7=_[_0x0653('0x38')](_0x24a035,'id');var _0x402760=[];var _0x5c67c6=[];var _0x25afbf=squel[_0x0653('0x78')]();_0x25afbf[_0x0653('0x79')](_0x0653('0x7a'))[_0x0653('0x7b')]('team_has_openchannel_queues','tq')[_0x0653('0x7c')](_0x0653('0x7d'),'ut',_0x0653('0x7e'))[_0x0653('0x44')]('OpenchannelQueueId\x20=\x20?',_0x7c46da[_0x0653('0x50')]['id']);for(var _0x3dac9c=0x0;_0x3dac9c<_0x24a035[_0x0653('0x3f')];_0x3dac9c+=0x1){let _0x2f022b=_0x24a035[_0x3dac9c];for(var _0x30e2de=0x0;_0x30e2de<_0x2f022b[_0x0653('0x6c')][_0x0653('0x3f')];_0x30e2de+=0x1){let _0x4bb6b4=_0x2f022b['Agents'][_0x30e2de];var _0x4dede2=_0x25afbf[_0x0653('0x7f')]();_0x4dede2[_0x0653('0x44')](_0x0653('0x80'),_0x4bb6b4['id']);_0x5c67c6[_0x0653('0x81')](db[_0x0653('0x70')][_0x0653('0x3a')](_0x4dede2['toString'](),{'type':db[_0x0653('0x70')][_0x0653('0x82')][_0x0653('0x83')]})[_0x0653('0x2a')](function(_0x192e87){if(_0x192e87[_0x0653('0x3f')]===0x1){return _0x4bb6b4['id'];}else{var _0x2835c5=_['every'](_[_0x0653('0x38')](_0x192e87,_0x0653('0x84')),function(_0x2a08bc){return _[_0x0653('0x85')](_0x2d93f7,_0x2a08bc);});if(_0x2835c5){return _0x4bb6b4['id'];}}}));}}return BPromise['all'](_0x5c67c6)[_0x0653('0x2a')](function(_0x1939a1){_0x402760=_(_0x402760)[_0x0653('0x86')](_0x1939a1)['compact']()[_0x0653('0x87')]();return db[_0x0653('0x33')][_0x0653('0x52')]({'where':{'id':_0x7c46da[_0x0653('0x50')]['id']}})[_0x0653('0x2a')](function(_0x2a867f){return db[_0x0653('0x70')][_0x0653('0x71')](function(_0x49d7fb){return _0x2a867f[_0x0653('0x77')](_0x7c46da[_0x0653('0x3a')][_0x0653('0x6a')],{'transaction':_0x49d7fb})[_0x0653('0x2a')](function(){if(!_[_0x0653('0x88')](_0x402760)){return _0x2a867f['removeAgents'](_0x402760,{'transaction':_0x49d7fb});}})[_0x0653('0x2a')](function(){_0x402760[_0x0653('0x74')](function(_0x2eb143){socket[_0x0653('0x75')](_0x0653('0x89'),{'UserId':_0x2eb143,'OpenchannelQueueId':_0x2a867f['id']});});});});});});})['then'](respondWithStatusCode(_0x2a2e38,null))[_0x0653('0x5a')](handleError(_0x2a2e38,null));};exports[_0x0653('0x8a')]=function(_0x30df72,_0x493a12,_0x488b1f){return db[_0x0653('0x33')]['find']({'where':{'id':_0x30df72['params']['id']}})[_0x0653('0x2a')](handleEntityNotFound(_0x493a12,null))[_0x0653('0x2a')](function(_0x416715){if(_0x416715){return _0x416715[_0x0653('0x8a')](_0x30df72[_0x0653('0x54')][_0x0653('0x6a')],_['omit'](_0x30df72['body'],[_0x0653('0x6a'),'id'])||{})[_0x0653('0x8b')](function(_0x31f1f1){for(var _0x373784=0x0;_0x373784<_0x30df72[_0x0653('0x54')][_0x0653('0x6a')][_0x0653('0x3f')];_0x373784+=0x1){socket[_0x0653('0x75')](_0x0653('0x76'),{'UserId':Number(_0x30df72[_0x0653('0x54')][_0x0653('0x6a')][_0x373784]),'OpenchannelQueueId':Number(_0x30df72[_0x0653('0x50')]['id'])});}return _0x31f1f1;});}})[_0x0653('0x2a')](respondWithResult(_0x493a12,null))[_0x0653('0x5a')](handleError(_0x493a12,null));};exports[_0x0653('0x8c')]=function(_0x5cd6aa,_0x573d95,_0x4e32){return db[_0x0653('0x33')][_0x0653('0x52')]({'where':{'id':_0x5cd6aa['params']['id']}})[_0x0653('0x2a')](handleEntityNotFound(_0x573d95,null))[_0x0653('0x2a')](function(_0x3d4908){if(_0x3d4908){return _0x3d4908[_0x0653('0x8c')](_0x5cd6aa[_0x0653('0x3a')][_0x0653('0x6a')])['then'](function(){if(_[_0x0653('0x8d')](_0x5cd6aa[_0x0653('0x3a')]['ids'])){for(var _0x5c0912=0x0;_0x5c0912<_0x5cd6aa[_0x0653('0x3a')]['ids']['length'];_0x5c0912+=0x1){socket[_0x0653('0x75')]('userOpenchannelQueue:remove',{'UserId':Number(_0x5cd6aa[_0x0653('0x3a')][_0x0653('0x6a')][_0x5c0912]),'OpenchannelQueueId':Number(_0x5cd6aa[_0x0653('0x50')]['id'])});}}else{socket[_0x0653('0x75')]('userOpenchannelQueue:remove',{'UserId':Number(_0x5cd6aa['query'][_0x0653('0x6a')]),'OpenchannelQueueId':Number(_0x5cd6aa[_0x0653('0x50')]['id'])});}});}})[_0x0653('0x2a')](respondWithStatusCode(_0x573d95,null))[_0x0653('0x5a')](handleError(_0x573d95,null));};exports['getAgents']=function(_0x44606e,_0x2ce6a4,_0x1974a5){var _0x5b3d67={};var _0x3ce3cb={};var _0x13dc82;var _0x41bcd9;return db[_0x0653('0x33')][_0x0653('0x68')]({'where':{'id':_0x44606e['params']['id']}})['then'](handleEntityNotFound(_0x2ce6a4,null))[_0x0653('0x2a')](function(_0x4dec8b){if(_0x4dec8b){_0x13dc82=_0x4dec8b;_0x3ce3cb[_0x0653('0x3c')]=_['keys'](db['User']['rawAttributes']);_0x3ce3cb[_0x0653('0x3a')]=_[_0x0653('0x3b')](_0x44606e[_0x0653('0x3a')]);_0x3ce3cb[_0x0653('0x45')]=_['intersection'](_0x3ce3cb[_0x0653('0x3c')],_0x3ce3cb[_0x0653('0x3a')]);_0x5b3d67['attributes']=_[_0x0653('0x51')](_0x3ce3cb['model'],qs[_0x0653('0x3e')](_0x44606e[_0x0653('0x3a')][_0x0653('0x3e')]));_0x5b3d67['attributes']=_0x5b3d67[_0x0653('0x3d')][_0x0653('0x3f')]?_0x5b3d67[_0x0653('0x3d')]:_0x3ce3cb[_0x0653('0x3c')];_0x5b3d67[_0x0653('0x42')]=qs[_0x0653('0x43')](_0x44606e['query'][_0x0653('0x43')]);_0x5b3d67[_0x0653('0x44')]=qs['filters'](_[_0x0653('0x46')](_0x44606e[_0x0653('0x3a')],_0x3ce3cb[_0x0653('0x45')]));if(_0x44606e[_0x0653('0x3a')][_0x0653('0x47')]){_0x5b3d67[_0x0653('0x44')]=_[_0x0653('0x48')](_0x5b3d67[_0x0653('0x44')],{'$or':_[_0x0653('0x38')](_0x5b3d67[_0x0653('0x3d')],function(_0x2354e5){var _0x3c35d1={};_0x3c35d1[_0x2354e5]={'$like':'%'+_0x44606e[_0x0653('0x3a')][_0x0653('0x47')]+'%'};return _0x3c35d1;})});}_0x5b3d67=_['merge']({},_0x5b3d67,_0x44606e[_0x0653('0x4a')]);return _0x13dc82['getAgents'](_0x5b3d67);}})[_0x0653('0x2a')](function(_0x286aec){if(_0x286aec){_0x41bcd9=_0x286aec[_0x0653('0x3f')];if(!_0x44606e[_0x0653('0x3a')][_0x0653('0x40')](_0x0653('0x41'))){_0x5b3d67['limit']=qs[_0x0653('0x23')](_0x44606e['query']['limit']);_0x5b3d67[_0x0653('0x21')]=qs[_0x0653('0x21')](_0x44606e[_0x0653('0x3a')][_0x0653('0x21')]);}return _0x13dc82[_0x0653('0x8e')](_0x5b3d67);}})[_0x0653('0x2a')](function(_0x62135f){if(_0x62135f){return _0x62135f?{'count':_0x41bcd9,'rows':_0x62135f}:null;}})[_0x0653('0x2a')](respondWithResult(_0x2ce6a4,null))['catch'](handleError(_0x2ce6a4,null));};
\ No newline at end of file
index 99f08e3..15d5f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8144=['events','update','remove','emit'];(function(_0x589d21,_0x133829){var _0x4aff74=function(_0x52141f){while(--_0x52141f){_0x589d21['push'](_0x589d21['shift']());}};_0x4aff74(++_0x133829);}(_0x8144,0x17c));var _0x4814=function(_0x1c7c46,_0x290fec){_0x1c7c46=_0x1c7c46-0x0;var _0x54192f=_0x8144[_0x1c7c46];return _0x54192f;};'use strict';var EventEmitter=require(_0x4814('0x0'));var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4814('0x1'),'afterDestroy':_0x4814('0x2')};function emitEvent(_0x383535){return function(_0x35bf5d,_0x32b2ab,_0x172001){OpenchannelQueueEvents[_0x4814('0x3')](_0x383535+':'+_0x35bf5d['id'],_0x35bf5d);OpenchannelQueueEvents['emit'](_0x383535,_0x35bf5d);_0x172001(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x0613=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelQueue','setMaxListeners'];(function(_0xbb67cb,_0x54888d){var _0x323d68=function(_0x1fcf2e){while(--_0x1fcf2e){_0xbb67cb['push'](_0xbb67cb['shift']());}};_0x323d68(++_0x54888d);}(_0x0613,0x133));var _0x3061=function(_0x503699,_0x152145){_0x503699=_0x503699-0x0;var _0xd66c82=_0x0613[_0x503699];return _0xd66c82;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x3061('0x0'))['db'][_0x3061('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x3061('0x2')](0x0);var events={'afterCreate':_0x3061('0x3'),'afterUpdate':_0x3061('0x4'),'afterDestroy':_0x3061('0x5')};function emitEvent(_0x5cbdbc){return function(_0xfd5d0c,_0x2aa0f3,_0xf4107c){OpenchannelQueueEvents[_0x3061('0x6')](_0x5cbdbc+':'+_0xfd5d0c['id'],_0xfd5d0c);OpenchannelQueueEvents['emit'](_0x5cbdbc,_0xfd5d0c);_0xf4107c(null);};}for(var e in events){if(events[_0x3061('0x7')](e)){var event=events[e];OpenchannelQueue[_0x3061('0x8')](e,emitEvent(event));}}module[_0x3061('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
index f3cd450..ca7018b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17e4=['OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define'];(function(_0xc7ae13,_0x1b887b){var _0x327671=function(_0x4c230d){while(--_0x4c230d){_0xc7ae13['push'](_0xc7ae13['shift']());}};_0x327671(++_0x1b887b);}(_0x17e4,0x110));var _0x417e=function(_0x4d0d48,_0xa5f54f){_0x4d0d48=_0x4d0d48-0x0;var _0x40fa4b=_0x17e4[_0x4d0d48];return _0x40fa4b;};'use strict';var _=require(_0x417e('0x0'));var util=require(_0x417e('0x1'));var logger=require(_0x417e('0x2'))(_0x417e('0x3'));var moment=require(_0x417e('0x4'));var BPromise=require(_0x417e('0x5'));var rp=require(_0x417e('0x6'));var fs=require('fs');var path=require(_0x417e('0x7'));var rimraf=require(_0x417e('0x8'));var config=require(_0x417e('0x9'));var attributes=require(_0x417e('0xa'));module[_0x417e('0xb')]=function(_0x16dd74,_0x41a8d9){return _0x16dd74[_0x417e('0xc')](_0x417e('0xd'),attributes,{'tableName':_0x417e('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf426=['OpenchannelQueue','openchannel_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./openchannelQueue.attributes','exports','define'];(function(_0x3635b8,_0x489a9c){var _0x561717=function(_0x5649f3){while(--_0x5649f3){_0x3635b8['push'](_0x3635b8['shift']());}};_0x561717(++_0x489a9c);}(_0xf426,0x161));var _0x6f42=function(_0x5a64eb,_0x286782){_0x5a64eb=_0x5a64eb-0x0;var _0x3ad930=_0xf426[_0x5a64eb];return _0x3ad930;};'use strict';var _=require(_0x6f42('0x0'));var util=require(_0x6f42('0x1'));var logger=require('../../config/logger')(_0x6f42('0x2'));var moment=require(_0x6f42('0x3'));var BPromise=require(_0x6f42('0x4'));var rp=require(_0x6f42('0x5'));var fs=require('fs');var path=require(_0x6f42('0x6'));var rimraf=require(_0x6f42('0x7'));var config=require('../../config/environment');var attributes=require(_0x6f42('0x8'));module[_0x6f42('0x9')]=function(_0x4b8f57,_0x333ffa){return _0x4b8f57[_0x6f42('0xa')](_0x6f42('0xb'),attributes,{'tableName':_0x6f42('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f6d3e20..8029339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20e5=['options','attributes','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue','where','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','http','redis','defaults','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelQueue','findAll','raw'];(function(_0x347391,_0x858b74){var _0x4b9469=function(_0x4c89ba){while(--_0x4c89ba){_0x347391['push'](_0x347391['shift']());}};_0x4b9469(++_0x858b74);}(_0x20e5,0x113));var _0x520e=function(_0x8f28c5,_0x1a264b){_0x8f28c5=_0x8f28c5-0x0;var _0x1c88f1=_0x20e5[_0x8f28c5];return _0x1c88f1;};'use strict';var _=require(_0x520e('0x0'));var util=require(_0x520e('0x1'));var moment=require(_0x520e('0x2'));var BPromise=require(_0x520e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x520e('0x4'));var db=require(_0x520e('0x5'))['db'];var utils=require(_0x520e('0x6'));var logger=require('../../config/logger')(_0x520e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x520e('0x8')]({'port':0x232a});config[_0x520e('0x9')]=_[_0x520e('0xa')](config[_0x520e('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x520e('0xb'))(new Redis(config[_0x520e('0x9')]));require(_0x520e('0xc'))[_0x520e('0xd')](socket);function respondWithRpcPromise(_0x14895d,_0x49be1a,_0x1e7291){return new BPromise(function(_0x4e1dff,_0x4808c9){return client[_0x520e('0xe')](_0x14895d,_0x1e7291)[_0x520e('0xf')](function(_0x240abf){logger[_0x520e('0x10')](_0x520e('0x11'),_0x49be1a,_0x520e('0x12'));logger[_0x520e('0x13')](_0x520e('0x14'),_0x49be1a,_0x520e('0x12'),JSON[_0x520e('0x15')](_0x240abf));if(_0x240abf[_0x520e('0x16')]){if(_0x240abf[_0x520e('0x16')][_0x520e('0x17')]===0x1f4){logger[_0x520e('0x16')](_0x520e('0x11'),_0x49be1a,_0x240abf[_0x520e('0x16')][_0x520e('0x18')]);return _0x4808c9(_0x240abf[_0x520e('0x16')][_0x520e('0x18')]);}logger[_0x520e('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x49be1a,_0x240abf['error']['message']);return _0x4e1dff(_0x240abf[_0x520e('0x16')]['message']);}else{logger[_0x520e('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x49be1a,_0x520e('0x12'));_0x4e1dff(_0x240abf[_0x520e('0x19')][_0x520e('0x18')]);}})['catch'](function(_0x4dffe6){logger[_0x520e('0x16')](_0x520e('0x11'),_0x49be1a,_0x4dffe6);_0x4808c9(_0x4dffe6);});});}exports['GetOpenchannelQueue']=function(_0x4d4f79){var _0x4fb15e=this;return new Promise(function(_0x5cca67,_0x3a0305){return db[_0x520e('0x1a')][_0x520e('0x1b')]({'raw':_0x4d4f79['options']?_0x4d4f79['options'][_0x520e('0x1c')]===undefined?!![]:![]:!![],'where':_0x4d4f79[_0x520e('0x1d')]?_0x4d4f79[_0x520e('0x1d')]['where']||null:null,'attributes':_0x4d4f79[_0x520e('0x1d')]?_0x4d4f79[_0x520e('0x1d')][_0x520e('0x1e')]||null:null,'limit':_0x4d4f79['options']?_0x4d4f79[_0x520e('0x1d')]['limit']||null:null,'include':_0x4d4f79['options']?_0x4d4f79[_0x520e('0x1d')][_0x520e('0x1f')]?_[_0x520e('0x20')](_0x4d4f79['options'][_0x520e('0x1f')],function(_0x3ed201){return{'model':db[_0x3ed201['model']],'as':_0x3ed201['as'],'attributes':_0x3ed201['attributes'],'include':_0x3ed201['include']?_[_0x520e('0x20')](_0x3ed201[_0x520e('0x1f')],function(_0x24886c){return{'model':db[_0x24886c[_0x520e('0x21')]],'as':_0x24886c['as'],'attributes':_0x24886c[_0x520e('0x1e')],'include':_0x24886c[_0x520e('0x1f')]?_[_0x520e('0x20')](_0x24886c[_0x520e('0x1f')],function(_0x25c9a4){return{'model':db[_0x25c9a4[_0x520e('0x21')]],'as':_0x25c9a4['as'],'attributes':_0x25c9a4[_0x520e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x520e('0xf')](function(_0x46f62b){logger[_0x520e('0x10')](_0x520e('0x22'),_0x4d4f79);logger[_0x520e('0x13')](_0x520e('0x22'),_0x4d4f79,JSON['stringify'](_0x46f62b));_0x5cca67(_0x46f62b);})['catch'](function(_0x3542b8){logger[_0x520e('0x16')](_0x520e('0x22'),_0x3542b8[_0x520e('0x18')],_0x4d4f79);_0x3a0305(_0x4fb15e[_0x520e('0x16')](0x1f4,_0x3542b8['message']));});});};exports[_0x520e('0x23')]=function(_0x4ee51a){var _0x25ceff=this;return new Promise(function(_0x489eaf,_0x1d4d09){return db[_0x520e('0x1a')]['find']({'raw':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a['options'][_0x520e('0x1c')]===undefined?!![]:![]:!![],'where':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')][_0x520e('0x24')]||null:null,'attributes':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')]['attributes']||null:null,'include':_0x4ee51a[_0x520e('0x1d')]?_0x4ee51a[_0x520e('0x1d')]['include']?_[_0x520e('0x20')](_0x4ee51a['options'][_0x520e('0x1f')],function(_0x51ec42){return{'model':db[_0x51ec42['model']],'as':_0x51ec42['as'],'attributes':_0x51ec42[_0x520e('0x1e')],'include':_0x51ec42[_0x520e('0x1f')]?_['map'](_0x51ec42[_0x520e('0x1f')],function(_0x52885e){return{'model':db[_0x52885e[_0x520e('0x21')]],'as':_0x52885e['as'],'attributes':_0x52885e[_0x520e('0x1e')],'include':_0x52885e[_0x520e('0x1f')]?_[_0x520e('0x20')](_0x52885e['include'],function(_0x59ad61){return{'model':db[_0x59ad61[_0x520e('0x21')]],'as':_0x59ad61['as'],'attributes':_0x59ad61['attributes']};}):[]};}):[]};}):[]:[]})[_0x520e('0xf')](function(_0x3afccb){logger[_0x520e('0x10')](_0x520e('0x23'),_0x4ee51a);logger['debug'](_0x520e('0x23'),_0x4ee51a,JSON[_0x520e('0x15')](_0x3afccb));_0x489eaf(_0x3afccb);})[_0x520e('0x25')](function(_0x21de17){logger['error'](_0x520e('0x23'),_0x21de17[_0x520e('0x18')],_0x4ee51a);_0x1d4d09(_0x25ceff[_0x520e('0x16')](0x1f4,_0x21de17[_0x520e('0x18')]));});});};
\ No newline at end of file
+var _0xef4b=['ShowOpenchannelQueue','OpenchannelQueue','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','catch','GetOpenchannelQueue','findAll','options','attributes','limit','include','model','map','info'];(function(_0x1a48ba,_0x43503b){var _0x1dbe2b=function(_0x875ac0){while(--_0x875ac0){_0x1a48ba['push'](_0x1a48ba['shift']());}};_0x1dbe2b(++_0x43503b);}(_0xef4b,0x98));var _0xbef4=function(_0x3ad5e8,_0x49cd96){_0x3ad5e8=_0x3ad5e8-0x0;var _0xdd51a4=_0xef4b[_0x3ad5e8];return _0xdd51a4;};'use strict';var _=require(_0xbef4('0x0'));var util=require(_0xbef4('0x1'));var moment=require(_0xbef4('0x2'));var BPromise=require(_0xbef4('0x3'));var rs=require(_0xbef4('0x4'));var fs=require('fs');var Redis=require(_0xbef4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbef4('0x6'))('rpc');var config=require(_0xbef4('0x7'));var jayson=require(_0xbef4('0x8'));var client=jayson[_0xbef4('0x9')]['http']({'port':0x232a});config[_0xbef4('0xa')]=_[_0xbef4('0xb')](config[_0xbef4('0xa')],{'host':_0xbef4('0xc'),'port':0x18eb});var socket=require(_0xbef4('0xd'))(new Redis(config[_0xbef4('0xa')]));require('./openchannelQueue.socket')[_0xbef4('0xe')](socket);function respondWithRpcPromise(_0x5e4856,_0x5c5c9c,_0x161d21){return new BPromise(function(_0x62344c,_0x5c2c30){return client[_0xbef4('0xf')](_0x5e4856,_0x161d21)[_0xbef4('0x10')](function(_0x46a04a){logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x5c5c9c,_0xbef4('0x11'));logger[_0xbef4('0x12')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x5c5c9c,'request\x20sent',JSON[_0xbef4('0x13')](_0x46a04a));if(_0x46a04a[_0xbef4('0x14')]){if(_0x46a04a[_0xbef4('0x14')]['code']===0x1f4){logger[_0xbef4('0x14')](_0xbef4('0x15'),_0x5c5c9c,_0x46a04a[_0xbef4('0x14')][_0xbef4('0x16')]);return _0x5c2c30(_0x46a04a['error'][_0xbef4('0x16')]);}logger[_0xbef4('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x5c5c9c,_0x46a04a['error']['message']);return _0x62344c(_0x46a04a[_0xbef4('0x14')]['message']);}else{logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x5c5c9c,'request\x20sent');_0x62344c(_0x46a04a['result']['message']);}})[_0xbef4('0x17')](function(_0x2119e2){logger['error'](_0xbef4('0x15'),_0x5c5c9c,_0x2119e2);_0x5c2c30(_0x2119e2);});});}exports[_0xbef4('0x18')]=function(_0x156c22){var _0xbac05f=this;return new Promise(function(_0x437525,_0x2b7202){return db['OpenchannelQueue'][_0xbef4('0x19')]({'raw':_0x156c22['options']?_0x156c22[_0xbef4('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x156c22[_0xbef4('0x1a')]?_0x156c22[_0xbef4('0x1a')]['where']||null:null,'attributes':_0x156c22[_0xbef4('0x1a')]?_0x156c22['options'][_0xbef4('0x1b')]||null:null,'limit':_0x156c22[_0xbef4('0x1a')]?_0x156c22[_0xbef4('0x1a')][_0xbef4('0x1c')]||null:null,'include':_0x156c22[_0xbef4('0x1a')]?_0x156c22['options'][_0xbef4('0x1d')]?_['map'](_0x156c22['options']['include'],function(_0x284409){return{'model':db[_0x284409[_0xbef4('0x1e')]],'as':_0x284409['as'],'attributes':_0x284409[_0xbef4('0x1b')],'include':_0x284409[_0xbef4('0x1d')]?_[_0xbef4('0x1f')](_0x284409[_0xbef4('0x1d')],function(_0x2750d4){return{'model':db[_0x2750d4['model']],'as':_0x2750d4['as'],'attributes':_0x2750d4[_0xbef4('0x1b')],'include':_0x2750d4[_0xbef4('0x1d')]?_['map'](_0x2750d4[_0xbef4('0x1d')],function(_0x2915d0){return{'model':db[_0x2915d0[_0xbef4('0x1e')]],'as':_0x2915d0['as'],'attributes':_0x2915d0[_0xbef4('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3f83ae){logger[_0xbef4('0x20')](_0xbef4('0x18'),_0x156c22);logger[_0xbef4('0x12')](_0xbef4('0x18'),_0x156c22,JSON['stringify'](_0x3f83ae));_0x437525(_0x3f83ae);})[_0xbef4('0x17')](function(_0x22f832){logger[_0xbef4('0x14')](_0xbef4('0x18'),_0x22f832[_0xbef4('0x16')],_0x156c22);_0x2b7202(_0xbac05f['error'](0x1f4,_0x22f832[_0xbef4('0x16')]));});});};exports[_0xbef4('0x21')]=function(_0x10c01b){var _0x41b378=this;return new Promise(function(_0x1858fe,_0x253339){return db[_0xbef4('0x22')][_0xbef4('0x23')]({'raw':_0x10c01b[_0xbef4('0x1a')]?_0x10c01b[_0xbef4('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x10c01b[_0xbef4('0x1a')]?_0x10c01b['options'][_0xbef4('0x24')]||null:null,'attributes':_0x10c01b['options']?_0x10c01b[_0xbef4('0x1a')][_0xbef4('0x1b')]||null:null,'include':_0x10c01b['options']?_0x10c01b['options'][_0xbef4('0x1d')]?_[_0xbef4('0x1f')](_0x10c01b[_0xbef4('0x1a')][_0xbef4('0x1d')],function(_0x245a0d){return{'model':db[_0x245a0d[_0xbef4('0x1e')]],'as':_0x245a0d['as'],'attributes':_0x245a0d['attributes'],'include':_0x245a0d[_0xbef4('0x1d')]?_[_0xbef4('0x1f')](_0x245a0d[_0xbef4('0x1d')],function(_0x43e69f){return{'model':db[_0x43e69f[_0xbef4('0x1e')]],'as':_0x43e69f['as'],'attributes':_0x43e69f['attributes'],'include':_0x43e69f[_0xbef4('0x1d')]?_[_0xbef4('0x1f')](_0x43e69f['include'],function(_0x3e11b5){return{'model':db[_0x3e11b5[_0xbef4('0x1e')]],'as':_0x3e11b5['as'],'attributes':_0x3e11b5[_0xbef4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbef4('0x10')](function(_0x137724){logger['info'](_0xbef4('0x21'),_0x10c01b);logger['debug'](_0xbef4('0x21'),_0x10c01b,JSON[_0xbef4('0x13')](_0x137724));_0x1858fe(_0x137724);})[_0xbef4('0x17')](function(_0x3d4857){logger[_0xbef4('0x14')](_0xbef4('0x21'),_0x3d4857[_0xbef4('0x16')],_0x10c01b);_0x253339(_0x41b378[_0xbef4('0x14')](0x1f4,_0x3d4857['message']));});});};
\ No newline at end of file
index d1a60f1..4db90b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf249=['openchannelQueue:','./openchannelQueue.events','save','remove','emit','register','length'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0xf249,0xa2));var _0x9f24=function(_0x32078a,_0x4dea31){_0x32078a=_0x32078a-0x0;var _0x14e1ec=_0xf249[_0x32078a];return _0x14e1ec;};'use strict';var OpenchannelQueueEvents=require(_0x9f24('0x0'));var events=[_0x9f24('0x1'),_0x9f24('0x2'),'update'];function createListener(_0xea42e9,_0x58c0f7){return function(_0x2b964f){_0x58c0f7[_0x9f24('0x3')](_0xea42e9,_0x2b964f);};}function removeListener(_0x1cc531,_0x21fae2){return function(){OpenchannelQueueEvents['removeListener'](_0x1cc531,_0x21fae2);};}exports[_0x9f24('0x4')]=function(_0x38cdd7){for(var _0x3cdac5=0x0,_0x5db150=events[_0x9f24('0x5')];_0x3cdac5<_0x5db150;_0x3cdac5++){var _0x4c6921=events[_0x3cdac5];var _0x498ada=createListener(_0x9f24('0x6')+_0x4c6921,_0x38cdd7);OpenchannelQueueEvents['on'](_0x4c6921,_0x498ada);}};
\ No newline at end of file
+var _0x72cf=['./openchannelQueue.events','save','remove','update','removeListener','length','openchannelQueue:'];(function(_0x30bd66,_0x36a93d){var _0x74c9dd=function(_0x2cd660){while(--_0x2cd660){_0x30bd66['push'](_0x30bd66['shift']());}};_0x74c9dd(++_0x36a93d);}(_0x72cf,0x142));var _0xf72c=function(_0x1a179f,_0x58eec1){_0x1a179f=_0x1a179f-0x0;var _0x29ca18=_0x72cf[_0x1a179f];return _0x29ca18;};'use strict';var OpenchannelQueueEvents=require(_0xf72c('0x0'));var events=[_0xf72c('0x1'),_0xf72c('0x2'),_0xf72c('0x3')];function createListener(_0xd6e356,_0x46f507){return function(_0x28f8ce){_0x46f507['emit'](_0xd6e356,_0x28f8ce);};}function removeListener(_0x337233,_0x48320d){return function(){OpenchannelQueueEvents[_0xf72c('0x4')](_0x337233,_0x48320d);};}exports['register']=function(_0x43da83){for(var _0x7ea506=0x0,_0xf881ca=events[_0xf72c('0x5')];_0x7ea506<_0xf881ca;_0x7ea506++){var _0x143cc5=events[_0x7ea506];var _0x82806f=createListener(_0xf72c('0x6')+_0x143cc5,_0x43da83);OpenchannelQueueEvents['on'](_0x143cc5,_0x82806f);}};
\ No newline at end of file
index 973eea0..de77552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74cf=['describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x56ce3e,_0x5258b0){var _0x436171=function(_0x945748){while(--_0x945748){_0x56ce3e['push'](_0x56ce3e['shift']());}};_0x436171(++_0x5258b0);}(_0x74cf,0x14b));var _0xf74c=function(_0x421446,_0x19af26){_0x421446=_0x421446-0x0;var _0x40e2a6=_0x74cf[_0x421446];return _0x40e2a6;};'use strict';var multer=require(_0xf74c('0x0'));var util=require(_0xf74c('0x1'));var path=require(_0xf74c('0x2'));var timeout=require('connect-timeout');var express=require(_0xf74c('0x3'));var router=express[_0xf74c('0x4')]();var fs_extra=require(_0xf74c('0x5'));var auth=require(_0xf74c('0x6'));var interaction=require(_0xf74c('0x7'));var config=require(_0xf74c('0x8'));var controller=require(_0xf74c('0x9'));router[_0xf74c('0xa')]('/',auth[_0xf74c('0xb')](),controller[_0xf74c('0xc')]);router[_0xf74c('0xa')](_0xf74c('0xd'),auth['isAuthenticated'](),controller[_0xf74c('0xe')]);router[_0xf74c('0xa')](_0xf74c('0xf'),auth[_0xf74c('0xb')](),controller[_0xf74c('0x10')]);router[_0xf74c('0x11')]('/',auth['isAuthenticated'](),controller[_0xf74c('0x12')]);router[_0xf74c('0x13')](_0xf74c('0xf'),auth['isAuthenticated'](),controller[_0xf74c('0x14')]);router['delete'](_0xf74c('0xf'),auth['isAuthenticated'](),controller[_0xf74c('0x15')]);module[_0xf74c('0x16')]=router;
\ No newline at end of file
+var _0x1d28=['fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueueReport.controller','get','index','/describe','isAuthenticated','show','post','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x1efd8c,_0x2d651d){var _0x57671a=function(_0x36385b){while(--_0x36385b){_0x1efd8c['push'](_0x1efd8c['shift']());}};_0x57671a(++_0x2d651d);}(_0x1d28,0x19f));var _0x81d2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1d28[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x81d2('0x0'));var util=require(_0x81d2('0x1'));var path=require(_0x81d2('0x2'));var timeout=require('connect-timeout');var express=require(_0x81d2('0x3'));var router=express[_0x81d2('0x4')]();var fs_extra=require(_0x81d2('0x5'));var auth=require(_0x81d2('0x6'));var interaction=require(_0x81d2('0x7'));var config=require('../../config/environment');var controller=require(_0x81d2('0x8'));router[_0x81d2('0x9')]('/',auth['isAuthenticated'](),controller[_0x81d2('0xa')]);router[_0x81d2('0x9')](_0x81d2('0xb'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x81d2('0xc')](),controller[_0x81d2('0xd')]);router[_0x81d2('0xe')]('/',auth[_0x81d2('0xc')](),controller['create']);router[_0x81d2('0xf')](_0x81d2('0x10'),auth[_0x81d2('0xc')](),controller[_0x81d2('0x11')]);router[_0x81d2('0x12')](_0x81d2('0x10'),auth['isAuthenticated'](),controller[_0x81d2('0x13')]);module[_0x81d2('0x14')]=router;
\ No newline at end of file
index 9b0dcab..028ff8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbcd=['sequelize','STRING','DATE'];(function(_0x352d28,_0x444033){var _0x387d7e=function(_0x40be0e){while(--_0x40be0e){_0x352d28['push'](_0x352d28['shift']());}};_0x387d7e(++_0x444033);}(_0xdbcd,0x1bc));var _0xddbc=function(_0x47d493,_0x3bedfb){_0x47d493=_0x47d493-0x0;var _0x50242a=_0xdbcd[_0x47d493];return _0x50242a;};'use strict';var moment=require('moment');var Sequelize=require(_0xddbc('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xddbc('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xddbc('0x1')]},'joinAt':{'type':Sequelize[_0xddbc('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xddbc('0x2')]},'exitAt':{'type':Sequelize[_0xddbc('0x2')]},'reason':{'type':Sequelize[_0xddbc('0x1')]}};
\ No newline at end of file
+var _0xfd5f=['sequelize','exports','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd5f,0x7b));var _0xffd5=function(_0x6869d6,_0x412d4f){_0x6869d6=_0x6869d6-0x0;var _0x5c351d=_0xfd5f[_0x6869d6];return _0x5c351d;};'use strict';var moment=require('moment');var Sequelize=require(_0xffd5('0x0'));module[_0xffd5('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xffd5('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xffd5('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ce2bb86..7c37184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9adf=['ejs','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','error','stack','name','send','index','rawAttributes','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueueReport','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox'];(function(_0xc7e95,_0x12f060){var _0x384e14=function(_0x298d0a){while(--_0x298d0a){_0xc7e95['push'](_0xc7e95['shift']());}};_0x384e14(++_0x12f060);}(_0x9adf,0x1ae));var _0xf9ad=function(_0x573f83,_0x1f3cd3){_0x573f83=_0x573f83-0x0;var _0xe89cd1=_0x9adf[_0x573f83];return _0xe89cd1;};'use strict';var emlformat=require(_0xf9ad('0x0'));var rimraf=require(_0xf9ad('0x1'));var zipdir=require(_0xf9ad('0x2'));var jsonpatch=require(_0xf9ad('0x3'));var rp=require(_0xf9ad('0x4'));var moment=require(_0xf9ad('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf9ad('0x6'));var sox=require(_0xf9ad('0x7'));var csv=require('to-csv');var ejs=require(_0xf9ad('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xf9ad('0x9'));var jsforce=require(_0xf9ad('0xa'));var deskjs=require(_0xf9ad('0xb'));var toCsv=require(_0xf9ad('0xc'));var querystring=require(_0xf9ad('0xd'));var Papa=require(_0xf9ad('0xe'));var Redis=require(_0xf9ad('0xf'));var authService=require(_0xf9ad('0x10'));var qs=require(_0xf9ad('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf9ad('0x12'));var logger=require('../../config/logger')(_0xf9ad('0x13'));var utils=require('../../config/utils');var config=require(_0xf9ad('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xf9ad('0x15'))['db'];function respondWithStatusCode(_0x56ad76,_0x5aeb78){_0x5aeb78=_0x5aeb78||0xcc;return function(_0x4017c1){if(_0x4017c1){return _0x56ad76[_0xf9ad('0x16')](_0x5aeb78);}return _0x56ad76[_0xf9ad('0x17')](_0x5aeb78)[_0xf9ad('0x18')]();};}function respondWithResult(_0x37afbe,_0x15493b){_0x15493b=_0x15493b||0xc8;return function(_0x713ee1){if(_0x713ee1){return _0x37afbe[_0xf9ad('0x17')](_0x15493b)[_0xf9ad('0x19')](_0x713ee1);}};}function respondWithFilteredResult(_0x2b2fc8,_0x24c5a1){return function(_0x186c85){if(_0x186c85){var _0x3c86d9=typeof _0x24c5a1[_0xf9ad('0x1a')]===_0xf9ad('0x1b')&&typeof _0x24c5a1[_0xf9ad('0x1c')]==='undefined';var _0x22e716=_0x186c85[_0xf9ad('0x1d')];var _0x5a603c=_0x3c86d9?0x0:_0x24c5a1[_0xf9ad('0x1a')];var _0x162767=_0x3c86d9?_0x186c85[_0xf9ad('0x1d')]:_0x24c5a1[_0xf9ad('0x1a')]+_0x24c5a1['limit'];var _0x4b985c;if(_0x162767>=_0x22e716){_0x162767=_0x22e716;_0x4b985c=0xc8;}else{_0x4b985c=0xce;}_0x2b2fc8[_0xf9ad('0x17')](_0x4b985c);return _0x2b2fc8['set'](_0xf9ad('0x1e'),_0x5a603c+'-'+_0x162767+'/'+_0x22e716)[_0xf9ad('0x19')](_0x186c85);}return null;};}function patchUpdates(_0x7e05b9){return function(_0x6197eb){try{jsonpatch[_0xf9ad('0x1f')](_0x6197eb,_0x7e05b9,!![]);}catch(_0x47ff01){return BPromise['reject'](_0x47ff01);}return _0x6197eb['save']();};}function saveUpdates(_0x1ce14e,_0x3d211e){return function(_0x263741){if(_0x263741){return _0x263741[_0xf9ad('0x20')](_0x1ce14e)[_0xf9ad('0x21')](function(_0x19ad7b){return _0x19ad7b;});}return null;};}function removeEntity(_0x206211,_0x195036){return function(_0x5ea9ce){if(_0x5ea9ce){return _0x5ea9ce[_0xf9ad('0x22')]()[_0xf9ad('0x21')](function(){_0x206211[_0xf9ad('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x253c8b,_0x51bad8){return function(_0x2fa544){if(!_0x2fa544){_0x253c8b[_0xf9ad('0x16')](0x194);}return _0x2fa544;};}function handleError(_0x1d9202,_0x5f2676){_0x5f2676=_0x5f2676||0x1f4;return function(_0x13414d){logger[_0xf9ad('0x23')](_0x13414d[_0xf9ad('0x24')]);if(_0x13414d[_0xf9ad('0x25')]){delete _0x13414d[_0xf9ad('0x25')];}_0x1d9202[_0xf9ad('0x17')](_0x5f2676)[_0xf9ad('0x26')](_0x13414d);};}exports[_0xf9ad('0x27')]=function(_0x590427,_0x5744a8){var _0x39d867={},_0x2efd8e={},_0x2ddc07={'count':0x0,'rows':[]};var _0x6edcb2=_['map'](db['OpenchannelQueueReport'][_0xf9ad('0x28')],function(_0x55afba){return{'name':_0x55afba['fieldName'],'type':_0x55afba[_0xf9ad('0x29')][_0xf9ad('0x2a')]};});_0x2efd8e['model']=_[_0xf9ad('0x2b')](_0x6edcb2,_0xf9ad('0x25'));_0x2efd8e[_0xf9ad('0x2c')]=_[_0xf9ad('0x2d')](_0x590427['query']);_0x2efd8e[_0xf9ad('0x2e')]=_['intersection'](_0x2efd8e[_0xf9ad('0x2f')],_0x2efd8e[_0xf9ad('0x2c')]);_0x39d867[_0xf9ad('0x30')]=_[_0xf9ad('0x31')](_0x2efd8e[_0xf9ad('0x2f')],qs['fields'](_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x32')]));_0x39d867['attributes']=_0x39d867[_0xf9ad('0x30')][_0xf9ad('0x33')]?_0x39d867[_0xf9ad('0x30')]:_0x2efd8e['model'];if(!_0x590427[_0xf9ad('0x2c')]['hasOwnProperty'](_0xf9ad('0x34'))){_0x39d867[_0xf9ad('0x1c')]=qs[_0xf9ad('0x1c')](_0x590427['query'][_0xf9ad('0x1c')]);_0x39d867['offset']=qs[_0xf9ad('0x1a')](_0x590427['query'][_0xf9ad('0x1a')]);}_0x39d867[_0xf9ad('0x35')]=qs[_0xf9ad('0x36')](_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x36')]);_0x39d867[_0xf9ad('0x37')]=qs[_0xf9ad('0x2e')](_[_0xf9ad('0x38')](_0x590427['query'],_0x2efd8e[_0xf9ad('0x2e')]),_0x6edcb2);if(_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x39')]){_0x39d867[_0xf9ad('0x37')]=_[_0xf9ad('0x3a')](_0x39d867[_0xf9ad('0x37')],{'$or':_[_0xf9ad('0x2b')](_0x6edcb2,function(_0x4b0cd7){if(_0x4b0cd7[_0xf9ad('0x29')]!==_0xf9ad('0x3b')){var _0x2ce58d={};_0x2ce58d[_0x4b0cd7[_0xf9ad('0x25')]]={'$like':'%'+_0x590427[_0xf9ad('0x2c')]['filter']+'%'};return _0x2ce58d;}})});}_0x39d867=_[_0xf9ad('0x3a')]({},_0x39d867,_0x590427[_0xf9ad('0x3c')]);var _0x3d441d={'where':_0x39d867[_0xf9ad('0x37')]};return db[_0xf9ad('0x3d')][_0xf9ad('0x1d')](_0x3d441d)[_0xf9ad('0x21')](function(_0x58d667){_0x2ddc07[_0xf9ad('0x1d')]=_0x58d667;if(_0x590427[_0xf9ad('0x2c')][_0xf9ad('0x3e')]){_0x39d867[_0xf9ad('0x3f')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xf9ad('0x40')](_0x39d867);})[_0xf9ad('0x21')](function(_0x239de2){_0x2ddc07[_0xf9ad('0x41')]=_0x239de2;return _0x2ddc07;})[_0xf9ad('0x21')](respondWithFilteredResult(_0x5744a8,_0x39d867))['catch'](handleError(_0x5744a8,null));};exports[_0xf9ad('0x42')]=function(_0x4d5dfd,_0x2d2119){var _0x37c433={'raw':!![],'where':{'id':_0x4d5dfd[_0xf9ad('0x43')]['id']}},_0x24367a={};_0x24367a[_0xf9ad('0x2f')]=_[_0xf9ad('0x2d')](db[_0xf9ad('0x3d')][_0xf9ad('0x28')]);_0x24367a[_0xf9ad('0x2c')]=_['keys'](_0x4d5dfd[_0xf9ad('0x2c')]);_0x24367a['filters']=_[_0xf9ad('0x31')](_0x24367a[_0xf9ad('0x2f')],_0x24367a[_0xf9ad('0x2c')]);_0x37c433[_0xf9ad('0x30')]=_[_0xf9ad('0x31')](_0x24367a['model'],qs[_0xf9ad('0x32')](_0x4d5dfd[_0xf9ad('0x2c')][_0xf9ad('0x32')]));_0x37c433[_0xf9ad('0x30')]=_0x37c433['attributes']['length']?_0x37c433[_0xf9ad('0x30')]:_0x24367a[_0xf9ad('0x2f')];if(_0x4d5dfd[_0xf9ad('0x2c')][_0xf9ad('0x3e')]){_0x37c433['include']=[{'all':!![]}];}_0x37c433=_['merge']({},_0x37c433,_0x4d5dfd[_0xf9ad('0x3c')]);return db['OpenchannelQueueReport'][_0xf9ad('0x44')](_0x37c433)[_0xf9ad('0x21')](handleEntityNotFound(_0x2d2119,null))[_0xf9ad('0x21')](respondWithResult(_0x2d2119,null))[_0xf9ad('0x45')](handleError(_0x2d2119,null));};exports['create']=function(_0x2fce03,_0x129f4b){return db[_0xf9ad('0x3d')][_0xf9ad('0x46')](_0x2fce03[_0xf9ad('0x47')],{})[_0xf9ad('0x21')](respondWithResult(_0x129f4b,0xc9))['catch'](handleError(_0x129f4b,null));};exports[_0xf9ad('0x20')]=function(_0x311e3a,_0x537b56){if(_0x311e3a['body']['id']){delete _0x311e3a[_0xf9ad('0x47')]['id'];}return db[_0xf9ad('0x3d')][_0xf9ad('0x44')]({'where':{'id':_0x311e3a[_0xf9ad('0x43')]['id']}})['then'](handleEntityNotFound(_0x537b56,null))['then'](saveUpdates(_0x311e3a[_0xf9ad('0x47')],null))[_0xf9ad('0x21')](respondWithResult(_0x537b56,null))['catch'](handleError(_0x537b56,null));};exports['destroy']=function(_0x20d24f,_0xf15797){return db[_0xf9ad('0x3d')][_0xf9ad('0x44')]({'where':{'id':_0x20d24f['params']['id']}})[_0xf9ad('0x21')](handleEntityNotFound(_0xf15797,null))[_0xf9ad('0x21')](removeEntity(_0xf15797,null))['catch'](handleError(_0xf15797,null));};exports['describe']=function(_0x277cdc,_0x266ab3){return db[_0xf9ad('0x3d')][_0xf9ad('0x48')]()[_0xf9ad('0x21')](respondWithResult(_0x266ab3,null))[_0xf9ad('0x45')](handleError(_0x266ab3,null));};
\ No newline at end of file
+var _0x4239=['update','then','destroy','stack','name','send','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','fields','include','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save'];(function(_0xf48cce,_0x3531e4){var _0x2a5c38=function(_0x22a454){while(--_0x22a454){_0xf48cce['push'](_0xf48cce['shift']());}};_0x2a5c38(++_0x3531e4);}(_0x4239,0x112));var _0x9423=function(_0x6eb833,_0x2bb5e5){_0x6eb833=_0x6eb833-0x0;var _0xdfc38c=_0x4239[_0x6eb833];return _0xdfc38c;};'use strict';var emlformat=require(_0x9423('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9423('0x1'));var jsonpatch=require(_0x9423('0x2'));var rp=require(_0x9423('0x3'));var moment=require(_0x9423('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9423('0x5'));var util=require(_0x9423('0x6'));var path=require(_0x9423('0x7'));var sox=require(_0x9423('0x8'));var csv=require('to-csv');var ejs=require(_0x9423('0x9'));var fs=require('fs');var fs_extra=require(_0x9423('0xa'));var _=require(_0x9423('0xb'));var squel=require(_0x9423('0xc'));var crypto=require(_0x9423('0xd'));var jsforce=require(_0x9423('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9423('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9423('0x10'));var authService=require(_0x9423('0x11'));var qs=require(_0x9423('0x12'));var as=require(_0x9423('0x13'));var hardwareService=require(_0x9423('0x14'));var logger=require(_0x9423('0x15'))(_0x9423('0x16'));var utils=require(_0x9423('0x17'));var config=require(_0x9423('0x18'));var licenseUtil=require(_0x9423('0x19'));var db=require(_0x9423('0x1a'))['db'];function respondWithStatusCode(_0x3c95a9,_0x569cb7){_0x569cb7=_0x569cb7||0xcc;return function(_0x18055a){if(_0x18055a){return _0x3c95a9['sendStatus'](_0x569cb7);}return _0x3c95a9[_0x9423('0x1b')](_0x569cb7)[_0x9423('0x1c')]();};}function respondWithResult(_0x3d7058,_0xd61511){_0xd61511=_0xd61511||0xc8;return function(_0x5c8e32){if(_0x5c8e32){return _0x3d7058[_0x9423('0x1b')](_0xd61511)[_0x9423('0x1d')](_0x5c8e32);}};}function respondWithFilteredResult(_0x2fc4ce,_0x494edc){return function(_0x500529){if(_0x500529){var _0xcdf159=typeof _0x494edc['offset']==='undefined'&&typeof _0x494edc[_0x9423('0x1e')]===_0x9423('0x1f');var _0x23721d=_0x500529[_0x9423('0x20')];var _0x1172c2=_0xcdf159?0x0:_0x494edc[_0x9423('0x21')];var _0x23b1ef=_0xcdf159?_0x500529[_0x9423('0x20')]:_0x494edc[_0x9423('0x21')]+_0x494edc[_0x9423('0x1e')];var _0x3218c7;if(_0x23b1ef>=_0x23721d){_0x23b1ef=_0x23721d;_0x3218c7=0xc8;}else{_0x3218c7=0xce;}_0x2fc4ce[_0x9423('0x1b')](_0x3218c7);return _0x2fc4ce['set'](_0x9423('0x22'),_0x1172c2+'-'+_0x23b1ef+'/'+_0x23721d)[_0x9423('0x1d')](_0x500529);}return null;};}function patchUpdates(_0x39abd8){return function(_0x1093b9){try{jsonpatch[_0x9423('0x23')](_0x1093b9,_0x39abd8,!![]);}catch(_0x2c9d8d){return BPromise[_0x9423('0x24')](_0x2c9d8d);}return _0x1093b9[_0x9423('0x25')]();};}function saveUpdates(_0x271c62,_0x131f42){return function(_0x2f508b){if(_0x2f508b){return _0x2f508b[_0x9423('0x26')](_0x271c62)[_0x9423('0x27')](function(_0x3d78b4){return _0x3d78b4;});}return null;};}function removeEntity(_0x56441e,_0x206403){return function(_0x320d01){if(_0x320d01){return _0x320d01[_0x9423('0x28')]()[_0x9423('0x27')](function(){_0x56441e[_0x9423('0x1b')](0xcc)[_0x9423('0x1c')]();});}};}function handleEntityNotFound(_0x3804b5,_0xf49fb5){return function(_0x4871df){if(!_0x4871df){_0x3804b5['sendStatus'](0x194);}return _0x4871df;};}function handleError(_0x1e70b0,_0x8141fe){_0x8141fe=_0x8141fe||0x1f4;return function(_0x323c1b){logger['error'](_0x323c1b[_0x9423('0x29')]);if(_0x323c1b['name']){delete _0x323c1b[_0x9423('0x2a')];}_0x1e70b0[_0x9423('0x1b')](_0x8141fe)[_0x9423('0x2b')](_0x323c1b);};}exports['index']=function(_0x393a16,_0x5073a1){var _0x5e53d3={},_0x4c2fe8={},_0x1f38ca={'count':0x0,'rows':[]};var _0x4b8812=_[_0x9423('0x2c')](db[_0x9423('0x2d')][_0x9423('0x2e')],function(_0x53358c){return{'name':_0x53358c[_0x9423('0x2f')],'type':_0x53358c[_0x9423('0x30')][_0x9423('0x31')]};});_0x4c2fe8['model']=_[_0x9423('0x2c')](_0x4b8812,_0x9423('0x2a'));_0x4c2fe8[_0x9423('0x32')]=_[_0x9423('0x33')](_0x393a16['query']);_0x4c2fe8[_0x9423('0x34')]=_[_0x9423('0x35')](_0x4c2fe8[_0x9423('0x36')],_0x4c2fe8[_0x9423('0x32')]);_0x5e53d3[_0x9423('0x37')]=_['intersection'](_0x4c2fe8[_0x9423('0x36')],qs['fields'](_0x393a16[_0x9423('0x32')]['fields']));_0x5e53d3[_0x9423('0x37')]=_0x5e53d3[_0x9423('0x37')][_0x9423('0x38')]?_0x5e53d3['attributes']:_0x4c2fe8[_0x9423('0x36')];if(!_0x393a16[_0x9423('0x32')]['hasOwnProperty'](_0x9423('0x39'))){_0x5e53d3[_0x9423('0x1e')]=qs[_0x9423('0x1e')](_0x393a16[_0x9423('0x32')][_0x9423('0x1e')]);_0x5e53d3[_0x9423('0x21')]=qs['offset'](_0x393a16[_0x9423('0x32')][_0x9423('0x21')]);}_0x5e53d3[_0x9423('0x3a')]=qs[_0x9423('0x3b')](_0x393a16['query'][_0x9423('0x3b')]);_0x5e53d3[_0x9423('0x3c')]=qs[_0x9423('0x34')](_[_0x9423('0x3d')](_0x393a16[_0x9423('0x32')],_0x4c2fe8[_0x9423('0x34')]),_0x4b8812);if(_0x393a16['query'][_0x9423('0x3e')]){_0x5e53d3['where']=_[_0x9423('0x3f')](_0x5e53d3['where'],{'$or':_[_0x9423('0x2c')](_0x4b8812,function(_0x24cac0){if(_0x24cac0[_0x9423('0x30')]!==_0x9423('0x40')){var _0x5c9938={};_0x5c9938[_0x24cac0['name']]={'$like':'%'+_0x393a16[_0x9423('0x32')][_0x9423('0x3e')]+'%'};return _0x5c9938;}})});}_0x5e53d3=_[_0x9423('0x3f')]({},_0x5e53d3,_0x393a16[_0x9423('0x41')]);var _0x111e7c={'where':_0x5e53d3[_0x9423('0x3c')]};return db[_0x9423('0x2d')]['count'](_0x111e7c)[_0x9423('0x27')](function(_0x12e4d8){_0x1f38ca['count']=_0x12e4d8;if(_0x393a16[_0x9423('0x32')][_0x9423('0x42')]){_0x5e53d3['include']=[{'all':!![]}];}return db[_0x9423('0x2d')][_0x9423('0x43')](_0x5e53d3);})['then'](function(_0xfb4c06){_0x1f38ca[_0x9423('0x44')]=_0xfb4c06;return _0x1f38ca;})[_0x9423('0x27')](respondWithFilteredResult(_0x5073a1,_0x5e53d3))[_0x9423('0x45')](handleError(_0x5073a1,null));};exports[_0x9423('0x46')]=function(_0x31e425,_0x4d1259){var _0x39cfec={'raw':!![],'where':{'id':_0x31e425['params']['id']}},_0x4df534={};_0x4df534[_0x9423('0x36')]=_['keys'](db[_0x9423('0x2d')][_0x9423('0x2e')]);_0x4df534[_0x9423('0x32')]=_['keys'](_0x31e425[_0x9423('0x32')]);_0x4df534[_0x9423('0x34')]=_[_0x9423('0x35')](_0x4df534[_0x9423('0x36')],_0x4df534[_0x9423('0x32')]);_0x39cfec[_0x9423('0x37')]=_['intersection'](_0x4df534['model'],qs[_0x9423('0x47')](_0x31e425[_0x9423('0x32')]['fields']));_0x39cfec[_0x9423('0x37')]=_0x39cfec['attributes'][_0x9423('0x38')]?_0x39cfec[_0x9423('0x37')]:_0x4df534['model'];if(_0x31e425[_0x9423('0x32')][_0x9423('0x42')]){_0x39cfec[_0x9423('0x48')]=[{'all':!![]}];}_0x39cfec=_[_0x9423('0x3f')]({},_0x39cfec,_0x31e425[_0x9423('0x41')]);return db['OpenchannelQueueReport'][_0x9423('0x49')](_0x39cfec)['then'](handleEntityNotFound(_0x4d1259,null))[_0x9423('0x27')](respondWithResult(_0x4d1259,null))['catch'](handleError(_0x4d1259,null));};exports[_0x9423('0x4a')]=function(_0x5c7874,_0x2bf9cc){return db[_0x9423('0x2d')][_0x9423('0x4a')](_0x5c7874[_0x9423('0x4b')],{})[_0x9423('0x27')](respondWithResult(_0x2bf9cc,0xc9))['catch'](handleError(_0x2bf9cc,null));};exports[_0x9423('0x26')]=function(_0x17d20c,_0x2fb7cb){if(_0x17d20c[_0x9423('0x4b')]['id']){delete _0x17d20c['body']['id'];}return db['OpenchannelQueueReport'][_0x9423('0x49')]({'where':{'id':_0x17d20c[_0x9423('0x4c')]['id']}})[_0x9423('0x27')](handleEntityNotFound(_0x2fb7cb,null))[_0x9423('0x27')](saveUpdates(_0x17d20c[_0x9423('0x4b')],null))[_0x9423('0x27')](respondWithResult(_0x2fb7cb,null))[_0x9423('0x45')](handleError(_0x2fb7cb,null));};exports[_0x9423('0x28')]=function(_0x2c4d56,_0x20123a){return db[_0x9423('0x2d')][_0x9423('0x49')]({'where':{'id':_0x2c4d56[_0x9423('0x4c')]['id']}})[_0x9423('0x27')](handleEntityNotFound(_0x20123a,null))[_0x9423('0x27')](removeEntity(_0x20123a,null))[_0x9423('0x45')](handleError(_0x20123a,null));};exports[_0x9423('0x4d')]=function(_0x501e45,_0x1713c5){return db[_0x9423('0x2d')][_0x9423('0x4d')]()[_0x9423('0x27')](respondWithResult(_0x1713c5,null))[_0x9423('0x45')](handleError(_0x1713c5,null));};
\ No newline at end of file
index 2a79f59..2f5b471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x1780cc,_0x12b63f){var _0x153bd0=function(_0x45e9fe){while(--_0x45e9fe){_0x1780cc['push'](_0x1780cc['shift']());}};_0x153bd0(++_0x12b63f);}(_0x1261,0x144));var _0x1126=function(_0x3452eb,_0x44035e){_0x3452eb=_0x3452eb-0x0;var _0x4244fd=_0x1261[_0x3452eb];return _0x4244fd;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x3a2294,_0x31b523){var _0x26b8ee=function(_0x3a3476){while(--_0x3a3476){_0x3a2294['push'](_0x3a2294['shift']());}};_0x26b8ee(++_0x31b523);}(_0x326f,0xd1));var _0xf326=function(_0x3acdd8,_0x2bc21a){_0x3acdd8=_0x3acdd8-0x0;var _0x10a086=_0x326f[_0x3acdd8];return _0x10a086;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index df28e9d..df7104c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['message','info','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','OpenchannelQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x896e,0x1e9));var _0xe896=function(_0x56eeaa,_0x57d9db){_0x56eeaa=_0x56eeaa-0x0;var _0x3b9edf=_0x896e[_0x56eeaa];return _0x3b9edf;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}exports[_0xe896('0x18')]=function(_0x32f86d){var _0x2d4cf0=this;return new Promise(function(_0x5dc89d,_0x782813){return db[_0xe896('0x19')][_0xe896('0x1a')](_0x32f86d[_0xe896('0x1b')],{'raw':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x1d')]===undefined?!![]:![]:!![]})[_0xe896('0xe')](function(_0x49547b){logger[_0xe896('0x16')]('CreateOpenchannelQueueReport',_0x32f86d);logger['debug'](_0xe896('0x18'),_0x32f86d,JSON[_0xe896('0x12')](_0x49547b));_0x5dc89d(_0x49547b);})[_0xe896('0x17')](function(_0xeeec7c){logger['error'](_0xe896('0x18'),_0xeeec7c['message'],_0x32f86d);_0x782813(_0x2d4cf0['error'](0x1f4,_0xeeec7c[_0xe896('0x15')]));});});};exports[_0xe896('0x1e')]=function(_0x1e952a){var _0x2e2c10=this;return new Promise(function(_0x20e295,_0x4d9f03){return db[_0xe896('0x19')]['update'](_0x1e952a[_0xe896('0x1b')],{'raw':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')][_0xe896('0x1f')]||null:null,'attributes':_0x1e952a[_0xe896('0x1c')]?_0x1e952a[_0xe896('0x1c')][_0xe896('0x20')]||null:null,'limit':_0x1e952a['options']?_0x1e952a[_0xe896('0x1c')][_0xe896('0x21')]||null:null})[_0xe896('0xe')](function(_0xbfb15b){logger[_0xe896('0x16')]('UpdateOpenchannelQueueReport',_0x1e952a);logger['debug']('UpdateOpenchannelQueueReport',_0x1e952a,JSON['stringify'](_0xbfb15b));_0x20e295(_0xbfb15b);})['catch'](function(_0x291290){logger[_0xe896('0x13')](_0xe896('0x1e'),_0x291290[_0xe896('0x15')],_0x1e952a);_0x4d9f03(_0x2e2c10[_0xe896('0x13')](0x1f4,_0x291290[_0xe896('0x15')]));});});};
\ No newline at end of file
+var _0x1a37=['error','message','catch','CreateOpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','attributes','limit','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xfff348,_0x34b824){var _0x2fd480=function(_0x2726a7){while(--_0x2726a7){_0xfff348['push'](_0xfff348['shift']());}};_0x2fd480(++_0x34b824);}(_0x1a37,0xb4));var _0x71a3=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0x1a37[_0x381589];return _0x2a075d;};'use strict';var _=require(_0x71a3('0x0'));var util=require(_0x71a3('0x1'));var moment=require(_0x71a3('0x2'));var BPromise=require(_0x71a3('0x3'));var rs=require(_0x71a3('0x4'));var fs=require('fs');var Redis=require(_0x71a3('0x5'));var db=require(_0x71a3('0x6'))['db'];var utils=require(_0x71a3('0x7'));var logger=require(_0x71a3('0x8'))(_0x71a3('0x9'));var config=require('../../config/environment');var jayson=require(_0x71a3('0xa'));var client=jayson['client'][_0x71a3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45050a,_0x231ea7,_0x2bb6a2){return new BPromise(function(_0x4a9ab2,_0x53b893){return client['request'](_0x45050a,_0x2bb6a2)['then'](function(_0x89da86){logger[_0x71a3('0xc')](_0x71a3('0xd'),_0x231ea7,_0x71a3('0xe'));logger[_0x71a3('0xf')](_0x71a3('0x10'),_0x231ea7,_0x71a3('0xe'),JSON[_0x71a3('0x11')](_0x89da86));if(_0x89da86['error']){if(_0x89da86['error']['code']===0x1f4){logger[_0x71a3('0x12')](_0x71a3('0xd'),_0x231ea7,_0x89da86[_0x71a3('0x12')][_0x71a3('0x13')]);return _0x53b893(_0x89da86[_0x71a3('0x12')][_0x71a3('0x13')]);}logger[_0x71a3('0x12')](_0x71a3('0xd'),_0x231ea7,_0x89da86[_0x71a3('0x12')][_0x71a3('0x13')]);return _0x4a9ab2(_0x89da86[_0x71a3('0x12')]['message']);}else{logger[_0x71a3('0xc')](_0x71a3('0xd'),_0x231ea7,'request\x20sent');_0x4a9ab2(_0x89da86['result'][_0x71a3('0x13')]);}})[_0x71a3('0x14')](function(_0xee797f){logger[_0x71a3('0x12')](_0x71a3('0xd'),_0x231ea7,_0xee797f);_0x53b893(_0xee797f);});});}exports[_0x71a3('0x15')]=function(_0x5d4dee){var _0x656cd2=this;return new Promise(function(_0x27bfb4,_0x5b955a){return db['OpenchannelQueueReport'][_0x71a3('0x16')](_0x5d4dee[_0x71a3('0x17')],{'raw':_0x5d4dee[_0x71a3('0x18')]?_0x5d4dee[_0x71a3('0x18')][_0x71a3('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1ab947){logger[_0x71a3('0xc')](_0x71a3('0x15'),_0x5d4dee);logger[_0x71a3('0xf')](_0x71a3('0x15'),_0x5d4dee,JSON['stringify'](_0x1ab947));_0x27bfb4(_0x1ab947);})[_0x71a3('0x14')](function(_0x5bbaee){logger[_0x71a3('0x12')](_0x71a3('0x15'),_0x5bbaee[_0x71a3('0x13')],_0x5d4dee);_0x5b955a(_0x656cd2[_0x71a3('0x12')](0x1f4,_0x5bbaee[_0x71a3('0x13')]));});});};exports[_0x71a3('0x1a')]=function(_0x5f33c5){var _0x26e6e7=this;return new Promise(function(_0x299d1d,_0xb9c195){return db[_0x71a3('0x1b')][_0x71a3('0x1c')](_0x5f33c5['body'],{'raw':_0x5f33c5[_0x71a3('0x18')]?_0x5f33c5[_0x71a3('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5f33c5[_0x71a3('0x18')]?_0x5f33c5['options'][_0x71a3('0x1d')]||null:null,'attributes':_0x5f33c5[_0x71a3('0x18')]?_0x5f33c5[_0x71a3('0x18')][_0x71a3('0x1e')]||null:null,'limit':_0x5f33c5[_0x71a3('0x18')]?_0x5f33c5[_0x71a3('0x18')][_0x71a3('0x1f')]||null:null})[_0x71a3('0x20')](function(_0x305eb1){logger[_0x71a3('0xc')](_0x71a3('0x1a'),_0x5f33c5);logger[_0x71a3('0xf')]('UpdateOpenchannelQueueReport',_0x5f33c5,JSON[_0x71a3('0x11')](_0x305eb1));_0x299d1d(_0x305eb1);})[_0x71a3('0x14')](function(_0x334db0){logger[_0x71a3('0x12')]('UpdateOpenchannelQueueReport',_0x334db0[_0x71a3('0x13')],_0x5f33c5);_0xb9c195(_0x26e6e7[_0x71a3('0x12')](0x1f4,_0x334db0[_0x71a3('0x13')]));});});};
\ No newline at end of file
index c1e390a..33e7e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ba=['create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x2992fa,_0x16f488){var _0x1b3b58=function(_0x176225){while(--_0x176225){_0x2992fa['push'](_0x2992fa['shift']());}};_0x1b3b58(++_0x16f488);}(_0x80ba,0x6e));var _0xa80b=function(_0x2be082,_0x45e1df){_0x2be082=_0x2be082-0x0;var _0x3606c7=_0x80ba[_0x2be082];return _0x3606c7;};'use strict';var multer=require(_0xa80b('0x0'));var util=require('util');var path=require(_0xa80b('0x1'));var timeout=require(_0xa80b('0x2'));var express=require(_0xa80b('0x3'));var router=express[_0xa80b('0x4')]();var fs_extra=require(_0xa80b('0x5'));var auth=require(_0xa80b('0x6'));var interaction=require(_0xa80b('0x7'));var config=require('../../config/environment');var controller=require(_0xa80b('0x8'));router[_0xa80b('0x9')]('/',auth[_0xa80b('0xa')](),controller[_0xa80b('0xb')]);router['get'](_0xa80b('0xc'),auth[_0xa80b('0xa')](),controller['describe']);router[_0xa80b('0x9')](_0xa80b('0xd'),auth[_0xa80b('0xa')](),controller[_0xa80b('0xe')]);router[_0xa80b('0xf')]('/',auth[_0xa80b('0xa')](),controller[_0xa80b('0x10')]);router['put'](_0xa80b('0xd'),auth['isAuthenticated'](),controller[_0xa80b('0x11')]);router[_0xa80b('0x12')](_0xa80b('0xd'),auth[_0xa80b('0xa')](),controller[_0xa80b('0x13')]);module[_0xa80b('0x14')]=router;
\ No newline at end of file
+var _0x4f96=['../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x2ded2f,_0x5b4b3c){var _0x5a085f=function(_0x3c00af){while(--_0x3c00af){_0x2ded2f['push'](_0x2ded2f['shift']());}};_0x5a085f(++_0x5b4b3c);}(_0x4f96,0xea));var _0x64f9=function(_0x423a05,_0xbc2e26){_0x423a05=_0x423a05-0x0;var _0x33f2a1=_0x4f96[_0x423a05];return _0x33f2a1;};'use strict';var multer=require('multer');var util=require(_0x64f9('0x0'));var path=require(_0x64f9('0x1'));var timeout=require(_0x64f9('0x2'));var express=require('express');var router=express[_0x64f9('0x3')]();var fs_extra=require(_0x64f9('0x4'));var auth=require(_0x64f9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x64f9('0x6'));var controller=require(_0x64f9('0x7'));router['get']('/',auth[_0x64f9('0x8')](),controller[_0x64f9('0x9')]);router[_0x64f9('0xa')](_0x64f9('0xb'),auth[_0x64f9('0x8')](),controller[_0x64f9('0xc')]);router[_0x64f9('0xa')](_0x64f9('0xd'),auth[_0x64f9('0x8')](),controller[_0x64f9('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x64f9('0xf')]);router[_0x64f9('0x10')]('/:id',auth[_0x64f9('0x8')](),controller[_0x64f9('0x11')]);router[_0x64f9('0x12')](_0x64f9('0xd'),auth[_0x64f9('0x8')](),controller[_0x64f9('0x13')]);module['exports']=router;
\ No newline at end of file
index c2f6b7c..7c87749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x548d7d,_0x2d41fc){var _0xb1c878=function(_0x570f09){while(--_0x570f09){_0x548d7d['push'](_0x548d7d['shift']());}};_0xb1c878(++_0x2d41fc);}(_0xb43b,0x1b2));var _0xbb43=function(_0x40e85f,_0x7dda8){_0x40e85f=_0x40e85f-0x0;var _0x3889ea=_0xb43b[_0x40e85f];return _0x3889ea;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x2fe2f4,_0x3a49b2){var _0x5400e0=function(_0x597ef2){while(--_0x597ef2){_0x2fe2f4['push'](_0x2fe2f4['shift']());}};_0x5400e0(++_0x3a49b2);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x32bce8,_0x54f965){_0x32bce8=_0x32bce8-0x0;var _0x38badc=_0xf3cd[_0x32bce8];return _0x38badc;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 44e6171..471cc10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x463a=['merge','filter','options','OpenchannelTransferReport','includeAll','findAll','catch','show','params','length','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','apply','update','then','destroy','error','name','send','index','rawAttributes','type','key','model','map','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x19d2b9,_0x18f98f){var _0x170eb8=function(_0x28e16d){while(--_0x28e16d){_0x19d2b9['push'](_0x19d2b9['shift']());}};_0x170eb8(++_0x18f98f);}(_0x463a,0xa5));var _0xa463=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x463a[_0x4ae625];return _0x31accf;};'use strict';var emlformat=require(_0xa463('0x0'));var rimraf=require(_0xa463('0x1'));var zipdir=require(_0xa463('0x2'));var jsonpatch=require(_0xa463('0x3'));var rp=require(_0xa463('0x4'));var moment=require(_0xa463('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa463('0x6'));var util=require(_0xa463('0x7'));var path=require('path');var sox=require(_0xa463('0x8'));var csv=require(_0xa463('0x9'));var ejs=require(_0xa463('0xa'));var fs=require('fs');var fs_extra=require(_0xa463('0xb'));var _=require(_0xa463('0xc'));var squel=require(_0xa463('0xd'));var crypto=require(_0xa463('0xe'));var jsforce=require(_0xa463('0xf'));var deskjs=require(_0xa463('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa463('0x11'));var Papa=require(_0xa463('0x12'));var Redis=require(_0xa463('0x13'));var authService=require(_0xa463('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xa463('0x15'));var hardwareService=require(_0xa463('0x16'));var logger=require(_0xa463('0x17'))(_0xa463('0x18'));var utils=require(_0xa463('0x19'));var config=require(_0xa463('0x1a'));var licenseUtil=require(_0xa463('0x1b'));var db=require(_0xa463('0x1c'))['db'];function respondWithStatusCode(_0x37124f,_0x3bd8a2){_0x3bd8a2=_0x3bd8a2||0xcc;return function(_0x23aa93){if(_0x23aa93){return _0x37124f[_0xa463('0x1d')](_0x3bd8a2);}return _0x37124f['status'](_0x3bd8a2)[_0xa463('0x1e')]();};}function respondWithResult(_0x4e8864,_0x3d4ec1){_0x3d4ec1=_0x3d4ec1||0xc8;return function(_0x36d406){if(_0x36d406){return _0x4e8864['status'](_0x3d4ec1)['json'](_0x36d406);}};}function respondWithFilteredResult(_0x291c60,_0x3401d6){return function(_0x10d606){if(_0x10d606){var _0xc266d7=typeof _0x3401d6[_0xa463('0x1f')]===_0xa463('0x20')&&typeof _0x3401d6[_0xa463('0x21')]===_0xa463('0x20');var _0x45ae9d=_0x10d606['count'];var _0x5f2930=_0xc266d7?0x0:_0x3401d6[_0xa463('0x1f')];var _0x43810d=_0xc266d7?_0x10d606[_0xa463('0x22')]:_0x3401d6[_0xa463('0x1f')]+_0x3401d6[_0xa463('0x21')];var _0xcfc839;if(_0x43810d>=_0x45ae9d){_0x43810d=_0x45ae9d;_0xcfc839=0xc8;}else{_0xcfc839=0xce;}_0x291c60[_0xa463('0x23')](_0xcfc839);return _0x291c60['set']('Content-Range',_0x5f2930+'-'+_0x43810d+'/'+_0x45ae9d)['json'](_0x10d606);}return null;};}function patchUpdates(_0x39dfba){return function(_0xf72f48){try{jsonpatch[_0xa463('0x24')](_0xf72f48,_0x39dfba,!![]);}catch(_0x44633c){return BPromise['reject'](_0x44633c);}return _0xf72f48['save']();};}function saveUpdates(_0x42ece6,_0x4bca8a){return function(_0x5b79a3){if(_0x5b79a3){return _0x5b79a3[_0xa463('0x25')](_0x42ece6)[_0xa463('0x26')](function(_0x48d6fb){return _0x48d6fb;});}return null;};}function removeEntity(_0x4e0b81,_0x2f7ab0){return function(_0x22baeb){if(_0x22baeb){return _0x22baeb[_0xa463('0x27')]()[_0xa463('0x26')](function(){_0x4e0b81['status'](0xcc)[_0xa463('0x1e')]();});}};}function handleEntityNotFound(_0x3cc9ad,_0x5e7b0a){return function(_0x10abf7){if(!_0x10abf7){_0x3cc9ad[_0xa463('0x1d')](0x194);}return _0x10abf7;};}function handleError(_0x4d647e,_0x2e3163){_0x2e3163=_0x2e3163||0x1f4;return function(_0x57acf6){logger[_0xa463('0x28')](_0x57acf6['stack']);if(_0x57acf6[_0xa463('0x29')]){delete _0x57acf6[_0xa463('0x29')];}_0x4d647e[_0xa463('0x23')](_0x2e3163)[_0xa463('0x2a')](_0x57acf6);};}exports[_0xa463('0x2b')]=function(_0x4febe2,_0x4a34be){var _0x3d2c7e={},_0xb7f4c7={},_0x479c17={'count':0x0,'rows':[]};var _0x33b0cc=_['map'](db['OpenchannelTransferReport'][_0xa463('0x2c')],function(_0x1bf5f2){return{'name':_0x1bf5f2['fieldName'],'type':_0x1bf5f2[_0xa463('0x2d')][_0xa463('0x2e')]};});_0xb7f4c7[_0xa463('0x2f')]=_[_0xa463('0x30')](_0x33b0cc,_0xa463('0x29'));_0xb7f4c7['query']=_[_0xa463('0x31')](_0x4febe2[_0xa463('0x32')]);_0xb7f4c7[_0xa463('0x33')]=_['intersection'](_0xb7f4c7[_0xa463('0x2f')],_0xb7f4c7[_0xa463('0x32')]);_0x3d2c7e[_0xa463('0x34')]=_[_0xa463('0x35')](_0xb7f4c7[_0xa463('0x2f')],qs[_0xa463('0x36')](_0x4febe2[_0xa463('0x32')]['fields']));_0x3d2c7e[_0xa463('0x34')]=_0x3d2c7e[_0xa463('0x34')]['length']?_0x3d2c7e[_0xa463('0x34')]:_0xb7f4c7['model'];if(!_0x4febe2[_0xa463('0x32')][_0xa463('0x37')](_0xa463('0x38'))){_0x3d2c7e[_0xa463('0x21')]=qs[_0xa463('0x21')](_0x4febe2[_0xa463('0x32')][_0xa463('0x21')]);_0x3d2c7e[_0xa463('0x1f')]=qs['offset'](_0x4febe2[_0xa463('0x32')][_0xa463('0x1f')]);}_0x3d2c7e['order']=qs['sort'](_0x4febe2['query'][_0xa463('0x39')]);_0x3d2c7e[_0xa463('0x3a')]=qs[_0xa463('0x33')](_[_0xa463('0x3b')](_0x4febe2[_0xa463('0x32')],_0xb7f4c7[_0xa463('0x33')]),_0x33b0cc);if(_0x4febe2[_0xa463('0x32')]['filter']){_0x3d2c7e[_0xa463('0x3a')]=_[_0xa463('0x3c')](_0x3d2c7e[_0xa463('0x3a')],{'$or':_[_0xa463('0x30')](_0x33b0cc,function(_0x4dd15d){if(_0x4dd15d['type']!=='VIRTUAL'){var _0x335bc7={};_0x335bc7[_0x4dd15d[_0xa463('0x29')]]={'$like':'%'+_0x4febe2[_0xa463('0x32')][_0xa463('0x3d')]+'%'};return _0x335bc7;}})});}_0x3d2c7e=_[_0xa463('0x3c')]({},_0x3d2c7e,_0x4febe2[_0xa463('0x3e')]);var _0x13cdc6={'where':_0x3d2c7e[_0xa463('0x3a')]};return db[_0xa463('0x3f')][_0xa463('0x22')](_0x13cdc6)['then'](function(_0x4acb69){_0x479c17[_0xa463('0x22')]=_0x4acb69;if(_0x4febe2['query'][_0xa463('0x40')]){_0x3d2c7e['include']=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0xa463('0x41')](_0x3d2c7e);})[_0xa463('0x26')](function(_0x3048b1){_0x479c17['rows']=_0x3048b1;return _0x479c17;})[_0xa463('0x26')](respondWithFilteredResult(_0x4a34be,_0x3d2c7e))[_0xa463('0x42')](handleError(_0x4a34be,null));};exports[_0xa463('0x43')]=function(_0x587341,_0x154872){var _0x3a84a4={'raw':!![],'where':{'id':_0x587341[_0xa463('0x44')]['id']}},_0x379b5d={};_0x379b5d[_0xa463('0x2f')]=_[_0xa463('0x31')](db['OpenchannelTransferReport'][_0xa463('0x2c')]);_0x379b5d[_0xa463('0x32')]=_['keys'](_0x587341['query']);_0x379b5d[_0xa463('0x33')]=_['intersection'](_0x379b5d[_0xa463('0x2f')],_0x379b5d[_0xa463('0x32')]);_0x3a84a4[_0xa463('0x34')]=_[_0xa463('0x35')](_0x379b5d[_0xa463('0x2f')],qs['fields'](_0x587341[_0xa463('0x32')]['fields']));_0x3a84a4[_0xa463('0x34')]=_0x3a84a4[_0xa463('0x34')][_0xa463('0x45')]?_0x3a84a4[_0xa463('0x34')]:_0x379b5d['model'];if(_0x587341['query'][_0xa463('0x40')]){_0x3a84a4[_0xa463('0x46')]=[{'all':!![]}];}_0x3a84a4=_[_0xa463('0x3c')]({},_0x3a84a4,_0x587341[_0xa463('0x3e')]);return db[_0xa463('0x3f')]['find'](_0x3a84a4)[_0xa463('0x26')](handleEntityNotFound(_0x154872,null))[_0xa463('0x26')](respondWithResult(_0x154872,null))[_0xa463('0x42')](handleError(_0x154872,null));};exports['create']=function(_0x4f2965,_0x434365){return db['OpenchannelTransferReport'][_0xa463('0x47')](_0x4f2965['body'],{})['then'](respondWithResult(_0x434365,0xc9))[_0xa463('0x42')](handleError(_0x434365,null));};exports[_0xa463('0x25')]=function(_0x4eee21,_0x51dc34){if(_0x4eee21[_0xa463('0x48')]['id']){delete _0x4eee21[_0xa463('0x48')]['id'];}return db[_0xa463('0x3f')][_0xa463('0x49')]({'where':{'id':_0x4eee21[_0xa463('0x44')]['id']}})[_0xa463('0x26')](handleEntityNotFound(_0x51dc34,null))[_0xa463('0x26')](saveUpdates(_0x4eee21['body'],null))[_0xa463('0x26')](respondWithResult(_0x51dc34,null))[_0xa463('0x42')](handleError(_0x51dc34,null));};exports[_0xa463('0x27')]=function(_0x8c740c,_0x35acca){return db[_0xa463('0x3f')][_0xa463('0x49')]({'where':{'id':_0x8c740c[_0xa463('0x44')]['id']}})[_0xa463('0x26')](handleEntityNotFound(_0x35acca,null))[_0xa463('0x26')](removeEntity(_0x35acca,null))[_0xa463('0x42')](handleError(_0x35acca,null));};exports[_0xa463('0x4a')]=function(_0x55ebd7,_0x406e54){return db[_0xa463('0x3f')]['describe']()['then'](respondWithResult(_0x406e54,null))[_0xa463('0x42')](handleError(_0x406e54,null));};
\ No newline at end of file
+var _0x79ee=['reject','save','then','destroy','error','stack','name','send','index','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','update','find','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x356ab8,_0x1da2eb){var _0x2d1490=function(_0x579d59){while(--_0x579d59){_0x356ab8['push'](_0x356ab8['shift']());}};_0x2d1490(++_0x1da2eb);}(_0x79ee,0x164));var _0xe79e=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x79ee[_0x8c43de];return _0xa6591b;};'use strict';var emlformat=require(_0xe79e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe79e('0x1'));var jsonpatch=require(_0xe79e('0x2'));var rp=require('request-promise');var moment=require(_0xe79e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe79e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xe79e('0x5'));var csv=require(_0xe79e('0x6'));var ejs=require(_0xe79e('0x7'));var fs=require('fs');var fs_extra=require(_0xe79e('0x8'));var _=require(_0xe79e('0x9'));var squel=require(_0xe79e('0xa'));var crypto=require(_0xe79e('0xb'));var jsforce=require(_0xe79e('0xc'));var deskjs=require(_0xe79e('0xd'));var toCsv=require(_0xe79e('0x6'));var querystring=require(_0xe79e('0xe'));var Papa=require(_0xe79e('0xf'));var Redis=require(_0xe79e('0x10'));var authService=require(_0xe79e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe79e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe79e('0x13'))(_0xe79e('0x14'));var utils=require(_0xe79e('0x15'));var config=require(_0xe79e('0x16'));var licenseUtil=require(_0xe79e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30f65d,_0x1bdd64){_0x1bdd64=_0x1bdd64||0xcc;return function(_0x97a821){if(_0x97a821){return _0x30f65d[_0xe79e('0x18')](_0x1bdd64);}return _0x30f65d[_0xe79e('0x19')](_0x1bdd64)[_0xe79e('0x1a')]();};}function respondWithResult(_0x174844,_0x1f4e17){_0x1f4e17=_0x1f4e17||0xc8;return function(_0x478233){if(_0x478233){return _0x174844[_0xe79e('0x19')](_0x1f4e17)[_0xe79e('0x1b')](_0x478233);}};}function respondWithFilteredResult(_0x5154fc,_0x27fb36){return function(_0xdb0d1d){if(_0xdb0d1d){var _0x583fc9=typeof _0x27fb36[_0xe79e('0x1c')]===_0xe79e('0x1d')&&typeof _0x27fb36[_0xe79e('0x1e')]===_0xe79e('0x1d');var _0x55c76e=_0xdb0d1d['count'];var _0x5eb88f=_0x583fc9?0x0:_0x27fb36[_0xe79e('0x1c')];var _0x49847a=_0x583fc9?_0xdb0d1d[_0xe79e('0x1f')]:_0x27fb36['offset']+_0x27fb36[_0xe79e('0x1e')];var _0xae6f2a;if(_0x49847a>=_0x55c76e){_0x49847a=_0x55c76e;_0xae6f2a=0xc8;}else{_0xae6f2a=0xce;}_0x5154fc[_0xe79e('0x19')](_0xae6f2a);return _0x5154fc[_0xe79e('0x20')](_0xe79e('0x21'),_0x5eb88f+'-'+_0x49847a+'/'+_0x55c76e)[_0xe79e('0x1b')](_0xdb0d1d);}return null;};}function patchUpdates(_0x3202ce){return function(_0x3340c7){try{jsonpatch['apply'](_0x3340c7,_0x3202ce,!![]);}catch(_0x14efbd){return BPromise[_0xe79e('0x22')](_0x14efbd);}return _0x3340c7[_0xe79e('0x23')]();};}function saveUpdates(_0x21343d,_0x547a16){return function(_0x2f4f50){if(_0x2f4f50){return _0x2f4f50['update'](_0x21343d)[_0xe79e('0x24')](function(_0x184fab){return _0x184fab;});}return null;};}function removeEntity(_0x2090e2,_0x3f3ad2){return function(_0x491d29){if(_0x491d29){return _0x491d29[_0xe79e('0x25')]()[_0xe79e('0x24')](function(){_0x2090e2[_0xe79e('0x19')](0xcc)[_0xe79e('0x1a')]();});}};}function handleEntityNotFound(_0x5b8711,_0x4df95e){return function(_0x1cfdbb){if(!_0x1cfdbb){_0x5b8711['sendStatus'](0x194);}return _0x1cfdbb;};}function handleError(_0x7e234c,_0xbf234d){_0xbf234d=_0xbf234d||0x1f4;return function(_0x3a1dd6){logger[_0xe79e('0x26')](_0x3a1dd6[_0xe79e('0x27')]);if(_0x3a1dd6[_0xe79e('0x28')]){delete _0x3a1dd6[_0xe79e('0x28')];}_0x7e234c[_0xe79e('0x19')](_0xbf234d)[_0xe79e('0x29')](_0x3a1dd6);};}exports[_0xe79e('0x2a')]=function(_0x26b06b,_0xc00908){var _0x46e628={},_0x3b1e11={},_0x5c2ad3={'count':0x0,'rows':[]};var _0x40707c=_['map'](db[_0xe79e('0x2b')][_0xe79e('0x2c')],function(_0x3c852b){return{'name':_0x3c852b[_0xe79e('0x2d')],'type':_0x3c852b[_0xe79e('0x2e')][_0xe79e('0x2f')]};});_0x3b1e11[_0xe79e('0x30')]=_[_0xe79e('0x31')](_0x40707c,_0xe79e('0x28'));_0x3b1e11[_0xe79e('0x32')]=_[_0xe79e('0x33')](_0x26b06b[_0xe79e('0x32')]);_0x3b1e11[_0xe79e('0x34')]=_[_0xe79e('0x35')](_0x3b1e11[_0xe79e('0x30')],_0x3b1e11['query']);_0x46e628[_0xe79e('0x36')]=_[_0xe79e('0x35')](_0x3b1e11[_0xe79e('0x30')],qs[_0xe79e('0x37')](_0x26b06b[_0xe79e('0x32')]['fields']));_0x46e628[_0xe79e('0x36')]=_0x46e628['attributes'][_0xe79e('0x38')]?_0x46e628['attributes']:_0x3b1e11[_0xe79e('0x30')];if(!_0x26b06b[_0xe79e('0x32')]['hasOwnProperty'](_0xe79e('0x39'))){_0x46e628['limit']=qs[_0xe79e('0x1e')](_0x26b06b[_0xe79e('0x32')]['limit']);_0x46e628[_0xe79e('0x1c')]=qs['offset'](_0x26b06b['query'][_0xe79e('0x1c')]);}_0x46e628[_0xe79e('0x3a')]=qs[_0xe79e('0x3b')](_0x26b06b['query'][_0xe79e('0x3b')]);_0x46e628[_0xe79e('0x3c')]=qs['filters'](_[_0xe79e('0x3d')](_0x26b06b[_0xe79e('0x32')],_0x3b1e11['filters']),_0x40707c);if(_0x26b06b['query'][_0xe79e('0x3e')]){_0x46e628[_0xe79e('0x3c')]=_[_0xe79e('0x3f')](_0x46e628[_0xe79e('0x3c')],{'$or':_[_0xe79e('0x31')](_0x40707c,function(_0x481dbc){if(_0x481dbc[_0xe79e('0x2e')]!==_0xe79e('0x40')){var _0x19de41={};_0x19de41[_0x481dbc[_0xe79e('0x28')]]={'$like':'%'+_0x26b06b[_0xe79e('0x32')][_0xe79e('0x3e')]+'%'};return _0x19de41;}})});}_0x46e628=_[_0xe79e('0x3f')]({},_0x46e628,_0x26b06b[_0xe79e('0x41')]);var _0x53ab80={'where':_0x46e628[_0xe79e('0x3c')]};return db['OpenchannelTransferReport'][_0xe79e('0x1f')](_0x53ab80)[_0xe79e('0x24')](function(_0x35ab4f){_0x5c2ad3[_0xe79e('0x1f')]=_0x35ab4f;if(_0x26b06b['query'][_0xe79e('0x42')]){_0x46e628[_0xe79e('0x43')]=[{'all':!![]}];}return db[_0xe79e('0x2b')][_0xe79e('0x44')](_0x46e628);})[_0xe79e('0x24')](function(_0x271c0d){_0x5c2ad3[_0xe79e('0x45')]=_0x271c0d;return _0x5c2ad3;})[_0xe79e('0x24')](respondWithFilteredResult(_0xc00908,_0x46e628))['catch'](handleError(_0xc00908,null));};exports[_0xe79e('0x46')]=function(_0x23b489,_0x39fa27){var _0x6d394={'raw':!![],'where':{'id':_0x23b489[_0xe79e('0x47')]['id']}},_0x17fcb0={};_0x17fcb0[_0xe79e('0x30')]=_[_0xe79e('0x33')](db['OpenchannelTransferReport'][_0xe79e('0x2c')]);_0x17fcb0[_0xe79e('0x32')]=_['keys'](_0x23b489[_0xe79e('0x32')]);_0x17fcb0[_0xe79e('0x34')]=_[_0xe79e('0x35')](_0x17fcb0[_0xe79e('0x30')],_0x17fcb0['query']);_0x6d394[_0xe79e('0x36')]=_[_0xe79e('0x35')](_0x17fcb0[_0xe79e('0x30')],qs[_0xe79e('0x37')](_0x23b489['query'][_0xe79e('0x37')]));_0x6d394['attributes']=_0x6d394[_0xe79e('0x36')][_0xe79e('0x38')]?_0x6d394['attributes']:_0x17fcb0[_0xe79e('0x30')];if(_0x23b489[_0xe79e('0x32')]['includeAll']){_0x6d394[_0xe79e('0x43')]=[{'all':!![]}];}_0x6d394=_['merge']({},_0x6d394,_0x23b489[_0xe79e('0x41')]);return db['OpenchannelTransferReport']['find'](_0x6d394)['then'](handleEntityNotFound(_0x39fa27,null))[_0xe79e('0x24')](respondWithResult(_0x39fa27,null))[_0xe79e('0x48')](handleError(_0x39fa27,null));};exports[_0xe79e('0x49')]=function(_0x5aff64,_0x4988f3){return db[_0xe79e('0x2b')]['create'](_0x5aff64[_0xe79e('0x4a')],{})['then'](respondWithResult(_0x4988f3,0xc9))[_0xe79e('0x48')](handleError(_0x4988f3,null));};exports[_0xe79e('0x4b')]=function(_0x5893fb,_0x59fdf8){if(_0x5893fb[_0xe79e('0x4a')]['id']){delete _0x5893fb[_0xe79e('0x4a')]['id'];}return db[_0xe79e('0x2b')][_0xe79e('0x4c')]({'where':{'id':_0x5893fb[_0xe79e('0x47')]['id']}})[_0xe79e('0x24')](handleEntityNotFound(_0x59fdf8,null))[_0xe79e('0x24')](saveUpdates(_0x5893fb[_0xe79e('0x4a')],null))[_0xe79e('0x24')](respondWithResult(_0x59fdf8,null))[_0xe79e('0x48')](handleError(_0x59fdf8,null));};exports[_0xe79e('0x25')]=function(_0x491842,_0x1ab682){return db['OpenchannelTransferReport']['find']({'where':{'id':_0x491842[_0xe79e('0x47')]['id']}})['then'](handleEntityNotFound(_0x1ab682,null))[_0xe79e('0x24')](removeEntity(_0x1ab682,null))[_0xe79e('0x48')](handleError(_0x1ab682,null));};exports[_0xe79e('0x4d')]=function(_0x16fabe,_0x3fe023){return db[_0xe79e('0x2b')][_0xe79e('0x4d')]()[_0xe79e('0x24')](respondWithResult(_0x3fe023,null))[_0xe79e('0x48')](handleError(_0x3fe023,null));};
\ No newline at end of file
index 2fab54b..d73aa7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d2=['OpenchannelTransferReport','uniqueid','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','./openchannelTransferReport.attributes','exports','define'];(function(_0x3e82ae,_0x43b42f){var _0x4bffb6=function(_0x1ea15a){while(--_0x1ea15a){_0x3e82ae['push'](_0x3e82ae['shift']());}};_0x4bffb6(++_0x43b42f);}(_0x85d2,0x120));var _0x285d=function(_0x26d957,_0x1c32ee){_0x26d957=_0x26d957-0x0;var _0x3cf793=_0x85d2[_0x26d957];return _0x3cf793;};'use strict';var _=require(_0x285d('0x0'));var util=require('util');var logger=require(_0x285d('0x1'))('api');var moment=require(_0x285d('0x2'));var BPromise=require(_0x285d('0x3'));var rp=require(_0x285d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x285d('0x5'));var config=require('../../config/environment');var attributes=require(_0x285d('0x6'));module[_0x285d('0x7')]=function(_0x5a5109,_0x2b16dc){return _0x5a5109[_0x285d('0x8')](_0x285d('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x285d('0xa'),'fields':[_0x285d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7547=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash'];(function(_0x1e3e98,_0x1b3b2a){var _0x2d4fce=function(_0x1f7ebf){while(--_0x1f7ebf){_0x1e3e98['push'](_0x1e3e98['shift']());}};_0x2d4fce(++_0x1b3b2a);}(_0x7547,0xdf));var _0x7754=function(_0x1a4c68,_0x3b0a50){_0x1a4c68=_0x1a4c68-0x0;var _0x4ecfd5=_0x7547[_0x1a4c68];return _0x4ecfd5;};'use strict';var _=require(_0x7754('0x0'));var util=require('util');var logger=require(_0x7754('0x1'))(_0x7754('0x2'));var moment=require(_0x7754('0x3'));var BPromise=require(_0x7754('0x4'));var rp=require(_0x7754('0x5'));var fs=require('fs');var path=require(_0x7754('0x6'));var rimraf=require(_0x7754('0x7'));var config=require(_0x7754('0x8'));var attributes=require(_0x7754('0x9'));module[_0x7754('0xa')]=function(_0x3cd31c,_0x1ca1f0){return _0x3cd31c['define'](_0x7754('0xb'),attributes,{'tableName':_0x7754('0xc'),'paranoid':![],'indexes':[{'name':_0x7754('0xd'),'fields':[_0x7754('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 51312c4..9f23aef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f4=['info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x3a0d7a,_0x24c558){var _0x205b24=function(_0x5984e4){while(--_0x5984e4){_0x3a0d7a['push'](_0x3a0d7a['shift']());}};_0x205b24(++_0x24c558);}(_0x86f4,0x18a));var _0x486f=function(_0x300f18,_0x530c55){_0x300f18=_0x300f18-0x0;var _0x46147b=_0x86f4[_0x300f18];return _0x46147b;};'use strict';var _=require(_0x486f('0x0'));var util=require(_0x486f('0x1'));var moment=require(_0x486f('0x2'));var BPromise=require(_0x486f('0x3'));var rs=require(_0x486f('0x4'));var fs=require('fs');var Redis=require(_0x486f('0x5'));var db=require(_0x486f('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x486f('0x7'))(_0x486f('0x8'));var config=require('../../config/environment');var jayson=require(_0x486f('0x9'));var client=jayson[_0x486f('0xa')][_0x486f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x207201,_0x3c6469,_0x3a0791){return new BPromise(function(_0x5bfabc,_0x33363d){return client[_0x486f('0xc')](_0x207201,_0x3a0791)[_0x486f('0xd')](function(_0x468a82){logger[_0x486f('0xe')](_0x486f('0xf'),_0x3c6469,_0x486f('0x10'));logger[_0x486f('0x11')](_0x486f('0x12'),_0x3c6469,_0x486f('0x10'),JSON[_0x486f('0x13')](_0x468a82));if(_0x468a82[_0x486f('0x14')]){if(_0x468a82[_0x486f('0x14')][_0x486f('0x15')]===0x1f4){logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x468a82[_0x486f('0x14')]['message']);return _0x33363d(_0x468a82[_0x486f('0x14')]['message']);}logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x468a82[_0x486f('0x14')]['message']);return _0x5bfabc(_0x468a82['error'][_0x486f('0x16')]);}else{logger[_0x486f('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x3c6469,_0x486f('0x10'));_0x5bfabc(_0x468a82[_0x486f('0x17')][_0x486f('0x16')]);}})['catch'](function(_0x53561a){logger[_0x486f('0x14')](_0x486f('0xf'),_0x3c6469,_0x53561a);_0x33363d(_0x53561a);});});}
\ No newline at end of file
+var _0x29b1=['../../config/environment','jayson/promise','client','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','message','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x546aaf,_0x1ed138){var _0x1cbf6d=function(_0x36c837){while(--_0x36c837){_0x546aaf['push'](_0x546aaf['shift']());}};_0x1cbf6d(++_0x1ed138);}(_0x29b1,0x13b));var _0x129b=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x29b1[_0x3305de];return _0x3b5a84;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x129b('0x0'));var BPromise=require(_0x129b('0x1'));var rs=require(_0x129b('0x2'));var fs=require('fs');var Redis=require(_0x129b('0x3'));var db=require(_0x129b('0x4'))['db'];var utils=require(_0x129b('0x5'));var logger=require(_0x129b('0x6'))(_0x129b('0x7'));var config=require(_0x129b('0x8'));var jayson=require(_0x129b('0x9'));var client=jayson[_0x129b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b0923,_0x5f0bcc,_0x1155dd){return new BPromise(function(_0x31e697,_0x54a406){return client['request'](_0x4b0923,_0x1155dd)[_0x129b('0xb')](function(_0x5b7597){logger[_0x129b('0xc')](_0x129b('0xd'),_0x5f0bcc,_0x129b('0xe'));logger[_0x129b('0xf')](_0x129b('0x10'),_0x5f0bcc,_0x129b('0xe'),JSON['stringify'](_0x5b7597));if(_0x5b7597[_0x129b('0x11')]){if(_0x5b7597[_0x129b('0x11')]['code']===0x1f4){logger[_0x129b('0x11')](_0x129b('0xd'),_0x5f0bcc,_0x5b7597['error'][_0x129b('0x12')]);return _0x54a406(_0x5b7597[_0x129b('0x11')][_0x129b('0x12')]);}logger[_0x129b('0x11')](_0x129b('0xd'),_0x5f0bcc,_0x5b7597['error'][_0x129b('0x12')]);return _0x31e697(_0x5b7597[_0x129b('0x11')][_0x129b('0x12')]);}else{logger['info'](_0x129b('0xd'),_0x5f0bcc,_0x129b('0xe'));_0x31e697(_0x5b7597['result'][_0x129b('0x12')]);}})['catch'](function(_0x168620){logger[_0x129b('0x11')](_0x129b('0xd'),_0x5f0bcc,_0x168620);_0x54a406(_0x168620);});});}
\ No newline at end of file
index eb0943c..999b8d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065f=['isAuthenticated','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./pause.controller','index','get','/:id'];(function(_0x3c49dd,_0x209048){var _0x532558=function(_0x155ceb){while(--_0x155ceb){_0x3c49dd['push'](_0x3c49dd['shift']());}};_0x532558(++_0x209048);}(_0x065f,0x85));var _0xf065=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x065f[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0xf065('0x0'));var util=require(_0xf065('0x1'));var path=require(_0xf065('0x2'));var timeout=require(_0xf065('0x3'));var express=require(_0xf065('0x4'));var router=express[_0xf065('0x5')]();var fs_extra=require(_0xf065('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf065('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf065('0x8')]);router[_0xf065('0x9')](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0xc')]);router['post']('/',auth[_0xf065('0xb')](),controller[_0xf065('0xd')]);router[_0xf065('0xe')](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0xf')]);router['delete'](_0xf065('0xa'),auth[_0xf065('0xb')](),controller[_0xf065('0x10')]);module[_0xf065('0x11')]=router;
\ No newline at end of file
+var _0xb951=['./pause.controller','get','isAuthenticated','/:id','show','create','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x56ce8a,_0x30ef57){var _0x11f9c0=function(_0x927a1b){while(--_0x927a1b){_0x56ce8a['push'](_0x56ce8a['shift']());}};_0x11f9c0(++_0x30ef57);}(_0xb951,0x139));var _0x1b95=function(_0x56ad2c,_0x2f41c3){_0x56ad2c=_0x56ad2c-0x0;var _0x143ea6=_0xb951[_0x56ad2c];return _0x143ea6;};'use strict';var multer=require(_0x1b95('0x0'));var util=require(_0x1b95('0x1'));var path=require('path');var timeout=require(_0x1b95('0x2'));var express=require(_0x1b95('0x3'));var router=express['Router']();var fs_extra=require(_0x1b95('0x4'));var auth=require(_0x1b95('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1b95('0x6'));var controller=require(_0x1b95('0x7'));router[_0x1b95('0x8')]('/',auth[_0x1b95('0x9')](),controller['index']);router[_0x1b95('0x8')](_0x1b95('0xa'),auth[_0x1b95('0x9')](),controller[_0x1b95('0xb')]);router['post']('/',auth[_0x1b95('0x9')](),controller[_0x1b95('0xc')]);router['put'](_0x1b95('0xa'),auth[_0x1b95('0x9')](),controller[_0x1b95('0xd')]);router[_0x1b95('0xe')](_0x1b95('0xa'),auth[_0x1b95('0x9')](),controller['destroy']);module[_0x1b95('0xf')]=router;
\ No newline at end of file
index 7b23b09..6452f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb164=['STRING','sequelize','exports','name'];(function(_0x4f0f9b,_0x4e963e){var _0x970f94=function(_0xdde68a){while(--_0xdde68a){_0x4f0f9b['push'](_0x4f0f9b['shift']());}};_0x970f94(++_0x4e963e);}(_0xb164,0x1d9));var _0x4b16=function(_0x1c5d53,_0x1029a2){_0x1c5d53=_0x1c5d53-0x0;var _0x2ef0f8=_0xb164[_0x1c5d53];return _0x2ef0f8;};'use strict';var Sequelize=require(_0x4b16('0x0'));module[_0x4b16('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x4b16('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x4b16('0x3')]}};
\ No newline at end of file
+var _0x1fb6=['name','sequelize','exports'];(function(_0x1ed7a9,_0x9ef76a){var _0x124dde=function(_0xb09be8){while(--_0xb09be8){_0x1ed7a9['push'](_0x1ed7a9['shift']());}};_0x124dde(++_0x9ef76a);}(_0x1fb6,0x19c));var _0x61fb=function(_0x402596,_0x488ec6){_0x402596=_0x402596-0x0;var _0x4ed195=_0x1fb6[_0x402596];return _0x4ed195;};'use strict';var Sequelize=require(_0x61fb('0x0'));module[_0x61fb('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x61fb('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e0056ef..b5a3360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee9=['map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','Pause','include','findAll','rows','catch','show','params','keys','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','limit','count','status','set','apply','save','update','then','destroy','get','Pauses','UserProfileResource','error','stack','name','index'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xfee9,0x11d));var _0x9fee=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xfee9[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9fee('0x0'));var jsonpatch=require(_0x9fee('0x1'));var rp=require(_0x9fee('0x2'));var moment=require(_0x9fee('0x3'));var BPromise=require(_0x9fee('0x4'));var Mustache=require(_0x9fee('0x5'));var util=require(_0x9fee('0x6'));var path=require(_0x9fee('0x7'));var sox=require(_0x9fee('0x8'));var csv=require(_0x9fee('0x9'));var ejs=require(_0x9fee('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9fee('0xb'));var crypto=require(_0x9fee('0xc'));var jsforce=require(_0x9fee('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9fee('0x9'));var querystring=require(_0x9fee('0xe'));var Papa=require(_0x9fee('0xf'));var Redis=require(_0x9fee('0x10'));var authService=require(_0x9fee('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9fee('0x12'));var hardwareService=require(_0x9fee('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x9fee('0x14'));var config=require(_0x9fee('0x15'));var licenseUtil=require(_0x9fee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56ca98,_0x4b1b3b){_0x4b1b3b=_0x4b1b3b||0xcc;return function(_0x4bef2a){if(_0x4bef2a){return _0x56ca98[_0x9fee('0x17')](_0x4b1b3b);}return _0x56ca98['status'](_0x4b1b3b)['end']();};}function respondWithResult(_0x5b8827,_0x180185){_0x180185=_0x180185||0xc8;return function(_0x3f98df){if(_0x3f98df){return _0x5b8827['status'](_0x180185)[_0x9fee('0x18')](_0x3f98df);}};}function respondWithFilteredResult(_0x439b4d,_0x1d3d0b){return function(_0x1ad3d4){if(_0x1ad3d4){var _0x42207a=typeof _0x1d3d0b[_0x9fee('0x19')]===_0x9fee('0x1a')&&typeof _0x1d3d0b[_0x9fee('0x1b')]===_0x9fee('0x1a');var _0x40aee4=_0x1ad3d4[_0x9fee('0x1c')];var _0x228bb9=_0x42207a?0x0:_0x1d3d0b[_0x9fee('0x19')];var _0x5489f4=_0x42207a?_0x1ad3d4[_0x9fee('0x1c')]:_0x1d3d0b['offset']+_0x1d3d0b['limit'];var _0x9b2a2;if(_0x5489f4>=_0x40aee4){_0x5489f4=_0x40aee4;_0x9b2a2=0xc8;}else{_0x9b2a2=0xce;}_0x439b4d[_0x9fee('0x1d')](_0x9b2a2);return _0x439b4d[_0x9fee('0x1e')]('Content-Range',_0x228bb9+'-'+_0x5489f4+'/'+_0x40aee4)[_0x9fee('0x18')](_0x1ad3d4);}return null;};}function patchUpdates(_0x52a9e8){return function(_0x53a955){try{jsonpatch[_0x9fee('0x1f')](_0x53a955,_0x52a9e8,!![]);}catch(_0x1c779f){return BPromise['reject'](_0x1c779f);}return _0x53a955[_0x9fee('0x20')]();};}function saveUpdates(_0xeb4322,_0x25bc95){return function(_0x4feb1d){if(_0x4feb1d){return _0x4feb1d[_0x9fee('0x21')](_0xeb4322)[_0x9fee('0x22')](function(_0x591def){return _0x591def;});}return null;};}function removeEntity(_0x519cd0,_0x40af98){return function(_0x2fe77e){if(_0x2fe77e){return _0x2fe77e[_0x9fee('0x23')]()[_0x9fee('0x22')](function(){var _0x7ada9c=_0x2fe77e[_0x9fee('0x24')]({'plain':!![]});var _0x38fa70=_0x9fee('0x25');return db[_0x9fee('0x26')][_0x9fee('0x23')]({'where':{'type':_0x38fa70,'resourceId':_0x7ada9c['id']}})[_0x9fee('0x22')](function(){return _0x2fe77e;});})[_0x9fee('0x22')](function(){_0x519cd0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x680b7a,_0x22badf){return function(_0x27f6d9){if(!_0x27f6d9){_0x680b7a['sendStatus'](0x194);}return _0x27f6d9;};}function handleError(_0x561278,_0x53a3da){_0x53a3da=_0x53a3da||0x1f4;return function(_0x5de76b){logger[_0x9fee('0x27')](_0x5de76b[_0x9fee('0x28')]);if(_0x5de76b[_0x9fee('0x29')]){delete _0x5de76b[_0x9fee('0x29')];}_0x561278[_0x9fee('0x1d')](_0x53a3da)['send'](_0x5de76b);};}exports[_0x9fee('0x2a')]=function(_0x422591,_0x6442cd){var _0x2bda52={},_0x4bafff={},_0x5cce79={'count':0x0,'rows':[]};var _0x3fa272=_[_0x9fee('0x2b')](db['Pause'][_0x9fee('0x2c')],function(_0x2fd9e5){return{'name':_0x2fd9e5[_0x9fee('0x2d')],'type':_0x2fd9e5[_0x9fee('0x2e')][_0x9fee('0x2f')]};});_0x4bafff['model']=_[_0x9fee('0x2b')](_0x3fa272,_0x9fee('0x29'));_0x4bafff[_0x9fee('0x30')]=_['keys'](_0x422591[_0x9fee('0x30')]);_0x4bafff[_0x9fee('0x31')]=_[_0x9fee('0x32')](_0x4bafff[_0x9fee('0x33')],_0x4bafff[_0x9fee('0x30')]);_0x2bda52[_0x9fee('0x34')]=_[_0x9fee('0x32')](_0x4bafff[_0x9fee('0x33')],qs[_0x9fee('0x35')](_0x422591[_0x9fee('0x30')][_0x9fee('0x35')]));_0x2bda52[_0x9fee('0x34')]=_0x2bda52[_0x9fee('0x34')][_0x9fee('0x36')]?_0x2bda52[_0x9fee('0x34')]:_0x4bafff[_0x9fee('0x33')];if(!_0x422591['query']['hasOwnProperty'](_0x9fee('0x37'))){_0x2bda52[_0x9fee('0x1b')]=qs[_0x9fee('0x1b')](_0x422591['query'][_0x9fee('0x1b')]);_0x2bda52[_0x9fee('0x19')]=qs[_0x9fee('0x19')](_0x422591['query'][_0x9fee('0x19')]);}_0x2bda52[_0x9fee('0x38')]=qs[_0x9fee('0x39')](_0x422591[_0x9fee('0x30')][_0x9fee('0x39')]);_0x2bda52[_0x9fee('0x3a')]=qs['filters'](_[_0x9fee('0x3b')](_0x422591[_0x9fee('0x30')],_0x4bafff[_0x9fee('0x31')]),_0x3fa272);if(_0x422591[_0x9fee('0x30')][_0x9fee('0x3c')]){_0x2bda52[_0x9fee('0x3a')]=_[_0x9fee('0x3d')](_0x2bda52[_0x9fee('0x3a')],{'$or':_[_0x9fee('0x2b')](_0x3fa272,function(_0x3f723d){if(_0x3f723d[_0x9fee('0x2e')]!=='VIRTUAL'){var _0x5129c4={};_0x5129c4[_0x3f723d[_0x9fee('0x29')]]={'$like':'%'+_0x422591[_0x9fee('0x30')][_0x9fee('0x3c')]+'%'};return _0x5129c4;}})});}_0x2bda52=_['merge']({},_0x2bda52,_0x422591[_0x9fee('0x3e')]);var _0x25c79c={'where':_0x2bda52['where']};return db[_0x9fee('0x3f')][_0x9fee('0x1c')](_0x25c79c)[_0x9fee('0x22')](function(_0x19f67f){_0x5cce79[_0x9fee('0x1c')]=_0x19f67f;if(_0x422591[_0x9fee('0x30')]['includeAll']){_0x2bda52[_0x9fee('0x40')]=[{'all':!![]}];}return db[_0x9fee('0x3f')][_0x9fee('0x41')](_0x2bda52);})['then'](function(_0x165f39){_0x5cce79[_0x9fee('0x42')]=_0x165f39;return _0x5cce79;})['then'](respondWithFilteredResult(_0x6442cd,_0x2bda52))[_0x9fee('0x43')](handleError(_0x6442cd,null));};exports[_0x9fee('0x44')]=function(_0x4fdf59,_0x41910a){var _0x2b60f5={'raw':!![],'where':{'id':_0x4fdf59[_0x9fee('0x45')]['id']}},_0x21fdd0={};_0x21fdd0['model']=_[_0x9fee('0x46')](db[_0x9fee('0x3f')][_0x9fee('0x2c')]);_0x21fdd0[_0x9fee('0x30')]=_['keys'](_0x4fdf59[_0x9fee('0x30')]);_0x21fdd0[_0x9fee('0x31')]=_[_0x9fee('0x32')](_0x21fdd0[_0x9fee('0x33')],_0x21fdd0[_0x9fee('0x30')]);_0x2b60f5[_0x9fee('0x34')]=_[_0x9fee('0x32')](_0x21fdd0[_0x9fee('0x33')],qs[_0x9fee('0x35')](_0x4fdf59[_0x9fee('0x30')][_0x9fee('0x35')]));_0x2b60f5[_0x9fee('0x34')]=_0x2b60f5[_0x9fee('0x34')][_0x9fee('0x36')]?_0x2b60f5[_0x9fee('0x34')]:_0x21fdd0[_0x9fee('0x33')];if(_0x4fdf59['query'][_0x9fee('0x47')]){_0x2b60f5[_0x9fee('0x40')]=[{'all':!![]}];}_0x2b60f5=_[_0x9fee('0x3d')]({},_0x2b60f5,_0x4fdf59[_0x9fee('0x3e')]);return db['Pause']['find'](_0x2b60f5)['then'](handleEntityNotFound(_0x41910a,null))[_0x9fee('0x22')](respondWithResult(_0x41910a,null))['catch'](handleError(_0x41910a,null));};exports[_0x9fee('0x48')]=function(_0x3dc81f,_0x2eb5f7){return db[_0x9fee('0x3f')]['create'](_0x3dc81f[_0x9fee('0x49')],{})[_0x9fee('0x22')](function(_0xbd2170){var _0x3d5eaa=_0x3dc81f[_0x9fee('0x4a')][_0x9fee('0x24')]({'plain':!![]});if(!_0x3d5eaa)throw new Error(_0x9fee('0x4b'));if(_0x3d5eaa[_0x9fee('0x4c')]==='user'){var _0x4aa071=_0xbd2170['get']({'plain':!![]});var _0xad9d61=_0x9fee('0x25');return db[_0x9fee('0x4d')][_0x9fee('0x4e')]({'where':{'name':_0xad9d61,'userProfileId':_0x3d5eaa[_0x9fee('0x4f')]},'raw':!![]})[_0x9fee('0x22')](function(_0x42c3b2){if(_0x42c3b2&&_0x42c3b2[_0x9fee('0x50')]===0x0){return db[_0x9fee('0x26')]['create']({'name':_0x4aa071[_0x9fee('0x29')],'resourceId':_0x4aa071['id'],'type':_0x42c3b2[_0x9fee('0x29')],'sectionId':_0x42c3b2['id']},{})['then'](function(){return _0xbd2170;});}else{return _0xbd2170;}})['catch'](function(_0x242ba4){logger[_0x9fee('0x27')](_0x9fee('0x51'),_0x242ba4);throw _0x242ba4;});}return _0xbd2170;})[_0x9fee('0x22')](respondWithResult(_0x2eb5f7,0xc9))[_0x9fee('0x43')](handleError(_0x2eb5f7,null));};exports['update']=function(_0x3556e3,_0xe05d0e){if(_0x3556e3['body']['id']){delete _0x3556e3[_0x9fee('0x49')]['id'];}return db[_0x9fee('0x3f')]['find']({'where':{'id':_0x3556e3[_0x9fee('0x45')]['id']}})['then'](handleEntityNotFound(_0xe05d0e,null))[_0x9fee('0x22')](saveUpdates(_0x3556e3[_0x9fee('0x49')],null))['then'](respondWithResult(_0xe05d0e,null))[_0x9fee('0x43')](handleError(_0xe05d0e,null));};exports[_0x9fee('0x23')]=function(_0x121edf,_0xe38786){return db[_0x9fee('0x3f')][_0x9fee('0x4e')]({'where':{'id':_0x121edf['params']['id']}})['then'](handleEntityNotFound(_0xe38786,null))[_0x9fee('0x22')](removeEntity(_0xe38786,null))[_0x9fee('0x43')](handleError(_0xe38786,null));};
\ No newline at end of file
+var _0x2931=['findAll','rows','show','params','rawAttributes','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Pauses','userProfileId','autoAssociation','update','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','Pause','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include'];(function(_0x1b3dc6,_0x30fe5d){var _0x195cfb=function(_0x18d63d){while(--_0x18d63d){_0x1b3dc6['push'](_0x1b3dc6['shift']());}};_0x195cfb(++_0x30fe5d);}(_0x2931,0xba));var _0x1293=function(_0x32351f,_0x482d37){_0x32351f=_0x32351f-0x0;var _0x3604a8=_0x2931[_0x32351f];return _0x3604a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1293('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1293('0x1'));var rp=require(_0x1293('0x2'));var moment=require(_0x1293('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1293('0x4'));var util=require(_0x1293('0x5'));var path=require(_0x1293('0x6'));var sox=require('sox');var csv=require(_0x1293('0x7'));var ejs=require(_0x1293('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1293('0x9'));var squel=require(_0x1293('0xa'));var crypto=require(_0x1293('0xb'));var jsforce=require(_0x1293('0xc'));var deskjs=require(_0x1293('0xd'));var toCsv=require(_0x1293('0x7'));var querystring=require(_0x1293('0xe'));var Papa=require(_0x1293('0xf'));var Redis=require(_0x1293('0x10'));var authService=require(_0x1293('0x11'));var qs=require(_0x1293('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1293('0x13'));var logger=require('../../config/logger')(_0x1293('0x14'));var utils=require(_0x1293('0x15'));var config=require(_0x1293('0x16'));var licenseUtil=require(_0x1293('0x17'));var db=require(_0x1293('0x18'))['db'];function respondWithStatusCode(_0x502803,_0x4afdfb){_0x4afdfb=_0x4afdfb||0xcc;return function(_0x420efc){if(_0x420efc){return _0x502803[_0x1293('0x19')](_0x4afdfb);}return _0x502803['status'](_0x4afdfb)['end']();};}function respondWithResult(_0x5d6e22,_0x3aa9e5){_0x3aa9e5=_0x3aa9e5||0xc8;return function(_0x494e49){if(_0x494e49){return _0x5d6e22['status'](_0x3aa9e5)[_0x1293('0x1a')](_0x494e49);}};}function respondWithFilteredResult(_0x577671,_0x39e2ef){return function(_0x1910a2){if(_0x1910a2){var _0x46e299=typeof _0x39e2ef[_0x1293('0x1b')]===_0x1293('0x1c')&&typeof _0x39e2ef[_0x1293('0x1d')]==='undefined';var _0x416d9b=_0x1910a2[_0x1293('0x1e')];var _0x5dfb18=_0x46e299?0x0:_0x39e2ef['offset'];var _0x58ead4=_0x46e299?_0x1910a2[_0x1293('0x1e')]:_0x39e2ef['offset']+_0x39e2ef[_0x1293('0x1d')];var _0x353f22;if(_0x58ead4>=_0x416d9b){_0x58ead4=_0x416d9b;_0x353f22=0xc8;}else{_0x353f22=0xce;}_0x577671[_0x1293('0x1f')](_0x353f22);return _0x577671[_0x1293('0x20')](_0x1293('0x21'),_0x5dfb18+'-'+_0x58ead4+'/'+_0x416d9b)[_0x1293('0x1a')](_0x1910a2);}return null;};}function patchUpdates(_0x461c93){return function(_0x5e782c){try{jsonpatch[_0x1293('0x22')](_0x5e782c,_0x461c93,!![]);}catch(_0x40c7d0){return BPromise[_0x1293('0x23')](_0x40c7d0);}return _0x5e782c[_0x1293('0x24')]();};}function saveUpdates(_0x5a397,_0x4977cc){return function(_0x2fd773){if(_0x2fd773){return _0x2fd773['update'](_0x5a397)['then'](function(_0x22ae1f){return _0x22ae1f;});}return null;};}function removeEntity(_0x38ee89,_0x291209){return function(_0x3eb915){if(_0x3eb915){return _0x3eb915['destroy']()[_0x1293('0x25')](function(){var _0x16c4d2=_0x3eb915[_0x1293('0x26')]({'plain':!![]});var _0x17c5a5='Pauses';return db[_0x1293('0x27')][_0x1293('0x28')]({'where':{'type':_0x17c5a5,'resourceId':_0x16c4d2['id']}})[_0x1293('0x25')](function(){return _0x3eb915;});})[_0x1293('0x25')](function(){_0x38ee89[_0x1293('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x6cba25,_0x1395c0){return function(_0x5b1c63){if(!_0x5b1c63){_0x6cba25['sendStatus'](0x194);}return _0x5b1c63;};}function handleError(_0x34a145,_0x4d6452){_0x4d6452=_0x4d6452||0x1f4;return function(_0x52ea60){logger[_0x1293('0x29')](_0x52ea60[_0x1293('0x2a')]);if(_0x52ea60[_0x1293('0x2b')]){delete _0x52ea60[_0x1293('0x2b')];}_0x34a145[_0x1293('0x1f')](_0x4d6452)[_0x1293('0x2c')](_0x52ea60);};}exports[_0x1293('0x2d')]=function(_0x53e796,_0x426b3b){var _0x471935={},_0x4de610={},_0x2c42c5={'count':0x0,'rows':[]};var _0x17b99b=_[_0x1293('0x2e')](db[_0x1293('0x2f')]['rawAttributes'],function(_0x2543ec){return{'name':_0x2543ec['fieldName'],'type':_0x2543ec[_0x1293('0x30')][_0x1293('0x31')]};});_0x4de610[_0x1293('0x32')]=_[_0x1293('0x2e')](_0x17b99b,_0x1293('0x2b'));_0x4de610['query']=_[_0x1293('0x33')](_0x53e796[_0x1293('0x34')]);_0x4de610[_0x1293('0x35')]=_[_0x1293('0x36')](_0x4de610[_0x1293('0x32')],_0x4de610[_0x1293('0x34')]);_0x471935[_0x1293('0x37')]=_['intersection'](_0x4de610[_0x1293('0x32')],qs[_0x1293('0x38')](_0x53e796[_0x1293('0x34')][_0x1293('0x38')]));_0x471935[_0x1293('0x37')]=_0x471935[_0x1293('0x37')][_0x1293('0x39')]?_0x471935[_0x1293('0x37')]:_0x4de610[_0x1293('0x32')];if(!_0x53e796[_0x1293('0x34')][_0x1293('0x3a')](_0x1293('0x3b'))){_0x471935[_0x1293('0x1d')]=qs[_0x1293('0x1d')](_0x53e796[_0x1293('0x34')]['limit']);_0x471935[_0x1293('0x1b')]=qs[_0x1293('0x1b')](_0x53e796[_0x1293('0x34')]['offset']);}_0x471935['order']=qs[_0x1293('0x3c')](_0x53e796['query'][_0x1293('0x3c')]);_0x471935[_0x1293('0x3d')]=qs[_0x1293('0x35')](_[_0x1293('0x3e')](_0x53e796[_0x1293('0x34')],_0x4de610[_0x1293('0x35')]),_0x17b99b);if(_0x53e796[_0x1293('0x34')][_0x1293('0x3f')]){_0x471935[_0x1293('0x3d')]=_[_0x1293('0x40')](_0x471935[_0x1293('0x3d')],{'$or':_[_0x1293('0x2e')](_0x17b99b,function(_0x5a9210){if(_0x5a9210[_0x1293('0x30')]!==_0x1293('0x41')){var _0xec712={};_0xec712[_0x5a9210[_0x1293('0x2b')]]={'$like':'%'+_0x53e796[_0x1293('0x34')][_0x1293('0x3f')]+'%'};return _0xec712;}})});}_0x471935=_[_0x1293('0x40')]({},_0x471935,_0x53e796[_0x1293('0x42')]);var _0x1b92f6={'where':_0x471935[_0x1293('0x3d')]};return db[_0x1293('0x2f')][_0x1293('0x1e')](_0x1b92f6)[_0x1293('0x25')](function(_0x2ba7e2){_0x2c42c5[_0x1293('0x1e')]=_0x2ba7e2;if(_0x53e796['query'][_0x1293('0x43')]){_0x471935[_0x1293('0x44')]=[{'all':!![]}];}return db[_0x1293('0x2f')][_0x1293('0x45')](_0x471935);})[_0x1293('0x25')](function(_0x3b609c){_0x2c42c5[_0x1293('0x46')]=_0x3b609c;return _0x2c42c5;})[_0x1293('0x25')](respondWithFilteredResult(_0x426b3b,_0x471935))['catch'](handleError(_0x426b3b,null));};exports[_0x1293('0x47')]=function(_0x58e7a2,_0x44ce3b){var _0x38551b={'raw':!![],'where':{'id':_0x58e7a2[_0x1293('0x48')]['id']}},_0x25beb8={};_0x25beb8[_0x1293('0x32')]=_['keys'](db[_0x1293('0x2f')][_0x1293('0x49')]);_0x25beb8[_0x1293('0x34')]=_[_0x1293('0x33')](_0x58e7a2[_0x1293('0x34')]);_0x25beb8[_0x1293('0x35')]=_[_0x1293('0x36')](_0x25beb8[_0x1293('0x32')],_0x25beb8[_0x1293('0x34')]);_0x38551b[_0x1293('0x37')]=_[_0x1293('0x36')](_0x25beb8[_0x1293('0x32')],qs[_0x1293('0x38')](_0x58e7a2[_0x1293('0x34')][_0x1293('0x38')]));_0x38551b[_0x1293('0x37')]=_0x38551b['attributes'][_0x1293('0x39')]?_0x38551b['attributes']:_0x25beb8['model'];if(_0x58e7a2[_0x1293('0x34')][_0x1293('0x43')]){_0x38551b[_0x1293('0x44')]=[{'all':!![]}];}_0x38551b=_[_0x1293('0x40')]({},_0x38551b,_0x58e7a2[_0x1293('0x42')]);return db['Pause'][_0x1293('0x4a')](_0x38551b)[_0x1293('0x25')](handleEntityNotFound(_0x44ce3b,null))[_0x1293('0x25')](respondWithResult(_0x44ce3b,null))[_0x1293('0x4b')](handleError(_0x44ce3b,null));};exports[_0x1293('0x4c')]=function(_0x26d48f,_0x582267){return db[_0x1293('0x2f')][_0x1293('0x4c')](_0x26d48f[_0x1293('0x4d')],{})[_0x1293('0x25')](function(_0x2cea39){var _0x4ba76c=_0x26d48f[_0x1293('0x4e')]['get']({'plain':!![]});if(!_0x4ba76c)throw new Error(_0x1293('0x4f'));if(_0x4ba76c[_0x1293('0x50')]===_0x1293('0x4e')){var _0x4e43c8=_0x2cea39[_0x1293('0x26')]({'plain':!![]});var _0x411627=_0x1293('0x51');return db['UserProfileSection'][_0x1293('0x4a')]({'where':{'name':_0x411627,'userProfileId':_0x4ba76c[_0x1293('0x52')]},'raw':!![]})['then'](function(_0x5878a9){if(_0x5878a9&&_0x5878a9[_0x1293('0x53')]===0x0){return db[_0x1293('0x27')][_0x1293('0x4c')]({'name':_0x4e43c8[_0x1293('0x2b')],'resourceId':_0x4e43c8['id'],'type':_0x5878a9[_0x1293('0x2b')],'sectionId':_0x5878a9['id']},{})[_0x1293('0x25')](function(){return _0x2cea39;});}else{return _0x2cea39;}})[_0x1293('0x4b')](function(_0x355f04){logger[_0x1293('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x355f04);throw _0x355f04;});}return _0x2cea39;})[_0x1293('0x25')](respondWithResult(_0x582267,0xc9))[_0x1293('0x4b')](handleError(_0x582267,null));};exports[_0x1293('0x54')]=function(_0x2db383,_0x103368){if(_0x2db383[_0x1293('0x4d')]['id']){delete _0x2db383['body']['id'];}return db[_0x1293('0x2f')]['find']({'where':{'id':_0x2db383[_0x1293('0x48')]['id']}})[_0x1293('0x25')](handleEntityNotFound(_0x103368,null))[_0x1293('0x25')](saveUpdates(_0x2db383[_0x1293('0x4d')],null))['then'](respondWithResult(_0x103368,null))['catch'](handleError(_0x103368,null));};exports['destroy']=function(_0x26bac7,_0x494dce){return db[_0x1293('0x2f')][_0x1293('0x4a')]({'where':{'id':_0x26bac7[_0x1293('0x48')]['id']}})[_0x1293('0x25')](handleEntityNotFound(_0x494dce,null))[_0x1293('0x25')](removeEntity(_0x494dce,null))[_0x1293('0x4b')](handleError(_0x494dce,null));};
\ No newline at end of file
index 704db42..3714210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x19b84f,_0x48765e){var _0x18067b=function(_0x1c69aa){while(--_0x1c69aa){_0x19b84f['push'](_0x19b84f['shift']());}};_0x18067b(++_0x48765e);}(_0x7217,0x19e));var _0x7721=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x7217[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x1df099,_0x353123){var _0x35f53f=function(_0x7d55fd){while(--_0x7d55fd){_0x1df099['push'](_0x1df099['shift']());}};_0x35f53f(++_0x353123);}(_0x8ef6,0xf2));var _0x68ef=function(_0x15dbec,_0x3198dc){_0x15dbec=_0x15dbec-0x0;var _0x5e8fcd=_0x8ef6[_0x15dbec];return _0x5e8fcd;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var logger=require(_0x68ef('0x2'))(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var BPromise=require(_0x68ef('0x5'));var rp=require(_0x68ef('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var attributes=require(_0x68ef('0x9'));module[_0x68ef('0xa')]=function(_0x4d26e3,_0x4f77f3){return _0x4d26e3[_0x68ef('0xb')](_0x68ef('0xc'),attributes,{'tableName':_0x68ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 609a342..0ec30fe 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(_0x3d69ea,_0x53d86b){var _0x4dfb17=function(_0x57017d){while(--_0x57017d){_0x3d69ea['push'](_0x3d69ea['shift']());}};_0x4dfb17(++_0x53d86b);}(_0x7a54,0x106));var _0x47a5=function(_0x479e34,_0x246ea8){_0x479e34=_0x479e34-0x0;var _0xea1c47=_0x7a54[_0x479e34];return _0xea1c47;};'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 _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x26f6ee,_0x4c0971){var _0x58a230=function(_0x377de2){while(--_0x377de2){_0x26f6ee['push'](_0x26f6ee['shift']());}};_0x58a230(++_0x4c0971);}(_0xb10b,0x12a));var _0xbb10=function(_0x304d85,_0x3bd383){_0x304d85=_0x304d85-0x0;var _0x570077=_0xb10b[_0x304d85];return _0x570077;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 9d32d1c..1af15b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303a=['show','/:id/download','download','join','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','single','file','upload','webhookPost','/:id','update','delete','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook'];(function(_0x533310,_0x1bad41){var _0x4f3d61=function(_0x58c795){while(--_0x58c795){_0x533310['push'](_0x533310['shift']());}};_0x4f3d61(++_0x1bad41);}(_0x303a,0x1a0));var _0xa303=function(_0x47bbd5,_0xfab6bc){_0x47bbd5=_0x47bbd5-0x0;var _0xea2a13=_0x303a[_0x47bbd5];return _0xea2a13;};'use strict';var multer=require(_0xa303('0x0'));var util=require('util');var path=require(_0xa303('0x1'));var timeout=require(_0xa303('0x2'));var express=require(_0xa303('0x3'));var router=express[_0xa303('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa303('0x5'));var interaction=require(_0xa303('0x6'));var config=require(_0xa303('0x7'));var controller=require(_0xa303('0x8'));router[_0xa303('0x9')]('/',auth[_0xa303('0xa')](),controller[_0xa303('0xb')]);router[_0xa303('0x9')](_0xa303('0xc'),controller['webhookGet']);router['get']('/:id',auth[_0xa303('0xa')](),controller[_0xa303('0xd')]);router['get'](_0xa303('0xe'),auth['isAuthenticated'](),controller[_0xa303('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x29cd60,_0x17dfcd,_0x382cfd){_0x382cfd(null,path[_0xa303('0x10')](config['root'],_0xa303('0x11')));},'filename':function(_0x4c0169,_0xf5df1e,_0x43a054){_0xf5df1e[_0xa303('0x12')]=_0xf5df1e['originalname'][_0xa303('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x43a054(null,util[_0xa303('0x14')](_0xa303('0x15'),path[_0xa303('0x16')](_0xf5df1e[_0xa303('0x12')],path[_0xa303('0x17')](_0xf5df1e[_0xa303('0x12')])),Date[_0xa303('0x18')](),path['extname'](_0xf5df1e[_0xa303('0x12')])));}})});router[_0xa303('0x19')]('/',upload[_0xa303('0x1a')](_0xa303('0x1b')),controller[_0xa303('0x1c')]);router[_0xa303('0x19')]('/webhook',controller[_0xa303('0x1d')]);router['put'](_0xa303('0x1e'),auth['isAuthenticated'](),controller[_0xa303('0x1f')]);router['delete'](_0xa303('0x1e'),auth[_0xa303('0xa')](),controller[_0xa303('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0x68fc=['webhookPost','put','update','delete','exports','multer','util','path','Router','../../components/auth/service','./plugin.controller','get','isAuthenticated','index','webhookGet','/:id','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','now','post','upload','/webhook'];(function(_0x42c54b,_0x1a85e8){var _0x54a22d=function(_0x1ec28a){while(--_0x1ec28a){_0x42c54b['push'](_0x42c54b['shift']());}};_0x54a22d(++_0x1a85e8);}(_0x68fc,0xa5));var _0xc68f=function(_0x93452f,_0x58bd0c){_0x93452f=_0x93452f-0x0;var _0x3489d9=_0x68fc[_0x93452f];return _0x3489d9;};'use strict';var multer=require(_0xc68f('0x0'));var util=require(_0xc68f('0x1'));var path=require(_0xc68f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc68f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc68f('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc68f('0x5'));router[_0xc68f('0x6')]('/',auth[_0xc68f('0x7')](),controller[_0xc68f('0x8')]);router['get']('/webhook',controller[_0xc68f('0x9')]);router[_0xc68f('0x6')](_0xc68f('0xa'),auth[_0xc68f('0x7')](),controller[_0xc68f('0xb')]);router[_0xc68f('0x6')](_0xc68f('0xc'),auth[_0xc68f('0x7')](),controller[_0xc68f('0xd')]);var upload=multer({'storage':multer[_0xc68f('0xe')]({'destination':function(_0x5777f9,_0x3b1a43,_0x29f1fe){_0x29f1fe(null,path[_0xc68f('0xf')](config[_0xc68f('0x10')],_0xc68f('0x11')));},'filename':function(_0x2a0a52,_0x3ccebe,_0x41aeb8){_0x3ccebe[_0xc68f('0x12')]=_0x3ccebe[_0xc68f('0x12')][_0xc68f('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x41aeb8(null,util['format'](_0xc68f('0x14'),path[_0xc68f('0x15')](_0x3ccebe[_0xc68f('0x12')],path[_0xc68f('0x16')](_0x3ccebe[_0xc68f('0x12')])),Date[_0xc68f('0x17')](),path[_0xc68f('0x16')](_0x3ccebe[_0xc68f('0x12')])));}})});router[_0xc68f('0x18')]('/',upload['single']('file'),controller[_0xc68f('0x19')]);router[_0xc68f('0x18')](_0xc68f('0x1a'),controller[_0xc68f('0x1b')]);router[_0xc68f('0x1c')](_0xc68f('0xa'),auth['isAuthenticated'](),controller[_0xc68f('0x1d')]);router[_0xc68f('0x1e')](_0xc68f('0xa'),auth[_0xc68f('0x7')](),controller[_0xc68f('0x1e')]);module[_0xc68f('0x1f')]=router;
\ No newline at end of file
index 01d8331..2c8dcb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f4d=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0x3f4d,0x17e));var _0xd3f4=function(_0x575818,_0xa55f3f){_0x575818=_0x575818-0x0;var _0x13bd05=_0x3f4d[_0x575818];return _0x13bd05;};'use strict';var Sequelize=require(_0xd3f4('0x0'));module[_0xd3f4('0x1')]={'name':{'type':Sequelize[_0xd3f4('0x2')]},'type':{'type':Sequelize[_0xd3f4('0x3')](_0xd3f4('0x4'),'script')},'description':{'type':Sequelize[_0xd3f4('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize['STRING'],'comment':_0xd3f4('0x6')},'active':{'type':Sequelize[_0xd3f4('0x7')],'defaultValue':0x0,'comment':_0xd3f4('0x8')},'sidebar':{'type':Sequelize[_0xd3f4('0x3')]('adminOnly',_0xd3f4('0x9'),'always',_0xd3f4('0xa')),'defaultValue':_0xd3f4('0xb'),'comment':_0xd3f4('0xc')},'icon':{'type':Sequelize[_0xd3f4('0x2')]},'adminUrl':{'type':Sequelize[_0xd3f4('0x2')]},'agentUrl':{'type':Sequelize[_0xd3f4('0x2')]},'scriptName':{'type':Sequelize[_0xd3f4('0x2')]},'scriptPath':{'type':Sequelize[_0xd3f4('0x2')]}};
\ No newline at end of file
+var _0x3edb=['ENUM','adminOnly','agentOnly','always','never','sequelize','exports','STRING','html','script','TEXT','BOOLEAN'];(function(_0x4fb529,_0x5341a0){var _0x4ff5c9=function(_0x78b6a6){while(--_0x78b6a6){_0x4fb529['push'](_0x4fb529['shift']());}};_0x4ff5c9(++_0x5341a0);}(_0x3edb,0x101));var _0xb3ed=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x3edb[_0x30ae5e];return _0x1f2e93;};'use strict';var Sequelize=require(_0xb3ed('0x0'));module[_0xb3ed('0x1')]={'name':{'type':Sequelize[_0xb3ed('0x2')]},'type':{'type':Sequelize['ENUM'](_0xb3ed('0x3'),_0xb3ed('0x4'))},'description':{'type':Sequelize[_0xb3ed('0x5')]},'version':{'type':Sequelize[_0xb3ed('0x5')]},'path':{'type':Sequelize[_0xb3ed('0x2')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0xb3ed('0x7')](_0xb3ed('0x8'),_0xb3ed('0x9'),_0xb3ed('0xa'),_0xb3ed('0xb')),'defaultValue':'always','comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xb3ed('0x2')]},'adminUrl':{'type':Sequelize[_0xb3ed('0x2')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0xb3ed('0x2')]}};
\ No newline at end of file
index 6112aae..e880ad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91f=['includeAll','include','findAll','rows','catch','show','params','find','download','path','root','server/files/plugins','%s.zip','basename','zip','warning','code','ENOENT','error','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','dirname','join','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','plugins','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','Zip\x20archive\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./plugin.socket','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','Plugins','UserProfileResource','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','Plugin'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xe91f,0x65));var _0xfe91=function(_0x56600e,_0x2b398d){_0x56600e=_0x56600e-0x0;var _0x48670a=_0xe91f[_0x56600e];return _0x48670a;};'use strict';var emlformat=require(_0xfe91('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe91('0x1'));var jsonpatch=require(_0xfe91('0x2'));var rp=require(_0xfe91('0x3'));var moment=require(_0xfe91('0x4'));var BPromise=require(_0xfe91('0x5'));var Mustache=require(_0xfe91('0x6'));var util=require(_0xfe91('0x7'));var path=require('path');var sox=require(_0xfe91('0x8'));var csv=require(_0xfe91('0x9'));var ejs=require(_0xfe91('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe91('0xb'));var crypto=require(_0xfe91('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xfe91('0xd'));var toCsv=require(_0xfe91('0x9'));var querystring=require(_0xfe91('0xe'));var Papa=require(_0xfe91('0xf'));var extract=require(_0xfe91('0x10'));var rimraf=require(_0xfe91('0x11'));var archiver=require(_0xfe91('0x12'));var Redis=require(_0xfe91('0x13'));var authService=require(_0xfe91('0x14'));var qs=require(_0xfe91('0x15'));var as=require(_0xfe91('0x16'));var hardwareService=require(_0xfe91('0x17'));var logger=require(_0xfe91('0x18'))('api');var utils=require(_0xfe91('0x19'));var config=require(_0xfe91('0x1a'));var licenseUtil=require(_0xfe91('0x1b'));var db=require('../../mysqldb')['db'];config[_0xfe91('0x1c')]=_[_0xfe91('0x1d')](config[_0xfe91('0x1c')],{'host':_0xfe91('0x1e'),'port':0x18eb});var socket=require(_0xfe91('0x1f'))(new Redis(config[_0xfe91('0x1c')]));require(_0xfe91('0x20'))['register'](socket);function respondWithStatusCode(_0x3a1d67,_0x577a91){_0x577a91=_0x577a91||0xcc;return function(_0x3e9791){if(_0x3e9791){return _0x3a1d67['sendStatus'](_0x577a91);}return _0x3a1d67['status'](_0x577a91)[_0xfe91('0x21')]();};}function respondWithResult(_0x34c76c,_0xf555d0){_0xf555d0=_0xf555d0||0xc8;return function(_0x4daf74){if(_0x4daf74){return _0x34c76c[_0xfe91('0x22')](_0xf555d0)[_0xfe91('0x23')](_0x4daf74);}};}function respondWithFilteredResult(_0x4a78db,_0x42d227){return function(_0x513a4a){if(_0x513a4a){var _0x460bc9=typeof _0x42d227[_0xfe91('0x24')]===_0xfe91('0x25')&&typeof _0x42d227[_0xfe91('0x26')]==='undefined';var _0x218ab4=_0x513a4a[_0xfe91('0x27')];var _0x178d52=_0x460bc9?0x0:_0x42d227[_0xfe91('0x24')];var _0x43eb86=_0x460bc9?_0x513a4a['count']:_0x42d227['offset']+_0x42d227[_0xfe91('0x26')];var _0x29b307;if(_0x43eb86>=_0x218ab4){_0x43eb86=_0x218ab4;_0x29b307=0xc8;}else{_0x29b307=0xce;}_0x4a78db[_0xfe91('0x22')](_0x29b307);return _0x4a78db[_0xfe91('0x28')](_0xfe91('0x29'),_0x178d52+'-'+_0x43eb86+'/'+_0x218ab4)[_0xfe91('0x23')](_0x513a4a);}return null;};}function patchUpdates(_0x4c4dc8){return function(_0xde70cb){try{jsonpatch[_0xfe91('0x2a')](_0xde70cb,_0x4c4dc8,!![]);}catch(_0x523396){return BPromise['reject'](_0x523396);}return _0xde70cb[_0xfe91('0x2b')]();};}function saveUpdates(_0x385c84,_0x458c7c){return function(_0x46efd9){if(_0x46efd9){return _0x46efd9['update'](_0x385c84)[_0xfe91('0x2c')](function(_0x5cbfb2){return _0x5cbfb2;});}return null;};}function removeEntity(_0x3c6132,_0x4ebf7d){return function(_0x30b289){if(_0x30b289){return _0x30b289[_0xfe91('0x2d')]()[_0xfe91('0x2c')](function(){var _0x2fa445=_0x30b289[_0xfe91('0x2e')]({'plain':!![]});var _0x22734f=_0xfe91('0x2f');return db[_0xfe91('0x30')][_0xfe91('0x2d')]({'where':{'type':_0x22734f,'resourceId':_0x2fa445['id']}})[_0xfe91('0x2c')](function(){return _0x30b289;});})[_0xfe91('0x2c')](function(){_0x3c6132['status'](0xcc)[_0xfe91('0x21')]();});}};}function handleEntityNotFound(_0x5bcf33,_0x4e7959){return function(_0xc4978){if(!_0xc4978){_0x5bcf33[_0xfe91('0x31')](0x194);}return _0xc4978;};}function handleError(_0x313c44,_0x189a07){_0x189a07=_0x189a07||0x1f4;return function(_0x4a2873){logger['error'](_0x4a2873[_0xfe91('0x32')]);if(_0x4a2873[_0xfe91('0x33')]){delete _0x4a2873[_0xfe91('0x33')];}_0x313c44[_0xfe91('0x22')](_0x189a07)[_0xfe91('0x34')](_0x4a2873);};}exports[_0xfe91('0x35')]=function(_0xc14805,_0x2ed8e2){var _0x1e1249={},_0x11c210={},_0x174c29={'count':0x0,'rows':[]};var _0x1d334a=_[_0xfe91('0x36')](db['Plugin'][_0xfe91('0x37')],function(_0x4a5994){return{'name':_0x4a5994[_0xfe91('0x38')],'type':_0x4a5994[_0xfe91('0x39')][_0xfe91('0x3a')]};});_0x11c210[_0xfe91('0x3b')]=_['map'](_0x1d334a,_0xfe91('0x33'));_0x11c210[_0xfe91('0x3c')]=_[_0xfe91('0x3d')](_0xc14805['query']);_0x11c210[_0xfe91('0x3e')]=_[_0xfe91('0x3f')](_0x11c210['model'],_0x11c210[_0xfe91('0x3c')]);_0x1e1249['attributes']=_[_0xfe91('0x3f')](_0x11c210[_0xfe91('0x3b')],qs[_0xfe91('0x40')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x40')]));_0x1e1249[_0xfe91('0x41')]=_0x1e1249[_0xfe91('0x41')][_0xfe91('0x42')]?_0x1e1249[_0xfe91('0x41')]:_0x11c210[_0xfe91('0x3b')];if(!_0xc14805[_0xfe91('0x3c')][_0xfe91('0x43')]('nolimit')){_0x1e1249['limit']=qs['limit'](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x26')]);_0x1e1249[_0xfe91('0x24')]=qs[_0xfe91('0x24')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x24')]);}_0x1e1249[_0xfe91('0x44')]=qs[_0xfe91('0x45')](_0xc14805[_0xfe91('0x3c')][_0xfe91('0x45')]);_0x1e1249[_0xfe91('0x46')]=qs[_0xfe91('0x3e')](_['pick'](_0xc14805[_0xfe91('0x3c')],_0x11c210[_0xfe91('0x3e')]),_0x1d334a);if(_0xc14805['query'][_0xfe91('0x47')]){_0x1e1249[_0xfe91('0x46')]=_[_0xfe91('0x48')](_0x1e1249[_0xfe91('0x46')],{'$or':_[_0xfe91('0x36')](_0x1d334a,function(_0x272e6){if(_0x272e6[_0xfe91('0x39')]!==_0xfe91('0x49')){var _0x1262ae={};_0x1262ae[_0x272e6[_0xfe91('0x33')]]={'$like':'%'+_0xc14805[_0xfe91('0x3c')][_0xfe91('0x47')]+'%'};return _0x1262ae;}})});}_0x1e1249=_[_0xfe91('0x48')]({},_0x1e1249,_0xc14805[_0xfe91('0x4a')]);var _0x3315a6={'where':_0x1e1249[_0xfe91('0x46')]};return db[_0xfe91('0x4b')][_0xfe91('0x27')](_0x3315a6)[_0xfe91('0x2c')](function(_0x1b0e67){_0x174c29[_0xfe91('0x27')]=_0x1b0e67;if(_0xc14805[_0xfe91('0x3c')][_0xfe91('0x4c')]){_0x1e1249[_0xfe91('0x4d')]=[{'all':!![]}];}return db[_0xfe91('0x4b')][_0xfe91('0x4e')](_0x1e1249);})[_0xfe91('0x2c')](function(_0x46c20a){_0x174c29[_0xfe91('0x4f')]=_0x46c20a;return _0x174c29;})[_0xfe91('0x2c')](respondWithFilteredResult(_0x2ed8e2,_0x1e1249))[_0xfe91('0x50')](handleError(_0x2ed8e2,null));};exports[_0xfe91('0x51')]=function(_0x18e0e1,_0x2b9ad9){var _0x16b1c9={'raw':!![],'where':{'id':_0x18e0e1[_0xfe91('0x52')]['id']}},_0x45781e={};_0x45781e[_0xfe91('0x3b')]=_[_0xfe91('0x3d')](db[_0xfe91('0x4b')][_0xfe91('0x37')]);_0x45781e['query']=_[_0xfe91('0x3d')](_0x18e0e1[_0xfe91('0x3c')]);_0x45781e[_0xfe91('0x3e')]=_[_0xfe91('0x3f')](_0x45781e['model'],_0x45781e[_0xfe91('0x3c')]);_0x16b1c9[_0xfe91('0x41')]=_[_0xfe91('0x3f')](_0x45781e[_0xfe91('0x3b')],qs['fields'](_0x18e0e1[_0xfe91('0x3c')][_0xfe91('0x40')]));_0x16b1c9[_0xfe91('0x41')]=_0x16b1c9[_0xfe91('0x41')][_0xfe91('0x42')]?_0x16b1c9[_0xfe91('0x41')]:_0x45781e[_0xfe91('0x3b')];if(_0x18e0e1[_0xfe91('0x3c')][_0xfe91('0x4c')]){_0x16b1c9[_0xfe91('0x4d')]=[{'all':!![]}];}_0x16b1c9=_[_0xfe91('0x48')]({},_0x16b1c9,_0x18e0e1[_0xfe91('0x4a')]);return db[_0xfe91('0x4b')][_0xfe91('0x53')](_0x16b1c9)[_0xfe91('0x2c')](handleEntityNotFound(_0x2b9ad9,null))[_0xfe91('0x2c')](respondWithResult(_0x2b9ad9,null))[_0xfe91('0x50')](handleError(_0x2b9ad9,null));};exports[_0xfe91('0x54')]=function(_0x2e4cfc,_0x2a81fa,_0x2175f9){return db[_0xfe91('0x4b')]['find']({'where':{'id':_0x2e4cfc['params']['id']},'attributes':[_0xfe91('0x33'),_0xfe91('0x55')],'raw':!![]})[_0xfe91('0x2c')](handleEntityNotFound(_0x2a81fa,null))[_0xfe91('0x2c')](function(_0x52cbe9){if(_0x52cbe9){var _0x270df2=path['join'](config[_0xfe91('0x56')],_0xfe91('0x57'),util['format'](_0xfe91('0x58'),path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')])));var _0x46d8ef=fs['createWriteStream'](_0x270df2);var _0x3ba730=archiver(_0xfe91('0x5a'),{'zlib':{'level':0x9}});_0x3ba730['on'](_0xfe91('0x5b'),function(_0x3783f9){if(_0x3783f9[_0xfe91('0x5c')]===_0xfe91('0x5d')){logger[_0xfe91('0x5e')](_0x3783f9);}else{throw new db[(_0xfe91('0x5f'))]['Error'](_0xfe91('0x60'));}});_0x3ba730['on'](_0xfe91('0x5e'),function(_0x2d3936){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x60'));});_0x3ba730[_0xfe91('0x62')](_0x46d8ef);_0x3ba730[_0xfe91('0x63')]('**/*',{'cwd':path['join'](config[_0xfe91('0x56')],_0xfe91('0x57'),path[_0xfe91('0x64')](_0x52cbe9['path'])),'ignore':[path[_0xfe91('0x65')](path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')]),'node_modules/**/*'),path['join'](path[_0xfe91('0x59')](_0x52cbe9[_0xfe91('0x55')]),_0xfe91('0x66'))],'nodir':!![]})[_0xfe91('0x67')]();_0x46d8ef['on'](_0xfe91('0x68'),function(){if(!fs[_0xfe91('0x69')](_0x270df2)){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x6a'));}return _0x2a81fa['download'](_0x270df2,util[_0xfe91('0x6b')](_0xfe91('0x58'),path['basename'](_0x52cbe9[_0xfe91('0x55')])),function(_0x47b787){if(_0x47b787){throw new db[(_0xfe91('0x5f'))][(_0xfe91('0x61'))](_0xfe91('0x6c'));}fs[_0xfe91('0x6d')](_0x270df2);logger[_0xfe91('0x6e')](_0xfe91('0x6f'));logger[_0xfe91('0x6e')](_0xfe91('0x70'));});});}return null;})[_0xfe91('0x50')](handleError(_0x2a81fa,null));};exports[_0xfe91('0x71')]=function(_0x16a1b8,_0x242fbf,_0x3ea59c){var _0x2cda27=path[_0xfe91('0x59')](_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')],path[_0xfe91('0x74')](_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')]));var _0x5d449d=path[_0xfe91('0x65')](config[_0xfe91('0x56')],_0xfe91('0x57'),_0x16a1b8[_0xfe91('0x72')][_0xfe91('0x73')]);var _0x43403f=path[_0xfe91('0x65')](config['root'],'server/files/plugins',_0x2cda27);logger[_0xfe91('0x6e')](_0xfe91('0x75'),_0x5d449d);logger[_0xfe91('0x6e')](_0xfe91('0x76'),_0x43403f);try{fs['chmodSync'](_0x5d449d,parseInt(_0xfe91('0x77'),0x8));extract(_0x5d449d,{'dir':_0x43403f},function(_0x4780ce){if(_0x4780ce){logger['error'](_0x4780ce);handleError(_0x4780ce,!![]);};var _0x369d3a=fs[_0xfe91('0x78')](_0x43403f);if(_0x369d3a[_0xfe91('0x42')]>0x1){removeReferences(_0x5d449d,_0x43403f);logger[_0xfe91('0x5e')]('Invalid\x20plugin\x20structure');return _0x3ea59c(new Error(_0xfe91('0x79')));}var _0x29cef3=fs[_0xfe91('0x7a')](path[_0xfe91('0x65')](_0x43403f,_0x369d3a[0x0]));if(_0x29cef3[_0xfe91('0x7b')]()){removeReferences(_0x5d449d,_0x43403f);logger[_0xfe91('0x5e')](_0xfe91('0x79'));return _0x3ea59c(new Error(_0xfe91('0x79')));}if(_0x29cef3['isDirectory']()){var _0x5868ec=fs[_0xfe91('0x78')](path[_0xfe91('0x65')](_0x43403f,_0x369d3a[0x0]));if(_0x5868ec[_0xfe91('0x42')]===0x0){removeReferences(_0x5d449d,_0x43403f);logger['error'](_0xfe91('0x79'));return _0x3ea59c(new Error('Invalid\x20plugin\x20structure'));}var _0x2d3b20=_0x5868ec[_0xfe91('0x7c')](function(_0x4157fe){return _0x4157fe===_0xfe91('0x7d');});if(!_0x2d3b20){return _0x3ea59c(new Error(_0xfe91('0x7e')));}var _0x2cdd91=fs[_0xfe91('0x7f')](path['join'](_0x43403f,_0x369d3a[0x0],'manifest.json'));var _0x1a64e5=JSON[_0xfe91('0x80')](_0x2cdd91);if('undefined'==typeof _0x1a64e5[_0xfe91('0x33')]){return _0x3ea59c(new Error(_0xfe91('0x81')));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x39')]){return _0x3ea59c(new Error(_0xfe91('0x82')));}if('undefined'==typeof _0x1a64e5[_0xfe91('0x83')]){return _0x3ea59c(new Error(_0xfe91('0x84')));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1a64e5[_0xfe91('0x39')]===_0xfe91('0x86')){if(_0xfe91('0x25')==typeof _0x1a64e5['parameters'][_0xfe91('0x87')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x88')]&&_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')]){return _0x3ea59c(new Error(_0xfe91('0x8a')));}}else if(_0x1a64e5[_0xfe91('0x39')]===_0xfe91('0x8b')){if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x8c')]){return _0x3ea59c(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0xfe91('0x25')==typeof _0x1a64e5[_0xfe91('0x85')]['scriptPath']){return _0x3ea59c(new Error(_0xfe91('0x8d')));}}else{return _0x3ea59c(new Error(_0xfe91('0x8e')));}var _0x1b9220=_0x1a64e5[_0xfe91('0x33')];var _0x4d9284=_0x1a64e5[_0xfe91('0x8f')];var _0x5c1aa4=_0x1a64e5[_0xfe91('0x39')];var _0x16740d=_0x1a64e5[_0xfe91('0x90')]?_0x1a64e5[_0xfe91('0x90')]:_0xfe91('0x91');var _0x189573=_0x1a64e5[_0xfe91('0x92')]?_0x1a64e5[_0xfe91('0x92')]:_0xfe91('0x93');var _0x1be2b0='';var _0x17a5ff='';var _0x1b15c5='';var _0x31453c='';var _0x3a0a52=_0x1a64e5[_0xfe91('0x83')];if(_0x5c1aa4===_0xfe91('0x86')){if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')]['views'][_0xfe91('0x88')]){var _0x5ebe4f=_0x1a64e5['parameters'][_0xfe91('0x87')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x5ebe4f)){_0x1be2b0=path['join']('plugins',_0x2cda27,_0x369d3a[0x0],_0x5ebe4f);}else{_0x1be2b0=_0x5ebe4f;}}else{logger[_0xfe91('0x6e')](_0xfe91('0x95'));}if('undefined'!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')]){var _0x7e3a47=_0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x7e3a47)){_0x17a5ff=path[_0xfe91('0x65')]('plugins',_0x2cda27,_0x369d3a[0x0],_0x7e3a47);}else{_0x17a5ff=_0x7e3a47;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x5c1aa4==='script'){_0x1b15c5=_0x1a64e5[_0xfe91('0x85')]['scriptName'];_0x31453c=_0x1a64e5['parameters'][_0xfe91('0x96')];if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')]){if(_0xfe91('0x25')!=typeof _0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x88')]){var _0x5ebe4f=_0x1a64e5['parameters'][_0xfe91('0x87')][_0xfe91('0x88')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5ebe4f)){_0x1be2b0=path[_0xfe91('0x65')](_0xfe91('0x97'),_0x2cda27,_0x369d3a[0x0],_0x5ebe4f);}else{_0x1be2b0=_0x5ebe4f;}}if(_0xfe91('0x25')!=typeof _0x1a64e5['parameters']['views']['agent']){var _0x7e3a47=_0x1a64e5[_0xfe91('0x85')][_0xfe91('0x87')][_0xfe91('0x89')];if(!/^(f|ht)tps?:\/\//i[_0xfe91('0x94')](_0x7e3a47)){_0x17a5ff=path[_0xfe91('0x65')](_0xfe91('0x97'),_0x2cda27,_0x369d3a[0x0],_0x7e3a47);}else{_0x17a5ff=_0x7e3a47;}}}}var _0x219aa2={'name':_0x1b9220,'description':_0x4d9284,'path':path[_0xfe91('0x65')](_0x2cda27,_0x369d3a[0x0]),'type':_0x5c1aa4,'sidebar':_0x16740d,'icon':_0x189573,'adminUrl':_0x1be2b0,'agentUrl':_0x17a5ff,'scriptName':_0x1b15c5,'scriptPath':_0x31453c,'version':_0x3a0a52};removeReferences(_0x5d449d,null);return db[_0xfe91('0x4b')][_0xfe91('0x98')](_0x219aa2)[_0xfe91('0x2c')](function(_0x37b770){var _0x234d6f={'role':_0x16a1b8[_0xfe91('0x99')]['role'],'userProfileId':_0x16a1b8[_0xfe91('0x99')][_0xfe91('0x9a')]};if(!_0x234d6f)throw new Error(_0xfe91('0x9b'));if(_0x234d6f[_0xfe91('0x9c')]===_0xfe91('0x9d')){var _0x5e4695=_0x37b770['get']({'plain':!![]});return db['UserProfileSection'][_0xfe91('0x53')]({'where':{'name':_0xfe91('0x2f'),'userProfileId':_0x234d6f['userProfileId']},'raw':!![]})[_0xfe91('0x2c')](function(_0x17b194){if(_0x17b194&&_0x17b194[_0xfe91('0x9e')]===0x0){return db[_0xfe91('0x30')][_0xfe91('0x98')]({'name':_0x5e4695['name'],'resourceId':_0x5e4695['id'],'type':_0x17b194['name'],'sectionId':_0x17b194['id']},{})[_0xfe91('0x2c')](function(){return _0x37b770;});}else{return _0x37b770;}})[_0xfe91('0x50')](function(_0x2e79dd){logger[_0xfe91('0x5e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e79dd);throw _0x2e79dd;});}return _0x37b770;})[_0xfe91('0x2c')](respondWithResult(_0x242fbf,null))[_0xfe91('0x50')](handleError(_0x242fbf,null));}});}catch(_0x564971){_0x242fbf[_0xfe91('0x22')](0x1f4)[_0xfe91('0x34')](_0x564971);}};function removeReferences(_0x41a408,_0x45e308){try{if(_0x41a408){fs[_0xfe91('0x6d')](_0x41a408);logger[_0xfe91('0x6e')](_0xfe91('0x9f'));}if(_0x45e308){rimraf(_0x45e308,function(){});logger[_0xfe91('0x6e')]('Extracted\x20folder\x20removed');}}catch(_0x5f5a21){logger[_0xfe91('0x5e')](_0x5f5a21);}}exports[_0xfe91('0xa0')]=function(_0x1e117d,_0x2c7cd7,_0x546728){return db['Plugin'][_0xfe91('0x53')]({'where':{'id':_0x1e117d['params']['id']}})[_0xfe91('0x2c')](handleEntityNotFound(_0x2c7cd7,null))[_0xfe91('0x2c')](saveUpdates(_0x1e117d['body'],null))[_0xfe91('0x2c')](respondWithResult(_0x2c7cd7,null))['catch'](handleError(_0x2c7cd7,null));};exports[_0xfe91('0xa1')]=function(_0x4bc111,_0x56af73,_0x3ff0e3){return db[_0xfe91('0x4b')][_0xfe91('0x53')]({'where':{'id':_0x4bc111[_0xfe91('0x52')]['id']}})['then'](function(_0x1759f3){if(_0x1759f3){return _0x1759f3[_0xfe91('0x2d')]();}})[_0xfe91('0x2c')](function(_0x1b6f7c){rimraf(path[_0xfe91('0x65')](config['root'],_0xfe91('0x57'),path[_0xfe91('0x64')](_0x1b6f7c[_0xfe91('0x55')])),function(){});return _0x1b6f7c;})['then'](handleEntityNotFound(_0x56af73,null))[_0xfe91('0x2c')](respondWithStatusCode(_0x56af73,null))[_0xfe91('0x50')](handleError(_0x56af73,null));};exports[_0xfe91('0xa2')]=function(_0x5548ba,_0x266f01,_0x8e0317){return BPromise[_0xfe91('0xa3')]()[_0xfe91('0x2c')](function(){if(!_0x5548ba['query'][_0xfe91('0x55')]){throw new Error(_0xfe91('0xa4'));}if(!_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa5')]){throw new Error(_0xfe91('0xa6'));}var _0x1e7715=_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa7')]?_0x5548ba['query']['hostname']+':'+_0x5548ba[_0xfe91('0x3c')]['port']:_0xfe91('0xa8')+_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa5')];var _0x242959=_0x5548ba['query'][_0xfe91('0x23')]?_0x5548ba[_0xfe91('0x3c')]['json']:!![];var _0x1c0ef1=_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa9')]?_0x5548ba[_0xfe91('0x3c')][_0xfe91('0xa9')]:null;var _0x1d686e={'method':_0x5548ba[_0xfe91('0xaa')],'uri':util['format'](_0xfe91('0xab'),_0x1e7715,_0x5548ba[_0xfe91('0x3c')]['path']),'json':_0x242959,'resolveWithFullResponse':!![],'encoding':_0x1c0ef1,'qs':_0x5548ba[_0xfe91('0x3c')]};if(_0x5548ba[_0xfe91('0xac')]){_0x1d686e[_0xfe91('0xac')]=_0x5548ba['headers'];if(_0x1d686e[_0xfe91('0xac')][_0xfe91('0xad')]){delete _0x1d686e[_0xfe91('0xac')]['content-length'];}}if(_0x1d686e[_0xfe91('0xac')]['content-type']){delete _0x1d686e[_0xfe91('0xac')][_0xfe91('0xae')];}return rp(_0x1d686e);})['then'](function(_0x10f15f){if(_0x10f15f){_0x266f01[_0xfe91('0x28')](_0x10f15f[_0xfe91('0xac')]);logger[_0xfe91('0x6e')](_0x10f15f[_0xfe91('0x99')]);if(_[_0xfe91('0xaf')](_0x5548ba[_0xfe91('0x3c')][_0xfe91('0x55')],'download')&&_0x10f15f['statusCode']==0x1f4){return _0x266f01[_0xfe91('0x31')](_0x10f15f[_0xfe91('0xb0')]);}else{return _0x266f01[_0xfe91('0x22')](_0x10f15f[_0xfe91('0xb0')])['send'](_0x10f15f[_0xfe91('0x99')]);}}else{return _0x266f01['sendStatus'](0xc8);}})[_0xfe91('0x50')](handleError(_0x266f01,null));};exports['webhookPost']=function(_0x588cad,_0x29ccc7,_0x1c2cac){return BPromise[_0xfe91('0xa3')]()['then'](function(){if(!_0x588cad[_0xfe91('0x3c')][_0xfe91('0x55')]){throw new Error(_0xfe91('0xa4'));}if(!_0x588cad[_0xfe91('0x3c')][_0xfe91('0xa5')]){throw new Error(_0xfe91('0xa6'));}var _0x3d8441=_0x588cad['query'][_0xfe91('0xa7')]?_0x588cad[_0xfe91('0x3c')][_0xfe91('0xa7')]+':'+_0x588cad[_0xfe91('0x3c')]['port']:_0xfe91('0xa8')+_0x588cad['query'][_0xfe91('0xa5')];var _0x753c15=_0x588cad[_0xfe91('0x3c')][_0xfe91('0x23')]?_0x588cad[_0xfe91('0x3c')][_0xfe91('0x23')]:!![];var _0x3b5338=_0x588cad['query'][_0xfe91('0xa9')]?_0x588cad['query']['encoding']:null;var _0x27cce7={'method':_0x588cad['method'],'uri':util[_0xfe91('0x6b')](_0xfe91('0xab'),_0x3d8441,_0x588cad['query'][_0xfe91('0x55')]),'json':_0x753c15,'resolveWithFullResponse':!![],'encoding':_0x3b5338,'body':_0x588cad[_0xfe91('0x99')]};if(_0x588cad[_0xfe91('0xac')]){_0x27cce7['headers']=_0x588cad[_0xfe91('0xac')];if(_0x27cce7[_0xfe91('0xac')][_0xfe91('0xad')]){delete _0x27cce7[_0xfe91('0xac')][_0xfe91('0xad')];}}if(_0x27cce7[_0xfe91('0xac')][_0xfe91('0xae')]){delete _0x27cce7[_0xfe91('0xac')][_0xfe91('0xae')];}return rp(_0x27cce7);})[_0xfe91('0x2c')](function(_0x2c5954){if(_0x2c5954){_0x29ccc7[_0xfe91('0x28')](_0x2c5954[_0xfe91('0xac')]);logger[_0xfe91('0x6e')](_0x2c5954[_0xfe91('0x99')]);return _0x29ccc7['status'](_0x2c5954['statusCode'])['send'](_0x2c5954[_0xfe91('0x99')]);}else{return _0x29ccc7['sendStatus'](0xc8);}})[_0xfe91('0x50')](handleError(_0x29ccc7,null));};
\ No newline at end of file
+var _0xcd68=['pick','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','options','download','find','root','server/files/plugins','format','%s.zip','basename','zip','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','join','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','description','sidebar','always','icon','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','Warning:\x20agent\x20view\x20not\x20specified','body','userProfileId','role','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','socket.io-emitter','redis','./plugin.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','get','Plugins','UserProfileResource','error','name','send','map','Plugin','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x3eb630,_0x552586){var _0x1b840d=function(_0x2594a8){while(--_0x2594a8){_0x3eb630['push'](_0x3eb630['shift']());}};_0x1b840d(++_0x552586);}(_0xcd68,0x1b8));var _0x8cd6=function(_0x199c03,_0x3254aa){_0x199c03=_0x199c03-0x0;var _0x11a7d4=_0xcd68[_0x199c03];return _0x11a7d4;};'use strict';var emlformat=require(_0x8cd6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8cd6('0x1'));var jsonpatch=require(_0x8cd6('0x2'));var rp=require(_0x8cd6('0x3'));var moment=require('moment');var BPromise=require(_0x8cd6('0x4'));var Mustache=require(_0x8cd6('0x5'));var util=require(_0x8cd6('0x6'));var path=require(_0x8cd6('0x7'));var sox=require('sox');var csv=require(_0x8cd6('0x8'));var ejs=require(_0x8cd6('0x9'));var fs=require('fs');var fs_extra=require(_0x8cd6('0xa'));var _=require(_0x8cd6('0xb'));var squel=require(_0x8cd6('0xc'));var crypto=require(_0x8cd6('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8cd6('0x8'));var querystring=require(_0x8cd6('0xe'));var Papa=require(_0x8cd6('0xf'));var extract=require('extract-zip');var rimraf=require(_0x8cd6('0x10'));var archiver=require(_0x8cd6('0x11'));var Redis=require(_0x8cd6('0x12'));var authService=require(_0x8cd6('0x13'));var qs=require(_0x8cd6('0x14'));var as=require(_0x8cd6('0x15'));var hardwareService=require(_0x8cd6('0x16'));var logger=require(_0x8cd6('0x17'))(_0x8cd6('0x18'));var utils=require(_0x8cd6('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x8cd6('0x1a'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8cd6('0x1b'))(new Redis(config[_0x8cd6('0x1c')]));require(_0x8cd6('0x1d'))[_0x8cd6('0x1e')](socket);function respondWithStatusCode(_0x22a013,_0x34fe1e){_0x34fe1e=_0x34fe1e||0xcc;return function(_0x104550){if(_0x104550){return _0x22a013[_0x8cd6('0x1f')](_0x34fe1e);}return _0x22a013[_0x8cd6('0x20')](_0x34fe1e)[_0x8cd6('0x21')]();};}function respondWithResult(_0x5ee300,_0x422e0e){_0x422e0e=_0x422e0e||0xc8;return function(_0x3e872d){if(_0x3e872d){return _0x5ee300[_0x8cd6('0x20')](_0x422e0e)[_0x8cd6('0x22')](_0x3e872d);}};}function respondWithFilteredResult(_0x2ede7d,_0x16046c){return function(_0x3b88ea){if(_0x3b88ea){var _0x503ce0=typeof _0x16046c['offset']===_0x8cd6('0x23')&&typeof _0x16046c[_0x8cd6('0x24')]===_0x8cd6('0x23');var _0x176b81=_0x3b88ea[_0x8cd6('0x25')];var _0x460cdc=_0x503ce0?0x0:_0x16046c[_0x8cd6('0x26')];var _0x3aef8f=_0x503ce0?_0x3b88ea[_0x8cd6('0x25')]:_0x16046c['offset']+_0x16046c[_0x8cd6('0x24')];var _0xb239e1;if(_0x3aef8f>=_0x176b81){_0x3aef8f=_0x176b81;_0xb239e1=0xc8;}else{_0xb239e1=0xce;}_0x2ede7d[_0x8cd6('0x20')](_0xb239e1);return _0x2ede7d[_0x8cd6('0x27')](_0x8cd6('0x28'),_0x460cdc+'-'+_0x3aef8f+'/'+_0x176b81)['json'](_0x3b88ea);}return null;};}function patchUpdates(_0x4ff141){return function(_0x1b0bf3){try{jsonpatch[_0x8cd6('0x29')](_0x1b0bf3,_0x4ff141,!![]);}catch(_0x3900a4){return BPromise[_0x8cd6('0x2a')](_0x3900a4);}return _0x1b0bf3[_0x8cd6('0x2b')]();};}function saveUpdates(_0x99d8df,_0xf06bf6){return function(_0x4a0921){if(_0x4a0921){return _0x4a0921['update'](_0x99d8df)[_0x8cd6('0x2c')](function(_0x51b420){return _0x51b420;});}return null;};}function removeEntity(_0x376915,_0x57092a){return function(_0xd1a0cf){if(_0xd1a0cf){return _0xd1a0cf[_0x8cd6('0x2d')]()[_0x8cd6('0x2c')](function(){var _0x4b85e7=_0xd1a0cf[_0x8cd6('0x2e')]({'plain':!![]});var _0x11ef1f=_0x8cd6('0x2f');return db[_0x8cd6('0x30')]['destroy']({'where':{'type':_0x11ef1f,'resourceId':_0x4b85e7['id']}})['then'](function(){return _0xd1a0cf;});})[_0x8cd6('0x2c')](function(){_0x376915[_0x8cd6('0x20')](0xcc)[_0x8cd6('0x21')]();});}};}function handleEntityNotFound(_0x56d2e7,_0x387ab5){return function(_0x34e0d0){if(!_0x34e0d0){_0x56d2e7[_0x8cd6('0x1f')](0x194);}return _0x34e0d0;};}function handleError(_0x57f8a5,_0x2deed0){_0x2deed0=_0x2deed0||0x1f4;return function(_0x23335f){logger[_0x8cd6('0x31')](_0x23335f['stack']);if(_0x23335f['name']){delete _0x23335f[_0x8cd6('0x32')];}_0x57f8a5[_0x8cd6('0x20')](_0x2deed0)[_0x8cd6('0x33')](_0x23335f);};}exports['index']=function(_0x4c44b3,_0x148b01){var _0x4ff8d4={},_0xfb2fc2={},_0x6f47d6={'count':0x0,'rows':[]};var _0x149f66=_[_0x8cd6('0x34')](db[_0x8cd6('0x35')][_0x8cd6('0x36')],function(_0x10a8bb){return{'name':_0x10a8bb[_0x8cd6('0x37')],'type':_0x10a8bb['type']['key']};});_0xfb2fc2['model']=_[_0x8cd6('0x34')](_0x149f66,_0x8cd6('0x32'));_0xfb2fc2[_0x8cd6('0x38')]=_['keys'](_0x4c44b3[_0x8cd6('0x38')]);_0xfb2fc2[_0x8cd6('0x39')]=_[_0x8cd6('0x3a')](_0xfb2fc2[_0x8cd6('0x3b')],_0xfb2fc2[_0x8cd6('0x38')]);_0x4ff8d4[_0x8cd6('0x3c')]=_['intersection'](_0xfb2fc2['model'],qs[_0x8cd6('0x3d')](_0x4c44b3[_0x8cd6('0x38')][_0x8cd6('0x3d')]));_0x4ff8d4[_0x8cd6('0x3c')]=_0x4ff8d4['attributes']['length']?_0x4ff8d4[_0x8cd6('0x3c')]:_0xfb2fc2[_0x8cd6('0x3b')];if(!_0x4c44b3[_0x8cd6('0x38')][_0x8cd6('0x3e')](_0x8cd6('0x3f'))){_0x4ff8d4['limit']=qs[_0x8cd6('0x24')](_0x4c44b3[_0x8cd6('0x38')]['limit']);_0x4ff8d4[_0x8cd6('0x26')]=qs[_0x8cd6('0x26')](_0x4c44b3['query']['offset']);}_0x4ff8d4[_0x8cd6('0x40')]=qs[_0x8cd6('0x41')](_0x4c44b3[_0x8cd6('0x38')]['sort']);_0x4ff8d4[_0x8cd6('0x42')]=qs[_0x8cd6('0x39')](_[_0x8cd6('0x43')](_0x4c44b3[_0x8cd6('0x38')],_0xfb2fc2[_0x8cd6('0x39')]),_0x149f66);if(_0x4c44b3[_0x8cd6('0x38')]['filter']){_0x4ff8d4['where']=_[_0x8cd6('0x44')](_0x4ff8d4[_0x8cd6('0x42')],{'$or':_[_0x8cd6('0x34')](_0x149f66,function(_0x13ef7a){if(_0x13ef7a[_0x8cd6('0x45')]!==_0x8cd6('0x46')){var _0x2f87c7={};_0x2f87c7[_0x13ef7a['name']]={'$like':'%'+_0x4c44b3['query']['filter']+'%'};return _0x2f87c7;}})});}_0x4ff8d4=_[_0x8cd6('0x44')]({},_0x4ff8d4,_0x4c44b3['options']);var _0x5727b3={'where':_0x4ff8d4[_0x8cd6('0x42')]};return db[_0x8cd6('0x35')][_0x8cd6('0x25')](_0x5727b3)[_0x8cd6('0x2c')](function(_0x54335b){_0x6f47d6[_0x8cd6('0x25')]=_0x54335b;if(_0x4c44b3[_0x8cd6('0x38')][_0x8cd6('0x47')]){_0x4ff8d4[_0x8cd6('0x48')]=[{'all':!![]}];}return db[_0x8cd6('0x35')][_0x8cd6('0x49')](_0x4ff8d4);})['then'](function(_0xbe5619){_0x6f47d6[_0x8cd6('0x4a')]=_0xbe5619;return _0x6f47d6;})['then'](respondWithFilteredResult(_0x148b01,_0x4ff8d4))[_0x8cd6('0x4b')](handleError(_0x148b01,null));};exports[_0x8cd6('0x4c')]=function(_0x2bdf2c,_0x384cc2){var _0x5b1f75={'raw':!![],'where':{'id':_0x2bdf2c[_0x8cd6('0x4d')]['id']}},_0x4abbf5={};_0x4abbf5[_0x8cd6('0x3b')]=_[_0x8cd6('0x4e')](db[_0x8cd6('0x35')]['rawAttributes']);_0x4abbf5[_0x8cd6('0x38')]=_[_0x8cd6('0x4e')](_0x2bdf2c[_0x8cd6('0x38')]);_0x4abbf5[_0x8cd6('0x39')]=_[_0x8cd6('0x3a')](_0x4abbf5[_0x8cd6('0x3b')],_0x4abbf5[_0x8cd6('0x38')]);_0x5b1f75[_0x8cd6('0x3c')]=_['intersection'](_0x4abbf5[_0x8cd6('0x3b')],qs[_0x8cd6('0x3d')](_0x2bdf2c[_0x8cd6('0x38')][_0x8cd6('0x3d')]));_0x5b1f75[_0x8cd6('0x3c')]=_0x5b1f75['attributes'][_0x8cd6('0x4f')]?_0x5b1f75[_0x8cd6('0x3c')]:_0x4abbf5[_0x8cd6('0x3b')];if(_0x2bdf2c[_0x8cd6('0x38')][_0x8cd6('0x47')]){_0x5b1f75[_0x8cd6('0x48')]=[{'all':!![]}];}_0x5b1f75=_[_0x8cd6('0x44')]({},_0x5b1f75,_0x2bdf2c[_0x8cd6('0x50')]);return db[_0x8cd6('0x35')]['find'](_0x5b1f75)[_0x8cd6('0x2c')](handleEntityNotFound(_0x384cc2,null))[_0x8cd6('0x2c')](respondWithResult(_0x384cc2,null))[_0x8cd6('0x4b')](handleError(_0x384cc2,null));};exports[_0x8cd6('0x51')]=function(_0x102e87,_0x2d4a6a,_0x3f661e){return db[_0x8cd6('0x35')][_0x8cd6('0x52')]({'where':{'id':_0x102e87[_0x8cd6('0x4d')]['id']},'attributes':[_0x8cd6('0x32'),_0x8cd6('0x7')],'raw':!![]})[_0x8cd6('0x2c')](handleEntityNotFound(_0x2d4a6a,null))[_0x8cd6('0x2c')](function(_0x13f324){if(_0x13f324){var _0x49d08e=path['join'](config[_0x8cd6('0x53')],_0x8cd6('0x54'),util[_0x8cd6('0x55')](_0x8cd6('0x56'),path[_0x8cd6('0x57')](_0x13f324[_0x8cd6('0x7')])));var _0xb6fba5=fs['createWriteStream'](_0x49d08e);var _0x69868=archiver(_0x8cd6('0x58'),{'zlib':{'level':0x9}});_0x69868['on']('warning',function(_0xc9b7cb){if(_0xc9b7cb[_0x8cd6('0x59')]===_0x8cd6('0x5a')){logger[_0x8cd6('0x31')](_0xc9b7cb);}else{throw new db[(_0x8cd6('0x5b'))]['Error'](_0x8cd6('0x5c'));}});_0x69868['on'](_0x8cd6('0x31'),function(_0x9ce9da){throw new db[(_0x8cd6('0x5b'))][(_0x8cd6('0x5d'))](_0x8cd6('0x5c'));});_0x69868[_0x8cd6('0x5e')](_0xb6fba5);_0x69868[_0x8cd6('0x5f')](_0x8cd6('0x60'),{'cwd':path[_0x8cd6('0x61')](config[_0x8cd6('0x53')],_0x8cd6('0x54'),path['dirname'](_0x13f324['path'])),'ignore':[path[_0x8cd6('0x61')](path[_0x8cd6('0x57')](_0x13f324[_0x8cd6('0x7')]),_0x8cd6('0x62')),path[_0x8cd6('0x61')](path['basename'](_0x13f324[_0x8cd6('0x7')]),_0x8cd6('0x63'))],'nodir':!![]})['finalize']();_0xb6fba5['on'](_0x8cd6('0x64'),function(){if(!fs[_0x8cd6('0x65')](_0x49d08e)){throw new db[(_0x8cd6('0x5b'))][(_0x8cd6('0x5d'))](_0x8cd6('0x66'));}return _0x2d4a6a[_0x8cd6('0x51')](_0x49d08e,util[_0x8cd6('0x55')]('%s.zip',path[_0x8cd6('0x57')](_0x13f324['path'])),function(_0x422bef){if(_0x422bef){throw new db[(_0x8cd6('0x5b'))]['Error'](_0x8cd6('0x67'));}fs[_0x8cd6('0x68')](_0x49d08e);logger['info'](_0x8cd6('0x69'));logger[_0x8cd6('0x6a')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x2d4a6a,null));};exports['upload']=function(_0x5b41ce,_0xbeb368,_0x2abab8){var _0x18c5ad=path[_0x8cd6('0x57')](_0x5b41ce[_0x8cd6('0x6b')][_0x8cd6('0x6c')],path[_0x8cd6('0x6d')](_0x5b41ce[_0x8cd6('0x6b')]['filename']));var _0x147474=path['join'](config[_0x8cd6('0x53')],_0x8cd6('0x54'),_0x5b41ce[_0x8cd6('0x6b')]['filename']);var _0x3c2265=path[_0x8cd6('0x61')](config['root'],_0x8cd6('0x54'),_0x18c5ad);logger['info'](_0x8cd6('0x6e'),_0x147474);logger[_0x8cd6('0x6a')](_0x8cd6('0x6f'),_0x3c2265);try{fs[_0x8cd6('0x70')](_0x147474,parseInt(_0x8cd6('0x71'),0x8));extract(_0x147474,{'dir':_0x3c2265},function(_0x5b25cb){if(_0x5b25cb){logger[_0x8cd6('0x31')](_0x5b25cb);handleError(_0x5b25cb,!![]);};var _0x3261e9=fs[_0x8cd6('0x72')](_0x3c2265);if(_0x3261e9[_0x8cd6('0x4f')]>0x1){removeReferences(_0x147474,_0x3c2265);logger[_0x8cd6('0x31')]('Invalid\x20plugin\x20structure');return _0x2abab8(new Error(_0x8cd6('0x73')));}var _0x2fc549=fs[_0x8cd6('0x74')](path[_0x8cd6('0x61')](_0x3c2265,_0x3261e9[0x0]));if(_0x2fc549[_0x8cd6('0x75')]()){removeReferences(_0x147474,_0x3c2265);logger[_0x8cd6('0x31')](_0x8cd6('0x73'));return _0x2abab8(new Error('Invalid\x20plugin\x20structure'));}if(_0x2fc549[_0x8cd6('0x76')]()){var _0x4c1562=fs[_0x8cd6('0x72')](path[_0x8cd6('0x61')](_0x3c2265,_0x3261e9[0x0]));if(_0x4c1562['length']===0x0){removeReferences(_0x147474,_0x3c2265);logger[_0x8cd6('0x31')]('Invalid\x20plugin\x20structure');return _0x2abab8(new Error(_0x8cd6('0x73')));}var _0x3b46ea=_0x4c1562[_0x8cd6('0x77')](function(_0x47d70f){return _0x47d70f===_0x8cd6('0x78');});if(!_0x3b46ea){return _0x2abab8(new Error('Plugin\x20manifest\x20missing'));}var _0x54def8=fs[_0x8cd6('0x79')](path['join'](_0x3c2265,_0x3261e9[0x0],_0x8cd6('0x78')));var _0x2f448a=JSON[_0x8cd6('0x7a')](_0x54def8);if('undefined'==typeof _0x2f448a[_0x8cd6('0x32')]){return _0x2abab8(new Error(_0x8cd6('0x7b')));}if(_0x8cd6('0x23')==typeof _0x2f448a['type']){return _0x2abab8(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0x8cd6('0x23')==typeof _0x2f448a[_0x8cd6('0x7c')]){return _0x2abab8(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x8cd6('0x23')==typeof _0x2f448a[_0x8cd6('0x7d')]){return _0x2abab8(new Error(_0x8cd6('0x7e')));}if(_0x2f448a[_0x8cd6('0x45')]===_0x8cd6('0x7f')){if(_0x8cd6('0x23')==typeof _0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')]){return _0x2abab8(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x8cd6('0x23')==typeof _0x2f448a[_0x8cd6('0x7d')]['views'][_0x8cd6('0x81')]&&_0x8cd6('0x23')==typeof _0x2f448a[_0x8cd6('0x7d')]['views'][_0x8cd6('0x82')]){return _0x2abab8(new Error(_0x8cd6('0x83')));}}else if(_0x2f448a[_0x8cd6('0x45')]===_0x8cd6('0x84')){if('undefined'==typeof _0x2f448a['parameters'][_0x8cd6('0x85')]){return _0x2abab8(new Error(_0x8cd6('0x86')));}if('undefined'==typeof _0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x87')]){return _0x2abab8(new Error(_0x8cd6('0x88')));}}else{return _0x2abab8(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x1364dd=_0x2f448a['name'];var _0x4ffe75=_0x2f448a[_0x8cd6('0x89')];var _0xfb6b78=_0x2f448a['type'];var _0x304637=_0x2f448a['sidebar']?_0x2f448a[_0x8cd6('0x8a')]:_0x8cd6('0x8b');var _0xc9c799=_0x2f448a[_0x8cd6('0x8c')]?_0x2f448a[_0x8cd6('0x8c')]:'icon-apps';var _0x2a4f82='';var _0x10c5fb='';var _0x322677='';var _0x450189='';var _0x318528=_0x2f448a['version'];if(_0xfb6b78===_0x8cd6('0x7f')){if(_0x8cd6('0x23')!=typeof _0x2f448a['parameters'][_0x8cd6('0x80')][_0x8cd6('0x81')]){var _0x3b3c10=_0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')][_0x8cd6('0x81')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3b3c10)){_0x2a4f82=path[_0x8cd6('0x61')](_0x8cd6('0x8d'),_0x18c5ad,_0x3261e9[0x0],_0x3b3c10);}else{_0x2a4f82=_0x3b3c10;}}else{logger['info'](_0x8cd6('0x8e'));}if('undefined'!=typeof _0x2f448a['parameters'][_0x8cd6('0x80')][_0x8cd6('0x82')]){var _0x3116f8=_0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')][_0x8cd6('0x82')];if(!/^(f|ht)tps?:\/\//i[_0x8cd6('0x8f')](_0x3116f8)){_0x10c5fb=path['join']('plugins',_0x18c5ad,_0x3261e9[0x0],_0x3116f8);}else{_0x10c5fb=_0x3116f8;}}else{logger[_0x8cd6('0x6a')](_0x8cd6('0x90'));}}else if(_0xfb6b78===_0x8cd6('0x84')){_0x322677=_0x2f448a[_0x8cd6('0x7d')]['scriptName'];_0x450189=_0x2f448a['parameters'][_0x8cd6('0x87')];if('undefined'!=typeof _0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')]){if(_0x8cd6('0x23')!=typeof _0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')][_0x8cd6('0x81')]){var _0x3b3c10=_0x2f448a['parameters']['views'][_0x8cd6('0x81')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3b3c10)){_0x2a4f82=path[_0x8cd6('0x61')](_0x8cd6('0x8d'),_0x18c5ad,_0x3261e9[0x0],_0x3b3c10);}else{_0x2a4f82=_0x3b3c10;}}if(_0x8cd6('0x23')!=typeof _0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')][_0x8cd6('0x82')]){var _0x3116f8=_0x2f448a[_0x8cd6('0x7d')][_0x8cd6('0x80')][_0x8cd6('0x82')];if(!/^(f|ht)tps?:\/\//i[_0x8cd6('0x8f')](_0x3116f8)){_0x10c5fb=path[_0x8cd6('0x61')](_0x8cd6('0x8d'),_0x18c5ad,_0x3261e9[0x0],_0x3116f8);}else{_0x10c5fb=_0x3116f8;}}}}var _0x11c4b2={'name':_0x1364dd,'description':_0x4ffe75,'path':path[_0x8cd6('0x61')](_0x18c5ad,_0x3261e9[0x0]),'type':_0xfb6b78,'sidebar':_0x304637,'icon':_0xc9c799,'adminUrl':_0x2a4f82,'agentUrl':_0x10c5fb,'scriptName':_0x322677,'scriptPath':_0x450189,'version':_0x318528};removeReferences(_0x147474,null);return db[_0x8cd6('0x35')]['create'](_0x11c4b2)[_0x8cd6('0x2c')](function(_0x93f40c){var _0x96d886={'role':_0x5b41ce['body']['role'],'userProfileId':_0x5b41ce[_0x8cd6('0x91')][_0x8cd6('0x92')]};if(!_0x96d886)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x96d886[_0x8cd6('0x93')]==='user'){var _0x51212b=_0x93f40c[_0x8cd6('0x2e')]({'plain':!![]});return db['UserProfileSection'][_0x8cd6('0x52')]({'where':{'name':_0x8cd6('0x2f'),'userProfileId':_0x96d886['userProfileId']},'raw':!![]})['then'](function(_0x1cef24){if(_0x1cef24&&_0x1cef24[_0x8cd6('0x94')]===0x0){return db[_0x8cd6('0x30')][_0x8cd6('0x95')]({'name':_0x51212b[_0x8cd6('0x32')],'resourceId':_0x51212b['id'],'type':_0x1cef24['name'],'sectionId':_0x1cef24['id']},{})['then'](function(){return _0x93f40c;});}else{return _0x93f40c;}})['catch'](function(_0x2271ab){logger['error'](_0x8cd6('0x96'),_0x2271ab);throw _0x2271ab;});}return _0x93f40c;})[_0x8cd6('0x2c')](respondWithResult(_0xbeb368,null))[_0x8cd6('0x4b')](handleError(_0xbeb368,null));}});}catch(_0x43ee23){_0xbeb368[_0x8cd6('0x20')](0x1f4)[_0x8cd6('0x33')](_0x43ee23);}};function removeReferences(_0x3ba280,_0x499039){try{if(_0x3ba280){fs[_0x8cd6('0x68')](_0x3ba280);logger['info']('Zip\x20archive\x20removed');}if(_0x499039){rimraf(_0x499039,function(){});logger[_0x8cd6('0x6a')]('Extracted\x20folder\x20removed');}}catch(_0x1bc998){logger[_0x8cd6('0x31')](_0x1bc998);}}exports[_0x8cd6('0x97')]=function(_0x593ae0,_0x42cb63,_0x11cc12){return db[_0x8cd6('0x35')][_0x8cd6('0x52')]({'where':{'id':_0x593ae0[_0x8cd6('0x4d')]['id']}})[_0x8cd6('0x2c')](handleEntityNotFound(_0x42cb63,null))[_0x8cd6('0x2c')](saveUpdates(_0x593ae0[_0x8cd6('0x91')],null))[_0x8cd6('0x2c')](respondWithResult(_0x42cb63,null))['catch'](handleError(_0x42cb63,null));};exports[_0x8cd6('0x98')]=function(_0x3aa441,_0x5ab9c9,_0x4d99d5){return db[_0x8cd6('0x35')]['find']({'where':{'id':_0x3aa441[_0x8cd6('0x4d')]['id']}})[_0x8cd6('0x2c')](function(_0x9d8729){if(_0x9d8729){return _0x9d8729[_0x8cd6('0x2d')]();}})[_0x8cd6('0x2c')](function(_0x98cb72){rimraf(path['join'](config['root'],'server/files/plugins',path[_0x8cd6('0x99')](_0x98cb72[_0x8cd6('0x7')])),function(){});return _0x98cb72;})['then'](handleEntityNotFound(_0x5ab9c9,null))['then'](respondWithStatusCode(_0x5ab9c9,null))[_0x8cd6('0x4b')](handleError(_0x5ab9c9,null));};exports[_0x8cd6('0x9a')]=function(_0x2662a9,_0x5c1726,_0xd184c6){return BPromise[_0x8cd6('0x9b')]()['then'](function(){if(!_0x2662a9[_0x8cd6('0x38')]['path']){throw new Error(_0x8cd6('0x9c'));}if(!_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0x9d')]){throw new Error(_0x8cd6('0x9e'));}var _0x279af1=_0x2662a9['query'][_0x8cd6('0x9f')]?_0x2662a9['query'][_0x8cd6('0x9f')]+':'+_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0x9d')]:'http://localhost:'+_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0x9d')];var _0x34c783=_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0x22')]?_0x2662a9[_0x8cd6('0x38')]['json']:!![];var _0x48f464=_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0xa0')]?_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0xa0')]:null;var _0x56fa85={'method':_0x2662a9[_0x8cd6('0xa1')],'uri':util['format'](_0x8cd6('0xa2'),_0x279af1,_0x2662a9[_0x8cd6('0x38')]['path']),'json':_0x34c783,'resolveWithFullResponse':!![],'encoding':_0x48f464,'qs':_0x2662a9[_0x8cd6('0x38')]};if(_0x2662a9[_0x8cd6('0xa3')]){_0x56fa85['headers']=_0x2662a9[_0x8cd6('0xa3')];if(_0x56fa85['headers'][_0x8cd6('0xa4')]){delete _0x56fa85[_0x8cd6('0xa3')][_0x8cd6('0xa4')];}}if(_0x56fa85[_0x8cd6('0xa3')][_0x8cd6('0xa5')]){delete _0x56fa85[_0x8cd6('0xa3')][_0x8cd6('0xa5')];}return rp(_0x56fa85);})[_0x8cd6('0x2c')](function(_0x57d075){if(_0x57d075){_0x5c1726['set'](_0x57d075[_0x8cd6('0xa3')]);logger['info'](_0x57d075[_0x8cd6('0x91')]);if(_[_0x8cd6('0xa6')](_0x2662a9[_0x8cd6('0x38')][_0x8cd6('0x7')],_0x8cd6('0x51'))&&_0x57d075[_0x8cd6('0xa7')]==0x1f4){return _0x5c1726['sendStatus'](_0x57d075[_0x8cd6('0xa7')]);}else{return _0x5c1726[_0x8cd6('0x20')](_0x57d075[_0x8cd6('0xa7')])[_0x8cd6('0x33')](_0x57d075[_0x8cd6('0x91')]);}}else{return _0x5c1726[_0x8cd6('0x1f')](0xc8);}})[_0x8cd6('0x4b')](handleError(_0x5c1726,null));};exports[_0x8cd6('0xa8')]=function(_0x43e64b,_0x3d1608,_0x300a39){return BPromise[_0x8cd6('0x9b')]()[_0x8cd6('0x2c')](function(){if(!_0x43e64b[_0x8cd6('0x38')][_0x8cd6('0x7')]){throw new Error(_0x8cd6('0x9c'));}if(!_0x43e64b[_0x8cd6('0x38')][_0x8cd6('0x9d')]){throw new Error(_0x8cd6('0x9e'));}var _0x2d3a87=_0x43e64b['query']['hostname']?_0x43e64b['query'][_0x8cd6('0x9f')]+':'+_0x43e64b['query'][_0x8cd6('0x9d')]:'http://localhost:'+_0x43e64b[_0x8cd6('0x38')][_0x8cd6('0x9d')];var _0x20b7ea=_0x43e64b['query'][_0x8cd6('0x22')]?_0x43e64b['query'][_0x8cd6('0x22')]:!![];var _0x46f737=_0x43e64b[_0x8cd6('0x38')][_0x8cd6('0xa0')]?_0x43e64b[_0x8cd6('0x38')][_0x8cd6('0xa0')]:null;var _0x442063={'method':_0x43e64b['method'],'uri':util[_0x8cd6('0x55')](_0x8cd6('0xa2'),_0x2d3a87,_0x43e64b['query']['path']),'json':_0x20b7ea,'resolveWithFullResponse':!![],'encoding':_0x46f737,'body':_0x43e64b[_0x8cd6('0x91')]};if(_0x43e64b[_0x8cd6('0xa3')]){_0x442063['headers']=_0x43e64b['headers'];if(_0x442063['headers'][_0x8cd6('0xa4')]){delete _0x442063[_0x8cd6('0xa3')]['content-length'];}}if(_0x442063[_0x8cd6('0xa3')]['content-type']){delete _0x442063[_0x8cd6('0xa3')][_0x8cd6('0xa5')];}return rp(_0x442063);})['then'](function(_0x4a29b2){if(_0x4a29b2){_0x3d1608['set'](_0x4a29b2[_0x8cd6('0xa3')]);logger[_0x8cd6('0x6a')](_0x4a29b2[_0x8cd6('0x91')]);return _0x3d1608[_0x8cd6('0x20')](_0x4a29b2['statusCode'])[_0x8cd6('0x33')](_0x4a29b2['body']);}else{return _0x3d1608[_0x8cd6('0x1f')](0xc8);}})[_0x8cd6('0x4b')](handleError(_0x3d1608,null));};
\ No newline at end of file
index 803ebc3..1ff558d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac9=['remove','emit','exports','events','../../mysqldb','Plugin','update'];(function(_0x179023,_0x5121f4){var _0x389b31=function(_0x2306cc){while(--_0x2306cc){_0x179023['push'](_0x179023['shift']());}};_0x389b31(++_0x5121f4);}(_0x8ac9,0x199));var _0x98ac=function(_0x414516,_0x340222){_0x414516=_0x414516-0x0;var _0x44d8b9=_0x8ac9[_0x414516];return _0x44d8b9;};'use strict';var EventEmitter=require(_0x98ac('0x0'));var Plugin=require(_0x98ac('0x1'))['db'][_0x98ac('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x98ac('0x3'),'afterDestroy':_0x98ac('0x4')};function emitEvent(_0xd555bb){return function(_0x59f76b,_0x4bac60,_0x18968a){PluginEvents[_0x98ac('0x5')](_0xd555bb+':'+_0x59f76b['id'],_0x59f76b);PluginEvents[_0x98ac('0x5')](_0xd555bb,_0x59f76b);_0x18968a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x98ac('0x6')]=PluginEvents;
\ No newline at end of file
+var _0x36f3=['setMaxListeners','save','update','remove','emit','hasOwnProperty','../../mysqldb','Plugin'];(function(_0x4eb90f,_0x2e866e){var _0x13f92d=function(_0x18c968){while(--_0x18c968){_0x4eb90f['push'](_0x4eb90f['shift']());}};_0x13f92d(++_0x2e866e);}(_0x36f3,0xe6));var _0x336f=function(_0x3a66fa,_0x399904){_0x3a66fa=_0x3a66fa-0x0;var _0x388cf9=_0x36f3[_0x3a66fa];return _0x388cf9;};'use strict';var EventEmitter=require('events');var Plugin=require(_0x336f('0x0'))['db'][_0x336f('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x336f('0x2')](0x0);var events={'afterCreate':_0x336f('0x3'),'afterUpdate':_0x336f('0x4'),'afterDestroy':_0x336f('0x5')};function emitEvent(_0xd7d95a){return function(_0x475ff4,_0xfe7edc,_0x590b2b){PluginEvents[_0x336f('0x6')](_0xd7d95a+':'+_0x475ff4['id'],_0x475ff4);PluginEvents[_0x336f('0x6')](_0xd7d95a,_0x475ff4);_0x590b2b(null);};}for(var e in events){if(events[_0x336f('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index ea62612..8c6a19f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9566=['bluebird','request-promise','rimraf','../../config/environment','exports','plugins','lodash','util','api','moment'];(function(_0x58cbde,_0x4b0f62){var _0x5799f3=function(_0x326eca){while(--_0x326eca){_0x58cbde['push'](_0x58cbde['shift']());}};_0x5799f3(++_0x4b0f62);}(_0x9566,0x92));var _0x6956=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9566[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x6956('0x0'));var util=require(_0x6956('0x1'));var logger=require('../../config/logger')(_0x6956('0x2'));var moment=require(_0x6956('0x3'));var BPromise=require(_0x6956('0x4'));var rp=require(_0x6956('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6956('0x6'));var config=require(_0x6956('0x7'));var attributes=require('./plugin.attributes');module[_0x6956('0x8')]=function(_0x8f895e,_0x202a3b){return _0x8f895e['define']('Plugin',attributes,{'tableName':_0x6956('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x91e3=['request-promise','rimraf','../../config/environment','./plugin.attributes','define','Plugin','plugins','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5e086d,_0x1e0fbc){var _0x2e39b1=function(_0x23eacd){while(--_0x23eacd){_0x5e086d['push'](_0x5e086d['shift']());}};_0x2e39b1(++_0x1e0fbc);}(_0x91e3,0x132));var _0x391e=function(_0x45c48f,_0x4aa891){_0x45c48f=_0x45c48f-0x0;var _0xaf5037=_0x91e3[_0x45c48f];return _0xaf5037;};'use strict';var _=require(_0x391e('0x0'));var util=require(_0x391e('0x1'));var logger=require(_0x391e('0x2'))(_0x391e('0x3'));var moment=require(_0x391e('0x4'));var BPromise=require(_0x391e('0x5'));var rp=require(_0x391e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x391e('0x7'));var config=require(_0x391e('0x8'));var attributes=require(_0x391e('0x9'));module['exports']=function(_0x3b7eb0,_0x26a494){return _0x3b7eb0[_0x391e('0xa')](_0x391e('0xb'),attributes,{'tableName':_0x391e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 465efa4..661c4ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b72=['CreatePlugin','Plugin','create','body','options','raw','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0xb25cef,_0x3aa37b){var _0x4eda5b=function(_0x3bcf4d){while(--_0x3bcf4d){_0xb25cef['push'](_0xb25cef['shift']());}};_0x4eda5b(++_0x3aa37b);}(_0x3b72,0x93));var _0x23b7=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3b72[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x23b7('0x0'));var util=require(_0x23b7('0x1'));var moment=require(_0x23b7('0x2'));var BPromise=require(_0x23b7('0x3'));var rs=require(_0x23b7('0x4'));var fs=require('fs');var Redis=require(_0x23b7('0x5'));var db=require(_0x23b7('0x6'))['db'];var utils=require(_0x23b7('0x7'));var logger=require(_0x23b7('0x8'))(_0x23b7('0x9'));var config=require(_0x23b7('0xa'));var jayson=require(_0x23b7('0xb'));var client=jayson[_0x23b7('0xc')][_0x23b7('0xd')]({'port':0x232a});config[_0x23b7('0xe')]=_[_0x23b7('0xf')](config['redis'],{'host':_0x23b7('0x10'),'port':0x18eb});var socket=require(_0x23b7('0x11'))(new Redis(config[_0x23b7('0xe')]));require('./plugin.socket')['register'](socket);function respondWithRpcPromise(_0x3dc563,_0x1139b3,_0xb6a907){return new BPromise(function(_0x7c021e,_0x56f93a){return client[_0x23b7('0x12')](_0x3dc563,_0xb6a907)['then'](function(_0x301553){logger[_0x23b7('0x13')](_0x23b7('0x14'),_0x1139b3,_0x23b7('0x15'));logger[_0x23b7('0x16')](_0x23b7('0x17'),_0x1139b3,_0x23b7('0x15'),JSON['stringify'](_0x301553));if(_0x301553['error']){if(_0x301553[_0x23b7('0x18')][_0x23b7('0x19')]===0x1f4){logger[_0x23b7('0x18')]('Plugin,\x20%s,\x20%s',_0x1139b3,_0x301553[_0x23b7('0x18')][_0x23b7('0x1a')]);return _0x56f93a(_0x301553[_0x23b7('0x18')][_0x23b7('0x1a')]);}logger[_0x23b7('0x18')](_0x23b7('0x14'),_0x1139b3,_0x301553['error'][_0x23b7('0x1a')]);return _0x7c021e(_0x301553['error'][_0x23b7('0x1a')]);}else{logger['info'](_0x23b7('0x14'),_0x1139b3,_0x23b7('0x15'));_0x7c021e(_0x301553[_0x23b7('0x1b')][_0x23b7('0x1a')]);}})['catch'](function(_0x2dc040){logger[_0x23b7('0x18')](_0x23b7('0x14'),_0x1139b3,_0x2dc040);_0x56f93a(_0x2dc040);});});}exports[_0x23b7('0x1c')]=function(_0x9126fb){var _0x92c285=this;return new Promise(function(_0x4858db,_0x18b1da){return db[_0x23b7('0x1d')][_0x23b7('0x1e')](_0x9126fb[_0x23b7('0x1f')],{'raw':_0x9126fb[_0x23b7('0x20')]?_0x9126fb[_0x23b7('0x20')][_0x23b7('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x102cbf){logger[_0x23b7('0x13')](_0x23b7('0x1c'),_0x9126fb);logger['debug'](_0x23b7('0x1c'),_0x9126fb,JSON['stringify'](_0x102cbf));_0x4858db(_0x102cbf);})[_0x23b7('0x22')](function(_0x2130f0){logger[_0x23b7('0x18')]('CreatePlugin',_0x2130f0[_0x23b7('0x1a')],_0x9126fb);_0x18b1da(_0x92c285[_0x23b7('0x18')](0x1f4,_0x2130f0[_0x23b7('0x1a')]));});});};
\ No newline at end of file
+var _0x0cba=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','CreatePlugin','Plugin','body','options','raw','lodash','bluebird','randomstring','ioredis'];(function(_0x1ccfc2,_0x4f3ac5){var _0x193f7d=function(_0x38510d){while(--_0x38510d){_0x1ccfc2['push'](_0x1ccfc2['shift']());}};_0x193f7d(++_0x4f3ac5);}(_0x0cba,0x18f));var _0xa0cb=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0x0cba[_0xbc2974];return _0x3a5b4f;};'use strict';var _=require(_0xa0cb('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa0cb('0x1'));var rs=require(_0xa0cb('0x2'));var fs=require('fs');var Redis=require(_0xa0cb('0x3'));var db=require(_0xa0cb('0x4'))['db'];var utils=require(_0xa0cb('0x5'));var logger=require(_0xa0cb('0x6'))(_0xa0cb('0x7'));var config=require(_0xa0cb('0x8'));var jayson=require(_0xa0cb('0x9'));var client=jayson[_0xa0cb('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0xa0cb('0xb')],{'host':_0xa0cb('0xc'),'port':0x18eb});var socket=require(_0xa0cb('0xd'))(new Redis(config[_0xa0cb('0xb')]));require('./plugin.socket')[_0xa0cb('0xe')](socket);function respondWithRpcPromise(_0x1d6788,_0x251bee,_0x1b6198){return new BPromise(function(_0x177e6d,_0x4bf153){return client[_0xa0cb('0xf')](_0x1d6788,_0x1b6198)[_0xa0cb('0x10')](function(_0x5a4f9b){logger['info'](_0xa0cb('0x11'),_0x251bee,_0xa0cb('0x12'));logger[_0xa0cb('0x13')](_0xa0cb('0x14'),_0x251bee,'request\x20sent',JSON[_0xa0cb('0x15')](_0x5a4f9b));if(_0x5a4f9b[_0xa0cb('0x16')]){if(_0x5a4f9b['error']['code']===0x1f4){logger[_0xa0cb('0x16')]('Plugin,\x20%s,\x20%s',_0x251bee,_0x5a4f9b[_0xa0cb('0x16')][_0xa0cb('0x17')]);return _0x4bf153(_0x5a4f9b[_0xa0cb('0x16')]['message']);}logger[_0xa0cb('0x16')](_0xa0cb('0x11'),_0x251bee,_0x5a4f9b[_0xa0cb('0x16')][_0xa0cb('0x17')]);return _0x177e6d(_0x5a4f9b[_0xa0cb('0x16')][_0xa0cb('0x17')]);}else{logger[_0xa0cb('0x18')](_0xa0cb('0x11'),_0x251bee,_0xa0cb('0x12'));_0x177e6d(_0x5a4f9b['result'][_0xa0cb('0x17')]);}})[_0xa0cb('0x19')](function(_0x433852){logger[_0xa0cb('0x16')](_0xa0cb('0x11'),_0x251bee,_0x433852);_0x4bf153(_0x433852);});});}exports[_0xa0cb('0x1a')]=function(_0x1a8dac){var _0x210752=this;return new Promise(function(_0x451011,_0x4a8ac3){return db[_0xa0cb('0x1b')]['create'](_0x1a8dac[_0xa0cb('0x1c')],{'raw':_0x1a8dac[_0xa0cb('0x1d')]?_0x1a8dac[_0xa0cb('0x1d')][_0xa0cb('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x13474e){logger[_0xa0cb('0x18')](_0xa0cb('0x1a'),_0x1a8dac);logger[_0xa0cb('0x13')](_0xa0cb('0x1a'),_0x1a8dac,JSON[_0xa0cb('0x15')](_0x13474e));_0x451011(_0x13474e);})[_0xa0cb('0x19')](function(_0x53cdcc){logger[_0xa0cb('0x16')](_0xa0cb('0x1a'),_0x53cdcc['message'],_0x1a8dac);_0x4a8ac3(_0x210752[_0xa0cb('0x16')](0x1f4,_0x53cdcc[_0xa0cb('0x17')]));});});};
\ No newline at end of file
index 52fb1fe..1e1058e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184f=['remove','emit','removeListener','register','length','plugin:','save'];(function(_0x5234a4,_0x1c3c78){var _0x485968=function(_0x2049ea){while(--_0x2049ea){_0x5234a4['push'](_0x5234a4['shift']());}};_0x485968(++_0x1c3c78);}(_0x184f,0x179));var _0xf184=function(_0xb8cfbe,_0x2e81b6){_0xb8cfbe=_0xb8cfbe-0x0;var _0x227d51=_0x184f[_0xb8cfbe];return _0x227d51;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xf184('0x0'),_0xf184('0x1'),'update'];function createListener(_0x4d9153,_0x2abb5a){return function(_0x3570d8){_0x2abb5a[_0xf184('0x2')](_0x4d9153,_0x3570d8);};}function removeListener(_0x3227df,_0x2e383c){return function(){PluginEvents[_0xf184('0x3')](_0x3227df,_0x2e383c);};}exports[_0xf184('0x4')]=function(_0x5b888b){for(var _0x71341f=0x0,_0x5421d0=events[_0xf184('0x5')];_0x71341f<_0x5421d0;_0x71341f++){var _0x271ec4=events[_0x71341f];var _0x5d7c76=createListener(_0xf184('0x6')+_0x271ec4,_0x5b888b);PluginEvents['on'](_0x271ec4,_0x5d7c76);}};
\ No newline at end of file
+var _0x1c28=['emit','removeListener','register','length','plugin:','./plugin.events','remove','update'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x1c28,0xd5));var _0x81c2=function(_0x3af9d7,_0x49355b){_0x3af9d7=_0x3af9d7-0x0;var _0x384222=_0x1c28[_0x3af9d7];return _0x384222;};'use strict';var PluginEvents=require(_0x81c2('0x0'));var events=['save',_0x81c2('0x1'),_0x81c2('0x2')];function createListener(_0x1cb17d,_0x22d176){return function(_0x1ad8af){_0x22d176[_0x81c2('0x3')](_0x1cb17d,_0x1ad8af);};}function removeListener(_0x5732be,_0x10264e){return function(){PluginEvents[_0x81c2('0x4')](_0x5732be,_0x10264e);};}exports[_0x81c2('0x5')]=function(_0x29fec7){for(var _0x5a05b2=0x0,_0x349b84=events[_0x81c2('0x6')];_0x5a05b2<_0x349b84;_0x5a05b2++){var _0x53d8b2=events[_0x5a05b2];var _0x50a150=createListener(_0x81c2('0x7')+_0x53d8b2,_0x29fec7);PluginEvents['on'](_0x53d8b2,_0x50a150);}};
\ No newline at end of file
index a0a583f..6f935c7 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(_0x26b08b,_0x83950c){var _0x2df6ba=function(_0x3c6e53){while(--_0x3c6e53){_0x26b08b['push'](_0x26b08b['shift']());}};_0x2df6ba(++_0x83950c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x2ec016,_0x54b5c1){var _0x4b0e94=function(_0x567855){while(--_0x567855){_0x2ec016['push'](_0x2ec016['shift']());}};_0x4b0e94(++_0x54b5c1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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 9262da9..2051c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['sendStatus','status','json','error','name','send','info','index','then','reject','length','describe','params','catch','create','body','join','script','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','restart','stop','Unknown\x20id','../../config/pm2','path','child_process','bluebird'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0xbee3,0xd5));var _0x3bee=function(_0x3c59d4,_0x4f3e06){_0x3c59d4=_0x3c59d4-0x0;var _0x189167=_0xbee3[_0x3c59d4];return _0x189167;};'use strict';var _=require('lodash');var pm2=require(_0x3bee('0x0'));var logger=require('../../config/logger')('api');var path=require(_0x3bee('0x1'));var exec=require(_0x3bee('0x2'))['exec'];var BPromise=require(_0x3bee('0x3'));function handleEntityNotFound(_0x1956c1,_0x1cf379){return function(_0x507c6a){if(!_0x507c6a){_0x1956c1[_0x3bee('0x4')](0x194);;}return _0x507c6a;};}function respondWithResult(_0x3baf77,_0x4c5ef5){_0x4c5ef5=_0x4c5ef5||0xc8;return function(_0x2fdeec){if(_0x2fdeec){return _0x3baf77[_0x3bee('0x5')](_0x4c5ef5)[_0x3bee('0x6')](_0x2fdeec);}return null;};}function handleError(_0x339223,_0xbdd5d5){_0xbdd5d5=_0xbdd5d5||0x1f4;return function(_0x9aab05){logger[_0x3bee('0x7')](_0x9aab05['stack']);if(_0x9aab05[_0x3bee('0x8')]){delete _0x9aab05[_0x3bee('0x8')];}_0x339223[_0x3bee('0x5')](_0xbdd5d5)[_0x3bee('0x9')](_0x9aab05);};}function execChildProcess(){return new BPromise(function(_0x356fef,_0xc53ada){exec('npm\x20install',function(_0x32c0b,_0x5bb283,_0x2da716){logger[_0x3bee('0xa')](_0x5bb283);logger[_0x3bee('0xa')](_0x2da716);if(_0x32c0b){logger[_0x3bee('0x7')](_0x32c0b);return _0xc53ada(_0x32c0b);}return _0x356fef(_0x5bb283);});});}exports[_0x3bee('0xb')]=function(_0x459129,_0xc8c1f0){return pm2['list']()[_0x3bee('0xc')](function(_0x33504d){if(_0x33504d){var _0x31ac52=_[_0x3bee('0xd')](_0x33504d,function(_0x3a0396){return _0x3a0396['name']==='express'||_0x3a0396[_0x3bee('0x8')]==='motion2';});return{'rows':_0x31ac52,'count':_0x31ac52[_0x3bee('0xe')]};}return null;})[_0x3bee('0xc')](respondWithResult(_0xc8c1f0,null))['catch'](handleError(_0xc8c1f0,null));};exports['show']=function(_0x1582a4,_0x36c5aa){return pm2[_0x3bee('0xf')](_0x1582a4[_0x3bee('0x10')]['id'])['then'](respondWithResult(_0x36c5aa,null))[_0x3bee('0xc')](handleEntityNotFound(_0x36c5aa,null))[_0x3bee('0x11')](handleError(_0x36c5aa,null));};exports[_0x3bee('0x12')]=function(_0x49b32d,_0x33d812){if(_0x49b32d[_0x3bee('0x13')][_0x3bee('0x8')]&&_0x49b32d['body']['script']){var _0x1afd0f=path[_0x3bee('0x14')](__dirname,'../../files/plugins',_0x49b32d[_0x3bee('0x13')][_0x3bee('0x15')]);var _0x2eea75=process[_0x3bee('0x16')]();process[_0x3bee('0x17')](path[_0x3bee('0x18')](_0x1afd0f));return execChildProcess()[_0x3bee('0xc')](function(_0x582fa9){process[_0x3bee('0x17')](_0x2eea75);return pm2[_0x3bee('0x19')]({'name':_0x49b32d[_0x3bee('0x13')][_0x3bee('0x8')],'script':_0x1afd0f});})['then'](function(_0x45249c){pm2[_0x3bee('0x1a')]();return _0x45249c[0x0];})[_0x3bee('0xc')](respondWithResult(_0x33d812,0xc9))['catch'](handleError(_0x33d812,null));}else{return _0x33d812['status'](0x1f4)[_0x3bee('0x9')]({'message':_0x3bee('0x1b')});}};exports['update']=function(_0x2c0e50,_0x1b4ce0){if(_0x2c0e50[_0x3bee('0x13')]['id']){delete _0x2c0e50['body']['id'];}var _0x1984c4={'online':_0x3bee('0x1c'),'stopped':_0x3bee('0x1d')};if(_0x1984c4['hasOwnProperty'](_0x2c0e50[_0x3bee('0x13')][_0x3bee('0x5')])){return pm2[_0x1984c4[_0x2c0e50[_0x3bee('0x13')]['status']]](_0x2c0e50[_0x3bee('0x10')]['id'])[_0x3bee('0xc')](respondWithResult(_0x1b4ce0,0xc8))[_0x3bee('0x11')](handleError(_0x1b4ce0,null));}else{return _0x1b4ce0[_0x3bee('0x5')](0x1f4)[_0x3bee('0x9')]({'message':'Unknown\x20status'});}};exports['destroy']=function(_0x3fbc8c,_0x1e1529){if(_0x3fbc8c[_0x3bee('0x13')]['id']){delete _0x3fbc8c[_0x3bee('0x13')]['id'];}if(_0x3fbc8c['params']['id']){return pm2['delete'](_0x3fbc8c[_0x3bee('0x10')]['id'])[_0x3bee('0xc')](function(_0x4f5b58){pm2['dump']();return _0x4f5b58[0x0];})[_0x3bee('0xc')](respondWithResult(_0x1e1529,null))[_0x3bee('0x11')](handleError(_0x1e1529,null));}else{return _0x1e1529[_0x3bee('0x5')](0x1f4)[_0x3bee('0x9')]({'message':_0x3bee('0x1e')});}};
\ No newline at end of file
+var _0x0bb5=['bluebird','sendStatus','status','json','error','stack','name','send','npm\x20install','info','index','then','express','motion2','length','show','describe','body','script','join','chdir','start','dump','catch','restart','stop','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','path','child_process','exec'];(function(_0x4c6d6f,_0x291557){var _0x2d4478=function(_0x106946){while(--_0x106946){_0x4c6d6f['push'](_0x4c6d6f['shift']());}};_0x2d4478(++_0x291557);}(_0x0bb5,0x148));var _0x50bb=function(_0x2711ea,_0x892ad1){_0x2711ea=_0x2711ea-0x0;var _0x32d9f1=_0x0bb5[_0x2711ea];return _0x32d9f1;};'use strict';var _=require(_0x50bb('0x0'));var pm2=require(_0x50bb('0x1'));var logger=require('../../config/logger')('api');var path=require(_0x50bb('0x2'));var exec=require(_0x50bb('0x3'))[_0x50bb('0x4')];var BPromise=require(_0x50bb('0x5'));function handleEntityNotFound(_0x29c72b,_0xfdc9d4){return function(_0x451b4c){if(!_0x451b4c){_0x29c72b[_0x50bb('0x6')](0x194);;}return _0x451b4c;};}function respondWithResult(_0x4e6093,_0x4a105c){_0x4a105c=_0x4a105c||0xc8;return function(_0xfd7aeb){if(_0xfd7aeb){return _0x4e6093[_0x50bb('0x7')](_0x4a105c)[_0x50bb('0x8')](_0xfd7aeb);}return null;};}function handleError(_0x33ff54,_0x4f9172){_0x4f9172=_0x4f9172||0x1f4;return function(_0x4ab8d7){logger[_0x50bb('0x9')](_0x4ab8d7[_0x50bb('0xa')]);if(_0x4ab8d7[_0x50bb('0xb')]){delete _0x4ab8d7[_0x50bb('0xb')];}_0x33ff54['status'](_0x4f9172)[_0x50bb('0xc')](_0x4ab8d7);};}function execChildProcess(){return new BPromise(function(_0x2edeeb,_0x184d06){exec(_0x50bb('0xd'),function(_0x346422,_0x304c3a,_0x38d3b6){logger['info'](_0x304c3a);logger[_0x50bb('0xe')](_0x38d3b6);if(_0x346422){logger['error'](_0x346422);return _0x184d06(_0x346422);}return _0x2edeeb(_0x304c3a);});});}exports[_0x50bb('0xf')]=function(_0xd8ab27,_0x155864){return pm2['list']()[_0x50bb('0x10')](function(_0x309986){if(_0x309986){var _0x3094f2=_['reject'](_0x309986,function(_0xbbc6a0){return _0xbbc6a0['name']===_0x50bb('0x11')||_0xbbc6a0[_0x50bb('0xb')]===_0x50bb('0x12');});return{'rows':_0x3094f2,'count':_0x3094f2[_0x50bb('0x13')]};}return null;})[_0x50bb('0x10')](respondWithResult(_0x155864,null))['catch'](handleError(_0x155864,null));};exports[_0x50bb('0x14')]=function(_0x174065,_0x4b1f5f){return pm2[_0x50bb('0x15')](_0x174065['params']['id'])[_0x50bb('0x10')](respondWithResult(_0x4b1f5f,null))[_0x50bb('0x10')](handleEntityNotFound(_0x4b1f5f,null))['catch'](handleError(_0x4b1f5f,null));};exports['create']=function(_0x43465b,_0x1499dc){if(_0x43465b[_0x50bb('0x16')][_0x50bb('0xb')]&&_0x43465b['body'][_0x50bb('0x17')]){var _0x32bfc3=path[_0x50bb('0x18')](__dirname,'../../files/plugins',_0x43465b[_0x50bb('0x16')][_0x50bb('0x17')]);var _0x1344ec=process['cwd']();process[_0x50bb('0x19')](path['dirname'](_0x32bfc3));return execChildProcess()[_0x50bb('0x10')](function(_0x3391da){process[_0x50bb('0x19')](_0x1344ec);return pm2[_0x50bb('0x1a')]({'name':_0x43465b[_0x50bb('0x16')][_0x50bb('0xb')],'script':_0x32bfc3});})['then'](function(_0xad17ac){pm2[_0x50bb('0x1b')]();return _0xad17ac[0x0];})[_0x50bb('0x10')](respondWithResult(_0x1499dc,0xc9))[_0x50bb('0x1c')](handleError(_0x1499dc,null));}else{return _0x1499dc['status'](0x1f4)[_0x50bb('0xc')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x2befd9,_0x491632){if(_0x2befd9['body']['id']){delete _0x2befd9[_0x50bb('0x16')]['id'];}var _0x12ee2c={'online':_0x50bb('0x1d'),'stopped':_0x50bb('0x1e')};if(_0x12ee2c[_0x50bb('0x1f')](_0x2befd9[_0x50bb('0x16')][_0x50bb('0x7')])){return pm2[_0x12ee2c[_0x2befd9[_0x50bb('0x16')]['status']]](_0x2befd9[_0x50bb('0x20')]['id'])[_0x50bb('0x10')](respondWithResult(_0x491632,0xc8))[_0x50bb('0x1c')](handleError(_0x491632,null));}else{return _0x491632[_0x50bb('0x7')](0x1f4)['send']({'message':_0x50bb('0x21')});}};exports[_0x50bb('0x22')]=function(_0xc38da5,_0xb3c3ba){if(_0xc38da5[_0x50bb('0x16')]['id']){delete _0xc38da5[_0x50bb('0x16')]['id'];}if(_0xc38da5[_0x50bb('0x20')]['id']){return pm2[_0x50bb('0x23')](_0xc38da5[_0x50bb('0x20')]['id'])[_0x50bb('0x10')](function(_0x1c2ee2){pm2[_0x50bb('0x1b')]();return _0x1c2ee2[0x0];})['then'](respondWithResult(_0xb3c3ba,null))[_0x50bb('0x1c')](handleError(_0xb3c3ba,null));}else{return _0xb3c3ba[_0x50bb('0x7')](0x1f4)[_0x50bb('0xc')]({'message':_0x50bb('0x24')});}};
\ No newline at end of file
index 77c62bf..b9b3e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda33=['./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','getQueues','exports','express','Router','../../components/auth/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda33,0x189));var _0x3da3=function(_0x329ad6,_0x52fff3){_0x329ad6=_0x329ad6-0x0;var _0x4aa935=_0xda33[_0x329ad6];return _0x4aa935;};'use strict';var express=require(_0x3da3('0x0'));var router=express[_0x3da3('0x1')]();var auth=require(_0x3da3('0x2'));var controller=require(_0x3da3('0x3'));router[_0x3da3('0x4')](_0x3da3('0x5'),auth[_0x3da3('0x6')](),controller[_0x3da3('0x7')]);router['get'](_0x3da3('0x8'),auth[_0x3da3('0x6')](),controller[_0x3da3('0x9')]);module[_0x3da3('0xa')]=router;
\ No newline at end of file
+var _0xb99d=['isAuthenticated','exports','Router','../../components/auth/service','./realtime.controller','get','/agents'];(function(_0x4af557,_0x5153c4){var _0x5c32d7=function(_0x3edf91){while(--_0x3edf91){_0x4af557['push'](_0x4af557['shift']());}};_0x5c32d7(++_0x5153c4);}(_0xb99d,0x64));var _0xdb99=function(_0x2300f8,_0x18a2c8){_0x2300f8=_0x2300f8-0x0;var _0x312434=_0xb99d[_0x2300f8];return _0x312434;};'use strict';var express=require('express');var router=express[_0xdb99('0x0')]();var auth=require(_0xdb99('0x1'));var controller=require(_0xdb99('0x2'));router[_0xdb99('0x3')](_0xdb99('0x4'),auth[_0xdb99('0x5')](),controller['getAgents']);router[_0xdb99('0x3')]('/queues',auth['isAuthenticated'](),controller['getQueues']);module[_0xdb99('0x6')]=router;
\ No newline at end of file
index cc55393..dfc9baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd6=['assign','UserProfile','getResources','findAndCountAll','getAgentStatus','globalStatus','sortAgentsByStatus','getOptions','filter','getRealtimeAgents','all','lodash','jayson/promise','../../components/realtime/agents','../../components/parsers/qs','../../config/utils','api','client','http','offset','undefined','count','status','set','json','error','stack','name','send','request','startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','loggedIn','available','waiting','talking','paused','voice','outbound','push','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','agents','busy','originated','find','merge','pick','queue','length','some','connectedlinenum','toString','getMembers','UserId','accountcode','online','voiceStatus','loggedInDb','Queue','findAll','QueueId','getChannels','includes','toLowerCase','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','resolve','channel','sort','validateSortParameter','fields','join','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','User','rawAttributes','fieldName','type','key','role','agent','raw','literal','FIELD(id,','order','forEach','Pause','where','user','userProfileId','Agents','extraQueryConditions'];(function(_0x2f06e0,_0x2e1c2a){var _0xf2711b=function(_0x32036c){while(--_0x32036c){_0x2f06e0['push'](_0x2f06e0['shift']());}};_0xf2711b(++_0x2e1c2a);}(_0xddd6,0x1e3));var _0x6ddd=function(_0x22d9c8,_0x57d2fa){_0x22d9c8=_0x22d9c8-0x0;var _0x2266ac=_0xddd6[_0x22d9c8];return _0x2266ac;};'use strict';var util=require('util');var _=require(_0x6ddd('0x0'));var jayson=require(_0x6ddd('0x1'));var rta=require(_0x6ddd('0x2'));var qs=require(_0x6ddd('0x3'));var utils=require(_0x6ddd('0x4'));var logger=require('../../config/logger')(_0x6ddd('0x5'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x6ddd('0x6')][_0x6ddd('0x7')]({'port':0x232a});var routingClient=jayson['client'][_0x6ddd('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x5d7019,_0x1d36be){return function(_0xaa23eb){if(_0xaa23eb){var _0x3a1a59=typeof _0x1d36be[_0x6ddd('0x8')]===_0x6ddd('0x9')&&typeof _0x1d36be['limit']==='undefined';var _0x508209=_0xaa23eb[_0x6ddd('0xa')];var _0x4dc6b1=_0x3a1a59?0x0:_0x1d36be[_0x6ddd('0x8')];var _0x3d73e9=_0x3a1a59?_0xaa23eb['count']:_0x1d36be[_0x6ddd('0x8')]+_0x1d36be['limit'];var _0x4aa2c1;if(_0x3d73e9>=_0x508209){_0x3d73e9=_0x508209;_0x4aa2c1=0xc8;}else{_0x4aa2c1=0xce;}_0x5d7019[_0x6ddd('0xb')](_0x4aa2c1);return _0x5d7019[_0x6ddd('0xc')]('Content-Range',_0x4dc6b1+'-'+_0x3d73e9+'/'+_0x508209)[_0x6ddd('0xd')](_0xaa23eb);}return null;};}function handleError(_0x5bb500,_0x10d721){_0x10d721=_0x10d721||0x1f4;return function(_0x2c2843){logger[_0x6ddd('0xe')](_0x2c2843[_0x6ddd('0xf')]);if(_0x2c2843[_0x6ddd('0x10')]){delete _0x2c2843[_0x6ddd('0x10')];}_0x5bb500['status'](_0x10d721)[_0x6ddd('0x11')](_0x2c2843);};}function getRealtimeQueues(_0x447ae5,_0x1d88ad){return new Promise(function(_0x5281a6,_0x1ac6a1){var _0x445101=_0x1d88ad==='voice'?amiClient:routingClient;return _0x445101[_0x6ddd('0x12')](_[_0x6ddd('0x13')](_0x1d88ad)+'Queues',_0x447ae5)[_0x6ddd('0x14')](function(_0x5de71e){if(_0x5de71e[_0x6ddd('0xe')])throw new Error(util[_0x6ddd('0x15')](_0x6ddd('0x16'),_0x1d88ad));return _0x5281a6(_0x5de71e[_0x6ddd('0x17')]);})['catch'](function(_0x3a89a7){_0x1ac6a1(_0x3a89a7);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x797c02,_0x5602ad){return amiClient[_0x6ddd('0x12')]('VoiceQueuesChannels',{})[_0x6ddd('0x14')](function(_0x5901e1){if(_0x5901e1['error'])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x797c02(_0x5901e1[_0x6ddd('0x17')]);})[_0x6ddd('0x18')](function(_0x2d9d8b){_0x5602ad(_0x2d9d8b);});});}function initializeQueues(_0x87d013,_0x5cdfd4,_0x59b761,_0x3dfdab){var _0x21fc1b=[_0x6ddd('0x19'),_0x6ddd('0x1a'),_0x6ddd('0x1b'),_0x6ddd('0x1c'),_0x6ddd('0x1d')];if(_0x59b761===_0x6ddd('0x1e')&&_0x3dfdab===_0x6ddd('0x1f')){_0x21fc1b[_0x6ddd('0x20')](_0x6ddd('0x21'),'originated',_0x6ddd('0x22'),_0x6ddd('0x23'),_0x6ddd('0x24'),_0x6ddd('0x25'),_0x6ddd('0x26'),_0x6ddd('0x27'),_0x6ddd('0x28'),_0x6ddd('0x29'),_0x6ddd('0x2a'),_0x6ddd('0x2b'),'dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0x6ddd('0x2c'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0x6ddd('0x2d'),_0x6ddd('0x2e'),'predictiveIntervalDroppedCallsCallersExit',_0x6ddd('0x2f'),_0x6ddd('0x30'));}return _0x87d013[_0x6ddd('0x31')](function(_0x451824){var _0x18d1f8=_0x451824[_0x6ddd('0x32')]({'plain':!![]});_0x18d1f8[_0x6ddd('0x33')]=[];_0x18d1f8[_0x6ddd('0x1d')]=0x0;_0x18d1f8['loggedInDb']=0x0;_0x18d1f8[_0x6ddd('0x19')]=0x0;_0x18d1f8[_0x6ddd('0x1a')]=0x0;_0x18d1f8['waiting']=0x0;if(_0x59b761===_0x6ddd('0x1e')){_0x18d1f8['talking']=0x0;_0x18d1f8[_0x6ddd('0x34')]=0x0;if(_0x3dfdab===_0x6ddd('0x1f')){_0x18d1f8['pTalking']=0x0;_0x18d1f8[_0x6ddd('0x35')]=0x0;}}var _0x4a9444=_[_0x6ddd('0x36')](_0x5cdfd4,['id',_0x18d1f8['id']]);if(_0x4a9444)_[_0x6ddd('0x37')](_0x18d1f8,_[_0x6ddd('0x38')](_0x4a9444,_0x21fc1b));return _0x18d1f8;});}function updateAgentVoiceStatus(_0xecb103,_0x2d114a,_0x8850c5){var _0xc9644f=_['filter'](_0x8850c5,[_0x6ddd('0x39'),_0x2d114a[_0x6ddd('0x10')]]);if(_0xc9644f[_0x6ddd('0x3a')]===0x0)return _0xecb103[_0x6ddd('0x34')]=!![];if(_[_0x6ddd('0x3b')](_0xc9644f,[_0x6ddd('0x3c'),_0xecb103['internal'][_0x6ddd('0x3d')]()]))return _0xecb103[_0x6ddd('0x1c')]=!![];if(!_0xecb103[_0x6ddd('0x1c')])return _0xecb103[_0x6ddd('0x34')]=!![];}function getVoiceQueueAgents(_0x3ffc1a,_0x2a90d2,_0x3221d2,_0x5b0f6d){var _0x1ca946=_[_0x6ddd('0x36')](_0x2a90d2,['id',_0x3ffc1a['id']]);if(!_0x1ca946)return _0x3ffc1a;return _0x1ca946[_0x6ddd('0x3e')]({'raw':!![]})[_0x6ddd('0x14')](function(_0x2a5900){for(var _0x5c3381=0x0;_0x5c3381<_0x2a5900[_0x6ddd('0x3a')];_0x5c3381++){var _0x482721=_[_0x6ddd('0x36')](_0x3221d2,['id',_0x2a5900[_0x5c3381][_0x6ddd('0x3f')]]);if(!_0x482721){_0x482721={'id':_0x2a5900[_0x5c3381][_0x6ddd('0x3f')],'name':_0x2a5900[_0x5c3381][_0x6ddd('0x3f')],'accountcode':'','online':![]};}var _0x373fc2={'id':_0x482721['id'],'name':_0x482721[_0x6ddd('0x10')],'internal':_0x482721[_0x6ddd('0x40')],'online':Boolean(_0x482721[_0x6ddd('0x41')]),'paused':Boolean(_0x2a5900[_0x5c3381][_0x6ddd('0x1d')])};if(_0x482721[_0x6ddd('0x42')]==='talking')updateAgentVoiceStatus(_0x373fc2,_0x3ffc1a,_0x5b0f6d);if(_0x373fc2[_0x6ddd('0x41')])_0x3ffc1a[_0x6ddd('0x43')]++;if(_0x373fc2[_0x6ddd('0x34')])_0x3ffc1a[_0x6ddd('0x34')]++;if(_0x373fc2[_0x6ddd('0x1d')]&&!_0x373fc2['busy']&&!_0x373fc2[_0x6ddd('0x1c')])_0x3ffc1a[_0x6ddd('0x1d')]++;_0x3ffc1a[_0x6ddd('0x33')][_0x6ddd('0x20')](_0x373fc2);}return _0x3ffc1a;});}function getQueueAgents(_0x301c38,_0x5cbf32,_0x3f6a62){var _0x17201b='User'+_[_0x6ddd('0x13')](_0x3f6a62)+_0x6ddd('0x44');var _0x117f83=_0x3f6a62+'Pause';return db[_0x17201b][_0x6ddd('0x45')]({'where':{[_[_0x6ddd('0x13')](_0x3f6a62)+_0x6ddd('0x46')]:_0x301c38['id']},'raw':!![]})['then'](function(_0x386263){for(var _0x5a8f6b=0x0;_0x5a8f6b<_0x386263[_0x6ddd('0x3a')];_0x5a8f6b++){var _0x5dbfc3=_[_0x6ddd('0x36')](_0x5cbf32,['id',_0x386263[_0x5a8f6b][_0x6ddd('0x3f')]]);if(!_0x5dbfc3){_0x5dbfc3={'id':_0x386263[_0x5a8f6b][_0x6ddd('0x3f')],'name':_0x386263[_0x5a8f6b]['UserId'],'online':![],['pauseField']:![]};}var _0x56c456={'id':_0x5dbfc3['id'],'name':_0x5dbfc3[_0x6ddd('0x10')],'online':Boolean(_0x5dbfc3[_0x6ddd('0x41')]),'paused':Boolean(_0x5dbfc3[_0x117f83])};if(_0x56c456[_0x6ddd('0x41')])_0x301c38[_0x6ddd('0x43')]++;_0x301c38[_0x6ddd('0x33')][_0x6ddd('0x20')](_0x56c456);}return _0x301c38;});}function validateChannel(_0x5b707e){var _0x15024c=utils[_0x6ddd('0x47')]();if(!_[_0x6ddd('0x48')](_0x15024c,_0x5b707e[_0x6ddd('0x49')]()))throw new Error('Invalid\x20channel');return _0x5b707e[_0x6ddd('0x49')]();}exports['getAgents']=function(_0x1d8e87,_0x5bf008){var _0x4493b6={'count':0x0,'rows':[]};var _0x356c93={};var _0x260116;var _0x327d70;var _0x279d93;var _0x45d411;var _0x45ea58=utils[_0x6ddd('0x47')]();var _0x3ad7f0=_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x4b')];var _0xf5f10c=_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x4c')];var _0x492414=_0x1d8e87['query'][_0x6ddd('0x4d')];var _0x190e1a=_0xf5f10c===_0x6ddd('0x4e')||_0xf5f10c==='*pause'?!![]:![];var _0x474d70=[];var _0x4938a1;Promise[_0x6ddd('0x4f')]()['then'](function(){if(_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x50')]){_0x260116=validateChannel(_0x1d8e87[_0x6ddd('0x4a')]['channel']);}if(!_0x1d8e87[_0x6ddd('0x4a')]['sort']||!_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x51')][_0x6ddd('0x48')]('globalStatus')){_0x1d8e87['query'][_0x6ddd('0x51')]=rta[_0x6ddd('0x52')](_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x51')]);return;}var _0x533e1b=rta['getUpdatedSortOptions'](_0x1d8e87[_0x6ddd('0x4a')]['sort']);_0x1d8e87[_0x6ddd('0x4a')]['sort']=_0x533e1b[_0x6ddd('0x53')][_0x6ddd('0x54')](',');_0x327d70=_0x533e1b['order'];})[_0x6ddd('0x14')](function(){if(!_0x3ad7f0){return[];}return rta[_0x6ddd('0x55')](_0x3ad7f0,_0x260116);})[_0x6ddd('0x14')](function(_0x3ec7a6){_0x474d70=_0x3ec7a6;return rta['getRealtimeAgents']();})[_0x6ddd('0x14')](function(_0x329bdd){_0x45d411=_0x329bdd[_0x6ddd('0x56')];if((!_0xf5f10c||_0x190e1a)&&!_0x327d70){return _0x474d70;}if(_0x327d70&&!_0xf5f10c){return rta[_0x6ddd('0x57')](_0x45d411,_0x474d70,_0x327d70);}else{return rta[_0x6ddd('0x58')](_0x45d411,_0x474d70,_0xf5f10c);}})[_0x6ddd('0x14')](function(_0x1a579e){_0x474d70=_0x1a579e;var _0x2fda07=![];if(_0x474d70[_0x6ddd('0x3a')]===0x0){if(_0x3ad7f0||_0xf5f10c){_0x2fda07=!![];}if(_0x190e1a){_0x2fda07=![];}}if(_0x2fda07){return _0x4493b6;}var _0x1427ff=_[_0x6ddd('0x31')](db[_0x6ddd('0x59')][_0x6ddd('0x5a')],function(_0x2c4a6d){return{'name':_0x2c4a6d[_0x6ddd('0x5b')],'type':_0x2c4a6d[_0x6ddd('0x5c')][_0x6ddd('0x5d')]};});_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x5e')]=_0x6ddd('0x5f');_0x1d8e87[_0x6ddd('0x4a')][_0x6ddd('0x41')]=!![];_0x356c93=qs['getOptions'](_0x1427ff,_0x1d8e87);_0x356c93[_0x6ddd('0x60')]=!![];var _0x10eee3=[];if(_0x474d70[_0x6ddd('0x3a')]>0x0){_0x10eee3[_0x6ddd('0x20')]({'id':{'$in':_0x474d70}});if(_0x327d70&&!_0xf5f10c){_0x4938a1=[db['sequelize'][_0x6ddd('0x61')](_0x6ddd('0x62')+_0x474d70+')')];_0x356c93[_0x6ddd('0x63')]=_0x4938a1;}}if(_0x190e1a){_0x45ea58[_0x6ddd('0x64')](function(_0x33f3a2){var _0x43f5cf=!![];if(_0xf5f10c==='*pause'&&_0x260116!==_0x33f3a2){_0x43f5cf=![];}_0x10eee3[_0x6ddd('0x20')]({[_0x33f3a2+_0x6ddd('0x65')]:_0x43f5cf});});if(_0x492414){_0x10eee3[_0x6ddd('0x20')]({'pauseType':_0x492414});}}else if(_0xf5f10c){_0x45ea58['forEach'](function(_0x5956a8){_0x10eee3[_0x6ddd('0x20')]({[_0x5956a8+_0x6ddd('0x65')]:![]});});}_0x356c93['where']=_[_0x6ddd('0x37')](_0x356c93[_0x6ddd('0x66')],{'$and':_0x10eee3});if(_0x1d8e87[_0x6ddd('0x67')][_0x6ddd('0x5e')]===_0x6ddd('0x67')){var _0x4e4587={'params':{'id':_0x1d8e87[_0x6ddd('0x67')][_0x6ddd('0x68')]},'query':{'section':_0x6ddd('0x69'),'role':_0x6ddd('0x5f'),'online':!![],'raw':!![],'ids':_0x474d70,'customSorting':_0x4938a1}};if(_0x190e1a){_0x4e4587[_0x6ddd('0x4a')][_0x6ddd('0x6a')]=_0x10eee3;}_0x4e4587[_0x6ddd('0x4a')]=Object[_0x6ddd('0x6b')](_0x4e4587[_0x6ddd('0x4a')],_0x1d8e87['query']);delete _0x4e4587['query']['id'];return db[_0x6ddd('0x6c')][_0x6ddd('0x6d')](_0x4e4587);}return db[_0x6ddd('0x59')][_0x6ddd('0x6e')](_0x356c93);})['then'](function(_0x4f3d23){_0x4493b6[_0x6ddd('0xa')]=_0x4f3d23['count'];_0x279d93=_0x4f3d23[_0x6ddd('0x56')];return _0x279d93[_0x6ddd('0x31')](function(_0x2c443c){var _0x6ac7ad=_[_0x6ddd('0x36')](_0x45d411,['id',_0x2c443c['id']]);if(_0x6ac7ad){var _0x182bf4=rta['filterAgentAttributes'](_0x6ac7ad);_[_0x6ddd('0x37')](_0x2c443c,_0x182bf4);}_0x2c443c['globalStatus']=rta[_0x6ddd('0x6f')](_0x2c443c);if(_0x2c443c[_0x6ddd('0x70')][_0x6ddd('0x48')]('pause')){_0x45ea58[_0x6ddd('0x64')](function(_0x31949b){if(_0x2c443c[_0x31949b+'Pause']){_0x2c443c[_0x31949b+'Status']='pause';}});}return _0x2c443c;});})[_0x6ddd('0x14')](function(_0x311290){if(!_0x327d70||_0x4938a1){return _0x311290;}return rta[_0x6ddd('0x71')](_0x311290,_0x327d70);})['then'](function(_0x1bcf95){_0x4493b6[_0x6ddd('0x56')]=_0x1bcf95;return _0x4493b6;})[_0x6ddd('0x14')](respondWithFilteredResult(_0x5bf008,_0x356c93))[_0x6ddd('0x18')](handleError(_0x5bf008,null));};exports['getQueues']=function(_0x596e17,_0x15de78){var _0x2d1826={'count':0x0,'rows':[]},_0x463f88={},_0x57b9a1,_0x250cfb,_0x215ee7,_0x48bcf6,_0x10f976;Promise[_0x6ddd('0x4f')]()[_0x6ddd('0x14')](function(){if(_0x596e17[_0x6ddd('0x4a')][_0x6ddd('0x50')])_0x57b9a1=validateChannel(_0x596e17[_0x6ddd('0x4a')]['channel']);var _0x19204e=_[_0x6ddd('0x13')](_0x57b9a1)+_0x6ddd('0x44');var _0x22f9f7=_[_0x6ddd('0x31')](db[_0x19204e][_0x6ddd('0x5a')],function(_0x475936){return{'name':_0x475936[_0x6ddd('0x5b')],'type':_0x475936[_0x6ddd('0x5c')][_0x6ddd('0x5d')]};});_0x463f88=qs[_0x6ddd('0x72')](_0x22f9f7,_0x596e17);if(_0x596e17['user'][_0x6ddd('0x5e')]===_0x6ddd('0x67')){var _0x45262c={'params':{'id':_0x596e17[_0x6ddd('0x67')][_0x6ddd('0x68')]},'query':{'section':_0x57b9a1===_0x6ddd('0x1e')&&_0x596e17[_0x6ddd('0x4a')]['type']===_0x6ddd('0x1f')?'QueueCampaigns':_[_0x6ddd('0x13')](_0x57b9a1)+'Queues','type':_0x596e17[_0x6ddd('0x4a')][_0x6ddd('0x5c')],'nolimit':!![],'sort':_0x6ddd('0x10'),'filter':_0x596e17['query'][_0x6ddd('0x73')]}};return db[_0x6ddd('0x6c')][_0x6ddd('0x6d')](_0x45262c);}return db[_0x19204e][_0x6ddd('0x6e')](_0x463f88);})['then'](function(_0x2f8f1b){_0x2d1826['count']=_0x2f8f1b[_0x6ddd('0xa')];_0x250cfb=_0x2f8f1b[_0x6ddd('0x56')];return getRealtimeQueues(_0x596e17,_0x57b9a1);})[_0x6ddd('0x14')](function(_0x34bea8){_0x48bcf6=_0x34bea8[_0x6ddd('0x56')];return rta[_0x6ddd('0x74')]();})[_0x6ddd('0x14')](function(_0x389c0e){_0x215ee7=_0x389c0e[_0x6ddd('0x56')];if(_0x57b9a1!=_0x6ddd('0x1e'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x579435){_0x10f976=_0x579435?_0x579435[_0x6ddd('0x56')]:[];return initializeQueues(_0x250cfb,_0x48bcf6,_0x57b9a1,_0x596e17['query']['type']);})['then'](function(_0xca0299){var _0x3ae540=_0xca0299['map'](function(_0x1b8950){if(_0x57b9a1==='voice')return getVoiceQueueAgents(_0x1b8950,_0x250cfb,_0x215ee7,_0x10f976);else return getQueueAgents(_0x1b8950,_0x215ee7,_0x57b9a1);});return Promise[_0x6ddd('0x75')](_0x3ae540);})[_0x6ddd('0x14')](function(_0x4ca370){_0x2d1826[_0x6ddd('0x56')]=_0x4ca370;return _0x2d1826;})[_0x6ddd('0x14')](respondWithFilteredResult(_0x15de78,_0x463f88))[_0x6ddd('0x18')](handleError(_0x15de78,null));};
\ No newline at end of file
+var _0xd043=['get','busy','outbound','pTalking','find','merge','pick','queue','length','connectedlinenum','internal','toString','getMembers','UserId','accountcode','online','voiceStatus','push','User','startCase','Queue','Pause','QueueId','loggedInDb','agents','toLowerCase','Invalid\x20channel','getAgents','getChannels','globalQueueFilter','globalStatusFilter','query','pause','*pause','resolve','channel','sort','includes','validateSortParameter','getUpdatedSortOptions','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','fieldName','type','role','getOptions','raw','sequelize','literal','FIELD(id,','forEach','where','user','userProfileId','Agents','extraQueryConditions','findAndCountAll','filterAgentAttributes','globalStatus','getAgentStatus','Status','sortAgentsByStatus','getQueues','rawAttributes','key','QueueCampaigns','Queues','UserProfile','util','lodash','jayson/promise','../../components/realtime/agents','../../config/utils','../../config/logger','api','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','name','send','voice','request','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','result','loggedIn','available','waiting','talking','paused','originated','message','dialActive','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','map'];(function(_0x19159d,_0x3d05c8){var _0x35884a=function(_0xe419f8){while(--_0xe419f8){_0x19159d['push'](_0x19159d['shift']());}};_0x35884a(++_0x3d05c8);}(_0xd043,0xc1));var _0x3d04=function(_0xc4a608,_0x45fecd){_0xc4a608=_0xc4a608-0x0;var _0x5e2730=_0xd043[_0xc4a608];return _0x5e2730;};'use strict';var util=require(_0x3d04('0x0'));var _=require(_0x3d04('0x1'));var jayson=require(_0x3d04('0x2'));var rta=require(_0x3d04('0x3'));var qs=require('../../components/parsers/qs');var utils=require(_0x3d04('0x4'));var logger=require(_0x3d04('0x5'))(_0x3d04('0x6'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x3d04('0x7')][_0x3d04('0x8')]({'port':0x232a});var routingClient=jayson[_0x3d04('0x7')][_0x3d04('0x8')]({'port':0x232c});function respondWithFilteredResult(_0x6e6f51,_0x871b67){return function(_0x49c569){if(_0x49c569){var _0x3c66ec=typeof _0x871b67[_0x3d04('0x9')]===_0x3d04('0xa')&&typeof _0x871b67[_0x3d04('0xb')]===_0x3d04('0xa');var _0x1485ce=_0x49c569[_0x3d04('0xc')];var _0x2c4f25=_0x3c66ec?0x0:_0x871b67[_0x3d04('0x9')];var _0x574ffc=_0x3c66ec?_0x49c569[_0x3d04('0xc')]:_0x871b67[_0x3d04('0x9')]+_0x871b67[_0x3d04('0xb')];var _0x1887f6;if(_0x574ffc>=_0x1485ce){_0x574ffc=_0x1485ce;_0x1887f6=0xc8;}else{_0x1887f6=0xce;}_0x6e6f51[_0x3d04('0xd')](_0x1887f6);return _0x6e6f51[_0x3d04('0xe')](_0x3d04('0xf'),_0x2c4f25+'-'+_0x574ffc+'/'+_0x1485ce)[_0x3d04('0x10')](_0x49c569);}return null;};}function handleError(_0x3f1ee1,_0x4dfb49){_0x4dfb49=_0x4dfb49||0x1f4;return function(_0x801475){logger[_0x3d04('0x11')](_0x801475['stack']);if(_0x801475[_0x3d04('0x12')]){delete _0x801475[_0x3d04('0x12')];}_0x3f1ee1[_0x3d04('0xd')](_0x4dfb49)[_0x3d04('0x13')](_0x801475);};}function getRealtimeQueues(_0x5c53a5,_0x42d5db){return new Promise(function(_0x57861e,_0x342299){var _0x542115=_0x42d5db===_0x3d04('0x14')?amiClient:routingClient;return _0x542115[_0x3d04('0x15')](_['startCase'](_0x42d5db)+'Queues',_0x5c53a5)[_0x3d04('0x16')](function(_0x475964){if(_0x475964[_0x3d04('0x11')])throw new Error(util[_0x3d04('0x17')](_0x3d04('0x18'),_0x42d5db));return _0x57861e(_0x475964['result']);})[_0x3d04('0x19')](function(_0x1db27f){_0x342299(_0x1db27f);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x353824,_0x465de7){return amiClient[_0x3d04('0x15')]('VoiceQueuesChannels',{})[_0x3d04('0x16')](function(_0x53b948){if(_0x53b948[_0x3d04('0x11')])throw new Error(_0x3d04('0x1a'));return _0x353824(_0x53b948[_0x3d04('0x1b')]);})[_0x3d04('0x19')](function(_0x2e18bf){_0x465de7(_0x2e18bf);});});}function initializeQueues(_0x18ca3a,_0x3d25d7,_0x53eade,_0x4f76db){var _0x3cc9d5=[_0x3d04('0x1c'),_0x3d04('0x1d'),_0x3d04('0x1e'),_0x3d04('0x1f'),_0x3d04('0x20')];if(_0x53eade===_0x3d04('0x14')&&_0x4f76db==='outbound'){_0x3cc9d5['push']('pTalking',_0x3d04('0x21'),_0x3d04('0x22'),_0x3d04('0x23'),'dialMethod',_0x3d04('0x24'),_0x3d04('0x25'),_0x3d04('0x26'),_0x3d04('0x27'),_0x3d04('0x28'),_0x3d04('0x29'),_0x3d04('0x2a'),'dialPredictiveInterval',_0x3d04('0x2b'),_0x3d04('0x2c'),_0x3d04('0x2d'),_0x3d04('0x2e'),'predictiveIntervalAnsweredCalls',_0x3d04('0x2f'),_0x3d04('0x30'),_0x3d04('0x31'),'predictiveIntervalAvgTalktime');}return _0x18ca3a[_0x3d04('0x32')](function(_0x125bd3){var _0x12a54f=_0x125bd3[_0x3d04('0x33')]({'plain':!![]});_0x12a54f['agents']=[];_0x12a54f[_0x3d04('0x20')]=0x0;_0x12a54f['loggedInDb']=0x0;_0x12a54f[_0x3d04('0x1c')]=0x0;_0x12a54f['available']=0x0;_0x12a54f[_0x3d04('0x1e')]=0x0;if(_0x53eade===_0x3d04('0x14')){_0x12a54f[_0x3d04('0x1f')]=0x0;_0x12a54f[_0x3d04('0x34')]=0x0;if(_0x4f76db===_0x3d04('0x35')){_0x12a54f[_0x3d04('0x36')]=0x0;_0x12a54f[_0x3d04('0x21')]=0x0;}}var _0x32b1be=_[_0x3d04('0x37')](_0x3d25d7,['id',_0x12a54f['id']]);if(_0x32b1be)_[_0x3d04('0x38')](_0x12a54f,_[_0x3d04('0x39')](_0x32b1be,_0x3cc9d5));return _0x12a54f;});}function updateAgentVoiceStatus(_0xc032bd,_0x39f9b4,_0xccdb5a){var _0x3f1cab=_['filter'](_0xccdb5a,[_0x3d04('0x3a'),_0x39f9b4[_0x3d04('0x12')]]);if(_0x3f1cab[_0x3d04('0x3b')]===0x0)return _0xc032bd[_0x3d04('0x34')]=!![];if(_['some'](_0x3f1cab,[_0x3d04('0x3c'),_0xc032bd[_0x3d04('0x3d')][_0x3d04('0x3e')]()]))return _0xc032bd[_0x3d04('0x1f')]=!![];if(!_0xc032bd[_0x3d04('0x1f')])return _0xc032bd[_0x3d04('0x34')]=!![];}function getVoiceQueueAgents(_0x1e1944,_0x1f043e,_0x241e09,_0x2760f0){var _0x4a5714=_[_0x3d04('0x37')](_0x1f043e,['id',_0x1e1944['id']]);if(!_0x4a5714)return _0x1e1944;return _0x4a5714[_0x3d04('0x3f')]({'raw':!![]})[_0x3d04('0x16')](function(_0x276ec3){for(var _0x8b7fbb=0x0;_0x8b7fbb<_0x276ec3[_0x3d04('0x3b')];_0x8b7fbb++){var _0x5fdb72=_['find'](_0x241e09,['id',_0x276ec3[_0x8b7fbb]['UserId']]);if(!_0x5fdb72){_0x5fdb72={'id':_0x276ec3[_0x8b7fbb]['UserId'],'name':_0x276ec3[_0x8b7fbb][_0x3d04('0x40')],'accountcode':'','online':![]};}var _0x29e16e={'id':_0x5fdb72['id'],'name':_0x5fdb72[_0x3d04('0x12')],'internal':_0x5fdb72[_0x3d04('0x41')],'online':Boolean(_0x5fdb72[_0x3d04('0x42')]),'paused':Boolean(_0x276ec3[_0x8b7fbb]['paused'])};if(_0x5fdb72[_0x3d04('0x43')]===_0x3d04('0x1f'))updateAgentVoiceStatus(_0x29e16e,_0x1e1944,_0x2760f0);if(_0x29e16e[_0x3d04('0x42')])_0x1e1944['loggedInDb']++;if(_0x29e16e[_0x3d04('0x34')])_0x1e1944[_0x3d04('0x34')]++;if(_0x29e16e[_0x3d04('0x20')]&&!_0x29e16e['busy']&&!_0x29e16e[_0x3d04('0x1f')])_0x1e1944[_0x3d04('0x20')]++;_0x1e1944['agents'][_0x3d04('0x44')](_0x29e16e);}return _0x1e1944;});}function getQueueAgents(_0x425685,_0x504cec,_0x5807eb){var _0x507772=_0x3d04('0x45')+_[_0x3d04('0x46')](_0x5807eb)+_0x3d04('0x47');var _0x113061=_0x5807eb+_0x3d04('0x48');return db[_0x507772]['findAll']({'where':{[_['startCase'](_0x5807eb)+_0x3d04('0x49')]:_0x425685['id']},'raw':!![]})[_0x3d04('0x16')](function(_0x74872d){for(var _0x45bbb2=0x0;_0x45bbb2<_0x74872d[_0x3d04('0x3b')];_0x45bbb2++){var _0xf299c3=_[_0x3d04('0x37')](_0x504cec,['id',_0x74872d[_0x45bbb2][_0x3d04('0x40')]]);if(!_0xf299c3){_0xf299c3={'id':_0x74872d[_0x45bbb2][_0x3d04('0x40')],'name':_0x74872d[_0x45bbb2][_0x3d04('0x40')],'online':![],['pauseField']:![]};}var _0x58238f={'id':_0xf299c3['id'],'name':_0xf299c3['name'],'online':Boolean(_0xf299c3[_0x3d04('0x42')]),'paused':Boolean(_0xf299c3[_0x113061])};if(_0x58238f[_0x3d04('0x42')])_0x425685[_0x3d04('0x4a')]++;_0x425685[_0x3d04('0x4b')][_0x3d04('0x44')](_0x58238f);}return _0x425685;});}function validateChannel(_0x32665c){var _0x24d11d=utils['getChannels']();if(!_['includes'](_0x24d11d,_0x32665c[_0x3d04('0x4c')]()))throw new Error(_0x3d04('0x4d'));return _0x32665c['toLowerCase']();}exports[_0x3d04('0x4e')]=function(_0xb45405,_0xd8b46d){var _0x14bd37={'count':0x0,'rows':[]};var _0x1eb874={};var _0x62c1f4;var _0x258fb4;var _0x4f5e59;var _0xdf0daf;var _0x2d79a8=utils[_0x3d04('0x4f')]();var _0xcb12c0=_0xb45405['query'][_0x3d04('0x50')];var _0x5e6df0=_0xb45405['query'][_0x3d04('0x51')];var _0x6da64b=_0xb45405[_0x3d04('0x52')]['pauseTypeFilter'];var _0x11cba6=_0x5e6df0===_0x3d04('0x53')||_0x5e6df0===_0x3d04('0x54')?!![]:![];var _0x38f679=[];var _0x25fb68;Promise[_0x3d04('0x55')]()[_0x3d04('0x16')](function(){if(_0xb45405['query'][_0x3d04('0x56')]){_0x62c1f4=validateChannel(_0xb45405['query']['channel']);}if(!_0xb45405[_0x3d04('0x52')]['sort']||!_0xb45405[_0x3d04('0x52')][_0x3d04('0x57')][_0x3d04('0x58')]('globalStatus')){_0xb45405['query'][_0x3d04('0x57')]=rta[_0x3d04('0x59')](_0xb45405[_0x3d04('0x52')][_0x3d04('0x57')]);return;}var _0x58afa1=rta[_0x3d04('0x5a')](_0xb45405['query'][_0x3d04('0x57')]);_0xb45405[_0x3d04('0x52')][_0x3d04('0x57')]=_0x58afa1['fields'][_0x3d04('0x5b')](',');_0x258fb4=_0x58afa1[_0x3d04('0x5c')];})[_0x3d04('0x16')](function(){if(!_0xcb12c0){return[];}return rta[_0x3d04('0x5d')](_0xcb12c0,_0x62c1f4);})[_0x3d04('0x16')](function(_0x5f315f){_0x38f679=_0x5f315f;return rta[_0x3d04('0x5e')]();})['then'](function(_0x5dc0c0){_0xdf0daf=_0x5dc0c0[_0x3d04('0x5f')];if((!_0x5e6df0||_0x11cba6)&&!_0x258fb4){return _0x38f679;}if(_0x258fb4&&!_0x5e6df0){return rta['getSortedAgentsIdsByStatus'](_0xdf0daf,_0x38f679,_0x258fb4);}else{return rta['getAgentIdsByStatus'](_0xdf0daf,_0x38f679,_0x5e6df0);}})['then'](function(_0x400aa0){_0x38f679=_0x400aa0;var _0x153459=![];if(_0x38f679[_0x3d04('0x3b')]===0x0){if(_0xcb12c0||_0x5e6df0){_0x153459=!![];}if(_0x11cba6){_0x153459=![];}}if(_0x153459){return _0x14bd37;}var _0xf3bce4=_[_0x3d04('0x32')](db['User']['rawAttributes'],function(_0x5247fb){return{'name':_0x5247fb[_0x3d04('0x60')],'type':_0x5247fb[_0x3d04('0x61')]['key']};});_0xb45405[_0x3d04('0x52')][_0x3d04('0x62')]='agent';_0xb45405[_0x3d04('0x52')]['online']=!![];_0x1eb874=qs[_0x3d04('0x63')](_0xf3bce4,_0xb45405);_0x1eb874[_0x3d04('0x64')]=!![];var _0x195a75=[];if(_0x38f679[_0x3d04('0x3b')]>0x0){_0x195a75['push']({'id':{'$in':_0x38f679}});if(_0x258fb4&&!_0x5e6df0){_0x25fb68=[db[_0x3d04('0x65')][_0x3d04('0x66')](_0x3d04('0x67')+_0x38f679+')')];_0x1eb874[_0x3d04('0x5c')]=_0x25fb68;}}if(_0x11cba6){_0x2d79a8[_0x3d04('0x68')](function(_0x33180e){var _0x18e821=!![];if(_0x5e6df0===_0x3d04('0x54')&&_0x62c1f4!==_0x33180e){_0x18e821=![];}_0x195a75[_0x3d04('0x44')]({[_0x33180e+_0x3d04('0x48')]:_0x18e821});});if(_0x6da64b){_0x195a75['push']({'pauseType':_0x6da64b});}}else if(_0x5e6df0){_0x2d79a8[_0x3d04('0x68')](function(_0x504ed1){_0x195a75[_0x3d04('0x44')]({[_0x504ed1+_0x3d04('0x48')]:![]});});}_0x1eb874[_0x3d04('0x69')]=_[_0x3d04('0x38')](_0x1eb874[_0x3d04('0x69')],{'$and':_0x195a75});if(_0xb45405[_0x3d04('0x6a')][_0x3d04('0x62')]==='user'){var _0x1d14a4={'params':{'id':_0xb45405[_0x3d04('0x6a')][_0x3d04('0x6b')]},'query':{'section':_0x3d04('0x6c'),'role':'agent','online':!![],'raw':!![],'ids':_0x38f679,'customSorting':_0x25fb68}};if(_0x11cba6){_0x1d14a4['query'][_0x3d04('0x6d')]=_0x195a75;}_0x1d14a4[_0x3d04('0x52')]=Object['assign'](_0x1d14a4[_0x3d04('0x52')],_0xb45405[_0x3d04('0x52')]);delete _0x1d14a4[_0x3d04('0x52')]['id'];return db['UserProfile']['getResources'](_0x1d14a4);}return db[_0x3d04('0x45')][_0x3d04('0x6e')](_0x1eb874);})[_0x3d04('0x16')](function(_0x227b94){_0x14bd37[_0x3d04('0xc')]=_0x227b94[_0x3d04('0xc')];_0x4f5e59=_0x227b94[_0x3d04('0x5f')];return _0x4f5e59[_0x3d04('0x32')](function(_0x53a3d3){var _0x324a90=_[_0x3d04('0x37')](_0xdf0daf,['id',_0x53a3d3['id']]);if(_0x324a90){var _0x3c428a=rta[_0x3d04('0x6f')](_0x324a90);_[_0x3d04('0x38')](_0x53a3d3,_0x3c428a);}_0x53a3d3[_0x3d04('0x70')]=rta[_0x3d04('0x71')](_0x53a3d3);if(_0x53a3d3[_0x3d04('0x70')]['includes'](_0x3d04('0x53'))){_0x2d79a8['forEach'](function(_0x1c9e2a){if(_0x53a3d3[_0x1c9e2a+_0x3d04('0x48')]){_0x53a3d3[_0x1c9e2a+_0x3d04('0x72')]=_0x3d04('0x53');}});}return _0x53a3d3;});})[_0x3d04('0x16')](function(_0x4ff582){if(!_0x258fb4||_0x25fb68){return _0x4ff582;}return rta[_0x3d04('0x73')](_0x4ff582,_0x258fb4);})[_0x3d04('0x16')](function(_0x1fa199){_0x14bd37[_0x3d04('0x5f')]=_0x1fa199;return _0x14bd37;})[_0x3d04('0x16')](respondWithFilteredResult(_0xd8b46d,_0x1eb874))[_0x3d04('0x19')](handleError(_0xd8b46d,null));};exports[_0x3d04('0x74')]=function(_0x442e80,_0x63b50){var _0x532042={'count':0x0,'rows':[]},_0x5a2135={},_0xfefb8,_0x1fa1f1,_0x5cd82f,_0x4f5206,_0x255016;Promise[_0x3d04('0x55')]()[_0x3d04('0x16')](function(){if(_0x442e80['query'][_0x3d04('0x56')])_0xfefb8=validateChannel(_0x442e80['query']['channel']);var _0x38c35b=_[_0x3d04('0x46')](_0xfefb8)+'Queue';var _0x3b4c52=_[_0x3d04('0x32')](db[_0x38c35b][_0x3d04('0x75')],function(_0x19284d){return{'name':_0x19284d[_0x3d04('0x60')],'type':_0x19284d['type'][_0x3d04('0x76')]};});_0x5a2135=qs['getOptions'](_0x3b4c52,_0x442e80);if(_0x442e80[_0x3d04('0x6a')]['role']==='user'){var _0x1a1b7b={'params':{'id':_0x442e80[_0x3d04('0x6a')]['userProfileId']},'query':{'section':_0xfefb8==='voice'&&_0x442e80[_0x3d04('0x52')][_0x3d04('0x61')]==='outbound'?_0x3d04('0x77'):_[_0x3d04('0x46')](_0xfefb8)+_0x3d04('0x78'),'type':_0x442e80[_0x3d04('0x52')][_0x3d04('0x61')],'nolimit':!![],'sort':_0x3d04('0x12'),'filter':_0x442e80[_0x3d04('0x52')]['filter']}};return db[_0x3d04('0x79')]['getResources'](_0x1a1b7b);}return db[_0x38c35b][_0x3d04('0x6e')](_0x5a2135);})[_0x3d04('0x16')](function(_0x37a40e){_0x532042['count']=_0x37a40e[_0x3d04('0xc')];_0x1fa1f1=_0x37a40e[_0x3d04('0x5f')];return getRealtimeQueues(_0x442e80,_0xfefb8);})[_0x3d04('0x16')](function(_0x17f6fa){_0x4f5206=_0x17f6fa['rows'];return rta[_0x3d04('0x5e')]();})['then'](function(_0x2beee1){_0x5cd82f=_0x2beee1[_0x3d04('0x5f')];if(_0xfefb8!=_0x3d04('0x14'))return;return getRealtimeVoiceQueueChannels();})[_0x3d04('0x16')](function(_0x529c15){_0x255016=_0x529c15?_0x529c15[_0x3d04('0x5f')]:[];return initializeQueues(_0x1fa1f1,_0x4f5206,_0xfefb8,_0x442e80['query'][_0x3d04('0x61')]);})[_0x3d04('0x16')](function(_0x18f89f){var _0x548bab=_0x18f89f[_0x3d04('0x32')](function(_0x17fd0f){if(_0xfefb8===_0x3d04('0x14'))return getVoiceQueueAgents(_0x17fd0f,_0x1fa1f1,_0x5cd82f,_0x255016);else return getQueueAgents(_0x17fd0f,_0x5cd82f,_0xfefb8);});return Promise['all'](_0x548bab);})[_0x3d04('0x16')](function(_0x5362a8){_0x532042[_0x3d04('0x5f')]=_0x5362a8;return _0x532042;})[_0x3d04('0x16')](respondWithFilteredResult(_0x63b50,_0x5a2135))[_0x3d04('0x19')](handleError(_0x63b50,null));};
\ No newline at end of file
index 7add2e8..a819307 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(_0x2edb85,_0x1fa79c){var _0x2b8337=function(_0x25692f){while(--_0x25692f){_0x2edb85['push'](_0x2edb85['shift']());}};_0x2b8337(++_0x1fa79c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1afabf,_0x56fdcc){_0x1afabf=_0x1afabf-0x0;var _0x497ff1=_0xcb91[_0x1afabf];return _0x497ff1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x38c8d8,_0x3360b3){var _0x47c828=function(_0x59abc5){while(--_0x59abc5){_0x38c8d8['push'](_0x38c8d8['shift']());}};_0x47c828(++_0x3360b3);}(_0x70e0,0x17b));var _0x070e=function(_0x4addef,_0x1fbbb9){_0x4addef=_0x4addef-0x0;var _0x49ed7f=_0x70e0[_0x4addef];return _0x49ed7f;};'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 5b8c8d1..1ca3694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c1=['sequelize','exports','STRING','DATE','INTEGER'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x55c1,0x1e5));var _0x155c=function(_0x10ef69,_0x440695){_0x10ef69=_0x10ef69-0x0;var _0x26c2b7=_0x55c1[_0x10ef69];return _0x26c2b7;};'use strict';var Sequelize=require(_0x155c('0x0'));module[_0x155c('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0x155c('0x2')]},'starttime':{'type':Sequelize[_0x155c('0x3')]},'responsetime':{'type':Sequelize[_0x155c('0x3')]},'ringtime':{'type':Sequelize[_0x155c('0x4')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x155c('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x155c('0x2')]}};
\ No newline at end of file
+var _0x869e=['INTEGER','DATE','STRING','sequelize','exports'];(function(_0x387d27,_0x474890){var _0x2e35b3=function(_0x5e1919){while(--_0x5e1919){_0x387d27['push'](_0x387d27['shift']());}};_0x2e35b3(++_0x474890);}(_0x869e,0x15c));var _0xe869=function(_0x38324e,_0x3b394e){_0x38324e=_0x38324e-0x0;var _0x3d5cd3=_0x869e[_0x38324e];return _0x3d5cd3;};'use strict';var Sequelize=require(_0xe869('0x0'));module[_0xe869('0x1')]={'state':{'type':Sequelize[_0xe869('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xe869('0x3')]},'uniqueid':{'type':Sequelize[_0xe869('0x4')]},'starttime':{'type':Sequelize[_0xe869('0x3')]},'responsetime':{'type':Sequelize[_0xe869('0x3')]},'ringtime':{'type':Sequelize[_0xe869('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xe869('0x4')]},'membername':{'type':Sequelize[_0xe869('0x4')]}};
\ No newline at end of file
index c3ae2a3..8622756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f9=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','util','../../config/logger','api'];(function(_0x186273,_0x17c5de){var _0x2edc4f=function(_0x3462ca){while(--_0x3462ca){_0x186273['push'](_0x186273['shift']());}};_0x2edc4f(++_0x17c5de);}(_0x54f9,0x176));var _0x954f=function(_0xe9af67,_0x2f4061){_0xe9af67=_0xe9af67-0x0;var _0x38e106=_0x54f9[_0xe9af67];return _0x38e106;};'use strict';var _=require('lodash');var util=require(_0x954f('0x0'));var logger=require(_0x954f('0x1'))(_0x954f('0x2'));var moment=require(_0x954f('0x3'));var BPromise=require(_0x954f('0x4'));var rp=require(_0x954f('0x5'));var fs=require('fs');var path=require(_0x954f('0x6'));var rimraf=require(_0x954f('0x7'));var config=require(_0x954f('0x8'));var attributes=require(_0x954f('0x9'));module[_0x954f('0xa')]=function(_0x2ead4c,_0x4f9fd5){return _0x2ead4c[_0x954f('0xb')](_0x954f('0xc'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c47=['bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','../../config/logger','api','moment'];(function(_0x13ecca,_0xfd4f01){var _0x17c3b6=function(_0x4f7f15){while(--_0x4f7f15){_0x13ecca['push'](_0x13ecca['shift']());}};_0x17c3b6(++_0xfd4f01);}(_0x1c47,0x96));var _0x71c4=function(_0x5cbf0e,_0x4cd140){_0x5cbf0e=_0x5cbf0e-0x0;var _0x1c76f8=_0x1c47[_0x5cbf0e];return _0x1c76f8;};'use strict';var _=require(_0x71c4('0x0'));var util=require('util');var logger=require(_0x71c4('0x1'))(_0x71c4('0x2'));var moment=require(_0x71c4('0x3'));var BPromise=require(_0x71c4('0x4'));var rp=require(_0x71c4('0x5'));var fs=require('fs');var path=require(_0x71c4('0x6'));var rimraf=require(_0x71c4('0x7'));var config=require(_0x71c4('0x8'));var attributes=require(_0x71c4('0x9'));module[_0x71c4('0xa')]=function(_0x152beb,_0x25c91e){return _0x152beb[_0x71c4('0xb')](_0x71c4('0xc'),attributes,{'tableName':_0x71c4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2fc2aa6..8301c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ec6=['error','code','message','result','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','then','stringify','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x362882,_0x3012cf){var _0x4632c9=function(_0x1cdbb8){while(--_0x1cdbb8){_0x362882['push'](_0x362882['shift']());}};_0x4632c9(++_0x3012cf);}(_0x7ec6,0xf7));var _0x67ec=function(_0x22d300,_0x23c213){_0x22d300=_0x22d300-0x0;var _0x4d2a92=_0x7ec6[_0x22d300];return _0x4d2a92;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x67ec('0x0'));var rs=require(_0x67ec('0x1'));var fs=require('fs');var Redis=require(_0x67ec('0x2'));var db=require(_0x67ec('0x3'))['db'];var utils=require(_0x67ec('0x4'));var logger=require(_0x67ec('0x5'))('rpc');var config=require(_0x67ec('0x6'));var jayson=require(_0x67ec('0x7'));var client=jayson['client'][_0x67ec('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xce0401,_0x236311,_0x5d8bd5){return new BPromise(function(_0x14da3f,_0x43c015){return client['request'](_0xce0401,_0x5d8bd5)['then'](function(_0x3f7407){logger[_0x67ec('0x9')](_0x67ec('0xa'),_0x236311,_0x67ec('0xb'));logger[_0x67ec('0xc')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x236311,_0x67ec('0xb'),JSON['stringify'](_0x3f7407));if(_0x3f7407[_0x67ec('0xd')]){if(_0x3f7407[_0x67ec('0xd')][_0x67ec('0xe')]===0x1f4){logger[_0x67ec('0xd')](_0x67ec('0xa'),_0x236311,_0x3f7407[_0x67ec('0xd')]['message']);return _0x43c015(_0x3f7407['error'][_0x67ec('0xf')]);}logger[_0x67ec('0xd')](_0x67ec('0xa'),_0x236311,_0x3f7407[_0x67ec('0xd')]['message']);return _0x14da3f(_0x3f7407[_0x67ec('0xd')][_0x67ec('0xf')]);}else{logger[_0x67ec('0x9')](_0x67ec('0xa'),_0x236311,_0x67ec('0xb'));_0x14da3f(_0x3f7407[_0x67ec('0x10')][_0x67ec('0xf')]);}})['catch'](function(_0x9923c2){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x236311,_0x9923c2);_0x43c015(_0x9923c2);});});}exports[_0x67ec('0x11')]=function(_0x3c9461){var _0x38d4de=this;return new Promise(function(_0x3d4e3a,_0x22f1f5){return db[_0x67ec('0x12')][_0x67ec('0x13')](_0x3c9461[_0x67ec('0x14')],{'raw':_0x3c9461[_0x67ec('0x15')]?_0x3c9461[_0x67ec('0x15')][_0x67ec('0x16')]===undefined?!![]:![]:!![]})[_0x67ec('0x17')](function(_0x41efd5){logger['info']('CreateReportAgentPreview',_0x3c9461);logger[_0x67ec('0xc')](_0x67ec('0x11'),_0x3c9461,JSON[_0x67ec('0x18')](_0x41efd5));_0x3d4e3a(_0x41efd5);})[_0x67ec('0x19')](function(_0x13122f){logger[_0x67ec('0xd')](_0x67ec('0x11'),_0x13122f[_0x67ec('0xf')],_0x3c9461);_0x22f1f5(_0x38d4de[_0x67ec('0xd')](0x1f4,_0x13122f[_0x67ec('0xf')]));});});};
\ No newline at end of file
+var _0x5373=['ReportAgentPreview','create','options','raw','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify','error','code','ReportAgentPreview,\x20%s,\x20%s','message','result','catch','CreateReportAgentPreview'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5373,0x1cf));var _0x3537=function(_0x1dddaa,_0x573dad){_0x1dddaa=_0x1dddaa-0x0;var _0x399ecb=_0x5373[_0x1dddaa];return _0x399ecb;};'use strict';var _=require(_0x3537('0x0'));var util=require(_0x3537('0x1'));var moment=require('moment');var BPromise=require(_0x3537('0x2'));var rs=require(_0x3537('0x3'));var fs=require('fs');var Redis=require(_0x3537('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3537('0x5'));var logger=require(_0x3537('0x6'))(_0x3537('0x7'));var config=require(_0x3537('0x8'));var jayson=require(_0x3537('0x9'));var client=jayson[_0x3537('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18a43f,_0x423f98,_0x205f6e){return new BPromise(function(_0x79034,_0x56f107){return client['request'](_0x18a43f,_0x205f6e)[_0x3537('0xb')](function(_0x3e3e68){logger[_0x3537('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x423f98,_0x3537('0xd'));logger[_0x3537('0xe')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x423f98,_0x3537('0xd'),JSON[_0x3537('0xf')](_0x3e3e68));if(_0x3e3e68[_0x3537('0x10')]){if(_0x3e3e68[_0x3537('0x10')][_0x3537('0x11')]===0x1f4){logger[_0x3537('0x10')](_0x3537('0x12'),_0x423f98,_0x3e3e68[_0x3537('0x10')][_0x3537('0x13')]);return _0x56f107(_0x3e3e68[_0x3537('0x10')][_0x3537('0x13')]);}logger[_0x3537('0x10')](_0x3537('0x12'),_0x423f98,_0x3e3e68[_0x3537('0x10')][_0x3537('0x13')]);return _0x79034(_0x3e3e68[_0x3537('0x10')][_0x3537('0x13')]);}else{logger[_0x3537('0xc')](_0x3537('0x12'),_0x423f98,_0x3537('0xd'));_0x79034(_0x3e3e68[_0x3537('0x14')][_0x3537('0x13')]);}})[_0x3537('0x15')](function(_0x2bebd7){logger[_0x3537('0x10')](_0x3537('0x12'),_0x423f98,_0x2bebd7);_0x56f107(_0x2bebd7);});});}exports[_0x3537('0x16')]=function(_0x399eb7){var _0x49693c=this;return new Promise(function(_0x439e57,_0xf7dc41){return db[_0x3537('0x17')][_0x3537('0x18')](_0x399eb7['body'],{'raw':_0x399eb7['options']?_0x399eb7[_0x3537('0x19')][_0x3537('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4c91){logger['info'](_0x3537('0x16'),_0x399eb7);logger[_0x3537('0xe')]('CreateReportAgentPreview',_0x399eb7,JSON[_0x3537('0xf')](_0x2d4c91));_0x439e57(_0x2d4c91);})[_0x3537('0x15')](function(_0x39ac49){logger[_0x3537('0x10')]('CreateReportAgentPreview',_0x39ac49[_0x3537('0x13')],_0x399eb7);_0xf7dc41(_0x49693c['error'](0x1f4,_0x39ac49['message']));});});};
\ No newline at end of file
index a66ffd8..d9f722d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ff=['/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','agentCapacity','/telephones','/trunks','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','exports','multer','util','path','express','../../components/auth/service','get','/voice/channels','isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels'];(function(_0x3a5141,_0x596d95){var _0xf91431=function(_0x4f3cda){while(--_0x4f3cda){_0x3a5141['push'](_0x3a5141['shift']());}};_0xf91431(++_0x596d95);}(_0xa8ff,0x176));var _0xfa8f=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xa8ff[_0x40220a];return _0x3903cc;};'use strict';var multer=require(_0xfa8f('0x0'));var util=require(_0xfa8f('0x1'));var path=require(_0xfa8f('0x2'));var express=require(_0xfa8f('0x3'));var router=express['Router']();var auth=require(_0xfa8f('0x4'));var controller=require('./rpc.controller');router[_0xfa8f('0x5')](_0xfa8f('0x6'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x8')]);router[_0xfa8f('0x5')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x9')]);router[_0xfa8f('0x5')](_0xfa8f('0xa'),auth[_0xfa8f('0x7')](),controller['voiceChannelStopMixMonitor']);router[_0xfa8f('0x5')](_0xfa8f('0xb'),auth['isAuthenticated'](),controller[_0xfa8f('0xc')]);router[_0xfa8f('0x5')]('/chat/queues',auth[_0xfa8f('0x7')](),controller['chatQueues']);router['get'](_0xfa8f('0xd'),auth['isAuthenticated'](),controller['mailQueues']);router[_0xfa8f('0x5')](_0xfa8f('0xe'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0xf')]);router[_0xfa8f('0x5')](_0xfa8f('0x10'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x11')]);router['get'](_0xfa8f('0x12'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x13')]);router['get'](_0xfa8f('0x14'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x15')]);router[_0xfa8f('0x5')](_0xfa8f('0x16'),auth[_0xfa8f('0x7')](),controller['faxQueues']);router[_0xfa8f('0x5')](_0xfa8f('0x17'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x18')]);router['get'](_0xfa8f('0x19'),auth[_0xfa8f('0x7')](),controller['voiceQueuesChannels']);router['get'](_0xfa8f('0x1a'),auth[_0xfa8f('0x7')](),controller['voiceQueuesChannel']);router[_0xfa8f('0x5')](_0xfa8f('0x1b'),auth['isAuthenticated'](),controller[_0xfa8f('0x1c')]);router[_0xfa8f('0x5')](_0xfa8f('0x1d'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x1e')]);router['get'](_0xfa8f('0x1f'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x20')]);router[_0xfa8f('0x21')]('/voice/queues/:id',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x22')]);router[_0xfa8f('0x5')](_0xfa8f('0x23'),auth['isAuthenticated'](),controller[_0xfa8f('0x24')]);router[_0xfa8f('0x5')](_0xfa8f('0x25'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x26')]);router[_0xfa8f('0x5')](_0xfa8f('0x27'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x28')]);router[_0xfa8f('0x21')]('/agents/:id/capacity',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x29')]);router[_0xfa8f('0x5')](_0xfa8f('0x2a'),auth[_0xfa8f('0x7')](),controller['telephones']);router[_0xfa8f('0x5')](_0xfa8f('0x2b'),auth[_0xfa8f('0x7')](),controller['trunks']);router[_0xfa8f('0x5')]('/campaigns',auth['isAuthenticated'](),controller['campaigns']);router['get'](_0xfa8f('0x2c'),auth[_0xfa8f('0x7')](),controller['faxAccounts']);router[_0xfa8f('0x5')](_0xfa8f('0x2d'),auth[_0xfa8f('0x7')](),controller['chatQueuesWaitingInteractions']);router[_0xfa8f('0x5')](_0xfa8f('0x2e'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x2f')]);router['get'](_0xfa8f('0x30'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x31')]);router[_0xfa8f('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0xfa8f('0x7')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xfa8f('0x5')]('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xfa8f('0x32')]);router['get'](_0xfa8f('0x33'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x34')]);router[_0xfa8f('0x5')](_0xfa8f('0x35'),auth[_0xfa8f('0x7')](),controller['faxQueuesWaitingInteractions']);router[_0xfa8f('0x36')](_0xfa8f('0x37'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x39')));router['get'](_0xfa8f('0x3a'),auth['isAuthenticated'](),controller[_0xfa8f('0x3b')]);router['post'](_0xfa8f('0x3c'),auth[_0xfa8f('0x7')](),controller['queueNotify'](_0xfa8f('0x3d')));router[_0xfa8f('0x5')]('/chat/queues/:id',auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x3e')]);router[_0xfa8f('0x36')](_0xfa8f('0x3f'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x38')]('fax'));router[_0xfa8f('0x5')](_0xfa8f('0x40'),auth['isAuthenticated'](),controller[_0xfa8f('0x41')]);router['post'](_0xfa8f('0x42'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x43')));router['get'](_0xfa8f('0x44'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x45')]);router[_0xfa8f('0x36')](_0xfa8f('0x46'),auth['isAuthenticated'](),controller[_0xfa8f('0x38')](_0xfa8f('0x47')));router[_0xfa8f('0x36')](_0xfa8f('0x48'),auth[_0xfa8f('0x7')](),controller['queueNotify'](_0xfa8f('0x49')));router['get'](_0xfa8f('0x4a'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x4b')]);router[_0xfa8f('0x5')](_0xfa8f('0x4c'),auth[_0xfa8f('0x7')](),controller[_0xfa8f('0x4d')]);router['post'](_0xfa8f('0x4e'),auth[_0xfa8f('0x7')](),controller['agentNotify']);module[_0xfa8f('0x4f')]=router;
\ No newline at end of file
+var _0x2d00=['/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','fax','showFaxQueues','/openchannel/queues/:id/notify','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/agents/:id/notify','exports','util','path','express','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/accounts','mailAccounts','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/campaigns','campaigns','/fax/accounts','faxAccounts','chatQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions'];(function(_0x47ca09,_0x4e5340){var _0x2fcfb8=function(_0xe6b8f3){while(--_0xe6b8f3){_0x47ca09['push'](_0x47ca09['shift']());}};_0x2fcfb8(++_0x4e5340);}(_0x2d00,0x139));var _0x02d0=function(_0x5b1040,_0x43b708){_0x5b1040=_0x5b1040-0x0;var _0x50ec2d=_0x2d00[_0x5b1040];return _0x50ec2d;};'use strict';var multer=require('multer');var util=require(_0x02d0('0x0'));var path=require(_0x02d0('0x1'));var express=require(_0x02d0('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./rpc.controller');router[_0x02d0('0x3')](_0x02d0('0x4'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x6')]);router[_0x02d0('0x3')](_0x02d0('0x7'),auth[_0x02d0('0x5')](),controller['voiceChannelMixMonitor']);router['get'](_0x02d0('0x8'),auth['isAuthenticated'](),controller[_0x02d0('0x9')]);router[_0x02d0('0x3')](_0x02d0('0xa'),auth[_0x02d0('0x5')](),controller[_0x02d0('0xb')]);router[_0x02d0('0x3')]('/chat/queues',auth['isAuthenticated'](),controller[_0x02d0('0xc')]);router[_0x02d0('0x3')]('/mail/queues',auth[_0x02d0('0x5')](),controller['mailQueues']);router[_0x02d0('0x3')](_0x02d0('0xd'),auth[_0x02d0('0x5')](),controller[_0x02d0('0xe')]);router['get']('/openchannel/queues',auth[_0x02d0('0x5')](),controller[_0x02d0('0xf')]);router[_0x02d0('0x3')](_0x02d0('0x10'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x11')]);router['get'](_0x02d0('0x12'),auth['isAuthenticated'](),controller['whatsappQueues']);router[_0x02d0('0x3')](_0x02d0('0x13'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x14')]);router['get'](_0x02d0('0x15'),auth[_0x02d0('0x5')](),controller['voiceQueuesPreview']);router[_0x02d0('0x3')]('/voice/queues/channels',auth[_0x02d0('0x5')](),controller[_0x02d0('0x16')]);router[_0x02d0('0x3')](_0x02d0('0x17'),auth[_0x02d0('0x5')](),controller['voiceQueuesChannel']);router[_0x02d0('0x3')](_0x02d0('0x18'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x19')]);router['get']('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x02d0('0x5')](),controller['voiceQueuesChannelRedirect']);router['get'](_0x02d0('0x1a'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x1b')]);router[_0x02d0('0x1c')](_0x02d0('0x1a'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x1d')]);router[_0x02d0('0x3')](_0x02d0('0x1e'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x1f')]);router[_0x02d0('0x3')](_0x02d0('0x20'),auth['isAuthenticated'](),controller[_0x02d0('0x21')]);router[_0x02d0('0x3')](_0x02d0('0x22'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x23')]);router[_0x02d0('0x1c')](_0x02d0('0x24'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x25')]);router[_0x02d0('0x3')](_0x02d0('0x26'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x27')]);router[_0x02d0('0x3')]('/trunks',auth[_0x02d0('0x5')](),controller['trunks']);router[_0x02d0('0x3')](_0x02d0('0x28'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x29')]);router[_0x02d0('0x3')](_0x02d0('0x2a'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x2b')]);router[_0x02d0('0x3')]('/chat/queues/waitinginteractions',auth[_0x02d0('0x5')](),controller[_0x02d0('0x2c')]);router[_0x02d0('0x3')]('/mail/queues/waitinginteractions',auth[_0x02d0('0x5')](),controller['mailQueuesWaitingInteractions']);router[_0x02d0('0x3')](_0x02d0('0x2d'),auth['isAuthenticated'](),controller[_0x02d0('0x2e')]);router['get'](_0x02d0('0x2f'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x30')]);router[_0x02d0('0x3')](_0x02d0('0x31'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x32')]);router[_0x02d0('0x3')]('/whatsapp/queues/waitinginteractions',auth[_0x02d0('0x5')](),controller[_0x02d0('0x33')]);router[_0x02d0('0x3')](_0x02d0('0x34'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x35')]);router[_0x02d0('0x36')](_0x02d0('0x37'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')]('mail'));router[_0x02d0('0x3')](_0x02d0('0x39'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x3a')]);router[_0x02d0('0x36')](_0x02d0('0x3b'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')](_0x02d0('0x3c')));router[_0x02d0('0x3')]('/chat/queues/:id',auth[_0x02d0('0x5')](),controller[_0x02d0('0x3d')]);router[_0x02d0('0x36')]('/fax/queues/:id/notify',auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')](_0x02d0('0x3e')));router[_0x02d0('0x3')]('/fax/queues/:id',auth[_0x02d0('0x5')](),controller[_0x02d0('0x3f')]);router[_0x02d0('0x36')](_0x02d0('0x40'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')]('openchannel'));router[_0x02d0('0x3')]('/openchannel/queues/:id',auth[_0x02d0('0x5')](),controller[_0x02d0('0x41')]);router[_0x02d0('0x36')](_0x02d0('0x42'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')](_0x02d0('0x43')));router['post'](_0x02d0('0x44'),auth[_0x02d0('0x5')](),controller[_0x02d0('0x38')]('whatsapp'));router[_0x02d0('0x3')](_0x02d0('0x45'),auth['isAuthenticated'](),controller[_0x02d0('0x46')]);router[_0x02d0('0x3')]('/whatsapp/queues/:id',auth[_0x02d0('0x5')](),controller['showWhatsappQueues']);router[_0x02d0('0x36')](_0x02d0('0x47'),auth[_0x02d0('0x5')](),controller['agentNotify']);module[_0x02d0('0x48')]=router;
\ No newline at end of file
index cf1ddcb..cf98cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['InteractionId','TransferReport','agentTransferTimeout','bluebird','moment','lodash','../../config/logger','api','jayson/promise','client','http','request','then','error','code','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','VoiceChannelStopMixMonitor','params','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','MemberReport','interface','SIP/%s','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showFaxQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','Message','Interaction','update','queue','MessageId','From','QueueId','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','findOne','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found'];(function(_0x366ebd,_0x378e4f){var _0x140bda=function(_0xb8d1b){while(--_0xb8d1b){_0x366ebd['push'](_0x366ebd['shift']());}};_0x140bda(++_0x378e4f);}(_0xb458,0x103));var _0x8b45=function(_0x46ddfa,_0x2583c1){_0x46ddfa=_0x46ddfa-0x0;var _0x21dc9f=_0xb458[_0x46ddfa];return _0x21dc9f;};'use strict';var BPromise=require(_0x8b45('0x0'));var moment=require(_0x8b45('0x1'));var _=require(_0x8b45('0x2'));var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x8b45('0x3'))(_0x8b45('0x4'));var jayson=require(_0x8b45('0x5'));var amiClient=jayson[_0x8b45('0x6')]['http']({'port':0x232a});var mailClient=jayson[_0x8b45('0x6')]['http']({'port':0x232b});var routingClient=jayson['client'][_0x8b45('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){var _0xa54725=_0x3a8ccb?_0x3a8ccb:amiClient;return _0xa54725[_0x8b45('0x8')](_0x12bd05,_0x2daa9a)[_0x8b45('0x9')](function(_0x2bc809){if(_0x2bc809[_0x8b45('0xa')]){if(_0x2bc809['error'][_0x8b45('0xb')]===0x1f4){return _0x4d1718(_0x2bc809[_0x8b45('0xa')]['message']);}return _0x32342f(_0x2bc809['error']['message']);}else{_0x32342f(_0x2bc809['result']);}})[_0x8b45('0xc')](function(_0x285728){_0x4d1718(_0x285728);});});}function respondWithResult(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xc8;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0xd')](_0x52c4db)[_0x8b45('0xe')](_0x30d38c);}return _0x37c220[_0x8b45('0xf')](0x194);};}function handleError(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0x1f4;return function(_0x5f0b20){logger['error'](_0x5f0b20[_0x8b45('0x10')]);if(_0x5f0b20[_0x8b45('0x11')]){delete _0x5f0b20[_0x8b45('0x11')];}_0x32babc[_0x8b45('0xd')](_0x2ad2ae)[_0x8b45('0x12')](_0x5f0b20);};}function findById(_0x27ebb3){return function(_0x902c50){if(!_[_0x8b45('0x13')](_0x27ebb3)&&!_[_0x8b45('0x13')](_0x902c50)&&!_[_0x8b45('0x13')](_0x902c50[_0x8b45('0x14')])){return _[_0x8b45('0x15')](_0x902c50[_0x8b45('0x14')],function(_0x43ffb7){return _0x43ffb7['id']==_0x27ebb3;});}return null;};}exports[_0x8b45('0x16')]=function(_0x31c6b4,_0x23c520){return respondWithRpcPromise(_0x8b45('0x17'),_0x31c6b4['query'])[_0x8b45('0x9')](respondWithResult(_0x23c520,null))[_0x8b45('0xc')](handleError(_0x23c520,null));};exports[_0x8b45('0x18')]=function(_0x46e21a,_0x3e1438){return respondWithRpcPromise(_0x8b45('0x19'),_[_0x8b45('0x1a')](_0x46e21a[_0x8b45('0x1b')],_0x46e21a['params']))['then'](respondWithResult(_0x3e1438,null))[_0x8b45('0xc')](handleError(_0x3e1438,null));};exports['voiceChannelStopMixMonitor']=function(_0x1952fc,_0x3ddb50){return respondWithRpcPromise(_0x8b45('0x1c'),_[_0x8b45('0x1a')](_0x1952fc[_0x8b45('0x1b')],_0x1952fc[_0x8b45('0x1d')]))[_0x8b45('0x9')](respondWithResult(_0x3ddb50,null))['catch'](handleError(_0x3ddb50,null));};exports['voiceQueues']=function(_0x11ffcc,_0x2c2c06){return respondWithRpcPromise('VoiceQueues',_0x11ffcc['query'])[_0x8b45('0x9')](respondWithResult(_0x2c2c06,null))[_0x8b45('0xc')](handleError(_0x2c2c06,null));};exports[_0x8b45('0x1e')]=function(_0x2f37bc,_0x4e84cc){return respondWithRpcPromise(_0x8b45('0x1f'),_0x2f37bc[_0x8b45('0x1b')])[_0x8b45('0x9')](findById(_0x2f37bc[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x4e84cc,null))[_0x8b45('0xc')](handleError(_0x4e84cc,null));};exports[_0x8b45('0x20')]=function(_0x234f62,_0x1733a7){return respondWithRpcPromise(_0x8b45('0x21'),_[_0x8b45('0x1a')](_0x234f62[_0x8b45('0x22')],_0x234f62[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1733a7,null))[_0x8b45('0xc')](handleError(_0x1733a7,null));};exports[_0x8b45('0x23')]=function(_0x34eb03,_0x15107a){return respondWithRpcPromise(_0x8b45('0x24'),_[_0x8b45('0x1a')](_0x34eb03[_0x8b45('0x1b')],_0x34eb03[_0x8b45('0x1d')]))['then'](respondWithResult(_0x15107a,null))[_0x8b45('0xc')](handleError(_0x15107a,null));};exports[_0x8b45('0x25')]=function(_0x50302,_0xc2ae94){return respondWithRpcPromise(_0x8b45('0x26'),_0x50302['query'])[_0x8b45('0x9')](respondWithResult(_0xc2ae94,null))['catch'](handleError(_0xc2ae94,null));};exports['voiceQueuesChannel']=function(_0x1f8a11,_0x94e3b6){return respondWithRpcPromise(_0x8b45('0x27'),_[_0x8b45('0x1a')](_0x1f8a11[_0x8b45('0x1b')],_0x1f8a11[_0x8b45('0x1d')]))['then'](respondWithResult(_0x94e3b6,null))[_0x8b45('0xc')](handleError(_0x94e3b6,null));};exports[_0x8b45('0x28')]=function(_0x264be7,_0x1f66a3){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x8b45('0x1a')](_0x264be7[_0x8b45('0x1b')],_0x264be7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x1f66a3,null))[_0x8b45('0xc')](handleError(_0x1f66a3,null));};exports[_0x8b45('0x29')]=function(_0x1571b7,_0x58f32e){return respondWithRpcPromise(_0x8b45('0x2a'),_[_0x8b45('0x1a')](_0x1571b7[_0x8b45('0x1b')],_0x1571b7[_0x8b45('0x1d')]))['then'](respondWithResult(_0x58f32e,null))[_0x8b45('0xc')](handleError(_0x58f32e,null));};exports[_0x8b45('0x2b')]=function(_0x2de02d,_0x15df7c){return respondWithRpcPromise(_0x8b45('0x2c'),_0x2de02d[_0x8b45('0x1b')])['then'](respondWithResult(_0x15df7c,null))['catch'](handleError(_0x15df7c,null));};exports[_0x8b45('0x2d')]=function(_0x179f3b,_0x41d6b5){return respondWithRpcPromise(_0x8b45('0x2e'),_0x179f3b[_0x8b45('0x1b')])['then'](respondWithResult(_0x41d6b5,null))[_0x8b45('0xc')](handleError(_0x41d6b5,null));};exports['agents']=function(_0x67c59a,_0x17e9a8){var _0x5fae26;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')])[_0x8b45('0x9')](function(_0x14d665){_0x5fae26=_0x14d665;return respondWithRpcPromise(_0x8b45('0x2f'),_0x67c59a[_0x8b45('0x1b')],routingClient);})[_0x8b45('0x9')](function(_0x3a97d5){return _['merge']({},_0x3a97d5,_0x5fae26);})[_0x8b45('0x9')](respondWithResult(_0x17e9a8,null))['catch'](handleError(_0x17e9a8,null));};exports[_0x8b45('0x30')]=function(_0x4eda71,_0x412c53){if(_0x4eda71[_0x8b45('0x22')]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')]&&_0x4eda71[_0x8b45('0x32')]&&_0x4eda71[_0x8b45('0x32')]['name']){for(var _0x6fbca4 in _0x4eda71['body']['interaction']){if(_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x8b45('0x33')](_0x6fbca4)){db['MemberReport'][_0x8b45('0x34')]({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user'][_0x8b45('0x11')],'type':_0x8b45('0x35'),'exitAt':null,'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]&&_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]['length']?{'$notIn':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4]}:{'$ne':null}}})[_0x8b45('0x9')](function(_0xee45ac){var _0x1a13dd=moment()[_0x8b45('0x36')](_0x8b45('0x37'));for(var _0x3de3c2=0x0,_0x37b94a=_0xee45ac[_0x8b45('0x38')];_0x3de3c2<_0x37b94a;_0x3de3c2+=0x1){_0xee45ac[_0x3de3c2][_0x8b45('0x39')]({'exitAt':_0x1a13dd});}});for(var _0x3385db=0x0;_0x3385db<_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x8b45('0x38')];_0x3385db+=0x1){db[_0x8b45('0x3a')]['findOrCreate']({'where':{'channel':_0x6fbca4,'membername':_0x4eda71['user']['name'],'type':_0x8b45('0x35'),'uniqueid':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x31')][_0x6fbca4][_0x3385db],'exitAt':null},'defaults':{'channel':_0x6fbca4,'membername':_0x4eda71[_0x8b45('0x32')][_0x8b45('0x11')],'interface':_[_0x8b45('0x13')](_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')])?util['format'](_0x8b45('0x3c'),_0x4eda71['user'][_0x8b45('0x11')]):_0x4eda71[_0x8b45('0x32')][_0x8b45('0x3b')],'type':_0x8b45('0x35'),'enterAt':moment()['format'](_0x8b45('0x37')),'role':_0x8b45('0x3d'),'internal':_0x4eda71['user'][_0x8b45('0x3e')],'uniqueid':_0x4eda71[_0x8b45('0x22')]['interaction'][_0x6fbca4][_0x3385db]}});}}}}return respondWithRpcPromise(_0x8b45('0x3f'),{'id':_0x4eda71[_0x8b45('0x1d')]['id'],'capacity':_0x4eda71[_0x8b45('0x22')][_0x8b45('0x40')]},routingClient)[_0x8b45('0x9')](respondWithResult(_0x412c53,null))[_0x8b45('0xc')](handleError(_0x412c53,null));};exports['telephones']=function(_0x4b8826,_0x3f7a16){return respondWithRpcPromise(_0x8b45('0x41'),_0x4b8826[_0x8b45('0x1b')])['then'](respondWithResult(_0x3f7a16,null))[_0x8b45('0xc')](handleError(_0x3f7a16,null));};exports[_0x8b45('0x42')]=function(_0x20a68b,_0x3e8a7d){return respondWithRpcPromise(_0x8b45('0x43'),_0x20a68b['query'])[_0x8b45('0x9')](respondWithResult(_0x3e8a7d,null))[_0x8b45('0xc')](handleError(_0x3e8a7d,null));};exports['campaigns']=function(_0x422da0,_0x4c3f38){return respondWithRpcPromise(_0x8b45('0x44'),_0x422da0[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x4c3f38,null))[_0x8b45('0xc')](handleError(_0x4c3f38,null));};exports['chatQueues']=function(_0xb9f390,_0x423231){return respondWithRpcPromise(_0x8b45('0x45'),_0xb9f390[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x423231,null))[_0x8b45('0xc')](handleError(_0x423231,null));};exports[_0x8b45('0x46')]=function(_0x2a35c1,_0x446fe5){return respondWithRpcPromise(_0x8b45('0x45'),_0x2a35c1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x2a35c1[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x446fe5,null))[_0x8b45('0xc')](handleError(_0x446fe5,null));};exports['mailQueues']=function(_0x1744f8,_0x1477bd){return respondWithRpcPromise(_0x8b45('0x47'),_0x1744f8['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1477bd,null))[_0x8b45('0xc')](handleError(_0x1477bd,null));};exports[_0x8b45('0x48')]=function(_0x9eacc1,_0x5795ca){return respondWithRpcPromise(_0x8b45('0x47'),_0x9eacc1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x9eacc1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x5795ca,null))[_0x8b45('0xc')](handleError(_0x5795ca,null));};exports[_0x8b45('0x49')]=function(_0x417778,_0x27503f){return respondWithRpcPromise(_0x8b45('0x4a'),_0x417778['query'],mailClient)[_0x8b45('0x9')](respondWithResult(_0x27503f,null))['catch'](handleError(_0x27503f,null));};exports[_0x8b45('0x4b')]=function(_0x2f7ab0,_0x19152b){return respondWithRpcPromise(_0x8b45('0x4c'),_0x2f7ab0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x19152b,null))['catch'](handleError(_0x19152b,null));};exports['showOpenchannelQueues']=function(_0x5ace1,_0x2224b7){return respondWithRpcPromise('OpenchannelQueues',_0x5ace1[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x5ace1[_0x8b45('0x1d')]['id']))['then'](respondWithResult(_0x2224b7,null))['catch'](handleError(_0x2224b7,null));};exports[_0x8b45('0x4d')]=function(_0x8e5a41,_0x5abc79){return respondWithRpcPromise(_0x8b45('0x4e'),_0x8e5a41['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x5abc79,null))['catch'](handleError(_0x5abc79,null));};exports['showSmsQueues']=function(_0x28e57a,_0x7f5a4e){return respondWithRpcPromise('SmsQueues',_0x28e57a[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x28e57a[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x7f5a4e,null))[_0x8b45('0xc')](handleError(_0x7f5a4e,null));};exports['whatsappQueues']=function(_0x37f580,_0x3b3d21){return respondWithRpcPromise(_0x8b45('0x4f'),_0x37f580['query'],routingClient)['then'](respondWithResult(_0x3b3d21,null))[_0x8b45('0xc')](handleError(_0x3b3d21,null));};exports['showWhatsappQueues']=function(_0x43f031,_0x5a4834){return respondWithRpcPromise('WhatsappQueues',_0x43f031['query'],routingClient)[_0x8b45('0x9')](findById(_0x43f031['params']['id']))[_0x8b45('0x9')](respondWithResult(_0x5a4834,null))[_0x8b45('0xc')](handleError(_0x5a4834,null));};exports['faxQueues']=function(_0x3db84e,_0x1b3890){return respondWithRpcPromise('FaxQueues',_0x3db84e[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1b3890,null))[_0x8b45('0xc')](handleError(_0x1b3890,null));};exports[_0x8b45('0x50')]=function(_0x15cf9d,_0x877766){return respondWithRpcPromise(_0x8b45('0x51'),_0x15cf9d[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](findById(_0x15cf9d[_0x8b45('0x1d')]['id']))[_0x8b45('0x9')](respondWithResult(_0x877766,null))[_0x8b45('0xc')](handleError(_0x877766,null));};exports['faxAccounts']=function(_0x225180,_0x403ee2){return respondWithRpcPromise(_0x8b45('0x52'),_0x225180[_0x8b45('0x1b')])[_0x8b45('0x9')](respondWithResult(_0x403ee2,null))[_0x8b45('0xc')](handleError(_0x403ee2,null));};exports[_0x8b45('0x53')]=function(_0x3d3216,_0x243632){return respondWithRpcPromise(_0x8b45('0x54'),_0x3d3216[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x243632,null))[_0x8b45('0xc')](handleError(_0x243632,null));};exports[_0x8b45('0x55')]=function(_0x562c5f,_0x53143d){return respondWithRpcPromise(_0x8b45('0x56'),_0x562c5f[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x53143d,null))[_0x8b45('0xc')](handleError(_0x53143d,null));};exports[_0x8b45('0x57')]=function(_0xd88538,_0x1ebbca){return respondWithRpcPromise(_0x8b45('0x58'),_0xd88538['query'],routingClient)[_0x8b45('0x9')](respondWithResult(_0x1ebbca,null))[_0x8b45('0xc')](handleError(_0x1ebbca,null));};exports[_0x8b45('0x59')]=function(_0xa22bd0,_0xa44ba5){return respondWithRpcPromise(_0x8b45('0x58'),_0xa22bd0[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](function(_0x2a6fee){if(_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')]!==undefined){var _0x5e54c6=_(_0x2a6fee['rows'])[_0x8b45('0x5b')]([_0xa22bd0[_0x8b45('0x1b')][_0x8b45('0x5a')],_0xa22bd0[_0x8b45('0x1d')]['id']])[_0x8b45('0x5c')](_0x8b45('0x5d'))[_0x8b45('0x5e')]()[_0x8b45('0x5f')]();return _0x2a6fee[_0x8b45('0x14')]['filter'](function(_0x55acf0){return _0x5e54c6[_0x8b45('0x60')](_0x55acf0[_0x8b45('0x5d')])>-0x1;});}else{return _0x2a6fee[_0x8b45('0x14')][_0x8b45('0x5b')](function(_0x55bafb){return _0x55bafb[_0x8b45('0x5d')]===parseInt(_0xa22bd0[_0x8b45('0x1d')]['id']);});}})[_0x8b45('0x9')](respondWithResult(_0xa44ba5,null))[_0x8b45('0xc')](handleError(_0xa44ba5,null));};exports[_0x8b45('0x61')]=function(_0x17588b,_0x4ed113){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x17588b[_0x8b45('0x1b')],routingClient)['then'](respondWithResult(_0x4ed113,null))['catch'](handleError(_0x4ed113,null));};exports['whatsappQueuesWaitingInteractions']=function(_0xf602c7,_0x170b95){return respondWithRpcPromise(_0x8b45('0x62'),_0xf602c7[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0x170b95,null))[_0x8b45('0xc')](handleError(_0x170b95,null));};exports[_0x8b45('0x63')]=function(_0xc9be77,_0xc89fc6){return respondWithRpcPromise(_0x8b45('0x64'),_0xc9be77[_0x8b45('0x1b')],routingClient)[_0x8b45('0x9')](respondWithResult(_0xc89fc6,null))[_0x8b45('0xc')](handleError(_0xc89fc6,null));};exports[_0x8b45('0x65')]=function(_0x42b192){return function(_0x4a42e1,_0x29bfcc){var _0x91270d,_0x217798;var _0x19a135=_[_0x8b45('0x66')](_0x42b192);var _0x1446b1=_0x42b192===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x19a135+_0x8b45('0x6a')]['findOne']({'raw':!![],'where':{'id':_0x4a42e1[_0x8b45('0x1d')]['id']}})[_0x8b45('0x9')](function(_0x408fff){if(_[_0x8b45('0x13')](_0x408fff)){throw new Error(_0x19a135+'\x20Queue\x20not\x20found');}_0x91270d=_0x408fff;return db[_0x19a135+_0x8b45('0x6b')]['findOne']({'where':{'id':_0x4a42e1[_0x8b45('0x22')]['messageId']},'include':[{'model':db[_0x19a135+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x19a135+_0x1446b1],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x16bb83){if(_[_0x8b45('0x13')](_0x16bb83)){throw new Error(_0x19a135+'\x20Message\x20not\x20found');}_0x217798=_0x16bb83;return _0x16bb83[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x17364d={'uniqueid':_0x42b192+'.'+_0x217798['id']+'.'+_0x217798[_0x8b45('0x6c')]['id'],'FromUserId':_0x4a42e1['user']['id'],'type':_0x8b45('0x6e')};_0x17364d[_0x19a135+_0x8b45('0x6f')]=_0x217798['id'];_0x17364d[_0x19a135+'InteractionId']=_0x217798['Interaction']['id'];_0x17364d[_0x8b45('0x70')+_0x19a135+_0x1446b1+'Id']=_0x217798[_0x8b45('0x69')]['id'];_0x17364d['To'+_0x19a135+_0x8b45('0x71')]=_0x91270d['id'];return db[_0x19a135+'TransferReport'][_0x8b45('0x72')](_0x17364d);})['then'](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x42b192,'interaction':_0x217798[_0x8b45('0x6c')],'message':_0x217798,'account':_0x217798['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x91270d[_0x8b45('0x11')]+','+(_0x217798[_0x8b45('0x69')][_0x8b45('0x74')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})['then'](respondWithResult(_0x29bfcc,null))[_0x8b45('0xc')](handleError(_0x29bfcc,null));};};exports[_0x8b45('0x76')]=function(_0x376416,_0x1d475c){var _0x2680d5,_0x1abe69;if(_['isNil'](_0x376416[_0x8b45('0x22')][_0x8b45('0x77')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x10a91a=_0x376416[_0x8b45('0x22')]['channel'];var _0x4837af=_['capitalize'](_0x10a91a);var _0x186aa2=_0x10a91a===_0x8b45('0x67')?_0x8b45('0x68'):_0x8b45('0x69');return db[_0x8b45('0x78')][_0x8b45('0x79')]({'raw':!![],'where':{'id':_0x376416[_0x8b45('0x1d')]['id'],'role':'agent'}})[_0x8b45('0x9')](function(_0x3d321f){if(_[_0x8b45('0x13')](_0x3d321f)){throw new Error(_0x8b45('0x7a'));}_0x2680d5=_0x3d321f;return db[_0x4837af+_0x8b45('0x6b')][_0x8b45('0x79')]({'where':{'id':_0x376416['body'][_0x8b45('0x7b')]},'include':[{'model':db[_0x4837af+_0x8b45('0x6c')],'as':_0x8b45('0x6c')},{'model':db[_0x4837af+_0x186aa2],'as':_0x8b45('0x69')}]});})[_0x8b45('0x9')](function(_0x4c3bc9){if(_['isNil'](_0x4c3bc9)){throw new Error(_0x4837af+_0x8b45('0x7c'));}_0x1abe69=_0x4c3bc9;return _0x4c3bc9[_0x8b45('0x6d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b45('0x9')](function(){var _0x9993ce={'uniqueid':_0x10a91a+'.'+_0x1abe69['id']+'.'+_0x1abe69[_0x8b45('0x6c')]['id'],'FromUserId':_0x376416['user']['id'],'type':_0x8b45('0x6e'),'ToUserId':_0x2680d5['id']};_0x9993ce[_0x4837af+'MessageId']=_0x1abe69['id'];_0x9993ce[_0x4837af+_0x8b45('0x7d')]=_0x1abe69['Interaction']['id'];_0x9993ce[_0x8b45('0x70')+_0x4837af+_0x186aa2+'Id']=_0x1abe69[_0x8b45('0x69')]['id'];return db[_0x4837af+_0x8b45('0x7e')][_0x8b45('0x72')](_0x9993ce);})[_0x8b45('0x9')](function(){return respondWithRpcPromise(_0x8b45('0x73'),{'channel':_0x10a91a,'interaction':_0x1abe69[_0x8b45('0x6c')],'message':_0x1abe69,'account':_0x1abe69[_0x8b45('0x69')],'applications':[{'id':0x0,'priority':0x1,'app':_0x8b45('0x3d'),'appdata':_0x2680d5[_0x8b45('0x11')]+','+(_0x1abe69[_0x8b45('0x69')][_0x8b45('0x7f')]||0x12c),'interval':_0x8b45('0x75')}]},routingClient);})[_0x8b45('0x9')](respondWithResult(_0x1d475c,null))['catch'](handleError(_0x1d475c,null));};
\ No newline at end of file
+var _0x6f47=['voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','interface','agent','internal','telephones','trunks','Trunks','Campaigns','showChatQueues','ChatQueues','MailQueues','showMailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','QueueId','Start','queueTransferTimeout','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','User','create','moment','lodash','../../mysqldb','api','client','http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel'];(function(_0x4a247d,_0x7438d3){var _0x496ec3=function(_0x39cb1e){while(--_0x39cb1e){_0x4a247d['push'](_0x4a247d['shift']());}};_0x496ec3(++_0x7438d3);}(_0x6f47,0xc7));var _0x76f4=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x6f47[_0x16d10f];return _0x50c823;};'use strict';var BPromise=require('bluebird');var moment=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));var util=require('util');var db=require(_0x76f4('0x2'))['db'];var logger=require('../../config/logger')(_0x76f4('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232a});var mailClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232b});var routingClient=jayson['client'][_0x76f4('0x5')]({'port':0x232c});function respondWithRpcPromise(_0xfc2405,_0x2176a7,_0x497f99){return new BPromise(function(_0x1a3172,_0x25656d){var _0x65d2c7=_0x497f99?_0x497f99:amiClient;return _0x65d2c7[_0x76f4('0x6')](_0xfc2405,_0x2176a7)[_0x76f4('0x7')](function(_0x4c6b5c){if(_0x4c6b5c['error']){if(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0x9')]===0x1f4){return _0x25656d(_0x4c6b5c['error']['message']);}return _0x1a3172(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0xa')]);}else{_0x1a3172(_0x4c6b5c[_0x76f4('0xb')]);}})[_0x76f4('0xc')](function(_0x1aee7f){_0x25656d(_0x1aee7f);});});}function respondWithResult(_0xafd21e,_0xf7e347){_0xf7e347=_0xf7e347||0xc8;return function(_0x3ec740){if(_0x3ec740){return _0xafd21e[_0x76f4('0xd')](_0xf7e347)['json'](_0x3ec740);}return _0xafd21e[_0x76f4('0xe')](0x194);};}function handleError(_0x30dabf,_0x5da1ff){_0x5da1ff=_0x5da1ff||0x1f4;return function(_0x4b6021){logger['error'](_0x4b6021[_0x76f4('0xf')]);if(_0x4b6021[_0x76f4('0x10')]){delete _0x4b6021[_0x76f4('0x10')];}_0x30dabf[_0x76f4('0xd')](_0x5da1ff)[_0x76f4('0x11')](_0x4b6021);};}function findById(_0x2b5e23){return function(_0x46ba51){if(!_[_0x76f4('0x12')](_0x2b5e23)&&!_[_0x76f4('0x12')](_0x46ba51)&&!_[_0x76f4('0x12')](_0x46ba51[_0x76f4('0x13')])){return _[_0x76f4('0x14')](_0x46ba51[_0x76f4('0x13')],function(_0x38450e){return _0x38450e['id']==_0x2b5e23;});}return null;};}exports[_0x76f4('0x15')]=function(_0x397360,_0xfedbe4){return respondWithRpcPromise(_0x76f4('0x16'),_0x397360[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0xfedbe4,null))[_0x76f4('0xc')](handleError(_0xfedbe4,null));};exports[_0x76f4('0x18')]=function(_0x5bf3d5,_0x262937){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x76f4('0x19')](_0x5bf3d5[_0x76f4('0x17')],_0x5bf3d5[_0x76f4('0x1a')]))['then'](respondWithResult(_0x262937,null))['catch'](handleError(_0x262937,null));};exports['voiceChannelStopMixMonitor']=function(_0x465240,_0x681d67){return respondWithRpcPromise(_0x76f4('0x1b'),_[_0x76f4('0x19')](_0x465240[_0x76f4('0x17')],_0x465240[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x681d67,null))['catch'](handleError(_0x681d67,null));};exports['voiceQueues']=function(_0x3794fa,_0x497913){return respondWithRpcPromise(_0x76f4('0x1c'),_0x3794fa['query'])['then'](respondWithResult(_0x497913,null))['catch'](handleError(_0x497913,null));};exports[_0x76f4('0x1d')]=function(_0x38300d,_0xd368a2){return respondWithRpcPromise(_0x76f4('0x1c'),_0x38300d[_0x76f4('0x17')])[_0x76f4('0x7')](findById(_0x38300d['params']['id']))[_0x76f4('0x7')](respondWithResult(_0xd368a2,null))['catch'](handleError(_0xd368a2,null));};exports['updateVoiceQueue']=function(_0x5b3f07,_0x10ddb4){return respondWithRpcPromise(_0x76f4('0x1e'),_[_0x76f4('0x19')](_0x5b3f07[_0x76f4('0x1f')],_0x5b3f07['params']))[_0x76f4('0x7')](respondWithResult(_0x10ddb4,null))['catch'](handleError(_0x10ddb4,null));};exports[_0x76f4('0x20')]=function(_0x3c7513,_0x43ac4a){return respondWithRpcPromise(_0x76f4('0x21'),_[_0x76f4('0x19')](_0x3c7513['query'],_0x3c7513['params']))[_0x76f4('0x7')](respondWithResult(_0x43ac4a,null))[_0x76f4('0xc')](handleError(_0x43ac4a,null));};exports[_0x76f4('0x22')]=function(_0x281db6,_0x1f2adf){return respondWithRpcPromise(_0x76f4('0x23'),_0x281db6[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x1f2adf,null))[_0x76f4('0xc')](handleError(_0x1f2adf,null));};exports[_0x76f4('0x24')]=function(_0x308af2,_0x2527a6){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x308af2['query'],_0x308af2['params']))[_0x76f4('0x7')](respondWithResult(_0x2527a6,null))[_0x76f4('0xc')](handleError(_0x2527a6,null));};exports[_0x76f4('0x25')]=function(_0x456b1f,_0x26fdd6){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x76f4('0x19')](_0x456b1f[_0x76f4('0x17')],_0x456b1f[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x26fdd6,null))[_0x76f4('0xc')](handleError(_0x26fdd6,null));};exports[_0x76f4('0x26')]=function(_0xb806cc,_0x28d9d6){return respondWithRpcPromise(_0x76f4('0x27'),_[_0x76f4('0x19')](_0xb806cc[_0x76f4('0x17')],_0xb806cc[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x28d9d6,null))[_0x76f4('0xc')](handleError(_0x28d9d6,null));};exports[_0x76f4('0x28')]=function(_0x88506b,_0x3308e3){return respondWithRpcPromise(_0x76f4('0x29'),_0x88506b['query'])[_0x76f4('0x7')](respondWithResult(_0x3308e3,null))[_0x76f4('0xc')](handleError(_0x3308e3,null));};exports[_0x76f4('0x2a')]=function(_0x589637,_0x597e83){return respondWithRpcPromise(_0x76f4('0x2b'),_0x589637['query'])[_0x76f4('0x7')](respondWithResult(_0x597e83,null))['catch'](handleError(_0x597e83,null));};exports[_0x76f4('0x2c')]=function(_0x16f36d,_0x312243){var _0x378675;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')])[_0x76f4('0x7')](function(_0x109ad9){_0x378675=_0x109ad9;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')],routingClient);})['then'](function(_0x5b8d2d){return _[_0x76f4('0x19')]({},_0x5b8d2d,_0x378675);})[_0x76f4('0x7')](respondWithResult(_0x312243,null))[_0x76f4('0xc')](handleError(_0x312243,null));};exports[_0x76f4('0x2e')]=function(_0x2b7dc8,_0x2d6068){if(_0x2b7dc8[_0x76f4('0x1f')]&&_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')]&&_0x2b7dc8['user']&&_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')]){for(var _0x4f0d1a in _0x2b7dc8['body'][_0x76f4('0x2f')]){if(_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x76f4('0x31')](_0x4f0d1a)){db[_0x76f4('0x32')]['findAll']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'exitAt':null,'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]&&_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x76f4('0x34')]?{'$notIn':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]}:{'$ne':null}}})['then'](function(_0x571261){var _0x11ea58=moment()[_0x76f4('0x35')](_0x76f4('0x36'));for(var _0x2bea6d=0x0,_0x36fa03=_0x571261['length'];_0x2bea6d<_0x36fa03;_0x2bea6d+=0x1){_0x571261[_0x2bea6d]['updateAttributes']({'exitAt':_0x11ea58});}});for(var _0x8e5b60=0x0;_0x8e5b60<_0x2b7dc8['body'][_0x76f4('0x2f')][_0x4f0d1a][_0x76f4('0x34')];_0x8e5b60+=0x1){db['MemberReport']['findOrCreate']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'uniqueid':_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x8e5b60],'exitAt':null},'defaults':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'interface':_[_0x76f4('0x12')](_0x2b7dc8['user'][_0x76f4('0x37')])?util[_0x76f4('0x35')]('SIP/%s',_0x2b7dc8['user'][_0x76f4('0x10')]):_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x37')],'type':_0x76f4('0x33'),'enterAt':moment()[_0x76f4('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x76f4('0x38'),'internal':_0x2b7dc8['user'][_0x76f4('0x39')],'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a][_0x8e5b60]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x2b7dc8[_0x76f4('0x1a')]['id'],'capacity':_0x2b7dc8[_0x76f4('0x1f')]['capacity']},routingClient)[_0x76f4('0x7')](respondWithResult(_0x2d6068,null))[_0x76f4('0xc')](handleError(_0x2d6068,null));};exports[_0x76f4('0x3a')]=function(_0x1c658c,_0x40ff20){return respondWithRpcPromise('Telephones',_0x1c658c[_0x76f4('0x17')])['then'](respondWithResult(_0x40ff20,null))[_0x76f4('0xc')](handleError(_0x40ff20,null));};exports[_0x76f4('0x3b')]=function(_0x154ba,_0x5121ec){return respondWithRpcPromise(_0x76f4('0x3c'),_0x154ba[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x5121ec,null))[_0x76f4('0xc')](handleError(_0x5121ec,null));};exports['campaigns']=function(_0x2028e9,_0xf11e07){return respondWithRpcPromise(_0x76f4('0x3d'),_0x2028e9[_0x76f4('0x17')])['then'](respondWithResult(_0xf11e07,null))[_0x76f4('0xc')](handleError(_0xf11e07,null));};exports['chatQueues']=function(_0x129048,_0x190c8d){return respondWithRpcPromise('ChatQueues',_0x129048['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x190c8d,null))[_0x76f4('0xc')](handleError(_0x190c8d,null));};exports[_0x76f4('0x3e')]=function(_0x596b51,_0x27ba06){return respondWithRpcPromise(_0x76f4('0x3f'),_0x596b51[_0x76f4('0x17')],routingClient)['then'](findById(_0x596b51['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x27ba06,null))[_0x76f4('0xc')](handleError(_0x27ba06,null));};exports['mailQueues']=function(_0x490ced,_0x3f1840){return respondWithRpcPromise(_0x76f4('0x40'),_0x490ced[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x3f1840,null))[_0x76f4('0xc')](handleError(_0x3f1840,null));};exports[_0x76f4('0x41')]=function(_0x97be11,_0x36a52a){return respondWithRpcPromise(_0x76f4('0x40'),_0x97be11['query'],routingClient)['then'](findById(_0x97be11['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x36a52a,null))[_0x76f4('0xc')](handleError(_0x36a52a,null));};exports[_0x76f4('0x42')]=function(_0x3b6c16,_0x4c9d64){return respondWithRpcPromise('MailAccounts',_0x3b6c16[_0x76f4('0x17')],mailClient)['then'](respondWithResult(_0x4c9d64,null))[_0x76f4('0xc')](handleError(_0x4c9d64,null));};exports['openchannelQueues']=function(_0x4285dd,_0x25e510){return respondWithRpcPromise(_0x76f4('0x43'),_0x4285dd[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x25e510,null))[_0x76f4('0xc')](handleError(_0x25e510,null));};exports[_0x76f4('0x44')]=function(_0x22a0cc,_0x40c170){return respondWithRpcPromise(_0x76f4('0x43'),_0x22a0cc[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x22a0cc['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x40c170,null))[_0x76f4('0xc')](handleError(_0x40c170,null));};exports[_0x76f4('0x45')]=function(_0x320a87,_0x28cf4c){return respondWithRpcPromise(_0x76f4('0x46'),_0x320a87[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x28cf4c,null))['catch'](handleError(_0x28cf4c,null));};exports['showSmsQueues']=function(_0xa3091a,_0x617924){return respondWithRpcPromise(_0x76f4('0x46'),_0xa3091a['query'],routingClient)[_0x76f4('0x7')](findById(_0xa3091a['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x617924,null))[_0x76f4('0xc')](handleError(_0x617924,null));};exports['whatsappQueues']=function(_0xda0ac2,_0x37b7f7){return respondWithRpcPromise(_0x76f4('0x47'),_0xda0ac2[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x37b7f7,null))[_0x76f4('0xc')](handleError(_0x37b7f7,null));};exports[_0x76f4('0x48')]=function(_0x410d83,_0x1f7257){return respondWithRpcPromise('WhatsappQueues',_0x410d83[_0x76f4('0x17')],routingClient)['then'](findById(_0x410d83[_0x76f4('0x1a')]['id']))[_0x76f4('0x7')](respondWithResult(_0x1f7257,null))[_0x76f4('0xc')](handleError(_0x1f7257,null));};exports[_0x76f4('0x49')]=function(_0xfbb52c,_0x8de630){return respondWithRpcPromise(_0x76f4('0x4a'),_0xfbb52c[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x8de630,null))[_0x76f4('0xc')](handleError(_0x8de630,null));};exports['showFaxQueues']=function(_0x30f3de,_0x6f874d){return respondWithRpcPromise('FaxQueues',_0x30f3de[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x30f3de[_0x76f4('0x1a')]['id']))['then'](respondWithResult(_0x6f874d,null))[_0x76f4('0xc')](handleError(_0x6f874d,null));};exports[_0x76f4('0x4b')]=function(_0x3e829f,_0x52610a){return respondWithRpcPromise(_0x76f4('0x4c'),_0x3e829f[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x52610a,null))[_0x76f4('0xc')](handleError(_0x52610a,null));};exports[_0x76f4('0x4d')]=function(_0x10ee07,_0x19b99c){return respondWithRpcPromise(_0x76f4('0x4e'),_0x10ee07[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x19b99c,null))[_0x76f4('0xc')](handleError(_0x19b99c,null));};exports[_0x76f4('0x4f')]=function(_0x19fdc3,_0x39c9af){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x19fdc3[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x39c9af,null))[_0x76f4('0xc')](handleError(_0x39c9af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x43b44d,_0x1375d5){return respondWithRpcPromise(_0x76f4('0x50'),_0x43b44d[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x1375d5,null))['catch'](handleError(_0x1375d5,null));};exports[_0x76f4('0x51')]=function(_0x4dd41f,_0x2b8467){return respondWithRpcPromise(_0x76f4('0x50'),_0x4dd41f['query'],routingClient)['then'](function(_0x58251e){if(_0x4dd41f[_0x76f4('0x17')][_0x76f4('0x52')]!==undefined){var _0x1e7b6=_(_0x58251e[_0x76f4('0x13')])[_0x76f4('0x53')]([_0x4dd41f[_0x76f4('0x17')]['type'],_0x4dd41f[_0x76f4('0x1a')]['id']])[_0x76f4('0x54')](_0x76f4('0x55'))[_0x76f4('0x56')]()[_0x76f4('0x57')]();return _0x58251e[_0x76f4('0x13')][_0x76f4('0x53')](function(_0x202fc8){return _0x1e7b6['indexOf'](_0x202fc8[_0x76f4('0x55')])>-0x1;});}else{return _0x58251e['rows'][_0x76f4('0x53')](function(_0x30358a){return _0x30358a[_0x76f4('0x55')]===parseInt(_0x4dd41f[_0x76f4('0x1a')]['id']);});}})[_0x76f4('0x7')](respondWithResult(_0x2b8467,null))[_0x76f4('0xc')](handleError(_0x2b8467,null));};exports[_0x76f4('0x58')]=function(_0x2a0491,_0x54729b){return respondWithRpcPromise(_0x76f4('0x59'),_0x2a0491['query'],routingClient)['then'](respondWithResult(_0x54729b,null))['catch'](handleError(_0x54729b,null));};exports[_0x76f4('0x5a')]=function(_0x402209,_0x279040){return respondWithRpcPromise(_0x76f4('0x5b'),_0x402209['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x279040,null))[_0x76f4('0xc')](handleError(_0x279040,null));};exports[_0x76f4('0x5c')]=function(_0x5f5c24,_0x12f16e){return respondWithRpcPromise(_0x76f4('0x5d'),_0x5f5c24[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x12f16e,null))[_0x76f4('0xc')](handleError(_0x12f16e,null));};exports[_0x76f4('0x5e')]=function(_0x3b5e15){return function(_0x4b562c,_0x2e991e){var _0xa49e2a,_0x4c7307;var _0x3bc914=_[_0x76f4('0x5f')](_0x3b5e15);var _0x5e6393=_0x3b5e15===_0x76f4('0x60')?_0x76f4('0x61'):_0x76f4('0x62');return db[_0x3bc914+_0x76f4('0x63')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x4b562c[_0x76f4('0x1a')]['id']}})['then'](function(_0x2dac86){if(_[_0x76f4('0x12')](_0x2dac86)){throw new Error(_0x3bc914+_0x76f4('0x65'));}_0xa49e2a=_0x2dac86;return db[_0x3bc914+_0x76f4('0x66')]['findOne']({'where':{'id':_0x4b562c[_0x76f4('0x1f')]['messageId']},'include':[{'model':db[_0x3bc914+_0x76f4('0x67')],'as':'Interaction'},{'model':db[_0x3bc914+_0x5e6393],'as':_0x76f4('0x62')}]});})[_0x76f4('0x7')](function(_0x59e9ed){if(_['isNil'](_0x59e9ed)){throw new Error(_0x3bc914+_0x76f4('0x68'));}_0x4c7307=_0x59e9ed;return _0x59e9ed[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})[_0x76f4('0x7')](function(){var _0x4a2969={'uniqueid':_0x3b5e15+'.'+_0x4c7307['id']+'.'+_0x4c7307['Interaction']['id'],'FromUserId':_0x4b562c[_0x76f4('0x30')]['id'],'type':_0x76f4('0x6a')};_0x4a2969[_0x3bc914+_0x76f4('0x6b')]=_0x4c7307['id'];_0x4a2969[_0x3bc914+_0x76f4('0x6c')]=_0x4c7307[_0x76f4('0x67')]['id'];_0x4a2969[_0x76f4('0x6d')+_0x3bc914+_0x5e6393+'Id']=_0x4c7307[_0x76f4('0x62')]['id'];_0x4a2969['To'+_0x3bc914+_0x76f4('0x6e')]=_0xa49e2a['id'];return db[_0x3bc914+'TransferReport']['create'](_0x4a2969);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x3b5e15,'interaction':_0x4c7307[_0x76f4('0x67')],'message':_0x4c7307,'account':_0x4c7307['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x6a'),'appdata':_0xa49e2a[_0x76f4('0x10')]+','+(_0x4c7307[_0x76f4('0x62')][_0x76f4('0x70')]||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x2e991e,null))[_0x76f4('0xc')](handleError(_0x2e991e,null));};};exports['agentNotify']=function(_0x13cf2a,_0x316f86){var _0x3e537b,_0x53252e;if(_[_0x76f4('0x12')](_0x13cf2a[_0x76f4('0x1f')][_0x76f4('0x72')])){throw new Error(_0x76f4('0x73'));}var _0x5080a9=_0x13cf2a[_0x76f4('0x1f')]['channel'];var _0xc80d4c=_['capitalize'](_0x5080a9);var _0x238df3=_0x5080a9===_0x76f4('0x60')?_0x76f4('0x61'):'Account';return db[_0x76f4('0x74')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x13cf2a[_0x76f4('0x1a')]['id'],'role':'agent'}})[_0x76f4('0x7')](function(_0x460867){if(_['isNil'](_0x460867)){throw new Error('Agent\x20not\x20found');}_0x3e537b=_0x460867;return db[_0xc80d4c+_0x76f4('0x66')][_0x76f4('0x64')]({'where':{'id':_0x13cf2a['body']['messageId']},'include':[{'model':db[_0xc80d4c+_0x76f4('0x67')],'as':_0x76f4('0x67')},{'model':db[_0xc80d4c+_0x238df3],'as':'Account'}]});})[_0x76f4('0x7')](function(_0x54ae6c){if(_['isNil'](_0x54ae6c)){throw new Error(_0xc80d4c+'\x20Message\x20not\x20found');}_0x53252e=_0x54ae6c;return _0x54ae6c[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x59265d={'uniqueid':_0x5080a9+'.'+_0x53252e['id']+'.'+_0x53252e[_0x76f4('0x67')]['id'],'FromUserId':_0x13cf2a['user']['id'],'type':'queue','ToUserId':_0x3e537b['id']};_0x59265d[_0xc80d4c+_0x76f4('0x6b')]=_0x53252e['id'];_0x59265d[_0xc80d4c+'InteractionId']=_0x53252e[_0x76f4('0x67')]['id'];_0x59265d[_0x76f4('0x6d')+_0xc80d4c+_0x238df3+'Id']=_0x53252e['Account']['id'];return db[_0xc80d4c+'TransferReport'][_0x76f4('0x75')](_0x59265d);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x5080a9,'interaction':_0x53252e['Interaction'],'message':_0x53252e,'account':_0x53252e[_0x76f4('0x62')],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x38'),'appdata':_0x3e537b[_0x76f4('0x10')]+','+(_0x53252e[_0x76f4('0x62')]['agentTransferTimeout']||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x316f86,null))[_0x76f4('0xc')](handleError(_0x316f86,null));};
\ No newline at end of file
index 6bfe7f2..ba31532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf90d=['/:id/run','run','post','create','put','delete','destroy','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show'];(function(_0x48a8eb,_0x3ace17){var _0x490c9c=function(_0x307714){while(--_0x307714){_0x48a8eb['push'](_0x48a8eb['shift']());}};_0x490c9c(++_0x3ace17);}(_0xf90d,0x14b));var _0xdf90=function(_0x51cdf6,_0x3695a3){_0x51cdf6=_0x51cdf6-0x0;var _0x2ec836=_0xf90d[_0x51cdf6];return _0x2ec836;};'use strict';var multer=require('multer');var util=require(_0xdf90('0x0'));var path=require('path');var timeout=require(_0xdf90('0x1'));var express=require('express');var router=express[_0xdf90('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xdf90('0x3'));var interaction=require(_0xdf90('0x4'));var config=require(_0xdf90('0x5'));var controller=require('./schedule.controller');router[_0xdf90('0x6')]('/',auth['isAuthenticated'](),controller[_0xdf90('0x7')]);router[_0xdf90('0x6')](_0xdf90('0x8'),auth[_0xdf90('0x9')](),controller[_0xdf90('0xa')]);router[_0xdf90('0x6')](_0xdf90('0xb'),auth[_0xdf90('0x9')](),controller[_0xdf90('0xc')]);router[_0xdf90('0xd')]('/',auth[_0xdf90('0x9')](),controller[_0xdf90('0xe')]);router[_0xdf90('0xf')]('/:id',auth[_0xdf90('0x9')](),controller['update']);router[_0xdf90('0x10')](_0xdf90('0x8'),auth['isAuthenticated'](),controller[_0xdf90('0x11')]);module[_0xdf90('0x12')]=router;
\ No newline at end of file
+var _0x21bc=['path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','put','update','exports','util'];(function(_0x3bd0a1,_0x388036){var _0x41d689=function(_0x2059a1){while(--_0x2059a1){_0x3bd0a1['push'](_0x3bd0a1['shift']());}};_0x41d689(++_0x388036);}(_0x21bc,0x84));var _0xc21b=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x21bc[_0x3e5086];return _0xfeb102;};'use strict';var multer=require('multer');var util=require(_0xc21b('0x0'));var path=require(_0xc21b('0x1'));var timeout=require(_0xc21b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc21b('0x3'));var auth=require(_0xc21b('0x4'));var interaction=require(_0xc21b('0x5'));var config=require(_0xc21b('0x6'));var controller=require('./schedule.controller');router[_0xc21b('0x7')]('/',auth[_0xc21b('0x8')](),controller[_0xc21b('0x9')]);router[_0xc21b('0x7')](_0xc21b('0xa'),auth[_0xc21b('0x8')](),controller[_0xc21b('0xb')]);router[_0xc21b('0x7')](_0xc21b('0xc'),auth['isAuthenticated'](),controller[_0xc21b('0xd')]);router[_0xc21b('0xe')]('/',auth['isAuthenticated'](),controller[_0xc21b('0xf')]);router[_0xc21b('0x10')]('/:id',auth[_0xc21b('0x8')](),controller[_0xc21b('0x11')]);router['delete'](_0xc21b('0xa'),auth[_0xc21b('0x8')](),controller['destroy']);module[_0xc21b('0x12')]=router;
\ No newline at end of file
index 72a4f26..79aa08b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbff=['quarters','months','days','hours','minutes','csv','xlsx','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','years'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xdbff,0xf7));var _0xfdbf=function(_0x3430aa,_0x57cd92){_0x3430aa=_0x3430aa-0x0;var _0x2ac5c=_0xdbff[_0x3430aa];return _0x2ac5c;};'use strict';var Sequelize=require(_0xfdbf('0x0'));module[_0xfdbf('0x1')]={'name':{'type':Sequelize[_0xfdbf('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xfdbf('0x2')]},'active':{'type':Sequelize[_0xfdbf('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xfdbf('0x4')},'startAt':{'type':Sequelize[_0xfdbf('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xfdbf('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xfdbf('0x6')](_0xfdbf('0x7'),_0xfdbf('0x8'),_0xfdbf('0x9'),'weeks',_0xfdbf('0xa'),_0xfdbf('0xb'),_0xfdbf('0xc')),'allowNull':![],'defaultValue':_0xfdbf('0xa')},'output':{'type':Sequelize[_0xfdbf('0x6')](_0xfdbf('0xd'),'pdf',_0xfdbf('0xe')),'allowNull':![],'defaultValue':_0xfdbf('0xd')},'type':{'type':Sequelize[_0xfdbf('0x6')]('custom',_0xfdbf('0xf')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xfdbf('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xfdbf('0x2')]},'cc':{'type':Sequelize[_0xfdbf('0x10')]},'bcc':{'type':Sequelize[_0xfdbf('0x10')]},'sendIfEmpty':{'type':Sequelize[_0xfdbf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xbacb=['DATE','INTEGER','ENUM','years','quarters','weeks','days','hours','minutes','csv','xlsx','custom','default','BOOLEAN','TEXT','sequelize','STRING','0\x200\x20*\x20*\x20*'];(function(_0xd57022,_0x1342d6){var _0x541170=function(_0xb1fba7){while(--_0xb1fba7){_0xd57022['push'](_0xd57022['shift']());}};_0x541170(++_0x1342d6);}(_0xbacb,0x1e3));var _0xbbac=function(_0xc79747,_0x474512){_0xc79747=_0xc79747-0x0;var _0x2e5512=_0xbacb[_0xc79747];return _0x2e5512;};'use strict';var Sequelize=require(_0xbbac('0x0'));module['exports']={'name':{'type':Sequelize[_0xbbac('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xbbac('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xbbac('0x1')],'allowNull':![],'defaultValue':_0xbbac('0x2')},'startAt':{'type':Sequelize[_0xbbac('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0xbbac('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xbbac('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xbbac('0x5')](_0xbbac('0x6'),_0xbbac('0x7'),'months',_0xbbac('0x8'),_0xbbac('0x9'),_0xbbac('0xa'),_0xbbac('0xb')),'allowNull':![],'defaultValue':_0xbbac('0x9')},'output':{'type':Sequelize[_0xbbac('0x5')](_0xbbac('0xc'),'pdf',_0xbbac('0xd')),'allowNull':![],'defaultValue':_0xbbac('0xc')},'type':{'type':Sequelize[_0xbbac('0x5')](_0xbbac('0xe'),_0xbbac('0xf')),'allowNull':![],'defaultValue':_0xbbac('0xe')},'sendMail':{'type':Sequelize[_0xbbac('0x10')],'defaultValue':![]},'email':{'type':Sequelize[_0xbbac('0x1')]},'cc':{'type':Sequelize[_0xbbac('0x11')]},'bcc':{'type':Sequelize[_0xbbac('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 5c54918..6dc317c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf5=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','get','UserProfileResource','error','name','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Scheduler','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','eml-format','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x5c693b,_0x19502d){var _0x4fd6f4=function(_0x433f9b){while(--_0x433f9b){_0x5c693b['push'](_0x5c693b['shift']());}};_0x4fd6f4(++_0x19502d);}(_0xbaf5,0x187));var _0x5baf=function(_0x45bccd,_0x130e52){_0x45bccd=_0x45bccd-0x0;var _0x561467=_0xbaf5[_0x45bccd];return _0x561467;};'use strict';var emlformat=require(_0x5baf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5baf('0x1'));var rp=require(_0x5baf('0x2'));var moment=require('moment');var BPromise=require(_0x5baf('0x3'));var Mustache=require('mustache');var util=require(_0x5baf('0x4'));var path=require(_0x5baf('0x5'));var sox=require('sox');var csv=require(_0x5baf('0x6'));var ejs=require(_0x5baf('0x7'));var fs=require('fs');var fs_extra=require(_0x5baf('0x8'));var _=require(_0x5baf('0x9'));var squel=require(_0x5baf('0xa'));var crypto=require(_0x5baf('0xb'));var jsforce=require(_0x5baf('0xc'));var deskjs=require(_0x5baf('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5baf('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5baf('0xf'));var qs=require(_0x5baf('0x10'));var as=require(_0x5baf('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5baf('0x12'))(_0x5baf('0x13'));var utils=require(_0x5baf('0x14'));var config=require(_0x5baf('0x15'));var licenseUtil=require(_0x5baf('0x16'));var db=require(_0x5baf('0x17'))['db'];function respondWithStatusCode(_0x2c8b4c,_0xa08f86){_0xa08f86=_0xa08f86||0xcc;return function(_0x4546f5){if(_0x4546f5){return _0x2c8b4c[_0x5baf('0x18')](_0xa08f86);}return _0x2c8b4c[_0x5baf('0x19')](_0xa08f86)[_0x5baf('0x1a')]();};}function respondWithResult(_0x4b0903,_0x1cc555){_0x1cc555=_0x1cc555||0xc8;return function(_0x961393){if(_0x961393){return _0x4b0903[_0x5baf('0x19')](_0x1cc555)['json'](_0x961393);}};}function respondWithFilteredResult(_0x1079ac,_0x388d51){return function(_0x2a3377){if(_0x2a3377){var _0x594f58=typeof _0x388d51[_0x5baf('0x1b')]===_0x5baf('0x1c')&&typeof _0x388d51[_0x5baf('0x1d')]==='undefined';var _0x19d525=_0x2a3377[_0x5baf('0x1e')];var _0x58d817=_0x594f58?0x0:_0x388d51['offset'];var _0x3c4165=_0x594f58?_0x2a3377['count']:_0x388d51[_0x5baf('0x1b')]+_0x388d51[_0x5baf('0x1d')];var _0x486380;if(_0x3c4165>=_0x19d525){_0x3c4165=_0x19d525;_0x486380=0xc8;}else{_0x486380=0xce;}_0x1079ac[_0x5baf('0x19')](_0x486380);return _0x1079ac[_0x5baf('0x1f')](_0x5baf('0x20'),_0x58d817+'-'+_0x3c4165+'/'+_0x19d525)[_0x5baf('0x21')](_0x2a3377);}return null;};}function patchUpdates(_0x2861bf){return function(_0x468dfc){try{jsonpatch[_0x5baf('0x22')](_0x468dfc,_0x2861bf,!![]);}catch(_0x244c22){return BPromise['reject'](_0x244c22);}return _0x468dfc[_0x5baf('0x23')]();};}function saveUpdates(_0x19f8ee,_0x3a060f){return function(_0x43d98f){if(_0x43d98f){return _0x43d98f[_0x5baf('0x24')](_0x19f8ee)[_0x5baf('0x25')](function(_0x28d47d){return _0x28d47d;});}return null;};}function removeEntity(_0x5e4380,_0x391a1d){return function(_0xee74a8){if(_0xee74a8){return _0xee74a8[_0x5baf('0x26')]()['then'](function(){var _0x227e24=_0xee74a8[_0x5baf('0x27')]({'plain':!![]});var _0x4d474d='Scheduler';return db[_0x5baf('0x28')][_0x5baf('0x26')]({'where':{'type':_0x4d474d,'resourceId':_0x227e24['id']}})['then'](function(){return _0xee74a8;});})[_0x5baf('0x25')](function(){_0x5e4380[_0x5baf('0x19')](0xcc)[_0x5baf('0x1a')]();});}};}function handleEntityNotFound(_0x132997,_0x363001){return function(_0x4cf0fc){if(!_0x4cf0fc){_0x132997[_0x5baf('0x18')](0x194);}return _0x4cf0fc;};}function handleError(_0x5736f6,_0x3d304d){_0x3d304d=_0x3d304d||0x1f4;return function(_0x378135){logger[_0x5baf('0x29')](_0x378135['stack']);if(_0x378135[_0x5baf('0x2a')]){delete _0x378135[_0x5baf('0x2a')];}_0x5736f6['status'](_0x3d304d)[_0x5baf('0x2b')](_0x378135);};}exports[_0x5baf('0x2c')]=function(_0x2fb2bf,_0x4575d3){var _0x12e10d={},_0x1aa264={},_0xf7ba7c={'count':0x0,'rows':[]};var _0x2d6fa4=_[_0x5baf('0x2d')](db[_0x5baf('0x2e')][_0x5baf('0x2f')],function(_0x314726){return{'name':_0x314726[_0x5baf('0x30')],'type':_0x314726[_0x5baf('0x31')][_0x5baf('0x32')]};});_0x1aa264[_0x5baf('0x33')]=_[_0x5baf('0x2d')](_0x2d6fa4,_0x5baf('0x2a'));_0x1aa264['query']=_[_0x5baf('0x34')](_0x2fb2bf[_0x5baf('0x35')]);_0x1aa264[_0x5baf('0x36')]=_[_0x5baf('0x37')](_0x1aa264[_0x5baf('0x33')],_0x1aa264[_0x5baf('0x35')]);_0x12e10d['attributes']=_[_0x5baf('0x37')](_0x1aa264['model'],qs[_0x5baf('0x38')](_0x2fb2bf[_0x5baf('0x35')]['fields']));_0x12e10d[_0x5baf('0x39')]=_0x12e10d['attributes'][_0x5baf('0x3a')]?_0x12e10d[_0x5baf('0x39')]:_0x1aa264['model'];if(!_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x3b')](_0x5baf('0x3c'))){_0x12e10d[_0x5baf('0x1d')]=qs['limit'](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x1d')]);_0x12e10d['offset']=qs[_0x5baf('0x1b')](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x1b')]);}_0x12e10d['order']=qs[_0x5baf('0x3d')](_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x3d')]);_0x12e10d[_0x5baf('0x3e')]=qs['filters'](_[_0x5baf('0x3f')](_0x2fb2bf[_0x5baf('0x35')],_0x1aa264['filters']),_0x2d6fa4);if(_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x40')]){_0x12e10d['where']=_[_0x5baf('0x41')](_0x12e10d['where'],{'$or':_[_0x5baf('0x2d')](_0x2d6fa4,function(_0x2e3159){if(_0x2e3159[_0x5baf('0x31')]!=='VIRTUAL'){var _0x143dd3={};_0x143dd3[_0x2e3159['name']]={'$like':'%'+_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x40')]+'%'};return _0x143dd3;}})});}_0x12e10d=_[_0x5baf('0x41')]({},_0x12e10d,_0x2fb2bf[_0x5baf('0x42')]);var _0x55b4a8={'where':_0x12e10d[_0x5baf('0x3e')]};return db[_0x5baf('0x2e')][_0x5baf('0x1e')](_0x55b4a8)[_0x5baf('0x25')](function(_0x4a0210){_0xf7ba7c[_0x5baf('0x1e')]=_0x4a0210;if(_0x2fb2bf[_0x5baf('0x35')][_0x5baf('0x43')]){_0x12e10d[_0x5baf('0x44')]=[{'all':!![]}];}return db[_0x5baf('0x2e')][_0x5baf('0x45')](_0x12e10d);})['then'](function(_0x157aab){_0xf7ba7c[_0x5baf('0x46')]=_0x157aab;return _0xf7ba7c;})[_0x5baf('0x25')](respondWithFilteredResult(_0x4575d3,_0x12e10d))[_0x5baf('0x47')](handleError(_0x4575d3,null));};exports['show']=function(_0x44dd68,_0x14afab){var _0x9cd388={'raw':![],'where':{'id':_0x44dd68[_0x5baf('0x48')]['id']}},_0x5bc32e={};_0x5bc32e[_0x5baf('0x33')]=_[_0x5baf('0x34')](db['Schedule']['rawAttributes']);_0x5bc32e['query']=_[_0x5baf('0x34')](_0x44dd68[_0x5baf('0x35')]);_0x5bc32e[_0x5baf('0x36')]=_[_0x5baf('0x37')](_0x5bc32e[_0x5baf('0x33')],_0x5bc32e[_0x5baf('0x35')]);_0x9cd388[_0x5baf('0x39')]=_[_0x5baf('0x37')](_0x5bc32e['model'],qs[_0x5baf('0x38')](_0x44dd68['query'][_0x5baf('0x38')]));_0x9cd388[_0x5baf('0x39')]=_0x9cd388[_0x5baf('0x39')]['length']?_0x9cd388[_0x5baf('0x39')]:_0x5bc32e[_0x5baf('0x33')];if(_0x44dd68[_0x5baf('0x35')][_0x5baf('0x43')]){_0x9cd388[_0x5baf('0x44')]=[{'all':!![]}];}_0x9cd388=_[_0x5baf('0x41')]({},_0x9cd388,_0x44dd68[_0x5baf('0x42')]);return db[_0x5baf('0x2e')][_0x5baf('0x49')](_0x9cd388)[_0x5baf('0x25')](handleEntityNotFound(_0x14afab,null))['then'](respondWithResult(_0x14afab,null))[_0x5baf('0x47')](handleError(_0x14afab,null));};exports[_0x5baf('0x4a')]=function(_0x105855,_0x19b1d0){return db[_0x5baf('0x2e')][_0x5baf('0x4a')](_0x105855[_0x5baf('0x4b')],{})[_0x5baf('0x25')](function(_0x245673){var _0x2f00df=_0x105855[_0x5baf('0x4c')][_0x5baf('0x27')]({'plain':!![]});if(!_0x2f00df)throw new Error(_0x5baf('0x4d'));if(_0x2f00df['role']==='user'){var _0x17cd57=_0x245673[_0x5baf('0x27')]({'plain':!![]});var _0x58bd0f=_0x5baf('0x4e');return db[_0x5baf('0x4f')][_0x5baf('0x49')]({'where':{'name':_0x58bd0f,'userProfileId':_0x2f00df['userProfileId']},'raw':!![]})[_0x5baf('0x25')](function(_0x5bce90){if(_0x5bce90&&_0x5bce90[_0x5baf('0x50')]===0x0){return db[_0x5baf('0x28')][_0x5baf('0x4a')]({'name':_0x17cd57['name'],'resourceId':_0x17cd57['id'],'type':_0x5bce90[_0x5baf('0x2a')],'sectionId':_0x5bce90['id']},{})[_0x5baf('0x25')](function(){return _0x245673;});}else{return _0x245673;}})[_0x5baf('0x47')](function(_0x29e04d){logger[_0x5baf('0x29')](_0x5baf('0x51'),_0x29e04d);throw _0x29e04d;});}return _0x245673;})[_0x5baf('0x25')](respondWithResult(_0x19b1d0,0xc9))[_0x5baf('0x47')](handleError(_0x19b1d0,null));};exports[_0x5baf('0x24')]=function(_0x134ab2,_0xfc5e16){if(_0x134ab2[_0x5baf('0x4b')]['id']){delete _0x134ab2[_0x5baf('0x4b')]['id'];}return db[_0x5baf('0x2e')]['find']({'where':{'id':_0x134ab2['params']['id']}})['then'](handleEntityNotFound(_0xfc5e16,null))[_0x5baf('0x25')](saveUpdates(_0x134ab2['body'],null))[_0x5baf('0x25')](respondWithResult(_0xfc5e16,null))[_0x5baf('0x47')](handleError(_0xfc5e16,null));};exports[_0x5baf('0x26')]=function(_0x2f4b66,_0x20b37c){return db[_0x5baf('0x2e')][_0x5baf('0x49')]({'where':{'id':_0x2f4b66[_0x5baf('0x48')]['id']}})['then'](handleEntityNotFound(_0x20b37c,null))['then'](removeEntity(_0x20b37c,null))[_0x5baf('0x47')](handleError(_0x20b37c,null));};exports['run']=function(_0x5afdc8,_0x162d27,_0x104c6a){var _0x44f376=require(_0x5baf('0x52'));return db[_0x5baf('0x2e')][_0x5baf('0x49')]({'where':{'id':_0x5afdc8['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x162d27,null))['then'](function(){_0x44f376['run'](_0x5afdc8[_0x5baf('0x48')]['id']);})[_0x5baf('0x25')](respondWithStatusCode(_0x162d27,null))[_0x5baf('0x47')](handleError(_0x162d27,null));};
\ No newline at end of file
+var _0x7275=['nolimit','order','sort','where','filter','merge','VIRTUAL','options','Schedule','includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../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','Content-Range','apply','reject','update','then','destroy','Scheduler','UserProfileResource','error','stack','name','send','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length'];(function(_0x55dd7d,_0x43b6c4){var _0x4fcddd=function(_0x34b42d){while(--_0x34b42d){_0x55dd7d['push'](_0x55dd7d['shift']());}};_0x4fcddd(++_0x43b6c4);}(_0x7275,0xc2));var _0x5727=function(_0xa95d87,_0x4a36fb){_0xa95d87=_0xa95d87-0x0;var _0x55688f=_0x7275[_0xa95d87];return _0x55688f;};'use strict';var emlformat=require(_0x5727('0x0'));var rimraf=require(_0x5727('0x1'));var zipdir=require(_0x5727('0x2'));var jsonpatch=require(_0x5727('0x3'));var rp=require(_0x5727('0x4'));var moment=require(_0x5727('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5727('0x6'));var util=require(_0x5727('0x7'));var path=require(_0x5727('0x8'));var sox=require('sox');var csv=require(_0x5727('0x9'));var ejs=require(_0x5727('0xa'));var fs=require('fs');var fs_extra=require(_0x5727('0xb'));var _=require(_0x5727('0xc'));var squel=require(_0x5727('0xd'));var crypto=require(_0x5727('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5727('0x9'));var querystring=require(_0x5727('0xf'));var Papa=require(_0x5727('0x10'));var Redis=require(_0x5727('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5727('0x12'));var hardwareService=require(_0x5727('0x13'));var logger=require(_0x5727('0x14'))(_0x5727('0x15'));var utils=require(_0x5727('0x16'));var config=require(_0x5727('0x17'));var licenseUtil=require(_0x5727('0x18'));var db=require(_0x5727('0x19'))['db'];function respondWithStatusCode(_0x239dd5,_0x5e53b3){_0x5e53b3=_0x5e53b3||0xcc;return function(_0x4cf230){if(_0x4cf230){return _0x239dd5[_0x5727('0x1a')](_0x5e53b3);}return _0x239dd5[_0x5727('0x1b')](_0x5e53b3)[_0x5727('0x1c')]();};}function respondWithResult(_0x3ad0b1,_0x26b592){_0x26b592=_0x26b592||0xc8;return function(_0x138ac8){if(_0x138ac8){return _0x3ad0b1[_0x5727('0x1b')](_0x26b592)[_0x5727('0x1d')](_0x138ac8);}};}function respondWithFilteredResult(_0x79eb92,_0x6a17be){return function(_0x2c405b){if(_0x2c405b){var _0x23fa60=typeof _0x6a17be[_0x5727('0x1e')]===_0x5727('0x1f')&&typeof _0x6a17be['limit']===_0x5727('0x1f');var _0x3be194=_0x2c405b[_0x5727('0x20')];var _0x1a766a=_0x23fa60?0x0:_0x6a17be[_0x5727('0x1e')];var _0x1131d3=_0x23fa60?_0x2c405b[_0x5727('0x20')]:_0x6a17be[_0x5727('0x1e')]+_0x6a17be[_0x5727('0x21')];var _0x3cd8b0;if(_0x1131d3>=_0x3be194){_0x1131d3=_0x3be194;_0x3cd8b0=0xc8;}else{_0x3cd8b0=0xce;}_0x79eb92['status'](_0x3cd8b0);return _0x79eb92['set'](_0x5727('0x22'),_0x1a766a+'-'+_0x1131d3+'/'+_0x3be194)['json'](_0x2c405b);}return null;};}function patchUpdates(_0x3659c5){return function(_0x52b82d){try{jsonpatch[_0x5727('0x23')](_0x52b82d,_0x3659c5,!![]);}catch(_0x48fc19){return BPromise[_0x5727('0x24')](_0x48fc19);}return _0x52b82d['save']();};}function saveUpdates(_0x2a0512,_0x558e5d){return function(_0x643d21){if(_0x643d21){return _0x643d21[_0x5727('0x25')](_0x2a0512)[_0x5727('0x26')](function(_0x41875a){return _0x41875a;});}return null;};}function removeEntity(_0x1cbe02,_0xc9f975){return function(_0x3f8d7f){if(_0x3f8d7f){return _0x3f8d7f[_0x5727('0x27')]()[_0x5727('0x26')](function(){var _0x1d5c80=_0x3f8d7f['get']({'plain':!![]});var _0x26c6a1=_0x5727('0x28');return db[_0x5727('0x29')][_0x5727('0x27')]({'where':{'type':_0x26c6a1,'resourceId':_0x1d5c80['id']}})[_0x5727('0x26')](function(){return _0x3f8d7f;});})[_0x5727('0x26')](function(){_0x1cbe02[_0x5727('0x1b')](0xcc)[_0x5727('0x1c')]();});}};}function handleEntityNotFound(_0x52d5ed,_0x1116eb){return function(_0x57d15a){if(!_0x57d15a){_0x52d5ed['sendStatus'](0x194);}return _0x57d15a;};}function handleError(_0x52481e,_0x181b4d){_0x181b4d=_0x181b4d||0x1f4;return function(_0x1215cc){logger[_0x5727('0x2a')](_0x1215cc[_0x5727('0x2b')]);if(_0x1215cc[_0x5727('0x2c')]){delete _0x1215cc[_0x5727('0x2c')];}_0x52481e['status'](_0x181b4d)[_0x5727('0x2d')](_0x1215cc);};}exports['index']=function(_0x217974,_0x19d6b2){var _0xcc73d2={},_0x1096a3={},_0x785824={'count':0x0,'rows':[]};var _0x1c9cd4=_['map'](db['Schedule']['rawAttributes'],function(_0xc57396){return{'name':_0xc57396[_0x5727('0x2e')],'type':_0xc57396[_0x5727('0x2f')][_0x5727('0x30')]};});_0x1096a3[_0x5727('0x31')]=_[_0x5727('0x32')](_0x1c9cd4,_0x5727('0x2c'));_0x1096a3[_0x5727('0x33')]=_[_0x5727('0x34')](_0x217974[_0x5727('0x33')]);_0x1096a3[_0x5727('0x35')]=_['intersection'](_0x1096a3[_0x5727('0x31')],_0x1096a3[_0x5727('0x33')]);_0xcc73d2[_0x5727('0x36')]=_[_0x5727('0x37')](_0x1096a3[_0x5727('0x31')],qs['fields'](_0x217974[_0x5727('0x33')][_0x5727('0x38')]));_0xcc73d2[_0x5727('0x36')]=_0xcc73d2['attributes'][_0x5727('0x39')]?_0xcc73d2[_0x5727('0x36')]:_0x1096a3[_0x5727('0x31')];if(!_0x217974[_0x5727('0x33')]['hasOwnProperty'](_0x5727('0x3a'))){_0xcc73d2['limit']=qs[_0x5727('0x21')](_0x217974[_0x5727('0x33')][_0x5727('0x21')]);_0xcc73d2[_0x5727('0x1e')]=qs['offset'](_0x217974[_0x5727('0x33')][_0x5727('0x1e')]);}_0xcc73d2[_0x5727('0x3b')]=qs['sort'](_0x217974[_0x5727('0x33')][_0x5727('0x3c')]);_0xcc73d2[_0x5727('0x3d')]=qs[_0x5727('0x35')](_['pick'](_0x217974[_0x5727('0x33')],_0x1096a3['filters']),_0x1c9cd4);if(_0x217974['query'][_0x5727('0x3e')]){_0xcc73d2[_0x5727('0x3d')]=_[_0x5727('0x3f')](_0xcc73d2[_0x5727('0x3d')],{'$or':_[_0x5727('0x32')](_0x1c9cd4,function(_0x4b41ff){if(_0x4b41ff['type']!==_0x5727('0x40')){var _0x2539df={};_0x2539df[_0x4b41ff[_0x5727('0x2c')]]={'$like':'%'+_0x217974[_0x5727('0x33')]['filter']+'%'};return _0x2539df;}})});}_0xcc73d2=_[_0x5727('0x3f')]({},_0xcc73d2,_0x217974[_0x5727('0x41')]);var _0x11b117={'where':_0xcc73d2[_0x5727('0x3d')]};return db[_0x5727('0x42')][_0x5727('0x20')](_0x11b117)[_0x5727('0x26')](function(_0x24f791){_0x785824[_0x5727('0x20')]=_0x24f791;if(_0x217974[_0x5727('0x33')][_0x5727('0x43')]){_0xcc73d2[_0x5727('0x44')]=[{'all':!![]}];}return db['Schedule'][_0x5727('0x45')](_0xcc73d2);})['then'](function(_0xe8d4e6){_0x785824[_0x5727('0x46')]=_0xe8d4e6;return _0x785824;})['then'](respondWithFilteredResult(_0x19d6b2,_0xcc73d2))[_0x5727('0x47')](handleError(_0x19d6b2,null));};exports[_0x5727('0x48')]=function(_0x471a48,_0x2ee3ca){var _0x3877f9={'raw':![],'where':{'id':_0x471a48[_0x5727('0x49')]['id']}},_0x5b1743={};_0x5b1743['model']=_[_0x5727('0x34')](db['Schedule']['rawAttributes']);_0x5b1743[_0x5727('0x33')]=_[_0x5727('0x34')](_0x471a48['query']);_0x5b1743[_0x5727('0x35')]=_[_0x5727('0x37')](_0x5b1743[_0x5727('0x31')],_0x5b1743[_0x5727('0x33')]);_0x3877f9[_0x5727('0x36')]=_[_0x5727('0x37')](_0x5b1743[_0x5727('0x31')],qs[_0x5727('0x38')](_0x471a48[_0x5727('0x33')][_0x5727('0x38')]));_0x3877f9[_0x5727('0x36')]=_0x3877f9[_0x5727('0x36')]['length']?_0x3877f9[_0x5727('0x36')]:_0x5b1743['model'];if(_0x471a48['query'][_0x5727('0x43')]){_0x3877f9[_0x5727('0x44')]=[{'all':!![]}];}_0x3877f9=_[_0x5727('0x3f')]({},_0x3877f9,_0x471a48[_0x5727('0x41')]);return db['Schedule']['find'](_0x3877f9)[_0x5727('0x26')](handleEntityNotFound(_0x2ee3ca,null))[_0x5727('0x26')](respondWithResult(_0x2ee3ca,null))[_0x5727('0x47')](handleError(_0x2ee3ca,null));};exports[_0x5727('0x4a')]=function(_0x19fb71,_0x3f1e80){return db[_0x5727('0x42')][_0x5727('0x4a')](_0x19fb71[_0x5727('0x4b')],{})[_0x5727('0x26')](function(_0x32c152){var _0x4d2134=_0x19fb71[_0x5727('0x4c')]['get']({'plain':!![]});if(!_0x4d2134)throw new Error(_0x5727('0x4d'));if(_0x4d2134[_0x5727('0x4e')]===_0x5727('0x4c')){var _0x1a8824=_0x32c152['get']({'plain':!![]});var _0x5b46a8=_0x5727('0x28');return db[_0x5727('0x4f')][_0x5727('0x50')]({'where':{'name':_0x5b46a8,'userProfileId':_0x4d2134[_0x5727('0x51')]},'raw':!![]})[_0x5727('0x26')](function(_0xd13a7f){if(_0xd13a7f&&_0xd13a7f['autoAssociation']===0x0){return db['UserProfileResource'][_0x5727('0x4a')]({'name':_0x1a8824[_0x5727('0x2c')],'resourceId':_0x1a8824['id'],'type':_0xd13a7f[_0x5727('0x2c')],'sectionId':_0xd13a7f['id']},{})[_0x5727('0x26')](function(){return _0x32c152;});}else{return _0x32c152;}})[_0x5727('0x47')](function(_0x520bf9){logger[_0x5727('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x520bf9);throw _0x520bf9;});}return _0x32c152;})[_0x5727('0x26')](respondWithResult(_0x3f1e80,0xc9))[_0x5727('0x47')](handleError(_0x3f1e80,null));};exports[_0x5727('0x25')]=function(_0x46b0ce,_0x266a8a){if(_0x46b0ce[_0x5727('0x4b')]['id']){delete _0x46b0ce[_0x5727('0x4b')]['id'];}return db['Schedule'][_0x5727('0x50')]({'where':{'id':_0x46b0ce['params']['id']}})[_0x5727('0x26')](handleEntityNotFound(_0x266a8a,null))[_0x5727('0x26')](saveUpdates(_0x46b0ce['body'],null))[_0x5727('0x26')](respondWithResult(_0x266a8a,null))[_0x5727('0x47')](handleError(_0x266a8a,null));};exports[_0x5727('0x27')]=function(_0x3a7cf5,_0x347c50){return db[_0x5727('0x42')]['find']({'where':{'id':_0x3a7cf5[_0x5727('0x49')]['id']}})[_0x5727('0x26')](handleEntityNotFound(_0x347c50,null))[_0x5727('0x26')](removeEntity(_0x347c50,null))[_0x5727('0x47')](handleError(_0x347c50,null));};exports[_0x5727('0x52')]=function(_0x48a76b,_0xcb075a,_0x275e0a){var _0x54e565=require(_0x5727('0x53'));return db[_0x5727('0x42')]['find']({'where':{'id':_0x48a76b['params']['id']},'raw':!![]})[_0x5727('0x26')](handleEntityNotFound(_0xcb075a,null))['then'](function(){_0x54e565['run'](_0x48a76b[_0x5727('0x49')]['id']);})[_0x5727('0x26')](respondWithStatusCode(_0xcb075a,null))[_0x5727('0x47')](handleError(_0xcb075a,null));};
\ No newline at end of file
index c528920..4d5ee92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b6=['rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','lodash','moment','bluebird','request-promise'];(function(_0x2f9877,_0x26ecb0){var _0x1466a6=function(_0x13852b){while(--_0x13852b){_0x2f9877['push'](_0x2f9877['shift']());}};_0x1466a6(++_0x26ecb0);}(_0x09b6,0x104));var _0x609b=function(_0x3c7d53,_0x2826d0){_0x3c7d53=_0x3c7d53-0x0;var _0x2c8387=_0x09b6[_0x3c7d53];return _0x2c8387;};'use strict';var _=require(_0x609b('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x609b('0x1'));var BPromise=require(_0x609b('0x2'));var rp=require(_0x609b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x609b('0x4'));var config=require(_0x609b('0x5'));var attributes=require(_0x609b('0x6'));module[_0x609b('0x7')]=function(_0x145511,_0x3cc739){return _0x145511[_0x609b('0x8')](_0x609b('0x9'),attributes,{'tableName':_0x609b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x252a=['rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x26028c,_0x271f1d){var _0x5cd3ba=function(_0x3e1cbc){while(--_0x3e1cbc){_0x26028c['push'](_0x26028c['shift']());}};_0x5cd3ba(++_0x271f1d);}(_0x252a,0x7c));var _0xa252=function(_0x46ac65,_0x3d780f){_0x46ac65=_0x46ac65-0x0;var _0x2b76ce=_0x252a[_0x46ac65];return _0x2b76ce;};'use strict';var _=require('lodash');var util=require(_0xa252('0x0'));var logger=require(_0xa252('0x1'))('api');var moment=require(_0xa252('0x2'));var BPromise=require(_0xa252('0x3'));var rp=require(_0xa252('0x4'));var fs=require('fs');var path=require(_0xa252('0x5'));var rimraf=require(_0xa252('0x6'));var config=require(_0xa252('0x7'));var attributes=require(_0xa252('0x8'));module[_0xa252('0x9')]=function(_0x38380a,_0x510c5e){return _0x38380a[_0xa252('0xa')](_0xa252('0xb'),attributes,{'tableName':_0xa252('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f6b8da..b022299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb57=['Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','request','then','info','Schedule,\x20%s,\x20%s'];(function(_0x3e0598,_0x209ace){var _0x33e0d3=function(_0x4aba7c){while(--_0x4aba7c){_0x3e0598['push'](_0x3e0598['shift']());}};_0x33e0d3(++_0x209ace);}(_0xdb57,0x9f));var _0x7db5=function(_0x4e1584,_0x3e0d82){_0x4e1584=_0x4e1584-0x0;var _0x1f4d68=_0xdb57[_0x4e1584];return _0x1f4d68;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7db5('0x0'));var BPromise=require(_0x7db5('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7db5('0x2'));var db=require(_0x7db5('0x3'))['db'];var utils=require(_0x7db5('0x4'));var logger=require(_0x7db5('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7db5('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x22dae5,_0x1cd61f,_0x31ac59){return new BPromise(function(_0x501604,_0x4fa775){return client[_0x7db5('0x7')](_0x22dae5,_0x31ac59)[_0x7db5('0x8')](function(_0x550c6f){logger[_0x7db5('0x9')](_0x7db5('0xa'),_0x1cd61f,'request\x20sent');logger['debug'](_0x7db5('0xb'),_0x1cd61f,_0x7db5('0xc'),JSON['stringify'](_0x550c6f));if(_0x550c6f[_0x7db5('0xd')]){if(_0x550c6f['error']['code']===0x1f4){logger['error'](_0x7db5('0xa'),_0x1cd61f,_0x550c6f['error'][_0x7db5('0xe')]);return _0x4fa775(_0x550c6f[_0x7db5('0xd')][_0x7db5('0xe')]);}logger[_0x7db5('0xd')](_0x7db5('0xa'),_0x1cd61f,_0x550c6f[_0x7db5('0xd')]['message']);return _0x501604(_0x550c6f[_0x7db5('0xd')][_0x7db5('0xe')]);}else{logger[_0x7db5('0x9')](_0x7db5('0xa'),_0x1cd61f,_0x7db5('0xc'));_0x501604(_0x550c6f[_0x7db5('0xf')][_0x7db5('0xe')]);}})[_0x7db5('0x10')](function(_0x26916c){logger[_0x7db5('0xd')](_0x7db5('0xa'),_0x1cd61f,_0x26916c);_0x4fa775(_0x26916c);});});}
\ No newline at end of file
+var _0xe5ee=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','Schedule,\x20%s,\x20%s','message','info','result','catch','lodash','moment','ioredis','../../mysqldb'];(function(_0xab9f3d,_0xb336fa){var _0x5283bf=function(_0x505e6c){while(--_0x505e6c){_0xab9f3d['push'](_0xab9f3d['shift']());}};_0x5283bf(++_0xb336fa);}(_0xe5ee,0xcb));var _0xee5e=function(_0x516d77,_0x3ba6ab){_0x516d77=_0x516d77-0x0;var _0x39d710=_0xe5ee[_0x516d77];return _0x39d710;};'use strict';var _=require(_0xee5e('0x0'));var util=require('util');var moment=require(_0xee5e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee5e('0x2'));var db=require(_0xee5e('0x3'))['db'];var utils=require(_0xee5e('0x4'));var logger=require(_0xee5e('0x5'))(_0xee5e('0x6'));var config=require(_0xee5e('0x7'));var jayson=require(_0xee5e('0x8'));var client=jayson[_0xee5e('0x9')][_0xee5e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf3a0b8,_0xc4ef27,_0x51aad0){return new BPromise(function(_0x5971c3,_0x505e71){return client['request'](_0xf3a0b8,_0x51aad0)[_0xee5e('0xb')](function(_0x3257e6){logger['info']('Schedule,\x20%s,\x20%s',_0xc4ef27,_0xee5e('0xc'));logger[_0xee5e('0xd')](_0xee5e('0xe'),_0xc4ef27,_0xee5e('0xc'),JSON[_0xee5e('0xf')](_0x3257e6));if(_0x3257e6['error']){if(_0x3257e6[_0xee5e('0x10')][_0xee5e('0x11')]===0x1f4){logger[_0xee5e('0x10')](_0xee5e('0x12'),_0xc4ef27,_0x3257e6['error'][_0xee5e('0x13')]);return _0x505e71(_0x3257e6[_0xee5e('0x10')][_0xee5e('0x13')]);}logger[_0xee5e('0x10')](_0xee5e('0x12'),_0xc4ef27,_0x3257e6[_0xee5e('0x10')][_0xee5e('0x13')]);return _0x5971c3(_0x3257e6[_0xee5e('0x10')][_0xee5e('0x13')]);}else{logger[_0xee5e('0x14')](_0xee5e('0x12'),_0xc4ef27,_0xee5e('0xc'));_0x5971c3(_0x3257e6[_0xee5e('0x15')][_0xee5e('0x13')]);}})[_0xee5e('0x16')](function(_0x3054ee){logger[_0xee5e('0x10')](_0xee5e('0x12'),_0xc4ef27,_0x3054ee);_0x505e71(_0x3054ee);});});}
\ No newline at end of file
index 21f9c3b..cfa7e63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4407=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','create','put','update','delete','exports','path','express'];(function(_0x29c691,_0x46f6a2){var _0x3d20ab=function(_0x51295e){while(--_0x51295e){_0x29c691['push'](_0x29c691['shift']());}};_0x3d20ab(++_0x46f6a2);}(_0x4407,0x10f));var _0x7440=function(_0x254d55,_0x58ce75){_0x254d55=_0x254d55-0x0;var _0x42faa2=_0x4407[_0x254d55];return _0x42faa2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7440('0x0'));var timeout=require('connect-timeout');var express=require(_0x7440('0x1'));var router=express['Router']();var fs_extra=require(_0x7440('0x2'));var auth=require(_0x7440('0x3'));var interaction=require(_0x7440('0x4'));var config=require(_0x7440('0x5'));var controller=require(_0x7440('0x6'));router[_0x7440('0x7')]('/',auth[_0x7440('0x8')](),controller[_0x7440('0x9')]);router[_0x7440('0x7')](_0x7440('0xa'),auth['isAuthenticated'](),controller[_0x7440('0xb')]);router['get'](_0x7440('0xc'),auth['isAuthenticated'](),controller[_0x7440('0xd')]);router['get'](_0x7440('0xe'),auth['isAuthenticated'](),controller[_0x7440('0xf')]);router['post']('/',auth[_0x7440('0x8')](),controller[_0x7440('0x10')]);router[_0x7440('0x11')](_0x7440('0xc'),auth['isAuthenticated'](),controller[_0x7440('0x12')]);router[_0x7440('0x13')](_0x7440('0xc'),auth[_0x7440('0x8')](),controller['destroy']);module[_0x7440('0x14')]=router;
\ No newline at end of file
+var _0xf11f=['get','/describe','describe','/:id','show','create','put','update','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./screenRecording.controller','isAuthenticated','index'];(function(_0xf51850,_0x2d5e8b){var _0x15d314=function(_0x17d841){while(--_0x17d841){_0xf51850['push'](_0xf51850['shift']());}};_0x15d314(++_0x2d5e8b);}(_0xf11f,0xf6));var _0xff11=function(_0x20d54d,_0x1adc8e){_0x20d54d=_0x20d54d-0x0;var _0x516e8b=_0xf11f[_0x20d54d];return _0x516e8b;};'use strict';var multer=require(_0xff11('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xff11('0x1'));var express=require(_0xff11('0x2'));var router=express[_0xff11('0x3')]();var fs_extra=require(_0xff11('0x4'));var auth=require(_0xff11('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xff11('0x6'));router['get']('/',auth[_0xff11('0x7')](),controller[_0xff11('0x8')]);router[_0xff11('0x9')](_0xff11('0xa'),auth[_0xff11('0x7')](),controller[_0xff11('0xb')]);router[_0xff11('0x9')](_0xff11('0xc'),auth[_0xff11('0x7')](),controller[_0xff11('0xd')]);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0xff11('0x7')](),controller[_0xff11('0xe')]);router[_0xff11('0xf')](_0xff11('0xc'),auth[_0xff11('0x7')](),controller[_0xff11('0x10')]);router['delete'](_0xff11('0xc'),auth[_0xff11('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f7eeb4e..e7b5541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c8d=['updatedAt','moment','path','../../config/environment','exports','VIRTUAL','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE','getDataValue','format','MM-DD-YYYY\x20HH:mm','toString','createdAt'];(function(_0x388b10,_0x43254c){var _0xe4ebf=function(_0x25988a){while(--_0x25988a){_0x388b10['push'](_0x388b10['shift']());}};_0xe4ebf(++_0x43254c);}(_0x0c8d,0x79));var _0xd0c8=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x0c8d[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xd0c8('0x0'));var path=require(_0xd0c8('0x1'));var config=require(_0xd0c8('0x2'));module[_0xd0c8('0x3')]={'format':{'type':Sequelize[_0xd0c8('0x4')],'get':function(){return this['getDataValue']('value')?path['extname'](this['getDataValue'](_0xd0c8('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0xd0c8('0x6')]},'channel':{'type':Sequelize[_0xd0c8('0x6')]},'value':{'type':Sequelize['STRING'],'set':function(_0x16d1c1){var _0x5f0027=_0x16d1c1[_0xd0c8('0x7')](/\\/g,'/');this[_0xd0c8('0x8')](_0xd0c8('0x5'),_0x5f0027);}},'rating':{'type':Sequelize[_0xd0c8('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xd0c8('0x9')],'set':function(_0x5678f9){this[_0xd0c8('0x8')](_0xd0c8('0xa'),moment()[_0xd0c8('0xb')](_0x5678f9,'ms'));this[_0xd0c8('0x8')]('closedAt',moment());this['setDataValue'](_0xd0c8('0xc'),_0x5678f9);}},'startedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this['getDataValue']('startedAt'))['format']('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')]('closedAt'))[_0xd0c8('0xf')](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}},'createdAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')](_0xd0c8('0x12')))[_0xd0c8('0xf')](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}},'updatedAt':{'type':Sequelize[_0xd0c8('0xd')],'get':function(){return moment(this[_0xd0c8('0xe')](_0xd0c8('0x13')))['format'](_0xd0c8('0x10'))[_0xd0c8('0x11')]();}}};
\ No newline at end of file
+var _0xc648=['setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','STRING','replace'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xc648,0x171));var _0x8c64=function(_0x1d003e,_0x3563c1){_0x1d003e=_0x1d003e-0x0;var _0x494d26=_0xc648[_0x1d003e];return _0x494d26;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8c64('0x0'));var path=require(_0x8c64('0x1'));var config=require(_0x8c64('0x2'));module[_0x8c64('0x3')]={'format':{'type':Sequelize[_0x8c64('0x4')],'get':function(){return this[_0x8c64('0x5')](_0x8c64('0x6'))?path['extname'](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize[_0x8c64('0x7')]},'channel':{'type':Sequelize[_0x8c64('0x7')]},'value':{'type':Sequelize[_0x8c64('0x7')],'set':function(_0x1be93f){var _0x507d58=_0x1be93f[_0x8c64('0x8')](/\\/g,'/');this[_0x8c64('0x9')](_0x8c64('0x6'),_0x507d58);}},'rating':{'type':Sequelize[_0x8c64('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x8c64('0xa')],'set':function(_0x5e78c4){this[_0x8c64('0x9')](_0x8c64('0xb'),moment()['subtract'](_0x5e78c4,'ms'));this[_0x8c64('0x9')](_0x8c64('0xc'),moment());this[_0x8c64('0x9')](_0x8c64('0xd'),_0x5e78c4);}},'startedAt':{'type':Sequelize[_0x8c64('0xe')],'get':function(){return moment(this[_0x8c64('0x5')](_0x8c64('0xb')))[_0x8c64('0xf')](_0x8c64('0x10'))[_0x8c64('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x8c64('0x5')](_0x8c64('0xc')))[_0x8c64('0xf')](_0x8c64('0x10'))[_0x8c64('0x11')]();}},'createdAt':{'type':Sequelize[_0x8c64('0xe')],'get':function(){return moment(this[_0x8c64('0x5')]('createdAt'))[_0x8c64('0xf')](_0x8c64('0x10'))['toString']();}},'updatedAt':{'type':Sequelize[_0x8c64('0xe')],'get':function(){return moment(this[_0x8c64('0x5')]('updatedAt'))[_0x8c64('0xf')](_0x8c64('0x10'))['toString']();}}};
\ No newline at end of file
index 88535b7..c53bd80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','ScreenRecording','rawAttributes','fieldName','type','key','differenceBy','map','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','merge','options','catch','create','body','duration','createdAt','closedAt','value','find','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','eml-format','rimraf'];(function(_0x92c236,_0x5c51dd){var _0x367c26=function(_0x47687e){while(--_0x47687e){_0x92c236['push'](_0x92c236['shift']());}};_0x367c26(++_0x5c51dd);}(_0xed1f,0x6a));var _0xfed1=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xed1f[_0x29d94e];return _0x106237;};'use strict';var emlformat=require(_0xfed1('0x0'));var rimraf=require(_0xfed1('0x1'));var zipdir=require(_0xfed1('0x2'));var jsonpatch=require(_0xfed1('0x3'));var rp=require(_0xfed1('0x4'));var moment=require(_0xfed1('0x5'));var BPromise=require(_0xfed1('0x6'));var Mustache=require(_0xfed1('0x7'));var util=require(_0xfed1('0x8'));var path=require(_0xfed1('0x9'));var sox=require(_0xfed1('0xa'));var csv=require(_0xfed1('0xb'));var ejs=require(_0xfed1('0xc'));var fs=require('fs');var fs_extra=require(_0xfed1('0xd'));var _=require(_0xfed1('0xe'));var squel=require(_0xfed1('0xf'));var crypto=require(_0xfed1('0x10'));var jsforce=require(_0xfed1('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xfed1('0xb'));var querystring=require(_0xfed1('0x12'));var Papa=require('papaparse');var Redis=require(_0xfed1('0x13'));var authService=require(_0xfed1('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xfed1('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfed1('0x16'))(_0xfed1('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xfed1('0x18'));var db=require(_0xfed1('0x19'))['db'];function respondWithStatusCode(_0x569a6e,_0x17f4fe){_0x17f4fe=_0x17f4fe||0xcc;return function(_0x5a3469){if(_0x5a3469){return _0x569a6e['sendStatus'](_0x17f4fe);}return _0x569a6e[_0xfed1('0x1a')](_0x17f4fe)[_0xfed1('0x1b')]();};}function respondWithResult(_0x532537,_0x2dde3a){_0x2dde3a=_0x2dde3a||0xc8;return function(_0x5b9455){if(_0x5b9455){return _0x532537['status'](_0x2dde3a)[_0xfed1('0x1c')](_0x5b9455);}};}function respondWithFilteredResult(_0x39aa0c,_0x1fbb7a){return function(_0x123c46){if(_0x123c46){var _0x582e67=typeof _0x1fbb7a[_0xfed1('0x1d')]==='undefined'&&typeof _0x1fbb7a[_0xfed1('0x1e')]===_0xfed1('0x1f');var _0x489a0f=_0x123c46[_0xfed1('0x20')];var _0xa72a20=_0x582e67?0x0:_0x1fbb7a['offset'];var _0x59509b=_0x582e67?_0x123c46['count']:_0x1fbb7a[_0xfed1('0x1d')]+_0x1fbb7a['limit'];var _0x201f18;if(_0x59509b>=_0x489a0f){_0x59509b=_0x489a0f;_0x201f18=0xc8;}else{_0x201f18=0xce;}_0x39aa0c[_0xfed1('0x1a')](_0x201f18);return _0x39aa0c['set'](_0xfed1('0x21'),_0xa72a20+'-'+_0x59509b+'/'+_0x489a0f)[_0xfed1('0x1c')](_0x123c46);}return null;};}function patchUpdates(_0x59ee9d){return function(_0x3ce944){try{jsonpatch[_0xfed1('0x22')](_0x3ce944,_0x59ee9d,!![]);}catch(_0xff4842){return BPromise[_0xfed1('0x23')](_0xff4842);}return _0x3ce944['save']();};}function saveUpdates(_0x203cec,_0x59333e){return function(_0x446558){if(_0x446558){return _0x446558[_0xfed1('0x24')](_0x203cec)[_0xfed1('0x25')](function(_0x532ec2){return _0x532ec2;});}return null;};}function removeEntity(_0x41d22c,_0x594917){return function(_0x460555){if(_0x460555){return _0x460555[_0xfed1('0x26')]()[_0xfed1('0x25')](function(){_0x41d22c[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();});}};}function handleEntityNotFound(_0x1199b7,_0x527fc7){return function(_0x465ce6){if(!_0x465ce6){_0x1199b7[_0xfed1('0x27')](0x194);}return _0x465ce6;};}function handleError(_0x49072b,_0x1d6c72){_0x1d6c72=_0x1d6c72||0x1f4;return function(_0x2b9dd2){logger[_0xfed1('0x28')](_0x2b9dd2[_0xfed1('0x29')]);if(_0x2b9dd2[_0xfed1('0x2a')]){delete _0x2b9dd2[_0xfed1('0x2a')];}_0x49072b['status'](_0x1d6c72)[_0xfed1('0x2b')](_0x2b9dd2);};}exports['index']=function(_0x3106ee,_0x4e5249){var _0x53b0c9={},_0x1cec64={},_0x42c950={'count':0x0,'rows':[]};var _0x2d334e=_['map'](db[_0xfed1('0x2c')][_0xfed1('0x2d')],function(_0x13f414){return{'name':_0x13f414[_0xfed1('0x2e')],'type':_0x13f414[_0xfed1('0x2f')][_0xfed1('0x30')]};});_0x1cec64['model']=_[_0xfed1('0x31')](_[_0xfed1('0x32')](_0x2d334e,'name'),['format']);_0x1cec64[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0x3106ee[_0xfed1('0x33')]);_0x1cec64[_0xfed1('0x35')]=_[_0xfed1('0x36')](_0x1cec64['model'],_0x1cec64[_0xfed1('0x33')]);_0x53b0c9[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1cec64[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0x3106ee['query'][_0xfed1('0x39')]));_0x53b0c9['attributes']=_0x53b0c9[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x53b0c9[_0xfed1('0x37')]:_0x1cec64[_0xfed1('0x38')];if(!_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3b')](_0xfed1('0x3c'))){_0x53b0c9[_0xfed1('0x1e')]=qs['limit'](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x1e')]);_0x53b0c9[_0xfed1('0x1d')]=qs[_0xfed1('0x1d')](_0x3106ee['query']['offset']);}_0x53b0c9[_0xfed1('0x3d')]=qs[_0xfed1('0x3e')](_0x3106ee[_0xfed1('0x33')][_0xfed1('0x3e')]);_0x53b0c9[_0xfed1('0x3f')]=qs[_0xfed1('0x35')](_[_0xfed1('0x40')](_0x3106ee[_0xfed1('0x33')],_0x1cec64['filters']),_0x2d334e);if(_0x3106ee['query'][_0xfed1('0x41')]){_0x53b0c9[_0xfed1('0x3f')]=_['merge'](_0x53b0c9[_0xfed1('0x3f')],{'$or':_[_0xfed1('0x32')](_0x2d334e,function(_0x3b0973){if(_0x3b0973[_0xfed1('0x2f')]!==_0xfed1('0x42')){var _0x31ffeb={};_0x31ffeb[_0x3b0973[_0xfed1('0x2a')]]={'$like':'%'+_0x3106ee[_0xfed1('0x33')][_0xfed1('0x41')]+'%'};return _0x31ffeb;}})});}_0x53b0c9=_['merge']({},_0x53b0c9,_0x3106ee['options']);var _0x5598dc={'where':_0x53b0c9[_0xfed1('0x3f')]};return db[_0xfed1('0x2c')][_0xfed1('0x20')](_0x5598dc)['then'](function(_0x3454e6){_0x42c950['count']=_0x3454e6;if(_0x3106ee[_0xfed1('0x33')][_0xfed1('0x43')]){_0x53b0c9[_0xfed1('0x44')]=[{'all':!![]}];}return db['ScreenRecording'][_0xfed1('0x45')](_0x53b0c9);})[_0xfed1('0x25')](function(_0x422433){_0x42c950['rows']=_0x422433;return _0x42c950;})[_0xfed1('0x25')](respondWithFilteredResult(_0x4e5249,_0x53b0c9))['catch'](handleError(_0x4e5249,null));};exports[_0xfed1('0x46')]=function(_0xf1f739,_0x229fc7){var _0x13c087={'raw':![],'where':{'id':_0xf1f739[_0xfed1('0x47')]['id']}},_0x1bfbe8={};_0x1bfbe8[_0xfed1('0x38')]=_[_0xfed1('0x34')](db[_0xfed1('0x2c')]['rawAttributes']);_0x1bfbe8[_0xfed1('0x33')]=_[_0xfed1('0x34')](_0xf1f739[_0xfed1('0x33')]);_0x1bfbe8['filters']=_['intersection'](_0x1bfbe8[_0xfed1('0x38')],_0x1bfbe8[_0xfed1('0x33')]);_0x13c087[_0xfed1('0x37')]=_[_0xfed1('0x36')](_0x1bfbe8[_0xfed1('0x38')],qs[_0xfed1('0x39')](_0xf1f739[_0xfed1('0x33')][_0xfed1('0x39')]));_0x13c087[_0xfed1('0x37')]=_0x13c087[_0xfed1('0x37')][_0xfed1('0x3a')]?_0x13c087[_0xfed1('0x37')]:_0x1bfbe8['model'];if(_0xf1f739[_0xfed1('0x33')][_0xfed1('0x43')]){_0x13c087[_0xfed1('0x44')]=[{'all':!![]}];}_0x13c087=_[_0xfed1('0x48')]({},_0x13c087,_0xf1f739[_0xfed1('0x49')]);return db[_0xfed1('0x2c')]['find'](_0x13c087)[_0xfed1('0x25')](handleEntityNotFound(_0x229fc7,null))[_0xfed1('0x25')](respondWithResult(_0x229fc7,null))[_0xfed1('0x4a')](handleError(_0x229fc7,null));};exports['create']=function(_0x22874a,_0x10f98d){return db[_0xfed1('0x2c')][_0xfed1('0x4b')](_0x22874a['body'],{})[_0xfed1('0x25')](respondWithResult(_0x10f98d,0xc9))[_0xfed1('0x4a')](handleError(_0x10f98d,null));};exports[_0xfed1('0x24')]=function(_0x42761f,_0x14745e){if(_0x42761f[_0xfed1('0x4c')]['id']){delete _0x42761f[_0xfed1('0x4c')]['id'];}delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4d')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4e')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x4f')];delete _0x42761f[_0xfed1('0x4c')][_0xfed1('0x50')];return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x42761f[_0xfed1('0x47')]['id']}})['then'](handleEntityNotFound(_0x14745e,null))['then'](saveUpdates(_0x42761f[_0xfed1('0x4c')],null))[_0xfed1('0x25')](respondWithResult(_0x14745e,null))[_0xfed1('0x4a')](handleError(_0x14745e,null));};exports[_0xfed1('0x52')]=function(_0x5da599,_0x3c2534){return db[_0xfed1('0x2c')]['describe']()['then'](respondWithResult(_0x3c2534,null))['catch'](handleError(_0x3c2534,null));};exports[_0xfed1('0x53')]=function(_0x1aaa3d,_0x15e90f,_0x1d8ef2){var _0x2665c8=require(_0xfed1('0x54'));var _0x1a9f22=![];var _0x144102={};if(_0x1aaa3d[_0xfed1('0x33')][_0xfed1('0x2f')]&&_0x1aaa3d['query']['type']===_0xfed1('0x55')){_0x144102[_0xfed1('0x55')]=_0x1aaa3d[_0xfed1('0x47')]['id'];}else{_0x144102['id']=_0x1aaa3d[_0xfed1('0x47')]['id'];}return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':_0x144102,'attributes':['id',_0xfed1('0x50')],'raw':!![]})[_0xfed1('0x25')](handleEntityNotFound(_0x15e90f,null))[_0xfed1('0x25')](function(_0x427fa6){if(_0x427fa6){var _0xbd49dc=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x427fa6[_0xfed1('0x50')]);var _0x3a7a42=util[_0xfed1('0x59')]('%s.cypher',_0xbd49dc);if(fs['existsSync'](_0x3a7a42)){_0x1a9f22=!![];return _0x2665c8[_0xfed1('0x5a')](_0x3a7a42,_0xbd49dc,config[_0xfed1('0x5b')][_0xfed1('0x5c')])[_0xfed1('0x25')](function(){return _0x427fa6;});}return _0x427fa6;}})[_0xfed1('0x25')](function(_0x41a22a){if(_0x41a22a){var _0x2ccdc3=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x41a22a[_0xfed1('0x50')]);if(!fs[_0xfed1('0x5d')](_0x2ccdc3)){throw new db[(_0xfed1('0x5e'))][(_0xfed1('0x5f'))]('ScreenRecording\x20not\x20found');}if(_0x41a22a[_0xfed1('0x60')]){return _0x15e90f['download'](_0x2ccdc3,_0x41a22a['filename']+path[_0xfed1('0x61')](_0x2ccdc3),function(){if(_0x1a9f22){fs['unlink'](_0x2ccdc3);}});}else{return _0x15e90f[_0xfed1('0x53')](_0x2ccdc3,function(_0x5acc45){if(_0x1a9f22){fs[_0xfed1('0x62')](_0x2ccdc3);}});}}})[_0xfed1('0x4a')](function(_0x53f0ab){if(_0x53f0ab[_0xfed1('0x63')]===_0xfed1('0x64')){_0x15e90f['status'](0x194)[_0xfed1('0x2b')](_0xfed1('0x65'));}else{return handleError(_0x15e90f,null);}});};exports[_0xfed1('0x26')]=function(_0x2f37b9,_0x59a23a){return db[_0xfed1('0x2c')][_0xfed1('0x51')]({'where':{'id':_0x2f37b9[_0xfed1('0x47')]['id']}})[_0xfed1('0x25')](function(_0x23347a){if(_[_0xfed1('0x66')](_0x23347a)){throw new ReferenceError(_0xfed1('0x67'));}return _0x23347a;})[_0xfed1('0x25')](function(_0x5c043d){var _0x2d66ec=path[_0xfed1('0x56')](config[_0xfed1('0x57')],_0xfed1('0x58'),_0x5c043d[_0xfed1('0x50')]);logger[_0xfed1('0x68')]('cancellazione\x20fisica\x20documento\x20%s',_0x2d66ec);if(!_['isNil'](_0x5c043d['value'])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}_0x2d66ec=_0x2d66ec+_0xfed1('0x6b');if(!_['isNil'](_0x5c043d[_0xfed1('0x50')])&&fs[_0xfed1('0x5d')](_0x2d66ec)){logger[_0xfed1('0x68')](_0xfed1('0x69')+_0x2d66ec+_0xfed1('0x6a'));fs['unlinkSync'](_0x2d66ec);}return _0x5c043d;})[_0xfed1('0x25')](function(_0x6b74cb){if(!_0x6b74cb)throw new InternalError();return _0x6b74cb[_0xfed1('0x26')]();})['then'](function(){_0x59a23a[_0xfed1('0x1a')](0xcc)[_0xfed1('0x1b')]();})[_0xfed1('0x4a')](handleError(_0x59a23a,null));};
\ No newline at end of file
+var _0x8ef6=['keys','find','create','update','body','createdAt','closedAt','describe','download','../../components/encryptor','uniqueid','value','join','server/files/screen_recordings','existsSync','decryptFile','secrets','recording','root','ValidationError','ScreenRecording\x20not\x20found','filename','extname','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','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','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','ScreenRecording','rawAttributes','type','model','differenceBy','format','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','map','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','params'];(function(_0xf5952f,_0x47587f){var _0x553e0b=function(_0x46f290){while(--_0x46f290){_0xf5952f['push'](_0xf5952f['shift']());}};_0x553e0b(++_0x47587f);}(_0x8ef6,0xf2));var _0x68ef=function(_0x112753,_0x4b15ae){_0x112753=_0x112753-0x0;var _0x3693d6=_0x8ef6[_0x112753];return _0x3693d6;};'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'];function respondWithStatusCode(_0x1e117a,_0x454ef4){_0x454ef4=_0x454ef4||0xcc;return function(_0x40f253){if(_0x40f253){return _0x1e117a[_0x68ef('0x1b')](_0x454ef4);}return _0x1e117a['status'](_0x454ef4)[_0x68ef('0x1c')]();};}function respondWithResult(_0xc50cce,_0x2657c5){_0x2657c5=_0x2657c5||0xc8;return function(_0x47fbb5){if(_0x47fbb5){return _0xc50cce[_0x68ef('0x1d')](_0x2657c5)[_0x68ef('0x1e')](_0x47fbb5);}};}function respondWithFilteredResult(_0x24682d,_0x5005ba){return function(_0x35493d){if(_0x35493d){var _0x37c4cc=typeof _0x5005ba[_0x68ef('0x1f')]===_0x68ef('0x20')&&typeof _0x5005ba['limit']===_0x68ef('0x20');var _0x54139e=_0x35493d['count'];var _0x2633c1=_0x37c4cc?0x0:_0x5005ba[_0x68ef('0x1f')];var _0x4ade0d=_0x37c4cc?_0x35493d['count']:_0x5005ba[_0x68ef('0x1f')]+_0x5005ba[_0x68ef('0x21')];var _0x318514;if(_0x4ade0d>=_0x54139e){_0x4ade0d=_0x54139e;_0x318514=0xc8;}else{_0x318514=0xce;}_0x24682d['status'](_0x318514);return _0x24682d[_0x68ef('0x22')](_0x68ef('0x23'),_0x2633c1+'-'+_0x4ade0d+'/'+_0x54139e)[_0x68ef('0x1e')](_0x35493d);}return null;};}function patchUpdates(_0x5b246b){return function(_0x3c46d4){try{jsonpatch[_0x68ef('0x24')](_0x3c46d4,_0x5b246b,!![]);}catch(_0x5af19f){return BPromise[_0x68ef('0x25')](_0x5af19f);}return _0x3c46d4[_0x68ef('0x26')]();};}function saveUpdates(_0x19aa3d,_0x5ddec7){return function(_0x59723c){if(_0x59723c){return _0x59723c['update'](_0x19aa3d)[_0x68ef('0x27')](function(_0x2023f2){return _0x2023f2;});}return null;};}function removeEntity(_0x312cc9,_0x2e6e39){return function(_0x438b4c){if(_0x438b4c){return _0x438b4c[_0x68ef('0x28')]()[_0x68ef('0x27')](function(){_0x312cc9[_0x68ef('0x1d')](0xcc)[_0x68ef('0x1c')]();});}};}function handleEntityNotFound(_0x13280b,_0x5e4dbe){return function(_0x178460){if(!_0x178460){_0x13280b['sendStatus'](0x194);}return _0x178460;};}function handleError(_0x599243,_0x55d8b0){_0x55d8b0=_0x55d8b0||0x1f4;return function(_0x1a7ce1){logger[_0x68ef('0x29')](_0x1a7ce1[_0x68ef('0x2a')]);if(_0x1a7ce1[_0x68ef('0x2b')]){delete _0x1a7ce1['name'];}_0x599243['status'](_0x55d8b0)[_0x68ef('0x2c')](_0x1a7ce1);};}exports[_0x68ef('0x2d')]=function(_0x7bf96,_0x263b30){var _0x22ef25={},_0x201884={},_0x26288a={'count':0x0,'rows':[]};var _0x4579cb=_['map'](db[_0x68ef('0x2e')][_0x68ef('0x2f')],function(_0x132d9e){return{'name':_0x132d9e['fieldName'],'type':_0x132d9e[_0x68ef('0x30')]['key']};});_0x201884[_0x68ef('0x31')]=_[_0x68ef('0x32')](_['map'](_0x4579cb,'name'),[_0x68ef('0x33')]);_0x201884[_0x68ef('0x34')]=_['keys'](_0x7bf96[_0x68ef('0x34')]);_0x201884[_0x68ef('0x35')]=_[_0x68ef('0x36')](_0x201884[_0x68ef('0x31')],_0x201884['query']);_0x22ef25[_0x68ef('0x37')]=_[_0x68ef('0x36')](_0x201884['model'],qs[_0x68ef('0x38')](_0x7bf96['query'][_0x68ef('0x38')]));_0x22ef25[_0x68ef('0x37')]=_0x22ef25['attributes'][_0x68ef('0x39')]?_0x22ef25['attributes']:_0x201884[_0x68ef('0x31')];if(!_0x7bf96['query'][_0x68ef('0x3a')](_0x68ef('0x3b'))){_0x22ef25[_0x68ef('0x21')]=qs['limit'](_0x7bf96[_0x68ef('0x34')]['limit']);_0x22ef25[_0x68ef('0x1f')]=qs['offset'](_0x7bf96[_0x68ef('0x34')][_0x68ef('0x1f')]);}_0x22ef25[_0x68ef('0x3c')]=qs[_0x68ef('0x3d')](_0x7bf96[_0x68ef('0x34')][_0x68ef('0x3d')]);_0x22ef25['where']=qs[_0x68ef('0x35')](_[_0x68ef('0x3e')](_0x7bf96[_0x68ef('0x34')],_0x201884['filters']),_0x4579cb);if(_0x7bf96[_0x68ef('0x34')][_0x68ef('0x3f')]){_0x22ef25[_0x68ef('0x40')]=_['merge'](_0x22ef25['where'],{'$or':_[_0x68ef('0x41')](_0x4579cb,function(_0xec7de3){if(_0xec7de3[_0x68ef('0x30')]!==_0x68ef('0x42')){var _0x401459={};_0x401459[_0xec7de3[_0x68ef('0x2b')]]={'$like':'%'+_0x7bf96[_0x68ef('0x34')]['filter']+'%'};return _0x401459;}})});}_0x22ef25=_[_0x68ef('0x43')]({},_0x22ef25,_0x7bf96[_0x68ef('0x44')]);var _0x2f6ee0={'where':_0x22ef25[_0x68ef('0x40')]};return db['ScreenRecording'][_0x68ef('0x45')](_0x2f6ee0)[_0x68ef('0x27')](function(_0xcf595d){_0x26288a[_0x68ef('0x45')]=_0xcf595d;if(_0x7bf96[_0x68ef('0x34')][_0x68ef('0x46')]){_0x22ef25['include']=[{'all':!![]}];}return db[_0x68ef('0x2e')][_0x68ef('0x47')](_0x22ef25);})[_0x68ef('0x27')](function(_0x43796b){_0x26288a[_0x68ef('0x48')]=_0x43796b;return _0x26288a;})[_0x68ef('0x27')](respondWithFilteredResult(_0x263b30,_0x22ef25))[_0x68ef('0x49')](handleError(_0x263b30,null));};exports[_0x68ef('0x4a')]=function(_0xc687ab,_0x531096){var _0xad1a28={'raw':![],'where':{'id':_0xc687ab[_0x68ef('0x4b')]['id']}},_0x19d7a1={};_0x19d7a1[_0x68ef('0x31')]=_[_0x68ef('0x4c')](db[_0x68ef('0x2e')][_0x68ef('0x2f')]);_0x19d7a1['query']=_[_0x68ef('0x4c')](_0xc687ab['query']);_0x19d7a1[_0x68ef('0x35')]=_[_0x68ef('0x36')](_0x19d7a1[_0x68ef('0x31')],_0x19d7a1[_0x68ef('0x34')]);_0xad1a28['attributes']=_[_0x68ef('0x36')](_0x19d7a1['model'],qs[_0x68ef('0x38')](_0xc687ab['query'][_0x68ef('0x38')]));_0xad1a28[_0x68ef('0x37')]=_0xad1a28[_0x68ef('0x37')]['length']?_0xad1a28['attributes']:_0x19d7a1[_0x68ef('0x31')];if(_0xc687ab[_0x68ef('0x34')]['includeAll']){_0xad1a28['include']=[{'all':!![]}];}_0xad1a28=_['merge']({},_0xad1a28,_0xc687ab[_0x68ef('0x44')]);return db[_0x68ef('0x2e')][_0x68ef('0x4d')](_0xad1a28)[_0x68ef('0x27')](handleEntityNotFound(_0x531096,null))[_0x68ef('0x27')](respondWithResult(_0x531096,null))['catch'](handleError(_0x531096,null));};exports['create']=function(_0xc39f5b,_0x21f064){return db[_0x68ef('0x2e')][_0x68ef('0x4e')](_0xc39f5b['body'],{})[_0x68ef('0x27')](respondWithResult(_0x21f064,0xc9))[_0x68ef('0x49')](handleError(_0x21f064,null));};exports[_0x68ef('0x4f')]=function(_0x14142a,_0x53880c){if(_0x14142a['body']['id']){delete _0x14142a[_0x68ef('0x50')]['id'];}delete _0x14142a[_0x68ef('0x50')]['duration'];delete _0x14142a[_0x68ef('0x50')][_0x68ef('0x51')];delete _0x14142a[_0x68ef('0x50')][_0x68ef('0x52')];delete _0x14142a[_0x68ef('0x50')]['value'];return db[_0x68ef('0x2e')][_0x68ef('0x4d')]({'where':{'id':_0x14142a[_0x68ef('0x4b')]['id']}})['then'](handleEntityNotFound(_0x53880c,null))[_0x68ef('0x27')](saveUpdates(_0x14142a[_0x68ef('0x50')],null))[_0x68ef('0x27')](respondWithResult(_0x53880c,null))['catch'](handleError(_0x53880c,null));};exports[_0x68ef('0x53')]=function(_0x59e8ee,_0x574573){return db[_0x68ef('0x2e')]['describe']()[_0x68ef('0x27')](respondWithResult(_0x574573,null))[_0x68ef('0x49')](handleError(_0x574573,null));};exports[_0x68ef('0x54')]=function(_0x1e651f,_0x2a0be0,_0x45ae42){var _0x363498=require(_0x68ef('0x55'));var _0x2b35f4=![];var _0x247915={};if(_0x1e651f['query']['type']&&_0x1e651f[_0x68ef('0x34')][_0x68ef('0x30')]===_0x68ef('0x56')){_0x247915[_0x68ef('0x56')]=_0x1e651f[_0x68ef('0x4b')]['id'];}else{_0x247915['id']=_0x1e651f[_0x68ef('0x4b')]['id'];}return db[_0x68ef('0x2e')][_0x68ef('0x4d')]({'where':_0x247915,'attributes':['id',_0x68ef('0x57')],'raw':!![]})['then'](handleEntityNotFound(_0x2a0be0,null))['then'](function(_0x42a4b2){if(_0x42a4b2){var _0x5781c8=path[_0x68ef('0x58')](config['root'],_0x68ef('0x59'),_0x42a4b2[_0x68ef('0x57')]);var _0x552736=util[_0x68ef('0x33')]('%s.cypher',_0x5781c8);if(fs[_0x68ef('0x5a')](_0x552736)){_0x2b35f4=!![];return _0x363498[_0x68ef('0x5b')](_0x552736,_0x5781c8,config[_0x68ef('0x5c')][_0x68ef('0x5d')])[_0x68ef('0x27')](function(){return _0x42a4b2;});}return _0x42a4b2;}})[_0x68ef('0x27')](function(_0x5c347c){if(_0x5c347c){var _0x1cdaef=path[_0x68ef('0x58')](config[_0x68ef('0x5e')],_0x68ef('0x59'),_0x5c347c[_0x68ef('0x57')]);if(!fs[_0x68ef('0x5a')](_0x1cdaef)){throw new db['Sequelize'][(_0x68ef('0x5f'))](_0x68ef('0x60'));}if(_0x5c347c['filename']){return _0x2a0be0[_0x68ef('0x54')](_0x1cdaef,_0x5c347c[_0x68ef('0x61')]+path[_0x68ef('0x62')](_0x1cdaef),function(){if(_0x2b35f4){fs['unlink'](_0x1cdaef);}});}else{return _0x2a0be0[_0x68ef('0x54')](_0x1cdaef,function(_0x49d197){if(_0x2b35f4){fs['unlink'](_0x1cdaef);}});}}})[_0x68ef('0x49')](function(_0x540da5){if(_0x540da5[_0x68ef('0x63')]==='ScreenRecording\x20not\x20found'){_0x2a0be0[_0x68ef('0x1d')](0x194)[_0x68ef('0x2c')](_0x68ef('0x64'));}else{return handleError(_0x2a0be0,null);}});};exports[_0x68ef('0x28')]=function(_0x19ce17,_0x19a9c4){return db['ScreenRecording'][_0x68ef('0x4d')]({'where':{'id':_0x19ce17['params']['id']}})[_0x68ef('0x27')](function(_0x4b0c3e){if(_[_0x68ef('0x65')](_0x4b0c3e)){throw new ReferenceError(_0x68ef('0x66'));}return _0x4b0c3e;})[_0x68ef('0x27')](function(_0xf0a40f){var _0x2f409c=path[_0x68ef('0x58')](config[_0x68ef('0x5e')],'server/files/screen_recordings',_0xf0a40f[_0x68ef('0x57')]);logger[_0x68ef('0x67')](_0x68ef('0x68'),_0x2f409c);if(!_[_0x68ef('0x65')](_0xf0a40f[_0x68ef('0x57')])&&fs['existsSync'](_0x2f409c)){logger[_0x68ef('0x67')]('File:\x20\x22'+_0x2f409c+_0x68ef('0x69'));fs['unlinkSync'](_0x2f409c);}_0x2f409c=_0x2f409c+'.cypher';if(!_[_0x68ef('0x65')](_0xf0a40f[_0x68ef('0x57')])&&fs[_0x68ef('0x5a')](_0x2f409c)){logger[_0x68ef('0x67')]('File:\x20\x22'+_0x2f409c+_0x68ef('0x69'));fs['unlinkSync'](_0x2f409c);}return _0xf0a40f;})[_0x68ef('0x27')](function(_0x2d916e){if(!_0x2d916e)throw new InternalError();return _0x2d916e[_0x68ef('0x28')]();})['then'](function(){_0x19a9c4['status'](0xcc)[_0x68ef('0x1c')]();})[_0x68ef('0x49')](handleError(_0x19a9c4,null));};
\ No newline at end of file
index aadf3eb..8325529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf88e=['util','../../config/logger','moment','bluebird','request-promise','path','./screenRecording.attributes','exports','interactionid'];(function(_0x2119fe,_0x4a5aee){var _0x48bbf9=function(_0x5d4dee){while(--_0x5d4dee){_0x2119fe['push'](_0x2119fe['shift']());}};_0x48bbf9(++_0x4a5aee);}(_0xf88e,0x13b));var _0xef88=function(_0x18812f,_0x281b49){_0x18812f=_0x18812f-0x0;var _0x2400ff=_0xf88e[_0x18812f];return _0x2400ff;};'use strict';var _=require('lodash');var util=require(_0xef88('0x0'));var logger=require(_0xef88('0x1'))('api');var moment=require(_0xef88('0x2'));var BPromise=require(_0xef88('0x3'));var rp=require(_0xef88('0x4'));var fs=require('fs');var path=require(_0xef88('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xef88('0x6'));module[_0xef88('0x7')]=function(_0x20fa2f,_0x169dbc){return _0x20fa2f['define']('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xef88('0x8'),'fields':[_0xef88('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb597=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./screenRecording.attributes','exports','ScreenRecording','screen_recordings','interactionid','lodash'];(function(_0x51c819,_0xd812db){var _0x15c5d2=function(_0x2977f0){while(--_0x2977f0){_0x51c819['push'](_0x51c819['shift']());}};_0x15c5d2(++_0xd812db);}(_0xb597,0xbf));var _0x7b59=function(_0x1d1661,_0x50e3e5){_0x1d1661=_0x1d1661-0x0;var _0x1a33f4=_0xb597[_0x1d1661];return _0x1a33f4;};'use strict';var _=require(_0x7b59('0x0'));var util=require('util');var logger=require(_0x7b59('0x1'))('api');var moment=require(_0x7b59('0x2'));var BPromise=require(_0x7b59('0x3'));var rp=require(_0x7b59('0x4'));var fs=require('fs');var path=require(_0x7b59('0x5'));var rimraf=require('rimraf');var config=require(_0x7b59('0x6'));var attributes=require(_0x7b59('0x7'));module[_0x7b59('0x8')]=function(_0x38b080,_0x376e48){return _0x38b080['define'](_0x7b59('0x9'),attributes,{'tableName':_0x7b59('0xa'),'paranoid':![],'indexes':[{'name':_0x7b59('0xb'),'fields':[_0x7b59('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4e8cbfe..b23fff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c9=['message','info','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','ScreenRecording,\x20%s,\x20%s','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5072f9,_0x32d5d4){var _0x411a80=function(_0xeb8f68){while(--_0xeb8f68){_0x5072f9['push'](_0x5072f9['shift']());}};_0x411a80(++_0x32d5d4);}(_0xc7c9,0x96));var _0x9c7c=function(_0x150ef1,_0x5b4d8c){_0x150ef1=_0x150ef1-0x0;var _0x11175f=_0xc7c9[_0x150ef1];return _0x11175f;};'use strict';var _=require(_0x9c7c('0x0'));var util=require('util');var moment=require(_0x9c7c('0x1'));var BPromise=require('bluebird');var rs=require(_0x9c7c('0x2'));var fs=require('fs');var Redis=require(_0x9c7c('0x3'));var db=require(_0x9c7c('0x4'))['db'];var utils=require(_0x9c7c('0x5'));var logger=require(_0x9c7c('0x6'))(_0x9c7c('0x7'));var config=require('../../config/environment');var jayson=require(_0x9c7c('0x8'));var client=jayson[_0x9c7c('0x9')][_0x9c7c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d5c39,_0x1e6770,_0x44a188){return new BPromise(function(_0x4bd0bb,_0x46cae6){return client[_0x9c7c('0xb')](_0x4d5c39,_0x44a188)[_0x9c7c('0xc')](function(_0x57ef57){logger['info'](_0x9c7c('0xd'),_0x1e6770,'request\x20sent');logger['debug'](_0x9c7c('0xe'),_0x1e6770,_0x9c7c('0xf'),JSON[_0x9c7c('0x10')](_0x57ef57));if(_0x57ef57['error']){if(_0x57ef57[_0x9c7c('0x11')]['code']===0x1f4){logger['error'](_0x9c7c('0xd'),_0x1e6770,_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);return _0x46cae6(_0x57ef57['error']['message']);}logger['error'](_0x9c7c('0xd'),_0x1e6770,_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);return _0x4bd0bb(_0x57ef57[_0x9c7c('0x11')][_0x9c7c('0x12')]);}else{logger[_0x9c7c('0x13')](_0x9c7c('0xd'),_0x1e6770,'request\x20sent');_0x4bd0bb(_0x57ef57[_0x9c7c('0x14')][_0x9c7c('0x12')]);}})['catch'](function(_0x14554d){logger[_0x9c7c('0x11')](_0x9c7c('0xd'),_0x1e6770,_0x14554d);_0x46cae6(_0x14554d);});});}
\ No newline at end of file
+var _0x95a8=['ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','ScreenRecording,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','client','http','request','then','info','request\x20sent','debug'];(function(_0x8795e6,_0x3ff497){var _0x236c3e=function(_0x260ced){while(--_0x260ced){_0x8795e6['push'](_0x8795e6['shift']());}};_0x236c3e(++_0x3ff497);}(_0x95a8,0xd8));var _0x895a=function(_0x14fe1a,_0x5bc7c8){_0x14fe1a=_0x14fe1a-0x0;var _0x540aa8=_0x95a8[_0x14fe1a];return _0x540aa8;};'use strict';var _=require(_0x895a('0x0'));var util=require(_0x895a('0x1'));var moment=require(_0x895a('0x2'));var BPromise=require('bluebird');var rs=require(_0x895a('0x3'));var fs=require('fs');var Redis=require(_0x895a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x895a('0x5')][_0x895a('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x56ecc4,_0x23afab,_0x827bd5){return new BPromise(function(_0x458463,_0x161d1c){return client[_0x895a('0x7')](_0x56ecc4,_0x827bd5)[_0x895a('0x8')](function(_0x2c95c2){logger[_0x895a('0x9')]('ScreenRecording,\x20%s,\x20%s',_0x23afab,_0x895a('0xa'));logger[_0x895a('0xb')](_0x895a('0xc'),_0x23afab,'request\x20sent',JSON['stringify'](_0x2c95c2));if(_0x2c95c2[_0x895a('0xd')]){if(_0x2c95c2['error'][_0x895a('0xe')]===0x1f4){logger[_0x895a('0xd')]('ScreenRecording,\x20%s,\x20%s',_0x23afab,_0x2c95c2[_0x895a('0xd')][_0x895a('0xf')]);return _0x161d1c(_0x2c95c2[_0x895a('0xd')][_0x895a('0xf')]);}logger['error'](_0x895a('0x10'),_0x23afab,_0x2c95c2[_0x895a('0xd')][_0x895a('0xf')]);return _0x458463(_0x2c95c2[_0x895a('0xd')][_0x895a('0xf')]);}else{logger[_0x895a('0x9')]('ScreenRecording,\x20%s,\x20%s',_0x23afab,_0x895a('0xa'));_0x458463(_0x2c95c2[_0x895a('0x11')][_0x895a('0xf')]);}})[_0x895a('0x12')](function(_0x42ee84){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x23afab,_0x42ee84);_0x161d1c(_0x42ee84);});});}
\ No newline at end of file
index 1956780..e541946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfabe=['root','server/files/images/logos/','format','extname','originalname','post','file','addLogo','%s%s','logologin','single','addLogoLogin','preferred','favicon','addFavicon','put','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','/:id','/:id/logo','getLogo','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join'];(function(_0x430185,_0xb3bd00){var _0x412b86=function(_0x5ac609){while(--_0x5ac609){_0x430185['push'](_0x430185['shift']());}};_0x412b86(++_0xb3bd00);}(_0xfabe,0xe4));var _0xefab=function(_0x9289e8,_0x37c8a2){_0x9289e8=_0x9289e8-0x0;var _0x60ef2b=_0xfabe[_0x9289e8];return _0x60ef2b;};'use strict';var multer=require(_0xefab('0x0'));var util=require(_0xefab('0x1'));var path=require('path');var timeout=require(_0xefab('0x2'));var express=require(_0xefab('0x3'));var router=express['Router']();var fs_extra=require(_0xefab('0x4'));var auth=require(_0xefab('0x5'));var interaction=require(_0xefab('0x6'));var config=require(_0xefab('0x7'));var controller=require(_0xefab('0x8'));router[_0xefab('0x9')]('/',auth[_0xefab('0xa')](),controller['index']);router[_0xefab('0x9')](_0xefab('0xb'),controller['getDate']);router['get'](_0xefab('0xc'),controller['show']);router['get'](_0xefab('0xd'),controller[_0xefab('0xe')]);router[_0xefab('0x9')](_0xefab('0xf'),controller['getLogoLogin']);router['get'](_0xefab('0x10'),controller[_0xefab('0x11')]);router[_0xefab('0x9')](_0xefab('0x12'),controller[_0xefab('0x13')]);router['get'](_0xefab('0x14'),controller[_0xefab('0x15')]);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x372075,_0x25936d,_0x1d3c48){_0x1d3c48(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x112a00,_0x24d461,_0x59b44a){_0x59b44a(null,util[_0xefab('0x1a')]('%s%s','logo',path[_0xefab('0x1b')](_0x24d461[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0xd'),upload['single'](_0xefab('0x1e')),controller[_0xefab('0x1f')]);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x4da849,_0x224b16,_0xf5b551){_0xf5b551(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x40b677,_0x4a298b,_0x50f652){_0x50f652(null,util['format'](_0xefab('0x20'),_0xefab('0x21'),path[_0xefab('0x1b')](_0x4a298b['originalname'])));}})});router[_0xefab('0x1d')](_0xefab('0xf'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller[_0xefab('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1af939,_0x2e69bc,_0x234062){_0x234062(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0xcb8f31,_0x16c2ed,_0xcb9ffc){_0xcb9ffc(null,util[_0xefab('0x1a')](_0xefab('0x20'),_0xefab('0x24'),path[_0xefab('0x1b')](_0x16c2ed[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0x12'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller['addPreferred']);var upload=multer({'storage':multer[_0xefab('0x16')]({'destination':function(_0x3e41c4,_0x19f4ff,_0x4a4d3b){_0x4a4d3b(null,path[_0xefab('0x17')](config[_0xefab('0x18')],_0xefab('0x19')));},'filename':function(_0x51e9ac,_0x33bf8b,_0x10ec30){_0x10ec30(null,util[_0xefab('0x1a')](_0xefab('0x20'),_0xefab('0x25'),path[_0xefab('0x1b')](_0x33bf8b[_0xefab('0x1c')])));}})});router[_0xefab('0x1d')](_0xefab('0x14'),upload[_0xefab('0x22')](_0xefab('0x1e')),controller[_0xefab('0x26')]);router[_0xefab('0x27')](_0xefab('0xc'),auth[_0xefab('0xa')](),controller[_0xefab('0x28')]);module[_0xefab('0x29')]=router;
\ No newline at end of file
+var _0x501d=['gdpr','/:id/favicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','extname','originalname','post','single','file','logologin','addLogoLogin','preferred','addPreferred','favicon','addFavicon','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./setting.controller','index','get','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x501d,0x94));var _0xd501=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x501d[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xd501('0x0'));var util=require(_0xd501('0x1'));var path=require(_0xd501('0x2'));var timeout=require('connect-timeout');var express=require(_0xd501('0x3'));var router=express[_0xd501('0x4')]();var fs_extra=require(_0xd501('0x5'));var auth=require(_0xd501('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd501('0x7'));var controller=require(_0xd501('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd501('0x9')]);router[_0xd501('0xa')](_0xd501('0xb'),controller[_0xd501('0xc')]);router['get'](_0xd501('0xd'),controller[_0xd501('0xe')]);router[_0xd501('0xa')](_0xd501('0xf'),controller[_0xd501('0x10')]);router[_0xd501('0xa')](_0xd501('0x11'),controller[_0xd501('0x12')]);router[_0xd501('0xa')](_0xd501('0x13'),controller[_0xd501('0x14')]);router['get']('/:id/preferred',controller['getPreferred']);router['get'](_0xd501('0x15'),controller['getFavicon']);var upload=multer({'storage':multer[_0xd501('0x16')]({'destination':function(_0xd5f238,_0x267524,_0x32c394){_0x32c394(null,path[_0xd501('0x17')](config[_0xd501('0x18')],_0xd501('0x19')));},'filename':function(_0x599e44,_0x27af39,_0x54f5e3){_0x54f5e3(null,util[_0xd501('0x1a')](_0xd501('0x1b'),'logo',path[_0xd501('0x1c')](_0x27af39[_0xd501('0x1d')])));}})});router[_0xd501('0x1e')]('/:id/logo',upload[_0xd501('0x1f')](_0xd501('0x20')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x62ea5d,_0x264bc3,_0x31efd1){_0x31efd1(null,path[_0xd501('0x17')](config[_0xd501('0x18')],_0xd501('0x19')));},'filename':function(_0x4afbc7,_0x43ed20,_0x51b091){_0x51b091(null,util['format'](_0xd501('0x1b'),_0xd501('0x21'),path[_0xd501('0x1c')](_0x43ed20[_0xd501('0x1d')])));}})});router[_0xd501('0x1e')](_0xd501('0x11'),upload[_0xd501('0x1f')](_0xd501('0x20')),controller[_0xd501('0x22')]);var upload=multer({'storage':multer[_0xd501('0x16')]({'destination':function(_0x295c16,_0x64b297,_0x13bcab){_0x13bcab(null,path[_0xd501('0x17')](config[_0xd501('0x18')],_0xd501('0x19')));},'filename':function(_0x39279a,_0x5ac1af,_0x3ee6ae){_0x3ee6ae(null,util[_0xd501('0x1a')](_0xd501('0x1b'),_0xd501('0x23'),path[_0xd501('0x1c')](_0x5ac1af[_0xd501('0x1d')])));}})});router['post']('/:id/preferred',upload['single'](_0xd501('0x20')),controller[_0xd501('0x24')]);var upload=multer({'storage':multer[_0xd501('0x16')]({'destination':function(_0x37b3f1,_0x1da1c5,_0x17c608){_0x17c608(null,path[_0xd501('0x17')](config[_0xd501('0x18')],_0xd501('0x19')));},'filename':function(_0x9df2f,_0x39e48e,_0x366f8e){_0x366f8e(null,util[_0xd501('0x1a')](_0xd501('0x1b'),_0xd501('0x25'),path[_0xd501('0x1c')](_0x39e48e[_0xd501('0x1d')])));}})});router[_0xd501('0x1e')]('/:id/favicon',upload[_0xd501('0x1f')](_0xd501('0x20')),controller[_0xd501('0x26')]);router[_0xd501('0x27')](_0xd501('0xd'),auth['isAuthenticated'](),controller[_0xd501('0x28')]);module[_0xd501('0x29')]=router;
\ No newline at end of file
index 254111c..df7290d 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(_0x101964,_0xeacab3){var _0x564d1e=function(_0x1883ff){while(--_0x1883ff){_0x101964['push'](_0x101964['shift']());}};_0x564d1e(++_0xeacab3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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(_0x164ade,_0x5dd435){var _0x543dcd=function(_0x41fed2){while(--_0x41fed2){_0x164ade['push'](_0x164ade['shift']());}};_0x543dcd(++_0x5dd435);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'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 19ea140..b08675e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919d=['Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','name','send','index','map','Setting','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','params','fields','update','body','find','addLogo','file','filename','logo','addLogoLogin','getLogo','getLicense','loginLogo','favicon','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','preferred','defaultPreferred','default_loginLogo.svg','upperFirst','securePassword','addPreferred','getPreferred','server/files/images/logos','default_preferred.png','getFavicon','defaultLogo','default_favicon.ico','getDate','utcOffset','format','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','client','request','then'];(function(_0x574840,_0x5971cd){var _0x30fec8=function(_0x4bb8f5){while(--_0x4bb8f5){_0x574840['push'](_0x574840['shift']());}};_0x30fec8(++_0x5971cd);}(_0x919d,0x1c0));var _0xd919=function(_0x508c01,_0x558094){_0x508c01=_0x508c01-0x0;var _0xbf071b=_0x919d[_0x508c01];return _0xbf071b;};'use strict';var emlformat=require(_0xd919('0x0'));var rimraf=require(_0xd919('0x1'));var zipdir=require(_0xd919('0x2'));var jsonpatch=require(_0xd919('0x3'));var rp=require('request-promise');var moment=require(_0xd919('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd919('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd919('0x6'));var csv=require(_0xd919('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd919('0x8'));var squel=require(_0xd919('0x9'));var crypto=require(_0xd919('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd919('0xb'));var toCsv=require(_0xd919('0x7'));var querystring=require(_0xd919('0xc'));var Papa=require(_0xd919('0xd'));var Redis=require(_0xd919('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd919('0xf'));var as=require(_0xd919('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd919('0x11'));var utils=require(_0xd919('0x12'));var config=require(_0xd919('0x13'));var licenseUtil=require(_0xd919('0x14'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xd919('0x15')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a4c68,_0x2aa278,_0x42a2ce,_0xdcf446){return new BPromise(function(_0x36be2f,_0x1bbb6d){var _0x2bcad8=_0xdcf446||client;return _0x2bcad8[_0xd919('0x16')](_0x2a4c68,_0x42a2ce)[_0xd919('0x17')](function(_0x57e145){logger['info'](_0xd919('0x18'),_0x2aa278,_0xd919('0x19'));logger['debug'](_0xd919('0x1a'),_0x2aa278,_0xd919('0x19'),JSON['stringify'](_0x57e145));if(_0x57e145[_0xd919('0x1b')]){if(_0x57e145[_0xd919('0x1b')]['code']===0x1f4){logger['error'](_0xd919('0x18'),_0x2aa278,_0x57e145['error'][_0xd919('0x1c')]);return _0x1bbb6d(_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);}logger[_0xd919('0x1b')](_0xd919('0x18'),_0x2aa278,_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);return _0x36be2f(_0x57e145[_0xd919('0x1b')][_0xd919('0x1c')]);}else{logger[_0xd919('0x1d')]('Setting,\x20%s,\x20%s',_0x2aa278,_0xd919('0x19'));_0x36be2f(_0x57e145[_0xd919('0x1e')]['message']);}})[_0xd919('0x1f')](function(_0x21ba69){logger[_0xd919('0x1b')](_0xd919('0x18'),_0x2aa278,_0x21ba69);_0x1bbb6d(_0x21ba69);});});}function respondWithStatusCode(_0x355eb9,_0x57c99e){_0x57c99e=_0x57c99e||0xcc;return function(_0x333f95){if(_0x333f95){return _0x355eb9[_0xd919('0x20')](_0x57c99e);}return _0x355eb9[_0xd919('0x21')](_0x57c99e)['end']();};}function respondWithResult(_0x527ebf,_0x426f59){_0x426f59=_0x426f59||0xc8;return function(_0x1a2672){if(_0x1a2672){return _0x527ebf[_0xd919('0x21')](_0x426f59)[_0xd919('0x22')](_0x1a2672);}};}function respondWithFilteredResult(_0x23530d,_0x223027){return function(_0x39d3eb){if(_0x39d3eb){var _0xb9e6a1=typeof _0x223027[_0xd919('0x23')]===_0xd919('0x24')&&typeof _0x223027[_0xd919('0x25')]===_0xd919('0x24');var _0x3955a8=_0x39d3eb[_0xd919('0x26')];var _0x250c01=_0xb9e6a1?0x0:_0x223027[_0xd919('0x23')];var _0x41a296=_0xb9e6a1?_0x39d3eb[_0xd919('0x26')]:_0x223027[_0xd919('0x23')]+_0x223027[_0xd919('0x25')];var _0x3d0162;if(_0x41a296>=_0x3955a8){_0x41a296=_0x3955a8;_0x3d0162=0xc8;}else{_0x3d0162=0xce;}_0x23530d[_0xd919('0x21')](_0x3d0162);return _0x23530d[_0xd919('0x27')](_0xd919('0x28'),_0x250c01+'-'+_0x41a296+'/'+_0x3955a8)['json'](_0x39d3eb);}return null;};}function patchUpdates(_0x5abe4f){return function(_0x445862){try{jsonpatch[_0xd919('0x29')](_0x445862,_0x5abe4f,!![]);}catch(_0x3b6ffe){return BPromise[_0xd919('0x2a')](_0x3b6ffe);}return _0x445862[_0xd919('0x2b')]();};}function saveUpdates(_0x2c16c2,_0x1ba6cc){return function(_0x5c154d){if(_0x5c154d){return _0x5c154d['update'](_0x2c16c2)[_0xd919('0x17')](function(_0x60a4c7){return _0x60a4c7;});}return null;};}function removeEntity(_0x19cff5,_0x2ae0b9){return function(_0x5115fe){if(_0x5115fe){return _0x5115fe[_0xd919('0x2c')]()['then'](function(){_0x19cff5[_0xd919('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x530b0b,_0x51e5ae){return function(_0x21586a){if(!_0x21586a){_0x530b0b[_0xd919('0x20')](0x194);}return _0x21586a;};}function handleError(_0x41940e,_0xc4438d){_0xc4438d=_0xc4438d||0x1f4;return function(_0xa2afac){logger[_0xd919('0x1b')](_0xa2afac['stack']);if(_0xa2afac['name']){delete _0xa2afac[_0xd919('0x2d')];}_0x41940e[_0xd919('0x21')](_0xc4438d)[_0xd919('0x2e')](_0xa2afac);};}exports[_0xd919('0x2f')]=function(_0x777d8a,_0x312f5a){var _0x2101af={},_0x53c89a={},_0x22f95c={'count':0x0,'rows':[]};var _0x5572f6=_[_0xd919('0x30')](db[_0xd919('0x31')][_0xd919('0x32')],function(_0x39d495){return{'name':_0x39d495[_0xd919('0x33')],'type':_0x39d495[_0xd919('0x34')][_0xd919('0x35')]};});_0x53c89a['model']=_[_0xd919('0x30')](_0x5572f6,_0xd919('0x2d'));_0x53c89a[_0xd919('0x36')]=_[_0xd919('0x37')](_0x777d8a['query']);_0x53c89a[_0xd919('0x38')]=_[_0xd919('0x39')](_0x53c89a[_0xd919('0x3a')],_0x53c89a[_0xd919('0x36')]);_0x2101af['attributes']=_['intersection'](_0x53c89a[_0xd919('0x3a')],qs['fields'](_0x777d8a[_0xd919('0x36')]['fields']));_0x2101af['attributes']=_0x2101af[_0xd919('0x3b')][_0xd919('0x3c')]?_0x2101af[_0xd919('0x3b')]:_0x53c89a[_0xd919('0x3a')];if(!_0x777d8a[_0xd919('0x36')][_0xd919('0x3d')](_0xd919('0x3e'))){_0x2101af[_0xd919('0x25')]=qs[_0xd919('0x25')](_0x777d8a['query'][_0xd919('0x25')]);_0x2101af['offset']=qs[_0xd919('0x23')](_0x777d8a[_0xd919('0x36')][_0xd919('0x23')]);}_0x2101af[_0xd919('0x3f')]=qs[_0xd919('0x40')](_0x777d8a[_0xd919('0x36')]['sort']);_0x2101af['where']=qs[_0xd919('0x38')](_[_0xd919('0x41')](_0x777d8a[_0xd919('0x36')],_0x53c89a['filters']),_0x5572f6);if(_0x777d8a[_0xd919('0x36')][_0xd919('0x42')]){_0x2101af[_0xd919('0x43')]=_['merge'](_0x2101af[_0xd919('0x43')],{'$or':_[_0xd919('0x30')](_0x5572f6,function(_0x5eb3cb){if(_0x5eb3cb[_0xd919('0x34')]!=='VIRTUAL'){var _0x350efc={};_0x350efc[_0x5eb3cb[_0xd919('0x2d')]]={'$like':'%'+_0x777d8a[_0xd919('0x36')][_0xd919('0x42')]+'%'};return _0x350efc;}})});}_0x2101af=_[_0xd919('0x44')]({},_0x2101af,_0x777d8a[_0xd919('0x45')]);var _0x14efc3={'where':_0x2101af['where']};return db['Setting'][_0xd919('0x26')](_0x14efc3)['then'](function(_0xaaf982){_0x22f95c['count']=_0xaaf982;if(_0x777d8a['query'][_0xd919('0x46')]){_0x2101af[_0xd919('0x47')]=[{'all':!![]}];}return db['Setting'][_0xd919('0x48')](_0x2101af);})[_0xd919('0x17')](function(_0x41652e){_0x22f95c[_0xd919('0x49')]=_0x41652e;return _0x22f95c;})['then'](respondWithFilteredResult(_0x312f5a,_0x2101af))[_0xd919('0x1f')](handleError(_0x312f5a,null));};exports[_0xd919('0x4a')]=function(_0x1426b3,_0x17a883){var _0x3c4cfa={'raw':![],'where':{'id':_0x1426b3[_0xd919('0x4b')]['id']}},_0x450640={};_0x450640[_0xd919('0x3a')]=_[_0xd919('0x37')](db['Setting'][_0xd919('0x32')]);_0x450640[_0xd919('0x36')]=_['keys'](_0x1426b3['query']);_0x450640[_0xd919('0x38')]=_[_0xd919('0x39')](_0x450640[_0xd919('0x3a')],_0x450640[_0xd919('0x36')]);_0x3c4cfa[_0xd919('0x3b')]=_['intersection'](_0x450640[_0xd919('0x3a')],qs['fields'](_0x1426b3['query'][_0xd919('0x4c')]));_0x3c4cfa[_0xd919('0x3b')]=_0x3c4cfa[_0xd919('0x3b')][_0xd919('0x3c')]?_0x3c4cfa['attributes']:_0x450640[_0xd919('0x3a')];if(_0x1426b3[_0xd919('0x36')][_0xd919('0x46')]){_0x3c4cfa['include']=[{'all':!![]}];}_0x3c4cfa=_['merge']({},_0x3c4cfa,_0x1426b3[_0xd919('0x45')]);return db[_0xd919('0x31')]['find'](_0x3c4cfa)[_0xd919('0x17')](handleEntityNotFound(_0x17a883,null))[_0xd919('0x17')](respondWithResult(_0x17a883,null))[_0xd919('0x1f')](handleError(_0x17a883,null));};exports[_0xd919('0x4d')]=function(_0x3d7e18,_0x5ae6e5){if(_0x3d7e18[_0xd919('0x4e')]['id']){delete _0x3d7e18['body']['id'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x3d7e18['params']['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x5ae6e5,null))['then'](saveUpdates(_0x3d7e18[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x5ae6e5,null))[_0xd919('0x1f')](handleError(_0x5ae6e5,null));};exports[_0xd919('0x50')]=function(_0x284999,_0x234e77,_0x2a654f){if(_0x284999['file']&&_0x284999[_0xd919('0x51')][_0xd919('0x52')]){_0x284999[_0xd919('0x4e')][_0xd919('0x53')]=_0x284999[_0xd919('0x51')]['filename'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x284999[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x234e77,null))[_0xd919('0x17')](saveUpdates(_0x284999['body'],null))[_0xd919('0x17')](respondWithResult(_0x234e77,null))[_0xd919('0x1f')](handleError(_0x234e77,null));};exports[_0xd919('0x54')]=function(_0x2f72cc,_0x4eb0a0,_0x589568){if(_0x2f72cc[_0xd919('0x51')]&&_0x2f72cc[_0xd919('0x51')]['filename']){_0x2f72cc['body']['loginLogo']=_0x2f72cc['file'][_0xd919('0x52')];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x2f72cc[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x4eb0a0,null))[_0xd919('0x17')](saveUpdates(_0x2f72cc[_0xd919('0x4e')],null))['then'](respondWithResult(_0x4eb0a0,null))[_0xd919('0x1f')](handleError(_0x4eb0a0,null));};var utilLicense=require(_0xd919('0x14'));exports[_0xd919('0x55')]=function(_0x56b04e,_0x1eea6c,_0x2d8a23){var _0x493e42='server/files/images/logos';var _0x3b52a1={'custom':![]};return utilLicense[_0xd919('0x56')]()['then'](function(_0x3a78bf){if(_0x3a78bf){_0x3b52a1=_0x3a78bf;}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x56b04e[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),'preferred',_0xd919('0x58'),'defaultLogo',_0xd919('0x59'),'defaultPreferred',_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x1eea6c,null))[_0xd919('0x17')](function(_0x234f70){if(_0x234f70){var _0x531270=_0x234f70[_0xd919('0x53')]&&fs[_0xd919('0x5b')](path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_['toLower'](_0x234f70[_0xd919('0x53')])))?path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_['toLower'](_0x234f70[_0xd919('0x53')])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x493e42,_[_0xd919('0x5e')](_0xd919('0x5f')));var _0x5ee805=_0xd919('0x60')+_['upperFirst'](_0xd919('0x53'));if(_0x234f70[_0x5ee805]||!_0x3b52a1[_0xd919('0x61')]){_0x531270=path['join'](config[_0xd919('0x5d')],_0x493e42,_[_0xd919('0x5e')](_0xd919('0x5f')));}if(!fs[_0xd919('0x5b')](_0x531270)){throw new db[(_0xd919('0x62'))][(_0xd919('0x63'))](_['upperFirst'](_0xd919('0x53'))+_0xd919('0x64'));}return _0x1eea6c[_0xd919('0x65')](_0x531270);}})[_0xd919('0x1f')](handleError(_0x1eea6c,null));};var utilLicense=require('../../config/license/util');exports[_0xd919('0x66')]=function(_0x2ed445,_0x370407,_0x4a20eb){var _0x1f8ed2='server/files/images/logos';var _0x596180={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x20aa05){if(_0x20aa05){_0x596180=_0x20aa05;}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x2ed445[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),'defaultLogo',_0xd919('0x59'),_0xd919('0x68'),_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x370407,null))['then'](function(_0x5b54eb){if(_0x5b54eb){var _0x5324f8=_0x5b54eb[_0xd919('0x57')]&&fs[_0xd919('0x5b')](path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0x5b54eb[_0xd919('0x57')])))?path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0x5b54eb['loginLogo'])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0xd919('0x69')));var _0x22c4d5=_0xd919('0x60')+_[_0xd919('0x6a')]('loginLogo');if(_0x5b54eb[_0x22c4d5]||!_0x596180[_0xd919('0x61')]){_0x5324f8=path['join'](config[_0xd919('0x5d')],_0x1f8ed2,_[_0xd919('0x5e')](_0xd919('0x69')));}if(!fs[_0xd919('0x5b')](_0x5324f8)){throw new db[(_0xd919('0x62'))][(_0xd919('0x63'))](_[_0xd919('0x6a')](_0xd919('0x57'))+'\x20not\x20found');}return _0x370407['download'](_0x5324f8);}})['catch'](handleError(_0x370407,null));};exports['gdpr']=function(_0x5cb43c,_0x56d7d6){return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x5cb43c['params']['id']},'attributes':[_0xd919('0x6b')]})['then'](respondWithResult(_0x56d7d6,null))[_0xd919('0x1f')](handleError(_0x56d7d6,null));};exports[_0xd919('0x6c')]=function(_0x4e0618,_0x135283,_0x5b2c8b){if(_0x4e0618[_0xd919('0x51')]&&_0x4e0618[_0xd919('0x51')][_0xd919('0x52')]){_0x4e0618['body'][_0xd919('0x67')]=_0x4e0618[_0xd919('0x51')]['filename'];}return db[_0xd919('0x31')][_0xd919('0x4f')]({'where':{'id':_0x4e0618[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x135283,null))[_0xd919('0x17')](saveUpdates(_0x4e0618[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x135283,null))[_0xd919('0x1f')](handleError(_0x135283,null));};var utilLicense=require(_0xd919('0x14'));exports[_0xd919('0x6d')]=function(_0x347868,_0x4fddfb,_0x521623){var _0x293fe3=_0xd919('0x6e');var _0x318ca8={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x1df7e5){if(_0x1df7e5){_0x318ca8=_0x1df7e5;}return db[_0xd919('0x31')]['find']({'where':{'id':_0x347868[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),'defaultLogo','defaultLoginLogo',_0xd919('0x68'),_0xd919('0x5a')],'raw':!![]});})[_0xd919('0x17')](handleEntityNotFound(_0x4fddfb,null))[_0xd919('0x17')](function(_0x44600a){if(_0x44600a){var _0x42f6ee=_0x44600a[_0xd919('0x67')]&&fs[_0xd919('0x5b')](path['join'](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0x44600a[_0xd919('0x67')])))?path['join'](config['root'],_0x293fe3,_[_0xd919('0x5e')](_0x44600a[_0xd919('0x67')])):path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0xd919('0x6f')));var _0x224faf=_0xd919('0x60')+_[_0xd919('0x6a')](_0xd919('0x67'));if(_0x44600a[_0x224faf]||!_0x318ca8[_0xd919('0x61')]||!_0x318ca8['preferred']){_0x42f6ee=path['join'](config[_0xd919('0x5d')],_0x293fe3,_[_0xd919('0x5e')](_0xd919('0x6f')));}if(!fs[_0xd919('0x5b')](_0x42f6ee)){throw new db['Sequelize'][(_0xd919('0x63'))](_[_0xd919('0x6a')](_0xd919('0x67'))+_0xd919('0x64'));}return _0x4fddfb[_0xd919('0x65')](_0x42f6ee);}})[_0xd919('0x1f')](handleError(_0x4fddfb,null));};exports['addFavicon']=function(_0x37a65f,_0x2ca26f,_0x33fa70){if(_0x37a65f[_0xd919('0x51')]&&_0x37a65f['file'][_0xd919('0x52')]){_0x37a65f['body']['favicon']=_0x37a65f['file']['filename'];}return db[_0xd919('0x31')]['find']({'where':{'id':_0x37a65f[_0xd919('0x4b')]['id']}})[_0xd919('0x17')](handleEntityNotFound(_0x2ca26f,null))[_0xd919('0x17')](saveUpdates(_0x37a65f[_0xd919('0x4e')],null))[_0xd919('0x17')](respondWithResult(_0x2ca26f,null))[_0xd919('0x1f')](handleError(_0x2ca26f,null));};var utilLicense=require('../../config/license/util');exports[_0xd919('0x70')]=function(_0x2d73e9,_0x17a6e4,_0x54d090){var _0x4de295=_0xd919('0x6e');var _0x51eed0={'custom':![]};return utilLicense[_0xd919('0x56')]()[_0xd919('0x17')](function(_0x2a0d14){if(_0x2a0d14){_0x51eed0=_0x2a0d14;}return db[_0xd919('0x31')]['find']({'where':{'id':_0x2d73e9[_0xd919('0x4b')]['id']},'attributes':[_0xd919('0x53'),_0xd919('0x57'),_0xd919('0x67'),_0xd919('0x58'),_0xd919('0x71'),_0xd919('0x59'),'defaultPreferred',_0xd919('0x5a')],'raw':!![]});})['then'](handleEntityNotFound(_0x17a6e4,null))['then'](function(_0x2d38fd){if(_0x2d38fd){var _0x181b94=_0x2d38fd['favicon']&&fs[_0xd919('0x5b')](path['join'](config[_0xd919('0x5d')],_0x4de295,_[_0xd919('0x5e')](_0x2d38fd[_0xd919('0x58')])))?path[_0xd919('0x5c')](config['root'],_0x4de295,_['toLower'](_0x2d38fd['favicon'])):path[_0xd919('0x5c')](config['root'],_0x4de295,_['toLower'](_0xd919('0x72')));var _0xa808e2=_0xd919('0x60')+_[_0xd919('0x6a')](_0xd919('0x58'));if(_0x2d38fd[_0xa808e2]||!_0x51eed0[_0xd919('0x61')]){_0x181b94=path[_0xd919('0x5c')](config[_0xd919('0x5d')],_0x4de295,_['toLower'](_0xd919('0x72')));}if(!fs[_0xd919('0x5b')](_0x181b94)){throw new db[(_0xd919('0x62'))]['ValidationError'](_[_0xd919('0x6a')]('favicon')+_0xd919('0x64'));}return _0x17a6e4[_0xd919('0x65')](_0x181b94);}})[_0xd919('0x1f')](handleError(_0x17a6e4,null));};exports[_0xd919('0x73')]=function(_0x1cddf9,_0x3214bf){var _0x9dacaf={'offset':moment()[_0xd919('0x74')]()};_0x9dacaf['now']=moment()['utcOffset'](_0x9dacaf[_0xd919('0x23')])[_0xd919('0x75')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x3214bf[_0xd919('0x21')](0xc8)['send'](_0x9dacaf);};
\ No newline at end of file
+var _0xd6ce=['type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','rows','show','params','options','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','server/files/images/logos','preferred','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','Sequelize','ValidationError','download','getLogoLogin','getLicense','favicon','defaultLogo','default_loginLogo.svg','upperFirst','custom','\x20not\x20found','securePassword','addPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','now','format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/license/util','../../mysqldb','client','info','Setting,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','map','Setting','rawAttributes'];(function(_0x4e7abc,_0x2aeca1){var _0x428796=function(_0xa2c1d){while(--_0xa2c1d){_0x4e7abc['push'](_0x4e7abc['shift']());}};_0x428796(++_0x2aeca1);}(_0xd6ce,0x127));var _0xed6c=function(_0x434f6,_0x5de158){_0x434f6=_0x434f6-0x0;var _0x499283=_0xd6ce[_0x434f6];return _0x499283;};'use strict';var emlformat=require(_0xed6c('0x0'));var rimraf=require(_0xed6c('0x1'));var zipdir=require(_0xed6c('0x2'));var jsonpatch=require(_0xed6c('0x3'));var rp=require(_0xed6c('0x4'));var moment=require(_0xed6c('0x5'));var BPromise=require(_0xed6c('0x6'));var Mustache=require(_0xed6c('0x7'));var util=require('util');var path=require('path');var sox=require(_0xed6c('0x8'));var csv=require(_0xed6c('0x9'));var ejs=require(_0xed6c('0xa'));var fs=require('fs');var fs_extra=require(_0xed6c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xed6c('0xc'));var jsforce=require(_0xed6c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xed6c('0xe'));var Papa=require(_0xed6c('0xf'));var Redis=require(_0xed6c('0x10'));var authService=require(_0xed6c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xed6c('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xed6c('0x13'));var db=require(_0xed6c('0x14'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xed6c('0x15')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bc35b,_0xbcf0f4,_0x47c392,_0x3f3126){return new BPromise(function(_0x32a8c9,_0x46d807){var _0x342c82=_0x3f3126||client;return _0x342c82['request'](_0x1bc35b,_0x47c392)['then'](function(_0x2034d4){logger[_0xed6c('0x16')](_0xed6c('0x17'),_0xbcf0f4,'request\x20sent');logger[_0xed6c('0x18')]('Setting,\x20%s,\x20%s,\x20%s',_0xbcf0f4,_0xed6c('0x19'),JSON[_0xed6c('0x1a')](_0x2034d4));if(_0x2034d4[_0xed6c('0x1b')]){if(_0x2034d4[_0xed6c('0x1b')]['code']===0x1f4){logger[_0xed6c('0x1b')](_0xed6c('0x17'),_0xbcf0f4,_0x2034d4[_0xed6c('0x1b')]['message']);return _0x46d807(_0x2034d4[_0xed6c('0x1b')][_0xed6c('0x1c')]);}logger[_0xed6c('0x1b')](_0xed6c('0x17'),_0xbcf0f4,_0x2034d4[_0xed6c('0x1b')]['message']);return _0x32a8c9(_0x2034d4[_0xed6c('0x1b')]['message']);}else{logger[_0xed6c('0x16')](_0xed6c('0x17'),_0xbcf0f4,_0xed6c('0x19'));_0x32a8c9(_0x2034d4[_0xed6c('0x1d')]['message']);}})[_0xed6c('0x1e')](function(_0x4e1870){logger[_0xed6c('0x1b')]('Setting,\x20%s,\x20%s',_0xbcf0f4,_0x4e1870);_0x46d807(_0x4e1870);});});}function respondWithStatusCode(_0x7882e0,_0x21e0ba){_0x21e0ba=_0x21e0ba||0xcc;return function(_0x51876b){if(_0x51876b){return _0x7882e0[_0xed6c('0x1f')](_0x21e0ba);}return _0x7882e0[_0xed6c('0x20')](_0x21e0ba)[_0xed6c('0x21')]();};}function respondWithResult(_0x638bc2,_0x27fb6c){_0x27fb6c=_0x27fb6c||0xc8;return function(_0x328af2){if(_0x328af2){return _0x638bc2[_0xed6c('0x20')](_0x27fb6c)[_0xed6c('0x22')](_0x328af2);}};}function respondWithFilteredResult(_0x58538b,_0x319d61){return function(_0x27484c){if(_0x27484c){var _0x225ec6=typeof _0x319d61[_0xed6c('0x23')]===_0xed6c('0x24')&&typeof _0x319d61[_0xed6c('0x25')]==='undefined';var _0x23ee72=_0x27484c[_0xed6c('0x26')];var _0x3182ce=_0x225ec6?0x0:_0x319d61['offset'];var _0x4e4373=_0x225ec6?_0x27484c['count']:_0x319d61['offset']+_0x319d61[_0xed6c('0x25')];var _0x57e099;if(_0x4e4373>=_0x23ee72){_0x4e4373=_0x23ee72;_0x57e099=0xc8;}else{_0x57e099=0xce;}_0x58538b[_0xed6c('0x20')](_0x57e099);return _0x58538b['set'](_0xed6c('0x27'),_0x3182ce+'-'+_0x4e4373+'/'+_0x23ee72)[_0xed6c('0x22')](_0x27484c);}return null;};}function patchUpdates(_0x47e1bd){return function(_0x2bef4f){try{jsonpatch[_0xed6c('0x28')](_0x2bef4f,_0x47e1bd,!![]);}catch(_0x1a9ad0){return BPromise[_0xed6c('0x29')](_0x1a9ad0);}return _0x2bef4f[_0xed6c('0x2a')]();};}function saveUpdates(_0x10e1e2,_0x50ae2a){return function(_0x1b90d8){if(_0x1b90d8){return _0x1b90d8[_0xed6c('0x2b')](_0x10e1e2)['then'](function(_0x3f90dc){return _0x3f90dc;});}return null;};}function removeEntity(_0x56e740,_0x3ea98a){return function(_0x2571f4){if(_0x2571f4){return _0x2571f4[_0xed6c('0x2c')]()[_0xed6c('0x2d')](function(){_0x56e740[_0xed6c('0x20')](0xcc)[_0xed6c('0x21')]();});}};}function handleEntityNotFound(_0x552fd9,_0x4bcab3){return function(_0x4ff142){if(!_0x4ff142){_0x552fd9[_0xed6c('0x1f')](0x194);}return _0x4ff142;};}function handleError(_0x1488f3,_0x45e3ff){_0x45e3ff=_0x45e3ff||0x1f4;return function(_0x5b5ba8){logger[_0xed6c('0x1b')](_0x5b5ba8[_0xed6c('0x2e')]);if(_0x5b5ba8[_0xed6c('0x2f')]){delete _0x5b5ba8[_0xed6c('0x2f')];}_0x1488f3[_0xed6c('0x20')](_0x45e3ff)[_0xed6c('0x30')](_0x5b5ba8);};}exports[_0xed6c('0x31')]=function(_0x3d4739,_0x30ed3e){var _0x1c8203={},_0x2368b4={},_0x3991ab={'count':0x0,'rows':[]};var _0x59e977=_[_0xed6c('0x32')](db[_0xed6c('0x33')][_0xed6c('0x34')],function(_0x246589){return{'name':_0x246589['fieldName'],'type':_0x246589[_0xed6c('0x35')][_0xed6c('0x36')]};});_0x2368b4[_0xed6c('0x37')]=_['map'](_0x59e977,_0xed6c('0x2f'));_0x2368b4['query']=_[_0xed6c('0x38')](_0x3d4739[_0xed6c('0x39')]);_0x2368b4[_0xed6c('0x3a')]=_['intersection'](_0x2368b4[_0xed6c('0x37')],_0x2368b4[_0xed6c('0x39')]);_0x1c8203[_0xed6c('0x3b')]=_[_0xed6c('0x3c')](_0x2368b4[_0xed6c('0x37')],qs[_0xed6c('0x3d')](_0x3d4739[_0xed6c('0x39')][_0xed6c('0x3d')]));_0x1c8203[_0xed6c('0x3b')]=_0x1c8203[_0xed6c('0x3b')][_0xed6c('0x3e')]?_0x1c8203[_0xed6c('0x3b')]:_0x2368b4[_0xed6c('0x37')];if(!_0x3d4739[_0xed6c('0x39')][_0xed6c('0x3f')](_0xed6c('0x40'))){_0x1c8203['limit']=qs[_0xed6c('0x25')](_0x3d4739[_0xed6c('0x39')]['limit']);_0x1c8203[_0xed6c('0x23')]=qs[_0xed6c('0x23')](_0x3d4739['query']['offset']);}_0x1c8203[_0xed6c('0x41')]=qs[_0xed6c('0x42')](_0x3d4739['query'][_0xed6c('0x42')]);_0x1c8203[_0xed6c('0x43')]=qs['filters'](_['pick'](_0x3d4739[_0xed6c('0x39')],_0x2368b4[_0xed6c('0x3a')]),_0x59e977);if(_0x3d4739[_0xed6c('0x39')][_0xed6c('0x44')]){_0x1c8203['where']=_[_0xed6c('0x45')](_0x1c8203[_0xed6c('0x43')],{'$or':_[_0xed6c('0x32')](_0x59e977,function(_0x24ad9a){if(_0x24ad9a[_0xed6c('0x35')]!==_0xed6c('0x46')){var _0x288b3b={};_0x288b3b[_0x24ad9a[_0xed6c('0x2f')]]={'$like':'%'+_0x3d4739[_0xed6c('0x39')]['filter']+'%'};return _0x288b3b;}})});}_0x1c8203=_[_0xed6c('0x45')]({},_0x1c8203,_0x3d4739['options']);var _0x178730={'where':_0x1c8203[_0xed6c('0x43')]};return db[_0xed6c('0x33')][_0xed6c('0x26')](_0x178730)['then'](function(_0x15a844){_0x3991ab['count']=_0x15a844;if(_0x3d4739[_0xed6c('0x39')][_0xed6c('0x47')]){_0x1c8203[_0xed6c('0x48')]=[{'all':!![]}];}return db[_0xed6c('0x33')]['findAll'](_0x1c8203);})[_0xed6c('0x2d')](function(_0x369481){_0x3991ab[_0xed6c('0x49')]=_0x369481;return _0x3991ab;})[_0xed6c('0x2d')](respondWithFilteredResult(_0x30ed3e,_0x1c8203))[_0xed6c('0x1e')](handleError(_0x30ed3e,null));};exports[_0xed6c('0x4a')]=function(_0x10aef5,_0x3c9300){var _0x2475eb={'raw':![],'where':{'id':_0x10aef5[_0xed6c('0x4b')]['id']}},_0x124616={};_0x124616[_0xed6c('0x37')]=_[_0xed6c('0x38')](db[_0xed6c('0x33')][_0xed6c('0x34')]);_0x124616[_0xed6c('0x39')]=_[_0xed6c('0x38')](_0x10aef5['query']);_0x124616[_0xed6c('0x3a')]=_[_0xed6c('0x3c')](_0x124616[_0xed6c('0x37')],_0x124616[_0xed6c('0x39')]);_0x2475eb[_0xed6c('0x3b')]=_[_0xed6c('0x3c')](_0x124616[_0xed6c('0x37')],qs[_0xed6c('0x3d')](_0x10aef5['query'][_0xed6c('0x3d')]));_0x2475eb[_0xed6c('0x3b')]=_0x2475eb[_0xed6c('0x3b')][_0xed6c('0x3e')]?_0x2475eb[_0xed6c('0x3b')]:_0x124616[_0xed6c('0x37')];if(_0x10aef5['query'][_0xed6c('0x47')]){_0x2475eb[_0xed6c('0x48')]=[{'all':!![]}];}_0x2475eb=_[_0xed6c('0x45')]({},_0x2475eb,_0x10aef5[_0xed6c('0x4c')]);return db['Setting'][_0xed6c('0x4d')](_0x2475eb)[_0xed6c('0x2d')](handleEntityNotFound(_0x3c9300,null))[_0xed6c('0x2d')](respondWithResult(_0x3c9300,null))[_0xed6c('0x1e')](handleError(_0x3c9300,null));};exports[_0xed6c('0x2b')]=function(_0x584b18,_0x29243e){if(_0x584b18[_0xed6c('0x4e')]['id']){delete _0x584b18['body']['id'];}return db[_0xed6c('0x33')][_0xed6c('0x4d')]({'where':{'id':_0x584b18['params']['id']}})[_0xed6c('0x2d')](handleEntityNotFound(_0x29243e,null))[_0xed6c('0x2d')](saveUpdates(_0x584b18[_0xed6c('0x4e')],null))[_0xed6c('0x2d')](respondWithResult(_0x29243e,null))['catch'](handleError(_0x29243e,null));};exports[_0xed6c('0x4f')]=function(_0x4e8fd8,_0x7e7fda,_0x2abe72){if(_0x4e8fd8[_0xed6c('0x50')]&&_0x4e8fd8[_0xed6c('0x50')][_0xed6c('0x51')]){_0x4e8fd8[_0xed6c('0x4e')][_0xed6c('0x52')]=_0x4e8fd8[_0xed6c('0x50')]['filename'];}return db[_0xed6c('0x33')][_0xed6c('0x4d')]({'where':{'id':_0x4e8fd8[_0xed6c('0x4b')]['id']}})[_0xed6c('0x2d')](handleEntityNotFound(_0x7e7fda,null))[_0xed6c('0x2d')](saveUpdates(_0x4e8fd8[_0xed6c('0x4e')],null))[_0xed6c('0x2d')](respondWithResult(_0x7e7fda,null))[_0xed6c('0x1e')](handleError(_0x7e7fda,null));};exports[_0xed6c('0x53')]=function(_0x360185,_0x366697,_0x58c7b3){if(_0x360185[_0xed6c('0x50')]&&_0x360185[_0xed6c('0x50')][_0xed6c('0x51')]){_0x360185['body'][_0xed6c('0x54')]=_0x360185['file']['filename'];}return db[_0xed6c('0x33')][_0xed6c('0x4d')]({'where':{'id':_0x360185['params']['id']}})[_0xed6c('0x2d')](handleEntityNotFound(_0x366697,null))[_0xed6c('0x2d')](saveUpdates(_0x360185[_0xed6c('0x4e')],null))[_0xed6c('0x2d')](respondWithResult(_0x366697,null))['catch'](handleError(_0x366697,null));};var utilLicense=require(_0xed6c('0x13'));exports['getLogo']=function(_0x17dd12,_0x5ed8ec,_0x9f931){var _0x13e73e=_0xed6c('0x55');var _0x5d4ca8={'custom':![]};return utilLicense['getLicense']()[_0xed6c('0x2d')](function(_0x3d7554){if(_0x3d7554){_0x5d4ca8=_0x3d7554;}return db['Setting'][_0xed6c('0x4d')]({'where':{'id':_0x17dd12[_0xed6c('0x4b')]['id']},'attributes':[_0xed6c('0x52'),_0xed6c('0x54'),_0xed6c('0x56'),'favicon','defaultLogo',_0xed6c('0x57'),_0xed6c('0x58'),_0xed6c('0x59')],'raw':!![]});})[_0xed6c('0x2d')](handleEntityNotFound(_0x5ed8ec,null))[_0xed6c('0x2d')](function(_0x1ea795){if(_0x1ea795){var _0x50d28b=_0x1ea795['logo']&&fs[_0xed6c('0x5a')](path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x13e73e,_[_0xed6c('0x5d')](_0x1ea795[_0xed6c('0x52')])))?path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x13e73e,_['toLower'](_0x1ea795[_0xed6c('0x52')])):path['join'](config[_0xed6c('0x5c')],_0x13e73e,_[_0xed6c('0x5d')](_0xed6c('0x5e')));var _0x5dbc83=_0xed6c('0x5f')+_['upperFirst'](_0xed6c('0x52'));if(_0x1ea795[_0x5dbc83]||!_0x5d4ca8['custom']){_0x50d28b=path[_0xed6c('0x5b')](config['root'],_0x13e73e,_[_0xed6c('0x5d')]('default_logo.svg'));}if(!fs[_0xed6c('0x5a')](_0x50d28b)){throw new db[(_0xed6c('0x60'))][(_0xed6c('0x61'))](_['upperFirst'](_0xed6c('0x52'))+'\x20not\x20found');}return _0x5ed8ec[_0xed6c('0x62')](_0x50d28b);}})[_0xed6c('0x1e')](handleError(_0x5ed8ec,null));};var utilLicense=require(_0xed6c('0x13'));exports[_0xed6c('0x63')]=function(_0x1dc9ed,_0x1a3b40,_0x5521a2){var _0x5732a2=_0xed6c('0x55');var _0x5959ce={'custom':![]};return utilLicense[_0xed6c('0x64')]()[_0xed6c('0x2d')](function(_0x2eee50){if(_0x2eee50){_0x5959ce=_0x2eee50;}return db['Setting'][_0xed6c('0x4d')]({'where':{'id':_0x1dc9ed['params']['id']},'attributes':[_0xed6c('0x52'),'loginLogo',_0xed6c('0x56'),_0xed6c('0x65'),_0xed6c('0x66'),_0xed6c('0x57'),'defaultPreferred',_0xed6c('0x59')],'raw':!![]});})[_0xed6c('0x2d')](handleEntityNotFound(_0x1a3b40,null))[_0xed6c('0x2d')](function(_0x3af2ab){if(_0x3af2ab){var _0x4d3c8e=_0x3af2ab[_0xed6c('0x54')]&&fs[_0xed6c('0x5a')](path['join'](config['root'],_0x5732a2,_[_0xed6c('0x5d')](_0x3af2ab[_0xed6c('0x54')])))?path['join'](config['root'],_0x5732a2,_[_0xed6c('0x5d')](_0x3af2ab[_0xed6c('0x54')])):path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x5732a2,_[_0xed6c('0x5d')](_0xed6c('0x67')));var _0x2ca7c6=_0xed6c('0x5f')+_[_0xed6c('0x68')](_0xed6c('0x54'));if(_0x3af2ab[_0x2ca7c6]||!_0x5959ce[_0xed6c('0x69')]){_0x4d3c8e=path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x5732a2,_[_0xed6c('0x5d')](_0xed6c('0x67')));}if(!fs[_0xed6c('0x5a')](_0x4d3c8e)){throw new db['Sequelize'][(_0xed6c('0x61'))](_[_0xed6c('0x68')](_0xed6c('0x54'))+_0xed6c('0x6a'));}return _0x1a3b40[_0xed6c('0x62')](_0x4d3c8e);}})['catch'](handleError(_0x1a3b40,null));};exports['gdpr']=function(_0x1f6722,_0x4ce751){return db['Setting'][_0xed6c('0x4d')]({'where':{'id':_0x1f6722[_0xed6c('0x4b')]['id']},'attributes':[_0xed6c('0x6b')]})['then'](respondWithResult(_0x4ce751,null))['catch'](handleError(_0x4ce751,null));};exports[_0xed6c('0x6c')]=function(_0x1523d2,_0x757dfd,_0x38f402){if(_0x1523d2[_0xed6c('0x50')]&&_0x1523d2[_0xed6c('0x50')]['filename']){_0x1523d2[_0xed6c('0x4e')][_0xed6c('0x56')]=_0x1523d2['file'][_0xed6c('0x51')];}return db[_0xed6c('0x33')]['find']({'where':{'id':_0x1523d2[_0xed6c('0x4b')]['id']}})[_0xed6c('0x2d')](handleEntityNotFound(_0x757dfd,null))[_0xed6c('0x2d')](saveUpdates(_0x1523d2['body'],null))[_0xed6c('0x2d')](respondWithResult(_0x757dfd,null))[_0xed6c('0x1e')](handleError(_0x757dfd,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x5c57bd,_0x1bcdf3,_0x16f49e){var _0x5eb273=_0xed6c('0x55');var _0x44042f={'custom':![]};return utilLicense['getLicense']()[_0xed6c('0x2d')](function(_0x1fccf2){if(_0x1fccf2){_0x44042f=_0x1fccf2;}return db[_0xed6c('0x33')][_0xed6c('0x4d')]({'where':{'id':_0x5c57bd['params']['id']},'attributes':['logo',_0xed6c('0x54'),_0xed6c('0x56'),_0xed6c('0x65'),_0xed6c('0x66'),'defaultLoginLogo',_0xed6c('0x58'),_0xed6c('0x59')],'raw':!![]});})[_0xed6c('0x2d')](handleEntityNotFound(_0x1bcdf3,null))['then'](function(_0x127f21){if(_0x127f21){var _0x55f111=_0x127f21['preferred']&&fs[_0xed6c('0x5a')](path['join'](config[_0xed6c('0x5c')],_0x5eb273,_['toLower'](_0x127f21['preferred'])))?path[_0xed6c('0x5b')](config['root'],_0x5eb273,_[_0xed6c('0x5d')](_0x127f21[_0xed6c('0x56')])):path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x5eb273,_[_0xed6c('0x5d')](_0xed6c('0x6d')));var _0x188b91='default'+_['upperFirst'](_0xed6c('0x56'));if(_0x127f21[_0x188b91]||!_0x44042f['custom']||!_0x44042f[_0xed6c('0x56')]){_0x55f111=path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x5eb273,_['toLower'](_0xed6c('0x6d')));}if(!fs[_0xed6c('0x5a')](_0x55f111)){throw new db[(_0xed6c('0x60'))][(_0xed6c('0x61'))](_[_0xed6c('0x68')](_0xed6c('0x56'))+_0xed6c('0x6a'));}return _0x1bcdf3['download'](_0x55f111);}})['catch'](handleError(_0x1bcdf3,null));};exports[_0xed6c('0x6e')]=function(_0x4f6401,_0x48541f,_0x333353){if(_0x4f6401['file']&&_0x4f6401[_0xed6c('0x50')]['filename']){_0x4f6401[_0xed6c('0x4e')]['favicon']=_0x4f6401[_0xed6c('0x50')]['filename'];}return db[_0xed6c('0x33')]['find']({'where':{'id':_0x4f6401[_0xed6c('0x4b')]['id']}})[_0xed6c('0x2d')](handleEntityNotFound(_0x48541f,null))[_0xed6c('0x2d')](saveUpdates(_0x4f6401['body'],null))[_0xed6c('0x2d')](respondWithResult(_0x48541f,null))[_0xed6c('0x1e')](handleError(_0x48541f,null));};var utilLicense=require('../../config/license/util');exports[_0xed6c('0x6f')]=function(_0x39a93a,_0x1d999b,_0x24f4cb){var _0x3f0872=_0xed6c('0x55');var _0x341219={'custom':![]};return utilLicense[_0xed6c('0x64')]()['then'](function(_0x5d1464){if(_0x5d1464){_0x341219=_0x5d1464;}return db[_0xed6c('0x33')][_0xed6c('0x4d')]({'where':{'id':_0x39a93a[_0xed6c('0x4b')]['id']},'attributes':[_0xed6c('0x52'),_0xed6c('0x54'),_0xed6c('0x56'),_0xed6c('0x65'),'defaultLogo','defaultLoginLogo',_0xed6c('0x58'),_0xed6c('0x59')],'raw':!![]});})['then'](handleEntityNotFound(_0x1d999b,null))['then'](function(_0x4675b5){if(_0x4675b5){var _0x228fa5=_0x4675b5[_0xed6c('0x65')]&&fs[_0xed6c('0x5a')](path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x3f0872,_[_0xed6c('0x5d')](_0x4675b5[_0xed6c('0x65')])))?path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x3f0872,_[_0xed6c('0x5d')](_0x4675b5[_0xed6c('0x65')])):path[_0xed6c('0x5b')](config['root'],_0x3f0872,_[_0xed6c('0x5d')](_0xed6c('0x70')));var _0x13dae4=_0xed6c('0x5f')+_[_0xed6c('0x68')](_0xed6c('0x65'));if(_0x4675b5[_0x13dae4]||!_0x341219[_0xed6c('0x69')]){_0x228fa5=path[_0xed6c('0x5b')](config[_0xed6c('0x5c')],_0x3f0872,_[_0xed6c('0x5d')](_0xed6c('0x70')));}if(!fs[_0xed6c('0x5a')](_0x228fa5)){throw new db[(_0xed6c('0x60'))][(_0xed6c('0x61'))](_['upperFirst'](_0xed6c('0x65'))+_0xed6c('0x6a'));}return _0x1d999b[_0xed6c('0x62')](_0x228fa5);}})['catch'](handleError(_0x1d999b,null));};exports['getDate']=function(_0x14a16b,_0x6eb5ea){var _0x44f4a0={'offset':moment()[_0xed6c('0x71')]()};_0x44f4a0[_0xed6c('0x72')]=moment()[_0xed6c('0x71')](_0x44f4a0[_0xed6c('0x23')])[_0xed6c('0x73')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x6eb5ea[_0xed6c('0x20')](0xc8)['send'](_0x44f4a0);};
\ No newline at end of file
index 2cdfbf0..e56ccea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x5ccfb9,_0x14f575){var _0x4a285b=function(_0x5c39d8){while(--_0x5c39d8){_0x5ccfb9['push'](_0x5ccfb9['shift']());}};_0x4a285b(++_0x14f575);}(_0xe14b,0x93));var _0xbe14=function(_0x3fb4bf,_0x8cfc19){_0x3fb4bf=_0x3fb4bf-0x0;var _0x2cc195=_0xe14b[_0x3fb4bf];return _0x2cc195;};'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 _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x31243e,_0x5c6eb8){var _0x214ad5=function(_0x1fefa7){while(--_0x1fefa7){_0x31243e['push'](_0x31243e['shift']());}};_0x214ad5(++_0x5c6eb8);}(_0xe14b,0x93));var _0xbe14=function(_0x1cef45,_0x4c8730){_0x1cef45=_0x1cef45-0x0;var _0x3244e6=_0xe14b[_0x1cef45];return _0x3244e6;};'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
index ccbc728..b103eab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf4=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSetting','Setting','find','options','raw','attributes','include','model','map','stringify','lodash','util'];(function(_0x5f0d26,_0x41640e){var _0x5b6151=function(_0x480028){while(--_0x480028){_0x5f0d26['push'](_0x5f0d26['shift']());}};_0x5b6151(++_0x41640e);}(_0xddf4,0x106));var _0x4ddf=function(_0x3c5572,_0x35cb5b){_0x3c5572=_0x3c5572-0x0;var _0x1e6ee5=_0xddf4[_0x3c5572];return _0x1e6ee5;};'use strict';var _=require(_0x4ddf('0x0'));var util=require(_0x4ddf('0x1'));var moment=require(_0x4ddf('0x2'));var BPromise=require(_0x4ddf('0x3'));var rs=require(_0x4ddf('0x4'));var fs=require('fs');var Redis=require(_0x4ddf('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ddf('0x6'))(_0x4ddf('0x7'));var config=require(_0x4ddf('0x8'));var jayson=require(_0x4ddf('0x9'));var client=jayson[_0x4ddf('0xa')][_0x4ddf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21b9b1,_0x3bdc90,_0x48a662){return new BPromise(function(_0x5181f4,_0x40ff12){return client['request'](_0x21b9b1,_0x48a662)[_0x4ddf('0xc')](function(_0x33b2d5){logger[_0x4ddf('0xd')](_0x4ddf('0xe'),_0x3bdc90,_0x4ddf('0xf'));logger[_0x4ddf('0x10')](_0x4ddf('0x11'),_0x3bdc90,_0x4ddf('0xf'),JSON['stringify'](_0x33b2d5));if(_0x33b2d5[_0x4ddf('0x12')]){if(_0x33b2d5[_0x4ddf('0x12')][_0x4ddf('0x13')]===0x1f4){logger['error'](_0x4ddf('0xe'),_0x3bdc90,_0x33b2d5['error']['message']);return _0x40ff12(_0x33b2d5[_0x4ddf('0x12')]['message']);}logger[_0x4ddf('0x12')]('Setting,\x20%s,\x20%s',_0x3bdc90,_0x33b2d5[_0x4ddf('0x12')]['message']);return _0x5181f4(_0x33b2d5[_0x4ddf('0x12')][_0x4ddf('0x14')]);}else{logger['info'](_0x4ddf('0xe'),_0x3bdc90,_0x4ddf('0xf'));_0x5181f4(_0x33b2d5[_0x4ddf('0x15')][_0x4ddf('0x14')]);}})[_0x4ddf('0x16')](function(_0x246c61){logger[_0x4ddf('0x12')](_0x4ddf('0xe'),_0x3bdc90,_0x246c61);_0x40ff12(_0x246c61);});});}exports[_0x4ddf('0x17')]=function(_0x5e9853){var _0x442564=this;return new Promise(function(_0x530405,_0x23abb5){return db[_0x4ddf('0x18')][_0x4ddf('0x19')]({'raw':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853[_0x4ddf('0x1a')][_0x4ddf('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853[_0x4ddf('0x1a')]['where']||null:null,'attributes':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853['options'][_0x4ddf('0x1c')]||null:null,'include':_0x5e9853[_0x4ddf('0x1a')]?_0x5e9853['options'][_0x4ddf('0x1d')]?_['map'](_0x5e9853['options'][_0x4ddf('0x1d')],function(_0x5bffe0){return{'model':db[_0x5bffe0[_0x4ddf('0x1e')]],'as':_0x5bffe0['as'],'attributes':_0x5bffe0[_0x4ddf('0x1c')],'include':_0x5bffe0[_0x4ddf('0x1d')]?_[_0x4ddf('0x1f')](_0x5bffe0['include'],function(_0x5713a1){return{'model':db[_0x5713a1[_0x4ddf('0x1e')]],'as':_0x5713a1['as'],'attributes':_0x5713a1['attributes'],'include':_0x5713a1['include']?_[_0x4ddf('0x1f')](_0x5713a1[_0x4ddf('0x1d')],function(_0x18c11a){return{'model':db[_0x18c11a[_0x4ddf('0x1e')]],'as':_0x18c11a['as'],'attributes':_0x18c11a[_0x4ddf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4ddf('0xc')](function(_0x143691){logger[_0x4ddf('0xd')](_0x4ddf('0x17'),_0x5e9853);logger['debug'](_0x4ddf('0x17'),_0x5e9853,JSON[_0x4ddf('0x20')](_0x143691));_0x530405(_0x143691);})[_0x4ddf('0x16')](function(_0x440aa6){logger[_0x4ddf('0x12')](_0x4ddf('0x17'),_0x440aa6[_0x4ddf('0x14')],_0x5e9853);_0x23abb5(_0x442564['error'](0x1f4,_0x440aa6[_0x4ddf('0x14')]));});});};
\ No newline at end of file
+var _0xeef9=['Setting','find','options','raw','where','attributes','include','map','model','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','ShowSetting'];(function(_0x55d738,_0x53d8f3){var _0x2befad=function(_0xdc98b9){while(--_0xdc98b9){_0x55d738['push'](_0x55d738['shift']());}};_0x2befad(++_0x53d8f3);}(_0xeef9,0x6c));var _0x9eef=function(_0x46a634,_0x439b70){_0x46a634=_0x46a634-0x0;var _0x42007a=_0xeef9[_0x46a634];return _0x42007a;};'use strict';var _=require(_0x9eef('0x0'));var util=require('util');var moment=require(_0x9eef('0x1'));var BPromise=require('bluebird');var rs=require(_0x9eef('0x2'));var fs=require('fs');var Redis=require(_0x9eef('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9eef('0x4'));var logger=require(_0x9eef('0x5'))(_0x9eef('0x6'));var config=require('../../config/environment');var jayson=require(_0x9eef('0x7'));var client=jayson[_0x9eef('0x8')][_0x9eef('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e1832,_0x1990b2,_0x7fa3be){return new BPromise(function(_0x41a9e7,_0x17ce65){return client[_0x9eef('0xa')](_0x3e1832,_0x7fa3be)[_0x9eef('0xb')](function(_0x2d8af5){logger[_0x9eef('0xc')](_0x9eef('0xd'),_0x1990b2,_0x9eef('0xe'));logger[_0x9eef('0xf')](_0x9eef('0x10'),_0x1990b2,_0x9eef('0xe'),JSON[_0x9eef('0x11')](_0x2d8af5));if(_0x2d8af5['error']){if(_0x2d8af5['error'][_0x9eef('0x12')]===0x1f4){logger[_0x9eef('0x13')](_0x9eef('0xd'),_0x1990b2,_0x2d8af5[_0x9eef('0x13')][_0x9eef('0x14')]);return _0x17ce65(_0x2d8af5[_0x9eef('0x13')][_0x9eef('0x14')]);}logger['error'](_0x9eef('0xd'),_0x1990b2,_0x2d8af5[_0x9eef('0x13')]['message']);return _0x41a9e7(_0x2d8af5[_0x9eef('0x13')]['message']);}else{logger['info'](_0x9eef('0xd'),_0x1990b2,_0x9eef('0xe'));_0x41a9e7(_0x2d8af5[_0x9eef('0x15')][_0x9eef('0x14')]);}})[_0x9eef('0x16')](function(_0x2ae9f5){logger['error'](_0x9eef('0xd'),_0x1990b2,_0x2ae9f5);_0x17ce65(_0x2ae9f5);});});}exports[_0x9eef('0x17')]=function(_0x58caa5){var _0xe6b712=this;return new Promise(function(_0x159139,_0x1a5bee){return db[_0x9eef('0x18')][_0x9eef('0x19')]({'raw':_0x58caa5[_0x9eef('0x1a')]?_0x58caa5[_0x9eef('0x1a')][_0x9eef('0x1b')]===undefined?!![]:![]:!![],'where':_0x58caa5[_0x9eef('0x1a')]?_0x58caa5[_0x9eef('0x1a')][_0x9eef('0x1c')]||null:null,'attributes':_0x58caa5[_0x9eef('0x1a')]?_0x58caa5[_0x9eef('0x1a')][_0x9eef('0x1d')]||null:null,'include':_0x58caa5[_0x9eef('0x1a')]?_0x58caa5[_0x9eef('0x1a')][_0x9eef('0x1e')]?_[_0x9eef('0x1f')](_0x58caa5[_0x9eef('0x1a')]['include'],function(_0x46a741){return{'model':db[_0x46a741['model']],'as':_0x46a741['as'],'attributes':_0x46a741['attributes'],'include':_0x46a741[_0x9eef('0x1e')]?_[_0x9eef('0x1f')](_0x46a741['include'],function(_0x592b28){return{'model':db[_0x592b28[_0x9eef('0x20')]],'as':_0x592b28['as'],'attributes':_0x592b28['attributes'],'include':_0x592b28[_0x9eef('0x1e')]?_[_0x9eef('0x1f')](_0x592b28[_0x9eef('0x1e')],function(_0x2639cd){return{'model':db[_0x2639cd['model']],'as':_0x2639cd['as'],'attributes':_0x2639cd['attributes']};}):[]};}):[]};}):[]:[]})[_0x9eef('0xb')](function(_0x2683f1){logger['info'](_0x9eef('0x17'),_0x58caa5);logger['debug']('ShowSetting',_0x58caa5,JSON['stringify'](_0x2683f1));_0x159139(_0x2683f1);})[_0x9eef('0x16')](function(_0x300567){logger[_0x9eef('0x13')](_0x9eef('0x17'),_0x300567['message'],_0x58caa5);_0x1a5bee(_0xe6b712[_0x9eef('0x13')](0x1f4,_0x300567['message']));});});};
\ No newline at end of file
index dc20985..23aaa1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x2c9f51,_0x2eec01){var _0x12abf9=function(_0x2d463f){while(--_0x2d463f){_0x2c9f51['push'](_0x2c9f51['shift']());}};_0x12abf9(++_0x2eec01);}(_0x814b,0x1a2));var _0xb814=function(_0x3c6125,_0x3b2a9c){_0x3c6125=_0x3c6125-0x0;var _0x2f47b8=_0x814b[_0x3c6125];return _0x2f47b8;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
+var _0x5fab=['create','post','/:id/dispositions','addAnswer','/:id/notify','notify','addApplications','status','addAgents','put','update','delete','removeDispositions','removeAnswers','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users'];(function(_0x285db,_0x4f4926){var _0x2ebec6=function(_0x3a08c3){while(--_0x3a08c3){_0x285db['push'](_0x285db['shift']());}};_0x2ebec6(++_0x4f4926);}(_0x5fab,0x177));var _0xb5fa=function(_0x2f023d,_0x29dfe5){_0x2f023d=_0x2f023d-0x0;var _0x4ef240=_0x5fab[_0x2f023d];return _0x4ef240;};'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['get']('/:id/dispositions',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0xa')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0xa')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller['getApplications']);router[_0xb5fa('0xa')](_0xb5fa('0x14'),auth['isAuthenticated'](),controller[_0xb5fa('0x15')]);router['get'](_0xb5fa('0x16'),controller[_0xb5fa('0x17')]);router[_0xb5fa('0xa')](_0xb5fa('0x18'),auth[_0xb5fa('0xb')](),controller['getAgents']);router['post']('/',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x19')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1b'),auth['isAuthenticated'](),controller['addDisposition']);router[_0xb5fa('0x1a')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1c')]);router[_0xb5fa('0x1a')](_0xb5fa('0x1d'),controller[_0xb5fa('0x1e')]);router[_0xb5fa('0x1a')](_0xb5fa('0x13'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x1f')]);router[_0xb5fa('0x1a')]('/:id/send',auth[_0xb5fa('0xb')](),controller['send']);router[_0xb5fa('0x1a')]('/:id/status',controller[_0xb5fa('0x20')]);router[_0xb5fa('0x1a')]('/:id/users',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x21')]);router[_0xb5fa('0x22')]('/:id',auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x23')]);router[_0xb5fa('0x24')]('/:id',auth[_0xb5fa('0xb')](),controller['destroy']);router[_0xb5fa('0x24')](_0xb5fa('0x1b'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x25')]);router[_0xb5fa('0x24')](_0xb5fa('0x11'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x26')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xb5fa('0x27')]=router;
\ No newline at end of file
index 7d90111..0c57290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d7=['exports','STRING','name','ENUM','connectel','clicksend','plivo','clickatell','csc','infobip','intelepeer','BOOLEAN','TEXT','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','sequelize','randomstring'];(function(_0x43a9fb,_0x32ccb4){var _0x22198e=function(_0x2e8801){while(--_0x2e8801){_0x43a9fb['push'](_0x43a9fb['shift']());}};_0x22198e(++_0x32ccb4);}(_0x56d7,0x14e));var _0x756d=function(_0x360189,_0x40a134){_0x360189=_0x360189-0x0;var _0x5c148b=_0x56d7[_0x360189];return _0x5c148b;};'use strict';var Sequelize=require(_0x756d('0x0'));var rs=require(_0x756d('0x1'));module[_0x756d('0x2')]={'name':{'type':Sequelize[_0x756d('0x3')],'unique':_0x756d('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x756d('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x756d('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x756d('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x756d('0x3')]},'type':{'type':Sequelize[_0x756d('0x5')]('twilio','skebby',_0x756d('0x6'),_0x756d('0x7'),_0x756d('0x8'),_0x756d('0x9'),'bandwidth',_0x756d('0xa'),_0x756d('0xb'),_0x756d('0xc'))},'accountSid':{'type':Sequelize[_0x756d('0x3')]},'authId':{'type':Sequelize[_0x756d('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x756d('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x756d('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x756d('0x3')]},'senderString':{'type':Sequelize[_0x756d('0x3')]},'deliveryReport':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x756d('0x3')]},'notificationTemplate':{'type':Sequelize[_0x756d('0xe')],'defaultValue':function(){return _0x756d('0xf');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x756d('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x756d('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x756d('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x756d('0x10')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x756d('0xd')],'defaultValue':![],'comment':_0x756d('0x11'),'set':function(_0x1a92ec){if(!_0x1a92ec)this[_0x756d('0x12')](_0x756d('0x13'),null);this[_0x756d('0x12')](_0x756d('0x14'),_0x1a92ec);}}};
\ No newline at end of file
+var _0x4fc4=['clickatell','bandwidth','csc','infobip','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','exports','STRING','name','generate','ENUM','twilio','skebby','clicksend','plivo'];(function(_0x4c0eb7,_0x5c9572){var _0x19c937=function(_0x50834b){while(--_0x50834b){_0x4c0eb7['push'](_0x4c0eb7['shift']());}};_0x19c937(++_0x5c9572);}(_0x4fc4,0x12a));var _0x44fc=function(_0x32fb6c,_0x114f2f){_0x32fb6c=_0x32fb6c-0x0;var _0xa2e22f=_0x4fc4[_0x32fb6c];return _0xa2e22f;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x44fc('0x0'));module[_0x44fc('0x1')]={'name':{'type':Sequelize[_0x44fc('0x2')],'unique':_0x44fc('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x44fc('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x44fc('0x4')]();}},'phone':{'type':Sequelize[_0x44fc('0x2')]},'type':{'type':Sequelize[_0x44fc('0x5')](_0x44fc('0x6'),_0x44fc('0x7'),'connectel',_0x44fc('0x8'),_0x44fc('0x9'),_0x44fc('0xa'),_0x44fc('0xb'),_0x44fc('0xc'),_0x44fc('0xd'),'intelepeer')},'accountSid':{'type':Sequelize[_0x44fc('0x2')]},'authId':{'type':Sequelize[_0x44fc('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0x44fc('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x44fc('0x2')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x44fc('0x2')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x44fc('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x44fc('0xe')],'defaultValue':function(){return _0x44fc('0xf');}},'notificationSound':{'type':Sequelize[_0x44fc('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x44fc('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x44fc('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x44fc('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x44fc('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x44fc('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x44fc('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x44fc('0x11')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x44fc('0x10')],'defaultValue':![],'comment':_0x44fc('0x12'),'set':function(_0x2362fe){if(!_0x2362fe)this[_0x44fc('0x13')](_0x44fc('0x14'),null);this['setDataValue'](_0x44fc('0x15'),_0x2362fe);}}};
\ No newline at end of file
index f78a3e4..5cd6587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3271=['dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','requestid','status_code','groupName','bandwidth','redif','DELIVERED','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','isArray','userSmsAccount:remove','getAgents','User','eml-format','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/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','SmsAccounts','destroy','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','count','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','Applications','account','applications','orderBy','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','CompanyId','mobile','twilio','from','Body','messageId','skebby','sender','connectel','clicksend','message_id','plivo','From','Text','MessageUUID','infobip','results','text','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','Sequelize','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','list','omit','Contacts','SmsInteraction','spread','interaction','created','push','close','unmanaged','SmsMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','debug','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','SmsApplication','bulkCreate','priority','stack','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','updatedAt','DESC','List','user','Messages'];(function(_0x479e58,_0x2af8da){var _0x101d43=function(_0x3f1f29){while(--_0x3f1f29){_0x479e58['push'](_0x479e58['shift']());}};_0x101d43(++_0x2af8da);}(_0x3271,0x106));var _0x1327=function(_0x50b689,_0x3cb56d){_0x50b689=_0x50b689-0x0;var _0x36b7ac=_0x3271[_0x50b689];return _0x36b7ac;};'use strict';var emlformat=require(_0x1327('0x0'));var rimraf=require(_0x1327('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1327('0x2'));var rp=require(_0x1327('0x3'));var moment=require('moment');var BPromise=require(_0x1327('0x4'));var Mustache=require(_0x1327('0x5'));var util=require(_0x1327('0x6'));var path=require(_0x1327('0x7'));var sox=require(_0x1327('0x8'));var csv=require(_0x1327('0x9'));var ejs=require(_0x1327('0xa'));var fs=require('fs');var fs_extra=require(_0x1327('0xb'));var _=require(_0x1327('0xc'));var squel=require('squel');var crypto=require(_0x1327('0xd'));var jsforce=require(_0x1327('0xe'));var deskjs=require(_0x1327('0xf'));var toCsv=require(_0x1327('0x9'));var querystring=require(_0x1327('0x10'));var Papa=require(_0x1327('0x11'));var Redis=require(_0x1327('0x12'));var authService=require(_0x1327('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1327('0x14'));var hardwareService=require(_0x1327('0x15'));var logger=require(_0x1327('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x1327('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1327('0x18'))['db'];config[_0x1327('0x19')]=_[_0x1327('0x1a')](config[_0x1327('0x19')],{'host':_0x1327('0x1b'),'port':0x18eb});var socket=require(_0x1327('0x1c'))(new Redis(config[_0x1327('0x19')]));require(_0x1327('0x1d'))[_0x1327('0x1e')](socket);var jayson=require(_0x1327('0x1f'));var client=jayson[_0x1327('0x20')][_0x1327('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x2bcf9d,_0x4d3d89,_0x14b4b1,_0x2c7dd0){return new BPromise(function(_0x140420,_0x449635){var _0x6c86d3=_0x2c7dd0||client;return _0x6c86d3[_0x1327('0x22')](_0x2bcf9d,_0x14b4b1)[_0x1327('0x23')](function(_0xa753af){logger[_0x1327('0x24')](_0x1327('0x25'),_0x4d3d89,'request\x20sent');logger['debug'](_0x1327('0x26'),_0x4d3d89,_0x1327('0x27'),JSON[_0x1327('0x28')](_0xa753af));if(_0xa753af[_0x1327('0x29')]){if(_0xa753af[_0x1327('0x29')]['code']===0x1f4){logger['error'](_0x1327('0x25'),_0x4d3d89,_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);return _0x449635(_0xa753af[_0x1327('0x29')]['message']);}logger[_0x1327('0x29')]('SmsAccount,\x20%s,\x20%s',_0x4d3d89,_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);return _0x140420(_0xa753af[_0x1327('0x29')][_0x1327('0x2a')]);}else{logger[_0x1327('0x24')]('SmsAccount,\x20%s,\x20%s',_0x4d3d89,_0x1327('0x27'));_0x140420(_0xa753af['result'][_0x1327('0x2a')]);}})['catch'](function(_0x35fafd){logger[_0x1327('0x29')](_0x1327('0x25'),_0x4d3d89,_0x35fafd);_0x449635(_0x35fafd);});});}function respondWithStatusCode(_0x2267a2,_0x5f54c6){_0x5f54c6=_0x5f54c6||0xcc;return function(_0x482b95){if(_0x482b95){return _0x2267a2[_0x1327('0x2b')](_0x5f54c6);}return _0x2267a2[_0x1327('0x2c')](_0x5f54c6)[_0x1327('0x2d')]();};}function respondWithResult(_0x4ac6b1,_0x86b49d){_0x86b49d=_0x86b49d||0xc8;return function(_0xa326b0){if(_0xa326b0){return _0x4ac6b1[_0x1327('0x2c')](_0x86b49d)[_0x1327('0x2e')](_0xa326b0);}};}function respondWithFilteredResult(_0xc2a5a2,_0x5eb8fa){return function(_0xa68d07){if(_0xa68d07){var _0xd700f8=typeof _0x5eb8fa[_0x1327('0x2f')]==='undefined'&&typeof _0x5eb8fa['limit']===_0x1327('0x30');var _0x9f49c4=_0xa68d07['count'];var _0x2668ae=_0xd700f8?0x0:_0x5eb8fa['offset'];var _0x3ecf50=_0xd700f8?_0xa68d07['count']:_0x5eb8fa[_0x1327('0x2f')]+_0x5eb8fa[_0x1327('0x31')];var _0x1950a3;if(_0x3ecf50>=_0x9f49c4){_0x3ecf50=_0x9f49c4;_0x1950a3=0xc8;}else{_0x1950a3=0xce;}_0xc2a5a2[_0x1327('0x2c')](_0x1950a3);return _0xc2a5a2[_0x1327('0x32')](_0x1327('0x33'),_0x2668ae+'-'+_0x3ecf50+'/'+_0x9f49c4)['json'](_0xa68d07);}return null;};}function patchUpdates(_0x317e3b){return function(_0xa74756){try{jsonpatch['apply'](_0xa74756,_0x317e3b,!![]);}catch(_0x91c79b){return BPromise[_0x1327('0x34')](_0x91c79b);}return _0xa74756[_0x1327('0x35')]();};}function saveUpdates(_0x5cadeb,_0x46de06){return function(_0x30977d){if(_0x30977d){return _0x30977d[_0x1327('0x36')](_0x5cadeb)[_0x1327('0x23')](function(_0x618a97){return _0x618a97;});}return null;};}function removeEntity(_0x21f06b,_0x32b95b){return function(_0x181d6a){if(_0x181d6a){return _0x181d6a['destroy']()[_0x1327('0x23')](function(){var _0x21465c=_0x181d6a['get']({'plain':!![]});var _0x329e2=_0x1327('0x37');return db['UserProfileResource'][_0x1327('0x38')]({'where':{'type':_0x329e2,'resourceId':_0x21465c['id']}})[_0x1327('0x23')](function(){return _0x181d6a;});})[_0x1327('0x23')](function(){_0x21f06b[_0x1327('0x2c')](0xcc)[_0x1327('0x2d')]();});}};}function handleEntityNotFound(_0x2039ad,_0x53d13c){return function(_0x4218b0){if(!_0x4218b0){_0x2039ad[_0x1327('0x2b')](0x194);}return _0x4218b0;};}function handleError(_0x4fd6f,_0x53edff){_0x53edff=_0x53edff||0x1f4;return function(_0x418cbf){logger['error'](_0x418cbf['stack']);if(_0x418cbf[_0x1327('0x39')]){delete _0x418cbf[_0x1327('0x39')];}_0x4fd6f[_0x1327('0x2c')](_0x53edff)[_0x1327('0x3a')](_0x418cbf);};}exports[_0x1327('0x3b')]=function(_0x1a159c,_0xead623){var _0x35f3d6={'include':[{'model':db[_0x1327('0x3c')],'as':_0x1327('0x3d')}]},_0x3dd97c={},_0x224006={'count':0x0,'rows':[]};var _0x3a5012=_['map'](db[_0x1327('0x3e')][_0x1327('0x3f')],function(_0x25b8a9){return{'name':_0x25b8a9[_0x1327('0x40')],'type':_0x25b8a9[_0x1327('0x41')][_0x1327('0x42')]};});_0x3dd97c[_0x1327('0x43')]=_[_0x1327('0x44')](_0x3a5012,_0x1327('0x39'));_0x3dd97c[_0x1327('0x45')]=_['keys'](_0x1a159c['query']);_0x3dd97c['filters']=_[_0x1327('0x46')](_0x3dd97c[_0x1327('0x43')],_0x3dd97c['query']);_0x35f3d6[_0x1327('0x47')]=_['intersection'](_0x3dd97c['model'],qs[_0x1327('0x48')](_0x1a159c['query']['fields']));_0x35f3d6[_0x1327('0x47')]=_0x35f3d6['attributes'][_0x1327('0x49')]?_0x35f3d6[_0x1327('0x47')]:_0x3dd97c[_0x1327('0x43')];if(!_0x1a159c[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0x35f3d6[_0x1327('0x31')]=qs[_0x1327('0x31')](_0x1a159c[_0x1327('0x45')]['limit']);_0x35f3d6[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x1a159c[_0x1327('0x45')][_0x1327('0x2f')]);}_0x35f3d6[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0x1a159c[_0x1327('0x45')][_0x1327('0x4d')]);_0x35f3d6[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x1a159c[_0x1327('0x45')],_0x3dd97c[_0x1327('0x4f')]),_0x3a5012);if(_0x1a159c[_0x1327('0x45')][_0x1327('0x51')]){_0x35f3d6[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x35f3d6[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x3a5012,function(_0x2aedce){if(_0x2aedce['type']!==_0x1327('0x53')){var _0xf0ce5e={};_0xf0ce5e[_0x2aedce[_0x1327('0x39')]]={'$like':'%'+_0x1a159c[_0x1327('0x45')]['filter']+'%'};return _0xf0ce5e;}})});}_0x35f3d6=_['merge']({},_0x35f3d6,_0x1a159c[_0x1327('0x54')]);var _0x334068={'where':_0x35f3d6[_0x1327('0x4e')]};return db[_0x1327('0x3e')]['count'](_0x334068)['then'](function(_0x4282f0){_0x224006['count']=_0x4282f0;if(_0x1a159c[_0x1327('0x45')][_0x1327('0x55')]){_0x35f3d6['include']=[{'all':!![]}];}return db[_0x1327('0x3e')][_0x1327('0x56')](_0x35f3d6);})[_0x1327('0x23')](function(_0x51f588){_0x224006[_0x1327('0x57')]=_0x51f588;return _0x224006;})[_0x1327('0x23')](respondWithFilteredResult(_0xead623,_0x35f3d6))[_0x1327('0x58')](handleError(_0xead623,null));};exports[_0x1327('0x59')]=function(_0x517d57,_0x5c33a5){var _0x27ce43={'raw':![],'where':{'id':_0x517d57[_0x1327('0x5a')]['id']},'include':[{'model':db[_0x1327('0x3c')],'as':_0x1327('0x3d')}]},_0x208938={};_0x208938[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0x3e')][_0x1327('0x3f')]);_0x208938['query']=_[_0x1327('0x5b')](_0x517d57[_0x1327('0x45')]);_0x208938[_0x1327('0x4f')]=_['intersection'](_0x208938[_0x1327('0x43')],_0x208938[_0x1327('0x45')]);_0x27ce43[_0x1327('0x47')]=_[_0x1327('0x46')](_0x208938[_0x1327('0x43')],qs['fields'](_0x517d57['query'][_0x1327('0x48')]));_0x27ce43[_0x1327('0x47')]=_0x27ce43[_0x1327('0x47')]['length']?_0x27ce43[_0x1327('0x47')]:_0x208938['model'];if(_0x517d57[_0x1327('0x45')][_0x1327('0x55')]){_0x27ce43[_0x1327('0x5c')]=[{'all':!![]}];}_0x27ce43=_['merge']({},_0x27ce43,_0x517d57[_0x1327('0x54')]);return db[_0x1327('0x3e')][_0x1327('0x5d')](_0x27ce43)['then'](handleEntityNotFound(_0x5c33a5,null))[_0x1327('0x23')](respondWithResult(_0x5c33a5,null))[_0x1327('0x58')](handleError(_0x5c33a5,null));};exports['create']=function(_0x5df4a6,_0x3f4695){return db['SmsAccount'][_0x1327('0x5e')](_0x5df4a6[_0x1327('0x5f')],{})[_0x1327('0x23')](function(_0x4d5bad){var _0x313cf2=_0x5df4a6['user'][_0x1327('0x60')]({'plain':!![]});if(!_0x313cf2)throw new Error(_0x1327('0x61'));if(_0x313cf2[_0x1327('0x62')]==='user'){var _0x402626=_0x4d5bad[_0x1327('0x60')]({'plain':!![]});var _0x42833b=_0x1327('0x37');return db[_0x1327('0x63')][_0x1327('0x5d')]({'where':{'name':_0x42833b,'userProfileId':_0x313cf2['userProfileId']},'raw':!![]})[_0x1327('0x23')](function(_0x1f0e5e){if(_0x1f0e5e&&_0x1f0e5e[_0x1327('0x64')]===0x0){return db[_0x1327('0x65')][_0x1327('0x5e')]({'name':_0x402626[_0x1327('0x39')],'resourceId':_0x402626['id'],'type':_0x1f0e5e[_0x1327('0x39')],'sectionId':_0x1f0e5e['id']},{})[_0x1327('0x23')](function(){return _0x4d5bad;});}else{return _0x4d5bad;}})[_0x1327('0x58')](function(_0x1aadab){logger[_0x1327('0x29')](_0x1327('0x66'),_0x1aadab);throw _0x1aadab;});}return _0x4d5bad;})[_0x1327('0x23')](respondWithResult(_0x3f4695,0xc9))['catch'](handleError(_0x3f4695,null));};exports[_0x1327('0x36')]=function(_0x311c2f,_0x18e235){if(_0x311c2f[_0x1327('0x5f')]['id']){delete _0x311c2f[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')]['find']({'where':{'id':_0x311c2f[_0x1327('0x5a')]['id']},'include':[{'model':db['Pause'],'as':_0x1327('0x3d')}]})[_0x1327('0x23')](handleEntityNotFound(_0x18e235,null))[_0x1327('0x23')](saveUpdates(_0x311c2f['body'],null))[_0x1327('0x23')](respondWithResult(_0x18e235,null))[_0x1327('0x58')](handleError(_0x18e235,null));};exports[_0x1327('0x38')]=function(_0x1aed61,_0x5c4b13){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x1aed61[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x5c4b13,null))['then'](removeEntity(_0x5c4b13,null))[_0x1327('0x58')](handleError(_0x5c4b13,null));};exports[_0x1327('0x67')]=function(_0x4ba5a6,_0x5a0d1c){return db[_0x1327('0x3e')][_0x1327('0x67')]()[_0x1327('0x23')](respondWithResult(_0x5a0d1c,null))[_0x1327('0x58')](handleError(_0x5a0d1c,null));};exports[_0x1327('0x68')]=function(_0x42cf76,_0x2e1c09,_0x4c9103){if(_0x42cf76[_0x1327('0x5f')]['id']){delete _0x42cf76[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x42cf76[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e1c09,null))[_0x1327('0x23')](function(_0x42ab50){if(_0x42ab50){_0x42cf76['body'][_0x1327('0x69')]=_0x42ab50['id'];return db[_0x1327('0x6a')][_0x1327('0x5e')](_0x42cf76[_0x1327('0x5f')]);}})[_0x1327('0x23')](respondWithResult(_0x2e1c09,null))['catch'](handleError(_0x2e1c09,null));};exports[_0x1327('0x6b')]=function(_0xd64a78,_0x4f5cff,_0x3dc4ca){var _0x5f3f3c={'raw':![],'where':{}};var _0x3ba1ba={};var _0x2b1945={'count':0x0,'rows':[]};return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0xd64a78[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4f5cff,null))[_0x1327('0x23')](function(_0x5f3f54){if(_0x5f3f54){_0x3ba1ba[_0x1327('0x43')]=_['keys'](db[_0x1327('0x6a')][_0x1327('0x3f')]);_0x3ba1ba[_0x1327('0x45')]=_[_0x1327('0x5b')](_0xd64a78['query']);_0x3ba1ba[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x3ba1ba[_0x1327('0x43')],_0x3ba1ba[_0x1327('0x45')]);_0x5f3f3c[_0x1327('0x47')]=_['intersection'](_0x3ba1ba[_0x1327('0x43')],qs[_0x1327('0x48')](_0xd64a78[_0x1327('0x45')]['fields']));_0x5f3f3c[_0x1327('0x47')]=_0x5f3f3c[_0x1327('0x47')][_0x1327('0x49')]?_0x5f3f3c['attributes']:_0x3ba1ba[_0x1327('0x43')];if(!_0xd64a78[_0x1327('0x45')][_0x1327('0x4a')]('nolimit')){_0x5f3f3c['limit']=qs[_0x1327('0x31')](_0xd64a78['query'][_0x1327('0x31')]);_0x5f3f3c[_0x1327('0x2f')]=qs['offset'](_0xd64a78['query'][_0x1327('0x2f')]);}_0x5f3f3c[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0xd64a78[_0x1327('0x45')]['sort']);_0x5f3f3c['where']=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0xd64a78[_0x1327('0x45')],_0x3ba1ba[_0x1327('0x4f')]));_0x5f3f3c['where']['SmsAccountId']=_0x5f3f54['id'];if(_0xd64a78['query'][_0x1327('0x51')]){_0x5f3f3c[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x5f3f3c[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x5f3f3c[_0x1327('0x47')],function(_0x4bbcbb){var _0x37711a={};_0x37711a[_0x4bbcbb]={'$like':'%'+_0xd64a78[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x37711a;})});}_0x5f3f3c=_['merge']({},_0x5f3f3c,_0xd64a78[_0x1327('0x54')]);return db[_0x1327('0x6a')][_0x1327('0x6d')]({'where':_0x5f3f3c['where']})[_0x1327('0x23')](function(_0x101909){_0x2b1945[_0x1327('0x6d')]=_0x101909;if(_0xd64a78['query'][_0x1327('0x55')]){_0x5f3f3c[_0x1327('0x5c')]=[{'all':!![]}];}return db[_0x1327('0x6a')][_0x1327('0x56')](_0x5f3f3c);})[_0x1327('0x23')](function(_0x3f1dba){_0x2b1945[_0x1327('0x57')]=_0x3f1dba;return _0x2b1945;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x4f5cff,_0x5f3f3c))[_0x1327('0x58')](handleError(_0x4f5cff,null));};exports[_0x1327('0x6e')]=function(_0x27f122,_0x5a9db4,_0x23827a){return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x27f122[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5a9db4,null))[_0x1327('0x23')](function(_0x584c1b){if(_0x584c1b){return _0x584c1b[_0x1327('0x6e')](_0x27f122[_0x1327('0x45')][_0x1327('0x6f')]);}})['then'](respondWithStatusCode(_0x5a9db4,null))[_0x1327('0x58')](handleError(_0x5a9db4,null));};exports[_0x1327('0x70')]=function(_0x554e13,_0x34e663,_0x3d7496){if(_0x554e13[_0x1327('0x5f')]['id']){delete _0x554e13[_0x1327('0x5f')]['id'];}return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x554e13[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x34e663,null))[_0x1327('0x23')](function(_0x2d7d2c){if(_0x2d7d2c){_0x554e13[_0x1327('0x5f')][_0x1327('0x69')]=_0x2d7d2c['id'];return db[_0x1327('0x71')]['create'](_0x554e13['body']);}})[_0x1327('0x23')](respondWithResult(_0x34e663,null))[_0x1327('0x58')](handleError(_0x34e663,null));};exports[_0x1327('0x72')]=function(_0x29fa02,_0x31366c,_0x5a2c18){var _0x30129e={'raw':![],'where':{}};var _0x5220f3={};var _0x16ccf5={'count':0x0,'rows':[]};return db['SmsAccount'][_0x1327('0x6c')]({'where':{'id':_0x29fa02['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x31366c,null))[_0x1327('0x23')](function(_0x35897c){if(_0x35897c){_0x5220f3[_0x1327('0x43')]=_[_0x1327('0x5b')](db['CannedAnswer'][_0x1327('0x3f')]);_0x5220f3[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x29fa02[_0x1327('0x45')]);_0x5220f3[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x5220f3[_0x1327('0x43')],_0x5220f3[_0x1327('0x45')]);_0x30129e[_0x1327('0x47')]=_[_0x1327('0x46')](_0x5220f3[_0x1327('0x43')],qs['fields'](_0x29fa02[_0x1327('0x45')][_0x1327('0x48')]));_0x30129e[_0x1327('0x47')]=_0x30129e[_0x1327('0x47')][_0x1327('0x49')]?_0x30129e[_0x1327('0x47')]:_0x5220f3[_0x1327('0x43')];if(!_0x29fa02[_0x1327('0x45')][_0x1327('0x4a')]('nolimit')){_0x30129e['limit']=qs[_0x1327('0x31')](_0x29fa02[_0x1327('0x45')][_0x1327('0x31')]);_0x30129e['offset']=qs[_0x1327('0x2f')](_0x29fa02[_0x1327('0x45')][_0x1327('0x2f')]);}_0x30129e[_0x1327('0x4c')]=qs['sort'](_0x29fa02[_0x1327('0x45')]['sort']);_0x30129e[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x29fa02['query'],_0x5220f3[_0x1327('0x4f')]));_0x30129e[_0x1327('0x4e')][_0x1327('0x69')]=_0x35897c['id'];if(_0x29fa02[_0x1327('0x45')][_0x1327('0x51')]){_0x30129e[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x30129e[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x30129e['attributes'],function(_0x263615){var _0x10bb66={};_0x10bb66[_0x263615]={'$like':'%'+_0x29fa02[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x10bb66;})});}_0x30129e=_[_0x1327('0x52')]({},_0x30129e,_0x29fa02['options']);return db[_0x1327('0x71')][_0x1327('0x6d')]({'where':_0x30129e[_0x1327('0x4e')]})[_0x1327('0x23')](function(_0x484f9c){_0x16ccf5[_0x1327('0x6d')]=_0x484f9c;if(_0x29fa02[_0x1327('0x45')]['includeAll']){_0x30129e[_0x1327('0x5c')]=[{'all':!![]}];}return db[_0x1327('0x71')][_0x1327('0x56')](_0x30129e);})[_0x1327('0x23')](function(_0x4a20d7){_0x16ccf5[_0x1327('0x57')]=_0x4a20d7;return _0x16ccf5;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x31366c,_0x30129e))[_0x1327('0x58')](handleError(_0x31366c,null));};exports[_0x1327('0x73')]=function(_0x193ccb,_0x4ae2b7,_0x12b4d5){return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x193ccb[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x4ae2b7,null))[_0x1327('0x23')](function(_0xc7e36e){if(_0xc7e36e){return _0xc7e36e['removeAnswers'](_0x193ccb[_0x1327('0x45')][_0x1327('0x6f')]);}})['then'](respondWithStatusCode(_0x4ae2b7,null))[_0x1327('0x58')](handleError(_0x4ae2b7,null));};exports[_0x1327('0x74')]=function(_0x4cab04,_0xd7a428,_0x514748){var _0x41f13c={'channel':_0x1327('0x75')};var _0x7d23e3=[];var _0x498931=[];var _0x5d9e74={};return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x4cab04[_0x1327('0x5a')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x1327('0x76')}]})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))['then'](function(_0x4fa5a5){_0x41f13c[_0x1327('0x77')]=_0x4fa5a5;_0x41f13c[_0x1327('0x78')]=_[_0x1327('0x79')](_0x4fa5a5[_0x1327('0x76')],['priority'],[_0x1327('0x7a')]);if(_0x41f13c[_0x1327('0x77')]['Applications']){delete _0x41f13c[_0x1327('0x77')][_0x1327('0x76')];}return db[_0x1327('0x7b')]['describe']();})[_0x1327('0x23')](function(_0xc685c7){if(!_0xc685c7){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0x7d'));}_0x7d23e3=_['difference'](_[_0x1327('0x5b')](_0xc685c7),[_0x1327('0x7e'),'updatedAt']);_0x498931=_['difference'](_['keys'](_0xc685c7),['createdAt','updatedAt',_0x1327('0x7f'),'ListId']);_0x41f13c['body']={'mapKey':_0x1327('0x80')};if(_0x41f13c['account'][_0x1327('0x41')]){switch(_0x41f13c[_0x1327('0x77')][_0x1327('0x41')]){case _0x1327('0x81'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')]['From'];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04['body'][_0x1327('0x83')];_0x41f13c['body'][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')]['MessageSid'];break;case _0x1327('0x85'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]='+'+_0x4cab04[_0x1327('0x5f')][_0x1327('0x86')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04['body']['text'];break;case _0x1327('0x87'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x2a')];break;case _0x1327('0x88'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')]['from'];_0x41f13c['body']['body']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x5f')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04['body'][_0x1327('0x89')];break;case _0x1327('0x8a'):_0x41f13c[_0x1327('0x5f')]['from']=_0x4cab04['body'][_0x1327('0x8b')];_0x41f13c['body']['body']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8c')];_0x41f13c[_0x1327('0x5f')]['messageId']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8d')];break;case _0x1327('0x8e'):_0x41f13c[_0x1327('0x5f')]['from']='+'+_0x4cab04[_0x1327('0x5f')][_0x1327('0x8f')][0x0][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]=_0x4cab04[_0x1327('0x5f')]['results'][0x0][_0x1327('0x90')];_0x41f13c[_0x1327('0x5f')]['messageId']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x8f')][0x0][_0x1327('0x84')];break;case _0x1327('0x91'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x92')];_0x41f13c['body'][_0x1327('0x5f')]=_0x4cab04['body'][_0x1327('0x93')][_0x1327('0x2a')];break;case _0x1327('0x94'):_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x95')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')]['text'];_0x41f13c['body'][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x96')];break;case'bandwidth':_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['id'];_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')]=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['from'];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['text'];break;case _0x1327('0x97'):_0x41f13c[_0x1327('0x5f')]['from']=_0x4cab04[_0x1327('0x5f')][_0x1327('0x82')];_0x41f13c[_0x1327('0x5f')]['body']=_0x4cab04[_0x1327('0x5f')]['message'];_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')]=_0x4cab04[_0x1327('0x5f')][_0x1327('0x98')];break;}}if(_0x41f13c['body']['id']){delete _0x41f13c[_0x1327('0x5f')]['id'];}if(_[_0x1327('0x99')](_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')])){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0x9a'));}if(_[_0x1327('0x99')](_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')])||_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')]===''){throw new db['Sequelize'][(_0x1327('0x7c'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x1327('0x99')](_0x41f13c['body'][_0x1327('0x9b')])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x498931);}if(!_[_0x1327('0x9d')](_0x498931,_0x41f13c['body'][_0x1327('0x9b')])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))](_0x1327('0x9e')+_0x498931);}_0x5d9e74[_0x41f13c[_0x1327('0x5f')][_0x1327('0x9b')]]=_0x41f13c['body'][_0x1327('0x82')];return db[_0x1327('0x9f')]['find']({'where':{'id':_0x41f13c[_0x1327('0x77')][_0x1327('0xa0')]},'include':[{'model':db[_0x1327('0x7b')],'as':'Contacts','where':_0x5d9e74,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))[_0x1327('0x23')](function(_0x18920e){if(_0x18920e){_0x41f13c[_0x1327('0xa1')]=_[_0x1327('0xa2')](_0x18920e,[_0x1327('0xa3')]);if(_0x18920e[_0x1327('0xa3')][_0x1327('0x49')]){return _0x18920e[_0x1327('0xa3')][0x0];}var _0x44b438=_[_0x1327('0x1a')](_0x41f13c[_0x1327('0x5f')],{'firstName':_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')],'ListId':_0x18920e['id']});_0x44b438[_0x41f13c[_0x1327('0x5f')]['mapKey']]=_0x41f13c[_0x1327('0x5f')]['from'];return db['CmContact'][_0x1327('0x5e')](_0x44b438,{'fields':_0x7d23e3,'raw':!![]});}})[_0x1327('0x23')](handleEntityNotFound(_0xd7a428,null))[_0x1327('0x23')](function(_0x210494){if(_0x210494){_0x41f13c['contact']=_0x210494;var _0x2b7618={'ContactId':_0x210494['id'],'phone':_0x41f13c[_0x1327('0x5f')][_0x1327('0x82')],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id']};var _0x318265={'ContactId':_0x210494['id'],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id'],'closed':![]};return db[_0x1327('0xa4')][_0x1327('0x5d')]({'where':_0x318265})[_0x1327('0x23')](function(_0x482ac4){if(_0x482ac4){return[_0x482ac4,![]];}return db['SmsInteraction'][_0x1327('0x5e')](_0x2b7618)[_0x1327('0x23')](function(_0x540d63){return[_0x540d63,!![]];});});}})[_0x1327('0xa5')](function(_0x4615d3,_0x4dee46){_0x41f13c[_0x1327('0xa6')]=_0x4615d3['get']({'plain':!![]});_0x41f13c[_0x1327('0xa6')][_0x1327('0xa7')]=![];if(_0x4dee46){if(_0x41f13c[_0x1327('0x77')]['autoclose']){_0x41f13c[_0x1327('0x78')][_0x1327('0xa8')]({'id':0x0,'priority':_0x41f13c['applications']['length']+0x1,'app':_0x1327('0xa9'),'appdata':_0x1327('0xaa'),'interval':'*,*,*,*'});}_0x41f13c[_0x1327('0xa6')][_0x1327('0xa7')]=!![];}return db[_0x1327('0xab')][_0x1327('0x5e')]({'phone':_0x41f13c[_0x1327('0x5f')]['from'],'messageId':_0x41f13c[_0x1327('0x5f')][_0x1327('0x84')],'body':_0x41f13c[_0x1327('0x5f')][_0x1327('0x5f')],'SmsAccountId':_0x4cab04[_0x1327('0x5a')]['id'],'SmsInteractionId':_0x4615d3['id'],'direction':'in','ContactId':_0x4615d3[_0x1327('0xac')],'AttachmentId':_0x41f13c[_0x1327('0x5f')][_0x1327('0xad')]});})[_0x1327('0x23')](function(_0x431d76){_0x41f13c[_0x1327('0x2a')]=_0x431d76;if(_0x41f13c[_0x1327('0xa6')]['UserId']){return db['User'][_0x1327('0x5d')]({'attributes':['id',_0x1327('0x39')],'where':{'id':_0x41f13c[_0x1327('0xa6')][_0x1327('0xae')]}})[_0x1327('0x23')](function(_0x2741da){if(_0x2741da){_0x41f13c[_0x1327('0x78')][_0x1327('0xaf')]({'id':0x0,'priority':0x0,'app':_0x1327('0xb0'),'appdata':_0x2741da[_0x1327('0x39')]+','+(_0x41f13c[_0x1327('0x77')][_0x1327('0xb1')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x1327('0xb2'),_0x1327('0xb3'),_0x41f13c);});}return respondWithRpcPromise('Start',_0x1327('0xb3'),_0x41f13c);})[_0x1327('0x23')](function(_0x10eac6){if(_0x10eac6){var _0x37c213=0xc8;var _0x2f99f0='receiveMessage';logger[_0x1327('0x24')](_0x1327('0x26'),_0x2f99f0,_0x37c213,_0x1327('0xb4'));logger[_0x1327('0xb5')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2f99f0,_0x37c213,'entity\x20found',JSON[_0x1327('0x28')](_0x10eac6));if(_0x41f13c[_0x1327('0x77')][_0x1327('0x41')]===_0x1327('0x81')){return _0xd7a428[_0x1327('0x2c')](_0x37c213)[_0x1327('0x32')](_0x1327('0xb6'),'text/xml')[_0x1327('0x3a')](_0x1327('0xb7'));}else{return _0xd7a428['status'](_0x37c213)[_0x1327('0x2e')](_0x10eac6);}}})['catch'](handleError(_0xd7a428,null));};exports[_0x1327('0xb8')]=function(_0x3dd3a0,_0x1f6ea7){var _0xeed5eb=_0x3dd3a0['params']['id'];var _0x27e260=_0x3dd3a0[_0x1327('0x5f')];var _0x5f11e0=0xc8;var _0xfd1c8d=null;return db[_0x1327('0xb9')][_0x1327('0xba')]({'isolationLevel':db[_0x1327('0xb9')][_0x1327('0xbb')]['ISOLATION_LEVELS'][_0x1327('0xbc')]},function(_0x123237){return db[_0x1327('0x3e')]['findOne']({'where':{'id':_0xeed5eb},'transaction':_0x123237})['then'](function(_0x4ab952){if(_0x4ab952){return db[_0x1327('0xbd')]['destroy']({'where':{'SmsAccountId':_0xeed5eb},'transaction':_0x123237})[_0x1327('0x23')](function(){var _0x48a8fe=_[_0x1327('0x44')](_0x27e260,function(_0x3a1e5e){_0x3a1e5e['SmsAccountId']=_0xeed5eb;return _0x3a1e5e;});return db[_0x1327('0xbd')][_0x1327('0xbe')](_0x48a8fe,{'transaction':_0x123237});});}else{_0x5f11e0=0x194;_0xfd1c8d=[];}});})[_0x1327('0x23')](function(){if(_0x5f11e0!==0x194){return db[_0x1327('0xbd')]['findAndCountAll']({'where':{'SmsAccountId':_0xeed5eb},'order':_0x1327('0xbf')})[_0x1327('0x23')](function(_0x269553){_0xfd1c8d=_0x269553;});}})[_0x1327('0x58')](function(_0x2ef4c2){_0x5f11e0=0x1f4;logger[_0x1327('0x29')](_0x2ef4c2[_0x1327('0xc0')]);if(_0x2ef4c2[_0x1327('0x39')]){delete _0x2ef4c2[_0x1327('0x39')];}_0xfd1c8d=_0x2ef4c2;})['finally'](function(){if(_0xfd1c8d===null){_0x1f6ea7[_0x1327('0x2b')](_0x5f11e0);}else{if(_0x5f11e0===0x1f4){_0x1f6ea7['status'](_0x5f11e0)[_0x1327('0x3a')](_0xfd1c8d);}else{_0x1f6ea7[_0x1327('0x2c')](_0x5f11e0)[_0x1327('0x2e')](_0xfd1c8d);}}});};exports[_0x1327('0xc1')]=function(_0x21754e,_0x42ce09,_0x5b4602){var _0x2d6aa8={};var _0x321bfd={};var _0x32042a;var _0x19a5c7;return db[_0x1327('0x3e')]['findOne']({'where':{'id':_0x21754e[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x42ce09,null))[_0x1327('0x23')](function(_0x4ba364){if(_0x4ba364){_0x32042a=_0x4ba364;_0x321bfd['model']=_[_0x1327('0x5b')](db[_0x1327('0xbd')][_0x1327('0x3f')]);_0x321bfd[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x21754e['query']);_0x321bfd[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x321bfd[_0x1327('0x43')],_0x321bfd[_0x1327('0x45')]);_0x2d6aa8[_0x1327('0x47')]=_[_0x1327('0x46')](_0x321bfd['model'],qs[_0x1327('0x48')](_0x21754e[_0x1327('0x45')][_0x1327('0x48')]));_0x2d6aa8['attributes']=_0x2d6aa8['attributes'][_0x1327('0x49')]?_0x2d6aa8['attributes']:_0x321bfd[_0x1327('0x43')];_0x2d6aa8[_0x1327('0x4c')]=qs['sort'](_0x21754e[_0x1327('0x45')][_0x1327('0x4d')]);_0x2d6aa8[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x21754e['query'],_0x321bfd['filters']));if(_0x21754e[_0x1327('0x45')][_0x1327('0x51')]){_0x2d6aa8['where']=_['merge'](_0x2d6aa8[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x2d6aa8[_0x1327('0x47')],function(_0x2503b4){var _0x461bbd={};_0x461bbd[_0x2503b4]={'$like':'%'+_0x21754e[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x461bbd;})});}_0x2d6aa8=_[_0x1327('0x52')]({},_0x2d6aa8,_0x21754e[_0x1327('0x54')]);return _0x32042a[_0x1327('0xc1')](_0x2d6aa8);}})[_0x1327('0x23')](function(_0x5dd60b){if(_0x5dd60b){_0x19a5c7=_0x5dd60b[_0x1327('0x49')];if(!_0x21754e[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0x2d6aa8['limit']=qs[_0x1327('0x31')](_0x21754e[_0x1327('0x45')][_0x1327('0x31')]);_0x2d6aa8['offset']=qs[_0x1327('0x2f')](_0x21754e[_0x1327('0x45')][_0x1327('0x2f')]);}return _0x32042a[_0x1327('0xc1')](_0x2d6aa8);}})[_0x1327('0x23')](function(_0x4ae2af){if(_0x4ae2af){return _0x4ae2af?{'count':_0x19a5c7,'rows':_0x4ae2af}:null;}})[_0x1327('0x23')](respondWithResult(_0x42ce09,null))[_0x1327('0x58')](handleError(_0x42ce09,null));};exports[_0x1327('0xc2')]=function(_0x113dc2,_0x5fcbee,_0x1f1b9a){var _0xc347fc={'raw':![],'where':{}};var _0x25b291={};var _0x9f38ae={'count':0x0,'rows':[]};return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0x113dc2[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5fcbee,null))[_0x1327('0x23')](function(_0x199c79){if(_0x199c79){_0x25b291[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0xa4')][_0x1327('0x3f')]);_0x25b291[_0x1327('0x45')]=_[_0x1327('0x5b')](_0x113dc2[_0x1327('0x45')]);_0x25b291[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x25b291[_0x1327('0x43')],_0x25b291['query']);_0xc347fc[_0x1327('0x47')]=_[_0x1327('0x46')](_0x25b291[_0x1327('0x43')],qs[_0x1327('0x48')](_0x113dc2[_0x1327('0x45')][_0x1327('0x48')]));_0xc347fc[_0x1327('0x47')]=_0xc347fc[_0x1327('0x47')][_0x1327('0x49')]?_0xc347fc[_0x1327('0x47')]:_0x25b291[_0x1327('0x43')];if(!_0x113dc2[_0x1327('0x45')][_0x1327('0x4a')](_0x1327('0x4b'))){_0xc347fc[_0x1327('0x31')]=qs[_0x1327('0x31')](_0x113dc2[_0x1327('0x45')][_0x1327('0x31')]);_0xc347fc[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x113dc2['query'][_0x1327('0x2f')]);}_0xc347fc[_0x1327('0x4c')]=qs[_0x1327('0x4d')](_0x113dc2[_0x1327('0x45')]['sort']);_0xc347fc[_0x1327('0x4e')]=qs[_0x1327('0x4f')](_[_0x1327('0x50')](_0x113dc2['query'],_0x25b291[_0x1327('0x4f')]));_0xc347fc[_0x1327('0x4e')][_0x1327('0x69')]=_0x199c79['id'];if(_0x113dc2['query'][_0x1327('0x51')]){_0xc347fc['where']=_['merge'](_0xc347fc[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0xc347fc['attributes'],function(_0x2bd68b){var _0xaf2446={};_0xaf2446[_0x2bd68b]={'$like':'%'+_0x113dc2[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0xaf2446;})});}_0xc347fc=_[_0x1327('0x52')]({},_0xc347fc,_0x113dc2[_0x1327('0x54')]);return db[_0x1327('0xa4')][_0x1327('0x6d')]({'where':_0xc347fc['where']})[_0x1327('0x23')](function(_0x22a74d){_0x9f38ae['count']=_0x22a74d;if(_0x113dc2[_0x1327('0x45')][_0x1327('0x55')]){_0xc347fc[_0x1327('0x5c')]=[{'model':db[_0x1327('0x7b')],'as':_0x1327('0xc3'),'required':![]},{'model':db['User'],'as':_0x1327('0xc4'),'attributes':[_0x1327('0x39'),_0x1327('0xc5'),_0x1327('0xc6')],'required':![]},{'model':db[_0x1327('0xc7')],'as':_0x1327('0xc8'),'attributes':['id',_0x1327('0x39'),_0x1327('0xc9')],'where':_0x113dc2[_0x1327('0x45')]['tag']?{'id':_0x113dc2['query'][_0x1327('0xca')]}:undefined,'required':_0x113dc2[_0x1327('0x45')][_0x1327('0xca')]?!![]:![]}];}return db[_0x1327('0xa4')][_0x1327('0x56')](_0xc347fc);})[_0x1327('0x23')](function(_0x109a66){_0x9f38ae[_0x1327('0x57')]=_0x109a66;return _0x9f38ae;});}})[_0x1327('0x23')](respondWithFilteredResult(_0x5fcbee,_0xc347fc))[_0x1327('0x58')](handleError(_0x5fcbee,null));};exports[_0x1327('0x3a')]=function(_0x277011,_0x23908f,_0x3e3bc4){var _0x3a17fa,_0x5675c1,_0x524c35;if(_['isNil'](_0x277011['body']['body'])||_0x277011[_0x1327('0x5f')][_0x1327('0x5f')]===''){throw new db['Sequelize'][(_0x1327('0x7c'))](_0x1327('0xcb'));}if(_[_0x1327('0x99')](_0x277011['body']['to'])){throw new db[(_0x1327('0x9c'))][(_0x1327('0x7c'))](_0x1327('0xcc'));}_0x3a17fa=_0x277011[_0x1327('0x5f')]['to'];return db[_0x1327('0x3e')]['find']({'where':{'id':_0x277011[_0x1327('0x5a')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x3a17fa},'limit':0x1,'order':[[_0x1327('0xcd'),_0x1327('0xce')]]}]}]})[_0x1327('0x23')](handleEntityNotFound(_0x23908f,null))[_0x1327('0x23')](function(_0x4dbaa3){if(_0x4dbaa3&&_0x4dbaa3[_0x1327('0xcf')]){_0x5675c1=_0x4dbaa3[_0x1327('0x60')]({'plain':!![]});if(_0x5675c1[_0x1327('0xcf')]&&_0x5675c1[_0x1327('0xcf')][_0x1327('0xa3')][_0x1327('0x49')]){return _0x5675c1[_0x1327('0xcf')][_0x1327('0xa3')][0x0];}return db[_0x1327('0x7b')][_0x1327('0x5e')](_[_0x1327('0x1a')](_0x277011['body'],{'firstName':_0x3a17fa,'mobile':_0x3a17fa,'phone':_0x3a17fa,'ListId':_0x5675c1['ListId']}));}})[_0x1327('0x23')](handleEntityNotFound(_0x23908f,null))[_0x1327('0x23')](function(_0x19f576){if(_0x19f576){_0x524c35=_0x19f576;return db[_0x1327('0xa4')][_0x1327('0x5d')]({'where':{'ContactId':_0x524c35['id'],'closed':![],'SmsAccountId':_0x5675c1['id']}})['then'](function(_0x4f0264){if(_0x4f0264){return[_0x4f0264,![]];}return db[_0x1327('0xa4')]['create']({'UserId':_0x277011[_0x1327('0xd0')]['id'],'ContactId':_0x524c35['id'],'SmsAccountId':_0x5675c1['id'],'phone':_0x3a17fa,'firstMsgDirection':'out','Messages':[_[_0x1327('0x52')](_0x277011[_0x1327('0x5f')],{'read':![],'body':_0x277011['body']['body'],'phone':_0x3a17fa,'SmsAccountId':_0x5675c1['id'],'UserId':_0x277011['user']['id'],'ContactId':_0x524c35['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x1327('0xd1')}]})[_0x1327('0x23')](function(_0x4f03cb){return[_0x4f03cb,!![]];});});}})[_0x1327('0xa5')](function(_0x3aa1e2,_0x4cfa59){if(_0x4cfa59){return _0x3aa1e2;}return db[_0x1327('0xab')][_0x1327('0x5e')](_[_0x1327('0x52')](_0x277011['body'],{'read':![],'body':_0x277011['body']['body'],'phone':_0x3a17fa,'SmsAccountId':_0x5675c1['id'],'SmsInteractionId':_0x3aa1e2['id'],'UserId':_0x277011[_0x1327('0xd0')]['id'],'ContactId':_0x524c35['id']}))['then'](function(_0x12e645){_0x3aa1e2[_0x1327('0xd2')][_0x1327('0xd1')]=[];_0x3aa1e2['dataValues'][_0x1327('0xd1')][_0x1327('0xa8')](_0x12e645['dataValues']);return _0x3aa1e2;});})[_0x1327('0x23')](respondWithResult(_0x23908f,null))[_0x1327('0x58')](handleError(_0x23908f,null));};exports['status']=function(_0xa43aaf,_0x4e41d3,_0x3fd7bf){if(_0xa43aaf['body']['id']){delete _0xa43aaf[_0x1327('0x5f')]['id'];}var _0x425b2d,_0x348d7c,_0x3a3a26;return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0xa43aaf['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x4e41d3,null))[_0x1327('0x23')](function(_0x5a6bdd){if(_0x5a6bdd){_0x3a3a26=_0x5a6bdd;logger[_0x1327('0xb5')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0xd3'),_0x5a6bdd[_0x1327('0x41')],util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));switch(_0x5a6bdd[_0x1327('0x41')]){case _0x1327('0x85'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd5')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')]['status'];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd5')]}});}break;case _0x1327('0x87'):if(_0xa43aaf[_0x1327('0x5f')]['requestid']&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd6')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd6')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0xd7')]}});}break;case _0x1327('0x88'):if(_0xa43aaf['body'][_0x1327('0x89')]&&_0xa43aaf['body'][_0x1327('0xd8')]){_0x348d7c=_0xa43aaf['body']['status_code'];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0x89')]}});}break;case _0x1327('0x8e'):var _0x456e75=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x8f')][0x0];if(_0x456e75['messageId']&&_0x456e75['status']['groupName']==='DELIVERED'){_0x348d7c=_0x456e75['status'][_0x1327('0xd9')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0x456e75[_0x1327('0x84')]}});}break;case _0x1327('0x94'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0x84')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0xa43aaf[_0x1327('0x5f')][_0x1327('0x84')]}});}break;case _0x1327('0xda'):if(_0xa43aaf[_0x1327('0x5f')][0x0][_0x1327('0x2a')]['id']){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][0x0][_0x1327('0x41')];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf['body'][0x0][_0x1327('0x2a')]['id']}});}break;case _0x1327('0x97'):if(_0xa43aaf[_0x1327('0x5f')][_0x1327('0xdb')]&&_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')]){_0x348d7c=_0xa43aaf[_0x1327('0x5f')][_0x1327('0x2c')];return db[_0x1327('0xab')]['find']({'where':{'messageId':_0xa43aaf['body']['redif']}});}break;}}})[_0x1327('0x23')](handleEntityNotFound(_0x4e41d3,null))[_0x1327('0x23')](function(_0x1437cc){if(_0x1437cc){_0x425b2d=_0x1437cc;switch(_0x3a3a26['type']){case _0x1327('0x85'):if(_0x348d7c===_0x1327('0xdc')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x85'),util['inspect'](_0xa43aaf['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x348d7c==='1'){return _0x425b2d['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x85'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x88'):if(!_0xa43aaf[_0x1327('0x5f')][_0x1327('0xdd')]&&_0x348d7c>=0xc8&&_0x348d7c<=0xce){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x88'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x8e'):var _0x5eb211=_0xa43aaf['body'][_0x1327('0x8f')][0x0];if(_0x5eb211[_0x1327('0x2c')]['groupName']===_0x1327('0xdc')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger['error'](_0x1327('0x26'),'status',_0x1327('0x8e'),util['inspect'](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x94'):if(_0x348d7c==_0x1327('0xde')||_0x348d7c==_0x1327('0xdf')){return _0x425b2d[_0x1327('0x36')]({'read':!![]});}else{logger['error'](_0x1327('0x26'),'status',_0x1327('0x94'),util[_0x1327('0xd4')](_0xa43aaf['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x348d7c==_0x1327('0xe0')){return _0x425b2d['update']({'read':!![]});}else{logger['error'](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0xda'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;case _0x1327('0x97'):if(_0x348d7c===_0x1327('0xe1')||_0x348d7c===_0x1327('0xe2')){return _0x425b2d['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x97'),util[_0x1327('0xd4')](_0xa43aaf[_0x1327('0x5f')],{'showHidden':![],'depth':null}));}break;}return _0x425b2d;}})[_0x1327('0x23')](respondWithResult(_0x4e41d3,null))[_0x1327('0x58')](handleError(_0x4e41d3,null));};exports[_0x1327('0xe3')]=function(_0x2bbfc7,_0x2bc54b,_0x4366b1){var _0x52df6e,_0x2a9f9d,_0x202fdb;return db[_0x1327('0x3e')][_0x1327('0x5d')]({'where':{'id':_0x2bbfc7[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2bc54b,null))[_0x1327('0x23')](function(_0x96da5f){if(_0x96da5f){_0x202fdb=_0x96da5f;logger[_0x1327('0xb5')](_0x1327('0x26'),'status',_0x1327('0xd3'),_0x96da5f[_0x1327('0x41')],util['inspect'](_0x2bbfc7['query'],{'showHidden':![],'depth':null}));switch(_0x96da5f[_0x1327('0x41')]){case'csc':if(_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe4')]&&_0x2bbfc7[_0x1327('0x45')]['state']){_0x2a9f9d=_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe5')];return db[_0x1327('0xab')][_0x1327('0x5d')]({'where':{'messageId':_0x2bbfc7[_0x1327('0x45')][_0x1327('0xe4')]}});}break;}}})[_0x1327('0x23')](handleEntityNotFound(_0x2bc54b,null))['then'](function(_0x1e5332){if(_0x1e5332){_0x52df6e=_0x1e5332;switch(_0x202fdb[_0x1327('0x41')]){case _0x1327('0x91'):if(_0x2a9f9d==='2'||_0x2a9f9d==='6'){return _0x52df6e['update']({'read':!![]});}else{logger[_0x1327('0x29')](_0x1327('0x26'),_0x1327('0x2c'),_0x1327('0x91'),util[_0x1327('0xd4')](_0x2bbfc7[_0x1327('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x52df6e;}})[_0x1327('0x23')](respondWithResult(_0x2bc54b,null))[_0x1327('0x58')](handleError(_0x2bc54b,null));};exports[_0x1327('0xe6')]=function(_0x21963f,_0xea17de,_0x3fd76f){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x21963f['params']['id']}})[_0x1327('0x23')](handleEntityNotFound(_0xea17de,null))[_0x1327('0x23')](function(_0x22984f){if(_0x22984f){return _0x22984f[_0x1327('0xe6')](_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')],_[_0x1327('0xa2')](_0x21963f[_0x1327('0x5f')],[_0x1327('0x6f'),'id'])||{})[_0x1327('0xa5')](function(_0x5f5daa){for(var _0x34fbcc=0x0;_0x34fbcc<_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')]['length'];_0x34fbcc+=0x1){socket[_0x1327('0xe7')]('userSmsAccount:save',{'UserId':Number(_0x21963f[_0x1327('0x5f')][_0x1327('0x6f')][_0x34fbcc]),'SmsAccountId':Number(_0x21963f[_0x1327('0x5a')]['id'])});}return _0x5f5daa;});}})[_0x1327('0x23')](respondWithResult(_0xea17de,null))['catch'](handleError(_0xea17de,null));};exports['removeAgents']=function(_0x45f4b6,_0x3246ba,_0x3cf8fd){return db[_0x1327('0x3e')]['find']({'where':{'id':_0x45f4b6[_0x1327('0x5a')]['id']}})[_0x1327('0x23')](handleEntityNotFound(_0x3246ba,null))[_0x1327('0x23')](function(_0x318737){if(_0x318737){return _0x318737['removeAgents'](_0x45f4b6[_0x1327('0x45')]['ids'])[_0x1327('0x23')](function(){if(_[_0x1327('0xe8')](_0x45f4b6[_0x1327('0x45')]['ids'])){for(var _0xca2974=0x0;_0xca2974<_0x45f4b6[_0x1327('0x45')]['ids'][_0x1327('0x49')];_0xca2974+=0x1){socket[_0x1327('0xe7')](_0x1327('0xe9'),{'UserId':Number(_0x45f4b6[_0x1327('0x45')][_0x1327('0x6f')][_0xca2974]),'SmsAccountId':Number(_0x45f4b6[_0x1327('0x5a')]['id'])});}}else{socket['emit'](_0x1327('0xe9'),{'UserId':Number(_0x45f4b6[_0x1327('0x45')][_0x1327('0x6f')]),'SmsAccountId':Number(_0x45f4b6[_0x1327('0x5a')]['id'])});}});}})[_0x1327('0x23')](respondWithStatusCode(_0x3246ba,null))[_0x1327('0x58')](handleError(_0x3246ba,null));};exports[_0x1327('0xea')]=function(_0x55703d,_0x1883e7,_0x4e77eb){var _0x37dbff={};var _0x3f1dc2={};var _0x54eeab;var _0x46a70f;return db[_0x1327('0x3e')][_0x1327('0x6c')]({'where':{'id':_0x55703d[_0x1327('0x5a')]['id']}})['then'](handleEntityNotFound(_0x1883e7,null))['then'](function(_0x5c2722){if(_0x5c2722){_0x54eeab=_0x5c2722;_0x3f1dc2[_0x1327('0x43')]=_[_0x1327('0x5b')](db[_0x1327('0xeb')][_0x1327('0x3f')]);_0x3f1dc2['query']=_['keys'](_0x55703d[_0x1327('0x45')]);_0x3f1dc2[_0x1327('0x4f')]=_[_0x1327('0x46')](_0x3f1dc2[_0x1327('0x43')],_0x3f1dc2[_0x1327('0x45')]);_0x37dbff['attributes']=_[_0x1327('0x46')](_0x3f1dc2[_0x1327('0x43')],qs[_0x1327('0x48')](_0x55703d[_0x1327('0x45')][_0x1327('0x48')]));_0x37dbff['attributes']=_0x37dbff[_0x1327('0x47')][_0x1327('0x49')]?_0x37dbff[_0x1327('0x47')]:_0x3f1dc2[_0x1327('0x43')];_0x37dbff[_0x1327('0x4c')]=qs['sort'](_0x55703d['query'][_0x1327('0x4d')]);_0x37dbff['where']=qs['filters'](_[_0x1327('0x50')](_0x55703d[_0x1327('0x45')],_0x3f1dc2['filters']));if(_0x55703d[_0x1327('0x45')][_0x1327('0x51')]){_0x37dbff[_0x1327('0x4e')]=_[_0x1327('0x52')](_0x37dbff[_0x1327('0x4e')],{'$or':_[_0x1327('0x44')](_0x37dbff[_0x1327('0x47')],function(_0x322fc8){var _0x25ad7e={};_0x25ad7e[_0x322fc8]={'$like':'%'+_0x55703d[_0x1327('0x45')][_0x1327('0x51')]+'%'};return _0x25ad7e;})});}_0x37dbff=_[_0x1327('0x52')]({},_0x37dbff,_0x55703d['options']);return _0x54eeab[_0x1327('0xea')](_0x37dbff);}})[_0x1327('0x23')](function(_0x49c2f2){if(_0x49c2f2){_0x46a70f=_0x49c2f2[_0x1327('0x49')];if(!_0x55703d['query']['hasOwnProperty'](_0x1327('0x4b'))){_0x37dbff['limit']=qs['limit'](_0x55703d[_0x1327('0x45')][_0x1327('0x31')]);_0x37dbff[_0x1327('0x2f')]=qs[_0x1327('0x2f')](_0x55703d['query']['offset']);}return _0x54eeab['getAgents'](_0x37dbff);}})['then'](function(_0x2317ba){if(_0x2317ba){return _0x2317ba?{'count':_0x46a70f,'rows':_0x2317ba}:null;}})[_0x1327('0x23')](respondWithResult(_0x1883e7,null))[_0x1327('0x58')](handleError(_0x1883e7,null));};
\ No newline at end of file
+var _0xde61=['bulkCreate','SmsApplication','findAndCountAll','stack','finally','getApplications','options','User','Owner','fullname','internal','Tag','Tags','tag','List','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','connectel','requestid','statusInt','clicksend','groupName','intelepeer','redif','DELIVERED','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','bandwidth','message-delivered','DELIVRD','ACCEPTD','statusGet','state','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','pick','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsAccount.socket','register','jayson/promise','client','http','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','set','apply','save','update','destroy','name','send','index','Pause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','SmsAccountId','Disposition','findOne','removeDispositions','CannedAnswer','getAnswers','order','removeAnswers','ids','notify','Applications','account','applications','orderBy','priority','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','message_id','plivo','Text','infobip','results','text','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','isNil','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','omit','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','ContactId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED'];(function(_0x2bd88d,_0x2d5dc3){var _0x5516d4=function(_0x1272c8){while(--_0x1272c8){_0x2bd88d['push'](_0x2bd88d['shift']());}};_0x5516d4(++_0x2d5dc3);}(_0xde61,0x10e));var _0x1de6=function(_0xa44a66,_0x4dafca){_0xa44a66=_0xa44a66-0x0;var _0x35454c=_0xde61[_0xa44a66];return _0x35454c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1de6('0x0'));var zipdir=require(_0x1de6('0x1'));var jsonpatch=require(_0x1de6('0x2'));var rp=require(_0x1de6('0x3'));var moment=require(_0x1de6('0x4'));var BPromise=require(_0x1de6('0x5'));var Mustache=require(_0x1de6('0x6'));var util=require(_0x1de6('0x7'));var path=require(_0x1de6('0x8'));var sox=require(_0x1de6('0x9'));var csv=require(_0x1de6('0xa'));var ejs=require(_0x1de6('0xb'));var fs=require('fs');var fs_extra=require(_0x1de6('0xc'));var _=require(_0x1de6('0xd'));var squel=require('squel');var crypto=require(_0x1de6('0xe'));var jsforce=require(_0x1de6('0xf'));var deskjs=require(_0x1de6('0x10'));var toCsv=require(_0x1de6('0xa'));var querystring=require('querystring');var Papa=require(_0x1de6('0x11'));var Redis=require(_0x1de6('0x12'));var authService=require(_0x1de6('0x13'));var qs=require(_0x1de6('0x14'));var as=require(_0x1de6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1de6('0x16'))('api');var utils=require(_0x1de6('0x17'));var config=require(_0x1de6('0x18'));var licenseUtil=require(_0x1de6('0x19'));var db=require(_0x1de6('0x1a'))['db'];config[_0x1de6('0x1b')]=_[_0x1de6('0x1c')](config['redis'],{'host':_0x1de6('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1de6('0x1b')]));require(_0x1de6('0x1e'))[_0x1de6('0x1f')](socket);var jayson=require(_0x1de6('0x20'));var client=jayson[_0x1de6('0x21')][_0x1de6('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x5c1a61,_0x343d0a,_0x2cbab9,_0x3ef2be){return new BPromise(function(_0x2bd2e3,_0x259d43){var _0x1b02a3=_0x3ef2be||client;return _0x1b02a3['request'](_0x5c1a61,_0x2cbab9)[_0x1de6('0x23')](function(_0x429791){logger[_0x1de6('0x24')](_0x1de6('0x25'),_0x343d0a,'request\x20sent');logger[_0x1de6('0x26')](_0x1de6('0x27'),_0x343d0a,_0x1de6('0x28'),JSON[_0x1de6('0x29')](_0x429791));if(_0x429791[_0x1de6('0x2a')]){if(_0x429791[_0x1de6('0x2a')][_0x1de6('0x2b')]===0x1f4){logger['error'](_0x1de6('0x25'),_0x343d0a,_0x429791[_0x1de6('0x2a')][_0x1de6('0x2c')]);return _0x259d43(_0x429791[_0x1de6('0x2a')][_0x1de6('0x2c')]);}logger['error'](_0x1de6('0x25'),_0x343d0a,_0x429791[_0x1de6('0x2a')][_0x1de6('0x2c')]);return _0x2bd2e3(_0x429791[_0x1de6('0x2a')]['message']);}else{logger[_0x1de6('0x24')](_0x1de6('0x25'),_0x343d0a,_0x1de6('0x28'));_0x2bd2e3(_0x429791['result'][_0x1de6('0x2c')]);}})[_0x1de6('0x2d')](function(_0x1ea78a){logger['error'](_0x1de6('0x25'),_0x343d0a,_0x1ea78a);_0x259d43(_0x1ea78a);});});}function respondWithStatusCode(_0x53a27d,_0x20432c){_0x20432c=_0x20432c||0xcc;return function(_0x4994d5){if(_0x4994d5){return _0x53a27d[_0x1de6('0x2e')](_0x20432c);}return _0x53a27d[_0x1de6('0x2f')](_0x20432c)[_0x1de6('0x30')]();};}function respondWithResult(_0x5070e5,_0x435ccb){_0x435ccb=_0x435ccb||0xc8;return function(_0x22a2d3){if(_0x22a2d3){return _0x5070e5[_0x1de6('0x2f')](_0x435ccb)[_0x1de6('0x31')](_0x22a2d3);}};}function respondWithFilteredResult(_0x54972b,_0x24f9e1){return function(_0x3d9ded){if(_0x3d9ded){var _0xa4fc78=typeof _0x24f9e1[_0x1de6('0x32')]===_0x1de6('0x33')&&typeof _0x24f9e1['limit']==='undefined';var _0x51b8ca=_0x3d9ded[_0x1de6('0x34')];var _0x5cb60d=_0xa4fc78?0x0:_0x24f9e1[_0x1de6('0x32')];var _0x214183=_0xa4fc78?_0x3d9ded[_0x1de6('0x34')]:_0x24f9e1[_0x1de6('0x32')]+_0x24f9e1['limit'];var _0x210db4;if(_0x214183>=_0x51b8ca){_0x214183=_0x51b8ca;_0x210db4=0xc8;}else{_0x210db4=0xce;}_0x54972b[_0x1de6('0x2f')](_0x210db4);return _0x54972b[_0x1de6('0x35')]('Content-Range',_0x5cb60d+'-'+_0x214183+'/'+_0x51b8ca)[_0x1de6('0x31')](_0x3d9ded);}return null;};}function patchUpdates(_0x20a466){return function(_0x48d85e){try{jsonpatch[_0x1de6('0x36')](_0x48d85e,_0x20a466,!![]);}catch(_0x245f15){return BPromise['reject'](_0x245f15);}return _0x48d85e[_0x1de6('0x37')]();};}function saveUpdates(_0x3cec05,_0x33f81a){return function(_0x153d0c){if(_0x153d0c){return _0x153d0c[_0x1de6('0x38')](_0x3cec05)[_0x1de6('0x23')](function(_0x2067ee){return _0x2067ee;});}return null;};}function removeEntity(_0xd71eaa,_0x588492){return function(_0x5c7c65){if(_0x5c7c65){return _0x5c7c65[_0x1de6('0x39')]()[_0x1de6('0x23')](function(){var _0x58a0f7=_0x5c7c65['get']({'plain':!![]});var _0x6fccdb='SmsAccounts';return db['UserProfileResource'][_0x1de6('0x39')]({'where':{'type':_0x6fccdb,'resourceId':_0x58a0f7['id']}})['then'](function(){return _0x5c7c65;});})['then'](function(){_0xd71eaa[_0x1de6('0x2f')](0xcc)[_0x1de6('0x30')]();});}};}function handleEntityNotFound(_0x219abf,_0x5e5662){return function(_0x1ba4fa){if(!_0x1ba4fa){_0x219abf['sendStatus'](0x194);}return _0x1ba4fa;};}function handleError(_0x5de71c,_0x594a68){_0x594a68=_0x594a68||0x1f4;return function(_0x420625){logger[_0x1de6('0x2a')](_0x420625['stack']);if(_0x420625[_0x1de6('0x3a')]){delete _0x420625['name'];}_0x5de71c[_0x1de6('0x2f')](_0x594a68)[_0x1de6('0x3b')](_0x420625);};}exports[_0x1de6('0x3c')]=function(_0x463fbc,_0x53d6b2){var _0x51b734={'include':[{'model':db[_0x1de6('0x3d')],'as':'mandatoryDispositionPause'}]},_0x42ead4={},_0x300466={'count':0x0,'rows':[]};var _0x15ce01=_[_0x1de6('0x3e')](db[_0x1de6('0x3f')][_0x1de6('0x40')],function(_0x10c0b3){return{'name':_0x10c0b3[_0x1de6('0x41')],'type':_0x10c0b3[_0x1de6('0x42')][_0x1de6('0x43')]};});_0x42ead4[_0x1de6('0x44')]=_['map'](_0x15ce01,'name');_0x42ead4['query']=_[_0x1de6('0x45')](_0x463fbc[_0x1de6('0x46')]);_0x42ead4[_0x1de6('0x47')]=_['intersection'](_0x42ead4['model'],_0x42ead4[_0x1de6('0x46')]);_0x51b734[_0x1de6('0x48')]=_[_0x1de6('0x49')](_0x42ead4[_0x1de6('0x44')],qs[_0x1de6('0x4a')](_0x463fbc['query'][_0x1de6('0x4a')]));_0x51b734['attributes']=_0x51b734[_0x1de6('0x48')][_0x1de6('0x4b')]?_0x51b734[_0x1de6('0x48')]:_0x42ead4[_0x1de6('0x44')];if(!_0x463fbc[_0x1de6('0x46')][_0x1de6('0x4c')](_0x1de6('0x4d'))){_0x51b734[_0x1de6('0x4e')]=qs[_0x1de6('0x4e')](_0x463fbc[_0x1de6('0x46')]['limit']);_0x51b734['offset']=qs[_0x1de6('0x32')](_0x463fbc[_0x1de6('0x46')][_0x1de6('0x32')]);}_0x51b734['order']=qs[_0x1de6('0x4f')](_0x463fbc[_0x1de6('0x46')][_0x1de6('0x4f')]);_0x51b734['where']=qs[_0x1de6('0x47')](_['pick'](_0x463fbc[_0x1de6('0x46')],_0x42ead4[_0x1de6('0x47')]),_0x15ce01);if(_0x463fbc[_0x1de6('0x46')][_0x1de6('0x50')]){_0x51b734[_0x1de6('0x51')]=_[_0x1de6('0x52')](_0x51b734[_0x1de6('0x51')],{'$or':_[_0x1de6('0x3e')](_0x15ce01,function(_0x1a176a){if(_0x1a176a['type']!==_0x1de6('0x53')){var _0x863b3e={};_0x863b3e[_0x1a176a[_0x1de6('0x3a')]]={'$like':'%'+_0x463fbc[_0x1de6('0x46')][_0x1de6('0x50')]+'%'};return _0x863b3e;}})});}_0x51b734=_[_0x1de6('0x52')]({},_0x51b734,_0x463fbc['options']);var _0x3d4be8={'where':_0x51b734[_0x1de6('0x51')]};return db['SmsAccount']['count'](_0x3d4be8)[_0x1de6('0x23')](function(_0x277276){_0x300466[_0x1de6('0x34')]=_0x277276;if(_0x463fbc[_0x1de6('0x46')][_0x1de6('0x54')]){_0x51b734[_0x1de6('0x55')]=[{'all':!![]}];}return db[_0x1de6('0x3f')][_0x1de6('0x56')](_0x51b734);})['then'](function(_0x5dfeb8){_0x300466[_0x1de6('0x57')]=_0x5dfeb8;return _0x300466;})[_0x1de6('0x23')](respondWithFilteredResult(_0x53d6b2,_0x51b734))['catch'](handleError(_0x53d6b2,null));};exports[_0x1de6('0x58')]=function(_0xd67fc0,_0x2a7913){var _0x278a58={'raw':![],'where':{'id':_0xd67fc0[_0x1de6('0x59')]['id']},'include':[{'model':db[_0x1de6('0x3d')],'as':_0x1de6('0x5a')}]},_0x5d3c38={};_0x5d3c38[_0x1de6('0x44')]=_[_0x1de6('0x45')](db[_0x1de6('0x3f')][_0x1de6('0x40')]);_0x5d3c38['query']=_[_0x1de6('0x45')](_0xd67fc0[_0x1de6('0x46')]);_0x5d3c38[_0x1de6('0x47')]=_[_0x1de6('0x49')](_0x5d3c38[_0x1de6('0x44')],_0x5d3c38[_0x1de6('0x46')]);_0x278a58[_0x1de6('0x48')]=_[_0x1de6('0x49')](_0x5d3c38[_0x1de6('0x44')],qs[_0x1de6('0x4a')](_0xd67fc0[_0x1de6('0x46')][_0x1de6('0x4a')]));_0x278a58[_0x1de6('0x48')]=_0x278a58[_0x1de6('0x48')][_0x1de6('0x4b')]?_0x278a58[_0x1de6('0x48')]:_0x5d3c38[_0x1de6('0x44')];if(_0xd67fc0['query'][_0x1de6('0x54')]){_0x278a58[_0x1de6('0x55')]=[{'all':!![]}];}_0x278a58=_[_0x1de6('0x52')]({},_0x278a58,_0xd67fc0['options']);return db[_0x1de6('0x3f')][_0x1de6('0x5b')](_0x278a58)[_0x1de6('0x23')](handleEntityNotFound(_0x2a7913,null))[_0x1de6('0x23')](respondWithResult(_0x2a7913,null))['catch'](handleError(_0x2a7913,null));};exports[_0x1de6('0x5c')]=function(_0x1e52e9,_0x157c4c){return db[_0x1de6('0x3f')][_0x1de6('0x5c')](_0x1e52e9['body'],{})[_0x1de6('0x23')](function(_0x1d195f){var _0x1f7bf2=_0x1e52e9[_0x1de6('0x5d')][_0x1de6('0x5e')]({'plain':!![]});if(!_0x1f7bf2)throw new Error(_0x1de6('0x5f'));if(_0x1f7bf2['role']==='user'){var _0x5e211d=_0x1d195f[_0x1de6('0x5e')]({'plain':!![]});var _0x119234=_0x1de6('0x60');return db[_0x1de6('0x61')][_0x1de6('0x5b')]({'where':{'name':_0x119234,'userProfileId':_0x1f7bf2['userProfileId']},'raw':!![]})[_0x1de6('0x23')](function(_0xfd00fe){if(_0xfd00fe&&_0xfd00fe[_0x1de6('0x62')]===0x0){return db[_0x1de6('0x63')][_0x1de6('0x5c')]({'name':_0x5e211d[_0x1de6('0x3a')],'resourceId':_0x5e211d['id'],'type':_0xfd00fe[_0x1de6('0x3a')],'sectionId':_0xfd00fe['id']},{})[_0x1de6('0x23')](function(){return _0x1d195f;});}else{return _0x1d195f;}})[_0x1de6('0x2d')](function(_0x5f23a4){logger['error'](_0x1de6('0x64'),_0x5f23a4);throw _0x5f23a4;});}return _0x1d195f;})[_0x1de6('0x23')](respondWithResult(_0x157c4c,0xc9))[_0x1de6('0x2d')](handleError(_0x157c4c,null));};exports[_0x1de6('0x38')]=function(_0xc0554a,_0x3b66d3){if(_0xc0554a[_0x1de6('0x65')]['id']){delete _0xc0554a[_0x1de6('0x65')]['id'];}return db[_0x1de6('0x3f')]['find']({'where':{'id':_0xc0554a[_0x1de6('0x59')]['id']},'include':[{'model':db[_0x1de6('0x3d')],'as':_0x1de6('0x5a')}]})[_0x1de6('0x23')](handleEntityNotFound(_0x3b66d3,null))[_0x1de6('0x23')](saveUpdates(_0xc0554a['body'],null))[_0x1de6('0x23')](respondWithResult(_0x3b66d3,null))[_0x1de6('0x2d')](handleError(_0x3b66d3,null));};exports[_0x1de6('0x39')]=function(_0x3b4183,_0x147ce1){return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x3b4183['params']['id']}})['then'](handleEntityNotFound(_0x147ce1,null))[_0x1de6('0x23')](removeEntity(_0x147ce1,null))[_0x1de6('0x2d')](handleError(_0x147ce1,null));};exports[_0x1de6('0x66')]=function(_0x59b2cb,_0x10cc5f){return db['SmsAccount']['describe']()[_0x1de6('0x23')](respondWithResult(_0x10cc5f,null))[_0x1de6('0x2d')](handleError(_0x10cc5f,null));};exports[_0x1de6('0x67')]=function(_0x5107b1,_0x12ead7,_0x21dd59){if(_0x5107b1[_0x1de6('0x65')]['id']){delete _0x5107b1[_0x1de6('0x65')]['id'];}return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x5107b1[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x12ead7,null))[_0x1de6('0x23')](function(_0x1fca37){if(_0x1fca37){_0x5107b1[_0x1de6('0x65')][_0x1de6('0x68')]=_0x1fca37['id'];return db[_0x1de6('0x69')]['create'](_0x5107b1[_0x1de6('0x65')]);}})[_0x1de6('0x23')](respondWithResult(_0x12ead7,null))['catch'](handleError(_0x12ead7,null));};exports['getDispositions']=function(_0x5a1aa4,_0x2636d0,_0x516267){var _0x552e6a={'raw':![],'where':{}};var _0x2934d1={};var _0x2cfd9d={'count':0x0,'rows':[]};return db['SmsAccount'][_0x1de6('0x6a')]({'where':{'id':_0x5a1aa4[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x2636d0,null))[_0x1de6('0x23')](function(_0x149508){if(_0x149508){_0x2934d1[_0x1de6('0x44')]=_[_0x1de6('0x45')](db['Disposition']['rawAttributes']);_0x2934d1['query']=_['keys'](_0x5a1aa4[_0x1de6('0x46')]);_0x2934d1[_0x1de6('0x47')]=_[_0x1de6('0x49')](_0x2934d1[_0x1de6('0x44')],_0x2934d1[_0x1de6('0x46')]);_0x552e6a['attributes']=_[_0x1de6('0x49')](_0x2934d1[_0x1de6('0x44')],qs['fields'](_0x5a1aa4[_0x1de6('0x46')][_0x1de6('0x4a')]));_0x552e6a[_0x1de6('0x48')]=_0x552e6a[_0x1de6('0x48')][_0x1de6('0x4b')]?_0x552e6a[_0x1de6('0x48')]:_0x2934d1[_0x1de6('0x44')];if(!_0x5a1aa4[_0x1de6('0x46')]['hasOwnProperty']('nolimit')){_0x552e6a[_0x1de6('0x4e')]=qs['limit'](_0x5a1aa4[_0x1de6('0x46')][_0x1de6('0x4e')]);_0x552e6a[_0x1de6('0x32')]=qs[_0x1de6('0x32')](_0x5a1aa4[_0x1de6('0x46')][_0x1de6('0x32')]);}_0x552e6a['order']=qs[_0x1de6('0x4f')](_0x5a1aa4[_0x1de6('0x46')][_0x1de6('0x4f')]);_0x552e6a[_0x1de6('0x51')]=qs[_0x1de6('0x47')](_['pick'](_0x5a1aa4['query'],_0x2934d1[_0x1de6('0x47')]));_0x552e6a[_0x1de6('0x51')][_0x1de6('0x68')]=_0x149508['id'];if(_0x5a1aa4[_0x1de6('0x46')][_0x1de6('0x50')]){_0x552e6a[_0x1de6('0x51')]=_['merge'](_0x552e6a[_0x1de6('0x51')],{'$or':_['map'](_0x552e6a[_0x1de6('0x48')],function(_0x22f976){var _0x21cc61={};_0x21cc61[_0x22f976]={'$like':'%'+_0x5a1aa4['query']['filter']+'%'};return _0x21cc61;})});}_0x552e6a=_['merge']({},_0x552e6a,_0x5a1aa4['options']);return db[_0x1de6('0x69')][_0x1de6('0x34')]({'where':_0x552e6a['where']})['then'](function(_0x28c24d){_0x2cfd9d['count']=_0x28c24d;if(_0x5a1aa4[_0x1de6('0x46')]['includeAll']){_0x552e6a[_0x1de6('0x55')]=[{'all':!![]}];}return db[_0x1de6('0x69')][_0x1de6('0x56')](_0x552e6a);})['then'](function(_0x315673){_0x2cfd9d[_0x1de6('0x57')]=_0x315673;return _0x2cfd9d;});}})[_0x1de6('0x23')](respondWithFilteredResult(_0x2636d0,_0x552e6a))[_0x1de6('0x2d')](handleError(_0x2636d0,null));};exports[_0x1de6('0x6b')]=function(_0x128d35,_0x1babb1,_0x17f10a){return db['SmsAccount']['find']({'where':{'id':_0x128d35[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x1babb1,null))[_0x1de6('0x23')](function(_0x29cf25){if(_0x29cf25){return _0x29cf25['removeDispositions'](_0x128d35[_0x1de6('0x46')]['ids']);}})[_0x1de6('0x23')](respondWithStatusCode(_0x1babb1,null))[_0x1de6('0x2d')](handleError(_0x1babb1,null));};exports['addAnswer']=function(_0x5102e7,_0x32ce97,_0x5ab09a){if(_0x5102e7[_0x1de6('0x65')]['id']){delete _0x5102e7[_0x1de6('0x65')]['id'];}return db[_0x1de6('0x3f')]['find']({'where':{'id':_0x5102e7['params']['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x32ce97,null))[_0x1de6('0x23')](function(_0xcba6a6){if(_0xcba6a6){_0x5102e7[_0x1de6('0x65')][_0x1de6('0x68')]=_0xcba6a6['id'];return db[_0x1de6('0x6c')][_0x1de6('0x5c')](_0x5102e7['body']);}})['then'](respondWithResult(_0x32ce97,null))['catch'](handleError(_0x32ce97,null));};exports[_0x1de6('0x6d')]=function(_0xf45642,_0x5307ea,_0xd8722){var _0x5b20f3={'raw':![],'where':{}};var _0x5eb2b8={};var _0x457a70={'count':0x0,'rows':[]};return db[_0x1de6('0x3f')]['findOne']({'where':{'id':_0xf45642['params']['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x5307ea,null))[_0x1de6('0x23')](function(_0x2372eb){if(_0x2372eb){_0x5eb2b8['model']=_[_0x1de6('0x45')](db['CannedAnswer'][_0x1de6('0x40')]);_0x5eb2b8[_0x1de6('0x46')]=_['keys'](_0xf45642[_0x1de6('0x46')]);_0x5eb2b8[_0x1de6('0x47')]=_[_0x1de6('0x49')](_0x5eb2b8['model'],_0x5eb2b8[_0x1de6('0x46')]);_0x5b20f3['attributes']=_[_0x1de6('0x49')](_0x5eb2b8['model'],qs[_0x1de6('0x4a')](_0xf45642[_0x1de6('0x46')][_0x1de6('0x4a')]));_0x5b20f3[_0x1de6('0x48')]=_0x5b20f3[_0x1de6('0x48')][_0x1de6('0x4b')]?_0x5b20f3[_0x1de6('0x48')]:_0x5eb2b8[_0x1de6('0x44')];if(!_0xf45642['query']['hasOwnProperty'](_0x1de6('0x4d'))){_0x5b20f3['limit']=qs[_0x1de6('0x4e')](_0xf45642[_0x1de6('0x46')]['limit']);_0x5b20f3[_0x1de6('0x32')]=qs[_0x1de6('0x32')](_0xf45642[_0x1de6('0x46')][_0x1de6('0x32')]);}_0x5b20f3[_0x1de6('0x6e')]=qs[_0x1de6('0x4f')](_0xf45642[_0x1de6('0x46')][_0x1de6('0x4f')]);_0x5b20f3[_0x1de6('0x51')]=qs['filters'](_['pick'](_0xf45642[_0x1de6('0x46')],_0x5eb2b8[_0x1de6('0x47')]));_0x5b20f3[_0x1de6('0x51')][_0x1de6('0x68')]=_0x2372eb['id'];if(_0xf45642[_0x1de6('0x46')][_0x1de6('0x50')]){_0x5b20f3['where']=_['merge'](_0x5b20f3[_0x1de6('0x51')],{'$or':_[_0x1de6('0x3e')](_0x5b20f3[_0x1de6('0x48')],function(_0x3ea9fd){var _0x14075d={};_0x14075d[_0x3ea9fd]={'$like':'%'+_0xf45642[_0x1de6('0x46')][_0x1de6('0x50')]+'%'};return _0x14075d;})});}_0x5b20f3=_['merge']({},_0x5b20f3,_0xf45642['options']);return db[_0x1de6('0x6c')][_0x1de6('0x34')]({'where':_0x5b20f3[_0x1de6('0x51')]})[_0x1de6('0x23')](function(_0x4fa461){_0x457a70[_0x1de6('0x34')]=_0x4fa461;if(_0xf45642['query']['includeAll']){_0x5b20f3[_0x1de6('0x55')]=[{'all':!![]}];}return db[_0x1de6('0x6c')][_0x1de6('0x56')](_0x5b20f3);})[_0x1de6('0x23')](function(_0x5458a9){_0x457a70[_0x1de6('0x57')]=_0x5458a9;return _0x457a70;});}})['then'](respondWithFilteredResult(_0x5307ea,_0x5b20f3))[_0x1de6('0x2d')](handleError(_0x5307ea,null));};exports[_0x1de6('0x6f')]=function(_0x1da446,_0x1e38b6,_0x5f0f8e){return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x1da446[_0x1de6('0x59')]['id']}})['then'](handleEntityNotFound(_0x1e38b6,null))[_0x1de6('0x23')](function(_0x567473){if(_0x567473){return _0x567473['removeAnswers'](_0x1da446[_0x1de6('0x46')][_0x1de6('0x70')]);}})[_0x1de6('0x23')](respondWithStatusCode(_0x1e38b6,null))[_0x1de6('0x2d')](handleError(_0x1e38b6,null));};exports[_0x1de6('0x71')]=function(_0x44612c,_0x70d8bd,_0x1806cf){var _0x4bfb4c={'channel':'sms'};var _0x1cabea=[];var _0x3b1008=[];var _0x239673={};return db[_0x1de6('0x3f')]['find']({'where':{'id':_0x44612c['params']['id']},'include':[{'model':db['SmsApplication'],'as':_0x1de6('0x72')}]})[_0x1de6('0x23')](handleEntityNotFound(_0x70d8bd,null))[_0x1de6('0x23')](function(_0x3ea6a9){_0x4bfb4c[_0x1de6('0x73')]=_0x3ea6a9;_0x4bfb4c[_0x1de6('0x74')]=_[_0x1de6('0x75')](_0x3ea6a9[_0x1de6('0x72')],[_0x1de6('0x76')],['asc']);if(_0x4bfb4c[_0x1de6('0x73')][_0x1de6('0x72')]){delete _0x4bfb4c['account']['Applications'];}return db['CmContact'][_0x1de6('0x66')]();})[_0x1de6('0x23')](function(_0x4bb8eb){if(!_0x4bb8eb){throw new db[(_0x1de6('0x77'))]['ValidationError'](_0x1de6('0x78'));}_0x1cabea=_[_0x1de6('0x79')](_[_0x1de6('0x45')](_0x4bb8eb),[_0x1de6('0x7a'),_0x1de6('0x7b')]);_0x3b1008=_[_0x1de6('0x79')](_['keys'](_0x4bb8eb),['createdAt',_0x1de6('0x7b'),'CompanyId',_0x1de6('0x7c')]);_0x4bfb4c[_0x1de6('0x65')]={'mapKey':_0x1de6('0x7d')};if(_0x4bfb4c['account'][_0x1de6('0x42')]){switch(_0x4bfb4c['account'][_0x1de6('0x42')]){case _0x1de6('0x7e'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x80')];_0x4bfb4c['body'][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x81')];_0x4bfb4c['body'][_0x1de6('0x82')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x83')];break;case _0x1de6('0x84'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]='+'+_0x44612c[_0x1de6('0x65')]['sender'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')]['text'];break;case'connectel':_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c['body']['from'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x2c')];break;case'clicksend':_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x7f')];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x65')];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x82')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x85')];break;case _0x1de6('0x86'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')]['From'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x87')];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x82')]=_0x44612c[_0x1de6('0x65')]['MessageUUID'];break;case _0x1de6('0x88'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]='+'+_0x44612c['body'][_0x1de6('0x89')][0x0][_0x1de6('0x7f')];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c['body']['results'][0x0][_0x1de6('0x8a')];_0x4bfb4c[_0x1de6('0x65')]['messageId']=_0x44612c[_0x1de6('0x65')][_0x1de6('0x89')][0x0][_0x1de6('0x82')];break;case _0x1de6('0x8b'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c['body']['originatingAddress'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x8c')][_0x1de6('0x2c')];break;case _0x1de6('0x8d'):_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x8e')];_0x4bfb4c['body']['body']=_0x44612c['body'][_0x1de6('0x8a')];_0x4bfb4c['body']['messageId']=_0x44612c['body'][_0x1de6('0x8f')];break;case'bandwidth':_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x82')]=_0x44612c[_0x1de6('0x65')][0x0][_0x1de6('0x2c')]['id'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')][0x0][_0x1de6('0x2c')]['from'];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]=_0x44612c[_0x1de6('0x65')][0x0]['message'][_0x1de6('0x8a')];break;case'intelepeer':_0x4bfb4c['body'][_0x1de6('0x7f')]=_0x44612c[_0x1de6('0x65')][_0x1de6('0x7f')];_0x4bfb4c[_0x1de6('0x65')]['body']=_0x44612c[_0x1de6('0x65')][_0x1de6('0x2c')];_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x82')]=_0x44612c['body']['refid'];break;}}if(_0x4bfb4c['body']['id']){delete _0x4bfb4c[_0x1de6('0x65')]['id'];}if(_[_0x1de6('0x90')](_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')])){throw new db['Sequelize']['ValidationError'](_0x1de6('0x91'));}if(_[_0x1de6('0x90')](_0x4bfb4c[_0x1de6('0x65')]['body'])||_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')]===''){throw new db[(_0x1de6('0x77'))][(_0x1de6('0x92'))](_0x1de6('0x93'));}if(_[_0x1de6('0x90')](_0x4bfb4c[_0x1de6('0x65')]['mapKey'])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3b1008);}if(!_['includes'](_0x3b1008,_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x94')])){throw new db[(_0x1de6('0x77'))][(_0x1de6('0x92'))](_0x1de6('0x95')+_0x3b1008);}_0x239673[_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x94')]]=_0x4bfb4c['body'][_0x1de6('0x7f')];return db[_0x1de6('0x96')][_0x1de6('0x5b')]({'where':{'id':_0x4bfb4c[_0x1de6('0x73')]['ListId']},'include':[{'model':db[_0x1de6('0x97')],'as':_0x1de6('0x98'),'where':_0x239673,'limit':0x1,'order':[[_0x1de6('0x7b'),_0x1de6('0x99')]]}]});})[_0x1de6('0x23')](handleEntityNotFound(_0x70d8bd,null))[_0x1de6('0x23')](function(_0x1fdc78){if(_0x1fdc78){_0x4bfb4c[_0x1de6('0x9a')]=_[_0x1de6('0x9b')](_0x1fdc78,[_0x1de6('0x98')]);if(_0x1fdc78[_0x1de6('0x98')][_0x1de6('0x4b')]){return _0x1fdc78[_0x1de6('0x98')][0x0];}var _0x4a94da=_[_0x1de6('0x1c')](_0x4bfb4c[_0x1de6('0x65')],{'firstName':_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x7f')],'ListId':_0x1fdc78['id']});_0x4a94da[_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x94')]]=_0x4bfb4c['body'][_0x1de6('0x7f')];return db[_0x1de6('0x97')][_0x1de6('0x5c')](_0x4a94da,{'fields':_0x1cabea,'raw':!![]});}})[_0x1de6('0x23')](handleEntityNotFound(_0x70d8bd,null))[_0x1de6('0x23')](function(_0x42df61){if(_0x42df61){_0x4bfb4c['contact']=_0x42df61;var _0x3543f1={'ContactId':_0x42df61['id'],'phone':_0x4bfb4c['body']['from'],'SmsAccountId':_0x44612c[_0x1de6('0x59')]['id']};var _0x3afe64={'ContactId':_0x42df61['id'],'SmsAccountId':_0x44612c[_0x1de6('0x59')]['id'],'closed':![]};return db[_0x1de6('0x9c')][_0x1de6('0x5b')]({'where':_0x3afe64})[_0x1de6('0x23')](function(_0x5e466c){if(_0x5e466c){return[_0x5e466c,![]];}return db[_0x1de6('0x9c')][_0x1de6('0x5c')](_0x3543f1)[_0x1de6('0x23')](function(_0x13eca6){return[_0x13eca6,!![]];});});}})[_0x1de6('0x9d')](function(_0x1d4198,_0x4e326b){_0x4bfb4c['interaction']=_0x1d4198['get']({'plain':!![]});_0x4bfb4c[_0x1de6('0x9e')][_0x1de6('0x9f')]=![];if(_0x4e326b){if(_0x4bfb4c[_0x1de6('0x73')][_0x1de6('0xa0')]){_0x4bfb4c[_0x1de6('0x74')]['push']({'id':0x0,'priority':_0x4bfb4c[_0x1de6('0x74')][_0x1de6('0x4b')]+0x1,'app':_0x1de6('0xa1'),'appdata':_0x1de6('0xa2'),'interval':_0x1de6('0xa3')});}_0x4bfb4c[_0x1de6('0x9e')][_0x1de6('0x9f')]=!![];}return db[_0x1de6('0xa4')][_0x1de6('0x5c')]({'phone':_0x4bfb4c[_0x1de6('0x65')]['from'],'messageId':_0x4bfb4c[_0x1de6('0x65')]['messageId'],'body':_0x4bfb4c[_0x1de6('0x65')][_0x1de6('0x65')],'SmsAccountId':_0x44612c[_0x1de6('0x59')]['id'],'SmsInteractionId':_0x1d4198['id'],'direction':'in','ContactId':_0x1d4198[_0x1de6('0xa5')],'AttachmentId':_0x4bfb4c['body']['AttachmentId']});})['then'](function(_0x33e994){_0x4bfb4c[_0x1de6('0x2c')]=_0x33e994;if(_0x4bfb4c[_0x1de6('0x9e')][_0x1de6('0xa6')]){return db['User'][_0x1de6('0x5b')]({'attributes':['id',_0x1de6('0x3a')],'where':{'id':_0x4bfb4c['interaction']['UserId']}})['then'](function(_0x162744){if(_0x162744){_0x4bfb4c[_0x1de6('0x74')]['unshift']({'id':0x0,'priority':0x0,'app':_0x1de6('0xa7'),'appdata':_0x162744[_0x1de6('0x3a')]+','+(_0x4bfb4c[_0x1de6('0x73')][_0x1de6('0xa8')]||0xa),'interval':_0x1de6('0xa3')});}return respondWithRpcPromise(_0x1de6('0xa9'),_0x1de6('0xaa'),_0x4bfb4c);});}return respondWithRpcPromise(_0x1de6('0xa9'),'startRouting',_0x4bfb4c);})[_0x1de6('0x23')](function(_0x43612c){if(_0x43612c){var _0x3864f4=0xc8;var _0x3436d7='receiveMessage';logger['info'](_0x1de6('0x27'),_0x3436d7,_0x3864f4,_0x1de6('0xab'));logger[_0x1de6('0x26')](_0x1de6('0xac'),_0x3436d7,_0x3864f4,'entity\x20found',JSON[_0x1de6('0x29')](_0x43612c));if(_0x4bfb4c[_0x1de6('0x73')][_0x1de6('0x42')]==='twilio'){return _0x70d8bd[_0x1de6('0x2f')](_0x3864f4)[_0x1de6('0x35')](_0x1de6('0xad'),_0x1de6('0xae'))[_0x1de6('0x3b')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x70d8bd[_0x1de6('0x2f')](_0x3864f4)[_0x1de6('0x31')](_0x43612c);}}})[_0x1de6('0x2d')](handleError(_0x70d8bd,null));};exports[_0x1de6('0xaf')]=function(_0x41a9b1,_0x133162){var _0x264d21=_0x41a9b1[_0x1de6('0x59')]['id'];var _0x92a9fe=_0x41a9b1[_0x1de6('0x65')];var _0x596626=0xc8;var _0x4c5c16=null;return db[_0x1de6('0xb0')]['transaction']({'isolationLevel':db[_0x1de6('0xb0')][_0x1de6('0xb1')][_0x1de6('0xb2')][_0x1de6('0xb3')]},function(_0x512185){return db[_0x1de6('0x3f')]['findOne']({'where':{'id':_0x264d21},'transaction':_0x512185})['then'](function(_0x47c39c){if(_0x47c39c){return db['SmsApplication'][_0x1de6('0x39')]({'where':{'SmsAccountId':_0x264d21},'transaction':_0x512185})[_0x1de6('0x23')](function(){var _0x4671c8=_[_0x1de6('0x3e')](_0x92a9fe,function(_0x11d279){_0x11d279[_0x1de6('0x68')]=_0x264d21;return _0x11d279;});return db['SmsApplication'][_0x1de6('0xb4')](_0x4671c8,{'transaction':_0x512185});});}else{_0x596626=0x194;_0x4c5c16=[];}});})[_0x1de6('0x23')](function(){if(_0x596626!==0x194){return db[_0x1de6('0xb5')][_0x1de6('0xb6')]({'where':{'SmsAccountId':_0x264d21},'order':'priority'})[_0x1de6('0x23')](function(_0x1f30bd){_0x4c5c16=_0x1f30bd;});}})[_0x1de6('0x2d')](function(_0x4639f6){_0x596626=0x1f4;logger['error'](_0x4639f6[_0x1de6('0xb7')]);if(_0x4639f6[_0x1de6('0x3a')]){delete _0x4639f6[_0x1de6('0x3a')];}_0x4c5c16=_0x4639f6;})[_0x1de6('0xb8')](function(){if(_0x4c5c16===null){_0x133162['sendStatus'](_0x596626);}else{if(_0x596626===0x1f4){_0x133162[_0x1de6('0x2f')](_0x596626)['send'](_0x4c5c16);}else{_0x133162[_0x1de6('0x2f')](_0x596626)['json'](_0x4c5c16);}}});};exports[_0x1de6('0xb9')]=function(_0x3edcf9,_0x4c0809,_0x2cf12d){var _0x222d98={};var _0x443308={};var _0x462d87;var _0x1a00ef;return db['SmsAccount']['findOne']({'where':{'id':_0x3edcf9[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x4c0809,null))['then'](function(_0x2ff219){if(_0x2ff219){_0x462d87=_0x2ff219;_0x443308[_0x1de6('0x44')]=_[_0x1de6('0x45')](db[_0x1de6('0xb5')][_0x1de6('0x40')]);_0x443308['query']=_[_0x1de6('0x45')](_0x3edcf9['query']);_0x443308[_0x1de6('0x47')]=_[_0x1de6('0x49')](_0x443308[_0x1de6('0x44')],_0x443308['query']);_0x222d98[_0x1de6('0x48')]=_[_0x1de6('0x49')](_0x443308['model'],qs[_0x1de6('0x4a')](_0x3edcf9[_0x1de6('0x46')][_0x1de6('0x4a')]));_0x222d98[_0x1de6('0x48')]=_0x222d98[_0x1de6('0x48')]['length']?_0x222d98[_0x1de6('0x48')]:_0x443308[_0x1de6('0x44')];_0x222d98['order']=qs[_0x1de6('0x4f')](_0x3edcf9['query'][_0x1de6('0x4f')]);_0x222d98[_0x1de6('0x51')]=qs['filters'](_['pick'](_0x3edcf9['query'],_0x443308[_0x1de6('0x47')]));if(_0x3edcf9[_0x1de6('0x46')][_0x1de6('0x50')]){_0x222d98[_0x1de6('0x51')]=_[_0x1de6('0x52')](_0x222d98[_0x1de6('0x51')],{'$or':_['map'](_0x222d98['attributes'],function(_0x1cdb70){var _0x455d3b={};_0x455d3b[_0x1cdb70]={'$like':'%'+_0x3edcf9[_0x1de6('0x46')][_0x1de6('0x50')]+'%'};return _0x455d3b;})});}_0x222d98=_[_0x1de6('0x52')]({},_0x222d98,_0x3edcf9[_0x1de6('0xba')]);return _0x462d87['getApplications'](_0x222d98);}})['then'](function(_0x3135c6){if(_0x3135c6){_0x1a00ef=_0x3135c6[_0x1de6('0x4b')];if(!_0x3edcf9[_0x1de6('0x46')]['hasOwnProperty'](_0x1de6('0x4d'))){_0x222d98[_0x1de6('0x4e')]=qs['limit'](_0x3edcf9[_0x1de6('0x46')][_0x1de6('0x4e')]);_0x222d98[_0x1de6('0x32')]=qs[_0x1de6('0x32')](_0x3edcf9[_0x1de6('0x46')][_0x1de6('0x32')]);}return _0x462d87[_0x1de6('0xb9')](_0x222d98);}})[_0x1de6('0x23')](function(_0x383fb8){if(_0x383fb8){return _0x383fb8?{'count':_0x1a00ef,'rows':_0x383fb8}:null;}})[_0x1de6('0x23')](respondWithResult(_0x4c0809,null))[_0x1de6('0x2d')](handleError(_0x4c0809,null));};exports['getInteractions']=function(_0x467106,_0x2119b4,_0x167672){var _0x27253f={'raw':![],'where':{}};var _0x209e31={};var _0x21d713={'count':0x0,'rows':[]};return db[_0x1de6('0x3f')]['findOne']({'where':{'id':_0x467106[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x2119b4,null))[_0x1de6('0x23')](function(_0xec30dc){if(_0xec30dc){_0x209e31[_0x1de6('0x44')]=_[_0x1de6('0x45')](db[_0x1de6('0x9c')][_0x1de6('0x40')]);_0x209e31[_0x1de6('0x46')]=_[_0x1de6('0x45')](_0x467106[_0x1de6('0x46')]);_0x209e31[_0x1de6('0x47')]=_[_0x1de6('0x49')](_0x209e31[_0x1de6('0x44')],_0x209e31[_0x1de6('0x46')]);_0x27253f['attributes']=_[_0x1de6('0x49')](_0x209e31['model'],qs[_0x1de6('0x4a')](_0x467106[_0x1de6('0x46')][_0x1de6('0x4a')]));_0x27253f['attributes']=_0x27253f['attributes'][_0x1de6('0x4b')]?_0x27253f[_0x1de6('0x48')]:_0x209e31[_0x1de6('0x44')];if(!_0x467106[_0x1de6('0x46')][_0x1de6('0x4c')]('nolimit')){_0x27253f['limit']=qs[_0x1de6('0x4e')](_0x467106['query'][_0x1de6('0x4e')]);_0x27253f[_0x1de6('0x32')]=qs[_0x1de6('0x32')](_0x467106[_0x1de6('0x46')][_0x1de6('0x32')]);}_0x27253f[_0x1de6('0x6e')]=qs[_0x1de6('0x4f')](_0x467106['query'][_0x1de6('0x4f')]);_0x27253f[_0x1de6('0x51')]=qs[_0x1de6('0x47')](_['pick'](_0x467106[_0x1de6('0x46')],_0x209e31['filters']));_0x27253f[_0x1de6('0x51')]['SmsAccountId']=_0xec30dc['id'];if(_0x467106[_0x1de6('0x46')][_0x1de6('0x50')]){_0x27253f[_0x1de6('0x51')]=_[_0x1de6('0x52')](_0x27253f[_0x1de6('0x51')],{'$or':_[_0x1de6('0x3e')](_0x27253f['attributes'],function(_0x2f485b){var _0x29feb7={};_0x29feb7[_0x2f485b]={'$like':'%'+_0x467106[_0x1de6('0x46')][_0x1de6('0x50')]+'%'};return _0x29feb7;})});}_0x27253f=_['merge']({},_0x27253f,_0x467106[_0x1de6('0xba')]);return db[_0x1de6('0x9c')][_0x1de6('0x34')]({'where':_0x27253f[_0x1de6('0x51')]})[_0x1de6('0x23')](function(_0x268c60){_0x21d713[_0x1de6('0x34')]=_0x268c60;if(_0x467106['query'][_0x1de6('0x54')]){_0x27253f['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x1de6('0xbb')],'as':_0x1de6('0xbc'),'attributes':[_0x1de6('0x3a'),_0x1de6('0xbd'),_0x1de6('0xbe')],'required':![]},{'model':db[_0x1de6('0xbf')],'as':_0x1de6('0xc0'),'attributes':['id',_0x1de6('0x3a'),'color'],'where':_0x467106[_0x1de6('0x46')]['tag']?{'id':_0x467106[_0x1de6('0x46')][_0x1de6('0xc1')]}:undefined,'required':_0x467106['query'][_0x1de6('0xc1')]?!![]:![]}];}return db[_0x1de6('0x9c')]['findAll'](_0x27253f);})['then'](function(_0xfefa3e){_0x21d713['rows']=_0xfefa3e;return _0x21d713;});}})[_0x1de6('0x23')](respondWithFilteredResult(_0x2119b4,_0x27253f))[_0x1de6('0x2d')](handleError(_0x2119b4,null));};exports[_0x1de6('0x3b')]=function(_0x581383,_0x1d69fc,_0x59944e){var _0x784351,_0x4d9046,_0x29c239;if(_['isNil'](_0x581383[_0x1de6('0x65')][_0x1de6('0x65')])||_0x581383[_0x1de6('0x65')][_0x1de6('0x65')]===''){throw new db[(_0x1de6('0x77'))][(_0x1de6('0x92'))](_0x1de6('0x93'));}if(_[_0x1de6('0x90')](_0x581383[_0x1de6('0x65')]['to'])){throw new db[(_0x1de6('0x77'))][(_0x1de6('0x92'))]('to\x20is\x20mandatory');}_0x784351=_0x581383[_0x1de6('0x65')]['to'];return db['SmsAccount']['find']({'where':{'id':_0x581383['params']['id']},'include':[{'model':db[_0x1de6('0x96')],'as':_0x1de6('0xc2'),'include':[{'model':db['CmContact'],'as':_0x1de6('0x98'),'where':{'mobile':_0x784351},'limit':0x1,'order':[[_0x1de6('0x7b'),_0x1de6('0x99')]]}]}]})[_0x1de6('0x23')](handleEntityNotFound(_0x1d69fc,null))['then'](function(_0xc96917){if(_0xc96917&&_0xc96917[_0x1de6('0xc2')]){_0x4d9046=_0xc96917[_0x1de6('0x5e')]({'plain':!![]});if(_0x4d9046['List']&&_0x4d9046[_0x1de6('0xc2')][_0x1de6('0x98')][_0x1de6('0x4b')]){return _0x4d9046['List'][_0x1de6('0x98')][0x0];}return db['CmContact'][_0x1de6('0x5c')](_['defaults'](_0x581383[_0x1de6('0x65')],{'firstName':_0x784351,'mobile':_0x784351,'phone':_0x784351,'ListId':_0x4d9046[_0x1de6('0x7c')]}));}})['then'](handleEntityNotFound(_0x1d69fc,null))[_0x1de6('0x23')](function(_0x37a057){if(_0x37a057){_0x29c239=_0x37a057;return db[_0x1de6('0x9c')][_0x1de6('0x5b')]({'where':{'ContactId':_0x29c239['id'],'closed':![],'SmsAccountId':_0x4d9046['id']}})['then'](function(_0x472f03){if(_0x472f03){return[_0x472f03,![]];}return db['SmsInteraction'][_0x1de6('0x5c')]({'UserId':_0x581383[_0x1de6('0x5d')]['id'],'ContactId':_0x29c239['id'],'SmsAccountId':_0x4d9046['id'],'phone':_0x784351,'firstMsgDirection':'out','Messages':[_['merge'](_0x581383[_0x1de6('0x65')],{'read':![],'body':_0x581383[_0x1de6('0x65')][_0x1de6('0x65')],'phone':_0x784351,'SmsAccountId':_0x4d9046['id'],'UserId':_0x581383[_0x1de6('0x5d')]['id'],'ContactId':_0x29c239['id']})]},{'include':[{'model':db[_0x1de6('0xa4')],'as':_0x1de6('0xc3')}]})[_0x1de6('0x23')](function(_0x49854c){return[_0x49854c,!![]];});});}})[_0x1de6('0x9d')](function(_0x55d31a,_0x579496){if(_0x579496){return _0x55d31a;}return db['SmsMessage'][_0x1de6('0x5c')](_[_0x1de6('0x52')](_0x581383[_0x1de6('0x65')],{'read':![],'body':_0x581383[_0x1de6('0x65')][_0x1de6('0x65')],'phone':_0x784351,'SmsAccountId':_0x4d9046['id'],'SmsInteractionId':_0x55d31a['id'],'UserId':_0x581383['user']['id'],'ContactId':_0x29c239['id']}))[_0x1de6('0x23')](function(_0x57371b){_0x55d31a[_0x1de6('0xc4')]['Messages']=[];_0x55d31a[_0x1de6('0xc4')][_0x1de6('0xc3')][_0x1de6('0xc5')](_0x57371b[_0x1de6('0xc4')]);return _0x55d31a;});})['then'](respondWithResult(_0x1d69fc,null))[_0x1de6('0x2d')](handleError(_0x1d69fc,null));};exports[_0x1de6('0x2f')]=function(_0x369f19,_0x2fe16f,_0x2dae18){if(_0x369f19[_0x1de6('0x65')]['id']){delete _0x369f19['body']['id'];}var _0x12d734,_0x154779,_0x269f52;return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x369f19[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x2fe16f,null))[_0x1de6('0x23')](function(_0xf2e38){if(_0xf2e38){_0x269f52=_0xf2e38;logger[_0x1de6('0x26')](_0x1de6('0x27'),'status',_0x1de6('0xc6'),_0xf2e38[_0x1de6('0x42')],util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));switch(_0xf2e38['type']){case _0x1de6('0x84'):if(_0x369f19[_0x1de6('0x65')][_0x1de6('0xc8')]&&_0x369f19[_0x1de6('0x65')]['status']){_0x154779=_0x369f19[_0x1de6('0x65')][_0x1de6('0x2f')];return db[_0x1de6('0xa4')][_0x1de6('0x5b')]({'where':{'messageId':_0x369f19[_0x1de6('0x65')][_0x1de6('0xc8')]}});}break;case _0x1de6('0xc9'):if(_0x369f19['body'][_0x1de6('0xca')]&&_0x369f19['body'][_0x1de6('0xcb')]){_0x154779=_0x369f19['body'][_0x1de6('0xcb')];return db['SmsMessage'][_0x1de6('0x5b')]({'where':{'messageId':_0x369f19['body'][_0x1de6('0xca')]}});}break;case _0x1de6('0xcc'):if(_0x369f19[_0x1de6('0x65')]['message_id']&&_0x369f19[_0x1de6('0x65')]['status_code']){_0x154779=_0x369f19[_0x1de6('0x65')]['status_code'];return db[_0x1de6('0xa4')][_0x1de6('0x5b')]({'where':{'messageId':_0x369f19[_0x1de6('0x65')][_0x1de6('0x85')]}});}break;case'infobip':var _0xef2ac0=_0x369f19[_0x1de6('0x65')][_0x1de6('0x89')][0x0];if(_0xef2ac0[_0x1de6('0x82')]&&_0xef2ac0[_0x1de6('0x2f')][_0x1de6('0xcd')]==='DELIVERED'){_0x154779=_0xef2ac0[_0x1de6('0x2f')][_0x1de6('0xcd')];return db['SmsMessage'][_0x1de6('0x5b')]({'where':{'messageId':_0xef2ac0[_0x1de6('0x82')]}});}break;case _0x1de6('0x8d'):if(_0x369f19[_0x1de6('0x65')][_0x1de6('0x82')]&&_0x369f19[_0x1de6('0x65')][_0x1de6('0x2f')]){_0x154779=_0x369f19[_0x1de6('0x65')][_0x1de6('0x2f')];return db[_0x1de6('0xa4')][_0x1de6('0x5b')]({'where':{'messageId':_0x369f19[_0x1de6('0x65')]['messageId']}});}break;case'bandwidth':if(_0x369f19[_0x1de6('0x65')][0x0][_0x1de6('0x2c')]['id']){_0x154779=_0x369f19[_0x1de6('0x65')][0x0][_0x1de6('0x42')];return db[_0x1de6('0xa4')][_0x1de6('0x5b')]({'where':{'messageId':_0x369f19[_0x1de6('0x65')][0x0]['message']['id']}});}break;case _0x1de6('0xce'):if(_0x369f19[_0x1de6('0x65')][_0x1de6('0xcf')]&&_0x369f19[_0x1de6('0x65')][_0x1de6('0x2f')]){_0x154779=_0x369f19[_0x1de6('0x65')]['status'];return db[_0x1de6('0xa4')]['find']({'where':{'messageId':_0x369f19['body'][_0x1de6('0xcf')]}});}break;}}})['then'](handleEntityNotFound(_0x2fe16f,null))[_0x1de6('0x23')](function(_0x3d3a68){if(_0x3d3a68){_0x12d734=_0x3d3a68;switch(_0x269f52[_0x1de6('0x42')]){case'skebby':if(_0x154779===_0x1de6('0xd0')){return _0x12d734['update']({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),'status',_0x1de6('0x84'),util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case _0x1de6('0xc9'):if(_0x154779==='1'){return _0x12d734[_0x1de6('0x38')]({'read':!![]});}else{logger['error'](_0x1de6('0x27'),_0x1de6('0x2f'),'skebby',util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x369f19[_0x1de6('0x65')][_0x1de6('0xd1')]&&_0x154779>=0xc8&&_0x154779<=0xce){return _0x12d734[_0x1de6('0x38')]({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),_0x1de6('0x2f'),_0x1de6('0xcc'),util['inspect'](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case _0x1de6('0x88'):var _0x345c33=_0x369f19['body'][_0x1de6('0x89')][0x0];if(_0x345c33[_0x1de6('0x2f')][_0x1de6('0xcd')]==='DELIVERED'){return _0x12d734['update']({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),_0x1de6('0x2f'),_0x1de6('0x88'),util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case _0x1de6('0x8d'):if(_0x154779==_0x1de6('0xd2')||_0x154779==_0x1de6('0xd3')){return _0x12d734[_0x1de6('0x38')]({'read':!![]});}else{logger['error'](_0x1de6('0x27'),_0x1de6('0x2f'),'clickatell',util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case _0x1de6('0xd4'):if(_0x154779==_0x1de6('0xd5')){return _0x12d734[_0x1de6('0x38')]({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),_0x1de6('0x2f'),_0x1de6('0xd4'),util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x154779===_0x1de6('0xd6')||_0x154779===_0x1de6('0xd7')){return _0x12d734[_0x1de6('0x38')]({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),_0x1de6('0x2f'),_0x1de6('0xce'),util[_0x1de6('0xc7')](_0x369f19[_0x1de6('0x65')],{'showHidden':![],'depth':null}));}break;}return _0x12d734;}})[_0x1de6('0x23')](respondWithResult(_0x2fe16f,null))[_0x1de6('0x2d')](handleError(_0x2fe16f,null));};exports[_0x1de6('0xd8')]=function(_0x2b368c,_0x310bad,_0x88bae3){var _0x5efad8,_0x277e63,_0x110c95;return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x2b368c[_0x1de6('0x59')]['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x310bad,null))[_0x1de6('0x23')](function(_0xbb67ba){if(_0xbb67ba){_0x110c95=_0xbb67ba;logger[_0x1de6('0x26')](_0x1de6('0x27'),_0x1de6('0x2f'),_0x1de6('0xc6'),_0xbb67ba[_0x1de6('0x42')],util[_0x1de6('0xc7')](_0x2b368c[_0x1de6('0x46')],{'showHidden':![],'depth':null}));switch(_0xbb67ba[_0x1de6('0x42')]){case _0x1de6('0x8b'):if(_0x2b368c[_0x1de6('0x46')]['message-id']&&_0x2b368c['query'][_0x1de6('0xd9')]){_0x277e63=_0x2b368c[_0x1de6('0x46')][_0x1de6('0xd9')];return db['SmsMessage'][_0x1de6('0x5b')]({'where':{'messageId':_0x2b368c['query']['message-id']}});}break;}}})[_0x1de6('0x23')](handleEntityNotFound(_0x310bad,null))[_0x1de6('0x23')](function(_0x1e93f1){if(_0x1e93f1){_0x5efad8=_0x1e93f1;switch(_0x110c95[_0x1de6('0x42')]){case _0x1de6('0x8b'):if(_0x277e63==='2'||_0x277e63==='6'){return _0x5efad8[_0x1de6('0x38')]({'read':!![]});}else{logger[_0x1de6('0x2a')](_0x1de6('0x27'),_0x1de6('0x2f'),'csc',util['inspect'](_0x2b368c[_0x1de6('0x46')],{'showHidden':![],'depth':null}));};break;}return _0x5efad8;}})['then'](respondWithResult(_0x310bad,null))['catch'](handleError(_0x310bad,null));};exports['addAgents']=function(_0x320cc4,_0x3c73de,_0x3bad5f){return db['SmsAccount'][_0x1de6('0x5b')]({'where':{'id':_0x320cc4[_0x1de6('0x59')]['id']}})['then'](handleEntityNotFound(_0x3c73de,null))[_0x1de6('0x23')](function(_0x2174b3){if(_0x2174b3){return _0x2174b3['addAgents'](_0x320cc4[_0x1de6('0x65')]['ids'],_[_0x1de6('0x9b')](_0x320cc4[_0x1de6('0x65')],['ids','id'])||{})[_0x1de6('0x9d')](function(_0x2df26b){for(var _0x1e1542=0x0;_0x1e1542<_0x320cc4['body']['ids'][_0x1de6('0x4b')];_0x1e1542+=0x1){socket[_0x1de6('0xda')](_0x1de6('0xdb'),{'UserId':Number(_0x320cc4[_0x1de6('0x65')][_0x1de6('0x70')][_0x1e1542]),'SmsAccountId':Number(_0x320cc4[_0x1de6('0x59')]['id'])});}return _0x2df26b;});}})[_0x1de6('0x23')](respondWithResult(_0x3c73de,null))['catch'](handleError(_0x3c73de,null));};exports[_0x1de6('0xdc')]=function(_0x52927e,_0x2ef1a4,_0x17362e){return db[_0x1de6('0x3f')][_0x1de6('0x5b')]({'where':{'id':_0x52927e['params']['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x2ef1a4,null))[_0x1de6('0x23')](function(_0x4489db){if(_0x4489db){return _0x4489db['removeAgents'](_0x52927e[_0x1de6('0x46')][_0x1de6('0x70')])[_0x1de6('0x23')](function(){if(_[_0x1de6('0xdd')](_0x52927e[_0x1de6('0x46')]['ids'])){for(var _0x18fc18=0x0;_0x18fc18<_0x52927e['query']['ids'][_0x1de6('0x4b')];_0x18fc18+=0x1){socket[_0x1de6('0xda')](_0x1de6('0xde'),{'UserId':Number(_0x52927e[_0x1de6('0x46')][_0x1de6('0x70')][_0x18fc18]),'SmsAccountId':Number(_0x52927e[_0x1de6('0x59')]['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x52927e[_0x1de6('0x46')][_0x1de6('0x70')]),'SmsAccountId':Number(_0x52927e[_0x1de6('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ef1a4,null))[_0x1de6('0x2d')](handleError(_0x2ef1a4,null));};exports[_0x1de6('0xdf')]=function(_0x4985f0,_0x1bf5e0,_0x1a188d){var _0xa40882={};var _0x3bf105={};var _0x4ce2e3;var _0x2e312c;return db[_0x1de6('0x3f')][_0x1de6('0x6a')]({'where':{'id':_0x4985f0['params']['id']}})[_0x1de6('0x23')](handleEntityNotFound(_0x1bf5e0,null))['then'](function(_0x14dfb7){if(_0x14dfb7){_0x4ce2e3=_0x14dfb7;_0x3bf105['model']=_[_0x1de6('0x45')](db['User'][_0x1de6('0x40')]);_0x3bf105[_0x1de6('0x46')]=_['keys'](_0x4985f0['query']);_0x3bf105[_0x1de6('0x47')]=_['intersection'](_0x3bf105['model'],_0x3bf105[_0x1de6('0x46')]);_0xa40882[_0x1de6('0x48')]=_['intersection'](_0x3bf105[_0x1de6('0x44')],qs[_0x1de6('0x4a')](_0x4985f0[_0x1de6('0x46')][_0x1de6('0x4a')]));_0xa40882[_0x1de6('0x48')]=_0xa40882[_0x1de6('0x48')][_0x1de6('0x4b')]?_0xa40882[_0x1de6('0x48')]:_0x3bf105[_0x1de6('0x44')];_0xa40882[_0x1de6('0x6e')]=qs[_0x1de6('0x4f')](_0x4985f0[_0x1de6('0x46')]['sort']);_0xa40882[_0x1de6('0x51')]=qs[_0x1de6('0x47')](_[_0x1de6('0xe0')](_0x4985f0[_0x1de6('0x46')],_0x3bf105[_0x1de6('0x47')]));if(_0x4985f0['query'][_0x1de6('0x50')]){_0xa40882[_0x1de6('0x51')]=_[_0x1de6('0x52')](_0xa40882[_0x1de6('0x51')],{'$or':_[_0x1de6('0x3e')](_0xa40882[_0x1de6('0x48')],function(_0x57947c){var _0x5cad98={};_0x5cad98[_0x57947c]={'$like':'%'+_0x4985f0[_0x1de6('0x46')][_0x1de6('0x50')]+'%'};return _0x5cad98;})});}_0xa40882=_[_0x1de6('0x52')]({},_0xa40882,_0x4985f0['options']);return _0x4ce2e3[_0x1de6('0xdf')](_0xa40882);}})[_0x1de6('0x23')](function(_0x4ee77a){if(_0x4ee77a){_0x2e312c=_0x4ee77a[_0x1de6('0x4b')];if(!_0x4985f0[_0x1de6('0x46')][_0x1de6('0x4c')](_0x1de6('0x4d'))){_0xa40882[_0x1de6('0x4e')]=qs[_0x1de6('0x4e')](_0x4985f0[_0x1de6('0x46')][_0x1de6('0x4e')]);_0xa40882[_0x1de6('0x32')]=qs[_0x1de6('0x32')](_0x4985f0[_0x1de6('0x46')][_0x1de6('0x32')]);}return _0x4ce2e3[_0x1de6('0xdf')](_0xa40882);}})[_0x1de6('0x23')](function(_0xcd1381){if(_0xcd1381){return _0xcd1381?{'count':_0x2e312c,'rows':_0xcd1381}:null;}})[_0x1de6('0x23')](respondWithResult(_0x1bf5e0,null))[_0x1de6('0x2d')](handleError(_0x1bf5e0,null));};
\ No newline at end of file
index 778c480..ebf47d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e56=['hasOwnProperty','hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','update','emit'];(function(_0x2100fc,_0x3b4ab3){var _0x270aa7=function(_0x42e5b3){while(--_0x42e5b3){_0x2100fc['push'](_0x2100fc['shift']());}};_0x270aa7(++_0x3b4ab3);}(_0x7e56,0x1c5));var _0x67e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e56[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x67e5('0x0'));var SmsAccount=require(_0x67e5('0x1'))['db'][_0x67e5('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x67e5('0x3')](0x0);var events={'afterCreate':_0x67e5('0x4'),'afterUpdate':_0x67e5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x423994){return function(_0x1561a6,_0x205d5b,_0x39c0a7){SmsAccountEvents[_0x67e5('0x6')](_0x423994+':'+_0x1561a6['id'],_0x1561a6);SmsAccountEvents['emit'](_0x423994,_0x1561a6);_0x39c0a7(null);};}for(var e in events){if(events[_0x67e5('0x7')](e)){var event=events[e];SmsAccount[_0x67e5('0x8')](e,emitEvent(event));}}module[_0x67e5('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0xd87f=['exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x4f859a,_0x3b659e){var _0x3322c6=function(_0x5a0316){while(--_0x5a0316){_0x4f859a['push'](_0x4f859a['shift']());}};_0x3322c6(++_0x3b659e);}(_0xd87f,0x79));var _0xfd87=function(_0x1ed66f,_0x5c5ef2){_0x1ed66f=_0x1ed66f-0x0;var _0x5748a9=_0xd87f[_0x1ed66f];return _0x5748a9;};'use strict';var EventEmitter=require(_0xfd87('0x0'));var SmsAccount=require(_0xfd87('0x1'))['db'][_0xfd87('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xfd87('0x3')](0x0);var events={'afterCreate':_0xfd87('0x4'),'afterUpdate':'update','afterDestroy':_0xfd87('0x5')};function emitEvent(_0x115231){return function(_0x1db597,_0x51d2c4,_0x119d44){SmsAccountEvents[_0xfd87('0x6')](_0x115231+':'+_0x1db597['id'],_0x1db597);SmsAccountEvents['emit'](_0x115231,_0x1db597);_0x119d44(null);};}for(var e in events){if(events[_0xfd87('0x7')](e)){var event=events[e];SmsAccount[_0xfd87('0x8')](e,emitEvent(event));}}module[_0xfd87('0x9')]=SmsAccountEvents;
\ No newline at end of file
index 1c55f50..3e3622b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a3e=['sms_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./smsAccount.attributes','SmsAccount'];(function(_0x24f2e7,_0x300abd){var _0x4571d0=function(_0x48dfc9){while(--_0x48dfc9){_0x24f2e7['push'](_0x24f2e7['shift']());}};_0x4571d0(++_0x300abd);}(_0x0a3e,0x79));var _0xe0a3=function(_0x13722d,_0x4c3404){_0x13722d=_0x13722d-0x0;var _0x5d9a5a=_0x0a3e[_0x13722d];return _0x5d9a5a;};'use strict';var _=require(_0xe0a3('0x0'));var util=require('util');var logger=require(_0xe0a3('0x1'))(_0xe0a3('0x2'));var moment=require(_0xe0a3('0x3'));var BPromise=require(_0xe0a3('0x4'));var rp=require(_0xe0a3('0x5'));var fs=require('fs');var path=require(_0xe0a3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe0a3('0x7'));module['exports']=function(_0x4745d9,_0x56c082){return _0x4745d9['define'](_0xe0a3('0x8'),attributes,{'tableName':_0xe0a3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1018=['exports','SmsAccount','sms_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x7ae894,_0x430460){var _0x3c4057=function(_0x4555c3){while(--_0x4555c3){_0x7ae894['push'](_0x7ae894['shift']());}};_0x3c4057(++_0x430460);}(_0x1018,0x148));var _0x8101=function(_0x308676,_0x46baeb){_0x308676=_0x308676-0x0;var _0x50d6db=_0x1018[_0x308676];return _0x50d6db;};'use strict';var _=require(_0x8101('0x0'));var util=require(_0x8101('0x1'));var logger=require(_0x8101('0x2'))(_0x8101('0x3'));var moment=require(_0x8101('0x4'));var BPromise=require(_0x8101('0x5'));var rp=require(_0x8101('0x6'));var fs=require('fs');var path=require(_0x8101('0x7'));var rimraf=require(_0x8101('0x8'));var config=require(_0x8101('0x9'));var attributes=require('./smsAccount.attributes');module[_0x8101('0xa')]=function(_0x204501,_0x3745d3){return _0x204501['define'](_0x8101('0xb'),attributes,{'tableName':_0x8101('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c2cc7d..fe6599d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e8e=['./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','ShowSmsAccount','SmsAccount','find','options','attributes','include','map','model','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x5bfa44,_0x76dacc){var _0x43815f=function(_0x307fca){while(--_0x307fca){_0x5bfa44['push'](_0x5bfa44['shift']());}};_0x43815f(++_0x76dacc);}(_0x7e8e,0x1e9));var _0xe7e8=function(_0x171fa7,_0x587eca){_0x171fa7=_0x171fa7-0x0;var _0xc894e1=_0x7e8e[_0x171fa7];return _0xc894e1;};'use strict';var _=require(_0xe7e8('0x0'));var util=require(_0xe7e8('0x1'));var moment=require(_0xe7e8('0x2'));var BPromise=require(_0xe7e8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7e8('0x4'));var db=require(_0xe7e8('0x5'))['db'];var utils=require(_0xe7e8('0x6'));var logger=require(_0xe7e8('0x7'))(_0xe7e8('0x8'));var config=require(_0xe7e8('0x9'));var jayson=require(_0xe7e8('0xa'));var client=jayson[_0xe7e8('0xb')][_0xe7e8('0xc')]({'port':0x232a});config[_0xe7e8('0xd')]=_[_0xe7e8('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe7e8('0xd')]));require(_0xe7e8('0xf'))['register'](socket);function respondWithRpcPromise(_0xbe841c,_0x301236,_0x416145){return new BPromise(function(_0x3c904f,_0x107dfa){return client[_0xe7e8('0x10')](_0xbe841c,_0x416145)[_0xe7e8('0x11')](function(_0x18e463){logger[_0xe7e8('0x12')](_0xe7e8('0x13'),_0x301236,'request\x20sent');logger[_0xe7e8('0x14')](_0xe7e8('0x15'),_0x301236,'request\x20sent',JSON[_0xe7e8('0x16')](_0x18e463));if(_0x18e463[_0xe7e8('0x17')]){if(_0x18e463[_0xe7e8('0x17')]['code']===0x1f4){logger[_0xe7e8('0x17')](_0xe7e8('0x13'),_0x301236,_0x18e463['error'][_0xe7e8('0x18')]);return _0x107dfa(_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);}logger[_0xe7e8('0x17')](_0xe7e8('0x13'),_0x301236,_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);return _0x3c904f(_0x18e463[_0xe7e8('0x17')][_0xe7e8('0x18')]);}else{logger[_0xe7e8('0x12')]('SmsAccount,\x20%s,\x20%s',_0x301236,_0xe7e8('0x19'));_0x3c904f(_0x18e463[_0xe7e8('0x1a')]['message']);}})['catch'](function(_0x5785a3){logger['error'](_0xe7e8('0x13'),_0x301236,_0x5785a3);_0x107dfa(_0x5785a3);});});}exports[_0xe7e8('0x1b')]=function(_0x27c826){var _0x57ea51=this;return new Promise(function(_0x1f4e30,_0x3af429){return db[_0xe7e8('0x1c')][_0xe7e8('0x1d')]({'raw':_0x27c826['options']?_0x27c826['options']['raw']===undefined?!![]:![]:!![],'where':_0x27c826[_0xe7e8('0x1e')]?_0x27c826[_0xe7e8('0x1e')]['where']||null:null,'attributes':_0x27c826[_0xe7e8('0x1e')]?_0x27c826['options'][_0xe7e8('0x1f')]||null:null,'include':_0x27c826['options']?_0x27c826[_0xe7e8('0x1e')][_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x27c826[_0xe7e8('0x1e')]['include'],function(_0x578e5b){return{'model':db[_0x578e5b[_0xe7e8('0x22')]],'as':_0x578e5b['as'],'attributes':_0x578e5b[_0xe7e8('0x1f')],'include':_0x578e5b[_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x578e5b[_0xe7e8('0x20')],function(_0x34b5fe){return{'model':db[_0x34b5fe['model']],'as':_0x34b5fe['as'],'attributes':_0x34b5fe['attributes'],'include':_0x34b5fe[_0xe7e8('0x20')]?_[_0xe7e8('0x21')](_0x34b5fe[_0xe7e8('0x20')],function(_0x1f3905){return{'model':db[_0x1f3905['model']],'as':_0x1f3905['as'],'attributes':_0x1f3905[_0xe7e8('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe7e8('0x11')](function(_0x4a604b){logger['info']('ShowSmsAccount',_0x27c826);logger[_0xe7e8('0x14')](_0xe7e8('0x1b'),_0x27c826,JSON['stringify'](_0x4a604b));_0x1f4e30(_0x4a604b);})[_0xe7e8('0x23')](function(_0x20df9d){logger[_0xe7e8('0x17')]('ShowSmsAccount',_0x20df9d['message'],_0x27c826);_0x3af429(_0x57ea51[_0xe7e8('0x17')](0x1f4,_0x20df9d[_0xe7e8('0x18')]));});});};
\ No newline at end of file
+var _0xce18=['error','code','message','info','result','catch','ShowSmsAccount','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s'];(function(_0x53e6a8,_0x5839ab){var _0x2b6dcc=function(_0x2b4215){while(--_0x2b4215){_0x53e6a8['push'](_0x53e6a8['shift']());}};_0x2b6dcc(++_0x5839ab);}(_0xce18,0xa7));var _0x8ce1=function(_0x56bd54,_0x14ccad){_0x56bd54=_0x56bd54-0x0;var _0x51de08=_0xce18[_0x56bd54];return _0x51de08;};'use strict';var _=require(_0x8ce1('0x0'));var util=require(_0x8ce1('0x1'));var moment=require(_0x8ce1('0x2'));var BPromise=require(_0x8ce1('0x3'));var rs=require(_0x8ce1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ce1('0x5'))['db'];var utils=require(_0x8ce1('0x6'));var logger=require(_0x8ce1('0x7'))(_0x8ce1('0x8'));var config=require(_0x8ce1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8ce1('0xa')][_0x8ce1('0xb')]({'port':0x232a});config[_0x8ce1('0xc')]=_[_0x8ce1('0xd')](config['redis'],{'host':_0x8ce1('0xe'),'port':0x18eb});var socket=require(_0x8ce1('0xf'))(new Redis(config[_0x8ce1('0xc')]));require(_0x8ce1('0x10'))[_0x8ce1('0x11')](socket);function respondWithRpcPromise(_0x65d65f,_0x29e974,_0x1bab31){return new BPromise(function(_0x3c630a,_0x5b1155){return client[_0x8ce1('0x12')](_0x65d65f,_0x1bab31)[_0x8ce1('0x13')](function(_0x330ecd){logger['info'](_0x8ce1('0x14'),_0x29e974,_0x8ce1('0x15'));logger['debug'](_0x8ce1('0x16'),_0x29e974,_0x8ce1('0x15'),JSON['stringify'](_0x330ecd));if(_0x330ecd[_0x8ce1('0x17')]){if(_0x330ecd[_0x8ce1('0x17')][_0x8ce1('0x18')]===0x1f4){logger[_0x8ce1('0x17')](_0x8ce1('0x14'),_0x29e974,_0x330ecd[_0x8ce1('0x17')]['message']);return _0x5b1155(_0x330ecd[_0x8ce1('0x17')][_0x8ce1('0x19')]);}logger[_0x8ce1('0x17')]('SmsAccount,\x20%s,\x20%s',_0x29e974,_0x330ecd[_0x8ce1('0x17')]['message']);return _0x3c630a(_0x330ecd['error'][_0x8ce1('0x19')]);}else{logger[_0x8ce1('0x1a')](_0x8ce1('0x14'),_0x29e974,_0x8ce1('0x15'));_0x3c630a(_0x330ecd[_0x8ce1('0x1b')][_0x8ce1('0x19')]);}})[_0x8ce1('0x1c')](function(_0x526a72){logger[_0x8ce1('0x17')]('SmsAccount,\x20%s,\x20%s',_0x29e974,_0x526a72);_0x5b1155(_0x526a72);});});}exports[_0x8ce1('0x1d')]=function(_0x347657){var _0x5252f6=this;return new Promise(function(_0x74dd5d,_0x17c3b3){return db['SmsAccount'][_0x8ce1('0x1e')]({'raw':_0x347657['options']?_0x347657[_0x8ce1('0x1f')][_0x8ce1('0x20')]===undefined?!![]:![]:!![],'where':_0x347657[_0x8ce1('0x1f')]?_0x347657['options'][_0x8ce1('0x21')]||null:null,'attributes':_0x347657[_0x8ce1('0x1f')]?_0x347657[_0x8ce1('0x1f')][_0x8ce1('0x22')]||null:null,'include':_0x347657['options']?_0x347657[_0x8ce1('0x1f')][_0x8ce1('0x23')]?_[_0x8ce1('0x24')](_0x347657['options'][_0x8ce1('0x23')],function(_0x9adb46){return{'model':db[_0x9adb46[_0x8ce1('0x25')]],'as':_0x9adb46['as'],'attributes':_0x9adb46[_0x8ce1('0x22')],'include':_0x9adb46[_0x8ce1('0x23')]?_['map'](_0x9adb46['include'],function(_0x2e8155){return{'model':db[_0x2e8155['model']],'as':_0x2e8155['as'],'attributes':_0x2e8155[_0x8ce1('0x22')],'include':_0x2e8155['include']?_[_0x8ce1('0x24')](_0x2e8155[_0x8ce1('0x23')],function(_0x554756){return{'model':db[_0x554756['model']],'as':_0x554756['as'],'attributes':_0x554756[_0x8ce1('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x326b9b){logger[_0x8ce1('0x1a')]('ShowSmsAccount',_0x347657);logger['debug'](_0x8ce1('0x1d'),_0x347657,JSON['stringify'](_0x326b9b));_0x74dd5d(_0x326b9b);})['catch'](function(_0x26a2a7){logger['error'](_0x8ce1('0x1d'),_0x26a2a7[_0x8ce1('0x19')],_0x347657);_0x17c3b3(_0x5252f6['error'](0x1f4,_0x26a2a7[_0x8ce1('0x19')]));});});};
\ No newline at end of file
index ad1633d..a62b583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 2230e2b..8337108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x29c2bb,_0x1bde54){var _0x5446f1=function(_0x106117){while(--_0x106117){_0x29c2bb['push'](_0x29c2bb['shift']());}};_0x5446f1(++_0x1bde54);}(_0x34e8,0x12c));var _0x834e=function(_0x1611d9,_0x3a6ab0){_0x1611d9=_0x1611d9-0x0;var _0x1f4230=_0x34e8[_0x1611d9];return _0x1f4230;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
+var _0xe14b=['/:id','create','put','exports','multer','util','express','Router','../../components/auth/service','./smsApplication.controller','get','isAuthenticated','index'];(function(_0x16036d,_0x36debe){var _0x411163=function(_0xf9b98c){while(--_0xf9b98c){_0x16036d['push'](_0x16036d['shift']());}};_0x411163(++_0x36debe);}(_0xe14b,0x93));var _0xbe14=function(_0x217c07,_0x41b69a){_0x217c07=_0x217c07-0x0;var _0x28039e=_0xe14b[_0x217c07];return _0x28039e;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router['delete'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['destroy']);module[_0xbe14('0xc')]=router;
\ No newline at end of file
index f87454c..79c056a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b76=['STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x3b76,0x160));var _0x63b7=function(_0x2b3ff4,_0x571d5d){_0x2b3ff4=_0x2b3ff4-0x0;var _0x3bfec9=_0x3b76[_0x2b3ff4];return _0x3bfec9;};'use strict';var Sequelize=require(_0x63b7('0x0'));module[_0x63b7('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x63b7('0x2')],'allowNull':![],'defaultValue':_0x63b7('0x3')},'appdata':{'type':Sequelize[_0x63b7('0x4')]()},'description':{'type':Sequelize[_0x63b7('0x2')]},'interval':{'type':Sequelize[_0x63b7('0x2')],'defaultValue':_0x63b7('0x5')}};
\ No newline at end of file
+var _0x1703=['sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x1703,0xe4));var _0x3170=function(_0x11c9e5,_0xad06b6){_0x11c9e5=_0x11c9e5-0x0;var _0x4a83f7=_0x1703[_0x11c9e5];return _0x4a83f7;};'use strict';var Sequelize=require(_0x3170('0x0'));module[_0x3170('0x1')]={'priority':{'type':Sequelize[_0x3170('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x3170('0x3')],'allowNull':![],'defaultValue':_0x3170('0x4')},'appdata':{'type':Sequelize[_0x3170('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x3170('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 2e0a181..2d4fd51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fe8=['error','stack','name','index','map','SmsApplication','rawAttributes','fieldName','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','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','status','end','offset','undefined','limit','count','json','apply','save','update','destroy','then'];(function(_0x19cd25,_0x86e97d){var _0x1d0668=function(_0xe5165b){while(--_0xe5165b){_0x19cd25['push'](_0x19cd25['shift']());}};_0x1d0668(++_0x86e97d);}(_0x5fe8,0xbc));var _0x85fe=function(_0x4a7767,_0x46a70b){_0x4a7767=_0x4a7767-0x0;var _0x1ef8f7=_0x5fe8[_0x4a7767];return _0x1ef8f7;};'use strict';var emlformat=require(_0x85fe('0x0'));var rimraf=require(_0x85fe('0x1'));var zipdir=require(_0x85fe('0x2'));var jsonpatch=require(_0x85fe('0x3'));var rp=require(_0x85fe('0x4'));var moment=require(_0x85fe('0x5'));var BPromise=require(_0x85fe('0x6'));var Mustache=require('mustache');var util=require(_0x85fe('0x7'));var path=require(_0x85fe('0x8'));var sox=require(_0x85fe('0x9'));var csv=require('to-csv');var ejs=require(_0x85fe('0xa'));var fs=require('fs');var fs_extra=require(_0x85fe('0xb'));var _=require(_0x85fe('0xc'));var squel=require('squel');var crypto=require(_0x85fe('0xd'));var jsforce=require(_0x85fe('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x85fe('0xf'));var Papa=require(_0x85fe('0x10'));var Redis=require(_0x85fe('0x11'));var authService=require(_0x85fe('0x12'));var qs=require(_0x85fe('0x13'));var as=require(_0x85fe('0x14'));var hardwareService=require(_0x85fe('0x15'));var logger=require('../../config/logger')(_0x85fe('0x16'));var utils=require(_0x85fe('0x17'));var config=require(_0x85fe('0x18'));var licenseUtil=require(_0x85fe('0x19'));var db=require(_0x85fe('0x1a'))['db'];function respondWithStatusCode(_0x6ad98f,_0x5b3cc0){_0x5b3cc0=_0x5b3cc0||0xcc;return function(_0x1de8f0){if(_0x1de8f0){return _0x6ad98f[_0x85fe('0x1b')](_0x5b3cc0);}return _0x6ad98f[_0x85fe('0x1c')](_0x5b3cc0)[_0x85fe('0x1d')]();};}function respondWithResult(_0x3f8c6b,_0x282d04){_0x282d04=_0x282d04||0xc8;return function(_0xf4d1){if(_0xf4d1){return _0x3f8c6b[_0x85fe('0x1c')](_0x282d04)['json'](_0xf4d1);}};}function respondWithFilteredResult(_0x110f2d,_0x280860){return function(_0x273cdb){if(_0x273cdb){var _0x463c74=typeof _0x280860[_0x85fe('0x1e')]===_0x85fe('0x1f')&&typeof _0x280860[_0x85fe('0x20')]===_0x85fe('0x1f');var _0x39bc99=_0x273cdb['count'];var _0x941f08=_0x463c74?0x0:_0x280860['offset'];var _0x5ad915=_0x463c74?_0x273cdb[_0x85fe('0x21')]:_0x280860[_0x85fe('0x1e')]+_0x280860[_0x85fe('0x20')];var _0x200783;if(_0x5ad915>=_0x39bc99){_0x5ad915=_0x39bc99;_0x200783=0xc8;}else{_0x200783=0xce;}_0x110f2d[_0x85fe('0x1c')](_0x200783);return _0x110f2d['set']('Content-Range',_0x941f08+'-'+_0x5ad915+'/'+_0x39bc99)[_0x85fe('0x22')](_0x273cdb);}return null;};}function patchUpdates(_0x289822){return function(_0x215a1b){try{jsonpatch[_0x85fe('0x23')](_0x215a1b,_0x289822,!![]);}catch(_0x500f0d){return BPromise['reject'](_0x500f0d);}return _0x215a1b[_0x85fe('0x24')]();};}function saveUpdates(_0x180def,_0x269d03){return function(_0x40df6e){if(_0x40df6e){return _0x40df6e[_0x85fe('0x25')](_0x180def)['then'](function(_0x258fdc){return _0x258fdc;});}return null;};}function removeEntity(_0x47b31c,_0x1564f3){return function(_0x501eed){if(_0x501eed){return _0x501eed[_0x85fe('0x26')]()[_0x85fe('0x27')](function(){_0x47b31c[_0x85fe('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x323838,_0x1b5016){return function(_0x206dc7){if(!_0x206dc7){_0x323838[_0x85fe('0x1b')](0x194);}return _0x206dc7;};}function handleError(_0x5e3afd,_0x543bcf){_0x543bcf=_0x543bcf||0x1f4;return function(_0x2a0765){logger[_0x85fe('0x28')](_0x2a0765[_0x85fe('0x29')]);if(_0x2a0765[_0x85fe('0x2a')]){delete _0x2a0765[_0x85fe('0x2a')];}_0x5e3afd['status'](_0x543bcf)['send'](_0x2a0765);};}exports[_0x85fe('0x2b')]=function(_0x30246d,_0x598c51){var _0x463b71={},_0x1f84e3={},_0x4867cc={'count':0x0,'rows':[]};var _0x2e4f37=_[_0x85fe('0x2c')](db[_0x85fe('0x2d')][_0x85fe('0x2e')],function(_0x5ec635){return{'name':_0x5ec635[_0x85fe('0x2f')],'type':_0x5ec635['type'][_0x85fe('0x30')]};});_0x1f84e3['model']=_[_0x85fe('0x2c')](_0x2e4f37,_0x85fe('0x2a'));_0x1f84e3[_0x85fe('0x31')]=_['keys'](_0x30246d[_0x85fe('0x31')]);_0x1f84e3[_0x85fe('0x32')]=_[_0x85fe('0x33')](_0x1f84e3['model'],_0x1f84e3[_0x85fe('0x31')]);_0x463b71['attributes']=_['intersection'](_0x1f84e3[_0x85fe('0x34')],qs[_0x85fe('0x35')](_0x30246d[_0x85fe('0x31')][_0x85fe('0x35')]));_0x463b71['attributes']=_0x463b71[_0x85fe('0x36')][_0x85fe('0x37')]?_0x463b71[_0x85fe('0x36')]:_0x1f84e3[_0x85fe('0x34')];if(!_0x30246d['query'][_0x85fe('0x38')](_0x85fe('0x39'))){_0x463b71[_0x85fe('0x20')]=qs[_0x85fe('0x20')](_0x30246d['query'][_0x85fe('0x20')]);_0x463b71[_0x85fe('0x1e')]=qs[_0x85fe('0x1e')](_0x30246d[_0x85fe('0x31')][_0x85fe('0x1e')]);}_0x463b71[_0x85fe('0x3a')]=qs[_0x85fe('0x3b')](_0x30246d['query']['sort']);_0x463b71['where']=qs[_0x85fe('0x32')](_[_0x85fe('0x3c')](_0x30246d[_0x85fe('0x31')],_0x1f84e3[_0x85fe('0x32')]),_0x2e4f37);if(_0x30246d[_0x85fe('0x31')][_0x85fe('0x3d')]){_0x463b71[_0x85fe('0x3e')]=_[_0x85fe('0x3f')](_0x463b71[_0x85fe('0x3e')],{'$or':_['map'](_0x2e4f37,function(_0x3055f5){if(_0x3055f5['type']!=='VIRTUAL'){var _0x435abb={};_0x435abb[_0x3055f5[_0x85fe('0x2a')]]={'$like':'%'+_0x30246d['query'][_0x85fe('0x3d')]+'%'};return _0x435abb;}})});}_0x463b71=_[_0x85fe('0x3f')]({},_0x463b71,_0x30246d[_0x85fe('0x40')]);var _0x30d6a2={'where':_0x463b71['where']};return db[_0x85fe('0x2d')][_0x85fe('0x21')](_0x30d6a2)[_0x85fe('0x27')](function(_0x3ff46e){_0x4867cc[_0x85fe('0x21')]=_0x3ff46e;if(_0x30246d[_0x85fe('0x31')][_0x85fe('0x41')]){_0x463b71[_0x85fe('0x42')]=[{'all':!![]}];}return db[_0x85fe('0x2d')][_0x85fe('0x43')](_0x463b71);})['then'](function(_0x5c4038){_0x4867cc[_0x85fe('0x44')]=_0x5c4038;return _0x4867cc;})[_0x85fe('0x27')](respondWithFilteredResult(_0x598c51,_0x463b71))[_0x85fe('0x45')](handleError(_0x598c51,null));};exports[_0x85fe('0x46')]=function(_0x24836b,_0x4147f1){var _0x2e0c2f={'raw':!![],'where':{'id':_0x24836b[_0x85fe('0x47')]['id']}},_0x15559c={};_0x15559c[_0x85fe('0x34')]=_[_0x85fe('0x48')](db[_0x85fe('0x2d')][_0x85fe('0x2e')]);_0x15559c[_0x85fe('0x31')]=_['keys'](_0x24836b[_0x85fe('0x31')]);_0x15559c[_0x85fe('0x32')]=_[_0x85fe('0x33')](_0x15559c[_0x85fe('0x34')],_0x15559c[_0x85fe('0x31')]);_0x2e0c2f[_0x85fe('0x36')]=_['intersection'](_0x15559c[_0x85fe('0x34')],qs[_0x85fe('0x35')](_0x24836b['query'][_0x85fe('0x35')]));_0x2e0c2f[_0x85fe('0x36')]=_0x2e0c2f['attributes'][_0x85fe('0x37')]?_0x2e0c2f[_0x85fe('0x36')]:_0x15559c[_0x85fe('0x34')];if(_0x24836b[_0x85fe('0x31')][_0x85fe('0x41')]){_0x2e0c2f['include']=[{'all':!![]}];}_0x2e0c2f=_[_0x85fe('0x3f')]({},_0x2e0c2f,_0x24836b[_0x85fe('0x40')]);return db[_0x85fe('0x2d')][_0x85fe('0x49')](_0x2e0c2f)['then'](handleEntityNotFound(_0x4147f1,null))[_0x85fe('0x27')](respondWithResult(_0x4147f1,null))[_0x85fe('0x45')](handleError(_0x4147f1,null));};exports[_0x85fe('0x4a')]=function(_0x393f06,_0x5a054d){return db['SmsApplication'][_0x85fe('0x4a')](_0x393f06['body'],{})[_0x85fe('0x27')](respondWithResult(_0x5a054d,0xc9))[_0x85fe('0x45')](handleError(_0x5a054d,null));};exports['update']=function(_0x3aee55,_0x5c1eec){if(_0x3aee55['body']['id']){delete _0x3aee55[_0x85fe('0x4b')]['id'];}return db[_0x85fe('0x2d')]['find']({'where':{'id':_0x3aee55[_0x85fe('0x47')]['id']}})[_0x85fe('0x27')](handleEntityNotFound(_0x5c1eec,null))['then'](saveUpdates(_0x3aee55['body'],null))[_0x85fe('0x27')](respondWithResult(_0x5c1eec,null))[_0x85fe('0x45')](handleError(_0x5c1eec,null));};exports[_0x85fe('0x26')]=function(_0x49940d,_0x1fb847){return db[_0x85fe('0x2d')]['find']({'where':{'id':_0x49940d[_0x85fe('0x47')]['id']}})['then'](handleEntityNotFound(_0x1fb847,null))[_0x85fe('0x27')](removeEntity(_0x1fb847,null))['catch'](handleError(_0x1fb847,null));};
\ No newline at end of file
+var _0x76ff=['where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','error','name','send','map','SmsApplication','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','sort','filters','pick','filter'];(function(_0x199ef6,_0x212f8c){var _0x3201c8=function(_0x3e7119){while(--_0x3e7119){_0x199ef6['push'](_0x199ef6['shift']());}};_0x3201c8(++_0x212f8c);}(_0x76ff,0x174));var _0xf76f=function(_0x4a620f,_0x2ace8c){_0x4a620f=_0x4a620f-0x0;var _0x372f49=_0x76ff[_0x4a620f];return _0x372f49;};'use strict';var emlformat=require(_0xf76f('0x0'));var rimraf=require(_0xf76f('0x1'));var zipdir=require(_0xf76f('0x2'));var jsonpatch=require(_0xf76f('0x3'));var rp=require(_0xf76f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf76f('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf76f('0x6'));var csv=require(_0xf76f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf76f('0x8'));var _=require(_0xf76f('0x9'));var squel=require(_0xf76f('0xa'));var crypto=require(_0xf76f('0xb'));var jsforce=require(_0xf76f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf76f('0x7'));var querystring=require(_0xf76f('0xd'));var Papa=require(_0xf76f('0xe'));var Redis=require(_0xf76f('0xf'));var authService=require(_0xf76f('0x10'));var qs=require(_0xf76f('0x11'));var as=require(_0xf76f('0x12'));var hardwareService=require(_0xf76f('0x13'));var logger=require(_0xf76f('0x14'))(_0xf76f('0x15'));var utils=require(_0xf76f('0x16'));var config=require(_0xf76f('0x17'));var licenseUtil=require(_0xf76f('0x18'));var db=require(_0xf76f('0x19'))['db'];function respondWithStatusCode(_0x231bf6,_0x4f3083){_0x4f3083=_0x4f3083||0xcc;return function(_0x59b96c){if(_0x59b96c){return _0x231bf6[_0xf76f('0x1a')](_0x4f3083);}return _0x231bf6['status'](_0x4f3083)['end']();};}function respondWithResult(_0x300d9f,_0x3cff79){_0x3cff79=_0x3cff79||0xc8;return function(_0x3d2a5d){if(_0x3d2a5d){return _0x300d9f[_0xf76f('0x1b')](_0x3cff79)[_0xf76f('0x1c')](_0x3d2a5d);}};}function respondWithFilteredResult(_0x5ac3b2,_0x517077){return function(_0x8d68dd){if(_0x8d68dd){var _0x21d604=typeof _0x517077[_0xf76f('0x1d')]===_0xf76f('0x1e')&&typeof _0x517077[_0xf76f('0x1f')]===_0xf76f('0x1e');var _0x54acd4=_0x8d68dd[_0xf76f('0x20')];var _0x166f60=_0x21d604?0x0:_0x517077['offset'];var _0x4e97a9=_0x21d604?_0x8d68dd[_0xf76f('0x20')]:_0x517077[_0xf76f('0x1d')]+_0x517077[_0xf76f('0x1f')];var _0x26d2c1;if(_0x4e97a9>=_0x54acd4){_0x4e97a9=_0x54acd4;_0x26d2c1=0xc8;}else{_0x26d2c1=0xce;}_0x5ac3b2['status'](_0x26d2c1);return _0x5ac3b2[_0xf76f('0x21')]('Content-Range',_0x166f60+'-'+_0x4e97a9+'/'+_0x54acd4)[_0xf76f('0x1c')](_0x8d68dd);}return null;};}function patchUpdates(_0x20068e){return function(_0x20d991){try{jsonpatch[_0xf76f('0x22')](_0x20d991,_0x20068e,!![]);}catch(_0x4b45bd){return BPromise[_0xf76f('0x23')](_0x4b45bd);}return _0x20d991[_0xf76f('0x24')]();};}function saveUpdates(_0x358993,_0x51592e){return function(_0xf64070){if(_0xf64070){return _0xf64070[_0xf76f('0x25')](_0x358993)[_0xf76f('0x26')](function(_0x3da1e0){return _0x3da1e0;});}return null;};}function removeEntity(_0x86f9ae,_0x4cf8aa){return function(_0xfc4a92){if(_0xfc4a92){return _0xfc4a92[_0xf76f('0x27')]()[_0xf76f('0x26')](function(){_0x86f9ae[_0xf76f('0x1b')](0xcc)[_0xf76f('0x28')]();});}};}function handleEntityNotFound(_0xc1a9fe,_0x128555){return function(_0x24fbd7){if(!_0x24fbd7){_0xc1a9fe[_0xf76f('0x1a')](0x194);}return _0x24fbd7;};}function handleError(_0x1069f5,_0x39176f){_0x39176f=_0x39176f||0x1f4;return function(_0x530792){logger[_0xf76f('0x29')](_0x530792['stack']);if(_0x530792['name']){delete _0x530792[_0xf76f('0x2a')];}_0x1069f5['status'](_0x39176f)[_0xf76f('0x2b')](_0x530792);};}exports['index']=function(_0x145127,_0x3ee918){var _0x6e829d={},_0x14d24e={},_0x403dad={'count':0x0,'rows':[]};var _0x54dfa1=_[_0xf76f('0x2c')](db[_0xf76f('0x2d')][_0xf76f('0x2e')],function(_0x3f989d){return{'name':_0x3f989d['fieldName'],'type':_0x3f989d[_0xf76f('0x2f')][_0xf76f('0x30')]};});_0x14d24e[_0xf76f('0x31')]=_[_0xf76f('0x2c')](_0x54dfa1,'name');_0x14d24e[_0xf76f('0x32')]=_[_0xf76f('0x33')](_0x145127[_0xf76f('0x32')]);_0x14d24e['filters']=_[_0xf76f('0x34')](_0x14d24e[_0xf76f('0x31')],_0x14d24e[_0xf76f('0x32')]);_0x6e829d[_0xf76f('0x35')]=_[_0xf76f('0x34')](_0x14d24e[_0xf76f('0x31')],qs[_0xf76f('0x36')](_0x145127[_0xf76f('0x32')][_0xf76f('0x36')]));_0x6e829d[_0xf76f('0x35')]=_0x6e829d['attributes'][_0xf76f('0x37')]?_0x6e829d[_0xf76f('0x35')]:_0x14d24e[_0xf76f('0x31')];if(!_0x145127[_0xf76f('0x32')]['hasOwnProperty']('nolimit')){_0x6e829d[_0xf76f('0x1f')]=qs[_0xf76f('0x1f')](_0x145127[_0xf76f('0x32')][_0xf76f('0x1f')]);_0x6e829d[_0xf76f('0x1d')]=qs['offset'](_0x145127['query'][_0xf76f('0x1d')]);}_0x6e829d['order']=qs[_0xf76f('0x38')](_0x145127['query'][_0xf76f('0x38')]);_0x6e829d['where']=qs[_0xf76f('0x39')](_[_0xf76f('0x3a')](_0x145127[_0xf76f('0x32')],_0x14d24e[_0xf76f('0x39')]),_0x54dfa1);if(_0x145127[_0xf76f('0x32')][_0xf76f('0x3b')]){_0x6e829d[_0xf76f('0x3c')]=_['merge'](_0x6e829d[_0xf76f('0x3c')],{'$or':_[_0xf76f('0x2c')](_0x54dfa1,function(_0x7d3ec4){if(_0x7d3ec4['type']!==_0xf76f('0x3d')){var _0x45df07={};_0x45df07[_0x7d3ec4['name']]={'$like':'%'+_0x145127[_0xf76f('0x32')][_0xf76f('0x3b')]+'%'};return _0x45df07;}})});}_0x6e829d=_['merge']({},_0x6e829d,_0x145127[_0xf76f('0x3e')]);var _0x32d29={'where':_0x6e829d[_0xf76f('0x3c')]};return db[_0xf76f('0x2d')][_0xf76f('0x20')](_0x32d29)[_0xf76f('0x26')](function(_0x3677e8){_0x403dad['count']=_0x3677e8;if(_0x145127[_0xf76f('0x32')][_0xf76f('0x3f')]){_0x6e829d[_0xf76f('0x40')]=[{'all':!![]}];}return db[_0xf76f('0x2d')][_0xf76f('0x41')](_0x6e829d);})['then'](function(_0x3b65af){_0x403dad[_0xf76f('0x42')]=_0x3b65af;return _0x403dad;})[_0xf76f('0x26')](respondWithFilteredResult(_0x3ee918,_0x6e829d))[_0xf76f('0x43')](handleError(_0x3ee918,null));};exports['show']=function(_0x1c6da6,_0x177960){var _0x50559b={'raw':!![],'where':{'id':_0x1c6da6[_0xf76f('0x44')]['id']}},_0x3c0e43={};_0x3c0e43[_0xf76f('0x31')]=_[_0xf76f('0x33')](db[_0xf76f('0x2d')][_0xf76f('0x2e')]);_0x3c0e43[_0xf76f('0x32')]=_[_0xf76f('0x33')](_0x1c6da6[_0xf76f('0x32')]);_0x3c0e43[_0xf76f('0x39')]=_['intersection'](_0x3c0e43[_0xf76f('0x31')],_0x3c0e43[_0xf76f('0x32')]);_0x50559b[_0xf76f('0x35')]=_[_0xf76f('0x34')](_0x3c0e43[_0xf76f('0x31')],qs['fields'](_0x1c6da6[_0xf76f('0x32')][_0xf76f('0x36')]));_0x50559b[_0xf76f('0x35')]=_0x50559b['attributes'][_0xf76f('0x37')]?_0x50559b[_0xf76f('0x35')]:_0x3c0e43[_0xf76f('0x31')];if(_0x1c6da6[_0xf76f('0x32')][_0xf76f('0x3f')]){_0x50559b[_0xf76f('0x40')]=[{'all':!![]}];}_0x50559b=_['merge']({},_0x50559b,_0x1c6da6[_0xf76f('0x3e')]);return db[_0xf76f('0x2d')][_0xf76f('0x45')](_0x50559b)[_0xf76f('0x26')](handleEntityNotFound(_0x177960,null))[_0xf76f('0x26')](respondWithResult(_0x177960,null))[_0xf76f('0x43')](handleError(_0x177960,null));};exports[_0xf76f('0x46')]=function(_0x478a14,_0x549cdb){return db['SmsApplication'][_0xf76f('0x46')](_0x478a14[_0xf76f('0x47')],{})['then'](respondWithResult(_0x549cdb,0xc9))['catch'](handleError(_0x549cdb,null));};exports[_0xf76f('0x25')]=function(_0x4db26c,_0x400e77){if(_0x4db26c[_0xf76f('0x47')]['id']){delete _0x4db26c[_0xf76f('0x47')]['id'];}return db['SmsApplication'][_0xf76f('0x45')]({'where':{'id':_0x4db26c['params']['id']}})[_0xf76f('0x26')](handleEntityNotFound(_0x400e77,null))['then'](saveUpdates(_0x4db26c[_0xf76f('0x47')],null))['then'](respondWithResult(_0x400e77,null))['catch'](handleError(_0x400e77,null));};exports[_0xf76f('0x27')]=function(_0x2d7c9d,_0x474feb){return db[_0xf76f('0x2d')][_0xf76f('0x45')]({'where':{'id':_0x2d7c9d['params']['id']}})[_0xf76f('0x26')](handleEntityNotFound(_0x474feb,null))[_0xf76f('0x26')](removeEntity(_0x474feb,null))['catch'](handleError(_0x474feb,null));};
\ No newline at end of file
index 719a692..28002da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1679=['sms_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x1679,0x193));var _0x9167=function(_0x197739,_0x173ebf){_0x197739=_0x197739-0x0;var _0x225043=_0x1679[_0x197739];return _0x225043;};'use strict';var _=require('lodash');var util=require(_0x9167('0x0'));var logger=require(_0x9167('0x1'))(_0x9167('0x2'));var moment=require(_0x9167('0x3'));var BPromise=require(_0x9167('0x4'));var rp=require(_0x9167('0x5'));var fs=require('fs');var path=require(_0x9167('0x6'));var rimraf=require(_0x9167('0x7'));var config=require(_0x9167('0x8'));var attributes=require(_0x9167('0x9'));module[_0x9167('0xa')]=function(_0x183368,_0x3b83a1){return _0x183368[_0x9167('0xb')](_0x9167('0xc'),attributes,{'tableName':_0x9167('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9167('0xe'),'collate':_0x9167('0xf')});};
\ No newline at end of file
+var _0xe6b2=['./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x4c2623,_0x4838bb){var _0x2be431=function(_0x55829d){while(--_0x55829d){_0x4c2623['push'](_0x4c2623['shift']());}};_0x2be431(++_0x4838bb);}(_0xe6b2,0x17e));var _0x2e6b=function(_0x2569d,_0x4a391c){_0x2569d=_0x2569d-0x0;var _0x42be96=_0xe6b2[_0x2569d];return _0x42be96;};'use strict';var _=require(_0x2e6b('0x0'));var util=require(_0x2e6b('0x1'));var logger=require(_0x2e6b('0x2'))(_0x2e6b('0x3'));var moment=require(_0x2e6b('0x4'));var BPromise=require(_0x2e6b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2e6b('0x6'));var rimraf=require(_0x2e6b('0x7'));var config=require('../../config/environment');var attributes=require(_0x2e6b('0x8'));module[_0x2e6b('0x9')]=function(_0x3cdeeb,_0x1b77b1){return _0x3cdeeb[_0x2e6b('0xa')](_0x2e6b('0xb'),attributes,{'tableName':_0x2e6b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2e6b('0xd'),'collate':_0x2e6b('0xe')});};
\ No newline at end of file
index 6cd9ad9..d9fc53a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc0=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','bluebird'];(function(_0x313b92,_0x48c2b5){var _0x421fd8=function(_0x667f84){while(--_0x667f84){_0x313b92['push'](_0x313b92['shift']());}};_0x421fd8(++_0x48c2b5);}(_0xffc0,0x1a0));var _0x0ffc=function(_0x58c1f1,_0x18ee73){_0x58c1f1=_0x58c1f1-0x0;var _0x590e00=_0xffc0[_0x58c1f1];return _0x590e00;};'use strict';var _=require('lodash');var util=require(_0x0ffc('0x0'));var moment=require('moment');var BPromise=require(_0x0ffc('0x1'));var rs=require(_0x0ffc('0x2'));var fs=require('fs');var Redis=require(_0x0ffc('0x3'));var db=require(_0x0ffc('0x4'))['db'];var utils=require(_0x0ffc('0x5'));var logger=require(_0x0ffc('0x6'))(_0x0ffc('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ffc('0x8'));var client=jayson[_0x0ffc('0x9')][_0x0ffc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4bbe45,_0x5f25b3,_0x292a77){return new BPromise(function(_0x3db9d4,_0x14a0a1){return client[_0x0ffc('0xb')](_0x4bbe45,_0x292a77)['then'](function(_0x18ebe){logger[_0x0ffc('0xc')](_0x0ffc('0xd'),_0x5f25b3,_0x0ffc('0xe'));logger[_0x0ffc('0xf')](_0x0ffc('0x10'),_0x5f25b3,_0x0ffc('0xe'),JSON[_0x0ffc('0x11')](_0x18ebe));if(_0x18ebe['error']){if(_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x13')]===0x1f4){logger['error'](_0x0ffc('0xd'),_0x5f25b3,_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);return _0x14a0a1(_0x18ebe['error'][_0x0ffc('0x14')]);}logger[_0x0ffc('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);return _0x3db9d4(_0x18ebe[_0x0ffc('0x12')][_0x0ffc('0x14')]);}else{logger[_0x0ffc('0xc')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x0ffc('0xe'));_0x3db9d4(_0x18ebe['result'][_0x0ffc('0x14')]);}})[_0x0ffc('0x15')](function(_0x4abd72){logger[_0x0ffc('0x12')]('SmsApplication,\x20%s,\x20%s',_0x5f25b3,_0x4abd72);_0x14a0a1(_0x4abd72);});});}
\ No newline at end of file
+var _0xd945=['debug','request\x20sent','stringify','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s'];(function(_0x18fe1e,_0x54ecf2){var _0x2ba947=function(_0x4aaf0f){while(--_0x4aaf0f){_0x18fe1e['push'](_0x18fe1e['shift']());}};_0x2ba947(++_0x54ecf2);}(_0xd945,0x84));var _0x5d94=function(_0x12c167,_0x18dde2){_0x12c167=_0x12c167-0x0;var _0x70b8fd=_0xd945[_0x12c167];return _0x70b8fd;};'use strict';var _=require(_0x5d94('0x0'));var util=require(_0x5d94('0x1'));var moment=require(_0x5d94('0x2'));var BPromise=require('bluebird');var rs=require(_0x5d94('0x3'));var fs=require('fs');var Redis=require(_0x5d94('0x4'));var db=require(_0x5d94('0x5'))['db'];var utils=require(_0x5d94('0x6'));var logger=require(_0x5d94('0x7'))('rpc');var config=require(_0x5d94('0x8'));var jayson=require(_0x5d94('0x9'));var client=jayson[_0x5d94('0xa')][_0x5d94('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3635a6,_0x54af94,_0x430607){return new BPromise(function(_0x34fa30,_0x1117dc){return client['request'](_0x3635a6,_0x430607)[_0x5d94('0xc')](function(_0x3dd79e){logger[_0x5d94('0xd')](_0x5d94('0xe'),_0x54af94,'request\x20sent');logger[_0x5d94('0xf')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x54af94,_0x5d94('0x10'),JSON[_0x5d94('0x11')](_0x3dd79e));if(_0x3dd79e[_0x5d94('0x12')]){if(_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x13')]===0x1f4){logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x14')]);return _0x1117dc(_0x3dd79e[_0x5d94('0x12')]['message']);}logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x3dd79e['error'][_0x5d94('0x14')]);return _0x34fa30(_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x14')]);}else{logger[_0x5d94('0xd')](_0x5d94('0xe'),_0x54af94,_0x5d94('0x10'));_0x34fa30(_0x3dd79e['result']['message']);}})['catch'](function(_0x38d3c7){logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x38d3c7);_0x1117dc(_0x38d3c7);});});}
\ No newline at end of file
index 0b651f1..67e35a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['isAuthenticated','index','get','/:id','show','getMessages','/:id/download','download','post','create','addMessage','sms','smsinteraction:addtags','addTags','put','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller'];(function(_0x193ef8,_0x1127ab){var _0x52617c=function(_0x5b8c4a){while(--_0x5b8c4a){_0x193ef8['push'](_0x193ef8['shift']());}};_0x52617c(++_0x1127ab);}(_0x3266,0x6a));var _0x6326=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0x3266[_0x4c6d6f];return _0x2d4478;};'use strict';var multer=require(_0x6326('0x0'));var util=require(_0x6326('0x1'));var path=require(_0x6326('0x2'));var timeout=require(_0x6326('0x3'));var express=require(_0x6326('0x4'));var router=express[_0x6326('0x5')]();var fs_extra=require(_0x6326('0x6'));var auth=require(_0x6326('0x7'));var interaction=require(_0x6326('0x8'));var config=require('../../config/environment');var controller=require(_0x6326('0x9'));router['get']('/',auth[_0x6326('0xa')](),controller[_0x6326('0xb')]);router[_0x6326('0xc')]('/describe',auth[_0x6326('0xa')](),controller['describe']);router[_0x6326('0xc')](_0x6326('0xd'),auth[_0x6326('0xa')](),controller[_0x6326('0xe')]);router[_0x6326('0xc')]('/:id/messages',auth[_0x6326('0xa')](),controller[_0x6326('0xf')]);router[_0x6326('0xc')](_0x6326('0x10'),auth[_0x6326('0xa')](),controller[_0x6326('0x11')]);router[_0x6326('0x12')]('/',auth[_0x6326('0xa')](),controller[_0x6326('0x13')]);router[_0x6326('0x12')]('/:id/messages',auth['isAuthenticated'](),controller[_0x6326('0x14')]);router[_0x6326('0x12')]('/:id/tags',auth[_0x6326('0xa')](),interaction['tracked'](_0x6326('0x15'),_0x6326('0x16')),controller[_0x6326('0x17')]);router[_0x6326('0x18')](_0x6326('0xd'),auth[_0x6326('0xa')](),interaction['tracked'](_0x6326('0x15'),'smsinteraction:update'),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x6326('0x15'),_0x6326('0x19')),controller[_0x6326('0x1a')]);router['delete']('/:id/tags',auth[_0x6326('0xa')](),controller[_0x6326('0x1b')]);module[_0x6326('0x1c')]=router;
\ No newline at end of file
+var _0x7708=['removeTags','exports','multer','util','connect-timeout','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','sms','addTags','put','delete'];(function(_0x32c61a,_0x1ae989){var _0x51d54c=function(_0x5d9375){while(--_0x5d9375){_0x32c61a['push'](_0x32c61a['shift']());}};_0x51d54c(++_0x1ae989);}(_0x7708,0x188));var _0x8770=function(_0x2b2c53,_0x4bcf9b){_0x2b2c53=_0x2b2c53-0x0;var _0x311ec2=_0x7708[_0x2b2c53];return _0x311ec2;};'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('./smsInteraction.controller');router[_0x8770('0x5')]('/',auth['isAuthenticated'](),controller[_0x8770('0x6')]);router[_0x8770('0x5')](_0x8770('0x7'),auth[_0x8770('0x8')](),controller[_0x8770('0x9')]);router[_0x8770('0x5')](_0x8770('0xa'),auth['isAuthenticated'](),controller[_0x8770('0xb')]);router[_0x8770('0x5')](_0x8770('0xc'),auth['isAuthenticated'](),controller[_0x8770('0xd')]);router[_0x8770('0x5')](_0x8770('0xe'),auth[_0x8770('0x8')](),controller['download']);router[_0x8770('0xf')]('/',auth[_0x8770('0x8')](),controller[_0x8770('0x10')]);router['post'](_0x8770('0xc'),auth[_0x8770('0x8')](),controller[_0x8770('0x11')]);router[_0x8770('0xf')](_0x8770('0x12'),auth[_0x8770('0x8')](),interaction[_0x8770('0x13')](_0x8770('0x14'),'smsinteraction:addtags'),controller[_0x8770('0x15')]);router[_0x8770('0x16')]('/:id',auth[_0x8770('0x8')](),interaction['tracked'](_0x8770('0x14'),'smsinteraction:update'),controller['update']);router['delete'](_0x8770('0xa'),auth[_0x8770('0x8')](),interaction[_0x8770('0x13')](_0x8770('0x14'),'smsinteraction:destroy'),controller['destroy']);router[_0x8770('0x17')](_0x8770('0x12'),auth[_0x8770('0x8')](),controller[_0x8770('0x18')]);module[_0x8770('0x19')]=router;
\ No newline at end of file
index d69cad8..a6c26d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254a=['sequelize','moment','exports','DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x48f583,_0xfd71d9){var _0x2306c3=function(_0x167c05){while(--_0x167c05){_0x48f583['push'](_0x48f583['shift']());}};_0x2306c3(++_0xfd71d9);}(_0x254a,0x138));var _0xa254=function(_0x2b84d5,_0x428914){_0x2b84d5=_0x2b84d5-0x0;var _0x51452a=_0x254a[_0x2b84d5];return _0x51452a;};'use strict';var Sequelize=require(_0xa254('0x0'));var moment=require(_0xa254('0x1'));module[_0xa254('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa254('0x3')]},'disposition':{'type':Sequelize[_0xa254('0x4')]},'secondDisposition':{'type':Sequelize[_0xa254('0x4')]},'thirdDisposition':{'type':Sequelize[_0xa254('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xa254('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xa254('0x5')]('in',_0xa254('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa254('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa254('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf360=['exports','DATE','STRING','ENUM','out','BOOLEAN','sequelize','moment'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xf360,0x9e));var _0x0f36=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xf360[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x0f36('0x0'));var moment=require(_0x0f36('0x1'));module[_0x0f36('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x0f36('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0f36('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0f36('0x4')]},'note':{'type':Sequelize[_0x0f36('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x0f36('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x0f36('0x5')]('in',_0x0f36('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x0f36('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x0f36('0x5')]('in',_0x0f36('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x0f36('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 4d2c8b0..63f4382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbb2=['model','SmsInteraction','rawAttributes','query','intersection','attributes','fields','include','find','create','body','params','describe','addMessage','ids','omit','getMessages','keys','SmsMessage','filters','hasOwnProperty','nolimit','order','sort','pick','where','SmsInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','addTags','setTags','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','root','server','tmp','join','format','transcript-%d-%s.zip','push','User','CmContact','Contact','firstName','lastName','Messages','createdAt','read','SmsAccount','Owner','fullname','get','mkdirSync','Account','N.A.','closed','closedAt','disposition','direction','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','unlinkSync','zip-dir','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','name','send','index','fieldName','key','catch','show'];(function(_0x522078,_0x5b69ee){var _0x55d7d1=function(_0x1d25f7){while(--_0x1d25f7){_0x522078['push'](_0x522078['shift']());}};_0x55d7d1(++_0x5b69ee);}(_0xfbb2,0xc7));var _0x2fbb=function(_0x2b9ac8,_0xf820cb){_0x2b9ac8=_0x2b9ac8-0x0;var _0x3ceea9=_0xfbb2[_0x2b9ac8];return _0x3ceea9;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x2fbb('0x0'));var moment=require(_0x2fbb('0x1'));var BPromise=require(_0x2fbb('0x2'));var util=require(_0x2fbb('0x3'));var path=require(_0x2fbb('0x4'));var ejs=require(_0x2fbb('0x5'));var fs=require('fs');var _=require(_0x2fbb('0x6'));var Redis=require(_0x2fbb('0x7'));var interaction=require(_0x2fbb('0x8'));var qs=require(_0x2fbb('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x2fbb('0xa'))(_0x2fbb('0xb'));var config=require('../../config/environment');var db=require(_0x2fbb('0xc'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x2fbb('0xd'),'port':0x18eb});var socket=require(_0x2fbb('0xe'))(new Redis(config['redis']));require('./smsInteraction.socket')[_0x2fbb('0xf')](socket);function respondWithStatusCode(_0x51f86e,_0xb7b608){_0xb7b608=_0xb7b608||0xcc;return function(_0x151819){if(_0x151819){return _0x51f86e[_0x2fbb('0x10')](_0xb7b608);}return _0x51f86e[_0x2fbb('0x11')](_0xb7b608)[_0x2fbb('0x12')]();};}function respondWithResult(_0x3ff335,_0xe31e41){_0xe31e41=_0xe31e41||0xc8;return function(_0x187282){if(_0x187282){return _0x3ff335[_0x2fbb('0x11')](_0xe31e41)[_0x2fbb('0x13')](_0x187282);}};}function respondWithFilteredResult(_0x1c631b,_0xe77520){return function(_0x51342b){if(_0x51342b){var _0x41f9bb=typeof _0xe77520[_0x2fbb('0x14')]===_0x2fbb('0x15')&&typeof _0xe77520[_0x2fbb('0x16')]===_0x2fbb('0x15');var _0x81959a=_0x51342b['count'];var _0x474acb=_0x41f9bb?0x0:_0xe77520[_0x2fbb('0x14')];var _0x3ac70e=_0x41f9bb?_0x51342b[_0x2fbb('0x17')]:_0xe77520['offset']+_0xe77520['limit'];var _0x27dd19;if(_0x3ac70e>=_0x81959a){_0x3ac70e=_0x81959a;_0x27dd19=0xc8;}else{_0x27dd19=0xce;}_0x1c631b['status'](_0x27dd19);return _0x1c631b[_0x2fbb('0x18')](_0x2fbb('0x19'),_0x474acb+'-'+_0x3ac70e+'/'+_0x81959a)[_0x2fbb('0x13')](_0x51342b);}return null;};}function saveUpdates(_0x6398b){return function(_0x30b13c){if(_0x30b13c){return _0x30b13c[_0x2fbb('0x1a')](_0x6398b)[_0x2fbb('0x1b')](function(_0x51f1d4){return _0x51f1d4;});}return null;};}function removeEntity(_0x221906){return function(_0x14857d){if(_0x14857d){return _0x14857d[_0x2fbb('0x1c')]()[_0x2fbb('0x1b')](function(){_0x221906[_0x2fbb('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdefae8){return function(_0x172c6b){if(!_0x172c6b){_0xdefae8[_0x2fbb('0x10')](0x194);}return _0x172c6b;};}function handleError(_0x58a07a,_0x1b8855){_0x1b8855=_0x1b8855||0x1f4;return function(_0x30da53){logger[_0x2fbb('0x1d')](_0x30da53['stack']);if(_0x30da53[_0x2fbb('0x1e')]){delete _0x30da53[_0x2fbb('0x1e')];}_0x58a07a[_0x2fbb('0x11')](_0x1b8855)[_0x2fbb('0x1f')](_0x30da53);};}exports[_0x2fbb('0x20')]=function(_0x1448ae,_0xb244a7){var _0x1e4efa={};var _0x3361dc=_['map'](db['SmsInteraction']['rawAttributes'],function(_0x25ec30){return{'name':_0x25ec30[_0x2fbb('0x21')],'type':_0x25ec30['type'][_0x2fbb('0x22')]};});_0x1e4efa=qs['getOptions'](_0x3361dc,_0x1448ae);return interaction['findAll']('sms',_0x1448ae['query'],_0x1448ae['user'],_0x1e4efa,_0x3361dc)[_0x2fbb('0x1b')](respondWithFilteredResult(_0xb244a7,_0x1e4efa))[_0x2fbb('0x23')](handleError(_0xb244a7,null));};exports[_0x2fbb('0x24')]=function(_0x335c47,_0x490ce3){var _0x1be210={'raw':![],'where':{'id':_0x335c47['params']['id']}},_0x4150cf={};_0x4150cf[_0x2fbb('0x25')]=_['keys'](db[_0x2fbb('0x26')][_0x2fbb('0x27')]);_0x4150cf[_0x2fbb('0x28')]=_['keys'](_0x335c47[_0x2fbb('0x28')]);_0x4150cf['filters']=_[_0x2fbb('0x29')](_0x4150cf['model'],_0x4150cf[_0x2fbb('0x28')]);_0x1be210[_0x2fbb('0x2a')]=_[_0x2fbb('0x29')](_0x4150cf['model'],qs['fields'](_0x335c47[_0x2fbb('0x28')][_0x2fbb('0x2b')]));_0x1be210[_0x2fbb('0x2a')]=_0x1be210[_0x2fbb('0x2a')]['length']?_0x1be210[_0x2fbb('0x2a')]:_0x4150cf[_0x2fbb('0x25')];if(_0x335c47['query']['includeAll']){_0x1be210[_0x2fbb('0x2c')]=[{'all':!![]}];}_0x1be210=_['merge']({},_0x1be210,_0x335c47['options']);return db[_0x2fbb('0x26')][_0x2fbb('0x2d')](_0x1be210)[_0x2fbb('0x1b')](handleEntityNotFound(_0x490ce3,null))['then'](respondWithResult(_0x490ce3,null))[_0x2fbb('0x23')](handleError(_0x490ce3,null));};exports[_0x2fbb('0x2e')]=function(_0x4de573,_0x49778d){return db[_0x2fbb('0x26')][_0x2fbb('0x2e')](_0x4de573['body'],{})['then'](respondWithResult(_0x49778d,0xc9))['catch'](handleError(_0x49778d,null));};exports[_0x2fbb('0x1a')]=function(_0x4055e6,_0x421f28){if(_0x4055e6[_0x2fbb('0x2f')]['id']){delete _0x4055e6[_0x2fbb('0x2f')]['id'];}return db[_0x2fbb('0x26')][_0x2fbb('0x2d')]({'where':{'id':_0x4055e6['params']['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x421f28,null))[_0x2fbb('0x1b')](saveUpdates(_0x4055e6[_0x2fbb('0x2f')],null))[_0x2fbb('0x1b')](respondWithResult(_0x421f28,null))['catch'](handleError(_0x421f28,null));};exports[_0x2fbb('0x1c')]=function(_0x194813,_0x2d1206){return db[_0x2fbb('0x26')][_0x2fbb('0x2d')]({'where':{'id':_0x194813[_0x2fbb('0x30')]['id']}})['then'](handleEntityNotFound(_0x2d1206,null))['then'](removeEntity(_0x2d1206,null))[_0x2fbb('0x23')](handleError(_0x2d1206,null));};exports[_0x2fbb('0x31')]=function(_0x4e2dda,_0x4f3147){return db['SmsInteraction'][_0x2fbb('0x31')]()[_0x2fbb('0x1b')](respondWithResult(_0x4f3147,null))['catch'](handleError(_0x4f3147,null));};exports[_0x2fbb('0x32')]=function(_0x3799ff,_0x4be01d){return db['SmsMessage']['find']({'where':{'id':_0x3799ff[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x4be01d,null))['then'](function(_0x23e47a){if(_0x23e47a){return _0x23e47a[_0x2fbb('0x32')](_0x3799ff[_0x2fbb('0x2f')][_0x2fbb('0x33')],_[_0x2fbb('0x34')](_0x3799ff[_0x2fbb('0x2f')],[_0x2fbb('0x33'),'id'])||{});}})[_0x2fbb('0x1b')](respondWithResult(_0x4be01d,null))[_0x2fbb('0x23')](handleError(_0x4be01d,null));};exports[_0x2fbb('0x35')]=function(_0x92b68c,_0x49c90a){var _0x177e93={'raw':![],'where':{}};var _0x4d0816={};var _0x3f116e={'count':0x0,'rows':[]};return db[_0x2fbb('0x26')]['findOne']({'where':{'id':_0x92b68c[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x49c90a,null))['then'](function(_0x93dd3b){if(_0x93dd3b){_0x4d0816['model']=_[_0x2fbb('0x36')](db[_0x2fbb('0x37')]['rawAttributes']);_0x4d0816[_0x2fbb('0x28')]=_[_0x2fbb('0x36')](_0x92b68c['query']);_0x4d0816[_0x2fbb('0x38')]=_[_0x2fbb('0x29')](_0x4d0816['model'],_0x4d0816[_0x2fbb('0x28')]);_0x177e93[_0x2fbb('0x2a')]=_['intersection'](_0x4d0816[_0x2fbb('0x25')],qs[_0x2fbb('0x2b')](_0x92b68c['query'][_0x2fbb('0x2b')]));_0x177e93['attributes']=_0x177e93[_0x2fbb('0x2a')]['length']?_0x177e93[_0x2fbb('0x2a')]:_0x4d0816[_0x2fbb('0x25')];if(!_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x39')](_0x2fbb('0x3a'))){_0x177e93['limit']=qs[_0x2fbb('0x16')](_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x16')]);_0x177e93[_0x2fbb('0x14')]=qs[_0x2fbb('0x14')](_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x14')]);}_0x177e93[_0x2fbb('0x3b')]=qs[_0x2fbb('0x3c')](_0x92b68c['query'][_0x2fbb('0x3c')]);_0x177e93['where']=qs[_0x2fbb('0x38')](_[_0x2fbb('0x3d')](_0x92b68c[_0x2fbb('0x28')],_0x4d0816[_0x2fbb('0x38')]));_0x177e93[_0x2fbb('0x3e')][_0x2fbb('0x3f')]=_0x93dd3b['id'];if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x40')]){_0x177e93[_0x2fbb('0x3e')]=_['merge'](_0x177e93['where'],{'$or':_[_0x2fbb('0x41')](_0x177e93[_0x2fbb('0x2a')],function(_0x2f9d15){var _0x3ba892={};_0x3ba892[_0x2f9d15]={'$like':'%'+_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x40')]+'%'};return _0x3ba892;})});}if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x42')]){var _0x1d41ec=_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x42')][_0x2fbb('0x43')](',');var _0x17442c={};_0x17442c[_0x1d41ec[0x0]]={'$gte':moment(_0x1d41ec[0x1])['format'](_0x2fbb('0x44'))};_0x177e93[_0x2fbb('0x3e')]=_['merge'](_0x177e93[_0x2fbb('0x3e')],_0x17442c);}_0x177e93=_['merge']({},_0x177e93,_0x92b68c['options']);return db[_0x2fbb('0x37')][_0x2fbb('0x17')]({'where':_0x177e93[_0x2fbb('0x3e')]})[_0x2fbb('0x1b')](function(_0x5919ae){_0x3f116e[_0x2fbb('0x17')]=_0x5919ae;if(_0x92b68c[_0x2fbb('0x28')][_0x2fbb('0x45')]){_0x177e93[_0x2fbb('0x2c')]=[{'all':!![]}];}return db[_0x2fbb('0x37')][_0x2fbb('0x46')](_0x177e93);})[_0x2fbb('0x1b')](function(_0x4dd7d1){_0x3f116e[_0x2fbb('0x47')]=_0x4dd7d1;return _0x3f116e;});}})[_0x2fbb('0x1b')](respondWithFilteredResult(_0x49c90a,_0x177e93))[_0x2fbb('0x23')](handleError(_0x49c90a,null));};exports[_0x2fbb('0x48')]=function(_0x2ca841,_0x1d8fc1){return db['SmsInteraction'][_0x2fbb('0x2d')]({'where':{'id':_0x2ca841[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x1d8fc1,null))[_0x2fbb('0x1b')](function(_0x4b8187){if(_0x4b8187){return _0x4b8187[_0x2fbb('0x49')](_0x2ca841[_0x2fbb('0x2f')][_0x2fbb('0x33')],_[_0x2fbb('0x34')](_0x2ca841['body'],[_0x2fbb('0x33'),'id'])||{})['spread'](function(){return db[_0x2fbb('0x4a')]['findAll']({'attributes':['id',_0x2fbb('0x1e'),_0x2fbb('0x4b')],'where':{'id':_0x2ca841[_0x2fbb('0x2f')][_0x2fbb('0x33')]}});})[_0x2fbb('0x1b')](function(_0x13be4a){socket[_0x2fbb('0x4c')](_0x2fbb('0x4d'),{'id':Number(_0x2ca841['params']['id']),'tags':_0x13be4a||[]});return{'id':Number(_0x2ca841[_0x2fbb('0x30')]['id']),'tags':_0x13be4a||[]};});}})[_0x2fbb('0x1b')](respondWithResult(_0x1d8fc1,null))[_0x2fbb('0x23')](handleError(_0x1d8fc1,null));};exports[_0x2fbb('0x4e')]=function(_0x13bea7,_0x35d171){return db['SmsInteraction'][_0x2fbb('0x2d')]({'where':{'id':_0x13bea7[_0x2fbb('0x30')]['id']}})[_0x2fbb('0x1b')](handleEntityNotFound(_0x35d171,null))[_0x2fbb('0x1b')](function(_0x28ed75){if(_0x28ed75){return _0x28ed75[_0x2fbb('0x4e')](_0x13bea7['query'][_0x2fbb('0x33')]);}})[_0x2fbb('0x1b')](respondWithStatusCode(_0x35d171,null))['catch'](handleError(_0x35d171,null));};exports[_0x2fbb('0x4f')]=function(_0xbfc6f7,_0x29726f){var _0x3ae1b7=moment()[_0x2fbb('0x50')]()[_0x2fbb('0x51')]();var _0x3db60e=path['join'](config[_0x2fbb('0x52')],_0x2fbb('0x53'),'files',_0x2fbb('0x54'));var _0xeb88e0=path[_0x2fbb('0x55')](_0x3db60e,_0x3ae1b7);var _0x501e1b=util[_0x2fbb('0x56')](_0x2fbb('0x57'),_0xbfc6f7[_0x2fbb('0x30')]['id'],_0x3ae1b7);var _0x60c9ab=path['join'](_0x3db60e,_0x501e1b);var _0xd69fd3=[];_0xd69fd3[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x59')],'as':_0x2fbb('0x59'),'attributes':['id','fullname'],'raw':!![]});_0xd69fd3[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x5a')],'as':_0x2fbb('0x5b'),'attributes':['id',_0x2fbb('0x5c'),_0x2fbb('0x5d')],'raw':!![]});var _0x21ea9e=[{'model':db[_0x2fbb('0x37')],'as':_0x2fbb('0x5e'),'attributes':['id',_0x2fbb('0x2f'),_0x2fbb('0x5f'),'direction','secret',_0x2fbb('0x60')],'include':_0xd69fd3}];_0x21ea9e[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x61')],'as':'Account','attributes':['id','name']});_0x21ea9e[_0x2fbb('0x58')]({'model':db[_0x2fbb('0x59')],'as':_0x2fbb('0x62'),'attributes':['id',_0x2fbb('0x63')]});return db[_0x2fbb('0x26')]['find']({'where':{'id':_0xbfc6f7[_0x2fbb('0x30')]['id']},'include':_0x21ea9e})['then'](handleEntityNotFound(_0x29726f,null))[_0x2fbb('0x1b')](function(_0x469035){if(_0x469035){var _0xededa8=_0x469035[_0x2fbb('0x64')]({'plain':!![]});fs[_0x2fbb('0x65')](_0xeb88e0);var _0x32f715={'channel':'Sms','account':_0xededa8[_0x2fbb('0x66')][_0x2fbb('0x1e')],'agent':_0xededa8['Owner']?_0xededa8[_0x2fbb('0x62')][_0x2fbb('0x63')]:_0x2fbb('0x67'),'createdAt':moment(_0xededa8[_0x2fbb('0x5f')])[_0x2fbb('0x56')](_0x2fbb('0x44'))['toString'](),'closedAt':_0xededa8[_0x2fbb('0x68')]?moment(_0xededa8[_0x2fbb('0x69')])[_0x2fbb('0x56')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2fbb('0x51')]():'','disposition':_0xededa8[_0x2fbb('0x6a')],'messages':_(_0xededa8['Messages'])[_0x2fbb('0x40')]({'secret':![]})[_0x2fbb('0x41')](function(_0x5808cf){return{'date':moment(_0x5808cf[_0x2fbb('0x5f')])[_0x2fbb('0x56')](_0x2fbb('0x44'))[_0x2fbb('0x51')](),'sender':_0x5808cf[_0x2fbb('0x6b')]==='out'?_0x5808cf[_0x2fbb('0x59')]?_0x5808cf['User']['fullname']:'System':_0x5808cf[_0x2fbb('0x5b')]['firstName']+(_0x5808cf[_0x2fbb('0x5b')]['lastName']?'\x20'+_0x5808cf[_0x2fbb('0x5b')][_0x2fbb('0x5d')]:''),'body':_0x5808cf[_0x2fbb('0x2f')],'direction':_0x5808cf[_0x2fbb('0x6b')]==='out'?'A':'C','secret':_0x5808cf[_0x2fbb('0x6c')],'read':_0x5808cf[_0x2fbb('0x60')]};})[_0x2fbb('0x6d')]()};return ejs[_0x2fbb('0x6e')](path[_0x2fbb('0x55')](config[_0x2fbb('0x52')],'server',_0x2fbb('0x6f'),_0x2fbb('0x70')),{'interaction':_0x32f715})[_0x2fbb('0x1b')](function(_0x3142f4){var _0x492a94=path[_0x2fbb('0x55')](_0xeb88e0,_0x2fbb('0x71')+_0xededa8['id']+'-'+_0x3ae1b7+_0x2fbb('0x72'));var _0x4aa354={'path':_0x492a94,'channel':_0x2fbb('0x73'),'interactionId':_0xededa8['id']};return pdf[_0x2fbb('0x74')](_0x3142f4,_0x4aa354);})[_0x2fbb('0x1b')](function(){return new BPromise(function(_0x3dd350,_0x1a9194){zipdir(_0xeb88e0,{'saveTo':_0x60c9ab},function(_0xd85558,_0x2e3b73){if(_0xd85558)return _0x1a9194(_0xd85558);return _0x3dd350(_0x2e3b73);});})[_0x2fbb('0x1b')](function(){return new BPromise(function(_0x7d69d,_0x339915){rimraf(_0xeb88e0,function(_0x30d79c){if(_0x30d79c)_0x339915(_0x30d79c);return _0x7d69d();});});})[_0x2fbb('0x1b')](function(){return _0x29726f[_0x2fbb('0x4f')](_0x60c9ab,_0x501e1b,function(_0x582167){if(_0x582167){console['log']('err',_0x582167);}else{fs[_0x2fbb('0x75')](_0x60c9ab);}});});});}else{return _0x29726f['sendStatus'](0xc8);}})[_0x2fbb('0x23')](handleError(_0x29726f,null));};
\ No newline at end of file
+var _0xbc07=['setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','root','server','join','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Account','Owner','mkdirSync','Sms','N.A.','toString','closed','closedAt','disposition','out','System','value','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','path','ejs','lodash','ioredis','../../components/parsers/qs','api','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','stack','name','send','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','sms','query','user','catch','show','params','model','keys','intersection','fields','attributes','length','include','merge','options','find','create','body','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','filters','hasOwnProperty','nolimit','sort','where','SmsInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','addTags'];(function(_0xb71d72,_0x5394f1){var _0x37ba52=function(_0x2f6e70){while(--_0x2f6e70){_0xb71d72['push'](_0xb71d72['shift']());}};_0x37ba52(++_0x5394f1);}(_0xbc07,0xa3));var _0x7bc0=function(_0xdb72a0,_0x50a92b){_0xdb72a0=_0xdb72a0-0x0;var _0x245ccd=_0xbc07[_0xdb72a0];return _0x245ccd;};'use strict';var rimraf=require(_0x7bc0('0x0'));var zipdir=require(_0x7bc0('0x1'));var moment=require(_0x7bc0('0x2'));var BPromise=require(_0x7bc0('0x3'));var util=require('util');var path=require(_0x7bc0('0x4'));var ejs=require(_0x7bc0('0x5'));var fs=require('fs');var _=require(_0x7bc0('0x6'));var Redis=require(_0x7bc0('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x7bc0('0x8'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x7bc0('0x9'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x7bc0('0xa')]=_[_0x7bc0('0xb')](config[_0x7bc0('0xa')],{'host':_0x7bc0('0xc'),'port':0x18eb});var socket=require(_0x7bc0('0xd'))(new Redis(config[_0x7bc0('0xa')]));require(_0x7bc0('0xe'))[_0x7bc0('0xf')](socket);function respondWithStatusCode(_0x824f58,_0x55ac0e){_0x55ac0e=_0x55ac0e||0xcc;return function(_0x33be5f){if(_0x33be5f){return _0x824f58[_0x7bc0('0x10')](_0x55ac0e);}return _0x824f58[_0x7bc0('0x11')](_0x55ac0e)['end']();};}function respondWithResult(_0x23b6c1,_0x93738d){_0x93738d=_0x93738d||0xc8;return function(_0x331a8f){if(_0x331a8f){return _0x23b6c1['status'](_0x93738d)[_0x7bc0('0x12')](_0x331a8f);}};}function respondWithFilteredResult(_0xb25c7e,_0x25d311){return function(_0x188c76){if(_0x188c76){var _0x89aa02=typeof _0x25d311[_0x7bc0('0x13')]===_0x7bc0('0x14')&&typeof _0x25d311[_0x7bc0('0x15')]===_0x7bc0('0x14');var _0xe62f32=_0x188c76[_0x7bc0('0x16')];var _0x38558a=_0x89aa02?0x0:_0x25d311[_0x7bc0('0x13')];var _0x8428a=_0x89aa02?_0x188c76[_0x7bc0('0x16')]:_0x25d311[_0x7bc0('0x13')]+_0x25d311[_0x7bc0('0x15')];var _0x26fe82;if(_0x8428a>=_0xe62f32){_0x8428a=_0xe62f32;_0x26fe82=0xc8;}else{_0x26fe82=0xce;}_0xb25c7e['status'](_0x26fe82);return _0xb25c7e['set'](_0x7bc0('0x17'),_0x38558a+'-'+_0x8428a+'/'+_0xe62f32)['json'](_0x188c76);}return null;};}function saveUpdates(_0x51166f){return function(_0x186c81){if(_0x186c81){return _0x186c81[_0x7bc0('0x18')](_0x51166f)[_0x7bc0('0x19')](function(_0x2c11d5){return _0x2c11d5;});}return null;};}function removeEntity(_0x3ae5b5){return function(_0x2d3615){if(_0x2d3615){return _0x2d3615[_0x7bc0('0x1a')]()[_0x7bc0('0x19')](function(){_0x3ae5b5[_0x7bc0('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc68638){return function(_0x577050){if(!_0x577050){_0xc68638[_0x7bc0('0x10')](0x194);}return _0x577050;};}function handleError(_0x1aa96f,_0xfc76aa){_0xfc76aa=_0xfc76aa||0x1f4;return function(_0x323620){logger['error'](_0x323620[_0x7bc0('0x1b')]);if(_0x323620[_0x7bc0('0x1c')]){delete _0x323620['name'];}_0x1aa96f[_0x7bc0('0x11')](_0xfc76aa)[_0x7bc0('0x1d')](_0x323620);};}exports['index']=function(_0x7d8656,_0x235e5d){var _0x2e21f9={};var _0x1cb148=_[_0x7bc0('0x1e')](db[_0x7bc0('0x1f')][_0x7bc0('0x20')],function(_0x222864){return{'name':_0x222864[_0x7bc0('0x21')],'type':_0x222864[_0x7bc0('0x22')][_0x7bc0('0x23')]};});_0x2e21f9=qs[_0x7bc0('0x24')](_0x1cb148,_0x7d8656);return interaction['findAll'](_0x7bc0('0x25'),_0x7d8656[_0x7bc0('0x26')],_0x7d8656[_0x7bc0('0x27')],_0x2e21f9,_0x1cb148)[_0x7bc0('0x19')](respondWithFilteredResult(_0x235e5d,_0x2e21f9))[_0x7bc0('0x28')](handleError(_0x235e5d,null));};exports[_0x7bc0('0x29')]=function(_0x191eb1,_0x52bf19){var _0x51df5b={'raw':![],'where':{'id':_0x191eb1[_0x7bc0('0x2a')]['id']}},_0x419fae={};_0x419fae[_0x7bc0('0x2b')]=_[_0x7bc0('0x2c')](db[_0x7bc0('0x1f')][_0x7bc0('0x20')]);_0x419fae['query']=_[_0x7bc0('0x2c')](_0x191eb1[_0x7bc0('0x26')]);_0x419fae['filters']=_[_0x7bc0('0x2d')](_0x419fae[_0x7bc0('0x2b')],_0x419fae[_0x7bc0('0x26')]);_0x51df5b['attributes']=_[_0x7bc0('0x2d')](_0x419fae['model'],qs[_0x7bc0('0x2e')](_0x191eb1[_0x7bc0('0x26')][_0x7bc0('0x2e')]));_0x51df5b[_0x7bc0('0x2f')]=_0x51df5b[_0x7bc0('0x2f')][_0x7bc0('0x30')]?_0x51df5b[_0x7bc0('0x2f')]:_0x419fae[_0x7bc0('0x2b')];if(_0x191eb1[_0x7bc0('0x26')]['includeAll']){_0x51df5b[_0x7bc0('0x31')]=[{'all':!![]}];}_0x51df5b=_[_0x7bc0('0x32')]({},_0x51df5b,_0x191eb1[_0x7bc0('0x33')]);return db['SmsInteraction'][_0x7bc0('0x34')](_0x51df5b)[_0x7bc0('0x19')](handleEntityNotFound(_0x52bf19,null))[_0x7bc0('0x19')](respondWithResult(_0x52bf19,null))[_0x7bc0('0x28')](handleError(_0x52bf19,null));};exports[_0x7bc0('0x35')]=function(_0x3f24fe,_0x554f71){return db[_0x7bc0('0x1f')][_0x7bc0('0x35')](_0x3f24fe[_0x7bc0('0x36')],{})[_0x7bc0('0x19')](respondWithResult(_0x554f71,0xc9))[_0x7bc0('0x28')](handleError(_0x554f71,null));};exports['update']=function(_0x562425,_0x41107e){if(_0x562425['body']['id']){delete _0x562425[_0x7bc0('0x36')]['id'];}return db[_0x7bc0('0x1f')]['find']({'where':{'id':_0x562425['params']['id']}})[_0x7bc0('0x19')](handleEntityNotFound(_0x41107e,null))[_0x7bc0('0x19')](saveUpdates(_0x562425[_0x7bc0('0x36')],null))[_0x7bc0('0x19')](respondWithResult(_0x41107e,null))['catch'](handleError(_0x41107e,null));};exports['destroy']=function(_0x14dd10,_0x518464){return db[_0x7bc0('0x1f')]['find']({'where':{'id':_0x14dd10[_0x7bc0('0x2a')]['id']}})[_0x7bc0('0x19')](handleEntityNotFound(_0x518464,null))[_0x7bc0('0x19')](removeEntity(_0x518464,null))[_0x7bc0('0x28')](handleError(_0x518464,null));};exports[_0x7bc0('0x37')]=function(_0x3bab35,_0x4eafce){return db[_0x7bc0('0x1f')][_0x7bc0('0x37')]()[_0x7bc0('0x19')](respondWithResult(_0x4eafce,null))['catch'](handleError(_0x4eafce,null));};exports[_0x7bc0('0x38')]=function(_0x3692b2,_0x2cfd16){return db[_0x7bc0('0x39')][_0x7bc0('0x34')]({'where':{'id':_0x3692b2[_0x7bc0('0x2a')]['id']}})[_0x7bc0('0x19')](handleEntityNotFound(_0x2cfd16,null))[_0x7bc0('0x19')](function(_0x4cf528){if(_0x4cf528){return _0x4cf528['addMessage'](_0x3692b2[_0x7bc0('0x36')][_0x7bc0('0x3a')],_[_0x7bc0('0x3b')](_0x3692b2[_0x7bc0('0x36')],[_0x7bc0('0x3a'),'id'])||{});}})[_0x7bc0('0x19')](respondWithResult(_0x2cfd16,null))['catch'](handleError(_0x2cfd16,null));};exports[_0x7bc0('0x3c')]=function(_0xc0f40,_0x207c98){var _0x59cade={'raw':![],'where':{}};var _0x1e2260={};var _0x5c43d9={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x7bc0('0x3d')]({'where':{'id':_0xc0f40['params']['id']}})['then'](handleEntityNotFound(_0x207c98,null))[_0x7bc0('0x19')](function(_0xbf0033){if(_0xbf0033){_0x1e2260['model']=_[_0x7bc0('0x2c')](db[_0x7bc0('0x39')][_0x7bc0('0x20')]);_0x1e2260[_0x7bc0('0x26')]=_[_0x7bc0('0x2c')](_0xc0f40[_0x7bc0('0x26')]);_0x1e2260[_0x7bc0('0x3e')]=_[_0x7bc0('0x2d')](_0x1e2260[_0x7bc0('0x2b')],_0x1e2260[_0x7bc0('0x26')]);_0x59cade[_0x7bc0('0x2f')]=_['intersection'](_0x1e2260['model'],qs[_0x7bc0('0x2e')](_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x2e')]));_0x59cade[_0x7bc0('0x2f')]=_0x59cade[_0x7bc0('0x2f')][_0x7bc0('0x30')]?_0x59cade['attributes']:_0x1e2260['model'];if(!_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x3f')](_0x7bc0('0x40'))){_0x59cade['limit']=qs[_0x7bc0('0x15')](_0xc0f40[_0x7bc0('0x26')]['limit']);_0x59cade[_0x7bc0('0x13')]=qs[_0x7bc0('0x13')](_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x13')]);}_0x59cade['order']=qs['sort'](_0xc0f40['query'][_0x7bc0('0x41')]);_0x59cade[_0x7bc0('0x42')]=qs[_0x7bc0('0x3e')](_['pick'](_0xc0f40[_0x7bc0('0x26')],_0x1e2260[_0x7bc0('0x3e')]));_0x59cade[_0x7bc0('0x42')][_0x7bc0('0x43')]=_0xbf0033['id'];if(_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x44')]){_0x59cade[_0x7bc0('0x42')]=_[_0x7bc0('0x32')](_0x59cade['where'],{'$or':_[_0x7bc0('0x1e')](_0x59cade[_0x7bc0('0x2f')],function(_0x177d0b){var _0x49b24b={};_0x49b24b[_0x177d0b]={'$like':'%'+_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x44')]+'%'};return _0x49b24b;})});}if(_0xc0f40['query'][_0x7bc0('0x45')]){var _0x33824c=_0xc0f40[_0x7bc0('0x26')]['$gte'][_0x7bc0('0x46')](',');var _0x49d002={};_0x49d002[_0x33824c[0x0]]={'$gte':moment(_0x33824c[0x1])[_0x7bc0('0x47')](_0x7bc0('0x48'))};_0x59cade[_0x7bc0('0x42')]=_['merge'](_0x59cade['where'],_0x49d002);}_0x59cade=_[_0x7bc0('0x32')]({},_0x59cade,_0xc0f40[_0x7bc0('0x33')]);return db[_0x7bc0('0x39')][_0x7bc0('0x16')]({'where':_0x59cade[_0x7bc0('0x42')]})[_0x7bc0('0x19')](function(_0x19fbca){_0x5c43d9[_0x7bc0('0x16')]=_0x19fbca;if(_0xc0f40[_0x7bc0('0x26')][_0x7bc0('0x49')]){_0x59cade['include']=[{'all':!![]}];}return db['SmsMessage'][_0x7bc0('0x4a')](_0x59cade);})['then'](function(_0x3bb715){_0x5c43d9[_0x7bc0('0x4b')]=_0x3bb715;return _0x5c43d9;});}})[_0x7bc0('0x19')](respondWithFilteredResult(_0x207c98,_0x59cade))[_0x7bc0('0x28')](handleError(_0x207c98,null));};exports[_0x7bc0('0x4c')]=function(_0x30c9d5,_0x1df093){return db[_0x7bc0('0x1f')]['find']({'where':{'id':_0x30c9d5[_0x7bc0('0x2a')]['id']}})[_0x7bc0('0x19')](handleEntityNotFound(_0x1df093,null))[_0x7bc0('0x19')](function(_0x4470e9){if(_0x4470e9){return _0x4470e9[_0x7bc0('0x4d')](_0x30c9d5[_0x7bc0('0x36')][_0x7bc0('0x3a')],_[_0x7bc0('0x3b')](_0x30c9d5['body'],['ids','id'])||{})[_0x7bc0('0x4e')](function(){return db['Tag'][_0x7bc0('0x4a')]({'attributes':['id',_0x7bc0('0x1c'),_0x7bc0('0x4f')],'where':{'id':_0x30c9d5[_0x7bc0('0x36')][_0x7bc0('0x3a')]}});})[_0x7bc0('0x19')](function(_0x5d7713){socket[_0x7bc0('0x50')](_0x7bc0('0x51'),{'id':Number(_0x30c9d5[_0x7bc0('0x2a')]['id']),'tags':_0x5d7713||[]});return{'id':Number(_0x30c9d5['params']['id']),'tags':_0x5d7713||[]};});}})[_0x7bc0('0x19')](respondWithResult(_0x1df093,null))['catch'](handleError(_0x1df093,null));};exports[_0x7bc0('0x52')]=function(_0x28dee8,_0x46a80e){return db[_0x7bc0('0x1f')]['find']({'where':{'id':_0x28dee8[_0x7bc0('0x2a')]['id']}})['then'](handleEntityNotFound(_0x46a80e,null))[_0x7bc0('0x19')](function(_0x154345){if(_0x154345){return _0x154345['removeTags'](_0x28dee8['query']['ids']);}})[_0x7bc0('0x19')](respondWithStatusCode(_0x46a80e,null))[_0x7bc0('0x28')](handleError(_0x46a80e,null));};exports[_0x7bc0('0x53')]=function(_0x33ac8b,_0x32a338){var _0xa53eb0=moment()[_0x7bc0('0x54')]()['toString']();var _0x4ca7d0=path['join'](config[_0x7bc0('0x55')],_0x7bc0('0x56'),'files','tmp');var _0x35bf7f=path[_0x7bc0('0x57')](_0x4ca7d0,_0xa53eb0);var _0xb1e938=util[_0x7bc0('0x47')](_0x7bc0('0x58'),_0x33ac8b['params']['id'],_0xa53eb0);var _0x256f77=path['join'](_0x4ca7d0,_0xb1e938);var _0x17b6f6=[];_0x17b6f6[_0x7bc0('0x59')]({'model':db[_0x7bc0('0x5a')],'as':_0x7bc0('0x5a'),'attributes':['id',_0x7bc0('0x5b')],'raw':!![]});_0x17b6f6[_0x7bc0('0x59')]({'model':db['CmContact'],'as':_0x7bc0('0x5c'),'attributes':['id',_0x7bc0('0x5d'),_0x7bc0('0x5e')],'raw':!![]});var _0x2c1726=[{'model':db[_0x7bc0('0x39')],'as':_0x7bc0('0x5f'),'attributes':['id',_0x7bc0('0x36'),_0x7bc0('0x60'),_0x7bc0('0x61'),_0x7bc0('0x62'),_0x7bc0('0x63')],'include':_0x17b6f6}];_0x2c1726[_0x7bc0('0x59')]({'model':db[_0x7bc0('0x64')],'as':_0x7bc0('0x65'),'attributes':['id','name']});_0x2c1726['push']({'model':db[_0x7bc0('0x5a')],'as':_0x7bc0('0x66'),'attributes':['id',_0x7bc0('0x5b')]});return db[_0x7bc0('0x1f')][_0x7bc0('0x34')]({'where':{'id':_0x33ac8b[_0x7bc0('0x2a')]['id']},'include':_0x2c1726})[_0x7bc0('0x19')](handleEntityNotFound(_0x32a338,null))[_0x7bc0('0x19')](function(_0x5a46d1){if(_0x5a46d1){var _0x2b3e86=_0x5a46d1['get']({'plain':!![]});fs[_0x7bc0('0x67')](_0x35bf7f);var _0x1643ac={'channel':_0x7bc0('0x68'),'account':_0x2b3e86[_0x7bc0('0x65')][_0x7bc0('0x1c')],'agent':_0x2b3e86[_0x7bc0('0x66')]?_0x2b3e86['Owner']['fullname']:_0x7bc0('0x69'),'createdAt':moment(_0x2b3e86[_0x7bc0('0x60')])[_0x7bc0('0x47')](_0x7bc0('0x48'))[_0x7bc0('0x6a')](),'closedAt':_0x2b3e86[_0x7bc0('0x6b')]?moment(_0x2b3e86[_0x7bc0('0x6c')])[_0x7bc0('0x47')]('YYYY-MM-DD\x20HH:mm:ss')[_0x7bc0('0x6a')]():'','disposition':_0x2b3e86[_0x7bc0('0x6d')],'messages':_(_0x2b3e86[_0x7bc0('0x5f')])[_0x7bc0('0x44')]({'secret':![]})[_0x7bc0('0x1e')](function(_0x3118e6){return{'date':moment(_0x3118e6[_0x7bc0('0x60')])[_0x7bc0('0x47')]('YYYY-MM-DD\x20HH:mm:ss')[_0x7bc0('0x6a')](),'sender':_0x3118e6[_0x7bc0('0x61')]===_0x7bc0('0x6e')?_0x3118e6[_0x7bc0('0x5a')]?_0x3118e6['User']['fullname']:_0x7bc0('0x6f'):_0x3118e6[_0x7bc0('0x5c')][_0x7bc0('0x5d')]+(_0x3118e6[_0x7bc0('0x5c')]['lastName']?'\x20'+_0x3118e6[_0x7bc0('0x5c')][_0x7bc0('0x5e')]:''),'body':_0x3118e6[_0x7bc0('0x36')],'direction':_0x3118e6[_0x7bc0('0x61')]==='out'?'A':'C','secret':_0x3118e6[_0x7bc0('0x62')],'read':_0x3118e6['read']};})[_0x7bc0('0x70')]()};return ejs['renderFile'](path['join'](config[_0x7bc0('0x55')],_0x7bc0('0x56'),_0x7bc0('0x71'),_0x7bc0('0x72')),{'interaction':_0x1643ac})[_0x7bc0('0x19')](function(_0x5154a0){var _0xcb2dfc=path[_0x7bc0('0x57')](_0x35bf7f,_0x7bc0('0x73')+_0x2b3e86['id']+'-'+_0xa53eb0+'.pdf');var _0x532e1c={'path':_0xcb2dfc,'channel':_0x7bc0('0x68'),'interactionId':_0x2b3e86['id']};return pdf[_0x7bc0('0x74')](_0x5154a0,_0x532e1c);})[_0x7bc0('0x19')](function(){return new BPromise(function(_0x3e94c1,_0x554c45){zipdir(_0x35bf7f,{'saveTo':_0x256f77},function(_0x48c675,_0x18a4b0){if(_0x48c675)return _0x554c45(_0x48c675);return _0x3e94c1(_0x18a4b0);});})[_0x7bc0('0x19')](function(){return new BPromise(function(_0xa1e9c2,_0x1eee5d){rimraf(_0x35bf7f,function(_0x18cb36){if(_0x18cb36)_0x1eee5d(_0x18cb36);return _0xa1e9c2();});});})[_0x7bc0('0x19')](function(){return _0x32a338[_0x7bc0('0x53')](_0x256f77,_0xb1e938,function(_0x154cd0){if(_0x154cd0){console[_0x7bc0('0x75')](_0x7bc0('0x76'),_0x154cd0);}else{fs[_0x7bc0('0x77')](_0x256f77);}});});});}else{return _0x32a338[_0x7bc0('0x10')](0xc8);}})['catch'](handleError(_0x32a338,null));};
\ No newline at end of file
index 7109b7e..bd13661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['setMaxListeners','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0x51edca,_0x18ad70){var _0x2b77ec=function(_0x55a549){while(--_0x55a549){_0x51edca['push'](_0x51edca['shift']());}};_0x2b77ec(++_0x18ad70);}(_0x47c5,0x165));var _0x547c=function(_0x581b6f,_0xb342ec){_0x581b6f=_0x581b6f-0x0;var _0x20aea0=_0x47c5[_0x581b6f];return _0x20aea0;};'use strict';var EventEmitter=require(_0x547c('0x0'));var SmsInteraction=require(_0x547c('0x1'))['db'][_0x547c('0x2')];var SmsMessage=require(_0x547c('0x1'))['db'][_0x547c('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x547c('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x547c('0x5'),'afterDestroy':_0x547c('0x6')};function emitEvent(_0x5b48c9){return function(_0x3e827e,_0x468220,_0x51ab7f){_0x3e827e[_0x547c('0x7')]({'attributes':['id'],'raw':!![]})[_0x547c('0x8')](function(_0x381f2e){_0x3e827e[_0x547c('0x9')](_0x547c('0xa'),_0x381f2e[_0x547c('0xb')](function(_0x3e2279){return{'id':_0x3e2279['id']};}));return SmsMessage[_0x547c('0xc')]({'where':{'SmsInteractionId':_0x3e827e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x547c('0x8')](function(_0x44a581){_0x3e827e[_0x547c('0x9')](_0x547c('0xd'),_0x44a581[_0x547c('0xe')]);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9+':'+_0x3e827e['id'],_0x3e827e);SmsInteractionEvents[_0x547c('0xf')](_0x5b48c9,_0x3e827e);_0x51ab7f(null);})[_0x547c('0x10')](_0x51ab7f(null));};}for(var e in events){if(events[_0x547c('0x11')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x547c('0x12')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x7334=['setMaxListeners','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction'];(function(_0x3b3ec5,_0x365d68){var _0x827b73=function(_0x181e00){while(--_0x181e00){_0x3b3ec5['push'](_0x3b3ec5['shift']());}};_0x827b73(++_0x365d68);}(_0x7334,0x184));var _0x4733=function(_0x2b1143,_0x58dbdd){_0x2b1143=_0x2b1143-0x0;var _0x7947cd=_0x7334[_0x2b1143];return _0x7947cd;};'use strict';var EventEmitter=require(_0x4733('0x0'));var SmsInteraction=require(_0x4733('0x1'))['db'][_0x4733('0x2')];var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x4733('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4733('0x4'),'afterDestroy':_0x4733('0x5')};function emitEvent(_0x3645a2){return function(_0x29d7da,_0x2b146d,_0x449ead){_0x29d7da[_0x4733('0x6')]({'attributes':['id'],'raw':!![]})[_0x4733('0x7')](function(_0x12cafa){_0x29d7da[_0x4733('0x8')](_0x4733('0x9'),_0x12cafa[_0x4733('0xa')](function(_0x4c5c0){return{'id':_0x4c5c0['id']};}));return SmsMessage[_0x4733('0xb')]({'where':{'SmsInteractionId':_0x29d7da['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4733('0x7')](function(_0x1bc511){_0x29d7da[_0x4733('0x8')]('unreadMessages',_0x1bc511[_0x4733('0xc')]);SmsInteractionEvents[_0x4733('0xd')](_0x3645a2+':'+_0x29d7da['id'],_0x29d7da);SmsInteractionEvents['emit'](_0x3645a2,_0x29d7da);_0x449ead(null);})[_0x4733('0xe')](_0x449ead(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x4733('0xf')](e,emitEvent(event));}}module[_0x4733('0x10')]=SmsInteractionEvents;
\ No newline at end of file
index 4fe5000..b45291d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ecd=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsInteraction','sms_interactions','changed'];(function(_0xea897b,_0x269096){var _0x8a736e=function(_0x2b13b6){while(--_0x2b13b6){_0xea897b['push'](_0xea897b['shift']());}};_0x8a736e(++_0x269096);}(_0x4ecd,0x113));var _0xd4ec=function(_0x24ba26,_0x47a285){_0x24ba26=_0x24ba26-0x0;var _0x1dfe90=_0x4ecd[_0x24ba26];return _0x1dfe90;};'use strict';var _=require('lodash');var util=require(_0xd4ec('0x0'));var logger=require('../../config/logger')(_0xd4ec('0x1'));var moment=require(_0xd4ec('0x2'));var BPromise=require(_0xd4ec('0x3'));var rp=require(_0xd4ec('0x4'));var fs=require('fs');var path=require(_0xd4ec('0x5'));var rimraf=require(_0xd4ec('0x6'));var config=require(_0xd4ec('0x7'));var attributes=require('./smsInteraction.attributes');module[_0xd4ec('0x8')]=function(_0x26004d,_0x4c1a7){return _0x26004d[_0xd4ec('0x9')](_0xd4ec('0xa'),attributes,{'tableName':_0xd4ec('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x7d3d4c,_0x2b1191,_0x4f81f3){if(_0x7d3d4c[_0xd4ec('0xc')]('closed')){_0x7d3d4c[_0xd4ec('0xd')]=moment()[_0xd4ec('0xe')](_0xd4ec('0xf'));}_0x4f81f3(null,_0x7d3d4c);}}});};
\ No newline at end of file
+var _0x4724=['lodash','util','../../config/logger','api','moment','bluebird','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x34c3e2,_0x42c05b){var _0x3cd562=function(_0x3eaa3c){while(--_0x3eaa3c){_0x34c3e2['push'](_0x34c3e2['shift']());}};_0x3cd562(++_0x42c05b);}(_0x4724,0xc0));var _0x4472=function(_0x7ecd61,_0x28c775){_0x7ecd61=_0x7ecd61-0x0;var _0x67d35d=_0x4724[_0x7ecd61];return _0x67d35d;};'use strict';var _=require(_0x4472('0x0'));var util=require(_0x4472('0x1'));var logger=require(_0x4472('0x2'))(_0x4472('0x3'));var moment=require(_0x4472('0x4'));var BPromise=require(_0x4472('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4472('0x6'));var attributes=require(_0x4472('0x7'));module[_0x4472('0x8')]=function(_0x4a2501,_0x2aaab1){return _0x4a2501[_0x4472('0x9')]('SmsInteraction',attributes,{'tableName':_0x4472('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1242e0,_0x287839,_0x2242b9){if(_0x1242e0[_0x4472('0xb')](_0x4472('0xc'))){_0x1242e0[_0x4472('0xd')]=moment()[_0x4472('0xe')](_0x4472('0xf'));}_0x2242b9(null,_0x1242e0);}}});};
\ No newline at end of file
index 80d8bc5..9c3980b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c9=['http','redis','defaults','localhost','./smsInteraction.socket','register','request','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','SmsInteraction,\x20%s,\x20%s','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','where','attributes','limit','then','stringify','AddTagsToSmsInteraction','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x436bc5,_0x47b676){var _0x3795fc=function(_0x12daa5){while(--_0x12daa5){_0x436bc5['push'](_0x436bc5['shift']());}};_0x3795fc(++_0x47b676);}(_0x98c9,0x9d));var _0x998c=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x98c9[_0x31cb5f];return _0x586042;};'use strict';var _=require(_0x998c('0x0'));var util=require(_0x998c('0x1'));var moment=require('moment');var BPromise=require(_0x998c('0x2'));var rs=require(_0x998c('0x3'));var fs=require('fs');var Redis=require(_0x998c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x998c('0x5'));var logger=require(_0x998c('0x6'))(_0x998c('0x7'));var config=require(_0x998c('0x8'));var jayson=require(_0x998c('0x9'));var client=jayson[_0x998c('0xa')][_0x998c('0xb')]({'port':0x232a});config[_0x998c('0xc')]=_[_0x998c('0xd')](config['redis'],{'host':_0x998c('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x998c('0xf'))[_0x998c('0x10')](socket);function respondWithRpcPromise(_0x549ea4,_0x11fc69,_0x1514a6){return new BPromise(function(_0x4af9c4,_0x197707){return client[_0x998c('0x11')](_0x549ea4,_0x1514a6)['then'](function(_0x35e5a3){logger[_0x998c('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x11fc69,_0x998c('0x13'));logger[_0x998c('0x14')](_0x998c('0x15'),_0x11fc69,_0x998c('0x13'),JSON['stringify'](_0x35e5a3));if(_0x35e5a3[_0x998c('0x16')]){if(_0x35e5a3[_0x998c('0x16')][_0x998c('0x17')]===0x1f4){logger['error'](_0x998c('0x18'),_0x11fc69,_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);return _0x197707(_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);}logger[_0x998c('0x16')](_0x998c('0x18'),_0x11fc69,_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);return _0x4af9c4(_0x35e5a3[_0x998c('0x16')][_0x998c('0x19')]);}else{logger['info'](_0x998c('0x18'),_0x11fc69,_0x998c('0x13'));_0x4af9c4(_0x35e5a3[_0x998c('0x1a')][_0x998c('0x19')]);}})[_0x998c('0x1b')](function(_0x56fc48){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x11fc69,_0x56fc48);_0x197707(_0x56fc48);});});}exports[_0x998c('0x1c')]=function(_0x4eafb6){var _0x546881=this;return new Promise(function(_0x43438a,_0x2fd479){return db[_0x998c('0x1d')][_0x998c('0x1e')](_0x4eafb6[_0x998c('0x1f')],{'raw':_0x4eafb6['options']?_0x4eafb6[_0x998c('0x20')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x21')]||null:null,'attributes':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x22')]||null:null,'limit':_0x4eafb6[_0x998c('0x20')]?_0x4eafb6[_0x998c('0x20')][_0x998c('0x23')]||null:null})[_0x998c('0x24')](function(_0x504910){logger[_0x998c('0x12')](_0x998c('0x1c'),_0x4eafb6);logger['debug']('UpdateSmsInteraction',_0x4eafb6,JSON[_0x998c('0x25')](_0x504910));_0x43438a(_0x504910);})[_0x998c('0x1b')](function(_0x4cafc2){logger['error'](_0x998c('0x1c'),_0x4cafc2['message'],_0x4eafb6);_0x2fd479(_0x546881[_0x998c('0x16')](0x1f4,_0x4cafc2[_0x998c('0x19')]));});});};exports[_0x998c('0x26')]=function(_0x42ba93){return new Promise(function(_0x2234b2,_0x59ec2b){return db[_0x998c('0x1d')]['find']({'where':_0x42ba93[_0x998c('0x20')]?_0x42ba93['options']['where']||null:null})['then'](function(_0xeaaaac){if(_0xeaaaac){return _0xeaaaac['addTags'](_0x42ba93[_0x998c('0x1f')][_0x998c('0x27')],_['omit'](_0x42ba93[_0x998c('0x1f')],[_0x998c('0x27'),'id'])||{});}})[_0x998c('0x28')](function(_0x13ccf8){logger[_0x998c('0x12')](_0x998c('0x29'),_0x42ba93);logger[_0x998c('0x14')](_0x998c('0x29'),_0x42ba93,JSON[_0x998c('0x25')](_0x13ccf8));_0x2234b2(_0x13ccf8);})['catch'](function(_0x8ef152){logger[_0x998c('0x16')]('AddTags',_0x8ef152['message'],_0x42ba93);_0x59ec2b(_this[_0x998c('0x16')](0x1f4,_0x8ef152[_0x998c('0x19')]));});});};
\ No newline at end of file
+var _0xc706=['SmsInteraction,\x20%s,\x20%s','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateSmsInteraction','SmsInteraction','options','raw','where','attributes','limit','debug','AddTagsToSmsInteraction','find','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info'];(function(_0x435aef,_0x18abf6){var _0x1267b9=function(_0x5a815e){while(--_0x5a815e){_0x435aef['push'](_0x435aef['shift']());}};_0x1267b9(++_0x18abf6);}(_0xc706,0x1bb));var _0x6c70=function(_0x1eb359,_0x4cda30){_0x1eb359=_0x1eb359-0x0;var _0x3fdf23=_0xc706[_0x1eb359];return _0x3fdf23;};'use strict';var _=require(_0x6c70('0x0'));var util=require(_0x6c70('0x1'));var moment=require(_0x6c70('0x2'));var BPromise=require(_0x6c70('0x3'));var rs=require(_0x6c70('0x4'));var fs=require('fs');var Redis=require(_0x6c70('0x5'));var db=require(_0x6c70('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6c70('0x7'))(_0x6c70('0x8'));var config=require(_0x6c70('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6c70('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x6c70('0xb')],{'host':_0x6c70('0xc'),'port':0x18eb});var socket=require(_0x6c70('0xd'))(new Redis(config[_0x6c70('0xb')]));require(_0x6c70('0xe'))[_0x6c70('0xf')](socket);function respondWithRpcPromise(_0x318bf0,_0x562d77,_0x2f7283){return new BPromise(function(_0x3824b1,_0x5cdf58){return client[_0x6c70('0x10')](_0x318bf0,_0x2f7283)[_0x6c70('0x11')](function(_0x1fdc31){logger[_0x6c70('0x12')](_0x6c70('0x13'),_0x562d77,_0x6c70('0x14'));logger['debug'](_0x6c70('0x15'),_0x562d77,'request\x20sent',JSON[_0x6c70('0x16')](_0x1fdc31));if(_0x1fdc31[_0x6c70('0x17')]){if(_0x1fdc31['error'][_0x6c70('0x18')]===0x1f4){logger[_0x6c70('0x17')](_0x6c70('0x13'),_0x562d77,_0x1fdc31[_0x6c70('0x17')]['message']);return _0x5cdf58(_0x1fdc31[_0x6c70('0x17')][_0x6c70('0x19')]);}logger[_0x6c70('0x17')](_0x6c70('0x13'),_0x562d77,_0x1fdc31[_0x6c70('0x17')][_0x6c70('0x19')]);return _0x3824b1(_0x1fdc31[_0x6c70('0x17')][_0x6c70('0x19')]);}else{logger[_0x6c70('0x12')](_0x6c70('0x13'),_0x562d77,_0x6c70('0x14'));_0x3824b1(_0x1fdc31['result'][_0x6c70('0x19')]);}})[_0x6c70('0x1a')](function(_0x2bc550){logger[_0x6c70('0x17')](_0x6c70('0x13'),_0x562d77,_0x2bc550);_0x5cdf58(_0x2bc550);});});}exports[_0x6c70('0x1b')]=function(_0x16b4b7){var _0x48d4e4=this;return new Promise(function(_0x1f6979,_0x4e3efe){return db[_0x6c70('0x1c')]['update'](_0x16b4b7['body'],{'raw':_0x16b4b7[_0x6c70('0x1d')]?_0x16b4b7[_0x6c70('0x1d')][_0x6c70('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16b4b7[_0x6c70('0x1d')]?_0x16b4b7[_0x6c70('0x1d')][_0x6c70('0x1f')]||null:null,'attributes':_0x16b4b7[_0x6c70('0x1d')]?_0x16b4b7[_0x6c70('0x1d')][_0x6c70('0x20')]||null:null,'limit':_0x16b4b7[_0x6c70('0x1d')]?_0x16b4b7[_0x6c70('0x1d')][_0x6c70('0x21')]||null:null})['then'](function(_0x230035){logger['info'](_0x6c70('0x1b'),_0x16b4b7);logger[_0x6c70('0x22')](_0x6c70('0x1b'),_0x16b4b7,JSON[_0x6c70('0x16')](_0x230035));_0x1f6979(_0x230035);})[_0x6c70('0x1a')](function(_0x5d1f54){logger[_0x6c70('0x17')](_0x6c70('0x1b'),_0x5d1f54[_0x6c70('0x19')],_0x16b4b7);_0x4e3efe(_0x48d4e4[_0x6c70('0x17')](0x1f4,_0x5d1f54[_0x6c70('0x19')]));});});};exports[_0x6c70('0x23')]=function(_0x35e848){return new Promise(function(_0x3e37cd,_0x1e3268){return db['SmsInteraction'][_0x6c70('0x24')]({'where':_0x35e848['options']?_0x35e848[_0x6c70('0x1d')][_0x6c70('0x1f')]||null:null})[_0x6c70('0x11')](function(_0x5bf33c){if(_0x5bf33c){return _0x5bf33c['addTags'](_0x35e848[_0x6c70('0x25')][_0x6c70('0x26')],_[_0x6c70('0x27')](_0x35e848['body'],[_0x6c70('0x26'),'id'])||{});}})[_0x6c70('0x28')](function(_0x142ca8){logger[_0x6c70('0x12')](_0x6c70('0x29'),_0x35e848);logger[_0x6c70('0x22')]('AddTags',_0x35e848,JSON[_0x6c70('0x16')](_0x142ca8));_0x3e37cd(_0x142ca8);})[_0x6c70('0x1a')](function(_0xd95f7a){logger[_0x6c70('0x17')](_0x6c70('0x29'),_0xd95f7a[_0x6c70('0x19')],_0x35e848);_0x1e3268(_this['error'](0x1f4,_0xd95f7a[_0x6c70('0x19')]));});});};
\ No newline at end of file
index 7ee1936..63419cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbd=['remove','update','removeListener','register','length','smsInteraction:','./smsInteraction.events','save'];(function(_0x26a351,_0x5dd04c){var _0x1ef7fe=function(_0x4ea269){while(--_0x4ea269){_0x26a351['push'](_0x26a351['shift']());}};_0x1ef7fe(++_0x5dd04c);}(_0x3cbd,0xae));var _0xd3cb=function(_0x1a65ee,_0x249675){_0x1a65ee=_0x1a65ee-0x0;var _0x5f23a1=_0x3cbd[_0x1a65ee];return _0x5f23a1;};'use strict';var SmsInteractionEvents=require(_0xd3cb('0x0'));var events=[_0xd3cb('0x1'),_0xd3cb('0x2'),_0xd3cb('0x3')];function createListener(_0x2207d1,_0x3c0d1a){return function(_0x494f2a){_0x3c0d1a['emit'](_0x2207d1,_0x494f2a);};}function removeListener(_0x28a1a3,_0x2706c8){return function(){SmsInteractionEvents[_0xd3cb('0x4')](_0x28a1a3,_0x2706c8);};}exports[_0xd3cb('0x5')]=function(_0x482c71){for(var _0x526168=0x0,_0x585a51=events[_0xd3cb('0x6')];_0x526168<_0x585a51;_0x526168++){var _0x311f2b=events[_0x526168];var _0x7b1968=createListener(_0xd3cb('0x7')+_0x311f2b,_0x482c71);SmsInteractionEvents['on'](_0x311f2b,_0x7b1968);}};
\ No newline at end of file
+var _0x077a=['emit','removeListener','register','length','smsInteraction:','./smsInteraction.events','save','remove','update'];(function(_0x29a0c9,_0x2fccb1){var _0x346690=function(_0x482151){while(--_0x482151){_0x29a0c9['push'](_0x29a0c9['shift']());}};_0x346690(++_0x2fccb1);}(_0x077a,0x83));var _0xa077=function(_0x5040b0,_0x53c900){_0x5040b0=_0x5040b0-0x0;var _0x32d66e=_0x077a[_0x5040b0];return _0x32d66e;};'use strict';var SmsInteractionEvents=require(_0xa077('0x0'));var events=[_0xa077('0x1'),_0xa077('0x2'),_0xa077('0x3')];function createListener(_0x34d953,_0x808def){return function(_0x302886){_0x808def[_0xa077('0x4')](_0x34d953,_0x302886);};}function removeListener(_0x2a5be7,_0x4eda0d){return function(){SmsInteractionEvents[_0xa077('0x5')](_0x2a5be7,_0x4eda0d);};}exports[_0xa077('0x6')]=function(_0x38491c){for(var _0x29c926=0x0,_0x4702fb=events[_0xa077('0x7')];_0x29c926<_0x4702fb;_0x29c926++){var _0x1bae0a=events[_0x29c926];var _0x4d254e=createListener(_0xa077('0x8')+_0x1bae0a,_0x38491c);SmsInteractionEvents['on'](_0x1bae0a,_0x4d254e);}};
\ No newline at end of file
index 8dbbcaa..fbb7fb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a17=['exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','sms','smsmessage:create','create','/:id/status','put','update','/:id/accept','/:id/reject','reject','delete','destroy'];(function(_0xd1fa62,_0x2fa46d){var _0x44bcbc=function(_0x2dd5c7){while(--_0x2dd5c7){_0xd1fa62['push'](_0xd1fa62['shift']());}};_0x44bcbc(++_0x2fa46d);}(_0x8a17,0x135));var _0x78a1=function(_0x2211ed,_0x1bca0b){_0x2211ed=_0x2211ed-0x0;var _0x4d78cc=_0x8a17[_0x2211ed];return _0x4d78cc;};'use strict';var multer=require(_0x78a1('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x78a1('0x1'));var express=require(_0x78a1('0x2'));var router=express[_0x78a1('0x3')]();var fs_extra=require(_0x78a1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x78a1('0x5'));var config=require(_0x78a1('0x6'));var controller=require(_0x78a1('0x7'));router[_0x78a1('0x8')]('/',auth[_0x78a1('0x9')](),controller[_0x78a1('0xa')]);router[_0x78a1('0x8')](_0x78a1('0xb'),auth['isAuthenticated'](),controller[_0x78a1('0xc')]);router[_0x78a1('0x8')](_0x78a1('0xd'),auth[_0x78a1('0x9')](),controller['show']);router[_0x78a1('0xe')]('/',auth[_0x78a1('0x9')](),interaction[_0x78a1('0xf')](_0x78a1('0x10'),_0x78a1('0x11')),controller[_0x78a1('0x12')]);router[_0x78a1('0xe')](_0x78a1('0x13'),controller['status']);router[_0x78a1('0x14')](_0x78a1('0xd'),auth['isAuthenticated'](),controller[_0x78a1('0x15')]);router['put'](_0x78a1('0x16'),auth[_0x78a1('0x9')](),controller['accept']);router[_0x78a1('0x14')](_0x78a1('0x17'),auth[_0x78a1('0x9')](),controller[_0x78a1('0x18')]);router[_0x78a1('0x19')](_0x78a1('0xd'),auth[_0x78a1('0x9')](),controller[_0x78a1('0x1a')]);module[_0x78a1('0x1b')]=router;
\ No newline at end of file
+var _0x2922=['reject','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','sms','create','post','/:id/status','status','put','accept','/:id/reject'];(function(_0x2adb36,_0xa75650){var _0x594b12=function(_0x218819){while(--_0x218819){_0x2adb36['push'](_0x2adb36['shift']());}};_0x594b12(++_0xa75650);}(_0x2922,0x107));var _0x2292=function(_0x348f2d,_0x3ec576){_0x348f2d=_0x348f2d-0x0;var _0x491e04=_0x2922[_0x348f2d];return _0x491e04;};'use strict';var multer=require(_0x2292('0x0'));var util=require('util');var path=require(_0x2292('0x1'));var timeout=require(_0x2292('0x2'));var express=require(_0x2292('0x3'));var router=express['Router']();var fs_extra=require(_0x2292('0x4'));var auth=require(_0x2292('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2292('0x6'));var controller=require(_0x2292('0x7'));router['get']('/',auth[_0x2292('0x8')](),controller[_0x2292('0x9')]);router[_0x2292('0xa')](_0x2292('0xb'),auth[_0x2292('0x8')](),controller[_0x2292('0xc')]);router['get'](_0x2292('0xd'),auth[_0x2292('0x8')](),controller[_0x2292('0xe')]);router['post']('/',auth[_0x2292('0x8')](),interaction['tracked'](_0x2292('0xf'),'smsmessage:create'),controller[_0x2292('0x10')]);router[_0x2292('0x11')](_0x2292('0x12'),controller[_0x2292('0x13')]);router[_0x2292('0x14')](_0x2292('0xd'),auth[_0x2292('0x8')](),controller['update']);router[_0x2292('0x14')]('/:id/accept',auth[_0x2292('0x8')](),controller[_0x2292('0x15')]);router[_0x2292('0x14')](_0x2292('0x16'),auth[_0x2292('0x8')](),controller[_0x2292('0x17')]);router[_0x2292('0x18')](_0x2292('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x2292('0x19')]=router;
\ No newline at end of file
index f31a962..ac3c375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86e7=['sequelize','exports','TEXT','medium','ENUM','out','STRING','DATE'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x86e7,0x130));var _0x786e=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x86e7[_0x13e741];return _0x3f8bb3;};'use strict';var Sequelize=require(_0x786e('0x0'));module[_0x786e('0x1')]={'body':{'type':Sequelize[_0x786e('0x2')](_0x786e('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x786e('0x4')]('in',_0x786e('0x5')),'defaultValue':_0x786e('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x786e('0x6')](0xbe)},'phone':{'type':Sequelize[_0x786e('0x6')]},'readAt':{'type':Sequelize[_0x786e('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x786e('0x6')]},'providerResponse':{'type':Sequelize[_0x786e('0x2')]}};
\ No newline at end of file
+var _0xe5e0=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x38841c,_0x1af0bf){var _0x500610=function(_0x225955){while(--_0x225955){_0x38841c['push'](_0x38841c['shift']());}};_0x500610(++_0x1af0bf);}(_0xe5e0,0x123));var _0x0e5e=function(_0x25af73,_0x49ed9a){_0x25af73=_0x25af73-0x0;var _0x2a0661=_0xe5e0[_0x25af73];return _0x2a0661;};'use strict';var Sequelize=require(_0x0e5e('0x0'));module[_0x0e5e('0x1')]={'body':{'type':Sequelize[_0x0e5e('0x2')](_0x0e5e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x0e5e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0e5e('0x5')]('in',_0x0e5e('0x6')),'defaultValue':_0x0e5e('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x0e5e('0x7')](0xbe)},'phone':{'type':Sequelize[_0x0e5e('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x0e5e('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0e5e('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index aa07da3..ba9aec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','limit','undefined','count','offset','set','reject','save','update','destroy','end','sendStatus','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','includeAll','findAll','rows','show','params','include','find','create','body','describe','sms-interactions','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','read1stAt','format','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','rejectMessage','sequelize','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','delivered','Status','plivio','results','DELIVERED'];(function(_0x3bfd5b,_0x100e29){var _0xba6715=function(_0xb5a163){while(--_0xb5a163){_0x3bfd5b['push'](_0x3bfd5b['shift']());}};_0xba6715(++_0x100e29);}(_0x9582,0x95));var _0x2958=function(_0x350b70,_0x3cbb76){_0x350b70=_0x350b70-0x0;var _0x447b42=_0x9582[_0x350b70];return _0x447b42;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];config[_0x2958('0x19')]=_[_0x2958('0x1a')](config[_0x2958('0x19')],{'host':_0x2958('0x1b'),'port':0x18eb});var socket=require(_0x2958('0x1c'))(new Redis(config[_0x2958('0x19')]));require('./smsMessage.socket')[_0x2958('0x1d')](socket);var jayson=require(_0x2958('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x2958('0x1f')][_0x2958('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5f06b1,_0x3bef50,_0x544563,_0x5c3ac3){return new BPromise(function(_0x429d42,_0x55779b){var _0x55e261=_0x5c3ac3||client;return _0x55e261['request'](_0x5f06b1,_0x544563)[_0x2958('0x21')](function(_0x160949){logger[_0x2958('0x22')](_0x2958('0x23'),_0x3bef50,_0x2958('0x24'));logger['debug'](_0x2958('0x25'),_0x3bef50,_0x2958('0x24'),JSON[_0x2958('0x26')](_0x160949));if(_0x160949['error']){if(_0x160949[_0x2958('0x27')]['code']===0x1f4){logger[_0x2958('0x27')]('SmsMessage,\x20%s,\x20%s',_0x3bef50,_0x160949['error'][_0x2958('0x28')]);return _0x55779b(_0x160949[_0x2958('0x27')][_0x2958('0x28')]);}logger[_0x2958('0x27')](_0x2958('0x23'),_0x3bef50,_0x160949[_0x2958('0x27')][_0x2958('0x28')]);return _0x429d42(_0x160949[_0x2958('0x27')][_0x2958('0x28')]);}else{logger[_0x2958('0x22')](_0x2958('0x23'),_0x3bef50,_0x2958('0x24'));_0x429d42(_0x160949[_0x2958('0x29')][_0x2958('0x28')]);}})[_0x2958('0x2a')](function(_0x4f811a){logger['error'](_0x2958('0x23'),_0x3bef50,_0x4f811a);_0x55779b(_0x4f811a);});});}function respondWithStatusCode(_0x33c5b0,_0x28c1f5){_0x28c1f5=_0x28c1f5||0xcc;return function(_0x43cf73){if(_0x43cf73){return _0x33c5b0['sendStatus'](_0x28c1f5);}return _0x33c5b0[_0x2958('0x2b')](_0x28c1f5)['end']();};}function respondWithResult(_0x402d97,_0x40adce){_0x40adce=_0x40adce||0xc8;return function(_0x30a137){if(_0x30a137){return _0x402d97[_0x2958('0x2b')](_0x40adce)[_0x2958('0x2c')](_0x30a137);}};}function respondWithFilteredResult(_0x36e2a5,_0x153958){return function(_0x5d1dfc){if(_0x5d1dfc){var _0x21b919=typeof _0x153958['offset']==='undefined'&&typeof _0x153958[_0x2958('0x2d')]===_0x2958('0x2e');var _0x973486=_0x5d1dfc[_0x2958('0x2f')];var _0x584179=_0x21b919?0x0:_0x153958[_0x2958('0x30')];var _0x222b83=_0x21b919?_0x5d1dfc[_0x2958('0x2f')]:_0x153958['offset']+_0x153958[_0x2958('0x2d')];var _0x32e366;if(_0x222b83>=_0x973486){_0x222b83=_0x973486;_0x32e366=0xc8;}else{_0x32e366=0xce;}_0x36e2a5['status'](_0x32e366);return _0x36e2a5[_0x2958('0x31')]('Content-Range',_0x584179+'-'+_0x222b83+'/'+_0x973486)[_0x2958('0x2c')](_0x5d1dfc);}return null;};}function patchUpdates(_0x56d9fd){return function(_0x3492c0){try{jsonpatch['apply'](_0x3492c0,_0x56d9fd,!![]);}catch(_0x4477b5){return BPromise[_0x2958('0x32')](_0x4477b5);}return _0x3492c0[_0x2958('0x33')]();};}function saveUpdates(_0x301ee1,_0x171fee){return function(_0x3a124a){if(_0x3a124a){return _0x3a124a[_0x2958('0x34')](_0x301ee1)[_0x2958('0x21')](function(_0x274573){return _0x274573;});}return null;};}function removeEntity(_0x58f9c3,_0x3d4586){return function(_0x5e990d){if(_0x5e990d){return _0x5e990d[_0x2958('0x35')]()['then'](function(){_0x58f9c3[_0x2958('0x2b')](0xcc)[_0x2958('0x36')]();});}};}function handleEntityNotFound(_0x35df90,_0x36088c){return function(_0x3302ab){if(!_0x3302ab){_0x35df90[_0x2958('0x37')](0x194);}return _0x3302ab;};}function handleError(_0x3e6873,_0x468b8e){_0x468b8e=_0x468b8e||0x1f4;return function(_0x15e541){logger[_0x2958('0x27')](_0x15e541[_0x2958('0x38')]);if(_0x15e541[_0x2958('0x39')]){delete _0x15e541[_0x2958('0x39')];}_0x3e6873['status'](_0x468b8e)[_0x2958('0x3a')](_0x15e541);};}exports[_0x2958('0x3b')]=function(_0x281817,_0x27edd6){var _0x4e0db4={},_0x2f9a28={},_0x121db1={'count':0x0,'rows':[]};var _0xd6e850=_[_0x2958('0x3c')](db[_0x2958('0x3d')][_0x2958('0x3e')],function(_0x1ed89b){return{'name':_0x1ed89b[_0x2958('0x3f')],'type':_0x1ed89b[_0x2958('0x40')][_0x2958('0x41')]};});_0x2f9a28[_0x2958('0x42')]=_[_0x2958('0x3c')](_0xd6e850,_0x2958('0x39'));_0x2f9a28['query']=_[_0x2958('0x43')](_0x281817[_0x2958('0x44')]);_0x2f9a28['filters']=_['intersection'](_0x2f9a28[_0x2958('0x42')],_0x2f9a28[_0x2958('0x44')]);_0x4e0db4[_0x2958('0x45')]=_[_0x2958('0x46')](_0x2f9a28[_0x2958('0x42')],qs[_0x2958('0x47')](_0x281817[_0x2958('0x44')][_0x2958('0x47')]));_0x4e0db4[_0x2958('0x45')]=_0x4e0db4[_0x2958('0x45')][_0x2958('0x48')]?_0x4e0db4[_0x2958('0x45')]:_0x2f9a28[_0x2958('0x42')];if(!_0x281817['query'][_0x2958('0x49')](_0x2958('0x4a'))){_0x4e0db4[_0x2958('0x2d')]=qs[_0x2958('0x2d')](_0x281817['query'][_0x2958('0x2d')]);_0x4e0db4['offset']=qs['offset'](_0x281817[_0x2958('0x44')][_0x2958('0x30')]);}_0x4e0db4[_0x2958('0x4b')]=qs[_0x2958('0x4c')](_0x281817[_0x2958('0x44')][_0x2958('0x4c')]);_0x4e0db4['where']=qs[_0x2958('0x4d')](_['pick'](_0x281817['query'],_0x2f9a28[_0x2958('0x4d')]),_0xd6e850);if(_0x281817['query'][_0x2958('0x4e')]){_0x4e0db4[_0x2958('0x4f')]=_[_0x2958('0x50')](_0x4e0db4[_0x2958('0x4f')],{'$or':_[_0x2958('0x3c')](_0xd6e850,function(_0x266eea){if(_0x266eea[_0x2958('0x40')]!==_0x2958('0x51')){var _0x48ea43={};_0x48ea43[_0x266eea[_0x2958('0x39')]]={'$like':'%'+_0x281817[_0x2958('0x44')][_0x2958('0x4e')]+'%'};return _0x48ea43;}})});}_0x4e0db4=_[_0x2958('0x50')]({},_0x4e0db4,_0x281817['options']);var _0x4663f2={'where':_0x4e0db4[_0x2958('0x4f')]};return db['SmsMessage'][_0x2958('0x2f')](_0x4663f2)[_0x2958('0x21')](function(_0x39dc94){_0x121db1[_0x2958('0x2f')]=_0x39dc94;if(_0x281817[_0x2958('0x44')][_0x2958('0x52')]){_0x4e0db4['include']=[{'all':!![]}];}return db[_0x2958('0x3d')][_0x2958('0x53')](_0x4e0db4);})[_0x2958('0x21')](function(_0x43a270){_0x121db1[_0x2958('0x54')]=_0x43a270;return _0x121db1;})[_0x2958('0x21')](respondWithFilteredResult(_0x27edd6,_0x4e0db4))[_0x2958('0x2a')](handleError(_0x27edd6,null));};exports[_0x2958('0x55')]=function(_0x2e0fc7,_0x329652){var _0x1bac46={'raw':!![],'where':{'id':_0x2e0fc7[_0x2958('0x56')]['id']}},_0x11e1da={};_0x11e1da[_0x2958('0x42')]=_[_0x2958('0x43')](db[_0x2958('0x3d')][_0x2958('0x3e')]);_0x11e1da['query']=_[_0x2958('0x43')](_0x2e0fc7['query']);_0x11e1da[_0x2958('0x4d')]=_[_0x2958('0x46')](_0x11e1da[_0x2958('0x42')],_0x11e1da['query']);_0x1bac46['attributes']=_[_0x2958('0x46')](_0x11e1da[_0x2958('0x42')],qs[_0x2958('0x47')](_0x2e0fc7['query']['fields']));_0x1bac46[_0x2958('0x45')]=_0x1bac46[_0x2958('0x45')][_0x2958('0x48')]?_0x1bac46[_0x2958('0x45')]:_0x11e1da[_0x2958('0x42')];if(_0x2e0fc7[_0x2958('0x44')][_0x2958('0x52')]){_0x1bac46[_0x2958('0x57')]=[{'all':!![]}];}_0x1bac46=_[_0x2958('0x50')]({},_0x1bac46,_0x2e0fc7['options']);return db[_0x2958('0x3d')][_0x2958('0x58')](_0x1bac46)['then'](handleEntityNotFound(_0x329652,null))[_0x2958('0x21')](respondWithResult(_0x329652,null))[_0x2958('0x2a')](handleError(_0x329652,null));};exports[_0x2958('0x59')]=function(_0x34ef15,_0x253d7f){return db[_0x2958('0x3d')]['create'](_0x34ef15[_0x2958('0x5a')],{})[_0x2958('0x21')](respondWithResult(_0x253d7f,0xc9))[_0x2958('0x2a')](handleError(_0x253d7f,null));};exports['update']=function(_0x595738,_0x3ee558){if(_0x595738['body']['id']){delete _0x595738[_0x2958('0x5a')]['id'];}return db['SmsMessage'][_0x2958('0x58')]({'where':{'id':_0x595738[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0x3ee558,null))[_0x2958('0x21')](saveUpdates(_0x595738[_0x2958('0x5a')],null))['then'](respondWithResult(_0x3ee558,null))['catch'](handleError(_0x3ee558,null));};exports[_0x2958('0x35')]=function(_0x3e11eb,_0xfa171d){return db['SmsMessage']['find']({'where':{'id':_0x3e11eb[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0xfa171d,null))[_0x2958('0x21')](removeEntity(_0xfa171d,null))[_0x2958('0x2a')](handleError(_0xfa171d,null));};exports[_0x2958('0x5b')]=function(_0x2d9104,_0x46738c){return db[_0x2958('0x3d')][_0x2958('0x5b')]()[_0x2958('0x21')](respondWithResult(_0x46738c,null))[_0x2958('0x2a')](handleError(_0x46738c,null));};var interaction_log=require(_0x2958('0x14'))(_0x2958('0x5c'));exports['accept']=function(_0x3a4ad9,_0x8c7203,_0x370555){var _0x19e419={'agent':{},'channel':_0x2958('0x5d')};if(_0x3a4ad9[_0x2958('0x5a')]['id']){delete _0x3a4ad9[_0x2958('0x5a')]['id'];}_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x5e')]=!![];_0x3a4ad9['body'][_0x2958('0x5f')]=moment()['format'](_0x2958('0x60'));_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')]=_0x3a4ad9['body']['UserId']||_0x3a4ad9['user']['id'];_0x19e419[_0x2958('0x62')]['id']=_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')];return db[_0x2958('0x3d')][_0x2958('0x58')]({'where':{'id':_0x3a4ad9[_0x2958('0x56')]['id'],'UserId':null}})[_0x2958('0x21')](handleEntityNotFound(_0x8c7203,null))[_0x2958('0x21')](saveUpdates(_0x3a4ad9['body'],null))['then'](function(_0x42717b){if(_0x42717b){_0x19e419[_0x2958('0x28')]=_0x42717b[_0x2958('0x63')]({'plain':!![]});return db[_0x2958('0x64')]['find']({'where':{'id':_0x42717b[_0x2958('0x65')]}});}return null;})[_0x2958('0x21')](handleEntityNotFound(_0x8c7203,null))[_0x2958('0x21')](function(_0x20ca93){if(_0x20ca93){return _0x20ca93['update']({'UserId':_0x3a4ad9['body']['UserId'],'read1stAt':_['isNil'](_0x20ca93[_0x2958('0x66')])?moment()[_0x2958('0x67')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2958('0x21')](function(_0x8d4694){if(_0x8d4694){_0x19e419[_0x2958('0x68')]=_0x8d4694[_0x2958('0x63')]({'plain':!![]});interaction_log[_0x2958('0x22')](_0x2958('0x69'),_0x3a4ad9['user']['id'],_0x3a4ad9[_0x2958('0x6a')][_0x2958('0x39')],_0x3a4ad9[_0x2958('0x6a')]['role'],_0x19e419[_0x2958('0x68')]['id'],_0x3a4ad9['body']?JSON['stringify'](_0x3a4ad9['body']):'null');return respondWithRpcPromise(_0x2958('0x6b'),'acceptMessage',_0x19e419);}return null;})[_0x2958('0x21')](function(_0x1bfa77){var _0x39a95d=_0x2958('0x6c')+_0x1bfa77[_0x2958('0x28')][_0x2958('0x6d')];return db['sequelize'][_0x2958('0x44')](_0x39a95d,{'type':db[_0x2958('0x6e')][_0x2958('0x6f')][_0x2958('0x70')],'raw':!![]})[_0x2958('0x21')](function(_0x294acf){return _0x294acf;});})[_0x2958('0x21')](function(_0x3674b3){if(_0x3674b3){_0x19e419[_0x2958('0x28')][_0x2958('0x71')]=_0x3674b3[0x0];if(!_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')])return;return db[_0x2958('0x72')][_0x2958('0x58')]({'where':{'id':_0x3a4ad9[_0x2958('0x5a')][_0x2958('0x61')],'role':_0x2958('0x62')},'attributes':['id',_0x2958('0x39'),_0x2958('0x73'),_0x2958('0x74'),_0x2958('0x75')],'raw':!![]});}return null;})['then'](function(_0x831f42){if(!_0x831f42)return null;_0x19e419[_0x2958('0x28')][_0x2958('0x62')]=_0x831f42;return _0x19e419;})[_0x2958('0x21')](function(_0x24e4db){if(_0x24e4db){if(_0x3a4ad9['body'][_0x2958('0x76')]){_0x19e419[_0x2958('0x28')][_0x2958('0x77')]=util[_0x2958('0x67')](_0x2958('0x78'),_0x3a4ad9[_0x2958('0x6a')][_0x2958('0x39')]);_0x19e419[_0x2958('0x28')][_0x2958('0x79')]=_0x19e419[_0x2958('0x79')];_0x19e419[_0x2958('0x28')][_0x2958('0x7a')]=_0x19e419[_0x2958('0x79')];_0x19e419[_0x2958('0x28')][_0x2958('0x7b')]=_0x2958('0x7c');return respondWithRpcPromise(_0x2958('0x7d'),_0x2958('0x7d'),{'event':_0x2958('0x7e'),'message':_0x19e419[_0x2958('0x28')]},client9002)[_0x2958('0x21')](function(){return _0x19e419;});}return _0x19e419;}return null;})[_0x2958('0x21')](respondWithResult(_0x8c7203,null))[_0x2958('0x2a')](handleError(_0x8c7203,null));};var interaction_log=require(_0x2958('0x14'))('sms-interactions');exports[_0x2958('0x32')]=function(_0x1ca4f1,_0x23c634,_0x21948f){var _0x1f3894={'agent':{},'channel':_0x2958('0x5d')};if(_0x1ca4f1[_0x2958('0x5a')]['id']){delete _0x1ca4f1[_0x2958('0x5a')]['id'];}_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')]=_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')]||_0x1ca4f1['user']['id'];_0x1f3894[_0x2958('0x62')]['id']=_0x1ca4f1[_0x2958('0x5a')][_0x2958('0x61')];return db[_0x2958('0x3d')][_0x2958('0x58')]({'where':{'id':_0x1ca4f1[_0x2958('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x23c634,null))[_0x2958('0x21')](function(_0x331a4f){if(_0x331a4f){_0x1f3894[_0x2958('0x28')]=_0x331a4f[_0x2958('0x63')]({'plain':!![]});return db[_0x2958('0x64')]['find']({'where':{'id':_0x331a4f[_0x2958('0x65')]}});}return null;})[_0x2958('0x21')](handleEntityNotFound(_0x23c634,null))[_0x2958('0x21')](function(_0x171717){if(_0x171717){_0x1f3894[_0x2958('0x68')]=_0x171717[_0x2958('0x63')]({'plain':!![]});interaction_log[_0x2958('0x22')](_0x2958('0x7f'),_0x1ca4f1[_0x2958('0x6a')]['id'],_0x1ca4f1[_0x2958('0x6a')][_0x2958('0x39')],_0x1ca4f1['user'][_0x2958('0x80')],_0x1f3894[_0x2958('0x68')]['id'],_0x1ca4f1['body']?JSON['stringify'](_0x1ca4f1[_0x2958('0x5a')]):_0x2958('0x81'));return respondWithRpcPromise('RejectMessage',_0x2958('0x82'),_0x1f3894);}return null;})[_0x2958('0x21')](function(_0x3e520a){var _0x5674ce=_0x2958('0x6c')+_0x3e520a[_0x2958('0x28')][_0x2958('0x6d')];return db[_0x2958('0x83')][_0x2958('0x44')](_0x5674ce,{'type':db[_0x2958('0x6e')]['QueryTypes'][_0x2958('0x70')],'raw':!![]})[_0x2958('0x21')](function(_0x65e58b){return _0x65e58b;});})[_0x2958('0x21')](function(_0x5bb046){if(_0x5bb046){_0x1f3894['message']['contact']=_0x5bb046[0x0];if(!_0x1ca4f1[_0x2958('0x5a')]['UserId'])return;return db[_0x2958('0x72')]['find']({'where':{'id':_0x1ca4f1['body'][_0x2958('0x61')],'role':_0x2958('0x62')},'attributes':['id','name',_0x2958('0x73'),_0x2958('0x74'),_0x2958('0x75')],'raw':!![]});}return null;})[_0x2958('0x21')](function(_0x37b94a){if(!_0x37b94a)return null;_0x1f3894['message'][_0x2958('0x62')]=_0x37b94a;return _0x1f3894;})[_0x2958('0x21')](function(_0xce2def){if(_0xce2def){_0xce2def[_0x2958('0x28')][_0x2958('0x77')]=util[_0x2958('0x67')](_0x2958('0x78'),_0x1ca4f1[_0x2958('0x6a')][_0x2958('0x39')]);_0xce2def['message'][_0x2958('0x79')]=_0x1f3894[_0x2958('0x79')];_0xce2def[_0x2958('0x28')]['motionChannel']=_0x1f3894[_0x2958('0x79')];_0xce2def[_0x2958('0x28')][_0x2958('0x7b')]=_0x2958('0x32');respondWithRpcPromise(_0x2958('0x7d'),_0x2958('0x7d'),{'event':_0x2958('0x84'),'message':_0xce2def[_0x2958('0x28')]},client9002);return _0x1f3894;}return null;})[_0x2958('0x21')](respondWithResult(_0x23c634,null))[_0x2958('0x2a')](handleError(_0x23c634,null));};exports['status']=function(_0x3077ef,_0x5d9ad0,_0x57ae87){if(_0x3077ef[_0x2958('0x5a')]['id']){delete _0x3077ef[_0x2958('0x5a')]['id'];}var _0x561ecc;return db['SmsMessage']['find']({'where':{'id':_0x3077ef[_0x2958('0x56')]['id']}})[_0x2958('0x21')](handleEntityNotFound(_0x5d9ad0,null))['then'](function(_0x3876cb){if(_0x3876cb){_0x561ecc=_0x3876cb;return db[_0x2958('0x85')][_0x2958('0x58')]({'where':{'id':_0x3876cb[_0x2958('0x86')]}});}})[_0x2958('0x21')](handleEntityNotFound(_0x5d9ad0,null))[_0x2958('0x21')](function(_0x35d68c){if(_0x35d68c){logger['debug'](_0x2958('0x25'),_0x2958('0x2b'),_0x2958('0x87'),_0x35d68c[_0x2958('0x40')],util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));switch(_0x35d68c[_0x2958('0x40')]){case _0x2958('0x89'):if(_0x3077ef[_0x2958('0x5a')][_0x2958('0x8a')]&&_0x3077ef['body']['MessageSid']===_0x561ecc[_0x2958('0x8b')]){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),_0x2958('0x89'),util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x2958('0x8d'):if(_0x3077ef['body'][_0x2958('0x8e')]&&_0x3077ef[_0x2958('0x5a')][_0x2958('0x8e')]===_0x561ecc[_0x2958('0x8b')]&&_[_0x2958('0x8f')](['sent',_0x2958('0x90')],_0x3077ef[_0x2958('0x5a')][_0x2958('0x91')])>=0x0){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),_0x2958('0x92'),util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x5f4622=_0x3077ef[_0x2958('0x5a')][_0x2958('0x93')][0x0];if(_0x5f4622[_0x2958('0x2b')]['groupName']===_0x2958('0x94')){return _0x561ecc['update']({'read':!![]});}else{logger[_0x2958('0x27')](_0x2958('0x8c'),_0x2958('0x2b'),'infobip',util[_0x2958('0x88')](_0x3077ef[_0x2958('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x561ecc;}})[_0x2958('0x21')](respondWithResult(_0x5d9ad0,null))[_0x2958('0x2a')](handleError(_0x5d9ad0,null));};
\ No newline at end of file
+var _0xfaf2=['keys','intersection','find','create','body','params','describe','sms-interactions','accept','sms','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','SmsInteraction','SmsInteractionId','read1stAt','format','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','User','agent','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','sequelize','SELECT','contact','rejectmessage','SmsAccount','inspect','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','plivo','MessageUUID','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','SmsMessage','rawAttributes','fieldName','type','key','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','map','options','includeAll','include','findAll','show'];(function(_0x23879d,_0x4a63b5){var _0x46d5a4=function(_0x2fd1f1){while(--_0x2fd1f1){_0x23879d['push'](_0x23879d['shift']());}};_0x46d5a4(++_0x4a63b5);}(_0xfaf2,0x169));var _0x2faf=function(_0x20b5d9,_0x144d6e){_0x20b5d9=_0x20b5d9-0x0;var _0x5cc77f=_0xfaf2[_0x20b5d9];return _0x5cc77f;};'use strict';var emlformat=require(_0x2faf('0x0'));var rimraf=require(_0x2faf('0x1'));var zipdir=require(_0x2faf('0x2'));var jsonpatch=require(_0x2faf('0x3'));var rp=require(_0x2faf('0x4'));var moment=require('moment');var BPromise=require(_0x2faf('0x5'));var Mustache=require(_0x2faf('0x6'));var util=require(_0x2faf('0x7'));var path=require(_0x2faf('0x8'));var sox=require(_0x2faf('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2faf('0xa'));var squel=require(_0x2faf('0xb'));var crypto=require(_0x2faf('0xc'));var jsforce=require(_0x2faf('0xd'));var deskjs=require(_0x2faf('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2faf('0xf'));var Redis=require(_0x2faf('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2faf('0x11'));var hardwareService=require(_0x2faf('0x12'));var logger=require(_0x2faf('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x2faf('0x14'));var licenseUtil=require(_0x2faf('0x15'));var db=require('../../mysqldb')['db'];config[_0x2faf('0x16')]=_['defaults'](config[_0x2faf('0x16')],{'host':_0x2faf('0x17'),'port':0x18eb});var socket=require(_0x2faf('0x18'))(new Redis(config[_0x2faf('0x16')]));require(_0x2faf('0x19'))[_0x2faf('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2faf('0x1b')][_0x2faf('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x2faf('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x3be136,_0x45cd2c,_0x1dc453,_0x4a2dad){return new BPromise(function(_0x3a2f18,_0x76ca87){var _0x30213e=_0x4a2dad||client;return _0x30213e[_0x2faf('0x1d')](_0x3be136,_0x1dc453)['then'](function(_0x20ff39){logger[_0x2faf('0x1e')](_0x2faf('0x1f'),_0x45cd2c,_0x2faf('0x20'));logger[_0x2faf('0x21')](_0x2faf('0x22'),_0x45cd2c,_0x2faf('0x20'),JSON['stringify'](_0x20ff39));if(_0x20ff39['error']){if(_0x20ff39['error'][_0x2faf('0x23')]===0x1f4){logger[_0x2faf('0x24')]('SmsMessage,\x20%s,\x20%s',_0x45cd2c,_0x20ff39[_0x2faf('0x24')]['message']);return _0x76ca87(_0x20ff39['error'][_0x2faf('0x25')]);}logger[_0x2faf('0x24')]('SmsMessage,\x20%s,\x20%s',_0x45cd2c,_0x20ff39[_0x2faf('0x24')][_0x2faf('0x25')]);return _0x3a2f18(_0x20ff39[_0x2faf('0x24')][_0x2faf('0x25')]);}else{logger[_0x2faf('0x1e')](_0x2faf('0x1f'),_0x45cd2c,_0x2faf('0x20'));_0x3a2f18(_0x20ff39[_0x2faf('0x26')][_0x2faf('0x25')]);}})[_0x2faf('0x27')](function(_0x770d45){logger[_0x2faf('0x24')]('SmsMessage,\x20%s,\x20%s',_0x45cd2c,_0x770d45);_0x76ca87(_0x770d45);});});}function respondWithStatusCode(_0x404f67,_0x13b655){_0x13b655=_0x13b655||0xcc;return function(_0xa092f6){if(_0xa092f6){return _0x404f67['sendStatus'](_0x13b655);}return _0x404f67[_0x2faf('0x28')](_0x13b655)[_0x2faf('0x29')]();};}function respondWithResult(_0x16f318,_0x3159b8){_0x3159b8=_0x3159b8||0xc8;return function(_0x2b60d7){if(_0x2b60d7){return _0x16f318[_0x2faf('0x28')](_0x3159b8)['json'](_0x2b60d7);}};}function respondWithFilteredResult(_0x3df9b1,_0x583d48){return function(_0x14acde){if(_0x14acde){var _0x1133a0=typeof _0x583d48[_0x2faf('0x2a')]===_0x2faf('0x2b')&&typeof _0x583d48[_0x2faf('0x2c')]===_0x2faf('0x2b');var _0xe5a8d4=_0x14acde[_0x2faf('0x2d')];var _0x3b504c=_0x1133a0?0x0:_0x583d48['offset'];var _0x2f7522=_0x1133a0?_0x14acde[_0x2faf('0x2d')]:_0x583d48[_0x2faf('0x2a')]+_0x583d48[_0x2faf('0x2c')];var _0x2d86a4;if(_0x2f7522>=_0xe5a8d4){_0x2f7522=_0xe5a8d4;_0x2d86a4=0xc8;}else{_0x2d86a4=0xce;}_0x3df9b1['status'](_0x2d86a4);return _0x3df9b1[_0x2faf('0x2e')](_0x2faf('0x2f'),_0x3b504c+'-'+_0x2f7522+'/'+_0xe5a8d4)['json'](_0x14acde);}return null;};}function patchUpdates(_0x29cb92){return function(_0xcb2caf){try{jsonpatch[_0x2faf('0x30')](_0xcb2caf,_0x29cb92,!![]);}catch(_0xf57453){return BPromise['reject'](_0xf57453);}return _0xcb2caf[_0x2faf('0x31')]();};}function saveUpdates(_0x56c8b0,_0x4d1b94){return function(_0x463bc1){if(_0x463bc1){return _0x463bc1[_0x2faf('0x32')](_0x56c8b0)[_0x2faf('0x33')](function(_0x3fcb55){return _0x3fcb55;});}return null;};}function removeEntity(_0x538982,_0x5832ca){return function(_0x1a95bf){if(_0x1a95bf){return _0x1a95bf[_0x2faf('0x34')]()[_0x2faf('0x33')](function(){_0x538982[_0x2faf('0x28')](0xcc)[_0x2faf('0x29')]();});}};}function handleEntityNotFound(_0x23ccb6,_0x5c5d57){return function(_0x2b9c5e){if(!_0x2b9c5e){_0x23ccb6[_0x2faf('0x35')](0x194);}return _0x2b9c5e;};}function handleError(_0x443922,_0x29eb57){_0x29eb57=_0x29eb57||0x1f4;return function(_0x1c84fd){logger[_0x2faf('0x24')](_0x1c84fd[_0x2faf('0x36')]);if(_0x1c84fd[_0x2faf('0x37')]){delete _0x1c84fd[_0x2faf('0x37')];}_0x443922[_0x2faf('0x28')](_0x29eb57)[_0x2faf('0x38')](_0x1c84fd);};}exports[_0x2faf('0x39')]=function(_0x3a4630,_0x56ee28){var _0x5ccfbd={},_0x23f416={},_0x442aa5={'count':0x0,'rows':[]};var _0x47dfaf=_['map'](db[_0x2faf('0x3a')][_0x2faf('0x3b')],function(_0x2d0bfb){return{'name':_0x2d0bfb[_0x2faf('0x3c')],'type':_0x2d0bfb[_0x2faf('0x3d')][_0x2faf('0x3e')]};});_0x23f416[_0x2faf('0x3f')]=_['map'](_0x47dfaf,'name');_0x23f416[_0x2faf('0x40')]=_['keys'](_0x3a4630['query']);_0x23f416['filters']=_['intersection'](_0x23f416[_0x2faf('0x3f')],_0x23f416[_0x2faf('0x40')]);_0x5ccfbd[_0x2faf('0x41')]=_['intersection'](_0x23f416[_0x2faf('0x3f')],qs['fields'](_0x3a4630['query'][_0x2faf('0x42')]));_0x5ccfbd[_0x2faf('0x41')]=_0x5ccfbd[_0x2faf('0x41')][_0x2faf('0x43')]?_0x5ccfbd[_0x2faf('0x41')]:_0x23f416['model'];if(!_0x3a4630[_0x2faf('0x40')][_0x2faf('0x44')](_0x2faf('0x45'))){_0x5ccfbd[_0x2faf('0x2c')]=qs[_0x2faf('0x2c')](_0x3a4630[_0x2faf('0x40')][_0x2faf('0x2c')]);_0x5ccfbd[_0x2faf('0x2a')]=qs[_0x2faf('0x2a')](_0x3a4630[_0x2faf('0x40')][_0x2faf('0x2a')]);}_0x5ccfbd[_0x2faf('0x46')]=qs['sort'](_0x3a4630[_0x2faf('0x40')][_0x2faf('0x47')]);_0x5ccfbd[_0x2faf('0x48')]=qs[_0x2faf('0x49')](_[_0x2faf('0x4a')](_0x3a4630[_0x2faf('0x40')],_0x23f416[_0x2faf('0x49')]),_0x47dfaf);if(_0x3a4630['query'][_0x2faf('0x4b')]){_0x5ccfbd[_0x2faf('0x48')]=_[_0x2faf('0x4c')](_0x5ccfbd[_0x2faf('0x48')],{'$or':_[_0x2faf('0x4d')](_0x47dfaf,function(_0x1acbd6){if(_0x1acbd6[_0x2faf('0x3d')]!=='VIRTUAL'){var _0x3b53ab={};_0x3b53ab[_0x1acbd6['name']]={'$like':'%'+_0x3a4630[_0x2faf('0x40')][_0x2faf('0x4b')]+'%'};return _0x3b53ab;}})});}_0x5ccfbd=_[_0x2faf('0x4c')]({},_0x5ccfbd,_0x3a4630[_0x2faf('0x4e')]);var _0xab4644={'where':_0x5ccfbd[_0x2faf('0x48')]};return db['SmsMessage'][_0x2faf('0x2d')](_0xab4644)[_0x2faf('0x33')](function(_0x17f697){_0x442aa5[_0x2faf('0x2d')]=_0x17f697;if(_0x3a4630[_0x2faf('0x40')][_0x2faf('0x4f')]){_0x5ccfbd[_0x2faf('0x50')]=[{'all':!![]}];}return db[_0x2faf('0x3a')][_0x2faf('0x51')](_0x5ccfbd);})[_0x2faf('0x33')](function(_0x49e96f){_0x442aa5['rows']=_0x49e96f;return _0x442aa5;})['then'](respondWithFilteredResult(_0x56ee28,_0x5ccfbd))[_0x2faf('0x27')](handleError(_0x56ee28,null));};exports[_0x2faf('0x52')]=function(_0x5d6449,_0x247608){var _0x5304a0={'raw':!![],'where':{'id':_0x5d6449['params']['id']}},_0x3c3e9c={};_0x3c3e9c[_0x2faf('0x3f')]=_[_0x2faf('0x53')](db[_0x2faf('0x3a')]['rawAttributes']);_0x3c3e9c['query']=_[_0x2faf('0x53')](_0x5d6449[_0x2faf('0x40')]);_0x3c3e9c['filters']=_[_0x2faf('0x54')](_0x3c3e9c['model'],_0x3c3e9c['query']);_0x5304a0[_0x2faf('0x41')]=_[_0x2faf('0x54')](_0x3c3e9c['model'],qs[_0x2faf('0x42')](_0x5d6449[_0x2faf('0x40')][_0x2faf('0x42')]));_0x5304a0[_0x2faf('0x41')]=_0x5304a0[_0x2faf('0x41')][_0x2faf('0x43')]?_0x5304a0[_0x2faf('0x41')]:_0x3c3e9c[_0x2faf('0x3f')];if(_0x5d6449[_0x2faf('0x40')][_0x2faf('0x4f')]){_0x5304a0['include']=[{'all':!![]}];}_0x5304a0=_[_0x2faf('0x4c')]({},_0x5304a0,_0x5d6449['options']);return db[_0x2faf('0x3a')][_0x2faf('0x55')](_0x5304a0)[_0x2faf('0x33')](handleEntityNotFound(_0x247608,null))[_0x2faf('0x33')](respondWithResult(_0x247608,null))[_0x2faf('0x27')](handleError(_0x247608,null));};exports[_0x2faf('0x56')]=function(_0x1c76d4,_0x387054){return db['SmsMessage'][_0x2faf('0x56')](_0x1c76d4['body'],{})[_0x2faf('0x33')](respondWithResult(_0x387054,0xc9))[_0x2faf('0x27')](handleError(_0x387054,null));};exports[_0x2faf('0x32')]=function(_0x53c15d,_0x3992cc){if(_0x53c15d['body']['id']){delete _0x53c15d[_0x2faf('0x57')]['id'];}return db[_0x2faf('0x3a')]['find']({'where':{'id':_0x53c15d[_0x2faf('0x58')]['id']}})[_0x2faf('0x33')](handleEntityNotFound(_0x3992cc,null))['then'](saveUpdates(_0x53c15d[_0x2faf('0x57')],null))[_0x2faf('0x33')](respondWithResult(_0x3992cc,null))[_0x2faf('0x27')](handleError(_0x3992cc,null));};exports['destroy']=function(_0x3e1528,_0x28662a){return db['SmsMessage'][_0x2faf('0x55')]({'where':{'id':_0x3e1528[_0x2faf('0x58')]['id']}})[_0x2faf('0x33')](handleEntityNotFound(_0x28662a,null))[_0x2faf('0x33')](removeEntity(_0x28662a,null))['catch'](handleError(_0x28662a,null));};exports[_0x2faf('0x59')]=function(_0x169822,_0x21f543){return db['SmsMessage'][_0x2faf('0x59')]()[_0x2faf('0x33')](respondWithResult(_0x21f543,null))['catch'](handleError(_0x21f543,null));};var interaction_log=require(_0x2faf('0x13'))(_0x2faf('0x5a'));exports[_0x2faf('0x5b')]=function(_0x58c1de,_0x1daa86,_0x2ce057){var _0x11687c={'agent':{},'channel':_0x2faf('0x5c')};if(_0x58c1de[_0x2faf('0x57')]['id']){delete _0x58c1de[_0x2faf('0x57')]['id'];}_0x58c1de[_0x2faf('0x57')][_0x2faf('0x5d')]=!![];_0x58c1de[_0x2faf('0x57')][_0x2faf('0x5e')]=moment()['format'](_0x2faf('0x5f'));_0x58c1de['body'][_0x2faf('0x60')]=_0x58c1de[_0x2faf('0x57')]['UserId']||_0x58c1de[_0x2faf('0x61')]['id'];_0x11687c['agent']['id']=_0x58c1de['body'][_0x2faf('0x60')];return db[_0x2faf('0x3a')][_0x2faf('0x55')]({'where':{'id':_0x58c1de[_0x2faf('0x58')]['id'],'UserId':null}})[_0x2faf('0x33')](handleEntityNotFound(_0x1daa86,null))['then'](saveUpdates(_0x58c1de['body'],null))[_0x2faf('0x33')](function(_0x1cde60){if(_0x1cde60){_0x11687c[_0x2faf('0x25')]=_0x1cde60['get']({'plain':!![]});return db[_0x2faf('0x62')][_0x2faf('0x55')]({'where':{'id':_0x1cde60[_0x2faf('0x63')]}});}return null;})[_0x2faf('0x33')](handleEntityNotFound(_0x1daa86,null))[_0x2faf('0x33')](function(_0x64e951){if(_0x64e951){return _0x64e951[_0x2faf('0x32')]({'UserId':_0x58c1de[_0x2faf('0x57')][_0x2faf('0x60')],'read1stAt':_['isNil'](_0x64e951[_0x2faf('0x64')])?moment()[_0x2faf('0x65')](_0x2faf('0x5f')):undefined});}return null;})[_0x2faf('0x33')](function(_0x575ac6){if(_0x575ac6){_0x11687c[_0x2faf('0x66')]=_0x575ac6[_0x2faf('0x67')]({'plain':!![]});interaction_log[_0x2faf('0x1e')](_0x2faf('0x68'),_0x58c1de['user']['id'],_0x58c1de['user'][_0x2faf('0x37')],_0x58c1de[_0x2faf('0x61')][_0x2faf('0x69')],_0x11687c[_0x2faf('0x66')]['id'],_0x58c1de[_0x2faf('0x57')]?JSON[_0x2faf('0x6a')](_0x58c1de['body']):_0x2faf('0x6b'));return respondWithRpcPromise(_0x2faf('0x6c'),_0x2faf('0x6d'),_0x11687c);}return null;})[_0x2faf('0x33')](function(_0x3893e5){var _0x22298=_0x2faf('0x6e')+_0x3893e5[_0x2faf('0x25')]['ContactId'];return db['sequelize'][_0x2faf('0x40')](_0x22298,{'type':db[_0x2faf('0x6f')][_0x2faf('0x70')]['SELECT'],'raw':!![]})[_0x2faf('0x33')](function(_0x415fd1){return _0x415fd1;});})[_0x2faf('0x33')](function(_0x24fa35){if(_0x24fa35){_0x11687c['message']['contact']=_0x24fa35[0x0];if(!_0x58c1de[_0x2faf('0x57')][_0x2faf('0x60')])return;return db[_0x2faf('0x71')][_0x2faf('0x55')]({'where':{'id':_0x58c1de[_0x2faf('0x57')][_0x2faf('0x60')],'role':_0x2faf('0x72')},'attributes':['id',_0x2faf('0x37'),_0x2faf('0x73'),_0x2faf('0x74'),_0x2faf('0x75')],'raw':!![]});}return null;})[_0x2faf('0x33')](function(_0x27db44){if(!_0x27db44)return null;_0x11687c[_0x2faf('0x25')][_0x2faf('0x72')]=_0x27db44;return _0x11687c;})[_0x2faf('0x33')](function(_0x5682eb){if(_0x5682eb){if(_0x58c1de[_0x2faf('0x57')][_0x2faf('0x76')]){_0x11687c[_0x2faf('0x25')]['interface']=util[_0x2faf('0x65')](_0x2faf('0x77'),_0x58c1de[_0x2faf('0x61')][_0x2faf('0x37')]);_0x11687c['message'][_0x2faf('0x78')]=_0x11687c[_0x2faf('0x78')];_0x11687c[_0x2faf('0x25')][_0x2faf('0x79')]=_0x11687c['channel'];_0x11687c[_0x2faf('0x25')][_0x2faf('0x7a')]='accept';return respondWithRpcPromise(_0x2faf('0x7b'),_0x2faf('0x7b'),{'event':_0x2faf('0x7c'),'message':_0x11687c['message']},client9002)[_0x2faf('0x33')](function(){return _0x11687c;});}return _0x11687c;}return null;})[_0x2faf('0x33')](respondWithResult(_0x1daa86,null))[_0x2faf('0x27')](handleError(_0x1daa86,null));};var interaction_log=require(_0x2faf('0x13'))('sms-interactions');exports[_0x2faf('0x7d')]=function(_0xa8f325,_0x2e6fe7,_0x314d58){var _0x2a90ff={'agent':{},'channel':_0x2faf('0x5c')};if(_0xa8f325['body']['id']){delete _0xa8f325['body']['id'];}_0xa8f325['body'][_0x2faf('0x60')]=_0xa8f325['body'][_0x2faf('0x60')]||_0xa8f325[_0x2faf('0x61')]['id'];_0x2a90ff[_0x2faf('0x72')]['id']=_0xa8f325[_0x2faf('0x57')][_0x2faf('0x60')];return db[_0x2faf('0x3a')]['find']({'where':{'id':_0xa8f325[_0x2faf('0x58')]['id'],'UserId':null}})[_0x2faf('0x33')](handleEntityNotFound(_0x2e6fe7,null))[_0x2faf('0x33')](function(_0x3260b0){if(_0x3260b0){_0x2a90ff[_0x2faf('0x25')]=_0x3260b0['get']({'plain':!![]});return db['SmsInteraction']['find']({'where':{'id':_0x3260b0[_0x2faf('0x63')]}});}return null;})[_0x2faf('0x33')](handleEntityNotFound(_0x2e6fe7,null))['then'](function(_0x1d385f){if(_0x1d385f){_0x2a90ff[_0x2faf('0x66')]=_0x1d385f['get']({'plain':!![]});interaction_log[_0x2faf('0x1e')](_0x2faf('0x7e'),_0xa8f325[_0x2faf('0x61')]['id'],_0xa8f325[_0x2faf('0x61')][_0x2faf('0x37')],_0xa8f325[_0x2faf('0x61')][_0x2faf('0x69')],_0x2a90ff[_0x2faf('0x66')]['id'],_0xa8f325[_0x2faf('0x57')]?JSON[_0x2faf('0x6a')](_0xa8f325[_0x2faf('0x57')]):_0x2faf('0x6b'));return respondWithRpcPromise(_0x2faf('0x7f'),'rejectMessage',_0x2a90ff);}return null;})[_0x2faf('0x33')](function(_0x1f0cb7){var _0x10a8b6=_0x2faf('0x6e')+_0x1f0cb7[_0x2faf('0x25')]['ContactId'];return db[_0x2faf('0x80')][_0x2faf('0x40')](_0x10a8b6,{'type':db[_0x2faf('0x6f')][_0x2faf('0x70')][_0x2faf('0x81')],'raw':!![]})[_0x2faf('0x33')](function(_0x121201){return _0x121201;});})[_0x2faf('0x33')](function(_0x2379a8){if(_0x2379a8){_0x2a90ff[_0x2faf('0x25')][_0x2faf('0x82')]=_0x2379a8[0x0];if(!_0xa8f325['body'][_0x2faf('0x60')])return;return db[_0x2faf('0x71')][_0x2faf('0x55')]({'where':{'id':_0xa8f325[_0x2faf('0x57')][_0x2faf('0x60')],'role':'agent'},'attributes':['id',_0x2faf('0x37'),_0x2faf('0x73'),_0x2faf('0x74'),_0x2faf('0x75')],'raw':!![]});}return null;})[_0x2faf('0x33')](function(_0x3ea4e2){if(!_0x3ea4e2)return null;_0x2a90ff[_0x2faf('0x25')][_0x2faf('0x72')]=_0x3ea4e2;return _0x2a90ff;})[_0x2faf('0x33')](function(_0x561bd){if(_0x561bd){_0x561bd['message']['interface']=util[_0x2faf('0x65')]('SIP/%s',_0xa8f325[_0x2faf('0x61')][_0x2faf('0x37')]);_0x561bd[_0x2faf('0x25')][_0x2faf('0x78')]=_0x2a90ff['channel'];_0x561bd['message'][_0x2faf('0x79')]=_0x2a90ff['channel'];_0x561bd[_0x2faf('0x25')][_0x2faf('0x7a')]='reject';respondWithRpcPromise(_0x2faf('0x7b'),_0x2faf('0x7b'),{'event':_0x2faf('0x83'),'message':_0x561bd[_0x2faf('0x25')]},client9002);return _0x2a90ff;}return null;})[_0x2faf('0x33')](respondWithResult(_0x2e6fe7,null))[_0x2faf('0x27')](handleError(_0x2e6fe7,null));};exports[_0x2faf('0x28')]=function(_0x36132d,_0x2cabd4,_0x4953e3){if(_0x36132d[_0x2faf('0x57')]['id']){delete _0x36132d[_0x2faf('0x57')]['id'];}var _0x415650;return db[_0x2faf('0x3a')][_0x2faf('0x55')]({'where':{'id':_0x36132d['params']['id']}})['then'](handleEntityNotFound(_0x2cabd4,null))['then'](function(_0x5a01d2){if(_0x5a01d2){_0x415650=_0x5a01d2;return db[_0x2faf('0x84')]['find']({'where':{'id':_0x5a01d2['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x2cabd4,null))[_0x2faf('0x33')](function(_0x1d2497){if(_0x1d2497){logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x1d2497['type'],util[_0x2faf('0x85')](_0x36132d[_0x2faf('0x57')],{'showHidden':![],'depth':null}));switch(_0x1d2497[_0x2faf('0x3d')]){case'twilio':if(_0x36132d[_0x2faf('0x57')]['MessageSid']&&_0x36132d[_0x2faf('0x57')][_0x2faf('0x86')]===_0x415650[_0x2faf('0x87')]){return _0x415650[_0x2faf('0x32')]({'read':!![]});}else{logger['error'](_0x2faf('0x88'),'status',_0x2faf('0x89'),util['inspect'](_0x36132d[_0x2faf('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2faf('0x8a'):if(_0x36132d['body']['MessageUUID']&&_0x36132d[_0x2faf('0x57')][_0x2faf('0x8b')]===_0x415650[_0x2faf('0x87')]&&_['indexOf']([_0x2faf('0x8c'),_0x2faf('0x8d')],_0x36132d[_0x2faf('0x57')][_0x2faf('0x8e')])>=0x0){return _0x415650[_0x2faf('0x32')]({'read':!![]});}else{logger['error'](_0x2faf('0x88'),_0x2faf('0x28'),_0x2faf('0x8f'),util[_0x2faf('0x85')](_0x36132d[_0x2faf('0x57')],{'showHidden':![],'depth':null}));}break;case _0x2faf('0x90'):var _0x2421ba=_0x36132d[_0x2faf('0x57')][_0x2faf('0x91')][0x0];if(_0x2421ba[_0x2faf('0x28')][_0x2faf('0x92')]===_0x2faf('0x93')){return _0x415650[_0x2faf('0x32')]({'read':!![]});}else{logger[_0x2faf('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2faf('0x28'),_0x2faf('0x90'),util['inspect'](_0x36132d[_0x2faf('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x415650;}})[_0x2faf('0x33')](respondWithResult(_0x2cabd4,null))['catch'](handleError(_0x2cabd4,null));};
\ No newline at end of file
index 2b4568e..223e5d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1710=['exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5907d2,_0x170409){var _0x342ef2=function(_0x542cb0){while(--_0x542cb0){_0x5907d2['push'](_0x5907d2['shift']());}};_0x342ef2(++_0x170409);}(_0x1710,0x1ae));var _0x0171=function(_0x132a0d,_0x33ceaf){_0x132a0d=_0x132a0d-0x0;var _0x5df20a=_0x1710[_0x132a0d];return _0x5df20a;};'use strict';var EventEmitter=require(_0x0171('0x0'));var SmsMessage=require(_0x0171('0x1'))['db'][_0x0171('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x0171('0x3')](0x0);var events={'afterCreate':_0x0171('0x4'),'afterUpdate':_0x0171('0x5'),'afterDestroy':_0x0171('0x6')};function emitEvent(_0x284510){return function(_0x354fab,_0x189bac,_0x445d1a){SmsMessageEvents[_0x0171('0x7')](_0x284510+':'+_0x354fab['id'],_0x354fab);SmsMessageEvents[_0x0171('0x7')](_0x284510,_0x354fab);_0x445d1a(null);};}for(var e in events){if(events[_0x0171('0x8')](e)){var event=events[e];SmsMessage[_0x0171('0x9')](e,emitEvent(event));}}module[_0x0171('0xa')]=SmsMessageEvents;
\ No newline at end of file
+var _0x02ab=['exports','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x1890cc,_0x2e595a){var _0x43a087=function(_0x5f1644){while(--_0x5f1644){_0x1890cc['push'](_0x1890cc['shift']());}};_0x43a087(++_0x2e595a);}(_0x02ab,0x141));var _0xb02a=function(_0x890caf,_0x11d963){_0x890caf=_0x890caf-0x0;var _0x44a9b3=_0x02ab[_0x890caf];return _0x44a9b3;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0xb02a('0x0'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xb02a('0x1')](0x0);var events={'afterCreate':_0xb02a('0x2'),'afterUpdate':_0xb02a('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4d24de){return function(_0x5f2ca6,_0x516cba,_0x396f49){SmsMessageEvents[_0xb02a('0x4')](_0x4d24de+':'+_0x5f2ca6['id'],_0x5f2ca6);SmsMessageEvents[_0xb02a('0x4')](_0x4d24de,_0x5f2ca6);_0x396f49(null);};}for(var e in events){if(events[_0xb02a('0x5')](e)){var event=events[e];SmsMessage[_0xb02a('0x6')](e,emitEvent(event));}}module[_0xb02a('0x7')]=SmsMessageEvents;
\ No newline at end of file
index df0018e..c3c625d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e19=['hex','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','base64','https://api.intelepeer.com/_rest/v4/app/sms/send','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','application/json','refid','status','intelepeer','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','UserId','isNil','SmsInteractionId','SmsInteraction','then','update','catch','error','secret','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','sender','&password=','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','read','clicksend','username','xCALLY\x20Motion','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','http_code','queued_count','head','data','message_id','clickSend','plivo','authId','remote','token','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','sort','md5','digest'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x6e19,0x19a));var _0x96e1=function(_0x17c536,_0x5126fa){_0x17c536=_0x17c536-0x0;var _0x42318e=_0x6e19[_0x17c536];return _0x42318e;};'use strict';var _=require(_0x96e1('0x0'));var util=require(_0x96e1('0x1'));var logger=require(_0x96e1('0x2'))('api');var moment=require(_0x96e1('0x3'));var BPromise=require(_0x96e1('0x4'));var rp=require(_0x96e1('0x5'));var fs=require('fs');var path=require(_0x96e1('0x6'));var rimraf=require(_0x96e1('0x7'));var config=require(_0x96e1('0x8'));var attributes=require(_0x96e1('0x9'));module['exports']=function(_0x4e5203,_0x20086a){return _0x4e5203[_0x96e1('0xa')](_0x96e1('0xb'),attributes,{'tableName':_0x96e1('0xc'),'paranoid':![],'indexes':[{'name':_0x96e1('0xd'),'fields':['messageId']},{'name':_0x96e1('0xe'),'fields':[_0x96e1('0xf')],'type':_0x96e1('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4bab81,_0x33a9d6,_0x31ba42){var _0xf40bb1=_0x4e5203[_0x96e1('0x11')];var _0x3e400c=_0x4bab81[_0x96e1('0x12')]({'plain':!![]});if(_0x3e400c['direction']['toLowerCase']()==='in'||_0x3e400c[_0x96e1('0x13')][_0x96e1('0x14')]()===_0x96e1('0x15')&&!_0x3e400c['secret']&&!_['isNil'](_0x3e400c[_0x96e1('0x16')])&&!_[_0x96e1('0x17')](_0x3e400c[_0x96e1('0x18')])){_0xf40bb1[_0x96e1('0x19')]['findOne']({'where':{'id':_0x3e400c['SmsInteractionId']}})[_0x96e1('0x1a')](function(_0x72bbda){if(_0x72bbda){_0x72bbda[_0x96e1('0x1b')]({'lastMsgAt':_0x3e400c['createdAt'],'lastMsgDirection':_0x3e400c[_0x96e1('0x13')][_0x96e1('0x14')]()});}})[_0x96e1('0x1c')](function(_0x4f2c37){console[_0x96e1('0x1d')](_0x4f2c37);});}if(_0x3e400c[_0x96e1('0x13')]===_0x96e1('0x15')&&!_0x3e400c[_0x96e1('0x1e')]){var _0x49915a;_0xf40bb1[_0x96e1('0x1f')][_0x96e1('0x20')]({'where':{'id':_0x3e400c[_0x96e1('0x21')]},'raw':!![]})['then'](function(_0x56ffb9){_0x49915a=_0x56ffb9;if(_0x49915a&&_0x49915a['type']){switch(_0x49915a[_0x96e1('0x22')]){case _0x96e1('0x23'):var _0xada863=require(_0x96e1('0x23'));if(_0x49915a[_0x96e1('0x24')]&&_0x49915a[_0x96e1('0x25')]&&_0x49915a[_0x96e1('0x26')]){var _0x2baf68=new _0xada863(_0x49915a[_0x96e1('0x24')],_0x49915a[_0x96e1('0x25')]);_0x2baf68[_0x96e1('0x27')][_0x96e1('0x28')]({'body':_0x3e400c['body'],'to':_0x3e400c[_0x96e1('0x26')],'from':_0x49915a[_0x96e1('0x26')],'statusCallback':_0x49915a['remote']+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a['token']})['then'](function(_0x2a7a99){if(_0x2a7a99[_0x96e1('0x2b')]){return _0x4bab81[_0x96e1('0x1b')]({'messageId':_0x2a7a99['sid']});}})[_0x96e1('0x1c')](function(_0x4a44a3){logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x23'),util[_0x96e1('0x2e')](_0x4a44a3,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x96e1('0x2f'):var _0x11a0f7=_0x96e1('0x30');if(_0x49915a['username']&&_0x49915a[_0x96e1('0x31')]){var _0xb4da3a={'recipient':[_0x3e400c[_0x96e1('0x26')]],'message':_0x3e400c[_0x96e1('0xf')],'message_type':_0x49915a[_0x96e1('0x32')]};if(_0x49915a[_0x96e1('0x32')]&&_0x49915a[_0x96e1('0x32')]!=='SI'){_0xb4da3a[_0x96e1('0x33')]=_0x49915a['phone'];}var _0x3242da={'url':_0x11a0f7+'login?username='+_0x49915a['username']+_0x96e1('0x34')+_0x49915a[_0x96e1('0x31')],'method':'GET'};rp(_0x3242da)[_0x96e1('0x1a')](function(_0x5865a1){var _0x2a9fea=_0x5865a1['split'](';');var _0x3f98a3={'user_key':_0x2a9fea[0x0],'session_key':_0x2a9fea[0x1]};_0x3242da={'url':_0x11a0f7+_0x96e1('0x35'),'method':_0x96e1('0x36'),'headers':{'user_key':_0x3f98a3[_0x96e1('0x37')],'Session_key':_0x3f98a3[_0x96e1('0x38')]},'json':!![],'body':_0xb4da3a};return rp(_0x3242da);})[_0x96e1('0x1a')](function(_0x56b607){if(_0x56b607[_0x96e1('0x39')]>=0x1){var _0x3f3ef5={'messageId':_0x56b607[_0x96e1('0x3a')]};if(_0x49915a[_0x96e1('0x32')]!=='GP'||!_0x49915a[_0x96e1('0x3b')]){_0x3f3ef5['read']=!![];}return _0x4bab81['update'](_0x3f3ef5);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x96e1('0x2f'),util[_0x96e1('0x2e')](_0x56b607,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x1f4a86){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'skebby',util[_0x96e1('0x2e')](_0x1f4a86,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x2f'),_0x96e1('0x3c'));}break;case _0x96e1('0x3d'):if(_0x49915a[_0x96e1('0x25')]){var _0x3b6b73={'recipient':_0x3e400c['phone'],'message':_0x3e400c[_0x96e1('0xf')],'sender':_0x49915a[_0x96e1('0x3e')]||_0x49915a[_0x96e1('0x26')],'authorization':_0x49915a['authToken']};var _0x33a9d6={'method':_0x96e1('0x36'),'uri':_0x96e1('0x3f'),'body':_0x3b6b73,'json':!![]};rp(_0x33a9d6)['then'](function(_0x51772f){var _0x499ea7={'messageId':_0x51772f['requestid']};if(!_0x49915a[_0x96e1('0x3b')]){_0x499ea7[_0x96e1('0x40')]=!![];}return _0x4bab81['update'](_0x499ea7);})[_0x96e1('0x1c')](function(_0x51f57c){logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x3d'),util['inspect'](_0x51f57c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x3d'),'Missing\x20parameters:\x20authToken');}break;case _0x96e1('0x41'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){var _0x3b6b73={'messages':[{'source':_0x96e1('0x43'),'to':_0x3e400c[_0x96e1('0x26')],'body':_0x3e400c[_0x96e1('0xf')],'from':_0x49915a[_0x96e1('0x3e')]||_0x49915a['phone']}]};var _0x49f194=util[_0x96e1('0x44')]('%s:%s',_0x49915a[_0x96e1('0x42')],_0x49915a[_0x96e1('0x31')]);var _0x33a9d6={'method':_0x96e1('0x36'),'uri':_0x96e1('0x45'),'body':_0x3b6b73,'headers':{'Authorization':util['format'](_0x96e1('0x46'),new Buffer(_0x49f194)['toString']('base64'))},'json':!![]};rp(_0x33a9d6)[_0x96e1('0x1a')](function(_0x8a08bf){if(_0x8a08bf[_0x96e1('0x47')]>=0xc8&&_0x8a08bf[_0x96e1('0x47')]<=0xce){if(_0x8a08bf['data']&&_0x8a08bf['data'][_0x96e1('0x48')]>0x0){var _0x1dfdb7=_[_0x96e1('0x49')](_0x8a08bf[_0x96e1('0x4a')]['messages']);var _0x1aab20={'messageId':_0x1dfdb7[_0x96e1('0x4b')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x1aab20[_0x96e1('0x40')]=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x1aab20);}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x4c'),util[_0x96e1('0x2e')](_0x8a08bf,{'showHidden':![],'depth':null}));}}else{logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x4c'),util[_0x96e1('0x2e')](_0x8a08bf,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x274d22){logger['error'](_0x96e1('0x2c'),'afterCreate','clickSend',util[_0x96e1('0x2e')](_0x274d22,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x4c'),_0x96e1('0x3c'));}break;case _0x96e1('0x4d'):if(_0x49915a[_0x96e1('0x4e')]&&_0x49915a[_0x96e1('0x25')]){var _0x3b6b73={'dst':_0x3e400c['phone'],'text':_0x3e400c[_0x96e1('0xf')],'src':_0x49915a[_0x96e1('0x3e')]||_0x49915a[_0x96e1('0x26')],'url':_0x49915a[_0x96e1('0x4f')]+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a[_0x96e1('0x50')]};var _0x49f194=util[_0x96e1('0x44')](_0x96e1('0x51'),_0x49915a[_0x96e1('0x4e')],_0x49915a['authToken']);var _0x33a9d6={'method':'POST','uri':util[_0x96e1('0x44')](_0x96e1('0x52'),_0x49915a[_0x96e1('0x4e')]),'body':_0x3b6b73,'headers':{'Authorization':util[_0x96e1('0x44')](_0x96e1('0x46'),new Buffer(_0x49f194)[_0x96e1('0x53')]('base64'))},'json':!![]};rp(_0x33a9d6)[_0x96e1('0x1a')](function(_0x2809bd){var _0x44e7a4={'messageId':_0x2809bd[_0x96e1('0x54')][0x0]};return _0x4bab81[_0x96e1('0x1b')](_0x44e7a4);})[_0x96e1('0x1c')](function(_0x24946c){logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x4d'),util[_0x96e1('0x2e')](_0x24946c,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x4d'),_0x96e1('0x55'));}break;case _0x96e1('0x56'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){if(_0x49915a[_0x96e1('0x57')]){var _0x378ca8={'method':'POST','uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x58'),'body':{'username':_0x49915a[_0x96e1('0x42')],'password':_0x49915a[_0x96e1('0x31')]},'json':!![]};return rp(_0x378ca8)[_0x96e1('0x1a')](function(_0xd9a288){var _0x4862bb={'method':_0x96e1('0x36'),'uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x59'),'body':{'messages':[{'from':_0x49915a[_0x96e1('0x26')],'destinations':[{'to':_0x3e400c[_0x96e1('0x26')]}],'text':_0x3e400c[_0x96e1('0xf')],'notifyUrl':_0x49915a[_0x96e1('0x4f')]+_0x96e1('0x29')+_0x3e400c['id']+_0x96e1('0x2a')+_0x49915a[_0x96e1('0x50')],'notifyContentType':'application/json','callbackData':_0x49915a['phone']+';'+_0x3e400c['body']}]},'headers':{'Authorization':_0x96e1('0x5a')+_0xd9a288[_0x96e1('0x50')]},'json':!![]};return rp(_0x4862bb)[_0x96e1('0x1a')](function(_0x12239e){if(_0x12239e[_0x96e1('0x27')]){var _0x1c1f3e={'messageId':_0x12239e[_0x96e1('0x27')][0x0][_0x96e1('0xd')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x1c1f3e[_0x96e1('0x40')]=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x1c1f3e);}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate','infobip',util['inspect'](_0x12239e,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2381cf){return logger['error'](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x56'),util[_0x96e1('0x2e')](_0x2381cf,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x56'),_0x96e1('0x5b'));}}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x56'),_0x96e1('0x3c'));}break;case _0x96e1('0x5c'):var _0xe3f561=require(_0x96e1('0x5d'));if(_0x49915a[_0x96e1('0x5e')]){var _0x23f750={};_0x23f750[_0x96e1('0x5f')]=_0x49915a['username'];_0x23f750[_0x96e1('0x26')]=_0x3e400c[_0x96e1('0x26')];_0x23f750[_0x96e1('0x33')]=_0x49915a['phone'];_0x23f750[_0x96e1('0x60')]=_0x3e400c[_0x96e1('0xf')];_0x23f750[_0x96e1('0x61')]=+new Date();var _0x3bfbaf='';var _0x3075cf='';var _0x4def35=Object[_0x96e1('0x62')](_0x23f750);_0x4def35[_0x96e1('0x63')]();for(var _0x5166c9=0x0;_0x5166c9<_0x4def35['length'];_0x5166c9++){if(_0x3bfbaf!=''){_0x3bfbaf+='&';}_0x3bfbaf+=_0x4def35[_0x5166c9]+'='+encodeURIComponent(_0x23f750[_0x4def35[_0x5166c9]]);_0x3075cf+=_0x23f750[_0x4def35[_0x5166c9]];}_0x3075cf+=_0x49915a[_0x96e1('0x5e')];_0x3075cf=_0xe3f561['createHash'](_0x96e1('0x64'))['update'](_0x3075cf)[_0x96e1('0x65')](_0x96e1('0x66'));if(_0x3bfbaf!==''){_0x3bfbaf+='&';}_0x3bfbaf+='signature='+_0x3075cf;var _0x3242da={'method':_0x96e1('0x67'),'uri':_0x49915a[_0x96e1('0x57')]+_0x96e1('0x68')+_0x3bfbaf,'json':!![]};return rp(_0x3242da)[_0x96e1('0x1a')](function(_0x166d8b){var _0x1f0039=Object['keys'](_0x166d8b);if(_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x1d')]&&parseInt(_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x1d')])===0x0){var _0x5adf47={'messageId':_0x166d8b[_0x1f0039[0x0]][_0x96e1('0x69')]};if(!_0x49915a[_0x96e1('0x3b')]){_0x5adf47['read']=!![];}return _0x4bab81[_0x96e1('0x1b')](_0x5adf47);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x5c'),util[_0x96e1('0x2e')](_0x166d8b[_0x96e1('0x1d')],{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x1bb986){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x5c'),util[_0x96e1('0x2e')](_0x1bb986,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x5c'),_0x96e1('0x6a'));}break;case _0x96e1('0x6b'):if(_0x49915a[_0x96e1('0x5e')]){var _0x2f4140={'method':_0x96e1('0x36'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x49915a[_0x96e1('0x5e')]},'body':{'content':_0x3e400c[_0x96e1('0xf')],'to':[_0x3e400c[_0x96e1('0x26')]],'from':_0x49915a['phone'],'binary':![],'clientMessageId':_0x96e1('0x6c'),'charset':_0x96e1('0x6d')},'json':!![]};rp(_0x2f4140)[_0x96e1('0x1a')](function(_0x310c67){if(!_0x310c67['error']){var _0xbd9aa7={'messageId':_0x310c67[_0x96e1('0x27')][0x0][_0x96e1('0x6e')]};if(!_0x49915a[_0x96e1('0x3b')]){_0xbd9aa7['read']=!![];}return _0x4bab81[_0x96e1('0x1b')](_0xbd9aa7);}else{return logger[_0x96e1('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),'clickatell',util[_0x96e1('0x2e')](_0x310c67[_0x96e1('0x1d')],{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x851cf0){return logger['error'](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x6b'),util[_0x96e1('0x2e')](_0x851cf0,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),'afterCreate',_0x96e1('0x6b'),'Missing\x20parameters:\x20apiKey');}break;case _0x96e1('0x6f'):if(_0x49915a[_0x96e1('0x42')]&&_0x49915a[_0x96e1('0x31')]){var _0x49f194=util[_0x96e1('0x44')]('%s:%s',_0x49915a[_0x96e1('0x42')],_0x49915a[_0x96e1('0x31')]);var _0x33a9d6={'method':'POST','uri':_0x96e1('0x70')+_0x49915a[_0x96e1('0x71')]+'/messages','body':{'to':[_0x3e400c[_0x96e1('0x26')]],'text':_0x3e400c[_0x96e1('0xf')],'from':_0x49915a[_0x96e1('0x26')],'applicationId':_0x49915a[_0x96e1('0x72')]},'headers':{'Authorization':util[_0x96e1('0x44')]('Basic\x20%s',new Buffer(_0x49f194)[_0x96e1('0x53')](_0x96e1('0x73')))},'json':!![]};rp(_0x33a9d6)['then'](function(_0x4ed3eb){if(_0x4ed3eb['id']){var _0x4c9eba={'messageId':_0x4ed3eb['id']};return _0x4bab81[_0x96e1('0x1b')](_0x4c9eba);}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x6f'),util[_0x96e1('0x2e')](_0x4ed3eb,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x226794){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x96e1('0x2d'),_0x96e1('0x6f'),util['inspect'](_0x226794,{'showHidden':![],'depth':null}));});}else{logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'bandwidth',_0x96e1('0x3c'));}break;case'intelepeer':if(_0x49915a[_0x96e1('0x5e')]){var _0x19f62f={};var _0x3242da={'method':_0x96e1('0x36'),'uri':_0x96e1('0x74'),'headers':{'Authorization':'Bearer\x20'+_0x49915a['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x49915a[_0x96e1('0x26')],'to':_0x3e400c['phone'],'text':_0x3e400c[_0x96e1('0xf')]},'json':!![]};return rp(_0x3242da)[_0x96e1('0x1a')](function(_0x54f460){if(_0x54f460[_0x96e1('0x75')]==0xca){_0x19f62f[_0x96e1('0x76')]=_0x54f460;var _0x2c0978={'method':_0x96e1('0x36'),'uri':_0x96e1('0x77'),'headers':{'Authorization':'Bearer\x20'+_0x49915a[_0x96e1('0x5e')],'Content-Type':_0x96e1('0x78')},'body':{'refid':_0x19f62f[_0x96e1('0x76')][_0x96e1('0x79')]},'json':!![]};return rp(_0x2c0978)[_0x96e1('0x1a')](function(_0xdd228b){_0x19f62f[_0x96e1('0x7a')]=_0xdd228b;var _0x188767={'messageId':_0x19f62f[_0x96e1('0x76')]['refid'],'read':!![]};return _0x4bab81[_0x96e1('0x1b')](_0x188767);});}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x7b'),util[_0x96e1('0x2e')](_0x54f460,{'showHidden':![],'depth':null}));}})[_0x96e1('0x1c')](function(_0x194e26){return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),_0x96e1('0x7b'),util[_0x96e1('0x2e')](_0x194e26,{'showHidden':![],'depth':null}));});}else{return logger[_0x96e1('0x1d')](_0x96e1('0x2c'),_0x96e1('0x2d'),'intelepeer',_0x96e1('0x7c'));}break;}}})[_0x96e1('0x7d')](function(){_0x31ba42();});}else{_0x31ba42();}}},'charset':_0x96e1('0x7e'),'collate':_0x96e1('0x7f')});};
\ No newline at end of file
+var _0x4642=['message','refid','finally','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define','SmsMessage','messageId','fti_sms_messages','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','error','secret','SmsAccount','find','type','twilio','accountSid','authToken','phone','messages','create','body','remote','/api/sms/messages/','/status?token=','sid','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','password','smsMethod','sender','login?username=','username','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','skebby','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','http_code','data','queued_count','head','message_id','read','clickSend','plivo','authId','token','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','crypto','apiKey','text','timestamp','keys','sort','length','createHash','md5','digest','hex','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','uuid','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code'];(function(_0x5a6de2,_0x5c8b10){var _0x2c0525=function(_0x59d072){while(--_0x59d072){_0x5a6de2['push'](_0x5a6de2['shift']());}};_0x2c0525(++_0x5c8b10);}(_0x4642,0x1e7));var _0x2464=function(_0x3202b9,_0x44eeca){_0x3202b9=_0x3202b9-0x0;var _0xd7cc66=_0x4642[_0x3202b9];return _0xd7cc66;};'use strict';var _=require(_0x2464('0x0'));var util=require(_0x2464('0x1'));var logger=require(_0x2464('0x2'))('api');var moment=require(_0x2464('0x3'));var BPromise=require(_0x2464('0x4'));var rp=require(_0x2464('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2464('0x6'));var config=require('../../config/environment');var attributes=require('./smsMessage.attributes');module[_0x2464('0x7')]=function(_0x4e2398,_0x30e028){return _0x4e2398[_0x2464('0x8')](_0x2464('0x9'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x2464('0xa'),'fields':[_0x2464('0xa')]},{'name':_0x2464('0xb'),'fields':['body'],'type':_0x2464('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xcf9f4,_0x5e03be,_0x422855){var _0x2b44a9=_0x4e2398[_0x2464('0xd')];var _0x1ef428=_0xcf9f4[_0x2464('0xe')]({'plain':!![]});if(_0x1ef428[_0x2464('0xf')]['toLowerCase']()==='in'||_0x1ef428[_0x2464('0xf')][_0x2464('0x10')]()===_0x2464('0x11')&&!_0x1ef428['secret']&&!_[_0x2464('0x12')](_0x1ef428[_0x2464('0x13')])&&!_[_0x2464('0x12')](_0x1ef428[_0x2464('0x14')])){_0x2b44a9[_0x2464('0x15')][_0x2464('0x16')]({'where':{'id':_0x1ef428['SmsInteractionId']}})[_0x2464('0x17')](function(_0x4bf940){if(_0x4bf940){_0x4bf940[_0x2464('0x18')]({'lastMsgAt':_0x1ef428[_0x2464('0x19')],'lastMsgDirection':_0x1ef428[_0x2464('0xf')]['toLowerCase']()});}})[_0x2464('0x1a')](function(_0x399942){console[_0x2464('0x1b')](_0x399942);});}if(_0x1ef428['direction']===_0x2464('0x11')&&!_0x1ef428[_0x2464('0x1c')]){var _0x257c8c;_0x2b44a9[_0x2464('0x1d')][_0x2464('0x1e')]({'where':{'id':_0x1ef428['SmsAccountId']},'raw':!![]})[_0x2464('0x17')](function(_0x3613e3){_0x257c8c=_0x3613e3;if(_0x257c8c&&_0x257c8c[_0x2464('0x1f')]){switch(_0x257c8c[_0x2464('0x1f')]){case _0x2464('0x20'):var _0x24c695=require(_0x2464('0x20'));if(_0x257c8c[_0x2464('0x21')]&&_0x257c8c[_0x2464('0x22')]&&_0x257c8c[_0x2464('0x23')]){var _0x1f9c6d=new _0x24c695(_0x257c8c[_0x2464('0x21')],_0x257c8c[_0x2464('0x22')]);_0x1f9c6d[_0x2464('0x24')][_0x2464('0x25')]({'body':_0x1ef428[_0x2464('0x26')],'to':_0x1ef428['phone'],'from':_0x257c8c['phone'],'statusCallback':_0x257c8c[_0x2464('0x27')]+_0x2464('0x28')+_0x1ef428['id']+_0x2464('0x29')+_0x257c8c['token']})[_0x2464('0x17')](function(_0x15616d){if(_0x15616d[_0x2464('0x2a')]){return _0xcf9f4[_0x2464('0x18')]({'messageId':_0x15616d[_0x2464('0x2a')]});}})[_0x2464('0x1a')](function(_0x4b4b3f){logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),_0x2464('0x20'),util[_0x2464('0x2c')](_0x4b4b3f,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x20'),_0x2464('0x2d'));}break;case'skebby':var _0x179708='https://api.skebby.it/API/v1.0/REST/';if(_0x257c8c['username']&&_0x257c8c[_0x2464('0x2e')]){var _0x22bed9={'recipient':[_0x1ef428[_0x2464('0x23')]],'message':_0x1ef428[_0x2464('0x26')],'message_type':_0x257c8c['smsMethod']};if(_0x257c8c[_0x2464('0x2f')]&&_0x257c8c[_0x2464('0x2f')]!=='SI'){_0x22bed9[_0x2464('0x30')]=_0x257c8c[_0x2464('0x23')];}var _0x22783a={'url':_0x179708+_0x2464('0x31')+_0x257c8c[_0x2464('0x32')]+'&password='+_0x257c8c[_0x2464('0x2e')],'method':_0x2464('0x33')};rp(_0x22783a)['then'](function(_0xfc89b8){var _0x11a648=_0xfc89b8[_0x2464('0x34')](';');var _0x9e73f6={'user_key':_0x11a648[0x0],'session_key':_0x11a648[0x1]};_0x22783a={'url':_0x179708+_0x2464('0x35'),'method':_0x2464('0x36'),'headers':{'user_key':_0x9e73f6['user_key'],'Session_key':_0x9e73f6[_0x2464('0x37')]},'json':!![],'body':_0x22bed9};return rp(_0x22783a);})[_0x2464('0x17')](function(_0x4a3a40){if(_0x4a3a40[_0x2464('0x38')]>=0x1){var _0x4c627d={'messageId':_0x4a3a40[_0x2464('0x39')]};if(_0x257c8c[_0x2464('0x2f')]!=='GP'||!_0x257c8c[_0x2464('0x3a')]){_0x4c627d['read']=!![];}return _0xcf9f4['update'](_0x4c627d);}else{return logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x3b'),util[_0x2464('0x2c')](_0x4a3a40,{'showHidden':![],'depth':null}));}})[_0x2464('0x1a')](function(_0x42767c){return logger[_0x2464('0x1b')](_0x2464('0x3c'),'afterCreate','skebby',util['inspect'](_0x42767c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x3b'),_0x2464('0x3d'));}break;case _0x2464('0x3e'):if(_0x257c8c[_0x2464('0x22')]){var _0x517a60={'recipient':_0x1ef428[_0x2464('0x23')],'message':_0x1ef428[_0x2464('0x26')],'sender':_0x257c8c[_0x2464('0x3f')]||_0x257c8c['phone'],'authorization':_0x257c8c[_0x2464('0x22')]};var _0x5e03be={'method':_0x2464('0x36'),'uri':_0x2464('0x40'),'body':_0x517a60,'json':!![]};rp(_0x5e03be)[_0x2464('0x17')](function(_0x2a1d69){var _0x593348={'messageId':_0x2a1d69['requestid']};if(!_0x257c8c[_0x2464('0x3a')]){_0x593348['read']=!![];}return _0xcf9f4[_0x2464('0x18')](_0x593348);})[_0x2464('0x1a')](function(_0x1f30b9){logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),'connectel',util[_0x2464('0x2c')](_0x1f30b9,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x3e'),_0x2464('0x41'));}break;case _0x2464('0x42'):if(_0x257c8c[_0x2464('0x32')]&&_0x257c8c[_0x2464('0x2e')]){var _0x517a60={'messages':[{'source':_0x2464('0x43'),'to':_0x1ef428['phone'],'body':_0x1ef428[_0x2464('0x26')],'from':_0x257c8c['senderString']||_0x257c8c[_0x2464('0x23')]}]};var _0x6c9bcc=util[_0x2464('0x44')](_0x2464('0x45'),_0x257c8c['username'],_0x257c8c['password']);var _0x5e03be={'method':_0x2464('0x36'),'uri':_0x2464('0x46'),'body':_0x517a60,'headers':{'Authorization':util[_0x2464('0x44')](_0x2464('0x47'),new Buffer(_0x6c9bcc)['toString'](_0x2464('0x48')))},'json':!![]};rp(_0x5e03be)[_0x2464('0x17')](function(_0x3b485a){if(_0x3b485a[_0x2464('0x49')]>=0xc8&&_0x3b485a['http_code']<=0xce){if(_0x3b485a['data']&&_0x3b485a[_0x2464('0x4a')][_0x2464('0x4b')]>0x0){var _0x47d09b=_[_0x2464('0x4c')](_0x3b485a['data']['messages']);var _0x552d0e={'messageId':_0x47d09b[_0x2464('0x4d')]};if(!_0x257c8c[_0x2464('0x3a')]){_0x552d0e[_0x2464('0x4e')]=!![];}return _0xcf9f4['update'](_0x552d0e);}else{logger[_0x2464('0x1b')](_0x2464('0x3c'),'afterCreate',_0x2464('0x4f'),util[_0x2464('0x2c')](_0x3b485a,{'showHidden':![],'depth':null}));}}else{logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),_0x2464('0x4f'),util[_0x2464('0x2c')](_0x3b485a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x8de4a7){logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),'clickSend',util['inspect'](_0x8de4a7,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),'clickSend','Missing\x20parameters:\x20username,\x20password');}break;case _0x2464('0x50'):if(_0x257c8c[_0x2464('0x51')]&&_0x257c8c[_0x2464('0x22')]){var _0x517a60={'dst':_0x1ef428[_0x2464('0x23')],'text':_0x1ef428[_0x2464('0x26')],'src':_0x257c8c[_0x2464('0x3f')]||_0x257c8c[_0x2464('0x23')],'url':_0x257c8c[_0x2464('0x27')]+'/api/sms/messages/'+_0x1ef428['id']+_0x2464('0x29')+_0x257c8c[_0x2464('0x52')]};var _0x6c9bcc=util[_0x2464('0x44')](_0x2464('0x45'),_0x257c8c[_0x2464('0x51')],_0x257c8c[_0x2464('0x22')]);var _0x5e03be={'method':_0x2464('0x36'),'uri':util[_0x2464('0x44')](_0x2464('0x53'),_0x257c8c[_0x2464('0x51')]),'body':_0x517a60,'headers':{'Authorization':util[_0x2464('0x44')]('Basic\x20%s',new Buffer(_0x6c9bcc)[_0x2464('0x54')](_0x2464('0x48')))},'json':!![]};rp(_0x5e03be)[_0x2464('0x17')](function(_0x93193){var _0x4a7639={'messageId':_0x93193[_0x2464('0x55')][0x0]};return _0xcf9f4[_0x2464('0x18')](_0x4a7639);})['catch'](function(_0x545641){logger['error'](_0x2464('0x3c'),'afterCreate',_0x2464('0x50'),util[_0x2464('0x2c')](_0x545641,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')](_0x2464('0x3c'),'afterCreate','plivo',_0x2464('0x56'));}break;case _0x2464('0x57'):if(_0x257c8c[_0x2464('0x32')]&&_0x257c8c[_0x2464('0x2e')]){if(_0x257c8c[_0x2464('0x58')]){var _0x4a8573={'method':_0x2464('0x36'),'uri':_0x257c8c[_0x2464('0x58')]+_0x2464('0x59'),'body':{'username':_0x257c8c[_0x2464('0x32')],'password':_0x257c8c[_0x2464('0x2e')]},'json':!![]};return rp(_0x4a8573)['then'](function(_0x3370bd){var _0x286156={'method':_0x2464('0x36'),'uri':_0x257c8c['baseUrl']+_0x2464('0x5a'),'body':{'messages':[{'from':_0x257c8c['phone'],'destinations':[{'to':_0x1ef428[_0x2464('0x23')]}],'text':_0x1ef428[_0x2464('0x26')],'notifyUrl':_0x257c8c[_0x2464('0x27')]+_0x2464('0x28')+_0x1ef428['id']+_0x2464('0x29')+_0x257c8c[_0x2464('0x52')],'notifyContentType':'application/json','callbackData':_0x257c8c[_0x2464('0x23')]+';'+_0x1ef428[_0x2464('0x26')]}]},'headers':{'Authorization':_0x2464('0x5b')+_0x3370bd[_0x2464('0x52')]},'json':!![]};return rp(_0x286156)[_0x2464('0x17')](function(_0x26c34b){if(_0x26c34b[_0x2464('0x24')]){var _0x477e76={'messageId':_0x26c34b[_0x2464('0x24')][0x0][_0x2464('0xa')]};if(!_0x257c8c['deliveryReport']){_0x477e76['read']=!![];}return _0xcf9f4[_0x2464('0x18')](_0x477e76);}else{return logger[_0x2464('0x1b')](_0x2464('0x3c'),'afterCreate','infobip',util['inspect'](_0x26c34b,{'showHidden':![],'depth':null}));}});})[_0x2464('0x1a')](function(_0x3cbafe){return logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x57'),util['inspect'](_0x3cbafe,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')](_0x2464('0x3c'),'afterCreate',_0x2464('0x57'),'Missing\x20parameters:\x20base_url');}}else{logger['error'](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x57'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x4ac33f=require(_0x2464('0x5c'));if(_0x257c8c[_0x2464('0x5d')]){var _0x4d8f6a={};_0x4d8f6a['login']=_0x257c8c[_0x2464('0x32')];_0x4d8f6a['phone']=_0x1ef428[_0x2464('0x23')];_0x4d8f6a[_0x2464('0x30')]=_0x257c8c['phone'];_0x4d8f6a[_0x2464('0x5e')]=_0x1ef428[_0x2464('0x26')];_0x4d8f6a[_0x2464('0x5f')]=+new Date();var _0x25d0ed='';var _0x4d24fe='';var _0x4b8d26=Object[_0x2464('0x60')](_0x4d8f6a);_0x4b8d26[_0x2464('0x61')]();for(var _0x1607b6=0x0;_0x1607b6<_0x4b8d26[_0x2464('0x62')];_0x1607b6++){if(_0x25d0ed!=''){_0x25d0ed+='&';}_0x25d0ed+=_0x4b8d26[_0x1607b6]+'='+encodeURIComponent(_0x4d8f6a[_0x4b8d26[_0x1607b6]]);_0x4d24fe+=_0x4d8f6a[_0x4b8d26[_0x1607b6]];}_0x4d24fe+=_0x257c8c['apiKey'];_0x4d24fe=_0x4ac33f[_0x2464('0x63')](_0x2464('0x64'))[_0x2464('0x18')](_0x4d24fe)[_0x2464('0x65')](_0x2464('0x66'));if(_0x25d0ed!==''){_0x25d0ed+='&';}_0x25d0ed+='signature='+_0x4d24fe;var _0x22783a={'method':_0x2464('0x33'),'uri':_0x257c8c[_0x2464('0x58')]+'/external/get/send.php?'+_0x25d0ed,'json':!![]};return rp(_0x22783a)[_0x2464('0x17')](function(_0x435350){var _0x339433=Object['keys'](_0x435350);if(_0x435350[_0x339433[0x0]][_0x2464('0x1b')]&&parseInt(_0x435350[_0x339433[0x0]][_0x2464('0x1b')])===0x0){var _0x1065ce={'messageId':_0x435350[_0x339433[0x0]][_0x2464('0x67')]};if(!_0x257c8c[_0x2464('0x3a')]){_0x1065ce[_0x2464('0x4e')]=!![];}return _0xcf9f4['update'](_0x1065ce);}else{return logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),_0x2464('0x68'),util[_0x2464('0x2c')](_0x435350['error'],{'showHidden':![],'depth':null}));}})[_0x2464('0x1a')](function(_0x31e20a){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),_0x2464('0x68'),util[_0x2464('0x2c')](_0x31e20a,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x68'),_0x2464('0x69'));}break;case _0x2464('0x6a'):if(_0x257c8c[_0x2464('0x5d')]){var _0x40292d={'method':'POST','uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x257c8c[_0x2464('0x5d')]},'body':{'content':_0x1ef428[_0x2464('0x26')],'to':[_0x1ef428[_0x2464('0x23')]],'from':_0x257c8c[_0x2464('0x23')],'binary':![],'clientMessageId':_0x2464('0x6b'),'charset':'UTF-8'},'json':!![]};rp(_0x40292d)[_0x2464('0x17')](function(_0x5c258c){if(!_0x5c258c[_0x2464('0x1b')]){var _0xbc7b2f={'messageId':_0x5c258c[_0x2464('0x24')][0x0][_0x2464('0x6c')]};if(!_0x257c8c[_0x2464('0x3a')]){_0xbc7b2f[_0x2464('0x4e')]=!![];}return _0xcf9f4[_0x2464('0x18')](_0xbc7b2f);}else{return logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),'clickatell',util[_0x2464('0x2c')](_0x5c258c[_0x2464('0x1b')],{'showHidden':![],'depth':null}));}})[_0x2464('0x1a')](function(_0x202a93){return logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x6a'),util['inspect'](_0x202a93,{'showHidden':![],'depth':null}));});}else{logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x6a'),_0x2464('0x69'));}break;case _0x2464('0x6d'):if(_0x257c8c[_0x2464('0x32')]&&_0x257c8c['password']){var _0x6c9bcc=util[_0x2464('0x44')](_0x2464('0x45'),_0x257c8c[_0x2464('0x32')],_0x257c8c[_0x2464('0x2e')]);var _0x5e03be={'method':'POST','uri':_0x2464('0x6e')+_0x257c8c['accountId']+_0x2464('0x6f'),'body':{'to':[_0x1ef428[_0x2464('0x23')]],'text':_0x1ef428['body'],'from':_0x257c8c[_0x2464('0x23')],'applicationId':_0x257c8c[_0x2464('0x70')]},'headers':{'Authorization':util[_0x2464('0x44')]('Basic\x20%s',new Buffer(_0x6c9bcc)[_0x2464('0x54')](_0x2464('0x48')))},'json':!![]};rp(_0x5e03be)[_0x2464('0x17')](function(_0x36dc4e){if(_0x36dc4e['id']){var _0x20ad45={'messageId':_0x36dc4e['id']};return _0xcf9f4[_0x2464('0x18')](_0x20ad45);}else{logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x6d'),util[_0x2464('0x2c')](_0x36dc4e,{'showHidden':![],'depth':null}));}})['catch'](function(_0x327723){logger['error'](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x6d'),util[_0x2464('0x2c')](_0x327723,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2464('0x3c'),_0x2464('0x2b'),_0x2464('0x6d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x2464('0x71'):if(_0x257c8c[_0x2464('0x5d')]){var _0x463511={};var _0x22783a={'method':_0x2464('0x36'),'uri':_0x2464('0x72'),'headers':{'Authorization':_0x2464('0x73')+_0x257c8c[_0x2464('0x5d')],'Content-Type':_0x2464('0x74')},'body':{'from':_0x257c8c[_0x2464('0x23')],'to':_0x1ef428[_0x2464('0x23')],'text':_0x1ef428[_0x2464('0x26')]},'json':!![]};return rp(_0x22783a)[_0x2464('0x17')](function(_0x248412){if(_0x248412[_0x2464('0x75')]==0xca){_0x463511['message']=_0x248412;var _0x5c6d6a={'method':_0x2464('0x36'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x2464('0x73')+_0x257c8c['apiKey'],'Content-Type':_0x2464('0x74')},'body':{'refid':_0x463511[_0x2464('0x76')][_0x2464('0x77')]},'json':!![]};return rp(_0x5c6d6a)['then'](function(_0x56d55d){_0x463511['status']=_0x56d55d;var _0x786a39={'messageId':_0x463511[_0x2464('0x76')][_0x2464('0x77')],'read':!![]};return _0xcf9f4[_0x2464('0x18')](_0x786a39);});}else{return logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2464('0x2b'),'intelepeer',util[_0x2464('0x2c')](_0x248412,{'showHidden':![],'depth':null}));}})[_0x2464('0x1a')](function(_0x49d8c2){return logger[_0x2464('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x2464('0x71'),util[_0x2464('0x2c')](_0x49d8c2,{'showHidden':![],'depth':null}));});}else{return logger[_0x2464('0x1b')](_0x2464('0x3c'),_0x2464('0x2b'),'intelepeer','Token\x20not\x20received');}break;}}})[_0x2464('0x78')](function(){_0x422855();});}else{_0x422855();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3c897fa..56b8dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e2=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','then','debug','lodash','util'];(function(_0x2959a6,_0x4b6d0e){var _0x1e350a=function(_0x2cdeab){while(--_0x2cdeab){_0x2959a6['push'](_0x2959a6['shift']());}};_0x1e350a(++_0x4b6d0e);}(_0x48e2,0xa3));var _0x248e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x48e2[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x248e('0x0'));var util=require(_0x248e('0x1'));var moment=require(_0x248e('0x2'));var BPromise=require(_0x248e('0x3'));var rs=require(_0x248e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x248e('0x5'))['db'];var utils=require(_0x248e('0x6'));var logger=require(_0x248e('0x7'))('rpc');var config=require(_0x248e('0x8'));var jayson=require(_0x248e('0x9'));var client=jayson[_0x248e('0xa')][_0x248e('0xb')]({'port':0x232a});config[_0x248e('0xc')]=_['defaults'](config['redis'],{'host':_0x248e('0xd'),'port':0x18eb});var socket=require(_0x248e('0xe'))(new Redis(config[_0x248e('0xc')]));require('./smsMessage.socket')[_0x248e('0xf')](socket);function respondWithRpcPromise(_0x1f34c6,_0x40b7f1,_0x313aae){return new BPromise(function(_0x47296b,_0x4a13b6){return client['request'](_0x1f34c6,_0x313aae)['then'](function(_0x3137d2){logger[_0x248e('0x10')](_0x248e('0x11'),_0x40b7f1,_0x248e('0x12'));logger['debug'](_0x248e('0x13'),_0x40b7f1,'request\x20sent',JSON[_0x248e('0x14')](_0x3137d2));if(_0x3137d2[_0x248e('0x15')]){if(_0x3137d2['error'][_0x248e('0x16')]===0x1f4){logger[_0x248e('0x15')](_0x248e('0x11'),_0x40b7f1,_0x3137d2[_0x248e('0x15')][_0x248e('0x17')]);return _0x4a13b6(_0x3137d2[_0x248e('0x15')][_0x248e('0x17')]);}logger[_0x248e('0x15')]('SmsMessage,\x20%s,\x20%s',_0x40b7f1,_0x3137d2['error'][_0x248e('0x17')]);return _0x47296b(_0x3137d2['error'][_0x248e('0x17')]);}else{logger['info'](_0x248e('0x11'),_0x40b7f1,_0x248e('0x12'));_0x47296b(_0x3137d2[_0x248e('0x18')][_0x248e('0x17')]);}})[_0x248e('0x19')](function(_0x3bd96c){logger[_0x248e('0x15')](_0x248e('0x11'),_0x40b7f1,_0x3bd96c);_0x4a13b6(_0x3bd96c);});});}exports[_0x248e('0x1a')]=function(_0x36974d){var _0x416999=this;return new Promise(function(_0x221828,_0x1763ee){return db[_0x248e('0x1b')][_0x248e('0x1c')](_0x36974d[_0x248e('0x1d')],{'raw':_0x36974d[_0x248e('0x1e')]?_0x36974d['options']['raw']===undefined?!![]:![]:!![]})[_0x248e('0x1f')](function(_0x72fe68){logger[_0x248e('0x10')](_0x248e('0x1a'),_0x36974d);logger[_0x248e('0x20')](_0x248e('0x1a'),_0x36974d,JSON['stringify'](_0x72fe68));_0x221828(_0x72fe68);})['catch'](function(_0xc91f40){logger[_0x248e('0x15')](_0x248e('0x1a'),_0xc91f40[_0x248e('0x17')],_0x36974d);_0x1763ee(_0x416999[_0x248e('0x15')](0x1f4,_0xc91f40[_0x248e('0x17')]));});});};
\ No newline at end of file
+var _0x03a0=['rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','SmsMessage','create','options','CreateSmsMessage','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger'];(function(_0x5625b1,_0x2143b5){var _0x397e38=function(_0x28db4d){while(--_0x28db4d){_0x5625b1['push'](_0x5625b1['shift']());}};_0x397e38(++_0x2143b5);}(_0x03a0,0xff));var _0x003a=function(_0x425716,_0x3e9d1c){_0x425716=_0x425716-0x0;var _0x2d39af=_0x03a0[_0x425716];return _0x2d39af;};'use strict';var _=require(_0x003a('0x0'));var util=require(_0x003a('0x1'));var moment=require('moment');var BPromise=require(_0x003a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x003a('0x3'));var db=require(_0x003a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x003a('0x5'))(_0x003a('0x6'));var config=require('../../config/environment');var jayson=require(_0x003a('0x7'));var client=jayson[_0x003a('0x8')][_0x003a('0x9')]({'port':0x232a});config[_0x003a('0xa')]=_[_0x003a('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x003a('0xc'))(new Redis(config[_0x003a('0xa')]));require('./smsMessage.socket')[_0x003a('0xd')](socket);function respondWithRpcPromise(_0x2fa2ef,_0x4c52b3,_0x5774d7){return new BPromise(function(_0x181d6b,_0x377f96){return client['request'](_0x2fa2ef,_0x5774d7)[_0x003a('0xe')](function(_0x1bf656){logger[_0x003a('0xf')]('SmsMessage,\x20%s,\x20%s',_0x4c52b3,_0x003a('0x10'));logger[_0x003a('0x11')](_0x003a('0x12'),_0x4c52b3,'request\x20sent',JSON[_0x003a('0x13')](_0x1bf656));if(_0x1bf656[_0x003a('0x14')]){if(_0x1bf656[_0x003a('0x14')]['code']===0x1f4){logger[_0x003a('0x14')](_0x003a('0x15'),_0x4c52b3,_0x1bf656['error']['message']);return _0x377f96(_0x1bf656['error'][_0x003a('0x16')]);}logger[_0x003a('0x14')](_0x003a('0x15'),_0x4c52b3,_0x1bf656[_0x003a('0x14')][_0x003a('0x16')]);return _0x181d6b(_0x1bf656[_0x003a('0x14')][_0x003a('0x16')]);}else{logger[_0x003a('0xf')](_0x003a('0x15'),_0x4c52b3,_0x003a('0x10'));_0x181d6b(_0x1bf656[_0x003a('0x17')][_0x003a('0x16')]);}})['catch'](function(_0xa980ce){logger[_0x003a('0x14')](_0x003a('0x15'),_0x4c52b3,_0xa980ce);_0x377f96(_0xa980ce);});});}exports['CreateSmsMessage']=function(_0x579540){var _0x25448f=this;return new Promise(function(_0x2eeb2c,_0x17f27c){return db[_0x003a('0x18')][_0x003a('0x19')](_0x579540['body'],{'raw':_0x579540[_0x003a('0x1a')]?_0x579540['options']['raw']===undefined?!![]:![]:!![]})[_0x003a('0xe')](function(_0x3cb8bd){logger[_0x003a('0xf')]('CreateSmsMessage',_0x579540);logger['debug'](_0x003a('0x1b'),_0x579540,JSON[_0x003a('0x13')](_0x3cb8bd));_0x2eeb2c(_0x3cb8bd);})[_0x003a('0x1c')](function(_0x412743){logger[_0x003a('0x14')](_0x003a('0x1b'),_0x412743['message'],_0x579540);_0x17f27c(_0x25448f['error'](0x1f4,_0x412743['message']));});});};
\ No newline at end of file
index 79f752c..05c9e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2586=['smsMessage:','./smsMessage.events','save','remove','emit','removeListener','length'];(function(_0xb8cfbe,_0x2e81b6){var _0x227d51=function(_0x5cb1ff){while(--_0x5cb1ff){_0xb8cfbe['push'](_0xb8cfbe['shift']());}};_0x227d51(++_0x2e81b6);}(_0x2586,0x104));var _0x6258=function(_0x340178,_0x603ad7){_0x340178=_0x340178-0x0;var _0x546e4e=_0x2586[_0x340178];return _0x546e4e;};'use strict';var SmsMessageEvents=require(_0x6258('0x0'));var events=[_0x6258('0x1'),_0x6258('0x2'),'update'];function createListener(_0x3bde0c,_0x92e1bf){return function(_0xc56f57){_0x92e1bf[_0x6258('0x3')](_0x3bde0c,_0xc56f57);};}function removeListener(_0xb52809,_0xc9f68){return function(){SmsMessageEvents[_0x6258('0x4')](_0xb52809,_0xc9f68);};}exports['register']=function(_0x10de23){for(var _0x1a8d91=0x0,_0x28c1e9=events[_0x6258('0x5')];_0x1a8d91<_0x28c1e9;_0x1a8d91++){var _0x554e5c=events[_0x1a8d91];var _0x30b5a5=createListener(_0x6258('0x6')+_0x554e5c,_0x10de23);SmsMessageEvents['on'](_0x554e5c,_0x30b5a5);}};
\ No newline at end of file
+var _0x9fac=['register','smsMessage:','save','update','removeListener'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x9fac,0x1a1));var _0xc9fa=function(_0x5ebd1c,_0x238292){_0x5ebd1c=_0x5ebd1c-0x0;var _0x15736c=_0x9fac[_0x5ebd1c];return _0x15736c;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=[_0xc9fa('0x0'),'remove',_0xc9fa('0x1')];function createListener(_0x568872,_0xe166d2){return function(_0x380c04){_0xe166d2['emit'](_0x568872,_0x380c04);};}function removeListener(_0x354eb7,_0x1f6278){return function(){SmsMessageEvents[_0xc9fa('0x2')](_0x354eb7,_0x1f6278);};}exports[_0xc9fa('0x3')]=function(_0xb404a5){for(var _0x5761fd=0x0,_0x159d39=events['length'];_0x5761fd<_0x159d39;_0x5761fd++){var _0x450b12=events[_0x5761fd];var _0x583fe5=createListener(_0xc9fa('0x4')+_0x450b12,_0xb404a5);SmsMessageEvents['on'](_0x450b12,_0x583fe5);}};
\ No newline at end of file
index 19d51fe..1da89fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70f7=['connect-timeout','express','Router','fs-extra','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addAgents','update','delete','destroy','removeTeams','exports','multer','util','path'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x70f7,0x193));var _0x770f=function(_0x2fbcf6,_0x2e7155){_0x2fbcf6=_0x2fbcf6-0x0;var _0x3e7265=_0x70f7[_0x2fbcf6];return _0x3e7265;};'use strict';var multer=require(_0x770f('0x0'));var util=require(_0x770f('0x1'));var path=require(_0x770f('0x2'));var timeout=require(_0x770f('0x3'));var express=require(_0x770f('0x4'));var router=express[_0x770f('0x5')]();var fs_extra=require(_0x770f('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x770f('0x7'));var controller=require(_0x770f('0x8'));router[_0x770f('0x9')]('/',auth[_0x770f('0xa')](),controller[_0x770f('0xb')]);router[_0x770f('0x9')](_0x770f('0xc'),auth[_0x770f('0xa')](),controller[_0x770f('0xd')]);router[_0x770f('0x9')](_0x770f('0xe'),auth[_0x770f('0xa')](),controller['show']);router[_0x770f('0x9')](_0x770f('0xf'),auth[_0x770f('0xa')](),controller[_0x770f('0x10')]);router['get']('/:id/teams',auth[_0x770f('0xa')](),controller[_0x770f('0x11')]);router['get'](_0x770f('0x12'),auth[_0x770f('0xa')](),controller[_0x770f('0x13')]);router[_0x770f('0x14')]('/',auth[_0x770f('0xa')](),controller[_0x770f('0x15')]);router[_0x770f('0x14')](_0x770f('0x16'),auth[_0x770f('0xa')](),controller['addTeams']);router['post'](_0x770f('0x12'),auth[_0x770f('0xa')](),controller[_0x770f('0x17')]);router['put'](_0x770f('0xe'),auth['isAuthenticated'](),controller[_0x770f('0x18')]);router[_0x770f('0x19')](_0x770f('0xe'),auth['isAuthenticated'](),controller[_0x770f('0x1a')]);router[_0x770f('0x19')](_0x770f('0x16'),auth[_0x770f('0xa')](),controller[_0x770f('0x1b')]);router[_0x770f('0x19')](_0x770f('0x12'),auth[_0x770f('0xa')](),controller['removeAgents']);module[_0x770f('0x1c')]=router;
\ No newline at end of file
+var _0xaeec=['getTeams','/:id/users','getAgents','post','create','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams'];(function(_0x2553e0,_0x4ca379){var _0x521080=function(_0x5c0d49){while(--_0x5c0d49){_0x2553e0['push'](_0x2553e0['shift']());}};_0x521080(++_0x4ca379);}(_0xaeec,0xe5));var _0xcaee=function(_0xdf0604,_0x46f771){_0xdf0604=_0xdf0604-0x0;var _0x1b9a56=_0xaeec[_0xdf0604];return _0x1b9a56;};'use strict';var multer=require(_0xcaee('0x0'));var util=require(_0xcaee('0x1'));var path=require(_0xcaee('0x2'));var timeout=require(_0xcaee('0x3'));var express=require(_0xcaee('0x4'));var router=express['Router']();var fs_extra=require(_0xcaee('0x5'));var auth=require(_0xcaee('0x6'));var interaction=require(_0xcaee('0x7'));var config=require(_0xcaee('0x8'));var controller=require(_0xcaee('0x9'));router[_0xcaee('0xa')]('/',auth[_0xcaee('0xb')](),controller[_0xcaee('0xc')]);router[_0xcaee('0xa')](_0xcaee('0xd'),auth[_0xcaee('0xb')](),controller[_0xcaee('0xe')]);router[_0xcaee('0xa')](_0xcaee('0xf'),auth['isAuthenticated'](),controller[_0xcaee('0x10')]);router['get'](_0xcaee('0x11'),auth[_0xcaee('0xb')](),controller['getMembers']);router[_0xcaee('0xa')](_0xcaee('0x12'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x13')]);router[_0xcaee('0xa')](_0xcaee('0x14'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x15')]);router[_0xcaee('0x16')]('/',auth[_0xcaee('0xb')](),controller[_0xcaee('0x17')]);router[_0xcaee('0x16')](_0xcaee('0x12'),auth['isAuthenticated'](),controller['addTeams']);router[_0xcaee('0x16')](_0xcaee('0x14'),auth['isAuthenticated'](),controller['addAgents']);router[_0xcaee('0x18')](_0xcaee('0xf'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x19')]);router[_0xcaee('0x1a')](_0xcaee('0xf'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x1b')]);router['delete'](_0xcaee('0x12'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x1c')]);router[_0xcaee('0x1a')](_0xcaee('0x14'),auth[_0xcaee('0xb')](),controller[_0xcaee('0x1d')]);module[_0xcaee('0x1e')]=router;
\ No newline at end of file
index 59be345..a59ee7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc45=['roundrobin','exports','STRING','ENUM','rrmemory','beepall'];(function(_0x3317bf,_0x2aea02){var _0x5c42da=function(_0x22cef0){while(--_0x22cef0){_0x3317bf['push'](_0x3317bf['shift']());}};_0x5c42da(++_0x2aea02);}(_0xfc45,0x8b));var _0x5fc4=function(_0xc271da,_0x5d23a0){_0xc271da=_0xc271da-0x0;var _0x4afaf2=_0xfc45[_0xc271da];return _0x4afaf2;};'use strict';var Sequelize=require('sequelize');module[_0x5fc4('0x0')]={'name':{'type':Sequelize[_0x5fc4('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5fc4('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5fc4('0x2')](_0x5fc4('0x3'),_0x5fc4('0x4'),_0x5fc4('0x5'))}};
\ No newline at end of file
+var _0x0800=['STRING','name','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x1dc80d,_0x189377){var _0x28ced6=function(_0x406de0){while(--_0x406de0){_0x1dc80d['push'](_0x1dc80d['shift']());}};_0x28ced6(++_0x189377);}(_0x0800,0x14e));var _0x0080=function(_0x5e75ec,_0x53402b){_0x5e75ec=_0x5e75ec-0x0;var _0x5977ba=_0x0800[_0x5e75ec];return _0x5977ba;};'use strict';var Sequelize=require(_0x0080('0x0'));module[_0x0080('0x1')]={'name':{'type':Sequelize[_0x0080('0x2')],'unique':_0x0080('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x0080('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0080('0x4')](_0x0080('0x5'),_0x0080('0x6'),_0x0080('0x7'))}};
\ No newline at end of file
index 573184b..50bdd57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ad4=['index','map','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','SmsQueue','rows','show','params','rawAttributes','options','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','nolimit','SmsQueueId','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','findAll','User','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','then','SmsQueues','UserProfileResource','destroy','sendStatus','error','name','send'];(function(_0x2049c0,_0x56e173){var _0x32db9c=function(_0x58876a){while(--_0x58876a){_0x2049c0['push'](_0x2049c0['shift']());}};_0x32db9c(++_0x56e173);}(_0x9ad4,0x16a));var _0x49ad=function(_0x33d431,_0xf591fb){_0x33d431=_0x33d431-0x0;var _0xad1bc8=_0x9ad4[_0x33d431];return _0xad1bc8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x49ad('0x0'));var zipdir=require(_0x49ad('0x1'));var jsonpatch=require(_0x49ad('0x2'));var rp=require(_0x49ad('0x3'));var moment=require(_0x49ad('0x4'));var BPromise=require(_0x49ad('0x5'));var Mustache=require(_0x49ad('0x6'));var util=require(_0x49ad('0x7'));var path=require('path');var sox=require(_0x49ad('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x49ad('0x9'));var _=require('lodash');var squel=require(_0x49ad('0xa'));var crypto=require(_0x49ad('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x49ad('0xc'));var querystring=require(_0x49ad('0xd'));var Papa=require(_0x49ad('0xe'));var Redis=require(_0x49ad('0xf'));var authService=require(_0x49ad('0x10'));var qs=require(_0x49ad('0x11'));var as=require(_0x49ad('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x49ad('0x13')]=_[_0x49ad('0x14')](config['redis'],{'host':_0x49ad('0x15'),'port':0x18eb});var socket=require(_0x49ad('0x16'))(new Redis(config[_0x49ad('0x13')]));require(_0x49ad('0x17'))[_0x49ad('0x18')](socket);function respondWithStatusCode(_0x4659f3,_0x2db0fd){_0x2db0fd=_0x2db0fd||0xcc;return function(_0xe41d68){if(_0xe41d68){return _0x4659f3['sendStatus'](_0x2db0fd);}return _0x4659f3[_0x49ad('0x19')](_0x2db0fd)[_0x49ad('0x1a')]();};}function respondWithResult(_0xd23d6e,_0x9efe1c){_0x9efe1c=_0x9efe1c||0xc8;return function(_0x18b195){if(_0x18b195){return _0xd23d6e[_0x49ad('0x19')](_0x9efe1c)['json'](_0x18b195);}};}function respondWithFilteredResult(_0x5a4ddc,_0x40fa4b){return function(_0x2b64c2){if(_0x2b64c2){var _0x388bb4=typeof _0x40fa4b[_0x49ad('0x1b')]===_0x49ad('0x1c')&&typeof _0x40fa4b[_0x49ad('0x1d')]===_0x49ad('0x1c');var _0x4140a4=_0x2b64c2[_0x49ad('0x1e')];var _0x3c72bb=_0x388bb4?0x0:_0x40fa4b[_0x49ad('0x1b')];var _0x41851e=_0x388bb4?_0x2b64c2[_0x49ad('0x1e')]:_0x40fa4b[_0x49ad('0x1b')]+_0x40fa4b[_0x49ad('0x1d')];var _0x26c592;if(_0x41851e>=_0x4140a4){_0x41851e=_0x4140a4;_0x26c592=0xc8;}else{_0x26c592=0xce;}_0x5a4ddc[_0x49ad('0x19')](_0x26c592);return _0x5a4ddc['set'](_0x49ad('0x1f'),_0x3c72bb+'-'+_0x41851e+'/'+_0x4140a4)['json'](_0x2b64c2);}return null;};}function patchUpdates(_0x2c0de1){return function(_0x2828fe){try{jsonpatch[_0x49ad('0x20')](_0x2828fe,_0x2c0de1,!![]);}catch(_0x37f571){return BPromise[_0x49ad('0x21')](_0x37f571);}return _0x2828fe['save']();};}function saveUpdates(_0x36a80a,_0x8c2ba9){return function(_0x58da71){if(_0x58da71){return _0x58da71[_0x49ad('0x22')](_0x36a80a)[_0x49ad('0x23')](function(_0x116a76){return _0x116a76;});}return null;};}function removeEntity(_0x2d0c34,_0x4b751d){return function(_0x215647){if(_0x215647){return _0x215647['destroy']()[_0x49ad('0x23')](function(){var _0x38d020=_0x215647['get']({'plain':!![]});var _0x527350=_0x49ad('0x24');return db[_0x49ad('0x25')][_0x49ad('0x26')]({'where':{'type':_0x527350,'resourceId':_0x38d020['id']}})[_0x49ad('0x23')](function(){return _0x215647;});})['then'](function(){_0x2d0c34[_0x49ad('0x19')](0xcc)[_0x49ad('0x1a')]();});}};}function handleEntityNotFound(_0x468fbd,_0x3679dc){return function(_0x4d36ba){if(!_0x4d36ba){_0x468fbd[_0x49ad('0x27')](0x194);}return _0x4d36ba;};}function handleError(_0x2e1de4,_0x2b84cf){_0x2b84cf=_0x2b84cf||0x1f4;return function(_0x17ca7f){logger[_0x49ad('0x28')](_0x17ca7f['stack']);if(_0x17ca7f['name']){delete _0x17ca7f[_0x49ad('0x29')];}_0x2e1de4[_0x49ad('0x19')](_0x2b84cf)[_0x49ad('0x2a')](_0x17ca7f);};}exports[_0x49ad('0x2b')]=function(_0x2df134,_0x4630f2){var _0x265cff={},_0x77cf6={},_0x5868fc={'count':0x0,'rows':[]};var _0x3826e5=_[_0x49ad('0x2c')](db['SmsQueue']['rawAttributes'],function(_0x3349d1){return{'name':_0x3349d1[_0x49ad('0x2d')],'type':_0x3349d1[_0x49ad('0x2e')][_0x49ad('0x2f')]};});_0x77cf6[_0x49ad('0x30')]=_[_0x49ad('0x2c')](_0x3826e5,_0x49ad('0x29'));_0x77cf6['query']=_[_0x49ad('0x31')](_0x2df134[_0x49ad('0x32')]);_0x77cf6[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x77cf6[_0x49ad('0x30')],_0x77cf6['query']);_0x265cff['attributes']=_[_0x49ad('0x34')](_0x77cf6[_0x49ad('0x30')],qs['fields'](_0x2df134[_0x49ad('0x32')][_0x49ad('0x35')]));_0x265cff[_0x49ad('0x36')]=_0x265cff[_0x49ad('0x36')][_0x49ad('0x37')]?_0x265cff[_0x49ad('0x36')]:_0x77cf6[_0x49ad('0x30')];if(!_0x2df134[_0x49ad('0x32')][_0x49ad('0x38')]('nolimit')){_0x265cff[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x2df134['query'][_0x49ad('0x1d')]);_0x265cff[_0x49ad('0x1b')]=qs['offset'](_0x2df134[_0x49ad('0x32')][_0x49ad('0x1b')]);}_0x265cff[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x2df134[_0x49ad('0x32')]['sort']);_0x265cff[_0x49ad('0x3b')]=qs['filters'](_[_0x49ad('0x3c')](_0x2df134['query'],_0x77cf6[_0x49ad('0x33')]),_0x3826e5);if(_0x2df134[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x265cff[_0x49ad('0x3b')]=_['merge'](_0x265cff[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x3826e5,function(_0x2bf20c){if(_0x2bf20c[_0x49ad('0x2e')]!==_0x49ad('0x3e')){var _0x144c98={};_0x144c98[_0x2bf20c[_0x49ad('0x29')]]={'$like':'%'+_0x2df134[_0x49ad('0x32')][_0x49ad('0x3d')]+'%'};return _0x144c98;}})});}_0x265cff=_[_0x49ad('0x3f')]({},_0x265cff,_0x2df134['options']);var _0x20e2fd={'where':_0x265cff[_0x49ad('0x3b')]};return db['SmsQueue'][_0x49ad('0x1e')](_0x20e2fd)[_0x49ad('0x23')](function(_0x13d43b){_0x5868fc[_0x49ad('0x1e')]=_0x13d43b;if(_0x2df134[_0x49ad('0x32')][_0x49ad('0x40')]){_0x265cff['include']=[{'all':!![]}];}return db[_0x49ad('0x41')]['findAll'](_0x265cff);})[_0x49ad('0x23')](function(_0x159a30){_0x5868fc[_0x49ad('0x42')]=_0x159a30;return _0x5868fc;})[_0x49ad('0x23')](respondWithFilteredResult(_0x4630f2,_0x265cff))['catch'](handleError(_0x4630f2,null));};exports[_0x49ad('0x43')]=function(_0x4f98ec,_0x5d964f){var _0x5a66c3={'raw':!![],'where':{'id':_0x4f98ec[_0x49ad('0x44')]['id']}},_0x5538f3={};_0x5538f3[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x41')][_0x49ad('0x45')]);_0x5538f3[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x4f98ec[_0x49ad('0x32')]);_0x5538f3[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x5538f3[_0x49ad('0x30')],_0x5538f3[_0x49ad('0x32')]);_0x5a66c3[_0x49ad('0x36')]=_[_0x49ad('0x34')](_0x5538f3[_0x49ad('0x30')],qs[_0x49ad('0x35')](_0x4f98ec[_0x49ad('0x32')][_0x49ad('0x35')]));_0x5a66c3[_0x49ad('0x36')]=_0x5a66c3[_0x49ad('0x36')][_0x49ad('0x37')]?_0x5a66c3[_0x49ad('0x36')]:_0x5538f3[_0x49ad('0x30')];if(_0x4f98ec[_0x49ad('0x32')][_0x49ad('0x40')]){_0x5a66c3['include']=[{'all':!![]}];}_0x5a66c3=_[_0x49ad('0x3f')]({},_0x5a66c3,_0x4f98ec[_0x49ad('0x46')]);return db[_0x49ad('0x41')][_0x49ad('0x47')](_0x5a66c3)[_0x49ad('0x23')](handleEntityNotFound(_0x5d964f,null))[_0x49ad('0x23')](respondWithResult(_0x5d964f,null))[_0x49ad('0x48')](handleError(_0x5d964f,null));};exports[_0x49ad('0x49')]=function(_0x61dcd4,_0x4e5a2c){return db['SmsQueue'][_0x49ad('0x49')](_0x61dcd4[_0x49ad('0x4a')],{})[_0x49ad('0x23')](function(_0x4b4e17){var _0xc1d8e4=_0x61dcd4[_0x49ad('0x4b')][_0x49ad('0x4c')]({'plain':!![]});if(!_0xc1d8e4)throw new Error(_0x49ad('0x4d'));if(_0xc1d8e4['role']===_0x49ad('0x4b')){var _0x166153=_0x4b4e17[_0x49ad('0x4c')]({'plain':!![]});var _0x161ee0='SmsQueues';return db[_0x49ad('0x4e')][_0x49ad('0x47')]({'where':{'name':_0x161ee0,'userProfileId':_0xc1d8e4[_0x49ad('0x4f')]},'raw':!![]})[_0x49ad('0x23')](function(_0x52e195){if(_0x52e195&&_0x52e195[_0x49ad('0x50')]===0x0){return db[_0x49ad('0x25')]['create']({'name':_0x166153[_0x49ad('0x29')],'resourceId':_0x166153['id'],'type':_0x52e195[_0x49ad('0x29')],'sectionId':_0x52e195['id']},{})[_0x49ad('0x23')](function(){return _0x4b4e17;});}else{return _0x4b4e17;}})['catch'](function(_0x30a824){logger[_0x49ad('0x28')](_0x49ad('0x51'),_0x30a824);throw _0x30a824;});}return _0x4b4e17;})[_0x49ad('0x23')](respondWithResult(_0x4e5a2c,0xc9))['catch'](handleError(_0x4e5a2c,null));};exports['update']=function(_0x1d673e,_0x223517){if(_0x1d673e[_0x49ad('0x4a')]['id']){delete _0x1d673e[_0x49ad('0x4a')]['id'];}return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x1d673e[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x223517,null))[_0x49ad('0x23')](saveUpdates(_0x1d673e['body'],null))[_0x49ad('0x23')](respondWithResult(_0x223517,null))[_0x49ad('0x48')](handleError(_0x223517,null));};exports[_0x49ad('0x26')]=function(_0x3e3dfa,_0x4c5fe8){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x3e3dfa[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x4c5fe8,null))[_0x49ad('0x23')](removeEntity(_0x4c5fe8,null))[_0x49ad('0x48')](handleError(_0x4c5fe8,null));};exports[_0x49ad('0x52')]=function(_0x453bc5,_0x5ec5dd){return db[_0x49ad('0x41')][_0x49ad('0x52')]()[_0x49ad('0x23')](respondWithResult(_0x5ec5dd,null))[_0x49ad('0x48')](handleError(_0x5ec5dd,null));};exports[_0x49ad('0x53')]=function(_0x5ae806,_0x1bc3cf,_0x30f566){var _0x410f12={'raw':!![],'where':{}},_0xe8c215={},_0x563182;return db[_0x49ad('0x41')][_0x49ad('0x54')]({'where':{'id':_0x5ae806[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x1bc3cf,null))[_0x49ad('0x23')](function(_0x49a99c){if(_0x49a99c){_0x563182=_0x49a99c[_0x49ad('0x4c')]({'plain':!![]});_0xe8c215['model']=_['keys'](db['UserSmsQueue']['rawAttributes']);_0xe8c215[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x5ae806[_0x49ad('0x32')]);_0xe8c215[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0xe8c215['model'],_0xe8c215[_0x49ad('0x32')]);_0x410f12['attributes']=_[_0x49ad('0x34')](_0xe8c215['model'],qs[_0x49ad('0x35')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x35')]));_0x410f12[_0x49ad('0x36')]=_0x410f12[_0x49ad('0x36')]['length']?_0x410f12['attributes']:_0xe8c215[_0x49ad('0x30')];if(!_0x5ae806[_0x49ad('0x32')][_0x49ad('0x38')](_0x49ad('0x55'))){_0x410f12[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x1d')]);_0x410f12['offset']=qs['offset'](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x1b')]);}_0x410f12[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x5ae806[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x410f12[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_['pick'](_0x5ae806[_0x49ad('0x32')],_0xe8c215[_0x49ad('0x33')]));_0x410f12[_0x49ad('0x3b')][_0x49ad('0x56')]=_0x49a99c['id'];if(_0x5ae806['query'][_0x49ad('0x3d')]){_0x410f12['where']=_[_0x49ad('0x3f')](_0x410f12[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x410f12[_0x49ad('0x36')],function(_0x3e82b7){var _0x50e99a={};_0x50e99a[_0x3e82b7]={'$like':'%'+_0x5ae806['query']['filter']+'%'};return _0x50e99a;})});}_0x410f12=_[_0x49ad('0x3f')]({},_0x410f12,_0x5ae806[_0x49ad('0x46')]);return db['UserSmsQueue']['findAll'](_0x410f12);}})[_0x49ad('0x23')](function(_0x2381aa){if(_0x2381aa){return db['User'][_0x49ad('0x57')]({'where':{'id':_[_0x49ad('0x2c')](_0x2381aa,_0x49ad('0x58')),'role':_0x49ad('0x59')},'attributes':['id','name',_0x49ad('0x5a'),_0x49ad('0x5b'),_0x49ad('0x5c')]});}})[_0x49ad('0x23')](function(_0x5a0fc9){if(_0x5a0fc9){return{'count':_0x5a0fc9[_0x49ad('0x1e')],'rows':_['map'](_0x5a0fc9[_0x49ad('0x42')],function(_0x23b8bd){return{'membername':_0x23b8bd['name'],'UserId':_0x23b8bd['id'],'queue_name':_0x563182['name'],'SmsQueueId':_0x563182['id'],'interface':util['format'](_0x49ad('0x5d'),_0x49ad('0x5e'),_0x23b8bd['name']),'penalty':0x0,'paused':_0x23b8bd[_0x49ad('0x5a')],'createdAt':_0x23b8bd[_0x49ad('0x5c')],'updatedAt':_0x23b8bd[_0x49ad('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x49ad('0x23')](respondWithFilteredResult(_0x1bc3cf,_0x410f12))[_0x49ad('0x48')](handleError(_0x1bc3cf,null));};exports[_0x49ad('0x5f')]=function(_0x4bf0a3,_0x3b1346,_0x33686b){var _0x33c1c0={};var _0x26e451={};var _0x1ca6d3;var _0x1326e5;return db[_0x49ad('0x41')][_0x49ad('0x54')]({'where':{'id':_0x4bf0a3[_0x49ad('0x44')]['id']}})['then'](handleEntityNotFound(_0x3b1346,null))[_0x49ad('0x23')](function(_0x47179b){if(_0x47179b){_0x1ca6d3=_0x47179b;_0x26e451[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x60')]['rawAttributes']);_0x26e451['query']=_['keys'](_0x4bf0a3[_0x49ad('0x32')]);_0x26e451[_0x49ad('0x33')]=_['intersection'](_0x26e451[_0x49ad('0x30')],_0x26e451[_0x49ad('0x32')]);_0x33c1c0['attributes']=_['intersection'](_0x26e451['model'],qs['fields'](_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x35')]));_0x33c1c0['attributes']=_0x33c1c0['attributes'][_0x49ad('0x37')]?_0x33c1c0[_0x49ad('0x36')]:_0x26e451[_0x49ad('0x30')];_0x33c1c0[_0x49ad('0x39')]=qs[_0x49ad('0x3a')](_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x33c1c0[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_[_0x49ad('0x3c')](_0x4bf0a3[_0x49ad('0x32')],_0x26e451['filters']));if(_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x33c1c0[_0x49ad('0x3b')]=_[_0x49ad('0x3f')](_0x33c1c0[_0x49ad('0x3b')],{'$or':_[_0x49ad('0x2c')](_0x33c1c0['attributes'],function(_0x48a98c){var _0xca183a={};_0xca183a[_0x48a98c]={'$like':'%'+_0x4bf0a3['query'][_0x49ad('0x3d')]+'%'};return _0xca183a;})});}_0x33c1c0=_[_0x49ad('0x3f')]({},_0x33c1c0,_0x4bf0a3['options']);return _0x1ca6d3[_0x49ad('0x5f')](_0x33c1c0);}})['then'](function(_0x5471ee){if(_0x5471ee){_0x1326e5=_0x5471ee['length'];if(!_0x4bf0a3[_0x49ad('0x32')][_0x49ad('0x38')](_0x49ad('0x55'))){_0x33c1c0[_0x49ad('0x1d')]=qs['limit'](_0x4bf0a3['query'][_0x49ad('0x1d')]);_0x33c1c0[_0x49ad('0x1b')]=qs['offset'](_0x4bf0a3[_0x49ad('0x32')]['offset']);}return _0x1ca6d3[_0x49ad('0x5f')](_0x33c1c0);}})['then'](function(_0x149ca9){if(_0x149ca9){return _0x149ca9?{'count':_0x1326e5,'rows':_0x149ca9}:null;}})['then'](respondWithResult(_0x3b1346,null))[_0x49ad('0x48')](handleError(_0x3b1346,null));};exports[_0x49ad('0x61')]=function(_0x493383,_0x59f06e,_0x3f294e){var _0xc4591=_0x493383['body'][_0x49ad('0x62')];return db['Team']['findAll']({'where':{'id':_0xc4591},'attributes':['id'],'include':[{'model':db['User'],'as':_0x49ad('0x63'),'attributes':['id',_0x49ad('0x29'),_0x49ad('0x64'),'voicePause',_0x49ad('0x65')],'raw':!![]}]})[_0x49ad('0x23')](function(_0x2384d9){if(_0x2384d9){var _0x4e7057=_[_0x49ad('0x66')](_0x2384d9,function(_0x14258e){var _0x4cf84c=_0x14258e['get']({'plain':!![]});return _0x4cf84c[_0x49ad('0x63')];});return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x493383[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](function(_0x37e946){return db[_0x49ad('0x67')][_0x49ad('0x68')](function(_0x398bbb){return _0x37e946['addTeams'](_0xc4591,{'transaction':_0x398bbb})[_0x49ad('0x23')](function(){return BPromise['each'](_0x4e7057,function(_0x46d9a7){return db['UserSmsQueue'][_0x49ad('0x69')]({'where':{'UserId':_0x46d9a7['id'],'SmsQueueId':_0x493383[_0x49ad('0x44')]['id']},'transaction':_0x398bbb});});})[_0x49ad('0x23')](function(){_0x4e7057[_0x49ad('0x6a')](function(_0x55e5cd){socket[_0x49ad('0x6b')](_0x49ad('0x6c'),{'UserId':_0x55e5cd['id'],'SmsQueueId':_0x37e946['id']});});});});});}})[_0x49ad('0x23')](respondWithStatusCode(_0x59f06e,null))['catch'](handleError(_0x59f06e,null));};exports[_0x49ad('0x6d')]=function(_0x4faf27,_0x106525,_0xc31d08){return db['Team'][_0x49ad('0x6e')]({'where':{'id':_0x4faf27[_0x49ad('0x32')]['ids']},'attributes':['id'],'include':[{'model':db[_0x49ad('0x6f')],'as':_0x49ad('0x63'),'attributes':['id'],'raw':!![]}]})[_0x49ad('0x23')](handleEntityNotFound(_0x106525,null))[_0x49ad('0x23')](function(_0x301fef){var _0x4ecb82=_[_0x49ad('0x2c')](_0x301fef,'id');var _0x5f3716=[];var _0x38dc86=[];var _0x3c878a=squel[_0x49ad('0x70')]();_0x3c878a[_0x49ad('0x71')](_0x49ad('0x72'))['from']('team_has_sms_queues','tq')[_0x49ad('0x73')](_0x49ad('0x74'),'ut',_0x49ad('0x75'))['where']('SmsQueueId\x20=\x20?',_0x4faf27[_0x49ad('0x44')]['id']);for(var _0x5a055b=0x0;_0x5a055b<_0x301fef[_0x49ad('0x37')];_0x5a055b+=0x1){let _0x1276d6=_0x301fef[_0x5a055b];for(var _0x255e0d=0x0;_0x255e0d<_0x1276d6[_0x49ad('0x63')]['length'];_0x255e0d+=0x1){let _0x3b6ee7=_0x1276d6['Agents'][_0x255e0d];var _0x354070=_0x3c878a[_0x49ad('0x76')]();_0x354070['where'](_0x49ad('0x77'),_0x3b6ee7['id']);_0x38dc86['push'](db['sequelize'][_0x49ad('0x32')](_0x354070[_0x49ad('0x78')](),{'type':db[_0x49ad('0x67')][_0x49ad('0x79')][_0x49ad('0x7a')]})[_0x49ad('0x23')](function(_0x36a47a){if(_0x36a47a[_0x49ad('0x37')]===0x1){return _0x3b6ee7['id'];}else{var _0x33c03e=_[_0x49ad('0x7b')](_[_0x49ad('0x2c')](_0x36a47a,_0x49ad('0x7c')),function(_0x2399e6){return _[_0x49ad('0x7d')](_0x4ecb82,_0x2399e6);});if(_0x33c03e){return _0x3b6ee7['id'];}}}));}}return BPromise['all'](_0x38dc86)[_0x49ad('0x23')](function(_0x59df6a){_0x5f3716=_(_0x5f3716)[_0x49ad('0x7e')](_0x59df6a)[_0x49ad('0x7f')]()[_0x49ad('0x80')]();return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x4faf27[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](function(_0x2366c5){return db[_0x49ad('0x67')][_0x49ad('0x68')](function(_0x205a0e){return _0x2366c5[_0x49ad('0x6d')](_0x4faf27[_0x49ad('0x32')][_0x49ad('0x62')],{'transaction':_0x205a0e})[_0x49ad('0x23')](function(){if(!_[_0x49ad('0x81')](_0x5f3716)){return _0x2366c5[_0x49ad('0x82')](_0x5f3716,{'transaction':_0x205a0e});}})[_0x49ad('0x23')](function(){_0x5f3716[_0x49ad('0x6a')](function(_0x5a37f0){socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':_0x5a37f0,'SmsQueueId':_0x2366c5['id']});});});});});});})['then'](respondWithStatusCode(_0x106525,null))[_0x49ad('0x48')](handleError(_0x106525,null));};exports[_0x49ad('0x84')]=function(_0x43872e,_0x55122e,_0x1911e6){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x43872e[_0x49ad('0x44')]['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x55122e,null))[_0x49ad('0x23')](function(_0x32e6c5){if(_0x32e6c5){return _0x32e6c5['addAgents'](_0x43872e['body'][_0x49ad('0x62')],_['omit'](_0x43872e['body'],[_0x49ad('0x62'),'id'])||{})[_0x49ad('0x85')](function(_0x457c92){for(var _0x4851d3=0x0;_0x4851d3<_0x43872e[_0x49ad('0x4a')][_0x49ad('0x62')][_0x49ad('0x37')];_0x4851d3+=0x1){socket['emit'](_0x49ad('0x6c'),{'UserId':Number(_0x43872e[_0x49ad('0x4a')][_0x49ad('0x62')][_0x4851d3]),'SmsQueueId':Number(_0x43872e['params']['id'])});}return _0x457c92;});}})[_0x49ad('0x23')](respondWithResult(_0x55122e,null))[_0x49ad('0x48')](handleError(_0x55122e,null));};exports[_0x49ad('0x82')]=function(_0x4a810a,_0x2569de,_0x3f44e2){return db[_0x49ad('0x41')][_0x49ad('0x47')]({'where':{'id':_0x4a810a['params']['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x2569de,null))[_0x49ad('0x23')](function(_0x57f7d6){if(_0x57f7d6){return _0x57f7d6[_0x49ad('0x82')](_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')])[_0x49ad('0x23')](function(){if(_['isArray'](_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')])){for(var _0xec3e29=0x0;_0xec3e29<_0x4a810a['query'][_0x49ad('0x62')][_0x49ad('0x37')];_0xec3e29+=0x1){socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':Number(_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')][_0xec3e29]),'SmsQueueId':Number(_0x4a810a[_0x49ad('0x44')]['id'])});}}else{socket[_0x49ad('0x6b')](_0x49ad('0x83'),{'UserId':Number(_0x4a810a[_0x49ad('0x32')][_0x49ad('0x62')]),'SmsQueueId':Number(_0x4a810a[_0x49ad('0x44')]['id'])});}});}})[_0x49ad('0x23')](respondWithStatusCode(_0x2569de,null))[_0x49ad('0x48')](handleError(_0x2569de,null));};exports[_0x49ad('0x86')]=function(_0x20fa76,_0x3280af,_0x5199e1){var _0x14337f={};var _0x337853={};var _0x5a0b64;var _0x23cdb7;return db['SmsQueue'][_0x49ad('0x54')]({'where':{'id':_0x20fa76['params']['id']}})[_0x49ad('0x23')](handleEntityNotFound(_0x3280af,null))[_0x49ad('0x23')](function(_0x5581d5){if(_0x5581d5){_0x5a0b64=_0x5581d5;_0x337853[_0x49ad('0x30')]=_[_0x49ad('0x31')](db[_0x49ad('0x6f')][_0x49ad('0x45')]);_0x337853[_0x49ad('0x32')]=_[_0x49ad('0x31')](_0x20fa76['query']);_0x337853[_0x49ad('0x33')]=_[_0x49ad('0x34')](_0x337853[_0x49ad('0x30')],_0x337853[_0x49ad('0x32')]);_0x14337f[_0x49ad('0x36')]=_[_0x49ad('0x34')](_0x337853[_0x49ad('0x30')],qs[_0x49ad('0x35')](_0x20fa76[_0x49ad('0x32')][_0x49ad('0x35')]));_0x14337f[_0x49ad('0x36')]=_0x14337f[_0x49ad('0x36')][_0x49ad('0x37')]?_0x14337f[_0x49ad('0x36')]:_0x337853['model'];_0x14337f[_0x49ad('0x39')]=qs['sort'](_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3a')]);_0x14337f[_0x49ad('0x3b')]=qs[_0x49ad('0x33')](_[_0x49ad('0x3c')](_0x20fa76[_0x49ad('0x32')],_0x337853[_0x49ad('0x33')]));if(_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3d')]){_0x14337f[_0x49ad('0x3b')]=_['merge'](_0x14337f['where'],{'$or':_[_0x49ad('0x2c')](_0x14337f[_0x49ad('0x36')],function(_0x4f03a6){var _0x3dfeec={};_0x3dfeec[_0x4f03a6]={'$like':'%'+_0x20fa76[_0x49ad('0x32')][_0x49ad('0x3d')]+'%'};return _0x3dfeec;})});}_0x14337f=_[_0x49ad('0x3f')]({},_0x14337f,_0x20fa76[_0x49ad('0x46')]);return _0x5a0b64[_0x49ad('0x86')](_0x14337f);}})[_0x49ad('0x23')](function(_0x48cb21){if(_0x48cb21){_0x23cdb7=_0x48cb21['length'];if(!_0x20fa76[_0x49ad('0x32')][_0x49ad('0x38')]('nolimit')){_0x14337f[_0x49ad('0x1d')]=qs[_0x49ad('0x1d')](_0x20fa76['query'][_0x49ad('0x1d')]);_0x14337f[_0x49ad('0x1b')]=qs['offset'](_0x20fa76['query'][_0x49ad('0x1b')]);}return _0x5a0b64['getAgents'](_0x14337f);}})['then'](function(_0x5e097d){if(_0x5e097d){return _0x5e097d?{'count':_0x23cdb7,'rows':_0x5e097d}:null;}})[_0x49ad('0x23')](respondWithResult(_0x3280af,null))[_0x49ad('0x48')](handleError(_0x3280af,null));};
\ No newline at end of file
+var _0xe6c5=['isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','user','role','autoAssociation','destroy','describe','getMembers','findOne','UserSmsQueue','User','findAndCountAll','UserId','agent','smsPause','updatedAt','format','%s/%s','SIP','createdAt','Team','getTeams','addTeams','ids','Agents','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','push','toString','QueryTypes','every','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread'];(function(_0x103704,_0x32bc49){var _0x51c6d1=function(_0x33e40c){while(--_0x33e40c){_0x103704['push'](_0x103704['shift']());}};_0x51c6d1(++_0x32bc49);}(_0xe6c5,0x11c));var _0x5e6c=function(_0x55b253,_0x55bd46){_0x55b253=_0x55b253-0x0;var _0x19e67c=_0xe6c5[_0x55b253];return _0x19e67c;};'use strict';var emlformat=require(_0x5e6c('0x0'));var rimraf=require(_0x5e6c('0x1'));var zipdir=require(_0x5e6c('0x2'));var jsonpatch=require(_0x5e6c('0x3'));var rp=require(_0x5e6c('0x4'));var moment=require(_0x5e6c('0x5'));var BPromise=require(_0x5e6c('0x6'));var Mustache=require('mustache');var util=require(_0x5e6c('0x7'));var path=require(_0x5e6c('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5e6c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5e6c('0xa'));var squel=require(_0x5e6c('0xb'));var crypto=require(_0x5e6c('0xc'));var jsforce=require(_0x5e6c('0xd'));var deskjs=require(_0x5e6c('0xe'));var toCsv=require(_0x5e6c('0xf'));var querystring=require('querystring');var Papa=require(_0x5e6c('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5e6c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e6c('0x12'));var logger=require('../../config/logger')(_0x5e6c('0x13'));var utils=require(_0x5e6c('0x14'));var config=require(_0x5e6c('0x15'));var licenseUtil=require(_0x5e6c('0x16'));var db=require(_0x5e6c('0x17'))['db'];config[_0x5e6c('0x18')]=_['defaults'](config[_0x5e6c('0x18')],{'host':_0x5e6c('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5e6c('0x18')]));require(_0x5e6c('0x1a'))[_0x5e6c('0x1b')](socket);function respondWithStatusCode(_0x1d13f8,_0x4d27f1){_0x4d27f1=_0x4d27f1||0xcc;return function(_0x59cde0){if(_0x59cde0){return _0x1d13f8[_0x5e6c('0x1c')](_0x4d27f1);}return _0x1d13f8[_0x5e6c('0x1d')](_0x4d27f1)[_0x5e6c('0x1e')]();};}function respondWithResult(_0x3c06be,_0x2206e7){_0x2206e7=_0x2206e7||0xc8;return function(_0x578ee3){if(_0x578ee3){return _0x3c06be[_0x5e6c('0x1d')](_0x2206e7)[_0x5e6c('0x1f')](_0x578ee3);}};}function respondWithFilteredResult(_0x162d98,_0x53ba73){return function(_0x3616fd){if(_0x3616fd){var _0x2f3b09=typeof _0x53ba73['offset']===_0x5e6c('0x20')&&typeof _0x53ba73[_0x5e6c('0x21')]==='undefined';var _0x3dbc86=_0x3616fd[_0x5e6c('0x22')];var _0x4374bf=_0x2f3b09?0x0:_0x53ba73[_0x5e6c('0x23')];var _0x11e1a6=_0x2f3b09?_0x3616fd[_0x5e6c('0x22')]:_0x53ba73['offset']+_0x53ba73['limit'];var _0x5826f7;if(_0x11e1a6>=_0x3dbc86){_0x11e1a6=_0x3dbc86;_0x5826f7=0xc8;}else{_0x5826f7=0xce;}_0x162d98['status'](_0x5826f7);return _0x162d98[_0x5e6c('0x24')](_0x5e6c('0x25'),_0x4374bf+'-'+_0x11e1a6+'/'+_0x3dbc86)[_0x5e6c('0x1f')](_0x3616fd);}return null;};}function patchUpdates(_0x463029){return function(_0x3fb22e){try{jsonpatch[_0x5e6c('0x26')](_0x3fb22e,_0x463029,!![]);}catch(_0x358f89){return BPromise['reject'](_0x358f89);}return _0x3fb22e[_0x5e6c('0x27')]();};}function saveUpdates(_0x36bd59,_0x2da870){return function(_0x43c0b4){if(_0x43c0b4){return _0x43c0b4[_0x5e6c('0x28')](_0x36bd59)[_0x5e6c('0x29')](function(_0x25828d){return _0x25828d;});}return null;};}function removeEntity(_0xe9fcfd,_0x38ac06){return function(_0x313296){if(_0x313296){return _0x313296['destroy']()[_0x5e6c('0x29')](function(){var _0x355497=_0x313296[_0x5e6c('0x2a')]({'plain':!![]});var _0x1a98dd=_0x5e6c('0x2b');return db[_0x5e6c('0x2c')]['destroy']({'where':{'type':_0x1a98dd,'resourceId':_0x355497['id']}})[_0x5e6c('0x29')](function(){return _0x313296;});})[_0x5e6c('0x29')](function(){_0xe9fcfd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x57e568,_0x511432){return function(_0x25ea17){if(!_0x25ea17){_0x57e568[_0x5e6c('0x1c')](0x194);}return _0x25ea17;};}function handleError(_0x1b457a,_0x8928f4){_0x8928f4=_0x8928f4||0x1f4;return function(_0x397ace){logger[_0x5e6c('0x2d')](_0x397ace[_0x5e6c('0x2e')]);if(_0x397ace[_0x5e6c('0x2f')]){delete _0x397ace[_0x5e6c('0x2f')];}_0x1b457a[_0x5e6c('0x1d')](_0x8928f4)[_0x5e6c('0x30')](_0x397ace);};}exports[_0x5e6c('0x31')]=function(_0x542d7c,_0x147aea){var _0x1febf2={},_0x53b7ee={},_0x38d732={'count':0x0,'rows':[]};var _0x26288d=_[_0x5e6c('0x32')](db[_0x5e6c('0x33')][_0x5e6c('0x34')],function(_0x838653){return{'name':_0x838653[_0x5e6c('0x35')],'type':_0x838653['type'][_0x5e6c('0x36')]};});_0x53b7ee['model']=_['map'](_0x26288d,_0x5e6c('0x2f'));_0x53b7ee[_0x5e6c('0x37')]=_[_0x5e6c('0x38')](_0x542d7c['query']);_0x53b7ee[_0x5e6c('0x39')]=_[_0x5e6c('0x3a')](_0x53b7ee[_0x5e6c('0x3b')],_0x53b7ee['query']);_0x1febf2[_0x5e6c('0x3c')]=_['intersection'](_0x53b7ee['model'],qs[_0x5e6c('0x3d')](_0x542d7c[_0x5e6c('0x37')][_0x5e6c('0x3d')]));_0x1febf2['attributes']=_0x1febf2[_0x5e6c('0x3c')][_0x5e6c('0x3e')]?_0x1febf2[_0x5e6c('0x3c')]:_0x53b7ee['model'];if(!_0x542d7c['query'][_0x5e6c('0x3f')](_0x5e6c('0x40'))){_0x1febf2[_0x5e6c('0x21')]=qs[_0x5e6c('0x21')](_0x542d7c[_0x5e6c('0x37')][_0x5e6c('0x21')]);_0x1febf2[_0x5e6c('0x23')]=qs[_0x5e6c('0x23')](_0x542d7c[_0x5e6c('0x37')]['offset']);}_0x1febf2[_0x5e6c('0x41')]=qs['sort'](_0x542d7c['query'][_0x5e6c('0x42')]);_0x1febf2[_0x5e6c('0x43')]=qs[_0x5e6c('0x39')](_[_0x5e6c('0x44')](_0x542d7c[_0x5e6c('0x37')],_0x53b7ee[_0x5e6c('0x39')]),_0x26288d);if(_0x542d7c[_0x5e6c('0x37')]['filter']){_0x1febf2[_0x5e6c('0x43')]=_[_0x5e6c('0x45')](_0x1febf2[_0x5e6c('0x43')],{'$or':_[_0x5e6c('0x32')](_0x26288d,function(_0x2b8611){if(_0x2b8611[_0x5e6c('0x46')]!==_0x5e6c('0x47')){var _0x13eec1={};_0x13eec1[_0x2b8611['name']]={'$like':'%'+_0x542d7c[_0x5e6c('0x37')][_0x5e6c('0x48')]+'%'};return _0x13eec1;}})});}_0x1febf2=_[_0x5e6c('0x45')]({},_0x1febf2,_0x542d7c[_0x5e6c('0x49')]);var _0x516e1f={'where':_0x1febf2[_0x5e6c('0x43')]};return db[_0x5e6c('0x33')]['count'](_0x516e1f)[_0x5e6c('0x29')](function(_0x46c090){_0x38d732[_0x5e6c('0x22')]=_0x46c090;if(_0x542d7c[_0x5e6c('0x37')][_0x5e6c('0x4a')]){_0x1febf2['include']=[{'all':!![]}];}return db['SmsQueue'][_0x5e6c('0x4b')](_0x1febf2);})['then'](function(_0x40075e){_0x38d732[_0x5e6c('0x4c')]=_0x40075e;return _0x38d732;})[_0x5e6c('0x29')](respondWithFilteredResult(_0x147aea,_0x1febf2))['catch'](handleError(_0x147aea,null));};exports[_0x5e6c('0x4d')]=function(_0x56949a,_0x2a3807){var _0x311db4={'raw':!![],'where':{'id':_0x56949a[_0x5e6c('0x4e')]['id']}},_0x4b3c62={};_0x4b3c62['model']=_[_0x5e6c('0x38')](db[_0x5e6c('0x33')][_0x5e6c('0x34')]);_0x4b3c62[_0x5e6c('0x37')]=_[_0x5e6c('0x38')](_0x56949a['query']);_0x4b3c62[_0x5e6c('0x39')]=_[_0x5e6c('0x3a')](_0x4b3c62[_0x5e6c('0x3b')],_0x4b3c62[_0x5e6c('0x37')]);_0x311db4[_0x5e6c('0x3c')]=_[_0x5e6c('0x3a')](_0x4b3c62[_0x5e6c('0x3b')],qs[_0x5e6c('0x3d')](_0x56949a[_0x5e6c('0x37')][_0x5e6c('0x3d')]));_0x311db4[_0x5e6c('0x3c')]=_0x311db4[_0x5e6c('0x3c')][_0x5e6c('0x3e')]?_0x311db4[_0x5e6c('0x3c')]:_0x4b3c62[_0x5e6c('0x3b')];if(_0x56949a['query'][_0x5e6c('0x4a')]){_0x311db4[_0x5e6c('0x4f')]=[{'all':!![]}];}_0x311db4=_[_0x5e6c('0x45')]({},_0x311db4,_0x56949a[_0x5e6c('0x49')]);return db[_0x5e6c('0x33')][_0x5e6c('0x50')](_0x311db4)[_0x5e6c('0x29')](handleEntityNotFound(_0x2a3807,null))[_0x5e6c('0x29')](respondWithResult(_0x2a3807,null))[_0x5e6c('0x51')](handleError(_0x2a3807,null));};exports[_0x5e6c('0x52')]=function(_0x3c2c80,_0x4f1b34){return db[_0x5e6c('0x33')][_0x5e6c('0x52')](_0x3c2c80[_0x5e6c('0x53')],{})['then'](function(_0x3befc0){var _0x4d87f7=_0x3c2c80[_0x5e6c('0x54')][_0x5e6c('0x2a')]({'plain':!![]});if(!_0x4d87f7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d87f7[_0x5e6c('0x55')]==='user'){var _0x4a329b=_0x3befc0[_0x5e6c('0x2a')]({'plain':!![]});var _0x11a12c='SmsQueues';return db['UserProfileSection'][_0x5e6c('0x50')]({'where':{'name':_0x11a12c,'userProfileId':_0x4d87f7['userProfileId']},'raw':!![]})[_0x5e6c('0x29')](function(_0x1347f6){if(_0x1347f6&&_0x1347f6[_0x5e6c('0x56')]===0x0){return db['UserProfileResource'][_0x5e6c('0x52')]({'name':_0x4a329b[_0x5e6c('0x2f')],'resourceId':_0x4a329b['id'],'type':_0x1347f6[_0x5e6c('0x2f')],'sectionId':_0x1347f6['id']},{})[_0x5e6c('0x29')](function(){return _0x3befc0;});}else{return _0x3befc0;}})[_0x5e6c('0x51')](function(_0x4871a6){logger[_0x5e6c('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4871a6);throw _0x4871a6;});}return _0x3befc0;})[_0x5e6c('0x29')](respondWithResult(_0x4f1b34,0xc9))[_0x5e6c('0x51')](handleError(_0x4f1b34,null));};exports['update']=function(_0x3f81d3,_0x166eab){if(_0x3f81d3[_0x5e6c('0x53')]['id']){delete _0x3f81d3[_0x5e6c('0x53')]['id'];}return db[_0x5e6c('0x33')][_0x5e6c('0x50')]({'where':{'id':_0x3f81d3[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x166eab,null))[_0x5e6c('0x29')](saveUpdates(_0x3f81d3[_0x5e6c('0x53')],null))[_0x5e6c('0x29')](respondWithResult(_0x166eab,null))[_0x5e6c('0x51')](handleError(_0x166eab,null));};exports[_0x5e6c('0x57')]=function(_0x3ac4e5,_0xe188bc){return db[_0x5e6c('0x33')][_0x5e6c('0x50')]({'where':{'id':_0x3ac4e5[_0x5e6c('0x4e')]['id']}})['then'](handleEntityNotFound(_0xe188bc,null))[_0x5e6c('0x29')](removeEntity(_0xe188bc,null))[_0x5e6c('0x51')](handleError(_0xe188bc,null));};exports[_0x5e6c('0x58')]=function(_0x4c71b3,_0x18641c){return db[_0x5e6c('0x33')][_0x5e6c('0x58')]()[_0x5e6c('0x29')](respondWithResult(_0x18641c,null))['catch'](handleError(_0x18641c,null));};exports[_0x5e6c('0x59')]=function(_0x3301bc,_0x29e0b7,_0x2d33c6){var _0x422180={'raw':!![],'where':{}},_0x4b95e2={},_0x200cd8;return db[_0x5e6c('0x33')][_0x5e6c('0x5a')]({'where':{'id':_0x3301bc[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x29e0b7,null))['then'](function(_0xa9320a){if(_0xa9320a){_0x200cd8=_0xa9320a['get']({'plain':!![]});_0x4b95e2['model']=_['keys'](db[_0x5e6c('0x5b')]['rawAttributes']);_0x4b95e2['query']=_[_0x5e6c('0x38')](_0x3301bc['query']);_0x4b95e2[_0x5e6c('0x39')]=_[_0x5e6c('0x3a')](_0x4b95e2[_0x5e6c('0x3b')],_0x4b95e2[_0x5e6c('0x37')]);_0x422180[_0x5e6c('0x3c')]=_[_0x5e6c('0x3a')](_0x4b95e2[_0x5e6c('0x3b')],qs[_0x5e6c('0x3d')](_0x3301bc[_0x5e6c('0x37')][_0x5e6c('0x3d')]));_0x422180[_0x5e6c('0x3c')]=_0x422180['attributes']['length']?_0x422180[_0x5e6c('0x3c')]:_0x4b95e2[_0x5e6c('0x3b')];if(!_0x3301bc['query'][_0x5e6c('0x3f')]('nolimit')){_0x422180[_0x5e6c('0x21')]=qs[_0x5e6c('0x21')](_0x3301bc['query'][_0x5e6c('0x21')]);_0x422180[_0x5e6c('0x23')]=qs[_0x5e6c('0x23')](_0x3301bc[_0x5e6c('0x37')][_0x5e6c('0x23')]);}_0x422180[_0x5e6c('0x41')]=qs[_0x5e6c('0x42')](_0x3301bc[_0x5e6c('0x37')][_0x5e6c('0x42')]);_0x422180[_0x5e6c('0x43')]=qs[_0x5e6c('0x39')](_[_0x5e6c('0x44')](_0x3301bc[_0x5e6c('0x37')],_0x4b95e2[_0x5e6c('0x39')]));_0x422180[_0x5e6c('0x43')]['SmsQueueId']=_0xa9320a['id'];if(_0x3301bc['query']['filter']){_0x422180['where']=_[_0x5e6c('0x45')](_0x422180[_0x5e6c('0x43')],{'$or':_[_0x5e6c('0x32')](_0x422180[_0x5e6c('0x3c')],function(_0x163364){var _0x533238={};_0x533238[_0x163364]={'$like':'%'+_0x3301bc['query'][_0x5e6c('0x48')]+'%'};return _0x533238;})});}_0x422180=_[_0x5e6c('0x45')]({},_0x422180,_0x3301bc['options']);return db[_0x5e6c('0x5b')][_0x5e6c('0x4b')](_0x422180);}})[_0x5e6c('0x29')](function(_0x2620e9){if(_0x2620e9){return db[_0x5e6c('0x5c')][_0x5e6c('0x5d')]({'where':{'id':_['map'](_0x2620e9,_0x5e6c('0x5e')),'role':_0x5e6c('0x5f')},'attributes':['id',_0x5e6c('0x2f'),_0x5e6c('0x60'),_0x5e6c('0x61'),'createdAt']});}})[_0x5e6c('0x29')](function(_0x11d3f6){if(_0x11d3f6){return{'count':_0x11d3f6['count'],'rows':_[_0x5e6c('0x32')](_0x11d3f6[_0x5e6c('0x4c')],function(_0x20b8b8){return{'membername':_0x20b8b8['name'],'UserId':_0x20b8b8['id'],'queue_name':_0x200cd8[_0x5e6c('0x2f')],'SmsQueueId':_0x200cd8['id'],'interface':util[_0x5e6c('0x62')](_0x5e6c('0x63'),_0x5e6c('0x64'),_0x20b8b8[_0x5e6c('0x2f')]),'penalty':0x0,'paused':_0x20b8b8[_0x5e6c('0x60')],'createdAt':_0x20b8b8[_0x5e6c('0x65')],'updatedAt':_0x20b8b8[_0x5e6c('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5e6c('0x29')](respondWithFilteredResult(_0x29e0b7,_0x422180))[_0x5e6c('0x51')](handleError(_0x29e0b7,null));};exports['getTeams']=function(_0x5941f2,_0x6ac2ff,_0x3f1a3f){var _0x48d9b2={};var _0x1bded3={};var _0x2a5720;var _0x20ef0e;return db[_0x5e6c('0x33')][_0x5e6c('0x5a')]({'where':{'id':_0x5941f2['params']['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x6ac2ff,null))[_0x5e6c('0x29')](function(_0x22dbda){if(_0x22dbda){_0x2a5720=_0x22dbda;_0x1bded3[_0x5e6c('0x3b')]=_['keys'](db[_0x5e6c('0x66')]['rawAttributes']);_0x1bded3['query']=_['keys'](_0x5941f2[_0x5e6c('0x37')]);_0x1bded3[_0x5e6c('0x39')]=_[_0x5e6c('0x3a')](_0x1bded3['model'],_0x1bded3[_0x5e6c('0x37')]);_0x48d9b2['attributes']=_[_0x5e6c('0x3a')](_0x1bded3[_0x5e6c('0x3b')],qs[_0x5e6c('0x3d')](_0x5941f2['query']['fields']));_0x48d9b2['attributes']=_0x48d9b2[_0x5e6c('0x3c')][_0x5e6c('0x3e')]?_0x48d9b2['attributes']:_0x1bded3[_0x5e6c('0x3b')];_0x48d9b2['order']=qs[_0x5e6c('0x42')](_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x42')]);_0x48d9b2[_0x5e6c('0x43')]=qs[_0x5e6c('0x39')](_[_0x5e6c('0x44')](_0x5941f2['query'],_0x1bded3[_0x5e6c('0x39')]));if(_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x48')]){_0x48d9b2[_0x5e6c('0x43')]=_[_0x5e6c('0x45')](_0x48d9b2[_0x5e6c('0x43')],{'$or':_['map'](_0x48d9b2[_0x5e6c('0x3c')],function(_0x553523){var _0x2bb405={};_0x2bb405[_0x553523]={'$like':'%'+_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x48')]+'%'};return _0x2bb405;})});}_0x48d9b2=_['merge']({},_0x48d9b2,_0x5941f2['options']);return _0x2a5720[_0x5e6c('0x67')](_0x48d9b2);}})[_0x5e6c('0x29')](function(_0x34599e){if(_0x34599e){_0x20ef0e=_0x34599e[_0x5e6c('0x3e')];if(!_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x3f')](_0x5e6c('0x40'))){_0x48d9b2[_0x5e6c('0x21')]=qs[_0x5e6c('0x21')](_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x21')]);_0x48d9b2[_0x5e6c('0x23')]=qs[_0x5e6c('0x23')](_0x5941f2[_0x5e6c('0x37')][_0x5e6c('0x23')]);}return _0x2a5720[_0x5e6c('0x67')](_0x48d9b2);}})[_0x5e6c('0x29')](function(_0x30ee5f){if(_0x30ee5f){return _0x30ee5f?{'count':_0x20ef0e,'rows':_0x30ee5f}:null;}})[_0x5e6c('0x29')](respondWithResult(_0x6ac2ff,null))['catch'](handleError(_0x6ac2ff,null));};exports[_0x5e6c('0x68')]=function(_0x19a775,_0x31d53f,_0x1c4fab){var _0x5d24d2=_0x19a775[_0x5e6c('0x53')][_0x5e6c('0x69')];return db[_0x5e6c('0x66')][_0x5e6c('0x4b')]({'where':{'id':_0x5d24d2},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5e6c('0x6a'),'attributes':['id',_0x5e6c('0x2f'),'online','voicePause',_0x5e6c('0x6b')],'raw':!![]}]})[_0x5e6c('0x29')](function(_0x30b286){if(_0x30b286){var _0x2140b7=_['flatMap'](_0x30b286,function(_0x51a8c7){var _0x327d49=_0x51a8c7['get']({'plain':!![]});return _0x327d49[_0x5e6c('0x6a')];});return db[_0x5e6c('0x33')][_0x5e6c('0x50')]({'where':{'id':_0x19a775['params']['id']}})[_0x5e6c('0x29')](function(_0xb47702){return db[_0x5e6c('0x6c')][_0x5e6c('0x6d')](function(_0x58bdac){return _0xb47702[_0x5e6c('0x68')](_0x5d24d2,{'transaction':_0x58bdac})['then'](function(){return BPromise[_0x5e6c('0x6e')](_0x2140b7,function(_0x20389d){return db[_0x5e6c('0x5b')][_0x5e6c('0x6f')]({'where':{'UserId':_0x20389d['id'],'SmsQueueId':_0x19a775[_0x5e6c('0x4e')]['id']},'transaction':_0x58bdac});});})[_0x5e6c('0x29')](function(){_0x2140b7[_0x5e6c('0x70')](function(_0x1d3b7a){socket[_0x5e6c('0x71')](_0x5e6c('0x72'),{'UserId':_0x1d3b7a['id'],'SmsQueueId':_0xb47702['id']});});});});});}})[_0x5e6c('0x29')](respondWithStatusCode(_0x31d53f,null))[_0x5e6c('0x51')](handleError(_0x31d53f,null));};exports['removeTeams']=function(_0x3a2369,_0x399efb,_0x35eb28){return db[_0x5e6c('0x66')][_0x5e6c('0x4b')]({'where':{'id':_0x3a2369[_0x5e6c('0x37')][_0x5e6c('0x69')]},'attributes':['id'],'include':[{'model':db[_0x5e6c('0x5c')],'as':_0x5e6c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x5e6c('0x29')](handleEntityNotFound(_0x399efb,null))[_0x5e6c('0x29')](function(_0x1fd308){var _0x4a30c3=_[_0x5e6c('0x32')](_0x1fd308,'id');var _0x412b4d=[];var _0x1e7b1c=[];var _0x4c4081=squel['select']();_0x4c4081[_0x5e6c('0x73')](_0x5e6c('0x74'))[_0x5e6c('0x75')](_0x5e6c('0x76'),'tq')[_0x5e6c('0x77')]('user_has_teams','ut',_0x5e6c('0x78'))[_0x5e6c('0x43')](_0x5e6c('0x79'),_0x3a2369[_0x5e6c('0x4e')]['id']);for(var _0x2f1d58=0x0;_0x2f1d58<_0x1fd308[_0x5e6c('0x3e')];_0x2f1d58+=0x1){let _0x282325=_0x1fd308[_0x2f1d58];for(var _0x423211=0x0;_0x423211<_0x282325[_0x5e6c('0x6a')][_0x5e6c('0x3e')];_0x423211+=0x1){let _0x2b03ef=_0x282325['Agents'][_0x423211];var _0x2a016c=_0x4c4081[_0x5e6c('0x7a')]();_0x2a016c['where']('ut.UserId\x20=\x20?',_0x2b03ef['id']);_0x1e7b1c[_0x5e6c('0x7b')](db[_0x5e6c('0x6c')][_0x5e6c('0x37')](_0x2a016c[_0x5e6c('0x7c')](),{'type':db[_0x5e6c('0x6c')][_0x5e6c('0x7d')]['SELECT']})[_0x5e6c('0x29')](function(_0x286db3){if(_0x286db3['length']===0x1){return _0x2b03ef['id'];}else{var _0x850358=_[_0x5e6c('0x7e')](_[_0x5e6c('0x32')](_0x286db3,'TeamId'),function(_0x488dd7){return _[_0x5e6c('0x7f')](_0x4a30c3,_0x488dd7);});if(_0x850358){return _0x2b03ef['id'];}}}));}}return BPromise[_0x5e6c('0x80')](_0x1e7b1c)[_0x5e6c('0x29')](function(_0x2f5b92){_0x412b4d=_(_0x412b4d)[_0x5e6c('0x81')](_0x2f5b92)[_0x5e6c('0x82')]()[_0x5e6c('0x83')]();return db[_0x5e6c('0x33')][_0x5e6c('0x50')]({'where':{'id':_0x3a2369[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](function(_0x226f83){return db[_0x5e6c('0x6c')][_0x5e6c('0x6d')](function(_0x1ebe07){return _0x226f83[_0x5e6c('0x84')](_0x3a2369[_0x5e6c('0x37')]['ids'],{'transaction':_0x1ebe07})[_0x5e6c('0x29')](function(){if(!_[_0x5e6c('0x85')](_0x412b4d)){return _0x226f83[_0x5e6c('0x86')](_0x412b4d,{'transaction':_0x1ebe07});}})[_0x5e6c('0x29')](function(){_0x412b4d['forEach'](function(_0x2a8e94){socket[_0x5e6c('0x71')](_0x5e6c('0x87'),{'UserId':_0x2a8e94,'SmsQueueId':_0x226f83['id']});});});});});});})[_0x5e6c('0x29')](respondWithStatusCode(_0x399efb,null))[_0x5e6c('0x51')](handleError(_0x399efb,null));};exports[_0x5e6c('0x88')]=function(_0x39253e,_0x1ce520,_0x2f826a){return db['SmsQueue'][_0x5e6c('0x50')]({'where':{'id':_0x39253e[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x1ce520,null))[_0x5e6c('0x29')](function(_0x577d35){if(_0x577d35){return _0x577d35[_0x5e6c('0x88')](_0x39253e['body'][_0x5e6c('0x69')],_[_0x5e6c('0x89')](_0x39253e[_0x5e6c('0x53')],[_0x5e6c('0x69'),'id'])||{})[_0x5e6c('0x8a')](function(_0x496690){for(var _0x3a7d27=0x0;_0x3a7d27<_0x39253e[_0x5e6c('0x53')][_0x5e6c('0x69')]['length'];_0x3a7d27+=0x1){socket[_0x5e6c('0x71')]('userSmsQueue:save',{'UserId':Number(_0x39253e[_0x5e6c('0x53')][_0x5e6c('0x69')][_0x3a7d27]),'SmsQueueId':Number(_0x39253e[_0x5e6c('0x4e')]['id'])});}return _0x496690;});}})['then'](respondWithResult(_0x1ce520,null))[_0x5e6c('0x51')](handleError(_0x1ce520,null));};exports[_0x5e6c('0x86')]=function(_0x5ac0e1,_0x182937,_0x2e262c){return db['SmsQueue'][_0x5e6c('0x50')]({'where':{'id':_0x5ac0e1[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x182937,null))[_0x5e6c('0x29')](function(_0x5157e4){if(_0x5157e4){return _0x5157e4[_0x5e6c('0x86')](_0x5ac0e1[_0x5e6c('0x37')]['ids'])[_0x5e6c('0x29')](function(){if(_[_0x5e6c('0x8b')](_0x5ac0e1['query'][_0x5e6c('0x69')])){for(var _0x5f225c=0x0;_0x5f225c<_0x5ac0e1[_0x5e6c('0x37')][_0x5e6c('0x69')][_0x5e6c('0x3e')];_0x5f225c+=0x1){socket[_0x5e6c('0x71')](_0x5e6c('0x87'),{'UserId':Number(_0x5ac0e1['query'][_0x5e6c('0x69')][_0x5f225c]),'SmsQueueId':Number(_0x5ac0e1['params']['id'])});}}else{socket['emit'](_0x5e6c('0x87'),{'UserId':Number(_0x5ac0e1[_0x5e6c('0x37')]['ids']),'SmsQueueId':Number(_0x5ac0e1[_0x5e6c('0x4e')]['id'])});}});}})[_0x5e6c('0x29')](respondWithStatusCode(_0x182937,null))[_0x5e6c('0x51')](handleError(_0x182937,null));};exports[_0x5e6c('0x8c')]=function(_0x41b9be,_0x2f67ee,_0x51f562){var _0x1a0f7a={};var _0x49be9c={};var _0x6d02c9;var _0x4ae070;return db[_0x5e6c('0x33')][_0x5e6c('0x5a')]({'where':{'id':_0x41b9be[_0x5e6c('0x4e')]['id']}})[_0x5e6c('0x29')](handleEntityNotFound(_0x2f67ee,null))[_0x5e6c('0x29')](function(_0x9ddd39){if(_0x9ddd39){_0x6d02c9=_0x9ddd39;_0x49be9c['model']=_[_0x5e6c('0x38')](db[_0x5e6c('0x5c')][_0x5e6c('0x34')]);_0x49be9c[_0x5e6c('0x37')]=_[_0x5e6c('0x38')](_0x41b9be[_0x5e6c('0x37')]);_0x49be9c['filters']=_[_0x5e6c('0x3a')](_0x49be9c['model'],_0x49be9c[_0x5e6c('0x37')]);_0x1a0f7a['attributes']=_[_0x5e6c('0x3a')](_0x49be9c[_0x5e6c('0x3b')],qs[_0x5e6c('0x3d')](_0x41b9be['query'][_0x5e6c('0x3d')]));_0x1a0f7a[_0x5e6c('0x3c')]=_0x1a0f7a['attributes'][_0x5e6c('0x3e')]?_0x1a0f7a[_0x5e6c('0x3c')]:_0x49be9c['model'];_0x1a0f7a[_0x5e6c('0x41')]=qs['sort'](_0x41b9be[_0x5e6c('0x37')][_0x5e6c('0x42')]);_0x1a0f7a['where']=qs[_0x5e6c('0x39')](_[_0x5e6c('0x44')](_0x41b9be[_0x5e6c('0x37')],_0x49be9c[_0x5e6c('0x39')]));if(_0x41b9be[_0x5e6c('0x37')]['filter']){_0x1a0f7a[_0x5e6c('0x43')]=_[_0x5e6c('0x45')](_0x1a0f7a[_0x5e6c('0x43')],{'$or':_[_0x5e6c('0x32')](_0x1a0f7a['attributes'],function(_0x3ca541){var _0x5a7854={};_0x5a7854[_0x3ca541]={'$like':'%'+_0x41b9be[_0x5e6c('0x37')][_0x5e6c('0x48')]+'%'};return _0x5a7854;})});}_0x1a0f7a=_['merge']({},_0x1a0f7a,_0x41b9be[_0x5e6c('0x49')]);return _0x6d02c9[_0x5e6c('0x8c')](_0x1a0f7a);}})[_0x5e6c('0x29')](function(_0x3526ee){if(_0x3526ee){_0x4ae070=_0x3526ee[_0x5e6c('0x3e')];if(!_0x41b9be[_0x5e6c('0x37')][_0x5e6c('0x3f')](_0x5e6c('0x40'))){_0x1a0f7a[_0x5e6c('0x21')]=qs[_0x5e6c('0x21')](_0x41b9be['query']['limit']);_0x1a0f7a[_0x5e6c('0x23')]=qs[_0x5e6c('0x23')](_0x41b9be['query'][_0x5e6c('0x23')]);}return _0x6d02c9[_0x5e6c('0x8c')](_0x1a0f7a);}})[_0x5e6c('0x29')](function(_0x1be9db){if(_0x1be9db){return _0x1be9db?{'count':_0x4ae070,'rows':_0x1be9db}:null;}})['then'](respondWithResult(_0x2f67ee,null))['catch'](handleError(_0x2f67ee,null));};
\ No newline at end of file
index 13b2e3c..c5fcaf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf733=['setMaxListeners','save','remove','emit','hook','exports','events','../../mysqldb','SmsQueue'];(function(_0x591564,_0x50e154){var _0x915a26=function(_0x3ced93){while(--_0x3ced93){_0x591564['push'](_0x591564['shift']());}};_0x915a26(++_0x50e154);}(_0xf733,0x15c));var _0x3f73=function(_0x525798,_0x77a707){_0x525798=_0x525798-0x0;var _0x57da9a=_0xf733[_0x525798];return _0x57da9a;};'use strict';var EventEmitter=require(_0x3f73('0x0'));var SmsQueue=require(_0x3f73('0x1'))['db'][_0x3f73('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x3f73('0x3')](0x0);var events={'afterCreate':_0x3f73('0x4'),'afterUpdate':'update','afterDestroy':_0x3f73('0x5')};function emitEvent(_0x534e1e){return function(_0x32581f,_0x389648,_0x3ac8da){SmsQueueEvents[_0x3f73('0x6')](_0x534e1e+':'+_0x32581f['id'],_0x32581f);SmsQueueEvents[_0x3f73('0x6')](_0x534e1e,_0x32581f);_0x3ac8da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x3f73('0x7')](e,emitEvent(event));}}module[_0x3f73('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0xed1c=['save','update','remove','emit','hook','../../mysqldb','SmsQueue'];(function(_0x2a3e54,_0x2ea3f9){var _0x3c792f=function(_0x47c2b){while(--_0x47c2b){_0x2a3e54['push'](_0x2a3e54['shift']());}};_0x3c792f(++_0x2ea3f9);}(_0xed1c,0xc9));var _0xced1=function(_0x289ebc,_0x15adb1){_0x289ebc=_0x289ebc-0x0;var _0x52b49f=_0xed1c[_0x289ebc];return _0x52b49f;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xced1('0x0'))['db'][_0xced1('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xced1('0x2'),'afterUpdate':_0xced1('0x3'),'afterDestroy':_0xced1('0x4')};function emitEvent(_0x430e57){return function(_0x4559d8,_0x305ce9,_0xb61af9){SmsQueueEvents['emit'](_0x430e57+':'+_0x4559d8['id'],_0x4559d8);SmsQueueEvents[_0xced1('0x5')](_0x430e57,_0x4559d8);_0xb61af9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xced1('0x6')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index 8ae8110..64a0b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c57=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','util'];(function(_0x35ef1d,_0x574202){var _0xc40732=function(_0x11d538){while(--_0x11d538){_0x35ef1d['push'](_0x35ef1d['shift']());}};_0xc40732(++_0x574202);}(_0x7c57,0x1af));var _0x77c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c57[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x77c5('0x0'));var logger=require(_0x77c5('0x1'))(_0x77c5('0x2'));var moment=require(_0x77c5('0x3'));var BPromise=require(_0x77c5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x77c5('0x5'));var rimraf=require(_0x77c5('0x6'));var config=require(_0x77c5('0x7'));var attributes=require(_0x77c5('0x8'));module[_0x77c5('0x9')]=function(_0x3c4140,_0x331b0f){return _0x3c4140[_0x77c5('0xa')](_0x77c5('0xb'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6bea=['util','../../config/logger','api','moment','path','rimraf','./smsQueue.attributes','exports','sms_queues','lodash'];(function(_0x5f511f,_0x57a484){var _0x30aa77=function(_0x52bb2d){while(--_0x52bb2d){_0x5f511f['push'](_0x5f511f['shift']());}};_0x30aa77(++_0x57a484);}(_0x6bea,0xdb));var _0xa6be=function(_0x554efd,_0x3f5a1b){_0x554efd=_0x554efd-0x0;var _0x4edfd5=_0x6bea[_0x554efd];return _0x4edfd5;};'use strict';var _=require(_0xa6be('0x0'));var util=require(_0xa6be('0x1'));var logger=require(_0xa6be('0x2'))(_0xa6be('0x3'));var moment=require(_0xa6be('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa6be('0x5'));var rimraf=require(_0xa6be('0x6'));var config=require('../../config/environment');var attributes=require(_0xa6be('0x7'));module[_0xa6be('0x8')]=function(_0x2098d0,_0x3ee085){return _0x2098d0['define']('SmsQueue',attributes,{'tableName':_0xa6be('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42a3e72..f1bfe23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7431=['options','raw','where','attributes','include','map','model','ShowSmsQueue','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','./smsQueue.socket','then','info','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueue,\x20%s,\x20%s','message','result','catch','GetSmsQueue','SmsQueue'];(function(_0x44928e,_0x493d13){var _0x38e001=function(_0x535572){while(--_0x535572){_0x44928e['push'](_0x44928e['shift']());}};_0x38e001(++_0x493d13);}(_0x7431,0x1a0));var _0x1743=function(_0x3cdba4,_0x38853d){_0x3cdba4=_0x3cdba4-0x0;var _0x5b35bc=_0x7431[_0x3cdba4];return _0x5b35bc;};'use strict';var _=require('lodash');var util=require(_0x1743('0x0'));var moment=require(_0x1743('0x1'));var BPromise=require(_0x1743('0x2'));var rs=require(_0x1743('0x3'));var fs=require('fs');var Redis=require(_0x1743('0x4'));var db=require(_0x1743('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1743('0x6'))(_0x1743('0x7'));var config=require(_0x1743('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1743('0x9')][_0x1743('0xa')]({'port':0x232a});config[_0x1743('0xb')]=_[_0x1743('0xc')](config[_0x1743('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1743('0xb')]));require(_0x1743('0xd'))['register'](socket);function respondWithRpcPromise(_0x29f2af,_0x1180ff,_0x57aa1f){return new BPromise(function(_0x466b07,_0x25c12b){return client['request'](_0x29f2af,_0x57aa1f)[_0x1743('0xe')](function(_0x5df94d){logger[_0x1743('0xf')]('SmsQueue,\x20%s,\x20%s',_0x1180ff,'request\x20sent');logger[_0x1743('0x10')](_0x1743('0x11'),_0x1180ff,_0x1743('0x12'),JSON[_0x1743('0x13')](_0x5df94d));if(_0x5df94d[_0x1743('0x14')]){if(_0x5df94d[_0x1743('0x14')][_0x1743('0x15')]===0x1f4){logger[_0x1743('0x14')](_0x1743('0x16'),_0x1180ff,_0x5df94d[_0x1743('0x14')][_0x1743('0x17')]);return _0x25c12b(_0x5df94d[_0x1743('0x14')]['message']);}logger['error'](_0x1743('0x16'),_0x1180ff,_0x5df94d['error'][_0x1743('0x17')]);return _0x466b07(_0x5df94d[_0x1743('0x14')][_0x1743('0x17')]);}else{logger[_0x1743('0xf')]('SmsQueue,\x20%s,\x20%s',_0x1180ff,_0x1743('0x12'));_0x466b07(_0x5df94d[_0x1743('0x18')][_0x1743('0x17')]);}})[_0x1743('0x19')](function(_0x363c3a){logger['error'](_0x1743('0x16'),_0x1180ff,_0x363c3a);_0x25c12b(_0x363c3a);});});}exports[_0x1743('0x1a')]=function(_0x5a8d77){var _0x2da4bd=this;return new Promise(function(_0x577557,_0x24956a){return db[_0x1743('0x1b')]['findAll']({'raw':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1d')]===undefined?!![]:![]:!![],'where':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1e')]||null:null,'attributes':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x1f')]||null:null,'limit':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')]['limit']||null:null,'include':_0x5a8d77[_0x1743('0x1c')]?_0x5a8d77[_0x1743('0x1c')][_0x1743('0x20')]?_[_0x1743('0x21')](_0x5a8d77[_0x1743('0x1c')]['include'],function(_0x2ca430){return{'model':db[_0x2ca430[_0x1743('0x22')]],'as':_0x2ca430['as'],'attributes':_0x2ca430['attributes'],'include':_0x2ca430[_0x1743('0x20')]?_['map'](_0x2ca430[_0x1743('0x20')],function(_0x1d229c){return{'model':db[_0x1d229c['model']],'as':_0x1d229c['as'],'attributes':_0x1d229c[_0x1743('0x1f')],'include':_0x1d229c[_0x1743('0x20')]?_['map'](_0x1d229c[_0x1743('0x20')],function(_0x11f5e2){return{'model':db[_0x11f5e2[_0x1743('0x22')]],'as':_0x11f5e2['as'],'attributes':_0x11f5e2[_0x1743('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x1743('0xe')](function(_0x2af290){logger['info']('GetSmsQueue',_0x5a8d77);logger[_0x1743('0x10')](_0x1743('0x1a'),_0x5a8d77,JSON[_0x1743('0x13')](_0x2af290));_0x577557(_0x2af290);})[_0x1743('0x19')](function(_0x4ee59c){logger['error'](_0x1743('0x1a'),_0x4ee59c[_0x1743('0x17')],_0x5a8d77);_0x24956a(_0x2da4bd[_0x1743('0x14')](0x1f4,_0x4ee59c['message']));});});};exports[_0x1743('0x23')]=function(_0x1b8ea9){var _0x250e7c=this;return new Promise(function(_0x380906,_0x270bb0){return db[_0x1743('0x1b')][_0x1743('0x24')]({'raw':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x1e')]||null:null,'attributes':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')]['attributes']||null:null,'include':_0x1b8ea9[_0x1743('0x1c')]?_0x1b8ea9[_0x1743('0x1c')]['include']?_[_0x1743('0x21')](_0x1b8ea9[_0x1743('0x1c')][_0x1743('0x20')],function(_0x43e8e7){return{'model':db[_0x43e8e7[_0x1743('0x22')]],'as':_0x43e8e7['as'],'attributes':_0x43e8e7[_0x1743('0x1f')],'include':_0x43e8e7['include']?_[_0x1743('0x21')](_0x43e8e7['include'],function(_0x2e83f9){return{'model':db[_0x2e83f9[_0x1743('0x22')]],'as':_0x2e83f9['as'],'attributes':_0x2e83f9[_0x1743('0x1f')],'include':_0x2e83f9[_0x1743('0x20')]?_['map'](_0x2e83f9['include'],function(_0x41017f){return{'model':db[_0x41017f[_0x1743('0x22')]],'as':_0x41017f['as'],'attributes':_0x41017f[_0x1743('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x122641){logger[_0x1743('0xf')](_0x1743('0x23'),_0x1b8ea9);logger['debug'](_0x1743('0x23'),_0x1b8ea9,JSON['stringify'](_0x122641));_0x380906(_0x122641);})[_0x1743('0x19')](function(_0x525eca){logger[_0x1743('0x14')](_0x1743('0x23'),_0x525eca[_0x1743('0x17')],_0x1b8ea9);_0x270bb0(_0x250e7c[_0x1743('0x14')](0x1f4,_0x525eca['message']));});});};
\ No newline at end of file
+var _0x3718=['include','map','model','SmsQueue','find','ShowSmsQueue','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','GetSmsQueue','options','raw','where','attributes','limit'];(function(_0x209fd5,_0x2035a8){var _0x1f8f75=function(_0x5a0f92){while(--_0x5a0f92){_0x209fd5['push'](_0x209fd5['shift']());}};_0x1f8f75(++_0x2035a8);}(_0x3718,0x13f));var _0x8371=function(_0x52caed,_0x47c8a0){_0x52caed=_0x52caed-0x0;var _0x1089e5=_0x3718[_0x52caed];return _0x1089e5;};'use strict';var _=require(_0x8371('0x0'));var util=require(_0x8371('0x1'));var moment=require(_0x8371('0x2'));var BPromise=require(_0x8371('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8371('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8371('0x5'))(_0x8371('0x6'));var config=require('../../config/environment');var jayson=require(_0x8371('0x7'));var client=jayson[_0x8371('0x8')][_0x8371('0x9')]({'port':0x232a});config[_0x8371('0xa')]=_[_0x8371('0xb')](config[_0x8371('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x8371('0xc'))(new Redis(config[_0x8371('0xa')]));require('./smsQueue.socket')[_0x8371('0xd')](socket);function respondWithRpcPromise(_0xd8b4cb,_0x4c50f2,_0xe8d312){return new BPromise(function(_0x51a505,_0x131f4a){return client[_0x8371('0xe')](_0xd8b4cb,_0xe8d312)[_0x8371('0xf')](function(_0x4ae19e){logger['info'](_0x8371('0x10'),_0x4c50f2,'request\x20sent');logger[_0x8371('0x11')](_0x8371('0x12'),_0x4c50f2,'request\x20sent',JSON[_0x8371('0x13')](_0x4ae19e));if(_0x4ae19e[_0x8371('0x14')]){if(_0x4ae19e[_0x8371('0x14')][_0x8371('0x15')]===0x1f4){logger['error'](_0x8371('0x10'),_0x4c50f2,_0x4ae19e['error'][_0x8371('0x16')]);return _0x131f4a(_0x4ae19e[_0x8371('0x14')][_0x8371('0x16')]);}logger[_0x8371('0x14')]('SmsQueue,\x20%s,\x20%s',_0x4c50f2,_0x4ae19e[_0x8371('0x14')]['message']);return _0x51a505(_0x4ae19e[_0x8371('0x14')][_0x8371('0x16')]);}else{logger[_0x8371('0x17')](_0x8371('0x10'),_0x4c50f2,_0x8371('0x18'));_0x51a505(_0x4ae19e[_0x8371('0x19')][_0x8371('0x16')]);}})['catch'](function(_0x3ccef4){logger[_0x8371('0x14')](_0x8371('0x10'),_0x4c50f2,_0x3ccef4);_0x131f4a(_0x3ccef4);});});}exports[_0x8371('0x1a')]=function(_0x438656){var _0x3d93c3=this;return new Promise(function(_0x1e15ba,_0xf00177){return db['SmsQueue']['findAll']({'raw':_0x438656['options']?_0x438656[_0x8371('0x1b')][_0x8371('0x1c')]===undefined?!![]:![]:!![],'where':_0x438656[_0x8371('0x1b')]?_0x438656['options'][_0x8371('0x1d')]||null:null,'attributes':_0x438656['options']?_0x438656['options'][_0x8371('0x1e')]||null:null,'limit':_0x438656['options']?_0x438656[_0x8371('0x1b')][_0x8371('0x1f')]||null:null,'include':_0x438656[_0x8371('0x1b')]?_0x438656[_0x8371('0x1b')][_0x8371('0x20')]?_[_0x8371('0x21')](_0x438656[_0x8371('0x1b')]['include'],function(_0x3b17fc){return{'model':db[_0x3b17fc[_0x8371('0x22')]],'as':_0x3b17fc['as'],'attributes':_0x3b17fc[_0x8371('0x1e')],'include':_0x3b17fc[_0x8371('0x20')]?_['map'](_0x3b17fc[_0x8371('0x20')],function(_0x514950){return{'model':db[_0x514950[_0x8371('0x22')]],'as':_0x514950['as'],'attributes':_0x514950[_0x8371('0x1e')],'include':_0x514950[_0x8371('0x20')]?_[_0x8371('0x21')](_0x514950['include'],function(_0x28eb29){return{'model':db[_0x28eb29[_0x8371('0x22')]],'as':_0x28eb29['as'],'attributes':_0x28eb29[_0x8371('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b1465){logger[_0x8371('0x17')]('GetSmsQueue',_0x438656);logger[_0x8371('0x11')](_0x8371('0x1a'),_0x438656,JSON['stringify'](_0x3b1465));_0x1e15ba(_0x3b1465);})['catch'](function(_0xf20f51){logger['error'](_0x8371('0x1a'),_0xf20f51['message'],_0x438656);_0xf00177(_0x3d93c3[_0x8371('0x14')](0x1f4,_0xf20f51['message']));});});};exports['ShowSmsQueue']=function(_0x6d94cf){var _0x321820=this;return new Promise(function(_0x462bfd,_0x209f98){return db[_0x8371('0x23')][_0x8371('0x24')]({'raw':_0x6d94cf[_0x8371('0x1b')]?_0x6d94cf['options'][_0x8371('0x1c')]===undefined?!![]:![]:!![],'where':_0x6d94cf[_0x8371('0x1b')]?_0x6d94cf[_0x8371('0x1b')][_0x8371('0x1d')]||null:null,'attributes':_0x6d94cf['options']?_0x6d94cf['options']['attributes']||null:null,'include':_0x6d94cf['options']?_0x6d94cf[_0x8371('0x1b')][_0x8371('0x20')]?_[_0x8371('0x21')](_0x6d94cf[_0x8371('0x1b')][_0x8371('0x20')],function(_0x4ceb91){return{'model':db[_0x4ceb91['model']],'as':_0x4ceb91['as'],'attributes':_0x4ceb91[_0x8371('0x1e')],'include':_0x4ceb91[_0x8371('0x20')]?_[_0x8371('0x21')](_0x4ceb91['include'],function(_0x4842a9){return{'model':db[_0x4842a9[_0x8371('0x22')]],'as':_0x4842a9['as'],'attributes':_0x4842a9['attributes'],'include':_0x4842a9[_0x8371('0x20')]?_[_0x8371('0x21')](_0x4842a9[_0x8371('0x20')],function(_0xcc806b){return{'model':db[_0xcc806b[_0x8371('0x22')]],'as':_0xcc806b['as'],'attributes':_0xcc806b[_0x8371('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8371('0xf')](function(_0x5a4927){logger['info'](_0x8371('0x25'),_0x6d94cf);logger[_0x8371('0x11')](_0x8371('0x25'),_0x6d94cf,JSON[_0x8371('0x13')](_0x5a4927));_0x462bfd(_0x5a4927);})[_0x8371('0x26')](function(_0x30d132){logger[_0x8371('0x14')](_0x8371('0x25'),_0x30d132[_0x8371('0x16')],_0x6d94cf);_0x209f98(_0x321820[_0x8371('0x14')](0x1f4,_0x30d132[_0x8371('0x16')]));});});};
\ No newline at end of file
index 26e2640..c084983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc354=['length','smsQueue:','./smsQueue.events','save','emit','removeListener','register'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xc354,0x14b));var _0x4c35=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc354[_0x14add3];return _0x4a174f;};'use strict';var SmsQueueEvents=require(_0x4c35('0x0'));var events=[_0x4c35('0x1'),'remove','update'];function createListener(_0x201896,_0x344c36){return function(_0x202b57){_0x344c36[_0x4c35('0x2')](_0x201896,_0x202b57);};}function removeListener(_0x5a6aa9,_0x30292a){return function(){SmsQueueEvents[_0x4c35('0x3')](_0x5a6aa9,_0x30292a);};}exports[_0x4c35('0x4')]=function(_0x512fc3){for(var _0x2585c2=0x0,_0x53df4e=events[_0x4c35('0x5')];_0x2585c2<_0x53df4e;_0x2585c2++){var _0x5b1d85=events[_0x2585c2];var _0x39db6c=createListener(_0x4c35('0x6')+_0x5b1d85,_0x512fc3);SmsQueueEvents['on'](_0x5b1d85,_0x39db6c);}};
\ No newline at end of file
+var _0x0a90=['length','./smsQueue.events','save','remove','update','removeListener','register'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x0a90,0x166));var _0x00a9=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x0a90[_0x4e676e];return _0x336a3c;};'use strict';var SmsQueueEvents=require(_0x00a9('0x0'));var events=[_0x00a9('0x1'),_0x00a9('0x2'),_0x00a9('0x3')];function createListener(_0x2bbee9,_0x24da12){return function(_0x435c7e){_0x24da12['emit'](_0x2bbee9,_0x435c7e);};}function removeListener(_0xa2c9f0,_0x1a2712){return function(){SmsQueueEvents[_0x00a9('0x4')](_0xa2c9f0,_0x1a2712);};}exports[_0x00a9('0x5')]=function(_0x53049a){for(var _0x5ec1ed=0x0,_0x306eb8=events[_0x00a9('0x6')];_0x5ec1ed<_0x306eb8;_0x5ec1ed++){var _0xbaafe6=events[_0x5ec1ed];var _0x35d6d9=createListener('smsQueue:'+_0xbaafe6,_0x53049a);SmsQueueEvents['on'](_0xbaafe6,_0x35d6d9);}};
\ No newline at end of file
index 5e940bc..eff74cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58f4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x58f4,0x1b2));var _0x458f=function(_0x80dc3f,_0x41558d){_0x80dc3f=_0x80dc3f-0x0;var _0x2f64ab=_0x58f4[_0x80dc3f];return _0x2f64ab;};'use strict';var multer=require('multer');var util=require(_0x458f('0x0'));var path=require(_0x458f('0x1'));var timeout=require(_0x458f('0x2'));var express=require(_0x458f('0x3'));var router=express[_0x458f('0x4')]();var fs_extra=require(_0x458f('0x5'));var auth=require(_0x458f('0x6'));var interaction=require(_0x458f('0x7'));var config=require(_0x458f('0x8'));var controller=require(_0x458f('0x9'));router[_0x458f('0xa')]('/',auth[_0x458f('0xb')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x458f('0xc')]);router[_0x458f('0xa')]('/:id',auth[_0x458f('0xb')](),controller[_0x458f('0xd')]);router[_0x458f('0xe')]('/',auth[_0x458f('0xb')](),controller[_0x458f('0xf')]);router[_0x458f('0x10')](_0x458f('0x11'),auth['isAuthenticated'](),controller[_0x458f('0x12')]);router[_0x458f('0x13')](_0x458f('0x11'),auth[_0x458f('0xb')](),controller[_0x458f('0x14')]);module[_0x458f('0x15')]=router;
\ No newline at end of file
+var _0x895c=['get','isAuthenticated','index','/:id','create','update','delete','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./smsQueueReport.controller'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x895c,0x173));var _0xc895=function(_0x251ab0,_0x46e532){_0x251ab0=_0x251ab0-0x0;var _0x11848c=_0x895c[_0x251ab0];return _0x11848c;};'use strict';var multer=require('multer');var util=require(_0xc895('0x0'));var path=require(_0xc895('0x1'));var timeout=require(_0xc895('0x2'));var express=require(_0xc895('0x3'));var router=express['Router']();var fs_extra=require(_0xc895('0x4'));var auth=require(_0xc895('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc895('0x6'));router[_0xc895('0x7')]('/',auth[_0xc895('0x8')](),controller[_0xc895('0x9')]);router[_0xc895('0x7')]('/describe',auth[_0xc895('0x8')](),controller['describe']);router[_0xc895('0x7')](_0xc895('0xa'),auth[_0xc895('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xc895('0xb')]);router['put'](_0xc895('0xa'),auth[_0xc895('0x8')](),controller[_0xc895('0xc')]);router[_0xc895('0xd')](_0xc895('0xa'),auth[_0xc895('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 25aa90f..0feea68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb30b=['DATE','STRING'];(function(_0x272ec2,_0x1a2735){var _0x2af5eb=function(_0x19ff25){while(--_0x19ff25){_0x272ec2['push'](_0x272ec2['shift']());}};_0x2af5eb(++_0x1a2735);}(_0xb30b,0x181));var _0xbb30=function(_0x1c592e,_0x286a36){_0x1c592e=_0x1c592e-0x0;var _0x256c80=_0xb30b[_0x1c592e];return _0x256c80;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xbb30('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0xbb30('0x0')]},'joinAt':{'type':Sequelize[_0xbb30('0x1')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xbb30('0x1')]},'exitAt':{'type':Sequelize[_0xbb30('0x1')]},'reason':{'type':Sequelize[_0xbb30('0x0')]}};
\ No newline at end of file
+var _0xbb05=['exports','STRING','DATE','moment','sequelize'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xbb05,0x1b6));var _0x5bb0=function(_0x43c1aa,_0x36bdea){_0x43c1aa=_0x43c1aa-0x0;var _0x6368e4=_0xbb05[_0x43c1aa];return _0x6368e4;};'use strict';var moment=require(_0x5bb0('0x0'));var Sequelize=require(_0x5bb0('0x1'));module[_0x5bb0('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x5bb0('0x3')]},'joinAt':{'type':Sequelize[_0x5bb0('0x4')]},'leaveAt':{'type':Sequelize[_0x5bb0('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x5bb0('0x3')]}};
\ No newline at end of file
index 538930d..0a73e05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9e4=['name','send','map','SmsQueueReport','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit','limit','filters','where','merge','VIRTUAL','filter','options','include','rows','params','keys','includeAll','find','create','body','catch','describe','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack'];(function(_0x57cd47,_0x519a1c){var _0x149651=function(_0x433212){while(--_0x433212){_0x57cd47['push'](_0x57cd47['shift']());}};_0x149651(++_0x519a1c);}(_0xd9e4,0x18c));var _0x4d9e=function(_0x829616,_0x5d9318){_0x829616=_0x829616-0x0;var _0x35857a=_0xd9e4[_0x829616];return _0x35857a;};'use strict';var emlformat=require(_0x4d9e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4d9e('0x1'));var moment=require(_0x4d9e('0x2'));var BPromise=require(_0x4d9e('0x3'));var Mustache=require(_0x4d9e('0x4'));var util=require(_0x4d9e('0x5'));var path=require(_0x4d9e('0x6'));var sox=require(_0x4d9e('0x7'));var csv=require(_0x4d9e('0x8'));var ejs=require(_0x4d9e('0x9'));var fs=require('fs');var fs_extra=require(_0x4d9e('0xa'));var _=require(_0x4d9e('0xb'));var squel=require(_0x4d9e('0xc'));var crypto=require(_0x4d9e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4d9e('0xe'));var toCsv=require(_0x4d9e('0x8'));var querystring=require(_0x4d9e('0xf'));var Papa=require('papaparse');var Redis=require(_0x4d9e('0x10'));var authService=require(_0x4d9e('0x11'));var qs=require(_0x4d9e('0x12'));var as=require(_0x4d9e('0x13'));var hardwareService=require(_0x4d9e('0x14'));var logger=require('../../config/logger')(_0x4d9e('0x15'));var utils=require(_0x4d9e('0x16'));var config=require(_0x4d9e('0x17'));var licenseUtil=require(_0x4d9e('0x18'));var db=require(_0x4d9e('0x19'))['db'];function respondWithStatusCode(_0x3cfae7,_0x4ec8fc){_0x4ec8fc=_0x4ec8fc||0xcc;return function(_0x29e665){if(_0x29e665){return _0x3cfae7[_0x4d9e('0x1a')](_0x4ec8fc);}return _0x3cfae7[_0x4d9e('0x1b')](_0x4ec8fc)[_0x4d9e('0x1c')]();};}function respondWithResult(_0x352ecc,_0x2134b6){_0x2134b6=_0x2134b6||0xc8;return function(_0x5b8421){if(_0x5b8421){return _0x352ecc[_0x4d9e('0x1b')](_0x2134b6)[_0x4d9e('0x1d')](_0x5b8421);}};}function respondWithFilteredResult(_0x467b2f,_0x216ebc){return function(_0x56f712){if(_0x56f712){var _0x228a3f=typeof _0x216ebc['offset']===_0x4d9e('0x1e')&&typeof _0x216ebc['limit']==='undefined';var _0x3476a6=_0x56f712[_0x4d9e('0x1f')];var _0x248ae8=_0x228a3f?0x0:_0x216ebc[_0x4d9e('0x20')];var _0x28d724=_0x228a3f?_0x56f712[_0x4d9e('0x1f')]:_0x216ebc[_0x4d9e('0x20')]+_0x216ebc['limit'];var _0x20b29c;if(_0x28d724>=_0x3476a6){_0x28d724=_0x3476a6;_0x20b29c=0xc8;}else{_0x20b29c=0xce;}_0x467b2f[_0x4d9e('0x1b')](_0x20b29c);return _0x467b2f[_0x4d9e('0x21')](_0x4d9e('0x22'),_0x248ae8+'-'+_0x28d724+'/'+_0x3476a6)[_0x4d9e('0x1d')](_0x56f712);}return null;};}function patchUpdates(_0xf493b2){return function(_0x5633e0){try{jsonpatch['apply'](_0x5633e0,_0xf493b2,!![]);}catch(_0x1b1a55){return BPromise[_0x4d9e('0x23')](_0x1b1a55);}return _0x5633e0[_0x4d9e('0x24')]();};}function saveUpdates(_0x13e18f,_0x17cee6){return function(_0x865cc5){if(_0x865cc5){return _0x865cc5[_0x4d9e('0x25')](_0x13e18f)[_0x4d9e('0x26')](function(_0x28e047){return _0x28e047;});}return null;};}function removeEntity(_0x3e1a1a,_0x3b6c37){return function(_0x5c0d9c){if(_0x5c0d9c){return _0x5c0d9c[_0x4d9e('0x27')]()['then'](function(){_0x3e1a1a[_0x4d9e('0x1b')](0xcc)[_0x4d9e('0x1c')]();});}};}function handleEntityNotFound(_0x4774d6,_0x4463c5){return function(_0x2d7ae7){if(!_0x2d7ae7){_0x4774d6[_0x4d9e('0x1a')](0x194);}return _0x2d7ae7;};}function handleError(_0x46ee6c,_0x1163c1){_0x1163c1=_0x1163c1||0x1f4;return function(_0x89a725){logger[_0x4d9e('0x28')](_0x89a725[_0x4d9e('0x29')]);if(_0x89a725[_0x4d9e('0x2a')]){delete _0x89a725[_0x4d9e('0x2a')];}_0x46ee6c[_0x4d9e('0x1b')](_0x1163c1)[_0x4d9e('0x2b')](_0x89a725);};}exports['index']=function(_0xdb2335,_0x3cf970){var _0x238027={},_0x187ef7={},_0x26d0fe={'count':0x0,'rows':[]};var _0x5e2e74=_[_0x4d9e('0x2c')](db[_0x4d9e('0x2d')][_0x4d9e('0x2e')],function(_0x49ccee){return{'name':_0x49ccee['fieldName'],'type':_0x49ccee[_0x4d9e('0x2f')][_0x4d9e('0x30')]};});_0x187ef7[_0x4d9e('0x31')]=_[_0x4d9e('0x2c')](_0x5e2e74,_0x4d9e('0x2a'));_0x187ef7[_0x4d9e('0x32')]=_['keys'](_0xdb2335['query']);_0x187ef7['filters']=_[_0x4d9e('0x33')](_0x187ef7[_0x4d9e('0x31')],_0x187ef7[_0x4d9e('0x32')]);_0x238027[_0x4d9e('0x34')]=_[_0x4d9e('0x33')](_0x187ef7[_0x4d9e('0x31')],qs[_0x4d9e('0x35')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x35')]));_0x238027['attributes']=_0x238027[_0x4d9e('0x34')][_0x4d9e('0x36')]?_0x238027[_0x4d9e('0x34')]:_0x187ef7[_0x4d9e('0x31')];if(!_0xdb2335[_0x4d9e('0x32')]['hasOwnProperty'](_0x4d9e('0x37'))){_0x238027[_0x4d9e('0x38')]=qs[_0x4d9e('0x38')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x38')]);_0x238027[_0x4d9e('0x20')]=qs[_0x4d9e('0x20')](_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x20')]);}_0x238027['order']=qs['sort'](_0xdb2335['query']['sort']);_0x238027['where']=qs['filters'](_['pick'](_0xdb2335['query'],_0x187ef7[_0x4d9e('0x39')]),_0x5e2e74);if(_0xdb2335['query']['filter']){_0x238027[_0x4d9e('0x3a')]=_[_0x4d9e('0x3b')](_0x238027[_0x4d9e('0x3a')],{'$or':_['map'](_0x5e2e74,function(_0x572866){if(_0x572866['type']!==_0x4d9e('0x3c')){var _0x476ac7={};_0x476ac7[_0x572866[_0x4d9e('0x2a')]]={'$like':'%'+_0xdb2335[_0x4d9e('0x32')][_0x4d9e('0x3d')]+'%'};return _0x476ac7;}})});}_0x238027=_[_0x4d9e('0x3b')]({},_0x238027,_0xdb2335[_0x4d9e('0x3e')]);var _0x232d5d={'where':_0x238027['where']};return db[_0x4d9e('0x2d')]['count'](_0x232d5d)[_0x4d9e('0x26')](function(_0x49a88f){_0x26d0fe[_0x4d9e('0x1f')]=_0x49a88f;if(_0xdb2335[_0x4d9e('0x32')]['includeAll']){_0x238027[_0x4d9e('0x3f')]=[{'all':!![]}];}return db[_0x4d9e('0x2d')]['findAll'](_0x238027);})[_0x4d9e('0x26')](function(_0x298d4a){_0x26d0fe[_0x4d9e('0x40')]=_0x298d4a;return _0x26d0fe;})[_0x4d9e('0x26')](respondWithFilteredResult(_0x3cf970,_0x238027))['catch'](handleError(_0x3cf970,null));};exports['show']=function(_0x95e735,_0x505d02){var _0xe706e9={'raw':!![],'where':{'id':_0x95e735[_0x4d9e('0x41')]['id']}},_0x15967d={};_0x15967d[_0x4d9e('0x31')]=_[_0x4d9e('0x42')](db[_0x4d9e('0x2d')]['rawAttributes']);_0x15967d[_0x4d9e('0x32')]=_[_0x4d9e('0x42')](_0x95e735[_0x4d9e('0x32')]);_0x15967d['filters']=_[_0x4d9e('0x33')](_0x15967d[_0x4d9e('0x31')],_0x15967d[_0x4d9e('0x32')]);_0xe706e9['attributes']=_[_0x4d9e('0x33')](_0x15967d[_0x4d9e('0x31')],qs[_0x4d9e('0x35')](_0x95e735['query'][_0x4d9e('0x35')]));_0xe706e9[_0x4d9e('0x34')]=_0xe706e9[_0x4d9e('0x34')][_0x4d9e('0x36')]?_0xe706e9['attributes']:_0x15967d[_0x4d9e('0x31')];if(_0x95e735[_0x4d9e('0x32')][_0x4d9e('0x43')]){_0xe706e9['include']=[{'all':!![]}];}_0xe706e9=_[_0x4d9e('0x3b')]({},_0xe706e9,_0x95e735['options']);return db['SmsQueueReport'][_0x4d9e('0x44')](_0xe706e9)[_0x4d9e('0x26')](handleEntityNotFound(_0x505d02,null))[_0x4d9e('0x26')](respondWithResult(_0x505d02,null))['catch'](handleError(_0x505d02,null));};exports[_0x4d9e('0x45')]=function(_0x77ed6,_0x264faf){return db['SmsQueueReport'][_0x4d9e('0x45')](_0x77ed6[_0x4d9e('0x46')],{})[_0x4d9e('0x26')](respondWithResult(_0x264faf,0xc9))[_0x4d9e('0x47')](handleError(_0x264faf,null));};exports[_0x4d9e('0x25')]=function(_0xd2a9e3,_0x188136){if(_0xd2a9e3['body']['id']){delete _0xd2a9e3['body']['id'];}return db[_0x4d9e('0x2d')]['find']({'where':{'id':_0xd2a9e3[_0x4d9e('0x41')]['id']}})[_0x4d9e('0x26')](handleEntityNotFound(_0x188136,null))[_0x4d9e('0x26')](saveUpdates(_0xd2a9e3['body'],null))['then'](respondWithResult(_0x188136,null))[_0x4d9e('0x47')](handleError(_0x188136,null));};exports[_0x4d9e('0x27')]=function(_0x58f8ae,_0x2d2e96){return db[_0x4d9e('0x2d')]['find']({'where':{'id':_0x58f8ae[_0x4d9e('0x41')]['id']}})[_0x4d9e('0x26')](handleEntityNotFound(_0x2d2e96,null))[_0x4d9e('0x26')](removeEntity(_0x2d2e96,null))['catch'](handleError(_0x2d2e96,null));};exports['describe']=function(_0x50af74,_0x44c28a){return db[_0x4d9e('0x2d')][_0x4d9e('0x48')]()[_0x4d9e('0x26')](respondWithResult(_0x44c28a,null))[_0x4d9e('0x47')](handleError(_0x44c28a,null));};
\ No newline at end of file
+var _0xf25f=['length','hasOwnProperty','order','sort','where','filter','merge','map','VIRTUAL','SmsQueueReport','include','findAll','rows','catch','show','params','keys','intersection','includeAll','options','find','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields'];(function(_0x58008c,_0x165ac3){var _0x267dd7=function(_0x42946d){while(--_0x42946d){_0x58008c['push'](_0x58008c['shift']());}};_0x267dd7(++_0x165ac3);}(_0xf25f,0x189));var _0xff25=function(_0x1d994a,_0x47c366){_0x1d994a=_0x1d994a-0x0;var _0x273574=_0xf25f[_0x1d994a];return _0x273574;};'use strict';var emlformat=require(_0xff25('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff25('0x1'));var jsonpatch=require(_0xff25('0x2'));var rp=require(_0xff25('0x3'));var moment=require('moment');var BPromise=require(_0xff25('0x4'));var Mustache=require(_0xff25('0x5'));var util=require(_0xff25('0x6'));var path=require(_0xff25('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xff25('0x8'));var fs=require('fs');var fs_extra=require(_0xff25('0x9'));var _=require(_0xff25('0xa'));var squel=require('squel');var crypto=require(_0xff25('0xb'));var jsforce=require(_0xff25('0xc'));var deskjs=require(_0xff25('0xd'));var toCsv=require(_0xff25('0xe'));var querystring=require('querystring');var Papa=require(_0xff25('0xf'));var Redis=require('ioredis');var authService=require(_0xff25('0x10'));var qs=require(_0xff25('0x11'));var as=require(_0xff25('0x12'));var hardwareService=require(_0xff25('0x13'));var logger=require(_0xff25('0x14'))(_0xff25('0x15'));var utils=require(_0xff25('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xff25('0x17'));var db=require(_0xff25('0x18'))['db'];function respondWithStatusCode(_0x267538,_0x3c1c4e){_0x3c1c4e=_0x3c1c4e||0xcc;return function(_0x54465d){if(_0x54465d){return _0x267538[_0xff25('0x19')](_0x3c1c4e);}return _0x267538[_0xff25('0x1a')](_0x3c1c4e)[_0xff25('0x1b')]();};}function respondWithResult(_0x55d774,_0x2a8a42){_0x2a8a42=_0x2a8a42||0xc8;return function(_0x2f9bb3){if(_0x2f9bb3){return _0x55d774[_0xff25('0x1a')](_0x2a8a42)[_0xff25('0x1c')](_0x2f9bb3);}};}function respondWithFilteredResult(_0x281feb,_0x489882){return function(_0x28e848){if(_0x28e848){var _0x2128c3=typeof _0x489882[_0xff25('0x1d')]===_0xff25('0x1e')&&typeof _0x489882[_0xff25('0x1f')]===_0xff25('0x1e');var _0x4825b1=_0x28e848['count'];var _0x17f171=_0x2128c3?0x0:_0x489882[_0xff25('0x1d')];var _0x547ea0=_0x2128c3?_0x28e848[_0xff25('0x20')]:_0x489882[_0xff25('0x1d')]+_0x489882[_0xff25('0x1f')];var _0x58d249;if(_0x547ea0>=_0x4825b1){_0x547ea0=_0x4825b1;_0x58d249=0xc8;}else{_0x58d249=0xce;}_0x281feb[_0xff25('0x1a')](_0x58d249);return _0x281feb[_0xff25('0x21')]('Content-Range',_0x17f171+'-'+_0x547ea0+'/'+_0x4825b1)['json'](_0x28e848);}return null;};}function patchUpdates(_0x575f37){return function(_0x521d4c){try{jsonpatch['apply'](_0x521d4c,_0x575f37,!![]);}catch(_0x2141a7){return BPromise['reject'](_0x2141a7);}return _0x521d4c[_0xff25('0x22')]();};}function saveUpdates(_0x3054b3,_0x1087a3){return function(_0x1a2269){if(_0x1a2269){return _0x1a2269['update'](_0x3054b3)['then'](function(_0x4f2e59){return _0x4f2e59;});}return null;};}function removeEntity(_0x7f30db,_0x119457){return function(_0x6aacae){if(_0x6aacae){return _0x6aacae[_0xff25('0x23')]()[_0xff25('0x24')](function(){_0x7f30db[_0xff25('0x1a')](0xcc)[_0xff25('0x1b')]();});}};}function handleEntityNotFound(_0x3a89c6,_0x51a41f){return function(_0x1597b2){if(!_0x1597b2){_0x3a89c6[_0xff25('0x19')](0x194);}return _0x1597b2;};}function handleError(_0x18c2d0,_0x16ce34){_0x16ce34=_0x16ce34||0x1f4;return function(_0x439ac7){logger[_0xff25('0x25')](_0x439ac7[_0xff25('0x26')]);if(_0x439ac7[_0xff25('0x27')]){delete _0x439ac7[_0xff25('0x27')];}_0x18c2d0[_0xff25('0x1a')](_0x16ce34)[_0xff25('0x28')](_0x439ac7);};}exports[_0xff25('0x29')]=function(_0x470c1b,_0x13f81c){var _0x5505e7={},_0xb2c43b={},_0x337ae2={'count':0x0,'rows':[]};var _0xfda148=_['map'](db['SmsQueueReport'][_0xff25('0x2a')],function(_0x420a2a){return{'name':_0x420a2a[_0xff25('0x2b')],'type':_0x420a2a[_0xff25('0x2c')][_0xff25('0x2d')]};});_0xb2c43b[_0xff25('0x2e')]=_['map'](_0xfda148,'name');_0xb2c43b[_0xff25('0x2f')]=_['keys'](_0x470c1b[_0xff25('0x2f')]);_0xb2c43b[_0xff25('0x30')]=_['intersection'](_0xb2c43b[_0xff25('0x2e')],_0xb2c43b['query']);_0x5505e7[_0xff25('0x31')]=_['intersection'](_0xb2c43b[_0xff25('0x2e')],qs[_0xff25('0x32')](_0x470c1b[_0xff25('0x2f')][_0xff25('0x32')]));_0x5505e7['attributes']=_0x5505e7[_0xff25('0x31')][_0xff25('0x33')]?_0x5505e7[_0xff25('0x31')]:_0xb2c43b['model'];if(!_0x470c1b[_0xff25('0x2f')][_0xff25('0x34')]('nolimit')){_0x5505e7[_0xff25('0x1f')]=qs[_0xff25('0x1f')](_0x470c1b[_0xff25('0x2f')][_0xff25('0x1f')]);_0x5505e7['offset']=qs['offset'](_0x470c1b[_0xff25('0x2f')][_0xff25('0x1d')]);}_0x5505e7[_0xff25('0x35')]=qs[_0xff25('0x36')](_0x470c1b[_0xff25('0x2f')]['sort']);_0x5505e7[_0xff25('0x37')]=qs['filters'](_['pick'](_0x470c1b[_0xff25('0x2f')],_0xb2c43b[_0xff25('0x30')]),_0xfda148);if(_0x470c1b[_0xff25('0x2f')][_0xff25('0x38')]){_0x5505e7['where']=_[_0xff25('0x39')](_0x5505e7[_0xff25('0x37')],{'$or':_[_0xff25('0x3a')](_0xfda148,function(_0x264d8b){if(_0x264d8b[_0xff25('0x2c')]!==_0xff25('0x3b')){var _0x2dc828={};_0x2dc828[_0x264d8b[_0xff25('0x27')]]={'$like':'%'+_0x470c1b[_0xff25('0x2f')][_0xff25('0x38')]+'%'};return _0x2dc828;}})});}_0x5505e7=_['merge']({},_0x5505e7,_0x470c1b['options']);var _0x35af26={'where':_0x5505e7['where']};return db[_0xff25('0x3c')][_0xff25('0x20')](_0x35af26)[_0xff25('0x24')](function(_0x3e12a7){_0x337ae2[_0xff25('0x20')]=_0x3e12a7;if(_0x470c1b['query']['includeAll']){_0x5505e7[_0xff25('0x3d')]=[{'all':!![]}];}return db[_0xff25('0x3c')][_0xff25('0x3e')](_0x5505e7);})['then'](function(_0x4c2da8){_0x337ae2[_0xff25('0x3f')]=_0x4c2da8;return _0x337ae2;})[_0xff25('0x24')](respondWithFilteredResult(_0x13f81c,_0x5505e7))[_0xff25('0x40')](handleError(_0x13f81c,null));};exports[_0xff25('0x41')]=function(_0x765349,_0x21b899){var _0xc87c11={'raw':!![],'where':{'id':_0x765349[_0xff25('0x42')]['id']}},_0x16bd01={};_0x16bd01['model']=_['keys'](db['SmsQueueReport'][_0xff25('0x2a')]);_0x16bd01[_0xff25('0x2f')]=_[_0xff25('0x43')](_0x765349['query']);_0x16bd01[_0xff25('0x30')]=_['intersection'](_0x16bd01['model'],_0x16bd01['query']);_0xc87c11[_0xff25('0x31')]=_[_0xff25('0x44')](_0x16bd01[_0xff25('0x2e')],qs['fields'](_0x765349['query']['fields']));_0xc87c11['attributes']=_0xc87c11[_0xff25('0x31')][_0xff25('0x33')]?_0xc87c11[_0xff25('0x31')]:_0x16bd01['model'];if(_0x765349[_0xff25('0x2f')][_0xff25('0x45')]){_0xc87c11['include']=[{'all':!![]}];}_0xc87c11=_['merge']({},_0xc87c11,_0x765349[_0xff25('0x46')]);return db['SmsQueueReport'][_0xff25('0x47')](_0xc87c11)[_0xff25('0x24')](handleEntityNotFound(_0x21b899,null))[_0xff25('0x24')](respondWithResult(_0x21b899,null))[_0xff25('0x40')](handleError(_0x21b899,null));};exports['create']=function(_0x7eba6e,_0x270096){return db[_0xff25('0x3c')]['create'](_0x7eba6e[_0xff25('0x48')],{})[_0xff25('0x24')](respondWithResult(_0x270096,0xc9))[_0xff25('0x40')](handleError(_0x270096,null));};exports['update']=function(_0x352c7c,_0x1a85c3){if(_0x352c7c[_0xff25('0x48')]['id']){delete _0x352c7c[_0xff25('0x48')]['id'];}return db[_0xff25('0x3c')][_0xff25('0x47')]({'where':{'id':_0x352c7c['params']['id']}})[_0xff25('0x24')](handleEntityNotFound(_0x1a85c3,null))[_0xff25('0x24')](saveUpdates(_0x352c7c['body'],null))[_0xff25('0x24')](respondWithResult(_0x1a85c3,null))[_0xff25('0x40')](handleError(_0x1a85c3,null));};exports['destroy']=function(_0x5589df,_0x370768){return db[_0xff25('0x3c')][_0xff25('0x47')]({'where':{'id':_0x5589df['params']['id']}})[_0xff25('0x24')](handleEntityNotFound(_0x370768,null))[_0xff25('0x24')](removeEntity(_0x370768,null))['catch'](handleError(_0x370768,null));};exports[_0xff25('0x49')]=function(_0x1a06ba,_0x3d9432){return db[_0xff25('0x3c')]['describe']()[_0xff25('0x24')](respondWithResult(_0x3d9432,null))[_0xff25('0x40')](handleError(_0x3d9432,null));};
\ No newline at end of file
index 7b90221..5686f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3e2636,_0x48c6c7){var _0x34c957=function(_0x220682){while(--_0x220682){_0x3e2636['push'](_0x3e2636['shift']());}};_0x34c957(++_0x48c6c7);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0xb7e7[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xe4e07a,_0x586b12){var _0x4b1743=function(_0x2b486d){while(--_0x2b486d){_0xe4e07a['push'](_0xe4e07a['shift']());}};_0x4b1743(++_0x586b12);}(_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 9a542a0..a5a8494 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfbd=['SmsQueueReport','create','options','stringify','catch','UpdateSmsQueueReport','update','body','raw','where','attributes','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','SmsQueueReport,\x20%s,\x20%s','message','info','result','CreateSmsQueueReport'];(function(_0x1d6958,_0x2b071c){var _0x59e071=function(_0x2cdbac){while(--_0x2cdbac){_0x1d6958['push'](_0x1d6958['shift']());}};_0x59e071(++_0x2b071c);}(_0xbfbd,0x16b));var _0xdbfb=function(_0x38edc7,_0x5d0576){_0x38edc7=_0x38edc7-0x0;var _0x3eb41e=_0xbfbd[_0x38edc7];return _0x3eb41e;};'use strict';var _=require(_0xdbfb('0x0'));var util=require('util');var moment=require(_0xdbfb('0x1'));var BPromise=require('bluebird');var rs=require(_0xdbfb('0x2'));var fs=require('fs');var Redis=require(_0xdbfb('0x3'));var db=require(_0xdbfb('0x4'))['db'];var utils=require(_0xdbfb('0x5'));var logger=require('../../config/logger')(_0xdbfb('0x6'));var config=require(_0xdbfb('0x7'));var jayson=require(_0xdbfb('0x8'));var client=jayson[_0xdbfb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22d93f,_0x3a1272,_0x59daea){return new BPromise(function(_0x405400,_0x48c79b){return client['request'](_0x22d93f,_0x59daea)[_0xdbfb('0xa')](function(_0x5d4bbc){logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x3a1272,_0xdbfb('0xb'));logger[_0xdbfb('0xc')](_0xdbfb('0xd'),_0x3a1272,_0xdbfb('0xb'),JSON['stringify'](_0x5d4bbc));if(_0x5d4bbc[_0xdbfb('0xe')]){if(_0x5d4bbc['error'][_0xdbfb('0xf')]===0x1f4){logger[_0xdbfb('0xe')](_0xdbfb('0x10'),_0x3a1272,_0x5d4bbc[_0xdbfb('0xe')]['message']);return _0x48c79b(_0x5d4bbc[_0xdbfb('0xe')][_0xdbfb('0x11')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3a1272,_0x5d4bbc[_0xdbfb('0xe')]['message']);return _0x405400(_0x5d4bbc[_0xdbfb('0xe')]['message']);}else{logger[_0xdbfb('0x12')](_0xdbfb('0x10'),_0x3a1272,_0xdbfb('0xb'));_0x405400(_0x5d4bbc[_0xdbfb('0x13')]['message']);}})['catch'](function(_0x132630){logger[_0xdbfb('0xe')](_0xdbfb('0x10'),_0x3a1272,_0x132630);_0x48c79b(_0x132630);});});}exports[_0xdbfb('0x14')]=function(_0x567dbd){var _0x594d74=this;return new Promise(function(_0xd1e0cc,_0x678eb){return db[_0xdbfb('0x15')][_0xdbfb('0x16')](_0x567dbd['body'],{'raw':_0x567dbd['options']?_0x567dbd[_0xdbfb('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xdbfb('0xa')](function(_0x31ead1){logger['info'](_0xdbfb('0x14'),_0x567dbd);logger[_0xdbfb('0xc')](_0xdbfb('0x14'),_0x567dbd,JSON[_0xdbfb('0x18')](_0x31ead1));_0xd1e0cc(_0x31ead1);})[_0xdbfb('0x19')](function(_0x2ea9e5){logger[_0xdbfb('0xe')]('CreateSmsQueueReport',_0x2ea9e5[_0xdbfb('0x11')],_0x567dbd);_0x678eb(_0x594d74['error'](0x1f4,_0x2ea9e5[_0xdbfb('0x11')]));});});};exports[_0xdbfb('0x1a')]=function(_0x22dbd7){var _0x5cf603=this;return new Promise(function(_0x41a15d,_0x2ce06e){return db[_0xdbfb('0x15')][_0xdbfb('0x1b')](_0x22dbd7[_0xdbfb('0x1c')],{'raw':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7['options'][_0xdbfb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22dbd7['options']?_0x22dbd7[_0xdbfb('0x17')][_0xdbfb('0x1e')]||null:null,'attributes':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7['options'][_0xdbfb('0x1f')]||null:null,'limit':_0x22dbd7[_0xdbfb('0x17')]?_0x22dbd7[_0xdbfb('0x17')]['limit']||null:null})[_0xdbfb('0xa')](function(_0x529285){logger['info'](_0xdbfb('0x1a'),_0x22dbd7);logger[_0xdbfb('0xc')](_0xdbfb('0x1a'),_0x22dbd7,JSON[_0xdbfb('0x18')](_0x529285));_0x41a15d(_0x529285);})['catch'](function(_0x53fada){logger[_0xdbfb('0xe')](_0xdbfb('0x1a'),_0x53fada[_0xdbfb('0x11')],_0x22dbd7);_0x2ce06e(_0x5cf603[_0xdbfb('0xe')](0x1f4,_0x53fada[_0xdbfb('0x11')]));});});};
\ No newline at end of file
+var _0xa5a3=['debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','options','UpdateSmsQueueReport','update','raw','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x193461,_0x42ce71){var _0x4c237c=function(_0x544492){while(--_0x544492){_0x193461['push'](_0x193461['shift']());}};_0x4c237c(++_0x42ce71);}(_0xa5a3,0x72));var _0x3a5a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa5a3[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x3a5a('0x0'));var util=require(_0x3a5a('0x1'));var moment=require(_0x3a5a('0x2'));var BPromise=require('bluebird');var rs=require(_0x3a5a('0x3'));var fs=require('fs');var Redis=require(_0x3a5a('0x4'));var db=require(_0x3a5a('0x5'))['db'];var utils=require(_0x3a5a('0x6'));var logger=require(_0x3a5a('0x7'))(_0x3a5a('0x8'));var config=require(_0x3a5a('0x9'));var jayson=require(_0x3a5a('0xa'));var client=jayson[_0x3a5a('0xb')][_0x3a5a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5c062e,_0x3531dc,_0x2fead1){return new BPromise(function(_0xc0e578,_0x30fed5){return client[_0x3a5a('0xd')](_0x5c062e,_0x2fead1)[_0x3a5a('0xe')](function(_0x475263){logger[_0x3a5a('0xf')](_0x3a5a('0x10'),_0x3531dc,_0x3a5a('0x11'));logger[_0x3a5a('0x12')](_0x3a5a('0x13'),_0x3531dc,_0x3a5a('0x11'),JSON[_0x3a5a('0x14')](_0x475263));if(_0x475263[_0x3a5a('0x15')]){if(_0x475263['error'][_0x3a5a('0x16')]===0x1f4){logger['error'](_0x3a5a('0x10'),_0x3531dc,_0x475263['error'][_0x3a5a('0x17')]);return _0x30fed5(_0x475263[_0x3a5a('0x15')][_0x3a5a('0x17')]);}logger[_0x3a5a('0x15')](_0x3a5a('0x10'),_0x3531dc,_0x475263[_0x3a5a('0x15')][_0x3a5a('0x17')]);return _0xc0e578(_0x475263[_0x3a5a('0x15')]['message']);}else{logger[_0x3a5a('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x3531dc,'request\x20sent');_0xc0e578(_0x475263[_0x3a5a('0x18')]['message']);}})[_0x3a5a('0x19')](function(_0x25d1b1){logger['error'](_0x3a5a('0x10'),_0x3531dc,_0x25d1b1);_0x30fed5(_0x25d1b1);});});}exports[_0x3a5a('0x1a')]=function(_0x2ea992){var _0x198ea8=this;return new Promise(function(_0x224f89,_0x473ddc){return db[_0x3a5a('0x1b')]['create'](_0x2ea992['body'],{'raw':_0x2ea992['options']?_0x2ea992[_0x3a5a('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x3a5a('0xe')](function(_0x36cac1){logger[_0x3a5a('0xf')](_0x3a5a('0x1a'),_0x2ea992);logger[_0x3a5a('0x12')]('CreateSmsQueueReport',_0x2ea992,JSON[_0x3a5a('0x14')](_0x36cac1));_0x224f89(_0x36cac1);})[_0x3a5a('0x19')](function(_0x576b49){logger['error']('CreateSmsQueueReport',_0x576b49['message'],_0x2ea992);_0x473ddc(_0x198ea8['error'](0x1f4,_0x576b49['message']));});});};exports[_0x3a5a('0x1d')]=function(_0x39d801){var _0x5ab402=this;return new Promise(function(_0x2dcc66,_0x157fe0){return db[_0x3a5a('0x1b')][_0x3a5a('0x1e')](_0x39d801['body'],{'raw':_0x39d801[_0x3a5a('0x1c')]?_0x39d801[_0x3a5a('0x1c')][_0x3a5a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39d801['options']?_0x39d801[_0x3a5a('0x1c')]['where']||null:null,'attributes':_0x39d801[_0x3a5a('0x1c')]?_0x39d801[_0x3a5a('0x1c')]['attributes']||null:null,'limit':_0x39d801['options']?_0x39d801['options'][_0x3a5a('0x20')]||null:null})[_0x3a5a('0xe')](function(_0x29331d){logger['info'](_0x3a5a('0x1d'),_0x39d801);logger[_0x3a5a('0x12')](_0x3a5a('0x1d'),_0x39d801,JSON[_0x3a5a('0x14')](_0x29331d));_0x2dcc66(_0x29331d);})[_0x3a5a('0x19')](function(_0x59771e){logger[_0x3a5a('0x15')](_0x3a5a('0x1d'),_0x59771e[_0x3a5a('0x17')],_0x39d801);_0x157fe0(_0x5ab402['error'](0x1f4,_0x59771e[_0x3a5a('0x17')]));});});};
\ No newline at end of file
index dcc603b..02b0978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsTransferReport.controller','get','/describe','describe','isAuthenticated','post','create','update','delete','/:id','destroy','multer'];(function(_0x1efb37,_0x36569f){var _0x154cb0=function(_0x575ea4){while(--_0x575ea4){_0x1efb37['push'](_0x1efb37['shift']());}};_0x154cb0(++_0x36569f);}(_0x84ab,0x12f));var _0xb84a=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x84ab[_0x585d81];return _0x1aca0d;};'use strict';var multer=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var path=require(_0xb84a('0x2'));var timeout=require(_0xb84a('0x3'));var express=require(_0xb84a('0x4'));var router=express['Router']();var fs_extra=require(_0xb84a('0x5'));var auth=require(_0xb84a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb84a('0x7'));var controller=require(_0xb84a('0x8'));router[_0xb84a('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb84a('0xa'),auth['isAuthenticated'](),controller[_0xb84a('0xb')]);router[_0xb84a('0x9')]('/:id',auth[_0xb84a('0xc')](),controller['show']);router[_0xb84a('0xd')]('/',auth[_0xb84a('0xc')](),controller[_0xb84a('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xb84a('0xf')]);router[_0xb84a('0x10')](_0xb84a('0x11'),auth[_0xb84a('0xc')](),controller[_0xb84a('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x038b=['update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','get','/describe','isAuthenticated','/:id','create'];(function(_0x3446af,_0x3b2f92){var _0x252b14=function(_0x1caaca){while(--_0x1caaca){_0x3446af['push'](_0x3446af['shift']());}};_0x252b14(++_0x3b2f92);}(_0x038b,0x114));var _0xb038=function(_0x456dc2,_0x21e0aa){_0x456dc2=_0x456dc2-0x0;var _0x3dd4bf=_0x038b[_0x456dc2];return _0x3dd4bf;};'use strict';var multer=require('multer');var util=require(_0xb038('0x0'));var path=require(_0xb038('0x1'));var timeout=require(_0xb038('0x2'));var express=require('express');var router=express[_0xb038('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb038('0x4'));var interaction=require(_0xb038('0x5'));var config=require('../../config/environment');var controller=require(_0xb038('0x6'));router[_0xb038('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb038('0x7')](_0xb038('0x8'),auth[_0xb038('0x9')](),controller['describe']);router['get'](_0xb038('0xa'),auth[_0xb038('0x9')](),controller['show']);router['post']('/',auth[_0xb038('0x9')](),controller[_0xb038('0xb')]);router['put'](_0xb038('0xa'),auth[_0xb038('0x9')](),controller[_0xb038('0xc')]);router[_0xb038('0xd')](_0xb038('0xa'),auth[_0xb038('0x9')](),controller[_0xb038('0xe')]);module[_0xb038('0xf')]=router;
\ No newline at end of file
index c865896..e57b161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x5ccc7d,_0xb5643b){var _0xa9c8ff=function(_0x30fd86){while(--_0x30fd86){_0x5ccc7d['push'](_0x5ccc7d['shift']());}};_0xa9c8ff(++_0xb5643b);}(_0xedd9,0xfc));var _0x9edd=function(_0x104072,_0x3f331e){_0x104072=_0x104072-0x0;var _0x2a7893=_0xedd9[_0x104072];return _0x2a7893;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x1477c1,_0x3cf2dc){var _0x34a37b=function(_0x1da206){while(--_0x1da206){_0x1477c1['push'](_0x1477c1['shift']());}};_0x34a37b(++_0x3cf2dc);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3d4ef1,_0x5a957c){_0x3d4ef1=_0x3d4ef1-0x0;var _0x409423=_0xcb91[_0x3d4ef1];return _0x409423;};'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 0ae2341..3216bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed2=['sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x7ed2,0xcb));var _0x27ed=function(_0x2cc04d,_0xa144f){_0x2cc04d=_0x2cc04d-0x0;var _0x37907c=_0x7ed2[_0x2cc04d];return _0x37907c;};'use strict';var emlformat=require(_0x27ed('0x0'));var rimraf=require(_0x27ed('0x1'));var zipdir=require(_0x27ed('0x2'));var jsonpatch=require(_0x27ed('0x3'));var rp=require(_0x27ed('0x4'));var moment=require(_0x27ed('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x27ed('0x6'));var util=require(_0x27ed('0x7'));var path=require(_0x27ed('0x8'));var sox=require(_0x27ed('0x9'));var csv=require(_0x27ed('0xa'));var ejs=require(_0x27ed('0xb'));var fs=require('fs');var fs_extra=require(_0x27ed('0xc'));var _=require(_0x27ed('0xd'));var squel=require(_0x27ed('0xe'));var crypto=require(_0x27ed('0xf'));var jsforce=require(_0x27ed('0x10'));var deskjs=require(_0x27ed('0x11'));var toCsv=require(_0x27ed('0xa'));var querystring=require(_0x27ed('0x12'));var Papa=require(_0x27ed('0x13'));var Redis=require(_0x27ed('0x14'));var authService=require(_0x27ed('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x27ed('0x16'));var logger=require(_0x27ed('0x17'))(_0x27ed('0x18'));var utils=require(_0x27ed('0x19'));var config=require(_0x27ed('0x1a'));var licenseUtil=require(_0x27ed('0x1b'));var db=require(_0x27ed('0x1c'))['db'];function respondWithStatusCode(_0x4b5934,_0x33dc9f){_0x33dc9f=_0x33dc9f||0xcc;return function(_0x48b916){if(_0x48b916){return _0x4b5934['sendStatus'](_0x33dc9f);}return _0x4b5934[_0x27ed('0x1d')](_0x33dc9f)['end']();};}function respondWithResult(_0x8647,_0x20176e){_0x20176e=_0x20176e||0xc8;return function(_0x2ebfb5){if(_0x2ebfb5){return _0x8647[_0x27ed('0x1d')](_0x20176e)['json'](_0x2ebfb5);}};}function respondWithFilteredResult(_0x22a5a4,_0x5e1112){return function(_0x28538a){if(_0x28538a){var _0x3e641f=typeof _0x5e1112[_0x27ed('0x1e')]===_0x27ed('0x1f')&&typeof _0x5e1112[_0x27ed('0x20')]===_0x27ed('0x1f');var _0x19646b=_0x28538a[_0x27ed('0x21')];var _0x830199=_0x3e641f?0x0:_0x5e1112[_0x27ed('0x1e')];var _0xe0246a=_0x3e641f?_0x28538a[_0x27ed('0x21')]:_0x5e1112[_0x27ed('0x1e')]+_0x5e1112['limit'];var _0x2f76b3;if(_0xe0246a>=_0x19646b){_0xe0246a=_0x19646b;_0x2f76b3=0xc8;}else{_0x2f76b3=0xce;}_0x22a5a4[_0x27ed('0x1d')](_0x2f76b3);return _0x22a5a4[_0x27ed('0x22')](_0x27ed('0x23'),_0x830199+'-'+_0xe0246a+'/'+_0x19646b)[_0x27ed('0x24')](_0x28538a);}return null;};}function patchUpdates(_0xc9a95e){return function(_0xcaf042){try{jsonpatch[_0x27ed('0x25')](_0xcaf042,_0xc9a95e,!![]);}catch(_0x2cef1a){return BPromise[_0x27ed('0x26')](_0x2cef1a);}return _0xcaf042[_0x27ed('0x27')]();};}function saveUpdates(_0x795d8d,_0x1d9cd2){return function(_0x173753){if(_0x173753){return _0x173753[_0x27ed('0x28')](_0x795d8d)[_0x27ed('0x29')](function(_0x27928a){return _0x27928a;});}return null;};}function removeEntity(_0xcb24bd,_0x399225){return function(_0x27264e){if(_0x27264e){return _0x27264e[_0x27ed('0x2a')]()['then'](function(){_0xcb24bd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cb73f,_0xa24f70){return function(_0x33c095){if(!_0x33c095){_0x2cb73f[_0x27ed('0x2b')](0x194);}return _0x33c095;};}function handleError(_0x399656,_0x880ef5){_0x880ef5=_0x880ef5||0x1f4;return function(_0x4cbfdf){logger[_0x27ed('0x2c')](_0x4cbfdf[_0x27ed('0x2d')]);if(_0x4cbfdf[_0x27ed('0x2e')]){delete _0x4cbfdf['name'];}_0x399656[_0x27ed('0x1d')](_0x880ef5)[_0x27ed('0x2f')](_0x4cbfdf);};}exports[_0x27ed('0x30')]=function(_0x5e6b04,_0x2fc344){var _0x301e9b={},_0x599f3b={},_0x4be5f9={'count':0x0,'rows':[]};var _0x330a41=_[_0x27ed('0x31')](db[_0x27ed('0x32')][_0x27ed('0x33')],function(_0x3023a1){return{'name':_0x3023a1[_0x27ed('0x34')],'type':_0x3023a1[_0x27ed('0x35')][_0x27ed('0x36')]};});_0x599f3b[_0x27ed('0x37')]=_[_0x27ed('0x31')](_0x330a41,_0x27ed('0x2e'));_0x599f3b[_0x27ed('0x38')]=_['keys'](_0x5e6b04[_0x27ed('0x38')]);_0x599f3b[_0x27ed('0x39')]=_[_0x27ed('0x3a')](_0x599f3b[_0x27ed('0x37')],_0x599f3b['query']);_0x301e9b[_0x27ed('0x3b')]=_['intersection'](_0x599f3b['model'],qs['fields'](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x3c')]));_0x301e9b[_0x27ed('0x3b')]=_0x301e9b['attributes']['length']?_0x301e9b['attributes']:_0x599f3b['model'];if(!_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x3d')](_0x27ed('0x3e'))){_0x301e9b['limit']=qs[_0x27ed('0x20')](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x20')]);_0x301e9b[_0x27ed('0x1e')]=qs['offset'](_0x5e6b04[_0x27ed('0x38')]['offset']);}_0x301e9b[_0x27ed('0x3f')]=qs[_0x27ed('0x40')](_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x40')]);_0x301e9b[_0x27ed('0x41')]=qs[_0x27ed('0x39')](_['pick'](_0x5e6b04[_0x27ed('0x38')],_0x599f3b[_0x27ed('0x39')]),_0x330a41);if(_0x5e6b04['query'][_0x27ed('0x42')]){_0x301e9b['where']=_[_0x27ed('0x43')](_0x301e9b[_0x27ed('0x41')],{'$or':_[_0x27ed('0x31')](_0x330a41,function(_0x5132a2){if(_0x5132a2[_0x27ed('0x35')]!==_0x27ed('0x44')){var _0x4ecbc3={};_0x4ecbc3[_0x5132a2[_0x27ed('0x2e')]]={'$like':'%'+_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x42')]+'%'};return _0x4ecbc3;}})});}_0x301e9b=_['merge']({},_0x301e9b,_0x5e6b04[_0x27ed('0x45')]);var _0x2a999f={'where':_0x301e9b[_0x27ed('0x41')]};return db['SmsTransferReport'][_0x27ed('0x21')](_0x2a999f)['then'](function(_0x3da958){_0x4be5f9[_0x27ed('0x21')]=_0x3da958;if(_0x5e6b04[_0x27ed('0x38')][_0x27ed('0x46')]){_0x301e9b[_0x27ed('0x47')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x27ed('0x48')](_0x301e9b);})[_0x27ed('0x29')](function(_0x326dca){_0x4be5f9[_0x27ed('0x49')]=_0x326dca;return _0x4be5f9;})['then'](respondWithFilteredResult(_0x2fc344,_0x301e9b))[_0x27ed('0x4a')](handleError(_0x2fc344,null));};exports[_0x27ed('0x4b')]=function(_0x22fb54,_0x35fdea){var _0x41defb={'raw':!![],'where':{'id':_0x22fb54[_0x27ed('0x4c')]['id']}},_0x1df19c={};_0x1df19c[_0x27ed('0x37')]=_[_0x27ed('0x4d')](db['SmsTransferReport'][_0x27ed('0x33')]);_0x1df19c[_0x27ed('0x38')]=_[_0x27ed('0x4d')](_0x22fb54[_0x27ed('0x38')]);_0x1df19c['filters']=_[_0x27ed('0x3a')](_0x1df19c[_0x27ed('0x37')],_0x1df19c['query']);_0x41defb[_0x27ed('0x3b')]=_[_0x27ed('0x3a')](_0x1df19c[_0x27ed('0x37')],qs['fields'](_0x22fb54[_0x27ed('0x38')][_0x27ed('0x3c')]));_0x41defb[_0x27ed('0x3b')]=_0x41defb[_0x27ed('0x3b')]['length']?_0x41defb['attributes']:_0x1df19c['model'];if(_0x22fb54['query']['includeAll']){_0x41defb[_0x27ed('0x47')]=[{'all':!![]}];}_0x41defb=_[_0x27ed('0x43')]({},_0x41defb,_0x22fb54[_0x27ed('0x45')]);return db['SmsTransferReport'][_0x27ed('0x4e')](_0x41defb)['then'](handleEntityNotFound(_0x35fdea,null))[_0x27ed('0x29')](respondWithResult(_0x35fdea,null))[_0x27ed('0x4a')](handleError(_0x35fdea,null));};exports[_0x27ed('0x4f')]=function(_0x232d45,_0x4e27d6){return db[_0x27ed('0x32')][_0x27ed('0x4f')](_0x232d45['body'],{})[_0x27ed('0x29')](respondWithResult(_0x4e27d6,0xc9))[_0x27ed('0x4a')](handleError(_0x4e27d6,null));};exports['update']=function(_0x13c6f6,_0x2133d7){if(_0x13c6f6[_0x27ed('0x50')]['id']){delete _0x13c6f6[_0x27ed('0x50')]['id'];}return db[_0x27ed('0x32')][_0x27ed('0x4e')]({'where':{'id':_0x13c6f6['params']['id']}})['then'](handleEntityNotFound(_0x2133d7,null))[_0x27ed('0x29')](saveUpdates(_0x13c6f6[_0x27ed('0x50')],null))[_0x27ed('0x29')](respondWithResult(_0x2133d7,null))['catch'](handleError(_0x2133d7,null));};exports[_0x27ed('0x2a')]=function(_0x4e12a8,_0x3ad0b7){return db['SmsTransferReport'][_0x27ed('0x4e')]({'where':{'id':_0x4e12a8[_0x27ed('0x4c')]['id']}})[_0x27ed('0x29')](handleEntityNotFound(_0x3ad0b7,null))[_0x27ed('0x29')](removeEntity(_0x3ad0b7,null))[_0x27ed('0x4a')](handleError(_0x3ad0b7,null));};exports[_0x27ed('0x51')]=function(_0x2373f9,_0x7cbbf3){return db[_0x27ed('0x32')][_0x27ed('0x51')]()[_0x27ed('0x29')](respondWithResult(_0x7cbbf3,null))[_0x27ed('0x4a')](handleError(_0x7cbbf3,null));};
\ No newline at end of file
+var _0x38a6=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','send','SmsTransferReport','rawAttributes','fieldName','type','key','model','map','keys','filters','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','show','params','intersection','includeAll','find','create','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path'];(function(_0x3ddc2f,_0x3e66dd){var _0x27d1c7=function(_0x43fcf3){while(--_0x43fcf3){_0x3ddc2f['push'](_0x3ddc2f['shift']());}};_0x27d1c7(++_0x3e66dd);}(_0x38a6,0x8b));var _0x638a=function(_0x33b7ba,_0x439275){_0x33b7ba=_0x33b7ba-0x0;var _0x53b7ae=_0x38a6[_0x33b7ba];return _0x53b7ae;};'use strict';var emlformat=require(_0x638a('0x0'));var rimraf=require(_0x638a('0x1'));var zipdir=require(_0x638a('0x2'));var jsonpatch=require(_0x638a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x638a('0x4'));var util=require(_0x638a('0x5'));var path=require(_0x638a('0x6'));var sox=require(_0x638a('0x7'));var csv=require(_0x638a('0x8'));var ejs=require(_0x638a('0x9'));var fs=require('fs');var fs_extra=require(_0x638a('0xa'));var _=require(_0x638a('0xb'));var squel=require(_0x638a('0xc'));var crypto=require(_0x638a('0xd'));var jsforce=require(_0x638a('0xe'));var deskjs=require(_0x638a('0xf'));var toCsv=require('to-csv');var querystring=require(_0x638a('0x10'));var Papa=require('papaparse');var Redis=require(_0x638a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x638a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x638a('0x13'));var config=require(_0x638a('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x29ec9b,_0x3faf10){_0x3faf10=_0x3faf10||0xcc;return function(_0x1ceedd){if(_0x1ceedd){return _0x29ec9b[_0x638a('0x15')](_0x3faf10);}return _0x29ec9b[_0x638a('0x16')](_0x3faf10)[_0x638a('0x17')]();};}function respondWithResult(_0x189feb,_0x5737f4){_0x5737f4=_0x5737f4||0xc8;return function(_0xa876b2){if(_0xa876b2){return _0x189feb[_0x638a('0x16')](_0x5737f4)[_0x638a('0x18')](_0xa876b2);}};}function respondWithFilteredResult(_0x1b913a,_0x315d27){return function(_0x3f6f32){if(_0x3f6f32){var _0x578bde=typeof _0x315d27[_0x638a('0x19')]===_0x638a('0x1a')&&typeof _0x315d27['limit']===_0x638a('0x1a');var _0x1f2776=_0x3f6f32[_0x638a('0x1b')];var _0x5e5f1b=_0x578bde?0x0:_0x315d27[_0x638a('0x19')];var _0x30133d=_0x578bde?_0x3f6f32[_0x638a('0x1b')]:_0x315d27['offset']+_0x315d27[_0x638a('0x1c')];var _0x5a654d;if(_0x30133d>=_0x1f2776){_0x30133d=_0x1f2776;_0x5a654d=0xc8;}else{_0x5a654d=0xce;}_0x1b913a['status'](_0x5a654d);return _0x1b913a['set'](_0x638a('0x1d'),_0x5e5f1b+'-'+_0x30133d+'/'+_0x1f2776)[_0x638a('0x18')](_0x3f6f32);}return null;};}function patchUpdates(_0x2bb62e){return function(_0x1bfa56){try{jsonpatch[_0x638a('0x1e')](_0x1bfa56,_0x2bb62e,!![]);}catch(_0x2d1ecd){return BPromise[_0x638a('0x1f')](_0x2d1ecd);}return _0x1bfa56[_0x638a('0x20')]();};}function saveUpdates(_0x78588,_0x455aaf){return function(_0x38882d){if(_0x38882d){return _0x38882d[_0x638a('0x21')](_0x78588)[_0x638a('0x22')](function(_0x47c55d){return _0x47c55d;});}return null;};}function removeEntity(_0x50b5d6,_0x3db1d1){return function(_0x18382c){if(_0x18382c){return _0x18382c['destroy']()[_0x638a('0x22')](function(){_0x50b5d6['status'](0xcc)[_0x638a('0x17')]();});}};}function handleEntityNotFound(_0x1b0fc9,_0x2a3def){return function(_0x1a2e42){if(!_0x1a2e42){_0x1b0fc9[_0x638a('0x15')](0x194);}return _0x1a2e42;};}function handleError(_0x224c87,_0x1e1f1f){_0x1e1f1f=_0x1e1f1f||0x1f4;return function(_0x3f3b37){logger[_0x638a('0x23')](_0x3f3b37[_0x638a('0x24')]);if(_0x3f3b37['name']){delete _0x3f3b37[_0x638a('0x25')];}_0x224c87[_0x638a('0x16')](_0x1e1f1f)[_0x638a('0x26')](_0x3f3b37);};}exports['index']=function(_0x7956d0,_0xaf8188){var _0x3bf423={},_0x3455fb={},_0x569449={'count':0x0,'rows':[]};var _0x281038=_['map'](db[_0x638a('0x27')][_0x638a('0x28')],function(_0x5c61ee){return{'name':_0x5c61ee[_0x638a('0x29')],'type':_0x5c61ee[_0x638a('0x2a')][_0x638a('0x2b')]};});_0x3455fb[_0x638a('0x2c')]=_[_0x638a('0x2d')](_0x281038,_0x638a('0x25'));_0x3455fb['query']=_[_0x638a('0x2e')](_0x7956d0['query']);_0x3455fb[_0x638a('0x2f')]=_['intersection'](_0x3455fb[_0x638a('0x2c')],_0x3455fb['query']);_0x3bf423[_0x638a('0x30')]=_['intersection'](_0x3455fb[_0x638a('0x2c')],qs[_0x638a('0x31')](_0x7956d0[_0x638a('0x32')]['fields']));_0x3bf423[_0x638a('0x30')]=_0x3bf423[_0x638a('0x30')][_0x638a('0x33')]?_0x3bf423[_0x638a('0x30')]:_0x3455fb['model'];if(!_0x7956d0['query'][_0x638a('0x34')](_0x638a('0x35'))){_0x3bf423[_0x638a('0x1c')]=qs['limit'](_0x7956d0['query'][_0x638a('0x1c')]);_0x3bf423[_0x638a('0x19')]=qs[_0x638a('0x19')](_0x7956d0[_0x638a('0x32')][_0x638a('0x19')]);}_0x3bf423[_0x638a('0x36')]=qs[_0x638a('0x37')](_0x7956d0['query'][_0x638a('0x37')]);_0x3bf423[_0x638a('0x38')]=qs[_0x638a('0x2f')](_[_0x638a('0x39')](_0x7956d0['query'],_0x3455fb[_0x638a('0x2f')]),_0x281038);if(_0x7956d0['query']['filter']){_0x3bf423[_0x638a('0x38')]=_['merge'](_0x3bf423[_0x638a('0x38')],{'$or':_['map'](_0x281038,function(_0x8a0133){if(_0x8a0133[_0x638a('0x2a')]!=='VIRTUAL'){var _0x3cfac8={};_0x3cfac8[_0x8a0133['name']]={'$like':'%'+_0x7956d0[_0x638a('0x32')][_0x638a('0x3a')]+'%'};return _0x3cfac8;}})});}_0x3bf423=_[_0x638a('0x3b')]({},_0x3bf423,_0x7956d0[_0x638a('0x3c')]);var _0x528b5f={'where':_0x3bf423[_0x638a('0x38')]};return db[_0x638a('0x27')]['count'](_0x528b5f)[_0x638a('0x22')](function(_0x35d86c){_0x569449['count']=_0x35d86c;if(_0x7956d0[_0x638a('0x32')]['includeAll']){_0x3bf423[_0x638a('0x3d')]=[{'all':!![]}];}return db['SmsTransferReport'][_0x638a('0x3e')](_0x3bf423);})[_0x638a('0x22')](function(_0x3b967a){_0x569449[_0x638a('0x3f')]=_0x3b967a;return _0x569449;})['then'](respondWithFilteredResult(_0xaf8188,_0x3bf423))['catch'](handleError(_0xaf8188,null));};exports[_0x638a('0x40')]=function(_0x3235ed,_0x42e8da){var _0x523d29={'raw':!![],'where':{'id':_0x3235ed[_0x638a('0x41')]['id']}},_0x49a3ac={};_0x49a3ac[_0x638a('0x2c')]=_['keys'](db[_0x638a('0x27')][_0x638a('0x28')]);_0x49a3ac[_0x638a('0x32')]=_['keys'](_0x3235ed[_0x638a('0x32')]);_0x49a3ac[_0x638a('0x2f')]=_['intersection'](_0x49a3ac[_0x638a('0x2c')],_0x49a3ac[_0x638a('0x32')]);_0x523d29[_0x638a('0x30')]=_[_0x638a('0x42')](_0x49a3ac[_0x638a('0x2c')],qs[_0x638a('0x31')](_0x3235ed[_0x638a('0x32')][_0x638a('0x31')]));_0x523d29['attributes']=_0x523d29[_0x638a('0x30')]['length']?_0x523d29[_0x638a('0x30')]:_0x49a3ac[_0x638a('0x2c')];if(_0x3235ed[_0x638a('0x32')][_0x638a('0x43')]){_0x523d29[_0x638a('0x3d')]=[{'all':!![]}];}_0x523d29=_['merge']({},_0x523d29,_0x3235ed[_0x638a('0x3c')]);return db[_0x638a('0x27')][_0x638a('0x44')](_0x523d29)[_0x638a('0x22')](handleEntityNotFound(_0x42e8da,null))['then'](respondWithResult(_0x42e8da,null))['catch'](handleError(_0x42e8da,null));};exports['create']=function(_0x3cbc27,_0xab6c82){return db[_0x638a('0x27')][_0x638a('0x45')](_0x3cbc27[_0x638a('0x46')],{})['then'](respondWithResult(_0xab6c82,0xc9))[_0x638a('0x47')](handleError(_0xab6c82,null));};exports['update']=function(_0x3b8ae4,_0x5bc8b8){if(_0x3b8ae4[_0x638a('0x46')]['id']){delete _0x3b8ae4['body']['id'];}return db[_0x638a('0x27')][_0x638a('0x44')]({'where':{'id':_0x3b8ae4[_0x638a('0x41')]['id']}})[_0x638a('0x22')](handleEntityNotFound(_0x5bc8b8,null))['then'](saveUpdates(_0x3b8ae4['body'],null))[_0x638a('0x22')](respondWithResult(_0x5bc8b8,null))[_0x638a('0x47')](handleError(_0x5bc8b8,null));};exports[_0x638a('0x48')]=function(_0x2472a1,_0x36440b){return db[_0x638a('0x27')][_0x638a('0x44')]({'where':{'id':_0x2472a1[_0x638a('0x41')]['id']}})[_0x638a('0x22')](handleEntityNotFound(_0x36440b,null))[_0x638a('0x22')](removeEntity(_0x36440b,null))[_0x638a('0x47')](handleError(_0x36440b,null));};exports['describe']=function(_0x5808ff,_0x12ba5e){return db[_0x638a('0x27')]['describe']()['then'](respondWithResult(_0x12ba5e,null))[_0x638a('0x47')](handleError(_0x12ba5e,null));};
\ No newline at end of file
index c4ea872..2525abf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x542b=['bluebird','path','rimraf','./smsTransferReport.attributes','define','uniqueid','lodash','util','api','moment'];(function(_0x2e1777,_0x1f056a){var _0x35628f=function(_0x50499e){while(--_0x50499e){_0x2e1777['push'](_0x2e1777['shift']());}};_0x35628f(++_0x1f056a);}(_0x542b,0xec));var _0xb542=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x542b[_0x51020b];return _0x371e47;};'use strict';var _=require(_0xb542('0x0'));var util=require(_0xb542('0x1'));var logger=require('../../config/logger')(_0xb542('0x2'));var moment=require(_0xb542('0x3'));var BPromise=require(_0xb542('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb542('0x5'));var rimraf=require(_0xb542('0x6'));var config=require('../../config/environment');var attributes=require(_0xb542('0x7'));module['exports']=function(_0x10cf5d,_0x27a259){return _0x10cf5d[_0xb542('0x8')]('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xb542('0x9'),'fields':[_0xb542('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x24e2=['rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','util','api','moment','bluebird','request-promise'];(function(_0x591fd4,_0x1c6480){var _0x48c3a8=function(_0x5aa8fb){while(--_0x5aa8fb){_0x591fd4['push'](_0x591fd4['shift']());}};_0x48c3a8(++_0x1c6480);}(_0x24e2,0x1c1));var _0x224e=function(_0x14f1e6,_0x11001e){_0x14f1e6=_0x14f1e6-0x0;var _0x2876d2=_0x24e2[_0x14f1e6];return _0x2876d2;};'use strict';var _=require(_0x224e('0x0'));var util=require(_0x224e('0x1'));var logger=require('../../config/logger')(_0x224e('0x2'));var moment=require(_0x224e('0x3'));var BPromise=require(_0x224e('0x4'));var rp=require(_0x224e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x224e('0x6'));var config=require(_0x224e('0x7'));var attributes=require(_0x224e('0x8'));module[_0x224e('0x9')]=function(_0x565234,_0x2a76e8){return _0x565234[_0x224e('0xa')](_0x224e('0xb'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x224e('0xc'),'fields':[_0x224e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e970c21..116494c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28aa=['debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3575fb,_0x634d3b){var _0x41df19=function(_0x54bdd6){while(--_0x54bdd6){_0x3575fb['push'](_0x3575fb['shift']());}};_0x41df19(++_0x634d3b);}(_0x28aa,0xf8));var _0xa28a=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x28aa[_0x387777];return _0x3f84c0;};'use strict';var _=require('lodash');var util=require(_0xa28a('0x0'));var moment=require(_0xa28a('0x1'));var BPromise=require(_0xa28a('0x2'));var rs=require(_0xa28a('0x3'));var fs=require('fs');var Redis=require(_0xa28a('0x4'));var db=require(_0xa28a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa28a('0x6'))(_0xa28a('0x7'));var config=require(_0xa28a('0x8'));var jayson=require(_0xa28a('0x9'));var client=jayson['client'][_0xa28a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33cda2,_0x150568,_0x1d2e08){return new BPromise(function(_0x420947,_0x1d23cc){return client[_0xa28a('0xb')](_0x33cda2,_0x1d2e08)[_0xa28a('0xc')](function(_0x1224e9){logger[_0xa28a('0xd')](_0xa28a('0xe'),_0x150568,_0xa28a('0xf'));logger[_0xa28a('0x10')](_0xa28a('0x11'),_0x150568,_0xa28a('0xf'),JSON['stringify'](_0x1224e9));if(_0x1224e9[_0xa28a('0x12')]){if(_0x1224e9[_0xa28a('0x12')][_0xa28a('0x13')]===0x1f4){logger[_0xa28a('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x150568,_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);return _0x1d23cc(_0x1224e9['error'][_0xa28a('0x14')]);}logger[_0xa28a('0x12')](_0xa28a('0xe'),_0x150568,_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);return _0x420947(_0x1224e9[_0xa28a('0x12')][_0xa28a('0x14')]);}else{logger[_0xa28a('0xd')](_0xa28a('0xe'),_0x150568,_0xa28a('0xf'));_0x420947(_0x1224e9['result'][_0xa28a('0x14')]);}})[_0xa28a('0x15')](function(_0x15116a){logger['error'](_0xa28a('0xe'),_0x150568,_0x15116a);_0x1d23cc(_0x15116a);});});}
\ No newline at end of file
+var _0x455d=['request\x20sent','debug','stringify','error','code','message','SmsTransferReport,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x2f2dd0,_0x242127){var _0x3c48d1=function(_0x4516b1){while(--_0x4516b1){_0x2f2dd0['push'](_0x2f2dd0['shift']());}};_0x3c48d1(++_0x242127);}(_0x455d,0x190));var _0xd455=function(_0x11e462,_0x51eef5){_0x11e462=_0x11e462-0x0;var _0x5e3cf5=_0x455d[_0x11e462];return _0x5e3cf5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd455('0x0'));var BPromise=require(_0xd455('0x1'));var rs=require(_0xd455('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd455('0x3'))['db'];var utils=require(_0xd455('0x4'));var logger=require(_0xd455('0x5'))(_0xd455('0x6'));var config=require(_0xd455('0x7'));var jayson=require(_0xd455('0x8'));var client=jayson[_0xd455('0x9')][_0xd455('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b373c,_0x5a5ed7,_0x2bbebf){return new BPromise(function(_0x2e530a,_0x4ef696){return client[_0xd455('0xb')](_0x3b373c,_0x2bbebf)[_0xd455('0xc')](function(_0xed6c5f){logger[_0xd455('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x5a5ed7,_0xd455('0xe'));logger[_0xd455('0xf')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x5a5ed7,_0xd455('0xe'),JSON[_0xd455('0x10')](_0xed6c5f));if(_0xed6c5f[_0xd455('0x11')]){if(_0xed6c5f[_0xd455('0x11')][_0xd455('0x12')]===0x1f4){logger[_0xd455('0x11')]('SmsTransferReport,\x20%s,\x20%s',_0x5a5ed7,_0xed6c5f['error'][_0xd455('0x13')]);return _0x4ef696(_0xed6c5f[_0xd455('0x11')][_0xd455('0x13')]);}logger['error'](_0xd455('0x14'),_0x5a5ed7,_0xed6c5f[_0xd455('0x11')][_0xd455('0x13')]);return _0x2e530a(_0xed6c5f[_0xd455('0x11')][_0xd455('0x13')]);}else{logger[_0xd455('0xd')](_0xd455('0x14'),_0x5a5ed7,_0xd455('0xe'));_0x2e530a(_0xed6c5f[_0xd455('0x15')]['message']);}})[_0xd455('0x16')](function(_0x35a9fc){logger[_0xd455('0x11')](_0xd455('0x14'),_0x5a5ed7,_0x35a9fc);_0x4ef696(_0x35a9fc);});});}
\ No newline at end of file
index 0c8366a..92e3c2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e23=['isAuthenticated','index','/:id','/:id/download','download','diskStorage','join','root','originalname','replace','format','%s-%s%s','extname','now','single','file','create','put','update','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','./sound.controller','get'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0x8e23,0xc3));var _0x38e2=function(_0x407823,_0x466c97){_0x407823=_0x407823-0x0;var _0x18c3df=_0x8e23[_0x407823];return _0x18c3df;};'use strict';var multer=require(_0x38e2('0x0'));var util=require(_0x38e2('0x1'));var path=require('path');var timeout=require(_0x38e2('0x2'));var express=require('express');var router=express[_0x38e2('0x3')]();var fs_extra=require(_0x38e2('0x4'));var auth=require(_0x38e2('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x38e2('0x6'));router[_0x38e2('0x7')]('/',auth[_0x38e2('0x8')](),controller[_0x38e2('0x9')]);router[_0x38e2('0x7')](_0x38e2('0xa'),auth[_0x38e2('0x8')](),controller['show']);router[_0x38e2('0x7')](_0x38e2('0xb'),auth[_0x38e2('0x8')](),controller[_0x38e2('0xc')]);var upload=multer({'storage':multer[_0x38e2('0xd')]({'destination':function(_0x67b615,_0x37da1e,_0x4eba40){_0x4eba40(null,path[_0x38e2('0xe')](config[_0x38e2('0xf')],'server/files/sounds/original/'));},'filename':function(_0x14531a,_0x2c8deb,_0x2ba2a4){_0x2c8deb[_0x38e2('0x10')]=_0x2c8deb[_0x38e2('0x10')][_0x38e2('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2ba2a4(null,util[_0x38e2('0x12')](_0x38e2('0x13'),path['basename'](_0x2c8deb[_0x38e2('0x10')],path[_0x38e2('0x14')](_0x2c8deb[_0x38e2('0x10')])),Date[_0x38e2('0x15')](),path[_0x38e2('0x14')](_0x2c8deb['originalname'])));}})});router['post']('/',upload[_0x38e2('0x16')](_0x38e2('0x17')),controller[_0x38e2('0x18')]);router[_0x38e2('0x19')](_0x38e2('0xa'),auth['isAuthenticated'](),controller[_0x38e2('0x1a')]);router[_0x38e2('0x1b')]('/:id',auth['isAuthenticated'](),controller['delete']);module[_0x38e2('0x1c')]=router;
\ No newline at end of file
+var _0x8adc=['download','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','extname','now','file','update','delete','/:id','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./sound.controller','get','isAuthenticated','/:id/download'];(function(_0x2b58fb,_0x353e04){var _0xd865fa=function(_0x46908a){while(--_0x46908a){_0x2b58fb['push'](_0x2b58fb['shift']());}};_0xd865fa(++_0x353e04);}(_0x8adc,0x7c));var _0xc8ad=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0x8adc[_0x377a6e];return _0x37f751;};'use strict';var multer=require('multer');var util=require(_0xc8ad('0x0'));var path=require(_0xc8ad('0x1'));var timeout=require(_0xc8ad('0x2'));var express=require('express');var router=express[_0xc8ad('0x3')]();var fs_extra=require(_0xc8ad('0x4'));var auth=require(_0xc8ad('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc8ad('0x6'));var controller=require(_0xc8ad('0x7'));router[_0xc8ad('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc8ad('0x8')]('/:id',auth[_0xc8ad('0x9')](),controller['show']);router[_0xc8ad('0x8')](_0xc8ad('0xa'),auth[_0xc8ad('0x9')](),controller[_0xc8ad('0xb')]);var upload=multer({'storage':multer[_0xc8ad('0xc')]({'destination':function(_0x5185e2,_0x284f6a,_0x4e4cb2){_0x4e4cb2(null,path[_0xc8ad('0xd')](config[_0xc8ad('0xe')],'server/files/sounds/original/'));},'filename':function(_0x4694d3,_0x861158,_0x55e31b){_0x861158[_0xc8ad('0xf')]=_0x861158[_0xc8ad('0xf')][_0xc8ad('0x10')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x55e31b(null,util[_0xc8ad('0x11')](_0xc8ad('0x12'),path[_0xc8ad('0x13')](_0x861158[_0xc8ad('0xf')],path[_0xc8ad('0x14')](_0x861158[_0xc8ad('0xf')])),Date[_0xc8ad('0x15')](),path[_0xc8ad('0x14')](_0x861158[_0xc8ad('0xf')])));}})});router['post']('/',upload['single'](_0xc8ad('0x16')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc8ad('0x17')]);router[_0xc8ad('0x18')](_0xc8ad('0x19'),auth[_0xc8ad('0x9')](),controller[_0xc8ad('0x18')]);module[_0xc8ad('0x1a')]=router;
\ No newline at end of file
index 5b27da4..b6c2b67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41db=['sequelize','exports','STRING','name','FLOAT','BIGINT','INTEGER'];(function(_0x5ccc36,_0x355c08){var _0x19e8cc=function(_0x53128e){while(--_0x53128e){_0x5ccc36['push'](_0x5ccc36['shift']());}};_0x19e8cc(++_0x355c08);}(_0x41db,0xa1));var _0xb41d=function(_0x3e089c,_0x186068){_0x3e089c=_0x3e089c-0x0;var _0x210a47=_0x41db[_0x3e089c];return _0x210a47;};'use strict';var Sequelize=require(_0xb41d('0x0'));module[_0xb41d('0x1')]={'name':{'type':Sequelize[_0xb41d('0x2')],'unique':_0xb41d('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xb41d('0x2')]},'display_name':{'type':Sequelize[_0xb41d('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xb41d('0x2')]},'original_format':{'type':Sequelize[_0xb41d('0x2')]},'original_duration':{'type':Sequelize[_0xb41d('0x4')]},'original_sampleCount':{'type':Sequelize[_0xb41d('0x5')]},'original_channelCount':{'type':Sequelize[_0xb41d('0x6')]},'original_bitRate':{'type':Sequelize[_0xb41d('0x5')]},'original_sampleRate':{'type':Sequelize[_0xb41d('0x6')]},'converted_format':{'type':Sequelize[_0xb41d('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xb41d('0x5')]},'converted_channelCount':{'type':Sequelize[_0xb41d('0x6')]},'converted_bitRate':{'type':Sequelize[_0xb41d('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xb41d('0x6')]}};
\ No newline at end of file
+var _0xdf46=['FLOAT','sequelize','exports','STRING','name','BIGINT','INTEGER'];(function(_0x30a997,_0x3aa1ac){var _0x4ba927=function(_0x2ba9a3){while(--_0x2ba9a3){_0x30a997['push'](_0x30a997['shift']());}};_0x4ba927(++_0x3aa1ac);}(_0xdf46,0x6a));var _0x6df4=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xdf46[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x6df4('0x0'));module[_0x6df4('0x1')]={'name':{'type':Sequelize[_0x6df4('0x2')],'unique':_0x6df4('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x6df4('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x6df4('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x6df4('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0x6df4('0x4')]},'original_sampleRate':{'type':Sequelize[_0x6df4('0x5')]},'converted_format':{'type':Sequelize[_0x6df4('0x2')]},'converted_duration':{'type':Sequelize[_0x6df4('0x6')]},'converted_sampleCount':{'type':Sequelize[_0x6df4('0x4')]},'converted_channelCount':{'type':Sequelize[_0x6df4('0x5')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x6df4('0x5')]}};
\ No newline at end of file
index 4e6352f..2f24007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b9=['UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','params','pick','description','delete','unlinkSync','rimraf','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','get','Sounds','error','name','send','map','Sound','rawAttributes','fieldName','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','rows','show','includeAll','options','find','download','converted_format','existsSync','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','Sound\x20not\x20found','%s.%s','format','catch','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','0777','transcode','src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation'];(function(_0x54e26b,_0x18219e){var _0x2a82f5=function(_0x3023ac){while(--_0x3023ac){_0x54e26b['push'](_0x54e26b['shift']());}};_0x2a82f5(++_0x18219e);}(_0x97b9,0x17c));var _0x997b=function(_0xc188f6,_0x5925c1){_0xc188f6=_0xc188f6-0x0;var _0x378bd3=_0x97b9[_0xc188f6];return _0x378bd3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x997b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x997b('0x1'));var rp=require('request-promise');var moment=require(_0x997b('0x2'));var BPromise=require(_0x997b('0x3'));var Mustache=require(_0x997b('0x4'));var util=require('util');var path=require('path');var sox=require(_0x997b('0x5'));var csv=require('to-csv');var ejs=require(_0x997b('0x6'));var fs=require('fs');var fs_extra=require(_0x997b('0x7'));var _=require(_0x997b('0x8'));var squel=require(_0x997b('0x9'));var crypto=require(_0x997b('0xa'));var jsforce=require(_0x997b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x997b('0xc'));var querystring=require(_0x997b('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x997b('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x997b('0xf'));var logger=require('../../config/logger')(_0x997b('0x10'));var utils=require(_0x997b('0x11'));var config=require(_0x997b('0x12'));var licenseUtil=require(_0x997b('0x13'));var db=require(_0x997b('0x14'))['db'];function respondWithStatusCode(_0x1acca3,_0x16dde5){_0x16dde5=_0x16dde5||0xcc;return function(_0x5625a4){if(_0x5625a4){return _0x1acca3[_0x997b('0x15')](_0x16dde5);}return _0x1acca3[_0x997b('0x16')](_0x16dde5)[_0x997b('0x17')]();};}function respondWithResult(_0x4dc573,_0x617ba5){_0x617ba5=_0x617ba5||0xc8;return function(_0x2ff7fd){if(_0x2ff7fd){return _0x4dc573[_0x997b('0x16')](_0x617ba5)['json'](_0x2ff7fd);}};}function respondWithFilteredResult(_0x1ea95a,_0x3390bc){return function(_0x3d3c37){if(_0x3d3c37){var _0x269bc6=typeof _0x3390bc[_0x997b('0x18')]===_0x997b('0x19')&&typeof _0x3390bc[_0x997b('0x1a')]===_0x997b('0x19');var _0x1c17f7=_0x3d3c37['count'];var _0x104f91=_0x269bc6?0x0:_0x3390bc['offset'];var _0x4e4518=_0x269bc6?_0x3d3c37[_0x997b('0x1b')]:_0x3390bc[_0x997b('0x18')]+_0x3390bc[_0x997b('0x1a')];var _0x3a33a8;if(_0x4e4518>=_0x1c17f7){_0x4e4518=_0x1c17f7;_0x3a33a8=0xc8;}else{_0x3a33a8=0xce;}_0x1ea95a[_0x997b('0x16')](_0x3a33a8);return _0x1ea95a[_0x997b('0x1c')]('Content-Range',_0x104f91+'-'+_0x4e4518+'/'+_0x1c17f7)[_0x997b('0x1d')](_0x3d3c37);}return null;};}function patchUpdates(_0x542a2c){return function(_0x532cd9){try{jsonpatch[_0x997b('0x1e')](_0x532cd9,_0x542a2c,!![]);}catch(_0x1c8260){return BPromise[_0x997b('0x1f')](_0x1c8260);}return _0x532cd9[_0x997b('0x20')]();};}function saveUpdates(_0x5bf9a1,_0x11342b){return function(_0x28c7be){if(_0x28c7be){return _0x28c7be[_0x997b('0x21')](_0x5bf9a1)[_0x997b('0x22')](function(_0x11e2a9){return _0x11e2a9;});}return null;};}function removeEntity(_0x1b2f13,_0x2a7a73){return function(_0x30a8e5){if(_0x30a8e5){return _0x30a8e5[_0x997b('0x23')]()['then'](function(){var _0x1c9652=_0x30a8e5[_0x997b('0x24')]({'plain':!![]});var _0x57596a=_0x997b('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x57596a,'resourceId':_0x1c9652['id']}})['then'](function(){return _0x30a8e5;});})['then'](function(){_0x1b2f13[_0x997b('0x16')](0xcc)[_0x997b('0x17')]();});}};}function handleEntityNotFound(_0x279de2,_0x564359){return function(_0x480c89){if(!_0x480c89){_0x279de2[_0x997b('0x15')](0x194);}return _0x480c89;};}function handleError(_0x49f0d4,_0x12f9b5){_0x12f9b5=_0x12f9b5||0x1f4;return function(_0x18336c){logger[_0x997b('0x26')](_0x18336c['stack']);if(_0x18336c['name']){delete _0x18336c[_0x997b('0x27')];}_0x49f0d4[_0x997b('0x16')](_0x12f9b5)[_0x997b('0x28')](_0x18336c);};}exports['index']=function(_0x3e888f,_0x4ec07a){var _0x443be9={},_0x128a80={},_0x313fbb={'count':0x0,'rows':[]};var _0x2e74a0=_[_0x997b('0x29')](db[_0x997b('0x2a')][_0x997b('0x2b')],function(_0x5a7357){return{'name':_0x5a7357[_0x997b('0x2c')],'type':_0x5a7357['type']['key']};});_0x128a80['model']=_[_0x997b('0x29')](_0x2e74a0,_0x997b('0x27'));_0x128a80[_0x997b('0x2d')]=_[_0x997b('0x2e')](_0x3e888f[_0x997b('0x2d')]);_0x128a80[_0x997b('0x2f')]=_[_0x997b('0x30')](_0x128a80['model'],_0x128a80[_0x997b('0x2d')]);_0x443be9[_0x997b('0x31')]=_[_0x997b('0x30')](_0x128a80[_0x997b('0x32')],qs[_0x997b('0x33')](_0x3e888f['query'][_0x997b('0x33')]));_0x443be9[_0x997b('0x31')]=_0x443be9[_0x997b('0x31')][_0x997b('0x34')]?_0x443be9['attributes']:_0x128a80['model'];if(!_0x3e888f[_0x997b('0x2d')][_0x997b('0x35')](_0x997b('0x36'))){_0x443be9[_0x997b('0x1a')]=qs[_0x997b('0x1a')](_0x3e888f[_0x997b('0x2d')][_0x997b('0x1a')]);_0x443be9[_0x997b('0x18')]=qs[_0x997b('0x18')](_0x3e888f[_0x997b('0x2d')][_0x997b('0x18')]);}_0x443be9[_0x997b('0x37')]=qs['sort'](_0x3e888f['query'][_0x997b('0x38')]);_0x443be9[_0x997b('0x39')]=qs[_0x997b('0x2f')](_['pick'](_0x3e888f[_0x997b('0x2d')],_0x128a80[_0x997b('0x2f')]),_0x2e74a0);if(_0x3e888f[_0x997b('0x2d')][_0x997b('0x3a')]){_0x443be9[_0x997b('0x39')]=_[_0x997b('0x3b')](_0x443be9[_0x997b('0x39')],{'$or':_[_0x997b('0x29')](_0x2e74a0,function(_0x64fd1b){if(_0x64fd1b['type']!=='VIRTUAL'){var _0x43ab0b={};_0x43ab0b[_0x64fd1b[_0x997b('0x27')]]={'$like':'%'+_0x3e888f['query'][_0x997b('0x3a')]+'%'};return _0x43ab0b;}})});}_0x443be9=_[_0x997b('0x3b')]({},_0x443be9,_0x3e888f['options']);var _0x106714={'where':_0x443be9[_0x997b('0x39')]};return db[_0x997b('0x2a')]['count'](_0x106714)[_0x997b('0x22')](function(_0x11dc9a){_0x313fbb['count']=_0x11dc9a;if(_0x3e888f[_0x997b('0x2d')]['includeAll']){_0x443be9[_0x997b('0x3c')]=[{'all':!![]}];}return db[_0x997b('0x2a')][_0x997b('0x3d')](_0x443be9);})[_0x997b('0x22')](function(_0x40739f){_0x313fbb[_0x997b('0x3e')]=_0x40739f;return _0x313fbb;})[_0x997b('0x22')](respondWithFilteredResult(_0x4ec07a,_0x443be9))['catch'](handleError(_0x4ec07a,null));};exports[_0x997b('0x3f')]=function(_0x473847,_0x3a3a65){var _0x47b61d={'raw':!![],'where':{'id':_0x473847['params']['id']}},_0x3a044a={};_0x3a044a[_0x997b('0x32')]=_[_0x997b('0x2e')](db['Sound']['rawAttributes']);_0x3a044a[_0x997b('0x2d')]=_['keys'](_0x473847[_0x997b('0x2d')]);_0x3a044a['filters']=_[_0x997b('0x30')](_0x3a044a[_0x997b('0x32')],_0x3a044a[_0x997b('0x2d')]);_0x47b61d[_0x997b('0x31')]=_[_0x997b('0x30')](_0x3a044a[_0x997b('0x32')],qs[_0x997b('0x33')](_0x473847[_0x997b('0x2d')][_0x997b('0x33')]));_0x47b61d[_0x997b('0x31')]=_0x47b61d[_0x997b('0x31')][_0x997b('0x34')]?_0x47b61d[_0x997b('0x31')]:_0x3a044a[_0x997b('0x32')];if(_0x473847[_0x997b('0x2d')][_0x997b('0x40')]){_0x47b61d[_0x997b('0x3c')]=[{'all':!![]}];}_0x47b61d=_[_0x997b('0x3b')]({},_0x47b61d,_0x473847[_0x997b('0x41')]);return db[_0x997b('0x2a')][_0x997b('0x42')](_0x47b61d)[_0x997b('0x22')](handleEntityNotFound(_0x3a3a65,null))[_0x997b('0x22')](respondWithResult(_0x3a3a65,null))['catch'](handleError(_0x3a3a65,null));};exports[_0x997b('0x43')]=function(_0x5006bd,_0x2e85d8,_0x175045){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5006bd['params']['id']},'attributes':[_0x997b('0x27'),'save_name',_0x997b('0x44')],'raw':!![]})[_0x997b('0x22')](handleEntityNotFound(_0x2e85d8,null))[_0x997b('0x22')](function(_0x43c8df){if(_0x43c8df){if(!fs[_0x997b('0x45')](path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),_0x43c8df[_0x997b('0x49')]+'.'+_0x43c8df['converted_format']))){throw new db[(_0x997b('0x4a'))][(_0x997b('0x4b'))](_0x997b('0x4c'));}return _0x2e85d8[_0x997b('0x43')](path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),util['format'](_0x997b('0x4d'),_0x43c8df[_0x997b('0x49')],_0x43c8df[_0x997b('0x44')])),util[_0x997b('0x4e')](_0x997b('0x4d'),_0x43c8df['name'],_0x43c8df[_0x997b('0x44')]));}return null;})[_0x997b('0x4f')](handleError(_0x2e85d8,null));};exports[_0x997b('0x50')]=function(_0x2eba2b,_0x220d2e,_0x1f0926){var _0x2d3a94={'name':path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x53')],path[_0x997b('0x54')](_0x2eba2b['file'][_0x997b('0x53')])),'save_name':path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')],path[_0x997b('0x54')](_0x2eba2b['file'][_0x997b('0x55')])),'original_format':path['extname'](_0x2eba2b[_0x997b('0x52')][_0x997b('0x53')])[_0x997b('0x56')](0x1),'converted_format':_0x997b('0x57')};var _0x3201e8=path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x58'),_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')]);var _0x41229b=path[_0x997b('0x46')](config[_0x997b('0x47')],_0x997b('0x48'),util[_0x997b('0x4e')]('%s.%s',path[_0x997b('0x51')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')],path[_0x997b('0x54')](_0x2eba2b[_0x997b('0x52')][_0x997b('0x55')])),_0x2d3a94['converted_format']));logger['info'](_0x997b('0x59'),_0x3201e8);logger[_0x997b('0x5a')](_0x997b('0x5b'),_0x41229b);try{fs['chmodSync'](_0x3201e8,parseInt(_0x997b('0x5c'),0x8));var _0x170487=sox[_0x997b('0x5d')](_0x3201e8,_0x41229b,{'sampleRate':0x1f40,'format':_0x997b('0x57'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x170487['on'](_0x997b('0x26'),function(_0xef21ae){fs['unlinkSync'](_0x3201e8);_0x220d2e[_0x997b('0x16')](0x1f4)[_0x997b('0x28')](_0xef21ae);});_0x170487['on'](_0x997b('0x5e'),function(_0x30827d){_0x2d3a94['original_duration']=isNaN(_0x30827d[_0x997b('0x5f')])?null:_0x30827d['duration']*0x3e8;_0x2d3a94[_0x997b('0x60')]=isNaN(_0x30827d[_0x997b('0x61')])?null:_0x30827d[_0x997b('0x61')];_0x2d3a94[_0x997b('0x62')]=isNaN(_0x30827d[_0x997b('0x63')])?null:_0x30827d[_0x997b('0x63')];_0x2d3a94[_0x997b('0x64')]=isNaN(_0x30827d['bitRate'])?null:_0x30827d[_0x997b('0x65')];_0x2d3a94[_0x997b('0x66')]=isNaN(_0x30827d['sampleRate'])?null:_0x30827d['sampleRate'];});_0x170487['on'](_0x997b('0x67'),function(_0x44c2c9){_0x2d3a94[_0x997b('0x68')]=isNaN(_0x44c2c9[_0x997b('0x5f')])?null:_0x44c2c9[_0x997b('0x5f')]*0x3e8;_0x2d3a94[_0x997b('0x69')]=isNaN(_0x44c2c9[_0x997b('0x61')])?null:_0x44c2c9[_0x997b('0x61')];_0x2d3a94[_0x997b('0x6a')]=isNaN(_0x44c2c9[_0x997b('0x63')])?null:_0x44c2c9[_0x997b('0x63')];_0x2d3a94[_0x997b('0x6b')]=isNaN(_0x44c2c9[_0x997b('0x65')])?null:_0x44c2c9[_0x997b('0x65')];_0x2d3a94[_0x997b('0x6c')]=isNaN(_0x44c2c9['sampleRate'])?null:_0x44c2c9['sampleRate'];});_0x170487['on'](_0x997b('0x17'),function(){fs['chmodSync'](_0x41229b,parseInt(_0x997b('0x5c'),0x8));return db[_0x997b('0x2a')][_0x997b('0x50')](_0x2d3a94)[_0x997b('0x22')](function(_0x19df7e){var _0x3a072e={'role':_0x2eba2b['body'][_0x997b('0x6d')],'userProfileId':_0x2eba2b[_0x997b('0x6e')][_0x997b('0x6f')]};if(!_0x3a072e)throw new Error(_0x997b('0x70'));if(_0x3a072e[_0x997b('0x6d')]===_0x997b('0x71')){var _0x4dcafd=_0x19df7e['get']({'plain':!![]});return db[_0x997b('0x72')][_0x997b('0x42')]({'where':{'name':_0x997b('0x25'),'userProfileId':_0x3a072e[_0x997b('0x6f')]},'raw':!![]})[_0x997b('0x22')](function(_0x349ecc){if(_0x349ecc&&_0x349ecc[_0x997b('0x73')]===0x0){return db[_0x997b('0x74')][_0x997b('0x50')]({'name':_0x4dcafd[_0x997b('0x27')],'resourceId':_0x4dcafd['id'],'type':_0x349ecc[_0x997b('0x27')],'sectionId':_0x349ecc['id']},{})['then'](function(){return _0x19df7e;});}else{return _0x19df7e;}})[_0x997b('0x4f')](function(_0x39a23a){logger[_0x997b('0x26')](_0x997b('0x75'),_0x39a23a);throw _0x39a23a;});}return _0x19df7e;})[_0x997b('0x22')](respondWithResult(_0x220d2e,null))[_0x997b('0x4f')](handleError(_0x220d2e,null));});_0x170487[_0x997b('0x76')]();}catch(_0x3adac7){_0x220d2e[_0x997b('0x16')](0x1f4)[_0x997b('0x28')](_0x3adac7);}};exports[_0x997b('0x21')]=function(_0x5a2f88,_0x2db9a6,_0xaff1bc){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5a2f88[_0x997b('0x77')]['id']}})[_0x997b('0x22')](handleEntityNotFound(_0x2db9a6,null))[_0x997b('0x22')](saveUpdates(_[_0x997b('0x78')](_0x5a2f88[_0x997b('0x6e')],[_0x997b('0x27'),_0x997b('0x79')]),null))[_0x997b('0x22')](respondWithResult(_0x2db9a6,null))[_0x997b('0x4f')](handleError(_0x2db9a6,null));};exports[_0x997b('0x7a')]=function(_0x5e5629,_0x16f6d9,_0x5675b7){return db[_0x997b('0x2a')][_0x997b('0x42')]({'where':{'id':_0x5e5629[_0x997b('0x77')]['id']}})['then'](function(_0x20c4d7){if(_0x20c4d7){return _0x20c4d7[_0x997b('0x23')]();}})[_0x997b('0x22')](function(_0x512e02){var _0x483552=path[_0x997b('0x46')](config[_0x997b('0x47')],'server/files/sounds/original',util[_0x997b('0x4e')](_0x997b('0x4d'),_0x512e02[_0x997b('0x49')],_0x512e02['original_format']));var _0x467dbd=path['join'](config[_0x997b('0x47')],_0x997b('0x48'),util[_0x997b('0x4e')](_0x997b('0x4d'),_0x512e02[_0x997b('0x49')],_0x512e02[_0x997b('0x44')]));fs[_0x997b('0x7b')](_0x483552);fs['unlinkSync'](_0x467dbd);return _0x512e02;})[_0x997b('0x22')](function(_0x3d20da){if(_0x3d20da){return _0x16f6d9[_0x997b('0x16')](0xcc)[_0x997b('0x17')]();}})['then'](handleEntityNotFound(_0x16f6d9,null))[_0x997b('0x4f')](handleError(_0x16f6d9,null));};
\ No newline at end of file
+var _0x6181=['options','includeAll','rows','catch','show','params','keys','include','merge','download','find','save_name','converted_format','existsSync','join','root','Sequelize','ValidationError','server/files/sounds/converted','format','%s.%s','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','chmodSync','0777','transcode','unlinkSync','src','duration','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','end','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','update','description','original_format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Sounds','UserProfileResource','error','stack','name','send','index','map','Sound','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL'];(function(_0x59887e,_0x31d750){var _0x1d3936=function(_0x149d39){while(--_0x149d39){_0x59887e['push'](_0x59887e['shift']());}};_0x1d3936(++_0x31d750);}(_0x6181,0x1b6));var _0x1618=function(_0x173c92,_0x1215b7){_0x173c92=_0x173c92-0x0;var _0x5b1687=_0x6181[_0x173c92];return _0x5b1687;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1618('0x0'));var zipdir=require(_0x1618('0x1'));var jsonpatch=require(_0x1618('0x2'));var rp=require(_0x1618('0x3'));var moment=require(_0x1618('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1618('0x5'));var util=require(_0x1618('0x6'));var path=require(_0x1618('0x7'));var sox=require(_0x1618('0x8'));var csv=require(_0x1618('0x9'));var ejs=require(_0x1618('0xa'));var fs=require('fs');var fs_extra=require(_0x1618('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1618('0xc'));var deskjs=require(_0x1618('0xd'));var toCsv=require(_0x1618('0x9'));var querystring=require(_0x1618('0xe'));var Papa=require(_0x1618('0xf'));var Redis=require(_0x1618('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1618('0x11'));var as=require(_0x1618('0x12'));var hardwareService=require(_0x1618('0x13'));var logger=require('../../config/logger')(_0x1618('0x14'));var utils=require(_0x1618('0x15'));var config=require(_0x1618('0x16'));var licenseUtil=require(_0x1618('0x17'));var db=require(_0x1618('0x18'))['db'];function respondWithStatusCode(_0x561bbc,_0x30fefa){_0x30fefa=_0x30fefa||0xcc;return function(_0x53f0be){if(_0x53f0be){return _0x561bbc[_0x1618('0x19')](_0x30fefa);}return _0x561bbc[_0x1618('0x1a')](_0x30fefa)['end']();};}function respondWithResult(_0x5c6a83,_0x4b8d31){_0x4b8d31=_0x4b8d31||0xc8;return function(_0x9b0bf8){if(_0x9b0bf8){return _0x5c6a83[_0x1618('0x1a')](_0x4b8d31)[_0x1618('0x1b')](_0x9b0bf8);}};}function respondWithFilteredResult(_0x5c1443,_0x4e202d){return function(_0x4e43a0){if(_0x4e43a0){var _0x23e6ee=typeof _0x4e202d[_0x1618('0x1c')]===_0x1618('0x1d')&&typeof _0x4e202d[_0x1618('0x1e')]===_0x1618('0x1d');var _0x1392b2=_0x4e43a0[_0x1618('0x1f')];var _0x3b3ecc=_0x23e6ee?0x0:_0x4e202d['offset'];var _0x144a84=_0x23e6ee?_0x4e43a0[_0x1618('0x1f')]:_0x4e202d[_0x1618('0x1c')]+_0x4e202d['limit'];var _0x4385a2;if(_0x144a84>=_0x1392b2){_0x144a84=_0x1392b2;_0x4385a2=0xc8;}else{_0x4385a2=0xce;}_0x5c1443[_0x1618('0x1a')](_0x4385a2);return _0x5c1443[_0x1618('0x20')](_0x1618('0x21'),_0x3b3ecc+'-'+_0x144a84+'/'+_0x1392b2)[_0x1618('0x1b')](_0x4e43a0);}return null;};}function patchUpdates(_0x3f5eeb){return function(_0x96fb16){try{jsonpatch[_0x1618('0x22')](_0x96fb16,_0x3f5eeb,!![]);}catch(_0x1838c7){return BPromise[_0x1618('0x23')](_0x1838c7);}return _0x96fb16[_0x1618('0x24')]();};}function saveUpdates(_0x3a16d2,_0x10d257){return function(_0x2878a7){if(_0x2878a7){return _0x2878a7['update'](_0x3a16d2)[_0x1618('0x25')](function(_0xf61c66){return _0xf61c66;});}return null;};}function removeEntity(_0x37c749,_0x1d4d00){return function(_0x218ddc){if(_0x218ddc){return _0x218ddc[_0x1618('0x26')]()[_0x1618('0x25')](function(){var _0x1c11b7=_0x218ddc[_0x1618('0x27')]({'plain':!![]});var _0x3c08f0=_0x1618('0x28');return db[_0x1618('0x29')][_0x1618('0x26')]({'where':{'type':_0x3c08f0,'resourceId':_0x1c11b7['id']}})[_0x1618('0x25')](function(){return _0x218ddc;});})[_0x1618('0x25')](function(){_0x37c749[_0x1618('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23a4d2,_0x2bb71b){return function(_0x1a51b9){if(!_0x1a51b9){_0x23a4d2['sendStatus'](0x194);}return _0x1a51b9;};}function handleError(_0x4b3adf,_0x3b7c80){_0x3b7c80=_0x3b7c80||0x1f4;return function(_0x17e4c2){logger[_0x1618('0x2a')](_0x17e4c2[_0x1618('0x2b')]);if(_0x17e4c2[_0x1618('0x2c')]){delete _0x17e4c2['name'];}_0x4b3adf[_0x1618('0x1a')](_0x3b7c80)[_0x1618('0x2d')](_0x17e4c2);};}exports[_0x1618('0x2e')]=function(_0x112b30,_0x3b638b){var _0x2babc0={},_0x288904={},_0x5c4b76={'count':0x0,'rows':[]};var _0x189345=_[_0x1618('0x2f')](db[_0x1618('0x30')]['rawAttributes'],function(_0x1c796b){return{'name':_0x1c796b[_0x1618('0x31')],'type':_0x1c796b['type'][_0x1618('0x32')]};});_0x288904[_0x1618('0x33')]=_[_0x1618('0x2f')](_0x189345,_0x1618('0x2c'));_0x288904[_0x1618('0x34')]=_['keys'](_0x112b30['query']);_0x288904[_0x1618('0x35')]=_[_0x1618('0x36')](_0x288904['model'],_0x288904[_0x1618('0x34')]);_0x2babc0[_0x1618('0x37')]=_['intersection'](_0x288904[_0x1618('0x33')],qs[_0x1618('0x38')](_0x112b30[_0x1618('0x34')][_0x1618('0x38')]));_0x2babc0[_0x1618('0x37')]=_0x2babc0[_0x1618('0x37')][_0x1618('0x39')]?_0x2babc0[_0x1618('0x37')]:_0x288904[_0x1618('0x33')];if(!_0x112b30['query'][_0x1618('0x3a')](_0x1618('0x3b'))){_0x2babc0[_0x1618('0x1e')]=qs[_0x1618('0x1e')](_0x112b30[_0x1618('0x34')][_0x1618('0x1e')]);_0x2babc0[_0x1618('0x1c')]=qs[_0x1618('0x1c')](_0x112b30[_0x1618('0x34')][_0x1618('0x1c')]);}_0x2babc0['order']=qs[_0x1618('0x3c')](_0x112b30[_0x1618('0x34')]['sort']);_0x2babc0[_0x1618('0x3d')]=qs['filters'](_[_0x1618('0x3e')](_0x112b30[_0x1618('0x34')],_0x288904[_0x1618('0x35')]),_0x189345);if(_0x112b30['query'][_0x1618('0x3f')]){_0x2babc0['where']=_['merge'](_0x2babc0[_0x1618('0x3d')],{'$or':_[_0x1618('0x2f')](_0x189345,function(_0x1e9f65){if(_0x1e9f65[_0x1618('0x40')]!==_0x1618('0x41')){var _0xab4682={};_0xab4682[_0x1e9f65[_0x1618('0x2c')]]={'$like':'%'+_0x112b30['query']['filter']+'%'};return _0xab4682;}})});}_0x2babc0=_['merge']({},_0x2babc0,_0x112b30[_0x1618('0x42')]);var _0x2fe1d8={'where':_0x2babc0[_0x1618('0x3d')]};return db['Sound']['count'](_0x2fe1d8)['then'](function(_0x3d016d){_0x5c4b76['count']=_0x3d016d;if(_0x112b30[_0x1618('0x34')][_0x1618('0x43')]){_0x2babc0['include']=[{'all':!![]}];}return db[_0x1618('0x30')]['findAll'](_0x2babc0);})[_0x1618('0x25')](function(_0x1b3e7a){_0x5c4b76[_0x1618('0x44')]=_0x1b3e7a;return _0x5c4b76;})[_0x1618('0x25')](respondWithFilteredResult(_0x3b638b,_0x2babc0))[_0x1618('0x45')](handleError(_0x3b638b,null));};exports[_0x1618('0x46')]=function(_0x4983ad,_0x1452b8){var _0x4ef67b={'raw':!![],'where':{'id':_0x4983ad[_0x1618('0x47')]['id']}},_0x5a2ae0={};_0x5a2ae0[_0x1618('0x33')]=_[_0x1618('0x48')](db[_0x1618('0x30')]['rawAttributes']);_0x5a2ae0[_0x1618('0x34')]=_[_0x1618('0x48')](_0x4983ad['query']);_0x5a2ae0[_0x1618('0x35')]=_[_0x1618('0x36')](_0x5a2ae0[_0x1618('0x33')],_0x5a2ae0[_0x1618('0x34')]);_0x4ef67b[_0x1618('0x37')]=_[_0x1618('0x36')](_0x5a2ae0[_0x1618('0x33')],qs[_0x1618('0x38')](_0x4983ad[_0x1618('0x34')][_0x1618('0x38')]));_0x4ef67b['attributes']=_0x4ef67b['attributes']['length']?_0x4ef67b[_0x1618('0x37')]:_0x5a2ae0[_0x1618('0x33')];if(_0x4983ad[_0x1618('0x34')][_0x1618('0x43')]){_0x4ef67b[_0x1618('0x49')]=[{'all':!![]}];}_0x4ef67b=_[_0x1618('0x4a')]({},_0x4ef67b,_0x4983ad[_0x1618('0x42')]);return db[_0x1618('0x30')]['find'](_0x4ef67b)[_0x1618('0x25')](handleEntityNotFound(_0x1452b8,null))[_0x1618('0x25')](respondWithResult(_0x1452b8,null))[_0x1618('0x45')](handleError(_0x1452b8,null));};exports[_0x1618('0x4b')]=function(_0x5ad08f,_0x433093,_0x117b70){return db['Sound'][_0x1618('0x4c')]({'where':{'id':_0x5ad08f['params']['id']},'attributes':[_0x1618('0x2c'),_0x1618('0x4d'),_0x1618('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x433093,null))[_0x1618('0x25')](function(_0x455cbc){if(_0x455cbc){if(!fs[_0x1618('0x4f')](path[_0x1618('0x50')](config[_0x1618('0x51')],'server/files/sounds/converted',_0x455cbc['save_name']+'.'+_0x455cbc[_0x1618('0x4e')]))){throw new db[(_0x1618('0x52'))][(_0x1618('0x53'))]('Sound\x20not\x20found');}return _0x433093['download'](path[_0x1618('0x50')](config['root'],_0x1618('0x54'),util[_0x1618('0x55')](_0x1618('0x56'),_0x455cbc[_0x1618('0x4d')],_0x455cbc[_0x1618('0x4e')])),util['format'](_0x1618('0x56'),_0x455cbc['name'],_0x455cbc[_0x1618('0x4e')]));}return null;})[_0x1618('0x45')](handleError(_0x433093,null));};exports[_0x1618('0x57')]=function(_0x303b4b,_0x11e576,_0x35c537){var _0x333d21={'name':path[_0x1618('0x58')](_0x303b4b[_0x1618('0x59')][_0x1618('0x5a')],path[_0x1618('0x5b')](_0x303b4b[_0x1618('0x59')][_0x1618('0x5a')])),'save_name':path['basename'](_0x303b4b[_0x1618('0x59')][_0x1618('0x5c')],path['extname'](_0x303b4b[_0x1618('0x59')]['filename'])),'original_format':path[_0x1618('0x5b')](_0x303b4b['file'][_0x1618('0x5a')])[_0x1618('0x5d')](0x1),'converted_format':_0x1618('0x5e')};var _0x22572e=path[_0x1618('0x50')](config[_0x1618('0x51')],_0x1618('0x5f'),_0x303b4b[_0x1618('0x59')][_0x1618('0x5c')]);var _0x40e292=path[_0x1618('0x50')](config['root'],'server/files/sounds/converted',util[_0x1618('0x55')]('%s.%s',path[_0x1618('0x58')](_0x303b4b['file'][_0x1618('0x5c')],path['extname'](_0x303b4b[_0x1618('0x59')][_0x1618('0x5c')])),_0x333d21['converted_format']));logger['info']('Sound\x20upload\x20filepath:\x20%s',_0x22572e);logger['info']('Sound\x20upload\x20destination:\x20%s',_0x40e292);try{fs[_0x1618('0x60')](_0x22572e,parseInt(_0x1618('0x61'),0x8));var _0x1c878f=sox[_0x1618('0x62')](_0x22572e,_0x40e292,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c878f['on'](_0x1618('0x2a'),function(_0x1dd415){fs[_0x1618('0x63')](_0x22572e);_0x11e576[_0x1618('0x1a')](0x1f4)[_0x1618('0x2d')](_0x1dd415);});_0x1c878f['on'](_0x1618('0x64'),function(_0x56fcc4){_0x333d21['original_duration']=isNaN(_0x56fcc4[_0x1618('0x65')])?null:_0x56fcc4[_0x1618('0x65')]*0x3e8;_0x333d21['original_sampleCount']=isNaN(_0x56fcc4[_0x1618('0x66')])?null:_0x56fcc4['sampleCount'];_0x333d21[_0x1618('0x67')]=isNaN(_0x56fcc4['channelCount'])?null:_0x56fcc4[_0x1618('0x68')];_0x333d21['original_bitRate']=isNaN(_0x56fcc4[_0x1618('0x69')])?null:_0x56fcc4['bitRate'];_0x333d21[_0x1618('0x6a')]=isNaN(_0x56fcc4['sampleRate'])?null:_0x56fcc4[_0x1618('0x6b')];});_0x1c878f['on'](_0x1618('0x6c'),function(_0x2feed2){_0x333d21[_0x1618('0x6d')]=isNaN(_0x2feed2[_0x1618('0x65')])?null:_0x2feed2['duration']*0x3e8;_0x333d21[_0x1618('0x6e')]=isNaN(_0x2feed2['sampleCount'])?null:_0x2feed2[_0x1618('0x66')];_0x333d21[_0x1618('0x6f')]=isNaN(_0x2feed2[_0x1618('0x68')])?null:_0x2feed2['channelCount'];_0x333d21[_0x1618('0x70')]=isNaN(_0x2feed2[_0x1618('0x69')])?null:_0x2feed2[_0x1618('0x69')];_0x333d21[_0x1618('0x71')]=isNaN(_0x2feed2[_0x1618('0x6b')])?null:_0x2feed2[_0x1618('0x6b')];});_0x1c878f['on'](_0x1618('0x72'),function(){fs[_0x1618('0x60')](_0x40e292,parseInt(_0x1618('0x61'),0x8));return db['Sound'][_0x1618('0x57')](_0x333d21)[_0x1618('0x25')](function(_0x144da7){var _0x1b4408={'role':_0x303b4b['body'][_0x1618('0x73')],'userProfileId':_0x303b4b[_0x1618('0x74')][_0x1618('0x75')]};if(!_0x1b4408)throw new Error(_0x1618('0x76'));if(_0x1b4408[_0x1618('0x73')]==='user'){var _0x2b8f46=_0x144da7[_0x1618('0x27')]({'plain':!![]});return db[_0x1618('0x77')][_0x1618('0x4c')]({'where':{'name':_0x1618('0x28'),'userProfileId':_0x1b4408[_0x1618('0x75')]},'raw':!![]})['then'](function(_0x1362ca){if(_0x1362ca&&_0x1362ca[_0x1618('0x78')]===0x0){return db['UserProfileResource'][_0x1618('0x57')]({'name':_0x2b8f46['name'],'resourceId':_0x2b8f46['id'],'type':_0x1362ca['name'],'sectionId':_0x1362ca['id']},{})[_0x1618('0x25')](function(){return _0x144da7;});}else{return _0x144da7;}})['catch'](function(_0x1d7206){logger[_0x1618('0x2a')](_0x1618('0x79'),_0x1d7206);throw _0x1d7206;});}return _0x144da7;})[_0x1618('0x25')](respondWithResult(_0x11e576,null))[_0x1618('0x45')](handleError(_0x11e576,null));});_0x1c878f[_0x1618('0x7a')]();}catch(_0x9ac1d7){_0x11e576['status'](0x1f4)[_0x1618('0x2d')](_0x9ac1d7);}};exports[_0x1618('0x7b')]=function(_0x345858,_0x309cc5,_0x20157f){return db[_0x1618('0x30')][_0x1618('0x4c')]({'where':{'id':_0x345858[_0x1618('0x47')]['id']}})[_0x1618('0x25')](handleEntityNotFound(_0x309cc5,null))[_0x1618('0x25')](saveUpdates(_[_0x1618('0x3e')](_0x345858['body'],[_0x1618('0x2c'),_0x1618('0x7c')]),null))[_0x1618('0x25')](respondWithResult(_0x309cc5,null))['catch'](handleError(_0x309cc5,null));};exports['delete']=function(_0x521aac,_0x3fa089,_0x2b134){return db[_0x1618('0x30')][_0x1618('0x4c')]({'where':{'id':_0x521aac[_0x1618('0x47')]['id']}})[_0x1618('0x25')](function(_0x3de2b9){if(_0x3de2b9){return _0x3de2b9['destroy']();}})[_0x1618('0x25')](function(_0x45f335){var _0x35c486=path[_0x1618('0x50')](config[_0x1618('0x51')],'server/files/sounds/original',util[_0x1618('0x55')]('%s.%s',_0x45f335[_0x1618('0x4d')],_0x45f335[_0x1618('0x7d')]));var _0x3c80a5=path[_0x1618('0x50')](config[_0x1618('0x51')],_0x1618('0x54'),util[_0x1618('0x55')](_0x1618('0x56'),_0x45f335['save_name'],_0x45f335['converted_format']));fs[_0x1618('0x63')](_0x35c486);fs['unlinkSync'](_0x3c80a5);return _0x45f335;})[_0x1618('0x25')](function(_0x301627){if(_0x301627){return _0x3fa089[_0x1618('0x1a')](0xcc)['end']();}})['then'](handleEntityNotFound(_0x3fa089,null))['catch'](handleError(_0x3fa089,null));};
\ No newline at end of file
index c5ff98e..aeaa237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x105b=['tools_sounds','lodash','moment','request-promise','rimraf','../../config/environment','./sound.attributes','exports','define','Sound'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0x105b,0xdd));var _0xb105=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x105b[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xb105('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb105('0x1'));var BPromise=require('bluebird');var rp=require(_0xb105('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb105('0x3'));var config=require(_0xb105('0x4'));var attributes=require(_0xb105('0x5'));module[_0xb105('0x6')]=function(_0x2e4a7c,_0x2622ca){return _0x2e4a7c[_0xb105('0x7')](_0xb105('0x8'),attributes,{'tableName':_0xb105('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9131=['util','api','moment','bluebird','request-promise','path','./sound.attributes','Sound','tools_sounds'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9131,0x7e));var _0x1913=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9131[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1913('0x0'));var logger=require('../../config/logger')(_0x1913('0x1'));var moment=require(_0x1913('0x2'));var BPromise=require(_0x1913('0x3'));var rp=require(_0x1913('0x4'));var fs=require('fs');var path=require(_0x1913('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1913('0x6'));module['exports']=function(_0x435e80,_0x4c3d62){return _0x435e80['define'](_0x1913('0x7'),attributes,{'tableName':_0x1913('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82f4ec0..2c97b23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4bd=['options','raw','where','attributes','include','map','model','ShowSound','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','catch','Sound','find'];(function(_0x4d6f3a,_0x534b2e){var _0x175e17=function(_0x25741c){while(--_0x25741c){_0x4d6f3a['push'](_0x4d6f3a['shift']());}};_0x175e17(++_0x534b2e);}(_0xa4bd,0x1d0));var _0xda4b=function(_0x4c4174,_0x3d9e4b){_0x4c4174=_0x4c4174-0x0;var _0x166aae=_0xa4bd[_0x4c4174];return _0x166aae;};'use strict';var _=require(_0xda4b('0x0'));var util=require(_0xda4b('0x1'));var moment=require(_0xda4b('0x2'));var BPromise=require(_0xda4b('0x3'));var rs=require(_0xda4b('0x4'));var fs=require('fs');var Redis=require(_0xda4b('0x5'));var db=require(_0xda4b('0x6'))['db'];var utils=require(_0xda4b('0x7'));var logger=require(_0xda4b('0x8'))(_0xda4b('0x9'));var config=require(_0xda4b('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xda4b('0xb')][_0xda4b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x117246,_0x3c2264,_0x433e22){return new BPromise(function(_0x199959,_0x50953d){return client[_0xda4b('0xd')](_0x117246,_0x433e22)[_0xda4b('0xe')](function(_0x3cf150){logger['info'](_0xda4b('0xf'),_0x3c2264,'request\x20sent');logger[_0xda4b('0x10')](_0xda4b('0x11'),_0x3c2264,'request\x20sent',JSON['stringify'](_0x3cf150));if(_0x3cf150[_0xda4b('0x12')]){if(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x13')]===0x1f4){logger[_0xda4b('0x12')](_0xda4b('0xf'),_0x3c2264,_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);return _0x50953d(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);}logger[_0xda4b('0x12')](_0xda4b('0xf'),_0x3c2264,_0x3cf150[_0xda4b('0x12')]['message']);return _0x199959(_0x3cf150[_0xda4b('0x12')][_0xda4b('0x14')]);}else{logger[_0xda4b('0x15')](_0xda4b('0xf'),_0x3c2264,_0xda4b('0x16'));_0x199959(_0x3cf150['result'][_0xda4b('0x14')]);}})[_0xda4b('0x17')](function(_0x351b9f){logger['error'](_0xda4b('0xf'),_0x3c2264,_0x351b9f);_0x50953d(_0x351b9f);});});}exports['ShowSound']=function(_0x407e1b){var _0x4e7f78=this;return new Promise(function(_0x49131a,_0x262ab3){return db[_0xda4b('0x18')][_0xda4b('0x19')]({'raw':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1b')]===undefined?!![]:![]:!![],'where':_0x407e1b['options']?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1c')]||null:null,'attributes':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1d')]||null:null,'include':_0x407e1b[_0xda4b('0x1a')]?_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1e')]?_[_0xda4b('0x1f')](_0x407e1b[_0xda4b('0x1a')][_0xda4b('0x1e')],function(_0x168e2a){return{'model':db[_0x168e2a[_0xda4b('0x20')]],'as':_0x168e2a['as'],'attributes':_0x168e2a['attributes'],'include':_0x168e2a[_0xda4b('0x1e')]?_[_0xda4b('0x1f')](_0x168e2a['include'],function(_0x3e48a6){return{'model':db[_0x3e48a6[_0xda4b('0x20')]],'as':_0x3e48a6['as'],'attributes':_0x3e48a6['attributes'],'include':_0x3e48a6[_0xda4b('0x1e')]?_['map'](_0x3e48a6[_0xda4b('0x1e')],function(_0x35f5e8){return{'model':db[_0x35f5e8[_0xda4b('0x20')]],'as':_0x35f5e8['as'],'attributes':_0x35f5e8['attributes']};}):[]};}):[]};}):[]:[]})[_0xda4b('0xe')](function(_0x5dd4cc){logger[_0xda4b('0x15')](_0xda4b('0x21'),_0x407e1b);logger[_0xda4b('0x10')](_0xda4b('0x21'),_0x407e1b,JSON[_0xda4b('0x22')](_0x5dd4cc));_0x49131a(_0x5dd4cc);})[_0xda4b('0x17')](function(_0x4a91fc){logger[_0xda4b('0x12')](_0xda4b('0x21'),_0x4a91fc['message'],_0x407e1b);_0x262ab3(_0x4e7f78[_0xda4b('0x12')](0x1f4,_0x4a91fc[_0xda4b('0x14')]));});});};
\ No newline at end of file
+var _0xe3f8=['util','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','Sound','options','where','attributes','map','include','model','then','ShowSound','lodash'];(function(_0x141e03,_0x18340e){var _0x2074e3=function(_0x2b7ece){while(--_0x2b7ece){_0x141e03['push'](_0x141e03['shift']());}};_0x2074e3(++_0x18340e);}(_0xe3f8,0x1b2));var _0x8e3f=function(_0x4d4731,_0x4a07a2){_0x4d4731=_0x4d4731-0x0;var _0x43a178=_0xe3f8[_0x4d4731];return _0x43a178;};'use strict';var _=require(_0x8e3f('0x0'));var util=require(_0x8e3f('0x1'));var moment=require('moment');var BPromise=require(_0x8e3f('0x2'));var rs=require(_0x8e3f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8e3f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e3f('0x5'))('rpc');var config=require(_0x8e3f('0x6'));var jayson=require(_0x8e3f('0x7'));var client=jayson['client'][_0x8e3f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a7988,_0x338d5c,_0x186a6f){return new BPromise(function(_0x19c03e,_0x26241d){return client[_0x8e3f('0x9')](_0x2a7988,_0x186a6f)['then'](function(_0xfedb60){logger['info'](_0x8e3f('0xa'),_0x338d5c,_0x8e3f('0xb'));logger[_0x8e3f('0xc')](_0x8e3f('0xd'),_0x338d5c,_0x8e3f('0xb'),JSON[_0x8e3f('0xe')](_0xfedb60));if(_0xfedb60[_0x8e3f('0xf')]){if(_0xfedb60[_0x8e3f('0xf')][_0x8e3f('0x10')]===0x1f4){logger[_0x8e3f('0xf')](_0x8e3f('0xa'),_0x338d5c,_0xfedb60['error'][_0x8e3f('0x11')]);return _0x26241d(_0xfedb60[_0x8e3f('0xf')][_0x8e3f('0x11')]);}logger[_0x8e3f('0xf')]('Sound,\x20%s,\x20%s',_0x338d5c,_0xfedb60['error'][_0x8e3f('0x11')]);return _0x19c03e(_0xfedb60['error'][_0x8e3f('0x11')]);}else{logger[_0x8e3f('0x12')](_0x8e3f('0xa'),_0x338d5c,'request\x20sent');_0x19c03e(_0xfedb60['result'][_0x8e3f('0x11')]);}})[_0x8e3f('0x13')](function(_0x4f87c0){logger[_0x8e3f('0xf')]('Sound,\x20%s,\x20%s',_0x338d5c,_0x4f87c0);_0x26241d(_0x4f87c0);});});}exports['ShowSound']=function(_0x6e8782){var _0x35fcf4=this;return new Promise(function(_0x4818e1,_0x89e666){return db[_0x8e3f('0x14')]['find']({'raw':_0x6e8782['options']?_0x6e8782['options']['raw']===undefined?!![]:![]:!![],'where':_0x6e8782[_0x8e3f('0x15')]?_0x6e8782[_0x8e3f('0x15')][_0x8e3f('0x16')]||null:null,'attributes':_0x6e8782[_0x8e3f('0x15')]?_0x6e8782[_0x8e3f('0x15')][_0x8e3f('0x17')]||null:null,'include':_0x6e8782[_0x8e3f('0x15')]?_0x6e8782['options']['include']?_[_0x8e3f('0x18')](_0x6e8782['options'][_0x8e3f('0x19')],function(_0x24d255){return{'model':db[_0x24d255[_0x8e3f('0x1a')]],'as':_0x24d255['as'],'attributes':_0x24d255[_0x8e3f('0x17')],'include':_0x24d255[_0x8e3f('0x19')]?_[_0x8e3f('0x18')](_0x24d255[_0x8e3f('0x19')],function(_0x2e6afd){return{'model':db[_0x2e6afd[_0x8e3f('0x1a')]],'as':_0x2e6afd['as'],'attributes':_0x2e6afd[_0x8e3f('0x17')],'include':_0x2e6afd[_0x8e3f('0x19')]?_[_0x8e3f('0x18')](_0x2e6afd['include'],function(_0x422616){return{'model':db[_0x422616[_0x8e3f('0x1a')]],'as':_0x422616['as'],'attributes':_0x422616['attributes']};}):[]};}):[]};}):[]:[]})[_0x8e3f('0x1b')](function(_0xab748c){logger[_0x8e3f('0x12')](_0x8e3f('0x1c'),_0x6e8782);logger['debug']('ShowSound',_0x6e8782,JSON[_0x8e3f('0xe')](_0xab748c));_0x4818e1(_0xab748c);})[_0x8e3f('0x13')](function(_0x1919e5){logger[_0x8e3f('0xf')](_0x8e3f('0x1c'),_0x1919e5[_0x8e3f('0x11')],_0x6e8782);_0x89e666(_0x35fcf4[_0x8e3f('0xf')](0x1f4,_0x1919e5[_0x8e3f('0x11')]));});});};
\ No newline at end of file
index e90a79e..48fe4a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['./squareMessage.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(_0x308944,_0x1c462e){var _0x2bf805=function(_0x1e6564){while(--_0x1e6564){_0x308944['push'](_0x308944['shift']());}};_0x2bf805(++_0x1c462e);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5581ba,_0x268887){_0x5581ba=_0x5581ba-0x0;var _0x1e927f=_0x0b0e[_0x5581ba];return _0x1e927f;};'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 _0x5eb8=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','path','connect-timeout','express','Router'];(function(_0x15afca,_0x56adbd){var _0x462454=function(_0x295d07){while(--_0x295d07){_0x15afca['push'](_0x15afca['shift']());}};_0x462454(++_0x56adbd);}(_0x5eb8,0xb0));var _0x85eb=function(_0x1cdb2d,_0x8f1f76){_0x1cdb2d=_0x1cdb2d-0x0;var _0x4dafe3=_0x5eb8[_0x1cdb2d];return _0x4dafe3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x85eb('0x0'));var timeout=require(_0x85eb('0x1'));var express=require(_0x85eb('0x2'));var router=express[_0x85eb('0x3')]();var fs_extra=require(_0x85eb('0x4'));var auth=require(_0x85eb('0x5'));var interaction=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var controller=require(_0x85eb('0x8'));router[_0x85eb('0x9')]('/',auth[_0x85eb('0xa')](),controller[_0x85eb('0xb')]);router['get'](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xd')]);router['post']('/',auth[_0x85eb('0xa')](),controller['create']);router[_0x85eb('0xe')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller[_0x85eb('0xf')]);router[_0x85eb('0x10')](_0x85eb('0xc'),auth[_0x85eb('0xa')](),controller['destroy']);module[_0x85eb('0x11')]=router;
\ No newline at end of file
index 0e8064a..678623b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd31e=['out','sequelize','STRING','medium','ENUM'];(function(_0x2933cc,_0x315416){var _0x351f85=function(_0x2403d2){while(--_0x2403d2){_0x2933cc['push'](_0x2933cc['shift']());}};_0x351f85(++_0x315416);}(_0xd31e,0x169));var _0xed31=function(_0xa6d191,_0x4d2f54){_0xa6d191=_0xa6d191-0x0;var _0x4f2129=_0xd31e[_0xa6d191];return _0x4f2129;};'use strict';var Sequelize=require(_0xed31('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xed31('0x1')]},'body':{'type':Sequelize['TEXT'](_0xed31('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xed31('0x3')]('in',_0xed31('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0xed31('0x1')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xf049=['out','sequelize','STRING','TEXT','medium','ENUM'];(function(_0x480bc8,_0x1fac40){var _0x28c245=function(_0x22a049){while(--_0x22a049){_0x480bc8['push'](_0x480bc8['shift']());}};_0x28c245(++_0x1fac40);}(_0xf049,0x1d5));var _0x9f04=function(_0x513cb4,_0x5066ea){_0x513cb4=_0x513cb4-0x0;var _0x53e78f=_0xf049[_0x513cb4];return _0x53e78f;};'use strict';var Sequelize=require(_0x9f04('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x9f04('0x1')]},'body':{'type':Sequelize[_0x9f04('0x2')](_0x9f04('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x9f04('0x4')]('in','out'),'defaultValue':_0x9f04('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x9f04('0x1')]},'providerResponse':{'type':Sequelize[_0x9f04('0x2')]}};
\ No newline at end of file
index 11004e7..e795be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d21=['end','offset','undefined','limit','count','set','Content-Range','json','reject','update','destroy','then','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status'];(function(_0x45b7f6,_0x992199){var _0x3e493a=function(_0x3949a8){while(--_0x3949a8){_0x45b7f6['push'](_0x45b7f6['shift']());}};_0x3e493a(++_0x992199);}(_0x1d21,0x158));var _0x11d2=function(_0x623e7,_0x1bef7d){_0x623e7=_0x623e7-0x0;var _0x121131=_0x1d21[_0x623e7];return _0x121131;};'use strict';var emlformat=require(_0x11d2('0x0'));var rimraf=require(_0x11d2('0x1'));var zipdir=require(_0x11d2('0x2'));var jsonpatch=require(_0x11d2('0x3'));var rp=require('request-promise');var moment=require(_0x11d2('0x4'));var BPromise=require(_0x11d2('0x5'));var Mustache=require(_0x11d2('0x6'));var util=require(_0x11d2('0x7'));var path=require('path');var sox=require(_0x11d2('0x8'));var csv=require(_0x11d2('0x9'));var ejs=require(_0x11d2('0xa'));var fs=require('fs');var fs_extra=require(_0x11d2('0xb'));var _=require(_0x11d2('0xc'));var squel=require(_0x11d2('0xd'));var crypto=require(_0x11d2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x11d2('0xf'));var toCsv=require(_0x11d2('0x9'));var querystring=require('querystring');var Papa=require(_0x11d2('0x10'));var Redis=require('ioredis');var authService=require(_0x11d2('0x11'));var qs=require(_0x11d2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x11d2('0x13'));var logger=require(_0x11d2('0x14'))(_0x11d2('0x15'));var utils=require(_0x11d2('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x11d2('0x17'))['db'];function respondWithStatusCode(_0x39d0b1,_0x3ab888){_0x3ab888=_0x3ab888||0xcc;return function(_0x5980c5){if(_0x5980c5){return _0x39d0b1[_0x11d2('0x18')](_0x3ab888);}return _0x39d0b1[_0x11d2('0x19')](_0x3ab888)[_0x11d2('0x1a')]();};}function respondWithResult(_0x234139,_0x56ffe8){_0x56ffe8=_0x56ffe8||0xc8;return function(_0xf78df5){if(_0xf78df5){return _0x234139[_0x11d2('0x19')](_0x56ffe8)['json'](_0xf78df5);}};}function respondWithFilteredResult(_0x31b5a2,_0x111b0c){return function(_0x39ce12){if(_0x39ce12){var _0x364e3e=typeof _0x111b0c[_0x11d2('0x1b')]===_0x11d2('0x1c')&&typeof _0x111b0c[_0x11d2('0x1d')]===_0x11d2('0x1c');var _0x233ecb=_0x39ce12[_0x11d2('0x1e')];var _0x255b1e=_0x364e3e?0x0:_0x111b0c[_0x11d2('0x1b')];var _0x3e0721=_0x364e3e?_0x39ce12['count']:_0x111b0c['offset']+_0x111b0c[_0x11d2('0x1d')];var _0x40e203;if(_0x3e0721>=_0x233ecb){_0x3e0721=_0x233ecb;_0x40e203=0xc8;}else{_0x40e203=0xce;}_0x31b5a2['status'](_0x40e203);return _0x31b5a2[_0x11d2('0x1f')](_0x11d2('0x20'),_0x255b1e+'-'+_0x3e0721+'/'+_0x233ecb)[_0x11d2('0x21')](_0x39ce12);}return null;};}function patchUpdates(_0x1e5078){return function(_0xc7ff13){try{jsonpatch['apply'](_0xc7ff13,_0x1e5078,!![]);}catch(_0x29e5a6){return BPromise[_0x11d2('0x22')](_0x29e5a6);}return _0xc7ff13['save']();};}function saveUpdates(_0x1df642,_0x72595c){return function(_0x2e6ecc){if(_0x2e6ecc){return _0x2e6ecc[_0x11d2('0x23')](_0x1df642)['then'](function(_0xd611df){return _0xd611df;});}return null;};}function removeEntity(_0x246203,_0x34b73d){return function(_0x203a5a){if(_0x203a5a){return _0x203a5a[_0x11d2('0x24')]()[_0x11d2('0x25')](function(){_0x246203[_0x11d2('0x19')](0xcc)[_0x11d2('0x1a')]();});}};}function handleEntityNotFound(_0x5dd42a,_0x203ec4){return function(_0xfecd81){if(!_0xfecd81){_0x5dd42a['sendStatus'](0x194);}return _0xfecd81;};}function handleError(_0x41e9af,_0x51d4b6){_0x51d4b6=_0x51d4b6||0x1f4;return function(_0x5ef7ba){logger[_0x11d2('0x26')](_0x5ef7ba['stack']);if(_0x5ef7ba[_0x11d2('0x27')]){delete _0x5ef7ba[_0x11d2('0x27')];}_0x41e9af[_0x11d2('0x19')](_0x51d4b6)[_0x11d2('0x28')](_0x5ef7ba);};}exports[_0x11d2('0x29')]=function(_0x215c54,_0x143a9d){var _0x2152c5={},_0x4dfc84={},_0x190fd2={'count':0x0,'rows':[]};var _0x1f5a88=_[_0x11d2('0x2a')](db[_0x11d2('0x2b')][_0x11d2('0x2c')],function(_0x28f56b){return{'name':_0x28f56b[_0x11d2('0x2d')],'type':_0x28f56b[_0x11d2('0x2e')][_0x11d2('0x2f')]};});_0x4dfc84[_0x11d2('0x30')]=_[_0x11d2('0x2a')](_0x1f5a88,_0x11d2('0x27'));_0x4dfc84[_0x11d2('0x31')]=_[_0x11d2('0x32')](_0x215c54['query']);_0x4dfc84[_0x11d2('0x33')]=_[_0x11d2('0x34')](_0x4dfc84[_0x11d2('0x30')],_0x4dfc84[_0x11d2('0x31')]);_0x2152c5[_0x11d2('0x35')]=_['intersection'](_0x4dfc84[_0x11d2('0x30')],qs[_0x11d2('0x36')](_0x215c54[_0x11d2('0x31')][_0x11d2('0x36')]));_0x2152c5[_0x11d2('0x35')]=_0x2152c5['attributes']['length']?_0x2152c5[_0x11d2('0x35')]:_0x4dfc84[_0x11d2('0x30')];if(!_0x215c54[_0x11d2('0x31')][_0x11d2('0x37')](_0x11d2('0x38'))){_0x2152c5['limit']=qs['limit'](_0x215c54[_0x11d2('0x31')]['limit']);_0x2152c5[_0x11d2('0x1b')]=qs[_0x11d2('0x1b')](_0x215c54['query']['offset']);}_0x2152c5[_0x11d2('0x39')]=qs[_0x11d2('0x3a')](_0x215c54[_0x11d2('0x31')][_0x11d2('0x3a')]);_0x2152c5['where']=qs[_0x11d2('0x33')](_[_0x11d2('0x3b')](_0x215c54['query'],_0x4dfc84['filters']),_0x1f5a88);if(_0x215c54[_0x11d2('0x31')][_0x11d2('0x3c')]){_0x2152c5[_0x11d2('0x3d')]=_[_0x11d2('0x3e')](_0x2152c5[_0x11d2('0x3d')],{'$or':_[_0x11d2('0x2a')](_0x1f5a88,function(_0x12d024){if(_0x12d024[_0x11d2('0x2e')]!==_0x11d2('0x3f')){var _0x491a99={};_0x491a99[_0x12d024[_0x11d2('0x27')]]={'$like':'%'+_0x215c54[_0x11d2('0x31')][_0x11d2('0x3c')]+'%'};return _0x491a99;}})});}_0x2152c5=_[_0x11d2('0x3e')]({},_0x2152c5,_0x215c54['options']);var _0x1cd5be={'where':_0x2152c5[_0x11d2('0x3d')]};return db[_0x11d2('0x2b')][_0x11d2('0x1e')](_0x1cd5be)[_0x11d2('0x25')](function(_0x4aae7d){_0x190fd2['count']=_0x4aae7d;if(_0x215c54['query']['includeAll']){_0x2152c5[_0x11d2('0x40')]=[{'all':!![]}];}return db[_0x11d2('0x2b')][_0x11d2('0x41')](_0x2152c5);})[_0x11d2('0x25')](function(_0x3bf84d){_0x190fd2[_0x11d2('0x42')]=_0x3bf84d;return _0x190fd2;})[_0x11d2('0x25')](respondWithFilteredResult(_0x143a9d,_0x2152c5))[_0x11d2('0x43')](handleError(_0x143a9d,null));};exports[_0x11d2('0x44')]=function(_0xdec612,_0x1997d9){var _0x237938={'raw':!![],'where':{'id':_0xdec612['params']['id']}},_0x3690a1={};_0x3690a1[_0x11d2('0x30')]=_['keys'](db['SquareMessage'][_0x11d2('0x2c')]);_0x3690a1[_0x11d2('0x31')]=_[_0x11d2('0x32')](_0xdec612[_0x11d2('0x31')]);_0x3690a1[_0x11d2('0x33')]=_[_0x11d2('0x34')](_0x3690a1[_0x11d2('0x30')],_0x3690a1[_0x11d2('0x31')]);_0x237938[_0x11d2('0x35')]=_[_0x11d2('0x34')](_0x3690a1[_0x11d2('0x30')],qs[_0x11d2('0x36')](_0xdec612[_0x11d2('0x31')][_0x11d2('0x36')]));_0x237938['attributes']=_0x237938[_0x11d2('0x35')][_0x11d2('0x45')]?_0x237938[_0x11d2('0x35')]:_0x3690a1[_0x11d2('0x30')];if(_0xdec612[_0x11d2('0x31')]['includeAll']){_0x237938[_0x11d2('0x40')]=[{'all':!![]}];}_0x237938=_['merge']({},_0x237938,_0xdec612['options']);return db[_0x11d2('0x2b')][_0x11d2('0x46')](_0x237938)[_0x11d2('0x25')](handleEntityNotFound(_0x1997d9,null))[_0x11d2('0x25')](respondWithResult(_0x1997d9,null))[_0x11d2('0x43')](handleError(_0x1997d9,null));};exports[_0x11d2('0x47')]=function(_0x3bcdbf,_0x524160){return db['SquareMessage'][_0x11d2('0x47')](_0x3bcdbf['body'],{})[_0x11d2('0x25')](respondWithResult(_0x524160,0xc9))[_0x11d2('0x43')](handleError(_0x524160,null));};exports[_0x11d2('0x23')]=function(_0x42039f,_0x4a44cb){if(_0x42039f['body']['id']){delete _0x42039f[_0x11d2('0x48')]['id'];}return db['SquareMessage'][_0x11d2('0x46')]({'where':{'id':_0x42039f[_0x11d2('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a44cb,null))[_0x11d2('0x25')](saveUpdates(_0x42039f[_0x11d2('0x48')],null))[_0x11d2('0x25')](respondWithResult(_0x4a44cb,null))['catch'](handleError(_0x4a44cb,null));};exports[_0x11d2('0x24')]=function(_0x5c193f,_0x58bac9){return db[_0x11d2('0x2b')]['find']({'where':{'id':_0x5c193f['params']['id']}})[_0x11d2('0x25')](handleEntityNotFound(_0x58bac9,null))[_0x11d2('0x25')](removeEntity(_0x58bac9,null))[_0x11d2('0x43')](handleError(_0x58bac9,null));};
\ No newline at end of file
+var _0x42f2=['lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','SquareMessage','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','pick','filter','merge','where','VIRTUAL','include','findAll','rows','catch','show','params','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x2a554e,_0xa2425d){var _0x1b4615=function(_0x69dd44){while(--_0x69dd44){_0x2a554e['push'](_0x2a554e['shift']());}};_0x1b4615(++_0xa2425d);}(_0x42f2,0x1f4));var _0x242f=function(_0x3dc538,_0x4f7702){_0x3dc538=_0x3dc538-0x0;var _0x72c2fd=_0x42f2[_0x3dc538];return _0x72c2fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x242f('0x0'));var zipdir=require(_0x242f('0x1'));var jsonpatch=require(_0x242f('0x2'));var rp=require(_0x242f('0x3'));var moment=require('moment');var BPromise=require(_0x242f('0x4'));var Mustache=require(_0x242f('0x5'));var util=require(_0x242f('0x6'));var path=require(_0x242f('0x7'));var sox=require(_0x242f('0x8'));var csv=require(_0x242f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x242f('0xa'));var _=require(_0x242f('0xb'));var squel=require(_0x242f('0xc'));var crypto=require(_0x242f('0xd'));var jsforce=require(_0x242f('0xe'));var deskjs=require(_0x242f('0xf'));var toCsv=require(_0x242f('0x9'));var querystring=require('querystring');var Papa=require(_0x242f('0x10'));var Redis=require(_0x242f('0x11'));var authService=require(_0x242f('0x12'));var qs=require(_0x242f('0x13'));var as=require(_0x242f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x242f('0x15'))(_0x242f('0x16'));var utils=require(_0x242f('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x242f('0x18'))['db'];function respondWithStatusCode(_0x1674cc,_0x444ec4){_0x444ec4=_0x444ec4||0xcc;return function(_0x370333){if(_0x370333){return _0x1674cc[_0x242f('0x19')](_0x444ec4);}return _0x1674cc[_0x242f('0x1a')](_0x444ec4)[_0x242f('0x1b')]();};}function respondWithResult(_0x427774,_0x28cbd1){_0x28cbd1=_0x28cbd1||0xc8;return function(_0x3928db){if(_0x3928db){return _0x427774[_0x242f('0x1a')](_0x28cbd1)[_0x242f('0x1c')](_0x3928db);}};}function respondWithFilteredResult(_0x38412a,_0x56249c){return function(_0xa54050){if(_0xa54050){var _0x55ed7e=typeof _0x56249c[_0x242f('0x1d')]==='undefined'&&typeof _0x56249c['limit']===_0x242f('0x1e');var _0x19d474=_0xa54050[_0x242f('0x1f')];var _0x149707=_0x55ed7e?0x0:_0x56249c['offset'];var _0x2568da=_0x55ed7e?_0xa54050[_0x242f('0x1f')]:_0x56249c['offset']+_0x56249c[_0x242f('0x20')];var _0xea0a4b;if(_0x2568da>=_0x19d474){_0x2568da=_0x19d474;_0xea0a4b=0xc8;}else{_0xea0a4b=0xce;}_0x38412a['status'](_0xea0a4b);return _0x38412a[_0x242f('0x21')](_0x242f('0x22'),_0x149707+'-'+_0x2568da+'/'+_0x19d474)[_0x242f('0x1c')](_0xa54050);}return null;};}function patchUpdates(_0x3a8d70){return function(_0x3e94fe){try{jsonpatch['apply'](_0x3e94fe,_0x3a8d70,!![]);}catch(_0x45d77f){return BPromise[_0x242f('0x23')](_0x45d77f);}return _0x3e94fe[_0x242f('0x24')]();};}function saveUpdates(_0xcc5136,_0x3a97f5){return function(_0x10d585){if(_0x10d585){return _0x10d585[_0x242f('0x25')](_0xcc5136)[_0x242f('0x26')](function(_0x1b0882){return _0x1b0882;});}return null;};}function removeEntity(_0x3b5c99,_0x37b181){return function(_0x356268){if(_0x356268){return _0x356268[_0x242f('0x27')]()[_0x242f('0x26')](function(){_0x3b5c99[_0x242f('0x1a')](0xcc)[_0x242f('0x1b')]();});}};}function handleEntityNotFound(_0x5ba8f7,_0x20a356){return function(_0x208384){if(!_0x208384){_0x5ba8f7[_0x242f('0x19')](0x194);}return _0x208384;};}function handleError(_0x3d9fa6,_0x582cfd){_0x582cfd=_0x582cfd||0x1f4;return function(_0x456e4a){logger[_0x242f('0x28')](_0x456e4a[_0x242f('0x29')]);if(_0x456e4a['name']){delete _0x456e4a[_0x242f('0x2a')];}_0x3d9fa6['status'](_0x582cfd)['send'](_0x456e4a);};}exports['index']=function(_0x884bbb,_0x58d713){var _0x229427={},_0x30e1bb={},_0x5a9b1e={'count':0x0,'rows':[]};var _0x744a=_[_0x242f('0x2b')](db[_0x242f('0x2c')][_0x242f('0x2d')],function(_0x452116){return{'name':_0x452116[_0x242f('0x2e')],'type':_0x452116[_0x242f('0x2f')]['key']};});_0x30e1bb[_0x242f('0x30')]=_[_0x242f('0x2b')](_0x744a,'name');_0x30e1bb['query']=_[_0x242f('0x31')](_0x884bbb['query']);_0x30e1bb[_0x242f('0x32')]=_[_0x242f('0x33')](_0x30e1bb['model'],_0x30e1bb['query']);_0x229427[_0x242f('0x34')]=_[_0x242f('0x33')](_0x30e1bb[_0x242f('0x30')],qs[_0x242f('0x35')](_0x884bbb[_0x242f('0x36')]['fields']));_0x229427[_0x242f('0x34')]=_0x229427[_0x242f('0x34')][_0x242f('0x37')]?_0x229427[_0x242f('0x34')]:_0x30e1bb[_0x242f('0x30')];if(!_0x884bbb[_0x242f('0x36')][_0x242f('0x38')]('nolimit')){_0x229427[_0x242f('0x20')]=qs['limit'](_0x884bbb[_0x242f('0x36')][_0x242f('0x20')]);_0x229427[_0x242f('0x1d')]=qs[_0x242f('0x1d')](_0x884bbb['query']['offset']);}_0x229427[_0x242f('0x39')]=qs[_0x242f('0x3a')](_0x884bbb['query'][_0x242f('0x3a')]);_0x229427['where']=qs['filters'](_[_0x242f('0x3b')](_0x884bbb['query'],_0x30e1bb[_0x242f('0x32')]),_0x744a);if(_0x884bbb['query'][_0x242f('0x3c')]){_0x229427['where']=_[_0x242f('0x3d')](_0x229427[_0x242f('0x3e')],{'$or':_[_0x242f('0x2b')](_0x744a,function(_0x521dee){if(_0x521dee[_0x242f('0x2f')]!==_0x242f('0x3f')){var _0x5c95e8={};_0x5c95e8[_0x521dee[_0x242f('0x2a')]]={'$like':'%'+_0x884bbb[_0x242f('0x36')]['filter']+'%'};return _0x5c95e8;}})});}_0x229427=_['merge']({},_0x229427,_0x884bbb['options']);var _0x4cb00f={'where':_0x229427[_0x242f('0x3e')]};return db['SquareMessage'][_0x242f('0x1f')](_0x4cb00f)[_0x242f('0x26')](function(_0x4e88e){_0x5a9b1e[_0x242f('0x1f')]=_0x4e88e;if(_0x884bbb[_0x242f('0x36')]['includeAll']){_0x229427[_0x242f('0x40')]=[{'all':!![]}];}return db[_0x242f('0x2c')][_0x242f('0x41')](_0x229427);})[_0x242f('0x26')](function(_0x19965e){_0x5a9b1e[_0x242f('0x42')]=_0x19965e;return _0x5a9b1e;})[_0x242f('0x26')](respondWithFilteredResult(_0x58d713,_0x229427))[_0x242f('0x43')](handleError(_0x58d713,null));};exports[_0x242f('0x44')]=function(_0x25993a,_0x57ed41){var _0x76c777={'raw':!![],'where':{'id':_0x25993a[_0x242f('0x45')]['id']}},_0x262c51={};_0x262c51[_0x242f('0x30')]=_[_0x242f('0x31')](db[_0x242f('0x2c')][_0x242f('0x2d')]);_0x262c51[_0x242f('0x36')]=_[_0x242f('0x31')](_0x25993a[_0x242f('0x36')]);_0x262c51[_0x242f('0x32')]=_[_0x242f('0x33')](_0x262c51[_0x242f('0x30')],_0x262c51[_0x242f('0x36')]);_0x76c777[_0x242f('0x34')]=_[_0x242f('0x33')](_0x262c51['model'],qs['fields'](_0x25993a[_0x242f('0x36')][_0x242f('0x35')]));_0x76c777[_0x242f('0x34')]=_0x76c777[_0x242f('0x34')][_0x242f('0x37')]?_0x76c777[_0x242f('0x34')]:_0x262c51[_0x242f('0x30')];if(_0x25993a['query']['includeAll']){_0x76c777[_0x242f('0x40')]=[{'all':!![]}];}_0x76c777=_[_0x242f('0x3d')]({},_0x76c777,_0x25993a['options']);return db[_0x242f('0x2c')][_0x242f('0x46')](_0x76c777)[_0x242f('0x26')](handleEntityNotFound(_0x57ed41,null))[_0x242f('0x26')](respondWithResult(_0x57ed41,null))[_0x242f('0x43')](handleError(_0x57ed41,null));};exports[_0x242f('0x47')]=function(_0x232953,_0x4d4b73){return db[_0x242f('0x2c')][_0x242f('0x47')](_0x232953[_0x242f('0x48')],{})['then'](respondWithResult(_0x4d4b73,0xc9))['catch'](handleError(_0x4d4b73,null));};exports[_0x242f('0x25')]=function(_0x40ef21,_0x4aedb2){if(_0x40ef21[_0x242f('0x48')]['id']){delete _0x40ef21['body']['id'];}return db[_0x242f('0x2c')][_0x242f('0x46')]({'where':{'id':_0x40ef21[_0x242f('0x45')]['id']}})['then'](handleEntityNotFound(_0x4aedb2,null))[_0x242f('0x26')](saveUpdates(_0x40ef21['body'],null))[_0x242f('0x26')](respondWithResult(_0x4aedb2,null))[_0x242f('0x43')](handleError(_0x4aedb2,null));};exports[_0x242f('0x27')]=function(_0x49a167,_0x56389a){return db[_0x242f('0x2c')][_0x242f('0x46')]({'where':{'id':_0x49a167[_0x242f('0x45')]['id']}})[_0x242f('0x26')](handleEntityNotFound(_0x56389a,null))[_0x242f('0x26')](removeEntity(_0x56389a,null))[_0x242f('0x43')](handleError(_0x56389a,null));};
\ No newline at end of file
index 13b3876..729423d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ef5=['api','moment','bluebird','request-promise','exports','define','SquareMessage','square_messages','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ef5,0x94));var _0x54ef=function(_0x481f9d,_0x59bef3){_0x481f9d=_0x481f9d-0x0;var _0x60ec94=_0x4ef5[_0x481f9d];return _0x60ec94;};'use strict';var _=require(_0x54ef('0x0'));var util=require('util');var logger=require(_0x54ef('0x1'))(_0x54ef('0x2'));var moment=require(_0x54ef('0x3'));var BPromise=require(_0x54ef('0x4'));var rp=require(_0x54ef('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module[_0x54ef('0x6')]=function(_0x322718,_0x3b5989){return _0x322718[_0x54ef('0x7')](_0x54ef('0x8'),attributes,{'tableName':_0x54ef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ef4=['./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x47b1dc,_0x26d583){var _0x255ab2=function(_0x4bf9b1){while(--_0x4bf9b1){_0x47b1dc['push'](_0x47b1dc['shift']());}};_0x255ab2(++_0x26d583);}(_0x6ef4,0x116));var _0x46ef=function(_0x17aa7a,_0x2be8e4){_0x17aa7a=_0x17aa7a-0x0;var _0x2321f8=_0x6ef4[_0x17aa7a];return _0x2321f8;};'use strict';var _=require(_0x46ef('0x0'));var util=require(_0x46ef('0x1'));var logger=require(_0x46ef('0x2'))('api');var moment=require(_0x46ef('0x3'));var BPromise=require(_0x46ef('0x4'));var rp=require(_0x46ef('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x46ef('0x6'));var config=require(_0x46ef('0x7'));var attributes=require(_0x46ef('0x8'));module[_0x46ef('0x9')]=function(_0x1ec140,_0x5c1af3){return _0x1ec140[_0x46ef('0xa')](_0x46ef('0xb'),attributes,{'tableName':_0x46ef('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 410e10d..bf487fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ba=['raw','then','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','CreateSquareMessage','create','options'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x12ba,0x12e));var _0xa12b=function(_0x2d46bb,_0x4f801f){_0x2d46bb=_0x2d46bb-0x0;var _0x4fbeb9=_0x12ba[_0x2d46bb];return _0x4fbeb9;};'use strict';var _=require(_0xa12b('0x0'));var util=require('util');var moment=require(_0xa12b('0x1'));var BPromise=require(_0xa12b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa12b('0x3'));var db=require(_0xa12b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa12b('0x5'))(_0xa12b('0x6'));var config=require(_0xa12b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa12b('0x8')][_0xa12b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4215fa,_0xe12136,_0x2b640d){return new BPromise(function(_0x1d1eb3,_0x39e600){return client[_0xa12b('0xa')](_0x4215fa,_0x2b640d)['then'](function(_0x2e0d3e){logger[_0xa12b('0xb')](_0xa12b('0xc'),_0xe12136,'request\x20sent');logger[_0xa12b('0xd')](_0xa12b('0xe'),_0xe12136,_0xa12b('0xf'),JSON['stringify'](_0x2e0d3e));if(_0x2e0d3e[_0xa12b('0x10')]){if(_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x11')]===0x1f4){logger[_0xa12b('0x10')](_0xa12b('0xc'),_0xe12136,_0x2e0d3e['error'][_0xa12b('0x12')]);return _0x39e600(_0x2e0d3e['error'][_0xa12b('0x12')]);}logger['error']('SquareMessage,\x20%s,\x20%s',_0xe12136,_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x12')]);return _0x1d1eb3(_0x2e0d3e[_0xa12b('0x10')][_0xa12b('0x12')]);}else{logger[_0xa12b('0xb')](_0xa12b('0xc'),_0xe12136,_0xa12b('0xf'));_0x1d1eb3(_0x2e0d3e['result'][_0xa12b('0x12')]);}})[_0xa12b('0x13')](function(_0x58b854){logger[_0xa12b('0x10')](_0xa12b('0xc'),_0xe12136,_0x58b854);_0x39e600(_0x58b854);});});}exports[_0xa12b('0x14')]=function(_0x319f0c){var _0x3a187b=this;return new Promise(function(_0x33e3b5,_0xc308cf){return db['SquareMessage'][_0xa12b('0x15')](_0x319f0c['body'],{'raw':_0x319f0c[_0xa12b('0x16')]?_0x319f0c[_0xa12b('0x16')][_0xa12b('0x17')]===undefined?!![]:![]:!![]})[_0xa12b('0x18')](function(_0x4e906e){logger[_0xa12b('0xb')](_0xa12b('0x14'),_0x319f0c);logger[_0xa12b('0xd')](_0xa12b('0x14'),_0x319f0c,JSON['stringify'](_0x4e906e));_0x33e3b5(_0x4e906e);})[_0xa12b('0x13')](function(_0x365a0c){logger[_0xa12b('0x10')](_0xa12b('0x14'),_0x365a0c[_0xa12b('0x12')],_0x319f0c);_0xc308cf(_0x3a187b[_0xa12b('0x10')](0x1f4,_0x365a0c[_0xa12b('0x12')]));});});};
\ No newline at end of file
+var _0x4d25=['debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareMessage','SquareMessage','create','body','options','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x4d25,0xf5));var _0x54d2=function(_0x3f11f6,_0x2fd669){_0x3f11f6=_0x3f11f6-0x0;var _0x4f37d2=_0x4d25[_0x3f11f6];return _0x4f37d2;};'use strict';var _=require(_0x54d2('0x0'));var util=require('util');var moment=require(_0x54d2('0x1'));var BPromise=require(_0x54d2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x54d2('0x3'));var db=require(_0x54d2('0x4'))['db'];var utils=require(_0x54d2('0x5'));var logger=require(_0x54d2('0x6'))(_0x54d2('0x7'));var config=require(_0x54d2('0x8'));var jayson=require(_0x54d2('0x9'));var client=jayson[_0x54d2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25b656,_0xa0abca,_0x52f4da){return new BPromise(function(_0x5ecbed,_0x3a6821){return client[_0x54d2('0xb')](_0x25b656,_0x52f4da)[_0x54d2('0xc')](function(_0xaf0db8){logger[_0x54d2('0xd')](_0x54d2('0xe'),_0xa0abca,_0x54d2('0xf'));logger[_0x54d2('0x10')](_0x54d2('0x11'),_0xa0abca,_0x54d2('0xf'),JSON[_0x54d2('0x12')](_0xaf0db8));if(_0xaf0db8[_0x54d2('0x13')]){if(_0xaf0db8[_0x54d2('0x13')][_0x54d2('0x14')]===0x1f4){logger[_0x54d2('0x13')](_0x54d2('0xe'),_0xa0abca,_0xaf0db8[_0x54d2('0x13')]['message']);return _0x3a6821(_0xaf0db8[_0x54d2('0x13')][_0x54d2('0x15')]);}logger[_0x54d2('0x13')]('SquareMessage,\x20%s,\x20%s',_0xa0abca,_0xaf0db8[_0x54d2('0x13')]['message']);return _0x5ecbed(_0xaf0db8[_0x54d2('0x13')][_0x54d2('0x15')]);}else{logger[_0x54d2('0xd')](_0x54d2('0xe'),_0xa0abca,_0x54d2('0xf'));_0x5ecbed(_0xaf0db8[_0x54d2('0x16')][_0x54d2('0x15')]);}})['catch'](function(_0x2c12b3){logger[_0x54d2('0x13')]('SquareMessage,\x20%s,\x20%s',_0xa0abca,_0x2c12b3);_0x3a6821(_0x2c12b3);});});}exports[_0x54d2('0x17')]=function(_0x198286){var _0x42e0e9=this;return new Promise(function(_0xc4989f,_0x24d4e8){return db[_0x54d2('0x18')][_0x54d2('0x19')](_0x198286[_0x54d2('0x1a')],{'raw':_0x198286[_0x54d2('0x1b')]?_0x198286['options']['raw']===undefined?!![]:![]:!![]})[_0x54d2('0xc')](function(_0xfd1d95){logger[_0x54d2('0xd')](_0x54d2('0x17'),_0x198286);logger[_0x54d2('0x10')]('CreateSquareMessage',_0x198286,JSON[_0x54d2('0x12')](_0xfd1d95));_0xc4989f(_0xfd1d95);})[_0x54d2('0x1c')](function(_0x376e8b){logger['error']('CreateSquareMessage',_0x376e8b[_0x54d2('0x15')],_0x198286);_0x24d4e8(_0x42e0e9[_0x54d2('0x13')](0x1f4,_0x376e8b[_0x54d2('0x15')]));});});};
\ No newline at end of file
index 4a46fc4..c92442f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36c6=['get','index','/:id','isAuthenticated','show','/:id/test','15s','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller'];(function(_0x18f869,_0xb33a56){var _0x1079cd=function(_0xfcc19f){while(--_0xfcc19f){_0x18f869['push'](_0x18f869['shift']());}};_0x1079cd(++_0xb33a56);}(_0x36c6,0x167));var _0x636c=function(_0x1cbae8,_0x123160){_0x1cbae8=_0x1cbae8-0x0;var _0x1de707=_0x36c6[_0x1cbae8];return _0x1de707;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x636c('0x0'));var timeout=require(_0x636c('0x1'));var express=require(_0x636c('0x2'));var router=express[_0x636c('0x3')]();var fs_extra=require(_0x636c('0x4'));var auth=require(_0x636c('0x5'));var interaction=require(_0x636c('0x6'));var config=require(_0x636c('0x7'));var controller=require(_0x636c('0x8'));router[_0x636c('0x9')]('/',auth['isAuthenticated'](),controller[_0x636c('0xa')]);router[_0x636c('0x9')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0xd')]);router['get'](_0x636c('0xe'),auth[_0x636c('0xc')](),timeout(_0x636c('0xf')),controller['test']);router[_0x636c('0x10')]('/',auth[_0x636c('0xc')](),controller[_0x636c('0x11')]);router[_0x636c('0x12')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0x13')]);router[_0x636c('0x14')](_0x636c('0xb'),auth[_0x636c('0xc')](),controller[_0x636c('0x15')]);module[_0x636c('0x16')]=router;
\ No newline at end of file
+var _0x7e2e=['util','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','show','/:id/test','15s','test','post','create','/:id','update','delete','destroy','multer'];(function(_0x57e4ce,_0x2c1f1b){var _0xa1042a=function(_0x29d16c){while(--_0x29d16c){_0x57e4ce['push'](_0x57e4ce['shift']());}};_0xa1042a(++_0x2c1f1b);}(_0x7e2e,0x12b));var _0xe7e2=function(_0x4175bc,_0x2d4298){_0x4175bc=_0x4175bc-0x0;var _0x206d24=_0x7e2e[_0x4175bc];return _0x206d24;};'use strict';var multer=require(_0xe7e2('0x0'));var util=require(_0xe7e2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe7e2('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe7e2('0x3'));var interaction=require(_0xe7e2('0x4'));var config=require(_0xe7e2('0x5'));var controller=require(_0xe7e2('0x6'));router[_0xe7e2('0x7')]('/',auth[_0xe7e2('0x8')](),controller[_0xe7e2('0x9')]);router[_0xe7e2('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xe7e2('0xa')]);router[_0xe7e2('0x7')](_0xe7e2('0xb'),auth['isAuthenticated'](),timeout(_0xe7e2('0xc')),controller[_0xe7e2('0xd')]);router[_0xe7e2('0xe')]('/',auth[_0xe7e2('0x8')](),controller[_0xe7e2('0xf')]);router['put'](_0xe7e2('0x10'),auth[_0xe7e2('0x8')](),controller[_0xe7e2('0x11')]);router[_0xe7e2('0x12')](_0xe7e2('0x10'),auth['isAuthenticated'](),controller[_0xe7e2('0x13')]);module['exports']=router;
\ No newline at end of file
index 02eb6ab..d703de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ef=['exports','STRING','name','sequelize'];(function(_0x319409,_0x6de0e1){var _0x23df44=function(_0x4e21bd){while(--_0x4e21bd){_0x319409['push'](_0x319409['shift']());}};_0x23df44(++_0x6de0e1);}(_0x28ef,0x19b));var _0xf28e=function(_0x3cf3f8,_0x3f67b5){_0x3cf3f8=_0x3cf3f8-0x0;var _0x7f1790=_0x28ef[_0x3cf3f8];return _0x7f1790;};'use strict';var Sequelize=require(_0xf28e('0x0'));module[_0xf28e('0x1')]={'name':{'type':Sequelize[_0xf28e('0x2')],'unique':_0xf28e('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf28e('0x2')]}};
\ No newline at end of file
+var _0xa802=['STRING','sequelize','exports'];(function(_0xc751a5,_0x3edc9b){var _0x39d28f=function(_0x1b04bf){while(--_0x1b04bf){_0xc751a5['push'](_0xc751a5['shift']());}};_0x39d28f(++_0x3edc9b);}(_0xa802,0x193));var _0x2a80=function(_0x8ab0bf,_0x359164){_0x8ab0bf=_0x8ab0bf-0x0;var _0x5e5d88=_0xa802[_0x8ab0bf];return _0x5e5d88;};'use strict';var Sequelize=require(_0x2a80('0x0'));module[_0x2a80('0x1')]={'name':{'type':Sequelize[_0x2a80('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2a80('0x2')]}};
\ No newline at end of file
index 9799459..56672e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c7=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','get','ODBC','destroy','end','error','stack','name','index','map','SquareOdbc','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','keys','find','create','body','user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','to-csv'];(function(_0x16e824,_0x23ab90){var _0x1745ea=function(_0x327e55){while(--_0x327e55){_0x16e824['push'](_0x16e824['shift']());}};_0x1745ea(++_0x23ab90);}(_0x49c7,0x1d2));var _0x749c=function(_0x2e3e46,_0x281f86){_0x2e3e46=_0x2e3e46-0x0;var _0x19925b=_0x49c7[_0x2e3e46];return _0x19925b;};'use strict';var emlformat=require(_0x749c('0x0'));var rimraf=require(_0x749c('0x1'));var zipdir=require(_0x749c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x749c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x749c('0x4'));var util=require(_0x749c('0x5'));var path=require(_0x749c('0x6'));var sox=require('sox');var csv=require(_0x749c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x749c('0x8'));var crypto=require(_0x749c('0x9'));var jsforce=require(_0x749c('0xa'));var deskjs=require(_0x749c('0xb'));var toCsv=require(_0x749c('0x7'));var querystring=require('querystring');var Papa=require(_0x749c('0xc'));var Redis=require(_0x749c('0xd'));var authService=require(_0x749c('0xe'));var qs=require(_0x749c('0xf'));var as=require(_0x749c('0x10'));var hardwareService=require(_0x749c('0x11'));var logger=require(_0x749c('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x749c('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x749c('0x14'))['db'];function respondWithStatusCode(_0x28e4bd,_0x4dd98e){_0x4dd98e=_0x4dd98e||0xcc;return function(_0x15b58f){if(_0x15b58f){return _0x28e4bd[_0x749c('0x15')](_0x4dd98e);}return _0x28e4bd['status'](_0x4dd98e)['end']();};}function respondWithResult(_0x1cb9ac,_0x52d889){_0x52d889=_0x52d889||0xc8;return function(_0x4c42b6){if(_0x4c42b6){return _0x1cb9ac[_0x749c('0x16')](_0x52d889)[_0x749c('0x17')](_0x4c42b6);}};}function respondWithFilteredResult(_0x3a0529,_0xe92dab){return function(_0x1b66ea){if(_0x1b66ea){var _0x4c69a3=typeof _0xe92dab[_0x749c('0x18')]==='undefined'&&typeof _0xe92dab[_0x749c('0x19')]===_0x749c('0x1a');var _0x357795=_0x1b66ea['count'];var _0x5d1d2f=_0x4c69a3?0x0:_0xe92dab['offset'];var _0x5740b8=_0x4c69a3?_0x1b66ea[_0x749c('0x1b')]:_0xe92dab[_0x749c('0x18')]+_0xe92dab['limit'];var _0x7d589a;if(_0x5740b8>=_0x357795){_0x5740b8=_0x357795;_0x7d589a=0xc8;}else{_0x7d589a=0xce;}_0x3a0529[_0x749c('0x16')](_0x7d589a);return _0x3a0529['set'](_0x749c('0x1c'),_0x5d1d2f+'-'+_0x5740b8+'/'+_0x357795)[_0x749c('0x17')](_0x1b66ea);}return null;};}function patchUpdates(_0x588dcc){return function(_0x19ad6b){try{jsonpatch[_0x749c('0x1d')](_0x19ad6b,_0x588dcc,!![]);}catch(_0xa4d25a){return BPromise[_0x749c('0x1e')](_0xa4d25a);}return _0x19ad6b[_0x749c('0x1f')]();};}function saveUpdates(_0x48f7c8,_0x44b022){return function(_0x40b586){if(_0x40b586){return _0x40b586[_0x749c('0x20')](_0x48f7c8)[_0x749c('0x21')](function(_0x56ea12){return _0x56ea12;});}return null;};}function removeEntity(_0x5471e5,_0x498b92){return function(_0x51d5f9){if(_0x51d5f9){return _0x51d5f9['destroy']()['then'](function(){var _0x138195=_0x51d5f9[_0x749c('0x22')]({'plain':!![]});var _0x367cb6=_0x749c('0x23');return db['UserProfileResource'][_0x749c('0x24')]({'where':{'type':_0x367cb6,'resourceId':_0x138195['id']}})[_0x749c('0x21')](function(){return _0x51d5f9;});})[_0x749c('0x21')](function(){_0x5471e5[_0x749c('0x16')](0xcc)[_0x749c('0x25')]();});}};}function handleEntityNotFound(_0x14a1ae,_0x4aacf2){return function(_0x4bb276){if(!_0x4bb276){_0x14a1ae['sendStatus'](0x194);}return _0x4bb276;};}function handleError(_0x59ea05,_0x4d8596){_0x4d8596=_0x4d8596||0x1f4;return function(_0x56825c){logger[_0x749c('0x26')](_0x56825c[_0x749c('0x27')]);if(_0x56825c[_0x749c('0x28')]){delete _0x56825c[_0x749c('0x28')];}_0x59ea05[_0x749c('0x16')](_0x4d8596)['send'](_0x56825c);};}exports[_0x749c('0x29')]=function(_0x13acc3,_0xd8fe61){var _0x1fc969={},_0x2ab51c={},_0x5c756e={'count':0x0,'rows':[]};var _0x2deca=_[_0x749c('0x2a')](db[_0x749c('0x2b')]['rawAttributes'],function(_0x6cf2eb){return{'name':_0x6cf2eb[_0x749c('0x2c')],'type':_0x6cf2eb[_0x749c('0x2d')][_0x749c('0x2e')]};});_0x2ab51c[_0x749c('0x2f')]=_['map'](_0x2deca,_0x749c('0x28'));_0x2ab51c[_0x749c('0x30')]=_['keys'](_0x13acc3[_0x749c('0x30')]);_0x2ab51c['filters']=_['intersection'](_0x2ab51c[_0x749c('0x2f')],_0x2ab51c[_0x749c('0x30')]);_0x1fc969[_0x749c('0x31')]=_[_0x749c('0x32')](_0x2ab51c[_0x749c('0x2f')],qs[_0x749c('0x33')](_0x13acc3['query']['fields']));_0x1fc969[_0x749c('0x31')]=_0x1fc969[_0x749c('0x31')][_0x749c('0x34')]?_0x1fc969[_0x749c('0x31')]:_0x2ab51c[_0x749c('0x2f')];if(!_0x13acc3[_0x749c('0x30')][_0x749c('0x35')]('nolimit')){_0x1fc969['limit']=qs['limit'](_0x13acc3[_0x749c('0x30')][_0x749c('0x19')]);_0x1fc969[_0x749c('0x18')]=qs['offset'](_0x13acc3[_0x749c('0x30')][_0x749c('0x18')]);}_0x1fc969[_0x749c('0x36')]=qs[_0x749c('0x37')](_0x13acc3[_0x749c('0x30')]['sort']);_0x1fc969[_0x749c('0x38')]=qs[_0x749c('0x39')](_[_0x749c('0x3a')](_0x13acc3['query'],_0x2ab51c[_0x749c('0x39')]),_0x2deca);if(_0x13acc3[_0x749c('0x30')][_0x749c('0x3b')]){_0x1fc969['where']=_['merge'](_0x1fc969[_0x749c('0x38')],{'$or':_[_0x749c('0x2a')](_0x2deca,function(_0x18ed29){if(_0x18ed29['type']!==_0x749c('0x3c')){var _0x17bfbc={};_0x17bfbc[_0x18ed29[_0x749c('0x28')]]={'$like':'%'+_0x13acc3[_0x749c('0x30')][_0x749c('0x3b')]+'%'};return _0x17bfbc;}})});}_0x1fc969=_[_0x749c('0x3d')]({},_0x1fc969,_0x13acc3[_0x749c('0x3e')]);var _0x4f2dec={'where':_0x1fc969[_0x749c('0x38')]};return db[_0x749c('0x2b')][_0x749c('0x1b')](_0x4f2dec)[_0x749c('0x21')](function(_0xd14d8b){_0x5c756e[_0x749c('0x1b')]=_0xd14d8b;if(_0x13acc3[_0x749c('0x30')][_0x749c('0x3f')]){_0x1fc969[_0x749c('0x40')]=[{'all':!![]}];}return db['SquareOdbc'][_0x749c('0x41')](_0x1fc969);})[_0x749c('0x21')](function(_0x463782){_0x5c756e['rows']=_0x463782;return _0x5c756e;})[_0x749c('0x21')](respondWithFilteredResult(_0xd8fe61,_0x1fc969))[_0x749c('0x42')](handleError(_0xd8fe61,null));};exports[_0x749c('0x43')]=function(_0x473d18,_0x356ef1){var _0x49c8e0={'raw':!![],'where':{'id':_0x473d18['params']['id']}},_0x211968={};_0x211968[_0x749c('0x2f')]=_['keys'](db[_0x749c('0x2b')]['rawAttributes']);_0x211968['query']=_[_0x749c('0x44')](_0x473d18[_0x749c('0x30')]);_0x211968[_0x749c('0x39')]=_[_0x749c('0x32')](_0x211968[_0x749c('0x2f')],_0x211968[_0x749c('0x30')]);_0x49c8e0['attributes']=_[_0x749c('0x32')](_0x211968[_0x749c('0x2f')],qs['fields'](_0x473d18[_0x749c('0x30')]['fields']));_0x49c8e0[_0x749c('0x31')]=_0x49c8e0[_0x749c('0x31')][_0x749c('0x34')]?_0x49c8e0[_0x749c('0x31')]:_0x211968[_0x749c('0x2f')];if(_0x473d18[_0x749c('0x30')]['includeAll']){_0x49c8e0[_0x749c('0x40')]=[{'all':!![]}];}_0x49c8e0=_[_0x749c('0x3d')]({},_0x49c8e0,_0x473d18['options']);return db[_0x749c('0x2b')][_0x749c('0x45')](_0x49c8e0)[_0x749c('0x21')](handleEntityNotFound(_0x356ef1,null))[_0x749c('0x21')](respondWithResult(_0x356ef1,null))[_0x749c('0x42')](handleError(_0x356ef1,null));};exports[_0x749c('0x46')]=function(_0x19feb1,_0x17e46a){return db[_0x749c('0x2b')][_0x749c('0x46')](_0x19feb1[_0x749c('0x47')],{})[_0x749c('0x21')](function(_0x357d14){var _0x38dd24=_0x19feb1[_0x749c('0x48')][_0x749c('0x22')]({'plain':!![]});if(!_0x38dd24)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38dd24['role']===_0x749c('0x48')){var _0x2bf7ea=_0x357d14[_0x749c('0x22')]({'plain':!![]});var _0x410b7c=_0x749c('0x23');return db[_0x749c('0x49')]['find']({'where':{'name':_0x410b7c,'userProfileId':_0x38dd24['userProfileId']},'raw':!![]})['then'](function(_0x453622){if(_0x453622&&_0x453622['autoAssociation']===0x0){return db[_0x749c('0x4a')][_0x749c('0x46')]({'name':_0x2bf7ea['name'],'resourceId':_0x2bf7ea['id'],'type':_0x453622[_0x749c('0x28')],'sectionId':_0x453622['id']},{})[_0x749c('0x21')](function(){return _0x357d14;});}else{return _0x357d14;}})[_0x749c('0x42')](function(_0x44a46d){logger[_0x749c('0x26')](_0x749c('0x4b'),_0x44a46d);throw _0x44a46d;});}return _0x357d14;})[_0x749c('0x21')](respondWithResult(_0x17e46a,0xc9))[_0x749c('0x42')](handleError(_0x17e46a,null));};exports[_0x749c('0x20')]=function(_0x28c8a1,_0x392de5){if(_0x28c8a1[_0x749c('0x47')]['id']){delete _0x28c8a1[_0x749c('0x47')]['id'];}return db[_0x749c('0x2b')]['find']({'where':{'id':_0x28c8a1[_0x749c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x392de5,null))['then'](saveUpdates(_0x28c8a1[_0x749c('0x47')],null))[_0x749c('0x21')](respondWithResult(_0x392de5,null))['catch'](handleError(_0x392de5,null));};exports[_0x749c('0x24')]=function(_0x37f51b,_0xf7a125){return db[_0x749c('0x2b')][_0x749c('0x45')]({'where':{'id':_0x37f51b[_0x749c('0x4c')]['id']}})['then'](handleEntityNotFound(_0xf7a125,null))[_0x749c('0x21')](removeEntity(_0xf7a125,null))['catch'](handleError(_0xf7a125,null));};exports[_0x749c('0x4d')]=function(_0x4e488b,_0x20225b,_0xa554b7){var _0x33e959;return db['SquareOdbc'][_0x749c('0x45')]({'where':{'id':_0x4e488b[_0x749c('0x4c')]['id']},'attributes':['id',_0x749c('0x4e')]})['then'](handleEntityNotFound(_0x20225b,null))[_0x749c('0x21')](function(_0x53e3aa){if(_0x53e3aa){var _0x4cc4c0=require('odbc')();_0x4cc4c0['openSync'](_0x53e3aa[_0x749c('0x4e')]);_0x4cc4c0['closeSync']();return _0x53e3aa;}})[_0x749c('0x21')](respondWithResult(_0x20225b,null))[_0x749c('0x42')](handleError(_0x20225b,null));};
\ No newline at end of file
+var _0x5328=['intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','update','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','fs-extra','squel','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','status','end','undefined','limit','offset','count','set','json','apply','reject','save','then','get','ODBC','destroy','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x1cd3d2,_0x2e142d){var _0x23de33=function(_0x433987){while(--_0x433987){_0x1cd3d2['push'](_0x1cd3d2['shift']());}};_0x23de33(++_0x2e142d);}(_0x5328,0xd2));var _0x8532=function(_0x34a7fd,_0x315078){_0x34a7fd=_0x34a7fd-0x0;var _0x1cefad=_0x5328[_0x34a7fd];return _0x1cefad;};'use strict';var emlformat=require(_0x8532('0x0'));var rimraf=require(_0x8532('0x1'));var zipdir=require(_0x8532('0x2'));var jsonpatch=require(_0x8532('0x3'));var rp=require(_0x8532('0x4'));var moment=require(_0x8532('0x5'));var BPromise=require(_0x8532('0x6'));var Mustache=require('mustache');var util=require(_0x8532('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x8532('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8532('0x9'));var _=require('lodash');var squel=require(_0x8532('0xa'));var crypto=require(_0x8532('0xb'));var jsforce=require(_0x8532('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8532('0x8'));var querystring=require(_0x8532('0xd'));var Papa=require(_0x8532('0xe'));var Redis=require(_0x8532('0xf'));var authService=require(_0x8532('0x10'));var qs=require(_0x8532('0x11'));var as=require(_0x8532('0x12'));var hardwareService=require(_0x8532('0x13'));var logger=require('../../config/logger')(_0x8532('0x14'));var utils=require(_0x8532('0x15'));var config=require(_0x8532('0x16'));var licenseUtil=require(_0x8532('0x17'));var db=require(_0x8532('0x18'))['db'];function respondWithStatusCode(_0x24fd85,_0x24184d){_0x24184d=_0x24184d||0xcc;return function(_0x405904){if(_0x405904){return _0x24fd85[_0x8532('0x19')](_0x24184d);}return _0x24fd85[_0x8532('0x1a')](_0x24184d)[_0x8532('0x1b')]();};}function respondWithResult(_0x49457c,_0x33e128){_0x33e128=_0x33e128||0xc8;return function(_0x11535e){if(_0x11535e){return _0x49457c[_0x8532('0x1a')](_0x33e128)['json'](_0x11535e);}};}function respondWithFilteredResult(_0x256ee7,_0x53faa4){return function(_0x3ab124){if(_0x3ab124){var _0x2dfcb7=typeof _0x53faa4['offset']===_0x8532('0x1c')&&typeof _0x53faa4[_0x8532('0x1d')]==='undefined';var _0x384449=_0x3ab124['count'];var _0x42cdda=_0x2dfcb7?0x0:_0x53faa4[_0x8532('0x1e')];var _0x43bc16=_0x2dfcb7?_0x3ab124[_0x8532('0x1f')]:_0x53faa4[_0x8532('0x1e')]+_0x53faa4['limit'];var _0x2d5cf9;if(_0x43bc16>=_0x384449){_0x43bc16=_0x384449;_0x2d5cf9=0xc8;}else{_0x2d5cf9=0xce;}_0x256ee7[_0x8532('0x1a')](_0x2d5cf9);return _0x256ee7[_0x8532('0x20')]('Content-Range',_0x42cdda+'-'+_0x43bc16+'/'+_0x384449)[_0x8532('0x21')](_0x3ab124);}return null;};}function patchUpdates(_0x1cb759){return function(_0x475df9){try{jsonpatch[_0x8532('0x22')](_0x475df9,_0x1cb759,!![]);}catch(_0x4c0cce){return BPromise[_0x8532('0x23')](_0x4c0cce);}return _0x475df9[_0x8532('0x24')]();};}function saveUpdates(_0x11994f,_0x1510d2){return function(_0x3a0934){if(_0x3a0934){return _0x3a0934['update'](_0x11994f)[_0x8532('0x25')](function(_0x2e36c7){return _0x2e36c7;});}return null;};}function removeEntity(_0x551482,_0x4c415c){return function(_0x4db827){if(_0x4db827){return _0x4db827['destroy']()[_0x8532('0x25')](function(){var _0x35285e=_0x4db827[_0x8532('0x26')]({'plain':!![]});var _0x1f058c=_0x8532('0x27');return db['UserProfileResource'][_0x8532('0x28')]({'where':{'type':_0x1f058c,'resourceId':_0x35285e['id']}})[_0x8532('0x25')](function(){return _0x4db827;});})[_0x8532('0x25')](function(){_0x551482[_0x8532('0x1a')](0xcc)[_0x8532('0x1b')]();});}};}function handleEntityNotFound(_0x57f373,_0x14b7e4){return function(_0x435265){if(!_0x435265){_0x57f373[_0x8532('0x19')](0x194);}return _0x435265;};}function handleError(_0x3689b8,_0x3a2330){_0x3a2330=_0x3a2330||0x1f4;return function(_0x576016){logger['error'](_0x576016['stack']);if(_0x576016['name']){delete _0x576016[_0x8532('0x29')];}_0x3689b8[_0x8532('0x1a')](_0x3a2330)[_0x8532('0x2a')](_0x576016);};}exports[_0x8532('0x2b')]=function(_0x174f8a,_0x583e99){var _0x2478c5={},_0xad6df3={},_0x502b0b={'count':0x0,'rows':[]};var _0x45ca26=_[_0x8532('0x2c')](db[_0x8532('0x2d')][_0x8532('0x2e')],function(_0x3cbd88){return{'name':_0x3cbd88[_0x8532('0x2f')],'type':_0x3cbd88[_0x8532('0x30')][_0x8532('0x31')]};});_0xad6df3[_0x8532('0x32')]=_[_0x8532('0x2c')](_0x45ca26,'name');_0xad6df3[_0x8532('0x33')]=_[_0x8532('0x34')](_0x174f8a[_0x8532('0x33')]);_0xad6df3[_0x8532('0x35')]=_[_0x8532('0x36')](_0xad6df3[_0x8532('0x32')],_0xad6df3[_0x8532('0x33')]);_0x2478c5[_0x8532('0x37')]=_[_0x8532('0x36')](_0xad6df3[_0x8532('0x32')],qs['fields'](_0x174f8a[_0x8532('0x33')][_0x8532('0x38')]));_0x2478c5['attributes']=_0x2478c5[_0x8532('0x37')][_0x8532('0x39')]?_0x2478c5['attributes']:_0xad6df3['model'];if(!_0x174f8a[_0x8532('0x33')][_0x8532('0x3a')]('nolimit')){_0x2478c5[_0x8532('0x1d')]=qs[_0x8532('0x1d')](_0x174f8a[_0x8532('0x33')][_0x8532('0x1d')]);_0x2478c5['offset']=qs[_0x8532('0x1e')](_0x174f8a[_0x8532('0x33')][_0x8532('0x1e')]);}_0x2478c5['order']=qs['sort'](_0x174f8a[_0x8532('0x33')][_0x8532('0x3b')]);_0x2478c5[_0x8532('0x3c')]=qs[_0x8532('0x35')](_[_0x8532('0x3d')](_0x174f8a['query'],_0xad6df3['filters']),_0x45ca26);if(_0x174f8a[_0x8532('0x33')][_0x8532('0x3e')]){_0x2478c5[_0x8532('0x3c')]=_[_0x8532('0x3f')](_0x2478c5['where'],{'$or':_[_0x8532('0x2c')](_0x45ca26,function(_0x17793b){if(_0x17793b[_0x8532('0x30')]!==_0x8532('0x40')){var _0x53ddc2={};_0x53ddc2[_0x17793b[_0x8532('0x29')]]={'$like':'%'+_0x174f8a['query'][_0x8532('0x3e')]+'%'};return _0x53ddc2;}})});}_0x2478c5=_['merge']({},_0x2478c5,_0x174f8a[_0x8532('0x41')]);var _0xe4890a={'where':_0x2478c5[_0x8532('0x3c')]};return db[_0x8532('0x2d')][_0x8532('0x1f')](_0xe4890a)[_0x8532('0x25')](function(_0x1844dd){_0x502b0b[_0x8532('0x1f')]=_0x1844dd;if(_0x174f8a[_0x8532('0x33')][_0x8532('0x42')]){_0x2478c5[_0x8532('0x43')]=[{'all':!![]}];}return db[_0x8532('0x2d')][_0x8532('0x44')](_0x2478c5);})[_0x8532('0x25')](function(_0x2ea3a1){_0x502b0b['rows']=_0x2ea3a1;return _0x502b0b;})[_0x8532('0x25')](respondWithFilteredResult(_0x583e99,_0x2478c5))['catch'](handleError(_0x583e99,null));};exports[_0x8532('0x45')]=function(_0x2fcb4a,_0x31db43){var _0x131873={'raw':!![],'where':{'id':_0x2fcb4a[_0x8532('0x46')]['id']}},_0x519e93={};_0x519e93[_0x8532('0x32')]=_[_0x8532('0x34')](db['SquareOdbc'][_0x8532('0x2e')]);_0x519e93[_0x8532('0x33')]=_['keys'](_0x2fcb4a[_0x8532('0x33')]);_0x519e93[_0x8532('0x35')]=_['intersection'](_0x519e93[_0x8532('0x32')],_0x519e93[_0x8532('0x33')]);_0x131873[_0x8532('0x37')]=_[_0x8532('0x36')](_0x519e93[_0x8532('0x32')],qs[_0x8532('0x38')](_0x2fcb4a['query'][_0x8532('0x38')]));_0x131873[_0x8532('0x37')]=_0x131873[_0x8532('0x37')]['length']?_0x131873[_0x8532('0x37')]:_0x519e93[_0x8532('0x32')];if(_0x2fcb4a['query'][_0x8532('0x42')]){_0x131873[_0x8532('0x43')]=[{'all':!![]}];}_0x131873=_[_0x8532('0x3f')]({},_0x131873,_0x2fcb4a['options']);return db[_0x8532('0x2d')]['find'](_0x131873)[_0x8532('0x25')](handleEntityNotFound(_0x31db43,null))[_0x8532('0x25')](respondWithResult(_0x31db43,null))[_0x8532('0x47')](handleError(_0x31db43,null));};exports[_0x8532('0x48')]=function(_0x453b0b,_0x1ce41a){return db['SquareOdbc'][_0x8532('0x48')](_0x453b0b[_0x8532('0x49')],{})[_0x8532('0x25')](function(_0x5b799){var _0x49d635=_0x453b0b['user'][_0x8532('0x26')]({'plain':!![]});if(!_0x49d635)throw new Error(_0x8532('0x4a'));if(_0x49d635['role']===_0x8532('0x4b')){var _0x23a66c=_0x5b799[_0x8532('0x26')]({'plain':!![]});var _0x22c4dc=_0x8532('0x27');return db[_0x8532('0x4c')][_0x8532('0x4d')]({'where':{'name':_0x22c4dc,'userProfileId':_0x49d635[_0x8532('0x4e')]},'raw':!![]})[_0x8532('0x25')](function(_0x27ccd8){if(_0x27ccd8&&_0x27ccd8[_0x8532('0x4f')]===0x0){return db[_0x8532('0x50')][_0x8532('0x48')]({'name':_0x23a66c[_0x8532('0x29')],'resourceId':_0x23a66c['id'],'type':_0x27ccd8[_0x8532('0x29')],'sectionId':_0x27ccd8['id']},{})['then'](function(){return _0x5b799;});}else{return _0x5b799;}})['catch'](function(_0xfdb430){logger[_0x8532('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfdb430);throw _0xfdb430;});}return _0x5b799;})[_0x8532('0x25')](respondWithResult(_0x1ce41a,0xc9))[_0x8532('0x47')](handleError(_0x1ce41a,null));};exports[_0x8532('0x52')]=function(_0x61a9e8,_0x42bded){if(_0x61a9e8[_0x8532('0x49')]['id']){delete _0x61a9e8[_0x8532('0x49')]['id'];}return db[_0x8532('0x2d')][_0x8532('0x4d')]({'where':{'id':_0x61a9e8[_0x8532('0x46')]['id']}})[_0x8532('0x25')](handleEntityNotFound(_0x42bded,null))[_0x8532('0x25')](saveUpdates(_0x61a9e8[_0x8532('0x49')],null))[_0x8532('0x25')](respondWithResult(_0x42bded,null))[_0x8532('0x47')](handleError(_0x42bded,null));};exports[_0x8532('0x28')]=function(_0x504459,_0x52fa59){return db[_0x8532('0x2d')][_0x8532('0x4d')]({'where':{'id':_0x504459[_0x8532('0x46')]['id']}})['then'](handleEntityNotFound(_0x52fa59,null))[_0x8532('0x25')](removeEntity(_0x52fa59,null))['catch'](handleError(_0x52fa59,null));};exports[_0x8532('0x53')]=function(_0x32a521,_0xca622e,_0x310a06){var _0x33254a;return db[_0x8532('0x2d')][_0x8532('0x4d')]({'where':{'id':_0x32a521['params']['id']},'attributes':['id',_0x8532('0x54')]})[_0x8532('0x25')](handleEntityNotFound(_0xca622e,null))[_0x8532('0x25')](function(_0x7a8cf7){if(_0x7a8cf7){var _0x43dd36=require(_0x8532('0x55'))();_0x43dd36[_0x8532('0x56')](_0x7a8cf7[_0x8532('0x54')]);_0x43dd36[_0x8532('0x57')]();return _0x7a8cf7;}})[_0x8532('0x25')](respondWithResult(_0xca622e,null))[_0x8532('0x47')](handleError(_0xca622e,null));};
\ No newline at end of file
index 8eceaae..6dd7543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ce=['path','rimraf','../../config/environment','./squareOdbc.attributes','define','square_odbc','lodash','util','api','moment','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x72ce,0x1b3));var _0xe72c=function(_0x3ab66e,_0x2e8219){_0x3ab66e=_0x3ab66e-0x0;var _0x5a18fe=_0x72ce[_0x3ab66e];return _0x5a18fe;};'use strict';var _=require(_0xe72c('0x0'));var util=require(_0xe72c('0x1'));var logger=require('../../config/logger')(_0xe72c('0x2'));var moment=require(_0xe72c('0x3'));var BPromise=require('bluebird');var rp=require(_0xe72c('0x4'));var fs=require('fs');var path=require(_0xe72c('0x5'));var rimraf=require(_0xe72c('0x6'));var config=require(_0xe72c('0x7'));var attributes=require(_0xe72c('0x8'));module['exports']=function(_0x3d5523,_0x39ab26){return _0x3d5523[_0xe72c('0x9')]('SquareOdbc',attributes,{'tableName':_0xe72c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf02f=['SquareOdbc','square_odbc','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define'];(function(_0xbd761,_0xe60978){var _0x364acf=function(_0x3c0d6d){while(--_0x3c0d6d){_0xbd761['push'](_0xbd761['shift']());}};_0x364acf(++_0xe60978);}(_0xf02f,0x152));var _0xff02=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf02f[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xff02('0x0'));var util=require('util');var logger=require(_0xff02('0x1'))(_0xff02('0x2'));var moment=require(_0xff02('0x3'));var BPromise=require(_0xff02('0x4'));var rp=require(_0xff02('0x5'));var fs=require('fs');var path=require(_0xff02('0x6'));var rimraf=require(_0xff02('0x7'));var config=require(_0xff02('0x8'));var attributes=require(_0xff02('0x9'));module[_0xff02('0xa')]=function(_0x20bead,_0x3780fe){return _0x20bead[_0xff02('0xb')](_0xff02('0xc'),attributes,{'tableName':_0xff02('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cf7934..392cb98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdcc=['attributes','include','map','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','where'];(function(_0x1d74b9,_0x5adf3b){var _0x331112=function(_0x169bc2){while(--_0x169bc2){_0x1d74b9['push'](_0x1d74b9['shift']());}};_0x331112(++_0x5adf3b);}(_0xcdcc,0x115));var _0xccdc=function(_0x2daca7,_0x40e8cb){_0x2daca7=_0x2daca7-0x0;var _0x41bb55=_0xcdcc[_0x2daca7];return _0x41bb55;};'use strict';var _=require(_0xccdc('0x0'));var util=require(_0xccdc('0x1'));var moment=require(_0xccdc('0x2'));var BPromise=require(_0xccdc('0x3'));var rs=require(_0xccdc('0x4'));var fs=require('fs');var Redis=require(_0xccdc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xccdc('0x6'));var logger=require(_0xccdc('0x7'))('rpc');var config=require(_0xccdc('0x8'));var jayson=require(_0xccdc('0x9'));var client=jayson[_0xccdc('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4cb7d5,_0x406b6b,_0x17524e){return new BPromise(function(_0xf1fa47,_0x2c5c14){return client[_0xccdc('0xb')](_0x4cb7d5,_0x17524e)['then'](function(_0x281014){logger[_0xccdc('0xc')](_0xccdc('0xd'),_0x406b6b,'request\x20sent');logger[_0xccdc('0xe')](_0xccdc('0xf'),_0x406b6b,_0xccdc('0x10'),JSON[_0xccdc('0x11')](_0x281014));if(_0x281014[_0xccdc('0x12')]){if(_0x281014[_0xccdc('0x12')][_0xccdc('0x13')]===0x1f4){logger[_0xccdc('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x406b6b,_0x281014[_0xccdc('0x12')][_0xccdc('0x14')]);return _0x2c5c14(_0x281014['error']['message']);}logger['error'](_0xccdc('0xd'),_0x406b6b,_0x281014[_0xccdc('0x12')][_0xccdc('0x14')]);return _0xf1fa47(_0x281014['error'][_0xccdc('0x14')]);}else{logger[_0xccdc('0xc')](_0xccdc('0xd'),_0x406b6b,'request\x20sent');_0xf1fa47(_0x281014[_0xccdc('0x15')][_0xccdc('0x14')]);}})[_0xccdc('0x16')](function(_0x27ff3e){logger[_0xccdc('0x12')](_0xccdc('0xd'),_0x406b6b,_0x27ff3e);_0x2c5c14(_0x27ff3e);});});}exports[_0xccdc('0x17')]=function(_0x5e528d){var _0x379993=this;return new Promise(function(_0x4aeae2,_0x200579){return db[_0xccdc('0x18')][_0xccdc('0x19')]({'raw':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1c')]||null:null,'attributes':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1d')]||null:null,'include':_0x5e528d[_0xccdc('0x1a')]?_0x5e528d[_0xccdc('0x1a')][_0xccdc('0x1e')]?_[_0xccdc('0x1f')](_0x5e528d['options'][_0xccdc('0x1e')],function(_0x27fb45){return{'model':db[_0x27fb45[_0xccdc('0x20')]],'as':_0x27fb45['as'],'attributes':_0x27fb45['attributes'],'include':_0x27fb45[_0xccdc('0x1e')]?_[_0xccdc('0x1f')](_0x27fb45[_0xccdc('0x1e')],function(_0x1bab58){return{'model':db[_0x1bab58[_0xccdc('0x20')]],'as':_0x1bab58['as'],'attributes':_0x1bab58[_0xccdc('0x1d')],'include':_0x1bab58['include']?_[_0xccdc('0x1f')](_0x1bab58[_0xccdc('0x1e')],function(_0x28209b){return{'model':db[_0x28209b[_0xccdc('0x20')]],'as':_0x28209b['as'],'attributes':_0x28209b['attributes']};}):[]};}):[]};}):[]:[]})[_0xccdc('0x21')](function(_0x152226){logger[_0xccdc('0xc')]('ShowSquareOdbc',_0x5e528d);logger[_0xccdc('0xe')](_0xccdc('0x17'),_0x5e528d,JSON[_0xccdc('0x11')](_0x152226));_0x4aeae2(_0x152226);})[_0xccdc('0x16')](function(_0x29ed8f){logger[_0xccdc('0x12')]('ShowSquareOdbc',_0x29ed8f['message'],_0x5e528d);_0x200579(_0x379993[_0xccdc('0x12')](0x1f4,_0x29ed8f[_0xccdc('0x14')]));});});};
\ No newline at end of file
+var _0x931a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ShowSquareOdbc','SquareOdbc','find','options','attributes','model','include','map','then','catch','lodash','util'];(function(_0x2d04c6,_0x3dc9e0){var _0x19abbd=function(_0x59e373){while(--_0x59e373){_0x2d04c6['push'](_0x2d04c6['shift']());}};_0x19abbd(++_0x3dc9e0);}(_0x931a,0xfe));var _0xa931=function(_0x55d6e3,_0xacdb0f){_0x55d6e3=_0x55d6e3-0x0;var _0x4ded90=_0x931a[_0x55d6e3];return _0x4ded90;};'use strict';var _=require(_0xa931('0x0'));var util=require(_0xa931('0x1'));var moment=require(_0xa931('0x2'));var BPromise=require(_0xa931('0x3'));var rs=require(_0xa931('0x4'));var fs=require('fs');var Redis=require(_0xa931('0x5'));var db=require(_0xa931('0x6'))['db'];var utils=require(_0xa931('0x7'));var logger=require('../../config/logger')(_0xa931('0x8'));var config=require(_0xa931('0x9'));var jayson=require(_0xa931('0xa'));var client=jayson[_0xa931('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x163d90,_0xfe6f76,_0xf26242){return new BPromise(function(_0x7da9c5,_0x34fcaa){return client[_0xa931('0xc')](_0x163d90,_0xf26242)['then'](function(_0x10950a){logger[_0xa931('0xd')](_0xa931('0xe'),_0xfe6f76,_0xa931('0xf'));logger[_0xa931('0x10')](_0xa931('0x11'),_0xfe6f76,_0xa931('0xf'),JSON[_0xa931('0x12')](_0x10950a));if(_0x10950a['error']){if(_0x10950a[_0xa931('0x13')][_0xa931('0x14')]===0x1f4){logger[_0xa931('0x13')](_0xa931('0xe'),_0xfe6f76,_0x10950a['error'][_0xa931('0x15')]);return _0x34fcaa(_0x10950a['error'][_0xa931('0x15')]);}logger[_0xa931('0x13')](_0xa931('0xe'),_0xfe6f76,_0x10950a[_0xa931('0x13')][_0xa931('0x15')]);return _0x7da9c5(_0x10950a[_0xa931('0x13')][_0xa931('0x15')]);}else{logger[_0xa931('0xd')](_0xa931('0xe'),_0xfe6f76,_0xa931('0xf'));_0x7da9c5(_0x10950a['result'][_0xa931('0x15')]);}})['catch'](function(_0x421a2b){logger[_0xa931('0x13')]('SquareOdbc,\x20%s,\x20%s',_0xfe6f76,_0x421a2b);_0x34fcaa(_0x421a2b);});});}exports[_0xa931('0x16')]=function(_0xffca75){var _0x23bfb3=this;return new Promise(function(_0x415941,_0xf995ab){return db[_0xa931('0x17')][_0xa931('0x18')]({'raw':_0xffca75[_0xa931('0x19')]?_0xffca75[_0xa931('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xffca75[_0xa931('0x19')]?_0xffca75['options']['where']||null:null,'attributes':_0xffca75[_0xa931('0x19')]?_0xffca75[_0xa931('0x19')][_0xa931('0x1a')]||null:null,'include':_0xffca75[_0xa931('0x19')]?_0xffca75['options']['include']?_['map'](_0xffca75[_0xa931('0x19')]['include'],function(_0x13e1b0){return{'model':db[_0x13e1b0[_0xa931('0x1b')]],'as':_0x13e1b0['as'],'attributes':_0x13e1b0[_0xa931('0x1a')],'include':_0x13e1b0[_0xa931('0x1c')]?_[_0xa931('0x1d')](_0x13e1b0[_0xa931('0x1c')],function(_0x4777d0){return{'model':db[_0x4777d0[_0xa931('0x1b')]],'as':_0x4777d0['as'],'attributes':_0x4777d0['attributes'],'include':_0x4777d0[_0xa931('0x1c')]?_[_0xa931('0x1d')](_0x4777d0[_0xa931('0x1c')],function(_0x27eac8){return{'model':db[_0x27eac8[_0xa931('0x1b')]],'as':_0x27eac8['as'],'attributes':_0x27eac8[_0xa931('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa931('0x1e')](function(_0x4847a1){logger['info']('ShowSquareOdbc',_0xffca75);logger['debug'](_0xa931('0x16'),_0xffca75,JSON[_0xa931('0x12')](_0x4847a1));_0x415941(_0x4847a1);})[_0xa931('0x1f')](function(_0x28f5b8){logger[_0xa931('0x13')]('ShowSquareOdbc',_0x28f5b8['message'],_0xffca75);_0xf995ab(_0x23bfb3['error'](0x1f4,_0x28f5b8[_0xa931('0x15')]));});});};
\ No newline at end of file
index b90e2b7..e14074a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae8=['update','delete','/:id','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','post','create','put'];(function(_0x1bb2c5,_0x5a3a8f){var _0x50782b=function(_0x59ede6){while(--_0x59ede6){_0x1bb2c5['push'](_0x1bb2c5['shift']());}};_0x50782b(++_0x5a3a8f);}(_0x7ae8,0x125));var _0x87ae=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7ae8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x87ae('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x87ae('0x1'));var router=express[_0x87ae('0x2')]();var fs_extra=require(_0x87ae('0x3'));var auth=require(_0x87ae('0x4'));var interaction=require(_0x87ae('0x5'));var config=require(_0x87ae('0x6'));var controller=require(_0x87ae('0x7'));router[_0x87ae('0x8')]('/',auth[_0x87ae('0x9')](),controller['index']);router['get']('/:id',auth[_0x87ae('0x9')](),controller['show']);router[_0x87ae('0xa')]('/',auth[_0x87ae('0x9')](),controller[_0x87ae('0xb')]);router[_0x87ae('0xc')]('/:id',auth[_0x87ae('0x9')](),controller[_0x87ae('0xd')]);router[_0x87ae('0xe')](_0x87ae('0xf'),auth[_0x87ae('0x9')](),controller['destroy']);module[_0x87ae('0x10')]=router;
\ No newline at end of file
+var _0xf13e=['index','/:id','show','post','put','delete','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated'];(function(_0x377217,_0x26b013){var _0x26258d=function(_0x1e1894){while(--_0x1e1894){_0x377217['push'](_0x377217['shift']());}};_0x26258d(++_0x26b013);}(_0xf13e,0x14c));var _0xef13=function(_0x31ddba,_0x28ec26){_0x31ddba=_0x31ddba-0x0;var _0x3f014c=_0xf13e[_0x31ddba];return _0x3f014c;};'use strict';var multer=require(_0xef13('0x0'));var util=require(_0xef13('0x1'));var path=require(_0xef13('0x2'));var timeout=require('connect-timeout');var express=require(_0xef13('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xef13('0x4'));var interaction=require(_0xef13('0x5'));var config=require(_0xef13('0x6'));var controller=require(_0xef13('0x7'));router[_0xef13('0x8')]('/',auth[_0xef13('0x9')](),controller[_0xef13('0xa')]);router[_0xef13('0x8')](_0xef13('0xb'),auth[_0xef13('0x9')](),controller[_0xef13('0xc')]);router[_0xef13('0xd')]('/',auth[_0xef13('0x9')](),controller['create']);router[_0xef13('0xe')]('/:id',auth[_0xef13('0x9')](),controller['update']);router[_0xef13('0xf')](_0xef13('0xb'),auth[_0xef13('0x9')](),controller[_0xef13('0x10')]);module[_0xef13('0x11')]=router;
\ No newline at end of file
index e1e92f8..0e8702e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf508=['getDataValue','preproduction','utf8','BLOB','production','toString','DATE','exports','STRING','name','TEXT','long'];(function(_0xf10277,_0x358eb4){var _0x5e5cf0=function(_0xfa5a3e){while(--_0xfa5a3e){_0xf10277['push'](_0xf10277['shift']());}};_0x5e5cf0(++_0x358eb4);}(_0xf508,0xa3));var _0x8f50=function(_0x42a214,_0x4a6828){_0x42a214=_0x42a214-0x0;var _0x4001ab=_0xf508[_0x42a214];return _0x4001ab;};'use strict';var Sequelize=require('sequelize');module[_0x8f50('0x0')]={'name':{'type':Sequelize[_0x8f50('0x1')],'unique':_0x8f50('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x8f50('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0x8f50('0x4')),'get':function(){if(this[_0x8f50('0x5')](_0x8f50('0x6'))){return this[_0x8f50('0x5')](_0x8f50('0x6'))['toString'](_0x8f50('0x7'));}}},'production':{'type':Sequelize[_0x8f50('0x8')](_0x8f50('0x4')),'get':function(){if(this[_0x8f50('0x5')](_0x8f50('0x9'))){return this['getDataValue']('production')[_0x8f50('0xa')](_0x8f50('0x7'));}}},'savedAt':{'type':Sequelize[_0x8f50('0xb')]},'publishedAt':{'type':Sequelize[_0x8f50('0xb')]}};
\ No newline at end of file
+var _0x58d8=['long','production','DATE','sequelize','exports','name','STRING','TEXT','preproduction','getDataValue','toString','utf8','BLOB'];(function(_0xc40b9f,_0x17ec1f){var _0x535b9c=function(_0x591b19){while(--_0x591b19){_0xc40b9f['push'](_0xc40b9f['shift']());}};_0x535b9c(++_0x17ec1f);}(_0x58d8,0xb9));var _0x858d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x58d8[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x858d('0x0'));module[_0x858d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x858d('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x858d('0x3')]},'notes':{'type':Sequelize[_0x858d('0x4')]},'preproduction':{'type':Sequelize['BLOB']('long'),'get':function(){if(this['getDataValue'](_0x858d('0x5'))){return this[_0x858d('0x6')](_0x858d('0x5'))[_0x858d('0x7')](_0x858d('0x8'));}}},'production':{'type':Sequelize[_0x858d('0x9')](_0x858d('0xa')),'get':function(){if(this['getDataValue'](_0x858d('0xb'))){return this[_0x858d('0x6')](_0x858d('0xb'))[_0x858d('0x7')](_0x858d('0x8'));}}},'savedAt':{'type':Sequelize[_0x858d('0xc')]},'publishedAt':{'type':Sequelize[_0x858d('0xc')]}};
\ No newline at end of file
index 7a384eb..223ab5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ba=['where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','catch','show','params','SquareProject','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','stringify','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./squareProject.socket','status','offset','undefined','count','limit','set','then','get','SquareProjects','UserProfileResource','destroy','publish','agi','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort'];(function(_0x42a532,_0x2baa85){var _0x85d8d8=function(_0x233b1f){while(--_0x233b1f){_0x42a532['push'](_0x42a532['shift']());}};_0x85d8d8(++_0x2baa85);}(_0xa4ba,0x170));var _0xaa4b=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xa4ba[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0xaa4b('0x0'));var Redis=require(_0xaa4b('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xaa4b('0x2'))(_0xaa4b('0x3'));var config=require(_0xaa4b('0x4'));var db=require(_0xaa4b('0x5'))['db'];config['redis']=_[_0xaa4b('0x6')](config[_0xaa4b('0x7')],{'host':_0xaa4b('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaa4b('0x7')]));require(_0xaa4b('0x9'))['register'](socket);function respondWithResult(_0x3b32db,_0x25277a){_0x25277a=_0x25277a||0xc8;return function(_0x2003e6){if(_0x2003e6){return _0x3b32db[_0xaa4b('0xa')](_0x25277a)['json'](_0x2003e6);}};}function respondWithFilteredResult(_0x480d66,_0x414fbd){return function(_0x16666c){if(_0x16666c){var _0x118d0d=typeof _0x414fbd[_0xaa4b('0xb')]===_0xaa4b('0xc')&&typeof _0x414fbd['limit']==='undefined';var _0x31be56=_0x16666c[_0xaa4b('0xd')];var _0x43aadb=_0x118d0d?0x0:_0x414fbd['offset'];var _0x27c501=_0x118d0d?_0x16666c[_0xaa4b('0xd')]:_0x414fbd[_0xaa4b('0xb')]+_0x414fbd[_0xaa4b('0xe')];var _0xcb1577;if(_0x27c501>=_0x31be56){_0x27c501=_0x31be56;_0xcb1577=0xc8;}else{_0xcb1577=0xce;}_0x480d66[_0xaa4b('0xa')](_0xcb1577);return _0x480d66[_0xaa4b('0xf')]('Content-Range',_0x43aadb+'-'+_0x27c501+'/'+_0x31be56)['json'](_0x16666c);}return null;};}function saveUpdates(_0x11751f){return function(_0x5e25ef){if(_0x5e25ef){return _0x5e25ef['update'](_0x11751f)[_0xaa4b('0x10')](function(_0x4afd95){return _0x4afd95;});}return null;};}function removeEntity(_0x551d38){return function(_0x3d37fa){if(_0x3d37fa){return _0x3d37fa['destroy']()[_0xaa4b('0x10')](function(){var _0x4ad960=_0x3d37fa[_0xaa4b('0x11')]({'plain':!![]});var _0x25415e=_0xaa4b('0x12');return db[_0xaa4b('0x13')][_0xaa4b('0x14')]({'where':{'type':_0x25415e,'resourceId':_0x4ad960['id']}})['then'](function(){return _0x3d37fa;});})[_0xaa4b('0x10')](function(){var _0x5e61c0=new Redis(config[_0xaa4b('0x7')]);_0x5e61c0[_0xaa4b('0x15')](_0xaa4b('0x16'),JSON['stringify']({'id':_0x3d37fa['id'],'deleted':!![]}));})[_0xaa4b('0x10')](function(){_0x551d38['status'](0xcc)[_0xaa4b('0x17')]();});}};}function handleEntityNotFound(_0x4c9c0a){return function(_0x3d8523){if(!_0x3d8523){_0x4c9c0a[_0xaa4b('0x18')](0x194);}return _0x3d8523;};}function handleError(_0x5c988c,_0x486d6b){_0x486d6b=_0x486d6b||0x1f4;return function(_0x137ac4){logger[_0xaa4b('0x19')](_0x137ac4[_0xaa4b('0x1a')]);if(_0x137ac4[_0xaa4b('0x1b')]){delete _0x137ac4['name'];}_0x5c988c[_0xaa4b('0xa')](_0x486d6b)[_0xaa4b('0x1c')](_0x137ac4);};}exports[_0xaa4b('0x1d')]=function(_0x342eb4,_0x5428a0){var _0x36d5a4={},_0x4547a3={},_0x32a42c={'count':0x0,'rows':[]};var _0x4a74bf=_[_0xaa4b('0x1e')](db['SquareProject'][_0xaa4b('0x1f')],function(_0x34978c){return{'name':_0x34978c[_0xaa4b('0x20')],'type':_0x34978c['type'][_0xaa4b('0x21')]};});_0x4547a3[_0xaa4b('0x22')]=_[_0xaa4b('0x1e')](_0x4a74bf,_0xaa4b('0x1b'));_0x4547a3[_0xaa4b('0x23')]=_[_0xaa4b('0x24')](_0x342eb4[_0xaa4b('0x23')]);_0x4547a3[_0xaa4b('0x25')]=_[_0xaa4b('0x26')](_0x4547a3[_0xaa4b('0x22')],_0x4547a3['query']);_0x36d5a4['attributes']=_[_0xaa4b('0x26')](_0x4547a3[_0xaa4b('0x22')],qs[_0xaa4b('0x27')](_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x27')]));_0x36d5a4[_0xaa4b('0x28')]=_0x36d5a4[_0xaa4b('0x28')][_0xaa4b('0x29')]?_0x36d5a4[_0xaa4b('0x28')]:_0x4547a3[_0xaa4b('0x22')];if(!_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x2a')](_0xaa4b('0x2b'))){_0x36d5a4[_0xaa4b('0xe')]=qs[_0xaa4b('0xe')](_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0xe')]);_0x36d5a4[_0xaa4b('0xb')]=qs[_0xaa4b('0xb')](_0x342eb4[_0xaa4b('0x23')]['offset']);}_0x36d5a4[_0xaa4b('0x2c')]=qs[_0xaa4b('0x2d')](_0x342eb4[_0xaa4b('0x23')]['sort']);_0x36d5a4[_0xaa4b('0x2e')]=qs[_0xaa4b('0x25')](_[_0xaa4b('0x2f')](_0x342eb4[_0xaa4b('0x23')],_0x4547a3[_0xaa4b('0x25')]),_0x4a74bf);if(_0x342eb4[_0xaa4b('0x23')]['filter']){_0x36d5a4[_0xaa4b('0x2e')]=_['merge'](_0x36d5a4['where'],{'$or':_[_0xaa4b('0x1e')](_0x4a74bf,function(_0x5e4463){if(_0x5e4463[_0xaa4b('0x30')]!==_0xaa4b('0x31')){var _0x400643={};_0x400643[_0x5e4463[_0xaa4b('0x1b')]]={'$like':'%'+_0x342eb4['query'][_0xaa4b('0x32')]+'%'};return _0x400643;}})});}_0x36d5a4=_[_0xaa4b('0x33')]({},_0x36d5a4,_0x342eb4[_0xaa4b('0x34')]);var _0x4f5dc2={'where':_0x36d5a4[_0xaa4b('0x2e')]};return db['SquareProject']['count'](_0x4f5dc2)[_0xaa4b('0x10')](function(_0x4c5d5d){_0x32a42c[_0xaa4b('0xd')]=_0x4c5d5d;if(_0x342eb4[_0xaa4b('0x23')][_0xaa4b('0x35')]){_0x36d5a4[_0xaa4b('0x36')]=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x36d5a4);})['then'](function(_0x1db6c1){_0x32a42c['rows']=_0x1db6c1;return _0x32a42c;})[_0xaa4b('0x10')](respondWithFilteredResult(_0x5428a0,_0x36d5a4))[_0xaa4b('0x37')](handleError(_0x5428a0,null));};exports[_0xaa4b('0x38')]=function(_0x17d279,_0x279383){var _0x203bb6={'raw':![],'where':{'id':_0x17d279[_0xaa4b('0x39')]['id']}},_0x5b7be1={};_0x5b7be1[_0xaa4b('0x22')]=_[_0xaa4b('0x24')](db[_0xaa4b('0x3a')][_0xaa4b('0x1f')]);_0x5b7be1[_0xaa4b('0x23')]=_[_0xaa4b('0x24')](_0x17d279[_0xaa4b('0x23')]);_0x5b7be1[_0xaa4b('0x25')]=_[_0xaa4b('0x26')](_0x5b7be1[_0xaa4b('0x22')],_0x5b7be1[_0xaa4b('0x23')]);_0x203bb6[_0xaa4b('0x28')]=_['intersection'](_0x5b7be1[_0xaa4b('0x22')],qs[_0xaa4b('0x27')](_0x17d279[_0xaa4b('0x23')][_0xaa4b('0x27')]));_0x203bb6[_0xaa4b('0x28')]=_0x203bb6[_0xaa4b('0x28')][_0xaa4b('0x29')]?_0x203bb6['attributes']:_0x5b7be1[_0xaa4b('0x22')];if(_0x17d279[_0xaa4b('0x23')][_0xaa4b('0x35')]){_0x203bb6[_0xaa4b('0x36')]=[{'all':!![]}];}_0x203bb6=_['merge']({},_0x203bb6,_0x17d279[_0xaa4b('0x34')]);return db[_0xaa4b('0x3a')]['find'](_0x203bb6)[_0xaa4b('0x10')](handleEntityNotFound(_0x279383,null))[_0xaa4b('0x10')](respondWithResult(_0x279383,null))['catch'](handleError(_0x279383,null));};exports[_0xaa4b('0x3b')]=function(_0x2caadc,_0x19d801){return db[_0xaa4b('0x3a')][_0xaa4b('0x3b')](_0x2caadc[_0xaa4b('0x3c')],{})[_0xaa4b('0x10')](function(_0x555c54){var _0x361314=_0x2caadc['user'][_0xaa4b('0x11')]({'plain':!![]});if(!_0x361314)throw new Error(_0xaa4b('0x3d'));if(_0x361314['role']===_0xaa4b('0x3e')){var _0x55e6db=_0x555c54[_0xaa4b('0x11')]({'plain':!![]});var _0x5b1774='SquareProjects';return db['UserProfileSection'][_0xaa4b('0x3f')]({'where':{'name':_0x5b1774,'userProfileId':_0x361314[_0xaa4b('0x40')]},'raw':!![]})[_0xaa4b('0x10')](function(_0x17c905){if(_0x17c905&&_0x17c905[_0xaa4b('0x41')]===0x0){return db[_0xaa4b('0x13')]['create']({'name':_0x55e6db[_0xaa4b('0x1b')],'resourceId':_0x55e6db['id'],'type':_0x17c905[_0xaa4b('0x1b')],'sectionId':_0x17c905['id']},{})['then'](function(){return _0x555c54;});}else{return _0x555c54;}})[_0xaa4b('0x37')](function(_0x571393){logger['error'](_0xaa4b('0x42'),_0x571393);throw _0x571393;});}return _0x555c54;})[_0xaa4b('0x10')](respondWithResult(_0x19d801,0xc9))[_0xaa4b('0x37')](handleError(_0x19d801,null));};exports[_0xaa4b('0x43')]=function(_0xfbd610,_0x4f0def){if(_0xfbd610[_0xaa4b('0x3c')]['id']){delete _0xfbd610[_0xaa4b('0x3c')]['id'];}return db[_0xaa4b('0x3a')][_0xaa4b('0x3f')]({'where':{'id':_0xfbd610['params']['id']}})[_0xaa4b('0x10')](handleEntityNotFound(_0x4f0def,null))[_0xaa4b('0x10')](saveUpdates(_0xfbd610[_0xaa4b('0x3c')],null))[_0xaa4b('0x10')](function(_0x4ee722){if(!_0x4ee722)return;var _0x295112=_0x4ee722[_0xaa4b('0x11')]({'plain':!![]});return _0x295112;})[_0xaa4b('0x10')](function(_0x4e744a){var _0x137636=new Redis(config[_0xaa4b('0x7')]);_0x137636[_0xaa4b('0x15')](_0xaa4b('0x16'),JSON[_0xaa4b('0x44')](_[_0xaa4b('0x2f')](_0x4e744a,['id',_0xaa4b('0x1b'),'production'])));return _0x4e744a;})[_0xaa4b('0x10')](respondWithResult(_0x4f0def,null))[_0xaa4b('0x37')](handleError(_0x4f0def,null));};exports['destroy']=function(_0x3e75de,_0x144710){return db[_0xaa4b('0x3a')]['find']({'where':{'id':_0x3e75de[_0xaa4b('0x39')]['id']}})['then'](handleEntityNotFound(_0x144710,null))['then'](removeEntity(_0x144710,null))[_0xaa4b('0x37')](handleError(_0x144710,null));};
\ No newline at end of file
+var _0x1995=['map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','SquareProject','count','include','findAll','rows','catch','show','params','includeAll','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','publish','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./squareProject.socket','register','status','offset','limit','undefined','set','Content-Range','json','update','then','SquareProjects','UserProfileResource','destroy','agi','stringify','end','sendStatus','error','stack','name','index'];(function(_0x245208,_0x5ed2c6){var _0x5187dc=function(_0x3aa563){while(--_0x3aa563){_0x245208['push'](_0x245208['shift']());}};_0x5187dc(++_0x5ed2c6);}(_0x1995,0x6f));var _0x5199=function(_0x40c13b,_0x1607a7){_0x40c13b=_0x40c13b-0x0;var _0x512f95=_0x1995[_0x40c13b];return _0x512f95;};'use strict';var _=require(_0x5199('0x0'));var Redis=require(_0x5199('0x1'));var qs=require(_0x5199('0x2'));var logger=require(_0x5199('0x3'))('api');var config=require('../../config/environment');var db=require(_0x5199('0x4'))['db'];config['redis']=_[_0x5199('0x5')](config['redis'],{'host':_0x5199('0x6'),'port':0x18eb});var socket=require(_0x5199('0x7'))(new Redis(config[_0x5199('0x8')]));require(_0x5199('0x9'))[_0x5199('0xa')](socket);function respondWithResult(_0x1fc4de,_0x9edca3){_0x9edca3=_0x9edca3||0xc8;return function(_0x5d2d8e){if(_0x5d2d8e){return _0x1fc4de[_0x5199('0xb')](_0x9edca3)['json'](_0x5d2d8e);}};}function respondWithFilteredResult(_0xc23b1e,_0x1f117f){return function(_0x4aa051){if(_0x4aa051){var _0x468746=typeof _0x1f117f[_0x5199('0xc')]==='undefined'&&typeof _0x1f117f[_0x5199('0xd')]===_0x5199('0xe');var _0x36cf0e=_0x4aa051['count'];var _0x24cbcd=_0x468746?0x0:_0x1f117f[_0x5199('0xc')];var _0x48571c=_0x468746?_0x4aa051['count']:_0x1f117f[_0x5199('0xc')]+_0x1f117f[_0x5199('0xd')];var _0x177717;if(_0x48571c>=_0x36cf0e){_0x48571c=_0x36cf0e;_0x177717=0xc8;}else{_0x177717=0xce;}_0xc23b1e[_0x5199('0xb')](_0x177717);return _0xc23b1e[_0x5199('0xf')](_0x5199('0x10'),_0x24cbcd+'-'+_0x48571c+'/'+_0x36cf0e)[_0x5199('0x11')](_0x4aa051);}return null;};}function saveUpdates(_0x432d95){return function(_0x3eb32f){if(_0x3eb32f){return _0x3eb32f[_0x5199('0x12')](_0x432d95)['then'](function(_0x1042b6){return _0x1042b6;});}return null;};}function removeEntity(_0x1f53bc){return function(_0x3a8126){if(_0x3a8126){return _0x3a8126['destroy']()[_0x5199('0x13')](function(){var _0x6cd36d=_0x3a8126['get']({'plain':!![]});var _0x4d9586=_0x5199('0x14');return db[_0x5199('0x15')][_0x5199('0x16')]({'where':{'type':_0x4d9586,'resourceId':_0x6cd36d['id']}})[_0x5199('0x13')](function(){return _0x3a8126;});})[_0x5199('0x13')](function(){var _0x3fa784=new Redis(config[_0x5199('0x8')]);_0x3fa784['publish'](_0x5199('0x17'),JSON[_0x5199('0x18')]({'id':_0x3a8126['id'],'deleted':!![]}));})['then'](function(){_0x1f53bc[_0x5199('0xb')](0xcc)[_0x5199('0x19')]();});}};}function handleEntityNotFound(_0x2f01d0){return function(_0x35e7cf){if(!_0x35e7cf){_0x2f01d0[_0x5199('0x1a')](0x194);}return _0x35e7cf;};}function handleError(_0x473a84,_0x271acb){_0x271acb=_0x271acb||0x1f4;return function(_0x445fa3){logger[_0x5199('0x1b')](_0x445fa3[_0x5199('0x1c')]);if(_0x445fa3[_0x5199('0x1d')]){delete _0x445fa3[_0x5199('0x1d')];}_0x473a84[_0x5199('0xb')](_0x271acb)['send'](_0x445fa3);};}exports[_0x5199('0x1e')]=function(_0x20f088,_0x37f086){var _0x208eb2={},_0x201a2f={},_0x2a9a8f={'count':0x0,'rows':[]};var _0x229d84=_[_0x5199('0x1f')](db['SquareProject'][_0x5199('0x20')],function(_0x1efe88){return{'name':_0x1efe88[_0x5199('0x21')],'type':_0x1efe88[_0x5199('0x22')]['key']};});_0x201a2f[_0x5199('0x23')]=_['map'](_0x229d84,'name');_0x201a2f[_0x5199('0x24')]=_[_0x5199('0x25')](_0x20f088[_0x5199('0x24')]);_0x201a2f[_0x5199('0x26')]=_[_0x5199('0x27')](_0x201a2f['model'],_0x201a2f['query']);_0x208eb2[_0x5199('0x28')]=_['intersection'](_0x201a2f[_0x5199('0x23')],qs[_0x5199('0x29')](_0x20f088[_0x5199('0x24')][_0x5199('0x29')]));_0x208eb2[_0x5199('0x28')]=_0x208eb2['attributes'][_0x5199('0x2a')]?_0x208eb2[_0x5199('0x28')]:_0x201a2f[_0x5199('0x23')];if(!_0x20f088[_0x5199('0x24')][_0x5199('0x2b')](_0x5199('0x2c'))){_0x208eb2[_0x5199('0xd')]=qs[_0x5199('0xd')](_0x20f088['query'][_0x5199('0xd')]);_0x208eb2[_0x5199('0xc')]=qs[_0x5199('0xc')](_0x20f088['query'][_0x5199('0xc')]);}_0x208eb2[_0x5199('0x2d')]=qs['sort'](_0x20f088['query']['sort']);_0x208eb2[_0x5199('0x2e')]=qs[_0x5199('0x26')](_[_0x5199('0x2f')](_0x20f088[_0x5199('0x24')],_0x201a2f[_0x5199('0x26')]),_0x229d84);if(_0x20f088[_0x5199('0x24')][_0x5199('0x30')]){_0x208eb2[_0x5199('0x2e')]=_[_0x5199('0x31')](_0x208eb2[_0x5199('0x2e')],{'$or':_[_0x5199('0x1f')](_0x229d84,function(_0x4ad94d){if(_0x4ad94d[_0x5199('0x22')]!==_0x5199('0x32')){var _0x489c62={};_0x489c62[_0x4ad94d[_0x5199('0x1d')]]={'$like':'%'+_0x20f088[_0x5199('0x24')]['filter']+'%'};return _0x489c62;}})});}_0x208eb2=_[_0x5199('0x31')]({},_0x208eb2,_0x20f088['options']);var _0x14f5cc={'where':_0x208eb2[_0x5199('0x2e')]};return db[_0x5199('0x33')][_0x5199('0x34')](_0x14f5cc)[_0x5199('0x13')](function(_0x5db4b5){_0x2a9a8f['count']=_0x5db4b5;if(_0x20f088['query']['includeAll']){_0x208eb2[_0x5199('0x35')]=[{'all':!![]}];}return db['SquareProject'][_0x5199('0x36')](_0x208eb2);})[_0x5199('0x13')](function(_0x4da257){_0x2a9a8f[_0x5199('0x37')]=_0x4da257;return _0x2a9a8f;})['then'](respondWithFilteredResult(_0x37f086,_0x208eb2))[_0x5199('0x38')](handleError(_0x37f086,null));};exports[_0x5199('0x39')]=function(_0x496c53,_0x17df7d){var _0x19e1c4={'raw':![],'where':{'id':_0x496c53[_0x5199('0x3a')]['id']}},_0x18f3a2={};_0x18f3a2['model']=_[_0x5199('0x25')](db['SquareProject'][_0x5199('0x20')]);_0x18f3a2['query']=_[_0x5199('0x25')](_0x496c53[_0x5199('0x24')]);_0x18f3a2[_0x5199('0x26')]=_[_0x5199('0x27')](_0x18f3a2[_0x5199('0x23')],_0x18f3a2[_0x5199('0x24')]);_0x19e1c4[_0x5199('0x28')]=_[_0x5199('0x27')](_0x18f3a2['model'],qs[_0x5199('0x29')](_0x496c53[_0x5199('0x24')]['fields']));_0x19e1c4[_0x5199('0x28')]=_0x19e1c4[_0x5199('0x28')][_0x5199('0x2a')]?_0x19e1c4[_0x5199('0x28')]:_0x18f3a2['model'];if(_0x496c53['query'][_0x5199('0x3b')]){_0x19e1c4[_0x5199('0x35')]=[{'all':!![]}];}_0x19e1c4=_[_0x5199('0x31')]({},_0x19e1c4,_0x496c53[_0x5199('0x3c')]);return db[_0x5199('0x33')]['find'](_0x19e1c4)[_0x5199('0x13')](handleEntityNotFound(_0x17df7d,null))[_0x5199('0x13')](respondWithResult(_0x17df7d,null))[_0x5199('0x38')](handleError(_0x17df7d,null));};exports[_0x5199('0x3d')]=function(_0x30e432,_0x5b2eee){return db[_0x5199('0x33')][_0x5199('0x3d')](_0x30e432[_0x5199('0x3e')],{})[_0x5199('0x13')](function(_0x44519c){var _0x144b37=_0x30e432[_0x5199('0x3f')][_0x5199('0x40')]({'plain':!![]});if(!_0x144b37)throw new Error(_0x5199('0x41'));if(_0x144b37[_0x5199('0x42')]===_0x5199('0x3f')){var _0x48fb41=_0x44519c[_0x5199('0x40')]({'plain':!![]});var _0x23bf2a='SquareProjects';return db[_0x5199('0x43')][_0x5199('0x44')]({'where':{'name':_0x23bf2a,'userProfileId':_0x144b37['userProfileId']},'raw':!![]})[_0x5199('0x13')](function(_0x2048b0){if(_0x2048b0&&_0x2048b0['autoAssociation']===0x0){return db['UserProfileResource'][_0x5199('0x3d')]({'name':_0x48fb41['name'],'resourceId':_0x48fb41['id'],'type':_0x2048b0['name'],'sectionId':_0x2048b0['id']},{})[_0x5199('0x13')](function(){return _0x44519c;});}else{return _0x44519c;}})[_0x5199('0x38')](function(_0x1035db){logger[_0x5199('0x1b')](_0x5199('0x45'),_0x1035db);throw _0x1035db;});}return _0x44519c;})[_0x5199('0x13')](respondWithResult(_0x5b2eee,0xc9))['catch'](handleError(_0x5b2eee,null));};exports[_0x5199('0x12')]=function(_0x32e27a,_0x198fff){if(_0x32e27a[_0x5199('0x3e')]['id']){delete _0x32e27a[_0x5199('0x3e')]['id'];}return db[_0x5199('0x33')]['find']({'where':{'id':_0x32e27a[_0x5199('0x3a')]['id']}})[_0x5199('0x13')](handleEntityNotFound(_0x198fff,null))[_0x5199('0x13')](saveUpdates(_0x32e27a[_0x5199('0x3e')],null))[_0x5199('0x13')](function(_0x3fe32b){if(!_0x3fe32b)return;var _0x3cde4d=_0x3fe32b[_0x5199('0x40')]({'plain':!![]});return _0x3cde4d;})[_0x5199('0x13')](function(_0x5338b4){var _0x12cc55=new Redis(config['redis']);_0x12cc55[_0x5199('0x46')](_0x5199('0x17'),JSON[_0x5199('0x18')](_[_0x5199('0x2f')](_0x5338b4,['id','name','production'])));return _0x5338b4;})['then'](respondWithResult(_0x198fff,null))[_0x5199('0x38')](handleError(_0x198fff,null));};exports['destroy']=function(_0x4c49ea,_0x4f6bd9){return db[_0x5199('0x33')][_0x5199('0x44')]({'where':{'id':_0x4c49ea['params']['id']}})[_0x5199('0x13')](handleEntityNotFound(_0x4f6bd9,null))[_0x5199('0x13')](removeEntity(_0x4f6bd9,null))['catch'](handleError(_0x4f6bd9,null));};
\ No newline at end of file
index 6553ade..92b1e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a0=['save','update','emit','events','SquareProject','setMaxListeners'];(function(_0x5a4de1,_0x319822){var _0x1b6915=function(_0x386a6b){while(--_0x386a6b){_0x5a4de1['push'](_0x5a4de1['shift']());}};_0x1b6915(++_0x319822);}(_0xa2a0,0xc9));var _0x0a2a=function(_0x33545d,_0x3a5e29){_0x33545d=_0x33545d-0x0;var _0x27d188=_0xa2a0[_0x33545d];return _0x27d188;};'use strict';var EventEmitter=require(_0x0a2a('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x0a2a('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x0a2a('0x2')](0x0);var events={'afterCreate':_0x0a2a('0x3'),'afterUpdate':_0x0a2a('0x4'),'afterDestroy':'remove'};function emitEvent(_0xcd866c){return function(_0xe5645c,_0x5dd427,_0x13f1b4){SquareProjectEvents['emit'](_0xcd866c+':'+_0xe5645c['id'],_0xe5645c);SquareProjectEvents[_0x0a2a('0x5')](_0xcd866c,_0xe5645c);_0x13f1b4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0xc757=['emit','exports','events','SquareProject','setMaxListeners','save','remove'];(function(_0x2f89e8,_0x1b8c1f){var _0x22c1d2=function(_0x5b1e55){while(--_0x5b1e55){_0x2f89e8['push'](_0x2f89e8['shift']());}};_0x22c1d2(++_0x1b8c1f);}(_0xc757,0xb8));var _0x7c75=function(_0x11aa99,_0x41b866){_0x11aa99=_0x11aa99-0x0;var _0x3f6232=_0xc757[_0x11aa99];return _0x3f6232;};'use strict';var EventEmitter=require(_0x7c75('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x7c75('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x7c75('0x2')](0x0);var events={'afterCreate':_0x7c75('0x3'),'afterUpdate':'update','afterDestroy':_0x7c75('0x4')};function emitEvent(_0x30b389){return function(_0x211070,_0xb22854,_0x4329d4){SquareProjectEvents[_0x7c75('0x5')](_0x30b389+':'+_0x211070['id'],_0x211070);SquareProjectEvents[_0x7c75('0x5')](_0x30b389,_0x211070);_0x4329d4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x7c75('0x6')]=SquareProjectEvents;
\ No newline at end of file
index ad531ae..b1e3a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf823=['./squareProject.attributes','exports','define','changed','preproduction','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format','lodash','util','../../config/logger','request-promise','path','../../config/environment'];(function(_0x4ebc7b,_0x255c0d){var _0x52a271=function(_0x2dbaaa){while(--_0x2dbaaa){_0x4ebc7b['push'](_0x4ebc7b['shift']());}};_0x52a271(++_0x255c0d);}(_0xf823,0x108));var _0x3f82=function(_0x5d7568,_0x5c5aaa){_0x5d7568=_0x5d7568-0x0;var _0x49320a=_0xf823[_0x5d7568];return _0x49320a;};'use strict';var _=require(_0x3f82('0x0'));var util=require(_0x3f82('0x1'));var logger=require(_0x3f82('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3f82('0x3'));var fs=require('fs');var path=require(_0x3f82('0x4'));var rimraf=require('rimraf');var config=require(_0x3f82('0x5'));var attributes=require(_0x3f82('0x6'));module[_0x3f82('0x7')]=function(_0x11649e,_0x11a9ed){return _0x11649e[_0x3f82('0x8')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4a21ea,_0xe72f44,_0x3fb286){if(_0x4a21ea[_0x3f82('0x9')](_0x3f82('0xa'))){_0x4a21ea['savedAt']=moment()['format'](_0x3f82('0xb'));}if(_0x4a21ea[_0x3f82('0x9')](_0x3f82('0xc'))){_0x4a21ea[_0x3f82('0xd')]=moment()[_0x3f82('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3fb286(null,_0x4a21ea);}}});};
\ No newline at end of file
+var _0xf497=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','publishedAt','lodash'];(function(_0x1c3370,_0xf617e8){var _0xa9b358=function(_0x39cb44){while(--_0x39cb44){_0x1c3370['push'](_0x1c3370['shift']());}};_0xa9b358(++_0xf617e8);}(_0xf497,0x168));var _0x7f49=function(_0x6a609d,_0xb1f5d3){_0x6a609d=_0x6a609d-0x0;var _0x3826c1=_0xf497[_0x6a609d];return _0x3826c1;};'use strict';var _=require(_0x7f49('0x0'));var util=require(_0x7f49('0x1'));var logger=require(_0x7f49('0x2'))(_0x7f49('0x3'));var moment=require(_0x7f49('0x4'));var BPromise=require(_0x7f49('0x5'));var rp=require(_0x7f49('0x6'));var fs=require('fs');var path=require(_0x7f49('0x7'));var rimraf=require(_0x7f49('0x8'));var config=require('../../config/environment');var attributes=require(_0x7f49('0x9'));module[_0x7f49('0xa')]=function(_0x3e102c,_0x4a0464){return _0x3e102c[_0x7f49('0xb')](_0x7f49('0xc'),attributes,{'tableName':_0x7f49('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x508d79,_0x5cce40,_0x12d083){if(_0x508d79[_0x7f49('0xe')](_0x7f49('0xf'))){_0x508d79[_0x7f49('0x10')]=moment()['format'](_0x7f49('0x11'));}if(_0x508d79['changed']('production')){_0x508d79[_0x7f49('0x12')]=moment()['format'](_0x7f49('0x11'));}_0x12d083(null,_0x508d79);}}});};
\ No newline at end of file
index 217a44e..4364ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a6=['include','map','model','then','info','GetSquareProjects','debug','message','ShowSquareProject','SquareProject','find','stringify','catch','error','lodash','ioredis','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','findAll','options','raw','where','attributes','limit'];(function(_0x4e0f6e,_0x600f16){var _0x35f065=function(_0x46f737){while(--_0x46f737){_0x4e0f6e['push'](_0x4e0f6e['shift']());}};_0x35f065(++_0x600f16);}(_0x77a6,0x65));var _0x677a=function(_0xcee609,_0x96d847){_0xcee609=_0xcee609-0x0;var _0x4f9afe=_0x77a6[_0xcee609];return _0x4f9afe;};'use strict';var _=require(_0x677a('0x0'));var Redis=require(_0x677a('0x1'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x677a('0x2'));var config=require(_0x677a('0x3'));config[_0x677a('0x4')]=_[_0x677a('0x5')](config[_0x677a('0x4')],{'host':_0x677a('0x6'),'port':0x18eb});var socket=require(_0x677a('0x7'))(new Redis(config[_0x677a('0x4')]));require('./squareProject.socket')[_0x677a('0x8')](socket);exports['GetSquareProjects']=function(_0x1f8a7f){var _0x10c3c6=this;return new Promise(function(_0x51efea,_0x35c056){return db['SquareProject'][_0x677a('0x9')]({'raw':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f[_0x677a('0xa')][_0x677a('0xb')]===undefined?!![]:![]:!![],'where':_0x1f8a7f['options']?_0x1f8a7f['options'][_0x677a('0xc')]||null:null,'attributes':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f['options'][_0x677a('0xd')]||null:null,'limit':_0x1f8a7f['options']?_0x1f8a7f[_0x677a('0xa')][_0x677a('0xe')]||null:null,'include':_0x1f8a7f[_0x677a('0xa')]?_0x1f8a7f['options'][_0x677a('0xf')]?_[_0x677a('0x10')](_0x1f8a7f[_0x677a('0xa')][_0x677a('0xf')],function(_0x5d170c){return{'model':db[_0x5d170c[_0x677a('0x11')]],'as':_0x5d170c['as'],'attributes':_0x5d170c[_0x677a('0xd')],'include':_0x5d170c[_0x677a('0xf')]?_[_0x677a('0x10')](_0x5d170c[_0x677a('0xf')],function(_0x369238){return{'model':db[_0x369238[_0x677a('0x11')]],'as':_0x369238['as'],'attributes':_0x369238['attributes'],'include':_0x369238[_0x677a('0xf')]?_[_0x677a('0x10')](_0x369238[_0x677a('0xf')],function(_0x316c57){return{'model':db[_0x316c57[_0x677a('0x11')]],'as':_0x316c57['as'],'attributes':_0x316c57['attributes']};}):[]};}):[]};}):[]:[]})[_0x677a('0x12')](function(_0x4bdead){logger[_0x677a('0x13')](_0x677a('0x14'),_0x1f8a7f);logger[_0x677a('0x15')]('GetSquareProjects',_0x1f8a7f,JSON['stringify'](_0x4bdead));_0x51efea(_0x4bdead);})['catch'](function(_0x17b411){logger['error'](_0x677a('0x14'),_0x17b411[_0x677a('0x16')],_0x1f8a7f);_0x35c056(_0x10c3c6['error'](0x1f4,_0x17b411[_0x677a('0x16')]));});});};exports[_0x677a('0x17')]=function(_0x35e577){var _0x3e1e65=this;return new Promise(function(_0x17872d,_0x5dcb4c){return db[_0x677a('0x18')][_0x677a('0x19')]({'raw':_0x35e577[_0x677a('0xa')]?_0x35e577[_0x677a('0xa')][_0x677a('0xb')]===undefined?!![]:![]:!![],'where':_0x35e577[_0x677a('0xa')]?_0x35e577[_0x677a('0xa')]['where']||null:null,'attributes':_0x35e577[_0x677a('0xa')]?_0x35e577['options'][_0x677a('0xd')]||null:null,'include':_0x35e577['options']?_0x35e577[_0x677a('0xa')][_0x677a('0xf')]?_[_0x677a('0x10')](_0x35e577[_0x677a('0xa')][_0x677a('0xf')],function(_0x4b51f6){return{'model':db[_0x4b51f6['model']],'as':_0x4b51f6['as'],'attributes':_0x4b51f6[_0x677a('0xd')],'include':_0x4b51f6['include']?_[_0x677a('0x10')](_0x4b51f6[_0x677a('0xf')],function(_0x2cbf89){return{'model':db[_0x2cbf89['model']],'as':_0x2cbf89['as'],'attributes':_0x2cbf89['attributes'],'include':_0x2cbf89['include']?_[_0x677a('0x10')](_0x2cbf89[_0x677a('0xf')],function(_0x49f5bc){return{'model':db[_0x49f5bc[_0x677a('0x11')]],'as':_0x49f5bc['as'],'attributes':_0x49f5bc[_0x677a('0xd')]};}):[]};}):[]};}):[]:[]})[_0x677a('0x12')](function(_0x4c6f4f){logger[_0x677a('0x13')]('ShowSquareProject',_0x35e577);logger[_0x677a('0x15')](_0x677a('0x17'),_0x35e577,JSON[_0x677a('0x1a')](_0x4c6f4f));_0x17872d(_0x4c6f4f);})[_0x677a('0x1b')](function(_0x5c000d){logger[_0x677a('0x1c')](_0x677a('0x17'),_0x5c000d[_0x677a('0x16')],_0x35e577);_0x5dcb4c(_0x3e1e65[_0x677a('0x1c')](0x1f4,_0x5c000d[_0x677a('0x16')]));});});};
\ No newline at end of file
+var _0xf92d=['then','ShowSquareProject','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','defaults','redis','localhost','./squareProject.socket','register','SquareProject','findAll','options','raw','where','attributes','limit','include','map','model','info','GetSquareProjects','debug','stringify','catch','error','message','find'];(function(_0x181d0c,_0x30873c){var _0x37e376=function(_0xf85f6a){while(--_0xf85f6a){_0x181d0c['push'](_0x181d0c['shift']());}};_0x37e376(++_0x30873c);}(_0xf92d,0xdb));var _0xdf92=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xf92d[_0x4fde08];return _0x12e725;};'use strict';var _=require(_0xdf92('0x0'));var Redis=require(_0xdf92('0x1'));var db=require(_0xdf92('0x2'))['db'];var logger=require(_0xdf92('0x3'))(_0xdf92('0x4'));var config=require(_0xdf92('0x5'));config['redis']=_[_0xdf92('0x6')](config[_0xdf92('0x7')],{'host':_0xdf92('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xdf92('0x9'))[_0xdf92('0xa')](socket);exports['GetSquareProjects']=function(_0x8d018d){var _0x6b3e09=this;return new Promise(function(_0x555f6e,_0x4d0b4a){return db[_0xdf92('0xb')][_0xdf92('0xc')]({'raw':_0x8d018d[_0xdf92('0xd')]?_0x8d018d[_0xdf92('0xd')][_0xdf92('0xe')]===undefined?!![]:![]:!![],'where':_0x8d018d[_0xdf92('0xd')]?_0x8d018d[_0xdf92('0xd')][_0xdf92('0xf')]||null:null,'attributes':_0x8d018d[_0xdf92('0xd')]?_0x8d018d[_0xdf92('0xd')][_0xdf92('0x10')]||null:null,'limit':_0x8d018d[_0xdf92('0xd')]?_0x8d018d[_0xdf92('0xd')][_0xdf92('0x11')]||null:null,'include':_0x8d018d['options']?_0x8d018d[_0xdf92('0xd')][_0xdf92('0x12')]?_[_0xdf92('0x13')](_0x8d018d[_0xdf92('0xd')][_0xdf92('0x12')],function(_0x5a7ac2){return{'model':db[_0x5a7ac2[_0xdf92('0x14')]],'as':_0x5a7ac2['as'],'attributes':_0x5a7ac2[_0xdf92('0x10')],'include':_0x5a7ac2[_0xdf92('0x12')]?_[_0xdf92('0x13')](_0x5a7ac2[_0xdf92('0x12')],function(_0xb1bb0d){return{'model':db[_0xb1bb0d[_0xdf92('0x14')]],'as':_0xb1bb0d['as'],'attributes':_0xb1bb0d['attributes'],'include':_0xb1bb0d[_0xdf92('0x12')]?_[_0xdf92('0x13')](_0xb1bb0d[_0xdf92('0x12')],function(_0x381ea8){return{'model':db[_0x381ea8[_0xdf92('0x14')]],'as':_0x381ea8['as'],'attributes':_0x381ea8[_0xdf92('0x10')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x32ea4b){logger[_0xdf92('0x15')](_0xdf92('0x16'),_0x8d018d);logger[_0xdf92('0x17')](_0xdf92('0x16'),_0x8d018d,JSON[_0xdf92('0x18')](_0x32ea4b));_0x555f6e(_0x32ea4b);})[_0xdf92('0x19')](function(_0x5d1243){logger[_0xdf92('0x1a')]('GetSquareProjects',_0x5d1243[_0xdf92('0x1b')],_0x8d018d);_0x4d0b4a(_0x6b3e09['error'](0x1f4,_0x5d1243[_0xdf92('0x1b')]));});});};exports['ShowSquareProject']=function(_0x218dd9){var _0x31a09b=this;return new Promise(function(_0x4dcb3b,_0x417f6d){return db[_0xdf92('0xb')][_0xdf92('0x1c')]({'raw':_0x218dd9[_0xdf92('0xd')]?_0x218dd9['options'][_0xdf92('0xe')]===undefined?!![]:![]:!![],'where':_0x218dd9[_0xdf92('0xd')]?_0x218dd9[_0xdf92('0xd')][_0xdf92('0xf')]||null:null,'attributes':_0x218dd9[_0xdf92('0xd')]?_0x218dd9[_0xdf92('0xd')][_0xdf92('0x10')]||null:null,'include':_0x218dd9[_0xdf92('0xd')]?_0x218dd9[_0xdf92('0xd')][_0xdf92('0x12')]?_[_0xdf92('0x13')](_0x218dd9[_0xdf92('0xd')][_0xdf92('0x12')],function(_0x4201e3){return{'model':db[_0x4201e3[_0xdf92('0x14')]],'as':_0x4201e3['as'],'attributes':_0x4201e3[_0xdf92('0x10')],'include':_0x4201e3[_0xdf92('0x12')]?_[_0xdf92('0x13')](_0x4201e3['include'],function(_0x2887e6){return{'model':db[_0x2887e6['model']],'as':_0x2887e6['as'],'attributes':_0x2887e6[_0xdf92('0x10')],'include':_0x2887e6['include']?_[_0xdf92('0x13')](_0x2887e6[_0xdf92('0x12')],function(_0x3431d4){return{'model':db[_0x3431d4['model']],'as':_0x3431d4['as'],'attributes':_0x3431d4[_0xdf92('0x10')]};}):[]};}):[]};}):[]:[]})[_0xdf92('0x1d')](function(_0x47b843){logger[_0xdf92('0x15')](_0xdf92('0x1e'),_0x218dd9);logger['debug'](_0xdf92('0x1e'),_0x218dd9,JSON[_0xdf92('0x18')](_0x47b843));_0x4dcb3b(_0x47b843);})[_0xdf92('0x19')](function(_0x382d4d){logger[_0xdf92('0x1a')](_0xdf92('0x1e'),_0x382d4d[_0xdf92('0x1b')],_0x218dd9);_0x417f6d(_0x31a09b['error'](0x1f4,_0x382d4d[_0xdf92('0x1b')]));});});};
\ No newline at end of file
index 69fb9bb..056bb38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6706=['emit','squareProject:','./squareProject.events','remove','update'];(function(_0x32d8a5,_0x10a302){var _0xd9ebf7=function(_0x4f615e){while(--_0x4f615e){_0x32d8a5['push'](_0x32d8a5['shift']());}};_0xd9ebf7(++_0x10a302);}(_0x6706,0xc0));var _0x6670=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6706[_0x3dd15e];return _0x231fd0;};'use strict';var SquareProjectEvents=require(_0x6670('0x0'));var events=['save',_0x6670('0x1'),_0x6670('0x2')];function createListener(_0x49f88e,_0x3f2627){return function(_0x40dad7){_0x3f2627[_0x6670('0x3')](_0x49f88e,_0x40dad7);};}function removeListener(_0x3574b1,_0x3d660a){return function(){SquareProjectEvents['removeListener'](_0x3574b1,_0x3d660a);};}exports['register']=function(_0x19cf18){for(var _0x421121=0x0,_0x2ec347=events['length'];_0x421121<_0x2ec347;_0x421121++){var _0x5a35b8=events[_0x421121];var _0x2d023f=createListener(_0x6670('0x4')+_0x5a35b8,_0x19cf18);SquareProjectEvents['on'](_0x5a35b8,_0x2d023f);}};
\ No newline at end of file
+var _0x097e=['register','length','squareProject:','save','emit'];(function(_0x102977,_0x3a99a6){var _0x15c466=function(_0x1a6a12){while(--_0x1a6a12){_0x102977['push'](_0x102977['shift']());}};_0x15c466(++_0x3a99a6);}(_0x097e,0xb7));var _0xe097=function(_0x3eb02b,_0x351782){_0x3eb02b=_0x3eb02b-0x0;var _0x27b2f0=_0x097e[_0x3eb02b];return _0x27b2f0;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xe097('0x0'),'remove','update'];function createListener(_0x3f588d,_0x342d8e){return function(_0x137059){_0x342d8e[_0xe097('0x1')](_0x3f588d,_0x137059);};}function removeListener(_0xf16eb3,_0x9854e0){return function(){SquareProjectEvents['removeListener'](_0xf16eb3,_0x9854e0);};}exports[_0xe097('0x2')]=function(_0x100f9e){for(var _0x14dd32=0x0,_0x480815=events[_0xe097('0x3')];_0x14dd32<_0x480815;_0x14dd32++){var _0x2035ec=events[_0x14dd32];var _0x21ed49=createListener(_0xe097('0x4')+_0x2035ec,_0x100f9e);SquareProjectEvents['on'](_0x2035ec,_0x21ed49);}};
\ No newline at end of file
index 89be1b8..9e95d9e 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(_0x597754,_0x1f9b35){var _0x389e49=function(_0x14e6d2){while(--_0x14e6d2){_0x597754['push'](_0x597754['shift']());}};_0x389e49(++_0x1f9b35);}(_0x7a54,0x106));var _0x47a5=function(_0x34c91a,_0x506aa0){_0x34c91a=_0x34c91a-0x0;var _0x3f549c=_0x7a54[_0x34c91a];return _0x3f549c;};'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 _0x7217=['../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x590851,_0x496bee){var _0x3b0115=function(_0x5140cc){while(--_0x5140cc){_0x590851['push'](_0x590851['shift']());}};_0x3b0115(++_0x496bee);}(_0x7217,0x19e));var _0x7721=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x7217[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);router[_0x7721('0x12')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x13')]);module['exports']=router;
\ No newline at end of file
index 5fca8c0..d1672c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['sequelize','exports','STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf'];(function(_0x1c8697,_0x47bb41){var _0x289968=function(_0x40c835){while(--_0x40c835){_0x1c8697['push'](_0x1c8697['shift']());}};_0x289968(++_0x47bb41);}(_0x46ed,0x168));var _0xd46e=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x46ed[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xd46e('0x2')]},'calleridname':{'type':Sequelize[_0xd46e('0x2')]},'context':{'type':Sequelize[_0xd46e('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd46e('0x2')]},'accountcode':{'type':Sequelize[_0xd46e('0x2')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0xd46e('0x2')]},'saveName':{'type':Sequelize[_0xd46e('0x2')]},'filename':{'type':Sequelize[_0xd46e('0x2')]},'savePath':{'type':Sequelize[_0xd46e('0x2')]},'format':{'type':Sequelize[_0xd46e('0x3')],'get':function(){var _0x855f24='';var _0x437ea0=this[_0xd46e('0x4')](_0xd46e('0x5'));if(_0x437ea0){_0x855f24=_0x437ea0[_0xd46e('0x6')](_0x437ea0[_0xd46e('0x7')]('.'));}return _0x855f24;}}};
\ No newline at end of file
+var _0xac31=['STRING','VIRTUAL','savePath','lastIndexOf','sequelize','exports'];(function(_0x3c9fdb,_0x3a964c){var _0x25fe17=function(_0x4aacf2){while(--_0x4aacf2){_0x3c9fdb['push'](_0x3c9fdb['shift']());}};_0x25fe17(++_0x3a964c);}(_0xac31,0xca));var _0x1ac3=function(_0x4caadf,_0x42854a){_0x4caadf=_0x4caadf-0x0;var _0xa59e8d=_0xac31[_0x4caadf];return _0xa59e8d;};'use strict';var Sequelize=require(_0x1ac3('0x0'));module[_0x1ac3('0x1')]={'uniqueid':{'type':Sequelize[_0x1ac3('0x2')]},'callerid':{'type':Sequelize[_0x1ac3('0x2')]},'calleridname':{'type':Sequelize[_0x1ac3('0x2')]},'context':{'type':Sequelize[_0x1ac3('0x2')]},'extension':{'type':Sequelize[_0x1ac3('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x1ac3('0x2')]},'dnid':{'type':Sequelize[_0x1ac3('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x1ac3('0x2')]},'savePath':{'type':Sequelize[_0x1ac3('0x2')]},'format':{'type':Sequelize[_0x1ac3('0x3')],'get':function(){var _0x1be223='';var _0x157604=this['getDataValue'](_0x1ac3('0x4'));if(_0x157604){_0x1be223=_0x157604['substring'](_0x157604[_0x1ac3('0x5')]('.'));}return _0x1be223;}}};
\ No newline at end of file
index 3879b4c..56851f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef8c=['savePath','filename','format','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','message','send','Not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','stack','name','index','SquareRecording','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','download','../../components/encryptor','uniqueid'];(function(_0x3253e8,_0xb3835e){var _0x1b399d=function(_0x15e5b2){while(--_0x15e5b2){_0x3253e8['push'](_0x3253e8['shift']());}};_0x1b399d(++_0xb3835e);}(_0xef8c,0x75));var _0xcef8=function(_0x11c5da,_0x5799cf){_0x11c5da=_0x11c5da-0x0;var _0x5cfbf1=_0xef8c[_0x11c5da];return _0x5cfbf1;};'use strict';var emlformat=require(_0xcef8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcef8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcef8('0x2'));var moment=require('moment');var BPromise=require(_0xcef8('0x3'));var Mustache=require(_0xcef8('0x4'));var util=require(_0xcef8('0x5'));var path=require(_0xcef8('0x6'));var sox=require(_0xcef8('0x7'));var csv=require(_0xcef8('0x8'));var ejs=require(_0xcef8('0x9'));var fs=require('fs');var fs_extra=require(_0xcef8('0xa'));var _=require(_0xcef8('0xb'));var squel=require(_0xcef8('0xc'));var crypto=require(_0xcef8('0xd'));var jsforce=require(_0xcef8('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcef8('0xf'));var Papa=require(_0xcef8('0x10'));var Redis=require(_0xcef8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcef8('0x12'));var as=require(_0xcef8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcef8('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xcef8('0x15'));var licenseUtil=require(_0xcef8('0x16'));var db=require(_0xcef8('0x17'))['db'];function respondWithStatusCode(_0x316fc5,_0x4a5965){_0x4a5965=_0x4a5965||0xcc;return function(_0x55165a){if(_0x55165a){return _0x316fc5['sendStatus'](_0x4a5965);}return _0x316fc5[_0xcef8('0x18')](_0x4a5965)['end']();};}function respondWithResult(_0x39b87e,_0x89bac6){_0x89bac6=_0x89bac6||0xc8;return function(_0x246862){if(_0x246862){return _0x39b87e[_0xcef8('0x18')](_0x89bac6)[_0xcef8('0x19')](_0x246862);}};}function respondWithFilteredResult(_0x526004,_0x4a0466){return function(_0x114189){if(_0x114189){var _0x59880a=typeof _0x4a0466[_0xcef8('0x1a')]===_0xcef8('0x1b')&&typeof _0x4a0466[_0xcef8('0x1c')]==='undefined';var _0x44c904=_0x114189[_0xcef8('0x1d')];var _0x45809a=_0x59880a?0x0:_0x4a0466[_0xcef8('0x1a')];var _0x3db6a9=_0x59880a?_0x114189[_0xcef8('0x1d')]:_0x4a0466[_0xcef8('0x1a')]+_0x4a0466[_0xcef8('0x1c')];var _0x349b14;if(_0x3db6a9>=_0x44c904){_0x3db6a9=_0x44c904;_0x349b14=0xc8;}else{_0x349b14=0xce;}_0x526004['status'](_0x349b14);return _0x526004[_0xcef8('0x1e')](_0xcef8('0x1f'),_0x45809a+'-'+_0x3db6a9+'/'+_0x44c904)[_0xcef8('0x19')](_0x114189);}return null;};}function patchUpdates(_0x225dd9){return function(_0x27771a){try{jsonpatch[_0xcef8('0x20')](_0x27771a,_0x225dd9,!![]);}catch(_0x457307){return BPromise[_0xcef8('0x21')](_0x457307);}return _0x27771a['save']();};}function saveUpdates(_0x14028,_0x2b9a7e){return function(_0x40d118){if(_0x40d118){return _0x40d118['update'](_0x14028)[_0xcef8('0x22')](function(_0xcaf2d){return _0xcaf2d;});}return null;};}function removeEntity(_0x4c6f58,_0x4b0029){return function(_0x2155be){if(_0x2155be){return _0x2155be[_0xcef8('0x23')]()['then'](function(){_0x4c6f58[_0xcef8('0x18')](0xcc)[_0xcef8('0x24')]();});}};}function handleEntityNotFound(_0x29dac1,_0x41416a){return function(_0x745455){if(!_0x745455){_0x29dac1['sendStatus'](0x194);}return _0x745455;};}function handleError(_0x28506d,_0x5d4dfa){_0x5d4dfa=_0x5d4dfa||0x1f4;return function(_0x2382b2){logger['error'](_0x2382b2[_0xcef8('0x25')]);if(_0x2382b2[_0xcef8('0x26')]){delete _0x2382b2[_0xcef8('0x26')];}_0x28506d[_0xcef8('0x18')](_0x5d4dfa)['send'](_0x2382b2);};}exports[_0xcef8('0x27')]=function(_0xf48b39,_0x15cf86){var _0x2baaf3={},_0x7fc670={},_0x23af6d={'count':0x0,'rows':[]};var _0x1cddb4=_['map'](db[_0xcef8('0x28')][_0xcef8('0x29')],function(_0x28400b){return{'name':_0x28400b[_0xcef8('0x2a')],'type':_0x28400b[_0xcef8('0x2b')][_0xcef8('0x2c')]};});_0x7fc670[_0xcef8('0x2d')]=_[_0xcef8('0x2e')](_0x1cddb4,_0xcef8('0x26'));_0x7fc670[_0xcef8('0x2f')]=_[_0xcef8('0x30')](_0xf48b39[_0xcef8('0x2f')]);_0x7fc670['filters']=_[_0xcef8('0x31')](_0x7fc670[_0xcef8('0x2d')],_0x7fc670[_0xcef8('0x2f')]);_0x2baaf3[_0xcef8('0x32')]=_[_0xcef8('0x31')](_0x7fc670[_0xcef8('0x2d')],qs[_0xcef8('0x33')](_0xf48b39[_0xcef8('0x2f')]['fields']));_0x2baaf3[_0xcef8('0x32')]=_0x2baaf3[_0xcef8('0x32')][_0xcef8('0x34')]?_0x2baaf3[_0xcef8('0x32')]:_0x7fc670[_0xcef8('0x2d')];if(!_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x35')](_0xcef8('0x36'))){_0x2baaf3[_0xcef8('0x1c')]=qs[_0xcef8('0x1c')](_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x1c')]);_0x2baaf3[_0xcef8('0x1a')]=qs[_0xcef8('0x1a')](_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x1a')]);}_0x2baaf3[_0xcef8('0x37')]=qs['sort'](_0xf48b39['query'][_0xcef8('0x38')]);_0x2baaf3[_0xcef8('0x39')]=qs[_0xcef8('0x3a')](_['pick'](_0xf48b39[_0xcef8('0x2f')],_0x7fc670[_0xcef8('0x3a')]),_0x1cddb4);if(_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x3b')]){_0x2baaf3[_0xcef8('0x39')]=_[_0xcef8('0x3c')](_0x2baaf3['where'],{'$or':_[_0xcef8('0x2e')](_0x1cddb4,function(_0xa94f18){if(_0xa94f18[_0xcef8('0x2b')]!==_0xcef8('0x3d')){var _0x38c498={};_0x38c498[_0xa94f18[_0xcef8('0x26')]]={'$like':'%'+_0xf48b39[_0xcef8('0x2f')][_0xcef8('0x3b')]+'%'};return _0x38c498;}})});}_0x2baaf3=_[_0xcef8('0x3c')]({},_0x2baaf3,_0xf48b39[_0xcef8('0x3e')]);var _0x4d65c9={'where':_0x2baaf3[_0xcef8('0x39')]};return db[_0xcef8('0x28')]['count'](_0x4d65c9)[_0xcef8('0x22')](function(_0x3542cc){_0x23af6d[_0xcef8('0x1d')]=_0x3542cc;if(_0xf48b39['query'][_0xcef8('0x3f')]){_0x2baaf3[_0xcef8('0x40')]=[{'all':!![]}];}return db[_0xcef8('0x28')][_0xcef8('0x41')](_0x2baaf3);})[_0xcef8('0x22')](function(_0x31b560){_0x23af6d[_0xcef8('0x42')]=_0x31b560;return _0x23af6d;})[_0xcef8('0x22')](respondWithFilteredResult(_0x15cf86,_0x2baaf3))[_0xcef8('0x43')](handleError(_0x15cf86,null));};exports[_0xcef8('0x44')]=function(_0x3a65fe,_0x53942f){var _0x59221b={'raw':!![],'where':{'id':_0x3a65fe[_0xcef8('0x45')]['id']}},_0xcf86a0={};_0xcf86a0[_0xcef8('0x2d')]=_[_0xcef8('0x30')](db[_0xcef8('0x28')][_0xcef8('0x29')]);_0xcf86a0[_0xcef8('0x2f')]=_['keys'](_0x3a65fe[_0xcef8('0x2f')]);_0xcf86a0[_0xcef8('0x3a')]=_['intersection'](_0xcf86a0[_0xcef8('0x2d')],_0xcf86a0['query']);_0x59221b[_0xcef8('0x32')]=_[_0xcef8('0x31')](_0xcf86a0[_0xcef8('0x2d')],qs['fields'](_0x3a65fe[_0xcef8('0x2f')][_0xcef8('0x33')]));_0x59221b[_0xcef8('0x32')]=_0x59221b[_0xcef8('0x32')][_0xcef8('0x34')]?_0x59221b[_0xcef8('0x32')]:_0xcf86a0['model'];if(_0x3a65fe[_0xcef8('0x2f')][_0xcef8('0x3f')]){_0x59221b[_0xcef8('0x40')]=[{'all':!![]}];}_0x59221b=_[_0xcef8('0x3c')]({},_0x59221b,_0x3a65fe[_0xcef8('0x3e')]);return db[_0xcef8('0x28')][_0xcef8('0x46')](_0x59221b)[_0xcef8('0x22')](handleEntityNotFound(_0x53942f,null))[_0xcef8('0x22')](respondWithResult(_0x53942f,null))[_0xcef8('0x43')](handleError(_0x53942f,null));};exports[_0xcef8('0x47')]=function(_0x3ec1f7,_0x47066d){return db[_0xcef8('0x28')][_0xcef8('0x47')](_0x3ec1f7['body'],{})[_0xcef8('0x22')](respondWithResult(_0x47066d,0xc9))[_0xcef8('0x43')](handleError(_0x47066d,null));};exports[_0xcef8('0x48')]=function(_0x15cb03,_0x13dd0c){if(_0x15cb03[_0xcef8('0x49')]['id']){delete _0x15cb03[_0xcef8('0x49')]['id'];}return db[_0xcef8('0x28')]['find']({'where':{'id':_0x15cb03['params']['id']}})[_0xcef8('0x22')](handleEntityNotFound(_0x13dd0c,null))[_0xcef8('0x22')](saveUpdates(_0x15cb03[_0xcef8('0x49')],null))[_0xcef8('0x22')](respondWithResult(_0x13dd0c,null))[_0xcef8('0x43')](handleError(_0x13dd0c,null));};exports[_0xcef8('0x4a')]=function(_0x494d6f,_0x2082ca,_0x50a92d){var _0x2707c4=require(_0xcef8('0x4b'));var _0x5520aa=![];var _0x16215c={};if(_0x494d6f[_0xcef8('0x2f')][_0xcef8('0x2b')]&&_0x494d6f[_0xcef8('0x2f')][_0xcef8('0x2b')]===_0xcef8('0x4c')){_0x16215c[_0xcef8('0x4c')]=_0x494d6f[_0xcef8('0x45')]['id'];}else{_0x16215c['id']=_0x494d6f[_0xcef8('0x45')]['id'];}return db[_0xcef8('0x28')][_0xcef8('0x46')]({'where':_0x16215c,'attributes':['id',_0xcef8('0x4d'),_0xcef8('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x2082ca,null))[_0xcef8('0x22')](function(_0xf0bda6){if(_0xf0bda6){var _0x3bb2f4=_0xf0bda6['savePath'];var _0x202b52=util[_0xcef8('0x4f')](_0xcef8('0x50'),_0x3bb2f4);if(fs[_0xcef8('0x51')](_0x202b52)){_0x5520aa=!![];return _0x2707c4[_0xcef8('0x52')](_0x202b52,_0x3bb2f4,config['secrets'][_0xcef8('0x53')])[_0xcef8('0x22')](function(){return _0xf0bda6;});}return _0xf0bda6;}})[_0xcef8('0x22')](function(_0x494fca){if(_0x494fca){var _0x11b581=_0x494fca['savePath'];if(!fs[_0xcef8('0x51')](_0x11b581)){throw new db[(_0xcef8('0x54'))][(_0xcef8('0x55'))](_0xcef8('0x56'));}if(_0x494fca[_0xcef8('0x4e')]){return _0x2082ca[_0xcef8('0x4a')](_0x11b581,_0x494fca['filename']+path[_0xcef8('0x57')](_0x11b581),function(){if(_0x5520aa){fs['unlink'](_0x11b581);}});}else{return _0x2082ca[_0xcef8('0x4a')](_0x11b581,function(_0x5d26e7){if(_0x5520aa){fs['unlink'](_0x11b581);}});}}})['catch'](function(_0x2bd595){if(_0x2bd595[_0xcef8('0x58')]==='SquareRecording\x20not\x20found'){_0x2082ca[_0xcef8('0x18')](0x194)[_0xcef8('0x59')](_0xcef8('0x5a'));}else{return handleError(_0x2082ca,null);}});};exports[_0xcef8('0x23')]=function(_0x31fa61,_0x39bd1a){return db[_0xcef8('0x28')][_0xcef8('0x46')]({'where':{'id':_0x31fa61[_0xcef8('0x45')]['id']}})[_0xcef8('0x22')](function(_0x5814d4){if(_[_0xcef8('0x5b')](_0x5814d4)){throw new ReferenceError(_0xcef8('0x5c'));}return _0x5814d4;})[_0xcef8('0x22')](function(_0x83ece1){var _0x19c520=_0x83ece1[_0xcef8('0x4d')];logger['info'](_0xcef8('0x5d'),_0x19c520);if(!_[_0xcef8('0x5b')](_0x83ece1[_0xcef8('0x4d')])&&fs['existsSync'](_0x19c520)){logger[_0xcef8('0x5e')]('File:\x20\x22'+_0x19c520+_0xcef8('0x5f'));fs[_0xcef8('0x60')](_0x19c520);}_0x19c520=_0x19c520+'.cypher';if(!_['isNil'](_0x83ece1['savePath'])&&fs[_0xcef8('0x51')](_0x19c520)){logger[_0xcef8('0x5e')]('File:\x20\x22'+_0x19c520+_0xcef8('0x5f'));fs[_0xcef8('0x60')](_0x19c520);}return _0x83ece1;})[_0xcef8('0x22')](function(_0x1163b9){if(!_0x1163b9)throw new InternalError();return _0x1163b9[_0xcef8('0x23')]();})[_0xcef8('0x22')](function(){_0x39bd1a[_0xcef8('0x18')](0xcc)[_0xcef8('0x24')]();})[_0xcef8('0x43')](handleError(_0x39bd1a,null));};
\ No newline at end of file
+var _0xacdf=['pick','filter','merge','map','VIRTUAL','SquareRecording','includeAll','include','findAll','rows','show','options','find','catch','create','body','params','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','secrets','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','send','Not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','name','index','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters'];(function(_0x1dcc82,_0x129aef){var _0x5330e7=function(_0x477dd5){while(--_0x477dd5){_0x1dcc82['push'](_0x1dcc82['shift']());}};_0x5330e7(++_0x129aef);}(_0xacdf,0xe2));var _0xfacd=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xacdf[_0x22b68a];return _0x1ac67a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfacd('0x0'));var zipdir=require(_0xfacd('0x1'));var jsonpatch=require(_0xfacd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfacd('0x3'));var Mustache=require(_0xfacd('0x4'));var util=require(_0xfacd('0x5'));var path=require(_0xfacd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfacd('0x7'));var fs=require('fs');var fs_extra=require(_0xfacd('0x8'));var _=require(_0xfacd('0x9'));var squel=require(_0xfacd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfacd('0xb'));var querystring=require(_0xfacd('0xc'));var Papa=require(_0xfacd('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfacd('0xe'));var as=require(_0xfacd('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfacd('0x10'))(_0xfacd('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e1c10,_0x3f59fb){_0x3f59fb=_0x3f59fb||0xcc;return function(_0x135484){if(_0x135484){return _0x1e1c10[_0xfacd('0x12')](_0x3f59fb);}return _0x1e1c10[_0xfacd('0x13')](_0x3f59fb)[_0xfacd('0x14')]();};}function respondWithResult(_0x19cd11,_0x186a8b){_0x186a8b=_0x186a8b||0xc8;return function(_0x23fdf9){if(_0x23fdf9){return _0x19cd11[_0xfacd('0x13')](_0x186a8b)['json'](_0x23fdf9);}};}function respondWithFilteredResult(_0x4a4051,_0x5eb3){return function(_0x270849){if(_0x270849){var _0x1c1cf3=typeof _0x5eb3[_0xfacd('0x15')]==='undefined'&&typeof _0x5eb3[_0xfacd('0x16')]==='undefined';var _0x2059ed=_0x270849[_0xfacd('0x17')];var _0x296cf1=_0x1c1cf3?0x0:_0x5eb3['offset'];var _0x5aafcb=_0x1c1cf3?_0x270849['count']:_0x5eb3[_0xfacd('0x15')]+_0x5eb3[_0xfacd('0x16')];var _0x34e5d7;if(_0x5aafcb>=_0x2059ed){_0x5aafcb=_0x2059ed;_0x34e5d7=0xc8;}else{_0x34e5d7=0xce;}_0x4a4051[_0xfacd('0x13')](_0x34e5d7);return _0x4a4051[_0xfacd('0x18')](_0xfacd('0x19'),_0x296cf1+'-'+_0x5aafcb+'/'+_0x2059ed)[_0xfacd('0x1a')](_0x270849);}return null;};}function patchUpdates(_0x4a26f2){return function(_0x34f0f6){try{jsonpatch[_0xfacd('0x1b')](_0x34f0f6,_0x4a26f2,!![]);}catch(_0x792b5f){return BPromise[_0xfacd('0x1c')](_0x792b5f);}return _0x34f0f6['save']();};}function saveUpdates(_0x11dcc7,_0xd9c455){return function(_0x309c6d){if(_0x309c6d){return _0x309c6d[_0xfacd('0x1d')](_0x11dcc7)[_0xfacd('0x1e')](function(_0x1f4300){return _0x1f4300;});}return null;};}function removeEntity(_0x4afed9,_0x344b32){return function(_0x2c2637){if(_0x2c2637){return _0x2c2637[_0xfacd('0x1f')]()['then'](function(){_0x4afed9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b5c61,_0x3b5020){return function(_0x1024bc){if(!_0x1024bc){_0x4b5c61['sendStatus'](0x194);}return _0x1024bc;};}function handleError(_0x1dacc4,_0x255e4f){_0x255e4f=_0x255e4f||0x1f4;return function(_0x361f08){logger['error'](_0x361f08['stack']);if(_0x361f08[_0xfacd('0x20')]){delete _0x361f08['name'];}_0x1dacc4['status'](_0x255e4f)['send'](_0x361f08);};}exports[_0xfacd('0x21')]=function(_0x4f019a,_0x412db2){var _0x481db9={},_0x542143={},_0x15cbab={'count':0x0,'rows':[]};var _0x32ac15=_['map'](db['SquareRecording'][_0xfacd('0x22')],function(_0x2a1075){return{'name':_0x2a1075[_0xfacd('0x23')],'type':_0x2a1075[_0xfacd('0x24')][_0xfacd('0x25')]};});_0x542143[_0xfacd('0x26')]=_['map'](_0x32ac15,_0xfacd('0x20'));_0x542143[_0xfacd('0x27')]=_[_0xfacd('0x28')](_0x4f019a[_0xfacd('0x27')]);_0x542143['filters']=_[_0xfacd('0x29')](_0x542143[_0xfacd('0x26')],_0x542143[_0xfacd('0x27')]);_0x481db9['attributes']=_[_0xfacd('0x29')](_0x542143[_0xfacd('0x26')],qs[_0xfacd('0x2a')](_0x4f019a[_0xfacd('0x27')][_0xfacd('0x2a')]));_0x481db9['attributes']=_0x481db9[_0xfacd('0x2b')][_0xfacd('0x2c')]?_0x481db9[_0xfacd('0x2b')]:_0x542143[_0xfacd('0x26')];if(!_0x4f019a[_0xfacd('0x27')][_0xfacd('0x2d')]('nolimit')){_0x481db9[_0xfacd('0x16')]=qs[_0xfacd('0x16')](_0x4f019a[_0xfacd('0x27')][_0xfacd('0x16')]);_0x481db9[_0xfacd('0x15')]=qs[_0xfacd('0x15')](_0x4f019a['query'][_0xfacd('0x15')]);}_0x481db9[_0xfacd('0x2e')]=qs[_0xfacd('0x2f')](_0x4f019a[_0xfacd('0x27')]['sort']);_0x481db9[_0xfacd('0x30')]=qs[_0xfacd('0x31')](_[_0xfacd('0x32')](_0x4f019a[_0xfacd('0x27')],_0x542143[_0xfacd('0x31')]),_0x32ac15);if(_0x4f019a[_0xfacd('0x27')][_0xfacd('0x33')]){_0x481db9[_0xfacd('0x30')]=_[_0xfacd('0x34')](_0x481db9[_0xfacd('0x30')],{'$or':_[_0xfacd('0x35')](_0x32ac15,function(_0x40166a){if(_0x40166a['type']!==_0xfacd('0x36')){var _0x4d7010={};_0x4d7010[_0x40166a['name']]={'$like':'%'+_0x4f019a['query']['filter']+'%'};return _0x4d7010;}})});}_0x481db9=_[_0xfacd('0x34')]({},_0x481db9,_0x4f019a['options']);var _0xa1efb3={'where':_0x481db9[_0xfacd('0x30')]};return db[_0xfacd('0x37')][_0xfacd('0x17')](_0xa1efb3)['then'](function(_0x37ec9b){_0x15cbab[_0xfacd('0x17')]=_0x37ec9b;if(_0x4f019a[_0xfacd('0x27')][_0xfacd('0x38')]){_0x481db9[_0xfacd('0x39')]=[{'all':!![]}];}return db['SquareRecording'][_0xfacd('0x3a')](_0x481db9);})[_0xfacd('0x1e')](function(_0x1f7aa7){_0x15cbab[_0xfacd('0x3b')]=_0x1f7aa7;return _0x15cbab;})[_0xfacd('0x1e')](respondWithFilteredResult(_0x412db2,_0x481db9))['catch'](handleError(_0x412db2,null));};exports[_0xfacd('0x3c')]=function(_0x30d3c4,_0x2185b0){var _0x306164={'raw':!![],'where':{'id':_0x30d3c4['params']['id']}},_0x4dcfc0={};_0x4dcfc0[_0xfacd('0x26')]=_[_0xfacd('0x28')](db[_0xfacd('0x37')]['rawAttributes']);_0x4dcfc0['query']=_[_0xfacd('0x28')](_0x30d3c4[_0xfacd('0x27')]);_0x4dcfc0[_0xfacd('0x31')]=_[_0xfacd('0x29')](_0x4dcfc0[_0xfacd('0x26')],_0x4dcfc0['query']);_0x306164['attributes']=_[_0xfacd('0x29')](_0x4dcfc0['model'],qs[_0xfacd('0x2a')](_0x30d3c4[_0xfacd('0x27')]['fields']));_0x306164['attributes']=_0x306164['attributes'][_0xfacd('0x2c')]?_0x306164['attributes']:_0x4dcfc0[_0xfacd('0x26')];if(_0x30d3c4[_0xfacd('0x27')][_0xfacd('0x38')]){_0x306164[_0xfacd('0x39')]=[{'all':!![]}];}_0x306164=_['merge']({},_0x306164,_0x30d3c4[_0xfacd('0x3d')]);return db[_0xfacd('0x37')][_0xfacd('0x3e')](_0x306164)['then'](handleEntityNotFound(_0x2185b0,null))[_0xfacd('0x1e')](respondWithResult(_0x2185b0,null))[_0xfacd('0x3f')](handleError(_0x2185b0,null));};exports[_0xfacd('0x40')]=function(_0xdca764,_0x24f7f3){return db[_0xfacd('0x37')]['create'](_0xdca764[_0xfacd('0x41')],{})[_0xfacd('0x1e')](respondWithResult(_0x24f7f3,0xc9))['catch'](handleError(_0x24f7f3,null));};exports[_0xfacd('0x1d')]=function(_0x41b50e,_0x21cce5){if(_0x41b50e[_0xfacd('0x41')]['id']){delete _0x41b50e[_0xfacd('0x41')]['id'];}return db['SquareRecording']['find']({'where':{'id':_0x41b50e[_0xfacd('0x42')]['id']}})[_0xfacd('0x1e')](handleEntityNotFound(_0x21cce5,null))[_0xfacd('0x1e')](saveUpdates(_0x41b50e[_0xfacd('0x41')],null))[_0xfacd('0x1e')](respondWithResult(_0x21cce5,null))[_0xfacd('0x3f')](handleError(_0x21cce5,null));};exports[_0xfacd('0x43')]=function(_0x471990,_0xad055a,_0x18f250){var _0x494f94=require(_0xfacd('0x44'));var _0x25f439=![];var _0x510f49={};if(_0x471990[_0xfacd('0x27')][_0xfacd('0x24')]&&_0x471990[_0xfacd('0x27')][_0xfacd('0x24')]===_0xfacd('0x45')){_0x510f49[_0xfacd('0x45')]=_0x471990[_0xfacd('0x42')]['id'];}else{_0x510f49['id']=_0x471990[_0xfacd('0x42')]['id'];}return db[_0xfacd('0x37')]['find']({'where':_0x510f49,'attributes':['id',_0xfacd('0x46'),_0xfacd('0x47')],'raw':!![]})[_0xfacd('0x1e')](handleEntityNotFound(_0xad055a,null))[_0xfacd('0x1e')](function(_0x195539){if(_0x195539){var _0x8a4f46=_0x195539[_0xfacd('0x46')];var _0x3ff297=util[_0xfacd('0x48')](_0xfacd('0x49'),_0x8a4f46);if(fs[_0xfacd('0x4a')](_0x3ff297)){_0x25f439=!![];return _0x494f94[_0xfacd('0x4b')](_0x3ff297,_0x8a4f46,config[_0xfacd('0x4c')]['recording'])[_0xfacd('0x1e')](function(){return _0x195539;});}return _0x195539;}})['then'](function(_0x3cb9d6){if(_0x3cb9d6){var _0x2a8cbb=_0x3cb9d6[_0xfacd('0x46')];if(!fs[_0xfacd('0x4a')](_0x2a8cbb)){throw new db[(_0xfacd('0x4d'))]['ValidationError'](_0xfacd('0x4e'));}if(_0x3cb9d6['filename']){return _0xad055a[_0xfacd('0x43')](_0x2a8cbb,_0x3cb9d6['filename']+path[_0xfacd('0x4f')](_0x2a8cbb),function(){if(_0x25f439){fs[_0xfacd('0x50')](_0x2a8cbb);}});}else{return _0xad055a['download'](_0x2a8cbb,function(_0x2e36a1){if(_0x25f439){fs['unlink'](_0x2a8cbb);}});}}})[_0xfacd('0x3f')](function(_0x3e89b5){if(_0x3e89b5[_0xfacd('0x51')]===_0xfacd('0x4e')){_0xad055a[_0xfacd('0x13')](0x194)[_0xfacd('0x52')](_0xfacd('0x53'));}else{return handleError(_0xad055a,null);}});};exports[_0xfacd('0x1f')]=function(_0x3227fc,_0x8ca871){return db[_0xfacd('0x37')][_0xfacd('0x3e')]({'where':{'id':_0x3227fc[_0xfacd('0x42')]['id']}})[_0xfacd('0x1e')](function(_0x3c6a92){if(_[_0xfacd('0x54')](_0x3c6a92)){throw new ReferenceError(_0xfacd('0x55'));}return _0x3c6a92;})[_0xfacd('0x1e')](function(_0xec2564){var _0x368151=_0xec2564['savePath'];logger['info'](_0xfacd('0x56'),_0x368151);if(!_['isNil'](_0xec2564['savePath'])&&fs[_0xfacd('0x4a')](_0x368151)){logger[_0xfacd('0x57')](_0xfacd('0x58')+_0x368151+_0xfacd('0x59'));fs[_0xfacd('0x5a')](_0x368151);}_0x368151=_0x368151+_0xfacd('0x5b');if(!_[_0xfacd('0x54')](_0xec2564[_0xfacd('0x46')])&&fs[_0xfacd('0x4a')](_0x368151)){logger[_0xfacd('0x57')]('File:\x20\x22'+_0x368151+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xfacd('0x5a')](_0x368151);}return _0xec2564;})[_0xfacd('0x1e')](function(_0x5d602f){if(!_0x5d602f)throw new InternalError();return _0x5d602f[_0xfacd('0x1f')]();})[_0xfacd('0x1e')](function(){_0x8ca871['status'](0xcc)['end']();})[_0xfacd('0x3f')](handleError(_0x8ca871,null));};
\ No newline at end of file
index 3f9a64f..35b573f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b09=['util','api','moment','request-promise','rimraf','./squareRecording.attributes','exports','define','square_recordings','lodash'];(function(_0x25d3cf,_0x449e43){var _0x5b7062=function(_0x5a64f4){while(--_0x5a64f4){_0x25d3cf['push'](_0x25d3cf['shift']());}};_0x5b7062(++_0x449e43);}(_0x9b09,0x1ad));var _0x99b0=function(_0x3cb21e,_0x11849a){_0x3cb21e=_0x3cb21e-0x0;var _0xeacd6a=_0x9b09[_0x3cb21e];return _0xeacd6a;};'use strict';var _=require(_0x99b0('0x0'));var util=require(_0x99b0('0x1'));var logger=require('../../config/logger')(_0x99b0('0x2'));var moment=require(_0x99b0('0x3'));var BPromise=require('bluebird');var rp=require(_0x99b0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x99b0('0x5'));var config=require('../../config/environment');var attributes=require(_0x99b0('0x6'));module[_0x99b0('0x7')]=function(_0x498180,_0x466c23){return _0x498180[_0x99b0('0x8')]('SquareRecording',attributes,{'tableName':_0x99b0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf446=['api','bluebird','path','rimraf','./squareRecording.attributes','define','square_recordings','lodash','../../config/logger'];(function(_0x3dbd6f,_0x2bae4c){var _0x2564a0=function(_0x53bfba){while(--_0x53bfba){_0x3dbd6f['push'](_0x3dbd6f['shift']());}};_0x2564a0(++_0x2bae4c);}(_0xf446,0x1c0));var _0x6f44=function(_0x3b7903,_0x206570){_0x3b7903=_0x3b7903-0x0;var _0x203a30=_0xf446[_0x3b7903];return _0x203a30;};'use strict';var _=require(_0x6f44('0x0'));var util=require('util');var logger=require(_0x6f44('0x1'))(_0x6f44('0x2'));var moment=require('moment');var BPromise=require(_0x6f44('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f44('0x4'));var rimraf=require(_0x6f44('0x5'));var config=require('../../config/environment');var attributes=require(_0x6f44('0x6'));module['exports']=function(_0x4ffb0e,_0x531344){return _0x4ffb0e[_0x6f44('0x7')]('SquareRecording',attributes,{'tableName':_0x6f44('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e11c9d5..bc2b2fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['CreateSquareRecording','SquareRecording','body','options','raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x531a,0x1d0));var _0xa531=function(_0x3ad7ad,_0x291a8d){_0x3ad7ad=_0x3ad7ad-0x0;var _0x225a60=_0x531a[_0x3ad7ad];return _0x225a60;};'use strict';var _=require(_0xa531('0x0'));var util=require(_0xa531('0x1'));var moment=require('moment');var BPromise=require(_0xa531('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa531('0x3'));var db=require(_0xa531('0x4'))['db'];var utils=require(_0xa531('0x5'));var logger=require('../../config/logger')(_0xa531('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa531('0x7')][_0xa531('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x528c2d,_0x550aec,_0x1ad1f1){return new BPromise(function(_0x2d7e9b,_0x47ce8e){return client[_0xa531('0x9')](_0x528c2d,_0x1ad1f1)[_0xa531('0xa')](function(_0x15d732){logger[_0xa531('0xb')](_0xa531('0xc'),_0x550aec,_0xa531('0xd'));logger[_0xa531('0xe')](_0xa531('0xf'),_0x550aec,_0xa531('0xd'),JSON[_0xa531('0x10')](_0x15d732));if(_0x15d732[_0xa531('0x11')]){if(_0x15d732[_0xa531('0x11')][_0xa531('0x12')]===0x1f4){logger[_0xa531('0x11')]('SquareRecording,\x20%s,\x20%s',_0x550aec,_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);return _0x47ce8e(_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);}logger[_0xa531('0x11')](_0xa531('0xc'),_0x550aec,_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);return _0x2d7e9b(_0x15d732[_0xa531('0x11')][_0xa531('0x13')]);}else{logger[_0xa531('0xb')](_0xa531('0xc'),_0x550aec,_0xa531('0xd'));_0x2d7e9b(_0x15d732[_0xa531('0x14')]['message']);}})[_0xa531('0x15')](function(_0x203315){logger[_0xa531('0x11')](_0xa531('0xc'),_0x550aec,_0x203315);_0x47ce8e(_0x203315);});});}exports[_0xa531('0x16')]=function(_0x761630){var _0x839657=this;return new Promise(function(_0x380d92,_0x5ba33c){return db[_0xa531('0x17')]['create'](_0x761630[_0xa531('0x18')],{'raw':_0x761630[_0xa531('0x19')]?_0x761630[_0xa531('0x19')][_0xa531('0x1a')]===undefined?!![]:![]:!![]})[_0xa531('0xa')](function(_0x16c9ca){logger['info'](_0xa531('0x16'),_0x761630);logger['debug'](_0xa531('0x16'),_0x761630,JSON[_0xa531('0x10')](_0x16c9ca));_0x380d92(_0x16c9ca);})[_0xa531('0x15')](function(_0x59533c){logger['error'](_0xa531('0x16'),_0x59533c[_0xa531('0x13')],_0x761630);_0x5ba33c(_0x839657[_0xa531('0x11')](0x1f4,_0x59533c['message']));});});};
\ No newline at end of file
+var _0x22f1=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','error','message','catch','create','body','options','raw','CreateSquareRecording','stringify','lodash'];(function(_0x3d783b,_0x3fb01b){var _0x7e8d43=function(_0x3c9404){while(--_0x3c9404){_0x3d783b['push'](_0x3d783b['shift']());}};_0x7e8d43(++_0x3fb01b);}(_0x22f1,0xf2));var _0x122f=function(_0x1ab953,_0x48191e){_0x1ab953=_0x1ab953-0x0;var _0x44b635=_0x22f1[_0x1ab953];return _0x44b635;};'use strict';var _=require(_0x122f('0x0'));var util=require(_0x122f('0x1'));var moment=require(_0x122f('0x2'));var BPromise=require('bluebird');var rs=require(_0x122f('0x3'));var fs=require('fs');var Redis=require(_0x122f('0x4'));var db=require(_0x122f('0x5'))['db'];var utils=require(_0x122f('0x6'));var logger=require('../../config/logger')(_0x122f('0x7'));var config=require(_0x122f('0x8'));var jayson=require(_0x122f('0x9'));var client=jayson[_0x122f('0xa')][_0x122f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b7d42,_0x1ae1ec,_0x43c816){return new BPromise(function(_0x4250a0,_0x4a44a1){return client[_0x122f('0xc')](_0x1b7d42,_0x43c816)[_0x122f('0xd')](function(_0x59b4e2){logger['info'](_0x122f('0xe'),_0x1ae1ec,_0x122f('0xf'));logger[_0x122f('0x10')](_0x122f('0x11'),_0x1ae1ec,'request\x20sent',JSON['stringify'](_0x59b4e2));if(_0x59b4e2[_0x122f('0x12')]){if(_0x59b4e2[_0x122f('0x12')]['code']===0x1f4){logger['error'](_0x122f('0xe'),_0x1ae1ec,_0x59b4e2[_0x122f('0x12')][_0x122f('0x13')]);return _0x4a44a1(_0x59b4e2[_0x122f('0x12')][_0x122f('0x13')]);}logger[_0x122f('0x12')](_0x122f('0xe'),_0x1ae1ec,_0x59b4e2[_0x122f('0x12')][_0x122f('0x13')]);return _0x4250a0(_0x59b4e2[_0x122f('0x12')][_0x122f('0x13')]);}else{logger['info'](_0x122f('0xe'),_0x1ae1ec,_0x122f('0xf'));_0x4250a0(_0x59b4e2['result'][_0x122f('0x13')]);}})[_0x122f('0x14')](function(_0x4da5d1){logger['error']('SquareRecording,\x20%s,\x20%s',_0x1ae1ec,_0x4da5d1);_0x4a44a1(_0x4da5d1);});});}exports['CreateSquareRecording']=function(_0x396647){var _0x274a7b=this;return new Promise(function(_0x4af13,_0x26d0f3){return db['SquareRecording'][_0x122f('0x15')](_0x396647[_0x122f('0x16')],{'raw':_0x396647[_0x122f('0x17')]?_0x396647['options'][_0x122f('0x18')]===undefined?!![]:![]:!![]})[_0x122f('0xd')](function(_0x3d7605){logger['info'](_0x122f('0x19'),_0x396647);logger[_0x122f('0x10')](_0x122f('0x19'),_0x396647,JSON[_0x122f('0x1a')](_0x3d7605));_0x4af13(_0x3d7605);})[_0x122f('0x14')](function(_0x5aed08){logger[_0x122f('0x12')](_0x122f('0x19'),_0x5aed08['message'],_0x396647);_0x26d0f3(_0x274a7b[_0x122f('0x12')](0x1f4,_0x5aed08['message']));});});};
\ No newline at end of file
index 9108b2e..d729d62 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(_0x1c0f3d,_0x55a9e2){var _0x4d71a8=function(_0xeff131){while(--_0xeff131){_0x1c0f3d['push'](_0x1c0f3d['shift']());}};_0x4d71a8(++_0x55a9e2);}(_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('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x230dd3,_0x26024b){var _0x7987fa=function(_0x36a021){while(--_0x36a021){_0x230dd3['push'](_0x230dd3['shift']());}};_0x7987fa(++_0x26024b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./squareReport.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 97fe283..ad6d3e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6d2=['BOOLEAN','sequelize','STRING'];(function(_0x253665,_0x4b385f){var _0x5b6517=function(_0x14b740){while(--_0x14b740){_0x253665['push'](_0x253665['shift']());}};_0x5b6517(++_0x4b385f);}(_0xf6d2,0x1d8));var _0x2f6d=function(_0x3f84cb,_0x8d0a2d){_0x3f84cb=_0x3f84cb-0x0;var _0x37c150=_0xf6d2[_0x3f84cb];return _0x37c150;};'use strict';var Sequelize=require(_0x2f6d('0x0'));module['exports']={'network':{'type':Sequelize[_0x2f6d('0x1')]},'network_script':{'type':Sequelize[_0x2f6d('0x1')]},'request':{'type':Sequelize[_0x2f6d('0x1')]},'channel':{'type':Sequelize[_0x2f6d('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x2f6d('0x1')]},'uniqueid':{'type':Sequelize[_0x2f6d('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x2f6d('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x2f6d('0x1')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x2f6d('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0x2f6d('0x1')]},'context':{'type':Sequelize[_0x2f6d('0x1')]},'extension':{'type':Sequelize[_0x2f6d('0x1')]},'priority':{'type':Sequelize[_0x2f6d('0x1')]},'enhanced':{'type':Sequelize[_0x2f6d('0x1')]},'accountcode':{'type':Sequelize[_0x2f6d('0x1')]},'threadid':{'type':Sequelize[_0x2f6d('0x1')]},'project_name':{'type':Sequelize[_0x2f6d('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x2f6d('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb764=['DATE','BOOLEAN','exports','STRING'];(function(_0x45ce08,_0x59dcc7){var _0x23dff2=function(_0x1ad0e5){while(--_0x1ad0e5){_0x45ce08['push'](_0x45ce08['shift']());}};_0x23dff2(++_0x59dcc7);}(_0xb764,0xca));var _0x4b76=function(_0x4cdfc3,_0x3170bc){_0x4cdfc3=_0x4cdfc3-0x0;var _0x2a2d3f=_0xb764[_0x4cdfc3];return _0x2a2d3f;};'use strict';var Sequelize=require('sequelize');module[_0x4b76('0x0')]={'network':{'type':Sequelize[_0x4b76('0x1')]},'network_script':{'type':Sequelize[_0x4b76('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x4b76('0x1')]},'type':{'type':Sequelize[_0x4b76('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x4b76('0x1')]},'callerid':{'type':Sequelize[_0x4b76('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0x4b76('0x1')]},'callingani2':{'type':Sequelize[_0x4b76('0x1')]},'callington':{'type':Sequelize[_0x4b76('0x1')]},'callingtns':{'type':Sequelize[_0x4b76('0x1')]},'dnid':{'type':Sequelize[_0x4b76('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x4b76('0x1')]},'extension':{'type':Sequelize[_0x4b76('0x1')]},'priority':{'type':Sequelize[_0x4b76('0x1')]},'enhanced':{'type':Sequelize[_0x4b76('0x1')]},'accountcode':{'type':Sequelize[_0x4b76('0x1')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x4b76('0x1')]},'joinAt':{'type':Sequelize[_0x4b76('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x4b76('0x3')],'defaultValue':![]}};
\ No newline at end of file
index bd8f2e9..5b0b6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8265=['keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','include','rows','catch','show','length','includeAll','merge','find','create','body','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','status','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','then','end','error','name','send','index','SquareReport','rawAttributes','fieldName','type','model','map','query'];(function(_0x5684d2,_0x18b7a6){var _0x5c5a63=function(_0x36e6fe){while(--_0x36e6fe){_0x5684d2['push'](_0x5684d2['shift']());}};_0x5c5a63(++_0x18b7a6);}(_0x8265,0x17c));var _0x5826=function(_0x3016fe,_0x1f555a){_0x3016fe=_0x3016fe-0x0;var _0x590276=_0x8265[_0x3016fe];return _0x590276;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5826('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5826('0x1'));var rp=require(_0x5826('0x2'));var moment=require(_0x5826('0x3'));var BPromise=require(_0x5826('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5826('0x5'));var sox=require(_0x5826('0x6'));var csv=require('to-csv');var ejs=require(_0x5826('0x7'));var fs=require('fs');var fs_extra=require(_0x5826('0x8'));var _=require(_0x5826('0x9'));var squel=require(_0x5826('0xa'));var crypto=require('crypto');var jsforce=require(_0x5826('0xb'));var deskjs=require(_0x5826('0xc'));var toCsv=require(_0x5826('0xd'));var querystring=require(_0x5826('0xe'));var Papa=require('papaparse');var Redis=require(_0x5826('0xf'));var authService=require(_0x5826('0x10'));var qs=require(_0x5826('0x11'));var as=require(_0x5826('0x12'));var hardwareService=require(_0x5826('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5826('0x14'));var licenseUtil=require(_0x5826('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33b46b,_0x16cac0){_0x16cac0=_0x16cac0||0xcc;return function(_0x526718){if(_0x526718){return _0x33b46b['sendStatus'](_0x16cac0);}return _0x33b46b[_0x5826('0x16')](_0x16cac0)['end']();};}function respondWithResult(_0x5bab7e,_0x1a4597){_0x1a4597=_0x1a4597||0xc8;return function(_0x1dcb80){if(_0x1dcb80){return _0x5bab7e[_0x5826('0x16')](_0x1a4597)['json'](_0x1dcb80);}};}function respondWithFilteredResult(_0x27d038,_0x590808){return function(_0x1dee61){if(_0x1dee61){var _0x2e6746=typeof _0x590808[_0x5826('0x17')]===_0x5826('0x18')&&typeof _0x590808[_0x5826('0x19')]===_0x5826('0x18');var _0x153eaa=_0x1dee61[_0x5826('0x1a')];var _0x2366f6=_0x2e6746?0x0:_0x590808['offset'];var _0xce530c=_0x2e6746?_0x1dee61[_0x5826('0x1a')]:_0x590808[_0x5826('0x17')]+_0x590808[_0x5826('0x19')];var _0x227e93;if(_0xce530c>=_0x153eaa){_0xce530c=_0x153eaa;_0x227e93=0xc8;}else{_0x227e93=0xce;}_0x27d038['status'](_0x227e93);return _0x27d038[_0x5826('0x1b')](_0x5826('0x1c'),_0x2366f6+'-'+_0xce530c+'/'+_0x153eaa)[_0x5826('0x1d')](_0x1dee61);}return null;};}function patchUpdates(_0x4de519){return function(_0x45f598){try{jsonpatch[_0x5826('0x1e')](_0x45f598,_0x4de519,!![]);}catch(_0x173b75){return BPromise['reject'](_0x173b75);}return _0x45f598['save']();};}function saveUpdates(_0x4aa320,_0x4d4555){return function(_0x45439c){if(_0x45439c){return _0x45439c[_0x5826('0x1f')](_0x4aa320)['then'](function(_0x29fc){return _0x29fc;});}return null;};}function removeEntity(_0x2725f3,_0x1642fe){return function(_0x5cc7e0){if(_0x5cc7e0){return _0x5cc7e0[_0x5826('0x20')]()[_0x5826('0x21')](function(){_0x2725f3[_0x5826('0x16')](0xcc)[_0x5826('0x22')]();});}};}function handleEntityNotFound(_0x539768,_0x34c318){return function(_0x25ac5c){if(!_0x25ac5c){_0x539768['sendStatus'](0x194);}return _0x25ac5c;};}function handleError(_0x81530a,_0x5605c5){_0x5605c5=_0x5605c5||0x1f4;return function(_0x56d82a){logger[_0x5826('0x23')](_0x56d82a['stack']);if(_0x56d82a['name']){delete _0x56d82a[_0x5826('0x24')];}_0x81530a[_0x5826('0x16')](_0x5605c5)[_0x5826('0x25')](_0x56d82a);};}exports[_0x5826('0x26')]=function(_0x1f0529,_0x583066){var _0x40c722={},_0x48ceed={},_0x407ac1={'count':0x0,'rows':[]};var _0x13cf65=_['map'](db[_0x5826('0x27')][_0x5826('0x28')],function(_0x545095){return{'name':_0x545095[_0x5826('0x29')],'type':_0x545095[_0x5826('0x2a')]['key']};});_0x48ceed[_0x5826('0x2b')]=_[_0x5826('0x2c')](_0x13cf65,'name');_0x48ceed[_0x5826('0x2d')]=_[_0x5826('0x2e')](_0x1f0529[_0x5826('0x2d')]);_0x48ceed['filters']=_[_0x5826('0x2f')](_0x48ceed[_0x5826('0x2b')],_0x48ceed[_0x5826('0x2d')]);_0x40c722[_0x5826('0x30')]=_[_0x5826('0x2f')](_0x48ceed[_0x5826('0x2b')],qs[_0x5826('0x31')](_0x1f0529[_0x5826('0x2d')][_0x5826('0x31')]));_0x40c722[_0x5826('0x30')]=_0x40c722[_0x5826('0x30')]['length']?_0x40c722['attributes']:_0x48ceed[_0x5826('0x2b')];if(!_0x1f0529[_0x5826('0x2d')][_0x5826('0x32')](_0x5826('0x33'))){_0x40c722[_0x5826('0x19')]=qs[_0x5826('0x19')](_0x1f0529[_0x5826('0x2d')][_0x5826('0x19')]);_0x40c722[_0x5826('0x17')]=qs[_0x5826('0x17')](_0x1f0529[_0x5826('0x2d')]['offset']);}_0x40c722['order']=qs[_0x5826('0x34')](_0x1f0529['query']['sort']);_0x40c722[_0x5826('0x35')]=qs[_0x5826('0x36')](_[_0x5826('0x37')](_0x1f0529['query'],_0x48ceed[_0x5826('0x36')]),_0x13cf65);if(_0x1f0529[_0x5826('0x2d')][_0x5826('0x38')]){_0x40c722[_0x5826('0x35')]=_['merge'](_0x40c722['where'],{'$or':_[_0x5826('0x2c')](_0x13cf65,function(_0x4b07d9){if(_0x4b07d9[_0x5826('0x2a')]!==_0x5826('0x39')){var _0x3c1d4b={};_0x3c1d4b[_0x4b07d9[_0x5826('0x24')]]={'$like':'%'+_0x1f0529[_0x5826('0x2d')][_0x5826('0x38')]+'%'};return _0x3c1d4b;}})});}_0x40c722=_['merge']({},_0x40c722,_0x1f0529[_0x5826('0x3a')]);var _0x40648c={'where':_0x40c722[_0x5826('0x35')]};return db[_0x5826('0x27')]['count'](_0x40648c)[_0x5826('0x21')](function(_0x50d204){_0x407ac1[_0x5826('0x1a')]=_0x50d204;if(_0x1f0529[_0x5826('0x2d')]['includeAll']){_0x40c722[_0x5826('0x3b')]=[{'all':!![]}];}return db[_0x5826('0x27')]['findAll'](_0x40c722);})[_0x5826('0x21')](function(_0x26f5b0){_0x407ac1[_0x5826('0x3c')]=_0x26f5b0;return _0x407ac1;})[_0x5826('0x21')](respondWithFilteredResult(_0x583066,_0x40c722))[_0x5826('0x3d')](handleError(_0x583066,null));};exports[_0x5826('0x3e')]=function(_0x218c7c,_0x5a58b4){var _0x402588={'raw':!![],'where':{'id':_0x218c7c['params']['id']}},_0x4dda89={};_0x4dda89[_0x5826('0x2b')]=_[_0x5826('0x2e')](db['SquareReport']['rawAttributes']);_0x4dda89[_0x5826('0x2d')]=_['keys'](_0x218c7c[_0x5826('0x2d')]);_0x4dda89[_0x5826('0x36')]=_[_0x5826('0x2f')](_0x4dda89[_0x5826('0x2b')],_0x4dda89['query']);_0x402588['attributes']=_[_0x5826('0x2f')](_0x4dda89[_0x5826('0x2b')],qs[_0x5826('0x31')](_0x218c7c[_0x5826('0x2d')][_0x5826('0x31')]));_0x402588[_0x5826('0x30')]=_0x402588[_0x5826('0x30')][_0x5826('0x3f')]?_0x402588[_0x5826('0x30')]:_0x4dda89[_0x5826('0x2b')];if(_0x218c7c['query'][_0x5826('0x40')]){_0x402588[_0x5826('0x3b')]=[{'all':!![]}];}_0x402588=_[_0x5826('0x41')]({},_0x402588,_0x218c7c[_0x5826('0x3a')]);return db[_0x5826('0x27')][_0x5826('0x42')](_0x402588)[_0x5826('0x21')](handleEntityNotFound(_0x5a58b4,null))['then'](respondWithResult(_0x5a58b4,null))[_0x5826('0x3d')](handleError(_0x5a58b4,null));};exports[_0x5826('0x43')]=function(_0x4ccb95,_0x2d6b72){return db[_0x5826('0x27')][_0x5826('0x43')](_0x4ccb95[_0x5826('0x44')],{})[_0x5826('0x21')](respondWithResult(_0x2d6b72,0xc9))[_0x5826('0x3d')](handleError(_0x2d6b72,null));};exports[_0x5826('0x1f')]=function(_0x1d0923,_0x407e33){if(_0x1d0923[_0x5826('0x44')]['id']){delete _0x1d0923[_0x5826('0x44')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x1d0923['params']['id']}})[_0x5826('0x21')](handleEntityNotFound(_0x407e33,null))[_0x5826('0x21')](saveUpdates(_0x1d0923['body'],null))[_0x5826('0x21')](respondWithResult(_0x407e33,null))[_0x5826('0x3d')](handleError(_0x407e33,null));};exports['destroy']=function(_0x4bdcbb,_0x46a967){return db[_0x5826('0x27')][_0x5826('0x42')]({'where':{'id':_0x4bdcbb[_0x5826('0x45')]['id']}})['then'](handleEntityNotFound(_0x46a967,null))[_0x5826('0x21')](removeEntity(_0x46a967,null))['catch'](handleError(_0x46a967,null));};exports[_0x5826('0x46')]=function(_0x32d4e8,_0x50cef5){return db['SquareReport'][_0x5826('0x46')]()[_0x5826('0x21')](respondWithResult(_0x50cef5,null))['catch'](handleError(_0x50cef5,null));};
\ No newline at end of file
+var _0x050a=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','keys','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','map','SquareReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x1383b4,_0x43cf96){var _0x109a37=function(_0x23ed47){while(--_0x23ed47){_0x1383b4['push'](_0x1383b4['shift']());}};_0x109a37(++_0x43cf96);}(_0x050a,0x159));var _0xa050=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x050a[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0xa050('0x0'));var rimraf=require(_0xa050('0x1'));var zipdir=require(_0xa050('0x2'));var jsonpatch=require(_0xa050('0x3'));var rp=require(_0xa050('0x4'));var moment=require(_0xa050('0x5'));var BPromise=require(_0xa050('0x6'));var Mustache=require(_0xa050('0x7'));var util=require(_0xa050('0x8'));var path=require(_0xa050('0x9'));var sox=require(_0xa050('0xa'));var csv=require(_0xa050('0xb'));var ejs=require(_0xa050('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa050('0xd'));var crypto=require(_0xa050('0xe'));var jsforce=require(_0xa050('0xf'));var deskjs=require(_0xa050('0x10'));var toCsv=require(_0xa050('0xb'));var querystring=require(_0xa050('0x11'));var Papa=require(_0xa050('0x12'));var Redis=require(_0xa050('0x13'));var authService=require(_0xa050('0x14'));var qs=require(_0xa050('0x15'));var as=require(_0xa050('0x16'));var hardwareService=require(_0xa050('0x17'));var logger=require(_0xa050('0x18'))(_0xa050('0x19'));var utils=require(_0xa050('0x1a'));var config=require(_0xa050('0x1b'));var licenseUtil=require(_0xa050('0x1c'));var db=require(_0xa050('0x1d'))['db'];function respondWithStatusCode(_0x50c80e,_0x43de39){_0x43de39=_0x43de39||0xcc;return function(_0x43044b){if(_0x43044b){return _0x50c80e[_0xa050('0x1e')](_0x43de39);}return _0x50c80e['status'](_0x43de39)[_0xa050('0x1f')]();};}function respondWithResult(_0x1d816a,_0x481f0f){_0x481f0f=_0x481f0f||0xc8;return function(_0x37de2c){if(_0x37de2c){return _0x1d816a[_0xa050('0x20')](_0x481f0f)[_0xa050('0x21')](_0x37de2c);}};}function respondWithFilteredResult(_0x481da1,_0x4114cc){return function(_0x76f0cd){if(_0x76f0cd){var _0x48dd83=typeof _0x4114cc[_0xa050('0x22')]===_0xa050('0x23')&&typeof _0x4114cc[_0xa050('0x24')]==='undefined';var _0x2e5c0b=_0x76f0cd[_0xa050('0x25')];var _0x515aa0=_0x48dd83?0x0:_0x4114cc['offset'];var _0x3b1f92=_0x48dd83?_0x76f0cd[_0xa050('0x25')]:_0x4114cc[_0xa050('0x22')]+_0x4114cc[_0xa050('0x24')];var _0x4bc257;if(_0x3b1f92>=_0x2e5c0b){_0x3b1f92=_0x2e5c0b;_0x4bc257=0xc8;}else{_0x4bc257=0xce;}_0x481da1[_0xa050('0x20')](_0x4bc257);return _0x481da1['set'](_0xa050('0x26'),_0x515aa0+'-'+_0x3b1f92+'/'+_0x2e5c0b)[_0xa050('0x21')](_0x76f0cd);}return null;};}function patchUpdates(_0x4dff52){return function(_0x1d9242){try{jsonpatch[_0xa050('0x27')](_0x1d9242,_0x4dff52,!![]);}catch(_0x264ee9){return BPromise[_0xa050('0x28')](_0x264ee9);}return _0x1d9242[_0xa050('0x29')]();};}function saveUpdates(_0x4e2689,_0x1ea673){return function(_0x2a2d93){if(_0x2a2d93){return _0x2a2d93['update'](_0x4e2689)[_0xa050('0x2a')](function(_0x274693){return _0x274693;});}return null;};}function removeEntity(_0x1ef8bc,_0x3f49b2){return function(_0x207c34){if(_0x207c34){return _0x207c34[_0xa050('0x2b')]()[_0xa050('0x2a')](function(){_0x1ef8bc['status'](0xcc)[_0xa050('0x1f')]();});}};}function handleEntityNotFound(_0x3c79b5,_0xa0af54){return function(_0x580be4){if(!_0x580be4){_0x3c79b5[_0xa050('0x1e')](0x194);}return _0x580be4;};}function handleError(_0x2fe38b,_0x2d4701){_0x2d4701=_0x2d4701||0x1f4;return function(_0x41f3aa){logger[_0xa050('0x2c')](_0x41f3aa[_0xa050('0x2d')]);if(_0x41f3aa[_0xa050('0x2e')]){delete _0x41f3aa[_0xa050('0x2e')];}_0x2fe38b[_0xa050('0x20')](_0x2d4701)['send'](_0x41f3aa);};}exports['index']=function(_0x2fa8fb,_0x3c3994){var _0x45098e={},_0x1e38ca={},_0x2f7a7e={'count':0x0,'rows':[]};var _0x39cbae=_[_0xa050('0x2f')](db[_0xa050('0x30')][_0xa050('0x31')],function(_0x3223e3){return{'name':_0x3223e3[_0xa050('0x32')],'type':_0x3223e3[_0xa050('0x33')][_0xa050('0x34')]};});_0x1e38ca[_0xa050('0x35')]=_[_0xa050('0x2f')](_0x39cbae,'name');_0x1e38ca['query']=_['keys'](_0x2fa8fb[_0xa050('0x36')]);_0x1e38ca[_0xa050('0x37')]=_[_0xa050('0x38')](_0x1e38ca[_0xa050('0x35')],_0x1e38ca[_0xa050('0x36')]);_0x45098e[_0xa050('0x39')]=_['intersection'](_0x1e38ca['model'],qs[_0xa050('0x3a')](_0x2fa8fb[_0xa050('0x36')]['fields']));_0x45098e['attributes']=_0x45098e[_0xa050('0x39')][_0xa050('0x3b')]?_0x45098e[_0xa050('0x39')]:_0x1e38ca[_0xa050('0x35')];if(!_0x2fa8fb[_0xa050('0x36')][_0xa050('0x3c')](_0xa050('0x3d'))){_0x45098e['limit']=qs[_0xa050('0x24')](_0x2fa8fb[_0xa050('0x36')]['limit']);_0x45098e['offset']=qs[_0xa050('0x22')](_0x2fa8fb[_0xa050('0x36')]['offset']);}_0x45098e[_0xa050('0x3e')]=qs[_0xa050('0x3f')](_0x2fa8fb[_0xa050('0x36')][_0xa050('0x3f')]);_0x45098e[_0xa050('0x40')]=qs['filters'](_[_0xa050('0x41')](_0x2fa8fb['query'],_0x1e38ca['filters']),_0x39cbae);if(_0x2fa8fb['query'][_0xa050('0x42')]){_0x45098e['where']=_[_0xa050('0x43')](_0x45098e[_0xa050('0x40')],{'$or':_[_0xa050('0x2f')](_0x39cbae,function(_0x14be68){if(_0x14be68[_0xa050('0x33')]!==_0xa050('0x44')){var _0x17ed48={};_0x17ed48[_0x14be68['name']]={'$like':'%'+_0x2fa8fb[_0xa050('0x36')][_0xa050('0x42')]+'%'};return _0x17ed48;}})});}_0x45098e=_[_0xa050('0x43')]({},_0x45098e,_0x2fa8fb[_0xa050('0x45')]);var _0x2fa64e={'where':_0x45098e['where']};return db['SquareReport'][_0xa050('0x25')](_0x2fa64e)['then'](function(_0x3fe9d5){_0x2f7a7e[_0xa050('0x25')]=_0x3fe9d5;if(_0x2fa8fb[_0xa050('0x36')][_0xa050('0x46')]){_0x45098e[_0xa050('0x47')]=[{'all':!![]}];}return db[_0xa050('0x30')][_0xa050('0x48')](_0x45098e);})['then'](function(_0x2a7cd9){_0x2f7a7e['rows']=_0x2a7cd9;return _0x2f7a7e;})[_0xa050('0x2a')](respondWithFilteredResult(_0x3c3994,_0x45098e))[_0xa050('0x49')](handleError(_0x3c3994,null));};exports['show']=function(_0x3714b4,_0x471ea7){var _0xa2daa1={'raw':!![],'where':{'id':_0x3714b4['params']['id']}},_0xbf0371={};_0xbf0371[_0xa050('0x35')]=_['keys'](db[_0xa050('0x30')][_0xa050('0x31')]);_0xbf0371['query']=_[_0xa050('0x4a')](_0x3714b4[_0xa050('0x36')]);_0xbf0371[_0xa050('0x37')]=_['intersection'](_0xbf0371[_0xa050('0x35')],_0xbf0371[_0xa050('0x36')]);_0xa2daa1[_0xa050('0x39')]=_[_0xa050('0x38')](_0xbf0371['model'],qs[_0xa050('0x3a')](_0x3714b4[_0xa050('0x36')]['fields']));_0xa2daa1[_0xa050('0x39')]=_0xa2daa1[_0xa050('0x39')][_0xa050('0x3b')]?_0xa2daa1['attributes']:_0xbf0371['model'];if(_0x3714b4['query']['includeAll']){_0xa2daa1[_0xa050('0x47')]=[{'all':!![]}];}_0xa2daa1=_[_0xa050('0x43')]({},_0xa2daa1,_0x3714b4[_0xa050('0x45')]);return db[_0xa050('0x30')][_0xa050('0x4b')](_0xa2daa1)[_0xa050('0x2a')](handleEntityNotFound(_0x471ea7,null))['then'](respondWithResult(_0x471ea7,null))['catch'](handleError(_0x471ea7,null));};exports[_0xa050('0x4c')]=function(_0x2a40f0,_0x486da8){return db[_0xa050('0x30')][_0xa050('0x4c')](_0x2a40f0[_0xa050('0x4d')],{})[_0xa050('0x2a')](respondWithResult(_0x486da8,0xc9))[_0xa050('0x49')](handleError(_0x486da8,null));};exports[_0xa050('0x4e')]=function(_0x203947,_0x181a3f){if(_0x203947[_0xa050('0x4d')]['id']){delete _0x203947[_0xa050('0x4d')]['id'];}return db[_0xa050('0x30')][_0xa050('0x4b')]({'where':{'id':_0x203947[_0xa050('0x4f')]['id']}})[_0xa050('0x2a')](handleEntityNotFound(_0x181a3f,null))[_0xa050('0x2a')](saveUpdates(_0x203947[_0xa050('0x4d')],null))['then'](respondWithResult(_0x181a3f,null))[_0xa050('0x49')](handleError(_0x181a3f,null));};exports['destroy']=function(_0x4c6248,_0x57a7ca){return db[_0xa050('0x30')][_0xa050('0x4b')]({'where':{'id':_0x4c6248['params']['id']}})[_0xa050('0x2a')](handleEntityNotFound(_0x57a7ca,null))['then'](removeEntity(_0x57a7ca,null))[_0xa050('0x49')](handleError(_0x57a7ca,null));};exports[_0xa050('0x50')]=function(_0xbedaa8,_0x49322a){return db['SquareReport']['describe']()[_0xa050('0x2a')](respondWithResult(_0x49322a,null))[_0xa050('0x49')](handleError(_0x49322a,null));};
\ No newline at end of file
index 995f9bb..37cd9b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce73=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','project_name','leaveAt'];(function(_0x201243,_0x7d71e2){var _0x1f8187=function(_0x196760){while(--_0x196760){_0x201243['push'](_0x201243['shift']());}};_0x1f8187(++_0x7d71e2);}(_0xce73,0x88));var _0x3ce7=function(_0x846215,_0x4fe3b1){_0x846215=_0x846215-0x0;var _0x467d07=_0xce73[_0x846215];return _0x467d07;};'use strict';var _=require(_0x3ce7('0x0'));var util=require(_0x3ce7('0x1'));var logger=require(_0x3ce7('0x2'))(_0x3ce7('0x3'));var moment=require(_0x3ce7('0x4'));var BPromise=require(_0x3ce7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3ce7('0x6'));var rimraf=require(_0x3ce7('0x7'));var config=require(_0x3ce7('0x8'));var attributes=require(_0x3ce7('0x9'));module[_0x3ce7('0xa')]=function(_0x486a4e,_0x53045a){return _0x486a4e[_0x3ce7('0xb')](_0x3ce7('0xc'),attributes,{'tableName':_0x3ce7('0xd'),'paranoid':![],'indexes':[{'name':_0x3ce7('0xe'),'fields':['uniqueid',_0x3ce7('0xf')]},{'name':_0x3ce7('0x10'),'fields':[_0x3ce7('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x70ff=['report_square','uid_pname','uniqueid','leaveAt','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./squareReport.attributes','define','SquareReport'];(function(_0x5ed6fa,_0x32d866){var _0x5f5d51=function(_0xc36ba1){while(--_0xc36ba1){_0x5ed6fa['push'](_0x5ed6fa['shift']());}};_0x5f5d51(++_0x32d866);}(_0x70ff,0x8b));var _0xf70f=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x70ff[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xf70f('0x0'));var util=require(_0xf70f('0x1'));var logger=require(_0xf70f('0x2'))(_0xf70f('0x3'));var moment=require('moment');var BPromise=require(_0xf70f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf70f('0x5'));var rimraf=require(_0xf70f('0x6'));var config=require(_0xf70f('0x7'));var attributes=require(_0xf70f('0x8'));module['exports']=function(_0x23ba68,_0x4b3bb8){return _0x23ba68[_0xf70f('0x9')](_0xf70f('0xa'),attributes,{'tableName':_0xf70f('0xb'),'paranoid':![],'indexes':[{'name':_0xf70f('0xc'),'fields':[_0xf70f('0xd'),'project_name']},{'name':_0xf70f('0xe'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 700c4d7..7000ce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac7=['UpdateSquareReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw'];(function(_0x543dc2,_0x298ba1){var _0x2e928=function(_0x15faa4){while(--_0x15faa4){_0x543dc2['push'](_0x543dc2['shift']());}};_0x2e928(++_0x298ba1);}(_0x5ac7,0xf2));var _0x75ac=function(_0x9f94c4,_0x1a0406){_0x9f94c4=_0x9f94c4-0x0;var _0x41d898=_0x5ac7[_0x9f94c4];return _0x41d898;};'use strict';var _=require(_0x75ac('0x0'));var util=require(_0x75ac('0x1'));var moment=require(_0x75ac('0x2'));var BPromise=require(_0x75ac('0x3'));var rs=require(_0x75ac('0x4'));var fs=require('fs');var Redis=require(_0x75ac('0x5'));var db=require(_0x75ac('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x75ac('0x7'))(_0x75ac('0x8'));var config=require(_0x75ac('0x9'));var jayson=require(_0x75ac('0xa'));var client=jayson[_0x75ac('0xb')][_0x75ac('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x515d77,_0x3cd120,_0x3fff01){return new BPromise(function(_0x36a7ad,_0x3f75c9){return client['request'](_0x515d77,_0x3fff01)[_0x75ac('0xd')](function(_0x3cd899){logger['info'](_0x75ac('0xe'),_0x3cd120,'request\x20sent');logger[_0x75ac('0xf')](_0x75ac('0x10'),_0x3cd120,_0x75ac('0x11'),JSON[_0x75ac('0x12')](_0x3cd899));if(_0x3cd899[_0x75ac('0x13')]){if(_0x3cd899[_0x75ac('0x13')][_0x75ac('0x14')]===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x3cd120,_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);return _0x3f75c9(_0x3cd899[_0x75ac('0x13')]['message']);}logger[_0x75ac('0x13')](_0x75ac('0xe'),_0x3cd120,_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);return _0x36a7ad(_0x3cd899[_0x75ac('0x13')][_0x75ac('0x15')]);}else{logger['info'](_0x75ac('0xe'),_0x3cd120,_0x75ac('0x11'));_0x36a7ad(_0x3cd899[_0x75ac('0x16')]['message']);}})[_0x75ac('0x17')](function(_0x449525){logger[_0x75ac('0x13')](_0x75ac('0xe'),_0x3cd120,_0x449525);_0x3f75c9(_0x449525);});});}exports[_0x75ac('0x18')]=function(_0x29c77c){var _0x57b33a=this;return new Promise(function(_0x2907d6,_0x2eda77){return db[_0x75ac('0x19')][_0x75ac('0x1a')](_0x29c77c[_0x75ac('0x1b')],{'raw':_0x29c77c[_0x75ac('0x1c')]?_0x29c77c['options'][_0x75ac('0x1d')]===undefined?!![]:![]:!![]})[_0x75ac('0xd')](function(_0x20fb39){logger['info'](_0x75ac('0x18'),_0x29c77c);logger['debug'](_0x75ac('0x18'),_0x29c77c,JSON[_0x75ac('0x12')](_0x20fb39));_0x2907d6(_0x20fb39);})['catch'](function(_0xb72705){logger[_0x75ac('0x13')]('CreateSquareReport',_0xb72705[_0x75ac('0x15')],_0x29c77c);_0x2eda77(_0x57b33a['error'](0x1f4,_0xb72705[_0x75ac('0x15')]));});});};exports[_0x75ac('0x1e')]=function(_0x56c887){var _0x1307a5=this;return new Promise(function(_0x5ee58e,_0x225262){return db['SquareReport'][_0x75ac('0x1f')](_0x56c887[_0x75ac('0x1b')],{'raw':_0x56c887[_0x75ac('0x1c')]?_0x56c887[_0x75ac('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56c887[_0x75ac('0x1c')]?_0x56c887['options'][_0x75ac('0x20')]||null:null,'attributes':_0x56c887['options']?_0x56c887[_0x75ac('0x1c')][_0x75ac('0x21')]||null:null,'limit':_0x56c887[_0x75ac('0x1c')]?_0x56c887[_0x75ac('0x1c')]['limit']||null:null})[_0x75ac('0xd')](function(_0x14ceea){logger['info'](_0x75ac('0x1e'),_0x56c887);logger[_0x75ac('0xf')](_0x75ac('0x1e'),_0x56c887,JSON['stringify'](_0x14ceea));_0x5ee58e(_0x14ceea);})[_0x75ac('0x17')](function(_0x58c7c3){logger['error']('UpdateSquareReport',_0x58c7c3[_0x75ac('0x15')],_0x56c887);_0x225262(_0x1307a5[_0x75ac('0x13')](0x1f4,_0x58c7c3[_0x75ac('0x15')]));});});};
\ No newline at end of file
+var _0xafb8=['SquareReport','update','body','where','attributes','limit','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','options','then','CreateSquareReport','UpdateSquareReport'];(function(_0x25d32b,_0x1c8a9d){var _0x262aad=function(_0x4baeab){while(--_0x4baeab){_0x25d32b['push'](_0x25d32b['shift']());}};_0x262aad(++_0x1c8a9d);}(_0xafb8,0x8a));var _0x8afb=function(_0x28ea3d,_0x47cb54){_0x28ea3d=_0x28ea3d-0x0;var _0x1032eb=_0xafb8[_0x28ea3d];return _0x1032eb;};'use strict';var _=require('lodash');var util=require(_0x8afb('0x0'));var moment=require(_0x8afb('0x1'));var BPromise=require(_0x8afb('0x2'));var rs=require(_0x8afb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8afb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8afb('0x5'))(_0x8afb('0x6'));var config=require(_0x8afb('0x7'));var jayson=require(_0x8afb('0x8'));var client=jayson[_0x8afb('0x9')][_0x8afb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x576fd7,_0x7dd81a,_0x4f32eb){return new BPromise(function(_0x171568,_0x49aedd){return client[_0x8afb('0xb')](_0x576fd7,_0x4f32eb)['then'](function(_0x3a1a7e){logger[_0x8afb('0xc')](_0x8afb('0xd'),_0x7dd81a,_0x8afb('0xe'));logger[_0x8afb('0xf')](_0x8afb('0x10'),_0x7dd81a,'request\x20sent',JSON[_0x8afb('0x11')](_0x3a1a7e));if(_0x3a1a7e[_0x8afb('0x12')]){if(_0x3a1a7e[_0x8afb('0x12')][_0x8afb('0x13')]===0x1f4){logger[_0x8afb('0x12')]('SquareReport,\x20%s,\x20%s',_0x7dd81a,_0x3a1a7e['error'][_0x8afb('0x14')]);return _0x49aedd(_0x3a1a7e[_0x8afb('0x12')]['message']);}logger[_0x8afb('0x12')]('SquareReport,\x20%s,\x20%s',_0x7dd81a,_0x3a1a7e[_0x8afb('0x12')]['message']);return _0x171568(_0x3a1a7e['error']['message']);}else{logger[_0x8afb('0xc')]('SquareReport,\x20%s,\x20%s',_0x7dd81a,_0x8afb('0xe'));_0x171568(_0x3a1a7e[_0x8afb('0x15')]['message']);}})[_0x8afb('0x16')](function(_0x24c06e){logger['error'](_0x8afb('0xd'),_0x7dd81a,_0x24c06e);_0x49aedd(_0x24c06e);});});}exports['CreateSquareReport']=function(_0x3b1de7){var _0x326498=this;return new Promise(function(_0x44ec5e,_0x564a8f){return db['SquareReport']['create'](_0x3b1de7['body'],{'raw':_0x3b1de7[_0x8afb('0x17')]?_0x3b1de7[_0x8afb('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x8afb('0x18')](function(_0x396711){logger[_0x8afb('0xc')](_0x8afb('0x19'),_0x3b1de7);logger[_0x8afb('0xf')](_0x8afb('0x19'),_0x3b1de7,JSON[_0x8afb('0x11')](_0x396711));_0x44ec5e(_0x396711);})['catch'](function(_0x12bc02){logger[_0x8afb('0x12')](_0x8afb('0x19'),_0x12bc02[_0x8afb('0x14')],_0x3b1de7);_0x564a8f(_0x326498[_0x8afb('0x12')](0x1f4,_0x12bc02['message']));});});};exports[_0x8afb('0x1a')]=function(_0x16d9e8){var _0x1f7c03=this;return new Promise(function(_0x3921e9,_0x57c753){return db[_0x8afb('0x1b')][_0x8afb('0x1c')](_0x16d9e8[_0x8afb('0x1d')],{'raw':_0x16d9e8[_0x8afb('0x17')]?_0x16d9e8['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16d9e8[_0x8afb('0x17')]?_0x16d9e8[_0x8afb('0x17')][_0x8afb('0x1e')]||null:null,'attributes':_0x16d9e8[_0x8afb('0x17')]?_0x16d9e8[_0x8afb('0x17')][_0x8afb('0x1f')]||null:null,'limit':_0x16d9e8[_0x8afb('0x17')]?_0x16d9e8[_0x8afb('0x17')][_0x8afb('0x20')]||null:null})[_0x8afb('0x18')](function(_0x119fd0){logger[_0x8afb('0xc')](_0x8afb('0x1a'),_0x16d9e8);logger[_0x8afb('0xf')](_0x8afb('0x1a'),_0x16d9e8,JSON['stringify'](_0x119fd0));_0x3921e9(_0x119fd0);})[_0x8afb('0x16')](function(_0x5870a2){logger['error'](_0x8afb('0x1a'),_0x5870a2[_0x8afb('0x14')],_0x16d9e8);_0x57c753(_0x1f7c03[_0x8afb('0x12')](0x1f4,_0x5870a2['message']));});});};
\ No newline at end of file
index 757f06d..643b8f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x064b=['create','/:id','delete','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x064b,0x1d7));var _0xb064=function(_0x3c52b8,_0x2aa85e){_0x3c52b8=_0x3c52b8-0x0;var _0x3406cb=_0x064b[_0x3c52b8];return _0x3406cb;};'use strict';var multer=require(_0xb064('0x0'));var util=require(_0xb064('0x1'));var path=require(_0xb064('0x2'));var timeout=require(_0xb064('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb064('0x4'));var auth=require(_0xb064('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb064('0x6'));var controller=require(_0xb064('0x7'));router[_0xb064('0x8')]('/',auth[_0xb064('0x9')](),controller[_0xb064('0xa')]);router['get'](_0xb064('0xb'),auth[_0xb064('0x9')](),controller[_0xb064('0xc')]);router[_0xb064('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb064('0xd')]);router[_0xb064('0xe')]('/',auth['isAuthenticated'](),controller[_0xb064('0xf')]);router['put'](_0xb064('0x10'),auth[_0xb064('0x9')](),controller['update']);router[_0xb064('0x11')]('/:id',auth[_0xb064('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6655=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./squareReportDetail.controller','get','/describe','isAuthenticated','describe','/:id','post','create','put','update','delete'];(function(_0x38eb23,_0x196e8b){var _0x48506a=function(_0x36edb0){while(--_0x36edb0){_0x38eb23['push'](_0x38eb23['shift']());}};_0x48506a(++_0x196e8b);}(_0x6655,0xf2));var _0x5665=function(_0x3d96a4,_0x11f9b2){_0x3d96a4=_0x3d96a4-0x0;var _0x33c605=_0x6655[_0x3d96a4];return _0x33c605;};'use strict';var multer=require(_0x5665('0x0'));var util=require(_0x5665('0x1'));var path=require(_0x5665('0x2'));var timeout=require(_0x5665('0x3'));var express=require(_0x5665('0x4'));var router=express['Router']();var fs_extra=require(_0x5665('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5665('0x6'));var controller=require(_0x5665('0x7'));router[_0x5665('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5665('0x8')](_0x5665('0x9'),auth[_0x5665('0xa')](),controller[_0x5665('0xb')]);router[_0x5665('0x8')](_0x5665('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x5665('0xd')]('/',auth['isAuthenticated'](),controller[_0x5665('0xe')]);router[_0x5665('0xf')]('/:id',auth[_0x5665('0xa')](),controller[_0x5665('0x10')]);router[_0x5665('0x11')](_0x5665('0xc'),auth['isAuthenticated'](),controller[_0x5665('0x12')]);module[_0x5665('0x13')]=router;
\ No newline at end of file
index 1ccad8b..e630274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0187=['exports','STRING','sequelize'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x0187,0x158));var _0x7018=function(_0x4409e7,_0x307f17){_0x4409e7=_0x4409e7-0x0;var _0x24c751=_0x0187[_0x4409e7];return _0x24c751;};'use strict';var Sequelize=require(_0x7018('0x0'));module[_0x7018('0x1')]={'uniqueid':{'type':Sequelize[_0x7018('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x7018('0x2')]},'callerid':{'type':Sequelize[_0x7018('0x2')]}};
\ No newline at end of file
+var _0xa190=['exports','STRING','TEXT','sequelize'];(function(_0x12fe2c,_0x3fc47b){var _0xd8ba31=function(_0xda10a1){while(--_0xda10a1){_0x12fe2c['push'](_0x12fe2c['shift']());}};_0xd8ba31(++_0x3fc47b);}(_0xa190,0x8f));var _0x0a19=function(_0x607f17,_0xbe745d){_0x607f17=_0x607f17-0x0;var _0x23d9aa=_0xa190[_0x607f17];return _0x23d9aa;};'use strict';var Sequelize=require(_0x0a19('0x0'));module[_0x0a19('0x1')]={'uniqueid':{'type':Sequelize[_0x0a19('0x2')]},'node':{'type':Sequelize[_0x0a19('0x2')]},'application':{'type':Sequelize[_0x0a19('0x2')]},'data':{'type':Sequelize[_0x0a19('0x3')]},'project_name':{'type':Sequelize[_0x0a19('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1d6fea2..2d67c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e2=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','json','undefined','limit','count','offset','Content-Range','reject','save','update','then','destroy','end','sendStatus','stack','index','map','SquareDetailsReport','rawAttributes','type','key','model','name','query','keys','filters','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','intersection','length','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','fs-extra','lodash'];(function(_0x179b53,_0x31f6fe){var _0x38a146=function(_0x33f0c2){while(--_0x33f0c2){_0x179b53['push'](_0x179b53['shift']());}};_0x38a146(++_0x31f6fe);}(_0x90e2,0x1e6));var _0x290e=function(_0x43a59f,_0x510d29){_0x43a59f=_0x43a59f-0x0;var _0x1ee9a0=_0x90e2[_0x43a59f];return _0x1ee9a0;};'use strict';var emlformat=require(_0x290e('0x0'));var rimraf=require(_0x290e('0x1'));var zipdir=require(_0x290e('0x2'));var jsonpatch=require(_0x290e('0x3'));var rp=require(_0x290e('0x4'));var moment=require('moment');var BPromise=require(_0x290e('0x5'));var Mustache=require(_0x290e('0x6'));var util=require(_0x290e('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x290e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x290e('0x9'));var _=require(_0x290e('0xa'));var squel=require(_0x290e('0xb'));var crypto=require(_0x290e('0xc'));var jsforce=require(_0x290e('0xd'));var deskjs=require(_0x290e('0xe'));var toCsv=require(_0x290e('0x8'));var querystring=require('querystring');var Papa=require(_0x290e('0xf'));var Redis=require(_0x290e('0x10'));var authService=require(_0x290e('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x290e('0x12'));var logger=require('../../config/logger')(_0x290e('0x13'));var utils=require('../../config/utils');var config=require(_0x290e('0x14'));var licenseUtil=require(_0x290e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49d973,_0x1f17ea){_0x1f17ea=_0x1f17ea||0xcc;return function(_0x28afa3){if(_0x28afa3){return _0x49d973['sendStatus'](_0x1f17ea);}return _0x49d973[_0x290e('0x16')](_0x1f17ea)['end']();};}function respondWithResult(_0x53ae42,_0x405838){_0x405838=_0x405838||0xc8;return function(_0x3b15c1){if(_0x3b15c1){return _0x53ae42[_0x290e('0x16')](_0x405838)[_0x290e('0x17')](_0x3b15c1);}};}function respondWithFilteredResult(_0x442b1c,_0x32d734){return function(_0xa70dd6){if(_0xa70dd6){var _0x5d68b4=typeof _0x32d734['offset']===_0x290e('0x18')&&typeof _0x32d734[_0x290e('0x19')]===_0x290e('0x18');var _0x468b08=_0xa70dd6[_0x290e('0x1a')];var _0x283650=_0x5d68b4?0x0:_0x32d734[_0x290e('0x1b')];var _0x42550e=_0x5d68b4?_0xa70dd6['count']:_0x32d734['offset']+_0x32d734[_0x290e('0x19')];var _0x188e2d;if(_0x42550e>=_0x468b08){_0x42550e=_0x468b08;_0x188e2d=0xc8;}else{_0x188e2d=0xce;}_0x442b1c[_0x290e('0x16')](_0x188e2d);return _0x442b1c['set'](_0x290e('0x1c'),_0x283650+'-'+_0x42550e+'/'+_0x468b08)[_0x290e('0x17')](_0xa70dd6);}return null;};}function patchUpdates(_0x364eb2){return function(_0x690cb){try{jsonpatch['apply'](_0x690cb,_0x364eb2,!![]);}catch(_0x58de47){return BPromise[_0x290e('0x1d')](_0x58de47);}return _0x690cb[_0x290e('0x1e')]();};}function saveUpdates(_0x1e6c7f,_0x31fc36){return function(_0x211066){if(_0x211066){return _0x211066[_0x290e('0x1f')](_0x1e6c7f)[_0x290e('0x20')](function(_0x175e5f){return _0x175e5f;});}return null;};}function removeEntity(_0x259ccd,_0x325b3b){return function(_0x41ba49){if(_0x41ba49){return _0x41ba49[_0x290e('0x21')]()[_0x290e('0x20')](function(){_0x259ccd[_0x290e('0x16')](0xcc)[_0x290e('0x22')]();});}};}function handleEntityNotFound(_0x47c173,_0x44c01e){return function(_0x22854d){if(!_0x22854d){_0x47c173[_0x290e('0x23')](0x194);}return _0x22854d;};}function handleError(_0x122660,_0x3481c7){_0x3481c7=_0x3481c7||0x1f4;return function(_0x3bd1db){logger['error'](_0x3bd1db[_0x290e('0x24')]);if(_0x3bd1db['name']){delete _0x3bd1db['name'];}_0x122660['status'](_0x3481c7)['send'](_0x3bd1db);};}exports[_0x290e('0x25')]=function(_0x4f84af,_0x431b85){var _0x3d3029={},_0x5dbc43={},_0x13eb49={'count':0x0,'rows':[]};var _0x5d0f0f=_[_0x290e('0x26')](db[_0x290e('0x27')][_0x290e('0x28')],function(_0x2ab3ed){return{'name':_0x2ab3ed['fieldName'],'type':_0x2ab3ed[_0x290e('0x29')][_0x290e('0x2a')]};});_0x5dbc43[_0x290e('0x2b')]=_[_0x290e('0x26')](_0x5d0f0f,_0x290e('0x2c'));_0x5dbc43[_0x290e('0x2d')]=_[_0x290e('0x2e')](_0x4f84af[_0x290e('0x2d')]);_0x5dbc43[_0x290e('0x2f')]=_['intersection'](_0x5dbc43[_0x290e('0x2b')],_0x5dbc43[_0x290e('0x2d')]);_0x3d3029[_0x290e('0x30')]=_['intersection'](_0x5dbc43[_0x290e('0x2b')],qs[_0x290e('0x31')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x31')]));_0x3d3029[_0x290e('0x30')]=_0x3d3029[_0x290e('0x30')]['length']?_0x3d3029[_0x290e('0x30')]:_0x5dbc43[_0x290e('0x2b')];if(!_0x4f84af[_0x290e('0x2d')]['hasOwnProperty'](_0x290e('0x32'))){_0x3d3029[_0x290e('0x19')]=qs[_0x290e('0x19')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x19')]);_0x3d3029[_0x290e('0x1b')]=qs[_0x290e('0x1b')](_0x4f84af[_0x290e('0x2d')]['offset']);}_0x3d3029[_0x290e('0x33')]=qs[_0x290e('0x34')](_0x4f84af[_0x290e('0x2d')][_0x290e('0x34')]);_0x3d3029[_0x290e('0x35')]=qs[_0x290e('0x2f')](_[_0x290e('0x36')](_0x4f84af[_0x290e('0x2d')],_0x5dbc43[_0x290e('0x2f')]),_0x5d0f0f);if(_0x4f84af['query'][_0x290e('0x37')]){_0x3d3029['where']=_[_0x290e('0x38')](_0x3d3029['where'],{'$or':_[_0x290e('0x26')](_0x5d0f0f,function(_0xf45810){if(_0xf45810[_0x290e('0x29')]!==_0x290e('0x39')){var _0xeb0729={};_0xeb0729[_0xf45810[_0x290e('0x2c')]]={'$like':'%'+_0x4f84af[_0x290e('0x2d')]['filter']+'%'};return _0xeb0729;}})});}_0x3d3029=_[_0x290e('0x38')]({},_0x3d3029,_0x4f84af[_0x290e('0x3a')]);var _0x1f2bf0={'where':_0x3d3029[_0x290e('0x35')]};return db[_0x290e('0x27')][_0x290e('0x1a')](_0x1f2bf0)['then'](function(_0x3f7bdd){_0x13eb49[_0x290e('0x1a')]=_0x3f7bdd;if(_0x4f84af[_0x290e('0x2d')][_0x290e('0x3b')]){_0x3d3029[_0x290e('0x3c')]=[{'all':!![]}];}return db[_0x290e('0x27')][_0x290e('0x3d')](_0x3d3029);})['then'](function(_0x58dc32){_0x13eb49['rows']=_0x58dc32;return _0x13eb49;})[_0x290e('0x20')](respondWithFilteredResult(_0x431b85,_0x3d3029))[_0x290e('0x3e')](handleError(_0x431b85,null));};exports[_0x290e('0x3f')]=function(_0x536b9f,_0x163853){var _0x360db4={'raw':!![],'where':{'id':_0x536b9f[_0x290e('0x40')]['id']}},_0x4dd000={};_0x4dd000[_0x290e('0x2b')]=_[_0x290e('0x2e')](db[_0x290e('0x27')][_0x290e('0x28')]);_0x4dd000['query']=_[_0x290e('0x2e')](_0x536b9f[_0x290e('0x2d')]);_0x4dd000['filters']=_[_0x290e('0x41')](_0x4dd000['model'],_0x4dd000[_0x290e('0x2d')]);_0x360db4[_0x290e('0x30')]=_[_0x290e('0x41')](_0x4dd000[_0x290e('0x2b')],qs[_0x290e('0x31')](_0x536b9f[_0x290e('0x2d')][_0x290e('0x31')]));_0x360db4[_0x290e('0x30')]=_0x360db4[_0x290e('0x30')][_0x290e('0x42')]?_0x360db4[_0x290e('0x30')]:_0x4dd000['model'];if(_0x536b9f[_0x290e('0x2d')][_0x290e('0x3b')]){_0x360db4[_0x290e('0x3c')]=[{'all':!![]}];}_0x360db4=_[_0x290e('0x38')]({},_0x360db4,_0x536b9f['options']);return db[_0x290e('0x27')]['find'](_0x360db4)[_0x290e('0x20')](handleEntityNotFound(_0x163853,null))[_0x290e('0x20')](respondWithResult(_0x163853,null))[_0x290e('0x3e')](handleError(_0x163853,null));};exports[_0x290e('0x43')]=function(_0x3a6fd4,_0x481ca0){return db['SquareDetailsReport']['create'](_0x3a6fd4['body'],{})['then'](respondWithResult(_0x481ca0,0xc9))[_0x290e('0x3e')](handleError(_0x481ca0,null));};exports[_0x290e('0x1f')]=function(_0x4e9922,_0xea95fa){if(_0x4e9922[_0x290e('0x44')]['id']){delete _0x4e9922[_0x290e('0x44')]['id'];}return db[_0x290e('0x27')][_0x290e('0x45')]({'where':{'id':_0x4e9922[_0x290e('0x40')]['id']}})[_0x290e('0x20')](handleEntityNotFound(_0xea95fa,null))[_0x290e('0x20')](saveUpdates(_0x4e9922[_0x290e('0x44')],null))['then'](respondWithResult(_0xea95fa,null))['catch'](handleError(_0xea95fa,null));};exports[_0x290e('0x21')]=function(_0x3cab0c,_0x3fe9d4){return db[_0x290e('0x27')][_0x290e('0x45')]({'where':{'id':_0x3cab0c[_0x290e('0x40')]['id']}})['then'](handleEntityNotFound(_0x3fe9d4,null))[_0x290e('0x20')](removeEntity(_0x3fe9d4,null))[_0x290e('0x3e')](handleError(_0x3fe9d4,null));};exports['describe']=function(_0x14cd32,_0xc2f615){return db[_0x290e('0x27')][_0x290e('0x46')]()[_0x290e('0x20')](respondWithResult(_0xc2f615,null))[_0x290e('0x3e')](handleError(_0xc2f615,null));};
\ No newline at end of file
+var _0xcce3=['ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','stack','name','send','index','map','SquareDetailsReport','type','key','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','rawAttributes','includeAll','options','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv'];(function(_0x234f97,_0x27b6c3){var _0x21f9ac=function(_0x4f1f60){while(--_0x4f1f60){_0x234f97['push'](_0x234f97['shift']());}};_0x21f9ac(++_0x27b6c3);}(_0xcce3,0x186));var _0x3cce=function(_0x1709e7,_0x2ced21){_0x1709e7=_0x1709e7-0x0;var _0x402819=_0xcce3[_0x1709e7];return _0x402819;};'use strict';var emlformat=require(_0x3cce('0x0'));var rimraf=require(_0x3cce('0x1'));var zipdir=require(_0x3cce('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3cce('0x3'));var moment=require(_0x3cce('0x4'));var BPromise=require(_0x3cce('0x5'));var Mustache=require('mustache');var util=require(_0x3cce('0x6'));var path=require(_0x3cce('0x7'));var sox=require(_0x3cce('0x8'));var csv=require(_0x3cce('0x9'));var ejs=require(_0x3cce('0xa'));var fs=require('fs');var fs_extra=require(_0x3cce('0xb'));var _=require(_0x3cce('0xc'));var squel=require('squel');var crypto=require(_0x3cce('0xd'));var jsforce=require(_0x3cce('0xe'));var deskjs=require(_0x3cce('0xf'));var toCsv=require(_0x3cce('0x9'));var querystring=require(_0x3cce('0x10'));var Papa=require(_0x3cce('0x11'));var Redis=require('ioredis');var authService=require(_0x3cce('0x12'));var qs=require(_0x3cce('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3cce('0x14'));var logger=require(_0x3cce('0x15'))(_0x3cce('0x16'));var utils=require(_0x3cce('0x17'));var config=require(_0x3cce('0x18'));var licenseUtil=require(_0x3cce('0x19'));var db=require(_0x3cce('0x1a'))['db'];function respondWithStatusCode(_0x33d4fc,_0xc6bb6f){_0xc6bb6f=_0xc6bb6f||0xcc;return function(_0x2d0b2f){if(_0x2d0b2f){return _0x33d4fc[_0x3cce('0x1b')](_0xc6bb6f);}return _0x33d4fc[_0x3cce('0x1c')](_0xc6bb6f)[_0x3cce('0x1d')]();};}function respondWithResult(_0x1885ae,_0x3d5782){_0x3d5782=_0x3d5782||0xc8;return function(_0x1316e7){if(_0x1316e7){return _0x1885ae[_0x3cce('0x1c')](_0x3d5782)[_0x3cce('0x1e')](_0x1316e7);}};}function respondWithFilteredResult(_0x17df45,_0x5cb406){return function(_0x27c0a7){if(_0x27c0a7){var _0x56c988=typeof _0x5cb406[_0x3cce('0x1f')]===_0x3cce('0x20')&&typeof _0x5cb406[_0x3cce('0x21')]===_0x3cce('0x20');var _0x35caae=_0x27c0a7[_0x3cce('0x22')];var _0x368784=_0x56c988?0x0:_0x5cb406['offset'];var _0x46a235=_0x56c988?_0x27c0a7['count']:_0x5cb406[_0x3cce('0x1f')]+_0x5cb406[_0x3cce('0x21')];var _0x1a6f3a;if(_0x46a235>=_0x35caae){_0x46a235=_0x35caae;_0x1a6f3a=0xc8;}else{_0x1a6f3a=0xce;}_0x17df45['status'](_0x1a6f3a);return _0x17df45[_0x3cce('0x23')](_0x3cce('0x24'),_0x368784+'-'+_0x46a235+'/'+_0x35caae)[_0x3cce('0x1e')](_0x27c0a7);}return null;};}function patchUpdates(_0x532dc5){return function(_0x25027a){try{jsonpatch['apply'](_0x25027a,_0x532dc5,!![]);}catch(_0x125d6e){return BPromise[_0x3cce('0x25')](_0x125d6e);}return _0x25027a[_0x3cce('0x26')]();};}function saveUpdates(_0x4fb8bf,_0x4537aa){return function(_0xbd8184){if(_0xbd8184){return _0xbd8184[_0x3cce('0x27')](_0x4fb8bf)['then'](function(_0xf2d637){return _0xf2d637;});}return null;};}function removeEntity(_0x32440d,_0x252d0a){return function(_0x4a1190){if(_0x4a1190){return _0x4a1190[_0x3cce('0x28')]()[_0x3cce('0x29')](function(){_0x32440d[_0x3cce('0x1c')](0xcc)[_0x3cce('0x1d')]();});}};}function handleEntityNotFound(_0x26fde9,_0x3a69ce){return function(_0x428eaa){if(!_0x428eaa){_0x26fde9[_0x3cce('0x1b')](0x194);}return _0x428eaa;};}function handleError(_0x3f30c7,_0x1611a6){_0x1611a6=_0x1611a6||0x1f4;return function(_0x312504){logger['error'](_0x312504[_0x3cce('0x2a')]);if(_0x312504[_0x3cce('0x2b')]){delete _0x312504[_0x3cce('0x2b')];}_0x3f30c7[_0x3cce('0x1c')](_0x1611a6)[_0x3cce('0x2c')](_0x312504);};}exports[_0x3cce('0x2d')]=function(_0x124992,_0x35ffd6){var _0x1098e4={},_0x3e0f84={},_0x305186={'count':0x0,'rows':[]};var _0x41fc51=_[_0x3cce('0x2e')](db[_0x3cce('0x2f')]['rawAttributes'],function(_0x282d97){return{'name':_0x282d97['fieldName'],'type':_0x282d97[_0x3cce('0x30')][_0x3cce('0x31')]};});_0x3e0f84['model']=_[_0x3cce('0x2e')](_0x41fc51,_0x3cce('0x2b'));_0x3e0f84[_0x3cce('0x32')]=_['keys'](_0x124992['query']);_0x3e0f84[_0x3cce('0x33')]=_['intersection'](_0x3e0f84['model'],_0x3e0f84[_0x3cce('0x32')]);_0x1098e4[_0x3cce('0x34')]=_[_0x3cce('0x35')](_0x3e0f84[_0x3cce('0x36')],qs['fields'](_0x124992[_0x3cce('0x32')][_0x3cce('0x37')]));_0x1098e4[_0x3cce('0x34')]=_0x1098e4[_0x3cce('0x34')][_0x3cce('0x38')]?_0x1098e4[_0x3cce('0x34')]:_0x3e0f84['model'];if(!_0x124992[_0x3cce('0x32')][_0x3cce('0x39')](_0x3cce('0x3a'))){_0x1098e4[_0x3cce('0x21')]=qs['limit'](_0x124992[_0x3cce('0x32')]['limit']);_0x1098e4[_0x3cce('0x1f')]=qs[_0x3cce('0x1f')](_0x124992['query'][_0x3cce('0x1f')]);}_0x1098e4[_0x3cce('0x3b')]=qs[_0x3cce('0x3c')](_0x124992[_0x3cce('0x32')]['sort']);_0x1098e4[_0x3cce('0x3d')]=qs[_0x3cce('0x33')](_[_0x3cce('0x3e')](_0x124992['query'],_0x3e0f84[_0x3cce('0x33')]),_0x41fc51);if(_0x124992[_0x3cce('0x32')][_0x3cce('0x3f')]){_0x1098e4['where']=_[_0x3cce('0x40')](_0x1098e4['where'],{'$or':_['map'](_0x41fc51,function(_0x57fe42){if(_0x57fe42[_0x3cce('0x30')]!==_0x3cce('0x41')){var _0x812be3={};_0x812be3[_0x57fe42['name']]={'$like':'%'+_0x124992[_0x3cce('0x32')][_0x3cce('0x3f')]+'%'};return _0x812be3;}})});}_0x1098e4=_[_0x3cce('0x40')]({},_0x1098e4,_0x124992['options']);var _0x24344e={'where':_0x1098e4['where']};return db[_0x3cce('0x2f')][_0x3cce('0x22')](_0x24344e)[_0x3cce('0x29')](function(_0x2fc591){_0x305186['count']=_0x2fc591;if(_0x124992['query']['includeAll']){_0x1098e4[_0x3cce('0x42')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x3cce('0x43')](_0x1098e4);})[_0x3cce('0x29')](function(_0x5edcb6){_0x305186[_0x3cce('0x44')]=_0x5edcb6;return _0x305186;})[_0x3cce('0x29')](respondWithFilteredResult(_0x35ffd6,_0x1098e4))[_0x3cce('0x45')](handleError(_0x35ffd6,null));};exports[_0x3cce('0x46')]=function(_0xb97c75,_0x187b6c){var _0x55a13f={'raw':!![],'where':{'id':_0xb97c75[_0x3cce('0x47')]['id']}},_0x13a6e3={};_0x13a6e3[_0x3cce('0x36')]=_[_0x3cce('0x48')](db['SquareDetailsReport'][_0x3cce('0x49')]);_0x13a6e3[_0x3cce('0x32')]=_['keys'](_0xb97c75[_0x3cce('0x32')]);_0x13a6e3[_0x3cce('0x33')]=_[_0x3cce('0x35')](_0x13a6e3[_0x3cce('0x36')],_0x13a6e3['query']);_0x55a13f[_0x3cce('0x34')]=_[_0x3cce('0x35')](_0x13a6e3[_0x3cce('0x36')],qs[_0x3cce('0x37')](_0xb97c75[_0x3cce('0x32')]['fields']));_0x55a13f['attributes']=_0x55a13f[_0x3cce('0x34')][_0x3cce('0x38')]?_0x55a13f[_0x3cce('0x34')]:_0x13a6e3[_0x3cce('0x36')];if(_0xb97c75[_0x3cce('0x32')][_0x3cce('0x4a')]){_0x55a13f[_0x3cce('0x42')]=[{'all':!![]}];}_0x55a13f=_['merge']({},_0x55a13f,_0xb97c75[_0x3cce('0x4b')]);return db[_0x3cce('0x2f')][_0x3cce('0x4c')](_0x55a13f)['then'](handleEntityNotFound(_0x187b6c,null))[_0x3cce('0x29')](respondWithResult(_0x187b6c,null))[_0x3cce('0x45')](handleError(_0x187b6c,null));};exports[_0x3cce('0x4d')]=function(_0xa36e06,_0x2fb939){return db[_0x3cce('0x2f')][_0x3cce('0x4d')](_0xa36e06[_0x3cce('0x4e')],{})['then'](respondWithResult(_0x2fb939,0xc9))[_0x3cce('0x45')](handleError(_0x2fb939,null));};exports['update']=function(_0x1b4964,_0x2dcdb8){if(_0x1b4964[_0x3cce('0x4e')]['id']){delete _0x1b4964[_0x3cce('0x4e')]['id'];}return db['SquareDetailsReport'][_0x3cce('0x4c')]({'where':{'id':_0x1b4964['params']['id']}})[_0x3cce('0x29')](handleEntityNotFound(_0x2dcdb8,null))[_0x3cce('0x29')](saveUpdates(_0x1b4964[_0x3cce('0x4e')],null))[_0x3cce('0x29')](respondWithResult(_0x2dcdb8,null))[_0x3cce('0x45')](handleError(_0x2dcdb8,null));};exports['destroy']=function(_0x288fff,_0x21aed4){return db['SquareDetailsReport'][_0x3cce('0x4c')]({'where':{'id':_0x288fff[_0x3cce('0x47')]['id']}})['then'](handleEntityNotFound(_0x21aed4,null))[_0x3cce('0x29')](removeEntity(_0x21aed4,null))[_0x3cce('0x45')](handleError(_0x21aed4,null));};exports['describe']=function(_0x46d470,_0x591a9c){return db['SquareDetailsReport'][_0x3cce('0x4f')]()['then'](respondWithResult(_0x591a9c,null))[_0x3cce('0x45')](handleError(_0x591a9c,null));};
\ No newline at end of file
index efda54f..561e8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cec=['request-promise','path','rimraf','./squareReportDetail.attributes','exports','define','report_square_details','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6cec,0xa9));var _0xc6ce=function(_0x21c6b8,_0x16d6f6){_0x21c6b8=_0x21c6b8-0x0;var _0x39d474=_0x6cec[_0x21c6b8];return _0x39d474;};'use strict';var _=require(_0xc6ce('0x0'));var util=require('util');var logger=require(_0xc6ce('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc6ce('0x2'));var fs=require('fs');var path=require(_0xc6ce('0x3'));var rimraf=require(_0xc6ce('0x4'));var config=require('../../config/environment');var attributes=require(_0xc6ce('0x5'));module[_0xc6ce('0x6')]=function(_0x197970,_0x27ef60){return _0x197970[_0xc6ce('0x7')]('SquareDetailsReport',attributes,{'tableName':_0xc6ce('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b16=['bluebird','request-promise','rimraf','../../config/environment','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api'];(function(_0x4f35f4,_0x51a8c3){var _0x2e9a70=function(_0x110aca){while(--_0x110aca){_0x4f35f4['push'](_0x4f35f4['shift']());}};_0x2e9a70(++_0x51a8c3);}(_0x9b16,0x194));var _0x69b1=function(_0x2e3152,_0x16c659){_0x2e3152=_0x2e3152-0x0;var _0x2e1351=_0x9b16[_0x2e3152];return _0x2e1351;};'use strict';var _=require(_0x69b1('0x0'));var util=require(_0x69b1('0x1'));var logger=require(_0x69b1('0x2'))(_0x69b1('0x3'));var moment=require('moment');var BPromise=require(_0x69b1('0x4'));var rp=require(_0x69b1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x69b1('0x6'));var config=require(_0x69b1('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0x69b1('0x8')]=function(_0x4fbeb5,_0x4a9e20){return _0x4fbeb5[_0x69b1('0x9')](_0x69b1('0xa'),attributes,{'tableName':_0x69b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a33ddb..8d8f235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d05=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','stringify','catch'];(function(_0x22c4bf,_0x34cb9e){var _0x1c4a79=function(_0x11f1d9){while(--_0x11f1d9){_0x22c4bf['push'](_0x22c4bf['shift']());}};_0x1c4a79(++_0x34cb9e);}(_0x8d05,0xe8));var _0x58d0=function(_0x2441d5,_0x49e5d3){_0x2441d5=_0x2441d5-0x0;var _0x3ef564=_0x8d05[_0x2441d5];return _0x3ef564;};'use strict';var _=require(_0x58d0('0x0'));var util=require(_0x58d0('0x1'));var moment=require(_0x58d0('0x2'));var BPromise=require(_0x58d0('0x3'));var rs=require(_0x58d0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x58d0('0x5'));var logger=require(_0x58d0('0x6'))(_0x58d0('0x7'));var config=require(_0x58d0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x58d0('0x9')][_0x58d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x528303,_0x66aef1,_0x4e44e2){return new BPromise(function(_0xe744f4,_0x34ab60){return client[_0x58d0('0xb')](_0x528303,_0x4e44e2)[_0x58d0('0xc')](function(_0x1d070a){logger['info'](_0x58d0('0xd'),_0x66aef1,_0x58d0('0xe'));logger['debug'](_0x58d0('0xf'),_0x66aef1,_0x58d0('0xe'),JSON['stringify'](_0x1d070a));if(_0x1d070a['error']){if(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x11')]===0x1f4){logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);return _0x34ab60(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);}logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);return _0xe744f4(_0x1d070a[_0x58d0('0x10')][_0x58d0('0x12')]);}else{logger[_0x58d0('0x13')](_0x58d0('0xd'),_0x66aef1,_0x58d0('0xe'));_0xe744f4(_0x1d070a[_0x58d0('0x14')][_0x58d0('0x12')]);}})['catch'](function(_0x10874e){logger[_0x58d0('0x10')](_0x58d0('0xd'),_0x66aef1,_0x10874e);_0x34ab60(_0x10874e);});});}exports[_0x58d0('0x15')]=function(_0xb8dd5f){var _0x2c7db6=this;return new Promise(function(_0x23dcfb,_0x41d221){return db[_0x58d0('0x16')][_0x58d0('0x17')](_0xb8dd5f[_0x58d0('0x18')],{'raw':_0xb8dd5f[_0x58d0('0x19')]?_0xb8dd5f[_0x58d0('0x19')][_0x58d0('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x3072f9){logger[_0x58d0('0x13')](_0x58d0('0x15'),_0xb8dd5f);logger['debug'](_0x58d0('0x15'),_0xb8dd5f,JSON[_0x58d0('0x1b')](_0x3072f9));_0x23dcfb(_0x3072f9);})[_0x58d0('0x1c')](function(_0x575b34){logger[_0x58d0('0x10')]('CreateSquareDetailsReport',_0x575b34['message'],_0xb8dd5f);_0x41d221(_0x2c7db6[_0x58d0('0x10')](0x1f4,_0x575b34[_0x58d0('0x12')]));});});};
\ No newline at end of file
+var _0xe2cf=['info','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x134827,_0x21f6ed){_0x134827=_0x134827-0x0;var _0x366671=_0xe2cf[_0x134827];return _0x366671;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var moment=require('moment');var BPromise=require(_0xfe2c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe2c('0x2'));var db=require(_0xfe2c('0x3'))['db'];var utils=require(_0xfe2c('0x4'));var logger=require(_0xfe2c('0x5'))('rpc');var config=require(_0xfe2c('0x6'));var jayson=require(_0xfe2c('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0b97,_0x417bc4,_0x5e5b46){return new BPromise(function(_0x485a24,_0x30aafe){return client[_0xfe2c('0x8')](_0x4e0b97,_0x5e5b46)[_0xfe2c('0x9')](function(_0x562414){logger['info'](_0xfe2c('0xa'),_0x417bc4,_0xfe2c('0xb'));logger['debug'](_0xfe2c('0xc'),_0x417bc4,_0xfe2c('0xb'),JSON[_0xfe2c('0xd')](_0x562414));if(_0x562414[_0xfe2c('0xe')]){if(_0x562414[_0xfe2c('0xe')][_0xfe2c('0xf')]===0x1f4){logger[_0xfe2c('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x417bc4,_0x562414['error']['message']);return _0x30aafe(_0x562414['error'][_0xfe2c('0x10')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x417bc4,_0x562414[_0xfe2c('0xe')][_0xfe2c('0x10')]);return _0x485a24(_0x562414[_0xfe2c('0xe')][_0xfe2c('0x10')]);}else{logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x417bc4,_0xfe2c('0xb'));_0x485a24(_0x562414[_0xfe2c('0x11')][_0xfe2c('0x10')]);}})[_0xfe2c('0x12')](function(_0x565f40){logger[_0xfe2c('0xe')](_0xfe2c('0xa'),_0x417bc4,_0x565f40);_0x30aafe(_0x565f40);});});}exports[_0xfe2c('0x13')]=function(_0x23242b){var _0x36aeec=this;return new Promise(function(_0x13f233,_0x4afea3){return db[_0xfe2c('0x14')][_0xfe2c('0x15')](_0x23242b[_0xfe2c('0x16')],{'raw':_0x23242b[_0xfe2c('0x17')]?_0x23242b['options'][_0xfe2c('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x4e9137){logger[_0xfe2c('0x19')](_0xfe2c('0x13'),_0x23242b);logger['debug'](_0xfe2c('0x13'),_0x23242b,JSON[_0xfe2c('0xd')](_0x4e9137));_0x13f233(_0x4e9137);})['catch'](function(_0x1bd50e){logger['error'](_0xfe2c('0x13'),_0x1bd50e[_0xfe2c('0x10')],_0x23242b);_0x4afea3(_0x36aeec[_0xfe2c('0xe')](0x1f4,_0x1bd50e[_0xfe2c('0x10')]));});});};
\ No newline at end of file
index 0f48156..91e111d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70d8=['killProcess','exports','Router','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x5661c5,_0x279a76){var _0x4d9e5b=function(_0x31e175){while(--_0x31e175){_0x5661c5['push'](_0x5661c5['shift']());}};_0x4d9e5b(++_0x279a76);}(_0x70d8,0x13d));var _0x870d=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x70d8[_0x4565bf];return _0x5610ba;};'use strict';var express=require('express');var router=express[_0x870d('0x0')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0x870d('0x1')]('/',auth[_0x870d('0x2')](),controller[_0x870d('0x3')]);router[_0x870d('0x1')](_0x870d('0x4'),auth[_0x870d('0x2')](),controller[_0x870d('0x5')]);module[_0x870d('0x6')]=router;
\ No newline at end of file
+var _0xe561=['/process/:pid/kill','isAuthenticated','killProcess','exports','express','../../components/auth/service','get','index'];(function(_0x3e21f4,_0x43d310){var _0x40fc49=function(_0x54a8f6){while(--_0x54a8f6){_0x3e21f4['push'](_0x3e21f4['shift']());}};_0x40fc49(++_0x43d310);}(_0xe561,0x104));var _0x1e56=function(_0x115399,_0x527017){_0x115399=_0x115399-0x0;var _0x3f76b8=_0xe561[_0x115399];return _0x3f76b8;};'use strict';var express=require(_0x1e56('0x0'));var router=express['Router']();var auth=require(_0x1e56('0x1'));var controller=require('./system.controller');router[_0x1e56('0x2')]('/',auth['isAuthenticated'](),controller[_0x1e56('0x3')]);router['get'](_0x1e56('0x4'),auth[_0x1e56('0x5')](),controller[_0x1e56('0x6')]);module[_0x1e56('0x7')]=router;
\ No newline at end of file
index 40ddd2f..31ae52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3dc=['Process\x20with\x20pid\x20%s\x20killed\x20correctly','exec','../../config/logger','api','util','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','json','catch','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','then','split','indexOf','format','params','pid','kill'];(function(_0x320b48,_0x1b09a1){var _0x5b2f37=function(_0x3b36b9){while(--_0x3b36b9){_0x320b48['push'](_0x320b48['shift']());}};_0x5b2f37(++_0x1b09a1);}(_0xf3dc,0x1a5));var _0xcf3d=function(_0x279ab1,_0x527374){_0x279ab1=_0x279ab1-0x0;var _0x8ba87c=_0xf3dc[_0x279ab1];return _0x8ba87c;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xcf3d('0x0')];var logger=require(_0xcf3d('0x1'))(_0xcf3d('0x2'));var util=require(_0xcf3d('0x3'));var BPromise=require('bluebird');var _=require('lodash');function handleError(_0x57cbcc,_0x51ff9c,_0x22c580){_0x51ff9c=_0x51ff9c||0x1f4;return function(_0xbd74e4){logger['error'](_0xcf3d('0x4'),_0x22c580,_0x51ff9c,util[_0xcf3d('0x5')](_0xbd74e4,{'showHidden':![],'depth':null}));delete _0xbd74e4[_0xcf3d('0x6')];_0x57cbcc[_0xcf3d('0x7')](_0x51ff9c)['send'](_0xbd74e4);};}exports['index']=function(_0x292956,_0x12abd5){return info['getAllData']()['then'](function(_0x334094){return _0x12abd5[_0xcf3d('0x7')](0xc8)[_0xcf3d('0x8')](_0x334094);})[_0xcf3d('0x9')](function(_0x384083){return _0x12abd5[_0xcf3d('0x7')](0x1f4)[_0xcf3d('0x8')](_0x384083);});};exports[_0xcf3d('0xa')]=function(_0x438f9f,_0x30a85e){var _0x35ef3f=[_0xcf3d('0xb')];return new BPromise(function(_0x21973d,_0x193954){return exec(util['format'](_0xcf3d('0xc'),_0x438f9f['params']['pid']),function(_0x39eaee,_0x28d122,_0x5a2486){if(_0x39eaee){return _0x193954(_0x39eaee);}return _0x21973d(_0x28d122);});})[_0xcf3d('0xd')](function(_0x755730){var _0x331fc1=![];var _0x102483=_0x755730[_0xcf3d('0xe')](/\n/);for(var _0x83760b=0x0,_0x4360a8=_0x35ef3f['length'];_0x83760b<_0x4360a8,_0x331fc1===![];_0x83760b+=0x1){if(_0x755730[_0xcf3d('0xf')](_0x35ef3f[_0x83760b])>=0x0){_0x331fc1=!![];}}if(!_0x331fc1){throw new Error(util[_0xcf3d('0x10')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x438f9f[_0xcf3d('0x11')][_0xcf3d('0x12')]));}process[_0xcf3d('0x13')](_0x438f9f['params']['pid'],'SIGINT');return _0x30a85e[_0xcf3d('0x7')](0xc8)[_0xcf3d('0x8')]({'message':util['format'](_0xcf3d('0x14'),_0x438f9f[_0xcf3d('0x11')][_0xcf3d('0x12')])});})[_0xcf3d('0x9')](handleError(_0x30a85e,null,'killProcess'));};
\ No newline at end of file
+var _0xb5cc=['pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','api','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','index','getAllData','json','killProcess','format','params','then','split','length','indexOf'];(function(_0x4975fb,_0x3181c0){var _0x2fb5af=function(_0x3f0b4e){while(--_0x3f0b4e){_0x4975fb['push'](_0x4975fb['shift']());}};_0x2fb5af(++_0x3181c0);}(_0xb5cc,0x1e4));var _0xcb5c=function(_0x2fd060,_0x24781a){_0x2fd060=_0x2fd060-0x0;var _0x1a1038=_0xb5cc[_0x2fd060];return _0x1a1038;};'use strict';var info=require(_0xcb5c('0x0'));var exec=require(_0xcb5c('0x1'))[_0xcb5c('0x2')];var logger=require('../../config/logger')(_0xcb5c('0x3'));var util=require('util');var BPromise=require(_0xcb5c('0x4'));var _=require('lodash');function handleError(_0x52209a,_0x117f3f,_0x24f794){_0x117f3f=_0x117f3f||0x1f4;return function(_0x1a8be8){logger[_0xcb5c('0x5')](_0xcb5c('0x6'),_0x24f794,_0x117f3f,util[_0xcb5c('0x7')](_0x1a8be8,{'showHidden':![],'depth':null}));delete _0x1a8be8[_0xcb5c('0x8')];_0x52209a[_0xcb5c('0x9')](_0x117f3f)['send'](_0x1a8be8);};}exports[_0xcb5c('0xa')]=function(_0x306c20,_0x259e6d){return info[_0xcb5c('0xb')]()['then'](function(_0x4207f4){return _0x259e6d['status'](0xc8)[_0xcb5c('0xc')](_0x4207f4);})['catch'](function(_0xcfdf10){return _0x259e6d['status'](0x1f4)['json'](_0xcfdf10);});};exports[_0xcb5c('0xd')]=function(_0x18ce93,_0x5cb963){var _0x2a9883=['components/import/cm'];return new BPromise(function(_0x292f26,_0x4026b4){return exec(util[_0xcb5c('0xe')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x18ce93[_0xcb5c('0xf')]['pid']),function(_0x15b63c,_0x353b02,_0x5d3cc3){if(_0x15b63c){return _0x4026b4(_0x15b63c);}return _0x292f26(_0x353b02);});})[_0xcb5c('0x10')](function(_0x3726a1){var _0x65294c=![];var _0x3f32ea=_0x3726a1[_0xcb5c('0x11')](/\n/);for(var _0x5d798f=0x0,_0x467230=_0x2a9883[_0xcb5c('0x12')];_0x5d798f<_0x467230,_0x65294c===![];_0x5d798f+=0x1){if(_0x3726a1[_0xcb5c('0x13')](_0x2a9883[_0x5d798f])>=0x0){_0x65294c=!![];}}if(!_0x65294c){throw new Error(util[_0xcb5c('0xe')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x18ce93['params'][_0xcb5c('0x14')]));}process[_0xcb5c('0x15')](_0x18ce93[_0xcb5c('0xf')]['pid'],_0xcb5c('0x16'));return _0x5cb963['status'](0xc8)[_0xcb5c('0xc')]({'message':util[_0xcb5c('0xe')](_0xcb5c('0x17'),_0x18ce93[_0xcb5c('0xf')][_0xcb5c('0x14')])});})['catch'](handleError(_0x5cb963,null,'killProcess'));};
\ No newline at end of file
index ff93ea0..a72f014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb6=['create','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','isAuthenticated','index','get','show'];(function(_0x4fe399,_0x53ab58){var _0x153bb5=function(_0x31b90a){while(--_0x31b90a){_0x4fe399['push'](_0x4fe399['shift']());}};_0x153bb5(++_0x53ab58);}(_0xadb6,0x1b5));var _0x6adb=function(_0x12875a,_0xe40b5f){_0x12875a=_0x12875a-0x0;var _0x11c7ab=_0xadb6[_0x12875a];return _0x11c7ab;};'use strict';var multer=require(_0x6adb('0x0'));var util=require(_0x6adb('0x1'));var path=require('path');var timeout=require(_0x6adb('0x2'));var express=require(_0x6adb('0x3'));var router=express[_0x6adb('0x4')]();var fs_extra=require(_0x6adb('0x5'));var auth=require(_0x6adb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6adb('0x7'));var controller=require(_0x6adb('0x8'));router['get']('/',auth[_0x6adb('0x9')](),controller[_0x6adb('0xa')]);router[_0x6adb('0xb')]('/:id',auth[_0x6adb('0x9')](),controller[_0x6adb('0xc')]);router['post']('/',auth[_0x6adb('0x9')](),controller[_0x6adb('0xd')]);router[_0x6adb('0xe')](_0x6adb('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x6adb('0x10')](_0x6adb('0xf'),auth[_0x6adb('0x9')](),controller[_0x6adb('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x530f=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','exports','util'];(function(_0x4c630b,_0x25f8ef){var _0x181259=function(_0x5d0e58){while(--_0x5d0e58){_0x4c630b['push'](_0x4c630b['shift']());}};_0x181259(++_0x25f8ef);}(_0x530f,0x167));var _0xf530=function(_0x784768,_0x3d0c75){_0x784768=_0x784768-0x0;var _0x3b76fc=_0x530f[_0x784768];return _0x3b76fc;};'use strict';var multer=require('multer');var util=require(_0xf530('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf530('0x1'));var router=express[_0xf530('0x2')]();var fs_extra=require(_0xf530('0x3'));var auth=require(_0xf530('0x4'));var interaction=require(_0xf530('0x5'));var config=require(_0xf530('0x6'));var controller=require(_0xf530('0x7'));router[_0xf530('0x8')]('/',auth['isAuthenticated'](),controller[_0xf530('0x9')]);router[_0xf530('0x8')](_0xf530('0xa'),auth['isAuthenticated'](),controller[_0xf530('0xb')]);router[_0xf530('0xc')]('/',auth[_0xf530('0xd')](),controller[_0xf530('0xe')]);router[_0xf530('0xf')](_0xf530('0xa'),auth['isAuthenticated'](),controller[_0xf530('0x10')]);router[_0xf530('0x11')](_0xf530('0xa'),auth[_0xf530('0xd')](),controller[_0xf530('0x12')]);module[_0xf530('0x13')]=router;
\ No newline at end of file
index d947d34..6f8972a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['exports','STRING'];(function(_0x4df1d9,_0x241287){var _0x227135=function(_0x43238a){while(--_0x43238a){_0x4df1d9['push'](_0x4df1d9['shift']());}};_0x227135(++_0x241287);}(_0xda3f,0xec));var _0xfda3=function(_0x54a1d6,_0x58bcf2){_0x54a1d6=_0x54a1d6-0x0;var _0x1f77dd=_0xda3f[_0x54a1d6];return _0x1f77dd;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'name':{'type':Sequelize[_0xfda3('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xfda3('0x1')]}};
\ No newline at end of file
+var _0x92d7=['STRING','name','#0091EA','sequelize'];(function(_0x64f4bc,_0x232ea1){var _0x3bec49=function(_0x25d208){while(--_0x25d208){_0x64f4bc['push'](_0x64f4bc['shift']());}};_0x3bec49(++_0x232ea1);}(_0x92d7,0x17b));var _0x792d=function(_0x27ca34,_0x1d9b33){_0x27ca34=_0x27ca34-0x0;var _0x28f916=_0x92d7[_0x27ca34];return _0x28f916;};'use strict';var Sequelize=require(_0x792d('0x0'));module['exports']={'name':{'type':Sequelize[_0x792d('0x1')],'unique':_0x792d('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x792d('0x1')],'defaultValue':_0x792d('0x3')},'description':{'type':Sequelize[_0x792d('0x1')]}};
\ No newline at end of file
index c165839..0ebb84b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c3=['find','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','lodash','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','end','json','offset','undefined','limit','status','set','Content-Range','reject','save','then','destroy','get','Tags','UserProfileResource','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','show','params','keys','length','catch','create','body','user','role','UserProfileSection'];(function(_0x2c7900,_0x44f3b6){var _0x35c02f=function(_0x343749){while(--_0x343749){_0x2c7900['push'](_0x2c7900['shift']());}};_0x35c02f(++_0x44f3b6);}(_0x89c3,0xff));var _0x389c=function(_0x985314,_0x9068a7){_0x985314=_0x985314-0x0;var _0x4575f5=_0x89c3[_0x985314];return _0x4575f5;};'use strict';var emlformat=require(_0x389c('0x0'));var rimraf=require(_0x389c('0x1'));var zipdir=require(_0x389c('0x2'));var jsonpatch=require(_0x389c('0x3'));var rp=require(_0x389c('0x4'));var moment=require(_0x389c('0x5'));var BPromise=require(_0x389c('0x6'));var Mustache=require(_0x389c('0x7'));var util=require('util');var path=require(_0x389c('0x8'));var sox=require('sox');var csv=require(_0x389c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x389c('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x389c('0xb'));var deskjs=require(_0x389c('0xc'));var toCsv=require(_0x389c('0x9'));var querystring=require(_0x389c('0xd'));var Papa=require(_0x389c('0xe'));var Redis=require(_0x389c('0xf'));var authService=require(_0x389c('0x10'));var qs=require(_0x389c('0x11'));var as=require(_0x389c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x389c('0x13'))(_0x389c('0x14'));var utils=require(_0x389c('0x15'));var config=require(_0x389c('0x16'));var licenseUtil=require(_0x389c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d7aa7,_0x2a2d7d){_0x2a2d7d=_0x2a2d7d||0xcc;return function(_0x1de33a){if(_0x1de33a){return _0x5d7aa7[_0x389c('0x18')](_0x2a2d7d);}return _0x5d7aa7['status'](_0x2a2d7d)[_0x389c('0x19')]();};}function respondWithResult(_0x4bde6d,_0x36e855){_0x36e855=_0x36e855||0xc8;return function(_0x1b1618){if(_0x1b1618){return _0x4bde6d['status'](_0x36e855)[_0x389c('0x1a')](_0x1b1618);}};}function respondWithFilteredResult(_0x205e4f,_0x36c118){return function(_0x5c0756){if(_0x5c0756){var _0x4238e6=typeof _0x36c118[_0x389c('0x1b')]===_0x389c('0x1c')&&typeof _0x36c118[_0x389c('0x1d')]===_0x389c('0x1c');var _0x555481=_0x5c0756['count'];var _0x5a2b10=_0x4238e6?0x0:_0x36c118[_0x389c('0x1b')];var _0x2e23d2=_0x4238e6?_0x5c0756['count']:_0x36c118[_0x389c('0x1b')]+_0x36c118[_0x389c('0x1d')];var _0x421f5f;if(_0x2e23d2>=_0x555481){_0x2e23d2=_0x555481;_0x421f5f=0xc8;}else{_0x421f5f=0xce;}_0x205e4f[_0x389c('0x1e')](_0x421f5f);return _0x205e4f[_0x389c('0x1f')](_0x389c('0x20'),_0x5a2b10+'-'+_0x2e23d2+'/'+_0x555481)[_0x389c('0x1a')](_0x5c0756);}return null;};}function patchUpdates(_0x3110c1){return function(_0x239de1){try{jsonpatch['apply'](_0x239de1,_0x3110c1,!![]);}catch(_0x3d5fd1){return BPromise[_0x389c('0x21')](_0x3d5fd1);}return _0x239de1[_0x389c('0x22')]();};}function saveUpdates(_0xef720,_0x34bd04){return function(_0x2e1012){if(_0x2e1012){return _0x2e1012['update'](_0xef720)[_0x389c('0x23')](function(_0x152ba7){return _0x152ba7;});}return null;};}function removeEntity(_0xfe443c,_0x2dcd88){return function(_0x54869a){if(_0x54869a){return _0x54869a[_0x389c('0x24')]()[_0x389c('0x23')](function(){var _0x4e09c0=_0x54869a[_0x389c('0x25')]({'plain':!![]});var _0x5d1c4b=_0x389c('0x26');return db[_0x389c('0x27')][_0x389c('0x24')]({'where':{'type':_0x5d1c4b,'resourceId':_0x4e09c0['id']}})[_0x389c('0x23')](function(){return _0x54869a;});})[_0x389c('0x23')](function(){_0xfe443c['status'](0xcc)[_0x389c('0x19')]();});}};}function handleEntityNotFound(_0xcc1b60,_0x29e9f8){return function(_0x23382f){if(!_0x23382f){_0xcc1b60[_0x389c('0x18')](0x194);}return _0x23382f;};}function handleError(_0x48c79e,_0x3846a3){_0x3846a3=_0x3846a3||0x1f4;return function(_0x4e30da){logger[_0x389c('0x28')](_0x4e30da[_0x389c('0x29')]);if(_0x4e30da[_0x389c('0x2a')]){delete _0x4e30da[_0x389c('0x2a')];}_0x48c79e['status'](_0x3846a3)[_0x389c('0x2b')](_0x4e30da);};}exports[_0x389c('0x2c')]=function(_0x594f6a,_0x6f0166){var _0x3c13dd={},_0x3e13a2={},_0xa1cf2b={'count':0x0,'rows':[]};var _0x174c89=_[_0x389c('0x2d')](db[_0x389c('0x2e')][_0x389c('0x2f')],function(_0x22220d){return{'name':_0x22220d[_0x389c('0x30')],'type':_0x22220d[_0x389c('0x31')][_0x389c('0x32')]};});_0x3e13a2['model']=_['map'](_0x174c89,'name');_0x3e13a2[_0x389c('0x33')]=_['keys'](_0x594f6a[_0x389c('0x33')]);_0x3e13a2['filters']=_[_0x389c('0x34')](_0x3e13a2[_0x389c('0x35')],_0x3e13a2[_0x389c('0x33')]);_0x3c13dd[_0x389c('0x36')]=_['intersection'](_0x3e13a2[_0x389c('0x35')],qs[_0x389c('0x37')](_0x594f6a[_0x389c('0x33')][_0x389c('0x37')]));_0x3c13dd[_0x389c('0x36')]=_0x3c13dd[_0x389c('0x36')]['length']?_0x3c13dd['attributes']:_0x3e13a2[_0x389c('0x35')];if(!_0x594f6a[_0x389c('0x33')][_0x389c('0x38')](_0x389c('0x39'))){_0x3c13dd[_0x389c('0x1d')]=qs[_0x389c('0x1d')](_0x594f6a[_0x389c('0x33')][_0x389c('0x1d')]);_0x3c13dd[_0x389c('0x1b')]=qs[_0x389c('0x1b')](_0x594f6a[_0x389c('0x33')][_0x389c('0x1b')]);}_0x3c13dd[_0x389c('0x3a')]=qs['sort'](_0x594f6a['query'][_0x389c('0x3b')]);_0x3c13dd[_0x389c('0x3c')]=qs[_0x389c('0x3d')](_[_0x389c('0x3e')](_0x594f6a[_0x389c('0x33')],_0x3e13a2[_0x389c('0x3d')]),_0x174c89);if(_0x594f6a['query']['filter']){_0x3c13dd[_0x389c('0x3c')]=_[_0x389c('0x3f')](_0x3c13dd[_0x389c('0x3c')],{'$or':_['map'](_0x174c89,function(_0x39dcd6){if(_0x39dcd6[_0x389c('0x31')]!==_0x389c('0x40')){var _0x3f85de={};_0x3f85de[_0x39dcd6[_0x389c('0x2a')]]={'$like':'%'+_0x594f6a[_0x389c('0x33')]['filter']+'%'};return _0x3f85de;}})});}_0x3c13dd=_[_0x389c('0x3f')]({},_0x3c13dd,_0x594f6a[_0x389c('0x41')]);var _0x3bb25e={'where':_0x3c13dd[_0x389c('0x3c')]};return db['Tag'][_0x389c('0x42')](_0x3bb25e)['then'](function(_0x2dbce5){_0xa1cf2b[_0x389c('0x42')]=_0x2dbce5;if(_0x594f6a[_0x389c('0x33')][_0x389c('0x43')]){_0x3c13dd[_0x389c('0x44')]=[{'all':!![]}];}return db[_0x389c('0x2e')][_0x389c('0x45')](_0x3c13dd);})[_0x389c('0x23')](function(_0x2fc644){_0xa1cf2b[_0x389c('0x46')]=_0x2fc644;return _0xa1cf2b;})[_0x389c('0x23')](respondWithFilteredResult(_0x6f0166,_0x3c13dd))['catch'](handleError(_0x6f0166,null));};exports[_0x389c('0x47')]=function(_0x415534,_0x515905){var _0x38995f={'raw':!![],'where':{'id':_0x415534[_0x389c('0x48')]['id']}},_0x59df4f={};_0x59df4f[_0x389c('0x35')]=_[_0x389c('0x49')](db[_0x389c('0x2e')][_0x389c('0x2f')]);_0x59df4f[_0x389c('0x33')]=_[_0x389c('0x49')](_0x415534[_0x389c('0x33')]);_0x59df4f[_0x389c('0x3d')]=_[_0x389c('0x34')](_0x59df4f[_0x389c('0x35')],_0x59df4f[_0x389c('0x33')]);_0x38995f[_0x389c('0x36')]=_['intersection'](_0x59df4f['model'],qs[_0x389c('0x37')](_0x415534[_0x389c('0x33')][_0x389c('0x37')]));_0x38995f['attributes']=_0x38995f[_0x389c('0x36')][_0x389c('0x4a')]?_0x38995f[_0x389c('0x36')]:_0x59df4f[_0x389c('0x35')];if(_0x415534['query']['includeAll']){_0x38995f['include']=[{'all':!![]}];}_0x38995f=_['merge']({},_0x38995f,_0x415534[_0x389c('0x41')]);return db['Tag']['find'](_0x38995f)[_0x389c('0x23')](handleEntityNotFound(_0x515905,null))[_0x389c('0x23')](respondWithResult(_0x515905,null))[_0x389c('0x4b')](handleError(_0x515905,null));};exports[_0x389c('0x4c')]=function(_0x153db2,_0xd37a48){return db[_0x389c('0x2e')]['create'](_0x153db2[_0x389c('0x4d')],{})[_0x389c('0x23')](function(_0x28e449){var _0x10581a=_0x153db2[_0x389c('0x4e')][_0x389c('0x25')]({'plain':!![]});if(!_0x10581a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x10581a[_0x389c('0x4f')]==='user'){var _0xf56fb2=_0x28e449['get']({'plain':!![]});var _0x26936d=_0x389c('0x26');return db[_0x389c('0x50')][_0x389c('0x51')]({'where':{'name':_0x26936d,'userProfileId':_0x10581a[_0x389c('0x52')]},'raw':!![]})[_0x389c('0x23')](function(_0x5ad065){if(_0x5ad065&&_0x5ad065[_0x389c('0x53')]===0x0){return db[_0x389c('0x27')]['create']({'name':_0xf56fb2[_0x389c('0x2a')],'resourceId':_0xf56fb2['id'],'type':_0x5ad065[_0x389c('0x2a')],'sectionId':_0x5ad065['id']},{})[_0x389c('0x23')](function(){return _0x28e449;});}else{return _0x28e449;}})['catch'](function(_0x393daa){logger[_0x389c('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x393daa);throw _0x393daa;});}return _0x28e449;})[_0x389c('0x23')](respondWithResult(_0xd37a48,0xc9))[_0x389c('0x4b')](handleError(_0xd37a48,null));};exports['update']=function(_0x165d81,_0x6bd59d){if(_0x165d81[_0x389c('0x4d')]['id']){delete _0x165d81[_0x389c('0x4d')]['id'];}return db[_0x389c('0x2e')][_0x389c('0x51')]({'where':{'id':_0x165d81[_0x389c('0x48')]['id']}})[_0x389c('0x23')](handleEntityNotFound(_0x6bd59d,null))[_0x389c('0x23')](saveUpdates(_0x165d81[_0x389c('0x4d')],null))['then'](respondWithResult(_0x6bd59d,null))[_0x389c('0x4b')](handleError(_0x6bd59d,null));};exports[_0x389c('0x24')]=function(_0x3c2469,_0x5edc1c){return db[_0x389c('0x2e')]['find']({'where':{'id':_0x3c2469['params']['id']}})[_0x389c('0x23')](handleEntityNotFound(_0x5edc1c,null))[_0x389c('0x23')](removeEntity(_0x5edc1c,null))[_0x389c('0x4b')](handleError(_0x5edc1c,null));};
\ No newline at end of file
+var _0x765e=['end','status','undefined','limit','count','offset','set','json','apply','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','Tag','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','findAll','show','params','keys','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','find','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x765e,0x131));var _0xe765=function(_0x1ad79f,_0x4506b1){_0x1ad79f=_0x1ad79f-0x0;var _0x498daa=_0x765e[_0x1ad79f];return _0x498daa;};'use strict';var emlformat=require(_0xe765('0x0'));var rimraf=require(_0xe765('0x1'));var zipdir=require(_0xe765('0x2'));var jsonpatch=require(_0xe765('0x3'));var rp=require(_0xe765('0x4'));var moment=require(_0xe765('0x5'));var BPromise=require(_0xe765('0x6'));var Mustache=require(_0xe765('0x7'));var util=require(_0xe765('0x8'));var path=require(_0xe765('0x9'));var sox=require(_0xe765('0xa'));var csv=require(_0xe765('0xb'));var ejs=require(_0xe765('0xc'));var fs=require('fs');var fs_extra=require(_0xe765('0xd'));var _=require(_0xe765('0xe'));var squel=require('squel');var crypto=require(_0xe765('0xf'));var jsforce=require(_0xe765('0x10'));var deskjs=require(_0xe765('0x11'));var toCsv=require(_0xe765('0xb'));var querystring=require(_0xe765('0x12'));var Papa=require(_0xe765('0x13'));var Redis=require(_0xe765('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xe765('0x15'));var as=require(_0xe765('0x16'));var hardwareService=require(_0xe765('0x17'));var logger=require('../../config/logger')(_0xe765('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe765('0x19'))['db'];function respondWithStatusCode(_0x18177f,_0x9411a0){_0x9411a0=_0x9411a0||0xcc;return function(_0x27456b){if(_0x27456b){return _0x18177f[_0xe765('0x1a')](_0x9411a0);}return _0x18177f['status'](_0x9411a0)[_0xe765('0x1b')]();};}function respondWithResult(_0x3a26d8,_0x395312){_0x395312=_0x395312||0xc8;return function(_0x58dc37){if(_0x58dc37){return _0x3a26d8[_0xe765('0x1c')](_0x395312)['json'](_0x58dc37);}};}function respondWithFilteredResult(_0x50e2ab,_0x2f673b){return function(_0x1b1cfe){if(_0x1b1cfe){var _0x3c887b=typeof _0x2f673b['offset']===_0xe765('0x1d')&&typeof _0x2f673b[_0xe765('0x1e')]===_0xe765('0x1d');var _0x1db3ca=_0x1b1cfe[_0xe765('0x1f')];var _0xf93371=_0x3c887b?0x0:_0x2f673b[_0xe765('0x20')];var _0x2a95a9=_0x3c887b?_0x1b1cfe[_0xe765('0x1f')]:_0x2f673b['offset']+_0x2f673b[_0xe765('0x1e')];var _0x56905c;if(_0x2a95a9>=_0x1db3ca){_0x2a95a9=_0x1db3ca;_0x56905c=0xc8;}else{_0x56905c=0xce;}_0x50e2ab[_0xe765('0x1c')](_0x56905c);return _0x50e2ab[_0xe765('0x21')]('Content-Range',_0xf93371+'-'+_0x2a95a9+'/'+_0x1db3ca)[_0xe765('0x22')](_0x1b1cfe);}return null;};}function patchUpdates(_0x59118f){return function(_0x1c73c8){try{jsonpatch[_0xe765('0x23')](_0x1c73c8,_0x59118f,!![]);}catch(_0x1efb96){return BPromise['reject'](_0x1efb96);}return _0x1c73c8['save']();};}function saveUpdates(_0x4b789b,_0x1c6de4){return function(_0x2a4427){if(_0x2a4427){return _0x2a4427[_0xe765('0x24')](_0x4b789b)[_0xe765('0x25')](function(_0x54b59c){return _0x54b59c;});}return null;};}function removeEntity(_0x50cfcb,_0x18ba77){return function(_0x2e2a34){if(_0x2e2a34){return _0x2e2a34[_0xe765('0x26')]()[_0xe765('0x25')](function(){var _0xad34a7=_0x2e2a34['get']({'plain':!![]});var _0x1aacbc='Tags';return db[_0xe765('0x27')][_0xe765('0x26')]({'where':{'type':_0x1aacbc,'resourceId':_0xad34a7['id']}})[_0xe765('0x25')](function(){return _0x2e2a34;});})[_0xe765('0x25')](function(){_0x50cfcb[_0xe765('0x1c')](0xcc)[_0xe765('0x1b')]();});}};}function handleEntityNotFound(_0x471d57,_0x530838){return function(_0x55086d){if(!_0x55086d){_0x471d57[_0xe765('0x1a')](0x194);}return _0x55086d;};}function handleError(_0x4bc5c1,_0xf19724){_0xf19724=_0xf19724||0x1f4;return function(_0x3f7493){logger[_0xe765('0x28')](_0x3f7493[_0xe765('0x29')]);if(_0x3f7493[_0xe765('0x2a')]){delete _0x3f7493['name'];}_0x4bc5c1[_0xe765('0x1c')](_0xf19724)[_0xe765('0x2b')](_0x3f7493);};}exports[_0xe765('0x2c')]=function(_0x5b4a3f,_0x5947c1){var _0x315322={},_0x47d7e7={},_0x477eef={'count':0x0,'rows':[]};var _0xe81d01=_[_0xe765('0x2d')](db[_0xe765('0x2e')][_0xe765('0x2f')],function(_0x56127d){return{'name':_0x56127d['fieldName'],'type':_0x56127d[_0xe765('0x30')][_0xe765('0x31')]};});_0x47d7e7[_0xe765('0x32')]=_[_0xe765('0x2d')](_0xe81d01,_0xe765('0x2a'));_0x47d7e7['query']=_['keys'](_0x5b4a3f[_0xe765('0x33')]);_0x47d7e7['filters']=_[_0xe765('0x34')](_0x47d7e7[_0xe765('0x32')],_0x47d7e7[_0xe765('0x33')]);_0x315322[_0xe765('0x35')]=_[_0xe765('0x34')](_0x47d7e7[_0xe765('0x32')],qs[_0xe765('0x36')](_0x5b4a3f['query']['fields']));_0x315322['attributes']=_0x315322[_0xe765('0x35')][_0xe765('0x37')]?_0x315322[_0xe765('0x35')]:_0x47d7e7[_0xe765('0x32')];if(!_0x5b4a3f['query'][_0xe765('0x38')](_0xe765('0x39'))){_0x315322[_0xe765('0x1e')]=qs[_0xe765('0x1e')](_0x5b4a3f['query'][_0xe765('0x1e')]);_0x315322['offset']=qs[_0xe765('0x20')](_0x5b4a3f[_0xe765('0x33')][_0xe765('0x20')]);}_0x315322[_0xe765('0x3a')]=qs[_0xe765('0x3b')](_0x5b4a3f[_0xe765('0x33')][_0xe765('0x3b')]);_0x315322[_0xe765('0x3c')]=qs[_0xe765('0x3d')](_[_0xe765('0x3e')](_0x5b4a3f['query'],_0x47d7e7[_0xe765('0x3d')]),_0xe81d01);if(_0x5b4a3f[_0xe765('0x33')][_0xe765('0x3f')]){_0x315322['where']=_['merge'](_0x315322['where'],{'$or':_[_0xe765('0x2d')](_0xe81d01,function(_0x5898b3){if(_0x5898b3[_0xe765('0x30')]!==_0xe765('0x40')){var _0x3be7d7={};_0x3be7d7[_0x5898b3[_0xe765('0x2a')]]={'$like':'%'+_0x5b4a3f['query'][_0xe765('0x3f')]+'%'};return _0x3be7d7;}})});}_0x315322=_[_0xe765('0x41')]({},_0x315322,_0x5b4a3f[_0xe765('0x42')]);var _0x4199ea={'where':_0x315322[_0xe765('0x3c')]};return db[_0xe765('0x2e')][_0xe765('0x1f')](_0x4199ea)[_0xe765('0x25')](function(_0xb92246){_0x477eef[_0xe765('0x1f')]=_0xb92246;if(_0x5b4a3f['query'][_0xe765('0x43')]){_0x315322['include']=[{'all':!![]}];}return db[_0xe765('0x2e')][_0xe765('0x44')](_0x315322);})['then'](function(_0x3977e5){_0x477eef['rows']=_0x3977e5;return _0x477eef;})['then'](respondWithFilteredResult(_0x5947c1,_0x315322))['catch'](handleError(_0x5947c1,null));};exports[_0xe765('0x45')]=function(_0xb77b5e,_0x1ded88){var _0x54833a={'raw':!![],'where':{'id':_0xb77b5e[_0xe765('0x46')]['id']}},_0x2de9de={};_0x2de9de[_0xe765('0x32')]=_[_0xe765('0x47')](db[_0xe765('0x2e')][_0xe765('0x2f')]);_0x2de9de[_0xe765('0x33')]=_[_0xe765('0x47')](_0xb77b5e[_0xe765('0x33')]);_0x2de9de['filters']=_[_0xe765('0x34')](_0x2de9de['model'],_0x2de9de['query']);_0x54833a[_0xe765('0x35')]=_['intersection'](_0x2de9de[_0xe765('0x32')],qs[_0xe765('0x36')](_0xb77b5e[_0xe765('0x33')]['fields']));_0x54833a[_0xe765('0x35')]=_0x54833a['attributes'][_0xe765('0x37')]?_0x54833a[_0xe765('0x35')]:_0x2de9de[_0xe765('0x32')];if(_0xb77b5e['query'][_0xe765('0x43')]){_0x54833a[_0xe765('0x48')]=[{'all':!![]}];}_0x54833a=_[_0xe765('0x41')]({},_0x54833a,_0xb77b5e[_0xe765('0x42')]);return db['Tag']['find'](_0x54833a)['then'](handleEntityNotFound(_0x1ded88,null))[_0xe765('0x25')](respondWithResult(_0x1ded88,null))[_0xe765('0x49')](handleError(_0x1ded88,null));};exports[_0xe765('0x4a')]=function(_0x58310d,_0x14834c){return db['Tag'][_0xe765('0x4a')](_0x58310d[_0xe765('0x4b')],{})[_0xe765('0x25')](function(_0x29e661){var _0x7f132f=_0x58310d[_0xe765('0x4c')]['get']({'plain':!![]});if(!_0x7f132f)throw new Error(_0xe765('0x4d'));if(_0x7f132f[_0xe765('0x4e')]===_0xe765('0x4c')){var _0x1214a8=_0x29e661[_0xe765('0x4f')]({'plain':!![]});var _0x182957='Tags';return db['UserProfileSection'][_0xe765('0x50')]({'where':{'name':_0x182957,'userProfileId':_0x7f132f[_0xe765('0x51')]},'raw':!![]})[_0xe765('0x25')](function(_0x5199b2){if(_0x5199b2&&_0x5199b2[_0xe765('0x52')]===0x0){return db[_0xe765('0x27')][_0xe765('0x4a')]({'name':_0x1214a8[_0xe765('0x2a')],'resourceId':_0x1214a8['id'],'type':_0x5199b2[_0xe765('0x2a')],'sectionId':_0x5199b2['id']},{})[_0xe765('0x25')](function(){return _0x29e661;});}else{return _0x29e661;}})[_0xe765('0x49')](function(_0x292177){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x292177);throw _0x292177;});}return _0x29e661;})[_0xe765('0x25')](respondWithResult(_0x14834c,0xc9))['catch'](handleError(_0x14834c,null));};exports[_0xe765('0x24')]=function(_0x125b04,_0x8bcddb){if(_0x125b04['body']['id']){delete _0x125b04[_0xe765('0x4b')]['id'];}return db[_0xe765('0x2e')]['find']({'where':{'id':_0x125b04[_0xe765('0x46')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x8bcddb,null))[_0xe765('0x25')](saveUpdates(_0x125b04[_0xe765('0x4b')],null))[_0xe765('0x25')](respondWithResult(_0x8bcddb,null))[_0xe765('0x49')](handleError(_0x8bcddb,null));};exports[_0xe765('0x26')]=function(_0x361e36,_0x45be53){return db[_0xe765('0x2e')][_0xe765('0x50')]({'where':{'id':_0x361e36[_0xe765('0x46')]['id']}})[_0xe765('0x25')](handleEntityNotFound(_0x45be53,null))['then'](removeEntity(_0x45be53,null))[_0xe765('0x49')](handleError(_0x45be53,null));};
\ No newline at end of file
index 1adaba8..f3699b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1901=['./tag.attributes','exports','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x444d2f,_0x2927b9){var _0x18ae46=function(_0x257e84){while(--_0x257e84){_0x444d2f['push'](_0x444d2f['shift']());}};_0x18ae46(++_0x2927b9);}(_0x1901,0x1af));var _0x1190=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0x1901[_0x2aa0e7];return _0x1472c0;};'use strict';var _=require(_0x1190('0x0'));var util=require(_0x1190('0x1'));var logger=require(_0x1190('0x2'))('api');var moment=require(_0x1190('0x3'));var BPromise=require(_0x1190('0x4'));var rp=require(_0x1190('0x5'));var fs=require('fs');var path=require(_0x1190('0x6'));var rimraf=require(_0x1190('0x7'));var config=require(_0x1190('0x8'));var attributes=require(_0x1190('0x9'));module[_0x1190('0xa')]=function(_0x23e690,_0x149d90){return _0x23e690['define']('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1405=['./tag.attributes','exports','define','lodash','util','api','moment','request-promise','rimraf'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x1405,0x1e9));var _0x5140=function(_0x4264c0,_0x42a24e){_0x4264c0=_0x4264c0-0x0;var _0x5ebfe1=_0x1405[_0x4264c0];return _0x5ebfe1;};'use strict';var _=require(_0x5140('0x0'));var util=require(_0x5140('0x1'));var logger=require('../../config/logger')(_0x5140('0x2'));var moment=require(_0x5140('0x3'));var BPromise=require('bluebird');var rp=require(_0x5140('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5140('0x5'));var config=require('../../config/environment');var attributes=require(_0x5140('0x6'));module[_0x5140('0x7')]=function(_0x21d9fa,_0x2ce1a1){return _0x21d9fa[_0x5140('0x8')]('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 375b218..e43494a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['client','http','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','Tag,\x20%s,\x20%s','message','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x254e12,_0x57506d){var _0x4de3bd=function(_0x3d8498){while(--_0x3d8498){_0x254e12['push'](_0x254e12['shift']());}};_0x4de3bd(++_0x57506d);}(_0x919e,0x1d7));var _0xe919=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x919e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe919('0x0'));var util=require(_0xe919('0x1'));var moment=require(_0xe919('0x2'));var BPromise=require('bluebird');var rs=require(_0xe919('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe919('0x4'));var logger=require(_0xe919('0x5'))(_0xe919('0x6'));var config=require(_0xe919('0x7'));var jayson=require(_0xe919('0x8'));var client=jayson[_0xe919('0x9')][_0xe919('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x493b47,_0x7c1fa4,_0x2ceb41){return new BPromise(function(_0x57c3fe,_0x44d418){return client['request'](_0x493b47,_0x2ceb41)[_0xe919('0xb')](function(_0x22ea65){logger[_0xe919('0xc')]('Tag,\x20%s,\x20%s',_0x7c1fa4,_0xe919('0xd'));logger[_0xe919('0xe')](_0xe919('0xf'),_0x7c1fa4,'request\x20sent',JSON[_0xe919('0x10')](_0x22ea65));if(_0x22ea65['error']){if(_0x22ea65['error']['code']===0x1f4){logger[_0xe919('0x11')](_0xe919('0x12'),_0x7c1fa4,_0x22ea65[_0xe919('0x11')]['message']);return _0x44d418(_0x22ea65['error'][_0xe919('0x13')]);}logger[_0xe919('0x11')]('Tag,\x20%s,\x20%s',_0x7c1fa4,_0x22ea65[_0xe919('0x11')][_0xe919('0x13')]);return _0x57c3fe(_0x22ea65[_0xe919('0x11')][_0xe919('0x13')]);}else{logger[_0xe919('0xc')](_0xe919('0x12'),_0x7c1fa4,_0xe919('0xd'));_0x57c3fe(_0x22ea65['result'][_0xe919('0x13')]);}})['catch'](function(_0x5ba7ad){logger[_0xe919('0x11')](_0xe919('0x12'),_0x7c1fa4,_0x5ba7ad);_0x44d418(_0x5ba7ad);});});}
\ No newline at end of file
+var _0x99c9=['code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4e7896,_0x52d5de){var _0x5aef0f=function(_0x101e4c){while(--_0x101e4c){_0x4e7896['push'](_0x4e7896['shift']());}};_0x5aef0f(++_0x52d5de);}(_0x99c9,0x13c));var _0x999c=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x99c9[_0x3070dc];return _0x431489;};'use strict';var _=require(_0x999c('0x0'));var util=require(_0x999c('0x1'));var moment=require(_0x999c('0x2'));var BPromise=require(_0x999c('0x3'));var rs=require(_0x999c('0x4'));var fs=require('fs');var Redis=require(_0x999c('0x5'));var db=require(_0x999c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x999c('0x7'))(_0x999c('0x8'));var config=require(_0x999c('0x9'));var jayson=require(_0x999c('0xa'));var client=jayson[_0x999c('0xb')][_0x999c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34f100,_0x651b7e,_0xc8a6b5){return new BPromise(function(_0xb88ec1,_0x329252){return client[_0x999c('0xd')](_0x34f100,_0xc8a6b5)[_0x999c('0xe')](function(_0x395321){logger['info'](_0x999c('0xf'),_0x651b7e,_0x999c('0x10'));logger['debug'](_0x999c('0x11'),_0x651b7e,_0x999c('0x10'),JSON[_0x999c('0x12')](_0x395321));if(_0x395321[_0x999c('0x13')]){if(_0x395321[_0x999c('0x13')][_0x999c('0x14')]===0x1f4){logger[_0x999c('0x13')](_0x999c('0xf'),_0x651b7e,_0x395321[_0x999c('0x13')][_0x999c('0x15')]);return _0x329252(_0x395321[_0x999c('0x13')][_0x999c('0x15')]);}logger['error'](_0x999c('0xf'),_0x651b7e,_0x395321[_0x999c('0x13')]['message']);return _0xb88ec1(_0x395321['error']['message']);}else{logger[_0x999c('0x16')](_0x999c('0xf'),_0x651b7e,_0x999c('0x10'));_0xb88ec1(_0x395321[_0x999c('0x17')][_0x999c('0x15')]);}})['catch'](function(_0x226437){logger[_0x999c('0x13')](_0x999c('0xf'),_0x651b7e,_0x226437);_0x329252(_0x226437);});});}
\ No newline at end of file
index 78386a7..7377a83 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(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/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 a54f2d8..74c3cb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x1acef1,_0x3810cc){var _0x55b7bf=function(_0x550408){while(--_0x550408){_0x1acef1['push'](_0x1acef1['shift']());}};_0x55b7bf(++_0x3810cc);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0xf5ae03,_0x2dcbd3){var _0x40b208=function(_0x5ee5a6){while(--_0x5ee5a6){_0xf5ae03['push'](_0xf5ae03['shift']());}};_0x40b208(++_0x2dcbd3);}(_0x757a,0xde));var _0xa757=function(_0x564661,_0x4cac87){_0x564661=_0x564661-0x0;var _0x829209=_0x757a[_0x564661];return _0x829209;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d501842..ef3ab71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4be=['upsert','isNil','format','SIP/%s','all','UserVoicePrefix','spread','Mail','Whatsapp','removeAgents','Queue:remove','TeamVoicePrefix','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','./team.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','catch','params','keys','include','find','create','body','user','role','get','Teams','UserProfileResource','update','destroy','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','sequelize','QueryTypes','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','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','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','add','ids','removeQueues','remove','addAgents','isArray','Voice','Chat','Sms','Fax','Openchannel','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','online','voicePause','interface','UserVoiceQueueRt'];(function(_0x4cb429,_0x272408){var _0xbfd589=function(_0x4ec3e6){while(--_0x4ec3e6){_0x4cb429['push'](_0x4cb429['shift']());}};_0xbfd589(++_0x272408);}(_0xc4be,0x1e4));var _0xec4b=function(_0x111031,_0x51053c){_0x111031=_0x111031-0x0;var _0x54b1fc=_0xc4be[_0x111031];return _0x54b1fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec4b('0x0'));var zipdir=require(_0xec4b('0x1'));var jsonpatch=require(_0xec4b('0x2'));var rp=require('request-promise');var moment=require(_0xec4b('0x3'));var BPromise=require(_0xec4b('0x4'));var Mustache=require('mustache');var util=require(_0xec4b('0x5'));var path=require(_0xec4b('0x6'));var sox=require(_0xec4b('0x7'));var csv=require(_0xec4b('0x8'));var ejs=require(_0xec4b('0x9'));var fs=require('fs');var fs_extra=require(_0xec4b('0xa'));var _=require(_0xec4b('0xb'));var squel=require(_0xec4b('0xc'));var crypto=require(_0xec4b('0xd'));var jsforce=require(_0xec4b('0xe'));var deskjs=require(_0xec4b('0xf'));var toCsv=require(_0xec4b('0x8'));var querystring=require(_0xec4b('0x10'));var Papa=require(_0xec4b('0x11'));var Redis=require('ioredis');var authService=require(_0xec4b('0x12'));var qs=require(_0xec4b('0x13'));var as=require(_0xec4b('0x14'));var hardwareService=require(_0xec4b('0x15'));var logger=require('../../config/logger')(_0xec4b('0x16'));var utils=require('../../config/utils');var config=require(_0xec4b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xec4b('0x18'))['db'];config[_0xec4b('0x19')]=_[_0xec4b('0x1a')](config[_0xec4b('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xec4b('0x19')]));require(_0xec4b('0x1b'))[_0xec4b('0x1c')](socket);function respondWithStatusCode(_0x25fe18,_0x3980f4){_0x3980f4=_0x3980f4||0xcc;return function(_0x32119f){if(_0x32119f){return _0x25fe18[_0xec4b('0x1d')](_0x3980f4);}return _0x25fe18['status'](_0x3980f4)[_0xec4b('0x1e')]();};}function respondWithResult(_0x569d7c,_0x4f028e){_0x4f028e=_0x4f028e||0xc8;return function(_0x3ea04b){if(_0x3ea04b){return _0x569d7c[_0xec4b('0x1f')](_0x4f028e)['json'](_0x3ea04b);}};}function respondWithFilteredResult(_0x588344,_0x441b89){return function(_0x1462de){if(_0x1462de){var _0x4c3963=typeof _0x441b89[_0xec4b('0x20')]===_0xec4b('0x21')&&typeof _0x441b89[_0xec4b('0x22')]===_0xec4b('0x21');var _0x42a831=_0x1462de[_0xec4b('0x23')];var _0xb39501=_0x4c3963?0x0:_0x441b89[_0xec4b('0x20')];var _0x3d89c4=_0x4c3963?_0x1462de[_0xec4b('0x23')]:_0x441b89[_0xec4b('0x20')]+_0x441b89[_0xec4b('0x22')];var _0x4d2660;if(_0x3d89c4>=_0x42a831){_0x3d89c4=_0x42a831;_0x4d2660=0xc8;}else{_0x4d2660=0xce;}_0x588344[_0xec4b('0x1f')](_0x4d2660);return _0x588344[_0xec4b('0x24')](_0xec4b('0x25'),_0xb39501+'-'+_0x3d89c4+'/'+_0x42a831)[_0xec4b('0x26')](_0x1462de);}return null;};}function patchUpdates(_0x552ef0){return function(_0x94892a){try{jsonpatch[_0xec4b('0x27')](_0x94892a,_0x552ef0,!![]);}catch(_0x3f1eff){return BPromise[_0xec4b('0x28')](_0x3f1eff);}return _0x94892a['save']();};}function saveUpdates(_0xa496c8,_0x35b29e){return function(_0x58959a){if(_0x58959a){return _0x58959a['update'](_0xa496c8)[_0xec4b('0x29')](function(_0x5b7aba){return _0x5b7aba;});}return null;};}function handleEntityNotFound(_0x143dbd,_0x5e359c){return function(_0x372051){if(!_0x372051){_0x143dbd[_0xec4b('0x1d')](0x194);}return _0x372051;};}function handleError(_0x575857,_0x13da77){_0x13da77=_0x13da77||0x1f4;return function(_0xe578ce){logger[_0xec4b('0x2a')](_0xe578ce[_0xec4b('0x2b')]);if(_0xe578ce[_0xec4b('0x2c')]){delete _0xe578ce[_0xec4b('0x2c')];}_0x575857[_0xec4b('0x1f')](_0x13da77)[_0xec4b('0x2d')](_0xe578ce);};}exports[_0xec4b('0x2e')]=function(_0x238e29,_0x3d7a55){var _0x2c5049={},_0x4ac633={},_0x42b522={'count':0x0,'rows':[]};var _0x4f20d9=_[_0xec4b('0x2f')](db[_0xec4b('0x30')][_0xec4b('0x31')],function(_0x2ce44d){return{'name':_0x2ce44d[_0xec4b('0x32')],'type':_0x2ce44d[_0xec4b('0x33')][_0xec4b('0x34')]};});_0x4ac633['model']=_[_0xec4b('0x2f')](_0x4f20d9,'name');_0x4ac633[_0xec4b('0x35')]=_['keys'](_0x238e29[_0xec4b('0x35')]);_0x4ac633['filters']=_[_0xec4b('0x36')](_0x4ac633['model'],_0x4ac633[_0xec4b('0x35')]);_0x2c5049[_0xec4b('0x37')]=_['intersection'](_0x4ac633[_0xec4b('0x38')],qs[_0xec4b('0x39')](_0x238e29[_0xec4b('0x35')][_0xec4b('0x39')]));_0x2c5049[_0xec4b('0x37')]=_0x2c5049['attributes'][_0xec4b('0x3a')]?_0x2c5049[_0xec4b('0x37')]:_0x4ac633[_0xec4b('0x38')];if(!_0x238e29[_0xec4b('0x35')][_0xec4b('0x3b')](_0xec4b('0x3c'))){_0x2c5049['limit']=qs[_0xec4b('0x22')](_0x238e29[_0xec4b('0x35')]['limit']);_0x2c5049[_0xec4b('0x20')]=qs[_0xec4b('0x20')](_0x238e29[_0xec4b('0x35')][_0xec4b('0x20')]);}_0x2c5049[_0xec4b('0x3d')]=qs['sort'](_0x238e29[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x2c5049[_0xec4b('0x3f')]=qs['filters'](_[_0xec4b('0x40')](_0x238e29[_0xec4b('0x35')],_0x4ac633[_0xec4b('0x41')]),_0x4f20d9);if(_0x238e29[_0xec4b('0x35')][_0xec4b('0x42')]){_0x2c5049[_0xec4b('0x3f')]=_[_0xec4b('0x43')](_0x2c5049['where'],{'$or':_[_0xec4b('0x2f')](_0x4f20d9,function(_0x28b25c){if(_0x28b25c[_0xec4b('0x33')]!==_0xec4b('0x44')){var _0x2b085c={};_0x2b085c[_0x28b25c[_0xec4b('0x2c')]]={'$like':'%'+_0x238e29[_0xec4b('0x35')][_0xec4b('0x42')]+'%'};return _0x2b085c;}})});}_0x2c5049=_[_0xec4b('0x43')]({},_0x2c5049,_0x238e29[_0xec4b('0x45')]);var _0x416774={'where':_0x2c5049[_0xec4b('0x3f')]};return db['Team']['count'](_0x416774)[_0xec4b('0x29')](function(_0x3c1689){_0x42b522[_0xec4b('0x23')]=_0x3c1689;if(_0x238e29[_0xec4b('0x35')][_0xec4b('0x46')]){_0x2c5049['include']=[{'all':!![]}];}return db[_0xec4b('0x30')][_0xec4b('0x47')](_0x2c5049);})[_0xec4b('0x29')](function(_0x1ecf57){_0x42b522['rows']=_0x1ecf57;return _0x42b522;})['then'](respondWithFilteredResult(_0x3d7a55,_0x2c5049))[_0xec4b('0x48')](handleError(_0x3d7a55,null));};exports['show']=function(_0x3fb59e,_0x59749e){var _0x8cb35a={'raw':![],'where':{'id':_0x3fb59e[_0xec4b('0x49')]['id']}},_0x459a42={};_0x459a42[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_0xec4b('0x30')]['rawAttributes']);_0x459a42[_0xec4b('0x35')]=_[_0xec4b('0x4a')](_0x3fb59e[_0xec4b('0x35')]);_0x459a42[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x459a42[_0xec4b('0x38')],_0x459a42['query']);_0x8cb35a['attributes']=_[_0xec4b('0x36')](_0x459a42[_0xec4b('0x38')],qs['fields'](_0x3fb59e[_0xec4b('0x35')][_0xec4b('0x39')]));_0x8cb35a[_0xec4b('0x37')]=_0x8cb35a[_0xec4b('0x37')][_0xec4b('0x3a')]?_0x8cb35a['attributes']:_0x459a42[_0xec4b('0x38')];if(_0x3fb59e[_0xec4b('0x35')][_0xec4b('0x46')]){_0x8cb35a[_0xec4b('0x4b')]=[{'all':!![]}];}_0x8cb35a=_[_0xec4b('0x43')]({},_0x8cb35a,_0x3fb59e[_0xec4b('0x45')]);return db[_0xec4b('0x30')][_0xec4b('0x4c')](_0x8cb35a)['then'](handleEntityNotFound(_0x59749e,null))[_0xec4b('0x29')](respondWithResult(_0x59749e,null))[_0xec4b('0x48')](handleError(_0x59749e,null));};exports[_0xec4b('0x4d')]=function(_0x5f3bf0,_0x3d7d3b){return db[_0xec4b('0x30')][_0xec4b('0x4d')](_0x5f3bf0[_0xec4b('0x4e')],{})['then'](function(_0xc01df2){var _0x3fb59b=_0x5f3bf0[_0xec4b('0x4f')]['get']({'plain':!![]});if(!_0x3fb59b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3fb59b[_0xec4b('0x50')]===_0xec4b('0x4f')){var _0x291db2=_0xc01df2[_0xec4b('0x51')]({'plain':!![]});var _0x525697=_0xec4b('0x52');return db['UserProfileSection']['find']({'where':{'name':_0x525697,'userProfileId':_0x3fb59b['userProfileId']},'raw':!![]})[_0xec4b('0x29')](function(_0x1188f1){if(_0x1188f1&&_0x1188f1['autoAssociation']===0x0){return db[_0xec4b('0x53')][_0xec4b('0x4d')]({'name':_0x291db2[_0xec4b('0x2c')],'resourceId':_0x291db2['id'],'type':_0x1188f1[_0xec4b('0x2c')],'sectionId':_0x1188f1['id']},{})[_0xec4b('0x29')](function(){return _0xc01df2;});}else{return _0xc01df2;}})[_0xec4b('0x48')](function(_0x38450b){logger[_0xec4b('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38450b);throw _0x38450b;});}return _0xc01df2;})[_0xec4b('0x29')](respondWithResult(_0x3d7d3b,0xc9))[_0xec4b('0x48')](handleError(_0x3d7d3b,null));};exports[_0xec4b('0x54')]=function(_0x60623a,_0x4a2916){if(_0x60623a[_0xec4b('0x4e')]['id']){delete _0x60623a['body']['id'];}return db[_0xec4b('0x30')][_0xec4b('0x4c')]({'where':{'id':_0x60623a[_0xec4b('0x49')]['id']}})[_0xec4b('0x29')](handleEntityNotFound(_0x4a2916,null))[_0xec4b('0x29')](saveUpdates(_0x60623a[_0xec4b('0x4e')],null))[_0xec4b('0x29')](respondWithResult(_0x4a2916,null))[_0xec4b('0x48')](handleError(_0x4a2916,null));};exports[_0xec4b('0x55')]=function(_0x19969f,_0x4a83ac){var _0x1d98f3=_0x19969f[_0xec4b('0x49')]['id'];var _0x478455=[];return db['sequelize'][_0xec4b('0x56')](function(_0x490611){var _0x11a547=_0xec4b('0x57')+_0x1d98f3;return db['sequelize'][_0xec4b('0x35')](_0x11a547,{'type':db[_0xec4b('0x58')]['QueryTypes'][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611})[_0xec4b('0x29')](function(_0x4ef50f){_0x478455=_[_0xec4b('0x2f')](_0x4ef50f,function(_0x4ea852){return Number(_0x4ea852[_0xec4b('0x5a')]);});})['then'](function(){var _0x1ff4c9=_0xec4b('0x5b')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x1ff4c9,{'type':db['Sequelize'][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x83b621){var _0x105167=_[_0xec4b('0x2f')](_0x83b621,function(_0xffa952){return Number(_0xffa952[_0xec4b('0x5e')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x478455},'VoiceQueueId':{'$in':_0x105167}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x747098=_0xec4b('0x5f')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x747098,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x5b48b7){var _0x4bc9b1=_[_0xec4b('0x2f')](_0x5b48b7,function(_0x25c1aa){return Number(_0x25c1aa[_0xec4b('0x60')]);});return db[_0xec4b('0x61')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'MailQueueId':{'$in':_0x4bc9b1}},'transaction':_0x490611});})['then'](function(){var _0x21b32d=_0xec4b('0x62')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x21b32d,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x26447e){var _0x2de128=_[_0xec4b('0x2f')](_0x26447e,function(_0x55cc1b){return Number(_0x55cc1b[_0xec4b('0x63')]);});return db[_0xec4b('0x64')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'SmsQueueId':{'$in':_0x2de128}},'transaction':_0x490611});})['then'](function(){var _0xf7da8c=_0xec4b('0x65')+_0x1d98f3;return db['sequelize']['query'](_0xf7da8c,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0xa8caf5){var _0x5a6a97=_[_0xec4b('0x2f')](_0xa8caf5,function(_0x1fe00c){return Number(_0x1fe00c[_0xec4b('0x66')]);});return db['UserChatQueue']['destroy']({'where':{'UserId':{'$in':_0x478455},'ChatQueueId':{'$in':_0x5a6a97}},'transaction':_0x490611});})['then'](function(){var _0x7df057=_0xec4b('0x67')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x7df057,{'type':db['Sequelize'][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x1fb39a){var _0x4e2132=_[_0xec4b('0x2f')](_0x1fb39a,function(_0x3658c3){return Number(_0x3658c3[_0xec4b('0x68')]);});return db[_0xec4b('0x69')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'FaxQueueId':{'$in':_0x4e2132}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x213392=_0xec4b('0x6a')+_0x1d98f3;return db[_0xec4b('0x5c')][_0xec4b('0x35')](_0x213392,{'type':db['Sequelize']['QueryTypes'][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})['then'](function(_0x4c660b){var _0x18e04d=_[_0xec4b('0x2f')](_0x4c660b,function(_0x597520){return Number(_0x597520[_0xec4b('0x6b')]);});return db[_0xec4b('0x6c')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'OpenchannelQueueId':{'$in':_0x18e04d}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){var _0x474896='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x1d98f3;return db['sequelize'][_0xec4b('0x35')](_0x474896,{'type':db[_0xec4b('0x58')][_0xec4b('0x5d')][_0xec4b('0x59')],'raw':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x5afbb7){var _0x3d200d=_['map'](_0x5afbb7,function(_0x406a81){return Number(_0x406a81[_0xec4b('0x6d')]);});return db[_0xec4b('0x6e')][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'WhatsappQueueId':{'$in':_0x3d200d}},'transaction':_0x490611});})[_0xec4b('0x29')](function(){return db['TeamVoicePrefix'][_0xec4b('0x4c')]({'where':{'TeamId':_0x1d98f3}});})['then'](function(_0x42d70a){if(_0x42d70a===null){return;}return db['UserVoicePrefix'][_0xec4b('0x55')]({'where':{'UserId':{'$in':_0x478455},'VoicePrefixId':_0x42d70a[_0xec4b('0x6f')]},'transaction':_0x490611});})['then'](function(){return db[_0xec4b('0x30')]['destroy']({'where':{'id':_0x1d98f3},'cascade':!![],'transaction':_0x490611});})[_0xec4b('0x29')](function(_0x8f0eb8){if(_0x8f0eb8===0x0){_0x4a83ac[_0xec4b('0x1d')](0x194);}else{return db[_0xec4b('0x53')][_0xec4b('0x55')]({'where':{'type':'Teams','resourceId':_0x1d98f3},'cascade':!![],'transaction':_0x490611})[_0xec4b('0x29')](function(){_0x4a83ac[_0xec4b('0x1f')](0xcc)[_0xec4b('0x1e')]();});}})['catch'](function(_0x45a549){_0x4a83ac[_0xec4b('0x1f')](0x1f4)['send'](_0x45a549);});});};exports[_0xec4b('0x70')]=function(_0x5bf426,_0x214527,_0x4043a4){return db[_0xec4b('0x30')][_0xec4b('0x71')]({'where':{'id':_0x5bf426[_0xec4b('0x49')]['id']}})['then'](handleEntityNotFound(_0x214527,null))[_0xec4b('0x29')](function(_0x3ab193){if(!_0x5bf426[_0xec4b('0x35')][_0xec4b('0x72')]||!utils[_0xec4b('0x73')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x72')])){throw new db[(_0xec4b('0x58'))][(_0xec4b('0x74'))](_0xec4b('0x75'));}var _0x42864f={};var _0x3b8802={};_0x3b8802[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_[_0xec4b('0x76')](_0x5bf426['query'][_0xec4b('0x72')][_0xec4b('0x77')]())+_0xec4b('0x78')][_0xec4b('0x31')]);_0x3b8802[_0xec4b('0x35')]=_['keys'](_0x5bf426[_0xec4b('0x35')]);_0x3b8802[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x3b8802[_0xec4b('0x38')],_0x3b8802['query']);_0x42864f[_0xec4b('0x37')]=_[_0xec4b('0x36')](_0x3b8802[_0xec4b('0x38')],qs[_0xec4b('0x39')](_0x5bf426['query']['fields']));_0x42864f[_0xec4b('0x37')]=_0x42864f[_0xec4b('0x37')]['length']?_0x42864f[_0xec4b('0x37')]:_0x3b8802[_0xec4b('0x38')];_0x42864f[_0xec4b('0x22')]=qs[_0xec4b('0x22')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x22')]);_0x42864f[_0xec4b('0x20')]=qs['offset'](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x20')]);_0x42864f[_0xec4b('0x3d')]=qs[_0xec4b('0x3e')](_0x5bf426[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x42864f[_0xec4b('0x3f')]=qs[_0xec4b('0x41')](_[_0xec4b('0x40')](_0x5bf426[_0xec4b('0x35')],_0x3b8802[_0xec4b('0x41')]));_0x42864f=_[_0xec4b('0x43')]({},_0x42864f,_0x5bf426['options']);return _0x3ab193[_0xec4b('0x51')+_[_0xec4b('0x76')](_0x5bf426[_0xec4b('0x35')]['channel'][_0xec4b('0x77')]())+_0xec4b('0x79')](_0x42864f);})[_0xec4b('0x29')](respondWithResult(_0x214527,null))[_0xec4b('0x48')](handleError(_0x214527,null));};exports[_0xec4b('0x7a')]=function(_0x4fe16c,_0x1360d3,_0x319637){return db['Team'][_0xec4b('0x71')]({'where':{'id':_0x4fe16c[_0xec4b('0x49')]['id']}})['then'](function(_0x3be589){if(_0x3be589){if(!_0x4fe16c['body'][_0xec4b('0x72')]||!utils[_0xec4b('0x73')](_0x4fe16c[_0xec4b('0x4e')][_0xec4b('0x72')])){throw new db['Sequelize'][(_0xec4b('0x74'))](_0xec4b('0x75'));}return _0x3be589[_0xec4b('0x7b')+_[_0xec4b('0x76')](_0x4fe16c['body'][_0xec4b('0x72')][_0xec4b('0x77')]())+_0xec4b('0x79')](_0x4fe16c[_0xec4b('0x4e')][_0xec4b('0x7c')]);}return null;})[_0xec4b('0x29')](handleEntityNotFound(_0x1360d3,null))[_0xec4b('0x29')](respondWithStatusCode(_0x1360d3,null))[_0xec4b('0x48')](handleError(_0x1360d3,null));};exports[_0xec4b('0x7d')]=function(_0xca5ff1,_0xbb2791,_0x5686a7){return db[_0xec4b('0x30')][_0xec4b('0x71')]({'where':{'id':_0xca5ff1['params']['id']}})['then'](function(_0x4ef5ac){if(_0x4ef5ac){if(!_0xca5ff1[_0xec4b('0x35')]['channel']||!utils[_0xec4b('0x73')](_0xca5ff1[_0xec4b('0x35')]['channel'])){throw new db['Sequelize'][(_0xec4b('0x74'))]('Unknown\x20channel');}return _0x4ef5ac[_0xec4b('0x7e')+_[_0xec4b('0x76')](_0xca5ff1[_0xec4b('0x35')][_0xec4b('0x72')][_0xec4b('0x77')]())+'Queues'](_0xca5ff1[_0xec4b('0x35')][_0xec4b('0x7c')]);}return null;})[_0xec4b('0x29')](handleEntityNotFound(_0xbb2791,null))[_0xec4b('0x29')](respondWithStatusCode(_0xbb2791,null))[_0xec4b('0x48')](handleError(_0xbb2791,null));};exports[_0xec4b('0x7f')]=function(_0x43c581,_0x19f296){var _0x7d9ff3=_[_0xec4b('0x80')](_0x43c581[_0xec4b('0x4e')][_0xec4b('0x7c')])?_0x43c581[_0xec4b('0x4e')]['ids']:[_0x43c581[_0xec4b('0x4e')]['ids']];var _0x1654a0=_0x43c581[_0xec4b('0x49')]['id'];return db[_0xec4b('0x30')][_0xec4b('0x4c')]({'where':{'id':_0x1654a0}})[_0xec4b('0x29')](handleEntityNotFound(_0x19f296,null))['then'](function(_0x216f3b){if(_0x216f3b){var _0x510dd8=[_0xec4b('0x81'),_0xec4b('0x82'),'Mail',_0xec4b('0x83'),_0xec4b('0x84'),_0xec4b('0x85'),'Whatsapp'];return db['sequelize'][_0xec4b('0x56')](function(_0x3b14ff){var _0x3b3e3a=_[_0xec4b('0x2f')](_0x510dd8,function(_0x31ec16){var _0x2df80c={'attributes':['id',_0xec4b('0x2c')]};if(_0x31ec16===_0xec4b('0x81')){_0x2df80c['through']={'attributes':[_0xec4b('0x86')]};}return _0x216f3b[_0xec4b('0x51')+_0x31ec16+_0xec4b('0x79')](_0x2df80c)[_0xec4b('0x29')](function(_0x125159){var _0x1e1dfc=_['map'](_0x125159,function(_0x24bb67){var _0x1dc336=_[_0xec4b('0x2f')](_0x7d9ff3,function(_0xfc042d){var _0xef6f54={'where':{'UserId':_0xfc042d,[_0x31ec16+_0xec4b('0x87')]:_0x24bb67['id']},'transaction':_0x3b14ff};if(_0x31ec16===_0xec4b('0x81')){_0xef6f54['defaults']={'penalty':_0x24bb67[_0xec4b('0x88')][_0xec4b('0x86')]};}return db[_0xec4b('0x89')+_0x31ec16+_0xec4b('0x78')][_0xec4b('0x8a')](_0xef6f54)[_0xec4b('0x29')](function(){socket[_0xec4b('0x8b')]('user'+_0x31ec16+'Queue:save',{'UserId':_0xfc042d,[_0x31ec16+_0xec4b('0x87')]:_0x24bb67['id']});if(_0x31ec16!==_0xec4b('0x81')){return;}return db[_0xec4b('0x89')][_0xec4b('0x47')]({'where':{'id':_0x7d9ff3,'online':0x1},'attributes':['id','name',_0xec4b('0x8c'),_0xec4b('0x8d'),_0xec4b('0x8e')],'raw':!![]})['then'](function(_0x3aac52){var _0x1d4a71=_[_0xec4b('0x2f')](_0x3aac52,function(_0x529173){return db[_0xec4b('0x8f')][_0xec4b('0x90')]({'membername':_0x529173[_0xec4b('0x2c')],'UserId':_0x529173['id'],'queue_name':_0x24bb67[_0xec4b('0x2c')],'VoiceQueueId':_0x24bb67['id'],'interface':_[_0xec4b('0x91')](_0x529173['interface'])?util[_0xec4b('0x92')](_0xec4b('0x93'),_0x529173[_0xec4b('0x2c')]):_0x529173['interface'],'paused':_0x529173[_0xec4b('0x8d')]||![],'penalty':_0x24bb67[_0xec4b('0x88')][_0xec4b('0x86')]},{'transaction':_0x3b14ff});});return Promise[_0xec4b('0x94')](_0x1d4a71);});});});return Promise[_0xec4b('0x94')](_0x1dc336);});return Promise[_0xec4b('0x94')](_0x1e1dfc);})[_0xec4b('0x29')](function(){return db['TeamVoicePrefix'][_0xec4b('0x71')]({'where':{'teamId':_0x1654a0}})[_0xec4b('0x29')](function(_0x222204){if(_0x222204){var _0x23daff=_['map'](_0x7d9ff3,function(_0x54ef62){db[_0xec4b('0x95')][_0xec4b('0x90')]({'UserId':_0x54ef62,'VoicePrefixId':_0x222204[_0xec4b('0x6f')]});});return Promise[_0xec4b('0x94')](_0x23daff);}});});});return Promise['all'](_0x3b3e3a)[_0xec4b('0x29')](function(){return _0x216f3b[_0xec4b('0x7f')](_0x7d9ff3,{'transaction':_0x3b14ff})[_0xec4b('0x96')](function(_0x257d10){return _0x257d10;});});});}})[_0xec4b('0x29')](respondWithResult(_0x19f296,null))['catch'](handleError(_0x19f296,null));};exports['removeAgents']=function(_0xdb8085,_0x4efd2c){var _0x2552b2=_[_0xec4b('0x80')](_0xdb8085[_0xec4b('0x35')][_0xec4b('0x7c')])?_0xdb8085[_0xec4b('0x35')][_0xec4b('0x7c')]:[_0xdb8085[_0xec4b('0x35')]['ids']];var _0x2386a8=_0xdb8085[_0xec4b('0x49')]['id'];return db[_0xec4b('0x30')]['find']({'where':{'id':_0x2386a8}})[_0xec4b('0x29')](handleEntityNotFound(_0x4efd2c,null))[_0xec4b('0x29')](function(_0x313345){if(_0x313345){var _0x25e690=[_0xec4b('0x81'),'Chat',_0xec4b('0x97'),'Sms','Fax',_0xec4b('0x85'),_0xec4b('0x98')];return db[_0xec4b('0x5c')]['transaction'](function(_0x16ec95){var _0x5d10ff=_[_0xec4b('0x2f')](_0x25e690,function(_0x5ea302){var _0x3e38c3={'attributes':['id',_0xec4b('0x2c')]};return _0x313345[_0xec4b('0x51')+_0x5ea302+'Queues'](_0x3e38c3)[_0xec4b('0x29')](function(_0x52018f){var _0x1e634d=_[_0xec4b('0x2f')](_0x52018f,function(_0x564fe6){return _0x564fe6[_0xec4b('0x99')](_0x2552b2,{'transaction':_0x16ec95})['then'](function(){var _0x28f273=_[_0xec4b('0x2f')](_0x2552b2,function(_0x5dea64){socket[_0xec4b('0x8b')](_0xec4b('0x4f')+_0x5ea302+_0xec4b('0x9a'),{'UserId':Number(_0x5dea64),[_0x5ea302+_0xec4b('0x87')]:_0x564fe6['id']});if(_0x5ea302!==_0xec4b('0x81')){return;}return db['UserVoiceQueueRt'][_0xec4b('0x55')]({'where':{'VoiceQueueId':_0x564fe6['id'],'UserId':_0x5dea64},'transaction':_0x16ec95});});return Promise[_0xec4b('0x94')](_0x28f273);});});return Promise[_0xec4b('0x94')](_0x1e634d);});});return Promise[_0xec4b('0x94')](_0x5d10ff)[_0xec4b('0x29')](function(){return _0x313345['removeAgents'](_0x2552b2,{'transaction':_0x16ec95});})[_0xec4b('0x29')](function(){return db[_0xec4b('0x9b')][_0xec4b('0x71')]({'where':{'teamId':_0x2386a8}})['then'](function(_0x1a3598){if(_0x1a3598){var _0x391347=_['map'](_0x2552b2,function(_0x2a5251){db[_0xec4b('0x95')]['destroy']({'where':{'UserId':_0x2a5251,'VoicePrefixId':_0x1a3598[_0xec4b('0x6f')]}});});return Promise[_0xec4b('0x94')](_0x391347);}});});});}})[_0xec4b('0x29')](respondWithStatusCode(_0x4efd2c,null))[_0xec4b('0x48')](handleError(_0x4efd2c,null));};exports[_0xec4b('0x9c')]=function(_0x18b72a,_0x143856,_0x5ac222){var _0x37df82={};var _0x1ec7cb={};var _0x2f95ad;var _0x220e2f;return db[_0xec4b('0x30')]['findOne']({'where':{'id':_0x18b72a[_0xec4b('0x49')]['id']}})[_0xec4b('0x29')](handleEntityNotFound(_0x143856,null))[_0xec4b('0x29')](function(_0xa99b7e){if(_0xa99b7e){_0x2f95ad=_0xa99b7e;_0x1ec7cb[_0xec4b('0x38')]=_[_0xec4b('0x4a')](db[_0xec4b('0x89')][_0xec4b('0x31')]);_0x1ec7cb[_0xec4b('0x35')]=_['keys'](_0x18b72a[_0xec4b('0x35')]);_0x1ec7cb[_0xec4b('0x41')]=_[_0xec4b('0x36')](_0x1ec7cb[_0xec4b('0x38')],_0x1ec7cb[_0xec4b('0x35')]);_0x37df82[_0xec4b('0x37')]=_[_0xec4b('0x36')](_0x1ec7cb['model'],qs[_0xec4b('0x39')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x39')]));_0x37df82[_0xec4b('0x37')]=_0x37df82[_0xec4b('0x37')][_0xec4b('0x3a')]?_0x37df82[_0xec4b('0x37')]:_0x1ec7cb['model'];_0x37df82[_0xec4b('0x3d')]=qs[_0xec4b('0x3e')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x3e')]);_0x37df82[_0xec4b('0x3f')]=qs['filters'](_[_0xec4b('0x40')](_0x18b72a[_0xec4b('0x35')],_0x1ec7cb[_0xec4b('0x41')]));if(_0x18b72a[_0xec4b('0x35')][_0xec4b('0x42')]){_0x37df82[_0xec4b('0x3f')]=_['merge'](_0x37df82[_0xec4b('0x3f')],{'$or':_['map'](_0x37df82[_0xec4b('0x37')],function(_0xd03fef){var _0x37e7ed={};_0x37e7ed[_0xd03fef]={'$like':'%'+_0x18b72a['query'][_0xec4b('0x42')]+'%'};return _0x37e7ed;})});}_0x37df82=_[_0xec4b('0x43')]({},_0x37df82,_0x18b72a[_0xec4b('0x45')]);return _0x2f95ad[_0xec4b('0x9c')](_0x37df82);}})['then'](function(_0x23e2d0){if(_0x23e2d0){_0x220e2f=_0x23e2d0[_0xec4b('0x3a')];if(!_0x18b72a[_0xec4b('0x35')][_0xec4b('0x3b')]('nolimit')){_0x37df82[_0xec4b('0x22')]=qs[_0xec4b('0x22')](_0x18b72a[_0xec4b('0x35')]['limit']);_0x37df82[_0xec4b('0x20')]=qs[_0xec4b('0x20')](_0x18b72a[_0xec4b('0x35')][_0xec4b('0x20')]);}return _0x2f95ad[_0xec4b('0x9c')](_0x37df82);}})[_0xec4b('0x29')](function(_0x22bf37){if(_0x22bf37){return _0x22bf37?{'count':_0x220e2f,'rows':_0x22bf37}:null;}})[_0xec4b('0x29')](respondWithResult(_0x143856,null))[_0xec4b('0x48')](handleError(_0x143856,null));};
\ No newline at end of file
+var _0x87f1=['model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','count','includeAll','include','findAll','rows','catch','show','params','keys','options','Team','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','body','destroy','sequelize','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','map','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','UserChatQueue','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','Teams','findOne','channel','isValidChannel','Unknown\x20channel','Queue','capitalize','toLowerCase','addQueues','ValidationError','Queues','ids','removeQueues','addAgents','isArray','Voice','Openchannel','Whatsapp','transaction','penalty','QueueId','TeamVoiceQueue','emit','user','Queue:save','User','online','voicePause','interface','upsert','isNil','format','SIP/%s','all','Chat','Mail','Sms','Fax','Queue:remove','removeAgents','getAgents','hasOwnProperty','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','end','status','json','offset','undefined','limit','apply','save','update','then','sendStatus','error','stack','name','send','index','rawAttributes','type'];(function(_0x14ad54,_0x1ec750){var _0x1e1ac4=function(_0x5431cc){while(--_0x5431cc){_0x14ad54['push'](_0x14ad54['shift']());}};_0x1e1ac4(++_0x1ec750);}(_0x87f1,0xfd));var _0x187f=function(_0x9951ff,_0x1c2898){_0x9951ff=_0x9951ff-0x0;var _0x55ebe5=_0x87f1[_0x9951ff];return _0x55ebe5;};'use strict';var emlformat=require(_0x187f('0x0'));var rimraf=require(_0x187f('0x1'));var zipdir=require(_0x187f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x187f('0x3'));var BPromise=require(_0x187f('0x4'));var Mustache=require(_0x187f('0x5'));var util=require(_0x187f('0x6'));var path=require(_0x187f('0x7'));var sox=require('sox');var csv=require(_0x187f('0x8'));var ejs=require(_0x187f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x187f('0xa'));var squel=require(_0x187f('0xb'));var crypto=require(_0x187f('0xc'));var jsforce=require(_0x187f('0xd'));var deskjs=require(_0x187f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x187f('0xf'));var Papa=require(_0x187f('0x10'));var Redis=require(_0x187f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x187f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x187f('0x13'));var logger=require(_0x187f('0x14'))(_0x187f('0x15'));var utils=require(_0x187f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x187f('0x17'));var db=require(_0x187f('0x18'))['db'];config[_0x187f('0x19')]=_[_0x187f('0x1a')](config['redis'],{'host':_0x187f('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x187f('0x19')]));require('./team.socket')[_0x187f('0x1c')](socket);function respondWithStatusCode(_0x4846d0,_0x46b83f){_0x46b83f=_0x46b83f||0xcc;return function(_0x57c4cd){if(_0x57c4cd){return _0x4846d0['sendStatus'](_0x46b83f);}return _0x4846d0['status'](_0x46b83f)[_0x187f('0x1d')]();};}function respondWithResult(_0xa042b3,_0x51dc82){_0x51dc82=_0x51dc82||0xc8;return function(_0x3f7900){if(_0x3f7900){return _0xa042b3[_0x187f('0x1e')](_0x51dc82)[_0x187f('0x1f')](_0x3f7900);}};}function respondWithFilteredResult(_0x49c78c,_0x461550){return function(_0x399500){if(_0x399500){var _0xb2f056=typeof _0x461550[_0x187f('0x20')]===_0x187f('0x21')&&typeof _0x461550[_0x187f('0x22')]===_0x187f('0x21');var _0x4da2ce=_0x399500['count'];var _0x4c7562=_0xb2f056?0x0:_0x461550[_0x187f('0x20')];var _0xd61515=_0xb2f056?_0x399500['count']:_0x461550[_0x187f('0x20')]+_0x461550['limit'];var _0x472f29;if(_0xd61515>=_0x4da2ce){_0xd61515=_0x4da2ce;_0x472f29=0xc8;}else{_0x472f29=0xce;}_0x49c78c['status'](_0x472f29);return _0x49c78c['set']('Content-Range',_0x4c7562+'-'+_0xd61515+'/'+_0x4da2ce)['json'](_0x399500);}return null;};}function patchUpdates(_0x8c7af5){return function(_0xc75e3c){try{jsonpatch[_0x187f('0x23')](_0xc75e3c,_0x8c7af5,!![]);}catch(_0x2995f3){return BPromise['reject'](_0x2995f3);}return _0xc75e3c[_0x187f('0x24')]();};}function saveUpdates(_0x51fb62,_0x2268e9){return function(_0x249998){if(_0x249998){return _0x249998[_0x187f('0x25')](_0x51fb62)[_0x187f('0x26')](function(_0x161780){return _0x161780;});}return null;};}function handleEntityNotFound(_0x3ce234,_0x365765){return function(_0x49a017){if(!_0x49a017){_0x3ce234[_0x187f('0x27')](0x194);}return _0x49a017;};}function handleError(_0x328f69,_0x3dac9b){_0x3dac9b=_0x3dac9b||0x1f4;return function(_0x45c31f){logger[_0x187f('0x28')](_0x45c31f[_0x187f('0x29')]);if(_0x45c31f[_0x187f('0x2a')]){delete _0x45c31f['name'];}_0x328f69[_0x187f('0x1e')](_0x3dac9b)[_0x187f('0x2b')](_0x45c31f);};}exports[_0x187f('0x2c')]=function(_0x33068d,_0x251775){var _0x42d91b={},_0x10d6e1={},_0x322642={'count':0x0,'rows':[]};var _0x2a83a7=_['map'](db['Team'][_0x187f('0x2d')],function(_0x1f1ef6){return{'name':_0x1f1ef6['fieldName'],'type':_0x1f1ef6[_0x187f('0x2e')]['key']};});_0x10d6e1[_0x187f('0x2f')]=_['map'](_0x2a83a7,_0x187f('0x2a'));_0x10d6e1['query']=_['keys'](_0x33068d[_0x187f('0x30')]);_0x10d6e1[_0x187f('0x31')]=_['intersection'](_0x10d6e1[_0x187f('0x2f')],_0x10d6e1[_0x187f('0x30')]);_0x42d91b[_0x187f('0x32')]=_[_0x187f('0x33')](_0x10d6e1[_0x187f('0x2f')],qs[_0x187f('0x34')](_0x33068d[_0x187f('0x30')][_0x187f('0x34')]));_0x42d91b['attributes']=_0x42d91b[_0x187f('0x32')][_0x187f('0x35')]?_0x42d91b[_0x187f('0x32')]:_0x10d6e1['model'];if(!_0x33068d['query']['hasOwnProperty'](_0x187f('0x36'))){_0x42d91b[_0x187f('0x22')]=qs['limit'](_0x33068d[_0x187f('0x30')][_0x187f('0x22')]);_0x42d91b[_0x187f('0x20')]=qs[_0x187f('0x20')](_0x33068d[_0x187f('0x30')][_0x187f('0x20')]);}_0x42d91b[_0x187f('0x37')]=qs[_0x187f('0x38')](_0x33068d['query'][_0x187f('0x38')]);_0x42d91b['where']=qs[_0x187f('0x31')](_[_0x187f('0x39')](_0x33068d['query'],_0x10d6e1[_0x187f('0x31')]),_0x2a83a7);if(_0x33068d[_0x187f('0x30')]['filter']){_0x42d91b['where']=_[_0x187f('0x3a')](_0x42d91b[_0x187f('0x3b')],{'$or':_['map'](_0x2a83a7,function(_0x578235){if(_0x578235[_0x187f('0x2e')]!==_0x187f('0x3c')){var _0x229ed7={};_0x229ed7[_0x578235['name']]={'$like':'%'+_0x33068d[_0x187f('0x30')][_0x187f('0x3d')]+'%'};return _0x229ed7;}})});}_0x42d91b=_[_0x187f('0x3a')]({},_0x42d91b,_0x33068d['options']);var _0x43ed92={'where':_0x42d91b[_0x187f('0x3b')]};return db['Team']['count'](_0x43ed92)[_0x187f('0x26')](function(_0x4f589f){_0x322642[_0x187f('0x3e')]=_0x4f589f;if(_0x33068d[_0x187f('0x30')][_0x187f('0x3f')]){_0x42d91b[_0x187f('0x40')]=[{'all':!![]}];}return db['Team'][_0x187f('0x41')](_0x42d91b);})[_0x187f('0x26')](function(_0x57e3e8){_0x322642[_0x187f('0x42')]=_0x57e3e8;return _0x322642;})[_0x187f('0x26')](respondWithFilteredResult(_0x251775,_0x42d91b))[_0x187f('0x43')](handleError(_0x251775,null));};exports[_0x187f('0x44')]=function(_0x1ca988,_0x140bc9){var _0x518c0e={'raw':![],'where':{'id':_0x1ca988[_0x187f('0x45')]['id']}},_0x23f122={};_0x23f122[_0x187f('0x2f')]=_[_0x187f('0x46')](db['Team'][_0x187f('0x2d')]);_0x23f122[_0x187f('0x30')]=_['keys'](_0x1ca988['query']);_0x23f122[_0x187f('0x31')]=_[_0x187f('0x33')](_0x23f122[_0x187f('0x2f')],_0x23f122[_0x187f('0x30')]);_0x518c0e[_0x187f('0x32')]=_[_0x187f('0x33')](_0x23f122['model'],qs['fields'](_0x1ca988[_0x187f('0x30')][_0x187f('0x34')]));_0x518c0e['attributes']=_0x518c0e[_0x187f('0x32')][_0x187f('0x35')]?_0x518c0e[_0x187f('0x32')]:_0x23f122[_0x187f('0x2f')];if(_0x1ca988[_0x187f('0x30')][_0x187f('0x3f')]){_0x518c0e[_0x187f('0x40')]=[{'all':!![]}];}_0x518c0e=_[_0x187f('0x3a')]({},_0x518c0e,_0x1ca988[_0x187f('0x47')]);return db[_0x187f('0x48')][_0x187f('0x49')](_0x518c0e)['then'](handleEntityNotFound(_0x140bc9,null))[_0x187f('0x26')](respondWithResult(_0x140bc9,null))[_0x187f('0x43')](handleError(_0x140bc9,null));};exports[_0x187f('0x4a')]=function(_0x57e000,_0x26581b){return db[_0x187f('0x48')][_0x187f('0x4a')](_0x57e000['body'],{})[_0x187f('0x26')](function(_0x1e8b10){var _0x5b2d6e=_0x57e000['user'][_0x187f('0x4b')]({'plain':!![]});if(!_0x5b2d6e)throw new Error(_0x187f('0x4c'));if(_0x5b2d6e[_0x187f('0x4d')]==='user'){var _0x361923=_0x1e8b10[_0x187f('0x4b')]({'plain':!![]});var _0x3d8266='Teams';return db[_0x187f('0x4e')][_0x187f('0x49')]({'where':{'name':_0x3d8266,'userProfileId':_0x5b2d6e[_0x187f('0x4f')]},'raw':!![]})[_0x187f('0x26')](function(_0x54d2f0){if(_0x54d2f0&&_0x54d2f0['autoAssociation']===0x0){return db[_0x187f('0x50')][_0x187f('0x4a')]({'name':_0x361923[_0x187f('0x2a')],'resourceId':_0x361923['id'],'type':_0x54d2f0[_0x187f('0x2a')],'sectionId':_0x54d2f0['id']},{})[_0x187f('0x26')](function(){return _0x1e8b10;});}else{return _0x1e8b10;}})[_0x187f('0x43')](function(_0x233f85){logger[_0x187f('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x233f85);throw _0x233f85;});}return _0x1e8b10;})[_0x187f('0x26')](respondWithResult(_0x26581b,0xc9))['catch'](handleError(_0x26581b,null));};exports[_0x187f('0x25')]=function(_0x5bc9b9,_0x22bba0){if(_0x5bc9b9[_0x187f('0x51')]['id']){delete _0x5bc9b9[_0x187f('0x51')]['id'];}return db[_0x187f('0x48')][_0x187f('0x49')]({'where':{'id':_0x5bc9b9[_0x187f('0x45')]['id']}})[_0x187f('0x26')](handleEntityNotFound(_0x22bba0,null))[_0x187f('0x26')](saveUpdates(_0x5bc9b9[_0x187f('0x51')],null))[_0x187f('0x26')](respondWithResult(_0x22bba0,null))['catch'](handleError(_0x22bba0,null));};exports[_0x187f('0x52')]=function(_0x435d0f,_0x5e7f7e){var _0x3a4f24=_0x435d0f[_0x187f('0x45')]['id'];var _0x247310=[];return db[_0x187f('0x53')]['transaction'](function(_0x3b80f1){var _0x1cb570=_0x187f('0x54')+_0x3a4f24;return db['sequelize'][_0x187f('0x30')](_0x1cb570,{'type':db[_0x187f('0x55')][_0x187f('0x56')]['SELECT'],'raw':!![],'transaction':_0x3b80f1})[_0x187f('0x26')](function(_0x32cfbe){_0x247310=_[_0x187f('0x57')](_0x32cfbe,function(_0x48a4af){return Number(_0x48a4af[_0x187f('0x58')]);});})['then'](function(){var _0xda6a5f=_0x187f('0x59')+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0xda6a5f,{'type':db['Sequelize']['QueryTypes'][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x364dea){var _0x1bc685=_[_0x187f('0x57')](_0x364dea,function(_0x2bb04e){return Number(_0x2bb04e[_0x187f('0x5b')]);});return db['UserVoiceQueue'][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'VoiceQueueId':{'$in':_0x1bc685}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x5774d5=_0x187f('0x5c')+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0x5774d5,{'type':db[_0x187f('0x55')][_0x187f('0x56')][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x43ccfc){var _0x3f30c0=_['map'](_0x43ccfc,function(_0xa3dab2){return Number(_0xa3dab2['MailQueueId']);});return db[_0x187f('0x5d')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'MailQueueId':{'$in':_0x3f30c0}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x52bf40=_0x187f('0x5e')+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0x52bf40,{'type':db[_0x187f('0x55')]['QueryTypes'][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x49fb9e){var _0x5bd987=_['map'](_0x49fb9e,function(_0x37e4fb){return Number(_0x37e4fb[_0x187f('0x5f')]);});return db[_0x187f('0x60')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'SmsQueueId':{'$in':_0x5bd987}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x121e24='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0x121e24,{'type':db['Sequelize'][_0x187f('0x56')][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x11f778){var _0x47d05a=_[_0x187f('0x57')](_0x11f778,function(_0x445039){return Number(_0x445039['ChatQueueId']);});return db[_0x187f('0x61')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'ChatQueueId':{'$in':_0x47d05a}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x503e53='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x3a4f24;return db[_0x187f('0x53')]['query'](_0x503e53,{'type':db[_0x187f('0x55')][_0x187f('0x56')][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x27899a){var _0x273d71=_[_0x187f('0x57')](_0x27899a,function(_0x13bebc){return Number(_0x13bebc[_0x187f('0x62')]);});return db['UserFaxQueue'][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'FaxQueueId':{'$in':_0x273d71}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x1b0038=_0x187f('0x63')+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0x1b0038,{'type':db[_0x187f('0x55')]['QueryTypes'][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x560253){var _0x401eef=_['map'](_0x560253,function(_0x9df969){return Number(_0x9df969[_0x187f('0x64')]);});return db[_0x187f('0x65')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'OpenchannelQueueId':{'$in':_0x401eef}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){var _0x585848=_0x187f('0x66')+_0x3a4f24;return db[_0x187f('0x53')][_0x187f('0x30')](_0x585848,{'type':db[_0x187f('0x55')][_0x187f('0x56')][_0x187f('0x5a')],'raw':!![],'transaction':_0x3b80f1});})['then'](function(_0x3a510d){var _0x5f16ef=_[_0x187f('0x57')](_0x3a510d,function(_0x202789){return Number(_0x202789[_0x187f('0x67')]);});return db[_0x187f('0x68')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'WhatsappQueueId':{'$in':_0x5f16ef}},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){return db[_0x187f('0x69')]['find']({'where':{'TeamId':_0x3a4f24}});})[_0x187f('0x26')](function(_0x56cf42){if(_0x56cf42===null){return;}return db[_0x187f('0x6a')][_0x187f('0x52')]({'where':{'UserId':{'$in':_0x247310},'VoicePrefixId':_0x56cf42[_0x187f('0x6b')]},'transaction':_0x3b80f1});})[_0x187f('0x26')](function(){return db[_0x187f('0x48')][_0x187f('0x52')]({'where':{'id':_0x3a4f24},'cascade':!![],'transaction':_0x3b80f1});})[_0x187f('0x26')](function(_0x5cfdf8){if(_0x5cfdf8===0x0){_0x5e7f7e['sendStatus'](0x194);}else{return db[_0x187f('0x50')]['destroy']({'where':{'type':_0x187f('0x6c'),'resourceId':_0x3a4f24},'cascade':!![],'transaction':_0x3b80f1})['then'](function(){_0x5e7f7e['status'](0xcc)[_0x187f('0x1d')]();});}})[_0x187f('0x43')](function(_0x5b9569){_0x5e7f7e[_0x187f('0x1e')](0x1f4)['send'](_0x5b9569);});});};exports['getQueues']=function(_0x34836d,_0x5c5c2f,_0xe27fd6){return db[_0x187f('0x48')][_0x187f('0x6d')]({'where':{'id':_0x34836d[_0x187f('0x45')]['id']}})[_0x187f('0x26')](handleEntityNotFound(_0x5c5c2f,null))['then'](function(_0xbd91a6){if(!_0x34836d[_0x187f('0x30')][_0x187f('0x6e')]||!utils[_0x187f('0x6f')](_0x34836d[_0x187f('0x30')][_0x187f('0x6e')])){throw new db['Sequelize']['ValidationError'](_0x187f('0x70'));}var _0x2774cf={};var _0x3bfd63={};_0x3bfd63['model']=_['keys'](db[_['capitalize'](_0x34836d[_0x187f('0x30')][_0x187f('0x6e')]['toLowerCase']())+_0x187f('0x71')][_0x187f('0x2d')]);_0x3bfd63['query']=_[_0x187f('0x46')](_0x34836d[_0x187f('0x30')]);_0x3bfd63[_0x187f('0x31')]=_[_0x187f('0x33')](_0x3bfd63[_0x187f('0x2f')],_0x3bfd63['query']);_0x2774cf['attributes']=_[_0x187f('0x33')](_0x3bfd63[_0x187f('0x2f')],qs[_0x187f('0x34')](_0x34836d[_0x187f('0x30')][_0x187f('0x34')]));_0x2774cf[_0x187f('0x32')]=_0x2774cf[_0x187f('0x32')][_0x187f('0x35')]?_0x2774cf[_0x187f('0x32')]:_0x3bfd63['model'];_0x2774cf[_0x187f('0x22')]=qs['limit'](_0x34836d[_0x187f('0x30')][_0x187f('0x22')]);_0x2774cf[_0x187f('0x20')]=qs[_0x187f('0x20')](_0x34836d[_0x187f('0x30')]['offset']);_0x2774cf[_0x187f('0x37')]=qs['sort'](_0x34836d[_0x187f('0x30')][_0x187f('0x38')]);_0x2774cf['where']=qs[_0x187f('0x31')](_['pick'](_0x34836d['query'],_0x3bfd63[_0x187f('0x31')]));_0x2774cf=_['merge']({},_0x2774cf,_0x34836d[_0x187f('0x47')]);return _0xbd91a6[_0x187f('0x4b')+_[_0x187f('0x72')](_0x34836d[_0x187f('0x30')][_0x187f('0x6e')][_0x187f('0x73')]())+'Queues'](_0x2774cf);})[_0x187f('0x26')](respondWithResult(_0x5c5c2f,null))[_0x187f('0x43')](handleError(_0x5c5c2f,null));};exports[_0x187f('0x74')]=function(_0x4ac427,_0x450118,_0x199fbc){return db[_0x187f('0x48')][_0x187f('0x6d')]({'where':{'id':_0x4ac427['params']['id']}})[_0x187f('0x26')](function(_0x1db9d4){if(_0x1db9d4){if(!_0x4ac427[_0x187f('0x51')][_0x187f('0x6e')]||!utils['isValidChannel'](_0x4ac427[_0x187f('0x51')]['channel'])){throw new db[(_0x187f('0x55'))][(_0x187f('0x75'))](_0x187f('0x70'));}return _0x1db9d4['add'+_[_0x187f('0x72')](_0x4ac427[_0x187f('0x51')][_0x187f('0x6e')][_0x187f('0x73')]())+_0x187f('0x76')](_0x4ac427['body'][_0x187f('0x77')]);}return null;})[_0x187f('0x26')](handleEntityNotFound(_0x450118,null))[_0x187f('0x26')](respondWithStatusCode(_0x450118,null))[_0x187f('0x43')](handleError(_0x450118,null));};exports[_0x187f('0x78')]=function(_0x3579c5,_0xea2bad,_0x25ac3f){return db['Team']['findOne']({'where':{'id':_0x3579c5[_0x187f('0x45')]['id']}})[_0x187f('0x26')](function(_0x5d3f4a){if(_0x5d3f4a){if(!_0x3579c5['query'][_0x187f('0x6e')]||!utils[_0x187f('0x6f')](_0x3579c5[_0x187f('0x30')][_0x187f('0x6e')])){throw new db[(_0x187f('0x55'))][(_0x187f('0x75'))](_0x187f('0x70'));}return _0x5d3f4a['remove'+_[_0x187f('0x72')](_0x3579c5[_0x187f('0x30')][_0x187f('0x6e')][_0x187f('0x73')]())+_0x187f('0x76')](_0x3579c5['query'][_0x187f('0x77')]);}return null;})[_0x187f('0x26')](handleEntityNotFound(_0xea2bad,null))[_0x187f('0x26')](respondWithStatusCode(_0xea2bad,null))[_0x187f('0x43')](handleError(_0xea2bad,null));};exports[_0x187f('0x79')]=function(_0x16daeb,_0x584ae3){var _0x12847f=_[_0x187f('0x7a')](_0x16daeb[_0x187f('0x51')][_0x187f('0x77')])?_0x16daeb[_0x187f('0x51')][_0x187f('0x77')]:[_0x16daeb['body']['ids']];var _0xae9bca=_0x16daeb[_0x187f('0x45')]['id'];return db[_0x187f('0x48')][_0x187f('0x49')]({'where':{'id':_0xae9bca}})[_0x187f('0x26')](handleEntityNotFound(_0x584ae3,null))[_0x187f('0x26')](function(_0x3c800c){if(_0x3c800c){var _0x438a1c=[_0x187f('0x7b'),'Chat','Mail','Sms','Fax',_0x187f('0x7c'),_0x187f('0x7d')];return db['sequelize'][_0x187f('0x7e')](function(_0x3dc499){var _0x4067bf=_['map'](_0x438a1c,function(_0x355878){var _0x4db674={'attributes':['id','name']};if(_0x355878==='Voice'){_0x4db674['through']={'attributes':[_0x187f('0x7f')]};}return _0x3c800c[_0x187f('0x4b')+_0x355878+_0x187f('0x76')](_0x4db674)[_0x187f('0x26')](function(_0x5f2933){var _0x34478d=_[_0x187f('0x57')](_0x5f2933,function(_0x1a7601){var _0x200327=_[_0x187f('0x57')](_0x12847f,function(_0x3dc144){var _0x4587ba={'where':{'UserId':_0x3dc144,[_0x355878+_0x187f('0x80')]:_0x1a7601['id']},'transaction':_0x3dc499};if(_0x355878===_0x187f('0x7b')){_0x4587ba[_0x187f('0x1a')]={'penalty':_0x1a7601[_0x187f('0x81')]['penalty']};}return db['User'+_0x355878+'Queue']['findOrCreate'](_0x4587ba)[_0x187f('0x26')](function(){socket[_0x187f('0x82')](_0x187f('0x83')+_0x355878+_0x187f('0x84'),{'UserId':_0x3dc144,[_0x355878+_0x187f('0x80')]:_0x1a7601['id']});if(_0x355878!=='Voice'){return;}return db[_0x187f('0x85')][_0x187f('0x41')]({'where':{'id':_0x12847f,'online':0x1},'attributes':['id',_0x187f('0x2a'),_0x187f('0x86'),_0x187f('0x87'),_0x187f('0x88')],'raw':!![]})['then'](function(_0x350de3){var _0x2b530a=_['map'](_0x350de3,function(_0x50cb3b){return db['UserVoiceQueueRt'][_0x187f('0x89')]({'membername':_0x50cb3b[_0x187f('0x2a')],'UserId':_0x50cb3b['id'],'queue_name':_0x1a7601[_0x187f('0x2a')],'VoiceQueueId':_0x1a7601['id'],'interface':_[_0x187f('0x8a')](_0x50cb3b[_0x187f('0x88')])?util[_0x187f('0x8b')](_0x187f('0x8c'),_0x50cb3b[_0x187f('0x2a')]):_0x50cb3b[_0x187f('0x88')],'paused':_0x50cb3b['voicePause']||![],'penalty':_0x1a7601[_0x187f('0x81')]['penalty']},{'transaction':_0x3dc499});});return Promise['all'](_0x2b530a);});});});return Promise[_0x187f('0x8d')](_0x200327);});return Promise['all'](_0x34478d);})[_0x187f('0x26')](function(){return db[_0x187f('0x69')][_0x187f('0x6d')]({'where':{'teamId':_0xae9bca}})[_0x187f('0x26')](function(_0x3f707f){if(_0x3f707f){var _0x2dacf8=_[_0x187f('0x57')](_0x12847f,function(_0x4ca1ad){db['UserVoicePrefix'][_0x187f('0x89')]({'UserId':_0x4ca1ad,'VoicePrefixId':_0x3f707f[_0x187f('0x6b')]});});return Promise[_0x187f('0x8d')](_0x2dacf8);}});});});return Promise[_0x187f('0x8d')](_0x4067bf)['then'](function(){return _0x3c800c[_0x187f('0x79')](_0x12847f,{'transaction':_0x3dc499})['spread'](function(_0x5d9182){return _0x5d9182;});});});}})[_0x187f('0x26')](respondWithResult(_0x584ae3,null))[_0x187f('0x43')](handleError(_0x584ae3,null));};exports['removeAgents']=function(_0x5129a2,_0x3fbb72){var _0x1c9299=_[_0x187f('0x7a')](_0x5129a2[_0x187f('0x30')][_0x187f('0x77')])?_0x5129a2[_0x187f('0x30')]['ids']:[_0x5129a2[_0x187f('0x30')][_0x187f('0x77')]];var _0x2b289f=_0x5129a2['params']['id'];return db[_0x187f('0x48')][_0x187f('0x49')]({'where':{'id':_0x2b289f}})['then'](handleEntityNotFound(_0x3fbb72,null))[_0x187f('0x26')](function(_0x3539ea){if(_0x3539ea){var _0x5e99c0=['Voice',_0x187f('0x8e'),_0x187f('0x8f'),_0x187f('0x90'),_0x187f('0x91'),_0x187f('0x7c'),_0x187f('0x7d')];return db[_0x187f('0x53')][_0x187f('0x7e')](function(_0x1901e7){var _0x3b01da=_[_0x187f('0x57')](_0x5e99c0,function(_0x1b3dcc){var _0x3d905c={'attributes':['id',_0x187f('0x2a')]};return _0x3539ea['get'+_0x1b3dcc+_0x187f('0x76')](_0x3d905c)['then'](function(_0x26b8e3){var _0x20b7ad=_['map'](_0x26b8e3,function(_0x6c3ad1){return _0x6c3ad1['removeAgents'](_0x1c9299,{'transaction':_0x1901e7})[_0x187f('0x26')](function(){var _0x2d8a92=_[_0x187f('0x57')](_0x1c9299,function(_0x6f3187){socket[_0x187f('0x82')](_0x187f('0x83')+_0x1b3dcc+_0x187f('0x92'),{'UserId':Number(_0x6f3187),[_0x1b3dcc+_0x187f('0x80')]:_0x6c3ad1['id']});if(_0x1b3dcc!==_0x187f('0x7b')){return;}return db['UserVoiceQueueRt'][_0x187f('0x52')]({'where':{'VoiceQueueId':_0x6c3ad1['id'],'UserId':_0x6f3187},'transaction':_0x1901e7});});return Promise[_0x187f('0x8d')](_0x2d8a92);});});return Promise[_0x187f('0x8d')](_0x20b7ad);});});return Promise['all'](_0x3b01da)[_0x187f('0x26')](function(){return _0x3539ea[_0x187f('0x93')](_0x1c9299,{'transaction':_0x1901e7});})[_0x187f('0x26')](function(){return db[_0x187f('0x69')]['findOne']({'where':{'teamId':_0x2b289f}})[_0x187f('0x26')](function(_0x2cc304){if(_0x2cc304){var _0x3daaf7=_[_0x187f('0x57')](_0x1c9299,function(_0x5c5d47){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x5c5d47,'VoicePrefixId':_0x2cc304['VoicePrefixId']}});});return Promise[_0x187f('0x8d')](_0x3daaf7);}});});});}})[_0x187f('0x26')](respondWithStatusCode(_0x3fbb72,null))[_0x187f('0x43')](handleError(_0x3fbb72,null));};exports[_0x187f('0x94')]=function(_0x52bb5a,_0x48393a,_0x31ef2c){var _0x75b8a9={};var _0x528774={};var _0x4992c8;var _0x23cf9c;return db[_0x187f('0x48')]['findOne']({'where':{'id':_0x52bb5a[_0x187f('0x45')]['id']}})[_0x187f('0x26')](handleEntityNotFound(_0x48393a,null))['then'](function(_0x4063e9){if(_0x4063e9){_0x4992c8=_0x4063e9;_0x528774['model']=_[_0x187f('0x46')](db['User'][_0x187f('0x2d')]);_0x528774[_0x187f('0x30')]=_['keys'](_0x52bb5a[_0x187f('0x30')]);_0x528774[_0x187f('0x31')]=_[_0x187f('0x33')](_0x528774[_0x187f('0x2f')],_0x528774[_0x187f('0x30')]);_0x75b8a9[_0x187f('0x32')]=_[_0x187f('0x33')](_0x528774[_0x187f('0x2f')],qs[_0x187f('0x34')](_0x52bb5a['query']['fields']));_0x75b8a9[_0x187f('0x32')]=_0x75b8a9[_0x187f('0x32')][_0x187f('0x35')]?_0x75b8a9[_0x187f('0x32')]:_0x528774[_0x187f('0x2f')];_0x75b8a9[_0x187f('0x37')]=qs[_0x187f('0x38')](_0x52bb5a['query'][_0x187f('0x38')]);_0x75b8a9[_0x187f('0x3b')]=qs[_0x187f('0x31')](_['pick'](_0x52bb5a[_0x187f('0x30')],_0x528774['filters']));if(_0x52bb5a[_0x187f('0x30')][_0x187f('0x3d')]){_0x75b8a9[_0x187f('0x3b')]=_[_0x187f('0x3a')](_0x75b8a9[_0x187f('0x3b')],{'$or':_['map'](_0x75b8a9[_0x187f('0x32')],function(_0x183404){var _0x232ed9={};_0x232ed9[_0x183404]={'$like':'%'+_0x52bb5a[_0x187f('0x30')][_0x187f('0x3d')]+'%'};return _0x232ed9;})});}_0x75b8a9=_['merge']({},_0x75b8a9,_0x52bb5a[_0x187f('0x47')]);return _0x4992c8[_0x187f('0x94')](_0x75b8a9);}})['then'](function(_0x395468){if(_0x395468){_0x23cf9c=_0x395468['length'];if(!_0x52bb5a[_0x187f('0x30')][_0x187f('0x95')](_0x187f('0x36'))){_0x75b8a9[_0x187f('0x22')]=qs[_0x187f('0x22')](_0x52bb5a[_0x187f('0x30')][_0x187f('0x22')]);_0x75b8a9[_0x187f('0x20')]=qs[_0x187f('0x20')](_0x52bb5a[_0x187f('0x30')][_0x187f('0x20')]);}return _0x4992c8['getAgents'](_0x75b8a9);}})['then'](function(_0x347a43){if(_0x347a43){return _0x347a43?{'count':_0x23cf9c,'rows':_0x347a43}:null;}})[_0x187f('0x26')](respondWithResult(_0x48393a,null))[_0x187f('0x43')](handleError(_0x48393a,null));};
\ No newline at end of file
index e31309a..00bdaec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda78=['setMaxListeners','save','emit','hook','../../mysqldb','Team'];(function(_0x2c2bc3,_0x2f5f90){var _0x340a54=function(_0x580bee){while(--_0x580bee){_0x2c2bc3['push'](_0x2c2bc3['shift']());}};_0x340a54(++_0x2f5f90);}(_0xda78,0xb2));var _0x8da7=function(_0x56e5af,_0x5353db){_0x56e5af=_0x56e5af-0x0;var _0x5ee800=_0xda78[_0x56e5af];return _0x5ee800;};'use strict';var EventEmitter=require('events');var Team=require(_0x8da7('0x0'))['db'][_0x8da7('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x8da7('0x2')](0x0);var events={'afterCreate':_0x8da7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x486ad2){return function(_0x231b63,_0x41d605,_0x4987e6){TeamEvents[_0x8da7('0x4')](_0x486ad2+':'+_0x231b63['id'],_0x231b63);TeamEvents[_0x8da7('0x4')](_0x486ad2,_0x231b63);_0x4987e6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x8da7('0x5')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0xc741=['events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x588370,_0x4563b9){var _0x1b0dc1=function(_0x2a1689){while(--_0x2a1689){_0x588370['push'](_0x588370['shift']());}};_0x1b0dc1(++_0x4563b9);}(_0xc741,0xc4));var _0x1c74=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xc741[_0x2235bf];return _0x4c3a64;};'use strict';var EventEmitter=require(_0x1c74('0x0'));var Team=require(_0x1c74('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1c74('0x2'),'afterUpdate':_0x1c74('0x3'),'afterDestroy':_0x1c74('0x4')};function emitEvent(_0x556f8f){return function(_0x420035,_0x17d358,_0x18bc4d){TeamEvents['emit'](_0x556f8f+':'+_0x420035['id'],_0x420035);TeamEvents[_0x1c74('0x5')](_0x556f8f,_0x420035);_0x18bc4d(null);};}for(var e in events){if(events[_0x1c74('0x6')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index 4cd559e..2e1abca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565e=['teams','Openchannel','Sms','Voice','resolve','map','all','catch','./team.attributes','get','Queues','then','setDataValue','channel','exports','define','Team'];(function(_0x13d60f,_0xaa3f3b){var _0x3081ec=function(_0x51fe0a){while(--_0x51fe0a){_0x13d60f['push'](_0x13d60f['shift']());}};_0x3081ec(++_0xaa3f3b);}(_0x565e,0x7f));var _0xe565=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x565e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var attributes=require(_0xe565('0x0'));function getQueuesByChannel(_0x46846f,_0xba7d03){var _0x5a4698=_0xe565('0x1')+_0xba7d03+_0xe565('0x2');return _0x46846f[_0x5a4698]()[_0xe565('0x3')](function(_0x5e635d){return _['map'](_0x5e635d,function(_0x430ee3){_0x430ee3[_0xe565('0x4')](_0xe565('0x5'),_0xba7d03);return _0x430ee3;});})['catch'](function(_0x423b6e){throw _0x423b6e;});}module[_0xe565('0x6')]=function(_0x2023f3){return _0x2023f3[_0xe565('0x7')](_0xe565('0x8'),attributes,{'tableName':_0xe565('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x14c73d=this;var _0x534484=['Chat','Fax','Mail',_0xe565('0xa'),_0xe565('0xb'),_0xe565('0xc'),'Whatsapp'];return Promise[_0xe565('0xd')]()[_0xe565('0x3')](function(){var _0x2377cc=_[_0xe565('0xe')](_0x534484,function(_0x25acf6){return getQueuesByChannel(_0x14c73d,_0x25acf6);});return Promise[_0xe565('0xf')](_0x2377cc);})[_0xe565('0x10')](function(_0x4dc994){throw _0x4dc994;});}}});};
\ No newline at end of file
+var _0xb215=['then','map','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Voice','Whatsapp','resolve','all','lodash','./team.attributes','Queues'];(function(_0x1bba0c,_0x3eef45){var _0xb142bd=function(_0x2b1b9a){while(--_0x2b1b9a){_0x1bba0c['push'](_0x1bba0c['shift']());}};_0xb142bd(++_0x3eef45);}(_0xb215,0x1b2));var _0x5b21=function(_0x6ab37c,_0x110acb){_0x6ab37c=_0x6ab37c-0x0;var _0x16a820=_0xb215[_0x6ab37c];return _0x16a820;};'use strict';var _=require(_0x5b21('0x0'));var attributes=require(_0x5b21('0x1'));function getQueuesByChannel(_0x3d37b8,_0xb59f70){var _0x5c2641='get'+_0xb59f70+_0x5b21('0x2');return _0x3d37b8[_0x5c2641]()[_0x5b21('0x3')](function(_0x5cf781){return _[_0x5b21('0x4')](_0x5cf781,function(_0x41ecc7){_0x41ecc7['setDataValue']('channel',_0xb59f70);return _0x41ecc7;});})[_0x5b21('0x5')](function(_0x3daca6){throw _0x3daca6;});}module[_0x5b21('0x6')]=function(_0x2a48f9){return _0x2a48f9[_0x5b21('0x7')](_0x5b21('0x8'),attributes,{'tableName':_0x5b21('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x3e922c=this;var _0x1b9a4e=[_0x5b21('0xa'),_0x5b21('0xb'),_0x5b21('0xc'),_0x5b21('0xd'),_0x5b21('0xe'),_0x5b21('0xf'),_0x5b21('0x10')];return Promise[_0x5b21('0x11')]()[_0x5b21('0x3')](function(){var _0x13c6f6=_[_0x5b21('0x4')](_0x1b9a4e,function(_0x132e03){return getQueuesByChannel(_0x3e922c,_0x132e03);});return Promise[_0x5b21('0x12')](_0x13c6f6);})[_0x5b21('0x5')](function(_0x14ec48){throw _0x14ec48;});}}});};
\ No newline at end of file
index 0489a9c..5ddde92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca39=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x48fa3f,_0x700760){var _0x16037d=function(_0x23fe27){while(--_0x23fe27){_0x48fa3f['push'](_0x48fa3f['shift']());}};_0x16037d(++_0x700760);}(_0xca39,0x1b3));var _0x9ca3=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xca39[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x9ca3('0x0'));var util=require(_0x9ca3('0x1'));var moment=require(_0x9ca3('0x2'));var BPromise=require(_0x9ca3('0x3'));var rs=require(_0x9ca3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9ca3('0x5'));var logger=require(_0x9ca3('0x6'))(_0x9ca3('0x7'));var config=require(_0x9ca3('0x8'));var jayson=require(_0x9ca3('0x9'));var client=jayson[_0x9ca3('0xa')][_0x9ca3('0xb')]({'port':0x232a});config[_0x9ca3('0xc')]=_[_0x9ca3('0xd')](config['redis'],{'host':_0x9ca3('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9ca3('0xc')]));require(_0x9ca3('0xf'))[_0x9ca3('0x10')](socket);function respondWithRpcPromise(_0x99a23d,_0x22cb13,_0x6993b0){return new BPromise(function(_0x38defa,_0x40985f){return client[_0x9ca3('0x11')](_0x99a23d,_0x6993b0)['then'](function(_0x271a43){logger['info'](_0x9ca3('0x12'),_0x22cb13,_0x9ca3('0x13'));logger[_0x9ca3('0x14')](_0x9ca3('0x15'),_0x22cb13,_0x9ca3('0x13'),JSON[_0x9ca3('0x16')](_0x271a43));if(_0x271a43[_0x9ca3('0x17')]){if(_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x18')]===0x1f4){logger['error'](_0x9ca3('0x12'),_0x22cb13,_0x271a43['error']['message']);return _0x40985f(_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x19')]);}logger[_0x9ca3('0x17')](_0x9ca3('0x12'),_0x22cb13,_0x271a43[_0x9ca3('0x17')][_0x9ca3('0x19')]);return _0x38defa(_0x271a43[_0x9ca3('0x17')]['message']);}else{logger[_0x9ca3('0x1a')]('Team,\x20%s,\x20%s',_0x22cb13,_0x9ca3('0x13'));_0x38defa(_0x271a43[_0x9ca3('0x1b')]['message']);}})[_0x9ca3('0x1c')](function(_0x1f1ab0){logger[_0x9ca3('0x17')]('Team,\x20%s,\x20%s',_0x22cb13,_0x1f1ab0);_0x40985f(_0x1f1ab0);});});}
\ No newline at end of file
+var _0x53c8=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','redis','defaults','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x5a1187,_0x132cb8){var _0x303c01=function(_0xcfb6fd){while(--_0xcfb6fd){_0x5a1187['push'](_0x5a1187['shift']());}};_0x303c01(++_0x132cb8);}(_0x53c8,0xdc));var _0x853c=function(_0xef4ef0,_0x3c72f9){_0xef4ef0=_0xef4ef0-0x0;var _0x39b60b=_0x53c8[_0xef4ef0];return _0x39b60b;};'use strict';var _=require(_0x853c('0x0'));var util=require(_0x853c('0x1'));var moment=require(_0x853c('0x2'));var BPromise=require(_0x853c('0x3'));var rs=require(_0x853c('0x4'));var fs=require('fs');var Redis=require(_0x853c('0x5'));var db=require(_0x853c('0x6'))['db'];var utils=require(_0x853c('0x7'));var logger=require('../../config/logger')(_0x853c('0x8'));var config=require('../../config/environment');var jayson=require(_0x853c('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x853c('0xa')]=_[_0x853c('0xb')](config[_0x853c('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./team.socket')[_0x853c('0xc')](socket);function respondWithRpcPromise(_0x4a934a,_0x20d1d1,_0x438ac2){return new BPromise(function(_0x58ef74,_0x18bcac){return client[_0x853c('0xd')](_0x4a934a,_0x438ac2)[_0x853c('0xe')](function(_0x2c29ff){logger[_0x853c('0xf')](_0x853c('0x10'),_0x20d1d1,_0x853c('0x11'));logger[_0x853c('0x12')](_0x853c('0x13'),_0x20d1d1,_0x853c('0x11'),JSON[_0x853c('0x14')](_0x2c29ff));if(_0x2c29ff[_0x853c('0x15')]){if(_0x2c29ff['error']['code']===0x1f4){logger[_0x853c('0x15')](_0x853c('0x10'),_0x20d1d1,_0x2c29ff[_0x853c('0x15')][_0x853c('0x16')]);return _0x18bcac(_0x2c29ff[_0x853c('0x15')][_0x853c('0x16')]);}logger['error'](_0x853c('0x10'),_0x20d1d1,_0x2c29ff[_0x853c('0x15')]['message']);return _0x58ef74(_0x2c29ff['error']['message']);}else{logger[_0x853c('0xf')]('Team,\x20%s,\x20%s',_0x20d1d1,_0x853c('0x11'));_0x58ef74(_0x2c29ff[_0x853c('0x17')]['message']);}})[_0x853c('0x18')](function(_0x3eaa31){logger['error'](_0x853c('0x10'),_0x20d1d1,_0x3eaa31);_0x18bcac(_0x3eaa31);});});}
\ No newline at end of file
index bd3fe95..3e102c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4e=['length','team:','./team.events','save','remove','emit','removeListener','register'];(function(_0x596e98,_0xc326c9){var _0x1c09ac=function(_0x3d839d){while(--_0x3d839d){_0x596e98['push'](_0x596e98['shift']());}};_0x1c09ac(++_0xc326c9);}(_0xee4e,0x122));var _0xeee4=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xee4e[_0x4243a3];return _0x1b2a33;};'use strict';var TeamEvents=require(_0xeee4('0x0'));var events=[_0xeee4('0x1'),_0xeee4('0x2'),'update'];function createListener(_0x171016,_0x827900){return function(_0x33e574){_0x827900[_0xeee4('0x3')](_0x171016,_0x33e574);};}function removeListener(_0x2012a1,_0x30fe5a){return function(){TeamEvents[_0xeee4('0x4')](_0x2012a1,_0x30fe5a);};}exports[_0xeee4('0x5')]=function(_0x5564f7){for(var _0xcf3bbd=0x0,_0x148296=events[_0xeee4('0x6')];_0xcf3bbd<_0x148296;_0xcf3bbd++){var _0x593262=events[_0xcf3bbd];var _0x25f0ed=createListener(_0xeee4('0x7')+_0x593262,_0x5564f7);TeamEvents['on'](_0x593262,_0x25f0ed);}};
\ No newline at end of file
+var _0x7c59=['emit','removeListener','register','save','remove','update'];(function(_0x2cd375,_0x5e16a3){var _0x15b7d8=function(_0xc210f2){while(--_0xc210f2){_0x2cd375['push'](_0x2cd375['shift']());}};_0x15b7d8(++_0x5e16a3);}(_0x7c59,0x147));var _0x97c5=function(_0x3e95f9,_0x3809b5){_0x3e95f9=_0x3e95f9-0x0;var _0x470a39=_0x7c59[_0x3e95f9];return _0x470a39;};'use strict';var TeamEvents=require('./team.events');var events=[_0x97c5('0x0'),_0x97c5('0x1'),_0x97c5('0x2')];function createListener(_0x35025b,_0x5b31f4){return function(_0x3bd97d){_0x5b31f4[_0x97c5('0x3')](_0x35025b,_0x3bd97d);};}function removeListener(_0x4982de,_0x574b06){return function(){TeamEvents[_0x97c5('0x4')](_0x4982de,_0x574b06);};}exports[_0x97c5('0x5')]=function(_0x29832f){for(var _0xb7c5e1=0x0,_0x13663d=events['length'];_0xb7c5e1<_0x13663d;_0xb7c5e1++){var _0x150dd6=events[_0xb7c5e1];var _0x58d9b0=createListener('team:'+_0x150dd6,_0x29832f);TeamEvents['on'](_0x150dd6,_0x58d9b0);}};
\ No newline at end of file
index ddf2a16..4ccd3fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdadd=['sequelize','INTEGER'];(function(_0x23fd1b,_0x469cab){var _0x304e83=function(_0x5c0d6a){while(--_0x5c0d6a){_0x23fd1b['push'](_0x23fd1b['shift']());}};_0x304e83(++_0x469cab);}(_0xdadd,0x1c8));var _0xddad=function(_0x482431,_0x22caff){_0x482431=_0x482431-0x0;var _0x484ade=_0xdadd[_0x482431];return _0x484ade;};'use strict';var Sequelize=require(_0xddad('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xddad('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xb7c8=['INTEGER','exports'];(function(_0xe4fe35,_0x348f9b){var _0x267c40=function(_0x37e5b1){while(--_0x37e5b1){_0xe4fe35['push'](_0xe4fe35['shift']());}};_0x267c40(++_0x348f9b);}(_0xb7c8,0x119));var _0x8b7c=function(_0x896c76,_0x41b017){_0x896c76=_0x896c76-0x0;var _0x405574=_0xb7c8[_0x896c76];return _0x405574;};'use strict';var Sequelize=require('sequelize');module[_0x8b7c('0x0')]={'TeamId':{'type':Sequelize[_0x8b7c('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x8b7c('0x1')]}};
\ No newline at end of file
index 0b709be..c871b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f68=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','team_has_voice_prefixes','util'];(function(_0x5788ed,_0x35e0f1){var _0x5d2351=function(_0x421239){while(--_0x421239){_0x5788ed['push'](_0x5788ed['shift']());}};_0x5d2351(++_0x35e0f1);}(_0x2f68,0x12b));var _0x82f6=function(_0x105378,_0x449ce7){_0x105378=_0x105378-0x0;var _0x4a754c=_0x2f68[_0x105378];return _0x4a754c;};'use strict';var _=require('lodash');var util=require(_0x82f6('0x0'));var logger=require(_0x82f6('0x1'))(_0x82f6('0x2'));var moment=require(_0x82f6('0x3'));var BPromise=require(_0x82f6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x82f6('0x5'));var rimraf=require(_0x82f6('0x6'));var config=require(_0x82f6('0x7'));var attributes=require(_0x82f6('0x8'));module[_0x82f6('0x9')]=function(_0x5ba356,_0x5d37fe){return _0x5ba356[_0x82f6('0xa')]('TeamVoicePrefix',attributes,{'tableName':_0x82f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xab26=['lodash','util','../../config/logger','moment','bluebird','rimraf','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix'];(function(_0x463731,_0x53fb59){var _0x509486=function(_0x384496){while(--_0x384496){_0x463731['push'](_0x463731['shift']());}};_0x509486(++_0x53fb59);}(_0xab26,0xd2));var _0x6ab2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xab26[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6ab2('0x0'));var util=require(_0x6ab2('0x1'));var logger=require(_0x6ab2('0x2'))('api');var moment=require(_0x6ab2('0x3'));var BPromise=require(_0x6ab2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6ab2('0x5'));var config=require('../../config/environment');var attributes=require(_0x6ab2('0x6'));module[_0x6ab2('0x7')]=function(_0x31c9f1,_0x56dc80){return _0x31c9f1[_0x6ab2('0x8')](_0x6ab2('0x9'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0a5136..be964ca 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(_0x4a245c,_0x5c4c98){var _0x3c68c0=function(_0x425155){while(--_0x425155){_0x4a245c['push'](_0x4a245c['shift']());}};_0x3c68c0(++_0x5c4c98);}(_0x70e0,0x17b));var _0x070e=function(_0x4bed1d,_0x542638){_0x4bed1d=_0x4bed1d-0x0;var _0x417ade=_0x70e0[_0x4bed1d];return _0x417ade;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x56a58c,_0x5eb16d){var _0x2b8fe3=function(_0x3996ae){while(--_0x3996ae){_0x56a58c['push'](_0x56a58c['shift']());}};_0x2b8fe3(++_0x5eb16d);}(_0x70e0,0x17b));var _0x070e=function(_0x893212,_0x2e74f8){_0x893212=_0x893212-0x0;var _0x33844a=_0x70e0[_0x893212];return _0x33844a;};'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 cf08a90..1ef236a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae5=['INTEGER','sequelize','exports'];(function(_0x3e750b,_0x2070d9){var _0x1e2ac3=function(_0x214aca){while(--_0x214aca){_0x3e750b['push'](_0x3e750b['shift']());}};_0x1e2ac3(++_0x2070d9);}(_0x7ae5,0x133));var _0x57ae=function(_0x4fabbe,_0xc514f3){_0x4fabbe=_0x4fabbe-0x0;var _0x5510dd=_0x7ae5[_0x4fabbe];return _0x5510dd;};'use strict';var Sequelize=require(_0x57ae('0x0'));module[_0x57ae('0x1')]={'penalty':{'type':Sequelize[_0x57ae('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x897a=['sequelize'];(function(_0x2aa8b3,_0x1129ca){var _0x22feab=function(_0x4c5314){while(--_0x4c5314){_0x2aa8b3['push'](_0x2aa8b3['shift']());}};_0x22feab(++_0x1129ca);}(_0x897a,0xe3));var _0xa897=function(_0x4c07fe,_0x43fd6f){_0x4c07fe=_0x4c07fe-0x0;var _0x1744dd=_0x897a[_0x4c07fe];return _0x1744dd;};'use strict';var Sequelize=require(_0xa897('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 46c7a24..337a610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de4=['path','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x8a2c26,_0x246010){var _0x2ec5e9=function(_0x532377){while(--_0x532377){_0x8a2c26['push'](_0x8a2c26['shift']());}};_0x2ec5e9(++_0x246010);}(_0x1de4,0x94));var _0x41de=function(_0x3a9cdc,_0x20f028){_0x3a9cdc=_0x3a9cdc-0x0;var _0x1ad79d=_0x1de4[_0x3a9cdc];return _0x1ad79d;};'use strict';var _=require(_0x41de('0x0'));var util=require(_0x41de('0x1'));var logger=require(_0x41de('0x2'))(_0x41de('0x3'));var moment=require('moment');var BPromise=require(_0x41de('0x4'));var rp=require(_0x41de('0x5'));var fs=require('fs');var path=require(_0x41de('0x6'));var rimraf=require('rimraf');var config=require(_0x41de('0x7'));var attributes=require(_0x41de('0x8'));module['exports']=function(_0x2e7196,_0x122565){return _0x2e7196[_0x41de('0x9')](_0x41de('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe062=['moment','bluebird','rimraf','../../config/environment','team_has_voice_queues','lodash','util','api'];(function(_0x3bfa48,_0x3b0d43){var _0x4fb73b=function(_0x79452c){while(--_0x79452c){_0x3bfa48['push'](_0x3bfa48['shift']());}};_0x4fb73b(++_0x3b0d43);}(_0xe062,0xd5));var _0x2e06=function(_0x38c271,_0x2c47b4){_0x38c271=_0x38c271-0x0;var _0x473162=_0xe062[_0x38c271];return _0x473162;};'use strict';var _=require(_0x2e06('0x0'));var util=require(_0x2e06('0x1'));var logger=require('../../config/logger')(_0x2e06('0x2'));var moment=require(_0x2e06('0x3'));var BPromise=require(_0x2e06('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2e06('0x5'));var config=require(_0x2e06('0x6'));var attributes=require('./teamVoiceQueue.attributes');module['exports']=function(_0x912daf,_0x31d2a3){return _0x912daf['define']('TeamVoiceQueue',attributes,{'tableName':_0x2e06('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5eeba4b..c539008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x447b=['info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x447b,0xe4));var _0xb447=function(_0xe550f7,_0x13064a){_0xe550f7=_0xe550f7-0x0;var _0x54f8e6=_0x447b[_0xe550f7];return _0x54f8e6;};'use strict';var _=require(_0xb447('0x0'));var util=require(_0xb447('0x1'));var moment=require('moment');var BPromise=require(_0xb447('0x2'));var rs=require(_0xb447('0x3'));var fs=require('fs');var Redis=require(_0xb447('0x4'));var db=require(_0xb447('0x5'))['db'];var utils=require(_0xb447('0x6'));var logger=require(_0xb447('0x7'))(_0xb447('0x8'));var config=require(_0xb447('0x9'));var jayson=require(_0xb447('0xa'));var client=jayson[_0xb447('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e0f42,_0x2e919c,_0x588700){return new BPromise(function(_0x3ea00b,_0x210bc5){return client[_0xb447('0xc')](_0x4e0f42,_0x588700)[_0xb447('0xd')](function(_0x1972c9){logger['info'](_0xb447('0xe'),_0x2e919c,_0xb447('0xf'));logger[_0xb447('0x10')](_0xb447('0x11'),_0x2e919c,'request\x20sent',JSON[_0xb447('0x12')](_0x1972c9));if(_0x1972c9[_0xb447('0x13')]){if(_0x1972c9[_0xb447('0x13')][_0xb447('0x14')]===0x1f4){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);return _0x210bc5(_0x1972c9[_0xb447('0x13')]['message']);}logger['error'](_0xb447('0xe'),_0x2e919c,_0x1972c9[_0xb447('0x13')]['message']);return _0x3ea00b(_0x1972c9[_0xb447('0x13')][_0xb447('0x15')]);}else{logger[_0xb447('0x16')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2e919c,'request\x20sent');_0x3ea00b(_0x1972c9[_0xb447('0x17')]['message']);}})[_0xb447('0x18')](function(_0x5c98a9){logger[_0xb447('0x13')](_0xb447('0xe'),_0x2e919c,_0x5c98a9);_0x210bc5(_0x5c98a9);});});}
\ No newline at end of file
+var _0x00d6=['message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x00d6,0x1e5));var _0x600d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x00d6[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x600d('0x0'));var util=require(_0x600d('0x1'));var moment=require(_0x600d('0x2'));var BPromise=require(_0x600d('0x3'));var rs=require(_0x600d('0x4'));var fs=require('fs');var Redis=require(_0x600d('0x5'));var db=require(_0x600d('0x6'))['db'];var utils=require(_0x600d('0x7'));var logger=require(_0x600d('0x8'))(_0x600d('0x9'));var config=require(_0x600d('0xa'));var jayson=require(_0x600d('0xb'));var client=jayson[_0x600d('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d6a0c,_0x43f76e,_0x5de536){return new BPromise(function(_0x260fc9,_0x1c2655){return client[_0x600d('0xd')](_0x5d6a0c,_0x5de536)[_0x600d('0xe')](function(_0x89077){logger[_0x600d('0xf')](_0x600d('0x10'),_0x43f76e,_0x600d('0x11'));logger['debug'](_0x600d('0x12'),_0x43f76e,_0x600d('0x11'),JSON[_0x600d('0x13')](_0x89077));if(_0x89077[_0x600d('0x14')]){if(_0x89077[_0x600d('0x14')]['code']===0x1f4){logger['error'](_0x600d('0x10'),_0x43f76e,_0x89077[_0x600d('0x14')][_0x600d('0x15')]);return _0x1c2655(_0x89077[_0x600d('0x14')][_0x600d('0x15')]);}logger[_0x600d('0x14')](_0x600d('0x10'),_0x43f76e,_0x89077[_0x600d('0x14')]['message']);return _0x260fc9(_0x89077[_0x600d('0x14')][_0x600d('0x15')]);}else{logger[_0x600d('0xf')](_0x600d('0x10'),_0x43f76e,_0x600d('0x11'));_0x260fc9(_0x89077['result'][_0x600d('0x15')]);}})['catch'](function(_0x35fd38){logger['error'](_0x600d('0x10'),_0x43f76e,_0x35fd38);_0x1c2655(_0x35fd38);});});}
\ No newline at end of file
index 13da1b8..ad89e85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaee=['/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','get','isAuthenticated','index'];(function(_0x279755,_0x45b5c2){var _0x1e2295=function(_0x4129c8){while(--_0x4129c8){_0x279755['push'](_0x279755['shift']());}};_0x1e2295(++_0x45b5c2);}(_0xaaee,0xa9));var _0xeaae=function(_0x5035c6,_0x54cb8e){_0x5035c6=_0x5035c6-0x0;var _0x3665e8=_0xaaee[_0x5035c6];return _0x3665e8;};'use strict';var multer=require(_0xeaae('0x0'));var util=require('util');var path=require(_0xeaae('0x1'));var timeout=require(_0xeaae('0x2'));var express=require('express');var router=express[_0xeaae('0x3')]();var fs_extra=require(_0xeaae('0x4'));var auth=require(_0xeaae('0x5'));var interaction=require(_0xeaae('0x6'));var config=require('../../config/environment');var controller=require(_0xeaae('0x7'));router[_0xeaae('0x8')]('/',auth[_0xeaae('0x9')](),controller[_0xeaae('0xa')]);router[_0xeaae('0x8')](_0xeaae('0xb'),auth['isAuthenticated'](),controller[_0xeaae('0xc')]);router[_0xeaae('0xd')]('/',auth[_0xeaae('0x9')](),controller[_0xeaae('0xe')]);router[_0xeaae('0xf')](_0xeaae('0xb'),auth[_0xeaae('0x9')](),controller[_0xeaae('0x10')]);router[_0xeaae('0x11')]('/:id',auth[_0xeaae('0x9')](),controller[_0xeaae('0x12')]);module[_0xeaae('0x13')]=router;
\ No newline at end of file
+var _0xaf6e=['put','/:id','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','post','create'];(function(_0x4e1bb5,_0x1c4c24){var _0x4c02b0=function(_0x3310ed){while(--_0x3310ed){_0x4e1bb5['push'](_0x4e1bb5['shift']());}};_0x4c02b0(++_0x1c4c24);}(_0xaf6e,0x16e));var _0xeaf6=function(_0x5759ba,_0x394467){_0x5759ba=_0x5759ba-0x0;var _0x33032d=_0xaf6e[_0x5759ba];return _0x33032d;};'use strict';var multer=require(_0xeaf6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xeaf6('0x1'));var express=require(_0xeaf6('0x2'));var router=express[_0xeaf6('0x3')]();var fs_extra=require(_0xeaf6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xeaf6('0x5'));var config=require(_0xeaf6('0x6'));var controller=require(_0xeaf6('0x7'));router[_0xeaf6('0x8')]('/',auth[_0xeaf6('0x9')](),controller['index']);router['get']('/:id',auth[_0xeaf6('0x9')](),controller['show']);router[_0xeaf6('0xa')]('/',auth['isAuthenticated'](),controller[_0xeaf6('0xb')]);router[_0xeaf6('0xc')](_0xeaf6('0xd'),auth[_0xeaf6('0x9')](),controller[_0xeaf6('0xe')]);router[_0xeaf6('0xf')](_0xeaf6('0xd'),auth[_0xeaf6('0x9')](),controller[_0xeaf6('0x10')]);module[_0xeaf6('0x11')]=router;
\ No newline at end of file
index b85a932..0014a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1340=['exports','STRING','TEXT'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x1340,0x18c));var _0x0134=function(_0x51c889,_0x5a2d78){_0x51c889=_0x51c889-0x0;var _0x579a93=_0x1340[_0x51c889];return _0x579a93;};'use strict';var Sequelize=require('sequelize');module[_0x0134('0x0')]={'name':{'type':Sequelize[_0x0134('0x1')]},'description':{'type':Sequelize[_0x0134('0x1')]},'html':{'type':Sequelize[_0x0134('0x2')]}};
\ No newline at end of file
+var _0xe9eb=['TEXT','STRING'];(function(_0x3c79f2,_0x4d8350){var _0x144f53=function(_0x106d4e){while(--_0x106d4e){_0x3c79f2['push'](_0x3c79f2['shift']());}};_0x144f53(++_0x4d8350);}(_0xe9eb,0x87));var _0xbe9e=function(_0x32b308,_0x2c7f89){_0x32b308=_0x32b308-0x0;var _0x5736d5=_0xe9eb[_0x32b308];return _0x5736d5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xbe9e('0x0')]},'description':{'type':Sequelize[_0xbe9e('0x0')]},'html':{'type':Sequelize[_0xbe9e('0x1')]}};
\ No newline at end of file
index 367749e..8b43eb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be6=['status','json','offset','undefined','limit','Content-Range','apply','reject','save','update','destroy','then','get','Templates','UserProfileResource','name','index','map','Template','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x0be6,0x12d));var _0x60be=function(_0x52dc2c,_0x10ef92){_0x52dc2c=_0x52dc2c-0x0;var _0x3aa51e=_0x0be6[_0x52dc2c];return _0x3aa51e;};'use strict';var emlformat=require(_0x60be('0x0'));var rimraf=require(_0x60be('0x1'));var zipdir=require(_0x60be('0x2'));var jsonpatch=require(_0x60be('0x3'));var rp=require(_0x60be('0x4'));var moment=require(_0x60be('0x5'));var BPromise=require(_0x60be('0x6'));var Mustache=require(_0x60be('0x7'));var util=require(_0x60be('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(_0x60be('0x9'));var _=require(_0x60be('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x60be('0xb'));var toCsv=require(_0x60be('0xc'));var querystring=require(_0x60be('0xd'));var Papa=require(_0x60be('0xe'));var Redis=require(_0x60be('0xf'));var authService=require(_0x60be('0x10'));var qs=require(_0x60be('0x11'));var as=require(_0x60be('0x12'));var hardwareService=require(_0x60be('0x13'));var logger=require(_0x60be('0x14'))(_0x60be('0x15'));var utils=require(_0x60be('0x16'));var config=require(_0x60be('0x17'));var licenseUtil=require(_0x60be('0x18'));var db=require(_0x60be('0x19'))['db'];function respondWithStatusCode(_0x466132,_0x217bb4){_0x217bb4=_0x217bb4||0xcc;return function(_0x1293bd){if(_0x1293bd){return _0x466132[_0x60be('0x1a')](_0x217bb4);}return _0x466132[_0x60be('0x1b')](_0x217bb4)['end']();};}function respondWithResult(_0x4237c3,_0x39ede1){_0x39ede1=_0x39ede1||0xc8;return function(_0x53c3f5){if(_0x53c3f5){return _0x4237c3[_0x60be('0x1b')](_0x39ede1)[_0x60be('0x1c')](_0x53c3f5);}};}function respondWithFilteredResult(_0x1fdecc,_0x4f9b0f){return function(_0x2dfc2c){if(_0x2dfc2c){var _0x258517=typeof _0x4f9b0f[_0x60be('0x1d')]===_0x60be('0x1e')&&typeof _0x4f9b0f['limit']===_0x60be('0x1e');var _0xc85502=_0x2dfc2c['count'];var _0x57c6f1=_0x258517?0x0:_0x4f9b0f[_0x60be('0x1d')];var _0x1eb3db=_0x258517?_0x2dfc2c['count']:_0x4f9b0f[_0x60be('0x1d')]+_0x4f9b0f[_0x60be('0x1f')];var _0x3bb88a;if(_0x1eb3db>=_0xc85502){_0x1eb3db=_0xc85502;_0x3bb88a=0xc8;}else{_0x3bb88a=0xce;}_0x1fdecc['status'](_0x3bb88a);return _0x1fdecc['set'](_0x60be('0x20'),_0x57c6f1+'-'+_0x1eb3db+'/'+_0xc85502)[_0x60be('0x1c')](_0x2dfc2c);}return null;};}function patchUpdates(_0x937a94){return function(_0x48a55d){try{jsonpatch[_0x60be('0x21')](_0x48a55d,_0x937a94,!![]);}catch(_0x23cec6){return BPromise[_0x60be('0x22')](_0x23cec6);}return _0x48a55d[_0x60be('0x23')]();};}function saveUpdates(_0x254c41,_0x56a50e){return function(_0x19caef){if(_0x19caef){return _0x19caef[_0x60be('0x24')](_0x254c41)['then'](function(_0x346d1f){return _0x346d1f;});}return null;};}function removeEntity(_0x4839d9,_0x104989){return function(_0x414d4a){if(_0x414d4a){return _0x414d4a[_0x60be('0x25')]()[_0x60be('0x26')](function(){var _0x4d460a=_0x414d4a[_0x60be('0x27')]({'plain':!![]});var _0x2c70b9=_0x60be('0x28');return db[_0x60be('0x29')][_0x60be('0x25')]({'where':{'type':_0x2c70b9,'resourceId':_0x4d460a['id']}})[_0x60be('0x26')](function(){return _0x414d4a;});})[_0x60be('0x26')](function(){_0x4839d9[_0x60be('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x576220,_0x33149e){return function(_0x4f1e3c){if(!_0x4f1e3c){_0x576220[_0x60be('0x1a')](0x194);}return _0x4f1e3c;};}function handleError(_0x56f6f5,_0xf4ffa9){_0xf4ffa9=_0xf4ffa9||0x1f4;return function(_0x2b1091){logger['error'](_0x2b1091['stack']);if(_0x2b1091[_0x60be('0x2a')]){delete _0x2b1091[_0x60be('0x2a')];}_0x56f6f5[_0x60be('0x1b')](_0xf4ffa9)['send'](_0x2b1091);};}exports[_0x60be('0x2b')]=function(_0x1f12d1,_0xcc306e){var _0x224430={},_0x588ce3={},_0xb07d48={'count':0x0,'rows':[]};var _0x166e38=_[_0x60be('0x2c')](db[_0x60be('0x2d')][_0x60be('0x2e')],function(_0x26a5ea){return{'name':_0x26a5ea[_0x60be('0x2f')],'type':_0x26a5ea[_0x60be('0x30')][_0x60be('0x31')]};});_0x588ce3['model']=_[_0x60be('0x2c')](_0x166e38,_0x60be('0x2a'));_0x588ce3[_0x60be('0x32')]=_[_0x60be('0x33')](_0x1f12d1[_0x60be('0x32')]);_0x588ce3[_0x60be('0x34')]=_[_0x60be('0x35')](_0x588ce3[_0x60be('0x36')],_0x588ce3[_0x60be('0x32')]);_0x224430[_0x60be('0x37')]=_[_0x60be('0x35')](_0x588ce3[_0x60be('0x36')],qs[_0x60be('0x38')](_0x1f12d1[_0x60be('0x32')][_0x60be('0x38')]));_0x224430['attributes']=_0x224430[_0x60be('0x37')]['length']?_0x224430[_0x60be('0x37')]:_0x588ce3[_0x60be('0x36')];if(!_0x1f12d1[_0x60be('0x32')][_0x60be('0x39')](_0x60be('0x3a'))){_0x224430[_0x60be('0x1f')]=qs[_0x60be('0x1f')](_0x1f12d1['query']['limit']);_0x224430[_0x60be('0x1d')]=qs['offset'](_0x1f12d1[_0x60be('0x32')][_0x60be('0x1d')]);}_0x224430['order']=qs[_0x60be('0x3b')](_0x1f12d1['query']['sort']);_0x224430[_0x60be('0x3c')]=qs[_0x60be('0x34')](_['pick'](_0x1f12d1[_0x60be('0x32')],_0x588ce3[_0x60be('0x34')]),_0x166e38);if(_0x1f12d1[_0x60be('0x32')][_0x60be('0x3d')]){_0x224430[_0x60be('0x3c')]=_[_0x60be('0x3e')](_0x224430[_0x60be('0x3c')],{'$or':_[_0x60be('0x2c')](_0x166e38,function(_0x3ee779){if(_0x3ee779[_0x60be('0x30')]!=='VIRTUAL'){var _0x544faf={};_0x544faf[_0x3ee779[_0x60be('0x2a')]]={'$like':'%'+_0x1f12d1[_0x60be('0x32')]['filter']+'%'};return _0x544faf;}})});}_0x224430=_[_0x60be('0x3e')]({},_0x224430,_0x1f12d1[_0x60be('0x3f')]);var _0x5ce0ad={'where':_0x224430[_0x60be('0x3c')]};return db[_0x60be('0x2d')][_0x60be('0x40')](_0x5ce0ad)[_0x60be('0x26')](function(_0x245f30){_0xb07d48[_0x60be('0x40')]=_0x245f30;if(_0x1f12d1[_0x60be('0x32')][_0x60be('0x41')]){_0x224430[_0x60be('0x42')]=[{'all':!![]}];}return db[_0x60be('0x2d')][_0x60be('0x43')](_0x224430);})[_0x60be('0x26')](function(_0x442122){_0xb07d48[_0x60be('0x44')]=_0x442122;return _0xb07d48;})[_0x60be('0x26')](respondWithFilteredResult(_0xcc306e,_0x224430))[_0x60be('0x45')](handleError(_0xcc306e,null));};exports[_0x60be('0x46')]=function(_0x566027,_0x28a3a7){var _0x284ec6={'raw':!![],'where':{'id':_0x566027['params']['id']}},_0x238960={};_0x238960[_0x60be('0x36')]=_['keys'](db['Template'][_0x60be('0x2e')]);_0x238960[_0x60be('0x32')]=_[_0x60be('0x33')](_0x566027[_0x60be('0x32')]);_0x238960['filters']=_[_0x60be('0x35')](_0x238960['model'],_0x238960[_0x60be('0x32')]);_0x284ec6[_0x60be('0x37')]=_['intersection'](_0x238960[_0x60be('0x36')],qs['fields'](_0x566027[_0x60be('0x32')][_0x60be('0x38')]));_0x284ec6[_0x60be('0x37')]=_0x284ec6[_0x60be('0x37')][_0x60be('0x47')]?_0x284ec6['attributes']:_0x238960[_0x60be('0x36')];if(_0x566027[_0x60be('0x32')][_0x60be('0x41')]){_0x284ec6[_0x60be('0x42')]=[{'all':!![]}];}_0x284ec6=_['merge']({},_0x284ec6,_0x566027[_0x60be('0x3f')]);return db[_0x60be('0x2d')][_0x60be('0x48')](_0x284ec6)['then'](handleEntityNotFound(_0x28a3a7,null))[_0x60be('0x26')](respondWithResult(_0x28a3a7,null))[_0x60be('0x45')](handleError(_0x28a3a7,null));};exports[_0x60be('0x49')]=function(_0x3ea297,_0x56c434){return db[_0x60be('0x2d')][_0x60be('0x49')](_0x3ea297[_0x60be('0x4a')],{})[_0x60be('0x26')](function(_0x1be24f){var _0x2bb166=_0x3ea297['user'][_0x60be('0x27')]({'plain':!![]});if(!_0x2bb166)throw new Error(_0x60be('0x4b'));if(_0x2bb166[_0x60be('0x4c')]===_0x60be('0x4d')){var _0x2e97e6=_0x1be24f['get']({'plain':!![]});var _0x187149='Templates';return db[_0x60be('0x4e')][_0x60be('0x48')]({'where':{'name':_0x187149,'userProfileId':_0x2bb166[_0x60be('0x4f')]},'raw':!![]})[_0x60be('0x26')](function(_0x48b1e3){if(_0x48b1e3&&_0x48b1e3[_0x60be('0x50')]===0x0){return db[_0x60be('0x29')][_0x60be('0x49')]({'name':_0x2e97e6[_0x60be('0x2a')],'resourceId':_0x2e97e6['id'],'type':_0x48b1e3[_0x60be('0x2a')],'sectionId':_0x48b1e3['id']},{})[_0x60be('0x26')](function(){return _0x1be24f;});}else{return _0x1be24f;}})[_0x60be('0x45')](function(_0xb3c3d0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xb3c3d0);throw _0xb3c3d0;});}return _0x1be24f;})[_0x60be('0x26')](respondWithResult(_0x56c434,0xc9))['catch'](handleError(_0x56c434,null));};exports[_0x60be('0x24')]=function(_0x338db6,_0x3a3346){if(_0x338db6[_0x60be('0x4a')]['id']){delete _0x338db6['body']['id'];}return db[_0x60be('0x2d')][_0x60be('0x48')]({'where':{'id':_0x338db6[_0x60be('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a3346,null))['then'](saveUpdates(_0x338db6[_0x60be('0x4a')],null))[_0x60be('0x26')](respondWithResult(_0x3a3346,null))['catch'](handleError(_0x3a3346,null));};exports[_0x60be('0x25')]=function(_0xeb16c0,_0x489c83){return db['Template'][_0x60be('0x48')]({'where':{'id':_0xeb16c0['params']['id']}})[_0x60be('0x26')](handleEntityNotFound(_0x489c83,null))[_0x60be('0x26')](removeEntity(_0x489c83,null))['catch'](handleError(_0x489c83,null));};
\ No newline at end of file
+var _0xf432=['where','filters','pick','filter','map','VIRTUAL','merge','Template','includeAll','include','findAll','rows','show','params','fields','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','update','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','then','destroy','get','Templates','UserProfileResource','error','stack','name','index','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort'];(function(_0x53c61a,_0x30f6cb){var _0x1343d2=function(_0x1ad8cb){while(--_0x1ad8cb){_0x53c61a['push'](_0x53c61a['shift']());}};_0x1343d2(++_0x30f6cb);}(_0xf432,0x10c));var _0x2f43=function(_0x4d7df6,_0x3f6139){_0x4d7df6=_0x4d7df6-0x0;var _0x4c0d29=_0xf432[_0x4d7df6];return _0x4c0d29;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2f43('0x0'));var zipdir=require(_0x2f43('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2f43('0x2'));var moment=require(_0x2f43('0x3'));var BPromise=require(_0x2f43('0x4'));var Mustache=require(_0x2f43('0x5'));var util=require(_0x2f43('0x6'));var path=require(_0x2f43('0x7'));var sox=require(_0x2f43('0x8'));var csv=require(_0x2f43('0x9'));var ejs=require(_0x2f43('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2f43('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2f43('0xc'));var toCsv=require(_0x2f43('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2f43('0xd'));var authService=require(_0x2f43('0xe'));var qs=require(_0x2f43('0xf'));var as=require(_0x2f43('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2f43('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2f43('0x12'));var db=require(_0x2f43('0x13'))['db'];function respondWithStatusCode(_0x32eea7,_0x412b97){_0x412b97=_0x412b97||0xcc;return function(_0x57dd2a){if(_0x57dd2a){return _0x32eea7[_0x2f43('0x14')](_0x412b97);}return _0x32eea7[_0x2f43('0x15')](_0x412b97)[_0x2f43('0x16')]();};}function respondWithResult(_0x9bb1ab,_0x99e16){_0x99e16=_0x99e16||0xc8;return function(_0x1d8f55){if(_0x1d8f55){return _0x9bb1ab[_0x2f43('0x15')](_0x99e16)[_0x2f43('0x17')](_0x1d8f55);}};}function respondWithFilteredResult(_0x263a5c,_0x59d5b2){return function(_0x568793){if(_0x568793){var _0x31b9f5=typeof _0x59d5b2['offset']==='undefined'&&typeof _0x59d5b2[_0x2f43('0x18')]===_0x2f43('0x19');var _0xb1dbd5=_0x568793['count'];var _0x46b15b=_0x31b9f5?0x0:_0x59d5b2[_0x2f43('0x1a')];var _0x12f073=_0x31b9f5?_0x568793[_0x2f43('0x1b')]:_0x59d5b2[_0x2f43('0x1a')]+_0x59d5b2['limit'];var _0x1e39fb;if(_0x12f073>=_0xb1dbd5){_0x12f073=_0xb1dbd5;_0x1e39fb=0xc8;}else{_0x1e39fb=0xce;}_0x263a5c[_0x2f43('0x15')](_0x1e39fb);return _0x263a5c[_0x2f43('0x1c')](_0x2f43('0x1d'),_0x46b15b+'-'+_0x12f073+'/'+_0xb1dbd5)[_0x2f43('0x17')](_0x568793);}return null;};}function patchUpdates(_0x7444ed){return function(_0x43fd71){try{jsonpatch[_0x2f43('0x1e')](_0x43fd71,_0x7444ed,!![]);}catch(_0x52acd8){return BPromise[_0x2f43('0x1f')](_0x52acd8);}return _0x43fd71[_0x2f43('0x20')]();};}function saveUpdates(_0x28c24b,_0x5aca5d){return function(_0x628714){if(_0x628714){return _0x628714['update'](_0x28c24b)[_0x2f43('0x21')](function(_0x3458be){return _0x3458be;});}return null;};}function removeEntity(_0x3445db,_0x16df8d){return function(_0x4d1304){if(_0x4d1304){return _0x4d1304[_0x2f43('0x22')]()[_0x2f43('0x21')](function(){var _0x311d9b=_0x4d1304[_0x2f43('0x23')]({'plain':!![]});var _0x56ca30=_0x2f43('0x24');return db[_0x2f43('0x25')][_0x2f43('0x22')]({'where':{'type':_0x56ca30,'resourceId':_0x311d9b['id']}})[_0x2f43('0x21')](function(){return _0x4d1304;});})[_0x2f43('0x21')](function(){_0x3445db['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4828d3,_0x190c27){return function(_0x8bff8d){if(!_0x8bff8d){_0x4828d3['sendStatus'](0x194);}return _0x8bff8d;};}function handleError(_0x2c0bf1,_0x3ad181){_0x3ad181=_0x3ad181||0x1f4;return function(_0x491c05){logger[_0x2f43('0x26')](_0x491c05[_0x2f43('0x27')]);if(_0x491c05[_0x2f43('0x28')]){delete _0x491c05[_0x2f43('0x28')];}_0x2c0bf1['status'](_0x3ad181)['send'](_0x491c05);};}exports[_0x2f43('0x29')]=function(_0x1a1ef8,_0x3d5e3b){var _0x19e62d={},_0x160e5b={},_0x3c7ca2={'count':0x0,'rows':[]};var _0x557dda=_['map'](db['Template'][_0x2f43('0x2a')],function(_0xa96e29){return{'name':_0xa96e29[_0x2f43('0x2b')],'type':_0xa96e29[_0x2f43('0x2c')][_0x2f43('0x2d')]};});_0x160e5b[_0x2f43('0x2e')]=_['map'](_0x557dda,_0x2f43('0x28'));_0x160e5b['query']=_[_0x2f43('0x2f')](_0x1a1ef8['query']);_0x160e5b['filters']=_[_0x2f43('0x30')](_0x160e5b['model'],_0x160e5b[_0x2f43('0x31')]);_0x19e62d[_0x2f43('0x32')]=_[_0x2f43('0x30')](_0x160e5b['model'],qs['fields'](_0x1a1ef8[_0x2f43('0x31')]['fields']));_0x19e62d['attributes']=_0x19e62d['attributes'][_0x2f43('0x33')]?_0x19e62d['attributes']:_0x160e5b[_0x2f43('0x2e')];if(!_0x1a1ef8[_0x2f43('0x31')][_0x2f43('0x34')](_0x2f43('0x35'))){_0x19e62d[_0x2f43('0x18')]=qs[_0x2f43('0x18')](_0x1a1ef8['query'][_0x2f43('0x18')]);_0x19e62d[_0x2f43('0x1a')]=qs['offset'](_0x1a1ef8[_0x2f43('0x31')][_0x2f43('0x1a')]);}_0x19e62d[_0x2f43('0x36')]=qs['sort'](_0x1a1ef8['query'][_0x2f43('0x37')]);_0x19e62d[_0x2f43('0x38')]=qs[_0x2f43('0x39')](_[_0x2f43('0x3a')](_0x1a1ef8[_0x2f43('0x31')],_0x160e5b[_0x2f43('0x39')]),_0x557dda);if(_0x1a1ef8['query'][_0x2f43('0x3b')]){_0x19e62d[_0x2f43('0x38')]=_['merge'](_0x19e62d[_0x2f43('0x38')],{'$or':_[_0x2f43('0x3c')](_0x557dda,function(_0x2c3f85){if(_0x2c3f85[_0x2f43('0x2c')]!==_0x2f43('0x3d')){var _0x1a91bb={};_0x1a91bb[_0x2c3f85[_0x2f43('0x28')]]={'$like':'%'+_0x1a1ef8[_0x2f43('0x31')][_0x2f43('0x3b')]+'%'};return _0x1a91bb;}})});}_0x19e62d=_[_0x2f43('0x3e')]({},_0x19e62d,_0x1a1ef8['options']);var _0x2c87fe={'where':_0x19e62d[_0x2f43('0x38')]};return db[_0x2f43('0x3f')][_0x2f43('0x1b')](_0x2c87fe)[_0x2f43('0x21')](function(_0x57f155){_0x3c7ca2[_0x2f43('0x1b')]=_0x57f155;if(_0x1a1ef8[_0x2f43('0x31')][_0x2f43('0x40')]){_0x19e62d[_0x2f43('0x41')]=[{'all':!![]}];}return db[_0x2f43('0x3f')][_0x2f43('0x42')](_0x19e62d);})[_0x2f43('0x21')](function(_0x25e25c){_0x3c7ca2[_0x2f43('0x43')]=_0x25e25c;return _0x3c7ca2;})['then'](respondWithFilteredResult(_0x3d5e3b,_0x19e62d))['catch'](handleError(_0x3d5e3b,null));};exports[_0x2f43('0x44')]=function(_0x3aa058,_0x16b671){var _0x32f2d1={'raw':!![],'where':{'id':_0x3aa058[_0x2f43('0x45')]['id']}},_0x1b2b40={};_0x1b2b40[_0x2f43('0x2e')]=_['keys'](db[_0x2f43('0x3f')][_0x2f43('0x2a')]);_0x1b2b40['query']=_[_0x2f43('0x2f')](_0x3aa058[_0x2f43('0x31')]);_0x1b2b40[_0x2f43('0x39')]=_[_0x2f43('0x30')](_0x1b2b40[_0x2f43('0x2e')],_0x1b2b40[_0x2f43('0x31')]);_0x32f2d1[_0x2f43('0x32')]=_['intersection'](_0x1b2b40[_0x2f43('0x2e')],qs[_0x2f43('0x46')](_0x3aa058[_0x2f43('0x31')]['fields']));_0x32f2d1[_0x2f43('0x32')]=_0x32f2d1[_0x2f43('0x32')][_0x2f43('0x33')]?_0x32f2d1[_0x2f43('0x32')]:_0x1b2b40[_0x2f43('0x2e')];if(_0x3aa058['query']['includeAll']){_0x32f2d1['include']=[{'all':!![]}];}_0x32f2d1=_[_0x2f43('0x3e')]({},_0x32f2d1,_0x3aa058['options']);return db[_0x2f43('0x3f')][_0x2f43('0x47')](_0x32f2d1)[_0x2f43('0x21')](handleEntityNotFound(_0x16b671,null))['then'](respondWithResult(_0x16b671,null))[_0x2f43('0x48')](handleError(_0x16b671,null));};exports['create']=function(_0x15db6c,_0x2310a3){return db[_0x2f43('0x3f')][_0x2f43('0x49')](_0x15db6c['body'],{})['then'](function(_0x958ad2){var _0x221db1=_0x15db6c['user'][_0x2f43('0x23')]({'plain':!![]});if(!_0x221db1)throw new Error(_0x2f43('0x4a'));if(_0x221db1[_0x2f43('0x4b')]===_0x2f43('0x4c')){var _0x3ee3d1=_0x958ad2[_0x2f43('0x23')]({'plain':!![]});var _0x2bc6b3=_0x2f43('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x2bc6b3,'userProfileId':_0x221db1[_0x2f43('0x4d')]},'raw':!![]})[_0x2f43('0x21')](function(_0x4fa919){if(_0x4fa919&&_0x4fa919[_0x2f43('0x4e')]===0x0){return db[_0x2f43('0x25')][_0x2f43('0x49')]({'name':_0x3ee3d1['name'],'resourceId':_0x3ee3d1['id'],'type':_0x4fa919['name'],'sectionId':_0x4fa919['id']},{})['then'](function(){return _0x958ad2;});}else{return _0x958ad2;}})['catch'](function(_0x542379){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x542379);throw _0x542379;});}return _0x958ad2;})['then'](respondWithResult(_0x2310a3,0xc9))['catch'](handleError(_0x2310a3,null));};exports[_0x2f43('0x4f')]=function(_0x1ef23b,_0x3bf26b){if(_0x1ef23b[_0x2f43('0x50')]['id']){delete _0x1ef23b['body']['id'];}return db[_0x2f43('0x3f')][_0x2f43('0x47')]({'where':{'id':_0x1ef23b[_0x2f43('0x45')]['id']}})[_0x2f43('0x21')](handleEntityNotFound(_0x3bf26b,null))[_0x2f43('0x21')](saveUpdates(_0x1ef23b[_0x2f43('0x50')],null))[_0x2f43('0x21')](respondWithResult(_0x3bf26b,null))[_0x2f43('0x48')](handleError(_0x3bf26b,null));};exports[_0x2f43('0x22')]=function(_0x25e935,_0x5231d4){return db[_0x2f43('0x3f')][_0x2f43('0x47')]({'where':{'id':_0x25e935[_0x2f43('0x45')]['id']}})['then'](handleEntityNotFound(_0x5231d4,null))[_0x2f43('0x21')](removeEntity(_0x5231d4,null))[_0x2f43('0x48')](handleError(_0x5231d4,null));};
\ No newline at end of file
index d84117f..5798966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3180=['Template','tools_templates','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define'];(function(_0x382e96,_0x53b6c2){var _0x26f8a4=function(_0x552827){while(--_0x552827){_0x382e96['push'](_0x382e96['shift']());}};_0x26f8a4(++_0x53b6c2);}(_0x3180,0x1de));var _0x0318=function(_0x5b2686,_0x1cf3a6){_0x5b2686=_0x5b2686-0x0;var _0x1b2d38=_0x3180[_0x5b2686];return _0x1b2d38;};'use strict';var _=require('lodash');var util=require(_0x0318('0x0'));var logger=require(_0x0318('0x1'))(_0x0318('0x2'));var moment=require(_0x0318('0x3'));var BPromise=require(_0x0318('0x4'));var rp=require(_0x0318('0x5'));var fs=require('fs');var path=require(_0x0318('0x6'));var rimraf=require(_0x0318('0x7'));var config=require(_0x0318('0x8'));var attributes=require(_0x0318('0x9'));module[_0x0318('0xa')]=function(_0x3e52a3,_0x3497a5){return _0x3e52a3[_0x0318('0xb')](_0x0318('0xc'),attributes,{'tableName':_0x0318('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ddf=['exports','define','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9ddf,0x1a9));var _0xf9dd=function(_0x3850e1,_0x48799b){_0x3850e1=_0x3850e1-0x0;var _0x2319aa=_0x9ddf[_0x3850e1];return _0x2319aa;};'use strict';var _=require(_0xf9dd('0x0'));var util=require(_0xf9dd('0x1'));var logger=require(_0xf9dd('0x2'))('api');var moment=require(_0xf9dd('0x3'));var BPromise=require(_0xf9dd('0x4'));var rp=require(_0xf9dd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf9dd('0x6'));var attributes=require('./template.attributes');module[_0xf9dd('0x7')]=function(_0x137cd9,_0x404901){return _0x137cd9[_0xf9dd('0x8')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af496a8..334ee80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa1a=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetTemplate','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util'];(function(_0x41714d,_0x4ca36a){var _0x3a0a44=function(_0x48f393){while(--_0x48f393){_0x41714d['push'](_0x41714d['shift']());}};_0x3a0a44(++_0x4ca36a);}(_0xfa1a,0xec));var _0xafa1=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xfa1a[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0xafa1('0x0'));var util=require(_0xafa1('0x1'));var moment=require(_0xafa1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xafa1('0x3'));var db=require(_0xafa1('0x4'))['db'];var utils=require(_0xafa1('0x5'));var logger=require(_0xafa1('0x6'))(_0xafa1('0x7'));var config=require('../../config/environment');var jayson=require(_0xafa1('0x8'));var client=jayson[_0xafa1('0x9')][_0xafa1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x68251f,_0x56274e,_0x518c2f){return new BPromise(function(_0x570a64,_0x5477fd){return client[_0xafa1('0xb')](_0x68251f,_0x518c2f)[_0xafa1('0xc')](function(_0x5f4095){logger[_0xafa1('0xd')](_0xafa1('0xe'),_0x56274e,'request\x20sent');logger[_0xafa1('0xf')](_0xafa1('0x10'),_0x56274e,_0xafa1('0x11'),JSON[_0xafa1('0x12')](_0x5f4095));if(_0x5f4095[_0xafa1('0x13')]){if(_0x5f4095[_0xafa1('0x13')][_0xafa1('0x14')]===0x1f4){logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);return _0x5477fd(_0x5f4095[_0xafa1('0x13')]['message']);}logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);return _0x570a64(_0x5f4095[_0xafa1('0x13')][_0xafa1('0x15')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x56274e,_0xafa1('0x11'));_0x570a64(_0x5f4095[_0xafa1('0x16')][_0xafa1('0x15')]);}})[_0xafa1('0x17')](function(_0x508111){logger[_0xafa1('0x13')](_0xafa1('0xe'),_0x56274e,_0x508111);_0x5477fd(_0x508111);});});}exports[_0xafa1('0x18')]=function(_0x33507d){var _0x4873a1=this;return new Promise(function(_0x961c86,_0x23f529){return db['Template'][_0xafa1('0x19')]({'raw':_0x33507d[_0xafa1('0x1a')]?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1b')]===undefined?!![]:![]:!![],'where':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1c')]||null:null,'attributes':_0x33507d[_0xafa1('0x1a')]?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1d')]||null:null,'limit':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1e')]||null:null,'include':_0x33507d['options']?_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1f')]?_[_0xafa1('0x20')](_0x33507d[_0xafa1('0x1a')][_0xafa1('0x1f')],function(_0x5fd641){return{'model':db[_0x5fd641[_0xafa1('0x21')]],'as':_0x5fd641['as'],'attributes':_0x5fd641[_0xafa1('0x1d')],'include':_0x5fd641[_0xafa1('0x1f')]?_['map'](_0x5fd641[_0xafa1('0x1f')],function(_0x4cf47b){return{'model':db[_0x4cf47b['model']],'as':_0x4cf47b['as'],'attributes':_0x4cf47b[_0xafa1('0x1d')],'include':_0x4cf47b['include']?_['map'](_0x4cf47b[_0xafa1('0x1f')],function(_0x4a20b4){return{'model':db[_0x4a20b4['model']],'as':_0x4a20b4['as'],'attributes':_0x4a20b4[_0xafa1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xafa1('0xc')](function(_0x1326c9){logger[_0xafa1('0xd')]('GetTemplate',_0x33507d);logger[_0xafa1('0xf')](_0xafa1('0x18'),_0x33507d,JSON[_0xafa1('0x12')](_0x1326c9));_0x961c86(_0x1326c9);})[_0xafa1('0x17')](function(_0x367ece){logger['error'](_0xafa1('0x18'),_0x367ece['message'],_0x33507d);_0x23f529(_0x4873a1[_0xafa1('0x13')](0x1f4,_0x367ece[_0xafa1('0x15')]));});});};
\ No newline at end of file
+var _0xc934=['model','attributes','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','options','raw','limit','include','map'];(function(_0x3dee92,_0x55e1eb){var _0x44d36e=function(_0x34de1a){while(--_0x34de1a){_0x3dee92['push'](_0x3dee92['shift']());}};_0x44d36e(++_0x55e1eb);}(_0xc934,0x12b));var _0x4c93=function(_0x19deb,_0x478996){_0x19deb=_0x19deb-0x0;var _0x4c04f4=_0xc934[_0x19deb];return _0x4c04f4;};'use strict';var _=require(_0x4c93('0x0'));var util=require(_0x4c93('0x1'));var moment=require(_0x4c93('0x2'));var BPromise=require('bluebird');var rs=require(_0x4c93('0x3'));var fs=require('fs');var Redis=require(_0x4c93('0x4'));var db=require(_0x4c93('0x5'))['db'];var utils=require(_0x4c93('0x6'));var logger=require('../../config/logger')(_0x4c93('0x7'));var config=require('../../config/environment');var jayson=require(_0x4c93('0x8'));var client=jayson[_0x4c93('0x9')][_0x4c93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4f2e33,_0xe9063e,_0xa8f845){return new BPromise(function(_0x2d9082,_0x39a963){return client[_0x4c93('0xb')](_0x4f2e33,_0xa8f845)[_0x4c93('0xc')](function(_0x43c456){logger[_0x4c93('0xd')](_0x4c93('0xe'),_0xe9063e,_0x4c93('0xf'));logger[_0x4c93('0x10')](_0x4c93('0x11'),_0xe9063e,_0x4c93('0xf'),JSON[_0x4c93('0x12')](_0x43c456));if(_0x43c456[_0x4c93('0x13')]){if(_0x43c456['error'][_0x4c93('0x14')]===0x1f4){logger[_0x4c93('0x13')](_0x4c93('0xe'),_0xe9063e,_0x43c456[_0x4c93('0x13')][_0x4c93('0x15')]);return _0x39a963(_0x43c456[_0x4c93('0x13')][_0x4c93('0x15')]);}logger[_0x4c93('0x13')](_0x4c93('0xe'),_0xe9063e,_0x43c456[_0x4c93('0x13')][_0x4c93('0x15')]);return _0x2d9082(_0x43c456[_0x4c93('0x13')]['message']);}else{logger['info'](_0x4c93('0xe'),_0xe9063e,_0x4c93('0xf'));_0x2d9082(_0x43c456[_0x4c93('0x16')][_0x4c93('0x15')]);}})[_0x4c93('0x17')](function(_0x285eb6){logger[_0x4c93('0x13')](_0x4c93('0xe'),_0xe9063e,_0x285eb6);_0x39a963(_0x285eb6);});});}exports[_0x4c93('0x18')]=function(_0x54ac37){var _0x3b9317=this;return new Promise(function(_0xeb1112,_0x1d67c6){return db[_0x4c93('0x19')]['findAll']({'raw':_0x54ac37[_0x4c93('0x1a')]?_0x54ac37[_0x4c93('0x1a')][_0x4c93('0x1b')]===undefined?!![]:![]:!![],'where':_0x54ac37['options']?_0x54ac37[_0x4c93('0x1a')]['where']||null:null,'attributes':_0x54ac37[_0x4c93('0x1a')]?_0x54ac37[_0x4c93('0x1a')]['attributes']||null:null,'limit':_0x54ac37[_0x4c93('0x1a')]?_0x54ac37[_0x4c93('0x1a')][_0x4c93('0x1c')]||null:null,'include':_0x54ac37[_0x4c93('0x1a')]?_0x54ac37[_0x4c93('0x1a')][_0x4c93('0x1d')]?_[_0x4c93('0x1e')](_0x54ac37['options'][_0x4c93('0x1d')],function(_0x48dfa8){return{'model':db[_0x48dfa8[_0x4c93('0x1f')]],'as':_0x48dfa8['as'],'attributes':_0x48dfa8[_0x4c93('0x20')],'include':_0x48dfa8[_0x4c93('0x1d')]?_[_0x4c93('0x1e')](_0x48dfa8[_0x4c93('0x1d')],function(_0x263f20){return{'model':db[_0x263f20[_0x4c93('0x1f')]],'as':_0x263f20['as'],'attributes':_0x263f20[_0x4c93('0x20')],'include':_0x263f20[_0x4c93('0x1d')]?_[_0x4c93('0x1e')](_0x263f20[_0x4c93('0x1d')],function(_0x5b09ff){return{'model':db[_0x5b09ff[_0x4c93('0x1f')]],'as':_0x5b09ff['as'],'attributes':_0x5b09ff[_0x4c93('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1081a6){logger[_0x4c93('0xd')](_0x4c93('0x18'),_0x54ac37);logger[_0x4c93('0x10')](_0x4c93('0x18'),_0x54ac37,JSON['stringify'](_0x1081a6));_0xeb1112(_0x1081a6);})['catch'](function(_0xf771f4){logger[_0x4c93('0x13')]('GetTemplate',_0xf771f4[_0x4c93('0x15')],_0x54ac37);_0x1d67c6(_0x3b9317[_0x4c93('0x13')](0x1f4,_0xf771f4[_0x4c93('0x15')]));});});};
\ No newline at end of file
index b9cc4ce..8b50287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f74=['/:id','show','/:id/all_conditions','getAllConditions','getAnyConditions','getActions','post','create','addAllCondition','/:id/any_conditions','/:id/actions','addAction','put','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get'];(function(_0x12b8ec,_0x1655be){var _0x21af77=function(_0xe59f){while(--_0xe59f){_0x12b8ec['push'](_0x12b8ec['shift']());}};_0x21af77(++_0x1655be);}(_0x0f74,0x13b));var _0x40f7=function(_0x50ebd7,_0x4e2450){_0x50ebd7=_0x50ebd7-0x0;var _0x4bacee=_0x0f74[_0x50ebd7];return _0x4bacee;};'use strict';var multer=require(_0x40f7('0x0'));var util=require(_0x40f7('0x1'));var path=require(_0x40f7('0x2'));var timeout=require('connect-timeout');var express=require(_0x40f7('0x3'));var router=express[_0x40f7('0x4')]();var fs_extra=require(_0x40f7('0x5'));var auth=require(_0x40f7('0x6'));var interaction=require(_0x40f7('0x7'));var config=require('../../config/environment');var controller=require('./trigger.controller');router['get']('/',auth[_0x40f7('0x8')](),controller['index']);router[_0x40f7('0x9')](_0x40f7('0xa'),auth[_0x40f7('0x8')](),controller[_0x40f7('0xb')]);router[_0x40f7('0x9')](_0x40f7('0xc'),auth['isAuthenticated'](),controller[_0x40f7('0xd')]);router['get']('/:id/any_conditions',auth[_0x40f7('0x8')](),controller[_0x40f7('0xe')]);router[_0x40f7('0x9')]('/:id/actions',auth[_0x40f7('0x8')](),controller[_0x40f7('0xf')]);router[_0x40f7('0x10')]('/',auth[_0x40f7('0x8')](),controller[_0x40f7('0x11')]);router[_0x40f7('0x10')]('/:id/all_conditions',auth[_0x40f7('0x8')](),controller[_0x40f7('0x12')]);router[_0x40f7('0x10')](_0x40f7('0x13'),auth[_0x40f7('0x8')](),controller['addAnyCondition']);router[_0x40f7('0x10')](_0x40f7('0x14'),auth['isAuthenticated'](),controller[_0x40f7('0x15')]);router[_0x40f7('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x40f7('0x17')]);router[_0x40f7('0x18')](_0x40f7('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1505=['delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAnyCondition','addAction','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1505,0x1cb));var _0x5150=function(_0x2195bd,_0x1a3db8){_0x2195bd=_0x2195bd-0x0;var _0x43a267=_0x1505[_0x2195bd];return _0x43a267;};'use strict';var multer=require(_0x5150('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5150('0x1'));var express=require('express');var router=express[_0x5150('0x2')]();var fs_extra=require(_0x5150('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5150('0x4'));var config=require(_0x5150('0x5'));var controller=require('./trigger.controller');router[_0x5150('0x6')]('/',auth[_0x5150('0x7')](),controller['index']);router[_0x5150('0x6')](_0x5150('0x8'),auth[_0x5150('0x7')](),controller[_0x5150('0x9')]);router['get'](_0x5150('0xa'),auth[_0x5150('0x7')](),controller[_0x5150('0xb')]);router[_0x5150('0x6')](_0x5150('0xc'),auth[_0x5150('0x7')](),controller[_0x5150('0xd')]);router[_0x5150('0x6')](_0x5150('0xe'),auth[_0x5150('0x7')](),controller[_0x5150('0xf')]);router[_0x5150('0x10')]('/',auth[_0x5150('0x7')](),controller[_0x5150('0x11')]);router['post'](_0x5150('0xa'),auth[_0x5150('0x7')](),controller['addAllCondition']);router[_0x5150('0x10')]('/:id/any_conditions',auth[_0x5150('0x7')](),controller[_0x5150('0x12')]);router[_0x5150('0x10')](_0x5150('0xe'),auth[_0x5150('0x7')](),controller[_0x5150('0x13')]);router[_0x5150('0x14')]('/:id',auth[_0x5150('0x7')](),controller['update']);router[_0x5150('0x15')](_0x5150('0x8'),auth['isAuthenticated'](),controller[_0x5150('0x16')]);module[_0x5150('0x17')]=router;
\ No newline at end of file
index 82aa401..28769e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f4b=['STRING','BOOLEAN','sequelize','exports'];(function(_0x100f2c,_0x19b242){var _0x3d349c=function(_0x327f59){while(--_0x327f59){_0x100f2c['push'](_0x100f2c['shift']());}};_0x3d349c(++_0x19b242);}(_0x7f4b,0xee));var _0xb7f4=function(_0x1045a2,_0x22535b){_0x1045a2=_0x1045a2-0x0;var _0x1d5e8e=_0x7f4b[_0x1045a2];return _0x1d5e8e;};'use strict';var Sequelize=require(_0xb7f4('0x0'));module[_0xb7f4('0x1')]={'name':{'type':Sequelize[_0xb7f4('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb7f4('0x2')]},'status':{'type':Sequelize[_0xb7f4('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8f6b=['STRING','BOOLEAN','sequelize','exports'];(function(_0x510129,_0x1d9914){var _0x493a48=function(_0x1960e8){while(--_0x1960e8){_0x510129['push'](_0x510129['shift']());}};_0x493a48(++_0x1d9914);}(_0x8f6b,0x146));var _0xb8f6=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0x8f6b[_0x34021d];return _0x16597b;};'use strict';var Sequelize=require(_0xb8f6('0x0'));module[_0xb8f6('0x1')]={'name':{'type':Sequelize[_0xb8f6('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb8f6('0x2')]},'status':{'type':Sequelize[_0xb8f6('0x3')],'defaultValue':![]}};
\ No newline at end of file
index fcf1b2a..8e55189 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ddd=['crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','Trigger','rawAttributes','fieldName','key','map','keys','filters','query','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','include','findAll','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','intersection','filter','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','ejs','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6ddd,0x17b));var _0xd6dd=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x6ddd[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xd6dd('0x0'));var rimraf=require(_0xd6dd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6dd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd6dd('0x3'));var Mustache=require(_0xd6dd('0x4'));var util=require(_0xd6dd('0x5'));var path=require(_0xd6dd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd6dd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6dd('0x8'));var squel=require('squel');var crypto=require(_0xd6dd('0x9'));var jsforce=require(_0xd6dd('0xa'));var deskjs=require(_0xd6dd('0xb'));var toCsv=require(_0xd6dd('0xc'));var querystring=require('querystring');var Papa=require(_0xd6dd('0xd'));var Redis=require(_0xd6dd('0xe'));var authService=require(_0xd6dd('0xf'));var qs=require(_0xd6dd('0x10'));var as=require(_0xd6dd('0x11'));var hardwareService=require(_0xd6dd('0x12'));var logger=require(_0xd6dd('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xd6dd('0x14'));var licenseUtil=require(_0xd6dd('0x15'));var db=require(_0xd6dd('0x16'))['db'];function respondWithStatusCode(_0x157176,_0x200853){_0x200853=_0x200853||0xcc;return function(_0x3fb0b5){if(_0x3fb0b5){return _0x157176[_0xd6dd('0x17')](_0x200853);}return _0x157176[_0xd6dd('0x18')](_0x200853)[_0xd6dd('0x19')]();};}function respondWithResult(_0x19403e,_0x3717c3){_0x3717c3=_0x3717c3||0xc8;return function(_0x4da932){if(_0x4da932){return _0x19403e[_0xd6dd('0x18')](_0x3717c3)[_0xd6dd('0x1a')](_0x4da932);}};}function respondWithFilteredResult(_0x24a719,_0x42b5b6){return function(_0x2e68cd){if(_0x2e68cd){var _0x1d10f1=typeof _0x42b5b6['offset']==='undefined'&&typeof _0x42b5b6['limit']===_0xd6dd('0x1b');var _0x51450a=_0x2e68cd[_0xd6dd('0x1c')];var _0x173265=_0x1d10f1?0x0:_0x42b5b6[_0xd6dd('0x1d')];var _0x425177=_0x1d10f1?_0x2e68cd[_0xd6dd('0x1c')]:_0x42b5b6['offset']+_0x42b5b6[_0xd6dd('0x1e')];var _0x26a440;if(_0x425177>=_0x51450a){_0x425177=_0x51450a;_0x26a440=0xc8;}else{_0x26a440=0xce;}_0x24a719['status'](_0x26a440);return _0x24a719[_0xd6dd('0x1f')](_0xd6dd('0x20'),_0x173265+'-'+_0x425177+'/'+_0x51450a)['json'](_0x2e68cd);}return null;};}function patchUpdates(_0x5a727c){return function(_0x25beaa){try{jsonpatch[_0xd6dd('0x21')](_0x25beaa,_0x5a727c,!![]);}catch(_0x2b2751){return BPromise['reject'](_0x2b2751);}return _0x25beaa[_0xd6dd('0x22')]();};}function saveUpdates(_0x3430ca,_0xd80e03){return function(_0x17ee50){if(_0x17ee50){return _0x17ee50[_0xd6dd('0x23')](_0x3430ca)[_0xd6dd('0x24')](function(_0x350e75){return _0x350e75;});}return null;};}function removeEntity(_0x4933b3,_0xa6195b){return function(_0x2fb599){if(_0x2fb599){return _0x2fb599['destroy']()[_0xd6dd('0x24')](function(){var _0xb82553=_0x2fb599[_0xd6dd('0x25')]({'plain':!![]});var _0x9f28d4='Triggers';return db[_0xd6dd('0x26')][_0xd6dd('0x27')]({'where':{'type':_0x9f28d4,'resourceId':_0xb82553['id']}})[_0xd6dd('0x24')](function(){return _0x2fb599;});})[_0xd6dd('0x24')](function(){_0x4933b3[_0xd6dd('0x18')](0xcc)[_0xd6dd('0x19')]();});}};}function handleEntityNotFound(_0x4b4515,_0x2da02c){return function(_0x107c6d){if(!_0x107c6d){_0x4b4515[_0xd6dd('0x17')](0x194);}return _0x107c6d;};}function handleError(_0x5b498f,_0x1c1866){_0x1c1866=_0x1c1866||0x1f4;return function(_0x4498d9){logger[_0xd6dd('0x28')](_0x4498d9[_0xd6dd('0x29')]);if(_0x4498d9[_0xd6dd('0x2a')]){delete _0x4498d9[_0xd6dd('0x2a')];}_0x5b498f[_0xd6dd('0x18')](_0x1c1866)[_0xd6dd('0x2b')](_0x4498d9);};}exports[_0xd6dd('0x2c')]=function(_0x1927f7,_0x26526e){var _0x138d62={},_0xeb3671={},_0x44dbe7={'count':0x0,'rows':[]};var _0x48541a=_['map'](db[_0xd6dd('0x2d')][_0xd6dd('0x2e')],function(_0x3f9a74){return{'name':_0x3f9a74[_0xd6dd('0x2f')],'type':_0x3f9a74['type'][_0xd6dd('0x30')]};});_0xeb3671['model']=_[_0xd6dd('0x31')](_0x48541a,'name');_0xeb3671['query']=_[_0xd6dd('0x32')](_0x1927f7['query']);_0xeb3671[_0xd6dd('0x33')]=_['intersection'](_0xeb3671['model'],_0xeb3671[_0xd6dd('0x34')]);_0x138d62['attributes']=_['intersection'](_0xeb3671['model'],qs[_0xd6dd('0x35')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x35')]));_0x138d62[_0xd6dd('0x36')]=_0x138d62[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x138d62['attributes']:_0xeb3671[_0xd6dd('0x38')];if(!_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x39')](_0xd6dd('0x3a'))){_0x138d62['limit']=qs[_0xd6dd('0x1e')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x1e')]);_0x138d62['offset']=qs[_0xd6dd('0x1d')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x1d')]);}_0x138d62[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x1927f7[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x138d62[_0xd6dd('0x3d')]=qs['filters'](_[_0xd6dd('0x3e')](_0x1927f7[_0xd6dd('0x34')],_0xeb3671[_0xd6dd('0x33')]),_0x48541a);if(_0x1927f7['query']['filter']){_0x138d62['where']=_['merge'](_0x138d62[_0xd6dd('0x3d')],{'$or':_['map'](_0x48541a,function(_0x15d1a2){if(_0x15d1a2['type']!==_0xd6dd('0x3f')){var _0x58ea17={};_0x58ea17[_0x15d1a2[_0xd6dd('0x2a')]]={'$like':'%'+_0x1927f7[_0xd6dd('0x34')]['filter']+'%'};return _0x58ea17;}})});}_0x138d62=_[_0xd6dd('0x40')]({},_0x138d62,_0x1927f7[_0xd6dd('0x41')]);var _0x20fde0={'where':_0x138d62[_0xd6dd('0x3d')]};return db['Trigger'][_0xd6dd('0x1c')](_0x20fde0)['then'](function(_0x1e52b6){_0x44dbe7['count']=_0x1e52b6;if(_0x1927f7[_0xd6dd('0x34')]['includeAll']){_0x138d62[_0xd6dd('0x42')]=[{'all':!![]}];}return db[_0xd6dd('0x2d')][_0xd6dd('0x43')](_0x138d62);})[_0xd6dd('0x24')](function(_0xd3afea){_0x44dbe7[_0xd6dd('0x44')]=_0xd3afea;return _0x44dbe7;})['then'](respondWithFilteredResult(_0x26526e,_0x138d62))[_0xd6dd('0x45')](handleError(_0x26526e,null));};exports[_0xd6dd('0x46')]=function(_0x2ce80c,_0x41bafd){var _0x2aabb2={'raw':![],'where':{'id':_0x2ce80c['params']['id']}},_0x34c340={};_0x34c340['model']=_[_0xd6dd('0x32')](db[_0xd6dd('0x2d')][_0xd6dd('0x2e')]);_0x34c340[_0xd6dd('0x34')]=_[_0xd6dd('0x32')](_0x2ce80c[_0xd6dd('0x34')]);_0x34c340['filters']=_['intersection'](_0x34c340['model'],_0x34c340['query']);_0x2aabb2[_0xd6dd('0x36')]=_['intersection'](_0x34c340[_0xd6dd('0x38')],qs['fields'](_0x2ce80c['query'][_0xd6dd('0x35')]));_0x2aabb2['attributes']=_0x2aabb2[_0xd6dd('0x36')]['length']?_0x2aabb2[_0xd6dd('0x36')]:_0x34c340[_0xd6dd('0x38')];if(_0x2ce80c[_0xd6dd('0x34')][_0xd6dd('0x47')]){_0x2aabb2['include']=[{'all':!![]}];}_0x2aabb2=_[_0xd6dd('0x40')]({},_0x2aabb2,_0x2ce80c['options']);return db[_0xd6dd('0x2d')][_0xd6dd('0x48')](_0x2aabb2)[_0xd6dd('0x24')](handleEntityNotFound(_0x41bafd,null))[_0xd6dd('0x24')](respondWithResult(_0x41bafd,null))['catch'](handleError(_0x41bafd,null));};exports[_0xd6dd('0x49')]=function(_0xf2788d,_0x51b370){return db[_0xd6dd('0x2d')][_0xd6dd('0x49')](_0xf2788d[_0xd6dd('0x4a')],{})['then'](function(_0x1c6451){var _0x2ce611=_0xf2788d[_0xd6dd('0x4b')]['get']({'plain':!![]});if(!_0x2ce611)throw new Error(_0xd6dd('0x4c'));if(_0x2ce611[_0xd6dd('0x4d')]==='user'){var _0x2d7b33=_0x1c6451[_0xd6dd('0x25')]({'plain':!![]});var _0x316e94=_0xd6dd('0x4e');return db[_0xd6dd('0x4f')][_0xd6dd('0x48')]({'where':{'name':_0x316e94,'userProfileId':_0x2ce611[_0xd6dd('0x50')]},'raw':!![]})[_0xd6dd('0x24')](function(_0x9b8d65){if(_0x9b8d65&&_0x9b8d65[_0xd6dd('0x51')]===0x0){return db[_0xd6dd('0x26')]['create']({'name':_0x2d7b33[_0xd6dd('0x2a')],'resourceId':_0x2d7b33['id'],'type':_0x9b8d65['name'],'sectionId':_0x9b8d65['id']},{})[_0xd6dd('0x24')](function(){return _0x1c6451;});}else{return _0x1c6451;}})[_0xd6dd('0x45')](function(_0x253c36){logger[_0xd6dd('0x28')](_0xd6dd('0x52'),_0x253c36);throw _0x253c36;});}return _0x1c6451;})['then'](respondWithResult(_0x51b370,0xc9))['catch'](handleError(_0x51b370,null));};exports[_0xd6dd('0x23')]=function(_0x30abb8,_0x6ed0b4){if(_0x30abb8[_0xd6dd('0x4a')]['id']){delete _0x30abb8['body']['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x30abb8[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x6ed0b4,null))['then'](saveUpdates(_0x30abb8[_0xd6dd('0x4a')],null))['then'](respondWithResult(_0x6ed0b4,null))[_0xd6dd('0x45')](handleError(_0x6ed0b4,null));};exports[_0xd6dd('0x27')]=function(_0x374878,_0x5e135e){return db[_0xd6dd('0x2d')]['find']({'where':{'id':_0x374878[_0xd6dd('0x53')]['id']}})['then'](handleEntityNotFound(_0x5e135e,null))['then'](removeEntity(_0x5e135e,null))[_0xd6dd('0x45')](handleError(_0x5e135e,null));};exports['addAllCondition']=function(_0x536307,_0x52db45,_0x187e66){if(_0x536307['body']['id']){delete _0x536307[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x536307[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x52db45,null))['then'](function(_0x1a09c4){if(_0x1a09c4){_0x536307[_0xd6dd('0x4a')][_0xd6dd('0x54')]=_0x1a09c4['id'];return db[_0xd6dd('0x55')][_0xd6dd('0x49')](_0x536307[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x52db45,null))[_0xd6dd('0x45')](handleError(_0x52db45,null));};exports[_0xd6dd('0x56')]=function(_0x1bd6ea,_0x24cc1c,_0x324897){if(_0x1bd6ea[_0xd6dd('0x4a')]['id']){delete _0x1bd6ea[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0x1bd6ea[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x24cc1c,null))[_0xd6dd('0x24')](function(_0x25bc68){if(_0x25bc68){_0x1bd6ea[_0xd6dd('0x4a')][_0xd6dd('0x57')]=_0x25bc68['id'];return db[_0xd6dd('0x55')]['create'](_0x1bd6ea[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x24cc1c,null))[_0xd6dd('0x45')](handleError(_0x24cc1c,null));};exports[_0xd6dd('0x58')]=function(_0xc892ce,_0x452579,_0x30a480){var _0x47bacb={};var _0x24f8ba={};var _0x343b7a;var _0x117b0d;return db[_0xd6dd('0x2d')][_0xd6dd('0x59')]({'where':{'id':_0xc892ce[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x452579,null))[_0xd6dd('0x24')](function(_0x5e31bc){if(_0x5e31bc){_0x343b7a=_0x5e31bc;_0x24f8ba[_0xd6dd('0x38')]=_['keys'](db['Condition']['rawAttributes']);_0x24f8ba[_0xd6dd('0x34')]=_['keys'](_0xc892ce[_0xd6dd('0x34')]);_0x24f8ba['filters']=_[_0xd6dd('0x5a')](_0x24f8ba[_0xd6dd('0x38')],_0x24f8ba[_0xd6dd('0x34')]);_0x47bacb[_0xd6dd('0x36')]=_['intersection'](_0x24f8ba[_0xd6dd('0x38')],qs['fields'](_0xc892ce['query'][_0xd6dd('0x35')]));_0x47bacb[_0xd6dd('0x36')]=_0x47bacb[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x47bacb[_0xd6dd('0x36')]:_0x24f8ba[_0xd6dd('0x38')];_0x47bacb['order']=qs[_0xd6dd('0x3c')](_0xc892ce[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x47bacb[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_[_0xd6dd('0x3e')](_0xc892ce[_0xd6dd('0x34')],_0x24f8ba['filters']));if(_0xc892ce[_0xd6dd('0x34')]['filter']){_0x47bacb[_0xd6dd('0x3d')]=_[_0xd6dd('0x40')](_0x47bacb[_0xd6dd('0x3d')],{'$or':_[_0xd6dd('0x31')](_0x47bacb['attributes'],function(_0x9d9a2d){var _0x1c3f3c={};_0x1c3f3c[_0x9d9a2d]={'$like':'%'+_0xc892ce['query'][_0xd6dd('0x5b')]+'%'};return _0x1c3f3c;})});}_0x47bacb=_['merge']({},_0x47bacb,_0xc892ce[_0xd6dd('0x41')]);return _0x343b7a[_0xd6dd('0x58')](_0x47bacb);}})['then'](function(_0x24e0ee){if(_0x24e0ee){_0x117b0d=_0x24e0ee['length'];if(!_0xc892ce[_0xd6dd('0x34')]['hasOwnProperty']('nolimit')){_0x47bacb['limit']=qs['limit'](_0xc892ce[_0xd6dd('0x34')][_0xd6dd('0x1e')]);_0x47bacb['offset']=qs[_0xd6dd('0x1d')](_0xc892ce['query'][_0xd6dd('0x1d')]);}return _0x343b7a[_0xd6dd('0x58')](_0x47bacb);}})[_0xd6dd('0x24')](function(_0xa7cd85){if(_0xa7cd85){return _0xa7cd85?{'count':_0x117b0d,'rows':_0xa7cd85}:null;}})['then'](respondWithResult(_0x452579,null))[_0xd6dd('0x45')](handleError(_0x452579,null));};exports['getAnyConditions']=function(_0x3e8f2d,_0x543780,_0x4a0d6e){var _0xb3a9d6={};var _0x50ea34={};var _0x5074c7;var _0x255357;return db[_0xd6dd('0x2d')][_0xd6dd('0x59')]({'where':{'id':_0x3e8f2d[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x543780,null))['then'](function(_0x552625){if(_0x552625){_0x5074c7=_0x552625;_0x50ea34[_0xd6dd('0x38')]=_['keys'](db[_0xd6dd('0x55')][_0xd6dd('0x2e')]);_0x50ea34[_0xd6dd('0x34')]=_[_0xd6dd('0x32')](_0x3e8f2d[_0xd6dd('0x34')]);_0x50ea34[_0xd6dd('0x33')]=_[_0xd6dd('0x5a')](_0x50ea34[_0xd6dd('0x38')],_0x50ea34[_0xd6dd('0x34')]);_0xb3a9d6['attributes']=_[_0xd6dd('0x5a')](_0x50ea34['model'],qs[_0xd6dd('0x35')](_0x3e8f2d['query'][_0xd6dd('0x35')]));_0xb3a9d6[_0xd6dd('0x36')]=_0xb3a9d6[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0xb3a9d6[_0xd6dd('0x36')]:_0x50ea34[_0xd6dd('0x38')];_0xb3a9d6[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x3e8f2d['query'][_0xd6dd('0x3c')]);_0xb3a9d6[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_[_0xd6dd('0x3e')](_0x3e8f2d[_0xd6dd('0x34')],_0x50ea34['filters']));if(_0x3e8f2d[_0xd6dd('0x34')]['filter']){_0xb3a9d6['where']=_[_0xd6dd('0x40')](_0xb3a9d6['where'],{'$or':_[_0xd6dd('0x31')](_0xb3a9d6['attributes'],function(_0x3f8e43){var _0x12e15d={};_0x12e15d[_0x3f8e43]={'$like':'%'+_0x3e8f2d[_0xd6dd('0x34')][_0xd6dd('0x5b')]+'%'};return _0x12e15d;})});}_0xb3a9d6=_[_0xd6dd('0x40')]({},_0xb3a9d6,_0x3e8f2d['options']);return _0x5074c7['getAnyConditions'](_0xb3a9d6);}})[_0xd6dd('0x24')](function(_0x5f5cf5){if(_0x5f5cf5){_0x255357=_0x5f5cf5[_0xd6dd('0x37')];if(!_0x3e8f2d[_0xd6dd('0x34')][_0xd6dd('0x39')]('nolimit')){_0xb3a9d6[_0xd6dd('0x1e')]=qs[_0xd6dd('0x1e')](_0x3e8f2d['query'][_0xd6dd('0x1e')]);_0xb3a9d6['offset']=qs['offset'](_0x3e8f2d[_0xd6dd('0x34')]['offset']);}return _0x5074c7[_0xd6dd('0x5c')](_0xb3a9d6);}})[_0xd6dd('0x24')](function(_0x543130){if(_0x543130){return _0x543130?{'count':_0x255357,'rows':_0x543130}:null;}})[_0xd6dd('0x24')](respondWithResult(_0x543780,null))[_0xd6dd('0x45')](handleError(_0x543780,null));};exports[_0xd6dd('0x5d')]=function(_0xbee743,_0x241363,_0x5d026d){if(_0xbee743[_0xd6dd('0x4a')]['id']){delete _0xbee743[_0xd6dd('0x4a')]['id'];}return db[_0xd6dd('0x2d')][_0xd6dd('0x48')]({'where':{'id':_0xbee743[_0xd6dd('0x53')]['id']}})[_0xd6dd('0x24')](handleEntityNotFound(_0x241363,null))[_0xd6dd('0x24')](function(_0x4f7186){if(_0x4f7186){_0xbee743[_0xd6dd('0x4a')][_0xd6dd('0x5e')]=_0x4f7186['id'];return db[_0xd6dd('0x5f')][_0xd6dd('0x49')](_0xbee743[_0xd6dd('0x4a')]);}})[_0xd6dd('0x24')](respondWithResult(_0x241363,null))[_0xd6dd('0x45')](handleError(_0x241363,null));};exports[_0xd6dd('0x60')]=function(_0x3d72d0,_0x3e7e5e,_0x5b9a4f){var _0x555129={};var _0x36acc6={};var _0x36a48a;var _0x179e43;return db[_0xd6dd('0x2d')]['findOne']({'where':{'id':_0x3d72d0[_0xd6dd('0x53')]['id']}})['then'](handleEntityNotFound(_0x3e7e5e,null))[_0xd6dd('0x24')](function(_0x310b7a){if(_0x310b7a){_0x36a48a=_0x310b7a;_0x36acc6[_0xd6dd('0x38')]=_[_0xd6dd('0x32')](db[_0xd6dd('0x5f')]['rawAttributes']);_0x36acc6['query']=_[_0xd6dd('0x32')](_0x3d72d0['query']);_0x36acc6['filters']=_[_0xd6dd('0x5a')](_0x36acc6[_0xd6dd('0x38')],_0x36acc6[_0xd6dd('0x34')]);_0x555129[_0xd6dd('0x36')]=_[_0xd6dd('0x5a')](_0x36acc6['model'],qs[_0xd6dd('0x35')](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x35')]));_0x555129[_0xd6dd('0x36')]=_0x555129[_0xd6dd('0x36')][_0xd6dd('0x37')]?_0x555129[_0xd6dd('0x36')]:_0x36acc6['model'];_0x555129[_0xd6dd('0x3b')]=qs[_0xd6dd('0x3c')](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x3c')]);_0x555129[_0xd6dd('0x3d')]=qs[_0xd6dd('0x33')](_['pick'](_0x3d72d0['query'],_0x36acc6['filters']));if(_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x5b')]){_0x555129[_0xd6dd('0x3d')]=_[_0xd6dd('0x40')](_0x555129['where'],{'$or':_[_0xd6dd('0x31')](_0x555129[_0xd6dd('0x36')],function(_0xeeeeee){var _0x3b35d0={};_0x3b35d0[_0xeeeeee]={'$like':'%'+_0x3d72d0['query'][_0xd6dd('0x5b')]+'%'};return _0x3b35d0;})});}_0x555129=_[_0xd6dd('0x40')]({},_0x555129,_0x3d72d0[_0xd6dd('0x41')]);return _0x36a48a[_0xd6dd('0x60')](_0x555129);}})[_0xd6dd('0x24')](function(_0x2ff98c){if(_0x2ff98c){_0x179e43=_0x2ff98c[_0xd6dd('0x37')];if(!_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x39')](_0xd6dd('0x3a'))){_0x555129[_0xd6dd('0x1e')]=qs[_0xd6dd('0x1e')](_0x3d72d0['query'][_0xd6dd('0x1e')]);_0x555129['offset']=qs['offset'](_0x3d72d0[_0xd6dd('0x34')][_0xd6dd('0x1d')]);}return _0x36a48a[_0xd6dd('0x60')](_0x555129);}})[_0xd6dd('0x24')](function(_0x493d7f){if(_0x493d7f){return _0x493d7f?{'count':_0x179e43,'rows':_0x493d7f}:null;}})[_0xd6dd('0x24')](respondWithResult(_0x3e7e5e,null))[_0xd6dd('0x45')](handleError(_0x3e7e5e,null));};
\ No newline at end of file
+var _0xcf6b=['pick','filter','merge','where','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','options','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','getAnyConditions','addAction','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','Triggers','UserProfileResource','end','name','index','Trigger','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort'];(function(_0x556f91,_0x5f5d79){var _0x3dda91=function(_0x50631c){while(--_0x50631c){_0x556f91['push'](_0x556f91['shift']());}};_0x3dda91(++_0x5f5d79);}(_0xcf6b,0x147));var _0xbcf6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xcf6b[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbcf6('0x0'));var zipdir=require(_0xbcf6('0x1'));var jsonpatch=require(_0xbcf6('0x2'));var rp=require(_0xbcf6('0x3'));var moment=require(_0xbcf6('0x4'));var BPromise=require(_0xbcf6('0x5'));var Mustache=require(_0xbcf6('0x6'));var util=require(_0xbcf6('0x7'));var path=require(_0xbcf6('0x8'));var sox=require(_0xbcf6('0x9'));var csv=require(_0xbcf6('0xa'));var ejs=require(_0xbcf6('0xb'));var fs=require('fs');var fs_extra=require(_0xbcf6('0xc'));var _=require(_0xbcf6('0xd'));var squel=require(_0xbcf6('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbcf6('0xf'));var toCsv=require(_0xbcf6('0xa'));var querystring=require(_0xbcf6('0x10'));var Papa=require('papaparse');var Redis=require(_0xbcf6('0x11'));var authService=require(_0xbcf6('0x12'));var qs=require(_0xbcf6('0x13'));var as=require(_0xbcf6('0x14'));var hardwareService=require(_0xbcf6('0x15'));var logger=require('../../config/logger')(_0xbcf6('0x16'));var utils=require(_0xbcf6('0x17'));var config=require(_0xbcf6('0x18'));var licenseUtil=require(_0xbcf6('0x19'));var db=require(_0xbcf6('0x1a'))['db'];function respondWithStatusCode(_0x5854d7,_0x19af80){_0x19af80=_0x19af80||0xcc;return function(_0x598cdd){if(_0x598cdd){return _0x5854d7[_0xbcf6('0x1b')](_0x19af80);}return _0x5854d7[_0xbcf6('0x1c')](_0x19af80)['end']();};}function respondWithResult(_0x5941cd,_0x194b04){_0x194b04=_0x194b04||0xc8;return function(_0x31bedb){if(_0x31bedb){return _0x5941cd['status'](_0x194b04)[_0xbcf6('0x1d')](_0x31bedb);}};}function respondWithFilteredResult(_0xd96022,_0x3dbbe2){return function(_0x2abf2e){if(_0x2abf2e){var _0x1152d2=typeof _0x3dbbe2[_0xbcf6('0x1e')]===_0xbcf6('0x1f')&&typeof _0x3dbbe2[_0xbcf6('0x20')]===_0xbcf6('0x1f');var _0xcc5606=_0x2abf2e[_0xbcf6('0x21')];var _0x1ebb50=_0x1152d2?0x0:_0x3dbbe2[_0xbcf6('0x1e')];var _0x595c2b=_0x1152d2?_0x2abf2e[_0xbcf6('0x21')]:_0x3dbbe2['offset']+_0x3dbbe2[_0xbcf6('0x20')];var _0x4560ba;if(_0x595c2b>=_0xcc5606){_0x595c2b=_0xcc5606;_0x4560ba=0xc8;}else{_0x4560ba=0xce;}_0xd96022['status'](_0x4560ba);return _0xd96022[_0xbcf6('0x22')](_0xbcf6('0x23'),_0x1ebb50+'-'+_0x595c2b+'/'+_0xcc5606)[_0xbcf6('0x1d')](_0x2abf2e);}return null;};}function patchUpdates(_0x22ae21){return function(_0x1b88af){try{jsonpatch[_0xbcf6('0x24')](_0x1b88af,_0x22ae21,!![]);}catch(_0x483ed6){return BPromise[_0xbcf6('0x25')](_0x483ed6);}return _0x1b88af[_0xbcf6('0x26')]();};}function saveUpdates(_0x2a4510,_0x2ddc2e){return function(_0x4ebeaf){if(_0x4ebeaf){return _0x4ebeaf[_0xbcf6('0x27')](_0x2a4510)['then'](function(_0x5914ea){return _0x5914ea;});}return null;};}function removeEntity(_0x404f49,_0x24a684){return function(_0x3e035b){if(_0x3e035b){return _0x3e035b[_0xbcf6('0x28')]()[_0xbcf6('0x29')](function(){var _0x11512b=_0x3e035b[_0xbcf6('0x2a')]({'plain':!![]});var _0x6e64f7=_0xbcf6('0x2b');return db[_0xbcf6('0x2c')][_0xbcf6('0x28')]({'where':{'type':_0x6e64f7,'resourceId':_0x11512b['id']}})[_0xbcf6('0x29')](function(){return _0x3e035b;});})[_0xbcf6('0x29')](function(){_0x404f49[_0xbcf6('0x1c')](0xcc)[_0xbcf6('0x2d')]();});}};}function handleEntityNotFound(_0x214b5d,_0xa0dd17){return function(_0x3aae98){if(!_0x3aae98){_0x214b5d['sendStatus'](0x194);}return _0x3aae98;};}function handleError(_0x25c06d,_0x410daf){_0x410daf=_0x410daf||0x1f4;return function(_0x345b79){logger['error'](_0x345b79['stack']);if(_0x345b79[_0xbcf6('0x2e')]){delete _0x345b79[_0xbcf6('0x2e')];}_0x25c06d[_0xbcf6('0x1c')](_0x410daf)['send'](_0x345b79);};}exports[_0xbcf6('0x2f')]=function(_0x397c6b,_0x6a2627){var _0x1339cf={},_0x35ad5f={},_0x7e022={'count':0x0,'rows':[]};var _0x39f2ed=_['map'](db[_0xbcf6('0x30')][_0xbcf6('0x31')],function(_0x7ee340){return{'name':_0x7ee340[_0xbcf6('0x32')],'type':_0x7ee340[_0xbcf6('0x33')][_0xbcf6('0x34')]};});_0x35ad5f[_0xbcf6('0x35')]=_[_0xbcf6('0x36')](_0x39f2ed,_0xbcf6('0x2e'));_0x35ad5f[_0xbcf6('0x37')]=_[_0xbcf6('0x38')](_0x397c6b[_0xbcf6('0x37')]);_0x35ad5f[_0xbcf6('0x39')]=_[_0xbcf6('0x3a')](_0x35ad5f[_0xbcf6('0x35')],_0x35ad5f[_0xbcf6('0x37')]);_0x1339cf[_0xbcf6('0x3b')]=_[_0xbcf6('0x3a')](_0x35ad5f[_0xbcf6('0x35')],qs['fields'](_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x3c')]));_0x1339cf[_0xbcf6('0x3b')]=_0x1339cf[_0xbcf6('0x3b')]['length']?_0x1339cf[_0xbcf6('0x3b')]:_0x35ad5f[_0xbcf6('0x35')];if(!_0x397c6b['query'][_0xbcf6('0x3d')](_0xbcf6('0x3e'))){_0x1339cf[_0xbcf6('0x20')]=qs['limit'](_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x20')]);_0x1339cf['offset']=qs[_0xbcf6('0x1e')](_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x1e')]);}_0x1339cf[_0xbcf6('0x3f')]=qs['sort'](_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x40')]);_0x1339cf['where']=qs['filters'](_[_0xbcf6('0x41')](_0x397c6b['query'],_0x35ad5f[_0xbcf6('0x39')]),_0x39f2ed);if(_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x42')]){_0x1339cf['where']=_[_0xbcf6('0x43')](_0x1339cf[_0xbcf6('0x44')],{'$or':_[_0xbcf6('0x36')](_0x39f2ed,function(_0x10d75e){if(_0x10d75e[_0xbcf6('0x33')]!==_0xbcf6('0x45')){var _0x1ae044={};_0x1ae044[_0x10d75e[_0xbcf6('0x2e')]]={'$like':'%'+_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x42')]+'%'};return _0x1ae044;}})});}_0x1339cf=_['merge']({},_0x1339cf,_0x397c6b['options']);var _0x3522d7={'where':_0x1339cf[_0xbcf6('0x44')]};return db[_0xbcf6('0x30')]['count'](_0x3522d7)['then'](function(_0x347be9){_0x7e022[_0xbcf6('0x21')]=_0x347be9;if(_0x397c6b[_0xbcf6('0x37')][_0xbcf6('0x46')]){_0x1339cf['include']=[{'all':!![]}];}return db[_0xbcf6('0x30')][_0xbcf6('0x47')](_0x1339cf);})['then'](function(_0x374340){_0x7e022[_0xbcf6('0x48')]=_0x374340;return _0x7e022;})[_0xbcf6('0x29')](respondWithFilteredResult(_0x6a2627,_0x1339cf))[_0xbcf6('0x49')](handleError(_0x6a2627,null));};exports[_0xbcf6('0x4a')]=function(_0x4c221f,_0x1645f6){var _0x33eec7={'raw':![],'where':{'id':_0x4c221f[_0xbcf6('0x4b')]['id']}},_0x55710c={};_0x55710c['model']=_[_0xbcf6('0x38')](db['Trigger'][_0xbcf6('0x31')]);_0x55710c[_0xbcf6('0x37')]=_[_0xbcf6('0x38')](_0x4c221f['query']);_0x55710c[_0xbcf6('0x39')]=_[_0xbcf6('0x3a')](_0x55710c['model'],_0x55710c[_0xbcf6('0x37')]);_0x33eec7[_0xbcf6('0x3b')]=_[_0xbcf6('0x3a')](_0x55710c['model'],qs['fields'](_0x4c221f['query'][_0xbcf6('0x3c')]));_0x33eec7['attributes']=_0x33eec7[_0xbcf6('0x3b')][_0xbcf6('0x4c')]?_0x33eec7[_0xbcf6('0x3b')]:_0x55710c[_0xbcf6('0x35')];if(_0x4c221f[_0xbcf6('0x37')][_0xbcf6('0x46')]){_0x33eec7['include']=[{'all':!![]}];}_0x33eec7=_[_0xbcf6('0x43')]({},_0x33eec7,_0x4c221f[_0xbcf6('0x4d')]);return db[_0xbcf6('0x30')][_0xbcf6('0x4e')](_0x33eec7)[_0xbcf6('0x29')](handleEntityNotFound(_0x1645f6,null))['then'](respondWithResult(_0x1645f6,null))['catch'](handleError(_0x1645f6,null));};exports[_0xbcf6('0x4f')]=function(_0x3c6268,_0x3133ce){return db[_0xbcf6('0x30')][_0xbcf6('0x4f')](_0x3c6268[_0xbcf6('0x50')],{})[_0xbcf6('0x29')](function(_0x214206){var _0x231e90=_0x3c6268['user']['get']({'plain':!![]});if(!_0x231e90)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x231e90[_0xbcf6('0x51')]===_0xbcf6('0x52')){var _0x3eca25=_0x214206['get']({'plain':!![]});var _0x5388a4=_0xbcf6('0x2b');return db[_0xbcf6('0x53')][_0xbcf6('0x4e')]({'where':{'name':_0x5388a4,'userProfileId':_0x231e90[_0xbcf6('0x54')]},'raw':!![]})[_0xbcf6('0x29')](function(_0x1de1e8){if(_0x1de1e8&&_0x1de1e8[_0xbcf6('0x55')]===0x0){return db[_0xbcf6('0x2c')]['create']({'name':_0x3eca25[_0xbcf6('0x2e')],'resourceId':_0x3eca25['id'],'type':_0x1de1e8[_0xbcf6('0x2e')],'sectionId':_0x1de1e8['id']},{})[_0xbcf6('0x29')](function(){return _0x214206;});}else{return _0x214206;}})[_0xbcf6('0x49')](function(_0x5a5744){logger['error'](_0xbcf6('0x56'),_0x5a5744);throw _0x5a5744;});}return _0x214206;})[_0xbcf6('0x29')](respondWithResult(_0x3133ce,0xc9))[_0xbcf6('0x49')](handleError(_0x3133ce,null));};exports[_0xbcf6('0x27')]=function(_0x368003,_0x29863a){if(_0x368003[_0xbcf6('0x50')]['id']){delete _0x368003[_0xbcf6('0x50')]['id'];}return db[_0xbcf6('0x30')][_0xbcf6('0x4e')]({'where':{'id':_0x368003['params']['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x29863a,null))[_0xbcf6('0x29')](saveUpdates(_0x368003[_0xbcf6('0x50')],null))[_0xbcf6('0x29')](respondWithResult(_0x29863a,null))['catch'](handleError(_0x29863a,null));};exports[_0xbcf6('0x28')]=function(_0x3e82ed,_0x3ec5aa){return db[_0xbcf6('0x30')][_0xbcf6('0x4e')]({'where':{'id':_0x3e82ed[_0xbcf6('0x4b')]['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x3ec5aa,null))['then'](removeEntity(_0x3ec5aa,null))[_0xbcf6('0x49')](handleError(_0x3ec5aa,null));};exports[_0xbcf6('0x57')]=function(_0x6db880,_0x126321,_0x43c225){if(_0x6db880[_0xbcf6('0x50')]['id']){delete _0x6db880[_0xbcf6('0x50')]['id'];}return db[_0xbcf6('0x30')][_0xbcf6('0x4e')]({'where':{'id':_0x6db880['params']['id']}})['then'](handleEntityNotFound(_0x126321,null))[_0xbcf6('0x29')](function(_0x359cc1){if(_0x359cc1){_0x6db880['body'][_0xbcf6('0x58')]=_0x359cc1['id'];return db[_0xbcf6('0x59')][_0xbcf6('0x4f')](_0x6db880[_0xbcf6('0x50')]);}})[_0xbcf6('0x29')](respondWithResult(_0x126321,null))['catch'](handleError(_0x126321,null));};exports['addAnyCondition']=function(_0x3cea14,_0x1d155b,_0x1ef901){if(_0x3cea14['body']['id']){delete _0x3cea14[_0xbcf6('0x50')]['id'];}return db[_0xbcf6('0x30')]['find']({'where':{'id':_0x3cea14[_0xbcf6('0x4b')]['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x1d155b,null))[_0xbcf6('0x29')](function(_0x21c2f0){if(_0x21c2f0){_0x3cea14[_0xbcf6('0x50')][_0xbcf6('0x5a')]=_0x21c2f0['id'];return db['Condition'][_0xbcf6('0x4f')](_0x3cea14['body']);}})[_0xbcf6('0x29')](respondWithResult(_0x1d155b,null))['catch'](handleError(_0x1d155b,null));};exports[_0xbcf6('0x5b')]=function(_0x59ebf6,_0x218363,_0x377a44){var _0x4c8a8b={};var _0x36e2e4={};var _0x46c481;var _0x49927a;return db[_0xbcf6('0x30')][_0xbcf6('0x5c')]({'where':{'id':_0x59ebf6[_0xbcf6('0x4b')]['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x218363,null))[_0xbcf6('0x29')](function(_0x5497f9){if(_0x5497f9){_0x46c481=_0x5497f9;_0x36e2e4[_0xbcf6('0x35')]=_['keys'](db['Condition'][_0xbcf6('0x31')]);_0x36e2e4[_0xbcf6('0x37')]=_[_0xbcf6('0x38')](_0x59ebf6['query']);_0x36e2e4['filters']=_[_0xbcf6('0x3a')](_0x36e2e4[_0xbcf6('0x35')],_0x36e2e4[_0xbcf6('0x37')]);_0x4c8a8b[_0xbcf6('0x3b')]=_[_0xbcf6('0x3a')](_0x36e2e4[_0xbcf6('0x35')],qs['fields'](_0x59ebf6['query'][_0xbcf6('0x3c')]));_0x4c8a8b[_0xbcf6('0x3b')]=_0x4c8a8b[_0xbcf6('0x3b')][_0xbcf6('0x4c')]?_0x4c8a8b[_0xbcf6('0x3b')]:_0x36e2e4['model'];_0x4c8a8b[_0xbcf6('0x3f')]=qs[_0xbcf6('0x40')](_0x59ebf6[_0xbcf6('0x37')]['sort']);_0x4c8a8b[_0xbcf6('0x44')]=qs[_0xbcf6('0x39')](_['pick'](_0x59ebf6[_0xbcf6('0x37')],_0x36e2e4[_0xbcf6('0x39')]));if(_0x59ebf6[_0xbcf6('0x37')][_0xbcf6('0x42')]){_0x4c8a8b[_0xbcf6('0x44')]=_[_0xbcf6('0x43')](_0x4c8a8b[_0xbcf6('0x44')],{'$or':_[_0xbcf6('0x36')](_0x4c8a8b[_0xbcf6('0x3b')],function(_0x55e7a0){var _0xf8b48a={};_0xf8b48a[_0x55e7a0]={'$like':'%'+_0x59ebf6[_0xbcf6('0x37')]['filter']+'%'};return _0xf8b48a;})});}_0x4c8a8b=_[_0xbcf6('0x43')]({},_0x4c8a8b,_0x59ebf6['options']);return _0x46c481[_0xbcf6('0x5b')](_0x4c8a8b);}})[_0xbcf6('0x29')](function(_0xde8ad7){if(_0xde8ad7){_0x49927a=_0xde8ad7[_0xbcf6('0x4c')];if(!_0x59ebf6[_0xbcf6('0x37')][_0xbcf6('0x3d')](_0xbcf6('0x3e'))){_0x4c8a8b[_0xbcf6('0x20')]=qs[_0xbcf6('0x20')](_0x59ebf6[_0xbcf6('0x37')]['limit']);_0x4c8a8b[_0xbcf6('0x1e')]=qs[_0xbcf6('0x1e')](_0x59ebf6[_0xbcf6('0x37')]['offset']);}return _0x46c481[_0xbcf6('0x5b')](_0x4c8a8b);}})[_0xbcf6('0x29')](function(_0x3b4915){if(_0x3b4915){return _0x3b4915?{'count':_0x49927a,'rows':_0x3b4915}:null;}})[_0xbcf6('0x29')](respondWithResult(_0x218363,null))['catch'](handleError(_0x218363,null));};exports[_0xbcf6('0x5d')]=function(_0x31c8a9,_0x5acd85,_0x49b574){var _0x32d2f1={};var _0x5e7d94={};var _0x187838;var _0x2ca375;return db['Trigger'][_0xbcf6('0x5c')]({'where':{'id':_0x31c8a9[_0xbcf6('0x4b')]['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x5acd85,null))['then'](function(_0x5eddfe){if(_0x5eddfe){_0x187838=_0x5eddfe;_0x5e7d94[_0xbcf6('0x35')]=_['keys'](db['Condition']['rawAttributes']);_0x5e7d94[_0xbcf6('0x37')]=_['keys'](_0x31c8a9['query']);_0x5e7d94[_0xbcf6('0x39')]=_[_0xbcf6('0x3a')](_0x5e7d94[_0xbcf6('0x35')],_0x5e7d94[_0xbcf6('0x37')]);_0x32d2f1[_0xbcf6('0x3b')]=_['intersection'](_0x5e7d94[_0xbcf6('0x35')],qs[_0xbcf6('0x3c')](_0x31c8a9[_0xbcf6('0x37')]['fields']));_0x32d2f1[_0xbcf6('0x3b')]=_0x32d2f1[_0xbcf6('0x3b')][_0xbcf6('0x4c')]?_0x32d2f1[_0xbcf6('0x3b')]:_0x5e7d94[_0xbcf6('0x35')];_0x32d2f1[_0xbcf6('0x3f')]=qs['sort'](_0x31c8a9[_0xbcf6('0x37')][_0xbcf6('0x40')]);_0x32d2f1[_0xbcf6('0x44')]=qs[_0xbcf6('0x39')](_[_0xbcf6('0x41')](_0x31c8a9[_0xbcf6('0x37')],_0x5e7d94[_0xbcf6('0x39')]));if(_0x31c8a9[_0xbcf6('0x37')][_0xbcf6('0x42')]){_0x32d2f1[_0xbcf6('0x44')]=_[_0xbcf6('0x43')](_0x32d2f1[_0xbcf6('0x44')],{'$or':_[_0xbcf6('0x36')](_0x32d2f1[_0xbcf6('0x3b')],function(_0x187ffe){var _0x4ffbe9={};_0x4ffbe9[_0x187ffe]={'$like':'%'+_0x31c8a9[_0xbcf6('0x37')]['filter']+'%'};return _0x4ffbe9;})});}_0x32d2f1=_['merge']({},_0x32d2f1,_0x31c8a9[_0xbcf6('0x4d')]);return _0x187838['getAnyConditions'](_0x32d2f1);}})[_0xbcf6('0x29')](function(_0x4ebb9e){if(_0x4ebb9e){_0x2ca375=_0x4ebb9e[_0xbcf6('0x4c')];if(!_0x31c8a9[_0xbcf6('0x37')][_0xbcf6('0x3d')]('nolimit')){_0x32d2f1[_0xbcf6('0x20')]=qs[_0xbcf6('0x20')](_0x31c8a9[_0xbcf6('0x37')][_0xbcf6('0x20')]);_0x32d2f1['offset']=qs['offset'](_0x31c8a9[_0xbcf6('0x37')]['offset']);}return _0x187838[_0xbcf6('0x5d')](_0x32d2f1);}})[_0xbcf6('0x29')](function(_0x1627cc){if(_0x1627cc){return _0x1627cc?{'count':_0x2ca375,'rows':_0x1627cc}:null;}})[_0xbcf6('0x29')](respondWithResult(_0x5acd85,null))[_0xbcf6('0x49')](handleError(_0x5acd85,null));};exports[_0xbcf6('0x5e')]=function(_0x7e22ec,_0x2c547a,_0x1debca){if(_0x7e22ec[_0xbcf6('0x50')]['id']){delete _0x7e22ec['body']['id'];}return db[_0xbcf6('0x30')][_0xbcf6('0x4e')]({'where':{'id':_0x7e22ec[_0xbcf6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2c547a,null))[_0xbcf6('0x29')](function(_0x3c0303){if(_0x3c0303){_0x7e22ec[_0xbcf6('0x50')][_0xbcf6('0x5f')]=_0x3c0303['id'];return db[_0xbcf6('0x60')][_0xbcf6('0x4f')](_0x7e22ec[_0xbcf6('0x50')]);}})[_0xbcf6('0x29')](respondWithResult(_0x2c547a,null))[_0xbcf6('0x49')](handleError(_0x2c547a,null));};exports[_0xbcf6('0x61')]=function(_0x7c6c4a,_0x15bbf9,_0x197321){var _0x405ce9={};var _0x23c4d0={};var _0x4eef89;var _0xb7be3a;return db[_0xbcf6('0x30')][_0xbcf6('0x5c')]({'where':{'id':_0x7c6c4a[_0xbcf6('0x4b')]['id']}})[_0xbcf6('0x29')](handleEntityNotFound(_0x15bbf9,null))['then'](function(_0x3fb1c7){if(_0x3fb1c7){_0x4eef89=_0x3fb1c7;_0x23c4d0['model']=_['keys'](db[_0xbcf6('0x60')][_0xbcf6('0x31')]);_0x23c4d0[_0xbcf6('0x37')]=_['keys'](_0x7c6c4a[_0xbcf6('0x37')]);_0x23c4d0['filters']=_['intersection'](_0x23c4d0[_0xbcf6('0x35')],_0x23c4d0[_0xbcf6('0x37')]);_0x405ce9[_0xbcf6('0x3b')]=_[_0xbcf6('0x3a')](_0x23c4d0[_0xbcf6('0x35')],qs[_0xbcf6('0x3c')](_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x3c')]));_0x405ce9['attributes']=_0x405ce9['attributes']['length']?_0x405ce9[_0xbcf6('0x3b')]:_0x23c4d0['model'];_0x405ce9[_0xbcf6('0x3f')]=qs[_0xbcf6('0x40')](_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x40')]);_0x405ce9[_0xbcf6('0x44')]=qs[_0xbcf6('0x39')](_[_0xbcf6('0x41')](_0x7c6c4a[_0xbcf6('0x37')],_0x23c4d0['filters']));if(_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x42')]){_0x405ce9[_0xbcf6('0x44')]=_[_0xbcf6('0x43')](_0x405ce9[_0xbcf6('0x44')],{'$or':_[_0xbcf6('0x36')](_0x405ce9[_0xbcf6('0x3b')],function(_0x473be6){var _0x3dcdb6={};_0x3dcdb6[_0x473be6]={'$like':'%'+_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x42')]+'%'};return _0x3dcdb6;})});}_0x405ce9=_[_0xbcf6('0x43')]({},_0x405ce9,_0x7c6c4a['options']);return _0x4eef89[_0xbcf6('0x61')](_0x405ce9);}})[_0xbcf6('0x29')](function(_0x1fe43d){if(_0x1fe43d){_0xb7be3a=_0x1fe43d[_0xbcf6('0x4c')];if(!_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x3d')]('nolimit')){_0x405ce9['limit']=qs['limit'](_0x7c6c4a[_0xbcf6('0x37')][_0xbcf6('0x20')]);_0x405ce9[_0xbcf6('0x1e')]=qs[_0xbcf6('0x1e')](_0x7c6c4a[_0xbcf6('0x37')]['offset']);}return _0x4eef89[_0xbcf6('0x61')](_0x405ce9);}})[_0xbcf6('0x29')](function(_0x140e98){if(_0x140e98){return _0x140e98?{'count':_0xb7be3a,'rows':_0x140e98}:null;}})[_0xbcf6('0x29')](respondWithResult(_0x15bbf9,null))['catch'](handleError(_0x15bbf9,null));};
\ No newline at end of file
index b4782a9..81cf122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad53=['bluebird','request-promise','path','../../config/environment','./trigger.attributes','exports','lodash','util','../../config/logger','api','moment'];(function(_0x4b82ab,_0x2493a5){var _0x4ffa42=function(_0xb8da04){while(--_0xb8da04){_0x4b82ab['push'](_0x4b82ab['shift']());}};_0x4ffa42(++_0x2493a5);}(_0xad53,0x1ea));var _0x3ad5=function(_0x4f00cf,_0x3bb7ac){_0x4f00cf=_0x4f00cf-0x0;var _0x1bab0c=_0xad53[_0x4f00cf];return _0x1bab0c;};'use strict';var _=require(_0x3ad5('0x0'));var util=require(_0x3ad5('0x1'));var logger=require(_0x3ad5('0x2'))(_0x3ad5('0x3'));var moment=require(_0x3ad5('0x4'));var BPromise=require(_0x3ad5('0x5'));var rp=require(_0x3ad5('0x6'));var fs=require('fs');var path=require(_0x3ad5('0x7'));var rimraf=require('rimraf');var config=require(_0x3ad5('0x8'));var attributes=require(_0x3ad5('0x9'));module[_0x3ad5('0xa')]=function(_0x2f75b5,_0x371fbd){return _0x2f75b5['define']('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5636=['./trigger.attributes','exports','define','Trigger','tools_triggers','lodash','util','bluebird','request-promise','path','../../config/environment'];(function(_0x3e6253,_0x3ff5e1){var _0x1bc28f=function(_0x4a799e){while(--_0x4a799e){_0x3e6253['push'](_0x3e6253['shift']());}};_0x1bc28f(++_0x3ff5e1);}(_0x5636,0x102));var _0x6563=function(_0x26d664,_0x1ca532){_0x26d664=_0x26d664-0x0;var _0x4a17d1=_0x5636[_0x26d664];return _0x4a17d1;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6563('0x2'));var rp=require(_0x6563('0x3'));var fs=require('fs');var path=require(_0x6563('0x4'));var rimraf=require('rimraf');var config=require(_0x6563('0x5'));var attributes=require(_0x6563('0x6'));module[_0x6563('0x7')]=function(_0x39792f,_0x29f687){return _0x39792f[_0x6563('0x8')](_0x6563('0x9'),attributes,{'tableName':_0x6563('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f03db1f..d92d4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3969=['error','code','message','result','catch','Trigger','findAll','options','attributes','limit','include','map','model','GetTrigger','stringify','ShowTrigger','raw','where','debug','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s'];(function(_0x5725c6,_0x194dd2){var _0x42e116=function(_0x416bf1){while(--_0x416bf1){_0x5725c6['push'](_0x5725c6['shift']());}};_0x42e116(++_0x194dd2);}(_0x3969,0x157));var _0x9396=function(_0xb05d0,_0x269580){_0xb05d0=_0xb05d0-0x0;var _0x48dd78=_0x3969[_0xb05d0];return _0x48dd78;};'use strict';var _=require('lodash');var util=require(_0x9396('0x0'));var moment=require('moment');var BPromise=require(_0x9396('0x1'));var rs=require(_0x9396('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9396('0x3'))['db'];var utils=require(_0x9396('0x4'));var logger=require(_0x9396('0x5'))(_0x9396('0x6'));var config=require(_0x9396('0x7'));var jayson=require(_0x9396('0x8'));var client=jayson[_0x9396('0x9')][_0x9396('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25d813,_0x5c7f2e,_0x187b7b){return new BPromise(function(_0x25cd69,_0x999b81){return client[_0x9396('0xb')](_0x25d813,_0x187b7b)[_0x9396('0xc')](function(_0x562a95){logger[_0x9396('0xd')](_0x9396('0xe'),_0x5c7f2e,_0x9396('0xf'));logger['debug'](_0x9396('0x10'),_0x5c7f2e,_0x9396('0xf'),JSON['stringify'](_0x562a95));if(_0x562a95[_0x9396('0x11')]){if(_0x562a95[_0x9396('0x11')][_0x9396('0x12')]===0x1f4){logger[_0x9396('0x11')]('Trigger,\x20%s,\x20%s',_0x5c7f2e,_0x562a95[_0x9396('0x11')]['message']);return _0x999b81(_0x562a95[_0x9396('0x11')]['message']);}logger['error'](_0x9396('0xe'),_0x5c7f2e,_0x562a95[_0x9396('0x11')]['message']);return _0x25cd69(_0x562a95[_0x9396('0x11')][_0x9396('0x13')]);}else{logger[_0x9396('0xd')](_0x9396('0xe'),_0x5c7f2e,_0x9396('0xf'));_0x25cd69(_0x562a95[_0x9396('0x14')][_0x9396('0x13')]);}})[_0x9396('0x15')](function(_0x24ffc4){logger[_0x9396('0x11')](_0x9396('0xe'),_0x5c7f2e,_0x24ffc4);_0x999b81(_0x24ffc4);});});}exports['GetTrigger']=function(_0x3faf3f){var _0x4cb406=this;return new Promise(function(_0x51858c,_0x29b0a2){return db[_0x9396('0x16')][_0x9396('0x17')]({'raw':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options']['raw']===undefined?!![]:![]:!![],'where':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options']['where']||null:null,'attributes':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f['options'][_0x9396('0x19')]||null:null,'limit':_0x3faf3f[_0x9396('0x18')]?_0x3faf3f[_0x9396('0x18')][_0x9396('0x1a')]||null:null,'include':_0x3faf3f['options']?_0x3faf3f['options'][_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x3faf3f[_0x9396('0x18')][_0x9396('0x1b')],function(_0x3423f1){return{'model':db[_0x3423f1['model']],'as':_0x3423f1['as'],'attributes':_0x3423f1[_0x9396('0x19')],'include':_0x3423f1[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x3423f1['include'],function(_0x80d790){return{'model':db[_0x80d790['model']],'as':_0x80d790['as'],'attributes':_0x80d790['attributes'],'include':_0x80d790['include']?_[_0x9396('0x1c')](_0x80d790[_0x9396('0x1b')],function(_0x21108f){return{'model':db[_0x21108f[_0x9396('0x1d')]],'as':_0x21108f['as'],'attributes':_0x21108f[_0x9396('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9396('0xc')](function(_0x3b9a12){logger[_0x9396('0xd')]('GetTrigger',_0x3faf3f);logger['debug'](_0x9396('0x1e'),_0x3faf3f,JSON[_0x9396('0x1f')](_0x3b9a12));_0x51858c(_0x3b9a12);})['catch'](function(_0x23b507){logger[_0x9396('0x11')](_0x9396('0x1e'),_0x23b507[_0x9396('0x13')],_0x3faf3f);_0x29b0a2(_0x4cb406[_0x9396('0x11')](0x1f4,_0x23b507[_0x9396('0x13')]));});});};exports[_0x9396('0x20')]=function(_0x4d2ba2){var _0x12e92b=this;return new Promise(function(_0xd53f60,_0x55703d){return db[_0x9396('0x16')]['find']({'raw':_0x4d2ba2['options']?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x21')]===undefined?!![]:![]:!![],'where':_0x4d2ba2[_0x9396('0x18')]?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x22')]||null:null,'attributes':_0x4d2ba2['options']?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x19')]||null:null,'include':_0x4d2ba2[_0x9396('0x18')]?_0x4d2ba2[_0x9396('0x18')][_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x4d2ba2[_0x9396('0x18')][_0x9396('0x1b')],function(_0x44fe14){return{'model':db[_0x44fe14['model']],'as':_0x44fe14['as'],'attributes':_0x44fe14[_0x9396('0x19')],'include':_0x44fe14[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x44fe14[_0x9396('0x1b')],function(_0x1efd4e){return{'model':db[_0x1efd4e[_0x9396('0x1d')]],'as':_0x1efd4e['as'],'attributes':_0x1efd4e[_0x9396('0x19')],'include':_0x1efd4e[_0x9396('0x1b')]?_[_0x9396('0x1c')](_0x1efd4e[_0x9396('0x1b')],function(_0x173018){return{'model':db[_0x173018[_0x9396('0x1d')]],'as':_0x173018['as'],'attributes':_0x173018[_0x9396('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9396('0xc')](function(_0xd0142e){logger[_0x9396('0xd')]('ShowTrigger',_0x4d2ba2);logger[_0x9396('0x23')](_0x9396('0x20'),_0x4d2ba2,JSON[_0x9396('0x1f')](_0xd0142e));_0xd53f60(_0xd0142e);})[_0x9396('0x15')](function(_0x202e79){logger[_0x9396('0x11')]('ShowTrigger',_0x202e79[_0x9396('0x13')],_0x4d2ba2);_0x55703d(_0x12e92b[_0x9396('0x11')](0x1f4,_0x202e79[_0x9396('0x13')]));});});};
\ No newline at end of file
+var _0x658a=['client','http','request','info','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','message','Trigger,\x20%s,\x20%s','result','Trigger','findAll','options','raw','where','attributes','limit','model','include','map','then','GetTrigger','stringify','catch','ShowTrigger','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2a7ae9,_0x317027){var _0x169dff=function(_0x525e29){while(--_0x525e29){_0x2a7ae9['push'](_0x2a7ae9['shift']());}};_0x169dff(++_0x317027);}(_0x658a,0x14c));var _0xa658=function(_0x322c4d,_0x58a943){_0x322c4d=_0x322c4d-0x0;var _0x498f8c=_0x658a[_0x322c4d];return _0x498f8c;};'use strict';var _=require(_0xa658('0x0'));var util=require(_0xa658('0x1'));var moment=require(_0xa658('0x2'));var BPromise=require(_0xa658('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa658('0x4'));var db=require(_0xa658('0x5'))['db'];var utils=require(_0xa658('0x6'));var logger=require(_0xa658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa658('0x8')][_0xa658('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xddca0e,_0x501469,_0x2d2917){return new BPromise(function(_0x3b75c5,_0x1c667b){return client[_0xa658('0xa')](_0xddca0e,_0x2d2917)['then'](function(_0x10bc8f){logger[_0xa658('0xb')]('Trigger,\x20%s,\x20%s',_0x501469,_0xa658('0xc'));logger[_0xa658('0xd')](_0xa658('0xe'),_0x501469,_0xa658('0xc'),JSON['stringify'](_0x10bc8f));if(_0x10bc8f[_0xa658('0xf')]){if(_0x10bc8f[_0xa658('0xf')]['code']===0x1f4){logger[_0xa658('0xf')]('Trigger,\x20%s,\x20%s',_0x501469,_0x10bc8f[_0xa658('0xf')]['message']);return _0x1c667b(_0x10bc8f[_0xa658('0xf')][_0xa658('0x10')]);}logger[_0xa658('0xf')](_0xa658('0x11'),_0x501469,_0x10bc8f['error'][_0xa658('0x10')]);return _0x3b75c5(_0x10bc8f[_0xa658('0xf')][_0xa658('0x10')]);}else{logger[_0xa658('0xb')](_0xa658('0x11'),_0x501469,'request\x20sent');_0x3b75c5(_0x10bc8f[_0xa658('0x12')][_0xa658('0x10')]);}})['catch'](function(_0x5439b7){logger['error']('Trigger,\x20%s,\x20%s',_0x501469,_0x5439b7);_0x1c667b(_0x5439b7);});});}exports['GetTrigger']=function(_0x3cae23){var _0x4cc606=this;return new Promise(function(_0x14604c,_0x45d108){return db[_0xa658('0x13')][_0xa658('0x14')]({'raw':_0x3cae23[_0xa658('0x15')]?_0x3cae23[_0xa658('0x15')][_0xa658('0x16')]===undefined?!![]:![]:!![],'where':_0x3cae23[_0xa658('0x15')]?_0x3cae23['options'][_0xa658('0x17')]||null:null,'attributes':_0x3cae23['options']?_0x3cae23[_0xa658('0x15')][_0xa658('0x18')]||null:null,'limit':_0x3cae23[_0xa658('0x15')]?_0x3cae23[_0xa658('0x15')][_0xa658('0x19')]||null:null,'include':_0x3cae23['options']?_0x3cae23[_0xa658('0x15')]['include']?_['map'](_0x3cae23[_0xa658('0x15')]['include'],function(_0x232970){return{'model':db[_0x232970[_0xa658('0x1a')]],'as':_0x232970['as'],'attributes':_0x232970[_0xa658('0x18')],'include':_0x232970[_0xa658('0x1b')]?_['map'](_0x232970[_0xa658('0x1b')],function(_0x1f614b){return{'model':db[_0x1f614b[_0xa658('0x1a')]],'as':_0x1f614b['as'],'attributes':_0x1f614b[_0xa658('0x18')],'include':_0x1f614b[_0xa658('0x1b')]?_[_0xa658('0x1c')](_0x1f614b['include'],function(_0xe8455b){return{'model':db[_0xe8455b[_0xa658('0x1a')]],'as':_0xe8455b['as'],'attributes':_0xe8455b[_0xa658('0x18')]};}):[]};}):[]};}):[]:[]})[_0xa658('0x1d')](function(_0xb657b3){logger[_0xa658('0xb')]('GetTrigger',_0x3cae23);logger[_0xa658('0xd')](_0xa658('0x1e'),_0x3cae23,JSON[_0xa658('0x1f')](_0xb657b3));_0x14604c(_0xb657b3);})[_0xa658('0x20')](function(_0x45234c){logger[_0xa658('0xf')](_0xa658('0x1e'),_0x45234c[_0xa658('0x10')],_0x3cae23);_0x45d108(_0x4cc606[_0xa658('0xf')](0x1f4,_0x45234c['message']));});});};exports[_0xa658('0x21')]=function(_0x303f79){var _0x523a42=this;return new Promise(function(_0x5b66c4,_0xbc510c){return db[_0xa658('0x13')]['find']({'raw':_0x303f79[_0xa658('0x15')]?_0x303f79[_0xa658('0x15')][_0xa658('0x16')]===undefined?!![]:![]:!![],'where':_0x303f79['options']?_0x303f79['options'][_0xa658('0x17')]||null:null,'attributes':_0x303f79['options']?_0x303f79[_0xa658('0x15')][_0xa658('0x18')]||null:null,'include':_0x303f79['options']?_0x303f79['options'][_0xa658('0x1b')]?_['map'](_0x303f79[_0xa658('0x15')][_0xa658('0x1b')],function(_0x2068ae){return{'model':db[_0x2068ae[_0xa658('0x1a')]],'as':_0x2068ae['as'],'attributes':_0x2068ae[_0xa658('0x18')],'include':_0x2068ae['include']?_['map'](_0x2068ae[_0xa658('0x1b')],function(_0x1a5bb3){return{'model':db[_0x1a5bb3[_0xa658('0x1a')]],'as':_0x1a5bb3['as'],'attributes':_0x1a5bb3['attributes'],'include':_0x1a5bb3[_0xa658('0x1b')]?_[_0xa658('0x1c')](_0x1a5bb3[_0xa658('0x1b')],function(_0xa269b1){return{'model':db[_0xa269b1[_0xa658('0x1a')]],'as':_0xa269b1['as'],'attributes':_0xa269b1[_0xa658('0x18')]};}):[]};}):[]};}):[]:[]})[_0xa658('0x1d')](function(_0x353f33){logger[_0xa658('0xb')](_0xa658('0x21'),_0x303f79);logger[_0xa658('0xd')]('ShowTrigger',_0x303f79,JSON[_0xa658('0x1f')](_0x353f33));_0x5b66c4(_0x353f33);})[_0xa658('0x20')](function(_0x516100){logger[_0xa658('0xf')](_0xa658('0x21'),_0x516100[_0xa658('0x10')],_0x303f79);_0xbc510c(_0x523a42['error'](0x1f4,_0x516100['message']));});});};
\ No newline at end of file
index 0a00824..d9dda43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x846e=['../../config/environment','get','isAuthenticated','index','/:id','post','/:id/clone','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4f2a59,_0x1404a3){var _0x355ea9=function(_0x17127){while(--_0x17127){_0x4f2a59['push'](_0x4f2a59['shift']());}};_0x355ea9(++_0x1404a3);}(_0x846e,0x173));var _0xe846=function(_0x3ebbf1,_0x22efbf){_0x3ebbf1=_0x3ebbf1-0x0;var _0x53e75a=_0x846e[_0x3ebbf1];return _0x53e75a;};'use strict';var multer=require(_0xe846('0x0'));var util=require(_0xe846('0x1'));var path=require(_0xe846('0x2'));var timeout=require(_0xe846('0x3'));var express=require(_0xe846('0x4'));var router=express[_0xe846('0x5')]();var fs_extra=require(_0xe846('0x6'));var auth=require(_0xe846('0x7'));var interaction=require(_0xe846('0x8'));var config=require(_0xe846('0x9'));var controller=require('./trunk.controller');router[_0xe846('0xa')]('/',auth[_0xe846('0xb')](),controller[_0xe846('0xc')]);router[_0xe846('0xa')](_0xe846('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe846('0xe')](_0xe846('0xf'),auth[_0xe846('0xb')](),controller['clone']);router[_0xe846('0xe')]('/',auth[_0xe846('0xb')](),controller['create']);router[_0xe846('0x10')](_0xe846('0xd'),auth[_0xe846('0xb')](),controller[_0xe846('0x11')]);router[_0xe846('0x12')](_0xe846('0xd'),auth[_0xe846('0xb')](),controller[_0xe846('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd7dd=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trunk.controller','get','index','/:id','show','post','isAuthenticated','put','exports','path','connect-timeout','Router'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xd7dd,0x15d));var _0xdd7d=function(_0x11be7d,_0x58724b){_0x11be7d=_0x11be7d-0x0;var _0x3384b0=_0xd7dd[_0x11be7d];return _0x3384b0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdd7d('0x0'));var timeout=require(_0xdd7d('0x1'));var express=require('express');var router=express[_0xdd7d('0x2')]();var fs_extra=require(_0xdd7d('0x3'));var auth=require(_0xdd7d('0x4'));var interaction=require(_0xdd7d('0x5'));var config=require(_0xdd7d('0x6'));var controller=require(_0xdd7d('0x7'));router[_0xdd7d('0x8')]('/',auth['isAuthenticated'](),controller[_0xdd7d('0x9')]);router['get'](_0xdd7d('0xa'),auth['isAuthenticated'](),controller[_0xdd7d('0xb')]);router[_0xdd7d('0xc')]('/:id/clone',auth[_0xdd7d('0xd')](),controller['clone']);router[_0xdd7d('0xc')]('/',auth[_0xdd7d('0xd')](),controller['create']);router[_0xdd7d('0xe')](_0xdd7d('0xa'),auth[_0xdd7d('0xd')](),controller['update']);router['delete']('/:id',auth[_0xdd7d('0xd')](),controller['destroy']);module[_0xdd7d('0xf')]=router;
\ No newline at end of file
index 033dbd6..2f36ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ccc=['PROHIB_FAILED_SCREEN','setDataValue','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','shortinfo','inband','auto','rfc2833','yes','nonat','outgoing','force_rport,comedia','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update','update,nonat','BOOLEAN','sequelize','name','user','peer','STRING','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6ccc,0x144));var _0xc6cc=function(_0x29eb10,_0x190cb3){_0x29eb10=_0x29eb10-0x0;var _0x5371a2=_0x6ccc[_0x29eb10];return _0x5371a2;};'use strict';var Sequelize=require(_0xc6cc('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc6cc('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('friend',_0xc6cc('0x2'),_0xc6cc('0x3')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xc6cc('0x4')],'allowNull':![],'defaultValue':_0xc6cc('0x5')},'callingpres':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x7'),'ALLOWED_PASSED_SCREEN',_0xc6cc('0x8'),_0xc6cc('0x9'),_0xc6cc('0xa'),_0xc6cc('0xb'),_0xc6cc('0xc'),'PROHIB')},'deny':{'type':Sequelize['STRING']},'permit':{'type':Sequelize[_0xc6cc('0x4')]},'secret':{'type':Sequelize[_0xc6cc('0x4')]},'md5secret':{'type':Sequelize[_0xc6cc('0x4')]},'remotesecret':{'type':Sequelize[_0xc6cc('0x4')]},'transport':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'udp','set':function(_0x584d23){this[_0xc6cc('0xd')]('transport',_0x584d23?_0x584d23['join'](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0xf'))?this[_0xc6cc('0xe')](_0xc6cc('0xf'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x11')},'dtmfmode':{'type':Sequelize[_0xc6cc('0x6')]('rfc2833','info',_0xc6cc('0x12'),_0xc6cc('0x13'),_0xc6cc('0x14')),'defaultValue':_0xc6cc('0x15')},'directmedia':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no',_0xc6cc('0x17'),'update',_0xc6cc('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xc6cc('0x4')]},'directmediadeny':{'type':Sequelize[_0xc6cc('0x4')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xc6cc('0x19'),'set':function(_0x3b05d0){this['setDataValue'](_0xc6cc('0x1a'),_0x3b05d0?_0x3b05d0[_0xc6cc('0x1b')](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1a'))?this['getDataValue'](_0xc6cc('0x1a'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x1c')},'callgroup':{'type':Sequelize[_0xc6cc('0x4')]},'namedcallgroup':{'type':Sequelize[_0xc6cc('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc6cc('0x4')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc6cc('0x1d'),'set':function(_0x54a591){this[_0xc6cc('0xd')]('allow',_0x54a591?_0x54a591[_0xc6cc('0x1b')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1e'))?this[_0xc6cc('0xe')](_0xc6cc('0x1e'))[_0xc6cc('0x10')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'insecure':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'port,invite','set':function(_0x72ce5e){this[_0xc6cc('0xd')](_0xc6cc('0x1f'),_0x72ce5e?_0x72ce5e[_0xc6cc('0x1b')](','):null);},'get':function(){return this[_0xc6cc('0xe')](_0xc6cc('0x1f'))?this[_0xc6cc('0xe')](_0xc6cc('0x1f'))[_0xc6cc('0x10')](','):null;},'comment':_0xc6cc('0x20')},'trustrpid':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no','never')},'promiscredir':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'useclientcode':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'accountcode':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'setvar':{'type':Sequelize[_0xc6cc('0x4')]},'callerid':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xc6cc('0x4')]},'callcounter':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'allowoverlap':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xc6cc('0x4')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no')},'mailbox':{'type':Sequelize[_0xc6cc('0x4')]},'session_timers':{'type':Sequelize['ENUM']('accept',_0xc6cc('0x22'),_0xc6cc('0x23'))},'session_expires':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'session_minse':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'session_refresher':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x24'),_0xc6cc('0x25')),'defaultValue':_0xc6cc('0x25')},'t38pt_usertpsource':{'type':Sequelize[_0xc6cc('0x4')]},'regexten':{'type':Sequelize[_0xc6cc('0x4')]},'fromdomain':{'type':Sequelize[_0xc6cc('0x4')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xc6cc('0x21')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'defaultip':{'type':Sequelize[_0xc6cc('0x4')]},'defaultuser':{'type':Sequelize[_0xc6cc('0x4')]},'rtptimeout':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'sendrpid':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no',_0xc6cc('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc6cc('0x4')]},'callbackextension':{'type':Sequelize[_0xc6cc('0x4')]},'timert1':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'timerb':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'qualifyfreq':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'contactpermit':{'type':Sequelize[_0xc6cc('0x4')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xc6cc('0x4')]},'unsolicited_mailbox':{'type':Sequelize[_0xc6cc('0x4')]},'use_q850_reason':{'type':Sequelize[_0xc6cc('0x4')]},'maxforwards':{'type':Sequelize[_0xc6cc('0x21')](0xb)},'encryption':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc6cc('0x6')]('yes','no')},'force_avp':{'type':Sequelize['ENUM']('yes','no')},'icesupport':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0xc6cc('0x6')]('yes','no',_0xc6cc('0x27'),_0xc6cc('0x28'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xc6cc('0x4')]},'dtlsprivatekey':{'type':Sequelize[_0xc6cc('0x4')]},'dtlscipher':{'type':Sequelize[_0xc6cc('0x4')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xc6cc('0x4')]},'dtlssetup':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x29'),_0xc6cc('0x2a'),_0xc6cc('0x2b')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xc6cc('0x4')]},'usereqphone':{'type':Sequelize[_0xc6cc('0x6')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xc6cc('0x4')]},'call_limit':{'type':Sequelize[_0xc6cc('0x21')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xc6cc('0x6')](_0xc6cc('0x16'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0xc6cc('0x4')]},'mohinterpret':{'type':Sequelize[_0xc6cc('0x4')]},'mohsuggest':{'type':Sequelize[_0xc6cc('0x4')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc6cc('0x4')]},'host':{'type':Sequelize[_0xc6cc('0x4')],'defaultValue':_0xc6cc('0x2c')},'canreinvite':{'type':Sequelize['ENUM'](_0xc6cc('0x16'),'no',_0xc6cc('0x17'),_0xc6cc('0x2d'),_0xc6cc('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xc6cc('0x4')]},'active':{'type':Sequelize[_0xc6cc('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0x5c3c=['ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','split','rfc2833','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','refuse','originate','pai','certificate','active','passive','actpass','dynamic','update,nonat','sequelize','exports','STRING','ENUM','peer','friend','from-voip-provider','ALLOWED_NOT_SCREENED'];(function(_0x3be386,_0x166d12){var _0x8bf62f=function(_0x21b932){while(--_0x21b932){_0x3be386['push'](_0x3be386['shift']());}};_0x8bf62f(++_0x166d12);}(_0x5c3c,0x118));var _0xc5c3=function(_0x39d544,_0x35c14f){_0x39d544=_0x39d544-0x0;var _0x5a5ff2=_0x5c3c[_0x39d544];return _0x5a5ff2;};'use strict';var Sequelize=require(_0xc5c3('0x0'));module[_0xc5c3('0x1')]={'name':{'type':Sequelize[_0xc5c3('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc5c3('0x3')]('friend','user',_0xc5c3('0x4')),'allowNull':![],'defaultValue':_0xc5c3('0x5')},'context':{'type':Sequelize[_0xc5c3('0x2')],'allowNull':![],'defaultValue':_0xc5c3('0x6')},'callingpres':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x7'),_0xc5c3('0x8'),_0xc5c3('0x9'),_0xc5c3('0xa'),'PROHIB_NOT_SCREENED',_0xc5c3('0xb'),_0xc5c3('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0xc5c3('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xc5c3('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0xc5c3('0x2')]},'transport':{'type':Sequelize[_0xc5c3('0x2')],'defaultValue':_0xc5c3('0xd'),'set':function(_0x5e4eaa){this[_0xc5c3('0xe')](_0xc5c3('0xf'),_0x5e4eaa?_0x5e4eaa[_0xc5c3('0x10')](','):null);},'get':function(){return this[_0xc5c3('0x11')](_0xc5c3('0xf'))?this['getDataValue'](_0xc5c3('0xf'))[_0xc5c3('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x13'),'info','shortinfo',_0xc5c3('0x14'),_0xc5c3('0x15')),'defaultValue':_0xc5c3('0x13')},'directmedia':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no',_0xc5c3('0x17'),_0xc5c3('0x18'),_0xc5c3('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xc5c3('0x2')]},'directmediadeny':{'type':Sequelize[_0xc5c3('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0xc5c3('0x1a'),'set':function(_0x163e41){this['setDataValue']('nat',_0x163e41?_0x163e41['join'](','):null);},'get':function(){return this[_0xc5c3('0x11')]('nat')?this[_0xc5c3('0x11')](_0xc5c3('0x1b'))[_0xc5c3('0x12')](','):null;},'comment':_0xc5c3('0x1c')},'callgroup':{'type':Sequelize[_0xc5c3('0x2')]},'namedcallgroup':{'type':Sequelize[_0xc5c3('0x2')]},'pickupgroup':{'type':Sequelize[_0xc5c3('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xc5c3('0x2')]},'language':{'type':Sequelize[_0xc5c3('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xc5c3('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xc5c3('0x1d')},'allow':{'type':Sequelize[_0xc5c3('0x2')],'allowNull':![],'defaultValue':_0xc5c3('0x1e'),'set':function(_0x5931a4){this['setDataValue'](_0xc5c3('0x1f'),_0x5931a4?_0x5931a4[_0xc5c3('0x10')](';'):_0xc5c3('0x1e'));},'get':function(){return this[_0xc5c3('0x11')]('allow')?this[_0xc5c3('0x11')]('allow')[_0xc5c3('0x12')](';'):null;},'comment':_0xc5c3('0x20')},'autoframing':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'insecure':{'type':Sequelize[_0xc5c3('0x2')],'defaultValue':_0xc5c3('0x21'),'set':function(_0x15a367){this[_0xc5c3('0xe')](_0xc5c3('0x22'),_0x15a367?_0x15a367['join'](','):null);},'get':function(){return this[_0xc5c3('0x11')](_0xc5c3('0x22'))?this[_0xc5c3('0x11')](_0xc5c3('0x22'))[_0xc5c3('0x12')](','):null;},'comment':_0xc5c3('0x23')},'trustrpid':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xc5c3('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no',_0xc5c3('0x24'))},'promiscredir':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xc5c3('0x3')]('yes','no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xc5c3('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xc5c3('0x25')},'amaflags':{'type':Sequelize[_0xc5c3('0x2')]},'callcounter':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no'),'defaultValue':_0xc5c3('0x16')},'busylevel':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xc5c3('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xc5c3('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0xc5c3('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0xc5c3('0x2')]},'session_timers':{'type':Sequelize[_0xc5c3('0x3')]('accept',_0xc5c3('0x27'),_0xc5c3('0x28'))},'session_expires':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'session_minse':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0xc5c3('0x3')]('uac','uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xc5c3('0x2')]},'regexten':{'type':Sequelize[_0xc5c3('0x2')]},'fromdomain':{'type':Sequelize[_0xc5c3('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xc5c3('0x2')]},'defaultuser':{'type':Sequelize[_0xc5c3('0x2')]},'rtptimeout':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no',_0xc5c3('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc5c3('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xc5c3('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xc5c3('0x2')]},'maxforwards':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no')},'force_avp':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0xc5c3('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0xc5c3('0x3')]('yes','no','fingerprint',_0xc5c3('0x2a'))},'dtlsrekey':{'type':Sequelize[_0xc5c3('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0xc5c3('0x2')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xc5c3('0x2')]},'dtlscapath':{'type':Sequelize[_0xc5c3('0x2')]},'dtlssetup':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x2b'),_0xc5c3('0x2c'),_0xc5c3('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xc5c3('0x2')]},'usereqphone':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xc5c3('0x2')]},'recordofffeature':{'type':Sequelize[_0xc5c3('0x2')]},'call_limit':{'type':Sequelize[_0xc5c3('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no')},'vmexten':{'type':Sequelize[_0xc5c3('0x2')]},'mohinterpret':{'type':Sequelize[_0xc5c3('0x2')]},'mohsuggest':{'type':Sequelize[_0xc5c3('0x2')]},'parkinglot':{'type':Sequelize[_0xc5c3('0x2')]},'description':{'type':Sequelize[_0xc5c3('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0xc5c3('0x2e')},'canreinvite':{'type':Sequelize[_0xc5c3('0x3')](_0xc5c3('0x16'),'no',_0xc5c3('0x17'),_0xc5c3('0x18'),_0xc5c3('0x2f')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xc5c3('0x2')]},'otherFields':{'type':Sequelize[_0xc5c3('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 1f4b26c..6197b0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x9f833a,_0x317091){var _0x1ee10=function(_0x50a640){while(--_0x50a640){_0x9f833a['push'](_0x9f833a['shift']());}};_0x1ee10(++_0x317091);}(_0x9a19,0x114));var _0x99a1=function(_0x26b5ff,_0x92009a){_0x26b5ff=_0x26b5ff-0x0;var _0x58603e=_0x9a19[_0x26b5ff];return _0x58603e;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));};
\ No newline at end of file
+var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x12872e,_0x1553cf){var _0x40f150=function(_0x52a8c8){while(--_0x52a8c8){_0x12872e['push'](_0x12872e['shift']());}};_0x40f150(++_0x1553cf);}(_0x98a8,0x12c));var _0x898a=function(_0x41fcba,_0x4dffd2){_0x41fcba=_0x41fcba-0x0;var _0x9e1a73=_0x98a8[_0x41fcba];return _0x9e1a73;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
index c781f4d..eb21792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5e2=['Trunk','tools_trunks','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports','define'];(function(_0x4db3b9,_0x3dbcd3){var _0x25771b=function(_0x359f0d){while(--_0x359f0d){_0x4db3b9['push'](_0x4db3b9['shift']());}};_0x25771b(++_0x3dbcd3);}(_0xa5e2,0x10a));var _0x2a5e=function(_0x49440c,_0x219645){_0x49440c=_0x49440c-0x0;var _0x52b3a1=_0xa5e2[_0x49440c];return _0x52b3a1;};'use strict';var _=require(_0x2a5e('0x0'));var util=require(_0x2a5e('0x1'));var logger=require(_0x2a5e('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2a5e('0x3'));var fs=require('fs');var path=require(_0x2a5e('0x4'));var rimraf=require(_0x2a5e('0x5'));var config=require(_0x2a5e('0x6'));var attributes=require(_0x2a5e('0x7'));module[_0x2a5e('0x8')]=function(_0x2d4623,_0xcb1758){return _0x2d4623[_0x2a5e('0x9')](_0x2a5e('0xa'),attributes,{'tableName':_0x2a5e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ca8=['../../config/logger','moment','path','rimraf','./trunk.attributes','util'];(function(_0x26e2d9,_0x55f20f){var _0x496105=function(_0x2e78ca){while(--_0x2e78ca){_0x26e2d9['push'](_0x26e2d9['shift']());}};_0x496105(++_0x55f20f);}(_0x1ca8,0xb9));var _0x81ca=function(_0x5b762a,_0x399f1e){_0x5b762a=_0x5b762a-0x0;var _0x3d11db=_0x1ca8[_0x5b762a];return _0x3d11db;};'use strict';var _=require('lodash');var util=require(_0x81ca('0x0'));var logger=require(_0x81ca('0x1'))('api');var moment=require(_0x81ca('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x81ca('0x3'));var rimraf=require(_0x81ca('0x4'));var config=require('../../config/environment');var attributes=require(_0x81ca('0x5'));module['exports']=function(_0x1403b6,_0x195a72){return _0x1403b6['define']('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc8e22b..1259e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd7c=['ShowTrunk','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','GetTrunk','Trunk','findAll','options','raw','where','limit','include','map','model','attributes','stringify','catch','find'];(function(_0x35e92e,_0x21581b){var _0x1205a8=function(_0x4325d8){while(--_0x4325d8){_0x35e92e['push'](_0x35e92e['shift']());}};_0x1205a8(++_0x21581b);}(_0xdd7c,0xbf));var _0xcdd7=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xdd7c[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0xcdd7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcdd7('0x1'));var rs=require(_0xcdd7('0x2'));var fs=require('fs');var Redis=require(_0xcdd7('0x3'));var db=require(_0xcdd7('0x4'))['db'];var utils=require(_0xcdd7('0x5'));var logger=require(_0xcdd7('0x6'))(_0xcdd7('0x7'));var config=require(_0xcdd7('0x8'));var jayson=require(_0xcdd7('0x9'));var client=jayson[_0xcdd7('0xa')][_0xcdd7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x327b4e,_0x38fff2,_0x33a73c){return new BPromise(function(_0x144bf4,_0x370b87){return client[_0xcdd7('0xc')](_0x327b4e,_0x33a73c)[_0xcdd7('0xd')](function(_0x5a7c5e){logger[_0xcdd7('0xe')](_0xcdd7('0xf'),_0x38fff2,_0xcdd7('0x10'));logger[_0xcdd7('0x11')](_0xcdd7('0x12'),_0x38fff2,_0xcdd7('0x10'),JSON['stringify'](_0x5a7c5e));if(_0x5a7c5e['error']){if(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x14')]===0x1f4){logger[_0xcdd7('0x13')]('Trunk,\x20%s,\x20%s',_0x38fff2,_0x5a7c5e['error'][_0xcdd7('0x15')]);return _0x370b87(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);}logger[_0xcdd7('0x13')]('Trunk,\x20%s,\x20%s',_0x38fff2,_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);return _0x144bf4(_0x5a7c5e[_0xcdd7('0x13')][_0xcdd7('0x15')]);}else{logger[_0xcdd7('0xe')](_0xcdd7('0xf'),_0x38fff2,_0xcdd7('0x10'));_0x144bf4(_0x5a7c5e[_0xcdd7('0x16')][_0xcdd7('0x15')]);}})['catch'](function(_0x50a308){logger[_0xcdd7('0x13')](_0xcdd7('0xf'),_0x38fff2,_0x50a308);_0x370b87(_0x50a308);});});}exports[_0xcdd7('0x17')]=function(_0x5b6876){var _0xfef816=this;return new Promise(function(_0x2b2463,_0xd70da9){return db[_0xcdd7('0x18')][_0xcdd7('0x19')]({'raw':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1b')]===undefined?!![]:![]:!![],'where':_0x5b6876['options']?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1c')]||null:null,'attributes':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')]['attributes']||null:null,'limit':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1d')]||null:null,'include':_0x5b6876[_0xcdd7('0x1a')]?_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x5b6876[_0xcdd7('0x1a')][_0xcdd7('0x1e')],function(_0x3e2e97){return{'model':db[_0x3e2e97[_0xcdd7('0x20')]],'as':_0x3e2e97['as'],'attributes':_0x3e2e97[_0xcdd7('0x21')],'include':_0x3e2e97[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x3e2e97[_0xcdd7('0x1e')],function(_0x48502c){return{'model':db[_0x48502c[_0xcdd7('0x20')]],'as':_0x48502c['as'],'attributes':_0x48502c[_0xcdd7('0x21')],'include':_0x48502c[_0xcdd7('0x1e')]?_['map'](_0x48502c[_0xcdd7('0x1e')],function(_0x52d4de){return{'model':db[_0x52d4de[_0xcdd7('0x20')]],'as':_0x52d4de['as'],'attributes':_0x52d4de[_0xcdd7('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f3800){logger['info'](_0xcdd7('0x17'),_0x5b6876);logger[_0xcdd7('0x11')](_0xcdd7('0x17'),_0x5b6876,JSON[_0xcdd7('0x22')](_0x5f3800));_0x2b2463(_0x5f3800);})[_0xcdd7('0x23')](function(_0x5a5f34){logger[_0xcdd7('0x13')](_0xcdd7('0x17'),_0x5a5f34[_0xcdd7('0x15')],_0x5b6876);_0xd70da9(_0xfef816[_0xcdd7('0x13')](0x1f4,_0x5a5f34[_0xcdd7('0x15')]));});});};exports['ShowTrunk']=function(_0x368dd5){var _0x4cccd2=this;return new Promise(function(_0x9bc1f3,_0x3d872c){return db['Trunk'][_0xcdd7('0x24')]({'raw':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5[_0xcdd7('0x1a')][_0xcdd7('0x1b')]===undefined?!![]:![]:!![],'where':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5['options'][_0xcdd7('0x1c')]||null:null,'attributes':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5['options'][_0xcdd7('0x21')]||null:null,'include':_0x368dd5[_0xcdd7('0x1a')]?_0x368dd5[_0xcdd7('0x1a')][_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x368dd5['options']['include'],function(_0x3776a2){return{'model':db[_0x3776a2[_0xcdd7('0x20')]],'as':_0x3776a2['as'],'attributes':_0x3776a2[_0xcdd7('0x21')],'include':_0x3776a2[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x3776a2['include'],function(_0x504a26){return{'model':db[_0x504a26[_0xcdd7('0x20')]],'as':_0x504a26['as'],'attributes':_0x504a26[_0xcdd7('0x21')],'include':_0x504a26[_0xcdd7('0x1e')]?_[_0xcdd7('0x1f')](_0x504a26[_0xcdd7('0x1e')],function(_0x9422bf){return{'model':db[_0x9422bf[_0xcdd7('0x20')]],'as':_0x9422bf['as'],'attributes':_0x9422bf[_0xcdd7('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcdd7('0xd')](function(_0x1d0c23){logger[_0xcdd7('0xe')]('ShowTrunk',_0x368dd5);logger[_0xcdd7('0x11')](_0xcdd7('0x25'),_0x368dd5,JSON['stringify'](_0x1d0c23));_0x9bc1f3(_0x1d0c23);})[_0xcdd7('0x23')](function(_0x4fae81){logger[_0xcdd7('0x13')](_0xcdd7('0x25'),_0x4fae81['message'],_0x368dd5);_0x3d872c(_0x4cccd2[_0xcdd7('0x13')](0x1f4,_0x4fae81[_0xcdd7('0x15')]));});});};
\ No newline at end of file
+var _0xf47c=['result','catch','GetTrunk','findAll','options','raw','where','attributes','include','map','model','Trunk','ShowTrunk','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x4b07e1,_0x228767){var _0x30e9d1=function(_0x537b43){while(--_0x537b43){_0x4b07e1['push'](_0x4b07e1['shift']());}};_0x30e9d1(++_0x228767);}(_0xf47c,0xb2));var _0xcf47=function(_0x173b17,_0x5b1e26){_0x173b17=_0x173b17-0x0;var _0x4a3089=_0xf47c[_0x173b17];return _0x4a3089;};'use strict';var _=require(_0xcf47('0x0'));var util=require('util');var moment=require(_0xcf47('0x1'));var BPromise=require(_0xcf47('0x2'));var rs=require(_0xcf47('0x3'));var fs=require('fs');var Redis=require(_0xcf47('0x4'));var db=require(_0xcf47('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcf47('0x6'))(_0xcf47('0x7'));var config=require(_0xcf47('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xcf47('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5875ec,_0x27f85b,_0x13f055){return new BPromise(function(_0x25abef,_0x3ea88f){return client[_0xcf47('0xa')](_0x5875ec,_0x13f055)[_0xcf47('0xb')](function(_0x5dc58e){logger[_0xcf47('0xc')](_0xcf47('0xd'),_0x27f85b,_0xcf47('0xe'));logger[_0xcf47('0xf')](_0xcf47('0x10'),_0x27f85b,_0xcf47('0xe'),JSON[_0xcf47('0x11')](_0x5dc58e));if(_0x5dc58e[_0xcf47('0x12')]){if(_0x5dc58e[_0xcf47('0x12')]['code']===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x27f85b,_0x5dc58e[_0xcf47('0x12')]['message']);return _0x3ea88f(_0x5dc58e[_0xcf47('0x12')][_0xcf47('0x13')]);}logger['error'](_0xcf47('0xd'),_0x27f85b,_0x5dc58e[_0xcf47('0x12')]['message']);return _0x25abef(_0x5dc58e[_0xcf47('0x12')][_0xcf47('0x13')]);}else{logger['info'](_0xcf47('0xd'),_0x27f85b,'request\x20sent');_0x25abef(_0x5dc58e[_0xcf47('0x14')]['message']);}})[_0xcf47('0x15')](function(_0x22d502){logger[_0xcf47('0x12')]('Trunk,\x20%s,\x20%s',_0x27f85b,_0x22d502);_0x3ea88f(_0x22d502);});});}exports[_0xcf47('0x16')]=function(_0x468e8e){var _0x5ab118=this;return new Promise(function(_0x32836c,_0x14a5ce){return db['Trunk'][_0xcf47('0x17')]({'raw':_0x468e8e[_0xcf47('0x18')]?_0x468e8e[_0xcf47('0x18')][_0xcf47('0x19')]===undefined?!![]:![]:!![],'where':_0x468e8e[_0xcf47('0x18')]?_0x468e8e[_0xcf47('0x18')][_0xcf47('0x1a')]||null:null,'attributes':_0x468e8e[_0xcf47('0x18')]?_0x468e8e[_0xcf47('0x18')][_0xcf47('0x1b')]||null:null,'limit':_0x468e8e[_0xcf47('0x18')]?_0x468e8e[_0xcf47('0x18')]['limit']||null:null,'include':_0x468e8e[_0xcf47('0x18')]?_0x468e8e[_0xcf47('0x18')][_0xcf47('0x1c')]?_[_0xcf47('0x1d')](_0x468e8e[_0xcf47('0x18')][_0xcf47('0x1c')],function(_0xe45cdc){return{'model':db[_0xe45cdc[_0xcf47('0x1e')]],'as':_0xe45cdc['as'],'attributes':_0xe45cdc[_0xcf47('0x1b')],'include':_0xe45cdc[_0xcf47('0x1c')]?_['map'](_0xe45cdc[_0xcf47('0x1c')],function(_0x556885){return{'model':db[_0x556885[_0xcf47('0x1e')]],'as':_0x556885['as'],'attributes':_0x556885[_0xcf47('0x1b')],'include':_0x556885[_0xcf47('0x1c')]?_['map'](_0x556885[_0xcf47('0x1c')],function(_0x113576){return{'model':db[_0x113576[_0xcf47('0x1e')]],'as':_0x113576['as'],'attributes':_0x113576[_0xcf47('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x407be5){logger[_0xcf47('0xc')](_0xcf47('0x16'),_0x468e8e);logger[_0xcf47('0xf')]('GetTrunk',_0x468e8e,JSON[_0xcf47('0x11')](_0x407be5));_0x32836c(_0x407be5);})['catch'](function(_0x2b8afd){logger[_0xcf47('0x12')](_0xcf47('0x16'),_0x2b8afd['message'],_0x468e8e);_0x14a5ce(_0x5ab118['error'](0x1f4,_0x2b8afd['message']));});});};exports['ShowTrunk']=function(_0xf992de){var _0x22f925=this;return new Promise(function(_0x2e9a44,_0x183bd2){return db[_0xcf47('0x1f')]['find']({'raw':_0xf992de[_0xcf47('0x18')]?_0xf992de[_0xcf47('0x18')][_0xcf47('0x19')]===undefined?!![]:![]:!![],'where':_0xf992de['options']?_0xf992de[_0xcf47('0x18')][_0xcf47('0x1a')]||null:null,'attributes':_0xf992de[_0xcf47('0x18')]?_0xf992de[_0xcf47('0x18')][_0xcf47('0x1b')]||null:null,'include':_0xf992de['options']?_0xf992de['options'][_0xcf47('0x1c')]?_['map'](_0xf992de[_0xcf47('0x18')][_0xcf47('0x1c')],function(_0x8be335){return{'model':db[_0x8be335['model']],'as':_0x8be335['as'],'attributes':_0x8be335[_0xcf47('0x1b')],'include':_0x8be335[_0xcf47('0x1c')]?_[_0xcf47('0x1d')](_0x8be335[_0xcf47('0x1c')],function(_0x2d951e){return{'model':db[_0x2d951e[_0xcf47('0x1e')]],'as':_0x2d951e['as'],'attributes':_0x2d951e[_0xcf47('0x1b')],'include':_0x2d951e['include']?_[_0xcf47('0x1d')](_0x2d951e[_0xcf47('0x1c')],function(_0x4654fc){return{'model':db[_0x4654fc[_0xcf47('0x1e')]],'as':_0x4654fc['as'],'attributes':_0x4654fc['attributes']};}):[]};}):[]};}):[]:[]})[_0xcf47('0xb')](function(_0x2d8a24){logger[_0xcf47('0xc')](_0xcf47('0x20'),_0xf992de);logger[_0xcf47('0xf')](_0xcf47('0x20'),_0xf992de,JSON[_0xcf47('0x11')](_0x2d8a24));_0x2e9a44(_0x2d8a24);})[_0xcf47('0x15')](function(_0x350873){logger[_0xcf47('0x12')](_0xcf47('0x20'),_0x350873[_0xcf47('0x13')],_0xf992de);_0x183bd2(_0x22f925[_0xcf47('0x12')](0x1f4,_0x350873[_0xcf47('0x13')]));});});};
\ No newline at end of file
index b185fa0..f924943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x510d=['isAuthenticated','update','exports','express','Router','../../components/auth/service','./user-setting.controller','/:id'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x510d,0x123));var _0xd510=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x510d[_0x9aada2];return _0x196dff;};'use strict';var express=require(_0xd510('0x0'));var router=express[_0xd510('0x1')]();var auth=require(_0xd510('0x2'));var controller=require(_0xd510('0x3'));router['put'](_0xd510('0x4'),auth[_0xd510('0x5')](),controller[_0xd510('0x6')]);module[_0xd510('0x7')]=router;
\ No newline at end of file
+var _0x717a=['/:id','isAuthenticated','update','exports','Router','./user-setting.controller','put'];(function(_0x37856e,_0x1b0cbf){var _0x2b9d5a=function(_0x4db482){while(--_0x4db482){_0x37856e['push'](_0x37856e['shift']());}};_0x2b9d5a(++_0x1b0cbf);}(_0x717a,0x100));var _0xa717=function(_0x44d9ab,_0x76bc69){_0x44d9ab=_0x44d9ab-0x0;var _0x31485e=_0x717a[_0x44d9ab];return _0x31485e;};'use strict';var express=require('express');var router=express[_0xa717('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xa717('0x1'));router[_0xa717('0x2')](_0xa717('0x3'),auth[_0xa717('0x4')](),controller[_0xa717('0x5')]);module[_0xa717('0x6')]=router;
\ No newline at end of file
index d41261b..39168bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd9=['debug','exports','ENUM','error','TEXT','DATE','INTEGER','sequelize','warning'];(function(_0x1f563c,_0x28546f){var _0x56d71c=function(_0x56b072){while(--_0x56b072){_0x1f563c['push'](_0x1f563c['shift']());}};_0x56d71c(++_0x28546f);}(_0x2fd9,0x85));var _0x92fd=function(_0x38168e,_0x1b7cb0){_0x38168e=_0x38168e-0x0;var _0x47cc70=_0x2fd9[_0x38168e];return _0x47cc70;};'use strict';var Sequelize=require(_0x92fd('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error',_0x92fd('0x1'),'info',_0x92fd('0x2')];module[_0x92fd('0x3')]={'clientSideLoggingLevel':{'type':Sequelize[_0x92fd('0x4')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x92fd('0x5'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x92fd('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x92fd('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x92fd('0x8')],'unique':'UserId'}};
\ No newline at end of file
+var _0xa755=['error','warning','info','debug','exports','TEXT','DATE','INTEGER','UserId','sequelize'];(function(_0xffcc54,_0x4c4dfd){var _0x5c98cf=function(_0x40172){while(--_0x40172){_0xffcc54['push'](_0xffcc54['shift']());}};_0x5c98cf(++_0x4c4dfd);}(_0xa755,0x1f3));var _0x5a75=function(_0x6c0f5f,_0x1deead){_0x6c0f5f=_0x6c0f5f-0x0;var _0x23980f=_0xa755[_0x6c0f5f];return _0x23980f;};'use strict';var Sequelize=require(_0x5a75('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x5a75('0x1'),_0x5a75('0x2'),_0x5a75('0x3'),_0x5a75('0x4')];module[_0x5a75('0x5')]={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x5a75('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x5a75('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x5a75('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x5a75('0x8')],'unique':_0x5a75('0x9')}};
\ No newline at end of file
index 36ada16..ec2b845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9567=['redis','./user-setting.socket','status','then','sendStatus','error','stack','name','send','update','user','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api','../../config/environment'];(function(_0x2d3c60,_0x4df458){var _0x560041=function(_0x5568af){while(--_0x5568af){_0x2d3c60['push'](_0x2d3c60['shift']());}};_0x560041(++_0x4df458);}(_0x9567,0xdc));var _0x7956=function(_0x63f5a8,_0x12c2d3){_0x63f5a8=_0x63f5a8-0x0;var _0x207396=_0x9567[_0x63f5a8];return _0x207396;};'use strict';var _=require(_0x7956('0x0'));var Redis=require(_0x7956('0x1'));var logger=require(_0x7956('0x2'))(_0x7956('0x3'));var config=require(_0x7956('0x4'));var db=require('../../mysqldb')['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x7956('0x5')]));require(_0x7956('0x6'))['register'](socket);config[_0x7956('0x5')]=_['defaults'](config[_0x7956('0x5')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x1819b6,_0x31b50d){_0x31b50d=_0x31b50d||0xc8;return function(_0x48b2b3){if(_0x48b2b3){return _0x1819b6[_0x7956('0x7')](_0x31b50d)['json'](_0x48b2b3);}};}function saveUpdates(_0x18dca3){return function(_0x33593a){if(_0x33593a){return _0x33593a['update'](_0x18dca3)[_0x7956('0x8')](function(_0xe825){return _0xe825;});}return null;};}function handleEntityNotFound(_0x5919db){return function(_0x1fd87b){if(!_0x1fd87b){_0x5919db[_0x7956('0x9')](0x194);}return _0x1fd87b;};}function handleError(_0x299e61,_0x4bfc14){_0x4bfc14=_0x4bfc14||0x1f4;return function(_0x1c03ed){logger[_0x7956('0xa')](_0x1c03ed[_0x7956('0xb')]);if(_0x1c03ed[_0x7956('0xc')]){delete _0x1c03ed['name'];}_0x299e61[_0x7956('0x7')](_0x4bfc14)[_0x7956('0xd')](_0x1c03ed);};}exports[_0x7956('0xe')]=function(_0x5dafc5,_0x14af6f){if(_0x5dafc5[_0x7956('0xf')][_0x7956('0x10')]!==_0x7956('0x11'))throw new Error(_0x7956('0x12'));if(isNaN(Number(_0x5dafc5[_0x7956('0x13')]['id'])))throw new Error(_0x7956('0x14'));return db[_0x7956('0x15')][_0x7956('0x16')]({'where':{'id':_0x5dafc5[_0x7956('0x13')]['id']}})[_0x7956('0x8')](handleEntityNotFound(_0x14af6f,null))[_0x7956('0x8')](saveUpdates(_0x5dafc5[_0x7956('0x17')],null))[_0x7956('0x8')](respondWithResult(_0x14af6f,null))[_0x7956('0x18')](handleError(_0x14af6f,null));};
\ No newline at end of file
+var _0x130d=['Unauthorized','params','Invalid\x20user\x20setting\x20id','find','catch','lodash','../../config/logger','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults','localhost','status','update','then','sendStatus','stack','name','send','role','admin'];(function(_0x39b53f,_0x9341ef){var _0x270a65=function(_0x1878f5){while(--_0x1878f5){_0x39b53f['push'](_0x39b53f['shift']());}};_0x270a65(++_0x9341ef);}(_0x130d,0x125));var _0xd130=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x130d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd130('0x0'));var Redis=require('ioredis');var logger=require(_0xd130('0x1'))('api');var config=require(_0xd130('0x2'));var db=require(_0xd130('0x3'))['db'];var socket=require(_0xd130('0x4'))(new Redis(config[_0xd130('0x5')]));require(_0xd130('0x6'))[_0xd130('0x7')](socket);config[_0xd130('0x5')]=_[_0xd130('0x8')](config[_0xd130('0x5')],{'host':_0xd130('0x9'),'port':0x18eb});function respondWithResult(_0x44c215,_0x168ee7){_0x168ee7=_0x168ee7||0xc8;return function(_0x3f77e1){if(_0x3f77e1){return _0x44c215[_0xd130('0xa')](_0x168ee7)['json'](_0x3f77e1);}};}function saveUpdates(_0x39d8c0){return function(_0x48d732){if(_0x48d732){return _0x48d732[_0xd130('0xb')](_0x39d8c0)[_0xd130('0xc')](function(_0x3af355){return _0x3af355;});}return null;};}function handleEntityNotFound(_0x5c481d){return function(_0x2e683b){if(!_0x2e683b){_0x5c481d[_0xd130('0xd')](0x194);}return _0x2e683b;};}function handleError(_0x4dba28,_0x587638){_0x587638=_0x587638||0x1f4;return function(_0x2653ac){logger['error'](_0x2653ac[_0xd130('0xe')]);if(_0x2653ac[_0xd130('0xf')]){delete _0x2653ac['name'];}_0x4dba28[_0xd130('0xa')](_0x587638)[_0xd130('0x10')](_0x2653ac);};}exports[_0xd130('0xb')]=function(_0x5492a8,_0x4a8bc0){if(_0x5492a8['user'][_0xd130('0x11')]!==_0xd130('0x12'))throw new Error(_0xd130('0x13'));if(isNaN(Number(_0x5492a8[_0xd130('0x14')]['id'])))throw new Error(_0xd130('0x15'));return db['UserSetting'][_0xd130('0x16')]({'where':{'id':_0x5492a8[_0xd130('0x14')]['id']}})[_0xd130('0xc')](handleEntityNotFound(_0x4a8bc0,null))[_0xd130('0xc')](saveUpdates(_0x5492a8['body'],null))[_0xd130('0xc')](respondWithResult(_0x4a8bc0,null))[_0xd130('0x17')](handleError(_0x4a8bc0,null));};
\ No newline at end of file
index 04a74f3..77de2ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['save','remove','emit','hasOwnProperty','hook','events','setMaxListeners'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x958a,0x18d));var _0xa958=function(_0x1f358e,_0x512274){_0x1f358e=_0x1f358e-0x0;var _0x1f029a=_0x958a[_0x1f358e];return _0x1f029a;};'use strict';var EventEmitter=require(_0xa958('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xa958('0x1')](0x0);var events={'afterCreate':_0xa958('0x2'),'afterUpdate':'update','afterDestroy':_0xa958('0x3')};function emitEvent(_0x4fe378){return function(_0x3435d7,_0x57a9b7,_0x30f175){UserSettingEvents[_0xa958('0x4')](_0x4fe378+':'+_0x3435d7['id'],_0x3435d7);UserSettingEvents[_0xa958('0x4')](_0x4fe378,_0x3435d7);_0x30f175(null);};}for(var e in events){if(events[_0xa958('0x5')](e)){var event=events[e];UserSetting[_0xa958('0x6')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0x9d2a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x57e18a,_0x199383){var _0x1181c7=function(_0x2503e8){while(--_0x2503e8){_0x57e18a['push'](_0x57e18a['shift']());}};_0x1181c7(++_0x199383);}(_0x9d2a,0x16c));var _0xa9d2=function(_0x203c52,_0x350b72){_0x203c52=_0x203c52-0x0;var _0x2c68ac=_0x9d2a[_0x203c52];return _0x2c68ac;};'use strict';var EventEmitter=require(_0xa9d2('0x0'));var UserSetting=require(_0xa9d2('0x1'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0xa9d2('0x2')](0x0);var events={'afterCreate':_0xa9d2('0x3'),'afterUpdate':_0xa9d2('0x4'),'afterDestroy':_0xa9d2('0x5')};function emitEvent(_0x2497fa){return function(_0x11e8d8,_0x175b52,_0x34687a){UserSettingEvents[_0xa9d2('0x6')](_0x2497fa+':'+_0x11e8d8['id'],_0x11e8d8);UserSettingEvents[_0xa9d2('0x6')](_0x2497fa,_0x11e8d8);_0x34687a(null);};}for(var e in events){if(events[_0xa9d2('0x7')](e)){var event=events[e];UserSetting[_0xa9d2('0x8')](e,emitEvent(event));}}module[_0xa9d2('0x9')]=UserSettingEvents;
\ No newline at end of file
index 7a6271c..13c75d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e8=['UserSetting','user_settings','clientSideLoggingEnabledSince','exports','define'];(function(_0x2ab751,_0x4c4957){var _0x38b267=function(_0x37a89e){while(--_0x37a89e){_0x2ab751['push'](_0x2ab751['shift']());}};_0x38b267(++_0x4c4957);}(_0xf6e8,0xc1));var _0x8f6e=function(_0x284a04,_0x2b7e2d){_0x284a04=_0x284a04-0x0;var _0x305de1=_0xf6e8[_0x284a04];return _0x305de1;};'use strict';var attributes=require('./user-setting.attributes');module[_0x8f6e('0x0')]=function(_0x2c1a59){return _0x2c1a59[_0x8f6e('0x1')](_0x8f6e('0x2'),attributes,{'tableName':_0x8f6e('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x24d74f){if(!_0x24d74f['clientSideLoggingEnabled'])_0x24d74f[_0x8f6e('0x4')]=null;else if(_0x24d74f['clientSideLoggingEnabledSince']===null)_0x24d74f[_0x8f6e('0x4')]=new Date();}}});};
\ No newline at end of file
+var _0x5106=['user_settings','clientSideLoggingEnabledSince','./user-setting.attributes','UserSetting'];(function(_0x5696d3,_0x224e96){var _0x114d65=function(_0x4cf781){while(--_0x4cf781){_0x5696d3['push'](_0x5696d3['shift']());}};_0x114d65(++_0x224e96);}(_0x5106,0x116));var _0x6510=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x5106[_0x59ee6f];return _0x4c0979;};'use strict';var attributes=require(_0x6510('0x0'));module['exports']=function(_0x276f19){return _0x276f19['define'](_0x6510('0x1'),attributes,{'tableName':_0x6510('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x579fe8){if(!_0x579fe8['clientSideLoggingEnabled'])_0x579fe8[_0x6510('0x3')]=null;else if(_0x579fe8[_0x6510('0x3')]===null)_0x579fe8[_0x6510('0x3')]=new Date();}}});};
\ No newline at end of file
index 1561f11..329fac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc9=['save','remove','update','emit','user-setting:update:user-','UserId','register','length','./user-setting.events'];(function(_0x2d5c9e,_0x2a0fc1){var _0x3fd10a=function(_0x20aff0){while(--_0x20aff0){_0x2d5c9e['push'](_0x2d5c9e['shift']());}};_0x3fd10a(++_0x2a0fc1);}(_0x6dc9,0x11f));var _0x96dc=function(_0x26ae31,_0x3f8239){_0x26ae31=_0x26ae31-0x0;var _0x396e9b=_0x6dc9[_0x26ae31];return _0x396e9b;};'use strict';var UserSettingEvents=require(_0x96dc('0x0'));var events=[_0x96dc('0x1'),_0x96dc('0x2'),_0x96dc('0x3')];function createListener(_0x2b6e85,_0x45b6e9){return function(_0x376a67){_0x45b6e9['emit'](_0x2b6e85,_0x376a67);if(_0x2b6e85==='user-setting:update'){_0x45b6e9[_0x96dc('0x4')](_0x96dc('0x5')+_0x376a67[_0x96dc('0x6')],_0x376a67);}};}exports[_0x96dc('0x7')]=function(_0x5928f3){for(var _0x342d77=0x0,_0x4a61d5=events[_0x96dc('0x8')];_0x342d77<_0x4a61d5;_0x342d77++){var _0x5e0ab6=events[_0x342d77];var _0x1a1095=createListener('user-setting:'+_0x5e0ab6,_0x5928f3);UserSettingEvents['on'](_0x5e0ab6,_0x1a1095);}};
\ No newline at end of file
+var _0x74f5=['UserId','length','./user-setting.events','save','remove','emit','user-setting:update'];(function(_0x2f815f,_0x3986b2){var _0x49ce8c=function(_0x1f8b6f){while(--_0x1f8b6f){_0x2f815f['push'](_0x2f815f['shift']());}};_0x49ce8c(++_0x3986b2);}(_0x74f5,0xb1));var _0x574f=function(_0x44d6b8,_0xe7e065){_0x44d6b8=_0x44d6b8-0x0;var _0x18cbfa=_0x74f5[_0x44d6b8];return _0x18cbfa;};'use strict';var UserSettingEvents=require(_0x574f('0x0'));var events=[_0x574f('0x1'),_0x574f('0x2'),'update'];function createListener(_0x153522,_0x4560fe){return function(_0x41b738){_0x4560fe[_0x574f('0x3')](_0x153522,_0x41b738);if(_0x153522===_0x574f('0x4')){_0x4560fe[_0x574f('0x3')]('user-setting:update:user-'+_0x41b738[_0x574f('0x5')],_0x41b738);}};}exports['register']=function(_0x2fa0a4){for(var _0x57d521=0x0,_0x394e5a=events[_0x574f('0x6')];_0x57d521<_0x394e5a;_0x57d521++){var _0x3fd840=events[_0x57d521];var _0x2fcc06=createListener('user-setting:'+_0x3fd840,_0x2fa0a4);UserSettingEvents['on'](_0x3fd840,_0x2fcc06);}};
\ No newline at end of file
index ab6da18..10abb32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4e6=['unpause','addTeams','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','/:id/api_key','createApiKey','put','/:id','update','/:id/password','delete','removeQueues','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeWhatsappAccounts','removeApiKey','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','isAuthenticated','/describe','describe','get','/whoami','whoami','/presence','getPresence','show','/:id/avatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','getLists','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','getApiKey','post','addContacts','create','bulkCreate','addQueues','diskStorage','format','now','addAvatar','/:id/login','login','/:id/logout','logout','pause','/:id/unpause'];(function(_0x2d7589,_0x4f62f8){var _0x5161b2=function(_0x579668){while(--_0x579668){_0x2d7589['push'](_0x2d7589['shift']());}};_0x5161b2(++_0x4f62f8);}(_0xc4e6,0x1d9));var _0x6c4e=function(_0x4b0290,_0x188c34){_0x4b0290=_0x4b0290-0x0;var _0x4bd9f4=_0xc4e6[_0x4b0290];return _0x4bd9f4;};'use strict';var multer=require(_0x6c4e('0x0'));var util=require(_0x6c4e('0x1'));var path=require('path');var timeout=require(_0x6c4e('0x2'));var express=require(_0x6c4e('0x3'));var router=express[_0x6c4e('0x4')]();var fs_extra=require(_0x6c4e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6c4e('0x6'));var config=require(_0x6c4e('0x7'));var controller=require(_0x6c4e('0x8'));router['get']('/',auth[_0x6c4e('0x9')](),controller['index']);router['get'](_0x6c4e('0xa'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0xb')]);router[_0x6c4e('0xc')](_0x6c4e('0xd'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0xe')]);router[_0x6c4e('0xc')](_0x6c4e('0xf'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x10')]);router[_0x6c4e('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x6c4e('0x11')]);router[_0x6c4e('0xc')](_0x6c4e('0x12'),controller['getAvatar']);router[_0x6c4e('0xc')](_0x6c4e('0x13'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x14')]);router['get'](_0x6c4e('0x15'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x16')]);router[_0x6c4e('0xc')](_0x6c4e('0x17'),auth['isAuthenticated'](),controller[_0x6c4e('0x18')]);router[_0x6c4e('0xc')](_0x6c4e('0x19'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router['get']('/:id/groups',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x1a')]);router[_0x6c4e('0xc')]('/:id/recordings',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x1b')]);router['get'](_0x6c4e('0x1c'),auth['isAuthenticated'](),controller[_0x6c4e('0x1d')]);router[_0x6c4e('0xc')](_0x6c4e('0x1e'),auth[_0x6c4e('0x9')](),controller['getChatInteractions']);router[_0x6c4e('0xc')](_0x6c4e('0x1f'),auth['isAuthenticated'](),controller[_0x6c4e('0x20')]);router[_0x6c4e('0xc')](_0x6c4e('0x21'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x22')]);router['get'](_0x6c4e('0x23'),auth[_0x6c4e('0x9')](),controller['getSmsInteractions']);router['get'](_0x6c4e('0x24'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x25')]);router[_0x6c4e('0xc')](_0x6c4e('0x26'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x27')]);router['get'](_0x6c4e('0x28'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x29')]);router[_0x6c4e('0xc')]('/:id/lists',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2a')]);router[_0x6c4e('0xc')](_0x6c4e('0x2b'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2c')]);router[_0x6c4e('0xc')]('/:id/prefixes',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x2d')]);router['get'](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller['getFaxAccounts']);router['get'](_0x6c4e('0x2f'),auth[_0x6c4e('0x9')](),controller['getMailAccounts']);router[_0x6c4e('0xc')](_0x6c4e('0x30'),auth['isAuthenticated'](),controller[_0x6c4e('0x31')]);router['get'](_0x6c4e('0x32'),auth[_0x6c4e('0x9')](),controller['getSmsAccounts']);router[_0x6c4e('0xc')]('/:id/chat_websites',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x33')]);router['get'](_0x6c4e('0x34'),auth['isAuthenticated'](),controller[_0x6c4e('0x35')]);router[_0x6c4e('0xc')](_0x6c4e('0x36'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x37')]);router[_0x6c4e('0xc')]('/:id/api_key',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x38')]);router[_0x6c4e('0x39')](_0x6c4e('0x15'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3a')]);router[_0x6c4e('0x39')]('/',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3b')]);router['post']('/create_many',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3c')]);router[_0x6c4e('0x39')](_0x6c4e('0x17'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x3d')]);var upload=multer({'storage':multer[_0x6c4e('0x3e')]({'destination':function(_0x27aaa2,_0x385be7,_0x58e446){_0x58e446(null,path['join'](config['root'],'server/files/images/'));},'filename':function(_0x47da46,_0x2d2755,_0x2fe749){_0x2fe749(null,util[_0x6c4e('0x3f')]('%s-%s',Date[_0x6c4e('0x40')](),_0x2d2755['originalname']));}})});router[_0x6c4e('0x39')](_0x6c4e('0x12'),upload['single']('file'),controller[_0x6c4e('0x41')]);router[_0x6c4e('0x39')](_0x6c4e('0x42'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x43')]);router[_0x6c4e('0x39')](_0x6c4e('0x44'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x45')]);router[_0x6c4e('0x39')]('/:id/pause',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x46')]);router[_0x6c4e('0x39')](_0x6c4e('0x47'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x48')]);router[_0x6c4e('0x39')](_0x6c4e('0x28'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x49')]);router[_0x6c4e('0x39')]('/:id/chat_interactions',auth[_0x6c4e('0x9')](),controller['addChatInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x4a'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x4b')]);router['post'](_0x6c4e('0x4c'),auth['isAuthenticated'](),controller[_0x6c4e('0x4d')]);router['post'](_0x6c4e('0x4e'),auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x4f'),auth[_0x6c4e('0x9')](),controller['addOpenchannelInteractions']);router[_0x6c4e('0x39')](_0x6c4e('0x50'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x51')]);router[_0x6c4e('0x39')](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x52')]);router['post']('/:id/mail_accounts',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x53')]);router['post'](_0x6c4e('0x30'),auth['isAuthenticated'](),controller[_0x6c4e('0x54')]);router[_0x6c4e('0x39')](_0x6c4e('0x32'),auth['isAuthenticated'](),controller['addSmsAccounts']);router[_0x6c4e('0x39')](_0x6c4e('0x55'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x56')]);router[_0x6c4e('0x39')]('/:id/whatsapp_accounts',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x57')]);router['post'](_0x6c4e('0x58'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x59')]);router[_0x6c4e('0x5a')](_0x6c4e('0x5b'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x5c')]);router[_0x6c4e('0x5a')](_0x6c4e('0x5d'),auth['isAuthenticated'](),controller['changePassword']);router[_0x6c4e('0x5e')](_0x6c4e('0x17'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x5f')]);router[_0x6c4e('0x5e')](_0x6c4e('0x28'),auth['isAuthenticated'](),controller['removeTeams']);router['delete']('/:id',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x60')]);router[_0x6c4e('0x5e')](_0x6c4e('0x61'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x62')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4a'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x63')]);router['delete'](_0x6c4e('0x4c'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x64')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4e'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x65')]);router[_0x6c4e('0x5e')](_0x6c4e('0x4f'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x66')]);router['delete']('/:id/whatsapp_interactions',auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x67')]);router['delete'](_0x6c4e('0x2e'),auth[_0x6c4e('0x9')](),controller['removeFaxAccounts']);router[_0x6c4e('0x5e')](_0x6c4e('0x2f'),auth['isAuthenticated'](),controller[_0x6c4e('0x68')]);router[_0x6c4e('0x5e')](_0x6c4e('0x30'),auth['isAuthenticated'](),controller['removeOpenchannelAccounts']);router[_0x6c4e('0x5e')](_0x6c4e('0x32'),auth['isAuthenticated'](),controller[_0x6c4e('0x69')]);router['delete']('/:id/chat_websites',auth[_0x6c4e('0x9')](),controller['removeChatWebsites']);router[_0x6c4e('0x5e')](_0x6c4e('0x34'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x6a')]);router[_0x6c4e('0x5e')](_0x6c4e('0x58'),auth[_0x6c4e('0x9')](),controller[_0x6c4e('0x6b')]);module[_0x6c4e('0x6c')]=router;
\ No newline at end of file
+var _0xa1aa=['/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','/:id/contacts','addContacts','create','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','now','originalname','single','file','/:id/logout','logout','pause','/:id/unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/whatsapp_accounts','addWhatsappAccounts','createApiKey','put','/:id','update','/:id/password','changePassword','delete','removeQueues','removeChatInteractions','/:id/mail_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeApiKey','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/whoami','/presence','getPresence','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','getMailAccounts'];(function(_0x31eb67,_0x9bc8c0){var _0x2a8cb8=function(_0xac1c5d){while(--_0xac1c5d){_0x31eb67['push'](_0x31eb67['shift']());}};_0x2a8cb8(++_0x9bc8c0);}(_0xa1aa,0x19b));var _0xaa1a=function(_0x920975,_0x584bfc){_0x920975=_0x920975-0x0;var _0x63fc6=_0xa1aa[_0x920975];return _0x63fc6;};'use strict';var multer=require('multer');var util=require(_0xaa1a('0x0'));var path=require(_0xaa1a('0x1'));var timeout=require(_0xaa1a('0x2'));var express=require(_0xaa1a('0x3'));var router=express[_0xaa1a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaa1a('0x5'));var config=require(_0xaa1a('0x6'));var controller=require('./user.controller');router[_0xaa1a('0x7')]('/',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x9')]);router['get'](_0xaa1a('0xa'),auth['isAuthenticated'](),controller[_0xaa1a('0xb')]);router['get'](_0xaa1a('0xc'),auth[_0xaa1a('0x8')](),controller['whoami']);router['get'](_0xaa1a('0xd'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0xe')]);router[_0xaa1a('0x7')]('/:id',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0xf')]);router[_0xaa1a('0x7')](_0xaa1a('0x10'),controller[_0xaa1a('0x11')]);router[_0xaa1a('0x7')](_0xaa1a('0x12'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x13')]);router[_0xaa1a('0x7')]('/:id/contacts',auth['isAuthenticated'](),controller[_0xaa1a('0x14')]);router[_0xaa1a('0x7')](_0xaa1a('0x15'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x16')]);router['get'](_0xaa1a('0x17'),auth['isAuthenticated'](),controller[_0xaa1a('0x18')]);router[_0xaa1a('0x7')](_0xaa1a('0x19'),auth[_0xaa1a('0x8')](),controller['getGroups']);router['get'](_0xaa1a('0x1a'),auth[_0xaa1a('0x8')](),controller['getRecordings']);router[_0xaa1a('0x7')](_0xaa1a('0x1b'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x1c')]);router[_0xaa1a('0x7')](_0xaa1a('0x1d'),auth['isAuthenticated'](),controller[_0xaa1a('0x1e')]);router[_0xaa1a('0x7')](_0xaa1a('0x1f'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x20')]);router[_0xaa1a('0x7')](_0xaa1a('0x21'),auth['isAuthenticated'](),controller[_0xaa1a('0x22')]);router[_0xaa1a('0x7')](_0xaa1a('0x23'),auth['isAuthenticated'](),controller[_0xaa1a('0x24')]);router[_0xaa1a('0x7')]('/:id/fax/interactions',auth['isAuthenticated'](),controller[_0xaa1a('0x25')]);router[_0xaa1a('0x7')](_0xaa1a('0x26'),auth[_0xaa1a('0x8')](),controller['getWhatsappInteractions']);router[_0xaa1a('0x7')](_0xaa1a('0x27'),auth['isAuthenticated'](),controller[_0xaa1a('0x28')]);router[_0xaa1a('0x7')](_0xaa1a('0x29'),auth['isAuthenticated'](),controller[_0xaa1a('0x2a')]);router[_0xaa1a('0x7')](_0xaa1a('0x2b'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x2c')]);router[_0xaa1a('0x7')](_0xaa1a('0x2d'),auth['isAuthenticated'](),controller['getVoicePrefixes']);router['get'](_0xaa1a('0x2e'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x2f')]);router[_0xaa1a('0x7')]('/:id/mail_accounts',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x30')]);router[_0xaa1a('0x7')](_0xaa1a('0x31'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x32')]);router[_0xaa1a('0x7')](_0xaa1a('0x33'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x34')]);router[_0xaa1a('0x7')](_0xaa1a('0x35'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x36')]);router[_0xaa1a('0x7')]('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0xaa1a('0x37')]);router['get'](_0xaa1a('0x38'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x39')]);router[_0xaa1a('0x7')](_0xaa1a('0x3a'),auth[_0xaa1a('0x8')](),controller['getApiKey']);router[_0xaa1a('0x3b')](_0xaa1a('0x3c'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x3d')]);router[_0xaa1a('0x3b')]('/',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x3e')]);router[_0xaa1a('0x3b')]('/create_many',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x3f')]);router[_0xaa1a('0x3b')](_0xaa1a('0x15'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x40')]);var upload=multer({'storage':multer[_0xaa1a('0x41')]({'destination':function(_0x3e7bdb,_0xfa6e9,_0xbf867a){_0xbf867a(null,path[_0xaa1a('0x42')](config[_0xaa1a('0x43')],_0xaa1a('0x44')));},'filename':function(_0x2dcbac,_0x2b7772,_0x37b7d5){_0x37b7d5(null,util['format']('%s-%s',Date[_0xaa1a('0x45')](),_0x2b7772[_0xaa1a('0x46')]));}})});router[_0xaa1a('0x3b')](_0xaa1a('0x10'),upload[_0xaa1a('0x47')](_0xaa1a('0x48')),controller['addAvatar']);router[_0xaa1a('0x3b')]('/:id/login',auth[_0xaa1a('0x8')](),controller['login']);router[_0xaa1a('0x3b')](_0xaa1a('0x49'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x4a')]);router['post']('/:id/pause',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x4b')]);router['post'](_0xaa1a('0x4c'),auth[_0xaa1a('0x8')](),controller['unpause']);router['post'](_0xaa1a('0x27'),auth['isAuthenticated'](),controller[_0xaa1a('0x4d')]);router[_0xaa1a('0x3b')](_0xaa1a('0x4e'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x4f')]);router[_0xaa1a('0x3b')]('/:id/mail_interactions',auth['isAuthenticated'](),controller['addMailInteractions']);router['post'](_0xaa1a('0x50'),auth['isAuthenticated'](),controller[_0xaa1a('0x51')]);router[_0xaa1a('0x3b')](_0xaa1a('0x52'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x53')]);router[_0xaa1a('0x3b')](_0xaa1a('0x54'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x55')]);router[_0xaa1a('0x3b')](_0xaa1a('0x56'),auth['isAuthenticated'](),controller[_0xaa1a('0x57')]);router[_0xaa1a('0x3b')](_0xaa1a('0x2e'),auth['isAuthenticated'](),controller[_0xaa1a('0x58')]);router['post'](_0xaa1a('0x59'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x5a')]);router[_0xaa1a('0x3b')]('/:id/openchannel_accounts',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x5b')]);router[_0xaa1a('0x3b')](_0xaa1a('0x33'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x5c')]);router[_0xaa1a('0x3b')](_0xaa1a('0x35'),auth[_0xaa1a('0x8')](),controller['addChatWebsites']);router[_0xaa1a('0x3b')](_0xaa1a('0x5d'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x5e')]);router[_0xaa1a('0x3b')](_0xaa1a('0x3a'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x5f')]);router[_0xaa1a('0x60')](_0xaa1a('0x61'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x62')]);router[_0xaa1a('0x60')](_0xaa1a('0x63'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x64')]);router[_0xaa1a('0x65')](_0xaa1a('0x15'),auth['isAuthenticated'](),controller[_0xaa1a('0x66')]);router[_0xaa1a('0x65')](_0xaa1a('0x27'),auth['isAuthenticated'](),controller['removeTeams']);router[_0xaa1a('0x65')]('/:id',auth[_0xaa1a('0x8')](),controller['destroy']);router[_0xaa1a('0x65')]('/:id/chat_interactions',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x67')]);router[_0xaa1a('0x65')](_0xaa1a('0x68'),auth[_0xaa1a('0x8')](),controller['removeMailInteractions']);router['delete']('/:id/fax_interactions',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x69')]);router[_0xaa1a('0x65')]('/:id/sms_interactions',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x6a')]);router['delete']('/:id/openchannel_interactions',auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x6b')]);router[_0xaa1a('0x65')](_0xaa1a('0x56'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x6c')]);router[_0xaa1a('0x65')](_0xaa1a('0x2e'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x6d')]);router[_0xaa1a('0x65')](_0xaa1a('0x59'),auth['isAuthenticated'](),controller[_0xaa1a('0x6e')]);router['delete'](_0xaa1a('0x31'),auth[_0xaa1a('0x8')](),controller['removeOpenchannelAccounts']);router['delete'](_0xaa1a('0x33'),auth['isAuthenticated'](),controller[_0xaa1a('0x6f')]);router[_0xaa1a('0x65')](_0xaa1a('0x35'),auth[_0xaa1a('0x8')](),controller[_0xaa1a('0x70')]);router[_0xaa1a('0x65')](_0xaa1a('0x5d'),auth[_0xaa1a('0x8')](),controller['removeWhatsappAccounts']);router[_0xaa1a('0x65')](_0xaa1a('0x3a'),auth['isAuthenticated'](),controller[_0xaa1a('0x71')]);module[_0xaa1a('0x72')]=router;
\ No newline at end of file
index 153e79e..f6af1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['admin','user','agent','telephone','local','accountcode','BOOLEAN','DATE','INTEGER','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','insecure','\x22\x22\x20<>','always','accept','uac','uas','certificate','active','passive','actpass','update,nonat','showWebBar','get','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','wss','avpf','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','rtcp_mux','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','blocked','blockedAt','UNSIGNED','sequelize','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM'];(function(_0x347f45,_0x1537ac){var _0x3d5d1f=function(_0x10fa5c){while(--_0x10fa5c){_0x347f45['push'](_0x347f45['shift']());}};_0x3d5d1f(++_0x1537ac);}(_0xe706,0xa3));var _0x6e70=function(_0x419bb9,_0x247ffa){_0x419bb9=_0x419bb9-0x0;var _0x594006=_0xe706[_0x419bb9];return _0x594006;};'use strict';var Sequelize=require(_0x6e70('0x0'));var moment=require(_0x6e70('0x1'));var util=require(_0x6e70('0x2'));var _=require('lodash');module[_0x6e70('0x3')]={'name':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'unique':_0x6e70('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x7dfbc3){this[_0x6e70('0x6')](_0x6e70('0x5'),_0x7dfbc3);this[_0x6e70('0x6')](_0x6e70('0x7'),_0x7dfbc3);},'comment':_0x6e70('0x8')},'fullname':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'set':function(_0x36357b){this[_0x6e70('0x6')](_0x6e70('0x9'),_0x36357b);this[_0x6e70('0x6')](_0x6e70('0xa'),util[_0x6e70('0xb')](_0x6e70('0xc'),_0x36357b,this[_0x6e70('0xd')](_0x6e70('0xe'))));}},'alias':{'type':Sequelize[_0x6e70('0x4')]},'email':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'unique':_0x6e70('0xf'),'validate':{'isEmail':!![]},'set':function(_0x37b3e0){if(_0x37b3e0){this[_0x6e70('0x6')]('email',_0x37b3e0['toLowerCase']());}}},'role':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x11'),_0x6e70('0x12'),_0x6e70('0x13'),_0x6e70('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':_0x6e70('0x15')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':'internal','set':function(_0x48bc72){this[_0x6e70('0x6')]('internal',_0x48bc72);this['setDataValue'](_0x6e70('0x16'),_0x48bc72);this[_0x6e70('0x6')]('callerid',util[_0x6e70('0xb')]('\x22%s\x22\x20<%s>',this[_0x6e70('0xd')](_0x6e70('0x9')),_0x48bc72));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x6e70('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x6e70('0x4')]},'userpic':{'type':Sequelize[_0x6e70('0x4')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x6e70('0x18')]},'voicePause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x6e70('0x18')]},'chatCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'description':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x1a')},'ipaddr':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x6e70('0x19')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x1b'),'user',_0x6e70('0x1c')),'allowNull':!![],'defaultValue':_0x6e70('0x1b')},'context':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'defaultValue':_0x6e70('0x1d')},'callingpres':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x1e'),_0x6e70('0x1f'),_0x6e70('0x20'),_0x6e70('0x21'),_0x6e70('0x22'),'PROHIB_PASSED_SCREEN',_0x6e70('0x23'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x24'),'set':function(_0x42b094){this['setDataValue'](_0x6e70('0x25'),_0x42b094?_0x42b094[_0x6e70('0x26')](','):null);},'get':function(){return this['getDataValue'](_0x6e70('0x25'))?this[_0x6e70('0xd')](_0x6e70('0x25'))[_0x6e70('0x27')](','):null;},'comment':_0x6e70('0x28')},'dtmfmode':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x29'),_0x6e70('0x2a'),_0x6e70('0x2b'),_0x6e70('0x2c'),'auto'),'allowNull':!![],'defaultValue':_0x6e70('0x29')},'directmedia':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no',_0x6e70('0x2e'),_0x6e70('0x2f'),_0x6e70('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'defaultValue':_0x6e70('0x31'),'set':function(_0x2a5444){this[_0x6e70('0x6')](_0x6e70('0x32'),_0x2a5444?_0x2a5444['join'](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x6e70('0xd')](_0x6e70('0x32'))[_0x6e70('0x27')](','):null;},'comment':_0x6e70('0x33')},'callgroup':{'type':Sequelize[_0x6e70('0x4')]},'namedcallgroup':{'type':Sequelize[_0x6e70('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x6e70('0x4')]},'language':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x6e70('0x4')]},'disallow':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':_0x6e70('0x34')},'allow':{'type':Sequelize[_0x6e70('0x4')],'allowNull':![],'defaultValue':_0x6e70('0x35'),'set':function(_0x16fc7d){this['setDataValue'](_0x6e70('0x36'),_0x16fc7d?_0x16fc7d[_0x6e70('0x26')](';'):_0x6e70('0x35'));},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x36'))?this[_0x6e70('0xd')](_0x6e70('0x36'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![],'set':function(_0x83847b){this[_0x6e70('0x6')](_0x6e70('0x37'),_0x83847b?_0x83847b['join'](','):null);},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x37'))?this[_0x6e70('0xd')]('insecure')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x6e70('0x38')},'amaflags':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x6e70('0x2d')},'busylevel':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x6e70('0x10')]('yes','no',_0x6e70('0x39')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3a'),'refuse','originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3b'),_0x6e70('0x3c')),'allowNull':!![],'defaultValue':_0x6e70('0x3c')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x6e70('0x2d'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','fingerprint',_0x6e70('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x3e'),_0x6e70('0x3f'),_0x6e70('0x40')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x6e70('0x19')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x6e70('0x10')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no','nonat',_0x6e70('0x2f'),_0x6e70('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x6e70('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x6e70('0x18')]},'passwordResetAt':{'type':Sequelize[_0x6e70('0x18')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x2f9be4){this[_0x6e70('0x6')](_0x6e70('0x42'),_0x2f9be4);var _0x41a861=this[_0x6e70('0x43')]({'plain':!![]});switch(_0x2f9be4){case 0x0:case 0x1:var _0x739946=_0x41a861[_0x6e70('0x25')]?_['isArray'](_0x41a861['transport'])?_0x41a861[_0x6e70('0x25')][_0x6e70('0x26')]():_0x41a861[_0x6e70('0x25')]:_0x6e70('0x24');if(_0x739946==='wss'){_0x739946='udp';}this[_0x6e70('0x6')](_0x6e70('0x25'),_0x739946);this['setDataValue']('encryption','no');this[_0x6e70('0x6')]('avpf',null);this[_0x6e70('0x6')](_0x6e70('0x44'),null);this[_0x6e70('0x6')](_0x6e70('0x45'),null);this[_0x6e70('0x6')](_0x6e70('0x46'),null);this[_0x6e70('0x6')](_0x6e70('0x47'),null);this['setDataValue'](_0x6e70('0x48'),null);this[_0x6e70('0x6')](_0x6e70('0x49'),null);this[_0x6e70('0x6')](_0x6e70('0x4a'),null);this['setDataValue']('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x6e70('0x25'),_0x6e70('0x4b'));this[_0x6e70('0x6')]('encryption','yes');this[_0x6e70('0x6')](_0x6e70('0x4c'),_0x6e70('0x2d'));this[_0x6e70('0x6')](_0x6e70('0x44'),_0x6e70('0x2d'));this['setDataValue'](_0x6e70('0x45'),_0x6e70('0x2d'));this[_0x6e70('0x6')](_0x6e70('0x46'),'yes');this[_0x6e70('0x6')]('dtlsverify','no');this['setDataValue'](_0x6e70('0x48'),_0x6e70('0x40'));this[_0x6e70('0x6')](_0x6e70('0x49'),_0x41a861[_0x6e70('0x49')]||_0x6e70('0x4d'));this['setDataValue'](_0x6e70('0x4a'),_0x41a861[_0x6e70('0x4a')]||_0x6e70('0x4e'));this[_0x6e70('0x6')](_0x6e70('0x4f'),_0x6e70('0x2d'));break;default:}}},'permissions':{'type':Sequelize[_0x6e70('0x50')],'set':function(_0xd9b4a9){this[_0x6e70('0x6')](_0x6e70('0x51'),_0xd9b4a9?_0xd9b4a9['join'](','):[]);},'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x51'))?_[_0x6e70('0x52')](this['getDataValue']('permissions')[_0x6e70('0x27')](','),function(_0x18ecf0){return parseInt(_0x18ecf0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x6e70('0x10')](_0x6e70('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x6e70('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x6e70('0x53')],'get':function(){return this[_0x6e70('0xd')](_0x6e70('0x54'))?this[_0x6e70('0xd')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x6e70('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x6e70('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x576069){if(typeof _0x576069===_0x6e70('0x55')){var _0x21e4c2=_0x576069==='1'?!![]:_0x576069==='0'?![]:_0x576069===_0x6e70('0x56')?!![]:_0x576069==='false'?![]:![];this['setDataValue']('screenrecording',_0x21e4c2);}else{this[_0x6e70('0x6')]('screenrecording',_0x576069);}}},'blocked':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![],'set':function(_0x34237d){this[_0x6e70('0x6')](_0x6e70('0x57'),_0x34237d);if(_0x34237d===!![]){this[_0x6e70('0x6')](_0x6e70('0x58'),moment());this[_0x6e70('0x6')]('loginAttempts',0x0);}else{this[_0x6e70('0x6')](_0x6e70('0x58'),null);}}},'blockedAt':{'type':Sequelize[_0x6e70('0x18')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x6e70('0x19')](0x5)[_0x6e70('0x59')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x6e70('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x6e70('0x19')],'defaultValue':0x0}};
\ No newline at end of file
index 65a7f6c..3b7677e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d1d=['addQueues','channel','online','interface','isValidChannel','Unknown\x20channel','add','capitalize','Queues','penalty','spread','toLowerCase','QueueId','Queue:save','voice','get','format','SIP/%s','voicePause','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','download','server/files/images/','CHAT','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','createdAt','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','findOne','CmContact','filters','order','options','getContacts','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','Queue','sort','pick','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','loginInPause','intrf','user:forcelogout','socket','remoteAddress','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','pause','QueuePause','DEFAULT\x20PAUSE','type','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','faxPause','smsPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','unpause','getTeams','addTeams','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','addAgent','getDataValue','TeamVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','Team','flattenDeep','removeAgent','UserVoicePrefix','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$or','$gt','$gte','$lte','$eq','$not','$between','$notBetween','$notIn','$like','$overlap','$contains','$contained','$any','firstName','lastName','Contact','dialActive','VoiceQueue','getApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','nonce','removeApiKey','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','isEmpty','inbound','flatten','lower','col','toString','asc','desc','substring','uniqBy','orderBy','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','QueryTypes','select','field','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','util','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','APIBadRequestError','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','defaults','localhost','client','http','request','then','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','update','role','agent','emit','userNotification:recalc:','admin','Users','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','name','UserProfileResource','destroy','stack','send','index','User','rawAttributes','fieldName','getOptions','where','query','includeAll','include','userSetting','attributes','push','findAll','rows','openTabs','true','length','chat','sms','dataValues','mail','openchannel','all','show','params','model','differenceBy','keys','password','intersection','fields','UserSetting','merge','find','whatsapp','fax','body','describe','addContacts','ids','omit','internal','Setting','findById','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','from','voicemail','mailbox','email','permissions','101','102','103','110','104','105','108','109','111','114','115','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','VoiceMail','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','autoAssociation','compact','newPassword','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','oldPassword','Sequelize','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory'];(function(_0x302335,_0x58b786){var _0x42d3d7=function(_0x330155){while(--_0x330155){_0x302335['push'](_0x302335['shift']());}};_0x42d3d7(++_0x58b786);}(_0x7d1d,0xf4));var _0xd7d1=function(_0x22f85a,_0x195ed5){_0x22f85a=_0x22f85a-0x0;var _0xaa717=_0x7d1d[_0x22f85a];return _0xaa717;};'use strict';var moment=require('moment');var util=require(_0xd7d1('0x0'));var path=require('path');var fs=require('fs');var _=require(_0xd7d1('0x1'));var squel=require(_0xd7d1('0x2'));var jayson=require(_0xd7d1('0x3'));var Redis=require(_0xd7d1('0x4'));var authService=require(_0xd7d1('0x5'));var qs=require(_0xd7d1('0x6'));var logger=require(_0xd7d1('0x7'))(_0xd7d1('0x8'));var utils=require(_0xd7d1('0x9'));var config=require(_0xd7d1('0xa'));var licenseUtil=require(_0xd7d1('0xb'));var APIBadRequestError=require('../../errors/api')[_0xd7d1('0xc')];var APINotFoundError=require(_0xd7d1('0xd'))[_0xd7d1('0xe')];var APIHandleError=require(_0xd7d1('0xd'))[_0xd7d1('0xf')];var db=require(_0xd7d1('0x10'))['db'];var socket=require(_0xd7d1('0x11'))(new Redis(config[_0xd7d1('0x12')]));require('./user.socket')['register'](socket);config[_0xd7d1('0x12')]=_[_0xd7d1('0x13')](config[_0xd7d1('0x12')],{'host':_0xd7d1('0x14'),'port':0x18eb});var amiClient=jayson[_0xd7d1('0x15')][_0xd7d1('0x16')]({'port':0x232a});var values;function respondWithRpcPromise(_0x2bb8bf,_0x1fc3c1,_0x3f511b,_0x1ebe26){return new Promise(function(_0x1deee1,_0x243f8c){var _0x9f1f3e=_0x1ebe26||amiClient;return _0x9f1f3e[_0xd7d1('0x17')](_0x2bb8bf,_0x3f511b)[_0xd7d1('0x18')](function(_0x529e32){logger['info'](_0xd7d1('0x19'),_0x1fc3c1,'request\x20sent');logger[_0xd7d1('0x1a')](_0xd7d1('0x1b'),_0x1fc3c1,_0xd7d1('0x1c'),JSON[_0xd7d1('0x1d')](_0x529e32));if(_0x529e32[_0xd7d1('0x1e')]){if(_0x529e32[_0xd7d1('0x1e')][_0xd7d1('0x1f')]===0x1f4){logger['error'](_0xd7d1('0x19'),_0x1fc3c1,_0x529e32['error']['message']);return _0x243f8c(_0x529e32[_0xd7d1('0x1e')]['message']);}logger['error'](_0xd7d1('0x19'),_0x1fc3c1,_0x529e32['error'][_0xd7d1('0x20')]);return _0x1deee1(_0x529e32[_0xd7d1('0x1e')]['message']);}else{logger[_0xd7d1('0x21')]('User,\x20%s,\x20%s',_0x1fc3c1,'request\x20sent');_0x1deee1(_0x529e32[_0xd7d1('0x22')][_0xd7d1('0x20')]);}})[_0xd7d1('0x23')](function(_0x3f2786){logger[_0xd7d1('0x1e')](_0xd7d1('0x19'),_0x1fc3c1,_0x3f2786);_0x243f8c(_0x3f2786);});});}function respondWithStatusCode(_0x3bd537,_0x12233d){_0x12233d=_0x12233d||0xcc;return function(_0x3adcf2){if(_0x3adcf2){return _0x3bd537[_0xd7d1('0x24')](_0x12233d);}return _0x3bd537[_0xd7d1('0x25')](_0x12233d)[_0xd7d1('0x26')]();};}function respondWithResult(_0x2fd3ba,_0x458776){_0x458776=_0x458776||0xc8;return function(_0x1f453d){if(_0x1f453d){return _0x2fd3ba[_0xd7d1('0x25')](_0x458776)['json'](_0x1f453d);}};}function respondWithFilteredResult(_0x1d1b99,_0x1ec5c6){return function(_0x3acc44){if(_0x3acc44){var _0x1eda03=typeof _0x1ec5c6[_0xd7d1('0x27')]==='undefined'&&typeof _0x1ec5c6[_0xd7d1('0x28')]===_0xd7d1('0x29');var _0x1484c8=_0x3acc44[_0xd7d1('0x2a')];var _0x1ddc18=_0x1eda03?0x0:_0x1ec5c6['offset'];var _0x58983a=_0x1eda03?_0x3acc44[_0xd7d1('0x2a')]:_0x1ec5c6[_0xd7d1('0x27')]+_0x1ec5c6['limit'];var _0xa6e5e3;if(_0x58983a>=_0x1484c8){_0x58983a=_0x1484c8;_0xa6e5e3=0xc8;}else{_0xa6e5e3=0xce;}_0x1d1b99[_0xd7d1('0x25')](_0xa6e5e3);return _0x1d1b99[_0xd7d1('0x2b')](_0xd7d1('0x2c'),_0x1ddc18+'-'+_0x58983a+'/'+_0x1484c8)[_0xd7d1('0x2d')](_0x3acc44);}return null;};}function saveUpdates(_0x4f038e){return function(_0x484e94){if(_0x484e94){return _0x484e94[_0xd7d1('0x2e')](_0x4f038e)[_0xd7d1('0x18')](function(_0x50e09b){if(_0x50e09b[_0xd7d1('0x2f')]===_0xd7d1('0x30')){socket[_0xd7d1('0x31')](_0xd7d1('0x32')+_0x50e09b['id'],_0x50e09b);}return _0x50e09b;});}return null;};}function removeEntity(_0x35d13c){return function(_0x186678){if(_0x186678){return _0x186678['destroy']()[_0xd7d1('0x18')](function(){var _0x337688=_0x186678['get']({'plain':!![]});if(_0x337688[_0xd7d1('0x2f')]===_0xd7d1('0x33'))return;var _0x2da9a7=[{'name':_0xd7d1('0x34'),'value':_0xd7d1('0x35'),'ignore':!![]},{'name':_0xd7d1('0x36'),'value':_0xd7d1('0x30'),'ignore':![]},{'name':_0xd7d1('0x37'),'value':_0xd7d1('0x38'),'ignore':![]}];var _0x116b30=_(_0x2da9a7)[_0xd7d1('0x39')](_0xd7d1('0x3a'))[_0xd7d1('0x3b')](_0xd7d1('0x3c'))[_0xd7d1('0x3c')]();if(_[_0xd7d1('0x3d')](_0x116b30,_0x337688[_0xd7d1('0x2f')])){return;}var _0x393ce0=_['find'](_0x2da9a7,[_0xd7d1('0x3c'),_0x337688[_0xd7d1('0x2f')]])[_0xd7d1('0x3e')];return db[_0xd7d1('0x3f')][_0xd7d1('0x40')]({'where':{'type':_0x393ce0,'resourceId':_0x337688['id']}})[_0xd7d1('0x18')](function(){return _0x186678;});})['then'](function(){_0x35d13c[_0xd7d1('0x25')](0xcc)[_0xd7d1('0x26')]();});}};}function handleEntityNotFound(_0x308660){return function(_0x199cfa){if(!_0x199cfa){_0x308660['sendStatus'](0x194);}return _0x199cfa;};}function handleError(_0xe7efa3,_0x4f894a){_0x4f894a=_0x4f894a||0x1f4;return function(_0x4a0775){logger['error'](_0x4a0775[_0xd7d1('0x41')]);if(_0x4a0775[_0xd7d1('0x3e')]){delete _0x4a0775[_0xd7d1('0x3e')];}_0xe7efa3[_0xd7d1('0x25')](_0x4f894a)[_0xd7d1('0x42')](_0x4a0775);};}exports[_0xd7d1('0x43')]=function(_0x3485a2,_0x142099){var _0x34cb5c={},_0x238fc2={'count':0x0,'rows':[]};var _0xcfed2=_(db[_0xd7d1('0x44')][_0xd7d1('0x45')])[_0xd7d1('0x3b')](function(_0x3b5037){return{'name':_0x3b5037[_0xd7d1('0x46')],'type':_0x3b5037['type']['key']};})[_0xd7d1('0x39')](function(_0x1be0ac){return!_[_0xd7d1('0x3d')](['password','salt'],_0x1be0ac[_0xd7d1('0x3e')]);})['value']();_0x34cb5c=qs[_0xd7d1('0x47')](_0xcfed2,_0x3485a2);var _0x2de917={'where':_0x34cb5c[_0xd7d1('0x48')]};return db[_0xd7d1('0x44')]['count'](_0x2de917)[_0xd7d1('0x18')](function(_0x2dc8c6){_0x238fc2[_0xd7d1('0x2a')]=_0x2dc8c6;if(_0x3485a2[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x34cb5c[_0xd7d1('0x4b')]=[{'all':!![]}];}if(_0x3485a2['query'][_0xd7d1('0x4c')]==='true'){_0x34cb5c[_0xd7d1('0x4b')]=[{'model':db['UserSetting'],'as':_0xd7d1('0x4c')}];}if(!_[_0xd7d1('0x3d')](_0x34cb5c['attributes'],'id')){_0x34cb5c[_0xd7d1('0x4d')][_0xd7d1('0x4e')]('id');}return db[_0xd7d1('0x44')][_0xd7d1('0x4f')](_0x34cb5c);})['then'](function(_0x2c2eae){_0x238fc2[_0xd7d1('0x50')]=_0x2c2eae;if(_0x3485a2[_0xd7d1('0x49')][_0xd7d1('0x51')]===_0xd7d1('0x52')){var _0x232039=[];for(var _0x485d14=0x0;_0x485d14<_0x238fc2[_0xd7d1('0x50')][_0xd7d1('0x53')];_0x485d14++){_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x54'),_0x238fc2[_0xd7d1('0x50')][_0x485d14]['dataValues']));_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x55'),_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039[_0xd7d1('0x4e')](get_open_tabs('fax',_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039['push'](get_open_tabs(_0xd7d1('0x57'),_0x238fc2[_0xd7d1('0x50')][_0x485d14]['dataValues']));_0x232039[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x58'),_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));_0x232039[_0xd7d1('0x4e')](get_open_tabs('whatsapp',_0x238fc2[_0xd7d1('0x50')][_0x485d14][_0xd7d1('0x56')]));}return Promise[_0xd7d1('0x59')](_0x232039)[_0xd7d1('0x18')](function(){return _0x238fc2;});}else{return _0x238fc2;}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x142099,_0x34cb5c))['catch'](handleError(_0x142099,null));};exports[_0xd7d1('0x5a')]=function(_0x57efb7,_0x4369fd){var _0x272220={'raw':![],'where':{'id':_0x57efb7[_0xd7d1('0x5b')]['id']}},_0x98db9c={};_0x98db9c[_0xd7d1('0x5c')]=_[_0xd7d1('0x5d')](_[_0xd7d1('0x5e')](db['User'][_0xd7d1('0x45')]),[_0xd7d1('0x5f'),'salt']);_0x98db9c[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x57efb7[_0xd7d1('0x49')]);_0x98db9c['filters']=_['intersection'](_0x98db9c[_0xd7d1('0x5c')],_0x98db9c['query']);_0x272220['attributes']=_[_0xd7d1('0x60')](_0x98db9c[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x57efb7['query'][_0xd7d1('0x61')]));_0x272220[_0xd7d1('0x4d')]=_0x272220[_0xd7d1('0x4d')]['length']?_0x272220[_0xd7d1('0x4d')]:_0x98db9c[_0xd7d1('0x5c')];if(_0x57efb7[_0xd7d1('0x49')]['includeAll']){_0x272220[_0xd7d1('0x4b')]=[{'all':!![]}];}if(_0x57efb7[_0xd7d1('0x49')][_0xd7d1('0x4c')]===_0xd7d1('0x52')){_0x272220[_0xd7d1('0x4b')]=[{'model':db[_0xd7d1('0x62')],'as':_0xd7d1('0x4c')}];}_0x272220=_[_0xd7d1('0x63')]({},_0x272220,_0x57efb7['options']);if(!_['includes'](_0x272220[_0xd7d1('0x4d')],'id')){_0x272220[_0xd7d1('0x4d')]['push']('id');}return db[_0xd7d1('0x44')][_0xd7d1('0x64')](_0x272220)[_0xd7d1('0x18')](handleEntityNotFound(_0x4369fd,null))[_0xd7d1('0x18')](function(_0xc702a7){var _0x1bdbc8=[];values=_0xc702a7;if(_0x57efb7[_0xd7d1('0x49')][_0xd7d1('0x51')]==='true'){_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x54'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs('sms',_0xc702a7['dataValues']));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x58'),_0xc702a7['dataValues']));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x65'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8['push'](get_open_tabs(_0xd7d1('0x66'),_0xc702a7[_0xd7d1('0x56')]));_0x1bdbc8[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x57'),_0xc702a7[_0xd7d1('0x56')]));return Promise[_0xd7d1('0x59')](_0x1bdbc8);}else{return values;}})['then'](function(){return values;})[_0xd7d1('0x18')](respondWithResult(_0x4369fd,null))[_0xd7d1('0x23')](handleError(_0x4369fd,null));};exports[_0xd7d1('0x2e')]=function(_0x2c31ae,_0x31fa8d){if(_0x2c31ae[_0xd7d1('0x67')]['id']){delete _0x2c31ae[_0xd7d1('0x67')]['id'];}delete _0x2c31ae[_0xd7d1('0x67')][_0xd7d1('0x2f')];return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x2c31ae[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x31fa8d,null))['then'](saveUpdates(_0x2c31ae['body'],null))[_0xd7d1('0x18')](respondWithResult(_0x31fa8d,null))['catch'](handleError(_0x31fa8d,null));};exports[_0xd7d1('0x68')]=function(_0x9b5a6f,_0x214c9e){return db[_0xd7d1('0x44')][_0xd7d1('0x68')]()['then'](respondWithResult(_0x214c9e,null))['catch'](handleError(_0x214c9e,null));};exports[_0xd7d1('0x69')]=function(_0x3c93e5,_0x6cce25){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x3c93e5[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x6cce25,null))[_0xd7d1('0x18')](function(_0x149cdb){if(_0x149cdb){return _0x149cdb[_0xd7d1('0x69')](_0x3c93e5[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x3c93e5[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})['then'](respondWithResult(_0x6cce25,null))['catch'](handleError(_0x6cce25,null));};function validateUser(_0x4cb17d){return new Promise(function(_0x56c732,_0x405d93){if(_0x4cb17d[_0xd7d1('0x6c')])return _0x56c732(_0x4cb17d);return db[_0xd7d1('0x6d')][_0xd7d1('0x6e')](0x1)[_0xd7d1('0x18')](function(_0x595daf){if(_0x595daf['securePassword'])authService['validatePasswordPattern'](_0x4cb17d[_0xd7d1('0x5f')]);db[_0xd7d1('0x44')][_0xd7d1('0x6f')](_0xd7d1('0x6c'))[_0xd7d1('0x18')](function(_0x12a9e8){if(_[_0xd7d1('0x70')](_0x12a9e8)){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf['min_internal']||0x1;return;}if(_['isNil'](_0x595daf[_0xd7d1('0x71')])||_0x595daf[_0xd7d1('0x71')]===_0x12a9e8){_0x4cb17d[_0xd7d1('0x6c')]=_0x12a9e8+0x1;return;}if(_0x595daf['min_internal']>_0x12a9e8){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf[_0xd7d1('0x71')];return;}return db[_0xd7d1('0x72')][_0xd7d1('0x49')](_0xd7d1('0x73'),{'type':db['sequelize']['QueryTypes'][_0xd7d1('0x74')]})['then'](function(_0x44a21e){if(_0x44a21e&&_0x44a21e['length']){for(var _0x448d7e=0x0,_0x4cb2f4=_0x44a21e[_0xd7d1('0x53')];_0x448d7e<_0x4cb2f4&&_[_0xd7d1('0x70')](_0x4cb17d[_0xd7d1('0x6c')]);_0x448d7e++){if(_0x595daf['min_internal']<=_0x44a21e[_0x448d7e][_0xd7d1('0x75')]){_0x4cb17d['internal']=_0x44a21e[_0x448d7e]['from'];}else if(_0x595daf['min_internal']>_0x44a21e[_0x448d7e][_0xd7d1('0x75')]&&_0x595daf[_0xd7d1('0x71')]<=_0x44a21e[_0x448d7e]['to']){_0x4cb17d[_0xd7d1('0x6c')]=_0x595daf[_0xd7d1('0x71')];}}}if(_['isNil'](_0x4cb17d[_0xd7d1('0x6c')])){_0x4cb17d[_0xd7d1('0x6c')]=_0x12a9e8+0x1;}return _0x56c732(_0x4cb17d);});});})[_0xd7d1('0x23')](function(_0x5ab5e6){_0x405d93(_0x5ab5e6);});});}function updateUser(_0x307659){return new Promise(function(_0x578ae1,_0x1cd98f){try{if(_0x307659[_0xd7d1('0x76')]){_0x307659[_0xd7d1('0x77')]=_0x307659[_0xd7d1('0x6c')];_0x307659['VoiceMail']={'mailbox':_0x307659[_0xd7d1('0x6c')],'password':_0x307659[_0xd7d1('0x5f')],'fullname':_0x307659['fullname'],'email':_0x307659[_0xd7d1('0x78')]};}if(_0x307659[_0xd7d1('0x2f')]==='agent'){if(!_0x307659[_0xd7d1('0x79')])_0x307659[_0xd7d1('0x79')]=[_0xd7d1('0x7a'),_0xd7d1('0x7b'),_0xd7d1('0x7c'),'113',_0xd7d1('0x7d'),_0xd7d1('0x7e'),_0xd7d1('0x7f'),'106','107',_0xd7d1('0x80'),_0xd7d1('0x81'),'100',_0xd7d1('0x82'),_0xd7d1('0x83'),_0xd7d1('0x84')];}_0x578ae1(_0x307659);}catch(_0xcbc02b){_0x1cd98f(_0xcbc02b);}});}exports['create']=function(_0xca029f,_0x1514a3){if(_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]===_0xd7d1('0x30'))throw new Error(_0xd7d1('0x85'));if(_0xca029f[_0xd7d1('0x67')][_0xd7d1('0x2f')]===_0xd7d1('0x35')&&_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xca029f['body'][_0xd7d1('0x2f')]==='admin'&&_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!=='admin'){throw new Error(_0xd7d1('0x86'));}return licenseUtil[_0xd7d1('0x87')]([_0xca029f['body']])[_0xd7d1('0x18')](function(){return validateUser(_0xca029f[_0xd7d1('0x67')]);})[_0xd7d1('0x18')](function(_0x33bc1f){return updateUser(_0x33bc1f)['then'](function(_0x3b6bb0){if(_0x3b6bb0[_0xd7d1('0x2f')]===_0xd7d1('0x33')){_0x3b6bb0[_0xd7d1('0x88')]=_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x88')];delete _0x3b6bb0[_0xd7d1('0x89')];}return _0x3b6bb0;});})[_0xd7d1('0x18')](function(_0x33fe97){return db[_0xd7d1('0x44')][_0xd7d1('0x8a')](_0x33fe97,{'include':[{'model':db['VoiceMail'],'as':_0xd7d1('0x8b')}]});})[_0xd7d1('0x18')](function(_0x665525){if(_0xca029f[_0xd7d1('0x67')]['role']===_0xd7d1('0x35'))return _0x665525;if(_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x2f')]!=='user')return _0x665525;return db[_0xd7d1('0x8c')][_0xd7d1('0x64')]({'where':{'name':_0x665525[_0xd7d1('0x2f')]==='agent'?_0xd7d1('0x36'):'Telephones','userProfileId':_0xca029f[_0xd7d1('0x35')][_0xd7d1('0x89')]},'raw':!![]})[_0xd7d1('0x18')](function(_0x2de19e){if(!_0x2de19e||_0x2de19e['autoAssociation']!=0x0)return _0x665525;return db[_0xd7d1('0x3f')][_0xd7d1('0x8a')]({'name':_0x665525[_0xd7d1('0x3e')],'resourceId':_0x665525['id'],'type':_0x2de19e['name'],'sectionId':_0x2de19e['id']},{})['then'](function(){return _0x665525;});})['catch'](function(_0x3dcc1f){logger[_0xd7d1('0x1e')](_0xd7d1('0x8d'),_0x3dcc1f);throw _0x3dcc1f;});})['then'](respondWithResult(_0x1514a3,0xc9))[_0xd7d1('0x23')](handleError(_0x1514a3,null));};exports['bulkCreate']=function(_0x24f883,_0x3939fb){var _0x34773d=_0x24f883['body'];var _0x724d66=[];if(_0x24f883[_0xd7d1('0x35')]['role']===_0xd7d1('0x30'))throw new Error('Unauthorized');if(_[_0xd7d1('0x8e')](_0x34773d,[_0xd7d1('0x2f'),'user'])&&_0x24f883['user'][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error(_0xd7d1('0x8f'));}if(_[_0xd7d1('0x8e')](_0x34773d,[_0xd7d1('0x2f'),_0xd7d1('0x33')])&&_0x24f883[_0xd7d1('0x35')][_0xd7d1('0x2f')]!==_0xd7d1('0x33')){throw new Error(_0xd7d1('0x90'));}return licenseUtil['checkUserLimits'](_0x34773d)['then'](function(){return validateUser(_0x34773d[0x0]);})['then'](function(){for(var _0xecd0dc=0x1;_0xecd0dc<_0x34773d[_0xd7d1('0x53')];_0xecd0dc++){var _0x44ffc1=_0x34773d[_0xecd0dc-0x1][_0xd7d1('0x6c')];if(!_0x34773d[_0xecd0dc][_0xd7d1('0x6c')])_0x34773d[_0xecd0dc][_0xd7d1('0x6c')]=_0x44ffc1+0x1;_0x724d66[_0xd7d1('0x4e')](validateUser(_0x34773d[_0xecd0dc]));}return Promise[_0xd7d1('0x59')](_0x724d66);})[_0xd7d1('0x18')](function(){_0x724d66=[];for(var _0x1d21bc=0x0;_0x1d21bc<_0x34773d[_0xd7d1('0x53')];_0x1d21bc++){_0x724d66[_0xd7d1('0x4e')](updateUser(_0x34773d[_0x1d21bc]));}return Promise['all'](_0x724d66);})['then'](function(){_0x724d66=_0x34773d['map'](function(_0x1249c0){return db[_0xd7d1('0x44')]['create'](_0x1249c0,{'include':[{'model':db[_0xd7d1('0x8b')],'as':_0xd7d1('0x8b')}]})[_0xd7d1('0x18')](function(_0x366d96){_0x1249c0['id']=_0x366d96['id'];return _0x1249c0;});});return Promise['all'](_0x724d66);})[_0xd7d1('0x18')](function(_0x577ce5){if(_0x24f883[_0xd7d1('0x67')][_0xd7d1('0x2f')]===_0xd7d1('0x35'))return _0x577ce5;if(_0x24f883['user'][_0xd7d1('0x2f')]!==_0xd7d1('0x35'))return _0x577ce5;var _0x446d6e=_[_0xd7d1('0x8e')](_0x577ce5,function(_0x4cd367){return _0x4cd367['role']===_0xd7d1('0x30')||_0x4cd367['role']==='telephone';});if(!_0x446d6e)return _0x577ce5;return db[_0xd7d1('0x8c')][_0xd7d1('0x4f')]({'where':{'name':{'$or':[_0xd7d1('0x36'),'Telephones']},'userProfileId':_0x24f883[_0xd7d1('0x35')]['userProfileId']},'raw':!![]})[_0xd7d1('0x18')](function(_0x162772){if(_['isEmpty'](_0x162772)||!_[_0xd7d1('0x8e')](_0x162772,[_0xd7d1('0x91'),0x0]))return _0x577ce5;_0x724d66=[];var _0x54ec79=_(_0x162772)[_0xd7d1('0x3b')](function(_0x21d871){if(_0x21d871[_0xd7d1('0x91')]===0x1)return;return _0x21d871[_0xd7d1('0x3e')]===_0xd7d1('0x36')?_0xd7d1('0x30'):'telephone';})[_0xd7d1('0x92')]()[_0xd7d1('0x3c')]();for(var _0x5b5cc7=0x0;_0x5b5cc7<_0x577ce5['length'];_0x5b5cc7++){if(!_[_0xd7d1('0x3d')](_0x54ec79,_0x577ce5[_0x5b5cc7][_0xd7d1('0x2f')]))return;var _0x574b22=_0x577ce5[_0x5b5cc7][_0xd7d1('0x2f')]===_0xd7d1('0x30')?_0xd7d1('0x36'):_0xd7d1('0x37');_0x724d66[_0xd7d1('0x4e')](db[_0xd7d1('0x3f')][_0xd7d1('0x8a')]({'name':_0x577ce5[_0x5b5cc7][_0xd7d1('0x3e')],'resourceId':_0x577ce5[_0x5b5cc7]['id'],'type':_0x574b22,'sectionId':_[_0xd7d1('0x64')](_0x162772,[_0xd7d1('0x3e'),_0x574b22])['id']},{}));}return Promise[_0xd7d1('0x59')](_0x724d66);});})[_0xd7d1('0x18')](respondWithResult(_0x3939fb,0xc9))[_0xd7d1('0x23')](handleError(_0x3939fb,null));};exports['changePassword']=function(_0x53ec26,_0x378448){if(_0x53ec26[_0xd7d1('0x67')]['id']){delete _0x53ec26['body']['id'];}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x53ec26[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(_0xd46aef){if(!_0xd46aef)return null;if(_0xd46aef['id']===_0x53ec26[_0xd7d1('0x35')]['id']){if(!_0x53ec26[_0xd7d1('0x67')]['oldPassword']||!_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db['Sequelize']['ValidationError'](_0xd7d1('0x94'));}if(!_0xd46aef[_0xd7d1('0x95')](_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x96')])){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0x99'));}if(_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x96')]===_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0x9a'));}}else if(_0x53ec26[_0xd7d1('0x35')]['role']===_0xd7d1('0x33')){if(!_0x53ec26['body'][_0xd7d1('0x93')]){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0x9b'));}}else if(_0x53ec26['user']['role']==='user'){if(!_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]){throw new db['Sequelize'][(_0xd7d1('0x98'))](_0xd7d1('0x9b'));}if(_0xd46aef[_0xd7d1('0x2f')]!==_0xd7d1('0x30')){throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))]('Unauthorized');}}else{throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))]('Unauthorized');}return _0xd46aef;})[_0xd7d1('0x18')](handleEntityNotFound(_0x378448,null))[_0xd7d1('0x18')](function(_0x544c43){return db[_0xd7d1('0x6d')]['findOne']({'attributes':['id',_0xd7d1('0x9c'),_0xd7d1('0x9d'),_0xd7d1('0x9e')]})[_0xd7d1('0x18')](function(_0x29ac0b){if(_0x29ac0b['securePassword'])authService[_0xd7d1('0x9f')](_0x53ec26[_0xd7d1('0x67')][_0xd7d1('0x93')]);if(!_0x29ac0b[_0xd7d1('0x9d')]||!_0x544c43[_0xd7d1('0xa0')])return _0x544c43;authService[_0xd7d1('0xa1')](_0x53ec26['body'][_0xd7d1('0x93')],_0x544c43[_0xd7d1('0xa0')],_0x29ac0b[_0xd7d1('0x9e')]);return _0x544c43;})['then'](saveUpdates({'password':_0x53ec26[_0xd7d1('0x67')]['newPassword'],'passwordResetAt':_0x53ec26[_0xd7d1('0x35')]['id']==_0x53ec26[_0xd7d1('0x5b')]['id']?moment():null,'previousPasswords':authService[_0xd7d1('0xa2')](_0x53ec26['body'][_0xd7d1('0x93')],_0x544c43[_0xd7d1('0xa0')])},null));})[_0xd7d1('0x18')](respondWithResult(_0x378448,null))[_0xd7d1('0x23')](handleError(_0x378448,null));};exports[_0xd7d1('0xa3')]=function(_0x2a81dc,_0x4a7849){var _0x4c09ef=_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xa4')];return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x2a81dc[_0xd7d1('0x5b')]['id']},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f'),_0xd7d1('0xa5'),'loginInPause','voicePause',_0xd7d1('0xa6')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x4a7849,null))[_0xd7d1('0x18')](function(_0x4c8d17){if(_0x4c8d17){if(!utils[_0xd7d1('0xa7')](_0x4c09ef)){throw new db['Sequelize']['ValidationError'](_0xd7d1('0xa8'));}return _0x4c8d17[_0xd7d1('0xa9')+_[_0xd7d1('0xaa')](_0x4c09ef['toLowerCase']())+_0xd7d1('0xab')](_0x2a81dc['body'][_0xd7d1('0x6a')],{'penalty':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xac')]||0x0})[_0xd7d1('0xad')](function(_0x1a6cf1){for(var _0x25d79e=0x0;_0x25d79e<_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x25d79e+=0x1){var _0x1859d4={'UserId':Number(_0x2a81dc['params']['id'])};_0x1859d4[_[_0xd7d1('0xaa')](_0x4c09ef[_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x2a81dc['body']['ids'][_0x25d79e]);socket['emit'](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x4c09ef['toLowerCase']())+_0xd7d1('0xb0'),_0x1859d4);}return _0x1a6cf1;})['then'](function(){if(_0x4c09ef===_0xd7d1('0xb1')){return db['VoiceQueue'][_0xd7d1('0x4f')]({'where':{'id':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0x6a')]||[]},'raw':!![],'attributes':['id',_0xd7d1('0x3e')]});}})[_0xd7d1('0x18')](function(_0x2d4611){var _0x5c964b=_0x4c8d17[_0xd7d1('0xb2')]({'plain':!![]});var _0x3f861f=[];if(_0x4c09ef==='voice'&&_0x5c964b[_0xd7d1('0x2f')]===_0xd7d1('0x30')&&_0x5c964b[_0xd7d1('0xa5')]){for(let _0x4f5856=0x0;_0x4f5856<_0x2d4611[_0xd7d1('0x53')];_0x4f5856+=0x1){_0x3f861f[_0xd7d1('0x4e')]({'membername':_0x5c964b[_0xd7d1('0x3e')],'UserId':_0x5c964b['id'],'queue_name':_0x2d4611[_0x4f5856]['name'],'VoiceQueueId':_0x2d4611[_0x4f5856]['id'],'interface':_[_0xd7d1('0x70')](_0x5c964b['interface'])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x5c964b[_0xd7d1('0x3e')]):_0x5c964b[_0xd7d1('0xa6')],'paused':_0x5c964b[_0xd7d1('0xb5')]||![],'penalty':_0x2a81dc[_0xd7d1('0x67')][_0xd7d1('0xac')]||0x0});}return Promise['all'](_0x3f861f[_0xd7d1('0x3b')](function(_0x2fbbaf){return db[_0xd7d1('0xb6')][_0xd7d1('0xb7')](_0x2fbbaf);}));}return _0x4c8d17;});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x4a7849,null))[_0xd7d1('0x23')](handleError(_0x4a7849,null));};exports[_0xd7d1('0xb8')]=function(_0x10f3ea,_0x3c7307){var _0x44484d,_0x4ec3d7;return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x10f3ea[_0xd7d1('0x5b')]['id']},'attributes':['id','name',_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x3c7307,null))[_0xd7d1('0x18')](function(_0x4b67b4){if(_0x4b67b4){_0x44484d=_0x4b67b4;if(!_0x10f3ea['query']['channel']||!utils[_0xd7d1('0xa7')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')])){throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0xa8'));}return _0x4b67b4[_0xd7d1('0xb9')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xab')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](function(_0x35509e){if(_[_0xd7d1('0xba')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')])){for(var _0x51b75b=0x0;_0x51b75b<_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x51b75b+=0x1){_0x4ec3d7={'UserId':Number(_0x10f3ea[_0xd7d1('0x5b')]['id'])};_0x4ec3d7[_['capitalize'](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x10f3ea['query'][_0xd7d1('0x6a')][_0x51b75b]);socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')]['toLowerCase']())+_0xd7d1('0xbb'),_0x4ec3d7);}}else{_0x4ec3d7={'UserId':Number(_0x10f3ea[_0xd7d1('0x5b')]['id'])};_0x4ec3d7[_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')]['channel'][_0xd7d1('0xae')]())+_0xd7d1('0xaf')]=Number(_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]);socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_[_0xd7d1('0xaa')](_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')][_0xd7d1('0xae')]())+_0xd7d1('0xbb'),_0x4ec3d7);}return _0x35509e;})[_0xd7d1('0x18')](function(){if(_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0xa4')]==='voice'){return db['UserVoiceQueueRt'][_0xd7d1('0x40')]({'where':{'UserId':_0x10f3ea[_0xd7d1('0x5b')]['id'],'VoiceQueueId':_0x10f3ea[_0xd7d1('0x49')][_0xd7d1('0x6a')]},'individualHooks':!![]})[_0xd7d1('0x18')](function(){return _0x44484d;});}return _0x44484d;})[_0xd7d1('0x18')](respondWithStatusCode(_0x3c7307,null))[_0xd7d1('0x23')](handleError(_0x3c7307,null));};exports[_0xd7d1('0xbc')]=function(_0x2a60ac,_0x3308c2){_0x2a60ac[_0xd7d1('0x67')]['userpic']=_0x2a60ac[_0xd7d1('0xbd')][_0xd7d1('0xbe')];return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x2a60ac['params']['id']}})['then'](handleEntityNotFound(_0x3308c2,null))[_0xd7d1('0x18')](saveUpdates(_0x2a60ac[_0xd7d1('0x67')],null))['then'](respondWithResult(_0x3308c2,null))[_0xd7d1('0x23')](handleError(_0x3308c2,null));};exports[_0xd7d1('0xbf')]=function(_0x48c2cd,_0x19f255){var _0x5c35b8=path[_0xd7d1('0xc0')](config[_0xd7d1('0xc1')],_0xd7d1('0xc2'));return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x48c2cd[_0xd7d1('0x5b')]['id']},'attributes':['id',_0xd7d1('0xc3')],'raw':!![]})[_0xd7d1('0x18')](handleEntityNotFound(_0x19f255,null))['then'](function(_0x4570cd){if(_0x4570cd){if(_[_0xd7d1('0x70')](_0x4570cd[_0xd7d1('0xc3')])){return _0x19f255[_0xd7d1('0xc4')](_0x5c35b8);}else{if(!fs['existsSync'](path['join'](config[_0xd7d1('0xc1')],'server/files/images/',_0x4570cd[_0xd7d1('0xc3')]))){return _0x19f255['download'](_0x5c35b8);}return _0x19f255['download'](path[_0xd7d1('0xc0')](config['root'],_0xd7d1('0xc5'),_0x4570cd[_0xd7d1('0xc3')]));}}})[_0xd7d1('0x23')](handleError(_0x19f255,null));};exports['getOpenTabs']=function(_0x142904,_0x1779fe){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x142904[_0xd7d1('0x5b')]['id']},'attributes':['id']})[_0xd7d1('0x18')](handleEntityNotFound(_0x1779fe,null))[_0xd7d1('0x18')](function(_0x10c729){var _0x2afed0=[];values=_0x10c729['dataValues'];_0x2afed0['push'](get_open_tabs('chat',_0x10c729[_0xd7d1('0x56')]));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x55'),_0x10c729['dataValues']));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x58'),_0x10c729['dataValues']));_0x2afed0['push'](get_open_tabs(_0xd7d1('0x65'),_0x10c729['dataValues']));_0x2afed0[_0xd7d1('0x4e')](get_open_tabs(_0xd7d1('0x66'),_0x10c729[_0xd7d1('0x56')]));_0x2afed0[_0xd7d1('0x4e')](get_open_tabs('mail',_0x10c729[_0xd7d1('0x56')]));return Promise['all'](_0x2afed0);})['then'](function(_0x57b65f){if(_0x57b65f){var _0x37ffd3=_[_0xd7d1('0x3b')](values['ChatOpenTabs'],function(_0x43ebb0){return{'channel':_0xd7d1('0xc6'),'id':_0x43ebb0['id'],'createdAt':_0x43ebb0['createdAt']};});var _0x18fa2a=_[_0xd7d1('0x3b')](values[_0xd7d1('0xc7')],function(_0x113634){return{'channel':_0xd7d1('0xc8'),'id':_0x113634['id'],'createdAt':_0x113634['createdAt']};});var _0x18812d=_[_0xd7d1('0x3b')](values[_0xd7d1('0xc9')],function(_0x39b178){return{'channel':_0xd7d1('0xca'),'id':_0x39b178['id'],'createdAt':_0x39b178['createdAt']};});var _0x3501ec=_[_0xd7d1('0x3b')](values[_0xd7d1('0xcb')],function(_0x1b8459){return{'channel':_0xd7d1('0xcc'),'id':_0x1b8459['id'],'createdAt':_0x1b8459[_0xd7d1('0xcd')]};});var _0x363727=_[_0xd7d1('0x3b')](values[_0xd7d1('0xce')],function(_0x6d24d5){return{'channel':_0xd7d1('0xcf'),'id':_0x6d24d5['id'],'createdAt':_0x6d24d5[_0xd7d1('0xcd')]};});var _0x3257e2=_['map'](values[_0xd7d1('0xd0')],function(_0x3e501e){return{'channel':_0xd7d1('0xd1'),'id':_0x3e501e['id'],'createdAt':_0x3e501e[_0xd7d1('0xcd')]};});var _0x13d087=_['concat'](_0x37ffd3,_0x18fa2a,_0x18812d,_0x3501ec,_0x363727,_0x3257e2);var _0x47b4d5={'count':_0x13d087[_0xd7d1('0x53')],'rows':_0x13d087};return _0x47b4d5;}else return null;})[_0xd7d1('0x18')](respondWithResult(_0x1779fe,null))[_0xd7d1('0x23')](handleError(_0x1779fe,null));};exports['getContacts']=function(_0x52c68e,_0x2dda61){var _0x21b1e9={};var _0x19ac0d={};var _0x3dce3c;var _0x46a40a;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x52c68e[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2dda61,null))[_0xd7d1('0x18')](function(_0x54c0c5){if(_0x54c0c5){_0x3dce3c=_0x54c0c5;_0x19ac0d[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xd3')][_0xd7d1('0x45')]);_0x19ac0d[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x52c68e[_0xd7d1('0x49')]);_0x19ac0d[_0xd7d1('0xd4')]=_['intersection'](_0x19ac0d[_0xd7d1('0x5c')],_0x19ac0d[_0xd7d1('0x49')]);_0x21b1e9[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x19ac0d['model'],qs[_0xd7d1('0x61')](_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x21b1e9[_0xd7d1('0x4d')]=_0x21b1e9['attributes'][_0xd7d1('0x53')]?_0x21b1e9[_0xd7d1('0x4d')]:_0x19ac0d[_0xd7d1('0x5c')];_0x21b1e9[_0xd7d1('0xd5')]=qs['sort'](_0x52c68e[_0xd7d1('0x49')]['sort']);_0x21b1e9[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x52c68e[_0xd7d1('0x49')],_0x19ac0d[_0xd7d1('0xd4')]));if(_0x52c68e[_0xd7d1('0x49')]['filter']){_0x21b1e9['where']=_[_0xd7d1('0x63')](_0x21b1e9['where'],{'$or':_[_0xd7d1('0x3b')](_0x21b1e9[_0xd7d1('0x4d')],function(_0x19168f){var _0x53d466={};_0x53d466[_0x19168f]={'$like':'%'+_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x53d466;})});}_0x21b1e9=_[_0xd7d1('0x63')]({},_0x21b1e9,_0x52c68e[_0xd7d1('0xd6')]);return _0x3dce3c[_0xd7d1('0xd7')](_0x21b1e9);}})['then'](function(_0x24cb7c){if(_0x24cb7c){_0x46a40a=_0x24cb7c[_0xd7d1('0x53')];if(_0x52c68e['query']['hasOwnProperty'](_0xd7d1('0x4a'))){_0x21b1e9['include']=[{'model':db[_0xd7d1('0xd8')],'as':_0xd7d1('0xd9'),'required':![]},{'model':db[_0xd7d1('0xda')],'as':_0xd7d1('0xdb'),'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0xdc')],'where':_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xdd')]?{'id':_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xdd')]}:undefined,'required':_0x52c68e[_0xd7d1('0x49')]['tag']?!![]:![]}];}if(!_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x21b1e9['limit']=qs[_0xd7d1('0x28')](_0x52c68e['query']['limit']);_0x21b1e9['offset']=qs['offset'](_0x52c68e[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x3dce3c[_0xd7d1('0xd7')](_0x21b1e9);}})['then'](function(_0x4cbbd6){if(_0x4cbbd6){return _0x4cbbd6?{'count':_0x46a40a,'rows':_0x4cbbd6}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x2dda61,null))['catch'](handleError(_0x2dda61,null));};exports['getQueues']=function(_0x512602,_0x344c0f){var _0x33b813;var _0xa148ca={};var _0x2f27a6;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x512602['params']['id']},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x344c0f,null))[_0xd7d1('0x18')](function(_0x1ff72a){if(!utils['isValidChannel'](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])){throw new db['Sequelize'][(_0xd7d1('0x98'))](_0xd7d1('0xa8'));}_0x33b813=_0x1ff72a;var _0x5c752d={};_0x5c752d['model']=_[_0xd7d1('0x5e')](db[_[_0xd7d1('0xaa')](_0x512602['query'][_0xd7d1('0xa4')])+_0xd7d1('0xe0')]['rawAttributes']);_0x5c752d[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x512602['query']);_0x5c752d['filters']=_[_0xd7d1('0x60')](_0x5c752d[_0xd7d1('0x5c')],_0x5c752d[_0xd7d1('0x49')]);_0xa148ca[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5c752d['model'],qs[_0xd7d1('0x61')](_0x512602['query'][_0xd7d1('0x61')]));_0xa148ca[_0xd7d1('0x4d')]=_0xa148ca[_0xd7d1('0x4d')]['length']?_0xa148ca[_0xd7d1('0x4d')]:_0x5c752d[_0xd7d1('0x5c')];_0xa148ca['order']=qs[_0xd7d1('0xe1')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0xa148ca[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x512602['query'],_0x5c752d[_0xd7d1('0xd4')]));if(_0x512602['query'][_0xd7d1('0x39')]){_0xa148ca[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0xa148ca[_0xd7d1('0x48')],{'$or':_['map'](_0xa148ca[_0xd7d1('0x4d')],function(_0x19fc16){var _0x299e53={};_0x299e53[_0x19fc16]={'$like':'%'+_0x512602[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x299e53;})});}_0xa148ca=_['merge']({},_0xa148ca,_0x512602[_0xd7d1('0xd6')]);switch(_0x33b813[_0xd7d1('0x2f')]){case _0xd7d1('0x33'):return db[_['capitalize'](_0x512602['query'][_0xd7d1('0xa4')])+'Queue'][_0xd7d1('0x4f')](_0xa148ca);case _0xd7d1('0x35'):case'agent':return _0x33b813[_0xd7d1('0xb2')+_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xab')](_0xa148ca);default:throw new db[(_0xd7d1('0x97'))][(_0xd7d1('0x98'))](_0xd7d1('0xe3'));}})[_0xd7d1('0x18')](function(_0x32e2dd){_0x2f27a6=_0x32e2dd[_0xd7d1('0x53')];if(!_0x512602[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0xa148ca[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0xa148ca[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0x27')]);}switch(_0x33b813[_0xd7d1('0x2f')]){case _0xd7d1('0x33'):return db[_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xe0')]['findAll'](_0xa148ca);case'user':case _0xd7d1('0x30'):return _0x33b813[_0xd7d1('0xb2')+_[_0xd7d1('0xaa')](_0x512602[_0xd7d1('0x49')][_0xd7d1('0xa4')])+_0xd7d1('0xab')](_0xa148ca);}})['then'](function(_0x58b081){return{'count':_0x2f27a6,'rows':_0x58b081};})['then'](respondWithResult(_0x344c0f,null))['catch'](handleError(_0x344c0f,null));};exports[_0xd7d1('0xe4')]=function(_0x2c35e9,_0x36f9e1){var _0xbdf7c7={};var _0x5321db={};var _0x336eac;var _0x446e60;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x2c35e9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x36f9e1,null))['then'](function(_0x338479){if(_0x338479){_0x336eac=_0x338479;_0x5321db[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db['UserVoiceQueueRt'][_0xd7d1('0x45')]);_0x5321db[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x2c35e9[_0xd7d1('0x49')]);_0x5321db[_0xd7d1('0xd4')]=_['intersection'](_0x5321db[_0xd7d1('0x5c')],_0x5321db[_0xd7d1('0x49')]);_0xbdf7c7[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5321db[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0xbdf7c7[_0xd7d1('0x4d')]=_0xbdf7c7[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0xbdf7c7['attributes']:_0x5321db[_0xd7d1('0x5c')];_0xbdf7c7[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2c35e9[_0xd7d1('0x49')]['sort']);_0xbdf7c7[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x2c35e9[_0xd7d1('0x49')],_0x5321db['filters']));if(_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0xbdf7c7[_0xd7d1('0x48')]=_['merge'](_0xbdf7c7['where'],{'$or':_[_0xd7d1('0x3b')](_0xbdf7c7[_0xd7d1('0x4d')],function(_0xcb7b71){var _0x2ebd40={};_0x2ebd40[_0xcb7b71]={'$like':'%'+_0x2c35e9[_0xd7d1('0x49')]['filter']+'%'};return _0x2ebd40;})});}_0xbdf7c7=_[_0xd7d1('0x63')]({},_0xbdf7c7,_0x2c35e9['options']);return _0x336eac[_0xd7d1('0xe4')](_0xbdf7c7);}})[_0xd7d1('0x18')](function(_0x39e826){if(_0x39e826){_0x446e60=_0x39e826['length'];if(!_0x2c35e9[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0xbdf7c7[_0xd7d1('0x28')]=qs['limit'](_0x2c35e9[_0xd7d1('0x49')]['limit']);_0xbdf7c7[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x2c35e9['query']['offset']);}return _0x336eac['getVoiceQueuesRt'](_0xbdf7c7);}})[_0xd7d1('0x18')](function(_0x216c15){if(_0x216c15){return _0x216c15?{'count':_0x446e60,'rows':_0x216c15}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x36f9e1,null))['catch'](handleError(_0x36f9e1,null));};exports[_0xd7d1('0xe5')]=function(_0x2fbb2d,_0x1487aa){var _0x4c471d={};var _0x12e386={};var _0x2531dc;var _0x31ba9b;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x2fbb2d['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x1487aa,null))[_0xd7d1('0x18')](function(_0x72e0fe){if(_0x72e0fe){_0x2531dc=_0x72e0fe;_0x12e386[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xe6')][_0xd7d1('0x45')]);_0x12e386[_0xd7d1('0x49')]=_['keys'](_0x2fbb2d[_0xd7d1('0x49')]);_0x12e386[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x12e386[_0xd7d1('0x5c')],_0x12e386['query']);_0x4c471d[_0xd7d1('0x4d')]=_['intersection'](_0x12e386[_0xd7d1('0x5c')],qs['fields'](_0x2fbb2d[_0xd7d1('0x49')]['fields']));_0x4c471d[_0xd7d1('0x4d')]=_0x4c471d[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x4c471d[_0xd7d1('0x4d')]:_0x12e386['model'];_0x4c471d[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x4c471d[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x2fbb2d['query'],_0x12e386[_0xd7d1('0xd4')]));if(_0x2fbb2d['query'][_0xd7d1('0x39')]){_0x4c471d[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x4c471d[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x4c471d[_0xd7d1('0x4d')],function(_0x42a896){var _0x892154={};_0x892154[_0x42a896]={'$like':'%'+_0x2fbb2d[_0xd7d1('0x49')]['filter']+'%'};return _0x892154;})});}_0x4c471d=_['merge']({},_0x4c471d,_0x2fbb2d['options']);return _0x2531dc[_0xd7d1('0xe5')](_0x4c471d);}})[_0xd7d1('0x18')](function(_0x2f5de8){if(_0x2f5de8){_0x31ba9b=_0x2f5de8[_0xd7d1('0x53')];if(!_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x4c471d['limit']=qs['limit'](_0x2fbb2d[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x4c471d[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x2fbb2d[_0xd7d1('0x49')]['offset']);}return _0x2531dc[_0xd7d1('0xe5')](_0x4c471d);}})[_0xd7d1('0x18')](function(_0x25da8d){if(_0x25da8d){return _0x25da8d?{'count':_0x31ba9b,'rows':_0x25da8d}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x1487aa,null))['catch'](handleError(_0x1487aa,null));};exports[_0xd7d1('0xe7')]=function(_0x279f61,_0x1c9400){var _0x3f7626={'raw':!![],'where':{}};var _0x5a8677={};var _0x5e06fa={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x279f61[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x1c9400,null))['then'](function(_0xe8d681){if(_0xe8d681){_0x5a8677['model']=_[_0xd7d1('0x5e')](db['VoiceRecording'][_0xd7d1('0x45')]);_0x5a8677[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x279f61[_0xd7d1('0x49')]);_0x5a8677[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x5a8677[_0xd7d1('0x5c')],_0x5a8677[_0xd7d1('0x49')]);_0x3f7626[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5a8677[_0xd7d1('0x5c')],qs['fields'](_0x279f61[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x3f7626[_0xd7d1('0x4d')]=_0x3f7626[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x3f7626[_0xd7d1('0x4d')]:_0x5a8677['model'];if(!_0x279f61['query']['hasOwnProperty']('nolimit')){_0x3f7626[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x279f61['query'][_0xd7d1('0x28')]);_0x3f7626[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x279f61[_0xd7d1('0x49')]['offset']);}_0x3f7626[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x279f61['query'][_0xd7d1('0xe1')]);_0x3f7626[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x279f61[_0xd7d1('0x49')],_0x5a8677[_0xd7d1('0xd4')]));_0x3f7626[_0xd7d1('0x48')]['UserId']=_0xe8d681['id'];if(_0x279f61['query'][_0xd7d1('0x39')]){_0x3f7626[_0xd7d1('0x48')]=_['merge'](_0x3f7626[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x3f7626[_0xd7d1('0x4d')],function(_0x2dc622){var _0x148386={};_0x148386[_0x2dc622]={'$like':'%'+_0x279f61['query'][_0xd7d1('0x39')]+'%'};return _0x148386;})});}_0x3f7626=_['merge']({},_0x3f7626,_0x279f61['options']);return db[_0xd7d1('0xe8')]['count']({'where':_0x3f7626[_0xd7d1('0x48')]})[_0xd7d1('0x18')](function(_0x283a1e){_0x5e06fa[_0xd7d1('0x2a')]=_0x283a1e;if(_0x279f61[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x3f7626['include']=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x3f7626);})[_0xd7d1('0x18')](function(_0x2e5752){_0x5e06fa[_0xd7d1('0x50')]=_0x2e5752;return _0x5e06fa;});}})['then'](respondWithFilteredResult(_0x1c9400,_0x3f7626))['catch'](handleError(_0x1c9400,null));};exports['getScreenRecordings']=function(_0x4bc072,_0x311fb8){var _0x387d65={'raw':!![],'where':{}};var _0x41c806={};var _0x33182d={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x4bc072[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x311fb8,null))[_0xd7d1('0x18')](function(_0x2cc026){if(_0x2cc026){_0x41c806[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xe9')]['rawAttributes']);_0x41c806['query']=_[_0xd7d1('0x5e')](_0x4bc072[_0xd7d1('0x49')]);_0x41c806[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x41c806[_0xd7d1('0x5c')],_0x41c806[_0xd7d1('0x49')]);_0x387d65[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x41c806[_0xd7d1('0x5c')],qs['fields'](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x387d65[_0xd7d1('0x4d')]=_0x387d65['attributes'][_0xd7d1('0x53')]?_0x387d65['attributes']:_0x41c806[_0xd7d1('0x5c')];if(!_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x387d65['limit']=qs[_0xd7d1('0x28')](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x387d65['offset']=qs[_0xd7d1('0x27')](_0x4bc072[_0xd7d1('0x49')]['offset']);}_0x387d65[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x387d65[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x4bc072[_0xd7d1('0x49')],_0x41c806['filters']));_0x387d65[_0xd7d1('0x48')][_0xd7d1('0xea')]=_0x2cc026['id'];if(_0x4bc072['query']['filter']){_0x387d65[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x387d65[_0xd7d1('0x48')],{'$or':_['map'](_0x387d65['attributes'],function(_0xc61b5a){var _0x24964a={};_0x24964a[_0xc61b5a]={'$like':'%'+_0x4bc072['query'][_0xd7d1('0x39')]+'%'};return _0x24964a;})});}_0x387d65=_[_0xd7d1('0x63')]({},_0x387d65,_0x4bc072[_0xd7d1('0xd6')]);return db[_0xd7d1('0xe9')][_0xd7d1('0x2a')]({'where':_0x387d65['where']})['then'](function(_0x2d7f9a){_0x33182d[_0xd7d1('0x2a')]=_0x2d7f9a;if(_0x4bc072[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x387d65[_0xd7d1('0x4b')]=[{'all':!![]}];}return db['ScreenRecording'][_0xd7d1('0x4f')](_0x387d65);})['then'](function(_0x320876){_0x33182d['rows']=_0x320876;return _0x33182d;});}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x311fb8,_0x387d65))[_0xd7d1('0x23')](handleError(_0x311fb8,null));};exports[_0xd7d1('0xeb')]=function(_0x218562,_0x4d2af9){var _0x1663bb={};var _0x410053={};var _0x4b16a3;var _0x29638c;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x218562[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4d2af9,null))[_0xd7d1('0x18')](function(_0x12db34){if(_0x12db34){_0x4b16a3=_0x12db34;_0x410053[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xec')][_0xd7d1('0x45')]);_0x410053[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x218562['query']);_0x410053[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x410053[_0xd7d1('0x5c')],_0x410053['query']);_0x1663bb['attributes']=_[_0xd7d1('0x60')](_0x410053[_0xd7d1('0x5c')],qs['fields'](_0x218562[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x1663bb[_0xd7d1('0x4d')]=_0x1663bb['attributes'][_0xd7d1('0x53')]?_0x1663bb[_0xd7d1('0x4d')]:_0x410053[_0xd7d1('0x5c')];_0x1663bb[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x218562[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x1663bb[_0xd7d1('0x48')]=qs['filters'](_['pick'](_0x218562[_0xd7d1('0x49')],_0x410053[_0xd7d1('0xd4')]));if(_0x218562[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x1663bb[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x1663bb[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x1663bb['attributes'],function(_0x4c6e9a){var _0x174e3a={};_0x174e3a[_0x4c6e9a]={'$like':'%'+_0x218562[_0xd7d1('0x49')]['filter']+'%'};return _0x174e3a;})});}_0x1663bb=_[_0xd7d1('0x63')]({},_0x1663bb,_0x218562[_0xd7d1('0xd6')]);return _0x4b16a3[_0xd7d1('0xeb')](_0x1663bb);}})['then'](function(_0x42d2dc){if(_0x42d2dc){_0x29638c=_0x42d2dc[_0xd7d1('0x53')];if(!_0x218562[_0xd7d1('0x49')][_0xd7d1('0xde')]('nolimit')){_0x1663bb[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x218562['query']['limit']);_0x1663bb[_0xd7d1('0x27')]=qs['offset'](_0x218562['query']['offset']);}return _0x4b16a3['getChatInteractions'](_0x1663bb);}})[_0xd7d1('0x18')](function(_0x486328){if(_0x486328){return _0x486328?{'count':_0x29638c,'rows':_0x486328}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x4d2af9,null))[_0xd7d1('0x23')](handleError(_0x4d2af9,null));};exports[_0xd7d1('0xed')]=function(_0x5e0fdd,_0x209acb){var _0x20e298={};var _0x3fa763={};var _0x47e2a8;var _0x59d49d;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x5e0fdd[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x209acb,null))[_0xd7d1('0x18')](function(_0x513c69){if(_0x513c69){_0x47e2a8=_0x513c69;_0x3fa763['model']=_[_0xd7d1('0x5e')](db[_0xd7d1('0xee')][_0xd7d1('0x45')]);_0x3fa763[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x5e0fdd[_0xd7d1('0x49')]);_0x3fa763['filters']=_[_0xd7d1('0x60')](_0x3fa763[_0xd7d1('0x5c')],_0x3fa763['query']);_0x20e298[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3fa763[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x20e298[_0xd7d1('0x4d')]=_0x20e298['attributes']['length']?_0x20e298['attributes']:_0x3fa763[_0xd7d1('0x5c')];_0x20e298['order']=qs['sort'](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x20e298[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x5e0fdd[_0xd7d1('0x49')],_0x3fa763[_0xd7d1('0xd4')]));if(_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x20e298[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x20e298['where'],{'$or':_['map'](_0x20e298['attributes'],function(_0x9e69ac){var _0x2df98f={};_0x2df98f[_0x9e69ac]={'$like':'%'+_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x2df98f;})});}_0x20e298=_[_0xd7d1('0x63')]({},_0x20e298,_0x5e0fdd['options']);return _0x47e2a8[_0xd7d1('0xed')](_0x20e298);}})[_0xd7d1('0x18')](function(_0x3a3df0){if(_0x3a3df0){_0x59d49d=_0x3a3df0['length'];if(!_0x5e0fdd['query']['hasOwnProperty'](_0xd7d1('0xdf'))){_0x20e298['limit']=qs[_0xd7d1('0x28')](_0x5e0fdd[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x20e298[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x5e0fdd[_0xd7d1('0x49')]['offset']);}return _0x47e2a8[_0xd7d1('0xed')](_0x20e298);}})[_0xd7d1('0x18')](function(_0x4cd138){if(_0x4cd138){return _0x4cd138?{'count':_0x59d49d,'rows':_0x4cd138}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x209acb,null))[_0xd7d1('0x23')](handleError(_0x209acb,null));};exports[_0xd7d1('0xef')]=function(_0x6d3ad7,_0x3533a7){var _0x426b26={'raw':!![],'where':{}};var _0x3b72c6={};var _0x59ad1a={'count':0x0,'rows':[]};return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x6d3ad7[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3533a7,null))['then'](function(_0x52e7e9){if(_0x52e7e9){_0x3b72c6['model']=_['keys'](db['MailInteraction'][_0xd7d1('0x45')]);_0x3b72c6[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x6d3ad7[_0xd7d1('0x49')]);_0x3b72c6['filters']=_['intersection'](_0x3b72c6[_0xd7d1('0x5c')],_0x3b72c6[_0xd7d1('0x49')]);_0x426b26[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3b72c6['model'],qs[_0xd7d1('0x61')](_0x6d3ad7[_0xd7d1('0x49')]['fields']));_0x426b26[_0xd7d1('0x4d')]=_0x426b26[_0xd7d1('0x4d')]['length']?_0x426b26[_0xd7d1('0x4d')]:_0x3b72c6[_0xd7d1('0x5c')];if(!_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x426b26[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x6d3ad7[_0xd7d1('0x49')]['limit']);_0x426b26[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x6d3ad7['query'][_0xd7d1('0x27')]);}_0x426b26[_0xd7d1('0xd5')]=qs['sort'](_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x426b26['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x6d3ad7['query'],_0x3b72c6['filters']));_0x426b26['where'][_0xd7d1('0xea')]=_0x52e7e9['id'];if(_0x6d3ad7[_0xd7d1('0x49')]['filter']){_0x426b26['where']=_[_0xd7d1('0x63')](_0x426b26[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x426b26[_0xd7d1('0x4d')],function(_0x3acb82){var _0x2a040b={};_0x2a040b[_0x3acb82]={'$like':'%'+_0x6d3ad7[_0xd7d1('0x49')]['filter']+'%'};return _0x2a040b;})});}_0x426b26=_[_0xd7d1('0x63')]({},_0x426b26,_0x6d3ad7[_0xd7d1('0xd6')]);return db[_0xd7d1('0xf0')][_0xd7d1('0x2a')]({'where':_0x426b26[_0xd7d1('0x48')]})['then'](function(_0x4ecc70){_0x59ad1a[_0xd7d1('0x2a')]=_0x4ecc70;if(_0x6d3ad7[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x426b26[_0xd7d1('0x4b')]=[{'all':!![]}];}return db['MailInteraction'][_0xd7d1('0x4f')](_0x426b26);})[_0xd7d1('0x18')](function(_0x6c0ed0){_0x59ad1a[_0xd7d1('0x50')]=_0x6c0ed0;return _0x59ad1a;});}})[_0xd7d1('0x18')](respondWithFilteredResult(_0x3533a7,_0x426b26))[_0xd7d1('0x23')](handleError(_0x3533a7,null));};exports[_0xd7d1('0xf1')]=function(_0x554832,_0x5244ae){var _0x5429da={};var _0x7c054b={};var _0x58729c;var _0x3a41c3;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x554832[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5244ae,null))[_0xd7d1('0x18')](function(_0x3099cc){if(_0x3099cc){_0x58729c=_0x3099cc;_0x7c054b[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db['SmsInteraction'][_0xd7d1('0x45')]);_0x7c054b[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x554832['query']);_0x7c054b[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x7c054b[_0xd7d1('0x5c')],_0x7c054b[_0xd7d1('0x49')]);_0x5429da[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x7c054b[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x5429da[_0xd7d1('0x4d')]=_0x5429da['attributes'][_0xd7d1('0x53')]?_0x5429da[_0xd7d1('0x4d')]:_0x7c054b['model'];_0x5429da[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x5429da[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x554832[_0xd7d1('0x49')],_0x7c054b[_0xd7d1('0xd4')]));if(_0x554832[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x5429da[_0xd7d1('0x48')]=_['merge'](_0x5429da[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x5429da['attributes'],function(_0x5ca68b){var _0x33a9cd={};_0x33a9cd[_0x5ca68b]={'$like':'%'+_0x554832[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x33a9cd;})});}_0x5429da=_['merge']({},_0x5429da,_0x554832[_0xd7d1('0xd6')]);return _0x58729c[_0xd7d1('0xf1')](_0x5429da);}})[_0xd7d1('0x18')](function(_0x46a796){if(_0x46a796){_0x3a41c3=_0x46a796[_0xd7d1('0x53')];if(!_0x554832[_0xd7d1('0x49')]['hasOwnProperty'](_0xd7d1('0xdf'))){_0x5429da['limit']=qs[_0xd7d1('0x28')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x5429da[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x554832[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x58729c['getSmsInteractions'](_0x5429da);}})[_0xd7d1('0x18')](function(_0x3784bf){if(_0x3784bf){return _0x3784bf?{'count':_0x3a41c3,'rows':_0x3784bf}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x5244ae,null))[_0xd7d1('0x23')](handleError(_0x5244ae,null));};exports[_0xd7d1('0xf2')]=function(_0x5dc786,_0x212e09){var _0x202397={};var _0x23a13c={};var _0x74592c;var _0x131dba;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x5dc786[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x212e09,null))[_0xd7d1('0x18')](function(_0x448b0d){if(_0x448b0d){_0x74592c=_0x448b0d;_0x23a13c[_0xd7d1('0x5c')]=_['keys'](db[_0xd7d1('0xf3')][_0xd7d1('0x45')]);_0x23a13c[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x5dc786['query']);_0x23a13c[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x23a13c[_0xd7d1('0x5c')],_0x23a13c[_0xd7d1('0x49')]);_0x202397[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x23a13c[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x202397[_0xd7d1('0x4d')]=_0x202397[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x202397[_0xd7d1('0x4d')]:_0x23a13c[_0xd7d1('0x5c')];_0x202397[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x5dc786[_0xd7d1('0x49')]['sort']);_0x202397[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x5dc786[_0xd7d1('0x49')],_0x23a13c['filters']));if(_0x5dc786['query'][_0xd7d1('0x39')]){_0x202397[_0xd7d1('0x48')]=_['merge'](_0x202397[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x202397[_0xd7d1('0x4d')],function(_0x1f53d5){var _0x5161fb={};_0x5161fb[_0x1f53d5]={'$like':'%'+_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x5161fb;})});}_0x202397=_[_0xd7d1('0x63')]({},_0x202397,_0x5dc786[_0xd7d1('0xd6')]);return _0x74592c[_0xd7d1('0xf2')](_0x202397);}})[_0xd7d1('0x18')](function(_0x3a1b22){if(_0x3a1b22){_0x131dba=_0x3a1b22['length'];if(!_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x202397[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x202397['offset']=qs['offset'](_0x5dc786[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x74592c['getFaxInteractions'](_0x202397);}})[_0xd7d1('0x18')](function(_0x4e8e0e){if(_0x4e8e0e){return _0x4e8e0e?{'count':_0x131dba,'rows':_0x4e8e0e}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x212e09,null))[_0xd7d1('0x23')](handleError(_0x212e09,null));};exports[_0xd7d1('0xf4')]=function(_0x372b7a,_0x22271c){var _0x4fe8bb={};var _0x323f86={};var _0x4b907c;var _0x268aa9;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x372b7a[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x22271c,null))[_0xd7d1('0x18')](function(_0x88da09){if(_0x88da09){_0x4b907c=_0x88da09;_0x323f86['model']=_[_0xd7d1('0x5e')](db[_0xd7d1('0xf5')][_0xd7d1('0x45')]);_0x323f86[_0xd7d1('0x49')]=_['keys'](_0x372b7a[_0xd7d1('0x49')]);_0x323f86[_0xd7d1('0xd4')]=_['intersection'](_0x323f86[_0xd7d1('0x5c')],_0x323f86[_0xd7d1('0x49')]);_0x4fe8bb[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x323f86[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x4fe8bb[_0xd7d1('0x4d')]=_0x4fe8bb[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x4fe8bb[_0xd7d1('0x4d')]:_0x323f86[_0xd7d1('0x5c')];_0x4fe8bb['order']=qs[_0xd7d1('0xe1')](_0x372b7a['query'][_0xd7d1('0xe1')]);_0x4fe8bb['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x372b7a[_0xd7d1('0x49')],_0x323f86['filters']));if(_0x372b7a['query'][_0xd7d1('0x39')]){_0x4fe8bb[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x4fe8bb[_0xd7d1('0x48')],{'$or':_['map'](_0x4fe8bb[_0xd7d1('0x4d')],function(_0x4f434b){var _0x5cac4a={};_0x5cac4a[_0x4f434b]={'$like':'%'+_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x5cac4a;})});}_0x4fe8bb=_[_0xd7d1('0x63')]({},_0x4fe8bb,_0x372b7a[_0xd7d1('0xd6')]);return _0x4b907c['getWhatsappInteractions'](_0x4fe8bb);}})[_0xd7d1('0x18')](function(_0x2c25fa){if(_0x2c25fa){_0x268aa9=_0x2c25fa[_0xd7d1('0x53')];if(!_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x4fe8bb['limit']=qs[_0xd7d1('0x28')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x4fe8bb['offset']=qs[_0xd7d1('0x27')](_0x372b7a[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x4b907c[_0xd7d1('0xf4')](_0x4fe8bb);}})['then'](function(_0x404bc0){if(_0x404bc0){return _0x404bc0?{'count':_0x268aa9,'rows':_0x404bc0}:null;}})['then'](respondWithResult(_0x22271c,null))['catch'](handleError(_0x22271c,null));};exports['login']=function(_0x2001b7,_0x5ed7e4,_0x402f96){var _0x17383d;var _0x1491a3;var _0x8c8036;var _0x33c8d5=!_['isNil'](_0x2001b7[_0xd7d1('0x5b')]['id'])?_0x2001b7[_0xd7d1('0x5b')]['id']:!_[_0xd7d1('0x70')](_0x2001b7[_0xd7d1('0x35')]['id'])?_0x2001b7[_0xd7d1('0x35')]['id']:null;return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x33c8d5,'role':{'$or':[_0xd7d1('0x33'),_0xd7d1('0x35'),_0xd7d1('0x30')]}},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0xf6'),_0xd7d1('0xf7'),'role',_0xd7d1('0x6c'),_0xd7d1('0xf8')]})[_0xd7d1('0x18')](function(_0xc9c987){if(_0xc9c987){if(_0xc9c987[_0xd7d1('0x2f')]===_0xd7d1('0x30')){_0x17383d=_0xc9c987;if(_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xa6')]){_0x8c8036=util[_0xd7d1('0xb3')]('LOCAL/%s@from-sip/n',_0x17383d[_0x2001b7['body']['interface']]);}else if(_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xf9')]){_0x8c8036=util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x2001b7[_0xd7d1('0x67')][_0xd7d1('0xf9')]);}else{_0x8c8036=util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x17383d[_0xd7d1('0x3e')]);}socket['to'](util[_0xd7d1('0xb3')]('user:%s',_0x17383d[_0xd7d1('0x3e')]))[_0xd7d1('0x31')](_0xd7d1('0xfa'),{'user':{'id':_0x17383d['id'],'name':_0x17383d[_0xd7d1('0x3e')]},'ip':_0x2001b7['headers']['x-forwarded-for']||_0x2001b7['connection']['remoteAddress']||_0x2001b7[_0xd7d1('0xfb')][_0xd7d1('0xfc')]||_0x2001b7[_0xd7d1('0xfd')][_0xd7d1('0xfb')]['remoteAddress']});return db[_0xd7d1('0xb6')][_0xd7d1('0x40')]({'where':{'membername':_0x17383d[_0xd7d1('0x3e')]},'individualHooks':!![]});}}else{throw new db[(_0xd7d1('0x97'))]['ValidationError'](_0xd7d1('0xfe'));}})[_0xd7d1('0x18')](function(){if(_0x17383d){return _0x17383d[_0xd7d1('0xff')]({'raw':!![]});}})[_0xd7d1('0x18')](function(_0x2f3d7){if(_0x17383d){if(_0x2f3d7){_0x1491a3=_0x2f3d7;if(_0x1491a3[_0xd7d1('0x53')]){var _0x4a4502=_0x1491a3[_0xd7d1('0x3b')](function(_0x4b23eb){var _0x535ae8={'membername':_0x17383d[_0xd7d1('0x3e')],'UserId':_0x17383d['id'],'queue_name':_0x4b23eb[_0xd7d1('0x3e')],'VoiceQueueId':_0x4b23eb['id'],'interface':_0x8c8036,'paused':_0x17383d[_0xd7d1('0xf8')]||![],'penalty':_0x4b23eb[_0xd7d1('0x100')]||0x0};return db[_0xd7d1('0xb6')][_0xd7d1('0xb7')](_0x535ae8);});return Promise[_0xd7d1('0x59')](_0x4a4502);}}}})[_0xd7d1('0x18')](function(){if(_0x17383d){return db[_0xd7d1('0x101')][_0xd7d1('0x4f')]({'where':{'membername':_0x17383d[_0xd7d1('0x3e')],'exitAt':null}});}})['then'](function(_0x200006){if(_0x17383d){var _0x493d0d=[];_0x200006[_0xd7d1('0x102')](function(_0x110b8a){_0x493d0d[_0xd7d1('0x4e')](_0x110b8a[_0xd7d1('0x2e')]({'exitAt':moment()[_0xd7d1('0xb3')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0xd7d1('0x59')](_0x493d0d);}})[_0xd7d1('0x18')](function(){if(_0x17383d){var _0x10f691=[];var _0x160541=[];var _0x3a0cc9=utils[_0xd7d1('0x103')]();var _0x17c431={'membername':_0x17383d['name'],'interface':_0x8c8036,'enterAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104')),'role':_0x17383d[_0xd7d1('0x2f')],'internal':_0x17383d[_0xd7d1('0x6c')]};_0x3a0cc9[_0xd7d1('0x102')](function(_0x56d41c){_0x10f691['push'](_[_0xd7d1('0x63')]({'channel':_0x56d41c,'type':'LOGIN','data1':_0x2001b7['body'][_0xd7d1('0x105')],'data2':_0x8c8036},_0x17c431));if(_0x17383d[_0xd7d1('0xf8')]){_0x160541[_0xd7d1('0x4e')](_['merge']({'channel':_0x56d41c,'type':_0xd7d1('0x106'),'data1':_0xd7d1('0x107')},_0x17c431));}});return db[_0xd7d1('0x101')][_0xd7d1('0x108')](_0x10f691[_0xd7d1('0x109')](_0x160541),{'individualHooks':!![]});}})[_0xd7d1('0x18')](function(){if(_0x17383d){return _0x17383d[_0xd7d1('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104')),'voicePause':_0x17383d[_0xd7d1('0xf8')]||![],'mailPause':_0x17383d[_0xd7d1('0xf8')]||![],'chatPause':_0x17383d[_0xd7d1('0xf8')]||![],'faxPause':_0x17383d['loginInPause']||![],'smsPause':_0x17383d[_0xd7d1('0xf8')]||![],'openchannelPause':_0x17383d[_0xd7d1('0xf8')]||![],'whatsappPause':_0x17383d[_0xd7d1('0xf8')]||![],'pauseType':_0x17383d[_0xd7d1('0xf8')]?'LOGININPAUSE':null,'interface':_0x8c8036,'lastPauseAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'))});}})[_0xd7d1('0x18')](function(_0x56375b){if(_0x2001b7[_0xd7d1('0x10a')]){return _0x402f96();}else{return Promise['resolve'](_0x56375b)[_0xd7d1('0x18')](respondWithResult(_0x5ed7e4,null));}})[_0xd7d1('0x23')](handleError(_0x5ed7e4,null));};exports['logout']=function(_0xd697fd,_0x59144b){var _0x47ab29;return db['User'][_0xd7d1('0x64')]({'where':{'id':_0xd697fd[_0xd7d1('0x5b')]['id'],'role':_0xd7d1('0x30')},'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x2f')]})[_0xd7d1('0x18')](handleEntityNotFound(_0x59144b,null))[_0xd7d1('0x18')](function(_0x57f85b){if(_0x57f85b){_0x47ab29=_0x57f85b;return db['UserVoiceQueueRt'][_0xd7d1('0x40')]({'where':{'membername':_0x47ab29[_0xd7d1('0x3e')]},'individualHooks':!![]});}})['then'](function(){return db['MemberReport'][_0xd7d1('0x4f')]({'where':{'membername':_0x47ab29[_0xd7d1('0x3e')],'exitAt':null}});})[_0xd7d1('0x18')](function(_0xa0755f){var _0x3c2b38=[];_0xa0755f[_0xd7d1('0x102')](function(_0x277179){_0x3c2b38[_0xd7d1('0x4e')](_0x277179[_0xd7d1('0x2e')]({'exitAt':moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'))}));});return Promise['all'](_0x3c2b38);})['then'](function(){return _0x47ab29[_0xd7d1('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd7d1('0x18')](respondWithResult(_0x59144b,null))['catch'](handleError(_0x59144b,null));};exports[_0xd7d1('0x10b')]=function(_0x30516f,_0x5a9417){var _0x45e487;return db[_0xd7d1('0xb6')][_0xd7d1('0x2e')]({'paused':0x1},{'where':{'UserId':_0x30516f[_0xd7d1('0x5b')]['id']},'individualHooks':!![]})['then'](function(){return db['User']['find']({'where':{'id':_0x30516f[_0xd7d1('0x5b')]['id'],'role':_0xd7d1('0x30')},'attributes':['id',_0xd7d1('0x3e'),'role','internal',_0xd7d1('0xa6'),_0xd7d1('0xa5')]});})['then'](handleEntityNotFound(_0x5a9417,null))[_0xd7d1('0x18')](function(_0x40eaaf){if(_0x40eaaf){_0x45e487=_0x40eaaf;return respondWithRpcPromise(_0xd7d1('0x10c'),_0xd7d1('0x10b'),{'id':_0x45e487['id'],'name':_0x45e487[_0xd7d1('0x3e')],'pause':!![]});}})[_0xd7d1('0x18')](function(){if(_0x45e487){return db[_0xd7d1('0x101')]['findAll']({'where':{'membername':_0x45e487['name'],'type':_0xd7d1('0x106'),'exitAt':null}});}})[_0xd7d1('0x18')](function(_0x52b255){if(_0x52b255[_0xd7d1('0x53')]){var _0x4a41ff=moment()[_0xd7d1('0xb3')](_0xd7d1('0x104'));for(var _0x449dec=0x0,_0x39575d=_0x52b255[_0xd7d1('0x53')];_0x449dec<_0x39575d;_0x449dec++){_0x52b255[_0x449dec]['updateAttributes']({'exitAt':_0x4a41ff});}}})[_0xd7d1('0x18')](function(){var _0x54b3e4=[];var _0x17cee8=utils['getChannels']();_0x17cee8[_0xd7d1('0x102')](function(_0x361f4b){_0x54b3e4['push']({'channel':_0x361f4b,'membername':_0x45e487['name'],'interface':_[_0xd7d1('0x70')](_0x45e487[_0xd7d1('0xa6')])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x45e487['name']):_0x45e487[_0xd7d1('0xa6')],'type':_0xd7d1('0x106'),'enterAt':moment()['format'](_0xd7d1('0x104')),'data1':_0x30516f[_0xd7d1('0x67')]['type']||_0xd7d1('0x10d'),'role':_0x45e487['role'],'internal':_0x45e487[_0xd7d1('0x6c')]});});return db[_0xd7d1('0x101')][_0xd7d1('0x108')](_0x54b3e4,{'individualHooks':!![]});})['then'](function(){return _0x45e487[_0xd7d1('0x2e')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x30516f[_0xd7d1('0x67')][_0xd7d1('0x10e')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xd7d1('0x104'))});})[_0xd7d1('0x18')](respondWithResult(_0x5a9417,null))[_0xd7d1('0x23')](handleError(_0x5a9417,null));};exports['unpause']=function(_0x420d1b,_0x535e92){if(_0x420d1b[_0xd7d1('0x67')][_0xd7d1('0xa4')]&&!utils[_0xd7d1('0xa7')](_0x420d1b[_0xd7d1('0x67')]['channel'])){throw new APIBadRequestError(util[_0xd7d1('0xb3')](_0xd7d1('0x10f'),_0x420d1b[_0xd7d1('0x67')][_0xd7d1('0xa4')]));}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x420d1b[_0xd7d1('0x5b')]['id']},'attributes':['id','name',_0xd7d1('0x2f'),_0xd7d1('0x6c'),_0xd7d1('0xa6'),_0xd7d1('0xa5'),_0xd7d1('0xb5'),_0xd7d1('0x110'),'chatPause',_0xd7d1('0x111'),'openchannelPause',_0xd7d1('0x112'),'whatsappPause',_0xd7d1('0x113'),_0xd7d1('0x114')]})[_0xd7d1('0x18')](function(_0x56643c){if(!_0x56643c){throw new APINotFoundError(util[_0xd7d1('0xb3')](_0xd7d1('0x115'),_0x420d1b[_0xd7d1('0x5b')]['id']));}return _0x56643c[_0xd7d1('0x116')](_0x420d1b[_0xd7d1('0x67')]['channel']);})[_0xd7d1('0x18')](respondWithResult(_0x535e92,null))[_0xd7d1('0x23')](APIHandleError(_0x535e92));};exports[_0xd7d1('0x117')]=function(_0x370ad9,_0x4a8980){var _0x335e00={};var _0x5cf67e={};var _0x5206e7;var _0x32d1f5;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x370ad9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4a8980,null))[_0xd7d1('0x18')](function(_0x1c8c4e){if(_0x1c8c4e){_0x5206e7=_0x1c8c4e;_0x5cf67e['model']=_[_0xd7d1('0x5e')](db['Team'][_0xd7d1('0x45')]);_0x5cf67e['query']=_[_0xd7d1('0x5e')](_0x370ad9[_0xd7d1('0x49')]);_0x5cf67e[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x5cf67e[_0xd7d1('0x5c')],_0x5cf67e['query']);_0x335e00[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x5cf67e[_0xd7d1('0x5c')],qs['fields'](_0x370ad9['query'][_0xd7d1('0x61')]));_0x335e00[_0xd7d1('0x4d')]=_0x335e00[_0xd7d1('0x4d')]['length']?_0x335e00[_0xd7d1('0x4d')]:_0x5cf67e['model'];_0x335e00[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x370ad9['query'][_0xd7d1('0xe1')]);_0x335e00[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x370ad9[_0xd7d1('0x49')],_0x5cf67e[_0xd7d1('0xd4')]));if(_0x370ad9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x335e00['where']=_['merge'](_0x335e00[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x335e00['attributes'],function(_0x4f48a9){var _0x140f65={};_0x140f65[_0x4f48a9]={'$like':'%'+_0x370ad9['query'][_0xd7d1('0x39')]+'%'};return _0x140f65;})});}_0x335e00=_['merge']({},_0x335e00,_0x370ad9[_0xd7d1('0xd6')]);return _0x5206e7[_0xd7d1('0x117')](_0x335e00);}})['then'](function(_0x5e5185){if(_0x5e5185){_0x32d1f5=_0x5e5185[_0xd7d1('0x53')];if(!_0x370ad9['query'][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x335e00[_0xd7d1('0x28')]=qs['limit'](_0x370ad9[_0xd7d1('0x49')]['limit']);_0x335e00[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x370ad9['query']['offset']);}return _0x5206e7['getTeams'](_0x335e00);}})[_0xd7d1('0x18')](function(_0x4be52f){if(_0x4be52f){return _0x4be52f?{'count':_0x32d1f5,'rows':_0x4be52f}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x4a8980,null))[_0xd7d1('0x23')](handleError(_0x4a8980,null));};exports[_0xd7d1('0x118')]=function(_0x2dca05,_0x47963c){var _0x776553=_0x2dca05[_0xd7d1('0x5b')]['id'];var _0x15a678=_0x2dca05['body']?_0x2dca05[_0xd7d1('0x67')][_0xd7d1('0x6a')]:null;var _0x22d9b4=[];return Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x15a678)throw new APIBadRequestError(_0xd7d1('0x11a'));})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x776553}});})[_0xd7d1('0x18')](function(_0x426cd0){if(!_0x426cd0)throw new APINotFoundError(util[_0xd7d1('0xb3')]('User\x20with\x20id\x20%s\x20not\x20found',_0x2dca05[_0xd7d1('0x5b')]['id']));return db['sequelize'][_0xd7d1('0x11b')](function(_0x53225c){return _0x426cd0[_0xd7d1('0x118')](_0x15a678,{'transaction':_0x53225c})[_0xd7d1('0x18')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x15a678}}});})[_0xd7d1('0x18')](function(_0xd3d87a){var _0x12ab11=_[_0xd7d1('0x3b')](_0xd3d87a,function(_0x1290f9){return _0x1290f9[_0xd7d1('0x11c')]();});return Promise[_0xd7d1('0x59')](_0x12ab11);})['then'](function(_0x242c64){_0x22d9b4=_['flattenDeep'](_0x242c64);var _0x4e5951=_[_0xd7d1('0x3b')](_0x22d9b4,function(_0x1716ec){return _0x1716ec[_0xd7d1('0x11d')](_0x426cd0['id'],{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x4e5951);})[_0xd7d1('0x18')](function(){if(!_0x426cd0['online'])return;var _0x4cf111=_[_0xd7d1('0x39')](_0x22d9b4,function(_0x44225b){return _0x44225b[_0xd7d1('0x11e')](_0xd7d1('0xa4'))==='Voice';});var _0x171133=_['map'](_0x4cf111,function(_0x4f9a4a){return db[_0xd7d1('0xb6')]['upsert']({'membername':_0x426cd0[_0xd7d1('0x3e')],'UserId':_0x426cd0['id'],'queue_name':_0x4f9a4a[_0xd7d1('0x3e')],'VoiceQueueId':_0x4f9a4a['id'],'interface':_[_0xd7d1('0x70')](_0x426cd0['interface'])?util[_0xd7d1('0xb3')](_0xd7d1('0xb4'),_0x426cd0[_0xd7d1('0x3e')]):_0x426cd0[_0xd7d1('0xa6')],'paused':_0x426cd0[_0xd7d1('0xb5')]||![],'penalty':_0x426cd0['penalty']},{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x171133);})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x11f')][_0xd7d1('0x4f')]({'where':{'teamId':{'$in':_0x15a678}}});})[_0xd7d1('0x18')](function(_0x266220){var _0x597b5b=_[_0xd7d1('0x3b')](_0x266220,function(_0x55d32f){return db['UserVoicePrefix']['create']({'UserId':_0x426cd0['id'],'VoicePrefixId':_0x55d32f[_0xd7d1('0x120')]},{'transaction':_0x53225c});});return Promise[_0xd7d1('0x59')](_0x597b5b);});});})[_0xd7d1('0x18')](function(){for(var _0x55a509=0x0;_0x55a509<_0x22d9b4[_0xd7d1('0x53')];_0x55a509++){var _0xb128b=_0x22d9b4[_0x55a509][_0xd7d1('0x11e')](_0xd7d1('0xa4'));var _0x866053=_0xb128b+_0xd7d1('0xaf');socket[_0xd7d1('0x31')](_0xd7d1('0x35')+_0xb128b+_0xd7d1('0xb0'),{'UserId':_0x776553,['queueField']:_0x22d9b4[_0x55a509]['id']});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x47963c,null))[_0xd7d1('0x23')](APIHandleError(_0x47963c));};exports[_0xd7d1('0x121')]=function(_0x4fbe89,_0x89c391){var _0x51925f=_0x4fbe89['params']['id'];var _0x4af7fe=null;if(_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]){_0x4af7fe=_[_0xd7d1('0xba')](_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')])?_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]:[_0x4fbe89[_0xd7d1('0x49')][_0xd7d1('0x6a')]];}var _0x59b099=[];return Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x4af7fe)throw new APIBadRequestError(_0xd7d1('0x122'));})['then'](function(){return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x51925f}});})['then'](function(_0x455a33){if(!_0x455a33)throw new APINotFoundError(util['format'](_0xd7d1('0x115'),_0x4fbe89[_0xd7d1('0x5b')]['id']));return db[_0xd7d1('0x72')][_0xd7d1('0x11b')](function(_0x5cd99c){return _0x455a33[_0xd7d1('0x121')](_0x4af7fe,{'transaction':_0x5cd99c})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x123')]['findAll']({'where':{'id':{'$in':_0x4af7fe}}});})[_0xd7d1('0x18')](function(_0x207bbf){var _0x49850d=_[_0xd7d1('0x3b')](_0x207bbf,function(_0x4e1168){return _0x4e1168['getAssociatedQueues']();});return Promise[_0xd7d1('0x59')](_0x49850d);})['then'](function(_0x3918ad){_0x59b099=_[_0xd7d1('0x124')](_0x3918ad);var _0x48032e=_[_0xd7d1('0x3b')](_0x59b099,function(_0x34c9f6){return _0x34c9f6[_0xd7d1('0x125')](_0x455a33['id'],{'transaction':_0x5cd99c});});return Promise['all'](_0x48032e);})[_0xd7d1('0x18')](function(){if(!_0x455a33[_0xd7d1('0xa5')])return;var _0xaa952a=_['filter'](_0x59b099,function(_0x3eafdd){return _0x3eafdd[_0xd7d1('0x11e')](_0xd7d1('0xa4'))==='Voice';});var _0x1007b3=_['map'](_0xaa952a,function(_0x4cd442){return db[_0xd7d1('0xb6')][_0xd7d1('0x40')]({'where':{'VoiceQueueId':_0x4cd442['id'],'UserId':_0x455a33['id']},'transaction':_0x5cd99c});});return Promise['all'](_0x1007b3);})[_0xd7d1('0x18')](function(){return db[_0xd7d1('0x11f')][_0xd7d1('0x4f')]({'where':{'teamId':{'$in':_0x4af7fe}}});})[_0xd7d1('0x18')](function(_0x3900f0){var _0x317396=_['map'](_0x3900f0,function(_0x742b37){return db[_0xd7d1('0x126')][_0xd7d1('0x40')]({'where':{'UserId':_0x455a33['id'],'VoicePrefixId':_0x742b37[_0xd7d1('0x120')]}},{'transaction':_0x5cd99c});});return Promise[_0xd7d1('0x59')](_0x317396);});});})[_0xd7d1('0x18')](function(){for(var _0x2ee220=0x0;_0x2ee220<_0x59b099[_0xd7d1('0x53')];_0x2ee220++){var _0x8a52b=_0x59b099[_0x2ee220][_0xd7d1('0x11e')]('channel');var _0xbbecea=_0x8a52b+_0xd7d1('0xaf');socket[_0xd7d1('0x31')]('user'+_0x8a52b+_0xd7d1('0xbb'),{'UserId':_0x51925f,['queueField']:_0x59b099[_0x2ee220]['id']});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x89c391,null))[_0xd7d1('0x23')](APIHandleError(_0x89c391));};exports[_0xd7d1('0x127')]=function(_0x154e0c,_0x301e02){var _0x35a05b={};var _0x4e5ca3={};var _0x4050e0;var _0x87e9ab;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x154e0c[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x301e02,null))[_0xd7d1('0x18')](function(_0x4bfb25){if(_0x4bfb25){_0x4050e0=_0x4bfb25;_0x4e5ca3[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0xd8')][_0xd7d1('0x45')]);_0x4e5ca3[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x154e0c[_0xd7d1('0x49')]);_0x4e5ca3[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x4e5ca3[_0xd7d1('0x5c')],_0x4e5ca3[_0xd7d1('0x49')]);_0x35a05b[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x4e5ca3[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x154e0c[_0xd7d1('0x49')]['fields']));_0x35a05b[_0xd7d1('0x4d')]=_0x35a05b[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x35a05b[_0xd7d1('0x4d')]:_0x4e5ca3[_0xd7d1('0x5c')];_0x35a05b[_0xd7d1('0xd5')]=qs['sort'](_0x154e0c['query'][_0xd7d1('0xe1')]);_0x35a05b[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x154e0c['query'],_0x4e5ca3[_0xd7d1('0xd4')]));if(_0x154e0c['query'][_0xd7d1('0x39')]){_0x35a05b[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x35a05b['where'],{'$or':_['map'](_0x35a05b[_0xd7d1('0x4d')],function(_0x59b143){var _0x3920c9={};_0x3920c9[_0x59b143]={'$like':'%'+_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x3920c9;})});}_0x35a05b=_[_0xd7d1('0x63')]({},_0x35a05b,_0x154e0c[_0xd7d1('0xd6')]);return _0x4050e0[_0xd7d1('0x127')](_0x35a05b);}})['then'](function(_0x3095ec){if(_0x3095ec){_0x87e9ab=_0x3095ec[_0xd7d1('0x53')];if(!_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0xde')]('nolimit')){_0x35a05b[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x154e0c['query'][_0xd7d1('0x28')]);_0x35a05b['offset']=qs['offset'](_0x154e0c[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x4050e0['getLists'](_0x35a05b);}})['then'](function(_0x15e19b){if(_0x15e19b){return _0x15e19b?{'count':_0x87e9ab,'rows':_0x15e19b}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x301e02,null))[_0xd7d1('0x23')](handleError(_0x301e02,null));};exports[_0xd7d1('0x128')]=function(_0x2e42b8,_0x36f3b7){var _0x129a65={};var _0x1f773b={};var _0x5ddf7b;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x2e42b8[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x36f3b7,null))['then'](function(_0x28ae15){if(_0x28ae15){_0x5ddf7b=_0x28ae15;_0x1f773b[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x44')][_0xd7d1('0x45')]);_0x1f773b[_0xd7d1('0x49')]=_['keys'](_0x2e42b8['query']);_0x1f773b[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x1f773b[_0xd7d1('0x5c')],_0x1f773b[_0xd7d1('0x49')]);_0x129a65[_0xd7d1('0x4d')]=_['intersection'](_0x1f773b['model'],qs['fields'](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x129a65[_0xd7d1('0x4d')]=_0x129a65[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x129a65['attributes']:_0x1f773b[_0xd7d1('0x5c')];_0x129a65[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x129a65[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x2e42b8[_0xd7d1('0x49')],_0x1f773b['filters']));if(_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x129a65[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x129a65[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x129a65[_0xd7d1('0x4d')],function(_0x4d048a){var _0xadafd8={};_0xadafd8[_0x4d048a]={'$like':'%'+_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0xadafd8;})});}_0x129a65[_0xd7d1('0x5c')]=db[_0xd7d1('0x44')];_0x129a65['as']=_0xd7d1('0x36');_0x129a65=_[_0xd7d1('0x63')]({},_0x129a65,_0x2e42b8['options']);return _0x5ddf7b['getVoiceQueues']({'include':[_0x129a65]});}})[_0xd7d1('0x18')](function(_0x5291fd){if(_0x5291fd){var _0x54d1a3={},_0x4a8361=[];for(var _0x5bb8fc=0x0;_0x5bb8fc<_0x5291fd[_0xd7d1('0x53')];_0x5bb8fc+=0x1){for(var _0x4cf174=0x0,_0x8fdfba;_0x4cf174<_0x5291fd[_0x5bb8fc][_0xd7d1('0x36')][_0xd7d1('0x53')];_0x4cf174+=0x1){_0x8fdfba=_0x5291fd[_0x5bb8fc][_0xd7d1('0x36')][_0x4cf174][_0xd7d1('0xb2')]({'plain':!![]});_0x54d1a3[_0x8fdfba['id']]=_0x8fdfba;}}_0x54d1a3=_[_0xd7d1('0x129')](_0x54d1a3);for(var _0x5ee30a=qs[_0xd7d1('0x27')](_0x2e42b8[_0xd7d1('0x49')][_0xd7d1('0x27')]);_0x5ee30a<_0x54d1a3[_0xd7d1('0x53')]&&_0x4a8361[_0xd7d1('0x53')]<qs[_0xd7d1('0x28')](_0x2e42b8[_0xd7d1('0x49')]['limit']);_0x5ee30a+=0x1){if(_0x54d1a3[_0x5ee30a]){_0x4a8361['push'](_0x54d1a3[_0x5ee30a]);}}return{'count':_0x54d1a3[_0xd7d1('0x53')],'rows':_0x4a8361};}})[_0xd7d1('0x18')](respondWithResult(_0x36f3b7,null))[_0xd7d1('0x23')](handleError(_0x36f3b7,null));};exports[_0xd7d1('0x40')]=function(_0x33a097,_0x5adc66){if(_0x33a097[_0xd7d1('0x35')]['id']==_0x33a097[_0xd7d1('0x5b')]['id']){return _0x5adc66['status'](0x1f4)['send']({'message':_0xd7d1('0x12a')});}return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x33a097['params']['id']}})['then'](handleEntityNotFound(_0x5adc66,null))[_0xd7d1('0x18')](removeEntity(_0x5adc66,null))['catch'](handleError(_0x5adc66,null));};exports[_0xd7d1('0x12b')]=function(_0x35a5da,_0x4e0d04){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x35a5da[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4e0d04,null))[_0xd7d1('0x18')](function(_0x5659ae){if(_0x5659ae){return _0x5659ae[_0xd7d1('0x12b')](_0x35a5da[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x35a5da[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})[_0xd7d1('0xad')](function(){for(var _0x15e994=0x0;_0x15e994<_0x35a5da[_0xd7d1('0x67')][_0xd7d1('0x6a')]['length'];_0x15e994+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x12c'),{'ChatInteractionId':Number(_0x35a5da[_0xd7d1('0x67')]['ids'][_0x15e994]),'UserId':Number(_0x35a5da[_0xd7d1('0x5b')]['id'])});}return _0x35a5da[_0xd7d1('0x67')]['ids'];});}})[_0xd7d1('0x18')](respondWithResult(_0x4e0d04,null))[_0xd7d1('0x23')](handleError(_0x4e0d04,null));};exports[_0xd7d1('0x12d')]=function(_0x163bad,_0x219350){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x163bad[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x219350,null))[_0xd7d1('0x18')](function(_0x1570d3){if(_0x1570d3){return _0x1570d3[_0xd7d1('0x12d')](_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x163bad[_0xd7d1('0x49')]['ids'])){for(var _0x5d3bce=0x0;_0x5d3bce<_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x5d3bce+=0x1){socket['emit'](_0xd7d1('0x12e'),{'ChatInteractionId':Number(_0x163bad['query'][_0xd7d1('0x6a')][_0x5d3bce]),'UserId':Number(_0x163bad[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x12e'),{'ChatInteractionId':Number(_0x163bad[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x163bad[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x219350,null))[_0xd7d1('0x23')](handleError(_0x219350,null));};exports[_0xd7d1('0x12f')]=function(_0xec5f23,_0x34f01e){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0xec5f23[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x34f01e,null))[_0xd7d1('0x18')](function(_0xa1e771){if(_0xa1e771){return _0xa1e771[_0xd7d1('0x12f')](_0xec5f23[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0xec5f23[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})['spread'](function(){for(var _0x106fba=0x0;_0x106fba<_0xec5f23[_0xd7d1('0x67')]['ids']['length'];_0x106fba+=0x1){socket['emit'](_0xd7d1('0x130'),{'MailInteractionId':Number(_0xec5f23[_0xd7d1('0x67')]['ids'][_0x106fba]),'UserId':Number(_0xec5f23['params']['id'])});}return _0xec5f23[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0x34f01e,null))[_0xd7d1('0x23')](handleError(_0x34f01e,null));};exports['removeMailInteractions']=function(_0x1c45ec,_0x3d56e1){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x1c45ec['params']['id']}})['then'](handleEntityNotFound(_0x3d56e1,null))[_0xd7d1('0x18')](function(_0x554bee){if(_0x554bee){return _0x554bee[_0xd7d1('0x131')](_0x1c45ec[_0xd7d1('0x49')]['ids'])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x1c45ec['query'][_0xd7d1('0x6a')])){for(var _0x248d20=0x0;_0x248d20<_0x1c45ec['query'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x248d20+=0x1){socket[_0xd7d1('0x31')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1c45ec[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0x248d20]),'UserId':Number(_0x1c45ec[_0xd7d1('0x5b')]['id'])});}}else{socket['emit'](_0xd7d1('0x132'),{'MailInteractionId':Number(_0x1c45ec[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x1c45ec['params']['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x3d56e1,null))[_0xd7d1('0x23')](handleError(_0x3d56e1,null));};exports[_0xd7d1('0x133')]=function(_0x1fac74,_0x517a9a){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x1fac74[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x517a9a,null))[_0xd7d1('0x18')](function(_0x3f2c07){if(_0x3f2c07){return _0x3f2c07[_0xd7d1('0x133')](_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')],_['omit'](_0x1fac74[_0xd7d1('0x67')],['ids','id'])||{})['spread'](function(){for(var _0x52789a=0x0;_0x52789a<_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x52789a+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x134'),{'FaxInteractionId':Number(_0x1fac74[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x52789a]),'UserId':Number(_0x1fac74[_0xd7d1('0x5b')]['id'])});}return _0x1fac74['body']['ids'];});}})[_0xd7d1('0x18')](respondWithResult(_0x517a9a,null))[_0xd7d1('0x23')](handleError(_0x517a9a,null));};exports[_0xd7d1('0x135')]=function(_0x57c776,_0xa56010){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x57c776[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0xa56010,null))[_0xd7d1('0x18')](function(_0x3297e3){if(_0x3297e3){return _0x3297e3[_0xd7d1('0x135')](_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x57c776['query']['ids'])){for(var _0x35f115=0x0;_0x35f115<_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x35f115+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x136'),{'FaxInteractionId':Number(_0x57c776[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0x35f115]),'UserId':Number(_0x57c776[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x136'),{'FaxInteractionId':Number(_0x57c776['query'][_0xd7d1('0x6a')]),'UserId':Number(_0x57c776['params']['id'])});}});}})['then'](respondWithStatusCode(_0xa56010,null))['catch'](handleError(_0xa56010,null));};exports[_0xd7d1('0x137')]=function(_0x4f965f,_0xec4a3f){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x4f965f[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0xec4a3f,null))['then'](function(_0x12cf94){if(_0x12cf94){return _0x12cf94['addSmsInteractions'](_0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x4f965f[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})['spread'](function(){for(var _0x159395=0x0;_0x159395<_0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')]['length'];_0x159395+=0x1){socket[_0xd7d1('0x31')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x4f965f[_0xd7d1('0x67')]['ids'][_0x159395]),'UserId':Number(_0x4f965f[_0xd7d1('0x5b')]['id'])});}return _0x4f965f[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0xec4a3f,null))[_0xd7d1('0x23')](handleError(_0xec4a3f,null));};exports['removeSmsInteractions']=function(_0x488e3b,_0x2c8cf0){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x488e3b[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2c8cf0,null))[_0xd7d1('0x18')](function(_0x240366){if(_0x240366){return _0x240366[_0xd7d1('0x138')](_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_[_0xd7d1('0xba')](_0x488e3b[_0xd7d1('0x49')]['ids'])){for(var _0xb94908=0x0;_0xb94908<_0x488e3b[_0xd7d1('0x49')]['ids'][_0xd7d1('0x53')];_0xb94908+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x139'),{'SmsInteractionId':Number(_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')][_0xb94908]),'UserId':Number(_0x488e3b[_0xd7d1('0x5b')]['id'])});}}else{socket[_0xd7d1('0x31')](_0xd7d1('0x139'),{'SmsInteractionId':Number(_0x488e3b[_0xd7d1('0x49')][_0xd7d1('0x6a')]),'UserId':Number(_0x488e3b[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x2c8cf0,null))[_0xd7d1('0x23')](handleError(_0x2c8cf0,null));};exports[_0xd7d1('0x13a')]=function(_0x5e2bcf,_0x2e5c00){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x5e2bcf[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2e5c00,null))[_0xd7d1('0x18')](function(_0xf3c7d8){if(_0xf3c7d8){return _0xf3c7d8['addOpenchannelInteractions'](_0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x5e2bcf[_0xd7d1('0x67')],['ids','id'])||{})['spread'](function(){for(var _0x27f7b4=0x0;_0x27f7b4<_0x5e2bcf['body'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x27f7b4+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13b'),{'OpenchannelInteractionId':Number(_0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x27f7b4]),'UserId':Number(_0x5e2bcf[_0xd7d1('0x5b')]['id'])});}return _0x5e2bcf[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})[_0xd7d1('0x18')](respondWithResult(_0x2e5c00,null))[_0xd7d1('0x23')](handleError(_0x2e5c00,null));};exports[_0xd7d1('0x13c')]=function(_0x1352fa,_0x4cb12d){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x1352fa['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x4cb12d,null))[_0xd7d1('0x18')](function(_0x2ffe37){if(_0x2ffe37){return _0x2ffe37[_0xd7d1('0x13c')](_0x1352fa[_0xd7d1('0x49')][_0xd7d1('0x6a')])[_0xd7d1('0x18')](function(){if(_['isArray'](_0x1352fa[_0xd7d1('0x49')][_0xd7d1('0x6a')])){for(var _0x23ceb0=0x0;_0x23ceb0<_0x1352fa['query'][_0xd7d1('0x6a')][_0xd7d1('0x53')];_0x23ceb0+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13d'),{'OpenchannelInteractionId':Number(_0x1352fa['query']['ids'][_0x23ceb0]),'UserId':Number(_0x1352fa['params']['id'])});}}else{socket[_0xd7d1('0x31')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x1352fa[_0xd7d1('0x49')]['ids']),'UserId':Number(_0x1352fa[_0xd7d1('0x5b')]['id'])});}});}})[_0xd7d1('0x18')](respondWithStatusCode(_0x4cb12d,null))[_0xd7d1('0x23')](handleError(_0x4cb12d,null));};exports[_0xd7d1('0x13e')]=function(_0x2de34a,_0xf38f3d){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x2de34a['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0xf38f3d,null))[_0xd7d1('0x18')](function(_0x505f52){if(_0x505f52){return _0x505f52['addWhatsappInteractions'](_0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x2de34a[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{})[_0xd7d1('0xad')](function(){for(var _0x146b72=0x0;_0x146b72<_0x2de34a[_0xd7d1('0x67')]['ids'][_0xd7d1('0x53')];_0x146b72+=0x1){socket[_0xd7d1('0x31')](_0xd7d1('0x13f'),{'WhatsappInteractionId':Number(_0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')][_0x146b72]),'UserId':Number(_0x2de34a[_0xd7d1('0x5b')]['id'])});}return _0x2de34a[_0xd7d1('0x67')][_0xd7d1('0x6a')];});}})['then'](respondWithResult(_0xf38f3d,null))[_0xd7d1('0x23')](handleError(_0xf38f3d,null));};exports[_0xd7d1('0x140')]=function(_0x492992,_0x5a7457){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x492992[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5a7457,null))[_0xd7d1('0x18')](function(_0x282807){if(_0x282807){return _0x282807[_0xd7d1('0x140')](_0x492992[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x5a7457,null))['catch'](handleError(_0x5a7457,null));};exports[_0xd7d1('0x141')]=function(_0x27ed0f,_0x174ebc){var _0x11c344={};var _0x1c32c2={};var _0x37c05c;var _0x328062;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x27ed0f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x174ebc,null))[_0xd7d1('0x18')](function(_0x5ef25c){if(_0x5ef25c){_0x37c05c=_0x5ef25c;_0x1c32c2['model']=_[_0xd7d1('0x5e')](db['VoicePrefix'][_0xd7d1('0x45')]);_0x1c32c2[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x27ed0f[_0xd7d1('0x49')]);_0x1c32c2[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x1c32c2[_0xd7d1('0x5c')],_0x1c32c2[_0xd7d1('0x49')]);_0x11c344[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x1c32c2[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x11c344['attributes']=_0x11c344['attributes'][_0xd7d1('0x53')]?_0x11c344['attributes']:_0x1c32c2[_0xd7d1('0x5c')];_0x11c344[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x11c344[_0xd7d1('0x48')]=qs[_0xd7d1('0xd4')](_['pick'](_0x27ed0f[_0xd7d1('0x49')],_0x1c32c2[_0xd7d1('0xd4')]));if(_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x11c344['where']=_[_0xd7d1('0x63')](_0x11c344[_0xd7d1('0x48')],{'$or':_['map'](_0x11c344[_0xd7d1('0x4d')],function(_0x5dce3b){var _0x909cba={};_0x909cba[_0x5dce3b]={'$like':'%'+_0x27ed0f['query'][_0xd7d1('0x39')]+'%'};return _0x909cba;})});}_0x11c344=_['merge']({},_0x11c344,_0x27ed0f[_0xd7d1('0xd6')]);return _0x37c05c[_0xd7d1('0x141')](_0x11c344);}})[_0xd7d1('0x18')](function(_0x1ee4d9){if(_0x1ee4d9){_0x328062=_0x1ee4d9[_0xd7d1('0x53')];if(!_0x27ed0f['query']['hasOwnProperty']('nolimit')){_0x11c344[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x11c344['offset']=qs[_0xd7d1('0x27')](_0x27ed0f[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x37c05c[_0xd7d1('0x141')](_0x11c344);}})[_0xd7d1('0x18')](function(_0x212f45){if(_0x212f45){return _0x212f45?{'count':_0x328062,'rows':_0x212f45}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x174ebc,null))[_0xd7d1('0x23')](handleError(_0x174ebc,null));};exports[_0xd7d1('0x142')]=function(_0x3977a9,_0x6b7749){var _0x2948f9={};var _0x43cd3f={};var _0x1695b1;var _0x583f8d;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x3977a9[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x6b7749,null))[_0xd7d1('0x18')](function(_0x55f1b2){if(_0x55f1b2){_0x1695b1=_0x55f1b2;_0x43cd3f[_0xd7d1('0x5c')]=_['keys'](db[_0xd7d1('0x143')][_0xd7d1('0x45')]);_0x43cd3f['query']=_[_0xd7d1('0x5e')](_0x3977a9['query']);_0x43cd3f[_0xd7d1('0xd4')]=_['intersection'](_0x43cd3f[_0xd7d1('0x5c')],_0x43cd3f['query']);_0x2948f9[_0xd7d1('0x4d')]=_['intersection'](_0x43cd3f[_0xd7d1('0x5c')],qs['fields'](_0x3977a9['query'][_0xd7d1('0x61')]));_0x2948f9[_0xd7d1('0x4d')]=_0x2948f9[_0xd7d1('0x4d')]['length']?_0x2948f9[_0xd7d1('0x4d')]:_0x43cd3f['model'];_0x2948f9['order']=qs[_0xd7d1('0xe1')](_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x2948f9[_0xd7d1('0x48')]=qs['filters'](_[_0xd7d1('0xe2')](_0x3977a9['query'],_0x43cd3f[_0xd7d1('0xd4')]));if(_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x2948f9[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x2948f9[_0xd7d1('0x48')],{'$or':_['map'](_0x2948f9[_0xd7d1('0x4d')],function(_0x4449dc){var _0x40bcee={};_0x40bcee[_0x4449dc]={'$like':'%'+_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x40bcee;})});}_0x2948f9=_[_0xd7d1('0x63')]({},_0x2948f9,_0x3977a9[_0xd7d1('0xd6')]);return _0x1695b1[_0xd7d1('0x142')](_0x2948f9);}})[_0xd7d1('0x18')](function(_0x515a71){if(_0x515a71){_0x583f8d=_0x515a71['length'];if(!_0x3977a9['query']['hasOwnProperty']('nolimit')){_0x2948f9[_0xd7d1('0x28')]=qs['limit'](_0x3977a9[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x2948f9[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x3977a9[_0xd7d1('0x49')]['offset']);}return _0x1695b1[_0xd7d1('0x142')](_0x2948f9);}})['then'](function(_0x5b6658){if(_0x5b6658){return _0x5b6658?{'count':_0x583f8d,'rows':_0x5b6658}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x6b7749,null))[_0xd7d1('0x23')](handleError(_0x6b7749,null));};exports[_0xd7d1('0x144')]=function(_0x1a0471,_0x20e303){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0x1a0471['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x20e303,null))['then'](function(_0x556b78){if(_0x556b78){return _0x556b78[_0xd7d1('0x144')](_0x1a0471[_0xd7d1('0x67')][_0xd7d1('0x6a')],_['omit'](_0x1a0471[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x20e303,null))['catch'](handleError(_0x20e303,null));};exports[_0xd7d1('0x145')]=function(_0x1f129e,_0x5a3c57){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x1f129e[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5a3c57,null))[_0xd7d1('0x18')](function(_0x5db560){if(_0x5db560){return _0x5db560[_0xd7d1('0x145')](_0x1f129e[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x5a3c57,null))[_0xd7d1('0x23')](handleError(_0x5a3c57,null));};exports['getMailAccounts']=function(_0x21c54f,_0x5823d2){var _0x90b069={};var _0x103a71={};var _0x583072;var _0xc234d3;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x21c54f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x5823d2,null))[_0xd7d1('0x18')](function(_0x136fae){if(_0x136fae){_0x583072=_0x136fae;_0x103a71[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x146')][_0xd7d1('0x45')]);_0x103a71[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x21c54f[_0xd7d1('0x49')]);_0x103a71[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x103a71[_0xd7d1('0x5c')],_0x103a71[_0xd7d1('0x49')]);_0x90b069[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x103a71[_0xd7d1('0x5c')],qs['fields'](_0x21c54f['query'][_0xd7d1('0x61')]));_0x90b069[_0xd7d1('0x4d')]=_0x90b069['attributes']['length']?_0x90b069[_0xd7d1('0x4d')]:_0x103a71['model'];_0x90b069[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x21c54f['query'][_0xd7d1('0xe1')]);_0x90b069['where']=qs['filters'](_[_0xd7d1('0xe2')](_0x21c54f[_0xd7d1('0x49')],_0x103a71[_0xd7d1('0xd4')]));if(_0x21c54f['query']['filter']){_0x90b069['where']=_[_0xd7d1('0x63')](_0x90b069[_0xd7d1('0x48')],{'$or':_['map'](_0x90b069['attributes'],function(_0x4dd667){var _0x573c00={};_0x573c00[_0x4dd667]={'$like':'%'+_0x21c54f['query'][_0xd7d1('0x39')]+'%'};return _0x573c00;})});}_0x90b069=_[_0xd7d1('0x63')]({},_0x90b069,_0x21c54f['options']);return _0x583072[_0xd7d1('0x147')](_0x90b069);}})[_0xd7d1('0x18')](function(_0x6e7521){if(_0x6e7521){_0xc234d3=_0x6e7521['length'];if(!_0x21c54f['query'][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x90b069[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x21c54f['query'][_0xd7d1('0x28')]);_0x90b069[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x21c54f['query']['offset']);}return _0x583072['getMailAccounts'](_0x90b069);}})[_0xd7d1('0x18')](function(_0xf3980a){if(_0xf3980a){return _0xf3980a?{'count':_0xc234d3,'rows':_0xf3980a}:null;}})['then'](respondWithResult(_0x5823d2,null))[_0xd7d1('0x23')](handleError(_0x5823d2,null));};exports['addMailAccounts']=function(_0x57b04d,_0x2af51a){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x57b04d[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2af51a,null))[_0xd7d1('0x18')](function(_0x1c8851){if(_0x1c8851){return _0x1c8851[_0xd7d1('0x148')](_0x57b04d['body'][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x57b04d[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x2af51a,null))[_0xd7d1('0x23')](handleError(_0x2af51a,null));};exports[_0xd7d1('0x149')]=function(_0x58a51f,_0x45ef4f){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x58a51f[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x45ef4f,null))[_0xd7d1('0x18')](function(_0x5c090b){if(_0x5c090b){return _0x5c090b[_0xd7d1('0x149')](_0x58a51f['query'][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x45ef4f,null))[_0xd7d1('0x23')](handleError(_0x45ef4f,null));};exports[_0xd7d1('0x14a')]=function(_0x4693b4,_0x3964eb){var _0x21b8e0={};var _0x68f34f={};var _0x1205ac;var _0xe0b6b0;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x4693b4['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3964eb,null))[_0xd7d1('0x18')](function(_0x178f32){if(_0x178f32){_0x1205ac=_0x178f32;_0x68f34f['model']=_[_0xd7d1('0x5e')](db['OpenchannelAccount'][_0xd7d1('0x45')]);_0x68f34f['query']=_['keys'](_0x4693b4[_0xd7d1('0x49')]);_0x68f34f[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x68f34f['model'],_0x68f34f[_0xd7d1('0x49')]);_0x21b8e0['attributes']=_[_0xd7d1('0x60')](_0x68f34f[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x21b8e0[_0xd7d1('0x4d')]=_0x21b8e0['attributes'][_0xd7d1('0x53')]?_0x21b8e0['attributes']:_0x68f34f[_0xd7d1('0x5c')];_0x21b8e0[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x21b8e0['where']=qs[_0xd7d1('0xd4')](_['pick'](_0x4693b4['query'],_0x68f34f[_0xd7d1('0xd4')]));if(_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x21b8e0[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x21b8e0['where'],{'$or':_[_0xd7d1('0x3b')](_0x21b8e0[_0xd7d1('0x4d')],function(_0x53d0fe){var _0x3d2455={};_0x3d2455[_0x53d0fe]={'$like':'%'+_0x4693b4['query']['filter']+'%'};return _0x3d2455;})});}_0x21b8e0=_[_0xd7d1('0x63')]({},_0x21b8e0,_0x4693b4[_0xd7d1('0xd6')]);return _0x1205ac['getOpenchannelAccounts'](_0x21b8e0);}})[_0xd7d1('0x18')](function(_0x1856de){if(_0x1856de){_0xe0b6b0=_0x1856de[_0xd7d1('0x53')];if(!_0x4693b4['query']['hasOwnProperty'](_0xd7d1('0xdf'))){_0x21b8e0[_0xd7d1('0x28')]=qs['limit'](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x21b8e0[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x4693b4[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x1205ac['getOpenchannelAccounts'](_0x21b8e0);}})[_0xd7d1('0x18')](function(_0x56b412){if(_0x56b412){return _0x56b412?{'count':_0xe0b6b0,'rows':_0x56b412}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x3964eb,null))[_0xd7d1('0x23')](handleError(_0x3964eb,null));};exports['addOpenchannelAccounts']=function(_0x3dfa53,_0x323a89){return db['User']['find']({'where':{'id':_0x3dfa53[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x323a89,null))[_0xd7d1('0x18')](function(_0x33e4ca){if(_0x33e4ca){return _0x33e4ca['addOpenchannelAccounts'](_0x3dfa53[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x3dfa53[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x323a89,null))[_0xd7d1('0x23')](handleError(_0x323a89,null));};exports[_0xd7d1('0x14b')]=function(_0x32bb23,_0x93783e){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x32bb23[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x93783e,null))['then'](function(_0x29c4a3){if(_0x29c4a3){return _0x29c4a3['removeOpenchannelAccounts'](_0x32bb23[_0xd7d1('0x49')][_0xd7d1('0x6a')]);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x93783e,null))[_0xd7d1('0x23')](handleError(_0x93783e,null));};exports[_0xd7d1('0x14c')]=function(_0x504dc7,_0x3eb238){var _0x5a1fd3={};var _0x3ccd55={};var _0xe4fe42;var _0x5cc7e4;return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x504dc7[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x3eb238,null))['then'](function(_0x14cfa5){if(_0x14cfa5){_0xe4fe42=_0x14cfa5;_0x3ccd55[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x14d')][_0xd7d1('0x45')]);_0x3ccd55[_0xd7d1('0x49')]=_['keys'](_0x504dc7[_0xd7d1('0x49')]);_0x3ccd55[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x3ccd55[_0xd7d1('0x5c')],_0x3ccd55['query']);_0x5a1fd3[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3ccd55[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x504dc7['query'][_0xd7d1('0x61')]));_0x5a1fd3[_0xd7d1('0x4d')]=_0x5a1fd3[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x5a1fd3[_0xd7d1('0x4d')]:_0x3ccd55[_0xd7d1('0x5c')];_0x5a1fd3[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x5a1fd3['where']=qs['filters'](_[_0xd7d1('0xe2')](_0x504dc7[_0xd7d1('0x49')],_0x3ccd55[_0xd7d1('0xd4')]));if(_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x5a1fd3[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x5a1fd3[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x5a1fd3[_0xd7d1('0x4d')],function(_0x15a270){var _0x92a2a4={};_0x92a2a4[_0x15a270]={'$like':'%'+_0x504dc7[_0xd7d1('0x49')]['filter']+'%'};return _0x92a2a4;})});}_0x5a1fd3=_['merge']({},_0x5a1fd3,_0x504dc7[_0xd7d1('0xd6')]);return _0xe4fe42[_0xd7d1('0x14c')](_0x5a1fd3);}})[_0xd7d1('0x18')](function(_0x109ba0){if(_0x109ba0){_0x5cc7e4=_0x109ba0[_0xd7d1('0x53')];if(!_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x5a1fd3[_0xd7d1('0x28')]=qs['limit'](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x5a1fd3['offset']=qs[_0xd7d1('0x27')](_0x504dc7[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0xe4fe42['getSmsAccounts'](_0x5a1fd3);}})[_0xd7d1('0x18')](function(_0x33ae46){if(_0x33ae46){return _0x33ae46?{'count':_0x5cc7e4,'rows':_0x33ae46}:null;}})['then'](respondWithResult(_0x3eb238,null))['catch'](handleError(_0x3eb238,null));};exports[_0xd7d1('0x14e')]=function(_0x311d75,_0x13b616){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x311d75['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x13b616,null))['then'](function(_0x57f4e7){if(_0x57f4e7){return _0x57f4e7['addSmsAccounts'](_0x311d75[_0xd7d1('0x67')]['ids'],_[_0xd7d1('0x6b')](_0x311d75[_0xd7d1('0x67')],['ids','id'])||{});}})['then'](respondWithResult(_0x13b616,null))[_0xd7d1('0x23')](handleError(_0x13b616,null));};exports['removeSmsAccounts']=function(_0x13b3bc,_0x503209){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x13b3bc['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x503209,null))[_0xd7d1('0x18')](function(_0x472428){if(_0x472428){return _0x472428[_0xd7d1('0x14f')](_0x13b3bc[_0xd7d1('0x49')]['ids']);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x503209,null))[_0xd7d1('0x23')](handleError(_0x503209,null));};exports[_0xd7d1('0x150')]=function(_0x1091aa,_0x56d5c8){var _0x2080f7={};var _0x3ebd78={};var _0x18763f;var _0x5b7716;return db['User'][_0xd7d1('0xd2')]({'where':{'id':_0x1091aa[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x56d5c8,null))['then'](function(_0x14664f){if(_0x14664f){_0x18763f=_0x14664f;_0x3ebd78['model']=_[_0xd7d1('0x5e')](db['ChatWebsite'][_0xd7d1('0x45')]);_0x3ebd78[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x1091aa[_0xd7d1('0x49')]);_0x3ebd78['filters']=_['intersection'](_0x3ebd78['model'],_0x3ebd78[_0xd7d1('0x49')]);_0x2080f7[_0xd7d1('0x4d')]=_[_0xd7d1('0x60')](_0x3ebd78[_0xd7d1('0x5c')],qs[_0xd7d1('0x61')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x2080f7['attributes']=_0x2080f7[_0xd7d1('0x4d')]['length']?_0x2080f7[_0xd7d1('0x4d')]:_0x3ebd78[_0xd7d1('0x5c')];_0x2080f7[_0xd7d1('0xd5')]=qs[_0xd7d1('0xe1')](_0x1091aa[_0xd7d1('0x49')]['sort']);_0x2080f7['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x1091aa[_0xd7d1('0x49')],_0x3ebd78[_0xd7d1('0xd4')]));if(_0x1091aa[_0xd7d1('0x49')]['filter']){_0x2080f7[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x2080f7[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x2080f7[_0xd7d1('0x4d')],function(_0x31c2a7){var _0x18cd21={};_0x18cd21[_0x31c2a7]={'$like':'%'+_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x39')]+'%'};return _0x18cd21;})});}_0x2080f7=_[_0xd7d1('0x63')]({},_0x2080f7,_0x1091aa[_0xd7d1('0xd6')]);return _0x18763f[_0xd7d1('0x150')](_0x2080f7);}})[_0xd7d1('0x18')](function(_0x2186e3){if(_0x2186e3){_0x5b7716=_0x2186e3[_0xd7d1('0x53')];if(!_0x1091aa['query'][_0xd7d1('0xde')]('nolimit')){_0x2080f7[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x28')]);_0x2080f7[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x1091aa[_0xd7d1('0x49')][_0xd7d1('0x27')]);}return _0x18763f[_0xd7d1('0x150')](_0x2080f7);}})['then'](function(_0x557a69){if(_0x557a69){return _0x557a69?{'count':_0x5b7716,'rows':_0x557a69}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x56d5c8,null))[_0xd7d1('0x23')](handleError(_0x56d5c8,null));};exports[_0xd7d1('0x151')]=function(_0x138637,_0x250bb9){return db['User']['find']({'where':{'id':_0x138637['params']['id']}})['then'](handleEntityNotFound(_0x250bb9,null))[_0xd7d1('0x18')](function(_0x3dd8b9){if(_0x3dd8b9){return _0x3dd8b9[_0xd7d1('0x151')](_0x138637[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x138637[_0xd7d1('0x67')],[_0xd7d1('0x6a'),'id'])||{});}})[_0xd7d1('0x18')](respondWithResult(_0x250bb9,null))[_0xd7d1('0x23')](handleError(_0x250bb9,null));};exports[_0xd7d1('0x152')]=function(_0xcd8260,_0x14afe9){return db['User'][_0xd7d1('0x64')]({'where':{'id':_0xcd8260['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x14afe9,null))[_0xd7d1('0x18')](function(_0x5e59c0){if(_0x5e59c0){return _0x5e59c0[_0xd7d1('0x152')](_0xcd8260[_0xd7d1('0x49')]['ids']);}})['then'](respondWithStatusCode(_0x14afe9,null))[_0xd7d1('0x23')](handleError(_0x14afe9,null));};exports[_0xd7d1('0x153')]=function(_0x1fc645,_0x2d3ffb){var _0x13d645={};var _0x5a41f4={};var _0x41e520;var _0x302e19;return db[_0xd7d1('0x44')][_0xd7d1('0xd2')]({'where':{'id':_0x1fc645[_0xd7d1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2d3ffb,null))['then'](function(_0x33112b){if(_0x33112b){_0x41e520=_0x33112b;_0x5a41f4[_0xd7d1('0x5c')]=_[_0xd7d1('0x5e')](db[_0xd7d1('0x154')][_0xd7d1('0x45')]);_0x5a41f4[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x1fc645[_0xd7d1('0x49')]);_0x5a41f4[_0xd7d1('0xd4')]=_['intersection'](_0x5a41f4['model'],_0x5a41f4['query']);_0x13d645['attributes']=_[_0xd7d1('0x60')](_0x5a41f4['model'],qs[_0xd7d1('0x61')](_0x1fc645[_0xd7d1('0x49')]['fields']));_0x13d645[_0xd7d1('0x4d')]=_0x13d645[_0xd7d1('0x4d')][_0xd7d1('0x53')]?_0x13d645[_0xd7d1('0x4d')]:_0x5a41f4[_0xd7d1('0x5c')];_0x13d645['order']=qs[_0xd7d1('0xe1')](_0x1fc645['query'][_0xd7d1('0xe1')]);_0x13d645['where']=qs[_0xd7d1('0xd4')](_[_0xd7d1('0xe2')](_0x1fc645[_0xd7d1('0x49')],_0x5a41f4[_0xd7d1('0xd4')]));if(_0x1fc645[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x13d645[_0xd7d1('0x48')]=_['merge'](_0x13d645[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x13d645[_0xd7d1('0x4d')],function(_0x517b7a){var _0x2d5fc1={};_0x2d5fc1[_0x517b7a]={'$like':'%'+_0x1fc645[_0xd7d1('0x49')]['filter']+'%'};return _0x2d5fc1;})});}_0x13d645=_['merge']({},_0x13d645,_0x1fc645['options']);return _0x41e520['getWhatsappAccounts'](_0x13d645);}})[_0xd7d1('0x18')](function(_0x16d101){if(_0x16d101){_0x302e19=_0x16d101[_0xd7d1('0x53')];if(!_0x1fc645[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x13d645['limit']=qs[_0xd7d1('0x28')](_0x1fc645[_0xd7d1('0x49')]['limit']);_0x13d645[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x1fc645['query'][_0xd7d1('0x27')]);}return _0x41e520[_0xd7d1('0x153')](_0x13d645);}})[_0xd7d1('0x18')](function(_0x3725f6){if(_0x3725f6){return _0x3725f6?{'count':_0x302e19,'rows':_0x3725f6}:null;}})[_0xd7d1('0x18')](respondWithResult(_0x2d3ffb,null))[_0xd7d1('0x23')](handleError(_0x2d3ffb,null));};exports[_0xd7d1('0x155')]=function(_0x794dea,_0x2dc6a5){return db[_0xd7d1('0x44')]['find']({'where':{'id':_0x794dea[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2dc6a5,null))[_0xd7d1('0x18')](function(_0x5b24b9){if(_0x5b24b9){return _0x5b24b9['addWhatsappAccounts'](_0x794dea[_0xd7d1('0x67')][_0xd7d1('0x6a')],_[_0xd7d1('0x6b')](_0x794dea['body'],[_0xd7d1('0x6a'),'id'])||{});}})['then'](respondWithResult(_0x2dc6a5,null))[_0xd7d1('0x23')](handleError(_0x2dc6a5,null));};exports['removeWhatsappAccounts']=function(_0x196be9,_0x2464e8){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x196be9['params']['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x2464e8,null))[_0xd7d1('0x18')](function(_0x20de41){if(_0x20de41){return _0x20de41[_0xd7d1('0x156')](_0x196be9[_0xd7d1('0x49')]['ids']);}})[_0xd7d1('0x18')](respondWithStatusCode(_0x2464e8,null))['catch'](handleError(_0x2464e8,null));};exports[_0xd7d1('0x157')]=function(_0x513080,_0x40e115){var _0x1be009={},_0x3580c4={},_0x488c60={'count':0x0,'rows':[]};var _0x5b80ba=db[_0xd7d1('0x158')][_0xd7d1('0x45')];_0x3580c4['model']=_[_0xd7d1('0x5e')](_0x5b80ba);_0x3580c4[_0xd7d1('0x49')]=_[_0xd7d1('0x5e')](_0x513080[_0xd7d1('0x49')]);_0x3580c4[_0xd7d1('0xd4')]=_[_0xd7d1('0x60')](_0x3580c4[_0xd7d1('0x5c')],_0x3580c4[_0xd7d1('0x49')]);_0x3580c4[_0xd7d1('0xd4')]=_['concat'](_0x3580c4[_0xd7d1('0xd4')],['$and',_0xd7d1('0x159'),_0xd7d1('0x15a'),_0xd7d1('0x15b'),'$lt',_0xd7d1('0x15c'),'$ne',_0xd7d1('0x15d'),_0xd7d1('0x15e'),_0xd7d1('0x15f'),_0xd7d1('0x160'),'$in',_0xd7d1('0x161'),_0xd7d1('0x162'),'$notLike','$iLike','$notILike',_0xd7d1('0x162'),_0xd7d1('0x163'),_0xd7d1('0x164'),_0xd7d1('0x165'),_0xd7d1('0x166')]);_0x1be009['attributes']=_[_0xd7d1('0x60')](_0x3580c4['model'],qs['fields'](_0x513080[_0xd7d1('0x49')][_0xd7d1('0x61')]));_0x1be009['attributes']=_0x1be009['attributes'][_0xd7d1('0x53')]?_0x1be009[_0xd7d1('0x4d')]:_0x3580c4[_0xd7d1('0x5c')];if(!_0x513080[_0xd7d1('0x49')][_0xd7d1('0xde')](_0xd7d1('0xdf'))){_0x1be009['limit']=qs['limit'](_0x513080['query'][_0xd7d1('0x28')]);_0x1be009[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x513080['query'][_0xd7d1('0x27')]);}_0x1be009['order']=qs[_0xd7d1('0xe1')](_0x513080[_0xd7d1('0x49')][_0xd7d1('0xe1')]);_0x1be009['where']=qs[_0xd7d1('0xd4')](_['pick'](_0x513080[_0xd7d1('0x49')],_0x3580c4[_0xd7d1('0xd4')]));if(_0x513080[_0xd7d1('0x49')][_0xd7d1('0x39')]){_0x1be009[_0xd7d1('0x48')]=_[_0xd7d1('0x63')](_0x1be009[_0xd7d1('0x48')],{'$or':_[_0xd7d1('0x3b')](_0x1be009[_0xd7d1('0x4d')],function(_0x55a7bb){var _0x105e13={};_0x105e13[_0x55a7bb]={'$like':'%'+_0x513080[_0xd7d1('0x49')]['filter']+'%'};return _0x105e13;})});}_0x1be009[_0xd7d1('0x48')]={'$and':[_0x1be009['where'],{'$or':[{'UserId':_0x513080[_0xd7d1('0x5b')]['id']},{'OwnerId':_0x513080['params']['id']}]}]};_0x1be009=_[_0xd7d1('0x63')]({},_0x1be009,_0x513080[_0xd7d1('0xd6')]);var _0xb298b8={'where':_0x1be009[_0xd7d1('0x48')]};return db[_0xd7d1('0x158')][_0xd7d1('0x2a')](_0xb298b8)['then'](function(_0x15ff3c){_0x488c60['count']=_0x15ff3c;if(_0x513080[_0xd7d1('0x49')][_0xd7d1('0x4a')]){_0x1be009[_0xd7d1('0x4b')]=[{'attributes':['id',_0xd7d1('0x167'),_0xd7d1('0x168'),'phone'],'model':db['CmContact'],'as':_0xd7d1('0x169')},{'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x16a')],'model':db[_0xd7d1('0x16b')],'as':_0xd7d1('0xe0')}];}return db[_0xd7d1('0x158')]['findAll'](_0x1be009);})[_0xd7d1('0x18')](function(_0x53a776){_0x488c60[_0xd7d1('0x50')]=_0x53a776;return _0x488c60;})[_0xd7d1('0x18')](respondWithFilteredResult(_0x40e115,_0x1be009))[_0xd7d1('0x23')](handleError(_0x40e115,null));};exports[_0xd7d1('0x16c')]=function(_0x24445f,_0x3da368){if(!_[_0xd7d1('0x70')](_0x24445f[_0xd7d1('0x35')]['id'])&&(_0x24445f[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x33')||_0x24445f[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x35'))){return db[_0xd7d1('0x44')]['findOne']({'where':{'id':_0x24445f[_0xd7d1('0x5b')]['id']},'raw':!![]})[_0xd7d1('0x18')](function(_0x3c988e){return authService['retrieveApiKey'](_0x3c988e);})[_0xd7d1('0x18')](function(_0x2a9674){if(_0x2a9674){return _0x3da368[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')]({'api_key':_0x2a9674[_0xd7d1('0x16d')]});}else{return _0x3da368[_0xd7d1('0x25')](0xcc)[_0xd7d1('0x2d')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x3da368,0x193));}else{return _0x3da368[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':_0xd7d1('0x16e')});}};exports[_0xd7d1('0x16f')]=function(_0x471756,_0x1804ee){if(!_[_0xd7d1('0x70')](_0x471756['user']['id'])&&(_0x471756[_0xd7d1('0x35')][_0xd7d1('0x2f')]=='admin'||_0x471756[_0xd7d1('0x35')][_0xd7d1('0x2f')]=='user')){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x471756[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(_0x463d57){return authService[_0xd7d1('0x170')](_0x463d57);})[_0xd7d1('0x18')](function(_0x54d4a2){return db['User'][_0xd7d1('0x2e')]({'apiKeyIat':_0x54d4a2['iat'],'apiKeyNonce':_0x54d4a2[_0xd7d1('0x171')]},{'where':{'id':_0x471756[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](function(){return _0x1804ee[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')]({'api_key':_0x54d4a2[_0xd7d1('0x16d')]});});})['catch'](handleError(_0x1804ee,0x193));}else{return _0x1804ee[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':_0xd7d1('0x16e')});}};exports[_0xd7d1('0x172')]=function(_0x35ddfe,_0x694567){if(!_[_0xd7d1('0x70')](_0x35ddfe[_0xd7d1('0x35')]['id'])&&(_0x35ddfe[_0xd7d1('0x35')][_0xd7d1('0x2f')]==_0xd7d1('0x33')||_0x35ddfe[_0xd7d1('0x35')]['role']==_0xd7d1('0x35'))){return db[_0xd7d1('0x44')][_0xd7d1('0x64')]({'where':{'id':_0x35ddfe[_0xd7d1('0x5b')]['id']}})[_0xd7d1('0x18')](handleEntityNotFound(_0x694567,null))[_0xd7d1('0x18')](function(_0xf46399){if(_0xf46399&&_0xf46399[_0xd7d1('0x173')]&&_0xf46399['apiKeyIat'])return _0xf46399;else throw{'message':_0xd7d1('0x174')};})[_0xd7d1('0x18')](function(){return db['User'][_0xd7d1('0x2e')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x35ddfe['params']['id']}});})['then'](respondWithStatusCode(_0x694567,0xc8))['catch'](handleError(_0x694567,0x193));}else{return _0x694567[_0xd7d1('0x25')](0x191)[_0xd7d1('0x2d')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xd7d1('0x175')]=function(_0xcf7906,_0x3174ba){var _0x56d73a=_0xcf7906[_0xd7d1('0x35')][_0xd7d1('0xb2')]({'plain':!![]});if(!_0x56d73a){return _0x3174ba['status'](0x191)[_0xd7d1('0x42')](_0xd7d1('0x176'));}else{Promise['resolve']()[_0xd7d1('0x18')](function(){if(_0xcf7906[_0xd7d1('0x49')][_0xd7d1('0x4c')]!==_0xd7d1('0x52'))return;return _0xcf7906['user'][_0xd7d1('0x177')]();})[_0xd7d1('0x18')](function(_0x5f8f4){if(!_0x5f8f4)return;return _0x5f8f4[_0xd7d1('0xb2')]({'plain':!![]});})[_0xd7d1('0x18')](function(_0x51f9b1){_0x56d73a['userSetting']=_0x51f9b1;return _0x3174ba[_0xd7d1('0x25')](0xc8)[_0xd7d1('0x2d')](_0x56d73a);});}};exports[_0xd7d1('0x178')]=function(_0x5bb0c0,_0x35e0d1){var _0xe6295d={'offset':0x0},_0x2b977a={'count':0x0,'rows':[]};Promise[_0xd7d1('0x119')]()['then'](function(){if(!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')]&&!_0x5bb0c0['query'][_0xd7d1('0x179')]&&!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x17a')])return[];return Promise[_0xd7d1('0x119')]()['then'](function(){var _0x55b0ea=[];if(!_[_0xd7d1('0x17b')](_0x5bb0c0[_0xd7d1('0x49')]['teams'])){_0x55b0ea['push'](db['Team']['findAll']({'attributes':['id',_0xd7d1('0x3e')],'where':{'id':_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x179')]}}));}if(!_[_0xd7d1('0x17b')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x17a')])){_0x55b0ea[_0xd7d1('0x4e')](db[_0xd7d1('0x16b')][_0xd7d1('0x4f')]({'attributes':['id','name'],'type':_0xd7d1('0x17c'),'where':{'id':_0x5bb0c0['query'][_0xd7d1('0x17a')]}}));}return Promise[_0xd7d1('0x59')](_0x55b0ea);})[_0xd7d1('0x18')](function(_0x586c59){var _0x4f5068=_[_0xd7d1('0x17d')](_0x586c59)['map'](function(_0x421aab){return _0x421aab[_0xd7d1('0x128')]({'attributes':['id',_0xd7d1('0x3e'),_0xd7d1('0x6c'),_0xd7d1('0xa5')],'raw':!![]});});return Promise[_0xd7d1('0x59')](_0x4f5068);})[_0xd7d1('0x18')](function(_0x5d3983){var _0x505b71=_[_0xd7d1('0x17d')](_0x5d3983);if(!_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')])return _0x505b71;if(_['isEmpty'](_0x505b71)){return db[_0xd7d1('0x44')][_0xd7d1('0x4f')]({'attributes':['id',_0xd7d1('0x3e'),'internal','online'],'where':{'role':'agent','$or':[db[_0xd7d1('0x72')][_0xd7d1('0x48')](db['sequelize']['fn'](_0xd7d1('0x17e'),db[_0xd7d1('0x72')][_0xd7d1('0x17f')](_0xd7d1('0x3e'))),{'$like':'%'+_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')][_0xd7d1('0xae')]()+'%'}),{'internal':{'$like':'%'+_0x5bb0c0[_0xd7d1('0x49')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x505b71)['flatten']()[_0xd7d1('0x39')](function(_0x4a12b4){return _0x4a12b4[_0xd7d1('0x3e')][_0xd7d1('0xae')]()['includes'](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')][_0xd7d1('0xae')]())||_0x4a12b4['internal'][_0xd7d1('0x180')]()[_0xd7d1('0x3d')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x39')]);})[_0xd7d1('0x3c')]();}})['then'](function(_0x2be6c1){var _0x32d05f='name';var _0x48f59e=_0xd7d1('0x181');if(_0x5bb0c0[_0xd7d1('0x49')]['sort']){_0x48f59e=_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0xe1')][0x0]==='-'?_0xd7d1('0x182'):_0xd7d1('0x181');_0x32d05f=_0x48f59e==='asc'?_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0xe1')]:_0x5bb0c0[_0xd7d1('0x49')]['sort'][_0xd7d1('0x183')](0x1);}return _(_0x2be6c1)[_0xd7d1('0x184')]('id')[_0xd7d1('0x185')]([function(_0x373c5c){return _0x32d05f===_0xd7d1('0x3e')?_0x373c5c[_0x32d05f][_0xd7d1('0xae')]():_0x373c5c[_0x32d05f];}],[_0x48f59e])[_0xd7d1('0x3b')](function(_0xd71968){return _['pick'](_0xd71968,['id',_0xd7d1('0x3e'),'internal',_0xd7d1('0xa5')]);})[_0xd7d1('0x3c')]();})[_0xd7d1('0x18')](function(_0x3f7c43){return amiClient[_0xd7d1('0x17')](_0xd7d1('0x36'),_0x5bb0c0)['then'](function(_0x375c86){if(_0x375c86[_0xd7d1('0x1e')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x184a01=_0x375c86[_0xd7d1('0x22')];var _0x57bd8b=jayson[_0xd7d1('0x15')][_0xd7d1('0x16')]({'port':0x232c});return _0x57bd8b[_0xd7d1('0x17')](_0xd7d1('0x36'),_0x5bb0c0)['then'](function(_0x10a780){if(_0x10a780[_0xd7d1('0x1e')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0xe9c83b=_0x10a780[_0xd7d1('0x22')];return _['merge']({},_0xe9c83b,_0x184a01);});})[_0xd7d1('0x18')](function(_0x69cda2){return _['map'](_0x3f7c43,function(_0x4632e0){var _0x2b660a=_[_0xd7d1('0x64')](_0x69cda2[_0xd7d1('0x50')],['id',_0x4632e0['id']]);if(!_0x2b660a||!_0x4632e0[_0xd7d1('0xa5')]){_0x4632e0['status']='offline';}else if(_0x2b660a[_0xd7d1('0xb5')]){_0x4632e0[_0xd7d1('0x25')]=_0xd7d1('0x10b');}else{_0x4632e0['status']=_['includes']([_0xd7d1('0x186'),_0xd7d1('0x187'),_0xd7d1('0x188'),_0xd7d1('0x189'),null,undefined],_0x2b660a[_0xd7d1('0x18a')])?'online':_0xd7d1('0x18b');}return _0x4632e0;});});});})[_0xd7d1('0x18')](function(_0x10c7e9){if(!_0x5bb0c0[_0xd7d1('0x49')]['hasOwnProperty']('nolimit')){_0xe6295d[_0xd7d1('0x28')]=qs[_0xd7d1('0x28')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x28')]||0xa);_0xe6295d[_0xd7d1('0x27')]=qs[_0xd7d1('0x27')](_0x5bb0c0[_0xd7d1('0x49')][_0xd7d1('0x27')]);}_0x2b977a[_0xd7d1('0x2a')]=_0x10c7e9[_0xd7d1('0x53')];_0x2b977a['rows']=_0xe6295d[_0xd7d1('0x28')]?_0x10c7e9[_0xd7d1('0x18c')](_0xe6295d[_0xd7d1('0x27')],_0xe6295d[_0xd7d1('0x27')]+_0xe6295d[_0xd7d1('0x28')]):_0x10c7e9;return _0x2b977a;})[_0xd7d1('0x18')](respondWithFilteredResult(_0x35e0d1,_0xe6295d))[_0xd7d1('0x23')](handleError(_0x35e0d1,null));};function get_open_tabs(_0x532c69,_0x49732a){var _0x3293f0=_0x532c69[_0xd7d1('0x18d')](0x0)['toUpperCase']()+_0x532c69['slice'](0x1);var _0x3a6b8f={'type':db[_0xd7d1('0x97')][_0xd7d1('0x18e')]['SELECT'],'raw':!![]};return new Promise(function(_0x4b9927,_0x46b014){var _0x131211=squel[_0xd7d1('0x18f')]()[_0xd7d1('0x190')]('ui.'+_0x3293f0+_0xd7d1('0x191'),'id')[_0xd7d1('0x190')](_0xd7d1('0x192'))[_0xd7d1('0x75')](_0xd7d1('0x193')+_0x532c69+_0xd7d1('0x194'),'ui')[_0xd7d1('0x48')](_0xd7d1('0x195'),_0x49732a['id']);return db['sequelize'][_0xd7d1('0x49')](_0x131211[_0xd7d1('0x180')](),_0x3a6b8f)[_0xd7d1('0x18')](function(_0x7bb42){_0x49732a[_0x3293f0+_0xd7d1('0x196')]=_0x7bb42;_0x4b9927(_0x7bb42);})[_0xd7d1('0x23')](function(_0x3669ef){_0x46b014(_0x3669ef);});});}
\ No newline at end of file
+var _0x7e04=['offline','idle','unavailable','ringing','voiceStatus','busy','toUpperCase','slice','field','ui.','user_has_','_interactions','ui.UserId\x20=\x20?','toString','moment','path','lodash','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../errors/api','APINotFoundError','handleError','socket.io-emitter','redis','defaults','localhost','client','request','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','code','error','User,\x20%s,\x20%s','message','result','catch','status','offset','undefined','count','limit','update','then','emit','userNotification:recalc:','get','role','admin','Users','user','Agents','agent','telephone','filter','ignore','map','includes','find','value','name','UserProfileResource','sendStatus','index','User','rawAttributes','fieldName','type','password','getOptions','where','query','includeAll','include','userSetting','true','UserSetting','attributes','push','findAll','rows','openTabs','chat','sms','dataValues','mail','openchannel','whatsapp','show','params','model','salt','keys','filters','intersection','fields','length','fax','body','describe','addContacts','ids','omit','Setting','securePassword','validatePasswordPattern','max','internal','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','VoiceMail','fullname','email','permissions','101','113','110','104','105','106','108','109','100','111','114','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','settingsEnabled','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','all','Telephones','changePassword','oldPassword','newPassword','Sequelize','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','ValidationError','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','previousPasswords','validatePasswordHistory','updatePasswordsHistory','online','loginInPause','voicePause','isValidChannel','Unknown\x20channel','add','capitalize','spread','toLowerCase','voice','interface','format','SIP/%s','penalty','upsert','removeQueues','channel','remove','Queues','QueueId','Queue:remove','addAvatar','userpic','file','filename','join','root','existsSync','server/files/images/','download','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MAIL','SMS','WhatsappOpenTabs','concat','getContacts','CmContact','order','sort','pick','merge','hasOwnProperty','CmList','Tag','Tags','tag','nolimit','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','UserVoiceQueueRt','getGroups','VoiceRecording','options','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','ChatInteraction','OpenchannelInteraction','getOpenchannelInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','destroy','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','forEach','LOGIN','device','PAUSE','LOGININPAUSE','bulkCreate','isMiddleware','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','getTeams','Team','addTeams','resolve','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','getAssociatedQueues','flattenDeep','addAgent','UserVoicePrefix','VoicePrefixId','getDataValue','Queue:save','removeTeams','isArray','Query\x20parameter\x20\x27ids\x27\x20is\x20required','getLists','getAgents','values','send','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','$and','$or','$gt','$gte','$lte','$not','$notBetween','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','firstName','lastName','Contact','dialActive','VoiceQueue','getApiKey','retrieveApiKey','json','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','isEmpty','queues','inbound','flatten','lower','col','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)'];(function(_0x2987c3,_0x1a7e21){var _0x16f817=function(_0x10bdae){while(--_0x10bdae){_0x2987c3['push'](_0x2987c3['shift']());}};_0x16f817(++_0x1a7e21);}(_0x7e04,0x18f));var _0x47e0=function(_0x1e754b,_0x38ef14){_0x1e754b=_0x1e754b-0x0;var _0x184ef2=_0x7e04[_0x1e754b];return _0x184ef2;};'use strict';var moment=require(_0x47e0('0x0'));var util=require('util');var path=require(_0x47e0('0x1'));var fs=require('fs');var _=require(_0x47e0('0x2'));var squel=require('squel');var jayson=require(_0x47e0('0x3'));var Redis=require(_0x47e0('0x4'));var authService=require(_0x47e0('0x5'));var qs=require(_0x47e0('0x6'));var logger=require(_0x47e0('0x7'))(_0x47e0('0x8'));var utils=require(_0x47e0('0x9'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var APIBadRequestError=require(_0x47e0('0xa'))['APIBadRequestError'];var APINotFoundError=require(_0x47e0('0xa'))[_0x47e0('0xb')];var APIHandleError=require('../../errors/api')[_0x47e0('0xc')];var db=require('../../mysqldb')['db'];var socket=require(_0x47e0('0xd'))(new Redis(config[_0x47e0('0xe')]));require('./user.socket')['register'](socket);config[_0x47e0('0xe')]=_[_0x47e0('0xf')](config[_0x47e0('0xe')],{'host':_0x47e0('0x10'),'port':0x18eb});var amiClient=jayson[_0x47e0('0x11')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x8c79f5,_0x542d97,_0x121327,_0x3a1cf9){return new Promise(function(_0x4545ae,_0x343ee0){var _0x1d24ab=_0x3a1cf9||amiClient;return _0x1d24ab[_0x47e0('0x12')](_0x8c79f5,_0x121327)['then'](function(_0x260ad4){logger[_0x47e0('0x13')]('User,\x20%s,\x20%s',_0x542d97,_0x47e0('0x14'));logger[_0x47e0('0x15')](_0x47e0('0x16'),_0x542d97,_0x47e0('0x14'),JSON[_0x47e0('0x17')](_0x260ad4));if(_0x260ad4['error']){if(_0x260ad4['error'][_0x47e0('0x18')]===0x1f4){logger[_0x47e0('0x19')](_0x47e0('0x1a'),_0x542d97,_0x260ad4[_0x47e0('0x19')]['message']);return _0x343ee0(_0x260ad4[_0x47e0('0x19')]['message']);}logger[_0x47e0('0x19')](_0x47e0('0x1a'),_0x542d97,_0x260ad4['error'][_0x47e0('0x1b')]);return _0x4545ae(_0x260ad4[_0x47e0('0x19')][_0x47e0('0x1b')]);}else{logger[_0x47e0('0x13')](_0x47e0('0x1a'),_0x542d97,'request\x20sent');_0x4545ae(_0x260ad4[_0x47e0('0x1c')][_0x47e0('0x1b')]);}})[_0x47e0('0x1d')](function(_0x5d03ce){logger['error'](_0x47e0('0x1a'),_0x542d97,_0x5d03ce);_0x343ee0(_0x5d03ce);});});}function respondWithStatusCode(_0x5df49c,_0x53a3ad){_0x53a3ad=_0x53a3ad||0xcc;return function(_0xe23ca3){if(_0xe23ca3){return _0x5df49c['sendStatus'](_0x53a3ad);}return _0x5df49c[_0x47e0('0x1e')](_0x53a3ad)['end']();};}function respondWithResult(_0x6751ac,_0x2a29ff){_0x2a29ff=_0x2a29ff||0xc8;return function(_0x93a362){if(_0x93a362){return _0x6751ac[_0x47e0('0x1e')](_0x2a29ff)['json'](_0x93a362);}};}function respondWithFilteredResult(_0xcdd671,_0x55c696){return function(_0x36a71f){if(_0x36a71f){var _0x20bb83=typeof _0x55c696[_0x47e0('0x1f')]===_0x47e0('0x20')&&typeof _0x55c696['limit']===_0x47e0('0x20');var _0x41d555=_0x36a71f[_0x47e0('0x21')];var _0x40cf06=_0x20bb83?0x0:_0x55c696['offset'];var _0x2d2330=_0x20bb83?_0x36a71f['count']:_0x55c696['offset']+_0x55c696[_0x47e0('0x22')];var _0x22d0f8;if(_0x2d2330>=_0x41d555){_0x2d2330=_0x41d555;_0x22d0f8=0xc8;}else{_0x22d0f8=0xce;}_0xcdd671[_0x47e0('0x1e')](_0x22d0f8);return _0xcdd671['set']('Content-Range',_0x40cf06+'-'+_0x2d2330+'/'+_0x41d555)['json'](_0x36a71f);}return null;};}function saveUpdates(_0x56305d){return function(_0x12fe04){if(_0x12fe04){return _0x12fe04[_0x47e0('0x23')](_0x56305d)[_0x47e0('0x24')](function(_0x3daab4){socket[_0x47e0('0x25')](_0x47e0('0x26')+_0x3daab4['id'],{});return _0x3daab4;});}return null;};}function removeEntity(_0x632960){return function(_0x3eb988){if(_0x3eb988){return _0x3eb988['destroy']()[_0x47e0('0x24')](function(){var _0x46a4fb=_0x3eb988[_0x47e0('0x27')]({'plain':!![]});if(_0x46a4fb[_0x47e0('0x28')]===_0x47e0('0x29'))return;var _0x1808c9=[{'name':_0x47e0('0x2a'),'value':_0x47e0('0x2b'),'ignore':!![]},{'name':_0x47e0('0x2c'),'value':_0x47e0('0x2d'),'ignore':![]},{'name':'Telephones','value':_0x47e0('0x2e'),'ignore':![]}];var _0x1efb97=_(_0x1808c9)[_0x47e0('0x2f')](_0x47e0('0x30'))[_0x47e0('0x31')]('value')['value']();if(_[_0x47e0('0x32')](_0x1efb97,_0x46a4fb[_0x47e0('0x28')])){return;}var _0x3823dc=_[_0x47e0('0x33')](_0x1808c9,[_0x47e0('0x34'),_0x46a4fb[_0x47e0('0x28')]])[_0x47e0('0x35')];return db[_0x47e0('0x36')]['destroy']({'where':{'type':_0x3823dc,'resourceId':_0x46a4fb['id']}})[_0x47e0('0x24')](function(){return _0x3eb988;});})[_0x47e0('0x24')](function(){_0x632960[_0x47e0('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b5c60){return function(_0x112774){if(!_0x112774){_0x4b5c60[_0x47e0('0x37')](0x194);}return _0x112774;};}function handleError(_0x214967,_0x457de3){_0x457de3=_0x457de3||0x1f4;return function(_0x45f185){logger[_0x47e0('0x19')](_0x45f185['stack']);if(_0x45f185['name']){delete _0x45f185[_0x47e0('0x35')];}_0x214967['status'](_0x457de3)['send'](_0x45f185);};}exports[_0x47e0('0x38')]=function(_0x2fa37a,_0x317f18){var _0x507f00={},_0x38dd77={'count':0x0,'rows':[]};var _0x247165=_(db[_0x47e0('0x39')][_0x47e0('0x3a')])[_0x47e0('0x31')](function(_0x12bbf0){return{'name':_0x12bbf0[_0x47e0('0x3b')],'type':_0x12bbf0[_0x47e0('0x3c')]['key']};})[_0x47e0('0x2f')](function(_0x8781da){return!_[_0x47e0('0x32')]([_0x47e0('0x3d'),'salt'],_0x8781da[_0x47e0('0x35')]);})[_0x47e0('0x34')]();_0x507f00=qs[_0x47e0('0x3e')](_0x247165,_0x2fa37a);var _0x3e610b={'where':_0x507f00[_0x47e0('0x3f')]};return db['User'][_0x47e0('0x21')](_0x3e610b)[_0x47e0('0x24')](function(_0x270b67){_0x38dd77[_0x47e0('0x21')]=_0x270b67;if(_0x2fa37a[_0x47e0('0x40')][_0x47e0('0x41')]){_0x507f00[_0x47e0('0x42')]=[{'all':!![]}];}if(_0x2fa37a[_0x47e0('0x40')][_0x47e0('0x43')]===_0x47e0('0x44')){_0x507f00[_0x47e0('0x42')]=[{'model':db[_0x47e0('0x45')],'as':'userSetting'}];}if(!_[_0x47e0('0x32')](_0x507f00['attributes'],'id')){_0x507f00[_0x47e0('0x46')][_0x47e0('0x47')]('id');}return db[_0x47e0('0x39')][_0x47e0('0x48')](_0x507f00);})[_0x47e0('0x24')](function(_0x39c26b){_0x38dd77[_0x47e0('0x49')]=_0x39c26b;if(_0x2fa37a['query'][_0x47e0('0x4a')]===_0x47e0('0x44')){var _0x587b82=[];for(var _0x2ab421=0x0;_0x2ab421<_0x38dd77[_0x47e0('0x49')]['length'];_0x2ab421++){_0x587b82[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4b'),_0x38dd77[_0x47e0('0x49')][_0x2ab421]['dataValues']));_0x587b82[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4c'),_0x38dd77[_0x47e0('0x49')][_0x2ab421][_0x47e0('0x4d')]));_0x587b82['push'](get_open_tabs('fax',_0x38dd77[_0x47e0('0x49')][_0x2ab421]['dataValues']));_0x587b82[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4e'),_0x38dd77['rows'][_0x2ab421][_0x47e0('0x4d')]));_0x587b82['push'](get_open_tabs(_0x47e0('0x4f'),_0x38dd77[_0x47e0('0x49')][_0x2ab421][_0x47e0('0x4d')]));_0x587b82[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x50'),_0x38dd77['rows'][_0x2ab421][_0x47e0('0x4d')]));}return Promise['all'](_0x587b82)['then'](function(){return _0x38dd77;});}else{return _0x38dd77;}})[_0x47e0('0x24')](respondWithFilteredResult(_0x317f18,_0x507f00))[_0x47e0('0x1d')](handleError(_0x317f18,null));};exports[_0x47e0('0x51')]=function(_0x4f4cb1,_0x3779b5){var _0x2b58c7={'raw':![],'where':{'id':_0x4f4cb1[_0x47e0('0x52')]['id']}},_0x2e033a={};_0x2e033a[_0x47e0('0x53')]=_['differenceBy'](_['keys'](db['User'][_0x47e0('0x3a')]),['password',_0x47e0('0x54')]);_0x2e033a[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x4f4cb1['query']);_0x2e033a[_0x47e0('0x56')]=_['intersection'](_0x2e033a[_0x47e0('0x53')],_0x2e033a[_0x47e0('0x40')]);_0x2b58c7[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x2e033a[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x4f4cb1[_0x47e0('0x40')][_0x47e0('0x58')]));_0x2b58c7[_0x47e0('0x46')]=_0x2b58c7[_0x47e0('0x46')][_0x47e0('0x59')]?_0x2b58c7[_0x47e0('0x46')]:_0x2e033a[_0x47e0('0x53')];if(_0x4f4cb1[_0x47e0('0x40')][_0x47e0('0x41')]){_0x2b58c7[_0x47e0('0x42')]=[{'all':!![]}];}if(_0x4f4cb1[_0x47e0('0x40')][_0x47e0('0x43')]===_0x47e0('0x44')){_0x2b58c7[_0x47e0('0x42')]=[{'model':db[_0x47e0('0x45')],'as':_0x47e0('0x43')}];}_0x2b58c7=_['merge']({},_0x2b58c7,_0x4f4cb1['options']);if(!_[_0x47e0('0x32')](_0x2b58c7[_0x47e0('0x46')],'id')){_0x2b58c7['attributes'][_0x47e0('0x47')]('id');}return db[_0x47e0('0x39')][_0x47e0('0x33')](_0x2b58c7)[_0x47e0('0x24')](handleEntityNotFound(_0x3779b5,null))[_0x47e0('0x24')](function(_0x42e9aa){var _0x5e9c92=[];values=_0x42e9aa;if(_0x4f4cb1[_0x47e0('0x40')]['openTabs']===_0x47e0('0x44')){_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4b'),_0x42e9aa[_0x47e0('0x4d')]));_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4c'),_0x42e9aa['dataValues']));_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4f'),_0x42e9aa[_0x47e0('0x4d')]));_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x50'),_0x42e9aa[_0x47e0('0x4d')]));_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x5a'),_0x42e9aa['dataValues']));_0x5e9c92[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4e'),_0x42e9aa[_0x47e0('0x4d')]));return Promise['all'](_0x5e9c92);}else{return values;}})['then'](function(){return values;})[_0x47e0('0x24')](respondWithResult(_0x3779b5,null))[_0x47e0('0x1d')](handleError(_0x3779b5,null));};exports[_0x47e0('0x23')]=function(_0x44b17f,_0x224358){if(_0x44b17f[_0x47e0('0x5b')]['id']){delete _0x44b17f[_0x47e0('0x5b')]['id'];}delete _0x44b17f['body']['role'];return db[_0x47e0('0x39')]['find']({'where':{'id':_0x44b17f[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x224358,null))[_0x47e0('0x24')](saveUpdates(_0x44b17f[_0x47e0('0x5b')],null))[_0x47e0('0x24')](respondWithResult(_0x224358,null))['catch'](handleError(_0x224358,null));};exports[_0x47e0('0x5c')]=function(_0x351316,_0x46b6d9){return db['User']['describe']()[_0x47e0('0x24')](respondWithResult(_0x46b6d9,null))[_0x47e0('0x1d')](handleError(_0x46b6d9,null));};exports[_0x47e0('0x5d')]=function(_0x522cdb,_0x4a8335){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x522cdb[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x4a8335,null))[_0x47e0('0x24')](function(_0x365398){if(_0x365398){return _0x365398[_0x47e0('0x5d')](_0x522cdb['body'][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x522cdb[_0x47e0('0x5b')],[_0x47e0('0x5e'),'id'])||{});}})['then'](respondWithResult(_0x4a8335,null))[_0x47e0('0x1d')](handleError(_0x4a8335,null));};function validateUser(_0xe25f71){return new Promise(function(_0x3baf9b,_0x28903e){if(_0xe25f71['internal'])return _0x3baf9b(_0xe25f71);return db[_0x47e0('0x60')]['findById'](0x1)[_0x47e0('0x24')](function(_0x574753){if(_0x574753[_0x47e0('0x61')])authService[_0x47e0('0x62')](_0xe25f71[_0x47e0('0x3d')]);db[_0x47e0('0x39')][_0x47e0('0x63')](_0x47e0('0x64'))[_0x47e0('0x24')](function(_0x5cc2a6){if(_[_0x47e0('0x65')](_0x5cc2a6)){_0xe25f71['internal']=_0x574753[_0x47e0('0x66')]||0x1;return;}if(_['isNil'](_0x574753[_0x47e0('0x66')])||_0x574753[_0x47e0('0x66')]===_0x5cc2a6){_0xe25f71[_0x47e0('0x64')]=_0x5cc2a6+0x1;return;}if(_0x574753[_0x47e0('0x66')]>_0x5cc2a6){_0xe25f71[_0x47e0('0x64')]=_0x574753[_0x47e0('0x66')];return;}return db[_0x47e0('0x67')][_0x47e0('0x40')](_0x47e0('0x68'),{'type':db[_0x47e0('0x67')][_0x47e0('0x69')][_0x47e0('0x6a')]})['then'](function(_0x1b4e11){if(_0x1b4e11&&_0x1b4e11['length']){for(var _0x24c114=0x0,_0x5eda51=_0x1b4e11['length'];_0x24c114<_0x5eda51&&_['isNil'](_0xe25f71['internal']);_0x24c114++){if(_0x574753[_0x47e0('0x66')]<=_0x1b4e11[_0x24c114]['from']){_0xe25f71[_0x47e0('0x64')]=_0x1b4e11[_0x24c114][_0x47e0('0x6b')];}else if(_0x574753[_0x47e0('0x66')]>_0x1b4e11[_0x24c114][_0x47e0('0x6b')]&&_0x574753[_0x47e0('0x66')]<=_0x1b4e11[_0x24c114]['to']){_0xe25f71[_0x47e0('0x64')]=_0x574753['min_internal'];}}}if(_[_0x47e0('0x65')](_0xe25f71['internal'])){_0xe25f71[_0x47e0('0x64')]=_0x5cc2a6+0x1;}return _0x3baf9b(_0xe25f71);});});})[_0x47e0('0x1d')](function(_0x4091b5){_0x28903e(_0x4091b5);});});}function updateUser(_0x562fbe){return new Promise(function(_0x56c63b,_0x402853){try{if(_0x562fbe['voicemail']){_0x562fbe['mailbox']=_0x562fbe[_0x47e0('0x64')];_0x562fbe[_0x47e0('0x6c')]={'mailbox':_0x562fbe[_0x47e0('0x64')],'password':_0x562fbe[_0x47e0('0x3d')],'fullname':_0x562fbe[_0x47e0('0x6d')],'email':_0x562fbe[_0x47e0('0x6e')]};}if(_0x562fbe[_0x47e0('0x28')]==='agent'){if(!_0x562fbe[_0x47e0('0x6f')])_0x562fbe[_0x47e0('0x6f')]=[_0x47e0('0x70'),'102','103',_0x47e0('0x71'),_0x47e0('0x72'),_0x47e0('0x73'),_0x47e0('0x74'),_0x47e0('0x75'),'107',_0x47e0('0x76'),_0x47e0('0x77'),_0x47e0('0x78'),_0x47e0('0x79'),_0x47e0('0x7a'),_0x47e0('0x7b')];}_0x56c63b(_0x562fbe);}catch(_0x1b3046){_0x402853(_0x1b3046);}});}exports[_0x47e0('0x7c')]=function(_0x5409a1,_0x3082fa){if(_0x5409a1[_0x47e0('0x2b')][_0x47e0('0x28')]===_0x47e0('0x2d'))throw new Error(_0x47e0('0x7d'));if(_0x5409a1[_0x47e0('0x5b')][_0x47e0('0x28')]===_0x47e0('0x2b')&&_0x5409a1[_0x47e0('0x2b')][_0x47e0('0x28')]!==_0x47e0('0x29')){throw new Error(_0x47e0('0x7e'));}if(_0x5409a1['body']['role']==='admin'&&_0x5409a1[_0x47e0('0x2b')][_0x47e0('0x28')]!==_0x47e0('0x29')){throw new Error(_0x47e0('0x7f'));}return licenseUtil['checkUserLimits']([_0x5409a1['body']])[_0x47e0('0x24')](function(){return validateUser(_0x5409a1['body']);})['then'](function(_0x4ac115){return updateUser(_0x4ac115)[_0x47e0('0x24')](function(_0x551684){if(_0x551684['role']===_0x47e0('0x29')){_0x551684[_0x47e0('0x80')]=_0x5409a1['user'][_0x47e0('0x80')];delete _0x551684['userProfileId'];}return _0x551684;});})[_0x47e0('0x24')](function(_0x23f223){return db[_0x47e0('0x39')][_0x47e0('0x7c')](_0x23f223,{'include':[{'model':db[_0x47e0('0x6c')],'as':_0x47e0('0x6c')}]});})[_0x47e0('0x24')](function(_0x2057a0){if(_0x5409a1[_0x47e0('0x5b')][_0x47e0('0x28')]===_0x47e0('0x2b'))return _0x2057a0;if(_0x5409a1['user'][_0x47e0('0x28')]!==_0x47e0('0x2b'))return _0x2057a0;return db[_0x47e0('0x81')][_0x47e0('0x33')]({'where':{'name':_0x2057a0['role']===_0x47e0('0x2d')?_0x47e0('0x2c'):'Telephones','userProfileId':_0x5409a1['user'][_0x47e0('0x82')]},'raw':!![]})[_0x47e0('0x24')](function(_0x5dfe02){if(!_0x5dfe02||_0x5dfe02[_0x47e0('0x83')]!=0x0)return _0x2057a0;return db[_0x47e0('0x36')][_0x47e0('0x7c')]({'name':_0x2057a0['name'],'resourceId':_0x2057a0['id'],'type':_0x5dfe02[_0x47e0('0x35')],'sectionId':_0x5dfe02['id']},{})[_0x47e0('0x24')](function(){return _0x2057a0;});})[_0x47e0('0x1d')](function(_0x473b2e){logger[_0x47e0('0x19')](_0x47e0('0x84'),_0x473b2e);throw _0x473b2e;});})[_0x47e0('0x24')](respondWithResult(_0x3082fa,0xc9))[_0x47e0('0x1d')](handleError(_0x3082fa,null));};exports['bulkCreate']=function(_0x350982,_0x1b9d98){var _0xc4764d=_0x350982[_0x47e0('0x5b')];var _0x2af153=[];if(_0x350982[_0x47e0('0x2b')][_0x47e0('0x28')]===_0x47e0('0x2d'))throw new Error('Unauthorized');if(_[_0x47e0('0x85')](_0xc4764d,['role',_0x47e0('0x2b')])&&_0x350982[_0x47e0('0x2b')][_0x47e0('0x28')]!==_0x47e0('0x29')){throw new Error(_0x47e0('0x7e'));}if(_[_0x47e0('0x85')](_0xc4764d,[_0x47e0('0x28'),_0x47e0('0x29')])&&_0x350982[_0x47e0('0x2b')][_0x47e0('0x28')]!=='admin'){throw new Error(_0x47e0('0x86'));}return licenseUtil[_0x47e0('0x87')](_0xc4764d)['then'](function(){return validateUser(_0xc4764d[0x0]);})[_0x47e0('0x24')](function(){for(var _0x2f2977=0x1;_0x2f2977<_0xc4764d[_0x47e0('0x59')];_0x2f2977++){var _0x2e99a9=_0xc4764d[_0x2f2977-0x1][_0x47e0('0x64')];if(!_0xc4764d[_0x2f2977][_0x47e0('0x64')])_0xc4764d[_0x2f2977][_0x47e0('0x64')]=_0x2e99a9+0x1;_0x2af153['push'](validateUser(_0xc4764d[_0x2f2977]));}return Promise[_0x47e0('0x88')](_0x2af153);})[_0x47e0('0x24')](function(){_0x2af153=[];for(var _0x301b18=0x0;_0x301b18<_0xc4764d[_0x47e0('0x59')];_0x301b18++){_0x2af153[_0x47e0('0x47')](updateUser(_0xc4764d[_0x301b18]));}return Promise['all'](_0x2af153);})[_0x47e0('0x24')](function(){_0x2af153=_0xc4764d[_0x47e0('0x31')](function(_0x58f7c5){return db[_0x47e0('0x39')][_0x47e0('0x7c')](_0x58f7c5,{'include':[{'model':db[_0x47e0('0x6c')],'as':'VoiceMail'}]})[_0x47e0('0x24')](function(_0xde062f){_0x58f7c5['id']=_0xde062f['id'];return _0x58f7c5;});});return Promise[_0x47e0('0x88')](_0x2af153);})[_0x47e0('0x24')](function(_0x46d779){if(_0x350982[_0x47e0('0x5b')]['role']==='user')return _0x46d779;if(_0x350982[_0x47e0('0x2b')]['role']!==_0x47e0('0x2b'))return _0x46d779;var _0x8722eb=_[_0x47e0('0x85')](_0x46d779,function(_0x422992){return _0x422992[_0x47e0('0x28')]===_0x47e0('0x2d')||_0x422992[_0x47e0('0x28')]===_0x47e0('0x2e');});if(!_0x8722eb)return _0x46d779;return db['UserProfileSection']['findAll']({'where':{'name':{'$or':[_0x47e0('0x2c'),_0x47e0('0x89')]},'userProfileId':_0x350982['user']['userProfileId']},'raw':!![]})[_0x47e0('0x24')](function(_0x47b1b4){if(_['isEmpty'](_0x47b1b4)||!_[_0x47e0('0x85')](_0x47b1b4,[_0x47e0('0x83'),0x0]))return _0x46d779;_0x2af153=[];var _0x3783e2=_(_0x47b1b4)[_0x47e0('0x31')](function(_0x58a4e7){if(_0x58a4e7[_0x47e0('0x83')]===0x1)return;return _0x58a4e7[_0x47e0('0x35')]===_0x47e0('0x2c')?_0x47e0('0x2d'):_0x47e0('0x2e');})['compact']()[_0x47e0('0x34')]();for(var _0x331852=0x0;_0x331852<_0x46d779[_0x47e0('0x59')];_0x331852++){if(!_[_0x47e0('0x32')](_0x3783e2,_0x46d779[_0x331852][_0x47e0('0x28')]))return;var _0x44d30f=_0x46d779[_0x331852][_0x47e0('0x28')]===_0x47e0('0x2d')?_0x47e0('0x2c'):_0x47e0('0x89');_0x2af153[_0x47e0('0x47')](db[_0x47e0('0x36')][_0x47e0('0x7c')]({'name':_0x46d779[_0x331852][_0x47e0('0x35')],'resourceId':_0x46d779[_0x331852]['id'],'type':_0x44d30f,'sectionId':_['find'](_0x47b1b4,[_0x47e0('0x35'),_0x44d30f])['id']},{}));}return Promise[_0x47e0('0x88')](_0x2af153);});})[_0x47e0('0x24')](respondWithResult(_0x1b9d98,0xc9))[_0x47e0('0x1d')](handleError(_0x1b9d98,null));};exports[_0x47e0('0x8a')]=function(_0x39e29f,_0x211c73){if(_0x39e29f['body']['id']){delete _0x39e29f[_0x47e0('0x5b')]['id'];}return db['User'][_0x47e0('0x33')]({'where':{'id':_0x39e29f[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](function(_0x2d46ce){if(!_0x2d46ce)return null;if(_0x2d46ce['id']===_0x39e29f[_0x47e0('0x2b')]['id']){if(!_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8b')]||!_0x39e29f['body'][_0x47e0('0x8c')]){throw new db[(_0x47e0('0x8d'))]['ValidationError'](_0x47e0('0x8e'));}if(!_0x2d46ce[_0x47e0('0x8f')](_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8b')])){throw new db[(_0x47e0('0x8d'))][(_0x47e0('0x90'))]('Wrong\x20credentials');}if(_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8b')]===_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')]){throw new db[(_0x47e0('0x8d'))][(_0x47e0('0x90'))]('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x39e29f[_0x47e0('0x2b')][_0x47e0('0x28')]===_0x47e0('0x29')){if(!_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')]){throw new db[(_0x47e0('0x8d'))][(_0x47e0('0x90'))](_0x47e0('0x91'));}}else if(_0x39e29f['user'][_0x47e0('0x28')]===_0x47e0('0x2b')){if(!_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')]){throw new db['Sequelize'][(_0x47e0('0x90'))](_0x47e0('0x91'));}if(_0x2d46ce[_0x47e0('0x28')]!==_0x47e0('0x2d')){throw new db['Sequelize'][(_0x47e0('0x90'))]('Unauthorized');}}else{throw new db[(_0x47e0('0x8d'))]['ValidationError'](_0x47e0('0x7d'));}return _0x2d46ce;})[_0x47e0('0x24')](handleEntityNotFound(_0x211c73,null))[_0x47e0('0x24')](function(_0x477edb){return db['Setting'][_0x47e0('0x92')]({'attributes':['id',_0x47e0('0x61'),'enforcePasswordHistory','passwordHistoryLimit']})[_0x47e0('0x24')](function(_0x27ab06){if(_0x27ab06[_0x47e0('0x61')])authService[_0x47e0('0x62')](_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')]);if(!_0x27ab06[_0x47e0('0x93')]||!_0x477edb[_0x47e0('0x94')])return _0x477edb;authService[_0x47e0('0x95')](_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')],_0x477edb['previousPasswords'],_0x27ab06['passwordHistoryLimit']);return _0x477edb;})[_0x47e0('0x24')](saveUpdates({'password':_0x39e29f[_0x47e0('0x5b')][_0x47e0('0x8c')],'passwordResetAt':_0x39e29f[_0x47e0('0x2b')]['id']==_0x39e29f[_0x47e0('0x52')]['id']?moment():null,'previousPasswords':authService[_0x47e0('0x96')](_0x39e29f['body'][_0x47e0('0x8c')],_0x477edb[_0x47e0('0x94')])},null));})['then'](respondWithResult(_0x211c73,null))[_0x47e0('0x1d')](handleError(_0x211c73,null));};exports['addQueues']=function(_0x1cf8ba,_0x214c7d){var _0x50f10b=_0x1cf8ba[_0x47e0('0x5b')]['channel'];return db[_0x47e0('0x39')]['find']({'where':{'id':_0x1cf8ba[_0x47e0('0x52')]['id']},'attributes':['id',_0x47e0('0x35'),_0x47e0('0x28'),_0x47e0('0x97'),_0x47e0('0x98'),_0x47e0('0x99'),'interface']})[_0x47e0('0x24')](handleEntityNotFound(_0x214c7d,null))[_0x47e0('0x24')](function(_0xb83aad){if(_0xb83aad){if(!utils[_0x47e0('0x9a')](_0x50f10b)){throw new db['Sequelize']['ValidationError'](_0x47e0('0x9b'));}return _0xb83aad[_0x47e0('0x9c')+_[_0x47e0('0x9d')](_0x50f10b['toLowerCase']())+'Queues'](_0x1cf8ba[_0x47e0('0x5b')][_0x47e0('0x5e')],{'penalty':_0x1cf8ba[_0x47e0('0x5b')]['penalty']||0x0})[_0x47e0('0x9e')](function(_0x24637d){for(var _0x26504b=0x0;_0x26504b<_0x1cf8ba[_0x47e0('0x5b')][_0x47e0('0x5e')]['length'];_0x26504b+=0x1){var _0x19eec0={'UserId':Number(_0x1cf8ba[_0x47e0('0x52')]['id'])};_0x19eec0[_[_0x47e0('0x9d')](_0x50f10b[_0x47e0('0x9f')]())+'QueueId']=Number(_0x1cf8ba[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x26504b]);socket[_0x47e0('0x25')](_0x47e0('0x2b')+_[_0x47e0('0x9d')](_0x50f10b[_0x47e0('0x9f')]())+'Queue:save',_0x19eec0);}return _0x24637d;})[_0x47e0('0x24')](function(){if(_0x50f10b===_0x47e0('0xa0')){return db['VoiceQueue']['findAll']({'where':{'id':_0x1cf8ba[_0x47e0('0x5b')][_0x47e0('0x5e')]||[]},'raw':!![],'attributes':['id',_0x47e0('0x35')]});}})[_0x47e0('0x24')](function(_0x4e9cc4){var _0x54578e=_0xb83aad[_0x47e0('0x27')]({'plain':!![]});var _0xf5d53c=[];if(_0x50f10b===_0x47e0('0xa0')&&_0x54578e[_0x47e0('0x28')]==='agent'&&_0x54578e[_0x47e0('0x97')]){for(let _0xd32cac=0x0;_0xd32cac<_0x4e9cc4[_0x47e0('0x59')];_0xd32cac+=0x1){_0xf5d53c['push']({'membername':_0x54578e[_0x47e0('0x35')],'UserId':_0x54578e['id'],'queue_name':_0x4e9cc4[_0xd32cac][_0x47e0('0x35')],'VoiceQueueId':_0x4e9cc4[_0xd32cac]['id'],'interface':_[_0x47e0('0x65')](_0x54578e[_0x47e0('0xa1')])?util[_0x47e0('0xa2')](_0x47e0('0xa3'),_0x54578e['name']):_0x54578e['interface'],'paused':_0x54578e[_0x47e0('0x99')]||![],'penalty':_0x1cf8ba[_0x47e0('0x5b')][_0x47e0('0xa4')]||0x0});}return Promise[_0x47e0('0x88')](_0xf5d53c[_0x47e0('0x31')](function(_0x43ac09){return db['UserVoiceQueueRt'][_0x47e0('0xa5')](_0x43ac09);}));}return _0xb83aad;});}})[_0x47e0('0x24')](respondWithStatusCode(_0x214c7d,null))[_0x47e0('0x1d')](handleError(_0x214c7d,null));};exports[_0x47e0('0xa6')]=function(_0x3a9448,_0x342880){var _0x56b775,_0x209792;return db[_0x47e0('0x39')]['find']({'where':{'id':_0x3a9448[_0x47e0('0x52')]['id']},'attributes':['id',_0x47e0('0x35'),'role']})[_0x47e0('0x24')](handleEntityNotFound(_0x342880,null))[_0x47e0('0x24')](function(_0x2a1133){if(_0x2a1133){_0x56b775=_0x2a1133;if(!_0x3a9448[_0x47e0('0x40')]['channel']||!utils[_0x47e0('0x9a')](_0x3a9448[_0x47e0('0x40')][_0x47e0('0xa7')])){throw new db['Sequelize']['ValidationError'](_0x47e0('0x9b'));}return _0x2a1133[_0x47e0('0xa8')+_[_0x47e0('0x9d')](_0x3a9448[_0x47e0('0x40')][_0x47e0('0xa7')][_0x47e0('0x9f')]())+_0x47e0('0xa9')](_0x3a9448[_0x47e0('0x40')][_0x47e0('0x5e')]);}})[_0x47e0('0x24')](function(_0x2fcbdf){if(_['isArray'](_0x3a9448[_0x47e0('0x40')][_0x47e0('0x5e')])){for(var _0x542208=0x0;_0x542208<_0x3a9448[_0x47e0('0x40')][_0x47e0('0x5e')][_0x47e0('0x59')];_0x542208+=0x1){_0x209792={'UserId':Number(_0x3a9448[_0x47e0('0x52')]['id'])};_0x209792[_[_0x47e0('0x9d')](_0x3a9448[_0x47e0('0x40')]['channel'][_0x47e0('0x9f')]())+_0x47e0('0xaa')]=Number(_0x3a9448['query'][_0x47e0('0x5e')][_0x542208]);socket[_0x47e0('0x25')](_0x47e0('0x2b')+_['capitalize'](_0x3a9448[_0x47e0('0x40')][_0x47e0('0xa7')][_0x47e0('0x9f')]())+_0x47e0('0xab'),_0x209792);}}else{_0x209792={'UserId':Number(_0x3a9448[_0x47e0('0x52')]['id'])};_0x209792[_[_0x47e0('0x9d')](_0x3a9448[_0x47e0('0x40')][_0x47e0('0xa7')][_0x47e0('0x9f')]())+_0x47e0('0xaa')]=Number(_0x3a9448[_0x47e0('0x40')][_0x47e0('0x5e')]);socket[_0x47e0('0x25')](_0x47e0('0x2b')+_[_0x47e0('0x9d')](_0x3a9448[_0x47e0('0x40')]['channel']['toLowerCase']())+'Queue:remove',_0x209792);}return _0x2fcbdf;})['then'](function(){if(_0x3a9448[_0x47e0('0x40')][_0x47e0('0xa7')]===_0x47e0('0xa0')){return db['UserVoiceQueueRt']['destroy']({'where':{'UserId':_0x3a9448['params']['id'],'VoiceQueueId':_0x3a9448[_0x47e0('0x40')][_0x47e0('0x5e')]},'individualHooks':!![]})[_0x47e0('0x24')](function(){return _0x56b775;});}return _0x56b775;})[_0x47e0('0x24')](respondWithStatusCode(_0x342880,null))[_0x47e0('0x1d')](handleError(_0x342880,null));};exports[_0x47e0('0xac')]=function(_0x4b4ecc,_0x2da74a){_0x4b4ecc[_0x47e0('0x5b')][_0x47e0('0xad')]=_0x4b4ecc[_0x47e0('0xae')][_0x47e0('0xaf')];return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x4b4ecc[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x2da74a,null))[_0x47e0('0x24')](saveUpdates(_0x4b4ecc['body'],null))[_0x47e0('0x24')](respondWithResult(_0x2da74a,null))['catch'](handleError(_0x2da74a,null));};exports['getAvatar']=function(_0x143c5f,_0x571fa7){var _0x1c0f4e=path[_0x47e0('0xb0')](config[_0x47e0('0xb1')],'server/files/images/logos/default_profile.png');return db['User'][_0x47e0('0x33')]({'where':{'id':_0x143c5f[_0x47e0('0x52')]['id']},'attributes':['id',_0x47e0('0xad')],'raw':!![]})['then'](handleEntityNotFound(_0x571fa7,null))[_0x47e0('0x24')](function(_0x2c3eec){if(_0x2c3eec){if(_[_0x47e0('0x65')](_0x2c3eec[_0x47e0('0xad')])){return _0x571fa7['download'](_0x1c0f4e);}else{if(!fs[_0x47e0('0xb2')](path[_0x47e0('0xb0')](config[_0x47e0('0xb1')],_0x47e0('0xb3'),_0x2c3eec['userpic']))){return _0x571fa7[_0x47e0('0xb4')](_0x1c0f4e);}return _0x571fa7[_0x47e0('0xb4')](path['join'](config[_0x47e0('0xb1')],'server/files/images/',_0x2c3eec['userpic']));}}})[_0x47e0('0x1d')](handleError(_0x571fa7,null));};exports['getOpenTabs']=function(_0x43bac0,_0x596ca2){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x43bac0[_0x47e0('0x52')]['id']},'attributes':['id']})[_0x47e0('0x24')](handleEntityNotFound(_0x596ca2,null))[_0x47e0('0x24')](function(_0xbb038b){var _0x1fbed6=[];values=_0xbb038b[_0x47e0('0x4d')];_0x1fbed6[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4b'),_0xbb038b[_0x47e0('0x4d')]));_0x1fbed6[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4c'),_0xbb038b[_0x47e0('0x4d')]));_0x1fbed6['push'](get_open_tabs(_0x47e0('0x4f'),_0xbb038b[_0x47e0('0x4d')]));_0x1fbed6['push'](get_open_tabs('whatsapp',_0xbb038b[_0x47e0('0x4d')]));_0x1fbed6['push'](get_open_tabs(_0x47e0('0x5a'),_0xbb038b[_0x47e0('0x4d')]));_0x1fbed6[_0x47e0('0x47')](get_open_tabs(_0x47e0('0x4e'),_0xbb038b[_0x47e0('0x4d')]));return Promise[_0x47e0('0x88')](_0x1fbed6);})[_0x47e0('0x24')](function(_0x58b997){if(_0x58b997){var _0x3f19f3=_[_0x47e0('0x31')](values[_0x47e0('0xb5')],function(_0x2a79e3){return{'channel':'CHAT','id':_0x2a79e3['id'],'createdAt':_0x2a79e3[_0x47e0('0xb6')]};});var _0x59af8c=_['map'](values[_0x47e0('0xb7')],function(_0x3d2773){return{'channel':_0x47e0('0xb8'),'id':_0x3d2773['id'],'createdAt':_0x3d2773['createdAt']};});var _0x23ca71=_[_0x47e0('0x31')](values['OpenchannelOpenTabs'],function(_0x2c1802){return{'channel':_0x47e0('0xb9'),'id':_0x2c1802['id'],'createdAt':_0x2c1802[_0x47e0('0xb6')]};});var _0x50d8d8=_['map'](values['MailOpenTabs'],function(_0x34c42f){return{'channel':_0x47e0('0xba'),'id':_0x34c42f['id'],'createdAt':_0x34c42f[_0x47e0('0xb6')]};});var _0x1b89cc=_[_0x47e0('0x31')](values['SmsOpenTabs'],function(_0x2760eb){return{'channel':_0x47e0('0xbb'),'id':_0x2760eb['id'],'createdAt':_0x2760eb[_0x47e0('0xb6')]};});var _0x46a68f=_[_0x47e0('0x31')](values[_0x47e0('0xbc')],function(_0x55062f){return{'channel':'WHATSAPP','id':_0x55062f['id'],'createdAt':_0x55062f['createdAt']};});var _0xe8aba0=_[_0x47e0('0xbd')](_0x3f19f3,_0x59af8c,_0x23ca71,_0x50d8d8,_0x1b89cc,_0x46a68f);var _0x2932bc={'count':_0xe8aba0['length'],'rows':_0xe8aba0};return _0x2932bc;}else return null;})[_0x47e0('0x24')](respondWithResult(_0x596ca2,null))[_0x47e0('0x1d')](handleError(_0x596ca2,null));};exports[_0x47e0('0xbe')]=function(_0xde7c81,_0x3c9875){var _0x27b8b9={};var _0x306162={};var _0x1fbad3;var _0x23575c;return db[_0x47e0('0x39')]['findOne']({'where':{'id':_0xde7c81[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x3c9875,null))[_0x47e0('0x24')](function(_0x5641b3){if(_0x5641b3){_0x1fbad3=_0x5641b3;_0x306162['model']=_[_0x47e0('0x55')](db[_0x47e0('0xbf')][_0x47e0('0x3a')]);_0x306162[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0xde7c81['query']);_0x306162[_0x47e0('0x56')]=_['intersection'](_0x306162[_0x47e0('0x53')],_0x306162[_0x47e0('0x40')]);_0x27b8b9[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x306162['model'],qs[_0x47e0('0x58')](_0xde7c81['query'][_0x47e0('0x58')]));_0x27b8b9[_0x47e0('0x46')]=_0x27b8b9[_0x47e0('0x46')][_0x47e0('0x59')]?_0x27b8b9[_0x47e0('0x46')]:_0x306162['model'];_0x27b8b9[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0xde7c81[_0x47e0('0x40')]['sort']);_0x27b8b9[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0xde7c81['query'],_0x306162[_0x47e0('0x56')]));if(_0xde7c81['query'][_0x47e0('0x2f')]){_0x27b8b9[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x27b8b9[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x27b8b9[_0x47e0('0x46')],function(_0xccd84f){var _0x3deb3c={};_0x3deb3c[_0xccd84f]={'$like':'%'+_0xde7c81[_0x47e0('0x40')]['filter']+'%'};return _0x3deb3c;})});}_0x27b8b9=_['merge']({},_0x27b8b9,_0xde7c81['options']);return _0x1fbad3[_0x47e0('0xbe')](_0x27b8b9);}})[_0x47e0('0x24')](function(_0x2ebcc2){if(_0x2ebcc2){_0x23575c=_0x2ebcc2['length'];if(_0xde7c81[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0x41'))){_0x27b8b9[_0x47e0('0x42')]=[{'model':db[_0x47e0('0xc5')],'as':'List','required':![]},{'model':db[_0x47e0('0xc6')],'as':_0x47e0('0xc7'),'attributes':['id','name','color'],'where':_0xde7c81[_0x47e0('0x40')][_0x47e0('0xc8')]?{'id':_0xde7c81[_0x47e0('0x40')][_0x47e0('0xc8')]}:undefined,'required':_0xde7c81['query']['tag']?!![]:![]}];}if(!_0xde7c81['query'][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x27b8b9[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0xde7c81[_0x47e0('0x40')][_0x47e0('0x22')]);_0x27b8b9['offset']=qs[_0x47e0('0x1f')](_0xde7c81[_0x47e0('0x40')]['offset']);}return _0x1fbad3[_0x47e0('0xbe')](_0x27b8b9);}})[_0x47e0('0x24')](function(_0x2f0a1d){if(_0x2f0a1d){return _0x2f0a1d?{'count':_0x23575c,'rows':_0x2f0a1d}:null;}})['then'](respondWithResult(_0x3c9875,null))[_0x47e0('0x1d')](handleError(_0x3c9875,null));};exports[_0x47e0('0xca')]=function(_0x12d25a,_0x2979ff){var _0x33c86b;var _0x13982d={};var _0x4b7045;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x12d25a[_0x47e0('0x52')]['id']},'attributes':['id','name',_0x47e0('0x28')]})['then'](handleEntityNotFound(_0x2979ff,null))[_0x47e0('0x24')](function(_0x440d72){if(!utils[_0x47e0('0x9a')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0xa7')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}_0x33c86b=_0x440d72;var _0x209a39={};_0x209a39['model']=_[_0x47e0('0x55')](db[_['capitalize'](_0x12d25a[_0x47e0('0x40')][_0x47e0('0xa7')])+'Queue'][_0x47e0('0x3a')]);_0x209a39[_0x47e0('0x40')]=_['keys'](_0x12d25a[_0x47e0('0x40')]);_0x209a39[_0x47e0('0x56')]=_['intersection'](_0x209a39[_0x47e0('0x53')],_0x209a39[_0x47e0('0x40')]);_0x13982d[_0x47e0('0x46')]=_['intersection'](_0x209a39[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0x58')]));_0x13982d[_0x47e0('0x46')]=_0x13982d[_0x47e0('0x46')][_0x47e0('0x59')]?_0x13982d[_0x47e0('0x46')]:_0x209a39[_0x47e0('0x53')];_0x13982d[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x13982d[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_['pick'](_0x12d25a[_0x47e0('0x40')],_0x209a39[_0x47e0('0x56')]));if(_0x12d25a[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x13982d[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x13982d[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x13982d[_0x47e0('0x46')],function(_0x494014){var _0x4ba8bb={};_0x4ba8bb[_0x494014]={'$like':'%'+_0x12d25a[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x4ba8bb;})});}_0x13982d=_[_0x47e0('0xc3')]({},_0x13982d,_0x12d25a['options']);switch(_0x33c86b[_0x47e0('0x28')]){case'admin':return db[_[_0x47e0('0x9d')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0xa7')])+_0x47e0('0xcb')][_0x47e0('0x48')](_0x13982d);case _0x47e0('0x2b'):case _0x47e0('0x2d'):return _0x33c86b[_0x47e0('0x27')+_[_0x47e0('0x9d')](_0x12d25a[_0x47e0('0x40')]['channel'])+_0x47e0('0xa9')](_0x13982d);default:throw new db[(_0x47e0('0x8d'))]['ValidationError'](_0x47e0('0xcc'));}})[_0x47e0('0x24')](function(_0x3144fb){_0x4b7045=_0x3144fb['length'];if(!_0x12d25a['query'][_0x47e0('0xc4')]('nolimit')){_0x13982d['limit']=qs[_0x47e0('0x22')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0x22')]);_0x13982d['offset']=qs['offset'](_0x12d25a[_0x47e0('0x40')]['offset']);}switch(_0x33c86b[_0x47e0('0x28')]){case _0x47e0('0x29'):return db[_[_0x47e0('0x9d')](_0x12d25a[_0x47e0('0x40')]['channel'])+_0x47e0('0xcb')][_0x47e0('0x48')](_0x13982d);case _0x47e0('0x2b'):case _0x47e0('0x2d'):return _0x33c86b[_0x47e0('0x27')+_[_0x47e0('0x9d')](_0x12d25a[_0x47e0('0x40')][_0x47e0('0xa7')])+_0x47e0('0xa9')](_0x13982d);}})[_0x47e0('0x24')](function(_0x1d31c1){return{'count':_0x4b7045,'rows':_0x1d31c1};})[_0x47e0('0x24')](respondWithResult(_0x2979ff,null))['catch'](handleError(_0x2979ff,null));};exports[_0x47e0('0xcd')]=function(_0xe02f33,_0x13d218){var _0x361195={};var _0x5560a3={};var _0x475b93;var _0x424094;return db['User']['findOne']({'where':{'id':_0xe02f33[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x13d218,null))[_0x47e0('0x24')](function(_0x2d1954){if(_0x2d1954){_0x475b93=_0x2d1954;_0x5560a3[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0xce')][_0x47e0('0x3a')]);_0x5560a3[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0xe02f33[_0x47e0('0x40')]);_0x5560a3[_0x47e0('0x56')]=_['intersection'](_0x5560a3[_0x47e0('0x53')],_0x5560a3[_0x47e0('0x40')]);_0x361195[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x5560a3[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0xe02f33[_0x47e0('0x40')][_0x47e0('0x58')]));_0x361195[_0x47e0('0x46')]=_0x361195[_0x47e0('0x46')]['length']?_0x361195['attributes']:_0x5560a3['model'];_0x361195[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0xe02f33[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x361195[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_['pick'](_0xe02f33[_0x47e0('0x40')],_0x5560a3[_0x47e0('0x56')]));if(_0xe02f33[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x361195[_0x47e0('0x3f')]=_['merge'](_0x361195[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x361195[_0x47e0('0x46')],function(_0xbdd765){var _0x115990={};_0x115990[_0xbdd765]={'$like':'%'+_0xe02f33['query']['filter']+'%'};return _0x115990;})});}_0x361195=_[_0x47e0('0xc3')]({},_0x361195,_0xe02f33['options']);return _0x475b93['getVoiceQueuesRt'](_0x361195);}})[_0x47e0('0x24')](function(_0x34546f){if(_0x34546f){_0x424094=_0x34546f[_0x47e0('0x59')];if(!_0xe02f33[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x361195[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0xe02f33[_0x47e0('0x40')][_0x47e0('0x22')]);_0x361195[_0x47e0('0x1f')]=qs['offset'](_0xe02f33['query']['offset']);}return _0x475b93['getVoiceQueuesRt'](_0x361195);}})[_0x47e0('0x24')](function(_0x1cfb22){if(_0x1cfb22){return _0x1cfb22?{'count':_0x424094,'rows':_0x1cfb22}:null;}})[_0x47e0('0x24')](respondWithResult(_0x13d218,null))['catch'](handleError(_0x13d218,null));};exports[_0x47e0('0xcf')]=function(_0x88f05a,_0x1d1850){var _0x336797={};var _0x370aa6={};var _0x2de797;var _0x492e11;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x88f05a['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x1d1850,null))[_0x47e0('0x24')](function(_0x1b65c4){if(_0x1b65c4){_0x2de797=_0x1b65c4;_0x370aa6[_0x47e0('0x53')]=_['keys'](db['ChatGroup'][_0x47e0('0x3a')]);_0x370aa6[_0x47e0('0x40')]=_['keys'](_0x88f05a[_0x47e0('0x40')]);_0x370aa6[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x370aa6[_0x47e0('0x53')],_0x370aa6['query']);_0x336797[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x370aa6[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x88f05a['query'][_0x47e0('0x58')]));_0x336797[_0x47e0('0x46')]=_0x336797[_0x47e0('0x46')][_0x47e0('0x59')]?_0x336797[_0x47e0('0x46')]:_0x370aa6[_0x47e0('0x53')];_0x336797[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x88f05a['query'][_0x47e0('0xc1')]);_0x336797[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x88f05a[_0x47e0('0x40')],_0x370aa6[_0x47e0('0x56')]));if(_0x88f05a[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x336797[_0x47e0('0x3f')]=_['merge'](_0x336797['where'],{'$or':_[_0x47e0('0x31')](_0x336797['attributes'],function(_0x2b67ca){var _0x45ec1c={};_0x45ec1c[_0x2b67ca]={'$like':'%'+_0x88f05a['query'][_0x47e0('0x2f')]+'%'};return _0x45ec1c;})});}_0x336797=_['merge']({},_0x336797,_0x88f05a['options']);return _0x2de797['getGroups'](_0x336797);}})[_0x47e0('0x24')](function(_0x118cb8){if(_0x118cb8){_0x492e11=_0x118cb8['length'];if(!_0x88f05a[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x336797[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x88f05a['query'][_0x47e0('0x22')]);_0x336797[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x88f05a['query']['offset']);}return _0x2de797[_0x47e0('0xcf')](_0x336797);}})[_0x47e0('0x24')](function(_0x46616c){if(_0x46616c){return _0x46616c?{'count':_0x492e11,'rows':_0x46616c}:null;}})[_0x47e0('0x24')](respondWithResult(_0x1d1850,null))[_0x47e0('0x1d')](handleError(_0x1d1850,null));};exports['getRecordings']=function(_0x6223a2,_0x5e806f){var _0x31a16f={'raw':!![],'where':{}};var _0x224c9a={};var _0x2db7fb={'count':0x0,'rows':[]};return db[_0x47e0('0x39')]['findOne']({'where':{'id':_0x6223a2[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x5e806f,null))['then'](function(_0x5272f3){if(_0x5272f3){_0x224c9a['model']=_[_0x47e0('0x55')](db[_0x47e0('0xd0')][_0x47e0('0x3a')]);_0x224c9a[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x6223a2['query']);_0x224c9a[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x224c9a[_0x47e0('0x53')],_0x224c9a[_0x47e0('0x40')]);_0x31a16f[_0x47e0('0x46')]=_['intersection'](_0x224c9a[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x6223a2[_0x47e0('0x40')][_0x47e0('0x58')]));_0x31a16f['attributes']=_0x31a16f[_0x47e0('0x46')][_0x47e0('0x59')]?_0x31a16f[_0x47e0('0x46')]:_0x224c9a[_0x47e0('0x53')];if(!_0x6223a2['query']['hasOwnProperty']('nolimit')){_0x31a16f[_0x47e0('0x22')]=qs['limit'](_0x6223a2[_0x47e0('0x40')][_0x47e0('0x22')]);_0x31a16f[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x6223a2[_0x47e0('0x40')][_0x47e0('0x1f')]);}_0x31a16f[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x6223a2[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x31a16f[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x6223a2[_0x47e0('0x40')],_0x224c9a['filters']));_0x31a16f['where']['UserId']=_0x5272f3['id'];if(_0x6223a2[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x31a16f[_0x47e0('0x3f')]=_['merge'](_0x31a16f[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x31a16f[_0x47e0('0x46')],function(_0x1fd333){var _0x502d6e={};_0x502d6e[_0x1fd333]={'$like':'%'+_0x6223a2['query'][_0x47e0('0x2f')]+'%'};return _0x502d6e;})});}_0x31a16f=_[_0x47e0('0xc3')]({},_0x31a16f,_0x6223a2[_0x47e0('0xd1')]);return db[_0x47e0('0xd0')][_0x47e0('0x21')]({'where':_0x31a16f[_0x47e0('0x3f')]})[_0x47e0('0x24')](function(_0x41e3d0){_0x2db7fb[_0x47e0('0x21')]=_0x41e3d0;if(_0x6223a2[_0x47e0('0x40')][_0x47e0('0x41')]){_0x31a16f[_0x47e0('0x42')]=[{'all':!![]}];}return db[_0x47e0('0xd0')][_0x47e0('0x48')](_0x31a16f);})[_0x47e0('0x24')](function(_0xac7f72){_0x2db7fb[_0x47e0('0x49')]=_0xac7f72;return _0x2db7fb;});}})[_0x47e0('0x24')](respondWithFilteredResult(_0x5e806f,_0x31a16f))[_0x47e0('0x1d')](handleError(_0x5e806f,null));};exports[_0x47e0('0xd2')]=function(_0x11071e,_0x430226){var _0x5b9e41={'raw':!![],'where':{}};var _0x48daf4={};var _0x272446={'count':0x0,'rows':[]};return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x11071e[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x430226,null))[_0x47e0('0x24')](function(_0x1d38a2){if(_0x1d38a2){_0x48daf4[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0xd3')][_0x47e0('0x3a')]);_0x48daf4['query']=_[_0x47e0('0x55')](_0x11071e[_0x47e0('0x40')]);_0x48daf4[_0x47e0('0x56')]=_['intersection'](_0x48daf4[_0x47e0('0x53')],_0x48daf4[_0x47e0('0x40')]);_0x5b9e41[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x48daf4[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x11071e['query'][_0x47e0('0x58')]));_0x5b9e41[_0x47e0('0x46')]=_0x5b9e41[_0x47e0('0x46')]['length']?_0x5b9e41[_0x47e0('0x46')]:_0x48daf4['model'];if(!_0x11071e[_0x47e0('0x40')][_0x47e0('0xc4')]('nolimit')){_0x5b9e41['limit']=qs[_0x47e0('0x22')](_0x11071e['query'][_0x47e0('0x22')]);_0x5b9e41[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x11071e['query'][_0x47e0('0x1f')]);}_0x5b9e41[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x11071e[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x5b9e41[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x11071e['query'],_0x48daf4[_0x47e0('0x56')]));_0x5b9e41[_0x47e0('0x3f')][_0x47e0('0xd4')]=_0x1d38a2['id'];if(_0x11071e['query'][_0x47e0('0x2f')]){_0x5b9e41[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x5b9e41[_0x47e0('0x3f')],{'$or':_['map'](_0x5b9e41[_0x47e0('0x46')],function(_0x1875cd){var _0x479ea={};_0x479ea[_0x1875cd]={'$like':'%'+_0x11071e[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x479ea;})});}_0x5b9e41=_[_0x47e0('0xc3')]({},_0x5b9e41,_0x11071e['options']);return db[_0x47e0('0xd3')][_0x47e0('0x21')]({'where':_0x5b9e41[_0x47e0('0x3f')]})[_0x47e0('0x24')](function(_0x1453a4){_0x272446['count']=_0x1453a4;if(_0x11071e['query']['includeAll']){_0x5b9e41[_0x47e0('0x42')]=[{'all':!![]}];}return db[_0x47e0('0xd3')][_0x47e0('0x48')](_0x5b9e41);})[_0x47e0('0x24')](function(_0x2e7f2e){_0x272446[_0x47e0('0x49')]=_0x2e7f2e;return _0x272446;});}})['then'](respondWithFilteredResult(_0x430226,_0x5b9e41))[_0x47e0('0x1d')](handleError(_0x430226,null));};exports[_0x47e0('0xd5')]=function(_0x47d265,_0x1d163a){var _0x14917a={};var _0x2e4ebf={};var _0x2901ab;var _0x3180d1;return db['User'][_0x47e0('0x92')]({'where':{'id':_0x47d265[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x1d163a,null))[_0x47e0('0x24')](function(_0x29541c){if(_0x29541c){_0x2901ab=_0x29541c;_0x2e4ebf[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0xd6')][_0x47e0('0x3a')]);_0x2e4ebf[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x47d265[_0x47e0('0x40')]);_0x2e4ebf['filters']=_[_0x47e0('0x57')](_0x2e4ebf[_0x47e0('0x53')],_0x2e4ebf[_0x47e0('0x40')]);_0x14917a['attributes']=_[_0x47e0('0x57')](_0x2e4ebf['model'],qs[_0x47e0('0x58')](_0x47d265[_0x47e0('0x40')]['fields']));_0x14917a[_0x47e0('0x46')]=_0x14917a[_0x47e0('0x46')][_0x47e0('0x59')]?_0x14917a['attributes']:_0x2e4ebf[_0x47e0('0x53')];_0x14917a['order']=qs[_0x47e0('0xc1')](_0x47d265['query'][_0x47e0('0xc1')]);_0x14917a[_0x47e0('0x3f')]=qs['filters'](_[_0x47e0('0xc2')](_0x47d265['query'],_0x2e4ebf[_0x47e0('0x56')]));if(_0x47d265['query'][_0x47e0('0x2f')]){_0x14917a['where']=_[_0x47e0('0xc3')](_0x14917a[_0x47e0('0x3f')],{'$or':_['map'](_0x14917a[_0x47e0('0x46')],function(_0x1c2d89){var _0x4e4004={};_0x4e4004[_0x1c2d89]={'$like':'%'+_0x47d265[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x4e4004;})});}_0x14917a=_[_0x47e0('0xc3')]({},_0x14917a,_0x47d265['options']);return _0x2901ab[_0x47e0('0xd5')](_0x14917a);}})[_0x47e0('0x24')](function(_0x43d55e){if(_0x43d55e){_0x3180d1=_0x43d55e[_0x47e0('0x59')];if(!_0x47d265[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x14917a['limit']=qs[_0x47e0('0x22')](_0x47d265[_0x47e0('0x40')][_0x47e0('0x22')]);_0x14917a[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x47d265[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x2901ab[_0x47e0('0xd5')](_0x14917a);}})[_0x47e0('0x24')](function(_0x9693ff){if(_0x9693ff){return _0x9693ff?{'count':_0x3180d1,'rows':_0x9693ff}:null;}})[_0x47e0('0x24')](respondWithResult(_0x1d163a,null))[_0x47e0('0x1d')](handleError(_0x1d163a,null));};exports['getOpenchannelInteractions']=function(_0x638077,_0x2ef820){var _0xbcf671={};var _0x4d5a14={};var _0xb85534;var _0x188d0b;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x638077[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x2ef820,null))[_0x47e0('0x24')](function(_0x20fc37){if(_0x20fc37){_0xb85534=_0x20fc37;_0x4d5a14[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0xd7')][_0x47e0('0x3a')]);_0x4d5a14[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x638077['query']);_0x4d5a14[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x4d5a14[_0x47e0('0x53')],_0x4d5a14[_0x47e0('0x40')]);_0xbcf671[_0x47e0('0x46')]=_['intersection'](_0x4d5a14['model'],qs[_0x47e0('0x58')](_0x638077[_0x47e0('0x40')][_0x47e0('0x58')]));_0xbcf671['attributes']=_0xbcf671['attributes'][_0x47e0('0x59')]?_0xbcf671[_0x47e0('0x46')]:_0x4d5a14[_0x47e0('0x53')];_0xbcf671[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x638077[_0x47e0('0x40')][_0x47e0('0xc1')]);_0xbcf671[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x638077['query'],_0x4d5a14[_0x47e0('0x56')]));if(_0x638077[_0x47e0('0x40')][_0x47e0('0x2f')]){_0xbcf671[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0xbcf671[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0xbcf671[_0x47e0('0x46')],function(_0x4b9ac9){var _0x1ec59e={};_0x1ec59e[_0x4b9ac9]={'$like':'%'+_0x638077['query'][_0x47e0('0x2f')]+'%'};return _0x1ec59e;})});}_0xbcf671=_[_0x47e0('0xc3')]({},_0xbcf671,_0x638077[_0x47e0('0xd1')]);return _0xb85534[_0x47e0('0xd8')](_0xbcf671);}})['then'](function(_0x335a57){if(_0x335a57){_0x188d0b=_0x335a57[_0x47e0('0x59')];if(!_0x638077['query'][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0xbcf671[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x638077['query'][_0x47e0('0x22')]);_0xbcf671[_0x47e0('0x1f')]=qs['offset'](_0x638077['query']['offset']);}return _0xb85534[_0x47e0('0xd8')](_0xbcf671);}})[_0x47e0('0x24')](function(_0x513f75){if(_0x513f75){return _0x513f75?{'count':_0x188d0b,'rows':_0x513f75}:null;}})[_0x47e0('0x24')](respondWithResult(_0x2ef820,null))['catch'](handleError(_0x2ef820,null));};exports['getMailInteractions']=function(_0x49b6e0,_0x433654){var _0x39f60b={'raw':!![],'where':{}};var _0x1aa2c2={};var _0x1b56d0={'count':0x0,'rows':[]};return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x49b6e0[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x433654,null))[_0x47e0('0x24')](function(_0x12a7ac){if(_0x12a7ac){_0x1aa2c2['model']=_[_0x47e0('0x55')](db['MailInteraction'][_0x47e0('0x3a')]);_0x1aa2c2['query']=_['keys'](_0x49b6e0['query']);_0x1aa2c2[_0x47e0('0x56')]=_['intersection'](_0x1aa2c2['model'],_0x1aa2c2[_0x47e0('0x40')]);_0x39f60b[_0x47e0('0x46')]=_['intersection'](_0x1aa2c2[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x49b6e0[_0x47e0('0x40')][_0x47e0('0x58')]));_0x39f60b[_0x47e0('0x46')]=_0x39f60b['attributes'][_0x47e0('0x59')]?_0x39f60b[_0x47e0('0x46')]:_0x1aa2c2[_0x47e0('0x53')];if(!_0x49b6e0['query'][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x39f60b[_0x47e0('0x22')]=qs['limit'](_0x49b6e0['query'][_0x47e0('0x22')]);_0x39f60b[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x49b6e0[_0x47e0('0x40')][_0x47e0('0x1f')]);}_0x39f60b['order']=qs[_0x47e0('0xc1')](_0x49b6e0['query']['sort']);_0x39f60b[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x49b6e0[_0x47e0('0x40')],_0x1aa2c2[_0x47e0('0x56')]));_0x39f60b[_0x47e0('0x3f')][_0x47e0('0xd4')]=_0x12a7ac['id'];if(_0x49b6e0[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x39f60b[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x39f60b[_0x47e0('0x3f')],{'$or':_['map'](_0x39f60b[_0x47e0('0x46')],function(_0xf68cf0){var _0x380b83={};_0x380b83[_0xf68cf0]={'$like':'%'+_0x49b6e0[_0x47e0('0x40')]['filter']+'%'};return _0x380b83;})});}_0x39f60b=_[_0x47e0('0xc3')]({},_0x39f60b,_0x49b6e0[_0x47e0('0xd1')]);return db[_0x47e0('0xd9')][_0x47e0('0x21')]({'where':_0x39f60b[_0x47e0('0x3f')]})[_0x47e0('0x24')](function(_0x5ddabf){_0x1b56d0[_0x47e0('0x21')]=_0x5ddabf;if(_0x49b6e0[_0x47e0('0x40')][_0x47e0('0x41')]){_0x39f60b['include']=[{'all':!![]}];}return db[_0x47e0('0xd9')]['findAll'](_0x39f60b);})[_0x47e0('0x24')](function(_0x3ede3e){_0x1b56d0[_0x47e0('0x49')]=_0x3ede3e;return _0x1b56d0;});}})[_0x47e0('0x24')](respondWithFilteredResult(_0x433654,_0x39f60b))[_0x47e0('0x1d')](handleError(_0x433654,null));};exports[_0x47e0('0xda')]=function(_0x51738d,_0x6cf129){var _0xf82e6={};var _0x21e66f={};var _0x437aaf;var _0x4660fe;return db[_0x47e0('0x39')]['findOne']({'where':{'id':_0x51738d[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x6cf129,null))[_0x47e0('0x24')](function(_0x485e84){if(_0x485e84){_0x437aaf=_0x485e84;_0x21e66f[_0x47e0('0x53')]=_['keys'](db['SmsInteraction'][_0x47e0('0x3a')]);_0x21e66f['query']=_['keys'](_0x51738d[_0x47e0('0x40')]);_0x21e66f[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x21e66f['model'],_0x21e66f['query']);_0xf82e6[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x21e66f[_0x47e0('0x53')],qs['fields'](_0x51738d[_0x47e0('0x40')][_0x47e0('0x58')]));_0xf82e6['attributes']=_0xf82e6[_0x47e0('0x46')][_0x47e0('0x59')]?_0xf82e6[_0x47e0('0x46')]:_0x21e66f[_0x47e0('0x53')];_0xf82e6[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x51738d['query']['sort']);_0xf82e6[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_['pick'](_0x51738d[_0x47e0('0x40')],_0x21e66f[_0x47e0('0x56')]));if(_0x51738d[_0x47e0('0x40')][_0x47e0('0x2f')]){_0xf82e6[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0xf82e6[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0xf82e6[_0x47e0('0x46')],function(_0x316b77){var _0x19b21e={};_0x19b21e[_0x316b77]={'$like':'%'+_0x51738d[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x19b21e;})});}_0xf82e6=_[_0x47e0('0xc3')]({},_0xf82e6,_0x51738d[_0x47e0('0xd1')]);return _0x437aaf[_0x47e0('0xda')](_0xf82e6);}})[_0x47e0('0x24')](function(_0x377efb){if(_0x377efb){_0x4660fe=_0x377efb['length'];if(!_0x51738d[_0x47e0('0x40')]['hasOwnProperty'](_0x47e0('0xc9'))){_0xf82e6['limit']=qs[_0x47e0('0x22')](_0x51738d[_0x47e0('0x40')][_0x47e0('0x22')]);_0xf82e6[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x51738d[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x437aaf[_0x47e0('0xda')](_0xf82e6);}})['then'](function(_0x4ca0ff){if(_0x4ca0ff){return _0x4ca0ff?{'count':_0x4660fe,'rows':_0x4ca0ff}:null;}})['then'](respondWithResult(_0x6cf129,null))[_0x47e0('0x1d')](handleError(_0x6cf129,null));};exports[_0x47e0('0xdb')]=function(_0x15a115,_0xc9dbb0){var _0x31875c={};var _0x46a3d8={};var _0x3ecd1b;var _0x5555de;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x15a115[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0xc9dbb0,null))[_0x47e0('0x24')](function(_0x548cfc){if(_0x548cfc){_0x3ecd1b=_0x548cfc;_0x46a3d8[_0x47e0('0x53')]=_['keys'](db[_0x47e0('0xdc')][_0x47e0('0x3a')]);_0x46a3d8[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x15a115[_0x47e0('0x40')]);_0x46a3d8[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x46a3d8[_0x47e0('0x53')],_0x46a3d8[_0x47e0('0x40')]);_0x31875c[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x46a3d8[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x15a115['query'][_0x47e0('0x58')]));_0x31875c[_0x47e0('0x46')]=_0x31875c[_0x47e0('0x46')]['length']?_0x31875c[_0x47e0('0x46')]:_0x46a3d8[_0x47e0('0x53')];_0x31875c[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x15a115[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x31875c['where']=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x15a115[_0x47e0('0x40')],_0x46a3d8[_0x47e0('0x56')]));if(_0x15a115[_0x47e0('0x40')]['filter']){_0x31875c[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x31875c['where'],{'$or':_[_0x47e0('0x31')](_0x31875c[_0x47e0('0x46')],function(_0x38496b){var _0x1aa219={};_0x1aa219[_0x38496b]={'$like':'%'+_0x15a115[_0x47e0('0x40')]['filter']+'%'};return _0x1aa219;})});}_0x31875c=_[_0x47e0('0xc3')]({},_0x31875c,_0x15a115[_0x47e0('0xd1')]);return _0x3ecd1b['getFaxInteractions'](_0x31875c);}})[_0x47e0('0x24')](function(_0x5a58f8){if(_0x5a58f8){_0x5555de=_0x5a58f8[_0x47e0('0x59')];if(!_0x15a115[_0x47e0('0x40')][_0x47e0('0xc4')]('nolimit')){_0x31875c[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x15a115['query'][_0x47e0('0x22')]);_0x31875c[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x15a115['query'][_0x47e0('0x1f')]);}return _0x3ecd1b['getFaxInteractions'](_0x31875c);}})[_0x47e0('0x24')](function(_0x4770b2){if(_0x4770b2){return _0x4770b2?{'count':_0x5555de,'rows':_0x4770b2}:null;}})[_0x47e0('0x24')](respondWithResult(_0xc9dbb0,null))[_0x47e0('0x1d')](handleError(_0xc9dbb0,null));};exports[_0x47e0('0xdd')]=function(_0x2e81c9,_0x55b780){var _0x4b3604={};var _0x2dc563={};var _0x5423fe;var _0x40c205;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x2e81c9['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x55b780,null))['then'](function(_0x492f4e){if(_0x492f4e){_0x5423fe=_0x492f4e;_0x2dc563['model']=_['keys'](db[_0x47e0('0xde')][_0x47e0('0x3a')]);_0x2dc563[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x2e81c9[_0x47e0('0x40')]);_0x2dc563[_0x47e0('0x56')]=_['intersection'](_0x2dc563[_0x47e0('0x53')],_0x2dc563[_0x47e0('0x40')]);_0x4b3604['attributes']=_[_0x47e0('0x57')](_0x2dc563[_0x47e0('0x53')],qs['fields'](_0x2e81c9[_0x47e0('0x40')][_0x47e0('0x58')]));_0x4b3604['attributes']=_0x4b3604['attributes'][_0x47e0('0x59')]?_0x4b3604[_0x47e0('0x46')]:_0x2dc563[_0x47e0('0x53')];_0x4b3604['order']=qs[_0x47e0('0xc1')](_0x2e81c9[_0x47e0('0x40')]['sort']);_0x4b3604['where']=qs['filters'](_[_0x47e0('0xc2')](_0x2e81c9[_0x47e0('0x40')],_0x2dc563[_0x47e0('0x56')]));if(_0x2e81c9[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x4b3604[_0x47e0('0x3f')]=_['merge'](_0x4b3604['where'],{'$or':_[_0x47e0('0x31')](_0x4b3604[_0x47e0('0x46')],function(_0xe1fe7d){var _0x3c85e2={};_0x3c85e2[_0xe1fe7d]={'$like':'%'+_0x2e81c9[_0x47e0('0x40')]['filter']+'%'};return _0x3c85e2;})});}_0x4b3604=_[_0x47e0('0xc3')]({},_0x4b3604,_0x2e81c9[_0x47e0('0xd1')]);return _0x5423fe[_0x47e0('0xdd')](_0x4b3604);}})[_0x47e0('0x24')](function(_0x4f877a){if(_0x4f877a){_0x40c205=_0x4f877a[_0x47e0('0x59')];if(!_0x2e81c9[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x4b3604[_0x47e0('0x22')]=qs['limit'](_0x2e81c9['query'][_0x47e0('0x22')]);_0x4b3604[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x2e81c9[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x5423fe[_0x47e0('0xdd')](_0x4b3604);}})['then'](function(_0x407130){if(_0x407130){return _0x407130?{'count':_0x40c205,'rows':_0x407130}:null;}})['then'](respondWithResult(_0x55b780,null))['catch'](handleError(_0x55b780,null));};exports['login']=function(_0x143e91,_0x91747b,_0x3cc0dd){var _0x5e170a;var _0x5740a6;var _0x40bad4;var _0x1032e7=!_['isNil'](_0x143e91[_0x47e0('0x52')]['id'])?_0x143e91['params']['id']:!_[_0x47e0('0x65')](_0x143e91[_0x47e0('0x2b')]['id'])?_0x143e91['user']['id']:null;return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x1032e7,'role':{'$or':[_0x47e0('0x29'),'user',_0x47e0('0x2d')]}},'attributes':['id',_0x47e0('0x35'),_0x47e0('0xdf'),_0x47e0('0xe0'),_0x47e0('0x28'),_0x47e0('0x64'),_0x47e0('0x98')]})[_0x47e0('0x24')](function(_0x21cd0c){if(_0x21cd0c){if(_0x21cd0c[_0x47e0('0x28')]==='agent'){_0x5e170a=_0x21cd0c;if(_0x143e91[_0x47e0('0x5b')]['interface']){_0x40bad4=util[_0x47e0('0xa2')](_0x47e0('0xe1'),_0x5e170a[_0x143e91[_0x47e0('0x5b')][_0x47e0('0xa1')]]);}else if(_0x143e91['body'][_0x47e0('0xe2')]){_0x40bad4=util['format'](_0x47e0('0xa3'),_0x143e91[_0x47e0('0x5b')][_0x47e0('0xe2')]);}else{_0x40bad4=util['format'](_0x47e0('0xa3'),_0x5e170a[_0x47e0('0x35')]);}socket['to'](util[_0x47e0('0xa2')](_0x47e0('0xe3'),_0x5e170a[_0x47e0('0x35')]))[_0x47e0('0x25')](_0x47e0('0xe4'),{'user':{'id':_0x5e170a['id'],'name':_0x5e170a[_0x47e0('0x35')]},'ip':_0x143e91[_0x47e0('0xe5')][_0x47e0('0xe6')]||_0x143e91[_0x47e0('0xe7')][_0x47e0('0xe8')]||_0x143e91[_0x47e0('0xe9')][_0x47e0('0xe8')]||_0x143e91[_0x47e0('0xe7')][_0x47e0('0xe9')][_0x47e0('0xe8')]});return db[_0x47e0('0xce')][_0x47e0('0xea')]({'where':{'membername':_0x5e170a['name']},'individualHooks':!![]});}}else{throw new db[(_0x47e0('0x8d'))][(_0x47e0('0x90'))](_0x47e0('0xeb'));}})[_0x47e0('0x24')](function(){if(_0x5e170a){return _0x5e170a[_0x47e0('0xec')]({'raw':!![]});}})[_0x47e0('0x24')](function(_0x2dd795){if(_0x5e170a){if(_0x2dd795){_0x5740a6=_0x2dd795;if(_0x5740a6[_0x47e0('0x59')]){var _0x57d394=_0x5740a6['map'](function(_0x93a9e4){var _0x2d47fa={'membername':_0x5e170a['name'],'UserId':_0x5e170a['id'],'queue_name':_0x93a9e4[_0x47e0('0x35')],'VoiceQueueId':_0x93a9e4['id'],'interface':_0x40bad4,'paused':_0x5e170a[_0x47e0('0x98')]||![],'penalty':_0x93a9e4[_0x47e0('0xed')]||0x0};return db['UserVoiceQueueRt']['upsert'](_0x2d47fa);});return Promise[_0x47e0('0x88')](_0x57d394);}}}})[_0x47e0('0x24')](function(){if(_0x5e170a){return db[_0x47e0('0xee')][_0x47e0('0x48')]({'where':{'membername':_0x5e170a[_0x47e0('0x35')],'exitAt':null}});}})['then'](function(_0x3d9e59){if(_0x5e170a){var _0x45b935=[];_0x3d9e59['forEach'](function(_0x5087c1){_0x45b935[_0x47e0('0x47')](_0x5087c1[_0x47e0('0x23')]({'exitAt':moment()[_0x47e0('0xa2')](_0x47e0('0xef'))}));});return Promise[_0x47e0('0x88')](_0x45b935);}})[_0x47e0('0x24')](function(){if(_0x5e170a){var _0xe06f6a=[];var _0x5c653c=[];var _0x4a4a60=utils['getChannels']();var _0x538915={'membername':_0x5e170a[_0x47e0('0x35')],'interface':_0x40bad4,'enterAt':moment()[_0x47e0('0xa2')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x5e170a['role'],'internal':_0x5e170a[_0x47e0('0x64')]};_0x4a4a60[_0x47e0('0xf0')](function(_0xca50d5){_0xe06f6a[_0x47e0('0x47')](_['merge']({'channel':_0xca50d5,'type':_0x47e0('0xf1'),'data1':_0x143e91[_0x47e0('0x5b')][_0x47e0('0xf2')],'data2':_0x40bad4},_0x538915));if(_0x5e170a[_0x47e0('0x98')]){_0x5c653c['push'](_['merge']({'channel':_0xca50d5,'type':_0x47e0('0xf3'),'data1':_0x47e0('0xf4')},_0x538915));}});return db[_0x47e0('0xee')][_0x47e0('0xf5')](_0xe06f6a[_0x47e0('0xbd')](_0x5c653c),{'individualHooks':!![]});}})['then'](function(){if(_0x5e170a){return _0x5e170a[_0x47e0('0x23')]({'online':!![],'lastLoginAt':moment()[_0x47e0('0xa2')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x5e170a[_0x47e0('0x98')]||![],'mailPause':_0x5e170a[_0x47e0('0x98')]||![],'chatPause':_0x5e170a[_0x47e0('0x98')]||![],'faxPause':_0x5e170a[_0x47e0('0x98')]||![],'smsPause':_0x5e170a[_0x47e0('0x98')]||![],'openchannelPause':_0x5e170a['loginInPause']||![],'whatsappPause':_0x5e170a['loginInPause']||![],'pauseType':_0x5e170a[_0x47e0('0x98')]?_0x47e0('0xf4'):null,'interface':_0x40bad4,'lastPauseAt':moment()[_0x47e0('0xa2')](_0x47e0('0xef'))});}})[_0x47e0('0x24')](function(_0x41f0e9){if(_0x143e91[_0x47e0('0xf6')]){return _0x3cc0dd();}else{return Promise['resolve'](_0x41f0e9)[_0x47e0('0x24')](respondWithResult(_0x91747b,null));}})[_0x47e0('0x1d')](handleError(_0x91747b,null));};exports['logout']=function(_0x130695,_0x54ca89){var _0xe10df7;return db['User'][_0x47e0('0x33')]({'where':{'id':_0x130695[_0x47e0('0x52')]['id'],'role':'agent'},'attributes':['id','name',_0x47e0('0x28')]})[_0x47e0('0x24')](handleEntityNotFound(_0x54ca89,null))[_0x47e0('0x24')](function(_0x430215){if(_0x430215){_0xe10df7=_0x430215;return db[_0x47e0('0xce')]['destroy']({'where':{'membername':_0xe10df7[_0x47e0('0x35')]},'individualHooks':!![]});}})[_0x47e0('0x24')](function(){return db[_0x47e0('0xee')][_0x47e0('0x48')]({'where':{'membername':_0xe10df7['name'],'exitAt':null}});})[_0x47e0('0x24')](function(_0x4927a7){var _0x53ef52=[];_0x4927a7[_0x47e0('0xf0')](function(_0x599f63){_0x53ef52[_0x47e0('0x47')](_0x599f63[_0x47e0('0x23')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x47e0('0x88')](_0x53ef52);})[_0x47e0('0x24')](function(){return _0xe10df7[_0x47e0('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x47e0('0x24')](respondWithResult(_0x54ca89,null))[_0x47e0('0x1d')](handleError(_0x54ca89,null));};exports[_0x47e0('0xf7')]=function(_0x1ad58c,_0x575e15){var _0x551fe9;return db[_0x47e0('0xce')][_0x47e0('0x23')]({'paused':0x1},{'where':{'UserId':_0x1ad58c[_0x47e0('0x52')]['id']},'individualHooks':!![]})[_0x47e0('0x24')](function(){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x1ad58c[_0x47e0('0x52')]['id'],'role':_0x47e0('0x2d')},'attributes':['id',_0x47e0('0x35'),_0x47e0('0x28'),'internal','interface',_0x47e0('0x97')]});})['then'](handleEntityNotFound(_0x575e15,null))[_0x47e0('0x24')](function(_0x41bea6){if(_0x41bea6){_0x551fe9=_0x41bea6;return respondWithRpcPromise(_0x47e0('0xf8'),_0x47e0('0xf7'),{'id':_0x551fe9['id'],'name':_0x551fe9[_0x47e0('0x35')],'pause':!![]});}})['then'](function(){if(_0x551fe9){return db[_0x47e0('0xee')]['findAll']({'where':{'membername':_0x551fe9['name'],'type':_0x47e0('0xf3'),'exitAt':null}});}})[_0x47e0('0x24')](function(_0x2d4801){if(_0x2d4801[_0x47e0('0x59')]){var _0x2661a1=moment()[_0x47e0('0xa2')](_0x47e0('0xef'));for(var _0x472169=0x0,_0x424cab=_0x2d4801[_0x47e0('0x59')];_0x472169<_0x424cab;_0x472169++){_0x2d4801[_0x472169][_0x47e0('0xf9')]({'exitAt':_0x2661a1});}}})[_0x47e0('0x24')](function(){var _0x3555b1=[];var _0x112c74=utils[_0x47e0('0xfa')]();_0x112c74['forEach'](function(_0x4c816e){_0x3555b1['push']({'channel':_0x4c816e,'membername':_0x551fe9[_0x47e0('0x35')],'interface':_[_0x47e0('0x65')](_0x551fe9['interface'])?util['format'](_0x47e0('0xa3'),_0x551fe9[_0x47e0('0x35')]):_0x551fe9[_0x47e0('0xa1')],'type':_0x47e0('0xf3'),'enterAt':moment()['format'](_0x47e0('0xef')),'data1':_0x1ad58c[_0x47e0('0x5b')][_0x47e0('0x3c')]||_0x47e0('0xfb'),'role':_0x551fe9[_0x47e0('0x28')],'internal':_0x551fe9[_0x47e0('0x64')]});});return db[_0x47e0('0xee')][_0x47e0('0xf5')](_0x3555b1,{'individualHooks':!![]});})[_0x47e0('0x24')](function(){return _0x551fe9[_0x47e0('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x1ad58c[_0x47e0('0x5b')][_0x47e0('0x3c')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x47e0('0xa2')](_0x47e0('0xef'))});})[_0x47e0('0x24')](respondWithResult(_0x575e15,null))[_0x47e0('0x1d')](handleError(_0x575e15,null));};exports[_0x47e0('0xfc')]=function(_0x362584,_0xf32c30){if(_0x362584[_0x47e0('0x5b')][_0x47e0('0xa7')]&&!utils[_0x47e0('0x9a')](_0x362584[_0x47e0('0x5b')][_0x47e0('0xa7')])){throw new APIBadRequestError(util[_0x47e0('0xa2')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x362584[_0x47e0('0x5b')][_0x47e0('0xa7')]));}return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x362584[_0x47e0('0x52')]['id']},'attributes':['id',_0x47e0('0x35'),_0x47e0('0x28'),_0x47e0('0x64'),'interface',_0x47e0('0x97'),_0x47e0('0x99'),_0x47e0('0xfd'),_0x47e0('0xfe'),'faxPause',_0x47e0('0xff'),_0x47e0('0x100'),_0x47e0('0x101'),_0x47e0('0x102'),_0x47e0('0x103')]})[_0x47e0('0x24')](function(_0x20b436){if(!_0x20b436){throw new APINotFoundError(util[_0x47e0('0xa2')]('User\x20with\x20id\x20%s\x20not\x20found',_0x362584['params']['id']));}return _0x20b436['unpause'](_0x362584[_0x47e0('0x5b')][_0x47e0('0xa7')]);})['then'](respondWithResult(_0xf32c30,null))['catch'](APIHandleError(_0xf32c30));};exports[_0x47e0('0x104')]=function(_0x3dd5ef,_0x2c666d){var _0x4ea248={};var _0x453085={};var _0x2e87cb;var _0xb097f0;return db[_0x47e0('0x39')]['findOne']({'where':{'id':_0x3dd5ef[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x2c666d,null))[_0x47e0('0x24')](function(_0x2c9eab){if(_0x2c9eab){_0x2e87cb=_0x2c9eab;_0x453085[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0x105')][_0x47e0('0x3a')]);_0x453085[_0x47e0('0x40')]=_['keys'](_0x3dd5ef[_0x47e0('0x40')]);_0x453085[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x453085['model'],_0x453085[_0x47e0('0x40')]);_0x4ea248[_0x47e0('0x46')]=_['intersection'](_0x453085[_0x47e0('0x53')],qs['fields'](_0x3dd5ef[_0x47e0('0x40')]['fields']));_0x4ea248[_0x47e0('0x46')]=_0x4ea248[_0x47e0('0x46')][_0x47e0('0x59')]?_0x4ea248[_0x47e0('0x46')]:_0x453085['model'];_0x4ea248[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x3dd5ef['query'][_0x47e0('0xc1')]);_0x4ea248[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_['pick'](_0x3dd5ef[_0x47e0('0x40')],_0x453085[_0x47e0('0x56')]));if(_0x3dd5ef[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x4ea248[_0x47e0('0x3f')]=_['merge'](_0x4ea248['where'],{'$or':_[_0x47e0('0x31')](_0x4ea248[_0x47e0('0x46')],function(_0x4c2439){var _0x260d99={};_0x260d99[_0x4c2439]={'$like':'%'+_0x3dd5ef[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x260d99;})});}_0x4ea248=_[_0x47e0('0xc3')]({},_0x4ea248,_0x3dd5ef[_0x47e0('0xd1')]);return _0x2e87cb[_0x47e0('0x104')](_0x4ea248);}})[_0x47e0('0x24')](function(_0x15c96d){if(_0x15c96d){_0xb097f0=_0x15c96d['length'];if(!_0x3dd5ef[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x4ea248[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x3dd5ef[_0x47e0('0x40')][_0x47e0('0x22')]);_0x4ea248[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x3dd5ef[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x2e87cb['getTeams'](_0x4ea248);}})[_0x47e0('0x24')](function(_0x457b64){if(_0x457b64){return _0x457b64?{'count':_0xb097f0,'rows':_0x457b64}:null;}})['then'](respondWithResult(_0x2c666d,null))[_0x47e0('0x1d')](handleError(_0x2c666d,null));};exports[_0x47e0('0x106')]=function(_0x49dc45,_0x16c526){var _0x44ccec=_0x49dc45[_0x47e0('0x52')]['id'];var _0x1f52ca=_0x49dc45[_0x47e0('0x5b')]?_0x49dc45[_0x47e0('0x5b')]['ids']:null;var _0x4e9705=[];return Promise[_0x47e0('0x107')]()[_0x47e0('0x24')](function(){if(!_0x1f52ca)throw new APIBadRequestError(_0x47e0('0x108'));})['then'](function(){return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x44ccec}});})['then'](function(_0x307a00){if(!_0x307a00)throw new APINotFoundError(util[_0x47e0('0xa2')](_0x47e0('0x109'),_0x49dc45['params']['id']));return db[_0x47e0('0x67')][_0x47e0('0x10a')](function(_0x2acdae){return _0x307a00['addTeams'](_0x1f52ca,{'transaction':_0x2acdae})[_0x47e0('0x24')](function(){return db[_0x47e0('0x105')][_0x47e0('0x48')]({'where':{'id':{'$in':_0x1f52ca}}});})[_0x47e0('0x24')](function(_0x373beb){var _0x1ca568=_[_0x47e0('0x31')](_0x373beb,function(_0x1e551f){return _0x1e551f[_0x47e0('0x10b')]();});return Promise[_0x47e0('0x88')](_0x1ca568);})[_0x47e0('0x24')](function(_0x29404a){_0x4e9705=_[_0x47e0('0x10c')](_0x29404a);var _0x5f30fc=_[_0x47e0('0x31')](_0x4e9705,function(_0x1f99f4){return _0x1f99f4[_0x47e0('0x10d')](_0x307a00['id'],{'transaction':_0x2acdae});});return Promise[_0x47e0('0x88')](_0x5f30fc);})[_0x47e0('0x24')](function(){if(!_0x307a00[_0x47e0('0x97')])return;var _0x1191f1=_[_0x47e0('0x2f')](_0x4e9705,function(_0x2da78e){return _0x2da78e['getDataValue'](_0x47e0('0xa7'))==='Voice';});var _0x185a7a=_[_0x47e0('0x31')](_0x1191f1,function(_0x509d38){return db[_0x47e0('0xce')][_0x47e0('0xa5')]({'membername':_0x307a00['name'],'UserId':_0x307a00['id'],'queue_name':_0x509d38['name'],'VoiceQueueId':_0x509d38['id'],'interface':_[_0x47e0('0x65')](_0x307a00[_0x47e0('0xa1')])?util[_0x47e0('0xa2')](_0x47e0('0xa3'),_0x307a00[_0x47e0('0x35')]):_0x307a00[_0x47e0('0xa1')],'paused':_0x307a00['voicePause']||![],'penalty':_0x307a00[_0x47e0('0xa4')]},{'transaction':_0x2acdae});});return Promise['all'](_0x185a7a);})[_0x47e0('0x24')](function(){return db['TeamVoicePrefix']['findAll']({'where':{'teamId':{'$in':_0x1f52ca}}});})[_0x47e0('0x24')](function(_0x130d26){var _0x32a441=_[_0x47e0('0x31')](_0x130d26,function(_0xf1e700){return db[_0x47e0('0x10e')][_0x47e0('0x7c')]({'UserId':_0x307a00['id'],'VoicePrefixId':_0xf1e700[_0x47e0('0x10f')]},{'transaction':_0x2acdae});});return Promise[_0x47e0('0x88')](_0x32a441);});});})[_0x47e0('0x24')](function(){for(var _0x386a11=0x0;_0x386a11<_0x4e9705['length'];_0x386a11++){var _0x3bd643=_0x4e9705[_0x386a11][_0x47e0('0x110')](_0x47e0('0xa7'));var _0x49edf5=_0x3bd643+_0x47e0('0xaa');socket[_0x47e0('0x25')](_0x47e0('0x2b')+_0x3bd643+_0x47e0('0x111'),{'UserId':_0x44ccec,['queueField']:_0x4e9705[_0x386a11]['id']});}})[_0x47e0('0x24')](respondWithStatusCode(_0x16c526,null))[_0x47e0('0x1d')](APIHandleError(_0x16c526));};exports[_0x47e0('0x112')]=function(_0x26b441,_0x3f7826){var _0x405c7a=_0x26b441[_0x47e0('0x52')]['id'];var _0x514853=null;if(_0x26b441[_0x47e0('0x40')]['ids']){_0x514853=_[_0x47e0('0x113')](_0x26b441['query'][_0x47e0('0x5e')])?_0x26b441['query']['ids']:[_0x26b441[_0x47e0('0x40')][_0x47e0('0x5e')]];}var _0x15238e=[];return Promise[_0x47e0('0x107')]()[_0x47e0('0x24')](function(){if(!_0x514853)throw new APIBadRequestError(_0x47e0('0x114'));})['then'](function(){return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x405c7a}});})[_0x47e0('0x24')](function(_0x15865e){if(!_0x15865e)throw new APINotFoundError(util[_0x47e0('0xa2')](_0x47e0('0x109'),_0x26b441['params']['id']));return db[_0x47e0('0x67')]['transaction'](function(_0xffa1e0){return _0x15865e[_0x47e0('0x112')](_0x514853,{'transaction':_0xffa1e0})[_0x47e0('0x24')](function(){return db[_0x47e0('0x105')]['findAll']({'where':{'id':{'$in':_0x514853}}});})['then'](function(_0xa46921){var _0x285ff8=_[_0x47e0('0x31')](_0xa46921,function(_0x2bd455){return _0x2bd455[_0x47e0('0x10b')]();});return Promise[_0x47e0('0x88')](_0x285ff8);})[_0x47e0('0x24')](function(_0x2b1858){_0x15238e=_[_0x47e0('0x10c')](_0x2b1858);var _0x5bbb9f=_[_0x47e0('0x31')](_0x15238e,function(_0x3079b4){return _0x3079b4['removeAgent'](_0x15865e['id'],{'transaction':_0xffa1e0});});return Promise['all'](_0x5bbb9f);})[_0x47e0('0x24')](function(){if(!_0x15865e['online'])return;var _0x8ddb3d=_['filter'](_0x15238e,function(_0x5bdb43){return _0x5bdb43[_0x47e0('0x110')](_0x47e0('0xa7'))==='Voice';});var _0xab24e0=_['map'](_0x8ddb3d,function(_0x25eb20){return db[_0x47e0('0xce')][_0x47e0('0xea')]({'where':{'VoiceQueueId':_0x25eb20['id'],'UserId':_0x15865e['id']},'transaction':_0xffa1e0});});return Promise['all'](_0xab24e0);})[_0x47e0('0x24')](function(){return db['TeamVoicePrefix'][_0x47e0('0x48')]({'where':{'teamId':{'$in':_0x514853}}});})[_0x47e0('0x24')](function(_0x57da44){var _0x103d12=_['map'](_0x57da44,function(_0x2cab05){return db['UserVoicePrefix'][_0x47e0('0xea')]({'where':{'UserId':_0x15865e['id'],'VoicePrefixId':_0x2cab05[_0x47e0('0x10f')]}},{'transaction':_0xffa1e0});});return Promise[_0x47e0('0x88')](_0x103d12);});});})[_0x47e0('0x24')](function(){for(var _0x54765a=0x0;_0x54765a<_0x15238e[_0x47e0('0x59')];_0x54765a++){var _0x28c986=_0x15238e[_0x54765a][_0x47e0('0x110')](_0x47e0('0xa7'));var _0x595f69=_0x28c986+_0x47e0('0xaa');socket[_0x47e0('0x25')](_0x47e0('0x2b')+_0x28c986+_0x47e0('0xab'),{'UserId':_0x405c7a,['queueField']:_0x15238e[_0x54765a]['id']});}})[_0x47e0('0x24')](respondWithStatusCode(_0x3f7826,null))[_0x47e0('0x1d')](APIHandleError(_0x3f7826));};exports[_0x47e0('0x115')]=function(_0x3f101b,_0x2a00da){var _0x1e307a={};var _0x3adb88={};var _0x48257c;var _0x2a493e;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x3f101b[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x2a00da,null))[_0x47e0('0x24')](function(_0x19fe1f){if(_0x19fe1f){_0x48257c=_0x19fe1f;_0x3adb88['model']=_[_0x47e0('0x55')](db['CmList']['rawAttributes']);_0x3adb88['query']=_[_0x47e0('0x55')](_0x3f101b['query']);_0x3adb88['filters']=_[_0x47e0('0x57')](_0x3adb88[_0x47e0('0x53')],_0x3adb88['query']);_0x1e307a['attributes']=_[_0x47e0('0x57')](_0x3adb88[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x3f101b['query'][_0x47e0('0x58')]));_0x1e307a[_0x47e0('0x46')]=_0x1e307a[_0x47e0('0x46')]['length']?_0x1e307a[_0x47e0('0x46')]:_0x3adb88[_0x47e0('0x53')];_0x1e307a[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x3f101b[_0x47e0('0x40')]['sort']);_0x1e307a[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x3f101b[_0x47e0('0x40')],_0x3adb88[_0x47e0('0x56')]));if(_0x3f101b[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x1e307a[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x1e307a['where'],{'$or':_['map'](_0x1e307a[_0x47e0('0x46')],function(_0x230924){var _0x485836={};_0x485836[_0x230924]={'$like':'%'+_0x3f101b[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x485836;})});}_0x1e307a=_[_0x47e0('0xc3')]({},_0x1e307a,_0x3f101b['options']);return _0x48257c[_0x47e0('0x115')](_0x1e307a);}})['then'](function(_0x44eee8){if(_0x44eee8){_0x2a493e=_0x44eee8['length'];if(!_0x3f101b[_0x47e0('0x40')]['hasOwnProperty'](_0x47e0('0xc9'))){_0x1e307a[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x3f101b[_0x47e0('0x40')][_0x47e0('0x22')]);_0x1e307a[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x3f101b['query'][_0x47e0('0x1f')]);}return _0x48257c[_0x47e0('0x115')](_0x1e307a);}})[_0x47e0('0x24')](function(_0x27e9fc){if(_0x27e9fc){return _0x27e9fc?{'count':_0x2a493e,'rows':_0x27e9fc}:null;}})[_0x47e0('0x24')](respondWithResult(_0x2a00da,null))[_0x47e0('0x1d')](handleError(_0x2a00da,null));};exports[_0x47e0('0x116')]=function(_0x3fceb8,_0x23a642){var _0x1104c1={};var _0xb08f3c={};var _0x579c60;return db['User'][_0x47e0('0x92')]({'where':{'id':_0x3fceb8[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x23a642,null))[_0x47e0('0x24')](function(_0x111f78){if(_0x111f78){_0x579c60=_0x111f78;_0xb08f3c[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0x39')]['rawAttributes']);_0xb08f3c[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x3fceb8['query']);_0xb08f3c[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0xb08f3c['model'],_0xb08f3c[_0x47e0('0x40')]);_0x1104c1[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0xb08f3c['model'],qs[_0x47e0('0x58')](_0x3fceb8['query']['fields']));_0x1104c1[_0x47e0('0x46')]=_0x1104c1[_0x47e0('0x46')][_0x47e0('0x59')]?_0x1104c1['attributes']:_0xb08f3c['model'];_0x1104c1[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x3fceb8[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x1104c1['where']=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x3fceb8['query'],_0xb08f3c[_0x47e0('0x56')]));if(_0x3fceb8[_0x47e0('0x40')]['filter']){_0x1104c1[_0x47e0('0x3f')]=_['merge'](_0x1104c1[_0x47e0('0x3f')],{'$or':_['map'](_0x1104c1['attributes'],function(_0x3038ab){var _0x29072a={};_0x29072a[_0x3038ab]={'$like':'%'+_0x3fceb8[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x29072a;})});}_0x1104c1[_0x47e0('0x53')]=db[_0x47e0('0x39')];_0x1104c1['as']=_0x47e0('0x2c');_0x1104c1=_['merge']({},_0x1104c1,_0x3fceb8[_0x47e0('0xd1')]);return _0x579c60[_0x47e0('0xec')]({'include':[_0x1104c1]});}})[_0x47e0('0x24')](function(_0x5507e2){if(_0x5507e2){var _0x4f2c50={},_0x178bfc=[];for(var _0x4c18d7=0x0;_0x4c18d7<_0x5507e2[_0x47e0('0x59')];_0x4c18d7+=0x1){for(var _0x35959e=0x0,_0x312895;_0x35959e<_0x5507e2[_0x4c18d7][_0x47e0('0x2c')][_0x47e0('0x59')];_0x35959e+=0x1){_0x312895=_0x5507e2[_0x4c18d7][_0x47e0('0x2c')][_0x35959e][_0x47e0('0x27')]({'plain':!![]});_0x4f2c50[_0x312895['id']]=_0x312895;}}_0x4f2c50=_[_0x47e0('0x117')](_0x4f2c50);for(var _0x15b0e6=qs[_0x47e0('0x1f')](_0x3fceb8[_0x47e0('0x40')][_0x47e0('0x1f')]);_0x15b0e6<_0x4f2c50['length']&&_0x178bfc[_0x47e0('0x59')]<qs[_0x47e0('0x22')](_0x3fceb8[_0x47e0('0x40')]['limit']);_0x15b0e6+=0x1){if(_0x4f2c50[_0x15b0e6]){_0x178bfc[_0x47e0('0x47')](_0x4f2c50[_0x15b0e6]);}}return{'count':_0x4f2c50[_0x47e0('0x59')],'rows':_0x178bfc};}})['then'](respondWithResult(_0x23a642,null))['catch'](handleError(_0x23a642,null));};exports[_0x47e0('0xea')]=function(_0x26df6d,_0x118aaa){if(_0x26df6d[_0x47e0('0x2b')]['id']==_0x26df6d['params']['id']){return _0x118aaa[_0x47e0('0x1e')](0x1f4)[_0x47e0('0x118')]({'message':_0x47e0('0x119')});}return db['User'][_0x47e0('0x33')]({'where':{'id':_0x26df6d['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x118aaa,null))['then'](removeEntity(_0x118aaa,null))[_0x47e0('0x1d')](handleError(_0x118aaa,null));};exports[_0x47e0('0x11a')]=function(_0x3ecf6e,_0x36dffe){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x3ecf6e[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x36dffe,null))[_0x47e0('0x24')](function(_0xee93ca){if(_0xee93ca){return _0xee93ca[_0x47e0('0x11a')](_0x3ecf6e[_0x47e0('0x5b')][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x3ecf6e[_0x47e0('0x5b')],[_0x47e0('0x5e'),'id'])||{})[_0x47e0('0x9e')](function(){for(var _0x536e6d=0x0;_0x536e6d<_0x3ecf6e[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x47e0('0x59')];_0x536e6d+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x11b'),{'ChatInteractionId':Number(_0x3ecf6e[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x536e6d]),'UserId':Number(_0x3ecf6e['params']['id'])});}return _0x3ecf6e[_0x47e0('0x5b')][_0x47e0('0x5e')];});}})[_0x47e0('0x24')](respondWithResult(_0x36dffe,null))[_0x47e0('0x1d')](handleError(_0x36dffe,null));};exports[_0x47e0('0x11c')]=function(_0x4d74af,_0x399189){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x4d74af['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x399189,null))[_0x47e0('0x24')](function(_0x270acf){if(_0x270acf){return _0x270acf[_0x47e0('0x11c')](_0x4d74af[_0x47e0('0x40')][_0x47e0('0x5e')])[_0x47e0('0x24')](function(){if(_['isArray'](_0x4d74af[_0x47e0('0x40')][_0x47e0('0x5e')])){for(var _0x4d3a95=0x0;_0x4d3a95<_0x4d74af['query'][_0x47e0('0x5e')][_0x47e0('0x59')];_0x4d3a95+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x11d'),{'ChatInteractionId':Number(_0x4d74af[_0x47e0('0x40')][_0x47e0('0x5e')][_0x4d3a95]),'UserId':Number(_0x4d74af['params']['id'])});}}else{socket['emit'](_0x47e0('0x11d'),{'ChatInteractionId':Number(_0x4d74af['query'][_0x47e0('0x5e')]),'UserId':Number(_0x4d74af[_0x47e0('0x52')]['id'])});}});}})[_0x47e0('0x24')](respondWithStatusCode(_0x399189,null))[_0x47e0('0x1d')](handleError(_0x399189,null));};exports['addMailInteractions']=function(_0x3ab950,_0x108365){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x3ab950[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x108365,null))['then'](function(_0x455a70){if(_0x455a70){return _0x455a70[_0x47e0('0x11e')](_0x3ab950[_0x47e0('0x5b')][_0x47e0('0x5e')],_['omit'](_0x3ab950['body'],[_0x47e0('0x5e'),'id'])||{})[_0x47e0('0x9e')](function(){for(var _0x50d94c=0x0;_0x50d94c<_0x3ab950[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x47e0('0x59')];_0x50d94c+=0x1){socket[_0x47e0('0x25')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x3ab950[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x50d94c]),'UserId':Number(_0x3ab950[_0x47e0('0x52')]['id'])});}return _0x3ab950[_0x47e0('0x5b')][_0x47e0('0x5e')];});}})[_0x47e0('0x24')](respondWithResult(_0x108365,null))[_0x47e0('0x1d')](handleError(_0x108365,null));};exports[_0x47e0('0x11f')]=function(_0x511f23,_0x221f5b){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x511f23[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x221f5b,null))['then'](function(_0x21a449){if(_0x21a449){return _0x21a449[_0x47e0('0x11f')](_0x511f23['query'][_0x47e0('0x5e')])['then'](function(){if(_[_0x47e0('0x113')](_0x511f23['query'][_0x47e0('0x5e')])){for(var _0x3ed12d=0x0;_0x3ed12d<_0x511f23['query'][_0x47e0('0x5e')][_0x47e0('0x59')];_0x3ed12d+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x120'),{'MailInteractionId':Number(_0x511f23['query']['ids'][_0x3ed12d]),'UserId':Number(_0x511f23[_0x47e0('0x52')]['id'])});}}else{socket['emit'](_0x47e0('0x120'),{'MailInteractionId':Number(_0x511f23[_0x47e0('0x40')][_0x47e0('0x5e')]),'UserId':Number(_0x511f23[_0x47e0('0x52')]['id'])});}});}})[_0x47e0('0x24')](respondWithStatusCode(_0x221f5b,null))[_0x47e0('0x1d')](handleError(_0x221f5b,null));};exports['addFaxInteractions']=function(_0x355e5e,_0x2ab4b6){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x355e5e['params']['id']}})['then'](handleEntityNotFound(_0x2ab4b6,null))[_0x47e0('0x24')](function(_0x46de4f){if(_0x46de4f){return _0x46de4f[_0x47e0('0x121')](_0x355e5e[_0x47e0('0x5b')][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x355e5e['body'],[_0x47e0('0x5e'),'id'])||{})[_0x47e0('0x9e')](function(){for(var _0x155cf3=0x0;_0x155cf3<_0x355e5e[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x47e0('0x59')];_0x155cf3+=0x1){socket[_0x47e0('0x25')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x355e5e[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x155cf3]),'UserId':Number(_0x355e5e[_0x47e0('0x52')]['id'])});}return _0x355e5e['body'][_0x47e0('0x5e')];});}})[_0x47e0('0x24')](respondWithResult(_0x2ab4b6,null))[_0x47e0('0x1d')](handleError(_0x2ab4b6,null));};exports[_0x47e0('0x122')]=function(_0xc8319,_0x3cd820){return db[_0x47e0('0x39')]['find']({'where':{'id':_0xc8319['params']['id']}})['then'](handleEntityNotFound(_0x3cd820,null))[_0x47e0('0x24')](function(_0x382aae){if(_0x382aae){return _0x382aae[_0x47e0('0x122')](_0xc8319[_0x47e0('0x40')][_0x47e0('0x5e')])[_0x47e0('0x24')](function(){if(_['isArray'](_0xc8319[_0x47e0('0x40')][_0x47e0('0x5e')])){for(var _0x1d2607=0x0;_0x1d2607<_0xc8319['query']['ids'][_0x47e0('0x59')];_0x1d2607+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x123'),{'FaxInteractionId':Number(_0xc8319[_0x47e0('0x40')]['ids'][_0x1d2607]),'UserId':Number(_0xc8319['params']['id'])});}}else{socket[_0x47e0('0x25')](_0x47e0('0x123'),{'FaxInteractionId':Number(_0xc8319[_0x47e0('0x40')][_0x47e0('0x5e')]),'UserId':Number(_0xc8319[_0x47e0('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x3cd820,null))[_0x47e0('0x1d')](handleError(_0x3cd820,null));};exports[_0x47e0('0x124')]=function(_0x370a6e,_0x4e3c10){return db[_0x47e0('0x39')]['find']({'where':{'id':_0x370a6e[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x4e3c10,null))[_0x47e0('0x24')](function(_0x232ddf){if(_0x232ddf){return _0x232ddf[_0x47e0('0x124')](_0x370a6e[_0x47e0('0x5b')][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x370a6e['body'],[_0x47e0('0x5e'),'id'])||{})[_0x47e0('0x9e')](function(){for(var _0x3c40aa=0x0;_0x3c40aa<_0x370a6e['body'][_0x47e0('0x5e')]['length'];_0x3c40aa+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x125'),{'SmsInteractionId':Number(_0x370a6e[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x3c40aa]),'UserId':Number(_0x370a6e[_0x47e0('0x52')]['id'])});}return _0x370a6e[_0x47e0('0x5b')]['ids'];});}})['then'](respondWithResult(_0x4e3c10,null))[_0x47e0('0x1d')](handleError(_0x4e3c10,null));};exports['removeSmsInteractions']=function(_0x3a5ac8,_0x126f75){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x3a5ac8[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x126f75,null))[_0x47e0('0x24')](function(_0x312986){if(_0x312986){return _0x312986[_0x47e0('0x126')](_0x3a5ac8[_0x47e0('0x40')][_0x47e0('0x5e')])[_0x47e0('0x24')](function(){if(_[_0x47e0('0x113')](_0x3a5ac8['query'][_0x47e0('0x5e')])){for(var _0x7d7d96=0x0;_0x7d7d96<_0x3a5ac8[_0x47e0('0x40')]['ids'][_0x47e0('0x59')];_0x7d7d96+=0x1){socket['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3a5ac8['query'][_0x47e0('0x5e')][_0x7d7d96]),'UserId':Number(_0x3a5ac8[_0x47e0('0x52')]['id'])});}}else{socket['emit'](_0x47e0('0x127'),{'SmsInteractionId':Number(_0x3a5ac8[_0x47e0('0x40')][_0x47e0('0x5e')]),'UserId':Number(_0x3a5ac8[_0x47e0('0x52')]['id'])});}});}})[_0x47e0('0x24')](respondWithStatusCode(_0x126f75,null))[_0x47e0('0x1d')](handleError(_0x126f75,null));};exports['addOpenchannelInteractions']=function(_0x3f2d8f,_0x3517f4){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x3f2d8f[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x3517f4,null))['then'](function(_0x53996e){if(_0x53996e){return _0x53996e[_0x47e0('0x128')](_0x3f2d8f['body']['ids'],_[_0x47e0('0x5f')](_0x3f2d8f[_0x47e0('0x5b')],[_0x47e0('0x5e'),'id'])||{})[_0x47e0('0x9e')](function(){for(var _0xeb311d=0x0;_0xeb311d<_0x3f2d8f['body']['ids'][_0x47e0('0x59')];_0xeb311d+=0x1){socket[_0x47e0('0x25')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x3f2d8f[_0x47e0('0x5b')]['ids'][_0xeb311d]),'UserId':Number(_0x3f2d8f[_0x47e0('0x52')]['id'])});}return _0x3f2d8f[_0x47e0('0x5b')][_0x47e0('0x5e')];});}})[_0x47e0('0x24')](respondWithResult(_0x3517f4,null))[_0x47e0('0x1d')](handleError(_0x3517f4,null));};exports[_0x47e0('0x129')]=function(_0x34e24e,_0x5bb487){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x34e24e[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x5bb487,null))['then'](function(_0x5a8696){if(_0x5a8696){return _0x5a8696[_0x47e0('0x129')](_0x34e24e[_0x47e0('0x40')][_0x47e0('0x5e')])[_0x47e0('0x24')](function(){if(_['isArray'](_0x34e24e[_0x47e0('0x40')][_0x47e0('0x5e')])){for(var _0xe24ce7=0x0;_0xe24ce7<_0x34e24e['query'][_0x47e0('0x5e')]['length'];_0xe24ce7+=0x1){socket['emit'](_0x47e0('0x12a'),{'OpenchannelInteractionId':Number(_0x34e24e['query']['ids'][_0xe24ce7]),'UserId':Number(_0x34e24e[_0x47e0('0x52')]['id'])});}}else{socket[_0x47e0('0x25')](_0x47e0('0x12a'),{'OpenchannelInteractionId':Number(_0x34e24e[_0x47e0('0x40')]['ids']),'UserId':Number(_0x34e24e[_0x47e0('0x52')]['id'])});}});}})[_0x47e0('0x24')](respondWithStatusCode(_0x5bb487,null))[_0x47e0('0x1d')](handleError(_0x5bb487,null));};exports['addWhatsappInteractions']=function(_0x57563d,_0x413200){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x57563d[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x413200,null))[_0x47e0('0x24')](function(_0x2be9cc){if(_0x2be9cc){return _0x2be9cc['addWhatsappInteractions'](_0x57563d['body'][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x57563d['body'],[_0x47e0('0x5e'),'id'])||{})['spread'](function(){for(var _0x551ee2=0x0;_0x551ee2<_0x57563d[_0x47e0('0x5b')][_0x47e0('0x5e')][_0x47e0('0x59')];_0x551ee2+=0x1){socket[_0x47e0('0x25')](_0x47e0('0x12b'),{'WhatsappInteractionId':Number(_0x57563d[_0x47e0('0x5b')]['ids'][_0x551ee2]),'UserId':Number(_0x57563d['params']['id'])});}return _0x57563d[_0x47e0('0x5b')][_0x47e0('0x5e')];});}})['then'](respondWithResult(_0x413200,null))[_0x47e0('0x1d')](handleError(_0x413200,null));};exports['removeWhatsappInteractions']=function(_0x317149,_0xbac09f){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x317149[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0xbac09f,null))[_0x47e0('0x24')](function(_0x8c54da){if(_0x8c54da){return _0x8c54da[_0x47e0('0x12c')](_0x317149[_0x47e0('0x40')]['ids']);}})[_0x47e0('0x24')](respondWithStatusCode(_0xbac09f,null))[_0x47e0('0x1d')](handleError(_0xbac09f,null));};exports[_0x47e0('0x12d')]=function(_0x32b04a,_0x116004){var _0x1e6436={};var _0x4d92b3={};var _0x5052e4;var _0x860f95;return db['User']['findOne']({'where':{'id':_0x32b04a[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x116004,null))['then'](function(_0x1b8830){if(_0x1b8830){_0x5052e4=_0x1b8830;_0x4d92b3['model']=_['keys'](db[_0x47e0('0x12e')]['rawAttributes']);_0x4d92b3[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x32b04a['query']);_0x4d92b3[_0x47e0('0x56')]=_['intersection'](_0x4d92b3[_0x47e0('0x53')],_0x4d92b3[_0x47e0('0x40')]);_0x1e6436[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x4d92b3[_0x47e0('0x53')],qs['fields'](_0x32b04a[_0x47e0('0x40')][_0x47e0('0x58')]));_0x1e6436[_0x47e0('0x46')]=_0x1e6436['attributes']['length']?_0x1e6436[_0x47e0('0x46')]:_0x4d92b3[_0x47e0('0x53')];_0x1e6436['order']=qs[_0x47e0('0xc1')](_0x32b04a['query'][_0x47e0('0xc1')]);_0x1e6436['where']=qs['filters'](_[_0x47e0('0xc2')](_0x32b04a[_0x47e0('0x40')],_0x4d92b3[_0x47e0('0x56')]));if(_0x32b04a['query'][_0x47e0('0x2f')]){_0x1e6436[_0x47e0('0x3f')]=_['merge'](_0x1e6436['where'],{'$or':_['map'](_0x1e6436[_0x47e0('0x46')],function(_0x1851c2){var _0x17473b={};_0x17473b[_0x1851c2]={'$like':'%'+_0x32b04a[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x17473b;})});}_0x1e6436=_[_0x47e0('0xc3')]({},_0x1e6436,_0x32b04a['options']);return _0x5052e4[_0x47e0('0x12d')](_0x1e6436);}})[_0x47e0('0x24')](function(_0x24a22b){if(_0x24a22b){_0x860f95=_0x24a22b[_0x47e0('0x59')];if(!_0x32b04a[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x1e6436['limit']=qs[_0x47e0('0x22')](_0x32b04a[_0x47e0('0x40')][_0x47e0('0x22')]);_0x1e6436[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x32b04a[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x5052e4[_0x47e0('0x12d')](_0x1e6436);}})[_0x47e0('0x24')](function(_0x55ec9a){if(_0x55ec9a){return _0x55ec9a?{'count':_0x860f95,'rows':_0x55ec9a}:null;}})[_0x47e0('0x24')](respondWithResult(_0x116004,null))[_0x47e0('0x1d')](handleError(_0x116004,null));};exports[_0x47e0('0x12f')]=function(_0x3d46a0,_0x8314d8){var _0x3094e8={};var _0x1ff3cc={};var _0x2d9a6a;var _0x51bb01;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x3d46a0[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x8314d8,null))[_0x47e0('0x24')](function(_0x411a68){if(_0x411a68){_0x2d9a6a=_0x411a68;_0x1ff3cc[_0x47e0('0x53')]=_[_0x47e0('0x55')](db['FaxAccount'][_0x47e0('0x3a')]);_0x1ff3cc[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x3d46a0['query']);_0x1ff3cc[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x1ff3cc[_0x47e0('0x53')],_0x1ff3cc[_0x47e0('0x40')]);_0x3094e8[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x1ff3cc[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x3d46a0[_0x47e0('0x40')][_0x47e0('0x58')]));_0x3094e8[_0x47e0('0x46')]=_0x3094e8['attributes'][_0x47e0('0x59')]?_0x3094e8[_0x47e0('0x46')]:_0x1ff3cc[_0x47e0('0x53')];_0x3094e8['order']=qs[_0x47e0('0xc1')](_0x3d46a0['query']['sort']);_0x3094e8[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_['pick'](_0x3d46a0[_0x47e0('0x40')],_0x1ff3cc[_0x47e0('0x56')]));if(_0x3d46a0['query'][_0x47e0('0x2f')]){_0x3094e8[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x3094e8[_0x47e0('0x3f')],{'$or':_['map'](_0x3094e8['attributes'],function(_0x415b62){var _0xca47bc={};_0xca47bc[_0x415b62]={'$like':'%'+_0x3d46a0[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0xca47bc;})});}_0x3094e8=_[_0x47e0('0xc3')]({},_0x3094e8,_0x3d46a0[_0x47e0('0xd1')]);return _0x2d9a6a[_0x47e0('0x12f')](_0x3094e8);}})[_0x47e0('0x24')](function(_0x27ae29){if(_0x27ae29){_0x51bb01=_0x27ae29['length'];if(!_0x3d46a0[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x3094e8[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x3d46a0[_0x47e0('0x40')][_0x47e0('0x22')]);_0x3094e8[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x3d46a0[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x2d9a6a['getFaxAccounts'](_0x3094e8);}})[_0x47e0('0x24')](function(_0x51dedb){if(_0x51dedb){return _0x51dedb?{'count':_0x51bb01,'rows':_0x51dedb}:null;}})[_0x47e0('0x24')](respondWithResult(_0x8314d8,null))[_0x47e0('0x1d')](handleError(_0x8314d8,null));};exports[_0x47e0('0x130')]=function(_0x27ce3a,_0x1f3906){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x27ce3a[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x1f3906,null))[_0x47e0('0x24')](function(_0x5de404){if(_0x5de404){return _0x5de404[_0x47e0('0x130')](_0x27ce3a[_0x47e0('0x5b')][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x27ce3a[_0x47e0('0x5b')],['ids','id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x1f3906,null))[_0x47e0('0x1d')](handleError(_0x1f3906,null));};exports[_0x47e0('0x131')]=function(_0x517537,_0x36fbb5){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x517537[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x36fbb5,null))[_0x47e0('0x24')](function(_0x2d6aea){if(_0x2d6aea){return _0x2d6aea[_0x47e0('0x131')](_0x517537[_0x47e0('0x40')][_0x47e0('0x5e')]);}})[_0x47e0('0x24')](respondWithStatusCode(_0x36fbb5,null))[_0x47e0('0x1d')](handleError(_0x36fbb5,null));};exports[_0x47e0('0x132')]=function(_0x57d3cd,_0x4e238a){var _0x52af41={};var _0x20aa08={};var _0x44613f;var _0x3aecf4;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x57d3cd[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x4e238a,null))['then'](function(_0x4ddbce){if(_0x4ddbce){_0x44613f=_0x4ddbce;_0x20aa08[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0x133')]['rawAttributes']);_0x20aa08[_0x47e0('0x40')]=_['keys'](_0x57d3cd['query']);_0x20aa08[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x20aa08['model'],_0x20aa08[_0x47e0('0x40')]);_0x52af41['attributes']=_['intersection'](_0x20aa08[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x57d3cd[_0x47e0('0x40')][_0x47e0('0x58')]));_0x52af41['attributes']=_0x52af41[_0x47e0('0x46')][_0x47e0('0x59')]?_0x52af41[_0x47e0('0x46')]:_0x20aa08[_0x47e0('0x53')];_0x52af41[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x57d3cd[_0x47e0('0x40')]['sort']);_0x52af41[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x57d3cd[_0x47e0('0x40')],_0x20aa08['filters']));if(_0x57d3cd[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x52af41[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x52af41[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x52af41[_0x47e0('0x46')],function(_0x21eeea){var _0x1cae2b={};_0x1cae2b[_0x21eeea]={'$like':'%'+_0x57d3cd[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x1cae2b;})});}_0x52af41=_[_0x47e0('0xc3')]({},_0x52af41,_0x57d3cd[_0x47e0('0xd1')]);return _0x44613f['getMailAccounts'](_0x52af41);}})['then'](function(_0x1c8ab4){if(_0x1c8ab4){_0x3aecf4=_0x1c8ab4['length'];if(!_0x57d3cd[_0x47e0('0x40')][_0x47e0('0xc4')]('nolimit')){_0x52af41[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x57d3cd[_0x47e0('0x40')]['limit']);_0x52af41[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x57d3cd['query']['offset']);}return _0x44613f[_0x47e0('0x132')](_0x52af41);}})['then'](function(_0x3018bf){if(_0x3018bf){return _0x3018bf?{'count':_0x3aecf4,'rows':_0x3018bf}:null;}})[_0x47e0('0x24')](respondWithResult(_0x4e238a,null))[_0x47e0('0x1d')](handleError(_0x4e238a,null));};exports[_0x47e0('0x134')]=function(_0xa96098,_0x30a28a){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0xa96098['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x30a28a,null))['then'](function(_0x2f500a){if(_0x2f500a){return _0x2f500a[_0x47e0('0x134')](_0xa96098['body'][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0xa96098[_0x47e0('0x5b')],[_0x47e0('0x5e'),'id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x30a28a,null))[_0x47e0('0x1d')](handleError(_0x30a28a,null));};exports[_0x47e0('0x135')]=function(_0x464d13,_0x3188a5){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x464d13[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x3188a5,null))[_0x47e0('0x24')](function(_0x3f1174){if(_0x3f1174){return _0x3f1174[_0x47e0('0x135')](_0x464d13[_0x47e0('0x40')]['ids']);}})[_0x47e0('0x24')](respondWithStatusCode(_0x3188a5,null))['catch'](handleError(_0x3188a5,null));};exports['getOpenchannelAccounts']=function(_0x4be9d1,_0x5beb29){var _0x1e75ea={};var _0x10bbfa={};var _0x5dee32;var _0x4bb7e9;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x4be9d1[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x5beb29,null))[_0x47e0('0x24')](function(_0x96706b){if(_0x96706b){_0x5dee32=_0x96706b;_0x10bbfa[_0x47e0('0x53')]=_['keys'](db[_0x47e0('0x136')]['rawAttributes']);_0x10bbfa[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x4be9d1['query']);_0x10bbfa['filters']=_[_0x47e0('0x57')](_0x10bbfa[_0x47e0('0x53')],_0x10bbfa['query']);_0x1e75ea[_0x47e0('0x46')]=_[_0x47e0('0x57')](_0x10bbfa[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x4be9d1[_0x47e0('0x40')][_0x47e0('0x58')]));_0x1e75ea['attributes']=_0x1e75ea[_0x47e0('0x46')]['length']?_0x1e75ea[_0x47e0('0x46')]:_0x10bbfa['model'];_0x1e75ea[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x4be9d1['query']['sort']);_0x1e75ea[_0x47e0('0x3f')]=qs['filters'](_[_0x47e0('0xc2')](_0x4be9d1[_0x47e0('0x40')],_0x10bbfa[_0x47e0('0x56')]));if(_0x4be9d1[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x1e75ea[_0x47e0('0x3f')]=_['merge'](_0x1e75ea['where'],{'$or':_[_0x47e0('0x31')](_0x1e75ea[_0x47e0('0x46')],function(_0x2f8a09){var _0x3b128f={};_0x3b128f[_0x2f8a09]={'$like':'%'+_0x4be9d1[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x3b128f;})});}_0x1e75ea=_['merge']({},_0x1e75ea,_0x4be9d1[_0x47e0('0xd1')]);return _0x5dee32[_0x47e0('0x137')](_0x1e75ea);}})[_0x47e0('0x24')](function(_0x4c7832){if(_0x4c7832){_0x4bb7e9=_0x4c7832[_0x47e0('0x59')];if(!_0x4be9d1[_0x47e0('0x40')][_0x47e0('0xc4')]('nolimit')){_0x1e75ea['limit']=qs['limit'](_0x4be9d1[_0x47e0('0x40')]['limit']);_0x1e75ea[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x4be9d1[_0x47e0('0x40')]['offset']);}return _0x5dee32[_0x47e0('0x137')](_0x1e75ea);}})[_0x47e0('0x24')](function(_0x4c3cac){if(_0x4c3cac){return _0x4c3cac?{'count':_0x4bb7e9,'rows':_0x4c3cac}:null;}})['then'](respondWithResult(_0x5beb29,null))[_0x47e0('0x1d')](handleError(_0x5beb29,null));};exports['addOpenchannelAccounts']=function(_0x163b71,_0x275833){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x163b71[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x275833,null))['then'](function(_0x3e0240){if(_0x3e0240){return _0x3e0240[_0x47e0('0x138')](_0x163b71['body'][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x163b71[_0x47e0('0x5b')],[_0x47e0('0x5e'),'id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x275833,null))['catch'](handleError(_0x275833,null));};exports['removeOpenchannelAccounts']=function(_0xb03727,_0x3dd57b){return db['User'][_0x47e0('0x33')]({'where':{'id':_0xb03727[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x3dd57b,null))['then'](function(_0x1d3727){if(_0x1d3727){return _0x1d3727[_0x47e0('0x139')](_0xb03727['query'][_0x47e0('0x5e')]);}})['then'](respondWithStatusCode(_0x3dd57b,null))[_0x47e0('0x1d')](handleError(_0x3dd57b,null));};exports['getSmsAccounts']=function(_0x44fe41,_0x388cbf){var _0x3cbf05={};var _0x1798df={};var _0x420d20;var _0x30d164;return db[_0x47e0('0x39')]['findOne']({'where':{'id':_0x44fe41[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x388cbf,null))[_0x47e0('0x24')](function(_0x9f2b2a){if(_0x9f2b2a){_0x420d20=_0x9f2b2a;_0x1798df[_0x47e0('0x53')]=_['keys'](db['SmsAccount'][_0x47e0('0x3a')]);_0x1798df[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x44fe41[_0x47e0('0x40')]);_0x1798df['filters']=_[_0x47e0('0x57')](_0x1798df[_0x47e0('0x53')],_0x1798df['query']);_0x3cbf05['attributes']=_['intersection'](_0x1798df[_0x47e0('0x53')],qs['fields'](_0x44fe41[_0x47e0('0x40')][_0x47e0('0x58')]));_0x3cbf05[_0x47e0('0x46')]=_0x3cbf05[_0x47e0('0x46')]['length']?_0x3cbf05[_0x47e0('0x46')]:_0x1798df[_0x47e0('0x53')];_0x3cbf05['order']=qs[_0x47e0('0xc1')](_0x44fe41[_0x47e0('0x40')]['sort']);_0x3cbf05['where']=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x44fe41['query'],_0x1798df['filters']));if(_0x44fe41[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x3cbf05[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x3cbf05[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x3cbf05[_0x47e0('0x46')],function(_0x1d526a){var _0x38923f={};_0x38923f[_0x1d526a]={'$like':'%'+_0x44fe41[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x38923f;})});}_0x3cbf05=_[_0x47e0('0xc3')]({},_0x3cbf05,_0x44fe41[_0x47e0('0xd1')]);return _0x420d20[_0x47e0('0x13a')](_0x3cbf05);}})[_0x47e0('0x24')](function(_0x1f7150){if(_0x1f7150){_0x30d164=_0x1f7150[_0x47e0('0x59')];if(!_0x44fe41['query'][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x3cbf05[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x44fe41[_0x47e0('0x40')]['limit']);_0x3cbf05[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x44fe41[_0x47e0('0x40')]['offset']);}return _0x420d20[_0x47e0('0x13a')](_0x3cbf05);}})[_0x47e0('0x24')](function(_0x4b8547){if(_0x4b8547){return _0x4b8547?{'count':_0x30d164,'rows':_0x4b8547}:null;}})[_0x47e0('0x24')](respondWithResult(_0x388cbf,null))[_0x47e0('0x1d')](handleError(_0x388cbf,null));};exports[_0x47e0('0x13b')]=function(_0x31bd1d,_0x41ba12){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x31bd1d[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x41ba12,null))[_0x47e0('0x24')](function(_0xf3dbf8){if(_0xf3dbf8){return _0xf3dbf8['addSmsAccounts'](_0x31bd1d['body'][_0x47e0('0x5e')],_['omit'](_0x31bd1d[_0x47e0('0x5b')],['ids','id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x41ba12,null))[_0x47e0('0x1d')](handleError(_0x41ba12,null));};exports[_0x47e0('0x13c')]=function(_0x37b0b9,_0x2b33e4){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x37b0b9[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x2b33e4,null))[_0x47e0('0x24')](function(_0x5d8521){if(_0x5d8521){return _0x5d8521[_0x47e0('0x13c')](_0x37b0b9[_0x47e0('0x40')]['ids']);}})[_0x47e0('0x24')](respondWithStatusCode(_0x2b33e4,null))['catch'](handleError(_0x2b33e4,null));};exports[_0x47e0('0x13d')]=function(_0x502e95,_0xf5cf97){var _0x3f07c6={};var _0x3f23b3={};var _0x4dba38;var _0x36afe1;return db['User'][_0x47e0('0x92')]({'where':{'id':_0x502e95['params']['id']}})['then'](handleEntityNotFound(_0xf5cf97,null))[_0x47e0('0x24')](function(_0x3dafc4){if(_0x3dafc4){_0x4dba38=_0x3dafc4;_0x3f23b3[_0x47e0('0x53')]=_[_0x47e0('0x55')](db['ChatWebsite'][_0x47e0('0x3a')]);_0x3f23b3[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x502e95[_0x47e0('0x40')]);_0x3f23b3[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x3f23b3[_0x47e0('0x53')],_0x3f23b3['query']);_0x3f07c6['attributes']=_[_0x47e0('0x57')](_0x3f23b3[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x502e95['query'][_0x47e0('0x58')]));_0x3f07c6['attributes']=_0x3f07c6[_0x47e0('0x46')][_0x47e0('0x59')]?_0x3f07c6[_0x47e0('0x46')]:_0x3f23b3['model'];_0x3f07c6[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x502e95['query'][_0x47e0('0xc1')]);_0x3f07c6[_0x47e0('0x3f')]=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x502e95[_0x47e0('0x40')],_0x3f23b3[_0x47e0('0x56')]));if(_0x502e95[_0x47e0('0x40')][_0x47e0('0x2f')]){_0x3f07c6[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x3f07c6['where'],{'$or':_[_0x47e0('0x31')](_0x3f07c6[_0x47e0('0x46')],function(_0x5ce1c9){var _0x466ec1={};_0x466ec1[_0x5ce1c9]={'$like':'%'+_0x502e95[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0x466ec1;})});}_0x3f07c6=_[_0x47e0('0xc3')]({},_0x3f07c6,_0x502e95[_0x47e0('0xd1')]);return _0x4dba38['getChatWebsites'](_0x3f07c6);}})[_0x47e0('0x24')](function(_0x662160){if(_0x662160){_0x36afe1=_0x662160[_0x47e0('0x59')];if(!_0x502e95[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x3f07c6[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x502e95['query']['limit']);_0x3f07c6['offset']=qs[_0x47e0('0x1f')](_0x502e95[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x4dba38[_0x47e0('0x13d')](_0x3f07c6);}})[_0x47e0('0x24')](function(_0x1c312d){if(_0x1c312d){return _0x1c312d?{'count':_0x36afe1,'rows':_0x1c312d}:null;}})[_0x47e0('0x24')](respondWithResult(_0xf5cf97,null))[_0x47e0('0x1d')](handleError(_0xf5cf97,null));};exports[_0x47e0('0x13e')]=function(_0x171611,_0x20e655){return db[_0x47e0('0x39')]['find']({'where':{'id':_0x171611[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x20e655,null))[_0x47e0('0x24')](function(_0x1829d2){if(_0x1829d2){return _0x1829d2['addChatWebsites'](_0x171611[_0x47e0('0x5b')][_0x47e0('0x5e')],_[_0x47e0('0x5f')](_0x171611['body'],[_0x47e0('0x5e'),'id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x20e655,null))['catch'](handleError(_0x20e655,null));};exports[_0x47e0('0x13f')]=function(_0x42b545,_0x10fcb5){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x42b545[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x10fcb5,null))['then'](function(_0xb8e06a){if(_0xb8e06a){return _0xb8e06a[_0x47e0('0x13f')](_0x42b545['query'][_0x47e0('0x5e')]);}})[_0x47e0('0x24')](respondWithStatusCode(_0x10fcb5,null))['catch'](handleError(_0x10fcb5,null));};exports[_0x47e0('0x140')]=function(_0x1aa890,_0x531f08){var _0x388d27={};var _0x108939={};var _0x43982a;var _0x123470;return db[_0x47e0('0x39')][_0x47e0('0x92')]({'where':{'id':_0x1aa890['params']['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x531f08,null))[_0x47e0('0x24')](function(_0x5c636b){if(_0x5c636b){_0x43982a=_0x5c636b;_0x108939[_0x47e0('0x53')]=_[_0x47e0('0x55')](db[_0x47e0('0x141')]['rawAttributes']);_0x108939[_0x47e0('0x40')]=_[_0x47e0('0x55')](_0x1aa890['query']);_0x108939[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x108939[_0x47e0('0x53')],_0x108939[_0x47e0('0x40')]);_0x388d27['attributes']=_['intersection'](_0x108939[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x1aa890['query'][_0x47e0('0x58')]));_0x388d27[_0x47e0('0x46')]=_0x388d27[_0x47e0('0x46')][_0x47e0('0x59')]?_0x388d27['attributes']:_0x108939[_0x47e0('0x53')];_0x388d27[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x1aa890[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x388d27['where']=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x1aa890[_0x47e0('0x40')],_0x108939[_0x47e0('0x56')]));if(_0x1aa890['query'][_0x47e0('0x2f')]){_0x388d27[_0x47e0('0x3f')]=_[_0x47e0('0xc3')](_0x388d27['where'],{'$or':_['map'](_0x388d27[_0x47e0('0x46')],function(_0x248e73){var _0x20e6ca={};_0x20e6ca[_0x248e73]={'$like':'%'+_0x1aa890['query'][_0x47e0('0x2f')]+'%'};return _0x20e6ca;})});}_0x388d27=_[_0x47e0('0xc3')]({},_0x388d27,_0x1aa890[_0x47e0('0xd1')]);return _0x43982a[_0x47e0('0x140')](_0x388d27);}})[_0x47e0('0x24')](function(_0xdcf8e6){if(_0xdcf8e6){_0x123470=_0xdcf8e6[_0x47e0('0x59')];if(!_0x1aa890[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x388d27[_0x47e0('0x22')]=qs['limit'](_0x1aa890[_0x47e0('0x40')]['limit']);_0x388d27[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x1aa890[_0x47e0('0x40')][_0x47e0('0x1f')]);}return _0x43982a[_0x47e0('0x140')](_0x388d27);}})[_0x47e0('0x24')](function(_0x2a9e9a){if(_0x2a9e9a){return _0x2a9e9a?{'count':_0x123470,'rows':_0x2a9e9a}:null;}})[_0x47e0('0x24')](respondWithResult(_0x531f08,null))['catch'](handleError(_0x531f08,null));};exports[_0x47e0('0x142')]=function(_0x4f834e,_0x1f022b){return db[_0x47e0('0x39')]['find']({'where':{'id':_0x4f834e[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](handleEntityNotFound(_0x1f022b,null))['then'](function(_0x3d8116){if(_0x3d8116){return _0x3d8116[_0x47e0('0x142')](_0x4f834e['body']['ids'],_[_0x47e0('0x5f')](_0x4f834e['body'],[_0x47e0('0x5e'),'id'])||{});}})[_0x47e0('0x24')](respondWithResult(_0x1f022b,null))[_0x47e0('0x1d')](handleError(_0x1f022b,null));};exports['removeWhatsappAccounts']=function(_0x21ed92,_0x153ed8){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x21ed92['params']['id']}})['then'](handleEntityNotFound(_0x153ed8,null))[_0x47e0('0x24')](function(_0x1538a7){if(_0x1538a7){return _0x1538a7[_0x47e0('0x143')](_0x21ed92[_0x47e0('0x40')][_0x47e0('0x5e')]);}})['then'](respondWithStatusCode(_0x153ed8,null))['catch'](handleError(_0x153ed8,null));};exports[_0x47e0('0x144')]=function(_0x17ea6a,_0x15ff09){var _0x4b82bd={},_0x2caf66={},_0x21db5d={'count':0x0,'rows':[]};var _0x27adf6=db['CmHopper'][_0x47e0('0x3a')];_0x2caf66[_0x47e0('0x53')]=_[_0x47e0('0x55')](_0x27adf6);_0x2caf66[_0x47e0('0x40')]=_['keys'](_0x17ea6a[_0x47e0('0x40')]);_0x2caf66[_0x47e0('0x56')]=_[_0x47e0('0x57')](_0x2caf66[_0x47e0('0x53')],_0x2caf66[_0x47e0('0x40')]);_0x2caf66[_0x47e0('0x56')]=_[_0x47e0('0xbd')](_0x2caf66[_0x47e0('0x56')],[_0x47e0('0x145'),_0x47e0('0x146'),_0x47e0('0x147'),_0x47e0('0x148'),'$lt',_0x47e0('0x149'),'$ne','$eq',_0x47e0('0x14a'),'$between',_0x47e0('0x14b'),'$in',_0x47e0('0x14c'),'$like',_0x47e0('0x14d'),_0x47e0('0x14e'),_0x47e0('0x14f'),_0x47e0('0x150'),_0x47e0('0x151'),_0x47e0('0x152'),_0x47e0('0x153'),'$any']);_0x4b82bd[_0x47e0('0x46')]=_['intersection'](_0x2caf66[_0x47e0('0x53')],qs[_0x47e0('0x58')](_0x17ea6a[_0x47e0('0x40')][_0x47e0('0x58')]));_0x4b82bd[_0x47e0('0x46')]=_0x4b82bd['attributes']['length']?_0x4b82bd['attributes']:_0x2caf66[_0x47e0('0x53')];if(!_0x17ea6a[_0x47e0('0x40')][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x4b82bd[_0x47e0('0x22')]=qs['limit'](_0x17ea6a[_0x47e0('0x40')][_0x47e0('0x22')]);_0x4b82bd[_0x47e0('0x1f')]=qs[_0x47e0('0x1f')](_0x17ea6a['query'][_0x47e0('0x1f')]);}_0x4b82bd[_0x47e0('0xc0')]=qs[_0x47e0('0xc1')](_0x17ea6a[_0x47e0('0x40')][_0x47e0('0xc1')]);_0x4b82bd['where']=qs[_0x47e0('0x56')](_[_0x47e0('0xc2')](_0x17ea6a[_0x47e0('0x40')],_0x2caf66[_0x47e0('0x56')]));if(_0x17ea6a['query'][_0x47e0('0x2f')]){_0x4b82bd[_0x47e0('0x3f')]=_['merge'](_0x4b82bd[_0x47e0('0x3f')],{'$or':_[_0x47e0('0x31')](_0x4b82bd[_0x47e0('0x46')],function(_0xcac32f){var _0xe7ed29={};_0xe7ed29[_0xcac32f]={'$like':'%'+_0x17ea6a[_0x47e0('0x40')][_0x47e0('0x2f')]+'%'};return _0xe7ed29;})});}_0x4b82bd['where']={'$and':[_0x4b82bd[_0x47e0('0x3f')],{'$or':[{'UserId':_0x17ea6a[_0x47e0('0x52')]['id']},{'OwnerId':_0x17ea6a[_0x47e0('0x52')]['id']}]}]};_0x4b82bd=_[_0x47e0('0xc3')]({},_0x4b82bd,_0x17ea6a[_0x47e0('0xd1')]);var _0x20ad7e={'where':_0x4b82bd['where']};return db['CmHopper'][_0x47e0('0x21')](_0x20ad7e)[_0x47e0('0x24')](function(_0x1b828d){_0x21db5d['count']=_0x1b828d;if(_0x17ea6a['query']['includeAll']){_0x4b82bd[_0x47e0('0x42')]=[{'attributes':['id',_0x47e0('0x154'),_0x47e0('0x155'),_0x47e0('0xdf')],'model':db[_0x47e0('0xbf')],'as':_0x47e0('0x156')},{'attributes':['id',_0x47e0('0x35'),_0x47e0('0x157')],'model':db[_0x47e0('0x158')],'as':_0x47e0('0xcb')}];}return db['CmHopper'][_0x47e0('0x48')](_0x4b82bd);})['then'](function(_0x46bfc8){_0x21db5d['rows']=_0x46bfc8;return _0x21db5d;})[_0x47e0('0x24')](respondWithFilteredResult(_0x15ff09,_0x4b82bd))[_0x47e0('0x1d')](handleError(_0x15ff09,null));};exports[_0x47e0('0x159')]=function(_0xc6019f,_0xb2312e){if(!_[_0x47e0('0x65')](_0xc6019f[_0x47e0('0x2b')]['id'])&&(_0xc6019f[_0x47e0('0x2b')][_0x47e0('0x28')]==_0x47e0('0x29')||_0xc6019f[_0x47e0('0x2b')][_0x47e0('0x28')]==_0x47e0('0x2b'))){return db['User'][_0x47e0('0x92')]({'where':{'id':_0xc6019f['params']['id']},'raw':!![]})['then'](function(_0x8a6545){return authService[_0x47e0('0x15a')](_0x8a6545);})[_0x47e0('0x24')](function(_0x47475f){if(_0x47475f){return _0xb2312e[_0x47e0('0x1e')](0xc8)['json']({'api_key':_0x47475f['token']});}else{return _0xb2312e['status'](0xcc)[_0x47e0('0x15b')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x47e0('0x1d')](handleError(_0xb2312e,0x193));}else{return _0xb2312e[_0x47e0('0x1e')](0x191)[_0x47e0('0x15b')]({'message':_0x47e0('0x15c')});}};exports['createApiKey']=function(_0x30f443,_0xbd1a6d){if(!_[_0x47e0('0x65')](_0x30f443[_0x47e0('0x2b')]['id'])&&(_0x30f443[_0x47e0('0x2b')][_0x47e0('0x28')]==_0x47e0('0x29')||_0x30f443['user']['role']=='user')){return db['User'][_0x47e0('0x33')]({'where':{'id':_0x30f443[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](function(_0x555026){return authService[_0x47e0('0x15d')](_0x555026);})['then'](function(_0x2af76b){return db[_0x47e0('0x39')][_0x47e0('0x23')]({'apiKeyIat':_0x2af76b[_0x47e0('0x15e')],'apiKeyNonce':_0x2af76b[_0x47e0('0x15f')]},{'where':{'id':_0x30f443[_0x47e0('0x52')]['id']}})[_0x47e0('0x24')](function(){return _0xbd1a6d['status'](0xc8)[_0x47e0('0x15b')]({'api_key':_0x2af76b['token']});});})['catch'](handleError(_0xbd1a6d,0x193));}else{return _0xbd1a6d[_0x47e0('0x1e')](0x191)[_0x47e0('0x15b')]({'message':_0x47e0('0x15c')});}};exports[_0x47e0('0x160')]=function(_0x5c3752,_0x12ed8b){if(!_['isNil'](_0x5c3752[_0x47e0('0x2b')]['id'])&&(_0x5c3752[_0x47e0('0x2b')][_0x47e0('0x28')]==_0x47e0('0x29')||_0x5c3752[_0x47e0('0x2b')][_0x47e0('0x28')]==_0x47e0('0x2b'))){return db[_0x47e0('0x39')][_0x47e0('0x33')]({'where':{'id':_0x5c3752[_0x47e0('0x52')]['id']}})['then'](handleEntityNotFound(_0x12ed8b,null))[_0x47e0('0x24')](function(_0x35752a){if(_0x35752a&&_0x35752a[_0x47e0('0x161')]&&_0x35752a[_0x47e0('0x162')])return _0x35752a;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(){return db['User'][_0x47e0('0x23')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5c3752['params']['id']}});})[_0x47e0('0x24')](respondWithStatusCode(_0x12ed8b,0xc8))['catch'](handleError(_0x12ed8b,0x193));}else{return _0x12ed8b[_0x47e0('0x1e')](0x191)[_0x47e0('0x15b')]({'message':_0x47e0('0x15c')});}};exports[_0x47e0('0x163')]=function(_0x3da032,_0x40f868){var _0x5290b1=_0x3da032[_0x47e0('0x2b')][_0x47e0('0x27')]({'plain':!![]});if(!_0x5290b1){return _0x40f868[_0x47e0('0x1e')](0x191)[_0x47e0('0x118')](_0x47e0('0x164'));}else{Promise['resolve']()[_0x47e0('0x24')](function(){if(_0x3da032['query']['userSetting']!==_0x47e0('0x44'))return;return _0x3da032['user']['getUserSetting']();})[_0x47e0('0x24')](function(_0x5879c6){if(!_0x5879c6)return;return _0x5879c6['get']({'plain':!![]});})[_0x47e0('0x24')](function(_0x417129){_0x5290b1['userSetting']=_0x417129;return _0x40f868[_0x47e0('0x1e')](0xc8)['json'](_0x5290b1);});}};exports[_0x47e0('0x165')]=function(_0x424141,_0x32c56b){var _0x293895={'offset':0x0},_0x214ceb={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(!_0x424141['query']['filter']&&!_0x424141[_0x47e0('0x40')][_0x47e0('0x166')]&&!_0x424141['query']['queues'])return[];return Promise[_0x47e0('0x107')]()['then'](function(){var _0x1bf673=[];if(!_[_0x47e0('0x167')](_0x424141[_0x47e0('0x40')][_0x47e0('0x166')])){_0x1bf673[_0x47e0('0x47')](db['Team'][_0x47e0('0x48')]({'attributes':['id',_0x47e0('0x35')],'where':{'id':_0x424141[_0x47e0('0x40')][_0x47e0('0x166')]}}));}if(!_['isEmpty'](_0x424141[_0x47e0('0x40')][_0x47e0('0x168')])){_0x1bf673[_0x47e0('0x47')](db[_0x47e0('0x158')][_0x47e0('0x48')]({'attributes':['id',_0x47e0('0x35')],'type':_0x47e0('0x169'),'where':{'id':_0x424141[_0x47e0('0x40')]['queues']}}));}return Promise[_0x47e0('0x88')](_0x1bf673);})[_0x47e0('0x24')](function(_0x51be5a){var _0x133874=_[_0x47e0('0x16a')](_0x51be5a)[_0x47e0('0x31')](function(_0x2610b7){return _0x2610b7[_0x47e0('0x116')]({'attributes':['id','name',_0x47e0('0x64'),_0x47e0('0x97')],'raw':!![]});});return Promise[_0x47e0('0x88')](_0x133874);})[_0x47e0('0x24')](function(_0x35c667){var _0x317222=_['flatten'](_0x35c667);if(!_0x424141['query'][_0x47e0('0x2f')])return _0x317222;if(_['isEmpty'](_0x317222)){return db[_0x47e0('0x39')][_0x47e0('0x48')]({'attributes':['id',_0x47e0('0x35'),_0x47e0('0x64'),_0x47e0('0x97')],'where':{'role':_0x47e0('0x2d'),'$or':[db[_0x47e0('0x67')][_0x47e0('0x3f')](db[_0x47e0('0x67')]['fn'](_0x47e0('0x16b'),db[_0x47e0('0x67')][_0x47e0('0x16c')]('name')),{'$like':'%'+_0x424141[_0x47e0('0x40')][_0x47e0('0x2f')][_0x47e0('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x424141[_0x47e0('0x40')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x317222)['flatten']()[_0x47e0('0x2f')](function(_0x4d90f2){return _0x4d90f2[_0x47e0('0x35')][_0x47e0('0x9f')]()[_0x47e0('0x32')](_0x424141[_0x47e0('0x40')][_0x47e0('0x2f')][_0x47e0('0x9f')]())||_0x4d90f2[_0x47e0('0x64')]['toString']()['includes'](_0x424141[_0x47e0('0x40')]['filter']);})[_0x47e0('0x34')]();}})[_0x47e0('0x24')](function(_0x239b6d){var _0x2e5e83=_0x47e0('0x35');var _0x316e76=_0x47e0('0x16d');if(_0x424141[_0x47e0('0x40')][_0x47e0('0xc1')]){_0x316e76=_0x424141[_0x47e0('0x40')][_0x47e0('0xc1')][0x0]==='-'?_0x47e0('0x16e'):_0x47e0('0x16d');_0x2e5e83=_0x316e76===_0x47e0('0x16d')?_0x424141['query'][_0x47e0('0xc1')]:_0x424141[_0x47e0('0x40')][_0x47e0('0xc1')][_0x47e0('0x16f')](0x1);}return _(_0x239b6d)['uniqBy']('id')[_0x47e0('0x170')]([function(_0x4cfd8d){return _0x2e5e83===_0x47e0('0x35')?_0x4cfd8d[_0x2e5e83][_0x47e0('0x9f')]():_0x4cfd8d[_0x2e5e83];}],[_0x316e76])[_0x47e0('0x31')](function(_0x175ca6){return _['pick'](_0x175ca6,['id','name','internal','online']);})['value']();})['then'](function(_0x253cdc){return amiClient[_0x47e0('0x12')]('Agents',_0x424141)[_0x47e0('0x24')](function(_0x2be08e){if(_0x2be08e[_0x47e0('0x19')])throw new Error(_0x47e0('0x171'));var _0x242d29=_0x2be08e['result'];var _0x5aecb1=jayson[_0x47e0('0x11')]['http']({'port':0x232c});return _0x5aecb1[_0x47e0('0x12')](_0x47e0('0x2c'),_0x424141)[_0x47e0('0x24')](function(_0xd01e10){if(_0xd01e10[_0x47e0('0x19')])throw new Error(_0x47e0('0x172'));var _0xe19902=_0xd01e10[_0x47e0('0x1c')];return _[_0x47e0('0xc3')]({},_0xe19902,_0x242d29);});})[_0x47e0('0x24')](function(_0x520d7a){return _[_0x47e0('0x31')](_0x253cdc,function(_0x29cfb5){var _0x2ce2ff=_[_0x47e0('0x33')](_0x520d7a[_0x47e0('0x49')],['id',_0x29cfb5['id']]);if(!_0x2ce2ff||!_0x29cfb5[_0x47e0('0x97')]){_0x29cfb5[_0x47e0('0x1e')]=_0x47e0('0x173');}else if(_0x2ce2ff['voicePause']){_0x29cfb5[_0x47e0('0x1e')]=_0x47e0('0xf7');}else{_0x29cfb5['status']=_[_0x47e0('0x32')]([_0x47e0('0x174'),'unknown',_0x47e0('0x175'),_0x47e0('0x176'),null,undefined],_0x2ce2ff[_0x47e0('0x177')])?'online':_0x47e0('0x178');}return _0x29cfb5;});});});})[_0x47e0('0x24')](function(_0x25d6b3){if(!_0x424141['query'][_0x47e0('0xc4')](_0x47e0('0xc9'))){_0x293895[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x424141['query'][_0x47e0('0x22')]||0xa);_0x293895['offset']=qs[_0x47e0('0x1f')](_0x424141[_0x47e0('0x40')][_0x47e0('0x1f')]);}_0x214ceb[_0x47e0('0x21')]=_0x25d6b3[_0x47e0('0x59')];_0x214ceb[_0x47e0('0x49')]=_0x293895[_0x47e0('0x22')]?_0x25d6b3['slice'](_0x293895['offset'],_0x293895[_0x47e0('0x1f')]+_0x293895[_0x47e0('0x22')]):_0x25d6b3;return _0x214ceb;})[_0x47e0('0x24')](respondWithFilteredResult(_0x32c56b,_0x293895))['catch'](handleError(_0x32c56b,null));};function get_open_tabs(_0x20ba5f,_0x5d3f04){var _0x114179=_0x20ba5f['charAt'](0x0)[_0x47e0('0x179')]()+_0x20ba5f[_0x47e0('0x17a')](0x1);var _0x3b22b7={'type':db['Sequelize'][_0x47e0('0x69')]['SELECT'],'raw':!![]};return new Promise(function(_0x1169fb,_0x87f2bf){var _0x996b58=squel['select']()[_0x47e0('0x17b')](_0x47e0('0x17c')+_0x114179+'InteractionId','id')[_0x47e0('0x17b')]('ui.createdAt')[_0x47e0('0x6b')](_0x47e0('0x17d')+_0x20ba5f+_0x47e0('0x17e'),'ui')['where'](_0x47e0('0x17f'),_0x5d3f04['id']);return db[_0x47e0('0x67')][_0x47e0('0x40')](_0x996b58[_0x47e0('0x180')](),_0x3b22b7)[_0x47e0('0x24')](function(_0x5060a1){_0x5d3f04[_0x114179+'OpenTabs']=_0x5060a1;_0x1169fb(_0x5060a1);})[_0x47e0('0x1d')](function(_0x25e825){_0x87f2bf(_0x25e825);});});}
\ No newline at end of file
index b9f2d66..5b230f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07b7=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x48f95e,_0x236a1c){var _0x197d5b=function(_0x1f9a25){while(--_0x1f9a25){_0x48f95e['push'](_0x48f95e['shift']());}};_0x197d5b(++_0x236a1c);}(_0x07b7,0x187));var _0x707b=function(_0x1d8b10,_0x9603a6){_0x1d8b10=_0x1d8b10-0x0;var _0x123f31=_0x07b7[_0x1d8b10];return _0x123f31;};'use strict';var EventEmitter=require(_0x707b('0x0'));var User=require(_0x707b('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x707b('0x2')](0x0);var events={'afterCreate':_0x707b('0x3'),'afterUpdate':_0x707b('0x4'),'afterDestroy':_0x707b('0x5')};function emitEvent(_0x5ceffc){return function(_0x165dd2,_0x1e87c3,_0x331da6){UserEvents[_0x707b('0x6')](_0x5ceffc+':'+_0x165dd2['id'],_0x165dd2);UserEvents['emit'](_0x5ceffc,_0x165dd2);_0x331da6(null);};}for(var e in events){if(events[_0x707b('0x7')](e)){var event=events[e];User[_0x707b('0x8')](e,emitEvent(event));}}module[_0x707b('0x9')]=UserEvents;
\ No newline at end of file
+var _0x8bba=['remove','emit','hasOwnProperty','hook','exports','events','User','setMaxListeners'];(function(_0x31ff53,_0x2a1608){var _0x58016d=function(_0x41b6d2){while(--_0x41b6d2){_0x31ff53['push'](_0x31ff53['shift']());}};_0x58016d(++_0x2a1608);}(_0x8bba,0x1a5));var _0xa8bb=function(_0xbeb808,_0x881ddf){_0xbeb808=_0xbeb808-0x0;var _0x5d6909=_0x8bba[_0xbeb808];return _0x5d6909;};'use strict';var EventEmitter=require(_0xa8bb('0x0'));var User=require('../../mysqldb')['db'][_0xa8bb('0x1')];var UserEvents=new EventEmitter();UserEvents[_0xa8bb('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa8bb('0x3')};function emitEvent(_0xf45c1a){return function(_0x253b3d,_0x2f1632,_0xf3c41c){UserEvents[_0xa8bb('0x4')](_0xf45c1a+':'+_0x253b3d['id'],_0x253b3d);UserEvents[_0xa8bb('0x4')](_0xf45c1a,_0x253b3d);_0xf3c41c(null);};}for(var e in events){if(events[_0xa8bb('0x5')](e)){var event=events[e];User[_0xa8bb('0x6')](e,emitEvent(event));}}module[_0xa8bb('0x7')]=UserEvents;
\ No newline at end of file
index 8d7186d..29aca85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['error','VoiceExtension','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','from','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','md5secret','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','result','voice','manual','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','PAUSE','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','smsPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','lodash','jayson/promise','google','from-sip','system','format','%s%s','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','auth','Authenticate','ChanSpy','SIP/%s,%s','name','StopMixMonitor','wav','WAV','context','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','length','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','changed','password','updateMd5Password','userSetting','createUserSetting'];(function(_0x243764,_0x3e9198){var _0x994f88=function(_0x57f597){while(--_0x57f597){_0x243764['push'](_0x243764['shift']());}};_0x994f88(++_0x3e9198);}(_0x7da7,0x10d));var _0x77da=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x7da7[_0x5c9307];return _0x373e29;};'use strict';var BPromise=require(_0x77da('0x0'));var crypto=require(_0x77da('0x1'));var util=require(_0x77da('0x2'));var md5=require('md5');var moment=require('moment');var _=require(_0x77da('0x3'));var jayson=require(_0x77da('0x4'));var attributes=require('./user.attributes');var authTypes=[_0x77da('0x5')];var validatePresenceOf=function(_0x37b3d9){return _0x37b3d9&&_0x37b3d9['length'];};var getChanSpyApplications=function(_0x19331c,_0xc54a12,_0x47da81){var _0x30afe0={'context':_0x19331c['context']||_0x77da('0x6'),'type':_0x77da('0x7'),'isApp':![],'UserId':_0x19331c['id']};var _0x37c5ab=[];for(var _0x910e5b=0x0,_0x252128=0x1;_0x910e5b<_0x47da81['length'];_0x910e5b++,_0x252128=0x1){var _0x40c86e={'exten':util[_0x77da('0x8')](_0x77da('0x9'),_0x47da81[_0x910e5b]['prefix'],_0xc54a12),'ChanSpyId':_0x47da81[_0x910e5b]['id']};_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0xc'),'appdata':util[_0x77da('0x8')]('CDR(type)=%s',_0x77da('0xd')),'priority':_0x252128++},_0x30afe0,_0x40c86e));if(_0x47da81[_0x910e5b][_0x77da('0xe')]){_0x37c5ab[_0x77da('0xa')](_['merge']({'app':'MixMonitor','appdata':util[_0x77da('0x8')](_0x77da('0xf'),_0x47da81[_0x910e5b]['recordingFormat']),'priority':_0x252128++},_0x30afe0,_0x40c86e));}if(_0x47da81[_0x910e5b][_0x77da('0x10')]){_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0x11'),'appdata':_0x47da81[_0x910e5b]['password'],'priority':_0x252128++},_0x30afe0,_0x40c86e));}_0x37c5ab[_0x77da('0xa')](_['merge']({'app':_0x77da('0x12'),'appdata':util[_0x77da('0x8')](_0x77da('0x13'),_0x19331c[_0x77da('0x14')],_0x47da81[_0x910e5b]['options']?_0x47da81[_0x910e5b]['options']['join'](''):''),'priority':_0x252128++},_0x30afe0,_0x40c86e));if(_0x47da81[_0x910e5b]['record']){_0x37c5ab[_0x77da('0xa')](_[_0x77da('0xb')]({'app':_0x77da('0x15'),'priority':_0x252128++},_0x30afe0,_0x40c86e));}}return _0x37c5ab;};var getUserApplications=function(_0x335dcb,_0x19a00c){var _0x12d2b1=[_0x77da('0x16'),_0x77da('0x17'),'gsm'];var _0x492063={'context':_0x335dcb[_0x77da('0x18')]||_0x77da('0x6'),'exten':_0x19a00c,'type':'system','isApp':![],'UserId':_0x335dcb['id']};var _0x45a122=[{'app':_0x77da('0xc'),'appdata':_0x77da('0x19')}];if(_0x335dcb['extensionMonitor']&&_['includes'](_0x12d2b1,_0x335dcb[_0x77da('0x1a')])){_0x45a122['push']({'app':_0x77da('0xc'),'appdata':_0x77da('0x1b')});_0x45a122[_0x77da('0xa')]({'app':_0x77da('0xc'),'appdata':util[_0x77da('0x8')](_0x77da('0x1c'),_0x335dcb[_0x77da('0x1a')])});_0x45a122['push']({'app':'Dial','appdata':util[_0x77da('0x8')](_0x77da('0x1d'),_0x335dcb[_0x77da('0x14')])});}else{_0x45a122[_0x77da('0xa')]({'app':'Dial','appdata':util[_0x77da('0x8')](_0x77da('0x1e'),_0x335dcb[_0x77da('0x14')])});}_0x45a122[_0x77da('0xa')]({'app':_0x77da('0x1f')});for(var _0x5997b6=0x0;_0x5997b6<_0x45a122[_0x77da('0x20')];_0x5997b6++){_0x45a122[_0x5997b6][_0x77da('0x21')]=_0x5997b6+0x1;_0x45a122[_0x5997b6]=_[_0x77da('0x22')](_0x45a122[_0x5997b6],_0x492063);}return _0x45a122;};var getChanSpyPromise=function(_0x2913f7,_0x496ecd){return new BPromise(function(_0x5b4638,_0x4d395a){return _0x2913f7[_0x77da('0x23')][_0x77da('0x24')]()[_0x77da('0x25')](function(_0x3394d6){if(_0x3394d6){var _0x34228f=getChanSpyApplications(_0x496ecd,_0x496ecd['internal'],_0x3394d6);if(_0x496ecd[_0x77da('0x26')]!=_0x496ecd[_0x77da('0x14')]){_0x34228f=_0x34228f[_0x77da('0x27')](getChanSpyApplications(_0x496ecd,_0x496ecd[_0x77da('0x14')],_0x3394d6));}return _0x5b4638(_0x34228f);}return _0x5b4638([]);})[_0x77da('0x28')](function(_0x46e6b4){_0x4d395a(_0x46e6b4);});});};module['exports']=function(_0x165a7f){var _0x228851=_0x165a7f[_0x77da('0x29')];return _0x165a7f[_0x77da('0x2a')](_0x77da('0x2b'),attributes,{'tableName':_0x77da('0x2c'),'charset':_0x77da('0x2d'),'collate':_0x77da('0x2e'),'hooks':{'beforeCreate':function(_0x5b9b05,_0x5e8d1e,_0x1366b4){var _0x8e6181=typeof _0x5b9b05['userProfileId']===_0x77da('0x2f')?BPromise[_0x77da('0x30')](null):_0x228851[_0x77da('0x31')][_0x77da('0x32')]({'where':{'id':_0x5b9b05[_0x77da('0x33')]}});_0x8e6181[_0x77da('0x25')](function(_0x20d1cc){if(_0x20d1cc){_0x5b9b05['privacyEnabled']=_0x20d1cc[_0x77da('0x34')];}})['then'](function(){_0x5b9b05['updateMd5Password']();_0x5b9b05['updatePassword'](_0x1366b4);})[_0x77da('0x28')](function(_0x53543a){_0x1366b4(_0x53543a);});},'beforeUpdate':function(_0x19bfd3,_0xdac1a4,_0xce9df2){Promise[_0x77da('0x30')]()[_0x77da('0x25')](function(){if(_0x19bfd3[_0x77da('0x35')](_0x77da('0x33'))===![])return;return _0x228851['UserProfile'][_0x77da('0x32')]({'where':{'id':_0x19bfd3[_0x77da('0x33')]}})[_0x77da('0x25')](function(_0x32785f){if(_0x32785f)_0x19bfd3[_0x77da('0x34')]=_0x32785f[_0x77da('0x34')];return;});})['then'](function(){if(_0x19bfd3[_0x77da('0x35')](_0x77da('0x36'))){_0x19bfd3[_0x77da('0x37')]();return _0x19bfd3['updatePassword'](_0xce9df2);}_0xce9df2();})[_0x77da('0x28')](function(_0x505ffb){_0xce9df2(_0x505ffb);});},'afterCreate':function(_0x4e1e31,_0x599e21,_0x59abca){var _0x19f9f7=getUserApplications(_0x4e1e31,_0x4e1e31[_0x77da('0x26')]);if(_0x4e1e31[_0x77da('0x26')]!=_0x4e1e31['name']){_0x19f9f7=_0x19f9f7[_0x77da('0x27')](getUserApplications(_0x4e1e31,_0x4e1e31['name']));}return Promise[_0x77da('0x30')]()['then'](function(){if(!_0x4e1e31[_0x77da('0x38')]){return _0x4e1e31[_0x77da('0x39')]({'clientSideLoggingLevel':_0x77da('0x3a'),'clientSideLoggingEnabled':![]});}})[_0x77da('0x25')](function(){return _0x228851[_0x77da('0x3b')]['bulkCreate'](_0x19f9f7);})[_0x77da('0x25')](function(){if(_0x4e1e31[_0x77da('0xd')]){return getChanSpyPromise(_0x228851,_0x4e1e31);}})[_0x77da('0x25')](function(_0x2f14f4){if(_0x2f14f4&&_0x2f14f4[_0x77da('0x20')]){return _0x228851[_0x77da('0x3b')]['bulkCreate'](_0x2f14f4);}})[_0x77da('0x25')](function(){_0x59abca();})[_0x77da('0x28')](function(_0x21de41){_0x59abca(_0x21de41);});},'afterUpdate':function(_0x2dfeca,_0x7d11f9,_0x25f65f){return BPromise['resolve']()[_0x77da('0x25')](function(){if(_0x2dfeca['changed'](_0x77da('0xd'))||_0x2dfeca[_0x77da('0x35')](_0x77da('0x18'))){return _0x228851['VoiceExtension'][_0x77da('0x3c')]({'where':{'UserId':_0x2dfeca['id'],'type':_0x77da('0x7'),'ChanSpyId':{'$ne':null}}})[_0x77da('0x25')](function(){if(_0x2dfeca[_0x77da('0xd')]){return getChanSpyPromise(_0x228851,_0x2dfeca)[_0x77da('0x25')](function(_0x3760b5){if(_0x3760b5&&_0x3760b5[_0x77da('0x20')]){return _0x228851[_0x77da('0x3b')][_0x77da('0x3d')](_0x3760b5);}});}});}})['then'](function(){if(_0x2dfeca[_0x77da('0x35')](_0x77da('0x1a'))||_0x2dfeca[_0x77da('0x35')](_0x77da('0x18'))){return _0x228851[_0x77da('0x3b')][_0x77da('0x3c')]({'where':{'UserId':_0x2dfeca['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x240d7b=getUserApplications(_0x2dfeca,_0x2dfeca[_0x77da('0x26')]);if(_0x2dfeca[_0x77da('0x26')]!=_0x2dfeca[_0x77da('0x14')]){_0x240d7b=_0x240d7b[_0x77da('0x27')](getUserApplications(_0x2dfeca,_0x2dfeca[_0x77da('0x14')]));}return _0x228851['VoiceExtension'][_0x77da('0x3d')](_0x240d7b);});}})[_0x77da('0x25')](function(){_0x25f65f();})[_0x77da('0x28')](function(_0x73eaf8){_0x25f65f(_0x73eaf8);});},'afterDestroy':function(_0x5487e0){return _0x228851[_0x77da('0x3b')]['destroy']({'where':{'UserId':_0x5487e0['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x36263b,_0x176f01){if(!_0x176f01){return this[_0x77da('0x36')]===this[_0x77da('0x3e')](_0x36263b);}var _0x57d866=this;this[_0x77da('0x3e')](_0x36263b,function(_0x1e36ee,_0x56a3d9){if(_0x1e36ee){_0x176f01(_0x1e36ee);}if(_0x57d866[_0x77da('0x36')]===_0x56a3d9){_0x176f01(null,!![]);}else{_0x176f01(null,![]);}});},'makeSalt':function(_0x3c2d89,_0x5c264e){var _0x6c0b00=0x10;if(typeof arguments[0x0]===_0x77da('0x3f')){_0x5c264e=arguments[0x0];_0x3c2d89=_0x6c0b00;}else if(typeof arguments[0x1]===_0x77da('0x3f')){_0x5c264e=arguments[0x1];}else{throw new Error(_0x77da('0x40'));}if(!_0x3c2d89){_0x3c2d89=_0x6c0b00;}return crypto[_0x77da('0x41')](_0x3c2d89,function(_0x1043c7,_0x2b96c1){if(_0x1043c7){_0x5c264e(_0x1043c7);}return _0x5c264e(null,_0x2b96c1[_0x77da('0x42')](_0x77da('0x43')));});},'encryptPassword':function(_0x3a34a8,_0x52aa0a){if(!_0x3a34a8||!this[_0x77da('0x44')]){return _0x52aa0a?_0x52aa0a(null):null;}var _0x513017=0x2710;var _0x2ea1c4=0x40;var _0x14cd3c=Buffer[_0x77da('0x45')](this[_0x77da('0x44')],_0x77da('0x43'));if(!_0x52aa0a){return crypto[_0x77da('0x46')](_0x3a34a8,_0x14cd3c,_0x513017,_0x2ea1c4,_0x77da('0x47'))['toString'](_0x77da('0x43'));}return crypto[_0x77da('0x48')](_0x3a34a8,_0x14cd3c,_0x513017,_0x2ea1c4,_0x77da('0x47'),function(_0x353be9,_0x4f30a1){if(_0x353be9){_0x52aa0a(_0x353be9);}return _0x52aa0a(null,_0x4f30a1[_0x77da('0x42')](_0x77da('0x43')));});},'updatePassword':function(_0x133b14){if(!this['password']){return _0x133b14(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x77da('0x49')](this[_0x77da('0x4a')])===-0x1){_0x133b14(new Error(_0x77da('0x4b')));}var _0x1d1ea2=this;this[_0x77da('0x4c')](function(_0x528a32,_0x50437b){if(_0x528a32){return _0x133b14(_0x528a32);}_0x1d1ea2[_0x77da('0x44')]=_0x50437b;_0x1d1ea2[_0x77da('0x3e')](_0x1d1ea2['password'],function(_0xf385e8,_0x45fafd){if(_0xf385e8){_0x133b14(_0xf385e8);}_0x1d1ea2[_0x77da('0x36')]=_0x45fafd;_0x133b14(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x77da('0x14')]+_0x77da('0x4d')+this['password']);return this[_0x77da('0x4e')];},'getRealtimeData':function(){var _0x27aa8c={'id':this['id']};var _0xfb06b5=jayson[_0x77da('0x4f')][_0x77da('0x50')]({'port':0x232a});var _0x99ac27=jayson[_0x77da('0x4f')][_0x77da('0x50')]({'port':0x232c});var _0x1ecb28={};var _0x4831ce={};return _0xfb06b5[_0x77da('0x51')](_0x77da('0x52'),_0x27aa8c)[_0x77da('0x25')](function(_0x2e92f4){if(_0x2e92f4[_0x77da('0x3a')]){throw new Error(_0x77da('0x53'));}_0x1ecb28=_0x2e92f4['result'];return _0x99ac27[_0x77da('0x51')](_0x77da('0x52'),_0x27aa8c);})[_0x77da('0x25')](function(_0x5b9cf2){if(_0x5b9cf2[_0x77da('0x3a')]){throw new Error(_0x77da('0x54'));}_0x4831ce=_0x5b9cf2[_0x77da('0x55')];var _0x8592c7=_[_0x77da('0xb')]({},_0x1ecb28,_0x4831ce);return _0x8592c7;})[_0x77da('0x28')](function(_0x436f0c){throw _0x436f0c;});},'unpause':function(_0x53a9ee,_0x100094='manual'){var _0x211310=this;var _0x1922ab={};return Promise[_0x77da('0x30')]()['then'](function(){if(!_0x53a9ee||_0x53a9ee===_0x77da('0x56')&&_0x100094===_0x77da('0x57')){var _0x282481=jayson[_0x77da('0x4f')]['http']({'port':0x232a});return _0x282481['request']('QueuePause',{'id':_0x211310['id'],'name':_0x211310[_0x77da('0x14')],'pause':![]})[_0x77da('0x25')](function(_0x2c4d7c){if(_0x2c4d7c[_0x77da('0x3a')]){throw new Error(util[_0x77da('0x8')](_0x77da('0x58'),_0x211310['id'],_0x211310[_0x77da('0x14')]));}return _0x2c4d7c[_0x77da('0x55')][_0x77da('0x59')];});}})[_0x77da('0x25')](function(){if(!_0x53a9ee||_0x53a9ee==='voice'){return _0x228851[_0x77da('0x5a')][_0x77da('0x5b')]({'paused':0x0},{'where':{'UserId':_0x211310['id']},'individualHooks':!![]});}})['then'](function(){var _0x52ebdf=!_0x53a9ee?_0x77da('0x24'):'findOne';var _0xf31c85={'membername':_0x211310[_0x77da('0x14')],'type':_0x77da('0x5c'),'exitAt':null};if(_0x53a9ee){_0xf31c85['channel']=_0x53a9ee;}return _0x228851[_0x77da('0x5d')][_0x52ebdf]({'where':_0xf31c85});})[_0x77da('0x25')](function(_0x27fc45){if(_0x27fc45){var _0x3bc8b1=Array[_0x77da('0x5e')](_0x27fc45)?_0x27fc45:[_0x27fc45];var _0x5a0510=_0x3bc8b1[_0x77da('0x5f')](function(_0x20a636){return _0x20a636['update']({'exitAt':moment()[_0x77da('0x8')](_0x77da('0x60')),'data2':_0x100094});});return Promise[_0x77da('0x61')](_0x5a0510);}})[_0x77da('0x25')](function(){if(!_0x53a9ee){_0x1922ab[_0x77da('0x62')]=![];_0x1922ab[_0x77da('0x63')]=![];_0x1922ab[_0x77da('0x64')]=![];_0x1922ab['faxPause']=![];_0x1922ab[_0x77da('0x65')]=![];_0x1922ab['whatsappPause']=![];_0x1922ab[_0x77da('0x66')]=![];}else{_0x1922ab[_0x53a9ee+_0x77da('0x67')]=![];}return _0x211310[_0x77da('0x68')]();})[_0x77da('0x25')](function(_0x470619){var _0x44538d=require(_0x77da('0x69'));var _0x103e1b=_0x44538d[_0x77da('0x6a')]();_0x103e1b[_0x77da('0x6b')](function(_0x3c9ca7){var _0x19065e=_0x3c9ca7+'Status';_0x211310[_0x77da('0x6c')]([_0x19065e],_0x470619[_0x19065e]);});return _0x211310[_0x77da('0x5b')](_0x1922ab);})[_0x77da('0x28')](function(_0x16d8cd){throw _0x16d8cd;});}}});};
\ No newline at end of file
+var _0x2cd3=['salt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','mailPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','bluebird','util','md5','moment','lodash','jayson/promise','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','push','merge','CDR(type)=%s','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','options','join','record','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','name','priority','VoiceChanSpy','findAll','internal','concat','catch','exports','models','User','users','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','then','privacyEnabled','updateMd5Password','updatePassword','changed','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','base64','sha1','toString','indexOf','provider','Invalid\x20password'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x2cd3,0xf1));var _0x32cd=function(_0x2459fd,_0x575d9b){_0x2459fd=_0x2459fd-0x0;var _0x364cd2=_0x2cd3[_0x2459fd];return _0x364cd2;};'use strict';var BPromise=require(_0x32cd('0x0'));var crypto=require('crypto');var util=require(_0x32cd('0x1'));var md5=require(_0x32cd('0x2'));var moment=require(_0x32cd('0x3'));var _=require(_0x32cd('0x4'));var jayson=require(_0x32cd('0x5'));var attributes=require(_0x32cd('0x6'));var authTypes=['google'];var validatePresenceOf=function(_0x4b2003){return _0x4b2003&&_0x4b2003[_0x32cd('0x7')];};var getChanSpyApplications=function(_0x28564a,_0x1af8c8,_0x1024e0){var _0x41784f={'context':_0x28564a[_0x32cd('0x8')]||_0x32cd('0x9'),'type':_0x32cd('0xa'),'isApp':![],'UserId':_0x28564a['id']};var _0x2d60fa=[];for(var _0x1021fd=0x0,_0x2c0e7d=0x1;_0x1021fd<_0x1024e0[_0x32cd('0x7')];_0x1021fd++,_0x2c0e7d=0x1){var _0x29e794={'exten':util[_0x32cd('0xb')](_0x32cd('0xc'),_0x1024e0[_0x1021fd][_0x32cd('0xd')],_0x1af8c8),'ChanSpyId':_0x1024e0[_0x1021fd]['id']};_0x2d60fa[_0x32cd('0xe')](_[_0x32cd('0xf')]({'app':'Set','appdata':util['format'](_0x32cd('0x10'),'chanspy'),'priority':_0x2c0e7d++},_0x41784f,_0x29e794));if(_0x1024e0[_0x1021fd]['record']){_0x2d60fa[_0x32cd('0xe')](_[_0x32cd('0xf')]({'app':_0x32cd('0x11'),'appdata':util[_0x32cd('0xb')](_0x32cd('0x12'),_0x1024e0[_0x1021fd][_0x32cd('0x13')]),'priority':_0x2c0e7d++},_0x41784f,_0x29e794));}if(_0x1024e0[_0x1021fd][_0x32cd('0x14')]){_0x2d60fa['push'](_['merge']({'app':_0x32cd('0x15'),'appdata':_0x1024e0[_0x1021fd][_0x32cd('0x16')],'priority':_0x2c0e7d++},_0x41784f,_0x29e794));}_0x2d60fa[_0x32cd('0xe')](_[_0x32cd('0xf')]({'app':'ChanSpy','appdata':util[_0x32cd('0xb')]('SIP/%s,%s',_0x28564a['name'],_0x1024e0[_0x1021fd][_0x32cd('0x17')]?_0x1024e0[_0x1021fd][_0x32cd('0x17')][_0x32cd('0x18')](''):''),'priority':_0x2c0e7d++},_0x41784f,_0x29e794));if(_0x1024e0[_0x1021fd][_0x32cd('0x19')]){_0x2d60fa[_0x32cd('0xe')](_[_0x32cd('0xf')]({'app':'StopMixMonitor','priority':_0x2c0e7d++},_0x41784f,_0x29e794));}}return _0x2d60fa;};var getUserApplications=function(_0x40a562,_0x3c4f56){var _0x137f3c=['wav','WAV',_0x32cd('0x1a')];var _0xed528d={'context':_0x40a562[_0x32cd('0x8')]||_0x32cd('0x9'),'exten':_0x3c4f56,'type':_0x32cd('0xa'),'isApp':![],'UserId':_0x40a562['id']};var _0x5cee68=[{'app':_0x32cd('0x1b'),'appdata':_0x32cd('0x1c')}];if(_0x40a562[_0x32cd('0x1d')]&&_[_0x32cd('0x1e')](_0x137f3c,_0x40a562[_0x32cd('0x1d')])){_0x5cee68[_0x32cd('0xe')]({'app':_0x32cd('0x1b'),'appdata':_0x32cd('0x1f')});_0x5cee68['push']({'app':_0x32cd('0x1b'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x40a562[_0x32cd('0x1d')])});_0x5cee68['push']({'app':'Dial','appdata':util[_0x32cd('0xb')](_0x32cd('0x20'),_0x40a562['name'])});}else{_0x5cee68['push']({'app':_0x32cd('0x21'),'appdata':util[_0x32cd('0xb')](_0x32cd('0x22'),_0x40a562[_0x32cd('0x23')])});}_0x5cee68['push']({'app':'Hangup'});for(var _0x4b9ee1=0x0;_0x4b9ee1<_0x5cee68[_0x32cd('0x7')];_0x4b9ee1++){_0x5cee68[_0x4b9ee1][_0x32cd('0x24')]=_0x4b9ee1+0x1;_0x5cee68[_0x4b9ee1]=_['defaults'](_0x5cee68[_0x4b9ee1],_0xed528d);}return _0x5cee68;};var getChanSpyPromise=function(_0x39fd04,_0x35f798){return new BPromise(function(_0x1a6754,_0x241424){return _0x39fd04[_0x32cd('0x25')][_0x32cd('0x26')]()['then'](function(_0x38f998){if(_0x38f998){var _0xb43fe6=getChanSpyApplications(_0x35f798,_0x35f798[_0x32cd('0x27')],_0x38f998);if(_0x35f798[_0x32cd('0x27')]!=_0x35f798[_0x32cd('0x23')]){_0xb43fe6=_0xb43fe6[_0x32cd('0x28')](getChanSpyApplications(_0x35f798,_0x35f798['name'],_0x38f998));}return _0x1a6754(_0xb43fe6);}return _0x1a6754([]);})[_0x32cd('0x29')](function(_0x3dbd6b){_0x241424(_0x3dbd6b);});});};module[_0x32cd('0x2a')]=function(_0x2bb247){var _0x42385a=_0x2bb247[_0x32cd('0x2b')];return _0x2bb247['define'](_0x32cd('0x2c'),attributes,{'tableName':_0x32cd('0x2d'),'charset':'utf8','collate':_0x32cd('0x2e'),'hooks':{'beforeCreate':function(_0x1fd665,_0x441824,_0x3e6de9){var _0x50444f=typeof _0x1fd665[_0x32cd('0x2f')]===_0x32cd('0x30')?BPromise[_0x32cd('0x31')](null):_0x42385a[_0x32cd('0x32')][_0x32cd('0x33')]({'where':{'id':_0x1fd665[_0x32cd('0x2f')]}});_0x50444f[_0x32cd('0x34')](function(_0x2ff2cf){if(_0x2ff2cf){_0x1fd665['privacyEnabled']=_0x2ff2cf[_0x32cd('0x35')];}})[_0x32cd('0x34')](function(){_0x1fd665[_0x32cd('0x36')]();_0x1fd665[_0x32cd('0x37')](_0x3e6de9);})['catch'](function(_0x56c9a0){_0x3e6de9(_0x56c9a0);});},'beforeUpdate':function(_0xecc76b,_0x417663,_0x3b10ec){Promise['resolve']()[_0x32cd('0x34')](function(){if(_0xecc76b[_0x32cd('0x38')](_0x32cd('0x2f'))===![])return;return _0x42385a[_0x32cd('0x32')][_0x32cd('0x33')]({'where':{'id':_0xecc76b[_0x32cd('0x2f')]}})[_0x32cd('0x34')](function(_0x3ff181){if(_0x3ff181)_0xecc76b[_0x32cd('0x35')]=_0x3ff181['privacyEnabled'];return;});})[_0x32cd('0x34')](function(){if(_0xecc76b['changed'](_0x32cd('0x16'))){_0xecc76b[_0x32cd('0x36')]();return _0xecc76b[_0x32cd('0x37')](_0x3b10ec);}_0x3b10ec();})[_0x32cd('0x29')](function(_0x479772){_0x3b10ec(_0x479772);});},'afterCreate':function(_0x93a029,_0x2b6a9d,_0x21b73){var _0x3dcd34=getUserApplications(_0x93a029,_0x93a029[_0x32cd('0x27')]);if(_0x93a029[_0x32cd('0x27')]!=_0x93a029[_0x32cd('0x23')]){_0x3dcd34=_0x3dcd34[_0x32cd('0x28')](getUserApplications(_0x93a029,_0x93a029[_0x32cd('0x23')]));}return Promise[_0x32cd('0x31')]()[_0x32cd('0x34')](function(){if(!_0x93a029[_0x32cd('0x39')]){return _0x93a029[_0x32cd('0x3a')]({'clientSideLoggingLevel':_0x32cd('0x3b'),'clientSideLoggingEnabled':![]});}})[_0x32cd('0x34')](function(){return _0x42385a[_0x32cd('0x3c')][_0x32cd('0x3d')](_0x3dcd34);})['then'](function(){if(_0x93a029[_0x32cd('0x3e')]){return getChanSpyPromise(_0x42385a,_0x93a029);}})[_0x32cd('0x34')](function(_0x4ba018){if(_0x4ba018&&_0x4ba018[_0x32cd('0x7')]){return _0x42385a[_0x32cd('0x3c')][_0x32cd('0x3d')](_0x4ba018);}})['then'](function(){_0x21b73();})['catch'](function(_0x469fa2){_0x21b73(_0x469fa2);});},'afterUpdate':function(_0x3c9928,_0x2afbb0,_0x28a25c){return BPromise['resolve']()[_0x32cd('0x34')](function(){if(_0x3c9928[_0x32cd('0x38')](_0x32cd('0x3e'))||_0x3c9928[_0x32cd('0x38')](_0x32cd('0x8'))){return _0x42385a[_0x32cd('0x3c')][_0x32cd('0x3f')]({'where':{'UserId':_0x3c9928['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x32cd('0x34')](function(){if(_0x3c9928[_0x32cd('0x3e')]){return getChanSpyPromise(_0x42385a,_0x3c9928)['then'](function(_0xfb8c42){if(_0xfb8c42&&_0xfb8c42[_0x32cd('0x7')]){return _0x42385a['VoiceExtension'][_0x32cd('0x3d')](_0xfb8c42);}});}});}})[_0x32cd('0x34')](function(){if(_0x3c9928['changed'](_0x32cd('0x1d'))||_0x3c9928[_0x32cd('0x38')](_0x32cd('0x8'))){return _0x42385a['VoiceExtension'][_0x32cd('0x3f')]({'where':{'UserId':_0x3c9928['id'],'type':_0x32cd('0xa'),'ChanSpyId':null}})[_0x32cd('0x34')](function(){var _0x559616=getUserApplications(_0x3c9928,_0x3c9928[_0x32cd('0x27')]);if(_0x3c9928[_0x32cd('0x27')]!=_0x3c9928[_0x32cd('0x23')]){_0x559616=_0x559616[_0x32cd('0x28')](getUserApplications(_0x3c9928,_0x3c9928[_0x32cd('0x23')]));}return _0x42385a[_0x32cd('0x3c')][_0x32cd('0x3d')](_0x559616);});}})['then'](function(){_0x28a25c();})[_0x32cd('0x29')](function(_0x5811cf){_0x28a25c(_0x5811cf);});},'afterDestroy':function(_0x3c92ff){return _0x42385a[_0x32cd('0x3c')]['destroy']({'where':{'UserId':_0x3c92ff['id'],'type':_0x32cd('0xa')}});}},'instanceMethods':{'authenticate':function(_0x27aabc,_0x37ce89){if(!_0x37ce89){return this[_0x32cd('0x16')]===this[_0x32cd('0x40')](_0x27aabc);}var _0x29c4ab=this;this[_0x32cd('0x40')](_0x27aabc,function(_0xa145df,_0x52f914){if(_0xa145df){_0x37ce89(_0xa145df);}if(_0x29c4ab[_0x32cd('0x16')]===_0x52f914){_0x37ce89(null,!![]);}else{_0x37ce89(null,![]);}});},'makeSalt':function(_0x484d5a,_0x1d93d4){var _0x1c5537=0x10;if(typeof arguments[0x0]===_0x32cd('0x41')){_0x1d93d4=arguments[0x0];_0x484d5a=_0x1c5537;}else if(typeof arguments[0x1]===_0x32cd('0x41')){_0x1d93d4=arguments[0x1];}else{throw new Error(_0x32cd('0x42'));}if(!_0x484d5a){_0x484d5a=_0x1c5537;}return crypto[_0x32cd('0x43')](_0x484d5a,function(_0x349c2c,_0x1f447e){if(_0x349c2c){_0x1d93d4(_0x349c2c);}return _0x1d93d4(null,_0x1f447e['toString'](_0x32cd('0x44')));});},'encryptPassword':function(_0xd5f7d9,_0x22a0af){if(!_0xd5f7d9||!this['salt']){return _0x22a0af?_0x22a0af(null):null;}var _0x324193=0x2710;var _0x1eb5e5=0x40;var _0x182d71=Buffer['from'](this['salt'],_0x32cd('0x44'));if(!_0x22a0af){return crypto['pbkdf2Sync'](_0xd5f7d9,_0x182d71,_0x324193,_0x1eb5e5,_0x32cd('0x45'))[_0x32cd('0x46')]('base64');}return crypto['pbkdf2'](_0xd5f7d9,_0x182d71,_0x324193,_0x1eb5e5,'sha1',function(_0x1c7b25,_0x583f01){if(_0x1c7b25){_0x22a0af(_0x1c7b25);}return _0x22a0af(null,_0x583f01['toString'](_0x32cd('0x44')));});},'updatePassword':function(_0x90015b){if(!this[_0x32cd('0x16')]){return _0x90015b(null);}if(!validatePresenceOf(this[_0x32cd('0x16')])&&authTypes[_0x32cd('0x47')](this[_0x32cd('0x48')])===-0x1){_0x90015b(new Error(_0x32cd('0x49')));}var _0x1be47e=this;this['makeSalt'](function(_0x4d217e,_0x3bccbf){if(_0x4d217e){return _0x90015b(_0x4d217e);}_0x1be47e[_0x32cd('0x4a')]=_0x3bccbf;_0x1be47e['encryptPassword'](_0x1be47e[_0x32cd('0x16')],function(_0x91a73,_0x480a22){if(_0x91a73){_0x90015b(_0x91a73);}_0x1be47e[_0x32cd('0x16')]=_0x480a22;_0x90015b(null);});});},'updateMd5Password':function(){this[_0x32cd('0x4b')]=md5(this[_0x32cd('0x23')]+_0x32cd('0x4c')+this[_0x32cd('0x16')]);return this[_0x32cd('0x4b')];},'getRealtimeData':function(){var _0x51a4e7={'id':this['id']};var _0x5abf2d=jayson[_0x32cd('0x4d')][_0x32cd('0x4e')]({'port':0x232a});var _0xf02447=jayson[_0x32cd('0x4d')][_0x32cd('0x4e')]({'port':0x232c});var _0x498cff={};var _0x67b566={};return _0x5abf2d[_0x32cd('0x4f')](_0x32cd('0x50'),_0x51a4e7)[_0x32cd('0x34')](function(_0x59c23d){if(_0x59c23d[_0x32cd('0x3b')]){throw new Error(_0x32cd('0x51'));}_0x498cff=_0x59c23d[_0x32cd('0x52')];return _0xf02447[_0x32cd('0x4f')]('Agents',_0x51a4e7);})[_0x32cd('0x34')](function(_0x5bfdfd){if(_0x5bfdfd[_0x32cd('0x3b')]){throw new Error(_0x32cd('0x53'));}_0x67b566=_0x5bfdfd[_0x32cd('0x52')];var _0x1066b1=_['merge']({},_0x498cff,_0x67b566);return _0x1066b1;})[_0x32cd('0x29')](function(_0x1a6df5){throw _0x1a6df5;});},'unpause':function(_0x1e313d,_0x10a420=_0x32cd('0x54')){var _0x4ea13b=this;var _0xacf7cd={};return Promise['resolve']()['then'](function(){if(!_0x1e313d||_0x1e313d===_0x32cd('0x55')&&_0x10a420===_0x32cd('0x54')){var _0x291698=jayson['client'][_0x32cd('0x4e')]({'port':0x232a});return _0x291698[_0x32cd('0x4f')](_0x32cd('0x56'),{'id':_0x4ea13b['id'],'name':_0x4ea13b['name'],'pause':![]})[_0x32cd('0x34')](function(_0x34f432){if(_0x34f432[_0x32cd('0x3b')]){throw new Error(util[_0x32cd('0xb')](_0x32cd('0x57'),_0x4ea13b['id'],_0x4ea13b[_0x32cd('0x23')]));}return _0x34f432[_0x32cd('0x52')][_0x32cd('0x58')];});}})[_0x32cd('0x34')](function(){if(!_0x1e313d||_0x1e313d===_0x32cd('0x55')){return _0x42385a[_0x32cd('0x59')][_0x32cd('0x5a')]({'paused':0x0},{'where':{'UserId':_0x4ea13b['id']},'individualHooks':!![]});}})[_0x32cd('0x34')](function(){var _0x3a6b0a=!_0x1e313d?_0x32cd('0x26'):_0x32cd('0x5b');var _0x38c299={'membername':_0x4ea13b[_0x32cd('0x23')],'type':_0x32cd('0x5c'),'exitAt':null};if(_0x1e313d){_0x38c299[_0x32cd('0x5d')]=_0x1e313d;}return _0x42385a[_0x32cd('0x5e')][_0x3a6b0a]({'where':_0x38c299});})[_0x32cd('0x34')](function(_0x2ba379){if(_0x2ba379){var _0x5ab5ad=Array['isArray'](_0x2ba379)?_0x2ba379:[_0x2ba379];var _0x2287c7=_0x5ab5ad['map'](function(_0x48a83a){return _0x48a83a[_0x32cd('0x5a')]({'exitAt':moment()[_0x32cd('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x10a420});});return Promise['all'](_0x2287c7);}})[_0x32cd('0x34')](function(){if(!_0x1e313d){_0xacf7cd['voicePause']=![];_0xacf7cd[_0x32cd('0x5f')]=![];_0xacf7cd['chatPause']=![];_0xacf7cd[_0x32cd('0x60')]=![];_0xacf7cd[_0x32cd('0x61')]=![];_0xacf7cd[_0x32cd('0x62')]=![];_0xacf7cd['openchannelPause']=![];}else{_0xacf7cd[_0x1e313d+_0x32cd('0x63')]=![];}return _0x4ea13b[_0x32cd('0x64')]();})[_0x32cd('0x34')](function(_0x4afbdc){var _0x1a5ea8=require(_0x32cd('0x65'));var _0x24e1ef=_0x1a5ea8[_0x32cd('0x66')]();_0x24e1ef[_0x32cd('0x67')](function(_0x1e8b58){var _0xadf8a5=_0x1e8b58+_0x32cd('0x68');_0x4ea13b['setDataValue']([_0xadf8a5],_0x4afbdc[_0xadf8a5]);});return _0x4ea13b[_0x32cd('0x5a')](_0xacf7cd);})[_0x32cd('0x29')](function(_0x4832e8){throw _0x4832e8;});}}});};
\ No newline at end of file
index f61673f..c16283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f07=['interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','getChannels','SIP/%s','body','type','DEFAULT\x20PAUSE','role','uniqueid','bulkCreate','YYYY-MM-DD\x20HH:mm:ss','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','params','destroy','push','all','phone','loginInPause','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','forEach','merge','LOGIN','callysquare','LOGININPAUSE','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','./user.socket','register','GetUser','findAll','options','raw','where','attributes','limit','include','model','map','info','debug','stringify','catch','message','ShowUser','User','then','error','name','internal'];(function(_0x1f8b40,_0x30c66e){var _0x35f24a=function(_0x5ae27b){while(--_0x5ae27b){_0x1f8b40['push'](_0x1f8b40['shift']());}};_0x35f24a(++_0x30c66e);}(_0x2f07,0xcc));var _0x72f0=function(_0x27cb53,_0x2d00e9){_0x27cb53=_0x27cb53-0x0;var _0x1d6aea=_0x2f07[_0x27cb53];return _0x1d6aea;};'use strict';var _=require('lodash');var util=require(_0x72f0('0x0'));var moment=require(_0x72f0('0x1'));var BPromise=require(_0x72f0('0x2'));var Redis=require(_0x72f0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x72f0('0x4'));var logger=require(_0x72f0('0x5'))(_0x72f0('0x6'));var config=require(_0x72f0('0x7'));config[_0x72f0('0x8')]=_[_0x72f0('0x9')](config[_0x72f0('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x72f0('0x8')]));require(_0x72f0('0xa'))[_0x72f0('0xb')](socket);exports[_0x72f0('0xc')]=function(_0x4438cc){var _0x26e584=this;return new Promise(function(_0x2b8e3b,_0x16e844){return db['User'][_0x72f0('0xd')]({'raw':_0x4438cc[_0x72f0('0xe')]?_0x4438cc['options'][_0x72f0('0xf')]===undefined?!![]:![]:!![],'where':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x10')]||null:null,'attributes':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x11')]||null:null,'limit':_0x4438cc['options']?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x12')]||null:null,'include':_0x4438cc[_0x72f0('0xe')]?_0x4438cc[_0x72f0('0xe')][_0x72f0('0x13')]?_['map'](_0x4438cc['options'][_0x72f0('0x13')],function(_0xc4fefd){return{'model':db[_0xc4fefd[_0x72f0('0x14')]],'as':_0xc4fefd['as'],'attributes':_0xc4fefd[_0x72f0('0x11')],'include':_0xc4fefd[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0xc4fefd[_0x72f0('0x13')],function(_0x17f2dd){return{'model':db[_0x17f2dd[_0x72f0('0x14')]],'as':_0x17f2dd['as'],'attributes':_0x17f2dd['attributes'],'include':_0x17f2dd[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x17f2dd[_0x72f0('0x13')],function(_0x37838b){return{'model':db[_0x37838b[_0x72f0('0x14')]],'as':_0x37838b['as'],'attributes':_0x37838b[_0x72f0('0x11')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8b42d9){logger[_0x72f0('0x16')](_0x72f0('0xc'),_0x4438cc);logger[_0x72f0('0x17')](_0x72f0('0xc'),_0x4438cc,JSON[_0x72f0('0x18')](_0x8b42d9));_0x2b8e3b(_0x8b42d9);})[_0x72f0('0x19')](function(_0x3abb8f){logger['error'](_0x72f0('0xc'),_0x3abb8f['message'],_0x4438cc);_0x16e844(_0x26e584['error'](0x1f4,_0x3abb8f[_0x72f0('0x1a')]));});});};exports[_0x72f0('0x1b')]=function(_0x4ce7a0){var _0xffdee9=this;return new Promise(function(_0x12e44f,_0xce13db){return db[_0x72f0('0x1c')]['find']({'raw':_0x4ce7a0['options']?_0x4ce7a0[_0x72f0('0xe')]['raw']===undefined?!![]:![]:!![],'where':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0['options'][_0x72f0('0x10')]||null:null,'attributes':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x11')]||null:null,'include':_0x4ce7a0[_0x72f0('0xe')]?_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x4ce7a0[_0x72f0('0xe')][_0x72f0('0x13')],function(_0x591b2f){return{'model':db[_0x591b2f[_0x72f0('0x14')]],'as':_0x591b2f['as'],'attributes':_0x591b2f[_0x72f0('0x11')],'include':_0x591b2f['include']?_[_0x72f0('0x15')](_0x591b2f[_0x72f0('0x13')],function(_0x36dd63){return{'model':db[_0x36dd63['model']],'as':_0x36dd63['as'],'attributes':_0x36dd63[_0x72f0('0x11')],'include':_0x36dd63[_0x72f0('0x13')]?_[_0x72f0('0x15')](_0x36dd63[_0x72f0('0x13')],function(_0x1f9e8b){return{'model':db[_0x1f9e8b['model']],'as':_0x1f9e8b['as'],'attributes':_0x1f9e8b[_0x72f0('0x11')]};}):[]};}):[]};}):[]:[]})[_0x72f0('0x1d')](function(_0x573bd0){logger[_0x72f0('0x16')](_0x72f0('0x1b'),_0x4ce7a0);logger[_0x72f0('0x17')](_0x72f0('0x1b'),_0x4ce7a0,JSON['stringify'](_0x573bd0));_0x12e44f(_0x573bd0);})[_0x72f0('0x19')](function(_0x5165bf){logger[_0x72f0('0x1e')](_0x72f0('0x1b'),_0x5165bf['message'],_0x4ce7a0);_0xce13db(_0xffdee9['error'](0x1f4,_0x5165bf[_0x72f0('0x1a')]));});});};exports['PauseUser']=function(_0x1850c9){var _0x35d679=this;return new Promise(function(_0x40629b,_0x5796ed){var _0x298957;return db['User']['find']({'where':_0x1850c9['options'][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f'),'role',_0x72f0('0x20'),_0x72f0('0x21')]})['then'](function(_0x342e81){if(_0x342e81){_0x298957=_0x342e81;return db[_0x72f0('0x22')][_0x72f0('0x23')]({'paused':0x1},{'where':{'UserId':_0x298957['id']},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x298957){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x298957[_0x72f0('0x1f')],'type':_0x72f0('0x25'),'exitAt':null}});}})[_0x72f0('0x1d')](function(_0x573e7c){if(_0x298957){if(_0x573e7c&&_0x573e7c[_0x72f0('0x26')]){var _0x2b3403=moment()[_0x72f0('0x27')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x163603=0x0,_0x2eea2e=_0x573e7c[_0x72f0('0x26')];_0x163603<_0x2eea2e;_0x163603++){_0x573e7c[_0x163603]['updateAttributes']({'exitAt':_0x2b3403});}}}})[_0x72f0('0x1d')](function(){if(_0x298957){var _0x577616=[];var _0x2c7183=utils[_0x72f0('0x28')]();_0x2c7183['forEach'](function(_0x4c39f2){_0x577616['push']({'channel':_0x4c39f2,'membername':_0x298957['name'],'interface':_['isNil'](_0x298957[_0x72f0('0x21')])?util[_0x72f0('0x27')](_0x72f0('0x29'),_0x298957[_0x72f0('0x1f')]):_0x298957['interface'],'type':_0x72f0('0x25'),'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x1850c9[_0x72f0('0x2a')][_0x72f0('0x2b')]||_0x72f0('0x2c'),'role':_0x298957[_0x72f0('0x2d')],'internal':_0x298957[_0x72f0('0x20')],'uniqueid':_0x1850c9[_0x72f0('0x2a')][_0x72f0('0x2e')]||null});});return db[_0x72f0('0x24')][_0x72f0('0x2f')](_0x577616,{'individualHooks':!![]});}})['then'](function(){if(_0x298957){return _0x298957[_0x72f0('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1850c9['body'][_0x72f0('0x2b')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))});}})[_0x72f0('0x1d')](function(_0x3e4f84){_0x40629b(_0x3e4f84);})[_0x72f0('0x19')](function(_0x1315fb){_0x5796ed(_0x35d679[_0x72f0('0x1e')](0x1f4,_0x1315fb[_0x72f0('0x1a')]));});});};exports['UnpauseUser']=function(_0x431f9a){var _0x64ca04=this;return new Promise(function(_0x453153,_0x5d44cb){if(_0x431f9a['body'][_0x72f0('0x31')]&&!utils['isValidChannel'](_0x431f9a[_0x72f0('0x2a')]['channel'])){throw new Error(util[_0x72f0('0x27')](_0x72f0('0x32'),_0x431f9a[_0x72f0('0x2a')][_0x72f0('0x31')]));}return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x431f9a['options']['where']||{},'attributes':['id',_0x72f0('0x1f'),_0x72f0('0x2d'),_0x72f0('0x20'),_0x72f0('0x21'),_0x72f0('0x34'),_0x72f0('0x35'),_0x72f0('0x36'),_0x72f0('0x37'),_0x72f0('0x38'),_0x72f0('0x39'),_0x72f0('0x3a'),'whatsappPause',_0x72f0('0x3b'),'lastPauseAt']})['then'](function(_0x245d76){if(!_0x245d76){throw new Error(util['format'](_0x72f0('0x3c'),_0x431f9a[_0x72f0('0x3d')]['id']));}return _0x245d76['unpause'](_0x431f9a['body'][_0x72f0('0x31')],'system');})[_0x72f0('0x1d')](function(_0xbb7864){_0x453153(_0xbb7864);})[_0x72f0('0x19')](function(_0x2aaffd){_0x5d44cb(_0x64ca04[_0x72f0('0x1e')](0x1f4,_0x2aaffd['message']));});});};exports['LogoutUser']=function(_0x4fd39d){var _0x1a2246=this;return new Promise(function(_0x4abbc1,_0x34dafd){var _0x697ad3;return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x4fd39d[_0x72f0('0xe')][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f')]})[_0x72f0('0x1d')](function(_0x4f29b5){if(_0x4f29b5){_0x697ad3=_0x4f29b5;return db[_0x72f0('0x22')][_0x72f0('0x3e')]({'where':{'membername':_0x697ad3['name']},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x697ad3){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x697ad3['name'],'exitAt':null}});}})[_0x72f0('0x1d')](function(_0x21849f){if(_0x697ad3){if(_0x21849f&&_0x21849f[_0x72f0('0x26')]){var _0x2032bd=[];_0x21849f['forEach'](function(_0x3caf79){_0x2032bd[_0x72f0('0x3f')](_0x3caf79[_0x72f0('0x23')]({'exitAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))}));});return BPromise[_0x72f0('0x40')](_0x2032bd);}}})['then'](function(){if(_0x697ad3){return _0x697ad3[_0x72f0('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x72f0('0x1d')](function(_0x3b8f0a){_0x4abbc1(_0x3b8f0a);})[_0x72f0('0x19')](function(_0x49cd33){_0x34dafd(_0x1a2246[_0x72f0('0x1e')](0x1f4,_0x49cd33['message']));});});};exports['LoginUser']=function(_0x32b40e){var _0x45eb65=this;return new Promise(function(_0x3c90ee,_0x1e6f10){var _0x40e20a;var _0x1b19f8;var _0x1452f0;var _0x62d11b;return db[_0x72f0('0x1c')][_0x72f0('0x33')]({'where':_0x32b40e[_0x72f0('0xe')][_0x72f0('0x10')]||{},'attributes':['id',_0x72f0('0x1f'),_0x72f0('0x2d'),'mobile',_0x72f0('0x41'),'internal',_0x72f0('0x42'),_0x72f0('0x21')]})[_0x72f0('0x1d')](function(_0x186244){if(_0x186244){_0x40e20a=_0x186244;_0x62d11b=_0x32b40e[_0x72f0('0x2a')][_0x72f0('0x21')]?_0x32b40e[_0x72f0('0x2a')][_0x72f0('0x21')]:util['format'](_0x72f0('0x29'),_0x40e20a[_0x72f0('0x1f')]);return db[_0x72f0('0x1c')][_0x72f0('0x43')]({'where':{'role':_0x72f0('0x44'),'online':!![],'id':{'$ne':_0x40e20a['id']}}});}})[_0x72f0('0x1d')](function(_0x1b6aa8){if(_0x1b6aa8){_0x1452f0=_0x1b6aa8;return require('../../config/license/util')[_0x72f0('0x45')]();}})[_0x72f0('0x1d')](function(_0x55f806){if(_0x55f806&&_0x55f806['agents']&&_0x1452f0>=_0x55f806[_0x72f0('0x46')]){throw new Error(_0x72f0('0x47'));}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return db[_0x72f0('0x22')][_0x72f0('0x3e')]({'where':{'membername':_0x40e20a[_0x72f0('0x1f')]},'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return _0x40e20a['getVoiceQueues']({'raw':!![]});}})[_0x72f0('0x1d')](function(_0x2446a6){if(_0x40e20a){if(_0x2446a6){var _0x266bb9=[];_0x1b19f8=_0x2446a6;if(_0x1b19f8[_0x72f0('0x26')]){for(var _0x37977d=0x0;_0x37977d<_0x1b19f8['length'];_0x37977d++){_0x266bb9[_0x72f0('0x3f')](db[_0x72f0('0x22')][_0x72f0('0x48')]({'membername':_0x40e20a['name'],'UserId':_0x40e20a['id'],'queue_name':_0x1b19f8[_0x37977d]['name'],'VoiceQueueId':_0x1b19f8[_0x37977d]['id'],'interface':_0x62d11b,'paused':_0x40e20a[_0x72f0('0x42')]||![],'penalty':_0x1b19f8[_0x37977d][_0x72f0('0x49')]||0x0}));}return BPromise['all'](_0x266bb9);}}}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return db[_0x72f0('0x24')][_0x72f0('0xd')]({'where':{'membername':_0x40e20a['name'],'exitAt':null}});}})['then'](function(_0x56322a){if(_0x40e20a){if(_0x56322a&&_0x56322a['length']){var _0xb0c9de=[];_0x56322a[_0x72f0('0x4a')](function(_0x1c87cc){_0xb0c9de[_0x72f0('0x3f')](_0x1c87cc[_0x72f0('0x23')]({'exitAt':moment()[_0x72f0('0x27')](_0x72f0('0x30'))}));});return BPromise[_0x72f0('0x40')](_0xb0c9de);}}})[_0x72f0('0x1d')](function(){if(_0x40e20a){var _0xace326=[];var _0xe8f68=[];var _0x502ddb=utils[_0x72f0('0x28')]();var _0x224d72={'membername':_0x40e20a[_0x72f0('0x1f')],'interface':_0x62d11b,'enterAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'role':_0x40e20a['role'],'internal':_0x40e20a[_0x72f0('0x20')]};_0x502ddb[_0x72f0('0x4a')](function(_0x421ba8){_0xace326[_0x72f0('0x3f')](_[_0x72f0('0x4b')]({'channel':_0x421ba8,'type':_0x72f0('0x4c'),'data1':_0x72f0('0x4d'),'data2':_0x62d11b},_0x224d72));if(_0x40e20a[_0x72f0('0x42')]){_0xe8f68[_0x72f0('0x3f')](_[_0x72f0('0x4b')]({'channel':_0x421ba8,'type':_0x72f0('0x25'),'data1':_0x72f0('0x4e')},_0x224d72));}});return db[_0x72f0('0x24')][_0x72f0('0x2f')](_0xace326['concat'](_0xe8f68),{'individualHooks':!![]});}})[_0x72f0('0x1d')](function(){if(_0x40e20a){return _0x40e20a[_0x72f0('0x23')]({'online':!![],'lastLoginAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'voicePause':_0x40e20a[_0x72f0('0x42')]||![],'mailPause':_0x40e20a['loginInPause']||![],'chatPause':_0x40e20a[_0x72f0('0x42')]||![],'faxPause':_0x40e20a['loginInPause']||![],'smsPause':_0x40e20a[_0x72f0('0x42')]||![],'openchannelPause':_0x40e20a[_0x72f0('0x42')]||![],'pauseType':_0x40e20a[_0x72f0('0x42')]?_0x72f0('0x4e'):null,'lastPauseAt':moment()[_0x72f0('0x27')](_0x72f0('0x30')),'interface':_0x62d11b});}})[_0x72f0('0x1d')](function(_0x3fea5f){_0x3c90ee(_0x3fea5f);})[_0x72f0('0x19')](function(_0x2b8b1e){_0x1e6f10(_0x45eb65[_0x72f0('0x1e')](0x1f4,_0x2b8b1e[_0x72f0('0x1a')]));});});};
\ No newline at end of file
+var _0x6ff7=['PauseUser','where','name','internal','interface','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','body','type','DEFAULT\x20PAUSE','role','uniqueid','bulkCreate','UnpauseUser','channel','isValidChannel','findOne','online','mailPause','chatPause','faxPause','openchannelPause','smsPause','lastPauseAt','params','system','LogoutUser','destroy','all','mobile','loginInPause','SIP/%s','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','redis','defaults','localhost','socket.io-emitter','register','GetUser','User','raw','options','limit','include','map','model','attributes','then','info','stringify','catch','error','message','ShowUser','find','debug'];(function(_0x5b4a93,_0x3f27da){var _0x536b56=function(_0x237b0f){while(--_0x237b0f){_0x5b4a93['push'](_0x5b4a93['shift']());}};_0x536b56(++_0x3f27da);}(_0x6ff7,0x186));var _0x76ff=function(_0x3e9449,_0x4d3c76){_0x3e9449=_0x3e9449-0x0;var _0x3e0efa=_0x6ff7[_0x3e9449];return _0x3e0efa;};'use strict';var _=require(_0x76ff('0x0'));var util=require(_0x76ff('0x1'));var moment=require(_0x76ff('0x2'));var BPromise=require(_0x76ff('0x3'));var Redis=require('ioredis');var db=require(_0x76ff('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x76ff('0x5'))(_0x76ff('0x6'));var config=require('../../config/environment');config[_0x76ff('0x7')]=_[_0x76ff('0x8')](config[_0x76ff('0x7')],{'host':_0x76ff('0x9'),'port':0x18eb});var socket=require(_0x76ff('0xa'))(new Redis(config['redis']));require('./user.socket')[_0x76ff('0xb')](socket);exports[_0x76ff('0xc')]=function(_0x2ab875){var _0x1c4e51=this;return new Promise(function(_0x1bbc46,_0xd0c2e5){return db[_0x76ff('0xd')]['findAll']({'raw':_0x2ab875['options']?_0x2ab875['options'][_0x76ff('0xe')]===undefined?!![]:![]:!![],'where':_0x2ab875[_0x76ff('0xf')]?_0x2ab875[_0x76ff('0xf')]['where']||null:null,'attributes':_0x2ab875[_0x76ff('0xf')]?_0x2ab875['options']['attributes']||null:null,'limit':_0x2ab875[_0x76ff('0xf')]?_0x2ab875[_0x76ff('0xf')][_0x76ff('0x10')]||null:null,'include':_0x2ab875[_0x76ff('0xf')]?_0x2ab875[_0x76ff('0xf')][_0x76ff('0x11')]?_[_0x76ff('0x12')](_0x2ab875[_0x76ff('0xf')][_0x76ff('0x11')],function(_0x4b4a2f){return{'model':db[_0x4b4a2f[_0x76ff('0x13')]],'as':_0x4b4a2f['as'],'attributes':_0x4b4a2f[_0x76ff('0x14')],'include':_0x4b4a2f[_0x76ff('0x11')]?_[_0x76ff('0x12')](_0x4b4a2f['include'],function(_0x6838d9){return{'model':db[_0x6838d9['model']],'as':_0x6838d9['as'],'attributes':_0x6838d9[_0x76ff('0x14')],'include':_0x6838d9['include']?_[_0x76ff('0x12')](_0x6838d9[_0x76ff('0x11')],function(_0xf5f11c){return{'model':db[_0xf5f11c[_0x76ff('0x13')]],'as':_0xf5f11c['as'],'attributes':_0xf5f11c['attributes']};}):[]};}):[]};}):[]:[]})[_0x76ff('0x15')](function(_0x55ce38){logger[_0x76ff('0x16')](_0x76ff('0xc'),_0x2ab875);logger['debug']('GetUser',_0x2ab875,JSON[_0x76ff('0x17')](_0x55ce38));_0x1bbc46(_0x55ce38);})[_0x76ff('0x18')](function(_0x56df52){logger[_0x76ff('0x19')](_0x76ff('0xc'),_0x56df52[_0x76ff('0x1a')],_0x2ab875);_0xd0c2e5(_0x1c4e51[_0x76ff('0x19')](0x1f4,_0x56df52[_0x76ff('0x1a')]));});});};exports[_0x76ff('0x1b')]=function(_0x4e2204){var _0x3a89bf=this;return new Promise(function(_0x1d0015,_0x35d731){return db[_0x76ff('0xd')][_0x76ff('0x1c')]({'raw':_0x4e2204['options']?_0x4e2204['options'][_0x76ff('0xe')]===undefined?!![]:![]:!![],'where':_0x4e2204[_0x76ff('0xf')]?_0x4e2204['options']['where']||null:null,'attributes':_0x4e2204[_0x76ff('0xf')]?_0x4e2204[_0x76ff('0xf')][_0x76ff('0x14')]||null:null,'include':_0x4e2204[_0x76ff('0xf')]?_0x4e2204[_0x76ff('0xf')][_0x76ff('0x11')]?_['map'](_0x4e2204[_0x76ff('0xf')][_0x76ff('0x11')],function(_0x47ca61){return{'model':db[_0x47ca61[_0x76ff('0x13')]],'as':_0x47ca61['as'],'attributes':_0x47ca61[_0x76ff('0x14')],'include':_0x47ca61['include']?_['map'](_0x47ca61[_0x76ff('0x11')],function(_0x2714d9){return{'model':db[_0x2714d9[_0x76ff('0x13')]],'as':_0x2714d9['as'],'attributes':_0x2714d9[_0x76ff('0x14')],'include':_0x2714d9['include']?_[_0x76ff('0x12')](_0x2714d9[_0x76ff('0x11')],function(_0xa63cb2){return{'model':db[_0xa63cb2[_0x76ff('0x13')]],'as':_0xa63cb2['as'],'attributes':_0xa63cb2['attributes']};}):[]};}):[]};}):[]:[]})[_0x76ff('0x15')](function(_0x3c7dd8){logger['info'](_0x76ff('0x1b'),_0x4e2204);logger[_0x76ff('0x1d')]('ShowUser',_0x4e2204,JSON['stringify'](_0x3c7dd8));_0x1d0015(_0x3c7dd8);})[_0x76ff('0x18')](function(_0xd6be27){logger[_0x76ff('0x19')](_0x76ff('0x1b'),_0xd6be27['message'],_0x4e2204);_0x35d731(_0x3a89bf[_0x76ff('0x19')](0x1f4,_0xd6be27[_0x76ff('0x1a')]));});});};exports[_0x76ff('0x1e')]=function(_0x557500){var _0x5a4e3f=this;return new Promise(function(_0x5169f0,_0x44ea2){var _0x52c09f;return db[_0x76ff('0xd')][_0x76ff('0x1c')]({'where':_0x557500[_0x76ff('0xf')][_0x76ff('0x1f')]||{},'attributes':['id',_0x76ff('0x20'),'role',_0x76ff('0x21'),_0x76ff('0x22')]})[_0x76ff('0x15')](function(_0x4b8514){if(_0x4b8514){_0x52c09f=_0x4b8514;return db[_0x76ff('0x23')][_0x76ff('0x24')]({'paused':0x1},{'where':{'UserId':_0x52c09f['id']},'individualHooks':!![]});}})[_0x76ff('0x15')](function(){if(_0x52c09f){return db[_0x76ff('0x25')][_0x76ff('0x26')]({'where':{'membername':_0x52c09f[_0x76ff('0x20')],'type':_0x76ff('0x27'),'exitAt':null}});}})[_0x76ff('0x15')](function(_0x22e7a9){if(_0x52c09f){if(_0x22e7a9&&_0x22e7a9[_0x76ff('0x28')]){var _0x1f364a=moment()[_0x76ff('0x29')](_0x76ff('0x2a'));for(var _0x1af2a1=0x0,_0x9ea1da=_0x22e7a9[_0x76ff('0x28')];_0x1af2a1<_0x9ea1da;_0x1af2a1++){_0x22e7a9[_0x1af2a1][_0x76ff('0x2b')]({'exitAt':_0x1f364a});}}}})[_0x76ff('0x15')](function(){if(_0x52c09f){var _0x5cdf8c=[];var _0x1e0ed0=utils[_0x76ff('0x2c')]();_0x1e0ed0[_0x76ff('0x2d')](function(_0x572c6c){_0x5cdf8c[_0x76ff('0x2e')]({'channel':_0x572c6c,'membername':_0x52c09f[_0x76ff('0x20')],'interface':_[_0x76ff('0x2f')](_0x52c09f[_0x76ff('0x22')])?util[_0x76ff('0x29')]('SIP/%s',_0x52c09f[_0x76ff('0x20')]):_0x52c09f[_0x76ff('0x22')],'type':_0x76ff('0x27'),'enterAt':moment()[_0x76ff('0x29')](_0x76ff('0x2a')),'data1':_0x557500[_0x76ff('0x30')][_0x76ff('0x31')]||_0x76ff('0x32'),'role':_0x52c09f[_0x76ff('0x33')],'internal':_0x52c09f['internal'],'uniqueid':_0x557500[_0x76ff('0x30')][_0x76ff('0x34')]||null});});return db[_0x76ff('0x25')][_0x76ff('0x35')](_0x5cdf8c,{'individualHooks':!![]});}})[_0x76ff('0x15')](function(){if(_0x52c09f){return _0x52c09f[_0x76ff('0x24')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x557500['body']['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x76ff('0x15')](function(_0x54c48d){_0x5169f0(_0x54c48d);})['catch'](function(_0x150621){_0x44ea2(_0x5a4e3f[_0x76ff('0x19')](0x1f4,_0x150621['message']));});});};exports[_0x76ff('0x36')]=function(_0x2de448){var _0x42ba15=this;return new Promise(function(_0x236100,_0x367fba){if(_0x2de448[_0x76ff('0x30')][_0x76ff('0x37')]&&!utils[_0x76ff('0x38')](_0x2de448[_0x76ff('0x30')][_0x76ff('0x37')])){throw new Error(util[_0x76ff('0x29')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x2de448[_0x76ff('0x30')]['channel']));}return db[_0x76ff('0xd')][_0x76ff('0x39')]({'where':_0x2de448[_0x76ff('0xf')][_0x76ff('0x1f')]||{},'attributes':['id','name',_0x76ff('0x33'),'internal',_0x76ff('0x22'),_0x76ff('0x3a'),'voicePause',_0x76ff('0x3b'),_0x76ff('0x3c'),_0x76ff('0x3d'),_0x76ff('0x3e'),_0x76ff('0x3f'),'whatsappPause','pauseType',_0x76ff('0x40')]})[_0x76ff('0x15')](function(_0x16b11b){if(!_0x16b11b){throw new Error(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x2de448[_0x76ff('0x41')]['id']));}return _0x16b11b['unpause'](_0x2de448['body'][_0x76ff('0x37')],_0x76ff('0x42'));})['then'](function(_0x2123dd){_0x236100(_0x2123dd);})[_0x76ff('0x18')](function(_0x506376){_0x367fba(_0x42ba15[_0x76ff('0x19')](0x1f4,_0x506376[_0x76ff('0x1a')]));});});};exports[_0x76ff('0x43')]=function(_0x58e76c){var _0x1f2de6=this;return new Promise(function(_0x30d6f2,_0x1c536a){var _0x224cb4;return db[_0x76ff('0xd')][_0x76ff('0x39')]({'where':_0x58e76c[_0x76ff('0xf')][_0x76ff('0x1f')]||{},'attributes':['id','name']})[_0x76ff('0x15')](function(_0x32be93){if(_0x32be93){_0x224cb4=_0x32be93;return db['UserVoiceQueueRt'][_0x76ff('0x44')]({'where':{'membername':_0x224cb4['name']},'individualHooks':!![]});}})[_0x76ff('0x15')](function(){if(_0x224cb4){return db[_0x76ff('0x25')][_0x76ff('0x26')]({'where':{'membername':_0x224cb4['name'],'exitAt':null}});}})[_0x76ff('0x15')](function(_0x1e6d21){if(_0x224cb4){if(_0x1e6d21&&_0x1e6d21[_0x76ff('0x28')]){var _0x359089=[];_0x1e6d21[_0x76ff('0x2d')](function(_0x1d2266){_0x359089[_0x76ff('0x2e')](_0x1d2266[_0x76ff('0x24')]({'exitAt':moment()[_0x76ff('0x29')](_0x76ff('0x2a'))}));});return BPromise[_0x76ff('0x45')](_0x359089);}}})[_0x76ff('0x15')](function(){if(_0x224cb4){return _0x224cb4['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x76ff('0x15')](function(_0x220b74){_0x30d6f2(_0x220b74);})[_0x76ff('0x18')](function(_0x575714){_0x1c536a(_0x1f2de6[_0x76ff('0x19')](0x1f4,_0x575714[_0x76ff('0x1a')]));});});};exports['LoginUser']=function(_0xe2638){var _0x5a6fd3=this;return new Promise(function(_0x137eca,_0x2bee03){var _0xbf1688;var _0x551991;var _0x4800f2;var _0x3d5a35;return db[_0x76ff('0xd')][_0x76ff('0x39')]({'where':_0xe2638[_0x76ff('0xf')][_0x76ff('0x1f')]||{},'attributes':['id',_0x76ff('0x20'),_0x76ff('0x33'),_0x76ff('0x46'),'phone',_0x76ff('0x21'),_0x76ff('0x47'),'interface']})['then'](function(_0x52c1de){if(_0x52c1de){_0xbf1688=_0x52c1de;_0x3d5a35=_0xe2638[_0x76ff('0x30')][_0x76ff('0x22')]?_0xe2638['body'][_0x76ff('0x22')]:util['format'](_0x76ff('0x48'),_0xbf1688['name']);return db['User']['count']({'where':{'role':_0x76ff('0x49'),'online':!![],'id':{'$ne':_0xbf1688['id']}}});}})[_0x76ff('0x15')](function(_0x29c57e){if(_0x29c57e){_0x4800f2=_0x29c57e;return require(_0x76ff('0x4a'))[_0x76ff('0x4b')]();}})[_0x76ff('0x15')](function(_0x6f63de){if(_0x6f63de&&_0x6f63de[_0x76ff('0x4c')]&&_0x4800f2>=_0x6f63de[_0x76ff('0x4c')]){throw new Error(_0x76ff('0x4d'));}})['then'](function(){if(_0xbf1688){return db[_0x76ff('0x23')][_0x76ff('0x44')]({'where':{'membername':_0xbf1688[_0x76ff('0x20')]},'individualHooks':!![]});}})[_0x76ff('0x15')](function(){if(_0xbf1688){return _0xbf1688['getVoiceQueues']({'raw':!![]});}})[_0x76ff('0x15')](function(_0x359649){if(_0xbf1688){if(_0x359649){var _0x947754=[];_0x551991=_0x359649;if(_0x551991[_0x76ff('0x28')]){for(var _0x1acfd3=0x0;_0x1acfd3<_0x551991[_0x76ff('0x28')];_0x1acfd3++){_0x947754[_0x76ff('0x2e')](db[_0x76ff('0x23')][_0x76ff('0x4e')]({'membername':_0xbf1688[_0x76ff('0x20')],'UserId':_0xbf1688['id'],'queue_name':_0x551991[_0x1acfd3][_0x76ff('0x20')],'VoiceQueueId':_0x551991[_0x1acfd3]['id'],'interface':_0x3d5a35,'paused':_0xbf1688['loginInPause']||![],'penalty':_0x551991[_0x1acfd3]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x947754);}}}})[_0x76ff('0x15')](function(){if(_0xbf1688){return db[_0x76ff('0x25')][_0x76ff('0x26')]({'where':{'membername':_0xbf1688[_0x76ff('0x20')],'exitAt':null}});}})[_0x76ff('0x15')](function(_0x2dcc97){if(_0xbf1688){if(_0x2dcc97&&_0x2dcc97[_0x76ff('0x28')]){var _0x3257d8=[];_0x2dcc97[_0x76ff('0x2d')](function(_0x1e7efa){_0x3257d8[_0x76ff('0x2e')](_0x1e7efa[_0x76ff('0x24')]({'exitAt':moment()['format'](_0x76ff('0x2a'))}));});return BPromise[_0x76ff('0x45')](_0x3257d8);}}})[_0x76ff('0x15')](function(){if(_0xbf1688){var _0x2c6a4d=[];var _0x36fa3d=[];var _0x416eb5=utils[_0x76ff('0x2c')]();var _0x10af9d={'membername':_0xbf1688[_0x76ff('0x20')],'interface':_0x3d5a35,'enterAt':moment()[_0x76ff('0x29')](_0x76ff('0x2a')),'role':_0xbf1688[_0x76ff('0x33')],'internal':_0xbf1688[_0x76ff('0x21')]};_0x416eb5['forEach'](function(_0xb90c42){_0x2c6a4d[_0x76ff('0x2e')](_[_0x76ff('0x4f')]({'channel':_0xb90c42,'type':_0x76ff('0x50'),'data1':_0x76ff('0x51'),'data2':_0x3d5a35},_0x10af9d));if(_0xbf1688[_0x76ff('0x47')]){_0x36fa3d[_0x76ff('0x2e')](_[_0x76ff('0x4f')]({'channel':_0xb90c42,'type':'PAUSE','data1':_0x76ff('0x52')},_0x10af9d));}});return db['MemberReport'][_0x76ff('0x35')](_0x2c6a4d[_0x76ff('0x53')](_0x36fa3d),{'individualHooks':!![]});}})[_0x76ff('0x15')](function(){if(_0xbf1688){return _0xbf1688[_0x76ff('0x24')]({'online':!![],'lastLoginAt':moment()[_0x76ff('0x29')](_0x76ff('0x2a')),'voicePause':_0xbf1688[_0x76ff('0x47')]||![],'mailPause':_0xbf1688[_0x76ff('0x47')]||![],'chatPause':_0xbf1688[_0x76ff('0x47')]||![],'faxPause':_0xbf1688[_0x76ff('0x47')]||![],'smsPause':_0xbf1688['loginInPause']||![],'openchannelPause':_0xbf1688[_0x76ff('0x47')]||![],'pauseType':_0xbf1688[_0x76ff('0x47')]?_0x76ff('0x52'):null,'lastPauseAt':moment()['format'](_0x76ff('0x2a')),'interface':_0x3d5a35});}})[_0x76ff('0x15')](function(_0xf091ed){_0x137eca(_0xf091ed);})['catch'](function(_0x5f0d7e){_0x2bee03(_0x5a6fd3['error'](0x1f4,_0x5f0d7e[_0x76ff('0x1a')]));});});};
\ No newline at end of file
index f9e70e7..715e929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa035=['user:','./user.events','save','remove','emit','removeListener'];(function(_0x485f66,_0x17840c){var _0x1ba707=function(_0x30c2f0){while(--_0x30c2f0){_0x485f66['push'](_0x485f66['shift']());}};_0x1ba707(++_0x17840c);}(_0xa035,0x1bd));var _0x5a03=function(_0x111dc1,_0x26fca9){_0x111dc1=_0x111dc1-0x0;var _0x321714=_0xa035[_0x111dc1];return _0x321714;};'use strict';var UserEvents=require(_0x5a03('0x0'));var events=[_0x5a03('0x1'),_0x5a03('0x2'),'update'];function createListener(_0x37f27b,_0x5cf8f0){return function(_0x33daaf){_0x5cf8f0[_0x5a03('0x3')](_0x37f27b,_0x33daaf);};}function removeListener(_0x2ce6c9,_0xdb0cd1){return function(){UserEvents[_0x5a03('0x4')](_0x2ce6c9,_0xdb0cd1);};}exports['register']=function(_0xf29097){for(var _0x18369a=0x0,_0x3fea45=events['length'];_0x18369a<_0x3fea45;_0x18369a++){var _0x559ae4=events[_0x18369a];var _0xf2d371=createListener(_0x5a03('0x5')+_0x559ae4,_0xf29097);UserEvents['on'](_0x559ae4,_0xf2d371);}};
\ No newline at end of file
+var _0x81bc=['update','emit','register','user:','./user.events','save','remove'];(function(_0x2f4648,_0x5b329c){var _0x5e4f73=function(_0x1ab5cc){while(--_0x1ab5cc){_0x2f4648['push'](_0x2f4648['shift']());}};_0x5e4f73(++_0x5b329c);}(_0x81bc,0x10e));var _0xc81b=function(_0x28ef4e,_0x202aa3){_0x28ef4e=_0x28ef4e-0x0;var _0x1aa097=_0x81bc[_0x28ef4e];return _0x1aa097;};'use strict';var UserEvents=require(_0xc81b('0x0'));var events=[_0xc81b('0x1'),_0xc81b('0x2'),_0xc81b('0x3')];function createListener(_0x22fcd9,_0x583522){return function(_0x3dbd07){_0x583522[_0xc81b('0x4')](_0x22fcd9,_0x3dbd07);};}function removeListener(_0x444626,_0xc62e81){return function(){UserEvents['removeListener'](_0x444626,_0xc62e81);};}exports[_0xc81b('0x5')]=function(_0x40458c){for(var _0x36e0f7=0x0,_0x40d987=events['length'];_0x36e0f7<_0x40d987;_0x36e0f7++){var _0x15db19=events[_0x36e0f7];var _0x119ee5=createListener(_0xc81b('0x6')+_0x15db19,_0x40458c);UserEvents['on'](_0x15db19,_0x119ee5);}};
\ No newline at end of file
index dba5422..ea12418 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(_0x428d83,_0x177637){var _0x181681=function(_0x33a10d){while(--_0x33a10d){_0x428d83['push'](_0x428d83['shift']());}};_0x181681(++_0x177637);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x1e00ec,_0x74bce4){var _0x3e5690=function(_0x44b47c){while(--_0x44b47c){_0x1e00ec['push'](_0x1e00ec['shift']());}};_0x3e5690(++_0x74bce4);}(_0xe706,0xa3));var _0x6e70=function(_0x190ceb,_0x2345b2){_0x190ceb=_0x190ceb-0x0;var _0x5ce806=_0xe706[_0x190ceb];return _0x5ce806;};'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 6d6f7f7..03a844e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5d=['exports','INTEGER','sequelize'];(function(_0x165ece,_0x1f0a42){var _0x545fe6=function(_0x1ac8e9){while(--_0x1ac8e9){_0x165ece['push'](_0x165ece['shift']());}};_0x545fe6(++_0x1f0a42);}(_0x6b5d,0xd4));var _0xd6b5=function(_0x14b0ab,_0x5d28c1){_0x14b0ab=_0x14b0ab-0x0;var _0x1f37f3=_0x6b5d[_0x14b0ab];return _0x1f37f3;};'use strict';var Sequelize=require(_0xd6b5('0x0'));module[_0xd6b5('0x1')]={'penalty':{'type':Sequelize[_0xd6b5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa6ee=['INTEGER','sequelize'];(function(_0x1d7bfb,_0x66ec6f){var _0x25569e=function(_0x1d909d){while(--_0x1d909d){_0x1d7bfb['push'](_0x1d7bfb['shift']());}};_0x25569e(++_0x66ec6f);}(_0xa6ee,0xd3));var _0xea6e=function(_0x51ca27,_0x191c81){_0x51ca27=_0x51ca27-0x0;var _0x4d9f8d=_0xa6ee[_0x51ca27];return _0x4d9f8d;};'use strict';var Sequelize=require(_0xea6e('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xea6e('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index eb44208..cc9f30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d78=['./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x31ce84,_0x18154a){var _0x110701=function(_0x194041){while(--_0x194041){_0x31ce84['push'](_0x31ce84['shift']());}};_0x110701(++_0x18154a);}(_0x7d78,0xb9));var _0x87d7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7d78[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x87d7('0x0'));var logger=require(_0x87d7('0x1'))('api');var moment=require(_0x87d7('0x2'));var BPromise=require(_0x87d7('0x3'));var rp=require(_0x87d7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x87d7('0x5'));var config=require(_0x87d7('0x6'));var attributes=require(_0x87d7('0x7'));module[_0x87d7('0x8')]=function(_0x388302,_0x31dbd9){return _0x388302[_0x87d7('0x9')](_0x87d7('0xa'),attributes,{'tableName':_0x87d7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7645=['api','bluebird','request-promise','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x354235,_0x31f330){var _0x46dab2=function(_0x3e46f2){while(--_0x3e46f2){_0x354235['push'](_0x354235['shift']());}};_0x46dab2(++_0x31f330);}(_0x7645,0xb1));var _0x5764=function(_0x49b820,_0x57f276){_0x49b820=_0x49b820-0x0;var _0x281fed=_0x7645[_0x49b820];return _0x281fed;};'use strict';var _=require(_0x5764('0x0'));var util=require(_0x5764('0x1'));var logger=require(_0x5764('0x2'))(_0x5764('0x3'));var moment=require('moment');var BPromise=require(_0x5764('0x4'));var rp=require(_0x5764('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5764('0x6'));var config=require(_0x5764('0x7'));var attributes=require(_0x5764('0x8'));module[_0x5764('0x9')]=function(_0x436f8a,_0x1fc876){return _0x436f8a[_0x5764('0xa')]('UserChatQueue',attributes,{'tableName':_0x5764('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e0e70dd..b1a248e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x765e,0x11e));var _0xe765=function(_0x4242d9,_0x4adeb3){_0x4242d9=_0x4242d9-0x0;var _0x3582b4=_0x765e[_0x4242d9];return _0x3582b4;};'use strict';var _=require(_0xe765('0x0'));var util=require(_0xe765('0x1'));var moment=require(_0xe765('0x2'));var BPromise=require('bluebird');var rs=require(_0xe765('0x3'));var fs=require('fs');var Redis=require(_0xe765('0x4'));var db=require(_0xe765('0x5'))['db'];var utils=require(_0xe765('0x6'));var logger=require(_0xe765('0x7'))('rpc');var config=require(_0xe765('0x8'));var jayson=require(_0xe765('0x9'));var client=jayson[_0xe765('0xa')][_0xe765('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x585491,_0x4a8c11,_0x2d5337){return new BPromise(function(_0x17a667,_0x4910d6){return client[_0xe765('0xc')](_0x585491,_0x2d5337)['then'](function(_0x16ec95){logger[_0xe765('0xd')](_0xe765('0xe'),_0x4a8c11,_0xe765('0xf'));logger[_0xe765('0x10')](_0xe765('0x11'),_0x4a8c11,'request\x20sent',JSON[_0xe765('0x12')](_0x16ec95));if(_0x16ec95['error']){if(_0x16ec95['error']['code']===0x1f4){logger[_0xe765('0x13')]('UserChatQueue,\x20%s,\x20%s',_0x4a8c11,_0x16ec95[_0xe765('0x13')]['message']);return _0x4910d6(_0x16ec95['error'][_0xe765('0x14')]);}logger[_0xe765('0x13')](_0xe765('0xe'),_0x4a8c11,_0x16ec95[_0xe765('0x13')][_0xe765('0x14')]);return _0x17a667(_0x16ec95['error'][_0xe765('0x14')]);}else{logger['info']('UserChatQueue,\x20%s,\x20%s',_0x4a8c11,'request\x20sent');_0x17a667(_0x16ec95[_0xe765('0x15')][_0xe765('0x14')]);}})['catch'](function(_0x4c4162){logger['error'](_0xe765('0xe'),_0x4a8c11,_0x4c4162);_0x4910d6(_0x4c4162);});});}
\ No newline at end of file
+var _0xc107=['jayson/promise','client','request','then','info','request\x20sent','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3e0b8f,_0x1cddeb){var _0x22f742=function(_0xacb1bc){while(--_0xacb1bc){_0x3e0b8f['push'](_0x3e0b8f['shift']());}};_0x22f742(++_0x1cddeb);}(_0xc107,0xdf));var _0x7c10=function(_0x42ae98,_0x1b8365){_0x42ae98=_0x42ae98-0x0;var _0x4a314a=_0xc107[_0x42ae98];return _0x4a314a;};'use strict';var _=require('lodash');var util=require(_0x7c10('0x0'));var moment=require(_0x7c10('0x1'));var BPromise=require(_0x7c10('0x2'));var rs=require(_0x7c10('0x3'));var fs=require('fs');var Redis=require(_0x7c10('0x4'));var db=require(_0x7c10('0x5'))['db'];var utils=require(_0x7c10('0x6'));var logger=require(_0x7c10('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c10('0x8'));var client=jayson[_0x7c10('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f813e,_0x73ee01,_0x498300){return new BPromise(function(_0x104891,_0x744b73){return client[_0x7c10('0xa')](_0x4f813e,_0x498300)[_0x7c10('0xb')](function(_0x4d8a13){logger[_0x7c10('0xc')]('UserChatQueue,\x20%s,\x20%s',_0x73ee01,_0x7c10('0xd'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x73ee01,_0x7c10('0xd'),JSON[_0x7c10('0xe')](_0x4d8a13));if(_0x4d8a13['error']){if(_0x4d8a13[_0x7c10('0xf')][_0x7c10('0x10')]===0x1f4){logger[_0x7c10('0xf')](_0x7c10('0x11'),_0x73ee01,_0x4d8a13[_0x7c10('0xf')][_0x7c10('0x12')]);return _0x744b73(_0x4d8a13[_0x7c10('0xf')][_0x7c10('0x12')]);}logger[_0x7c10('0xf')](_0x7c10('0x11'),_0x73ee01,_0x4d8a13[_0x7c10('0xf')]['message']);return _0x104891(_0x4d8a13[_0x7c10('0xf')]['message']);}else{logger[_0x7c10('0xc')](_0x7c10('0x11'),_0x73ee01,'request\x20sent');_0x104891(_0x4d8a13[_0x7c10('0x13')][_0x7c10('0x12')]);}})[_0x7c10('0x14')](function(_0x2fd76a){logger[_0x7c10('0xf')](_0x7c10('0x11'),_0x73ee01,_0x2fd76a);_0x744b73(_0x2fd76a);});});}
\ No newline at end of file
index 05253eb..28a6650 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(_0x176724,_0x4fcb00){var _0x16579e=function(_0x2c6778){while(--_0x2c6778){_0x176724['push'](_0x176724['shift']());}};_0x16579e(++_0x4fcb00);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5e3139,_0x5bad26){var _0x3cdf31=function(_0x51647e){while(--_0x51647e){_0x5e3139['push'](_0x5e3139['shift']());}};_0x3cdf31(++_0x5bad26);}(_0x9c44,0x178));var _0x49c4=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x9c44[_0x255d5b];return _0x3e141a;};'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 008c122..cc3aed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dd4=['STRING','sequelize','exports','INTEGER'];(function(_0xaaf6a3,_0x46bf1c){var _0x255dbe=function(_0x1698e3){while(--_0x1698e3){_0xaaf6a3['push'](_0xaaf6a3['shift']());}};_0x255dbe(++_0x46bf1c);}(_0x6dd4,0x1a5));var _0x46dd=function(_0x274838,_0x429c03){_0x274838=_0x274838-0x0;var _0x164974=_0x6dd4[_0x274838];return _0x164974;};'use strict';var Sequelize=require(_0x46dd('0x0'));module[_0x46dd('0x1')]={'penalty':{'type':Sequelize[_0x46dd('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x46dd('0x3')]}};
\ No newline at end of file
+var _0x305e=['INTEGER','STRING','sequelize'];(function(_0x35181c,_0x82694a){var _0xe14bf9=function(_0x2be9b7){while(--_0x2be9b7){_0x35181c['push'](_0x35181c['shift']());}};_0xe14bf9(++_0x82694a);}(_0x305e,0x8c));var _0xe305=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x305e[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0xe305('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xe305('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xe305('0x2')]}};
\ No newline at end of file
index 72eece9..e1efd9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb94=['UserFaxQueue','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define'];(function(_0x5179a5,_0x419746){var _0x15c8ce=function(_0x1b13c4){while(--_0x1b13c4){_0x5179a5['push'](_0x5179a5['shift']());}};_0x15c8ce(++_0x419746);}(_0xcb94,0x1b9));var _0x4cb9=function(_0x421464,_0x25ed6b){_0x421464=_0x421464-0x0;var _0x102a80=_0xcb94[_0x421464];return _0x102a80;};'use strict';var _=require(_0x4cb9('0x0'));var util=require(_0x4cb9('0x1'));var logger=require('../../config/logger')(_0x4cb9('0x2'));var moment=require(_0x4cb9('0x3'));var BPromise=require(_0x4cb9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4cb9('0x5'));var config=require(_0x4cb9('0x6'));var attributes=require(_0x4cb9('0x7'));module[_0x4cb9('0x8')]=function(_0x1274f4,_0x4d94fc){return _0x1274f4[_0x4cb9('0x9')](_0x4cb9('0xa'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31f9=['./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x399baf,_0x57593d){var _0x4c287e=function(_0xe19dba){while(--_0xe19dba){_0x399baf['push'](_0x399baf['shift']());}};_0x4c287e(++_0x57593d);}(_0x31f9,0x94));var _0x931f=function(_0x368113,_0x123937){_0x368113=_0x368113-0x0;var _0x1a6884=_0x31f9[_0x368113];return _0x1a6884;};'use strict';var _=require(_0x931f('0x0'));var util=require(_0x931f('0x1'));var logger=require(_0x931f('0x2'))(_0x931f('0x3'));var moment=require(_0x931f('0x4'));var BPromise=require('bluebird');var rp=require(_0x931f('0x5'));var fs=require('fs');var path=require(_0x931f('0x6'));var rimraf=require(_0x931f('0x7'));var config=require('../../config/environment');var attributes=require(_0x931f('0x8'));module[_0x931f('0x9')]=function(_0x44515d,_0x136af6){return _0x44515d[_0x931f('0xa')](_0x931f('0xb'),attributes,{'tableName':_0x931f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84ec600..a4ff878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd30=['error','code','message','result','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x17f455,_0x175a58){var _0x526edb=function(_0x17a831){while(--_0x17a831){_0x17f455['push'](_0x17f455['shift']());}};_0x526edb(++_0x175a58);}(_0xdd30,0x144));var _0x0dd3=function(_0x47b0a4,_0x457d86){_0x47b0a4=_0x47b0a4-0x0;var _0x2296bd=_0xdd30[_0x47b0a4];return _0x2296bd;};'use strict';var _=require('lodash');var util=require(_0x0dd3('0x0'));var moment=require('moment');var BPromise=require(_0x0dd3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0dd3('0x2'));var db=require(_0x0dd3('0x3'))['db'];var utils=require(_0x0dd3('0x4'));var logger=require(_0x0dd3('0x5'))('rpc');var config=require(_0x0dd3('0x6'));var jayson=require(_0x0dd3('0x7'));var client=jayson['client'][_0x0dd3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32a08d,_0x5bfafc,_0x100563){return new BPromise(function(_0xbfdbd4,_0x5fc804){return client['request'](_0x32a08d,_0x100563)[_0x0dd3('0x9')](function(_0xdfb7db){logger[_0x0dd3('0xa')](_0x0dd3('0xb'),_0x5bfafc,_0x0dd3('0xc'));logger[_0x0dd3('0xd')](_0x0dd3('0xe'),_0x5bfafc,'request\x20sent',JSON[_0x0dd3('0xf')](_0xdfb7db));if(_0xdfb7db[_0x0dd3('0x10')]){if(_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x11')]===0x1f4){logger['error'](_0x0dd3('0xb'),_0x5bfafc,_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x12')]);return _0x5fc804(_0xdfb7db['error'][_0x0dd3('0x12')]);}logger[_0x0dd3('0x10')](_0x0dd3('0xb'),_0x5bfafc,_0xdfb7db['error'][_0x0dd3('0x12')]);return _0xbfdbd4(_0xdfb7db[_0x0dd3('0x10')][_0x0dd3('0x12')]);}else{logger[_0x0dd3('0xa')](_0x0dd3('0xb'),_0x5bfafc,_0x0dd3('0xc'));_0xbfdbd4(_0xdfb7db[_0x0dd3('0x13')][_0x0dd3('0x12')]);}})['catch'](function(_0x4574d6){logger[_0x0dd3('0x10')](_0x0dd3('0xb'),_0x5bfafc,_0x4574d6);_0x5fc804(_0x4574d6);});});}
\ No newline at end of file
+var _0xbd49=['../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x5d33fb,_0x5bf99e){var _0x11733a=function(_0x10b543){while(--_0x10b543){_0x5d33fb['push'](_0x5d33fb['shift']());}};_0x11733a(++_0x5bf99e);}(_0xbd49,0x131));var _0x9bd4=function(_0x2758f6,_0x327e6e){_0x2758f6=_0x2758f6-0x0;var _0x5686a1=_0xbd49[_0x2758f6];return _0x5686a1;};'use strict';var _=require(_0x9bd4('0x0'));var util=require(_0x9bd4('0x1'));var moment=require(_0x9bd4('0x2'));var BPromise=require(_0x9bd4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bd4('0x4'));var db=require(_0x9bd4('0x5'))['db'];var utils=require(_0x9bd4('0x6'));var logger=require(_0x9bd4('0x7'))(_0x9bd4('0x8'));var config=require(_0x9bd4('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9bd4('0xa')][_0x9bd4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xd720fd,_0x519ce9,_0x5181b3){return new BPromise(function(_0x341b67,_0x1e1d85){return client[_0x9bd4('0xc')](_0xd720fd,_0x5181b3)['then'](function(_0x49db93){logger[_0x9bd4('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x519ce9,_0x9bd4('0xe'));logger[_0x9bd4('0xf')](_0x9bd4('0x10'),_0x519ce9,_0x9bd4('0xe'),JSON[_0x9bd4('0x11')](_0x49db93));if(_0x49db93[_0x9bd4('0x12')]){if(_0x49db93['error'][_0x9bd4('0x13')]===0x1f4){logger[_0x9bd4('0x12')](_0x9bd4('0x14'),_0x519ce9,_0x49db93['error']['message']);return _0x1e1d85(_0x49db93['error'][_0x9bd4('0x15')]);}logger['error'](_0x9bd4('0x14'),_0x519ce9,_0x49db93[_0x9bd4('0x12')][_0x9bd4('0x15')]);return _0x341b67(_0x49db93['error'][_0x9bd4('0x15')]);}else{logger[_0x9bd4('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x519ce9,_0x9bd4('0xe'));_0x341b67(_0x49db93[_0x9bd4('0x16')]['message']);}})[_0x9bd4('0x17')](function(_0x55cd91){logger['error'](_0x9bd4('0x14'),_0x519ce9,_0x55cd91);_0x1e1d85(_0x55cd91);});});}
\ No newline at end of file
index 04f4191..7155e45 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(_0xbe61bd,_0x36d1b8){var _0x20d892=function(_0x467ed4){while(--_0x467ed4){_0xbe61bd['push'](_0xbe61bd['shift']());}};_0x20d892(++_0x36d1b8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x304b67,_0x31cb39){_0x304b67=_0x304b67-0x0;var _0x493afb=_0xcb91[_0x304b67];return _0x493afb;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2fd808,_0x48e95a){var _0xf44c73=function(_0x51ae72){while(--_0x51ae72){_0x2fd808['push'](_0x2fd808['shift']());}};_0xf44c73(++_0x48e95a);}(_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 4de1135..2ac1ac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2560=['exports','INTEGER'];(function(_0x338407,_0x39b591){var _0x4db7e3=function(_0x2407ad){while(--_0x2407ad){_0x338407['push'](_0x338407['shift']());}};_0x4db7e3(++_0x39b591);}(_0x2560,0xf0));var _0x0256=function(_0x383e34,_0x46a499){_0x383e34=_0x383e34-0x0;var _0x319e3b=_0x2560[_0x383e34];return _0x319e3b;};'use strict';var Sequelize=require('sequelize');module[_0x0256('0x0')]={'penalty':{'type':Sequelize[_0x0256('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6152=['exports','INTEGER','sequelize'];(function(_0xa950ed,_0x479715){var _0x581b60=function(_0x213740){while(--_0x213740){_0xa950ed['push'](_0xa950ed['shift']());}};_0x581b60(++_0x479715);}(_0x6152,0x95));var _0x2615=function(_0x15633a,_0xb50533){_0x15633a=_0x15633a-0x0;var _0x2a5624=_0x6152[_0x15633a];return _0x2a5624;};'use strict';var Sequelize=require(_0x2615('0x0'));module[_0x2615('0x1')]={'penalty':{'type':Sequelize[_0x2615('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 60cb134..846af2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b2=['path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','lodash','util','api','bluebird','request-promise'];(function(_0x4cac90,_0x371aa1){var _0x562499=function(_0x207a46){while(--_0x207a46){_0x4cac90['push'](_0x4cac90['shift']());}};_0x562499(++_0x371aa1);}(_0xb3b2,0x1be));var _0x2b3b=function(_0x49da7a,_0xbf8e78){_0x49da7a=_0x49da7a-0x0;var _0xf0dcba=_0xb3b2[_0x49da7a];return _0xf0dcba;};'use strict';var _=require(_0x2b3b('0x0'));var util=require(_0x2b3b('0x1'));var logger=require('../../config/logger')(_0x2b3b('0x2'));var moment=require('moment');var BPromise=require(_0x2b3b('0x3'));var rp=require(_0x2b3b('0x4'));var fs=require('fs');var path=require(_0x2b3b('0x5'));var rimraf=require(_0x2b3b('0x6'));var config=require(_0x2b3b('0x7'));var attributes=require(_0x2b3b('0x8'));module[_0x2b3b('0x9')]=function(_0x53b2bd,_0xb78ff8){return _0x53b2bd[_0x2b3b('0xa')]('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9d72=['../../config/environment','./userMailQueue.attributes','define','UserMailQueue','user_has_mail_queues','util','../../config/logger','bluebird','request-promise','rimraf'];(function(_0xbd665e,_0x519493){var _0xf89f29=function(_0x5337ca){while(--_0x5337ca){_0xbd665e['push'](_0xbd665e['shift']());}};_0xf89f29(++_0x519493);}(_0x9d72,0xff));var _0x29d7=function(_0x840300,_0x3fa1df){_0x840300=_0x840300-0x0;var _0x4be032=_0x9d72[_0x840300];return _0x4be032;};'use strict';var _=require('lodash');var util=require(_0x29d7('0x0'));var logger=require(_0x29d7('0x1'))('api');var moment=require('moment');var BPromise=require(_0x29d7('0x2'));var rp=require(_0x29d7('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x29d7('0x4'));var config=require(_0x29d7('0x5'));var attributes=require(_0x29d7('0x6'));module['exports']=function(_0x2c673b,_0x1571f1){return _0x2c673b[_0x29d7('0x7')](_0x29d7('0x8'),attributes,{'tableName':_0x29d7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee9d369..326ab9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserMailQueue,\x20%s,\x20%s','message','result'];(function(_0xb60622,_0x27b7a8){var _0x52b970=function(_0xde6789){while(--_0xde6789){_0xb60622['push'](_0xb60622['shift']());}};_0x52b970(++_0x27b7a8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x49c68e,_0x1c1673){_0x49c68e=_0x49c68e-0x0;var _0x33032b=_0xf3cd[_0x49c68e];return _0x33032b;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var moment=require(_0xdf3c('0x2'));var BPromise=require(_0xdf3c('0x3'));var rs=require(_0xdf3c('0x4'));var fs=require('fs');var Redis=require(_0xdf3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf3c('0x6'));var logger=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf3c('0x9'));var client=jayson[_0xdf3c('0xa')][_0xdf3c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0601,_0x106021,_0x28edae){return new BPromise(function(_0x52c073,_0x15705d){return client['request'](_0x1f0601,_0x28edae)['then'](function(_0x22d8ae){logger[_0xdf3c('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0xdf3c('0xd'));logger[_0xdf3c('0xe')](_0xdf3c('0xf'),_0x106021,_0xdf3c('0xd'),JSON[_0xdf3c('0x10')](_0x22d8ae));if(_0x22d8ae[_0xdf3c('0x11')]){if(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x12')]===0x1f4){logger['error'](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);return _0x15705d(_0x22d8ae[_0xdf3c('0x11')]['message']);}logger[_0xdf3c('0x11')](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')]['message']);return _0x52c073(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);}else{logger[_0xdf3c('0xc')](_0xdf3c('0x13'),_0x106021,_0xdf3c('0xd'));_0x52c073(_0x22d8ae[_0xdf3c('0x15')][_0xdf3c('0x14')]);}})[_0xdf3c('0x16')](function(_0x2986d0){logger[_0xdf3c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x106021,_0x2986d0);_0x15705d(_0x2986d0);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x7217,0x19e));var _0x7721=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x7217[_0x46aff0];return _0x9d78cf;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index f0de080..f07155d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b1=['./userNotification.controller','isAuthenticated','sendUserNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x55de4e,_0x364f90){var _0x5268de=function(_0xa33fea){while(--_0xa33fea){_0x55de4e['push'](_0x55de4e['shift']());}};_0x5268de(++_0x364f90);}(_0x35b1,0x70));var _0x135b=function(_0x4c825d,_0x10ec2b){_0x4c825d=_0x4c825d-0x0;var _0x43de87=_0x35b1[_0x4c825d];return _0x43de87;};'use strict';var multer=require(_0x135b('0x0'));var util=require(_0x135b('0x1'));var path=require('path');var timeout=require(_0x135b('0x2'));var express=require(_0x135b('0x3'));var router=express[_0x135b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x135b('0x5'));var interaction=require(_0x135b('0x6'));var config=require(_0x135b('0x7'));var controller=require(_0x135b('0x8'));router['post']('/',auth[_0x135b('0x9')](),controller[_0x135b('0xa')]);module[_0x135b('0xb')]=router;
\ No newline at end of file
+var _0xd5f2=['fs-extra','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','util','connect-timeout','express','Router'];(function(_0x1e420f,_0x577e06){var _0x437d23=function(_0x26df4e){while(--_0x26df4e){_0x1e420f['push'](_0x1e420f['shift']());}};_0x437d23(++_0x577e06);}(_0xd5f2,0x80));var _0x2d5f=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xd5f2[_0x1a72f3];return _0x57ef47;};'use strict';var multer=require('multer');var util=require(_0x2d5f('0x0'));var path=require('path');var timeout=require(_0x2d5f('0x1'));var express=require(_0x2d5f('0x2'));var router=express[_0x2d5f('0x3')]();var fs_extra=require(_0x2d5f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2d5f('0x5'));var controller=require(_0x2d5f('0x6'));router[_0x2d5f('0x7')]('/',auth[_0x2d5f('0x8')](),controller[_0x2d5f('0x9')]);module[_0x2d5f('0xa')]=router;
\ No newline at end of file
index 1cc3f79..d451c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe78=['TEXT','STRING','sequelize'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0xbe78,0x14f));var _0x8be7=function(_0x5a8c38,_0x59a704){_0x5a8c38=_0x5a8c38-0x0;var _0x40d01d=_0xbe78[_0x5a8c38];return _0x40d01d;};'use strict';var Sequelize=require(_0x8be7('0x0'));module['exports']={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x8be7('0x1')]},'recipientsDescription':{'type':Sequelize[_0x8be7('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x1283=['STRING','BOOLEAN','sequelize','TEXT'];(function(_0x43ed71,_0x2c9815){var _0x3acc8f=function(_0x52ea7c){while(--_0x52ea7c){_0x43ed71['push'](_0x43ed71['shift']());}};_0x3acc8f(++_0x2c9815);}(_0x1283,0x116));var _0x3128=function(_0x1c2051,_0x4cb6b9){_0x1c2051=_0x1c2051-0x0;var _0x2b58a0=_0x1283[_0x1c2051];return _0x2b58a0;};'use strict';var Sequelize=require(_0x3128('0x0'));module['exports']={'body':{'type':Sequelize[_0x3128('0x1')]},'senderName':{'type':Sequelize[_0x3128('0x2')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x3128('0x2')]},'beep':{'type':Sequelize[_0x3128('0x3')]}};
\ No newline at end of file
index ada08d7..b237233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad44=['forEach','recipient','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','User','union','includes','queue','Queue','ids','push','all','findOne','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','then','destroy','error','name','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','user','some','toLowerCase','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create'];(function(_0x53691f,_0x12a441){var _0x7d90eb=function(_0x9ed0bc){while(--_0x9ed0bc){_0x53691f['push'](_0x53691f['shift']());}};_0x7d90eb(++_0x12a441);}(_0xad44,0x7e));var _0x4ad4=function(_0x7c9fba,_0x10b015){_0x7c9fba=_0x7c9fba-0x0;var _0x5cceed=_0xad44[_0x7c9fba];return _0x5cceed;};'use strict';var emlformat=require(_0x4ad4('0x0'));var rimraf=require(_0x4ad4('0x1'));var zipdir=require(_0x4ad4('0x2'));var jsonpatch=require(_0x4ad4('0x3'));var rp=require(_0x4ad4('0x4'));var moment=require(_0x4ad4('0x5'));var BPromise=require(_0x4ad4('0x6'));var Mustache=require(_0x4ad4('0x7'));var util=require(_0x4ad4('0x8'));var path=require(_0x4ad4('0x9'));var sox=require(_0x4ad4('0xa'));var csv=require(_0x4ad4('0xb'));var ejs=require(_0x4ad4('0xc'));var fs=require('fs');var fs_extra=require(_0x4ad4('0xd'));var _=require(_0x4ad4('0xe'));var squel=require(_0x4ad4('0xf'));var crypto=require(_0x4ad4('0x10'));var jsforce=require(_0x4ad4('0x11'));var deskjs=require(_0x4ad4('0x12'));var toCsv=require(_0x4ad4('0xb'));var querystring=require(_0x4ad4('0x13'));var Papa=require(_0x4ad4('0x14'));var Redis=require(_0x4ad4('0x15'));var authService=require(_0x4ad4('0x16'));var qs=require(_0x4ad4('0x17'));var as=require(_0x4ad4('0x18'));var hardwareService=require(_0x4ad4('0x19'));var logger=require(_0x4ad4('0x1a'))(_0x4ad4('0x1b'));var utils=require(_0x4ad4('0x1c'));var config=require(_0x4ad4('0x1d'));var licenseUtil=require(_0x4ad4('0x1e'));var db=require('../../mysqldb')['db'];config[_0x4ad4('0x1f')]=_[_0x4ad4('0x20')](config[_0x4ad4('0x1f')],{'host':_0x4ad4('0x21'),'port':0x18eb});var socket=require(_0x4ad4('0x22'))(new Redis(config[_0x4ad4('0x1f')]));require('./userNotification.socket')[_0x4ad4('0x23')](socket);function respondWithStatusCode(_0x1b020c,_0x20a14a){_0x20a14a=_0x20a14a||0xcc;return function(_0x9cdf01){if(_0x9cdf01){return _0x1b020c[_0x4ad4('0x24')](_0x20a14a);}return _0x1b020c[_0x4ad4('0x25')](_0x20a14a)[_0x4ad4('0x26')]();};}function respondWithResult(_0x22d503,_0x22dbbf){_0x22dbbf=_0x22dbbf||0xc8;return function(_0x2db005){if(_0x2db005){return _0x22d503[_0x4ad4('0x25')](_0x22dbbf)[_0x4ad4('0x27')](_0x2db005);}};}function respondWithFilteredResult(_0x2d37b6,_0x2f3546){return function(_0x8ffa14){if(_0x8ffa14){var _0x83a4e3=typeof _0x2f3546[_0x4ad4('0x28')]==='undefined'&&typeof _0x2f3546[_0x4ad4('0x29')]===_0x4ad4('0x2a');var _0x50ab48=_0x8ffa14[_0x4ad4('0x2b')];var _0x58ba6d=_0x83a4e3?0x0:_0x2f3546[_0x4ad4('0x28')];var _0x3f3654=_0x83a4e3?_0x8ffa14[_0x4ad4('0x2b')]:_0x2f3546[_0x4ad4('0x28')]+_0x2f3546['limit'];var _0x5754b7;if(_0x3f3654>=_0x50ab48){_0x3f3654=_0x50ab48;_0x5754b7=0xc8;}else{_0x5754b7=0xce;}_0x2d37b6[_0x4ad4('0x25')](_0x5754b7);return _0x2d37b6['set'](_0x4ad4('0x2c'),_0x58ba6d+'-'+_0x3f3654+'/'+_0x50ab48)[_0x4ad4('0x27')](_0x8ffa14);}return null;};}function patchUpdates(_0x8db103){return function(_0x494924){try{jsonpatch[_0x4ad4('0x2d')](_0x494924,_0x8db103,!![]);}catch(_0x6f0cca){return BPromise[_0x4ad4('0x2e')](_0x6f0cca);}return _0x494924['save']();};}function saveUpdates(_0x1b349e,_0xf9e53e){return function(_0x5de4dc){if(_0x5de4dc){return _0x5de4dc['update'](_0x1b349e)[_0x4ad4('0x2f')](function(_0x27736b){return _0x27736b;});}return null;};}function removeEntity(_0xb10e76,_0x490ebb){return function(_0x254e94){if(_0x254e94){return _0x254e94[_0x4ad4('0x30')]()['then'](function(){_0xb10e76['status'](0xcc)[_0x4ad4('0x26')]();});}};}function handleEntityNotFound(_0x421e75,_0x480919){return function(_0x52c192){if(!_0x52c192){_0x421e75[_0x4ad4('0x24')](0x194);}return _0x52c192;};}function handleError(_0x5a08c2,_0x19cac0){_0x19cac0=_0x19cac0||0x1f4;return function(_0x1a3976){logger[_0x4ad4('0x31')](_0x1a3976['stack']);if(_0x1a3976[_0x4ad4('0x32')]){delete _0x1a3976[_0x4ad4('0x32')];}_0x5a08c2[_0x4ad4('0x25')](_0x19cac0)['send'](_0x1a3976);};}exports[_0x4ad4('0x33')]=function(_0x3b3fe0,_0x542355,_0xab22ef){if(!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x36'))&&!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x37'))){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x3a'));}else{if(_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x37'))&&!_0x3b3fe0[_0x4ad4('0x34')]['hasOwnProperty'](_0x4ad4('0x3b'))){throw new db[(_0x4ad4('0x38'))]['ValidationError'](_0x4ad4('0x3c'));}if(!_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')](_0x4ad4('0x3d'))){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x3e'));}else{try{var _0x38d903=JSON[_0x4ad4('0x3f')](_0x3b3fe0[_0x4ad4('0x34')]['recipients']);}catch(_0x12f97d){logger['error'](_0x12f97d);throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x40'));}var _0x20897d=[_0x4ad4('0x41'),_0x4ad4('0x42'),_0x4ad4('0x43'),'openchannelqueue',_0x4ad4('0x44'),_0x4ad4('0x45'),_0x4ad4('0x46'),'team',_0x4ad4('0x47')];if(_[_0x4ad4('0x48')](_0x38d903,function(_0x545dd0){return!_['includes'](_0x20897d,_0x545dd0['model'][_0x4ad4('0x49')]());})){throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x27eac0={};_0x27eac0[_0x4ad4('0x4a')]=_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x35')]('senderName')?_0x3b3fe0[_0x4ad4('0x34')]['senderName']:_0x3b3fe0['user'][_0x4ad4('0x4b')];_0x27eac0['recipientsDescription']=_[_0x4ad4('0x4c')](_0x3b3fe0['body'][_0x4ad4('0x4d')])?null:_0x3b3fe0[_0x4ad4('0x34')]['recipientsDescription'];_0x27eac0[_0x4ad4('0x4e')]=_0x3b3fe0[_0x4ad4('0x34')][_0x4ad4('0x4e')]||![];_0x27eac0[_0x4ad4('0x4f')]=_0x3b3fe0['user']['id'];return getContent(_0x3b3fe0[_0x4ad4('0x34')])['then'](function(_0xaf9a27){_0x27eac0[_0x4ad4('0x34')]=_0xaf9a27;return getRecipients(_0x38d903);})['then'](function(_0x2ae49f){_0x27eac0[_0x4ad4('0x50')]=_[_0x4ad4('0x51')](_0x2ae49f)[_0x4ad4('0x52')](',');return db['sequelize'][_0x4ad4('0x53')](function(_0x43d89e){return db[_0x4ad4('0x54')][_0x4ad4('0x55')](_0x27eac0,{'raw':!![],'transaction':_0x43d89e})[_0x4ad4('0x2f')](function(_0x2d32d2){var _0x33c013={'sender':_0x27eac0[_0x4ad4('0x4a')],'description':_0x27eac0['recipientsDescription'],'content':_0x27eac0[_0x4ad4('0x34')],'beep':_0x27eac0['beep']};_0x2ae49f[_0x4ad4('0x56')](function(_0x458c16){_0x33c013[_0x4ad4('0x57')]=_0x458c16;socket['emit'](_0x4ad4('0x58'),_0x33c013);});return _0x2d32d2;});});})[_0x4ad4('0x2f')](respondWithResult(_0x542355,0xc9))[_0x4ad4('0x59')](handleError(_0x542355,null));};function getContent(_0x482376){return new BPromise(function(_0x4dc193,_0x212a8a){if(_0x482376[_0x4ad4('0x36')]){_0x4dc193(_0x482376[_0x4ad4('0x36')]);return;}return db[_0x4ad4('0x5a')]['findOne']({'attributes':[_0x4ad4('0x5b')],'where':{'id':_0x482376[_0x4ad4('0x37')]},'raw':!![]})[_0x4ad4('0x2f')](function(_0x1fe8b0){if(!_0x1fe8b0)throw new db[(_0x4ad4('0x38'))][(_0x4ad4('0x39'))](_0x4ad4('0x5c'));var _0x50b673=Mustache[_0x4ad4('0x5d')](_0x1fe8b0[_0x4ad4('0x5b')],_0x482376[_0x4ad4('0x3b')]);_0x4dc193(_0x50b673);})[_0x4ad4('0x59')](function(_0x1fb62d){_0x212a8a(_0x1fb62d);});});}function getRecipients(_0x4315a5){return new BPromise(function(_0x4b27f1,_0x53cd26){var _0x4f3d3e=[];var _0x230221=[];_0x4315a5[_0x4ad4('0x56')](function(_0x3bae2b){var _0x451945=_[_0x4ad4('0x5e')](_0x3bae2b['model'][_0x4ad4('0x49')]());if(_0x451945===_0x4ad4('0x5f')){_0x4f3d3e=_[_0x4ad4('0x60')](_0x4f3d3e,_0x3bae2b['ids']);}else{if(_[_0x4ad4('0x61')](_0x451945,_0x4ad4('0x62')))_0x451945=_0x451945['replace'](_0x4ad4('0x62'),_0x4ad4('0x63'));_0x3bae2b[_0x4ad4('0x64')][_0x4ad4('0x56')](function(_0x5b26f8){_0x230221[_0x4ad4('0x65')](getAgents(_0x451945,_0x5b26f8));});}});return BPromise[_0x4ad4('0x66')](_0x230221)[_0x4ad4('0x2f')](function(_0x199992){_0x4f3d3e=_[_0x4ad4('0x60')](_0x4f3d3e,_['flatten'](_0x199992));_0x4b27f1(_0x4f3d3e);})[_0x4ad4('0x59')](function(_0x3fd02f){_0x53cd26(_0x3fd02f);});});}function getAgents(_0x252659,_0x493f9d){return new BPromise(function(_0x2d17e0,_0x420144){return db[_0x252659][_0x4ad4('0x67')]({'where':{'id':_0x493f9d}})[_0x4ad4('0x2f')](function(_0x311b0c){return _0x311b0c[_0x4ad4('0x68')]({'attributes':['id'],'raw':!![]})[_0x4ad4('0x2f')](function(_0x5e1dc7){var _0x1c7293=_[_0x4ad4('0x69')](_0x5e1dc7,'id');_0x2d17e0(_0x1c7293);});})['catch'](function(_0xdbfb69){_0x420144(_0xdbfb69);});});}
\ No newline at end of file
+var _0x253a=['./userNotification.socket','register','status','end','json','undefined','offset','limit','set','update','then','destroy','sendStatus','error','stack','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','recipients','Invalid\x20\x27recipients\x27\x20object','faxqueue','openchannelqueue','voicequeue','whatsappqueue','team','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','beep','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','recipient','userNotification:send','catch','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','ids','replace','queue','Queue','push','all','union','flatten','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0xa9ebf3,_0x49af2f){var _0x437022=function(_0x31ffc9){while(--_0x31ffc9){_0xa9ebf3['push'](_0xa9ebf3['shift']());}};_0x437022(++_0x49af2f);}(_0x253a,0x106));var _0xa253=function(_0x5b5c29,_0x2eabc0){_0x5b5c29=_0x5b5c29-0x0;var _0x3dfd7a=_0x253a[_0x5b5c29];return _0x3dfd7a;};'use strict';var emlformat=require(_0xa253('0x0'));var rimraf=require(_0xa253('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa253('0x2'));var rp=require(_0xa253('0x3'));var moment=require(_0xa253('0x4'));var BPromise=require(_0xa253('0x5'));var Mustache=require(_0xa253('0x6'));var util=require(_0xa253('0x7'));var path=require(_0xa253('0x8'));var sox=require(_0xa253('0x9'));var csv=require(_0xa253('0xa'));var ejs=require(_0xa253('0xb'));var fs=require('fs');var fs_extra=require(_0xa253('0xc'));var _=require(_0xa253('0xd'));var squel=require(_0xa253('0xe'));var crypto=require(_0xa253('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xa253('0x10'));var toCsv=require(_0xa253('0xa'));var querystring=require(_0xa253('0x11'));var Papa=require(_0xa253('0x12'));var Redis=require(_0xa253('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa253('0x14'));var hardwareService=require(_0xa253('0x15'));var logger=require('../../config/logger')(_0xa253('0x16'));var utils=require(_0xa253('0x17'));var config=require(_0xa253('0x18'));var licenseUtil=require(_0xa253('0x19'));var db=require(_0xa253('0x1a'))['db'];config[_0xa253('0x1b')]=_[_0xa253('0x1c')](config[_0xa253('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa253('0x1d'))[_0xa253('0x1e')](socket);function respondWithStatusCode(_0x5ab701,_0x2b7372){_0x2b7372=_0x2b7372||0xcc;return function(_0x4a92bf){if(_0x4a92bf){return _0x5ab701['sendStatus'](_0x2b7372);}return _0x5ab701[_0xa253('0x1f')](_0x2b7372)[_0xa253('0x20')]();};}function respondWithResult(_0x3eeee2,_0x27f4d8){_0x27f4d8=_0x27f4d8||0xc8;return function(_0x1d7d44){if(_0x1d7d44){return _0x3eeee2[_0xa253('0x1f')](_0x27f4d8)[_0xa253('0x21')](_0x1d7d44);}};}function respondWithFilteredResult(_0x3178bc,_0x44f9b0){return function(_0x512231){if(_0x512231){var _0x2504b7=typeof _0x44f9b0['offset']===_0xa253('0x22')&&typeof _0x44f9b0['limit']===_0xa253('0x22');var _0x4cde2e=_0x512231['count'];var _0x11b416=_0x2504b7?0x0:_0x44f9b0[_0xa253('0x23')];var _0x30d359=_0x2504b7?_0x512231['count']:_0x44f9b0[_0xa253('0x23')]+_0x44f9b0[_0xa253('0x24')];var _0x31f7bb;if(_0x30d359>=_0x4cde2e){_0x30d359=_0x4cde2e;_0x31f7bb=0xc8;}else{_0x31f7bb=0xce;}_0x3178bc[_0xa253('0x1f')](_0x31f7bb);return _0x3178bc[_0xa253('0x25')]('Content-Range',_0x11b416+'-'+_0x30d359+'/'+_0x4cde2e)[_0xa253('0x21')](_0x512231);}return null;};}function patchUpdates(_0x48d47e){return function(_0x1d2bc5){try{jsonpatch['apply'](_0x1d2bc5,_0x48d47e,!![]);}catch(_0x315ee4){return BPromise['reject'](_0x315ee4);}return _0x1d2bc5['save']();};}function saveUpdates(_0x43b41a,_0x4de293){return function(_0x363037){if(_0x363037){return _0x363037[_0xa253('0x26')](_0x43b41a)[_0xa253('0x27')](function(_0x33acbc){return _0x33acbc;});}return null;};}function removeEntity(_0x5edce7,_0x3b6c87){return function(_0xa31593){if(_0xa31593){return _0xa31593[_0xa253('0x28')]()[_0xa253('0x27')](function(){_0x5edce7[_0xa253('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dabc8,_0x1930a8){return function(_0x46bf13){if(!_0x46bf13){_0x4dabc8[_0xa253('0x29')](0x194);}return _0x46bf13;};}function handleError(_0x12c89c,_0x59759f){_0x59759f=_0x59759f||0x1f4;return function(_0x5e25b9){logger[_0xa253('0x2a')](_0x5e25b9[_0xa253('0x2b')]);if(_0x5e25b9['name']){delete _0x5e25b9['name'];}_0x12c89c[_0xa253('0x1f')](_0x59759f)[_0xa253('0x2c')](_0x5e25b9);};}exports[_0xa253('0x2d')]=function(_0x1a62d6,_0x2c1ddc,_0x4abc1d){if(!_0x1a62d6[_0xa253('0x2e')][_0xa253('0x2f')](_0xa253('0x30'))&&!_0x1a62d6[_0xa253('0x2e')][_0xa253('0x2f')](_0xa253('0x31'))){throw new db[(_0xa253('0x32'))][(_0xa253('0x33'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x1a62d6['body'][_0xa253('0x2f')](_0xa253('0x31'))&&!_0x1a62d6[_0xa253('0x2e')][_0xa253('0x2f')](_0xa253('0x34'))){throw new db['Sequelize']['ValidationError'](_0xa253('0x35'));}if(!_0x1a62d6['body'][_0xa253('0x2f')]('recipients')){throw new db[(_0xa253('0x32'))][(_0xa253('0x33'))](_0xa253('0x36'));}else{try{var _0x48ed11=JSON[_0xa253('0x37')](_0x1a62d6[_0xa253('0x2e')][_0xa253('0x38')]);}catch(_0x4865fe){logger[_0xa253('0x2a')](_0x4865fe);throw new db[(_0xa253('0x32'))][(_0xa253('0x33'))](_0xa253('0x39'));}var _0x1bfce9=['chatqueue',_0xa253('0x3a'),'mailqueue',_0xa253('0x3b'),'smsqueue',_0xa253('0x3c'),_0xa253('0x3d'),_0xa253('0x3e'),_0xa253('0x3f')];if(_['some'](_0x48ed11,function(_0x5c1e0c){return!_[_0xa253('0x40')](_0x1bfce9,_0x5c1e0c[_0xa253('0x41')]['toLowerCase']());})){throw new db[(_0xa253('0x32'))][(_0xa253('0x33'))](_0xa253('0x42'));}}}var _0x4da4a9={};_0x4da4a9[_0xa253('0x43')]=_0x1a62d6[_0xa253('0x2e')][_0xa253('0x2f')](_0xa253('0x43'))?_0x1a62d6[_0xa253('0x2e')][_0xa253('0x43')]:_0x1a62d6[_0xa253('0x3f')][_0xa253('0x44')];_0x4da4a9['recipientsDescription']=_['isEmpty'](_0x1a62d6[_0xa253('0x2e')][_0xa253('0x45')])?null:_0x1a62d6['body'][_0xa253('0x45')];_0x4da4a9['beep']=_0x1a62d6[_0xa253('0x2e')][_0xa253('0x46')]||![];_0x4da4a9['SenderId']=_0x1a62d6[_0xa253('0x3f')]['id'];return getContent(_0x1a62d6[_0xa253('0x2e')])[_0xa253('0x27')](function(_0x3b1dcf){_0x4da4a9[_0xa253('0x2e')]=_0x3b1dcf;return getRecipients(_0x48ed11);})[_0xa253('0x27')](function(_0x24eefc){_0x4da4a9[_0xa253('0x47')]=_[_0xa253('0x48')](_0x24eefc)[_0xa253('0x49')](',');return db['sequelize'][_0xa253('0x4a')](function(_0x4be6ba){return db[_0xa253('0x4b')][_0xa253('0x4c')](_0x4da4a9,{'raw':!![],'transaction':_0x4be6ba})[_0xa253('0x27')](function(_0x3884b5){var _0x503aaa={'sender':_0x4da4a9[_0xa253('0x43')],'description':_0x4da4a9[_0xa253('0x45')],'content':_0x4da4a9[_0xa253('0x2e')],'beep':_0x4da4a9['beep']};_0x24eefc[_0xa253('0x4d')](function(_0x1653f1){_0x503aaa[_0xa253('0x4e')]=_0x1653f1;socket['emit'](_0xa253('0x4f'),_0x503aaa);});return _0x3884b5;});});})[_0xa253('0x27')](respondWithResult(_0x2c1ddc,0xc9))[_0xa253('0x50')](handleError(_0x2c1ddc,null));};function getContent(_0x54e95d){return new BPromise(function(_0x2d9fdb,_0x3a3e6c){if(_0x54e95d[_0xa253('0x30')]){_0x2d9fdb(_0x54e95d[_0xa253('0x30')]);return;}return db['Template'][_0xa253('0x51')]({'attributes':[_0xa253('0x52')],'where':{'id':_0x54e95d[_0xa253('0x31')]},'raw':!![]})[_0xa253('0x27')](function(_0x216d99){if(!_0x216d99)throw new db[(_0xa253('0x32'))]['ValidationError'](_0xa253('0x53'));var _0x87bfc7=Mustache[_0xa253('0x54')](_0x216d99['html'],_0x54e95d[_0xa253('0x34')]);_0x2d9fdb(_0x87bfc7);})[_0xa253('0x50')](function(_0x448d7d){_0x3a3e6c(_0x448d7d);});});}function getRecipients(_0xd8980b){return new BPromise(function(_0x419a55,_0x19b264){var _0x410a76=[];var _0x48ace1=[];_0xd8980b[_0xa253('0x4d')](function(_0xb62653){var _0x2c1e9f=_[_0xa253('0x55')](_0xb62653['model'][_0xa253('0x56')]());if(_0x2c1e9f===_0xa253('0x57')){_0x410a76=_['union'](_0x410a76,_0xb62653[_0xa253('0x58')]);}else{if(_[_0xa253('0x40')](_0x2c1e9f,'queue'))_0x2c1e9f=_0x2c1e9f[_0xa253('0x59')](_0xa253('0x5a'),_0xa253('0x5b'));_0xb62653['ids']['forEach'](function(_0x46c189){_0x48ace1[_0xa253('0x5c')](getAgents(_0x2c1e9f,_0x46c189));});}});return BPromise[_0xa253('0x5d')](_0x48ace1)['then'](function(_0x1e0091){_0x410a76=_[_0xa253('0x5e')](_0x410a76,_[_0xa253('0x5f')](_0x1e0091));_0x419a55(_0x410a76);})[_0xa253('0x50')](function(_0x3d4539){_0x19b264(_0x3d4539);});});}function getAgents(_0x43b74f,_0x1df3d8){return new BPromise(function(_0x564d42,_0x21b12b){return db[_0x43b74f][_0xa253('0x51')]({'where':{'id':_0x1df3d8}})[_0xa253('0x27')](function(_0x23e6f0){return _0x23e6f0[_0xa253('0x60')]({'attributes':['id'],'raw':!![]})['then'](function(_0x508eb4){var _0x17e3aa=_['map'](_0x508eb4,'id');_0x564d42(_0x17e3aa);});})['catch'](function(_0x2217a1){_0x21b12b(_0x2217a1);});});}
\ No newline at end of file
index d3db3f9..2416b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x302d=['UserNotification','setMaxListeners','save','update','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x302d,0x1e7));var _0xd302=function(_0x237ede,_0x305253){_0x237ede=_0x237ede-0x0;var _0x39502d=_0x302d[_0x237ede];return _0x39502d;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xd302('0x0'))['db'][_0xd302('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xd302('0x2')](0x0);var events={'afterCreate':_0xd302('0x3'),'afterUpdate':_0xd302('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57285f){return function(_0x52fc75,_0x4e8ff2,_0x425661){UserNotificationEvents[_0xd302('0x5')](_0x57285f+':'+_0x52fc75['id'],_0x52fc75);UserNotificationEvents['emit'](_0x57285f,_0x52fc75);_0x425661(null);};}for(var e in events){if(events[_0xd302('0x6')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0xd302('0x7')]=UserNotificationEvents;
\ No newline at end of file
+var _0xb945=['setMaxListeners','save','update','remove','emit','exports','events','UserNotification'];(function(_0x22fd50,_0xe507ed){var _0x48284d=function(_0x200a6c){while(--_0x200a6c){_0x22fd50['push'](_0x22fd50['shift']());}};_0x48284d(++_0xe507ed);}(_0xb945,0x146));var _0x5b94=function(_0x5c3e2e,_0x3c59a4){_0x5c3e2e=_0x5c3e2e-0x0;var _0x3a3883=_0xb945[_0x5c3e2e];return _0x3a3883;};'use strict';var EventEmitter=require(_0x5b94('0x0'));var UserNotification=require('../../mysqldb')['db'][_0x5b94('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x5b94('0x2')](0x0);var events={'afterCreate':_0x5b94('0x3'),'afterUpdate':_0x5b94('0x4'),'afterDestroy':_0x5b94('0x5')};function emitEvent(_0x3dd09d){return function(_0x579bed,_0x5a0555,_0xe21fa9){UserNotificationEvents[_0x5b94('0x6')](_0x3dd09d+':'+_0x579bed['id'],_0x579bed);UserNotificationEvents['emit'](_0x3dd09d,_0x579bed);_0xe21fa9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x5b94('0x7')]=UserNotificationEvents;
\ No newline at end of file
index 6885f3f..98a9fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc72=['../../config/environment','exports','define','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','path','rimraf'];(function(_0xbf4b19,_0x477399){var _0x460c6a=function(_0x38023f){while(--_0x38023f){_0xbf4b19['push'](_0xbf4b19['shift']());}};_0x460c6a(++_0x477399);}(_0xdc72,0xf6));var _0x2dc7=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xdc72[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x2dc7('0x0'));var util=require(_0x2dc7('0x1'));var logger=require('../../config/logger')(_0x2dc7('0x2'));var moment=require('moment');var BPromise=require(_0x2dc7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dc7('0x4'));var rimraf=require(_0x2dc7('0x5'));var config=require(_0x2dc7('0x6'));var attributes=require('./userNotification.attributes');module[_0x2dc7('0x7')]=function(_0x461c2d,_0x37ef60){return _0x461c2d[_0x2dc7('0x8')]('UserNotification',attributes,{'tableName':_0x2dc7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2dc7('0xa'),'collate':_0x2dc7('0xb')});};
\ No newline at end of file
+var _0xff6e=['define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0xff6e,0x131));var _0xeff6=function(_0x500785,_0x15e5ff){_0x500785=_0x500785-0x0;var _0x1f8bcc=_0xff6e[_0x500785];return _0x1f8bcc;};'use strict';var _=require('lodash');var util=require(_0xeff6('0x0'));var logger=require(_0xeff6('0x1'))('api');var moment=require(_0xeff6('0x2'));var BPromise=require(_0xeff6('0x3'));var rp=require(_0xeff6('0x4'));var fs=require('fs');var path=require(_0xeff6('0x5'));var rimraf=require(_0xeff6('0x6'));var config=require(_0xeff6('0x7'));var attributes=require(_0xeff6('0x8'));module[_0xeff6('0x9')]=function(_0x5f5de1,_0x5aa5c5){return _0x5f5de1[_0xeff6('0xa')](_0xeff6('0xb'),attributes,{'tableName':_0xeff6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xeff6('0xd'),'collate':_0xeff6('0xe')});};
\ No newline at end of file
index 0aded2c..dbf1b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd6=['moment','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0x5cd6,0x11d));var _0x65cd=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0x5cd6[_0x2ef44b];return _0x2405b9;};'use strict';var _=require(_0x65cd('0x0'));var util=require('util');var moment=require(_0x65cd('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65cd('0x2'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x65cd('0x3'));var jayson=require(_0x65cd('0x4'));var client=jayson[_0x65cd('0x5')][_0x65cd('0x6')]({'port':0x232a});config[_0x65cd('0x7')]=_[_0x65cd('0x8')](config[_0x65cd('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x65cd('0x9'))(new Redis(config[_0x65cd('0x7')]));require(_0x65cd('0xa'))['register'](socket);function respondWithRpcPromise(_0x3827d0,_0x294918,_0x5627fa){return new BPromise(function(_0x336dc9,_0x5ee0d9){return client['request'](_0x3827d0,_0x5627fa)[_0x65cd('0xb')](function(_0x481be8){logger[_0x65cd('0xc')](_0x65cd('0xd'),_0x294918,_0x65cd('0xe'));logger[_0x65cd('0xf')](_0x65cd('0x10'),_0x294918,'request\x20sent',JSON[_0x65cd('0x11')](_0x481be8));if(_0x481be8[_0x65cd('0x12')]){if(_0x481be8[_0x65cd('0x12')]['code']===0x1f4){logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x481be8[_0x65cd('0x12')][_0x65cd('0x13')]);return _0x5ee0d9(_0x481be8[_0x65cd('0x12')]['message']);}logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x481be8[_0x65cd('0x12')]['message']);return _0x336dc9(_0x481be8[_0x65cd('0x12')][_0x65cd('0x13')]);}else{logger[_0x65cd('0xc')]('UserNotification,\x20%s,\x20%s',_0x294918,'request\x20sent');_0x336dc9(_0x481be8[_0x65cd('0x14')][_0x65cd('0x13')]);}})[_0x65cd('0x15')](function(_0x55b62e){logger[_0x65cd('0x12')](_0x65cd('0xd'),_0x294918,_0x55b62e);_0x5ee0d9(_0x55b62e);});});}
\ No newline at end of file
+var _0x4649=['UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','UserNotification,\x20%s,\x20%s','message','info','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','socket.io-emitter','./userNotification.socket','register','request','request\x20sent','debug'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4649,0x7f));var _0x9464=function(_0x32a83f,_0x18891d){_0x32a83f=_0x32a83f-0x0;var _0x140201=_0x4649[_0x32a83f];return _0x140201;};'use strict';var _=require('lodash');var util=require(_0x9464('0x0'));var moment=require(_0x9464('0x1'));var BPromise=require(_0x9464('0x2'));var rs=require(_0x9464('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9464('0x4'));var logger=require(_0x9464('0x5'))(_0x9464('0x6'));var config=require(_0x9464('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9464('0x8')]['http']({'port':0x232a});config['redis']=_[_0x9464('0x9')](config[_0x9464('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x9464('0xb'))(new Redis(config['redis']));require(_0x9464('0xc'))[_0x9464('0xd')](socket);function respondWithRpcPromise(_0x400b87,_0xd7401c,_0x1a9222){return new BPromise(function(_0x2682fd,_0xcaf77a){return client[_0x9464('0xe')](_0x400b87,_0x1a9222)['then'](function(_0x439ea6){logger['info']('UserNotification,\x20%s,\x20%s',_0xd7401c,_0x9464('0xf'));logger[_0x9464('0x10')](_0x9464('0x11'),_0xd7401c,'request\x20sent',JSON[_0x9464('0x12')](_0x439ea6));if(_0x439ea6[_0x9464('0x13')]){if(_0x439ea6[_0x9464('0x13')]['code']===0x1f4){logger[_0x9464('0x13')](_0x9464('0x14'),_0xd7401c,_0x439ea6[_0x9464('0x13')][_0x9464('0x15')]);return _0xcaf77a(_0x439ea6['error']['message']);}logger[_0x9464('0x13')](_0x9464('0x14'),_0xd7401c,_0x439ea6['error'][_0x9464('0x15')]);return _0x2682fd(_0x439ea6[_0x9464('0x13')]['message']);}else{logger[_0x9464('0x16')]('UserNotification,\x20%s,\x20%s',_0xd7401c,'request\x20sent');_0x2682fd(_0x439ea6['result'][_0x9464('0x15')]);}})[_0x9464('0x17')](function(_0x1354d0){logger[_0x9464('0x13')](_0x9464('0x14'),_0xd7401c,_0x1354d0);_0xcaf77a(_0x1354d0);});});}
\ No newline at end of file
index 4e22e43..d6f62c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5e9=['save','remove','update','emit','removeListener','register','length','./userNotification.events'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xa5e9,0x15f));var _0x9a5e=function(_0x72a33d,_0x5691da){_0x72a33d=_0x72a33d-0x0;var _0x2621d5=_0xa5e9[_0x72a33d];return _0x2621d5;};'use strict';var UserNotificationEvents=require(_0x9a5e('0x0'));var events=[_0x9a5e('0x1'),_0x9a5e('0x2'),_0x9a5e('0x3')];function createListener(_0xd660a5,_0x5e9475){return function(_0x329fa6){_0x5e9475[_0x9a5e('0x4')](_0xd660a5,_0x329fa6);};}function removeListener(_0x2c56e5,_0xff0114){return function(){UserNotificationEvents[_0x9a5e('0x5')](_0x2c56e5,_0xff0114);};}exports[_0x9a5e('0x6')]=function(_0x3fa69b){for(var _0x21579d=0x0,_0x18f8ea=events[_0x9a5e('0x7')];_0x21579d<_0x18f8ea;_0x21579d++){var _0x19069c=events[_0x21579d];var _0x2f9c4b=createListener('userNotification:'+_0x19069c,_0x3fa69b);UserNotificationEvents['on'](_0x19069c,_0x2f9c4b);}};
\ No newline at end of file
+var _0x5be9=['emit','length','userNotification:','./userNotification.events','save','remove','update'];(function(_0x16122b,_0x2b955e){var _0xdf8a6=function(_0x497a4a){while(--_0x497a4a){_0x16122b['push'](_0x16122b['shift']());}};_0xdf8a6(++_0x2b955e);}(_0x5be9,0x1ed));var _0x95be=function(_0x1db229,_0x50153b){_0x1db229=_0x1db229-0x0;var _0x3e560d=_0x5be9[_0x1db229];return _0x3e560d;};'use strict';var UserNotificationEvents=require(_0x95be('0x0'));var events=[_0x95be('0x1'),_0x95be('0x2'),_0x95be('0x3')];function createListener(_0x384b3c,_0x21fdc4){return function(_0x1d0c50){_0x21fdc4[_0x95be('0x4')](_0x384b3c,_0x1d0c50);};}function removeListener(_0x4ab502,_0x108461){return function(){UserNotificationEvents['removeListener'](_0x4ab502,_0x108461);};}exports['register']=function(_0x4da6b5){for(var _0x174414=0x0,_0x39ece8=events[_0x95be('0x5')];_0x174414<_0x39ece8;_0x174414++){var _0x5e3cb2=events[_0x174414];var _0x326850=createListener(_0x95be('0x6')+_0x5e3cb2,_0x4da6b5);UserNotificationEvents['on'](_0x5e3cb2,_0x326850);}};
\ No newline at end of file
index bc61419..e78e9a5 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(_0x3541e4,_0x4dcf9a){var _0x3ca5d9=function(_0x3eaac2){while(--_0x3eaac2){_0x3541e4['push'](_0x3541e4['shift']());}};_0x3ca5d9(++_0x4dcf9a);}(_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'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x404d57,_0x5da84f){var _0x3cae47=function(_0x20144c){while(--_0x20144c){_0x404d57['push'](_0x404d57['shift']());}};_0x3cae47(++_0x5da84f);}(_0xe706,0xa3));var _0x6e70=function(_0x3a6922,_0xc728be){_0x3a6922=_0x3a6922-0x0;var _0x9c1b44=_0xe706[_0x3a6922];return _0x9c1b44;};'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 6e29c3d..834242a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76aa=['exports','INTEGER'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x76aa,0xc0));var _0xa76a=function(_0x3806d6,_0x5f5beb){_0x3806d6=_0x3806d6-0x0;var _0x5cff92=_0x76aa[_0x3806d6];return _0x5cff92;};'use strict';var Sequelize=require('sequelize');module[_0xa76a('0x0')]={'penalty':{'type':Sequelize[_0xa76a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x33f1=['exports','sequelize'];(function(_0x326312,_0x147a91){var _0x439c17=function(_0x3c35c5){while(--_0x3c35c5){_0x326312['push'](_0x326312['shift']());}};_0x439c17(++_0x147a91);}(_0x33f1,0x16d));var _0x133f=function(_0x3f5dca,_0x59472b){_0x3f5dca=_0x3f5dca-0x0;var _0x5b833a=_0x33f1[_0x3f5dca];return _0x5b833a;};'use strict';var Sequelize=require(_0x133f('0x0'));module[_0x133f('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 8c1c67e..9fdfc5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b9=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger'];(function(_0x2fbbea,_0x49174a){var _0x83e5d8=function(_0xfcac2b){while(--_0xfcac2b){_0x2fbbea['push'](_0x2fbbea['shift']());}};_0x83e5d8(++_0x49174a);}(_0x20b9,0x13f));var _0x920b=function(_0x3add52,_0x2dbb69){_0x3add52=_0x3add52-0x0;var _0x21ceb3=_0x20b9[_0x3add52];return _0x21ceb3;};'use strict';var _=require(_0x920b('0x0'));var util=require(_0x920b('0x1'));var logger=require(_0x920b('0x2'))(_0x920b('0x3'));var moment=require(_0x920b('0x4'));var BPromise=require(_0x920b('0x5'));var rp=require(_0x920b('0x6'));var fs=require('fs');var path=require(_0x920b('0x7'));var rimraf=require(_0x920b('0x8'));var config=require(_0x920b('0x9'));var attributes=require(_0x920b('0xa'));module['exports']=function(_0x3bfea5,_0x5b8ae8){return _0x3bfea5[_0x920b('0xb')](_0x920b('0xc'),attributes,{'tableName':_0x920b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fe2=['request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','util','../../config/logger','api','moment','bluebird'];(function(_0x57cdaf,_0x3568fb){var _0x2d851a=function(_0x8be468){while(--_0x8be468){_0x57cdaf['push'](_0x57cdaf['shift']());}};_0x2d851a(++_0x3568fb);}(_0x7fe2,0x140));var _0x27fe=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x7fe2[_0xe66cf2];return _0x2d84e7;};'use strict';var _=require('lodash');var util=require(_0x27fe('0x0'));var logger=require(_0x27fe('0x1'))(_0x27fe('0x2'));var moment=require(_0x27fe('0x3'));var BPromise=require(_0x27fe('0x4'));var rp=require(_0x27fe('0x5'));var fs=require('fs');var path=require(_0x27fe('0x6'));var rimraf=require(_0x27fe('0x7'));var config=require(_0x27fe('0x8'));var attributes=require(_0x27fe('0x9'));module[_0x27fe('0xa')]=function(_0x4bccce,_0x45d277){return _0x4bccce[_0x27fe('0xb')](_0x27fe('0xc'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e58ac3d..5a55dc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da6=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','bluebird'];(function(_0x545f43,_0x4cb91e){var _0x7de55b=function(_0x1f3680){while(--_0x1f3680){_0x545f43['push'](_0x545f43['shift']());}};_0x7de55b(++_0x4cb91e);}(_0x7da6,0x124));var _0x67da=function(_0x3f465d,_0xbd2037){_0x3f465d=_0x3f465d-0x0;var _0x121ad1=_0x7da6[_0x3f465d];return _0x121ad1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x67da('0x0'));var BPromise=require(_0x67da('0x1'));var rs=require(_0x67da('0x2'));var fs=require('fs');var Redis=require(_0x67da('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x67da('0x4'));var logger=require(_0x67da('0x5'))(_0x67da('0x6'));var config=require(_0x67da('0x7'));var jayson=require(_0x67da('0x8'));var client=jayson[_0x67da('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb7f52,_0x49025f,_0x4cfe49){return new BPromise(function(_0x3d971d,_0x5ac004){return client[_0x67da('0xa')](_0xb7f52,_0x4cfe49)['then'](function(_0x1e8a4c){logger[_0x67da('0xb')](_0x67da('0xc'),_0x49025f,_0x67da('0xd'));logger[_0x67da('0xe')](_0x67da('0xf'),_0x49025f,_0x67da('0xd'),JSON['stringify'](_0x1e8a4c));if(_0x1e8a4c[_0x67da('0x10')]){if(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x11')]===0x1f4){logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0x1e8a4c[_0x67da('0x10')]['message']);return _0x5ac004(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x12')]);}logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0x1e8a4c[_0x67da('0x10')]['message']);return _0x3d971d(_0x1e8a4c[_0x67da('0x10')][_0x67da('0x12')]);}else{logger['info'](_0x67da('0xc'),_0x49025f,_0x67da('0xd'));_0x3d971d(_0x1e8a4c[_0x67da('0x13')][_0x67da('0x12')]);}})[_0x67da('0x14')](function(_0xb3a67){logger[_0x67da('0x10')](_0x67da('0xc'),_0x49025f,_0xb3a67);_0x5ac004(_0xb3a67);});});}
\ No newline at end of file
+var _0x7c0a=['UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','info','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7c0a,0x154));var _0xa7c0=function(_0x441d97,_0x44fe03){_0x441d97=_0x441d97-0x0;var _0x111803=_0x7c0a[_0x441d97];return _0x111803;};'use strict';var _=require(_0xa7c0('0x0'));var util=require(_0xa7c0('0x1'));var moment=require(_0xa7c0('0x2'));var BPromise=require(_0xa7c0('0x3'));var rs=require(_0xa7c0('0x4'));var fs=require('fs');var Redis=require(_0xa7c0('0x5'));var db=require(_0xa7c0('0x6'))['db'];var utils=require(_0xa7c0('0x7'));var logger=require(_0xa7c0('0x8'))('rpc');var config=require(_0xa7c0('0x9'));var jayson=require(_0xa7c0('0xa'));var client=jayson['client'][_0xa7c0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5cb97a,_0x28362e,_0x2079b8){return new BPromise(function(_0x1999c,_0x59817b){return client['request'](_0x5cb97a,_0x2079b8)['then'](function(_0x1a489a){logger[_0xa7c0('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x28362e,_0xa7c0('0xd'));logger['debug'](_0xa7c0('0xe'),_0x28362e,'request\x20sent',JSON[_0xa7c0('0xf')](_0x1a489a));if(_0x1a489a[_0xa7c0('0x10')]){if(_0x1a489a['error']['code']===0x1f4){logger[_0xa7c0('0x10')](_0xa7c0('0x11'),_0x28362e,_0x1a489a[_0xa7c0('0x10')][_0xa7c0('0x12')]);return _0x59817b(_0x1a489a[_0xa7c0('0x10')][_0xa7c0('0x12')]);}logger[_0xa7c0('0x10')](_0xa7c0('0x11'),_0x28362e,_0x1a489a['error'][_0xa7c0('0x12')]);return _0x1999c(_0x1a489a[_0xa7c0('0x10')][_0xa7c0('0x12')]);}else{logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x28362e,_0xa7c0('0xd'));_0x1999c(_0x1a489a[_0xa7c0('0x13')][_0xa7c0('0x12')]);}})[_0xa7c0('0x14')](function(_0x5d5d66){logger[_0xa7c0('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x28362e,_0x5d5d66);_0x59817b(_0x5d5d66);});});}
\ No newline at end of file
index bc2925b..d2097c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf906=['getSections','/:id/resources','getResources','create','post','/:id/clone','clone','addSections','put','destroy','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','describe','/:id','/:id/sections'];(function(_0x9b4cda,_0x206ec1){var _0x1ac6c5=function(_0x4ba0a3){while(--_0x4ba0a3){_0x9b4cda['push'](_0x9b4cda['shift']());}};_0x1ac6c5(++_0x206ec1);}(_0xf906,0x176));var _0x6f90=function(_0x392814,_0x2d190c){_0x392814=_0x392814-0x0;var _0x47c33d=_0xf906[_0x392814];return _0x47c33d;};'use strict';var multer=require(_0x6f90('0x0'));var util=require(_0x6f90('0x1'));var path=require(_0x6f90('0x2'));var timeout=require(_0x6f90('0x3'));var express=require(_0x6f90('0x4'));var router=express[_0x6f90('0x5')]();var fs_extra=require(_0x6f90('0x6'));var auth=require(_0x6f90('0x7'));var interaction=require(_0x6f90('0x8'));var config=require(_0x6f90('0x9'));var controller=require(_0x6f90('0xa'));router[_0x6f90('0xb')]('/',auth[_0x6f90('0xc')](),controller['index']);router[_0x6f90('0xb')]('/describe',auth[_0x6f90('0xc')](),controller[_0x6f90('0xd')]);router[_0x6f90('0xb')](_0x6f90('0xe'),auth[_0x6f90('0xc')](),controller['show']);router['get'](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x10')]);router[_0x6f90('0xb')](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x12')]);router['post']('/',auth[_0x6f90('0xc')](),controller[_0x6f90('0x13')]);router[_0x6f90('0x14')](_0x6f90('0x15'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x16')]);router[_0x6f90('0x14')](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x17')]);router[_0x6f90('0x14')](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller['addResources']);router[_0x6f90('0x18')]('/:id',auth[_0x6f90('0xc')](),controller['update']);router['delete'](_0x6f90('0xe'),auth['isAuthenticated'](),controller[_0x6f90('0x19')]);router[_0x6f90('0x1a')](_0x6f90('0xf'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x1b')]);router['delete'](_0x6f90('0x11'),auth[_0x6f90('0xc')](),controller[_0x6f90('0x1c')]);module[_0x6f90('0x1d')]=router;
\ No newline at end of file
+var _0x1dfe=['../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','/:id','/:id/sections','getSections','/:id/resources','getResources','/:id/clone','clone','addSections','put','update','delete','destroy','removeSections','removeResources','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x61cc7a,_0x1f34a7){var _0x1ab650=function(_0x1cc9c4){while(--_0x1cc9c4){_0x61cc7a['push'](_0x61cc7a['shift']());}};_0x1ab650(++_0x1f34a7);}(_0x1dfe,0xd9));var _0xe1df=function(_0xc6ead,_0x47d728){_0xc6ead=_0xc6ead-0x0;var _0x5254e7=_0x1dfe[_0xc6ead];return _0x5254e7;};'use strict';var multer=require(_0xe1df('0x0'));var util=require(_0xe1df('0x1'));var path=require(_0xe1df('0x2'));var timeout=require(_0xe1df('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe1df('0x4'));var auth=require(_0xe1df('0x5'));var interaction=require(_0xe1df('0x6'));var config=require(_0xe1df('0x7'));var controller=require(_0xe1df('0x8'));router[_0xe1df('0x9')]('/',auth[_0xe1df('0xa')](),controller[_0xe1df('0xb')]);router['get'](_0xe1df('0xc'),auth[_0xe1df('0xa')](),controller['describe']);router['get'](_0xe1df('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe1df('0x9')](_0xe1df('0xe'),auth['isAuthenticated'](),controller[_0xe1df('0xf')]);router[_0xe1df('0x9')](_0xe1df('0x10'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x11')]);router['post']('/',auth[_0xe1df('0xa')](),controller['create']);router['post'](_0xe1df('0x12'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x13')]);router['post'](_0xe1df('0xe'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x14')]);router['post'](_0xe1df('0x10'),auth[_0xe1df('0xa')](),controller['addResources']);router[_0xe1df('0x15')](_0xe1df('0xd'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x16')]);router[_0xe1df('0x17')](_0xe1df('0xd'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x18')]);router[_0xe1df('0x17')](_0xe1df('0xe'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x19')]);router[_0xe1df('0x17')](_0xe1df('0x10'),auth[_0xe1df('0xa')](),controller[_0xe1df('0x1a')]);module[_0xe1df('0x1b')]=router;
\ No newline at end of file
index 2f65f03..b277025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc71e=['split','BOOLEAN','exports','name','STRING','setDataValue','crudPermissions','join'];(function(_0x543d56,_0x46afca){var _0x48440e=function(_0x23209b){while(--_0x23209b){_0x543d56['push'](_0x543d56['shift']());}};_0x48440e(++_0x46afca);}(_0xc71e,0x16a));var _0xec71=function(_0x4318c1,_0x48e5da){_0x4318c1=_0x4318c1-0x0;var _0x587981=_0xc71e[_0x4318c1];return _0x587981;};'use strict';var Sequelize=require('sequelize');module[_0xec71('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xec71('0x1')},'crudPermissions':{'type':Sequelize[_0xec71('0x2')],'set':function(_0xac35c){this[_0xec71('0x3')](_0xec71('0x4'),_0xac35c?_0xac35c[_0xec71('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xec71('0x4'))?this['getDataValue'](_0xec71('0x4'))[_0xec71('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xec71('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3021=['sequelize','exports','STRING','name','setDataValue','crudPermissions','split','BOOLEAN'];(function(_0x53efcb,_0x17ba53){var _0x17b36e=function(_0xd466dd){while(--_0xd466dd){_0x53efcb['push'](_0x53efcb['shift']());}};_0x17b36e(++_0x17ba53);}(_0x3021,0x68));var _0x1302=function(_0x374325,_0x36b5ba){_0x374325=_0x374325-0x0;var _0xc6402f=_0x3021[_0x374325];return _0xc6402f;};'use strict';var Sequelize=require(_0x1302('0x0'));module[_0x1302('0x1')]={'name':{'type':Sequelize[_0x1302('0x2')],'allowNull':![],'unique':_0x1302('0x3')},'crudPermissions':{'type':Sequelize[_0x1302('0x2')],'set':function(_0x4e5b64){this[_0x1302('0x4')](_0x1302('0x5'),_0x4e5b64?_0x4e5b64['join'](''):[]);},'get':function(){return this['getDataValue'](_0x1302('0x5'))?this['getDataValue'](_0x1302('0x5'))[_0x1302('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x1302('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x1302('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x1302('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1302('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x1302('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1302('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 41bf117..95852e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x099b=['VIRTUAL','merge','include','findAll','rows','catch','options','find','create','clone','includeAll','get','omit','createdAt','updatedAt','body','transaction','each','autoAssociation','sectionId','Resources','UserProfileSection','params','destroy','describe','addSections','userProfileId','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','concat','UserProfileResource','findOne','Dashboard','forEach','resourceId','addResources','sequelize','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userProfile.socket','register','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','name','send','UserProfile','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','map'];(function(_0x18b1be,_0x185237){var _0x4a4224=function(_0x4be7cd){while(--_0x4be7cd){_0x18b1be['push'](_0x18b1be['shift']());}};_0x4a4224(++_0x185237);}(_0x099b,0xa3));var _0xb099=function(_0x2f1e5d,_0xf8b1f1){_0x2f1e5d=_0x2f1e5d-0x0;var _0x2b3e50=_0x099b[_0x2f1e5d];return _0x2b3e50;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb099('0x0'));var zipdir=require(_0xb099('0x1'));var jsonpatch=require(_0xb099('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb099('0x3'));var Mustache=require(_0xb099('0x4'));var util=require(_0xb099('0x5'));var path=require(_0xb099('0x6'));var sox=require(_0xb099('0x7'));var csv=require(_0xb099('0x8'));var ejs=require(_0xb099('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb099('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb099('0xb'));var deskjs=require(_0xb099('0xc'));var toCsv=require(_0xb099('0x8'));var querystring=require(_0xb099('0xd'));var Papa=require(_0xb099('0xe'));var Redis=require(_0xb099('0xf'));var authService=require(_0xb099('0x10'));var qs=require(_0xb099('0x11'));var as=require(_0xb099('0x12'));var hardwareService=require(_0xb099('0x13'));var logger=require(_0xb099('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xb099('0x15'));var licenseUtil=require(_0xb099('0x16'));var db=require(_0xb099('0x17'))['db'];config[_0xb099('0x18')]=_[_0xb099('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb099('0x1a'))(new Redis(config[_0xb099('0x18')]));require(_0xb099('0x1b'))[_0xb099('0x1c')](socket);function respondWithStatusCode(_0x1321f0,_0x4f5bf3){_0x4f5bf3=_0x4f5bf3||0xcc;return function(_0x45701d){if(_0x45701d){return _0x1321f0[_0xb099('0x1d')](_0x4f5bf3);}return _0x1321f0['status'](_0x4f5bf3)['end']();};}function respondWithResult(_0x4909df,_0x1e92fd){_0x1e92fd=_0x1e92fd||0xc8;return function(_0x22e1cf){if(_0x22e1cf){return _0x4909df[_0xb099('0x1e')](_0x1e92fd)[_0xb099('0x1f')](_0x22e1cf);}};}function respondWithFilteredResult(_0x15efa4,_0x328ba8){return function(_0x10d4d3){if(_0x10d4d3){var _0x5da21a=typeof _0x328ba8[_0xb099('0x20')]==='undefined'&&typeof _0x328ba8[_0xb099('0x21')]==='undefined';var _0x2ad7c6=_0x10d4d3[_0xb099('0x22')];var _0x42a2e5=_0x5da21a?0x0:_0x328ba8[_0xb099('0x20')];var _0x57f7c1=_0x5da21a?_0x10d4d3[_0xb099('0x22')]:_0x328ba8[_0xb099('0x20')]+_0x328ba8[_0xb099('0x21')];var _0x7226d6;if(_0x57f7c1>=_0x2ad7c6){_0x57f7c1=_0x2ad7c6;_0x7226d6=0xc8;}else{_0x7226d6=0xce;}_0x15efa4[_0xb099('0x1e')](_0x7226d6);return _0x15efa4[_0xb099('0x23')](_0xb099('0x24'),_0x42a2e5+'-'+_0x57f7c1+'/'+_0x2ad7c6)['json'](_0x10d4d3);}return null;};}function patchUpdates(_0x83f554){return function(_0x5d5364){try{jsonpatch[_0xb099('0x25')](_0x5d5364,_0x83f554,!![]);}catch(_0x8523d8){return BPromise[_0xb099('0x26')](_0x8523d8);}return _0x5d5364[_0xb099('0x27')]();};}function saveUpdates(_0x71a0d2,_0xe7efca){return function(_0x52f25c){if(_0x52f25c){return _0x52f25c[_0xb099('0x28')](_0x71a0d2)[_0xb099('0x29')](function(_0x18af0d){return _0x18af0d;});}return null;};}function removeEntity(_0x4c0594,_0x26564b){return function(_0x4b637b){if(_0x4b637b){return _0x4b637b['destroy']()[_0xb099('0x29')](function(){_0x4c0594[_0xb099('0x1e')](0xcc)[_0xb099('0x2a')]();});}};}function handleEntityNotFound(_0x1f3941,_0x3d0303){return function(_0x3945f4){if(!_0x3945f4){_0x1f3941[_0xb099('0x1d')](0x194);}return _0x3945f4;};}function handleError(_0x1d6bb1,_0x4bb011){_0x4bb011=_0x4bb011||0x1f4;return function(_0x26e216){logger[_0xb099('0x2b')](_0x26e216['stack']);if(_0x26e216[_0xb099('0x2c')]){delete _0x26e216[_0xb099('0x2c')];}_0x1d6bb1[_0xb099('0x1e')](_0x4bb011)[_0xb099('0x2d')](_0x26e216);};}exports['index']=function(_0x57afd3,_0x32ce15){var _0x2419bb={},_0x503231={},_0x2458fd={'count':0x0,'rows':[]};var _0x5c5805=_['map'](db[_0xb099('0x2e')][_0xb099('0x2f')],function(_0x450f30){return{'name':_0x450f30['fieldName'],'type':_0x450f30[_0xb099('0x30')][_0xb099('0x31')]};});_0x503231[_0xb099('0x32')]=_['map'](_0x5c5805,_0xb099('0x2c'));_0x503231[_0xb099('0x33')]=_[_0xb099('0x34')](_0x57afd3[_0xb099('0x33')]);_0x503231[_0xb099('0x35')]=_[_0xb099('0x36')](_0x503231[_0xb099('0x32')],_0x503231[_0xb099('0x33')]);_0x2419bb[_0xb099('0x37')]=_[_0xb099('0x36')](_0x503231['model'],qs[_0xb099('0x38')](_0x57afd3[_0xb099('0x33')][_0xb099('0x38')]));_0x2419bb['attributes']=_0x2419bb[_0xb099('0x37')][_0xb099('0x39')]?_0x2419bb[_0xb099('0x37')]:_0x503231[_0xb099('0x32')];if(!_0x57afd3[_0xb099('0x33')][_0xb099('0x3a')](_0xb099('0x3b'))){_0x2419bb[_0xb099('0x21')]=qs[_0xb099('0x21')](_0x57afd3[_0xb099('0x33')][_0xb099('0x21')]);_0x2419bb['offset']=qs['offset'](_0x57afd3[_0xb099('0x33')][_0xb099('0x20')]);}_0x2419bb['order']=qs['sort'](_0x57afd3[_0xb099('0x33')][_0xb099('0x3c')]);_0x2419bb['where']=qs[_0xb099('0x35')](_[_0xb099('0x3d')](_0x57afd3['query'],_0x503231[_0xb099('0x35')]),_0x5c5805);if(_0x57afd3[_0xb099('0x33')][_0xb099('0x3e')]){_0x2419bb[_0xb099('0x3f')]=_['merge'](_0x2419bb[_0xb099('0x3f')],{'$or':_[_0xb099('0x40')](_0x5c5805,function(_0xc96532){if(_0xc96532['type']!==_0xb099('0x41')){var _0x5bfa3c={};_0x5bfa3c[_0xc96532[_0xb099('0x2c')]]={'$like':'%'+_0x57afd3[_0xb099('0x33')][_0xb099('0x3e')]+'%'};return _0x5bfa3c;}})});}_0x2419bb=_[_0xb099('0x42')]({},_0x2419bb,_0x57afd3['options']);var _0x35eba1={'where':_0x2419bb[_0xb099('0x3f')]};return db['UserProfile']['count'](_0x35eba1)['then'](function(_0x3664b5){_0x2458fd[_0xb099('0x22')]=_0x3664b5;if(_0x57afd3[_0xb099('0x33')]['includeAll']){_0x2419bb[_0xb099('0x43')]=[{'all':!![]}];}return db[_0xb099('0x2e')][_0xb099('0x44')](_0x2419bb);})[_0xb099('0x29')](function(_0x5bb901){_0x2458fd[_0xb099('0x45')]=_0x5bb901;return _0x2458fd;})[_0xb099('0x29')](respondWithFilteredResult(_0x32ce15,_0x2419bb))[_0xb099('0x46')](handleError(_0x32ce15,null));};exports['show']=function(_0x39eba6,_0x251f1b){var _0x4207d0={'raw':![],'where':{'id':_0x39eba6['params']['id']}},_0x50e66d={};_0x50e66d[_0xb099('0x32')]=_[_0xb099('0x34')](db[_0xb099('0x2e')][_0xb099('0x2f')]);_0x50e66d[_0xb099('0x33')]=_[_0xb099('0x34')](_0x39eba6[_0xb099('0x33')]);_0x50e66d['filters']=_[_0xb099('0x36')](_0x50e66d['model'],_0x50e66d[_0xb099('0x33')]);_0x4207d0[_0xb099('0x37')]=_[_0xb099('0x36')](_0x50e66d[_0xb099('0x32')],qs[_0xb099('0x38')](_0x39eba6[_0xb099('0x33')][_0xb099('0x38')]));_0x4207d0['attributes']=_0x4207d0[_0xb099('0x37')]['length']?_0x4207d0[_0xb099('0x37')]:_0x50e66d[_0xb099('0x32')];if(_0x39eba6['query']['includeAll']){_0x4207d0[_0xb099('0x43')]=[{'all':!![]}];}_0x4207d0=_[_0xb099('0x42')]({},_0x4207d0,_0x39eba6[_0xb099('0x47')]);return db[_0xb099('0x2e')][_0xb099('0x48')](_0x4207d0)[_0xb099('0x29')](handleEntityNotFound(_0x251f1b,null))[_0xb099('0x29')](respondWithResult(_0x251f1b,null))['catch'](handleError(_0x251f1b,null));};exports[_0xb099('0x49')]=function(_0x394c61,_0x1e6bef){return db[_0xb099('0x2e')][_0xb099('0x49')](_0x394c61['body'],{})['then'](respondWithResult(_0x1e6bef,0xc9))[_0xb099('0x46')](handleError(_0x1e6bef,null));};exports[_0xb099('0x4a')]=function(_0x5475db,_0x3a02ae){var _0xa5e2f5={'where':{'id':_0x5475db['params']['id']}},_0x36e795={};_0x36e795[_0xb099('0x32')]=_['keys'](db[_0xb099('0x2e')][_0xb099('0x2f')]);_0xa5e2f5[_0xb099('0x37')]=_['intersection'](_0x36e795[_0xb099('0x32')],qs['fields'](_0x5475db[_0xb099('0x33')][_0xb099('0x38')]));_0xa5e2f5[_0xb099('0x37')]=_0xa5e2f5['attributes']['length']?_0xa5e2f5[_0xb099('0x37')]:_0x36e795['model'];if(_0x5475db[_0xb099('0x33')][_0xb099('0x4b')]){_0xa5e2f5[_0xb099('0x43')]=[{'all':!![]}];}_0xa5e2f5=_[_0xb099('0x42')]({},_0xa5e2f5,_0x5475db[_0xb099('0x47')]);return db[_0xb099('0x2e')][_0xb099('0x48')](_0xa5e2f5)[_0xb099('0x29')](handleEntityNotFound(_0x3a02ae,null))[_0xb099('0x29')](function(_0x433060){if(_0x433060){var _0x4ea77d=_0x433060[_0xb099('0x4c')]({'plain':!![]});_0x4ea77d=qs[_0xb099('0x4d')](_0x4ea77d,['id',_0xb099('0x4e'),_0xb099('0x4f'),'crudPermissions']);_0x5475db[_0xb099('0x50')]=_['omit'](_0x5475db[_0xb099('0x50')],['id',_0xb099('0x4e'),_0xb099('0x4f')]);return db['sequelize'][_0xb099('0x51')](function(_0x52ab3e){return db[_0xb099('0x2e')][_0xb099('0x49')](_[_0xb099('0x42')](_0x4ea77d,_0x5475db['body']),{'include':_0x5475db[_0xb099('0x33')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x52ab3e})['then'](function(_0x32c0cc){var _0xb9064a=_0x32c0cc[_0xb099('0x4c')]({'plain':!![]});return db['UserProfileSection'][_0xb099('0x44')]({'where':{'userProfileId':_0x5475db['params']['id']},'raw':!![]})['then'](function(_0x5bf303){if(_0x5bf303){return BPromise[_0xb099('0x52')](_0x5bf303,function(_0x88b2){return new BPromise(function(_0x5e0186,_0x4ca864){if(_0x88b2['autoAssociation']===null||_0x88b2[_0xb099('0x53')]===0x1)_0x5e0186(null);return db['UserProfileResource'][_0xb099('0x44')]({'where':{'sectionId':_0x88b2['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1f6c1b){var _0xf4675d=_[_0xb099('0x40')](_0x1f6c1b,function(_0x1f1f4e){return qs[_0xb099('0x4d')](_0x1f1f4e,['id','createdAt',_0xb099('0x4f'),_0xb099('0x54')]);});_0x5e0186(_0xf4675d);})[_0xb099('0x46')](function(_0x27f333){_0x4ca864(_0x27f333);});})['then'](function(_0x164f5e){var _0x54b68d=qs[_0xb099('0x4d')](_0x88b2,['id',_0xb099('0x4e'),'updatedAt']);_0x54b68d['userProfileId']=_0xb9064a['id'];if(_0x164f5e)_0x54b68d[_0xb099('0x55')]=_0x164f5e;return _0x54b68d;})[_0xb099('0x29')](function(_0x2f403c){return db[_0xb099('0x56')][_0xb099('0x49')](_0x2f403c,{'include':[{'model':db['UserProfileResource'],'as':_0xb099('0x55')}],'raw':!![],'transaction':_0x52ab3e});});})[_0xb099('0x29')](function(){return _0xb9064a;});}});});});}})[_0xb099('0x29')](respondWithResult(_0x3a02ae,0xc9))[_0xb099('0x46')](handleError(_0x3a02ae,null));};exports[_0xb099('0x28')]=function(_0x16e81c,_0x1fcb14){if(_0x16e81c[_0xb099('0x50')]['id']){delete _0x16e81c[_0xb099('0x50')]['id'];}return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x16e81c[_0xb099('0x57')]['id']}})['then'](handleEntityNotFound(_0x1fcb14,null))[_0xb099('0x29')](saveUpdates(_0x16e81c[_0xb099('0x50')],null))[_0xb099('0x29')](respondWithResult(_0x1fcb14,null))[_0xb099('0x46')](handleError(_0x1fcb14,null));};exports[_0xb099('0x58')]=function(_0x2605ed,_0x1176a9){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x2605ed[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x1176a9,null))['then'](removeEntity(_0x1176a9,null))[_0xb099('0x46')](handleError(_0x1176a9,null));};exports[_0xb099('0x59')]=function(_0x1c236d,_0x584c72){return db['UserProfile'][_0xb099('0x59')]()['then'](respondWithResult(_0x584c72,null))[_0xb099('0x46')](handleError(_0x584c72,null));};exports[_0xb099('0x5a')]=function(_0x5bc4f3,_0x416884){var _0x52fd1a=_0x5bc4f3[_0xb099('0x50')];return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x5bc4f3[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x416884,null))[_0xb099('0x29')](function(_0x5dbd1c){if(_0x5dbd1c){return db['sequelize']['transaction'](function(_0x77a52a){return db[_0xb099('0x56')][_0xb099('0x58')]({'where':{'userProfileId':_0x5bc4f3[_0xb099('0x57')]['id'],'sectionId':_['map'](_0x52fd1a,function(_0x574e12){return _0x574e12[_0xb099('0x54')];})},'transaction':_0x77a52a})[_0xb099('0x29')](function(){var _0x2bac14=_[_0xb099('0x40')](_0x52fd1a,function(_0x5c16c0){_0x5c16c0[_0xb099('0x5b')]=_0x5bc4f3[_0xb099('0x57')]['id'];return _0x5c16c0;});var _0x54cdc9=[];return BPromise[_0xb099('0x52')](_0x2bac14,function(_0x6f728b){return db['UserProfileSection'][_0xb099('0x49')](_0x6f728b,{'include':[{'model':db['UserProfileResource'],'as':_0xb099('0x55')}],'raw':!![],'transaction':_0x77a52a})[_0xb099('0x29')](function(_0xa29fad){_0x54cdc9[_0xb099('0x5c')](_0xa29fad[_0xb099('0x4c')]({'plain':!![]}));});})[_0xb099('0x29')](function(){return _0x54cdc9;});});});}})[_0xb099('0x29')](function(_0x334a7d){return _0x334a7d;})['then'](respondWithResult(_0x416884,null))[_0xb099('0x46')](handleError(_0x416884,null));};exports[_0xb099('0x5d')]=function(_0x56080c,_0x551b0a){var _0x4512b5;return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x56080c[_0xb099('0x57')]['id']},'attributes':['id','name']})[_0xb099('0x29')](handleEntityNotFound(_0x551b0a,null))['then'](function(_0x42ac08){if(_0x42ac08){_0x4512b5=_0x42ac08;return db[_0xb099('0x56')][_0xb099('0x58')]({'where':{'userProfileId':_0x56080c[_0xb099('0x57')]['id'],'sectionId':_0x56080c[_0xb099('0x33')][_0xb099('0x5e')]}});}})[_0xb099('0x29')](function(){return _0x4512b5;})[_0xb099('0x29')](respondWithStatusCode(_0x551b0a,null))[_0xb099('0x46')](handleError(_0x551b0a,null));};exports[_0xb099('0x5f')]=function(_0x5b4e2b,_0x54b614){var _0x81767=[];var _0x3db644=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x5b4e2b[_0xb099('0x57')]['id']},'raw':!![]})[_0xb099('0x29')](function(_0x457e61){_0x81767=_[_0xb099('0x3e')](_0x457e61,function(_0x22ea23){return _0x22ea23[_0xb099('0x60')]===0x1||_[_0xb099('0x61')]([0x3eb,0x709],_0x22ea23[_0xb099('0x54')]);});if(!_[_0xb099('0x62')](_0x81767)){return _[_0xb099('0x40')](_0x81767,function(_0x2f5568){return _0x2f5568[_0xb099('0x54')];});}else{return;}})[_0xb099('0x29')](function(_0x49f467){if(_0x49f467)_0x3db644=_0x49f467;if(_[_0xb099('0x61')](_0x3db644,0x64)){var _0x30037f=_[_0xb099('0x48')](_0x81767,{'sectionId':0x64});return hasDefaultDashboard(_0x30037f)['then'](function(_0x5e11dd){return _[_0xb099('0x40')](_0x81767,function(_0x464257){if(_0x464257['sectionId']===0x64){_0x464257['subsections']=_0x5e11dd;}return _0x464257;});});}else{return;}})[_0xb099('0x29')](function(_0xab7667){if(_0xab7667)_0x81767=_0xab7667;if(_[_0xb099('0x61')](_0x3db644,0x3eb)){var _0x4775dc=_[_0xb099('0x48')](_0x81767,{'sectionId':0x3eb});return getCustomDashboards(_0x4775dc)[_0xb099('0x29')](function(_0x354f45){return _[_0xb099('0x40')](_0x81767,function(_0x2c60ea){if(_0x4775dc['enabled']){if(_0x2c60ea['sectionId']===0x3eb){_0x2c60ea[_0xb099('0x63')]=_0x354f45;}}else{if(_0x2c60ea['sectionId']===0x64){if(!_0x2c60ea[_0xb099('0x63')]){_0x2c60ea[_0xb099('0x63')]=[];}_0x2c60ea['subsections']=_0x2c60ea[_0xb099('0x63')][_0xb099('0x64')](_0x354f45);}}return _0x2c60ea;});});}else{return;}})[_0xb099('0x29')](function(_0x3ab20a){if(_0x3ab20a)_0x81767=_0x3ab20a;if(_[_0xb099('0x61')](_0x3db644,0x709)){var _0x553128=_[_0xb099('0x48')](_0x81767,{'sectionId':0x709});return getPlugins(_0x553128)[_0xb099('0x29')](function(_0x25a95c){if(_0x553128[_0xb099('0x60')]){return _['map'](_0x81767,function(_0x2937be){if(_0x2937be[_0xb099('0x54')]===0x709){_0x2937be['subsections']=_0x25a95c;}return _0x2937be;});}else{var _0x8e37b3={'sectionId':0x76c,'enabled':0x1,'subsections':_0x25a95c};var _0x443335=_[_0xb099('0x40')](_0x81767);_0x443335['push'](_0x8e37b3);return _0x443335;}});}else{return;}})[_0xb099('0x29')](function(_0x598a70){if(_0x598a70)_0x81767=_0x598a70;return _[_0xb099('0x3e')](_0x81767,['enabled',0x1]);})['then'](respondWithResult(_0x54b614,null))[_0xb099('0x46')](handleError(_0x54b614,null));};function hasDefaultDashboard(_0x284ff3){var _0x1f4b89=[0x65];return new BPromise(function(_0x578e61,_0x477e81){try{if(_0x284ff3[_0xb099('0x53')]){_0x578e61(_0x1f4b89);}else{return db[_0xb099('0x65')][_0xb099('0x66')]({'where':{'sectionId':_0x284ff3['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1291ef){_0x1291ef?_0x578e61(_0x1f4b89):_0x578e61();});}}catch(_0x429486){_0x477e81(_0x429486);}});}function getCustomDashboards(_0x1b053b){var _0xb81df6=[];return new BPromise(function(_0x56081a,_0x6f8f7f){try{if(_0x1b053b[_0xb099('0x53')]){return db[_0xb099('0x67')][_0xb099('0x44')]({'raw':!![]})[_0xb099('0x29')](function(_0x15ef98){_0x15ef98[_0xb099('0x68')](function(_0xd291f9){_0xb81df6[_0xb099('0x5c')](_0xd291f9['id']+0x1869f);});_0x56081a(_0xb81df6);});}else{return db[_0xb099('0x65')]['findAll']({'where':{'sectionId':_0x1b053b['id']},'raw':!![]})[_0xb099('0x29')](function(_0x1270c8){_0x1270c8['forEach'](function(_0x5a98de){_0xb81df6[_0xb099('0x5c')](_0x5a98de[_0xb099('0x69')]+0x1869f);});_0x56081a(_0xb81df6);});}}catch(_0x53f63a){_0x6f8f7f(_0x53f63a);}});}function getPlugins(_0x42e0b3){var _0x3f3d0c=[];return new BPromise(function(_0x68a2c9,_0x3fd3ba){try{if(_0x42e0b3[_0xb099('0x53')]){return db['Plugin'][_0xb099('0x44')]({'raw':!![]})[_0xb099('0x29')](function(_0x13340f){_0x13340f['forEach'](function(_0x23953f){_0x3f3d0c[_0xb099('0x5c')](_0x23953f['id']+0x15b38);});_0x68a2c9(_0x3f3d0c);});}else{return db[_0xb099('0x65')]['findAll']({'where':{'sectionId':_0x42e0b3['id']},'raw':!![]})['then'](function(_0x24f8b7){_0x24f8b7[_0xb099('0x68')](function(_0x125a36){_0x3f3d0c[_0xb099('0x5c')](_0x125a36[_0xb099('0x69')]+0x15b38);});_0x68a2c9(_0x3f3d0c);});}}catch(_0x1919e9){_0x3fd3ba(_0x1919e9);}});}exports[_0xb099('0x6a')]=function(_0x562fdf,_0x154e23){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x562fdf['params']['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x154e23,null))[_0xb099('0x29')](function(_0x16f5ac){if(_0x16f5ac){return db[_0xb099('0x6b')][_0xb099('0x51')](function(_0x256bc9){return db[_0xb099('0x56')][_0xb099('0x44')]({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id']},'attributes':['id'],'raw':!![]})[_0xb099('0x29')](function(_0x132542){if(_0x132542){return db[_0xb099('0x56')]['destroy']({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id'],'id':_[_0xb099('0x40')](_0x132542,function(_0x4f60f1){return _0x4f60f1['id'];})},'transaction':_0x256bc9});}})[_0xb099('0x29')](function(_0xf2c88){var _0x16e705=_[_0xb099('0x40')](_0x562fdf['body'],function(_0x730b8f){_0x730b8f[_0xb099('0x5b')]=_0x562fdf['params']['id'];return _0x730b8f;});return db[_0xb099('0x56')][_0xb099('0x6c')](_0x16e705,{'raw':!![],'transaction':_0x256bc9});})[_0xb099('0x29')](function(_0x27602c){var _0x3a3e23=_[_0xb099('0x3e')](_[_0xb099('0x40')](_0x27602c,function(_0x598393){return _0x598393[_0xb099('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x3a3e23){return db[_0xb099('0x56')]['findAll']({'where':{'userProfileId':_0x562fdf[_0xb099('0x57')]['id'],'sectionId':_[_0xb099('0x40')](_0x3a3e23,function(_0x5d9916){return _0x5d9916[_0xb099('0x54')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xb099('0x29')](function(_0x13347c){var _0xb044e6=_[_0xb099('0x40')](_0x562fdf['body'],function(_0xfd87e2){_0xfd87e2[_0xb099('0x5b')]=_0x562fdf[_0xb099('0x57')]['id'];return _0xfd87e2;});return db[_0xb099('0x65')][_0xb099('0x6c')](_0xb044e6,{'raw':!![],'transaction':_0x256bc9});});}})[_0xb099('0x46')](handleError(_0x154e23,null));});}})[_0xb099('0x29')](function(_0x2ebff8){var _0x27d75b=_[_0xb099('0x40')](_0x2ebff8,function(_0x24bbb7){return _0x24bbb7['get']({'plain':!![]});});})[_0xb099('0x29')](respondWithResult(_0x154e23,null))[_0xb099('0x46')](handleError(_0x154e23,null));};exports['removeResources']=function(_0x533ce8,_0x17b235,_0x2d1ba8){return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x533ce8[_0xb099('0x57')]['id']}})[_0xb099('0x29')](handleEntityNotFound(_0x17b235,null))['then'](function(_0x58bb64){if(_0x58bb64){return _0x58bb64[_0xb099('0x6d')](_0x533ce8['query'][_0xb099('0x5e')]);}})[_0xb099('0x29')](respondWithStatusCode(_0x17b235,null))[_0xb099('0x46')](handleError(_0x17b235,null));};exports[_0xb099('0x6e')]=function(_0x8321e2,_0x88585){var _0x1a87ff={};if(!_0x8321e2[_0xb099('0x33')][_0xb099('0x6f')])throw new Error(_0xb099('0x70'));if(!_0x8321e2[_0xb099('0x33')]['hasOwnProperty'](_0xb099('0x3b'))){_0x1a87ff[_0xb099('0x21')]=qs[_0xb099('0x21')](_0x8321e2[_0xb099('0x33')][_0xb099('0x21')]);_0x1a87ff['offset']=qs[_0xb099('0x20')](_0x8321e2[_0xb099('0x33')][_0xb099('0x20')]);}return db[_0xb099('0x2e')][_0xb099('0x48')]({'where':{'id':_0x8321e2[_0xb099('0x57')]['id']}})['then'](function(_0x1af8f2){if(!_0x1af8f2)throw new Error(_0xb099('0x71')+_0x8321e2[_0xb099('0x57')]['id']);return db['UserProfile'][_0xb099('0x6e')](_0x8321e2);})[_0xb099('0x29')](respondWithFilteredResult(_0x88585,_0x1a87ff))[_0xb099('0x46')](handleError(_0x88585,null));};
\ No newline at end of file
+var _0x7e27=['getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../mysqldb','redis','./userProfile.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','save','then','end','error','stack','name','send','map','fieldName','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','UserProfile','include','rows','catch','show','params','rawAttributes','options','create','body','clone','includeAll','find','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','each','UserProfileResource','sectionId','Resources','destroy','describe','addSections','userProfileId','removeSections','ids','getSections','enabled','includes','subsections','push','autoAssociation','Dashboard','forEach','resourceId','Plugin','bulkCreate','removeResources'];(function(_0x35acaa,_0x2211c6){var _0x49a129=function(_0x55422a){while(--_0x55422a){_0x35acaa['push'](_0x35acaa['shift']());}};_0x49a129(++_0x2211c6);}(_0x7e27,0xdd));var _0x77e2=function(_0x3a161e,_0x1b348a){_0x3a161e=_0x3a161e-0x0;var _0x32733d=_0x7e27[_0x3a161e];return _0x32733d;};'use strict';var emlformat=require(_0x77e2('0x0'));var rimraf=require(_0x77e2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x77e2('0x2'));var rp=require(_0x77e2('0x3'));var moment=require(_0x77e2('0x4'));var BPromise=require(_0x77e2('0x5'));var Mustache=require('mustache');var util=require(_0x77e2('0x6'));var path=require(_0x77e2('0x7'));var sox=require(_0x77e2('0x8'));var csv=require('to-csv');var ejs=require(_0x77e2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77e2('0xa'));var squel=require(_0x77e2('0xb'));var crypto=require('crypto');var jsforce=require(_0x77e2('0xc'));var deskjs=require(_0x77e2('0xd'));var toCsv=require(_0x77e2('0xe'));var querystring=require(_0x77e2('0xf'));var Papa=require(_0x77e2('0x10'));var Redis=require(_0x77e2('0x11'));var authService=require(_0x77e2('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77e2('0x13'));var logger=require('../../config/logger')(_0x77e2('0x14'));var utils=require(_0x77e2('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x77e2('0x16'))['db'];config[_0x77e2('0x17')]=_['defaults'](config[_0x77e2('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x77e2('0x17')]));require(_0x77e2('0x18'))[_0x77e2('0x19')](socket);function respondWithStatusCode(_0x33e820,_0x20276){_0x20276=_0x20276||0xcc;return function(_0x50f06e){if(_0x50f06e){return _0x33e820[_0x77e2('0x1a')](_0x20276);}return _0x33e820[_0x77e2('0x1b')](_0x20276)['end']();};}function respondWithResult(_0x46fb81,_0x134fee){_0x134fee=_0x134fee||0xc8;return function(_0x349627){if(_0x349627){return _0x46fb81[_0x77e2('0x1b')](_0x134fee)[_0x77e2('0x1c')](_0x349627);}};}function respondWithFilteredResult(_0x2322f9,_0x36e520){return function(_0x36b995){if(_0x36b995){var _0x42459a=typeof _0x36e520[_0x77e2('0x1d')]==='undefined'&&typeof _0x36e520[_0x77e2('0x1e')]===_0x77e2('0x1f');var _0x2c419d=_0x36b995[_0x77e2('0x20')];var _0x3774b3=_0x42459a?0x0:_0x36e520[_0x77e2('0x1d')];var _0x1a5415=_0x42459a?_0x36b995[_0x77e2('0x20')]:_0x36e520[_0x77e2('0x1d')]+_0x36e520[_0x77e2('0x1e')];var _0x31b817;if(_0x1a5415>=_0x2c419d){_0x1a5415=_0x2c419d;_0x31b817=0xc8;}else{_0x31b817=0xce;}_0x2322f9['status'](_0x31b817);return _0x2322f9[_0x77e2('0x21')](_0x77e2('0x22'),_0x3774b3+'-'+_0x1a5415+'/'+_0x2c419d)['json'](_0x36b995);}return null;};}function patchUpdates(_0x2d30d3){return function(_0x5eef40){try{jsonpatch['apply'](_0x5eef40,_0x2d30d3,!![]);}catch(_0x843208){return BPromise['reject'](_0x843208);}return _0x5eef40[_0x77e2('0x23')]();};}function saveUpdates(_0x1c8f39,_0x20eda4){return function(_0x5b5844){if(_0x5b5844){return _0x5b5844['update'](_0x1c8f39)[_0x77e2('0x24')](function(_0x5a7256){return _0x5a7256;});}return null;};}function removeEntity(_0x104860,_0x370dca){return function(_0x44ba24){if(_0x44ba24){return _0x44ba24['destroy']()[_0x77e2('0x24')](function(){_0x104860[_0x77e2('0x1b')](0xcc)[_0x77e2('0x25')]();});}};}function handleEntityNotFound(_0xa2a50f,_0x46efb0){return function(_0x58697f){if(!_0x58697f){_0xa2a50f[_0x77e2('0x1a')](0x194);}return _0x58697f;};}function handleError(_0x52ca41,_0x5013e7){_0x5013e7=_0x5013e7||0x1f4;return function(_0x362730){logger[_0x77e2('0x26')](_0x362730[_0x77e2('0x27')]);if(_0x362730[_0x77e2('0x28')]){delete _0x362730['name'];}_0x52ca41['status'](_0x5013e7)[_0x77e2('0x29')](_0x362730);};}exports['index']=function(_0x4e5996,_0x2ac4db){var _0x1371db={},_0x4036aa={},_0x97af4b={'count':0x0,'rows':[]};var _0x59bff1=_[_0x77e2('0x2a')](db['UserProfile']['rawAttributes'],function(_0x551e4d){return{'name':_0x551e4d[_0x77e2('0x2b')],'type':_0x551e4d['type']['key']};});_0x4036aa['model']=_[_0x77e2('0x2a')](_0x59bff1,_0x77e2('0x28'));_0x4036aa[_0x77e2('0x2c')]=_[_0x77e2('0x2d')](_0x4e5996['query']);_0x4036aa[_0x77e2('0x2e')]=_['intersection'](_0x4036aa[_0x77e2('0x2f')],_0x4036aa['query']);_0x1371db[_0x77e2('0x30')]=_[_0x77e2('0x31')](_0x4036aa[_0x77e2('0x2f')],qs[_0x77e2('0x32')](_0x4e5996[_0x77e2('0x2c')][_0x77e2('0x32')]));_0x1371db[_0x77e2('0x30')]=_0x1371db['attributes'][_0x77e2('0x33')]?_0x1371db[_0x77e2('0x30')]:_0x4036aa[_0x77e2('0x2f')];if(!_0x4e5996[_0x77e2('0x2c')][_0x77e2('0x34')](_0x77e2('0x35'))){_0x1371db[_0x77e2('0x1e')]=qs[_0x77e2('0x1e')](_0x4e5996[_0x77e2('0x2c')][_0x77e2('0x1e')]);_0x1371db[_0x77e2('0x1d')]=qs[_0x77e2('0x1d')](_0x4e5996[_0x77e2('0x2c')]['offset']);}_0x1371db[_0x77e2('0x36')]=qs[_0x77e2('0x37')](_0x4e5996[_0x77e2('0x2c')]['sort']);_0x1371db['where']=qs[_0x77e2('0x2e')](_[_0x77e2('0x38')](_0x4e5996[_0x77e2('0x2c')],_0x4036aa['filters']),_0x59bff1);if(_0x4e5996['query'][_0x77e2('0x39')]){_0x1371db[_0x77e2('0x3a')]=_[_0x77e2('0x3b')](_0x1371db[_0x77e2('0x3a')],{'$or':_[_0x77e2('0x2a')](_0x59bff1,function(_0x2dc783){if(_0x2dc783[_0x77e2('0x3c')]!==_0x77e2('0x3d')){var _0xe456e3={};_0xe456e3[_0x2dc783['name']]={'$like':'%'+_0x4e5996[_0x77e2('0x2c')][_0x77e2('0x39')]+'%'};return _0xe456e3;}})});}_0x1371db=_[_0x77e2('0x3b')]({},_0x1371db,_0x4e5996['options']);var _0x6c0443={'where':_0x1371db[_0x77e2('0x3a')]};return db[_0x77e2('0x3e')][_0x77e2('0x20')](_0x6c0443)[_0x77e2('0x24')](function(_0x195bce){_0x97af4b[_0x77e2('0x20')]=_0x195bce;if(_0x4e5996[_0x77e2('0x2c')]['includeAll']){_0x1371db[_0x77e2('0x3f')]=[{'all':!![]}];}return db[_0x77e2('0x3e')]['findAll'](_0x1371db);})[_0x77e2('0x24')](function(_0x37d61e){_0x97af4b[_0x77e2('0x40')]=_0x37d61e;return _0x97af4b;})[_0x77e2('0x24')](respondWithFilteredResult(_0x2ac4db,_0x1371db))[_0x77e2('0x41')](handleError(_0x2ac4db,null));};exports[_0x77e2('0x42')]=function(_0x575c44,_0x3021f8){var _0x3a0b71={'raw':![],'where':{'id':_0x575c44[_0x77e2('0x43')]['id']}},_0x199eeb={};_0x199eeb[_0x77e2('0x2f')]=_[_0x77e2('0x2d')](db['UserProfile'][_0x77e2('0x44')]);_0x199eeb[_0x77e2('0x2c')]=_[_0x77e2('0x2d')](_0x575c44[_0x77e2('0x2c')]);_0x199eeb[_0x77e2('0x2e')]=_[_0x77e2('0x31')](_0x199eeb['model'],_0x199eeb[_0x77e2('0x2c')]);_0x3a0b71[_0x77e2('0x30')]=_[_0x77e2('0x31')](_0x199eeb[_0x77e2('0x2f')],qs['fields'](_0x575c44[_0x77e2('0x2c')][_0x77e2('0x32')]));_0x3a0b71[_0x77e2('0x30')]=_0x3a0b71[_0x77e2('0x30')][_0x77e2('0x33')]?_0x3a0b71[_0x77e2('0x30')]:_0x199eeb[_0x77e2('0x2f')];if(_0x575c44[_0x77e2('0x2c')]['includeAll']){_0x3a0b71[_0x77e2('0x3f')]=[{'all':!![]}];}_0x3a0b71=_[_0x77e2('0x3b')]({},_0x3a0b71,_0x575c44[_0x77e2('0x45')]);return db[_0x77e2('0x3e')]['find'](_0x3a0b71)[_0x77e2('0x24')](handleEntityNotFound(_0x3021f8,null))['then'](respondWithResult(_0x3021f8,null))[_0x77e2('0x41')](handleError(_0x3021f8,null));};exports[_0x77e2('0x46')]=function(_0x4ee06e,_0x4e6f57){return db['UserProfile'][_0x77e2('0x46')](_0x4ee06e[_0x77e2('0x47')],{})[_0x77e2('0x24')](respondWithResult(_0x4e6f57,0xc9))[_0x77e2('0x41')](handleError(_0x4e6f57,null));};exports[_0x77e2('0x48')]=function(_0x4be720,_0x4b5d53){var _0x4013bf={'where':{'id':_0x4be720[_0x77e2('0x43')]['id']}},_0x2eb6ea={};_0x2eb6ea[_0x77e2('0x2f')]=_[_0x77e2('0x2d')](db[_0x77e2('0x3e')][_0x77e2('0x44')]);_0x4013bf[_0x77e2('0x30')]=_[_0x77e2('0x31')](_0x2eb6ea[_0x77e2('0x2f')],qs[_0x77e2('0x32')](_0x4be720['query']['fields']));_0x4013bf[_0x77e2('0x30')]=_0x4013bf[_0x77e2('0x30')][_0x77e2('0x33')]?_0x4013bf[_0x77e2('0x30')]:_0x2eb6ea[_0x77e2('0x2f')];if(_0x4be720[_0x77e2('0x2c')][_0x77e2('0x49')]){_0x4013bf[_0x77e2('0x3f')]=[{'all':!![]}];}_0x4013bf=_[_0x77e2('0x3b')]({},_0x4013bf,_0x4be720[_0x77e2('0x45')]);return db[_0x77e2('0x3e')][_0x77e2('0x4a')](_0x4013bf)[_0x77e2('0x24')](handleEntityNotFound(_0x4b5d53,null))[_0x77e2('0x24')](function(_0x7e8881){if(_0x7e8881){var _0x24b910=_0x7e8881[_0x77e2('0x4b')]({'plain':!![]});_0x24b910=qs[_0x77e2('0x4c')](_0x24b910,['id',_0x77e2('0x4d'),_0x77e2('0x4e'),_0x77e2('0x4f')]);_0x4be720[_0x77e2('0x47')]=_[_0x77e2('0x4c')](_0x4be720[_0x77e2('0x47')],['id',_0x77e2('0x4d'),'updatedAt']);return db[_0x77e2('0x50')][_0x77e2('0x51')](function(_0x1cda6c){return db[_0x77e2('0x3e')][_0x77e2('0x46')](_[_0x77e2('0x3b')](_0x24b910,_0x4be720['body']),{'include':_0x4be720[_0x77e2('0x2c')][_0x77e2('0x49')]?[{'all':!![]}]:undefined,'transaction':_0x1cda6c})[_0x77e2('0x24')](function(_0x35760d){var _0x57e317=_0x35760d['get']({'plain':!![]});return db[_0x77e2('0x52')][_0x77e2('0x53')]({'where':{'userProfileId':_0x4be720[_0x77e2('0x43')]['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x28a94c){if(_0x28a94c){return BPromise[_0x77e2('0x54')](_0x28a94c,function(_0x263b2d){return new BPromise(function(_0x5dc293,_0x9522aa){if(_0x263b2d['autoAssociation']===null||_0x263b2d['autoAssociation']===0x1)_0x5dc293(null);return db[_0x77e2('0x55')][_0x77e2('0x53')]({'where':{'sectionId':_0x263b2d['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x45d83e){var _0x521192=_[_0x77e2('0x2a')](_0x45d83e,function(_0x2b3b4d){return qs['omit'](_0x2b3b4d,['id','createdAt',_0x77e2('0x4e'),_0x77e2('0x56')]);});_0x5dc293(_0x521192);})[_0x77e2('0x41')](function(_0x31562f){_0x9522aa(_0x31562f);});})[_0x77e2('0x24')](function(_0x28ef55){var _0x81bb67=qs[_0x77e2('0x4c')](_0x263b2d,['id',_0x77e2('0x4d'),_0x77e2('0x4e')]);_0x81bb67['userProfileId']=_0x57e317['id'];if(_0x28ef55)_0x81bb67[_0x77e2('0x57')]=_0x28ef55;return _0x81bb67;})[_0x77e2('0x24')](function(_0x4d0694){return db[_0x77e2('0x52')]['create'](_0x4d0694,{'include':[{'model':db[_0x77e2('0x55')],'as':_0x77e2('0x57')}],'raw':!![],'transaction':_0x1cda6c});});})[_0x77e2('0x24')](function(){return _0x57e317;});}});});});}})[_0x77e2('0x24')](respondWithResult(_0x4b5d53,0xc9))['catch'](handleError(_0x4b5d53,null));};exports['update']=function(_0x505b5f,_0x2fd25c){if(_0x505b5f[_0x77e2('0x47')]['id']){delete _0x505b5f['body']['id'];}return db[_0x77e2('0x3e')][_0x77e2('0x4a')]({'where':{'id':_0x505b5f[_0x77e2('0x43')]['id']}})[_0x77e2('0x24')](handleEntityNotFound(_0x2fd25c,null))[_0x77e2('0x24')](saveUpdates(_0x505b5f[_0x77e2('0x47')],null))[_0x77e2('0x24')](respondWithResult(_0x2fd25c,null))['catch'](handleError(_0x2fd25c,null));};exports[_0x77e2('0x58')]=function(_0x2c7610,_0x34cac3){return db[_0x77e2('0x3e')]['find']({'where':{'id':_0x2c7610[_0x77e2('0x43')]['id']}})[_0x77e2('0x24')](handleEntityNotFound(_0x34cac3,null))[_0x77e2('0x24')](removeEntity(_0x34cac3,null))[_0x77e2('0x41')](handleError(_0x34cac3,null));};exports[_0x77e2('0x59')]=function(_0x1f6079,_0x352ec8){return db[_0x77e2('0x3e')][_0x77e2('0x59')]()[_0x77e2('0x24')](respondWithResult(_0x352ec8,null))[_0x77e2('0x41')](handleError(_0x352ec8,null));};exports[_0x77e2('0x5a')]=function(_0xb90811,_0x3a87e7){var _0x40c84b=_0xb90811['body'];return db['UserProfile'][_0x77e2('0x4a')]({'where':{'id':_0xb90811[_0x77e2('0x43')]['id']}})['then'](handleEntityNotFound(_0x3a87e7,null))[_0x77e2('0x24')](function(_0x1695da){if(_0x1695da){return db['sequelize'][_0x77e2('0x51')](function(_0x3150c4){return db['UserProfileSection'][_0x77e2('0x58')]({'where':{'userProfileId':_0xb90811[_0x77e2('0x43')]['id'],'sectionId':_[_0x77e2('0x2a')](_0x40c84b,function(_0x1d4441){return _0x1d4441['sectionId'];})},'transaction':_0x3150c4})['then'](function(){var _0x3fdc28=_['map'](_0x40c84b,function(_0x3a0864){_0x3a0864[_0x77e2('0x5b')]=_0xb90811[_0x77e2('0x43')]['id'];return _0x3a0864;});var _0x1802a3=[];return BPromise[_0x77e2('0x54')](_0x3fdc28,function(_0x45c330){return db['UserProfileSection'][_0x77e2('0x46')](_0x45c330,{'include':[{'model':db[_0x77e2('0x55')],'as':_0x77e2('0x57')}],'raw':!![],'transaction':_0x3150c4})['then'](function(_0xc543e3){_0x1802a3['push'](_0xc543e3[_0x77e2('0x4b')]({'plain':!![]}));});})[_0x77e2('0x24')](function(){return _0x1802a3;});});});}})['then'](function(_0x2f297c){return _0x2f297c;})['then'](respondWithResult(_0x3a87e7,null))['catch'](handleError(_0x3a87e7,null));};exports[_0x77e2('0x5c')]=function(_0x4a7652,_0xd9f26a){var _0x154028;return db[_0x77e2('0x3e')]['find']({'where':{'id':_0x4a7652['params']['id']},'attributes':['id',_0x77e2('0x28')]})[_0x77e2('0x24')](handleEntityNotFound(_0xd9f26a,null))['then'](function(_0x14ee67){if(_0x14ee67){_0x154028=_0x14ee67;return db[_0x77e2('0x52')][_0x77e2('0x58')]({'where':{'userProfileId':_0x4a7652[_0x77e2('0x43')]['id'],'sectionId':_0x4a7652[_0x77e2('0x2c')][_0x77e2('0x5d')]}});}})[_0x77e2('0x24')](function(){return _0x154028;})['then'](respondWithStatusCode(_0xd9f26a,null))[_0x77e2('0x41')](handleError(_0xd9f26a,null));};exports[_0x77e2('0x5e')]=function(_0x2201da,_0x5a9922){var _0x1342da=[];var _0x286ee0=[];return db['UserProfileSection'][_0x77e2('0x53')]({'where':{'userProfileId':_0x2201da[_0x77e2('0x43')]['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x23aad6){_0x1342da=_[_0x77e2('0x39')](_0x23aad6,function(_0x30a53e){return _0x30a53e[_0x77e2('0x5f')]===0x1||_['includes']([0x3eb,0x709],_0x30a53e[_0x77e2('0x56')]);});if(!_['isEmpty'](_0x1342da)){return _[_0x77e2('0x2a')](_0x1342da,function(_0x3e2de6){return _0x3e2de6[_0x77e2('0x56')];});}else{return;}})['then'](function(_0x19b959){if(_0x19b959)_0x286ee0=_0x19b959;if(_[_0x77e2('0x60')](_0x286ee0,0x64)){var _0x39ed18=_['find'](_0x1342da,{'sectionId':0x64});return hasDefaultDashboard(_0x39ed18)[_0x77e2('0x24')](function(_0x1048c3){return _[_0x77e2('0x2a')](_0x1342da,function(_0x1b4a03){if(_0x1b4a03[_0x77e2('0x56')]===0x64){_0x1b4a03[_0x77e2('0x61')]=_0x1048c3;}return _0x1b4a03;});});}else{return;}})[_0x77e2('0x24')](function(_0x27cb6e){if(_0x27cb6e)_0x1342da=_0x27cb6e;if(_[_0x77e2('0x60')](_0x286ee0,0x3eb)){var _0x2cefcc=_['find'](_0x1342da,{'sectionId':0x3eb});return getCustomDashboards(_0x2cefcc)[_0x77e2('0x24')](function(_0x391b8a){return _[_0x77e2('0x2a')](_0x1342da,function(_0x1b0bca){if(_0x2cefcc[_0x77e2('0x5f')]){if(_0x1b0bca['sectionId']===0x3eb){_0x1b0bca[_0x77e2('0x61')]=_0x391b8a;}}else{if(_0x1b0bca[_0x77e2('0x56')]===0x64){_0x1b0bca[_0x77e2('0x61')]=_0x391b8a;}}return _0x1b0bca;});});}else{return;}})[_0x77e2('0x24')](function(_0x3a56b7){if(_0x3a56b7)_0x1342da=_0x3a56b7;if(_[_0x77e2('0x60')](_0x286ee0,0x709)){var _0x552a40=_[_0x77e2('0x4a')](_0x1342da,{'sectionId':0x709});return getPlugins(_0x552a40)[_0x77e2('0x24')](function(_0x57ff38){if(_0x552a40[_0x77e2('0x5f')]){return _['map'](_0x1342da,function(_0x1ec0b2){if(_0x1ec0b2[_0x77e2('0x56')]===0x709){_0x1ec0b2['subsections']=_0x57ff38;}return _0x1ec0b2;});}else{var _0x328a93={'sectionId':0x76c,'enabled':0x1,'subsections':_0x57ff38};var _0x4f763a=_[_0x77e2('0x2a')](_0x1342da);_0x4f763a[_0x77e2('0x62')](_0x328a93);return _0x4f763a;}});}else{return;}})['then'](function(_0x11efd4){if(_0x11efd4)_0x1342da=_0x11efd4;return _[_0x77e2('0x39')](_0x1342da,[_0x77e2('0x5f'),0x1]);})['then'](respondWithResult(_0x5a9922,null))[_0x77e2('0x41')](handleError(_0x5a9922,null));};function hasDefaultDashboard(_0x297158){var _0x569230=[0x65];return new BPromise(function(_0x4d7a30,_0x4d926f){try{if(_0x297158[_0x77e2('0x63')]){_0x4d7a30(_0x569230);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x297158['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x259b4e){_0x259b4e?_0x4d7a30(_0x569230):_0x4d7a30();});}}catch(_0x949516){_0x4d926f(_0x949516);}});}function getCustomDashboards(_0x5db76d){var _0x5a384e=[];return new BPromise(function(_0x29a0a0,_0x24c406){try{if(_0x5db76d[_0x77e2('0x63')]){return db[_0x77e2('0x64')][_0x77e2('0x53')]({'raw':!![]})[_0x77e2('0x24')](function(_0x334154){_0x334154[_0x77e2('0x65')](function(_0x48716c){_0x5a384e[_0x77e2('0x62')](_0x48716c['id']+0x1869f);});_0x29a0a0(_0x5a384e);});}else{return db[_0x77e2('0x55')]['findAll']({'where':{'sectionId':_0x5db76d['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x3abe2d){_0x3abe2d[_0x77e2('0x65')](function(_0x997e63){_0x5a384e['push'](_0x997e63[_0x77e2('0x66')]+0x1869f);});_0x29a0a0(_0x5a384e);});}}catch(_0x4019da){_0x24c406(_0x4019da);}});}function getPlugins(_0xa25c6c){var _0x26f369=[];return new BPromise(function(_0x154750,_0x2a8179){try{if(_0xa25c6c['autoAssociation']){return db[_0x77e2('0x67')]['findAll']({'raw':!![]})[_0x77e2('0x24')](function(_0x39e5af){_0x39e5af[_0x77e2('0x65')](function(_0x340c65){_0x26f369[_0x77e2('0x62')](_0x340c65['id']+0x15b38);});_0x154750(_0x26f369);});}else{return db[_0x77e2('0x55')][_0x77e2('0x53')]({'where':{'sectionId':_0xa25c6c['id']},'raw':!![]})[_0x77e2('0x24')](function(_0x2425e5){_0x2425e5[_0x77e2('0x65')](function(_0x1d1afb){_0x26f369['push'](_0x1d1afb['resourceId']+0x15b38);});_0x154750(_0x26f369);});}}catch(_0xb1aea2){_0x2a8179(_0xb1aea2);}});}exports['addResources']=function(_0x5842ac,_0x412774){return db[_0x77e2('0x3e')][_0x77e2('0x4a')]({'where':{'id':_0x5842ac[_0x77e2('0x43')]['id']}})['then'](handleEntityNotFound(_0x412774,null))[_0x77e2('0x24')](function(_0x58e635){if(_0x58e635){return db[_0x77e2('0x50')][_0x77e2('0x51')](function(_0xe7a868){return db['UserProfileSection'][_0x77e2('0x53')]({'where':{'userProfileId':_0x5842ac['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x3169e1){if(_0x3169e1){return db[_0x77e2('0x52')]['destroy']({'where':{'userProfileId':_0x5842ac[_0x77e2('0x43')]['id'],'id':_[_0x77e2('0x2a')](_0x3169e1,function(_0xf711f7){return _0xf711f7['id'];})},'transaction':_0xe7a868});}})[_0x77e2('0x24')](function(_0x2691b3){var _0x37e113=_[_0x77e2('0x2a')](_0x5842ac[_0x77e2('0x47')],function(_0x5aa811){_0x5aa811[_0x77e2('0x5b')]=_0x5842ac[_0x77e2('0x43')]['id'];return _0x5aa811;});return db['UserProfileSection'][_0x77e2('0x68')](_0x37e113,{'raw':!![],'transaction':_0xe7a868});})[_0x77e2('0x24')](function(_0x5705b9){var _0x130193=_[_0x77e2('0x39')](_[_0x77e2('0x2a')](_0x5705b9,function(_0x2e5bcd){return _0x2e5bcd[_0x77e2('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0x130193){return db[_0x77e2('0x52')][_0x77e2('0x53')]({'where':{'userProfileId':_0x5842ac[_0x77e2('0x43')]['id'],'sectionId':_[_0x77e2('0x2a')](_0x130193,function(_0x34e386){return _0x34e386[_0x77e2('0x56')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x77e2('0x24')](function(_0x15f223){var _0x5d9f83=_[_0x77e2('0x2a')](_0x5842ac['body'],function(_0x463e7a){_0x463e7a['userProfileId']=_0x5842ac[_0x77e2('0x43')]['id'];return _0x463e7a;});return db[_0x77e2('0x55')]['bulkCreate'](_0x5d9f83,{'raw':!![],'transaction':_0xe7a868});});}})[_0x77e2('0x41')](handleError(_0x412774,null));});}})[_0x77e2('0x24')](function(_0x274996){var _0x35774c=_[_0x77e2('0x2a')](_0x274996,function(_0xd5b59b){return _0xd5b59b[_0x77e2('0x4b')]({'plain':!![]});});})[_0x77e2('0x24')](respondWithResult(_0x412774,null))['catch'](handleError(_0x412774,null));};exports[_0x77e2('0x69')]=function(_0x392c89,_0x156b35,_0x5d42eb){return db['UserProfile'][_0x77e2('0x4a')]({'where':{'id':_0x392c89[_0x77e2('0x43')]['id']}})[_0x77e2('0x24')](handleEntityNotFound(_0x156b35,null))[_0x77e2('0x24')](function(_0x154992){if(_0x154992){return _0x154992['removeResources'](_0x392c89[_0x77e2('0x2c')][_0x77e2('0x5d')]);}})[_0x77e2('0x24')](respondWithStatusCode(_0x156b35,null))[_0x77e2('0x41')](handleError(_0x156b35,null));};exports[_0x77e2('0x6a')]=function(_0x1761df,_0x506fae){var _0x2ed4a6={};if(!_0x1761df['query']['section'])throw new Error(_0x77e2('0x6b'));if(!_0x1761df['query'][_0x77e2('0x34')](_0x77e2('0x35'))){_0x2ed4a6[_0x77e2('0x1e')]=qs[_0x77e2('0x1e')](_0x1761df[_0x77e2('0x2c')]['limit']);_0x2ed4a6[_0x77e2('0x1d')]=qs['offset'](_0x1761df['query']['offset']);}return db[_0x77e2('0x3e')][_0x77e2('0x4a')]({'where':{'id':_0x1761df[_0x77e2('0x43')]['id']}})[_0x77e2('0x24')](function(_0x688d74){if(!_0x688d74)throw new Error(_0x77e2('0x6c')+_0x1761df['params']['id']);return db[_0x77e2('0x3e')]['getResources'](_0x1761df);})[_0x77e2('0x24')](respondWithFilteredResult(_0x506fae,_0x2ed4a6))[_0x77e2('0x41')](handleError(_0x506fae,null));};
\ No newline at end of file
index cfb2245..e6b01f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292c=['hook','exports','events','UserProfile','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x43709e,_0x2c3b45){var _0x452820=function(_0x42777c){while(--_0x42777c){_0x43709e['push'](_0x43709e['shift']());}};_0x452820(++_0x2c3b45);}(_0x292c,0x66));var _0xc292=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x292c[_0x4394b6];return _0x360244;};'use strict';var EventEmitter=require(_0xc292('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xc292('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc292('0x2')](0x0);var events={'afterCreate':_0xc292('0x3'),'afterUpdate':_0xc292('0x4'),'afterDestroy':_0xc292('0x5')};function emitEvent(_0x50b478){return function(_0x1f14f9,_0x536154,_0x516f54){UserProfileEvents[_0xc292('0x6')](_0x50b478+':'+_0x1f14f9['id'],_0x1f14f9);UserProfileEvents[_0xc292('0x6')](_0x50b478,_0x1f14f9);_0x516f54(null);};}for(var e in events){if(events[_0xc292('0x7')](e)){var event=events[e];UserProfile[_0xc292('0x8')](e,emitEvent(event));}}module[_0xc292('0x9')]=UserProfileEvents;
\ No newline at end of file
+var _0x1c63=['update','remove','emit','hasOwnProperty','events','../../mysqldb','UserProfile','setMaxListeners'];(function(_0x30942f,_0x350c47){var _0x1c21e9=function(_0x279e80){while(--_0x279e80){_0x30942f['push'](_0x30942f['shift']());}};_0x1c21e9(++_0x350c47);}(_0x1c63,0xdc));var _0x31c6=function(_0x2fbb21,_0x1f3785){_0x2fbb21=_0x2fbb21-0x0;var _0x1caa91=_0x1c63[_0x2fbb21];return _0x1caa91;};'use strict';var EventEmitter=require(_0x31c6('0x0'));var UserProfile=require(_0x31c6('0x1'))['db'][_0x31c6('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x31c6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x31c6('0x4'),'afterDestroy':_0x31c6('0x5')};function emitEvent(_0x2501a8){return function(_0x598eed,_0x12da33,_0x3c1288){UserProfileEvents[_0x31c6('0x6')](_0x2501a8+':'+_0x598eed['id'],_0x598eed);UserProfileEvents[_0x31c6('0x6')](_0x2501a8,_0x598eed);_0x3c1288(null);};}for(var e in events){if(events[_0x31c6('0x7')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index f55e8bb..dbc1521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d5=['filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','merge','key','foreignKey','forEach','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','ids','order','customSorting','extraQueryConditions','Tags','tag','ThroughTags','color','openTabs','true','chat','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','exports','filter','findAll','then','associatedResources','map','catch','value','model','name','resolve','UserProfileResource','field','AnalyticExtractedReport','type','resourceId','squareprojects','childModel','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projects','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','telephone','queue','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','VoiceQueues','users','agents','Users','user','Telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','customdashboards','Dashboard','intervals','Pause','scheduler','sounds','tags','Tag','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','reportId','metrics','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','from','user_has_','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','UserProfile','user_profiles','section','isEmpty','length','push','find','params','all','ignore','union','autoAssociation'];(function(_0xea52cf,_0xabaf62){var _0x35397b=function(_0x1e9af0){while(--_0x1e9af0){_0xea52cf['push'](_0xea52cf['shift']());}};_0x35397b(++_0xabaf62);}(_0xa1d5,0xe2));var _0x5a1d=function(_0x2a82ae,_0x5e321c){_0x2a82ae=_0x2a82ae-0x0;var _0x1f0f5b=_0xa1d5[_0x2a82ae];return _0x1f0f5b;};'use strict';var _=require(_0x5a1d('0x0'));var attributes=require(_0x5a1d('0x1'));var qs=require(_0x5a1d('0x2'));var squel=require('squel');module[_0x5a1d('0x3')]=function(_0x4774a1){var _0x2f07d6=_0x4774a1['models'];function _0x2d7c44(_0x30ad7f,_0x43eeec){return new Promise(function(_0xbfdba1,_0x5d84cf){if(!_0x43eeec)return _0xbfdba1(null);var _0x2600f2=_0x43eeec[_0x5a1d('0x4')]?{[_0x43eeec[_0x5a1d('0x4')]['field']]:_0x43eeec[_0x5a1d('0x4')]['value']}:undefined;return _0x2f07d6[_0x30ad7f][_0x5a1d('0x5')]({'where':_0x2600f2,'raw':!![]})[_0x5a1d('0x6')](function(_0x304954){_0x43eeec[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x304954,'id');_0xbfdba1(_0x43eeec);})[_0x5a1d('0x9')](function(_0x102091){_0x5d84cf(_0x102091);});});}function _0x35049e(_0x204f76,_0x5b0c39){return new Promise(function(_0x22d9ee,_0x14cae2){var _0x5f1fb4=_0x204f76['filter']?{[_0x204f76[_0x5a1d('0x4')]['field']]:_0x204f76[_0x5a1d('0x4')][_0x5a1d('0xa')]}:undefined;return _0x2f07d6[_0x204f76[_0x5a1d('0xb')]][_0x5a1d('0x5')]({'where':_0x5f1fb4,'raw':!![]})[_0x5a1d('0x6')](function(_0x412bf6){_0x5b0c39[_0x5a1d('0x7')]=_['map'](_0x412bf6,function(_0xe5e6ae){return _0xe5e6ae[_0x5a1d('0xc')];});_0x22d9ee(_0x5b0c39);})[_0x5a1d('0x9')](function(_0x22d244){_0x14cae2(_0x22d244);});});}function _0x1a4201(_0x195f45,_0x24c47c,_0x144ae6){if(!_0x24c47c)return Promise[_0x5a1d('0xd')](null);return new Promise(function(_0x4170fd,_0x5da651){return _0x2f07d6[_0x5a1d('0xe')][_0x5a1d('0x5')]({'where':{'sectionId':_0x24c47c['id']},'raw':!![]})[_0x5a1d('0x6')](function(_0x32a676){if(_0x195f45[_0x5a1d('0xf')]&&_0x195f45['field']!=='id'){_0x24c47c[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x32a676,function(_0x3e2f41){return _0x3e2f41[_0x195f45[_0x5a1d('0xf')]];});}else{if(_0x144ae6===_0x5a1d('0x10')){_0x24c47c['associatedResources']=_[_0x5a1d('0x8')](_0x32a676,function(_0x19c9aa){return{'id':_0x19c9aa['resourceId'],'type':_0x19c9aa[_0x5a1d('0x11')]};});}else{_0x24c47c[_0x5a1d('0x7')]=_[_0x5a1d('0x8')](_0x32a676,function(_0x6bdf42){return _0x6bdf42[_0x5a1d('0x12')];});}}_0x4170fd(_0x24c47c);})[_0x5a1d('0x9')](function(_0x2e523d){_0x5da651(_0x2e523d);});});}function _0x317a41(_0x12cfd7,_0x2e2c3b){var _0x4926e3={'parentSections':[]};switch(_0x12cfd7['toLowerCase']()){case _0x5a1d('0x13'):_0x4926e3[_0x5a1d('0x14')]='SquareProject';break;case _0x5a1d('0x15'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x16');break;case _0x5a1d('0x17'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x18');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x1a'),'field':'name','foreignKey':'projectName'}];break;case _0x5a1d('0x1b'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x1c');break;case _0x5a1d('0x1d'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x1e');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x1f'),'field':'id','foreignKey':_0x5a1d('0x20')}];break;case _0x5a1d('0x21'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x22');break;case _0x5a1d('0x23'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x24');break;case _0x5a1d('0x25'):_0x4926e3[_0x5a1d('0x14')]='CmCustomField';break;case _0x5a1d('0x26'):_0x4926e3['childModel']=_0x5a1d('0x27');break;case _0x5a1d('0x28'):_0x4926e3['childModel']=_0x5a1d('0x29');break;case _0x5a1d('0x2a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x2b');break;case _0x5a1d('0x2c'):_0x4926e3[_0x5a1d('0x14')]='FaxAccount';break;case _0x5a1d('0x2d'):case _0x5a1d('0x2e'):case _0x5a1d('0x2f'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x30');break;case _0x5a1d('0x31'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x32');break;case _0x5a1d('0x33'):_0x4926e3['childModel']='VoiceMail';break;case _0x5a1d('0x34'):_0x4926e3['childModel']=_0x5a1d('0x35');_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x36'),'field':_0x5a1d('0xc'),'foreignKey':_0x5a1d('0x37'),'model':_0x5a1d('0x38'),'filter':{'field':_0x5a1d('0x39'),'value':[_0x5a1d('0x3a')]}},{'name':'Telephones','field':_0x5a1d('0xc'),'foreignKey':'membername','model':_0x5a1d('0x38'),'filter':{'field':_0x5a1d('0x39'),'value':[_0x5a1d('0x3b')]}},{'name':'VoiceQueues','field':_0x5a1d('0xc'),'foreignKey':_0x5a1d('0x3c'),'model':_0x5a1d('0x3d'),'filter':{'field':_0x5a1d('0x11'),'value':[_0x5a1d('0x3e')]}},{'name':_0x5a1d('0x3f'),'field':_0x5a1d('0xc'),'foreignKey':'queue','model':_0x5a1d('0x3d'),'filter':{'field':'type','value':[_0x5a1d('0x40')]}}];break;case'musiconholds':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x41');break;case _0x5a1d('0x42'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x43');break;case _0x5a1d('0x44'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x45');break;case _0x5a1d('0x46'):_0x4926e3['childModel']='Campaign';break;case _0x5a1d('0x47'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x48');break;case _0x5a1d('0x49'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x4a');break;case _0x5a1d('0x4b'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x4c');break;case'openchannelqueues':_0x4926e3['childModel']=_0x5a1d('0x4d');break;case _0x5a1d('0x4e'):_0x4926e3['childModel']='OpenchannelAccount';break;case _0x5a1d('0x4f'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x50');break;case _0x5a1d('0x51'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x52');break;case _0x5a1d('0x53'):_0x4926e3[_0x5a1d('0x14')]='WhatsappQueue';break;case _0x5a1d('0x54'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x55');break;case _0x5a1d('0x56'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x57');break;case _0x5a1d('0x58'):case'queuecampaigns':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x3d');if(_0x2e2c3b){_0x4926e3[_0x5a1d('0x19')]=[{'name':_0x5a1d('0x59')},{'name':_0x5a1d('0x3f')}];}break;case _0x5a1d('0x5a'):case _0x5a1d('0x5b'):case'telephones':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x38');if(_0x2e2c3b){_0x4926e3['parentSections']=[{'name':_0x5a1d('0x5c'),'filter':{'field':_0x5a1d('0x39'),'value':['admin',_0x5a1d('0x5d')]},'ignore':!![]},{'name':'Agents'},{'name':_0x5a1d('0x5e')}];}break;case _0x5a1d('0x5f'):_0x4926e3[_0x5a1d('0x14')]='ZendeskAccount';break;case _0x5a1d('0x60'):_0x4926e3['childModel']=_0x5a1d('0x61');break;case _0x5a1d('0x62'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x63');break;case _0x5a1d('0x64'):_0x4926e3[_0x5a1d('0x14')]='SugarcrmAccount';break;case'deskaccounts':_0x4926e3['childModel']=_0x5a1d('0x65');break;case _0x5a1d('0x66'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x67');break;case _0x5a1d('0x68'):_0x4926e3[_0x5a1d('0x14')]='User';break;case _0x5a1d('0x69'):_0x4926e3[_0x5a1d('0x14')]='CannedAnswer';break;case'dispositions':_0x4926e3['childModel']='Disposition';break;case _0x5a1d('0x6a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x6b');break;case _0x5a1d('0x6c'):_0x4926e3[_0x5a1d('0x14')]='Interval';break;case'pauses':_0x4926e3['childModel']=_0x5a1d('0x6d');break;case _0x5a1d('0x6e'):_0x4926e3['childModel']='Schedule';break;case _0x5a1d('0x6f'):_0x4926e3['childModel']='Sound';break;case _0x5a1d('0x70'):_0x4926e3['childModel']=_0x5a1d('0x71');break;case'templates':_0x4926e3['childModel']=_0x5a1d('0x72');break;case'triggers':_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x73');break;case _0x5a1d('0x74'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x75');break;case _0x5a1d('0x76'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x77');break;case _0x5a1d('0x78'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x79');break;case _0x5a1d('0x7a'):_0x4926e3[_0x5a1d('0x14')]=_0x5a1d('0x10');_0x4926e3[_0x5a1d('0x19')]=[{'name':'Reports','field':'id','foreignKey':_0x5a1d('0x7b')}];break;case _0x5a1d('0x7c'):_0x4926e3['childModel']='AnalyticMetric';break;}return _0x4926e3;}function _0x4c14a5(_0x2c4b7e,_0x54c8a2){var _0x153b20=_0x2c4b7e[_0x5a1d('0x7d')](0x0)[_0x5a1d('0x7e')]()+_0x2c4b7e[_0x5a1d('0x7f')](0x1);var _0x5e9943={'type':_0x2f07d6[_0x5a1d('0x80')][_0x5a1d('0x81')][_0x5a1d('0x82')],'raw':!![]};return new Promise(function(_0x42038f,_0x5c0f5a){var _0x5660f3=squel['select']()['field'](_0x5a1d('0x83')+_0x153b20+'InteractionId','id')[_0x5a1d('0xf')]('ui.createdAt')[_0x5a1d('0x84')](_0x5a1d('0x85')+_0x2c4b7e+'_interactions','ui')[_0x5a1d('0x86')](_0x5a1d('0x87'),_0x54c8a2['id']);return _0x2f07d6[_0x5a1d('0x88')][_0x5a1d('0x89')](_0x5660f3[_0x5a1d('0x8a')](),_0x5e9943)[_0x5a1d('0x6')](function(_0x4775a8){_0x54c8a2[_0x153b20+_0x5a1d('0x8b')]=_0x4775a8;_0x42038f(_0x4775a8);})[_0x5a1d('0x9')](function(_0x472deb){_0x5c0f5a(_0x472deb);});});}return _0x4774a1['define'](_0x5a1d('0x8c'),attributes,{'tableName':_0x5a1d('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x42d378){var _0x534f2b={'raw':_0x42d378['query']['raw'],'where':{}};var _0x5bad8c={};var _0x230c90={'count':0x0,'rows':[]};var _0x597a51=_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x8e')];var _0x2491de=_0x42d378[_0x5a1d('0x89')]['mergeResources']||![];var _0x5b0984=_0x317a41(_0x597a51,_0x2491de);if(!_0x5b0984['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x597a51+'\x27');var _0x56d29d=[{'name':_0x597a51}];if(!_[_0x5a1d('0x8f')](_0x5b0984[_0x5a1d('0x19')]))_0x56d29d=_0x5b0984[_0x5a1d('0x19')];var _0x265237=[];for(var _0x594e1b=0x0;_0x594e1b<_0x56d29d[_0x5a1d('0x90')];_0x594e1b++){_0x265237[_0x5a1d('0x91')](_0x2f07d6['UserProfileSection'][_0x5a1d('0x92')]({'where':{'userProfileId':_0x42d378[_0x5a1d('0x93')]['id'],'name':_0x56d29d[_0x594e1b]['name']},'raw':!![]}));}return Promise[_0x5a1d('0x94')](_0x265237)[_0x5a1d('0x6')](function(_0x4d3f46){var _0x4f28ce=_[_0x5a1d('0x4')](_0x4d3f46,function(_0x57d961){return _0x57d961?_0x57d961:undefined;});var _0x1bb49d=_[_0x5a1d('0x4')](_0x56d29d,[_0x5a1d('0x95'),!![]]);var _0x4fb6bd=_[_0x5a1d('0x8f')](_0x4f28ce)&&_[_0x5a1d('0x8f')](_0x1bb49d)?null:_[_0x5a1d('0x96')](_0x1bb49d,_0x4f28ce);if(!_0x4fb6bd)return null;var _0x1afa63=[];for(var _0x624932=0x0;_0x624932<_0x4fb6bd['length'];_0x624932++){var _0x16b6cc=_[_0x5a1d('0x92')](_0x56d29d,function(_0x3017ca){return _0x4fb6bd[_0x624932]?_0x3017ca['name']===_0x4fb6bd[_0x624932]['name']:null;});if(_0x16b6cc){if(_0x4fb6bd[_0x624932][_0x5a1d('0x95')]){_0x1afa63[_0x5a1d('0x91')](_0x2d7c44(_0x5b0984[_0x5a1d('0x14')],_0x4fb6bd[_0x624932]));}else{if(!_0x4fb6bd[_0x624932][_0x5a1d('0x97')]){_0x1afa63[_0x5a1d('0x91')](_0x1a4201(_0x16b6cc,_0x4fb6bd[_0x624932],_0x5b0984[_0x5a1d('0x14')]));}else{if(_0x16b6cc[_0x5a1d('0xb')]){_0x1afa63[_0x5a1d('0x91')](_0x35049e(_0x16b6cc,_0x4fb6bd[_0x624932]));}}}}}return Promise[_0x5a1d('0x94')](_0x1afa63);})[_0x5a1d('0x6')](function(_0x46c5da){var _0x541adc=_0x46c5da;var _0x4f6701=null;if(_0x541adc){_0x4f6701=_0x541adc[_0x5a1d('0x90')]===0x1?_0x541adc[0x0]:null;}if(!_0x4f6701&&!_0x541adc)return _0x230c90;var _0x56d0a0=_0x2f07d6[_0x5b0984[_0x5a1d('0x14')]]['rawAttributes'];_0x5bad8c[_0x5a1d('0xb')]=_['keys'](_0x56d0a0);_0x5bad8c[_0x5a1d('0x89')]=_['keys'](_0x42d378[_0x5a1d('0x89')]);_0x5bad8c[_0x5a1d('0x98')]=_[_0x5a1d('0x99')](_0x5bad8c[_0x5a1d('0xb')],_0x5bad8c[_0x5a1d('0x89')]);_0x534f2b[_0x5a1d('0x9a')]=_[_0x5a1d('0x99')](_0x5bad8c[_0x5a1d('0xb')],qs[_0x5a1d('0x9b')](_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x9b')]));_0x534f2b['attributes']=_0x534f2b[_0x5a1d('0x9a')][_0x5a1d('0x90')]?_0x534f2b[_0x5a1d('0x9a')]:_0x5bad8c['model'];if(!_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x9c')](_0x5a1d('0x9d'))){_0x534f2b[_0x5a1d('0x9e')]=qs['limit'](_0x42d378['query'][_0x5a1d('0x9e')]);_0x534f2b[_0x5a1d('0x9f')]=qs['offset'](_0x42d378['query'][_0x5a1d('0x9f')]);}_0x534f2b['order']=qs[_0x5a1d('0xa0')](_0x42d378['query'][_0x5a1d('0xa0')]);_0x534f2b[_0x5a1d('0x86')]=qs[_0x5a1d('0x98')](_[_0x5a1d('0xa1')](_0x42d378[_0x5a1d('0x89')],_0x5bad8c[_0x5a1d('0x98')]));if(_0x42d378['query'][_0x5a1d('0x4')]){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b[_0x5a1d('0x86')],{'$or':_[_0x5a1d('0x8')](_0x56d0a0,function(_0x40eacd){if(_0x40eacd['type'][_0x5a1d('0xa3')]!=='VIRTUAL'){var _0x5cccfd={};_0x5cccfd[_0x40eacd['field']]={'$like':'%'+_0x42d378[_0x5a1d('0x89')][_0x5a1d('0x4')]+'%'};return _0x5cccfd;}})});}var _0x345249=[];var _0x349a69=null;var _0x450076={};if(_0x4f6701){_0x349a69=_['find'](_0x56d29d,[_0x5a1d('0xc'),_0x4f6701[_0x5a1d('0xc')]]);if(_0x349a69[_0x5a1d('0xf')]){_0x450076={};if(_0x5b0984['childModel']===_0x5a1d('0x10')){_0x450076[_0x349a69[_0x5a1d('0xa4')]]=_['map'](_0x4f6701['associatedResources'],'id');}else{_0x450076[_0x349a69['foreignKey']]=_0x4f6701[_0x5a1d('0x7')];}_0x345249['push'](_0x450076);}else{_0x534f2b[_0x5a1d('0x86')]['id']=_0x4f6701['associatedResources'];}}else{for(var _0x197b10=0x0;_0x197b10<_0x541adc['length'];_0x197b10++){_0x349a69=_[_0x5a1d('0x92')](_0x56d29d,['name',_0x541adc[_0x197b10][_0x5a1d('0xc')]]);if(_0x349a69[_0x5a1d('0xf')]){_0x450076={};_0x450076[_0x349a69[_0x5a1d('0xa4')]]=_0x541adc[_0x197b10][_0x5a1d('0x7')];_0x345249[_0x5a1d('0x91')](_0x450076);}else{if(!_0x534f2b['where']['id'])_0x534f2b[_0x5a1d('0x86')]['id']=[];_0x541adc[_0x197b10]['associatedResources'][_0x5a1d('0xa5')](function(_0xa0db2d){_0x534f2b[_0x5a1d('0x86')]['id'][_0x5a1d('0x91')](_0xa0db2d);});}}}if(!_[_0x5a1d('0x8f')](_0x345249)){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b['where'],{'$and':{'$or':_0x345249}});}_0x534f2b=_['merge']({},_0x534f2b,_0x42d378['options']);if(_0x4f6701&&!_0x4f6701[_0x5a1d('0x97')]&&_0x5b0984['childModel']===_0x5a1d('0x10')){if(_0x42d378['query']['includeAll']){_0x534f2b[_0x5a1d('0xa6')]=[{'all':!![]}];}return _0x2f07d6[_0x5b0984[_0x5a1d('0x14')]]['findAll'](_0x534f2b)[_0x5a1d('0x6')](function(_0x3bdad0){var _0x559d47=[];_0x3bdad0['forEach'](function(_0x3918d4){var _0x12222f;switch(_0x3918d4[_0x5a1d('0xa7')]){case _0x5a1d('0xa8'):_0x12222f=_[_0x5a1d('0x92')](_0x4f6701['associatedResources'],function(_0x368541){return _0x368541['id']===_0x3918d4['reportId']&&_0x368541['type']===_0x5a1d('0xa9');});break;case _0x5a1d('0xaa'):_0x12222f=_[_0x5a1d('0x92')](_0x4f6701['associatedResources'],function(_0x2c7aab){return _0x2c7aab['id']===_0x3918d4[_0x5a1d('0x7b')]&&_0x2c7aab[_0x5a1d('0x11')]===_0x5a1d('0xab');});break;}if(_0x12222f)_0x559d47['push'](_0x3918d4);});_0x230c90[_0x5a1d('0xac')]=_0x559d47[_0x5a1d('0x90')];_0x230c90[_0x5a1d('0xad')]=_0x559d47;return _0x230c90;});}else{if(!_[_0x5a1d('0x8f')](_0x42d378[_0x5a1d('0x89')]['ids'])){_0x534f2b[_0x5a1d('0x86')]['id']=_0x534f2b[_0x5a1d('0x86')]['id']?_[_0x5a1d('0x99')](_0x534f2b['where']['id'],_0x42d378['query']['ids']):_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xae')];if(_0x42d378[_0x5a1d('0x89')]['customSorting']){_0x534f2b[_0x5a1d('0xaf')]=_0x42d378['query'][_0x5a1d('0xb0')];}}if(_0x42d378['query'][_0x5a1d('0xb1')]){_0x534f2b[_0x5a1d('0x86')]=_[_0x5a1d('0xa2')](_0x534f2b[_0x5a1d('0x86')],{'$and':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb1')]});}return _0x2f07d6[_0x5b0984[_0x5a1d('0x14')]][_0x5a1d('0xac')]({'where':_0x534f2b[_0x5a1d('0x86')]})[_0x5a1d('0x6')](function(_0x43fced){_0x230c90[_0x5a1d('0xac')]=_0x43fced;if(_0x42d378[_0x5a1d('0x89')]['includeAll']){if(_0x5b0984[_0x5a1d('0x14')]===_0x5a1d('0x1e')){_0x534f2b[_0x5a1d('0xa6')]=[{'model':_0x2f07d6[_0x5a1d('0x71')],'as':_0x5a1d('0xb2'),'attributes':['id',_0x5a1d('0xc'),'color'],'required':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb3')]?!![]:![]},{'model':_0x2f07d6['Tag'],'as':_0x5a1d('0xb4'),'attributes':['id',_0x5a1d('0xc'),_0x5a1d('0xb5')],'through':_0x42d378[_0x5a1d('0x89')]['tag']?{'attributes':[],'where':{'TagId':_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb3')]||undefined}}:{},'required':_0x42d378['query']['tag']?!![]:![]}];}else{_0x534f2b[_0x5a1d('0xa6')]=[{'all':!![]}];}}return _0x2f07d6[_0x5b0984['childModel']]['findAll'](_0x534f2b);})[_0x5a1d('0x6')](function(_0x146b5d){_0x230c90[_0x5a1d('0xad')]=_0x146b5d;if(_0x597a51===_0x5a1d('0x36')&&_0x42d378[_0x5a1d('0x89')][_0x5a1d('0xb6')]===_0x5a1d('0xb7')){var _0x417dc1=[];for(var _0x5a641e=0x0;_0x5a641e<_0x230c90[_0x5a1d('0xad')][_0x5a1d('0x90')];_0x5a641e++){_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xb8'),_0x230c90['rows'][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5('sms',_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5('fax',_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1['push'](_0x4c14a5(_0x5a1d('0xba'),_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xbb'),_0x230c90['rows'][_0x5a641e][_0x5a1d('0xb9')]));_0x417dc1[_0x5a1d('0x91')](_0x4c14a5(_0x5a1d('0xbc'),_0x230c90[_0x5a1d('0xad')][_0x5a641e][_0x5a1d('0xb9')]));}return Promise[_0x5a1d('0x94')](_0x417dc1)[_0x5a1d('0x6')](function(){return _0x230c90;});}return _0x230c90;});}});}}});};
\ No newline at end of file
+var _0x1806=['catch','model','associatedResources','map','name','UserProfileResource','field','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','projectName','projects','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceRecording','Agents','membername','User','role','Telephones','VoiceQueues','queue','VoiceQueue','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','ivrcampaigns','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','voicequeues','agents','telephones','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','dispositions','Disposition','intervals','Interval','pauses','scheduler','Schedule','Sound','Tag','templates','Template','triggers','trunks','Trunk','Variable','plugins','metrics','AnalyticMetric','charAt','toUpperCase','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','_interactions','where','ui.UserId\x20=\x20?','query','OpenTabs','define','UserProfile','raw','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','find','params','union','ignore','push','all','rawAttributes','keys','filters','intersection','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','pick','key','VIRTUAL','foreignKey','forEach','merge','options','autoAssociation','includeAll','include','default','reportId','DefaultReports','custom','CustomReports','rows','ids','customSorting','extraQueryConditions','count','Tags','color','tag','ThroughTags','openTabs','true','chat','dataValues','sms','fax','whatsapp','./userProfile.attributes','squel','exports','models','filter','value','findAll','then'];(function(_0x1077d5,_0x2dc4ec){var _0x56c286=function(_0x4e9849){while(--_0x4e9849){_0x1077d5['push'](_0x1077d5['shift']());}};_0x56c286(++_0x2dc4ec);}(_0x1806,0xb4));var _0x6180=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x1806[_0x1ac595];return _0x455fff;};'use strict';var _=require('lodash');var attributes=require(_0x6180('0x0'));var qs=require('../../components/parsers/qs');var squel=require(_0x6180('0x1'));module[_0x6180('0x2')]=function(_0x2abfa0){var _0x1eb4db=_0x2abfa0[_0x6180('0x3')];function _0x4380f9(_0x2194ac,_0x3ee27f){return new Promise(function(_0x39297a,_0x56a354){if(!_0x3ee27f)return _0x39297a(null);var _0x34f24d=_0x3ee27f[_0x6180('0x4')]?{[_0x3ee27f[_0x6180('0x4')]['field']]:_0x3ee27f[_0x6180('0x4')][_0x6180('0x5')]}:undefined;return _0x1eb4db[_0x2194ac][_0x6180('0x6')]({'where':_0x34f24d,'raw':!![]})[_0x6180('0x7')](function(_0x2cbd40){_0x3ee27f['associatedResources']=_['map'](_0x2cbd40,'id');_0x39297a(_0x3ee27f);})[_0x6180('0x8')](function(_0x28d9d2){_0x56a354(_0x28d9d2);});});}function _0x1855c1(_0x1b7b78,_0x39becf){return new Promise(function(_0x2a1201,_0x4c4c58){var _0x58ad38=_0x1b7b78['filter']?{[_0x1b7b78['filter']['field']]:_0x1b7b78['filter'][_0x6180('0x5')]}:undefined;return _0x1eb4db[_0x1b7b78[_0x6180('0x9')]]['findAll']({'where':_0x58ad38,'raw':!![]})[_0x6180('0x7')](function(_0x117224){_0x39becf[_0x6180('0xa')]=_[_0x6180('0xb')](_0x117224,function(_0x469b37){return _0x469b37[_0x6180('0xc')];});_0x2a1201(_0x39becf);})[_0x6180('0x8')](function(_0x329b1b){_0x4c4c58(_0x329b1b);});});}function _0x3182da(_0x284560,_0x56217f,_0x516ed9){if(!_0x56217f)return Promise['resolve'](null);return new Promise(function(_0x5bcb5c,_0x5910aa){return _0x1eb4db[_0x6180('0xd')][_0x6180('0x6')]({'where':{'sectionId':_0x56217f['id']},'raw':!![]})[_0x6180('0x7')](function(_0x4abdc0){if(_0x284560[_0x6180('0xe')]&&_0x284560[_0x6180('0xe')]!=='id'){_0x56217f[_0x6180('0xa')]=_[_0x6180('0xb')](_0x4abdc0,function(_0x15df7d){return _0x15df7d[_0x284560['field']];});}else{if(_0x516ed9===_0x6180('0xf')){_0x56217f[_0x6180('0xa')]=_[_0x6180('0xb')](_0x4abdc0,function(_0x110bcb){return{'id':_0x110bcb[_0x6180('0x10')],'type':_0x110bcb[_0x6180('0x11')]};});}else{_0x56217f['associatedResources']=_[_0x6180('0xb')](_0x4abdc0,function(_0xee363c){return _0xee363c[_0x6180('0x10')];});}}_0x5bcb5c(_0x56217f);})[_0x6180('0x8')](function(_0x59d284){_0x5910aa(_0x59d284);});});}function _0x5d31d3(_0x48d7a9,_0xd705a2){var _0x1aa6ef={'parentSections':[]};switch(_0x48d7a9[_0x6180('0x12')]()){case _0x6180('0x13'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x15');break;case _0x6180('0x16'):_0x1aa6ef['childModel']=_0x6180('0x17');break;case'squarerecordings':_0x1aa6ef['childModel']=_0x6180('0x18');_0x1aa6ef[_0x6180('0x19')]=[{'name':'SquareProjects','field':_0x6180('0xc'),'foreignKey':_0x6180('0x1a')}];break;case _0x6180('0x1b'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x1c');break;case _0x6180('0x1d'):_0x1aa6ef['childModel']=_0x6180('0x1e');_0x1aa6ef[_0x6180('0x19')]=[{'name':_0x6180('0x1f'),'field':'id','foreignKey':_0x6180('0x20')}];break;case _0x6180('0x21'):_0x1aa6ef['childModel']=_0x6180('0x22');break;case _0x6180('0x23'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x24');break;case _0x6180('0x25'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x26');break;case _0x6180('0x27'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x28');break;case _0x6180('0x29'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x2a');break;case _0x6180('0x2b'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x2c');break;case _0x6180('0x2d'):_0x1aa6ef['childModel']='FaxAccount';break;case _0x6180('0x2e'):case _0x6180('0x2f'):case _0x6180('0x30'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x31');break;case _0x6180('0x32'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x33');break;case _0x6180('0x34'):_0x1aa6ef['childModel']='VoiceMail';break;case'voicerecordings':_0x1aa6ef['childModel']=_0x6180('0x35');_0x1aa6ef[_0x6180('0x19')]=[{'name':_0x6180('0x36'),'field':_0x6180('0xc'),'foreignKey':_0x6180('0x37'),'model':_0x6180('0x38'),'filter':{'field':_0x6180('0x39'),'value':['agent']}},{'name':_0x6180('0x3a'),'field':'name','foreignKey':_0x6180('0x37'),'model':'User','filter':{'field':_0x6180('0x39'),'value':['telephone']}},{'name':_0x6180('0x3b'),'field':'name','foreignKey':_0x6180('0x3c'),'model':_0x6180('0x3d'),'filter':{'field':_0x6180('0x11'),'value':['inbound']}},{'name':_0x6180('0x3e'),'field':'name','foreignKey':_0x6180('0x3c'),'model':_0x6180('0x3d'),'filter':{'field':'type','value':[_0x6180('0x3f')]}}];break;case _0x6180('0x40'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x41');break;case _0x6180('0x42'):_0x1aa6ef['childModel']=_0x6180('0x43');break;case _0x6180('0x44'):_0x1aa6ef[_0x6180('0x14')]='VoicePrefix';break;case _0x6180('0x45'):_0x1aa6ef['childModel']=_0x6180('0x46');break;case _0x6180('0x47'):_0x1aa6ef[_0x6180('0x14')]='MailQueue';break;case _0x6180('0x48'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x49');break;case _0x6180('0x4a'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x4b');break;case _0x6180('0x4c'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x4d');break;case _0x6180('0x4e'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x4f');break;case _0x6180('0x50'):_0x1aa6ef[_0x6180('0x14')]='SmsQueue';break;case'smsaccounts':_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x51');break;case _0x6180('0x52'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x53');break;case _0x6180('0x54'):_0x1aa6ef['childModel']=_0x6180('0x55');break;case'teams':_0x1aa6ef[_0x6180('0x14')]='Team';break;case _0x6180('0x56'):case'queuecampaigns':_0x1aa6ef['childModel']=_0x6180('0x3d');if(_0xd705a2){_0x1aa6ef[_0x6180('0x19')]=[{'name':'VoiceQueues'},{'name':_0x6180('0x3e')}];}break;case'users':case _0x6180('0x57'):case _0x6180('0x58'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x38');if(_0xd705a2){_0x1aa6ef['parentSections']=[{'name':'Users','filter':{'field':_0x6180('0x39'),'value':[_0x6180('0x59'),_0x6180('0x5a')]},'ignore':!![]},{'name':_0x6180('0x36')},{'name':'Telephones'}];}break;case _0x6180('0x5b'):_0x1aa6ef[_0x6180('0x14')]='ZendeskAccount';break;case _0x6180('0x5c'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x5d');break;case'freshdeskaccounts':_0x1aa6ef['childModel']=_0x6180('0x5e');break;case _0x6180('0x5f'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x60');break;case _0x6180('0x61'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x62');break;case _0x6180('0x63'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x64');break;case _0x6180('0x65'):_0x1aa6ef[_0x6180('0x14')]='User';break;case'cannedanswers':_0x1aa6ef[_0x6180('0x14')]='CannedAnswer';break;case _0x6180('0x66'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x67');break;case'customdashboards':_0x1aa6ef['childModel']='Dashboard';break;case _0x6180('0x68'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x69');break;case _0x6180('0x6a'):_0x1aa6ef[_0x6180('0x14')]='Pause';break;case _0x6180('0x6b'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x6c');break;case'sounds':_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x6d');break;case'tags':_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x6e');break;case _0x6180('0x6f'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x70');break;case _0x6180('0x71'):_0x1aa6ef[_0x6180('0x14')]='Trigger';break;case _0x6180('0x72'):_0x1aa6ef['childModel']=_0x6180('0x73');break;case'variables':_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x74');break;case _0x6180('0x75'):_0x1aa6ef[_0x6180('0x14')]='Plugin';break;case'extractedreports':_0x1aa6ef[_0x6180('0x14')]='AnalyticExtractedReport';_0x1aa6ef['parentSections']=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0x6180('0x76'):_0x1aa6ef[_0x6180('0x14')]=_0x6180('0x77');break;}return _0x1aa6ef;}function _0x109f9e(_0x230006,_0x5c32d0){var _0x323667=_0x230006[_0x6180('0x78')](0x0)[_0x6180('0x79')]()+_0x230006['slice'](0x1);var _0xd8483e={'type':_0x1eb4db[_0x6180('0x7a')][_0x6180('0x7b')][_0x6180('0x7c')],'raw':!![]};return new Promise(function(_0x2437f1,_0x39c543){var _0x2aa471=squel['select']()[_0x6180('0xe')](_0x6180('0x7d')+_0x323667+_0x6180('0x7e'),'id')[_0x6180('0xe')](_0x6180('0x7f'))['from']('user_has_'+_0x230006+_0x6180('0x80'),'ui')[_0x6180('0x81')](_0x6180('0x82'),_0x5c32d0['id']);return _0x1eb4db['sequelize'][_0x6180('0x83')](_0x2aa471['toString'](),_0xd8483e)[_0x6180('0x7')](function(_0x27e78c){_0x5c32d0[_0x323667+_0x6180('0x84')]=_0x27e78c;_0x2437f1(_0x27e78c);})[_0x6180('0x8')](function(_0x1226a8){_0x39c543(_0x1226a8);});});}return _0x2abfa0[_0x6180('0x85')](_0x6180('0x86'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xdf084b){var _0x4297df={'raw':_0xdf084b[_0x6180('0x83')][_0x6180('0x87')],'where':{}};var _0x22169d={};var _0x18216a={'count':0x0,'rows':[]};var _0x1efe35=_0xdf084b[_0x6180('0x83')]['section'];var _0x22fe05=_0xdf084b['query'][_0x6180('0x88')]||![];var _0x4e5c08=_0x5d31d3(_0x1efe35,_0x22fe05);if(!_0x4e5c08[_0x6180('0x14')])throw new Error(_0x6180('0x89')+_0x1efe35+'\x27');var _0x4315de=[{'name':_0x1efe35}];if(!_[_0x6180('0x8a')](_0x4e5c08[_0x6180('0x19')]))_0x4315de=_0x4e5c08[_0x6180('0x19')];var _0x5ed94f=[];for(var _0x129ac8=0x0;_0x129ac8<_0x4315de[_0x6180('0x8b')];_0x129ac8++){_0x5ed94f['push'](_0x1eb4db['UserProfileSection'][_0x6180('0x8c')]({'where':{'userProfileId':_0xdf084b[_0x6180('0x8d')]['id'],'name':_0x4315de[_0x129ac8]['name']},'raw':!![]}));}return Promise['all'](_0x5ed94f)[_0x6180('0x7')](function(_0x571930){var _0x4508f3=_[_0x6180('0x4')](_0x571930,function(_0x17bcae){return _0x17bcae?_0x17bcae:undefined;});var _0x5964c8=_[_0x6180('0x4')](_0x4315de,['ignore',!![]]);var _0x1ddec9=_[_0x6180('0x8a')](_0x4508f3)&&_[_0x6180('0x8a')](_0x5964c8)?null:_[_0x6180('0x8e')](_0x5964c8,_0x4508f3);if(!_0x1ddec9)return null;var _0x312da8=[];for(var _0x1b8fb9=0x0;_0x1b8fb9<_0x1ddec9['length'];_0x1b8fb9++){var _0x401da5=_[_0x6180('0x8c')](_0x4315de,function(_0x56ee90){return _0x1ddec9[_0x1b8fb9]?_0x56ee90[_0x6180('0xc')]===_0x1ddec9[_0x1b8fb9][_0x6180('0xc')]:null;});if(_0x401da5){if(_0x1ddec9[_0x1b8fb9][_0x6180('0x8f')]){_0x312da8[_0x6180('0x90')](_0x4380f9(_0x4e5c08[_0x6180('0x14')],_0x1ddec9[_0x1b8fb9]));}else{if(!_0x1ddec9[_0x1b8fb9]['autoAssociation']){_0x312da8[_0x6180('0x90')](_0x3182da(_0x401da5,_0x1ddec9[_0x1b8fb9],_0x4e5c08[_0x6180('0x14')]));}else{if(_0x401da5[_0x6180('0x9')]){_0x312da8[_0x6180('0x90')](_0x1855c1(_0x401da5,_0x1ddec9[_0x1b8fb9]));}}}}}return Promise[_0x6180('0x91')](_0x312da8);})[_0x6180('0x7')](function(_0x5e96a0){var _0x5c0eed=_0x5e96a0;var _0x363967=null;if(_0x5c0eed){_0x363967=_0x5c0eed[_0x6180('0x8b')]===0x1?_0x5c0eed[0x0]:null;}if(!_0x363967&&!_0x5c0eed)return _0x18216a;var _0x9009ab=_0x1eb4db[_0x4e5c08[_0x6180('0x14')]][_0x6180('0x92')];_0x22169d['model']=_[_0x6180('0x93')](_0x9009ab);_0x22169d[_0x6180('0x83')]=_[_0x6180('0x93')](_0xdf084b[_0x6180('0x83')]);_0x22169d[_0x6180('0x94')]=_[_0x6180('0x95')](_0x22169d[_0x6180('0x9')],_0x22169d[_0x6180('0x83')]);_0x4297df['attributes']=_[_0x6180('0x95')](_0x22169d[_0x6180('0x9')],qs['fields'](_0xdf084b[_0x6180('0x83')]['fields']));_0x4297df[_0x6180('0x96')]=_0x4297df[_0x6180('0x96')][_0x6180('0x8b')]?_0x4297df[_0x6180('0x96')]:_0x22169d[_0x6180('0x9')];if(!_0xdf084b[_0x6180('0x83')][_0x6180('0x97')](_0x6180('0x98'))){_0x4297df[_0x6180('0x99')]=qs['limit'](_0xdf084b[_0x6180('0x83')][_0x6180('0x99')]);_0x4297df[_0x6180('0x9a')]=qs['offset'](_0xdf084b[_0x6180('0x83')][_0x6180('0x9a')]);}_0x4297df[_0x6180('0x9b')]=qs[_0x6180('0x9c')](_0xdf084b[_0x6180('0x83')][_0x6180('0x9c')]);_0x4297df[_0x6180('0x81')]=qs['filters'](_[_0x6180('0x9d')](_0xdf084b[_0x6180('0x83')],_0x22169d['filters']));if(_0xdf084b[_0x6180('0x83')]['filter']){_0x4297df[_0x6180('0x81')]=_['merge'](_0x4297df[_0x6180('0x81')],{'$or':_[_0x6180('0xb')](_0x9009ab,function(_0xac4dc4){if(_0xac4dc4[_0x6180('0x11')][_0x6180('0x9e')]!==_0x6180('0x9f')){var _0x48135c={};_0x48135c[_0xac4dc4[_0x6180('0xe')]]={'$like':'%'+_0xdf084b[_0x6180('0x83')][_0x6180('0x4')]+'%'};return _0x48135c;}})});}var _0x309ea8=[];var _0x390a71=null;var _0x443245={};if(_0x363967){_0x390a71=_['find'](_0x4315de,[_0x6180('0xc'),_0x363967['name']]);if(_0x390a71['field']){_0x443245={};if(_0x4e5c08['childModel']===_0x6180('0xf')){_0x443245[_0x390a71['foreignKey']]=_[_0x6180('0xb')](_0x363967[_0x6180('0xa')],'id');}else{_0x443245[_0x390a71[_0x6180('0xa0')]]=_0x363967['associatedResources'];}_0x309ea8['push'](_0x443245);}else{_0x4297df[_0x6180('0x81')]['id']=_0x363967[_0x6180('0xa')];}}else{for(var _0x17edf0=0x0;_0x17edf0<_0x5c0eed[_0x6180('0x8b')];_0x17edf0++){_0x390a71=_[_0x6180('0x8c')](_0x4315de,[_0x6180('0xc'),_0x5c0eed[_0x17edf0][_0x6180('0xc')]]);if(_0x390a71[_0x6180('0xe')]){_0x443245={};_0x443245[_0x390a71['foreignKey']]=_0x5c0eed[_0x17edf0][_0x6180('0xa')];_0x309ea8[_0x6180('0x90')](_0x443245);}else{if(!_0x4297df[_0x6180('0x81')]['id'])_0x4297df[_0x6180('0x81')]['id']=[];_0x5c0eed[_0x17edf0][_0x6180('0xa')][_0x6180('0xa1')](function(_0x348d0e){_0x4297df['where']['id'][_0x6180('0x90')](_0x348d0e);});}}}if(!_[_0x6180('0x8a')](_0x309ea8)){_0x4297df[_0x6180('0x81')]=_[_0x6180('0xa2')](_0x4297df[_0x6180('0x81')],{'$and':{'$or':_0x309ea8}});}_0x4297df=_[_0x6180('0xa2')]({},_0x4297df,_0xdf084b[_0x6180('0xa3')]);if(_0x363967&&!_0x363967[_0x6180('0xa4')]&&_0x4e5c08['childModel']==='AnalyticExtractedReport'){if(_0xdf084b[_0x6180('0x83')][_0x6180('0xa5')]){_0x4297df[_0x6180('0xa6')]=[{'all':!![]}];}return _0x1eb4db[_0x4e5c08[_0x6180('0x14')]]['findAll'](_0x4297df)['then'](function(_0x5f40d2){var _0x43701d=[];_0x5f40d2[_0x6180('0xa1')](function(_0x11a374){var _0x4364a2;switch(_0x11a374['reportType']){case _0x6180('0xa7'):_0x4364a2=_[_0x6180('0x8c')](_0x363967[_0x6180('0xa')],function(_0x27a610){return _0x27a610['id']===_0x11a374[_0x6180('0xa8')]&&_0x27a610[_0x6180('0x11')]===_0x6180('0xa9');});break;case _0x6180('0xaa'):_0x4364a2=_[_0x6180('0x8c')](_0x363967[_0x6180('0xa')],function(_0x3cf862){return _0x3cf862['id']===_0x11a374[_0x6180('0xa8')]&&_0x3cf862[_0x6180('0x11')]===_0x6180('0xab');});break;}if(_0x4364a2)_0x43701d[_0x6180('0x90')](_0x11a374);});_0x18216a['count']=_0x43701d[_0x6180('0x8b')];_0x18216a[_0x6180('0xac')]=_0x43701d;return _0x18216a;});}else{if(!_[_0x6180('0x8a')](_0xdf084b[_0x6180('0x83')][_0x6180('0xad')])){_0x4297df[_0x6180('0x81')]['id']=_0x4297df[_0x6180('0x81')]['id']?_['intersection'](_0x4297df[_0x6180('0x81')]['id'],_0xdf084b['query'][_0x6180('0xad')]):_0xdf084b['query']['ids'];if(_0xdf084b[_0x6180('0x83')]['customSorting']){_0x4297df[_0x6180('0x9b')]=_0xdf084b['query'][_0x6180('0xae')];}}if(_0xdf084b['query'][_0x6180('0xaf')]){_0x4297df['where']=_[_0x6180('0xa2')](_0x4297df[_0x6180('0x81')],{'$and':_0xdf084b['query'][_0x6180('0xaf')]});}return _0x1eb4db[_0x4e5c08[_0x6180('0x14')]]['count']({'where':_0x4297df[_0x6180('0x81')]})[_0x6180('0x7')](function(_0xf8e4f9){_0x18216a[_0x6180('0xb0')]=_0xf8e4f9;if(_0xdf084b[_0x6180('0x83')][_0x6180('0xa5')]){if(_0x4e5c08[_0x6180('0x14')]===_0x6180('0x1e')){_0x4297df[_0x6180('0xa6')]=[{'model':_0x1eb4db[_0x6180('0x6e')],'as':_0x6180('0xb1'),'attributes':['id',_0x6180('0xc'),_0x6180('0xb2')],'required':_0xdf084b[_0x6180('0x83')][_0x6180('0xb3')]?!![]:![]},{'model':_0x1eb4db[_0x6180('0x6e')],'as':_0x6180('0xb4'),'attributes':['id','name',_0x6180('0xb2')],'through':_0xdf084b[_0x6180('0x83')][_0x6180('0xb3')]?{'attributes':[],'where':{'TagId':_0xdf084b[_0x6180('0x83')][_0x6180('0xb3')]||undefined}}:{},'required':_0xdf084b[_0x6180('0x83')][_0x6180('0xb3')]?!![]:![]}];}else{_0x4297df[_0x6180('0xa6')]=[{'all':!![]}];}}return _0x1eb4db[_0x4e5c08[_0x6180('0x14')]][_0x6180('0x6')](_0x4297df);})[_0x6180('0x7')](function(_0x22e9f8){_0x18216a['rows']=_0x22e9f8;if(_0x1efe35===_0x6180('0x36')&&_0xdf084b[_0x6180('0x83')][_0x6180('0xb5')]===_0x6180('0xb6')){var _0x5cace3=[];for(var _0x18c8a7=0x0;_0x18c8a7<_0x18216a[_0x6180('0xac')][_0x6180('0x8b')];_0x18c8a7++){_0x5cace3[_0x6180('0x90')](_0x109f9e(_0x6180('0xb7'),_0x18216a['rows'][_0x18c8a7][_0x6180('0xb8')]));_0x5cace3[_0x6180('0x90')](_0x109f9e(_0x6180('0xb9'),_0x18216a[_0x6180('0xac')][_0x18c8a7]['dataValues']));_0x5cace3[_0x6180('0x90')](_0x109f9e(_0x6180('0xba'),_0x18216a[_0x6180('0xac')][_0x18c8a7][_0x6180('0xb8')]));_0x5cace3[_0x6180('0x90')](_0x109f9e('mail',_0x18216a['rows'][_0x18c8a7][_0x6180('0xb8')]));_0x5cace3[_0x6180('0x90')](_0x109f9e('openchannel',_0x18216a[_0x6180('0xac')][_0x18c8a7][_0x6180('0xb8')]));_0x5cace3[_0x6180('0x90')](_0x109f9e(_0x6180('0xbb'),_0x18216a[_0x6180('0xac')][_0x18c8a7][_0x6180('0xb8')]));}return Promise[_0x6180('0x91')](_0x5cace3)[_0x6180('0x7')](function(){return _0x18216a;});}return _0x18216a;});}});}}});};
\ No newline at end of file
index 2b8f8f5..fb7b447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b2=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./userProfile.socket','register','request','then','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','code','error','UserProfile,\x20%s,\x20%s'];(function(_0xa04a2,_0x2198df){var _0x178957=function(_0x22a3ce){while(--_0x22a3ce){_0xa04a2['push'](_0xa04a2['shift']());}};_0x178957(++_0x2198df);}(_0x38b2,0xf6));var _0x238b=function(_0x6e5da6,_0x48594e){_0x6e5da6=_0x6e5da6-0x0;var _0x4f13e3=_0x38b2[_0x6e5da6];return _0x4f13e3;};'use strict';var _=require(_0x238b('0x0'));var util=require(_0x238b('0x1'));var moment=require(_0x238b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x238b('0x3'));var db=require(_0x238b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x238b('0x5'))('rpc');var config=require(_0x238b('0x6'));var jayson=require(_0x238b('0x7'));var client=jayson[_0x238b('0x8')][_0x238b('0x9')]({'port':0x232a});config['redis']=_[_0x238b('0xa')](config[_0x238b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x238b('0xc'))(new Redis(config[_0x238b('0xb')]));require(_0x238b('0xd'))[_0x238b('0xe')](socket);function respondWithRpcPromise(_0x19afcf,_0x17f674,_0x1b7bf4){return new BPromise(function(_0x4df7d6,_0x137ad2){return client[_0x238b('0xf')](_0x19afcf,_0x1b7bf4)[_0x238b('0x10')](function(_0x40762f){logger[_0x238b('0x11')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x238b('0x12'));logger[_0x238b('0x13')](_0x238b('0x14'),_0x17f674,_0x238b('0x12'),JSON['stringify'](_0x40762f));if(_0x40762f['error']){if(_0x40762f['error'][_0x238b('0x15')]===0x1f4){logger[_0x238b('0x16')](_0x238b('0x17'),_0x17f674,_0x40762f[_0x238b('0x16')][_0x238b('0x18')]);return _0x137ad2(_0x40762f[_0x238b('0x16')][_0x238b('0x18')]);}logger[_0x238b('0x16')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x40762f[_0x238b('0x16')]['message']);return _0x4df7d6(_0x40762f[_0x238b('0x16')]['message']);}else{logger[_0x238b('0x11')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x238b('0x12'));_0x4df7d6(_0x40762f[_0x238b('0x19')][_0x238b('0x18')]);}})[_0x238b('0x1a')](function(_0x30d14){logger[_0x238b('0x16')]('UserProfile,\x20%s,\x20%s',_0x17f674,_0x30d14);_0x137ad2(_0x30d14);});});}
\ No newline at end of file
+var _0x3e24=['info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register'];(function(_0x2f9f41,_0x5dd376){var _0x44c687=function(_0x3fd28d){while(--_0x3fd28d){_0x2f9f41['push'](_0x2f9f41['shift']());}};_0x44c687(++_0x5dd376);}(_0x3e24,0x167));var _0x43e2=function(_0x268a56,_0x3f1b88){_0x268a56=_0x268a56-0x0;var _0x54a565=_0x3e24[_0x268a56];return _0x54a565;};'use strict';var _=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var moment=require(_0x43e2('0x2'));var BPromise=require(_0x43e2('0x3'));var rs=require(_0x43e2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x43e2('0x5'))['db'];var utils=require(_0x43e2('0x6'));var logger=require('../../config/logger')(_0x43e2('0x7'));var config=require(_0x43e2('0x8'));var jayson=require(_0x43e2('0x9'));var client=jayson[_0x43e2('0xa')][_0x43e2('0xb')]({'port':0x232a});config[_0x43e2('0xc')]=_[_0x43e2('0xd')](config['redis'],{'host':_0x43e2('0xe'),'port':0x18eb});var socket=require(_0x43e2('0xf'))(new Redis(config['redis']));require(_0x43e2('0x10'))[_0x43e2('0x11')](socket);function respondWithRpcPromise(_0x5375d8,_0x2ed387,_0x1ef968){return new BPromise(function(_0x52146c,_0x45848e){return client['request'](_0x5375d8,_0x1ef968)['then'](function(_0x5847f0){logger[_0x43e2('0x12')](_0x43e2('0x13'),_0x2ed387,_0x43e2('0x14'));logger[_0x43e2('0x15')](_0x43e2('0x16'),_0x2ed387,_0x43e2('0x14'),JSON[_0x43e2('0x17')](_0x5847f0));if(_0x5847f0[_0x43e2('0x18')]){if(_0x5847f0[_0x43e2('0x18')][_0x43e2('0x19')]===0x1f4){logger[_0x43e2('0x18')](_0x43e2('0x13'),_0x2ed387,_0x5847f0['error'][_0x43e2('0x1a')]);return _0x45848e(_0x5847f0[_0x43e2('0x18')][_0x43e2('0x1a')]);}logger[_0x43e2('0x18')]('UserProfile,\x20%s,\x20%s',_0x2ed387,_0x5847f0['error'][_0x43e2('0x1a')]);return _0x52146c(_0x5847f0[_0x43e2('0x18')][_0x43e2('0x1a')]);}else{logger[_0x43e2('0x12')](_0x43e2('0x13'),_0x2ed387,_0x43e2('0x14'));_0x52146c(_0x5847f0[_0x43e2('0x1b')][_0x43e2('0x1a')]);}})[_0x43e2('0x1c')](function(_0x399cab){logger['error'](_0x43e2('0x13'),_0x2ed387,_0x399cab);_0x45848e(_0x399cab);});});}
\ No newline at end of file
index d7064eb..9c5270b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ad=['register','./userProfile.events','save','removeListener'];(function(_0x464bd7,_0x181bae){var _0xc4aa53=function(_0x457660){while(--_0x457660){_0x464bd7['push'](_0x464bd7['shift']());}};_0xc4aa53(++_0x181bae);}(_0x04ad,0x165));var _0xd04a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x04ad[_0x20a584];return _0x4b41a8;};'use strict';var UserProfileEvents=require(_0xd04a('0x0'));var events=[_0xd04a('0x1'),'remove','update'];function createListener(_0x28dd41,_0x4de170){return function(_0x5dd3c9){_0x4de170['emit'](_0x28dd41,_0x5dd3c9);};}function removeListener(_0x115626,_0x31a806){return function(){UserProfileEvents[_0xd04a('0x2')](_0x115626,_0x31a806);};}exports[_0xd04a('0x3')]=function(_0x43f5fb){for(var _0x30fdf5=0x0,_0x3d841b=events['length'];_0x30fdf5<_0x3d841b;_0x30fdf5++){var _0x8d08b1=events[_0x30fdf5];var _0x11e840=createListener('userProfile:'+_0x8d08b1,_0x43f5fb);UserProfileEvents['on'](_0x8d08b1,_0x11e840);}};
\ No newline at end of file
+var _0x3c12=['removeListener','length','userProfile:','save','update'];(function(_0xc0bde9,_0x355373){var _0x3483f9=function(_0x5820a2){while(--_0x5820a2){_0xc0bde9['push'](_0xc0bde9['shift']());}};_0x3483f9(++_0x355373);}(_0x3c12,0xf3));var _0x23c1=function(_0x4ea6af,_0x4aa32e){_0x4ea6af=_0x4ea6af-0x0;var _0x4cb1e6=_0x3c12[_0x4ea6af];return _0x4cb1e6;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x23c1('0x0'),'remove',_0x23c1('0x1')];function createListener(_0x5bbda3,_0x3a5760){return function(_0x43963e){_0x3a5760['emit'](_0x5bbda3,_0x43963e);};}function removeListener(_0x1bc00b,_0xeae41d){return function(){UserProfileEvents[_0x23c1('0x2')](_0x1bc00b,_0xeae41d);};}exports['register']=function(_0x2babab){for(var _0x1ff9d7=0x0,_0x2fe5a2=events[_0x23c1('0x3')];_0x1ff9d7<_0x2fe5a2;_0x1ff9d7++){var _0x13f060=events[_0x1ff9d7];var _0x142884=createListener(_0x23c1('0x4')+_0x13f060,_0x2babab);UserProfileEvents['on'](_0x13f060,_0x142884);}};
\ No newline at end of file
index 3f9d3b7..a41d341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f5=['/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x146837,_0x2aa6a2){var _0x3d7e60=function(_0x1301ac){while(--_0x1301ac){_0x146837['push'](_0x146837['shift']());}};_0x3d7e60(++_0x2aa6a2);}(_0xe1f5,0x13b));var _0x5e1f=function(_0x422c1a,_0x48bdff){_0x422c1a=_0x422c1a-0x0;var _0x498cf1=_0xe1f5[_0x422c1a];return _0x498cf1;};'use strict';var multer=require(_0x5e1f('0x0'));var util=require(_0x5e1f('0x1'));var path=require('path');var timeout=require(_0x5e1f('0x2'));var express=require(_0x5e1f('0x3'));var router=express[_0x5e1f('0x4')]();var fs_extra=require(_0x5e1f('0x5'));var auth=require(_0x5e1f('0x6'));var interaction=require(_0x5e1f('0x7'));var config=require(_0x5e1f('0x8'));var controller=require(_0x5e1f('0x9'));router[_0x5e1f('0xa')]('/',auth[_0x5e1f('0xb')](),controller[_0x5e1f('0xc')]);router[_0x5e1f('0xa')](_0x5e1f('0xd'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0xe')]);router[_0x5e1f('0xa')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller['show']);router[_0x5e1f('0x10')]('/',auth['isAuthenticated'](),controller[_0x5e1f('0x11')]);router[_0x5e1f('0x12')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0x13')]);router[_0x5e1f('0x14')](_0x5e1f('0xf'),auth[_0x5e1f('0xb')](),controller[_0x5e1f('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x1b1a=['/:id','show','create','put','update','delete','destroy','exports','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x547ff4,_0x416fa1){var _0xe41057=function(_0x1afe63){while(--_0x1afe63){_0x547ff4['push'](_0x547ff4['shift']());}};_0xe41057(++_0x416fa1);}(_0x1b1a,0x15c));var _0xa1b1=function(_0x4bf96c,_0x4d24fd){_0x4bf96c=_0x4bf96c-0x0;var _0x281d09=_0x1b1a[_0x4bf96c];return _0x281d09;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa1b1('0x0'));var express=require(_0xa1b1('0x1'));var router=express['Router']();var fs_extra=require(_0xa1b1('0x2'));var auth=require(_0xa1b1('0x3'));var interaction=require(_0xa1b1('0x4'));var config=require(_0xa1b1('0x5'));var controller=require(_0xa1b1('0x6'));router[_0xa1b1('0x7')]('/',auth[_0xa1b1('0x8')](),controller[_0xa1b1('0x9')]);router[_0xa1b1('0x7')](_0xa1b1('0xa'),auth['isAuthenticated'](),controller[_0xa1b1('0xb')]);router[_0xa1b1('0x7')](_0xa1b1('0xc'),auth['isAuthenticated'](),controller[_0xa1b1('0xd')]);router['post']('/',auth[_0xa1b1('0x8')](),controller[_0xa1b1('0xe')]);router[_0xa1b1('0xf')]('/:id',auth[_0xa1b1('0x8')](),controller[_0xa1b1('0x10')]);router[_0xa1b1('0x11')]('/:id',auth[_0xa1b1('0x8')](),controller[_0xa1b1('0x12')]);module[_0xa1b1('0x13')]=router;
\ No newline at end of file
index 45eb608..2d1006f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60de=['sequelize','exports','STRING','INTEGER'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x60de,0xe0));var _0xe60d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x60de[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xe60d('0x0'));module[_0xe60d('0x1')]={'name':{'type':Sequelize[_0xe60d('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xe60d('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xe60d('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xe27c=['INTEGER','sequelize','exports','STRING'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xe27c,0xf9));var _0xce27=function(_0x3f7d09,_0x32897a){_0x3f7d09=_0x3f7d09-0x0;var _0x184dd8=_0xe27c[_0x3f7d09];return _0x184dd8;};'use strict';var Sequelize=require(_0xce27('0x0'));module[_0xce27('0x1')]={'name':{'type':Sequelize[_0xce27('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xce27('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xce27('0x2')],'allowNull':![]}};
\ No newline at end of file
index 156eb28..6255b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['end','json','offset','limit','count','set','apply','reject','save','update','destroy','name','send','index','map','rawAttributes','key','model','keys','filters','intersection','attributes','fields','query','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','UserProfileResource','then','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x3d23b7,_0xbc09f5){var _0x12892f=function(_0x189550){while(--_0x189550){_0x3d23b7['push'](_0x3d23b7['shift']());}};_0x12892f(++_0xbc09f5);}(_0x524e,0x15e));var _0xe524=function(_0x21aeb7,_0xf1bc66){_0x21aeb7=_0x21aeb7-0x0;var _0x5572aa=_0x524e[_0x21aeb7];return _0x5572aa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];function respondWithStatusCode(_0x5077c1,_0x4b0f51){_0x4b0f51=_0x4b0f51||0xcc;return function(_0xfdc2a5){if(_0xfdc2a5){return _0x5077c1[_0xe524('0x1c')](_0x4b0f51);}return _0x5077c1[_0xe524('0x1d')](_0x4b0f51)[_0xe524('0x1e')]();};}function respondWithResult(_0x20a852,_0x57c1b6){_0x57c1b6=_0x57c1b6||0xc8;return function(_0x12ff75){if(_0x12ff75){return _0x20a852['status'](_0x57c1b6)[_0xe524('0x1f')](_0x12ff75);}};}function respondWithFilteredResult(_0x1b0af6,_0x48165e){return function(_0x569660){if(_0x569660){var _0x488fce=typeof _0x48165e[_0xe524('0x20')]==='undefined'&&typeof _0x48165e[_0xe524('0x21')]==='undefined';var _0x5c8736=_0x569660['count'];var _0x3a4027=_0x488fce?0x0:_0x48165e['offset'];var _0x11b2a1=_0x488fce?_0x569660[_0xe524('0x22')]:_0x48165e[_0xe524('0x20')]+_0x48165e[_0xe524('0x21')];var _0x5d7b17;if(_0x11b2a1>=_0x5c8736){_0x11b2a1=_0x5c8736;_0x5d7b17=0xc8;}else{_0x5d7b17=0xce;}_0x1b0af6[_0xe524('0x1d')](_0x5d7b17);return _0x1b0af6[_0xe524('0x23')]('Content-Range',_0x3a4027+'-'+_0x11b2a1+'/'+_0x5c8736)[_0xe524('0x1f')](_0x569660);}return null;};}function patchUpdates(_0x309f85){return function(_0x43a4f9){try{jsonpatch[_0xe524('0x24')](_0x43a4f9,_0x309f85,!![]);}catch(_0x1c4194){return BPromise[_0xe524('0x25')](_0x1c4194);}return _0x43a4f9[_0xe524('0x26')]();};}function saveUpdates(_0x375219,_0x7dfe97){return function(_0x5c4d21){if(_0x5c4d21){return _0x5c4d21[_0xe524('0x27')](_0x375219)['then'](function(_0x577d1f){return _0x577d1f;});}return null;};}function removeEntity(_0x2d2f83,_0x23df5e){return function(_0x1ad106){if(_0x1ad106){return _0x1ad106[_0xe524('0x28')]()['then'](function(){_0x2d2f83[_0xe524('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e245,_0xcf5db){return function(_0xd62772){if(!_0xd62772){_0x17e245[_0xe524('0x1c')](0x194);}return _0xd62772;};}function handleError(_0x4102d9,_0xfd5965){_0xfd5965=_0xfd5965||0x1f4;return function(_0x2141db){logger['error'](_0x2141db['stack']);if(_0x2141db[_0xe524('0x29')]){delete _0x2141db[_0xe524('0x29')];}_0x4102d9[_0xe524('0x1d')](_0xfd5965)[_0xe524('0x2a')](_0x2141db);};}exports[_0xe524('0x2b')]=function(_0x5405e4,_0x52f140){var _0x4b1ff={},_0x25e7a7={},_0x3aedd9={'count':0x0,'rows':[]};var _0x8070e4=_[_0xe524('0x2c')](db['UserProfileResource'][_0xe524('0x2d')],function(_0x9a7e98){return{'name':_0x9a7e98['fieldName'],'type':_0x9a7e98['type'][_0xe524('0x2e')]};});_0x25e7a7[_0xe524('0x2f')]=_['map'](_0x8070e4,_0xe524('0x29'));_0x25e7a7['query']=_[_0xe524('0x30')](_0x5405e4['query']);_0x25e7a7[_0xe524('0x31')]=_[_0xe524('0x32')](_0x25e7a7[_0xe524('0x2f')],_0x25e7a7['query']);_0x4b1ff[_0xe524('0x33')]=_['intersection'](_0x25e7a7[_0xe524('0x2f')],qs[_0xe524('0x34')](_0x5405e4[_0xe524('0x35')]['fields']));_0x4b1ff[_0xe524('0x33')]=_0x4b1ff[_0xe524('0x33')]['length']?_0x4b1ff[_0xe524('0x33')]:_0x25e7a7[_0xe524('0x2f')];if(!_0x5405e4[_0xe524('0x35')][_0xe524('0x36')]('nolimit')){_0x4b1ff[_0xe524('0x21')]=qs[_0xe524('0x21')](_0x5405e4[_0xe524('0x35')][_0xe524('0x21')]);_0x4b1ff[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x5405e4[_0xe524('0x35')][_0xe524('0x20')]);}_0x4b1ff['order']=qs[_0xe524('0x37')](_0x5405e4['query'][_0xe524('0x37')]);_0x4b1ff[_0xe524('0x38')]=qs['filters'](_[_0xe524('0x39')](_0x5405e4['query'],_0x25e7a7[_0xe524('0x31')]),_0x8070e4);if(_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]){_0x4b1ff[_0xe524('0x38')]=_[_0xe524('0x3b')](_0x4b1ff[_0xe524('0x38')],{'$or':_[_0xe524('0x2c')](_0x8070e4,function(_0x13762c){if(_0x13762c['type']!==_0xe524('0x3c')){var _0x940c05={};_0x940c05[_0x13762c[_0xe524('0x29')]]={'$like':'%'+_0x5405e4[_0xe524('0x35')][_0xe524('0x3a')]+'%'};return _0x940c05;}})});}_0x4b1ff=_[_0xe524('0x3b')]({},_0x4b1ff,_0x5405e4[_0xe524('0x3d')]);var _0x158d45={'where':_0x4b1ff['where']};return db[_0xe524('0x3e')][_0xe524('0x22')](_0x158d45)[_0xe524('0x3f')](function(_0x59781b){_0x3aedd9[_0xe524('0x22')]=_0x59781b;if(_0x5405e4['query'][_0xe524('0x40')]){_0x4b1ff[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0x3e')][_0xe524('0x42')](_0x4b1ff);})[_0xe524('0x3f')](function(_0x4746cd){_0x3aedd9[_0xe524('0x43')]=_0x4746cd;return _0x3aedd9;})['then'](respondWithFilteredResult(_0x52f140,_0x4b1ff))[_0xe524('0x44')](handleError(_0x52f140,null));};exports[_0xe524('0x45')]=function(_0x13c54c,_0x376505){var _0x438962={'raw':![],'where':{'id':_0x13c54c['params']['id']}},_0x1ae283={};_0x1ae283[_0xe524('0x2f')]=_[_0xe524('0x30')](db[_0xe524('0x3e')]['rawAttributes']);_0x1ae283[_0xe524('0x35')]=_['keys'](_0x13c54c['query']);_0x1ae283[_0xe524('0x31')]=_[_0xe524('0x32')](_0x1ae283['model'],_0x1ae283[_0xe524('0x35')]);_0x438962[_0xe524('0x33')]=_[_0xe524('0x32')](_0x1ae283[_0xe524('0x2f')],qs['fields'](_0x13c54c['query'][_0xe524('0x34')]));_0x438962[_0xe524('0x33')]=_0x438962['attributes'][_0xe524('0x46')]?_0x438962['attributes']:_0x1ae283[_0xe524('0x2f')];if(_0x13c54c[_0xe524('0x35')][_0xe524('0x40')]){_0x438962[_0xe524('0x41')]=[{'all':!![]}];}_0x438962=_[_0xe524('0x3b')]({},_0x438962,_0x13c54c[_0xe524('0x3d')]);return db[_0xe524('0x3e')][_0xe524('0x47')](_0x438962)[_0xe524('0x3f')](handleEntityNotFound(_0x376505,null))[_0xe524('0x3f')](respondWithResult(_0x376505,null))[_0xe524('0x44')](handleError(_0x376505,null));};exports[_0xe524('0x48')]=function(_0x3d7ab7,_0x33b1c8){return db[_0xe524('0x3e')]['create'](_0x3d7ab7[_0xe524('0x49')],{})['then'](respondWithResult(_0x33b1c8,0xc9))['catch'](handleError(_0x33b1c8,null));};exports[_0xe524('0x27')]=function(_0x59fe6b,_0x232cf0){if(_0x59fe6b[_0xe524('0x49')]['id']){delete _0x59fe6b['body']['id'];}return db[_0xe524('0x3e')]['find']({'where':{'id':_0x59fe6b['params']['id']}})[_0xe524('0x3f')](handleEntityNotFound(_0x232cf0,null))[_0xe524('0x3f')](saveUpdates(_0x59fe6b[_0xe524('0x49')],null))['then'](respondWithResult(_0x232cf0,null))['catch'](handleError(_0x232cf0,null));};exports['destroy']=function(_0x4e9c3b,_0x4f7a64){return db['UserProfileResource'][_0xe524('0x47')]({'where':{'id':_0x4e9c3b[_0xe524('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4f7a64,null))[_0xe524('0x3f')](removeEntity(_0x4f7a64,null))[_0xe524('0x44')](handleError(_0x4f7a64,null));};exports[_0xe524('0x4b')]=function(_0x208aa8,_0x2fa143){return db['UserProfileResource'][_0xe524('0x4b')]()[_0xe524('0x3f')](respondWithResult(_0x2fa143,null))[_0xe524('0x44')](handleError(_0x2fa143,null));};
\ No newline at end of file
+var _0xe3da=['../../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','UserProfileResource','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','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x18ec75,_0x2d1c91){var _0x4b7879=function(_0x4af792){while(--_0x4af792){_0x18ec75['push'](_0x18ec75['shift']());}};_0x4b7879(++_0x2d1c91);}(_0xe3da,0x1cd));var _0xae3d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe3da[_0x321bb2];return _0x9c12ed;};'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')]['create'](_0x38f92d['body'],{})['then'](respondWithResult(_0x4ed0f9,0xc9))[_0xae3d('0x48')](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0x39f213,_0x6fa6c){if(_0x39f213['body']['id']){delete _0x39f213['body']['id'];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x39f213[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x6fa6c,null))['then'](saveUpdates(_0x39f213[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x6fa6c,null))[_0xae3d('0x48')](handleError(_0x6fa6c,null));};exports[_0xae3d('0x29')]=function(_0x2a6a24,_0x38ccf1){return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x2a6a24[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x38ccf1,null))[_0xae3d('0x28')](removeEntity(_0x38ccf1,null))[_0xae3d('0x48')](handleError(_0x38ccf1,null));};exports['describe']=function(_0x4f4694,_0x4c6dab){return db[_0xae3d('0x2f')][_0xae3d('0x50')]()['then'](respondWithResult(_0x4c6dab,null))[_0xae3d('0x48')](handleError(_0x4c6dab,null));};
\ No newline at end of file
index b549340..008acb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e79=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','lodash','util','../../config/logger','api'];(function(_0x1cab41,_0x4bfa57){var _0x511deb=function(_0x3d1a43){while(--_0x3d1a43){_0x1cab41['push'](_0x1cab41['shift']());}};_0x511deb(++_0x4bfa57);}(_0x7e79,0xdc));var _0x97e7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x7e79[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x97e7('0x0'));var util=require(_0x97e7('0x1'));var logger=require(_0x97e7('0x2'))(_0x97e7('0x3'));var moment=require(_0x97e7('0x4'));var BPromise=require(_0x97e7('0x5'));var rp=require(_0x97e7('0x6'));var fs=require('fs');var path=require(_0x97e7('0x7'));var rimraf=require(_0x97e7('0x8'));var config=require(_0x97e7('0x9'));var attributes=require(_0x97e7('0xa'));module[_0x97e7('0xb')]=function(_0x598a89,_0xfbcfdc){return _0x598a89['define'](_0x97e7('0xc'),attributes,{'tableName':_0x97e7('0xd'),'paranoid':![],'indexes':[{'name':_0x97e7('0xe'),'fields':[_0x97e7('0xf'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd61b=['path','../../config/environment','./userProfileResource.attributes','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0xd61b,0x135));var _0xbd61=function(_0x4bde34,_0xaa7b76){_0x4bde34=_0x4bde34-0x0;var _0x57ef23=_0xd61b[_0x4bde34];return _0x57ef23;};'use strict';var _=require(_0xbd61('0x0'));var util=require('util');var logger=require(_0xbd61('0x1'))(_0xbd61('0x2'));var moment=require(_0xbd61('0x3'));var BPromise=require(_0xbd61('0x4'));var rp=require(_0xbd61('0x5'));var fs=require('fs');var path=require(_0xbd61('0x6'));var rimraf=require('rimraf');var config=require(_0xbd61('0x7'));var attributes=require(_0xbd61('0x8'));module['exports']=function(_0x344f00,_0x49a248){return _0x344f00[_0xbd61('0x9')](_0xbd61('0xa'),attributes,{'tableName':_0xbd61('0xb'),'paranoid':![],'indexes':[{'name':_0xbd61('0xc'),'fields':[_0xbd61('0xd'),_0xbd61('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 152c38d..d3050f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02a=['info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x142423,_0x327d2a){var _0x4431ca=function(_0x356824){while(--_0x356824){_0x142423['push'](_0x142423['shift']());}};_0x4431ca(++_0x327d2a);}(_0xf02a,0xba));var _0xaf02=function(_0x176317,_0x4897b3){_0x176317=_0x176317-0x0;var _0xef2759=_0xf02a[_0x176317];return _0xef2759;};'use strict';var _=require('lodash');var util=require(_0xaf02('0x0'));var moment=require(_0xaf02('0x1'));var BPromise=require(_0xaf02('0x2'));var rs=require(_0xaf02('0x3'));var fs=require('fs');var Redis=require(_0xaf02('0x4'));var db=require(_0xaf02('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf02('0x6'))(_0xaf02('0x7'));var config=require(_0xaf02('0x8'));var jayson=require(_0xaf02('0x9'));var client=jayson[_0xaf02('0xa')][_0xaf02('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ab60a,_0x519c9c,_0x1d2f9b){return new BPromise(function(_0xf3b44a,_0x243ea3){return client[_0xaf02('0xc')](_0x1ab60a,_0x1d2f9b)[_0xaf02('0xd')](function(_0x33b3c5){logger['info'](_0xaf02('0xe'),_0x519c9c,_0xaf02('0xf'));logger[_0xaf02('0x10')](_0xaf02('0x11'),_0x519c9c,_0xaf02('0xf'),JSON['stringify'](_0x33b3c5));if(_0x33b3c5[_0xaf02('0x12')]){if(_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x13')]===0x1f4){logger[_0xaf02('0x12')](_0xaf02('0xe'),_0x519c9c,_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x14')]);return _0x243ea3(_0x33b3c5[_0xaf02('0x12')]['message']);}logger[_0xaf02('0x12')](_0xaf02('0xe'),_0x519c9c,_0x33b3c5['error'][_0xaf02('0x14')]);return _0xf3b44a(_0x33b3c5[_0xaf02('0x12')][_0xaf02('0x14')]);}else{logger[_0xaf02('0x15')](_0xaf02('0xe'),_0x519c9c,_0xaf02('0xf'));_0xf3b44a(_0x33b3c5['result'][_0xaf02('0x14')]);}})[_0xaf02('0x16')](function(_0x3e5e1a){logger['error'](_0xaf02('0xe'),_0x519c9c,_0x3e5e1a);_0x243ea3(_0x3e5e1a);});});}
\ No newline at end of file
+var _0x09ff=['code','UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4147b1,_0x34bf45){var _0x5b1d00=function(_0x287950){while(--_0x287950){_0x4147b1['push'](_0x4147b1['shift']());}};_0x5b1d00(++_0x34bf45);}(_0x09ff,0x165));var _0xf09f=function(_0x2b8eef,_0x4a62bb){_0x2b8eef=_0x2b8eef-0x0;var _0x59c7d2=_0x09ff[_0x2b8eef];return _0x59c7d2;};'use strict';var _=require(_0xf09f('0x0'));var util=require(_0xf09f('0x1'));var moment=require(_0xf09f('0x2'));var BPromise=require(_0xf09f('0x3'));var rs=require(_0xf09f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf09f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf09f('0x6'))('rpc');var config=require(_0xf09f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf09f('0x8')][_0xf09f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd242c4,_0x12ca12,_0x5e530d){return new BPromise(function(_0x3f186a,_0x32d606){return client[_0xf09f('0xa')](_0xd242c4,_0x5e530d)['then'](function(_0x256d9d){logger[_0xf09f('0xb')]('UserProfileResource,\x20%s,\x20%s',_0x12ca12,_0xf09f('0xc'));logger[_0xf09f('0xd')](_0xf09f('0xe'),_0x12ca12,_0xf09f('0xc'),JSON[_0xf09f('0xf')](_0x256d9d));if(_0x256d9d[_0xf09f('0x10')]){if(_0x256d9d[_0xf09f('0x10')][_0xf09f('0x11')]===0x1f4){logger[_0xf09f('0x10')](_0xf09f('0x12'),_0x12ca12,_0x256d9d[_0xf09f('0x10')][_0xf09f('0x13')]);return _0x32d606(_0x256d9d['error'][_0xf09f('0x13')]);}logger[_0xf09f('0x10')](_0xf09f('0x12'),_0x12ca12,_0x256d9d[_0xf09f('0x10')]['message']);return _0x3f186a(_0x256d9d[_0xf09f('0x10')][_0xf09f('0x13')]);}else{logger[_0xf09f('0xb')](_0xf09f('0x12'),_0x12ca12,'request\x20sent');_0x3f186a(_0x256d9d[_0xf09f('0x14')][_0xf09f('0x13')]);}})[_0xf09f('0x15')](function(_0x5aa16e){logger[_0xf09f('0x10')](_0xf09f('0x12'),_0x12ca12,_0x5aa16e);_0x32d606(_0x5aa16e);});});}
\ No newline at end of file
index bc48992..23380ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89d9=['../../config/environment','./userProfileSection.controller','get','isAuthenticated','/describe','describe','show','post','put','/:id','update','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x4402f2,_0x6537b9){var _0x468166=function(_0x375d85){while(--_0x375d85){_0x4402f2['push'](_0x4402f2['shift']());}};_0x468166(++_0x6537b9);}(_0x89d9,0x163));var _0x989d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x89d9[_0x21a9d9];return _0x46adce;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x989d('0x0'));var timeout=require(_0x989d('0x1'));var express=require(_0x989d('0x2'));var router=express[_0x989d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x989d('0x4'));var interaction=require(_0x989d('0x5'));var config=require(_0x989d('0x6'));var controller=require(_0x989d('0x7'));router[_0x989d('0x8')]('/',auth[_0x989d('0x9')](),controller['index']);router['get'](_0x989d('0xa'),auth[_0x989d('0x9')](),controller[_0x989d('0xb')]);router[_0x989d('0x8')]('/:id',auth[_0x989d('0x9')](),controller[_0x989d('0xc')]);router[_0x989d('0xd')]('/',auth[_0x989d('0x9')](),controller['create']);router[_0x989d('0xe')](_0x989d('0xf'),auth[_0x989d('0x9')](),controller[_0x989d('0x10')]);router['delete'](_0x989d('0xf'),auth[_0x989d('0x9')](),controller[_0x989d('0x11')]);module[_0x989d('0x12')]=router;
\ No newline at end of file
+var _0x1f18=['get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller'];(function(_0x54ce31,_0x5024b9){var _0x4afb6a=function(_0x3ad6f6){while(--_0x3ad6f6){_0x54ce31['push'](_0x54ce31['shift']());}};_0x4afb6a(++_0x5024b9);}(_0x1f18,0x1af));var _0x81f1=function(_0x4a12b9,_0x19d340){_0x4a12b9=_0x4a12b9-0x0;var _0x17e87a=_0x1f18[_0x4a12b9];return _0x17e87a;};'use strict';var multer=require(_0x81f1('0x0'));var util=require(_0x81f1('0x1'));var path=require(_0x81f1('0x2'));var timeout=require(_0x81f1('0x3'));var express=require(_0x81f1('0x4'));var router=express['Router']();var fs_extra=require(_0x81f1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x81f1('0x6'));var config=require(_0x81f1('0x7'));var controller=require(_0x81f1('0x8'));router[_0x81f1('0x9')]('/',auth[_0x81f1('0xa')](),controller[_0x81f1('0xb')]);router[_0x81f1('0x9')](_0x81f1('0xc'),auth[_0x81f1('0xa')](),controller[_0x81f1('0xd')]);router['get'](_0x81f1('0xe'),auth[_0x81f1('0xa')](),controller['show']);router[_0x81f1('0xf')]('/',auth[_0x81f1('0xa')](),controller[_0x81f1('0x10')]);router[_0x81f1('0x11')](_0x81f1('0xe'),auth[_0x81f1('0xa')](),controller[_0x81f1('0x12')]);router['delete'](_0x81f1('0xe'),auth[_0x81f1('0xa')](),controller['destroy']);module[_0x81f1('0x13')]=router;
\ No newline at end of file
index aeb3df4..4cf7729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x16572d,_0x214297){var _0xea46e7=function(_0x350d7e){while(--_0x350d7e){_0x16572d['push'](_0x16572d['shift']());}};_0xea46e7(++_0x214297);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x3c6b7d,_0x5f0d90){_0x3c6b7d=_0x3c6b7d-0x0;var _0x1d3ed2=_0x4cf8[_0x3c6b7d];return _0x1d3ed2;};'use strict';var Sequelize=require(_0x84cf('0x0'));module[_0x84cf('0x1')]={'name':{'type':Sequelize[_0x84cf('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x84cf('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x84cf('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x84cf('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x84cf('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x84cf('0x2')],'set':function(_0x3bbbc3){this[_0x84cf('0x5')](_0x84cf('0x6'),_0x3bbbc3?_0x3bbbc3[_0x84cf('0x7')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x84cf('0x8')]('crudPermissions')[_0x84cf('0x9')](''):[];}}};
\ No newline at end of file
+var _0xd914=['exports','STRING','INTEGER','BOOLEAN','crudPermissions','getDataValue','split','sequelize'];(function(_0x57fda8,_0x5e80a0){var _0x11c895=function(_0xd08d0e){while(--_0xd08d0e){_0x57fda8['push'](_0x57fda8['shift']());}};_0x11c895(++_0x5e80a0);}(_0xd914,0x17f));var _0x4d91=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0xd914[_0x3cb30b];return _0x2ca717;};'use strict';var Sequelize=require(_0x4d91('0x0'));module[_0x4d91('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4d91('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4d91('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x4d91('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4d91('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4d91('0x2')],'set':function(_0x2db8c5){this['setDataValue'](_0x4d91('0x5'),_0x2db8c5?_0x2db8c5['join'](''):[]);},'get':function(){return this[_0x4d91('0x6')](_0x4d91('0x5'))?this[_0x4d91('0x6')](_0x4d91('0x5'))[_0x4d91('0x7')](''):[];}}};
\ No newline at end of file
index d52ce36..128d047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd497=['UserProfileSection','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','keys','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','save','update','then','destroy','end','error','name','index'];(function(_0x1dab1e,_0x45ab20){var _0x25ebc7=function(_0x53056d){while(--_0x53056d){_0x1dab1e['push'](_0x1dab1e['shift']());}};_0x25ebc7(++_0x45ab20);}(_0xd497,0x183));var _0x7d49=function(_0x2e2889,_0x434047){_0x2e2889=_0x2e2889-0x0;var _0x570d4d=_0xd497[_0x2e2889];return _0x570d4d;};'use strict';var emlformat=require(_0x7d49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7d49('0x1'));var jsonpatch=require(_0x7d49('0x2'));var rp=require(_0x7d49('0x3'));var moment=require(_0x7d49('0x4'));var BPromise=require(_0x7d49('0x5'));var Mustache=require('mustache');var util=require(_0x7d49('0x6'));var path=require(_0x7d49('0x7'));var sox=require(_0x7d49('0x8'));var csv=require(_0x7d49('0x9'));var ejs=require(_0x7d49('0xa'));var fs=require('fs');var fs_extra=require(_0x7d49('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7d49('0xc'));var deskjs=require(_0x7d49('0xd'));var toCsv=require(_0x7d49('0x9'));var querystring=require(_0x7d49('0xe'));var Papa=require('papaparse');var Redis=require(_0x7d49('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d49('0x10'));var logger=require(_0x7d49('0x11'))(_0x7d49('0x12'));var utils=require(_0x7d49('0x13'));var config=require(_0x7d49('0x14'));var licenseUtil=require(_0x7d49('0x15'));var db=require(_0x7d49('0x16'))['db'];function respondWithStatusCode(_0x1066af,_0x4adf8a){_0x4adf8a=_0x4adf8a||0xcc;return function(_0xfb7766){if(_0xfb7766){return _0x1066af[_0x7d49('0x17')](_0x4adf8a);}return _0x1066af[_0x7d49('0x18')](_0x4adf8a)['end']();};}function respondWithResult(_0x2ca8d9,_0x5a6198){_0x5a6198=_0x5a6198||0xc8;return function(_0x1956bf){if(_0x1956bf){return _0x2ca8d9[_0x7d49('0x18')](_0x5a6198)[_0x7d49('0x19')](_0x1956bf);}};}function respondWithFilteredResult(_0x2ca82f,_0x462e41){return function(_0x24b973){if(_0x24b973){var _0x3128a4=typeof _0x462e41[_0x7d49('0x1a')]==='undefined'&&typeof _0x462e41[_0x7d49('0x1b')]==='undefined';var _0x35557d=_0x24b973[_0x7d49('0x1c')];var _0x46ed10=_0x3128a4?0x0:_0x462e41[_0x7d49('0x1a')];var _0x201535=_0x3128a4?_0x24b973[_0x7d49('0x1c')]:_0x462e41['offset']+_0x462e41[_0x7d49('0x1b')];var _0x4aecb5;if(_0x201535>=_0x35557d){_0x201535=_0x35557d;_0x4aecb5=0xc8;}else{_0x4aecb5=0xce;}_0x2ca82f[_0x7d49('0x18')](_0x4aecb5);return _0x2ca82f[_0x7d49('0x1d')](_0x7d49('0x1e'),_0x46ed10+'-'+_0x201535+'/'+_0x35557d)['json'](_0x24b973);}return null;};}function patchUpdates(_0x3bd591){return function(_0x1fba88){try{jsonpatch['apply'](_0x1fba88,_0x3bd591,!![]);}catch(_0x46b682){return BPromise['reject'](_0x46b682);}return _0x1fba88[_0x7d49('0x1f')]();};}function saveUpdates(_0x429196,_0x1ce6b8){return function(_0x26d31a){if(_0x26d31a){return _0x26d31a[_0x7d49('0x20')](_0x429196)[_0x7d49('0x21')](function(_0x3876ec){return _0x3876ec;});}return null;};}function removeEntity(_0x3c3f88,_0x5eb394){return function(_0x3584c9){if(_0x3584c9){return _0x3584c9[_0x7d49('0x22')]()['then'](function(){_0x3c3f88[_0x7d49('0x18')](0xcc)[_0x7d49('0x23')]();});}};}function handleEntityNotFound(_0x24e06c,_0x270799){return function(_0x44e153){if(!_0x44e153){_0x24e06c[_0x7d49('0x17')](0x194);}return _0x44e153;};}function handleError(_0x20d8ac,_0x5daa1e){_0x5daa1e=_0x5daa1e||0x1f4;return function(_0x23a57b){logger[_0x7d49('0x24')](_0x23a57b['stack']);if(_0x23a57b[_0x7d49('0x25')]){delete _0x23a57b['name'];}_0x20d8ac[_0x7d49('0x18')](_0x5daa1e)['send'](_0x23a57b);};}exports[_0x7d49('0x26')]=function(_0x2f623d,_0x400052){var _0x2ce806={},_0x1c5e21={},_0x4aa090={'count':0x0,'rows':[]};var _0x3097a1=_['map'](db[_0x7d49('0x27')][_0x7d49('0x28')],function(_0x45703a){return{'name':_0x45703a[_0x7d49('0x29')],'type':_0x45703a[_0x7d49('0x2a')][_0x7d49('0x2b')]};});_0x1c5e21[_0x7d49('0x2c')]=_[_0x7d49('0x2d')](_0x3097a1,_0x7d49('0x25'));_0x1c5e21['query']=_['keys'](_0x2f623d[_0x7d49('0x2e')]);_0x1c5e21['filters']=_[_0x7d49('0x2f')](_0x1c5e21[_0x7d49('0x2c')],_0x1c5e21['query']);_0x2ce806[_0x7d49('0x30')]=_['intersection'](_0x1c5e21['model'],qs['fields'](_0x2f623d['query'][_0x7d49('0x31')]));_0x2ce806[_0x7d49('0x30')]=_0x2ce806[_0x7d49('0x30')]['length']?_0x2ce806[_0x7d49('0x30')]:_0x1c5e21[_0x7d49('0x2c')];if(!_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x32')](_0x7d49('0x33'))){_0x2ce806[_0x7d49('0x1b')]=qs[_0x7d49('0x1b')](_0x2f623d['query'][_0x7d49('0x1b')]);_0x2ce806[_0x7d49('0x1a')]=qs[_0x7d49('0x1a')](_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x1a')]);}_0x2ce806[_0x7d49('0x34')]=qs['sort'](_0x2f623d['query'][_0x7d49('0x35')]);_0x2ce806['where']=qs[_0x7d49('0x36')](_[_0x7d49('0x37')](_0x2f623d[_0x7d49('0x2e')],_0x1c5e21[_0x7d49('0x36')]),_0x3097a1);if(_0x2f623d['query'][_0x7d49('0x38')]){_0x2ce806[_0x7d49('0x39')]=_[_0x7d49('0x3a')](_0x2ce806[_0x7d49('0x39')],{'$or':_['map'](_0x3097a1,function(_0x430db2){if(_0x430db2[_0x7d49('0x2a')]!==_0x7d49('0x3b')){var _0x3c8c39={};_0x3c8c39[_0x430db2[_0x7d49('0x25')]]={'$like':'%'+_0x2f623d[_0x7d49('0x2e')][_0x7d49('0x38')]+'%'};return _0x3c8c39;}})});}_0x2ce806=_['merge']({},_0x2ce806,_0x2f623d[_0x7d49('0x3c')]);var _0x27ed8c={'where':_0x2ce806[_0x7d49('0x39')]};return db[_0x7d49('0x27')]['count'](_0x27ed8c)['then'](function(_0x2ea7a5){_0x4aa090[_0x7d49('0x1c')]=_0x2ea7a5;if(_0x2f623d['query'][_0x7d49('0x3d')]){_0x2ce806[_0x7d49('0x3e')]=[{'all':!![]}];}return db[_0x7d49('0x27')]['findAll'](_0x2ce806);})[_0x7d49('0x21')](function(_0x58c807){_0x4aa090[_0x7d49('0x3f')]=_0x58c807;return _0x4aa090;})['then'](respondWithFilteredResult(_0x400052,_0x2ce806))[_0x7d49('0x40')](handleError(_0x400052,null));};exports['show']=function(_0x574ba2,_0x5e1d22){var _0x2111f6={'raw':![],'where':{'id':_0x574ba2[_0x7d49('0x41')]['id']}},_0x98e637={};_0x98e637[_0x7d49('0x2c')]=_[_0x7d49('0x42')](db[_0x7d49('0x27')]['rawAttributes']);_0x98e637['query']=_[_0x7d49('0x42')](_0x574ba2[_0x7d49('0x2e')]);_0x98e637[_0x7d49('0x36')]=_['intersection'](_0x98e637[_0x7d49('0x2c')],_0x98e637['query']);_0x2111f6[_0x7d49('0x30')]=_[_0x7d49('0x2f')](_0x98e637['model'],qs[_0x7d49('0x31')](_0x574ba2[_0x7d49('0x2e')][_0x7d49('0x31')]));_0x2111f6['attributes']=_0x2111f6['attributes']['length']?_0x2111f6[_0x7d49('0x30')]:_0x98e637[_0x7d49('0x2c')];if(_0x574ba2['query'][_0x7d49('0x3d')]){_0x2111f6[_0x7d49('0x3e')]=[{'all':!![]}];}_0x2111f6=_[_0x7d49('0x3a')]({},_0x2111f6,_0x574ba2[_0x7d49('0x3c')]);return db['UserProfileSection'][_0x7d49('0x43')](_0x2111f6)[_0x7d49('0x21')](handleEntityNotFound(_0x5e1d22,null))[_0x7d49('0x21')](respondWithResult(_0x5e1d22,null))[_0x7d49('0x40')](handleError(_0x5e1d22,null));};exports[_0x7d49('0x44')]=function(_0x18447f,_0xc9b919){return db['UserProfileSection'][_0x7d49('0x44')](_0x18447f['body'],{})[_0x7d49('0x21')](respondWithResult(_0xc9b919,0xc9))[_0x7d49('0x40')](handleError(_0xc9b919,null));};exports[_0x7d49('0x20')]=function(_0x2d67e4,_0x3e9e4c){if(_0x2d67e4[_0x7d49('0x45')]['id']){delete _0x2d67e4[_0x7d49('0x45')]['id'];}return db[_0x7d49('0x27')][_0x7d49('0x43')]({'where':{'id':_0x2d67e4['params']['id']}})[_0x7d49('0x21')](handleEntityNotFound(_0x3e9e4c,null))[_0x7d49('0x21')](saveUpdates(_0x2d67e4[_0x7d49('0x45')],null))['then'](respondWithResult(_0x3e9e4c,null))['catch'](handleError(_0x3e9e4c,null));};exports[_0x7d49('0x22')]=function(_0xc008b8,_0x29cadc){return db[_0x7d49('0x27')][_0x7d49('0x43')]({'where':{'id':_0xc008b8[_0x7d49('0x41')]['id']}})[_0x7d49('0x21')](handleEntityNotFound(_0x29cadc,null))[_0x7d49('0x21')](removeEntity(_0x29cadc,null))['catch'](handleError(_0x29cadc,null));};exports[_0x7d49('0x46')]=function(_0x135acc,_0x36dcca){return db[_0x7d49('0x27')][_0x7d49('0x46')]()[_0x7d49('0x21')](respondWithResult(_0x36dcca,null))[_0x7d49('0x40')](handleError(_0x36dcca,null));};
\ No newline at end of file
+var _0x138a=['model','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','map','UserProfileSection','type','key'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x138a,0xa2));var _0xa138=function(_0x24c4af,_0x18b5a9){_0x24c4af=_0x24c4af-0x0;var _0x214456=_0x138a[_0x24c4af];return _0x214456;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa138('0x0'));var zipdir=require(_0xa138('0x1'));var jsonpatch=require(_0xa138('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa138('0x3'));var Mustache=require(_0xa138('0x4'));var util=require(_0xa138('0x5'));var path=require(_0xa138('0x6'));var sox=require('sox');var csv=require(_0xa138('0x7'));var ejs=require(_0xa138('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa138('0x9'));var squel=require(_0xa138('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa138('0x7'));var querystring=require(_0xa138('0xb'));var Papa=require(_0xa138('0xc'));var Redis=require(_0xa138('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xa138('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa138('0xf'));var logger=require(_0xa138('0x10'))(_0xa138('0x11'));var utils=require('../../config/utils');var config=require(_0xa138('0x12'));var licenseUtil=require(_0xa138('0x13'));var db=require(_0xa138('0x14'))['db'];function respondWithStatusCode(_0x3c9b98,_0x3d583b){_0x3d583b=_0x3d583b||0xcc;return function(_0x1e1d8c){if(_0x1e1d8c){return _0x3c9b98['sendStatus'](_0x3d583b);}return _0x3c9b98[_0xa138('0x15')](_0x3d583b)[_0xa138('0x16')]();};}function respondWithResult(_0x21c60f,_0x45bd92){_0x45bd92=_0x45bd92||0xc8;return function(_0x59641d){if(_0x59641d){return _0x21c60f[_0xa138('0x15')](_0x45bd92)[_0xa138('0x17')](_0x59641d);}};}function respondWithFilteredResult(_0x5a0aac,_0x33220a){return function(_0x5289f4){if(_0x5289f4){var _0x4762f8=typeof _0x33220a[_0xa138('0x18')]===_0xa138('0x19')&&typeof _0x33220a[_0xa138('0x1a')]===_0xa138('0x19');var _0x2115d1=_0x5289f4[_0xa138('0x1b')];var _0x25eae3=_0x4762f8?0x0:_0x33220a['offset'];var _0xda6be6=_0x4762f8?_0x5289f4[_0xa138('0x1b')]:_0x33220a[_0xa138('0x18')]+_0x33220a[_0xa138('0x1a')];var _0x48b59a;if(_0xda6be6>=_0x2115d1){_0xda6be6=_0x2115d1;_0x48b59a=0xc8;}else{_0x48b59a=0xce;}_0x5a0aac[_0xa138('0x15')](_0x48b59a);return _0x5a0aac['set'](_0xa138('0x1c'),_0x25eae3+'-'+_0xda6be6+'/'+_0x2115d1)[_0xa138('0x17')](_0x5289f4);}return null;};}function patchUpdates(_0x1659f9){return function(_0x28a099){try{jsonpatch['apply'](_0x28a099,_0x1659f9,!![]);}catch(_0x3dd6ac){return BPromise['reject'](_0x3dd6ac);}return _0x28a099['save']();};}function saveUpdates(_0x4fb153,_0x40019b){return function(_0x736d4){if(_0x736d4){return _0x736d4[_0xa138('0x1d')](_0x4fb153)[_0xa138('0x1e')](function(_0x2d22bf){return _0x2d22bf;});}return null;};}function removeEntity(_0x5462c1,_0x507b44){return function(_0x14be4f){if(_0x14be4f){return _0x14be4f[_0xa138('0x1f')]()[_0xa138('0x1e')](function(){_0x5462c1[_0xa138('0x15')](0xcc)[_0xa138('0x16')]();});}};}function handleEntityNotFound(_0xb6818f,_0x1e2185){return function(_0x461089){if(!_0x461089){_0xb6818f[_0xa138('0x20')](0x194);}return _0x461089;};}function handleError(_0x277c7e,_0x5ed4fb){_0x5ed4fb=_0x5ed4fb||0x1f4;return function(_0x42f471){logger[_0xa138('0x21')](_0x42f471[_0xa138('0x22')]);if(_0x42f471[_0xa138('0x23')]){delete _0x42f471[_0xa138('0x23')];}_0x277c7e[_0xa138('0x15')](_0x5ed4fb)[_0xa138('0x24')](_0x42f471);};}exports[_0xa138('0x25')]=function(_0xac1558,_0x3d91a1){var _0x3e3685={},_0x59476f={},_0x1cb153={'count':0x0,'rows':[]};var _0x391e03=_[_0xa138('0x26')](db[_0xa138('0x27')]['rawAttributes'],function(_0x44d943){return{'name':_0x44d943['fieldName'],'type':_0x44d943[_0xa138('0x28')][_0xa138('0x29')]};});_0x59476f[_0xa138('0x2a')]=_['map'](_0x391e03,_0xa138('0x23'));_0x59476f[_0xa138('0x2b')]=_['keys'](_0xac1558[_0xa138('0x2b')]);_0x59476f[_0xa138('0x2c')]=_[_0xa138('0x2d')](_0x59476f[_0xa138('0x2a')],_0x59476f[_0xa138('0x2b')]);_0x3e3685[_0xa138('0x2e')]=_['intersection'](_0x59476f[_0xa138('0x2a')],qs[_0xa138('0x2f')](_0xac1558['query'][_0xa138('0x2f')]));_0x3e3685[_0xa138('0x2e')]=_0x3e3685[_0xa138('0x2e')][_0xa138('0x30')]?_0x3e3685[_0xa138('0x2e')]:_0x59476f[_0xa138('0x2a')];if(!_0xac1558[_0xa138('0x2b')]['hasOwnProperty'](_0xa138('0x31'))){_0x3e3685[_0xa138('0x1a')]=qs[_0xa138('0x1a')](_0xac1558[_0xa138('0x2b')][_0xa138('0x1a')]);_0x3e3685[_0xa138('0x18')]=qs[_0xa138('0x18')](_0xac1558['query']['offset']);}_0x3e3685['order']=qs[_0xa138('0x32')](_0xac1558[_0xa138('0x2b')][_0xa138('0x32')]);_0x3e3685[_0xa138('0x33')]=qs[_0xa138('0x2c')](_[_0xa138('0x34')](_0xac1558[_0xa138('0x2b')],_0x59476f[_0xa138('0x2c')]),_0x391e03);if(_0xac1558[_0xa138('0x2b')][_0xa138('0x35')]){_0x3e3685[_0xa138('0x33')]=_[_0xa138('0x36')](_0x3e3685[_0xa138('0x33')],{'$or':_[_0xa138('0x26')](_0x391e03,function(_0x5bf2d5){if(_0x5bf2d5['type']!==_0xa138('0x37')){var _0x200717={};_0x200717[_0x5bf2d5['name']]={'$like':'%'+_0xac1558[_0xa138('0x2b')]['filter']+'%'};return _0x200717;}})});}_0x3e3685=_[_0xa138('0x36')]({},_0x3e3685,_0xac1558[_0xa138('0x38')]);var _0x2264f4={'where':_0x3e3685[_0xa138('0x33')]};return db[_0xa138('0x27')][_0xa138('0x1b')](_0x2264f4)[_0xa138('0x1e')](function(_0x68a153){_0x1cb153[_0xa138('0x1b')]=_0x68a153;if(_0xac1558[_0xa138('0x2b')][_0xa138('0x39')]){_0x3e3685[_0xa138('0x3a')]=[{'all':!![]}];}return db[_0xa138('0x27')][_0xa138('0x3b')](_0x3e3685);})[_0xa138('0x1e')](function(_0x38c96e){_0x1cb153[_0xa138('0x3c')]=_0x38c96e;return _0x1cb153;})['then'](respondWithFilteredResult(_0x3d91a1,_0x3e3685))[_0xa138('0x3d')](handleError(_0x3d91a1,null));};exports['show']=function(_0xf205f1,_0x15b6bf){var _0x3b748e={'raw':![],'where':{'id':_0xf205f1[_0xa138('0x3e')]['id']}},_0xa4a8ed={};_0xa4a8ed[_0xa138('0x2a')]=_[_0xa138('0x3f')](db[_0xa138('0x27')]['rawAttributes']);_0xa4a8ed[_0xa138('0x2b')]=_[_0xa138('0x3f')](_0xf205f1[_0xa138('0x2b')]);_0xa4a8ed[_0xa138('0x2c')]=_[_0xa138('0x2d')](_0xa4a8ed[_0xa138('0x2a')],_0xa4a8ed[_0xa138('0x2b')]);_0x3b748e[_0xa138('0x2e')]=_['intersection'](_0xa4a8ed[_0xa138('0x2a')],qs['fields'](_0xf205f1[_0xa138('0x2b')]['fields']));_0x3b748e[_0xa138('0x2e')]=_0x3b748e[_0xa138('0x2e')]['length']?_0x3b748e['attributes']:_0xa4a8ed[_0xa138('0x2a')];if(_0xf205f1[_0xa138('0x2b')][_0xa138('0x39')]){_0x3b748e[_0xa138('0x3a')]=[{'all':!![]}];}_0x3b748e=_[_0xa138('0x36')]({},_0x3b748e,_0xf205f1['options']);return db['UserProfileSection'][_0xa138('0x40')](_0x3b748e)[_0xa138('0x1e')](handleEntityNotFound(_0x15b6bf,null))['then'](respondWithResult(_0x15b6bf,null))['catch'](handleError(_0x15b6bf,null));};exports[_0xa138('0x41')]=function(_0x4a493a,_0x1279d0){return db[_0xa138('0x27')]['create'](_0x4a493a['body'],{})['then'](respondWithResult(_0x1279d0,0xc9))[_0xa138('0x3d')](handleError(_0x1279d0,null));};exports[_0xa138('0x1d')]=function(_0x922dc8,_0x5dfac3){if(_0x922dc8['body']['id']){delete _0x922dc8[_0xa138('0x42')]['id'];}return db[_0xa138('0x27')][_0xa138('0x40')]({'where':{'id':_0x922dc8[_0xa138('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5dfac3,null))[_0xa138('0x1e')](saveUpdates(_0x922dc8[_0xa138('0x42')],null))[_0xa138('0x1e')](respondWithResult(_0x5dfac3,null))['catch'](handleError(_0x5dfac3,null));};exports[_0xa138('0x1f')]=function(_0x225c08,_0x24c2f4){return db['UserProfileSection']['find']({'where':{'id':_0x225c08['params']['id']}})[_0xa138('0x1e')](handleEntityNotFound(_0x24c2f4,null))[_0xa138('0x1e')](removeEntity(_0x24c2f4,null))['catch'](handleError(_0x24c2f4,null));};exports['describe']=function(_0x33414d,_0x2fc5b9){return db[_0xa138('0x27')][_0xa138('0x43')]()['then'](respondWithResult(_0x2fc5b9,null))['catch'](handleError(_0x2fc5b9,null));};
\ No newline at end of file
index 8222f7a..6933c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ad=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId'];(function(_0x33bfe3,_0xb5acf4){var _0x78a538=function(_0x5a087c){while(--_0x5a087c){_0x33bfe3['push'](_0x33bfe3['shift']());}};_0x78a538(++_0xb5acf4);}(_0x03ad,0xe0));var _0xd03a=function(_0x23e4cf,_0x12704d){_0x23e4cf=_0x23e4cf-0x0;var _0x2bd35a=_0x03ad[_0x23e4cf];return _0x2bd35a;};'use strict';var _=require(_0xd03a('0x0'));var util=require('util');var logger=require(_0xd03a('0x1'))(_0xd03a('0x2'));var moment=require(_0xd03a('0x3'));var BPromise=require('bluebird');var rp=require(_0xd03a('0x4'));var fs=require('fs');var path=require(_0xd03a('0x5'));var rimraf=require(_0xd03a('0x6'));var config=require(_0xd03a('0x7'));var attributes=require(_0xd03a('0x8'));module[_0xd03a('0x9')]=function(_0xb0fcfc,_0x30478b){return _0xb0fcfc[_0xd03a('0xa')](_0xd03a('0xb'),attributes,{'tableName':_0xd03a('0xc'),'paranoid':![],'indexes':[{'name':_0xd03a('0xd'),'fields':[_0xd03a('0xe'),_0xd03a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e7b=['path','rimraf','../../config/environment','./userProfileSection.attributes','define','UserProfileSection','compositeIndex','userProfileId','lodash','../../config/logger','moment','request-promise'];(function(_0x41582d,_0x291b1c){var _0x59c504=function(_0x4d967e){while(--_0x4d967e){_0x41582d['push'](_0x41582d['shift']());}};_0x59c504(++_0x291b1c);}(_0x7e7b,0x1d0));var _0xb7e7=function(_0x5def1a,_0x51b81a){_0x5def1a=_0x5def1a-0x0;var _0x2f045b=_0x7e7b[_0x5def1a];return _0x2f045b;};'use strict';var _=require(_0xb7e7('0x0'));var util=require('util');var logger=require(_0xb7e7('0x1'))('api');var moment=require(_0xb7e7('0x2'));var BPromise=require('bluebird');var rp=require(_0xb7e7('0x3'));var fs=require('fs');var path=require(_0xb7e7('0x4'));var rimraf=require(_0xb7e7('0x5'));var config=require(_0xb7e7('0x6'));var attributes=require(_0xb7e7('0x7'));module['exports']=function(_0xa101f9,_0x46f889){return _0xa101f9[_0xb7e7('0x8')](_0xb7e7('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0xb7e7('0xa'),'fields':['sectionId',_0xb7e7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 7e030b8..ac5c99a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be9=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','lodash','bluebird'];(function(_0x1ca890,_0x21d0d3){var _0x3f8e01=function(_0x4ff2e2){while(--_0x4ff2e2){_0x1ca890['push'](_0x1ca890['shift']());}};_0x3f8e01(++_0x21d0d3);}(_0x2be9,0x1c6));var _0x92be=function(_0x3f4d55,_0x21aca6){_0x3f4d55=_0x3f4d55-0x0;var _0x3e9d17=_0x2be9[_0x3f4d55];return _0x3e9d17;};'use strict';var _=require(_0x92be('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x92be('0x1'));var rs=require(_0x92be('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x92be('0x3'))['db'];var utils=require(_0x92be('0x4'));var logger=require(_0x92be('0x5'))(_0x92be('0x6'));var config=require(_0x92be('0x7'));var jayson=require(_0x92be('0x8'));var client=jayson[_0x92be('0x9')][_0x92be('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x384074,_0x12afa6,_0x4652e1){return new BPromise(function(_0x316ee0,_0x2224c8){return client['request'](_0x384074,_0x4652e1)['then'](function(_0x387439){logger[_0x92be('0xb')](_0x92be('0xc'),_0x12afa6,_0x92be('0xd'));logger[_0x92be('0xe')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x12afa6,'request\x20sent',JSON[_0x92be('0xf')](_0x387439));if(_0x387439['error']){if(_0x387439['error'][_0x92be('0x10')]===0x1f4){logger[_0x92be('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x12afa6,_0x387439[_0x92be('0x11')][_0x92be('0x12')]);return _0x2224c8(_0x387439[_0x92be('0x11')]['message']);}logger[_0x92be('0x11')](_0x92be('0xc'),_0x12afa6,_0x387439[_0x92be('0x11')][_0x92be('0x12')]);return _0x316ee0(_0x387439[_0x92be('0x11')][_0x92be('0x12')]);}else{logger[_0x92be('0xb')](_0x92be('0xc'),_0x12afa6,_0x92be('0xd'));_0x316ee0(_0x387439['result'][_0x92be('0x12')]);}})['catch'](function(_0x5a9350){logger[_0x92be('0x11')](_0x92be('0xc'),_0x12afa6,_0x5a9350);_0x2224c8(_0x5a9350);});});}
\ No newline at end of file
+var _0xa82a=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','UserProfileSection,\x20%s,\x20%s'];(function(_0x33154d,_0x854047){var _0x3b2f03=function(_0x35f7a6){while(--_0x35f7a6){_0x33154d['push'](_0x33154d['shift']());}};_0x3b2f03(++_0x854047);}(_0xa82a,0x8d));var _0xaa82=function(_0x18d2c7,_0x5cd546){_0x18d2c7=_0x18d2c7-0x0;var _0x262310=_0xa82a[_0x18d2c7];return _0x262310;};'use strict';var _=require(_0xaa82('0x0'));var util=require('util');var moment=require(_0xaa82('0x1'));var BPromise=require('bluebird');var rs=require(_0xaa82('0x2'));var fs=require('fs');var Redis=require(_0xaa82('0x3'));var db=require(_0xaa82('0x4'))['db'];var utils=require(_0xaa82('0x5'));var logger=require(_0xaa82('0x6'))('rpc');var config=require(_0xaa82('0x7'));var jayson=require(_0xaa82('0x8'));var client=jayson[_0xaa82('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x131761,_0xbcfbc5,_0x5af75a){return new BPromise(function(_0x340cdf,_0x39e608){return client['request'](_0x131761,_0x5af75a)[_0xaa82('0xa')](function(_0xd2df9d){logger[_0xaa82('0xb')](_0xaa82('0xc'),_0xbcfbc5,'request\x20sent');logger[_0xaa82('0xd')](_0xaa82('0xe'),_0xbcfbc5,_0xaa82('0xf'),JSON[_0xaa82('0x10')](_0xd2df9d));if(_0xd2df9d['error']){if(_0xd2df9d[_0xaa82('0x11')][_0xaa82('0x12')]===0x1f4){logger[_0xaa82('0x11')](_0xaa82('0xc'),_0xbcfbc5,_0xd2df9d[_0xaa82('0x11')]['message']);return _0x39e608(_0xd2df9d[_0xaa82('0x11')][_0xaa82('0x13')]);}logger[_0xaa82('0x11')](_0xaa82('0xc'),_0xbcfbc5,_0xd2df9d[_0xaa82('0x11')][_0xaa82('0x13')]);return _0x340cdf(_0xd2df9d[_0xaa82('0x11')][_0xaa82('0x13')]);}else{logger[_0xaa82('0xb')]('UserProfileSection,\x20%s,\x20%s',_0xbcfbc5,_0xaa82('0xf'));_0x340cdf(_0xd2df9d[_0xaa82('0x14')][_0xaa82('0x13')]);}})[_0xaa82('0x15')](function(_0x3b1042){logger['error']('UserProfileSection,\x20%s,\x20%s',_0xbcfbc5,_0x3b1042);_0x39e608(_0x3b1042);});});}
\ No newline at end of file
index 412a973..82754e0 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(_0x532838,_0x5d88fe){var _0x2617ff=function(_0x2f463d){while(--_0x2f463d){_0x532838['push'](_0x532838['shift']());}};_0x2617ff(++_0x5d88fe);}(_0xe706,0xa3));var _0x6e70=function(_0x133ae7,_0x31bfd9){_0x133ae7=_0x133ae7-0x0;var _0x48677e=_0xe706[_0x133ae7];return _0x48677e;};'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(_0x908123,_0x372585){var _0x4df7ee=function(_0x1d5f1c){while(--_0x1d5f1c){_0x908123['push'](_0x908123['shift']());}};_0x4df7ee(++_0x372585);}(_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 c4bb647..999b9c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f5e=['sequelize','exports','INTEGER'];(function(_0x2a2166,_0x3a077f){var _0x3bcf50=function(_0x3f0300){while(--_0x3f0300){_0x2a2166['push'](_0x2a2166['shift']());}};_0x3bcf50(++_0x3a077f);}(_0x4f5e,0xc0));var _0xe4f5=function(_0x3b51fb,_0x10c826){_0x3b51fb=_0x3b51fb-0x0;var _0x555fc7=_0x4f5e[_0x3b51fb];return _0x555fc7;};'use strict';var Sequelize=require(_0xe4f5('0x0'));module[_0xe4f5('0x1')]={'penalty':{'type':Sequelize[_0xe4f5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x99b9=['sequelize','INTEGER'];(function(_0x533110,_0x20937f){var _0xc3c866=function(_0x2d4a68){while(--_0x2d4a68){_0x533110['push'](_0x533110['shift']());}};_0xc3c866(++_0x20937f);}(_0x99b9,0x18c));var _0x999b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x99b9[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x999b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x999b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index b329863..82a93d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['bluebird','request-promise','path','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','api','moment'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x958a,0x128));var _0xa958=function(_0x16c790,_0x4668d6){_0x16c790=_0x16c790-0x0;var _0x20e034=_0x958a[_0x16c790];return _0x20e034;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var logger=require('../../config/logger')(_0xa958('0x2'));var moment=require(_0xa958('0x3'));var BPromise=require(_0xa958('0x4'));var rp=require(_0xa958('0x5'));var fs=require('fs');var path=require(_0xa958('0x6'));var rimraf=require('rimraf');var config=require(_0xa958('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xa958('0x8')]=function(_0x9b7d9e,_0x2692d6){return _0x9b7d9e[_0xa958('0x9')](_0xa958('0xa'),attributes,{'tableName':_0xa958('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ec2=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','user_has_sms_queues'];(function(_0x406696,_0x39f9b1){var _0x10e35c=function(_0x108de3){while(--_0x108de3){_0x406696['push'](_0x406696['shift']());}};_0x10e35c(++_0x39f9b1);}(_0x6ec2,0x78));var _0x26ec=function(_0x27be3e,_0x2ae817){_0x27be3e=_0x27be3e-0x0;var _0x2ac4b0=_0x6ec2[_0x27be3e];return _0x2ac4b0;};'use strict';var _=require(_0x26ec('0x0'));var util=require(_0x26ec('0x1'));var logger=require(_0x26ec('0x2'))(_0x26ec('0x3'));var moment=require(_0x26ec('0x4'));var BPromise=require(_0x26ec('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x26ec('0x6'));var rimraf=require(_0x26ec('0x7'));var config=require(_0x26ec('0x8'));var attributes=require(_0x26ec('0x9'));module[_0x26ec('0xa')]=function(_0x4ce209,_0x3b5955){return _0x4ce209['define']('UserSmsQueue',attributes,{'tableName':_0x26ec('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5fa710b..3d1d524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9245=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','error','UserSmsQueue,\x20%s,\x20%s'];(function(_0x3dfdbe,_0x4b6803){var _0xaacbe6=function(_0x52ae9d){while(--_0x52ae9d){_0x3dfdbe['push'](_0x3dfdbe['shift']());}};_0xaacbe6(++_0x4b6803);}(_0x9245,0x1bc));var _0x5924=function(_0xac1791,_0x3f8a4e){_0xac1791=_0xac1791-0x0;var _0x238f2d=_0x9245[_0xac1791];return _0x238f2d;};'use strict';var _=require(_0x5924('0x0'));var util=require(_0x5924('0x1'));var moment=require('moment');var BPromise=require(_0x5924('0x2'));var rs=require(_0x5924('0x3'));var fs=require('fs');var Redis=require(_0x5924('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5924('0x5'));var logger=require(_0x5924('0x6'))(_0x5924('0x7'));var config=require(_0x5924('0x8'));var jayson=require(_0x5924('0x9'));var client=jayson[_0x5924('0xa')][_0x5924('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a8e2f,_0x16d027,_0x1c535b){return new BPromise(function(_0x2e5269,_0x31e3c9){return client[_0x5924('0xc')](_0x1a8e2f,_0x1c535b)[_0x5924('0xd')](function(_0x2cadbf){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'));logger[_0x5924('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'),JSON['stringify'](_0x2cadbf));if(_0x2cadbf[_0x5924('0x10')]){if(_0x2cadbf[_0x5924('0x10')]['code']===0x1f4){logger[_0x5924('0x10')](_0x5924('0x11'),_0x16d027,_0x2cadbf[_0x5924('0x10')][_0x5924('0x12')]);return _0x31e3c9(_0x2cadbf['error'][_0x5924('0x12')]);}logger[_0x5924('0x10')](_0x5924('0x11'),_0x16d027,_0x2cadbf['error'][_0x5924('0x12')]);return _0x2e5269(_0x2cadbf['error'][_0x5924('0x12')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x16d027,_0x5924('0xe'));_0x2e5269(_0x2cadbf[_0x5924('0x13')]['message']);}})[_0x5924('0x14')](function(_0x2d8f39){logger['error'](_0x5924('0x11'),_0x16d027,_0x2d8f39);_0x31e3c9(_0x2d8f39);});});}
\ No newline at end of file
+var _0xc178=['client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x383039,_0x4cf882){var _0x572186=function(_0x27b096){while(--_0x27b096){_0x383039['push'](_0x383039['shift']());}};_0x572186(++_0x4cf882);}(_0xc178,0x186));var _0x8c17=function(_0xb775ad,_0xbd08e5){_0xb775ad=_0xb775ad-0x0;var _0x177404=_0xc178[_0xb775ad];return _0x177404;};'use strict';var _=require(_0x8c17('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8c17('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8c17('0x2'));var db=require(_0x8c17('0x3'))['db'];var utils=require(_0x8c17('0x4'));var logger=require(_0x8c17('0x5'))(_0x8c17('0x6'));var config=require(_0x8c17('0x7'));var jayson=require(_0x8c17('0x8'));var client=jayson[_0x8c17('0x9')][_0x8c17('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x452310,_0x5c367b,_0x297c4f){return new BPromise(function(_0x448a12,_0x3e93f7){return client[_0x8c17('0xb')](_0x452310,_0x297c4f)[_0x8c17('0xc')](function(_0x50811f){logger[_0x8c17('0xd')](_0x8c17('0xe'),_0x5c367b,_0x8c17('0xf'));logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x5c367b,'request\x20sent',JSON[_0x8c17('0x10')](_0x50811f));if(_0x50811f[_0x8c17('0x11')]){if(_0x50811f[_0x8c17('0x11')][_0x8c17('0x12')]===0x1f4){logger[_0x8c17('0x11')](_0x8c17('0xe'),_0x5c367b,_0x50811f[_0x8c17('0x11')][_0x8c17('0x13')]);return _0x3e93f7(_0x50811f[_0x8c17('0x11')][_0x8c17('0x13')]);}logger[_0x8c17('0x11')](_0x8c17('0xe'),_0x5c367b,_0x50811f[_0x8c17('0x11')][_0x8c17('0x13')]);return _0x448a12(_0x50811f['error'][_0x8c17('0x13')]);}else{logger[_0x8c17('0xd')](_0x8c17('0xe'),_0x5c367b,'request\x20sent');_0x448a12(_0x50811f[_0x8c17('0x14')]['message']);}})['catch'](function(_0x5b746d){logger[_0x8c17('0x11')](_0x8c17('0xe'),_0x5c367b,_0x5b746d);_0x3e93f7(_0x5b746d);});});}
\ No newline at end of file
index 59a9143..ab0816b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b15=['INTEGER','sequelize'];(function(_0x53c098,_0xdea94a){var _0x4cd7=function(_0x14d334){while(--_0x14d334){_0x53c098['push'](_0x53c098['shift']());}};_0x4cd7(++_0xdea94a);}(_0x2b15,0x16f));var _0x52b1=function(_0xea81a1,_0xb28e9e){_0xea81a1=_0xea81a1-0x0;var _0x2cd030=_0x2b15[_0xea81a1];return _0x2cd030;};'use strict';var Sequelize=require(_0x52b1('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x52b1('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x52b1('0x1')]}};
\ No newline at end of file
+var _0xc77e=['INTEGER','exports'];(function(_0x28cbce,_0x4c18bd){var _0x439505=function(_0x44e8ea){while(--_0x44e8ea){_0x28cbce['push'](_0x28cbce['shift']());}};_0x439505(++_0x4c18bd);}(_0xc77e,0x1e1));var _0xec77=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc77e[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0xec77('0x0')]={'UserId':{'type':Sequelize[_0xec77('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xec77('0x1')]}};
\ No newline at end of file
index 0cfe3cb..9f26394 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(_0x2d6459,_0x4b0f94){var _0x300707=function(_0x59aaa4){while(--_0x59aaa4){_0x2d6459['push'](_0x2d6459['shift']());}};_0x300707(++_0x4b0f94);}(_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 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(_0x2eb132,_0x144e44){var _0x340cdc=function(_0x1466c4){while(--_0x1466c4){_0x2eb132['push'](_0x2eb132['shift']());}};_0x340cdc(++_0x144e44);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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 88def11..c7ca918 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(_0x1346f2,_0x38f203){var _0x1769d2=function(_0x47a9f6){while(--_0x47a9f6){_0x1346f2['push'](_0x1346f2['shift']());}};_0x1769d2(++_0x38f203);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x44d6b8,_0xe7e065){var _0x18cbfa=function(_0x1704bc){while(--_0x1704bc){_0x44d6b8['push'](_0x44d6b8['shift']());}};_0x18cbfa(++_0xe7e065);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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 0f7eae4..b6cbf53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aff=['sequelize'];(function(_0x609988,_0x507944){var _0x159984=function(_0x39d9ce){while(--_0x39d9ce){_0x609988['push'](_0x609988['shift']());}};_0x159984(++_0x507944);}(_0x3aff,0x148));var _0xf3af=function(_0x296cda,_0x530347){_0x296cda=_0x296cda-0x0;var _0x552c5c=_0x3aff[_0x296cda];return _0x552c5c;};'use strict';var Sequelize=require(_0xf3af('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9652=['sequelize','INTEGER'];(function(_0x4ec1ea,_0x5d717e){var _0x14d62a=function(_0x47fdaf){while(--_0x47fdaf){_0x4ec1ea['push'](_0x4ec1ea['shift']());}};_0x14d62a(++_0x5d717e);}(_0x9652,0x198));var _0x2965=function(_0x356b9e,_0x306f73){_0x356b9e=_0x356b9e-0x0;var _0x15e910=_0x9652[_0x356b9e];return _0x15e910;};'use strict';var Sequelize=require(_0x2965('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x2965('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 8e96d48..46d5944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf8f=['user_has_voice_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','UserVoiceQueue'];(function(_0x5b13c3,_0x378e0a){var _0x3d6780=function(_0x6327a6){while(--_0x6327a6){_0x5b13c3['push'](_0x5b13c3['shift']());}};_0x3d6780(++_0x378e0a);}(_0xdf8f,0x1cf));var _0xfdf8=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xdf8f[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xfdf8('0x0'));var util=require(_0xfdf8('0x1'));var logger=require(_0xfdf8('0x2'))(_0xfdf8('0x3'));var moment=require(_0xfdf8('0x4'));var BPromise=require(_0xfdf8('0x5'));var rp=require(_0xfdf8('0x6'));var fs=require('fs');var path=require(_0xfdf8('0x7'));var rimraf=require(_0xfdf8('0x8'));var config=require(_0xfdf8('0x9'));var attributes=require(_0xfdf8('0xa'));module[_0xfdf8('0xb')]=function(_0x4f7852,_0x34fb3e){return _0x4f7852['define'](_0xfdf8('0xc'),attributes,{'tableName':_0xfdf8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d7d=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues'];(function(_0x53c96,_0x1e1e11){var _0x3a22d2=function(_0x24613b){while(--_0x24613b){_0x53c96['push'](_0x53c96['shift']());}};_0x3a22d2(++_0x1e1e11);}(_0x7d7d,0xa9));var _0xd7d7=function(_0x5cc19c,_0x32c2da){_0x5cc19c=_0x5cc19c-0x0;var _0x499d38=_0x7d7d[_0x5cc19c];return _0x499d38;};'use strict';var _=require(_0xd7d7('0x0'));var util=require('util');var logger=require(_0xd7d7('0x1'))(_0xd7d7('0x2'));var moment=require(_0xd7d7('0x3'));var BPromise=require('bluebird');var rp=require(_0xd7d7('0x4'));var fs=require('fs');var path=require(_0xd7d7('0x5'));var rimraf=require(_0xd7d7('0x6'));var config=require(_0xd7d7('0x7'));var attributes=require(_0xd7d7('0x8'));module[_0xd7d7('0x9')]=function(_0x382c0a,_0x1f1616){return _0x382c0a[_0xd7d7('0xa')](_0xd7d7('0xb'),attributes,{'tableName':_0xd7d7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c38568..46087ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e8=['jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x38e8,0x150));var _0x838e=function(_0x3022af,_0x2b561e){_0x3022af=_0x3022af-0x0;var _0x7301de=_0x38e8[_0x3022af];return _0x7301de;};'use strict';var _=require(_0x838e('0x0'));var util=require(_0x838e('0x1'));var moment=require(_0x838e('0x2'));var BPromise=require(_0x838e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x838e('0x4'));var db=require(_0x838e('0x5'))['db'];var utils=require(_0x838e('0x6'));var logger=require(_0x838e('0x7'))(_0x838e('0x8'));var config=require('../../config/environment');var jayson=require(_0x838e('0x9'));var client=jayson[_0x838e('0xa')][_0x838e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x33574d,_0xefe40d,_0x246c6b){return new BPromise(function(_0x255d09,_0x323c4d){return client[_0x838e('0xc')](_0x33574d,_0x246c6b)[_0x838e('0xd')](function(_0x4af9ad){logger[_0x838e('0xe')](_0x838e('0xf'),_0xefe40d,_0x838e('0x10'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0xefe40d,'request\x20sent',JSON[_0x838e('0x11')](_0x4af9ad));if(_0x4af9ad[_0x838e('0x12')]){if(_0x4af9ad[_0x838e('0x12')][_0x838e('0x13')]===0x1f4){logger['error'](_0x838e('0xf'),_0xefe40d,_0x4af9ad[_0x838e('0x12')][_0x838e('0x14')]);return _0x323c4d(_0x4af9ad[_0x838e('0x12')][_0x838e('0x14')]);}logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0xefe40d,_0x4af9ad['error']['message']);return _0x255d09(_0x4af9ad['error'][_0x838e('0x14')]);}else{logger[_0x838e('0xe')](_0x838e('0xf'),_0xefe40d,_0x838e('0x10'));_0x255d09(_0x4af9ad[_0x838e('0x15')][_0x838e('0x14')]);}})[_0x838e('0x16')](function(_0x3138c4){logger[_0x838e('0x12')](_0x838e('0xf'),_0xefe40d,_0x3138c4);_0x323c4d(_0x3138c4);});});}
\ No newline at end of file
+var _0xcf7a=['UserVoiceQueue,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x598b5d,_0x3f4d1e){var _0x54ab06=function(_0x1cf62e){while(--_0x1cf62e){_0x598b5d['push'](_0x598b5d['shift']());}};_0x54ab06(++_0x3f4d1e);}(_0xcf7a,0xc2));var _0xacf7=function(_0x51db6b,_0x425b0c){_0x51db6b=_0x51db6b-0x0;var _0x319d52=_0xcf7a[_0x51db6b];return _0x319d52;};'use strict';var _=require(_0xacf7('0x0'));var util=require(_0xacf7('0x1'));var moment=require(_0xacf7('0x2'));var BPromise=require('bluebird');var rs=require(_0xacf7('0x3'));var fs=require('fs');var Redis=require(_0xacf7('0x4'));var db=require(_0xacf7('0x5'))['db'];var utils=require(_0xacf7('0x6'));var logger=require(_0xacf7('0x7'))(_0xacf7('0x8'));var config=require('../../config/environment');var jayson=require(_0xacf7('0x9'));var client=jayson[_0xacf7('0xa')][_0xacf7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3b6962,_0x4b82bb,_0x27ece7){return new BPromise(function(_0x424298,_0x514fed){return client[_0xacf7('0xc')](_0x3b6962,_0x27ece7)[_0xacf7('0xd')](function(_0x4d3116){logger[_0xacf7('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x4b82bb,_0xacf7('0xf'));logger[_0xacf7('0x10')](_0xacf7('0x11'),_0x4b82bb,_0xacf7('0xf'),JSON[_0xacf7('0x12')](_0x4d3116));if(_0x4d3116[_0xacf7('0x13')]){if(_0x4d3116[_0xacf7('0x13')][_0xacf7('0x14')]===0x1f4){logger[_0xacf7('0x13')]('UserVoiceQueue,\x20%s,\x20%s',_0x4b82bb,_0x4d3116['error'][_0xacf7('0x15')]);return _0x514fed(_0x4d3116['error'][_0xacf7('0x15')]);}logger['error'](_0xacf7('0x16'),_0x4b82bb,_0x4d3116['error'][_0xacf7('0x15')]);return _0x424298(_0x4d3116[_0xacf7('0x13')]['message']);}else{logger[_0xacf7('0xe')](_0xacf7('0x16'),_0x4b82bb,_0xacf7('0xf'));_0x424298(_0x4d3116['result'][_0xacf7('0x15')]);}})[_0xacf7('0x17')](function(_0x36ebe0){logger[_0xacf7('0x13')](_0xacf7('0x16'),_0x4b82bb,_0x36ebe0);_0x514fed(_0x36ebe0);});});}
\ No newline at end of file
index 13e9234..5d4051d 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(_0x7a5f2d,_0x1d08c8){var _0x25bde2=function(_0xbc06da){while(--_0xbc06da){_0x7a5f2d['push'](_0x7a5f2d['shift']());}};_0x25bde2(++_0x1d08c8);}(_0xe706,0xa3));var _0x6e70=function(_0x1f1170,_0x3b5783){_0x1f1170=_0x1f1170-0x0;var _0x127b7b=_0xe706[_0x1f1170];return _0x127b7b;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x1b50f1,_0x455c07){var _0x1a314f=function(_0x560489){while(--_0x560489){_0x1b50f1['push'](_0x1b50f1['shift']());}};_0x1a314f(++_0x455c07);}(_0xedd9,0xfc));var _0x9edd=function(_0x3becd2,_0x4a8124){_0x3becd2=_0x3becd2-0x0;var _0x347cd8=_0xedd9[_0x3becd2];return _0x347cd8;};'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 7f3d061..8a62ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e1e=['Required\x20by\x20Asterisk','queue_interface','STRING','sequelize','exports','INTEGER'];(function(_0x2b99c7,_0x1adfd6){var _0x5aaa0c=function(_0x35f9f6){while(--_0x35f9f6){_0x2b99c7['push'](_0x2b99c7['shift']());}};_0x5aaa0c(++_0x1adfd6);}(_0x7e1e,0x183));var _0xe7e1=function(_0x4a78c9,_0x2e5b96){_0x4a78c9=_0x4a78c9-0x0;var _0x1f7e49=_0x7e1e[_0x4a78c9];return _0x1f7e49;};'use strict';var Sequelize=require(_0xe7e1('0x0'));module[_0xe7e1('0x1')]={'uniqueid':{'type':Sequelize[_0xe7e1('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xe7e1('0x3')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xe7e1('0x3')},'UserId':{'type':Sequelize[_0xe7e1('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe7e1('0x4'),'comment':_0xe7e1('0x3')},'VoiceQueueId':{'type':Sequelize[_0xe7e1('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xe7e1('0x5')],'allowNull':![],'unique':'queue_interface','comment':_0xe7e1('0x3')},'penalty':{'type':Sequelize[_0xe7e1('0x2')](0xb),'defaultValue':0x0,'comment':_0xe7e1('0x3')},'paused':{'type':Sequelize[_0xe7e1('0x2')](0xb),'defaultValue':0x0,'comment':_0xe7e1('0x3')}};
\ No newline at end of file
+var _0x6ce6=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','exports'];(function(_0x30ba46,_0x144bcc){var _0x11097f=function(_0x7cc804){while(--_0x7cc804){_0x30ba46['push'](_0x30ba46['shift']());}};_0x11097f(++_0x144bcc);}(_0x6ce6,0x72));var _0x66ce=function(_0xc02034,_0x13962b){_0xc02034=_0xc02034-0x0;var _0x4896ae=_0x6ce6[_0xc02034];return _0x4896ae;};'use strict';var Sequelize=require('sequelize');module[_0x66ce('0x0')]={'uniqueid':{'type':Sequelize[_0x66ce('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x66ce('0x2')},'membername':{'type':Sequelize[_0x66ce('0x3')],'allowNull':![],'comment':_0x66ce('0x2')},'UserId':{'type':Sequelize[_0x66ce('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x66ce('0x3')],'allowNull':![],'unique':_0x66ce('0x4'),'comment':_0x66ce('0x2')},'VoiceQueueId':{'type':Sequelize[_0x66ce('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x66ce('0x3')],'allowNull':![],'unique':_0x66ce('0x4'),'comment':_0x66ce('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x66ce('0x1')](0xb),'defaultValue':0x0,'comment':_0x66ce('0x2')}};
\ No newline at end of file
index 161f49b..b77ed33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c3=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save'];(function(_0x183827,_0x2dfa0e){var _0x16ae25=function(_0x49534f){while(--_0x49534f){_0x183827['push'](_0x183827['shift']());}};_0x16ae25(++_0x2dfa0e);}(_0x55c3,0x73));var _0x355c=function(_0x716538,_0x364eaa){_0x716538=_0x716538-0x0;var _0x6ad46c=_0x55c3[_0x716538];return _0x6ad46c;};'use strict';var EventEmitter=require(_0x355c('0x0'));var UserVoiceQueueRt=require(_0x355c('0x1'))['db'][_0x355c('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x355c('0x3')](0x0);var events={'afterCreate':_0x355c('0x4'),'afterUpdate':_0x355c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x183e25){return function(_0x432343,_0x256712,_0xdf3929){UserVoiceQueueRtEvents[_0x355c('0x6')](_0x183e25+':'+_0x432343['id'],_0x432343);UserVoiceQueueRtEvents[_0x355c('0x6')](_0x183e25,_0x432343);_0xdf3929(null);};}for(var e in events){if(events[_0x355c('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x355c('0x8')](e,emitEvent(event));}}module[_0x355c('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x1e81=['events','../../mysqldb','UserVoiceQueueRt','update','hasOwnProperty','hook'];(function(_0x33801c,_0x3041e2){var _0x183319=function(_0x1c7a0d){while(--_0x1c7a0d){_0x33801c['push'](_0x33801c['shift']());}};_0x183319(++_0x3041e2);}(_0x1e81,0x102));var _0x11e8=function(_0x5c9486,_0xb5b87a){_0x5c9486=_0x5c9486-0x0;var _0x1fc534=_0x1e81[_0x5c9486];return _0x1fc534;};'use strict';var EventEmitter=require(_0x11e8('0x0'));var UserVoiceQueueRt=require(_0x11e8('0x1'))['db'][_0x11e8('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x11e8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x38cae8){return function(_0x5089e2,_0x283b98,_0x229a25){UserVoiceQueueRtEvents['emit'](_0x38cae8+':'+_0x5089e2['id'],_0x5089e2);UserVoiceQueueRtEvents['emit'](_0x38cae8,_0x5089e2);_0x229a25(null);};}for(var e in events){if(events[_0x11e8('0x4')](e)){var event=events[e];UserVoiceQueueRt[_0x11e8('0x5')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index fcc06ca..1b12114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecf=['moment','bluebird','path','rimraf','define','lodash','util','api'];(function(_0x1782b0,_0x28d6d2){var _0x374268=function(_0x32763c){while(--_0x32763c){_0x1782b0['push'](_0x1782b0['shift']());}};_0x374268(++_0x28d6d2);}(_0xfecf,0x8d));var _0xffec=function(_0x468db6,_0x4e464d){_0x468db6=_0x468db6-0x0;var _0x568e45=_0xfecf[_0x468db6];return _0x568e45;};'use strict';var _=require(_0xffec('0x0'));var util=require(_0xffec('0x1'));var logger=require('../../config/logger')(_0xffec('0x2'));var moment=require(_0xffec('0x3'));var BPromise=require(_0xffec('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xffec('0x5'));var rimraf=require(_0xffec('0x6'));var config=require('../../config/environment');var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x1e4633,_0x2fcdde){return _0x1e4633[_0xffec('0x7')]('UserVoiceQueueRt',attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5aef=['bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','api','moment'];(function(_0x573de1,_0x45e9cf){var _0x365738=function(_0x552a35){while(--_0x552a35){_0x573de1['push'](_0x573de1['shift']());}};_0x365738(++_0x45e9cf);}(_0x5aef,0x1ae));var _0xf5ae=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x5aef[_0x1deb03];return _0x189fe7;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf5ae('0x0'));var moment=require(_0xf5ae('0x1'));var BPromise=require(_0xf5ae('0x2'));var rp=require(_0xf5ae('0x3'));var fs=require('fs');var path=require(_0xf5ae('0x4'));var rimraf=require(_0xf5ae('0x5'));var config=require(_0xf5ae('0x6'));var attributes=require(_0xf5ae('0x7'));module[_0xf5ae('0x8')]=function(_0x1c4970,_0x521c9f){return _0x1c4970[_0xf5ae('0x9')](_0xf5ae('0xa'),attributes,{'tableName':_0xf5ae('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efc4d3f..dc7717a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5886=['request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','where','sequelize','outboundQueuePauses','stringify','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','socket.io-emitter','./userVoiceQueueRt.socket'];(function(_0x3029a1,_0x2a5e5f){var _0x220774=function(_0x45481a){while(--_0x45481a){_0x3029a1['push'](_0x3029a1['shift']());}};_0x220774(++_0x2a5e5f);}(_0x5886,0x149));var _0x6588=function(_0xa35236,_0x3ad925){_0xa35236=_0xa35236-0x0;var _0x2275e5=_0x5886[_0xa35236];return _0x2275e5;};'use strict';var _=require('lodash');var util=require(_0x6588('0x0'));var moment=require(_0x6588('0x1'));var BPromise=require(_0x6588('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6588('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6588('0x4'))(_0x6588('0x5'));var config=require(_0x6588('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6588('0x7')][_0x6588('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x6588('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x6588('0xa'))(new Redis(config['redis']));require(_0x6588('0xb'))['register'](socket);function respondWithRpcPromise(_0x3fda57,_0x378e10,_0x44c129){return new BPromise(function(_0x47d18a,_0x41f240){return client[_0x6588('0xc')](_0x3fda57,_0x44c129)[_0x6588('0xd')](function(_0x26ae69){logger[_0x6588('0xe')](_0x6588('0xf'),_0x378e10,_0x6588('0x10'));logger[_0x6588('0x11')](_0x6588('0x12'),_0x378e10,'request\x20sent',JSON['stringify'](_0x26ae69));if(_0x26ae69['error']){if(_0x26ae69[_0x6588('0x13')][_0x6588('0x14')]===0x1f4){logger['error'](_0x6588('0xf'),_0x378e10,_0x26ae69['error'][_0x6588('0x15')]);return _0x41f240(_0x26ae69[_0x6588('0x13')][_0x6588('0x15')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x378e10,_0x26ae69[_0x6588('0x13')]['message']);return _0x47d18a(_0x26ae69[_0x6588('0x13')]['message']);}else{logger[_0x6588('0xe')](_0x6588('0xf'),_0x378e10,_0x6588('0x10'));_0x47d18a(_0x26ae69[_0x6588('0x16')][_0x6588('0x15')]);}})[_0x6588('0x17')](function(_0xc2ee35){logger[_0x6588('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x378e10,_0xc2ee35);_0x41f240(_0xc2ee35);});});}exports[_0x6588('0x18')]=function(_0x192a11){var _0x83b326=this;return new Promise(function(_0x482cc0,_0x2ac6cb){return db[_0x6588('0x19')]['findAll']({'raw':_0x192a11[_0x6588('0x1a')]?_0x192a11[_0x6588('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x192a11[_0x6588('0x1a')]?_0x192a11[_0x6588('0x1a')][_0x6588('0x1b')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x6588('0x1c')]['fn']('IF',db[_0x6588('0x1c')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x6588('0x1d')]]})['then'](function(_0x55240b){logger[_0x6588('0xe')](_0x6588('0x18'),_0x192a11);logger[_0x6588('0x11')]('GetVoiceQueueRtPauses',_0x192a11,JSON[_0x6588('0x1e')](_0x55240b));_0x482cc0(_0x55240b);})[_0x6588('0x17')](function(_0x1e3007){logger[_0x6588('0x13')]('GetVoiceQueueRtPauses',_0x1e3007[_0x6588('0x15')],_0x192a11);_0x2ac6cb(_0x83b326[_0x6588('0x13')](0x1f4,_0x1e3007[_0x6588('0x15')]));});});};
\ No newline at end of file
+var _0x4a5a=['defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','request\x20sent','stringify','error','UserVoiceQueueRt,\x20%s,\x20%s','message','result','catch','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','info','GetVoiceQueueRtPauses','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis'];(function(_0x51465b,_0xa5be6){var _0x4fbd88=function(_0x439e1a){while(--_0x439e1a){_0x51465b['push'](_0x51465b['shift']());}};_0x4fbd88(++_0xa5be6);}(_0x4a5a,0x104));var _0xa4a5=function(_0x3bec85,_0x37d590){_0x3bec85=_0x3bec85-0x0;var _0x26e51a=_0x4a5a[_0x3bec85];return _0x26e51a;};'use strict';var _=require('lodash');var util=require(_0xa4a5('0x0'));var moment=require(_0xa4a5('0x1'));var BPromise=require(_0xa4a5('0x2'));var rs=require(_0xa4a5('0x3'));var fs=require('fs');var Redis=require(_0xa4a5('0x4'));var db=require(_0xa4a5('0x5'))['db'];var utils=require(_0xa4a5('0x6'));var logger=require(_0xa4a5('0x7'))('rpc');var config=require(_0xa4a5('0x8'));var jayson=require(_0xa4a5('0x9'));var client=jayson[_0xa4a5('0xa')][_0xa4a5('0xb')]({'port':0x232a});config[_0xa4a5('0xc')]=_[_0xa4a5('0xd')](config[_0xa4a5('0xc')],{'host':_0xa4a5('0xe'),'port':0x18eb});var socket=require(_0xa4a5('0xf'))(new Redis(config[_0xa4a5('0xc')]));require(_0xa4a5('0x10'))[_0xa4a5('0x11')](socket);function respondWithRpcPromise(_0x5d3ce0,_0x3132d0,_0x3c4899){return new BPromise(function(_0x3187e3,_0x1ff27c){return client[_0xa4a5('0x12')](_0x5d3ce0,_0x3c4899)[_0xa4a5('0x13')](function(_0x1d7bf3){logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x3132d0,'request\x20sent');logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x3132d0,_0xa4a5('0x14'),JSON[_0xa4a5('0x15')](_0x1d7bf3));if(_0x1d7bf3[_0xa4a5('0x16')]){if(_0x1d7bf3[_0xa4a5('0x16')]['code']===0x1f4){logger[_0xa4a5('0x16')](_0xa4a5('0x17'),_0x3132d0,_0x1d7bf3['error'][_0xa4a5('0x18')]);return _0x1ff27c(_0x1d7bf3['error'][_0xa4a5('0x18')]);}logger[_0xa4a5('0x16')](_0xa4a5('0x17'),_0x3132d0,_0x1d7bf3[_0xa4a5('0x16')][_0xa4a5('0x18')]);return _0x3187e3(_0x1d7bf3['error'][_0xa4a5('0x18')]);}else{logger['info'](_0xa4a5('0x17'),_0x3132d0,_0xa4a5('0x14'));_0x3187e3(_0x1d7bf3[_0xa4a5('0x19')][_0xa4a5('0x18')]);}})[_0xa4a5('0x1a')](function(_0x2a2099){logger[_0xa4a5('0x16')](_0xa4a5('0x17'),_0x3132d0,_0x2a2099);_0x1ff27c(_0x2a2099);});});}exports['GetVoiceQueueRtPauses']=function(_0x467031){var _0x3ec3f9=this;return new Promise(function(_0x3e528d,_0x24fb6e){return db[_0xa4a5('0x1b')][_0xa4a5('0x1c')]({'raw':_0x467031[_0xa4a5('0x1d')]?_0x467031[_0xa4a5('0x1d')][_0xa4a5('0x1e')]===undefined?!![]:![]:!![],'where':_0x467031[_0xa4a5('0x1d')]?_0x467031['options'][_0xa4a5('0x1f')]||null:null,'attributes':[[db[_0xa4a5('0x20')]['fn'](_0xa4a5('0x21'),db[_0xa4a5('0x20')]['fn']('IF',db['sequelize']['literal'](_0xa4a5('0x22')))),_0xa4a5('0x23')]]})[_0xa4a5('0x13')](function(_0x54a64d){logger[_0xa4a5('0x24')](_0xa4a5('0x25'),_0x467031);logger[_0xa4a5('0x26')](_0xa4a5('0x25'),_0x467031,JSON['stringify'](_0x54a64d));_0x3e528d(_0x54a64d);})[_0xa4a5('0x1a')](function(_0x2763d6){logger[_0xa4a5('0x16')](_0xa4a5('0x25'),_0x2763d6['message'],_0x467031);_0x24fb6e(_0x3ec3f9[_0xa4a5('0x16')](0x1f4,_0x2763d6[_0xa4a5('0x18')]));});});};
\ No newline at end of file
index 4a45e57..540c88d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a14=['emit','length','userVoiceQueueRt:','remove','update'];(function(_0x4918d0,_0x443259){var _0xe52b64=function(_0x545ef9){while(--_0x545ef9){_0x4918d0['push'](_0x4918d0['shift']());}};_0xe52b64(++_0x443259);}(_0x9a14,0xa8));var _0x49a1=function(_0x16e4e4,_0x5dd356){_0x16e4e4=_0x16e4e4-0x0;var _0x409c5c=_0x9a14[_0x16e4e4];return _0x409c5c;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save',_0x49a1('0x0'),_0x49a1('0x1')];function createListener(_0x10e23c,_0x969076){return function(_0x1efead){_0x969076[_0x49a1('0x2')](_0x10e23c,_0x1efead);};}function removeListener(_0x10de2e,_0x453ecf){return function(){UserVoiceQueueRtEvents['removeListener'](_0x10de2e,_0x453ecf);};}exports['register']=function(_0x479018){for(var _0x5283aa=0x0,_0x9394fc=events[_0x49a1('0x3')];_0x5283aa<_0x9394fc;_0x5283aa++){var _0x7ef1ba=events[_0x5283aa];var _0x592940=createListener(_0x49a1('0x4')+_0x7ef1ba,_0x479018);UserVoiceQueueRtEvents['on'](_0x7ef1ba,_0x592940);}};
\ No newline at end of file
+var _0x292c=['./userVoiceQueueRt.events','remove','update','register','length','userVoiceQueueRt:'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x292c,0x66));var _0xc292=function(_0x1ee9a1,_0x5f1434){_0x1ee9a1=_0x1ee9a1-0x0;var _0x21270f=_0x292c[_0x1ee9a1];return _0x21270f;};'use strict';var UserVoiceQueueRtEvents=require(_0xc292('0x0'));var events=['save',_0xc292('0x1'),_0xc292('0x2')];function createListener(_0x61f2da,_0x1931ea){return function(_0x124054){_0x1931ea['emit'](_0x61f2da,_0x124054);};}function removeListener(_0x1f14f9,_0x536154){return function(){UserVoiceQueueRtEvents['removeListener'](_0x1f14f9,_0x536154);};}exports[_0xc292('0x3')]=function(_0x1c45ed){for(var _0x2c01eb=0x0,_0x262ac8=events[_0xc292('0x4')];_0x2c01eb<_0x262ac8;_0x2c01eb++){var _0x3a733b=events[_0x2c01eb];var _0x14178b=createListener(_0xc292('0x5')+_0x3a733b,_0x1c45ed);UserVoiceQueueRtEvents['on'](_0x3a733b,_0x14178b);}};
\ No newline at end of file
index ac0c55f..8c2d8aa 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(_0x24ca1f,_0x3d2164){var _0x5f4222=function(_0x37b651){while(--_0x37b651){_0x24ca1f['push'](_0x24ca1f['shift']());}};_0x5f4222(++_0x3d2164);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x493c8c,_0x470567){var _0x17344b=function(_0x47aee7){while(--_0x47aee7){_0x493c8c['push'](_0x493c8c['shift']());}};_0x17344b(++_0x470567);}(_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 dff0e21..a977501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4f=['sequelize','INTEGER'];(function(_0x2f0a93,_0x3f1b1e){var _0x32b2a2=function(_0x3e3bd8){while(--_0x3e3bd8){_0x2f0a93['push'](_0x2f0a93['shift']());}};_0x32b2a2(++_0x3f1b1e);}(_0xac4f,0x122));var _0xfac4=function(_0x511577,_0x2ec0cf){_0x511577=_0x511577-0x0;var _0x1b9201=_0xac4f[_0x511577];return _0x1b9201;};'use strict';var Sequelize=require(_0xfac4('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xfac4('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7690=['sequelize','exports','INTEGER'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7690,0x18c));var _0x0769=function(_0x353af4,_0x114c45){_0x353af4=_0x353af4-0x0;var _0x1375b0=_0x7690[_0x353af4];return _0x1375b0;};'use strict';var Sequelize=require(_0x0769('0x0'));module[_0x0769('0x1')]={'penalty':{'type':Sequelize[_0x0769('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 602eadc..2cf1949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6736=['path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x155193,_0x16929b){var _0x47c132=function(_0x18c60d){while(--_0x18c60d){_0x155193['push'](_0x155193['shift']());}};_0x47c132(++_0x16929b);}(_0x6736,0x13c));var _0x6673=function(_0x2d11b7,_0x30a95e){_0x2d11b7=_0x2d11b7-0x0;var _0x29f186=_0x6736[_0x2d11b7];return _0x29f186;};'use strict';var _=require(_0x6673('0x0'));var util=require(_0x6673('0x1'));var logger=require(_0x6673('0x2'))(_0x6673('0x3'));var moment=require(_0x6673('0x4'));var BPromise=require('bluebird');var rp=require(_0x6673('0x5'));var fs=require('fs');var path=require(_0x6673('0x6'));var rimraf=require(_0x6673('0x7'));var config=require(_0x6673('0x8'));var attributes=require(_0x6673('0x9'));module[_0x6673('0xa')]=function(_0x3f52ba,_0xcf9550){return _0x3f52ba[_0x6673('0xb')](_0x6673('0xc'),attributes,{'tableName':_0x6673('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde5f=['bluebird','request-promise','path','rimraf','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xde5f,0x95));var _0xfde5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde5f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfde5('0x0'));var util=require(_0xfde5('0x1'));var logger=require(_0xfde5('0x2'))(_0xfde5('0x3'));var moment=require(_0xfde5('0x4'));var BPromise=require(_0xfde5('0x5'));var rp=require(_0xfde5('0x6'));var fs=require('fs');var path=require(_0xfde5('0x7'));var rimraf=require(_0xfde5('0x8'));var config=require('../../config/environment');var attributes=require(_0xfde5('0x9'));module[_0xfde5('0xa')]=function(_0x549d41,_0xd27440){return _0x549d41[_0xfde5('0xb')](_0xfde5('0xc'),attributes,{'tableName':_0xfde5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf5aab7..3e77349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a3=['randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x298a2f,_0x42610d){var _0x2d36dd=function(_0x1c5b53){while(--_0x1c5b53){_0x298a2f['push'](_0x298a2f['shift']());}};_0x2d36dd(++_0x42610d);}(_0x62a3,0x75));var _0x362a=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x62a3[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x362a('0x0'));var util=require(_0x362a('0x1'));var moment=require('moment');var BPromise=require(_0x362a('0x2'));var rs=require(_0x362a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x362a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x362a('0x5'));var config=require(_0x362a('0x6'));var jayson=require(_0x362a('0x7'));var client=jayson['client'][_0x362a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4a1e22,_0x4c145d,_0xcfc6ea){return new BPromise(function(_0x3dbd55,_0xa83a6b){return client['request'](_0x4a1e22,_0xcfc6ea)[_0x362a('0x9')](function(_0x494958){logger[_0x362a('0xa')](_0x362a('0xb'),_0x4c145d,'request\x20sent');logger[_0x362a('0xc')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x4c145d,_0x362a('0xd'),JSON[_0x362a('0xe')](_0x494958));if(_0x494958['error']){if(_0x494958[_0x362a('0xf')][_0x362a('0x10')]===0x1f4){logger[_0x362a('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4c145d,_0x494958[_0x362a('0xf')][_0x362a('0x11')]);return _0xa83a6b(_0x494958[_0x362a('0xf')][_0x362a('0x11')]);}logger['error'](_0x362a('0xb'),_0x4c145d,_0x494958[_0x362a('0xf')]['message']);return _0x3dbd55(_0x494958[_0x362a('0xf')][_0x362a('0x11')]);}else{logger[_0x362a('0xa')](_0x362a('0xb'),_0x4c145d,'request\x20sent');_0x3dbd55(_0x494958[_0x362a('0x12')]['message']);}})[_0x362a('0x13')](function(_0xb9efe1){logger['error'](_0x362a('0xb'),_0x4c145d,_0xb9efe1);_0xa83a6b(_0xb9efe1);});});}
\ No newline at end of file
+var _0x27e6=['catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x447fe3,_0x5b5459){var _0x299497=function(_0x27cdf7){while(--_0x27cdf7){_0x447fe3['push'](_0x447fe3['shift']());}};_0x299497(++_0x5b5459);}(_0x27e6,0x17b));var _0x627e=function(_0x14846b,_0x4f3988){_0x14846b=_0x14846b-0x0;var _0x4a47f6=_0x27e6[_0x14846b];return _0x4a47f6;};'use strict';var _=require(_0x627e('0x0'));var util=require(_0x627e('0x1'));var moment=require('moment');var BPromise=require(_0x627e('0x2'));var rs=require(_0x627e('0x3'));var fs=require('fs');var Redis=require(_0x627e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x627e('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x627e('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2514cb,_0x4312e3,_0x4dce73){return new BPromise(function(_0x4c5d97,_0x343081){return client[_0x627e('0x7')](_0x2514cb,_0x4dce73)['then'](function(_0x4bd73c){logger[_0x627e('0x8')](_0x627e('0x9'),_0x4312e3,_0x627e('0xa'));logger[_0x627e('0xb')](_0x627e('0xc'),_0x4312e3,_0x627e('0xa'),JSON['stringify'](_0x4bd73c));if(_0x4bd73c[_0x627e('0xd')]){if(_0x4bd73c[_0x627e('0xd')][_0x627e('0xe')]===0x1f4){logger[_0x627e('0xd')](_0x627e('0x9'),_0x4312e3,_0x4bd73c[_0x627e('0xd')][_0x627e('0xf')]);return _0x343081(_0x4bd73c[_0x627e('0xd')][_0x627e('0xf')]);}logger[_0x627e('0xd')](_0x627e('0x9'),_0x4312e3,_0x4bd73c[_0x627e('0xd')][_0x627e('0xf')]);return _0x4c5d97(_0x4bd73c[_0x627e('0xd')][_0x627e('0xf')]);}else{logger['info'](_0x627e('0x9'),_0x4312e3,_0x627e('0xa'));_0x4c5d97(_0x4bd73c[_0x627e('0x10')][_0x627e('0xf')]);}})[_0x627e('0x11')](function(_0x127a3a){logger[_0x627e('0xd')](_0x627e('0x9'),_0x4312e3,_0x127a3a);_0x343081(_0x127a3a);});});}
\ No newline at end of file
index 2f4f35b..2ee8b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9181=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show'];(function(_0x5b76d4,_0x3e2e5b){var _0x26345e=function(_0x558d67){while(--_0x558d67){_0x5b76d4['push'](_0x5b76d4['shift']());}};_0x26345e(++_0x3e2e5b);}(_0x9181,0x182));var _0x1918=function(_0x369b2b,_0x388ef0){_0x369b2b=_0x369b2b-0x0;var _0x3500b5=_0x9181[_0x369b2b];return _0x3500b5;};'use strict';var multer=require(_0x1918('0x0'));var util=require(_0x1918('0x1'));var path=require(_0x1918('0x2'));var timeout=require(_0x1918('0x3'));var express=require(_0x1918('0x4'));var router=express['Router']();var fs_extra=require(_0x1918('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1918('0x6'));var config=require(_0x1918('0x7'));var controller=require(_0x1918('0x8'));router[_0x1918('0x9')]('/',auth[_0x1918('0xa')](),controller[_0x1918('0xb')]);router['get'](_0x1918('0xc'),auth['isAuthenticated'](),controller[_0x1918('0xd')]);router['post']('/',auth[_0x1918('0xa')](),controller[_0x1918('0xe')]);router[_0x1918('0xf')](_0x1918('0xc'),auth[_0x1918('0xa')](),controller[_0x1918('0x10')]);router[_0x1918('0x11')](_0x1918('0xc'),auth[_0x1918('0xa')](),controller[_0x1918('0x12')]);module[_0x1918('0x13')]=router;
\ No newline at end of file
+var _0x13c0=['../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service'];(function(_0x26158a,_0x35e5ab){var _0x1cf4ac=function(_0x37da77){while(--_0x37da77){_0x26158a['push'](_0x26158a['shift']());}};_0x1cf4ac(++_0x35e5ab);}(_0x13c0,0x79));var _0x013c=function(_0x1a6007,_0x350755){_0x1a6007=_0x1a6007-0x0;var _0x120665=_0x13c0[_0x1a6007];return _0x120665;};'use strict';var multer=require(_0x013c('0x0'));var util=require(_0x013c('0x1'));var path=require(_0x013c('0x2'));var timeout=require(_0x013c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x013c('0x4'));var interaction=require(_0x013c('0x5'));var config=require(_0x013c('0x6'));var controller=require(_0x013c('0x7'));router[_0x013c('0x8')]('/',auth[_0x013c('0x9')](),controller[_0x013c('0xa')]);router[_0x013c('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x013c('0xb')]('/',auth[_0x013c('0x9')](),controller['create']);router[_0x013c('0xc')](_0x013c('0xd'),auth[_0x013c('0x9')](),controller[_0x013c('0xe')]);router[_0x013c('0xf')](_0x013c('0xd'),auth[_0x013c('0x9')](),controller[_0x013c('0x10')]);module[_0x013c('0x11')]=router;
\ No newline at end of file
index e309423..8367501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b6=['name','sequelize','exports','STRING'];(function(_0x53bb25,_0x3cfaa1){var _0x354c11=function(_0x4a6002){while(--_0x4a6002){_0x53bb25['push'](_0x53bb25['shift']());}};_0x354c11(++_0x3cfaa1);}(_0x37b6,0x119));var _0x637b=function(_0x157f7f,_0x10a4fd){_0x157f7f=_0x157f7f-0x0;var _0x35d2c1=_0x37b6[_0x157f7f];return _0x35d2c1;};'use strict';var Sequelize=require(_0x637b('0x0'));module[_0x637b('0x1')]={'name':{'type':Sequelize[_0x637b('0x2')],'unique':_0x637b('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x637b('0x2')]}};
\ No newline at end of file
+var _0xd1f9=['STRING','name'];(function(_0x45bf7d,_0x1b848b){var _0x1fd524=function(_0x2803eb){while(--_0x2803eb){_0x45bf7d['push'](_0x45bf7d['shift']());}};_0x1fd524(++_0x1b848b);}(_0xd1f9,0x88));var _0x9d1f=function(_0x300c89,_0x25fcad){_0x300c89=_0x300c89-0x0;var _0x41762e=_0xd1f9[_0x300c89];return _0x41762e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9d1f('0x0')],'unique':_0x9d1f('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9d1f('0x0')]}};
\ No newline at end of file
index 97a1c11..8ef4b19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1652=['filter','merge','VIRTUAL','options','Variable','includeAll','findAll','catch','params','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','then','get','Variables','sendStatus','stack','name','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1cab63,_0x214a95){var _0x6870be=function(_0x37d082){while(--_0x37d082){_0x1cab63['push'](_0x1cab63['shift']());}};_0x6870be(++_0x214a95);}(_0x1652,0x67));var _0x2165=function(_0x4b54fb,_0x2150e4){_0x4b54fb=_0x4b54fb-0x0;var _0x375eb4=_0x1652[_0x4b54fb];return _0x375eb4;};'use strict';var emlformat=require(_0x2165('0x0'));var rimraf=require(_0x2165('0x1'));var zipdir=require(_0x2165('0x2'));var jsonpatch=require(_0x2165('0x3'));var rp=require(_0x2165('0x4'));var moment=require('moment');var BPromise=require(_0x2165('0x5'));var Mustache=require(_0x2165('0x6'));var util=require(_0x2165('0x7'));var path=require(_0x2165('0x8'));var sox=require(_0x2165('0x9'));var csv=require(_0x2165('0xa'));var ejs=require(_0x2165('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2165('0xc'));var squel=require(_0x2165('0xd'));var crypto=require(_0x2165('0xe'));var jsforce=require(_0x2165('0xf'));var deskjs=require(_0x2165('0x10'));var toCsv=require(_0x2165('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2165('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x2165('0x12'));var as=require(_0x2165('0x13'));var hardwareService=require(_0x2165('0x14'));var logger=require(_0x2165('0x15'))('api');var utils=require(_0x2165('0x16'));var config=require(_0x2165('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2165('0x18'))['db'];function respondWithStatusCode(_0x593760,_0x4e5e29){_0x4e5e29=_0x4e5e29||0xcc;return function(_0x574135){if(_0x574135){return _0x593760['sendStatus'](_0x4e5e29);}return _0x593760['status'](_0x4e5e29)[_0x2165('0x19')]();};}function respondWithResult(_0x49f2ea,_0x40a477){_0x40a477=_0x40a477||0xc8;return function(_0x2e05a5){if(_0x2e05a5){return _0x49f2ea[_0x2165('0x1a')](_0x40a477)['json'](_0x2e05a5);}};}function respondWithFilteredResult(_0xb44795,_0x1c363a){return function(_0x77cf1){if(_0x77cf1){var _0x23a71a=typeof _0x1c363a[_0x2165('0x1b')]===_0x2165('0x1c')&&typeof _0x1c363a[_0x2165('0x1d')]===_0x2165('0x1c');var _0x442fa4=_0x77cf1['count'];var _0x5ecf78=_0x23a71a?0x0:_0x1c363a[_0x2165('0x1b')];var _0x18b28f=_0x23a71a?_0x77cf1[_0x2165('0x1e')]:_0x1c363a[_0x2165('0x1b')]+_0x1c363a['limit'];var _0x19c65a;if(_0x18b28f>=_0x442fa4){_0x18b28f=_0x442fa4;_0x19c65a=0xc8;}else{_0x19c65a=0xce;}_0xb44795[_0x2165('0x1a')](_0x19c65a);return _0xb44795[_0x2165('0x1f')]('Content-Range',_0x5ecf78+'-'+_0x18b28f+'/'+_0x442fa4)[_0x2165('0x20')](_0x77cf1);}return null;};}function patchUpdates(_0x59ac7e){return function(_0x159845){try{jsonpatch[_0x2165('0x21')](_0x159845,_0x59ac7e,!![]);}catch(_0x51344a){return BPromise[_0x2165('0x22')](_0x51344a);}return _0x159845[_0x2165('0x23')]();};}function saveUpdates(_0x283b65,_0x444229){return function(_0xdb389f){if(_0xdb389f){return _0xdb389f[_0x2165('0x24')](_0x283b65)['then'](function(_0x12da07){return _0x12da07;});}return null;};}function removeEntity(_0x1a62d7,_0x15c587){return function(_0x328938){if(_0x328938){return _0x328938[_0x2165('0x25')]()[_0x2165('0x26')](function(){var _0x21df48=_0x328938[_0x2165('0x27')]({'plain':!![]});var _0x4d7adb=_0x2165('0x28');return db['UserProfileResource'][_0x2165('0x25')]({'where':{'type':_0x4d7adb,'resourceId':_0x21df48['id']}})[_0x2165('0x26')](function(){return _0x328938;});})[_0x2165('0x26')](function(){_0x1a62d7['status'](0xcc)[_0x2165('0x19')]();});}};}function handleEntityNotFound(_0x194251,_0x178db5){return function(_0x1a8278){if(!_0x1a8278){_0x194251[_0x2165('0x29')](0x194);}return _0x1a8278;};}function handleError(_0x337021,_0x525747){_0x525747=_0x525747||0x1f4;return function(_0x51d9f3){logger['error'](_0x51d9f3[_0x2165('0x2a')]);if(_0x51d9f3[_0x2165('0x2b')]){delete _0x51d9f3[_0x2165('0x2b')];}_0x337021[_0x2165('0x1a')](_0x525747)['send'](_0x51d9f3);};}exports[_0x2165('0x2c')]=function(_0x522a9f,_0x3f6fd3){var _0x5281d2={},_0x5e8b1b={},_0x12e65c={'count':0x0,'rows':[]};var _0x3b6f89=_[_0x2165('0x2d')](db['Variable']['rawAttributes'],function(_0x29945b){return{'name':_0x29945b[_0x2165('0x2e')],'type':_0x29945b[_0x2165('0x2f')][_0x2165('0x30')]};});_0x5e8b1b[_0x2165('0x31')]=_[_0x2165('0x2d')](_0x3b6f89,'name');_0x5e8b1b['query']=_[_0x2165('0x32')](_0x522a9f[_0x2165('0x33')]);_0x5e8b1b[_0x2165('0x34')]=_[_0x2165('0x35')](_0x5e8b1b[_0x2165('0x31')],_0x5e8b1b[_0x2165('0x33')]);_0x5281d2[_0x2165('0x36')]=_['intersection'](_0x5e8b1b[_0x2165('0x31')],qs[_0x2165('0x37')](_0x522a9f['query'][_0x2165('0x37')]));_0x5281d2[_0x2165('0x36')]=_0x5281d2['attributes'][_0x2165('0x38')]?_0x5281d2[_0x2165('0x36')]:_0x5e8b1b[_0x2165('0x31')];if(!_0x522a9f[_0x2165('0x33')][_0x2165('0x39')](_0x2165('0x3a'))){_0x5281d2[_0x2165('0x1d')]=qs[_0x2165('0x1d')](_0x522a9f['query'][_0x2165('0x1d')]);_0x5281d2[_0x2165('0x1b')]=qs[_0x2165('0x1b')](_0x522a9f[_0x2165('0x33')][_0x2165('0x1b')]);}_0x5281d2[_0x2165('0x3b')]=qs['sort'](_0x522a9f[_0x2165('0x33')][_0x2165('0x3c')]);_0x5281d2[_0x2165('0x3d')]=qs[_0x2165('0x34')](_[_0x2165('0x3e')](_0x522a9f[_0x2165('0x33')],_0x5e8b1b[_0x2165('0x34')]),_0x3b6f89);if(_0x522a9f[_0x2165('0x33')][_0x2165('0x3f')]){_0x5281d2[_0x2165('0x3d')]=_[_0x2165('0x40')](_0x5281d2[_0x2165('0x3d')],{'$or':_[_0x2165('0x2d')](_0x3b6f89,function(_0x2de05a){if(_0x2de05a[_0x2165('0x2f')]!==_0x2165('0x41')){var _0x2183fd={};_0x2183fd[_0x2de05a[_0x2165('0x2b')]]={'$like':'%'+_0x522a9f['query'][_0x2165('0x3f')]+'%'};return _0x2183fd;}})});}_0x5281d2=_['merge']({},_0x5281d2,_0x522a9f[_0x2165('0x42')]);var _0x4124af={'where':_0x5281d2['where']};return db[_0x2165('0x43')][_0x2165('0x1e')](_0x4124af)[_0x2165('0x26')](function(_0x3ab3dc){_0x12e65c[_0x2165('0x1e')]=_0x3ab3dc;if(_0x522a9f[_0x2165('0x33')][_0x2165('0x44')]){_0x5281d2['include']=[{'all':!![]}];}return db[_0x2165('0x43')][_0x2165('0x45')](_0x5281d2);})[_0x2165('0x26')](function(_0xf4c869){_0x12e65c['rows']=_0xf4c869;return _0x12e65c;})[_0x2165('0x26')](respondWithFilteredResult(_0x3f6fd3,_0x5281d2))[_0x2165('0x46')](handleError(_0x3f6fd3,null));};exports['show']=function(_0x107cbf,_0x2976e4){var _0x40fdad={'raw':!![],'where':{'id':_0x107cbf[_0x2165('0x47')]['id']}},_0xf1025a={};_0xf1025a[_0x2165('0x31')]=_[_0x2165('0x32')](db[_0x2165('0x43')][_0x2165('0x48')]);_0xf1025a[_0x2165('0x33')]=_[_0x2165('0x32')](_0x107cbf['query']);_0xf1025a[_0x2165('0x34')]=_[_0x2165('0x35')](_0xf1025a['model'],_0xf1025a[_0x2165('0x33')]);_0x40fdad[_0x2165('0x36')]=_[_0x2165('0x35')](_0xf1025a[_0x2165('0x31')],qs['fields'](_0x107cbf[_0x2165('0x33')][_0x2165('0x37')]));_0x40fdad[_0x2165('0x36')]=_0x40fdad[_0x2165('0x36')][_0x2165('0x38')]?_0x40fdad['attributes']:_0xf1025a[_0x2165('0x31')];if(_0x107cbf[_0x2165('0x33')][_0x2165('0x44')]){_0x40fdad[_0x2165('0x49')]=[{'all':!![]}];}_0x40fdad=_['merge']({},_0x40fdad,_0x107cbf[_0x2165('0x42')]);return db[_0x2165('0x43')][_0x2165('0x4a')](_0x40fdad)[_0x2165('0x26')](handleEntityNotFound(_0x2976e4,null))[_0x2165('0x26')](respondWithResult(_0x2976e4,null))[_0x2165('0x46')](handleError(_0x2976e4,null));};exports['create']=function(_0x519048,_0x21b498){return db[_0x2165('0x43')][_0x2165('0x4b')](_0x519048[_0x2165('0x4c')],{})[_0x2165('0x26')](function(_0x39e919){var _0x36fd94=_0x519048[_0x2165('0x4d')]['get']({'plain':!![]});if(!_0x36fd94)throw new Error(_0x2165('0x4e'));if(_0x36fd94[_0x2165('0x4f')]===_0x2165('0x4d')){var _0x1fddd1=_0x39e919[_0x2165('0x27')]({'plain':!![]});var _0xdc508a=_0x2165('0x28');return db['UserProfileSection'][_0x2165('0x4a')]({'where':{'name':_0xdc508a,'userProfileId':_0x36fd94['userProfileId']},'raw':!![]})[_0x2165('0x26')](function(_0x335e5e){if(_0x335e5e&&_0x335e5e[_0x2165('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x1fddd1[_0x2165('0x2b')],'resourceId':_0x1fddd1['id'],'type':_0x335e5e[_0x2165('0x2b')],'sectionId':_0x335e5e['id']},{})['then'](function(){return _0x39e919;});}else{return _0x39e919;}})['catch'](function(_0xccfd60){logger[_0x2165('0x51')](_0x2165('0x52'),_0xccfd60);throw _0xccfd60;});}return _0x39e919;})[_0x2165('0x26')](respondWithResult(_0x21b498,0xc9))[_0x2165('0x46')](handleError(_0x21b498,null));};exports['update']=function(_0x2d1eb2,_0x439e59){if(_0x2d1eb2[_0x2165('0x4c')]['id']){delete _0x2d1eb2[_0x2165('0x4c')]['id'];}return db[_0x2165('0x43')][_0x2165('0x4a')]({'where':{'id':_0x2d1eb2[_0x2165('0x47')]['id']}})[_0x2165('0x26')](handleEntityNotFound(_0x439e59,null))['then'](saveUpdates(_0x2d1eb2[_0x2165('0x4c')],null))[_0x2165('0x26')](respondWithResult(_0x439e59,null))[_0x2165('0x46')](handleError(_0x439e59,null));};exports[_0x2165('0x25')]=function(_0xa82f4c,_0x3937c0){return db['Variable'][_0x2165('0x4a')]({'where':{'id':_0xa82f4c[_0x2165('0x47')]['id']}})[_0x2165('0x26')](handleEntityNotFound(_0x3937c0,null))[_0x2165('0x26')](removeEntity(_0x3937c0,null))['catch'](handleError(_0x3937c0,null));};
\ No newline at end of file
+var _0x18ea=['findAll','catch','show','params','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','Variables','UserProfileResource','stack','name','index','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','map','VIRTUAL','options','includeAll','Variable'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x18ea,0x1a9));var _0xa18e=function(_0x3e7073,_0xf168bf){_0x3e7073=_0x3e7073-0x0;var _0x203091=_0x18ea[_0x3e7073];return _0x203091;};'use strict';var emlformat=require(_0xa18e('0x0'));var rimraf=require(_0xa18e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa18e('0x2'));var rp=require(_0xa18e('0x3'));var moment=require('moment');var BPromise=require(_0xa18e('0x4'));var Mustache=require(_0xa18e('0x5'));var util=require('util');var path=require(_0xa18e('0x6'));var sox=require(_0xa18e('0x7'));var csv=require(_0xa18e('0x8'));var ejs=require(_0xa18e('0x9'));var fs=require('fs');var fs_extra=require(_0xa18e('0xa'));var _=require(_0xa18e('0xb'));var squel=require(_0xa18e('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa18e('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa18e('0xe'));var Papa=require(_0xa18e('0xf'));var Redis=require(_0xa18e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa18e('0x11'));var as=require(_0xa18e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa18e('0x13'))(_0xa18e('0x14'));var utils=require('../../config/utils');var config=require(_0xa18e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa18e('0x16'))['db'];function respondWithStatusCode(_0x44cbd4,_0x452d4b){_0x452d4b=_0x452d4b||0xcc;return function(_0x160b2b){if(_0x160b2b){return _0x44cbd4[_0xa18e('0x17')](_0x452d4b);}return _0x44cbd4[_0xa18e('0x18')](_0x452d4b)[_0xa18e('0x19')]();};}function respondWithResult(_0x4f5236,_0x142fed){_0x142fed=_0x142fed||0xc8;return function(_0x272347){if(_0x272347){return _0x4f5236['status'](_0x142fed)[_0xa18e('0x1a')](_0x272347);}};}function respondWithFilteredResult(_0xfeab43,_0x161969){return function(_0x35a7bc){if(_0x35a7bc){var _0xa927e=typeof _0x161969[_0xa18e('0x1b')]===_0xa18e('0x1c')&&typeof _0x161969[_0xa18e('0x1d')]===_0xa18e('0x1c');var _0x1abb94=_0x35a7bc[_0xa18e('0x1e')];var _0x10e104=_0xa927e?0x0:_0x161969[_0xa18e('0x1b')];var _0x5c0376=_0xa927e?_0x35a7bc[_0xa18e('0x1e')]:_0x161969[_0xa18e('0x1b')]+_0x161969[_0xa18e('0x1d')];var _0x2810a1;if(_0x5c0376>=_0x1abb94){_0x5c0376=_0x1abb94;_0x2810a1=0xc8;}else{_0x2810a1=0xce;}_0xfeab43[_0xa18e('0x18')](_0x2810a1);return _0xfeab43[_0xa18e('0x1f')]('Content-Range',_0x10e104+'-'+_0x5c0376+'/'+_0x1abb94)[_0xa18e('0x1a')](_0x35a7bc);}return null;};}function patchUpdates(_0x2c1931){return function(_0x3ef0f0){try{jsonpatch[_0xa18e('0x20')](_0x3ef0f0,_0x2c1931,!![]);}catch(_0x22c39b){return BPromise[_0xa18e('0x21')](_0x22c39b);}return _0x3ef0f0[_0xa18e('0x22')]();};}function saveUpdates(_0x4654dc,_0x5bab58){return function(_0x5d7622){if(_0x5d7622){return _0x5d7622[_0xa18e('0x23')](_0x4654dc)[_0xa18e('0x24')](function(_0x4b964b){return _0x4b964b;});}return null;};}function removeEntity(_0xf32071,_0x434aa){return function(_0x46026b){if(_0x46026b){return _0x46026b[_0xa18e('0x25')]()[_0xa18e('0x24')](function(){var _0x4dd4cb=_0x46026b['get']({'plain':!![]});var _0x564840=_0xa18e('0x26');return db[_0xa18e('0x27')]['destroy']({'where':{'type':_0x564840,'resourceId':_0x4dd4cb['id']}})[_0xa18e('0x24')](function(){return _0x46026b;});})[_0xa18e('0x24')](function(){_0xf32071[_0xa18e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5106ee,_0x384899){return function(_0x9ab899){if(!_0x9ab899){_0x5106ee[_0xa18e('0x17')](0x194);}return _0x9ab899;};}function handleError(_0x1862a9,_0x192d1f){_0x192d1f=_0x192d1f||0x1f4;return function(_0xd9ddae){logger['error'](_0xd9ddae[_0xa18e('0x28')]);if(_0xd9ddae[_0xa18e('0x29')]){delete _0xd9ddae[_0xa18e('0x29')];}_0x1862a9[_0xa18e('0x18')](_0x192d1f)['send'](_0xd9ddae);};}exports[_0xa18e('0x2a')]=function(_0x33bb0d,_0x230b8f){var _0x35edce={},_0x4734ba={},_0x59e2a0={'count':0x0,'rows':[]};var _0x359efc=_['map'](db['Variable'][_0xa18e('0x2b')],function(_0x97d386){return{'name':_0x97d386[_0xa18e('0x2c')],'type':_0x97d386[_0xa18e('0x2d')][_0xa18e('0x2e')]};});_0x4734ba[_0xa18e('0x2f')]=_['map'](_0x359efc,_0xa18e('0x29'));_0x4734ba['query']=_[_0xa18e('0x30')](_0x33bb0d[_0xa18e('0x31')]);_0x4734ba['filters']=_[_0xa18e('0x32')](_0x4734ba['model'],_0x4734ba['query']);_0x35edce[_0xa18e('0x33')]=_[_0xa18e('0x32')](_0x4734ba['model'],qs[_0xa18e('0x34')](_0x33bb0d['query'][_0xa18e('0x34')]));_0x35edce[_0xa18e('0x33')]=_0x35edce['attributes'][_0xa18e('0x35')]?_0x35edce[_0xa18e('0x33')]:_0x4734ba[_0xa18e('0x2f')];if(!_0x33bb0d[_0xa18e('0x31')][_0xa18e('0x36')](_0xa18e('0x37'))){_0x35edce[_0xa18e('0x1d')]=qs[_0xa18e('0x1d')](_0x33bb0d[_0xa18e('0x31')][_0xa18e('0x1d')]);_0x35edce[_0xa18e('0x1b')]=qs['offset'](_0x33bb0d[_0xa18e('0x31')][_0xa18e('0x1b')]);}_0x35edce[_0xa18e('0x38')]=qs[_0xa18e('0x39')](_0x33bb0d[_0xa18e('0x31')][_0xa18e('0x39')]);_0x35edce['where']=qs[_0xa18e('0x3a')](_['pick'](_0x33bb0d[_0xa18e('0x31')],_0x4734ba['filters']),_0x359efc);if(_0x33bb0d['query'][_0xa18e('0x3b')]){_0x35edce['where']=_[_0xa18e('0x3c')](_0x35edce[_0xa18e('0x3d')],{'$or':_[_0xa18e('0x3e')](_0x359efc,function(_0x3b6075){if(_0x3b6075[_0xa18e('0x2d')]!==_0xa18e('0x3f')){var _0x104722={};_0x104722[_0x3b6075[_0xa18e('0x29')]]={'$like':'%'+_0x33bb0d['query'][_0xa18e('0x3b')]+'%'};return _0x104722;}})});}_0x35edce=_[_0xa18e('0x3c')]({},_0x35edce,_0x33bb0d[_0xa18e('0x40')]);var _0x3c81b8={'where':_0x35edce[_0xa18e('0x3d')]};return db['Variable'][_0xa18e('0x1e')](_0x3c81b8)[_0xa18e('0x24')](function(_0x3d1dc7){_0x59e2a0[_0xa18e('0x1e')]=_0x3d1dc7;if(_0x33bb0d[_0xa18e('0x31')][_0xa18e('0x41')]){_0x35edce['include']=[{'all':!![]}];}return db[_0xa18e('0x42')][_0xa18e('0x43')](_0x35edce);})[_0xa18e('0x24')](function(_0x12401e){_0x59e2a0['rows']=_0x12401e;return _0x59e2a0;})[_0xa18e('0x24')](respondWithFilteredResult(_0x230b8f,_0x35edce))[_0xa18e('0x44')](handleError(_0x230b8f,null));};exports[_0xa18e('0x45')]=function(_0x5697a2,_0x129c2e){var _0x223317={'raw':!![],'where':{'id':_0x5697a2[_0xa18e('0x46')]['id']}},_0x2eb6b3={};_0x2eb6b3[_0xa18e('0x2f')]=_[_0xa18e('0x30')](db[_0xa18e('0x42')][_0xa18e('0x2b')]);_0x2eb6b3[_0xa18e('0x31')]=_[_0xa18e('0x30')](_0x5697a2[_0xa18e('0x31')]);_0x2eb6b3['filters']=_[_0xa18e('0x32')](_0x2eb6b3['model'],_0x2eb6b3[_0xa18e('0x31')]);_0x223317['attributes']=_['intersection'](_0x2eb6b3['model'],qs[_0xa18e('0x34')](_0x5697a2[_0xa18e('0x31')][_0xa18e('0x34')]));_0x223317[_0xa18e('0x33')]=_0x223317[_0xa18e('0x33')]['length']?_0x223317[_0xa18e('0x33')]:_0x2eb6b3[_0xa18e('0x2f')];if(_0x5697a2['query']['includeAll']){_0x223317[_0xa18e('0x47')]=[{'all':!![]}];}_0x223317=_[_0xa18e('0x3c')]({},_0x223317,_0x5697a2[_0xa18e('0x40')]);return db['Variable'][_0xa18e('0x48')](_0x223317)[_0xa18e('0x24')](handleEntityNotFound(_0x129c2e,null))['then'](respondWithResult(_0x129c2e,null))[_0xa18e('0x44')](handleError(_0x129c2e,null));};exports[_0xa18e('0x49')]=function(_0xa5c41a,_0x5dff68){return db['Variable'][_0xa18e('0x49')](_0xa5c41a['body'],{})[_0xa18e('0x24')](function(_0x1faf80){var _0x55b92e=_0xa5c41a[_0xa18e('0x4a')][_0xa18e('0x4b')]({'plain':!![]});if(!_0x55b92e)throw new Error(_0xa18e('0x4c'));if(_0x55b92e['role']===_0xa18e('0x4a')){var _0x9fd5f1=_0x1faf80[_0xa18e('0x4b')]({'plain':!![]});var _0xeff2d2=_0xa18e('0x26');return db[_0xa18e('0x4d')][_0xa18e('0x48')]({'where':{'name':_0xeff2d2,'userProfileId':_0x55b92e[_0xa18e('0x4e')]},'raw':!![]})[_0xa18e('0x24')](function(_0x21332f){if(_0x21332f&&_0x21332f[_0xa18e('0x4f')]===0x0){return db['UserProfileResource'][_0xa18e('0x49')]({'name':_0x9fd5f1[_0xa18e('0x29')],'resourceId':_0x9fd5f1['id'],'type':_0x21332f[_0xa18e('0x29')],'sectionId':_0x21332f['id']},{})[_0xa18e('0x24')](function(){return _0x1faf80;});}else{return _0x1faf80;}})['catch'](function(_0x193799){logger[_0xa18e('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x193799);throw _0x193799;});}return _0x1faf80;})[_0xa18e('0x24')](respondWithResult(_0x5dff68,0xc9))[_0xa18e('0x44')](handleError(_0x5dff68,null));};exports[_0xa18e('0x23')]=function(_0x2e993d,_0x10b859){if(_0x2e993d[_0xa18e('0x51')]['id']){delete _0x2e993d[_0xa18e('0x51')]['id'];}return db['Variable']['find']({'where':{'id':_0x2e993d[_0xa18e('0x46')]['id']}})[_0xa18e('0x24')](handleEntityNotFound(_0x10b859,null))[_0xa18e('0x24')](saveUpdates(_0x2e993d[_0xa18e('0x51')],null))[_0xa18e('0x24')](respondWithResult(_0x10b859,null))['catch'](handleError(_0x10b859,null));};exports[_0xa18e('0x25')]=function(_0x535bb0,_0x48d519){return db[_0xa18e('0x42')][_0xa18e('0x48')]({'where':{'id':_0x535bb0[_0xa18e('0x46')]['id']}})[_0xa18e('0x24')](handleEntityNotFound(_0x48d519,null))[_0xa18e('0x24')](removeEntity(_0x48d519,null))['catch'](handleError(_0x48d519,null));};
\ No newline at end of file
index a0afb3f..248612c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57f=['rimraf','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x41ca16,_0x29cb26){var _0x47de94=function(_0x245bb1){while(--_0x245bb1){_0x41ca16['push'](_0x41ca16['shift']());}};_0x47de94(++_0x29cb26);}(_0xb57f,0xdd));var _0xfb57=function(_0x17de69,_0x569ea9){_0x17de69=_0x17de69-0x0;var _0x21ab60=_0xb57f[_0x17de69];return _0x21ab60;};'use strict';var _=require(_0xfb57('0x0'));var util=require(_0xfb57('0x1'));var logger=require(_0xfb57('0x2'))('api');var moment=require(_0xfb57('0x3'));var BPromise=require(_0xfb57('0x4'));var rp=require(_0xfb57('0x5'));var fs=require('fs');var path=require(_0xfb57('0x6'));var rimraf=require(_0xfb57('0x7'));var config=require('../../config/environment');var attributes=require(_0xfb57('0x8'));module[_0xfb57('0x9')]=function(_0x500fa3,_0x2e05f8){return _0x500fa3[_0xfb57('0xa')]('Variable',attributes,{'tableName':_0xfb57('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90a3=['exports','Variable','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./variable.attributes'];(function(_0x434dff,_0x9c4def){var _0x2c3c68=function(_0x348b77){while(--_0x348b77){_0x434dff['push'](_0x434dff['shift']());}};_0x2c3c68(++_0x9c4def);}(_0x90a3,0xe8));var _0x390a=function(_0x211a98,_0x19ccdc){_0x211a98=_0x211a98-0x0;var _0x547690=_0x90a3[_0x211a98];return _0x547690;};'use strict';var _=require(_0x390a('0x0'));var util=require('util');var logger=require(_0x390a('0x1'))(_0x390a('0x2'));var moment=require(_0x390a('0x3'));var BPromise=require('bluebird');var rp=require(_0x390a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x390a('0x5'));var config=require(_0x390a('0x6'));var attributes=require(_0x390a('0x7'));module[_0x390a('0x8')]=function(_0x342cfc,_0x1e6dfd){return _0x342cfc['define'](_0x390a('0x9'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ad22af2..13300d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x4dcecc,_0x3865b9){var _0x2aa658=function(_0x334d85){while(--_0x334d85){_0x4dcecc['push'](_0x4dcecc['shift']());}};_0x2aa658(++_0x3865b9);}(_0x5fc3,0xa8));var _0x35fc=function(_0x245afe,_0x319cde){_0x245afe=_0x245afe-0x0;var _0x4eefde=_0x5fc3[_0x245afe];return _0x4eefde;};'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')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\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']('Variable,\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);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
+var _0xa41a=['debug','Variable,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowVariable','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent'];(function(_0x138f59,_0x1b53fb){var _0x3d114d=function(_0x1f9461){while(--_0x1f9461){_0x138f59['push'](_0x138f59['shift']());}};_0x3d114d(++_0x1b53fb);}(_0xa41a,0x6b));var _0xaa41=function(_0x24697c,_0x1ff07b){_0x24697c=_0x24697c-0x0;var _0x548c8b=_0xa41a[_0x24697c];return _0x548c8b;};'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);});});}exports[_0xaa41('0x17')]=function(_0xd20ddf){var _0x29efe5=this;return new Promise(function(_0x46e6d3,_0x150ddf){return db['Variable']['find']({'raw':_0xd20ddf[_0xaa41('0x18')]?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x19')]===undefined?!![]:![]:!![],'where':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1a')]||null:null,'attributes':_0xd20ddf['options']?_0xd20ddf['options'][_0xaa41('0x1b')]||null:null,'include':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')],function(_0x4eb01f){return{'model':db[_0x4eb01f[_0xaa41('0x1e')]],'as':_0x4eb01f['as'],'attributes':_0x4eb01f[_0xaa41('0x1b')],'include':_0x4eb01f[_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0x4eb01f[_0xaa41('0x1c')],function(_0xa1f024){return{'model':db[_0xa1f024['model']],'as':_0xa1f024['as'],'attributes':_0xa1f024['attributes'],'include':_0xa1f024[_0xaa41('0x1c')]?_['map'](_0xa1f024['include'],function(_0x12e362){return{'model':db[_0x12e362['model']],'as':_0x12e362['as'],'attributes':_0x12e362['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa41('0xd')](function(_0x9c8c21){logger[_0xaa41('0xe')](_0xaa41('0x17'),_0xd20ddf);logger[_0xaa41('0x11')](_0xaa41('0x17'),_0xd20ddf,JSON['stringify'](_0x9c8c21));_0x46e6d3(_0x9c8c21);})[_0xaa41('0x16')](function(_0x1f0275){logger[_0xaa41('0x13')](_0xaa41('0x17'),_0x1f0275[_0xaa41('0x14')],_0xd20ddf);_0x150ddf(_0x29efe5[_0xaa41('0x13')](0x1f4,_0x1f0275[_0xaa41('0x14')]));});});};
\ No newline at end of file
index f478745..3649287 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3b3=['../../components/auth/service','get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset','/pull','/restart','restart','Router'];(function(_0x4dfe67,_0x2ad336){var _0x40bf2b=function(_0x20fe18){while(--_0x20fe18){_0x4dfe67['push'](_0x4dfe67['shift']());}};_0x40bf2b(++_0x2ad336);}(_0xd3b3,0x113));var _0x3d3b=function(_0x72ee00,_0x4f9a0c){_0x72ee00=_0x72ee00-0x0;var _0x4da881=_0xd3b3[_0x72ee00];return _0x4da881;};'use strict';var express=require('express');var router=express[_0x3d3b('0x0')]();var auth=require(_0x3d3b('0x1'));var controller=require('./version.controller');router[_0x3d3b('0x2')]('/',controller[_0x3d3b('0x3')]);router[_0x3d3b('0x2')](_0x3d3b('0x4'),auth[_0x3d3b('0x5')](),auth[_0x3d3b('0x6')](),controller[_0x3d3b('0x7')]);router['get'](_0x3d3b('0x8'),auth['isAuthenticated'](),auth['canUpdate'](),controller['reset']);router[_0x3d3b('0x2')](_0x3d3b('0x9'),auth['isAuthenticated'](),auth[_0x3d3b('0x6')](),controller['pull']);router[_0x3d3b('0x2')](_0x3d3b('0xa'),auth['isAuthenticated'](),controller[_0x3d3b('0xb')]);router[_0x3d3b('0x2')]('/migrations',controller['migrations']);module['exports']=router;
\ No newline at end of file
+var _0xd91f=['/reset','reset','/pull','restart','migrations','exports','Router','../../components/auth/service','get','/fetch','isAuthenticated','canUpdate','fetch'];(function(_0x546486,_0x562578){var _0xa48f0b=function(_0x1a9f17){while(--_0x1a9f17){_0x546486['push'](_0x546486['shift']());}};_0xa48f0b(++_0x562578);}(_0xd91f,0x117));var _0xfd91=function(_0xb1cf84,_0x813740){_0xb1cf84=_0xb1cf84-0x0;var _0x4bad2e=_0xd91f[_0xb1cf84];return _0x4bad2e;};'use strict';var express=require('express');var router=express[_0xfd91('0x0')]();var auth=require(_0xfd91('0x1'));var controller=require('./version.controller');router[_0xfd91('0x2')]('/',controller['index']);router[_0xfd91('0x2')](_0xfd91('0x3'),auth[_0xfd91('0x4')](),auth[_0xfd91('0x5')](),controller[_0xfd91('0x6')]);router[_0xfd91('0x2')](_0xfd91('0x7'),auth[_0xfd91('0x4')](),auth[_0xfd91('0x5')](),controller[_0xfd91('0x8')]);router['get'](_0xfd91('0x9'),auth[_0xfd91('0x4')](),auth[_0xfd91('0x5')](),controller['pull']);router[_0xfd91('0x2')]('/restart',auth[_0xfd91('0x4')](),controller[_0xfd91('0xa')]);router[_0xfd91('0x2')]('/migrations',controller[_0xfd91('0xb')]);module[_0xfd91('0xc')]=router;
\ No newline at end of file
index 21ae763..e63f50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe04e=['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','last','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','index','query','latest','fetch','tags','exports','2.0.0','status','json','origin','master','error','info','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','catch','migrations','readdirSync','join','root','server','.js','push','sort','sequelize'];(function(_0x4385b4,_0x42a716){var _0x140528=function(_0x20591e){while(--_0x20591e){_0x4385b4['push'](_0x4385b4['shift']());}};_0x140528(++_0x42a716);}(_0xe04e,0x114));var _0xee04=function(_0x12cdf2,_0x436faa){_0x12cdf2=_0x12cdf2-0x0;var _0x94e4bd=_0xe04e[_0x12cdf2];return _0x94e4bd;};'use strict';var Umzug=require(_0xee04('0x0'));var path=require(_0xee04('0x1'));var fs=require('fs');var _=require(_0xee04('0x2'));var pkginfo=require(_0xee04('0x3'))(module,_0xee04('0x4'));var compareVersions=require(_0xee04('0x5'));var exec=require(_0xee04('0x6'))[_0xee04('0x7')];var db=require(_0xee04('0x8'))['db'];var config=require(_0xee04('0x9'));var pm2=require(_0xee04('0xa'));var logger=require(_0xee04('0xb'))(_0xee04('0xc'));var git=require(_0xee04('0xd'))(config['root']);exports[_0xee04('0xe')]=function(_0x1591df,_0x5401a6){var _0x48c915={'current':module['exports'][_0xee04('0x4')],'phonebar':0x2};if(_0x1591df[_0xee04('0xf')]&&_0x1591df[_0xee04('0xf')][_0xee04('0x10')]){return git[_0xee04('0x11')]()[_0xee04('0x12')](function(_0x33477c,_0x52a398){_0x48c915['latest']=(_0x33477c?module[_0xee04('0x13')]['version']:_0x52a398[_0xee04('0x10')])||_0xee04('0x14');return _0x5401a6[_0xee04('0x15')](0xc8)[_0xee04('0x16')](_0x48c915);});}else{return _0x5401a6['status'](0xc8)[_0xee04('0x16')](_0x48c915);}};exports[_0xee04('0x11')]=function(_0x516e6f,_0x4748c6){return git[_0xee04('0x11')]([_0xee04('0x17'),_0xee04('0x18')],function(_0x19c77d){if(_0x19c77d){logger[_0xee04('0x19')](_0x19c77d);return _0x4748c6[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x19c77d);}logger[_0xee04('0x1a')](_0xee04('0x1b'));return _0x4748c6[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0xee04('0x1c')]=function(_0x2ab91f,_0x4947a0){return git[_0xee04('0x1c')]([_0xee04('0x1d'),_0xee04('0x1e')],function(_0x11e275){if(_0x11e275){logger['error'](_0x11e275);return _0x4947a0[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x11e275);}logger[_0xee04('0x1a')](_0xee04('0x1f'));return _0x4947a0[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':_0xee04('0x20')});});};exports[_0xee04('0x21')]=function(_0x3eec89,_0x1ba76e){exec(_0xee04('0x22'),function(_0x1d889d,_0x157b93,_0xadb6f6){logger[_0xee04('0x1a')](_0x157b93);logger[_0xee04('0x1a')](_0xadb6f6);if(_0x1d889d){logger[_0xee04('0x19')](_0x1d889d);return _0x1ba76e[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x1d889d);}return _0x1ba76e[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':_0x157b93});});};exports['restart']=function(_0x3014cb,_0x5d1ee8){return pm2[_0xee04('0x23')](_0xee04('0x24'))[_0xee04('0x25')](function(_0x5c123e){logger[_0xee04('0x1a')]('pm2\x20restart\x20motion\x20%s',_0x5c123e);return _0x5d1ee8[_0xee04('0x15')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xee04('0x26')](function(_0x22bac5){logger[_0xee04('0x19')](_0x22bac5);return _0x5d1ee8[_0xee04('0x15')](0x1f4)[_0xee04('0x16')](_0x22bac5);});};exports[_0xee04('0x27')]=function(_0x4877e6,_0x414b99){var _0x2678f9=fs[_0xee04('0x28')](path[_0xee04('0x29')](config[_0xee04('0x2a')],_0xee04('0x2b'),_0xee04('0x27')));var _0xd219c7=[];for(var _0x2ac1ff=0x0;_0x2ac1ff<_0x2678f9['length'];_0x2ac1ff++){var _0x1187fe=_0x2678f9[_0x2ac1ff]['replace'](_0xee04('0x2c'),'');if(compareVersions(module[_0xee04('0x13')][_0xee04('0x4')],_0x1187fe)===-0x1){_0xd219c7[_0xee04('0x2d')](_0x1187fe);}}if(_0xd219c7['length']){var _0x1ba122=_0xd219c7[_0xee04('0x2e')](compareVersions);var _0x375294=new Umzug({'storage':_0xee04('0x2f'),'storageOptions':{'model':db[_0xee04('0x30')],'modelName':_0xee04('0x30'),'columnName':_0xee04('0x4')},'migrations':{'params':[db[_0xee04('0x2f')][_0xee04('0x31')](),db[_0xee04('0x2f')][_0xee04('0x32')],function(){throw new Error(_0xee04('0x33'));}],'path':path['join'](config[_0xee04('0x2a')],'server',_0xee04('0x27')),'pattern':/\.js$/}});_0x375294['up']({'migrations':_[_0xee04('0x34')](_0x1ba122,function(_0xb44896){return _0xb44896+_0xee04('0x2c');})})[_0xee04('0x25')](function(){return _0x414b99[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0xee04('0x13')][_0xee04('0x4')]+'\x20to\x20'+_[_0xee04('0x35')](_0x1ba122),'migrations':_[_0xee04('0x29')](_0x1ba122)});})[_0xee04('0x26')](function(_0x3b9c85){if(_0x3b9c85 instanceof db[_0xee04('0x2f')]['UniqueConstraintError']){return _0x414b99[_0xee04('0x15')](0xc8)[_0xee04('0x16')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x414b99[_0xee04('0x15')](0x1f4)['json'](_0x3b9c85);}});}else{return _0x414b99['status'](0xc8)[_0xee04('0x16')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0x6445=['error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','.js','push','length','sequelize','Migration','getQueryInterface','constructor','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','lodash','pkginfo','version','compare-versions','exec','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','tags','latest','2.0.0','status','json','fetch','master'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6445,0xfd));var _0x5644=function(_0x509d06,_0x53b9aa){_0x509d06=_0x509d06-0x0;var _0x3311e0=_0x6445[_0x509d06];return _0x3311e0;};'use strict';var Umzug=require(_0x5644('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x5644('0x1'));var pkginfo=require(_0x5644('0x2'))(module,_0x5644('0x3'));var compareVersions=require(_0x5644('0x4'));var exec=require('child_process')[_0x5644('0x5')];var db=require('../../mysqldb')['db'];var config=require(_0x5644('0x6'));var pm2=require(_0x5644('0x7'));var logger=require(_0x5644('0x8'))(_0x5644('0x9'));var git=require(_0x5644('0xa'))(config[_0x5644('0xb')]);exports[_0x5644('0xc')]=function(_0x2b2158,_0x1f54e2){var _0x3a6014={'current':module[_0x5644('0xd')][_0x5644('0x3')],'phonebar':0x2};if(_0x2b2158[_0x5644('0xe')]&&_0x2b2158[_0x5644('0xe')]['latest']){return git['fetch']()[_0x5644('0xf')](function(_0x12bfcf,_0x432d23){_0x3a6014[_0x5644('0x10')]=(_0x12bfcf?module[_0x5644('0xd')][_0x5644('0x3')]:_0x432d23[_0x5644('0x10')])||_0x5644('0x11');return _0x1f54e2[_0x5644('0x12')](0xc8)[_0x5644('0x13')](_0x3a6014);});}else{return _0x1f54e2['status'](0xc8)['json'](_0x3a6014);}};exports['fetch']=function(_0x2f84cb,_0x27073f){return git[_0x5644('0x14')](['origin',_0x5644('0x15')],function(_0x49c5aa){if(_0x49c5aa){logger[_0x5644('0x16')](_0x49c5aa);return _0x27073f[_0x5644('0x12')](0x1f4)[_0x5644('0x13')](_0x49c5aa);}logger[_0x5644('0x17')](_0x5644('0x18'));return _0x27073f[_0x5644('0x12')](0xc8)['json']({'output':_0x5644('0x19')});});};exports[_0x5644('0x1a')]=function(_0x2eb8d3,_0xd5cc74){return git['reset']([_0x5644('0x1b'),_0x5644('0x1c')],function(_0x1451c2){if(_0x1451c2){logger[_0x5644('0x16')](_0x1451c2);return _0xd5cc74[_0x5644('0x12')](0x1f4)[_0x5644('0x13')](_0x1451c2);}logger[_0x5644('0x17')](_0x5644('0x1d'));return _0xd5cc74[_0x5644('0x12')](0xc8)[_0x5644('0x13')]({'output':_0x5644('0x1e')});});};exports[_0x5644('0x1f')]=function(_0x44404c,_0x4251e0){exec(_0x5644('0x20'),function(_0x3d04e1,_0x4f8313,_0xa508e2){logger['info'](_0x4f8313);logger[_0x5644('0x17')](_0xa508e2);if(_0x3d04e1){logger[_0x5644('0x16')](_0x3d04e1);return _0x4251e0[_0x5644('0x12')](0x1f4)[_0x5644('0x13')](_0x3d04e1);}return _0x4251e0[_0x5644('0x12')](0xc8)[_0x5644('0x13')]({'output':_0x4f8313});});};exports[_0x5644('0x21')]=function(_0x38e039,_0x1163f5){return pm2[_0x5644('0x21')](_0x5644('0x22'))['then'](function(_0x46aa77){logger[_0x5644('0x17')](_0x5644('0x23'),_0x46aa77);return _0x1163f5[_0x5644('0x12')](0xc8)[_0x5644('0x13')]({'output':_0x5644('0x24')});})[_0x5644('0x25')](function(_0x146148){logger['error'](_0x146148);return _0x1163f5[_0x5644('0x12')](0x1f4)[_0x5644('0x13')](_0x146148);});};exports[_0x5644('0x26')]=function(_0x568df2,_0x1875b9){var _0x4deeac=fs[_0x5644('0x27')](path[_0x5644('0x28')](config['root'],_0x5644('0x29'),_0x5644('0x26')));var _0x3495f9=[];for(var _0x306717=0x0;_0x306717<_0x4deeac['length'];_0x306717++){var _0x274585=_0x4deeac[_0x306717]['replace'](_0x5644('0x2a'),'');if(compareVersions(module[_0x5644('0xd')][_0x5644('0x3')],_0x274585)===-0x1){_0x3495f9[_0x5644('0x2b')](_0x274585);}}if(_0x3495f9[_0x5644('0x2c')]){var _0x4636b7=_0x3495f9['sort'](compareVersions);var _0x1c0322=new Umzug({'storage':_0x5644('0x2d'),'storageOptions':{'model':db[_0x5644('0x2e')],'modelName':_0x5644('0x2e'),'columnName':_0x5644('0x3')},'migrations':{'params':[db[_0x5644('0x2d')][_0x5644('0x2f')](),db['sequelize'][_0x5644('0x30')],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0x5644('0x28')](config['root'],_0x5644('0x29'),_0x5644('0x26')),'pattern':/\.js$/}});_0x1c0322['up']({'migrations':_[_0x5644('0x31')](_0x4636b7,function(_0x2ecf4d){return _0x2ecf4d+'.js';})})['then'](function(){return _0x1875b9[_0x5644('0x12')](0xc8)[_0x5644('0x13')]({'output':_0x5644('0x32')+module[_0x5644('0xd')][_0x5644('0x3')]+_0x5644('0x33')+_[_0x5644('0x34')](_0x4636b7),'migrations':_[_0x5644('0x28')](_0x4636b7)});})[_0x5644('0x25')](function(_0xf96f73){if(_0xf96f73 instanceof db[_0x5644('0x2d')][_0x5644('0x35')]){return _0x1875b9['status'](0xc8)[_0x5644('0x13')]({'output':_0x5644('0x36')});}else{return _0x1875b9[_0x5644('0x12')](0x1f4)[_0x5644('0x13')](_0xf96f73);}});}else{return _0x1875b9[_0x5644('0x12')](0xc8)[_0x5644('0x13')]({'output':_0x5644('0x36')});}};
\ No newline at end of file
index 9f04d63..e4747a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x633a=['../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0x26d526,_0x25536b){var _0x4945bb=function(_0x968ab6){while(--_0x968ab6){_0x26d526['push'](_0x26d526['shift']());}};_0x4945bb(++_0x25536b);}(_0x633a,0xd7));var _0xa633=function(_0x44135a,_0x51b809){_0x44135a=_0x44135a-0x0;var _0x418199=_0x633a[_0x44135a];return _0x418199;};'use strict';var multer=require(_0xa633('0x0'));var util=require(_0xa633('0x1'));var path=require('path');var timeout=require(_0xa633('0x2'));var express=require(_0xa633('0x3'));var router=express['Router']();var fs_extra=require(_0xa633('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa633('0x5'));var config=require(_0xa633('0x6'));var controller=require('./voiceAgentReport.controller');router[_0xa633('0x7')]('/',auth[_0xa633('0x8')](),controller['index']);router[_0xa633('0x7')](_0xa633('0x9'),auth['isAuthenticated'](),controller[_0xa633('0xa')]);router[_0xa633('0x7')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller[_0xa633('0xc')]);router[_0xa633('0xd')]('/',auth['isAuthenticated'](),controller[_0xa633('0xe')]);router[_0xa633('0xf')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller['update']);router[_0xa633('0x10')](_0xa633('0xb'),auth[_0xa633('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x14ca=['post','put','/:id','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','describe','show'];(function(_0x322807,_0x4683cf){var _0x52d711=function(_0x3190a1){while(--_0x3190a1){_0x322807['push'](_0x322807['shift']());}};_0x52d711(++_0x4683cf);}(_0x14ca,0x1f4));var _0xa14c=function(_0xe446b9,_0x4b27df){_0xe446b9=_0xe446b9-0x0;var _0xb77c67=_0x14ca[_0xe446b9];return _0xb77c67;};'use strict';var multer=require('multer');var util=require(_0xa14c('0x0'));var path=require(_0xa14c('0x1'));var timeout=require(_0xa14c('0x2'));var express=require(_0xa14c('0x3'));var router=express['Router']();var fs_extra=require(_0xa14c('0x4'));var auth=require(_0xa14c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa14c('0x6'));var controller=require(_0xa14c('0x7'));router[_0xa14c('0x8')]('/',auth[_0xa14c('0x9')](),controller[_0xa14c('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xa14c('0xb')]);router[_0xa14c('0x8')]('/:id',auth[_0xa14c('0x9')](),controller[_0xa14c('0xc')]);router[_0xa14c('0xd')]('/',auth[_0xa14c('0x9')](),controller['create']);router[_0xa14c('0xe')](_0xa14c('0xf'),auth[_0xa14c('0x9')](),controller[_0xa14c('0x10')]);router[_0xa14c('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xa14c('0x12')]=router;
\ No newline at end of file
index 0e79949..a9c22c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe2=['BOOLEAN','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xefe2,0xd9));var _0x2efe=function(_0x417593,_0x1c318b){_0x417593=_0x417593-0x0;var _0x359e45=_0xefe2[_0x417593];return _0x359e45;};'use strict';var Sequelize=require(_0x2efe('0x0'));module[_0x2efe('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x2efe('0x2')]},'calleridnum':{'type':Sequelize[_0x2efe('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x2efe('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2efe('0x2')]},'agentcalledAt':{'type':Sequelize[_0x2efe('0x3')]},'agentconnectAt':{'type':Sequelize[_0x2efe('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x2efe('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x2efe('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x2efe('0x4')]},'agentcomplete':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x2efe('0x4')]},'reason':{'type':Sequelize[_0x2efe('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x2efe('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2efe('0x2')]},'language':{'type':Sequelize[_0x2efe('0x2')]},'accountcode':{'type':Sequelize[_0x2efe('0x2')]},'context':{'type':Sequelize[_0x2efe('0x2')]},'exten':{'type':Sequelize[_0x2efe('0x2')]},'priority':{'type':Sequelize[_0x2efe('0x2')]},'destchannel':{'type':Sequelize[_0x2efe('0x2')]},'destchannelstate':{'type':Sequelize[_0x2efe('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x2efe('0x2')]},'destcalleridnum':{'type':Sequelize[_0x2efe('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x2efe('0x2')]},'destlanguage':{'type':Sequelize[_0x2efe('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x2efe('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x2efe('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x2efe('0x2')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x2efe('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2efe('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x2efe('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4af8=['DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','STRING'];(function(_0x541ef7,_0x44cbd2){var _0x6de40c=function(_0x1c936e){while(--_0x1c936e){_0x541ef7['push'](_0x541ef7['shift']());}};_0x6de40c(++_0x44cbd2);}(_0x4af8,0x1ad));var _0x84af=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x4af8[_0x1d9aa0];return _0x226868;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x84af('0x0')]},'calleridname':{'type':Sequelize[_0x84af('0x0')]},'queue':{'type':Sequelize[_0x84af('0x0')]},'interface':{'type':Sequelize[_0x84af('0x0')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x84af('0x1')]},'agentconnectAt':{'type':Sequelize[_0x84af('0x1')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x84af('0x1')]},'agentdumpAt':{'type':Sequelize[_0x84af('0x1')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x84af('0x2')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x84af('0x2')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x84af('0x2')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x84af('0x3')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x84af('0x0')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x84af('0x3')]},'channelstatedesc':{'type':Sequelize[_0x84af('0x0')]},'connectedlinenum':{'type':Sequelize[_0x84af('0x0')]},'connectedlinename':{'type':Sequelize[_0x84af('0x0')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x84af('0x0')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x84af('0x0')]},'priority':{'type':Sequelize[_0x84af('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x84af('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x84af('0x0')]},'destcalleridnum':{'type':Sequelize[_0x84af('0x0')]},'destcalleridname':{'type':Sequelize[_0x84af('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x84af('0x0')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x84af('0x0')]},'destcontext':{'type':Sequelize[_0x84af('0x0')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x84af('0x0')]},'destuniqueid':{'type':Sequelize[_0x84af('0x0')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x84af('0x0')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x84af('0x0')],'comment':_0x84af('0x4')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x84af('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 1fbca53..2572eda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'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(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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 6b2bb9a..dc1ad68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['exports','report_agent','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes'];(function(_0x3a4156,_0x1b44b2){var _0x3cb632=function(_0x4b9c5){while(--_0x4b9c5){_0x3a4156['push'](_0x3a4156['shift']());}};_0x3cb632(++_0x1b44b2);}(_0x78d3,0x73));var _0x378d=function(_0x29d06f,_0x41fd3c){_0x29d06f=_0x29d06f-0x0;var _0x10b1e5=_0x78d3[_0x29d06f];return _0x10b1e5;};'use strict';var _=require(_0x378d('0x0'));var util=require(_0x378d('0x1'));var logger=require(_0x378d('0x2'))(_0x378d('0x3'));var moment=require(_0x378d('0x4'));var BPromise=require(_0x378d('0x5'));var rp=require(_0x378d('0x6'));var fs=require('fs');var path=require(_0x378d('0x7'));var rimraf=require(_0x378d('0x8'));var config=require(_0x378d('0x9'));var attributes=require(_0x378d('0xa'));module[_0x378d('0xb')]=function(_0xc18c0b,_0x59117c){return _0xc18c0b['define']('VoiceAgentReport',attributes,{'tableName':_0x378d('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x378d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d6=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util'];(function(_0x24f058,_0x5aea6f){var _0xd47440=function(_0x17621a){while(--_0x17621a){_0x24f058['push'](_0x24f058['shift']());}};_0xd47440(++_0x5aea6f);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x117900,_0x94259a){_0x117900=_0x117900-0x0;var _0x37a4f6=_0xd6d6[_0x117900];return _0x37a4f6;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var logger=require(_0x6d6d('0x2'))(_0x6d6d('0x3'));var moment=require('moment');var BPromise=require(_0x6d6d('0x4'));var rp=require(_0x6d6d('0x5'));var fs=require('fs');var path=require(_0x6d6d('0x6'));var rimraf=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var attributes=require(_0x6d6d('0x9'));module[_0x6d6d('0xa')]=function(_0x5702dc,_0x210ff7){return _0x5702dc[_0x6d6d('0xb')](_0x6d6d('0xc'),attributes,{'tableName':_0x6d6d('0xd'),'paranoid':![],'indexes':[{'fields':[_0x6d6d('0xe'),_0x6d6d('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 81ea50d..4af455d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ba3=['request\x20sent','error','code','message','result','catch','VoiceAgentReport','body','options','raw','CreateVoiceAgentReport','stringify','UpdateVoiceAgentReport','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug'];(function(_0x141689,_0x18d74a){var _0x39f301=function(_0x294d07){while(--_0x294d07){_0x141689['push'](_0x141689['shift']());}};_0x39f301(++_0x18d74a);}(_0x8ba3,0xd6));var _0x38ba=function(_0x516a71,_0x149687){_0x516a71=_0x516a71-0x0;var _0x120734=_0x8ba3[_0x516a71];return _0x120734;};'use strict';var _=require(_0x38ba('0x0'));var util=require(_0x38ba('0x1'));var moment=require(_0x38ba('0x2'));var BPromise=require(_0x38ba('0x3'));var rs=require(_0x38ba('0x4'));var fs=require('fs');var Redis=require(_0x38ba('0x5'));var db=require(_0x38ba('0x6'))['db'];var utils=require(_0x38ba('0x7'));var logger=require(_0x38ba('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x38ba('0x9'));var client=jayson[_0x38ba('0xa')][_0x38ba('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x112633,_0x215872,_0x38ce6f){return new BPromise(function(_0x467a7b,_0x44c985){return client[_0x38ba('0xc')](_0x112633,_0x38ce6f)[_0x38ba('0xd')](function(_0x2920){logger[_0x38ba('0xe')](_0x38ba('0xf'),_0x215872,'request\x20sent');logger[_0x38ba('0x10')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x215872,_0x38ba('0x11'),JSON['stringify'](_0x2920));if(_0x2920[_0x38ba('0x12')]){if(_0x2920[_0x38ba('0x12')][_0x38ba('0x13')]===0x1f4){logger[_0x38ba('0x12')]('VoiceAgentReport,\x20%s,\x20%s',_0x215872,_0x2920['error'][_0x38ba('0x14')]);return _0x44c985(_0x2920[_0x38ba('0x12')]['message']);}logger[_0x38ba('0x12')](_0x38ba('0xf'),_0x215872,_0x2920[_0x38ba('0x12')][_0x38ba('0x14')]);return _0x467a7b(_0x2920[_0x38ba('0x12')][_0x38ba('0x14')]);}else{logger[_0x38ba('0xe')](_0x38ba('0xf'),_0x215872,_0x38ba('0x11'));_0x467a7b(_0x2920[_0x38ba('0x15')][_0x38ba('0x14')]);}})[_0x38ba('0x16')](function(_0xdad451){logger['error'](_0x38ba('0xf'),_0x215872,_0xdad451);_0x44c985(_0xdad451);});});}exports['CreateVoiceAgentReport']=function(_0x1a607f){var _0x65a8d=this;return new Promise(function(_0x32977e,_0x332d2f){return db[_0x38ba('0x17')]['create'](_0x1a607f[_0x38ba('0x18')],{'raw':_0x1a607f[_0x38ba('0x19')]?_0x1a607f[_0x38ba('0x19')][_0x38ba('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x550926){logger[_0x38ba('0xe')](_0x38ba('0x1b'),_0x1a607f);logger['debug'](_0x38ba('0x1b'),_0x1a607f,JSON[_0x38ba('0x1c')](_0x550926));_0x32977e(_0x550926);})[_0x38ba('0x16')](function(_0x1c1b19){logger['error'](_0x38ba('0x1b'),_0x1c1b19[_0x38ba('0x14')],_0x1a607f);_0x332d2f(_0x65a8d[_0x38ba('0x12')](0x1f4,_0x1c1b19[_0x38ba('0x14')]));});});};exports[_0x38ba('0x1d')]=function(_0x72fa82){var _0x3e5d2a=this;return new Promise(function(_0x279d49,_0x5798b9){return db['VoiceAgentReport']['update'](_0x72fa82[_0x38ba('0x18')],{'raw':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x1e')]||null:null,'attributes':_0x72fa82['options']?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x1f')]||null:null,'limit':_0x72fa82[_0x38ba('0x19')]?_0x72fa82[_0x38ba('0x19')][_0x38ba('0x20')]||null:null})[_0x38ba('0xd')](function(_0x276ecc){logger[_0x38ba('0xe')](_0x38ba('0x1d'),_0x72fa82);logger[_0x38ba('0x10')](_0x38ba('0x1d'),_0x72fa82,JSON['stringify'](_0x276ecc));_0x279d49(_0x276ecc);})[_0x38ba('0x16')](function(_0x5db8c7){logger[_0x38ba('0x12')](_0x38ba('0x1d'),_0x5db8c7['message'],_0x72fa82);_0x5798b9(_0x3e5d2a[_0x38ba('0x12')](0x1f4,_0x5db8c7[_0x38ba('0x14')]));});});};
\ No newline at end of file
+var _0xe682=['client','http','request','info','request\x20sent','debug','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','then','catch','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x580cf8,_0x26751e){var _0xcc9a9e=function(_0x5a67ad){while(--_0x5a67ad){_0x580cf8['push'](_0x580cf8['shift']());}};_0xcc9a9e(++_0x26751e);}(_0xe682,0x1b9));var _0x2e68=function(_0xb35529,_0xbd48c5){_0xb35529=_0xb35529-0x0;var _0x1d8c70=_0xe682[_0xb35529];return _0x1d8c70;};'use strict';var _=require(_0x2e68('0x0'));var util=require(_0x2e68('0x1'));var moment=require(_0x2e68('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2e68('0x3'))['db'];var utils=require(_0x2e68('0x4'));var logger=require(_0x2e68('0x5'))(_0x2e68('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2e68('0x7')][_0x2e68('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4be2c9,_0x78ce29,_0xe70653){return new BPromise(function(_0x40a0d7,_0x108c93){return client[_0x2e68('0x9')](_0x4be2c9,_0xe70653)['then'](function(_0x1ea51d){logger[_0x2e68('0xa')]('VoiceAgentReport,\x20%s,\x20%s',_0x78ce29,_0x2e68('0xb'));logger[_0x2e68('0xc')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x78ce29,_0x2e68('0xb'),JSON[_0x2e68('0xd')](_0x1ea51d));if(_0x1ea51d[_0x2e68('0xe')]){if(_0x1ea51d[_0x2e68('0xe')][_0x2e68('0xf')]===0x1f4){logger[_0x2e68('0xe')](_0x2e68('0x10'),_0x78ce29,_0x1ea51d[_0x2e68('0xe')][_0x2e68('0x11')]);return _0x108c93(_0x1ea51d[_0x2e68('0xe')][_0x2e68('0x11')]);}logger[_0x2e68('0xe')](_0x2e68('0x10'),_0x78ce29,_0x1ea51d['error']['message']);return _0x40a0d7(_0x1ea51d['error'][_0x2e68('0x11')]);}else{logger[_0x2e68('0xa')](_0x2e68('0x10'),_0x78ce29,_0x2e68('0xb'));_0x40a0d7(_0x1ea51d[_0x2e68('0x12')][_0x2e68('0x11')]);}})['catch'](function(_0x1f6fcc){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x78ce29,_0x1f6fcc);_0x108c93(_0x1f6fcc);});});}exports[_0x2e68('0x13')]=function(_0x4eb0bf){var _0x4678e6=this;return new Promise(function(_0x2d4af3,_0x19bf57){return db[_0x2e68('0x14')][_0x2e68('0x15')](_0x4eb0bf[_0x2e68('0x16')],{'raw':_0x4eb0bf[_0x2e68('0x17')]?_0x4eb0bf[_0x2e68('0x17')][_0x2e68('0x18')]===undefined?!![]:![]:!![]})[_0x2e68('0x19')](function(_0x311471){logger[_0x2e68('0xa')](_0x2e68('0x13'),_0x4eb0bf);logger[_0x2e68('0xc')](_0x2e68('0x13'),_0x4eb0bf,JSON[_0x2e68('0xd')](_0x311471));_0x2d4af3(_0x311471);})[_0x2e68('0x1a')](function(_0x24a633){logger[_0x2e68('0xe')](_0x2e68('0x13'),_0x24a633[_0x2e68('0x11')],_0x4eb0bf);_0x19bf57(_0x4678e6[_0x2e68('0xe')](0x1f4,_0x24a633[_0x2e68('0x11')]));});});};exports[_0x2e68('0x1b')]=function(_0x3a9c7f){var _0x5e457b=this;return new Promise(function(_0x4a2b67,_0x26f7e9){return db[_0x2e68('0x14')][_0x2e68('0x1c')](_0x3a9c7f[_0x2e68('0x16')],{'raw':_0x3a9c7f[_0x2e68('0x17')]?_0x3a9c7f[_0x2e68('0x17')][_0x2e68('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a9c7f[_0x2e68('0x17')]?_0x3a9c7f[_0x2e68('0x17')][_0x2e68('0x1d')]||null:null,'attributes':_0x3a9c7f[_0x2e68('0x17')]?_0x3a9c7f[_0x2e68('0x17')][_0x2e68('0x1e')]||null:null,'limit':_0x3a9c7f[_0x2e68('0x17')]?_0x3a9c7f[_0x2e68('0x17')][_0x2e68('0x1f')]||null:null})[_0x2e68('0x19')](function(_0x3b5ba7){logger[_0x2e68('0xa')](_0x2e68('0x1b'),_0x3a9c7f);logger[_0x2e68('0xc')](_0x2e68('0x1b'),_0x3a9c7f,JSON[_0x2e68('0xd')](_0x3b5ba7));_0x4a2b67(_0x3b5ba7);})[_0x2e68('0x1a')](function(_0x1252c9){logger[_0x2e68('0xe')](_0x2e68('0x1b'),_0x1252c9[_0x2e68('0x11')],_0x3a9c7f);_0x26f7e9(_0x5e457b['error'](0x1f4,_0x1252c9[_0x2e68('0x11')]));});});};
\ No newline at end of file
index 66dcae9..be1dd6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fda=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','multer','path','connect-timeout','express'];(function(_0x442ef4,_0x145157){var _0x5db4dd=function(_0x495e20){while(--_0x495e20){_0x442ef4['push'](_0x442ef4['shift']());}};_0x5db4dd(++_0x145157);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x5de927,_0x393d2b){_0x5de927=_0x5de927-0x0;var _0x44987b=_0x0fda[_0x5de927];return _0x44987b;};'use strict';var multer=require(_0xa0fd('0x0'));var util=require('util');var path=require(_0xa0fd('0x1'));var timeout=require(_0xa0fd('0x2'));var express=require(_0xa0fd('0x3'));var router=express[_0xa0fd('0x4')]();var fs_extra=require(_0xa0fd('0x5'));var auth=require(_0xa0fd('0x6'));var interaction=require(_0xa0fd('0x7'));var config=require('../../config/environment');var controller=require('./voiceCallReport.controller');router[_0xa0fd('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa0fd('0x8')](_0xa0fd('0x9'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xb')]);router['get'](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0xd')]);router[_0xa0fd('0xe')]('/',auth['isAuthenticated'](),controller[_0xa0fd('0xf')]);router[_0xa0fd('0x10')](_0xa0fd('0xc'),auth['isAuthenticated'](),controller[_0xa0fd('0x11')]);router[_0xa0fd('0x12')](_0xa0fd('0xc'),auth[_0xa0fd('0xa')](),controller[_0xa0fd('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x7217,0x19e));var _0x7721=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x7217[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x10')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);router[_0x7721('0x12')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x13')]);module['exports']=router;
\ No newline at end of file
index 253f1bb..83c80d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','exports','STRING','outbound'];(function(_0x30c649,_0x2ebbac){var _0x3edfb9=function(_0xab82f5){while(--_0xab82f5){_0x30c649['push'](_0x30c649['shift']());}};_0x3edfb9(++_0x2ebbac);}(_0x757a,0xde));var _0xa757=function(_0x1fd66c,_0x10de09){_0x1fd66c=_0x1fd66c-0x0;var _0x45e93f=_0x757a[_0x1fd66c];return _0x45e93f;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'uniqueid':{'type':Sequelize[_0xa757('0x1')]},'type':{'type':Sequelize['ENUM']('inbound','internal',_0xa757('0x2'),_0xa757('0x3'),_0xa757('0x4'),_0xa757('0x5'))},'tag':{'type':Sequelize[_0xa757('0x1')]},'accountcode':{'type':Sequelize[_0xa757('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xa757('0x1')]},'destinationcontext':{'type':Sequelize[_0xa757('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xa757('0x1')]},'destinationchannel':{'type':Sequelize[_0xa757('0x1')]},'lastapplication':{'type':Sequelize[_0xa757('0x1')]},'lastdata':{'type':Sequelize[_0xa757('0x6')]},'starttime':{'type':Sequelize[_0xa757('0x7')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xa757('0x7')]},'endtime':{'type':Sequelize[_0xa757('0x7')]},'duration':{'type':Sequelize[_0xa757('0x8')]},'billableseconds':{'type':Sequelize[_0xa757('0x8')]},'mohtime':{'type':Sequelize[_0xa757('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xa757('0x1')]},'amaflags':{'type':Sequelize[_0xa757('0x1')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xa757('0x1')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8f9d=['DATE','INTEGER','sequelize','exports','ENUM','inbound','outbound','inbound-fax','outbound-fax','dialer','STRING','TEXT'];(function(_0x19c1f4,_0x3a9e79){var _0x2a6b81=function(_0x532585){while(--_0x532585){_0x19c1f4['push'](_0x19c1f4['shift']());}};_0x2a6b81(++_0x3a9e79);}(_0x8f9d,0x1d6));var _0xd8f9=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8f9d[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0xd8f9('0x0'));module[_0xd8f9('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xd8f9('0x2')](_0xd8f9('0x3'),'internal',_0xd8f9('0x4'),_0xd8f9('0x5'),_0xd8f9('0x6'),_0xd8f9('0x7'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd8f9('0x8')]},'source':{'type':Sequelize[_0xd8f9('0x8')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xd8f9('0x8')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0xd8f9('0x8')]},'lastdata':{'type':Sequelize[_0xd8f9('0x9')]},'starttime':{'type':Sequelize[_0xd8f9('0xa')]},'systemanswertime':{'type':Sequelize[_0xd8f9('0xa')]},'answertime':{'type':Sequelize[_0xd8f9('0xa')]},'endtime':{'type':Sequelize[_0xd8f9('0xa')]},'duration':{'type':Sequelize[_0xd8f9('0xb')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xd8f9('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xd8f9('0x8')]},'amaflags':{'type':Sequelize[_0xd8f9('0x8')]},'userfield':{'type':Sequelize[_0xd8f9('0x8')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xd8f9('0x8')]},'userThirdDisposition':{'type':Sequelize[_0xd8f9('0x8')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xd8f9('0x8')]},'routeid':{'type':Sequelize[_0xd8f9('0xb')]},'sipcallid':{'type':Sequelize[_0xd8f9('0x8')]}};
\ No newline at end of file
index 0b40bce..e1af332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
+var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x20ac3f,_0x22d7ac){_0x20ac3f=_0x20ac3f-0x0;var _0x4c18d4=_0x2032[_0x20ac3f];return _0x4c18d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
index 6d31c43..e329582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8922=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','uniqueid','lodash','util'];(function(_0xb1174e,_0x1e68a7){var _0x285bac=function(_0x32c505){while(--_0x32c505){_0xb1174e['push'](_0xb1174e['shift']());}};_0x285bac(++_0x1e68a7);}(_0x8922,0xe2));var _0x2892=function(_0x12af4d,_0x2b82c4){_0x12af4d=_0x12af4d-0x0;var _0x2e950e=_0x8922[_0x12af4d];return _0x2e950e;};'use strict';var _=require(_0x2892('0x0'));var util=require(_0x2892('0x1'));var logger=require(_0x2892('0x2'))(_0x2892('0x3'));var moment=require(_0x2892('0x4'));var BPromise=require(_0x2892('0x5'));var rp=require(_0x2892('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2892('0x7'));var attributes=require(_0x2892('0x8'));module['exports']=function(_0x222a12,_0x361152){return _0x222a12[_0x2892('0x9')](_0x2892('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x2892('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5a8=['rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','api','bluebird'];(function(_0x2b831e,_0x2f7a49){var _0x1a82c1=function(_0x4396e0){while(--_0x4396e0){_0x2b831e['push'](_0x2b831e['shift']());}};_0x1a82c1(++_0x2f7a49);}(_0xa5a8,0x1d6));var _0x8a5a=function(_0x300f83,_0x8dd925){_0x300f83=_0x300f83-0x0;var _0x2ac66e=_0xa5a8[_0x300f83];return _0x2ac66e;};'use strict';var _=require(_0x8a5a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8a5a('0x1'));var moment=require('moment');var BPromise=require(_0x8a5a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8a5a('0x3'));var config=require(_0x8a5a('0x4'));var attributes=require(_0x8a5a('0x5'));module[_0x8a5a('0x6')]=function(_0x5c74db,_0x1c9b1b){return _0x5c74db[_0x8a5a('0x7')](_0x8a5a('0x8'),attributes,{'tableName':_0x8a5a('0x9'),'paranoid':![],'indexes':[{'fields':[_0x8a5a('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 4c6124e..0d1bee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1091=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','limit','include','model','map','debug','CreateVoiceCallReport','create','body','raw','UpdateVoiceCallReport','update','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x129eac,_0x3c3cae){var _0x48cef0=function(_0x1cf759){while(--_0x1cf759){_0x129eac['push'](_0x129eac['shift']());}};_0x48cef0(++_0x3c3cae);}(_0x1091,0x69));var _0x1109=function(_0x3c826c,_0x573527){_0x3c826c=_0x3c826c-0x0;var _0x3ccdfd=_0x1091[_0x3c826c];return _0x3ccdfd;};'use strict';var _=require('lodash');var util=require(_0x1109('0x0'));var moment=require(_0x1109('0x1'));var BPromise=require(_0x1109('0x2'));var rs=require(_0x1109('0x3'));var fs=require('fs');var Redis=require(_0x1109('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1109('0x5'))('rpc');var config=require(_0x1109('0x6'));var jayson=require(_0x1109('0x7'));var client=jayson[_0x1109('0x8')][_0x1109('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x422014,_0x4fcbb6,_0x50ce8c){return new BPromise(function(_0x305d5f,_0x1a24cc){return client[_0x1109('0xa')](_0x422014,_0x50ce8c)[_0x1109('0xb')](function(_0xef61fc){logger[_0x1109('0xc')](_0x1109('0xd'),_0x4fcbb6,_0x1109('0xe'));logger['debug'](_0x1109('0xf'),_0x4fcbb6,_0x1109('0xe'),JSON[_0x1109('0x10')](_0xef61fc));if(_0xef61fc[_0x1109('0x11')]){if(_0xef61fc[_0x1109('0x11')][_0x1109('0x12')]===0x1f4){logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0xef61fc['error'][_0x1109('0x13')]);return _0x1a24cc(_0xef61fc[_0x1109('0x11')]['message']);}logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0xef61fc[_0x1109('0x11')][_0x1109('0x13')]);return _0x305d5f(_0xef61fc[_0x1109('0x11')][_0x1109('0x13')]);}else{logger[_0x1109('0xc')](_0x1109('0xd'),_0x4fcbb6,'request\x20sent');_0x305d5f(_0xef61fc[_0x1109('0x14')]['message']);}})[_0x1109('0x15')](function(_0x5abd38){logger[_0x1109('0x11')](_0x1109('0xd'),_0x4fcbb6,_0x5abd38);_0x1a24cc(_0x5abd38);});});}exports[_0x1109('0x16')]=function(_0x4a8173){var _0x1f512a=this;return new Promise(function(_0x400edc,_0x42f1d0){return db[_0x1109('0x17')][_0x1109('0x18')]({'raw':_0x4a8173['options']?_0x4a8173[_0x1109('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1a')]||null:null,'attributes':_0x4a8173['options']?_0x4a8173[_0x1109('0x19')][_0x1109('0x1b')]||null:null,'limit':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1c')]||null:null,'include':_0x4a8173[_0x1109('0x19')]?_0x4a8173[_0x1109('0x19')][_0x1109('0x1d')]?_['map'](_0x4a8173[_0x1109('0x19')][_0x1109('0x1d')],function(_0x101a6b){return{'model':db[_0x101a6b[_0x1109('0x1e')]],'as':_0x101a6b['as'],'attributes':_0x101a6b[_0x1109('0x1b')],'include':_0x101a6b['include']?_[_0x1109('0x1f')](_0x101a6b[_0x1109('0x1d')],function(_0x3e19dd){return{'model':db[_0x3e19dd[_0x1109('0x1e')]],'as':_0x3e19dd['as'],'attributes':_0x3e19dd[_0x1109('0x1b')],'include':_0x3e19dd[_0x1109('0x1d')]?_[_0x1109('0x1f')](_0x3e19dd[_0x1109('0x1d')],function(_0x295085){return{'model':db[_0x295085['model']],'as':_0x295085['as'],'attributes':_0x295085['attributes']};}):[]};}):[]};}):[]:[]})[_0x1109('0xb')](function(_0x62ded6){logger[_0x1109('0xc')](_0x1109('0x16'),_0x4a8173);logger[_0x1109('0x20')](_0x1109('0x16'),_0x4a8173,JSON[_0x1109('0x10')](_0x62ded6));_0x400edc(_0x62ded6);})[_0x1109('0x15')](function(_0x5350f8){logger['error']('GetVoiceCallReport',_0x5350f8[_0x1109('0x13')],_0x4a8173);_0x42f1d0(_0x1f512a[_0x1109('0x11')](0x1f4,_0x5350f8['message']));});});};exports[_0x1109('0x21')]=function(_0x44a556){var _0x23e4e2=this;return new Promise(function(_0x1857d6,_0x1a78d4){return db[_0x1109('0x17')][_0x1109('0x22')](_0x44a556[_0x1109('0x23')],{'raw':_0x44a556[_0x1109('0x19')]?_0x44a556[_0x1109('0x19')][_0x1109('0x24')]===undefined?!![]:![]:!![]})[_0x1109('0xb')](function(_0x10c905){logger[_0x1109('0xc')](_0x1109('0x21'),_0x44a556);logger[_0x1109('0x20')](_0x1109('0x21'),_0x44a556,JSON[_0x1109('0x10')](_0x10c905));_0x1857d6(_0x10c905);})[_0x1109('0x15')](function(_0x414ed7){logger[_0x1109('0x11')]('CreateVoiceCallReport',_0x414ed7[_0x1109('0x13')],_0x44a556);_0x1a78d4(_0x23e4e2['error'](0x1f4,_0x414ed7[_0x1109('0x13')]));});});};exports[_0x1109('0x25')]=function(_0x29c7ba){var _0x11b0e2=this;return new Promise(function(_0x40b347,_0x316c49){return db[_0x1109('0x17')][_0x1109('0x26')](_0x29c7ba[_0x1109('0x23')],{'raw':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')][_0x1109('0x1a')]||null:null,'attributes':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba[_0x1109('0x19')][_0x1109('0x1b')]||null:null,'limit':_0x29c7ba[_0x1109('0x19')]?_0x29c7ba['options'][_0x1109('0x1c')]||null:null})[_0x1109('0xb')](function(_0x4a5bd6){logger['info'](_0x1109('0x25'),_0x29c7ba);logger[_0x1109('0x20')]('UpdateVoiceCallReport',_0x29c7ba,JSON[_0x1109('0x10')](_0x4a5bd6));_0x40b347(_0x4a5bd6);})[_0x1109('0x15')](function(_0x55695f){logger['error']('UpdateVoiceCallReport',_0x55695f[_0x1109('0x13')],_0x29c7ba);_0x316c49(_0x11b0e2['error'](0x1f4,_0x55695f['message']));});});};
\ No newline at end of file
+var _0x180c=['http','then','info','VoiceCallReport,\x20%s,\x20%s','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','include','model','map','debug','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x180c,0x184));var _0xc180=function(_0x2ffd67,_0x30217d){_0x2ffd67=_0x2ffd67-0x0;var _0x23e536=_0x180c[_0x2ffd67];return _0x23e536;};'use strict';var _=require(_0xc180('0x0'));var util=require(_0xc180('0x1'));var moment=require(_0xc180('0x2'));var BPromise=require(_0xc180('0x3'));var rs=require(_0xc180('0x4'));var fs=require('fs');var Redis=require(_0xc180('0x5'));var db=require(_0xc180('0x6'))['db'];var utils=require(_0xc180('0x7'));var logger=require(_0xc180('0x8'))(_0xc180('0x9'));var config=require('../../config/environment');var jayson=require(_0xc180('0xa'));var client=jayson[_0xc180('0xb')][_0xc180('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2b0abf,_0x2fb97c,_0x39a72a){return new BPromise(function(_0x472b46,_0x321e76){return client['request'](_0x2b0abf,_0x39a72a)[_0xc180('0xd')](function(_0x790810){logger[_0xc180('0xe')](_0xc180('0xf'),_0x2fb97c,'request\x20sent');logger['debug'](_0xc180('0x10'),_0x2fb97c,'request\x20sent',JSON[_0xc180('0x11')](_0x790810));if(_0x790810['error']){if(_0x790810[_0xc180('0x12')][_0xc180('0x13')]===0x1f4){logger[_0xc180('0x12')](_0xc180('0xf'),_0x2fb97c,_0x790810[_0xc180('0x12')][_0xc180('0x14')]);return _0x321e76(_0x790810['error'][_0xc180('0x14')]);}logger['error'](_0xc180('0xf'),_0x2fb97c,_0x790810[_0xc180('0x12')][_0xc180('0x14')]);return _0x472b46(_0x790810[_0xc180('0x12')][_0xc180('0x14')]);}else{logger[_0xc180('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x2fb97c,_0xc180('0x15'));_0x472b46(_0x790810['result'][_0xc180('0x14')]);}})[_0xc180('0x16')](function(_0x537bdd){logger['error'](_0xc180('0xf'),_0x2fb97c,_0x537bdd);_0x321e76(_0x537bdd);});});}exports[_0xc180('0x17')]=function(_0x48c281){var _0xf28664=this;return new Promise(function(_0x1c184c,_0x3dd6dc){return db[_0xc180('0x18')][_0xc180('0x19')]({'raw':_0x48c281[_0xc180('0x1a')]?_0x48c281['options'][_0xc180('0x1b')]===undefined?!![]:![]:!![],'where':_0x48c281[_0xc180('0x1a')]?_0x48c281[_0xc180('0x1a')][_0xc180('0x1c')]||null:null,'attributes':_0x48c281[_0xc180('0x1a')]?_0x48c281[_0xc180('0x1a')][_0xc180('0x1d')]||null:null,'limit':_0x48c281[_0xc180('0x1a')]?_0x48c281[_0xc180('0x1a')]['limit']||null:null,'include':_0x48c281[_0xc180('0x1a')]?_0x48c281[_0xc180('0x1a')][_0xc180('0x1e')]?_['map'](_0x48c281[_0xc180('0x1a')]['include'],function(_0xf5aa8c){return{'model':db[_0xf5aa8c[_0xc180('0x1f')]],'as':_0xf5aa8c['as'],'attributes':_0xf5aa8c[_0xc180('0x1d')],'include':_0xf5aa8c[_0xc180('0x1e')]?_[_0xc180('0x20')](_0xf5aa8c[_0xc180('0x1e')],function(_0x5bfb7a){return{'model':db[_0x5bfb7a['model']],'as':_0x5bfb7a['as'],'attributes':_0x5bfb7a[_0xc180('0x1d')],'include':_0x5bfb7a[_0xc180('0x1e')]?_[_0xc180('0x20')](_0x5bfb7a[_0xc180('0x1e')],function(_0x2829b9){return{'model':db[_0x2829b9[_0xc180('0x1f')]],'as':_0x2829b9['as'],'attributes':_0x2829b9[_0xc180('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xc180('0xd')](function(_0xa2b6cf){logger[_0xc180('0xe')]('GetVoiceCallReport',_0x48c281);logger[_0xc180('0x21')](_0xc180('0x17'),_0x48c281,JSON[_0xc180('0x11')](_0xa2b6cf));_0x1c184c(_0xa2b6cf);})['catch'](function(_0xb3d240){logger['error'](_0xc180('0x17'),_0xb3d240[_0xc180('0x14')],_0x48c281);_0x3dd6dc(_0xf28664[_0xc180('0x12')](0x1f4,_0xb3d240[_0xc180('0x14')]));});});};exports[_0xc180('0x22')]=function(_0x225580){var _0x3d3e46=this;return new Promise(function(_0x21b1af,_0xaa5f3f){return db['VoiceCallReport'][_0xc180('0x23')](_0x225580[_0xc180('0x24')],{'raw':_0x225580['options']?_0x225580['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2b8cf3){logger[_0xc180('0xe')](_0xc180('0x22'),_0x225580);logger[_0xc180('0x21')](_0xc180('0x22'),_0x225580,JSON[_0xc180('0x11')](_0x2b8cf3));_0x21b1af(_0x2b8cf3);})[_0xc180('0x16')](function(_0x2a5a30){logger['error'](_0xc180('0x22'),_0x2a5a30[_0xc180('0x14')],_0x225580);_0xaa5f3f(_0x3d3e46[_0xc180('0x12')](0x1f4,_0x2a5a30[_0xc180('0x14')]));});});};exports[_0xc180('0x25')]=function(_0x6bc1ba){var _0x33d8f4=this;return new Promise(function(_0x50f9ec,_0x9c3d92){return db[_0xc180('0x18')][_0xc180('0x26')](_0x6bc1ba[_0xc180('0x24')],{'raw':_0x6bc1ba['options']?_0x6bc1ba[_0xc180('0x1a')][_0xc180('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6bc1ba['options']?_0x6bc1ba[_0xc180('0x1a')]['where']||null:null,'attributes':_0x6bc1ba[_0xc180('0x1a')]?_0x6bc1ba[_0xc180('0x1a')]['attributes']||null:null,'limit':_0x6bc1ba[_0xc180('0x1a')]?_0x6bc1ba[_0xc180('0x1a')][_0xc180('0x27')]||null:null})[_0xc180('0xd')](function(_0x5723f9){logger['info'](_0xc180('0x25'),_0x6bc1ba);logger[_0xc180('0x21')](_0xc180('0x25'),_0x6bc1ba,JSON['stringify'](_0x5723f9));_0x50f9ec(_0x5723f9);})[_0xc180('0x16')](function(_0x2ee372){logger['error'](_0xc180('0x25'),_0x2ee372['message'],_0x6bc1ba);_0x9c3d92(_0x33d8f4[_0xc180('0x12')](0x1f4,_0x2ee372['message']));});});};
\ No newline at end of file
index db1df53..75e0f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa612=['show','post','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id'];(function(_0x19c505,_0x2aa22e){var _0xbf44e7=function(_0x3b9e28){while(--_0x3b9e28){_0x19c505['push'](_0x19c505['shift']());}};_0xbf44e7(++_0x2aa22e);}(_0xa612,0x14a));var _0x2a61=function(_0x5c982f,_0x192e0c){_0x5c982f=_0x5c982f-0x0;var _0x21f729=_0xa612[_0x5c982f];return _0x21f729;};'use strict';var multer=require('multer');var util=require(_0x2a61('0x0'));var path=require('path');var timeout=require(_0x2a61('0x1'));var express=require(_0x2a61('0x2'));var router=express[_0x2a61('0x3')]();var fs_extra=require(_0x2a61('0x4'));var auth=require(_0x2a61('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2a61('0x6'));var controller=require(_0x2a61('0x7'));router[_0x2a61('0x8')]('/',auth[_0x2a61('0x9')](),controller[_0x2a61('0xa')]);router[_0x2a61('0x8')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0xc')]);router[_0x2a61('0xd')]('/',auth[_0x2a61('0x9')](),controller['create']);router[_0x2a61('0xe')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0xf')]);router[_0x2a61('0x10')](_0x2a61('0xb'),auth[_0x2a61('0x9')](),controller[_0x2a61('0x11')]);module[_0x2a61('0x12')]=router;
\ No newline at end of file
+var _0xd818=['connect-timeout','../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x5275b8,_0x51e5dd){var _0x568a9b=function(_0x583a71){while(--_0x583a71){_0x5275b8['push'](_0x5275b8['shift']());}};_0x568a9b(++_0x51e5dd);}(_0xd818,0x174));var _0x8d81=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0xd818[_0x1d50f2];return _0x3769b8;};'use strict';var multer=require(_0x8d81('0x0'));var util=require('util');var path=require(_0x8d81('0x1'));var timeout=require(_0x8d81('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8d81('0x3'));var interaction=require(_0x8d81('0x4'));var config=require('../../config/environment');var controller=require(_0x8d81('0x5'));router[_0x8d81('0x6')]('/',auth[_0x8d81('0x7')](),controller[_0x8d81('0x8')]);router['get'](_0x8d81('0x9'),auth[_0x8d81('0x7')](),controller['show']);router[_0x8d81('0xa')]('/',auth['isAuthenticated'](),controller[_0x8d81('0xb')]);router[_0x8d81('0xc')](_0x8d81('0x9'),auth[_0x8d81('0x7')](),controller[_0x8d81('0xd')]);router[_0x8d81('0xe')](_0x8d81('0x9'),auth[_0x8d81('0x7')](),controller[_0x8d81('0xf')]);module[_0x8d81('0x10')]=router;
\ No newline at end of file
index 063c951..767253b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe338=['getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options'];(function(_0x2e781d,_0x33a1f3){var _0x2e0e54=function(_0x357846){while(--_0x357846){_0x2e781d['push'](_0x2e781d['shift']());}};_0x2e0e54(++_0x33a1f3);}(_0xe338,0x18a));var _0x8e33=function(_0x15a8bb,_0x166b3e){_0x15a8bb=_0x15a8bb-0x0;var _0x4d62da=_0xe338[_0x15a8bb];return _0x4d62da;};'use strict';var Sequelize=require(_0x8e33('0x0'));module[_0x8e33('0x1')]={'name':{'type':Sequelize[_0x8e33('0x2')]},'prefix':{'type':Sequelize[_0x8e33('0x2')],'unique':_0x8e33('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x8e33('0x2')],'set':function(_0x158e15){this[_0x8e33('0x4')](_0x8e33('0x5'),_0x158e15?_0x158e15['join'](''):[]);},'get':function(){return this['getDataValue'](_0x8e33('0x5'))?this[_0x8e33('0x6')](_0x8e33('0x5'))['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x8e33('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8e33('0x2')]}};
\ No newline at end of file
+var _0xb0ec=['name','STRING','setDataValue','options','getDataValue','BOOLEAN','sequelize'];(function(_0x1ae805,_0x11ec25){var _0x1837d2=function(_0x358810){while(--_0x358810){_0x1ae805['push'](_0x1ae805['shift']());}};_0x1837d2(++_0x11ec25);}(_0xb0ec,0xe6));var _0xcb0e=function(_0x12d362,_0x575d68){_0x12d362=_0x12d362-0x0;var _0x406753=_0xb0ec[_0x12d362];return _0x406753;};'use strict';var Sequelize=require(_0xcb0e('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING'],'unique':_0xcb0e('0x1'),'allowNull':![]},'options':{'type':Sequelize[_0xcb0e('0x2')],'set':function(_0x20df26){this[_0xcb0e('0x3')](_0xcb0e('0x4'),_0x20df26?_0x20df26['join'](''):[]);},'get':function(){return this[_0xcb0e('0x5')](_0xcb0e('0x4'))?this[_0xcb0e('0x5')](_0xcb0e('0x4'))['split'](''):[];}},'auth':{'type':Sequelize[_0xcb0e('0x6')],'defaultValue':![]},'password':{'type':Sequelize[_0xcb0e('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xcb0e('0x2')]},'description':{'type':Sequelize[_0xcb0e('0x2')]}};
\ No newline at end of file
index 26594aa..18c535f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe205=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','ChanSpies','UserProfileResource','destroy','error','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format'];(function(_0xabbd2f,_0x44d05a){var _0x34a040=function(_0x3736d9){while(--_0x3736d9){_0xabbd2f['push'](_0xabbd2f['shift']());}};_0x34a040(++_0x44d05a);}(_0xe205,0xa7));var _0x5e20=function(_0x398d0f,_0x5dbf9d){_0x398d0f=_0x398d0f-0x0;var _0x1f54c2=_0xe205[_0x398d0f];return _0x1f54c2;};'use strict';var emlformat=require(_0x5e20('0x0'));var rimraf=require(_0x5e20('0x1'));var zipdir=require(_0x5e20('0x2'));var jsonpatch=require(_0x5e20('0x3'));var rp=require(_0x5e20('0x4'));var moment=require(_0x5e20('0x5'));var BPromise=require(_0x5e20('0x6'));var Mustache=require(_0x5e20('0x7'));var util=require(_0x5e20('0x8'));var path=require('path');var sox=require(_0x5e20('0x9'));var csv=require(_0x5e20('0xa'));var ejs=require(_0x5e20('0xb'));var fs=require('fs');var fs_extra=require(_0x5e20('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5e20('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5e20('0xa'));var querystring=require(_0x5e20('0xe'));var Papa=require('papaparse');var Redis=require(_0x5e20('0xf'));var authService=require(_0x5e20('0x10'));var qs=require(_0x5e20('0x11'));var as=require(_0x5e20('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e20('0x13'))(_0x5e20('0x14'));var utils=require(_0x5e20('0x15'));var config=require(_0x5e20('0x16'));var licenseUtil=require(_0x5e20('0x17'));var db=require(_0x5e20('0x18'))['db'];function respondWithStatusCode(_0x54deee,_0x19eacf){_0x19eacf=_0x19eacf||0xcc;return function(_0x29b7a2){if(_0x29b7a2){return _0x54deee[_0x5e20('0x19')](_0x19eacf);}return _0x54deee['status'](_0x19eacf)[_0x5e20('0x1a')]();};}function respondWithResult(_0x5d827e,_0x1f47f3){_0x1f47f3=_0x1f47f3||0xc8;return function(_0x5ba833){if(_0x5ba833){return _0x5d827e[_0x5e20('0x1b')](_0x1f47f3)[_0x5e20('0x1c')](_0x5ba833);}};}function respondWithFilteredResult(_0x275026,_0x148ada){return function(_0x294df8){if(_0x294df8){var _0x542b3c=typeof _0x148ada[_0x5e20('0x1d')]===_0x5e20('0x1e')&&typeof _0x148ada[_0x5e20('0x1f')]===_0x5e20('0x1e');var _0x2f194b=_0x294df8[_0x5e20('0x20')];var _0x1cc706=_0x542b3c?0x0:_0x148ada[_0x5e20('0x1d')];var _0x4d3e4a=_0x542b3c?_0x294df8[_0x5e20('0x20')]:_0x148ada[_0x5e20('0x1d')]+_0x148ada['limit'];var _0x295eb3;if(_0x4d3e4a>=_0x2f194b){_0x4d3e4a=_0x2f194b;_0x295eb3=0xc8;}else{_0x295eb3=0xce;}_0x275026[_0x5e20('0x1b')](_0x295eb3);return _0x275026[_0x5e20('0x21')](_0x5e20('0x22'),_0x1cc706+'-'+_0x4d3e4a+'/'+_0x2f194b)['json'](_0x294df8);}return null;};}function patchUpdates(_0x2954fc){return function(_0x50f222){try{jsonpatch['apply'](_0x50f222,_0x2954fc,!![]);}catch(_0x57c7c5){return BPromise['reject'](_0x57c7c5);}return _0x50f222[_0x5e20('0x23')]();};}function saveUpdates(_0x5cca90,_0x3d89e4){return function(_0x29b111){if(_0x29b111){return _0x29b111[_0x5e20('0x24')](_0x5cca90)[_0x5e20('0x25')](function(_0x3ef7fa){return _0x3ef7fa;});}return null;};}function removeEntity(_0x2d4614,_0x4c5732){return function(_0x15705f){if(_0x15705f){return _0x15705f['destroy']()['then'](function(){var _0x33993a=_0x15705f[_0x5e20('0x26')]({'plain':!![]});var _0x2bae08=_0x5e20('0x27');return db[_0x5e20('0x28')][_0x5e20('0x29')]({'where':{'type':_0x2bae08,'resourceId':_0x33993a['id']}})[_0x5e20('0x25')](function(){return _0x15705f;});})['then'](function(){_0x2d4614[_0x5e20('0x1b')](0xcc)[_0x5e20('0x1a')]();});}};}function handleEntityNotFound(_0x238758,_0x3032ef){return function(_0x4c799d){if(!_0x4c799d){_0x238758[_0x5e20('0x19')](0x194);}return _0x4c799d;};}function handleError(_0x2c5d80,_0x37f09a){_0x37f09a=_0x37f09a||0x1f4;return function(_0x222e7a){logger[_0x5e20('0x2a')](_0x222e7a[_0x5e20('0x2b')]);if(_0x222e7a['name']){delete _0x222e7a[_0x5e20('0x2c')];}_0x2c5d80[_0x5e20('0x1b')](_0x37f09a)['send'](_0x222e7a);};}exports[_0x5e20('0x2d')]=function(_0x21d1d8,_0x335f1e){var _0x4196a3={},_0x1548c8={},_0x395a27={'count':0x0,'rows':[]};var _0x4ff715=_[_0x5e20('0x2e')](db[_0x5e20('0x2f')][_0x5e20('0x30')],function(_0x5f2f1d){return{'name':_0x5f2f1d[_0x5e20('0x31')],'type':_0x5f2f1d[_0x5e20('0x32')][_0x5e20('0x33')]};});_0x1548c8[_0x5e20('0x34')]=_[_0x5e20('0x2e')](_0x4ff715,_0x5e20('0x2c'));_0x1548c8[_0x5e20('0x35')]=_['keys'](_0x21d1d8[_0x5e20('0x35')]);_0x1548c8[_0x5e20('0x36')]=_[_0x5e20('0x37')](_0x1548c8['model'],_0x1548c8[_0x5e20('0x35')]);_0x4196a3[_0x5e20('0x38')]=_[_0x5e20('0x37')](_0x1548c8[_0x5e20('0x34')],qs[_0x5e20('0x39')](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x39')]));_0x4196a3[_0x5e20('0x38')]=_0x4196a3[_0x5e20('0x38')][_0x5e20('0x3a')]?_0x4196a3[_0x5e20('0x38')]:_0x1548c8[_0x5e20('0x34')];if(!_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3b')]('nolimit')){_0x4196a3[_0x5e20('0x1f')]=qs['limit'](_0x21d1d8['query'][_0x5e20('0x1f')]);_0x4196a3[_0x5e20('0x1d')]=qs['offset'](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x1d')]);}_0x4196a3['order']=qs[_0x5e20('0x3c')](_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3c')]);_0x4196a3[_0x5e20('0x3d')]=qs[_0x5e20('0x36')](_[_0x5e20('0x3e')](_0x21d1d8[_0x5e20('0x35')],_0x1548c8[_0x5e20('0x36')]),_0x4ff715);if(_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3f')]){_0x4196a3[_0x5e20('0x3d')]=_[_0x5e20('0x40')](_0x4196a3[_0x5e20('0x3d')],{'$or':_[_0x5e20('0x2e')](_0x4ff715,function(_0x5ad136){if(_0x5ad136[_0x5e20('0x32')]!==_0x5e20('0x41')){var _0x17feb4={};_0x17feb4[_0x5ad136['name']]={'$like':'%'+_0x21d1d8[_0x5e20('0x35')][_0x5e20('0x3f')]+'%'};return _0x17feb4;}})});}_0x4196a3=_[_0x5e20('0x40')]({},_0x4196a3,_0x21d1d8[_0x5e20('0x42')]);var _0x39018d={'where':_0x4196a3['where']};return db[_0x5e20('0x2f')][_0x5e20('0x20')](_0x39018d)[_0x5e20('0x25')](function(_0x24c05f){_0x395a27[_0x5e20('0x20')]=_0x24c05f;if(_0x21d1d8[_0x5e20('0x35')]['includeAll']){_0x4196a3[_0x5e20('0x43')]=[{'all':!![]}];}return db[_0x5e20('0x2f')][_0x5e20('0x44')](_0x4196a3);})['then'](function(_0x2b031d){_0x395a27[_0x5e20('0x45')]=_0x2b031d;return _0x395a27;})[_0x5e20('0x25')](respondWithFilteredResult(_0x335f1e,_0x4196a3))[_0x5e20('0x46')](handleError(_0x335f1e,null));};exports[_0x5e20('0x47')]=function(_0x336d61,_0x113133){var _0x3edea7={'raw':![],'where':{'id':_0x336d61[_0x5e20('0x48')]['id']}},_0x5c9504={};_0x5c9504[_0x5e20('0x34')]=_[_0x5e20('0x49')](db['VoiceChanSpy'][_0x5e20('0x30')]);_0x5c9504['query']=_[_0x5e20('0x49')](_0x336d61[_0x5e20('0x35')]);_0x5c9504[_0x5e20('0x36')]=_[_0x5e20('0x37')](_0x5c9504[_0x5e20('0x34')],_0x5c9504['query']);_0x3edea7[_0x5e20('0x38')]=_['intersection'](_0x5c9504['model'],qs[_0x5e20('0x39')](_0x336d61[_0x5e20('0x35')][_0x5e20('0x39')]));_0x3edea7[_0x5e20('0x38')]=_0x3edea7[_0x5e20('0x38')][_0x5e20('0x3a')]?_0x3edea7[_0x5e20('0x38')]:_0x5c9504['model'];if(_0x336d61['query'][_0x5e20('0x4a')]){_0x3edea7[_0x5e20('0x43')]=[{'all':!![]}];}_0x3edea7=_['merge']({},_0x3edea7,_0x336d61[_0x5e20('0x42')]);return db[_0x5e20('0x2f')][_0x5e20('0x4b')](_0x3edea7)[_0x5e20('0x25')](handleEntityNotFound(_0x113133,null))[_0x5e20('0x25')](respondWithResult(_0x113133,null))['catch'](handleError(_0x113133,null));};exports[_0x5e20('0x4c')]=function(_0x245b52,_0x25491e){return db[_0x5e20('0x2f')][_0x5e20('0x4c')](_0x245b52[_0x5e20('0x4d')],{})[_0x5e20('0x25')](function(_0x4485bb){var _0x4fb004=_0x245b52['user']['get']({'plain':!![]});if(!_0x4fb004)throw new Error(_0x5e20('0x4e'));if(_0x4fb004[_0x5e20('0x4f')]==='user'){var _0x4392ca=_0x4485bb['get']({'plain':!![]});var _0x61a3f1='ChanSpies';return db[_0x5e20('0x50')]['find']({'where':{'name':_0x61a3f1,'userProfileId':_0x4fb004[_0x5e20('0x51')]},'raw':!![]})[_0x5e20('0x25')](function(_0x285d2e){if(_0x285d2e&&_0x285d2e[_0x5e20('0x52')]===0x0){return db[_0x5e20('0x28')][_0x5e20('0x4c')]({'name':_0x4392ca[_0x5e20('0x2c')],'resourceId':_0x4392ca['id'],'type':_0x285d2e[_0x5e20('0x2c')],'sectionId':_0x285d2e['id']},{})[_0x5e20('0x25')](function(){return _0x4485bb;});}else{return _0x4485bb;}})[_0x5e20('0x46')](function(_0x13b716){logger[_0x5e20('0x2a')](_0x5e20('0x53'),_0x13b716);throw _0x13b716;});}return _0x4485bb;})[_0x5e20('0x25')](respondWithResult(_0x25491e,0xc9))[_0x5e20('0x46')](handleError(_0x25491e,null));};exports[_0x5e20('0x24')]=function(_0x1619fa,_0x1ace56){if(_0x1619fa['body']['id']){delete _0x1619fa['body']['id'];}return db[_0x5e20('0x2f')]['find']({'where':{'id':_0x1619fa[_0x5e20('0x48')]['id']}})[_0x5e20('0x25')](handleEntityNotFound(_0x1ace56,null))[_0x5e20('0x25')](saveUpdates(_0x1619fa['body'],null))[_0x5e20('0x25')](respondWithResult(_0x1ace56,null))[_0x5e20('0x46')](handleError(_0x1ace56,null));};exports[_0x5e20('0x29')]=function(_0x5d0345,_0x5d2aa2){return db['VoiceChanSpy'][_0x5e20('0x4b')]({'where':{'id':_0x5d0345[_0x5e20('0x48')]['id']}})[_0x5e20('0x25')](handleEntityNotFound(_0x5d2aa2,null))[_0x5e20('0x25')](removeEntity(_0x5d2aa2,null))[_0x5e20('0x46')](handleError(_0x5d2aa2,null));};
\ No newline at end of file
+var _0x94b1=['catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','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','end','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','get','ChanSpies','UserProfileResource','destroy','error','stack','name','send','index','VoiceChanSpy','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','options','includeAll','rows','show','params','length','include'];(function(_0x131d4e,_0x141b61){var _0x268728=function(_0x4a9a1e){while(--_0x4a9a1e){_0x131d4e['push'](_0x131d4e['shift']());}};_0x268728(++_0x141b61);}(_0x94b1,0x102));var _0x194b=function(_0x5a35ce,_0x2eb8e1){_0x5a35ce=_0x5a35ce-0x0;var _0x19730a=_0x94b1[_0x5a35ce];return _0x19730a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x194b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x194b('0x1'));var rp=require(_0x194b('0x2'));var moment=require(_0x194b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x194b('0x4'));var util=require(_0x194b('0x5'));var path=require(_0x194b('0x6'));var sox=require(_0x194b('0x7'));var csv=require('to-csv');var ejs=require(_0x194b('0x8'));var fs=require('fs');var fs_extra=require(_0x194b('0x9'));var _=require('lodash');var squel=require(_0x194b('0xa'));var crypto=require(_0x194b('0xb'));var jsforce=require(_0x194b('0xc'));var deskjs=require(_0x194b('0xd'));var toCsv=require(_0x194b('0xe'));var querystring=require(_0x194b('0xf'));var Papa=require(_0x194b('0x10'));var Redis=require(_0x194b('0x11'));var authService=require(_0x194b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x194b('0x13'));var hardwareService=require(_0x194b('0x14'));var logger=require(_0x194b('0x15'))('api');var utils=require(_0x194b('0x16'));var config=require(_0x194b('0x17'));var licenseUtil=require(_0x194b('0x18'));var db=require(_0x194b('0x19'))['db'];function respondWithStatusCode(_0x2f2dec,_0x69d003){_0x69d003=_0x69d003||0xcc;return function(_0x394f1d){if(_0x394f1d){return _0x2f2dec[_0x194b('0x1a')](_0x69d003);}return _0x2f2dec[_0x194b('0x1b')](_0x69d003)[_0x194b('0x1c')]();};}function respondWithResult(_0x3170dc,_0xb5776f){_0xb5776f=_0xb5776f||0xc8;return function(_0x2a181c){if(_0x2a181c){return _0x3170dc[_0x194b('0x1b')](_0xb5776f)[_0x194b('0x1d')](_0x2a181c);}};}function respondWithFilteredResult(_0x15bac5,_0x1efd3f){return function(_0x15e7de){if(_0x15e7de){var _0x383579=typeof _0x1efd3f[_0x194b('0x1e')]===_0x194b('0x1f')&&typeof _0x1efd3f['limit']==='undefined';var _0x2c665a=_0x15e7de[_0x194b('0x20')];var _0x417b96=_0x383579?0x0:_0x1efd3f[_0x194b('0x1e')];var _0xc38e3f=_0x383579?_0x15e7de[_0x194b('0x20')]:_0x1efd3f[_0x194b('0x1e')]+_0x1efd3f[_0x194b('0x21')];var _0x5e1464;if(_0xc38e3f>=_0x2c665a){_0xc38e3f=_0x2c665a;_0x5e1464=0xc8;}else{_0x5e1464=0xce;}_0x15bac5[_0x194b('0x1b')](_0x5e1464);return _0x15bac5['set'](_0x194b('0x22'),_0x417b96+'-'+_0xc38e3f+'/'+_0x2c665a)[_0x194b('0x1d')](_0x15e7de);}return null;};}function patchUpdates(_0x476168){return function(_0x1b0f1b){try{jsonpatch[_0x194b('0x23')](_0x1b0f1b,_0x476168,!![]);}catch(_0xb4f90a){return BPromise[_0x194b('0x24')](_0xb4f90a);}return _0x1b0f1b['save']();};}function saveUpdates(_0x7bf529,_0x4d31fd){return function(_0x1c1fb8){if(_0x1c1fb8){return _0x1c1fb8[_0x194b('0x25')](_0x7bf529)[_0x194b('0x26')](function(_0xa7a966){return _0xa7a966;});}return null;};}function removeEntity(_0x3f2133,_0x2a9776){return function(_0x3f3aeb){if(_0x3f3aeb){return _0x3f3aeb['destroy']()[_0x194b('0x26')](function(){var _0x25eed2=_0x3f3aeb[_0x194b('0x27')]({'plain':!![]});var _0x1fa11d=_0x194b('0x28');return db[_0x194b('0x29')][_0x194b('0x2a')]({'where':{'type':_0x1fa11d,'resourceId':_0x25eed2['id']}})[_0x194b('0x26')](function(){return _0x3f3aeb;});})[_0x194b('0x26')](function(){_0x3f2133[_0x194b('0x1b')](0xcc)[_0x194b('0x1c')]();});}};}function handleEntityNotFound(_0x34e107,_0x3173e8){return function(_0x21d397){if(!_0x21d397){_0x34e107[_0x194b('0x1a')](0x194);}return _0x21d397;};}function handleError(_0x2a44c6,_0x250741){_0x250741=_0x250741||0x1f4;return function(_0x15da96){logger[_0x194b('0x2b')](_0x15da96[_0x194b('0x2c')]);if(_0x15da96[_0x194b('0x2d')]){delete _0x15da96['name'];}_0x2a44c6[_0x194b('0x1b')](_0x250741)[_0x194b('0x2e')](_0x15da96);};}exports[_0x194b('0x2f')]=function(_0x59b589,_0x5d1052){var _0x2225e7={},_0x60572a={},_0x42e690={'count':0x0,'rows':[]};var _0x3f7b95=_['map'](db[_0x194b('0x30')][_0x194b('0x31')],function(_0x25d42d){return{'name':_0x25d42d['fieldName'],'type':_0x25d42d['type'][_0x194b('0x32')]};});_0x60572a[_0x194b('0x33')]=_[_0x194b('0x34')](_0x3f7b95,_0x194b('0x2d'));_0x60572a[_0x194b('0x35')]=_[_0x194b('0x36')](_0x59b589[_0x194b('0x35')]);_0x60572a[_0x194b('0x37')]=_[_0x194b('0x38')](_0x60572a[_0x194b('0x33')],_0x60572a[_0x194b('0x35')]);_0x2225e7['attributes']=_[_0x194b('0x38')](_0x60572a['model'],qs[_0x194b('0x39')](_0x59b589[_0x194b('0x35')][_0x194b('0x39')]));_0x2225e7[_0x194b('0x3a')]=_0x2225e7['attributes']['length']?_0x2225e7['attributes']:_0x60572a[_0x194b('0x33')];if(!_0x59b589[_0x194b('0x35')][_0x194b('0x3b')]('nolimit')){_0x2225e7[_0x194b('0x21')]=qs[_0x194b('0x21')](_0x59b589['query'][_0x194b('0x21')]);_0x2225e7[_0x194b('0x1e')]=qs[_0x194b('0x1e')](_0x59b589['query']['offset']);}_0x2225e7[_0x194b('0x3c')]=qs['sort'](_0x59b589[_0x194b('0x35')][_0x194b('0x3d')]);_0x2225e7[_0x194b('0x3e')]=qs[_0x194b('0x37')](_[_0x194b('0x3f')](_0x59b589[_0x194b('0x35')],_0x60572a[_0x194b('0x37')]),_0x3f7b95);if(_0x59b589[_0x194b('0x35')]['filter']){_0x2225e7[_0x194b('0x3e')]=_[_0x194b('0x40')](_0x2225e7['where'],{'$or':_[_0x194b('0x34')](_0x3f7b95,function(_0x4ca7b0){if(_0x4ca7b0[_0x194b('0x41')]!==_0x194b('0x42')){var _0x158072={};_0x158072[_0x4ca7b0[_0x194b('0x2d')]]={'$like':'%'+_0x59b589['query']['filter']+'%'};return _0x158072;}})});}_0x2225e7=_['merge']({},_0x2225e7,_0x59b589[_0x194b('0x43')]);var _0x4ddcd8={'where':_0x2225e7[_0x194b('0x3e')]};return db['VoiceChanSpy'][_0x194b('0x20')](_0x4ddcd8)['then'](function(_0x4de5c3){_0x42e690[_0x194b('0x20')]=_0x4de5c3;if(_0x59b589['query'][_0x194b('0x44')]){_0x2225e7['include']=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x2225e7);})[_0x194b('0x26')](function(_0x49c623){_0x42e690[_0x194b('0x45')]=_0x49c623;return _0x42e690;})[_0x194b('0x26')](respondWithFilteredResult(_0x5d1052,_0x2225e7))['catch'](handleError(_0x5d1052,null));};exports[_0x194b('0x46')]=function(_0x33a06f,_0x372e7e){var _0x1709a={'raw':![],'where':{'id':_0x33a06f[_0x194b('0x47')]['id']}},_0x2a474c={};_0x2a474c[_0x194b('0x33')]=_['keys'](db[_0x194b('0x30')][_0x194b('0x31')]);_0x2a474c[_0x194b('0x35')]=_[_0x194b('0x36')](_0x33a06f[_0x194b('0x35')]);_0x2a474c[_0x194b('0x37')]=_['intersection'](_0x2a474c['model'],_0x2a474c[_0x194b('0x35')]);_0x1709a[_0x194b('0x3a')]=_[_0x194b('0x38')](_0x2a474c[_0x194b('0x33')],qs[_0x194b('0x39')](_0x33a06f[_0x194b('0x35')][_0x194b('0x39')]));_0x1709a['attributes']=_0x1709a[_0x194b('0x3a')][_0x194b('0x48')]?_0x1709a[_0x194b('0x3a')]:_0x2a474c['model'];if(_0x33a06f[_0x194b('0x35')][_0x194b('0x44')]){_0x1709a[_0x194b('0x49')]=[{'all':!![]}];}_0x1709a=_['merge']({},_0x1709a,_0x33a06f[_0x194b('0x43')]);return db['VoiceChanSpy']['find'](_0x1709a)['then'](handleEntityNotFound(_0x372e7e,null))[_0x194b('0x26')](respondWithResult(_0x372e7e,null))[_0x194b('0x4a')](handleError(_0x372e7e,null));};exports[_0x194b('0x4b')]=function(_0x1812fa,_0x4aabce){return db[_0x194b('0x30')][_0x194b('0x4b')](_0x1812fa['body'],{})['then'](function(_0x153411){var _0x3a8349=_0x1812fa[_0x194b('0x4c')][_0x194b('0x27')]({'plain':!![]});if(!_0x3a8349)throw new Error(_0x194b('0x4d'));if(_0x3a8349[_0x194b('0x4e')]===_0x194b('0x4c')){var _0x12b448=_0x153411[_0x194b('0x27')]({'plain':!![]});var _0x32d30a='ChanSpies';return db[_0x194b('0x4f')][_0x194b('0x50')]({'where':{'name':_0x32d30a,'userProfileId':_0x3a8349[_0x194b('0x51')]},'raw':!![]})['then'](function(_0x22f602){if(_0x22f602&&_0x22f602['autoAssociation']===0x0){return db[_0x194b('0x29')][_0x194b('0x4b')]({'name':_0x12b448[_0x194b('0x2d')],'resourceId':_0x12b448['id'],'type':_0x22f602[_0x194b('0x2d')],'sectionId':_0x22f602['id']},{})[_0x194b('0x26')](function(){return _0x153411;});}else{return _0x153411;}})['catch'](function(_0x1bbe25){logger[_0x194b('0x2b')](_0x194b('0x52'),_0x1bbe25);throw _0x1bbe25;});}return _0x153411;})[_0x194b('0x26')](respondWithResult(_0x4aabce,0xc9))[_0x194b('0x4a')](handleError(_0x4aabce,null));};exports[_0x194b('0x25')]=function(_0x48d64e,_0x337e45){if(_0x48d64e['body']['id']){delete _0x48d64e['body']['id'];}return db[_0x194b('0x30')][_0x194b('0x50')]({'where':{'id':_0x48d64e[_0x194b('0x47')]['id']}})['then'](handleEntityNotFound(_0x337e45,null))['then'](saveUpdates(_0x48d64e['body'],null))[_0x194b('0x26')](respondWithResult(_0x337e45,null))[_0x194b('0x4a')](handleError(_0x337e45,null));};exports['destroy']=function(_0x23f3ec,_0x12a785){return db[_0x194b('0x30')][_0x194b('0x50')]({'where':{'id':_0x23f3ec['params']['id']}})[_0x194b('0x26')](handleEntityNotFound(_0x12a785,null))[_0x194b('0x26')](removeEntity(_0x12a785,null))[_0x194b('0x4a')](handleError(_0x12a785,null));};
\ No newline at end of file
index d8075f9..1347961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7b9=['name','options','join','concat','User','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','util','bluebird','context','from-sip','format','%s%s','merge','Set','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0xe7b9,0x106));var _0x9e7b=function(_0x331e32,_0x34b00f){_0x331e32=_0x331e32-0x0;var _0x49f17e=_0xe7b9[_0x331e32];return _0x49f17e;};'use strict';var _=require('lodash');var util=require(_0x9e7b('0x0'));var BPromise=require(_0x9e7b('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x585b7d,_0x586868,_0x440370){var _0x5c27f3=0x1;var _0x70fae6=[];var _0x159840={'context':_0x586868[_0x9e7b('0x2')]||_0x9e7b('0x3'),'exten':util[_0x9e7b('0x4')](_0x9e7b('0x5'),_0x585b7d['prefix'],_0x440370),'type':'system','isApp':![],'ChanSpyId':_0x585b7d['id'],'UserId':_0x586868['id']};_0x70fae6['push'](_[_0x9e7b('0x6')]({'app':_0x9e7b('0x7'),'appdata':util[_0x9e7b('0x4')](_0x9e7b('0x8'),_0x9e7b('0x9')),'priority':_0x5c27f3++},_0x159840));if(_0x585b7d[_0x9e7b('0xa')]){_0x70fae6[_0x9e7b('0xb')](_['merge']({'app':_0x9e7b('0xc'),'appdata':util[_0x9e7b('0x4')](_0x9e7b('0xd'),_0x585b7d[_0x9e7b('0xe')]),'priority':_0x5c27f3++},_0x159840));}if(_0x585b7d[_0x9e7b('0xf')]){_0x70fae6[_0x9e7b('0xb')](_[_0x9e7b('0x6')]({'app':_0x9e7b('0x10'),'appdata':_0x585b7d['password'],'priority':_0x5c27f3++},_0x159840));}_0x70fae6[_0x9e7b('0xb')](_['merge']({'app':_0x9e7b('0x11'),'appdata':util[_0x9e7b('0x4')]('SIP/%s,%s',_0x586868[_0x9e7b('0x12')],_0x585b7d[_0x9e7b('0x13')]?_0x585b7d['options'][_0x9e7b('0x14')](''):''),'priority':_0x5c27f3++},_0x159840));if(_0x585b7d[_0x9e7b('0xa')]){_0x70fae6[_0x9e7b('0xb')](_[_0x9e7b('0x6')]({'app':'StopMixMonitor','priority':_0x5c27f3++},_0x159840));}return _0x70fae6;};var getChanSpyApplications=function(_0x533d91,_0x6eb39d){var _0x401fef=[];for(var _0x2b34f1=0x0,_0x4c5c5f=0x1;_0x2b34f1<_0x6eb39d['length'];_0x2b34f1++,_0x4c5c5f=0x1){_0x401fef=_0x401fef[_0x9e7b('0x15')](getUserApplications(_0x533d91,_0x6eb39d[_0x2b34f1],_0x6eb39d[_0x2b34f1]['internal']));if(_0x6eb39d[_0x2b34f1]['internal']!=_0x6eb39d[_0x2b34f1][_0x9e7b('0x12')]){_0x401fef=_0x401fef[_0x9e7b('0x15')](getUserApplications(_0x533d91,_0x6eb39d[_0x2b34f1],_0x6eb39d[_0x2b34f1][_0x9e7b('0x12')]));}}return _0x401fef;};var getChanSpyPromise=function(_0x1df6d1,_0x555553){return new BPromise(function(_0x39aaef,_0x94c477){return _0x1df6d1[_0x9e7b('0x16')]['findAll']({'attributes':['id',_0x9e7b('0x12'),'internal'],'where':{'role':_0x9e7b('0x17'),'chanspy':!![]},'raw':!![]})['then'](function(_0x398954){if(_0x398954){return _0x39aaef(getChanSpyApplications(_0x555553,_0x398954));}return _0x39aaef([]);})[_0x9e7b('0x18')](function(_0x32154f){_0x94c477(_0x32154f);});});};module[_0x9e7b('0x19')]=function(_0x38c526,_0x252a7e){var _0x50cb07=_0x38c526[_0x9e7b('0x1a')];return _0x38c526[_0x9e7b('0x1b')](_0x9e7b('0x1c'),attributes,{'tableName':_0x9e7b('0x1d'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x59ce0f,_0x121951,_0x16acd5){return getChanSpyPromise(_0x50cb07,_0x59ce0f)[_0x9e7b('0x1e')](function(_0x405cd0){if(_0x405cd0&&_0x405cd0[_0x9e7b('0x1f')]){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x21')](_0x405cd0);}})[_0x9e7b('0x1e')](function(){_0x16acd5();})[_0x9e7b('0x18')](function(_0x3c6a17){_0x16acd5(_0x3c6a17);});},'afterUpdate':function(_0x3f27dd,_0x38d172,_0x5d6571){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x22')]({'where':{'ChanSpyId':_0x3f27dd['id']}})[_0x9e7b('0x1e')](function(){return getChanSpyPromise(_0x50cb07,_0x3f27dd);})[_0x9e7b('0x1e')](function(_0x2ca28f){if(_0x2ca28f&&_0x2ca28f[_0x9e7b('0x1f')]){return _0x50cb07[_0x9e7b('0x20')][_0x9e7b('0x21')](_0x2ca28f);}})[_0x9e7b('0x1e')](function(){_0x5d6571();})[_0x9e7b('0x18')](function(_0x1086fd){_0x5d6571(_0x1086fd);});},'afterDestroy':function(_0x1fb41a,_0x2c5433,_0x2125a6){return _0x50cb07['VoiceExtension'][_0x9e7b('0x22')]({'where':{'ChanSpyId':_0x1fb41a['id']}})['then'](function(){_0x2125a6();})[_0x9e7b('0x18')](function(_0x536817){_0x2125a6(_0x536817);});}}});};
\ No newline at end of file
+var _0x9882=['CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','length','concat','findAll','internal','agent','then','catch','exports','define','voice_chanspy','VoiceExtension','bulkCreate','destroy','util','./voiceChanSpy.attributes','context','from-sip','prefix','system','push','merge','Set','format'];(function(_0x11bd30,_0x203d2f){var _0x1bfccd=function(_0x2930f1){while(--_0x2930f1){_0x11bd30['push'](_0x11bd30['shift']());}};_0x1bfccd(++_0x203d2f);}(_0x9882,0x143));var _0x2988=function(_0x5b7ea8,_0xfc59be){_0x5b7ea8=_0x5b7ea8-0x0;var _0x58929e=_0x9882[_0x5b7ea8];return _0x58929e;};'use strict';var _=require('lodash');var util=require(_0x2988('0x0'));var BPromise=require('bluebird');var attributes=require(_0x2988('0x1'));var getUserApplications=function(_0x1c6da9,_0x7d163e,_0x8ce1a0){var _0x2d0694=0x1;var _0x287bc2=[];var _0x23c251={'context':_0x7d163e[_0x2988('0x2')]||_0x2988('0x3'),'exten':util['format']('%s%s',_0x1c6da9[_0x2988('0x4')],_0x8ce1a0),'type':_0x2988('0x5'),'isApp':![],'ChanSpyId':_0x1c6da9['id'],'UserId':_0x7d163e['id']};_0x287bc2[_0x2988('0x6')](_[_0x2988('0x7')]({'app':_0x2988('0x8'),'appdata':util[_0x2988('0x9')](_0x2988('0xa'),_0x2988('0xb')),'priority':_0x2d0694++},_0x23c251));if(_0x1c6da9[_0x2988('0xc')]){_0x287bc2[_0x2988('0x6')](_[_0x2988('0x7')]({'app':_0x2988('0xd'),'appdata':util[_0x2988('0x9')](_0x2988('0xe'),_0x1c6da9[_0x2988('0xf')]),'priority':_0x2d0694++},_0x23c251));}if(_0x1c6da9[_0x2988('0x10')]){_0x287bc2['push'](_['merge']({'app':_0x2988('0x11'),'appdata':_0x1c6da9[_0x2988('0x12')],'priority':_0x2d0694++},_0x23c251));}_0x287bc2[_0x2988('0x6')](_[_0x2988('0x7')]({'app':_0x2988('0x13'),'appdata':util['format']('SIP/%s,%s',_0x7d163e[_0x2988('0x14')],_0x1c6da9[_0x2988('0x15')]?_0x1c6da9[_0x2988('0x15')][_0x2988('0x16')](''):''),'priority':_0x2d0694++},_0x23c251));if(_0x1c6da9[_0x2988('0xc')]){_0x287bc2['push'](_[_0x2988('0x7')]({'app':_0x2988('0x17'),'priority':_0x2d0694++},_0x23c251));}return _0x287bc2;};var getChanSpyApplications=function(_0x227b18,_0x5b9492){var _0x500e9a=[];for(var _0x4f2440=0x0,_0x5c2655=0x1;_0x4f2440<_0x5b9492[_0x2988('0x18')];_0x4f2440++,_0x5c2655=0x1){_0x500e9a=_0x500e9a['concat'](getUserApplications(_0x227b18,_0x5b9492[_0x4f2440],_0x5b9492[_0x4f2440]['internal']));if(_0x5b9492[_0x4f2440]['internal']!=_0x5b9492[_0x4f2440][_0x2988('0x14')]){_0x500e9a=_0x500e9a[_0x2988('0x19')](getUserApplications(_0x227b18,_0x5b9492[_0x4f2440],_0x5b9492[_0x4f2440][_0x2988('0x14')]));}}return _0x500e9a;};var getChanSpyPromise=function(_0x52c093,_0x33bd37){return new BPromise(function(_0xd79f82,_0x42dff5){return _0x52c093['User'][_0x2988('0x1a')]({'attributes':['id',_0x2988('0x14'),_0x2988('0x1b')],'where':{'role':_0x2988('0x1c'),'chanspy':!![]},'raw':!![]})[_0x2988('0x1d')](function(_0x59acb1){if(_0x59acb1){return _0xd79f82(getChanSpyApplications(_0x33bd37,_0x59acb1));}return _0xd79f82([]);})[_0x2988('0x1e')](function(_0x1a6028){_0x42dff5(_0x1a6028);});});};module[_0x2988('0x1f')]=function(_0x446a59,_0x21ed70){var _0x25a33f=_0x446a59['models'];return _0x446a59[_0x2988('0x20')]('VoiceChanSpy',attributes,{'tableName':_0x2988('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3161aa,_0x499d00,_0x16d4ef){return getChanSpyPromise(_0x25a33f,_0x3161aa)['then'](function(_0x4dd91b){if(_0x4dd91b&&_0x4dd91b[_0x2988('0x18')]){return _0x25a33f[_0x2988('0x22')][_0x2988('0x23')](_0x4dd91b);}})[_0x2988('0x1d')](function(){_0x16d4ef();})['catch'](function(_0x27fa8a){_0x16d4ef(_0x27fa8a);});},'afterUpdate':function(_0x4e01af,_0x428a00,_0x3da522){return _0x25a33f['VoiceExtension'][_0x2988('0x24')]({'where':{'ChanSpyId':_0x4e01af['id']}})[_0x2988('0x1d')](function(){return getChanSpyPromise(_0x25a33f,_0x4e01af);})[_0x2988('0x1d')](function(_0x459410){if(_0x459410&&_0x459410[_0x2988('0x18')]){return _0x25a33f[_0x2988('0x22')][_0x2988('0x23')](_0x459410);}})[_0x2988('0x1d')](function(){_0x3da522();})[_0x2988('0x1e')](function(_0x317e63){_0x3da522(_0x317e63);});},'afterDestroy':function(_0xd4fa74,_0x5b0f67,_0x21ff53){return _0x25a33f['VoiceExtension'][_0x2988('0x24')]({'where':{'ChanSpyId':_0xd4fa74['id']}})[_0x2988('0x1d')](function(){_0x21ff53();})[_0x2988('0x1e')](function(_0x4a29e0){_0x21ff53(_0x4a29e0);});}}});};
\ No newline at end of file
index 99a6dc9..502fe01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b20=['request','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3f5d89,_0x19134a){var _0x296170=function(_0x5e30de){while(--_0x5e30de){_0x3f5d89['push'](_0x3f5d89['shift']());}};_0x296170(++_0x19134a);}(_0x6b20,0xd1));var _0x06b2=function(_0x2da898,_0x1e3858){_0x2da898=_0x2da898-0x0;var _0x4b0b19=_0x6b20[_0x2da898];return _0x4b0b19;};'use strict';var _=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var moment=require('moment');var BPromise=require(_0x06b2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06b2('0x3'));var db=require(_0x06b2('0x4'))['db'];var utils=require(_0x06b2('0x5'));var logger=require('../../config/logger')(_0x06b2('0x6'));var config=require(_0x06b2('0x7'));var jayson=require(_0x06b2('0x8'));var client=jayson[_0x06b2('0x9')][_0x06b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37b825,_0x26a325,_0x4e6d3b){return new BPromise(function(_0x21cd31,_0x1828e4){return client[_0x06b2('0xb')](_0x37b825,_0x4e6d3b)['then'](function(_0x37ace0){logger['info'](_0x06b2('0xc'),_0x26a325,'request\x20sent');logger['debug'](_0x06b2('0xd'),_0x26a325,_0x06b2('0xe'),JSON['stringify'](_0x37ace0));if(_0x37ace0[_0x06b2('0xf')]){if(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x10')]===0x1f4){logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x1828e4(_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);}logger[_0x06b2('0xf')](_0x06b2('0xc'),_0x26a325,_0x37ace0[_0x06b2('0xf')][_0x06b2('0x11')]);return _0x21cd31(_0x37ace0['error'][_0x06b2('0x11')]);}else{logger[_0x06b2('0x12')](_0x06b2('0xc'),_0x26a325,_0x06b2('0xe'));_0x21cd31(_0x37ace0[_0x06b2('0x13')][_0x06b2('0x11')]);}})['catch'](function(_0x17e69b){logger[_0x06b2('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x26a325,_0x17e69b);_0x1828e4(_0x17e69b);});});}
\ No newline at end of file
+var _0x402f=['http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','message','error','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x123a48,_0x45d8d9){var _0x235b7b=function(_0x5353fa){while(--_0x5353fa){_0x123a48['push'](_0x123a48['shift']());}};_0x235b7b(++_0x45d8d9);}(_0x402f,0x6f));var _0xf402=function(_0x569964,_0x44e8b1){_0x569964=_0x569964-0x0;var _0x3766ea=_0x402f[_0x569964];return _0x3766ea;};'use strict';var _=require(_0xf402('0x0'));var util=require('util');var moment=require(_0xf402('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf402('0x2'));var db=require(_0xf402('0x3'))['db'];var utils=require(_0xf402('0x4'));var logger=require('../../config/logger')(_0xf402('0x5'));var config=require('../../config/environment');var jayson=require(_0xf402('0x6'));var client=jayson[_0xf402('0x7')][_0xf402('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a8774,_0xa1b27d,_0x55c515){return new BPromise(function(_0x4d1771,_0x2f0ffe){return client[_0xf402('0x9')](_0x2a8774,_0x55c515)[_0xf402('0xa')](function(_0xdc18e0){logger[_0xf402('0xb')](_0xf402('0xc'),_0xa1b27d,_0xf402('0xd'));logger[_0xf402('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'),JSON['stringify'](_0xdc18e0));if(_0xdc18e0['error']){if(_0xdc18e0['error']['code']===0x1f4){logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0['error']['message']);return _0x2f0ffe(_0xdc18e0['error'][_0xf402('0xf')]);}logger['error'](_0xf402('0xc'),_0xa1b27d,_0xdc18e0[_0xf402('0x10')][_0xf402('0xf')]);return _0x4d1771(_0xdc18e0[_0xf402('0x10')]['message']);}else{logger[_0xf402('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0xa1b27d,_0xf402('0xd'));_0x4d1771(_0xdc18e0['result']['message']);}})['catch'](function(_0xb45d00){logger[_0xf402('0x10')](_0xf402('0xc'),_0xa1b27d,_0xb45d00);_0x2f0ffe(_0xb45d00);});});}
\ No newline at end of file
index 8afdb57..f771e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e37=['put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post'];(function(_0x4aa4e6,_0x278c45){var _0x322588=function(_0x19279d){while(--_0x19279d){_0x4aa4e6['push'](_0x4aa4e6['shift']());}};_0x322588(++_0x278c45);}(_0x1e37,0x1b5));var _0x71e3=function(_0x57e476,_0x453bb0){_0x57e476=_0x57e476-0x0;var _0x4a7458=_0x1e37[_0x57e476];return _0x4a7458;};'use strict';var multer=require(_0x71e3('0x0'));var util=require('util');var path=require(_0x71e3('0x1'));var timeout=require(_0x71e3('0x2'));var express=require('express');var router=express[_0x71e3('0x3')]();var fs_extra=require(_0x71e3('0x4'));var auth=require(_0x71e3('0x5'));var interaction=require(_0x71e3('0x6'));var config=require('../../config/environment');var controller=require('./voiceContext.controller');router[_0x71e3('0x7')]('/',auth[_0x71e3('0x8')](),controller[_0x71e3('0x9')]);router['get'](_0x71e3('0xa'),auth[_0x71e3('0x8')](),controller[_0x71e3('0xb')]);router[_0x71e3('0xc')]('/',auth[_0x71e3('0x8')](),controller['create']);router[_0x71e3('0xd')](_0x71e3('0xa'),auth['isAuthenticated'](),controller[_0x71e3('0xe')]);router[_0x71e3('0xf')](_0x71e3('0xa'),auth['isAuthenticated'](),controller[_0x71e3('0x10')]);module[_0x71e3('0x11')]=router;
\ No newline at end of file
+var _0x053b=['./voiceContext.controller','get','isAuthenticated','index','/:id','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0x053b,0x107));var _0xb053=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x053b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb053('0x0'));var util=require(_0xb053('0x1'));var path=require(_0xb053('0x2'));var timeout=require(_0xb053('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb053('0x4'));var auth=require(_0xb053('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb053('0x6'));var controller=require(_0xb053('0x7'));router[_0xb053('0x8')]('/',auth[_0xb053('0x9')](),controller[_0xb053('0xa')]);router[_0xb053('0x8')](_0xb053('0xb'),auth[_0xb053('0x9')](),controller['show']);router[_0xb053('0xc')]('/',auth[_0xb053('0x9')](),controller['create']);router[_0xb053('0xd')](_0xb053('0xb'),auth[_0xb053('0x9')](),controller[_0xb053('0xe')]);router[_0xb053('0xf')](_0xb053('0xb'),auth['isAuthenticated'](),controller[_0xb053('0x10')]);module[_0xb053('0x11')]=router;
\ No newline at end of file
index 2e59e34..577d930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa2=['BOOLEAN','sequelize','exports','name','STRING'];(function(_0x4ff92f,_0x40ad0f){var _0x1a688c=function(_0x1571fd){while(--_0x1571fd){_0x4ff92f['push'](_0x4ff92f['shift']());}};_0x1a688c(++_0x40ad0f);}(_0xdfa2,0x17d));var _0x2dfa=function(_0x3218bb,_0x104689){_0x3218bb=_0x3218bb-0x0;var _0x5c479e=_0xdfa2[_0x3218bb];return _0x5c479e;};'use strict';var Sequelize=require(_0x2dfa('0x0'));module[_0x2dfa('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x2dfa('0x2')},'description':{'type':Sequelize[_0x2dfa('0x3')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x2dfa('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1419=['sequelize','exports','STRING','BOOLEAN'];(function(_0x3a5aa0,_0x2437fd){var _0x2b4808=function(_0x4e8d85){while(--_0x4e8d85){_0x3a5aa0['push'](_0x3a5aa0['shift']());}};_0x2b4808(++_0x2437fd);}(_0x1419,0x1dc));var _0x9141=function(_0x5c3e8,_0x55e438){_0x5c3e8=_0x5c3e8-0x0;var _0x5c5050=_0x1419[_0x5c3e8];return _0x5c5050;};'use strict';var Sequelize=require(_0x9141('0x0'));module[_0x9141('0x1')]={'name':{'type':Sequelize[_0x9141('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x9141('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x9141('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 7264d72..92a7d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecbe=['name','send','map','VoiceContext','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','length','find','create','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','join','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','client','http','request','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Contexts','UserProfileResource'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xecbe,0x9b));var _0xeecb=function(_0x2109a8,_0x3a7797){_0x2109a8=_0x2109a8-0x0;var _0x522094=_0xecbe[_0x2109a8];return _0x522094;};'use strict';var emlformat=require(_0xeecb('0x0'));var rimraf=require(_0xeecb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeecb('0x2'));var moment=require(_0xeecb('0x3'));var BPromise=require(_0xeecb('0x4'));var Mustache=require(_0xeecb('0x5'));var util=require(_0xeecb('0x6'));var path=require(_0xeecb('0x7'));var sox=require(_0xeecb('0x8'));var csv=require(_0xeecb('0x9'));var ejs=require(_0xeecb('0xa'));var fs=require('fs');var fs_extra=require(_0xeecb('0xb'));var _=require(_0xeecb('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xeecb('0xd'));var deskjs=require(_0xeecb('0xe'));var toCsv=require(_0xeecb('0x9'));var querystring=require(_0xeecb('0xf'));var Papa=require('papaparse');var Redis=require(_0xeecb('0x10'));var authService=require(_0xeecb('0x11'));var qs=require(_0xeecb('0x12'));var as=require(_0xeecb('0x13'));var hardwareService=require(_0xeecb('0x14'));var logger=require(_0xeecb('0x15'))(_0xeecb('0x16'));var utils=require(_0xeecb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xeecb('0x18'));var db=require(_0xeecb('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xeecb('0x1a')][_0xeecb('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x20be3f,_0x53b429,_0x20851c,_0x2637b9){return new BPromise(function(_0x5b4749,_0x580ca3){var _0x199792=_0x2637b9||client;return _0x199792[_0xeecb('0x1c')](_0x20be3f,_0x20851c)['then'](function(_0xcb598){logger['info'](_0xeecb('0x1d'),_0x53b429,_0xeecb('0x1e'));logger[_0xeecb('0x1f')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x53b429,_0xeecb('0x1e'),JSON[_0xeecb('0x20')](_0xcb598));if(_0xcb598['error']){if(_0xcb598[_0xeecb('0x21')]['code']===0x1f4){logger[_0xeecb('0x21')](_0xeecb('0x1d'),_0x53b429,_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);return _0x580ca3(_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);}logger[_0xeecb('0x21')]('VoiceContext,\x20%s,\x20%s',_0x53b429,_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);return _0x5b4749(_0xcb598[_0xeecb('0x21')][_0xeecb('0x22')]);}else{logger[_0xeecb('0x23')](_0xeecb('0x1d'),_0x53b429,_0xeecb('0x1e'));_0x5b4749(_0xcb598[_0xeecb('0x24')][_0xeecb('0x22')]);}})[_0xeecb('0x25')](function(_0x47e256){logger[_0xeecb('0x21')](_0xeecb('0x1d'),_0x53b429,_0x47e256);_0x580ca3(_0x47e256);});});}function respondWithStatusCode(_0x394faa,_0x37479d){_0x37479d=_0x37479d||0xcc;return function(_0x5235f7){if(_0x5235f7){return _0x394faa[_0xeecb('0x26')](_0x37479d);}return _0x394faa[_0xeecb('0x27')](_0x37479d)[_0xeecb('0x28')]();};}function respondWithResult(_0x186ebb,_0x5721da){_0x5721da=_0x5721da||0xc8;return function(_0xd446da){if(_0xd446da){return _0x186ebb[_0xeecb('0x27')](_0x5721da)[_0xeecb('0x29')](_0xd446da);}};}function respondWithFilteredResult(_0x36410a,_0x1489c4){return function(_0x4e37b6){if(_0x4e37b6){var _0x1b27d1=typeof _0x1489c4[_0xeecb('0x2a')]==='undefined'&&typeof _0x1489c4[_0xeecb('0x2b')]===_0xeecb('0x2c');var _0x233cd=_0x4e37b6[_0xeecb('0x2d')];var _0x27211c=_0x1b27d1?0x0:_0x1489c4[_0xeecb('0x2a')];var _0xe3a151=_0x1b27d1?_0x4e37b6[_0xeecb('0x2d')]:_0x1489c4['offset']+_0x1489c4[_0xeecb('0x2b')];var _0x409baf;if(_0xe3a151>=_0x233cd){_0xe3a151=_0x233cd;_0x409baf=0xc8;}else{_0x409baf=0xce;}_0x36410a[_0xeecb('0x27')](_0x409baf);return _0x36410a[_0xeecb('0x2e')](_0xeecb('0x2f'),_0x27211c+'-'+_0xe3a151+'/'+_0x233cd)[_0xeecb('0x29')](_0x4e37b6);}return null;};}function patchUpdates(_0x5f2567){return function(_0x368115){try{jsonpatch[_0xeecb('0x30')](_0x368115,_0x5f2567,!![]);}catch(_0x3f6f7f){return BPromise[_0xeecb('0x31')](_0x3f6f7f);}return _0x368115[_0xeecb('0x32')]();};}function saveUpdates(_0x1fdb54,_0x475cbb){return function(_0x27eb79){if(_0x27eb79){return _0x27eb79[_0xeecb('0x33')](_0x1fdb54)[_0xeecb('0x34')](function(_0x22378b){return _0x22378b;});}return null;};}function removeEntity(_0x1aec96,_0x5ac01d){return function(_0x187a6b){if(_0x187a6b){return _0x187a6b[_0xeecb('0x35')]()[_0xeecb('0x34')](function(){var _0x32038b=_0x187a6b[_0xeecb('0x36')]({'plain':!![]});var _0x302ce2=_0xeecb('0x37');return db[_0xeecb('0x38')][_0xeecb('0x35')]({'where':{'type':_0x302ce2,'resourceId':_0x32038b['id']}})[_0xeecb('0x34')](function(){return _0x187a6b;});})[_0xeecb('0x34')](function(){_0x1aec96[_0xeecb('0x27')](0xcc)[_0xeecb('0x28')]();});}};}function handleEntityNotFound(_0x2dfb51,_0x109a13){return function(_0x3fffa7){if(!_0x3fffa7){_0x2dfb51[_0xeecb('0x26')](0x194);}return _0x3fffa7;};}function handleError(_0x10a281,_0x5cda34){_0x5cda34=_0x5cda34||0x1f4;return function(_0x307a1d){logger[_0xeecb('0x21')](_0x307a1d['stack']);if(_0x307a1d[_0xeecb('0x39')]){delete _0x307a1d[_0xeecb('0x39')];}_0x10a281[_0xeecb('0x27')](_0x5cda34)[_0xeecb('0x3a')](_0x307a1d);};}exports['index']=function(_0x921134,_0x3c5450){var _0x305764={},_0x508818={},_0x572879={'count':0x0,'rows':[]};var _0x3a780d=_[_0xeecb('0x3b')](db[_0xeecb('0x3c')]['rawAttributes'],function(_0x4a8c67){return{'name':_0x4a8c67[_0xeecb('0x3d')],'type':_0x4a8c67[_0xeecb('0x3e')][_0xeecb('0x3f')]};});_0x508818['model']=_[_0xeecb('0x3b')](_0x3a780d,'name');_0x508818[_0xeecb('0x40')]=_['keys'](_0x921134[_0xeecb('0x40')]);_0x508818[_0xeecb('0x41')]=_[_0xeecb('0x42')](_0x508818[_0xeecb('0x43')],_0x508818[_0xeecb('0x40')]);_0x305764[_0xeecb('0x44')]=_[_0xeecb('0x42')](_0x508818['model'],qs[_0xeecb('0x45')](_0x921134[_0xeecb('0x40')]['fields']));_0x305764[_0xeecb('0x44')]=_0x305764[_0xeecb('0x44')]['length']?_0x305764[_0xeecb('0x44')]:_0x508818[_0xeecb('0x43')];if(!_0x921134['query'][_0xeecb('0x46')]('nolimit')){_0x305764['limit']=qs[_0xeecb('0x2b')](_0x921134[_0xeecb('0x40')][_0xeecb('0x2b')]);_0x305764[_0xeecb('0x2a')]=qs[_0xeecb('0x2a')](_0x921134['query'][_0xeecb('0x2a')]);}_0x305764['order']=qs[_0xeecb('0x47')](_0x921134[_0xeecb('0x40')][_0xeecb('0x47')]);_0x305764['where']=qs['filters'](_[_0xeecb('0x48')](_0x921134['query'],_0x508818[_0xeecb('0x41')]),_0x3a780d);if(_0x921134[_0xeecb('0x40')][_0xeecb('0x49')]){_0x305764[_0xeecb('0x4a')]=_[_0xeecb('0x4b')](_0x305764[_0xeecb('0x4a')],{'$or':_[_0xeecb('0x3b')](_0x3a780d,function(_0x182795){if(_0x182795['type']!==_0xeecb('0x4c')){var _0x427099={};_0x427099[_0x182795['name']]={'$like':'%'+_0x921134['query'][_0xeecb('0x49')]+'%'};return _0x427099;}})});}_0x305764=_[_0xeecb('0x4b')]({},_0x305764,_0x921134[_0xeecb('0x4d')]);var _0x36fdb0={'where':_0x305764[_0xeecb('0x4a')]};return db[_0xeecb('0x3c')][_0xeecb('0x2d')](_0x36fdb0)['then'](function(_0x25c31d){_0x572879[_0xeecb('0x2d')]=_0x25c31d;if(_0x921134[_0xeecb('0x40')][_0xeecb('0x4e')]){_0x305764[_0xeecb('0x4f')]=[{'all':!![]}];}return db['VoiceContext'][_0xeecb('0x50')](_0x305764);})[_0xeecb('0x34')](function(_0x291ec2){_0x572879[_0xeecb('0x51')]=_0x291ec2;return _0x572879;})['then'](respondWithFilteredResult(_0x3c5450,_0x305764))[_0xeecb('0x25')](handleError(_0x3c5450,null));};exports[_0xeecb('0x52')]=function(_0x87265f,_0x32f31a){var _0x61aec6={'raw':![],'where':{'id':_0x87265f[_0xeecb('0x53')]['id']}},_0x265874={};_0x265874[_0xeecb('0x43')]=_[_0xeecb('0x54')](db[_0xeecb('0x3c')][_0xeecb('0x55')]);_0x265874[_0xeecb('0x40')]=_['keys'](_0x87265f[_0xeecb('0x40')]);_0x265874['filters']=_[_0xeecb('0x42')](_0x265874[_0xeecb('0x43')],_0x265874['query']);_0x61aec6[_0xeecb('0x44')]=_[_0xeecb('0x42')](_0x265874[_0xeecb('0x43')],qs[_0xeecb('0x45')](_0x87265f['query'][_0xeecb('0x45')]));_0x61aec6[_0xeecb('0x44')]=_0x61aec6[_0xeecb('0x44')][_0xeecb('0x56')]?_0x61aec6[_0xeecb('0x44')]:_0x265874[_0xeecb('0x43')];if(_0x87265f[_0xeecb('0x40')][_0xeecb('0x4e')]){_0x61aec6['include']=[{'all':!![]}];}_0x61aec6=_[_0xeecb('0x4b')]({},_0x61aec6,_0x87265f[_0xeecb('0x4d')]);return db[_0xeecb('0x3c')][_0xeecb('0x57')](_0x61aec6)[_0xeecb('0x34')](handleEntityNotFound(_0x32f31a,null))[_0xeecb('0x34')](respondWithResult(_0x32f31a,null))['catch'](handleError(_0x32f31a,null));};exports[_0xeecb('0x58')]=function(_0x2d3421,_0x43b324,_0x549310){var _0x76492f;return db[_0xeecb('0x3c')][_0xeecb('0x58')](_0x2d3421['body'],{'raw':!![]})[_0xeecb('0x34')](function(_0x459493){_0x76492f=_0x459493;return db['VoiceContext'][_0xeecb('0x50')]({'raw':!![]});})[_0xeecb('0x34')](function(_0x488698){var _0x55c5d0=fs[_0xeecb('0x59')](path['join'](config[_0xeecb('0x5a')],_0xeecb('0x5b')),_0xeecb('0x5c'));var _0x2804a6=ejs[_0xeecb('0x5d')](_0x55c5d0,{'contexts':_0x488698||[]});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x2804a6);})['then'](function(){return respondWithRpcPromise(_0xeecb('0x60'),_0xeecb('0x58'),{'module':_0xeecb('0x61')});})[_0xeecb('0x34')](function(){var _0x43f314=_0x2d3421[_0xeecb('0x62')][_0xeecb('0x36')]({'plain':!![]});if(!_0x43f314)throw new Error(_0xeecb('0x63'));if(_0x43f314[_0xeecb('0x64')]===_0xeecb('0x62')){var _0x57b8cf=_0x76492f[_0xeecb('0x36')]({'plain':!![]});return db[_0xeecb('0x65')][_0xeecb('0x57')]({'where':{'name':_0xeecb('0x37'),'userProfileId':_0x43f314[_0xeecb('0x66')]},'raw':!![]})[_0xeecb('0x34')](function(_0x23af82){if(_0x23af82&&_0x23af82['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x57b8cf[_0xeecb('0x39')],'resourceId':_0x57b8cf['id'],'type':_0x23af82['name'],'sectionId':_0x23af82['id']},{})['then'](function(){return _0x76492f;});}else{return _0x76492f;}})[_0xeecb('0x25')](function(_0x9e06c5){logger['error'](_0xeecb('0x67'),_0x9e06c5);throw _0x9e06c5;});}return _0x76492f;})[_0xeecb('0x34')](respondWithResult(_0x43b324,0xc9))['catch'](handleError(_0x43b324,null));};exports[_0xeecb('0x33')]=function(_0x5272bd,_0x544d96,_0xd9d5c7){var _0x56ba2b;return db[_0xeecb('0x3c')][_0xeecb('0x57')]({'where':{'id':_0x5272bd[_0xeecb('0x53')]['id']}})[_0xeecb('0x34')](handleEntityNotFound(_0x544d96,null))['then'](saveUpdates(_0x5272bd[_0xeecb('0x68')],null))['then'](function(_0x499663){if(_0x499663){_0x56ba2b=_0x499663;return db[_0xeecb('0x3c')][_0xeecb('0x50')]({'raw':!![]});}})[_0xeecb('0x34')](function(_0x3c9298){var _0x33f1ef=fs[_0xeecb('0x59')](path[_0xeecb('0x69')](config[_0xeecb('0x5a')],_0xeecb('0x5b')),_0xeecb('0x5c'));var _0x1c7382=ejs[_0xeecb('0x5d')](_0x33f1ef,{'contexts':_0x3c9298||[]});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x1c7382);})[_0xeecb('0x34')](function(){return respondWithRpcPromise('Reload',_0xeecb('0x33'),{'module':_0xeecb('0x61')});})[_0xeecb('0x34')](function(){return _0x56ba2b;})['then'](respondWithResult(_0x544d96,null))['catch'](handleError(_0x544d96,null));};exports['destroy']=function(_0x2f12a9,_0x57bc73,_0xc1be66){var _0x2ff7ce;return db[_0xeecb('0x3c')][_0xeecb('0x57')]({'where':{'id':_0x2f12a9[_0xeecb('0x53')]['id']}})[_0xeecb('0x34')](handleEntityNotFound(_0x57bc73,null))[_0xeecb('0x34')](removeEntity(_0x57bc73,null))[_0xeecb('0x34')](function(){return db[_0xeecb('0x3c')][_0xeecb('0x50')]({'raw':!![]});})[_0xeecb('0x34')](function(_0x492f51){var _0x2306d8=fs[_0xeecb('0x59')](path[_0xeecb('0x69')](config['root'],_0xeecb('0x5b')),'utf8');var _0x17301a=ejs[_0xeecb('0x5d')](_0x2306d8,{'contexts':_0x492f51});fs[_0xeecb('0x5e')](_0xeecb('0x5f'),_0x17301a);return respondWithRpcPromise(_0xeecb('0x60'),_0xeecb('0x35'),{'module':_0xeecb('0x61')});})[_0xeecb('0x25')](handleError(_0x57bc73,null));};
\ No newline at end of file
+var _0x07ad=['send','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','VoiceContext','includeAll','include','findAll','rows','catch','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Contexts','userProfileId','UserProfileResource','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','client','http','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceContext,\x20%s,\x20%s','result','sendStatus','status','end','json','undefined','count','offset','limit','apply','reject','update','destroy','get','name'];(function(_0x1b5a05,_0x2c80de){var _0x347931=function(_0xd39454){while(--_0xd39454){_0x1b5a05['push'](_0x1b5a05['shift']());}};_0x347931(++_0x2c80de);}(_0x07ad,0x98));var _0xd07a=function(_0x19682e,_0x163067){_0x19682e=_0x19682e-0x0;var _0x479ed3=_0x07ad[_0x19682e];return _0x479ed3;};'use strict';var emlformat=require(_0xd07a('0x0'));var rimraf=require(_0xd07a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd07a('0x2'));var rp=require(_0xd07a('0x3'));var moment=require(_0xd07a('0x4'));var BPromise=require(_0xd07a('0x5'));var Mustache=require(_0xd07a('0x6'));var util=require(_0xd07a('0x7'));var path=require(_0xd07a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd07a('0x9'));var fs=require('fs');var fs_extra=require(_0xd07a('0xa'));var _=require(_0xd07a('0xb'));var squel=require(_0xd07a('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd07a('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd07a('0xe'));var Redis=require(_0xd07a('0xf'));var authService=require(_0xd07a('0x10'));var qs=require(_0xd07a('0x11'));var as=require(_0xd07a('0x12'));var hardwareService=require(_0xd07a('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xd07a('0x14'));var licenseUtil=require(_0xd07a('0x15'));var db=require(_0xd07a('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xd07a('0x17')][_0xd07a('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x51b1c7,_0x4bd218,_0x318253,_0x1a5c4b){return new BPromise(function(_0x59b4f5,_0x4ba596){var _0x4387bc=_0x1a5c4b||client;return _0x4387bc['request'](_0x51b1c7,_0x318253)[_0xd07a('0x19')](function(_0x44652e){logger[_0xd07a('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x4bd218,_0xd07a('0x1b'));logger[_0xd07a('0x1c')](_0xd07a('0x1d'),_0x4bd218,_0xd07a('0x1b'),JSON[_0xd07a('0x1e')](_0x44652e));if(_0x44652e['error']){if(_0x44652e[_0xd07a('0x1f')][_0xd07a('0x20')]===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x4bd218,_0x44652e['error']['message']);return _0x4ba596(_0x44652e[_0xd07a('0x1f')][_0xd07a('0x21')]);}logger['error'](_0xd07a('0x22'),_0x4bd218,_0x44652e[_0xd07a('0x1f')][_0xd07a('0x21')]);return _0x59b4f5(_0x44652e[_0xd07a('0x1f')][_0xd07a('0x21')]);}else{logger[_0xd07a('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x4bd218,_0xd07a('0x1b'));_0x59b4f5(_0x44652e[_0xd07a('0x23')][_0xd07a('0x21')]);}})['catch'](function(_0x3c5ff5){logger['error']('VoiceContext,\x20%s,\x20%s',_0x4bd218,_0x3c5ff5);_0x4ba596(_0x3c5ff5);});});}function respondWithStatusCode(_0x40d81d,_0x187172){_0x187172=_0x187172||0xcc;return function(_0x3c633c){if(_0x3c633c){return _0x40d81d[_0xd07a('0x24')](_0x187172);}return _0x40d81d[_0xd07a('0x25')](_0x187172)[_0xd07a('0x26')]();};}function respondWithResult(_0x598570,_0x1780fb){_0x1780fb=_0x1780fb||0xc8;return function(_0x3d0b2b){if(_0x3d0b2b){return _0x598570[_0xd07a('0x25')](_0x1780fb)[_0xd07a('0x27')](_0x3d0b2b);}};}function respondWithFilteredResult(_0x2b41f5,_0x3d1eb7){return function(_0x5541d5){if(_0x5541d5){var _0x464975=typeof _0x3d1eb7['offset']==='undefined'&&typeof _0x3d1eb7['limit']===_0xd07a('0x28');var _0x247edc=_0x5541d5[_0xd07a('0x29')];var _0xb367d5=_0x464975?0x0:_0x3d1eb7[_0xd07a('0x2a')];var _0x669bf8=_0x464975?_0x5541d5['count']:_0x3d1eb7[_0xd07a('0x2a')]+_0x3d1eb7[_0xd07a('0x2b')];var _0xb734e4;if(_0x669bf8>=_0x247edc){_0x669bf8=_0x247edc;_0xb734e4=0xc8;}else{_0xb734e4=0xce;}_0x2b41f5[_0xd07a('0x25')](_0xb734e4);return _0x2b41f5['set']('Content-Range',_0xb367d5+'-'+_0x669bf8+'/'+_0x247edc)['json'](_0x5541d5);}return null;};}function patchUpdates(_0x1fc2d7){return function(_0x30e70f){try{jsonpatch[_0xd07a('0x2c')](_0x30e70f,_0x1fc2d7,!![]);}catch(_0x3720ad){return BPromise[_0xd07a('0x2d')](_0x3720ad);}return _0x30e70f['save']();};}function saveUpdates(_0x3c3100,_0x213f73){return function(_0x42e8f8){if(_0x42e8f8){return _0x42e8f8[_0xd07a('0x2e')](_0x3c3100)[_0xd07a('0x19')](function(_0xfbcef3){return _0xfbcef3;});}return null;};}function removeEntity(_0x192e38,_0x3d0c55){return function(_0x5eefdf){if(_0x5eefdf){return _0x5eefdf[_0xd07a('0x2f')]()['then'](function(){var _0x292c5e=_0x5eefdf[_0xd07a('0x30')]({'plain':!![]});var _0x5af8b9='Contexts';return db['UserProfileResource'][_0xd07a('0x2f')]({'where':{'type':_0x5af8b9,'resourceId':_0x292c5e['id']}})['then'](function(){return _0x5eefdf;});})[_0xd07a('0x19')](function(){_0x192e38[_0xd07a('0x25')](0xcc)[_0xd07a('0x26')]();});}};}function handleEntityNotFound(_0x3cb72b,_0x7afb8a){return function(_0x3b9820){if(!_0x3b9820){_0x3cb72b[_0xd07a('0x24')](0x194);}return _0x3b9820;};}function handleError(_0x22b3f4,_0x1ef281){_0x1ef281=_0x1ef281||0x1f4;return function(_0x46d1fc){logger[_0xd07a('0x1f')](_0x46d1fc['stack']);if(_0x46d1fc['name']){delete _0x46d1fc[_0xd07a('0x31')];}_0x22b3f4['status'](_0x1ef281)[_0xd07a('0x32')](_0x46d1fc);};}exports['index']=function(_0x4613de,_0x5212e2){var _0x44030a={},_0x18673e={},_0x54695f={'count':0x0,'rows':[]};var _0x13ef1f=_['map'](db['VoiceContext'][_0xd07a('0x33')],function(_0x511dad){return{'name':_0x511dad[_0xd07a('0x34')],'type':_0x511dad[_0xd07a('0x35')]['key']};});_0x18673e['model']=_[_0xd07a('0x36')](_0x13ef1f,_0xd07a('0x31'));_0x18673e[_0xd07a('0x37')]=_[_0xd07a('0x38')](_0x4613de['query']);_0x18673e[_0xd07a('0x39')]=_[_0xd07a('0x3a')](_0x18673e[_0xd07a('0x3b')],_0x18673e['query']);_0x44030a['attributes']=_[_0xd07a('0x3a')](_0x18673e['model'],qs[_0xd07a('0x3c')](_0x4613de[_0xd07a('0x37')]['fields']));_0x44030a[_0xd07a('0x3d')]=_0x44030a[_0xd07a('0x3d')][_0xd07a('0x3e')]?_0x44030a[_0xd07a('0x3d')]:_0x18673e[_0xd07a('0x3b')];if(!_0x4613de[_0xd07a('0x37')][_0xd07a('0x3f')](_0xd07a('0x40'))){_0x44030a['limit']=qs[_0xd07a('0x2b')](_0x4613de[_0xd07a('0x37')][_0xd07a('0x2b')]);_0x44030a[_0xd07a('0x2a')]=qs[_0xd07a('0x2a')](_0x4613de[_0xd07a('0x37')]['offset']);}_0x44030a[_0xd07a('0x41')]=qs['sort'](_0x4613de[_0xd07a('0x37')][_0xd07a('0x42')]);_0x44030a[_0xd07a('0x43')]=qs[_0xd07a('0x39')](_[_0xd07a('0x44')](_0x4613de[_0xd07a('0x37')],_0x18673e['filters']),_0x13ef1f);if(_0x4613de[_0xd07a('0x37')][_0xd07a('0x45')]){_0x44030a[_0xd07a('0x43')]=_['merge'](_0x44030a['where'],{'$or':_[_0xd07a('0x36')](_0x13ef1f,function(_0x32d4a3){if(_0x32d4a3[_0xd07a('0x35')]!==_0xd07a('0x46')){var _0x26b3d4={};_0x26b3d4[_0x32d4a3[_0xd07a('0x31')]]={'$like':'%'+_0x4613de[_0xd07a('0x37')][_0xd07a('0x45')]+'%'};return _0x26b3d4;}})});}_0x44030a=_[_0xd07a('0x47')]({},_0x44030a,_0x4613de[_0xd07a('0x48')]);var _0x56cd05={'where':_0x44030a[_0xd07a('0x43')]};return db[_0xd07a('0x49')][_0xd07a('0x29')](_0x56cd05)[_0xd07a('0x19')](function(_0x57af23){_0x54695f[_0xd07a('0x29')]=_0x57af23;if(_0x4613de[_0xd07a('0x37')][_0xd07a('0x4a')]){_0x44030a[_0xd07a('0x4b')]=[{'all':!![]}];}return db[_0xd07a('0x49')][_0xd07a('0x4c')](_0x44030a);})['then'](function(_0x3106d4){_0x54695f[_0xd07a('0x4d')]=_0x3106d4;return _0x54695f;})['then'](respondWithFilteredResult(_0x5212e2,_0x44030a))[_0xd07a('0x4e')](handleError(_0x5212e2,null));};exports[_0xd07a('0x4f')]=function(_0x4a1e1a,_0x38222f){var _0x39cab0={'raw':![],'where':{'id':_0x4a1e1a[_0xd07a('0x50')]['id']}},_0x2afd29={};_0x2afd29[_0xd07a('0x3b')]=_[_0xd07a('0x38')](db['VoiceContext']['rawAttributes']);_0x2afd29[_0xd07a('0x37')]=_[_0xd07a('0x38')](_0x4a1e1a['query']);_0x2afd29[_0xd07a('0x39')]=_['intersection'](_0x2afd29['model'],_0x2afd29['query']);_0x39cab0[_0xd07a('0x3d')]=_['intersection'](_0x2afd29['model'],qs['fields'](_0x4a1e1a['query']['fields']));_0x39cab0[_0xd07a('0x3d')]=_0x39cab0[_0xd07a('0x3d')][_0xd07a('0x3e')]?_0x39cab0[_0xd07a('0x3d')]:_0x2afd29[_0xd07a('0x3b')];if(_0x4a1e1a['query']['includeAll']){_0x39cab0[_0xd07a('0x4b')]=[{'all':!![]}];}_0x39cab0=_[_0xd07a('0x47')]({},_0x39cab0,_0x4a1e1a[_0xd07a('0x48')]);return db[_0xd07a('0x49')][_0xd07a('0x51')](_0x39cab0)[_0xd07a('0x19')](handleEntityNotFound(_0x38222f,null))[_0xd07a('0x19')](respondWithResult(_0x38222f,null))[_0xd07a('0x4e')](handleError(_0x38222f,null));};exports[_0xd07a('0x52')]=function(_0x5f3406,_0xb7d27f,_0x1cc11c){var _0x519355;return db[_0xd07a('0x49')][_0xd07a('0x52')](_0x5f3406[_0xd07a('0x53')],{'raw':!![]})['then'](function(_0x50a5a4){_0x519355=_0x50a5a4;return db[_0xd07a('0x49')][_0xd07a('0x4c')]({'raw':!![]});})['then'](function(_0xe7e1f0){var _0x38a622=fs[_0xd07a('0x54')](path[_0xd07a('0x55')](config[_0xd07a('0x56')],_0xd07a('0x57')),_0xd07a('0x58'));var _0x7cb498=ejs[_0xd07a('0x59')](_0x38a622,{'contexts':_0xe7e1f0||[]});fs[_0xd07a('0x5a')](_0xd07a('0x5b'),_0x7cb498);})[_0xd07a('0x19')](function(){return respondWithRpcPromise(_0xd07a('0x5c'),'create',{'module':_0xd07a('0x5d')});})[_0xd07a('0x19')](function(){var _0x2a5e0e=_0x5f3406[_0xd07a('0x5e')][_0xd07a('0x30')]({'plain':!![]});if(!_0x2a5e0e)throw new Error(_0xd07a('0x5f'));if(_0x2a5e0e[_0xd07a('0x60')]===_0xd07a('0x5e')){var _0x26f8ee=_0x519355[_0xd07a('0x30')]({'plain':!![]});return db[_0xd07a('0x61')][_0xd07a('0x51')]({'where':{'name':_0xd07a('0x62'),'userProfileId':_0x2a5e0e[_0xd07a('0x63')]},'raw':!![]})[_0xd07a('0x19')](function(_0x48c8fe){if(_0x48c8fe&&_0x48c8fe['autoAssociation']===0x0){return db[_0xd07a('0x64')][_0xd07a('0x52')]({'name':_0x26f8ee['name'],'resourceId':_0x26f8ee['id'],'type':_0x48c8fe[_0xd07a('0x31')],'sectionId':_0x48c8fe['id']},{})[_0xd07a('0x19')](function(){return _0x519355;});}else{return _0x519355;}})['catch'](function(_0x42133b){logger[_0xd07a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x42133b);throw _0x42133b;});}return _0x519355;})[_0xd07a('0x19')](respondWithResult(_0xb7d27f,0xc9))[_0xd07a('0x4e')](handleError(_0xb7d27f,null));};exports[_0xd07a('0x2e')]=function(_0x5e19a2,_0x4efa64,_0x7bf16d){var _0x1dfd43;return db[_0xd07a('0x49')][_0xd07a('0x51')]({'where':{'id':_0x5e19a2[_0xd07a('0x50')]['id']}})[_0xd07a('0x19')](handleEntityNotFound(_0x4efa64,null))[_0xd07a('0x19')](saveUpdates(_0x5e19a2[_0xd07a('0x53')],null))['then'](function(_0x522602){if(_0x522602){_0x1dfd43=_0x522602;return db[_0xd07a('0x49')][_0xd07a('0x4c')]({'raw':!![]});}})['then'](function(_0x37c381){var _0x2cb37a=fs[_0xd07a('0x54')](path[_0xd07a('0x55')](config[_0xd07a('0x56')],_0xd07a('0x57')),_0xd07a('0x58'));var _0x2f91ea=ejs[_0xd07a('0x59')](_0x2cb37a,{'contexts':_0x37c381||[]});fs[_0xd07a('0x5a')](_0xd07a('0x5b'),_0x2f91ea);})['then'](function(){return respondWithRpcPromise(_0xd07a('0x5c'),_0xd07a('0x2e'),{'module':_0xd07a('0x5d')});})[_0xd07a('0x19')](function(){return _0x1dfd43;})['then'](respondWithResult(_0x4efa64,null))[_0xd07a('0x4e')](handleError(_0x4efa64,null));};exports['destroy']=function(_0x24fd3c,_0x5cf394,_0x4c62b2){var _0x143d73;return db['VoiceContext']['find']({'where':{'id':_0x24fd3c['params']['id']}})['then'](handleEntityNotFound(_0x5cf394,null))['then'](removeEntity(_0x5cf394,null))[_0xd07a('0x19')](function(){return db[_0xd07a('0x49')][_0xd07a('0x4c')]({'raw':!![]});})['then'](function(_0x3f30bd){var _0x4bab28=fs[_0xd07a('0x54')](path[_0xd07a('0x55')](config[_0xd07a('0x56')],_0xd07a('0x57')),'utf8');var _0x295868=ejs[_0xd07a('0x59')](_0x4bab28,{'contexts':_0x3f30bd});fs[_0xd07a('0x5a')](_0xd07a('0x5b'),_0x295868);return respondWithRpcPromise(_0xd07a('0x5c'),_0xd07a('0x2f'),{'module':_0xd07a('0x5d')});})['catch'](handleError(_0x5cf394,null));};
\ No newline at end of file
index 7791741..5c6bc9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aa7=['voice_contexts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceContext.attributes','define','VoiceContext'];(function(_0x488693,_0x412610){var _0x1d5e3a=function(_0x40d889){while(--_0x40d889){_0x488693['push'](_0x488693['shift']());}};_0x1d5e3a(++_0x412610);}(_0x8aa7,0x1c4));var _0x78aa=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x8aa7[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0x78aa('0x0'));var util=require(_0x78aa('0x1'));var logger=require(_0x78aa('0x2'))('api');var moment=require('moment');var BPromise=require(_0x78aa('0x3'));var rp=require(_0x78aa('0x4'));var fs=require('fs');var path=require(_0x78aa('0x5'));var rimraf=require(_0x78aa('0x6'));var config=require('../../config/environment');var attributes=require(_0x78aa('0x7'));module['exports']=function(_0x2c8a13,_0x38f615){return _0x2c8a13[_0x78aa('0x8')](_0x78aa('0x9'),attributes,{'tableName':_0x78aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc97b=['rimraf','exports','define','VoiceContext','voice_contexts','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x515242,_0x4e8460){var _0x39e87a=function(_0x66d227){while(--_0x66d227){_0x515242['push'](_0x515242['shift']());}};_0x39e87a(++_0x4e8460);}(_0xc97b,0x102));var _0xbc97=function(_0x2856c6,_0x745fd1){_0x2856c6=_0x2856c6-0x0;var _0x5f23a1=_0xc97b[_0x2856c6];return _0x5f23a1;};'use strict';var _=require(_0xbc97('0x0'));var util=require('util');var logger=require(_0xbc97('0x1'))('api');var moment=require(_0xbc97('0x2'));var BPromise=require(_0xbc97('0x3'));var rp=require(_0xbc97('0x4'));var fs=require('fs');var path=require(_0xbc97('0x5'));var rimraf=require(_0xbc97('0x6'));var config=require('../../config/environment');var attributes=require('./voiceContext.attributes');module[_0xbc97('0x7')]=function(_0x3ec444,_0x2fa6d8){return _0x3ec444[_0xbc97('0x8')](_0xbc97('0x9'),attributes,{'tableName':_0xbc97('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bdc16d..d25f327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['util','moment','bluebird','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash'];(function(_0x3242f8,_0x452998){var _0x47e17f=function(_0x4caf30){while(--_0x4caf30){_0x3242f8['push'](_0x3242f8['shift']());}};_0x47e17f(++_0x452998);}(_0x10dc,0x13f));var _0xc10d=function(_0x5352d0,_0x41e8b4){_0x5352d0=_0x5352d0-0x0;var _0x352b00=_0x10dc[_0x5352d0];return _0x352b00;};'use strict';var _=require(_0xc10d('0x0'));var util=require(_0xc10d('0x1'));var moment=require(_0xc10d('0x2'));var BPromise=require(_0xc10d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc10d('0x4'))(_0xc10d('0x5'));var config=require(_0xc10d('0x6'));var jayson=require(_0xc10d('0x7'));var client=jayson['client'][_0xc10d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x359469,_0x46848b,_0x223749){return new BPromise(function(_0x58c0de,_0x162808){return client['request'](_0x359469,_0x223749)[_0xc10d('0x9')](function(_0x55c00d){logger['info'](_0xc10d('0xa'),_0x46848b,'request\x20sent');logger[_0xc10d('0xb')](_0xc10d('0xc'),_0x46848b,_0xc10d('0xd'),JSON['stringify'](_0x55c00d));if(_0x55c00d[_0xc10d('0xe')]){if(_0x55c00d[_0xc10d('0xe')][_0xc10d('0xf')]===0x1f4){logger['error'](_0xc10d('0xa'),_0x46848b,_0x55c00d[_0xc10d('0xe')][_0xc10d('0x10')]);return _0x162808(_0x55c00d['error'][_0xc10d('0x10')]);}logger[_0xc10d('0xe')](_0xc10d('0xa'),_0x46848b,_0x55c00d[_0xc10d('0xe')]['message']);return _0x58c0de(_0x55c00d['error'][_0xc10d('0x10')]);}else{logger[_0xc10d('0x11')](_0xc10d('0xa'),_0x46848b,_0xc10d('0xd'));_0x58c0de(_0x55c00d[_0xc10d('0x12')][_0xc10d('0x10')]);}})[_0xc10d('0x13')](function(_0x1bfa30){logger[_0xc10d('0xe')](_0xc10d('0xa'),_0x46848b,_0x1bfa30);_0x162808(_0x1bfa30);});});}
\ No newline at end of file
+var _0xa39f=['VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1eff34,_0x3edca3){var _0x182575=function(_0x33b6d2){while(--_0x33b6d2){_0x1eff34['push'](_0x1eff34['shift']());}};_0x182575(++_0x3edca3);}(_0xa39f,0x1e4));var _0xfa39=function(_0x2679b0,_0x2a1a6f){_0x2679b0=_0x2679b0-0x0;var _0x192302=_0xa39f[_0x2679b0];return _0x192302;};'use strict';var _=require(_0xfa39('0x0'));var util=require(_0xfa39('0x1'));var moment=require(_0xfa39('0x2'));var BPromise=require('bluebird');var rs=require(_0xfa39('0x3'));var fs=require('fs');var Redis=require(_0xfa39('0x4'));var db=require(_0xfa39('0x5'))['db'];var utils=require(_0xfa39('0x6'));var logger=require(_0xfa39('0x7'))(_0xfa39('0x8'));var config=require(_0xfa39('0x9'));var jayson=require(_0xfa39('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3d47cc,_0xffa7ee,_0x4044bc){return new BPromise(function(_0x1ed1f5,_0x9b132d){return client['request'](_0x3d47cc,_0x4044bc)[_0xfa39('0xb')](function(_0x1c2ed4){logger[_0xfa39('0xc')](_0xfa39('0xd'),_0xffa7ee,_0xfa39('0xe'));logger[_0xfa39('0xf')](_0xfa39('0x10'),_0xffa7ee,_0xfa39('0xe'),JSON['stringify'](_0x1c2ed4));if(_0x1c2ed4[_0xfa39('0x11')]){if(_0x1c2ed4[_0xfa39('0x11')][_0xfa39('0x12')]===0x1f4){logger[_0xfa39('0x11')](_0xfa39('0xd'),_0xffa7ee,_0x1c2ed4[_0xfa39('0x11')][_0xfa39('0x13')]);return _0x9b132d(_0x1c2ed4[_0xfa39('0x11')][_0xfa39('0x13')]);}logger['error']('VoiceContext,\x20%s,\x20%s',_0xffa7ee,_0x1c2ed4[_0xfa39('0x11')][_0xfa39('0x13')]);return _0x1ed1f5(_0x1c2ed4[_0xfa39('0x11')]['message']);}else{logger['info'](_0xfa39('0xd'),_0xffa7ee,_0xfa39('0xe'));_0x1ed1f5(_0x1c2ed4['result']['message']);}})['catch'](function(_0x273544){logger[_0xfa39('0x11')](_0xfa39('0xd'),_0xffa7ee,_0x273544);_0x9b132d(_0x273544);});});}
\ No newline at end of file
index 6d1280e..49fcf1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff84=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','exports','multer','util','path'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0xff84,0x18d));var _0x4ff8=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xff84[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x4ff8('0x0'));var util=require(_0x4ff8('0x1'));var path=require(_0x4ff8('0x2'));var timeout=require(_0x4ff8('0x3'));var express=require(_0x4ff8('0x4'));var router=express[_0x4ff8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4ff8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4ff8('0x7'));var controller=require(_0x4ff8('0x8'));router[_0x4ff8('0x9')]('/',auth[_0x4ff8('0xa')](),controller['index']);router[_0x4ff8('0x9')](_0x4ff8('0xb'),auth['isAuthenticated'](),controller[_0x4ff8('0xc')]);router['get'](_0x4ff8('0xd'),auth['isAuthenticated'](),controller[_0x4ff8('0xe')]);router[_0x4ff8('0xf')]('/',auth[_0x4ff8('0xa')](),controller[_0x4ff8('0x10')]);router[_0x4ff8('0x11')]('/:id',auth[_0x4ff8('0xa')](),controller[_0x4ff8('0x12')]);router['delete'](_0x4ff8('0xd'),auth[_0x4ff8('0xa')](),controller['destroy']);module[_0x4ff8('0x13')]=router;
\ No newline at end of file
+var _0x057f=['get','isAuthenticated','index','/describe','describe','show','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller'];(function(_0x3e75f0,_0x270013){var _0x3c6c32=function(_0x1e6cb8){while(--_0x1e6cb8){_0x3e75f0['push'](_0x3e75f0['shift']());}};_0x3c6c32(++_0x270013);}(_0x057f,0x1d7));var _0xf057=function(_0x1ae622,_0x110bea){_0x1ae622=_0x1ae622-0x0;var _0x370164=_0x057f[_0x1ae622];return _0x370164;};'use strict';var multer=require(_0xf057('0x0'));var util=require('util');var path=require(_0xf057('0x1'));var timeout=require(_0xf057('0x2'));var express=require(_0xf057('0x3'));var router=express['Router']();var fs_extra=require(_0xf057('0x4'));var auth=require(_0xf057('0x5'));var interaction=require(_0xf057('0x6'));var config=require(_0xf057('0x7'));var controller=require(_0xf057('0x8'));router[_0xf057('0x9')]('/',auth[_0xf057('0xa')](),controller[_0xf057('0xb')]);router[_0xf057('0x9')](_0xf057('0xc'),auth[_0xf057('0xa')](),controller[_0xf057('0xd')]);router['get']('/:id',auth[_0xf057('0xa')](),controller[_0xf057('0xe')]);router['post']('/',auth[_0xf057('0xa')](),controller['create']);router[_0xf057('0xf')](_0xf057('0x10'),auth[_0xf057('0xa')](),controller[_0xf057('0x11')]);router['delete'](_0xf057('0x10'),auth[_0xf057('0xa')](),controller[_0xf057('0x12')]);module[_0xf057('0x13')]=router;
\ No newline at end of file
index a61297c..87ea64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['DATE','sequelize','STRING','INTEGER'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x3e74,0x175));var _0x43e7=function(_0x577ac8,_0xef6a4c){_0x577ac8=_0x577ac8-0x0;var _0x38ac2e=_0x3e74[_0x577ac8];return _0x38ac2e;};'use strict';var Sequelize=require(_0x43e7('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x43e7('0x1')]},'channel':{'type':Sequelize[_0x43e7('0x1')]},'channelstate':{'type':Sequelize[_0x43e7('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x43e7('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x43e7('0x1')]},'language':{'type':Sequelize[_0x43e7('0x1')]},'accountcode':{'type':Sequelize[_0x43e7('0x1')]},'context':{'type':Sequelize[_0x43e7('0x1')]},'exten':{'type':Sequelize[_0x43e7('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x43e7('0x1')]},'linkedid':{'type':Sequelize[_0x43e7('0x1')]},'destchannel':{'type':Sequelize[_0x43e7('0x1')]},'destchannelstate':{'type':Sequelize[_0x43e7('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x43e7('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x43e7('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x43e7('0x1')]},'destaccountcode':{'type':Sequelize[_0x43e7('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x43e7('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0x43e7('0x1')]},'destlinkedid':{'type':Sequelize[_0x43e7('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x43e7('0x1')]},'starttime':{'type':Sequelize[_0x43e7('0x3')]},'answertime':{'type':Sequelize[_0x43e7('0x3')]},'endtime':{'type':Sequelize[_0x43e7('0x3')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x43e7('0x2')]},'duration':{'type':Sequelize[_0x43e7('0x2')]},'holdtime':{'type':Sequelize[_0x43e7('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x81bd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x12a653,_0x4b7c50){var _0x596ea9=function(_0x556930){while(--_0x556930){_0x12a653['push'](_0x12a653['shift']());}};_0x596ea9(++_0x4b7c50);}(_0x81bd,0x7c));var _0xd81b=function(_0x4a1327,_0x3642ab){_0x4a1327=_0x4a1327-0x0;var _0x2fcd03=_0x81bd[_0x4a1327];return _0x2fcd03;};'use strict';var Sequelize=require(_0xd81b('0x0'));module[_0xd81b('0x1')]={'privilege':{'type':Sequelize[_0xd81b('0x2')]},'channel':{'type':Sequelize[_0xd81b('0x2')]},'channelstate':{'type':Sequelize[_0xd81b('0x3')]},'channelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'calleridnum':{'type':Sequelize[_0xd81b('0x2')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'connectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'language':{'type':Sequelize[_0xd81b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xd81b('0x2')]},'exten':{'type':Sequelize[_0xd81b('0x2')]},'priority':{'type':Sequelize[_0xd81b('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd81b('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridnum':{'type':Sequelize[_0xd81b('0x2')]},'destcalleridname':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd81b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd81b('0x2')]},'destlanguage':{'type':Sequelize[_0xd81b('0x2')]},'destaccountcode':{'type':Sequelize[_0xd81b('0x2')]},'destcontext':{'type':Sequelize[_0xd81b('0x2')]},'destexten':{'type':Sequelize[_0xd81b('0x2')]},'destpriority':{'type':Sequelize[_0xd81b('0x3')]},'destuniqueid':{'type':Sequelize[_0xd81b('0x2')]},'destlinkedid':{'type':Sequelize[_0xd81b('0x2')]},'dialstring':{'type':Sequelize[_0xd81b('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xd81b('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xd81b('0x4')]},'lastevent':{'type':Sequelize[_0xd81b('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xd81b('0x3')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xd81b('0x3')]},'billableseconds':{'type':Sequelize[_0xd81b('0x3')]}};
\ No newline at end of file
index f66e45b..bdb6ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0da=['squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','map','VoiceDialReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','findAll','rows','catch','show','params','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x18b9ed,_0x13a0c5){var _0x172cb1=function(_0x595c36){while(--_0x595c36){_0x18b9ed['push'](_0x18b9ed['shift']());}};_0x172cb1(++_0x13a0c5);}(_0xa0da,0x8a));var _0xaa0d=function(_0x1ed831,_0x52e779){_0x1ed831=_0x1ed831-0x0;var _0x22b3ce=_0xa0da[_0x1ed831];return _0x22b3ce;};'use strict';var emlformat=require(_0xaa0d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaa0d('0x1'));var jsonpatch=require(_0xaa0d('0x2'));var rp=require('request-promise');var moment=require(_0xaa0d('0x3'));var BPromise=require(_0xaa0d('0x4'));var Mustache=require(_0xaa0d('0x5'));var util=require(_0xaa0d('0x6'));var path=require(_0xaa0d('0x7'));var sox=require(_0xaa0d('0x8'));var csv=require(_0xaa0d('0x9'));var ejs=require(_0xaa0d('0xa'));var fs=require('fs');var fs_extra=require(_0xaa0d('0xb'));var _=require('lodash');var squel=require(_0xaa0d('0xc'));var crypto=require(_0xaa0d('0xd'));var jsforce=require(_0xaa0d('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaa0d('0xf'));var Papa=require('papaparse');var Redis=require(_0xaa0d('0x10'));var authService=require(_0xaa0d('0x11'));var qs=require(_0xaa0d('0x12'));var as=require(_0xaa0d('0x13'));var hardwareService=require(_0xaa0d('0x14'));var logger=require(_0xaa0d('0x15'))(_0xaa0d('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xaa0d('0x17'));var db=require(_0xaa0d('0x18'))['db'];function respondWithStatusCode(_0x12e748,_0x1a304b){_0x1a304b=_0x1a304b||0xcc;return function(_0x586dc0){if(_0x586dc0){return _0x12e748['sendStatus'](_0x1a304b);}return _0x12e748[_0xaa0d('0x19')](_0x1a304b)[_0xaa0d('0x1a')]();};}function respondWithResult(_0x2fe2d8,_0x390e0e){_0x390e0e=_0x390e0e||0xc8;return function(_0x39cb5d){if(_0x39cb5d){return _0x2fe2d8[_0xaa0d('0x19')](_0x390e0e)[_0xaa0d('0x1b')](_0x39cb5d);}};}function respondWithFilteredResult(_0x448046,_0x668149){return function(_0x4d7fed){if(_0x4d7fed){var _0x3ea248=typeof _0x668149['offset']==='undefined'&&typeof _0x668149[_0xaa0d('0x1c')]==='undefined';var _0x540449=_0x4d7fed[_0xaa0d('0x1d')];var _0x699691=_0x3ea248?0x0:_0x668149[_0xaa0d('0x1e')];var _0xf4bf1=_0x3ea248?_0x4d7fed[_0xaa0d('0x1d')]:_0x668149[_0xaa0d('0x1e')]+_0x668149[_0xaa0d('0x1c')];var _0x23ab88;if(_0xf4bf1>=_0x540449){_0xf4bf1=_0x540449;_0x23ab88=0xc8;}else{_0x23ab88=0xce;}_0x448046[_0xaa0d('0x19')](_0x23ab88);return _0x448046[_0xaa0d('0x1f')](_0xaa0d('0x20'),_0x699691+'-'+_0xf4bf1+'/'+_0x540449)[_0xaa0d('0x1b')](_0x4d7fed);}return null;};}function patchUpdates(_0x1778b9){return function(_0x273a46){try{jsonpatch[_0xaa0d('0x21')](_0x273a46,_0x1778b9,!![]);}catch(_0x32b9c0){return BPromise[_0xaa0d('0x22')](_0x32b9c0);}return _0x273a46[_0xaa0d('0x23')]();};}function saveUpdates(_0x575082,_0x1428bc){return function(_0x1b2517){if(_0x1b2517){return _0x1b2517[_0xaa0d('0x24')](_0x575082)[_0xaa0d('0x25')](function(_0x2d2d06){return _0x2d2d06;});}return null;};}function removeEntity(_0xf3c56c,_0x2e3dfb){return function(_0x4a47e3){if(_0x4a47e3){return _0x4a47e3[_0xaa0d('0x26')]()['then'](function(){_0xf3c56c[_0xaa0d('0x19')](0xcc)[_0xaa0d('0x1a')]();});}};}function handleEntityNotFound(_0x8f0265,_0x1a82cf){return function(_0x3d7a15){if(!_0x3d7a15){_0x8f0265[_0xaa0d('0x27')](0x194);}return _0x3d7a15;};}function handleError(_0xea673e,_0x3bd939){_0x3bd939=_0x3bd939||0x1f4;return function(_0x5a2ab1){logger[_0xaa0d('0x28')](_0x5a2ab1['stack']);if(_0x5a2ab1[_0xaa0d('0x29')]){delete _0x5a2ab1[_0xaa0d('0x29')];}_0xea673e[_0xaa0d('0x19')](_0x3bd939)['send'](_0x5a2ab1);};}exports['index']=function(_0x53406f,_0x3e48ea){var _0x3c5690={},_0x2bdff2={},_0x47074b={'count':0x0,'rows':[]};var _0x2e4434=_[_0xaa0d('0x2a')](db[_0xaa0d('0x2b')][_0xaa0d('0x2c')],function(_0x504c71){return{'name':_0x504c71[_0xaa0d('0x2d')],'type':_0x504c71[_0xaa0d('0x2e')][_0xaa0d('0x2f')]};});_0x2bdff2['model']=_[_0xaa0d('0x2a')](_0x2e4434,'name');_0x2bdff2[_0xaa0d('0x30')]=_[_0xaa0d('0x31')](_0x53406f['query']);_0x2bdff2[_0xaa0d('0x32')]=_[_0xaa0d('0x33')](_0x2bdff2[_0xaa0d('0x34')],_0x2bdff2[_0xaa0d('0x30')]);_0x3c5690['attributes']=_[_0xaa0d('0x33')](_0x2bdff2[_0xaa0d('0x34')],qs['fields'](_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x35')]));_0x3c5690['attributes']=_0x3c5690[_0xaa0d('0x36')][_0xaa0d('0x37')]?_0x3c5690[_0xaa0d('0x36')]:_0x2bdff2['model'];if(!_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x38')](_0xaa0d('0x39'))){_0x3c5690[_0xaa0d('0x1c')]=qs[_0xaa0d('0x1c')](_0x53406f[_0xaa0d('0x30')]['limit']);_0x3c5690[_0xaa0d('0x1e')]=qs[_0xaa0d('0x1e')](_0x53406f['query'][_0xaa0d('0x1e')]);}_0x3c5690[_0xaa0d('0x3a')]=qs['sort'](_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x3b')]);_0x3c5690[_0xaa0d('0x3c')]=qs[_0xaa0d('0x32')](_[_0xaa0d('0x3d')](_0x53406f[_0xaa0d('0x30')],_0x2bdff2[_0xaa0d('0x32')]),_0x2e4434);if(_0x53406f['query']['filter']){_0x3c5690['where']=_['merge'](_0x3c5690[_0xaa0d('0x3c')],{'$or':_[_0xaa0d('0x2a')](_0x2e4434,function(_0x3b5749){if(_0x3b5749['type']!=='VIRTUAL'){var _0x268ea9={};_0x268ea9[_0x3b5749[_0xaa0d('0x29')]]={'$like':'%'+_0x53406f[_0xaa0d('0x30')]['filter']+'%'};return _0x268ea9;}})});}_0x3c5690=_[_0xaa0d('0x3e')]({},_0x3c5690,_0x53406f[_0xaa0d('0x3f')]);var _0x6c87cb={'where':_0x3c5690[_0xaa0d('0x3c')]};return db['VoiceDialReport'][_0xaa0d('0x1d')](_0x6c87cb)[_0xaa0d('0x25')](function(_0x56bf25){_0x47074b[_0xaa0d('0x1d')]=_0x56bf25;if(_0x53406f[_0xaa0d('0x30')][_0xaa0d('0x40')]){_0x3c5690['include']=[{'all':!![]}];}return db['VoiceDialReport'][_0xaa0d('0x41')](_0x3c5690);})[_0xaa0d('0x25')](function(_0x4b10db){_0x47074b[_0xaa0d('0x42')]=_0x4b10db;return _0x47074b;})['then'](respondWithFilteredResult(_0x3e48ea,_0x3c5690))[_0xaa0d('0x43')](handleError(_0x3e48ea,null));};exports[_0xaa0d('0x44')]=function(_0x1b9d86,_0x12690a){var _0x52a32b={'raw':!![],'where':{'id':_0x1b9d86[_0xaa0d('0x45')]['id']}},_0x1ece39={};_0x1ece39[_0xaa0d('0x34')]=_[_0xaa0d('0x31')](db[_0xaa0d('0x2b')][_0xaa0d('0x2c')]);_0x1ece39['query']=_[_0xaa0d('0x31')](_0x1b9d86[_0xaa0d('0x30')]);_0x1ece39['filters']=_['intersection'](_0x1ece39[_0xaa0d('0x34')],_0x1ece39[_0xaa0d('0x30')]);_0x52a32b[_0xaa0d('0x36')]=_[_0xaa0d('0x33')](_0x1ece39[_0xaa0d('0x34')],qs[_0xaa0d('0x35')](_0x1b9d86[_0xaa0d('0x30')][_0xaa0d('0x35')]));_0x52a32b[_0xaa0d('0x36')]=_0x52a32b[_0xaa0d('0x36')]['length']?_0x52a32b['attributes']:_0x1ece39[_0xaa0d('0x34')];if(_0x1b9d86[_0xaa0d('0x30')]['includeAll']){_0x52a32b[_0xaa0d('0x46')]=[{'all':!![]}];}_0x52a32b=_[_0xaa0d('0x3e')]({},_0x52a32b,_0x1b9d86[_0xaa0d('0x3f')]);return db[_0xaa0d('0x2b')]['find'](_0x52a32b)[_0xaa0d('0x25')](handleEntityNotFound(_0x12690a,null))[_0xaa0d('0x25')](respondWithResult(_0x12690a,null))[_0xaa0d('0x43')](handleError(_0x12690a,null));};exports['create']=function(_0x10082b,_0x42b560){return db[_0xaa0d('0x2b')][_0xaa0d('0x47')](_0x10082b['body'],{})[_0xaa0d('0x25')](respondWithResult(_0x42b560,0xc9))[_0xaa0d('0x43')](handleError(_0x42b560,null));};exports[_0xaa0d('0x24')]=function(_0x18e7b7,_0xf590c4){if(_0x18e7b7[_0xaa0d('0x48')]['id']){delete _0x18e7b7[_0xaa0d('0x48')]['id'];}return db[_0xaa0d('0x2b')][_0xaa0d('0x49')]({'where':{'id':_0x18e7b7['params']['id']}})[_0xaa0d('0x25')](handleEntityNotFound(_0xf590c4,null))['then'](saveUpdates(_0x18e7b7[_0xaa0d('0x48')],null))[_0xaa0d('0x25')](respondWithResult(_0xf590c4,null))[_0xaa0d('0x43')](handleError(_0xf590c4,null));};exports['destroy']=function(_0x33f1f3,_0x3d9fbf){return db['VoiceDialReport'][_0xaa0d('0x49')]({'where':{'id':_0x33f1f3[_0xaa0d('0x45')]['id']}})['then'](handleEntityNotFound(_0x3d9fbf,null))['then'](removeEntity(_0x3d9fbf,null))[_0xaa0d('0x43')](handleError(_0x3d9fbf,null));};exports[_0xaa0d('0x4a')]=function(_0x15d20e,_0x13ec59){return db[_0xaa0d('0x2b')][_0xaa0d('0x4a')]()[_0xaa0d('0x25')](respondWithResult(_0x13ec59,null))[_0xaa0d('0x43')](handleError(_0x13ec59,null));};
\ No newline at end of file
+var _0x4091=['mustache','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','type','key','model','map','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','filter','options','VoiceDialReport','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3d6107,_0xbddfb0){var _0x2fbd82=function(_0x485ce8){while(--_0x485ce8){_0x3d6107['push'](_0x3d6107['shift']());}};_0x2fbd82(++_0xbddfb0);}(_0x4091,0x1a0));var _0x1409=function(_0x21cc4e,_0x24a7ac){_0x21cc4e=_0x21cc4e-0x0;var _0x3b7125=_0x4091[_0x21cc4e];return _0x3b7125;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1409('0x0'));var jsonpatch=require(_0x1409('0x1'));var rp=require(_0x1409('0x2'));var moment=require(_0x1409('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1409('0x4'));var util=require('util');var path=require(_0x1409('0x5'));var sox=require(_0x1409('0x6'));var csv=require(_0x1409('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x1409('0x8'));var crypto=require(_0x1409('0x9'));var jsforce=require(_0x1409('0xa'));var deskjs=require(_0x1409('0xb'));var toCsv=require(_0x1409('0x7'));var querystring=require(_0x1409('0xc'));var Papa=require(_0x1409('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1409('0xe'))('api');var utils=require(_0x1409('0xf'));var config=require(_0x1409('0x10'));var licenseUtil=require(_0x1409('0x11'));var db=require(_0x1409('0x12'))['db'];function respondWithStatusCode(_0x272b2b,_0xe557be){_0xe557be=_0xe557be||0xcc;return function(_0xb178fd){if(_0xb178fd){return _0x272b2b[_0x1409('0x13')](_0xe557be);}return _0x272b2b[_0x1409('0x14')](_0xe557be)[_0x1409('0x15')]();};}function respondWithResult(_0x329fec,_0x494745){_0x494745=_0x494745||0xc8;return function(_0xeb2b30){if(_0xeb2b30){return _0x329fec['status'](_0x494745)['json'](_0xeb2b30);}};}function respondWithFilteredResult(_0x5befde,_0x59ef0b){return function(_0x304a09){if(_0x304a09){var _0x5bbc49=typeof _0x59ef0b[_0x1409('0x16')]===_0x1409('0x17')&&typeof _0x59ef0b['limit']===_0x1409('0x17');var _0x24c683=_0x304a09['count'];var _0x31be1c=_0x5bbc49?0x0:_0x59ef0b[_0x1409('0x16')];var _0x1a30e7=_0x5bbc49?_0x304a09[_0x1409('0x18')]:_0x59ef0b['offset']+_0x59ef0b['limit'];var _0x4f12df;if(_0x1a30e7>=_0x24c683){_0x1a30e7=_0x24c683;_0x4f12df=0xc8;}else{_0x4f12df=0xce;}_0x5befde[_0x1409('0x14')](_0x4f12df);return _0x5befde[_0x1409('0x19')]('Content-Range',_0x31be1c+'-'+_0x1a30e7+'/'+_0x24c683)[_0x1409('0x1a')](_0x304a09);}return null;};}function patchUpdates(_0x401ec0){return function(_0x5252fd){try{jsonpatch[_0x1409('0x1b')](_0x5252fd,_0x401ec0,!![]);}catch(_0x31e16f){return BPromise[_0x1409('0x1c')](_0x31e16f);}return _0x5252fd[_0x1409('0x1d')]();};}function saveUpdates(_0x10389b,_0x4819e2){return function(_0x56b28b){if(_0x56b28b){return _0x56b28b[_0x1409('0x1e')](_0x10389b)[_0x1409('0x1f')](function(_0x1776c2){return _0x1776c2;});}return null;};}function removeEntity(_0x5a0876,_0x414be7){return function(_0x3ea765){if(_0x3ea765){return _0x3ea765[_0x1409('0x20')]()[_0x1409('0x1f')](function(){_0x5a0876[_0x1409('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x200fa7,_0x196978){return function(_0x15439f){if(!_0x15439f){_0x200fa7[_0x1409('0x13')](0x194);}return _0x15439f;};}function handleError(_0x7d9668,_0x4ff72b){_0x4ff72b=_0x4ff72b||0x1f4;return function(_0x31cb48){logger[_0x1409('0x21')](_0x31cb48[_0x1409('0x22')]);if(_0x31cb48[_0x1409('0x23')]){delete _0x31cb48['name'];}_0x7d9668[_0x1409('0x14')](_0x4ff72b)[_0x1409('0x24')](_0x31cb48);};}exports[_0x1409('0x25')]=function(_0x4b6438,_0x2974cf){var _0x436f38={},_0x44cfce={},_0x25251d={'count':0x0,'rows':[]};var _0x2784fc=_['map'](db['VoiceDialReport']['rawAttributes'],function(_0x8b5ba8){return{'name':_0x8b5ba8['fieldName'],'type':_0x8b5ba8[_0x1409('0x26')][_0x1409('0x27')]};});_0x44cfce[_0x1409('0x28')]=_[_0x1409('0x29')](_0x2784fc,_0x1409('0x23'));_0x44cfce['query']=_[_0x1409('0x2a')](_0x4b6438[_0x1409('0x2b')]);_0x44cfce[_0x1409('0x2c')]=_['intersection'](_0x44cfce[_0x1409('0x28')],_0x44cfce[_0x1409('0x2b')]);_0x436f38[_0x1409('0x2d')]=_['intersection'](_0x44cfce[_0x1409('0x28')],qs['fields'](_0x4b6438[_0x1409('0x2b')][_0x1409('0x2e')]));_0x436f38[_0x1409('0x2d')]=_0x436f38['attributes'][_0x1409('0x2f')]?_0x436f38[_0x1409('0x2d')]:_0x44cfce[_0x1409('0x28')];if(!_0x4b6438[_0x1409('0x2b')][_0x1409('0x30')](_0x1409('0x31'))){_0x436f38[_0x1409('0x32')]=qs[_0x1409('0x32')](_0x4b6438[_0x1409('0x2b')]['limit']);_0x436f38[_0x1409('0x16')]=qs['offset'](_0x4b6438[_0x1409('0x2b')][_0x1409('0x16')]);}_0x436f38[_0x1409('0x33')]=qs[_0x1409('0x34')](_0x4b6438[_0x1409('0x2b')]['sort']);_0x436f38[_0x1409('0x35')]=qs['filters'](_[_0x1409('0x36')](_0x4b6438[_0x1409('0x2b')],_0x44cfce[_0x1409('0x2c')]),_0x2784fc);if(_0x4b6438['query']['filter']){_0x436f38[_0x1409('0x35')]=_[_0x1409('0x37')](_0x436f38['where'],{'$or':_[_0x1409('0x29')](_0x2784fc,function(_0x2658d9){if(_0x2658d9[_0x1409('0x26')]!=='VIRTUAL'){var _0x4a6c0f={};_0x4a6c0f[_0x2658d9[_0x1409('0x23')]]={'$like':'%'+_0x4b6438[_0x1409('0x2b')][_0x1409('0x38')]+'%'};return _0x4a6c0f;}})});}_0x436f38=_[_0x1409('0x37')]({},_0x436f38,_0x4b6438[_0x1409('0x39')]);var _0x2e3299={'where':_0x436f38[_0x1409('0x35')]};return db[_0x1409('0x3a')][_0x1409('0x18')](_0x2e3299)[_0x1409('0x1f')](function(_0x2dcd20){_0x25251d[_0x1409('0x18')]=_0x2dcd20;if(_0x4b6438[_0x1409('0x2b')][_0x1409('0x3b')]){_0x436f38[_0x1409('0x3c')]=[{'all':!![]}];}return db[_0x1409('0x3a')][_0x1409('0x3d')](_0x436f38);})[_0x1409('0x1f')](function(_0xb63553){_0x25251d[_0x1409('0x3e')]=_0xb63553;return _0x25251d;})['then'](respondWithFilteredResult(_0x2974cf,_0x436f38))['catch'](handleError(_0x2974cf,null));};exports[_0x1409('0x3f')]=function(_0x5ea4ef,_0x4b802e){var _0x8666dc={'raw':!![],'where':{'id':_0x5ea4ef[_0x1409('0x40')]['id']}},_0x422df0={};_0x422df0[_0x1409('0x28')]=_['keys'](db[_0x1409('0x3a')]['rawAttributes']);_0x422df0[_0x1409('0x2b')]=_[_0x1409('0x2a')](_0x5ea4ef[_0x1409('0x2b')]);_0x422df0[_0x1409('0x2c')]=_['intersection'](_0x422df0[_0x1409('0x28')],_0x422df0[_0x1409('0x2b')]);_0x8666dc[_0x1409('0x2d')]=_['intersection'](_0x422df0[_0x1409('0x28')],qs['fields'](_0x5ea4ef['query']['fields']));_0x8666dc['attributes']=_0x8666dc[_0x1409('0x2d')][_0x1409('0x2f')]?_0x8666dc[_0x1409('0x2d')]:_0x422df0[_0x1409('0x28')];if(_0x5ea4ef[_0x1409('0x2b')][_0x1409('0x3b')]){_0x8666dc[_0x1409('0x3c')]=[{'all':!![]}];}_0x8666dc=_[_0x1409('0x37')]({},_0x8666dc,_0x5ea4ef[_0x1409('0x39')]);return db['VoiceDialReport'][_0x1409('0x41')](_0x8666dc)[_0x1409('0x1f')](handleEntityNotFound(_0x4b802e,null))[_0x1409('0x1f')](respondWithResult(_0x4b802e,null))[_0x1409('0x42')](handleError(_0x4b802e,null));};exports[_0x1409('0x43')]=function(_0x4c712f,_0x539483){return db['VoiceDialReport']['create'](_0x4c712f[_0x1409('0x44')],{})[_0x1409('0x1f')](respondWithResult(_0x539483,0xc9))['catch'](handleError(_0x539483,null));};exports[_0x1409('0x1e')]=function(_0x163e23,_0x93a178){if(_0x163e23[_0x1409('0x44')]['id']){delete _0x163e23[_0x1409('0x44')]['id'];}return db[_0x1409('0x3a')]['find']({'where':{'id':_0x163e23[_0x1409('0x40')]['id']}})[_0x1409('0x1f')](handleEntityNotFound(_0x93a178,null))[_0x1409('0x1f')](saveUpdates(_0x163e23['body'],null))[_0x1409('0x1f')](respondWithResult(_0x93a178,null))[_0x1409('0x42')](handleError(_0x93a178,null));};exports['destroy']=function(_0x552654,_0x41f18d){return db['VoiceDialReport'][_0x1409('0x41')]({'where':{'id':_0x552654[_0x1409('0x40')]['id']}})[_0x1409('0x1f')](handleEntityNotFound(_0x41f18d,null))[_0x1409('0x1f')](removeEntity(_0x41f18d,null))[_0x1409('0x42')](handleError(_0x41f18d,null));};exports[_0x1409('0x45')]=function(_0x131b97,_0x57e6a5){return db['VoiceDialReport'][_0x1409('0x45')]()[_0x1409('0x1f')](respondWithResult(_0x57e6a5,null))[_0x1409('0x42')](handleError(_0x57e6a5,null));};
\ No newline at end of file
index 602c190..2e64093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['path','rimraf','./voiceDialReport.attributes','exports','VoiceDialReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xae8724,_0x53e4f8){var _0x23c476=function(_0x4e1d31){while(--_0x4e1d31){_0xae8724['push'](_0xae8724['shift']());}};_0x23c476(++_0x53e4f8);}(_0x72b1,0x16e));var _0x172b=function(_0x190743,_0x6b7818){_0x190743=_0x190743-0x0;var _0x5169dc=_0x72b1[_0x190743];return _0x5169dc;};'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':'report_dial','paranoid':![],'indexes':[{'fields':[_0x172b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc7a=['lodash','api','moment','bluebird','request-promise','path','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','uniqueid'];(function(_0x226d8c,_0x44f16d){var _0x156f3c=function(_0x3757be){while(--_0x3757be){_0x226d8c['push'](_0x226d8c['shift']());}};_0x156f3c(++_0x44f16d);}(_0xcc7a,0x1e0));var _0xacc7=function(_0x21b706,_0x1022f4){_0x21b706=_0x21b706-0x0;var _0x13b94a=_0xcc7a[_0x21b706];return _0x13b94a;};'use strict';var _=require(_0xacc7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xacc7('0x1'));var moment=require(_0xacc7('0x2'));var BPromise=require(_0xacc7('0x3'));var rp=require(_0xacc7('0x4'));var fs=require('fs');var path=require(_0xacc7('0x5'));var rimraf=require('rimraf');var config=require(_0xacc7('0x6'));var attributes=require(_0xacc7('0x7'));module[_0xacc7('0x8')]=function(_0x4fc164,_0x2041e0){return _0x4fc164[_0xacc7('0x9')](_0xacc7('0xa'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0xacc7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index dc157ef..a04d898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe675=['UpdateVoiceDialReport','where','attributes','limit','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','VoiceDialReport','create','body','options','raw','CreateVoiceDialReport'];(function(_0x748d6b,_0x464a7a){var _0x4048d7=function(_0x3073ab){while(--_0x3073ab){_0x748d6b['push'](_0x748d6b['shift']());}};_0x4048d7(++_0x464a7a);}(_0xe675,0x68));var _0x5e67=function(_0x48188b,_0x1adcc5){_0x48188b=_0x48188b-0x0;var _0x24357c=_0xe675[_0x48188b];return _0x24357c;};'use strict';var _=require(_0x5e67('0x0'));var util=require(_0x5e67('0x1'));var moment=require('moment');var BPromise=require(_0x5e67('0x2'));var rs=require(_0x5e67('0x3'));var fs=require('fs');var Redis=require(_0x5e67('0x4'));var db=require(_0x5e67('0x5'))['db'];var utils=require(_0x5e67('0x6'));var logger=require('../../config/logger')(_0x5e67('0x7'));var config=require(_0x5e67('0x8'));var jayson=require(_0x5e67('0x9'));var client=jayson[_0x5e67('0xa')][_0x5e67('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x183908,_0x566593,_0x9e7b49){return new BPromise(function(_0x92d0a1,_0x2d32e9){return client['request'](_0x183908,_0x9e7b49)[_0x5e67('0xc')](function(_0x4c54ee){logger[_0x5e67('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x566593,'request\x20sent');logger[_0x5e67('0xe')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x566593,_0x5e67('0xf'),JSON['stringify'](_0x4c54ee));if(_0x4c54ee[_0x5e67('0x10')]){if(_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x11')]===0x1f4){logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);return _0x2d32e9(_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);}logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x4c54ee[_0x5e67('0x10')][_0x5e67('0x13')]);return _0x92d0a1(_0x4c54ee[_0x5e67('0x10')]['message']);}else{logger[_0x5e67('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x566593,'request\x20sent');_0x92d0a1(_0x4c54ee[_0x5e67('0x14')]['message']);}})[_0x5e67('0x15')](function(_0x256402){logger[_0x5e67('0x10')](_0x5e67('0x12'),_0x566593,_0x256402);_0x2d32e9(_0x256402);});});}exports['CreateVoiceDialReport']=function(_0x8a13d2){var _0x4eedf7=this;return new Promise(function(_0x5381ff,_0x4995a7){return db[_0x5e67('0x16')][_0x5e67('0x17')](_0x8a13d2[_0x5e67('0x18')],{'raw':_0x8a13d2[_0x5e67('0x19')]?_0x8a13d2[_0x5e67('0x19')][_0x5e67('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5e39c4){logger[_0x5e67('0xd')]('CreateVoiceDialReport',_0x8a13d2);logger[_0x5e67('0xe')](_0x5e67('0x1b'),_0x8a13d2,JSON['stringify'](_0x5e39c4));_0x5381ff(_0x5e39c4);})[_0x5e67('0x15')](function(_0x2c0066){logger['error'](_0x5e67('0x1b'),_0x2c0066[_0x5e67('0x13')],_0x8a13d2);_0x4995a7(_0x4eedf7[_0x5e67('0x10')](0x1f4,_0x2c0066[_0x5e67('0x13')]));});});};exports[_0x5e67('0x1c')]=function(_0xed81f8){var _0x22163d=this;return new Promise(function(_0xef20c1,_0x3852a8){return db[_0x5e67('0x16')]['update'](_0xed81f8[_0x5e67('0x18')],{'raw':_0xed81f8[_0x5e67('0x19')]?_0xed81f8['options'][_0x5e67('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1d')]||null:null,'attributes':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1e')]||null:null,'limit':_0xed81f8[_0x5e67('0x19')]?_0xed81f8[_0x5e67('0x19')][_0x5e67('0x1f')]||null:null})[_0x5e67('0xc')](function(_0x37f8ec){logger[_0x5e67('0xd')](_0x5e67('0x1c'),_0xed81f8);logger['debug'](_0x5e67('0x1c'),_0xed81f8,JSON[_0x5e67('0x20')](_0x37f8ec));_0xef20c1(_0x37f8ec);})[_0x5e67('0x15')](function(_0x6fba80){logger[_0x5e67('0x10')](_0x5e67('0x1c'),_0x6fba80[_0x5e67('0x13')],_0xed81f8);_0x3852a8(_0x22163d[_0x5e67('0x10')](0x1f4,_0x6fba80[_0x5e67('0x13')]));});});};
\ No newline at end of file
+var _0x396a=['attributes','limit','UpdateVoiceDialReport','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','client','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','CreateVoiceDialReport','create','body','options','raw','VoiceDialReport'];(function(_0x154e8c,_0x4b9485){var _0x487815=function(_0x4a55d7){while(--_0x4a55d7){_0x154e8c['push'](_0x154e8c['shift']());}};_0x487815(++_0x4b9485);}(_0x396a,0xff));var _0xa396=function(_0x18b358,_0x397614){_0x18b358=_0x18b358-0x0;var _0x2d25b6=_0x396a[_0x18b358];return _0x2d25b6;};'use strict';var _=require(_0xa396('0x0'));var util=require(_0xa396('0x1'));var moment=require('moment');var BPromise=require(_0xa396('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa396('0x3'));var db=require(_0xa396('0x4'))['db'];var utils=require(_0xa396('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa396('0x6')][_0xa396('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x6e0f9b,_0x344360,_0x54efab){return new BPromise(function(_0x2dd15f,_0x42f435){return client[_0xa396('0x8')](_0x6e0f9b,_0x54efab)[_0xa396('0x9')](function(_0x37ecc5){logger['info'](_0xa396('0xa'),_0x344360,_0xa396('0xb'));logger[_0xa396('0xc')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x344360,_0xa396('0xb'),JSON[_0xa396('0xd')](_0x37ecc5));if(_0x37ecc5[_0xa396('0xe')]){if(_0x37ecc5[_0xa396('0xe')]['code']===0x1f4){logger['error'](_0xa396('0xa'),_0x344360,_0x37ecc5[_0xa396('0xe')]['message']);return _0x42f435(_0x37ecc5[_0xa396('0xe')][_0xa396('0xf')]);}logger[_0xa396('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x344360,_0x37ecc5['error']['message']);return _0x2dd15f(_0x37ecc5[_0xa396('0xe')][_0xa396('0xf')]);}else{logger[_0xa396('0x10')]('VoiceDialReport,\x20%s,\x20%s',_0x344360,'request\x20sent');_0x2dd15f(_0x37ecc5[_0xa396('0x11')][_0xa396('0xf')]);}})[_0xa396('0x12')](function(_0x5037b6){logger[_0xa396('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x344360,_0x5037b6);_0x42f435(_0x5037b6);});});}exports[_0xa396('0x13')]=function(_0xb4d5dd){var _0x5c9d39=this;return new Promise(function(_0x1dd29c,_0x2236ef){return db['VoiceDialReport'][_0xa396('0x14')](_0xb4d5dd[_0xa396('0x15')],{'raw':_0xb4d5dd[_0xa396('0x16')]?_0xb4d5dd[_0xa396('0x16')][_0xa396('0x17')]===undefined?!![]:![]:!![]})[_0xa396('0x9')](function(_0x2290bc){logger['info'](_0xa396('0x13'),_0xb4d5dd);logger['debug'](_0xa396('0x13'),_0xb4d5dd,JSON[_0xa396('0xd')](_0x2290bc));_0x1dd29c(_0x2290bc);})[_0xa396('0x12')](function(_0x584d38){logger['error'](_0xa396('0x13'),_0x584d38['message'],_0xb4d5dd);_0x2236ef(_0x5c9d39['error'](0x1f4,_0x584d38[_0xa396('0xf')]));});});};exports['UpdateVoiceDialReport']=function(_0x2b6a11){var _0x1e5113=this;return new Promise(function(_0x47bbda,_0x427933){return db[_0xa396('0x18')]['update'](_0x2b6a11['body'],{'raw':_0x2b6a11[_0xa396('0x16')]?_0x2b6a11['options'][_0xa396('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b6a11[_0xa396('0x16')]?_0x2b6a11[_0xa396('0x16')]['where']||null:null,'attributes':_0x2b6a11[_0xa396('0x16')]?_0x2b6a11[_0xa396('0x16')][_0xa396('0x19')]||null:null,'limit':_0x2b6a11[_0xa396('0x16')]?_0x2b6a11['options'][_0xa396('0x1a')]||null:null})[_0xa396('0x9')](function(_0x512ff0){logger['info'](_0xa396('0x1b'),_0x2b6a11);logger[_0xa396('0xc')]('UpdateVoiceDialReport',_0x2b6a11,JSON['stringify'](_0x512ff0));_0x47bbda(_0x512ff0);})[_0xa396('0x12')](function(_0x474bd9){logger['error']('UpdateVoiceDialReport',_0x474bd9[_0xa396('0xf')],_0x2b6a11);_0x427933(_0x1e5113[_0xa396('0xe')](0x1f4,_0x474bd9[_0xa396('0xf')]));});});};
\ No newline at end of file
index 74fc46b..11503b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x772b=['index','/:id','show','post','create','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x30d568,_0x2a6441){var _0x402532=function(_0x1c49f3){while(--_0x1c49f3){_0x30d568['push'](_0x30d568['shift']());}};_0x402532(++_0x2a6441);}(_0x772b,0x17c));var _0xb772=function(_0xdc5406,_0x3df8ab){_0xdc5406=_0xdc5406-0x0;var _0x153d03=_0x772b[_0xdc5406];return _0x153d03;};'use strict';var multer=require(_0xb772('0x0'));var util=require(_0xb772('0x1'));var path=require(_0xb772('0x2'));var timeout=require(_0xb772('0x3'));var express=require(_0xb772('0x4'));var router=express['Router']();var fs_extra=require(_0xb772('0x5'));var auth=require(_0xb772('0x6'));var interaction=require(_0xb772('0x7'));var config=require(_0xb772('0x8'));var controller=require('./voiceExtension.controller');router[_0xb772('0x9')]('/',auth[_0xb772('0xa')](),controller[_0xb772('0xb')]);router['get'](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0xd')]);router[_0xb772('0xe')]('/',auth[_0xb772('0xa')](),controller[_0xb772('0xf')]);router[_0xb772('0xe')](_0xb772('0x10'),auth['isAuthenticated'](),controller[_0xb772('0x11')]);router[_0xb772('0x12')](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0x13')]);router[_0xb772('0x14')](_0xb772('0xc'),auth[_0xb772('0xa')](),controller[_0xb772('0x15')]);module[_0xb772('0x16')]=router;
\ No newline at end of file
+var _0x1c22=['put','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','addApplications'];(function(_0x53d985,_0x1cd580){var _0x34bdde=function(_0x34d312){while(--_0x34d312){_0x53d985['push'](_0x53d985['shift']());}};_0x34bdde(++_0x1cd580);}(_0x1c22,0xb7));var _0x21c2=function(_0x43a792,_0x2493d2){_0x43a792=_0x43a792-0x0;var _0x398eab=_0x1c22[_0x43a792];return _0x398eab;};'use strict';var multer=require('multer');var util=require(_0x21c2('0x0'));var path=require(_0x21c2('0x1'));var timeout=require(_0x21c2('0x2'));var express=require(_0x21c2('0x3'));var router=express[_0x21c2('0x4')]();var fs_extra=require(_0x21c2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x21c2('0x6'));var config=require('../../config/environment');var controller=require(_0x21c2('0x7'));router[_0x21c2('0x8')]('/',auth[_0x21c2('0x9')](),controller[_0x21c2('0xa')]);router[_0x21c2('0x8')](_0x21c2('0xb'),auth[_0x21c2('0x9')](),controller[_0x21c2('0xc')]);router[_0x21c2('0xd')]('/',auth[_0x21c2('0x9')](),controller[_0x21c2('0xe')]);router[_0x21c2('0xd')](_0x21c2('0xf'),auth[_0x21c2('0x9')](),controller[_0x21c2('0x10')]);router[_0x21c2('0x11')](_0x21c2('0xb'),auth[_0x21c2('0x9')](),controller['update']);router[_0x21c2('0x12')](_0x21c2('0xb'),auth[_0x21c2('0x9')](),controller[_0x21c2('0x13')]);module['exports']=router;
\ No newline at end of file
index 4f5ad47..5751fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2085=['NoOp','ENUM','internal','inbound-fax','outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','getDataValue','sequelize','exports','STRING','compositeIndex'];(function(_0x3aa9c0,_0x242ff3){var _0x49c51d=function(_0x5b8f07){while(--_0x5b8f07){_0x3aa9c0['push'](_0x3aa9c0['shift']());}};_0x49c51d(++_0x242ff3);}(_0x2085,0x1ae));var _0x5208=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x2085[_0x5678b5];return _0x4c09a5;};'use strict';var Sequelize=require(_0x5208('0x0'));module[_0x5208('0x1')]={'context':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'unique':_0x5208('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'unique':_0x5208('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x5208('0x3')},'tag':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':_0x5208('0x4')},'appdata':{'type':Sequelize[_0x5208('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x5208('0x5')]('inbound','outbound',_0x5208('0x6'),_0x5208('0x7'),_0x5208('0x8'),_0x5208('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x5208('0x2')]},'interval':{'type':Sequelize[_0x5208('0x2')],'allowNull':![],'defaultValue':_0x5208('0xa')},'IntervalId':{'type':Sequelize[_0x5208('0xb')]},'isApp':{'type':Sequelize[_0x5208('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x5208('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x5208('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x5208('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x5208('0xb')]},'recordingFormat':{'type':Sequelize[_0x5208('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x5208('0xc')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x541818){return this[_0x5208('0xd')]('exten');}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x1a97=['VIRTUAL','exten','compositeIndex','STRING','ENUM','inbound','outbound','internal','inbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x1a97,0xc5));var _0x71a9=function(_0xf55e73,_0x3fecc5){_0xf55e73=_0xf55e73-0x0;var _0x116b99=_0x1a97[_0xf55e73];return _0x116b99;};'use strict';var Sequelize=require('sequelize');module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x71a9('0x0'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x71a9('0x1')],'allowNull':![],'unique':_0x71a9('0x0')},'priority':{'type':Sequelize[_0x71a9('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x71a9('0x0')},'tag':{'type':Sequelize[_0x71a9('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x71a9('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x71a9('0x2')](_0x71a9('0x3'),_0x71a9('0x4'),_0x71a9('0x5'),_0x71a9('0x6'),'outbound-fax',_0x71a9('0x7'),_0x71a9('0x8')),'allowNull':![]},'description':{'type':Sequelize[_0x71a9('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x71a9('0x9')},'IntervalId':{'type':Sequelize[_0x71a9('0xa')]},'isApp':{'type':Sequelize[_0x71a9('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x71a9('0x1')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x71a9('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x71a9('0xa')]},'recordingFormat':{'type':Sequelize[_0x71a9('0x1')],'defaultValue':_0x71a9('0xc')},'answer':{'type':Sequelize[_0x71a9('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0x71a9('0xd')],'get':function(_0x31d822){return this['getDataValue'](_0x71a9('0xe'));}},'alias':{'type':Sequelize[_0x71a9('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 7f1eeab..f199e79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee6f=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','options','count','include','findAll','rows','catch','show','params','keys','includeAll','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','UserProfileResource','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','map','query'];(function(_0x5338b3,_0x148023){var _0x50d986=function(_0x3299b){while(--_0x3299b){_0x5338b3['push'](_0x5338b3['shift']());}};_0x50d986(++_0x148023);}(_0xee6f,0x100));var _0xfee6=function(_0x2d1ff6,_0x182530){_0x2d1ff6=_0x2d1ff6-0x0;var _0x2f1298=_0xee6f[_0x2d1ff6];return _0x2f1298;};'use strict';var _=require(_0xfee6('0x0'));var Redis=require(_0xfee6('0x1'));var qs=require(_0xfee6('0x2'));var logger=require(_0xfee6('0x3'))(_0xfee6('0x4'));var config=require(_0xfee6('0x5'));var db=require(_0xfee6('0x6'))['db'];config[_0xfee6('0x7')]=_[_0xfee6('0x8')](config[_0xfee6('0x7')],{'host':_0xfee6('0x9'),'port':0x18eb});var socket=require(_0xfee6('0xa'))(new Redis(config['redis']));require(_0xfee6('0xb'))[_0xfee6('0xc')](socket);function respondWithStatusCode(_0x43fc1d,_0xf98a0c){_0xf98a0c=_0xf98a0c||0xcc;return function(_0x2cc3e1){if(_0x2cc3e1){return _0x43fc1d[_0xfee6('0xd')](_0xf98a0c);}return _0x43fc1d[_0xfee6('0xe')](_0xf98a0c)[_0xfee6('0xf')]();};}function respondWithResult(_0x214c07,_0x3fac37){_0x3fac37=_0x3fac37||0xc8;return function(_0x4f65d5){if(_0x4f65d5){return _0x214c07[_0xfee6('0xe')](_0x3fac37)[_0xfee6('0x10')](_0x4f65d5);}};}function respondWithFilteredResult(_0x2db456,_0x1b035e){return function(_0xd7baef){if(_0xd7baef){var _0x4e2100=typeof _0x1b035e[_0xfee6('0x11')]==='undefined'&&typeof _0x1b035e[_0xfee6('0x12')]===_0xfee6('0x13');var _0x205741=_0xd7baef['count'];var _0x164793=_0x4e2100?0x0:_0x1b035e[_0xfee6('0x11')];var _0x50b34c=_0x4e2100?_0xd7baef['count']:_0x1b035e[_0xfee6('0x11')]+_0x1b035e[_0xfee6('0x12')];var _0x334f8a;if(_0x50b34c>=_0x205741){_0x50b34c=_0x205741;_0x334f8a=0xc8;}else{_0x334f8a=0xce;}_0x2db456['status'](_0x334f8a);return _0x2db456[_0xfee6('0x14')](_0xfee6('0x15'),_0x164793+'-'+_0x50b34c+'/'+_0x205741)[_0xfee6('0x10')](_0xd7baef);}return null;};}function removeEntity(_0x3498cc){return function(_0x580b77){if(_0x580b77){return _0x580b77[_0xfee6('0x16')]()[_0xfee6('0x17')](function(){var _0x4e305d=_0x580b77[_0xfee6('0x18')]({'plain':!![]});var _0xd0c4c2=[{'name':_0xfee6('0x19'),'value':_0xfee6('0x1a'),'ignore':![]},{'name':_0xfee6('0x1b'),'value':_0xfee6('0x1c'),'ignore':![]},{'name':_0xfee6('0x1d'),'value':_0xfee6('0x1e'),'ignore':![]}];var _0x1d1dcb=_(_0xd0c4c2)[_0xfee6('0x1f')](_0xfee6('0x20'))['map'](_0xfee6('0x21'))[_0xfee6('0x21')]();if(_[_0xfee6('0x22')](_0x1d1dcb,_0x4e305d[_0xfee6('0x23')])){return;}var _0xb6d429=_[_0xfee6('0x24')](_0xd0c4c2,['value',_0x4e305d[_0xfee6('0x23')]])[_0xfee6('0x25')];return db[_0xfee6('0x26')][_0xfee6('0x16')]({'where':{'type':_0xb6d429,'resourceId':_0x4e305d['id']}})[_0xfee6('0x17')](function(){return _0x580b77;});})[_0xfee6('0x17')](function(){_0x3498cc[_0xfee6('0xe')](0xcc)[_0xfee6('0xf')]();});}};}function handleEntityNotFound(_0x40705f){return function(_0x1072e2){if(!_0x1072e2){_0x40705f[_0xfee6('0xd')](0x194);}return _0x1072e2;};}function handleError(_0x4a2392,_0x5a42bc){_0x5a42bc=_0x5a42bc||0x1f4;return function(_0x2e6494){logger[_0xfee6('0x27')](_0x2e6494[_0xfee6('0x28')]);if(_0x2e6494[_0xfee6('0x25')]){delete _0x2e6494[_0xfee6('0x25')];}_0x4a2392['status'](_0x5a42bc)[_0xfee6('0x29')](_0x2e6494);};}exports[_0xfee6('0x2a')]=function(_0x411081,_0x6a54fd){var _0x6e743={},_0x2b7d2a={},_0x3aea5a={'count':0x0,'rows':[]};var _0x568296=_['map'](db[_0xfee6('0x2b')][_0xfee6('0x2c')],function(_0xee1dee){return{'name':_0xee1dee[_0xfee6('0x2d')],'type':_0xee1dee['type'][_0xfee6('0x2e')]};});_0x2b7d2a[_0xfee6('0x2f')]=_[_0xfee6('0x30')](_0x568296,_0xfee6('0x25'));_0x2b7d2a[_0xfee6('0x31')]=_['keys'](_0x411081['query']);_0x2b7d2a[_0xfee6('0x32')]=_['intersection'](_0x2b7d2a[_0xfee6('0x2f')],_0x2b7d2a[_0xfee6('0x31')]);_0x6e743[_0xfee6('0x33')]=_[_0xfee6('0x34')](_0x2b7d2a[_0xfee6('0x2f')],qs[_0xfee6('0x35')](_0x411081[_0xfee6('0x31')][_0xfee6('0x35')]));_0x6e743[_0xfee6('0x33')]=_0x6e743[_0xfee6('0x33')][_0xfee6('0x36')]?_0x6e743['attributes']:_0x2b7d2a[_0xfee6('0x2f')];if(!_0x411081[_0xfee6('0x31')][_0xfee6('0x37')](_0xfee6('0x38'))){_0x6e743[_0xfee6('0x12')]=qs[_0xfee6('0x12')](_0x411081[_0xfee6('0x31')][_0xfee6('0x12')]);_0x6e743[_0xfee6('0x11')]=qs[_0xfee6('0x11')](_0x411081['query']['offset']);}_0x6e743[_0xfee6('0x39')]=qs[_0xfee6('0x3a')](_0x411081[_0xfee6('0x31')][_0xfee6('0x3a')]);_0x6e743['where']=qs[_0xfee6('0x32')](_['pick'](_0x411081[_0xfee6('0x31')],_0x2b7d2a[_0xfee6('0x32')]),_0x568296);if(_0x411081['query']['filter']){_0x6e743['where']=_[_0xfee6('0x3b')](_0x6e743[_0xfee6('0x3c')],{'$or':_[_0xfee6('0x30')](_0x568296,function(_0x4ce64e){if(_0x4ce64e[_0xfee6('0x23')]!==_0xfee6('0x3d')){var _0x385b60={};_0x385b60[_0x4ce64e[_0xfee6('0x25')]]={'$like':'%'+_0x411081[_0xfee6('0x31')][_0xfee6('0x1f')]+'%'};return _0x385b60;}})});}_0x6e743=_[_0xfee6('0x3b')]({},_0x6e743,_0x411081[_0xfee6('0x3e')]);var _0x2b958e={'where':_0x6e743[_0xfee6('0x3c')]};return db['VoiceExtension'][_0xfee6('0x3f')](_0x2b958e)['then'](function(_0x4fe9fe){_0x3aea5a[_0xfee6('0x3f')]=_0x4fe9fe;if(_0x411081[_0xfee6('0x31')]['includeAll']){_0x6e743[_0xfee6('0x40')]=[{'all':!![]}];}return db[_0xfee6('0x2b')][_0xfee6('0x41')](_0x6e743);})[_0xfee6('0x17')](function(_0x552c00){_0x3aea5a[_0xfee6('0x42')]=_0x552c00;return _0x3aea5a;})[_0xfee6('0x17')](respondWithFilteredResult(_0x6a54fd,_0x6e743))[_0xfee6('0x43')](handleError(_0x6a54fd,null));};exports[_0xfee6('0x44')]=function(_0x4ef527,_0xb4da99){var _0x2a92b8={'raw':![],'where':{'id':_0x4ef527[_0xfee6('0x45')]['id']}},_0x93a63d={};_0x93a63d[_0xfee6('0x2f')]=_['keys'](db[_0xfee6('0x2b')]['rawAttributes']);_0x93a63d[_0xfee6('0x31')]=_[_0xfee6('0x46')](_0x4ef527['query']);_0x93a63d[_0xfee6('0x32')]=_[_0xfee6('0x34')](_0x93a63d[_0xfee6('0x2f')],_0x93a63d[_0xfee6('0x31')]);_0x2a92b8[_0xfee6('0x33')]=_[_0xfee6('0x34')](_0x93a63d['model'],qs[_0xfee6('0x35')](_0x4ef527[_0xfee6('0x31')][_0xfee6('0x35')]));_0x2a92b8[_0xfee6('0x33')]=_0x2a92b8['attributes'][_0xfee6('0x36')]?_0x2a92b8['attributes']:_0x93a63d['model'];if(_0x4ef527[_0xfee6('0x31')][_0xfee6('0x47')]){_0x2a92b8[_0xfee6('0x40')]=[{'all':!![]}];}_0x2a92b8=_[_0xfee6('0x3b')]({},_0x2a92b8,_0x4ef527[_0xfee6('0x3e')]);return db['VoiceExtension']['find'](_0x2a92b8)[_0xfee6('0x17')](handleEntityNotFound(_0xb4da99,null))[_0xfee6('0x17')](respondWithResult(_0xb4da99,null))[_0xfee6('0x43')](handleError(_0xb4da99,null));};exports[_0xfee6('0x16')]=function(_0x42cd88,_0x352930){return db[_0xfee6('0x2b')][_0xfee6('0x24')]({'where':{'id':_0x42cd88[_0xfee6('0x45')]['id']}})[_0xfee6('0x17')](handleEntityNotFound(_0x352930,null))[_0xfee6('0x17')](removeEntity(_0x352930,null))['catch'](handleError(_0x352930,null));};exports[_0xfee6('0x48')]=function(_0x3c6d3e,_0x2274f8){if(_0x3c6d3e[_0xfee6('0x49')][_0xfee6('0x23')]==='outbound'&&!_[_0xfee6('0x4a')](_0x3c6d3e[_0xfee6('0x49')][_0xfee6('0x4b')],'_')){_0x3c6d3e['body'][_0xfee6('0x4b')]='_'[_0xfee6('0x4c')](_0x3c6d3e[_0xfee6('0x49')]['exten']);}return db[_0xfee6('0x2b')]['create'](_0x3c6d3e[_0xfee6('0x49')],{'raw':![]})[_0xfee6('0x17')](function(_0x9d9d8a){var _0xfa072a=_0x3c6d3e[_0xfee6('0x4d')][_0xfee6('0x18')]({'plain':!![]});if(!_0xfa072a)throw new Error(_0xfee6('0x4e'));if(_0xfa072a[_0xfee6('0x4f')]==='user'){var _0x59865c=_0x9d9d8a['get']({'plain':!![]});var _0x3007fb=[{'name':'InboundRoutes','value':_0xfee6('0x1a')},{'name':_0xfee6('0x1b'),'value':_0xfee6('0x1c')},{'name':_0xfee6('0x1d'),'value':_0xfee6('0x1e')}];var _0x4946d9=_['find'](_0x3007fb,[_0xfee6('0x21'),_0x59865c[_0xfee6('0x23')]])[_0xfee6('0x25')];return db[_0xfee6('0x50')][_0xfee6('0x24')]({'where':{'name':_0x4946d9,'userProfileId':_0xfa072a[_0xfee6('0x51')]},'raw':!![]})[_0xfee6('0x17')](function(_0x1d1c64){if(_0x1d1c64&&_0x1d1c64[_0xfee6('0x52')]===0x0){return db['UserProfileResource'][_0xfee6('0x48')]({'name':_0x59865c['name'],'resourceId':_0x59865c['id'],'type':_0x1d1c64[_0xfee6('0x25')],'sectionId':_0x1d1c64['id']},{})[_0xfee6('0x17')](function(){return _0x9d9d8a;});}else{return _0x9d9d8a;}})['catch'](function(_0x513d1b){logger[_0xfee6('0x27')](_0xfee6('0x53'),_0x513d1b);throw _0x513d1b;});}return _0x9d9d8a;})[_0xfee6('0x17')](respondWithResult(_0x2274f8,0xc9))[_0xfee6('0x43')](handleError(_0x2274f8,null));};exports[_0xfee6('0x54')]=function(_0x24fdbe,_0x582ce6){if(_0x24fdbe[_0xfee6('0x49')]['id']){delete _0x24fdbe[_0xfee6('0x49')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x24fdbe[_0xfee6('0x45')]['id']}})['then'](handleEntityNotFound(_0x582ce6,null))[_0xfee6('0x17')](function(_0x462a49){if(_0x462a49){return db[_0xfee6('0x2b')][_0xfee6('0x54')](_[_0xfee6('0x55')](_0x24fdbe[_0xfee6('0x49')],[_0xfee6('0x4b'),_0xfee6('0x56'),_0xfee6('0x57'),_0xfee6('0x58'),'cutdigits',_0xfee6('0x59'),_0xfee6('0x5a')]),{'where':{'context':_0x462a49[_0xfee6('0x56')],'exten':_0x462a49[_0xfee6('0x4b')]},'individualHooks':!![]})[_0xfee6('0x17')](function(_0x386ae7){return _0x386ae7;});}return null;})['then'](respondWithStatusCode(_0x582ce6,null))['catch'](handleError(_0x582ce6,null));};exports[_0xfee6('0x5b')]=function(_0x36cd76,_0xd2304b){var _0x2ef74a=_0x36cd76[_0xfee6('0x45')]['id'];var _0x506582=_0x36cd76[_0xfee6('0x49')];var _0x48acdf=0xc8;var _0x1bd645=null;return db['sequelize'][_0xfee6('0x5c')]({'isolationLevel':db[_0xfee6('0x5d')][_0xfee6('0x5e')][_0xfee6('0x5f')][_0xfee6('0x60')]},function(_0x14826e){return db[_0xfee6('0x2b')]['findOne']({'where':{'id':_0x2ef74a},'transaction':_0x14826e})[_0xfee6('0x17')](function(_0x3f8f8b){if(_0x3f8f8b){return db['VoiceExtension'][_0xfee6('0x16')]({'where':{'VoiceExtensionId':_0x2ef74a},'transaction':_0x14826e})['then'](function(){var _0x3d5713=_['map'](_0x506582,function(_0xdddad){_0xdddad['VoiceExtensionId']=_0x2ef74a;_0xdddad[_0xfee6('0x61')]=!![];return _0xdddad;});return _0x3f8f8b[_0xfee6('0x62')](_0x3d5713);})['then'](function(_0x35e87e){return db[_0xfee6('0x2b')][_0xfee6('0x63')](_0x35e87e,{'transaction':_0x14826e});});}else{_0x48acdf=0x194;_0x1bd645=[];}});})[_0xfee6('0x17')](function(){if(_0x48acdf!==0x194){return db['VoiceExtension'][_0xfee6('0x64')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2ef74a},'order':_0xfee6('0x65')})[_0xfee6('0x17')](function(_0x449e99){_0x1bd645=_0x449e99;});}})[_0xfee6('0x43')](function(_0x1b37c9){_0x48acdf=0x1f4;logger[_0xfee6('0x27')](_0x1b37c9['stack']);if(_0x1b37c9['name']){delete _0x1b37c9[_0xfee6('0x25')];}_0x1bd645=_0x1b37c9;})['finally'](function(){if(_0x1bd645===null){_0xd2304b['sendStatus'](_0x48acdf);}else{if(_0x48acdf===0x1f4){_0xd2304b[_0xfee6('0xe')](_0x48acdf)['send'](_0x1bd645);}else{_0xd2304b['status'](_0x48acdf)[_0xfee6('0x10')](_0x1bd645);}}});};
\ No newline at end of file
+var _0xe946=['cast(priority\x20as\x20unsigned)','finally','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','destroy','InboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','UserProfileResource','then','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','create','startsWith','exten','body','concat','user','role','get','inbound','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','mandatoryDisposition','alias','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','bulkCreate','findAndCountAll'];(function(_0x23f9ec,_0x568e44){var _0x168e8b=function(_0x5e90b4){while(--_0x5e90b4){_0x23f9ec['push'](_0x23f9ec['shift']());}};_0x168e8b(++_0x568e44);}(_0xe946,0x1d3));var _0x6e94=function(_0x234d6d,_0x445c2b){_0x234d6d=_0x234d6d-0x0;var _0xc0bf22=_0xe946[_0x234d6d];return _0xc0bf22;};'use strict';var _=require(_0x6e94('0x0'));var Redis=require('ioredis');var qs=require(_0x6e94('0x1'));var logger=require(_0x6e94('0x2'))(_0x6e94('0x3'));var config=require('../../config/environment');var db=require(_0x6e94('0x4'))['db'];config[_0x6e94('0x5')]=_[_0x6e94('0x6')](config[_0x6e94('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x6e94('0x7'))(new Redis(config[_0x6e94('0x5')]));require(_0x6e94('0x8'))['register'](socket);function respondWithStatusCode(_0x265a3a,_0x48e7c6){_0x48e7c6=_0x48e7c6||0xcc;return function(_0x2db023){if(_0x2db023){return _0x265a3a[_0x6e94('0x9')](_0x48e7c6);}return _0x265a3a[_0x6e94('0xa')](_0x48e7c6)[_0x6e94('0xb')]();};}function respondWithResult(_0x3a7f91,_0x5ab60e){_0x5ab60e=_0x5ab60e||0xc8;return function(_0xde95cf){if(_0xde95cf){return _0x3a7f91[_0x6e94('0xa')](_0x5ab60e)[_0x6e94('0xc')](_0xde95cf);}};}function respondWithFilteredResult(_0xd31abd,_0x11d69f){return function(_0x5d8853){if(_0x5d8853){var _0x5c8154=typeof _0x11d69f[_0x6e94('0xd')]==='undefined'&&typeof _0x11d69f[_0x6e94('0xe')]===_0x6e94('0xf');var _0xf93756=_0x5d8853['count'];var _0x1c0a10=_0x5c8154?0x0:_0x11d69f[_0x6e94('0xd')];var _0x1be120=_0x5c8154?_0x5d8853['count']:_0x11d69f[_0x6e94('0xd')]+_0x11d69f[_0x6e94('0xe')];var _0xac9ac1;if(_0x1be120>=_0xf93756){_0x1be120=_0xf93756;_0xac9ac1=0xc8;}else{_0xac9ac1=0xce;}_0xd31abd[_0x6e94('0xa')](_0xac9ac1);return _0xd31abd[_0x6e94('0x10')](_0x6e94('0x11'),_0x1c0a10+'-'+_0x1be120+'/'+_0xf93756)[_0x6e94('0xc')](_0x5d8853);}return null;};}function removeEntity(_0x5985ee){return function(_0x3b26d9){if(_0x3b26d9){return _0x3b26d9[_0x6e94('0x12')]()['then'](function(){var _0x90828d=_0x3b26d9['get']({'plain':!![]});var _0x354f83=[{'name':_0x6e94('0x13'),'value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':_0x6e94('0x14'),'ignore':![]},{'name':_0x6e94('0x15'),'value':_0x6e94('0x16'),'ignore':![]}];var _0xd7dd23=_(_0x354f83)[_0x6e94('0x17')](_0x6e94('0x18'))[_0x6e94('0x19')](_0x6e94('0x1a'))[_0x6e94('0x1a')]();if(_[_0x6e94('0x1b')](_0xd7dd23,_0x90828d[_0x6e94('0x1c')])){return;}var _0x23563f=_[_0x6e94('0x1d')](_0x354f83,[_0x6e94('0x1a'),_0x90828d[_0x6e94('0x1c')]])[_0x6e94('0x1e')];return db[_0x6e94('0x1f')][_0x6e94('0x12')]({'where':{'type':_0x23563f,'resourceId':_0x90828d['id']}})[_0x6e94('0x20')](function(){return _0x3b26d9;});})['then'](function(){_0x5985ee['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x168c1f){return function(_0x18c63a){if(!_0x18c63a){_0x168c1f[_0x6e94('0x9')](0x194);}return _0x18c63a;};}function handleError(_0x44511f,_0x10be9f){_0x10be9f=_0x10be9f||0x1f4;return function(_0x5162b8){logger['error'](_0x5162b8[_0x6e94('0x21')]);if(_0x5162b8[_0x6e94('0x1e')]){delete _0x5162b8[_0x6e94('0x1e')];}_0x44511f[_0x6e94('0xa')](_0x10be9f)[_0x6e94('0x22')](_0x5162b8);};}exports[_0x6e94('0x23')]=function(_0x24a6b7,_0x5c24a2){var _0x5a9441={},_0x2257fc={},_0x2dcb72={'count':0x0,'rows':[]};var _0x166f35=_[_0x6e94('0x19')](db[_0x6e94('0x24')][_0x6e94('0x25')],function(_0x549288){return{'name':_0x549288[_0x6e94('0x26')],'type':_0x549288[_0x6e94('0x1c')][_0x6e94('0x27')]};});_0x2257fc[_0x6e94('0x28')]=_[_0x6e94('0x19')](_0x166f35,_0x6e94('0x1e'));_0x2257fc['query']=_[_0x6e94('0x29')](_0x24a6b7[_0x6e94('0x2a')]);_0x2257fc[_0x6e94('0x2b')]=_[_0x6e94('0x2c')](_0x2257fc['model'],_0x2257fc[_0x6e94('0x2a')]);_0x5a9441['attributes']=_[_0x6e94('0x2c')](_0x2257fc['model'],qs['fields'](_0x24a6b7[_0x6e94('0x2a')][_0x6e94('0x2d')]));_0x5a9441[_0x6e94('0x2e')]=_0x5a9441[_0x6e94('0x2e')][_0x6e94('0x2f')]?_0x5a9441[_0x6e94('0x2e')]:_0x2257fc[_0x6e94('0x28')];if(!_0x24a6b7[_0x6e94('0x2a')]['hasOwnProperty'](_0x6e94('0x30'))){_0x5a9441[_0x6e94('0xe')]=qs['limit'](_0x24a6b7[_0x6e94('0x2a')][_0x6e94('0xe')]);_0x5a9441[_0x6e94('0xd')]=qs[_0x6e94('0xd')](_0x24a6b7[_0x6e94('0x2a')]['offset']);}_0x5a9441[_0x6e94('0x31')]=qs[_0x6e94('0x32')](_0x24a6b7[_0x6e94('0x2a')]['sort']);_0x5a9441[_0x6e94('0x33')]=qs[_0x6e94('0x2b')](_[_0x6e94('0x34')](_0x24a6b7['query'],_0x2257fc[_0x6e94('0x2b')]),_0x166f35);if(_0x24a6b7[_0x6e94('0x2a')][_0x6e94('0x17')]){_0x5a9441[_0x6e94('0x33')]=_[_0x6e94('0x35')](_0x5a9441[_0x6e94('0x33')],{'$or':_[_0x6e94('0x19')](_0x166f35,function(_0x47579d){if(_0x47579d[_0x6e94('0x1c')]!==_0x6e94('0x36')){var _0x1f2a46={};_0x1f2a46[_0x47579d[_0x6e94('0x1e')]]={'$like':'%'+_0x24a6b7[_0x6e94('0x2a')][_0x6e94('0x17')]+'%'};return _0x1f2a46;}})});}_0x5a9441=_[_0x6e94('0x35')]({},_0x5a9441,_0x24a6b7[_0x6e94('0x37')]);var _0x3a5775={'where':_0x5a9441[_0x6e94('0x33')]};return db[_0x6e94('0x24')][_0x6e94('0x38')](_0x3a5775)[_0x6e94('0x20')](function(_0x4793aa){_0x2dcb72[_0x6e94('0x38')]=_0x4793aa;if(_0x24a6b7[_0x6e94('0x2a')][_0x6e94('0x39')]){_0x5a9441[_0x6e94('0x3a')]=[{'all':!![]}];}return db[_0x6e94('0x24')]['findAll'](_0x5a9441);})[_0x6e94('0x20')](function(_0x9688f0){_0x2dcb72[_0x6e94('0x3b')]=_0x9688f0;return _0x2dcb72;})[_0x6e94('0x20')](respondWithFilteredResult(_0x5c24a2,_0x5a9441))[_0x6e94('0x3c')](handleError(_0x5c24a2,null));};exports[_0x6e94('0x3d')]=function(_0x6835b3,_0x25e91d){var _0x16193e={'raw':![],'where':{'id':_0x6835b3[_0x6e94('0x3e')]['id']}},_0x23a3ef={};_0x23a3ef[_0x6e94('0x28')]=_[_0x6e94('0x29')](db[_0x6e94('0x24')][_0x6e94('0x25')]);_0x23a3ef[_0x6e94('0x2a')]=_[_0x6e94('0x29')](_0x6835b3[_0x6e94('0x2a')]);_0x23a3ef[_0x6e94('0x2b')]=_[_0x6e94('0x2c')](_0x23a3ef[_0x6e94('0x28')],_0x23a3ef[_0x6e94('0x2a')]);_0x16193e[_0x6e94('0x2e')]=_[_0x6e94('0x2c')](_0x23a3ef['model'],qs[_0x6e94('0x2d')](_0x6835b3[_0x6e94('0x2a')][_0x6e94('0x2d')]));_0x16193e['attributes']=_0x16193e[_0x6e94('0x2e')][_0x6e94('0x2f')]?_0x16193e[_0x6e94('0x2e')]:_0x23a3ef[_0x6e94('0x28')];if(_0x6835b3['query']['includeAll']){_0x16193e['include']=[{'all':!![]}];}_0x16193e=_[_0x6e94('0x35')]({},_0x16193e,_0x6835b3[_0x6e94('0x37')]);return db['VoiceExtension']['find'](_0x16193e)['then'](handleEntityNotFound(_0x25e91d,null))[_0x6e94('0x20')](respondWithResult(_0x25e91d,null))[_0x6e94('0x3c')](handleError(_0x25e91d,null));};exports['destroy']=function(_0x3e1acc,_0x5075a2){return db[_0x6e94('0x24')]['find']({'where':{'id':_0x3e1acc[_0x6e94('0x3e')]['id']}})[_0x6e94('0x20')](handleEntityNotFound(_0x5075a2,null))['then'](removeEntity(_0x5075a2,null))[_0x6e94('0x3c')](handleError(_0x5075a2,null));};exports[_0x6e94('0x3f')]=function(_0x1b6cb4,_0x53f541){if(_0x1b6cb4['body'][_0x6e94('0x1c')]===_0x6e94('0x14')&&!_[_0x6e94('0x40')](_0x1b6cb4['body'][_0x6e94('0x41')],'_')){_0x1b6cb4[_0x6e94('0x42')][_0x6e94('0x41')]='_'[_0x6e94('0x43')](_0x1b6cb4['body'][_0x6e94('0x41')]);}return db[_0x6e94('0x24')][_0x6e94('0x3f')](_0x1b6cb4[_0x6e94('0x42')],{'raw':![]})[_0x6e94('0x20')](function(_0x1c75ac){var _0x1f4888=_0x1b6cb4[_0x6e94('0x44')]['get']({'plain':!![]});if(!_0x1f4888)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f4888[_0x6e94('0x45')]==='user'){var _0x539e27=_0x1c75ac[_0x6e94('0x46')]({'plain':!![]});var _0x167725=[{'name':_0x6e94('0x13'),'value':_0x6e94('0x47')},{'name':'OutboundRoutes','value':_0x6e94('0x14')},{'name':_0x6e94('0x15'),'value':'internal'}];var _0x483db4=_[_0x6e94('0x1d')](_0x167725,[_0x6e94('0x1a'),_0x539e27['type']])['name'];return db[_0x6e94('0x48')]['find']({'where':{'name':_0x483db4,'userProfileId':_0x1f4888[_0x6e94('0x49')]},'raw':!![]})[_0x6e94('0x20')](function(_0x35c8cc){if(_0x35c8cc&&_0x35c8cc[_0x6e94('0x4a')]===0x0){return db['UserProfileResource'][_0x6e94('0x3f')]({'name':_0x539e27[_0x6e94('0x1e')],'resourceId':_0x539e27['id'],'type':_0x35c8cc[_0x6e94('0x1e')],'sectionId':_0x35c8cc['id']},{})['then'](function(){return _0x1c75ac;});}else{return _0x1c75ac;}})[_0x6e94('0x3c')](function(_0x2cdfd4){logger[_0x6e94('0x4b')](_0x6e94('0x4c'),_0x2cdfd4);throw _0x2cdfd4;});}return _0x1c75ac;})[_0x6e94('0x20')](respondWithResult(_0x53f541,0xc9))[_0x6e94('0x3c')](handleError(_0x53f541,null));};exports['update']=function(_0x4d49fc,_0x128080){if(_0x4d49fc['body']['id']){delete _0x4d49fc[_0x6e94('0x42')]['id'];}return db[_0x6e94('0x24')][_0x6e94('0x1d')]({'where':{'id':_0x4d49fc[_0x6e94('0x3e')]['id']}})[_0x6e94('0x20')](handleEntityNotFound(_0x128080,null))['then'](function(_0x4019e5){if(_0x4019e5){return db[_0x6e94('0x24')][_0x6e94('0x4d')](_[_0x6e94('0x34')](_0x4d49fc[_0x6e94('0x42')],[_0x6e94('0x41'),_0x6e94('0x4e'),_0x6e94('0x4f'),_0x6e94('0x50'),'cutdigits',_0x6e94('0x51'),_0x6e94('0x52')]),{'where':{'context':_0x4019e5[_0x6e94('0x4e')],'exten':_0x4019e5[_0x6e94('0x41')]},'individualHooks':!![]})[_0x6e94('0x20')](function(_0x4c7af2){return _0x4c7af2;});}return null;})[_0x6e94('0x20')](respondWithStatusCode(_0x128080,null))[_0x6e94('0x3c')](handleError(_0x128080,null));};exports['addApplications']=function(_0x118501,_0x2ef2d0){var _0x5c886b=_0x118501[_0x6e94('0x3e')]['id'];var _0x36c95d=_0x118501['body'];var _0x175e2c=0xc8;var _0x18f490=null;return db[_0x6e94('0x53')]['transaction']({'isolationLevel':db[_0x6e94('0x53')][_0x6e94('0x54')][_0x6e94('0x55')][_0x6e94('0x56')]},function(_0x3616cd){return db[_0x6e94('0x24')][_0x6e94('0x57')]({'where':{'id':_0x5c886b},'transaction':_0x3616cd})[_0x6e94('0x20')](function(_0x5a5072){if(_0x5a5072){return db['VoiceExtension'][_0x6e94('0x12')]({'where':{'VoiceExtensionId':_0x5c886b},'transaction':_0x3616cd})[_0x6e94('0x20')](function(){var _0x58b0fc=_[_0x6e94('0x19')](_0x36c95d,function(_0x5ae674){_0x5ae674['VoiceExtensionId']=_0x5c886b;_0x5ae674[_0x6e94('0x58')]=!![];return _0x5ae674;});return _0x5a5072['createRouting'](_0x58b0fc);})[_0x6e94('0x20')](function(_0x2c53dc){return db[_0x6e94('0x24')][_0x6e94('0x59')](_0x2c53dc,{'transaction':_0x3616cd});});}else{_0x175e2c=0x194;_0x18f490=[];}});})[_0x6e94('0x20')](function(){if(_0x175e2c!==0x194){return db[_0x6e94('0x24')][_0x6e94('0x5a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5c886b},'order':_0x6e94('0x5b')})[_0x6e94('0x20')](function(_0x4e00be){_0x18f490=_0x4e00be;});}})['catch'](function(_0x1bb68a){_0x175e2c=0x1f4;logger['error'](_0x1bb68a[_0x6e94('0x21')]);if(_0x1bb68a[_0x6e94('0x1e')]){delete _0x1bb68a[_0x6e94('0x1e')];}_0x18f490=_0x1bb68a;})[_0x6e94('0x5c')](function(){if(_0x18f490===null){_0x2ef2d0['sendStatus'](_0x175e2c);}else{if(_0x175e2c===0x1f4){_0x2ef2d0[_0x6e94('0xa')](_0x175e2c)['send'](_0x18f490);}else{_0x2ef2d0[_0x6e94('0xa')](_0x175e2c)['json'](_0x18f490);}}});};
\ No newline at end of file
index b95d22e..32b1530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x411a=['exports','events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x411a,0x121));var _0xa411=function(_0x514260,_0x1891e1){_0x514260=_0x514260-0x0;var _0x4ac81b=_0x411a[_0x514260];return _0x4ac81b;};'use strict';var EventEmitter=require(_0xa411('0x0'));var VoiceExtension=require(_0xa411('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa411('0x2')](0x0);var events={'afterCreate':_0xa411('0x3'),'afterUpdate':_0xa411('0x4'),'afterDestroy':'remove'};function emitEvent(_0x43a577){return function(_0xe5ce82,_0x13fc2d,_0x4e4d77){VoiceExtensionEvents[_0xa411('0x5')](_0x43a577+':'+_0xe5ce82['id'],_0xe5ce82);VoiceExtensionEvents['emit'](_0x43a577,_0xe5ce82);_0x4e4d77(null);};}for(var e in events){if(events[_0xa411('0x6')](e)){var event=events[e];VoiceExtension[_0xa411('0x7')](e,emitEvent(event));}}module[_0xa411('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x1406=['events','../../mysqldb','setMaxListeners','save','update','remove','hasOwnProperty','hook'];(function(_0x169790,_0x48aa33){var _0x4d0f36=function(_0x2a848d){while(--_0x2a848d){_0x169790['push'](_0x169790['shift']());}};_0x4d0f36(++_0x48aa33);}(_0x1406,0x180));var _0x6140=function(_0x1412b0,_0x4f74f6){_0x1412b0=_0x1412b0-0x0;var _0x301894=_0x1406[_0x1412b0];return _0x301894;};'use strict';var EventEmitter=require(_0x6140('0x0'));var VoiceExtension=require(_0x6140('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x6140('0x2')](0x0);var events={'afterCreate':_0x6140('0x3'),'afterUpdate':_0x6140('0x4'),'afterDestroy':_0x6140('0x5')};function emitEvent(_0x4fbe80){return function(_0x2ed021,_0x146579,_0x2f03bf){VoiceExtensionEvents['emit'](_0x4fbe80+':'+_0x2ed021['id'],_0x2ed021);VoiceExtensionEvents['emit'](_0x4fbe80,_0x2ed021);_0x2f03bf(null);};}for(var e in events){if(events[_0x6140('0x6')](e)){var event=events[e];VoiceExtension[_0x6140('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index 523d4d3..a219459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379e=['answer','includes','toLowerCase','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','last','concat','priority','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','models','type','CDR(type)=','context','exten','Set','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','push','inbound','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','):Goto(','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','split','name','param','phone','prefix','SIP','join','none','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','map','filter','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','hasOwnProperty'];(function(_0x45df9d,_0x377fa9){var _0x3ef722=function(_0x5c9c3c){while(--_0x5c9c3c){_0x45df9d['push'](_0x45df9d['shift']());}};_0x3ef722(++_0x377fa9);}(_0x379e,0x104));var _0xe379=function(_0x4e0b66,_0x212210){_0x4e0b66=_0x4e0b66-0x0;var _0x466c9e=_0x379e[_0x4e0b66];return _0x466c9e;};'use strict';var _=require(_0xe379('0x0'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x4bbe70){var _0x594cd4=_0x4bbe70[_0xe379('0x1')];function _0x1e24f9(_0x4387fd){var _0x3db31a=0x2;var _0x475418=[{'type':_0x4387fd[_0xe379('0x2')],'app':'Set','appdata':_0xe379('0x3')+_0x4387fd[_0xe379('0x2')],'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0x4387fd['alias']?_0xe379('0x6'):_0xe379('0x7'),'appdata':_0x4387fd[_0xe379('0x8')]?_0xe379('0x9')+_0x4387fd[_0xe379('0x8')]:_0xe379('0xa'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']}];if(_0x4387fd[_0xe379('0x2')]==='inbound'){_0x475418[_0xe379('0xb')]({'type':_0xe379('0xc'),'app':_0xe379('0x6'),'appdata':_0xe379('0xd')+_0x4387fd['id'],'context':_0x4387fd['context'],'exten':_0x4387fd['exten'],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']});}_0x475418[_0xe379('0xb')]({'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':_0xe379('0xe'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd[_0xe379('0x5')],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']},{'type':_0x4387fd[_0xe379('0x2')],'app':_0xe379('0x6'),'appdata':_0xe379('0xf'),'context':_0x4387fd[_0xe379('0x4')],'exten':_0x4387fd['exten'],'priority':_0x3db31a++,'VoiceExtensionId':_0x4387fd['id']});return _0x475418;}function _0x2615bd(_0x5cb274){var _0x2c2bd9=0x2;var _0x56c11d=[{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x11'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0x5cb274[_0xe379('0x8')]?_0xe379('0x6'):_0xe379('0x7'),'appdata':_0x5cb274[_0xe379('0x8')]?'CDR(routeAlias)='+_0x5cb274[_0xe379('0x8')]:_0xe379('0xa'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x12')+(_0x5cb274[_0xe379('0x13')]?_0xe379('0x14')+_0x5cb274['cutdigits']+'}':_0xe379('0x15')),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':'outbound','app':_0xe379('0x6'),'appdata':_0xe379('0xd')+_0x5cb274['id'],'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x2c2bd9+0x2)+_0xe379('0x16')+(_0x2c2bd9+0x1)+')','context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':'outbound','app':_0xe379('0x6'),'appdata':_0x5cb274[_0xe379('0x13')]?_0xe379('0x17')+_0x5cb274[_0xe379('0x13')]+'}':'CDR(prefix)=noprefix','context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0xe'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x18'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0xf'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x19')+_0x5cb274['id'],'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']}];if(_0x5cb274['hasOwnProperty'](_0xe379('0x1a'))&&_0x5cb274['recordingFormat']!=='none'){_0x56c11d[_0xe379('0xb')]({'type':_0xe379('0x10'),'app':_0xe379('0x6'),'appdata':_0xe379('0x1b'),'context':_0x5cb274['context'],'exten':_0x5cb274[_0xe379('0x5')],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']},{'type':_0xe379('0x10'),'app':'Set','appdata':_0xe379('0x1c')+_0x5cb274[_0xe379('0x1a')]||_0xe379('0x1d'),'context':_0x5cb274[_0xe379('0x4')],'exten':_0x5cb274['exten'],'priority':_0x2c2bd9++,'VoiceExtensionId':_0x5cb274['id']});}return _0x56c11d;}function _0x2a3a99(_0x5936ec,_0xdc957d){var _0x38d971=[{'name':_0xe379('0x1e'),'param':0x0},{'name':_0xe379('0x1f'),'param':0x1},{'name':_0xe379('0x20'),'param':0x2},{'name':'url','param':0x3}];var _0x142c9a={};var _0x528c36=_0xdc957d[_0xe379('0x21')](',');var _0x199e28=[];for(var _0x15db56=0x0;_0x15db56<_0x38d971['length'];_0x15db56++){switch(_0x38d971[_0x15db56][_0xe379('0x22')]){case _0xe379('0x1e'):_0x142c9a[_0xe379('0x1e')]=_0x528c36[_0x38d971[_0x15db56][_0xe379('0x23')]]['split']('/')[0x1];_0x142c9a[_0xe379('0x24')]=_0x528c36[_0x38d971[_0x15db56]['param']][_0xe379('0x21')]('/')[0x2];_0x142c9a[_0xe379('0x25')]=_0x142c9a[_0xe379('0x24')]?_0x142c9a[_0xe379('0x24')][_0xe379('0x21')]('$')[0x0]:undefined;_0x142c9a[_0xe379('0x24')]=_0x5936ec['cutdigits']?(_0x142c9a[_0xe379('0x25')]||'')+'${EXTEN:'+_0x5936ec[_0xe379('0x13')]+'}':(_0x142c9a[_0xe379('0x25')]||'')+_0xe379('0x15');_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=[_0xe379('0x26'),_0x142c9a['trunk'],_0x142c9a[_0xe379('0x24')]][_0xe379('0x27')]('/');break;case'options':_0x142c9a['options']=_0x528c36[_0x38d971[_0x15db56]['param']];if(_0x5936ec[_0xe379('0x1a')]!==_0xe379('0x28')){if(_0x142c9a[_0xe379('0x20')]['indexOf'](_0xe379('0x29'))<0x0){_0x142c9a[_0xe379('0x20')]+=_0xe379('0x29');}}else{_0x142c9a[_0xe379('0x20')]=_0x142c9a['options'][_0xe379('0x2a')](_0xe379('0x29'),'');}_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=_0x142c9a[_0xe379('0x20')];break;default:_0x199e28[_0x38d971[_0x15db56][_0xe379('0x23')]]=_0x528c36[_0x38d971[_0x15db56]['param']];}}return _0x199e28[_0xe379('0x27')](',');}function _0x1b8050(_0x43cf2e,_0x35b663,_0x35a5e8){return new Promise(function(_0x444fa9,_0x5e0d55){var _0x26d868=[];if(_['isEmpty'](_0x35b663))return _0x444fa9(_0x26d868);_0x594cd4[_0xe379('0x2b')][_0xe379('0x2c')]({'attributes':['id',_0xe379('0x2d'),_0xe379('0x2e')],'raw':!![]})[_0xe379('0x2f')](function(_0x2b20e4){for(var _0x460dc4=0x0,_0x6182d1=0x0;_0x460dc4<_0x35b663[_0xe379('0x30')];_0x460dc4++,_0x6182d1=0x0){var _0x9a0533=_0x35b663[_0x460dc4];var _0x399bc6=[];var _0x3aa919=[];delete _0x9a0533['id'];if(_0x9a0533[_0xe379('0x2d')]!==_0xe379('0x31')){_0x9a0533[_0xe379('0x32')]=[_0x9a0533[_0xe379('0x2d')]];}else{_0x9a0533[_0xe379('0x32')]=_0x9a0533[_0xe379('0x2e')]?_[_0xe379('0x33')](_[_0xe379('0x34')](_0x2b20e4,{'IntervalId':_0x9a0533[_0xe379('0x2e')]}),_0xe379('0x2d')):[];}_0x9a0533['context']=_0x43cf2e[_0xe379('0x4')];_0x9a0533[_0xe379('0x5')]=_0x43cf2e[_0xe379('0x5')];if(_0x9a0533[_0xe379('0x2')])_0x9a0533[_0xe379('0x2')]=_0x9a0533[_0xe379('0x2')]['toLowerCase']();if(_0x43cf2e['type']===_0xe379('0x10')){if(_0x9a0533['hasOwnProperty']('tag')&&_0x9a0533[_0xe379('0x35')]&&_0x9a0533[_0xe379('0x35')]!=='--'){_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x6'),'appdata':_0xe379('0x36')+_0x9a0533['tag'],'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533['intervals']['length']+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x37'),'appdata':_0xe379('0x38')+(_0x9a0533[_0xe379('0x39')]?_0xe379('0x3a')+_0x9a0533[_0xe379('0x39')]+')':'NoOp(No\x20number\x20available)'),'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e['exten'],'priority':_0x9a0533['intervals'][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}else{if(_0x9a0533[_0xe379('0x3b')](_0xe379('0x3c'))){if(['queue','playback'][_0xe379('0x3d')](_0x9a0533['app'][_0xe379('0x3e')]())&&_0x9a0533[_0xe379('0x3f')]!=='custom'){if(_0x9a0533['answer']){_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')][_0xe379('0x3e')](),'app':_0xe379('0x37'),'appdata':_0xe379('0x40'),'context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533['type'][_0xe379('0x3e')](),'app':_0xe379('0x6'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x43cf2e[_0xe379('0x4')],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}else{_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')]['toLowerCase'](),'app':_0xe379('0x37'),'appdata':_0xe379('0x41'),'context':_0x43cf2e['context'],'exten':_0x43cf2e['exten'],'priority':_0x9a0533['intervals'][_0xe379('0x30')]+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});_0x399bc6[_0xe379('0xb')]({'type':_0x9a0533[_0xe379('0x2')][_0xe379('0x3e')](),'app':'Set','appdata':_0xe379('0x42'),'context':_0x43cf2e['context'],'exten':_0x43cf2e[_0xe379('0x5')],'priority':_0x9a0533[_0xe379('0x32')]['length']+_0x35a5e8+_0x6182d1++,'VoiceExtensionId':_0x43cf2e['id']});}}}}for(var _0x480b39=0x0;_0x480b39<_0x9a0533['intervals'][_0xe379('0x30')];_0x480b39++){var _0x5390f7=_0x35a5e8+_0x9a0533[_0xe379('0x32')][_0xe379('0x30')];var _0x13acba=_0x480b39===_0x9a0533['intervals'][_0xe379('0x30')]-0x1?_0x35a5e8+_0x399bc6[_0xe379('0x30')]+_0x3aa919[_0xe379('0x30')]+0x2:_0x35a5e8+_0x480b39+0x1;_0x399bc6[_0xe379('0x43')](_0x480b39,0x0,{'type':_0x43cf2e[_0xe379('0x2')],'app':'GotoIfTime','appdata':_0x9a0533['intervals'][_0x480b39]+'?'+_0x43cf2e['context']+_0xe379('0x44')+_0x5390f7+':'+_0x43cf2e[_0xe379('0x4')]+_0xe379('0x44')+_0x13acba,'exten':_0x43cf2e[_0xe379('0x5')],'context':_0x43cf2e[_0xe379('0x4')],'priority':_0x35a5e8+_0x480b39,'VoiceExtensionId':_0x43cf2e['id']});}if(_0x9a0533[_0xe379('0x3f')]===_0xe379('0x45'))_0x9a0533[_0xe379('0x46')]=_0x2a3a99(_0x43cf2e,_0x9a0533[_0xe379('0x46')]);_0x9a0533['priority']=_0x399bc6[_0xe379('0x30')]?_[_0xe379('0x47')](_0x399bc6)['priority']+0x1:_0x35a5e8;_0x26d868=_[_0xe379('0x48')](_0x26d868,_0x399bc6,[_0x9a0533],_0x3aa919);_0x35a5e8=_[_0xe379('0x47')](_0x26d868)[_0xe379('0x49')]+0x1;}return _0x444fa9(_0x26d868);})[_0xe379('0x4a')](function(_0x569e4a){_0x5e0d55(_0x569e4a);});});}return _0x4bbe70[_0xe379('0x4b')](_0xe379('0x4c'),attributes,{'tableName':_0xe379('0x4d'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1ab78a){var _0x504971=this[_0xe379('0x4e')]({'plain':!![]});var _0x106924=_0x504971[_0xe379('0x2')]===_0xe379('0x10')?_0x2615bd(_0x504971):_0x1e24f9(_0x504971);return _0x1b8050(_0x504971,_0x1ab78a,_['last'](_0x106924)[_0xe379('0x49')]+0x1)['then'](function(_0x52e4cc){var _0x93978c=_[_0xe379('0x48')](_0x106924,_0x52e4cc);_0x93978c[_0xe379('0xb')]({'type':_0x504971[_0xe379('0x2')],'app':_0xe379('0x4f'),'exten':_0x504971[_0xe379('0x5')],'context':_0x504971[_0xe379('0x4')],'priority':_['last'](_0x93978c)[_0xe379('0x49')]+0x1,'VoiceExtensionId':_0x504971['id']});return _0x93978c;});}}});};
\ No newline at end of file
+var _0xec82=['recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','length','name','split','phone','prefix','${EXTEN:','${EXTEN}','param','SIP','options','U(xcally-mixmonitor-context)','replace','join','isEmpty','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','type','Set','CDR(type)=','context','exten','CDR(routeAlias)=','alias','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-PROGRESS=0','outboundrouteid='];(function(_0x38c4ea,_0x2566c0){var _0x5e6181=function(_0x23a84f){while(--_0x23a84f){_0x38c4ea['push'](_0x38c4ea['shift']());}};_0x5e6181(++_0x2566c0);}(_0xec82,0x83));var _0x2ec8=function(_0x2e2c09,_0x1fc0fc){_0x2e2c09=_0x2e2c09-0x0;var _0x1a03e7=_0xec82[_0x2e2c09];return _0x1a03e7;};'use strict';var _=require(_0x2ec8('0x0'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x17b33f){var _0x8ac598=_0x17b33f['models'];function _0xc9144c(_0x2e64ef){var _0x2e10d7=0x2;var _0x22aa5b=[{'type':_0x2e64ef[_0x2ec8('0x1')],'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x3')+_0x2e64ef[_0x2ec8('0x1')],'context':_0x2e64ef[_0x2ec8('0x4')],'exten':_0x2e64ef[_0x2ec8('0x5')],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']},{'type':_0x2e64ef[_0x2ec8('0x1')],'app':_0x2e64ef['alias']?_0x2ec8('0x2'):'NoOp','appdata':_0x2e64ef['alias']?_0x2ec8('0x6')+_0x2e64ef[_0x2ec8('0x7')]:'No\x20alias\x20set','context':_0x2e64ef['context'],'exten':_0x2e64ef[_0x2ec8('0x5')],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']}];if(_0x2e64ef[_0x2ec8('0x1')]===_0x2ec8('0x8')){_0x22aa5b[_0x2ec8('0x9')]({'type':_0x2ec8('0x8'),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0xa')+_0x2e64ef['id'],'context':_0x2e64ef['context'],'exten':_0x2e64ef[_0x2ec8('0x5')],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']});}_0x22aa5b[_0x2ec8('0x9')]({'type':_0x2e64ef['type'],'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0xb'),'context':_0x2e64ef[_0x2ec8('0x4')],'exten':_0x2e64ef[_0x2ec8('0x5')],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']},{'type':_0x2e64ef[_0x2ec8('0x1')],'app':_0x2ec8('0x2'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x2e64ef[_0x2ec8('0x4')],'exten':_0x2e64ef['exten'],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']},{'type':_0x2e64ef[_0x2ec8('0x1')],'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0xc'),'context':_0x2e64ef[_0x2ec8('0x4')],'exten':_0x2e64ef['exten'],'priority':_0x2e10d7++,'VoiceExtensionId':_0x2e64ef['id']});return _0x22aa5b;}function _0x3a33f4(_0x236f25){var _0x2a5bc1=0x2;var _0x5586c9=[{'type':'outbound','app':_0x2ec8('0x2'),'appdata':'CDR(type)=outbound','context':_0x236f25['context'],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':_0x236f25[_0x2ec8('0x7')]?_0x2ec8('0x2'):'NoOp','appdata':_0x236f25[_0x2ec8('0x7')]?_0x2ec8('0x6')+_0x236f25['alias']:'No\x20alias\x20set','context':_0x236f25['context'],'exten':_0x236f25['exten'],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':'Set','appdata':'CDR(destination)='+(_0x236f25[_0x2ec8('0xe')]?'${EXTEN:'+_0x236f25[_0x2ec8('0xe')]+'}':'${EXTEN}'),'context':_0x236f25['context'],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':'Set','appdata':'CDR(routeid)='+_0x236f25['id'],'context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':'outbound','app':_0x2ec8('0xf'),'appdata':_0x2ec8('0x10')+(_0x2a5bc1+0x2)+_0x2ec8('0x11')+(_0x2a5bc1+0x1)+')','context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':'outbound','app':_0x2ec8('0x2'),'appdata':_0x236f25[_0x2ec8('0xe')]?_0x2ec8('0x12')+_0x236f25[_0x2ec8('0xe')]+'}':'CDR(prefix)=noprefix','context':_0x236f25['context'],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':'outbound','app':_0x2ec8('0x2'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':'outbound','app':'Set','appdata':_0x2ec8('0x13'),'context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25['exten'],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0xc'),'context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':'Set','appdata':_0x2ec8('0x14')+_0x236f25['id'],'context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']}];if(_0x236f25['hasOwnProperty'](_0x2ec8('0x15'))&&_0x236f25[_0x2ec8('0x15')]!==_0x2ec8('0x16')){_0x5586c9['push']({'type':_0x2ec8('0xd'),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x17'),'context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']},{'type':_0x2ec8('0xd'),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x18')+_0x236f25['recordingFormat']||'wav','context':_0x236f25[_0x2ec8('0x4')],'exten':_0x236f25[_0x2ec8('0x5')],'priority':_0x2a5bc1++,'VoiceExtensionId':_0x236f25['id']});}return _0x5586c9;}function _0x1d85af(_0x3213c4,_0x26f41d){var _0x181df7=[{'name':_0x2ec8('0x19'),'param':0x0},{'name':'timeout','param':0x1},{'name':'options','param':0x2},{'name':'url','param':0x3}];var _0x37bca0={};var _0x288bfc=_0x26f41d['split'](',');var _0x5706a6=[];for(var _0x2d6f6c=0x0;_0x2d6f6c<_0x181df7[_0x2ec8('0x1a')];_0x2d6f6c++){switch(_0x181df7[_0x2d6f6c][_0x2ec8('0x1b')]){case'trunk':_0x37bca0[_0x2ec8('0x19')]=_0x288bfc[_0x181df7[_0x2d6f6c]['param']][_0x2ec8('0x1c')]('/')[0x1];_0x37bca0[_0x2ec8('0x1d')]=_0x288bfc[_0x181df7[_0x2d6f6c]['param']][_0x2ec8('0x1c')]('/')[0x2];_0x37bca0[_0x2ec8('0x1e')]=_0x37bca0[_0x2ec8('0x1d')]?_0x37bca0[_0x2ec8('0x1d')][_0x2ec8('0x1c')]('$')[0x0]:undefined;_0x37bca0[_0x2ec8('0x1d')]=_0x3213c4[_0x2ec8('0xe')]?(_0x37bca0['prefix']||'')+_0x2ec8('0x1f')+_0x3213c4['cutdigits']+'}':(_0x37bca0[_0x2ec8('0x1e')]||'')+_0x2ec8('0x20');_0x5706a6[_0x181df7[_0x2d6f6c][_0x2ec8('0x21')]]=[_0x2ec8('0x22'),_0x37bca0['trunk'],_0x37bca0[_0x2ec8('0x1d')]]['join']('/');break;case _0x2ec8('0x23'):_0x37bca0[_0x2ec8('0x23')]=_0x288bfc[_0x181df7[_0x2d6f6c][_0x2ec8('0x21')]];if(_0x3213c4['recordingFormat']!=='none'){if(_0x37bca0[_0x2ec8('0x23')]['indexOf'](_0x2ec8('0x24'))<0x0){_0x37bca0[_0x2ec8('0x23')]+='U(xcally-mixmonitor-context)';}}else{_0x37bca0[_0x2ec8('0x23')]=_0x37bca0[_0x2ec8('0x23')][_0x2ec8('0x25')]('U(xcally-mixmonitor-context)','');}_0x5706a6[_0x181df7[_0x2d6f6c][_0x2ec8('0x21')]]=_0x37bca0['options'];break;default:_0x5706a6[_0x181df7[_0x2d6f6c][_0x2ec8('0x21')]]=_0x288bfc[_0x181df7[_0x2d6f6c][_0x2ec8('0x21')]];}}return _0x5706a6[_0x2ec8('0x26')](',');}function _0x5aec9a(_0x547d88,_0x153227,_0x1a35a2){return new Promise(function(_0x1d3b72,_0xbe5f3b){var _0x437745=[];if(_[_0x2ec8('0x27')](_0x153227))return _0x1d3b72(_0x437745);_0x8ac598['Interval'][_0x2ec8('0x28')]({'attributes':['id',_0x2ec8('0x29'),_0x2ec8('0x2a')],'raw':!![]})[_0x2ec8('0x2b')](function(_0x2b4d8a){for(var _0x12731f=0x0,_0x1c7fd2=0x0;_0x12731f<_0x153227[_0x2ec8('0x1a')];_0x12731f++,_0x1c7fd2=0x0){var _0x1660b1=_0x153227[_0x12731f];var _0x40182a=[];var _0x628734=[];delete _0x1660b1['id'];if(_0x1660b1[_0x2ec8('0x29')]!==_0x2ec8('0x2c')){_0x1660b1[_0x2ec8('0x2d')]=[_0x1660b1['interval']];}else{_0x1660b1[_0x2ec8('0x2d')]=_0x1660b1[_0x2ec8('0x2a')]?_[_0x2ec8('0x2e')](_[_0x2ec8('0x2f')](_0x2b4d8a,{'IntervalId':_0x1660b1[_0x2ec8('0x2a')]}),_0x2ec8('0x29')):[];}_0x1660b1[_0x2ec8('0x4')]=_0x547d88[_0x2ec8('0x4')];_0x1660b1[_0x2ec8('0x5')]=_0x547d88['exten'];if(_0x1660b1[_0x2ec8('0x1')])_0x1660b1['type']=_0x1660b1[_0x2ec8('0x1')][_0x2ec8('0x30')]();if(_0x547d88[_0x2ec8('0x1')]===_0x2ec8('0xd')){if(_0x1660b1['hasOwnProperty'](_0x2ec8('0x31'))&&_0x1660b1[_0x2ec8('0x31')]&&_0x1660b1[_0x2ec8('0x31')]!=='--'){_0x40182a[_0x2ec8('0x9')]({'type':_0x1660b1['type'][_0x2ec8('0x30')](),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x32')+_0x1660b1[_0x2ec8('0x31')],'context':_0x547d88[_0x2ec8('0x4')],'exten':_0x547d88[_0x2ec8('0x5')],'priority':_0x1660b1['intervals']['length']+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});}_0x40182a[_0x2ec8('0x9')]({'type':_0x1660b1[_0x2ec8('0x1')][_0x2ec8('0x30')](),'app':_0x2ec8('0xf'),'appdata':_0x2ec8('0x33')+(_0x1660b1['callerID']?'Set(CALLERID(all)='+_0x1660b1[_0x2ec8('0x34')]+')':_0x2ec8('0x35')),'context':_0x547d88['context'],'exten':_0x547d88['exten'],'priority':_0x1660b1['intervals'][_0x2ec8('0x1a')]+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});}else{if(_0x1660b1['hasOwnProperty'](_0x2ec8('0x36'))){if([_0x2ec8('0x37'),_0x2ec8('0x38')]['includes'](_0x1660b1[_0x2ec8('0x39')][_0x2ec8('0x30')]())&&_0x1660b1[_0x2ec8('0x3a')]!==_0x2ec8('0x3b')){if(_0x1660b1['answer']){_0x40182a[_0x2ec8('0x9')]({'type':_0x1660b1[_0x2ec8('0x1')][_0x2ec8('0x30')](),'app':'ExecIf','appdata':_0x2ec8('0x3c'),'context':_0x547d88['context'],'exten':_0x547d88[_0x2ec8('0x5')],'priority':_0x1660b1[_0x2ec8('0x2d')]['length']+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});_0x40182a['push']({'type':_0x1660b1[_0x2ec8('0x1')]['toLowerCase'](),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x3d'),'context':_0x547d88[_0x2ec8('0x4')],'exten':_0x547d88[_0x2ec8('0x5')],'priority':_0x1660b1[_0x2ec8('0x2d')]['length']+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});}else{_0x40182a[_0x2ec8('0x9')]({'type':_0x1660b1['type'][_0x2ec8('0x30')](),'app':_0x2ec8('0xf'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x547d88[_0x2ec8('0x4')],'exten':_0x547d88[_0x2ec8('0x5')],'priority':_0x1660b1[_0x2ec8('0x2d')][_0x2ec8('0x1a')]+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});_0x40182a[_0x2ec8('0x9')]({'type':_0x1660b1[_0x2ec8('0x1')][_0x2ec8('0x30')](),'app':_0x2ec8('0x2'),'appdata':_0x2ec8('0x3e'),'context':_0x547d88[_0x2ec8('0x4')],'exten':_0x547d88[_0x2ec8('0x5')],'priority':_0x1660b1[_0x2ec8('0x2d')][_0x2ec8('0x1a')]+_0x1a35a2+_0x1c7fd2++,'VoiceExtensionId':_0x547d88['id']});}}}}for(var _0x54090e=0x0;_0x54090e<_0x1660b1['intervals'][_0x2ec8('0x1a')];_0x54090e++){var _0x4fa91c=_0x1a35a2+_0x1660b1[_0x2ec8('0x2d')][_0x2ec8('0x1a')];var _0x5c8fa3=_0x54090e===_0x1660b1['intervals']['length']-0x1?_0x1a35a2+_0x40182a['length']+_0x628734['length']+0x2:_0x1a35a2+_0x54090e+0x1;_0x40182a[_0x2ec8('0x3f')](_0x54090e,0x0,{'type':_0x547d88['type'],'app':'GotoIfTime','appdata':_0x1660b1['intervals'][_0x54090e]+'?'+_0x547d88[_0x2ec8('0x4')]+',${EXTEN},'+_0x4fa91c+':'+_0x547d88[_0x2ec8('0x4')]+_0x2ec8('0x40')+_0x5c8fa3,'exten':_0x547d88[_0x2ec8('0x5')],'context':_0x547d88['context'],'priority':_0x1a35a2+_0x54090e,'VoiceExtensionId':_0x547d88['id']});}if(_0x1660b1['appType']===_0x2ec8('0x41'))_0x1660b1[_0x2ec8('0x42')]=_0x1d85af(_0x547d88,_0x1660b1[_0x2ec8('0x42')]);_0x1660b1[_0x2ec8('0x43')]=_0x40182a['length']?_[_0x2ec8('0x44')](_0x40182a)[_0x2ec8('0x43')]+0x1:_0x1a35a2;_0x437745=_[_0x2ec8('0x45')](_0x437745,_0x40182a,[_0x1660b1],_0x628734);_0x1a35a2=_[_0x2ec8('0x44')](_0x437745)[_0x2ec8('0x43')]+0x1;}return _0x1d3b72(_0x437745);})[_0x2ec8('0x46')](function(_0x429cf3){_0xbe5f3b(_0x429cf3);});});}return _0x17b33f[_0x2ec8('0x47')](_0x2ec8('0x48'),attributes,{'tableName':_0x2ec8('0x49'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x55a946){var _0x5af4ab=this[_0x2ec8('0x4a')]({'plain':!![]});var _0x3c20cd=_0x5af4ab[_0x2ec8('0x1')]===_0x2ec8('0xd')?_0x3a33f4(_0x5af4ab):_0xc9144c(_0x5af4ab);return _0x5aec9a(_0x5af4ab,_0x55a946,_[_0x2ec8('0x44')](_0x3c20cd)['priority']+0x1)[_0x2ec8('0x2b')](function(_0xf508d){var _0x2886ae=_['concat'](_0x3c20cd,_0xf508d);_0x2886ae[_0x2ec8('0x9')]({'type':_0x5af4ab[_0x2ec8('0x1')],'app':_0x2ec8('0x4b'),'exten':_0x5af4ab[_0x2ec8('0x5')],'context':_0x5af4ab['context'],'priority':_[_0x2ec8('0x44')](_0x2886ae)[_0x2ec8('0x43')]+0x1,'VoiceExtensionId':_0x5af4ab['id']});return _0x2886ae;});}}});};
\ No newline at end of file
index 7488b2a..9b4fcc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1561=['debug','GetVoiceExtension','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','register','request','VoiceExtension,\x20%s,\x20%s','request\x20sent','error','message','info','result','VoiceExtension','findAll','options','where','limit','include','model','attributes','map'];(function(_0xaca81c,_0x2df861){var _0x3b0001=function(_0x3be21d){while(--_0x3be21d){_0xaca81c['push'](_0xaca81c['shift']());}};_0x3b0001(++_0x2df861);}(_0x1561,0x1bd));var _0x1156=function(_0x2b0fd0,_0xd01a2f){_0x2b0fd0=_0x2b0fd0-0x0;var _0x19b33c=_0x1561[_0x2b0fd0];return _0x19b33c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1156('0x0'));var BPromise=require(_0x1156('0x1'));var rs=require(_0x1156('0x2'));var fs=require('fs');var Redis=require(_0x1156('0x3'));var db=require(_0x1156('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1156('0x5'))(_0x1156('0x6'));var config=require(_0x1156('0x7'));var jayson=require(_0x1156('0x8'));var client=jayson['client'][_0x1156('0x9')]({'port':0x232a});config['redis']=_[_0x1156('0xa')](config[_0x1156('0xb')],{'host':_0x1156('0xc'),'port':0x18eb});var socket=require(_0x1156('0xd'))(new Redis(config[_0x1156('0xb')]));require('./voiceExtension.socket')[_0x1156('0xe')](socket);function respondWithRpcPromise(_0x4ca332,_0x49b380,_0x30ab38){return new BPromise(function(_0x44f351,_0x55bb5f){return client[_0x1156('0xf')](_0x4ca332,_0x30ab38)['then'](function(_0x340673){logger['info'](_0x1156('0x10'),_0x49b380,_0x1156('0x11'));logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x49b380,_0x1156('0x11'),JSON['stringify'](_0x340673));if(_0x340673[_0x1156('0x12')]){if(_0x340673[_0x1156('0x12')]['code']===0x1f4){logger['error'](_0x1156('0x10'),_0x49b380,_0x340673[_0x1156('0x12')][_0x1156('0x13')]);return _0x55bb5f(_0x340673['error']['message']);}logger[_0x1156('0x12')](_0x1156('0x10'),_0x49b380,_0x340673[_0x1156('0x12')][_0x1156('0x13')]);return _0x44f351(_0x340673[_0x1156('0x12')][_0x1156('0x13')]);}else{logger[_0x1156('0x14')](_0x1156('0x10'),_0x49b380,_0x1156('0x11'));_0x44f351(_0x340673[_0x1156('0x15')][_0x1156('0x13')]);}})['catch'](function(_0x18bc91){logger[_0x1156('0x12')](_0x1156('0x10'),_0x49b380,_0x18bc91);_0x55bb5f(_0x18bc91);});});}exports['GetVoiceExtension']=function(_0x30353b){var _0x340fae=this;return new Promise(function(_0x33f611,_0x1cc21f){return db[_0x1156('0x16')][_0x1156('0x17')]({'raw':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x30353b[_0x1156('0x18')]?_0x30353b['options'][_0x1156('0x19')]||null:null,'attributes':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')]['attributes']||null:null,'limit':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')][_0x1156('0x1a')]||null:null,'include':_0x30353b[_0x1156('0x18')]?_0x30353b[_0x1156('0x18')][_0x1156('0x1b')]?_['map'](_0x30353b[_0x1156('0x18')][_0x1156('0x1b')],function(_0x204acc){return{'model':db[_0x204acc[_0x1156('0x1c')]],'as':_0x204acc['as'],'attributes':_0x204acc[_0x1156('0x1d')],'include':_0x204acc[_0x1156('0x1b')]?_[_0x1156('0x1e')](_0x204acc[_0x1156('0x1b')],function(_0x195aef){return{'model':db[_0x195aef[_0x1156('0x1c')]],'as':_0x195aef['as'],'attributes':_0x195aef[_0x1156('0x1d')],'include':_0x195aef[_0x1156('0x1b')]?_[_0x1156('0x1e')](_0x195aef[_0x1156('0x1b')],function(_0x4f5c32){return{'model':db[_0x4f5c32[_0x1156('0x1c')]],'as':_0x4f5c32['as'],'attributes':_0x4f5c32[_0x1156('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xef8892){logger[_0x1156('0x14')]('GetVoiceExtension',_0x30353b);logger[_0x1156('0x1f')](_0x1156('0x20'),_0x30353b,JSON['stringify'](_0xef8892));_0x33f611(_0xef8892);})[_0x1156('0x21')](function(_0x265406){logger['error'](_0x1156('0x20'),_0x265406[_0x1156('0x13')],_0x30353b);_0x1cc21f(_0x340fae['error'](0x1f4,_0x265406[_0x1156('0x13')]));});});};
\ No newline at end of file
+var _0xf2ca=['result','GetVoiceExtension','VoiceExtension','findAll','options','where','attributes','limit','include','map','model','then','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','register','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x3efdcf,_0x337833){var _0x439d0d=function(_0x471803){while(--_0x471803){_0x3efdcf['push'](_0x3efdcf['shift']());}};_0x439d0d(++_0x337833);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x416468,_0x2e7a72){_0x416468=_0x416468-0x0;var _0x2ee9b7=_0xf2ca[_0x416468];return _0x2ee9b7;};'use strict';var _=require(_0xaf2c('0x0'));var util=require(_0xaf2c('0x1'));var moment=require(_0xaf2c('0x2'));var BPromise=require('bluebird');var rs=require(_0xaf2c('0x3'));var fs=require('fs');var Redis=require(_0xaf2c('0x4'));var db=require(_0xaf2c('0x5'))['db'];var utils=require(_0xaf2c('0x6'));var logger=require(_0xaf2c('0x7'))(_0xaf2c('0x8'));var config=require('../../config/environment');var jayson=require(_0xaf2c('0x9'));var client=jayson[_0xaf2c('0xa')][_0xaf2c('0xb')]({'port':0x232a});config[_0xaf2c('0xc')]=_['defaults'](config[_0xaf2c('0xc')],{'host':_0xaf2c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf2c('0xc')]));require('./voiceExtension.socket')[_0xaf2c('0xe')](socket);function respondWithRpcPromise(_0x4a0064,_0x2f5099,_0x144a7a){return new BPromise(function(_0x2e04e5,_0xd891e9){return client['request'](_0x4a0064,_0x144a7a)['then'](function(_0x2c0d88){logger[_0xaf2c('0xf')](_0xaf2c('0x10'),_0x2f5099,_0xaf2c('0x11'));logger[_0xaf2c('0x12')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x2f5099,'request\x20sent',JSON[_0xaf2c('0x13')](_0x2c0d88));if(_0x2c0d88[_0xaf2c('0x14')]){if(_0x2c0d88[_0xaf2c('0x14')][_0xaf2c('0x15')]===0x1f4){logger[_0xaf2c('0x14')](_0xaf2c('0x10'),_0x2f5099,_0x2c0d88[_0xaf2c('0x14')][_0xaf2c('0x16')]);return _0xd891e9(_0x2c0d88[_0xaf2c('0x14')][_0xaf2c('0x16')]);}logger[_0xaf2c('0x14')](_0xaf2c('0x10'),_0x2f5099,_0x2c0d88[_0xaf2c('0x14')][_0xaf2c('0x16')]);return _0x2e04e5(_0x2c0d88[_0xaf2c('0x14')]['message']);}else{logger[_0xaf2c('0xf')]('VoiceExtension,\x20%s,\x20%s',_0x2f5099,_0xaf2c('0x11'));_0x2e04e5(_0x2c0d88[_0xaf2c('0x17')][_0xaf2c('0x16')]);}})['catch'](function(_0x28ae7b){logger[_0xaf2c('0x14')](_0xaf2c('0x10'),_0x2f5099,_0x28ae7b);_0xd891e9(_0x28ae7b);});});}exports[_0xaf2c('0x18')]=function(_0x3f977c){var _0x1b7f07=this;return new Promise(function(_0x531609,_0x35e712){return db[_0xaf2c('0x19')][_0xaf2c('0x1a')]({'raw':_0x3f977c[_0xaf2c('0x1b')]?_0x3f977c[_0xaf2c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3f977c[_0xaf2c('0x1b')]?_0x3f977c[_0xaf2c('0x1b')][_0xaf2c('0x1c')]||null:null,'attributes':_0x3f977c['options']?_0x3f977c['options'][_0xaf2c('0x1d')]||null:null,'limit':_0x3f977c[_0xaf2c('0x1b')]?_0x3f977c[_0xaf2c('0x1b')][_0xaf2c('0x1e')]||null:null,'include':_0x3f977c['options']?_0x3f977c[_0xaf2c('0x1b')][_0xaf2c('0x1f')]?_[_0xaf2c('0x20')](_0x3f977c[_0xaf2c('0x1b')][_0xaf2c('0x1f')],function(_0xff396f){return{'model':db[_0xff396f[_0xaf2c('0x21')]],'as':_0xff396f['as'],'attributes':_0xff396f['attributes'],'include':_0xff396f[_0xaf2c('0x1f')]?_[_0xaf2c('0x20')](_0xff396f[_0xaf2c('0x1f')],function(_0x410536){return{'model':db[_0x410536['model']],'as':_0x410536['as'],'attributes':_0x410536[_0xaf2c('0x1d')],'include':_0x410536['include']?_[_0xaf2c('0x20')](_0x410536[_0xaf2c('0x1f')],function(_0x15466b){return{'model':db[_0x15466b['model']],'as':_0x15466b['as'],'attributes':_0x15466b[_0xaf2c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xaf2c('0x22')](function(_0x3baee2){logger['info'](_0xaf2c('0x18'),_0x3f977c);logger[_0xaf2c('0x12')](_0xaf2c('0x18'),_0x3f977c,JSON[_0xaf2c('0x13')](_0x3baee2));_0x531609(_0x3baee2);})['catch'](function(_0x3da072){logger[_0xaf2c('0x14')](_0xaf2c('0x18'),_0x3da072['message'],_0x3f977c);_0x35e712(_0x1b7f07['error'](0x1f4,_0x3da072[_0xaf2c('0x16')]));});});};
\ No newline at end of file
index 3102f10..e3d1ddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x3461d0,_0x43091e){var _0x138789=function(_0x3335f4){while(--_0x3335f4){_0x3461d0['push'](_0x3461d0['shift']());}};_0x138789(++_0x43091e);}(_0xe14b,0x93));var _0xbe14=function(_0x23a4ff,_0x58045e){_0x23a4ff=_0x23a4ff-0x0;var _0x233eae=_0xe14b[_0x23a4ff];return _0x233eae;};'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
+var _0xc4aa=['remove','update','removeListener','register','length','./voiceExtension.events','save'];(function(_0x42caf7,_0x4b9fa4){var _0x412368=function(_0x5dd547){while(--_0x5dd547){_0x42caf7['push'](_0x42caf7['shift']());}};_0x412368(++_0x4b9fa4);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xc4aa[_0x2235bf];return _0x4c3a64;};'use strict';var VoiceExtensionEvents=require(_0xac4a('0x0'));var events=[_0xac4a('0x1'),_0xac4a('0x2'),_0xac4a('0x3')];function createListener(_0x275161,_0x22469d){return function(_0x58634e){_0x22469d['emit'](_0x275161,_0x58634e);};}function removeListener(_0x47d4f6,_0x2f48ed){return function(){VoiceExtensionEvents[_0xac4a('0x4')](_0x47d4f6,_0x2f48ed);};}exports[_0xac4a('0x5')]=function(_0x215f39){for(var _0x96be2b=0x0,_0x15cd34=events[_0xac4a('0x6')];_0x96be2b<_0x15cd34;_0x96be2b++){var _0x10525b=events[_0x96be2b];var _0x5c6179=createListener('voiceExtension:'+_0x10525b,_0x215f39);VoiceExtensionEvents['on'](_0x10525b,_0x5c6179);}};
\ No newline at end of file
index 641e574..486a97b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2dbbe2,_0x11424b){var _0x2e3147=function(_0x1912c0){while(--_0x1912c0){_0x2dbbe2['push'](_0x2dbbe2['shift']());}};_0x2e3147(++_0x11424b);}(_0xd117,0x182));var _0x7d11=function(_0x5c768b,_0x5e88a6){_0x5c768b=_0x5c768b-0x0;var _0x335af8=_0xd117[_0x5c768b];return _0x335af8;};'use strict';var multer=require(_0x7d11('0x0'));var util=require(_0x7d11('0x1'));var path=require(_0x7d11('0x2'));var timeout=require(_0x7d11('0x3'));var express=require(_0x7d11('0x4'));var router=express[_0x7d11('0x5')]();var fs_extra=require(_0x7d11('0x6'));var auth=require(_0x7d11('0x7'));var interaction=require(_0x7d11('0x8'));var config=require(_0x7d11('0x9'));var controller=require(_0x7d11('0xa'));router[_0x7d11('0xb')]('/',auth[_0x7d11('0xc')](),controller[_0x7d11('0xd')]);router[_0x7d11('0xb')](_0x7d11('0xe'),auth['isAuthenticated'](),controller[_0x7d11('0xf')]);router[_0x7d11('0xb')](_0x7d11('0x10'),auth['isAuthenticated'](),controller[_0x7d11('0x11')]);router[_0x7d11('0x12')]('/',auth[_0x7d11('0xc')](),controller['create']);router[_0x7d11('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x7d11('0x14')]);router['delete']('/:id',auth[_0x7d11('0xc')](),controller['destroy']);module[_0x7d11('0x15')]=router;
\ No newline at end of file
+var _0x2da6=['fs-extra','../../components/auth/service','./voiceMail.controller','get','isAuthenticated','index','/:id','show','getMessages','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x42af2f,_0x512995){var _0x2cbf95=function(_0xb20869){while(--_0xb20869){_0x42af2f['push'](_0x42af2f['shift']());}};_0x2cbf95(++_0x512995);}(_0x2da6,0x1dd));var _0x62da=function(_0x3cd643,_0x57f683){_0x3cd643=_0x3cd643-0x0;var _0x208772=_0x2da6[_0x3cd643];return _0x208772;};'use strict';var multer=require(_0x62da('0x0'));var util=require(_0x62da('0x1'));var path=require(_0x62da('0x2'));var timeout=require(_0x62da('0x3'));var express=require(_0x62da('0x4'));var router=express[_0x62da('0x5')]();var fs_extra=require(_0x62da('0x6'));var auth=require(_0x62da('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x62da('0x8'));router[_0x62da('0x9')]('/',auth[_0x62da('0xa')](),controller[_0x62da('0xb')]);router[_0x62da('0x9')](_0x62da('0xc'),auth[_0x62da('0xa')](),controller[_0x62da('0xd')]);router[_0x62da('0x9')]('/:id/messages',auth[_0x62da('0xa')](),controller[_0x62da('0xe')]);router[_0x62da('0xf')]('/',auth[_0x62da('0xa')](),controller['create']);router[_0x62da('0x10')](_0x62da('0xc'),auth[_0x62da('0xa')](),controller[_0x62da('0x11')]);router[_0x62da('0x12')]('/:id',auth[_0x62da('0xa')](),controller[_0x62da('0x13')]);module[_0x62da('0x14')]=router;
\ No newline at end of file
index 2a2a576..596e8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x918e=['email','string','trim','yes','ENUM','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue'];(function(_0x4819e9,_0x4bcdd7){var _0x2a95be=function(_0x22c52f){while(--_0x22c52f){_0x4819e9['push'](_0x4819e9['shift']());}};_0x2a95be(++_0x4bcdd7);}(_0x918e,0x12c));var _0xe918=function(_0xfa9b97,_0x24a570){_0xfa9b97=_0xfa9b97-0x0;var _0x48cc61=_0x918e[_0xfa9b97];return _0x48cc61;};'use strict';var Sequelize=require(_0xe918('0x0'));module[_0xe918('0x1')]={'customer_id':{'type':Sequelize[_0xe918('0x2')]},'context':{'type':Sequelize[_0xe918('0x2')],'defaultValue':_0xe918('0x3'),'unique':_0xe918('0x4')},'mailbox':{'type':Sequelize[_0xe918('0x2')],'defaultValue':'','allowNull':![],'unique':_0xe918('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xe918('0x2')]},'email':{'type':Sequelize[_0xe918('0x2')],'validate':{'isEmail':!![]},'set':function(_0x551d3e){this[_0xe918('0x5')](_0xe918('0x6'),typeof _0x551d3e===_0xe918('0x7')&&_0x551d3e[_0xe918('0x8')]()?_0x551d3e['trim']():null);}},'pager':{'type':Sequelize[_0xe918('0x2')]},'tz':{'type':Sequelize[_0xe918('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':_0xe918('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0xe918('0x2')]},'review':{'type':Sequelize[_0xe918('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xe918('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':_0xe918('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xe918('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xe918('0xa')](_0xe918('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0xe918('0xb')},'emailsubject':{'type':Sequelize[_0xe918('0x2')]},'emailbody':{'type':Sequelize[_0xe918('0x2')]},'maxsecs':{'type':Sequelize[_0xe918('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xe918('0xd')],'get':function(){return this[_0xe918('0xe')](_0xe918('0xf'))+'\x20-\x20'+this[_0xe918('0xe')](_0xe918('0x10'));}}};
\ No newline at end of file
+var _0x591e=['STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','mailbox','sequelize'];(function(_0x5d8cb7,_0x2851f7){var _0xece05d=function(_0x33f59e){while(--_0x33f59e){_0x5d8cb7['push'](_0x5d8cb7['shift']());}};_0xece05d(++_0x2851f7);}(_0x591e,0xe0));var _0xe591=function(_0x118501,_0x528c11){_0x118501=_0x118501-0x0;var _0x34b6e4=_0x591e[_0x118501];return _0x34b6e4;};'use strict';var Sequelize=require(_0xe591('0x0'));module['exports']={'customer_id':{'type':Sequelize[_0xe591('0x1')]},'context':{'type':Sequelize[_0xe591('0x1')],'defaultValue':_0xe591('0x2'),'unique':_0xe591('0x3')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xe591('0x1')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xe591('0x1')],'validate':{'isEmail':!![]},'set':function(_0x2332f3){this[_0xe591('0x4')](_0xe591('0x5'),typeof _0x2332f3===_0xe591('0x6')&&_0x2332f3[_0xe591('0x7')]()?_0x2332f3[_0xe591('0x7')]():null);}},'pager':{'type':Sequelize[_0xe591('0x1')]},'tz':{'type':Sequelize[_0xe591('0x1')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':_0xe591('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':_0xe591('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xe591('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xe591('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xe591('0x8')](_0xe591('0x9'),'no'),'defaultValue':_0xe591('0x9'),'allowNull':![]},'stamp':{'type':_0xe591('0xa')},'emailsubject':{'type':Sequelize[_0xe591('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xe591('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xe591('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xe591('0xc')],'get':function(){return this[_0xe591('0xd')]('fullname')+'\x20-\x20'+this[_0xe591('0xd')](_0xe591('0xe'));}}};
\ No newline at end of file
index a971b5e..5e1c9b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','name','send','VoiceMail','fieldName','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','map','type','VIRTUAL','options','findAll','rows','catch','show','params','intersection','includeAll','include','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','rawAttributes','sort','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','to-csv','ejs','fs-extra','crypto','jsforce'];(function(_0xf6763d,_0x1ee231){var _0x212ae2=function(_0x211ed2){while(--_0x211ed2){_0xf6763d['push'](_0xf6763d['shift']());}};_0x212ae2(++_0x1ee231);}(_0x76dc,0x1f2));var _0xc76d=function(_0xc4530e,_0x34936d){_0xc4530e=_0xc4530e-0x0;var _0x453131=_0x76dc[_0xc4530e];return _0x453131;};'use strict';var emlformat=require(_0xc76d('0x0'));var rimraf=require(_0xc76d('0x1'));var zipdir=require(_0xc76d('0x2'));var jsonpatch=require(_0xc76d('0x3'));var rp=require('request-promise');var moment=require(_0xc76d('0x4'));var BPromise=require(_0xc76d('0x5'));var Mustache=require('mustache');var util=require(_0xc76d('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc76d('0x7'));var ejs=require(_0xc76d('0x8'));var fs=require('fs');var fs_extra=require(_0xc76d('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc76d('0xa'));var jsforce=require(_0xc76d('0xb'));var deskjs=require(_0xc76d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc76d('0xd'));var Redis=require(_0xc76d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc76d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc76d('0x10'));var logger=require(_0xc76d('0x11'))(_0xc76d('0x12'));var utils=require(_0xc76d('0x13'));var config=require(_0xc76d('0x14'));var licenseUtil=require(_0xc76d('0x15'));var db=require(_0xc76d('0x16'))['db'];function respondWithStatusCode(_0x2e02e9,_0x1722b3){_0x1722b3=_0x1722b3||0xcc;return function(_0x311814){if(_0x311814){return _0x2e02e9[_0xc76d('0x17')](_0x1722b3);}return _0x2e02e9[_0xc76d('0x18')](_0x1722b3)[_0xc76d('0x19')]();};}function respondWithResult(_0x3ed1bd,_0x5cda20){_0x5cda20=_0x5cda20||0xc8;return function(_0x8696db){if(_0x8696db){return _0x3ed1bd[_0xc76d('0x18')](_0x5cda20)['json'](_0x8696db);}};}function respondWithFilteredResult(_0x4741a4,_0x2d23d2){return function(_0x47a4ee){if(_0x47a4ee){var _0x6f94e=typeof _0x2d23d2['offset']===_0xc76d('0x1a')&&typeof _0x2d23d2['limit']==='undefined';var _0x45a83e=_0x47a4ee[_0xc76d('0x1b')];var _0x339623=_0x6f94e?0x0:_0x2d23d2[_0xc76d('0x1c')];var _0xd1d16f=_0x6f94e?_0x47a4ee['count']:_0x2d23d2[_0xc76d('0x1c')]+_0x2d23d2[_0xc76d('0x1d')];var _0xa0c5b6;if(_0xd1d16f>=_0x45a83e){_0xd1d16f=_0x45a83e;_0xa0c5b6=0xc8;}else{_0xa0c5b6=0xce;}_0x4741a4[_0xc76d('0x18')](_0xa0c5b6);return _0x4741a4[_0xc76d('0x1e')]('Content-Range',_0x339623+'-'+_0xd1d16f+'/'+_0x45a83e)[_0xc76d('0x1f')](_0x47a4ee);}return null;};}function patchUpdates(_0x324db7){return function(_0x5dffde){try{jsonpatch[_0xc76d('0x20')](_0x5dffde,_0x324db7,!![]);}catch(_0x777f22){return BPromise[_0xc76d('0x21')](_0x777f22);}return _0x5dffde[_0xc76d('0x22')]();};}function saveUpdates(_0x18f546,_0x3d357b){return function(_0x42b89c){if(_0x42b89c){return _0x42b89c[_0xc76d('0x23')](_0x18f546)[_0xc76d('0x24')](function(_0x20e09c){return _0x20e09c;});}return null;};}function removeEntity(_0x15328d,_0x5de11f){return function(_0x11b42f){if(_0x11b42f){return _0x11b42f[_0xc76d('0x25')]()['then'](function(){var _0x637d68=_0x11b42f[_0xc76d('0x26')]({'plain':!![]});var _0x55ca79=_0xc76d('0x27');return db[_0xc76d('0x28')][_0xc76d('0x25')]({'where':{'type':_0x55ca79,'resourceId':_0x637d68['id']}})[_0xc76d('0x24')](function(){return _0x11b42f;});})[_0xc76d('0x24')](function(){_0x15328d[_0xc76d('0x18')](0xcc)[_0xc76d('0x19')]();});}};}function handleEntityNotFound(_0x59ebd1,_0x59dabf){return function(_0x285430){if(!_0x285430){_0x59ebd1[_0xc76d('0x17')](0x194);}return _0x285430;};}function handleError(_0x5069ea,_0x31501a){_0x31501a=_0x31501a||0x1f4;return function(_0x52a79a){logger[_0xc76d('0x29')](_0x52a79a['stack']);if(_0x52a79a[_0xc76d('0x2a')]){delete _0x52a79a['name'];}_0x5069ea[_0xc76d('0x18')](_0x31501a)[_0xc76d('0x2b')](_0x52a79a);};}exports['index']=function(_0x3d4076,_0x1c68f3){var _0x9ab96c={},_0x2cf501={},_0x4feeda={'count':0x0,'rows':[]};var _0x283e16=_['map'](db[_0xc76d('0x2c')]['rawAttributes'],function(_0x30769f){return{'name':_0x30769f[_0xc76d('0x2d')],'type':_0x30769f['type']['key']};});_0x2cf501['model']=_['map'](_0x283e16,_0xc76d('0x2a'));_0x2cf501[_0xc76d('0x2e')]=_[_0xc76d('0x2f')](_0x3d4076[_0xc76d('0x2e')]);_0x2cf501[_0xc76d('0x30')]=_['intersection'](_0x2cf501[_0xc76d('0x31')],_0x2cf501['query']);_0x9ab96c[_0xc76d('0x32')]=_['intersection'](_0x2cf501[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x33')]));_0x9ab96c[_0xc76d('0x32')]=_0x9ab96c['attributes'][_0xc76d('0x34')]?_0x9ab96c[_0xc76d('0x32')]:_0x2cf501[_0xc76d('0x31')];if(!_0x3d4076['query'][_0xc76d('0x35')](_0xc76d('0x36'))){_0x9ab96c[_0xc76d('0x1d')]=qs['limit'](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x1d')]);_0x9ab96c[_0xc76d('0x1c')]=qs[_0xc76d('0x1c')](_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x1c')]);}_0x9ab96c['order']=qs['sort'](_0x3d4076[_0xc76d('0x2e')]['sort']);_0x9ab96c[_0xc76d('0x37')]=qs[_0xc76d('0x30')](_[_0xc76d('0x38')](_0x3d4076[_0xc76d('0x2e')],_0x2cf501['filters']),_0x283e16);if(_0x3d4076['query'][_0xc76d('0x39')]){_0x9ab96c[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x9ab96c[_0xc76d('0x37')],{'$or':_[_0xc76d('0x3b')](_0x283e16,function(_0x58c724){if(_0x58c724[_0xc76d('0x3c')]!==_0xc76d('0x3d')){var _0x321989={};_0x321989[_0x58c724[_0xc76d('0x2a')]]={'$like':'%'+_0x3d4076[_0xc76d('0x2e')][_0xc76d('0x39')]+'%'};return _0x321989;}})});}_0x9ab96c=_[_0xc76d('0x3a')]({},_0x9ab96c,_0x3d4076[_0xc76d('0x3e')]);var _0x305f7d={'where':_0x9ab96c[_0xc76d('0x37')]};return db['VoiceMail']['count'](_0x305f7d)[_0xc76d('0x24')](function(_0x2a0759){_0x4feeda[_0xc76d('0x1b')]=_0x2a0759;if(_0x3d4076[_0xc76d('0x2e')]['includeAll']){_0x9ab96c['include']=[{'all':!![]}];}return db[_0xc76d('0x2c')][_0xc76d('0x3f')](_0x9ab96c);})[_0xc76d('0x24')](function(_0x15eb42){_0x4feeda[_0xc76d('0x40')]=_0x15eb42;return _0x4feeda;})[_0xc76d('0x24')](respondWithFilteredResult(_0x1c68f3,_0x9ab96c))[_0xc76d('0x41')](handleError(_0x1c68f3,null));};exports[_0xc76d('0x42')]=function(_0x50e922,_0x7bf0){var _0x95193f={'raw':!![],'where':{'id':_0x50e922[_0xc76d('0x43')]['id']}},_0x1bf8a0={};_0x1bf8a0['model']=_['keys'](db['VoiceMail']['rawAttributes']);_0x1bf8a0['query']=_['keys'](_0x50e922['query']);_0x1bf8a0[_0xc76d('0x30')]=_[_0xc76d('0x44')](_0x1bf8a0[_0xc76d('0x31')],_0x1bf8a0[_0xc76d('0x2e')]);_0x95193f[_0xc76d('0x32')]=_[_0xc76d('0x44')](_0x1bf8a0[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x50e922['query'][_0xc76d('0x33')]));_0x95193f[_0xc76d('0x32')]=_0x95193f[_0xc76d('0x32')][_0xc76d('0x34')]?_0x95193f[_0xc76d('0x32')]:_0x1bf8a0[_0xc76d('0x31')];if(_0x50e922[_0xc76d('0x2e')][_0xc76d('0x45')]){_0x95193f[_0xc76d('0x46')]=[{'all':!![]}];}_0x95193f=_['merge']({},_0x95193f,_0x50e922['options']);return db[_0xc76d('0x2c')][_0xc76d('0x47')](_0x95193f)[_0xc76d('0x24')](handleEntityNotFound(_0x7bf0,null))[_0xc76d('0x24')](respondWithResult(_0x7bf0,null))[_0xc76d('0x41')](handleError(_0x7bf0,null));};exports['create']=function(_0x25fc9d,_0x1ede13){return db['VoiceMail']['create'](_0x25fc9d[_0xc76d('0x48')],{})[_0xc76d('0x24')](function(_0x48cad0){var _0xe44a25=_0x25fc9d[_0xc76d('0x49')][_0xc76d('0x26')]({'plain':!![]});if(!_0xe44a25)throw new Error(_0xc76d('0x4a'));if(_0xe44a25[_0xc76d('0x4b')]===_0xc76d('0x49')){var _0x25a549=_0x48cad0[_0xc76d('0x26')]({'plain':!![]});var _0x4452a8=_0xc76d('0x27');return db['UserProfileSection'][_0xc76d('0x47')]({'where':{'name':_0x4452a8,'userProfileId':_0xe44a25[_0xc76d('0x4c')]},'raw':!![]})[_0xc76d('0x24')](function(_0x55e3af){if(_0x55e3af&&_0x55e3af[_0xc76d('0x4d')]===0x0){return db[_0xc76d('0x28')]['create']({'name':_0x25a549[_0xc76d('0x2a')],'resourceId':_0x25a549['id'],'type':_0x55e3af['name'],'sectionId':_0x55e3af['id']},{})[_0xc76d('0x24')](function(){return _0x48cad0;});}else{return _0x48cad0;}})[_0xc76d('0x41')](function(_0x316978){logger[_0xc76d('0x29')](_0xc76d('0x4e'),_0x316978);throw _0x316978;});}return _0x48cad0;})['then'](respondWithResult(_0x1ede13,0xc9))['catch'](handleError(_0x1ede13,null));};exports['update']=function(_0x320483,_0x746759){if(_0x320483[_0xc76d('0x48')]['id']){delete _0x320483[_0xc76d('0x48')]['id'];}return db[_0xc76d('0x2c')][_0xc76d('0x47')]({'where':{'id':_0x320483['params']['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x746759,null))[_0xc76d('0x24')](saveUpdates(_0x320483[_0xc76d('0x48')],null))[_0xc76d('0x24')](respondWithResult(_0x746759,null))[_0xc76d('0x41')](handleError(_0x746759,null));};exports['destroy']=function(_0x275dfd,_0x463cbe){return db[_0xc76d('0x2c')][_0xc76d('0x47')]({'where':{'id':_0x275dfd[_0xc76d('0x43')]['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x463cbe,null))['then'](removeEntity(_0x463cbe,null))[_0xc76d('0x41')](handleError(_0x463cbe,null));};exports[_0xc76d('0x4f')]=function(_0x49105d,_0x5f3973,_0x1e9461){return db['VoiceMail'][_0xc76d('0x50')]({'where':{'id':_0x49105d[_0xc76d('0x43')]['id']}})[_0xc76d('0x24')](handleEntityNotFound(_0x5f3973,null))[_0xc76d('0x24')](function(_0x254128){var _0x4746a5;var _0x106c85={},_0x1db7bc={};_0x1db7bc[_0xc76d('0x31')]=_[_0xc76d('0x2f')](db[_0xc76d('0x51')][_0xc76d('0x52')]);_0x1db7bc[_0xc76d('0x2e')]=_[_0xc76d('0x2f')](_0x49105d['query']);_0x1db7bc[_0xc76d('0x30')]=_[_0xc76d('0x44')](_0x1db7bc[_0xc76d('0x31')],_0x1db7bc[_0xc76d('0x2e')]);_0x106c85[_0xc76d('0x32')]=_['intersection'](_0x1db7bc[_0xc76d('0x31')],qs[_0xc76d('0x33')](_0x49105d['query']['fields']));_0x106c85['attributes']=_0x106c85[_0xc76d('0x32')][_0xc76d('0x34')]?_0x106c85[_0xc76d('0x32')]:_0x1db7bc[_0xc76d('0x31')];if(!_0x49105d[_0xc76d('0x2e')][_0xc76d('0x35')](_0xc76d('0x36'))){_0x106c85[_0xc76d('0x1d')]=qs['limit'](_0x49105d[_0xc76d('0x2e')]['limit']);_0x106c85['offset']=qs[_0xc76d('0x1c')](_0x49105d[_0xc76d('0x2e')][_0xc76d('0x1c')]);}_0x106c85['order']=qs[_0xc76d('0x53')](_0x49105d['query']['sort']);_0x106c85['where']=qs[_0xc76d('0x30')](_[_0xc76d('0x38')](_0x49105d['query'],_0x1db7bc[_0xc76d('0x30')]));if(_0x49105d[_0xc76d('0x2e')][_0xc76d('0x39')]){_0x106c85[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x106c85[_0xc76d('0x37')],{'$or':_[_0xc76d('0x3b')](_0x106c85['attributes'],function(_0x5035fd){var _0x4c523f={};_0x4c523f[_0x5035fd]={'$like':'%'+_0x49105d[_0xc76d('0x2e')][_0xc76d('0x39')]+'%'};return _0x4c523f;})});}_0x106c85[_0xc76d('0x37')]=_[_0xc76d('0x3a')](_0x106c85[_0xc76d('0x37')],{'mailboxuser':_0x254128['mailbox']});_0x106c85=_[_0xc76d('0x3a')]({},_0x106c85,_0x49105d[_0xc76d('0x3e')]);return db[_0xc76d('0x51')][_0xc76d('0x54')](_0x106c85)[_0xc76d('0x24')](respondWithFilteredResult(_0x5f3973,_0x106c85));})[_0xc76d('0x41')](handleError(_0x5f3973,null));};
\ No newline at end of file
+var _0x373d=['count','set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','error','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','merge','filter','VoiceMail','include','findAll','catch','show','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getMessages','findOne','VoiceMailMessage','nolimit','pick','mailbox','options','findAndCountAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x3f9fec,_0x1c3a1c){var _0x468dd7=function(_0x97c8ca){while(--_0x97c8ca){_0x3f9fec['push'](_0x3f9fec['shift']());}};_0x468dd7(++_0x1c3a1c);}(_0x373d,0x1e2));var _0xd373=function(_0x521378,_0x2f8004){_0x521378=_0x521378-0x0;var _0x4b2fc4=_0x373d[_0x521378];return _0x4b2fc4;};'use strict';var emlformat=require(_0xd373('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd373('0x1'));var jsonpatch=require(_0xd373('0x2'));var rp=require(_0xd373('0x3'));var moment=require(_0xd373('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd373('0x5'));var util=require(_0xd373('0x6'));var path=require(_0xd373('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd373('0x8'));var fs=require('fs');var fs_extra=require(_0xd373('0x9'));var _=require(_0xd373('0xa'));var squel=require(_0xd373('0xb'));var crypto=require('crypto');var jsforce=require(_0xd373('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd373('0xd'));var Redis=require(_0xd373('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd373('0xf'));var as=require(_0xd373('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd373('0x11'));var utils=require(_0xd373('0x12'));var config=require(_0xd373('0x13'));var licenseUtil=require(_0xd373('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c7f91,_0x5ab89c){_0x5ab89c=_0x5ab89c||0xcc;return function(_0xcd9b8c){if(_0xcd9b8c){return _0x4c7f91[_0xd373('0x15')](_0x5ab89c);}return _0x4c7f91['status'](_0x5ab89c)[_0xd373('0x16')]();};}function respondWithResult(_0x129475,_0x27c161){_0x27c161=_0x27c161||0xc8;return function(_0x23ed86){if(_0x23ed86){return _0x129475[_0xd373('0x17')](_0x27c161)[_0xd373('0x18')](_0x23ed86);}};}function respondWithFilteredResult(_0x20aca5,_0x2eacb1){return function(_0x5a286a){if(_0x5a286a){var _0x2c5854=typeof _0x2eacb1[_0xd373('0x19')]===_0xd373('0x1a')&&typeof _0x2eacb1[_0xd373('0x1b')]==='undefined';var _0x1e26cf=_0x5a286a['count'];var _0x460259=_0x2c5854?0x0:_0x2eacb1[_0xd373('0x19')];var _0x55c5c7=_0x2c5854?_0x5a286a[_0xd373('0x1c')]:_0x2eacb1['offset']+_0x2eacb1['limit'];var _0x23fada;if(_0x55c5c7>=_0x1e26cf){_0x55c5c7=_0x1e26cf;_0x23fada=0xc8;}else{_0x23fada=0xce;}_0x20aca5[_0xd373('0x17')](_0x23fada);return _0x20aca5[_0xd373('0x1d')](_0xd373('0x1e'),_0x460259+'-'+_0x55c5c7+'/'+_0x1e26cf)[_0xd373('0x18')](_0x5a286a);}return null;};}function patchUpdates(_0x181eb2){return function(_0x4ba510){try{jsonpatch[_0xd373('0x1f')](_0x4ba510,_0x181eb2,!![]);}catch(_0xd808f8){return BPromise[_0xd373('0x20')](_0xd808f8);}return _0x4ba510[_0xd373('0x21')]();};}function saveUpdates(_0x165e21,_0x3aa1c5){return function(_0x4f64bd){if(_0x4f64bd){return _0x4f64bd[_0xd373('0x22')](_0x165e21)[_0xd373('0x23')](function(_0x157f81){return _0x157f81;});}return null;};}function removeEntity(_0x209ca7,_0x217ee7){return function(_0x238ffd){if(_0x238ffd){return _0x238ffd[_0xd373('0x24')]()[_0xd373('0x23')](function(){var _0x1ab540=_0x238ffd[_0xd373('0x25')]({'plain':!![]});var _0x437110=_0xd373('0x26');return db[_0xd373('0x27')][_0xd373('0x24')]({'where':{'type':_0x437110,'resourceId':_0x1ab540['id']}})[_0xd373('0x23')](function(){return _0x238ffd;});})[_0xd373('0x23')](function(){_0x209ca7[_0xd373('0x17')](0xcc)[_0xd373('0x16')]();});}};}function handleEntityNotFound(_0x3e657b,_0x470612){return function(_0x45ee58){if(!_0x45ee58){_0x3e657b[_0xd373('0x15')](0x194);}return _0x45ee58;};}function handleError(_0x71c5c,_0x3384a5){_0x3384a5=_0x3384a5||0x1f4;return function(_0xf85ca8){logger[_0xd373('0x28')](_0xf85ca8[_0xd373('0x29')]);if(_0xf85ca8[_0xd373('0x2a')]){delete _0xf85ca8[_0xd373('0x2a')];}_0x71c5c[_0xd373('0x17')](_0x3384a5)['send'](_0xf85ca8);};}exports[_0xd373('0x2b')]=function(_0x490842,_0x498aaa){var _0xedc8f3={},_0x15da6c={},_0x25e016={'count':0x0,'rows':[]};var _0x23024c=_[_0xd373('0x2c')](db['VoiceMail'][_0xd373('0x2d')],function(_0x104156){return{'name':_0x104156['fieldName'],'type':_0x104156[_0xd373('0x2e')][_0xd373('0x2f')]};});_0x15da6c[_0xd373('0x30')]=_[_0xd373('0x2c')](_0x23024c,_0xd373('0x2a'));_0x15da6c[_0xd373('0x31')]=_[_0xd373('0x32')](_0x490842[_0xd373('0x31')]);_0x15da6c[_0xd373('0x33')]=_['intersection'](_0x15da6c[_0xd373('0x30')],_0x15da6c[_0xd373('0x31')]);_0xedc8f3[_0xd373('0x34')]=_[_0xd373('0x35')](_0x15da6c[_0xd373('0x30')],qs[_0xd373('0x36')](_0x490842[_0xd373('0x31')][_0xd373('0x36')]));_0xedc8f3[_0xd373('0x34')]=_0xedc8f3[_0xd373('0x34')][_0xd373('0x37')]?_0xedc8f3[_0xd373('0x34')]:_0x15da6c[_0xd373('0x30')];if(!_0x490842[_0xd373('0x31')][_0xd373('0x38')]('nolimit')){_0xedc8f3[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0x490842[_0xd373('0x31')][_0xd373('0x1b')]);_0xedc8f3['offset']=qs[_0xd373('0x19')](_0x490842[_0xd373('0x31')][_0xd373('0x19')]);}_0xedc8f3[_0xd373('0x39')]=qs[_0xd373('0x3a')](_0x490842[_0xd373('0x31')]['sort']);_0xedc8f3['where']=qs[_0xd373('0x33')](_['pick'](_0x490842[_0xd373('0x31')],_0x15da6c[_0xd373('0x33')]),_0x23024c);if(_0x490842[_0xd373('0x31')]['filter']){_0xedc8f3[_0xd373('0x3b')]=_[_0xd373('0x3c')](_0xedc8f3[_0xd373('0x3b')],{'$or':_[_0xd373('0x2c')](_0x23024c,function(_0x504450){if(_0x504450['type']!=='VIRTUAL'){var _0x11ec1b={};_0x11ec1b[_0x504450['name']]={'$like':'%'+_0x490842[_0xd373('0x31')][_0xd373('0x3d')]+'%'};return _0x11ec1b;}})});}_0xedc8f3=_['merge']({},_0xedc8f3,_0x490842['options']);var _0x5f3dd5={'where':_0xedc8f3[_0xd373('0x3b')]};return db[_0xd373('0x3e')][_0xd373('0x1c')](_0x5f3dd5)['then'](function(_0x5c3b22){_0x25e016[_0xd373('0x1c')]=_0x5c3b22;if(_0x490842[_0xd373('0x31')]['includeAll']){_0xedc8f3[_0xd373('0x3f')]=[{'all':!![]}];}return db[_0xd373('0x3e')][_0xd373('0x40')](_0xedc8f3);})[_0xd373('0x23')](function(_0x2d8c7d){_0x25e016['rows']=_0x2d8c7d;return _0x25e016;})['then'](respondWithFilteredResult(_0x498aaa,_0xedc8f3))[_0xd373('0x41')](handleError(_0x498aaa,null));};exports[_0xd373('0x42')]=function(_0x30b423,_0x302f65){var _0x5d4dd2={'raw':!![],'where':{'id':_0x30b423['params']['id']}},_0x29725c={};_0x29725c[_0xd373('0x30')]=_[_0xd373('0x32')](db[_0xd373('0x3e')][_0xd373('0x2d')]);_0x29725c[_0xd373('0x31')]=_['keys'](_0x30b423[_0xd373('0x31')]);_0x29725c[_0xd373('0x33')]=_['intersection'](_0x29725c[_0xd373('0x30')],_0x29725c[_0xd373('0x31')]);_0x5d4dd2[_0xd373('0x34')]=_[_0xd373('0x35')](_0x29725c[_0xd373('0x30')],qs[_0xd373('0x36')](_0x30b423[_0xd373('0x31')][_0xd373('0x36')]));_0x5d4dd2[_0xd373('0x34')]=_0x5d4dd2[_0xd373('0x34')]['length']?_0x5d4dd2['attributes']:_0x29725c[_0xd373('0x30')];if(_0x30b423['query'][_0xd373('0x43')]){_0x5d4dd2['include']=[{'all':!![]}];}_0x5d4dd2=_['merge']({},_0x5d4dd2,_0x30b423['options']);return db[_0xd373('0x3e')][_0xd373('0x44')](_0x5d4dd2)[_0xd373('0x23')](handleEntityNotFound(_0x302f65,null))[_0xd373('0x23')](respondWithResult(_0x302f65,null))[_0xd373('0x41')](handleError(_0x302f65,null));};exports[_0xd373('0x45')]=function(_0x1855aa,_0x4d1088){return db[_0xd373('0x3e')]['create'](_0x1855aa[_0xd373('0x46')],{})[_0xd373('0x23')](function(_0x5502e5){var _0x4517ab=_0x1855aa['user'][_0xd373('0x25')]({'plain':!![]});if(!_0x4517ab)throw new Error(_0xd373('0x47'));if(_0x4517ab[_0xd373('0x48')]===_0xd373('0x49')){var _0xe22cbd=_0x5502e5['get']({'plain':!![]});var _0x4971a0='Voicemails';return db[_0xd373('0x4a')][_0xd373('0x44')]({'where':{'name':_0x4971a0,'userProfileId':_0x4517ab['userProfileId']},'raw':!![]})[_0xd373('0x23')](function(_0x3e6766){if(_0x3e6766&&_0x3e6766['autoAssociation']===0x0){return db[_0xd373('0x27')][_0xd373('0x45')]({'name':_0xe22cbd[_0xd373('0x2a')],'resourceId':_0xe22cbd['id'],'type':_0x3e6766[_0xd373('0x2a')],'sectionId':_0x3e6766['id']},{})[_0xd373('0x23')](function(){return _0x5502e5;});}else{return _0x5502e5;}})[_0xd373('0x41')](function(_0xc255ec){logger[_0xd373('0x28')](_0xd373('0x4b'),_0xc255ec);throw _0xc255ec;});}return _0x5502e5;})[_0xd373('0x23')](respondWithResult(_0x4d1088,0xc9))[_0xd373('0x41')](handleError(_0x4d1088,null));};exports['update']=function(_0x4b2645,_0x51ca73){if(_0x4b2645['body']['id']){delete _0x4b2645['body']['id'];}return db['VoiceMail'][_0xd373('0x44')]({'where':{'id':_0x4b2645[_0xd373('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51ca73,null))['then'](saveUpdates(_0x4b2645['body'],null))[_0xd373('0x23')](respondWithResult(_0x51ca73,null))[_0xd373('0x41')](handleError(_0x51ca73,null));};exports['destroy']=function(_0x52fa5b,_0x2230d6){return db[_0xd373('0x3e')][_0xd373('0x44')]({'where':{'id':_0x52fa5b[_0xd373('0x4c')]['id']}})[_0xd373('0x23')](handleEntityNotFound(_0x2230d6,null))['then'](removeEntity(_0x2230d6,null))[_0xd373('0x41')](handleError(_0x2230d6,null));};exports[_0xd373('0x4d')]=function(_0x386e4c,_0x213da6,_0xc607fb){return db[_0xd373('0x3e')][_0xd373('0x4e')]({'where':{'id':_0x386e4c[_0xd373('0x4c')]['id']}})[_0xd373('0x23')](handleEntityNotFound(_0x213da6,null))[_0xd373('0x23')](function(_0x1c21d2){var _0x3ad1ec;var _0x213b3c={},_0x42e45d={};_0x42e45d[_0xd373('0x30')]=_['keys'](db[_0xd373('0x4f')][_0xd373('0x2d')]);_0x42e45d[_0xd373('0x31')]=_['keys'](_0x386e4c[_0xd373('0x31')]);_0x42e45d['filters']=_[_0xd373('0x35')](_0x42e45d['model'],_0x42e45d[_0xd373('0x31')]);_0x213b3c[_0xd373('0x34')]=_[_0xd373('0x35')](_0x42e45d[_0xd373('0x30')],qs[_0xd373('0x36')](_0x386e4c[_0xd373('0x31')][_0xd373('0x36')]));_0x213b3c[_0xd373('0x34')]=_0x213b3c[_0xd373('0x34')][_0xd373('0x37')]?_0x213b3c[_0xd373('0x34')]:_0x42e45d[_0xd373('0x30')];if(!_0x386e4c[_0xd373('0x31')][_0xd373('0x38')](_0xd373('0x50'))){_0x213b3c[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0x386e4c[_0xd373('0x31')][_0xd373('0x1b')]);_0x213b3c[_0xd373('0x19')]=qs[_0xd373('0x19')](_0x386e4c[_0xd373('0x31')][_0xd373('0x19')]);}_0x213b3c[_0xd373('0x39')]=qs[_0xd373('0x3a')](_0x386e4c[_0xd373('0x31')]['sort']);_0x213b3c[_0xd373('0x3b')]=qs[_0xd373('0x33')](_[_0xd373('0x51')](_0x386e4c['query'],_0x42e45d[_0xd373('0x33')]));if(_0x386e4c[_0xd373('0x31')][_0xd373('0x3d')]){_0x213b3c[_0xd373('0x3b')]=_[_0xd373('0x3c')](_0x213b3c[_0xd373('0x3b')],{'$or':_[_0xd373('0x2c')](_0x213b3c['attributes'],function(_0x1afe12){var _0x356820={};_0x356820[_0x1afe12]={'$like':'%'+_0x386e4c[_0xd373('0x31')][_0xd373('0x3d')]+'%'};return _0x356820;})});}_0x213b3c[_0xd373('0x3b')]=_[_0xd373('0x3c')](_0x213b3c[_0xd373('0x3b')],{'mailboxuser':_0x1c21d2[_0xd373('0x52')]});_0x213b3c=_['merge']({},_0x213b3c,_0x386e4c[_0xd373('0x53')]);return db['VoiceMailMessage'][_0xd373('0x54')](_0x213b3c)[_0xd373('0x23')](respondWithFilteredResult(_0x213da6,_0x213b3c));})[_0xd373('0x41')](handleError(_0x213da6,null));};
\ No newline at end of file
index 9d26e34..62dc915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5abc=['bluebird','rimraf','exports','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api'];(function(_0x3f8f3a,_0xc552d5){var _0x54006f=function(_0x170757){while(--_0x170757){_0x3f8f3a['push'](_0x3f8f3a['shift']());}};_0x54006f(++_0xc552d5);}(_0x5abc,0x182));var _0xc5ab=function(_0x30840b,_0x55a1f4){_0x30840b=_0x30840b-0x0;var _0x2db2c1=_0x5abc[_0x30840b];return _0x2db2c1;};'use strict';var _=require(_0xc5ab('0x0'));var util=require(_0xc5ab('0x1'));var logger=require(_0xc5ab('0x2'))(_0xc5ab('0x3'));var moment=require('moment');var BPromise=require(_0xc5ab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc5ab('0x5'));var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0xc5ab('0x6')]=function(_0x3c0afe,_0x44d324){return _0x3c0afe[_0xc5ab('0x7')](_0xc5ab('0x8'),attributes,{'tableName':_0xc5ab('0x9'),'paranoid':![],'indexes':[{'name':_0xc5ab('0xa'),'fields':[_0xc5ab('0xb'),_0xc5ab('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcab2=['define','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports'];(function(_0x578ec9,_0x3ec1f3){var _0x5e4fbc=function(_0x2cb592){while(--_0x2cb592){_0x578ec9['push'](_0x578ec9['shift']());}};_0x5e4fbc(++_0x3ec1f3);}(_0xcab2,0x17c));var _0x2cab=function(_0x316fd1,_0x52a6a6){_0x316fd1=_0x316fd1-0x0;var _0x259636=_0xcab2[_0x316fd1];return _0x259636;};'use strict';var _=require(_0x2cab('0x0'));var util=require(_0x2cab('0x1'));var logger=require(_0x2cab('0x2'))('api');var moment=require(_0x2cab('0x3'));var BPromise=require(_0x2cab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2cab('0x5'));var rimraf=require(_0x2cab('0x6'));var config=require(_0x2cab('0x7'));var attributes=require(_0x2cab('0x8'));module[_0x2cab('0x9')]=function(_0x553259,_0x4f051c){return _0x553259[_0x2cab('0xa')]('VoiceMail',attributes,{'tableName':_0x2cab('0xb'),'paranoid':![],'indexes':[{'name':_0x2cab('0xc'),'fields':[_0x2cab('0xd'),_0x2cab('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index ea32720..cce3423 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022f=['jayson/promise','client','http','then','debug','request\x20sent','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','info','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x307af1,_0x351d29){var _0x354eba=function(_0x56b3af){while(--_0x56b3af){_0x307af1['push'](_0x307af1['shift']());}};_0x354eba(++_0x351d29);}(_0x022f,0x15e));var _0xf022=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x022f[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xf022('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf022('0x1'));var rs=require(_0xf022('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf022('0x3'))['db'];var utils=require(_0xf022('0x4'));var logger=require(_0xf022('0x5'))(_0xf022('0x6'));var config=require('../../config/environment');var jayson=require(_0xf022('0x7'));var client=jayson[_0xf022('0x8')][_0xf022('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32e596,_0x22dd21,_0x5f39f3){return new BPromise(function(_0x3b0a09,_0x3245d1){return client['request'](_0x32e596,_0x5f39f3)[_0xf022('0xa')](function(_0x4766d9){logger['info']('VoiceMail,\x20%s,\x20%s',_0x22dd21,'request\x20sent');logger[_0xf022('0xb')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x22dd21,_0xf022('0xc'),JSON[_0xf022('0xd')](_0x4766d9));if(_0x4766d9[_0xf022('0xe')]){if(_0x4766d9[_0xf022('0xe')][_0xf022('0xf')]===0x1f4){logger['error'](_0xf022('0x10'),_0x22dd21,_0x4766d9[_0xf022('0xe')][_0xf022('0x11')]);return _0x3245d1(_0x4766d9['error'][_0xf022('0x11')]);}logger[_0xf022('0xe')](_0xf022('0x10'),_0x22dd21,_0x4766d9[_0xf022('0xe')][_0xf022('0x11')]);return _0x3b0a09(_0x4766d9['error'][_0xf022('0x11')]);}else{logger[_0xf022('0x12')]('VoiceMail,\x20%s,\x20%s',_0x22dd21,_0xf022('0xc'));_0x3b0a09(_0x4766d9[_0xf022('0x13')][_0xf022('0x11')]);}})[_0xf022('0x14')](function(_0x323c87){logger[_0xf022('0xe')](_0xf022('0x10'),_0x22dd21,_0x323c87);_0x3245d1(_0x323c87);});});}
\ No newline at end of file
+var _0x651a=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','result'];(function(_0x4bd67a,_0x4f9725){var _0x2be5fb=function(_0x33e132){while(--_0x33e132){_0x4bd67a['push'](_0x4bd67a['shift']());}};_0x2be5fb(++_0x4f9725);}(_0x651a,0x1cf));var _0xa651=function(_0x1ec65c,_0x354923){_0x1ec65c=_0x1ec65c-0x0;var _0x5249c2=_0x651a[_0x1ec65c];return _0x5249c2;};'use strict';var _=require(_0xa651('0x0'));var util=require('util');var moment=require(_0xa651('0x1'));var BPromise=require(_0xa651('0x2'));var rs=require(_0xa651('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa651('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa651('0x5'));var config=require(_0xa651('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa651('0x7')][_0xa651('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3fd43c,_0xdb4926,_0x5da1f1){return new BPromise(function(_0x5dd2ba,_0x362297){return client[_0xa651('0x9')](_0x3fd43c,_0x5da1f1)[_0xa651('0xa')](function(_0x45a359){logger[_0xa651('0xb')]('VoiceMail,\x20%s,\x20%s',_0xdb4926,_0xa651('0xc'));logger[_0xa651('0xd')](_0xa651('0xe'),_0xdb4926,_0xa651('0xc'),JSON[_0xa651('0xf')](_0x45a359));if(_0x45a359[_0xa651('0x10')]){if(_0x45a359['error'][_0xa651('0x11')]===0x1f4){logger[_0xa651('0x10')](_0xa651('0x12'),_0xdb4926,_0x45a359[_0xa651('0x10')][_0xa651('0x13')]);return _0x362297(_0x45a359[_0xa651('0x10')]['message']);}logger[_0xa651('0x10')](_0xa651('0x12'),_0xdb4926,_0x45a359[_0xa651('0x10')][_0xa651('0x13')]);return _0x5dd2ba(_0x45a359[_0xa651('0x10')][_0xa651('0x13')]);}else{logger[_0xa651('0xb')](_0xa651('0x12'),_0xdb4926,'request\x20sent');_0x5dd2ba(_0x45a359[_0xa651('0x14')][_0xa651('0x13')]);}})[_0xa651('0x15')](function(_0x3fa4c7){logger[_0xa651('0x10')](_0xa651('0x12'),_0xdb4926,_0x3fa4c7);_0x362297(_0x3fa4c7);});});}
\ No newline at end of file
index 2d021f2..54bc1a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd98=['util','path','express','Router','../../components/auth/service','../../config/environment','get','index','/:id','show','/:id/download','isAuthenticated','download','post','create','put','update','delete','multer'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xcd98,0x1ed));var _0x8cd9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcd98[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x8cd9('0x0'));var util=require(_0x8cd9('0x1'));var path=require(_0x8cd9('0x2'));var timeout=require('connect-timeout');var express=require(_0x8cd9('0x3'));var router=express[_0x8cd9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8cd9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8cd9('0x6'));var controller=require('./voiceMailMessage.controller');router[_0x8cd9('0x7')]('/',auth['isAuthenticated'](),controller[_0x8cd9('0x8')]);router[_0x8cd9('0x7')](_0x8cd9('0x9'),auth['isAuthenticated'](),controller[_0x8cd9('0xa')]);router[_0x8cd9('0x7')](_0x8cd9('0xb'),auth[_0x8cd9('0xc')](),controller[_0x8cd9('0xd')]);router[_0x8cd9('0xe')]('/',auth['isAuthenticated'](),controller[_0x8cd9('0xf')]);router[_0x8cd9('0x10')](_0x8cd9('0x9'),auth[_0x8cd9('0xc')](),controller[_0x8cd9('0x11')]);router[_0x8cd9('0x12')](_0x8cd9('0x9'),auth[_0x8cd9('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x706d=['destroy','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id/download','download','post','create','put','/:id','update'];(function(_0x587e3c,_0xa9b985){var _0x5e9a0f=function(_0x129c4c){while(--_0x129c4c){_0x587e3c['push'](_0x587e3c['shift']());}};_0x5e9a0f(++_0xa9b985);}(_0x706d,0x65));var _0xd706=function(_0xb5395a,_0x386760){_0xb5395a=_0xb5395a-0x0;var _0x582d5e=_0x706d[_0xb5395a];return _0x582d5e;};'use strict';var multer=require('multer');var util=require(_0xd706('0x0'));var path=require('path');var timeout=require(_0xd706('0x1'));var express=require(_0xd706('0x2'));var router=express[_0xd706('0x3')]();var fs_extra=require(_0xd706('0x4'));var auth=require(_0xd706('0x5'));var interaction=require(_0xd706('0x6'));var config=require(_0xd706('0x7'));var controller=require(_0xd706('0x8'));router[_0xd706('0x9')]('/',auth[_0xd706('0xa')](),controller[_0xd706('0xb')]);router[_0xd706('0x9')]('/:id',auth[_0xd706('0xa')](),controller['show']);router[_0xd706('0x9')](_0xd706('0xc'),auth[_0xd706('0xa')](),controller[_0xd706('0xd')]);router[_0xd706('0xe')]('/',auth[_0xd706('0xa')](),controller[_0xd706('0xf')]);router[_0xd706('0x10')](_0xd706('0x11'),auth[_0xd706('0xa')](),controller[_0xd706('0x12')]);router['delete'](_0xd706('0x11'),auth[_0xd706('0xa')](),controller[_0xd706('0x13')]);module['exports']=router;
\ No newline at end of file
index 8691068..9bd0cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e0=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','STRING','BLOB','long','TIMESTAMP'];(function(_0x179194,_0x8fca3){var _0x1b3ac7=function(_0x321450){while(--_0x321450){_0x179194['push'](_0x179194['shift']());}};_0x1b3ac7(++_0x8fca3);}(_0x04e0,0x1b2));var _0x004e=function(_0x299f4c,_0x45f7e3){_0x299f4c=_0x299f4c-0x0;var _0x16ee3a=_0x04e0[_0x299f4c];return _0x16ee3a;};'use strict';var Sequelize=require(_0x004e('0x0'));module[_0x004e('0x1')]={'name':{'type':Sequelize[_0x004e('0x2')],'get':function(_0x3d373f){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x004e('0x4')](_0x004e('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x004e('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x004e('0x6'),'defaultValue':Sequelize[_0x004e('0x7')](_0x004e('0x8'))}};
\ No newline at end of file
+var _0xbed1=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','STRING','BLOB','long','TIMESTAMP','literal'];(function(_0x115823,_0x3d8739){var _0x53b304=function(_0x112ff3){while(--_0x112ff3){_0x115823['push'](_0x115823['shift']());}};_0x53b304(++_0x3d8739);}(_0xbed1,0x133));var _0x1bed=function(_0x3e182f,_0x380ec7){_0x3e182f=_0x3e182f-0x0;var _0x23edc9=_0xbed1[_0x3e182f];return _0x23edc9;};'use strict';var Sequelize=require(_0x1bed('0x0'));module[_0x1bed('0x1')]={'name':{'type':Sequelize[_0x1bed('0x2')],'get':function(_0x1e5b4c){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x1bed('0x4')](_0x1bed('0x5')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x1bed('0x3')],'defaultValue':''},'stamp':{'type':_0x1bed('0x6'),'defaultValue':Sequelize[_0x1bed('0x7')](_0x1bed('0x8'))}};
\ No newline at end of file
index 1147ef4..280ee9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5254=['crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','save','update','then','error','stack','name','send','index','map','type','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','VIRTUAL','filter','merge','VoiceMailMessage','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','destroy','download','recording','msg_id','Sequelize','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5254,0x18d));var _0x4525=function(_0x1f2e5e,_0x36db41){_0x1f2e5e=_0x1f2e5e-0x0;var _0x16fcdb=_0x5254[_0x1f2e5e];return _0x16fcdb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4525('0x0'));var zipdir=require(_0x4525('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4525('0x2'));var BPromise=require(_0x4525('0x3'));var Mustache=require(_0x4525('0x4'));var util=require(_0x4525('0x5'));var path=require(_0x4525('0x6'));var sox=require(_0x4525('0x7'));var csv=require(_0x4525('0x8'));var ejs=require(_0x4525('0x9'));var fs=require('fs');var fs_extra=require(_0x4525('0xa'));var _=require(_0x4525('0xb'));var squel=require(_0x4525('0xc'));var crypto=require(_0x4525('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4525('0x8'));var querystring=require(_0x4525('0xe'));var Papa=require(_0x4525('0xf'));var Redis=require('ioredis');var authService=require(_0x4525('0x10'));var qs=require(_0x4525('0x11'));var as=require(_0x4525('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4525('0x13'));var utils=require('../../config/utils');var config=require(_0x4525('0x14'));var licenseUtil=require(_0x4525('0x15'));var db=require(_0x4525('0x16'))['db'];function respondWithStatusCode(_0x57dcd4,_0x232408){_0x232408=_0x232408||0xcc;return function(_0x5ab877){if(_0x5ab877){return _0x57dcd4[_0x4525('0x17')](_0x232408);}return _0x57dcd4['status'](_0x232408)[_0x4525('0x18')]();};}function respondWithResult(_0x22a971,_0x2c9937){_0x2c9937=_0x2c9937||0xc8;return function(_0x97a5f3){if(_0x97a5f3){return _0x22a971['status'](_0x2c9937)[_0x4525('0x19')](_0x97a5f3);}};}function respondWithFilteredResult(_0x4e9859,_0x1f565a){return function(_0x3bf696){if(_0x3bf696){var _0x5b9095=typeof _0x1f565a[_0x4525('0x1a')]==='undefined'&&typeof _0x1f565a[_0x4525('0x1b')]===_0x4525('0x1c');var _0x27f03b=_0x3bf696[_0x4525('0x1d')];var _0x34e765=_0x5b9095?0x0:_0x1f565a[_0x4525('0x1a')];var _0x2267d2=_0x5b9095?_0x3bf696[_0x4525('0x1d')]:_0x1f565a[_0x4525('0x1a')]+_0x1f565a[_0x4525('0x1b')];var _0x5b480d;if(_0x2267d2>=_0x27f03b){_0x2267d2=_0x27f03b;_0x5b480d=0xc8;}else{_0x5b480d=0xce;}_0x4e9859[_0x4525('0x1e')](_0x5b480d);return _0x4e9859[_0x4525('0x1f')](_0x4525('0x20'),_0x34e765+'-'+_0x2267d2+'/'+_0x27f03b)[_0x4525('0x19')](_0x3bf696);}return null;};}function patchUpdates(_0x21fda0){return function(_0xe5e24a){try{jsonpatch[_0x4525('0x21')](_0xe5e24a,_0x21fda0,!![]);}catch(_0x2cbbb2){return BPromise['reject'](_0x2cbbb2);}return _0xe5e24a[_0x4525('0x22')]();};}function saveUpdates(_0x1cb9d4,_0x428443){return function(_0x3ec1af){if(_0x3ec1af){return _0x3ec1af[_0x4525('0x23')](_0x1cb9d4)[_0x4525('0x24')](function(_0xce2143){return _0xce2143;});}return null;};}function removeEntity(_0x415378,_0xe81671){return function(_0x20f569){if(_0x20f569){return _0x20f569['destroy']()[_0x4525('0x24')](function(){_0x415378['status'](0xcc)[_0x4525('0x18')]();});}};}function handleEntityNotFound(_0x1d55ad,_0x160e48){return function(_0x3a87a0){if(!_0x3a87a0){_0x1d55ad[_0x4525('0x17')](0x194);}return _0x3a87a0;};}function handleError(_0x46901b,_0x1b235c){_0x1b235c=_0x1b235c||0x1f4;return function(_0x1990dd){logger[_0x4525('0x25')](_0x1990dd[_0x4525('0x26')]);if(_0x1990dd[_0x4525('0x27')]){delete _0x1990dd[_0x4525('0x27')];}_0x46901b['status'](_0x1b235c)[_0x4525('0x28')](_0x1990dd);};}exports[_0x4525('0x29')]=function(_0xcda423,_0x32f6e3){var _0x1940df={},_0x57337f={},_0xe73006={'count':0x0,'rows':[]};var _0x1e800f=_[_0x4525('0x2a')](db['VoiceMailMessage']['rawAttributes'],function(_0x4263b8){return{'name':_0x4263b8['fieldName'],'type':_0x4263b8[_0x4525('0x2b')]['key']};});_0x57337f[_0x4525('0x2c')]=_[_0x4525('0x2d')](_[_0x4525('0x2a')](_0x1e800f,_0x4525('0x27')),[_0x4525('0x27')]);_0x57337f[_0x4525('0x2e')]=_[_0x4525('0x2f')](_0xcda423[_0x4525('0x2e')]);_0x57337f[_0x4525('0x30')]=_[_0x4525('0x31')](_0x57337f[_0x4525('0x2c')],_0x57337f[_0x4525('0x2e')]);_0x1940df[_0x4525('0x32')]=_[_0x4525('0x31')](_0x57337f[_0x4525('0x2c')],qs['fields'](_0xcda423['query'][_0x4525('0x33')]));_0x1940df[_0x4525('0x32')]=_0x1940df[_0x4525('0x32')][_0x4525('0x34')]?_0x1940df['attributes']:_0x57337f[_0x4525('0x2c')];if(!_0xcda423[_0x4525('0x2e')][_0x4525('0x35')]('nolimit')){_0x1940df[_0x4525('0x1b')]=qs[_0x4525('0x1b')](_0xcda423[_0x4525('0x2e')][_0x4525('0x1b')]);_0x1940df[_0x4525('0x1a')]=qs[_0x4525('0x1a')](_0xcda423['query']['offset']);}_0x1940df[_0x4525('0x36')]=qs['sort'](_0xcda423[_0x4525('0x2e')]['sort']);_0x1940df[_0x4525('0x37')]=qs[_0x4525('0x30')](_[_0x4525('0x38')](_0xcda423[_0x4525('0x2e')],_0x57337f['filters']),_0x1e800f);if(_0xcda423[_0x4525('0x2e')]['filter']){_0x1940df[_0x4525('0x37')]=_['merge'](_0x1940df[_0x4525('0x37')],{'$or':_['map'](_0x1e800f,function(_0x12cfe6){if(_0x12cfe6['type']!==_0x4525('0x39')){var _0x48d01a={};_0x48d01a[_0x12cfe6['name']]={'$like':'%'+_0xcda423[_0x4525('0x2e')][_0x4525('0x3a')]+'%'};return _0x48d01a;}})});}_0x1940df=_[_0x4525('0x3b')]({},_0x1940df,_0xcda423['options']);var _0x1d1e33={'where':_0x1940df['where']};return db[_0x4525('0x3c')][_0x4525('0x1d')](_0x1d1e33)[_0x4525('0x24')](function(_0x51b80d){_0xe73006[_0x4525('0x1d')]=_0x51b80d;if(_0xcda423['query']['includeAll']){_0x1940df['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0x4525('0x3d')](_0x1940df);})[_0x4525('0x24')](function(_0x262750){_0xe73006[_0x4525('0x3e')]=_0x262750;return _0xe73006;})[_0x4525('0x24')](respondWithFilteredResult(_0x32f6e3,_0x1940df))[_0x4525('0x3f')](handleError(_0x32f6e3,null));};exports[_0x4525('0x40')]=function(_0xeba5f9,_0xd92050){var _0x598643={'raw':!![],'where':{'id':_0xeba5f9[_0x4525('0x41')]['id']}},_0x1b51e7={};_0x1b51e7[_0x4525('0x2c')]=_['keys'](db[_0x4525('0x3c')]['rawAttributes']);_0x1b51e7['query']=_[_0x4525('0x2f')](_0xeba5f9['query']);_0x1b51e7['filters']=_[_0x4525('0x31')](_0x1b51e7[_0x4525('0x2c')],_0x1b51e7[_0x4525('0x2e')]);_0x598643[_0x4525('0x32')]=_[_0x4525('0x31')](_0x1b51e7[_0x4525('0x2c')],qs['fields'](_0xeba5f9['query'][_0x4525('0x33')]));_0x598643['attributes']=_0x598643[_0x4525('0x32')][_0x4525('0x34')]?_0x598643['attributes']:_0x1b51e7[_0x4525('0x2c')];if(_0xeba5f9['query'][_0x4525('0x42')]){_0x598643[_0x4525('0x43')]=[{'all':!![]}];}_0x598643=_[_0x4525('0x3b')]({},_0x598643,_0xeba5f9[_0x4525('0x44')]);return db['VoiceMailMessage'][_0x4525('0x45')](_0x598643)['then'](handleEntityNotFound(_0xd92050,null))['then'](respondWithResult(_0xd92050,null))[_0x4525('0x3f')](handleError(_0xd92050,null));};exports[_0x4525('0x46')]=function(_0x3f776e,_0x32dcbf){return db[_0x4525('0x3c')][_0x4525('0x46')](_0x3f776e[_0x4525('0x47')],{})[_0x4525('0x24')](respondWithResult(_0x32dcbf,0xc9))[_0x4525('0x3f')](handleError(_0x32dcbf,null));};exports[_0x4525('0x23')]=function(_0x2a6f1b,_0x16529f){if(_0x2a6f1b[_0x4525('0x47')]['id']){delete _0x2a6f1b[_0x4525('0x47')]['id'];}return db['VoiceMailMessage'][_0x4525('0x45')]({'where':{'id':_0x2a6f1b[_0x4525('0x41')]['id']}})['then'](handleEntityNotFound(_0x16529f,null))[_0x4525('0x24')](saveUpdates(_0x2a6f1b['body'],null))[_0x4525('0x24')](respondWithResult(_0x16529f,null))[_0x4525('0x3f')](handleError(_0x16529f,null));};exports[_0x4525('0x48')]=function(_0x2ff035,_0x1c04f3){return db[_0x4525('0x3c')][_0x4525('0x45')]({'where':{'id':_0x2ff035['params']['id']}})[_0x4525('0x24')](handleEntityNotFound(_0x1c04f3,null))[_0x4525('0x24')](removeEntity(_0x1c04f3,null))['catch'](handleError(_0x1c04f3,null));};exports[_0x4525('0x49')]=function(_0xda1454,_0x1bd991,_0x2b4fdd){return db[_0x4525('0x3c')][_0x4525('0x45')]({'where':{'id':_0xda1454[_0x4525('0x41')]['id']},'attributes':['id',_0x4525('0x4a'),_0x4525('0x4b')]})[_0x4525('0x24')](handleEntityNotFound(_0x1bd991,null))[_0x4525('0x24')](function(_0x348567){if(_0x348567){if(!_0x348567[_0x4525('0x4a')]){throw new db[(_0x4525('0x4c'))]['ValidationError']('VoiceMailMessage\x20not\x20found');}var _0x181674={'Content-Type':_0x4525('0x4d'),'Content-Disposition':_0x4525('0x4e')};if(_0x348567[_0x4525('0x4b')]){_0x181674[_0x4525('0x4f')]=_0x4525('0x50')+_0x348567[_0x4525('0x4b')]+_0x4525('0x51');}_0x1bd991['set'](_0x181674);return _0x1bd991['send'](new Buffer(_0x348567['recording']));}})[_0x4525('0x3f')](handleError(_0x1bd991,null));};
\ No newline at end of file
+var _0x3f4c=['VoiceMailMessage','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','show','length','catch','create','body','update','params','destroy','find','download','recording','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','set','json','apply','reject','then','end','error','stack','name','send','index','map'];(function(_0x9f140b,_0x1b5921){var _0x200190=function(_0x329ba5){while(--_0x329ba5){_0x9f140b['push'](_0x9f140b['shift']());}};_0x200190(++_0x1b5921);}(_0x3f4c,0xd5));var _0xc3f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f4c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc3f4('0x0'));var zipdir=require(_0xc3f4('0x1'));var jsonpatch=require(_0xc3f4('0x2'));var rp=require(_0xc3f4('0x3'));var moment=require(_0xc3f4('0x4'));var BPromise=require(_0xc3f4('0x5'));var Mustache=require(_0xc3f4('0x6'));var util=require(_0xc3f4('0x7'));var path=require(_0xc3f4('0x8'));var sox=require(_0xc3f4('0x9'));var csv=require(_0xc3f4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc3f4('0xb'));var _=require(_0xc3f4('0xc'));var squel=require(_0xc3f4('0xd'));var crypto=require(_0xc3f4('0xe'));var jsforce=require(_0xc3f4('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc3f4('0xa'));var querystring=require(_0xc3f4('0x10'));var Papa=require('papaparse');var Redis=require(_0xc3f4('0x11'));var authService=require(_0xc3f4('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3f4('0x13'));var logger=require('../../config/logger')(_0xc3f4('0x14'));var utils=require(_0xc3f4('0x15'));var config=require(_0xc3f4('0x16'));var licenseUtil=require(_0xc3f4('0x17'));var db=require(_0xc3f4('0x18'))['db'];function respondWithStatusCode(_0x4b4754,_0x2e4fc9){_0x2e4fc9=_0x2e4fc9||0xcc;return function(_0x482ec6){if(_0x482ec6){return _0x4b4754[_0xc3f4('0x19')](_0x2e4fc9);}return _0x4b4754[_0xc3f4('0x1a')](_0x2e4fc9)['end']();};}function respondWithResult(_0x2381ff,_0x4f54ac){_0x4f54ac=_0x4f54ac||0xc8;return function(_0x1de47e){if(_0x1de47e){return _0x2381ff[_0xc3f4('0x1a')](_0x4f54ac)['json'](_0x1de47e);}};}function respondWithFilteredResult(_0x3663ce,_0x477c32){return function(_0x49d52c){if(_0x49d52c){var _0x26f183=typeof _0x477c32[_0xc3f4('0x1b')]===_0xc3f4('0x1c')&&typeof _0x477c32[_0xc3f4('0x1d')]===_0xc3f4('0x1c');var _0x52afdf=_0x49d52c['count'];var _0x363564=_0x26f183?0x0:_0x477c32[_0xc3f4('0x1b')];var _0x49fde1=_0x26f183?_0x49d52c['count']:_0x477c32['offset']+_0x477c32[_0xc3f4('0x1d')];var _0x2c03da;if(_0x49fde1>=_0x52afdf){_0x49fde1=_0x52afdf;_0x2c03da=0xc8;}else{_0x2c03da=0xce;}_0x3663ce['status'](_0x2c03da);return _0x3663ce[_0xc3f4('0x1e')]('Content-Range',_0x363564+'-'+_0x49fde1+'/'+_0x52afdf)[_0xc3f4('0x1f')](_0x49d52c);}return null;};}function patchUpdates(_0x15c2ac){return function(_0x37f4db){try{jsonpatch[_0xc3f4('0x20')](_0x37f4db,_0x15c2ac,!![]);}catch(_0x1bfc62){return BPromise[_0xc3f4('0x21')](_0x1bfc62);}return _0x37f4db['save']();};}function saveUpdates(_0x1b46b7,_0x55c4fb){return function(_0xce2d28){if(_0xce2d28){return _0xce2d28['update'](_0x1b46b7)['then'](function(_0x4524a0){return _0x4524a0;});}return null;};}function removeEntity(_0x41e97e,_0xb2f79){return function(_0x14ddc7){if(_0x14ddc7){return _0x14ddc7['destroy']()[_0xc3f4('0x22')](function(){_0x41e97e[_0xc3f4('0x1a')](0xcc)[_0xc3f4('0x23')]();});}};}function handleEntityNotFound(_0x3f060c,_0x5df0fc){return function(_0x511c59){if(!_0x511c59){_0x3f060c[_0xc3f4('0x19')](0x194);}return _0x511c59;};}function handleError(_0x4880b3,_0x3c6fcb){_0x3c6fcb=_0x3c6fcb||0x1f4;return function(_0x1c1af6){logger[_0xc3f4('0x24')](_0x1c1af6[_0xc3f4('0x25')]);if(_0x1c1af6[_0xc3f4('0x26')]){delete _0x1c1af6['name'];}_0x4880b3[_0xc3f4('0x1a')](_0x3c6fcb)[_0xc3f4('0x27')](_0x1c1af6);};}exports[_0xc3f4('0x28')]=function(_0x37aa01,_0x1b98b0){var _0x328de3={},_0x438fbf={},_0x37af8b={'count':0x0,'rows':[]};var _0x1fb54=_[_0xc3f4('0x29')](db[_0xc3f4('0x2a')][_0xc3f4('0x2b')],function(_0x5e691d){return{'name':_0x5e691d[_0xc3f4('0x2c')],'type':_0x5e691d[_0xc3f4('0x2d')][_0xc3f4('0x2e')]};});_0x438fbf[_0xc3f4('0x2f')]=_['differenceBy'](_[_0xc3f4('0x29')](_0x1fb54,_0xc3f4('0x26')),[_0xc3f4('0x26')]);_0x438fbf[_0xc3f4('0x30')]=_['keys'](_0x37aa01['query']);_0x438fbf[_0xc3f4('0x31')]=_['intersection'](_0x438fbf[_0xc3f4('0x2f')],_0x438fbf['query']);_0x328de3[_0xc3f4('0x32')]=_[_0xc3f4('0x33')](_0x438fbf[_0xc3f4('0x2f')],qs[_0xc3f4('0x34')](_0x37aa01[_0xc3f4('0x30')]['fields']));_0x328de3['attributes']=_0x328de3[_0xc3f4('0x32')]['length']?_0x328de3[_0xc3f4('0x32')]:_0x438fbf[_0xc3f4('0x2f')];if(!_0x37aa01[_0xc3f4('0x30')][_0xc3f4('0x35')](_0xc3f4('0x36'))){_0x328de3[_0xc3f4('0x1d')]=qs[_0xc3f4('0x1d')](_0x37aa01[_0xc3f4('0x30')]['limit']);_0x328de3[_0xc3f4('0x1b')]=qs[_0xc3f4('0x1b')](_0x37aa01['query'][_0xc3f4('0x1b')]);}_0x328de3[_0xc3f4('0x37')]=qs[_0xc3f4('0x38')](_0x37aa01[_0xc3f4('0x30')][_0xc3f4('0x38')]);_0x328de3[_0xc3f4('0x39')]=qs[_0xc3f4('0x31')](_[_0xc3f4('0x3a')](_0x37aa01['query'],_0x438fbf[_0xc3f4('0x31')]),_0x1fb54);if(_0x37aa01[_0xc3f4('0x30')][_0xc3f4('0x3b')]){_0x328de3[_0xc3f4('0x39')]=_['merge'](_0x328de3['where'],{'$or':_[_0xc3f4('0x29')](_0x1fb54,function(_0x1f79a3){if(_0x1f79a3[_0xc3f4('0x2d')]!==_0xc3f4('0x3c')){var _0xc9354d={};_0xc9354d[_0x1f79a3[_0xc3f4('0x26')]]={'$like':'%'+_0x37aa01[_0xc3f4('0x30')][_0xc3f4('0x3b')]+'%'};return _0xc9354d;}})});}_0x328de3=_['merge']({},_0x328de3,_0x37aa01[_0xc3f4('0x3d')]);var _0x32f268={'where':_0x328de3[_0xc3f4('0x39')]};return db[_0xc3f4('0x2a')]['count'](_0x32f268)[_0xc3f4('0x22')](function(_0x478006){_0x37af8b[_0xc3f4('0x3e')]=_0x478006;if(_0x37aa01[_0xc3f4('0x30')][_0xc3f4('0x3f')]){_0x328de3[_0xc3f4('0x40')]=[{'all':!![]}];}return db[_0xc3f4('0x2a')][_0xc3f4('0x41')](_0x328de3);})[_0xc3f4('0x22')](function(_0x4f6640){_0x37af8b['rows']=_0x4f6640;return _0x37af8b;})[_0xc3f4('0x22')](respondWithFilteredResult(_0x1b98b0,_0x328de3))['catch'](handleError(_0x1b98b0,null));};exports[_0xc3f4('0x42')]=function(_0x1b6836,_0x1d046f){var _0x1960f0={'raw':!![],'where':{'id':_0x1b6836['params']['id']}},_0x460348={};_0x460348[_0xc3f4('0x2f')]=_['keys'](db[_0xc3f4('0x2a')][_0xc3f4('0x2b')]);_0x460348['query']=_['keys'](_0x1b6836[_0xc3f4('0x30')]);_0x460348['filters']=_[_0xc3f4('0x33')](_0x460348[_0xc3f4('0x2f')],_0x460348['query']);_0x1960f0[_0xc3f4('0x32')]=_[_0xc3f4('0x33')](_0x460348[_0xc3f4('0x2f')],qs['fields'](_0x1b6836[_0xc3f4('0x30')][_0xc3f4('0x34')]));_0x1960f0[_0xc3f4('0x32')]=_0x1960f0['attributes'][_0xc3f4('0x43')]?_0x1960f0[_0xc3f4('0x32')]:_0x460348[_0xc3f4('0x2f')];if(_0x1b6836[_0xc3f4('0x30')][_0xc3f4('0x3f')]){_0x1960f0[_0xc3f4('0x40')]=[{'all':!![]}];}_0x1960f0=_['merge']({},_0x1960f0,_0x1b6836[_0xc3f4('0x3d')]);return db[_0xc3f4('0x2a')]['find'](_0x1960f0)[_0xc3f4('0x22')](handleEntityNotFound(_0x1d046f,null))[_0xc3f4('0x22')](respondWithResult(_0x1d046f,null))[_0xc3f4('0x44')](handleError(_0x1d046f,null));};exports[_0xc3f4('0x45')]=function(_0x2c694a,_0x35ba53){return db[_0xc3f4('0x2a')]['create'](_0x2c694a[_0xc3f4('0x46')],{})[_0xc3f4('0x22')](respondWithResult(_0x35ba53,0xc9))[_0xc3f4('0x44')](handleError(_0x35ba53,null));};exports[_0xc3f4('0x47')]=function(_0x46a237,_0x5207eb){if(_0x46a237[_0xc3f4('0x46')]['id']){delete _0x46a237[_0xc3f4('0x46')]['id'];}return db[_0xc3f4('0x2a')]['find']({'where':{'id':_0x46a237[_0xc3f4('0x48')]['id']}})['then'](handleEntityNotFound(_0x5207eb,null))['then'](saveUpdates(_0x46a237[_0xc3f4('0x46')],null))[_0xc3f4('0x22')](respondWithResult(_0x5207eb,null))[_0xc3f4('0x44')](handleError(_0x5207eb,null));};exports[_0xc3f4('0x49')]=function(_0x1a0063,_0x56837d){return db[_0xc3f4('0x2a')][_0xc3f4('0x4a')]({'where':{'id':_0x1a0063[_0xc3f4('0x48')]['id']}})[_0xc3f4('0x22')](handleEntityNotFound(_0x56837d,null))[_0xc3f4('0x22')](removeEntity(_0x56837d,null))[_0xc3f4('0x44')](handleError(_0x56837d,null));};exports[_0xc3f4('0x4b')]=function(_0x365993,_0x2e2e99,_0xf8e106){return db[_0xc3f4('0x2a')][_0xc3f4('0x4a')]({'where':{'id':_0x365993['params']['id']},'attributes':['id',_0xc3f4('0x4c'),'msg_id']})[_0xc3f4('0x22')](handleEntityNotFound(_0x2e2e99,null))[_0xc3f4('0x22')](function(_0x1716a3){if(_0x1716a3){if(!_0x1716a3[_0xc3f4('0x4c')]){throw new db[(_0xc3f4('0x4d'))]['ValidationError'](_0xc3f4('0x4e'));}var _0x229bbe={'Content-Type':_0xc3f4('0x4f'),'Content-Disposition':_0xc3f4('0x50')};if(_0x1716a3[_0xc3f4('0x51')]){_0x229bbe[_0xc3f4('0x52')]=_0xc3f4('0x53')+_0x1716a3[_0xc3f4('0x51')]+_0xc3f4('0x54');}_0x2e2e99['set'](_0x229bbe);return _0x2e2e99[_0xc3f4('0x27')](new Buffer(_0x1716a3[_0xc3f4('0x4c')]));}})[_0xc3f4('0x44')](handleError(_0x2e2e99,null));};
\ No newline at end of file
index 8d540ff..d42f924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ec=['api','moment','request-promise','path','../../config/environment','exports','define','VoiceMailMessage','dir','lodash','util','../../config/logger'];(function(_0x57a402,_0x40596b){var _0x753a36=function(_0x13b76b){while(--_0x13b76b){_0x57a402['push'](_0x57a402['shift']());}};_0x753a36(++_0x40596b);}(_0x72ec,0xd5));var _0xc72e=function(_0x5b7e20,_0x17cfec){_0x5b7e20=_0x5b7e20-0x0;var _0x57eddf=_0x72ec[_0x5b7e20];return _0x57eddf;};'use strict';var _=require(_0xc72e('0x0'));var util=require(_0xc72e('0x1'));var logger=require(_0xc72e('0x2'))(_0xc72e('0x3'));var moment=require(_0xc72e('0x4'));var BPromise=require('bluebird');var rp=require(_0xc72e('0x5'));var fs=require('fs');var path=require(_0xc72e('0x6'));var rimraf=require('rimraf');var config=require(_0xc72e('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0xc72e('0x8')]=function(_0x257eb8,_0x223720){return _0x257eb8[_0xc72e('0x9')](_0xc72e('0xa'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':'dir','fields':[_0xc72e('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x031d=['./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x510ab3,_0x51e30f){var _0x552438=function(_0xcae78d){while(--_0xcae78d){_0x510ab3['push'](_0x510ab3['shift']());}};_0x552438(++_0x51e30f);}(_0x031d,0x144));var _0xd031=function(_0x3f6bcf,_0x531e79){_0x3f6bcf=_0x3f6bcf-0x0;var _0x1c5350=_0x031d[_0x3f6bcf];return _0x1c5350;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd031('0x0'))(_0xd031('0x1'));var moment=require('moment');var BPromise=require(_0xd031('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd031('0x3'));var rimraf=require(_0xd031('0x4'));var config=require(_0xd031('0x5'));var attributes=require(_0xd031('0x6'));module[_0xd031('0x7')]=function(_0x35facd,_0x23a422){return _0x35facd[_0xd031('0x8')]('VoiceMailMessage',attributes,{'tableName':_0xd031('0x9'),'paranoid':![],'indexes':[{'name':_0xd031('0xa'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
index 1959bc1..d6e0ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4149=['request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','VoiceMailMessage,\x20%s,\x20%s'];(function(_0x253935,_0x43d337){var _0x4680b6=function(_0x43e53b){while(--_0x43e53b){_0x253935['push'](_0x253935['shift']());}};_0x4680b6(++_0x43d337);}(_0x4149,0x184));var _0x9414=function(_0x1c3353,_0x3e9185){_0x1c3353=_0x1c3353-0x0;var _0x33ad22=_0x4149[_0x1c3353];return _0x33ad22;};'use strict';var _=require(_0x9414('0x0'));var util=require('util');var moment=require(_0x9414('0x1'));var BPromise=require('bluebird');var rs=require(_0x9414('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9414('0x3'))['db'];var utils=require(_0x9414('0x4'));var logger=require(_0x9414('0x5'))('rpc');var config=require(_0x9414('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9414('0x7')][_0x9414('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2f6498,_0x368d60,_0x30744a){return new BPromise(function(_0x4b26cc,_0x3c3204){return client['request'](_0x2f6498,_0x30744a)['then'](function(_0x5d7e96){logger[_0x9414('0x9')](_0x9414('0xa'),_0x368d60,_0x9414('0xb'));logger[_0x9414('0xc')](_0x9414('0xd'),_0x368d60,'request\x20sent',JSON[_0x9414('0xe')](_0x5d7e96));if(_0x5d7e96[_0x9414('0xf')]){if(_0x5d7e96['error'][_0x9414('0x10')]===0x1f4){logger[_0x9414('0xf')](_0x9414('0xa'),_0x368d60,_0x5d7e96['error']['message']);return _0x3c3204(_0x5d7e96['error']['message']);}logger[_0x9414('0xf')](_0x9414('0xa'),_0x368d60,_0x5d7e96[_0x9414('0xf')][_0x9414('0x11')]);return _0x4b26cc(_0x5d7e96['error']['message']);}else{logger[_0x9414('0x9')](_0x9414('0xa'),_0x368d60,_0x9414('0xb'));_0x4b26cc(_0x5d7e96[_0x9414('0x12')][_0x9414('0x11')]);}})['catch'](function(_0x45dc1d){logger[_0x9414('0xf')]('VoiceMailMessage,\x20%s,\x20%s',_0x368d60,_0x45dc1d);_0x3c3204(_0x45dc1d);});});}
\ No newline at end of file
+var _0xdb97=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x186d17,_0x9fa8ef){var _0x5d4b89=function(_0x57bd70){while(--_0x57bd70){_0x186d17['push'](_0x186d17['shift']());}};_0x5d4b89(++_0x9fa8ef);}(_0xdb97,0x14f));var _0x7db9=function(_0x42a3d3,_0x49e654){_0x42a3d3=_0x42a3d3-0x0;var _0x4e19c6=_0xdb97[_0x42a3d3];return _0x4e19c6;};'use strict';var _=require(_0x7db9('0x0'));var util=require(_0x7db9('0x1'));var moment=require(_0x7db9('0x2'));var BPromise=require(_0x7db9('0x3'));var rs=require(_0x7db9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7db9('0x5'))['db'];var utils=require(_0x7db9('0x6'));var logger=require(_0x7db9('0x7'))(_0x7db9('0x8'));var config=require(_0x7db9('0x9'));var jayson=require(_0x7db9('0xa'));var client=jayson[_0x7db9('0xb')][_0x7db9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4499fe,_0x1e424d,_0x4cb672){return new BPromise(function(_0x4d40c1,_0x37b3b4){return client[_0x7db9('0xd')](_0x4499fe,_0x4cb672)[_0x7db9('0xe')](function(_0x5da5f7){logger[_0x7db9('0xf')](_0x7db9('0x10'),_0x1e424d,'request\x20sent');logger[_0x7db9('0x11')](_0x7db9('0x12'),_0x1e424d,_0x7db9('0x13'),JSON[_0x7db9('0x14')](_0x5da5f7));if(_0x5da5f7[_0x7db9('0x15')]){if(_0x5da5f7['error'][_0x7db9('0x16')]===0x1f4){logger[_0x7db9('0x15')](_0x7db9('0x10'),_0x1e424d,_0x5da5f7[_0x7db9('0x15')]['message']);return _0x37b3b4(_0x5da5f7['error']['message']);}logger[_0x7db9('0x15')]('VoiceMailMessage,\x20%s,\x20%s',_0x1e424d,_0x5da5f7[_0x7db9('0x15')][_0x7db9('0x17')]);return _0x4d40c1(_0x5da5f7['error']['message']);}else{logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x1e424d,_0x7db9('0x13'));_0x4d40c1(_0x5da5f7[_0x7db9('0x18')]['message']);}})[_0x7db9('0x19')](function(_0x11ccc0){logger[_0x7db9('0x15')](_0x7db9('0x10'),_0x1e424d,_0x11ccc0);_0x37b3b4(_0x11ccc0);});});}
\ No newline at end of file
index b5e2cdf..cbfbd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadef=['get','isAuthenticated','index','/:id/sounds','create','/:id','destroy','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceMusicOnHold.controller'];(function(_0x10d75d,_0x137376){var _0x4bf8a1=function(_0x590c50){while(--_0x590c50){_0x10d75d['push'](_0x10d75d['shift']());}};_0x4bf8a1(++_0x137376);}(_0xadef,0x16e));var _0xfade=function(_0x5b5347,_0x3c9cbd){_0x5b5347=_0x5b5347-0x0;var _0x2a6698=_0xadef[_0x5b5347];return _0x2a6698;};'use strict';var multer=require(_0xfade('0x0'));var util=require(_0xfade('0x1'));var path=require(_0xfade('0x2'));var timeout=require(_0xfade('0x3'));var express=require('express');var router=express[_0xfade('0x4')]();var fs_extra=require(_0xfade('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfade('0x6'));var config=require('../../config/environment');var controller=require(_0xfade('0x7'));router[_0xfade('0x8')]('/',auth[_0xfade('0x9')](),controller[_0xfade('0xa')]);router['get']('/:id',auth[_0xfade('0x9')](),controller['show']);router[_0xfade('0x8')](_0xfade('0xb'),auth[_0xfade('0x9')](),controller['getSounds']);router['post']('/',auth[_0xfade('0x9')](),controller[_0xfade('0xc')]);router['post'](_0xfade('0xb'),auth[_0xfade('0x9')](),controller['addSound']);router['put'](_0xfade('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xfade('0xd'),auth[_0xfade('0x9')](),controller[_0xfade('0xe')]);router['delete'](_0xfade('0xf'),auth[_0xfade('0x9')](),controller[_0xfade('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x3895=['/:id/sounds/:id2','removeSound','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','delete','destroy'];(function(_0x227b64,_0x1c6f72){var _0xc84cb5=function(_0x12e690){while(--_0x12e690){_0x227b64['push'](_0x227b64['shift']());}};_0xc84cb5(++_0x1c6f72);}(_0x3895,0x193));var _0x5389=function(_0x3845bb,_0x2d432c){_0x3845bb=_0x3845bb-0x0;var _0x43d93b=_0x3895[_0x3845bb];return _0x43d93b;};'use strict';var multer=require(_0x5389('0x0'));var util=require(_0x5389('0x1'));var path=require('path');var timeout=require(_0x5389('0x2'));var express=require('express');var router=express[_0x5389('0x3')]();var fs_extra=require(_0x5389('0x4'));var auth=require(_0x5389('0x5'));var interaction=require(_0x5389('0x6'));var config=require(_0x5389('0x7'));var controller=require(_0x5389('0x8'));router[_0x5389('0x9')]('/',auth[_0x5389('0xa')](),controller[_0x5389('0xb')]);router[_0x5389('0x9')](_0x5389('0xc'),auth[_0x5389('0xa')](),controller[_0x5389('0xd')]);router[_0x5389('0x9')](_0x5389('0xe'),auth[_0x5389('0xa')](),controller[_0x5389('0xf')]);router[_0x5389('0x10')]('/',auth[_0x5389('0xa')](),controller[_0x5389('0x11')]);router[_0x5389('0x10')](_0x5389('0xe'),auth[_0x5389('0xa')](),controller[_0x5389('0x12')]);router[_0x5389('0x13')](_0x5389('0xc'),auth[_0x5389('0xa')](),controller['update']);router[_0x5389('0x14')](_0x5389('0xc'),auth[_0x5389('0xa')](),controller[_0x5389('0x15')]);router[_0x5389('0x14')](_0x5389('0x16'),auth['isAuthenticated'](),controller[_0x5389('0x17')]);module[_0x5389('0x18')]=router;
\ No newline at end of file
index b410990..1df7522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb848=['files','mp3nb','quietmp3nb','quietmp3','mp3','alpha','TIMESTAMP','sequelize','STRING','name','ENUM','custom'];(function(_0x5220f5,_0x2a499a){var _0x29997b=function(_0x3bcc98){while(--_0x3bcc98){_0x5220f5['push'](_0x5220f5['shift']());}};_0x29997b(++_0x2a499a);}(_0xb848,0x127));var _0x8b84=function(_0x3c2507,_0x457a90){_0x3c2507=_0x3c2507-0x0;var _0x316d6c=_0xb848[_0x3c2507];return _0x316d6c;};'use strict';var Sequelize=require(_0x8b84('0x0'));module['exports']={'name':{'type':Sequelize[_0x8b84('0x1')],'allowNull':![],'unique':_0x8b84('0x2')},'mode':{'type':Sequelize[_0x8b84('0x3')](_0x8b84('0x4'),_0x8b84('0x5'),_0x8b84('0x6'),_0x8b84('0x7'),_0x8b84('0x8'),_0x8b84('0x9')),'allowNull':!![],'defaultValue':_0x8b84('0x5')},'directory':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x8b84('0x1')],'allowNull':!![],'defaultValue':_0x8b84('0xa')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x8b84('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x28d7=['files','mp3nb','quietmp3nb','quietmp3','TIMESTAMP','sequelize','STRING','name','ENUM','custom'];(function(_0x11f434,_0x1e9d8a){var _0x579c3c=function(_0x508aa6){while(--_0x508aa6){_0x11f434['push'](_0x11f434['shift']());}};_0x579c3c(++_0x1e9d8a);}(_0x28d7,0x195));var _0x728d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28d7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x728d('0x0'));module['exports']={'name':{'type':Sequelize[_0x728d('0x1')],'allowNull':![],'unique':_0x728d('0x2')},'mode':{'type':Sequelize[_0x728d('0x3')](_0x728d('0x4'),_0x728d('0x5'),_0x728d('0x6'),_0x728d('0x7'),_0x728d('0x8'),'mp3'),'allowNull':!![],'defaultValue':_0x728d('0x5')},'directory':{'type':Sequelize[_0x728d('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x728d('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x728d('0x1')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x728d('0x1')],'allowNull':!![]},'stamp':{'type':_0x728d('0x9')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 46a66ee..2a7d2ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b9=['fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','intersection','length','find','body','create','sequelize','transaction','files','root','mode','mkdirSync','directory','user','get','UserProfileSection','MusicOnHolds','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','join','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','converted_format','symlinkSync','id2','unlinkSync','getSounds','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','reject','then','destroy','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query'];(function(_0x16ddd5,_0x50df63){var _0x286946=function(_0x4b85ed){while(--_0x4b85ed){_0x16ddd5['push'](_0x16ddd5['shift']());}};_0x286946(++_0x50df63);}(_0x14b9,0x185));var _0x914b=function(_0x4f4bd5,_0x1c3f77){_0x4f4bd5=_0x4f4bd5-0x0;var _0x3837a6=_0x14b9[_0x4f4bd5];return _0x3837a6;};'use strict';var emlformat=require(_0x914b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x914b('0x1'));var jsonpatch=require(_0x914b('0x2'));var rp=require(_0x914b('0x3'));var moment=require('moment');var BPromise=require(_0x914b('0x4'));var Mustache=require(_0x914b('0x5'));var util=require('util');var path=require(_0x914b('0x6'));var sox=require(_0x914b('0x7'));var csv=require(_0x914b('0x8'));var ejs=require(_0x914b('0x9'));var fs=require('fs');var fs_extra=require(_0x914b('0xa'));var _=require(_0x914b('0xb'));var squel=require(_0x914b('0xc'));var crypto=require('crypto');var jsforce=require(_0x914b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x914b('0x8'));var querystring=require(_0x914b('0xe'));var Papa=require(_0x914b('0xf'));var Redis=require('ioredis');var authService=require(_0x914b('0x10'));var qs=require(_0x914b('0x11'));var as=require(_0x914b('0x12'));var hardwareService=require(_0x914b('0x13'));var logger=require(_0x914b('0x14'))(_0x914b('0x15'));var utils=require(_0x914b('0x16'));var config=require(_0x914b('0x17'));var licenseUtil=require(_0x914b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a92ee,_0xa91af0){_0xa91af0=_0xa91af0||0xcc;return function(_0x1b840e){if(_0x1b840e){return _0x1a92ee[_0x914b('0x19')](_0xa91af0);}return _0x1a92ee[_0x914b('0x1a')](_0xa91af0)[_0x914b('0x1b')]();};}function respondWithResult(_0x64be8c,_0x54ea4c){_0x54ea4c=_0x54ea4c||0xc8;return function(_0x241b07){if(_0x241b07){return _0x64be8c[_0x914b('0x1a')](_0x54ea4c)['json'](_0x241b07);}};}function respondWithFilteredResult(_0x243251,_0x1de482){return function(_0x2eade4){if(_0x2eade4){var _0x2d71fd=typeof _0x1de482['offset']===_0x914b('0x1c')&&typeof _0x1de482[_0x914b('0x1d')]===_0x914b('0x1c');var _0xe8987e=_0x2eade4[_0x914b('0x1e')];var _0x58be0b=_0x2d71fd?0x0:_0x1de482[_0x914b('0x1f')];var _0x385bd6=_0x2d71fd?_0x2eade4[_0x914b('0x1e')]:_0x1de482['offset']+_0x1de482[_0x914b('0x1d')];var _0xb00d12;if(_0x385bd6>=_0xe8987e){_0x385bd6=_0xe8987e;_0xb00d12=0xc8;}else{_0xb00d12=0xce;}_0x243251[_0x914b('0x1a')](_0xb00d12);return _0x243251[_0x914b('0x20')](_0x914b('0x21'),_0x58be0b+'-'+_0x385bd6+'/'+_0xe8987e)['json'](_0x2eade4);}return null;};}function patchUpdates(_0x25c154){return function(_0x5225b8){try{jsonpatch['apply'](_0x5225b8,_0x25c154,!![]);}catch(_0x497c5e){return BPromise[_0x914b('0x22')](_0x497c5e);}return _0x5225b8['save']();};}function saveUpdates(_0x3fd999,_0x2b1c68){return function(_0x377982){if(_0x377982){return _0x377982['update'](_0x3fd999)[_0x914b('0x23')](function(_0x475afd){return _0x475afd;});}return null;};}function removeEntity(_0x3276a1,_0x5e1bcd){return function(_0xe454c4){if(_0xe454c4){return _0xe454c4[_0x914b('0x24')]()[_0x914b('0x23')](function(){var _0x41f4b8=_0xe454c4['get']({'plain':!![]});var _0x4bb673='MusicOnHolds';return db[_0x914b('0x25')]['destroy']({'where':{'type':_0x4bb673,'resourceId':_0x41f4b8['id']}})[_0x914b('0x23')](function(){return _0xe454c4;});})[_0x914b('0x23')](function(){_0x3276a1[_0x914b('0x1a')](0xcc)[_0x914b('0x1b')]();});}};}function handleEntityNotFound(_0x1d85b0,_0x3e24e6){return function(_0xb3035c){if(!_0xb3035c){_0x1d85b0['sendStatus'](0x194);}return _0xb3035c;};}function handleError(_0x257898,_0x2c2194){_0x2c2194=_0x2c2194||0x1f4;return function(_0x5ba40f){logger[_0x914b('0x26')](_0x5ba40f[_0x914b('0x27')]);if(_0x5ba40f[_0x914b('0x28')]){delete _0x5ba40f[_0x914b('0x28')];}_0x257898[_0x914b('0x1a')](_0x2c2194)[_0x914b('0x29')](_0x5ba40f);};}exports[_0x914b('0x2a')]=function(_0x34ea6f,_0x3d3ca1){var _0x3379ef={},_0x46db2a={},_0x3ab276={'count':0x0,'rows':[]};var _0x2a3b85=_[_0x914b('0x2b')](db[_0x914b('0x2c')][_0x914b('0x2d')],function(_0x5dfad2){return{'name':_0x5dfad2[_0x914b('0x2e')],'type':_0x5dfad2[_0x914b('0x2f')][_0x914b('0x30')]};});_0x46db2a[_0x914b('0x31')]=_[_0x914b('0x2b')](_0x2a3b85,'name');_0x46db2a[_0x914b('0x32')]=_['keys'](_0x34ea6f[_0x914b('0x32')]);_0x46db2a['filters']=_['intersection'](_0x46db2a[_0x914b('0x31')],_0x46db2a[_0x914b('0x32')]);_0x3379ef['attributes']=_['intersection'](_0x46db2a[_0x914b('0x31')],qs[_0x914b('0x33')](_0x34ea6f[_0x914b('0x32')]['fields']));_0x3379ef[_0x914b('0x34')]=_0x3379ef['attributes']['length']?_0x3379ef[_0x914b('0x34')]:_0x46db2a[_0x914b('0x31')];if(!_0x34ea6f[_0x914b('0x32')][_0x914b('0x35')](_0x914b('0x36'))){_0x3379ef[_0x914b('0x1d')]=qs[_0x914b('0x1d')](_0x34ea6f[_0x914b('0x32')][_0x914b('0x1d')]);_0x3379ef[_0x914b('0x1f')]=qs['offset'](_0x34ea6f['query'][_0x914b('0x1f')]);}_0x3379ef[_0x914b('0x37')]=qs[_0x914b('0x38')](_0x34ea6f[_0x914b('0x32')]['sort']);delete _0x34ea6f['query'][_0x914b('0x38')];_0x3379ef[_0x914b('0x39')]=qs[_0x914b('0x3a')](_[_0x914b('0x3b')](_0x34ea6f[_0x914b('0x32')],_0x46db2a[_0x914b('0x3a')]),_0x2a3b85);if(_0x34ea6f[_0x914b('0x32')][_0x914b('0x3c')]){_0x3379ef[_0x914b('0x39')]=_[_0x914b('0x3d')](_0x3379ef[_0x914b('0x39')],{'$or':_['map'](_0x2a3b85,function(_0x2ab58b){if(_0x2ab58b[_0x914b('0x2f')]!==_0x914b('0x3e')){var _0x326af5={};_0x326af5[_0x2ab58b[_0x914b('0x28')]]={'$like':'%'+_0x34ea6f[_0x914b('0x32')]['filter']+'%'};return _0x326af5;}})});}_0x3379ef=_['merge']({},_0x3379ef,_0x34ea6f[_0x914b('0x3f')]);var _0xcd066={'where':_0x3379ef[_0x914b('0x39')]};return db[_0x914b('0x2c')][_0x914b('0x1e')](_0xcd066)['then'](function(_0x39014f){_0x3ab276[_0x914b('0x1e')]=_0x39014f;if(_0x34ea6f[_0x914b('0x32')][_0x914b('0x40')]){_0x3379ef['include']=[{'all':!![]}];}return db[_0x914b('0x2c')][_0x914b('0x41')](_0x3379ef);})[_0x914b('0x23')](function(_0x98b83b){_0x3ab276[_0x914b('0x42')]=_0x98b83b;return _0x3ab276;})[_0x914b('0x23')](respondWithFilteredResult(_0x3d3ca1,_0x3379ef))[_0x914b('0x43')](handleError(_0x3d3ca1,null));};exports[_0x914b('0x44')]=function(_0x4de5ce,_0x1a7132){var _0x18961e={'raw':![],'where':{'id':_0x4de5ce[_0x914b('0x45')]['id']}},_0x532450={};_0x532450['model']=_[_0x914b('0x46')](db['VoiceMusicOnHold'][_0x914b('0x2d')]);_0x532450[_0x914b('0x32')]=_[_0x914b('0x46')](_0x4de5ce['query']);_0x532450[_0x914b('0x3a')]=_[_0x914b('0x47')](_0x532450[_0x914b('0x31')],_0x532450[_0x914b('0x32')]);_0x18961e[_0x914b('0x34')]=_['intersection'](_0x532450[_0x914b('0x31')],qs[_0x914b('0x33')](_0x4de5ce[_0x914b('0x32')][_0x914b('0x33')]));_0x18961e[_0x914b('0x34')]=_0x18961e['attributes'][_0x914b('0x48')]?_0x18961e[_0x914b('0x34')]:_0x532450[_0x914b('0x31')];if(_0x4de5ce['query']['includeAll']){_0x18961e['include']=[{'all':!![]}];}_0x18961e=_[_0x914b('0x3d')]({},_0x18961e,_0x4de5ce[_0x914b('0x3f')]);return db[_0x914b('0x2c')][_0x914b('0x49')](_0x18961e)[_0x914b('0x23')](handleEntityNotFound(_0x1a7132,null))[_0x914b('0x23')](respondWithResult(_0x1a7132,null))[_0x914b('0x43')](handleError(_0x1a7132,null));};exports['update']=function(_0x17cd7e,_0x4072e4){if(_0x17cd7e[_0x914b('0x4a')]['id']){delete _0x17cd7e[_0x914b('0x4a')]['id'];}return db['VoiceMusicOnHold'][_0x914b('0x49')]({'where':{'id':_0x17cd7e['params']['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x4072e4,null))[_0x914b('0x23')](saveUpdates(_0x17cd7e['body'],null))[_0x914b('0x23')](respondWithResult(_0x4072e4,null))[_0x914b('0x43')](handleError(_0x4072e4,null));};exports[_0x914b('0x4b')]=function(_0x5e48ec,_0x475ef3,_0x31dab7){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x572843){if(_0x5e48ec[_0x914b('0x4a')]['mode']===_0x914b('0x4e')){_0x5e48ec['body']['directory']=path['join'](config[_0x914b('0x4f')],'server/files/moh',_0x5e48ec['body'][_0x914b('0x28')]);}return db['VoiceMusicOnHold'][_0x914b('0x4b')](_0x5e48ec['body'],{'transaction':_0x572843})['then'](function(_0x4b8548){if(_0x5e48ec[_0x914b('0x4a')][_0x914b('0x50')]==='files'){fs[_0x914b('0x51')](_0x4b8548[_0x914b('0x52')],parseInt('0777',0x8));}var _0x4e1697=_0x5e48ec[_0x914b('0x53')]['get']({'plain':!![]});if(!_0x4e1697)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e1697['role']===_0x914b('0x53')){var _0x5a8d77=_0x4b8548[_0x914b('0x54')]({'plain':!![]});return db[_0x914b('0x55')]['find']({'where':{'name':_0x914b('0x56'),'userProfileId':_0x4e1697[_0x914b('0x57')]},'raw':!![]})['then'](function(_0x2bc4c8){if(_0x2bc4c8&&_0x2bc4c8['autoAssociation']===0x0){return db['UserProfileResource'][_0x914b('0x4b')]({'name':_0x5a8d77[_0x914b('0x28')],'resourceId':_0x5a8d77['id'],'type':_0x2bc4c8['name'],'sectionId':_0x2bc4c8['id']},{})[_0x914b('0x23')](function(){return _0x4b8548;});}else{return _0x4b8548;}})[_0x914b('0x43')](function(_0x4a5e09){logger[_0x914b('0x26')](_0x914b('0x58'),_0x4a5e09);});}return _0x4b8548;});})[_0x914b('0x23')](respondWithResult(_0x475ef3,0xc9))[_0x914b('0x43')](handleError(_0x475ef3,null));};exports[_0x914b('0x24')]=function(_0x5b37a2,_0x4369b1,_0x5707ce){var _0x397946;return db['VoiceMusicOnHold'][_0x914b('0x49')]({'where':{'id':_0x5b37a2[_0x914b('0x45')]['id']}})[_0x914b('0x23')](function(_0x3956e2){if(_0x3956e2){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x4455c4){return _0x3956e2[_0x914b('0x24')]({'transaction':_0x4455c4,'raw':!![]})[_0x914b('0x23')](function(_0x22ae5b){if(_0x22ae5b[_0x914b('0x52')]){fs[_0x914b('0x59')](_0x22ae5b['directory'])[_0x914b('0x5a')](function(_0xe0c303){fs['unlinkSync'](path[_0x914b('0x5b')](_0x22ae5b['directory'],_0xe0c303));});fs['rmdirSync'](_0x22ae5b[_0x914b('0x52')]);}return _0x22ae5b;});})['catch'](function(_0x5ebe31){throw new db[(_0x914b('0x5c'))][(_0x914b('0x5d'))](_0x5ebe31[_0x914b('0x5e')]);});}})[_0x914b('0x23')](handleEntityNotFound(_0x4369b1,null))[_0x914b('0x23')](removeEntity(_0x4369b1,null))[_0x914b('0x43')](handleError(_0x4369b1,null));};exports['addSound']=function(_0x55300f,_0x44b840,_0x477531){return db[_0x914b('0x4c')]['transaction'](function(_0x16b5cf){var _0x21efd9;return db[_0x914b('0x2c')]['find']({'where':{'id':_0x55300f[_0x914b('0x45')]['id']}})[_0x914b('0x23')](function(_0x558ead){if(_0x558ead){_0x21efd9=_0x558ead;return _0x558ead[_0x914b('0x5f')](_0x55300f[_0x914b('0x4a')]['id'],{'transaction':_0x16b5cf});}})['then'](function(_0x2a8bc3){if(_0x2a8bc3){return db[_0x914b('0x60')][_0x914b('0x61')]({'where':{'id':_0x55300f[_0x914b('0x4a')]['id']},'attributes':['id',_0x914b('0x28'),_0x914b('0x62'),'converted_format',_0x914b('0x63')],'raw':!![]});}})[_0x914b('0x23')](function(_0x18fbce){if(_0x18fbce){var _0x37ce36=path[_0x914b('0x5b')](config[_0x914b('0x4f')],_0x914b('0x64'),util[_0x914b('0x65')](_0x914b('0x66'),path[_0x914b('0x67')](_0x18fbce[_0x914b('0x62')],path[_0x914b('0x68')](_0x18fbce[_0x914b('0x62')])),_0x18fbce['converted_format']));var _0x4123c0=path[_0x914b('0x5b')](config[_0x914b('0x4f')],'server/files/moh',_0x21efd9[_0x914b('0x28')],util[_0x914b('0x65')](_0x914b('0x66'),_0x18fbce['name'],_0x18fbce[_0x914b('0x69')]));fs[_0x914b('0x6a')](_0x37ce36,_0x4123c0);return _0x18fbce;}})['catch'](function(_0x11b4d8){throw new db[(_0x914b('0x5c'))]['ValidationError'](_0x11b4d8['message']);});})[_0x914b('0x23')](handleEntityNotFound(_0x44b840,null))[_0x914b('0x23')](respondWithResult(_0x44b840,0xc9))[_0x914b('0x43')](handleError(_0x44b840,null));};exports['removeSound']=function(_0x30d37f,_0x11c51a,_0x52b884){return db[_0x914b('0x4c')][_0x914b('0x4d')](function(_0x375e1f){var _0x216ed1;return db[_0x914b('0x2c')][_0x914b('0x61')]({'where':{'id':_0x30d37f[_0x914b('0x45')]['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x11c51a,null))[_0x914b('0x23')](function(_0x5b20cd){if(_0x5b20cd){_0x216ed1=_0x5b20cd;return _0x5b20cd['removeSound'](_0x30d37f[_0x914b('0x45')][_0x914b('0x6b')]);}})[_0x914b('0x23')](function(_0x46f2b8){if(_0x46f2b8){return db['Sound']['findOne']({'where':{'id':_0x30d37f[_0x914b('0x45')]['id2']},'attributes':['id',_0x914b('0x28'),_0x914b('0x62'),_0x914b('0x69'),_0x914b('0x63')],'raw':!![]});}})[_0x914b('0x23')](function(_0x146732){if(_0x146732){fs[_0x914b('0x6c')](path[_0x914b('0x5b')](_0x216ed1[_0x914b('0x52')],util[_0x914b('0x65')]('%s.%s',_0x146732['name'],_0x146732[_0x914b('0x69')])));return _0x146732;}})['catch'](function(_0x3ed49d){throw new db[(_0x914b('0x5c'))][(_0x914b('0x5d'))](_0x3ed49d['message']);});})['then'](handleEntityNotFound(_0x11c51a,null))[_0x914b('0x23')](respondWithStatusCode(_0x11c51a,0xcc))[_0x914b('0x43')](handleError(_0x11c51a,null));};exports[_0x914b('0x6d')]=function(_0x54bf03,_0x20a15e,_0x13c408){var _0x13dd52={};var _0x1fc683={};var _0x5dd747;var _0x42234d;return db['VoiceMusicOnHold'][_0x914b('0x61')]({'where':{'id':_0x54bf03[_0x914b('0x45')]['id']}})[_0x914b('0x23')](handleEntityNotFound(_0x20a15e,null))[_0x914b('0x23')](function(_0x30689b){if(_0x30689b){_0x5dd747=_0x30689b;_0x1fc683[_0x914b('0x31')]=_['keys'](db[_0x914b('0x60')][_0x914b('0x2d')]);_0x1fc683[_0x914b('0x32')]=_[_0x914b('0x46')](_0x54bf03[_0x914b('0x32')]);_0x1fc683[_0x914b('0x3a')]=_['intersection'](_0x1fc683[_0x914b('0x31')],_0x1fc683['query']);_0x13dd52[_0x914b('0x34')]=_[_0x914b('0x47')](_0x1fc683[_0x914b('0x31')],qs[_0x914b('0x33')](_0x54bf03['query'][_0x914b('0x33')]));_0x13dd52[_0x914b('0x34')]=_0x13dd52[_0x914b('0x34')]['length']?_0x13dd52['attributes']:_0x1fc683['model'];_0x13dd52[_0x914b('0x37')]=qs[_0x914b('0x38')](_0x54bf03[_0x914b('0x32')][_0x914b('0x38')]);_0x13dd52[_0x914b('0x39')]=qs[_0x914b('0x3a')](_[_0x914b('0x3b')](_0x54bf03[_0x914b('0x32')],_0x1fc683[_0x914b('0x3a')]));if(_0x54bf03[_0x914b('0x32')][_0x914b('0x3c')]){_0x13dd52[_0x914b('0x39')]=_['merge'](_0x13dd52[_0x914b('0x39')],{'$or':_[_0x914b('0x2b')](_0x13dd52[_0x914b('0x34')],function(_0x244fe2){var _0x12d471={};_0x12d471[_0x244fe2]={'$like':'%'+_0x54bf03[_0x914b('0x32')]['filter']+'%'};return _0x12d471;})});}_0x13dd52=_[_0x914b('0x3d')]({},_0x13dd52,_0x54bf03[_0x914b('0x3f')]);return _0x5dd747[_0x914b('0x6d')](_0x13dd52);}})['then'](function(_0x1f3757){if(_0x1f3757){_0x42234d=_0x1f3757[_0x914b('0x48')];if(!_0x54bf03[_0x914b('0x32')][_0x914b('0x35')](_0x914b('0x36'))){_0x13dd52[_0x914b('0x1d')]=qs[_0x914b('0x1d')](_0x54bf03[_0x914b('0x32')][_0x914b('0x1d')]);_0x13dd52['offset']=qs[_0x914b('0x1f')](_0x54bf03[_0x914b('0x32')]['offset']);}return _0x5dd747[_0x914b('0x6d')](_0x13dd52);}})['then'](function(_0x10ae1b){if(_0x10ae1b){return _0x10ae1b?{'count':_0x42234d,'rows':_0x10ae1b}:null;}})[_0x914b('0x23')](respondWithResult(_0x20a15e,null))[_0x914b('0x43')](handleError(_0x20a15e,null));};
\ No newline at end of file
+var _0x1889=['order','sort','where','pick','merge','filter','options','includeAll','findAll','rows','catch','show','params','include','find','body','create','sequelize','transaction','mode','directory','join','root','server/files/moh','files','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','readdirSync','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','format','%s.%s','save_name','extname','converted_format','symlinkSync','removeSound','id2','Sound','createdAt','getSounds','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','count','offset','set','json','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','stack','name','index','map','VoiceMusicOnHold','rawAttributes','type','key','keys','filters','intersection','model','query','attributes','fields','length','limit'];(function(_0x5c1345,_0x5314a9){var _0x14fa55=function(_0x3123e2){while(--_0x3123e2){_0x5c1345['push'](_0x5c1345['shift']());}};_0x14fa55(++_0x5314a9);}(_0x1889,0x179));var _0x9188=function(_0x9284b8,_0x166caf){_0x9284b8=_0x9284b8-0x0;var _0x318560=_0x1889[_0x9284b8];return _0x318560;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9188('0x0'));var zipdir=require(_0x9188('0x1'));var jsonpatch=require(_0x9188('0x2'));var rp=require(_0x9188('0x3'));var moment=require(_0x9188('0x4'));var BPromise=require(_0x9188('0x5'));var Mustache=require('mustache');var util=require(_0x9188('0x6'));var path=require('path');var sox=require(_0x9188('0x7'));var csv=require('to-csv');var ejs=require(_0x9188('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9188('0x9'));var crypto=require(_0x9188('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9188('0xb'));var toCsv=require(_0x9188('0xc'));var querystring=require(_0x9188('0xd'));var Papa=require(_0x9188('0xe'));var Redis=require(_0x9188('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9188('0x10'));var as=require(_0x9188('0x11'));var hardwareService=require(_0x9188('0x12'));var logger=require('../../config/logger')(_0x9188('0x13'));var utils=require('../../config/utils');var config=require(_0x9188('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9188('0x15'))['db'];function respondWithStatusCode(_0x222f18,_0x22d9f8){_0x22d9f8=_0x22d9f8||0xcc;return function(_0x528e97){if(_0x528e97){return _0x222f18[_0x9188('0x16')](_0x22d9f8);}return _0x222f18[_0x9188('0x17')](_0x22d9f8)[_0x9188('0x18')]();};}function respondWithResult(_0x2f6719,_0x3fbc66){_0x3fbc66=_0x3fbc66||0xc8;return function(_0x1ab699){if(_0x1ab699){return _0x2f6719[_0x9188('0x17')](_0x3fbc66)['json'](_0x1ab699);}};}function respondWithFilteredResult(_0x4fc100,_0x417c0c){return function(_0x150944){if(_0x150944){var _0x21909f=typeof _0x417c0c['offset']===_0x9188('0x19')&&typeof _0x417c0c['limit']===_0x9188('0x19');var _0xe36e19=_0x150944[_0x9188('0x1a')];var _0x3ab479=_0x21909f?0x0:_0x417c0c[_0x9188('0x1b')];var _0x3528ee=_0x21909f?_0x150944['count']:_0x417c0c[_0x9188('0x1b')]+_0x417c0c['limit'];var _0x31ba5c;if(_0x3528ee>=_0xe36e19){_0x3528ee=_0xe36e19;_0x31ba5c=0xc8;}else{_0x31ba5c=0xce;}_0x4fc100[_0x9188('0x17')](_0x31ba5c);return _0x4fc100[_0x9188('0x1c')]('Content-Range',_0x3ab479+'-'+_0x3528ee+'/'+_0xe36e19)[_0x9188('0x1d')](_0x150944);}return null;};}function patchUpdates(_0x10f6df){return function(_0x3bf567){try{jsonpatch['apply'](_0x3bf567,_0x10f6df,!![]);}catch(_0x22f1c9){return BPromise[_0x9188('0x1e')](_0x22f1c9);}return _0x3bf567[_0x9188('0x1f')]();};}function saveUpdates(_0x2a26b5,_0x1f151e){return function(_0x54b042){if(_0x54b042){return _0x54b042[_0x9188('0x20')](_0x2a26b5)[_0x9188('0x21')](function(_0x33922f){return _0x33922f;});}return null;};}function removeEntity(_0x1f549a,_0xec13aa){return function(_0x3ac464){if(_0x3ac464){return _0x3ac464[_0x9188('0x22')]()[_0x9188('0x21')](function(){var _0x4d1160=_0x3ac464[_0x9188('0x23')]({'plain':!![]});var _0x2b5cb3=_0x9188('0x24');return db[_0x9188('0x25')][_0x9188('0x22')]({'where':{'type':_0x2b5cb3,'resourceId':_0x4d1160['id']}})['then'](function(){return _0x3ac464;});})['then'](function(){_0x1f549a[_0x9188('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x165e58,_0xe07637){return function(_0x17c3fd){if(!_0x17c3fd){_0x165e58['sendStatus'](0x194);}return _0x17c3fd;};}function handleError(_0x13e644,_0xed1c52){_0xed1c52=_0xed1c52||0x1f4;return function(_0x2f2e50){logger['error'](_0x2f2e50[_0x9188('0x26')]);if(_0x2f2e50['name']){delete _0x2f2e50[_0x9188('0x27')];}_0x13e644[_0x9188('0x17')](_0xed1c52)['send'](_0x2f2e50);};}exports[_0x9188('0x28')]=function(_0x29d7a2,_0x52011f){var _0x503edc={},_0x36f84c={},_0x531d62={'count':0x0,'rows':[]};var _0x3acffb=_[_0x9188('0x29')](db[_0x9188('0x2a')][_0x9188('0x2b')],function(_0x4e5267){return{'name':_0x4e5267['fieldName'],'type':_0x4e5267[_0x9188('0x2c')][_0x9188('0x2d')]};});_0x36f84c['model']=_[_0x9188('0x29')](_0x3acffb,_0x9188('0x27'));_0x36f84c['query']=_[_0x9188('0x2e')](_0x29d7a2['query']);_0x36f84c[_0x9188('0x2f')]=_[_0x9188('0x30')](_0x36f84c[_0x9188('0x31')],_0x36f84c[_0x9188('0x32')]);_0x503edc[_0x9188('0x33')]=_[_0x9188('0x30')](_0x36f84c[_0x9188('0x31')],qs['fields'](_0x29d7a2[_0x9188('0x32')][_0x9188('0x34')]));_0x503edc['attributes']=_0x503edc['attributes'][_0x9188('0x35')]?_0x503edc['attributes']:_0x36f84c['model'];if(!_0x29d7a2[_0x9188('0x32')]['hasOwnProperty']('nolimit')){_0x503edc[_0x9188('0x36')]=qs['limit'](_0x29d7a2[_0x9188('0x32')][_0x9188('0x36')]);_0x503edc[_0x9188('0x1b')]=qs[_0x9188('0x1b')](_0x29d7a2[_0x9188('0x32')][_0x9188('0x1b')]);}_0x503edc[_0x9188('0x37')]=qs[_0x9188('0x38')](_0x29d7a2[_0x9188('0x32')]['sort']);delete _0x29d7a2['query'][_0x9188('0x38')];_0x503edc[_0x9188('0x39')]=qs['filters'](_[_0x9188('0x3a')](_0x29d7a2[_0x9188('0x32')],_0x36f84c[_0x9188('0x2f')]),_0x3acffb);if(_0x29d7a2[_0x9188('0x32')]['filter']){_0x503edc[_0x9188('0x39')]=_[_0x9188('0x3b')](_0x503edc[_0x9188('0x39')],{'$or':_[_0x9188('0x29')](_0x3acffb,function(_0x1cf798){if(_0x1cf798['type']!=='VIRTUAL'){var _0x38502e={};_0x38502e[_0x1cf798[_0x9188('0x27')]]={'$like':'%'+_0x29d7a2['query'][_0x9188('0x3c')]+'%'};return _0x38502e;}})});}_0x503edc=_['merge']({},_0x503edc,_0x29d7a2[_0x9188('0x3d')]);var _0x73bc85={'where':_0x503edc[_0x9188('0x39')]};return db[_0x9188('0x2a')]['count'](_0x73bc85)[_0x9188('0x21')](function(_0x37e682){_0x531d62[_0x9188('0x1a')]=_0x37e682;if(_0x29d7a2[_0x9188('0x32')][_0x9188('0x3e')]){_0x503edc['include']=[{'all':!![]}];}return db[_0x9188('0x2a')][_0x9188('0x3f')](_0x503edc);})['then'](function(_0x5e5fb7){_0x531d62[_0x9188('0x40')]=_0x5e5fb7;return _0x531d62;})[_0x9188('0x21')](respondWithFilteredResult(_0x52011f,_0x503edc))[_0x9188('0x41')](handleError(_0x52011f,null));};exports[_0x9188('0x42')]=function(_0x450da7,_0x3f0d0b){var _0x6a51c1={'raw':![],'where':{'id':_0x450da7[_0x9188('0x43')]['id']}},_0x4b9f99={};_0x4b9f99[_0x9188('0x31')]=_[_0x9188('0x2e')](db['VoiceMusicOnHold'][_0x9188('0x2b')]);_0x4b9f99[_0x9188('0x32')]=_[_0x9188('0x2e')](_0x450da7[_0x9188('0x32')]);_0x4b9f99[_0x9188('0x2f')]=_[_0x9188('0x30')](_0x4b9f99['model'],_0x4b9f99['query']);_0x6a51c1['attributes']=_[_0x9188('0x30')](_0x4b9f99[_0x9188('0x31')],qs[_0x9188('0x34')](_0x450da7['query'][_0x9188('0x34')]));_0x6a51c1['attributes']=_0x6a51c1['attributes'][_0x9188('0x35')]?_0x6a51c1['attributes']:_0x4b9f99['model'];if(_0x450da7[_0x9188('0x32')][_0x9188('0x3e')]){_0x6a51c1[_0x9188('0x44')]=[{'all':!![]}];}_0x6a51c1=_[_0x9188('0x3b')]({},_0x6a51c1,_0x450da7['options']);return db[_0x9188('0x2a')][_0x9188('0x45')](_0x6a51c1)[_0x9188('0x21')](handleEntityNotFound(_0x3f0d0b,null))[_0x9188('0x21')](respondWithResult(_0x3f0d0b,null))[_0x9188('0x41')](handleError(_0x3f0d0b,null));};exports[_0x9188('0x20')]=function(_0x79f5ed,_0x45aa7f){if(_0x79f5ed[_0x9188('0x46')]['id']){delete _0x79f5ed['body']['id'];}return db[_0x9188('0x2a')]['find']({'where':{'id':_0x79f5ed['params']['id']}})['then'](handleEntityNotFound(_0x45aa7f,null))['then'](saveUpdates(_0x79f5ed[_0x9188('0x46')],null))['then'](respondWithResult(_0x45aa7f,null))[_0x9188('0x41')](handleError(_0x45aa7f,null));};exports[_0x9188('0x47')]=function(_0xc36fc5,_0xbab0dc,_0x75200c){return db[_0x9188('0x48')][_0x9188('0x49')](function(_0x210ccf){if(_0xc36fc5[_0x9188('0x46')][_0x9188('0x4a')]==='files'){_0xc36fc5[_0x9188('0x46')][_0x9188('0x4b')]=path[_0x9188('0x4c')](config[_0x9188('0x4d')],_0x9188('0x4e'),_0xc36fc5[_0x9188('0x46')][_0x9188('0x27')]);}return db[_0x9188('0x2a')][_0x9188('0x47')](_0xc36fc5['body'],{'transaction':_0x210ccf})[_0x9188('0x21')](function(_0x47e7c2){if(_0xc36fc5['body'][_0x9188('0x4a')]===_0x9188('0x4f')){fs['mkdirSync'](_0x47e7c2[_0x9188('0x4b')],parseInt(_0x9188('0x50'),0x8));}var _0x30ff66=_0xc36fc5[_0x9188('0x51')]['get']({'plain':!![]});if(!_0x30ff66)throw new Error(_0x9188('0x52'));if(_0x30ff66[_0x9188('0x53')]===_0x9188('0x51')){var _0x4dfdaf=_0x47e7c2[_0x9188('0x23')]({'plain':!![]});return db[_0x9188('0x54')][_0x9188('0x45')]({'where':{'name':'MusicOnHolds','userProfileId':_0x30ff66[_0x9188('0x55')]},'raw':!![]})[_0x9188('0x21')](function(_0x482f26){if(_0x482f26&&_0x482f26[_0x9188('0x56')]===0x0){return db['UserProfileResource'][_0x9188('0x47')]({'name':_0x4dfdaf[_0x9188('0x27')],'resourceId':_0x4dfdaf['id'],'type':_0x482f26[_0x9188('0x27')],'sectionId':_0x482f26['id']},{})['then'](function(){return _0x47e7c2;});}else{return _0x47e7c2;}})['catch'](function(_0x2d0b7a){logger[_0x9188('0x57')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2d0b7a);});}return _0x47e7c2;});})['then'](respondWithResult(_0xbab0dc,0xc9))[_0x9188('0x41')](handleError(_0xbab0dc,null));};exports[_0x9188('0x22')]=function(_0x5dd797,_0x20c491,_0x36d614){var _0x48662e;return db[_0x9188('0x2a')]['find']({'where':{'id':_0x5dd797['params']['id']}})[_0x9188('0x21')](function(_0x35a59a){if(_0x35a59a){return db['sequelize'][_0x9188('0x49')](function(_0x2b45ef){return _0x35a59a[_0x9188('0x22')]({'transaction':_0x2b45ef,'raw':!![]})['then'](function(_0x34f67d){if(_0x34f67d[_0x9188('0x4b')]){fs[_0x9188('0x58')](_0x34f67d[_0x9188('0x4b')])['forEach'](function(_0x1f4744){fs[_0x9188('0x59')](path[_0x9188('0x4c')](_0x34f67d[_0x9188('0x4b')],_0x1f4744));});fs[_0x9188('0x5a')](_0x34f67d[_0x9188('0x4b')]);}return _0x34f67d;});})[_0x9188('0x41')](function(_0x35ae3b){throw new db[(_0x9188('0x5b'))][(_0x9188('0x5c'))](_0x35ae3b[_0x9188('0x5d')]);});}})['then'](handleEntityNotFound(_0x20c491,null))['then'](removeEntity(_0x20c491,null))['catch'](handleError(_0x20c491,null));};exports[_0x9188('0x5e')]=function(_0x36d725,_0x301c02,_0x416d69){return db[_0x9188('0x48')][_0x9188('0x49')](function(_0x22cd9d){var _0x403192;return db[_0x9188('0x2a')]['find']({'where':{'id':_0x36d725[_0x9188('0x43')]['id']}})['then'](function(_0x5b719a){if(_0x5b719a){_0x403192=_0x5b719a;return _0x5b719a[_0x9188('0x5e')](_0x36d725[_0x9188('0x46')]['id'],{'transaction':_0x22cd9d});}})[_0x9188('0x21')](function(_0xbdc933){if(_0xbdc933){return db['Sound'][_0x9188('0x5f')]({'where':{'id':_0x36d725[_0x9188('0x46')]['id']},'attributes':['id',_0x9188('0x27'),'save_name','converted_format','createdAt'],'raw':!![]});}})['then'](function(_0x23b24f){if(_0x23b24f){var _0x40f03f=path[_0x9188('0x4c')](config[_0x9188('0x4d')],'server/files/sounds/converted',util[_0x9188('0x60')](_0x9188('0x61'),path['basename'](_0x23b24f[_0x9188('0x62')],path[_0x9188('0x63')](_0x23b24f[_0x9188('0x62')])),_0x23b24f[_0x9188('0x64')]));var _0x2672b7=path[_0x9188('0x4c')](config['root'],_0x9188('0x4e'),_0x403192[_0x9188('0x27')],util[_0x9188('0x60')](_0x9188('0x61'),_0x23b24f[_0x9188('0x27')],_0x23b24f[_0x9188('0x64')]));fs[_0x9188('0x65')](_0x40f03f,_0x2672b7);return _0x23b24f;}})[_0x9188('0x41')](function(_0x5d653b){throw new db[(_0x9188('0x5b'))][(_0x9188('0x5c'))](_0x5d653b[_0x9188('0x5d')]);});})[_0x9188('0x21')](handleEntityNotFound(_0x301c02,null))[_0x9188('0x21')](respondWithResult(_0x301c02,0xc9))['catch'](handleError(_0x301c02,null));};exports[_0x9188('0x66')]=function(_0x278ad5,_0x152cd0,_0x23af5b){return db[_0x9188('0x48')][_0x9188('0x49')](function(_0x408a77){var _0x582901;return db['VoiceMusicOnHold'][_0x9188('0x5f')]({'where':{'id':_0x278ad5[_0x9188('0x43')]['id']}})['then'](handleEntityNotFound(_0x152cd0,null))[_0x9188('0x21')](function(_0x14213b){if(_0x14213b){_0x582901=_0x14213b;return _0x14213b[_0x9188('0x66')](_0x278ad5[_0x9188('0x43')][_0x9188('0x67')]);}})[_0x9188('0x21')](function(_0xe052db){if(_0xe052db){return db[_0x9188('0x68')]['findOne']({'where':{'id':_0x278ad5[_0x9188('0x43')][_0x9188('0x67')]},'attributes':['id',_0x9188('0x27'),_0x9188('0x62'),'converted_format',_0x9188('0x69')],'raw':!![]});}})[_0x9188('0x21')](function(_0x296346){if(_0x296346){fs['unlinkSync'](path[_0x9188('0x4c')](_0x582901['directory'],util[_0x9188('0x60')](_0x9188('0x61'),_0x296346[_0x9188('0x27')],_0x296346[_0x9188('0x64')])));return _0x296346;}})[_0x9188('0x41')](function(_0x371298){throw new db[(_0x9188('0x5b'))][(_0x9188('0x5c'))](_0x371298[_0x9188('0x5d')]);});})['then'](handleEntityNotFound(_0x152cd0,null))[_0x9188('0x21')](respondWithStatusCode(_0x152cd0,0xcc))[_0x9188('0x41')](handleError(_0x152cd0,null));};exports[_0x9188('0x6a')]=function(_0x1ab263,_0x1b05a0,_0x2c6459){var _0x5219ef={};var _0x3e60f1={};var _0x3c8ba1;var _0x394ab6;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x1ab263[_0x9188('0x43')]['id']}})[_0x9188('0x21')](handleEntityNotFound(_0x1b05a0,null))[_0x9188('0x21')](function(_0x400976){if(_0x400976){_0x3c8ba1=_0x400976;_0x3e60f1[_0x9188('0x31')]=_[_0x9188('0x2e')](db['Sound'][_0x9188('0x2b')]);_0x3e60f1[_0x9188('0x32')]=_[_0x9188('0x2e')](_0x1ab263[_0x9188('0x32')]);_0x3e60f1[_0x9188('0x2f')]=_['intersection'](_0x3e60f1['model'],_0x3e60f1[_0x9188('0x32')]);_0x5219ef[_0x9188('0x33')]=_[_0x9188('0x30')](_0x3e60f1['model'],qs[_0x9188('0x34')](_0x1ab263[_0x9188('0x32')][_0x9188('0x34')]));_0x5219ef[_0x9188('0x33')]=_0x5219ef[_0x9188('0x33')][_0x9188('0x35')]?_0x5219ef[_0x9188('0x33')]:_0x3e60f1['model'];_0x5219ef[_0x9188('0x37')]=qs['sort'](_0x1ab263[_0x9188('0x32')][_0x9188('0x38')]);_0x5219ef['where']=qs[_0x9188('0x2f')](_[_0x9188('0x3a')](_0x1ab263[_0x9188('0x32')],_0x3e60f1[_0x9188('0x2f')]));if(_0x1ab263['query'][_0x9188('0x3c')]){_0x5219ef['where']=_[_0x9188('0x3b')](_0x5219ef[_0x9188('0x39')],{'$or':_[_0x9188('0x29')](_0x5219ef['attributes'],function(_0x99f852){var _0x530c9f={};_0x530c9f[_0x99f852]={'$like':'%'+_0x1ab263['query'][_0x9188('0x3c')]+'%'};return _0x530c9f;})});}_0x5219ef=_[_0x9188('0x3b')]({},_0x5219ef,_0x1ab263[_0x9188('0x3d')]);return _0x3c8ba1[_0x9188('0x6a')](_0x5219ef);}})[_0x9188('0x21')](function(_0x4d85d7){if(_0x4d85d7){_0x394ab6=_0x4d85d7[_0x9188('0x35')];if(!_0x1ab263[_0x9188('0x32')][_0x9188('0x6b')]('nolimit')){_0x5219ef['limit']=qs[_0x9188('0x36')](_0x1ab263[_0x9188('0x32')][_0x9188('0x36')]);_0x5219ef[_0x9188('0x1b')]=qs[_0x9188('0x1b')](_0x1ab263[_0x9188('0x32')][_0x9188('0x1b')]);}return _0x3c8ba1[_0x9188('0x6a')](_0x5219ef);}})['then'](function(_0x161e1e){if(_0x161e1e){return _0x161e1e?{'count':_0x394ab6,'rows':_0x161e1e}:null;}})[_0x9188('0x21')](respondWithResult(_0x1b05a0,null))[_0x9188('0x41')](handleError(_0x1b05a0,null));};
\ No newline at end of file
index ea06068..47d4019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5c=['rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x4c883a,_0x423a46){var _0x35b150=function(_0x46bf0a){while(--_0x46bf0a){_0x4c883a['push'](_0x4c883a['shift']());}};_0x35b150(++_0x423a46);}(_0xaf5c,0x1e7));var _0xcaf5=function(_0x5b34b5,_0xdbccb4){_0x5b34b5=_0x5b34b5-0x0;var _0x5e465b=_0xaf5c[_0x5b34b5];return _0x5e465b;};'use strict';var _=require(_0xcaf5('0x0'));var util=require(_0xcaf5('0x1'));var logger=require(_0xcaf5('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcaf5('0x3'));var rp=require(_0xcaf5('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcaf5('0x5'));var config=require(_0xcaf5('0x6'));var attributes=require(_0xcaf5('0x7'));module[_0xcaf5('0x8')]=function(_0x44421b,_0x535bde){return _0x44421b[_0xcaf5('0x9')](_0xcaf5('0xa'),attributes,{'tableName':_0xcaf5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4503=['VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','define'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4503,0x86));var _0x3450=function(_0x501cb8,_0xdf2d45){_0x501cb8=_0x501cb8-0x0;var _0x55ebe7=_0x4503[_0x501cb8];return _0x55ebe7;};'use strict';var _=require(_0x3450('0x0'));var util=require(_0x3450('0x1'));var logger=require(_0x3450('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3450('0x3'));var rp=require(_0x3450('0x4'));var fs=require('fs');var path=require(_0x3450('0x5'));var rimraf=require(_0x3450('0x6'));var config=require(_0x3450('0x7'));var attributes=require(_0x3450('0x8'));module['exports']=function(_0x4b4a87,_0x227580){return _0x4b4a87[_0x3450('0x9')](_0x3450('0xa'),attributes,{'tableName':_0x3450('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7290a8..2de7553 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','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x456ade,_0x2b2f52){var _0x2ac94c=function(_0x1bee1d){while(--_0x1bee1d){_0x456ade['push'](_0x456ade['shift']());}};_0x2ac94c(++_0x2b2f52);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0xcb91[_0x4c440b];return _0x2d48cf;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+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(_0x2dee5c,_0x3715bb){var _0x1f58b7=function(_0x5374d5){while(--_0x5374d5){_0x2dee5c['push'](_0x2dee5c['shift']());}};_0x1f58b7(++_0x3715bb);}(_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
index 71a5153..347ab9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e7=['/:id','show','/:id/users','getAgents','getTeams','post','create','/:id/teams','addTeams','put','update','delete','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x4ebb1e,_0x1051c7){var _0x18846b=function(_0x494c66){while(--_0x494c66){_0x4ebb1e['push'](_0x4ebb1e['shift']());}};_0x18846b(++_0x1051c7);}(_0x34e7,0x164));var _0x734e=function(_0x2b7c38,_0x496d14){_0x2b7c38=_0x2b7c38-0x0;var _0x313fcc=_0x34e7[_0x2b7c38];return _0x313fcc;};'use strict';var multer=require(_0x734e('0x0'));var util=require(_0x734e('0x1'));var path=require(_0x734e('0x2'));var timeout=require(_0x734e('0x3'));var express=require(_0x734e('0x4'));var router=express[_0x734e('0x5')]();var fs_extra=require(_0x734e('0x6'));var auth=require(_0x734e('0x7'));var interaction=require(_0x734e('0x8'));var config=require(_0x734e('0x9'));var controller=require(_0x734e('0xa'));router[_0x734e('0xb')]('/',auth[_0x734e('0xc')](),controller[_0x734e('0xd')]);router['get'](_0x734e('0xe'),auth[_0x734e('0xc')](),controller[_0x734e('0xf')]);router['get'](_0x734e('0x10'),auth['isAuthenticated'](),controller[_0x734e('0x11')]);router[_0x734e('0xb')](_0x734e('0x12'),auth[_0x734e('0xc')](),controller[_0x734e('0x13')]);router[_0x734e('0xb')]('/:id/teams',auth['isAuthenticated'](),controller[_0x734e('0x14')]);router[_0x734e('0x15')]('/',auth[_0x734e('0xc')](),controller[_0x734e('0x16')]);router['post'](_0x734e('0x12'),auth[_0x734e('0xc')](),controller['addAgents']);router[_0x734e('0x15')](_0x734e('0x17'),auth[_0x734e('0xc')](),controller[_0x734e('0x18')]);router[_0x734e('0x19')]('/:id',auth[_0x734e('0xc')](),controller[_0x734e('0x1a')]);router[_0x734e('0x1b')]('/:id',auth[_0x734e('0xc')](),controller['destroy']);router[_0x734e('0x1b')](_0x734e('0x12'),auth['isAuthenticated'](),controller[_0x734e('0x1c')]);router['delete'](_0x734e('0x17'),auth['isAuthenticated'](),controller[_0x734e('0x1d')]);module[_0x734e('0x1e')]=router;
\ No newline at end of file
+var _0xcae6=['fs-extra','../../components/auth/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','describe','/:id','show','/:id/users','getAgents','/:id/teams','getTeams','post','create','addAgents','addTeams','put','delete','destroy','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','Router'];(function(_0x5067c6,_0x3f1e9e){var _0xb5daa3=function(_0x45337e){while(--_0x45337e){_0x5067c6['push'](_0x5067c6['shift']());}};_0xb5daa3(++_0x3f1e9e);}(_0xcae6,0x1ae));var _0x6cae=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xcae6[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0x6cae('0x0'));var util=require(_0x6cae('0x1'));var path=require(_0x6cae('0x2'));var timeout=require(_0x6cae('0x3'));var express=require('express');var router=express[_0x6cae('0x4')]();var fs_extra=require(_0x6cae('0x5'));var auth=require(_0x6cae('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6cae('0x7'));var controller=require(_0x6cae('0x8'));router[_0x6cae('0x9')]('/',auth[_0x6cae('0xa')](),controller[_0x6cae('0xb')]);router[_0x6cae('0x9')]('/describe',auth[_0x6cae('0xa')](),controller[_0x6cae('0xc')]);router[_0x6cae('0x9')](_0x6cae('0xd'),auth[_0x6cae('0xa')](),controller[_0x6cae('0xe')]);router[_0x6cae('0x9')](_0x6cae('0xf'),auth[_0x6cae('0xa')](),controller[_0x6cae('0x10')]);router[_0x6cae('0x9')](_0x6cae('0x11'),auth['isAuthenticated'](),controller[_0x6cae('0x12')]);router[_0x6cae('0x13')]('/',auth[_0x6cae('0xa')](),controller[_0x6cae('0x14')]);router[_0x6cae('0x13')](_0x6cae('0xf'),auth[_0x6cae('0xa')](),controller[_0x6cae('0x15')]);router[_0x6cae('0x13')](_0x6cae('0x11'),auth[_0x6cae('0xa')](),controller[_0x6cae('0x16')]);router[_0x6cae('0x17')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x6cae('0x18')](_0x6cae('0xd'),auth[_0x6cae('0xa')](),controller[_0x6cae('0x19')]);router[_0x6cae('0x18')]('/:id/users',auth[_0x6cae('0xa')](),controller[_0x6cae('0x1a')]);router['delete'](_0x6cae('0x11'),auth[_0x6cae('0xa')](),controller[_0x6cae('0x1b')]);module[_0x6cae('0x1c')]=router;
\ No newline at end of file
index 1a428fb..2857b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb449=['name','sequelize','exports','STRING','getDataValue'];(function(_0x3efa0e,_0x298acc){var _0x46f8e0=function(_0x1fe8f1){while(--_0x1fe8f1){_0x3efa0e['push'](_0x3efa0e['shift']());}};_0x46f8e0(++_0x298acc);}(_0xb449,0x187));var _0x9b44=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb449[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x9b44('0x0'));module[_0x9b44('0x1')]={'name':{'type':Sequelize[_0x9b44('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x3bdad3){return'system-'+this[_0x9b44('0x3')](_0x9b44('0x4'))+'-';}},'description':{'type':Sequelize[_0x9b44('0x2')]},'callerIdAll':{'type':Sequelize[_0x9b44('0x2')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x1f5f=['getDataValue','INTEGER','exports','STRING','name'];(function(_0x4b8688,_0x3e7554){var _0xff71ea=function(_0x58f476){while(--_0x58f476){_0x4b8688['push'](_0x4b8688['shift']());}};_0xff71ea(++_0x3e7554);}(_0x1f5f,0x106));var _0xf1f5=function(_0x3f08f9,_0x15edd0){_0x3f08f9=_0x3f08f9-0x0;var _0x3a31dc=_0x1f5f[_0x3f08f9];return _0x3a31dc;};'use strict';var Sequelize=require('sequelize');module[_0xf1f5('0x0')]={'name':{'type':Sequelize[_0xf1f5('0x1')],'allowNull':![],'unique':_0xf1f5('0x2')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x2e6150){return'system-'+this[_0xf1f5('0x3')](_0xf1f5('0x2'))+'-';}},'description':{'type':Sequelize[_0xf1f5('0x1')]},'callerIdAll':{'type':Sequelize[_0xf1f5('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0xf1f5('0x4')]}};
\ No newline at end of file
index 4f1f54a..52678ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','get','VoicePrefixes','UserProfileResource','then','error','stack','name','send','index','VoicePrefix','rawAttributes','fieldName','key','map','keys','query','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','type','merge','options','includeAll','include','rows','params','find','catch','describe','create','sequelize','transaction','body','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','exten','system','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','NoOp','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','ids','omit','spread','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','emit','getAgents','findOne','User','nolimit','getTeams','hasOwnProperty','addTeams','Team','findAll','Agents','online','voicePause','interface','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','from','team_has_voice_prefixes','join','VoicePrefixId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','all','union','compact','isEmpty','eml-format','rimraf','fast-json-patch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x32b6,0x1d1));var _0x632b=function(_0x537bf6,_0x1ec738){_0x537bf6=_0x537bf6-0x0;var _0x5f8f5=_0x32b6[_0x537bf6];return _0x5f8f5;};'use strict';var emlformat=require(_0x632b('0x0'));var rimraf=require(_0x632b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x632b('0x2'));var rp=require(_0x632b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x632b('0x4'));var util=require(_0x632b('0x5'));var path=require(_0x632b('0x6'));var sox=require(_0x632b('0x7'));var csv=require(_0x632b('0x8'));var ejs=require(_0x632b('0x9'));var fs=require('fs');var fs_extra=require(_0x632b('0xa'));var _=require(_0x632b('0xb'));var squel=require(_0x632b('0xc'));var crypto=require(_0x632b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x632b('0xe'));var toCsv=require(_0x632b('0x8'));var querystring=require(_0x632b('0xf'));var Papa=require(_0x632b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x632b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x632b('0x12'))(_0x632b('0x13'));var utils=require(_0x632b('0x14'));var config=require(_0x632b('0x15'));var licenseUtil=require(_0x632b('0x16'));var db=require(_0x632b('0x17'))['db'];config[_0x632b('0x18')]=_[_0x632b('0x19')](config[_0x632b('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x632b('0x1a'))(new Redis(config[_0x632b('0x18')]));require(_0x632b('0x1b'))['register'](socket);function respondWithStatusCode(_0x721883,_0x1a3a60){_0x1a3a60=_0x1a3a60||0xcc;return function(_0x108249){if(_0x108249){return _0x721883[_0x632b('0x1c')](_0x1a3a60);}return _0x721883[_0x632b('0x1d')](_0x1a3a60)[_0x632b('0x1e')]();};}function respondWithResult(_0x4efe39,_0x17ddc5){_0x17ddc5=_0x17ddc5||0xc8;return function(_0x52f353){if(_0x52f353){return _0x4efe39['status'](_0x17ddc5)[_0x632b('0x1f')](_0x52f353);}};}function respondWithFilteredResult(_0x5afa1e,_0x2c8340){return function(_0x3bb27f){if(_0x3bb27f){var _0x28c472=typeof _0x2c8340['offset']===_0x632b('0x20')&&typeof _0x2c8340[_0x632b('0x21')]===_0x632b('0x20');var _0x3683e4=_0x3bb27f['count'];var _0x472e34=_0x28c472?0x0:_0x2c8340[_0x632b('0x22')];var _0x4f377f=_0x28c472?_0x3bb27f[_0x632b('0x23')]:_0x2c8340['offset']+_0x2c8340['limit'];var _0x1b1092;if(_0x4f377f>=_0x3683e4){_0x4f377f=_0x3683e4;_0x1b1092=0xc8;}else{_0x1b1092=0xce;}_0x5afa1e['status'](_0x1b1092);return _0x5afa1e[_0x632b('0x24')](_0x632b('0x25'),_0x472e34+'-'+_0x4f377f+'/'+_0x3683e4)[_0x632b('0x1f')](_0x3bb27f);}return null;};}function patchUpdates(_0x540bfb){return function(_0x10fc32){try{jsonpatch[_0x632b('0x26')](_0x10fc32,_0x540bfb,!![]);}catch(_0x59d83a){return BPromise[_0x632b('0x27')](_0x59d83a);}return _0x10fc32[_0x632b('0x28')]();};}function saveUpdates(_0x30ffb9,_0x1e448c){return function(_0x45d017){if(_0x45d017){return _0x45d017[_0x632b('0x29')](_0x30ffb9)['then'](function(_0x5e7b20){return _0x5e7b20;});}return null;};}function removeEntity(_0x11fe61,_0x4d3a70){return function(_0x4ebd26){if(_0x4ebd26){return _0x4ebd26[_0x632b('0x2a')]()['then'](function(){var _0x273e89=_0x4ebd26[_0x632b('0x2b')]({'plain':!![]});var _0x29d9aa=_0x632b('0x2c');return db[_0x632b('0x2d')][_0x632b('0x2a')]({'where':{'type':_0x29d9aa,'resourceId':_0x273e89['id']}})[_0x632b('0x2e')](function(){return _0x4ebd26;});})[_0x632b('0x2e')](function(){_0x11fe61[_0x632b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1bb484,_0x35348e){return function(_0x1819fa){if(!_0x1819fa){_0x1bb484[_0x632b('0x1c')](0x194);}return _0x1819fa;};}function handleError(_0x17a5ba,_0x2a34fa){_0x2a34fa=_0x2a34fa||0x1f4;return function(_0x3c5dc9){logger[_0x632b('0x2f')](_0x3c5dc9[_0x632b('0x30')]);if(_0x3c5dc9[_0x632b('0x31')]){delete _0x3c5dc9[_0x632b('0x31')];}_0x17a5ba[_0x632b('0x1d')](_0x2a34fa)[_0x632b('0x32')](_0x3c5dc9);};}exports[_0x632b('0x33')]=function(_0x227497,_0x3dff99){var _0x18efab={},_0x36936d={},_0x3f3dc4={'count':0x0,'rows':[]};var _0x12f00=_['map'](db[_0x632b('0x34')][_0x632b('0x35')],function(_0x397f36){return{'name':_0x397f36[_0x632b('0x36')],'type':_0x397f36['type'][_0x632b('0x37')]};});_0x36936d['model']=_[_0x632b('0x38')](_0x12f00,_0x632b('0x31'));_0x36936d['query']=_[_0x632b('0x39')](_0x227497[_0x632b('0x3a')]);_0x36936d[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x36936d[_0x632b('0x3d')],_0x36936d[_0x632b('0x3a')]);_0x18efab[_0x632b('0x3e')]=_[_0x632b('0x3c')](_0x36936d['model'],qs['fields'](_0x227497[_0x632b('0x3a')][_0x632b('0x3f')]));_0x18efab[_0x632b('0x3e')]=_0x18efab[_0x632b('0x3e')][_0x632b('0x40')]?_0x18efab[_0x632b('0x3e')]:_0x36936d[_0x632b('0x3d')];if(!_0x227497[_0x632b('0x3a')]['hasOwnProperty']('nolimit')){_0x18efab[_0x632b('0x21')]=qs['limit'](_0x227497[_0x632b('0x3a')][_0x632b('0x21')]);_0x18efab[_0x632b('0x22')]=qs[_0x632b('0x22')](_0x227497[_0x632b('0x3a')][_0x632b('0x22')]);}_0x18efab[_0x632b('0x41')]=qs[_0x632b('0x42')](_0x227497[_0x632b('0x3a')][_0x632b('0x42')]);_0x18efab[_0x632b('0x43')]=qs[_0x632b('0x3b')](_[_0x632b('0x44')](_0x227497[_0x632b('0x3a')],_0x36936d[_0x632b('0x3b')]),_0x12f00);if(_0x227497[_0x632b('0x3a')][_0x632b('0x45')]){_0x18efab['where']=_['merge'](_0x18efab['where'],{'$or':_['map'](_0x12f00,function(_0x57f099){if(_0x57f099[_0x632b('0x46')]!=='VIRTUAL'){var _0x5529cb={};_0x5529cb[_0x57f099['name']]={'$like':'%'+_0x227497[_0x632b('0x3a')][_0x632b('0x45')]+'%'};return _0x5529cb;}})});}_0x18efab=_[_0x632b('0x47')]({},_0x18efab,_0x227497[_0x632b('0x48')]);var _0x5a1017={'where':_0x18efab[_0x632b('0x43')]};return db[_0x632b('0x34')][_0x632b('0x23')](_0x5a1017)['then'](function(_0x15bb30){_0x3f3dc4[_0x632b('0x23')]=_0x15bb30;if(_0x227497[_0x632b('0x3a')][_0x632b('0x49')]){_0x18efab[_0x632b('0x4a')]=[{'all':!![]}];}return db[_0x632b('0x34')]['findAll'](_0x18efab);})[_0x632b('0x2e')](function(_0x2b90c8){_0x3f3dc4[_0x632b('0x4b')]=_0x2b90c8;return _0x3f3dc4;})[_0x632b('0x2e')](respondWithFilteredResult(_0x3dff99,_0x18efab))['catch'](handleError(_0x3dff99,null));};exports['show']=function(_0x39b17c,_0x26b35b){var _0x70ddc9={'raw':![],'where':{'id':_0x39b17c[_0x632b('0x4c')]['id']}},_0x3566e7={};_0x3566e7[_0x632b('0x3d')]=_['keys'](db[_0x632b('0x34')][_0x632b('0x35')]);_0x3566e7[_0x632b('0x3a')]=_[_0x632b('0x39')](_0x39b17c[_0x632b('0x3a')]);_0x3566e7[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x3566e7[_0x632b('0x3d')],_0x3566e7['query']);_0x70ddc9[_0x632b('0x3e')]=_['intersection'](_0x3566e7[_0x632b('0x3d')],qs['fields'](_0x39b17c[_0x632b('0x3a')][_0x632b('0x3f')]));_0x70ddc9[_0x632b('0x3e')]=_0x70ddc9[_0x632b('0x3e')][_0x632b('0x40')]?_0x70ddc9['attributes']:_0x3566e7[_0x632b('0x3d')];if(_0x39b17c[_0x632b('0x3a')][_0x632b('0x49')]){_0x70ddc9['include']=[{'all':!![]}];}_0x70ddc9=_[_0x632b('0x47')]({},_0x70ddc9,_0x39b17c[_0x632b('0x48')]);return db[_0x632b('0x34')][_0x632b('0x4d')](_0x70ddc9)[_0x632b('0x2e')](handleEntityNotFound(_0x26b35b,null))['then'](respondWithResult(_0x26b35b,null))[_0x632b('0x4e')](handleError(_0x26b35b,null));};exports['destroy']=function(_0x33da2b,_0x369cdc){return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x33da2b[_0x632b('0x4c')]['id']}})['then'](handleEntityNotFound(_0x369cdc,null))['then'](removeEntity(_0x369cdc,null))[_0x632b('0x4e')](handleError(_0x369cdc,null));};exports[_0x632b('0x4f')]=function(_0x3ad524,_0xdc6242){return db[_0x632b('0x34')][_0x632b('0x4f')]()['then'](respondWithResult(_0xdc6242,null))[_0x632b('0x4e')](handleError(_0xdc6242,null));};exports[_0x632b('0x50')]=function(_0x3ff81c,_0x4dc021){var _0x33e428;return db[_0x632b('0x51')][_0x632b('0x52')](function(_0x1a79fa){return db['VoicePrefix'][_0x632b('0x50')](_0x3ff81c[_0x632b('0x53')],{'transaction':_0x1a79fa})[_0x632b('0x2e')](function(_0x92884f){_0x33e428=_0x92884f[_0x632b('0x2b')]({'plain':!![]});return db['VoiceExtension'][_0x632b('0x4d')]({'where':{'id':_0x33e428[_0x632b('0x54')]},'raw':!![]})[_0x632b('0x2e')](function(_0x36a7c5){return createVoicePrefixExtensions(_0x33e428,_0x36a7c5,_0x1a79fa);});});})[_0x632b('0x2e')](function(){var _0x5d1d05=_0x3ff81c[_0x632b('0x55')][_0x632b('0x2b')]({'plain':!![]});if(!_0x5d1d05)throw new Error(_0x632b('0x56'));if(_0x5d1d05[_0x632b('0x57')]===_0x632b('0x55')){var _0x9accea=_0x33e428;return db[_0x632b('0x58')][_0x632b('0x4d')]({'where':{'name':_0x632b('0x2c'),'userProfileId':_0x5d1d05[_0x632b('0x59')]},'raw':!![]})[_0x632b('0x2e')](function(_0x5ca000){if(_0x5ca000&&_0x5ca000[_0x632b('0x5a')]===0x0){return db[_0x632b('0x2d')][_0x632b('0x50')]({'name':_0x9accea[_0x632b('0x31')],'resourceId':_0x9accea['id'],'type':_0x5ca000[_0x632b('0x31')],'sectionId':_0x5ca000['id']},{})['then'](function(){return _0x33e428;});}else{return _0x33e428;}})[_0x632b('0x4e')](function(_0x2239ec){logger[_0x632b('0x2f')](_0x632b('0x5b'),_0x2239ec);throw _0x2239ec;});}return _0x33e428;})[_0x632b('0x2e')](respondWithResult(_0x4dc021,null))[_0x632b('0x4e')](handleError(_0x4dc021,null));};function Extension(_0x3e14d0,_0x4ffa35,_0x14ee44,_0x4b7307){this[_0x632b('0x5c')]='from-sip';this[_0x632b('0x5d')]=_0x3e14d0;this['app']=_0x14ee44;this[_0x632b('0x46')]=_0x632b('0x5e');this['description']='Voice\x20Prefix\x20Extension';this[_0x632b('0x5f')]=_0x4ffa35;this[_0x632b('0x60')]=_0x4b7307;}function createVoicePrefixExtensions(_0x1618b3,_0xbbaf46,_0x52eed9){return new BPromise(function(_0x1420d9,_0x20672b){var _0x5abf95=new Extension(formatPrefixName(_0x1618b3[_0x632b('0x61')]),0x1,'NoOp',_0x632b('0x62'));_0x5abf95[_0x632b('0x63')]=_0x1618b3['id'];return db['VoiceExtension'][_0x632b('0x50')](_0x5abf95,{'transaction':_0x52eed9})[_0x632b('0x2e')](function(_0x32cc27){var _0x1bf6f4=_0x32cc27['get']({'plain':!![]});var _0x2711d5=_[_0x632b('0x38')](addVoicePrefixExtensions(_0x1618b3,_0xbbaf46),function(_0x3d1ac3){_0x3d1ac3[_0x632b('0x54')]=_0x1bf6f4['id'];_0x3d1ac3['VoicePrefixId']=_0x1618b3['id'];return _0x3d1ac3;});return db[_0x632b('0x64')][_0x632b('0x65')](_0x2711d5,{'transaction':_0x52eed9})[_0x632b('0x2e')](function(_0x3fd888){if(!_0x3fd888){return _0x20672b(_0x632b('0x66'));}else{return _0x1420d9(_0x3fd888);}})[_0x632b('0x4e')](function(_0x5c614e){return _0x20672b(_0x5c614e);});});;});};function addVoicePrefixExtensions(_0x132223,_0x83d8f9){var _0x307132=[];var _0x5b0c6d=formatPrefixName(_0x132223['prefix']);_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x2,_0x632b('0x68'),_0x632b('0x69')+_0x132223[_0x632b('0x31')]));if(_0x132223[_0x632b('0x6a')]){_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x3,_0x632b('0x68'),'PREFIX-CALLERIDALL='+_0x132223[_0x632b('0x6a')]));}else{_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x3,_0x632b('0x6b'),_0x632b('0x6c')));}_0x307132[_0x632b('0x67')](new Extension(_0x5b0c6d,0x4,_0x632b('0x6d'),_0x83d8f9['context']+','+_0x632b('0x6e')+(0x8+_0x132223[_0x632b('0x31')][_0x632b('0x40')])+'}'+','+0x1));return _0x307132;}function formatPrefixName(_0x14b55f){var _0x51cb45='_';for(var _0x3a3f80=0x0;_0x3a3f80<_0x14b55f[_0x632b('0x40')];_0x3a3f80++){if(_0x14b55f[_0x632b('0x6f')](_0x3a3f80)=='-'){_0x51cb45+=_0x14b55f['charAt'](_0x3a3f80);}else{_0x51cb45+='['+_0x14b55f[_0x632b('0x6f')](_0x3a3f80)+']';}}_0x51cb45+='.';return _0x51cb45;}exports[_0x632b('0x29')]=function(_0x3aa6ca,_0x26f891,_0x225d81){var _0x4599fc=_0x3aa6ca['body'];_0x4599fc[_0x632b('0x61')]=_0x632b('0x70')+_0x4599fc['name']+'-';return db['sequelize']['transaction'](function(_0x3605b6){return db[_0x632b('0x34')][_0x632b('0x29')](_0x4599fc,{'where':{'id':_0x4599fc['id']},'transaction':_0x3605b6})[_0x632b('0x2e')](function(){return db[_0x632b('0x64')]['destroy']({'where':{'VoicePrefixId':_0x4599fc['id']},'transaction':_0x3605b6})['then'](function(){return db[_0x632b('0x64')][_0x632b('0x4d')]({'where':{'id':_0x4599fc['VoiceExtensionId']},'raw':!![]})['then'](function(_0x11cc11){return createVoicePrefixExtensions(_0x4599fc,_0x11cc11,_0x3605b6);});});});})[_0x632b('0x2e')](function(){return db['VoicePrefix'][_0x632b('0x71')](_0x4599fc['id']);})[_0x632b('0x2e')](respondWithResult(_0x26f891,null))[_0x632b('0x4e')](handleError(_0x26f891,null));};exports['addAgents']=function(_0x495a99,_0x563cfa,_0x2ff526){return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x495a99['params']['id']}})['then'](handleEntityNotFound(_0x563cfa,null))['then'](function(_0x38190c){if(_0x38190c){return _0x38190c['addAgents'](_0x495a99[_0x632b('0x53')][_0x632b('0x72')],_[_0x632b('0x73')](_0x495a99[_0x632b('0x53')],[_0x632b('0x72'),'id'])||{})[_0x632b('0x74')](function(_0xa87c08){for(var _0x360796=0x0;_0x360796<_0x495a99[_0x632b('0x53')][_0x632b('0x72')]['length'];_0x360796+=0x1){socket['emit'](_0x632b('0x75'),{'UserId':Number(_0x495a99['body'][_0x632b('0x72')][_0x360796]),'VoicePrefixId':Number(_0x495a99[_0x632b('0x4c')]['id'])});}return _0xa87c08;});}})[_0x632b('0x2e')](respondWithResult(_0x563cfa,null))[_0x632b('0x4e')](handleError(_0x563cfa,null));};exports['removeAgents']=function(_0x2a3d8f,_0x4febe2,_0x57edcb){return db['VoicePrefix'][_0x632b('0x4d')]({'where':{'id':_0x2a3d8f['params']['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x4febe2,null))[_0x632b('0x2e')](function(_0x48ccd3){if(_0x48ccd3){return _0x48ccd3[_0x632b('0x76')](_0x2a3d8f[_0x632b('0x3a')]['ids'])['then'](function(){if(_[_0x632b('0x77')](_0x2a3d8f[_0x632b('0x3a')][_0x632b('0x72')])){for(var _0xff7d0b=0x0;_0xff7d0b<_0x2a3d8f[_0x632b('0x3a')][_0x632b('0x72')][_0x632b('0x40')];_0xff7d0b+=0x1){socket['emit'](_0x632b('0x78'),{'UserId':Number(_0x2a3d8f[_0x632b('0x3a')]['ids'][_0xff7d0b]),'VoicePrefixId':Number(_0x2a3d8f['params']['id'])});}}else{socket[_0x632b('0x79')]('userVoicePrefix:remove',{'UserId':Number(_0x2a3d8f['query'][_0x632b('0x72')]),'VoicePrefixId':Number(_0x2a3d8f['params']['id'])});}});}})[_0x632b('0x2e')](respondWithStatusCode(_0x4febe2,null))['catch'](handleError(_0x4febe2,null));};exports[_0x632b('0x7a')]=function(_0x590e68,_0x4393e9,_0x3669d9){var _0x57a2a6={};var _0x10c901={};var _0x64f45a;var _0x1e07da;return db[_0x632b('0x34')][_0x632b('0x7b')]({'where':{'id':_0x590e68[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x4393e9,null))[_0x632b('0x2e')](function(_0x5a90f7){if(_0x5a90f7){_0x64f45a=_0x5a90f7;_0x10c901['model']=_[_0x632b('0x39')](db[_0x632b('0x7c')][_0x632b('0x35')]);_0x10c901[_0x632b('0x3a')]=_[_0x632b('0x39')](_0x590e68[_0x632b('0x3a')]);_0x10c901['filters']=_[_0x632b('0x3c')](_0x10c901['model'],_0x10c901[_0x632b('0x3a')]);_0x57a2a6['attributes']=_[_0x632b('0x3c')](_0x10c901[_0x632b('0x3d')],qs[_0x632b('0x3f')](_0x590e68[_0x632b('0x3a')]['fields']));_0x57a2a6[_0x632b('0x3e')]=_0x57a2a6[_0x632b('0x3e')]['length']?_0x57a2a6[_0x632b('0x3e')]:_0x10c901[_0x632b('0x3d')];_0x57a2a6[_0x632b('0x41')]=qs[_0x632b('0x42')](_0x590e68[_0x632b('0x3a')]['sort']);_0x57a2a6[_0x632b('0x43')]=qs[_0x632b('0x3b')](_['pick'](_0x590e68[_0x632b('0x3a')],_0x10c901['filters']));if(_0x590e68[_0x632b('0x3a')]['filter']){_0x57a2a6[_0x632b('0x43')]=_['merge'](_0x57a2a6[_0x632b('0x43')],{'$or':_[_0x632b('0x38')](_0x57a2a6[_0x632b('0x3e')],function(_0x1f5d21){var _0x405b3c={};_0x405b3c[_0x1f5d21]={'$like':'%'+_0x590e68['query'][_0x632b('0x45')]+'%'};return _0x405b3c;})});}_0x57a2a6=_[_0x632b('0x47')]({},_0x57a2a6,_0x590e68['options']);return _0x64f45a[_0x632b('0x7a')](_0x57a2a6);}})['then'](function(_0x1bbb23){if(_0x1bbb23){_0x1e07da=_0x1bbb23['length'];if(!_0x590e68[_0x632b('0x3a')]['hasOwnProperty'](_0x632b('0x7d'))){_0x57a2a6[_0x632b('0x21')]=qs[_0x632b('0x21')](_0x590e68['query'][_0x632b('0x21')]);_0x57a2a6[_0x632b('0x22')]=qs[_0x632b('0x22')](_0x590e68[_0x632b('0x3a')][_0x632b('0x22')]);}return _0x64f45a[_0x632b('0x7a')](_0x57a2a6);}})[_0x632b('0x2e')](function(_0x31eee9){if(_0x31eee9){return _0x31eee9?{'count':_0x1e07da,'rows':_0x31eee9}:null;}})[_0x632b('0x2e')](respondWithResult(_0x4393e9,null))[_0x632b('0x4e')](handleError(_0x4393e9,null));};exports[_0x632b('0x7e')]=function(_0xf1a293,_0x1fcb2a,_0x55c36d){var _0x23385d={};var _0x376112={};var _0x1e6905;var _0x3293be;return db[_0x632b('0x34')][_0x632b('0x7b')]({'where':{'id':_0xf1a293[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](handleEntityNotFound(_0x1fcb2a,null))[_0x632b('0x2e')](function(_0x40fb13){if(_0x40fb13){_0x1e6905=_0x40fb13;_0x376112[_0x632b('0x3d')]=_[_0x632b('0x39')](db['Team'][_0x632b('0x35')]);_0x376112[_0x632b('0x3a')]=_[_0x632b('0x39')](_0xf1a293[_0x632b('0x3a')]);_0x376112[_0x632b('0x3b')]=_[_0x632b('0x3c')](_0x376112[_0x632b('0x3d')],_0x376112[_0x632b('0x3a')]);_0x23385d['attributes']=_[_0x632b('0x3c')](_0x376112[_0x632b('0x3d')],qs[_0x632b('0x3f')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x3f')]));_0x23385d[_0x632b('0x3e')]=_0x23385d[_0x632b('0x3e')][_0x632b('0x40')]?_0x23385d[_0x632b('0x3e')]:_0x376112['model'];_0x23385d[_0x632b('0x41')]=qs[_0x632b('0x42')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x42')]);_0x23385d[_0x632b('0x43')]=qs[_0x632b('0x3b')](_['pick'](_0xf1a293[_0x632b('0x3a')],_0x376112[_0x632b('0x3b')]));if(_0xf1a293[_0x632b('0x3a')]['filter']){_0x23385d['where']=_[_0x632b('0x47')](_0x23385d[_0x632b('0x43')],{'$or':_[_0x632b('0x38')](_0x23385d[_0x632b('0x3e')],function(_0x16c798){var _0x384439={};_0x384439[_0x16c798]={'$like':'%'+_0xf1a293[_0x632b('0x3a')]['filter']+'%'};return _0x384439;})});}_0x23385d=_[_0x632b('0x47')]({},_0x23385d,_0xf1a293['options']);return _0x1e6905[_0x632b('0x7e')](_0x23385d);}})['then'](function(_0x4d3bb7){if(_0x4d3bb7){_0x3293be=_0x4d3bb7[_0x632b('0x40')];if(!_0xf1a293[_0x632b('0x3a')][_0x632b('0x7f')]('nolimit')){_0x23385d['limit']=qs[_0x632b('0x21')](_0xf1a293[_0x632b('0x3a')][_0x632b('0x21')]);_0x23385d['offset']=qs['offset'](_0xf1a293[_0x632b('0x3a')][_0x632b('0x22')]);}return _0x1e6905[_0x632b('0x7e')](_0x23385d);}})[_0x632b('0x2e')](function(_0x66cbf3){if(_0x66cbf3){return _0x66cbf3?{'count':_0x3293be,'rows':_0x66cbf3}:null;}})[_0x632b('0x2e')](respondWithResult(_0x1fcb2a,null))['catch'](handleError(_0x1fcb2a,null));};exports[_0x632b('0x80')]=function(_0x352ba8,_0x3b7be7,_0x32facd){var _0x366643=_0x352ba8[_0x632b('0x53')]['ids'];var _0x5db842;return db[_0x632b('0x81')][_0x632b('0x82')]({'where':{'id':_0x366643},'attributes':['id'],'include':[{'model':db['User'],'as':_0x632b('0x83'),'attributes':['id',_0x632b('0x31'),_0x632b('0x84'),_0x632b('0x85'),_0x632b('0x86')],'raw':!![]}]})[_0x632b('0x2e')](function(_0x17bfa2){if(_0x17bfa2){_0x5db842=_0x17bfa2;var _0x28b626=_['flatMap'](_0x17bfa2,function(_0x4ce406){var _0x1b274d=_0x4ce406[_0x632b('0x2b')]({'plain':!![]});return _0x1b274d['Agents'];});return db[_0x632b('0x34')][_0x632b('0x4d')]({'where':{'id':_0x352ba8[_0x632b('0x4c')]['id']}})[_0x632b('0x2e')](function(_0x36564e){return db['sequelize']['transaction'](function(_0x824140){return _0x36564e[_0x632b('0x80')](_0x366643,{'transaction':_0x824140})[_0x632b('0x2e')](function(){return BPromise[_0x632b('0x87')](_0x5db842,function(_0x214851){return db[_0x632b('0x88')]['upsert']({'TeamId':_0x214851['id'],'VoicePrefixId':_0x352ba8[_0x632b('0x4c')]['id']},{'transaction':_0x824140});});})['then'](function(){return BPromise[_0x632b('0x87')](_0x28b626,function(_0x26e1a9){return db[_0x632b('0x89')][_0x632b('0x8a')]({'where':{'UserId':_0x26e1a9['id'],'VoicePrefixId':_0x352ba8[_0x632b('0x4c')]['id']},'transaction':_0x824140});});})[_0x632b('0x2e')](function(){_0x28b626[_0x632b('0x8b')](function(_0x19d11e){socket[_0x632b('0x79')](_0x632b('0x75'),{'UserId':_0x19d11e['id'],'VoicePrefixId':_0x36564e['id']});});});});});}})['then'](respondWithStatusCode(_0x3b7be7,null))[_0x632b('0x4e')](handleError(_0x3b7be7,null));};exports[_0x632b('0x8c')]=function(_0x36244e,_0x1cc52f,_0x5cd2b7){return db[_0x632b('0x81')][_0x632b('0x82')]({'where':{'id':_0x36244e['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x632b('0x83'),'attributes':['id'],'raw':!![]}]})[_0x632b('0x2e')](handleEntityNotFound(_0x1cc52f,null))[_0x632b('0x2e')](function(_0x2a45f3){var _0x56d205=_[_0x632b('0x38')](_0x2a45f3,'id');var _0x392b6b=[];var _0x1cfc20=[];var _0x5bd1bb=squel[_0x632b('0x8d')]();_0x5bd1bb['field']('tq.TeamId')[_0x632b('0x8e')](_0x632b('0x8f'),'tq')[_0x632b('0x90')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x632b('0x91'),_0x36244e[_0x632b('0x4c')]['id']);for(var _0x2d0712=0x0;_0x2d0712<_0x2a45f3['length'];_0x2d0712+=0x1){let _0x1f9cb4=_0x2a45f3[_0x2d0712];for(var _0x90b25c=0x0;_0x90b25c<_0x1f9cb4[_0x632b('0x83')][_0x632b('0x40')];_0x90b25c+=0x1){let _0x163ad2=_0x1f9cb4['Agents'][_0x90b25c];var _0x21af7a=_0x5bd1bb['clone']();_0x21af7a['where'](_0x632b('0x92'),_0x163ad2['id']);_0x1cfc20[_0x632b('0x67')](db['sequelize']['query'](_0x21af7a[_0x632b('0x93')](),{'type':db[_0x632b('0x51')][_0x632b('0x94')]['SELECT']})[_0x632b('0x2e')](function(_0x53c0c4){if(_0x53c0c4['length']===0x1){return _0x163ad2['id'];}else{var _0x112ecc=_[_0x632b('0x95')](_[_0x632b('0x38')](_0x53c0c4,_0x632b('0x96')),function(_0x4e5523){return _[_0x632b('0x97')](_0x56d205,_0x4e5523);});if(_0x112ecc){return _0x163ad2['id'];}}}));}}return BPromise[_0x632b('0x98')](_0x1cfc20)[_0x632b('0x2e')](function(_0x350a1b){_0x392b6b=_(_0x392b6b)[_0x632b('0x99')](_0x350a1b)[_0x632b('0x9a')]()['value']();return db[_0x632b('0x34')]['find']({'where':{'id':_0x36244e[_0x632b('0x4c')]['id']}})['then'](function(_0x460dce){return db[_0x632b('0x51')][_0x632b('0x52')](function(_0x2c88a){return _0x460dce[_0x632b('0x8c')](_0x36244e[_0x632b('0x3a')][_0x632b('0x72')],{'transaction':_0x2c88a})[_0x632b('0x2e')](function(){if(!_[_0x632b('0x9b')](_0x392b6b)){return _0x460dce[_0x632b('0x76')](_0x392b6b,{'transaction':_0x2c88a});}})[_0x632b('0x2e')](function(){_0x392b6b[_0x632b('0x8b')](function(_0x3784d2){socket[_0x632b('0x79')](_0x632b('0x78'),{'UserId':_0x3784d2,'VoicePrefixId':_0x460dce['id']});});});});});});})['then'](respondWithStatusCode(_0x1cc52f,null))[_0x632b('0x4e')](handleError(_0x1cc52f,null));};
\ No newline at end of file
+var _0xb574=['count','set','apply','reject','save','update','then','get','VoicePrefixes','UserProfileResource','end','error','stack','name','send','VoicePrefix','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','destroy','params','describe','sequelize','transaction','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','app','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','VoicePrefixId','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','goto','charAt','body','system-','addAgents','spread','ids','emit','userVoicePrefix:save','isArray','userVoicePrefix:remove','getAgents','findOne','User','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','each','TeamVoicePrefix','forEach','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','removeTeams','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','json','offset','undefined','limit'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0xb574,0x106));var _0x4b57=function(_0x192f70,_0x92d0bd){_0x192f70=_0x192f70-0x0;var _0x1830bb=_0xb574[_0x192f70];return _0x1830bb;};'use strict';var emlformat=require(_0x4b57('0x0'));var rimraf=require(_0x4b57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4b57('0x2'));var rp=require(_0x4b57('0x3'));var moment=require('moment');var BPromise=require(_0x4b57('0x4'));var Mustache=require(_0x4b57('0x5'));var util=require(_0x4b57('0x6'));var path=require(_0x4b57('0x7'));var sox=require(_0x4b57('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4b57('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4b57('0xa'));var toCsv=require(_0x4b57('0xb'));var querystring=require(_0x4b57('0xc'));var Papa=require(_0x4b57('0xd'));var Redis=require(_0x4b57('0xe'));var authService=require(_0x4b57('0xf'));var qs=require(_0x4b57('0x10'));var as=require(_0x4b57('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b57('0x12'))(_0x4b57('0x13'));var utils=require(_0x4b57('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4b57('0x15'))['db'];config[_0x4b57('0x16')]=_[_0x4b57('0x17')](config[_0x4b57('0x16')],{'host':_0x4b57('0x18'),'port':0x18eb});var socket=require(_0x4b57('0x19'))(new Redis(config[_0x4b57('0x16')]));require(_0x4b57('0x1a'))[_0x4b57('0x1b')](socket);function respondWithStatusCode(_0x4e15be,_0x4a58dc){_0x4a58dc=_0x4a58dc||0xcc;return function(_0x236c95){if(_0x236c95){return _0x4e15be[_0x4b57('0x1c')](_0x4a58dc);}return _0x4e15be[_0x4b57('0x1d')](_0x4a58dc)['end']();};}function respondWithResult(_0x284640,_0x48bd13){_0x48bd13=_0x48bd13||0xc8;return function(_0x159ce5){if(_0x159ce5){return _0x284640[_0x4b57('0x1d')](_0x48bd13)[_0x4b57('0x1e')](_0x159ce5);}};}function respondWithFilteredResult(_0x10eda5,_0x20cf5e){return function(_0xfb71cc){if(_0xfb71cc){var _0x4ede42=typeof _0x20cf5e[_0x4b57('0x1f')]===_0x4b57('0x20')&&typeof _0x20cf5e[_0x4b57('0x21')]===_0x4b57('0x20');var _0x4baaeb=_0xfb71cc[_0x4b57('0x22')];var _0x1ca49e=_0x4ede42?0x0:_0x20cf5e[_0x4b57('0x1f')];var _0x2682d6=_0x4ede42?_0xfb71cc[_0x4b57('0x22')]:_0x20cf5e[_0x4b57('0x1f')]+_0x20cf5e['limit'];var _0x4b504b;if(_0x2682d6>=_0x4baaeb){_0x2682d6=_0x4baaeb;_0x4b504b=0xc8;}else{_0x4b504b=0xce;}_0x10eda5[_0x4b57('0x1d')](_0x4b504b);return _0x10eda5[_0x4b57('0x23')]('Content-Range',_0x1ca49e+'-'+_0x2682d6+'/'+_0x4baaeb)[_0x4b57('0x1e')](_0xfb71cc);}return null;};}function patchUpdates(_0x4a34b2){return function(_0x286c7d){try{jsonpatch[_0x4b57('0x24')](_0x286c7d,_0x4a34b2,!![]);}catch(_0x56f017){return BPromise[_0x4b57('0x25')](_0x56f017);}return _0x286c7d[_0x4b57('0x26')]();};}function saveUpdates(_0x4d07c9,_0x3e7b96){return function(_0x12dedf){if(_0x12dedf){return _0x12dedf[_0x4b57('0x27')](_0x4d07c9)[_0x4b57('0x28')](function(_0x540eff){return _0x540eff;});}return null;};}function removeEntity(_0x156962,_0x51d0c3){return function(_0x131dab){if(_0x131dab){return _0x131dab['destroy']()[_0x4b57('0x28')](function(){var _0x2dc9d8=_0x131dab[_0x4b57('0x29')]({'plain':!![]});var _0x6584c4=_0x4b57('0x2a');return db[_0x4b57('0x2b')]['destroy']({'where':{'type':_0x6584c4,'resourceId':_0x2dc9d8['id']}})['then'](function(){return _0x131dab;});})[_0x4b57('0x28')](function(){_0x156962['status'](0xcc)[_0x4b57('0x2c')]();});}};}function handleEntityNotFound(_0x458f70,_0x874cf7){return function(_0x3af22f){if(!_0x3af22f){_0x458f70[_0x4b57('0x1c')](0x194);}return _0x3af22f;};}function handleError(_0x2c20d2,_0x49ba89){_0x49ba89=_0x49ba89||0x1f4;return function(_0xab365c){logger[_0x4b57('0x2d')](_0xab365c[_0x4b57('0x2e')]);if(_0xab365c[_0x4b57('0x2f')]){delete _0xab365c['name'];}_0x2c20d2[_0x4b57('0x1d')](_0x49ba89)[_0x4b57('0x30')](_0xab365c);};}exports['index']=function(_0xbfb420,_0xa5b5dc){var _0x4726a6={},_0x255c7d={},_0x492de8={'count':0x0,'rows':[]};var _0x5742a0=_['map'](db[_0x4b57('0x31')][_0x4b57('0x32')],function(_0xccc679){return{'name':_0xccc679[_0x4b57('0x33')],'type':_0xccc679[_0x4b57('0x34')]['key']};});_0x255c7d[_0x4b57('0x35')]=_[_0x4b57('0x36')](_0x5742a0,_0x4b57('0x2f'));_0x255c7d['query']=_[_0x4b57('0x37')](_0xbfb420[_0x4b57('0x38')]);_0x255c7d[_0x4b57('0x39')]=_['intersection'](_0x255c7d[_0x4b57('0x35')],_0x255c7d[_0x4b57('0x38')]);_0x4726a6['attributes']=_[_0x4b57('0x3a')](_0x255c7d[_0x4b57('0x35')],qs[_0x4b57('0x3b')](_0xbfb420[_0x4b57('0x38')][_0x4b57('0x3b')]));_0x4726a6[_0x4b57('0x3c')]=_0x4726a6['attributes'][_0x4b57('0x3d')]?_0x4726a6[_0x4b57('0x3c')]:_0x255c7d[_0x4b57('0x35')];if(!_0xbfb420[_0x4b57('0x38')][_0x4b57('0x3e')](_0x4b57('0x3f'))){_0x4726a6[_0x4b57('0x21')]=qs['limit'](_0xbfb420['query'][_0x4b57('0x21')]);_0x4726a6[_0x4b57('0x1f')]=qs[_0x4b57('0x1f')](_0xbfb420['query'][_0x4b57('0x1f')]);}_0x4726a6[_0x4b57('0x40')]=qs[_0x4b57('0x41')](_0xbfb420[_0x4b57('0x38')]['sort']);_0x4726a6[_0x4b57('0x42')]=qs[_0x4b57('0x39')](_[_0x4b57('0x43')](_0xbfb420[_0x4b57('0x38')],_0x255c7d['filters']),_0x5742a0);if(_0xbfb420['query']['filter']){_0x4726a6[_0x4b57('0x42')]=_[_0x4b57('0x44')](_0x4726a6[_0x4b57('0x42')],{'$or':_[_0x4b57('0x36')](_0x5742a0,function(_0x5f4971){if(_0x5f4971[_0x4b57('0x34')]!==_0x4b57('0x45')){var _0x286606={};_0x286606[_0x5f4971[_0x4b57('0x2f')]]={'$like':'%'+_0xbfb420[_0x4b57('0x38')][_0x4b57('0x46')]+'%'};return _0x286606;}})});}_0x4726a6=_[_0x4b57('0x44')]({},_0x4726a6,_0xbfb420[_0x4b57('0x47')]);var _0x1e222b={'where':_0x4726a6['where']};return db[_0x4b57('0x31')][_0x4b57('0x22')](_0x1e222b)[_0x4b57('0x28')](function(_0x5b2f50){_0x492de8[_0x4b57('0x22')]=_0x5b2f50;if(_0xbfb420['query'][_0x4b57('0x48')]){_0x4726a6[_0x4b57('0x49')]=[{'all':!![]}];}return db[_0x4b57('0x31')][_0x4b57('0x4a')](_0x4726a6);})[_0x4b57('0x28')](function(_0x477352){_0x492de8[_0x4b57('0x4b')]=_0x477352;return _0x492de8;})[_0x4b57('0x28')](respondWithFilteredResult(_0xa5b5dc,_0x4726a6))[_0x4b57('0x4c')](handleError(_0xa5b5dc,null));};exports[_0x4b57('0x4d')]=function(_0x9864b8,_0x423144){var _0x3a87a1={'raw':![],'where':{'id':_0x9864b8['params']['id']}},_0x4fbed3={};_0x4fbed3[_0x4b57('0x35')]=_[_0x4b57('0x37')](db[_0x4b57('0x31')][_0x4b57('0x32')]);_0x4fbed3['query']=_[_0x4b57('0x37')](_0x9864b8[_0x4b57('0x38')]);_0x4fbed3['filters']=_[_0x4b57('0x3a')](_0x4fbed3['model'],_0x4fbed3[_0x4b57('0x38')]);_0x3a87a1['attributes']=_['intersection'](_0x4fbed3[_0x4b57('0x35')],qs[_0x4b57('0x3b')](_0x9864b8['query'][_0x4b57('0x3b')]));_0x3a87a1[_0x4b57('0x3c')]=_0x3a87a1[_0x4b57('0x3c')][_0x4b57('0x3d')]?_0x3a87a1[_0x4b57('0x3c')]:_0x4fbed3[_0x4b57('0x35')];if(_0x9864b8['query'][_0x4b57('0x48')]){_0x3a87a1[_0x4b57('0x49')]=[{'all':!![]}];}_0x3a87a1=_['merge']({},_0x3a87a1,_0x9864b8[_0x4b57('0x47')]);return db[_0x4b57('0x31')][_0x4b57('0x4e')](_0x3a87a1)['then'](handleEntityNotFound(_0x423144,null))[_0x4b57('0x28')](respondWithResult(_0x423144,null))['catch'](handleError(_0x423144,null));};exports[_0x4b57('0x4f')]=function(_0xfbe7ed,_0x2ae205){return db[_0x4b57('0x31')][_0x4b57('0x4e')]({'where':{'id':_0xfbe7ed[_0x4b57('0x50')]['id']}})[_0x4b57('0x28')](handleEntityNotFound(_0x2ae205,null))[_0x4b57('0x28')](removeEntity(_0x2ae205,null))['catch'](handleError(_0x2ae205,null));};exports[_0x4b57('0x51')]=function(_0x19349b,_0x3ad98f){return db['VoicePrefix'][_0x4b57('0x51')]()[_0x4b57('0x28')](respondWithResult(_0x3ad98f,null))[_0x4b57('0x4c')](handleError(_0x3ad98f,null));};exports['create']=function(_0x1579d1,_0x3d2336){var _0x343cec;return db[_0x4b57('0x52')][_0x4b57('0x53')](function(_0xb7c37c){return db[_0x4b57('0x31')]['create'](_0x1579d1['body'],{'transaction':_0xb7c37c})[_0x4b57('0x28')](function(_0x61a1ae){_0x343cec=_0x61a1ae[_0x4b57('0x29')]({'plain':!![]});return db[_0x4b57('0x54')]['find']({'where':{'id':_0x343cec[_0x4b57('0x55')]},'raw':!![]})[_0x4b57('0x28')](function(_0x41529e){return createVoicePrefixExtensions(_0x343cec,_0x41529e,_0xb7c37c);});});})[_0x4b57('0x28')](function(){var _0x4857c3=_0x1579d1['user'][_0x4b57('0x29')]({'plain':!![]});if(!_0x4857c3)throw new Error(_0x4b57('0x56'));if(_0x4857c3['role']==='user'){var _0x451737=_0x343cec;return db['UserProfileSection'][_0x4b57('0x4e')]({'where':{'name':_0x4b57('0x2a'),'userProfileId':_0x4857c3[_0x4b57('0x57')]},'raw':!![]})[_0x4b57('0x28')](function(_0x37d420){if(_0x37d420&&_0x37d420['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x451737['name'],'resourceId':_0x451737['id'],'type':_0x37d420[_0x4b57('0x2f')],'sectionId':_0x37d420['id']},{})[_0x4b57('0x28')](function(){return _0x343cec;});}else{return _0x343cec;}})['catch'](function(_0x34aa23){logger[_0x4b57('0x2d')](_0x4b57('0x58'),_0x34aa23);throw _0x34aa23;});}return _0x343cec;})[_0x4b57('0x28')](respondWithResult(_0x3d2336,null))[_0x4b57('0x4c')](handleError(_0x3d2336,null));};function Extension(_0x1fcc10,_0xf1bf63,_0x40cab4,_0x2c5289){this['context']=_0x4b57('0x59');this['exten']=_0x1fcc10;this[_0x4b57('0x5a')]=_0x40cab4;this[_0x4b57('0x34')]='system';this[_0x4b57('0x5b')]=_0x4b57('0x5c');this[_0x4b57('0x5d')]=_0xf1bf63;this[_0x4b57('0x5e')]=_0x2c5289;}function createVoicePrefixExtensions(_0x36f154,_0xc24706,_0xb58059){return new BPromise(function(_0xbe6f94,_0x3ed705){var _0x8851dd=new Extension(formatPrefixName(_0x36f154[_0x4b57('0x5f')]),0x1,_0x4b57('0x60'),'Voice\x20Prefix');_0x8851dd[_0x4b57('0x61')]=_0x36f154['id'];return db[_0x4b57('0x54')]['create'](_0x8851dd,{'transaction':_0xb58059})[_0x4b57('0x28')](function(_0x564792){var _0x566fec=_0x564792['get']({'plain':!![]});var _0x1004ac=_['map'](addVoicePrefixExtensions(_0x36f154,_0xc24706),function(_0x310db6){_0x310db6[_0x4b57('0x55')]=_0x566fec['id'];_0x310db6['VoicePrefixId']=_0x36f154['id'];return _0x310db6;});return db['VoiceExtension'][_0x4b57('0x62')](_0x1004ac,{'transaction':_0xb58059})[_0x4b57('0x28')](function(_0x431f24){if(!_0x431f24){return _0x3ed705('Extensions\x20creation\x20failed');}else{return _0xbe6f94(_0x431f24);}})[_0x4b57('0x4c')](function(_0x3619a1){return _0x3ed705(_0x3619a1);});});;});};function addVoicePrefixExtensions(_0x5f372d,_0x20172a){var _0x119933=[];var _0x5a0c38=formatPrefixName(_0x5f372d[_0x4b57('0x5f')]);_0x119933[_0x4b57('0x63')](new Extension(_0x5a0c38,0x2,_0x4b57('0x64'),_0x4b57('0x65')+_0x5f372d[_0x4b57('0x2f')]));if(_0x5f372d[_0x4b57('0x66')]){_0x119933[_0x4b57('0x63')](new Extension(_0x5a0c38,0x3,'Set','PREFIX-CALLERIDALL='+_0x5f372d[_0x4b57('0x66')]));}else{_0x119933[_0x4b57('0x63')](new Extension(_0x5a0c38,0x3,'NoOp','No\x20callerid\x20available'));}_0x119933[_0x4b57('0x63')](new Extension(_0x5a0c38,0x4,_0x4b57('0x67'),_0x20172a['context']+','+'${EXTEN:'+(0x8+_0x5f372d['name'][_0x4b57('0x3d')])+'}'+','+0x1));return _0x119933;}function formatPrefixName(_0x438f3e){var _0x243f4d='_';for(var _0x5976ce=0x0;_0x5976ce<_0x438f3e['length'];_0x5976ce++){if(_0x438f3e['charAt'](_0x5976ce)=='-'){_0x243f4d+=_0x438f3e[_0x4b57('0x68')](_0x5976ce);}else{_0x243f4d+='['+_0x438f3e['charAt'](_0x5976ce)+']';}}_0x243f4d+='.';return _0x243f4d;}exports[_0x4b57('0x27')]=function(_0x502313,_0x13c680,_0x425fe0){var _0x29b8ac=_0x502313[_0x4b57('0x69')];_0x29b8ac['prefix']=_0x4b57('0x6a')+_0x29b8ac['name']+'-';return db['sequelize'][_0x4b57('0x53')](function(_0x2a5bbd){return db['VoicePrefix'][_0x4b57('0x27')](_0x29b8ac,{'where':{'id':_0x29b8ac['id']},'transaction':_0x2a5bbd})[_0x4b57('0x28')](function(){return db[_0x4b57('0x54')][_0x4b57('0x4f')]({'where':{'VoicePrefixId':_0x29b8ac['id']},'transaction':_0x2a5bbd})[_0x4b57('0x28')](function(){return db[_0x4b57('0x54')]['find']({'where':{'id':_0x29b8ac[_0x4b57('0x55')]},'raw':!![]})[_0x4b57('0x28')](function(_0x3db213){return createVoicePrefixExtensions(_0x29b8ac,_0x3db213,_0x2a5bbd);});});});})[_0x4b57('0x28')](function(){return db[_0x4b57('0x31')]['findById'](_0x29b8ac['id']);})[_0x4b57('0x28')](respondWithResult(_0x13c680,null))[_0x4b57('0x4c')](handleError(_0x13c680,null));};exports[_0x4b57('0x6b')]=function(_0x24bd50,_0x5565f4,_0x4b17c3){return db[_0x4b57('0x31')][_0x4b57('0x4e')]({'where':{'id':_0x24bd50[_0x4b57('0x50')]['id']}})['then'](handleEntityNotFound(_0x5565f4,null))[_0x4b57('0x28')](function(_0x5c1679){if(_0x5c1679){return _0x5c1679[_0x4b57('0x6b')](_0x24bd50[_0x4b57('0x69')]['ids'],_['omit'](_0x24bd50[_0x4b57('0x69')],['ids','id'])||{})[_0x4b57('0x6c')](function(_0x428450){for(var _0x374d6f=0x0;_0x374d6f<_0x24bd50[_0x4b57('0x69')][_0x4b57('0x6d')]['length'];_0x374d6f+=0x1){socket[_0x4b57('0x6e')](_0x4b57('0x6f'),{'UserId':Number(_0x24bd50[_0x4b57('0x69')]['ids'][_0x374d6f]),'VoicePrefixId':Number(_0x24bd50['params']['id'])});}return _0x428450;});}})[_0x4b57('0x28')](respondWithResult(_0x5565f4,null))[_0x4b57('0x4c')](handleError(_0x5565f4,null));};exports['removeAgents']=function(_0x1ceb74,_0x1148ff,_0x5d4ff9){return db[_0x4b57('0x31')][_0x4b57('0x4e')]({'where':{'id':_0x1ceb74['params']['id']}})[_0x4b57('0x28')](handleEntityNotFound(_0x1148ff,null))[_0x4b57('0x28')](function(_0x36ab03){if(_0x36ab03){return _0x36ab03['removeAgents'](_0x1ceb74[_0x4b57('0x38')][_0x4b57('0x6d')])[_0x4b57('0x28')](function(){if(_[_0x4b57('0x70')](_0x1ceb74[_0x4b57('0x38')][_0x4b57('0x6d')])){for(var _0x3d15eb=0x0;_0x3d15eb<_0x1ceb74['query'][_0x4b57('0x6d')][_0x4b57('0x3d')];_0x3d15eb+=0x1){socket['emit'](_0x4b57('0x71'),{'UserId':Number(_0x1ceb74[_0x4b57('0x38')]['ids'][_0x3d15eb]),'VoicePrefixId':Number(_0x1ceb74[_0x4b57('0x50')]['id'])});}}else{socket[_0x4b57('0x6e')](_0x4b57('0x71'),{'UserId':Number(_0x1ceb74[_0x4b57('0x38')][_0x4b57('0x6d')]),'VoicePrefixId':Number(_0x1ceb74[_0x4b57('0x50')]['id'])});}});}})[_0x4b57('0x28')](respondWithStatusCode(_0x1148ff,null))[_0x4b57('0x4c')](handleError(_0x1148ff,null));};exports[_0x4b57('0x72')]=function(_0x830213,_0x87a28b,_0x3ab6b0){var _0x1dbfb8={};var _0x11f513={};var _0x185dab;var _0x4468fb;return db[_0x4b57('0x31')][_0x4b57('0x73')]({'where':{'id':_0x830213[_0x4b57('0x50')]['id']}})[_0x4b57('0x28')](handleEntityNotFound(_0x87a28b,null))[_0x4b57('0x28')](function(_0x20da30){if(_0x20da30){_0x185dab=_0x20da30;_0x11f513[_0x4b57('0x35')]=_[_0x4b57('0x37')](db[_0x4b57('0x74')]['rawAttributes']);_0x11f513['query']=_['keys'](_0x830213['query']);_0x11f513[_0x4b57('0x39')]=_[_0x4b57('0x3a')](_0x11f513['model'],_0x11f513[_0x4b57('0x38')]);_0x1dbfb8[_0x4b57('0x3c')]=_['intersection'](_0x11f513[_0x4b57('0x35')],qs[_0x4b57('0x3b')](_0x830213['query']['fields']));_0x1dbfb8[_0x4b57('0x3c')]=_0x1dbfb8[_0x4b57('0x3c')][_0x4b57('0x3d')]?_0x1dbfb8[_0x4b57('0x3c')]:_0x11f513[_0x4b57('0x35')];_0x1dbfb8[_0x4b57('0x40')]=qs[_0x4b57('0x41')](_0x830213['query']['sort']);_0x1dbfb8[_0x4b57('0x42')]=qs[_0x4b57('0x39')](_[_0x4b57('0x43')](_0x830213[_0x4b57('0x38')],_0x11f513[_0x4b57('0x39')]));if(_0x830213[_0x4b57('0x38')][_0x4b57('0x46')]){_0x1dbfb8[_0x4b57('0x42')]=_[_0x4b57('0x44')](_0x1dbfb8['where'],{'$or':_[_0x4b57('0x36')](_0x1dbfb8[_0x4b57('0x3c')],function(_0x3dacb2){var _0x62df8b={};_0x62df8b[_0x3dacb2]={'$like':'%'+_0x830213['query']['filter']+'%'};return _0x62df8b;})});}_0x1dbfb8=_[_0x4b57('0x44')]({},_0x1dbfb8,_0x830213[_0x4b57('0x47')]);return _0x185dab['getAgents'](_0x1dbfb8);}})[_0x4b57('0x28')](function(_0x71a944){if(_0x71a944){_0x4468fb=_0x71a944['length'];if(!_0x830213[_0x4b57('0x38')]['hasOwnProperty']('nolimit')){_0x1dbfb8[_0x4b57('0x21')]=qs[_0x4b57('0x21')](_0x830213[_0x4b57('0x38')][_0x4b57('0x21')]);_0x1dbfb8[_0x4b57('0x1f')]=qs['offset'](_0x830213[_0x4b57('0x38')][_0x4b57('0x1f')]);}return _0x185dab[_0x4b57('0x72')](_0x1dbfb8);}})[_0x4b57('0x28')](function(_0x14c1d6){if(_0x14c1d6){return _0x14c1d6?{'count':_0x4468fb,'rows':_0x14c1d6}:null;}})[_0x4b57('0x28')](respondWithResult(_0x87a28b,null))[_0x4b57('0x4c')](handleError(_0x87a28b,null));};exports['getTeams']=function(_0xe1bf71,_0x5ea27c,_0x35a29b){var _0x181029={};var _0x3b5100={};var _0x53b4a5;var _0x5357a3;return db[_0x4b57('0x31')][_0x4b57('0x73')]({'where':{'id':_0xe1bf71[_0x4b57('0x50')]['id']}})['then'](handleEntityNotFound(_0x5ea27c,null))[_0x4b57('0x28')](function(_0x455949){if(_0x455949){_0x53b4a5=_0x455949;_0x3b5100['model']=_[_0x4b57('0x37')](db[_0x4b57('0x75')][_0x4b57('0x32')]);_0x3b5100[_0x4b57('0x38')]=_[_0x4b57('0x37')](_0xe1bf71[_0x4b57('0x38')]);_0x3b5100[_0x4b57('0x39')]=_[_0x4b57('0x3a')](_0x3b5100['model'],_0x3b5100[_0x4b57('0x38')]);_0x181029[_0x4b57('0x3c')]=_[_0x4b57('0x3a')](_0x3b5100['model'],qs[_0x4b57('0x3b')](_0xe1bf71['query']['fields']));_0x181029[_0x4b57('0x3c')]=_0x181029[_0x4b57('0x3c')][_0x4b57('0x3d')]?_0x181029[_0x4b57('0x3c')]:_0x3b5100[_0x4b57('0x35')];_0x181029[_0x4b57('0x40')]=qs[_0x4b57('0x41')](_0xe1bf71[_0x4b57('0x38')][_0x4b57('0x41')]);_0x181029['where']=qs[_0x4b57('0x39')](_['pick'](_0xe1bf71[_0x4b57('0x38')],_0x3b5100['filters']));if(_0xe1bf71['query'][_0x4b57('0x46')]){_0x181029[_0x4b57('0x42')]=_[_0x4b57('0x44')](_0x181029[_0x4b57('0x42')],{'$or':_[_0x4b57('0x36')](_0x181029[_0x4b57('0x3c')],function(_0x30e3ab){var _0xca5674={};_0xca5674[_0x30e3ab]={'$like':'%'+_0xe1bf71[_0x4b57('0x38')][_0x4b57('0x46')]+'%'};return _0xca5674;})});}_0x181029=_[_0x4b57('0x44')]({},_0x181029,_0xe1bf71[_0x4b57('0x47')]);return _0x53b4a5[_0x4b57('0x76')](_0x181029);}})[_0x4b57('0x28')](function(_0x52d476){if(_0x52d476){_0x5357a3=_0x52d476[_0x4b57('0x3d')];if(!_0xe1bf71[_0x4b57('0x38')][_0x4b57('0x3e')]('nolimit')){_0x181029[_0x4b57('0x21')]=qs[_0x4b57('0x21')](_0xe1bf71[_0x4b57('0x38')][_0x4b57('0x21')]);_0x181029[_0x4b57('0x1f')]=qs['offset'](_0xe1bf71[_0x4b57('0x38')][_0x4b57('0x1f')]);}return _0x53b4a5[_0x4b57('0x76')](_0x181029);}})[_0x4b57('0x28')](function(_0x1c63c1){if(_0x1c63c1){return _0x1c63c1?{'count':_0x5357a3,'rows':_0x1c63c1}:null;}})[_0x4b57('0x28')](respondWithResult(_0x5ea27c,null))[_0x4b57('0x4c')](handleError(_0x5ea27c,null));};exports[_0x4b57('0x77')]=function(_0x20560b,_0x535ccc,_0x320a0a){var _0x2a2689=_0x20560b[_0x4b57('0x69')][_0x4b57('0x6d')];var _0x19e09a;return db[_0x4b57('0x75')][_0x4b57('0x4a')]({'where':{'id':_0x2a2689},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4b57('0x78'),'attributes':['id',_0x4b57('0x2f'),_0x4b57('0x79'),_0x4b57('0x7a'),_0x4b57('0x7b')],'raw':!![]}]})[_0x4b57('0x28')](function(_0x4c7fa8){if(_0x4c7fa8){_0x19e09a=_0x4c7fa8;var _0x46e1b0=_[_0x4b57('0x7c')](_0x4c7fa8,function(_0x448b3d){var _0x287c29=_0x448b3d[_0x4b57('0x29')]({'plain':!![]});return _0x287c29[_0x4b57('0x78')];});return db['VoicePrefix'][_0x4b57('0x4e')]({'where':{'id':_0x20560b[_0x4b57('0x50')]['id']}})['then'](function(_0x60d8d0){return db[_0x4b57('0x52')][_0x4b57('0x53')](function(_0x34d45d){return _0x60d8d0[_0x4b57('0x77')](_0x2a2689,{'transaction':_0x34d45d})[_0x4b57('0x28')](function(){return BPromise[_0x4b57('0x7d')](_0x19e09a,function(_0x50bbdc){return db[_0x4b57('0x7e')]['upsert']({'TeamId':_0x50bbdc['id'],'VoicePrefixId':_0x20560b[_0x4b57('0x50')]['id']},{'transaction':_0x34d45d});});})[_0x4b57('0x28')](function(){return BPromise[_0x4b57('0x7d')](_0x46e1b0,function(_0x46037e){return db['UserVoicePrefix']['findOrCreate']({'where':{'UserId':_0x46037e['id'],'VoicePrefixId':_0x20560b['params']['id']},'transaction':_0x34d45d});});})['then'](function(){_0x46e1b0[_0x4b57('0x7f')](function(_0x2e0bf0){socket['emit'](_0x4b57('0x6f'),{'UserId':_0x2e0bf0['id'],'VoicePrefixId':_0x60d8d0['id']});});});});});}})[_0x4b57('0x28')](respondWithStatusCode(_0x535ccc,null))[_0x4b57('0x4c')](handleError(_0x535ccc,null));};exports['removeTeams']=function(_0x5c4333,_0x4fff4a,_0x515113){return db[_0x4b57('0x75')][_0x4b57('0x4a')]({'where':{'id':_0x5c4333[_0x4b57('0x38')][_0x4b57('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x4b57('0x74')],'as':_0x4b57('0x78'),'attributes':['id'],'raw':!![]}]})[_0x4b57('0x28')](handleEntityNotFound(_0x4fff4a,null))[_0x4b57('0x28')](function(_0xa1ce41){var _0x191975=_['map'](_0xa1ce41,'id');var _0xd16e62=[];var _0x2115cf=[];var _0x4555dc=squel[_0x4b57('0x80')]();_0x4555dc[_0x4b57('0x81')](_0x4b57('0x82'))[_0x4b57('0x83')]('team_has_voice_prefixes','tq')[_0x4b57('0x84')](_0x4b57('0x85'),'ut',_0x4b57('0x86'))['where'](_0x4b57('0x87'),_0x5c4333[_0x4b57('0x50')]['id']);for(var _0x9eb896=0x0;_0x9eb896<_0xa1ce41[_0x4b57('0x3d')];_0x9eb896+=0x1){let _0x1f930b=_0xa1ce41[_0x9eb896];for(var _0x19d369=0x0;_0x19d369<_0x1f930b[_0x4b57('0x78')][_0x4b57('0x3d')];_0x19d369+=0x1){let _0x1e7f07=_0x1f930b[_0x4b57('0x78')][_0x19d369];var _0x51c328=_0x4555dc[_0x4b57('0x88')]();_0x51c328[_0x4b57('0x42')](_0x4b57('0x89'),_0x1e7f07['id']);_0x2115cf[_0x4b57('0x63')](db[_0x4b57('0x52')][_0x4b57('0x38')](_0x51c328[_0x4b57('0x8a')](),{'type':db[_0x4b57('0x52')][_0x4b57('0x8b')][_0x4b57('0x8c')]})[_0x4b57('0x28')](function(_0x307e53){if(_0x307e53['length']===0x1){return _0x1e7f07['id'];}else{var _0x365017=_[_0x4b57('0x8d')](_['map'](_0x307e53,_0x4b57('0x8e')),function(_0x5569e4){return _[_0x4b57('0x8f')](_0x191975,_0x5569e4);});if(_0x365017){return _0x1e7f07['id'];}}}));}}return BPromise[_0x4b57('0x90')](_0x2115cf)[_0x4b57('0x28')](function(_0x3b3373){_0xd16e62=_(_0xd16e62)['union'](_0x3b3373)[_0x4b57('0x91')]()[_0x4b57('0x92')]();return db[_0x4b57('0x31')][_0x4b57('0x4e')]({'where':{'id':_0x5c4333[_0x4b57('0x50')]['id']}})[_0x4b57('0x28')](function(_0x6083ae){return db['sequelize'][_0x4b57('0x53')](function(_0x29f8a1){return _0x6083ae[_0x4b57('0x93')](_0x5c4333['query']['ids'],{'transaction':_0x29f8a1})[_0x4b57('0x28')](function(){if(!_['isEmpty'](_0xd16e62)){return _0x6083ae['removeAgents'](_0xd16e62,{'transaction':_0x29f8a1});}})[_0x4b57('0x28')](function(){_0xd16e62[_0x4b57('0x7f')](function(_0x592b7d){socket[_0x4b57('0x6e')](_0x4b57('0x71'),{'UserId':_0x592b7d,'VoicePrefixId':_0x6083ae['id']});});});});});});})['then'](respondWithStatusCode(_0x4fff4a,null))['catch'](handleError(_0x4fff4a,null));};
\ No newline at end of file
index 9a3c42f..c0e28da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f5c=['hook','exports','events','save','remove','emit','hasOwnProperty'];(function(_0x153eaf,_0x3a2505){var _0x286e4f=function(_0x4d5b36){while(--_0x4d5b36){_0x153eaf['push'](_0x153eaf['shift']());}};_0x286e4f(++_0x3a2505);}(_0x6f5c,0x17c));var _0xc6f5=function(_0x4027af,_0x31054f){_0x4027af=_0x4027af-0x0;var _0x286cf2=_0x6f5c[_0x4027af];return _0x286cf2;};'use strict';var EventEmitter=require(_0xc6f5('0x0'));var VoicePrefix=require('../../mysqldb')['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc6f5('0x1'),'afterUpdate':'update','afterDestroy':_0xc6f5('0x2')};function emitEvent(_0x2b89b3){return function(_0x5c470c,_0x354946,_0x32f184){VoicePrefixEvents[_0xc6f5('0x3')](_0x2b89b3+':'+_0x5c470c['id'],_0x5c470c);VoicePrefixEvents['emit'](_0x2b89b3,_0x5c470c);_0x32f184(null);};}for(var e in events){if(events[_0xc6f5('0x4')](e)){var event=events[e];VoicePrefix[_0xc6f5('0x5')](e,emitEvent(event));}}module[_0xc6f5('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x73f0=['events','../../mysqldb','VoicePrefix','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3df464,_0x38dca7){var _0x58e0f3=function(_0x2b1417){while(--_0x2b1417){_0x3df464['push'](_0x3df464['shift']());}};_0x58e0f3(++_0x38dca7);}(_0x73f0,0x80));var _0x073f=function(_0x73cd0b,_0x1ae023){_0x73cd0b=_0x73cd0b-0x0;var _0x4337f5=_0x73f0[_0x73cd0b];return _0x4337f5;};'use strict';var EventEmitter=require(_0x073f('0x0'));var VoicePrefix=require(_0x073f('0x1'))['db'][_0x073f('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x073f('0x3')};function emitEvent(_0x539e01){return function(_0x373ced,_0x4e8be2,_0x1f91b1){VoicePrefixEvents[_0x073f('0x4')](_0x539e01+':'+_0x373ced['id'],_0x373ced);VoicePrefixEvents[_0x073f('0x4')](_0x539e01,_0x373ced);_0x1f91b1(null);};}for(var e in events){if(events[_0x073f('0x5')](e)){var event=events[e];VoicePrefix[_0x073f('0x6')](e,emitEvent(event));}}module[_0x073f('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index a453190..db93227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x981a=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./voicePrefix.attributes','define','voice_prefixes','lodash'];(function(_0x291fa6,_0x482111){var _0x1f1052=function(_0x40fcbb){while(--_0x40fcbb){_0x291fa6['push'](_0x291fa6['shift']());}};_0x1f1052(++_0x482111);}(_0x981a,0x83));var _0xa981=function(_0x40f0fc,_0x20134e){_0x40f0fc=_0x40f0fc-0x0;var _0x5ae843=_0x981a[_0x40f0fc];return _0x5ae843;};'use strict';var _=require(_0xa981('0x0'));var util=require(_0xa981('0x1'));var logger=require(_0xa981('0x2'))('api');var moment=require(_0xa981('0x3'));var BPromise=require(_0xa981('0x4'));var rp=require(_0xa981('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa981('0x6'));var config=require(_0xa981('0x7'));var attributes=require(_0xa981('0x8'));module['exports']=function(_0x520ab7,_0x1325c8){return _0x520ab7[_0xa981('0x9')]('VoicePrefix',attributes,{'tableName':_0xa981('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x573d=['moment','path','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x573d,0x1e8));var _0xd573=function(_0x137d6d,_0xd2ce19){_0x137d6d=_0x137d6d-0x0;var _0x759f16=_0x573d[_0x137d6d];return _0x759f16;};'use strict';var _=require(_0xd573('0x0'));var util=require(_0xd573('0x1'));var logger=require(_0xd573('0x2'))(_0xd573('0x3'));var moment=require(_0xd573('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd573('0x5'));var rimraf=require(_0xd573('0x6'));var config=require(_0xd573('0x7'));var attributes=require(_0xd573('0x8'));module[_0xd573('0x9')]=function(_0x38a47f,_0x14d9d5){return _0x38a47f[_0xd573('0xa')]('VoicePrefix',attributes,{'tableName':_0xd573('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a7df0a5..7850c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9261=['register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./voicePrefix.socket'];(function(_0x53a02d,_0x1d10c8){var _0x118f81=function(_0x5a8b28){while(--_0x5a8b28){_0x53a02d['push'](_0x53a02d['shift']());}};_0x118f81(++_0x1d10c8);}(_0x9261,0x1de));var _0x1926=function(_0x838813,_0x448f0f){_0x838813=_0x838813-0x0;var _0x2bd32d=_0x9261[_0x838813];return _0x2bd32d;};'use strict';var _=require(_0x1926('0x0'));var util=require(_0x1926('0x1'));var moment=require('moment');var BPromise=require(_0x1926('0x2'));var rs=require(_0x1926('0x3'));var fs=require('fs');var Redis=require(_0x1926('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1926('0x5'));var logger=require(_0x1926('0x6'))(_0x1926('0x7'));var config=require(_0x1926('0x8'));var jayson=require(_0x1926('0x9'));var client=jayson['client'][_0x1926('0xa')]({'port':0x232a});config['redis']=_[_0x1926('0xb')](config[_0x1926('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x1926('0xd'))(new Redis(config[_0x1926('0xc')]));require(_0x1926('0xe'))[_0x1926('0xf')](socket);function respondWithRpcPromise(_0xe63b09,_0x3231ba,_0x2e03e1){return new BPromise(function(_0x2a5ee5,_0x284dd6){return client[_0x1926('0x10')](_0xe63b09,_0x2e03e1)[_0x1926('0x11')](function(_0xdf0c50){logger[_0x1926('0x12')](_0x1926('0x13'),_0x3231ba,_0x1926('0x14'));logger[_0x1926('0x15')](_0x1926('0x16'),_0x3231ba,_0x1926('0x14'),JSON[_0x1926('0x17')](_0xdf0c50));if(_0xdf0c50[_0x1926('0x18')]){if(_0xdf0c50[_0x1926('0x18')][_0x1926('0x19')]===0x1f4){logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0xdf0c50[_0x1926('0x18')][_0x1926('0x1a')]);return _0x284dd6(_0xdf0c50['error'][_0x1926('0x1a')]);}logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0xdf0c50['error'][_0x1926('0x1a')]);return _0x2a5ee5(_0xdf0c50[_0x1926('0x18')]['message']);}else{logger[_0x1926('0x12')](_0x1926('0x13'),_0x3231ba,_0x1926('0x14'));_0x2a5ee5(_0xdf0c50[_0x1926('0x1b')][_0x1926('0x1a')]);}})[_0x1926('0x1c')](function(_0x441b18){logger[_0x1926('0x18')](_0x1926('0x13'),_0x3231ba,_0x441b18);_0x284dd6(_0x441b18);});});}
\ No newline at end of file
+var _0xfc9b=['VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent'];(function(_0x2c4447,_0x3f9b50){var _0x2a84b3=function(_0x576656){while(--_0x576656){_0x2c4447['push'](_0x2c4447['shift']());}};_0x2a84b3(++_0x3f9b50);}(_0xfc9b,0x74));var _0xbfc9=function(_0x2cae0d,_0x19e0ec){_0x2cae0d=_0x2cae0d-0x0;var _0x29617d=_0xfc9b[_0x2cae0d];return _0x29617d;};'use strict';var _=require(_0xbfc9('0x0'));var util=require(_0xbfc9('0x1'));var moment=require(_0xbfc9('0x2'));var BPromise=require(_0xbfc9('0x3'));var rs=require(_0xbfc9('0x4'));var fs=require('fs');var Redis=require(_0xbfc9('0x5'));var db=require(_0xbfc9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xbfc9('0x7'))('rpc');var config=require(_0xbfc9('0x8'));var jayson=require(_0xbfc9('0x9'));var client=jayson['client'][_0xbfc9('0xa')]({'port':0x232a});config[_0xbfc9('0xb')]=_[_0xbfc9('0xc')](config[_0xbfc9('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xbfc9('0xd'))(new Redis(config['redis']));require(_0xbfc9('0xe'))['register'](socket);function respondWithRpcPromise(_0x1c8191,_0x52af50,_0x2c3bab){return new BPromise(function(_0x104521,_0x152c82){return client[_0xbfc9('0xf')](_0x1c8191,_0x2c3bab)[_0xbfc9('0x10')](function(_0x20ded8){logger['info'](_0xbfc9('0x11'),_0x52af50,_0xbfc9('0x12'));logger['debug'](_0xbfc9('0x13'),_0x52af50,'request\x20sent',JSON[_0xbfc9('0x14')](_0x20ded8));if(_0x20ded8[_0xbfc9('0x15')]){if(_0x20ded8[_0xbfc9('0x15')][_0xbfc9('0x16')]===0x1f4){logger['error'](_0xbfc9('0x11'),_0x52af50,_0x20ded8[_0xbfc9('0x15')][_0xbfc9('0x17')]);return _0x152c82(_0x20ded8[_0xbfc9('0x15')][_0xbfc9('0x17')]);}logger[_0xbfc9('0x15')](_0xbfc9('0x11'),_0x52af50,_0x20ded8[_0xbfc9('0x15')][_0xbfc9('0x17')]);return _0x104521(_0x20ded8[_0xbfc9('0x15')][_0xbfc9('0x17')]);}else{logger[_0xbfc9('0x18')](_0xbfc9('0x11'),_0x52af50,_0xbfc9('0x12'));_0x104521(_0x20ded8[_0xbfc9('0x19')][_0xbfc9('0x17')]);}})[_0xbfc9('0x1a')](function(_0x45967a){logger[_0xbfc9('0x15')](_0xbfc9('0x11'),_0x52af50,_0x45967a);_0x152c82(_0x45967a);});});}
\ No newline at end of file
index f6c1d19..a44d597 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd1=['removeListener','register','length','voicePrefix:','save','update','emit'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0x4bd1,0x90));var _0x14bd=function(_0x4320ce,_0x49f5f5){_0x4320ce=_0x4320ce-0x0;var _0x537dae=_0x4bd1[_0x4320ce];return _0x537dae;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x14bd('0x0'),'remove',_0x14bd('0x1')];function createListener(_0xa0d344,_0x50d79a){return function(_0x17e7b6){_0x50d79a[_0x14bd('0x2')](_0xa0d344,_0x17e7b6);};}function removeListener(_0x51fcdb,_0x4080e1){return function(){VoicePrefixEvents[_0x14bd('0x3')](_0x51fcdb,_0x4080e1);};}exports[_0x14bd('0x4')]=function(_0x31b468){for(var _0x5c4680=0x0,_0x35806e=events[_0x14bd('0x5')];_0x5c4680<_0x35806e;_0x5c4680++){var _0xb06dbf=events[_0x5c4680];var _0x2e9a2f=createListener(_0x14bd('0x6')+_0xb06dbf,_0x31b468);VoicePrefixEvents['on'](_0xb06dbf,_0x2e9a2f);}};
\ No newline at end of file
+var _0x4483=['save','remove','emit','removeListener','register','length','./voicePrefix.events'];(function(_0x3c43f6,_0x429058){var _0x5677a4=function(_0x13b06b){while(--_0x13b06b){_0x3c43f6['push'](_0x3c43f6['shift']());}};_0x5677a4(++_0x429058);}(_0x4483,0x1a3));var _0x3448=function(_0x13c7b8,_0x528cdc){_0x13c7b8=_0x13c7b8-0x0;var _0x311d33=_0x4483[_0x13c7b8];return _0x311d33;};'use strict';var VoicePrefixEvents=require(_0x3448('0x0'));var events=[_0x3448('0x1'),_0x3448('0x2'),'update'];function createListener(_0x202d3d,_0x1fe72d){return function(_0x27ef60){_0x1fe72d[_0x3448('0x3')](_0x202d3d,_0x27ef60);};}function removeListener(_0xef1a93,_0x5f5163){return function(){VoicePrefixEvents[_0x3448('0x4')](_0xef1a93,_0x5f5163);};}exports[_0x3448('0x5')]=function(_0x1b05db){for(var _0xd3606d=0x0,_0x1bb7e5=events[_0x3448('0x6')];_0xd3606d<_0x1bb7e5;_0xd3606d++){var _0x3cc81d=events[_0xd3606d];var _0x34b926=createListener('voicePrefix:'+_0x3cc81d,_0x1b05db);VoicePrefixEvents['on'](_0x3cc81d,_0x34b926);}};
\ No newline at end of file
index 5e1a235..6e38f59 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(_0x9729d7,_0x1b79a8){var _0x3c4ac6=function(_0x401ba6){while(--_0x401ba6){_0x9729d7['push'](_0x9729d7['shift']());}};_0x3c4ac6(++_0x1b79a8);}(_0xb10b,0x12a));var _0xbb10=function(_0x32faa6,_0x231c1f){_0x32faa6=_0x32faa6-0x0;var _0x1526dd=_0xb10b[_0x32faa6];return _0x1526dd;};'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 _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(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0xb10b,0x12a));var _0xbb10=function(_0x5af528,_0x58e09b){_0x5af528=_0x5af528-0x0;var _0x5ad4be=_0xb10b[_0x5af528];return _0x5ad4be;};'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
index 71a8855..a380af3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e35=['#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\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','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)','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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','inbound','outbound','default','ENUM','ringall','fewestcalls','random','wrandom','strategy','rrmemory','getDataValue','type','booked','progressive','predictive','power','INTEGER','yes','all','once','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x431c33,_0x5b78e0){var _0x5bfa0e=function(_0x4432d7){while(--_0x4432d7){_0x431c33['push'](_0x431c33['shift']());}};_0x5bfa0e(++_0x5b78e0);}(_0x8e35,0x76));var _0x58e3=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x8e35[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0x58e3('0x0')]={'name':{'type':Sequelize[_0x58e3('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x58e3('0x2'),_0x58e3('0x3')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':_0x58e3('0x4')},'announce':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0x58e3('0x5')]('rr',_0x58e3('0x6'),'leastrecent',_0x58e3('0x7'),_0x58e3('0x8'),'rrmemory','linear',_0x58e3('0x9'),'rrordered'),'allowNull':![],'defaultValue':_0x58e3('0x6'),'set':function(_0x322b26){this['setDataValue'](_0x58e3('0xa'),_0x322b26?_0x322b26:_0x58e3('0xb'));},'get':function(){var _0x2366c8=this[_0x58e3('0xc')](_0x58e3('0xd'));var _0x27d251=this[_0x58e3('0xc')]('dialMethod');var _0xbcee0f=this['getDataValue']('strategy');if(_0x2366c8===_0x58e3('0x2')){return _0xbcee0f;}if(_0x27d251===_0x58e3('0xe')&&_0xbcee0f===_0x58e3('0xb')||_0x27d251==='booked'&&_0xbcee0f==='roundrobin'){return _0xbcee0f;}if(_0x27d251===_0x58e3('0xf')||_0x27d251===_0x58e3('0x10')||_0x27d251===_0x58e3('0x11')){return _0xbcee0f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x58e3('0x12')](0xb)},'timeout':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x58e3('0x1')]},'weight':{'type':Sequelize[_0x58e3('0x12')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':_0x58e3('0x13')},'autopause':{'type':Sequelize[_0x58e3('0x5')]('yes','no',_0x58e3('0x14')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x58e3('0x12')](0xb)},'autopausebusy':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x58e3('0x12')](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[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':_0x58e3('0x13')},'announce_holdtime':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no',_0x58e3('0x15')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no')},'announce_position_limit':{'type':Sequelize[_0x58e3('0x12')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x58e3('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x58e3('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x58e3('0x1')]},'queue_quantity1':{'type':Sequelize[_0x58e3('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x58e3('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0xbf400d){this[_0x58e3('0x16')](_0x58e3('0x17'),_0xbf400d?_0xbf400d[_0x58e3('0x18')](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0x58e3('0xc')]('periodic_announce')[_0x58e3('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'yes','set':function(_0x993428){this[_0x58e3('0x16')](_0x58e3('0x1a'),_0x993428?_0x993428[_0x58e3('0x18')](','):undefined);},'get':function(){return this['getDataValue'](_0x58e3('0x1a'))?this[_0x58e3('0xc')](_0x58e3('0x1a'))[_0x58e3('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':'no','set':function(_0xb6c427){this[_0x58e3('0x16')](_0x58e3('0x1b'),_0xb6c427?_0xb6c427[_0x58e3('0x18')](','):undefined);},'get':function(){return this[_0x58e3('0xc')]('leavewhenempty')?this['getDataValue'](_0x58e3('0x1b'))[_0x58e3('0x19')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x58e3('0x13'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x13'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x58e3('0x5')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x58e3('0x1')]},'description':{'type':Sequelize[_0x58e3('0x1')]},'acw':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'set':function(_0x27a4d6){this[_0x58e3('0x16')](_0x58e3('0x1d'),_0x27a4d6);if(_0x27a4d6){if(this['getDataValue'](_0x58e3('0x1e'))<0x2){this[_0x58e3('0x16')](_0x58e3('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x58e3('0x12')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'comment':_0x58e3('0x1f')},'dialMethod':{'type':Sequelize['ENUM']('preview',_0x58e3('0xf'),_0x58e3('0x11'),_0x58e3('0x10'),_0x58e3('0xe')),'defaultValue':'progressive','comment':_0x58e3('0x20')},'dialLimitChannel':{'type':Sequelize[_0x58e3('0x12')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x58e3('0x21')},'dialLimitQueue':{'type':Sequelize[_0x58e3('0x12')](0x4)[_0x58e3('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0x58e3('0x23')](0x2)[_0x58e3('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x58e3('0x24')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x58e3('0x25'),_0x58e3('0x26')),'defaultValue':'dropRate','comment':_0x58e3('0x27')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x58e3('0x23')](0x2)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x58e3('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0x58e3('0x12')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x58e3('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0x58e3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x58e3('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2a')},'dialQueueOptions':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':_0x58e3('0x2b'),'comment':_0x58e3('0x2c')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2d')},'dialQueueProject':{'type':Sequelize[_0x58e3('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'comment':_0x58e3('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x58e3('0x34')},'dialTimezone':{'type':Sequelize[_0x58e3('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x58e3('0x35')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x36'),_0x58e3('0x37'),_0x58e3('0x38')),'defaultValue':_0x58e3('0x36')},'dialAMDActive':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':0x0,'comment':_0x58e3('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x58e3('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x58e3('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x58e3('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x58e3('0x12')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x58e3('0x3d')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x58e3('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x58e3('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x58e3('0x12')](0x9)[_0x58e3('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x58e3('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x58e3('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x58e3('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x58e3('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x58e3('0x42')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0x58e3('0x5')](_0x58e3('0x43'),_0x58e3('0x44')),'defaultValue':_0x58e3('0x43')},'dialQueueProject2':{'type':Sequelize[_0x58e3('0x1')],'comment':_0x58e3('0x45')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x58e3('0x46')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x58e3('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x48')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x49')},'dialDropRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4a')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4b')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4c')},'dialMachineMaxRetry':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4d')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x58e3('0x4e')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x58e3('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x58e3('0x4f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x58e3('0x12')](0x5)[_0x58e3('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x58e3('0x50')},'mandatoryDisposition':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x11ee86){if(!_0x11ee86)this[_0x58e3('0x16')](_0x58e3('0x51'),null);this[_0x58e3('0x16')](_0x58e3('0x52'),_0x11ee86);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x58e3('0x12')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x58e3('0x12')](0x3)[_0x58e3('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x58e3('0x1c')],'defaultValue':![]}};
\ No newline at end of file
+var _0x567d=['periodic_announce','join','joinempty','split','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','booked','Dial\x20Method.','UNSIGNED','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.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','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','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','STRING','default','ringall','leastrecent','random','rrmemory','wrandom','rrordered','setDataValue','strategy','type','getDataValue','dialMethod','progressive','predictive','power','INTEGER','yes','all','once','TEXT'];(function(_0x1b695b,_0x46d6c7){var _0x573271=function(_0xd397e3){while(--_0xd397e3){_0x1b695b['push'](_0x1b695b['shift']());}};_0x573271(++_0x46d6c7);}(_0x567d,0x8b));var _0xd567=function(_0x123f21,_0x5d3c2b){_0x123f21=_0x123f21-0x0;var _0x33647e=_0x567d[_0x123f21];return _0x33647e;};'use strict';var Sequelize=require(_0xd567('0x0'));module[_0xd567('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd567('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x4'),_0xd567('0x5')),'allowNull':![],'defaultValue':_0xd567('0x4')},'musiconhold':{'type':Sequelize[_0xd567('0x6')],'defaultValue':_0xd567('0x7')},'announce':{'type':Sequelize[_0xd567('0x6')],'defaultValue':''},'strategy':{'type':Sequelize[_0xd567('0x3')]('rr',_0xd567('0x8'),_0xd567('0x9'),'fewestcalls',_0xd567('0xa'),_0xd567('0xb'),'linear',_0xd567('0xc'),_0xd567('0xd')),'allowNull':![],'defaultValue':_0xd567('0x8'),'set':function(_0x22fbbf){this[_0xd567('0xe')](_0xd567('0xf'),_0x22fbbf?_0x22fbbf:_0xd567('0xb'));},'get':function(){var _0x2f30b3=this['getDataValue'](_0xd567('0x10'));var _0xdcae60=this[_0xd567('0x11')](_0xd567('0x12'));var _0x40bfaa=this[_0xd567('0x11')](_0xd567('0xf'));if(_0x2f30b3===_0xd567('0x4')){return _0x40bfaa;}if(_0xdcae60==='booked'&&_0x40bfaa===_0xd567('0xb')||_0xdcae60==='booked'&&_0x40bfaa==='roundrobin'){return _0x40bfaa;}if(_0xdcae60===_0xd567('0x13')||_0xdcae60===_0xd567('0x14')||_0xdcae60===_0xd567('0x15')){return _0x40bfaa;}return null;}},'servicelevel':{'type':Sequelize[_0xd567('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xd567('0x16')](0xb)},'timeout':{'type':Sequelize[_0xd567('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xd567('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xd567('0x6')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0xd567('0x17'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no',_0xd567('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xd567('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xd567('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xd567('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xd567('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xd567('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xd567('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xd567('0x17'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no',_0xd567('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no')},'announce_position_limit':{'type':Sequelize[_0xd567('0x16')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xd567('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xd567('0x6')]},'queue_youarenext':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xd567('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xd567('0x6')]},'queue_quantity1':{'type':Sequelize[_0xd567('0x6')]},'queue_quantity2':{'type':Sequelize[_0xd567('0x6')]},'queue_periodic_announce':{'type':Sequelize[_0xd567('0x6')]},'queue_less_than':{'type':Sequelize[_0xd567('0x6')]},'periodic_announce':{'type':Sequelize[_0xd567('0x1a')],'set':function(_0x264a51){this['setDataValue'](_0xd567('0x1b'),_0x264a51?_0x264a51[_0xd567('0x1c')](','):[]);},'get':function(){return this[_0xd567('0x11')](_0xd567('0x1b'))?this[_0xd567('0x11')](_0xd567('0x1b'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xd567('0x6')],'defaultValue':_0xd567('0x17'),'set':function(_0x31a67a){this[_0xd567('0xe')](_0xd567('0x1d'),_0x31a67a?_0x31a67a[_0xd567('0x1c')](','):undefined);},'get':function(){return this['getDataValue'](_0xd567('0x1d'))?this[_0xd567('0x11')](_0xd567('0x1d'))[_0xd567('0x1e')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x7a7a42){this['setDataValue']('leavewhenempty',_0x7a7a42?_0x7a7a42[_0xd567('0x1c')](','):undefined);},'get':function(){return this[_0xd567('0x11')](_0xd567('0x1f'))?this[_0xd567('0x11')](_0xd567('0x1f'))[_0xd567('0x1e')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0xd567('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xd567('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xd567('0x6')]},'description':{'type':Sequelize[_0xd567('0x6')]},'acw':{'type':Sequelize[_0xd567('0x20')],'defaultValue':0x0,'set':function(_0x44333f){this['setDataValue'](_0xd567('0x21'),_0x44333f);if(_0x44333f){if(this[_0xd567('0x11')]('wrapuptime')<0x2){this[_0xd567('0xe')](_0xd567('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xd567('0x20')],'defaultValue':0x0,'comment':_0xd567('0x23')},'dialMethod':{'type':Sequelize[_0xd567('0x3')](_0xd567('0x24'),'progressive','power',_0xd567('0x14'),_0xd567('0x25')),'defaultValue':'progressive','comment':_0xd567('0x26')},'dialLimitChannel':{'type':Sequelize[_0xd567('0x16')](0x4)[_0xd567('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xd567('0x16')](0x4)[_0xd567('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xd567('0x28')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0xd567('0x27')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xd567('0x29')},'dialPredictiveOptimization':{'type':Sequelize[_0xd567('0x3')]('agentBusyFactor','dropRate'),'defaultValue':_0xd567('0x2a'),'comment':_0xd567('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xd567('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd567('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x2d')},'dialQueueOptions':{'type':Sequelize[_0xd567('0x6')],'defaultValue':_0xd567('0x2e'),'comment':_0xd567('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x30')},'dialQueueProject':{'type':Sequelize[_0xd567('0x6')],'comment':_0xd567('0x31')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd567('0x16')](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xd567('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x33')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x35')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xd567('0x6')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0xd567('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xd567('0x3')]('always',_0xd567('0x36'),_0xd567('0x37')),'defaultValue':_0xd567('0x38')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xd567('0x39')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xd567('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd567('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xd567('0x16')](0x9)[_0xd567('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xd567('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd567('0x16')](0x9)[_0xd567('0x27')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xd567('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd567('0x16')](0x9)[_0xd567('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd567('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0xd567('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd567('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xd567('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd567('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xd567('0x16')](0x9)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xd567('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xd567('0x16')](0x5)[_0xd567('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd567('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd567('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xd567('0x16')](0x5)[_0xd567('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xd567('0x43')},'dialRecallInQueue':{'type':Sequelize[_0xd567('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xd567('0x3')]('DESC','ASC'),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xd567('0x6')],'comment':_0xd567('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xd567('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xd567('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd567('0x44')},'dialCutDigit':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x45')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x46')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0xd567('0x16')](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd567('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xd567('0x16')](0x5)[_0xd567('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x4a')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd567('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xd567('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd567('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd567('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xd567('0x4f')},'mandatoryDisposition':{'type':Sequelize[_0xd567('0x20')],'defaultValue':![],'comment':_0xd567('0x50'),'set':function(_0x49af4e){if(!_0x49af4e)this[_0xd567('0xe')](_0xd567('0x51'),null);this[_0xd567('0xe')](_0xd567('0x52'),_0x49af4e);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xd567('0x16')](0x3)[_0xd567('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xd567('0x20')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0xd567('0x27')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xd567('0x20')],'defaultValue':![]}};
\ No newline at end of file
index db34ce0..27955b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5226=['params','intersection','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','outbound','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','keys','omit','createdAt','updatedAt','user','userProfileId','update','getHoppers','CmHopper','findOne','CmHopperHistory','nolimit','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','teams','User','Agents','online','interface','forEach','penalty','sequelize','transaction','addTeams','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','format','SIP/%s','voicePause','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','removeAgents','userVoiceQueue:remove','addAgents','isEmpty','isNil','all','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','cm_hopper','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','spread','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueue.socket','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','then','VoiceQueues','inbound','QueueCampaigns','filter','ignore','map','value','includes','type','find','UserProfileResource','destroy','error','stack','name','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','filters','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show'];(function(_0x2ba54c,_0x3ac715){var _0x15eeb1=function(_0xf38406){while(--_0xf38406){_0x2ba54c['push'](_0x2ba54c['shift']());}};_0x15eeb1(++_0x3ac715);}(_0x5226,0x137));var _0x6522=function(_0x58dc41,_0x19cadf){_0x58dc41=_0x58dc41-0x0;var _0x4cd4fc=_0x5226[_0x58dc41];return _0x4cd4fc;};'use strict';var emlformat=require(_0x6522('0x0'));var rimraf=require(_0x6522('0x1'));var zipdir=require(_0x6522('0x2'));var jsonpatch=require(_0x6522('0x3'));var rp=require(_0x6522('0x4'));var moment=require('moment');var BPromise=require(_0x6522('0x5'));var Mustache=require(_0x6522('0x6'));var util=require(_0x6522('0x7'));var path=require('path');var sox=require(_0x6522('0x8'));var csv=require('to-csv');var ejs=require(_0x6522('0x9'));var fs=require('fs');var fs_extra=require(_0x6522('0xa'));var _=require(_0x6522('0xb'));var squel=require(_0x6522('0xc'));var crypto=require(_0x6522('0xd'));var jsforce=require(_0x6522('0xe'));var deskjs=require(_0x6522('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6522('0x10'));var Redis=require(_0x6522('0x11'));var authService=require(_0x6522('0x12'));var qs=require(_0x6522('0x13'));var as=require(_0x6522('0x14'));var hardwareService=require(_0x6522('0x15'));var logger=require(_0x6522('0x16'))(_0x6522('0x17'));var utils=require(_0x6522('0x18'));var config=require(_0x6522('0x19'));var licenseUtil=require(_0x6522('0x1a'));var db=require(_0x6522('0x1b'))['db'];config[_0x6522('0x1c')]=_['defaults'](config[_0x6522('0x1c')],{'host':_0x6522('0x1d'),'port':0x18eb});var socket=require(_0x6522('0x1e'))(new Redis(config[_0x6522('0x1c')]));require(_0x6522('0x1f'))['register'](socket);function respondWithStatusCode(_0x3c855a,_0x2ab9a0){_0x2ab9a0=_0x2ab9a0||0xcc;return function(_0x26ed67){if(_0x26ed67){return _0x3c855a[_0x6522('0x20')](_0x2ab9a0);}return _0x3c855a[_0x6522('0x21')](_0x2ab9a0)[_0x6522('0x22')]();};}function respondWithResult(_0x31ddff,_0x1e12b7){_0x1e12b7=_0x1e12b7||0xc8;return function(_0x36a557){if(_0x36a557){return _0x31ddff[_0x6522('0x21')](_0x1e12b7)[_0x6522('0x23')](_0x36a557);}};}function respondWithFilteredResult(_0x434a84,_0x51a8e0){return function(_0x6f0909){if(_0x6f0909){var _0x1edcb6=typeof _0x51a8e0[_0x6522('0x24')]===_0x6522('0x25')&&typeof _0x51a8e0['limit']===_0x6522('0x25');var _0x9a5622=_0x6f0909['count'];var _0x38aae6=_0x1edcb6?0x0:_0x51a8e0['offset'];var _0x1bb7df=_0x1edcb6?_0x6f0909[_0x6522('0x26')]:_0x51a8e0[_0x6522('0x24')]+_0x51a8e0[_0x6522('0x27')];var _0x44bd23;if(_0x1bb7df>=_0x9a5622){_0x1bb7df=_0x9a5622;_0x44bd23=0xc8;}else{_0x44bd23=0xce;}_0x434a84[_0x6522('0x21')](_0x44bd23);return _0x434a84['set'](_0x6522('0x28'),_0x38aae6+'-'+_0x1bb7df+'/'+_0x9a5622)[_0x6522('0x23')](_0x6f0909);}return null;};}function patchUpdates(_0x13ec44){return function(_0x14ba8f){try{jsonpatch[_0x6522('0x29')](_0x14ba8f,_0x13ec44,!![]);}catch(_0x16c3cf){return BPromise['reject'](_0x16c3cf);}return _0x14ba8f[_0x6522('0x2a')]();};}function saveUpdates(_0x415f16,_0xcb377c){return function(_0x2c3269){if(_0x2c3269){return _0x2c3269['update'](_0x415f16)['then'](function(_0x263d7d){return _0x263d7d;});}return null;};}function removeEntity(_0x38045b,_0x2c20dc){return function(_0x29b7f4){if(_0x29b7f4){return _0x29b7f4['destroy']()[_0x6522('0x2b')](function(){var _0x1af303=_0x29b7f4['get']({'plain':!![]});var _0x375555=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d'),'ignore':![]},{'name':_0x6522('0x2e'),'value':'outbound','ignore':![]}];var _0x204305=_(_0x375555)[_0x6522('0x2f')](_0x6522('0x30'))[_0x6522('0x31')](_0x6522('0x32'))[_0x6522('0x32')]();if(_[_0x6522('0x33')](_0x204305,_0x1af303[_0x6522('0x34')])){return;}var _0xdec8cc=_[_0x6522('0x35')](_0x375555,[_0x6522('0x32'),_0x1af303[_0x6522('0x34')]])['name'];return db[_0x6522('0x36')][_0x6522('0x37')]({'where':{'type':_0xdec8cc,'resourceId':_0x1af303['id']}})[_0x6522('0x2b')](function(){return _0x29b7f4;});})[_0x6522('0x2b')](function(){_0x38045b[_0x6522('0x21')](0xcc)[_0x6522('0x22')]();});}};}function handleEntityNotFound(_0x527deb,_0x432bd3){return function(_0x280def){if(!_0x280def){_0x527deb[_0x6522('0x20')](0x194);}return _0x280def;};}function handleError(_0x1ae339,_0x43bb7c){_0x43bb7c=_0x43bb7c||0x1f4;return function(_0x4496c8){logger[_0x6522('0x38')](_0x4496c8[_0x6522('0x39')]);if(_0x4496c8[_0x6522('0x3a')]){delete _0x4496c8[_0x6522('0x3a')];}_0x1ae339[_0x6522('0x21')](_0x43bb7c)[_0x6522('0x3b')](_0x4496c8);};}exports[_0x6522('0x3c')]=function(_0x5cce37,_0x5c00df){var _0x4a8108={},_0x38f92e={},_0xa69153={'count':0x0,'rows':[]};var _0x28cafc=_[_0x6522('0x31')](db[_0x6522('0x3d')][_0x6522('0x3e')],function(_0x499956){return{'name':_0x499956[_0x6522('0x3f')],'type':_0x499956[_0x6522('0x34')][_0x6522('0x40')]};});_0x38f92e[_0x6522('0x41')]=_[_0x6522('0x31')](_0x28cafc,'name');_0x38f92e['query']=_['keys'](_0x5cce37[_0x6522('0x42')]);_0x38f92e[_0x6522('0x43')]=_['intersection'](_0x38f92e['model'],_0x38f92e[_0x6522('0x42')]);_0x4a8108['attributes']=_['intersection'](_0x38f92e[_0x6522('0x41')],qs[_0x6522('0x44')](_0x5cce37[_0x6522('0x42')][_0x6522('0x44')]));_0x4a8108[_0x6522('0x45')]=_0x4a8108['attributes'][_0x6522('0x46')]?_0x4a8108[_0x6522('0x45')]:_0x38f92e[_0x6522('0x41')];if(!_0x5cce37[_0x6522('0x42')][_0x6522('0x47')]('nolimit')){_0x4a8108[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x5cce37['query']['limit']);_0x4a8108[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x5cce37[_0x6522('0x42')][_0x6522('0x24')]);}_0x4a8108[_0x6522('0x48')]=qs['sort'](_0x5cce37[_0x6522('0x42')][_0x6522('0x49')]);_0x4a8108[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x5cce37[_0x6522('0x42')],_0x38f92e['filters']),_0x28cafc);if(_0x5cce37[_0x6522('0x42')]['filter']){_0x4a8108['where']=_[_0x6522('0x4c')](_0x4a8108[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x28cafc,function(_0x14d658){if(_0x14d658['type']!==_0x6522('0x4d')){var _0x358a20={};_0x358a20[_0x14d658[_0x6522('0x3a')]]={'$like':'%'+_0x5cce37['query'][_0x6522('0x2f')]+'%'};return _0x358a20;}})});}_0x4a8108=_['merge']({},_0x4a8108,_0x5cce37[_0x6522('0x4e')]);var _0x3cc083={'where':_0x4a8108[_0x6522('0x4a')]};return db['VoiceQueue'][_0x6522('0x26')](_0x3cc083)[_0x6522('0x2b')](function(_0x2fe032){_0xa69153[_0x6522('0x26')]=_0x2fe032;if(_0x5cce37[_0x6522('0x42')][_0x6522('0x4f')]){_0x4a8108[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x3d')][_0x6522('0x51')](_0x4a8108);})[_0x6522('0x2b')](function(_0x56fe82){_0xa69153[_0x6522('0x52')]=_0x56fe82;return _0xa69153;})[_0x6522('0x2b')](respondWithFilteredResult(_0x5c00df,_0x4a8108))[_0x6522('0x53')](handleError(_0x5c00df,null));};exports[_0x6522('0x54')]=function(_0x18dbc7,_0x44156d){var _0x475ee6={'raw':![],'where':{'id':_0x18dbc7[_0x6522('0x55')]['id']}},_0xe7e589={};_0xe7e589[_0x6522('0x41')]=_['keys'](db['VoiceQueue'][_0x6522('0x3e')]);_0xe7e589[_0x6522('0x42')]=_['keys'](_0x18dbc7[_0x6522('0x42')]);_0xe7e589[_0x6522('0x43')]=_['intersection'](_0xe7e589['model'],_0xe7e589['query']);_0x475ee6['attributes']=_[_0x6522('0x56')](_0xe7e589[_0x6522('0x41')],qs[_0x6522('0x44')](_0x18dbc7[_0x6522('0x42')][_0x6522('0x44')]));_0x475ee6[_0x6522('0x45')]=_0x475ee6['attributes'][_0x6522('0x46')]?_0x475ee6[_0x6522('0x45')]:_0xe7e589['model'];if(_0x18dbc7[_0x6522('0x42')][_0x6522('0x4f')]){_0x475ee6[_0x6522('0x50')]=[{'all':!![]}];}_0x475ee6=_[_0x6522('0x4c')]({},_0x475ee6,_0x18dbc7[_0x6522('0x4e')]);return db['VoiceQueue'][_0x6522('0x35')](_0x475ee6)[_0x6522('0x2b')](handleEntityNotFound(_0x44156d,null))[_0x6522('0x2b')](respondWithResult(_0x44156d,null))['catch'](handleError(_0x44156d,null));};exports[_0x6522('0x57')]=function(_0x183a09,_0x2e983b){return db[_0x6522('0x3d')][_0x6522('0x57')](_0x183a09[_0x6522('0x58')],{})['then'](function(_0x3d45a7){var _0x59e1db=_0x183a09['user'][_0x6522('0x59')]({'plain':!![]});if(!_0x59e1db)throw new Error(_0x6522('0x5a'));if(_0x59e1db['role']==='user'){var _0x3bdc82=_0x3d45a7['get']({'plain':!![]});var _0x50e8e1=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d')},{'name':_0x6522('0x2e'),'value':_0x6522('0x5b')}];var _0x25f878=_[_0x6522('0x35')](_0x50e8e1,[_0x6522('0x32'),_0x3bdc82['type']])[_0x6522('0x3a')];return db[_0x6522('0x5c')][_0x6522('0x35')]({'where':{'name':_0x25f878,'userProfileId':_0x59e1db['userProfileId']},'raw':!![]})[_0x6522('0x2b')](function(_0x5637ab){if(_0x5637ab&&_0x5637ab[_0x6522('0x5d')]===0x0){return db[_0x6522('0x36')][_0x6522('0x57')]({'name':_0x3bdc82[_0x6522('0x3a')],'resourceId':_0x3bdc82['id'],'type':_0x5637ab['name'],'sectionId':_0x5637ab['id']},{})[_0x6522('0x2b')](function(){return _0x3d45a7;});}else{return _0x3d45a7;}})[_0x6522('0x53')](function(_0x1fdb2e){logger[_0x6522('0x38')](_0x6522('0x5e'),_0x1fdb2e);throw _0x1fdb2e;});}return _0x3d45a7;})[_0x6522('0x2b')](respondWithResult(_0x2e983b,0xc9))[_0x6522('0x53')](handleError(_0x2e983b,null));};exports[_0x6522('0x5f')]=function(_0x3fe09e,_0x583399){var _0x366ada={'where':{'id':_0x3fe09e['params']['id']}},_0x5c08fa={};_0x5c08fa[_0x6522('0x41')]=_[_0x6522('0x60')](db['VoiceQueue'][_0x6522('0x3e')]);_0x366ada[_0x6522('0x45')]=_[_0x6522('0x56')](_0x5c08fa[_0x6522('0x41')],qs[_0x6522('0x44')](_0x3fe09e['query'][_0x6522('0x44')]));_0x366ada[_0x6522('0x45')]=_0x366ada[_0x6522('0x45')][_0x6522('0x46')]?_0x366ada[_0x6522('0x45')]:_0x5c08fa['model'];if(_0x3fe09e[_0x6522('0x42')][_0x6522('0x4f')]){_0x366ada['include']=[{'all':!![]}];}_0x366ada=_['merge']({},_0x366ada,_0x3fe09e[_0x6522('0x4e')]);return db[_0x6522('0x3d')][_0x6522('0x35')](_0x366ada)[_0x6522('0x2b')](handleEntityNotFound(_0x583399,null))[_0x6522('0x2b')](function(_0x44fcee){if(_0x44fcee){var _0x3eeae5=_0x44fcee[_0x6522('0x59')]({'plain':!![]});_0x3eeae5=qs[_0x6522('0x61')](_0x3eeae5,['id','createdAt','updatedAt']);_0x3fe09e[_0x6522('0x58')]=_[_0x6522('0x61')](_0x3fe09e[_0x6522('0x58')],['id',_0x6522('0x62'),_0x6522('0x63')]);return db[_0x6522('0x3d')][_0x6522('0x57')](_[_0x6522('0x4c')](_0x3eeae5,_0x3fe09e[_0x6522('0x58')]),{'include':_0x3fe09e[_0x6522('0x42')][_0x6522('0x4f')]?[{'all':!![]}]:undefined})[_0x6522('0x2b')](function(_0x52efd1){var _0x1cac9e=_0x3fe09e[_0x6522('0x64')][_0x6522('0x59')]({'plain':!![]});if(!_0x1cac9e)throw new Error(_0x6522('0x5a'));if(_0x1cac9e['role']===_0x6522('0x64')){var _0x602bc4=_0x52efd1['get']({'plain':!![]});var _0x1fa69e=[{'name':_0x6522('0x2c'),'value':_0x6522('0x2d')},{'name':_0x6522('0x2e'),'value':_0x6522('0x5b')}];var _0x11f1e1=_[_0x6522('0x35')](_0x1fa69e,[_0x6522('0x32'),_0x602bc4[_0x6522('0x34')]])[_0x6522('0x3a')];return db[_0x6522('0x5c')][_0x6522('0x35')]({'where':{'name':_0x11f1e1,'userProfileId':_0x1cac9e[_0x6522('0x65')]},'raw':!![]})['then'](function(_0x55766c){if(_0x55766c&&_0x55766c[_0x6522('0x5d')]===0x0){return db['UserProfileResource'][_0x6522('0x57')]({'name':_0x602bc4['name'],'resourceId':_0x602bc4['id'],'type':_0x55766c['name'],'sectionId':_0x55766c['id']},{})['then'](function(){return _0x52efd1;});}else{return _0x52efd1;}})[_0x6522('0x53')](function(_0x56f7bc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56f7bc);throw _0x56f7bc;});}return _0x52efd1;});}})[_0x6522('0x2b')](respondWithResult(_0x583399,0xc9))['catch'](handleError(_0x583399,null));};exports[_0x6522('0x66')]=function(_0x2124f6,_0x4c4b4c){if(_0x2124f6['body']['id']){delete _0x2124f6[_0x6522('0x58')]['id'];}return db[_0x6522('0x3d')]['find']({'where':{'id':_0x2124f6[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4c4b4c,null))[_0x6522('0x2b')](saveUpdates(_0x2124f6[_0x6522('0x58')],null))[_0x6522('0x2b')](respondWithResult(_0x4c4b4c,null))[_0x6522('0x53')](handleError(_0x4c4b4c,null));};exports['destroy']=function(_0x2e45dd,_0x4d6fbe){return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x2e45dd[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4d6fbe,null))['then'](removeEntity(_0x4d6fbe,null))[_0x6522('0x53')](handleError(_0x4d6fbe,null));};exports[_0x6522('0x67')]=function(_0x535b78,_0x2b773b,_0x199428){var _0x5a3443={'raw':![],'where':{}};var _0x1ec7a4={};var _0x2f7a37={'count':0x0,'rows':[]};return db[_0x6522('0x3d')]['findOne']({'where':{'id':_0x535b78[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2b773b,null))[_0x6522('0x2b')](function(_0x34a25a){if(_0x34a25a){_0x1ec7a4[_0x6522('0x41')]=_[_0x6522('0x60')](db['CmHopper'][_0x6522('0x3e')]);_0x1ec7a4['query']=_[_0x6522('0x60')](_0x535b78[_0x6522('0x42')]);_0x1ec7a4[_0x6522('0x43')]=_[_0x6522('0x56')](_0x1ec7a4[_0x6522('0x41')],_0x1ec7a4[_0x6522('0x42')]);_0x5a3443[_0x6522('0x45')]=_[_0x6522('0x56')](_0x1ec7a4[_0x6522('0x41')],qs[_0x6522('0x44')](_0x535b78[_0x6522('0x42')][_0x6522('0x44')]));_0x5a3443[_0x6522('0x45')]=_0x5a3443[_0x6522('0x45')][_0x6522('0x46')]?_0x5a3443[_0x6522('0x45')]:_0x1ec7a4['model'];if(!_0x535b78[_0x6522('0x42')][_0x6522('0x47')]('nolimit')){_0x5a3443[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x535b78['query'][_0x6522('0x27')]);_0x5a3443[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x535b78[_0x6522('0x42')]['offset']);}_0x5a3443['order']=qs[_0x6522('0x49')](_0x535b78[_0x6522('0x42')]['sort']);_0x5a3443[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x535b78['query'],_0x1ec7a4[_0x6522('0x43')]));_0x5a3443[_0x6522('0x4a')]['VoiceQueueId']=_0x34a25a['id'];if(_0x535b78['query'][_0x6522('0x2f')]){_0x5a3443[_0x6522('0x4a')]=_['merge'](_0x5a3443[_0x6522('0x4a')],{'$or':_['map'](_0x5a3443[_0x6522('0x45')],function(_0x3b6e7d){var _0xb7db0b={};_0xb7db0b[_0x3b6e7d]={'$like':'%'+_0x535b78[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0xb7db0b;})});}_0x5a3443=_['merge']({},_0x5a3443,_0x535b78['options']);return db[_0x6522('0x68')][_0x6522('0x26')]({'where':_0x5a3443[_0x6522('0x4a')]})['then'](function(_0xbda33a){_0x2f7a37[_0x6522('0x26')]=_0xbda33a;if(_0x535b78['query']['includeAll']){_0x5a3443[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x68')][_0x6522('0x51')](_0x5a3443);})[_0x6522('0x2b')](function(_0x4673a3){_0x2f7a37[_0x6522('0x52')]=_0x4673a3;return _0x2f7a37;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x2b773b,_0x5a3443))[_0x6522('0x53')](handleError(_0x2b773b,null));};exports['getHopperHistories']=function(_0x5eb09b,_0x4c89da,_0x36b3c0){var _0x11ea56={'raw':!![],'where':{}};var _0x5de387={};var _0x2720f1={'count':0x0,'rows':[]};return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x5eb09b[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4c89da,null))['then'](function(_0x53f5bf){if(_0x53f5bf){_0x5de387[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x6a')][_0x6522('0x3e')]);_0x5de387[_0x6522('0x42')]=_['keys'](_0x5eb09b['query']);_0x5de387[_0x6522('0x43')]=_['intersection'](_0x5de387[_0x6522('0x41')],_0x5de387[_0x6522('0x42')]);_0x11ea56[_0x6522('0x45')]=_[_0x6522('0x56')](_0x5de387[_0x6522('0x41')],qs['fields'](_0x5eb09b[_0x6522('0x42')][_0x6522('0x44')]));_0x11ea56[_0x6522('0x45')]=_0x11ea56[_0x6522('0x45')][_0x6522('0x46')]?_0x11ea56[_0x6522('0x45')]:_0x5de387['model'];if(!_0x5eb09b['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x11ea56[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x5eb09b['query']['limit']);_0x11ea56[_0x6522('0x24')]=qs['offset'](_0x5eb09b['query'][_0x6522('0x24')]);}_0x11ea56[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x5eb09b[_0x6522('0x42')][_0x6522('0x49')]);_0x11ea56[_0x6522('0x4a')]=qs['filters'](_['pick'](_0x5eb09b[_0x6522('0x42')],_0x5de387['filters']));_0x11ea56[_0x6522('0x4a')][_0x6522('0x6c')]=_0x53f5bf['id'];if(_0x5eb09b[_0x6522('0x42')][_0x6522('0x2f')]){_0x11ea56[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x11ea56[_0x6522('0x4a')],{'$or':_['map'](_0x11ea56[_0x6522('0x45')],function(_0x4d95b3){var _0x5b1240={};_0x5b1240[_0x4d95b3]={'$like':'%'+_0x5eb09b[_0x6522('0x42')]['filter']+'%'};return _0x5b1240;})});}_0x11ea56=_['merge']({},_0x11ea56,_0x5eb09b[_0x6522('0x4e')]);return db[_0x6522('0x6a')][_0x6522('0x26')]({'where':_0x11ea56['where']})[_0x6522('0x2b')](function(_0x14d854){_0x2720f1['count']=_0x14d854;if(_0x5eb09b[_0x6522('0x42')]['includeAll']){_0x11ea56[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x6a')][_0x6522('0x51')](_0x11ea56);})[_0x6522('0x2b')](function(_0x5749a0){_0x2720f1[_0x6522('0x52')]=_0x5749a0;return _0x2720f1;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x4c89da,_0x11ea56))[_0x6522('0x53')](handleError(_0x4c89da,null));};exports[_0x6522('0x6d')]=function(_0x3298a7,_0x3b2de9,_0xa63e0e){var _0x556446={'raw':!![],'where':{}};var _0x969bd4={};var _0x35791d={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x6522('0x69')]({'where':{'id':_0x3298a7[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x3b2de9,null))['then'](function(_0x3e3933){if(_0x3e3933){_0x969bd4['model']=_[_0x6522('0x60')](db[_0x6522('0x6e')]['rawAttributes']);_0x969bd4[_0x6522('0x42')]=_[_0x6522('0x60')](_0x3298a7['query']);_0x969bd4['filters']=_[_0x6522('0x56')](_0x969bd4[_0x6522('0x41')],_0x969bd4[_0x6522('0x42')]);_0x556446[_0x6522('0x45')]=_[_0x6522('0x56')](_0x969bd4['model'],qs[_0x6522('0x44')](_0x3298a7[_0x6522('0x42')][_0x6522('0x44')]));_0x556446['attributes']=_0x556446[_0x6522('0x45')][_0x6522('0x46')]?_0x556446['attributes']:_0x969bd4[_0x6522('0x41')];if(!_0x3298a7['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x556446['limit']=qs['limit'](_0x3298a7[_0x6522('0x42')][_0x6522('0x27')]);_0x556446[_0x6522('0x24')]=qs['offset'](_0x3298a7['query'][_0x6522('0x24')]);}_0x556446['order']=qs[_0x6522('0x49')](_0x3298a7['query']['sort']);_0x556446['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x3298a7[_0x6522('0x42')],_0x969bd4[_0x6522('0x43')]));_0x556446[_0x6522('0x4a')][_0x6522('0x6c')]=_0x3e3933['id'];if(_0x3298a7[_0x6522('0x42')][_0x6522('0x2f')]){_0x556446[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x556446[_0x6522('0x4a')],{'$or':_['map'](_0x556446['attributes'],function(_0x365e07){var _0x4a64d0={};_0x4a64d0[_0x365e07]={'$like':'%'+_0x3298a7[_0x6522('0x42')]['filter']+'%'};return _0x4a64d0;})});}_0x556446=_[_0x6522('0x4c')]({},_0x556446,_0x3298a7[_0x6522('0x4e')]);return db['CmHopperFinal'][_0x6522('0x26')]({'where':_0x556446[_0x6522('0x4a')]})['then'](function(_0x123740){_0x35791d[_0x6522('0x26')]=_0x123740;if(_0x3298a7[_0x6522('0x42')][_0x6522('0x4f')]){_0x556446[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x6e')][_0x6522('0x51')](_0x556446);})[_0x6522('0x2b')](function(_0x5abf6a){_0x35791d['rows']=_0x5abf6a;return _0x35791d;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x3b2de9,_0x556446))['catch'](handleError(_0x3b2de9,null));};exports[_0x6522('0x6f')]=function(_0x4ed7d7,_0x160e3d,_0x4e9657){var _0x474d7f={'raw':!![],'where':{}};var _0x3e1457={};var _0x26a960={'count':0x0,'rows':[]};return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x4ed7d7[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x160e3d,null))['then'](function(_0x17e2bc){if(_0x17e2bc){_0x3e1457[_0x6522('0x41')]=_['keys'](db[_0x6522('0x70')][_0x6522('0x3e')]);_0x3e1457[_0x6522('0x42')]=_[_0x6522('0x60')](_0x4ed7d7[_0x6522('0x42')]);_0x3e1457['filters']=_[_0x6522('0x56')](_0x3e1457['model'],_0x3e1457[_0x6522('0x42')]);_0x474d7f[_0x6522('0x45')]=_[_0x6522('0x56')](_0x3e1457[_0x6522('0x41')],qs[_0x6522('0x44')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x44')]));_0x474d7f[_0x6522('0x45')]=_0x474d7f[_0x6522('0x45')][_0x6522('0x46')]?_0x474d7f['attributes']:_0x3e1457[_0x6522('0x41')];if(!_0x4ed7d7[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x474d7f[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x27')]);_0x474d7f['offset']=qs[_0x6522('0x24')](_0x4ed7d7['query']['offset']);}_0x474d7f[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x4ed7d7[_0x6522('0x42')][_0x6522('0x49')]);_0x474d7f[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x4ed7d7[_0x6522('0x42')],_0x3e1457[_0x6522('0x43')]));_0x474d7f[_0x6522('0x4a')][_0x6522('0x6c')]=_0x17e2bc['id'];if(_0x4ed7d7[_0x6522('0x42')]['filter']){_0x474d7f[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x474d7f[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x474d7f[_0x6522('0x45')],function(_0x45582a){var _0x32b9fc={};_0x32b9fc[_0x45582a]={'$like':'%'+_0x4ed7d7[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x32b9fc;})});}_0x474d7f=_[_0x6522('0x4c')]({},_0x474d7f,_0x4ed7d7[_0x6522('0x4e')]);return db['CmHopperBlack'][_0x6522('0x26')]({'where':_0x474d7f[_0x6522('0x4a')]})[_0x6522('0x2b')](function(_0x21bf1b){_0x26a960[_0x6522('0x26')]=_0x21bf1b;if(_0x4ed7d7[_0x6522('0x42')][_0x6522('0x4f')]){_0x474d7f[_0x6522('0x50')]=[{'all':!![]}];}return db[_0x6522('0x70')][_0x6522('0x51')](_0x474d7f);})['then'](function(_0x5f33d6){_0x26a960['rows']=_0x5f33d6;return _0x26a960;});}})[_0x6522('0x2b')](respondWithFilteredResult(_0x160e3d,_0x474d7f))[_0x6522('0x53')](handleError(_0x160e3d,null));};exports['getTeams']=function(_0x38dbd1,_0x2507d4,_0x33198a){var _0x508ea4={};var _0x12fc92={};var _0x5dc002;var _0x1e1f31;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x38dbd1['params']['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2507d4,null))['then'](function(_0x55f31d){if(_0x55f31d){_0x5dc002=_0x55f31d;_0x12fc92[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x71')][_0x6522('0x3e')]);_0x12fc92[_0x6522('0x42')]=_[_0x6522('0x60')](_0x38dbd1[_0x6522('0x42')]);_0x12fc92[_0x6522('0x43')]=_[_0x6522('0x56')](_0x12fc92[_0x6522('0x41')],_0x12fc92[_0x6522('0x42')]);_0x508ea4[_0x6522('0x45')]=_[_0x6522('0x56')](_0x12fc92['model'],qs[_0x6522('0x44')](_0x38dbd1[_0x6522('0x42')][_0x6522('0x44')]));_0x508ea4[_0x6522('0x45')]=_0x508ea4['attributes'][_0x6522('0x46')]?_0x508ea4['attributes']:_0x12fc92[_0x6522('0x41')];_0x508ea4[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x38dbd1[_0x6522('0x42')][_0x6522('0x49')]);_0x508ea4['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x38dbd1['query'],_0x12fc92[_0x6522('0x43')]));if(_0x38dbd1[_0x6522('0x42')][_0x6522('0x2f')]){_0x508ea4[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x508ea4[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x508ea4[_0x6522('0x45')],function(_0x3fc2f8){var _0x476e7e={};_0x476e7e[_0x3fc2f8]={'$like':'%'+_0x38dbd1[_0x6522('0x42')]['filter']+'%'};return _0x476e7e;})});}_0x508ea4=_[_0x6522('0x4c')]({},_0x508ea4,_0x38dbd1[_0x6522('0x4e')]);return _0x5dc002[_0x6522('0x72')](_0x508ea4);}})[_0x6522('0x2b')](function(_0xc7fcae){if(_0xc7fcae){_0x1e1f31=_0xc7fcae[_0x6522('0x46')];if(!_0x38dbd1[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x508ea4['limit']=qs[_0x6522('0x27')](_0x38dbd1['query'][_0x6522('0x27')]);_0x508ea4[_0x6522('0x24')]=qs['offset'](_0x38dbd1[_0x6522('0x42')][_0x6522('0x24')]);}return _0x5dc002['getTeams'](_0x508ea4);}})[_0x6522('0x2b')](function(_0x51a70d){if(_0x51a70d){return _0x51a70d?{'count':_0x1e1f31,'rows':_0x51a70d}:null;}})['then'](respondWithResult(_0x2507d4,null))[_0x6522('0x53')](handleError(_0x2507d4,null));};exports['addTeams']=function(_0x17b423,_0x711096,_0x513d14){var _0x3b6236=_0x17b423['body'][_0x6522('0x73')];var _0x100374=_[_0x6522('0x31')](_0x3b6236,'id');return db[_0x6522('0x71')][_0x6522('0x51')]({'where':{'id':_0x100374},'attributes':['id'],'include':[{'model':db[_0x6522('0x74')],'as':_0x6522('0x75'),'attributes':['id',_0x6522('0x3a'),_0x6522('0x76'),'voicePause',_0x6522('0x77')],'raw':!![]}]})[_0x6522('0x2b')](function(_0x329ea){if(_0x329ea){var _0x231dbd=_['flatMap'](_0x329ea,function(_0x1511ef){var _0x5e046a=_0x1511ef[_0x6522('0x59')]({'plain':!![]});_0x5e046a[_0x6522('0x75')][_0x6522('0x78')](function(_0x583ede){_0x583ede[_0x6522('0x79')]=_[_0x6522('0x35')](_0x3b6236,{'id':_0x5e046a['id']})['penalty'];});return _0x5e046a[_0x6522('0x75')];});return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x17b423[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(_0x48db18){return db[_0x6522('0x7a')][_0x6522('0x7b')](function(_0x3810d3){return _0x48db18[_0x6522('0x7c')](_0x100374,{'transaction':_0x3810d3})[_0x6522('0x2b')](function(){return BPromise['each'](_0x3b6236,function(_0x594b14){return db['TeamVoiceQueue']['upsert']({'TeamId':_0x594b14['id'],'VoiceQueueId':_0x17b423['params']['id'],'penalty':_0x594b14['penalty']},{'transaction':_0x3810d3});});})[_0x6522('0x2b')](function(){return BPromise[_0x6522('0x7d')](_0x231dbd,function(_0x56dce4){return db[_0x6522('0x7e')][_0x6522('0x7f')]({'where':{'UserId':_0x56dce4['id'],'VoiceQueueId':_0x17b423[_0x6522('0x55')]['id']},'defaults':{'penalty':_0x56dce4[_0x6522('0x79')]},'transaction':_0x3810d3});});})['then'](function(){return BPromise['each'](_[_0x6522('0x2f')](_0x231dbd,{'online':!![]}),function(_0x317902){return db[_0x6522('0x80')][_0x6522('0x81')]({'membername':_0x317902[_0x6522('0x3a')],'UserId':_0x317902['id'],'queue_name':_0x48db18[_0x6522('0x3a')],'VoiceQueueId':_0x48db18['id'],'interface':_['isNil'](_0x317902[_0x6522('0x77')])?util[_0x6522('0x82')](_0x6522('0x83'),_0x317902['name']):_0x317902[_0x6522('0x77')],'paused':_0x317902[_0x6522('0x84')]||![],'penalty':_0x317902[_0x6522('0x79')]},{'transaction':_0x3810d3});});})['then'](function(){_0x231dbd[_0x6522('0x78')](function(_0x4d91f9){socket[_0x6522('0x85')](_0x6522('0x86'),{'UserId':_0x4d91f9['id'],'VoiceQueueId':_0x48db18['id']});});});});});}})[_0x6522('0x2b')](respondWithStatusCode(_0x711096,null))[_0x6522('0x53')](handleError(_0x711096,null));};exports[_0x6522('0x87')]=function(_0x5e7f75,_0x13daa9,_0x45d205){return db[_0x6522('0x71')][_0x6522('0x51')]({'where':{'id':_0x5e7f75[_0x6522('0x42')][_0x6522('0x88')]},'attributes':['id'],'include':[{'model':db[_0x6522('0x74')],'as':_0x6522('0x75'),'attributes':['id'],'raw':!![]}]})[_0x6522('0x2b')](handleEntityNotFound(_0x13daa9,null))['then'](function(_0x2f85eb){var _0x5c3b61=_[_0x6522('0x31')](_0x2f85eb,'id');var _0x3fb9b2=[];var _0x3e1e7f=[];var _0x117569=squel[_0x6522('0x89')]();_0x117569[_0x6522('0x8a')](_0x6522('0x8b'))[_0x6522('0x8c')](_0x6522('0x8d'),'tq')[_0x6522('0x8e')](_0x6522('0x8f'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x6522('0x90'),_0x5e7f75[_0x6522('0x55')]['id']);for(var _0x1d4398=0x0;_0x1d4398<_0x2f85eb[_0x6522('0x46')];_0x1d4398+=0x1){let _0x39f128=_0x2f85eb[_0x1d4398];for(var _0x3051cf=0x0;_0x3051cf<_0x39f128[_0x6522('0x75')][_0x6522('0x46')];_0x3051cf+=0x1){let _0x176e8d=_0x39f128['Agents'][_0x3051cf];var _0x286cb4=_0x117569[_0x6522('0x5f')]();_0x286cb4[_0x6522('0x4a')](_0x6522('0x91'),_0x176e8d['id']);_0x3e1e7f[_0x6522('0x92')](db[_0x6522('0x7a')]['query'](_0x286cb4[_0x6522('0x93')](),{'type':db['sequelize'][_0x6522('0x94')][_0x6522('0x95')]})['then'](function(_0x508711){if(_0x508711[_0x6522('0x46')]===0x1){return _0x176e8d['id'];}else{var _0x45691f=_[_0x6522('0x96')](_['map'](_0x508711,_0x6522('0x97')),function(_0x3b9ce9){return _[_0x6522('0x33')](_0x5c3b61,_0x3b9ce9);});if(_0x45691f){return _0x176e8d['id'];}}}));}}return BPromise['all'](_0x3e1e7f)['then'](function(_0x3ae8f4){_0x3fb9b2=_(_0x3fb9b2)['union'](_0x3ae8f4)['compact']()['value']();return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x5e7f75[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(_0x19efb1){return db[_0x6522('0x7a')][_0x6522('0x7b')](function(_0x3dfc91){return _0x19efb1['removeTeams'](_0x5e7f75['query']['ids'],{'transaction':_0x3dfc91})[_0x6522('0x2b')](function(){if(!_['isEmpty'](_0x3fb9b2)){return _0x19efb1[_0x6522('0x98')](_0x3fb9b2,{'transaction':_0x3dfc91})[_0x6522('0x2b')](function(){return db[_0x6522('0x80')]['destroy']({'where':{'VoiceQueueId':_0x5e7f75[_0x6522('0x55')]['id'],'UserId':_0x3fb9b2},'transaction':_0x3dfc91});});}})['then'](function(){_0x3fb9b2[_0x6522('0x78')](function(_0x32e0c6){socket['emit'](_0x6522('0x99'),{'UserId':_0x32e0c6,'VoiceQueueId':_0x19efb1['id']});});});});});});})[_0x6522('0x2b')](respondWithStatusCode(_0x13daa9,null))[_0x6522('0x53')](handleError(_0x13daa9,null));};exports[_0x6522('0x9a')]=function(_0x38d235,_0x1b010f,_0x205c57){var _0x2bf3b7,_0x189306;return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x38d235[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x1b010f,null))[_0x6522('0x2b')](function(_0x348222){if(_0x348222){_0x189306=_0x348222;return _0x348222['addAgents'](_0x38d235['body'][_0x6522('0x88')],_[_0x6522('0x61')](_0x38d235['body'],[_0x6522('0x88'),'id'])||{})['spread'](function(_0x34f9fc){for(var _0x220720=0x0;_0x220720<_0x38d235[_0x6522('0x58')][_0x6522('0x88')][_0x6522('0x46')];_0x220720+=0x1){socket[_0x6522('0x85')](_0x6522('0x86'),{'UserId':Number(_0x38d235[_0x6522('0x58')][_0x6522('0x88')][_0x220720]),'VoiceQueueId':Number(_0x38d235[_0x6522('0x55')]['id'])});}return _0x34f9fc;});}})[_0x6522('0x2b')](function(_0x55cb24){_0x2bf3b7=_0x55cb24||[];if(_0x189306){return db[_0x6522('0x74')][_0x6522('0x51')]({'where':{'id':_0x38d235[_0x6522('0x58')][_0x6522('0x88')]},'attributes':['id',_0x6522('0x3a'),'online','voicePause',_0x6522('0x77')],'raw':!![]});}})['then'](function(_0x4fd7a1){if(!_[_0x6522('0x9b')](_0x4fd7a1)){var _0x51e850=[];for(var _0x1c8a94=0x0;_0x1c8a94<_0x4fd7a1[_0x6522('0x46')];_0x1c8a94++){if(_0x4fd7a1[_0x1c8a94]['online']){_0x51e850[_0x6522('0x92')](db[_0x6522('0x80')][_0x6522('0x81')]({'membername':_0x4fd7a1[_0x1c8a94][_0x6522('0x3a')],'UserId':_0x4fd7a1[_0x1c8a94]['id'],'queue_name':_0x189306[_0x6522('0x3a')],'VoiceQueueId':_0x189306['id'],'interface':_[_0x6522('0x9c')](_0x4fd7a1[_0x1c8a94]['interface'])?util['format'](_0x6522('0x83'),_0x4fd7a1[_0x1c8a94][_0x6522('0x3a')]):_0x4fd7a1[_0x1c8a94][_0x6522('0x77')],'paused':_0x4fd7a1[_0x1c8a94][_0x6522('0x84')]||![],'penalty':_0x38d235[_0x6522('0x58')]['penalty']||0x0}));}}return BPromise[_0x6522('0x9d')](_0x51e850);}})['then'](function(){return _0x2bf3b7;})['then'](respondWithResult(_0x1b010f,null))[_0x6522('0x53')](handleError(_0x1b010f,null));};exports['removeAgents']=function(_0x5249be,_0x52f297,_0x154011){return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x5249be[_0x6522('0x55')]['id']}})['then'](handleEntityNotFound(_0x52f297,null))[_0x6522('0x2b')](function(_0x186003){if(_0x186003){return _0x186003['removeAgents'](_0x5249be[_0x6522('0x42')][_0x6522('0x88')])[_0x6522('0x2b')](function(){if(_[_0x6522('0x9e')](_0x5249be[_0x6522('0x42')][_0x6522('0x88')])){for(var _0xd11629=0x0;_0xd11629<_0x5249be['query']['ids']['length'];_0xd11629+=0x1){socket['emit'](_0x6522('0x99'),{'UserId':Number(_0x5249be['query'][_0x6522('0x88')][_0xd11629]),'VoiceQueueId':Number(_0x5249be[_0x6522('0x55')]['id'])});}}else{socket[_0x6522('0x85')](_0x6522('0x99'),{'UserId':Number(_0x5249be['query'][_0x6522('0x88')]),'VoiceQueueId':Number(_0x5249be[_0x6522('0x55')]['id'])});}});}})['then'](function(_0xed1fa4){return db[_0x6522('0x80')][_0x6522('0x37')]({'where':{'VoiceQueueId':_0x5249be[_0x6522('0x55')]['id'],'UserId':_0x5249be[_0x6522('0x42')]['ids']}})['then'](function(){return _0xed1fa4;});})[_0x6522('0x2b')](respondWithStatusCode(_0x52f297,null))[_0x6522('0x53')](handleError(_0x52f297,null));};exports[_0x6522('0x9f')]=function(_0x59c320,_0x4c7a78,_0x27f007){var _0x45cf69={};var _0x5cb595={};var _0x4d9b92;var _0x20f7d5;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x59c320['params']['id']}})['then'](handleEntityNotFound(_0x4c7a78,null))[_0x6522('0x2b')](function(_0x1883f1){if(_0x1883f1){_0x4d9b92=_0x1883f1;_0x5cb595[_0x6522('0x41')]=_['keys'](db[_0x6522('0x74')][_0x6522('0x3e')]);_0x5cb595['query']=_[_0x6522('0x60')](_0x59c320[_0x6522('0x42')]);_0x5cb595[_0x6522('0x43')]=_[_0x6522('0x56')](_0x5cb595[_0x6522('0x41')],_0x5cb595[_0x6522('0x42')]);_0x45cf69['attributes']=_['intersection'](_0x5cb595['model'],qs['fields'](_0x59c320['query'][_0x6522('0x44')]));_0x45cf69[_0x6522('0x45')]=_0x45cf69['attributes']['length']?_0x45cf69[_0x6522('0x45')]:_0x5cb595['model'];_0x45cf69[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x59c320[_0x6522('0x42')][_0x6522('0x49')]);_0x45cf69['where']=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x59c320['query'],_0x5cb595[_0x6522('0x43')]));if(_0x59c320['query'][_0x6522('0x2f')]){_0x45cf69[_0x6522('0x4a')]=_['merge'](_0x45cf69[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x45cf69[_0x6522('0x45')],function(_0x4dc21e){var _0x5d8265={};_0x5d8265[_0x4dc21e]={'$like':'%'+_0x59c320['query'][_0x6522('0x2f')]+'%'};return _0x5d8265;})});}_0x45cf69=_[_0x6522('0x4c')]({},_0x45cf69,_0x59c320['options']);return _0x4d9b92[_0x6522('0x9f')](_0x45cf69);}})[_0x6522('0x2b')](function(_0x44c917){if(_0x44c917){_0x20f7d5=_0x44c917['length'];if(!_0x59c320['query'][_0x6522('0x47')](_0x6522('0x6b'))){_0x45cf69[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x59c320['query'][_0x6522('0x27')]);_0x45cf69['offset']=qs[_0x6522('0x24')](_0x59c320[_0x6522('0x42')][_0x6522('0x24')]);}return _0x4d9b92['getAgents'](_0x45cf69);}})[_0x6522('0x2b')](function(_0x59dc6a){if(_0x59dc6a){return _0x59dc6a?{'count':_0x20f7d5,'rows':_0x59dc6a}:null;}})[_0x6522('0x2b')](respondWithResult(_0x4c7a78,null))[_0x6522('0x53')](handleError(_0x4c7a78,null));};exports['getMembers']=function(_0x1b5155,_0x19fde3,_0x2ac7b6){var _0x18400e={};var _0x1723d5={};var _0x4abf76;var _0x213f58;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x1b5155[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x19fde3,null))['then'](function(_0x2d5dad){if(_0x2d5dad){_0x4abf76=_0x2d5dad;_0x1723d5[_0x6522('0x41')]=_[_0x6522('0x60')](db[_0x6522('0x80')][_0x6522('0x3e')]);_0x1723d5[_0x6522('0x42')]=_[_0x6522('0x60')](_0x1b5155['query']);_0x1723d5[_0x6522('0x43')]=_['intersection'](_0x1723d5[_0x6522('0x41')],_0x1723d5[_0x6522('0x42')]);_0x18400e[_0x6522('0x45')]=_[_0x6522('0x56')](_0x1723d5['model'],qs[_0x6522('0x44')](_0x1b5155[_0x6522('0x42')]['fields']));_0x18400e[_0x6522('0x45')]=_0x18400e[_0x6522('0x45')][_0x6522('0x46')]?_0x18400e[_0x6522('0x45')]:_0x1723d5[_0x6522('0x41')];_0x18400e['order']=qs[_0x6522('0x49')](_0x1b5155[_0x6522('0x42')]['sort']);_0x18400e[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x1b5155[_0x6522('0x42')],_0x1723d5['filters']));if(_0x1b5155[_0x6522('0x42')][_0x6522('0x2f')]){_0x18400e[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x18400e[_0x6522('0x4a')],{'$or':_[_0x6522('0x31')](_0x18400e['attributes'],function(_0x375540){var _0x3ab59d={};_0x3ab59d[_0x375540]={'$like':'%'+_0x1b5155[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x3ab59d;})});}_0x18400e=_[_0x6522('0x4c')]({},_0x18400e,_0x1b5155['options']);return _0x4abf76[_0x6522('0xa0')](_0x18400e);}})[_0x6522('0x2b')](function(_0x23fa52){if(_0x23fa52){_0x213f58=_0x23fa52[_0x6522('0x46')];if(!_0x1b5155[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x18400e[_0x6522('0x27')]=qs['limit'](_0x1b5155['query'][_0x6522('0x27')]);_0x18400e[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x1b5155[_0x6522('0x42')][_0x6522('0x24')]);}return _0x4abf76[_0x6522('0xa0')](_0x18400e);}})[_0x6522('0x2b')](function(_0x201bfb){return _0x201bfb?{'count':_0x213f58,'rows':_0x201bfb}:null;})[_0x6522('0x2b')](respondWithResult(_0x19fde3,null))[_0x6522('0x53')](handleError(_0x19fde3,null));};exports[_0x6522('0xa1')]=function(_0x1753eb,_0x11159b,_0x127cee){var _0x558d0f={};var _0x12f51a={};var _0x18df5c;var _0x1af1c0;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x1753eb['params']['id']}})['then'](handleEntityNotFound(_0x11159b,null))[_0x6522('0x2b')](function(_0x3f1dd3){if(_0x3f1dd3){_0x18df5c=_0x3f1dd3;_0x12f51a['model']=_[_0x6522('0x60')](db[_0x6522('0xa2')][_0x6522('0x3e')]);_0x12f51a[_0x6522('0x42')]=_['keys'](_0x1753eb[_0x6522('0x42')]);_0x12f51a[_0x6522('0x43')]=_[_0x6522('0x56')](_0x12f51a[_0x6522('0x41')],_0x12f51a[_0x6522('0x42')]);_0x558d0f[_0x6522('0x45')]=_[_0x6522('0x56')](_0x12f51a[_0x6522('0x41')],qs[_0x6522('0x44')](_0x1753eb[_0x6522('0x42')][_0x6522('0x44')]));_0x558d0f['attributes']=_0x558d0f[_0x6522('0x45')]['length']?_0x558d0f[_0x6522('0x45')]:_0x12f51a['model'];_0x558d0f[_0x6522('0x48')]=qs[_0x6522('0x49')](_0x1753eb[_0x6522('0x42')][_0x6522('0x49')]);_0x558d0f[_0x6522('0x4a')]=qs[_0x6522('0x43')](_[_0x6522('0x4b')](_0x1753eb[_0x6522('0x42')],_0x12f51a[_0x6522('0x43')]));if(_0x1753eb['query']['filter']){_0x558d0f[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x558d0f[_0x6522('0x4a')],{'$or':_['map'](_0x558d0f[_0x6522('0x45')],function(_0x57bfcf){var _0x281746={};_0x281746[_0x57bfcf]={'$like':'%'+_0x1753eb[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x281746;})});}_0x558d0f=_[_0x6522('0x4c')]({},_0x558d0f,_0x1753eb[_0x6522('0x4e')]);return _0x18df5c[_0x6522('0xa1')](_0x558d0f);}})['then'](function(_0x2e0252){if(_0x2e0252){_0x1af1c0=_0x2e0252[_0x6522('0x46')];if(!_0x1753eb[_0x6522('0x42')][_0x6522('0x47')](_0x6522('0x6b'))){_0x558d0f[_0x6522('0x27')]=qs[_0x6522('0x27')](_0x1753eb[_0x6522('0x42')]['limit']);_0x558d0f[_0x6522('0x24')]=qs['offset'](_0x1753eb[_0x6522('0x42')][_0x6522('0x24')]);}return _0x18df5c['getLists'](_0x558d0f);}})[_0x6522('0x2b')](function(_0x3c6191){if(_0x3c6191){return _0x3c6191?{'count':_0x1af1c0,'rows':_0x3c6191}:null;}})[_0x6522('0x2b')](respondWithResult(_0x11159b,null))[_0x6522('0x53')](handleError(_0x11159b,null));};exports[_0x6522('0xa3')]=function(_0x59003f,_0x4ca4cc,_0x29f651){var _0x2496bb=moment()[_0x6522('0x82')](_0x6522('0xa4'));var _0x1dc06c,_0x5e16fd;return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x59003f[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x4ca4cc,null))[_0x6522('0x2b')](function(_0x3c8a62){if(_0x3c8a62){_0x5e16fd=_0x3c8a62;return _0x3c8a62[_0x6522('0xa3')](_0x59003f[_0x6522('0x58')][_0x6522('0x88')],_[_0x6522('0x61')](_0x59003f[_0x6522('0x58')],['ids','id'])||{});}return null;})['spread'](function(_0x9155ab){var _0x286d6f;_0x1dc06c=_0x9155ab||[];var _0x24561b=[];if(_0x9155ab){for(var _0x582664=0x0;_0x582664<_0x9155ab[_0x6522('0x46')];_0x582664+=0x1){var _0x2183a0=_0x9155ab[_0x582664]['get']({'plain':!![]});_0x5e16fd[_0x6522('0xa5')]=_0x59003f['body']['dialCheckDuplicateType']?_0x59003f['body'][_0x6522('0xa5')]:_0x5e16fd[_0x6522('0xa5')];switch(_0x5e16fd['dialCheckDuplicateType']){case _0x6522('0xa6'):_0x286d6f=squel[_0x6522('0xa7')]()[_0x6522('0xa8')]('cm_hopper')[_0x6522('0xa9')]([_0x6522('0xaa'),_0x6522('0xab'),_0x6522('0xac'),_0x6522('0xad'),'VoiceQueueId',_0x6522('0x62'),'updatedAt'],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xaa'),_0x6522('0xaa'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27','scheduledAt')['field']('id',_0x6522('0xac'))[_0x6522('0x8a')](_0x2183a0['CmListId']['toString'](),_0x6522('0xad'))[_0x6522('0x8a')](_0x59003f[_0x6522('0x55')]['id']['toString'](),'VoiceQueueId')[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))['from']('cm_contacts')[_0x6522('0x4a')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x2183a0[_0x6522('0xae')]['toString']())[_0x6522('0x4a')]('phone\x20IS\x20NOT\x20NULL')[_0x6522('0x4a')](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xb0'))[_0x6522('0x8c')](_0x6522('0xb1'))[_0x6522('0x4a')](_0x6522('0x90'),_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')]()))['where'](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')]('COALESCE(phone,\x27\x27)')['from'](_0x6522('0xb2'))['where'](_0x6522('0x90'),_0x59003f['params']['id']['toString']())))[_0x6522('0x93')]();break;case'onlyIfOpen':_0x286d6f=squel[_0x6522('0xa7')]()[_0x6522('0xa8')]('cm_hopper')[_0x6522('0xa9')]([_0x6522('0xaa'),_0x6522('0xab'),_0x6522('0xac'),_0x6522('0xad'),_0x6522('0x6c'),_0x6522('0x62'),_0x6522('0x63')],squel[_0x6522('0x89')]()['field']('phone','phone')[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27','scheduledAt')[_0x6522('0x8a')]('id','ContactId')['field'](_0x2183a0[_0x6522('0xae')][_0x6522('0x93')](),_0x6522('0xad'))[_0x6522('0x8a')](_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')](),_0x6522('0x6c'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))[_0x6522('0x8c')](_0x6522('0xb3'))['where'](_0x6522('0xb4'))[_0x6522('0x4a')](_0x6522('0xb5'),_0x2183a0[_0x6522('0xae')]['toString']())[_0x6522('0x4a')](_0x6522('0xb6'))[_0x6522('0x4a')](_0x6522('0xaf'),squel[_0x6522('0x89')]()[_0x6522('0x8a')]('COALESCE(phone,\x27\x27)')[_0x6522('0x8c')](_0x6522('0xb2'))[_0x6522('0x4a')](_0x6522('0x90'),_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')]())))[_0x6522('0x93')]();break;default:_0x286d6f=squel[_0x6522('0xa7')]()['into'](_0x6522('0xb2'))[_0x6522('0xa9')]([_0x6522('0xaa'),'scheduledAt',_0x6522('0xac'),_0x6522('0xad'),'VoiceQueueId',_0x6522('0x62'),_0x6522('0x63')],squel[_0x6522('0x89')]()['field']('phone',_0x6522('0xaa'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0xab'))['field']('id',_0x6522('0xac'))[_0x6522('0x8a')](_0x2183a0['CmListId'][_0x6522('0x93')](),_0x6522('0xad'))['field'](_0x59003f[_0x6522('0x55')]['id'][_0x6522('0x93')](),'VoiceQueueId')['field']('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x63'))[_0x6522('0x8c')](_0x6522('0xb3'))[_0x6522('0x4a')](_0x6522('0xb4'))[_0x6522('0x4a')](_0x6522('0xb5'),_0x2183a0[_0x6522('0xae')][_0x6522('0x93')]())['where'](_0x6522('0xb6')))[_0x6522('0x93')]();}_0x24561b[_0x6522('0x92')](db['sequelize'][_0x6522('0x42')](_0x286d6f));}return BPromise[_0x6522('0x9d')](_0x24561b);}})['then'](function(){var _0x7f7daf=[];var _0x13c188=squel['insert']()[_0x6522('0xa8')](_0x6522('0xb7'))['fromQuery']([_0x6522('0xb8'),_0x6522('0xaa'),_0x6522('0xb9'),'createdAt',_0x6522('0x63')],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xba'))[_0x6522('0x8a')]('ci.item')[_0x6522('0x8a')](_0x6522('0xbb'))[_0x6522('0x8a')]('\x27'+_0x2496bb+'\x27',_0x6522('0x62'))['field']('\x27'+_0x2496bb+'\x27','updatedAt')[_0x6522('0x8c')](_0x6522('0xbc'),'ci')[_0x6522('0x8e')]('cm_hopper','h','h.ContactId=ci.CmContactId')[_0x6522('0x4a')](_0x6522('0xbd'),_0x2496bb)['where']('ci.ItemClass=?',_0x6522('0xbe')))[_0x6522('0x93')]();_0x7f7daf[_0x6522('0x92')](db[_0x6522('0x7a')][_0x6522('0x42')](_0x13c188));return BPromise['all'](_0x7f7daf);})['then'](function(){return _0x1dc06c;})[_0x6522('0x2b')](respondWithResult(_0x4ca4cc,null))[_0x6522('0x53')](handleError(_0x4ca4cc,null));};exports['removeLists']=function(_0x17a758,_0x39c4b2,_0x3a1f3a){return db['VoiceQueue'][_0x6522('0x35')]({'where':{'id':_0x17a758[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x39c4b2,null))[_0x6522('0x2b')](function(_0x3a9810){if(_0x3a9810){return _0x3a9810[_0x6522('0xbf')](_0x17a758[_0x6522('0x42')][_0x6522('0x88')]);}})[_0x6522('0x2b')](function(_0x29c1a0){if(_0x29c1a0){return db[_0x6522('0x68')][_0x6522('0x37')]({'where':{'ListId':_0x17a758[_0x6522('0x42')][_0x6522('0x88')],'VoiceQueueId':_0x17a758[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](function(){return _0x29c1a0;});}})[_0x6522('0x2b')](respondWithStatusCode(_0x39c4b2,null))[_0x6522('0x53')](handleError(_0x39c4b2,null));};exports[_0x6522('0xc0')]=function(_0x2a8faa,_0x2fa442,_0x1c01d0){var _0x12a85a={};var _0x2205b3={};var _0x368cec;var _0x822c22;return db[_0x6522('0x3d')][_0x6522('0x69')]({'where':{'id':_0x2a8faa[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x2fa442,null))[_0x6522('0x2b')](function(_0x406973){if(_0x406973){_0x368cec=_0x406973;_0x2205b3[_0x6522('0x41')]=_['keys'](db[_0x6522('0xa2')]['rawAttributes']);_0x2205b3[_0x6522('0x42')]=_[_0x6522('0x60')](_0x2a8faa['query']);_0x2205b3[_0x6522('0x43')]=_[_0x6522('0x56')](_0x2205b3['model'],_0x2205b3[_0x6522('0x42')]);_0x12a85a[_0x6522('0x45')]=_['intersection'](_0x2205b3[_0x6522('0x41')],qs[_0x6522('0x44')](_0x2a8faa[_0x6522('0x42')][_0x6522('0x44')]));_0x12a85a[_0x6522('0x45')]=_0x12a85a[_0x6522('0x45')][_0x6522('0x46')]?_0x12a85a[_0x6522('0x45')]:_0x2205b3[_0x6522('0x41')];_0x12a85a[_0x6522('0x48')]=qs['sort'](_0x2a8faa['query'][_0x6522('0x49')]);_0x12a85a[_0x6522('0x4a')]=qs['filters'](_[_0x6522('0x4b')](_0x2a8faa[_0x6522('0x42')],_0x2205b3['filters']));if(_0x2a8faa[_0x6522('0x42')][_0x6522('0x2f')]){_0x12a85a[_0x6522('0x4a')]=_[_0x6522('0x4c')](_0x12a85a[_0x6522('0x4a')],{'$or':_['map'](_0x12a85a['attributes'],function(_0x29ae96){var _0x4085d6={};_0x4085d6[_0x29ae96]={'$like':'%'+_0x2a8faa[_0x6522('0x42')][_0x6522('0x2f')]+'%'};return _0x4085d6;})});}_0x12a85a=_[_0x6522('0x4c')]({},_0x12a85a,_0x2a8faa[_0x6522('0x4e')]);return _0x368cec[_0x6522('0xc0')](_0x12a85a);}})['then'](function(_0xc1bf1d){if(_0xc1bf1d){_0x822c22=_0xc1bf1d['length'];if(!_0x2a8faa[_0x6522('0x42')]['hasOwnProperty'](_0x6522('0x6b'))){_0x12a85a['limit']=qs[_0x6522('0x27')](_0x2a8faa[_0x6522('0x42')][_0x6522('0x27')]);_0x12a85a[_0x6522('0x24')]=qs[_0x6522('0x24')](_0x2a8faa['query']['offset']);}return _0x368cec[_0x6522('0xc0')](_0x12a85a);}})[_0x6522('0x2b')](function(_0x53c7ab){if(_0x53c7ab){return _0x53c7ab?{'count':_0x822c22,'rows':_0x53c7ab}:null;}})['then'](respondWithResult(_0x2fa442,null))['catch'](handleError(_0x2fa442,null));};exports[_0x6522('0xc1')]=function(_0xd8819f,_0x431e15,_0x86995b){var _0x36f02d,_0x11bb66;return db[_0x6522('0x3d')]['find']({'where':{'id':_0xd8819f[_0x6522('0x55')]['id']}})[_0x6522('0x2b')](handleEntityNotFound(_0x431e15,null))['then'](function(_0x5ba395){if(_0x5ba395){_0x11bb66=_0x5ba395;return _0x5ba395['addBlackLists'](_0xd8819f['body'][_0x6522('0x88')],_['omit'](_0xd8819f[_0x6522('0x58')],[_0x6522('0x88'),'id'])||{});}return null;})[_0x6522('0xc2')](function(_0x2098fa){var _0x2439f6;_0x36f02d=_0x2098fa||[];var _0x298166=[];if(_0x2098fa){for(var _0x1bde03=0x0;_0x1bde03<_0x2098fa['length'];_0x1bde03+=0x1){var _0x519a30=_0x2098fa[_0x1bde03][_0x6522('0x59')]({'plain':!![]});_0x2439f6=squel[_0x6522('0xa7')]()[_0x6522('0xa8')](_0x6522('0xc3'))[_0x6522('0xa9')]([_0x6522('0xaa'),'ContactId',_0x6522('0xad'),_0x6522('0x6c'),'createdAt',_0x6522('0x63')],squel[_0x6522('0x89')]()[_0x6522('0x8a')](_0x6522('0xaa'),_0x6522('0xaa'))[_0x6522('0x8a')]('id','ContactId')['field'](_0x519a30[_0x6522('0xae')][_0x6522('0x93')](),'ListId')[_0x6522('0x8a')](_0xd8819f['params']['id']['toString'](),_0x6522('0x6c'))['field'](_0x6522('0xc4'),_0x6522('0x62'))[_0x6522('0x8a')](_0x6522('0xc4'),'updatedAt')[_0x6522('0x8c')](_0x6522('0xb3'))[_0x6522('0x4a')](_0x6522('0xb4'))[_0x6522('0x4a')]('ListId\x20=\x20?',_0x519a30[_0x6522('0xae')][_0x6522('0x93')]())[_0x6522('0x4a')](_0x6522('0xb6')))[_0x6522('0x93')]();_0x298166['push'](db['sequelize']['query'](_0x2439f6));}return BPromise['all'](_0x298166);}})['then'](function(){return _0x36f02d;})['then'](respondWithResult(_0x431e15,null))[_0x6522('0x53')](handleError(_0x431e15,null));};exports[_0x6522('0xc5')]=function(_0x4cb022,_0x1c16fa,_0x259f7d){return db[_0x6522('0x3d')][_0x6522('0x35')]({'where':{'id':_0x4cb022['params']['id']}})['then'](handleEntityNotFound(_0x1c16fa,null))['then'](function(_0x49488a){if(_0x49488a){return _0x49488a[_0x6522('0xc5')](_0x4cb022['query'][_0x6522('0x88')]);}})[_0x6522('0x2b')](function(_0x82efa3){if(_0x82efa3){return db['CmHopperBlack'][_0x6522('0x37')]({'where':{'ListId':_0x4cb022[_0x6522('0x42')][_0x6522('0x88')],'VoiceQueueId':_0x4cb022['params']['id']}})[_0x6522('0x2b')](function(){return _0x82efa3;});}})['then'](respondWithStatusCode(_0x1c16fa,null))[_0x6522('0x53')](handleError(_0x1c16fa,null));};
\ No newline at end of file
+var _0x770d=['Team','User','online','voicePause','interface','flatMap','forEach','penalty','Agents','transaction','addTeams','TeamVoiceQueue','upsert','each','UserVoiceQueue','findOrCreate','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','TeamId','all','union','compact','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','UserVoiceQueueRt','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','CmListId','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','into','push','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','cm_contact_has_items','join','h.ContactId=ci.CmContactId','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./voiceQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','VoiceQueues','QueueCampaigns','outbound','ignore','map','value','includes','type','UserProfileResource','stack','name','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','options','omit','createdAt','updatedAt','userProfileId','update','getHoppers','findOne','order','pick','CmHopper','getHopperHistories','CmHopperHistory','VoiceQueueId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','teams'];(function(_0x458c02,_0x433b95){var _0x5e86cb=function(_0x3ab53b){while(--_0x3ab53b){_0x458c02['push'](_0x458c02['shift']());}};_0x5e86cb(++_0x433b95);}(_0x770d,0x122));var _0xd770=function(_0x4cd61f,_0x223af5){_0x4cd61f=_0x4cd61f-0x0;var _0x107eca=_0x770d[_0x4cd61f];return _0x107eca;};'use strict';var emlformat=require(_0xd770('0x0'));var rimraf=require(_0xd770('0x1'));var zipdir=require(_0xd770('0x2'));var jsonpatch=require(_0xd770('0x3'));var rp=require(_0xd770('0x4'));var moment=require(_0xd770('0x5'));var BPromise=require(_0xd770('0x6'));var Mustache=require('mustache');var util=require(_0xd770('0x7'));var path=require(_0xd770('0x8'));var sox=require(_0xd770('0x9'));var csv=require(_0xd770('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd770('0xb'));var squel=require(_0xd770('0xc'));var crypto=require(_0xd770('0xd'));var jsforce=require(_0xd770('0xe'));var deskjs=require(_0xd770('0xf'));var toCsv=require(_0xd770('0xa'));var querystring=require(_0xd770('0x10'));var Papa=require('papaparse');var Redis=require(_0xd770('0x11'));var authService=require(_0xd770('0x12'));var qs=require(_0xd770('0x13'));var as=require(_0xd770('0x14'));var hardwareService=require(_0xd770('0x15'));var logger=require('../../config/logger')(_0xd770('0x16'));var utils=require(_0xd770('0x17'));var config=require(_0xd770('0x18'));var licenseUtil=require(_0xd770('0x19'));var db=require(_0xd770('0x1a'))['db'];config[_0xd770('0x1b')]=_[_0xd770('0x1c')](config[_0xd770('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd770('0x1b')]));require(_0xd770('0x1d'))[_0xd770('0x1e')](socket);function respondWithStatusCode(_0x4561bb,_0x51dacf){_0x51dacf=_0x51dacf||0xcc;return function(_0x2f6832){if(_0x2f6832){return _0x4561bb[_0xd770('0x1f')](_0x51dacf);}return _0x4561bb[_0xd770('0x20')](_0x51dacf)[_0xd770('0x21')]();};}function respondWithResult(_0x47a84f,_0xb759ea){_0xb759ea=_0xb759ea||0xc8;return function(_0x58017e){if(_0x58017e){return _0x47a84f[_0xd770('0x20')](_0xb759ea)[_0xd770('0x22')](_0x58017e);}};}function respondWithFilteredResult(_0x38c57d,_0x3040c6){return function(_0x1ed1b5){if(_0x1ed1b5){var _0x38f458=typeof _0x3040c6[_0xd770('0x23')]===_0xd770('0x24')&&typeof _0x3040c6[_0xd770('0x25')]==='undefined';var _0x22968f=_0x1ed1b5['count'];var _0x143ee1=_0x38f458?0x0:_0x3040c6['offset'];var _0x28ac07=_0x38f458?_0x1ed1b5[_0xd770('0x26')]:_0x3040c6[_0xd770('0x23')]+_0x3040c6[_0xd770('0x25')];var _0x434c4f;if(_0x28ac07>=_0x22968f){_0x28ac07=_0x22968f;_0x434c4f=0xc8;}else{_0x434c4f=0xce;}_0x38c57d['status'](_0x434c4f);return _0x38c57d[_0xd770('0x27')](_0xd770('0x28'),_0x143ee1+'-'+_0x28ac07+'/'+_0x22968f)['json'](_0x1ed1b5);}return null;};}function patchUpdates(_0x3c0aa8){return function(_0x21dc92){try{jsonpatch[_0xd770('0x29')](_0x21dc92,_0x3c0aa8,!![]);}catch(_0x1b9aa4){return BPromise['reject'](_0x1b9aa4);}return _0x21dc92[_0xd770('0x2a')]();};}function saveUpdates(_0xdfb694,_0x1b404d){return function(_0x398ebf){if(_0x398ebf){return _0x398ebf['update'](_0xdfb694)[_0xd770('0x2b')](function(_0xa58995){return _0xa58995;});}return null;};}function removeEntity(_0x4f64df,_0x4cc1e3){return function(_0x330447){if(_0x330447){return _0x330447[_0xd770('0x2c')]()[_0xd770('0x2b')](function(){var _0x266e80=_0x330447[_0xd770('0x2d')]({'plain':!![]});var _0x112aaf=[{'name':_0xd770('0x2e'),'value':'inbound','ignore':![]},{'name':_0xd770('0x2f'),'value':_0xd770('0x30'),'ignore':![]}];var _0x589da7=_(_0x112aaf)['filter'](_0xd770('0x31'))[_0xd770('0x32')]('value')[_0xd770('0x33')]();if(_[_0xd770('0x34')](_0x589da7,_0x266e80[_0xd770('0x35')])){return;}var _0x2768c1=_['find'](_0x112aaf,[_0xd770('0x33'),_0x266e80['type']])['name'];return db[_0xd770('0x36')][_0xd770('0x2c')]({'where':{'type':_0x2768c1,'resourceId':_0x266e80['id']}})['then'](function(){return _0x330447;});})['then'](function(){_0x4f64df[_0xd770('0x20')](0xcc)[_0xd770('0x21')]();});}};}function handleEntityNotFound(_0x5c8073,_0x2755c2){return function(_0x187207){if(!_0x187207){_0x5c8073[_0xd770('0x1f')](0x194);}return _0x187207;};}function handleError(_0x1997ce,_0x5b0e78){_0x5b0e78=_0x5b0e78||0x1f4;return function(_0xdafa24){logger['error'](_0xdafa24[_0xd770('0x37')]);if(_0xdafa24[_0xd770('0x38')]){delete _0xdafa24[_0xd770('0x38')];}_0x1997ce[_0xd770('0x20')](_0x5b0e78)[_0xd770('0x39')](_0xdafa24);};}exports[_0xd770('0x3a')]=function(_0x260e37,_0x2fa367){var _0x592418={},_0x1b156a={},_0x5c8a89={'count':0x0,'rows':[]};var _0x2afc7d=_['map'](db[_0xd770('0x3b')][_0xd770('0x3c')],function(_0x1b11f7){return{'name':_0x1b11f7[_0xd770('0x3d')],'type':_0x1b11f7[_0xd770('0x35')][_0xd770('0x3e')]};});_0x1b156a[_0xd770('0x3f')]=_[_0xd770('0x32')](_0x2afc7d,_0xd770('0x38'));_0x1b156a[_0xd770('0x40')]=_[_0xd770('0x41')](_0x260e37[_0xd770('0x40')]);_0x1b156a['filters']=_[_0xd770('0x42')](_0x1b156a[_0xd770('0x3f')],_0x1b156a['query']);_0x592418[_0xd770('0x43')]=_[_0xd770('0x42')](_0x1b156a['model'],qs['fields'](_0x260e37[_0xd770('0x40')][_0xd770('0x44')]));_0x592418['attributes']=_0x592418[_0xd770('0x43')][_0xd770('0x45')]?_0x592418[_0xd770('0x43')]:_0x1b156a[_0xd770('0x3f')];if(!_0x260e37[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0x592418['limit']=qs['limit'](_0x260e37[_0xd770('0x40')][_0xd770('0x25')]);_0x592418[_0xd770('0x23')]=qs[_0xd770('0x23')](_0x260e37[_0xd770('0x40')][_0xd770('0x23')]);}_0x592418['order']=qs['sort'](_0x260e37[_0xd770('0x40')][_0xd770('0x48')]);_0x592418[_0xd770('0x49')]=qs[_0xd770('0x4a')](_['pick'](_0x260e37[_0xd770('0x40')],_0x1b156a['filters']),_0x2afc7d);if(_0x260e37[_0xd770('0x40')]['filter']){_0x592418[_0xd770('0x49')]=_['merge'](_0x592418[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x2afc7d,function(_0x2435e6){if(_0x2435e6[_0xd770('0x35')]!==_0xd770('0x4b')){var _0x475dab={};_0x475dab[_0x2435e6[_0xd770('0x38')]]={'$like':'%'+_0x260e37[_0xd770('0x40')][_0xd770('0x4c')]+'%'};return _0x475dab;}})});}_0x592418=_['merge']({},_0x592418,_0x260e37['options']);var _0x423068={'where':_0x592418['where']};return db[_0xd770('0x3b')][_0xd770('0x26')](_0x423068)[_0xd770('0x2b')](function(_0x263858){_0x5c8a89['count']=_0x263858;if(_0x260e37[_0xd770('0x40')][_0xd770('0x4d')]){_0x592418[_0xd770('0x4e')]=[{'all':!![]}];}return db[_0xd770('0x3b')][_0xd770('0x4f')](_0x592418);})[_0xd770('0x2b')](function(_0x44d9a5){_0x5c8a89[_0xd770('0x50')]=_0x44d9a5;return _0x5c8a89;})['then'](respondWithFilteredResult(_0x2fa367,_0x592418))[_0xd770('0x51')](handleError(_0x2fa367,null));};exports[_0xd770('0x52')]=function(_0x3bd4b9,_0x3e3650){var _0x2bce6d={'raw':![],'where':{'id':_0x3bd4b9[_0xd770('0x53')]['id']}},_0x4a7627={};_0x4a7627[_0xd770('0x3f')]=_['keys'](db[_0xd770('0x3b')][_0xd770('0x3c')]);_0x4a7627['query']=_[_0xd770('0x41')](_0x3bd4b9[_0xd770('0x40')]);_0x4a7627[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x4a7627['model'],_0x4a7627[_0xd770('0x40')]);_0x2bce6d[_0xd770('0x43')]=_[_0xd770('0x42')](_0x4a7627[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x3bd4b9[_0xd770('0x40')][_0xd770('0x44')]));_0x2bce6d['attributes']=_0x2bce6d[_0xd770('0x43')][_0xd770('0x45')]?_0x2bce6d[_0xd770('0x43')]:_0x4a7627['model'];if(_0x3bd4b9[_0xd770('0x40')][_0xd770('0x4d')]){_0x2bce6d['include']=[{'all':!![]}];}_0x2bce6d=_[_0xd770('0x54')]({},_0x2bce6d,_0x3bd4b9['options']);return db[_0xd770('0x3b')][_0xd770('0x55')](_0x2bce6d)[_0xd770('0x2b')](handleEntityNotFound(_0x3e3650,null))[_0xd770('0x2b')](respondWithResult(_0x3e3650,null))[_0xd770('0x51')](handleError(_0x3e3650,null));};exports[_0xd770('0x56')]=function(_0x553b12,_0x5421d5){return db['VoiceQueue'][_0xd770('0x56')](_0x553b12[_0xd770('0x57')],{})[_0xd770('0x2b')](function(_0x301539){var _0x219c12=_0x553b12['user'][_0xd770('0x2d')]({'plain':!![]});if(!_0x219c12)throw new Error(_0xd770('0x58'));if(_0x219c12[_0xd770('0x59')]===_0xd770('0x5a')){var _0x2c3a4f=_0x301539[_0xd770('0x2d')]({'plain':!![]});var _0x3a2c6f=[{'name':_0xd770('0x2e'),'value':'inbound'},{'name':'QueueCampaigns','value':'outbound'}];var _0x7e3a80=_[_0xd770('0x55')](_0x3a2c6f,[_0xd770('0x33'),_0x2c3a4f['type']])[_0xd770('0x38')];return db[_0xd770('0x5b')][_0xd770('0x55')]({'where':{'name':_0x7e3a80,'userProfileId':_0x219c12['userProfileId']},'raw':!![]})[_0xd770('0x2b')](function(_0x49630c){if(_0x49630c&&_0x49630c[_0xd770('0x5c')]===0x0){return db[_0xd770('0x36')][_0xd770('0x56')]({'name':_0x2c3a4f[_0xd770('0x38')],'resourceId':_0x2c3a4f['id'],'type':_0x49630c[_0xd770('0x38')],'sectionId':_0x49630c['id']},{})[_0xd770('0x2b')](function(){return _0x301539;});}else{return _0x301539;}})['catch'](function(_0x1405ef){logger[_0xd770('0x5d')](_0xd770('0x5e'),_0x1405ef);throw _0x1405ef;});}return _0x301539;})[_0xd770('0x2b')](respondWithResult(_0x5421d5,0xc9))[_0xd770('0x51')](handleError(_0x5421d5,null));};exports['clone']=function(_0x31f1ba,_0x1595bd){var _0x1f26a={'where':{'id':_0x31f1ba['params']['id']}},_0x199dde={};_0x199dde[_0xd770('0x3f')]=_['keys'](db['VoiceQueue'][_0xd770('0x3c')]);_0x1f26a[_0xd770('0x43')]=_['intersection'](_0x199dde[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x31f1ba['query'][_0xd770('0x44')]));_0x1f26a[_0xd770('0x43')]=_0x1f26a[_0xd770('0x43')]['length']?_0x1f26a[_0xd770('0x43')]:_0x199dde['model'];if(_0x31f1ba[_0xd770('0x40')][_0xd770('0x4d')]){_0x1f26a[_0xd770('0x4e')]=[{'all':!![]}];}_0x1f26a=_['merge']({},_0x1f26a,_0x31f1ba[_0xd770('0x5f')]);return db['VoiceQueue'][_0xd770('0x55')](_0x1f26a)[_0xd770('0x2b')](handleEntityNotFound(_0x1595bd,null))[_0xd770('0x2b')](function(_0x328486){if(_0x328486){var _0x1c8457=_0x328486[_0xd770('0x2d')]({'plain':!![]});_0x1c8457=qs[_0xd770('0x60')](_0x1c8457,['id',_0xd770('0x61'),'updatedAt']);_0x31f1ba[_0xd770('0x57')]=_[_0xd770('0x60')](_0x31f1ba['body'],['id',_0xd770('0x61'),_0xd770('0x62')]);return db[_0xd770('0x3b')]['create'](_['merge'](_0x1c8457,_0x31f1ba[_0xd770('0x57')]),{'include':_0x31f1ba['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x4d7513){var _0x95b383=_0x31f1ba['user'][_0xd770('0x2d')]({'plain':!![]});if(!_0x95b383)throw new Error(_0xd770('0x58'));if(_0x95b383['role']===_0xd770('0x5a')){var _0x1f9de9=_0x4d7513[_0xd770('0x2d')]({'plain':!![]});var _0x27cd72=[{'name':_0xd770('0x2e'),'value':'inbound'},{'name':_0xd770('0x2f'),'value':'outbound'}];var _0x3f10b3=_[_0xd770('0x55')](_0x27cd72,[_0xd770('0x33'),_0x1f9de9[_0xd770('0x35')]])[_0xd770('0x38')];return db[_0xd770('0x5b')][_0xd770('0x55')]({'where':{'name':_0x3f10b3,'userProfileId':_0x95b383[_0xd770('0x63')]},'raw':!![]})[_0xd770('0x2b')](function(_0x52c364){if(_0x52c364&&_0x52c364[_0xd770('0x5c')]===0x0){return db[_0xd770('0x36')]['create']({'name':_0x1f9de9[_0xd770('0x38')],'resourceId':_0x1f9de9['id'],'type':_0x52c364[_0xd770('0x38')],'sectionId':_0x52c364['id']},{})['then'](function(){return _0x4d7513;});}else{return _0x4d7513;}})[_0xd770('0x51')](function(_0x5ddd9b){logger[_0xd770('0x5d')](_0xd770('0x5e'),_0x5ddd9b);throw _0x5ddd9b;});}return _0x4d7513;});}})[_0xd770('0x2b')](respondWithResult(_0x1595bd,0xc9))['catch'](handleError(_0x1595bd,null));};exports[_0xd770('0x64')]=function(_0x32afa2,_0x37fd8f){if(_0x32afa2[_0xd770('0x57')]['id']){delete _0x32afa2[_0xd770('0x57')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x32afa2[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x37fd8f,null))['then'](saveUpdates(_0x32afa2[_0xd770('0x57')],null))[_0xd770('0x2b')](respondWithResult(_0x37fd8f,null))[_0xd770('0x51')](handleError(_0x37fd8f,null));};exports[_0xd770('0x2c')]=function(_0x55f5db,_0x1d34ad){return db[_0xd770('0x3b')]['find']({'where':{'id':_0x55f5db[_0xd770('0x53')]['id']}})['then'](handleEntityNotFound(_0x1d34ad,null))['then'](removeEntity(_0x1d34ad,null))[_0xd770('0x51')](handleError(_0x1d34ad,null));};exports[_0xd770('0x65')]=function(_0x7cfa28,_0x1bba87,_0x305f8e){var _0x320c22={'raw':![],'where':{}};var _0x139ff9={};var _0x2403f4={'count':0x0,'rows':[]};return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0x7cfa28[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x1bba87,null))[_0xd770('0x2b')](function(_0x28921c){if(_0x28921c){_0x139ff9[_0xd770('0x3f')]=_['keys'](db['CmHopper'][_0xd770('0x3c')]);_0x139ff9['query']=_[_0xd770('0x41')](_0x7cfa28[_0xd770('0x40')]);_0x139ff9[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x139ff9['model'],_0x139ff9[_0xd770('0x40')]);_0x320c22['attributes']=_['intersection'](_0x139ff9[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x7cfa28['query']['fields']));_0x320c22[_0xd770('0x43')]=_0x320c22['attributes'][_0xd770('0x45')]?_0x320c22[_0xd770('0x43')]:_0x139ff9[_0xd770('0x3f')];if(!_0x7cfa28[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0x320c22[_0xd770('0x25')]=qs['limit'](_0x7cfa28[_0xd770('0x40')][_0xd770('0x25')]);_0x320c22['offset']=qs['offset'](_0x7cfa28['query'][_0xd770('0x23')]);}_0x320c22[_0xd770('0x67')]=qs['sort'](_0x7cfa28['query'][_0xd770('0x48')]);_0x320c22[_0xd770('0x49')]=qs['filters'](_[_0xd770('0x68')](_0x7cfa28[_0xd770('0x40')],_0x139ff9[_0xd770('0x4a')]));_0x320c22['where']['VoiceQueueId']=_0x28921c['id'];if(_0x7cfa28[_0xd770('0x40')][_0xd770('0x4c')]){_0x320c22[_0xd770('0x49')]=_[_0xd770('0x54')](_0x320c22['where'],{'$or':_[_0xd770('0x32')](_0x320c22[_0xd770('0x43')],function(_0x6568f6){var _0x1b1fb0={};_0x1b1fb0[_0x6568f6]={'$like':'%'+_0x7cfa28['query'][_0xd770('0x4c')]+'%'};return _0x1b1fb0;})});}_0x320c22=_[_0xd770('0x54')]({},_0x320c22,_0x7cfa28[_0xd770('0x5f')]);return db[_0xd770('0x69')][_0xd770('0x26')]({'where':_0x320c22[_0xd770('0x49')]})['then'](function(_0x41e1ed){_0x2403f4[_0xd770('0x26')]=_0x41e1ed;if(_0x7cfa28[_0xd770('0x40')][_0xd770('0x4d')]){_0x320c22[_0xd770('0x4e')]=[{'all':!![]}];}return db[_0xd770('0x69')]['findAll'](_0x320c22);})[_0xd770('0x2b')](function(_0x3204d3){_0x2403f4['rows']=_0x3204d3;return _0x2403f4;});}})[_0xd770('0x2b')](respondWithFilteredResult(_0x1bba87,_0x320c22))[_0xd770('0x51')](handleError(_0x1bba87,null));};exports[_0xd770('0x6a')]=function(_0x2eb58c,_0x2141df,_0x9e654b){var _0x26522c={'raw':!![],'where':{}};var _0x2e12d2={};var _0x5bce18={'count':0x0,'rows':[]};return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0x2eb58c['params']['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x2141df,null))[_0xd770('0x2b')](function(_0x493252){if(_0x493252){_0x2e12d2['model']=_[_0xd770('0x41')](db[_0xd770('0x6b')][_0xd770('0x3c')]);_0x2e12d2[_0xd770('0x40')]=_[_0xd770('0x41')](_0x2eb58c['query']);_0x2e12d2[_0xd770('0x4a')]=_['intersection'](_0x2e12d2[_0xd770('0x3f')],_0x2e12d2[_0xd770('0x40')]);_0x26522c['attributes']=_['intersection'](_0x2e12d2[_0xd770('0x3f')],qs['fields'](_0x2eb58c[_0xd770('0x40')][_0xd770('0x44')]));_0x26522c['attributes']=_0x26522c[_0xd770('0x43')][_0xd770('0x45')]?_0x26522c[_0xd770('0x43')]:_0x2e12d2[_0xd770('0x3f')];if(!_0x2eb58c[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0x26522c[_0xd770('0x25')]=qs[_0xd770('0x25')](_0x2eb58c[_0xd770('0x40')][_0xd770('0x25')]);_0x26522c['offset']=qs[_0xd770('0x23')](_0x2eb58c[_0xd770('0x40')][_0xd770('0x23')]);}_0x26522c['order']=qs[_0xd770('0x48')](_0x2eb58c[_0xd770('0x40')][_0xd770('0x48')]);_0x26522c[_0xd770('0x49')]=qs[_0xd770('0x4a')](_[_0xd770('0x68')](_0x2eb58c['query'],_0x2e12d2[_0xd770('0x4a')]));_0x26522c[_0xd770('0x49')][_0xd770('0x6c')]=_0x493252['id'];if(_0x2eb58c['query'][_0xd770('0x4c')]){_0x26522c['where']=_['merge'](_0x26522c[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x26522c['attributes'],function(_0x1df43d){var _0x456963={};_0x456963[_0x1df43d]={'$like':'%'+_0x2eb58c['query'][_0xd770('0x4c')]+'%'};return _0x456963;})});}_0x26522c=_[_0xd770('0x54')]({},_0x26522c,_0x2eb58c[_0xd770('0x5f')]);return db[_0xd770('0x6b')][_0xd770('0x26')]({'where':_0x26522c[_0xd770('0x49')]})['then'](function(_0x2998da){_0x5bce18[_0xd770('0x26')]=_0x2998da;if(_0x2eb58c[_0xd770('0x40')][_0xd770('0x4d')]){_0x26522c[_0xd770('0x4e')]=[{'all':!![]}];}return db[_0xd770('0x6b')][_0xd770('0x4f')](_0x26522c);})[_0xd770('0x2b')](function(_0x27be2a){_0x5bce18[_0xd770('0x50')]=_0x27be2a;return _0x5bce18;});}})[_0xd770('0x2b')](respondWithFilteredResult(_0x2141df,_0x26522c))[_0xd770('0x51')](handleError(_0x2141df,null));};exports['getHopperFinals']=function(_0x26fe1c,_0xa3f7b0,_0x3ba61f){var _0x50d069={'raw':!![],'where':{}};var _0x99e7c8={};var _0x309838={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xd770('0x66')]({'where':{'id':_0x26fe1c[_0xd770('0x53')]['id']}})['then'](handleEntityNotFound(_0xa3f7b0,null))[_0xd770('0x2b')](function(_0x31481b){if(_0x31481b){_0x99e7c8[_0xd770('0x3f')]=_['keys'](db[_0xd770('0x6d')][_0xd770('0x3c')]);_0x99e7c8['query']=_['keys'](_0x26fe1c[_0xd770('0x40')]);_0x99e7c8[_0xd770('0x4a')]=_['intersection'](_0x99e7c8[_0xd770('0x3f')],_0x99e7c8[_0xd770('0x40')]);_0x50d069[_0xd770('0x43')]=_['intersection'](_0x99e7c8[_0xd770('0x3f')],qs['fields'](_0x26fe1c[_0xd770('0x40')][_0xd770('0x44')]));_0x50d069[_0xd770('0x43')]=_0x50d069[_0xd770('0x43')]['length']?_0x50d069['attributes']:_0x99e7c8[_0xd770('0x3f')];if(!_0x26fe1c[_0xd770('0x40')]['hasOwnProperty'](_0xd770('0x47'))){_0x50d069[_0xd770('0x25')]=qs['limit'](_0x26fe1c[_0xd770('0x40')][_0xd770('0x25')]);_0x50d069[_0xd770('0x23')]=qs[_0xd770('0x23')](_0x26fe1c[_0xd770('0x40')][_0xd770('0x23')]);}_0x50d069['order']=qs['sort'](_0x26fe1c[_0xd770('0x40')]['sort']);_0x50d069[_0xd770('0x49')]=qs['filters'](_[_0xd770('0x68')](_0x26fe1c[_0xd770('0x40')],_0x99e7c8[_0xd770('0x4a')]));_0x50d069[_0xd770('0x49')][_0xd770('0x6c')]=_0x31481b['id'];if(_0x26fe1c[_0xd770('0x40')][_0xd770('0x4c')]){_0x50d069[_0xd770('0x49')]=_['merge'](_0x50d069[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x50d069[_0xd770('0x43')],function(_0x4e76d3){var _0x531105={};_0x531105[_0x4e76d3]={'$like':'%'+_0x26fe1c[_0xd770('0x40')][_0xd770('0x4c')]+'%'};return _0x531105;})});}_0x50d069=_[_0xd770('0x54')]({},_0x50d069,_0x26fe1c[_0xd770('0x5f')]);return db[_0xd770('0x6d')][_0xd770('0x26')]({'where':_0x50d069[_0xd770('0x49')]})['then'](function(_0x1c47a4){_0x309838['count']=_0x1c47a4;if(_0x26fe1c[_0xd770('0x40')]['includeAll']){_0x50d069[_0xd770('0x4e')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xd770('0x4f')](_0x50d069);})[_0xd770('0x2b')](function(_0x72df1f){_0x309838['rows']=_0x72df1f;return _0x309838;});}})['then'](respondWithFilteredResult(_0xa3f7b0,_0x50d069))[_0xd770('0x51')](handleError(_0xa3f7b0,null));};exports[_0xd770('0x6e')]=function(_0x503b6e,_0x7e4b16,_0x24e8ff){var _0xc68b0d={'raw':!![],'where':{}};var _0x16bf1c={};var _0x756a80={'count':0x0,'rows':[]};return db[_0xd770('0x3b')]['findOne']({'where':{'id':_0x503b6e[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x7e4b16,null))[_0xd770('0x2b')](function(_0x4a9897){if(_0x4a9897){_0x16bf1c[_0xd770('0x3f')]=_[_0xd770('0x41')](db['CmHopperBlack']['rawAttributes']);_0x16bf1c['query']=_[_0xd770('0x41')](_0x503b6e['query']);_0x16bf1c[_0xd770('0x4a')]=_['intersection'](_0x16bf1c[_0xd770('0x3f')],_0x16bf1c[_0xd770('0x40')]);_0xc68b0d['attributes']=_[_0xd770('0x42')](_0x16bf1c[_0xd770('0x3f')],qs['fields'](_0x503b6e['query'][_0xd770('0x44')]));_0xc68b0d['attributes']=_0xc68b0d['attributes'][_0xd770('0x45')]?_0xc68b0d['attributes']:_0x16bf1c['model'];if(!_0x503b6e[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0xc68b0d[_0xd770('0x25')]=qs[_0xd770('0x25')](_0x503b6e['query'][_0xd770('0x25')]);_0xc68b0d[_0xd770('0x23')]=qs[_0xd770('0x23')](_0x503b6e[_0xd770('0x40')][_0xd770('0x23')]);}_0xc68b0d['order']=qs[_0xd770('0x48')](_0x503b6e['query'][_0xd770('0x48')]);_0xc68b0d[_0xd770('0x49')]=qs[_0xd770('0x4a')](_[_0xd770('0x68')](_0x503b6e[_0xd770('0x40')],_0x16bf1c[_0xd770('0x4a')]));_0xc68b0d['where']['VoiceQueueId']=_0x4a9897['id'];if(_0x503b6e[_0xd770('0x40')]['filter']){_0xc68b0d[_0xd770('0x49')]=_[_0xd770('0x54')](_0xc68b0d[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0xc68b0d['attributes'],function(_0x3b324a){var _0x43cc7d={};_0x43cc7d[_0x3b324a]={'$like':'%'+_0x503b6e[_0xd770('0x40')][_0xd770('0x4c')]+'%'};return _0x43cc7d;})});}_0xc68b0d=_[_0xd770('0x54')]({},_0xc68b0d,_0x503b6e[_0xd770('0x5f')]);return db[_0xd770('0x6f')][_0xd770('0x26')]({'where':_0xc68b0d[_0xd770('0x49')]})['then'](function(_0x24ee85){_0x756a80['count']=_0x24ee85;if(_0x503b6e[_0xd770('0x40')][_0xd770('0x4d')]){_0xc68b0d[_0xd770('0x4e')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xd770('0x4f')](_0xc68b0d);})[_0xd770('0x2b')](function(_0x18c44b){_0x756a80['rows']=_0x18c44b;return _0x756a80;});}})[_0xd770('0x2b')](respondWithFilteredResult(_0x7e4b16,_0xc68b0d))['catch'](handleError(_0x7e4b16,null));};exports[_0xd770('0x70')]=function(_0x5ed53e,_0x42f492,_0x532bd4){var _0x1aea6e={};var _0x8812ab={};var _0x1d968c;var _0x5b31d0;return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0x5ed53e[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x42f492,null))[_0xd770('0x2b')](function(_0x17fbc7){if(_0x17fbc7){_0x1d968c=_0x17fbc7;_0x8812ab[_0xd770('0x3f')]=_[_0xd770('0x41')](db['Team'][_0xd770('0x3c')]);_0x8812ab[_0xd770('0x40')]=_[_0xd770('0x41')](_0x5ed53e[_0xd770('0x40')]);_0x8812ab[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x8812ab['model'],_0x8812ab['query']);_0x1aea6e[_0xd770('0x43')]=_[_0xd770('0x42')](_0x8812ab[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x5ed53e['query'][_0xd770('0x44')]));_0x1aea6e[_0xd770('0x43')]=_0x1aea6e[_0xd770('0x43')][_0xd770('0x45')]?_0x1aea6e[_0xd770('0x43')]:_0x8812ab[_0xd770('0x3f')];_0x1aea6e[_0xd770('0x67')]=qs[_0xd770('0x48')](_0x5ed53e[_0xd770('0x40')][_0xd770('0x48')]);_0x1aea6e[_0xd770('0x49')]=qs[_0xd770('0x4a')](_['pick'](_0x5ed53e[_0xd770('0x40')],_0x8812ab[_0xd770('0x4a')]));if(_0x5ed53e[_0xd770('0x40')][_0xd770('0x4c')]){_0x1aea6e[_0xd770('0x49')]=_[_0xd770('0x54')](_0x1aea6e[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x1aea6e[_0xd770('0x43')],function(_0x42cf03){var _0x102bbf={};_0x102bbf[_0x42cf03]={'$like':'%'+_0x5ed53e[_0xd770('0x40')][_0xd770('0x4c')]+'%'};return _0x102bbf;})});}_0x1aea6e=_[_0xd770('0x54')]({},_0x1aea6e,_0x5ed53e[_0xd770('0x5f')]);return _0x1d968c['getTeams'](_0x1aea6e);}})['then'](function(_0x87c5b4){if(_0x87c5b4){_0x5b31d0=_0x87c5b4['length'];if(!_0x5ed53e[_0xd770('0x40')][_0xd770('0x46')]('nolimit')){_0x1aea6e[_0xd770('0x25')]=qs[_0xd770('0x25')](_0x5ed53e['query'][_0xd770('0x25')]);_0x1aea6e[_0xd770('0x23')]=qs[_0xd770('0x23')](_0x5ed53e[_0xd770('0x40')][_0xd770('0x23')]);}return _0x1d968c[_0xd770('0x70')](_0x1aea6e);}})[_0xd770('0x2b')](function(_0x318cce){if(_0x318cce){return _0x318cce?{'count':_0x5b31d0,'rows':_0x318cce}:null;}})[_0xd770('0x2b')](respondWithResult(_0x42f492,null))['catch'](handleError(_0x42f492,null));};exports['addTeams']=function(_0x305bf0,_0x179c69,_0x3efb01){var _0x120e8c=_0x305bf0[_0xd770('0x57')][_0xd770('0x71')];var _0x15f45b=_[_0xd770('0x32')](_0x120e8c,'id');return db[_0xd770('0x72')][_0xd770('0x4f')]({'where':{'id':_0x15f45b},'attributes':['id'],'include':[{'model':db[_0xd770('0x73')],'as':'Agents','attributes':['id',_0xd770('0x38'),_0xd770('0x74'),_0xd770('0x75'),_0xd770('0x76')],'raw':!![]}]})[_0xd770('0x2b')](function(_0xa614c5){if(_0xa614c5){var _0x8b7b40=_[_0xd770('0x77')](_0xa614c5,function(_0x1dc52b){var _0x1ddf24=_0x1dc52b[_0xd770('0x2d')]({'plain':!![]});_0x1ddf24['Agents'][_0xd770('0x78')](function(_0x3f0cd3){_0x3f0cd3['penalty']=_[_0xd770('0x55')](_0x120e8c,{'id':_0x1ddf24['id']})[_0xd770('0x79')];});return _0x1ddf24[_0xd770('0x7a')];});return db['VoiceQueue'][_0xd770('0x55')]({'where':{'id':_0x305bf0[_0xd770('0x53')]['id']}})['then'](function(_0x2a700e){return db['sequelize'][_0xd770('0x7b')](function(_0x260e98){return _0x2a700e[_0xd770('0x7c')](_0x15f45b,{'transaction':_0x260e98})[_0xd770('0x2b')](function(){return BPromise['each'](_0x120e8c,function(_0x3bb3f8){return db[_0xd770('0x7d')][_0xd770('0x7e')]({'TeamId':_0x3bb3f8['id'],'VoiceQueueId':_0x305bf0[_0xd770('0x53')]['id'],'penalty':_0x3bb3f8[_0xd770('0x79')]},{'transaction':_0x260e98});});})[_0xd770('0x2b')](function(){return BPromise[_0xd770('0x7f')](_0x8b7b40,function(_0x759097){return db[_0xd770('0x80')][_0xd770('0x81')]({'where':{'UserId':_0x759097['id'],'VoiceQueueId':_0x305bf0[_0xd770('0x53')]['id']},'defaults':{'penalty':_0x759097[_0xd770('0x79')]},'transaction':_0x260e98});});})[_0xd770('0x2b')](function(){return BPromise[_0xd770('0x7f')](_['filter'](_0x8b7b40,{'online':!![]}),function(_0xcab3fc){return db['UserVoiceQueueRt'][_0xd770('0x7e')]({'membername':_0xcab3fc['name'],'UserId':_0xcab3fc['id'],'queue_name':_0x2a700e[_0xd770('0x38')],'VoiceQueueId':_0x2a700e['id'],'interface':_[_0xd770('0x82')](_0xcab3fc['interface'])?util[_0xd770('0x83')](_0xd770('0x84'),_0xcab3fc[_0xd770('0x38')]):_0xcab3fc[_0xd770('0x76')],'paused':_0xcab3fc['voicePause']||![],'penalty':_0xcab3fc[_0xd770('0x79')]},{'transaction':_0x260e98});});})[_0xd770('0x2b')](function(){_0x8b7b40[_0xd770('0x78')](function(_0x2be4a8){socket[_0xd770('0x85')](_0xd770('0x86'),{'UserId':_0x2be4a8['id'],'VoiceQueueId':_0x2a700e['id']});});});});});}})[_0xd770('0x2b')](respondWithStatusCode(_0x179c69,null))[_0xd770('0x51')](handleError(_0x179c69,null));};exports[_0xd770('0x87')]=function(_0x113011,_0x97c2c3,_0xa04a15){return db['Team'][_0xd770('0x4f')]({'where':{'id':_0x113011[_0xd770('0x40')][_0xd770('0x88')]},'attributes':['id'],'include':[{'model':db[_0xd770('0x73')],'as':_0xd770('0x7a'),'attributes':['id'],'raw':!![]}]})[_0xd770('0x2b')](handleEntityNotFound(_0x97c2c3,null))['then'](function(_0x447f71){var _0x443fd0=_['map'](_0x447f71,'id');var _0x16670c=[];var _0x131f2a=[];var _0x760704=squel[_0xd770('0x89')]();_0x760704[_0xd770('0x8a')]('tq.TeamId')[_0xd770('0x8b')](_0xd770('0x8c'),'tq')['join'](_0xd770('0x8d'),'ut',_0xd770('0x8e'))[_0xd770('0x49')](_0xd770('0x8f'),_0x113011[_0xd770('0x53')]['id']);for(var _0x3fcbb5=0x0;_0x3fcbb5<_0x447f71['length'];_0x3fcbb5+=0x1){let _0x2a2b83=_0x447f71[_0x3fcbb5];for(var _0x3fec90=0x0;_0x3fec90<_0x2a2b83['Agents'][_0xd770('0x45')];_0x3fec90+=0x1){let _0x36ed5c=_0x2a2b83['Agents'][_0x3fec90];var _0x2464b0=_0x760704[_0xd770('0x90')]();_0x2464b0[_0xd770('0x49')](_0xd770('0x91'),_0x36ed5c['id']);_0x131f2a['push'](db[_0xd770('0x92')][_0xd770('0x40')](_0x2464b0[_0xd770('0x93')](),{'type':db[_0xd770('0x92')][_0xd770('0x94')][_0xd770('0x95')]})[_0xd770('0x2b')](function(_0x295b3f){if(_0x295b3f['length']===0x1){return _0x36ed5c['id'];}else{var _0x47b004=_['every'](_['map'](_0x295b3f,_0xd770('0x96')),function(_0x16419a){return _[_0xd770('0x34')](_0x443fd0,_0x16419a);});if(_0x47b004){return _0x36ed5c['id'];}}}));}}return BPromise[_0xd770('0x97')](_0x131f2a)[_0xd770('0x2b')](function(_0x1f45a1){_0x16670c=_(_0x16670c)[_0xd770('0x98')](_0x1f45a1)[_0xd770('0x99')]()[_0xd770('0x33')]();return db[_0xd770('0x3b')]['find']({'where':{'id':_0x113011['params']['id']}})[_0xd770('0x2b')](function(_0x59f748){return db[_0xd770('0x92')][_0xd770('0x7b')](function(_0x3f49b3){return _0x59f748['removeTeams'](_0x113011[_0xd770('0x40')]['ids'],{'transaction':_0x3f49b3})[_0xd770('0x2b')](function(){if(!_[_0xd770('0x9a')](_0x16670c)){return _0x59f748[_0xd770('0x9b')](_0x16670c,{'transaction':_0x3f49b3})[_0xd770('0x2b')](function(){return db['UserVoiceQueueRt'][_0xd770('0x2c')]({'where':{'VoiceQueueId':_0x113011[_0xd770('0x53')]['id'],'UserId':_0x16670c},'transaction':_0x3f49b3});});}})['then'](function(){_0x16670c[_0xd770('0x78')](function(_0x5d219a){socket[_0xd770('0x85')](_0xd770('0x9c'),{'UserId':_0x5d219a,'VoiceQueueId':_0x59f748['id']});});});});});});})['then'](respondWithStatusCode(_0x97c2c3,null))['catch'](handleError(_0x97c2c3,null));};exports[_0xd770('0x9d')]=function(_0x33ff20,_0x4c499e,_0x3c7371){var _0x4dc239,_0x97db37;return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x33ff20[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x4c499e,null))[_0xd770('0x2b')](function(_0x322bce){if(_0x322bce){_0x97db37=_0x322bce;return _0x322bce[_0xd770('0x9d')](_0x33ff20[_0xd770('0x57')]['ids'],_[_0xd770('0x60')](_0x33ff20['body'],[_0xd770('0x88'),'id'])||{})[_0xd770('0x9e')](function(_0x324339){for(var _0xe677d2=0x0;_0xe677d2<_0x33ff20[_0xd770('0x57')][_0xd770('0x88')]['length'];_0xe677d2+=0x1){socket[_0xd770('0x85')](_0xd770('0x86'),{'UserId':Number(_0x33ff20['body'][_0xd770('0x88')][_0xe677d2]),'VoiceQueueId':Number(_0x33ff20[_0xd770('0x53')]['id'])});}return _0x324339;});}})[_0xd770('0x2b')](function(_0x286a3a){_0x4dc239=_0x286a3a||[];if(_0x97db37){return db[_0xd770('0x73')][_0xd770('0x4f')]({'where':{'id':_0x33ff20[_0xd770('0x57')][_0xd770('0x88')]},'attributes':['id','name',_0xd770('0x74'),'voicePause',_0xd770('0x76')],'raw':!![]});}})[_0xd770('0x2b')](function(_0x17e9f6){if(!_[_0xd770('0x9a')](_0x17e9f6)){var _0x351c9d=[];for(var _0x15c9a4=0x0;_0x15c9a4<_0x17e9f6['length'];_0x15c9a4++){if(_0x17e9f6[_0x15c9a4]['online']){_0x351c9d['push'](db[_0xd770('0x9f')][_0xd770('0x7e')]({'membername':_0x17e9f6[_0x15c9a4]['name'],'UserId':_0x17e9f6[_0x15c9a4]['id'],'queue_name':_0x97db37[_0xd770('0x38')],'VoiceQueueId':_0x97db37['id'],'interface':_['isNil'](_0x17e9f6[_0x15c9a4]['interface'])?util['format']('SIP/%s',_0x17e9f6[_0x15c9a4]['name']):_0x17e9f6[_0x15c9a4][_0xd770('0x76')],'paused':_0x17e9f6[_0x15c9a4]['voicePause']||![],'penalty':_0x33ff20[_0xd770('0x57')][_0xd770('0x79')]||0x0}));}}return BPromise[_0xd770('0x97')](_0x351c9d);}})[_0xd770('0x2b')](function(){return _0x4dc239;})[_0xd770('0x2b')](respondWithResult(_0x4c499e,null))[_0xd770('0x51')](handleError(_0x4c499e,null));};exports[_0xd770('0x9b')]=function(_0x4f7a5b,_0x15f3d7,_0x42504b){return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x4f7a5b[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x15f3d7,null))[_0xd770('0x2b')](function(_0x46bc57){if(_0x46bc57){return _0x46bc57[_0xd770('0x9b')](_0x4f7a5b['query']['ids'])[_0xd770('0x2b')](function(){if(_[_0xd770('0xa0')](_0x4f7a5b[_0xd770('0x40')][_0xd770('0x88')])){for(var _0x308491=0x0;_0x308491<_0x4f7a5b['query'][_0xd770('0x88')]['length'];_0x308491+=0x1){socket[_0xd770('0x85')]('userVoiceQueue:remove',{'UserId':Number(_0x4f7a5b[_0xd770('0x40')][_0xd770('0x88')][_0x308491]),'VoiceQueueId':Number(_0x4f7a5b[_0xd770('0x53')]['id'])});}}else{socket[_0xd770('0x85')]('userVoiceQueue:remove',{'UserId':Number(_0x4f7a5b[_0xd770('0x40')][_0xd770('0x88')]),'VoiceQueueId':Number(_0x4f7a5b['params']['id'])});}});}})['then'](function(_0x1802e9){return db[_0xd770('0x9f')]['destroy']({'where':{'VoiceQueueId':_0x4f7a5b[_0xd770('0x53')]['id'],'UserId':_0x4f7a5b[_0xd770('0x40')]['ids']}})[_0xd770('0x2b')](function(){return _0x1802e9;});})[_0xd770('0x2b')](respondWithStatusCode(_0x15f3d7,null))[_0xd770('0x51')](handleError(_0x15f3d7,null));};exports[_0xd770('0xa1')]=function(_0x18698d,_0x1e0712,_0x5abca8){var _0x51f925={};var _0x2a2aae={};var _0xbbd1a5;var _0x152f2a;return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0x18698d[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x1e0712,null))[_0xd770('0x2b')](function(_0x181499){if(_0x181499){_0xbbd1a5=_0x181499;_0x2a2aae['model']=_[_0xd770('0x41')](db[_0xd770('0x73')][_0xd770('0x3c')]);_0x2a2aae[_0xd770('0x40')]=_[_0xd770('0x41')](_0x18698d['query']);_0x2a2aae[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x2a2aae[_0xd770('0x3f')],_0x2a2aae[_0xd770('0x40')]);_0x51f925[_0xd770('0x43')]=_['intersection'](_0x2a2aae[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x18698d[_0xd770('0x40')]['fields']));_0x51f925[_0xd770('0x43')]=_0x51f925[_0xd770('0x43')]['length']?_0x51f925[_0xd770('0x43')]:_0x2a2aae[_0xd770('0x3f')];_0x51f925[_0xd770('0x67')]=qs[_0xd770('0x48')](_0x18698d[_0xd770('0x40')][_0xd770('0x48')]);_0x51f925[_0xd770('0x49')]=qs[_0xd770('0x4a')](_[_0xd770('0x68')](_0x18698d[_0xd770('0x40')],_0x2a2aae[_0xd770('0x4a')]));if(_0x18698d[_0xd770('0x40')][_0xd770('0x4c')]){_0x51f925[_0xd770('0x49')]=_[_0xd770('0x54')](_0x51f925['where'],{'$or':_[_0xd770('0x32')](_0x51f925[_0xd770('0x43')],function(_0xc5255d){var _0x71229={};_0x71229[_0xc5255d]={'$like':'%'+_0x18698d['query'][_0xd770('0x4c')]+'%'};return _0x71229;})});}_0x51f925=_[_0xd770('0x54')]({},_0x51f925,_0x18698d['options']);return _0xbbd1a5[_0xd770('0xa1')](_0x51f925);}})[_0xd770('0x2b')](function(_0x1a7ff1){if(_0x1a7ff1){_0x152f2a=_0x1a7ff1[_0xd770('0x45')];if(!_0x18698d[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0x51f925['limit']=qs[_0xd770('0x25')](_0x18698d[_0xd770('0x40')]['limit']);_0x51f925['offset']=qs[_0xd770('0x23')](_0x18698d['query'][_0xd770('0x23')]);}return _0xbbd1a5[_0xd770('0xa1')](_0x51f925);}})['then'](function(_0x7dd300){if(_0x7dd300){return _0x7dd300?{'count':_0x152f2a,'rows':_0x7dd300}:null;}})[_0xd770('0x2b')](respondWithResult(_0x1e0712,null))['catch'](handleError(_0x1e0712,null));};exports[_0xd770('0xa2')]=function(_0xc49ecb,_0x110375,_0x1b16c4){var _0x505b44={};var _0x1afc38={};var _0x14617e;var _0x1f7a9c;return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0xc49ecb[_0xd770('0x53')]['id']}})['then'](handleEntityNotFound(_0x110375,null))[_0xd770('0x2b')](function(_0x168464){if(_0x168464){_0x14617e=_0x168464;_0x1afc38[_0xd770('0x3f')]=_[_0xd770('0x41')](db[_0xd770('0x9f')][_0xd770('0x3c')]);_0x1afc38['query']=_['keys'](_0xc49ecb['query']);_0x1afc38[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x1afc38['model'],_0x1afc38[_0xd770('0x40')]);_0x505b44[_0xd770('0x43')]=_[_0xd770('0x42')](_0x1afc38[_0xd770('0x3f')],qs['fields'](_0xc49ecb[_0xd770('0x40')][_0xd770('0x44')]));_0x505b44[_0xd770('0x43')]=_0x505b44[_0xd770('0x43')][_0xd770('0x45')]?_0x505b44[_0xd770('0x43')]:_0x1afc38[_0xd770('0x3f')];_0x505b44[_0xd770('0x67')]=qs['sort'](_0xc49ecb[_0xd770('0x40')][_0xd770('0x48')]);_0x505b44[_0xd770('0x49')]=qs[_0xd770('0x4a')](_['pick'](_0xc49ecb[_0xd770('0x40')],_0x1afc38[_0xd770('0x4a')]));if(_0xc49ecb[_0xd770('0x40')][_0xd770('0x4c')]){_0x505b44[_0xd770('0x49')]=_[_0xd770('0x54')](_0x505b44['where'],{'$or':_[_0xd770('0x32')](_0x505b44[_0xd770('0x43')],function(_0x4426c7){var _0x3cf733={};_0x3cf733[_0x4426c7]={'$like':'%'+_0xc49ecb[_0xd770('0x40')][_0xd770('0x4c')]+'%'};return _0x3cf733;})});}_0x505b44=_['merge']({},_0x505b44,_0xc49ecb[_0xd770('0x5f')]);return _0x14617e[_0xd770('0xa2')](_0x505b44);}})['then'](function(_0x27652f){if(_0x27652f){_0x1f7a9c=_0x27652f[_0xd770('0x45')];if(!_0xc49ecb[_0xd770('0x40')][_0xd770('0x46')](_0xd770('0x47'))){_0x505b44[_0xd770('0x25')]=qs['limit'](_0xc49ecb['query'][_0xd770('0x25')]);_0x505b44[_0xd770('0x23')]=qs['offset'](_0xc49ecb[_0xd770('0x40')][_0xd770('0x23')]);}return _0x14617e[_0xd770('0xa2')](_0x505b44);}})[_0xd770('0x2b')](function(_0x2afd36){return _0x2afd36?{'count':_0x1f7a9c,'rows':_0x2afd36}:null;})[_0xd770('0x2b')](respondWithResult(_0x110375,null))[_0xd770('0x51')](handleError(_0x110375,null));};exports[_0xd770('0xa3')]=function(_0x4c3926,_0x22077c,_0x671f6c){var _0x38cdd4={};var _0x40b251={};var _0x26f1d1;var _0x27eaee;return db[_0xd770('0x3b')][_0xd770('0x66')]({'where':{'id':_0x4c3926['params']['id']}})['then'](handleEntityNotFound(_0x22077c,null))['then'](function(_0x31ba30){if(_0x31ba30){_0x26f1d1=_0x31ba30;_0x40b251[_0xd770('0x3f')]=_['keys'](db[_0xd770('0xa4')]['rawAttributes']);_0x40b251[_0xd770('0x40')]=_[_0xd770('0x41')](_0x4c3926['query']);_0x40b251[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x40b251[_0xd770('0x3f')],_0x40b251[_0xd770('0x40')]);_0x38cdd4[_0xd770('0x43')]=_[_0xd770('0x42')](_0x40b251['model'],qs[_0xd770('0x44')](_0x4c3926[_0xd770('0x40')][_0xd770('0x44')]));_0x38cdd4[_0xd770('0x43')]=_0x38cdd4[_0xd770('0x43')]['length']?_0x38cdd4['attributes']:_0x40b251[_0xd770('0x3f')];_0x38cdd4[_0xd770('0x67')]=qs[_0xd770('0x48')](_0x4c3926[_0xd770('0x40')][_0xd770('0x48')]);_0x38cdd4[_0xd770('0x49')]=qs['filters'](_['pick'](_0x4c3926[_0xd770('0x40')],_0x40b251[_0xd770('0x4a')]));if(_0x4c3926['query'][_0xd770('0x4c')]){_0x38cdd4[_0xd770('0x49')]=_['merge'](_0x38cdd4[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x38cdd4[_0xd770('0x43')],function(_0x110ef6){var _0x4d4159={};_0x4d4159[_0x110ef6]={'$like':'%'+_0x4c3926[_0xd770('0x40')]['filter']+'%'};return _0x4d4159;})});}_0x38cdd4=_['merge']({},_0x38cdd4,_0x4c3926[_0xd770('0x5f')]);return _0x26f1d1[_0xd770('0xa3')](_0x38cdd4);}})[_0xd770('0x2b')](function(_0x4adb02){if(_0x4adb02){_0x27eaee=_0x4adb02[_0xd770('0x45')];if(!_0x4c3926['query'][_0xd770('0x46')](_0xd770('0x47'))){_0x38cdd4[_0xd770('0x25')]=qs[_0xd770('0x25')](_0x4c3926[_0xd770('0x40')][_0xd770('0x25')]);_0x38cdd4[_0xd770('0x23')]=qs['offset'](_0x4c3926[_0xd770('0x40')][_0xd770('0x23')]);}return _0x26f1d1[_0xd770('0xa3')](_0x38cdd4);}})['then'](function(_0x591454){if(_0x591454){return _0x591454?{'count':_0x27eaee,'rows':_0x591454}:null;}})[_0xd770('0x2b')](respondWithResult(_0x22077c,null))[_0xd770('0x51')](handleError(_0x22077c,null));};exports[_0xd770('0xa5')]=function(_0x2e2b3e,_0x82a026,_0x454f1f){var _0x2e7a38=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x5728b8,_0x2fe6c5;return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x2e2b3e[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x82a026,null))[_0xd770('0x2b')](function(_0x28fd6a){if(_0x28fd6a){_0x2fe6c5=_0x28fd6a;return _0x28fd6a[_0xd770('0xa5')](_0x2e2b3e['body']['ids'],_[_0xd770('0x60')](_0x2e2b3e[_0xd770('0x57')],[_0xd770('0x88'),'id'])||{});}return null;})['spread'](function(_0x6f34e){var _0xad9f4c;_0x5728b8=_0x6f34e||[];var _0xb2c842=[];if(_0x6f34e){for(var _0x2eda42=0x0;_0x2eda42<_0x6f34e[_0xd770('0x45')];_0x2eda42+=0x1){var _0x28a639=_0x6f34e[_0x2eda42][_0xd770('0x2d')]({'plain':!![]});_0x2fe6c5[_0xd770('0xa6')]=_0x2e2b3e['body'][_0xd770('0xa6')]?_0x2e2b3e[_0xd770('0x57')][_0xd770('0xa6')]:_0x2fe6c5[_0xd770('0xa6')];switch(_0x2fe6c5['dialCheckDuplicateType']){case _0xd770('0xa7'):_0xad9f4c=squel[_0xd770('0xa8')]()['into'](_0xd770('0xa9'))[_0xd770('0xaa')]([_0xd770('0xab'),_0xd770('0xac'),_0xd770('0xad'),_0xd770('0xae'),_0xd770('0x6c'),_0xd770('0x61'),_0xd770('0x62')],squel[_0xd770('0x89')]()[_0xd770('0x8a')](_0xd770('0xab'),_0xd770('0xab'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0xac'))['field']('id','ContactId')[_0xd770('0x8a')](_0x28a639[_0xd770('0xaf')][_0xd770('0x93')](),_0xd770('0xae'))[_0xd770('0x8a')](_0x2e2b3e[_0xd770('0x53')]['id'][_0xd770('0x93')](),_0xd770('0x6c'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0x61'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27','updatedAt')[_0xd770('0x8b')](_0xd770('0xb0'))[_0xd770('0x49')](_0xd770('0xb1'))['where'](_0xd770('0xb2'),_0x28a639[_0xd770('0xaf')][_0xd770('0x93')]())[_0xd770('0x49')](_0xd770('0xb3'))[_0xd770('0x49')](_0xd770('0xb4'),squel[_0xd770('0x89')]()[_0xd770('0x8a')](_0xd770('0xb5'))[_0xd770('0x8b')](_0xd770('0xb6'))[_0xd770('0x49')](_0xd770('0x8f'),_0x2e2b3e['params']['id']['toString']()))[_0xd770('0x49')](_0xd770('0xb4'),squel['select']()[_0xd770('0x8a')](_0xd770('0xb7'))[_0xd770('0x8b')](_0xd770('0xa9'))[_0xd770('0x49')](_0xd770('0x8f'),_0x2e2b3e['params']['id'][_0xd770('0x93')]())))[_0xd770('0x93')]();break;case _0xd770('0xb8'):_0xad9f4c=squel[_0xd770('0xa8')]()[_0xd770('0xb9')]('cm_hopper')[_0xd770('0xaa')]([_0xd770('0xab'),_0xd770('0xac'),_0xd770('0xad'),_0xd770('0xae'),_0xd770('0x6c'),_0xd770('0x61'),_0xd770('0x62')],squel[_0xd770('0x89')]()['field'](_0xd770('0xab'),'phone')[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0xac'))[_0xd770('0x8a')]('id',_0xd770('0xad'))[_0xd770('0x8a')](_0x28a639[_0xd770('0xaf')]['toString'](),'ListId')[_0xd770('0x8a')](_0x2e2b3e[_0xd770('0x53')]['id']['toString'](),_0xd770('0x6c'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0x61'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0x62'))[_0xd770('0x8b')](_0xd770('0xb0'))['where']('deletedAt\x20IS\x20NULL')['where'](_0xd770('0xb2'),_0x28a639[_0xd770('0xaf')][_0xd770('0x93')]())[_0xd770('0x49')]('phone\x20IS\x20NOT\x20NULL')[_0xd770('0x49')](_0xd770('0xb4'),squel['select']()[_0xd770('0x8a')]('COALESCE(phone,\x27\x27)')[_0xd770('0x8b')]('cm_hopper')[_0xd770('0x49')](_0xd770('0x8f'),_0x2e2b3e['params']['id'][_0xd770('0x93')]())))[_0xd770('0x93')]();break;default:_0xad9f4c=squel[_0xd770('0xa8')]()['into'](_0xd770('0xa9'))[_0xd770('0xaa')]([_0xd770('0xab'),_0xd770('0xac'),_0xd770('0xad'),_0xd770('0xae'),_0xd770('0x6c'),'createdAt','updatedAt'],squel['select']()[_0xd770('0x8a')](_0xd770('0xab'),_0xd770('0xab'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0xac'))[_0xd770('0x8a')]('id',_0xd770('0xad'))[_0xd770('0x8a')](_0x28a639[_0xd770('0xaf')][_0xd770('0x93')](),_0xd770('0xae'))[_0xd770('0x8a')](_0x2e2b3e[_0xd770('0x53')]['id'][_0xd770('0x93')](),_0xd770('0x6c'))[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27','createdAt')[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0x62'))[_0xd770('0x8b')](_0xd770('0xb0'))[_0xd770('0x49')](_0xd770('0xb1'))['where']('ListId\x20=\x20?',_0x28a639[_0xd770('0xaf')]['toString']())[_0xd770('0x49')](_0xd770('0xb3')))['toString']();}_0xb2c842[_0xd770('0xba')](db[_0xd770('0x92')][_0xd770('0x40')](_0xad9f4c));}return BPromise[_0xd770('0x97')](_0xb2c842);}})['then'](function(){var _0x16e94c=[];var _0x455208=squel[_0xd770('0xa8')]()[_0xd770('0xb9')](_0xd770('0xbb'))[_0xd770('0xaa')]([_0xd770('0xbc'),_0xd770('0xab'),_0xd770('0xbd'),_0xd770('0x61'),_0xd770('0x62')],squel[_0xd770('0x89')]()[_0xd770('0x8a')]('h.id')[_0xd770('0x8a')](_0xd770('0xbe'))[_0xd770('0x8a')]('ci.OrderBy+1')[_0xd770('0x8a')]('\x27'+_0x2e7a38+'\x27',_0xd770('0x61'))['field']('\x27'+_0x2e7a38+'\x27',_0xd770('0x62'))[_0xd770('0x8b')](_0xd770('0xbf'),'ci')[_0xd770('0xc0')]('cm_hopper','h',_0xd770('0xc1'))[_0xd770('0x49')]('h.scheduledat=?',_0x2e7a38)[_0xd770('0x49')](_0xd770('0xc2'),_0xd770('0xc3')))[_0xd770('0x93')]();_0x16e94c[_0xd770('0xba')](db['sequelize'][_0xd770('0x40')](_0x455208));return BPromise[_0xd770('0x97')](_0x16e94c);})[_0xd770('0x2b')](function(){return _0x5728b8;})[_0xd770('0x2b')](respondWithResult(_0x82a026,null))['catch'](handleError(_0x82a026,null));};exports[_0xd770('0xc4')]=function(_0x1d2eb7,_0x177905,_0x25c283){return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x1d2eb7[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x177905,null))[_0xd770('0x2b')](function(_0x438081){if(_0x438081){return _0x438081[_0xd770('0xc4')](_0x1d2eb7[_0xd770('0x40')][_0xd770('0x88')]);}})[_0xd770('0x2b')](function(_0x5a7c2a){if(_0x5a7c2a){return db[_0xd770('0x69')][_0xd770('0x2c')]({'where':{'ListId':_0x1d2eb7[_0xd770('0x40')][_0xd770('0x88')],'VoiceQueueId':_0x1d2eb7[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](function(){return _0x5a7c2a;});}})['then'](respondWithStatusCode(_0x177905,null))[_0xd770('0x51')](handleError(_0x177905,null));};exports[_0xd770('0xc5')]=function(_0x16de58,_0x5c3701,_0x363e85){var _0x2e5a52={};var _0x2c8ea1={};var _0xd74f18;var _0x37ad21;return db[_0xd770('0x3b')]['findOne']({'where':{'id':_0x16de58[_0xd770('0x53')]['id']}})['then'](handleEntityNotFound(_0x5c3701,null))[_0xd770('0x2b')](function(_0x132f3e){if(_0x132f3e){_0xd74f18=_0x132f3e;_0x2c8ea1['model']=_[_0xd770('0x41')](db[_0xd770('0xa4')][_0xd770('0x3c')]);_0x2c8ea1[_0xd770('0x40')]=_[_0xd770('0x41')](_0x16de58['query']);_0x2c8ea1[_0xd770('0x4a')]=_[_0xd770('0x42')](_0x2c8ea1[_0xd770('0x3f')],_0x2c8ea1[_0xd770('0x40')]);_0x2e5a52[_0xd770('0x43')]=_[_0xd770('0x42')](_0x2c8ea1[_0xd770('0x3f')],qs[_0xd770('0x44')](_0x16de58['query'][_0xd770('0x44')]));_0x2e5a52[_0xd770('0x43')]=_0x2e5a52[_0xd770('0x43')][_0xd770('0x45')]?_0x2e5a52['attributes']:_0x2c8ea1[_0xd770('0x3f')];_0x2e5a52[_0xd770('0x67')]=qs[_0xd770('0x48')](_0x16de58['query'][_0xd770('0x48')]);_0x2e5a52['where']=qs[_0xd770('0x4a')](_[_0xd770('0x68')](_0x16de58[_0xd770('0x40')],_0x2c8ea1[_0xd770('0x4a')]));if(_0x16de58[_0xd770('0x40')][_0xd770('0x4c')]){_0x2e5a52[_0xd770('0x49')]=_[_0xd770('0x54')](_0x2e5a52[_0xd770('0x49')],{'$or':_[_0xd770('0x32')](_0x2e5a52[_0xd770('0x43')],function(_0x5dc327){var _0x430ecc={};_0x430ecc[_0x5dc327]={'$like':'%'+_0x16de58['query'][_0xd770('0x4c')]+'%'};return _0x430ecc;})});}_0x2e5a52=_[_0xd770('0x54')]({},_0x2e5a52,_0x16de58['options']);return _0xd74f18[_0xd770('0xc5')](_0x2e5a52);}})[_0xd770('0x2b')](function(_0x280bf1){if(_0x280bf1){_0x37ad21=_0x280bf1[_0xd770('0x45')];if(!_0x16de58['query']['hasOwnProperty'](_0xd770('0x47'))){_0x2e5a52[_0xd770('0x25')]=qs[_0xd770('0x25')](_0x16de58[_0xd770('0x40')][_0xd770('0x25')]);_0x2e5a52[_0xd770('0x23')]=qs[_0xd770('0x23')](_0x16de58[_0xd770('0x40')][_0xd770('0x23')]);}return _0xd74f18[_0xd770('0xc5')](_0x2e5a52);}})['then'](function(_0x4a73dd){if(_0x4a73dd){return _0x4a73dd?{'count':_0x37ad21,'rows':_0x4a73dd}:null;}})['then'](respondWithResult(_0x5c3701,null))[_0xd770('0x51')](handleError(_0x5c3701,null));};exports[_0xd770('0xc6')]=function(_0x54f751,_0x1f2033,_0x8236bd){var _0x1856fb,_0x4c7b28;return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x54f751[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x1f2033,null))['then'](function(_0x1a0d6b){if(_0x1a0d6b){_0x4c7b28=_0x1a0d6b;return _0x1a0d6b[_0xd770('0xc6')](_0x54f751[_0xd770('0x57')][_0xd770('0x88')],_[_0xd770('0x60')](_0x54f751[_0xd770('0x57')],[_0xd770('0x88'),'id'])||{});}return null;})[_0xd770('0x9e')](function(_0x1f9968){var _0x447091;_0x1856fb=_0x1f9968||[];var _0x24745c=[];if(_0x1f9968){for(var _0x5645d0=0x0;_0x5645d0<_0x1f9968['length'];_0x5645d0+=0x1){var _0x101ad1=_0x1f9968[_0x5645d0][_0xd770('0x2d')]({'plain':!![]});_0x447091=squel[_0xd770('0xa8')]()[_0xd770('0xb9')](_0xd770('0xc7'))[_0xd770('0xaa')]([_0xd770('0xab'),_0xd770('0xad'),_0xd770('0xae'),_0xd770('0x6c'),_0xd770('0x61'),_0xd770('0x62')],squel[_0xd770('0x89')]()[_0xd770('0x8a')](_0xd770('0xab'),_0xd770('0xab'))[_0xd770('0x8a')]('id',_0xd770('0xad'))[_0xd770('0x8a')](_0x101ad1[_0xd770('0xaf')]['toString'](),_0xd770('0xae'))['field'](_0x54f751[_0xd770('0x53')]['id'][_0xd770('0x93')](),_0xd770('0x6c'))[_0xd770('0x8a')](_0xd770('0xc8'),_0xd770('0x61'))[_0xd770('0x8a')]('NOW()',_0xd770('0x62'))['from'](_0xd770('0xb0'))[_0xd770('0x49')](_0xd770('0xb1'))[_0xd770('0x49')]('ListId\x20=\x20?',_0x101ad1[_0xd770('0xaf')][_0xd770('0x93')]())[_0xd770('0x49')](_0xd770('0xb3')))['toString']();_0x24745c[_0xd770('0xba')](db[_0xd770('0x92')][_0xd770('0x40')](_0x447091));}return BPromise[_0xd770('0x97')](_0x24745c);}})['then'](function(){return _0x1856fb;})[_0xd770('0x2b')](respondWithResult(_0x1f2033,null))[_0xd770('0x51')](handleError(_0x1f2033,null));};exports[_0xd770('0xc9')]=function(_0x1d82ec,_0x4efa7f,_0x34c993){return db[_0xd770('0x3b')][_0xd770('0x55')]({'where':{'id':_0x1d82ec[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](handleEntityNotFound(_0x4efa7f,null))[_0xd770('0x2b')](function(_0x4a88bb){if(_0x4a88bb){return _0x4a88bb[_0xd770('0xc9')](_0x1d82ec[_0xd770('0x40')][_0xd770('0x88')]);}})[_0xd770('0x2b')](function(_0x2cd609){if(_0x2cd609){return db[_0xd770('0x6f')][_0xd770('0x2c')]({'where':{'ListId':_0x1d82ec[_0xd770('0x40')][_0xd770('0x88')],'VoiceQueueId':_0x1d82ec[_0xd770('0x53')]['id']}})[_0xd770('0x2b')](function(){return _0x2cd609;});}})[_0xd770('0x2b')](respondWithStatusCode(_0x4efa7f,null))['catch'](handleError(_0x4efa7f,null));};
\ No newline at end of file
index a4f384b..fafefe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb3=['emit','hasOwnProperty','exports','../../mysqldb','setMaxListeners','save','remove'];(function(_0x35ddcd,_0xe1cf3d){var _0x443216=function(_0x267d02){while(--_0x267d02){_0x35ddcd['push'](_0x35ddcd['shift']());}};_0x443216(++_0xe1cf3d);}(_0xabb3,0xff));var _0x3abb=function(_0x19c0b4,_0x56944c){_0x19c0b4=_0x19c0b4-0x0;var _0x573aee=_0xabb3[_0x19c0b4];return _0x573aee;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x3abb('0x0'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x3abb('0x1')](0x0);var events={'afterCreate':_0x3abb('0x2'),'afterUpdate':'update','afterDestroy':_0x3abb('0x3')};function emitEvent(_0x5d2376){return function(_0x495955,_0x3a26cd,_0x27fba9){VoiceQueueEvents[_0x3abb('0x4')](_0x5d2376+':'+_0x495955['id'],_0x495955);VoiceQueueEvents[_0x3abb('0x4')](_0x5d2376,_0x495955);_0x27fba9(null);};}for(var e in events){if(events[_0x3abb('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x3abb('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x0369=['update','remove','emit','hasOwnProperty','hook','exports','setMaxListeners','save'];(function(_0x51f791,_0x2f1a8c){var _0x4b7ac7=function(_0xbb4a02){while(--_0xbb4a02){_0x51f791['push'](_0x51f791['shift']());}};_0x4b7ac7(++_0x2f1a8c);}(_0x0369,0x1e6));var _0x9036=function(_0x31acf2,_0xb41124){_0x31acf2=_0x31acf2-0x0;var _0xbbd421=_0x0369[_0x31acf2];return _0xbbd421;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x9036('0x0')](0x0);var events={'afterCreate':_0x9036('0x1'),'afterUpdate':_0x9036('0x2'),'afterDestroy':_0x9036('0x3')};function emitEvent(_0x4186c7){return function(_0x2b91e2,_0x1d71dd,_0xb6c7cd){VoiceQueueEvents['emit'](_0x4186c7+':'+_0x2b91e2['id'],_0x2b91e2);VoiceQueueEvents[_0x9036('0x4')](_0x4186c7,_0x2b91e2);_0xb6c7cd(null);};}for(var e in events){if(events[_0x9036('0x5')](e)){var event=events[e];VoiceQueue[_0x9036('0x6')](e,emitEvent(event));}}module[_0x9036('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 98f5fc5..74dfc34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x5e6a98,_0x5524bb){var _0xb8fe10=function(_0x479a47){while(--_0x479a47){_0x5e6a98['push'](_0x5e6a98['shift']());}};_0xb8fe10(++_0x5524bb);}(_0x34e8,0x12c));var _0x834e=function(_0x1fa77a,_0x3f84f6){_0x1fa77a=_0x1fa77a-0x0;var _0x49de11=_0x34e8[_0x1fa77a];return _0x49de11;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x328482,_0x18a091){var _0x15e6e7=function(_0x2a5659){while(--_0x2a5659){_0x328482['push'](_0x328482['shift']());}};_0x15e6e7(++_0x18a091);}(_0x34e8,0x12c));var _0x834e=function(_0x5b9c4f,_0x5c707f){_0x5b9c4f=_0x5b9c4f-0x0;var _0x4337a4=_0x34e8[_0x5b9c4f];return _0x4337a4;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 021b4a9..2a78d62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d52=['rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','register','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowVoiceQueue','find','util','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x48450b,_0x468c0e){var _0x29f063=function(_0x121509){while(--_0x121509){_0x48450b['push'](_0x48450b['shift']());}};_0x29f063(++_0x468c0e);}(_0x1d52,0x19d));var _0x21d5=function(_0x339a76,_0x3c390f){_0x339a76=_0x339a76-0x0;var _0x1c402c=_0x1d52[_0x339a76];return _0x1c402c;};'use strict';var _=require('lodash');var util=require(_0x21d5('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x21d5('0x1'));var fs=require('fs');var Redis=require(_0x21d5('0x2'));var db=require(_0x21d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x21d5('0x4'))(_0x21d5('0x5'));var config=require(_0x21d5('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x21d5('0x7')]({'port':0x232a});config['redis']=_[_0x21d5('0x8')](config[_0x21d5('0x9')],{'host':_0x21d5('0xa'),'port':0x18eb});var socket=require(_0x21d5('0xb'))(new Redis(config[_0x21d5('0x9')]));require('./voiceQueue.socket')[_0x21d5('0xc')](socket);function respondWithRpcPromise(_0x3a70b7,_0x142941,_0x53a2e0){return new BPromise(function(_0x349cca,_0x5293cd){return client[_0x21d5('0xd')](_0x3a70b7,_0x53a2e0)[_0x21d5('0xe')](function(_0x3993bd){logger['info'](_0x21d5('0xf'),_0x142941,_0x21d5('0x10'));logger[_0x21d5('0x11')](_0x21d5('0x12'),_0x142941,'request\x20sent',JSON[_0x21d5('0x13')](_0x3993bd));if(_0x3993bd[_0x21d5('0x14')]){if(_0x3993bd['error'][_0x21d5('0x15')]===0x1f4){logger[_0x21d5('0x14')](_0x21d5('0xf'),_0x142941,_0x3993bd[_0x21d5('0x14')]['message']);return _0x5293cd(_0x3993bd[_0x21d5('0x14')][_0x21d5('0x16')]);}logger[_0x21d5('0x14')](_0x21d5('0xf'),_0x142941,_0x3993bd[_0x21d5('0x14')]['message']);return _0x349cca(_0x3993bd[_0x21d5('0x14')][_0x21d5('0x16')]);}else{logger['info'](_0x21d5('0xf'),_0x142941,_0x21d5('0x10'));_0x349cca(_0x3993bd[_0x21d5('0x17')][_0x21d5('0x16')]);}})[_0x21d5('0x18')](function(_0x3af80a){logger['error'](_0x21d5('0xf'),_0x142941,_0x3af80a);_0x5293cd(_0x3af80a);});});}exports[_0x21d5('0x19')]=function(_0x47e7f0){var _0x4d0b64=this;return new Promise(function(_0x44e7b0,_0x132442){return db[_0x21d5('0x1a')][_0x21d5('0x1b')]({'raw':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1d')]===undefined?!![]:![]:!![],'where':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1e')]||null:null,'attributes':_0x47e7f0['options']?_0x47e7f0[_0x21d5('0x1c')][_0x21d5('0x1f')]||null:null,'limit':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0['options'][_0x21d5('0x20')]||null:null,'include':_0x47e7f0[_0x21d5('0x1c')]?_0x47e7f0[_0x21d5('0x1c')]['include']?_[_0x21d5('0x21')](_0x47e7f0['options'][_0x21d5('0x22')],function(_0x3e1aa5){return{'model':db[_0x3e1aa5[_0x21d5('0x23')]],'as':_0x3e1aa5['as'],'attributes':_0x3e1aa5[_0x21d5('0x1f')],'include':_0x3e1aa5['include']?_['map'](_0x3e1aa5[_0x21d5('0x22')],function(_0x478aee){return{'model':db[_0x478aee[_0x21d5('0x23')]],'as':_0x478aee['as'],'attributes':_0x478aee[_0x21d5('0x1f')],'include':_0x478aee[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x478aee[_0x21d5('0x22')],function(_0x211bbf){return{'model':db[_0x211bbf[_0x21d5('0x23')]],'as':_0x211bbf['as'],'attributes':_0x211bbf[_0x21d5('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x579eec){logger['info'](_0x21d5('0x19'),_0x47e7f0);logger[_0x21d5('0x11')](_0x21d5('0x19'),_0x47e7f0,JSON['stringify'](_0x579eec));_0x44e7b0(_0x579eec);})['catch'](function(_0x3ae8aa){logger[_0x21d5('0x14')]('GetVoiceQueue',_0x3ae8aa[_0x21d5('0x16')],_0x47e7f0);_0x132442(_0x4d0b64[_0x21d5('0x14')](0x1f4,_0x3ae8aa[_0x21d5('0x16')]));});});};exports[_0x21d5('0x24')]=function(_0x2064f6){var _0xc2d2b9=this;return new Promise(function(_0x4707ee,_0x44f8a9){return db[_0x21d5('0x1a')][_0x21d5('0x25')]({'raw':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1d')]===undefined?!![]:![]:!![],'where':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1e')]||null:null,'attributes':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x1f')]||null:null,'include':_0x2064f6[_0x21d5('0x1c')]?_0x2064f6[_0x21d5('0x1c')][_0x21d5('0x22')]?_['map'](_0x2064f6[_0x21d5('0x1c')]['include'],function(_0x292e47){return{'model':db[_0x292e47[_0x21d5('0x23')]],'as':_0x292e47['as'],'attributes':_0x292e47[_0x21d5('0x1f')],'include':_0x292e47[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x292e47[_0x21d5('0x22')],function(_0x3639cb){return{'model':db[_0x3639cb[_0x21d5('0x23')]],'as':_0x3639cb['as'],'attributes':_0x3639cb[_0x21d5('0x1f')],'include':_0x3639cb[_0x21d5('0x22')]?_[_0x21d5('0x21')](_0x3639cb[_0x21d5('0x22')],function(_0x2b22d8){return{'model':db[_0x2b22d8[_0x21d5('0x23')]],'as':_0x2b22d8['as'],'attributes':_0x2b22d8[_0x21d5('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x21d5('0xe')](function(_0x36c369){logger['info'](_0x21d5('0x24'),_0x2064f6);logger[_0x21d5('0x11')](_0x21d5('0x24'),_0x2064f6,JSON[_0x21d5('0x13')](_0x36c369));_0x4707ee(_0x36c369);})[_0x21d5('0x18')](function(_0x50cbb7){logger[_0x21d5('0x14')]('ShowVoiceQueue',_0x50cbb7['message'],_0x2064f6);_0x44f8a9(_0xc2d2b9[_0x21d5('0x14')](0x1f4,_0x50cbb7[_0x21d5('0x16')]));});});};
\ No newline at end of file
+var _0xb24e=['http','redis','localhost','socket.io-emitter','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueue','options','raw','where','attributes','include','map','model','then','VoiceQueue','find','ShowVoiceQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x27fcb5,_0x202fe4){var _0x492b1a=function(_0x53bee0){while(--_0x53bee0){_0x27fcb5['push'](_0x27fcb5['shift']());}};_0x492b1a(++_0x202fe4);}(_0xb24e,0xff));var _0xeb24=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb24e[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xeb24('0x0'));var moment=require(_0xeb24('0x1'));var BPromise=require(_0xeb24('0x2'));var rs=require(_0xeb24('0x3'));var fs=require('fs');var Redis=require(_0xeb24('0x4'));var db=require(_0xeb24('0x5'))['db'];var utils=require(_0xeb24('0x6'));var logger=require(_0xeb24('0x7'))(_0xeb24('0x8'));var config=require(_0xeb24('0x9'));var jayson=require(_0xeb24('0xa'));var client=jayson['client'][_0xeb24('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xeb24('0xc')],{'host':_0xeb24('0xd'),'port':0x18eb});var socket=require(_0xeb24('0xe'))(new Redis(config['redis']));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x177468,_0x41d470,_0x47cb4f){return new BPromise(function(_0x6537e1,_0x3c3466){return client['request'](_0x177468,_0x47cb4f)['then'](function(_0x5f228b){logger[_0xeb24('0xf')](_0xeb24('0x10'),_0x41d470,_0xeb24('0x11'));logger[_0xeb24('0x12')](_0xeb24('0x13'),_0x41d470,_0xeb24('0x11'),JSON[_0xeb24('0x14')](_0x5f228b));if(_0x5f228b['error']){if(_0x5f228b[_0xeb24('0x15')][_0xeb24('0x16')]===0x1f4){logger[_0xeb24('0x15')](_0xeb24('0x10'),_0x41d470,_0x5f228b[_0xeb24('0x15')][_0xeb24('0x17')]);return _0x3c3466(_0x5f228b[_0xeb24('0x15')][_0xeb24('0x17')]);}logger['error']('VoiceQueue,\x20%s,\x20%s',_0x41d470,_0x5f228b[_0xeb24('0x15')][_0xeb24('0x17')]);return _0x6537e1(_0x5f228b[_0xeb24('0x15')][_0xeb24('0x17')]);}else{logger['info']('VoiceQueue,\x20%s,\x20%s',_0x41d470,_0xeb24('0x11'));_0x6537e1(_0x5f228b[_0xeb24('0x18')][_0xeb24('0x17')]);}})[_0xeb24('0x19')](function(_0x3ecb21){logger['error'](_0xeb24('0x10'),_0x41d470,_0x3ecb21);_0x3c3466(_0x3ecb21);});});}exports[_0xeb24('0x1a')]=function(_0x184f8b){var _0x2784ba=this;return new Promise(function(_0x362910,_0x2b7658){return db['VoiceQueue']['findAll']({'raw':_0x184f8b[_0xeb24('0x1b')]?_0x184f8b[_0xeb24('0x1b')][_0xeb24('0x1c')]===undefined?!![]:![]:!![],'where':_0x184f8b['options']?_0x184f8b['options'][_0xeb24('0x1d')]||null:null,'attributes':_0x184f8b[_0xeb24('0x1b')]?_0x184f8b['options'][_0xeb24('0x1e')]||null:null,'limit':_0x184f8b[_0xeb24('0x1b')]?_0x184f8b[_0xeb24('0x1b')]['limit']||null:null,'include':_0x184f8b[_0xeb24('0x1b')]?_0x184f8b[_0xeb24('0x1b')][_0xeb24('0x1f')]?_[_0xeb24('0x20')](_0x184f8b[_0xeb24('0x1b')][_0xeb24('0x1f')],function(_0x5d47fe){return{'model':db[_0x5d47fe[_0xeb24('0x21')]],'as':_0x5d47fe['as'],'attributes':_0x5d47fe[_0xeb24('0x1e')],'include':_0x5d47fe['include']?_[_0xeb24('0x20')](_0x5d47fe[_0xeb24('0x1f')],function(_0x49da75){return{'model':db[_0x49da75[_0xeb24('0x21')]],'as':_0x49da75['as'],'attributes':_0x49da75[_0xeb24('0x1e')],'include':_0x49da75[_0xeb24('0x1f')]?_[_0xeb24('0x20')](_0x49da75[_0xeb24('0x1f')],function(_0xb78733){return{'model':db[_0xb78733[_0xeb24('0x21')]],'as':_0xb78733['as'],'attributes':_0xb78733['attributes']};}):[]};}):[]};}):[]:[]})[_0xeb24('0x22')](function(_0x306c7f){logger['info']('GetVoiceQueue',_0x184f8b);logger[_0xeb24('0x12')](_0xeb24('0x1a'),_0x184f8b,JSON[_0xeb24('0x14')](_0x306c7f));_0x362910(_0x306c7f);})[_0xeb24('0x19')](function(_0x416c36){logger[_0xeb24('0x15')]('GetVoiceQueue',_0x416c36[_0xeb24('0x17')],_0x184f8b);_0x2b7658(_0x2784ba['error'](0x1f4,_0x416c36['message']));});});};exports['ShowVoiceQueue']=function(_0x4ffac5){var _0x1d67cf=this;return new Promise(function(_0x3776c1,_0x1d4323){return db[_0xeb24('0x23')][_0xeb24('0x24')]({'raw':_0x4ffac5[_0xeb24('0x1b')]?_0x4ffac5['options'][_0xeb24('0x1c')]===undefined?!![]:![]:!![],'where':_0x4ffac5[_0xeb24('0x1b')]?_0x4ffac5[_0xeb24('0x1b')][_0xeb24('0x1d')]||null:null,'attributes':_0x4ffac5[_0xeb24('0x1b')]?_0x4ffac5['options']['attributes']||null:null,'include':_0x4ffac5[_0xeb24('0x1b')]?_0x4ffac5[_0xeb24('0x1b')][_0xeb24('0x1f')]?_[_0xeb24('0x20')](_0x4ffac5[_0xeb24('0x1b')][_0xeb24('0x1f')],function(_0xcf48a1){return{'model':db[_0xcf48a1['model']],'as':_0xcf48a1['as'],'attributes':_0xcf48a1[_0xeb24('0x1e')],'include':_0xcf48a1[_0xeb24('0x1f')]?_[_0xeb24('0x20')](_0xcf48a1[_0xeb24('0x1f')],function(_0x459454){return{'model':db[_0x459454[_0xeb24('0x21')]],'as':_0x459454['as'],'attributes':_0x459454[_0xeb24('0x1e')],'include':_0x459454[_0xeb24('0x1f')]?_[_0xeb24('0x20')](_0x459454[_0xeb24('0x1f')],function(_0x1e7676){return{'model':db[_0x1e7676['model']],'as':_0x1e7676['as'],'attributes':_0x1e7676[_0xeb24('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xeb24('0x22')](function(_0x37c8e0){logger[_0xeb24('0xf')](_0xeb24('0x25'),_0x4ffac5);logger[_0xeb24('0x12')]('ShowVoiceQueue',_0x4ffac5,JSON[_0xeb24('0x14')](_0x37c8e0));_0x3776c1(_0x37c8e0);})[_0xeb24('0x19')](function(_0x236a9a){logger[_0xeb24('0x15')]('ShowVoiceQueue',_0x236a9a['message'],_0x4ffac5);_0x1d4323(_0x1d67cf[_0xeb24('0x15')](0x1f4,_0x236a9a[_0xeb24('0x17')]));});});};
\ No newline at end of file
index 707c686..fe45c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf324=['remove','update','emit','removeListener','length','voiceQueue:','./voiceQueue.events'];(function(_0x5a4fb6,_0x1c022c){var _0x15fe52=function(_0x3f7226){while(--_0x3f7226){_0x5a4fb6['push'](_0x5a4fb6['shift']());}};_0x15fe52(++_0x1c022c);}(_0xf324,0x1db));var _0x4f32=function(_0xe4c97e,_0x1b3388){_0xe4c97e=_0xe4c97e-0x0;var _0x9cf58c=_0xf324[_0xe4c97e];return _0x9cf58c;};'use strict';var VoiceQueueEvents=require(_0x4f32('0x0'));var events=['save',_0x4f32('0x1'),_0x4f32('0x2')];function createListener(_0x5109ab,_0x3afbc8){return function(_0x1a4f00){_0x3afbc8[_0x4f32('0x3')](_0x5109ab,_0x1a4f00);};}function removeListener(_0x5de431,_0x3e5ba6){return function(){VoiceQueueEvents[_0x4f32('0x4')](_0x5de431,_0x3e5ba6);};}exports['register']=function(_0x16e41c){for(var _0x1db3d0=0x0,_0x518603=events[_0x4f32('0x5')];_0x1db3d0<_0x518603;_0x1db3d0++){var _0x32edbc=events[_0x1db3d0];var _0x4bd75b=createListener(_0x4f32('0x6')+_0x32edbc,_0x16e41c);VoiceQueueEvents['on'](_0x32edbc,_0x4bd75b);}};
\ No newline at end of file
+var _0xaad7=['voiceQueue:','./voiceQueue.events','save','remove','update','register','length'];(function(_0x18e3d8,_0x3ea9d7){var _0x542051=function(_0x52de29){while(--_0x52de29){_0x18e3d8['push'](_0x18e3d8['shift']());}};_0x542051(++_0x3ea9d7);}(_0xaad7,0x15f));var _0x7aad=function(_0x5e5d76,_0x406e6f){_0x5e5d76=_0x5e5d76-0x0;var _0x59b8ad=_0xaad7[_0x5e5d76];return _0x59b8ad;};'use strict';var VoiceQueueEvents=require(_0x7aad('0x0'));var events=[_0x7aad('0x1'),_0x7aad('0x2'),_0x7aad('0x3')];function createListener(_0x34382d,_0x576f67){return function(_0x48d72f){_0x576f67['emit'](_0x34382d,_0x48d72f);};}function removeListener(_0x1028d5,_0x4f7854){return function(){VoiceQueueEvents['removeListener'](_0x1028d5,_0x4f7854);};}exports[_0x7aad('0x4')]=function(_0x1b9224){for(var _0x51cb85=0x0,_0x5058a0=events[_0x7aad('0x5')];_0x51cb85<_0x5058a0;_0x51cb85++){var _0x5bc38c=events[_0x51cb85];var _0x1254da=createListener(_0x7aad('0x6')+_0x5bc38c,_0x1b9224);VoiceQueueEvents['on'](_0x5bc38c,_0x1254da);}};
\ No newline at end of file
index 1ab9222..93c3d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ce=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','describe','/index','getVoiceQueuesReport','post','create','put','/:id'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0x50ce,0xde));var _0xe50c=function(_0x51942a,_0x3bd294){_0x51942a=_0x51942a-0x0;var _0x2ad705=_0x50ce[_0x51942a];return _0x2ad705;};'use strict';var multer=require(_0xe50c('0x0'));var util=require(_0xe50c('0x1'));var path=require(_0xe50c('0x2'));var timeout=require(_0xe50c('0x3'));var express=require(_0xe50c('0x4'));var router=express[_0xe50c('0x5')]();var fs_extra=require(_0xe50c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe50c('0x7'));var config=require(_0xe50c('0x8'));var controller=require(_0xe50c('0x9'));router[_0xe50c('0xa')]('/',auth[_0xe50c('0xb')](),controller[_0xe50c('0xc')]);router[_0xe50c('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xe50c('0xd')]);router['get'](_0xe50c('0xe'),auth['isAuthenticated'](),controller[_0xe50c('0xf')]);router[_0xe50c('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xe50c('0x10')]('/',auth[_0xe50c('0xb')](),controller[_0xe50c('0x11')]);router[_0xe50c('0x12')](_0xe50c('0x13'),auth[_0xe50c('0xb')](),controller['update']);router[_0xe50c('0x14')](_0xe50c('0x13'),auth[_0xe50c('0xb')](),controller[_0xe50c('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x0293=['express','Router','fs-extra','../../components/interaction/service','./voiceQueueReport.controller','get','index','/describe','isAuthenticated','describe','/index','getVoiceQueuesReport','show','put','/:id','delete','exports','multer','util','path','connect-timeout'];(function(_0x4b1bb0,_0x7dc32b){var _0x549407=function(_0xa08deb){while(--_0xa08deb){_0x4b1bb0['push'](_0x4b1bb0['shift']());}};_0x549407(++_0x7dc32b);}(_0x0293,0xe3));var _0x3029=function(_0x266242,_0x565046){_0x266242=_0x266242-0x0;var _0x29e3f2=_0x0293[_0x266242];return _0x29e3f2;};'use strict';var multer=require(_0x3029('0x0'));var util=require(_0x3029('0x1'));var path=require(_0x3029('0x2'));var timeout=require(_0x3029('0x3'));var express=require(_0x3029('0x4'));var router=express[_0x3029('0x5')]();var fs_extra=require(_0x3029('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3029('0x7'));var config=require('../../config/environment');var controller=require(_0x3029('0x8'));router[_0x3029('0x9')]('/',auth['isAuthenticated'](),controller[_0x3029('0xa')]);router['get'](_0x3029('0xb'),auth[_0x3029('0xc')](),controller[_0x3029('0xd')]);router[_0x3029('0x9')](_0x3029('0xe'),auth[_0x3029('0xc')](),controller[_0x3029('0xf')]);router[_0x3029('0x9')]('/:id',auth[_0x3029('0xc')](),controller[_0x3029('0x10')]);router['post']('/',auth[_0x3029('0xc')](),controller['create']);router[_0x3029('0x11')](_0x3029('0x12'),auth['isAuthenticated'](),controller['update']);router[_0x3029('0x13')](_0x3029('0x12'),auth[_0x3029('0xc')](),controller['destroy']);module[_0x3029('0x14')]=router;
\ No newline at end of file
index c47332a..a690c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd49=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','queuecallerleaveAt','setDataValue','holdtime','INTEGER'];(function(_0x4ecedb,_0x2dffa3){var _0x3544cc=function(_0x107383){while(--_0x107383){_0x4ecedb['push'](_0x4ecedb['shift']());}};_0x3544cc(++_0x2dffa3);}(_0xdd49,0x14c));var _0x9dd4=function(_0x4132d1,_0x41fbbd){_0x4132d1=_0x4132d1-0x0;var _0x27d9cb=_0xdd49[_0x4132d1];return _0x27d9cb;};'use strict';var Sequelize=require(_0x9dd4('0x0'));var moment=require(_0x9dd4('0x1'));module[_0x9dd4('0x2')]={'type':{'type':Sequelize[_0x9dd4('0x3')]},'uniqueid':{'type':Sequelize[_0x9dd4('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9dd4('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x9dd4('0x4')],'set':function(_0x22ce6d){var _0x1a1a3c=moment(_0x22ce6d);var _0x33f187=moment(this[_0x9dd4('0x5')]('queuecallerjoinAt'))[_0x9dd4('0x6')](_0x9dd4('0x7'));var _0x49e601=_0x1a1a3c[_0x9dd4('0x8')](_0x33f187,'seconds');this['setDataValue'](_0x9dd4('0x9'),_0x22ce6d);this[_0x9dd4('0xa')](_0x9dd4('0xb'),_0x49e601||null);}},'position':{'type':Sequelize[_0x9dd4('0xc')]},'count':{'type':Sequelize[_0x9dd4('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x9dd4('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x9dd4('0x3')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x9dd4('0xc')]},'channel':{'type':Sequelize[_0x9dd4('0x3')]},'connectedlinenum':{'type':Sequelize[_0x9dd4('0x3')]},'connectedlinename':{'type':Sequelize[_0x9dd4('0x3')]},'accountcode':{'type':Sequelize[_0x9dd4('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x9dd4('0x3')]},'priority':{'type':Sequelize[_0x9dd4('0x3')]},'holdtime':{'type':Sequelize[_0x9dd4('0xc')]},'mohtime':{'type':Sequelize[_0x9dd4('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x9dd4('0x3')]},'transfer':{'type':Sequelize[_0x9dd4('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9dd4('0x3')],'comment':_0x9dd4('0xe')},'transferexten':{'type':Sequelize[_0x9dd4('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x9dd4('0x3')]},'secondDisposition':{'type':Sequelize[_0x9dd4('0x3')]},'thirdDisposition':{'type':Sequelize[_0x9dd4('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x9dd4('0xc')],'defaultValue':0x0},'note':{'type':Sequelize[_0x9dd4('0x3')]}};
\ No newline at end of file
+var _0xd978=['BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt'];(function(_0x4e27e1,_0x361ea5){var _0x23f105=function(_0xfe4f2d){while(--_0xfe4f2d){_0x4e27e1['push'](_0x4e27e1['shift']());}};_0x23f105(++_0x361ea5);}(_0xd978,0x12a));var _0x8d97=function(_0x1b8b95,_0x3ea343){_0x1b8b95=_0x1b8b95-0x0;var _0x3657ae=_0xd978[_0x1b8b95];return _0x3657ae;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8d97('0x0'));module[_0x8d97('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x8d97('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x8d97('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x8d97('0x3')],'set':function(_0x2646f0){var _0x136ba9=moment(_0x2646f0);var _0x2671b3=moment(this[_0x8d97('0x4')]('queuecallerjoinAt'))[_0x8d97('0x5')](_0x8d97('0x6'));var _0x544c2a=_0x136ba9[_0x8d97('0x7')](_0x2671b3,'seconds');this[_0x8d97('0x8')](_0x8d97('0x9'),_0x2646f0);this[_0x8d97('0x8')]('holdtime',_0x544c2a||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x8d97('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x8d97('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x8d97('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x8d97('0x2')],'comment':_0x8d97('0xb')},'originalposition':{'type':Sequelize[_0x8d97('0xc')]},'channel':{'type':Sequelize[_0x8d97('0x2')]},'connectedlinenum':{'type':Sequelize[_0x8d97('0x2')]},'connectedlinename':{'type':Sequelize[_0x8d97('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x8d97('0x2')]},'exten':{'type':Sequelize[_0x8d97('0x2')]},'priority':{'type':Sequelize[_0x8d97('0x2')]},'holdtime':{'type':Sequelize[_0x8d97('0xc')]},'mohtime':{'type':Sequelize[_0x8d97('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x8d97('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x8d97('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x8d97('0xd')},'transferexten':{'type':Sequelize[_0x8d97('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x8d97('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x8d97('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x8d97('0xc')],'defaultValue':0x0},'note':{'type':Sequelize[_0x8d97('0x2')]}};
\ No newline at end of file
index 9810970..ce3624f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ee=['error','stack','name','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','getVoiceQueuesReport','order','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x35c3cc,_0x2b9e33){var _0x23c0a0=function(_0x156012){while(--_0x156012){_0x35c3cc['push'](_0x35c3cc['shift']());}};_0x23c0a0(++_0x2b9e33);}(_0x07ee,0x185));var _0xe07e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x07ee[_0x30ae5e];return _0x1f2e93;};'use strict';var emlformat=require(_0xe07e('0x0'));var rimraf=require(_0xe07e('0x1'));var zipdir=require(_0xe07e('0x2'));var jsonpatch=require(_0xe07e('0x3'));var rp=require(_0xe07e('0x4'));var moment=require(_0xe07e('0x5'));var BPromise=require(_0xe07e('0x6'));var Mustache=require(_0xe07e('0x7'));var util=require(_0xe07e('0x8'));var path=require(_0xe07e('0x9'));var sox=require(_0xe07e('0xa'));var csv=require(_0xe07e('0xb'));var ejs=require(_0xe07e('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe07e('0xd'));var squel=require('squel');var crypto=require(_0xe07e('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe07e('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe07e('0x10'));var Papa=require(_0xe07e('0x11'));var Redis=require(_0xe07e('0x12'));var authService=require(_0xe07e('0x13'));var qs=require(_0xe07e('0x14'));var as=require(_0xe07e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe07e('0x16'));var utils=require(_0xe07e('0x17'));var config=require(_0xe07e('0x18'));var licenseUtil=require(_0xe07e('0x19'));var db=require(_0xe07e('0x1a'))['db'];config['redis']=_['defaults'](config[_0xe07e('0x1b')],{'host':_0xe07e('0x1c'),'port':0x18eb});var socket=require(_0xe07e('0x1d'))(new Redis(config[_0xe07e('0x1b')]));require(_0xe07e('0x1e'))[_0xe07e('0x1f')](socket);function respondWithStatusCode(_0x18baa6,_0x4cc855){_0x4cc855=_0x4cc855||0xcc;return function(_0x536692){if(_0x536692){return _0x18baa6['sendStatus'](_0x4cc855);}return _0x18baa6[_0xe07e('0x20')](_0x4cc855)[_0xe07e('0x21')]();};}function respondWithResult(_0x527ebc,_0x438cb6){_0x438cb6=_0x438cb6||0xc8;return function(_0x2a5933){if(_0x2a5933){return _0x527ebc['status'](_0x438cb6)[_0xe07e('0x22')](_0x2a5933);}};}function respondWithFilteredResult(_0x1ba892,_0x4876ee){return function(_0x212447){if(_0x212447){var _0x34e958=typeof _0x4876ee[_0xe07e('0x23')]===_0xe07e('0x24')&&typeof _0x4876ee['limit']===_0xe07e('0x24');var _0x22ab73=_0x212447[_0xe07e('0x25')];var _0xb5e064=_0x34e958?0x0:_0x4876ee[_0xe07e('0x23')];var _0x32f28d=_0x34e958?_0x212447[_0xe07e('0x25')]:_0x4876ee[_0xe07e('0x23')]+_0x4876ee['limit'];var _0x1af003;if(_0x32f28d>=_0x22ab73){_0x32f28d=_0x22ab73;_0x1af003=0xc8;}else{_0x1af003=0xce;}_0x1ba892[_0xe07e('0x20')](_0x1af003);return _0x1ba892[_0xe07e('0x26')](_0xe07e('0x27'),_0xb5e064+'-'+_0x32f28d+'/'+_0x22ab73)[_0xe07e('0x22')](_0x212447);}return null;};}function patchUpdates(_0x2ff317){return function(_0x26b332){try{jsonpatch[_0xe07e('0x28')](_0x26b332,_0x2ff317,!![]);}catch(_0xc35e4b){return BPromise[_0xe07e('0x29')](_0xc35e4b);}return _0x26b332[_0xe07e('0x2a')]();};}function saveUpdates(_0x47f701,_0x8e358){return function(_0x2b8fff){if(_0x2b8fff){return _0x2b8fff[_0xe07e('0x2b')](_0x47f701)[_0xe07e('0x2c')](function(_0x4b9318){return _0x4b9318;});}return null;};}function removeEntity(_0x163030,_0x462244){return function(_0x1c08fb){if(_0x1c08fb){return _0x1c08fb[_0xe07e('0x2d')]()[_0xe07e('0x2c')](function(){_0x163030['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x53eb19,_0x37661b){return function(_0x2d66ba){if(!_0x2d66ba){_0x53eb19['sendStatus'](0x194);}return _0x2d66ba;};}function handleError(_0x182505,_0x31bce2){_0x31bce2=_0x31bce2||0x1f4;return function(_0x446bfa){logger[_0xe07e('0x2e')](_0x446bfa[_0xe07e('0x2f')]);if(_0x446bfa['name']){delete _0x446bfa[_0xe07e('0x30')];}_0x182505['status'](_0x31bce2)['send'](_0x446bfa);};}exports[_0xe07e('0x31')]=function(_0x34f495,_0x1df9f3){var _0x5e29bb={},_0x1db5c8={},_0x438e36={'count':0x0,'rows':[]};var _0x58d213=_[_0xe07e('0x32')](db[_0xe07e('0x33')][_0xe07e('0x34')],function(_0x2462d8){return{'name':_0x2462d8[_0xe07e('0x35')],'type':_0x2462d8[_0xe07e('0x36')][_0xe07e('0x37')]};});_0x1db5c8[_0xe07e('0x38')]=_[_0xe07e('0x32')](_0x58d213,_0xe07e('0x30'));_0x1db5c8['query']=_[_0xe07e('0x39')](_0x34f495['query']);_0x1db5c8[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x1db5c8[_0xe07e('0x38')],_0x1db5c8[_0xe07e('0x3c')]);_0x5e29bb[_0xe07e('0x3d')]=_[_0xe07e('0x3b')](_0x1db5c8[_0xe07e('0x38')],qs['fields'](_0x34f495['query'][_0xe07e('0x3e')]));_0x5e29bb[_0xe07e('0x3d')]=_0x5e29bb[_0xe07e('0x3d')]['length']?_0x5e29bb[_0xe07e('0x3d')]:_0x1db5c8['model'];if(!_0x34f495[_0xe07e('0x3c')][_0xe07e('0x3f')](_0xe07e('0x40'))){_0x5e29bb[_0xe07e('0x41')]=qs[_0xe07e('0x41')](_0x34f495[_0xe07e('0x3c')]['limit']);_0x5e29bb[_0xe07e('0x23')]=qs['offset'](_0x34f495[_0xe07e('0x3c')][_0xe07e('0x23')]);}_0x5e29bb['order']=qs[_0xe07e('0x42')](_0x34f495['query'][_0xe07e('0x42')]);_0x5e29bb[_0xe07e('0x43')]=qs[_0xe07e('0x3a')](_['pick'](_0x34f495[_0xe07e('0x3c')],_0x1db5c8[_0xe07e('0x3a')]),_0x58d213);if(_0x34f495[_0xe07e('0x3c')]['filter']){_0x5e29bb['where']=_[_0xe07e('0x44')](_0x5e29bb[_0xe07e('0x43')],{'$or':_['map'](_0x58d213,function(_0x1073fa){if(_0x1073fa[_0xe07e('0x36')]!==_0xe07e('0x45')){var _0x18e332={};_0x18e332[_0x1073fa['name']]={'$like':'%'+_0x34f495[_0xe07e('0x3c')][_0xe07e('0x46')]+'%'};return _0x18e332;}})});}_0x5e29bb=_[_0xe07e('0x44')]({},_0x5e29bb,_0x34f495[_0xe07e('0x47')]);var _0x1d0610={'where':_0x5e29bb['where']};return db['VoiceQueueReport'][_0xe07e('0x25')](_0x1d0610)['then'](function(_0x378194){_0x438e36[_0xe07e('0x25')]=_0x378194;if(_0x34f495[_0xe07e('0x3c')][_0xe07e('0x48')]){_0x5e29bb[_0xe07e('0x49')]=[{'all':!![]}];}return db[_0xe07e('0x33')][_0xe07e('0x4a')](_0x5e29bb);})[_0xe07e('0x2c')](function(_0x1a397a){_0x438e36[_0xe07e('0x4b')]=_0x1a397a;return _0x438e36;})['then'](respondWithFilteredResult(_0x1df9f3,_0x5e29bb))[_0xe07e('0x4c')](handleError(_0x1df9f3,null));};exports[_0xe07e('0x4d')]=function(_0x56799e,_0x14bc11){var _0x5ea50d={'raw':![],'where':{'id':_0x56799e[_0xe07e('0x4e')]['id']}},_0x734dba={};_0x734dba['model']=_['keys'](db['VoiceQueueReport'][_0xe07e('0x34')]);_0x734dba[_0xe07e('0x3c')]=_[_0xe07e('0x39')](_0x56799e[_0xe07e('0x3c')]);_0x734dba[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x734dba[_0xe07e('0x38')],_0x734dba[_0xe07e('0x3c')]);_0x5ea50d[_0xe07e('0x3d')]=_[_0xe07e('0x3b')](_0x734dba[_0xe07e('0x38')],qs[_0xe07e('0x3e')](_0x56799e[_0xe07e('0x3c')][_0xe07e('0x3e')]));_0x5ea50d['attributes']=_0x5ea50d['attributes'][_0xe07e('0x4f')]?_0x5ea50d['attributes']:_0x734dba[_0xe07e('0x38')];if(_0x56799e['query'][_0xe07e('0x48')]){_0x5ea50d[_0xe07e('0x49')]=[{'all':!![]}];}_0x5ea50d=_[_0xe07e('0x44')]({},_0x5ea50d,_0x56799e[_0xe07e('0x47')]);return db['VoiceQueueReport'][_0xe07e('0x50')](_0x5ea50d)[_0xe07e('0x2c')](handleEntityNotFound(_0x14bc11,null))[_0xe07e('0x2c')](respondWithResult(_0x14bc11,null))[_0xe07e('0x4c')](handleError(_0x14bc11,null));};exports[_0xe07e('0x51')]=function(_0x46fb24,_0x5612fa){return db[_0xe07e('0x33')][_0xe07e('0x51')](_0x46fb24[_0xe07e('0x52')],{})[_0xe07e('0x2c')](respondWithResult(_0x5612fa,0xc9))['catch'](handleError(_0x5612fa,null));};exports[_0xe07e('0x2b')]=function(_0x358b8a,_0x37116e){if(_0x358b8a[_0xe07e('0x52')]['id']){delete _0x358b8a[_0xe07e('0x52')]['id'];}return db[_0xe07e('0x33')][_0xe07e('0x50')]({'where':{'id':_0x358b8a['params']['id']}})[_0xe07e('0x2c')](handleEntityNotFound(_0x37116e,null))['then'](saveUpdates(_0x358b8a['body'],null))[_0xe07e('0x2c')](respondWithResult(_0x37116e,null))[_0xe07e('0x4c')](handleError(_0x37116e,null));};exports[_0xe07e('0x2d')]=function(_0x51c5ae,_0x588bc4){return db[_0xe07e('0x33')][_0xe07e('0x50')]({'where':{'id':_0x51c5ae[_0xe07e('0x4e')]['id']}})[_0xe07e('0x2c')](handleEntityNotFound(_0x588bc4,null))['then'](removeEntity(_0x588bc4,null))[_0xe07e('0x4c')](handleError(_0x588bc4,null));};exports[_0xe07e('0x53')]=function(_0xe39f26,_0x20eb2d){return db[_0xe07e('0x33')]['describe']()['then'](respondWithResult(_0x20eb2d,null))[_0xe07e('0x4c')](handleError(_0x20eb2d,null));};exports[_0xe07e('0x54')]=function(_0x36a3c1,_0x16ae9f){var _0x4f1024={},_0x3b0f68={},_0xd381b6={'count':0x0,'rows':[]};_0x3b0f68[_0xe07e('0x38')]=_[_0xe07e('0x39')](db[_0xe07e('0x33')][_0xe07e('0x34')]);_0x3b0f68['query']=_[_0xe07e('0x39')](_0x36a3c1[_0xe07e('0x3c')]);_0x3b0f68[_0xe07e('0x3a')]=_[_0xe07e('0x3b')](_0x3b0f68[_0xe07e('0x38')],_0x3b0f68[_0xe07e('0x3c')]);_0x4f1024['attributes']=_[_0xe07e('0x3b')](_0x3b0f68[_0xe07e('0x38')],qs['fields'](_0x36a3c1['query']['fields']));_0x4f1024['attributes']=_0x4f1024[_0xe07e('0x3d')][_0xe07e('0x4f')]?_0x4f1024[_0xe07e('0x3d')]:_0x3b0f68['model'];if(!_0x36a3c1[_0xe07e('0x3c')]['hasOwnProperty'](_0xe07e('0x40'))){_0x4f1024[_0xe07e('0x41')]=qs[_0xe07e('0x41')](_0x36a3c1['query'][_0xe07e('0x41')]);_0x4f1024[_0xe07e('0x23')]=qs[_0xe07e('0x23')](_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x23')]);}_0x4f1024[_0xe07e('0x55')]=qs[_0xe07e('0x42')](_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x42')]);_0x4f1024[_0xe07e('0x43')]=qs[_0xe07e('0x3a')](_[_0xe07e('0x56')](_0x36a3c1[_0xe07e('0x3c')],_0x3b0f68[_0xe07e('0x3a')]));if(_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x46')]){_0x4f1024[_0xe07e('0x43')]=_[_0xe07e('0x44')](_0x4f1024[_0xe07e('0x43')],{'$or':_[_0xe07e('0x32')](_0x4f1024['attributes'],function(_0x3e91e9){var _0x2da9b3={};_0x2da9b3[_0x3e91e9]={'$like':'%'+_0x36a3c1['query']['filter']+'%'};return _0x2da9b3;})});}_0x4f1024=_[_0xe07e('0x44')]({},_0x4f1024,_0x36a3c1[_0xe07e('0x47')]);var _0x2270f9={'where':_0x4f1024[_0xe07e('0x43')]};return db[_0xe07e('0x33')][_0xe07e('0x25')](_0x2270f9)['then'](function(_0x2de8d3){_0xd381b6[_0xe07e('0x25')]=_0x2de8d3;if(_0x36a3c1[_0xe07e('0x3c')][_0xe07e('0x48')]){_0x4f1024[_0xe07e('0x49')]=[{'all':!![]}];}return db[_0xe07e('0x33')][_0xe07e('0x4a')](_0x4f1024);})[_0xe07e('0x2c')](function(_0x268dd4){_0xd381b6[_0xe07e('0x4b')]=_0x268dd4;return _0xd381b6;})['then'](respondWithFilteredResult(_0x16ae9f,_0x4f1024,'getVoiceQueuesReport'))[_0xe07e('0x4c')](handleError(_0x16ae9f,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x2306=['length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','merge','options','VoiceQueueReport','includeAll','include','findAll','rows','catch','params','find','create','body','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','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/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields'];(function(_0x2021ad,_0x443a76){var _0x25c627=function(_0xc044d4){while(--_0xc044d4){_0x2021ad['push'](_0x2021ad['shift']());}};_0x25c627(++_0x443a76);}(_0x2306,0x15e));var _0x6230=function(_0x3a9b94,_0x552284){_0x3a9b94=_0x3a9b94-0x0;var _0x4f88ed=_0x2306[_0x3a9b94];return _0x4f88ed;};'use strict';var emlformat=require(_0x6230('0x0'));var rimraf=require(_0x6230('0x1'));var zipdir=require(_0x6230('0x2'));var jsonpatch=require(_0x6230('0x3'));var rp=require('request-promise');var moment=require(_0x6230('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6230('0x5'));var path=require('path');var sox=require(_0x6230('0x6'));var csv=require(_0x6230('0x7'));var ejs=require(_0x6230('0x8'));var fs=require('fs');var fs_extra=require(_0x6230('0x9'));var _=require(_0x6230('0xa'));var squel=require(_0x6230('0xb'));var crypto=require(_0x6230('0xc'));var jsforce=require(_0x6230('0xd'));var deskjs=require(_0x6230('0xe'));var toCsv=require(_0x6230('0x7'));var querystring=require('querystring');var Papa=require(_0x6230('0xf'));var Redis=require(_0x6230('0x10'));var authService=require(_0x6230('0x11'));var qs=require(_0x6230('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6230('0x13'));var logger=require(_0x6230('0x14'))(_0x6230('0x15'));var utils=require(_0x6230('0x16'));var config=require(_0x6230('0x17'));var licenseUtil=require(_0x6230('0x18'));var db=require('../../mysqldb')['db'];config[_0x6230('0x19')]=_[_0x6230('0x1a')](config[_0x6230('0x19')],{'host':_0x6230('0x1b'),'port':0x18eb});var socket=require(_0x6230('0x1c'))(new Redis(config[_0x6230('0x19')]));require('./voiceQueueReport.socket')[_0x6230('0x1d')](socket);function respondWithStatusCode(_0x2ace4,_0x5b9572){_0x5b9572=_0x5b9572||0xcc;return function(_0x5341f8){if(_0x5341f8){return _0x2ace4[_0x6230('0x1e')](_0x5b9572);}return _0x2ace4[_0x6230('0x1f')](_0x5b9572)['end']();};}function respondWithResult(_0x5a9e91,_0x16f5cb){_0x16f5cb=_0x16f5cb||0xc8;return function(_0x52de5a){if(_0x52de5a){return _0x5a9e91[_0x6230('0x1f')](_0x16f5cb)[_0x6230('0x20')](_0x52de5a);}};}function respondWithFilteredResult(_0x665369,_0x1aca03){return function(_0x27726c){if(_0x27726c){var _0x323f74=typeof _0x1aca03[_0x6230('0x21')]==='undefined'&&typeof _0x1aca03[_0x6230('0x22')]===_0x6230('0x23');var _0x5e0e9b=_0x27726c[_0x6230('0x24')];var _0x208d88=_0x323f74?0x0:_0x1aca03[_0x6230('0x21')];var _0x4f266a=_0x323f74?_0x27726c[_0x6230('0x24')]:_0x1aca03[_0x6230('0x21')]+_0x1aca03[_0x6230('0x22')];var _0x13c30e;if(_0x4f266a>=_0x5e0e9b){_0x4f266a=_0x5e0e9b;_0x13c30e=0xc8;}else{_0x13c30e=0xce;}_0x665369[_0x6230('0x1f')](_0x13c30e);return _0x665369[_0x6230('0x25')]('Content-Range',_0x208d88+'-'+_0x4f266a+'/'+_0x5e0e9b)[_0x6230('0x20')](_0x27726c);}return null;};}function patchUpdates(_0x36bd9a){return function(_0x4812fe){try{jsonpatch[_0x6230('0x26')](_0x4812fe,_0x36bd9a,!![]);}catch(_0x3b0f82){return BPromise[_0x6230('0x27')](_0x3b0f82);}return _0x4812fe[_0x6230('0x28')]();};}function saveUpdates(_0x465890,_0x114cd8){return function(_0x2a7cd3){if(_0x2a7cd3){return _0x2a7cd3[_0x6230('0x29')](_0x465890)['then'](function(_0x472d37){return _0x472d37;});}return null;};}function removeEntity(_0x33c6ad,_0xcdf24e){return function(_0x2d70c){if(_0x2d70c){return _0x2d70c[_0x6230('0x2a')]()[_0x6230('0x2b')](function(){_0x33c6ad[_0x6230('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4035be,_0x43382e){return function(_0x7d1edf){if(!_0x7d1edf){_0x4035be[_0x6230('0x1e')](0x194);}return _0x7d1edf;};}function handleError(_0x1456f9,_0x431356){_0x431356=_0x431356||0x1f4;return function(_0xf362fa){logger[_0x6230('0x2c')](_0xf362fa[_0x6230('0x2d')]);if(_0xf362fa[_0x6230('0x2e')]){delete _0xf362fa[_0x6230('0x2e')];}_0x1456f9['status'](_0x431356)[_0x6230('0x2f')](_0xf362fa);};}exports[_0x6230('0x30')]=function(_0x2cd6ad,_0x151a21){var _0x43115c={},_0x253a96={},_0x51b1f={'count':0x0,'rows':[]};var _0x3b853c=_[_0x6230('0x31')](db['VoiceQueueReport'][_0x6230('0x32')],function(_0xc530d1){return{'name':_0xc530d1[_0x6230('0x33')],'type':_0xc530d1['type'][_0x6230('0x34')]};});_0x253a96[_0x6230('0x35')]=_[_0x6230('0x31')](_0x3b853c,_0x6230('0x2e'));_0x253a96['query']=_[_0x6230('0x36')](_0x2cd6ad[_0x6230('0x37')]);_0x253a96[_0x6230('0x38')]=_[_0x6230('0x39')](_0x253a96[_0x6230('0x35')],_0x253a96[_0x6230('0x37')]);_0x43115c[_0x6230('0x3a')]=_['intersection'](_0x253a96[_0x6230('0x35')],qs[_0x6230('0x3b')](_0x2cd6ad[_0x6230('0x37')][_0x6230('0x3b')]));_0x43115c[_0x6230('0x3a')]=_0x43115c[_0x6230('0x3a')][_0x6230('0x3c')]?_0x43115c[_0x6230('0x3a')]:_0x253a96[_0x6230('0x35')];if(!_0x2cd6ad[_0x6230('0x37')][_0x6230('0x3d')](_0x6230('0x3e'))){_0x43115c[_0x6230('0x22')]=qs[_0x6230('0x22')](_0x2cd6ad['query'][_0x6230('0x22')]);_0x43115c[_0x6230('0x21')]=qs[_0x6230('0x21')](_0x2cd6ad['query'][_0x6230('0x21')]);}_0x43115c[_0x6230('0x3f')]=qs[_0x6230('0x40')](_0x2cd6ad[_0x6230('0x37')][_0x6230('0x40')]);_0x43115c['where']=qs[_0x6230('0x38')](_[_0x6230('0x41')](_0x2cd6ad[_0x6230('0x37')],_0x253a96['filters']),_0x3b853c);if(_0x2cd6ad['query'][_0x6230('0x42')]){_0x43115c[_0x6230('0x43')]=_['merge'](_0x43115c[_0x6230('0x43')],{'$or':_[_0x6230('0x31')](_0x3b853c,function(_0x225684){if(_0x225684[_0x6230('0x44')]!=='VIRTUAL'){var _0x33ba9d={};_0x33ba9d[_0x225684['name']]={'$like':'%'+_0x2cd6ad[_0x6230('0x37')][_0x6230('0x42')]+'%'};return _0x33ba9d;}})});}_0x43115c=_[_0x6230('0x45')]({},_0x43115c,_0x2cd6ad[_0x6230('0x46')]);var _0x35a974={'where':_0x43115c['where']};return db[_0x6230('0x47')][_0x6230('0x24')](_0x35a974)[_0x6230('0x2b')](function(_0x3cde61){_0x51b1f['count']=_0x3cde61;if(_0x2cd6ad[_0x6230('0x37')][_0x6230('0x48')]){_0x43115c[_0x6230('0x49')]=[{'all':!![]}];}return db[_0x6230('0x47')][_0x6230('0x4a')](_0x43115c);})['then'](function(_0xf924c0){_0x51b1f[_0x6230('0x4b')]=_0xf924c0;return _0x51b1f;})['then'](respondWithFilteredResult(_0x151a21,_0x43115c))[_0x6230('0x4c')](handleError(_0x151a21,null));};exports['show']=function(_0x368ffb,_0x4a4b06){var _0x40bf7c={'raw':![],'where':{'id':_0x368ffb[_0x6230('0x4d')]['id']}},_0x3d5525={};_0x3d5525[_0x6230('0x35')]=_[_0x6230('0x36')](db[_0x6230('0x47')][_0x6230('0x32')]);_0x3d5525[_0x6230('0x37')]=_[_0x6230('0x36')](_0x368ffb['query']);_0x3d5525[_0x6230('0x38')]=_['intersection'](_0x3d5525['model'],_0x3d5525[_0x6230('0x37')]);_0x40bf7c['attributes']=_['intersection'](_0x3d5525['model'],qs[_0x6230('0x3b')](_0x368ffb['query'][_0x6230('0x3b')]));_0x40bf7c['attributes']=_0x40bf7c[_0x6230('0x3a')]['length']?_0x40bf7c[_0x6230('0x3a')]:_0x3d5525['model'];if(_0x368ffb['query'][_0x6230('0x48')]){_0x40bf7c[_0x6230('0x49')]=[{'all':!![]}];}_0x40bf7c=_['merge']({},_0x40bf7c,_0x368ffb[_0x6230('0x46')]);return db['VoiceQueueReport'][_0x6230('0x4e')](_0x40bf7c)[_0x6230('0x2b')](handleEntityNotFound(_0x4a4b06,null))[_0x6230('0x2b')](respondWithResult(_0x4a4b06,null))[_0x6230('0x4c')](handleError(_0x4a4b06,null));};exports[_0x6230('0x4f')]=function(_0x560eba,_0x1568c9){return db['VoiceQueueReport'][_0x6230('0x4f')](_0x560eba[_0x6230('0x50')],{})['then'](respondWithResult(_0x1568c9,0xc9))[_0x6230('0x4c')](handleError(_0x1568c9,null));};exports['update']=function(_0xbf64d6,_0x127730){if(_0xbf64d6[_0x6230('0x50')]['id']){delete _0xbf64d6[_0x6230('0x50')]['id'];}return db[_0x6230('0x47')]['find']({'where':{'id':_0xbf64d6[_0x6230('0x4d')]['id']}})[_0x6230('0x2b')](handleEntityNotFound(_0x127730,null))[_0x6230('0x2b')](saveUpdates(_0xbf64d6[_0x6230('0x50')],null))[_0x6230('0x2b')](respondWithResult(_0x127730,null))[_0x6230('0x4c')](handleError(_0x127730,null));};exports[_0x6230('0x2a')]=function(_0x6c5398,_0x561ae7){return db['VoiceQueueReport'][_0x6230('0x4e')]({'where':{'id':_0x6c5398[_0x6230('0x4d')]['id']}})[_0x6230('0x2b')](handleEntityNotFound(_0x561ae7,null))[_0x6230('0x2b')](removeEntity(_0x561ae7,null))[_0x6230('0x4c')](handleError(_0x561ae7,null));};exports['describe']=function(_0x4c6f4a,_0x505634){return db[_0x6230('0x47')]['describe']()[_0x6230('0x2b')](respondWithResult(_0x505634,null))['catch'](handleError(_0x505634,null));};exports[_0x6230('0x51')]=function(_0x52ba4d,_0x262ba3){var _0x40f8c4={},_0x491df9={},_0x4a9a0a={'count':0x0,'rows':[]};_0x491df9[_0x6230('0x35')]=_['keys'](db[_0x6230('0x47')][_0x6230('0x32')]);_0x491df9[_0x6230('0x37')]=_[_0x6230('0x36')](_0x52ba4d[_0x6230('0x37')]);_0x491df9[_0x6230('0x38')]=_[_0x6230('0x39')](_0x491df9[_0x6230('0x35')],_0x491df9[_0x6230('0x37')]);_0x40f8c4[_0x6230('0x3a')]=_[_0x6230('0x39')](_0x491df9[_0x6230('0x35')],qs[_0x6230('0x3b')](_0x52ba4d[_0x6230('0x37')][_0x6230('0x3b')]));_0x40f8c4[_0x6230('0x3a')]=_0x40f8c4[_0x6230('0x3a')]['length']?_0x40f8c4[_0x6230('0x3a')]:_0x491df9[_0x6230('0x35')];if(!_0x52ba4d['query'][_0x6230('0x3d')](_0x6230('0x3e'))){_0x40f8c4[_0x6230('0x22')]=qs[_0x6230('0x22')](_0x52ba4d[_0x6230('0x37')]['limit']);_0x40f8c4[_0x6230('0x21')]=qs[_0x6230('0x21')](_0x52ba4d[_0x6230('0x37')]['offset']);}_0x40f8c4[_0x6230('0x3f')]=qs[_0x6230('0x40')](_0x52ba4d[_0x6230('0x37')][_0x6230('0x40')]);_0x40f8c4[_0x6230('0x43')]=qs[_0x6230('0x38')](_[_0x6230('0x41')](_0x52ba4d[_0x6230('0x37')],_0x491df9['filters']));if(_0x52ba4d[_0x6230('0x37')]['filter']){_0x40f8c4[_0x6230('0x43')]=_[_0x6230('0x45')](_0x40f8c4['where'],{'$or':_[_0x6230('0x31')](_0x40f8c4[_0x6230('0x3a')],function(_0x26bac0){var _0x18e448={};_0x18e448[_0x26bac0]={'$like':'%'+_0x52ba4d[_0x6230('0x37')]['filter']+'%'};return _0x18e448;})});}_0x40f8c4=_[_0x6230('0x45')]({},_0x40f8c4,_0x52ba4d[_0x6230('0x46')]);var _0xec6bea={'where':_0x40f8c4[_0x6230('0x43')]};return db[_0x6230('0x47')][_0x6230('0x24')](_0xec6bea)[_0x6230('0x2b')](function(_0x2a3590){_0x4a9a0a[_0x6230('0x24')]=_0x2a3590;if(_0x52ba4d[_0x6230('0x37')]['includeAll']){_0x40f8c4[_0x6230('0x49')]=[{'all':!![]}];}return db[_0x6230('0x47')][_0x6230('0x4a')](_0x40f8c4);})[_0x6230('0x2b')](function(_0x135c32){_0x4a9a0a[_0x6230('0x4b')]=_0x135c32;return _0x4a9a0a;})[_0x6230('0x2b')](respondWithFilteredResult(_0x262ba3,_0x40f8c4,'getVoiceQueuesReport'))['catch'](handleError(_0x262ba3,null,_0x6230('0x51')));};
\ No newline at end of file
index 2b40069..18907a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f2=['events','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x3529e7,_0x54f17b){var _0x1b219e=function(_0x52bc19){while(--_0x52bc19){_0x3529e7['push'](_0x3529e7['shift']());}};_0x1b219e(++_0x54f17b);}(_0xe9f2,0x69));var _0x2e9f=function(_0x21806e,_0x321cfe){_0x21806e=_0x21806e-0x0;var _0x224e6f=_0xe9f2[_0x21806e];return _0x224e6f;};'use strict';var EventEmitter=require(_0x2e9f('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2e9f('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2e9f('0x2'),'afterDestroy':_0x2e9f('0x3')};function emitEvent(_0x233163){return function(_0x71689f,_0x4f0e2,_0x81d2d5){VoiceQueueReportEvents['emit'](_0x233163+':'+_0x71689f['id'],_0x71689f);VoiceQueueReportEvents[_0x2e9f('0x4')](_0x233163,_0x71689f);_0x81d2d5(null);};}for(var e in events){if(events[_0x2e9f('0x5')](e)){var event=events[e];VoiceQueueReport[_0x2e9f('0x6')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xb0e6=['emit','exports','../../mysqldb','VoiceQueueReport','save','update','remove'];(function(_0x336c7d,_0x2343cc){var _0x196334=function(_0x516c5b){while(--_0x516c5b){_0x336c7d['push'](_0x336c7d['shift']());}};_0x196334(++_0x2343cc);}(_0xb0e6,0xa3));var _0x6b0e=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xb0e6[_0x68c979];return _0x4f0001;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0x6b0e('0x0'))['db'][_0x6b0e('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6b0e('0x2'),'afterUpdate':_0x6b0e('0x3'),'afterDestroy':_0x6b0e('0x4')};function emitEvent(_0x8a7243){return function(_0x5ee894,_0x590b42,_0x7b27b){VoiceQueueReportEvents[_0x6b0e('0x5')](_0x8a7243+':'+_0x5ee894['id'],_0x5ee894);VoiceQueueReportEvents[_0x6b0e('0x5')](_0x8a7243,_0x5ee894);_0x7b27b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x6b0e('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index dbcbf8f..3aab890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9a4=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash'];(function(_0x58547b,_0x4b89c2){var _0x1d3fd2=function(_0x4ac500){while(--_0x4ac500){_0x58547b['push'](_0x58547b['shift']());}};_0x1d3fd2(++_0x4b89c2);}(_0xa9a4,0x68));var _0x4a9a=function(_0x5b8d4c,_0x3c5d26){_0x5b8d4c=_0x5b8d4c-0x0;var _0x2574b4=_0xa9a4[_0x5b8d4c];return _0x2574b4;};'use strict';var _=require(_0x4a9a('0x0'));var util=require(_0x4a9a('0x1'));var logger=require(_0x4a9a('0x2'))(_0x4a9a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4a9a('0x4'));var fs=require('fs');var path=require(_0x4a9a('0x5'));var rimraf=require(_0x4a9a('0x6'));var config=require(_0x4a9a('0x7'));var attributes=require(_0x4a9a('0x8'));module[_0x4a9a('0x9')]=function(_0x4bf039,_0x150c5f){return _0x4bf039[_0x4a9a('0xa')](_0x4a9a('0xb'),attributes,{'tableName':_0x4a9a('0xc'),'paranoid':![],'indexes':[{'fields':[_0x4a9a('0xd')]},{'fields':[_0x4a9a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x65ea=['path','../../config/environment','./voiceQueueReport.attributes','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','api','bluebird'];(function(_0x52e10a,_0x47cada){var _0x4dc87c=function(_0x4f40ea){while(--_0x4f40ea){_0x52e10a['push'](_0x52e10a['shift']());}};_0x4dc87c(++_0x47cada);}(_0x65ea,0x167));var _0xa65e=function(_0x30e523,_0x4002d3){_0x30e523=_0x30e523-0x0;var _0x513881=_0x65ea[_0x30e523];return _0x513881;};'use strict';var _=require(_0xa65e('0x0'));var util=require(_0xa65e('0x1'));var logger=require('../../config/logger')(_0xa65e('0x2'));var moment=require('moment');var BPromise=require(_0xa65e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa65e('0x4'));var rimraf=require('rimraf');var config=require(_0xa65e('0x5'));var attributes=require(_0xa65e('0x6'));module['exports']=function(_0xd6162d,_0x40233c){return _0xd6162d['define'](_0xa65e('0x7'),attributes,{'tableName':_0xa65e('0x8'),'paranoid':![],'indexes':[{'fields':[_0xa65e('0x9')]},{'fields':[_0xa65e('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 32287b6..0842822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77c5=['result','catch','VoiceQueueReport','findAll','options','raw','where','attributes','include','map','model','then','GetVoiceQueueReport','stringify','CreateVoiceQueueReport','create','UpdateVoiceQueueReport','update','body','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','request','info','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','VoiceQueueReport,\x20%s,\x20%s','message'];(function(_0x31bcd8,_0x49d67a){var _0x10946f=function(_0x48d153){while(--_0x48d153){_0x31bcd8['push'](_0x31bcd8['shift']());}};_0x10946f(++_0x49d67a);}(_0x77c5,0xeb));var _0x577c=function(_0x337175,_0x4eb3fc){_0x337175=_0x337175-0x0;var _0x45ed13=_0x77c5[_0x337175];return _0x45ed13;};'use strict';var _=require('lodash');var util=require(_0x577c('0x0'));var moment=require(_0x577c('0x1'));var BPromise=require('bluebird');var rs=require(_0x577c('0x2'));var fs=require('fs');var Redis=require(_0x577c('0x3'));var db=require(_0x577c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x577c('0x5'))(_0x577c('0x6'));var config=require(_0x577c('0x7'));var jayson=require(_0x577c('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x577c('0x9')]=_[_0x577c('0xa')](config[_0x577c('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x577c('0xb'))(new Redis(config['redis']));require(_0x577c('0xc'))[_0x577c('0xd')](socket);function respondWithRpcPromise(_0x4b11ca,_0x3a7c5b,_0x14f61a){return new BPromise(function(_0x1c24b5,_0x19917a){return client[_0x577c('0xe')](_0x4b11ca,_0x14f61a)['then'](function(_0x4d6bf5){logger[_0x577c('0xf')]('VoiceQueueReport,\x20%s,\x20%s',_0x3a7c5b,'request\x20sent');logger[_0x577c('0x10')](_0x577c('0x11'),_0x3a7c5b,_0x577c('0x12'),JSON['stringify'](_0x4d6bf5));if(_0x4d6bf5[_0x577c('0x13')]){if(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x14')]===0x1f4){logger[_0x577c('0x13')](_0x577c('0x15'),_0x3a7c5b,_0x4d6bf5['error'][_0x577c('0x16')]);return _0x19917a(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x3a7c5b,_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);return _0x1c24b5(_0x4d6bf5[_0x577c('0x13')][_0x577c('0x16')]);}else{logger['info'](_0x577c('0x15'),_0x3a7c5b,_0x577c('0x12'));_0x1c24b5(_0x4d6bf5[_0x577c('0x17')][_0x577c('0x16')]);}})[_0x577c('0x18')](function(_0x13716f){logger[_0x577c('0x13')](_0x577c('0x15'),_0x3a7c5b,_0x13716f);_0x19917a(_0x13716f);});});}exports['GetVoiceQueueReport']=function(_0x37edbf){var _0x5c8df2=this;return new Promise(function(_0x512c48,_0x24ba01){return db[_0x577c('0x19')][_0x577c('0x1a')]({'raw':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1c')]===undefined?!![]:![]:!![],'where':_0x37edbf[_0x577c('0x1b')]?_0x37edbf['options'][_0x577c('0x1d')]||null:null,'attributes':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1e')]||null:null,'limit':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')]['limit']||null:null,'include':_0x37edbf[_0x577c('0x1b')]?_0x37edbf[_0x577c('0x1b')][_0x577c('0x1f')]?_[_0x577c('0x20')](_0x37edbf['options'][_0x577c('0x1f')],function(_0x59c92b){return{'model':db[_0x59c92b['model']],'as':_0x59c92b['as'],'attributes':_0x59c92b[_0x577c('0x1e')],'include':_0x59c92b[_0x577c('0x1f')]?_['map'](_0x59c92b['include'],function(_0x17302a){return{'model':db[_0x17302a['model']],'as':_0x17302a['as'],'attributes':_0x17302a['attributes'],'include':_0x17302a[_0x577c('0x1f')]?_[_0x577c('0x20')](_0x17302a[_0x577c('0x1f')],function(_0xd202f9){return{'model':db[_0xd202f9[_0x577c('0x21')]],'as':_0xd202f9['as'],'attributes':_0xd202f9[_0x577c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x577c('0x22')](function(_0x122806){logger[_0x577c('0xf')](_0x577c('0x23'),_0x37edbf);logger[_0x577c('0x10')](_0x577c('0x23'),_0x37edbf,JSON[_0x577c('0x24')](_0x122806));_0x512c48(_0x122806);})['catch'](function(_0x1d0627){logger[_0x577c('0x13')](_0x577c('0x23'),_0x1d0627[_0x577c('0x16')],_0x37edbf);_0x24ba01(_0x5c8df2[_0x577c('0x13')](0x1f4,_0x1d0627[_0x577c('0x16')]));});});};exports[_0x577c('0x25')]=function(_0x45ab9f){var _0x5ee1d6=this;return new Promise(function(_0x53e7aa,_0x1e6b5f){return db[_0x577c('0x19')][_0x577c('0x26')](_0x45ab9f['body'],{'raw':_0x45ab9f[_0x577c('0x1b')]?_0x45ab9f[_0x577c('0x1b')][_0x577c('0x1c')]===undefined?!![]:![]:!![]})[_0x577c('0x22')](function(_0x4e51b9){logger[_0x577c('0xf')](_0x577c('0x25'),_0x45ab9f);logger[_0x577c('0x10')](_0x577c('0x25'),_0x45ab9f,JSON['stringify'](_0x4e51b9));_0x53e7aa(_0x4e51b9);})[_0x577c('0x18')](function(_0x4698a3){logger[_0x577c('0x13')](_0x577c('0x25'),_0x4698a3['message'],_0x45ab9f);_0x1e6b5f(_0x5ee1d6[_0x577c('0x13')](0x1f4,_0x4698a3[_0x577c('0x16')]));});});};exports[_0x577c('0x27')]=function(_0x3408f2){var _0x268c5c=this;return new Promise(function(_0x416d2d,_0xa4eb84){return db[_0x577c('0x19')][_0x577c('0x28')](_0x3408f2[_0x577c('0x29')],{'raw':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x1d')]||null:null,'attributes':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x1e')]||null:null,'limit':_0x3408f2[_0x577c('0x1b')]?_0x3408f2[_0x577c('0x1b')][_0x577c('0x2a')]||null:null})[_0x577c('0x22')](function(_0x2d6327){logger['info'](_0x577c('0x27'),_0x3408f2);logger['debug']('UpdateVoiceQueueReport',_0x3408f2,JSON[_0x577c('0x24')](_0x2d6327));_0x416d2d(_0x2d6327);})['catch'](function(_0x57399c){logger['error']('UpdateVoiceQueueReport',_0x57399c[_0x577c('0x16')],_0x3408f2);_0xa4eb84(_0x268c5c[_0x577c('0x13')](0x1f4,_0x57399c[_0x577c('0x16')]));});});};
\ No newline at end of file
+var _0x02d3=['GetVoiceQueueReport','VoiceQueueReport','options','where','attributes','limit','include','map','model','CreateVoiceQueueReport','create','raw','body','UpdateVoiceQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./voiceQueueReport.socket','register','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x02d3,0x134));var _0x302d=function(_0x5c9067,_0x23965f){_0x5c9067=_0x5c9067-0x0;var _0x3bbc4f=_0x02d3[_0x5c9067];return _0x3bbc4f;};'use strict';var _=require(_0x302d('0x0'));var util=require(_0x302d('0x1'));var moment=require(_0x302d('0x2'));var BPromise=require(_0x302d('0x3'));var rs=require(_0x302d('0x4'));var fs=require('fs');var Redis=require(_0x302d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x302d('0x6'));var logger=require('../../config/logger')(_0x302d('0x7'));var config=require(_0x302d('0x8'));var jayson=require(_0x302d('0x9'));var client=jayson[_0x302d('0xa')][_0x302d('0xb')]({'port':0x232a});config[_0x302d('0xc')]=_['defaults'](config[_0x302d('0xc')],{'host':_0x302d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x302d('0xe'))[_0x302d('0xf')](socket);function respondWithRpcPromise(_0x1250a2,_0x1035b2,_0x2db872){return new BPromise(function(_0x269676,_0x306b70){return client[_0x302d('0x10')](_0x1250a2,_0x2db872)[_0x302d('0x11')](function(_0x419d47){logger['info'](_0x302d('0x12'),_0x1035b2,_0x302d('0x13'));logger[_0x302d('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x1035b2,'request\x20sent',JSON[_0x302d('0x15')](_0x419d47));if(_0x419d47[_0x302d('0x16')]){if(_0x419d47[_0x302d('0x16')][_0x302d('0x17')]===0x1f4){logger[_0x302d('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0x1035b2,_0x419d47['error'][_0x302d('0x18')]);return _0x306b70(_0x419d47['error'][_0x302d('0x18')]);}logger[_0x302d('0x16')](_0x302d('0x12'),_0x1035b2,_0x419d47[_0x302d('0x16')][_0x302d('0x18')]);return _0x269676(_0x419d47[_0x302d('0x16')]['message']);}else{logger[_0x302d('0x19')](_0x302d('0x12'),_0x1035b2,_0x302d('0x13'));_0x269676(_0x419d47[_0x302d('0x1a')][_0x302d('0x18')]);}})[_0x302d('0x1b')](function(_0x3b3b1f){logger[_0x302d('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0x1035b2,_0x3b3b1f);_0x306b70(_0x3b3b1f);});});}exports[_0x302d('0x1c')]=function(_0x662c52){var _0x3af4d3=this;return new Promise(function(_0x298a93,_0x3d1026){return db[_0x302d('0x1d')]['findAll']({'raw':_0x662c52['options']?_0x662c52[_0x302d('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x662c52[_0x302d('0x1e')]?_0x662c52[_0x302d('0x1e')][_0x302d('0x1f')]||null:null,'attributes':_0x662c52[_0x302d('0x1e')]?_0x662c52[_0x302d('0x1e')][_0x302d('0x20')]||null:null,'limit':_0x662c52[_0x302d('0x1e')]?_0x662c52[_0x302d('0x1e')][_0x302d('0x21')]||null:null,'include':_0x662c52[_0x302d('0x1e')]?_0x662c52[_0x302d('0x1e')][_0x302d('0x22')]?_[_0x302d('0x23')](_0x662c52[_0x302d('0x1e')]['include'],function(_0x5eb25a){return{'model':db[_0x5eb25a[_0x302d('0x24')]],'as':_0x5eb25a['as'],'attributes':_0x5eb25a[_0x302d('0x20')],'include':_0x5eb25a[_0x302d('0x22')]?_[_0x302d('0x23')](_0x5eb25a[_0x302d('0x22')],function(_0x26513c){return{'model':db[_0x26513c[_0x302d('0x24')]],'as':_0x26513c['as'],'attributes':_0x26513c[_0x302d('0x20')],'include':_0x26513c['include']?_[_0x302d('0x23')](_0x26513c[_0x302d('0x22')],function(_0x524e9d){return{'model':db[_0x524e9d[_0x302d('0x24')]],'as':_0x524e9d['as'],'attributes':_0x524e9d[_0x302d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x302d('0x11')](function(_0x44e5d2){logger[_0x302d('0x19')](_0x302d('0x1c'),_0x662c52);logger[_0x302d('0x14')](_0x302d('0x1c'),_0x662c52,JSON['stringify'](_0x44e5d2));_0x298a93(_0x44e5d2);})[_0x302d('0x1b')](function(_0x104cf4){logger[_0x302d('0x16')](_0x302d('0x1c'),_0x104cf4[_0x302d('0x18')],_0x662c52);_0x3d1026(_0x3af4d3[_0x302d('0x16')](0x1f4,_0x104cf4[_0x302d('0x18')]));});});};exports[_0x302d('0x25')]=function(_0x14c0ce){var _0x4007ba=this;return new Promise(function(_0x4b9002,_0x53c975){return db[_0x302d('0x1d')][_0x302d('0x26')](_0x14c0ce['body'],{'raw':_0x14c0ce[_0x302d('0x1e')]?_0x14c0ce[_0x302d('0x1e')][_0x302d('0x27')]===undefined?!![]:![]:!![]})[_0x302d('0x11')](function(_0x51b04e){logger[_0x302d('0x19')]('CreateVoiceQueueReport',_0x14c0ce);logger[_0x302d('0x14')](_0x302d('0x25'),_0x14c0ce,JSON[_0x302d('0x15')](_0x51b04e));_0x4b9002(_0x51b04e);})[_0x302d('0x1b')](function(_0x5e6b95){logger[_0x302d('0x16')](_0x302d('0x25'),_0x5e6b95['message'],_0x14c0ce);_0x53c975(_0x4007ba[_0x302d('0x16')](0x1f4,_0x5e6b95[_0x302d('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x3d7dda){var _0x17ad47=this;return new Promise(function(_0x3aaf34,_0x1b302f){return db[_0x302d('0x1d')]['update'](_0x3d7dda[_0x302d('0x28')],{'raw':_0x3d7dda[_0x302d('0x1e')]?_0x3d7dda[_0x302d('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d7dda[_0x302d('0x1e')]?_0x3d7dda['options'][_0x302d('0x1f')]||null:null,'attributes':_0x3d7dda['options']?_0x3d7dda[_0x302d('0x1e')]['attributes']||null:null,'limit':_0x3d7dda[_0x302d('0x1e')]?_0x3d7dda[_0x302d('0x1e')][_0x302d('0x21')]||null:null})[_0x302d('0x11')](function(_0x14c588){logger[_0x302d('0x19')](_0x302d('0x29'),_0x3d7dda);logger[_0x302d('0x14')](_0x302d('0x29'),_0x3d7dda,JSON[_0x302d('0x15')](_0x14c588));_0x3aaf34(_0x14c588);})['catch'](function(_0x46a612){logger['error'](_0x302d('0x29'),_0x46a612[_0x302d('0x18')],_0x3d7dda);_0x1b302f(_0x17ad47[_0x302d('0x16')](0x1f4,_0x46a612[_0x302d('0x18')]));});});};
\ No newline at end of file
index 7a4fbde..3c1e1e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['save','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x171a8a,_0x2c6407){var _0x178cbc=function(_0x17cec0){while(--_0x17cec0){_0x171a8a['push'](_0x171a8a['shift']());}};_0x178cbc(++_0x2c6407);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x17660f,_0x1fa64b){_0x17660f=_0x17660f-0x0;var _0x277c7d=_0xdbf5[_0x17660f];return _0x277c7d;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x5dbf('0x0'),'remove','update'];function createListener(_0x19d2b4,_0xfd972b){return function(_0x32ec6b){_0xfd972b[_0x5dbf('0x1')](_0x19d2b4,_0x32ec6b);};}function removeListener(_0x38b629,_0x1a1ea9){return function(){VoiceQueueReportEvents[_0x5dbf('0x2')](_0x38b629,_0x1a1ea9);};}exports[_0x5dbf('0x3')]=function(_0x3f8628){for(var _0x3f8222=0x0,_0x209b7d=events[_0x5dbf('0x4')];_0x3f8222<_0x209b7d;_0x3f8222++){var _0x93e657=events[_0x3f8222];var _0x52b039=createListener(_0x5dbf('0x5')+_0x93e657,_0x3f8628);VoiceQueueReportEvents['on'](_0x93e657,_0x52b039);}};
\ No newline at end of file
+var _0x6726=['length','voiceQueueReport:','save','remove','emit','removeListener','register'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0x6726,0xdb));var _0x6672=function(_0x56a871,_0x18b7fe){_0x56a871=_0x56a871-0x0;var _0x124954=_0x6726[_0x56a871];return _0x124954;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x6672('0x0'),_0x6672('0x1'),'update'];function createListener(_0x3a0005,_0xaa1168){return function(_0x5cdb03){_0xaa1168[_0x6672('0x2')](_0x3a0005,_0x5cdb03);};}function removeListener(_0x5bf86c,_0x32e5c6){return function(){VoiceQueueReportEvents[_0x6672('0x3')](_0x5bf86c,_0x32e5c6);};}exports[_0x6672('0x4')]=function(_0x40ba7e){for(var _0x5701b9=0x0,_0xa1d3b7=events[_0x6672('0x5')];_0x5701b9<_0xa1d3b7;_0x5701b9++){var _0x263321=events[_0x5701b9];var _0x379b90=createListener(_0x6672('0x6')+_0x263321,_0x40ba7e);VoiceQueueReportEvents['on'](_0x263321,_0x379b90);}};
\ No newline at end of file
index 936f11d..a21fd6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1753=['/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index'];(function(_0x1322b1,_0x237be1){var _0x5ca30a=function(_0x20e37a){while(--_0x20e37a){_0x1322b1['push'](_0x1322b1['shift']());}};_0x5ca30a(++_0x237be1);}(_0x1753,0x86));var _0x3175=function(_0xb5c522,_0x4b2c88){_0xb5c522=_0xb5c522-0x0;var _0x47da31=_0x1753[_0xb5c522];return _0x47da31;};'use strict';var multer=require(_0x3175('0x0'));var util=require('util');var path=require(_0x3175('0x1'));var timeout=require(_0x3175('0x2'));var express=require(_0x3175('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3175('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3175('0x5'));var controller=require(_0x3175('0x6'));router[_0x3175('0x7')]('/',auth[_0x3175('0x8')](),controller[_0x3175('0x9')]);router[_0x3175('0x7')](_0x3175('0xa'),auth[_0x3175('0x8')](),controller[_0x3175('0xb')]);router['post']('/',auth[_0x3175('0x8')](),controller[_0x3175('0xc')]);router[_0x3175('0xd')](_0x3175('0xa'),auth[_0x3175('0x8')](),controller[_0x3175('0xe')]);router[_0x3175('0xf')](_0x3175('0xa'),auth['isAuthenticated'](),controller[_0x3175('0x10')]);module[_0x3175('0x11')]=router;
\ No newline at end of file
+var _0x2cda=['post','create','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated','get','/:id','show'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x2cda,0xc4));var _0xa2cd=function(_0x4cbbed,_0x2c164e){_0x4cbbed=_0x4cbbed-0x0;var _0x59e203=_0x2cda[_0x4cbbed];return _0x59e203;};'use strict';var multer=require(_0xa2cd('0x0'));var util=require(_0xa2cd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa2cd('0x2'));var router=express['Router']();var fs_extra=require(_0xa2cd('0x3'));var auth=require(_0xa2cd('0x4'));var interaction=require(_0xa2cd('0x5'));var config=require(_0xa2cd('0x6'));var controller=require(_0xa2cd('0x7'));router['get']('/',auth[_0xa2cd('0x8')](),controller['index']);router[_0xa2cd('0x9')](_0xa2cd('0xa'),auth[_0xa2cd('0x8')](),controller[_0xa2cd('0xb')]);router[_0xa2cd('0xc')]('/',auth[_0xa2cd('0x8')](),controller[_0xa2cd('0xd')]);router['put'](_0xa2cd('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xa2cd('0xe')](_0xa2cd('0xa'),auth['isAuthenticated'](),controller[_0xa2cd('0xf')]);module['exports']=router;
\ No newline at end of file
index 75648b7..c36de6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5aa=['STRING','DATE','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment','exports'];(function(_0x51ed7d,_0x5cb489){var _0x397025=function(_0x52fa5f){while(--_0x52fa5f){_0x51ed7d['push'](_0x51ed7d['shift']());}};_0x397025(++_0x5cb489);}(_0xe5aa,0x1bf));var _0xae5a=function(_0x154c9c,_0x141160){_0x154c9c=_0x154c9c-0x0;var _0x69c0ef=_0xe5aa[_0x154c9c];return _0x69c0ef;};'use strict';var Sequelize=require(_0xae5a('0x0'));var moment=require(_0xae5a('0x1'));module[_0xae5a('0x2')]={'time':{'type':Sequelize[_0xae5a('0x3')]},'callid':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xae5a('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xae5a('0x4')],'allowNull':![],'defaultValue':Sequelize['literal'](_0xae5a('0x5'))}};
\ No newline at end of file
+var _0xbc10=['DATE','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','STRING'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xbc10,0xf2));var _0x0bc1=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xbc10[_0x37bd26];return _0xe83dc4;};'use strict';var Sequelize=require(_0x0bc1('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize[_0x0bc1('0x1')]},'callid':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x0bc1('0x1')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x0bc1('0x2')],'allowNull':![],'defaultValue':Sequelize['literal'](_0x0bc1('0x3'))}};
\ No newline at end of file
index e9cec63..89d33c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfb7=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','includeAll','options','find','create','body','catch','params','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','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','end','error','stack','name','send','map','VoiceQueuesLog','rawAttributes','fieldName'];(function(_0x45620c,_0x43d90f){var _0x24c85e=function(_0x315461){while(--_0x315461){_0x45620c['push'](_0x45620c['shift']());}};_0x24c85e(++_0x43d90f);}(_0xdfb7,0x6a));var _0x7dfb=function(_0x3feee2,_0x1fdf65){_0x3feee2=_0x3feee2-0x0;var _0x127ee9=_0xdfb7[_0x3feee2];return _0x127ee9;};'use strict';var emlformat=require(_0x7dfb('0x0'));var rimraf=require(_0x7dfb('0x1'));var zipdir=require(_0x7dfb('0x2'));var jsonpatch=require(_0x7dfb('0x3'));var rp=require(_0x7dfb('0x4'));var moment=require(_0x7dfb('0x5'));var BPromise=require(_0x7dfb('0x6'));var Mustache=require(_0x7dfb('0x7'));var util=require(_0x7dfb('0x8'));var path=require(_0x7dfb('0x9'));var sox=require(_0x7dfb('0xa'));var csv=require('to-csv');var ejs=require(_0x7dfb('0xb'));var fs=require('fs');var fs_extra=require(_0x7dfb('0xc'));var _=require(_0x7dfb('0xd'));var squel=require(_0x7dfb('0xe'));var crypto=require(_0x7dfb('0xf'));var jsforce=require(_0x7dfb('0x10'));var deskjs=require(_0x7dfb('0x11'));var toCsv=require('to-csv');var querystring=require(_0x7dfb('0x12'));var Papa=require('papaparse');var Redis=require(_0x7dfb('0x13'));var authService=require(_0x7dfb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x7dfb('0x15'));var hardwareService=require(_0x7dfb('0x16'));var logger=require('../../config/logger')(_0x7dfb('0x17'));var utils=require(_0x7dfb('0x18'));var config=require(_0x7dfb('0x19'));var licenseUtil=require(_0x7dfb('0x1a'));var db=require(_0x7dfb('0x1b'))['db'];function respondWithStatusCode(_0x2b0a47,_0x5b4379){_0x5b4379=_0x5b4379||0xcc;return function(_0x4500e6){if(_0x4500e6){return _0x2b0a47[_0x7dfb('0x1c')](_0x5b4379);}return _0x2b0a47[_0x7dfb('0x1d')](_0x5b4379)['end']();};}function respondWithResult(_0xd9d2,_0x3f65a5){_0x3f65a5=_0x3f65a5||0xc8;return function(_0x10a117){if(_0x10a117){return _0xd9d2['status'](_0x3f65a5)[_0x7dfb('0x1e')](_0x10a117);}};}function respondWithFilteredResult(_0x5647d9,_0x5b6b80){return function(_0x14b40c){if(_0x14b40c){var _0x140b68=typeof _0x5b6b80[_0x7dfb('0x1f')]===_0x7dfb('0x20')&&typeof _0x5b6b80[_0x7dfb('0x21')]===_0x7dfb('0x20');var _0x4c735a=_0x14b40c[_0x7dfb('0x22')];var _0x418d1d=_0x140b68?0x0:_0x5b6b80[_0x7dfb('0x1f')];var _0x4aa552=_0x140b68?_0x14b40c['count']:_0x5b6b80[_0x7dfb('0x1f')]+_0x5b6b80['limit'];var _0x144c40;if(_0x4aa552>=_0x4c735a){_0x4aa552=_0x4c735a;_0x144c40=0xc8;}else{_0x144c40=0xce;}_0x5647d9[_0x7dfb('0x1d')](_0x144c40);return _0x5647d9[_0x7dfb('0x23')]('Content-Range',_0x418d1d+'-'+_0x4aa552+'/'+_0x4c735a)[_0x7dfb('0x1e')](_0x14b40c);}return null;};}function patchUpdates(_0x5983a5){return function(_0x184bc6){try{jsonpatch[_0x7dfb('0x24')](_0x184bc6,_0x5983a5,!![]);}catch(_0x389510){return BPromise[_0x7dfb('0x25')](_0x389510);}return _0x184bc6['save']();};}function saveUpdates(_0x53235a,_0x1c6acd){return function(_0x494b88){if(_0x494b88){return _0x494b88[_0x7dfb('0x26')](_0x53235a)[_0x7dfb('0x27')](function(_0x4e43c1){return _0x4e43c1;});}return null;};}function removeEntity(_0x40d2e6,_0x44a1d9){return function(_0x41c868){if(_0x41c868){return _0x41c868[_0x7dfb('0x28')]()[_0x7dfb('0x27')](function(){_0x40d2e6[_0x7dfb('0x1d')](0xcc)[_0x7dfb('0x29')]();});}};}function handleEntityNotFound(_0x263d81,_0x23cb2f){return function(_0x36a6db){if(!_0x36a6db){_0x263d81[_0x7dfb('0x1c')](0x194);}return _0x36a6db;};}function handleError(_0xb1c39b,_0x1f12fb){_0x1f12fb=_0x1f12fb||0x1f4;return function(_0x360aab){logger[_0x7dfb('0x2a')](_0x360aab[_0x7dfb('0x2b')]);if(_0x360aab['name']){delete _0x360aab[_0x7dfb('0x2c')];}_0xb1c39b['status'](_0x1f12fb)[_0x7dfb('0x2d')](_0x360aab);};}exports['index']=function(_0x28d048,_0x1275fc){var _0x9a7380={},_0x301c67={},_0x3569b8={'count':0x0,'rows':[]};var _0x43f6cd=_[_0x7dfb('0x2e')](db[_0x7dfb('0x2f')][_0x7dfb('0x30')],function(_0x1bd569){return{'name':_0x1bd569[_0x7dfb('0x31')],'type':_0x1bd569[_0x7dfb('0x32')][_0x7dfb('0x33')]};});_0x301c67[_0x7dfb('0x34')]=_[_0x7dfb('0x2e')](_0x43f6cd,_0x7dfb('0x2c'));_0x301c67[_0x7dfb('0x35')]=_[_0x7dfb('0x36')](_0x28d048[_0x7dfb('0x35')]);_0x301c67[_0x7dfb('0x37')]=_[_0x7dfb('0x38')](_0x301c67[_0x7dfb('0x34')],_0x301c67[_0x7dfb('0x35')]);_0x9a7380[_0x7dfb('0x39')]=_['intersection'](_0x301c67[_0x7dfb('0x34')],qs[_0x7dfb('0x3a')](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x3a')]));_0x9a7380[_0x7dfb('0x39')]=_0x9a7380[_0x7dfb('0x39')][_0x7dfb('0x3b')]?_0x9a7380['attributes']:_0x301c67[_0x7dfb('0x34')];if(!_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x3c')]('nolimit')){_0x9a7380[_0x7dfb('0x21')]=qs['limit'](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x21')]);_0x9a7380[_0x7dfb('0x1f')]=qs['offset'](_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x1f')]);}_0x9a7380[_0x7dfb('0x3d')]=qs[_0x7dfb('0x3e')](_0x28d048['query']['sort']);_0x9a7380[_0x7dfb('0x3f')]=qs['filters'](_[_0x7dfb('0x40')](_0x28d048[_0x7dfb('0x35')],_0x301c67[_0x7dfb('0x37')]),_0x43f6cd);if(_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x41')]){_0x9a7380[_0x7dfb('0x3f')]=_[_0x7dfb('0x42')](_0x9a7380['where'],{'$or':_['map'](_0x43f6cd,function(_0x1886b4){if(_0x1886b4[_0x7dfb('0x32')]!==_0x7dfb('0x43')){var _0x2e0b55={};_0x2e0b55[_0x1886b4['name']]={'$like':'%'+_0x28d048[_0x7dfb('0x35')][_0x7dfb('0x41')]+'%'};return _0x2e0b55;}})});}_0x9a7380=_[_0x7dfb('0x42')]({},_0x9a7380,_0x28d048['options']);var _0x48b5b2={'where':_0x9a7380[_0x7dfb('0x3f')]};return db['VoiceQueuesLog']['count'](_0x48b5b2)[_0x7dfb('0x27')](function(_0xef5920){_0x3569b8[_0x7dfb('0x22')]=_0xef5920;if(_0x28d048[_0x7dfb('0x35')]['includeAll']){_0x9a7380[_0x7dfb('0x44')]=[{'all':!![]}];}return db[_0x7dfb('0x2f')][_0x7dfb('0x45')](_0x9a7380);})[_0x7dfb('0x27')](function(_0x5c4159){_0x3569b8['rows']=_0x5c4159;return _0x3569b8;})['then'](respondWithFilteredResult(_0x1275fc,_0x9a7380))['catch'](handleError(_0x1275fc,null));};exports[_0x7dfb('0x46')]=function(_0x3650cb,_0x4a7cb2){var _0x401361={'raw':!![],'where':{'id':_0x3650cb['params']['id']}},_0x467e60={};_0x467e60[_0x7dfb('0x34')]=_[_0x7dfb('0x36')](db[_0x7dfb('0x2f')][_0x7dfb('0x30')]);_0x467e60[_0x7dfb('0x35')]=_['keys'](_0x3650cb[_0x7dfb('0x35')]);_0x467e60[_0x7dfb('0x37')]=_[_0x7dfb('0x38')](_0x467e60[_0x7dfb('0x34')],_0x467e60[_0x7dfb('0x35')]);_0x401361[_0x7dfb('0x39')]=_['intersection'](_0x467e60[_0x7dfb('0x34')],qs['fields'](_0x3650cb[_0x7dfb('0x35')][_0x7dfb('0x3a')]));_0x401361['attributes']=_0x401361[_0x7dfb('0x39')][_0x7dfb('0x3b')]?_0x401361[_0x7dfb('0x39')]:_0x467e60[_0x7dfb('0x34')];if(_0x3650cb[_0x7dfb('0x35')][_0x7dfb('0x47')]){_0x401361[_0x7dfb('0x44')]=[{'all':!![]}];}_0x401361=_[_0x7dfb('0x42')]({},_0x401361,_0x3650cb[_0x7dfb('0x48')]);return db['VoiceQueuesLog'][_0x7dfb('0x49')](_0x401361)[_0x7dfb('0x27')](handleEntityNotFound(_0x4a7cb2,null))[_0x7dfb('0x27')](respondWithResult(_0x4a7cb2,null))['catch'](handleError(_0x4a7cb2,null));};exports['create']=function(_0x1ecc4c,_0x5a3b38){return db['VoiceQueuesLog'][_0x7dfb('0x4a')](_0x1ecc4c[_0x7dfb('0x4b')],{})[_0x7dfb('0x27')](respondWithResult(_0x5a3b38,0xc9))[_0x7dfb('0x4c')](handleError(_0x5a3b38,null));};exports[_0x7dfb('0x26')]=function(_0x471f88,_0x3f3653){if(_0x471f88['body']['id']){delete _0x471f88['body']['id'];}return db[_0x7dfb('0x2f')][_0x7dfb('0x49')]({'where':{'id':_0x471f88[_0x7dfb('0x4d')]['id']}})[_0x7dfb('0x27')](handleEntityNotFound(_0x3f3653,null))[_0x7dfb('0x27')](saveUpdates(_0x471f88['body'],null))[_0x7dfb('0x27')](respondWithResult(_0x3f3653,null))[_0x7dfb('0x4c')](handleError(_0x3f3653,null));};exports['destroy']=function(_0x1d06ea,_0x25a447){return db[_0x7dfb('0x2f')][_0x7dfb('0x49')]({'where':{'id':_0x1d06ea[_0x7dfb('0x4d')]['id']}})[_0x7dfb('0x27')](handleEntityNotFound(_0x25a447,null))['then'](removeEntity(_0x25a447,null))[_0x7dfb('0x4c')](handleError(_0x25a447,null));};
\ No newline at end of file
+var _0x3426=['keys','length','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','end','status','json','limit','offset','set','Content-Range','reject','save','then','destroy','sendStatus','error','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','query','intersection','fields','attributes','model','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','params'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x3426,0x1e9));var _0x6342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3426[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6342('0x0'));var rimraf=require(_0x6342('0x1'));var zipdir=require(_0x6342('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6342('0x3'));var moment=require(_0x6342('0x4'));var BPromise=require(_0x6342('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6342('0x6'));var sox=require(_0x6342('0x7'));var csv=require('to-csv');var ejs=require(_0x6342('0x8'));var fs=require('fs');var fs_extra=require(_0x6342('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6342('0xa'));var jsforce=require(_0x6342('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x6342('0xc'));var querystring=require(_0x6342('0xd'));var Papa=require(_0x6342('0xe'));var Redis=require(_0x6342('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6342('0x10'));var as=require(_0x6342('0x11'));var hardwareService=require(_0x6342('0x12'));var logger=require(_0x6342('0x13'))(_0x6342('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6342('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b3270,_0x3cb483){_0x3cb483=_0x3cb483||0xcc;return function(_0x1b86df){if(_0x1b86df){return _0x3b3270['sendStatus'](_0x3cb483);}return _0x3b3270['status'](_0x3cb483)[_0x6342('0x16')]();};}function respondWithResult(_0x1b2957,_0x4d7617){_0x4d7617=_0x4d7617||0xc8;return function(_0x3fbc0c){if(_0x3fbc0c){return _0x1b2957[_0x6342('0x17')](_0x4d7617)[_0x6342('0x18')](_0x3fbc0c);}};}function respondWithFilteredResult(_0x27251e,_0x39c8dd){return function(_0x5af826){if(_0x5af826){var _0x167a01=typeof _0x39c8dd['offset']==='undefined'&&typeof _0x39c8dd[_0x6342('0x19')]==='undefined';var _0x3d58b3=_0x5af826['count'];var _0x41e16d=_0x167a01?0x0:_0x39c8dd[_0x6342('0x1a')];var _0x1851f4=_0x167a01?_0x5af826['count']:_0x39c8dd[_0x6342('0x1a')]+_0x39c8dd[_0x6342('0x19')];var _0x3cc8cb;if(_0x1851f4>=_0x3d58b3){_0x1851f4=_0x3d58b3;_0x3cc8cb=0xc8;}else{_0x3cc8cb=0xce;}_0x27251e[_0x6342('0x17')](_0x3cc8cb);return _0x27251e[_0x6342('0x1b')](_0x6342('0x1c'),_0x41e16d+'-'+_0x1851f4+'/'+_0x3d58b3)[_0x6342('0x18')](_0x5af826);}return null;};}function patchUpdates(_0x5a9c30){return function(_0x482f7e){try{jsonpatch['apply'](_0x482f7e,_0x5a9c30,!![]);}catch(_0x3d87ee){return BPromise[_0x6342('0x1d')](_0x3d87ee);}return _0x482f7e[_0x6342('0x1e')]();};}function saveUpdates(_0x322aca,_0x1955a5){return function(_0x47348a){if(_0x47348a){return _0x47348a['update'](_0x322aca)[_0x6342('0x1f')](function(_0x3c9087){return _0x3c9087;});}return null;};}function removeEntity(_0x3dcbc0,_0x43a6e8){return function(_0x30add3){if(_0x30add3){return _0x30add3[_0x6342('0x20')]()[_0x6342('0x1f')](function(){_0x3dcbc0['status'](0xcc)[_0x6342('0x16')]();});}};}function handleEntityNotFound(_0x4e59b3,_0xcf31f6){return function(_0x46a96f){if(!_0x46a96f){_0x4e59b3[_0x6342('0x21')](0x194);}return _0x46a96f;};}function handleError(_0x43b9bd,_0x4f4fd3){_0x4f4fd3=_0x4f4fd3||0x1f4;return function(_0x570c23){logger[_0x6342('0x22')](_0x570c23['stack']);if(_0x570c23['name']){delete _0x570c23[_0x6342('0x23')];}_0x43b9bd[_0x6342('0x17')](_0x4f4fd3)[_0x6342('0x24')](_0x570c23);};}exports[_0x6342('0x25')]=function(_0x1c208a,_0x1d1936){var _0x74f3c5={},_0xed5394={},_0x1cf49b={'count':0x0,'rows':[]};var _0x5d3679=_[_0x6342('0x26')](db[_0x6342('0x27')][_0x6342('0x28')],function(_0x3b6eef){return{'name':_0x3b6eef[_0x6342('0x29')],'type':_0x3b6eef[_0x6342('0x2a')][_0x6342('0x2b')]};});_0xed5394['model']=_['map'](_0x5d3679,_0x6342('0x23'));_0xed5394[_0x6342('0x2c')]=_['keys'](_0x1c208a['query']);_0xed5394['filters']=_[_0x6342('0x2d')](_0xed5394['model'],_0xed5394[_0x6342('0x2c')]);_0x74f3c5['attributes']=_[_0x6342('0x2d')](_0xed5394['model'],qs[_0x6342('0x2e')](_0x1c208a[_0x6342('0x2c')][_0x6342('0x2e')]));_0x74f3c5[_0x6342('0x2f')]=_0x74f3c5[_0x6342('0x2f')]['length']?_0x74f3c5['attributes']:_0xed5394[_0x6342('0x30')];if(!_0x1c208a['query']['hasOwnProperty']('nolimit')){_0x74f3c5[_0x6342('0x19')]=qs[_0x6342('0x19')](_0x1c208a['query'][_0x6342('0x19')]);_0x74f3c5[_0x6342('0x1a')]=qs['offset'](_0x1c208a[_0x6342('0x2c')][_0x6342('0x1a')]);}_0x74f3c5['order']=qs['sort'](_0x1c208a[_0x6342('0x2c')][_0x6342('0x31')]);_0x74f3c5[_0x6342('0x32')]=qs[_0x6342('0x33')](_[_0x6342('0x34')](_0x1c208a[_0x6342('0x2c')],_0xed5394['filters']),_0x5d3679);if(_0x1c208a[_0x6342('0x2c')][_0x6342('0x35')]){_0x74f3c5[_0x6342('0x32')]=_[_0x6342('0x36')](_0x74f3c5['where'],{'$or':_[_0x6342('0x26')](_0x5d3679,function(_0x5eb7c9){if(_0x5eb7c9['type']!==_0x6342('0x37')){var _0x551976={};_0x551976[_0x5eb7c9[_0x6342('0x23')]]={'$like':'%'+_0x1c208a['query'][_0x6342('0x35')]+'%'};return _0x551976;}})});}_0x74f3c5=_[_0x6342('0x36')]({},_0x74f3c5,_0x1c208a[_0x6342('0x38')]);var _0x1a289a={'where':_0x74f3c5[_0x6342('0x32')]};return db[_0x6342('0x27')][_0x6342('0x39')](_0x1a289a)[_0x6342('0x1f')](function(_0x36f3a6){_0x1cf49b[_0x6342('0x39')]=_0x36f3a6;if(_0x1c208a[_0x6342('0x2c')][_0x6342('0x3a')]){_0x74f3c5[_0x6342('0x3b')]=[{'all':!![]}];}return db[_0x6342('0x27')]['findAll'](_0x74f3c5);})['then'](function(_0x39ebc7){_0x1cf49b[_0x6342('0x3c')]=_0x39ebc7;return _0x1cf49b;})['then'](respondWithFilteredResult(_0x1d1936,_0x74f3c5))[_0x6342('0x3d')](handleError(_0x1d1936,null));};exports['show']=function(_0x1550c3,_0x51893b){var _0x1ac945={'raw':!![],'where':{'id':_0x1550c3[_0x6342('0x3e')]['id']}},_0x5e3021={};_0x5e3021[_0x6342('0x30')]=_[_0x6342('0x3f')](db[_0x6342('0x27')][_0x6342('0x28')]);_0x5e3021[_0x6342('0x2c')]=_[_0x6342('0x3f')](_0x1550c3[_0x6342('0x2c')]);_0x5e3021[_0x6342('0x33')]=_[_0x6342('0x2d')](_0x5e3021['model'],_0x5e3021['query']);_0x1ac945[_0x6342('0x2f')]=_[_0x6342('0x2d')](_0x5e3021[_0x6342('0x30')],qs[_0x6342('0x2e')](_0x1550c3[_0x6342('0x2c')][_0x6342('0x2e')]));_0x1ac945[_0x6342('0x2f')]=_0x1ac945['attributes'][_0x6342('0x40')]?_0x1ac945[_0x6342('0x2f')]:_0x5e3021[_0x6342('0x30')];if(_0x1550c3[_0x6342('0x2c')]['includeAll']){_0x1ac945[_0x6342('0x3b')]=[{'all':!![]}];}_0x1ac945=_[_0x6342('0x36')]({},_0x1ac945,_0x1550c3[_0x6342('0x38')]);return db[_0x6342('0x27')][_0x6342('0x41')](_0x1ac945)[_0x6342('0x1f')](handleEntityNotFound(_0x51893b,null))[_0x6342('0x1f')](respondWithResult(_0x51893b,null))[_0x6342('0x3d')](handleError(_0x51893b,null));};exports[_0x6342('0x42')]=function(_0x114172,_0x3c4847){return db[_0x6342('0x27')]['create'](_0x114172[_0x6342('0x43')],{})['then'](respondWithResult(_0x3c4847,0xc9))['catch'](handleError(_0x3c4847,null));};exports[_0x6342('0x44')]=function(_0x3bd23f,_0x184bba){if(_0x3bd23f[_0x6342('0x43')]['id']){delete _0x3bd23f[_0x6342('0x43')]['id'];}return db[_0x6342('0x27')][_0x6342('0x41')]({'where':{'id':_0x3bd23f['params']['id']}})['then'](handleEntityNotFound(_0x184bba,null))[_0x6342('0x1f')](saveUpdates(_0x3bd23f[_0x6342('0x43')],null))['then'](respondWithResult(_0x184bba,null))[_0x6342('0x3d')](handleError(_0x184bba,null));};exports[_0x6342('0x20')]=function(_0x139ba4,_0x3b90d3){return db[_0x6342('0x27')][_0x6342('0x41')]({'where':{'id':_0x139ba4[_0x6342('0x3e')]['id']}})[_0x6342('0x1f')](handleEntityNotFound(_0x3b90d3,null))[_0x6342('0x1f')](removeEntity(_0x3b90d3,null))[_0x6342('0x3d')](handleError(_0x3b90d3,null));};
\ No newline at end of file
index d55c3ec..16f5ab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0993=['dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event'];(function(_0x9a7ea6,_0x1807a2){var _0x1c2040=function(_0x55b7ec){while(--_0x55b7ec){_0x9a7ea6['push'](_0x9a7ea6['shift']());}};_0x1c2040(++_0x1807a2);}(_0x0993,0x13c));var _0x3099=function(_0x4e5f73,_0x5bc994){_0x4e5f73=_0x4e5f73-0x0;var _0x382813=_0x0993[_0x4e5f73];return _0x382813;};'use strict';var _=require(_0x3099('0x0'));var util=require(_0x3099('0x1'));var logger=require(_0x3099('0x2'))(_0x3099('0x3'));var moment=require(_0x3099('0x4'));var BPromise=require(_0x3099('0x5'));var rp=require(_0x3099('0x6'));var fs=require('fs');var path=require(_0x3099('0x7'));var rimraf=require('rimraf');var config=require(_0x3099('0x8'));var attributes=require(_0x3099('0x9'));module[_0x3099('0xa')]=function(_0x562d2c,_0x479e3a){return _0x562d2c['define'](_0x3099('0xb'),attributes,{'tableName':_0x3099('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x3099('0xd'),_0x3099('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x6d5e=['./voiceQueuesLog.attributes','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2e4457,_0xcd223e){var _0x151346=function(_0x3932d6){while(--_0x3932d6){_0x2e4457['push'](_0x2e4457['shift']());}};_0x151346(++_0xcd223e);}(_0x6d5e,0xf4));var _0xe6d5=function(_0x4a1958,_0xcfbfe1){_0x4a1958=_0x4a1958-0x0;var _0x1006e8=_0x6d5e[_0x4a1958];return _0x1006e8;};'use strict';var _=require(_0xe6d5('0x0'));var util=require(_0xe6d5('0x1'));var logger=require('../../config/logger')(_0xe6d5('0x2'));var moment=require(_0xe6d5('0x3'));var BPromise=require(_0xe6d5('0x4'));var rp=require(_0xe6d5('0x5'));var fs=require('fs');var path=require(_0xe6d5('0x6'));var rimraf=require('rimraf');var config=require(_0xe6d5('0x7'));var attributes=require(_0xe6d5('0x8'));module['exports']=function(_0x3ed99b,_0x47c67b){return _0x3ed99b[_0xe6d5('0x9')](_0xe6d5('0xa'),attributes,{'tableName':_0xe6d5('0xb'),'paranoid':![],'indexes':[{'name':_0xe6d5('0xc'),'fields':[_0xe6d5('0xd'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index e84c5bb..bada2d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa8=['then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x22a7c5,_0x5e21dd){var _0x694018=function(_0x7dca46){while(--_0x7dca46){_0x22a7c5['push'](_0x22a7c5['shift']());}};_0x694018(++_0x5e21dd);}(_0x1aa8,0x197));var _0x81aa=function(_0x12717e,_0x2d2dc2){_0x12717e=_0x12717e-0x0;var _0x3b494d=_0x1aa8[_0x12717e];return _0x3b494d;};'use strict';var _=require(_0x81aa('0x0'));var util=require('util');var moment=require(_0x81aa('0x1'));var BPromise=require(_0x81aa('0x2'));var rs=require(_0x81aa('0x3'));var fs=require('fs');var Redis=require(_0x81aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x81aa('0x5'))(_0x81aa('0x6'));var config=require(_0x81aa('0x7'));var jayson=require(_0x81aa('0x8'));var client=jayson[_0x81aa('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x285823,_0x517a5d,_0x5ba651){return new BPromise(function(_0x50f089,_0x820c53){return client[_0x81aa('0xa')](_0x285823,_0x5ba651)[_0x81aa('0xb')](function(_0x373dca){logger[_0x81aa('0xc')](_0x81aa('0xd'),_0x517a5d,_0x81aa('0xe'));logger[_0x81aa('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'),JSON['stringify'](_0x373dca));if(_0x373dca[_0x81aa('0x10')]){if(_0x373dca[_0x81aa('0x10')][_0x81aa('0x11')]===0x1f4){logger['error'](_0x81aa('0xd'),_0x517a5d,_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);return _0x820c53(_0x373dca['error'][_0x81aa('0x12')]);}logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x373dca['error'][_0x81aa('0x12')]);return _0x50f089(_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);}else{logger[_0x81aa('0xc')]('VoiceQueuesLog,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'));_0x50f089(_0x373dca['result'][_0x81aa('0x12')]);}})['catch'](function(_0x4611d0){logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x4611d0);_0x820c53(_0x4611d0);});});}
\ No newline at end of file
+var _0x7119=['jayson/promise','client','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0x7119,0x1c7));var _0x9711=function(_0x41bfa8,_0x2222f0){_0x41bfa8=_0x41bfa8-0x0;var _0x5a689e=_0x7119[_0x41bfa8];return _0x5a689e;};'use strict';var _=require('lodash');var util=require(_0x9711('0x0'));var moment=require('moment');var BPromise=require(_0x9711('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9711('0x2'));var db=require(_0x9711('0x3'))['db'];var utils=require(_0x9711('0x4'));var logger=require(_0x9711('0x5'))('rpc');var config=require(_0x9711('0x6'));var jayson=require(_0x9711('0x7'));var client=jayson[_0x9711('0x8')][_0x9711('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191701,_0x4c75dd,_0x31af88){return new BPromise(function(_0x3a5f79,_0x132b5b){return client['request'](_0x191701,_0x31af88)[_0x9711('0xa')](function(_0x4b13b9){logger[_0x9711('0xb')](_0x9711('0xc'),_0x4c75dd,_0x9711('0xd'));logger['debug'](_0x9711('0xe'),_0x4c75dd,_0x9711('0xd'),JSON[_0x9711('0xf')](_0x4b13b9));if(_0x4b13b9[_0x9711('0x10')]){if(_0x4b13b9[_0x9711('0x10')][_0x9711('0x11')]===0x1f4){logger[_0x9711('0x10')](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x132b5b(_0x4b13b9[_0x9711('0x10')]['message']);}logger['error'](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x3a5f79(_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);}else{logger['info'](_0x9711('0xc'),_0x4c75dd,'request\x20sent');_0x3a5f79(_0x4b13b9[_0x9711('0x13')][_0x9711('0x12')]);}})[_0x9711('0x14')](function(_0x640894){logger[_0x9711('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x4c75dd,_0x640894);_0x132b5b(_0x640894);});});}
\ No newline at end of file
index 6f0920c..fce808e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf64d=['/:id','show','download','downloads','/:id/transcribe','post','create','runTranscribe','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0x322306,_0x31fc80){var _0x4f9152=function(_0x565bbf){while(--_0x565bbf){_0x322306['push'](_0x322306['shift']());}};_0x4f9152(++_0x31fc80);}(_0xf64d,0x83));var _0xdf64=function(_0x489730,_0x5226b9){_0x489730=_0x489730-0x0;var _0x7855d1=_0xf64d[_0x489730];return _0x7855d1;};'use strict';var multer=require(_0xdf64('0x0'));var util=require(_0xdf64('0x1'));var path=require(_0xdf64('0x2'));var timeout=require(_0xdf64('0x3'));var express=require(_0xdf64('0x4'));var router=express[_0xdf64('0x5')]();var fs_extra=require(_0xdf64('0x6'));var auth=require(_0xdf64('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdf64('0x8'));var controller=require('./voiceRecording.controller');router[_0xdf64('0x9')]('/',auth[_0xdf64('0xa')](),controller[_0xdf64('0xb')]);router[_0xdf64('0x9')]('/describe',auth[_0xdf64('0xa')](),controller[_0xdf64('0xc')]);router[_0xdf64('0x9')](_0xdf64('0xd'),auth['isAuthenticated'](),controller[_0xdf64('0xe')]);router[_0xdf64('0x9')]('/:id/download',auth[_0xdf64('0xa')](),controller[_0xdf64('0xf')]);router[_0xdf64('0x9')]('/:id/downloads',controller[_0xdf64('0x10')]);router[_0xdf64('0x9')](_0xdf64('0x11'),auth[_0xdf64('0xa')](),controller['downloadTranscribe']);router[_0xdf64('0x12')]('/',auth[_0xdf64('0xa')](),controller[_0xdf64('0x13')]);router[_0xdf64('0x12')](_0xdf64('0x11'),auth[_0xdf64('0xa')](),controller[_0xdf64('0x14')]);router[_0xdf64('0x15')](_0xdf64('0xd'),auth[_0xdf64('0xa')](),controller[_0xdf64('0x16')]);router[_0xdf64('0x17')](_0xdf64('0xd'),auth[_0xdf64('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x342e=['post','create','runTranscribe','put','update','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','downloadTranscribe'];(function(_0x5aba0b,_0x1fe014){var _0x571ef2=function(_0x596ae7){while(--_0x596ae7){_0x5aba0b['push'](_0x5aba0b['shift']());}};_0x571ef2(++_0x1fe014);}(_0x342e,0x19c));var _0xe342=function(_0x56e4e7,_0x1db098){_0x56e4e7=_0x56e4e7-0x0;var _0x383618=_0x342e[_0x56e4e7];return _0x383618;};'use strict';var multer=require('multer');var util=require(_0xe342('0x0'));var path=require('path');var timeout=require(_0xe342('0x1'));var express=require(_0xe342('0x2'));var router=express[_0xe342('0x3')]();var fs_extra=require(_0xe342('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe342('0x5'));var config=require(_0xe342('0x6'));var controller=require(_0xe342('0x7'));router[_0xe342('0x8')]('/',auth[_0xe342('0x9')](),controller[_0xe342('0xa')]);router[_0xe342('0x8')](_0xe342('0xb'),auth['isAuthenticated'](),controller[_0xe342('0xc')]);router[_0xe342('0x8')](_0xe342('0xd'),auth[_0xe342('0x9')](),controller['show']);router[_0xe342('0x8')](_0xe342('0xe'),auth[_0xe342('0x9')](),controller[_0xe342('0xf')]);router[_0xe342('0x8')](_0xe342('0x10'),controller[_0xe342('0x11')]);router[_0xe342('0x8')](_0xe342('0x12'),auth[_0xe342('0x9')](),controller[_0xe342('0x13')]);router[_0xe342('0x14')]('/',auth[_0xe342('0x9')](),controller[_0xe342('0x15')]);router['post'](_0xe342('0x12'),auth[_0xe342('0x9')](),controller[_0xe342('0x16')]);router[_0xe342('0x17')](_0xe342('0xd'),auth['isAuthenticated'](),controller[_0xe342('0x18')]);router['delete'](_0xe342('0xd'),auth[_0xe342('0x9')](),controller[_0xe342('0x19')]);module[_0xe342('0x1a')]=router;
\ No newline at end of file
index 9689085..faf97ed 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(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 1c44fbf..08b5090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b0e=['desk.js','to-csv','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','end','index','map','VoiceRecording','fieldName','type','model','query','filters','attributes','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','findAll','catch','show','keys','rawAttributes','fields','find','create','body','params','describe','../../components/encryptor','uniqueid','value','format','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','filename','extname','unlink','message','downloads','sequelize','MD5','col','token','$and','push','destroy','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','Voice\x20Recording\x20not\x20found','findOne','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','Buckets','Name','data2','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','fs-extra','lodash','crypto','jsforce'];(function(_0x14a36a,_0x7f96a2){var _0x308aa2=function(_0x3ebd6c){while(--_0x3ebd6c){_0x14a36a['push'](_0x14a36a['shift']());}};_0x308aa2(++_0x7f96a2);}(_0x4b0e,0x1a7));var _0xe4b0=function(_0x11da6e,_0xf882f2){_0x11da6e=_0x11da6e-0x0;var _0x106821=_0x4b0e[_0x11da6e];return _0x106821;};'use strict';var emlformat=require(_0xe4b0('0x0'));var rimraf=require(_0xe4b0('0x1'));var zipdir=require(_0xe4b0('0x2'));var jsonpatch=require(_0xe4b0('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe4b0('0x4'));var Mustache=require(_0xe4b0('0x5'));var util=require('util');var path=require(_0xe4b0('0x6'));var sox=require(_0xe4b0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4b0('0x8'));var _=require(_0xe4b0('0x9'));var squel=require('squel');var crypto=require(_0xe4b0('0xa'));var jsforce=require(_0xe4b0('0xb'));var deskjs=require(_0xe4b0('0xc'));var toCsv=require(_0xe4b0('0xd'));var querystring=require('querystring');var Papa=require(_0xe4b0('0xe'));var AWS=require(_0xe4b0('0xf'));var uuidv4=require(_0xe4b0('0x10'));var Redis=require(_0xe4b0('0x11'));var authService=require(_0xe4b0('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4b0('0x13'));var logger=require(_0xe4b0('0x14'))('api');var utils=require(_0xe4b0('0x15'));var config=require(_0xe4b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe4b0('0x17'))['db'];function respondWithStatusCode(_0x3eb989,_0x11ed2a){_0x11ed2a=_0x11ed2a||0xcc;return function(_0x2b639e){if(_0x2b639e){return _0x3eb989[_0xe4b0('0x18')](_0x11ed2a);}return _0x3eb989[_0xe4b0('0x19')](_0x11ed2a)['end']();};}function respondWithResult(_0x47e793,_0x4abec4){_0x4abec4=_0x4abec4||0xc8;return function(_0x206c13){if(_0x206c13){return _0x47e793[_0xe4b0('0x19')](_0x4abec4)[_0xe4b0('0x1a')](_0x206c13);}};}function respondWithFilteredResult(_0x5a6ad0,_0x153dc6){return function(_0x5ef954){if(_0x5ef954){var _0x2a2abb=typeof _0x153dc6[_0xe4b0('0x1b')]===_0xe4b0('0x1c')&&typeof _0x153dc6['limit']===_0xe4b0('0x1c');var _0xc8795=_0x5ef954[_0xe4b0('0x1d')];var _0x571d83=_0x2a2abb?0x0:_0x153dc6[_0xe4b0('0x1b')];var _0xdf3f44=_0x2a2abb?_0x5ef954[_0xe4b0('0x1d')]:_0x153dc6[_0xe4b0('0x1b')]+_0x153dc6[_0xe4b0('0x1e')];var _0x32251c;if(_0xdf3f44>=_0xc8795){_0xdf3f44=_0xc8795;_0x32251c=0xc8;}else{_0x32251c=0xce;}_0x5a6ad0[_0xe4b0('0x19')](_0x32251c);return _0x5a6ad0[_0xe4b0('0x1f')](_0xe4b0('0x20'),_0x571d83+'-'+_0xdf3f44+'/'+_0xc8795)[_0xe4b0('0x1a')](_0x5ef954);}return null;};}function patchUpdates(_0x3e6e83){return function(_0x524534){try{jsonpatch[_0xe4b0('0x21')](_0x524534,_0x3e6e83,!![]);}catch(_0x3cbd5f){return BPromise['reject'](_0x3cbd5f);}return _0x524534[_0xe4b0('0x22')]();};}function saveUpdates(_0x335bad,_0x4c6860){return function(_0x339387){if(_0x339387){return _0x339387[_0xe4b0('0x23')](_0x335bad)[_0xe4b0('0x24')](function(_0x26468e){return _0x26468e;});}return null;};}function removeEntity(_0xca3821,_0x5cec82){return function(_0x3e3471){if(_0x3e3471){return _0x3e3471['destroy']()[_0xe4b0('0x24')](function(){_0xca3821[_0xe4b0('0x19')](0xcc)[_0xe4b0('0x25')]();});}};}function handleEntityNotFound(_0x2e9920,_0x515e9b){return function(_0x1a15df){if(!_0x1a15df){_0x2e9920['sendStatus'](0x194);}return _0x1a15df;};}function handleError(_0x3ce189,_0x3e7fe0){_0x3e7fe0=_0x3e7fe0||0x1f4;return function(_0x40eae6){logger['error'](_0x40eae6['stack']);if(_0x40eae6['name']){delete _0x40eae6['name'];}_0x3ce189['status'](_0x3e7fe0)['send'](_0x40eae6);};}exports[_0xe4b0('0x26')]=function(_0x15affa,_0x5068dd){var _0x304336={},_0x271a19={},_0x5bb943={'count':0x0,'rows':[]};var _0x3c311c=_[_0xe4b0('0x27')](db[_0xe4b0('0x28')]['rawAttributes'],function(_0x40d000){return{'name':_0x40d000[_0xe4b0('0x29')],'type':_0x40d000[_0xe4b0('0x2a')]['key']};});_0x271a19[_0xe4b0('0x2b')]=_['differenceBy'](_['map'](_0x3c311c,'name'),['format']);_0x271a19[_0xe4b0('0x2c')]=_['keys'](_0x15affa[_0xe4b0('0x2c')]);_0x271a19[_0xe4b0('0x2d')]=_['intersection'](_0x271a19['model'],_0x271a19['query']);_0x304336[_0xe4b0('0x2e')]=_['intersection'](_0x271a19[_0xe4b0('0x2b')],qs['fields'](_0x15affa[_0xe4b0('0x2c')]['fields']));_0x304336['attributes']=_0x304336[_0xe4b0('0x2e')][_0xe4b0('0x2f')]?_0x304336[_0xe4b0('0x2e')]:_0x271a19[_0xe4b0('0x2b')];if(!_0x15affa[_0xe4b0('0x2c')]['hasOwnProperty'](_0xe4b0('0x30'))){_0x304336[_0xe4b0('0x1e')]=qs['limit'](_0x15affa['query'][_0xe4b0('0x1e')]);_0x304336['offset']=qs[_0xe4b0('0x1b')](_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x1b')]);}_0x304336['order']=qs[_0xe4b0('0x31')](_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x31')]);_0x304336[_0xe4b0('0x32')]=qs[_0xe4b0('0x2d')](_[_0xe4b0('0x33')](_0x15affa[_0xe4b0('0x2c')],_0x271a19[_0xe4b0('0x2d')]),_0x3c311c);if(_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x34')]){_0x304336[_0xe4b0('0x32')]=_[_0xe4b0('0x35')](_0x304336['where'],{'$or':_[_0xe4b0('0x27')](_0x3c311c,function(_0x38f852){if(_0x38f852['type']!==_0xe4b0('0x36')){var _0x31c327={};_0x31c327[_0x38f852[_0xe4b0('0x37')]]={'$like':'%'+_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x34')]+'%'};return _0x31c327;}})});}_0x304336=_[_0xe4b0('0x35')]({},_0x304336,_0x15affa[_0xe4b0('0x38')]);var _0x3f962b={'where':_0x304336[_0xe4b0('0x32')]};return db[_0xe4b0('0x28')][_0xe4b0('0x1d')](_0x3f962b)[_0xe4b0('0x24')](function(_0x80a147){_0x5bb943['count']=_0x80a147;if(_0x15affa[_0xe4b0('0x2c')][_0xe4b0('0x39')]){_0x304336[_0xe4b0('0x3a')]=[{'all':!![]}];}return db['VoiceRecording'][_0xe4b0('0x3b')](_0x304336);})[_0xe4b0('0x24')](function(_0x59e990){_0x5bb943['rows']=_0x59e990;return _0x5bb943;})[_0xe4b0('0x24')](respondWithFilteredResult(_0x5068dd,_0x304336))[_0xe4b0('0x3c')](handleError(_0x5068dd,null));};exports[_0xe4b0('0x3d')]=function(_0x56fb5e,_0x4d0f92){var _0x53dcfc={'raw':![],'where':{'id':_0x56fb5e['params']['id']}},_0x1c8804={};_0x1c8804['model']=_[_0xe4b0('0x3e')](db[_0xe4b0('0x28')][_0xe4b0('0x3f')]);_0x1c8804[_0xe4b0('0x2c')]=_['keys'](_0x56fb5e[_0xe4b0('0x2c')]);_0x1c8804[_0xe4b0('0x2d')]=_['intersection'](_0x1c8804['model'],_0x1c8804[_0xe4b0('0x2c')]);_0x53dcfc[_0xe4b0('0x2e')]=_['intersection'](_0x1c8804[_0xe4b0('0x2b')],qs[_0xe4b0('0x40')](_0x56fb5e[_0xe4b0('0x2c')][_0xe4b0('0x40')]));_0x53dcfc[_0xe4b0('0x2e')]=_0x53dcfc['attributes'][_0xe4b0('0x2f')]?_0x53dcfc[_0xe4b0('0x2e')]:_0x1c8804[_0xe4b0('0x2b')];if(_0x56fb5e[_0xe4b0('0x2c')][_0xe4b0('0x39')]){_0x53dcfc[_0xe4b0('0x3a')]=[{'all':!![]}];}_0x53dcfc=_[_0xe4b0('0x35')]({},_0x53dcfc,_0x56fb5e[_0xe4b0('0x38')]);return db[_0xe4b0('0x28')][_0xe4b0('0x41')](_0x53dcfc)[_0xe4b0('0x24')](handleEntityNotFound(_0x4d0f92,null))['then'](respondWithResult(_0x4d0f92,null))[_0xe4b0('0x3c')](handleError(_0x4d0f92,null));};exports[_0xe4b0('0x42')]=function(_0x571912,_0x18209a){return db['VoiceRecording'][_0xe4b0('0x42')](_0x571912[_0xe4b0('0x43')],{})[_0xe4b0('0x24')](respondWithResult(_0x18209a,0xc9))['catch'](handleError(_0x18209a,null));};exports[_0xe4b0('0x23')]=function(_0x23f26b,_0x23d7e6){if(_0x23f26b['body']['id']){delete _0x23f26b[_0xe4b0('0x43')]['id'];}return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':{'id':_0x23f26b[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](handleEntityNotFound(_0x23d7e6,null))[_0xe4b0('0x24')](saveUpdates(_0x23f26b[_0xe4b0('0x43')],null))[_0xe4b0('0x24')](respondWithResult(_0x23d7e6,null))[_0xe4b0('0x3c')](handleError(_0x23d7e6,null));};exports[_0xe4b0('0x45')]=function(_0xd3774f,_0x10be9e){return db['VoiceRecording'][_0xe4b0('0x45')]()[_0xe4b0('0x24')](respondWithResult(_0x10be9e,null))[_0xe4b0('0x3c')](handleError(_0x10be9e,null));};exports['download']=function(_0x4f5dec,_0x17066b,_0x3b70cc){var _0xaf7c48=require(_0xe4b0('0x46'));var _0x18edfc=![];var _0x35aa86={};if(_0x4f5dec['query']['type']&&_0x4f5dec[_0xe4b0('0x2c')][_0xe4b0('0x2a')]===_0xe4b0('0x47')){_0x35aa86[_0xe4b0('0x47')]=_0x4f5dec['params']['id'];}else{_0x35aa86['id']=_0x4f5dec[_0xe4b0('0x44')]['id'];}return db['VoiceRecording'][_0xe4b0('0x41')]({'where':_0x35aa86,'attributes':['id',_0xe4b0('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x17066b,null))['then'](function(_0xbf55fd){if(_0xbf55fd){var _0x5a3201=_0xbf55fd[_0xe4b0('0x48')];var _0x4698f8=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x5a3201);if(fs['existsSync'](_0x4698f8)){_0x18edfc=!![];return _0xaf7c48[_0xe4b0('0x4b')](_0x4698f8,_0x5a3201,config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])['then'](function(){return _0xbf55fd;});}return _0xbf55fd;}})[_0xe4b0('0x24')](function(_0x35508a){if(_0x35508a){var _0x124614=_0x35508a[_0xe4b0('0x48')];if(!fs[_0xe4b0('0x4e')](_0x124614)){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))](_0xe4b0('0x51'));}if(_0x35508a['filename']){return _0x17066b[_0xe4b0('0x52')](_0x124614,_0x35508a[_0xe4b0('0x53')]+path[_0xe4b0('0x54')](_0x124614),function(){if(_0x18edfc){fs[_0xe4b0('0x55')](_0x124614);}});}else{return _0x17066b['download'](_0x124614,function(_0x5f6f6a){if(_0x18edfc){fs[_0xe4b0('0x55')](_0x124614);}});}}})[_0xe4b0('0x3c')](function(_0x199535){if(_0x199535[_0xe4b0('0x56')]===_0xe4b0('0x51')){_0x17066b['status'](0x194)['send']('Not\x20found');}else{return handleError(_0x17066b,null);}});};exports[_0xe4b0('0x57')]=function(_0xc3c419,_0x49cdba,_0x40a119){var _0x551b86=require('../../components/encryptor');var _0x420330=![];var _0x4eeb78={'$and':[db[_0xe4b0('0x58')][_0xe4b0('0x32')](db[_0xe4b0('0x58')]['fn'](_0xe4b0('0x59'),db[_0xe4b0('0x58')][_0xe4b0('0x5a')]('uniqueid')),_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x5b')])]};if(_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x2a')]&&_0xc3c419[_0xe4b0('0x2c')][_0xe4b0('0x2a')]==='uniqueid'){_0x4eeb78[_0xe4b0('0x5c')]['push']({'uniqueid':_0xc3c419[_0xe4b0('0x44')]['id']});}else{_0x4eeb78['$and'][_0xe4b0('0x5d')]({'id':_0xc3c419[_0xe4b0('0x44')]['id']});}return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':_0x4eeb78,'attributes':['id',_0xe4b0('0x48')],'raw':!![]})[_0xe4b0('0x24')](handleEntityNotFound(_0x49cdba,null))[_0xe4b0('0x24')](function(_0x526ac4){if(_0x526ac4){var _0x20c0a2=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x526ac4[_0xe4b0('0x48')]);if(fs[_0xe4b0('0x4e')](_0x20c0a2)){_0x420330=!![];return _0x551b86[_0xe4b0('0x4b')](_0x20c0a2,_0x526ac4[_0xe4b0('0x48')],config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])[_0xe4b0('0x24')](function(){return _0x526ac4;});}return _0x526ac4;}})[_0xe4b0('0x24')](function(_0x34434f){if(_0x34434f){if(!fs['existsSync'](_0x34434f[_0xe4b0('0x48')])){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))]('VoiceRecording\x20not\x20found');}if(_0x34434f[_0xe4b0('0x53')]){return _0x49cdba[_0xe4b0('0x52')](_0x34434f[_0xe4b0('0x48')],_0x34434f['filename']+path[_0xe4b0('0x54')](_0x34434f[_0xe4b0('0x48')]),function(){if(_0x420330){fs[_0xe4b0('0x55')](_0x34434f['value']);}});}else{return _0x49cdba[_0xe4b0('0x52')](_0x34434f[_0xe4b0('0x48')],function(_0x5e9ace){if(_0x420330){fs[_0xe4b0('0x55')](_0x34434f[_0xe4b0('0x48')]);}});}}})['catch'](handleError(_0x49cdba,null));};exports[_0xe4b0('0x5e')]=function(_0x4a1eb2,_0x266703){return db[_0xe4b0('0x28')][_0xe4b0('0x41')]({'where':{'id':_0x4a1eb2[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](function(_0x4c4059){if(_[_0xe4b0('0x5f')](_0x4c4059)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4c4059;})['then'](function(_0x2ca33c){var _0x342fd3=_0x2ca33c['value'];logger['info'](_0xe4b0('0x60'),_0x342fd3);if(!_[_0xe4b0('0x5f')](_0x2ca33c['value'])&&fs[_0xe4b0('0x4e')](_0x342fd3)){logger[_0xe4b0('0x61')](_0xe4b0('0x62')+_0x342fd3+_0xe4b0('0x63'));fs[_0xe4b0('0x64')](_0x342fd3);}_0x342fd3=_0x342fd3+_0xe4b0('0x65');if(!_['isNil'](_0x2ca33c[_0xe4b0('0x48')])&&fs[_0xe4b0('0x4e')](_0x342fd3)){logger[_0xe4b0('0x61')]('File:\x20\x22'+_0x342fd3+_0xe4b0('0x63'));fs[_0xe4b0('0x64')](_0x342fd3);}return _0x2ca33c;})[_0xe4b0('0x24')](function(_0x575036){if(!_0x575036)throw new InternalError();return _0x575036[_0xe4b0('0x5e')]();})[_0xe4b0('0x24')](function(){_0x266703[_0xe4b0('0x19')](0xcc)[_0xe4b0('0x25')]();})[_0xe4b0('0x3c')](handleError(_0x266703,null));};function getBucketslist(_0x2563e0,_0x137b7d,_0x151782){return new Promise(function(_0x5b26d3,_0x149d38){var _0x71a590=new AWS['S3']({'accessKeyId':_0x137b7d,'secretAccessKey':_0x2563e0,'region':_0x151782});_0x71a590[_0xe4b0('0x66')]({},function(_0x56761f,_0x3f9e32){if(_0x56761f){return _0x149d38(_0x56761f);}else{return _0x5b26d3(_0x3f9e32);}});});}function createBucket(_0x490f2a,_0x21d9a8,_0x1b636d,_0x234ac8){return new Promise(function(_0x4b9416,_0x178763){var _0x59d6f6=new AWS['S3']({'accessKeyId':_0x21d9a8,'secretAccessKey':_0x490f2a,'region':_0x1b636d});_0x59d6f6[_0xe4b0('0x67')]({'Bucket':_0x234ac8},function(_0x5ee29e,_0x121ea6){if(_0x5ee29e){return _0x178763(_0x5ee29e);}else{return _0x4b9416(_0x121ea6);}});});}function uploadFile(_0x2e3ebe,_0x1ee3ad,_0x143ed3,_0x1cfa7a,_0xb2a39a,_0x4ed5cb){return new Promise(function(_0xa2c964,_0x5c1fc7){var _0x279563=new AWS['S3']({'accessKeyId':_0x1ee3ad,'secretAccessKey':_0x2e3ebe,'region':_0x143ed3});_0x279563[_0xe4b0('0x68')]({'Bucket':_0x1cfa7a,'Key':_0xb2a39a,'Body':_0x4ed5cb},function(_0x193062,_0x1b8d09){if(_0x193062){return _0x5c1fc7(_0x193062);}else{return _0xa2c964(_0x1b8d09);}});});}function startTranscribe(_0xdf70b6,_0x4d1b4c,_0x3a9ada,_0x591fde,_0x2a9759,_0x56ec71){return new Promise(function(_0x1301d5,_0x2b65af){var _0x6bbacb=new AWS['TranscribeService']({'accessKeyId':_0x4d1b4c,'secretAccessKey':_0xdf70b6,'region':_0x3a9ada});_0x6bbacb[_0xe4b0('0x69')]({'TranscriptionJobName':_0x591fde,'LanguageCode':_0x2a9759,'Media':{'MediaFileUri':_0x56ec71}},function(_0x3cfc20,_0x454866){if(_0x3cfc20){return _0x2b65af(_0x3cfc20);}else{return _0x1301d5(_0x454866);}});});}function transcribe(_0x4764cb,_0x151712,_0x8b1e67,_0x57302c,_0x24e320,_0x1ceaf7,_0xff77dc){return new Promise(function(_0x367b34,_0x545a1f){var _0x10a017={};logger[_0xe4b0('0x61')](util['format'](_0xe4b0('0x6a'),_0x4764cb,_0x24e320));return uploadFile(_0x151712,_0x8b1e67,_0x57302c,_0x24e320,path[_0xe4b0('0x6b')](_0x1ceaf7),fs['readFileSync'](_0x1ceaf7))[_0xe4b0('0x24')](function(_0x10e5a4){logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x4764cb,_0x24e320,_0x10e5a4[_0xe4b0('0x6c')]));_0x10a017[_0xe4b0('0x6d')]=_0x10e5a4[_0xe4b0('0x6e')];_0x10a017['location']=_0x10e5a4[_0xe4b0('0x6c')];logger['info'](util['format'](_0xe4b0('0x6f'),_0x4764cb));return startTranscribe(_0x151712,_0x8b1e67,_0x57302c,uuidv4(),_0xff77dc,_0x10e5a4[_0xe4b0('0x6c')]);})[_0xe4b0('0x24')](function(_0x228bf9){logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x70'),_0x4764cb,_0x228bf9[_0xe4b0('0x71')][_0xe4b0('0x72')]));_0x10a017['transcribeName']=_0x228bf9[_0xe4b0('0x71')][_0xe4b0('0x72')];_0x10a017[_0xe4b0('0x73')]=_0x228bf9['TranscriptionJob'][_0xe4b0('0x74')];return _0x367b34(_0x10a017);})[_0xe4b0('0x3c')](function(_0xb2bb54){return _0x545a1f(_0xb2bb54);});});}exports['runTranscribe']=function(_0x5af83e,_0x4800f5,_0xf5c3bf){var _0x352904;var _0x313e5c;var _0x2b4b9d;var _0x216675=require(_0xe4b0('0x46'));return db['VoiceRecording']['findOne']({'where':{'id':_0x5af83e[_0xe4b0('0x44')]['id']}})[_0xe4b0('0x24')](function(_0x231320){if(_0x231320){var _0x43f05c=util[_0xe4b0('0x49')](_0xe4b0('0x4a'),_0x231320['value']);if(fs['existsSync'](_0x43f05c)){cypher=!![];return _0x216675[_0xe4b0('0x4b')](_0x43f05c,_0x231320[_0xe4b0('0x48')],config[_0xe4b0('0x4c')][_0xe4b0('0x4d')])[_0xe4b0('0x24')](function(){return _0x231320;});}return _0x231320;}})[_0xe4b0('0x24')](function(_0x38465b){if(!_0x38465b){throw new db['Sequelize'][(_0xe4b0('0x50'))](_0xe4b0('0x75'));}_0x313e5c=_0x38465b;return db['Setting'][_0xe4b0('0x76')]({'where':{'id':0x1}});})[_0xe4b0('0x24')](handleEntityNotFound(_0x4800f5,null))[_0xe4b0('0x24')](function(_0x46bacc){if(_0x46bacc){_0x352904=_0x46bacc;if(!_0x352904[_0xe4b0('0x77')]||!_0x352904[_0xe4b0('0x78')]||!_0x352904[_0xe4b0('0x79')]||!_0x352904[_0xe4b0('0x7a')]||!_0x352904['bucket']){throw new db[(_0xe4b0('0x4f'))][(_0xe4b0('0x50'))](_0xe4b0('0x7b'));}if(_0x5af83e[_0xe4b0('0x43')]['runSentiment']&&(!_0x352904[_0xe4b0('0x7c')]||!_0x352904['sentimentAccountId']||!_0x352904[_0xe4b0('0x7d')]||!_0x352904[_0xe4b0('0x7a')]||!_0x352904['bucket'])){throw new db[(_0xe4b0('0x4f'))]['ValidationError'](_0xe4b0('0x7e'));}return db[_0xe4b0('0x7f')]['findOne']({'where':{'id':_0x352904[_0xe4b0('0x78')]}});}})[_0xe4b0('0x24')](function(_0x32fca9){if(!_0x32fca9){throw new db[(_0xe4b0('0x4f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x32fca9[_0xe4b0('0x80')]||!_0x32fca9['data2']){throw new db['Sequelize'][(_0xe4b0('0x50'))]('Cloud\x20Provider\x20not\x20configured');}_0x2b4b9d=_0x32fca9;return getBucketslist(_0x2b4b9d['data1'],_0x2b4b9d['data2'],_0x352904[_0xe4b0('0x79')]);})['then'](function(_0x167cce){if(_0x167cce&&_0x167cce[_0xe4b0('0x81')]){var _0x3f56e9=_[_0xe4b0('0x41')](_0x167cce[_0xe4b0('0x81')],function(_0x359a5a){return _0x359a5a[_0xe4b0('0x82')]===_0x352904[_0xe4b0('0x6d')];});if(!_0x3f56e9){logger['info'](util[_0xe4b0('0x49')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x5af83e[_0xe4b0('0x44')]['id'],_0x352904[_0xe4b0('0x6d')]));return createBucket(_0x2b4b9d[_0xe4b0('0x80')],_0x2b4b9d[_0xe4b0('0x83')],_0x352904[_0xe4b0('0x79')],_0x352904[_0xe4b0('0x6d')]);}logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x84'),_0x5af83e['params']['id'],_0x352904['bucket']));return;}})[_0xe4b0('0x24')](function(_0x4ecb14){if(_0x313e5c[_0xe4b0('0x73')]===_0xe4b0('0x85')){return transcribe(_0x5af83e[_0xe4b0('0x44')]['id'],_0x2b4b9d['data1'],_0x2b4b9d[_0xe4b0('0x83')],_0x352904['transcribeRegion'],_0x352904[_0xe4b0('0x6d')],_0x313e5c[_0xe4b0('0x48')],_0x352904[_0xe4b0('0x7a')]);}else{logger[_0xe4b0('0x61')](util[_0xe4b0('0x49')](_0xe4b0('0x86'),_0x5af83e[_0xe4b0('0x44')]['id']));return{'transcribeStatus':_0xe4b0('0x87')};}})[_0xe4b0('0x24')](function(_0x5ea4df){if(_0x5ea4df){_0x5ea4df[_0xe4b0('0x88')]=_0x5af83e['body'][_0xe4b0('0x89')];return _0x313e5c[_0xe4b0('0x8a')](_0x5ea4df);}})[_0xe4b0('0x24')](respondWithResult(_0x4800f5,null))[_0xe4b0('0x3c')](handleError(_0x4800f5,null));};function writeFile(_0x28964b,_0x5e23dc){return new Promise(function(_0x2454d4,_0x52cbc0){fs[_0xe4b0('0x8b')](_0x5e23dc,_0x28964b,function(_0x5f13b1,_0x225ece){if(_0x5f13b1){return _0x52cbc0(_0x5f13b1);}else{return _0x2454d4(_0x225ece);}});});}exports[_0xe4b0('0x8c')]=function(_0x4612a7,_0x2e6de9,_0x467be3){return db['VoiceRecording'][_0xe4b0('0x76')]({'where':{'id':_0x4612a7[_0xe4b0('0x44')]['id']}})['then'](handleEntityNotFound(_0x2e6de9))[_0xe4b0('0x24')](function(_0x26eb8f){if(_0x26eb8f&&_0x26eb8f[_0xe4b0('0x8d')]){var _0x2c0eb0=_0x26eb8f['fileText'];var _0x2baa28=config[_0xe4b0('0x8e')]+'/server/files/transcribes/transcribe_'+_0x26eb8f['id']+_0xe4b0('0x8f');if(fs[_0xe4b0('0x4e')](_0x2baa28)){return _0x2baa28;}return writeFile(_0x2c0eb0,_0x2baa28)[_0xe4b0('0x24')](function(){return _0x2baa28;});}else{throw new db['Sequelize']['ValidationError'](_0xe4b0('0x90'));}})[_0xe4b0('0x24')](function(_0x5456b5){return _0x2e6de9[_0xe4b0('0x52')](_0x5456b5);})[_0xe4b0('0x3c')](handleError(_0x2e6de9));};
\ No newline at end of file
+var _0x63ad=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','map','VoiceRecording','rawAttributes','fieldName','type','model','format','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','Not\x20found','downloads','sequelize','MD5','col','token','$and','push','extname','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','startTranscriptionJob','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','transcribeName','transcribeStatus','TranscriptionJob','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','transcribe','transcribeRegion','language','runSentiment','sentiment','sentimentAccountId','sentimentRegion','CloudProvider','transcribeAccountId','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','writeFile','fileText','root','/server/files/transcribes/transcribe_','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x45d118,_0x3f2aef){var _0x236004=function(_0x3d19f6){while(--_0x3d19f6){_0x45d118['push'](_0x45d118['shift']());}};_0x236004(++_0x3f2aef);}(_0x63ad,0x1ab));var _0xd63a=function(_0x5417a7,_0x16aca9){_0x5417a7=_0x5417a7-0x0;var _0x3f39d2=_0x63ad[_0x5417a7];return _0x3f39d2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd63a('0x0'));var zipdir=require(_0xd63a('0x1'));var jsonpatch=require(_0xd63a('0x2'));var rp=require('request-promise');var moment=require(_0xd63a('0x3'));var BPromise=require(_0xd63a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd63a('0x5'));var sox=require('sox');var csv=require(_0xd63a('0x6'));var ejs=require(_0xd63a('0x7'));var fs=require('fs');var fs_extra=require(_0xd63a('0x8'));var _=require('lodash');var squel=require(_0xd63a('0x9'));var crypto=require(_0xd63a('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd63a('0x6'));var querystring=require(_0xd63a('0xb'));var Papa=require(_0xd63a('0xc'));var AWS=require('aws-sdk');var uuidv4=require(_0xd63a('0xd'));var Redis=require(_0xd63a('0xe'));var authService=require(_0xd63a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd63a('0x10'));var hardwareService=require(_0xd63a('0x11'));var logger=require(_0xd63a('0x12'))('api');var utils=require(_0xd63a('0x13'));var config=require(_0xd63a('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3df7e1,_0x50317d){_0x50317d=_0x50317d||0xcc;return function(_0x357b2b){if(_0x357b2b){return _0x3df7e1[_0xd63a('0x15')](_0x50317d);}return _0x3df7e1[_0xd63a('0x16')](_0x50317d)[_0xd63a('0x17')]();};}function respondWithResult(_0x285aab,_0x5a25d9){_0x5a25d9=_0x5a25d9||0xc8;return function(_0x482980){if(_0x482980){return _0x285aab[_0xd63a('0x16')](_0x5a25d9)[_0xd63a('0x18')](_0x482980);}};}function respondWithFilteredResult(_0xba0d34,_0xf776ec){return function(_0x22021b){if(_0x22021b){var _0x395bb8=typeof _0xf776ec[_0xd63a('0x19')]===_0xd63a('0x1a')&&typeof _0xf776ec[_0xd63a('0x1b')]==='undefined';var _0x5794a9=_0x22021b[_0xd63a('0x1c')];var _0x4da5e1=_0x395bb8?0x0:_0xf776ec['offset'];var _0x5aa06b=_0x395bb8?_0x22021b[_0xd63a('0x1c')]:_0xf776ec['offset']+_0xf776ec[_0xd63a('0x1b')];var _0x5cc833;if(_0x5aa06b>=_0x5794a9){_0x5aa06b=_0x5794a9;_0x5cc833=0xc8;}else{_0x5cc833=0xce;}_0xba0d34[_0xd63a('0x16')](_0x5cc833);return _0xba0d34[_0xd63a('0x1d')](_0xd63a('0x1e'),_0x4da5e1+'-'+_0x5aa06b+'/'+_0x5794a9)[_0xd63a('0x18')](_0x22021b);}return null;};}function patchUpdates(_0x47c039){return function(_0x5b892b){try{jsonpatch[_0xd63a('0x1f')](_0x5b892b,_0x47c039,!![]);}catch(_0x41bdcc){return BPromise[_0xd63a('0x20')](_0x41bdcc);}return _0x5b892b['save']();};}function saveUpdates(_0x17460e,_0x36fd41){return function(_0x12da9c){if(_0x12da9c){return _0x12da9c[_0xd63a('0x21')](_0x17460e)[_0xd63a('0x22')](function(_0x47f8c1){return _0x47f8c1;});}return null;};}function removeEntity(_0x58d910,_0x453df8){return function(_0x411df0){if(_0x411df0){return _0x411df0[_0xd63a('0x23')]()[_0xd63a('0x22')](function(){_0x58d910['status'](0xcc)[_0xd63a('0x17')]();});}};}function handleEntityNotFound(_0x4da78a,_0x5c6ff2){return function(_0x4c41a0){if(!_0x4c41a0){_0x4da78a[_0xd63a('0x15')](0x194);}return _0x4c41a0;};}function handleError(_0x2f18df,_0x3d7e0b){_0x3d7e0b=_0x3d7e0b||0x1f4;return function(_0xd036ad){logger[_0xd63a('0x24')](_0xd036ad['stack']);if(_0xd036ad[_0xd63a('0x25')]){delete _0xd036ad[_0xd63a('0x25')];}_0x2f18df[_0xd63a('0x16')](_0x3d7e0b)[_0xd63a('0x26')](_0xd036ad);};}exports['index']=function(_0x4b1a44,_0x468f41){var _0xeab793={},_0x2b69ab={},_0x173cef={'count':0x0,'rows':[]};var _0x47c22b=_[_0xd63a('0x27')](db[_0xd63a('0x28')][_0xd63a('0x29')],function(_0x2f8961){return{'name':_0x2f8961[_0xd63a('0x2a')],'type':_0x2f8961[_0xd63a('0x2b')]['key']};});_0x2b69ab[_0xd63a('0x2c')]=_['differenceBy'](_[_0xd63a('0x27')](_0x47c22b,_0xd63a('0x25')),[_0xd63a('0x2d')]);_0x2b69ab['query']=_[_0xd63a('0x2e')](_0x4b1a44[_0xd63a('0x2f')]);_0x2b69ab['filters']=_[_0xd63a('0x30')](_0x2b69ab[_0xd63a('0x2c')],_0x2b69ab[_0xd63a('0x2f')]);_0xeab793['attributes']=_['intersection'](_0x2b69ab['model'],qs[_0xd63a('0x31')](_0x4b1a44[_0xd63a('0x2f')][_0xd63a('0x31')]));_0xeab793[_0xd63a('0x32')]=_0xeab793['attributes'][_0xd63a('0x33')]?_0xeab793['attributes']:_0x2b69ab[_0xd63a('0x2c')];if(!_0x4b1a44[_0xd63a('0x2f')][_0xd63a('0x34')](_0xd63a('0x35'))){_0xeab793['limit']=qs['limit'](_0x4b1a44[_0xd63a('0x2f')]['limit']);_0xeab793[_0xd63a('0x19')]=qs[_0xd63a('0x19')](_0x4b1a44['query']['offset']);}_0xeab793[_0xd63a('0x36')]=qs[_0xd63a('0x37')](_0x4b1a44[_0xd63a('0x2f')][_0xd63a('0x37')]);_0xeab793['where']=qs[_0xd63a('0x38')](_[_0xd63a('0x39')](_0x4b1a44['query'],_0x2b69ab[_0xd63a('0x38')]),_0x47c22b);if(_0x4b1a44[_0xd63a('0x2f')][_0xd63a('0x3a')]){_0xeab793[_0xd63a('0x3b')]=_[_0xd63a('0x3c')](_0xeab793[_0xd63a('0x3b')],{'$or':_['map'](_0x47c22b,function(_0x32a893){if(_0x32a893[_0xd63a('0x2b')]!==_0xd63a('0x3d')){var _0x54e5c1={};_0x54e5c1[_0x32a893[_0xd63a('0x25')]]={'$like':'%'+_0x4b1a44[_0xd63a('0x2f')][_0xd63a('0x3a')]+'%'};return _0x54e5c1;}})});}_0xeab793=_[_0xd63a('0x3c')]({},_0xeab793,_0x4b1a44[_0xd63a('0x3e')]);var _0x33abe4={'where':_0xeab793[_0xd63a('0x3b')]};return db[_0xd63a('0x28')][_0xd63a('0x1c')](_0x33abe4)[_0xd63a('0x22')](function(_0x9a4bbf){_0x173cef['count']=_0x9a4bbf;if(_0x4b1a44[_0xd63a('0x2f')]['includeAll']){_0xeab793[_0xd63a('0x3f')]=[{'all':!![]}];}return db['VoiceRecording'][_0xd63a('0x40')](_0xeab793);})[_0xd63a('0x22')](function(_0x515a4f){_0x173cef[_0xd63a('0x41')]=_0x515a4f;return _0x173cef;})[_0xd63a('0x22')](respondWithFilteredResult(_0x468f41,_0xeab793))[_0xd63a('0x42')](handleError(_0x468f41,null));};exports[_0xd63a('0x43')]=function(_0x1217c7,_0x1d1406){var _0x27a4b9={'raw':![],'where':{'id':_0x1217c7[_0xd63a('0x44')]['id']}},_0xea5e84={};_0xea5e84['model']=_[_0xd63a('0x2e')](db['VoiceRecording'][_0xd63a('0x29')]);_0xea5e84[_0xd63a('0x2f')]=_['keys'](_0x1217c7['query']);_0xea5e84['filters']=_[_0xd63a('0x30')](_0xea5e84[_0xd63a('0x2c')],_0xea5e84[_0xd63a('0x2f')]);_0x27a4b9['attributes']=_[_0xd63a('0x30')](_0xea5e84[_0xd63a('0x2c')],qs[_0xd63a('0x31')](_0x1217c7['query'][_0xd63a('0x31')]));_0x27a4b9[_0xd63a('0x32')]=_0x27a4b9[_0xd63a('0x32')]['length']?_0x27a4b9[_0xd63a('0x32')]:_0xea5e84[_0xd63a('0x2c')];if(_0x1217c7[_0xd63a('0x2f')][_0xd63a('0x45')]){_0x27a4b9['include']=[{'all':!![]}];}_0x27a4b9=_[_0xd63a('0x3c')]({},_0x27a4b9,_0x1217c7[_0xd63a('0x3e')]);return db['VoiceRecording'][_0xd63a('0x46')](_0x27a4b9)[_0xd63a('0x22')](handleEntityNotFound(_0x1d1406,null))[_0xd63a('0x22')](respondWithResult(_0x1d1406,null))['catch'](handleError(_0x1d1406,null));};exports[_0xd63a('0x47')]=function(_0x1effcc,_0x373d84){return db[_0xd63a('0x28')][_0xd63a('0x47')](_0x1effcc[_0xd63a('0x48')],{})[_0xd63a('0x22')](respondWithResult(_0x373d84,0xc9))[_0xd63a('0x42')](handleError(_0x373d84,null));};exports[_0xd63a('0x21')]=function(_0x5bd1a1,_0xec0020){if(_0x5bd1a1[_0xd63a('0x48')]['id']){delete _0x5bd1a1[_0xd63a('0x48')]['id'];}return db['VoiceRecording'][_0xd63a('0x46')]({'where':{'id':_0x5bd1a1[_0xd63a('0x44')]['id']}})['then'](handleEntityNotFound(_0xec0020,null))[_0xd63a('0x22')](saveUpdates(_0x5bd1a1[_0xd63a('0x48')],null))[_0xd63a('0x22')](respondWithResult(_0xec0020,null))[_0xd63a('0x42')](handleError(_0xec0020,null));};exports[_0xd63a('0x49')]=function(_0x335c46,_0x2cc3db){return db['VoiceRecording'][_0xd63a('0x49')]()[_0xd63a('0x22')](respondWithResult(_0x2cc3db,null))[_0xd63a('0x42')](handleError(_0x2cc3db,null));};exports[_0xd63a('0x4a')]=function(_0x1e4c97,_0xbe9025,_0xddc0fc){var _0x33a0c5=require(_0xd63a('0x4b'));var _0x64b0d5=![];var _0x40f81c={};if(_0x1e4c97[_0xd63a('0x2f')]['type']&&_0x1e4c97[_0xd63a('0x2f')][_0xd63a('0x2b')]==='uniqueid'){_0x40f81c[_0xd63a('0x4c')]=_0x1e4c97[_0xd63a('0x44')]['id'];}else{_0x40f81c['id']=_0x1e4c97[_0xd63a('0x44')]['id'];}return db[_0xd63a('0x28')][_0xd63a('0x46')]({'where':_0x40f81c,'attributes':['id',_0xd63a('0x4d')],'raw':!![]})[_0xd63a('0x22')](handleEntityNotFound(_0xbe9025,null))[_0xd63a('0x22')](function(_0x122145){if(_0x122145){var _0x1683ac=_0x122145[_0xd63a('0x4d')];var _0x73a74b=util[_0xd63a('0x2d')](_0xd63a('0x4e'),_0x1683ac);if(fs['existsSync'](_0x73a74b)){_0x64b0d5=!![];return _0x33a0c5[_0xd63a('0x4f')](_0x73a74b,_0x1683ac,config[_0xd63a('0x50')][_0xd63a('0x51')])['then'](function(){return _0x122145;});}return _0x122145;}})[_0xd63a('0x22')](function(_0x332741){if(_0x332741){var _0x297d60=_0x332741[_0xd63a('0x4d')];if(!fs[_0xd63a('0x52')](_0x297d60)){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))](_0xd63a('0x55'));}if(_0x332741[_0xd63a('0x56')]){return _0xbe9025[_0xd63a('0x4a')](_0x297d60,_0x332741['filename']+path['extname'](_0x297d60),function(){if(_0x64b0d5){fs[_0xd63a('0x57')](_0x297d60);}});}else{return _0xbe9025['download'](_0x297d60,function(_0x14698f){if(_0x64b0d5){fs['unlink'](_0x297d60);}});}}})[_0xd63a('0x42')](function(_0x10535f){if(_0x10535f[_0xd63a('0x58')]===_0xd63a('0x55')){_0xbe9025[_0xd63a('0x16')](0x194)['send'](_0xd63a('0x59'));}else{return handleError(_0xbe9025,null);}});};exports[_0xd63a('0x5a')]=function(_0x16c1c9,_0x2e0402,_0x17ca15){var _0x1e2353=require('../../components/encryptor');var _0x2ec520=![];var _0x3a751e={'$and':[db[_0xd63a('0x5b')][_0xd63a('0x3b')](db['sequelize']['fn'](_0xd63a('0x5c'),db['sequelize'][_0xd63a('0x5d')]('uniqueid')),_0x16c1c9[_0xd63a('0x2f')][_0xd63a('0x5e')])]};if(_0x16c1c9[_0xd63a('0x2f')]['type']&&_0x16c1c9[_0xd63a('0x2f')][_0xd63a('0x2b')]===_0xd63a('0x4c')){_0x3a751e[_0xd63a('0x5f')][_0xd63a('0x60')]({'uniqueid':_0x16c1c9[_0xd63a('0x44')]['id']});}else{_0x3a751e[_0xd63a('0x5f')][_0xd63a('0x60')]({'id':_0x16c1c9[_0xd63a('0x44')]['id']});}return db['VoiceRecording']['find']({'where':_0x3a751e,'attributes':['id',_0xd63a('0x4d')],'raw':!![]})[_0xd63a('0x22')](handleEntityNotFound(_0x2e0402,null))['then'](function(_0x48bb75){if(_0x48bb75){var _0x505405=util[_0xd63a('0x2d')]('%s.cypher',_0x48bb75['value']);if(fs[_0xd63a('0x52')](_0x505405)){_0x2ec520=!![];return _0x1e2353[_0xd63a('0x4f')](_0x505405,_0x48bb75['value'],config[_0xd63a('0x50')][_0xd63a('0x51')])[_0xd63a('0x22')](function(){return _0x48bb75;});}return _0x48bb75;}})[_0xd63a('0x22')](function(_0x1d0041){if(_0x1d0041){if(!fs[_0xd63a('0x52')](_0x1d0041['value'])){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))](_0xd63a('0x55'));}if(_0x1d0041[_0xd63a('0x56')]){return _0x2e0402['download'](_0x1d0041[_0xd63a('0x4d')],_0x1d0041[_0xd63a('0x56')]+path[_0xd63a('0x61')](_0x1d0041[_0xd63a('0x4d')]),function(){if(_0x2ec520){fs[_0xd63a('0x57')](_0x1d0041[_0xd63a('0x4d')]);}});}else{return _0x2e0402['download'](_0x1d0041[_0xd63a('0x4d')],function(_0x2572cf){if(_0x2ec520){fs[_0xd63a('0x57')](_0x1d0041[_0xd63a('0x4d')]);}});}}})[_0xd63a('0x42')](handleError(_0x2e0402,null));};exports['destroy']=function(_0xd911f2,_0x24c62c){return db[_0xd63a('0x28')]['find']({'where':{'id':_0xd911f2['params']['id']}})[_0xd63a('0x22')](function(_0x475bd5){if(_[_0xd63a('0x62')](_0x475bd5)){throw new ReferenceError('Entity\x20not\x20found');}return _0x475bd5;})[_0xd63a('0x22')](function(_0x3203c4){var _0x4ae5eb=_0x3203c4['value'];logger['info'](_0xd63a('0x63'),_0x4ae5eb);if(!_[_0xd63a('0x62')](_0x3203c4[_0xd63a('0x4d')])&&fs[_0xd63a('0x52')](_0x4ae5eb)){logger[_0xd63a('0x64')](_0xd63a('0x65')+_0x4ae5eb+_0xd63a('0x66'));fs[_0xd63a('0x67')](_0x4ae5eb);}_0x4ae5eb=_0x4ae5eb+_0xd63a('0x68');if(!_[_0xd63a('0x62')](_0x3203c4[_0xd63a('0x4d')])&&fs[_0xd63a('0x52')](_0x4ae5eb)){logger[_0xd63a('0x64')]('File:\x20\x22'+_0x4ae5eb+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xd63a('0x67')](_0x4ae5eb);}return _0x3203c4;})['then'](function(_0x4e9c69){if(!_0x4e9c69)throw new InternalError();return _0x4e9c69[_0xd63a('0x23')]();})[_0xd63a('0x22')](function(){_0x24c62c[_0xd63a('0x16')](0xcc)[_0xd63a('0x17')]();})[_0xd63a('0x42')](handleError(_0x24c62c,null));};function getBucketslist(_0x1595eb,_0x504144,_0x576c7b){return new Promise(function(_0x318b1a,_0x2a694d){var _0x598c81=new AWS['S3']({'accessKeyId':_0x504144,'secretAccessKey':_0x1595eb,'region':_0x576c7b});_0x598c81[_0xd63a('0x69')]({},function(_0x5ce04b,_0x2025d4){if(_0x5ce04b){return _0x2a694d(_0x5ce04b);}else{return _0x318b1a(_0x2025d4);}});});}function createBucket(_0x6a77af,_0x26644e,_0x46fcb7,_0x22762b){return new Promise(function(_0x5178c3,_0x5c2a56){var _0x33da23=new AWS['S3']({'accessKeyId':_0x26644e,'secretAccessKey':_0x6a77af,'region':_0x46fcb7});_0x33da23[_0xd63a('0x6a')]({'Bucket':_0x22762b},function(_0x55021e,_0x1106c5){if(_0x55021e){return _0x5c2a56(_0x55021e);}else{return _0x5178c3(_0x1106c5);}});});}function uploadFile(_0x39dfab,_0x20214b,_0x20a5b4,_0x52468a,_0x53d416,_0x5a94f3){return new Promise(function(_0x40ee5d,_0xa0a46e){var _0x4e4644=new AWS['S3']({'accessKeyId':_0x20214b,'secretAccessKey':_0x39dfab,'region':_0x20a5b4});_0x4e4644[_0xd63a('0x6b')]({'Bucket':_0x52468a,'Key':_0x53d416,'Body':_0x5a94f3},function(_0x57e472,_0x1c76fe){if(_0x57e472){return _0xa0a46e(_0x57e472);}else{return _0x40ee5d(_0x1c76fe);}});});}function startTranscribe(_0x4d58a4,_0x4569fa,_0x384db8,_0x32435b,_0x23a97b,_0x377c4c){return new Promise(function(_0x39d2b9,_0x5024a3){var _0x1a7cd7=new AWS['TranscribeService']({'accessKeyId':_0x4569fa,'secretAccessKey':_0x4d58a4,'region':_0x384db8});_0x1a7cd7[_0xd63a('0x6c')]({'TranscriptionJobName':_0x32435b,'LanguageCode':_0x23a97b,'Media':{'MediaFileUri':_0x377c4c}},function(_0x38ca8f,_0x7c7956){if(_0x38ca8f){return _0x5024a3(_0x38ca8f);}else{return _0x39d2b9(_0x7c7956);}});});}function transcribe(_0x392493,_0x719e00,_0x835ea6,_0x38c2f4,_0x1f4f19,_0x1e7a0a,_0x55c35f){return new Promise(function(_0x2afa10,_0x6fa3a){var _0x42b261={};logger[_0xd63a('0x64')](util[_0xd63a('0x2d')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x392493,_0x1f4f19));return uploadFile(_0x719e00,_0x835ea6,_0x38c2f4,_0x1f4f19,path[_0xd63a('0x6d')](_0x1e7a0a),fs[_0xd63a('0x6e')](_0x1e7a0a))[_0xd63a('0x22')](function(_0x581432){logger['info'](util[_0xd63a('0x2d')](_0xd63a('0x6f'),_0x392493,_0x1f4f19,_0x581432[_0xd63a('0x70')]));_0x42b261[_0xd63a('0x71')]=_0x581432['Bucket'];_0x42b261[_0xd63a('0x72')]=_0x581432[_0xd63a('0x70')];logger[_0xd63a('0x64')](util[_0xd63a('0x2d')](_0xd63a('0x73'),_0x392493));return startTranscribe(_0x719e00,_0x835ea6,_0x38c2f4,uuidv4(),_0x55c35f,_0x581432[_0xd63a('0x70')]);})['then'](function(_0x1ea01a){logger[_0xd63a('0x64')](util[_0xd63a('0x2d')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x392493,_0x1ea01a['TranscriptionJob']['TranscriptionJobName']));_0x42b261[_0xd63a('0x74')]=_0x1ea01a['TranscriptionJob']['TranscriptionJobName'];_0x42b261[_0xd63a('0x75')]=_0x1ea01a[_0xd63a('0x76')][_0xd63a('0x77')];return _0x2afa10(_0x42b261);})[_0xd63a('0x42')](function(_0x4167c3){return _0x6fa3a(_0x4167c3);});});}exports[_0xd63a('0x78')]=function(_0x19bb00,_0x29f260,_0x383f21){var _0x202b3d;var _0x202a9d;var _0x5a0e74;var _0x49a4e7=require(_0xd63a('0x4b'));return db[_0xd63a('0x28')][_0xd63a('0x79')]({'where':{'id':_0x19bb00['params']['id']}})[_0xd63a('0x22')](function(_0x2273bc){if(_0x2273bc){var _0x4a43b5=util[_0xd63a('0x2d')](_0xd63a('0x4e'),_0x2273bc[_0xd63a('0x4d')]);if(fs[_0xd63a('0x52')](_0x4a43b5)){cypher=!![];return _0x49a4e7[_0xd63a('0x4f')](_0x4a43b5,_0x2273bc[_0xd63a('0x4d')],config[_0xd63a('0x50')][_0xd63a('0x51')])[_0xd63a('0x22')](function(){return _0x2273bc;});}return _0x2273bc;}})[_0xd63a('0x22')](function(_0x3484e7){if(!_0x3484e7){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))](_0xd63a('0x7a'));}_0x202a9d=_0x3484e7;return db['Setting'][_0xd63a('0x79')]({'where':{'id':0x1}});})[_0xd63a('0x22')](handleEntityNotFound(_0x29f260,null))[_0xd63a('0x22')](function(_0x5e9abf){if(_0x5e9abf){_0x202b3d=_0x5e9abf;if(!_0x202b3d[_0xd63a('0x7b')]||!_0x202b3d['transcribeAccountId']||!_0x202b3d[_0xd63a('0x7c')]||!_0x202b3d[_0xd63a('0x7d')]||!_0x202b3d[_0xd63a('0x71')]){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))]('Transcribe\x20not\x20configured');}if(_0x19bb00['body'][_0xd63a('0x7e')]&&(!_0x202b3d[_0xd63a('0x7f')]||!_0x202b3d[_0xd63a('0x80')]||!_0x202b3d[_0xd63a('0x81')]||!_0x202b3d['language']||!_0x202b3d[_0xd63a('0x71')])){throw new db[(_0xd63a('0x53'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db[_0xd63a('0x82')][_0xd63a('0x79')]({'where':{'id':_0x202b3d[_0xd63a('0x83')]}});}})[_0xd63a('0x22')](function(_0x1dcecf){if(!_0x1dcecf){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1dcecf[_0xd63a('0x84')]||!_0x1dcecf['data2']){throw new db[(_0xd63a('0x53'))][(_0xd63a('0x54'))](_0xd63a('0x85'));}_0x5a0e74=_0x1dcecf;return getBucketslist(_0x5a0e74[_0xd63a('0x84')],_0x5a0e74[_0xd63a('0x86')],_0x202b3d['transcribeRegion']);})[_0xd63a('0x22')](function(_0x5f3e38){if(_0x5f3e38&&_0x5f3e38[_0xd63a('0x87')]){var _0x502f3d=_[_0xd63a('0x46')](_0x5f3e38[_0xd63a('0x87')],function(_0x2f9cda){return _0x2f9cda[_0xd63a('0x88')]===_0x202b3d[_0xd63a('0x71')];});if(!_0x502f3d){logger[_0xd63a('0x64')](util['format'](_0xd63a('0x89'),_0x19bb00[_0xd63a('0x44')]['id'],_0x202b3d[_0xd63a('0x71')]));return createBucket(_0x5a0e74[_0xd63a('0x84')],_0x5a0e74[_0xd63a('0x86')],_0x202b3d['transcribeRegion'],_0x202b3d[_0xd63a('0x71')]);}logger[_0xd63a('0x64')](util[_0xd63a('0x2d')](_0xd63a('0x8a'),_0x19bb00[_0xd63a('0x44')]['id'],_0x202b3d[_0xd63a('0x71')]));return;}})[_0xd63a('0x22')](function(_0x542d00){if(_0x202a9d[_0xd63a('0x75')]===_0xd63a('0x8b')){return transcribe(_0x19bb00['params']['id'],_0x5a0e74['data1'],_0x5a0e74[_0xd63a('0x86')],_0x202b3d[_0xd63a('0x7c')],_0x202b3d[_0xd63a('0x71')],_0x202a9d['value'],_0x202b3d[_0xd63a('0x7d')]);}else{logger[_0xd63a('0x64')](util[_0xd63a('0x2d')](_0xd63a('0x8c'),_0x19bb00['params']['id']));return{'transcribeStatus':_0xd63a('0x8d')};}})[_0xd63a('0x22')](function(_0x56aa7d){if(_0x56aa7d){_0x56aa7d[_0xd63a('0x8e')]=_0x19bb00[_0xd63a('0x48')][_0xd63a('0x7e')];return _0x202a9d['updateAttributes'](_0x56aa7d);}})[_0xd63a('0x22')](respondWithResult(_0x29f260,null))[_0xd63a('0x42')](handleError(_0x29f260,null));};function writeFile(_0x1bc29c,_0x23b90a){return new Promise(function(_0x3dd431,_0x893790){fs[_0xd63a('0x8f')](_0x23b90a,_0x1bc29c,function(_0x1de22b,_0xd1d0d5){if(_0x1de22b){return _0x893790(_0x1de22b);}else{return _0x3dd431(_0xd1d0d5);}});});}exports['downloadTranscribe']=function(_0x265c07,_0x1cd883,_0x27360b){return db[_0xd63a('0x28')]['findOne']({'where':{'id':_0x265c07[_0xd63a('0x44')]['id']}})[_0xd63a('0x22')](handleEntityNotFound(_0x1cd883))[_0xd63a('0x22')](function(_0x53fd13){if(_0x53fd13&&_0x53fd13[_0xd63a('0x90')]){var _0x384ed4=_0x53fd13[_0xd63a('0x90')];var _0x33936b=config[_0xd63a('0x91')]+_0xd63a('0x92')+_0x53fd13['id']+'.txt';if(fs[_0xd63a('0x52')](_0x33936b)){return _0x33936b;}return writeFile(_0x384ed4,_0x33936b)['then'](function(){return _0x33936b;});}else{throw new db['Sequelize'][(_0xd63a('0x54'))](_0xd63a('0x93'));}})[_0xd63a('0x22')](function(_0x3522e6){return _0x1cd883[_0xd63a('0x4a')](_0x3522e6);})['catch'](handleError(_0x1cd883));};
\ No newline at end of file
index d08217b..5bb1640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b1=['exports','define','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes'];(function(_0x18e49a,_0x5bf163){var _0x1397b5=function(_0x28dfb0){while(--_0x28dfb0){_0x18e49a['push'](_0x18e49a['shift']());}};_0x1397b5(++_0x5bf163);}(_0x43b1,0x7d));var _0x143b=function(_0x2ae8f3,_0x297a82){_0x2ae8f3=_0x2ae8f3-0x0;var _0x5370ef=_0x43b1[_0x2ae8f3];return _0x5370ef;};'use strict';var attributes=require(_0x143b('0x0'));module[_0x143b('0x1')]=function(_0x426f2c,_0x4c0b11){return _0x426f2c[_0x143b('0x2')]('VoiceRecording',attributes,{'tableName':_0x143b('0x3'),'paranoid':![],'indexes':[{'name':_0x143b('0x4'),'fields':[_0x143b('0x4')]},{'name':_0x143b('0x5'),'fields':[_0x143b('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x579c=['uniqueid','transcribeStatus','./voiceRecording.attributes','exports','define','voice_recordings'];(function(_0x56a061,_0x53fb1b){var _0x105fa0=function(_0x164d08){while(--_0x164d08){_0x56a061['push'](_0x56a061['shift']());}};_0x105fa0(++_0x53fb1b);}(_0x579c,0xda));var _0xc579=function(_0x462644,_0x28718d){_0x462644=_0x462644-0x0;var _0x4f4cbc=_0x579c[_0x462644];return _0x4f4cbc;};'use strict';var attributes=require(_0xc579('0x0'));module[_0xc579('0x1')]=function(_0x2757c6,_0x1db849){return _0x2757c6[_0xc579('0x2')]('VoiceRecording',attributes,{'tableName':_0xc579('0x3'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc579('0x4')]},{'name':_0xc579('0x5'),'fields':[_0xc579('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index 3d75169..43b54da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','raw','options','where','limit','debug','../../components/encryptor','Setting','create','existsSync','%s.cypher','value','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0xe5af,0x9c));var _0xfe5a=function(_0x555cac,_0x220fc4){_0x555cac=_0x555cac-0x0;var _0x26850b=_0xe5af[_0x555cac];return _0x26850b;};'use strict';var _=require('lodash');var util=require(_0xfe5a('0x0'));var moment=require(_0xfe5a('0x1'));var BPromise=require('bluebird');var rs=require(_0xfe5a('0x2'));var fs=require('fs');var Redis=require(_0xfe5a('0x3'));var db=require(_0xfe5a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xfe5a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xfe5a('0x6'));var client=jayson[_0xfe5a('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eea2e,_0x356c69,_0x106492){return new BPromise(function(_0xfb4357,_0x3e683c){return client['request'](_0x5eea2e,_0x106492)[_0xfe5a('0x8')](function(_0x5a48ff){logger['info'](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));logger['debug'](_0xfe5a('0xb'),_0x356c69,_0xfe5a('0xa'),JSON[_0xfe5a('0xc')](_0x5a48ff));if(_0x5a48ff[_0xfe5a('0xd')]){if(_0x5a48ff[_0xfe5a('0xd')]['code']===0x1f4){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0x3e683c(_0x5a48ff[_0xfe5a('0xd')]['message']);}logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);return _0xfb4357(_0x5a48ff[_0xfe5a('0xd')][_0xfe5a('0xe')]);}else{logger[_0xfe5a('0xf')](_0xfe5a('0x9'),_0x356c69,_0xfe5a('0xa'));_0xfb4357(_0x5a48ff[_0xfe5a('0x10')][_0xfe5a('0xe')]);}})[_0xfe5a('0x11')](function(_0x22afa7){logger[_0xfe5a('0xd')](_0xfe5a('0x9'),_0x356c69,_0x22afa7);_0x3e683c(_0x22afa7);});});}exports[_0xfe5a('0x12')]=function(_0x5bf597){var _0x20620b=this;return new Promise(function(_0x456707,_0x54d5fb){return db[_0xfe5a('0x13')][_0xfe5a('0x14')](_0x5bf597[_0xfe5a('0x15')],{'raw':_0x5bf597['options']?_0x5bf597['options'][_0xfe5a('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597[_0xfe5a('0x17')][_0xfe5a('0x18')]||null:null,'attributes':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597[_0xfe5a('0x17')]['attributes']||null:null,'limit':_0x5bf597[_0xfe5a('0x17')]?_0x5bf597['options'][_0xfe5a('0x19')]||null:null})[_0xfe5a('0x8')](function(_0x1fbde5){logger['info']('UpdateVoiceRecording',_0x5bf597);logger[_0xfe5a('0x1a')](_0xfe5a('0x12'),_0x5bf597,JSON['stringify'](_0x1fbde5));_0x456707(_0x1fbde5);})[_0xfe5a('0x11')](function(_0x26f744){logger['error'](_0xfe5a('0x12'),_0x26f744[_0xfe5a('0xe')],_0x5bf597);_0x54d5fb(_0x20620b[_0xfe5a('0xd')](0x1f4,_0x26f744[_0xfe5a('0xe')]));});});};exports['CreateVoiceRecording']=function(_0x42136e){var _0x2f5d04=this;return new Promise(function(_0x24481f,_0x1cd531){var _0x36bf20=require(_0xfe5a('0x1b'));var _0xdbf1e0;return db[_0xfe5a('0x1c')]['findOne']({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0xfe5a('0x8')](function(_0x485f9d){_0xdbf1e0=_0x485f9d;return db[_0xfe5a('0x13')][_0xfe5a('0x1d')](_0x42136e[_0xfe5a('0x15')]);})['then'](function(_0x48a061){if(_0xdbf1e0['callRecordingEncryption']&&fs[_0xfe5a('0x1e')](_0x48a061['value'])){var _0x51d1f4=util['format'](_0xfe5a('0x1f'),_0x48a061[_0xfe5a('0x20')]);return _0x36bf20[_0xfe5a('0x21')](_0x48a061[_0xfe5a('0x20')],_0x51d1f4,config[_0xfe5a('0x22')][_0xfe5a('0x23')])[_0xfe5a('0x8')](function(){fs[_0xfe5a('0x24')](_0x48a061[_0xfe5a('0x20')]);logger[_0xfe5a('0xf')](_0xfe5a('0x25'));return _0x48a061;});}return _0x48a061;})['then'](function(_0x1f0c86){logger[_0xfe5a('0xf')]('CreateVoiceRecording',_0x42136e);logger[_0xfe5a('0x1a')](_0xfe5a('0x26'),_0x42136e,JSON[_0xfe5a('0xc')](_0x1f0c86));_0x24481f(_0x1f0c86);})[_0xfe5a('0x11')](function(_0xe5a992){logger['error']('CreateVoiceRecording',_0xe5a992[_0xfe5a('0xe')],_0x42136e);_0x1cd531(_0x2f5d04['error'](0x1f4,_0xe5a992[_0xfe5a('0xe')]));});});};
\ No newline at end of file
+var _0x90b1=['request','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','limit','then','../../components/encryptor','findOne','callRecordingEncryption','create','existsSync','%s.cypher','encryptFile','value','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http'];(function(_0x43d701,_0x4bb2e9){var _0x2ec4c6=function(_0x4d9765){while(--_0x4d9765){_0x43d701['push'](_0x43d701['shift']());}};_0x2ec4c6(++_0x4bb2e9);}(_0x90b1,0x1bb));var _0x190b=function(_0x57112d,_0x9ea573){_0x57112d=_0x57112d-0x0;var _0x3c32b9=_0x90b1[_0x57112d];return _0x3c32b9;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var moment=require(_0x190b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x190b('0x3'));var db=require(_0x190b('0x4'))['db'];var utils=require(_0x190b('0x5'));var logger=require(_0x190b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x190b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34a689,_0x3b57f7,_0x626aa1){return new BPromise(function(_0x311161,_0x802924){return client[_0x190b('0x8')](_0x34a689,_0x626aa1)['then'](function(_0x14b93d){logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));logger[_0x190b('0xc')](_0x190b('0xd'),_0x3b57f7,_0x190b('0xb'),JSON[_0x190b('0xe')](_0x14b93d));if(_0x14b93d['error']){if(_0x14b93d[_0x190b('0xf')][_0x190b('0x10')]===0x1f4){logger['error'](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x802924(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}logger[_0x190b('0xf')](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x311161(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}else{logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));_0x311161(_0x14b93d[_0x190b('0x12')][_0x190b('0x11')]);}})[_0x190b('0x13')](function(_0x5c63d9){logger[_0x190b('0xf')]('VoiceRecording,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}exports[_0x190b('0x14')]=function(_0x21e458){var _0x56d07a=this;return new Promise(function(_0x16c009,_0x50a3c4){return db[_0x190b('0x15')][_0x190b('0x16')](_0x21e458[_0x190b('0x17')],{'raw':_0x21e458[_0x190b('0x18')]?_0x21e458[_0x190b('0x18')][_0x190b('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1a')]||null:null,'attributes':_0x21e458['options']?_0x21e458[_0x190b('0x18')]['attributes']||null:null,'limit':_0x21e458['options']?_0x21e458[_0x190b('0x18')][_0x190b('0x1b')]||null:null})[_0x190b('0x1c')](function(_0x4c0b6e){logger[_0x190b('0x9')](_0x190b('0x14'),_0x21e458);logger[_0x190b('0xc')](_0x190b('0x14'),_0x21e458,JSON[_0x190b('0xe')](_0x4c0b6e));_0x16c009(_0x4c0b6e);})[_0x190b('0x13')](function(_0x1bce97){logger['error']('UpdateVoiceRecording',_0x1bce97[_0x190b('0x11')],_0x21e458);_0x50a3c4(_0x56d07a[_0x190b('0xf')](0x1f4,_0x1bce97['message']));});});};exports['CreateVoiceRecording']=function(_0x3260d5){var _0x4e2a93=this;return new Promise(function(_0x328e5e,_0x3b6aaf){var _0x51f8b4=require(_0x190b('0x1d'));var _0x1deea6;return db['Setting'][_0x190b('0x1e')]({'attributes':['id',_0x190b('0x1f')],'where':{'id':0x1},'raw':!![]})[_0x190b('0x1c')](function(_0x494f3f){_0x1deea6=_0x494f3f;return db['VoiceRecording'][_0x190b('0x20')](_0x3260d5['body']);})[_0x190b('0x1c')](function(_0x19e421){if(_0x1deea6['callRecordingEncryption']&&fs[_0x190b('0x21')](_0x19e421['value'])){var _0x40d060=util['format'](_0x190b('0x22'),_0x19e421['value']);return _0x51f8b4[_0x190b('0x23')](_0x19e421[_0x190b('0x24')],_0x40d060,config['secrets'][_0x190b('0x25')])[_0x190b('0x1c')](function(){fs[_0x190b('0x26')](_0x19e421[_0x190b('0x24')]);logger[_0x190b('0x9')](_0x190b('0x27'));return _0x19e421;});}return _0x19e421;})[_0x190b('0x1c')](function(_0x248919){logger['info']('CreateVoiceRecording',_0x3260d5);logger[_0x190b('0xc')](_0x190b('0x28'),_0x3260d5,JSON['stringify'](_0x248919));_0x328e5e(_0x248919);})[_0x190b('0x13')](function(_0x2dcd39){logger[_0x190b('0xf')](_0x190b('0x28'),_0x2dcd39[_0x190b('0x11')],_0x3260d5);_0x3b6aaf(_0x4e2a93[_0x190b('0xf')](0x1f4,_0x2dcd39[_0x190b('0x11')]));});});};
\ No newline at end of file
index fb56f2e..f4cdd38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa1=['isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id'];(function(_0x4cc71f,_0x55f42b){var _0xe136f4=function(_0x555a6a){while(--_0x555a6a){_0x4cc71f['push'](_0x4cc71f['shift']());}};_0xe136f4(++_0x55f42b);}(_0xbfa1,0xc5));var _0x1bfa=function(_0x447870,_0x53ea03){_0x447870=_0x447870-0x0;var _0x21fd74=_0xbfa1[_0x447870];return _0x21fd74;};'use strict';var multer=require(_0x1bfa('0x0'));var util=require(_0x1bfa('0x1'));var path=require(_0x1bfa('0x2'));var timeout=require('connect-timeout');var express=require(_0x1bfa('0x3'));var router=express[_0x1bfa('0x4')]();var fs_extra=require(_0x1bfa('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1bfa('0x6'));var config=require(_0x1bfa('0x7'));var controller=require('./voiceTransferReport.controller');router[_0x1bfa('0x8')]('/',auth['isAuthenticated'](),controller[_0x1bfa('0x9')]);router[_0x1bfa('0x8')](_0x1bfa('0xa'),auth['isAuthenticated'](),controller[_0x1bfa('0xb')]);router['get'](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller[_0x1bfa('0xe')]);router[_0x1bfa('0xf')]('/',auth[_0x1bfa('0xd')](),controller[_0x1bfa('0x10')]);router[_0x1bfa('0x11')](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller['update']);router[_0x1bfa('0x12')](_0x1bfa('0xc'),auth[_0x1bfa('0xd')](),controller[_0x1bfa('0x13')]);module[_0x1bfa('0x14')]=router;
\ No newline at end of file
+var _0x290b=['update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../config/environment','./voiceTransferReport.controller','isAuthenticated','index','get','/describe','/:id','post','create','put'];(function(_0x5c8fa9,_0x638fc8){var _0x1b8c2e=function(_0x12bf04){while(--_0x12bf04){_0x5c8fa9['push'](_0x5c8fa9['shift']());}};_0x1b8c2e(++_0x638fc8);}(_0x290b,0x93));var _0xb290=function(_0x4a61b1,_0x28a8b0){_0x4a61b1=_0x4a61b1-0x0;var _0x2bee51=_0x290b[_0x4a61b1];return _0x2bee51;};'use strict';var multer=require(_0xb290('0x0'));var util=require(_0xb290('0x1'));var path=require('path');var timeout=require(_0xb290('0x2'));var express=require(_0xb290('0x3'));var router=express['Router']();var fs_extra=require(_0xb290('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb290('0x5'));var controller=require(_0xb290('0x6'));router['get']('/',auth[_0xb290('0x7')](),controller[_0xb290('0x8')]);router[_0xb290('0x9')](_0xb290('0xa'),auth[_0xb290('0x7')](),controller['describe']);router[_0xb290('0x9')](_0xb290('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xb290('0xc')]('/',auth[_0xb290('0x7')](),controller[_0xb290('0xd')]);router[_0xb290('0xe')]('/:id',auth[_0xb290('0x7')](),controller[_0xb290('0xf')]);router['delete'](_0xb290('0xb'),auth[_0xb290('0x7')](),controller[_0xb290('0x10')]);module[_0xb290('0x11')]=router;
\ No newline at end of file
index 15a705a..077a508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3667=['exports','ENUM','blind','STRING','moment'];(function(_0x59a3f7,_0x3e7462){var _0x3c2fb2=function(_0x568e84){while(--_0x568e84){_0x59a3f7['push'](_0x59a3f7['shift']());}};_0x3c2fb2(++_0x3e7462);}(_0x3667,0xae));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x7366('0x0'));module[_0x7366('0x1')]={'type':{'type':Sequelize[_0x7366('0x2')](_0x7366('0x3'),'attended')},'result':{'type':Sequelize[_0x7366('0x4')]},'transfererchannel':{'type':Sequelize[_0x7366('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x7366('0x4')]},'transferercalleridname':{'type':Sequelize[_0x7366('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x7366('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x7366('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x7366('0x4')]},'transferercontext':{'type':Sequelize[_0x7366('0x4')]},'transfererexten':{'type':Sequelize[_0x7366('0x4')]},'transfererlinkedid':{'type':Sequelize[_0x7366('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x7366('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x7366('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x7366('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x7366('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x7366('0x4')]},'transfereecontext':{'type':Sequelize[_0x7366('0x4')]},'transfereeexten':{'type':Sequelize[_0x7366('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM']('Yes','No')},'context':{'type':Sequelize[_0x7366('0x4')]},'extension':{'type':Sequelize[_0x7366('0x4')]}};
\ No newline at end of file
+var _0x0fc6=['moment','ENUM','blind','attended','STRING','Yes','sequelize'];(function(_0x1d4944,_0x24a554){var _0xccfa20=function(_0x5ca62c){while(--_0x5ca62c){_0x1d4944['push'](_0x1d4944['shift']());}};_0xccfa20(++_0x24a554);}(_0x0fc6,0x1aa));var _0x60fc=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x0fc6[_0x199572];return _0x13cfa3;};'use strict';var Sequelize=require(_0x60fc('0x0'));var moment=require(_0x60fc('0x1'));module['exports']={'type':{'type':Sequelize[_0x60fc('0x2')](_0x60fc('0x3'),_0x60fc('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0x60fc('0x5')]},'transferercalleridname':{'type':Sequelize[_0x60fc('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x60fc('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x60fc('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x60fc('0x5')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x60fc('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0x60fc('0x5')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x60fc('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x60fc('0x5')]},'transfereecontext':{'type':Sequelize[_0x60fc('0x5')]},'transfereeexten':{'type':Sequelize[_0x60fc('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x60fc('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0x60fc('0x6'),'No')},'context':{'type':Sequelize[_0x60fc('0x5')]},'extension':{'type':Sequelize[_0x60fc('0x5')]}};
\ No newline at end of file
index 41374d4..11b6f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d9=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end','json','undefined','count','offset','limit','set','apply','save','then','destroy','status','error','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','sort','where','merge','VIRTUAL','filter','findAll','rows','catch','show','params','include','options','find','create','body','update','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x70ef14,_0x5aaadc){var _0x33f013=function(_0x1e071f){while(--_0x1e071f){_0x70ef14['push'](_0x70ef14['shift']());}};_0x33f013(++_0x5aaadc);}(_0x86d9,0xc8));var _0x986d=function(_0x38db26,_0xf08b74){_0x38db26=_0x38db26-0x0;var _0x39c57a=_0x86d9[_0x38db26];return _0x39c57a;};'use strict';var emlformat=require(_0x986d('0x0'));var rimraf=require(_0x986d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x986d('0x2'));var rp=require(_0x986d('0x3'));var moment=require(_0x986d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x986d('0x5'));var path=require(_0x986d('0x6'));var sox=require(_0x986d('0x7'));var csv=require(_0x986d('0x8'));var ejs=require(_0x986d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x986d('0xa'));var squel=require(_0x986d('0xb'));var crypto=require(_0x986d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x986d('0xd'));var toCsv=require(_0x986d('0x8'));var querystring=require(_0x986d('0xe'));var Papa=require(_0x986d('0xf'));var Redis=require('ioredis');var authService=require(_0x986d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x986d('0x11'));var hardwareService=require(_0x986d('0x12'));var logger=require(_0x986d('0x13'))('api');var utils=require(_0x986d('0x14'));var config=require(_0x986d('0x15'));var licenseUtil=require(_0x986d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a66c7,_0x50fae9){_0x50fae9=_0x50fae9||0xcc;return function(_0x3240a6){if(_0x3240a6){return _0x4a66c7['sendStatus'](_0x50fae9);}return _0x4a66c7['status'](_0x50fae9)[_0x986d('0x17')]();};}function respondWithResult(_0x46a19e,_0x411d09){_0x411d09=_0x411d09||0xc8;return function(_0x207707){if(_0x207707){return _0x46a19e['status'](_0x411d09)[_0x986d('0x18')](_0x207707);}};}function respondWithFilteredResult(_0x5c3aa6,_0x3ffd2c){return function(_0x109ebe){if(_0x109ebe){var _0x285708=typeof _0x3ffd2c['offset']===_0x986d('0x19')&&typeof _0x3ffd2c['limit']===_0x986d('0x19');var _0x30b097=_0x109ebe[_0x986d('0x1a')];var _0x55d8d0=_0x285708?0x0:_0x3ffd2c['offset'];var _0x246f59=_0x285708?_0x109ebe[_0x986d('0x1a')]:_0x3ffd2c[_0x986d('0x1b')]+_0x3ffd2c[_0x986d('0x1c')];var _0x25bb2e;if(_0x246f59>=_0x30b097){_0x246f59=_0x30b097;_0x25bb2e=0xc8;}else{_0x25bb2e=0xce;}_0x5c3aa6['status'](_0x25bb2e);return _0x5c3aa6[_0x986d('0x1d')]('Content-Range',_0x55d8d0+'-'+_0x246f59+'/'+_0x30b097)[_0x986d('0x18')](_0x109ebe);}return null;};}function patchUpdates(_0x31026a){return function(_0x2daf9f){try{jsonpatch[_0x986d('0x1e')](_0x2daf9f,_0x31026a,!![]);}catch(_0x15effe){return BPromise['reject'](_0x15effe);}return _0x2daf9f[_0x986d('0x1f')]();};}function saveUpdates(_0x56f6d1,_0x333922){return function(_0x2a3710){if(_0x2a3710){return _0x2a3710['update'](_0x56f6d1)[_0x986d('0x20')](function(_0x1cc953){return _0x1cc953;});}return null;};}function removeEntity(_0x15813f,_0x46e823){return function(_0x200dc6){if(_0x200dc6){return _0x200dc6[_0x986d('0x21')]()['then'](function(){_0x15813f[_0x986d('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa74568,_0x4840b0){return function(_0x4b04c6){if(!_0x4b04c6){_0xa74568['sendStatus'](0x194);}return _0x4b04c6;};}function handleError(_0x16ed23,_0x196cf6){_0x196cf6=_0x196cf6||0x1f4;return function(_0xbe4eed){logger[_0x986d('0x23')](_0xbe4eed[_0x986d('0x24')]);if(_0xbe4eed[_0x986d('0x25')]){delete _0xbe4eed['name'];}_0x16ed23[_0x986d('0x22')](_0x196cf6)[_0x986d('0x26')](_0xbe4eed);};}exports[_0x986d('0x27')]=function(_0x11286a,_0x11de08){var _0x4ab495={},_0x1baaad={},_0x5645be={'count':0x0,'rows':[]};var _0xf7f670=_[_0x986d('0x28')](db[_0x986d('0x29')][_0x986d('0x2a')],function(_0x3020ed){return{'name':_0x3020ed[_0x986d('0x2b')],'type':_0x3020ed[_0x986d('0x2c')]['key']};});_0x1baaad[_0x986d('0x2d')]=_[_0x986d('0x28')](_0xf7f670,'name');_0x1baaad['query']=_[_0x986d('0x2e')](_0x11286a[_0x986d('0x2f')]);_0x1baaad[_0x986d('0x30')]=_['intersection'](_0x1baaad[_0x986d('0x2d')],_0x1baaad[_0x986d('0x2f')]);_0x4ab495['attributes']=_[_0x986d('0x31')](_0x1baaad[_0x986d('0x2d')],qs[_0x986d('0x32')](_0x11286a[_0x986d('0x2f')][_0x986d('0x32')]));_0x4ab495[_0x986d('0x33')]=_0x4ab495[_0x986d('0x33')][_0x986d('0x34')]?_0x4ab495[_0x986d('0x33')]:_0x1baaad['model'];if(!_0x11286a[_0x986d('0x2f')]['hasOwnProperty'](_0x986d('0x35'))){_0x4ab495['limit']=qs[_0x986d('0x1c')](_0x11286a[_0x986d('0x2f')][_0x986d('0x1c')]);_0x4ab495['offset']=qs['offset'](_0x11286a[_0x986d('0x2f')]['offset']);}_0x4ab495['order']=qs[_0x986d('0x36')](_0x11286a[_0x986d('0x2f')][_0x986d('0x36')]);_0x4ab495[_0x986d('0x37')]=qs[_0x986d('0x30')](_['pick'](_0x11286a[_0x986d('0x2f')],_0x1baaad['filters']),_0xf7f670);if(_0x11286a[_0x986d('0x2f')]['filter']){_0x4ab495[_0x986d('0x37')]=_[_0x986d('0x38')](_0x4ab495['where'],{'$or':_[_0x986d('0x28')](_0xf7f670,function(_0x2a592f){if(_0x2a592f['type']!==_0x986d('0x39')){var _0x2bfa3f={};_0x2bfa3f[_0x2a592f[_0x986d('0x25')]]={'$like':'%'+_0x11286a[_0x986d('0x2f')][_0x986d('0x3a')]+'%'};return _0x2bfa3f;}})});}_0x4ab495=_[_0x986d('0x38')]({},_0x4ab495,_0x11286a['options']);var _0x4705ff={'where':_0x4ab495[_0x986d('0x37')]};return db[_0x986d('0x29')][_0x986d('0x1a')](_0x4705ff)[_0x986d('0x20')](function(_0x5f1e60){_0x5645be['count']=_0x5f1e60;if(_0x11286a[_0x986d('0x2f')]['includeAll']){_0x4ab495['include']=[{'all':!![]}];}return db[_0x986d('0x29')][_0x986d('0x3b')](_0x4ab495);})[_0x986d('0x20')](function(_0x5c945d){_0x5645be[_0x986d('0x3c')]=_0x5c945d;return _0x5645be;})[_0x986d('0x20')](respondWithFilteredResult(_0x11de08,_0x4ab495))[_0x986d('0x3d')](handleError(_0x11de08,null));};exports[_0x986d('0x3e')]=function(_0x37d460,_0x39a8d8){var _0x1a26a3={'raw':!![],'where':{'id':_0x37d460[_0x986d('0x3f')]['id']}},_0x3438e6={};_0x3438e6['model']=_[_0x986d('0x2e')](db[_0x986d('0x29')]['rawAttributes']);_0x3438e6['query']=_[_0x986d('0x2e')](_0x37d460[_0x986d('0x2f')]);_0x3438e6[_0x986d('0x30')]=_[_0x986d('0x31')](_0x3438e6[_0x986d('0x2d')],_0x3438e6[_0x986d('0x2f')]);_0x1a26a3[_0x986d('0x33')]=_[_0x986d('0x31')](_0x3438e6[_0x986d('0x2d')],qs[_0x986d('0x32')](_0x37d460['query']['fields']));_0x1a26a3[_0x986d('0x33')]=_0x1a26a3[_0x986d('0x33')][_0x986d('0x34')]?_0x1a26a3['attributes']:_0x3438e6[_0x986d('0x2d')];if(_0x37d460[_0x986d('0x2f')]['includeAll']){_0x1a26a3[_0x986d('0x40')]=[{'all':!![]}];}_0x1a26a3=_[_0x986d('0x38')]({},_0x1a26a3,_0x37d460[_0x986d('0x41')]);return db[_0x986d('0x29')][_0x986d('0x42')](_0x1a26a3)['then'](handleEntityNotFound(_0x39a8d8,null))[_0x986d('0x20')](respondWithResult(_0x39a8d8,null))['catch'](handleError(_0x39a8d8,null));};exports[_0x986d('0x43')]=function(_0x494252,_0x26dd07){return db[_0x986d('0x29')]['create'](_0x494252[_0x986d('0x44')],{})[_0x986d('0x20')](respondWithResult(_0x26dd07,0xc9))[_0x986d('0x3d')](handleError(_0x26dd07,null));};exports[_0x986d('0x45')]=function(_0x4c14d7,_0x1cbc1e){if(_0x4c14d7[_0x986d('0x44')]['id']){delete _0x4c14d7[_0x986d('0x44')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x4c14d7[_0x986d('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1cbc1e,null))[_0x986d('0x20')](saveUpdates(_0x4c14d7[_0x986d('0x44')],null))[_0x986d('0x20')](respondWithResult(_0x1cbc1e,null))[_0x986d('0x3d')](handleError(_0x1cbc1e,null));};exports[_0x986d('0x21')]=function(_0x1d19c9,_0x263164){return db[_0x986d('0x29')]['find']({'where':{'id':_0x1d19c9[_0x986d('0x3f')]['id']}})[_0x986d('0x20')](handleEntityNotFound(_0x263164,null))[_0x986d('0x20')](removeEntity(_0x263164,null))['catch'](handleError(_0x263164,null));};exports[_0x986d('0x46')]=function(_0x10f695,_0x17be3c){return db['VoiceTransferReport']['describe']()[_0x986d('0x20')](respondWithResult(_0x17be3c,null))['catch'](handleError(_0x17be3c,null));};
\ No newline at end of file
+var _0x3215=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','VoiceTransferReport','include','findAll','rows','show','length','find','catch','create','body','update','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3215,0xc7));var _0x5321=function(_0x31e12e,_0x199544){_0x31e12e=_0x31e12e-0x0;var _0x5d7df6=_0x3215[_0x31e12e];return _0x5d7df6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5321('0x0'));var zipdir=require(_0x5321('0x1'));var jsonpatch=require(_0x5321('0x2'));var rp=require(_0x5321('0x3'));var moment=require('moment');var BPromise=require(_0x5321('0x4'));var Mustache=require(_0x5321('0x5'));var util=require(_0x5321('0x6'));var path=require('path');var sox=require(_0x5321('0x7'));var csv=require(_0x5321('0x8'));var ejs=require(_0x5321('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5321('0xa'));var crypto=require(_0x5321('0xb'));var jsforce=require(_0x5321('0xc'));var deskjs=require(_0x5321('0xd'));var toCsv=require(_0x5321('0x8'));var querystring=require(_0x5321('0xe'));var Papa=require(_0x5321('0xf'));var Redis=require(_0x5321('0x10'));var authService=require(_0x5321('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5321('0x12'));var logger=require('../../config/logger')(_0x5321('0x13'));var utils=require('../../config/utils');var config=require(_0x5321('0x14'));var licenseUtil=require(_0x5321('0x15'));var db=require(_0x5321('0x16'))['db'];function respondWithStatusCode(_0x2ef941,_0x11e26b){_0x11e26b=_0x11e26b||0xcc;return function(_0x22d000){if(_0x22d000){return _0x2ef941[_0x5321('0x17')](_0x11e26b);}return _0x2ef941[_0x5321('0x18')](_0x11e26b)['end']();};}function respondWithResult(_0x23b10b,_0x1d7ddd){_0x1d7ddd=_0x1d7ddd||0xc8;return function(_0x41ba33){if(_0x41ba33){return _0x23b10b[_0x5321('0x18')](_0x1d7ddd)[_0x5321('0x19')](_0x41ba33);}};}function respondWithFilteredResult(_0x16b6f4,_0x483327){return function(_0x15f37d){if(_0x15f37d){var _0x12beae=typeof _0x483327[_0x5321('0x1a')]===_0x5321('0x1b')&&typeof _0x483327[_0x5321('0x1c')]===_0x5321('0x1b');var _0x789e36=_0x15f37d[_0x5321('0x1d')];var _0x4feb2c=_0x12beae?0x0:_0x483327[_0x5321('0x1a')];var _0x4ebb04=_0x12beae?_0x15f37d[_0x5321('0x1d')]:_0x483327[_0x5321('0x1a')]+_0x483327['limit'];var _0x595c1f;if(_0x4ebb04>=_0x789e36){_0x4ebb04=_0x789e36;_0x595c1f=0xc8;}else{_0x595c1f=0xce;}_0x16b6f4[_0x5321('0x18')](_0x595c1f);return _0x16b6f4[_0x5321('0x1e')]('Content-Range',_0x4feb2c+'-'+_0x4ebb04+'/'+_0x789e36)[_0x5321('0x19')](_0x15f37d);}return null;};}function patchUpdates(_0x13bac9){return function(_0x5e1af4){try{jsonpatch[_0x5321('0x1f')](_0x5e1af4,_0x13bac9,!![]);}catch(_0x5548d8){return BPromise[_0x5321('0x20')](_0x5548d8);}return _0x5e1af4[_0x5321('0x21')]();};}function saveUpdates(_0x394777,_0x7c75a4){return function(_0x213a82){if(_0x213a82){return _0x213a82['update'](_0x394777)[_0x5321('0x22')](function(_0x392eec){return _0x392eec;});}return null;};}function removeEntity(_0x2a0a76,_0x4e3d84){return function(_0x11b10b){if(_0x11b10b){return _0x11b10b[_0x5321('0x23')]()['then'](function(){_0x2a0a76[_0x5321('0x18')](0xcc)[_0x5321('0x24')]();});}};}function handleEntityNotFound(_0xea7664,_0x4be120){return function(_0x5d2278){if(!_0x5d2278){_0xea7664['sendStatus'](0x194);}return _0x5d2278;};}function handleError(_0x122287,_0x2a3c0a){_0x2a3c0a=_0x2a3c0a||0x1f4;return function(_0x5bcf26){logger['error'](_0x5bcf26[_0x5321('0x25')]);if(_0x5bcf26[_0x5321('0x26')]){delete _0x5bcf26[_0x5321('0x26')];}_0x122287[_0x5321('0x18')](_0x2a3c0a)[_0x5321('0x27')](_0x5bcf26);};}exports[_0x5321('0x28')]=function(_0x3f4dde,_0x44db53){var _0x32fb03={},_0xdf6104={},_0x255ed5={'count':0x0,'rows':[]};var _0xfca9ac=_[_0x5321('0x29')](db['VoiceTransferReport'][_0x5321('0x2a')],function(_0x2da324){return{'name':_0x2da324[_0x5321('0x2b')],'type':_0x2da324[_0x5321('0x2c')]['key']};});_0xdf6104[_0x5321('0x2d')]=_[_0x5321('0x29')](_0xfca9ac,_0x5321('0x26'));_0xdf6104[_0x5321('0x2e')]=_[_0x5321('0x2f')](_0x3f4dde[_0x5321('0x2e')]);_0xdf6104[_0x5321('0x30')]=_[_0x5321('0x31')](_0xdf6104[_0x5321('0x2d')],_0xdf6104[_0x5321('0x2e')]);_0x32fb03[_0x5321('0x32')]=_[_0x5321('0x31')](_0xdf6104[_0x5321('0x2d')],qs[_0x5321('0x33')](_0x3f4dde[_0x5321('0x2e')][_0x5321('0x33')]));_0x32fb03[_0x5321('0x32')]=_0x32fb03['attributes']['length']?_0x32fb03[_0x5321('0x32')]:_0xdf6104[_0x5321('0x2d')];if(!_0x3f4dde[_0x5321('0x2e')][_0x5321('0x34')](_0x5321('0x35'))){_0x32fb03[_0x5321('0x1c')]=qs[_0x5321('0x1c')](_0x3f4dde['query'][_0x5321('0x1c')]);_0x32fb03[_0x5321('0x1a')]=qs['offset'](_0x3f4dde[_0x5321('0x2e')][_0x5321('0x1a')]);}_0x32fb03[_0x5321('0x36')]=qs['sort'](_0x3f4dde['query'][_0x5321('0x37')]);_0x32fb03[_0x5321('0x38')]=qs[_0x5321('0x30')](_['pick'](_0x3f4dde['query'],_0xdf6104[_0x5321('0x30')]),_0xfca9ac);if(_0x3f4dde[_0x5321('0x2e')][_0x5321('0x39')]){_0x32fb03['where']=_['merge'](_0x32fb03['where'],{'$or':_[_0x5321('0x29')](_0xfca9ac,function(_0x58581d){if(_0x58581d[_0x5321('0x2c')]!=='VIRTUAL'){var _0x23fd8d={};_0x23fd8d[_0x58581d[_0x5321('0x26')]]={'$like':'%'+_0x3f4dde['query'][_0x5321('0x39')]+'%'};return _0x23fd8d;}})});}_0x32fb03=_[_0x5321('0x3a')]({},_0x32fb03,_0x3f4dde[_0x5321('0x3b')]);var _0x3571ee={'where':_0x32fb03[_0x5321('0x38')]};return db[_0x5321('0x3c')]['count'](_0x3571ee)[_0x5321('0x22')](function(_0x52f06f){_0x255ed5[_0x5321('0x1d')]=_0x52f06f;if(_0x3f4dde[_0x5321('0x2e')]['includeAll']){_0x32fb03[_0x5321('0x3d')]=[{'all':!![]}];}return db[_0x5321('0x3c')][_0x5321('0x3e')](_0x32fb03);})[_0x5321('0x22')](function(_0x529e80){_0x255ed5[_0x5321('0x3f')]=_0x529e80;return _0x255ed5;})[_0x5321('0x22')](respondWithFilteredResult(_0x44db53,_0x32fb03))['catch'](handleError(_0x44db53,null));};exports[_0x5321('0x40')]=function(_0x19346b,_0x122a55){var _0x3527af={'raw':!![],'where':{'id':_0x19346b['params']['id']}},_0x4ddfbe={};_0x4ddfbe[_0x5321('0x2d')]=_['keys'](db[_0x5321('0x3c')][_0x5321('0x2a')]);_0x4ddfbe[_0x5321('0x2e')]=_['keys'](_0x19346b[_0x5321('0x2e')]);_0x4ddfbe[_0x5321('0x30')]=_[_0x5321('0x31')](_0x4ddfbe['model'],_0x4ddfbe[_0x5321('0x2e')]);_0x3527af['attributes']=_['intersection'](_0x4ddfbe[_0x5321('0x2d')],qs['fields'](_0x19346b[_0x5321('0x2e')][_0x5321('0x33')]));_0x3527af[_0x5321('0x32')]=_0x3527af[_0x5321('0x32')][_0x5321('0x41')]?_0x3527af['attributes']:_0x4ddfbe[_0x5321('0x2d')];if(_0x19346b[_0x5321('0x2e')]['includeAll']){_0x3527af[_0x5321('0x3d')]=[{'all':!![]}];}_0x3527af=_[_0x5321('0x3a')]({},_0x3527af,_0x19346b[_0x5321('0x3b')]);return db[_0x5321('0x3c')][_0x5321('0x42')](_0x3527af)['then'](handleEntityNotFound(_0x122a55,null))[_0x5321('0x22')](respondWithResult(_0x122a55,null))[_0x5321('0x43')](handleError(_0x122a55,null));};exports[_0x5321('0x44')]=function(_0x1e5f4a,_0xa2cbaf){return db['VoiceTransferReport'][_0x5321('0x44')](_0x1e5f4a[_0x5321('0x45')],{})['then'](respondWithResult(_0xa2cbaf,0xc9))['catch'](handleError(_0xa2cbaf,null));};exports[_0x5321('0x46')]=function(_0x1205d5,_0x22ffef){if(_0x1205d5[_0x5321('0x45')]['id']){delete _0x1205d5[_0x5321('0x45')]['id'];}return db['VoiceTransferReport'][_0x5321('0x42')]({'where':{'id':_0x1205d5[_0x5321('0x47')]['id']}})[_0x5321('0x22')](handleEntityNotFound(_0x22ffef,null))[_0x5321('0x22')](saveUpdates(_0x1205d5[_0x5321('0x45')],null))[_0x5321('0x22')](respondWithResult(_0x22ffef,null))[_0x5321('0x43')](handleError(_0x22ffef,null));};exports[_0x5321('0x23')]=function(_0x45c1fd,_0x253d72){return db[_0x5321('0x3c')]['find']({'where':{'id':_0x45c1fd[_0x5321('0x47')]['id']}})[_0x5321('0x22')](handleEntityNotFound(_0x253d72,null))['then'](removeEntity(_0x253d72,null))[_0x5321('0x43')](handleError(_0x253d72,null));};exports[_0x5321('0x48')]=function(_0x428773,_0x13b15b){return db[_0x5321('0x3c')][_0x5321('0x48')]()[_0x5321('0x22')](respondWithResult(_0x13b15b,null))[_0x5321('0x43')](handleError(_0x13b15b,null));};
\ No newline at end of file
index 0fd373b..93b0801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b33=['define','VoiceTransferReport','report_call_transfer','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x407461,_0x1cf61c){var _0x2b3ffa=function(_0x2acb31){while(--_0x2acb31){_0x407461['push'](_0x407461['shift']());}};_0x2b3ffa(++_0x1cf61c);}(_0x3b33,0x1c5));var _0x33b3=function(_0x33cc1a,_0x47052c){_0x33cc1a=_0x33cc1a-0x0;var _0x59c536=_0x3b33[_0x33cc1a];return _0x59c536;};'use strict';var _=require('lodash');var util=require(_0x33b3('0x0'));var logger=require(_0x33b3('0x1'))(_0x33b3('0x2'));var moment=require(_0x33b3('0x3'));var BPromise=require('bluebird');var rp=require(_0x33b3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x33b3('0x5'));var config=require(_0x33b3('0x6'));var attributes=require('./voiceTransferReport.attributes');module['exports']=function(_0x5caf0b,_0x4070bd){return _0x5caf0b[_0x33b3('0x7')](_0x33b3('0x8'),attributes,{'tableName':_0x33b3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff31=['rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4745c9,_0x2ed3f0){var _0x4c58d3=function(_0x20f0a6){while(--_0x20f0a6){_0x4745c9['push'](_0x4745c9['shift']());}};_0x4c58d3(++_0x2ed3f0);}(_0xff31,0x111));var _0x1ff3=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xff31[_0x33032e];return _0x13316b;};'use strict';var _=require(_0x1ff3('0x0'));var util=require('util');var logger=require(_0x1ff3('0x1'))(_0x1ff3('0x2'));var moment=require(_0x1ff3('0x3'));var BPromise=require(_0x1ff3('0x4'));var rp=require(_0x1ff3('0x5'));var fs=require('fs');var path=require(_0x1ff3('0x6'));var rimraf=require(_0x1ff3('0x7'));var config=require(_0x1ff3('0x8'));var attributes=require(_0x1ff3('0x9'));module[_0x1ff3('0xa')]=function(_0x51a171,_0x4f9631){return _0x51a171[_0x1ff3('0xb')](_0x1ff3('0xc'),attributes,{'tableName':_0x1ff3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 640c7c7..0c2661a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba8=['request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s'];(function(_0xa10366,_0x221663){var _0x20df6f=function(_0x5d8808){while(--_0x5d8808){_0xa10366['push'](_0xa10366['shift']());}};_0x20df6f(++_0x221663);}(_0xcba8,0x169));var _0x8cba=function(_0x197f55,_0x48dec5){_0x197f55=_0x197f55-0x0;var _0x468d60=_0xcba8[_0x197f55];return _0x468d60;};'use strict';var _=require('lodash');var util=require(_0x8cba('0x0'));var moment=require(_0x8cba('0x1'));var BPromise=require(_0x8cba('0x2'));var rs=require(_0x8cba('0x3'));var fs=require('fs');var Redis=require(_0x8cba('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8cba('0x5'));var logger=require(_0x8cba('0x6'))(_0x8cba('0x7'));var config=require(_0x8cba('0x8'));var jayson=require(_0x8cba('0x9'));var client=jayson[_0x8cba('0xa')][_0x8cba('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x622b9,_0x285393,_0x124873){return new BPromise(function(_0x41f201,_0x50154f){return client[_0x8cba('0xc')](_0x622b9,_0x124873)[_0x8cba('0xd')](function(_0x53a9ac){logger[_0x8cba('0xe')](_0x8cba('0xf'),_0x285393,_0x8cba('0x10'));logger[_0x8cba('0x11')](_0x8cba('0x12'),_0x285393,'request\x20sent',JSON['stringify'](_0x53a9ac));if(_0x53a9ac[_0x8cba('0x13')]){if(_0x53a9ac['error']['code']===0x1f4){logger[_0x8cba('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x285393,_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);return _0x50154f(_0x53a9ac['error'][_0x8cba('0x14')]);}logger[_0x8cba('0x13')](_0x8cba('0xf'),_0x285393,_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);return _0x41f201(_0x53a9ac[_0x8cba('0x13')][_0x8cba('0x14')]);}else{logger[_0x8cba('0xe')](_0x8cba('0xf'),_0x285393,_0x8cba('0x10'));_0x41f201(_0x53a9ac[_0x8cba('0x15')][_0x8cba('0x14')]);}})[_0x8cba('0x16')](function(_0x438b2e){logger[_0x8cba('0x13')](_0x8cba('0xf'),_0x285393,_0x438b2e);_0x50154f(_0x438b2e);});});}exports[_0x8cba('0x17')]=function(_0x159574){var _0x3350c1=this;return new Promise(function(_0x273e65,_0x23bd50){return db[_0x8cba('0x18')][_0x8cba('0x19')](_0x159574[_0x8cba('0x1a')],{'raw':_0x159574[_0x8cba('0x1b')]?_0x159574[_0x8cba('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xcc39be){logger[_0x8cba('0xe')](_0x8cba('0x17'),_0x159574);logger[_0x8cba('0x11')]('CreateVoiceTransferReport',_0x159574,JSON[_0x8cba('0x1c')](_0xcc39be));_0x273e65(_0xcc39be);})[_0x8cba('0x16')](function(_0x3c67ca){logger['error'](_0x8cba('0x17'),_0x3c67ca[_0x8cba('0x14')],_0x159574);_0x23bd50(_0x3350c1[_0x8cba('0x13')](0x1f4,_0x3c67ca['message']));});});};
\ No newline at end of file
+var _0x9d2b=['rpc','../../config/environment','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceTransferReport','create','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x9d2b,0x1a7));var _0xb9d2=function(_0x1d80be,_0x3a60ff){_0x1d80be=_0x1d80be-0x0;var _0xf9a4f3=_0x9d2b[_0x1d80be];return _0xf9a4f3;};'use strict';var _=require(_0xb9d2('0x0'));var util=require(_0xb9d2('0x1'));var moment=require(_0xb9d2('0x2'));var BPromise=require(_0xb9d2('0x3'));var rs=require(_0xb9d2('0x4'));var fs=require('fs');var Redis=require(_0xb9d2('0x5'));var db=require(_0xb9d2('0x6'))['db'];var utils=require(_0xb9d2('0x7'));var logger=require(_0xb9d2('0x8'))(_0xb9d2('0x9'));var config=require(_0xb9d2('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x9c78b4,_0x2bba0b,_0x3e7395){return new BPromise(function(_0x21c1f0,_0x520610){return client[_0xb9d2('0xb')](_0x9c78b4,_0x3e7395)[_0xb9d2('0xc')](function(_0x5dc3f3){logger[_0xb9d2('0xd')](_0xb9d2('0xe'),_0x2bba0b,_0xb9d2('0xf'));logger[_0xb9d2('0x10')](_0xb9d2('0x11'),_0x2bba0b,'request\x20sent',JSON[_0xb9d2('0x12')](_0x5dc3f3));if(_0x5dc3f3['error']){if(_0x5dc3f3[_0xb9d2('0x13')][_0xb9d2('0x14')]===0x1f4){logger[_0xb9d2('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x2bba0b,_0x5dc3f3[_0xb9d2('0x13')][_0xb9d2('0x15')]);return _0x520610(_0x5dc3f3['error'][_0xb9d2('0x15')]);}logger[_0xb9d2('0x13')](_0xb9d2('0xe'),_0x2bba0b,_0x5dc3f3[_0xb9d2('0x13')][_0xb9d2('0x15')]);return _0x21c1f0(_0x5dc3f3[_0xb9d2('0x13')][_0xb9d2('0x15')]);}else{logger['info'](_0xb9d2('0xe'),_0x2bba0b,_0xb9d2('0xf'));_0x21c1f0(_0x5dc3f3[_0xb9d2('0x16')]['message']);}})[_0xb9d2('0x17')](function(_0x814a80){logger['error'](_0xb9d2('0xe'),_0x2bba0b,_0x814a80);_0x520610(_0x814a80);});});}exports[_0xb9d2('0x18')]=function(_0x545918){var _0x2b9349=this;return new Promise(function(_0x844a8,_0xf35c37){return db['VoiceTransferReport'][_0xb9d2('0x19')](_0x545918['body'],{'raw':_0x545918[_0xb9d2('0x1a')]?_0x545918[_0xb9d2('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xb9d2('0xc')](function(_0x348d19){logger[_0xb9d2('0xd')](_0xb9d2('0x18'),_0x545918);logger[_0xb9d2('0x10')](_0xb9d2('0x18'),_0x545918,JSON[_0xb9d2('0x12')](_0x348d19));_0x844a8(_0x348d19);})[_0xb9d2('0x17')](function(_0x3aa775){logger[_0xb9d2('0x13')](_0xb9d2('0x18'),_0x3aa775[_0xb9d2('0x15')],_0x545918);_0xf35c37(_0x2b9349['error'](0x1f4,_0x3aa775['message']));});});};
\ No newline at end of file
index 57d778e..d87f190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1e5b8b,_0x4937be){_0x1e5b8b=_0x1e5b8b-0x0;var _0x59393f=_0xf3cd[_0x1e5b8b];return _0x59393f;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
+var _0x153f=['hold','/unhold','unhold','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','originate','/hangup','isWebrtcLicence','hangup','answer','/hold'];(function(_0x20f870,_0xce7343){var _0xc2c7ff=function(_0x5b4a79){while(--_0x5b4a79){_0x20f870['push'](_0x20f870['shift']());}};_0xc2c7ff(++_0xce7343);}(_0x153f,0x15b));var _0xf153=function(_0x594bf1,_0x22ec0f){_0x594bf1=_0x594bf1-0x0;var _0x50b8dc=_0x153f[_0x594bf1];return _0x50b8dc;};'use strict';var express=require(_0xf153('0x0'));var router=express[_0xf153('0x1')]();var auth=require(_0xf153('0x2'));var controller=require(_0xf153('0x3'));router[_0xf153('0x4')](_0xf153('0x5'),auth[_0xf153('0x6')](),auth['isWebrtcLicence'](),controller[_0xf153('0x7')]);router['post'](_0xf153('0x8'),auth[_0xf153('0x6')](),auth[_0xf153('0x9')](),controller[_0xf153('0xa')]);router[_0xf153('0x4')]('/answer',auth[_0xf153('0x6')](),auth[_0xf153('0x9')](),controller[_0xf153('0xb')]);router[_0xf153('0x4')](_0xf153('0xc'),auth[_0xf153('0x6')](),auth[_0xf153('0x9')](),controller[_0xf153('0xd')]);router[_0xf153('0x4')](_0xf153('0xe'),auth['isAuthenticated'](),auth[_0xf153('0x9')](),controller[_0xf153('0xf')]);router[_0xf153('0x4')]('/calls',auth[_0xf153('0x6')](),auth[_0xf153('0x9')](),controller[_0xf153('0x10')]);router[_0xf153('0x4')](_0xf153('0x11'),auth[_0xf153('0x6')](),auth[_0xf153('0x9')](),controller[_0xf153('0x12')]);module[_0xf153('0x13')]=router;
\ No newline at end of file
index 26be631..e786236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd58c=['hangup\x20fired:','length','webbar:hangup','answer','entityFound:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','all','filter','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','util','jayson/promise','http','../../config/logger','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','stack','name','status','send','request','code','message','findOne','then','rows','UserId','sessionId','sessionId\x20','originate','originate\x20fired:','body','json','userId','callerId','callbackUrl','format','user:%s','webbar:originate','originate\x20executed!','catch','hangup'];(function(_0x41f1ac,_0x48eb21){var _0x1b2cdf=function(_0x198c09){while(--_0x198c09){_0x41f1ac['push'](_0x41f1ac['shift']());}};_0x1b2cdf(++_0x48eb21);}(_0xd58c,0xb6));var _0xcd58=function(_0x587c92,_0xf793e4){_0x587c92=_0x587c92-0x0;var _0x19bd28=_0xd58c[_0x587c92];return _0x19bd28;};'use strict';var path=require(_0xcd58('0x0'));var fs=require('fs');var _=require(_0xcd58('0x1'));var db=require(_0xcd58('0x2'))['db'];var config=require('../../config/environment');var util=require(_0xcd58('0x3'));var BPromise=require('bluebird');var jayson=require(_0xcd58('0x4'));var amiClient=jayson['client'][_0xcd58('0x5')]({'port':0x232a});var logger=require(_0xcd58('0x6'))(_0xcd58('0x7'));var Redis=require(_0xcd58('0x8'));config[_0xcd58('0x9')]=_['defaults'](config['redis'],{'host':_0xcd58('0xa'),'port':0x18eb});var io=require(_0xcd58('0xb'))(new Redis(config[_0xcd58('0x9')]));var Schema=require(_0xcd58('0xc'));var originateValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xcd58('0xe'),'required':[!![],_0xcd58('0xf')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0xcd58('0xe')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]},'sessionId':{'type':'string','required':[!![],_0xcd58('0x11')]},'transferNumber':{'type':_0xcd58('0xe'),'required':[!![],_0xcd58('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]},'sessionId':{'type':_0xcd58('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0xcd58('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0xcd58('0xd'),'required':[!![],_0xcd58('0x10')]}});function emit(_0x51f5b6,_0x515fc3,_0xea2532){logger[_0xcd58('0x13')](_0x51f5b6,_0x515fc3,JSON[_0xcd58('0x14')](_0xea2532));io['to'](_0x51f5b6)['emit'](_0x515fc3,_0xea2532);}function handleError(_0x4e9b76){return function(_0x3686ad){console['log'](_0xcd58('0x15'),_0x3686ad,_0x3686ad instanceof RangeError);logger[_0xcd58('0x16')](_0x3686ad[_0xcd58('0x17')]);if(_0x3686ad instanceof RangeError){if(_0x3686ad[_0xcd58('0x18')]){delete _0x3686ad['name'];}_0x4e9b76[_0xcd58('0x19')](0x194)['send'](_0x3686ad);}else{if(_0x3686ad['name']){delete _0x3686ad['name'];}_0x4e9b76[_0xcd58('0x19')](0x1f4)[_0xcd58('0x1a')](_0x3686ad);}};}function checkError(){return function(_0x44b002){if(!_0x44b002){throw new RangeError('NotFound');}return _0x44b002;};}function respondWithRpcPromise(_0xb7325f,_0x2a8681){return new BPromise(function(_0x5c241c,_0x18f953){var _0x1765d3=amiClient;return _0x1765d3[_0xcd58('0x1b')](_0xb7325f,_0x2a8681)['then'](function(_0x566d56){if(_0x566d56[_0xcd58('0x16')]){if(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1c')]===0x1f4){return _0x18f953(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1d')]);}return _0x5c241c(_0x566d56[_0xcd58('0x16')][_0xcd58('0x1d')]);}else{_0x5c241c(_0x566d56['result']);}})['catch'](function(_0x19010d){_0x18f953(_0x19010d);});});}function getAgent(_0xaa4a53){return db['User'][_0xcd58('0x1e')]({'where':{'id':_0xaa4a53,'role':'agent'}})[_0xcd58('0x1f')](checkError());}function getAgentCheckSession(_0x2ec6b1,_0x75bb8e){return new BPromise(function(_0x1784ff,_0x2b64b8){var _0x30cf55=respondWithRpcPromise('VoiceChannels');var _0x1c369f=getAgent(_0x2ec6b1);Promise['all']([_0x30cf55,_0x1c369f])[_0xcd58('0x1f')](function(_0x5e1b62){var _0x34d063=_0x5e1b62[0x0];var _0x55c551=_0x5e1b62[0x1];var _0x3499c4=_['filter'](_0x34d063[_0xcd58('0x20')],function(_0x5871da){return _0x5871da[_0xcd58('0x21')]==_0x55c551['id']&&_0x5871da[_0xcd58('0x22')]==_0x75bb8e;});if(_0x3499c4['length']==0x1){_0x1784ff(_0x55c551);}else{_0x2b64b8(new RangeError(_0xcd58('0x23')+_0x75bb8e+'\x20not\x20found!'));}});});}exports[_0xcd58('0x24')]=function(_0x3852c8,_0x2a7ce1){logger[_0xcd58('0x13')](_0xcd58('0x25'),_0x3852c8[_0xcd58('0x26')]);var _0x5b5d90=originateValidation['validate'](_0x3852c8[_0xcd58('0x26')]);if(_0x5b5d90['length']>0x0){return _0x2a7ce1['status'](0x190)[_0xcd58('0x27')](_0x5b5d90);}var _0x3ef48e=_0x3852c8[_0xcd58('0x26')][_0xcd58('0x28')];var _0xd5fc97=_0x3852c8[_0xcd58('0x26')]['callNumber'];var _0x535ad4=_0x3852c8[_0xcd58('0x26')][_0xcd58('0x29')];var _0x1c1ce4=_0x3852c8['body'][_0xcd58('0x2a')];return getAgent(_0x3ef48e)[_0xcd58('0x1f')](function(_0x6a7872){logger['info']('entityFound:',_0x6a7872[_0xcd58('0x18')]);emit(util[_0xcd58('0x2b')](_0xcd58('0x2c'),_0x6a7872[_0xcd58('0x18')]),_0xcd58('0x2d'),{'callNumber':_0xd5fc97,'callerId':_0x535ad4,'callbackUrl':_0x1c1ce4});return _0x2a7ce1[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x2e')});})[_0xcd58('0x2f')](handleError(_0x2a7ce1));};exports[_0xcd58('0x30')]=function(_0x455ce1,_0x37e840){logger[_0xcd58('0x13')](_0xcd58('0x31'),_0x455ce1[_0xcd58('0x26')]);var _0x1139c2=hangupValidation[_0xcd58('0xc')](_0x455ce1[_0xcd58('0x26')]);if(_0x1139c2[_0xcd58('0x32')]>0x0){return _0x37e840[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x1139c2);}var _0x5cd1eb=_0x455ce1[_0xcd58('0x26')][_0xcd58('0x28')];var _0x464158=_0x455ce1['body'][_0xcd58('0x22')];return getAgent(_0x5cd1eb)[_0xcd58('0x1f')](function(_0x4ced85){logger[_0xcd58('0x13')]('entityFound:',_0x4ced85['name']);emit(util[_0xcd58('0x2b')]('user:%s',_0x4ced85['name']),_0xcd58('0x33'),{'sessionId':_0x464158});return _0x37e840[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':'hangup\x20executed!'});})['catch'](handleError(_0x37e840));};exports[_0xcd58('0x34')]=function(_0x55fdf9,_0x3ab135){logger[_0xcd58('0x13')]('answer\x20fired:',_0x55fdf9['body']);var _0x1f5e98=answerValidation[_0xcd58('0xc')](_0x55fdf9[_0xcd58('0x26')]);if(_0x1f5e98[_0xcd58('0x32')]>0x0){return _0x3ab135[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x1f5e98);}var _0x14a574=_0x55fdf9[_0xcd58('0x26')][_0xcd58('0x28')];var _0x297478=_0x55fdf9[_0xcd58('0x26')][_0xcd58('0x22')];return getAgent(_0x14a574)[_0xcd58('0x1f')](function(_0x503ee3){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x503ee3[_0xcd58('0x18')]);emit(util['format'](_0xcd58('0x2c'),_0x503ee3[_0xcd58('0x18')]),_0xcd58('0x36'),{'sessionId':_0x297478});return _0x3ab135[_0xcd58('0x19')](0xc8)['json']({'error':![],'message':_0xcd58('0x37')});})[_0xcd58('0x2f')](handleError(_0x3ab135));};exports[_0xcd58('0x38')]=function(_0x13e0cb,_0x3aa129){logger[_0xcd58('0x13')](_0xcd58('0x39'),_0x13e0cb[_0xcd58('0x26')]);var _0x452e7e=holdValidation[_0xcd58('0xc')](_0x13e0cb['body']);if(_0x452e7e[_0xcd58('0x32')]>0x0){return _0x3aa129[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x452e7e);}var _0x1ead66=_0x13e0cb[_0xcd58('0x26')][_0xcd58('0x28')];var _0x11aa04=_0x13e0cb[_0xcd58('0x26')][_0xcd58('0x22')];return getAgent(_0x1ead66)[_0xcd58('0x1f')](function(_0x1416fa){logger[_0xcd58('0x13')]('entityFound:',_0x1416fa[_0xcd58('0x18')]);emit(util[_0xcd58('0x2b')]('user:%s',_0x1416fa[_0xcd58('0x18')]),_0xcd58('0x3a'),{'sessionId':_0x11aa04});return _0x3aa129[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x3b')});})[_0xcd58('0x2f')](handleError(_0x3aa129));};exports['unhold']=function(_0x51735b,_0x8a5d52){logger['info'](_0xcd58('0x3c'),_0x51735b[_0xcd58('0x26')]);var _0x3eb747=unholdValidation[_0xcd58('0xc')](_0x51735b['body']);if(_0x3eb747['length']>0x0){return _0x8a5d52[_0xcd58('0x19')](0x190)['json'](_0x3eb747);}var _0x4972b7=_0x51735b[_0xcd58('0x26')][_0xcd58('0x28')];var _0x361422=_0x51735b[_0xcd58('0x26')]['sessionId'];return getAgent(_0x4972b7)[_0xcd58('0x1f')](function(_0x5530f3){logger['info'](_0xcd58('0x35'),_0x5530f3[_0xcd58('0x18')]);emit(util['format'](_0xcd58('0x2c'),_0x5530f3['name']),_0xcd58('0x3d'),{'sessionId':_0x361422});return _0x8a5d52[_0xcd58('0x19')](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x3e')});})[_0xcd58('0x2f')](handleError(_0x8a5d52));};exports[_0xcd58('0x3f')]=function(_0x2e4157,_0xe1a29a){logger[_0xcd58('0x13')](_0xcd58('0x40'),_0xe1a29a[_0xcd58('0x26')]);var _0x2220af=callsValidation['validate'](_0x2e4157[_0xcd58('0x26')]);if(_0x2220af['length']>0x0){return _0xe1a29a[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2220af);}var _0x13df99=_0x2e4157[_0xcd58('0x26')]['userId'];var _0x3d2fe7=respondWithRpcPromise(_0xcd58('0x41'));var _0x458157=getAgent(_0x13df99);return Promise[_0xcd58('0x42')]([_0x3d2fe7,_0x458157])['then'](function(_0x5ab979){var _0x2bd97b=_0x5ab979[0x0];var _0x386388=_0x5ab979[0x1];var _0x418fb5=_[_0xcd58('0x43')](_0x2bd97b[_0xcd58('0x20')],function(_0x10cf46){return _0x10cf46[_0xcd58('0x21')]==_0x386388['id'];});return _0xe1a29a['status'](0xc8)[_0xcd58('0x27')]({'count':_0x418fb5[_0xcd58('0x32')],'rows':_0x418fb5});})[_0xcd58('0x2f')](handleError(_0xe1a29a));};exports[_0xcd58('0x44')]=function(_0x3a4699,_0x29f03b){logger[_0xcd58('0x13')](_0xcd58('0x45'),_0x3a4699[_0xcd58('0x26')]);var _0x2d16d0=conferenceValidation[_0xcd58('0xc')](_0x3a4699[_0xcd58('0x26')]);if(_0x2d16d0[_0xcd58('0x32')]>0x0){return _0x29f03b[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2d16d0);}var _0x322466=_0x3a4699[_0xcd58('0x26')]['userId'];return getAgent(_0x322466)[_0xcd58('0x1f')](function(_0x183762){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x183762['name']);emit(util[_0xcd58('0x2b')](_0xcd58('0x2c'),_0x183762[_0xcd58('0x18')]),_0xcd58('0x46'));return _0x29f03b[_0xcd58('0x19')](0xc8)['json']({'error':![],'message':_0xcd58('0x47')});})[_0xcd58('0x2f')](handleError(_0x29f03b));};exports[_0xcd58('0x48')]=function(_0x1cc739,_0x3a13ab){logger[_0xcd58('0x13')](_0xcd58('0x49'),_0x1cc739[_0xcd58('0x26')]);var _0x2729dd=transferValidation[_0xcd58('0xc')](_0x1cc739['body']);if(_0x2729dd['length']>0x0){return _0x3a13ab[_0xcd58('0x19')](0x190)[_0xcd58('0x27')](_0x2729dd);}var _0x5913b2=_0x1cc739['body'][_0xcd58('0x28')];var _0x19887d=_0x1cc739['body'][_0xcd58('0x22')];var _0x29d4a4=_0x1cc739[_0xcd58('0x26')][_0xcd58('0x4a')];return getAgent(_0x5913b2)[_0xcd58('0x1f')](function(_0x3c3f38){logger[_0xcd58('0x13')](_0xcd58('0x35'),_0x3c3f38['name']);emit(util['format'](_0xcd58('0x2c'),_0x3c3f38['name']),_0xcd58('0x4b'),{'sessionId':_0x19887d,'transferNumber':_0x29d4a4});return _0x3a13ab['status'](0xc8)[_0xcd58('0x27')]({'error':![],'message':_0xcd58('0x4c')});})[_0xcd58('0x2f')](handleError(_0x3a13ab));};
\ No newline at end of file
+var _0x0624=['result','catch','findOne','agent','filter','rows','sessionId\x20','\x20not\x20found!','body','length','json','userId','callerId','entityFound:','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','sessionId','webbar:hangup','answer','hold','webbar:hold','hold\x20executed!','webbar:unhold','calls','VoiceChannels','UserId','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','util','bluebird','jayson/promise','client','http','../../config/logger','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','error','stack','name','send','status','NotFound','then','message'];(function(_0x56e82f,_0x1c20d2){var _0x5034a4=function(_0x247294){while(--_0x247294){_0x56e82f['push'](_0x56e82f['shift']());}};_0x5034a4(++_0x1c20d2);}(_0x0624,0x132));var _0x4062=function(_0x87a0e0,_0x471163){_0x87a0e0=_0x87a0e0-0x0;var _0xed1da9=_0x0624[_0x87a0e0];return _0xed1da9;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0x4062('0x0'));var BPromise=require(_0x4062('0x1'));var jayson=require(_0x4062('0x2'));var amiClient=jayson[_0x4062('0x3')][_0x4062('0x4')]({'port':0x232a});var logger=require(_0x4062('0x5'))('webbarapi');var Redis=require('ioredis');config[_0x4062('0x6')]=_[_0x4062('0x7')](config[_0x4062('0x6')],{'host':_0x4062('0x8'),'port':0x18eb});var io=require(_0x4062('0x9'))(new Redis(config['redis']));var Schema=require(_0x4062('0xa'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4062('0xb')]},'callNumber':{'type':_0x4062('0xc'),'required':[!![],_0x4062('0xd')]},'callerId':{'type':_0x4062('0xc')},'callbackUrl':{'type':_0x4062('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],_0x4062('0xb')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x4062('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],_0x4062('0xb')]},'sessionId':{'type':_0x4062('0xc'),'required':[!![],_0x4062('0xf')]},'transferNumber':{'type':'string','required':[!![],_0x4062('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x4062('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],_0x4062('0xb')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x4062('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':_0x4062('0xe'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x4d7166,_0x5458a1,_0x4cb54e){logger[_0x4062('0x11')](_0x4d7166,_0x5458a1,JSON['stringify'](_0x4cb54e));io['to'](_0x4d7166)[_0x4062('0x12')](_0x5458a1,_0x4cb54e);}function handleError(_0x278f51){return function(_0x3d14bb){console[_0x4062('0x13')](_0x4062('0x14'),_0x3d14bb,_0x3d14bb instanceof RangeError);logger[_0x4062('0x15')](_0x3d14bb[_0x4062('0x16')]);if(_0x3d14bb instanceof RangeError){if(_0x3d14bb['name']){delete _0x3d14bb[_0x4062('0x17')];}_0x278f51['status'](0x194)[_0x4062('0x18')](_0x3d14bb);}else{if(_0x3d14bb['name']){delete _0x3d14bb[_0x4062('0x17')];}_0x278f51[_0x4062('0x19')](0x1f4)[_0x4062('0x18')](_0x3d14bb);}};}function checkError(){return function(_0x18b2e6){if(!_0x18b2e6){throw new RangeError(_0x4062('0x1a'));}return _0x18b2e6;};}function respondWithRpcPromise(_0x78d507,_0xae1bbd){return new BPromise(function(_0x341310,_0xc6c0ba){var _0x53648a=amiClient;return _0x53648a['request'](_0x78d507,_0xae1bbd)[_0x4062('0x1b')](function(_0xc5e4a0){if(_0xc5e4a0[_0x4062('0x15')]){if(_0xc5e4a0[_0x4062('0x15')]['code']===0x1f4){return _0xc6c0ba(_0xc5e4a0['error']['message']);}return _0x341310(_0xc5e4a0[_0x4062('0x15')][_0x4062('0x1c')]);}else{_0x341310(_0xc5e4a0[_0x4062('0x1d')]);}})[_0x4062('0x1e')](function(_0x3c1ee0){_0xc6c0ba(_0x3c1ee0);});});}function getAgent(_0x10cb31){return db['User'][_0x4062('0x1f')]({'where':{'id':_0x10cb31,'role':_0x4062('0x20')}})[_0x4062('0x1b')](checkError());}function getAgentCheckSession(_0x28e9e4,_0xb7f7c7){return new BPromise(function(_0x5934d2,_0x5b6659){var _0x4a0312=respondWithRpcPromise('VoiceChannels');var _0x391065=getAgent(_0x28e9e4);Promise['all']([_0x4a0312,_0x391065])[_0x4062('0x1b')](function(_0x169c12){var _0x9c9fc3=_0x169c12[0x0];var _0xc1c540=_0x169c12[0x1];var _0x2ca2cd=_[_0x4062('0x21')](_0x9c9fc3[_0x4062('0x22')],function(_0x253bcf){return _0x253bcf['UserId']==_0xc1c540['id']&&_0x253bcf['sessionId']==_0xb7f7c7;});if(_0x2ca2cd['length']==0x1){_0x5934d2(_0xc1c540);}else{_0x5b6659(new RangeError(_0x4062('0x23')+_0xb7f7c7+_0x4062('0x24')));}});});}exports['originate']=function(_0x26c63a,_0x5ad1a3){logger['info']('originate\x20fired:',_0x26c63a[_0x4062('0x25')]);var _0x1792d0=originateValidation[_0x4062('0xa')](_0x26c63a[_0x4062('0x25')]);if(_0x1792d0[_0x4062('0x26')]>0x0){return _0x5ad1a3[_0x4062('0x19')](0x190)[_0x4062('0x27')](_0x1792d0);}var _0x126aab=_0x26c63a[_0x4062('0x25')][_0x4062('0x28')];var _0xf3c438=_0x26c63a[_0x4062('0x25')]['callNumber'];var _0x2a9d01=_0x26c63a['body'][_0x4062('0x29')];var _0x20068d=_0x26c63a[_0x4062('0x25')]['callbackUrl'];return getAgent(_0x126aab)[_0x4062('0x1b')](function(_0x2393e5){logger[_0x4062('0x11')](_0x4062('0x2a'),_0x2393e5[_0x4062('0x17')]);emit(util[_0x4062('0x2b')](_0x4062('0x2c'),_0x2393e5[_0x4062('0x17')]),_0x4062('0x2d'),{'callNumber':_0xf3c438,'callerId':_0x2a9d01,'callbackUrl':_0x20068d});return _0x5ad1a3['status'](0xc8)[_0x4062('0x27')]({'error':![],'message':_0x4062('0x2e')});})[_0x4062('0x1e')](handleError(_0x5ad1a3));};exports[_0x4062('0x2f')]=function(_0x13ee2d,_0x40d961){logger['info'](_0x4062('0x30'),_0x13ee2d[_0x4062('0x25')]);var _0x472b21=hangupValidation[_0x4062('0xa')](_0x13ee2d[_0x4062('0x25')]);if(_0x472b21['length']>0x0){return _0x40d961['status'](0x190)[_0x4062('0x27')](_0x472b21);}var _0x27fe83=_0x13ee2d['body'][_0x4062('0x28')];var _0x146463=_0x13ee2d[_0x4062('0x25')][_0x4062('0x31')];return getAgent(_0x27fe83)[_0x4062('0x1b')](function(_0x218864){logger[_0x4062('0x11')](_0x4062('0x2a'),_0x218864[_0x4062('0x17')]);emit(util[_0x4062('0x2b')]('user:%s',_0x218864[_0x4062('0x17')]),_0x4062('0x32'),{'sessionId':_0x146463});return _0x40d961['status'](0xc8)['json']({'error':![],'message':'hangup\x20executed!'});})[_0x4062('0x1e')](handleError(_0x40d961));};exports[_0x4062('0x33')]=function(_0x157e60,_0x43a82c){logger['info']('answer\x20fired:',_0x157e60[_0x4062('0x25')]);var _0x42d0d3=answerValidation[_0x4062('0xa')](_0x157e60[_0x4062('0x25')]);if(_0x42d0d3['length']>0x0){return _0x43a82c['status'](0x190)[_0x4062('0x27')](_0x42d0d3);}var _0x2ac3b5=_0x157e60[_0x4062('0x25')][_0x4062('0x28')];var _0x9ab8ac=_0x157e60[_0x4062('0x25')][_0x4062('0x31')];return getAgent(_0x2ac3b5)[_0x4062('0x1b')](function(_0x48d9a3){logger[_0x4062('0x11')](_0x4062('0x2a'),_0x48d9a3[_0x4062('0x17')]);emit(util['format'](_0x4062('0x2c'),_0x48d9a3['name']),'webbar:answer',{'sessionId':_0x9ab8ac});return _0x43a82c[_0x4062('0x19')](0xc8)[_0x4062('0x27')]({'error':![],'message':'answer\x20executed!'});})[_0x4062('0x1e')](handleError(_0x43a82c));};exports[_0x4062('0x34')]=function(_0x356ae0,_0x182b7f){logger[_0x4062('0x11')]('hold\x20fired:',_0x356ae0['body']);var _0x339337=holdValidation[_0x4062('0xa')](_0x356ae0[_0x4062('0x25')]);if(_0x339337['length']>0x0){return _0x182b7f[_0x4062('0x19')](0x190)[_0x4062('0x27')](_0x339337);}var _0x58a141=_0x356ae0[_0x4062('0x25')][_0x4062('0x28')];var _0x5e1c4f=_0x356ae0['body']['sessionId'];return getAgent(_0x58a141)[_0x4062('0x1b')](function(_0x560b20){logger['info'](_0x4062('0x2a'),_0x560b20['name']);emit(util['format'](_0x4062('0x2c'),_0x560b20[_0x4062('0x17')]),_0x4062('0x35'),{'sessionId':_0x5e1c4f});return _0x182b7f['status'](0xc8)[_0x4062('0x27')]({'error':![],'message':_0x4062('0x36')});})[_0x4062('0x1e')](handleError(_0x182b7f));};exports['unhold']=function(_0x5c75b6,_0x36b58e){logger[_0x4062('0x11')]('unhold\x20fired:',_0x5c75b6[_0x4062('0x25')]);var _0x1b9ccf=unholdValidation[_0x4062('0xa')](_0x5c75b6['body']);if(_0x1b9ccf['length']>0x0){return _0x36b58e[_0x4062('0x19')](0x190)[_0x4062('0x27')](_0x1b9ccf);}var _0x6c5253=_0x5c75b6[_0x4062('0x25')][_0x4062('0x28')];var _0x5b975f=_0x5c75b6['body'][_0x4062('0x31')];return getAgent(_0x6c5253)[_0x4062('0x1b')](function(_0x2293c4){logger[_0x4062('0x11')](_0x4062('0x2a'),_0x2293c4[_0x4062('0x17')]);emit(util[_0x4062('0x2b')](_0x4062('0x2c'),_0x2293c4[_0x4062('0x17')]),_0x4062('0x37'),{'sessionId':_0x5b975f});return _0x36b58e[_0x4062('0x19')](0xc8)[_0x4062('0x27')]({'error':![],'message':'unhold\x20executed!'});})[_0x4062('0x1e')](handleError(_0x36b58e));};exports[_0x4062('0x38')]=function(_0x567fdb,_0x36bba8){logger[_0x4062('0x11')]('calls\x20fired:',_0x36bba8[_0x4062('0x25')]);var _0x5c76e7=callsValidation['validate'](_0x567fdb[_0x4062('0x25')]);if(_0x5c76e7[_0x4062('0x26')]>0x0){return _0x36bba8[_0x4062('0x19')](0x190)[_0x4062('0x27')](_0x5c76e7);}var _0x24ccc2=_0x567fdb['body'][_0x4062('0x28')];var _0x487e77=respondWithRpcPromise(_0x4062('0x39'));var _0x2ab230=getAgent(_0x24ccc2);return Promise['all']([_0x487e77,_0x2ab230])[_0x4062('0x1b')](function(_0x7767ab){var _0x4c0811=_0x7767ab[0x0];var _0x4fa347=_0x7767ab[0x1];var _0x4d2d75=_[_0x4062('0x21')](_0x4c0811['rows'],function(_0x5c5190){return _0x5c5190[_0x4062('0x3a')]==_0x4fa347['id'];});return _0x36bba8[_0x4062('0x19')](0xc8)[_0x4062('0x27')]({'count':_0x4d2d75[_0x4062('0x26')],'rows':_0x4d2d75});})['catch'](handleError(_0x36bba8));};exports[_0x4062('0x3b')]=function(_0x3d5e74,_0x28aec1){logger[_0x4062('0x11')](_0x4062('0x3c'),_0x3d5e74['body']);var _0x45e832=conferenceValidation[_0x4062('0xa')](_0x3d5e74[_0x4062('0x25')]);if(_0x45e832[_0x4062('0x26')]>0x0){return _0x28aec1['status'](0x190)[_0x4062('0x27')](_0x45e832);}var _0x3fcc05=_0x3d5e74['body'][_0x4062('0x28')];return getAgent(_0x3fcc05)['then'](function(_0x1a488c){logger[_0x4062('0x11')](_0x4062('0x2a'),_0x1a488c[_0x4062('0x17')]);emit(util['format']('user:%s',_0x1a488c[_0x4062('0x17')]),_0x4062('0x3d'));return _0x28aec1['status'](0xc8)[_0x4062('0x27')]({'error':![],'message':_0x4062('0x3e')});})[_0x4062('0x1e')](handleError(_0x28aec1));};exports[_0x4062('0x3f')]=function(_0x48bf59,_0x4d06c7){logger[_0x4062('0x11')](_0x4062('0x40'),_0x48bf59[_0x4062('0x25')]);var _0x322b0f=transferValidation['validate'](_0x48bf59[_0x4062('0x25')]);if(_0x322b0f[_0x4062('0x26')]>0x0){return _0x4d06c7[_0x4062('0x19')](0x190)[_0x4062('0x27')](_0x322b0f);}var _0x557bd4=_0x48bf59[_0x4062('0x25')][_0x4062('0x28')];var _0xdba734=_0x48bf59[_0x4062('0x25')][_0x4062('0x31')];var _0x3ee7cc=_0x48bf59[_0x4062('0x25')][_0x4062('0x41')];return getAgent(_0x557bd4)['then'](function(_0x342836){logger['info'](_0x4062('0x2a'),_0x342836[_0x4062('0x17')]);emit(util[_0x4062('0x2b')]('user:%s',_0x342836['name']),'webbar:transfer',{'sessionId':_0xdba734,'transferNumber':_0x3ee7cc});return _0x4d06c7['status'](0xc8)[_0x4062('0x27')]({'error':![],'message':_0x4062('0x42')});})[_0x4062('0x1e')](handleError(_0x4d06c7));};
\ No newline at end of file
index c0963a2..3558f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896e=['/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','create','post','addDisposition','addAnswer','/:id/notify','notify','/:id/send','send','put','destroy','delete','removeAnswers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x460fd7,_0x2012db){var _0x44d1c2=function(_0x545e11){while(--_0x545e11){_0x460fd7['push'](_0x460fd7['shift']());}};_0x44d1c2(++_0x2012db);}(_0x896e,0x1e9));var _0xe896=function(_0x14024d,_0x4aa2a2){_0x14024d=_0x14024d-0x0;var _0x3ddac3=_0x896e[_0x14024d];return _0x3ddac3;};'use strict';var multer=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var path=require(_0xe896('0x2'));var timeout=require(_0xe896('0x3'));var express=require(_0xe896('0x4'));var router=express[_0xe896('0x5')]();var fs_extra=require(_0xe896('0x6'));var auth=require(_0xe896('0x7'));var interaction=require(_0xe896('0x8'));var config=require(_0xe896('0x9'));var controller=require(_0xe896('0xa'));router[_0xe896('0xb')]('/',auth['isAuthenticated'](),controller[_0xe896('0xc')]);router[_0xe896('0xb')](_0xe896('0xd'),auth[_0xe896('0xe')](),controller[_0xe896('0xf')]);router['get'](_0xe896('0x10'),auth[_0xe896('0xe')](),controller[_0xe896('0x11')]);router['get'](_0xe896('0x12'),auth['isAuthenticated'](),controller[_0xe896('0x13')]);router['get'](_0xe896('0x14'),auth[_0xe896('0xe')](),controller[_0xe896('0x15')]);router['get'](_0xe896('0x16'),auth[_0xe896('0xe')](),controller[_0xe896('0x17')]);router['get'](_0xe896('0x18'),auth[_0xe896('0xe')](),controller[_0xe896('0x19')]);router['post']('/',auth[_0xe896('0xe')](),controller[_0xe896('0x1a')]);router[_0xe896('0x1b')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xe896('0x1c')]);router[_0xe896('0x1b')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xe896('0x1d')]);router[_0xe896('0x1b')]('/:id/users',auth[_0xe896('0xe')](),controller['addAgents']);router[_0xe896('0x1b')](_0xe896('0x18'),auth[_0xe896('0xe')](),controller['addApplications']);router[_0xe896('0x1b')](_0xe896('0x1e'),controller[_0xe896('0x1f')]);router[_0xe896('0x1b')](_0xe896('0x20'),auth[_0xe896('0xe')](),controller[_0xe896('0x21')]);router[_0xe896('0x22')]('/:id',auth[_0xe896('0xe')](),controller['update']);router['delete'](_0xe896('0x10'),auth[_0xe896('0xe')](),controller[_0xe896('0x23')]);router[_0xe896('0x24')]('/:id/dispositions',auth[_0xe896('0xe')](),controller['removeDispositions']);router['delete'](_0xe896('0x14'),auth[_0xe896('0xe')](),controller[_0xe896('0x25')]);router[_0xe896('0x24')](_0xe896('0x16'),auth[_0xe896('0xe')](),controller[_0xe896('0x26')]);module['exports']=router;
\ No newline at end of file
+var _0xe2fe=['removeAgents','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','destroy','delete','removeDispositions','removeAnswers'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./whatsappAccount.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0x7')](_0xee2f('0xc'),auth['isAuthenticated'](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0xee2f('0x8')](),controller['getAnswers']);router['get']('/:id/users',auth[_0xee2f('0x8')](),controller[_0xee2f('0xd')]);router[_0xee2f('0x7')](_0xee2f('0xe'),auth[_0xee2f('0x8')](),controller[_0xee2f('0xf')]);router['post']('/',auth[_0xee2f('0x8')](),controller['create']);router[_0xee2f('0x10')](_0xee2f('0xc'),auth['isAuthenticated'](),controller[_0xee2f('0x11')]);router[_0xee2f('0x10')](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x13')]);router['post'](_0xee2f('0x14'),auth['isAuthenticated'](),controller[_0xee2f('0x15')]);router[_0xee2f('0x10')]('/:id/applications',auth['isAuthenticated'](),controller[_0xee2f('0x16')]);router['post'](_0xee2f('0x17'),controller[_0xee2f('0x18')]);router[_0xee2f('0x10')]('/:id/send',auth[_0xee2f('0x8')](),controller[_0xee2f('0x19')]);router[_0xee2f('0x1a')](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['update']);router['delete'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1b')]);router[_0xee2f('0x1c')](_0xee2f('0xc'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1d')]);router['delete'](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1e')]);router[_0xee2f('0x1c')](_0xee2f('0x14'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1f')]);module[_0xee2f('0x20')]=router;
\ No newline at end of file
index 9e45b74..bfaf1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['ENUM','twilio','sinch','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING'];(function(_0x56b3bb,_0x297eb3){var _0x47ba15=function(_0x194701){while(--_0x194701){_0x56b3bb['push'](_0x56b3bb['shift']());}};_0x47ba15(++_0x297eb3);}(_0x5c12,0x1ac));var _0x25c1=function(_0x2cc569,_0x4e9568){_0x2cc569=_0x2cc569-0x0;var _0x1bfc2e=_0x5c12[_0x2cc569];return _0x1bfc2e;};'use strict';var Sequelize=require(_0x25c1('0x0'));var rs=require(_0x25c1('0x1'));module[_0x25c1('0x2')]={'name':{'type':Sequelize[_0x25c1('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x25c1('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x25c1('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x25c1('0x3')]},'type':{'type':Sequelize[_0x25c1('0x4')](_0x25c1('0x5'),_0x25c1('0x6'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0x25c1('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x25c1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x25c1('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x25c1('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x25c1('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1867a8){if(!_0x1867a8){this[_0x25c1('0xa')](_0x25c1('0xb'),null);}this[_0x25c1('0xa')]('mandatoryDisposition',_0x1867a8);}},'description':{'type':Sequelize[_0x25c1('0x3')]}};
\ No newline at end of file
+var _0x8435=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x559461,_0x3d6b4d){var _0x7e9a58=function(_0x319379){while(--_0x319379){_0x559461['push'](_0x559461['shift']());}};_0x7e9a58(++_0x3d6b4d);}(_0x8435,0x170));var _0x5843=function(_0x37d27b,_0x1a095c){_0x37d27b=_0x37d27b-0x0;var _0x128974=_0x8435[_0x37d27b];return _0x128974;};'use strict';var Sequelize=require(_0x5843('0x0'));var rs=require(_0x5843('0x1'));module[_0x5843('0x2')]={'name':{'type':Sequelize[_0x5843('0x3')],'unique':_0x5843('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x5843('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x5843('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x5843('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x5843('0x3')]},'type':{'type':Sequelize[_0x5843('0x5')](_0x5843('0x6'),_0x5843('0x7'))},'accountSid':{'type':Sequelize[_0x5843('0x3')]},'baseUrl':{'type':Sequelize[_0x5843('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5843('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x5843('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5843('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5843('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5843('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5843('0xa')],'comment':_0x5843('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x5843('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x43deb3){if(!_0x43deb3){this[_0x5843('0xc')](_0x5843('0xd'),null);}this['setDataValue']('mandatoryDisposition',_0x43deb3);}},'description':{'type':Sequelize[_0x5843('0x3')]}};
\ No newline at end of file
index 54cf78d..ad19aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3025=['crypto','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','rawAttributes','type','model','map','query','keys','intersection','attributes','fields','length','order','where','filters','pick','filter','merge','options','WhatsappAccount','includeAll','findAll','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','mandatoryDispositionPause','describe','WhatsappAccountId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','sort','rows','removeDispositions','ids','CannedAnswer','removeAnswers','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','read','WhatsappMessage','orderBy','priority','asc','ValidationError','createdAt','updatedAt','difference','ListId','mobile','twilio','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','from','Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','omit','contact','WhatsappInteraction','spread','interaction','autoclose','applications','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','isNil','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel'];(function(_0x519c78,_0x20fdc7){var _0x224cb3=function(_0x2cd2ed){while(--_0x2cd2ed){_0x519c78['push'](_0x519c78['shift']());}};_0x224cb3(++_0x20fdc7);}(_0x3025,0x16a));var _0x5302=function(_0x34d4f1,_0x472338){_0x34d4f1=_0x34d4f1-0x0;var _0x3572a8=_0x3025[_0x34d4f1];return _0x3572a8;};'use strict';var emlformat=require(_0x5302('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5302('0x1'));var jsonpatch=require(_0x5302('0x2'));var rp=require(_0x5302('0x3'));var moment=require(_0x5302('0x4'));var BPromise=require(_0x5302('0x5'));var Mustache=require(_0x5302('0x6'));var util=require('util');var path=require(_0x5302('0x7'));var sox=require(_0x5302('0x8'));var csv=require(_0x5302('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5302('0xa'));var squel=require(_0x5302('0xb'));var crypto=require(_0x5302('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5302('0xd'));var toCsv=require(_0x5302('0x9'));var querystring=require(_0x5302('0xe'));var Papa=require('papaparse');var Redis=require(_0x5302('0xf'));var authService=require(_0x5302('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5302('0x11'));var logger=require(_0x5302('0x12'))(_0x5302('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5302('0x14'));var db=require(_0x5302('0x15'))['db'];config['redis']=_[_0x5302('0x16')](config[_0x5302('0x17')],{'host':_0x5302('0x18'),'port':0x18eb});var socket=require(_0x5302('0x19'))(new Redis(config[_0x5302('0x17')]));require(_0x5302('0x1a'))[_0x5302('0x1b')](socket);var jayson=require(_0x5302('0x1c'));var client=jayson['client'][_0x5302('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x3cd5fc,_0xb3387c,_0x2f137b,_0x3bf340){return new BPromise(function(_0x87805c,_0x56104b){var _0x149733=_0x3bf340||client;return _0x149733[_0x5302('0x1e')](_0x3cd5fc,_0x2f137b)[_0x5302('0x1f')](function(_0x5df2af){logger[_0x5302('0x20')](_0x5302('0x21'),_0xb3387c,_0x5302('0x22'));logger[_0x5302('0x23')](_0x5302('0x24'),_0xb3387c,_0x5302('0x22'),JSON[_0x5302('0x25')](_0x5df2af));if(_0x5df2af[_0x5302('0x26')]){if(_0x5df2af[_0x5302('0x26')][_0x5302('0x27')]===0x1f4){logger['error'](_0x5302('0x21'),_0xb3387c,_0x5df2af[_0x5302('0x26')]['message']);return _0x56104b(_0x5df2af[_0x5302('0x26')][_0x5302('0x28')]);}logger['error'](_0x5302('0x21'),_0xb3387c,_0x5df2af['error']['message']);return _0x87805c(_0x5df2af[_0x5302('0x26')][_0x5302('0x28')]);}else{logger['info'](_0x5302('0x21'),_0xb3387c,_0x5302('0x22'));_0x87805c(_0x5df2af[_0x5302('0x29')][_0x5302('0x28')]);}})[_0x5302('0x2a')](function(_0x5ebeb6){logger[_0x5302('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0xb3387c,_0x5ebeb6);_0x56104b(_0x5ebeb6);});});}function respondWithStatusCode(_0x43710a,_0x56551d){_0x56551d=_0x56551d||0xcc;return function(_0x23f11f){if(_0x23f11f){return _0x43710a[_0x5302('0x2b')](_0x56551d);}return _0x43710a[_0x5302('0x2c')](_0x56551d)[_0x5302('0x2d')]();};}function respondWithResult(_0x14d742,_0x3a36ef){_0x3a36ef=_0x3a36ef||0xc8;return function(_0x93fbf4){if(_0x93fbf4){return _0x14d742[_0x5302('0x2c')](_0x3a36ef)[_0x5302('0x2e')](_0x93fbf4);}};}function respondWithFilteredResult(_0x472a08,_0x47ec01){return function(_0x186029){if(_0x186029){var _0x443dd6=typeof _0x47ec01[_0x5302('0x2f')]==='undefined'&&typeof _0x47ec01['limit']===_0x5302('0x30');var _0x182c22=_0x186029[_0x5302('0x31')];var _0x52de91=_0x443dd6?0x0:_0x47ec01[_0x5302('0x2f')];var _0xe244c2=_0x443dd6?_0x186029['count']:_0x47ec01[_0x5302('0x2f')]+_0x47ec01[_0x5302('0x32')];var _0x9d694e;if(_0xe244c2>=_0x182c22){_0xe244c2=_0x182c22;_0x9d694e=0xc8;}else{_0x9d694e=0xce;}_0x472a08[_0x5302('0x2c')](_0x9d694e);return _0x472a08[_0x5302('0x33')]('Content-Range',_0x52de91+'-'+_0xe244c2+'/'+_0x182c22)[_0x5302('0x2e')](_0x186029);}return null;};}function patchUpdates(_0x3a9c86){return function(_0x2f9cbf){try{jsonpatch[_0x5302('0x34')](_0x2f9cbf,_0x3a9c86,!![]);}catch(_0x8386d7){return BPromise['reject'](_0x8386d7);}return _0x2f9cbf[_0x5302('0x35')]();};}function saveUpdates(_0x95dfb6,_0x39f6c1){return function(_0x1a94b2){if(_0x1a94b2){return _0x1a94b2[_0x5302('0x36')](_0x95dfb6)[_0x5302('0x1f')](function(_0x3ba11d){return _0x3ba11d;});}return null;};}function removeEntity(_0x536113,_0x295699){return function(_0xb8adc0){if(_0xb8adc0){return _0xb8adc0[_0x5302('0x37')]()['then'](function(){var _0x5c29a3=_0xb8adc0[_0x5302('0x38')]({'plain':!![]});var _0xe5cad5=_0x5302('0x39');return db[_0x5302('0x3a')][_0x5302('0x37')]({'where':{'type':_0xe5cad5,'resourceId':_0x5c29a3['id']}})[_0x5302('0x1f')](function(){return _0xb8adc0;});})['then'](function(){_0x536113[_0x5302('0x2c')](0xcc)[_0x5302('0x2d')]();});}};}function handleEntityNotFound(_0x311e2c,_0x49bbd0){return function(_0x256bef){if(!_0x256bef){_0x311e2c['sendStatus'](0x194);}return _0x256bef;};}function handleError(_0x1c4c12,_0x8473f4){_0x8473f4=_0x8473f4||0x1f4;return function(_0x39c865){logger[_0x5302('0x26')](_0x39c865[_0x5302('0x3b')]);if(_0x39c865[_0x5302('0x3c')]){delete _0x39c865[_0x5302('0x3c')];}_0x1c4c12[_0x5302('0x2c')](_0x8473f4)[_0x5302('0x3d')](_0x39c865);};}exports[_0x5302('0x3e')]=function(_0x1a1bd2,_0x121465){var _0x1cc7d4={'include':[{'model':db[_0x5302('0x3f')],'as':'mandatoryDispositionPause'}]},_0xae63f={},_0x342543={'count':0x0,'rows':[]};var _0x2d7c2c=_['map'](db['WhatsappAccount'][_0x5302('0x40')],function(_0x38e45b){return{'name':_0x38e45b['fieldName'],'type':_0x38e45b[_0x5302('0x41')]['key']};});_0xae63f[_0x5302('0x42')]=_[_0x5302('0x43')](_0x2d7c2c,_0x5302('0x3c'));_0xae63f[_0x5302('0x44')]=_[_0x5302('0x45')](_0x1a1bd2[_0x5302('0x44')]);_0xae63f['filters']=_[_0x5302('0x46')](_0xae63f[_0x5302('0x42')],_0xae63f[_0x5302('0x44')]);_0x1cc7d4[_0x5302('0x47')]=_[_0x5302('0x46')](_0xae63f[_0x5302('0x42')],qs['fields'](_0x1a1bd2[_0x5302('0x44')][_0x5302('0x48')]));_0x1cc7d4['attributes']=_0x1cc7d4[_0x5302('0x47')][_0x5302('0x49')]?_0x1cc7d4['attributes']:_0xae63f['model'];if(!_0x1a1bd2['query']['hasOwnProperty']('nolimit')){_0x1cc7d4[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x1a1bd2[_0x5302('0x44')][_0x5302('0x32')]);_0x1cc7d4['offset']=qs[_0x5302('0x2f')](_0x1a1bd2[_0x5302('0x44')]['offset']);}_0x1cc7d4[_0x5302('0x4a')]=qs['sort'](_0x1a1bd2[_0x5302('0x44')]['sort']);_0x1cc7d4[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x1a1bd2[_0x5302('0x44')],_0xae63f[_0x5302('0x4c')]),_0x2d7c2c);if(_0x1a1bd2[_0x5302('0x44')]['filter']){_0x1cc7d4['where']=_['merge'](_0x1cc7d4[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x2d7c2c,function(_0x34f019){if(_0x34f019[_0x5302('0x41')]!=='VIRTUAL'){var _0xd9b741={};_0xd9b741[_0x34f019[_0x5302('0x3c')]]={'$like':'%'+_0x1a1bd2[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0xd9b741;}})});}_0x1cc7d4=_[_0x5302('0x4f')]({},_0x1cc7d4,_0x1a1bd2[_0x5302('0x50')]);var _0x57002f={'where':_0x1cc7d4[_0x5302('0x4b')]};return db[_0x5302('0x51')][_0x5302('0x31')](_0x57002f)['then'](function(_0x4ebf4e){_0x342543['count']=_0x4ebf4e;if(_0x1a1bd2[_0x5302('0x44')][_0x5302('0x52')]){_0x1cc7d4['include']=[{'all':!![]}];}return db[_0x5302('0x51')][_0x5302('0x53')](_0x1cc7d4);})[_0x5302('0x1f')](function(_0x37948e){_0x342543['rows']=_0x37948e;return _0x342543;})['then'](respondWithFilteredResult(_0x121465,_0x1cc7d4))['catch'](handleError(_0x121465,null));};exports['show']=function(_0x5b58a7,_0x1cf4af){var _0x181cc1={'raw':![],'where':{'id':_0x5b58a7[_0x5302('0x54')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1f6715={};_0x1f6715['model']=_[_0x5302('0x45')](db[_0x5302('0x51')][_0x5302('0x40')]);_0x1f6715[_0x5302('0x44')]=_[_0x5302('0x45')](_0x5b58a7[_0x5302('0x44')]);_0x1f6715[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x1f6715[_0x5302('0x42')],_0x1f6715['query']);_0x181cc1[_0x5302('0x47')]=_[_0x5302('0x46')](_0x1f6715[_0x5302('0x42')],qs[_0x5302('0x48')](_0x5b58a7[_0x5302('0x44')][_0x5302('0x48')]));_0x181cc1['attributes']=_0x181cc1['attributes'][_0x5302('0x49')]?_0x181cc1[_0x5302('0x47')]:_0x1f6715['model'];if(_0x5b58a7[_0x5302('0x44')]['includeAll']){_0x181cc1[_0x5302('0x55')]=[{'all':!![]}];}_0x181cc1=_[_0x5302('0x4f')]({},_0x181cc1,_0x5b58a7['options']);return db['WhatsappAccount'][_0x5302('0x56')](_0x181cc1)['then'](handleEntityNotFound(_0x1cf4af,null))['then'](respondWithResult(_0x1cf4af,null))[_0x5302('0x2a')](handleError(_0x1cf4af,null));};exports[_0x5302('0x57')]=function(_0x2eef48,_0x21fc08){return db['WhatsappAccount'][_0x5302('0x57')](_0x2eef48[_0x5302('0x58')],{})[_0x5302('0x1f')](function(_0x5dccb5){var _0x538cbc=_0x2eef48[_0x5302('0x59')][_0x5302('0x38')]({'plain':!![]});if(!_0x538cbc)throw new Error(_0x5302('0x5a'));if(_0x538cbc[_0x5302('0x5b')]===_0x5302('0x59')){var _0x160e87=_0x5dccb5[_0x5302('0x38')]({'plain':!![]});var _0x3ae1b5=_0x5302('0x39');return db[_0x5302('0x5c')][_0x5302('0x56')]({'where':{'name':_0x3ae1b5,'userProfileId':_0x538cbc[_0x5302('0x5d')]},'raw':!![]})[_0x5302('0x1f')](function(_0x51ec40){if(_0x51ec40&&_0x51ec40[_0x5302('0x5e')]===0x0){return db['UserProfileResource'][_0x5302('0x57')]({'name':_0x160e87[_0x5302('0x3c')],'resourceId':_0x160e87['id'],'type':_0x51ec40[_0x5302('0x3c')],'sectionId':_0x51ec40['id']},{})['then'](function(){return _0x5dccb5;});}else{return _0x5dccb5;}})[_0x5302('0x2a')](function(_0x2211c1){logger[_0x5302('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2211c1);throw _0x2211c1;});}return _0x5dccb5;})[_0x5302('0x1f')](respondWithResult(_0x21fc08,0xc9))[_0x5302('0x2a')](handleError(_0x21fc08,null));};exports[_0x5302('0x36')]=function(_0x387dba,_0x12e645){if(_0x387dba[_0x5302('0x58')]['id']){delete _0x387dba[_0x5302('0x58')]['id'];}return db['WhatsappAccount'][_0x5302('0x56')]({'where':{'id':_0x387dba['params']['id']},'include':[{'model':db[_0x5302('0x3f')],'as':_0x5302('0x5f')}]})[_0x5302('0x1f')](handleEntityNotFound(_0x12e645,null))[_0x5302('0x1f')](saveUpdates(_0x387dba[_0x5302('0x58')],null))['then'](respondWithResult(_0x12e645,null))['catch'](handleError(_0x12e645,null));};exports[_0x5302('0x37')]=function(_0x5621f4,_0x52b777){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x5621f4['params']['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x52b777,null))['then'](removeEntity(_0x52b777,null))[_0x5302('0x2a')](handleError(_0x52b777,null));};exports[_0x5302('0x60')]=function(_0x2d0117,_0x2ca118){return db[_0x5302('0x51')][_0x5302('0x60')]()[_0x5302('0x1f')](respondWithResult(_0x2ca118,null))[_0x5302('0x2a')](handleError(_0x2ca118,null));};exports['addDisposition']=function(_0x25d36d,_0x62c5b0,_0x87b484){if(_0x25d36d[_0x5302('0x58')]['id']){delete _0x25d36d[_0x5302('0x58')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x25d36d[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x62c5b0,null))['then'](function(_0x23fa3c){if(_0x23fa3c){_0x25d36d['body'][_0x5302('0x61')]=_0x23fa3c['id'];return db[_0x5302('0x62')][_0x5302('0x57')](_0x25d36d['body']);}})['then'](respondWithResult(_0x62c5b0,null))['catch'](handleError(_0x62c5b0,null));};exports[_0x5302('0x63')]=function(_0x4b4a7c,_0x215d99,_0x1ac63e){var _0x520206={'raw':![],'where':{}};var _0x4d9200={};var _0x24ee9f={'count':0x0,'rows':[]};return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x4b4a7c[_0x5302('0x54')]['id']}})['then'](handleEntityNotFound(_0x215d99,null))[_0x5302('0x1f')](function(_0x25222c){if(_0x25222c){_0x4d9200[_0x5302('0x42')]=_['keys'](db['Disposition']['rawAttributes']);_0x4d9200['query']=_[_0x5302('0x45')](_0x4b4a7c['query']);_0x4d9200[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x4d9200['model'],_0x4d9200['query']);_0x520206[_0x5302('0x47')]=_[_0x5302('0x46')](_0x4d9200[_0x5302('0x42')],qs[_0x5302('0x48')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x48')]));_0x520206['attributes']=_0x520206['attributes'][_0x5302('0x49')]?_0x520206['attributes']:_0x4d9200[_0x5302('0x42')];if(!_0x4b4a7c[_0x5302('0x44')][_0x5302('0x65')](_0x5302('0x66'))){_0x520206[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x32')]);_0x520206[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x4b4a7c[_0x5302('0x44')][_0x5302('0x2f')]);}_0x520206['order']=qs[_0x5302('0x67')](_0x4b4a7c['query'][_0x5302('0x67')]);_0x520206[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_['pick'](_0x4b4a7c[_0x5302('0x44')],_0x4d9200[_0x5302('0x4c')]));_0x520206['where'][_0x5302('0x61')]=_0x25222c['id'];if(_0x4b4a7c[_0x5302('0x44')][_0x5302('0x4e')]){_0x520206[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x520206[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x520206[_0x5302('0x47')],function(_0x24d689){var _0x2fbcbf={};_0x2fbcbf[_0x24d689]={'$like':'%'+_0x4b4a7c[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0x2fbcbf;})});}_0x520206=_[_0x5302('0x4f')]({},_0x520206,_0x4b4a7c[_0x5302('0x50')]);return db['Disposition'][_0x5302('0x31')]({'where':_0x520206[_0x5302('0x4b')]})[_0x5302('0x1f')](function(_0x5d6a6e){_0x24ee9f[_0x5302('0x31')]=_0x5d6a6e;if(_0x4b4a7c[_0x5302('0x44')][_0x5302('0x52')]){_0x520206[_0x5302('0x55')]=[{'all':!![]}];}return db[_0x5302('0x62')][_0x5302('0x53')](_0x520206);})[_0x5302('0x1f')](function(_0x3dd282){_0x24ee9f[_0x5302('0x68')]=_0x3dd282;return _0x24ee9f;});}})[_0x5302('0x1f')](respondWithFilteredResult(_0x215d99,_0x520206))[_0x5302('0x2a')](handleError(_0x215d99,null));};exports[_0x5302('0x69')]=function(_0x234792,_0xb41035,_0x54bf50){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x234792[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0xb41035,null))['then'](function(_0x4a8fd1){if(_0x4a8fd1){return _0x4a8fd1[_0x5302('0x69')](_0x234792[_0x5302('0x44')][_0x5302('0x6a')]);}})[_0x5302('0x1f')](respondWithStatusCode(_0xb41035,null))[_0x5302('0x2a')](handleError(_0xb41035,null));};exports['addAnswer']=function(_0x33d661,_0x1400f0,_0x3ac7fd){if(_0x33d661[_0x5302('0x58')]['id']){delete _0x33d661[_0x5302('0x58')]['id'];}return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x33d661[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x1400f0,null))[_0x5302('0x1f')](function(_0x1e2e45){if(_0x1e2e45){_0x33d661['body'][_0x5302('0x61')]=_0x1e2e45['id'];return db['CannedAnswer'][_0x5302('0x57')](_0x33d661[_0x5302('0x58')]);}})['then'](respondWithResult(_0x1400f0,null))[_0x5302('0x2a')](handleError(_0x1400f0,null));};exports['getAnswers']=function(_0x42095e,_0x857e16,_0x2ade82){var _0x3ca407={'raw':![],'where':{}};var _0x4abc8f={};var _0x5ad168={'count':0x0,'rows':[]};return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x42095e[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x857e16,null))['then'](function(_0x365f57){if(_0x365f57){_0x4abc8f[_0x5302('0x42')]=_['keys'](db['CannedAnswer'][_0x5302('0x40')]);_0x4abc8f[_0x5302('0x44')]=_[_0x5302('0x45')](_0x42095e[_0x5302('0x44')]);_0x4abc8f[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x4abc8f['model'],_0x4abc8f[_0x5302('0x44')]);_0x3ca407[_0x5302('0x47')]=_[_0x5302('0x46')](_0x4abc8f['model'],qs[_0x5302('0x48')](_0x42095e[_0x5302('0x44')]['fields']));_0x3ca407[_0x5302('0x47')]=_0x3ca407['attributes']['length']?_0x3ca407[_0x5302('0x47')]:_0x4abc8f[_0x5302('0x42')];if(!_0x42095e['query'][_0x5302('0x65')](_0x5302('0x66'))){_0x3ca407['limit']=qs['limit'](_0x42095e['query'][_0x5302('0x32')]);_0x3ca407[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x42095e[_0x5302('0x44')]['offset']);}_0x3ca407[_0x5302('0x4a')]=qs[_0x5302('0x67')](_0x42095e[_0x5302('0x44')][_0x5302('0x67')]);_0x3ca407[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x42095e[_0x5302('0x44')],_0x4abc8f['filters']));_0x3ca407['where'][_0x5302('0x61')]=_0x365f57['id'];if(_0x42095e[_0x5302('0x44')][_0x5302('0x4e')]){_0x3ca407[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x3ca407[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x3ca407[_0x5302('0x47')],function(_0x37c87c){var _0x64605a={};_0x64605a[_0x37c87c]={'$like':'%'+_0x42095e[_0x5302('0x44')]['filter']+'%'};return _0x64605a;})});}_0x3ca407=_[_0x5302('0x4f')]({},_0x3ca407,_0x42095e[_0x5302('0x50')]);return db[_0x5302('0x6b')][_0x5302('0x31')]({'where':_0x3ca407[_0x5302('0x4b')]})[_0x5302('0x1f')](function(_0x483508){_0x5ad168['count']=_0x483508;if(_0x42095e[_0x5302('0x44')][_0x5302('0x52')]){_0x3ca407[_0x5302('0x55')]=[{'all':!![]}];}return db[_0x5302('0x6b')][_0x5302('0x53')](_0x3ca407);})[_0x5302('0x1f')](function(_0x3b3771){_0x5ad168[_0x5302('0x68')]=_0x3b3771;return _0x5ad168;});}})[_0x5302('0x1f')](respondWithFilteredResult(_0x857e16,_0x3ca407))[_0x5302('0x2a')](handleError(_0x857e16,null));};exports[_0x5302('0x6c')]=function(_0x20d2c4,_0x4d20c8,_0x214d6c){return db[_0x5302('0x51')]['find']({'where':{'id':_0x20d2c4[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x4d20c8,null))[_0x5302('0x1f')](function(_0x38eb51){if(_0x38eb51){return _0x38eb51['removeAnswers'](_0x20d2c4[_0x5302('0x44')]['ids']);}})[_0x5302('0x1f')](respondWithStatusCode(_0x4d20c8,null))[_0x5302('0x2a')](handleError(_0x4d20c8,null));};exports['addAgents']=function(_0x13df89,_0x5e9022,_0x43c2a1){return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x13df89[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x5e9022,null))['then'](function(_0x24f1ad){if(_0x24f1ad){return _0x24f1ad['addAgents'](_0x13df89[_0x5302('0x58')][_0x5302('0x6a')],_['omit'](_0x13df89[_0x5302('0x58')],[_0x5302('0x6a'),'id'])||{})['spread'](function(_0x36ce29){for(var _0x5e46f4=0x0;_0x5e46f4<_0x13df89[_0x5302('0x58')][_0x5302('0x6a')][_0x5302('0x49')];_0x5e46f4+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x13df89[_0x5302('0x58')][_0x5302('0x6a')][_0x5e46f4]),'WhatsappAccountId':Number(_0x13df89['params']['id'])});}return _0x36ce29;});}})['then'](respondWithResult(_0x5e9022,null))[_0x5302('0x2a')](handleError(_0x5e9022,null));};exports[_0x5302('0x6d')]=function(_0x366099,_0x35e7bf,_0x463959){return db['WhatsappAccount'][_0x5302('0x56')]({'where':{'id':_0x366099[_0x5302('0x54')]['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x35e7bf,null))[_0x5302('0x1f')](function(_0xba3e37){if(_0xba3e37){return _0xba3e37[_0x5302('0x6d')](_0x366099[_0x5302('0x44')]['ids'])['then'](function(){if(_[_0x5302('0x6e')](_0x366099[_0x5302('0x44')]['ids'])){for(var _0x349e62=0x0;_0x349e62<_0x366099[_0x5302('0x44')][_0x5302('0x6a')][_0x5302('0x49')];_0x349e62+=0x1){socket[_0x5302('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x366099['query'][_0x5302('0x6a')][_0x349e62]),'WhatsappAccountId':Number(_0x366099[_0x5302('0x54')]['id'])});}}else{socket[_0x5302('0x6f')](_0x5302('0x70'),{'UserId':Number(_0x366099[_0x5302('0x44')][_0x5302('0x6a')]),'WhatsappAccountId':Number(_0x366099['params']['id'])});}});}})[_0x5302('0x1f')](respondWithStatusCode(_0x35e7bf,null))[_0x5302('0x2a')](handleError(_0x35e7bf,null));};exports[_0x5302('0x71')]=function(_0x59c623,_0x4737c5,_0x2ab5ec){var _0x194cfa={};var _0x421ab8={};var _0x1420c2;var _0x42ad28;return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x59c623['params']['id']}})[_0x5302('0x1f')](handleEntityNotFound(_0x4737c5,null))['then'](function(_0x229a84){if(_0x229a84){_0x1420c2=_0x229a84;_0x421ab8[_0x5302('0x42')]=_['keys'](db[_0x5302('0x72')][_0x5302('0x40')]);_0x421ab8['query']=_[_0x5302('0x45')](_0x59c623['query']);_0x421ab8[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x421ab8[_0x5302('0x42')],_0x421ab8['query']);_0x194cfa[_0x5302('0x47')]=_[_0x5302('0x46')](_0x421ab8[_0x5302('0x42')],qs['fields'](_0x59c623['query'][_0x5302('0x48')]));_0x194cfa[_0x5302('0x47')]=_0x194cfa[_0x5302('0x47')]['length']?_0x194cfa['attributes']:_0x421ab8[_0x5302('0x42')];_0x194cfa[_0x5302('0x4a')]=qs[_0x5302('0x67')](_0x59c623[_0x5302('0x44')][_0x5302('0x67')]);_0x194cfa[_0x5302('0x4b')]=qs['filters'](_[_0x5302('0x4d')](_0x59c623[_0x5302('0x44')],_0x421ab8['filters']));if(_0x59c623[_0x5302('0x44')][_0x5302('0x4e')]){_0x194cfa[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0x194cfa[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0x194cfa[_0x5302('0x47')],function(_0x4e3c21){var _0x317a4b={};_0x317a4b[_0x4e3c21]={'$like':'%'+_0x59c623[_0x5302('0x44')]['filter']+'%'};return _0x317a4b;})});}_0x194cfa=_[_0x5302('0x4f')]({},_0x194cfa,_0x59c623['options']);return _0x1420c2[_0x5302('0x71')](_0x194cfa);}})['then'](function(_0x1a4f0b){if(_0x1a4f0b){_0x42ad28=_0x1a4f0b['length'];if(!_0x59c623[_0x5302('0x44')][_0x5302('0x65')]('nolimit')){_0x194cfa[_0x5302('0x32')]=qs['limit'](_0x59c623[_0x5302('0x44')][_0x5302('0x32')]);_0x194cfa[_0x5302('0x2f')]=qs[_0x5302('0x2f')](_0x59c623[_0x5302('0x44')][_0x5302('0x2f')]);}return _0x1420c2[_0x5302('0x71')](_0x194cfa);}})['then'](function(_0x26b3ca){if(_0x26b3ca){return _0x26b3ca?{'count':_0x42ad28,'rows':_0x26b3ca}:null;}})[_0x5302('0x1f')](respondWithResult(_0x4737c5,null))[_0x5302('0x2a')](handleError(_0x4737c5,null));};exports[_0x5302('0x73')]=function(_0x9404fd,_0x533d02){var _0x213baa=_0x9404fd[_0x5302('0x54')]['id'];var _0x519c97=_0x9404fd[_0x5302('0x58')];var _0x384979=0xc8;var _0x22d304=null;return db[_0x5302('0x74')][_0x5302('0x75')]({'isolationLevel':db[_0x5302('0x74')]['Transaction'][_0x5302('0x76')][_0x5302('0x77')]},function(_0x40b5b0){return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x213baa},'transaction':_0x40b5b0})['then'](function(_0x1fc7c0){if(_0x1fc7c0){return db[_0x5302('0x78')][_0x5302('0x37')]({'where':{'WhatsappAccountId':_0x213baa},'transaction':_0x40b5b0})[_0x5302('0x1f')](function(){var _0x2cdea6=_['map'](_0x519c97,function(_0x457d7c){_0x457d7c['WhatsappAccountId']=_0x213baa;return _0x457d7c;});return db[_0x5302('0x78')][_0x5302('0x79')](_0x2cdea6,{'transaction':_0x40b5b0});});}else{_0x384979=0x194;_0x22d304=[];}});})[_0x5302('0x1f')](function(){if(_0x384979!==0x194){return db[_0x5302('0x78')][_0x5302('0x7a')]({'where':{'WhatsappAccountId':_0x213baa},'order':'priority'})[_0x5302('0x1f')](function(_0x19d949){_0x22d304=_0x19d949;});}})[_0x5302('0x2a')](function(_0x576686){_0x384979=0x1f4;logger['error'](_0x576686[_0x5302('0x3b')]);if(_0x576686[_0x5302('0x3c')]){delete _0x576686['name'];}_0x22d304=_0x576686;})[_0x5302('0x7b')](function(){if(_0x22d304===null){_0x533d02['sendStatus'](_0x384979);}else{if(_0x384979===0x1f4){_0x533d02[_0x5302('0x2c')](_0x384979)[_0x5302('0x3d')](_0x22d304);}else{_0x533d02[_0x5302('0x2c')](_0x384979)['json'](_0x22d304);}}});};exports[_0x5302('0x7c')]=function(_0x3f1dbb,_0x18716b,_0x161c39){var _0xb61a5d={};var _0x17ec15={};var _0x55c3b;var _0x389f30;return db[_0x5302('0x51')][_0x5302('0x64')]({'where':{'id':_0x3f1dbb[_0x5302('0x54')]['id']}})['then'](handleEntityNotFound(_0x18716b,null))['then'](function(_0x5f2e33){if(_0x5f2e33){_0x55c3b=_0x5f2e33;_0x17ec15['model']=_['keys'](db[_0x5302('0x78')][_0x5302('0x40')]);_0x17ec15[_0x5302('0x44')]=_[_0x5302('0x45')](_0x3f1dbb[_0x5302('0x44')]);_0x17ec15[_0x5302('0x4c')]=_[_0x5302('0x46')](_0x17ec15['model'],_0x17ec15['query']);_0xb61a5d[_0x5302('0x47')]=_['intersection'](_0x17ec15[_0x5302('0x42')],qs['fields'](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x48')]));_0xb61a5d[_0x5302('0x47')]=_0xb61a5d['attributes'][_0x5302('0x49')]?_0xb61a5d[_0x5302('0x47')]:_0x17ec15[_0x5302('0x42')];_0xb61a5d[_0x5302('0x4a')]=qs['sort'](_0x3f1dbb['query'][_0x5302('0x67')]);_0xb61a5d[_0x5302('0x4b')]=qs[_0x5302('0x4c')](_[_0x5302('0x4d')](_0x3f1dbb['query'],_0x17ec15[_0x5302('0x4c')]));if(_0x3f1dbb['query'][_0x5302('0x4e')]){_0xb61a5d[_0x5302('0x4b')]=_[_0x5302('0x4f')](_0xb61a5d[_0x5302('0x4b')],{'$or':_[_0x5302('0x43')](_0xb61a5d[_0x5302('0x47')],function(_0x327fa7){var _0x3939e2={};_0x3939e2[_0x327fa7]={'$like':'%'+_0x3f1dbb[_0x5302('0x44')][_0x5302('0x4e')]+'%'};return _0x3939e2;})});}_0xb61a5d=_[_0x5302('0x4f')]({},_0xb61a5d,_0x3f1dbb[_0x5302('0x50')]);return _0x55c3b[_0x5302('0x7c')](_0xb61a5d);}})[_0x5302('0x1f')](function(_0x33001c){if(_0x33001c){_0x389f30=_0x33001c[_0x5302('0x49')];if(!_0x3f1dbb[_0x5302('0x44')]['hasOwnProperty'](_0x5302('0x66'))){_0xb61a5d[_0x5302('0x32')]=qs[_0x5302('0x32')](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x32')]);_0xb61a5d[_0x5302('0x2f')]=qs['offset'](_0x3f1dbb[_0x5302('0x44')][_0x5302('0x2f')]);}return _0x55c3b[_0x5302('0x7c')](_0xb61a5d);}})[_0x5302('0x1f')](function(_0xdbe38a){if(_0xdbe38a){return _0xdbe38a?{'count':_0x389f30,'rows':_0xdbe38a}:null;}})[_0x5302('0x1f')](respondWithResult(_0x18716b,null))[_0x5302('0x2a')](handleError(_0x18716b,null));};exports[_0x5302('0x7d')]=function(_0x2105f9,_0x16c07f,_0x1accfb){var _0x59632c={'channel':_0x5302('0x7e')};var _0x5be486=[];var _0x28bca3=[];var _0x3281cb={};return db[_0x5302('0x51')]['find']({'where':{'id':_0x2105f9['params']['id']},'include':[{'model':db[_0x5302('0x78')],'as':_0x5302('0x7f')}]})['then'](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x41194f){_0x59632c[_0x5302('0x80')]=_0x41194f;if(_0x59632c['account']&&_0x59632c['account'][_0x5302('0x41')]===_0x5302('0x81')&&_0x2105f9[_0x5302('0x58')][_0x5302('0x82')]){if(_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][_0x5302('0x49')]===0x0)return;if(_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][0x0]['state']!==_0x5302('0x83'))return;return db[_0x5302('0x84')][_0x5302('0x36')]({'read':!![],'readAt':_0x2105f9[_0x5302('0x58')][_0x5302('0x82')][0x0]['timestamp']},{'where':{'messageId':_0x2105f9['body']['statuses'][0x0]['message_id']},'individualHooks':!![]})[_0x5302('0x1f')](function(_0x124990){return _0x16c07f[_0x5302('0x2c')](0xc8)[_0x5302('0x2e')](_0x124990);});}_0x59632c['applications']=_[_0x5302('0x85')](_0x41194f[_0x5302('0x7f')],[_0x5302('0x86')],[_0x5302('0x87')]);if(_0x59632c[_0x5302('0x80')]['Applications']){delete _0x59632c['account'][_0x5302('0x7f')];}return db['CmContact']['describe']()[_0x5302('0x1f')](function(_0x1aed60){if(!_0x1aed60){throw new db['Sequelize'][(_0x5302('0x88'))]('no\x20available\x20attributes');}_0x5be486=_['difference'](_[_0x5302('0x45')](_0x1aed60),[_0x5302('0x89'),_0x5302('0x8a')]);_0x28bca3=_[_0x5302('0x8b')](_[_0x5302('0x45')](_0x1aed60),['createdAt','updatedAt','CompanyId',_0x5302('0x8c')]);_0x59632c[_0x5302('0x58')]={'mapKey':_0x5302('0x8d')};if(_0x59632c[_0x5302('0x80')]&&_0x59632c[_0x5302('0x80')][_0x5302('0x41')]===_0x5302('0x8e')){_0x59632c[_0x5302('0x58')]['from']=_0x2105f9[_0x5302('0x58')][_0x5302('0x8f')][_0x5302('0x90')](_0x5302('0x91'),'');_0x59632c[_0x5302('0x58')][_0x5302('0x58')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x92')];_0x59632c[_0x5302('0x58')][_0x5302('0x93')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x94')];}if(_0x59632c['account']&&_0x59632c['account'][_0x5302('0x41')]===_0x5302('0x81')){_0x59632c['body']['from']=_0x2105f9['body'][_0x5302('0x95')][0x0][_0x5302('0x96')];_0x59632c['body'][_0x5302('0x58')]=_0x2105f9['body'][_0x5302('0x95')][0x0]['message'][_0x5302('0x58')];_0x59632c['body'][_0x5302('0x93')]=_0x2105f9[_0x5302('0x58')][_0x5302('0x95')][0x0]['message_id'];}if(_0x59632c['body']['id']){delete _0x59632c[_0x5302('0x58')]['id'];}if(_['isNil'](_0x59632c['body']['from'])){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))](_0x5302('0x98'));}if(_['isNil'](_0x59632c['body'][_0x5302('0x58')])||_0x59632c[_0x5302('0x58')][_0x5302('0x58')]===''){throw new db['Sequelize'][(_0x5302('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x59632c[_0x5302('0x58')][_0x5302('0x99')])){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))](_0x5302('0x9a')+_0x28bca3);}if(!_['includes'](_0x28bca3,_0x59632c['body'][_0x5302('0x99')])){throw new db[(_0x5302('0x97'))]['ValidationError'](_0x5302('0x9b')+_0x28bca3);}_0x3281cb[_0x59632c[_0x5302('0x58')]['mapKey']]=_0x59632c[_0x5302('0x58')][_0x5302('0x96')];return db[_0x5302('0x9c')]['find']({'where':{'id':_0x59632c[_0x5302('0x80')]['ListId']},'include':[{'model':db[_0x5302('0x9d')],'as':_0x5302('0x9e'),'where':_0x3281cb,'limit':0x1,'order':[[_0x5302('0x8a'),'DESC']]}]});})[_0x5302('0x1f')](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x1c7f92){if(_0x1c7f92){_0x59632c['list']=_[_0x5302('0x9f')](_0x1c7f92,['Contacts']);if(_0x1c7f92[_0x5302('0x9e')]['length']){return _0x1c7f92['Contacts'][0x0];}var _0x2e52df=_[_0x5302('0x16')](_0x59632c[_0x5302('0x58')],{'firstName':_0x59632c[_0x5302('0x58')]['from'],'ListId':_0x1c7f92['id']});_0x2e52df[_0x59632c[_0x5302('0x58')][_0x5302('0x99')]]=_0x59632c[_0x5302('0x58')][_0x5302('0x96')];return db[_0x5302('0x9d')][_0x5302('0x57')](_0x2e52df,{'fields':_0x5be486,'raw':!![]});}})[_0x5302('0x1f')](handleEntityNotFound(_0x16c07f,null))[_0x5302('0x1f')](function(_0x5f4f9b){if(_0x5f4f9b){_0x59632c[_0x5302('0xa0')]=_0x5f4f9b;var _0x371bec={'ContactId':_0x5f4f9b['id'],'phone':_0x59632c[_0x5302('0x58')]['from'],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id']};var _0x430d07={'ContactId':_0x5f4f9b['id'],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x5302('0x56')]({'where':_0x430d07})[_0x5302('0x1f')](function(_0x37b9ee){if(_0x37b9ee){return[_0x37b9ee,![]];}return db[_0x5302('0xa1')][_0x5302('0x57')](_0x371bec)[_0x5302('0x1f')](function(_0x13c0d3){return[_0x13c0d3,!![]];});});}})[_0x5302('0xa2')](function(_0xd897bf,_0x2883d2){_0x59632c[_0x5302('0xa3')]=_0xd897bf[_0x5302('0x38')]({'plain':!![]});_0x59632c['interaction']['created']=![];if(_0x2883d2){if(_0x59632c[_0x5302('0x80')][_0x5302('0xa4')]){_0x59632c[_0x5302('0xa5')][_0x5302('0xa6')]({'id':0x0,'priority':_0x59632c[_0x5302('0xa5')][_0x5302('0x49')]+0x1,'app':_0x5302('0xa7'),'appdata':_0x5302('0xa8'),'interval':_0x5302('0xa9')});}_0x59632c['interaction']['created']=!![];}return db[_0x5302('0x84')][_0x5302('0x57')]({'phone':_0x59632c[_0x5302('0x58')][_0x5302('0x96')],'messageId':_0x59632c[_0x5302('0x58')][_0x5302('0x93')],'body':_0x59632c[_0x5302('0x58')][_0x5302('0x58')],'WhatsappAccountId':_0x2105f9[_0x5302('0x54')]['id'],'WhatsappInteractionId':_0xd897bf['id'],'direction':'in','ContactId':_0xd897bf[_0x5302('0xaa')],'AttachmentId':_0x59632c[_0x5302('0x58')][_0x5302('0xab')]});})[_0x5302('0x1f')](function(_0x4c9d91){_0x59632c[_0x5302('0x28')]=_0x4c9d91;if(_0x59632c['interaction'][_0x5302('0xac')]){return db[_0x5302('0x72')][_0x5302('0x56')]({'attributes':['id','name'],'where':{'id':_0x59632c[_0x5302('0xa3')][_0x5302('0xac')]}})[_0x5302('0x1f')](function(_0x472f75){if(_0x472f75){_0x59632c[_0x5302('0xa5')][_0x5302('0xad')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x472f75[_0x5302('0x3c')]+','+(_0x59632c[_0x5302('0x80')][_0x5302('0xae')]||0xa),'interval':_0x5302('0xa9')});}return respondWithRpcPromise(_0x5302('0xaf'),_0x5302('0xb0'),_0x59632c);});}return respondWithRpcPromise(_0x5302('0xaf'),_0x5302('0xb0'),_0x59632c);})[_0x5302('0x1f')](function(_0x5702bc){if(_0x5702bc){var _0x35fe1a=0xc8;var _0x3d5fcd=_0x5302('0xb1');logger[_0x5302('0x20')](_0x5302('0x24'),_0x3d5fcd,_0x35fe1a,'entity\x20found');logger[_0x5302('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x3d5fcd,_0x35fe1a,'entity\x20found',JSON[_0x5302('0x25')](_0x5702bc));if(_0x59632c[_0x5302('0x80')][_0x5302('0x41')]===_0x5302('0x8e')){return _0x16c07f[_0x5302('0x2c')](_0x35fe1a)[_0x5302('0x33')](_0x5302('0xb2'),_0x5302('0xb3'))['send'](_0x5302('0xb4'));}else{return _0x16c07f['status'](_0x35fe1a)[_0x5302('0x2e')](_0x5702bc);}}});})[_0x5302('0x2a')](handleError(_0x16c07f,null));};exports['send']=function(_0x49ae4b,_0xe42e95,_0x44543c){var _0xf75fa2,_0x12be8c,_0x4e8077;if(_[_0x5302('0xb5')](_0x49ae4b[_0x5302('0x58')]['body'])||_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')]===''){throw new db[(_0x5302('0x97'))][(_0x5302('0x88'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x5302('0xb5')](_0x49ae4b['body']['to'])){throw new db[(_0x5302('0x97'))]['ValidationError'](_0x5302('0xb6'));}_0xf75fa2=_0x49ae4b[_0x5302('0x58')]['to'];return db[_0x5302('0x51')][_0x5302('0x56')]({'where':{'id':_0x49ae4b[_0x5302('0x54')]['id']},'include':[{'model':db[_0x5302('0x9c')],'as':'List','include':[{'model':db[_0x5302('0x9d')],'as':_0x5302('0x9e'),'where':{'mobile':_0xf75fa2},'limit':0x1,'order':[[_0x5302('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0xe42e95,null))[_0x5302('0x1f')](function(_0x3d960a){if(_0x3d960a&&_0x3d960a[_0x5302('0xb7')]){_0x12be8c=_0x3d960a[_0x5302('0x38')]({'plain':!![]});if(_0x12be8c[_0x5302('0xb7')]&&_0x12be8c[_0x5302('0xb7')]['Contacts'][_0x5302('0x49')]){return _0x12be8c[_0x5302('0xb7')][_0x5302('0x9e')][0x0];}return db[_0x5302('0x9d')][_0x5302('0x57')](_[_0x5302('0x16')](_0x49ae4b[_0x5302('0x58')],{'firstName':_0xf75fa2,'mobile':_0xf75fa2,'phone':_0xf75fa2,'ListId':_0x12be8c[_0x5302('0x8c')]}));}})[_0x5302('0x1f')](handleEntityNotFound(_0xe42e95,null))[_0x5302('0x1f')](function(_0x16f280){if(_0x16f280){_0x4e8077=_0x16f280;return db['WhatsappInteraction'][_0x5302('0x56')]({'where':{'ContactId':_0x4e8077['id'],'closed':![],'WhatsappAccountId':_0x12be8c['id']}})[_0x5302('0x1f')](function(_0x2ab6ea){if(_0x2ab6ea){return[_0x2ab6ea,![]];}return db[_0x5302('0xa1')][_0x5302('0x57')]({'UserId':_0x49ae4b['user']['id'],'ContactId':_0x4e8077['id'],'WhatsappAccountId':_0x12be8c['id'],'phone':_0xf75fa2,'firstMsgDirection':_0x5302('0xb8'),'Messages':[_[_0x5302('0x4f')](_0x49ae4b['body'],{'read':![],'body':_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')],'phone':_0xf75fa2,'WhatsappAccountId':_0x12be8c['id'],'UserId':_0x49ae4b[_0x5302('0x59')]['id'],'ContactId':_0x4e8077['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x5302('0xb9')}]})[_0x5302('0x1f')](function(_0x18f9f0){return[_0x18f9f0,!![]];});});}})[_0x5302('0xa2')](function(_0x44cb5d,_0x27607d){if(_0x27607d){return _0x44cb5d;}return db[_0x5302('0x84')][_0x5302('0x57')](_['merge'](_0x49ae4b[_0x5302('0x58')],{'read':![],'body':_0x49ae4b[_0x5302('0x58')][_0x5302('0x58')],'phone':_0xf75fa2,'WhatsappAccountId':_0x12be8c['id'],'WhatsappInteractionId':_0x44cb5d['id'],'UserId':_0x49ae4b['user']['id'],'ContactId':_0x4e8077['id']}))[_0x5302('0x1f')](function(_0x46230e){_0x44cb5d[_0x5302('0xba')][_0x5302('0xb9')]=[];_0x44cb5d['dataValues'][_0x5302('0xb9')]['push'](_0x46230e[_0x5302('0xba')]);return _0x44cb5d;});})['then'](respondWithResult(_0xe42e95,null))[_0x5302('0x2a')](handleError(_0xe42e95,null));};
\ No newline at end of file
+var _0x5ab7=['statuses','read','WhatsappMessage','timestamp','message_id','priority','asc','Sequelize','ValidationError','difference','createdAt','updatedAt','ListId','mobile','twilio','from','replace','whatsapp:','messageId','notifications','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','CmContact','Contacts','DESC','contact','WhatsappInteraction','interaction','autoclose','applications','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','CmList','List','out','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','get','WhatsappAccounts','UserProfileResource','stack','name','send','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','type','filter','merge','options','includeAll','include','rows','catch','params','Pause','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','WhatsappAccountId','Disposition','create','getDispositions','findOne','findAll','removeDispositions','addAnswer','CannedAnswer','removeAnswers','addAgents','ids','omit','spread','emit','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','READ_COMMITTED','WhatsappApplication','destroy','findAndCountAll','finally','getApplications','notify','whatsapp','Applications','account','sinch'];(function(_0x12fe00,_0x463317){var _0xa08cc0=function(_0xfc053e){while(--_0xfc053e){_0x12fe00['push'](_0x12fe00['shift']());}};_0xa08cc0(++_0x463317);}(_0x5ab7,0x1c4));var _0x75ab=function(_0x238272,_0x10a7a1){_0x238272=_0x238272-0x0;var _0x4c3ec1=_0x5ab7[_0x238272];return _0x4c3ec1;};'use strict';var emlformat=require(_0x75ab('0x0'));var rimraf=require(_0x75ab('0x1'));var zipdir=require(_0x75ab('0x2'));var jsonpatch=require(_0x75ab('0x3'));var rp=require(_0x75ab('0x4'));var moment=require('moment');var BPromise=require(_0x75ab('0x5'));var Mustache=require(_0x75ab('0x6'));var util=require('util');var path=require(_0x75ab('0x7'));var sox=require(_0x75ab('0x8'));var csv=require('to-csv');var ejs=require(_0x75ab('0x9'));var fs=require('fs');var fs_extra=require(_0x75ab('0xa'));var _=require('lodash');var squel=require(_0x75ab('0xb'));var crypto=require(_0x75ab('0xc'));var jsforce=require(_0x75ab('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x75ab('0xe'));var querystring=require(_0x75ab('0xf'));var Papa=require(_0x75ab('0x10'));var Redis=require(_0x75ab('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x75ab('0x12'));var as=require(_0x75ab('0x13'));var hardwareService=require(_0x75ab('0x14'));var logger=require(_0x75ab('0x15'))('api');var utils=require(_0x75ab('0x16'));var config=require(_0x75ab('0x17'));var licenseUtil=require(_0x75ab('0x18'));var db=require(_0x75ab('0x19'))['db'];config[_0x75ab('0x1a')]=_[_0x75ab('0x1b')](config[_0x75ab('0x1a')],{'host':_0x75ab('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x75ab('0x1a')]));require(_0x75ab('0x1d'))[_0x75ab('0x1e')](socket);var jayson=require(_0x75ab('0x1f'));var client=jayson[_0x75ab('0x20')][_0x75ab('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x1a7335,_0x35ad6b,_0x531cda,_0x342204){return new BPromise(function(_0x2c3c6c,_0x4de2ec){var _0x953137=_0x342204||client;return _0x953137[_0x75ab('0x22')](_0x1a7335,_0x531cda)[_0x75ab('0x23')](function(_0x2dc225){logger[_0x75ab('0x24')](_0x75ab('0x25'),_0x35ad6b,_0x75ab('0x26'));logger['debug'](_0x75ab('0x27'),_0x35ad6b,_0x75ab('0x26'),JSON['stringify'](_0x2dc225));if(_0x2dc225[_0x75ab('0x28')]){if(_0x2dc225[_0x75ab('0x28')][_0x75ab('0x29')]===0x1f4){logger[_0x75ab('0x28')](_0x75ab('0x25'),_0x35ad6b,_0x2dc225[_0x75ab('0x28')]['message']);return _0x4de2ec(_0x2dc225['error'][_0x75ab('0x2a')]);}logger[_0x75ab('0x28')](_0x75ab('0x25'),_0x35ad6b,_0x2dc225['error'][_0x75ab('0x2a')]);return _0x2c3c6c(_0x2dc225['error'][_0x75ab('0x2a')]);}else{logger['info'](_0x75ab('0x25'),_0x35ad6b,'request\x20sent');_0x2c3c6c(_0x2dc225[_0x75ab('0x2b')][_0x75ab('0x2a')]);}})['catch'](function(_0x3a5556){logger[_0x75ab('0x28')](_0x75ab('0x25'),_0x35ad6b,_0x3a5556);_0x4de2ec(_0x3a5556);});});}function respondWithStatusCode(_0xb9e4cc,_0x2650b4){_0x2650b4=_0x2650b4||0xcc;return function(_0x368ac9){if(_0x368ac9){return _0xb9e4cc[_0x75ab('0x2c')](_0x2650b4);}return _0xb9e4cc[_0x75ab('0x2d')](_0x2650b4)[_0x75ab('0x2e')]();};}function respondWithResult(_0x18f835,_0x400069){_0x400069=_0x400069||0xc8;return function(_0xf255e9){if(_0xf255e9){return _0x18f835[_0x75ab('0x2d')](_0x400069)[_0x75ab('0x2f')](_0xf255e9);}};}function respondWithFilteredResult(_0x5c5419,_0x4b2166){return function(_0x327559){if(_0x327559){var _0xaf0ad7=typeof _0x4b2166[_0x75ab('0x30')]===_0x75ab('0x31')&&typeof _0x4b2166['limit']===_0x75ab('0x31');var _0x1e79f2=_0x327559['count'];var _0x189d21=_0xaf0ad7?0x0:_0x4b2166[_0x75ab('0x30')];var _0x1aad20=_0xaf0ad7?_0x327559[_0x75ab('0x32')]:_0x4b2166[_0x75ab('0x30')]+_0x4b2166[_0x75ab('0x33')];var _0x24441f;if(_0x1aad20>=_0x1e79f2){_0x1aad20=_0x1e79f2;_0x24441f=0xc8;}else{_0x24441f=0xce;}_0x5c5419[_0x75ab('0x2d')](_0x24441f);return _0x5c5419[_0x75ab('0x34')](_0x75ab('0x35'),_0x189d21+'-'+_0x1aad20+'/'+_0x1e79f2)[_0x75ab('0x2f')](_0x327559);}return null;};}function patchUpdates(_0x424d70){return function(_0x3fcfe6){try{jsonpatch[_0x75ab('0x36')](_0x3fcfe6,_0x424d70,!![]);}catch(_0x53559e){return BPromise[_0x75ab('0x37')](_0x53559e);}return _0x3fcfe6[_0x75ab('0x38')]();};}function saveUpdates(_0x38b484,_0x43ca5a){return function(_0x2d7b73){if(_0x2d7b73){return _0x2d7b73['update'](_0x38b484)['then'](function(_0x5bbeaf){return _0x5bbeaf;});}return null;};}function removeEntity(_0x1ee766,_0x36439e){return function(_0x255dc9){if(_0x255dc9){return _0x255dc9['destroy']()[_0x75ab('0x23')](function(){var _0x39ca64=_0x255dc9[_0x75ab('0x39')]({'plain':!![]});var _0x42b0f0=_0x75ab('0x3a');return db[_0x75ab('0x3b')]['destroy']({'where':{'type':_0x42b0f0,'resourceId':_0x39ca64['id']}})['then'](function(){return _0x255dc9;});})[_0x75ab('0x23')](function(){_0x1ee766['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x618872,_0x44d210){return function(_0x5465ac){if(!_0x5465ac){_0x618872['sendStatus'](0x194);}return _0x5465ac;};}function handleError(_0x4eb166,_0x491f76){_0x491f76=_0x491f76||0x1f4;return function(_0x10f4a0){logger['error'](_0x10f4a0[_0x75ab('0x3c')]);if(_0x10f4a0[_0x75ab('0x3d')]){delete _0x10f4a0[_0x75ab('0x3d')];}_0x4eb166[_0x75ab('0x2d')](_0x491f76)[_0x75ab('0x3e')](_0x10f4a0);};}exports['index']=function(_0x373e11,_0x9408a){var _0x1d736c={'include':[{'model':db['Pause'],'as':_0x75ab('0x3f')}]},_0x260d47={},_0x3fc910={'count':0x0,'rows':[]};var _0x338d9c=_[_0x75ab('0x40')](db[_0x75ab('0x41')][_0x75ab('0x42')],function(_0x3bc9af){return{'name':_0x3bc9af[_0x75ab('0x43')],'type':_0x3bc9af['type'][_0x75ab('0x44')]};});_0x260d47[_0x75ab('0x45')]=_[_0x75ab('0x40')](_0x338d9c,'name');_0x260d47[_0x75ab('0x46')]=_[_0x75ab('0x47')](_0x373e11[_0x75ab('0x46')]);_0x260d47['filters']=_['intersection'](_0x260d47[_0x75ab('0x45')],_0x260d47[_0x75ab('0x46')]);_0x1d736c[_0x75ab('0x48')]=_[_0x75ab('0x49')](_0x260d47['model'],qs[_0x75ab('0x4a')](_0x373e11[_0x75ab('0x46')][_0x75ab('0x4a')]));_0x1d736c['attributes']=_0x1d736c[_0x75ab('0x48')][_0x75ab('0x4b')]?_0x1d736c[_0x75ab('0x48')]:_0x260d47[_0x75ab('0x45')];if(!_0x373e11[_0x75ab('0x46')][_0x75ab('0x4c')](_0x75ab('0x4d'))){_0x1d736c['limit']=qs[_0x75ab('0x33')](_0x373e11[_0x75ab('0x46')][_0x75ab('0x33')]);_0x1d736c[_0x75ab('0x30')]=qs[_0x75ab('0x30')](_0x373e11[_0x75ab('0x46')][_0x75ab('0x30')]);}_0x1d736c[_0x75ab('0x4e')]=qs['sort'](_0x373e11['query'][_0x75ab('0x4f')]);_0x1d736c[_0x75ab('0x50')]=qs[_0x75ab('0x51')](_[_0x75ab('0x52')](_0x373e11[_0x75ab('0x46')],_0x260d47['filters']),_0x338d9c);if(_0x373e11['query']['filter']){_0x1d736c[_0x75ab('0x50')]=_['merge'](_0x1d736c[_0x75ab('0x50')],{'$or':_[_0x75ab('0x40')](_0x338d9c,function(_0x25df76){if(_0x25df76[_0x75ab('0x53')]!=='VIRTUAL'){var _0x533c89={};_0x533c89[_0x25df76[_0x75ab('0x3d')]]={'$like':'%'+_0x373e11[_0x75ab('0x46')][_0x75ab('0x54')]+'%'};return _0x533c89;}})});}_0x1d736c=_[_0x75ab('0x55')]({},_0x1d736c,_0x373e11[_0x75ab('0x56')]);var _0x307026={'where':_0x1d736c[_0x75ab('0x50')]};return db[_0x75ab('0x41')][_0x75ab('0x32')](_0x307026)['then'](function(_0x26d15d){_0x3fc910[_0x75ab('0x32')]=_0x26d15d;if(_0x373e11['query'][_0x75ab('0x57')]){_0x1d736c[_0x75ab('0x58')]=[{'all':!![]}];}return db[_0x75ab('0x41')]['findAll'](_0x1d736c);})[_0x75ab('0x23')](function(_0x34b7ea){_0x3fc910[_0x75ab('0x59')]=_0x34b7ea;return _0x3fc910;})[_0x75ab('0x23')](respondWithFilteredResult(_0x9408a,_0x1d736c))[_0x75ab('0x5a')](handleError(_0x9408a,null));};exports['show']=function(_0x53901d,_0x37a320){var _0x2ea7a8={'raw':![],'where':{'id':_0x53901d[_0x75ab('0x5b')]['id']},'include':[{'model':db[_0x75ab('0x5c')],'as':_0x75ab('0x3f')}]},_0x2a099c={};_0x2a099c['model']=_[_0x75ab('0x47')](db['WhatsappAccount'][_0x75ab('0x42')]);_0x2a099c[_0x75ab('0x46')]=_[_0x75ab('0x47')](_0x53901d[_0x75ab('0x46')]);_0x2a099c[_0x75ab('0x51')]=_[_0x75ab('0x49')](_0x2a099c[_0x75ab('0x45')],_0x2a099c[_0x75ab('0x46')]);_0x2ea7a8[_0x75ab('0x48')]=_[_0x75ab('0x49')](_0x2a099c[_0x75ab('0x45')],qs[_0x75ab('0x4a')](_0x53901d[_0x75ab('0x46')]['fields']));_0x2ea7a8['attributes']=_0x2ea7a8['attributes'][_0x75ab('0x4b')]?_0x2ea7a8['attributes']:_0x2a099c[_0x75ab('0x45')];if(_0x53901d[_0x75ab('0x46')][_0x75ab('0x57')]){_0x2ea7a8['include']=[{'all':!![]}];}_0x2ea7a8=_[_0x75ab('0x55')]({},_0x2ea7a8,_0x53901d[_0x75ab('0x56')]);return db[_0x75ab('0x41')][_0x75ab('0x5d')](_0x2ea7a8)[_0x75ab('0x23')](handleEntityNotFound(_0x37a320,null))[_0x75ab('0x23')](respondWithResult(_0x37a320,null))[_0x75ab('0x5a')](handleError(_0x37a320,null));};exports['create']=function(_0x5a9a61,_0x4a3bd8){return db['WhatsappAccount']['create'](_0x5a9a61[_0x75ab('0x5e')],{})['then'](function(_0x2ad9b9){var _0x5a3b3a=_0x5a9a61[_0x75ab('0x5f')][_0x75ab('0x39')]({'plain':!![]});if(!_0x5a3b3a)throw new Error(_0x75ab('0x60'));if(_0x5a3b3a['role']===_0x75ab('0x5f')){var _0x1bbf35=_0x2ad9b9[_0x75ab('0x39')]({'plain':!![]});var _0x3776a4=_0x75ab('0x3a');return db[_0x75ab('0x61')][_0x75ab('0x5d')]({'where':{'name':_0x3776a4,'userProfileId':_0x5a3b3a[_0x75ab('0x62')]},'raw':!![]})['then'](function(_0x3e2662){if(_0x3e2662&&_0x3e2662[_0x75ab('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x1bbf35[_0x75ab('0x3d')],'resourceId':_0x1bbf35['id'],'type':_0x3e2662[_0x75ab('0x3d')],'sectionId':_0x3e2662['id']},{})[_0x75ab('0x23')](function(){return _0x2ad9b9;});}else{return _0x2ad9b9;}})[_0x75ab('0x5a')](function(_0x215f90){logger['error'](_0x75ab('0x64'),_0x215f90);throw _0x215f90;});}return _0x2ad9b9;})[_0x75ab('0x23')](respondWithResult(_0x4a3bd8,0xc9))[_0x75ab('0x5a')](handleError(_0x4a3bd8,null));};exports[_0x75ab('0x65')]=function(_0xc49511,_0x13f7bc){if(_0xc49511[_0x75ab('0x5e')]['id']){delete _0xc49511[_0x75ab('0x5e')]['id'];}return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0xc49511[_0x75ab('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x75ab('0x3f')}]})[_0x75ab('0x23')](handleEntityNotFound(_0x13f7bc,null))[_0x75ab('0x23')](saveUpdates(_0xc49511[_0x75ab('0x5e')],null))[_0x75ab('0x23')](respondWithResult(_0x13f7bc,null))[_0x75ab('0x5a')](handleError(_0x13f7bc,null));};exports['destroy']=function(_0x3a037b,_0x511c08){return db[_0x75ab('0x41')]['find']({'where':{'id':_0x3a037b[_0x75ab('0x5b')]['id']}})['then'](handleEntityNotFound(_0x511c08,null))[_0x75ab('0x23')](removeEntity(_0x511c08,null))[_0x75ab('0x5a')](handleError(_0x511c08,null));};exports['describe']=function(_0x4be452,_0x444002){return db[_0x75ab('0x41')][_0x75ab('0x66')]()[_0x75ab('0x23')](respondWithResult(_0x444002,null))[_0x75ab('0x5a')](handleError(_0x444002,null));};exports[_0x75ab('0x67')]=function(_0x5bdf01,_0x532d62,_0x1ae2b5){if(_0x5bdf01[_0x75ab('0x5e')]['id']){delete _0x5bdf01[_0x75ab('0x5e')]['id'];}return db['WhatsappAccount'][_0x75ab('0x5d')]({'where':{'id':_0x5bdf01[_0x75ab('0x5b')]['id']}})['then'](handleEntityNotFound(_0x532d62,null))[_0x75ab('0x23')](function(_0x1b2570){if(_0x1b2570){_0x5bdf01[_0x75ab('0x5e')][_0x75ab('0x68')]=_0x1b2570['id'];return db[_0x75ab('0x69')][_0x75ab('0x6a')](_0x5bdf01['body']);}})[_0x75ab('0x23')](respondWithResult(_0x532d62,null))[_0x75ab('0x5a')](handleError(_0x532d62,null));};exports[_0x75ab('0x6b')]=function(_0x5b2e74,_0x59d6f1,_0x3e3a00){var _0x36d9c2={'raw':![],'where':{}};var _0x4af76f={};var _0x48fada={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x75ab('0x6c')]({'where':{'id':_0x5b2e74[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x59d6f1,null))[_0x75ab('0x23')](function(_0xdad1e8){if(_0xdad1e8){_0x4af76f[_0x75ab('0x45')]=_[_0x75ab('0x47')](db['Disposition'][_0x75ab('0x42')]);_0x4af76f['query']=_[_0x75ab('0x47')](_0x5b2e74[_0x75ab('0x46')]);_0x4af76f[_0x75ab('0x51')]=_[_0x75ab('0x49')](_0x4af76f['model'],_0x4af76f[_0x75ab('0x46')]);_0x36d9c2[_0x75ab('0x48')]=_[_0x75ab('0x49')](_0x4af76f['model'],qs[_0x75ab('0x4a')](_0x5b2e74['query'][_0x75ab('0x4a')]));_0x36d9c2['attributes']=_0x36d9c2[_0x75ab('0x48')]['length']?_0x36d9c2[_0x75ab('0x48')]:_0x4af76f[_0x75ab('0x45')];if(!_0x5b2e74[_0x75ab('0x46')][_0x75ab('0x4c')](_0x75ab('0x4d'))){_0x36d9c2['limit']=qs[_0x75ab('0x33')](_0x5b2e74[_0x75ab('0x46')][_0x75ab('0x33')]);_0x36d9c2['offset']=qs[_0x75ab('0x30')](_0x5b2e74[_0x75ab('0x46')]['offset']);}_0x36d9c2[_0x75ab('0x4e')]=qs['sort'](_0x5b2e74[_0x75ab('0x46')][_0x75ab('0x4f')]);_0x36d9c2[_0x75ab('0x50')]=qs[_0x75ab('0x51')](_[_0x75ab('0x52')](_0x5b2e74[_0x75ab('0x46')],_0x4af76f[_0x75ab('0x51')]));_0x36d9c2[_0x75ab('0x50')][_0x75ab('0x68')]=_0xdad1e8['id'];if(_0x5b2e74[_0x75ab('0x46')][_0x75ab('0x54')]){_0x36d9c2[_0x75ab('0x50')]=_[_0x75ab('0x55')](_0x36d9c2['where'],{'$or':_[_0x75ab('0x40')](_0x36d9c2[_0x75ab('0x48')],function(_0x6204fb){var _0x3c4f60={};_0x3c4f60[_0x6204fb]={'$like':'%'+_0x5b2e74['query'][_0x75ab('0x54')]+'%'};return _0x3c4f60;})});}_0x36d9c2=_[_0x75ab('0x55')]({},_0x36d9c2,_0x5b2e74[_0x75ab('0x56')]);return db['Disposition'][_0x75ab('0x32')]({'where':_0x36d9c2[_0x75ab('0x50')]})[_0x75ab('0x23')](function(_0x4f2708){_0x48fada['count']=_0x4f2708;if(_0x5b2e74['query'][_0x75ab('0x57')]){_0x36d9c2[_0x75ab('0x58')]=[{'all':!![]}];}return db[_0x75ab('0x69')][_0x75ab('0x6d')](_0x36d9c2);})[_0x75ab('0x23')](function(_0x310e55){_0x48fada[_0x75ab('0x59')]=_0x310e55;return _0x48fada;});}})[_0x75ab('0x23')](respondWithFilteredResult(_0x59d6f1,_0x36d9c2))[_0x75ab('0x5a')](handleError(_0x59d6f1,null));};exports[_0x75ab('0x6e')]=function(_0x1d2e09,_0x8e9969,_0x4c621c){return db['WhatsappAccount'][_0x75ab('0x5d')]({'where':{'id':_0x1d2e09[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x8e9969,null))[_0x75ab('0x23')](function(_0x4a7782){if(_0x4a7782){return _0x4a7782[_0x75ab('0x6e')](_0x1d2e09[_0x75ab('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x8e9969,null))[_0x75ab('0x5a')](handleError(_0x8e9969,null));};exports[_0x75ab('0x6f')]=function(_0x42406b,_0xc65383,_0xacca6){if(_0x42406b['body']['id']){delete _0x42406b[_0x75ab('0x5e')]['id'];}return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0x42406b[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0xc65383,null))[_0x75ab('0x23')](function(_0x529a7e){if(_0x529a7e){_0x42406b['body'][_0x75ab('0x68')]=_0x529a7e['id'];return db[_0x75ab('0x70')]['create'](_0x42406b[_0x75ab('0x5e')]);}})[_0x75ab('0x23')](respondWithResult(_0xc65383,null))[_0x75ab('0x5a')](handleError(_0xc65383,null));};exports['getAnswers']=function(_0x1905fc,_0x126768,_0x5306d5){var _0x4dab86={'raw':![],'where':{}};var _0x515e15={};var _0x1284b4={'count':0x0,'rows':[]};return db[_0x75ab('0x41')][_0x75ab('0x6c')]({'where':{'id':_0x1905fc[_0x75ab('0x5b')]['id']}})['then'](handleEntityNotFound(_0x126768,null))[_0x75ab('0x23')](function(_0x44eb9e){if(_0x44eb9e){_0x515e15['model']=_[_0x75ab('0x47')](db['CannedAnswer'][_0x75ab('0x42')]);_0x515e15[_0x75ab('0x46')]=_['keys'](_0x1905fc[_0x75ab('0x46')]);_0x515e15['filters']=_[_0x75ab('0x49')](_0x515e15[_0x75ab('0x45')],_0x515e15[_0x75ab('0x46')]);_0x4dab86[_0x75ab('0x48')]=_[_0x75ab('0x49')](_0x515e15['model'],qs[_0x75ab('0x4a')](_0x1905fc[_0x75ab('0x46')][_0x75ab('0x4a')]));_0x4dab86[_0x75ab('0x48')]=_0x4dab86[_0x75ab('0x48')][_0x75ab('0x4b')]?_0x4dab86[_0x75ab('0x48')]:_0x515e15['model'];if(!_0x1905fc[_0x75ab('0x46')]['hasOwnProperty'](_0x75ab('0x4d'))){_0x4dab86['limit']=qs[_0x75ab('0x33')](_0x1905fc['query']['limit']);_0x4dab86['offset']=qs['offset'](_0x1905fc[_0x75ab('0x46')]['offset']);}_0x4dab86[_0x75ab('0x4e')]=qs[_0x75ab('0x4f')](_0x1905fc[_0x75ab('0x46')][_0x75ab('0x4f')]);_0x4dab86['where']=qs[_0x75ab('0x51')](_[_0x75ab('0x52')](_0x1905fc[_0x75ab('0x46')],_0x515e15[_0x75ab('0x51')]));_0x4dab86[_0x75ab('0x50')][_0x75ab('0x68')]=_0x44eb9e['id'];if(_0x1905fc['query']['filter']){_0x4dab86['where']=_['merge'](_0x4dab86[_0x75ab('0x50')],{'$or':_['map'](_0x4dab86[_0x75ab('0x48')],function(_0x42021d){var _0x1296fb={};_0x1296fb[_0x42021d]={'$like':'%'+_0x1905fc['query']['filter']+'%'};return _0x1296fb;})});}_0x4dab86=_[_0x75ab('0x55')]({},_0x4dab86,_0x1905fc[_0x75ab('0x56')]);return db[_0x75ab('0x70')]['count']({'where':_0x4dab86[_0x75ab('0x50')]})[_0x75ab('0x23')](function(_0x57296f){_0x1284b4[_0x75ab('0x32')]=_0x57296f;if(_0x1905fc[_0x75ab('0x46')][_0x75ab('0x57')]){_0x4dab86[_0x75ab('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0x75ab('0x6d')](_0x4dab86);})['then'](function(_0x43d79f){_0x1284b4[_0x75ab('0x59')]=_0x43d79f;return _0x1284b4;});}})['then'](respondWithFilteredResult(_0x126768,_0x4dab86))['catch'](handleError(_0x126768,null));};exports[_0x75ab('0x71')]=function(_0x3b5516,_0x282b1f,_0xb66d5b){return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0x3b5516[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x282b1f,null))[_0x75ab('0x23')](function(_0x378105){if(_0x378105){return _0x378105[_0x75ab('0x71')](_0x3b5516[_0x75ab('0x46')]['ids']);}})[_0x75ab('0x23')](respondWithStatusCode(_0x282b1f,null))['catch'](handleError(_0x282b1f,null));};exports[_0x75ab('0x72')]=function(_0x2ab61b,_0x17bd7b,_0x18fde9){return db[_0x75ab('0x41')]['find']({'where':{'id':_0x2ab61b[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x17bd7b,null))[_0x75ab('0x23')](function(_0x3886c3){if(_0x3886c3){return _0x3886c3[_0x75ab('0x72')](_0x2ab61b[_0x75ab('0x5e')][_0x75ab('0x73')],_[_0x75ab('0x74')](_0x2ab61b[_0x75ab('0x5e')],[_0x75ab('0x73'),'id'])||{})[_0x75ab('0x75')](function(_0x2b773a){for(var _0x320b4a=0x0;_0x320b4a<_0x2ab61b[_0x75ab('0x5e')][_0x75ab('0x73')]['length'];_0x320b4a+=0x1){socket[_0x75ab('0x76')]('userWhatsappAccount:save',{'UserId':Number(_0x2ab61b[_0x75ab('0x5e')][_0x75ab('0x73')][_0x320b4a]),'WhatsappAccountId':Number(_0x2ab61b['params']['id'])});}return _0x2b773a;});}})[_0x75ab('0x23')](respondWithResult(_0x17bd7b,null))['catch'](handleError(_0x17bd7b,null));};exports['removeAgents']=function(_0x9eb70e,_0x299d6e,_0x2c6af7){return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0x9eb70e[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x299d6e,null))[_0x75ab('0x23')](function(_0x254e91){if(_0x254e91){return _0x254e91[_0x75ab('0x77')](_0x9eb70e[_0x75ab('0x46')][_0x75ab('0x73')])['then'](function(){if(_['isArray'](_0x9eb70e['query'][_0x75ab('0x73')])){for(var _0x57880f=0x0;_0x57880f<_0x9eb70e[_0x75ab('0x46')][_0x75ab('0x73')][_0x75ab('0x4b')];_0x57880f+=0x1){socket[_0x75ab('0x76')]('userWhatsappAccount:remove',{'UserId':Number(_0x9eb70e[_0x75ab('0x46')][_0x75ab('0x73')][_0x57880f]),'WhatsappAccountId':Number(_0x9eb70e[_0x75ab('0x5b')]['id'])});}}else{socket[_0x75ab('0x76')](_0x75ab('0x78'),{'UserId':Number(_0x9eb70e[_0x75ab('0x46')][_0x75ab('0x73')]),'WhatsappAccountId':Number(_0x9eb70e[_0x75ab('0x5b')]['id'])});}});}})[_0x75ab('0x23')](respondWithStatusCode(_0x299d6e,null))[_0x75ab('0x5a')](handleError(_0x299d6e,null));};exports[_0x75ab('0x79')]=function(_0xc7b8fe,_0xf147eb,_0x19155d){var _0x5064fe={};var _0x70d7d1={};var _0x3093a1;var _0x3138cf;return db[_0x75ab('0x41')][_0x75ab('0x6c')]({'where':{'id':_0xc7b8fe[_0x75ab('0x5b')]['id']}})['then'](handleEntityNotFound(_0xf147eb,null))['then'](function(_0x5e9155){if(_0x5e9155){_0x3093a1=_0x5e9155;_0x70d7d1[_0x75ab('0x45')]=_[_0x75ab('0x47')](db[_0x75ab('0x7a')][_0x75ab('0x42')]);_0x70d7d1[_0x75ab('0x46')]=_[_0x75ab('0x47')](_0xc7b8fe['query']);_0x70d7d1[_0x75ab('0x51')]=_[_0x75ab('0x49')](_0x70d7d1[_0x75ab('0x45')],_0x70d7d1[_0x75ab('0x46')]);_0x5064fe[_0x75ab('0x48')]=_['intersection'](_0x70d7d1[_0x75ab('0x45')],qs[_0x75ab('0x4a')](_0xc7b8fe[_0x75ab('0x46')][_0x75ab('0x4a')]));_0x5064fe['attributes']=_0x5064fe[_0x75ab('0x48')]['length']?_0x5064fe[_0x75ab('0x48')]:_0x70d7d1[_0x75ab('0x45')];_0x5064fe[_0x75ab('0x4e')]=qs[_0x75ab('0x4f')](_0xc7b8fe[_0x75ab('0x46')][_0x75ab('0x4f')]);_0x5064fe[_0x75ab('0x50')]=qs[_0x75ab('0x51')](_['pick'](_0xc7b8fe['query'],_0x70d7d1[_0x75ab('0x51')]));if(_0xc7b8fe['query'][_0x75ab('0x54')]){_0x5064fe[_0x75ab('0x50')]=_[_0x75ab('0x55')](_0x5064fe[_0x75ab('0x50')],{'$or':_[_0x75ab('0x40')](_0x5064fe[_0x75ab('0x48')],function(_0x139ad2){var _0x1ddcfc={};_0x1ddcfc[_0x139ad2]={'$like':'%'+_0xc7b8fe[_0x75ab('0x46')][_0x75ab('0x54')]+'%'};return _0x1ddcfc;})});}_0x5064fe=_[_0x75ab('0x55')]({},_0x5064fe,_0xc7b8fe[_0x75ab('0x56')]);return _0x3093a1[_0x75ab('0x79')](_0x5064fe);}})[_0x75ab('0x23')](function(_0x463ef6){if(_0x463ef6){_0x3138cf=_0x463ef6[_0x75ab('0x4b')];if(!_0xc7b8fe['query'][_0x75ab('0x4c')]('nolimit')){_0x5064fe['limit']=qs[_0x75ab('0x33')](_0xc7b8fe[_0x75ab('0x46')][_0x75ab('0x33')]);_0x5064fe[_0x75ab('0x30')]=qs[_0x75ab('0x30')](_0xc7b8fe[_0x75ab('0x46')][_0x75ab('0x30')]);}return _0x3093a1['getAgents'](_0x5064fe);}})[_0x75ab('0x23')](function(_0x573dda){if(_0x573dda){return _0x573dda?{'count':_0x3138cf,'rows':_0x573dda}:null;}})[_0x75ab('0x23')](respondWithResult(_0xf147eb,null))[_0x75ab('0x5a')](handleError(_0xf147eb,null));};exports[_0x75ab('0x7b')]=function(_0x5b8b6b,_0x322d83){var _0x46afeb=_0x5b8b6b[_0x75ab('0x5b')]['id'];var _0x1062ee=_0x5b8b6b[_0x75ab('0x5e')];var _0x533f39=0xc8;var _0x2706ee=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x75ab('0x7c')]['Transaction']['ISOLATION_LEVELS'][_0x75ab('0x7d')]},function(_0x204a1c){return db[_0x75ab('0x41')][_0x75ab('0x6c')]({'where':{'id':_0x46afeb},'transaction':_0x204a1c})[_0x75ab('0x23')](function(_0x395d9e){if(_0x395d9e){return db[_0x75ab('0x7e')][_0x75ab('0x7f')]({'where':{'WhatsappAccountId':_0x46afeb},'transaction':_0x204a1c})[_0x75ab('0x23')](function(){var _0x359d03=_[_0x75ab('0x40')](_0x1062ee,function(_0x2bb731){_0x2bb731[_0x75ab('0x68')]=_0x46afeb;return _0x2bb731;});return db[_0x75ab('0x7e')]['bulkCreate'](_0x359d03,{'transaction':_0x204a1c});});}else{_0x533f39=0x194;_0x2706ee=[];}});})[_0x75ab('0x23')](function(){if(_0x533f39!==0x194){return db[_0x75ab('0x7e')][_0x75ab('0x80')]({'where':{'WhatsappAccountId':_0x46afeb},'order':'priority'})[_0x75ab('0x23')](function(_0x1235be){_0x2706ee=_0x1235be;});}})['catch'](function(_0x3a1d4b){_0x533f39=0x1f4;logger['error'](_0x3a1d4b[_0x75ab('0x3c')]);if(_0x3a1d4b[_0x75ab('0x3d')]){delete _0x3a1d4b[_0x75ab('0x3d')];}_0x2706ee=_0x3a1d4b;})[_0x75ab('0x81')](function(){if(_0x2706ee===null){_0x322d83['sendStatus'](_0x533f39);}else{if(_0x533f39===0x1f4){_0x322d83[_0x75ab('0x2d')](_0x533f39)[_0x75ab('0x3e')](_0x2706ee);}else{_0x322d83[_0x75ab('0x2d')](_0x533f39)[_0x75ab('0x2f')](_0x2706ee);}}});};exports[_0x75ab('0x82')]=function(_0x43bb8b,_0x15e83d,_0x5432c0){var _0x4c21d3={};var _0x2dca8c={};var _0x4387eb;var _0x4d3490;return db[_0x75ab('0x41')]['findOne']({'where':{'id':_0x43bb8b[_0x75ab('0x5b')]['id']}})[_0x75ab('0x23')](handleEntityNotFound(_0x15e83d,null))['then'](function(_0x5600e8){if(_0x5600e8){_0x4387eb=_0x5600e8;_0x2dca8c['model']=_['keys'](db['WhatsappApplication'][_0x75ab('0x42')]);_0x2dca8c[_0x75ab('0x46')]=_[_0x75ab('0x47')](_0x43bb8b[_0x75ab('0x46')]);_0x2dca8c['filters']=_[_0x75ab('0x49')](_0x2dca8c[_0x75ab('0x45')],_0x2dca8c['query']);_0x4c21d3[_0x75ab('0x48')]=_[_0x75ab('0x49')](_0x2dca8c[_0x75ab('0x45')],qs[_0x75ab('0x4a')](_0x43bb8b['query'][_0x75ab('0x4a')]));_0x4c21d3[_0x75ab('0x48')]=_0x4c21d3[_0x75ab('0x48')][_0x75ab('0x4b')]?_0x4c21d3['attributes']:_0x2dca8c[_0x75ab('0x45')];_0x4c21d3[_0x75ab('0x4e')]=qs[_0x75ab('0x4f')](_0x43bb8b[_0x75ab('0x46')]['sort']);_0x4c21d3[_0x75ab('0x50')]=qs[_0x75ab('0x51')](_[_0x75ab('0x52')](_0x43bb8b[_0x75ab('0x46')],_0x2dca8c['filters']));if(_0x43bb8b[_0x75ab('0x46')]['filter']){_0x4c21d3[_0x75ab('0x50')]=_[_0x75ab('0x55')](_0x4c21d3[_0x75ab('0x50')],{'$or':_[_0x75ab('0x40')](_0x4c21d3['attributes'],function(_0x2cc3da){var _0x52c390={};_0x52c390[_0x2cc3da]={'$like':'%'+_0x43bb8b[_0x75ab('0x46')][_0x75ab('0x54')]+'%'};return _0x52c390;})});}_0x4c21d3=_['merge']({},_0x4c21d3,_0x43bb8b[_0x75ab('0x56')]);return _0x4387eb['getApplications'](_0x4c21d3);}})[_0x75ab('0x23')](function(_0x39d70c){if(_0x39d70c){_0x4d3490=_0x39d70c['length'];if(!_0x43bb8b[_0x75ab('0x46')][_0x75ab('0x4c')](_0x75ab('0x4d'))){_0x4c21d3['limit']=qs[_0x75ab('0x33')](_0x43bb8b[_0x75ab('0x46')][_0x75ab('0x33')]);_0x4c21d3['offset']=qs[_0x75ab('0x30')](_0x43bb8b[_0x75ab('0x46')]['offset']);}return _0x4387eb[_0x75ab('0x82')](_0x4c21d3);}})[_0x75ab('0x23')](function(_0xb1647d){if(_0xb1647d){return _0xb1647d?{'count':_0x4d3490,'rows':_0xb1647d}:null;}})['then'](respondWithResult(_0x15e83d,null))['catch'](handleError(_0x15e83d,null));};exports[_0x75ab('0x83')]=function(_0x1c171d,_0x4c3249,_0x5b45e3){var _0x2bee1f={'channel':_0x75ab('0x84')};var _0x25c994=[];var _0x8d9aa=[];var _0x27b2a4={};return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0x1c171d['params']['id']},'include':[{'model':db[_0x75ab('0x7e')],'as':_0x75ab('0x85')}]})[_0x75ab('0x23')](handleEntityNotFound(_0x4c3249,null))['then'](function(_0x4780ee){_0x2bee1f[_0x75ab('0x86')]=_0x4780ee;if(_0x2bee1f[_0x75ab('0x86')]&&_0x2bee1f[_0x75ab('0x86')][_0x75ab('0x53')]===_0x75ab('0x87')&&_0x1c171d['body'][_0x75ab('0x88')]){if(_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x88')]['length']===0x0)return;if(_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x88')][0x0]['state']!==_0x75ab('0x89'))return;return db[_0x75ab('0x8a')][_0x75ab('0x65')]({'read':!![],'readAt':_0x1c171d[_0x75ab('0x5e')]['statuses'][0x0][_0x75ab('0x8b')]},{'where':{'messageId':_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x88')][0x0][_0x75ab('0x8c')]},'individualHooks':!![]})[_0x75ab('0x23')](function(_0xf0a7e8){return _0x4c3249['status'](0xc8)[_0x75ab('0x2f')](_0xf0a7e8);});}_0x2bee1f['applications']=_['orderBy'](_0x4780ee[_0x75ab('0x85')],[_0x75ab('0x8d')],[_0x75ab('0x8e')]);if(_0x2bee1f[_0x75ab('0x86')][_0x75ab('0x85')]){delete _0x2bee1f['account'][_0x75ab('0x85')];}return db['CmContact'][_0x75ab('0x66')]()[_0x75ab('0x23')](function(_0x54f403){if(!_0x54f403){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))]('no\x20available\x20attributes');}_0x25c994=_[_0x75ab('0x91')](_[_0x75ab('0x47')](_0x54f403),[_0x75ab('0x92'),_0x75ab('0x93')]);_0x8d9aa=_[_0x75ab('0x91')](_[_0x75ab('0x47')](_0x54f403),[_0x75ab('0x92'),'updatedAt','CompanyId',_0x75ab('0x94')]);_0x2bee1f[_0x75ab('0x5e')]={'mapKey':_0x75ab('0x95')};if(_0x2bee1f[_0x75ab('0x86')]&&_0x2bee1f[_0x75ab('0x86')][_0x75ab('0x53')]===_0x75ab('0x96')){_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x97')]=_0x1c171d[_0x75ab('0x5e')]['From'][_0x75ab('0x98')](_0x75ab('0x99'),'');_0x2bee1f[_0x75ab('0x5e')]['body']=_0x1c171d['body']['Body'];_0x2bee1f['body'][_0x75ab('0x9a')]=_0x1c171d[_0x75ab('0x5e')]['MessageSid'];}if(_0x2bee1f[_0x75ab('0x86')]&&_0x2bee1f['account'][_0x75ab('0x53')]===_0x75ab('0x87')){_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x97')]=_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x9b')][0x0][_0x75ab('0x97')];_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x5e')]=_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x9b')][0x0]['message'][_0x75ab('0x5e')];_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x9a')]=_0x1c171d[_0x75ab('0x5e')][_0x75ab('0x9b')][0x0][_0x75ab('0x8c')];}if(_0x2bee1f[_0x75ab('0x5e')]['id']){delete _0x2bee1f[_0x75ab('0x5e')]['id'];}if(_['isNil'](_0x2bee1f[_0x75ab('0x5e')]['from'])){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))](_0x75ab('0x9c'));}if(_[_0x75ab('0x9d')](_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x5e')])||_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x5e')]===''){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))](_0x75ab('0x9e'));}if(_[_0x75ab('0x9d')](_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x9f')])){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))](_0x75ab('0xa0')+_0x8d9aa);}if(!_[_0x75ab('0xa1')](_0x8d9aa,_0x2bee1f[_0x75ab('0x5e')]['mapKey'])){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))](_0x75ab('0xa2')+_0x8d9aa);}_0x27b2a4[_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x9f')]]=_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x97')];return db['CmList'][_0x75ab('0x5d')]({'where':{'id':_0x2bee1f[_0x75ab('0x86')]['ListId']},'include':[{'model':db[_0x75ab('0xa3')],'as':_0x75ab('0xa4'),'where':_0x27b2a4,'limit':0x1,'order':[[_0x75ab('0x93'),_0x75ab('0xa5')]]}]});})[_0x75ab('0x23')](handleEntityNotFound(_0x4c3249,null))[_0x75ab('0x23')](function(_0xf7fe66){if(_0xf7fe66){_0x2bee1f['list']=_[_0x75ab('0x74')](_0xf7fe66,['Contacts']);if(_0xf7fe66['Contacts']['length']){return _0xf7fe66['Contacts'][0x0];}var _0x24b258=_[_0x75ab('0x1b')](_0x2bee1f[_0x75ab('0x5e')],{'firstName':_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x97')],'ListId':_0xf7fe66['id']});_0x24b258[_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x9f')]]=_0x2bee1f['body'][_0x75ab('0x97')];return db['CmContact'][_0x75ab('0x6a')](_0x24b258,{'fields':_0x25c994,'raw':!![]});}})['then'](handleEntityNotFound(_0x4c3249,null))['then'](function(_0x20cf8a){if(_0x20cf8a){_0x2bee1f[_0x75ab('0xa6')]=_0x20cf8a;var _0x94ff39={'ContactId':_0x20cf8a['id'],'phone':_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x97')],'WhatsappAccountId':_0x1c171d[_0x75ab('0x5b')]['id']};var _0x493a84={'ContactId':_0x20cf8a['id'],'WhatsappAccountId':_0x1c171d['params']['id'],'closed':![]};return db[_0x75ab('0xa7')][_0x75ab('0x5d')]({'where':_0x493a84})[_0x75ab('0x23')](function(_0x4a3648){if(_0x4a3648){return[_0x4a3648,![]];}return db[_0x75ab('0xa7')][_0x75ab('0x6a')](_0x94ff39)[_0x75ab('0x23')](function(_0x248fd9){return[_0x248fd9,!![]];});});}})['spread'](function(_0x3f29c7,_0x525f9a){_0x2bee1f[_0x75ab('0xa8')]=_0x3f29c7[_0x75ab('0x39')]({'plain':!![]});_0x2bee1f[_0x75ab('0xa8')]['created']=![];if(_0x525f9a){if(_0x2bee1f[_0x75ab('0x86')][_0x75ab('0xa9')]){_0x2bee1f[_0x75ab('0xaa')]['push']({'id':0x0,'priority':_0x2bee1f[_0x75ab('0xaa')][_0x75ab('0x4b')]+0x1,'app':'close','appdata':_0x75ab('0xab'),'interval':_0x75ab('0xac')});}_0x2bee1f[_0x75ab('0xa8')][_0x75ab('0xad')]=!![];}return db['WhatsappMessage']['create']({'phone':_0x2bee1f['body'][_0x75ab('0x97')],'messageId':_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x9a')],'body':_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0x5e')],'WhatsappAccountId':_0x1c171d[_0x75ab('0x5b')]['id'],'WhatsappInteractionId':_0x3f29c7['id'],'direction':'in','ContactId':_0x3f29c7[_0x75ab('0xae')],'AttachmentId':_0x2bee1f[_0x75ab('0x5e')][_0x75ab('0xaf')]});})[_0x75ab('0x23')](function(_0x44b004){_0x2bee1f[_0x75ab('0x2a')]=_0x44b004;if(_0x2bee1f[_0x75ab('0xa8')][_0x75ab('0xb0')]){return db[_0x75ab('0x7a')][_0x75ab('0x5d')]({'attributes':['id',_0x75ab('0x3d')],'where':{'id':_0x2bee1f[_0x75ab('0xa8')][_0x75ab('0xb0')]}})[_0x75ab('0x23')](function(_0x159b36){if(_0x159b36){_0x2bee1f[_0x75ab('0xaa')][_0x75ab('0xb1')]({'id':0x0,'priority':0x0,'app':_0x75ab('0xb2'),'appdata':_0x159b36['name']+','+(_0x2bee1f['account'][_0x75ab('0xb3')]||0xa),'interval':_0x75ab('0xac')});}return respondWithRpcPromise(_0x75ab('0xb4'),_0x75ab('0xb5'),_0x2bee1f);});}return respondWithRpcPromise('Start','startRouting',_0x2bee1f);})[_0x75ab('0x23')](function(_0x20ccfd){if(_0x20ccfd){var _0x9dfeb=0xc8;var _0x483ba2=_0x75ab('0xb6');logger[_0x75ab('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x483ba2,_0x9dfeb,_0x75ab('0xb7'));logger[_0x75ab('0xb8')](_0x75ab('0xb9'),_0x483ba2,_0x9dfeb,_0x75ab('0xb7'),JSON[_0x75ab('0xba')](_0x20ccfd));if(_0x2bee1f[_0x75ab('0x86')][_0x75ab('0x53')]==='twilio'){return _0x4c3249[_0x75ab('0x2d')](_0x9dfeb)[_0x75ab('0x34')](_0x75ab('0xbb'),_0x75ab('0xbc'))[_0x75ab('0x3e')](_0x75ab('0xbd'));}else{return _0x4c3249[_0x75ab('0x2d')](_0x9dfeb)[_0x75ab('0x2f')](_0x20ccfd);}}});})['catch'](handleError(_0x4c3249,null));};exports[_0x75ab('0x3e')]=function(_0x382189,_0x523393,_0x92afef){var _0x53f9e6,_0x1c72e0,_0x1c437e;if(_[_0x75ab('0x9d')](_0x382189[_0x75ab('0x5e')][_0x75ab('0x5e')])||_0x382189[_0x75ab('0x5e')]['body']===''){throw new db[(_0x75ab('0x8f'))][(_0x75ab('0x90'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x75ab('0x9d')](_0x382189[_0x75ab('0x5e')]['to'])){throw new db[(_0x75ab('0x8f'))]['ValidationError'](_0x75ab('0xbe'));}_0x53f9e6=_0x382189[_0x75ab('0x5e')]['to'];return db[_0x75ab('0x41')][_0x75ab('0x5d')]({'where':{'id':_0x382189[_0x75ab('0x5b')]['id']},'include':[{'model':db[_0x75ab('0xbf')],'as':_0x75ab('0xc0'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x53f9e6},'limit':0x1,'order':[[_0x75ab('0x93'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x523393,null))['then'](function(_0x38aa04){if(_0x38aa04&&_0x38aa04['List']){_0x1c72e0=_0x38aa04[_0x75ab('0x39')]({'plain':!![]});if(_0x1c72e0[_0x75ab('0xc0')]&&_0x1c72e0['List'][_0x75ab('0xa4')]['length']){return _0x1c72e0[_0x75ab('0xc0')]['Contacts'][0x0];}return db[_0x75ab('0xa3')][_0x75ab('0x6a')](_[_0x75ab('0x1b')](_0x382189[_0x75ab('0x5e')],{'firstName':_0x53f9e6,'mobile':_0x53f9e6,'phone':_0x53f9e6,'ListId':_0x1c72e0[_0x75ab('0x94')]}));}})[_0x75ab('0x23')](handleEntityNotFound(_0x523393,null))['then'](function(_0x61529d){if(_0x61529d){_0x1c437e=_0x61529d;return db['WhatsappInteraction'][_0x75ab('0x5d')]({'where':{'ContactId':_0x1c437e['id'],'closed':![],'WhatsappAccountId':_0x1c72e0['id']}})['then'](function(_0x14b6ea){if(_0x14b6ea){return[_0x14b6ea,![]];}return db[_0x75ab('0xa7')][_0x75ab('0x6a')]({'UserId':_0x382189['user']['id'],'ContactId':_0x1c437e['id'],'WhatsappAccountId':_0x1c72e0['id'],'phone':_0x53f9e6,'firstMsgDirection':_0x75ab('0xc1'),'Messages':[_[_0x75ab('0x55')](_0x382189[_0x75ab('0x5e')],{'read':![],'body':_0x382189[_0x75ab('0x5e')]['body'],'phone':_0x53f9e6,'WhatsappAccountId':_0x1c72e0['id'],'UserId':_0x382189['user']['id'],'ContactId':_0x1c437e['id']})]},{'include':[{'model':db[_0x75ab('0x8a')],'as':'Messages'}]})[_0x75ab('0x23')](function(_0x4b6be5){return[_0x4b6be5,!![]];});});}})['spread'](function(_0x59fad2,_0x7ed38c){if(_0x7ed38c){return _0x59fad2;}return db['WhatsappMessage'][_0x75ab('0x6a')](_[_0x75ab('0x55')](_0x382189[_0x75ab('0x5e')],{'read':![],'body':_0x382189['body']['body'],'phone':_0x53f9e6,'WhatsappAccountId':_0x1c72e0['id'],'WhatsappInteractionId':_0x59fad2['id'],'UserId':_0x382189[_0x75ab('0x5f')]['id'],'ContactId':_0x1c437e['id']}))[_0x75ab('0x23')](function(_0x324f25){_0x59fad2[_0x75ab('0xc2')][_0x75ab('0xc3')]=[];_0x59fad2[_0x75ab('0xc2')]['Messages']['push'](_0x324f25[_0x75ab('0xc2')]);return _0x59fad2;});})[_0x75ab('0x23')](respondWithResult(_0x523393,null))[_0x75ab('0x5a')](handleError(_0x523393,null));};
\ No newline at end of file
index b0ab906..e8b8090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe363=['emit','hasOwnProperty','hook','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe363,0x1aa));var _0x3e36=function(_0x55ea15,_0x53c5d1){_0x55ea15=_0x55ea15-0x0;var _0x3ceeb0=_0xe363[_0x55ea15];return _0x3ceeb0;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x3e36('0x0'))['db'][_0x3e36('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x3e36('0x2')](0x0);var events={'afterCreate':_0x3e36('0x3'),'afterUpdate':_0x3e36('0x4'),'afterDestroy':_0x3e36('0x5')};function emitEvent(_0x16032a){return function(_0x125e07,_0x26715f,_0x5bf241){WhatsappAccountEvents[_0x3e36('0x6')](_0x16032a+':'+_0x125e07['id'],_0x125e07);WhatsappAccountEvents[_0x3e36('0x6')](_0x16032a,_0x125e07);_0x5bf241(null);};}for(var e in events){if(events[_0x3e36('0x7')](e)){var event=events[e];WhatsappAccount[_0x3e36('0x8')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x3ab1=['WhatsappAccount','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x275cad,_0x21ea86){var _0x37b7d3=function(_0x4ca9c0){while(--_0x4ca9c0){_0x275cad['push'](_0x275cad['shift']());}};_0x37b7d3(++_0x21ea86);}(_0x3ab1,0x68));var _0x13ab=function(_0x37c2a0,_0x38436e){_0x37c2a0=_0x37c2a0-0x0;var _0x29d7e4=_0x3ab1[_0x37c2a0];return _0x29d7e4;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require('../../mysqldb')['db'][_0x13ab('0x0')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x13ab('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x13ab('0x2'),'afterDestroy':_0x13ab('0x3')};function emitEvent(_0xfd626f){return function(_0x59a67e,_0x49ea43,_0x151347){WhatsappAccountEvents[_0x13ab('0x4')](_0xfd626f+':'+_0x59a67e['id'],_0x59a67e);WhatsappAccountEvents[_0x13ab('0x4')](_0xfd626f,_0x59a67e);_0x151347(null);};}for(var e in events){if(events[_0x13ab('0x5')](e)){var event=events[e];WhatsappAccount[_0x13ab('0x6')](e,emitEvent(event));}}module[_0x13ab('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index df6c0ed..5359a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70ac=['exports','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./whatsappAccount.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70ac,0x86));var _0xc70a=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x70ac[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xc70a('0x0'));var util=require(_0xc70a('0x1'));var logger=require(_0xc70a('0x2'))(_0xc70a('0x3'));var moment=require('moment');var BPromise=require(_0xc70a('0x4'));var rp=require(_0xc70a('0x5'));var fs=require('fs');var path=require(_0xc70a('0x6'));var rimraf=require(_0xc70a('0x7'));var config=require('../../config/environment');var attributes=require(_0xc70a('0x8'));module[_0xc70a('0x9')]=function(_0x5c6e6f,_0x22a9cb){return _0x5c6e6f[_0xc70a('0xa')](_0xc70a('0xb'),attributes,{'tableName':_0xc70a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57c8=['../../config/environment','define','WhatsappAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x44bf90,_0x1c9a46){var _0x3dfc9d=function(_0x189531){while(--_0x189531){_0x44bf90['push'](_0x44bf90['shift']());}};_0x3dfc9d(++_0x1c9a46);}(_0x57c8,0xab));var _0x857c=function(_0x4767e3,_0x18860b){_0x4767e3=_0x4767e3-0x0;var _0x197d00=_0x57c8[_0x4767e3];return _0x197d00;};'use strict';var _=require(_0x857c('0x0'));var util=require(_0x857c('0x1'));var logger=require(_0x857c('0x2'))(_0x857c('0x3'));var moment=require(_0x857c('0x4'));var BPromise=require(_0x857c('0x5'));var rp=require(_0x857c('0x6'));var fs=require('fs');var path=require(_0x857c('0x7'));var rimraf=require(_0x857c('0x8'));var config=require(_0x857c('0x9'));var attributes=require('./whatsappAccount.attributes');module['exports']=function(_0x5ef6b8,_0x5d88b7){return _0x5ef6b8[_0x857c('0xa')](_0x857c('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 66af9fa..5adc62b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ac=['error','code','message','result','ShowWhatsappAccount','options','where','attributes','include','map','model','then','debug','stringify','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s'];(function(_0x33ab41,_0xa2d039){var _0x12403d=function(_0x41f3a9){while(--_0x41f3a9){_0x33ab41['push'](_0x33ab41['shift']());}};_0x12403d(++_0xa2d039);}(_0x54ac,0x159));var _0xc54a=function(_0x50a463,_0x517a1a){_0x50a463=_0x50a463-0x0;var _0x2971df=_0x54ac[_0x50a463];return _0x2971df;};'use strict';var _=require(_0xc54a('0x0'));var util=require(_0xc54a('0x1'));var moment=require(_0xc54a('0x2'));var BPromise=require(_0xc54a('0x3'));var rs=require(_0xc54a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc54a('0x5'));var logger=require('../../config/logger')(_0xc54a('0x6'));var config=require(_0xc54a('0x7'));var jayson=require(_0xc54a('0x8'));var client=jayson['client'][_0xc54a('0x9')]({'port':0x232a});config[_0xc54a('0xa')]=_[_0xc54a('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc54a('0xc'))(new Redis(config[_0xc54a('0xa')]));require('./whatsappAccount.socket')['register'](socket);function respondWithRpcPromise(_0x3d131b,_0x15118c,_0x1376f1){return new BPromise(function(_0x29859b,_0x5689b9){return client[_0xc54a('0xd')](_0x3d131b,_0x1376f1)['then'](function(_0x103734){logger[_0xc54a('0xe')](_0xc54a('0xf'),_0x15118c,_0xc54a('0x10'));logger['debug'](_0xc54a('0x11'),_0x15118c,_0xc54a('0x10'),JSON['stringify'](_0x103734));if(_0x103734[_0xc54a('0x12')]){if(_0x103734['error'][_0xc54a('0x13')]===0x1f4){logger[_0xc54a('0x12')](_0xc54a('0xf'),_0x15118c,_0x103734[_0xc54a('0x12')][_0xc54a('0x14')]);return _0x5689b9(_0x103734['error'][_0xc54a('0x14')]);}logger[_0xc54a('0x12')](_0xc54a('0xf'),_0x15118c,_0x103734['error']['message']);return _0x29859b(_0x103734[_0xc54a('0x12')][_0xc54a('0x14')]);}else{logger[_0xc54a('0xe')](_0xc54a('0xf'),_0x15118c,'request\x20sent');_0x29859b(_0x103734[_0xc54a('0x15')][_0xc54a('0x14')]);}})['catch'](function(_0x29594d){logger[_0xc54a('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x15118c,_0x29594d);_0x5689b9(_0x29594d);});});}exports[_0xc54a('0x16')]=function(_0x578d87){var _0x426dad=this;return new Promise(function(_0x2e4ad1,_0x120c86){return db['WhatsappAccount']['find']({'raw':_0x578d87[_0xc54a('0x17')]?_0x578d87['options']['raw']===undefined?!![]:![]:!![],'where':_0x578d87['options']?_0x578d87[_0xc54a('0x17')][_0xc54a('0x18')]||null:null,'attributes':_0x578d87[_0xc54a('0x17')]?_0x578d87[_0xc54a('0x17')][_0xc54a('0x19')]||null:null,'include':_0x578d87[_0xc54a('0x17')]?_0x578d87['options'][_0xc54a('0x1a')]?_[_0xc54a('0x1b')](_0x578d87[_0xc54a('0x17')][_0xc54a('0x1a')],function(_0x11b205){return{'model':db[_0x11b205['model']],'as':_0x11b205['as'],'attributes':_0x11b205[_0xc54a('0x19')],'include':_0x11b205[_0xc54a('0x1a')]?_[_0xc54a('0x1b')](_0x11b205[_0xc54a('0x1a')],function(_0x322823){return{'model':db[_0x322823['model']],'as':_0x322823['as'],'attributes':_0x322823[_0xc54a('0x19')],'include':_0x322823['include']?_[_0xc54a('0x1b')](_0x322823[_0xc54a('0x1a')],function(_0x2f0fe0){return{'model':db[_0x2f0fe0[_0xc54a('0x1c')]],'as':_0x2f0fe0['as'],'attributes':_0x2f0fe0['attributes']};}):[]};}):[]};}):[]:[]})[_0xc54a('0x1d')](function(_0x27df41){logger[_0xc54a('0xe')](_0xc54a('0x16'),_0x578d87);logger[_0xc54a('0x1e')](_0xc54a('0x16'),_0x578d87,JSON[_0xc54a('0x1f')](_0x27df41));_0x2e4ad1(_0x27df41);})[_0xc54a('0x20')](function(_0x3736a8){logger[_0xc54a('0x12')](_0xc54a('0x16'),_0x3736a8[_0xc54a('0x14')],_0x578d87);_0x120c86(_0x426dad[_0xc54a('0x12')](0x1f4,_0x3736a8[_0xc54a('0x14')]));});});};
\ No newline at end of file
+var _0xd212=['bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','ShowWhatsappAccount','WhatsappAccount','options','raw','attributes','include','map','model','util','moment'];(function(_0x52eeeb,_0x53db1b){var _0x11e54b=function(_0x4e6132){while(--_0x4e6132){_0x52eeeb['push'](_0x52eeeb['shift']());}};_0x11e54b(++_0x53db1b);}(_0xd212,0x14b));var _0x2d21=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0xd212[_0x307d86];return _0x361745;};'use strict';var _=require('lodash');var util=require(_0x2d21('0x0'));var moment=require(_0x2d21('0x1'));var BPromise=require(_0x2d21('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d21('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x2d21('0x4'));var logger=require(_0x2d21('0x5'))(_0x2d21('0x6'));var config=require(_0x2d21('0x7'));var jayson=require(_0x2d21('0x8'));var client=jayson[_0x2d21('0x9')][_0x2d21('0xa')]({'port':0x232a});config[_0x2d21('0xb')]=_[_0x2d21('0xc')](config['redis'],{'host':_0x2d21('0xd'),'port':0x18eb});var socket=require(_0x2d21('0xe'))(new Redis(config['redis']));require(_0x2d21('0xf'))[_0x2d21('0x10')](socket);function respondWithRpcPromise(_0xaa885d,_0x376004,_0x5c8be8){return new BPromise(function(_0xd4b9fc,_0xb65109){return client[_0x2d21('0x11')](_0xaa885d,_0x5c8be8)[_0x2d21('0x12')](function(_0x324c63){logger['info'](_0x2d21('0x13'),_0x376004,'request\x20sent');logger[_0x2d21('0x14')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x376004,_0x2d21('0x15'),JSON[_0x2d21('0x16')](_0x324c63));if(_0x324c63[_0x2d21('0x17')]){if(_0x324c63[_0x2d21('0x17')][_0x2d21('0x18')]===0x1f4){logger[_0x2d21('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x376004,_0x324c63[_0x2d21('0x17')][_0x2d21('0x19')]);return _0xb65109(_0x324c63[_0x2d21('0x17')][_0x2d21('0x19')]);}logger[_0x2d21('0x17')](_0x2d21('0x13'),_0x376004,_0x324c63['error'][_0x2d21('0x19')]);return _0xd4b9fc(_0x324c63['error'][_0x2d21('0x19')]);}else{logger[_0x2d21('0x1a')](_0x2d21('0x13'),_0x376004,_0x2d21('0x15'));_0xd4b9fc(_0x324c63[_0x2d21('0x1b')][_0x2d21('0x19')]);}})[_0x2d21('0x1c')](function(_0x453bfa){logger[_0x2d21('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x376004,_0x453bfa);_0xb65109(_0x453bfa);});});}exports[_0x2d21('0x1d')]=function(_0x1e65a0){var _0x128be6=this;return new Promise(function(_0x1e6d93,_0x50a25c){return db[_0x2d21('0x1e')]['find']({'raw':_0x1e65a0[_0x2d21('0x1f')]?_0x1e65a0[_0x2d21('0x1f')][_0x2d21('0x20')]===undefined?!![]:![]:!![],'where':_0x1e65a0['options']?_0x1e65a0['options']['where']||null:null,'attributes':_0x1e65a0['options']?_0x1e65a0[_0x2d21('0x1f')][_0x2d21('0x21')]||null:null,'include':_0x1e65a0[_0x2d21('0x1f')]?_0x1e65a0['options'][_0x2d21('0x22')]?_[_0x2d21('0x23')](_0x1e65a0['options'][_0x2d21('0x22')],function(_0x30ecd2){return{'model':db[_0x30ecd2['model']],'as':_0x30ecd2['as'],'attributes':_0x30ecd2['attributes'],'include':_0x30ecd2['include']?_[_0x2d21('0x23')](_0x30ecd2['include'],function(_0x20d75f){return{'model':db[_0x20d75f['model']],'as':_0x20d75f['as'],'attributes':_0x20d75f[_0x2d21('0x21')],'include':_0x20d75f[_0x2d21('0x22')]?_['map'](_0x20d75f[_0x2d21('0x22')],function(_0x1b976b){return{'model':db[_0x1b976b[_0x2d21('0x24')]],'as':_0x1b976b['as'],'attributes':_0x1b976b[_0x2d21('0x21')]};}):[]};}):[]};}):[]:[]})[_0x2d21('0x12')](function(_0x2f1ffb){logger[_0x2d21('0x1a')](_0x2d21('0x1d'),_0x1e65a0);logger[_0x2d21('0x14')](_0x2d21('0x1d'),_0x1e65a0,JSON[_0x2d21('0x16')](_0x2f1ffb));_0x1e6d93(_0x2f1ffb);})[_0x2d21('0x1c')](function(_0x486b62){logger[_0x2d21('0x17')](_0x2d21('0x1d'),_0x486b62[_0x2d21('0x19')],_0x1e65a0);_0x50a25c(_0x128be6['error'](0x1f4,_0x486b62[_0x2d21('0x19')]));});});};
\ No newline at end of file
index 4115e99..2730658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eae=['emit','removeListener','register','whatsappAccount:','./whatsappAccount.events','save','remove','update'];(function(_0x1fd345,_0x25eb9e){var _0x4508ae=function(_0x55fe5c){while(--_0x55fe5c){_0x1fd345['push'](_0x1fd345['shift']());}};_0x4508ae(++_0x25eb9e);}(_0x4eae,0x1b4));var _0xe4ea=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x4eae[_0x5678b5];return _0x4c09a5;};'use strict';var WhatsappAccountEvents=require(_0xe4ea('0x0'));var events=[_0xe4ea('0x1'),_0xe4ea('0x2'),_0xe4ea('0x3')];function createListener(_0xd2cde9,_0x290edd){return function(_0x8774fb){_0x290edd[_0xe4ea('0x4')](_0xd2cde9,_0x8774fb);};}function removeListener(_0x1c87ea,_0x3b48bb){return function(){WhatsappAccountEvents[_0xe4ea('0x5')](_0x1c87ea,_0x3b48bb);};}exports[_0xe4ea('0x6')]=function(_0x256e4b){for(var _0x57cc94=0x0,_0x4d7f2b=events['length'];_0x57cc94<_0x4d7f2b;_0x57cc94++){var _0x2e9dc5=events[_0x57cc94];var _0x3618d8=createListener(_0xe4ea('0x7')+_0x2e9dc5,_0x256e4b);WhatsappAccountEvents['on'](_0x2e9dc5,_0x3618d8);}};
\ No newline at end of file
+var _0x9962=['remove','emit','register','length','whatsappAccount:','./whatsappAccount.events'];(function(_0x4abc8f,_0xef597d){var _0x5d7939=function(_0x145f23){while(--_0x145f23){_0x4abc8f['push'](_0x4abc8f['shift']());}};_0x5d7939(++_0xef597d);}(_0x9962,0x1a9));var _0x2996=function(_0x5937fc,_0x410341){_0x5937fc=_0x5937fc-0x0;var _0xec1dd3=_0x9962[_0x5937fc];return _0xec1dd3;};'use strict';var WhatsappAccountEvents=require(_0x2996('0x0'));var events=['save',_0x2996('0x1'),'update'];function createListener(_0x101392,_0x72b3dd){return function(_0x97a278){_0x72b3dd[_0x2996('0x2')](_0x101392,_0x97a278);};}function removeListener(_0x1baec2,_0x473b42){return function(){WhatsappAccountEvents['removeListener'](_0x1baec2,_0x473b42);};}exports[_0x2996('0x3')]=function(_0x22342f){for(var _0x1dd1c3=0x0,_0x2a3dee=events[_0x2996('0x4')];_0x1dd1c3<_0x2a3dee;_0x1dd1c3++){var _0x673ccd=events[_0x1dd1c3];var _0x5774db=createListener(_0x2996('0x5')+_0x673ccd,_0x22342f);WhatsappAccountEvents['on'](_0x673ccd,_0x5774db);}};
\ No newline at end of file
index 805ca67..09913d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf52=['/:id','isAuthenticated','show','post','put','update','destroy','exports','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get'];(function(_0x350182,_0x2a9feb){var _0x4a0892=function(_0x2c994d){while(--_0x2c994d){_0x350182['push'](_0x350182['shift']());}};_0x4a0892(++_0x2a9feb);}(_0xbf52,0x71));var _0x2bf5=function(_0x12f570,_0x2bdad1){_0x12f570=_0x12f570-0x0;var _0x820efc=_0xbf52[_0x12f570];return _0x820efc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2bf5('0x0'));var timeout=require(_0x2bf5('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2bf5('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x2bf5('0x3'));var config=require(_0x2bf5('0x4'));var controller=require(_0x2bf5('0x5'));router[_0x2bf5('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2bf5('0x6')](_0x2bf5('0x7'),auth[_0x2bf5('0x8')](),controller[_0x2bf5('0x9')]);router[_0x2bf5('0xa')]('/',auth[_0x2bf5('0x8')](),controller['create']);router[_0x2bf5('0xb')](_0x2bf5('0x7'),auth[_0x2bf5('0x8')](),controller[_0x2bf5('0xc')]);router['delete']('/:id',auth[_0x2bf5('0x8')](),controller[_0x2bf5('0xd')]);module[_0x2bf5('0xe')]=router;
\ No newline at end of file
+var _0x5224=['put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated','post','create'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x5224,0x122));var _0x4522=function(_0x5ad07c,_0x324dcd){_0x5ad07c=_0x5ad07c-0x0;var _0x204bae=_0x5224[_0x5ad07c];return _0x204bae;};'use strict';var multer=require(_0x4522('0x0'));var util=require(_0x4522('0x1'));var path=require(_0x4522('0x2'));var timeout=require(_0x4522('0x3'));var express=require(_0x4522('0x4'));var router=express[_0x4522('0x5')]();var fs_extra=require(_0x4522('0x6'));var auth=require(_0x4522('0x7'));var interaction=require(_0x4522('0x8'));var config=require('../../config/environment');var controller=require(_0x4522('0x9'));router[_0x4522('0xa')]('/',auth[_0x4522('0xb')](),controller['index']);router[_0x4522('0xa')]('/:id',auth[_0x4522('0xb')](),controller['show']);router[_0x4522('0xc')]('/',auth[_0x4522('0xb')](),controller[_0x4522('0xd')]);router[_0x4522('0xe')](_0x4522('0xf'),auth[_0x4522('0xb')](),controller[_0x4522('0x10')]);router['delete'](_0x4522('0xf'),auth['isAuthenticated'](),controller[_0x4522('0x11')]);module[_0x4522('0x12')]=router;
\ No newline at end of file
index 33acf9d..9268463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb63=['exports','INTEGER','STRING','*,*,*,*'];(function(_0x4d54bd,_0x594255){var _0x5b6ead=function(_0x4344dd){while(--_0x4344dd){_0x4d54bd['push'](_0x4d54bd['shift']());}};_0x5b6ead(++_0x594255);}(_0xdb63,0x1b4));var _0x3db6=function(_0x379ddc,_0x512634){_0x379ddc=_0x379ddc-0x0;var _0x3fca64=_0xdb63[_0x379ddc];return _0x3fca64;};'use strict';var Sequelize=require('sequelize');module[_0x3db6('0x0')]={'priority':{'type':Sequelize[_0x3db6('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x3db6('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x3db6('0x2')]},'interval':{'type':Sequelize[_0x3db6('0x2')],'defaultValue':_0x3db6('0x3')}};
\ No newline at end of file
+var _0xdfdd=['sequelize','exports','INTEGER','noop','TEXT','STRING','*,*,*,*'];(function(_0x281305,_0x2998d6){var _0x56ffbe=function(_0x270b4c){while(--_0x270b4c){_0x281305['push'](_0x281305['shift']());}};_0x56ffbe(++_0x2998d6);}(_0xdfdd,0x1b9));var _0xddfd=function(_0x30b9d9,_0x3c507c){_0x30b9d9=_0x30b9d9-0x0;var _0x123463=_0xdfdd[_0x30b9d9];return _0x123463;};'use strict';var Sequelize=require(_0xddfd('0x0'));module[_0xddfd('0x1')]={'priority':{'type':Sequelize[_0xddfd('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xddfd('0x3')},'appdata':{'type':Sequelize[_0xddfd('0x4')]()},'description':{'type':Sequelize[_0xddfd('0x5')]},'interval':{'type':Sequelize[_0xddfd('0x5')],'defaultValue':_0xddfd('0x6')}};
\ No newline at end of file
index 5bae565..81002e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappApplication','include','findAll','rows','catch','show','params','keys','includeAll','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','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'];(function(_0x1e48d3,_0x5d8c43){var _0x2852b1=function(_0x11d7b3){while(--_0x11d7b3){_0x1e48d3['push'](_0x1e48d3['shift']());}};_0x2852b1(++_0x5d8c43);}(_0x958a,0x128));var _0xa958=function(_0xdf8947,_0x188316){_0xdf8947=_0xdf8947-0x0;var _0x3b0f8d=_0x958a[_0xdf8947];return _0x3b0f8d;};'use strict';var emlformat=require(_0xa958('0x0'));var rimraf=require(_0xa958('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa958('0x2'));var rp=require(_0xa958('0x3'));var moment=require(_0xa958('0x4'));var BPromise=require(_0xa958('0x5'));var Mustache=require(_0xa958('0x6'));var util=require('util');var path=require(_0xa958('0x7'));var sox=require('sox');var csv=require(_0xa958('0x8'));var ejs=require(_0xa958('0x9'));var fs=require('fs');var fs_extra=require(_0xa958('0xa'));var _=require(_0xa958('0xb'));var squel=require(_0xa958('0xc'));var crypto=require(_0xa958('0xd'));var jsforce=require(_0xa958('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa958('0xf'));var Papa=require(_0xa958('0x10'));var Redis=require(_0xa958('0x11'));var authService=require(_0xa958('0x12'));var qs=require(_0xa958('0x13'));var as=require(_0xa958('0x14'));var hardwareService=require(_0xa958('0x15'));var logger=require(_0xa958('0x16'))(_0xa958('0x17'));var utils=require(_0xa958('0x18'));var config=require(_0xa958('0x19'));var licenseUtil=require(_0xa958('0x1a'));var db=require(_0xa958('0x1b'))['db'];function respondWithStatusCode(_0x53bf27,_0x5063ae){_0x5063ae=_0x5063ae||0xcc;return function(_0x5bcc66){if(_0x5bcc66){return _0x53bf27[_0xa958('0x1c')](_0x5063ae);}return _0x53bf27[_0xa958('0x1d')](_0x5063ae)[_0xa958('0x1e')]();};}function respondWithResult(_0x591d4d,_0x3ebc66){_0x3ebc66=_0x3ebc66||0xc8;return function(_0x54c439){if(_0x54c439){return _0x591d4d['status'](_0x3ebc66)['json'](_0x54c439);}};}function respondWithFilteredResult(_0x1fe41e,_0x15fca8){return function(_0xb90ac6){if(_0xb90ac6){var _0x6a81c7=typeof _0x15fca8[_0xa958('0x1f')]===_0xa958('0x20')&&typeof _0x15fca8[_0xa958('0x21')]===_0xa958('0x20');var _0x4d836f=_0xb90ac6[_0xa958('0x22')];var _0x4eadc9=_0x6a81c7?0x0:_0x15fca8[_0xa958('0x1f')];var _0x70d13e=_0x6a81c7?_0xb90ac6['count']:_0x15fca8[_0xa958('0x1f')]+_0x15fca8[_0xa958('0x21')];var _0x47636f;if(_0x70d13e>=_0x4d836f){_0x70d13e=_0x4d836f;_0x47636f=0xc8;}else{_0x47636f=0xce;}_0x1fe41e[_0xa958('0x1d')](_0x47636f);return _0x1fe41e[_0xa958('0x23')](_0xa958('0x24'),_0x4eadc9+'-'+_0x70d13e+'/'+_0x4d836f)['json'](_0xb90ac6);}return null;};}function patchUpdates(_0x4a90c2){return function(_0x373661){try{jsonpatch[_0xa958('0x25')](_0x373661,_0x4a90c2,!![]);}catch(_0x16c0be){return BPromise['reject'](_0x16c0be);}return _0x373661[_0xa958('0x26')]();};}function saveUpdates(_0x383aa3,_0x5c091a){return function(_0x28cf12){if(_0x28cf12){return _0x28cf12[_0xa958('0x27')](_0x383aa3)['then'](function(_0x5c5a2b){return _0x5c5a2b;});}return null;};}function removeEntity(_0x201ed3,_0x40b51e){return function(_0x50b3c3){if(_0x50b3c3){return _0x50b3c3[_0xa958('0x28')]()[_0xa958('0x29')](function(){_0x201ed3[_0xa958('0x1d')](0xcc)[_0xa958('0x1e')]();});}};}function handleEntityNotFound(_0x16b04a,_0xf1436e){return function(_0x50fdb1){if(!_0x50fdb1){_0x16b04a[_0xa958('0x1c')](0x194);}return _0x50fdb1;};}function handleError(_0x48ef34,_0x43df63){_0x43df63=_0x43df63||0x1f4;return function(_0x3c2ea3){logger[_0xa958('0x2a')](_0x3c2ea3[_0xa958('0x2b')]);if(_0x3c2ea3[_0xa958('0x2c')]){delete _0x3c2ea3[_0xa958('0x2c')];}_0x48ef34[_0xa958('0x1d')](_0x43df63)[_0xa958('0x2d')](_0x3c2ea3);};}exports[_0xa958('0x2e')]=function(_0x404d07,_0x4c4c37){var _0x47895c={},_0xd2fcc9={},_0x4ef4f6={'count':0x0,'rows':[]};var _0x1febd2=_[_0xa958('0x2f')](db['WhatsappApplication'][_0xa958('0x30')],function(_0x3d4711){return{'name':_0x3d4711[_0xa958('0x31')],'type':_0x3d4711[_0xa958('0x32')][_0xa958('0x33')]};});_0xd2fcc9['model']=_['map'](_0x1febd2,_0xa958('0x2c'));_0xd2fcc9['query']=_['keys'](_0x404d07[_0xa958('0x34')]);_0xd2fcc9[_0xa958('0x35')]=_[_0xa958('0x36')](_0xd2fcc9[_0xa958('0x37')],_0xd2fcc9[_0xa958('0x34')]);_0x47895c[_0xa958('0x38')]=_['intersection'](_0xd2fcc9[_0xa958('0x37')],qs['fields'](_0x404d07['query'][_0xa958('0x39')]));_0x47895c[_0xa958('0x38')]=_0x47895c[_0xa958('0x38')][_0xa958('0x3a')]?_0x47895c[_0xa958('0x38')]:_0xd2fcc9[_0xa958('0x37')];if(!_0x404d07[_0xa958('0x34')][_0xa958('0x3b')]('nolimit')){_0x47895c['limit']=qs[_0xa958('0x21')](_0x404d07[_0xa958('0x34')][_0xa958('0x21')]);_0x47895c[_0xa958('0x1f')]=qs[_0xa958('0x1f')](_0x404d07['query'][_0xa958('0x1f')]);}_0x47895c[_0xa958('0x3c')]=qs[_0xa958('0x3d')](_0x404d07[_0xa958('0x34')]['sort']);_0x47895c[_0xa958('0x3e')]=qs[_0xa958('0x35')](_[_0xa958('0x3f')](_0x404d07[_0xa958('0x34')],_0xd2fcc9[_0xa958('0x35')]),_0x1febd2);if(_0x404d07['query'][_0xa958('0x40')]){_0x47895c[_0xa958('0x3e')]=_[_0xa958('0x41')](_0x47895c[_0xa958('0x3e')],{'$or':_[_0xa958('0x2f')](_0x1febd2,function(_0x45603f){if(_0x45603f[_0xa958('0x32')]!==_0xa958('0x42')){var _0x2378df={};_0x2378df[_0x45603f[_0xa958('0x2c')]]={'$like':'%'+_0x404d07['query'][_0xa958('0x40')]+'%'};return _0x2378df;}})});}_0x47895c=_[_0xa958('0x41')]({},_0x47895c,_0x404d07[_0xa958('0x43')]);var _0x5d5ae1={'where':_0x47895c[_0xa958('0x3e')]};return db[_0xa958('0x44')]['count'](_0x5d5ae1)['then'](function(_0x53710e){_0x4ef4f6['count']=_0x53710e;if(_0x404d07[_0xa958('0x34')]['includeAll']){_0x47895c[_0xa958('0x45')]=[{'all':!![]}];}return db['WhatsappApplication'][_0xa958('0x46')](_0x47895c);})[_0xa958('0x29')](function(_0x44fa44){_0x4ef4f6[_0xa958('0x47')]=_0x44fa44;return _0x4ef4f6;})[_0xa958('0x29')](respondWithFilteredResult(_0x4c4c37,_0x47895c))[_0xa958('0x48')](handleError(_0x4c4c37,null));};exports[_0xa958('0x49')]=function(_0x18f110,_0x517319){var _0x10e4ee={'raw':!![],'where':{'id':_0x18f110[_0xa958('0x4a')]['id']}},_0x38dfb4={};_0x38dfb4['model']=_['keys'](db['WhatsappApplication'][_0xa958('0x30')]);_0x38dfb4[_0xa958('0x34')]=_[_0xa958('0x4b')](_0x18f110[_0xa958('0x34')]);_0x38dfb4[_0xa958('0x35')]=_['intersection'](_0x38dfb4[_0xa958('0x37')],_0x38dfb4[_0xa958('0x34')]);_0x10e4ee[_0xa958('0x38')]=_[_0xa958('0x36')](_0x38dfb4[_0xa958('0x37')],qs[_0xa958('0x39')](_0x18f110[_0xa958('0x34')][_0xa958('0x39')]));_0x10e4ee[_0xa958('0x38')]=_0x10e4ee[_0xa958('0x38')][_0xa958('0x3a')]?_0x10e4ee[_0xa958('0x38')]:_0x38dfb4[_0xa958('0x37')];if(_0x18f110[_0xa958('0x34')][_0xa958('0x4c')]){_0x10e4ee[_0xa958('0x45')]=[{'all':!![]}];}_0x10e4ee=_[_0xa958('0x41')]({},_0x10e4ee,_0x18f110['options']);return db['WhatsappApplication']['find'](_0x10e4ee)[_0xa958('0x29')](handleEntityNotFound(_0x517319,null))[_0xa958('0x29')](respondWithResult(_0x517319,null))[_0xa958('0x48')](handleError(_0x517319,null));};exports[_0xa958('0x4d')]=function(_0x55ab45,_0x34faa2){return db[_0xa958('0x44')][_0xa958('0x4d')](_0x55ab45[_0xa958('0x4e')],{})[_0xa958('0x29')](respondWithResult(_0x34faa2,0xc9))['catch'](handleError(_0x34faa2,null));};exports[_0xa958('0x27')]=function(_0x2bbb2e,_0x3f8407){if(_0x2bbb2e['body']['id']){delete _0x2bbb2e[_0xa958('0x4e')]['id'];}return db['WhatsappApplication'][_0xa958('0x4f')]({'where':{'id':_0x2bbb2e[_0xa958('0x4a')]['id']}})[_0xa958('0x29')](handleEntityNotFound(_0x3f8407,null))['then'](saveUpdates(_0x2bbb2e[_0xa958('0x4e')],null))['then'](respondWithResult(_0x3f8407,null))[_0xa958('0x48')](handleError(_0x3f8407,null));};exports[_0xa958('0x28')]=function(_0x85fc0d,_0x402d0a){return db[_0xa958('0x44')]['find']({'where':{'id':_0x85fc0d[_0xa958('0x4a')]['id']}})['then'](handleEntityNotFound(_0x402d0a,null))[_0xa958('0x29')](removeEntity(_0x402d0a,null))[_0xa958('0x48')](handleError(_0x402d0a,null));};
\ No newline at end of file
+var _0xe5af=['intersection','fields','attributes','length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','WhatsappApplication','includeAll','include','findAll','catch','params','create','body','find','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','rawAttributes','key','model','map','query','keys','filters'];(function(_0x3d649e,_0x1aecf8){var _0x2d2c18=function(_0x43e0c6){while(--_0x43e0c6){_0x3d649e['push'](_0x3d649e['shift']());}};_0x2d2c18(++_0x1aecf8);}(_0xe5af,0x9c));var _0xfe5a=function(_0x3397d1,_0x48579f){_0x3397d1=_0x3397d1-0x0;var _0x223a48=_0xe5af[_0x3397d1];return _0x223a48;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe5a('0x0'));var zipdir=require(_0xfe5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe5a('0x2'));var moment=require(_0xfe5a('0x3'));var BPromise=require(_0xfe5a('0x4'));var Mustache=require('mustache');var util=require(_0xfe5a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfe5a('0x6'));var ejs=require(_0xfe5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe5a('0x8'));var crypto=require(_0xfe5a('0x9'));var jsforce=require(_0xfe5a('0xa'));var deskjs=require(_0xfe5a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe5a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe5a('0xd'));var qs=require(_0xfe5a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe5a('0xf'));var logger=require(_0xfe5a('0x10'))(_0xfe5a('0x11'));var utils=require(_0xfe5a('0x12'));var config=require(_0xfe5a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe5a('0x14'))['db'];function respondWithStatusCode(_0x9d1f4f,_0x20b206){_0x20b206=_0x20b206||0xcc;return function(_0x374ded){if(_0x374ded){return _0x9d1f4f[_0xfe5a('0x15')](_0x20b206);}return _0x9d1f4f['status'](_0x20b206)[_0xfe5a('0x16')]();};}function respondWithResult(_0x17bbbe,_0x42969b){_0x42969b=_0x42969b||0xc8;return function(_0x362115){if(_0x362115){return _0x17bbbe[_0xfe5a('0x17')](_0x42969b)[_0xfe5a('0x18')](_0x362115);}};}function respondWithFilteredResult(_0x375380,_0xeb454){return function(_0x111d4d){if(_0x111d4d){var _0x18c57b=typeof _0xeb454[_0xfe5a('0x19')]===_0xfe5a('0x1a')&&typeof _0xeb454[_0xfe5a('0x1b')]===_0xfe5a('0x1a');var _0x3edcab=_0x111d4d[_0xfe5a('0x1c')];var _0x5bf597=_0x18c57b?0x0:_0xeb454[_0xfe5a('0x19')];var _0x456707=_0x18c57b?_0x111d4d['count']:_0xeb454[_0xfe5a('0x19')]+_0xeb454[_0xfe5a('0x1b')];var _0x39d905;if(_0x456707>=_0x3edcab){_0x456707=_0x3edcab;_0x39d905=0xc8;}else{_0x39d905=0xce;}_0x375380['status'](_0x39d905);return _0x375380['set'](_0xfe5a('0x1d'),_0x5bf597+'-'+_0x456707+'/'+_0x3edcab)[_0xfe5a('0x18')](_0x111d4d);}return null;};}function patchUpdates(_0xded538){return function(_0x3b3022){try{jsonpatch[_0xfe5a('0x1e')](_0x3b3022,_0xded538,!![]);}catch(_0x355869){return BPromise['reject'](_0x355869);}return _0x3b3022[_0xfe5a('0x1f')]();};}function saveUpdates(_0x592521,_0x3dfa57){return function(_0x39d825){if(_0x39d825){return _0x39d825[_0xfe5a('0x20')](_0x592521)['then'](function(_0x4bbef1){return _0x4bbef1;});}return null;};}function removeEntity(_0x247be4,_0x3e55fd){return function(_0x494df3){if(_0x494df3){return _0x494df3[_0xfe5a('0x21')]()[_0xfe5a('0x22')](function(){_0x247be4['status'](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x3a4f3c,_0x31cc60){return function(_0x2b4f1c){if(!_0x2b4f1c){_0x3a4f3c['sendStatus'](0x194);}return _0x2b4f1c;};}function handleError(_0x42136e,_0x2f5d04){_0x2f5d04=_0x2f5d04||0x1f4;return function(_0x24481f){logger[_0xfe5a('0x23')](_0x24481f[_0xfe5a('0x24')]);if(_0x24481f[_0xfe5a('0x25')]){delete _0x24481f[_0xfe5a('0x25')];}_0x42136e[_0xfe5a('0x17')](_0x2f5d04)['send'](_0x24481f);};}exports['index']=function(_0x712b44,_0x485f9d){var _0xc53869={},_0xfcb05b={},_0x11bf97={'count':0x0,'rows':[]};var _0x482a35=_['map'](db['WhatsappApplication'][_0xfe5a('0x26')],function(_0x582f2d){return{'name':_0x582f2d['fieldName'],'type':_0x582f2d['type'][_0xfe5a('0x27')]};});_0xfcb05b[_0xfe5a('0x28')]=_[_0xfe5a('0x29')](_0x482a35,_0xfe5a('0x25'));_0xfcb05b[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x712b44[_0xfe5a('0x2a')]);_0xfcb05b[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],_0xfcb05b[_0xfe5a('0x2a')]);_0xc53869['attributes']=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],qs['fields'](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0xc53869[_0xfe5a('0x2f')]=_0xc53869[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0xc53869['attributes']:_0xfcb05b['model'];if(!_0x712b44[_0xfe5a('0x2a')]['hasOwnProperty'](_0xfe5a('0x31'))){_0xc53869[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x712b44[_0xfe5a('0x2a')]['limit']);_0xc53869[_0xfe5a('0x19')]=qs[_0xfe5a('0x19')](_0x712b44[_0xfe5a('0x2a')]['offset']);}_0xc53869[_0xfe5a('0x32')]=qs[_0xfe5a('0x33')](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x33')]);_0xc53869['where']=qs[_0xfe5a('0x2c')](_['pick'](_0x712b44[_0xfe5a('0x2a')],_0xfcb05b[_0xfe5a('0x2c')]),_0x482a35);if(_0x712b44['query'][_0xfe5a('0x34')]){_0xc53869[_0xfe5a('0x35')]=_[_0xfe5a('0x36')](_0xc53869[_0xfe5a('0x35')],{'$or':_['map'](_0x482a35,function(_0x193ce0){if(_0x193ce0[_0xfe5a('0x37')]!==_0xfe5a('0x38')){var _0x560088={};_0x560088[_0x193ce0[_0xfe5a('0x25')]]={'$like':'%'+_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x34')]+'%'};return _0x560088;}})});}_0xc53869=_[_0xfe5a('0x36')]({},_0xc53869,_0x712b44[_0xfe5a('0x39')]);var _0x162c48={'where':_0xc53869[_0xfe5a('0x35')]};return db[_0xfe5a('0x3a')][_0xfe5a('0x1c')](_0x162c48)[_0xfe5a('0x22')](function(_0x20da14){_0x11bf97['count']=_0x20da14;if(_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0xc53869[_0xfe5a('0x3c')]=[{'all':!![]}];}return db[_0xfe5a('0x3a')][_0xfe5a('0x3d')](_0xc53869);})[_0xfe5a('0x22')](function(_0x3475fb){_0x11bf97['rows']=_0x3475fb;return _0x11bf97;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x485f9d,_0xc53869))[_0xfe5a('0x3e')](handleError(_0x485f9d,null));};exports['show']=function(_0x59caa1,_0x252904){var _0x4c17fd={'raw':!![],'where':{'id':_0x59caa1[_0xfe5a('0x3f')]['id']}},_0x54096d={};_0x54096d[_0xfe5a('0x28')]=_['keys'](db[_0xfe5a('0x3a')]['rawAttributes']);_0x54096d[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x59caa1[_0xfe5a('0x2a')]);_0x54096d[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],_0x54096d['query']);_0x4c17fd[_0xfe5a('0x2f')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],qs[_0xfe5a('0x2e')](_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0x4c17fd[_0xfe5a('0x2f')]=_0x4c17fd[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0x4c17fd[_0xfe5a('0x2f')]:_0x54096d[_0xfe5a('0x28')];if(_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0x4c17fd[_0xfe5a('0x3c')]=[{'all':!![]}];}_0x4c17fd=_['merge']({},_0x4c17fd,_0x59caa1[_0xfe5a('0x39')]);return db[_0xfe5a('0x3a')]['find'](_0x4c17fd)['then'](handleEntityNotFound(_0x252904,null))[_0xfe5a('0x22')](respondWithResult(_0x252904,null))[_0xfe5a('0x3e')](handleError(_0x252904,null));};exports[_0xfe5a('0x40')]=function(_0x3ccf98,_0x3cf1b5){return db[_0xfe5a('0x3a')][_0xfe5a('0x40')](_0x3ccf98['body'],{})[_0xfe5a('0x22')](respondWithResult(_0x3cf1b5,0xc9))['catch'](handleError(_0x3cf1b5,null));};exports[_0xfe5a('0x20')]=function(_0x5a807e,_0x433562){if(_0x5a807e[_0xfe5a('0x41')]['id']){delete _0x5a807e[_0xfe5a('0x41')]['id'];}return db[_0xfe5a('0x3a')]['find']({'where':{'id':_0x5a807e[_0xfe5a('0x3f')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x433562,null))['then'](saveUpdates(_0x5a807e[_0xfe5a('0x41')],null))['then'](respondWithResult(_0x433562,null))['catch'](handleError(_0x433562,null));};exports[_0xfe5a('0x21')]=function(_0x4e02c9,_0x374ce5){return db[_0xfe5a('0x3a')][_0xfe5a('0x42')]({'where':{'id':_0x4e02c9[_0xfe5a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x374ce5,null))[_0xfe5a('0x22')](removeEntity(_0x374ce5,null))['catch'](handleError(_0x374ce5,null));};
\ No newline at end of file
index eb4b204..bdb62a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe107=['../../config/logger','api','moment','request-promise','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','lodash'];(function(_0x65d317,_0x1b81a3){var _0x51ee61=function(_0x11ca43){while(--_0x11ca43){_0x65d317['push'](_0x65d317['shift']());}};_0x51ee61(++_0x1b81a3);}(_0xe107,0xb3));var _0x7e10=function(_0x383acc,_0x55c2b2){_0x383acc=_0x383acc-0x0;var _0x5c1a55=_0xe107[_0x383acc];return _0x5c1a55;};'use strict';var _=require(_0x7e10('0x0'));var util=require('util');var logger=require(_0x7e10('0x1'))(_0x7e10('0x2'));var moment=require(_0x7e10('0x3'));var BPromise=require('bluebird');var rp=require(_0x7e10('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7e10('0x5'));var attributes=require(_0x7e10('0x6'));module[_0x7e10('0x7')]=function(_0x5be19f,_0x5f1edf){return _0x5be19f[_0x7e10('0x8')](_0x7e10('0x9'),attributes,{'tableName':_0x7e10('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7e10('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd2ea=['./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x361473,_0x4044ff){var _0x5e1052=function(_0x47161d){while(--_0x47161d){_0x361473['push'](_0x361473['shift']());}};_0x5e1052(++_0x4044ff);}(_0xd2ea,0x15f));var _0xad2e=function(_0x3cc2d6,_0x5c802d){_0x3cc2d6=_0x3cc2d6-0x0;var _0xbda05a=_0xd2ea[_0x3cc2d6];return _0xbda05a;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var logger=require(_0xad2e('0x2'))(_0xad2e('0x3'));var moment=require(_0xad2e('0x4'));var BPromise=require('bluebird');var rp=require(_0xad2e('0x5'));var fs=require('fs');var path=require(_0xad2e('0x6'));var rimraf=require(_0xad2e('0x7'));var config=require(_0xad2e('0x8'));var attributes=require(_0xad2e('0x9'));module[_0xad2e('0xa')]=function(_0x29e97f,_0x592e8b){return _0x29e97f[_0xad2e('0xb')](_0xad2e('0xc'),attributes,{'tableName':_0xad2e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xad2e('0xe')});};
\ No newline at end of file
index 6f88923..7bf7420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util'];(function(_0x4e665a,_0x4e4bda){var _0x427e27=function(_0x43bacd){while(--_0x43bacd){_0x4e665a['push'](_0x4e665a['shift']());}};_0x427e27(++_0x4e4bda);}(_0x0e85,0x7c));var _0x50e8=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x0e85[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var moment=require('moment');var BPromise=require(_0x50e8('0x2'));var rs=require(_0x50e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x50e8('0x4'))('rpc');var config=require(_0x50e8('0x5'));var jayson=require(_0x50e8('0x6'));var client=jayson[_0x50e8('0x7')][_0x50e8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e8b01,_0x3ce904,_0x108edc){return new BPromise(function(_0x42665e,_0x988da0){return client[_0x50e8('0x9')](_0x5e8b01,_0x108edc)[_0x50e8('0xa')](function(_0x5825f5){logger[_0x50e8('0xb')](_0x50e8('0xc'),_0x3ce904,_0x50e8('0xd'));logger[_0x50e8('0xe')](_0x50e8('0xf'),_0x3ce904,_0x50e8('0xd'),JSON[_0x50e8('0x10')](_0x5825f5));if(_0x5825f5[_0x50e8('0x11')]){if(_0x5825f5['error']['code']===0x1f4){logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error']['message']);return _0x988da0(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}logger[_0x50e8('0x11')](_0x50e8('0xc'),_0x3ce904,_0x5825f5['error'][_0x50e8('0x12')]);return _0x42665e(_0x5825f5[_0x50e8('0x11')][_0x50e8('0x12')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x50e8('0xd'));_0x42665e(_0x5825f5[_0x50e8('0x13')][_0x50e8('0x12')]);}})[_0x50e8('0x14')](function(_0x211731){logger[_0x50e8('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x3ce904,_0x211731);_0x988da0(_0x211731);});});}
\ No newline at end of file
+var _0x99e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x3cae69,_0x233c38){var _0x3128eb=function(_0x21d64e){while(--_0x21d64e){_0x3cae69['push'](_0x3cae69['shift']());}};_0x3128eb(++_0x233c38);}(_0x99e9,0xb4));var _0x999e=function(_0x44714c,_0x2ac454){_0x44714c=_0x44714c-0x0;var _0x57d4d5=_0x99e9[_0x44714c];return _0x57d4d5;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var moment=require(_0x999e('0x1'));var BPromise=require(_0x999e('0x2'));var rs=require(_0x999e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x999e('0x4'))['db'];var utils=require(_0x999e('0x5'));var logger=require(_0x999e('0x6'))('rpc');var config=require(_0x999e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x999e('0x8')][_0x999e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x100330,_0x18f337,_0x5c1c17){return new BPromise(function(_0x46aeae,_0x38a692){return client[_0x999e('0xa')](_0x100330,_0x5c1c17)[_0x999e('0xb')](function(_0x2c38cf){logger[_0x999e('0xc')](_0x999e('0xd'),_0x18f337,_0x999e('0xe'));logger[_0x999e('0xf')](_0x999e('0x10'),_0x18f337,_0x999e('0xe'),JSON[_0x999e('0x11')](_0x2c38cf));if(_0x2c38cf[_0x999e('0x12')]){if(_0x2c38cf[_0x999e('0x12')][_0x999e('0x13')]===0x1f4){logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x38a692(_0x2c38cf['error'][_0x999e('0x14')]);}logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x46aeae(_0x2c38cf['error'][_0x999e('0x14')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x999e('0xe'));_0x46aeae(_0x2c38cf[_0x999e('0x15')][_0x999e('0x14')]);}})[_0x999e('0x16')](function(_0x1e9bff){logger[_0x999e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x1e9bff);_0x38a692(_0x1e9bff);});});}
\ No newline at end of file
index dcf4a5f..8d08375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb8b=['delete','whatsappinteraction:destroy','removeTags','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/messages','getMessages','/:id/download','post','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update'];(function(_0x3bbbcf,_0x1465a9){var _0x543e7c=function(_0x1f495f){while(--_0x1f495f){_0x3bbbcf['push'](_0x3bbbcf['shift']());}};_0x543e7c(++_0x1465a9);}(_0xdb8b,0x1c4));var _0xbdb8=function(_0x4e74c4,_0x59614b){_0x4e74c4=_0x4e74c4-0x0;var _0x251318=_0xdb8b[_0x4e74c4];return _0x251318;};'use strict';var multer=require('multer');var util=require(_0xbdb8('0x0'));var path=require(_0xbdb8('0x1'));var timeout=require(_0xbdb8('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbdb8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xbdb8('0x4'));var config=require(_0xbdb8('0x5'));var controller=require(_0xbdb8('0x6'));router[_0xbdb8('0x7')]('/',auth['isAuthenticated'](),controller[_0xbdb8('0x8')]);router['get'](_0xbdb8('0x9'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0xb')]);router[_0xbdb8('0x7')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),controller['show']);router[_0xbdb8('0x7')](_0xbdb8('0xd'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0xe')]);router[_0xbdb8('0x7')](_0xbdb8('0xf'),auth[_0xbdb8('0xa')](),controller['download']);router['post']('/',auth[_0xbdb8('0xa')](),controller['create']);router[_0xbdb8('0x10')]('/:id/messages',auth[_0xbdb8('0xa')](),controller['addMessage']);router[_0xbdb8('0x10')](_0xbdb8('0x11'),auth[_0xbdb8('0xa')](),interaction[_0xbdb8('0x12')](_0xbdb8('0x13'),_0xbdb8('0x14')),controller[_0xbdb8('0x15')]);router[_0xbdb8('0x16')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),interaction[_0xbdb8('0x12')](_0xbdb8('0x13'),_0xbdb8('0x17')),controller['update']);router[_0xbdb8('0x18')](_0xbdb8('0xc'),auth[_0xbdb8('0xa')](),interaction['tracked']('whatsapp',_0xbdb8('0x19')),controller['destroy']);router[_0xbdb8('0x18')](_0xbdb8('0x11'),auth[_0xbdb8('0xa')](),controller[_0xbdb8('0x1a')]);module[_0xbdb8('0x1b')]=router;
\ No newline at end of file
+var _0xdfa0=['show','/:id/download','post','/:id/messages','addMessage','/:id/tags','tracked','whatsapp','addTags','put','/:id','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe'];(function(_0xc8eb29,_0x461416){var _0x143113=function(_0xb7763b){while(--_0xb7763b){_0xc8eb29['push'](_0xc8eb29['shift']());}};_0x143113(++_0x461416);}(_0xdfa0,0x69));var _0x0dfa=function(_0x3f89d5,_0x136b6d){_0x3f89d5=_0x3f89d5-0x0;var _0x23f85e=_0xdfa0[_0x3f89d5];return _0x23f85e;};'use strict';var multer=require(_0x0dfa('0x0'));var util=require('util');var path=require(_0x0dfa('0x1'));var timeout=require(_0x0dfa('0x2'));var express=require('express');var router=express[_0x0dfa('0x3')]();var fs_extra=require(_0x0dfa('0x4'));var auth=require(_0x0dfa('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0dfa('0x6'));var controller=require('./whatsappInteraction.controller');router[_0x0dfa('0x7')]('/',auth[_0x0dfa('0x8')](),controller['index']);router[_0x0dfa('0x7')](_0x0dfa('0x9'),auth[_0x0dfa('0x8')](),controller[_0x0dfa('0xa')]);router[_0x0dfa('0x7')]('/:id',auth[_0x0dfa('0x8')](),controller[_0x0dfa('0xb')]);router[_0x0dfa('0x7')]('/:id/messages',auth[_0x0dfa('0x8')](),controller['getMessages']);router[_0x0dfa('0x7')](_0x0dfa('0xc'),auth[_0x0dfa('0x8')](),controller['download']);router[_0x0dfa('0xd')]('/',auth[_0x0dfa('0x8')](),controller['create']);router[_0x0dfa('0xd')](_0x0dfa('0xe'),auth['isAuthenticated'](),controller[_0x0dfa('0xf')]);router[_0x0dfa('0xd')](_0x0dfa('0x10'),auth[_0x0dfa('0x8')](),interaction[_0x0dfa('0x11')](_0x0dfa('0x12'),'whatsappinteraction:addtags'),controller[_0x0dfa('0x13')]);router[_0x0dfa('0x14')](_0x0dfa('0x15'),auth[_0x0dfa('0x8')](),interaction[_0x0dfa('0x11')](_0x0dfa('0x12'),_0x0dfa('0x16')),controller[_0x0dfa('0x17')]);router[_0x0dfa('0x18')](_0x0dfa('0x15'),auth[_0x0dfa('0x8')](),interaction[_0x0dfa('0x11')](_0x0dfa('0x12'),_0x0dfa('0x19')),controller[_0x0dfa('0x1a')]);router['delete'](_0x0dfa('0x10'),auth[_0x0dfa('0x8')](),controller[_0x0dfa('0x1b')]);module[_0x0dfa('0x1c')]=router;
\ No newline at end of file
index 5dc009f..6908a47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c75=['DATE','STRING','ENUM','out','moment','BOOLEAN'];(function(_0x169fa6,_0x20b647){var _0x117021=function(_0x10b878){while(--_0x10b878){_0x169fa6['push'](_0x169fa6['shift']());}};_0x117021(++_0x20b647);}(_0x0c75,0x6a));var _0x50c7=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0c75[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x50c7('0x0'));module['exports']={'closed':{'type':Sequelize[_0x50c7('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x50c7('0x2')]},'disposition':{'type':Sequelize[_0x50c7('0x3')]},'secondDisposition':{'type':Sequelize[_0x50c7('0x3')]},'thirdDisposition':{'type':Sequelize[_0x50c7('0x3')]},'note':{'type':Sequelize[_0x50c7('0x3')]},'phone':{'type':Sequelize[_0x50c7('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x50c7('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x50c7('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x50c7('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x50c7('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4873=['moment','exports','DATE','STRING','ENUM','out','BOOLEAN','sequelize'];(function(_0x105f64,_0x135b5b){var _0x75d180=function(_0xc7951){while(--_0xc7951){_0x105f64['push'](_0x105f64['shift']());}};_0x75d180(++_0x135b5b);}(_0x4873,0x1df));var _0x3487=function(_0x21a238,_0x5c33d7){_0x21a238=_0x21a238-0x0;var _0x39086f=_0x4873[_0x21a238];return _0x39086f;};'use strict';var Sequelize=require(_0x3487('0x0'));var moment=require(_0x3487('0x1'));module[_0x3487('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3487('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x3487('0x4')]},'note':{'type':Sequelize[_0x3487('0x4')]},'phone':{'type':Sequelize[_0x3487('0x4')]},'read1stAt':{'type':Sequelize[_0x3487('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x3487('0x5')]('in',_0x3487('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3487('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x3487('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x3487('0x7')],'defaultValue':![]}};
\ No newline at end of file
index b4555c6..143e5b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238e=['set','Content-Range','json','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','findAll','query','show','params','model','WhatsappInteraction','keys','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','body','describe','addMessage','WhatsappMessage','omit','filters','hasOwnProperty','nolimit','order','sort','pick','where','WhatsappInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','include','rows','addTags','setTags','ids','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','root','files','tmp','join','server','attachments','push','User','fullname','firstName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','createdAt','format','closed','existsSync','createReadStream','pipe','createWriteStream','out','System','lastName','Contact','basename','value','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','ioredis','../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','localhost','redis','./whatsappInteraction.socket','register','sendStatus','status','end','offset','undefined','count','limit'];(function(_0x118d39,_0x43be87){var _0x47958b=function(_0x5aaceb){while(--_0x5aaceb){_0x118d39['push'](_0x118d39['shift']());}};_0x47958b(++_0x43be87);}(_0x238e,0x69));var _0xe238=function(_0x22610f,_0x185abc){_0x22610f=_0x22610f-0x0;var _0x53c6bd=_0x238e[_0x22610f];return _0x53c6bd;};'use strict';var rimraf=require(_0xe238('0x0'));var zipdir=require(_0xe238('0x1'));var moment=require(_0xe238('0x2'));var BPromise=require('bluebird');var util=require(_0xe238('0x3'));var path=require(_0xe238('0x4'));var ejs=require(_0xe238('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xe238('0x6'));var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0xe238('0x7'));var logger=require('../../config/logger')(_0xe238('0x8'));var config=require(_0xe238('0x9'));var db=require(_0xe238('0xa'))['db'];config['redis']=_[_0xe238('0xb')](config['redis'],{'host':_0xe238('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe238('0xd')]));require(_0xe238('0xe'))[_0xe238('0xf')](socket);function respondWithStatusCode(_0xe00317,_0x31be1b){_0x31be1b=_0x31be1b||0xcc;return function(_0x415d27){if(_0x415d27){return _0xe00317[_0xe238('0x10')](_0x31be1b);}return _0xe00317[_0xe238('0x11')](_0x31be1b)[_0xe238('0x12')]();};}function respondWithResult(_0x47088,_0x478a36){_0x478a36=_0x478a36||0xc8;return function(_0x491622){if(_0x491622){return _0x47088[_0xe238('0x11')](_0x478a36)['json'](_0x491622);}};}function respondWithFilteredResult(_0xe9168b,_0x44e4f0){return function(_0x56a6bb){if(_0x56a6bb){var _0x212709=typeof _0x44e4f0[_0xe238('0x13')]===_0xe238('0x14')&&typeof _0x44e4f0['limit']===_0xe238('0x14');var _0x39ddd9=_0x56a6bb['count'];var _0x3e9704=_0x212709?0x0:_0x44e4f0[_0xe238('0x13')];var _0x2585f3=_0x212709?_0x56a6bb[_0xe238('0x15')]:_0x44e4f0['offset']+_0x44e4f0[_0xe238('0x16')];var _0x45067c;if(_0x2585f3>=_0x39ddd9){_0x2585f3=_0x39ddd9;_0x45067c=0xc8;}else{_0x45067c=0xce;}_0xe9168b[_0xe238('0x11')](_0x45067c);return _0xe9168b[_0xe238('0x17')](_0xe238('0x18'),_0x3e9704+'-'+_0x2585f3+'/'+_0x39ddd9)[_0xe238('0x19')](_0x56a6bb);}return null;};}function saveUpdates(_0x3e0d8e){return function(_0x667bb6){if(_0x667bb6){return _0x667bb6[_0xe238('0x1a')](_0x3e0d8e)[_0xe238('0x1b')](function(_0x2f9825){return _0x2f9825;});}return null;};}function removeEntity(_0x33ab6d){return function(_0x506b22){if(_0x506b22){return _0x506b22[_0xe238('0x1c')]()[_0xe238('0x1b')](function(){_0x33ab6d[_0xe238('0x11')](0xcc)[_0xe238('0x12')]();});}};}function handleEntityNotFound(_0x1052f8){return function(_0x218ea8){if(!_0x218ea8){_0x1052f8[_0xe238('0x10')](0x194);}return _0x218ea8;};}function handleError(_0x381762,_0x3f6613){_0x3f6613=_0x3f6613||0x1f4;return function(_0x20be50){logger[_0xe238('0x1d')](_0x20be50['stack']);if(_0x20be50[_0xe238('0x1e')]){delete _0x20be50[_0xe238('0x1e')];}_0x381762[_0xe238('0x11')](_0x3f6613)[_0xe238('0x1f')](_0x20be50);};}exports[_0xe238('0x20')]=function(_0x19174a,_0x4959cf){var _0x3dfe9a={};var _0x18fce2=_[_0xe238('0x21')](db['WhatsappInteraction'][_0xe238('0x22')],function(_0x315745){return{'name':_0x315745[_0xe238('0x23')],'type':_0x315745[_0xe238('0x24')][_0xe238('0x25')]};});_0x3dfe9a=qs['getOptions'](_0x18fce2,_0x19174a);return interaction[_0xe238('0x26')]('whatsapp',_0x19174a[_0xe238('0x27')],_0x19174a['user'],_0x3dfe9a,_0x18fce2)[_0xe238('0x1b')](respondWithFilteredResult(_0x4959cf,_0x3dfe9a))['catch'](handleError(_0x4959cf,null));};exports[_0xe238('0x28')]=function(_0x51755c,_0x192028){var _0x328aec={'raw':![],'where':{'id':_0x51755c[_0xe238('0x29')]['id']}},_0x269c57={};_0x269c57[_0xe238('0x2a')]=_['keys'](db[_0xe238('0x2b')][_0xe238('0x22')]);_0x269c57[_0xe238('0x27')]=_[_0xe238('0x2c')](_0x51755c['query']);_0x269c57['filters']=_[_0xe238('0x2d')](_0x269c57[_0xe238('0x2a')],_0x269c57[_0xe238('0x27')]);_0x328aec[_0xe238('0x2e')]=_['intersection'](_0x269c57['model'],qs['fields'](_0x51755c[_0xe238('0x27')][_0xe238('0x2f')]));_0x328aec['attributes']=_0x328aec[_0xe238('0x2e')][_0xe238('0x30')]?_0x328aec[_0xe238('0x2e')]:_0x269c57['model'];if(_0x51755c[_0xe238('0x27')][_0xe238('0x31')]){_0x328aec['include']=[{'all':!![]}];}_0x328aec=_[_0xe238('0x32')]({},_0x328aec,_0x51755c[_0xe238('0x33')]);return db['WhatsappInteraction'][_0xe238('0x34')](_0x328aec)[_0xe238('0x1b')](handleEntityNotFound(_0x192028,null))['then'](respondWithResult(_0x192028,null))[_0xe238('0x35')](handleError(_0x192028,null));};exports[_0xe238('0x36')]=function(_0x15fe13,_0x5ecb2b){return db[_0xe238('0x2b')][_0xe238('0x36')](_0x15fe13[_0xe238('0x37')],{})[_0xe238('0x1b')](respondWithResult(_0x5ecb2b,0xc9))[_0xe238('0x35')](handleError(_0x5ecb2b,null));};exports['update']=function(_0x2e537c,_0x3c6316){if(_0x2e537c[_0xe238('0x37')]['id']){delete _0x2e537c['body']['id'];}return db[_0xe238('0x2b')]['find']({'where':{'id':_0x2e537c[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x3c6316,null))['then'](saveUpdates(_0x2e537c[_0xe238('0x37')],null))[_0xe238('0x1b')](respondWithResult(_0x3c6316,null))['catch'](handleError(_0x3c6316,null));};exports[_0xe238('0x1c')]=function(_0x583a11,_0x300b5b){return db[_0xe238('0x2b')]['find']({'where':{'id':_0x583a11[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x300b5b,null))[_0xe238('0x1b')](removeEntity(_0x300b5b,null))[_0xe238('0x35')](handleError(_0x300b5b,null));};exports['describe']=function(_0x42d215,_0x1e9056){return db[_0xe238('0x2b')][_0xe238('0x38')]()['then'](respondWithResult(_0x1e9056,null))[_0xe238('0x35')](handleError(_0x1e9056,null));};exports[_0xe238('0x39')]=function(_0x2a2daf,_0x15e2a5){return db[_0xe238('0x3a')][_0xe238('0x34')]({'where':{'id':_0x2a2daf[_0xe238('0x29')]['id']}})['then'](handleEntityNotFound(_0x15e2a5,null))[_0xe238('0x1b')](function(_0x14710d){if(_0x14710d){return _0x14710d['addMessage'](_0x2a2daf[_0xe238('0x37')]['ids'],_[_0xe238('0x3b')](_0x2a2daf[_0xe238('0x37')],['ids','id'])||{});}})[_0xe238('0x1b')](respondWithResult(_0x15e2a5,null))[_0xe238('0x35')](handleError(_0x15e2a5,null));};exports['getMessages']=function(_0x2d070c,_0x1723e1){var _0x36bcd7={'raw':![],'where':{}};var _0x206466={};var _0x168656={'count':0x0,'rows':[]};return db[_0xe238('0x2b')]['findOne']({'where':{'id':_0x2d070c[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x1723e1,null))[_0xe238('0x1b')](function(_0x298595){if(_0x298595){_0x206466[_0xe238('0x2a')]=_['keys'](db['WhatsappMessage']['rawAttributes']);_0x206466['query']=_['keys'](_0x2d070c['query']);_0x206466[_0xe238('0x3c')]=_[_0xe238('0x2d')](_0x206466[_0xe238('0x2a')],_0x206466[_0xe238('0x27')]);_0x36bcd7[_0xe238('0x2e')]=_[_0xe238('0x2d')](_0x206466[_0xe238('0x2a')],qs['fields'](_0x2d070c['query']['fields']));_0x36bcd7[_0xe238('0x2e')]=_0x36bcd7['attributes'][_0xe238('0x30')]?_0x36bcd7['attributes']:_0x206466[_0xe238('0x2a')];if(!_0x2d070c[_0xe238('0x27')][_0xe238('0x3d')](_0xe238('0x3e'))){_0x36bcd7[_0xe238('0x16')]=qs[_0xe238('0x16')](_0x2d070c['query']['limit']);_0x36bcd7[_0xe238('0x13')]=qs['offset'](_0x2d070c[_0xe238('0x27')]['offset']);}_0x36bcd7[_0xe238('0x3f')]=qs[_0xe238('0x40')](_0x2d070c['query'][_0xe238('0x40')]);_0x36bcd7['where']=qs[_0xe238('0x3c')](_[_0xe238('0x41')](_0x2d070c['query'],_0x206466[_0xe238('0x3c')]));_0x36bcd7[_0xe238('0x42')][_0xe238('0x43')]=_0x298595['id'];if(_0x2d070c[_0xe238('0x27')][_0xe238('0x44')]){_0x36bcd7[_0xe238('0x42')]=_['merge'](_0x36bcd7[_0xe238('0x42')],{'$or':_[_0xe238('0x21')](_0x36bcd7[_0xe238('0x2e')],function(_0xec799a){var _0x220642={};_0x220642[_0xec799a]={'$like':'%'+_0x2d070c[_0xe238('0x27')][_0xe238('0x44')]+'%'};return _0x220642;})});}if(_0x2d070c[_0xe238('0x27')][_0xe238('0x45')]){var _0x284e35=_0x2d070c['query'][_0xe238('0x45')][_0xe238('0x46')](',');var _0x43e10b={};_0x43e10b[_0x284e35[0x0]]={'$gte':moment(_0x284e35[0x1])['format'](_0xe238('0x47'))};_0x36bcd7['where']=_[_0xe238('0x32')](_0x36bcd7[_0xe238('0x42')],_0x43e10b);}_0x36bcd7=_[_0xe238('0x32')]({},_0x36bcd7,_0x2d070c[_0xe238('0x33')]);return db[_0xe238('0x3a')][_0xe238('0x15')]({'where':_0x36bcd7['where']})[_0xe238('0x1b')](function(_0x4f5884){_0x168656[_0xe238('0x15')]=_0x4f5884;if(_0x2d070c['query'][_0xe238('0x31')]){_0x36bcd7[_0xe238('0x48')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xe238('0x26')](_0x36bcd7);})[_0xe238('0x1b')](function(_0xb2aad4){_0x168656[_0xe238('0x49')]=_0xb2aad4;return _0x168656;});}})[_0xe238('0x1b')](respondWithFilteredResult(_0x1723e1,_0x36bcd7))[_0xe238('0x35')](handleError(_0x1723e1,null));};exports[_0xe238('0x4a')]=function(_0x117d72,_0x2a1494){return db[_0xe238('0x2b')][_0xe238('0x34')]({'where':{'id':_0x117d72[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x2a1494,null))[_0xe238('0x1b')](function(_0x4b52de){if(_0x4b52de){return _0x4b52de[_0xe238('0x4b')](_0x117d72[_0xe238('0x37')]['ids'],_[_0xe238('0x3b')](_0x117d72[_0xe238('0x37')],[_0xe238('0x4c'),'id'])||{})['spread'](function(){return db[_0xe238('0x4d')]['findAll']({'attributes':['id',_0xe238('0x1e'),_0xe238('0x4e')],'where':{'id':_0x117d72[_0xe238('0x37')][_0xe238('0x4c')]}});})[_0xe238('0x1b')](function(_0x3bbb1c){socket[_0xe238('0x4f')](_0xe238('0x50'),{'id':Number(_0x117d72['params']['id']),'tags':_0x3bbb1c||[]});return{'id':Number(_0x117d72[_0xe238('0x29')]['id']),'tags':_0x3bbb1c||[]};});}})['then'](respondWithResult(_0x2a1494,null))[_0xe238('0x35')](handleError(_0x2a1494,null));};exports[_0xe238('0x51')]=function(_0x595bc4,_0x2f9e43){return db[_0xe238('0x2b')]['find']({'where':{'id':_0x595bc4[_0xe238('0x29')]['id']}})[_0xe238('0x1b')](handleEntityNotFound(_0x2f9e43,null))[_0xe238('0x1b')](function(_0x195579){if(_0x195579){return _0x195579['removeTags'](_0x595bc4[_0xe238('0x27')][_0xe238('0x4c')]);}})[_0xe238('0x1b')](respondWithStatusCode(_0x2f9e43,null))[_0xe238('0x35')](handleError(_0x2f9e43,null));};exports[_0xe238('0x52')]=function(_0x35e266,_0x53698f){var _0x490019=moment()[_0xe238('0x53')]()[_0xe238('0x54')]();var _0x430ba2=path['join'](config[_0xe238('0x55')],'server',_0xe238('0x56'),_0xe238('0x57'));var _0x160286=path[_0xe238('0x58')](config[_0xe238('0x55')],_0xe238('0x59'),_0xe238('0x56'),_0xe238('0x5a'));var _0x267024=path[_0xe238('0x58')](_0x430ba2,_0x490019);var _0x5ab590=util['format']('transcript-%d-%s.zip',_0x35e266[_0xe238('0x29')]['id'],_0x490019);var _0x2432bb=path[_0xe238('0x58')](_0x430ba2,_0x5ab590);var _0x3cdff2=[];_0x3cdff2[_0xe238('0x5b')]({'model':db[_0xe238('0x5c')],'as':_0xe238('0x5c'),'attributes':['id',_0xe238('0x5d')],'raw':!![]});_0x3cdff2['push']({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xe238('0x5e'),'lastName'],'raw':!![]});if(_0x35e266[_0xe238('0x27')][_0xe238('0x5a')]){_0x3cdff2[_0xe238('0x5b')]({'model':db['Attachment'],'as':_0xe238('0x5f'),'raw':!![]});}var _0xc9ab1b=[{'model':db['WhatsappMessage'],'as':_0xe238('0x60'),'attributes':['id',_0xe238('0x37'),'createdAt',_0xe238('0x61'),_0xe238('0x62'),_0xe238('0x63')],'include':_0x3cdff2}];_0xc9ab1b[_0xe238('0x5b')]({'model':db[_0xe238('0x64')],'as':_0xe238('0x65'),'attributes':['id',_0xe238('0x1e')]});_0xc9ab1b[_0xe238('0x5b')]({'model':db[_0xe238('0x5c')],'as':_0xe238('0x66'),'attributes':['id','fullname']});return db['WhatsappInteraction'][_0xe238('0x34')]({'where':{'id':_0x35e266['params']['id']},'include':_0xc9ab1b})['then'](handleEntityNotFound(_0x53698f,null))[_0xe238('0x1b')](function(_0xed3d55){if(_0xed3d55){var _0x1d9569=_0xed3d55[_0xe238('0x67')]({'plain':!![]});fs[_0xe238('0x68')](_0x267024);var _0x46778c={'channel':_0xe238('0x69'),'account':_0x1d9569[_0xe238('0x65')][_0xe238('0x1e')],'agent':_0x1d9569[_0xe238('0x66')]?_0x1d9569[_0xe238('0x66')][_0xe238('0x5d')]:_0xe238('0x6a'),'createdAt':moment(_0x1d9569[_0xe238('0x6b')])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')](),'closedAt':_0x1d9569[_0xe238('0x6d')]?moment(_0x1d9569['closedAt'])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')]():'','disposition':_0x1d9569['disposition'],'messages':_(_0x1d9569['Messages'])[_0xe238('0x44')]({'secret':![]})[_0xe238('0x21')](function(_0x1f4023){if(_0x1f4023[_0xe238('0x5f')]){var _0x2fb18f=path[_0xe238('0x58')](_0x160286,_0x1f4023[_0xe238('0x5f')]['basename']);if(fs[_0xe238('0x6e')](_0x2fb18f)){fs[_0xe238('0x6f')](_0x2fb18f)[_0xe238('0x70')](fs[_0xe238('0x71')](path[_0xe238('0x58')](_0x267024,_0x1f4023[_0xe238('0x5f')]['basename'])));}}return{'date':moment(_0x1f4023[_0xe238('0x6b')])[_0xe238('0x6c')](_0xe238('0x47'))[_0xe238('0x54')](),'sender':_0x1f4023['direction']===_0xe238('0x72')?_0x1f4023['User']?_0x1f4023[_0xe238('0x5c')][_0xe238('0x5d')]:_0xe238('0x73'):_0x1f4023['Contact'][_0xe238('0x5e')]+(_0x1f4023['Contact'][_0xe238('0x74')]?'\x20'+_0x1f4023[_0xe238('0x75')][_0xe238('0x74')]:''),'body':_0x1f4023['Attachment']?_0x1f4023[_0xe238('0x5f')][_0xe238('0x76')]:_0x1f4023[_0xe238('0x37')],'direction':_0x1f4023[_0xe238('0x61')]===_0xe238('0x72')?'A':'C','secret':_0x1f4023[_0xe238('0x62')],'read':_0x1f4023[_0xe238('0x63')],'attachment':_0x1f4023[_0xe238('0x5f')]};})[_0xe238('0x77')]()};return ejs[_0xe238('0x78')](path['join'](config[_0xe238('0x55')],_0xe238('0x59'),_0xe238('0x79'),'downloadInteraction.ejs'),{'interaction':_0x46778c})[_0xe238('0x1b')](function(_0x4a0e96){var _0x2ce3e5=path[_0xe238('0x58')](_0x267024,_0xe238('0x7a')+_0x1d9569['id']+'-'+_0x490019+_0xe238('0x7b'));var _0x90097b={'path':_0x2ce3e5,'channel':_0xe238('0x69'),'interactionId':_0x1d9569['id']};return pdf[_0xe238('0x7c')](_0x4a0e96,_0x90097b);})[_0xe238('0x1b')](function(){return new BPromise(function(_0xb2b743,_0x90055f){zipdir(_0x267024,{'saveTo':_0x2432bb},function(_0xd6b904,_0x16e856){if(_0xd6b904)return _0x90055f(_0xd6b904);return _0xb2b743(_0x16e856);});})[_0xe238('0x1b')](function(){return new BPromise(function(_0x514791,_0x1275f8){rimraf(_0x267024,function(_0x20b8b5){if(_0x20b8b5)_0x1275f8(_0x20b8b5);return _0x514791();});});})[_0xe238('0x1b')](function(){return _0x53698f['download'](_0x2432bb,_0x5ab590,function(_0x5908c0){if(_0x5908c0){console[_0xe238('0x7d')](_0xe238('0x7e'),_0x5908c0);}else{fs[_0xe238('0x7f')](_0x2432bb);}});});});}else{return _0x53698f[_0xe238('0x10')](0xc8);}})[_0xe238('0x35')](handleError(_0x53698f,null));};
\ No newline at end of file
+var _0x4808=['filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','rows','addTags','setTags','spread','Tag','findAll','color','emit','whatsappInteractionTags:save','removeTags','toString','join','root','files','tmp','server','attachments','format','push','User','CmContact','Contact','firstName','Attachment','Messages','createdAt','secret','read','WhatsappAccount','Account','fullname','get','mkdirSync','Whatsapp','Owner','N.A.','closed','disposition','createReadStream','pipe','createWriteStream','basename','out','System','lastName','direction','value','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','download','log','err','zip-dir','bluebird','util','path','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','./whatsappInteraction.socket','sendStatus','status','json','offset','limit','undefined','count','set','update','then','destroy','end','error','name','send','WhatsappInteraction','rawAttributes','whatsapp','user','catch','show','keys','query','intersection','model','fields','length','attributes','include','merge','create','body','find','params','describe','addMessage','WhatsappMessage','omit','ids','getMessages','filters','hasOwnProperty','nolimit','order','sort','where','pick','WhatsappInteractionId'];(function(_0x435978,_0x51385e){var _0x37c509=function(_0x42faec){while(--_0x42faec){_0x435978['push'](_0x435978['shift']());}};_0x37c509(++_0x51385e);}(_0x4808,0xb7));var _0x8480=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x4808[_0x1694f5];return _0x5b4321;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x8480('0x0'));var moment=require('moment');var BPromise=require(_0x8480('0x1'));var util=require(_0x8480('0x2'));var path=require(_0x8480('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x8480('0x4'));var interaction=require(_0x8480('0x5'));var qs=require(_0x8480('0x6'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x8480('0x7'));var config=require(_0x8480('0x8'));var db=require(_0x8480('0x9'))['db'];config[_0x8480('0xa')]=_['defaults'](config[_0x8480('0xa')],{'host':_0x8480('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8480('0xa')]));require(_0x8480('0xc'))['register'](socket);function respondWithStatusCode(_0x556b64,_0x148fe4){_0x148fe4=_0x148fe4||0xcc;return function(_0xe167f7){if(_0xe167f7){return _0x556b64[_0x8480('0xd')](_0x148fe4);}return _0x556b64[_0x8480('0xe')](_0x148fe4)['end']();};}function respondWithResult(_0x520093,_0x1e0bee){_0x1e0bee=_0x1e0bee||0xc8;return function(_0x140faa){if(_0x140faa){return _0x520093[_0x8480('0xe')](_0x1e0bee)[_0x8480('0xf')](_0x140faa);}};}function respondWithFilteredResult(_0x5ad05f,_0x48c520){return function(_0x4d7c21){if(_0x4d7c21){var _0x159dfd=typeof _0x48c520[_0x8480('0x10')]==='undefined'&&typeof _0x48c520[_0x8480('0x11')]===_0x8480('0x12');var _0x4a448c=_0x4d7c21[_0x8480('0x13')];var _0x317bbe=_0x159dfd?0x0:_0x48c520[_0x8480('0x10')];var _0x28a2ac=_0x159dfd?_0x4d7c21[_0x8480('0x13')]:_0x48c520['offset']+_0x48c520[_0x8480('0x11')];var _0x4c7afe;if(_0x28a2ac>=_0x4a448c){_0x28a2ac=_0x4a448c;_0x4c7afe=0xc8;}else{_0x4c7afe=0xce;}_0x5ad05f[_0x8480('0xe')](_0x4c7afe);return _0x5ad05f[_0x8480('0x14')]('Content-Range',_0x317bbe+'-'+_0x28a2ac+'/'+_0x4a448c)[_0x8480('0xf')](_0x4d7c21);}return null;};}function saveUpdates(_0x45f73b){return function(_0x20b8e5){if(_0x20b8e5){return _0x20b8e5[_0x8480('0x15')](_0x45f73b)[_0x8480('0x16')](function(_0x4752b5){return _0x4752b5;});}return null;};}function removeEntity(_0xb519d5){return function(_0x1a773f){if(_0x1a773f){return _0x1a773f[_0x8480('0x17')]()['then'](function(){_0xb519d5['status'](0xcc)[_0x8480('0x18')]();});}};}function handleEntityNotFound(_0x3b5b9c){return function(_0x274a24){if(!_0x274a24){_0x3b5b9c[_0x8480('0xd')](0x194);}return _0x274a24;};}function handleError(_0x588615,_0x22d022){_0x22d022=_0x22d022||0x1f4;return function(_0x9d5286){logger[_0x8480('0x19')](_0x9d5286['stack']);if(_0x9d5286[_0x8480('0x1a')]){delete _0x9d5286['name'];}_0x588615[_0x8480('0xe')](_0x22d022)[_0x8480('0x1b')](_0x9d5286);};}exports['index']=function(_0x520aac,_0xfa833a){var _0x2f8b87={};var _0x1794b2=_['map'](db[_0x8480('0x1c')][_0x8480('0x1d')],function(_0x1459b9){return{'name':_0x1459b9['fieldName'],'type':_0x1459b9['type']['key']};});_0x2f8b87=qs['getOptions'](_0x1794b2,_0x520aac);return interaction['findAll'](_0x8480('0x1e'),_0x520aac['query'],_0x520aac[_0x8480('0x1f')],_0x2f8b87,_0x1794b2)['then'](respondWithFilteredResult(_0xfa833a,_0x2f8b87))[_0x8480('0x20')](handleError(_0xfa833a,null));};exports[_0x8480('0x21')]=function(_0x140fd4,_0x2851f3){var _0xb992c8={'raw':![],'where':{'id':_0x140fd4['params']['id']}},_0x2e28db={};_0x2e28db['model']=_[_0x8480('0x22')](db[_0x8480('0x1c')][_0x8480('0x1d')]);_0x2e28db[_0x8480('0x23')]=_[_0x8480('0x22')](_0x140fd4[_0x8480('0x23')]);_0x2e28db['filters']=_[_0x8480('0x24')](_0x2e28db['model'],_0x2e28db['query']);_0xb992c8['attributes']=_[_0x8480('0x24')](_0x2e28db[_0x8480('0x25')],qs[_0x8480('0x26')](_0x140fd4[_0x8480('0x23')][_0x8480('0x26')]));_0xb992c8['attributes']=_0xb992c8['attributes'][_0x8480('0x27')]?_0xb992c8[_0x8480('0x28')]:_0x2e28db[_0x8480('0x25')];if(_0x140fd4[_0x8480('0x23')]['includeAll']){_0xb992c8[_0x8480('0x29')]=[{'all':!![]}];}_0xb992c8=_[_0x8480('0x2a')]({},_0xb992c8,_0x140fd4['options']);return db[_0x8480('0x1c')]['find'](_0xb992c8)['then'](handleEntityNotFound(_0x2851f3,null))['then'](respondWithResult(_0x2851f3,null))[_0x8480('0x20')](handleError(_0x2851f3,null));};exports[_0x8480('0x2b')]=function(_0x3e5fbd,_0x143cee){return db[_0x8480('0x1c')]['create'](_0x3e5fbd[_0x8480('0x2c')],{})[_0x8480('0x16')](respondWithResult(_0x143cee,0xc9))[_0x8480('0x20')](handleError(_0x143cee,null));};exports[_0x8480('0x15')]=function(_0x10d851,_0x583a18){if(_0x10d851['body']['id']){delete _0x10d851[_0x8480('0x2c')]['id'];}return db[_0x8480('0x1c')][_0x8480('0x2d')]({'where':{'id':_0x10d851[_0x8480('0x2e')]['id']}})[_0x8480('0x16')](handleEntityNotFound(_0x583a18,null))[_0x8480('0x16')](saveUpdates(_0x10d851[_0x8480('0x2c')],null))[_0x8480('0x16')](respondWithResult(_0x583a18,null))[_0x8480('0x20')](handleError(_0x583a18,null));};exports[_0x8480('0x17')]=function(_0x116bb6,_0x111f60){return db[_0x8480('0x1c')][_0x8480('0x2d')]({'where':{'id':_0x116bb6[_0x8480('0x2e')]['id']}})['then'](handleEntityNotFound(_0x111f60,null))[_0x8480('0x16')](removeEntity(_0x111f60,null))[_0x8480('0x20')](handleError(_0x111f60,null));};exports[_0x8480('0x2f')]=function(_0xc7cf5a,_0x3d0152){return db[_0x8480('0x1c')][_0x8480('0x2f')]()['then'](respondWithResult(_0x3d0152,null))[_0x8480('0x20')](handleError(_0x3d0152,null));};exports[_0x8480('0x30')]=function(_0x55b6eb,_0x1afb44){return db[_0x8480('0x31')][_0x8480('0x2d')]({'where':{'id':_0x55b6eb[_0x8480('0x2e')]['id']}})['then'](handleEntityNotFound(_0x1afb44,null))[_0x8480('0x16')](function(_0x1044b9){if(_0x1044b9){return _0x1044b9[_0x8480('0x30')](_0x55b6eb[_0x8480('0x2c')]['ids'],_[_0x8480('0x32')](_0x55b6eb[_0x8480('0x2c')],[_0x8480('0x33'),'id'])||{});}})['then'](respondWithResult(_0x1afb44,null))['catch'](handleError(_0x1afb44,null));};exports[_0x8480('0x34')]=function(_0x55beb5,_0x7927b6){var _0x2ecf2b={'raw':![],'where':{}};var _0x4a22d9={};var _0x4b595f={'count':0x0,'rows':[]};return db[_0x8480('0x1c')]['findOne']({'where':{'id':_0x55beb5[_0x8480('0x2e')]['id']}})[_0x8480('0x16')](handleEntityNotFound(_0x7927b6,null))['then'](function(_0x47033a){if(_0x47033a){_0x4a22d9[_0x8480('0x25')]=_[_0x8480('0x22')](db['WhatsappMessage'][_0x8480('0x1d')]);_0x4a22d9[_0x8480('0x23')]=_[_0x8480('0x22')](_0x55beb5[_0x8480('0x23')]);_0x4a22d9[_0x8480('0x35')]=_[_0x8480('0x24')](_0x4a22d9['model'],_0x4a22d9[_0x8480('0x23')]);_0x2ecf2b[_0x8480('0x28')]=_[_0x8480('0x24')](_0x4a22d9['model'],qs[_0x8480('0x26')](_0x55beb5[_0x8480('0x23')][_0x8480('0x26')]));_0x2ecf2b[_0x8480('0x28')]=_0x2ecf2b[_0x8480('0x28')][_0x8480('0x27')]?_0x2ecf2b[_0x8480('0x28')]:_0x4a22d9[_0x8480('0x25')];if(!_0x55beb5[_0x8480('0x23')][_0x8480('0x36')](_0x8480('0x37'))){_0x2ecf2b['limit']=qs[_0x8480('0x11')](_0x55beb5['query'][_0x8480('0x11')]);_0x2ecf2b[_0x8480('0x10')]=qs[_0x8480('0x10')](_0x55beb5[_0x8480('0x23')][_0x8480('0x10')]);}_0x2ecf2b[_0x8480('0x38')]=qs[_0x8480('0x39')](_0x55beb5[_0x8480('0x23')]['sort']);_0x2ecf2b[_0x8480('0x3a')]=qs[_0x8480('0x35')](_[_0x8480('0x3b')](_0x55beb5[_0x8480('0x23')],_0x4a22d9[_0x8480('0x35')]));_0x2ecf2b[_0x8480('0x3a')][_0x8480('0x3c')]=_0x47033a['id'];if(_0x55beb5[_0x8480('0x23')][_0x8480('0x3d')]){_0x2ecf2b[_0x8480('0x3a')]=_['merge'](_0x2ecf2b[_0x8480('0x3a')],{'$or':_[_0x8480('0x3e')](_0x2ecf2b['attributes'],function(_0x47a9ac){var _0x2aad37={};_0x2aad37[_0x47a9ac]={'$like':'%'+_0x55beb5[_0x8480('0x23')]['filter']+'%'};return _0x2aad37;})});}if(_0x55beb5[_0x8480('0x23')][_0x8480('0x3f')]){var _0x10bc62=_0x55beb5[_0x8480('0x23')][_0x8480('0x3f')][_0x8480('0x40')](',');var _0x1fe316={};_0x1fe316[_0x10bc62[0x0]]={'$gte':moment(_0x10bc62[0x1])['format'](_0x8480('0x41'))};_0x2ecf2b['where']=_['merge'](_0x2ecf2b[_0x8480('0x3a')],_0x1fe316);}_0x2ecf2b=_[_0x8480('0x2a')]({},_0x2ecf2b,_0x55beb5[_0x8480('0x42')]);return db[_0x8480('0x31')][_0x8480('0x13')]({'where':_0x2ecf2b[_0x8480('0x3a')]})[_0x8480('0x16')](function(_0x45465c){_0x4b595f['count']=_0x45465c;if(_0x55beb5['query'][_0x8480('0x43')]){_0x2ecf2b[_0x8480('0x29')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x2ecf2b);})['then'](function(_0x5ac958){_0x4b595f[_0x8480('0x44')]=_0x5ac958;return _0x4b595f;});}})[_0x8480('0x16')](respondWithFilteredResult(_0x7927b6,_0x2ecf2b))[_0x8480('0x20')](handleError(_0x7927b6,null));};exports[_0x8480('0x45')]=function(_0x4f9f49,_0x2ec3a6){return db[_0x8480('0x1c')]['find']({'where':{'id':_0x4f9f49[_0x8480('0x2e')]['id']}})[_0x8480('0x16')](handleEntityNotFound(_0x2ec3a6,null))['then'](function(_0x3ce460){if(_0x3ce460){return _0x3ce460[_0x8480('0x46')](_0x4f9f49['body'][_0x8480('0x33')],_[_0x8480('0x32')](_0x4f9f49[_0x8480('0x2c')],[_0x8480('0x33'),'id'])||{})[_0x8480('0x47')](function(){return db[_0x8480('0x48')][_0x8480('0x49')]({'attributes':['id',_0x8480('0x1a'),_0x8480('0x4a')],'where':{'id':_0x4f9f49[_0x8480('0x2c')][_0x8480('0x33')]}});})[_0x8480('0x16')](function(_0x4062b8){socket[_0x8480('0x4b')](_0x8480('0x4c'),{'id':Number(_0x4f9f49[_0x8480('0x2e')]['id']),'tags':_0x4062b8||[]});return{'id':Number(_0x4f9f49[_0x8480('0x2e')]['id']),'tags':_0x4062b8||[]};});}})['then'](respondWithResult(_0x2ec3a6,null))[_0x8480('0x20')](handleError(_0x2ec3a6,null));};exports[_0x8480('0x4d')]=function(_0x451d1e,_0x6ce647){return db['WhatsappInteraction'][_0x8480('0x2d')]({'where':{'id':_0x451d1e[_0x8480('0x2e')]['id']}})[_0x8480('0x16')](handleEntityNotFound(_0x6ce647,null))[_0x8480('0x16')](function(_0x27b084){if(_0x27b084){return _0x27b084[_0x8480('0x4d')](_0x451d1e[_0x8480('0x23')][_0x8480('0x33')]);}})[_0x8480('0x16')](respondWithStatusCode(_0x6ce647,null))[_0x8480('0x20')](handleError(_0x6ce647,null));};exports['download']=function(_0x15f6fb,_0xb3b8fc){var _0x3b50ed=moment()['unix']()[_0x8480('0x4e')]();var _0x778955=path[_0x8480('0x4f')](config[_0x8480('0x50')],'server',_0x8480('0x51'),_0x8480('0x52'));var _0x499f4c=path[_0x8480('0x4f')](config[_0x8480('0x50')],_0x8480('0x53'),'files',_0x8480('0x54'));var _0x2883e2=path[_0x8480('0x4f')](_0x778955,_0x3b50ed);var _0x2fe06c=util[_0x8480('0x55')]('transcript-%d-%s.zip',_0x15f6fb[_0x8480('0x2e')]['id'],_0x3b50ed);var _0x1de4de=path[_0x8480('0x4f')](_0x778955,_0x2fe06c);var _0x7f0a46=[];_0x7f0a46[_0x8480('0x56')]({'model':db[_0x8480('0x57')],'as':_0x8480('0x57'),'attributes':['id','fullname'],'raw':!![]});_0x7f0a46[_0x8480('0x56')]({'model':db[_0x8480('0x58')],'as':_0x8480('0x59'),'attributes':['id',_0x8480('0x5a'),'lastName'],'raw':!![]});if(_0x15f6fb[_0x8480('0x23')][_0x8480('0x54')]){_0x7f0a46[_0x8480('0x56')]({'model':db[_0x8480('0x5b')],'as':_0x8480('0x5b'),'raw':!![]});}var _0x58a8d9=[{'model':db[_0x8480('0x31')],'as':_0x8480('0x5c'),'attributes':['id','body',_0x8480('0x5d'),'direction',_0x8480('0x5e'),_0x8480('0x5f')],'include':_0x7f0a46}];_0x58a8d9[_0x8480('0x56')]({'model':db[_0x8480('0x60')],'as':_0x8480('0x61'),'attributes':['id',_0x8480('0x1a')]});_0x58a8d9[_0x8480('0x56')]({'model':db[_0x8480('0x57')],'as':'Owner','attributes':['id',_0x8480('0x62')]});return db['WhatsappInteraction'][_0x8480('0x2d')]({'where':{'id':_0x15f6fb[_0x8480('0x2e')]['id']},'include':_0x58a8d9})[_0x8480('0x16')](handleEntityNotFound(_0xb3b8fc,null))[_0x8480('0x16')](function(_0x55406e){if(_0x55406e){var _0x4a960e=_0x55406e[_0x8480('0x63')]({'plain':!![]});fs[_0x8480('0x64')](_0x2883e2);var _0x7353ad={'channel':_0x8480('0x65'),'account':_0x4a960e[_0x8480('0x61')][_0x8480('0x1a')],'agent':_0x4a960e[_0x8480('0x66')]?_0x4a960e[_0x8480('0x66')]['fullname']:_0x8480('0x67'),'createdAt':moment(_0x4a960e['createdAt'])[_0x8480('0x55')](_0x8480('0x41'))[_0x8480('0x4e')](),'closedAt':_0x4a960e[_0x8480('0x68')]?moment(_0x4a960e['closedAt'])[_0x8480('0x55')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8480('0x4e')]():'','disposition':_0x4a960e[_0x8480('0x69')],'messages':_(_0x4a960e[_0x8480('0x5c')])['filter']({'secret':![]})[_0x8480('0x3e')](function(_0x94b05e){if(_0x94b05e[_0x8480('0x5b')]){var _0x263481=path[_0x8480('0x4f')](_0x499f4c,_0x94b05e[_0x8480('0x5b')]['basename']);if(fs['existsSync'](_0x263481)){fs[_0x8480('0x6a')](_0x263481)[_0x8480('0x6b')](fs[_0x8480('0x6c')](path[_0x8480('0x4f')](_0x2883e2,_0x94b05e[_0x8480('0x5b')][_0x8480('0x6d')])));}}return{'date':moment(_0x94b05e[_0x8480('0x5d')])['format'](_0x8480('0x41'))[_0x8480('0x4e')](),'sender':_0x94b05e['direction']===_0x8480('0x6e')?_0x94b05e['User']?_0x94b05e[_0x8480('0x57')][_0x8480('0x62')]:_0x8480('0x6f'):_0x94b05e['Contact'][_0x8480('0x5a')]+(_0x94b05e[_0x8480('0x59')]['lastName']?'\x20'+_0x94b05e[_0x8480('0x59')][_0x8480('0x70')]:''),'body':_0x94b05e[_0x8480('0x5b')]?_0x94b05e[_0x8480('0x5b')]['basename']:_0x94b05e[_0x8480('0x2c')],'direction':_0x94b05e[_0x8480('0x71')]===_0x8480('0x6e')?'A':'C','secret':_0x94b05e[_0x8480('0x5e')],'read':_0x94b05e[_0x8480('0x5f')],'attachment':_0x94b05e[_0x8480('0x5b')]};})[_0x8480('0x72')]()};return ejs[_0x8480('0x73')](path[_0x8480('0x4f')](config['root'],_0x8480('0x53'),_0x8480('0x74'),_0x8480('0x75')),{'interaction':_0x7353ad})[_0x8480('0x16')](function(_0x37f472){var _0x2ae9f3=path['join'](_0x2883e2,'transcript-'+_0x4a960e['id']+'-'+_0x3b50ed+'.pdf');var _0x2c65e7={'path':_0x2ae9f3,'channel':_0x8480('0x65'),'interactionId':_0x4a960e['id']};return pdf[_0x8480('0x76')](_0x37f472,_0x2c65e7);})[_0x8480('0x16')](function(){return new BPromise(function(_0x2f6973,_0x364657){zipdir(_0x2883e2,{'saveTo':_0x1de4de},function(_0x4d07b5,_0x15784b){if(_0x4d07b5)return _0x364657(_0x4d07b5);return _0x2f6973(_0x15784b);});})[_0x8480('0x16')](function(){return new BPromise(function(_0x2fd59d,_0x3f0499){rimraf(_0x2883e2,function(_0x344b6a){if(_0x344b6a)_0x3f0499(_0x344b6a);return _0x2fd59d();});});})[_0x8480('0x16')](function(){return _0xb3b8fc[_0x8480('0x77')](_0x1de4de,_0x2fe06c,function(_0x2e742d){if(_0x2e742d){console[_0x8480('0x78')](_0x8480('0x79'),_0x2e742d);}else{fs['unlinkSync'](_0x1de4de);}});});});}else{return _0xb3b8fc[_0x8480('0xd')](0xc8);}})[_0x8480('0x20')](handleError(_0xb3b8fc,null));};
\ No newline at end of file
index 5447ad7..840d0f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','setDataValue','Users','findAll','then','unreadMessages'];(function(_0x3113d0,_0x3db98f){var _0x12b6f0=function(_0x49f369){while(--_0x49f369){_0x3113d0['push'](_0x3113d0['shift']());}};_0x12b6f0(++_0x3db98f);}(_0x41bb,0xc5));var _0xb41b=function(_0x9bcde0,_0x34e749){_0x9bcde0=_0x9bcde0-0x0;var _0x511f42=_0x41bb[_0x9bcde0];return _0x511f42;};'use strict';var EventEmitter=require(_0xb41b('0x0'));var WhatsappInteraction=require(_0xb41b('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xb41b('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xb41b('0x2')](0x0);var events={'afterCreate':_0xb41b('0x3'),'afterUpdate':_0xb41b('0x4'),'afterDestroy':_0xb41b('0x5')};function emitEvent(_0x4ee21b){return function(_0x12cea3,_0x2c9f9e,_0x2dbaa3){_0x12cea3['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x497242){_0x12cea3[_0xb41b('0x6')](_0xb41b('0x7'),_0x497242['map'](function(_0x13d44e){return{'id':_0x13d44e['id']};}));return WhatsappMessage[_0xb41b('0x8')]({'where':{'WhatsappInteractionId':_0x12cea3['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb41b('0x9')](function(_0xa2aa66){_0x12cea3[_0xb41b('0x6')](_0xb41b('0xa'),_0xa2aa66[_0xb41b('0xb')]);WhatsappInteractionEvents['emit'](_0x4ee21b+':'+_0x12cea3['id'],_0x12cea3);WhatsappInteractionEvents[_0xb41b('0xc')](_0x4ee21b,_0x12cea3);_0x2dbaa3(null);})['catch'](_0x2dbaa3(null));};}for(var e in events){if(events[_0xb41b('0xd')](e)){var event=events[e];WhatsappInteraction[_0xb41b('0xe')](e,emitEvent(event));}}module[_0xb41b('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0xbc8b=['unreadMessages','length','emit','catch','hasOwnProperty','hook','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll'];(function(_0x1e06d8,_0x1255f6){var _0x28cd9d=function(_0x39125d){while(--_0x39125d){_0x1e06d8['push'](_0x1e06d8['shift']());}};_0x28cd9d(++_0x1255f6);}(_0xbc8b,0x16b));var _0xbbc8=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0xbc8b[_0x53b53e];return _0xbb6179;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0xbbc8('0x0'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0xbbc8('0x0'))['db'][_0xbbc8('0x1')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xbbc8('0x2')](0x0);var events={'afterCreate':_0xbbc8('0x3'),'afterUpdate':_0xbbc8('0x4'),'afterDestroy':_0xbbc8('0x5')};function emitEvent(_0x49218a){return function(_0x4177ea,_0x9ae972,_0x15cdc6){_0x4177ea[_0xbbc8('0x6')]({'attributes':['id'],'raw':!![]})[_0xbbc8('0x7')](function(_0x5dee88){_0x4177ea[_0xbbc8('0x8')](_0xbbc8('0x9'),_0x5dee88['map'](function(_0x1997ca){return{'id':_0x1997ca['id']};}));return WhatsappMessage[_0xbbc8('0xa')]({'where':{'WhatsappInteractionId':_0x4177ea['id'],'direction':'in','read':![]},'raw':!![]});})[_0xbbc8('0x7')](function(_0x468ee5){_0x4177ea[_0xbbc8('0x8')](_0xbbc8('0xb'),_0x468ee5[_0xbbc8('0xc')]);WhatsappInteractionEvents[_0xbbc8('0xd')](_0x49218a+':'+_0x4177ea['id'],_0x4177ea);WhatsappInteractionEvents[_0xbbc8('0xd')](_0x49218a,_0x4177ea);_0x15cdc6(null);})[_0xbbc8('0xe')](_0x15cdc6(null));};}for(var e in events){if(events[_0xbbc8('0xf')](e)){var event=events[e];WhatsappInteraction[_0xbbc8('0x10')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index 1c7c742..35000e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5066=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','changed','closed'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0x5066,0x1a3));var _0x6506=function(_0x24b897,_0x38df26){_0x24b897=_0x24b897-0x0;var _0x522698=_0x5066[_0x24b897];return _0x522698;};'use strict';var _=require(_0x6506('0x0'));var util=require(_0x6506('0x1'));var logger=require('../../config/logger')(_0x6506('0x2'));var moment=require('moment');var BPromise=require(_0x6506('0x3'));var rp=require(_0x6506('0x4'));var fs=require('fs');var path=require(_0x6506('0x5'));var rimraf=require(_0x6506('0x6'));var config=require(_0x6506('0x7'));var attributes=require(_0x6506('0x8'));module[_0x6506('0x9')]=function(_0x2e8f02,_0x2ff8be){return _0x2e8f02[_0x6506('0xa')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5ca913,_0x374718,_0x9c5624){if(_0x5ca913[_0x6506('0xb')](_0x6506('0xc'))){_0x5ca913[_0x6506('0xd')]=moment()[_0x6506('0xe')](_0x6506('0xf'));}_0x9c5624(null,_0x5ca913);}}});};
\ No newline at end of file
+var _0x5e68=['bluebird','request-promise','./whatsappInteraction.attributes','exports','WhatsappInteraction','whatsapp_interactions','changed','closed','lodash','util','../../config/logger','api'];(function(_0x4966a7,_0x22121e){var _0x3a1f84=function(_0x4322a6){while(--_0x4322a6){_0x4966a7['push'](_0x4966a7['shift']());}};_0x3a1f84(++_0x22121e);}(_0x5e68,0x140));var _0x85e6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5e68[_0x432682];return _0x463d05;};'use strict';var _=require(_0x85e6('0x0'));var util=require(_0x85e6('0x1'));var logger=require(_0x85e6('0x2'))(_0x85e6('0x3'));var moment=require('moment');var BPromise=require(_0x85e6('0x4'));var rp=require(_0x85e6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x85e6('0x6'));module[_0x85e6('0x7')]=function(_0x2fa28a,_0x3df397){return _0x2fa28a['define'](_0x85e6('0x8'),attributes,{'tableName':_0x85e6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x37229e,_0x3e7821,_0x5120db){if(_0x37229e[_0x85e6('0xa')](_0x85e6('0xb'))){_0x37229e['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x5120db(null,_0x37229e);}}});};
\ No newline at end of file
index b4062e7..6878ee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3836=['http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','info','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','attributes','limit','then','find','where','addTags','ids','spread','AddTags','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x3836,0x160));var _0x6383=function(_0x4c41b3,_0x20d9b0){_0x4c41b3=_0x4c41b3-0x0;var _0x46e316=_0x3836[_0x4c41b3];return _0x46e316;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6383('0x0'));var BPromise=require(_0x6383('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6383('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x6383('0x3'));var logger=require(_0x6383('0x4'))(_0x6383('0x5'));var config=require(_0x6383('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6383('0x7')][_0x6383('0x8')]({'port':0x232a});config[_0x6383('0x9')]=_[_0x6383('0xa')](config['redis'],{'host':_0x6383('0xb'),'port':0x18eb});var socket=require(_0x6383('0xc'))(new Redis(config['redis']));require(_0x6383('0xd'))['register'](socket);function respondWithRpcPromise(_0x3f23d0,_0x1b7738,_0x25646b){return new BPromise(function(_0x350d6a,_0x238e1f){return client['request'](_0x3f23d0,_0x25646b)['then'](function(_0x3c188e){logger[_0x6383('0xe')]('WhatsappInteraction,\x20%s,\x20%s',_0x1b7738,'request\x20sent');logger[_0x6383('0xf')](_0x6383('0x10'),_0x1b7738,_0x6383('0x11'),JSON[_0x6383('0x12')](_0x3c188e));if(_0x3c188e[_0x6383('0x13')]){if(_0x3c188e['error'][_0x6383('0x14')]===0x1f4){logger[_0x6383('0x13')](_0x6383('0x15'),_0x1b7738,_0x3c188e['error'][_0x6383('0x16')]);return _0x238e1f(_0x3c188e[_0x6383('0x13')]['message']);}logger['error'](_0x6383('0x15'),_0x1b7738,_0x3c188e['error']['message']);return _0x350d6a(_0x3c188e[_0x6383('0x13')]['message']);}else{logger[_0x6383('0xe')](_0x6383('0x15'),_0x1b7738,_0x6383('0x11'));_0x350d6a(_0x3c188e[_0x6383('0x17')][_0x6383('0x16')]);}})[_0x6383('0x18')](function(_0x5bef79){logger['error'](_0x6383('0x15'),_0x1b7738,_0x5bef79);_0x238e1f(_0x5bef79);});});}exports[_0x6383('0x19')]=function(_0x5941dd){var _0x3dac59=this;return new Promise(function(_0xccb2a0,_0x2e96b0){return db[_0x6383('0x1a')][_0x6383('0x1b')](_0x5941dd[_0x6383('0x1c')],{'raw':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')]['where']||null:null,'attributes':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x1f')]||null:null,'limit':_0x5941dd[_0x6383('0x1d')]?_0x5941dd[_0x6383('0x1d')][_0x6383('0x20')]||null:null})[_0x6383('0x21')](function(_0x42b75f){logger['info'](_0x6383('0x19'),_0x5941dd);logger[_0x6383('0xf')](_0x6383('0x19'),_0x5941dd,JSON[_0x6383('0x12')](_0x42b75f));_0xccb2a0(_0x42b75f);})[_0x6383('0x18')](function(_0x50d887){logger[_0x6383('0x13')](_0x6383('0x19'),_0x50d887[_0x6383('0x16')],_0x5941dd);_0x2e96b0(_0x3dac59[_0x6383('0x13')](0x1f4,_0x50d887['message']));});});};exports['AddTagsToWhatsappInteraction']=function(_0x51956e){return new Promise(function(_0x4137bd,_0x15ea7a){return db[_0x6383('0x1a')][_0x6383('0x22')]({'where':_0x51956e[_0x6383('0x1d')]?_0x51956e['options'][_0x6383('0x23')]||null:null})[_0x6383('0x21')](function(_0x5b38a1){if(_0x5b38a1){return _0x5b38a1[_0x6383('0x24')](_0x51956e[_0x6383('0x1c')][_0x6383('0x25')],_['omit'](_0x51956e[_0x6383('0x1c')],[_0x6383('0x25'),'id'])||{});}})[_0x6383('0x26')](function(_0x1142f9){logger[_0x6383('0xe')](_0x6383('0x27'),_0x51956e);logger['debug'](_0x6383('0x27'),_0x51956e,JSON[_0x6383('0x12')](_0x1142f9));_0x4137bd(_0x1142f9);})[_0x6383('0x18')](function(_0x3c73d6){logger[_0x6383('0x13')](_0x6383('0x27'),_0x3c73d6['message'],_0x51956e);_0x15ea7a(_this['error'](0x1f4,_0x3c73d6[_0x6383('0x16')]));});});};
\ No newline at end of file
+var _0x630f=['request','then','info','WhatsappInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','WhatsappInteraction','update','body','options','raw','where','limit','UpdateWhatsappInteraction','catch','AddTagsToWhatsappInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','register'];(function(_0x21b706,_0x1022f4){var _0x13b94a=function(_0x3116da){while(--_0x3116da){_0x21b706['push'](_0x21b706['shift']());}};_0x13b94a(++_0x1022f4);}(_0x630f,0x9e));var _0xf630=function(_0x5f2d6b,_0x2fe307){_0x5f2d6b=_0x5f2d6b-0x0;var _0x46a166=_0x630f[_0x5f2d6b];return _0x46a166;};'use strict';var _=require(_0xf630('0x0'));var util=require(_0xf630('0x1'));var moment=require(_0xf630('0x2'));var BPromise=require('bluebird');var rs=require(_0xf630('0x3'));var fs=require('fs');var Redis=require(_0xf630('0x4'));var db=require(_0xf630('0x5'))['db'];var utils=require(_0xf630('0x6'));var logger=require(_0xf630('0x7'))(_0xf630('0x8'));var config=require(_0xf630('0x9'));var jayson=require(_0xf630('0xa'));var client=jayson[_0xf630('0xb')][_0xf630('0xc')]({'port':0x232a});config[_0xf630('0xd')]=_[_0xf630('0xe')](config[_0xf630('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xf630('0xf'))(new Redis(config['redis']));require(_0xf630('0x10'))[_0xf630('0x11')](socket);function respondWithRpcPromise(_0x175489,_0x25b68e,_0x1d1b4e){return new BPromise(function(_0x3d3b69,_0x3e0dfb){return client[_0xf630('0x12')](_0x175489,_0x1d1b4e)[_0xf630('0x13')](function(_0x4607bc){logger[_0xf630('0x14')](_0xf630('0x15'),_0x25b68e,'request\x20sent');logger[_0xf630('0x16')]('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x25b68e,_0xf630('0x17'),JSON[_0xf630('0x18')](_0x4607bc));if(_0x4607bc[_0xf630('0x19')]){if(_0x4607bc[_0xf630('0x19')][_0xf630('0x1a')]===0x1f4){logger[_0xf630('0x19')](_0xf630('0x15'),_0x25b68e,_0x4607bc['error']['message']);return _0x3e0dfb(_0x4607bc[_0xf630('0x19')][_0xf630('0x1b')]);}logger[_0xf630('0x19')](_0xf630('0x15'),_0x25b68e,_0x4607bc[_0xf630('0x19')]['message']);return _0x3d3b69(_0x4607bc['error'][_0xf630('0x1b')]);}else{logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x25b68e,_0xf630('0x17'));_0x3d3b69(_0x4607bc[_0xf630('0x1c')][_0xf630('0x1b')]);}})['catch'](function(_0x2ed681){logger[_0xf630('0x19')](_0xf630('0x15'),_0x25b68e,_0x2ed681);_0x3e0dfb(_0x2ed681);});});}exports['UpdateWhatsappInteraction']=function(_0x516983){var _0x43d8fb=this;return new Promise(function(_0x450a7f,_0x34fd27){return db[_0xf630('0x1d')][_0xf630('0x1e')](_0x516983[_0xf630('0x1f')],{'raw':_0x516983[_0xf630('0x20')]?_0x516983[_0xf630('0x20')][_0xf630('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x516983[_0xf630('0x20')]?_0x516983['options'][_0xf630('0x22')]||null:null,'attributes':_0x516983[_0xf630('0x20')]?_0x516983[_0xf630('0x20')]['attributes']||null:null,'limit':_0x516983[_0xf630('0x20')]?_0x516983['options'][_0xf630('0x23')]||null:null})[_0xf630('0x13')](function(_0x52f5dc){logger['info'](_0xf630('0x24'),_0x516983);logger['debug'](_0xf630('0x24'),_0x516983,JSON['stringify'](_0x52f5dc));_0x450a7f(_0x52f5dc);})[_0xf630('0x25')](function(_0x20f503){logger[_0xf630('0x19')](_0xf630('0x24'),_0x20f503[_0xf630('0x1b')],_0x516983);_0x34fd27(_0x43d8fb[_0xf630('0x19')](0x1f4,_0x20f503[_0xf630('0x1b')]));});});};exports[_0xf630('0x26')]=function(_0x5183df){return new Promise(function(_0x543ead,_0x5b42d2){return db['WhatsappInteraction'][_0xf630('0x27')]({'where':_0x5183df['options']?_0x5183df['options'][_0xf630('0x22')]||null:null})[_0xf630('0x13')](function(_0x3a8ab8){if(_0x3a8ab8){return _0x3a8ab8[_0xf630('0x28')](_0x5183df[_0xf630('0x1f')][_0xf630('0x29')],_[_0xf630('0x2a')](_0x5183df[_0xf630('0x1f')],[_0xf630('0x29'),'id'])||{});}})['spread'](function(_0x5b6fa1){logger[_0xf630('0x14')](_0xf630('0x2b'),_0x5183df);logger['debug'](_0xf630('0x2b'),_0x5183df,JSON[_0xf630('0x18')](_0x5b6fa1));_0x543ead(_0x5b6fa1);})[_0xf630('0x25')](function(_0x164055){logger[_0xf630('0x19')](_0xf630('0x2b'),_0x164055['message'],_0x5183df);_0x5b42d2(_this[_0xf630('0x19')](0x1f4,_0x164055[_0xf630('0x1b')]));});});};
\ No newline at end of file
index 57712ab..3ea4bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x433a=['remove','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x4ded65,_0xc8d7c1){var _0x5864fb=function(_0x40df9d){while(--_0x40df9d){_0x4ded65['push'](_0x4ded65['shift']());}};_0x5864fb(++_0xc8d7c1);}(_0x433a,0x9f));var _0xa433=function(_0x39b118,_0x40a0fc){_0x39b118=_0x39b118-0x0;var _0x393691=_0x433a[_0x39b118];return _0x393691;};'use strict';var WhatsappInteractionEvents=require(_0xa433('0x0'));var events=['save',_0xa433('0x1'),'update'];function createListener(_0x47c1a5,_0x3bdfb4){return function(_0x41c352){_0x3bdfb4['emit'](_0x47c1a5,_0x41c352);};}function removeListener(_0x40da03,_0xbb576e){return function(){WhatsappInteractionEvents['removeListener'](_0x40da03,_0xbb576e);};}exports[_0xa433('0x2')]=function(_0x1dad6a){for(var _0x2f2afa=0x0,_0x2ca6a1=events[_0xa433('0x3')];_0x2f2afa<_0x2ca6a1;_0x2f2afa++){var _0x332bd0=events[_0x2f2afa];var _0x2ed0b1=createListener(_0xa433('0x4')+_0x332bd0,_0x1dad6a);WhatsappInteractionEvents['on'](_0x332bd0,_0x2ed0b1);}};
\ No newline at end of file
+var _0xe193=['save','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe193,0x1e9));var _0x3e19=function(_0x2552b0,_0x25eff0){_0x2552b0=_0x2552b0-0x0;var _0x4571d9=_0xe193[_0x2552b0];return _0x4571d9;};'use strict';var WhatsappInteractionEvents=require(_0x3e19('0x0'));var events=[_0x3e19('0x1'),'remove','update'];function createListener(_0x2b5282,_0x494299){return function(_0x225f88){_0x494299['emit'](_0x2b5282,_0x225f88);};}function removeListener(_0x26b72a,_0x4fe26e){return function(){WhatsappInteractionEvents['removeListener'](_0x26b72a,_0x4fe26e);};}exports[_0x3e19('0x2')]=function(_0x1c4064){for(var _0x3e5904=0x0,_0x8135fa=events[_0x3e19('0x3')];_0x3e5904<_0x8135fa;_0x3e5904++){var _0x53d8ae=events[_0x3e5904];var _0x28ceed=createListener(_0x3e19('0x4')+_0x53d8ae,_0x1c4064);WhatsappInteractionEvents['on'](_0x53d8ae,_0x28ceed);}};
\ No newline at end of file
index ebf84e4..8830a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd609=['../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x2e7560,_0x48cd8f){var _0x57a2be=function(_0xfc4df3){while(--_0xfc4df3){_0x2e7560['push'](_0x2e7560['shift']());}};_0x57a2be(++_0x48cd8f);}(_0xd609,0xe2));var _0x9d60=function(_0x1b563d,_0x549ed0){_0x1b563d=_0x1b563d-0x0;var _0x578f76=_0xd609[_0x1b563d];return _0x578f76;};'use strict';var multer=require(_0x9d60('0x0'));var util=require('util');var path=require(_0x9d60('0x1'));var timeout=require(_0x9d60('0x2'));var express=require(_0x9d60('0x3'));var router=express[_0x9d60('0x4')]();var fs_extra=require(_0x9d60('0x5'));var auth=require(_0x9d60('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9d60('0x7'));var controller=require('./whatsappMessage.controller');router['get']('/',auth[_0x9d60('0x8')](),controller[_0x9d60('0x9')]);router[_0x9d60('0xa')](_0x9d60('0xb'),auth['isAuthenticated'](),controller[_0x9d60('0xc')]);router[_0x9d60('0xa')](_0x9d60('0xd'),auth['isAuthenticated'](),controller[_0x9d60('0xe')]);router[_0x9d60('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9d60('0x10')](_0x9d60('0x11'),_0x9d60('0x12')),controller[_0x9d60('0x13')]);router['post'](_0x9d60('0x14'),controller['status']);router[_0x9d60('0x15')]('/:id',auth[_0x9d60('0x8')](),controller[_0x9d60('0x16')]);router['put'](_0x9d60('0x17'),auth['isAuthenticated'](),controller[_0x9d60('0x18')]);router[_0x9d60('0x15')](_0x9d60('0x19'),auth['isAuthenticated'](),controller[_0x9d60('0x1a')]);router[_0x9d60('0x1b')](_0x9d60('0xd'),auth['isAuthenticated'](),controller[_0x9d60('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x7380=['tracked','whatsappmessage:create','post','/:id/status','status','/:id','update','put','/:id/accept','/:id/reject','reject','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0x7380,0xed));var _0x0738=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x7380[_0x50007c];return _0x5c1ec7;};'use strict';var multer=require(_0x0738('0x0'));var util=require('util');var path=require(_0x0738('0x1'));var timeout=require(_0x0738('0x2'));var express=require(_0x0738('0x3'));var router=express[_0x0738('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0738('0x5'));var interaction=require(_0x0738('0x6'));var config=require(_0x0738('0x7'));var controller=require(_0x0738('0x8'));router[_0x0738('0x9')]('/',auth[_0x0738('0xa')](),controller[_0x0738('0xb')]);router[_0x0738('0x9')](_0x0738('0xc'),auth[_0x0738('0xa')](),controller[_0x0738('0xd')]);router['get']('/:id',auth[_0x0738('0xa')](),controller[_0x0738('0xe')]);router['post']('/',auth[_0x0738('0xa')](),interaction[_0x0738('0xf')]('whatsapp',_0x0738('0x10')),controller['create']);router[_0x0738('0x11')](_0x0738('0x12'),controller[_0x0738('0x13')]);router['put'](_0x0738('0x14'),auth['isAuthenticated'](),controller[_0x0738('0x15')]);router[_0x0738('0x16')](_0x0738('0x17'),auth[_0x0738('0xa')](),controller['accept']);router[_0x0738('0x16')](_0x0738('0x18'),auth[_0x0738('0xa')](),controller[_0x0738('0x19')]);router[_0x0738('0x1a')](_0x0738('0x14'),auth[_0x0738('0xa')](),controller[_0x0738('0x1b')]);module['exports']=router;
\ No newline at end of file
index 3bc1e2b..b9df949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fef=['DATE','BOOLEAN','sequelize','TEXT','out','STRING'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0x7fef,0x110));var _0xf7fe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7fef[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf7fe('0x0'));module['exports']={'body':{'type':Sequelize[_0xf7fe('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xf7fe('0x2')),'defaultValue':_0xf7fe('0x2'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xf7fe('0x3')]},'readAt':{'type':Sequelize[_0xf7fe('0x4')]},'secret':{'type':Sequelize[_0xf7fe('0x5')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf7fe('0x3')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x351d=['BOOLEAN','ENUM','out','STRING','DATE','sequelize','exports','TEXT','medium'];(function(_0x35f2a2,_0x2460f9){var _0x494f62=function(_0x1cf62c){while(--_0x1cf62c){_0x35f2a2['push'](_0x35f2a2['shift']());}};_0x494f62(++_0x2460f9);}(_0x351d,0x137));var _0xd351=function(_0x390402,_0x1673f5){_0x390402=_0x390402-0x0;var _0x68ae7b=_0x351d[_0x390402];return _0x68ae7b;};'use strict';var Sequelize=require(_0xd351('0x0'));module[_0xd351('0x1')]={'body':{'type':Sequelize[_0xd351('0x2')](_0xd351('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xd351('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd351('0x5')]('in',_0xd351('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xd351('0x7')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xd351('0x8')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xd351('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 9cacfbd..8fdd33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3129=['params','length','find','create','update','body','describe','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteractionId','read1stAt','role','interaction','null','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','internal','manual','SIP/%s','channel','motionChannel','acceptmessage','whatsapp-interactions','reject','get','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','contact','email','event','EventManager','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','client','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','end','json','undefined','offset','count','limit','set','Content-Range','then','destroy','status','stack','send','index','map','rawAttributes','type','model','name','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','options','WhatsappMessage','include','findAll','catch'];(function(_0x98e64,_0x216f4d){var _0x48d537=function(_0x573983){while(--_0x573983){_0x98e64['push'](_0x98e64['shift']());}};_0x48d537(++_0x216f4d);}(_0x3129,0x1d1));var _0x9312=function(_0x8881b4,_0x268c38){_0x8881b4=_0x8881b4-0x0;var _0x7de271=_0x3129[_0x8881b4];return _0x7de271;};'use strict';var emlformat=require(_0x9312('0x0'));var rimraf=require(_0x9312('0x1'));var zipdir=require(_0x9312('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9312('0x3'));var Mustache=require(_0x9312('0x4'));var util=require(_0x9312('0x5'));var path=require(_0x9312('0x6'));var sox=require('sox');var csv=require(_0x9312('0x7'));var ejs=require(_0x9312('0x8'));var fs=require('fs');var fs_extra=require(_0x9312('0x9'));var _=require(_0x9312('0xa'));var squel=require(_0x9312('0xb'));var crypto=require(_0x9312('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9312('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9312('0xe'));var Papa=require('papaparse');var Redis=require(_0x9312('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9312('0x10'));var as=require(_0x9312('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9312('0x12'))(_0x9312('0x13'));var utils=require('../../config/utils');var config=require(_0x9312('0x14'));var licenseUtil=require(_0x9312('0x15'));var db=require(_0x9312('0x16'))['db'];config[_0x9312('0x17')]=_[_0x9312('0x18')](config[_0x9312('0x17')],{'host':_0x9312('0x19'),'port':0x18eb});var socket=require(_0x9312('0x1a'))(new Redis(config['redis']));require(_0x9312('0x1b'))[_0x9312('0x1c')](socket);var jayson=require(_0x9312('0x1d'));var client=jayson['client'][_0x9312('0x1e')]({'port':0x232c});var client9002=jayson[_0x9312('0x1f')][_0x9312('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x1403c9,_0x4e4dc4,_0x54509b,_0x162413){return new BPromise(function(_0x233ba2,_0x268ac1){var _0x36931a=_0x162413||client;return _0x36931a['request'](_0x1403c9,_0x54509b)['then'](function(_0x171e6f){logger['info'](_0x9312('0x20'),_0x4e4dc4,_0x9312('0x21'));logger[_0x9312('0x22')](_0x9312('0x23'),_0x4e4dc4,_0x9312('0x21'),JSON[_0x9312('0x24')](_0x171e6f));if(_0x171e6f[_0x9312('0x25')]){if(_0x171e6f['error'][_0x9312('0x26')]===0x1f4){logger['error'](_0x9312('0x20'),_0x4e4dc4,_0x171e6f[_0x9312('0x25')]['message']);return _0x268ac1(_0x171e6f[_0x9312('0x25')][_0x9312('0x27')]);}logger[_0x9312('0x25')](_0x9312('0x20'),_0x4e4dc4,_0x171e6f[_0x9312('0x25')]['message']);return _0x233ba2(_0x171e6f[_0x9312('0x25')]['message']);}else{logger[_0x9312('0x28')](_0x9312('0x20'),_0x4e4dc4,_0x9312('0x21'));_0x233ba2(_0x171e6f[_0x9312('0x29')][_0x9312('0x27')]);}})['catch'](function(_0x3ca184){logger[_0x9312('0x25')](_0x9312('0x20'),_0x4e4dc4,_0x3ca184);_0x268ac1(_0x3ca184);});});}function respondWithStatusCode(_0x418e8e,_0x35c10e){_0x35c10e=_0x35c10e||0xcc;return function(_0x9df4cd){if(_0x9df4cd){return _0x418e8e[_0x9312('0x2a')](_0x35c10e);}return _0x418e8e['status'](_0x35c10e)[_0x9312('0x2b')]();};}function respondWithResult(_0x14f716,_0x480c27){_0x480c27=_0x480c27||0xc8;return function(_0x2f526d){if(_0x2f526d){return _0x14f716['status'](_0x480c27)[_0x9312('0x2c')](_0x2f526d);}};}function respondWithFilteredResult(_0xf80c36,_0x4a8b76){return function(_0x46fe60){if(_0x46fe60){var _0x222958=typeof _0x4a8b76['offset']==='undefined'&&typeof _0x4a8b76['limit']===_0x9312('0x2d');var _0x13a574=_0x46fe60['count'];var _0x55a9f9=_0x222958?0x0:_0x4a8b76[_0x9312('0x2e')];var _0x1027f9=_0x222958?_0x46fe60[_0x9312('0x2f')]:_0x4a8b76['offset']+_0x4a8b76[_0x9312('0x30')];var _0x571e9a;if(_0x1027f9>=_0x13a574){_0x1027f9=_0x13a574;_0x571e9a=0xc8;}else{_0x571e9a=0xce;}_0xf80c36['status'](_0x571e9a);return _0xf80c36[_0x9312('0x31')](_0x9312('0x32'),_0x55a9f9+'-'+_0x1027f9+'/'+_0x13a574)[_0x9312('0x2c')](_0x46fe60);}return null;};}function patchUpdates(_0x398d7b){return function(_0x5968b8){try{jsonpatch['apply'](_0x5968b8,_0x398d7b,!![]);}catch(_0x33260a){return BPromise['reject'](_0x33260a);}return _0x5968b8['save']();};}function saveUpdates(_0x1ea6fa,_0xaded2b){return function(_0x297c13){if(_0x297c13){return _0x297c13['update'](_0x1ea6fa)[_0x9312('0x33')](function(_0x58d0f9){return _0x58d0f9;});}return null;};}function removeEntity(_0x3ac587,_0x2c96de){return function(_0x29d918){if(_0x29d918){return _0x29d918[_0x9312('0x34')]()[_0x9312('0x33')](function(){_0x3ac587[_0x9312('0x35')](0xcc)[_0x9312('0x2b')]();});}};}function handleEntityNotFound(_0x2f334f,_0xc509e7){return function(_0x7a407d){if(!_0x7a407d){_0x2f334f[_0x9312('0x2a')](0x194);}return _0x7a407d;};}function handleError(_0x36e372,_0x4cd3a2){_0x4cd3a2=_0x4cd3a2||0x1f4;return function(_0x2e8bb8){logger[_0x9312('0x25')](_0x2e8bb8[_0x9312('0x36')]);if(_0x2e8bb8['name']){delete _0x2e8bb8['name'];}_0x36e372['status'](_0x4cd3a2)[_0x9312('0x37')](_0x2e8bb8);};}exports[_0x9312('0x38')]=function(_0x2913e2,_0x4c47a2){var _0x102855={},_0x46b1b5={},_0x5a201b={'count':0x0,'rows':[]};var _0x30ff32=_[_0x9312('0x39')](db['WhatsappMessage'][_0x9312('0x3a')],function(_0xa212cc){return{'name':_0xa212cc['fieldName'],'type':_0xa212cc[_0x9312('0x3b')]['key']};});_0x46b1b5[_0x9312('0x3c')]=_['map'](_0x30ff32,_0x9312('0x3d'));_0x46b1b5['query']=_[_0x9312('0x3e')](_0x2913e2[_0x9312('0x3f')]);_0x46b1b5[_0x9312('0x40')]=_[_0x9312('0x41')](_0x46b1b5[_0x9312('0x3c')],_0x46b1b5[_0x9312('0x3f')]);_0x102855[_0x9312('0x42')]=_['intersection'](_0x46b1b5[_0x9312('0x3c')],qs[_0x9312('0x43')](_0x2913e2[_0x9312('0x3f')][_0x9312('0x43')]));_0x102855['attributes']=_0x102855[_0x9312('0x42')]['length']?_0x102855[_0x9312('0x42')]:_0x46b1b5[_0x9312('0x3c')];if(!_0x2913e2[_0x9312('0x3f')][_0x9312('0x44')](_0x9312('0x45'))){_0x102855['limit']=qs[_0x9312('0x30')](_0x2913e2['query'][_0x9312('0x30')]);_0x102855['offset']=qs[_0x9312('0x2e')](_0x2913e2[_0x9312('0x3f')]['offset']);}_0x102855[_0x9312('0x46')]=qs[_0x9312('0x47')](_0x2913e2[_0x9312('0x3f')][_0x9312('0x47')]);_0x102855[_0x9312('0x48')]=qs['filters'](_['pick'](_0x2913e2[_0x9312('0x3f')],_0x46b1b5[_0x9312('0x40')]),_0x30ff32);if(_0x2913e2['query']['filter']){_0x102855[_0x9312('0x48')]=_[_0x9312('0x49')](_0x102855['where'],{'$or':_[_0x9312('0x39')](_0x30ff32,function(_0x424861){if(_0x424861[_0x9312('0x3b')]!=='VIRTUAL'){var _0x320107={};_0x320107[_0x424861['name']]={'$like':'%'+_0x2913e2[_0x9312('0x3f')]['filter']+'%'};return _0x320107;}})});}_0x102855=_[_0x9312('0x49')]({},_0x102855,_0x2913e2[_0x9312('0x4a')]);var _0x1e598d={'where':_0x102855[_0x9312('0x48')]};return db[_0x9312('0x4b')][_0x9312('0x2f')](_0x1e598d)['then'](function(_0xa27cdb){_0x5a201b[_0x9312('0x2f')]=_0xa27cdb;if(_0x2913e2[_0x9312('0x3f')]['includeAll']){_0x102855[_0x9312('0x4c')]=[{'all':!![]}];}return db[_0x9312('0x4b')][_0x9312('0x4d')](_0x102855);})['then'](function(_0x56804e){_0x5a201b['rows']=_0x56804e;return _0x5a201b;})[_0x9312('0x33')](respondWithFilteredResult(_0x4c47a2,_0x102855))[_0x9312('0x4e')](handleError(_0x4c47a2,null));};exports['show']=function(_0x25f57d,_0x51f1c8){var _0x151c63={'raw':!![],'where':{'id':_0x25f57d[_0x9312('0x4f')]['id']}},_0x189a01={};_0x189a01[_0x9312('0x3c')]=_['keys'](db[_0x9312('0x4b')]['rawAttributes']);_0x189a01[_0x9312('0x3f')]=_['keys'](_0x25f57d[_0x9312('0x3f')]);_0x189a01[_0x9312('0x40')]=_[_0x9312('0x41')](_0x189a01[_0x9312('0x3c')],_0x189a01[_0x9312('0x3f')]);_0x151c63[_0x9312('0x42')]=_['intersection'](_0x189a01['model'],qs[_0x9312('0x43')](_0x25f57d['query'][_0x9312('0x43')]));_0x151c63[_0x9312('0x42')]=_0x151c63['attributes'][_0x9312('0x50')]?_0x151c63['attributes']:_0x189a01[_0x9312('0x3c')];if(_0x25f57d[_0x9312('0x3f')]['includeAll']){_0x151c63[_0x9312('0x4c')]=[{'all':!![]}];}_0x151c63=_[_0x9312('0x49')]({},_0x151c63,_0x25f57d[_0x9312('0x4a')]);return db[_0x9312('0x4b')][_0x9312('0x51')](_0x151c63)[_0x9312('0x33')](handleEntityNotFound(_0x51f1c8,null))[_0x9312('0x33')](respondWithResult(_0x51f1c8,null))[_0x9312('0x4e')](handleError(_0x51f1c8,null));};exports[_0x9312('0x52')]=function(_0x30ff43,_0x2769f5){return db[_0x9312('0x4b')][_0x9312('0x52')](_0x30ff43['body'],{})[_0x9312('0x33')](respondWithResult(_0x2769f5,0xc9))[_0x9312('0x4e')](handleError(_0x2769f5,null));};exports[_0x9312('0x53')]=function(_0x78da5d,_0x2db091){if(_0x78da5d['body']['id']){delete _0x78da5d[_0x9312('0x54')]['id'];}return db['WhatsappMessage'][_0x9312('0x51')]({'where':{'id':_0x78da5d['params']['id']}})['then'](handleEntityNotFound(_0x2db091,null))[_0x9312('0x33')](saveUpdates(_0x78da5d['body'],null))[_0x9312('0x33')](respondWithResult(_0x2db091,null))[_0x9312('0x4e')](handleError(_0x2db091,null));};exports[_0x9312('0x34')]=function(_0x51938b,_0x1599c2){return db[_0x9312('0x4b')][_0x9312('0x51')]({'where':{'id':_0x51938b[_0x9312('0x4f')]['id']}})[_0x9312('0x33')](handleEntityNotFound(_0x1599c2,null))[_0x9312('0x33')](removeEntity(_0x1599c2,null))[_0x9312('0x4e')](handleError(_0x1599c2,null));};exports['describe']=function(_0x95f977,_0x19d87e){return db[_0x9312('0x4b')][_0x9312('0x55')]()[_0x9312('0x33')](respondWithResult(_0x19d87e,null))['catch'](handleError(_0x19d87e,null));};var interaction_log=require(_0x9312('0x12'))('whatsapp-interactions');exports[_0x9312('0x56')]=function(_0x517f1c,_0x38f0ab,_0x3c15f1){var _0x2aac68={'agent':{},'channel':_0x9312('0x57')};if(_0x517f1c['body']['id']){delete _0x517f1c[_0x9312('0x54')]['id'];}_0x517f1c[_0x9312('0x54')][_0x9312('0x58')]=!![];_0x517f1c['body'][_0x9312('0x59')]=moment()[_0x9312('0x5a')](_0x9312('0x5b'));_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')]=_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')]||_0x517f1c[_0x9312('0x5d')]['id'];_0x2aac68[_0x9312('0x5e')]['id']=_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')];return db[_0x9312('0x4b')]['find']({'where':{'id':_0x517f1c['params']['id'],'UserId':null}})[_0x9312('0x33')](handleEntityNotFound(_0x38f0ab,null))[_0x9312('0x33')](saveUpdates(_0x517f1c['body'],null))[_0x9312('0x33')](function(_0x4d915d){if(_0x4d915d){_0x2aac68['message']=_0x4d915d['get']({'plain':!![]});return db['WhatsappInteraction'][_0x9312('0x51')]({'where':{'id':_0x4d915d[_0x9312('0x5f')]}});}return null;})[_0x9312('0x33')](handleEntityNotFound(_0x38f0ab,null))['then'](function(_0x3568f1){if(_0x3568f1){return _0x3568f1[_0x9312('0x53')]({'UserId':_0x517f1c[_0x9312('0x54')]['UserId'],'read1stAt':_['isNil'](_0x3568f1[_0x9312('0x60')])?moment()[_0x9312('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x47dd5b){if(_0x47dd5b){_0x2aac68['interaction']=_0x47dd5b['get']({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x517f1c[_0x9312('0x5d')]['id'],_0x517f1c[_0x9312('0x5d')][_0x9312('0x3d')],_0x517f1c[_0x9312('0x5d')][_0x9312('0x61')],_0x2aac68[_0x9312('0x62')]['id'],_0x517f1c[_0x9312('0x54')]?JSON['stringify'](_0x517f1c[_0x9312('0x54')]):_0x9312('0x63'));return respondWithRpcPromise('AcceptMessage',_0x9312('0x64'),_0x2aac68);}return null;})[_0x9312('0x33')](function(_0x3a6db5){var _0x2f1d8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3a6db5['message'][_0x9312('0x65')];return db[_0x9312('0x66')]['query'](_0x2f1d8,{'type':db[_0x9312('0x67')][_0x9312('0x68')]['SELECT'],'raw':!![]})['then'](function(_0x1314d4){return _0x1314d4;});})[_0x9312('0x33')](function(_0x3917ad){if(_0x3917ad){_0x2aac68['message']['contact']=_0x3917ad[0x0];if(!_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')])return;return db[_0x9312('0x69')][_0x9312('0x51')]({'where':{'id':_0x517f1c[_0x9312('0x54')][_0x9312('0x5c')],'role':_0x9312('0x5e')},'attributes':['id','name',_0x9312('0x6a'),'email',_0x9312('0x6b')],'raw':!![]});}return null;})[_0x9312('0x33')](function(_0x5d0bfd){if(!_0x5d0bfd)return null;_0x2aac68[_0x9312('0x27')][_0x9312('0x5e')]=_0x5d0bfd;return _0x2aac68;})[_0x9312('0x33')](function(_0x501801){if(_0x501801){if(_0x517f1c[_0x9312('0x54')][_0x9312('0x6c')]){_0x2aac68[_0x9312('0x27')]['interface']=util['format'](_0x9312('0x6d'),_0x517f1c[_0x9312('0x5d')][_0x9312('0x3d')]);_0x2aac68[_0x9312('0x27')][_0x9312('0x6e')]=_0x2aac68[_0x9312('0x6e')];_0x2aac68[_0x9312('0x27')][_0x9312('0x6f')]=_0x2aac68[_0x9312('0x6e')];_0x2aac68[_0x9312('0x27')]['event']=_0x9312('0x56');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x9312('0x70'),'message':_0x2aac68['message']},client9002)[_0x9312('0x33')](function(){return _0x2aac68;});}return _0x2aac68;}return null;})[_0x9312('0x33')](respondWithResult(_0x38f0ab,null))[_0x9312('0x4e')](handleError(_0x38f0ab,null));};var interaction_log=require('../../config/logger')(_0x9312('0x71'));exports[_0x9312('0x72')]=function(_0x43bbf4,_0x3d3a55,_0x2f036c){var _0x258a8d={'agent':{},'channel':_0x9312('0x57')};if(_0x43bbf4[_0x9312('0x54')]['id']){delete _0x43bbf4[_0x9312('0x54')]['id'];}_0x43bbf4['body'][_0x9312('0x5c')]=_0x43bbf4[_0x9312('0x54')]['UserId']||_0x43bbf4[_0x9312('0x5d')]['id'];_0x258a8d['agent']['id']=_0x43bbf4[_0x9312('0x54')]['UserId'];return db[_0x9312('0x4b')][_0x9312('0x51')]({'where':{'id':_0x43bbf4[_0x9312('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3d3a55,null))[_0x9312('0x33')](function(_0x29ab0a){if(_0x29ab0a){_0x258a8d[_0x9312('0x27')]=_0x29ab0a[_0x9312('0x73')]({'plain':!![]});return db[_0x9312('0x74')][_0x9312('0x51')]({'where':{'id':_0x29ab0a[_0x9312('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x3d3a55,null))[_0x9312('0x33')](function(_0x159618){if(_0x159618){_0x258a8d['interaction']=_0x159618[_0x9312('0x73')]({'plain':!![]});interaction_log['info'](_0x9312('0x75'),_0x43bbf4[_0x9312('0x5d')]['id'],_0x43bbf4['user'][_0x9312('0x3d')],_0x43bbf4[_0x9312('0x5d')][_0x9312('0x61')],_0x258a8d[_0x9312('0x62')]['id'],_0x43bbf4[_0x9312('0x54')]?JSON[_0x9312('0x24')](_0x43bbf4[_0x9312('0x54')]):_0x9312('0x63'));return respondWithRpcPromise(_0x9312('0x76'),_0x9312('0x77'),_0x258a8d);}return null;})[_0x9312('0x33')](function(_0x487fd8){var _0x410e74=_0x9312('0x78')+_0x487fd8[_0x9312('0x27')]['ContactId'];return db['sequelize'][_0x9312('0x3f')](_0x410e74,{'type':db['Sequelize'][_0x9312('0x68')][_0x9312('0x79')],'raw':!![]})[_0x9312('0x33')](function(_0x226529){return _0x226529;});})[_0x9312('0x33')](function(_0x10e950){if(_0x10e950){_0x258a8d[_0x9312('0x27')][_0x9312('0x7a')]=_0x10e950[0x0];if(!_0x43bbf4[_0x9312('0x54')][_0x9312('0x5c')])return;return db['User'][_0x9312('0x51')]({'where':{'id':_0x43bbf4['body'][_0x9312('0x5c')],'role':_0x9312('0x5e')},'attributes':['id',_0x9312('0x3d'),_0x9312('0x6a'),_0x9312('0x7b'),_0x9312('0x6b')],'raw':!![]});}return null;})[_0x9312('0x33')](function(_0x46f099){if(!_0x46f099)return null;_0x258a8d[_0x9312('0x27')][_0x9312('0x5e')]=_0x46f099;return _0x258a8d;})['then'](function(_0x32418f){if(_0x32418f){_0x32418f['message']['interface']=util[_0x9312('0x5a')](_0x9312('0x6d'),_0x43bbf4[_0x9312('0x5d')][_0x9312('0x3d')]);_0x32418f['message']['channel']=_0x258a8d['channel'];_0x32418f[_0x9312('0x27')][_0x9312('0x6f')]=_0x258a8d[_0x9312('0x6e')];_0x32418f[_0x9312('0x27')][_0x9312('0x7c')]='reject';respondWithRpcPromise('EventManager',_0x9312('0x7d'),{'event':_0x9312('0x7e'),'message':_0x32418f[_0x9312('0x27')]},client9002);return _0x258a8d;}return null;})[_0x9312('0x33')](respondWithResult(_0x3d3a55,null))[_0x9312('0x4e')](handleError(_0x3d3a55,null));};exports[_0x9312('0x35')]=function(_0xb00c3a,_0x5db6dd,_0x5ad509){if(_0xb00c3a[_0x9312('0x54')]['id']){delete _0xb00c3a[_0x9312('0x54')]['id'];}var _0x29dead;return db[_0x9312('0x4b')]['find']({'where':{'id':_0xb00c3a['params']['id']}})['then'](handleEntityNotFound(_0x5db6dd,null))[_0x9312('0x33')](function(_0x34520d){if(_0x34520d){_0x29dead=_0x34520d;return db[_0x9312('0x7f')]['find']({'where':{'id':_0x34520d[_0x9312('0x80')]}});}})['then'](handleEntityNotFound(_0x5db6dd,null))[_0x9312('0x33')](function(_0x233458){if(_0x233458){logger[_0x9312('0x22')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status',_0x9312('0x81'),_0x233458[_0x9312('0x3b')],util[_0x9312('0x82')](_0xb00c3a['body'],{'showHidden':![],'depth':null}));switch(_0x233458[_0x9312('0x3b')]){case'twilio':if(_0xb00c3a[_0x9312('0x54')][_0x9312('0x83')]&&_0xb00c3a[_0x9312('0x54')][_0x9312('0x83')]===_0x29dead[_0x9312('0x84')]&&_0xb00c3a[_0x9312('0x54')]['MessageStatus']&&_0xb00c3a[_0x9312('0x54')][_0x9312('0x85')]===_0x9312('0x58')){return _0x29dead[_0x9312('0x53')]({'read':!![]});}else{logger[_0x9312('0x25')](_0x9312('0x86'),'status',_0x9312('0x87'),util[_0x9312('0x82')](_0xb00c3a[_0x9312('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x29dead;}})[_0x9312('0x33')](respondWithResult(_0x5db6dd,null))['catch'](handleError(_0x5db6dd,null));};
\ No newline at end of file
+var _0xea16=['agent','get','WhatsappInteraction','WhatsappInteractionId','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','ContactId','Sequelize','QueryTypes','SELECT','contact','fullname','interface','channel','motionChannel','event','EventManager','acceptmessage','reject','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','User','email','internal','SIP/%s','rejectmessage','WhatsappAccount','WhatsappAccountId','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','inspect','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','stack','name','send','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','../../config/logger','whatsapp-interactions','accept','whatsapp','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user'];(function(_0x485ec0,_0x4c1c93){var _0x12cb19=function(_0x2b4941){while(--_0x2b4941){_0x485ec0['push'](_0x485ec0['shift']());}};_0x12cb19(++_0x4c1c93);}(_0xea16,0x13b));var _0x6ea1=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xea16[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x6ea1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ea1('0x1'));var jsonpatch=require(_0x6ea1('0x2'));var rp=require(_0x6ea1('0x3'));var moment=require(_0x6ea1('0x4'));var BPromise=require(_0x6ea1('0x5'));var Mustache=require(_0x6ea1('0x6'));var util=require(_0x6ea1('0x7'));var path=require(_0x6ea1('0x8'));var sox=require('sox');var csv=require(_0x6ea1('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ea1('0xa'));var _=require(_0x6ea1('0xb'));var squel=require(_0x6ea1('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6ea1('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6ea1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6ea1('0xf'));var as=require(_0x6ea1('0x10'));var hardwareService=require(_0x6ea1('0x11'));var logger=require('../../config/logger')(_0x6ea1('0x12'));var utils=require(_0x6ea1('0x13'));var config=require(_0x6ea1('0x14'));var licenseUtil=require(_0x6ea1('0x15'));var db=require(_0x6ea1('0x16'))['db'];config[_0x6ea1('0x17')]=_['defaults'](config[_0x6ea1('0x17')],{'host':_0x6ea1('0x18'),'port':0x18eb});var socket=require(_0x6ea1('0x19'))(new Redis(config[_0x6ea1('0x17')]));require(_0x6ea1('0x1a'))[_0x6ea1('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x6ea1('0x1c')]['http']({'port':0x232c});var client9002=jayson['client'][_0x6ea1('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x319ef1,_0x5b2f61,_0x5d074e,_0x15ffec){return new BPromise(function(_0x44c27c,_0xcc81d8){var _0xc5239c=_0x15ffec||client;return _0xc5239c[_0x6ea1('0x1e')](_0x319ef1,_0x5d074e)[_0x6ea1('0x1f')](function(_0x4930b0){logger[_0x6ea1('0x20')](_0x6ea1('0x21'),_0x5b2f61,'request\x20sent');logger['debug'](_0x6ea1('0x22'),_0x5b2f61,'request\x20sent',JSON[_0x6ea1('0x23')](_0x4930b0));if(_0x4930b0[_0x6ea1('0x24')]){if(_0x4930b0['error']['code']===0x1f4){logger[_0x6ea1('0x24')](_0x6ea1('0x21'),_0x5b2f61,_0x4930b0[_0x6ea1('0x24')][_0x6ea1('0x25')]);return _0xcc81d8(_0x4930b0[_0x6ea1('0x24')][_0x6ea1('0x25')]);}logger[_0x6ea1('0x24')](_0x6ea1('0x21'),_0x5b2f61,_0x4930b0['error'][_0x6ea1('0x25')]);return _0x44c27c(_0x4930b0['error'][_0x6ea1('0x25')]);}else{logger[_0x6ea1('0x20')]('WhatsappMessage,\x20%s,\x20%s',_0x5b2f61,_0x6ea1('0x26'));_0x44c27c(_0x4930b0[_0x6ea1('0x27')][_0x6ea1('0x25')]);}})['catch'](function(_0x1706fc){logger[_0x6ea1('0x24')](_0x6ea1('0x21'),_0x5b2f61,_0x1706fc);_0xcc81d8(_0x1706fc);});});}function respondWithStatusCode(_0x46de0f,_0x5bc2f1){_0x5bc2f1=_0x5bc2f1||0xcc;return function(_0x3eb25b){if(_0x3eb25b){return _0x46de0f[_0x6ea1('0x28')](_0x5bc2f1);}return _0x46de0f[_0x6ea1('0x29')](_0x5bc2f1)['end']();};}function respondWithResult(_0x44d7dc,_0x2a90b0){_0x2a90b0=_0x2a90b0||0xc8;return function(_0x442721){if(_0x442721){return _0x44d7dc[_0x6ea1('0x29')](_0x2a90b0)[_0x6ea1('0x2a')](_0x442721);}};}function respondWithFilteredResult(_0x109235,_0x89a68){return function(_0x10819b){if(_0x10819b){var _0x3ee266=typeof _0x89a68[_0x6ea1('0x2b')]===_0x6ea1('0x2c')&&typeof _0x89a68[_0x6ea1('0x2d')]===_0x6ea1('0x2c');var _0x1bc83c=_0x10819b['count'];var _0x142e47=_0x3ee266?0x0:_0x89a68[_0x6ea1('0x2b')];var _0x47f916=_0x3ee266?_0x10819b[_0x6ea1('0x2e')]:_0x89a68[_0x6ea1('0x2b')]+_0x89a68['limit'];var _0xadc61;if(_0x47f916>=_0x1bc83c){_0x47f916=_0x1bc83c;_0xadc61=0xc8;}else{_0xadc61=0xce;}_0x109235['status'](_0xadc61);return _0x109235[_0x6ea1('0x2f')](_0x6ea1('0x30'),_0x142e47+'-'+_0x47f916+'/'+_0x1bc83c)[_0x6ea1('0x2a')](_0x10819b);}return null;};}function patchUpdates(_0x4c5371){return function(_0x1adfa0){try{jsonpatch[_0x6ea1('0x31')](_0x1adfa0,_0x4c5371,!![]);}catch(_0x2a3422){return BPromise['reject'](_0x2a3422);}return _0x1adfa0['save']();};}function saveUpdates(_0x4d5653,_0xcc2474){return function(_0x5275bd){if(_0x5275bd){return _0x5275bd['update'](_0x4d5653)[_0x6ea1('0x1f')](function(_0x3e4d4c){return _0x3e4d4c;});}return null;};}function removeEntity(_0x1e3c4d,_0x1a14b3){return function(_0x48052f){if(_0x48052f){return _0x48052f[_0x6ea1('0x32')]()['then'](function(){_0x1e3c4d[_0x6ea1('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd462c5,_0x3340a1){return function(_0x2d1f15){if(!_0x2d1f15){_0xd462c5[_0x6ea1('0x28')](0x194);}return _0x2d1f15;};}function handleError(_0xcb8b40,_0x34217a){_0x34217a=_0x34217a||0x1f4;return function(_0xd13643){logger[_0x6ea1('0x24')](_0xd13643[_0x6ea1('0x33')]);if(_0xd13643[_0x6ea1('0x34')]){delete _0xd13643[_0x6ea1('0x34')];}_0xcb8b40[_0x6ea1('0x29')](_0x34217a)[_0x6ea1('0x35')](_0xd13643);};}exports['index']=function(_0x34da82,_0x16c320){var _0x23aecc={},_0x12400b={},_0x1a6737={'count':0x0,'rows':[]};var _0x25d1ce=_[_0x6ea1('0x36')](db[_0x6ea1('0x37')][_0x6ea1('0x38')],function(_0x33a966){return{'name':_0x33a966[_0x6ea1('0x39')],'type':_0x33a966[_0x6ea1('0x3a')][_0x6ea1('0x3b')]};});_0x12400b[_0x6ea1('0x3c')]=_['map'](_0x25d1ce,_0x6ea1('0x34'));_0x12400b[_0x6ea1('0x3d')]=_[_0x6ea1('0x3e')](_0x34da82[_0x6ea1('0x3d')]);_0x12400b[_0x6ea1('0x3f')]=_[_0x6ea1('0x40')](_0x12400b[_0x6ea1('0x3c')],_0x12400b[_0x6ea1('0x3d')]);_0x23aecc[_0x6ea1('0x41')]=_['intersection'](_0x12400b[_0x6ea1('0x3c')],qs['fields'](_0x34da82[_0x6ea1('0x3d')][_0x6ea1('0x42')]));_0x23aecc[_0x6ea1('0x41')]=_0x23aecc['attributes'][_0x6ea1('0x43')]?_0x23aecc[_0x6ea1('0x41')]:_0x12400b[_0x6ea1('0x3c')];if(!_0x34da82[_0x6ea1('0x3d')][_0x6ea1('0x44')](_0x6ea1('0x45'))){_0x23aecc[_0x6ea1('0x2d')]=qs[_0x6ea1('0x2d')](_0x34da82[_0x6ea1('0x3d')]['limit']);_0x23aecc[_0x6ea1('0x2b')]=qs[_0x6ea1('0x2b')](_0x34da82['query'][_0x6ea1('0x2b')]);}_0x23aecc['order']=qs[_0x6ea1('0x46')](_0x34da82[_0x6ea1('0x3d')]['sort']);_0x23aecc[_0x6ea1('0x47')]=qs[_0x6ea1('0x3f')](_[_0x6ea1('0x48')](_0x34da82['query'],_0x12400b[_0x6ea1('0x3f')]),_0x25d1ce);if(_0x34da82[_0x6ea1('0x3d')]['filter']){_0x23aecc[_0x6ea1('0x47')]=_[_0x6ea1('0x49')](_0x23aecc[_0x6ea1('0x47')],{'$or':_[_0x6ea1('0x36')](_0x25d1ce,function(_0x597696){if(_0x597696[_0x6ea1('0x3a')]!==_0x6ea1('0x4a')){var _0x65e7ca={};_0x65e7ca[_0x597696[_0x6ea1('0x34')]]={'$like':'%'+_0x34da82[_0x6ea1('0x3d')]['filter']+'%'};return _0x65e7ca;}})});}_0x23aecc=_[_0x6ea1('0x49')]({},_0x23aecc,_0x34da82[_0x6ea1('0x4b')]);var _0x2c6497={'where':_0x23aecc[_0x6ea1('0x47')]};return db[_0x6ea1('0x37')]['count'](_0x2c6497)[_0x6ea1('0x1f')](function(_0x1fc1f2){_0x1a6737['count']=_0x1fc1f2;if(_0x34da82[_0x6ea1('0x3d')][_0x6ea1('0x4c')]){_0x23aecc['include']=[{'all':!![]}];}return db[_0x6ea1('0x37')][_0x6ea1('0x4d')](_0x23aecc);})[_0x6ea1('0x1f')](function(_0x3d8c8f){_0x1a6737[_0x6ea1('0x4e')]=_0x3d8c8f;return _0x1a6737;})[_0x6ea1('0x1f')](respondWithFilteredResult(_0x16c320,_0x23aecc))[_0x6ea1('0x4f')](handleError(_0x16c320,null));};exports[_0x6ea1('0x50')]=function(_0x3fdafb,_0x41e781){var _0x23c118={'raw':!![],'where':{'id':_0x3fdafb[_0x6ea1('0x51')]['id']}},_0x1e0660={};_0x1e0660['model']=_['keys'](db[_0x6ea1('0x37')]['rawAttributes']);_0x1e0660[_0x6ea1('0x3d')]=_[_0x6ea1('0x3e')](_0x3fdafb[_0x6ea1('0x3d')]);_0x1e0660['filters']=_[_0x6ea1('0x40')](_0x1e0660[_0x6ea1('0x3c')],_0x1e0660[_0x6ea1('0x3d')]);_0x23c118[_0x6ea1('0x41')]=_[_0x6ea1('0x40')](_0x1e0660[_0x6ea1('0x3c')],qs['fields'](_0x3fdafb[_0x6ea1('0x3d')]['fields']));_0x23c118[_0x6ea1('0x41')]=_0x23c118['attributes'][_0x6ea1('0x43')]?_0x23c118['attributes']:_0x1e0660[_0x6ea1('0x3c')];if(_0x3fdafb[_0x6ea1('0x3d')][_0x6ea1('0x4c')]){_0x23c118[_0x6ea1('0x52')]=[{'all':!![]}];}_0x23c118=_[_0x6ea1('0x49')]({},_0x23c118,_0x3fdafb[_0x6ea1('0x4b')]);return db[_0x6ea1('0x37')][_0x6ea1('0x53')](_0x23c118)['then'](handleEntityNotFound(_0x41e781,null))[_0x6ea1('0x1f')](respondWithResult(_0x41e781,null))[_0x6ea1('0x4f')](handleError(_0x41e781,null));};exports[_0x6ea1('0x54')]=function(_0x3f6355,_0x54a7c7){return db['WhatsappMessage'][_0x6ea1('0x54')](_0x3f6355[_0x6ea1('0x55')],{})[_0x6ea1('0x1f')](respondWithResult(_0x54a7c7,0xc9))['catch'](handleError(_0x54a7c7,null));};exports[_0x6ea1('0x56')]=function(_0x4a4b08,_0xe3cd9d){if(_0x4a4b08[_0x6ea1('0x55')]['id']){delete _0x4a4b08[_0x6ea1('0x55')]['id'];}return db['WhatsappMessage'][_0x6ea1('0x53')]({'where':{'id':_0x4a4b08['params']['id']}})[_0x6ea1('0x1f')](handleEntityNotFound(_0xe3cd9d,null))['then'](saveUpdates(_0x4a4b08['body'],null))[_0x6ea1('0x1f')](respondWithResult(_0xe3cd9d,null))[_0x6ea1('0x4f')](handleError(_0xe3cd9d,null));};exports[_0x6ea1('0x32')]=function(_0x3ffaff,_0x1aeaf5){return db[_0x6ea1('0x37')][_0x6ea1('0x53')]({'where':{'id':_0x3ffaff['params']['id']}})[_0x6ea1('0x1f')](handleEntityNotFound(_0x1aeaf5,null))[_0x6ea1('0x1f')](removeEntity(_0x1aeaf5,null))[_0x6ea1('0x4f')](handleError(_0x1aeaf5,null));};exports[_0x6ea1('0x57')]=function(_0x28ff80,_0x37feda){return db['WhatsappMessage'][_0x6ea1('0x57')]()[_0x6ea1('0x1f')](respondWithResult(_0x37feda,null))['catch'](handleError(_0x37feda,null));};var interaction_log=require(_0x6ea1('0x58'))(_0x6ea1('0x59'));exports[_0x6ea1('0x5a')]=function(_0x11ca6e,_0x5423fd,_0x3a765c){var _0x207e7={'agent':{},'channel':_0x6ea1('0x5b')};if(_0x11ca6e[_0x6ea1('0x55')]['id']){delete _0x11ca6e[_0x6ea1('0x55')]['id'];}_0x11ca6e[_0x6ea1('0x55')]['read']=!![];_0x11ca6e[_0x6ea1('0x55')]['readAt']=moment()[_0x6ea1('0x5c')](_0x6ea1('0x5d'));_0x11ca6e[_0x6ea1('0x55')][_0x6ea1('0x5e')]=_0x11ca6e[_0x6ea1('0x55')]['UserId']||_0x11ca6e[_0x6ea1('0x5f')]['id'];_0x207e7[_0x6ea1('0x60')]['id']=_0x11ca6e[_0x6ea1('0x55')]['UserId'];return db[_0x6ea1('0x37')][_0x6ea1('0x53')]({'where':{'id':_0x11ca6e[_0x6ea1('0x51')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5423fd,null))[_0x6ea1('0x1f')](saveUpdates(_0x11ca6e[_0x6ea1('0x55')],null))[_0x6ea1('0x1f')](function(_0xa41a4){if(_0xa41a4){_0x207e7[_0x6ea1('0x25')]=_0xa41a4[_0x6ea1('0x61')]({'plain':!![]});return db[_0x6ea1('0x62')]['find']({'where':{'id':_0xa41a4[_0x6ea1('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x5423fd,null))['then'](function(_0x1fbba4){if(_0x1fbba4){return _0x1fbba4[_0x6ea1('0x56')]({'UserId':_0x11ca6e[_0x6ea1('0x55')][_0x6ea1('0x5e')],'read1stAt':_['isNil'](_0x1fbba4['read1stAt'])?moment()[_0x6ea1('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x6ea1('0x1f')](function(_0x57abab){if(_0x57abab){_0x207e7[_0x6ea1('0x64')]=_0x57abab[_0x6ea1('0x61')]({'plain':!![]});interaction_log[_0x6ea1('0x20')](_0x6ea1('0x65'),_0x11ca6e['user']['id'],_0x11ca6e[_0x6ea1('0x5f')][_0x6ea1('0x34')],_0x11ca6e['user'][_0x6ea1('0x66')],_0x207e7[_0x6ea1('0x64')]['id'],_0x11ca6e[_0x6ea1('0x55')]?JSON['stringify'](_0x11ca6e[_0x6ea1('0x55')]):_0x6ea1('0x67'));return respondWithRpcPromise(_0x6ea1('0x68'),'acceptMessage',_0x207e7);}return null;})[_0x6ea1('0x1f')](function(_0x4bfc5c){var _0x37ceee='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4bfc5c[_0x6ea1('0x25')][_0x6ea1('0x69')];return db['sequelize'][_0x6ea1('0x3d')](_0x37ceee,{'type':db[_0x6ea1('0x6a')][_0x6ea1('0x6b')][_0x6ea1('0x6c')],'raw':!![]})['then'](function(_0x6039c2){return _0x6039c2;});})[_0x6ea1('0x1f')](function(_0x93a901){if(_0x93a901){_0x207e7['message'][_0x6ea1('0x6d')]=_0x93a901[0x0];if(!_0x11ca6e[_0x6ea1('0x55')]['UserId'])return;return db['User'][_0x6ea1('0x53')]({'where':{'id':_0x11ca6e[_0x6ea1('0x55')][_0x6ea1('0x5e')],'role':'agent'},'attributes':['id',_0x6ea1('0x34'),_0x6ea1('0x6e'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x362746){if(!_0x362746)return null;_0x207e7['message'][_0x6ea1('0x60')]=_0x362746;return _0x207e7;})[_0x6ea1('0x1f')](function(_0x24250d){if(_0x24250d){if(_0x11ca6e[_0x6ea1('0x55')]['manual']){_0x207e7[_0x6ea1('0x25')][_0x6ea1('0x6f')]=util[_0x6ea1('0x5c')]('SIP/%s',_0x11ca6e[_0x6ea1('0x5f')][_0x6ea1('0x34')]);_0x207e7[_0x6ea1('0x25')][_0x6ea1('0x70')]=_0x207e7[_0x6ea1('0x70')];_0x207e7[_0x6ea1('0x25')][_0x6ea1('0x71')]=_0x207e7['channel'];_0x207e7[_0x6ea1('0x25')][_0x6ea1('0x72')]=_0x6ea1('0x5a');return respondWithRpcPromise(_0x6ea1('0x73'),_0x6ea1('0x73'),{'event':_0x6ea1('0x74'),'message':_0x207e7[_0x6ea1('0x25')]},client9002)[_0x6ea1('0x1f')](function(){return _0x207e7;});}return _0x207e7;}return null;})['then'](respondWithResult(_0x5423fd,null))[_0x6ea1('0x4f')](handleError(_0x5423fd,null));};var interaction_log=require(_0x6ea1('0x58'))('whatsapp-interactions');exports[_0x6ea1('0x75')]=function(_0x4e154c,_0x539ae7,_0x73b757){var _0x16a3c2={'agent':{},'channel':_0x6ea1('0x5b')};if(_0x4e154c[_0x6ea1('0x55')]['id']){delete _0x4e154c[_0x6ea1('0x55')]['id'];}_0x4e154c[_0x6ea1('0x55')]['UserId']=_0x4e154c[_0x6ea1('0x55')][_0x6ea1('0x5e')]||_0x4e154c['user']['id'];_0x16a3c2['agent']['id']=_0x4e154c[_0x6ea1('0x55')][_0x6ea1('0x5e')];return db[_0x6ea1('0x37')][_0x6ea1('0x53')]({'where':{'id':_0x4e154c[_0x6ea1('0x51')]['id'],'UserId':null}})[_0x6ea1('0x1f')](handleEntityNotFound(_0x539ae7,null))[_0x6ea1('0x1f')](function(_0x43c366){if(_0x43c366){_0x16a3c2[_0x6ea1('0x25')]=_0x43c366[_0x6ea1('0x61')]({'plain':!![]});return db['WhatsappInteraction']['find']({'where':{'id':_0x43c366['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x539ae7,null))[_0x6ea1('0x1f')](function(_0x25e35c){if(_0x25e35c){_0x16a3c2[_0x6ea1('0x64')]=_0x25e35c[_0x6ea1('0x61')]({'plain':!![]});interaction_log[_0x6ea1('0x20')](_0x6ea1('0x76'),_0x4e154c[_0x6ea1('0x5f')]['id'],_0x4e154c['user'][_0x6ea1('0x34')],_0x4e154c[_0x6ea1('0x5f')][_0x6ea1('0x66')],_0x16a3c2[_0x6ea1('0x64')]['id'],_0x4e154c[_0x6ea1('0x55')]?JSON['stringify'](_0x4e154c['body']):_0x6ea1('0x67'));return respondWithRpcPromise(_0x6ea1('0x77'),_0x6ea1('0x78'),_0x16a3c2);}return null;})[_0x6ea1('0x1f')](function(_0x388a62){var _0x14eac0=_0x6ea1('0x79')+_0x388a62[_0x6ea1('0x25')]['ContactId'];return db[_0x6ea1('0x7a')]['query'](_0x14eac0,{'type':db['Sequelize'][_0x6ea1('0x6b')][_0x6ea1('0x6c')],'raw':!![]})['then'](function(_0x34c3ae){return _0x34c3ae;});})[_0x6ea1('0x1f')](function(_0xec643f){if(_0xec643f){_0x16a3c2[_0x6ea1('0x25')][_0x6ea1('0x6d')]=_0xec643f[0x0];if(!_0x4e154c[_0x6ea1('0x55')][_0x6ea1('0x5e')])return;return db[_0x6ea1('0x7b')][_0x6ea1('0x53')]({'where':{'id':_0x4e154c[_0x6ea1('0x55')][_0x6ea1('0x5e')],'role':'agent'},'attributes':['id',_0x6ea1('0x34'),_0x6ea1('0x6e'),_0x6ea1('0x7c'),_0x6ea1('0x7d')],'raw':!![]});}return null;})[_0x6ea1('0x1f')](function(_0x55962c){if(!_0x55962c)return null;_0x16a3c2[_0x6ea1('0x25')][_0x6ea1('0x60')]=_0x55962c;return _0x16a3c2;})['then'](function(_0x10885b){if(_0x10885b){_0x10885b[_0x6ea1('0x25')][_0x6ea1('0x6f')]=util[_0x6ea1('0x5c')](_0x6ea1('0x7e'),_0x4e154c[_0x6ea1('0x5f')][_0x6ea1('0x34')]);_0x10885b['message']['channel']=_0x16a3c2[_0x6ea1('0x70')];_0x10885b['message'][_0x6ea1('0x71')]=_0x16a3c2[_0x6ea1('0x70')];_0x10885b[_0x6ea1('0x25')][_0x6ea1('0x72')]=_0x6ea1('0x75');respondWithRpcPromise(_0x6ea1('0x73'),'EventManager',{'event':_0x6ea1('0x7f'),'message':_0x10885b[_0x6ea1('0x25')]},client9002);return _0x16a3c2;}return null;})[_0x6ea1('0x1f')](respondWithResult(_0x539ae7,null))[_0x6ea1('0x4f')](handleError(_0x539ae7,null));};exports[_0x6ea1('0x29')]=function(_0xaf4068,_0x2ac4ab,_0x43354e){if(_0xaf4068[_0x6ea1('0x55')]['id']){delete _0xaf4068[_0x6ea1('0x55')]['id'];}var _0x46de8f;return db['WhatsappMessage'][_0x6ea1('0x53')]({'where':{'id':_0xaf4068[_0x6ea1('0x51')]['id']}})['then'](handleEntityNotFound(_0x2ac4ab,null))[_0x6ea1('0x1f')](function(_0x4050bc){if(_0x4050bc){_0x46de8f=_0x4050bc;return db[_0x6ea1('0x80')][_0x6ea1('0x53')]({'where':{'id':_0x4050bc[_0x6ea1('0x81')]}});}})[_0x6ea1('0x1f')](handleEntityNotFound(_0x2ac4ab,null))[_0x6ea1('0x1f')](function(_0x3ae6e6){if(_0x3ae6e6){logger[_0x6ea1('0x82')](_0x6ea1('0x83'),'status',_0x6ea1('0x84'),_0x3ae6e6[_0x6ea1('0x3a')],util['inspect'](_0xaf4068[_0x6ea1('0x55')],{'showHidden':![],'depth':null}));switch(_0x3ae6e6[_0x6ea1('0x3a')]){case _0x6ea1('0x85'):if(_0xaf4068['body'][_0x6ea1('0x86')]&&_0xaf4068[_0x6ea1('0x55')]['MessageSid']===_0x46de8f['messageId']&&_0xaf4068['body'][_0x6ea1('0x87')]&&_0xaf4068[_0x6ea1('0x55')]['MessageStatus']==='read'){return _0x46de8f[_0x6ea1('0x56')]({'read':!![]});}else{logger['error']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x6ea1('0x29'),'twilio',util[_0x6ea1('0x88')](_0xaf4068[_0x6ea1('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x46de8f;}})[_0x6ea1('0x1f')](respondWithResult(_0x2ac4ab,null))[_0x6ea1('0x4f')](handleError(_0x2ac4ab,null));};
\ No newline at end of file
index 33164e8..6990d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ba2=['remove','emit','hasOwnProperty','exports','events','WhatsappMessage','save','update'];(function(_0x57054d,_0x3f5d58){var _0x2729fc=function(_0x3c0899){while(--_0x3c0899){_0x57054d['push'](_0x57054d['shift']());}};_0x2729fc(++_0x3f5d58);}(_0x1ba2,0xb4));var _0x21ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1ba2[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x21ba('0x0'));var WhatsappMessage=require('../../mysqldb')['db'][_0x21ba('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x21ba('0x2'),'afterUpdate':_0x21ba('0x3'),'afterDestroy':_0x21ba('0x4')};function emitEvent(_0xface0a){return function(_0x3661dd,_0x527ad5,_0x36e207){WhatsappMessageEvents[_0x21ba('0x5')](_0xface0a+':'+_0x3661dd['id'],_0x3661dd);WhatsappMessageEvents['emit'](_0xface0a,_0x3661dd);_0x36e207(null);};}for(var e in events){if(events[_0x21ba('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x21ba('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x1152=['remove','emit','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x50c8b7,_0xcae6a7){var _0xb1be1b=function(_0x163c72){while(--_0x163c72){_0x50c8b7['push'](_0x50c8b7['shift']());}};_0xb1be1b(++_0xcae6a7);}(_0x1152,0x182));var _0x2115=function(_0x460150,_0x232949){_0x460150=_0x460150-0x0;var _0x340677=_0x1152[_0x460150];return _0x340677;};'use strict';var EventEmitter=require(_0x2115('0x0'));var WhatsappMessage=require(_0x2115('0x1'))['db'][_0x2115('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2115('0x3')](0x0);var events={'afterCreate':_0x2115('0x4'),'afterUpdate':_0x2115('0x5'),'afterDestroy':_0x2115('0x6')};function emitEvent(_0x3b8dfa){return function(_0x4d0f31,_0x1e8a26,_0x5c17b3){WhatsappMessageEvents[_0x2115('0x7')](_0x3b8dfa+':'+_0x4d0f31['id'],_0x4d0f31);WhatsappMessageEvents[_0x2115('0x7')](_0x3b8dfa,_0x4d0f31);_0x5c17b3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 13a826e..e11ac1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff5=['whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','catch','WhatsappAccount','find','WhatsappAccountId','type','twilio','authToken','phone','accountSid','messages','create','whatsapp:','remote','/status?token=','update','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','application/json','message_id','statuses','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','moment','request-promise','node-fetch','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage'];(function(_0x18d486,_0x59d5bb){var _0x1f39d0=function(_0x26bdae){while(--_0x26bdae){_0x18d486['push'](_0x18d486['shift']());}};_0x1f39d0(++_0x59d5bb);}(_0x6ff5,0xab));var _0x56ff=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x6ff5[_0x432682];return _0x463d05;};'use strict';var _=require(_0x56ff('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x56ff('0x1'));var BPromise=require('bluebird');var rp=require(_0x56ff('0x2'));var fetch=require(_0x56ff('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x56ff('0x4'));var attributes=require(_0x56ff('0x5'));module[_0x56ff('0x6')]=function(_0x3f06be,_0x1f7c30){return _0x3f06be[_0x56ff('0x7')](_0x56ff('0x8'),attributes,{'tableName':_0x56ff('0x9'),'paranoid':![],'indexes':[{'name':_0x56ff('0xa'),'fields':[_0x56ff('0xa')]},{'name':_0x56ff('0xb'),'fields':[_0x56ff('0xc')],'type':_0x56ff('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x291c5c,_0x12a622,_0x2ea094){var _0x7d3fd0=_0x3f06be[_0x56ff('0xe')];var _0x243a54=_0x291c5c[_0x56ff('0xf')]({'plain':!![]});if(_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()==='in'||_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()===_0x56ff('0x12')&&!_0x243a54[_0x56ff('0x13')]&&!_[_0x56ff('0x14')](_0x243a54[_0x56ff('0x15')])){_0x7d3fd0[_0x56ff('0x16')][_0x56ff('0x17')]({'where':{'id':_0x243a54[_0x56ff('0x18')]}})[_0x56ff('0x19')](function(_0x135b3b){if(_0x135b3b){_0x135b3b['update']({'lastMsgAt':_0x243a54[_0x56ff('0x1a')],'lastMsgDirection':_0x243a54[_0x56ff('0x10')][_0x56ff('0x11')]()});}})[_0x56ff('0x1b')](function(_0x227d5f){console['error'](_0x227d5f);});}if(_0x243a54['direction']===_0x56ff('0x12')&&!_0x243a54[_0x56ff('0x13')]){var _0x5d5c08;_0x7d3fd0[_0x56ff('0x1c')][_0x56ff('0x1d')]({'where':{'id':_0x243a54[_0x56ff('0x1e')]},'raw':!![]})[_0x56ff('0x19')](function(_0x5c4378){_0x5d5c08=_0x5c4378;if(_0x5d5c08&&_0x5d5c08[_0x56ff('0x1f')]){switch(_0x5d5c08['type']){case _0x56ff('0x20'):var _0x474d8d=require(_0x56ff('0x20'));if(_0x5d5c08['accountSid']&&_0x5d5c08[_0x56ff('0x21')]&&_0x5d5c08[_0x56ff('0x22')]){var _0x133d85=new _0x474d8d(_0x5d5c08[_0x56ff('0x23')],_0x5d5c08[_0x56ff('0x21')]);_0x133d85[_0x56ff('0x24')][_0x56ff('0x25')]({'body':_0x243a54[_0x56ff('0xc')],'to':_0x56ff('0x26')+_0x243a54[_0x56ff('0x22')],'from':_0x56ff('0x26')+_0x5d5c08[_0x56ff('0x22')],'statusCallback':_0x5d5c08[_0x56ff('0x27')]+'/api/whatsapp/messages/'+_0x243a54['id']+_0x56ff('0x28')+_0x5d5c08['token']})['then'](function(_0x494055){if(_0x494055['sid']){return _0x291c5c[_0x56ff('0x29')]({'messageId':_0x494055[_0x56ff('0x2a')]});}})[_0x56ff('0x1b')](function(_0x11f3df){logger[_0x56ff('0x2b')](_0x56ff('0x2c'),'afterCreate',_0x56ff('0x20'),util[_0x56ff('0x2d')](_0x11f3df,{'showHidden':![],'depth':null}));});}else{logger[_0x56ff('0x2b')](_0x56ff('0x2c'),_0x56ff('0x2e'),_0x56ff('0x20'),_0x56ff('0x2f'));}break;case _0x56ff('0x30'):var _0x36429f=_0x5d5c08['accountSid'];var _0x347ea4=_0x5d5c08[_0x56ff('0x21')];var _0x24937e=_0x5d5c08[_0x56ff('0x31')]+_0x56ff('0x32')+_0x36429f+_0x56ff('0x33');var _0x2eb700={'to':[_0x243a54['phone']],'message':{'type':'text','text':_0x243a54['body']}};var _0x5b6bdc={'method':_0x56ff('0x34'),'uri':_0x24937e,'headers':{'Authorization':'Bearer\x20'+_0x347ea4,'Content-Type':_0x56ff('0x35')},'body':_0x2eb700,'json':!![]};rp(_0x5b6bdc)[_0x56ff('0x19')](function(_0x11fbf1){if(_0x11fbf1['statuses'][0x0][_0x56ff('0x36')]){return _0x291c5c[_0x56ff('0x29')]({'messageId':_0x11fbf1[_0x56ff('0x37')][0x0]['message_id']});}})[_0x56ff('0x1b')](function(_0x3144ff){logger['err'](_0x56ff('0x38'),_0x3144ff);});break;}}})[_0x56ff('0x39')](function(){_0x2ea094();});}else{_0x2ea094();}}},'charset':_0x56ff('0x3a'),'collate':_0x56ff('0x3b')});};
\ No newline at end of file
+var _0x5aa1=['exports','define','whatsapp_messages','messageId','body','FULLTEXT','models','get','direction','secret','isNil','UserId','WhatsappInteraction','findOne','then','update','createdAt','error','out','WhatsappAccount','find','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/api/whatsapp/messages/','token','sid','catch','afterCreate','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','Bearer\x20','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','node-fetch','rimraf','../../config/environment','./whatsappMessage.attributes'];(function(_0x47da54,_0x4f91e1){var _0x4d6188=function(_0x4aaca9){while(--_0x4aaca9){_0x47da54['push'](_0x47da54['shift']());}};_0x4d6188(++_0x4f91e1);}(_0x5aa1,0x158));var _0x15aa=function(_0x567ca1,_0x29d97c){_0x567ca1=_0x567ca1-0x0;var _0x2eb48a=_0x5aa1[_0x567ca1];return _0x2eb48a;};'use strict';var _=require(_0x15aa('0x0'));var util=require(_0x15aa('0x1'));var logger=require(_0x15aa('0x2'))(_0x15aa('0x3'));var moment=require(_0x15aa('0x4'));var BPromise=require('bluebird');var rp=require(_0x15aa('0x5'));var fetch=require(_0x15aa('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x15aa('0x7'));var config=require(_0x15aa('0x8'));var attributes=require(_0x15aa('0x9'));module[_0x15aa('0xa')]=function(_0x4cc83a,_0xd6a173){return _0x4cc83a[_0x15aa('0xb')]('WhatsappMessage',attributes,{'tableName':_0x15aa('0xc'),'paranoid':![],'indexes':[{'name':_0x15aa('0xd'),'fields':['messageId']},{'name':'fti_whatsapp_messages','fields':[_0x15aa('0xe')],'type':_0x15aa('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x160b0a,_0x1371fb,_0x549b4a){var _0x3d6380=_0x4cc83a[_0x15aa('0x10')];var _0x3afc58=_0x160b0a[_0x15aa('0x11')]({'plain':!![]});if(_0x3afc58[_0x15aa('0x12')]['toLowerCase']()==='in'||_0x3afc58[_0x15aa('0x12')]['toLowerCase']()==='out'&&!_0x3afc58[_0x15aa('0x13')]&&!_[_0x15aa('0x14')](_0x3afc58[_0x15aa('0x15')])){_0x3d6380[_0x15aa('0x16')][_0x15aa('0x17')]({'where':{'id':_0x3afc58['WhatsappInteractionId']}})[_0x15aa('0x18')](function(_0x2aea0e){if(_0x2aea0e){_0x2aea0e[_0x15aa('0x19')]({'lastMsgAt':_0x3afc58[_0x15aa('0x1a')],'lastMsgDirection':_0x3afc58[_0x15aa('0x12')]['toLowerCase']()});}})['catch'](function(_0x13853f){console[_0x15aa('0x1b')](_0x13853f);});}if(_0x3afc58[_0x15aa('0x12')]===_0x15aa('0x1c')&&!_0x3afc58['secret']){var _0x47c4e8;_0x3d6380[_0x15aa('0x1d')][_0x15aa('0x1e')]({'where':{'id':_0x3afc58['WhatsappAccountId']},'raw':!![]})[_0x15aa('0x18')](function(_0x681169){_0x47c4e8=_0x681169;if(_0x47c4e8&&_0x47c4e8[_0x15aa('0x1f')]){switch(_0x47c4e8[_0x15aa('0x1f')]){case _0x15aa('0x20'):var _0x2d76b2=require(_0x15aa('0x20'));if(_0x47c4e8[_0x15aa('0x21')]&&_0x47c4e8[_0x15aa('0x22')]&&_0x47c4e8[_0x15aa('0x23')]){var _0x4746ac=new _0x2d76b2(_0x47c4e8[_0x15aa('0x21')],_0x47c4e8['authToken']);_0x4746ac[_0x15aa('0x24')][_0x15aa('0x25')]({'body':_0x3afc58['body'],'to':_0x15aa('0x26')+_0x3afc58[_0x15aa('0x23')],'from':_0x15aa('0x26')+_0x47c4e8[_0x15aa('0x23')],'statusCallback':_0x47c4e8[_0x15aa('0x27')]+_0x15aa('0x28')+_0x3afc58['id']+'/status?token='+_0x47c4e8[_0x15aa('0x29')]})[_0x15aa('0x18')](function(_0x2c3ba2){if(_0x2c3ba2[_0x15aa('0x2a')]){return _0x160b0a[_0x15aa('0x19')]({'messageId':_0x2c3ba2[_0x15aa('0x2a')]});}})[_0x15aa('0x2b')](function(_0x2bf375){logger[_0x15aa('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x15aa('0x2c'),_0x15aa('0x20'),util['inspect'](_0x2bf375,{'showHidden':![],'depth':null}));});}else{logger[_0x15aa('0x1b')](_0x15aa('0x2d'),_0x15aa('0x2c'),'twilio',_0x15aa('0x2e'));}break;case _0x15aa('0x2f'):var _0x262314=_0x47c4e8['accountSid'];var _0x3432aa=_0x47c4e8[_0x15aa('0x22')];var _0x3710b9=_0x47c4e8[_0x15aa('0x30')]+_0x15aa('0x31')+_0x262314+_0x15aa('0x32');var _0x18e226={'to':[_0x3afc58[_0x15aa('0x23')]],'message':{'type':'text','text':_0x3afc58['body']}};var _0x3ff7f1={'method':_0x15aa('0x33'),'uri':_0x3710b9,'headers':{'Authorization':_0x15aa('0x34')+_0x3432aa,'Content-Type':'application/json'},'body':_0x18e226,'json':!![]};rp(_0x3ff7f1)[_0x15aa('0x18')](function(_0x19e07e){if(_0x19e07e[_0x15aa('0x35')][0x0]['message_id']){return _0x160b0a[_0x15aa('0x19')]({'messageId':_0x19e07e['statuses'][0x0][_0x15aa('0x36')]});}})[_0x15aa('0x2b')](function(_0x170490){logger[_0x15aa('0x37')](_0x15aa('0x38'),_0x170490);});break;}}})['finally'](function(){_0x549b4a();});}else{_0x549b4a();}}},'charset':_0x15aa('0x39'),'collate':_0x15aa('0x3a')});};
\ No newline at end of file
index 5a8fbca..67c4612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1843=['create','body','options','raw','stringify','lodash','moment','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','then','WhatsappMessage,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage'];(function(_0x20c3c7,_0x8f099a){var _0x30f5bb=function(_0x8ec9e0){while(--_0x8ec9e0){_0x20c3c7['push'](_0x20c3c7['shift']());}};_0x30f5bb(++_0x8f099a);}(_0x1843,0x7d));var _0x3184=function(_0x527fd3,_0x8311fd){_0x527fd3=_0x527fd3-0x0;var _0xfcd113=_0x1843[_0x527fd3];return _0xfcd113;};'use strict';var _=require(_0x3184('0x0'));var util=require('util');var moment=require(_0x3184('0x1'));var BPromise=require('bluebird');var rs=require(_0x3184('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3184('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x3184('0x4'));var jayson=require(_0x3184('0x5'));var client=jayson[_0x3184('0x6')][_0x3184('0x7')]({'port':0x232a});config[_0x3184('0x8')]=_[_0x3184('0x9')](config['redis'],{'host':_0x3184('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappMessage.socket')[_0x3184('0xb')](socket);function respondWithRpcPromise(_0x2092aa,_0x3671c8,_0x211f8b){return new BPromise(function(_0x1cca44,_0x4e6d12){return client[_0x3184('0xc')](_0x2092aa,_0x211f8b)[_0x3184('0xd')](function(_0x1a8761){logger['info'](_0x3184('0xe'),_0x3671c8,'request\x20sent');logger[_0x3184('0xf')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3671c8,_0x3184('0x10'),JSON['stringify'](_0x1a8761));if(_0x1a8761[_0x3184('0x11')]){if(_0x1a8761['error'][_0x3184('0x12')]===0x1f4){logger[_0x3184('0x11')](_0x3184('0xe'),_0x3671c8,_0x1a8761[_0x3184('0x11')]['message']);return _0x4e6d12(_0x1a8761[_0x3184('0x11')][_0x3184('0x13')]);}logger['error'](_0x3184('0xe'),_0x3671c8,_0x1a8761[_0x3184('0x11')][_0x3184('0x13')]);return _0x1cca44(_0x1a8761[_0x3184('0x11')]['message']);}else{logger[_0x3184('0x14')](_0x3184('0xe'),_0x3671c8,'request\x20sent');_0x1cca44(_0x1a8761[_0x3184('0x15')][_0x3184('0x13')]);}})[_0x3184('0x16')](function(_0x241304){logger[_0x3184('0x11')](_0x3184('0xe'),_0x3671c8,_0x241304);_0x4e6d12(_0x241304);});});}exports[_0x3184('0x17')]=function(_0x20311b){var _0x253e22=this;return new Promise(function(_0x3b2a73,_0x316e22){return db[_0x3184('0x18')][_0x3184('0x19')](_0x20311b[_0x3184('0x1a')],{'raw':_0x20311b[_0x3184('0x1b')]?_0x20311b[_0x3184('0x1b')][_0x3184('0x1c')]===undefined?!![]:![]:!![]})[_0x3184('0xd')](function(_0x5deea7){logger[_0x3184('0x14')]('CreateWhatsappMessage',_0x20311b);logger[_0x3184('0xf')](_0x3184('0x17'),_0x20311b,JSON[_0x3184('0x1d')](_0x5deea7));_0x3b2a73(_0x5deea7);})[_0x3184('0x16')](function(_0x50e0b2){logger[_0x3184('0x11')](_0x3184('0x17'),_0x50e0b2[_0x3184('0x13')],_0x20311b);_0x316e22(_0x253e22[_0x3184('0x11')](0x1f4,_0x50e0b2['message']));});});};
\ No newline at end of file
+var _0xf565=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','WhatsappMessage,\x20%s,\x20%s','message','error','result','catch','CreateWhatsappMessage','WhatsappMessage','body','options','debug'];(function(_0x360c04,_0x25cfd4){var _0x2a104f=function(_0x4ca50f){while(--_0x4ca50f){_0x360c04['push'](_0x360c04['shift']());}};_0x2a104f(++_0x25cfd4);}(_0xf565,0x1ef));var _0x5f56=function(_0x4bee7c,_0x128b99){_0x4bee7c=_0x4bee7c-0x0;var _0x3777d7=_0xf565[_0x4bee7c];return _0x3777d7;};'use strict';var _=require(_0x5f56('0x0'));var util=require(_0x5f56('0x1'));var moment=require(_0x5f56('0x2'));var BPromise=require(_0x5f56('0x3'));var rs=require(_0x5f56('0x4'));var fs=require('fs');var Redis=require(_0x5f56('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5f56('0x6'));var logger=require('../../config/logger')(_0x5f56('0x7'));var config=require(_0x5f56('0x8'));var jayson=require(_0x5f56('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x5f56('0xa')]=_[_0x5f56('0xb')](config[_0x5f56('0xa')],{'host':_0x5f56('0xc'),'port':0x18eb});var socket=require(_0x5f56('0xd'))(new Redis(config['redis']));require(_0x5f56('0xe'))[_0x5f56('0xf')](socket);function respondWithRpcPromise(_0x46369c,_0x38c68d,_0x19d080){return new BPromise(function(_0x46473c,_0xdb5b5e){return client[_0x5f56('0x10')](_0x46369c,_0x19d080)[_0x5f56('0x11')](function(_0x42e1b1){logger[_0x5f56('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x38c68d,_0x5f56('0x13'));logger['debug'](_0x5f56('0x14'),_0x38c68d,'request\x20sent',JSON[_0x5f56('0x15')](_0x42e1b1));if(_0x42e1b1['error']){if(_0x42e1b1['error'][_0x5f56('0x16')]===0x1f4){logger['error'](_0x5f56('0x17'),_0x38c68d,_0x42e1b1['error'][_0x5f56('0x18')]);return _0xdb5b5e(_0x42e1b1[_0x5f56('0x19')][_0x5f56('0x18')]);}logger[_0x5f56('0x19')]('WhatsappMessage,\x20%s,\x20%s',_0x38c68d,_0x42e1b1[_0x5f56('0x19')][_0x5f56('0x18')]);return _0x46473c(_0x42e1b1[_0x5f56('0x19')][_0x5f56('0x18')]);}else{logger['info'](_0x5f56('0x17'),_0x38c68d,'request\x20sent');_0x46473c(_0x42e1b1[_0x5f56('0x1a')][_0x5f56('0x18')]);}})[_0x5f56('0x1b')](function(_0x139f89){logger['error'](_0x5f56('0x17'),_0x38c68d,_0x139f89);_0xdb5b5e(_0x139f89);});});}exports[_0x5f56('0x1c')]=function(_0x17c5ea){var _0x16ed87=this;return new Promise(function(_0x3735f1,_0xd5dce){return db[_0x5f56('0x1d')]['create'](_0x17c5ea[_0x5f56('0x1e')],{'raw':_0x17c5ea[_0x5f56('0x1f')]?_0x17c5ea[_0x5f56('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x5f56('0x11')](function(_0x3d71bb){logger[_0x5f56('0x12')](_0x5f56('0x1c'),_0x17c5ea);logger[_0x5f56('0x20')](_0x5f56('0x1c'),_0x17c5ea,JSON['stringify'](_0x3d71bb));_0x3735f1(_0x3d71bb);})['catch'](function(_0x42ce37){logger[_0x5f56('0x19')]('CreateWhatsappMessage',_0x42ce37[_0x5f56('0x18')],_0x17c5ea);_0xd5dce(_0x16ed87[_0x5f56('0x19')](0x1f4,_0x42ce37[_0x5f56('0x18')]));});});};
\ No newline at end of file
index 509456e..1cbfed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove','update'];(function(_0x53cb10,_0x2ffc93){var _0x55ee03=function(_0x4d4b1a){while(--_0x4d4b1a){_0x53cb10['push'](_0x53cb10['shift']());}};_0x55ee03(++_0x2ffc93);}(_0x6f7a,0xfc));var _0xa6f7=function(_0xe76cc0,_0x4fa572){_0xe76cc0=_0xe76cc0-0x0;var _0x3609f1=_0x6f7a[_0xe76cc0];return _0x3609f1;};'use strict';var WhatsappMessageEvents=require(_0xa6f7('0x0'));var events=[_0xa6f7('0x1'),_0xa6f7('0x2'),_0xa6f7('0x3')];function createListener(_0x1ed59d,_0x1522fc){return function(_0x8e0057){_0x1522fc['emit'](_0x1ed59d,_0x8e0057);};}function removeListener(_0x31c175,_0x4414e8){return function(){WhatsappMessageEvents[_0xa6f7('0x4')](_0x31c175,_0x4414e8);};}exports[_0xa6f7('0x5')]=function(_0x1c0ddc){for(var _0x4f931e=0x0,_0x4b12dc=events[_0xa6f7('0x6')];_0x4f931e<_0x4b12dc;_0x4f931e++){var _0x3be26b=events[_0x4f931e];var _0x5af72f=createListener(_0xa6f7('0x7')+_0x3be26b,_0x1c0ddc);WhatsappMessageEvents['on'](_0x3be26b,_0x5af72f);}};
\ No newline at end of file
+var _0x5229=['register','length','./whatsappMessage.events','save','remove','update','emit','removeListener'];(function(_0x464d1b,_0x4d4525){var _0x1b21c0=function(_0x43ab20){while(--_0x43ab20){_0x464d1b['push'](_0x464d1b['shift']());}};_0x1b21c0(++_0x4d4525);}(_0x5229,0x8a));var _0x9522=function(_0x58f5d6,_0x4627f7){_0x58f5d6=_0x58f5d6-0x0;var _0x2c5b3d=_0x5229[_0x58f5d6];return _0x2c5b3d;};'use strict';var WhatsappMessageEvents=require(_0x9522('0x0'));var events=[_0x9522('0x1'),_0x9522('0x2'),_0x9522('0x3')];function createListener(_0xcd93f3,_0x22b1e0){return function(_0x523ccc){_0x22b1e0[_0x9522('0x4')](_0xcd93f3,_0x523ccc);};}function removeListener(_0x266284,_0x56abe9){return function(){WhatsappMessageEvents[_0x9522('0x5')](_0x266284,_0x56abe9);};}exports[_0x9522('0x6')]=function(_0x87e734){for(var _0x3c950e=0x0,_0x587fcc=events[_0x9522('0x7')];_0x3c950e<_0x587fcc;_0x3c950e++){var _0x1ac46d=events[_0x3c950e];var _0x5df662=createListener('whatsappMessage:'+_0x1ac46d,_0x87e734);WhatsappMessageEvents['on'](_0x1ac46d,_0x5df662);}};
\ No newline at end of file
index e3d71c8..f06a283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x050f=['destroy','removeTeams','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete'];(function(_0x4d53e9,_0x5d054b){var _0x2774e7=function(_0xb5d200){while(--_0xb5d200){_0x4d53e9['push'](_0x4d53e9['shift']());}};_0x2774e7(++_0x5d054b);}(_0x050f,0xd5));var _0xf050=function(_0x311799,_0x397e8e){_0x311799=_0x311799-0x0;var _0x274410=_0x050f[_0x311799];return _0x274410;};'use strict';var multer=require('multer');var util=require(_0xf050('0x0'));var path=require(_0xf050('0x1'));var timeout=require(_0xf050('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf050('0x3'));var auth=require(_0xf050('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf050('0x5'));var controller=require(_0xf050('0x6'));router[_0xf050('0x7')]('/',auth[_0xf050('0x8')](),controller[_0xf050('0x9')]);router[_0xf050('0x7')](_0xf050('0xa'),auth[_0xf050('0x8')](),controller[_0xf050('0xb')]);router[_0xf050('0x7')](_0xf050('0xc'),auth['isAuthenticated'](),controller[_0xf050('0xd')]);router[_0xf050('0x7')](_0xf050('0xe'),auth['isAuthenticated'](),controller[_0xf050('0xf')]);router['get'](_0xf050('0x10'),auth['isAuthenticated'](),controller[_0xf050('0x11')]);router[_0xf050('0x7')](_0xf050('0x12'),auth[_0xf050('0x8')](),controller[_0xf050('0x13')]);router[_0xf050('0x14')]('/',auth[_0xf050('0x8')](),controller[_0xf050('0x15')]);router[_0xf050('0x14')]('/:id/teams',auth[_0xf050('0x8')](),controller[_0xf050('0x16')]);router[_0xf050('0x14')](_0xf050('0x12'),auth[_0xf050('0x8')](),controller[_0xf050('0x17')]);router[_0xf050('0x18')](_0xf050('0xc'),auth[_0xf050('0x8')](),controller[_0xf050('0x19')]);router[_0xf050('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0xf050('0x1b')]);router[_0xf050('0x1a')](_0xf050('0x10'),auth[_0xf050('0x8')](),controller[_0xf050('0x1c')]);router['delete'](_0xf050('0x12'),auth[_0xf050('0x8')](),controller['removeAgents']);module[_0xf050('0x1d')]=router;
\ No newline at end of file
+var _0xe48e=['/:id/members','isAuthenticated','/:id/teams','getTeams','/:id/users','post','addTeams','addAgents','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','index','/describe','/:id','show'];(function(_0xdbc443,_0x2d68c4){var _0x5eccd3=function(_0x557ff3){while(--_0x557ff3){_0xdbc443['push'](_0xdbc443['shift']());}};_0x5eccd3(++_0x2d68c4);}(_0xe48e,0x109));var _0xee48=function(_0x1b0ee5,_0x4c43ea){_0x1b0ee5=_0x1b0ee5-0x0;var _0x35276c=_0xe48e[_0x1b0ee5];return _0x35276c;};'use strict';var multer=require(_0xee48('0x0'));var util=require('util');var path=require(_0xee48('0x1'));var timeout=require(_0xee48('0x2'));var express=require(_0xee48('0x3'));var router=express[_0xee48('0x4')]();var fs_extra=require(_0xee48('0x5'));var auth=require(_0xee48('0x6'));var interaction=require(_0xee48('0x7'));var config=require(_0xee48('0x8'));var controller=require(_0xee48('0x9'));router[_0xee48('0xa')]('/',auth['isAuthenticated'](),controller[_0xee48('0xb')]);router[_0xee48('0xa')](_0xee48('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xee48('0xa')](_0xee48('0xd'),auth['isAuthenticated'](),controller[_0xee48('0xe')]);router['get'](_0xee48('0xf'),auth[_0xee48('0x10')](),controller['getMembers']);router[_0xee48('0xa')](_0xee48('0x11'),auth['isAuthenticated'](),controller[_0xee48('0x12')]);router[_0xee48('0xa')](_0xee48('0x13'),auth[_0xee48('0x10')](),controller['getAgents']);router[_0xee48('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0xee48('0x14')](_0xee48('0x11'),auth[_0xee48('0x10')](),controller[_0xee48('0x15')]);router[_0xee48('0x14')](_0xee48('0x13'),auth['isAuthenticated'](),controller[_0xee48('0x16')]);router['put'](_0xee48('0xd'),auth[_0xee48('0x10')](),controller[_0xee48('0x17')]);router[_0xee48('0x18')]('/:id',auth[_0xee48('0x10')](),controller[_0xee48('0x19')]);router['delete'](_0xee48('0x11'),auth[_0xee48('0x10')](),controller[_0xee48('0x1a')]);router[_0xee48('0x18')](_0xee48('0x13'),auth[_0xee48('0x10')](),controller['removeAgents']);module[_0xee48('0x1b')]=router;
\ No newline at end of file
index 6c52629..ec99d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca56=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3e3ca8,_0x58ec9e){var _0x5f39a0=function(_0x1ae644){while(--_0x1ae644){_0x3e3ca8['push'](_0x3e3ca8['shift']());}};_0x5f39a0(++_0x58ec9e);}(_0xca56,0xee));var _0x6ca5=function(_0x1e6267,_0x459df1){_0x1e6267=_0x1e6267-0x0;var _0xba14c7=_0xca56[_0x1e6267];return _0xba14c7;};'use strict';var Sequelize=require(_0x6ca5('0x0'));module[_0x6ca5('0x1')]={'name':{'type':Sequelize[_0x6ca5('0x2')],'unique':_0x6ca5('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x6ca5('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6ca5('0x5')](_0x6ca5('0x6'),_0x6ca5('0x7'),_0x6ca5('0x8'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8d53=['sequelize','exports','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','STRING'];(function(_0x5cbc77,_0x50a049){var _0x1e6c64=function(_0x3095cb){while(--_0x3095cb){_0x5cbc77['push'](_0x5cbc77['shift']());}};_0x1e6c64(++_0x50a049);}(_0x8d53,0x1c2));var _0x38d5=function(_0x35a85d,_0x464bca){_0x35a85d=_0x35a85d-0x0;var _0x3257d3=_0x8d53[_0x35a85d];return _0x3257d3;};'use strict';var Sequelize=require(_0x38d5('0x0'));module[_0x38d5('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x38d5('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x38d5('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x38d5('0x4')](_0x38d5('0x5'),_0x38d5('0x6'),_0x38d5('0x7'))},'description':{'type':Sequelize[_0x38d5('0x8')]}};
\ No newline at end of file
index a0787e6..cc52a14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15d2=['from','team_has_whatsapp_queues','user_has_teams','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userWhatsappQueue:save','isArray','userWhatsappQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../config/license/hardware','../../config/logger','../../config/utils','redis','defaults','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','stack','name','send','map','WhatsappQueue','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','WhatsappQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserWhatsappQueue','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','emit','removeTeams','select','field','tq.TeamId'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x15d2,0x1ae));var _0x215d=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0x15d2[_0x58965a];return _0x254efc;};'use strict';var emlformat=require(_0x215d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x215d('0x1'));var jsonpatch=require(_0x215d('0x2'));var rp=require(_0x215d('0x3'));var moment=require('moment');var BPromise=require(_0x215d('0x4'));var Mustache=require(_0x215d('0x5'));var util=require('util');var path=require(_0x215d('0x6'));var sox=require('sox');var csv=require(_0x215d('0x7'));var ejs=require(_0x215d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x215d('0x9'));var squel=require('squel');var crypto=require(_0x215d('0xa'));var jsforce=require(_0x215d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x215d('0x7'));var querystring=require(_0x215d('0xc'));var Papa=require(_0x215d('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x215d('0xe'));var logger=require(_0x215d('0xf'))('api');var utils=require(_0x215d('0x10'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x215d('0x11')]=_[_0x215d('0x12')](config[_0x215d('0x11')],{'host':'localhost','port':0x18eb});var socket=require(_0x215d('0x13'))(new Redis(config['redis']));require(_0x215d('0x14'))['register'](socket);function respondWithStatusCode(_0x351c26,_0x35b731){_0x35b731=_0x35b731||0xcc;return function(_0x51a469){if(_0x51a469){return _0x351c26[_0x215d('0x15')](_0x35b731);}return _0x351c26[_0x215d('0x16')](_0x35b731)[_0x215d('0x17')]();};}function respondWithResult(_0x143b8c,_0x551c3f){_0x551c3f=_0x551c3f||0xc8;return function(_0x270b0b){if(_0x270b0b){return _0x143b8c[_0x215d('0x16')](_0x551c3f)[_0x215d('0x18')](_0x270b0b);}};}function respondWithFilteredResult(_0x30501b,_0x448f48){return function(_0x46b714){if(_0x46b714){var _0x19d661=typeof _0x448f48['offset']===_0x215d('0x19')&&typeof _0x448f48['limit']===_0x215d('0x19');var _0x59b50c=_0x46b714[_0x215d('0x1a')];var _0x8beaf=_0x19d661?0x0:_0x448f48[_0x215d('0x1b')];var _0x410af4=_0x19d661?_0x46b714[_0x215d('0x1a')]:_0x448f48[_0x215d('0x1b')]+_0x448f48[_0x215d('0x1c')];var _0x2b4ff6;if(_0x410af4>=_0x59b50c){_0x410af4=_0x59b50c;_0x2b4ff6=0xc8;}else{_0x2b4ff6=0xce;}_0x30501b['status'](_0x2b4ff6);return _0x30501b[_0x215d('0x1d')](_0x215d('0x1e'),_0x8beaf+'-'+_0x410af4+'/'+_0x59b50c)[_0x215d('0x18')](_0x46b714);}return null;};}function patchUpdates(_0x37c920){return function(_0x286c76){try{jsonpatch[_0x215d('0x1f')](_0x286c76,_0x37c920,!![]);}catch(_0x133e74){return BPromise[_0x215d('0x20')](_0x133e74);}return _0x286c76[_0x215d('0x21')]();};}function saveUpdates(_0x2dd889,_0x16d59f){return function(_0x25a6a6){if(_0x25a6a6){return _0x25a6a6['update'](_0x2dd889)[_0x215d('0x22')](function(_0x5c8d3d){return _0x5c8d3d;});}return null;};}function removeEntity(_0xd61889,_0x3513dc){return function(_0x317962){if(_0x317962){return _0x317962[_0x215d('0x23')]()[_0x215d('0x22')](function(){var _0x13c54b=_0x317962[_0x215d('0x24')]({'plain':!![]});var _0x53edc7='WhatsappQueues';return db[_0x215d('0x25')][_0x215d('0x23')]({'where':{'type':_0x53edc7,'resourceId':_0x13c54b['id']}})[_0x215d('0x22')](function(){return _0x317962;});})['then'](function(){_0xd61889[_0x215d('0x16')](0xcc)[_0x215d('0x17')]();});}};}function handleEntityNotFound(_0x383a08,_0x2c5094){return function(_0x263643){if(!_0x263643){_0x383a08['sendStatus'](0x194);}return _0x263643;};}function handleError(_0x109a7a,_0x1456b1){_0x1456b1=_0x1456b1||0x1f4;return function(_0x523c83){logger['error'](_0x523c83[_0x215d('0x26')]);if(_0x523c83[_0x215d('0x27')]){delete _0x523c83[_0x215d('0x27')];}_0x109a7a[_0x215d('0x16')](_0x1456b1)[_0x215d('0x28')](_0x523c83);};}exports['index']=function(_0x6eac1d,_0x1162e2){var _0x5098c5={},_0x167008={},_0x2c82d8={'count':0x0,'rows':[]};var _0x322ae9=_[_0x215d('0x29')](db[_0x215d('0x2a')][_0x215d('0x2b')],function(_0x481d48){return{'name':_0x481d48[_0x215d('0x2c')],'type':_0x481d48[_0x215d('0x2d')]['key']};});_0x167008[_0x215d('0x2e')]=_[_0x215d('0x29')](_0x322ae9,'name');_0x167008[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x6eac1d['query']);_0x167008[_0x215d('0x31')]=_[_0x215d('0x32')](_0x167008[_0x215d('0x2e')],_0x167008[_0x215d('0x2f')]);_0x5098c5['attributes']=_[_0x215d('0x32')](_0x167008[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x6eac1d[_0x215d('0x2f')]['fields']));_0x5098c5['attributes']=_0x5098c5['attributes'][_0x215d('0x34')]?_0x5098c5[_0x215d('0x35')]:_0x167008[_0x215d('0x2e')];if(!_0x6eac1d[_0x215d('0x2f')][_0x215d('0x36')](_0x215d('0x37'))){_0x5098c5[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x6eac1d['query'][_0x215d('0x1c')]);_0x5098c5[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x6eac1d[_0x215d('0x2f')][_0x215d('0x1b')]);}_0x5098c5[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x6eac1d[_0x215d('0x2f')][_0x215d('0x39')]);_0x5098c5['where']=qs['filters'](_[_0x215d('0x3a')](_0x6eac1d[_0x215d('0x2f')],_0x167008[_0x215d('0x31')]),_0x322ae9);if(_0x6eac1d['query'][_0x215d('0x3b')]){_0x5098c5[_0x215d('0x3c')]=_[_0x215d('0x3d')](_0x5098c5[_0x215d('0x3c')],{'$or':_['map'](_0x322ae9,function(_0x58dbf6){if(_0x58dbf6[_0x215d('0x2d')]!==_0x215d('0x3e')){var _0x21688e={};_0x21688e[_0x58dbf6[_0x215d('0x27')]]={'$like':'%'+_0x6eac1d[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x21688e;}})});}_0x5098c5=_[_0x215d('0x3d')]({},_0x5098c5,_0x6eac1d[_0x215d('0x3f')]);var _0x5d506d={'where':_0x5098c5[_0x215d('0x3c')]};return db[_0x215d('0x2a')][_0x215d('0x1a')](_0x5d506d)[_0x215d('0x22')](function(_0x5ab423){_0x2c82d8[_0x215d('0x1a')]=_0x5ab423;if(_0x6eac1d[_0x215d('0x2f')][_0x215d('0x40')]){_0x5098c5[_0x215d('0x41')]=[{'all':!![]}];}return db[_0x215d('0x2a')][_0x215d('0x42')](_0x5098c5);})[_0x215d('0x22')](function(_0x1181f8){_0x2c82d8[_0x215d('0x43')]=_0x1181f8;return _0x2c82d8;})[_0x215d('0x22')](respondWithFilteredResult(_0x1162e2,_0x5098c5))[_0x215d('0x44')](handleError(_0x1162e2,null));};exports[_0x215d('0x45')]=function(_0x417143,_0x1a6a6b){var _0x48a4c5={'raw':!![],'where':{'id':_0x417143[_0x215d('0x46')]['id']}},_0xf444fc={};_0xf444fc[_0x215d('0x2e')]=_[_0x215d('0x30')](db[_0x215d('0x2a')][_0x215d('0x2b')]);_0xf444fc[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x417143[_0x215d('0x2f')]);_0xf444fc[_0x215d('0x31')]=_['intersection'](_0xf444fc[_0x215d('0x2e')],_0xf444fc[_0x215d('0x2f')]);_0x48a4c5[_0x215d('0x35')]=_[_0x215d('0x32')](_0xf444fc[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x417143[_0x215d('0x2f')][_0x215d('0x33')]));_0x48a4c5['attributes']=_0x48a4c5['attributes']['length']?_0x48a4c5[_0x215d('0x35')]:_0xf444fc[_0x215d('0x2e')];if(_0x417143[_0x215d('0x2f')][_0x215d('0x40')]){_0x48a4c5[_0x215d('0x41')]=[{'all':!![]}];}_0x48a4c5=_['merge']({},_0x48a4c5,_0x417143['options']);return db[_0x215d('0x2a')][_0x215d('0x47')](_0x48a4c5)[_0x215d('0x22')](handleEntityNotFound(_0x1a6a6b,null))['then'](respondWithResult(_0x1a6a6b,null))[_0x215d('0x44')](handleError(_0x1a6a6b,null));};exports[_0x215d('0x48')]=function(_0x225d66,_0x52d683){return db[_0x215d('0x2a')][_0x215d('0x48')](_0x225d66[_0x215d('0x49')],{})[_0x215d('0x22')](function(_0x2afce5){var _0x45f413=_0x225d66[_0x215d('0x4a')][_0x215d('0x24')]({'plain':!![]});if(!_0x45f413)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x45f413[_0x215d('0x4b')]==='user'){var _0x440216=_0x2afce5[_0x215d('0x24')]({'plain':!![]});var _0x46ca40=_0x215d('0x4c');return db['UserProfileSection'][_0x215d('0x47')]({'where':{'name':_0x46ca40,'userProfileId':_0x45f413[_0x215d('0x4d')]},'raw':!![]})[_0x215d('0x22')](function(_0x33714d){if(_0x33714d&&_0x33714d[_0x215d('0x4e')]===0x0){return db['UserProfileResource'][_0x215d('0x48')]({'name':_0x440216[_0x215d('0x27')],'resourceId':_0x440216['id'],'type':_0x33714d[_0x215d('0x27')],'sectionId':_0x33714d['id']},{})[_0x215d('0x22')](function(){return _0x2afce5;});}else{return _0x2afce5;}})[_0x215d('0x44')](function(_0x2372c3){logger['error'](_0x215d('0x4f'),_0x2372c3);throw _0x2372c3;});}return _0x2afce5;})[_0x215d('0x22')](respondWithResult(_0x52d683,0xc9))[_0x215d('0x44')](handleError(_0x52d683,null));};exports['update']=function(_0x11d89e,_0x41b675){if(_0x11d89e[_0x215d('0x49')]['id']){delete _0x11d89e['body']['id'];}return db[_0x215d('0x2a')]['find']({'where':{'id':_0x11d89e['params']['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x41b675,null))[_0x215d('0x22')](saveUpdates(_0x11d89e['body'],null))[_0x215d('0x22')](respondWithResult(_0x41b675,null))[_0x215d('0x44')](handleError(_0x41b675,null));};exports[_0x215d('0x23')]=function(_0xfda493,_0xc883e4){return db[_0x215d('0x2a')][_0x215d('0x47')]({'where':{'id':_0xfda493[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0xc883e4,null))[_0x215d('0x22')](removeEntity(_0xc883e4,null))[_0x215d('0x44')](handleError(_0xc883e4,null));};exports[_0x215d('0x50')]=function(_0x38015a,_0x2c2b35){return db[_0x215d('0x2a')]['describe']()[_0x215d('0x22')](respondWithResult(_0x2c2b35,null))['catch'](handleError(_0x2c2b35,null));};exports['getMembers']=function(_0x6b4a64,_0x2332f7,_0x459b72){var _0x55156d={'raw':!![],'where':{}},_0x497d1c={},_0x5655ea;return db[_0x215d('0x2a')][_0x215d('0x51')]({'where':{'id':_0x6b4a64[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x2332f7,null))[_0x215d('0x22')](function(_0x53f64a){if(_0x53f64a){_0x5655ea=_0x53f64a[_0x215d('0x24')]({'plain':!![]});_0x497d1c[_0x215d('0x2e')]=_[_0x215d('0x30')](db['UserWhatsappQueue'][_0x215d('0x2b')]);_0x497d1c['query']=_['keys'](_0x6b4a64['query']);_0x497d1c['filters']=_[_0x215d('0x32')](_0x497d1c['model'],_0x497d1c[_0x215d('0x2f')]);_0x55156d[_0x215d('0x35')]=_['intersection'](_0x497d1c[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x33')]));_0x55156d[_0x215d('0x35')]=_0x55156d[_0x215d('0x35')][_0x215d('0x34')]?_0x55156d[_0x215d('0x35')]:_0x497d1c[_0x215d('0x2e')];if(!_0x6b4a64[_0x215d('0x2f')]['hasOwnProperty'](_0x215d('0x37'))){_0x55156d[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x1c')]);_0x55156d['offset']=qs['offset'](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x1b')]);}_0x55156d[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x6b4a64[_0x215d('0x2f')][_0x215d('0x39')]);_0x55156d[_0x215d('0x3c')]=qs[_0x215d('0x31')](_[_0x215d('0x3a')](_0x6b4a64['query'],_0x497d1c['filters']));_0x55156d[_0x215d('0x3c')]['WhatsappQueueId']=_0x53f64a['id'];if(_0x6b4a64[_0x215d('0x2f')][_0x215d('0x3b')]){_0x55156d[_0x215d('0x3c')]=_['merge'](_0x55156d[_0x215d('0x3c')],{'$or':_['map'](_0x55156d[_0x215d('0x35')],function(_0x4fdef5){var _0x48270d={};_0x48270d[_0x4fdef5]={'$like':'%'+_0x6b4a64[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x48270d;})});}_0x55156d=_[_0x215d('0x3d')]({},_0x55156d,_0x6b4a64[_0x215d('0x3f')]);return db[_0x215d('0x52')][_0x215d('0x42')](_0x55156d);}})[_0x215d('0x22')](function(_0x43d268){if(_0x43d268){return db[_0x215d('0x53')][_0x215d('0x54')]({'where':{'id':_[_0x215d('0x29')](_0x43d268,_0x215d('0x55')),'role':_0x215d('0x56')},'attributes':['id','name',_0x215d('0x57'),_0x215d('0x58'),_0x215d('0x59')]});}})['then'](function(_0x5e0650){if(_0x5e0650){return{'count':_0x5e0650[_0x215d('0x1a')],'rows':_[_0x215d('0x29')](_0x5e0650['rows'],function(_0x3f148f){return{'membername':_0x3f148f[_0x215d('0x27')],'UserId':_0x3f148f['id'],'queue_name':_0x5655ea[_0x215d('0x27')],'WhatsappQueueId':_0x5655ea['id'],'interface':util[_0x215d('0x5a')](_0x215d('0x5b'),'SIP',_0x3f148f[_0x215d('0x27')]),'penalty':0x0,'paused':_0x3f148f[_0x215d('0x57')],'createdAt':_0x3f148f['createdAt'],'updatedAt':_0x3f148f[_0x215d('0x58')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x215d('0x22')](respondWithFilteredResult(_0x2332f7,_0x55156d))['catch'](handleError(_0x2332f7,null));};exports[_0x215d('0x5c')]=function(_0x8dd61c,_0x447500,_0x49fa83){var _0x4d51e5={};var _0x59a836={};var _0x239693;var _0x5386dd;return db[_0x215d('0x2a')][_0x215d('0x51')]({'where':{'id':_0x8dd61c[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x447500,null))[_0x215d('0x22')](function(_0x468faa){if(_0x468faa){_0x239693=_0x468faa;_0x59a836[_0x215d('0x2e')]=_[_0x215d('0x30')](db[_0x215d('0x5d')]['rawAttributes']);_0x59a836[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x8dd61c[_0x215d('0x2f')]);_0x59a836[_0x215d('0x31')]=_['intersection'](_0x59a836[_0x215d('0x2e')],_0x59a836['query']);_0x4d51e5[_0x215d('0x35')]=_[_0x215d('0x32')](_0x59a836[_0x215d('0x2e')],qs['fields'](_0x8dd61c['query'][_0x215d('0x33')]));_0x4d51e5[_0x215d('0x35')]=_0x4d51e5[_0x215d('0x35')]['length']?_0x4d51e5['attributes']:_0x59a836[_0x215d('0x2e')];_0x4d51e5[_0x215d('0x38')]=qs[_0x215d('0x39')](_0x8dd61c[_0x215d('0x2f')][_0x215d('0x39')]);_0x4d51e5[_0x215d('0x3c')]=qs['filters'](_['pick'](_0x8dd61c[_0x215d('0x2f')],_0x59a836['filters']));if(_0x8dd61c[_0x215d('0x2f')][_0x215d('0x3b')]){_0x4d51e5[_0x215d('0x3c')]=_['merge'](_0x4d51e5[_0x215d('0x3c')],{'$or':_[_0x215d('0x29')](_0x4d51e5[_0x215d('0x35')],function(_0x456438){var _0x4f178e={};_0x4f178e[_0x456438]={'$like':'%'+_0x8dd61c['query'][_0x215d('0x3b')]+'%'};return _0x4f178e;})});}_0x4d51e5=_[_0x215d('0x3d')]({},_0x4d51e5,_0x8dd61c[_0x215d('0x3f')]);return _0x239693[_0x215d('0x5c')](_0x4d51e5);}})['then'](function(_0x1a73b3){if(_0x1a73b3){_0x5386dd=_0x1a73b3['length'];if(!_0x8dd61c['query'][_0x215d('0x36')]('nolimit')){_0x4d51e5[_0x215d('0x1c')]=qs['limit'](_0x8dd61c[_0x215d('0x2f')]['limit']);_0x4d51e5[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x8dd61c[_0x215d('0x2f')][_0x215d('0x1b')]);}return _0x239693[_0x215d('0x5c')](_0x4d51e5);}})[_0x215d('0x22')](function(_0x51575e){if(_0x51575e){return _0x51575e?{'count':_0x5386dd,'rows':_0x51575e}:null;}})[_0x215d('0x22')](respondWithResult(_0x447500,null))[_0x215d('0x44')](handleError(_0x447500,null));};exports[_0x215d('0x5e')]=function(_0x5e6cbe,_0x1ba531,_0x58e961){var _0xca6afd=_0x5e6cbe['body'][_0x215d('0x5f')];return db[_0x215d('0x5d')][_0x215d('0x42')]({'where':{'id':_0xca6afd},'attributes':['id'],'include':[{'model':db[_0x215d('0x53')],'as':'Agents','attributes':['id','name',_0x215d('0x60'),_0x215d('0x61'),_0x215d('0x62')],'raw':!![]}]})['then'](function(_0x4f96b9){if(_0x4f96b9){var _0x35bc83=_[_0x215d('0x63')](_0x4f96b9,function(_0x22360f){var _0x3ab565=_0x22360f['get']({'plain':!![]});return _0x3ab565[_0x215d('0x64')];});return db['WhatsappQueue']['find']({'where':{'id':_0x5e6cbe[_0x215d('0x46')]['id']}})['then'](function(_0x180c90){return db[_0x215d('0x65')][_0x215d('0x66')](function(_0x43c443){return _0x180c90[_0x215d('0x5e')](_0xca6afd,{'transaction':_0x43c443})[_0x215d('0x22')](function(){return BPromise[_0x215d('0x67')](_0x35bc83,function(_0x50bae2){return db[_0x215d('0x52')]['findOrCreate']({'where':{'UserId':_0x50bae2['id'],'WhatsappQueueId':_0x5e6cbe[_0x215d('0x46')]['id']},'transaction':_0x43c443});});})[_0x215d('0x22')](function(){_0x35bc83[_0x215d('0x68')](function(_0x4051bc){socket[_0x215d('0x69')]('userWhatsappQueue:save',{'UserId':_0x4051bc['id'],'WhatsappQueueId':_0x180c90['id']});});});});});}})[_0x215d('0x22')](respondWithStatusCode(_0x1ba531,null))[_0x215d('0x44')](handleError(_0x1ba531,null));};exports[_0x215d('0x6a')]=function(_0x54b686,_0x7393f,_0x5a1e9a){return db['Team'][_0x215d('0x42')]({'where':{'id':_0x54b686['query'][_0x215d('0x5f')]},'attributes':['id'],'include':[{'model':db[_0x215d('0x53')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x215d('0x22')](handleEntityNotFound(_0x7393f,null))[_0x215d('0x22')](function(_0x3ad7fe){var _0x359b21=_[_0x215d('0x29')](_0x3ad7fe,'id');var _0x26e2b2=[];var _0x1b5f03=[];var _0x1ba801=squel[_0x215d('0x6b')]();_0x1ba801[_0x215d('0x6c')](_0x215d('0x6d'))[_0x215d('0x6e')](_0x215d('0x6f'),'tq')['join'](_0x215d('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x215d('0x3c')](_0x215d('0x71'),_0x54b686[_0x215d('0x46')]['id']);for(var _0x46539e=0x0;_0x46539e<_0x3ad7fe[_0x215d('0x34')];_0x46539e+=0x1){let _0x435259=_0x3ad7fe[_0x46539e];for(var _0xd467b2=0x0;_0xd467b2<_0x435259[_0x215d('0x64')][_0x215d('0x34')];_0xd467b2+=0x1){let _0x44308c=_0x435259[_0x215d('0x64')][_0xd467b2];var _0x76585d=_0x1ba801[_0x215d('0x72')]();_0x76585d[_0x215d('0x3c')](_0x215d('0x73'),_0x44308c['id']);_0x1b5f03[_0x215d('0x74')](db[_0x215d('0x65')][_0x215d('0x2f')](_0x76585d[_0x215d('0x75')](),{'type':db['sequelize'][_0x215d('0x76')][_0x215d('0x77')]})['then'](function(_0x449e85){if(_0x449e85['length']===0x1){return _0x44308c['id'];}else{var _0x4e86d1=_['every'](_[_0x215d('0x29')](_0x449e85,_0x215d('0x78')),function(_0x51d061){return _[_0x215d('0x79')](_0x359b21,_0x51d061);});if(_0x4e86d1){return _0x44308c['id'];}}}));}}return BPromise[_0x215d('0x7a')](_0x1b5f03)[_0x215d('0x22')](function(_0x10e1a1){_0x26e2b2=_(_0x26e2b2)[_0x215d('0x7b')](_0x10e1a1)[_0x215d('0x7c')]()[_0x215d('0x7d')]();return db[_0x215d('0x2a')][_0x215d('0x47')]({'where':{'id':_0x54b686[_0x215d('0x46')]['id']}})[_0x215d('0x22')](function(_0x4e5cb0){return db[_0x215d('0x65')]['transaction'](function(_0x1a84d4){return _0x4e5cb0[_0x215d('0x6a')](_0x54b686[_0x215d('0x2f')][_0x215d('0x5f')],{'transaction':_0x1a84d4})[_0x215d('0x22')](function(){if(!_[_0x215d('0x7e')](_0x26e2b2)){return _0x4e5cb0[_0x215d('0x7f')](_0x26e2b2,{'transaction':_0x1a84d4});}})['then'](function(){_0x26e2b2[_0x215d('0x68')](function(_0x5909a1){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x5909a1,'WhatsappQueueId':_0x4e5cb0['id']});});});});});});})[_0x215d('0x22')](respondWithStatusCode(_0x7393f,null))[_0x215d('0x44')](handleError(_0x7393f,null));};exports[_0x215d('0x80')]=function(_0x4cce83,_0x450d34,_0x53db61){return db[_0x215d('0x2a')]['find']({'where':{'id':_0x4cce83[_0x215d('0x46')]['id']}})['then'](handleEntityNotFound(_0x450d34,null))[_0x215d('0x22')](function(_0x2f6a2c){if(_0x2f6a2c){return _0x2f6a2c['addAgents'](_0x4cce83[_0x215d('0x49')][_0x215d('0x5f')],_[_0x215d('0x81')](_0x4cce83['body'],['ids','id'])||{})[_0x215d('0x82')](function(_0xc832fe){for(var _0x3d2344=0x0;_0x3d2344<_0x4cce83[_0x215d('0x49')][_0x215d('0x5f')][_0x215d('0x34')];_0x3d2344+=0x1){socket[_0x215d('0x69')](_0x215d('0x83'),{'UserId':Number(_0x4cce83['body'][_0x215d('0x5f')][_0x3d2344]),'WhatsappQueueId':Number(_0x4cce83[_0x215d('0x46')]['id'])});}return _0xc832fe;});}})[_0x215d('0x22')](respondWithResult(_0x450d34,null))['catch'](handleError(_0x450d34,null));};exports[_0x215d('0x7f')]=function(_0x5ebcd3,_0x28dbad,_0x1ef82c){return db['WhatsappQueue'][_0x215d('0x47')]({'where':{'id':_0x5ebcd3['params']['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x28dbad,null))[_0x215d('0x22')](function(_0x58aaed){if(_0x58aaed){return _0x58aaed['removeAgents'](_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')])[_0x215d('0x22')](function(){if(_[_0x215d('0x84')](_0x5ebcd3['query'][_0x215d('0x5f')])){for(var _0x1850c8=0x0;_0x1850c8<_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')][_0x215d('0x34')];_0x1850c8+=0x1){socket[_0x215d('0x69')](_0x215d('0x85'),{'UserId':Number(_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')][_0x1850c8]),'WhatsappQueueId':Number(_0x5ebcd3[_0x215d('0x46')]['id'])});}}else{socket[_0x215d('0x69')](_0x215d('0x85'),{'UserId':Number(_0x5ebcd3[_0x215d('0x2f')][_0x215d('0x5f')]),'WhatsappQueueId':Number(_0x5ebcd3[_0x215d('0x46')]['id'])});}});}})[_0x215d('0x22')](respondWithStatusCode(_0x28dbad,null))['catch'](handleError(_0x28dbad,null));};exports[_0x215d('0x86')]=function(_0x1e358f,_0x4c2326,_0x5f216b){var _0x3fdd01={};var _0x50dd21={};var _0x26dc3f;var _0x3ea223;return db[_0x215d('0x2a')]['findOne']({'where':{'id':_0x1e358f[_0x215d('0x46')]['id']}})[_0x215d('0x22')](handleEntityNotFound(_0x4c2326,null))['then'](function(_0x3fbd2b){if(_0x3fbd2b){_0x26dc3f=_0x3fbd2b;_0x50dd21[_0x215d('0x2e')]=_[_0x215d('0x30')](db['User'][_0x215d('0x2b')]);_0x50dd21[_0x215d('0x2f')]=_[_0x215d('0x30')](_0x1e358f['query']);_0x50dd21['filters']=_[_0x215d('0x32')](_0x50dd21[_0x215d('0x2e')],_0x50dd21[_0x215d('0x2f')]);_0x3fdd01[_0x215d('0x35')]=_['intersection'](_0x50dd21[_0x215d('0x2e')],qs[_0x215d('0x33')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x33')]));_0x3fdd01['attributes']=_0x3fdd01[_0x215d('0x35')]['length']?_0x3fdd01[_0x215d('0x35')]:_0x50dd21[_0x215d('0x2e')];_0x3fdd01[_0x215d('0x38')]=qs['sort'](_0x1e358f['query'][_0x215d('0x39')]);_0x3fdd01[_0x215d('0x3c')]=qs['filters'](_[_0x215d('0x3a')](_0x1e358f['query'],_0x50dd21[_0x215d('0x31')]));if(_0x1e358f[_0x215d('0x2f')]['filter']){_0x3fdd01[_0x215d('0x3c')]=_[_0x215d('0x3d')](_0x3fdd01[_0x215d('0x3c')],{'$or':_['map'](_0x3fdd01[_0x215d('0x35')],function(_0x208d7d){var _0x1f34cc={};_0x1f34cc[_0x208d7d]={'$like':'%'+_0x1e358f[_0x215d('0x2f')][_0x215d('0x3b')]+'%'};return _0x1f34cc;})});}_0x3fdd01=_['merge']({},_0x3fdd01,_0x1e358f[_0x215d('0x3f')]);return _0x26dc3f[_0x215d('0x86')](_0x3fdd01);}})[_0x215d('0x22')](function(_0x55d1b3){if(_0x55d1b3){_0x3ea223=_0x55d1b3[_0x215d('0x34')];if(!_0x1e358f[_0x215d('0x2f')][_0x215d('0x36')](_0x215d('0x37'))){_0x3fdd01[_0x215d('0x1c')]=qs[_0x215d('0x1c')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x1c')]);_0x3fdd01[_0x215d('0x1b')]=qs[_0x215d('0x1b')](_0x1e358f[_0x215d('0x2f')][_0x215d('0x1b')]);}return _0x26dc3f[_0x215d('0x86')](_0x3fdd01);}})['then'](function(_0x2ab1b7){if(_0x2ab1b7){return _0x2ab1b7?{'count':_0x3ea223,'rows':_0x2ab1b7}:null;}})[_0x215d('0x22')](respondWithResult(_0x4c2326,null))['catch'](handleError(_0x4c2326,null));};
\ No newline at end of file
+var _0x8dc8=['SELECT','every','TeamId','includes','all','union','compact','isEmpty','removeAgents','forEach','emit','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','get','WhatsappQueues','UserProfileResource','end','error','stack','name','send','map','WhatsappQueue','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','order','sort','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','UserWhatsappQueue','nolimit','pick','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','whatsappPause','Team','hasOwnProperty','getTeams','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','userWhatsappQueue:save','removeTeams','select','field','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x8dc8,0x13a));var _0x88dc=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x8dc8[_0x2070da];return _0x4f9fe1;};'use strict';var emlformat=require(_0x88dc('0x0'));var rimraf=require(_0x88dc('0x1'));var zipdir=require(_0x88dc('0x2'));var jsonpatch=require(_0x88dc('0x3'));var rp=require(_0x88dc('0x4'));var moment=require('moment');var BPromise=require(_0x88dc('0x5'));var Mustache=require(_0x88dc('0x6'));var util=require('util');var path=require(_0x88dc('0x7'));var sox=require(_0x88dc('0x8'));var csv=require(_0x88dc('0x9'));var ejs=require(_0x88dc('0xa'));var fs=require('fs');var fs_extra=require(_0x88dc('0xb'));var _=require(_0x88dc('0xc'));var squel=require(_0x88dc('0xd'));var crypto=require(_0x88dc('0xe'));var jsforce=require(_0x88dc('0xf'));var deskjs=require(_0x88dc('0x10'));var toCsv=require(_0x88dc('0x9'));var querystring=require(_0x88dc('0x11'));var Papa=require(_0x88dc('0x12'));var Redis=require(_0x88dc('0x13'));var authService=require(_0x88dc('0x14'));var qs=require(_0x88dc('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x88dc('0x16'))(_0x88dc('0x17'));var utils=require(_0x88dc('0x18'));var config=require(_0x88dc('0x19'));var licenseUtil=require(_0x88dc('0x1a'));var db=require(_0x88dc('0x1b'))['db'];config['redis']=_['defaults'](config[_0x88dc('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x88dc('0x1d'))(new Redis(config[_0x88dc('0x1c')]));require(_0x88dc('0x1e'))[_0x88dc('0x1f')](socket);function respondWithStatusCode(_0xe4270b,_0x502f8c){_0x502f8c=_0x502f8c||0xcc;return function(_0x15cacb){if(_0x15cacb){return _0xe4270b[_0x88dc('0x20')](_0x502f8c);}return _0xe4270b['status'](_0x502f8c)['end']();};}function respondWithResult(_0x28581c,_0x112442){_0x112442=_0x112442||0xc8;return function(_0x46101a){if(_0x46101a){return _0x28581c[_0x88dc('0x21')](_0x112442)[_0x88dc('0x22')](_0x46101a);}};}function respondWithFilteredResult(_0x15fbe1,_0x322e9b){return function(_0x59c82a){if(_0x59c82a){var _0x5426ac=typeof _0x322e9b['offset']===_0x88dc('0x23')&&typeof _0x322e9b[_0x88dc('0x24')]===_0x88dc('0x23');var _0x14d757=_0x59c82a['count'];var _0x35e90a=_0x5426ac?0x0:_0x322e9b[_0x88dc('0x25')];var _0x4b33d7=_0x5426ac?_0x59c82a[_0x88dc('0x26')]:_0x322e9b[_0x88dc('0x25')]+_0x322e9b[_0x88dc('0x24')];var _0x5d7edc;if(_0x4b33d7>=_0x14d757){_0x4b33d7=_0x14d757;_0x5d7edc=0xc8;}else{_0x5d7edc=0xce;}_0x15fbe1[_0x88dc('0x21')](_0x5d7edc);return _0x15fbe1['set'](_0x88dc('0x27'),_0x35e90a+'-'+_0x4b33d7+'/'+_0x14d757)[_0x88dc('0x22')](_0x59c82a);}return null;};}function patchUpdates(_0x3e8575){return function(_0xaa71a2){try{jsonpatch[_0x88dc('0x28')](_0xaa71a2,_0x3e8575,!![]);}catch(_0xe4abef){return BPromise[_0x88dc('0x29')](_0xe4abef);}return _0xaa71a2[_0x88dc('0x2a')]();};}function saveUpdates(_0x1e04cf,_0x4165ed){return function(_0x4190ef){if(_0x4190ef){return _0x4190ef[_0x88dc('0x2b')](_0x1e04cf)[_0x88dc('0x2c')](function(_0x2e55ef){return _0x2e55ef;});}return null;};}function removeEntity(_0xb710c1,_0x322854){return function(_0x13a4c7){if(_0x13a4c7){return _0x13a4c7['destroy']()[_0x88dc('0x2c')](function(){var _0x304181=_0x13a4c7[_0x88dc('0x2d')]({'plain':!![]});var _0x4a2988=_0x88dc('0x2e');return db[_0x88dc('0x2f')]['destroy']({'where':{'type':_0x4a2988,'resourceId':_0x304181['id']}})[_0x88dc('0x2c')](function(){return _0x13a4c7;});})['then'](function(){_0xb710c1[_0x88dc('0x21')](0xcc)[_0x88dc('0x30')]();});}};}function handleEntityNotFound(_0x123957,_0x525f3a){return function(_0x5d517b){if(!_0x5d517b){_0x123957[_0x88dc('0x20')](0x194);}return _0x5d517b;};}function handleError(_0x1bea1e,_0x5eb8b5){_0x5eb8b5=_0x5eb8b5||0x1f4;return function(_0x87b5e4){logger[_0x88dc('0x31')](_0x87b5e4[_0x88dc('0x32')]);if(_0x87b5e4[_0x88dc('0x33')]){delete _0x87b5e4[_0x88dc('0x33')];}_0x1bea1e[_0x88dc('0x21')](_0x5eb8b5)[_0x88dc('0x34')](_0x87b5e4);};}exports['index']=function(_0x57d53c,_0x3889d6){var _0x24f9ec={},_0xf85833={},_0x2e5b73={'count':0x0,'rows':[]};var _0x43d606=_[_0x88dc('0x35')](db[_0x88dc('0x36')][_0x88dc('0x37')],function(_0x75d75c){return{'name':_0x75d75c['fieldName'],'type':_0x75d75c['type'][_0x88dc('0x38')]};});_0xf85833[_0x88dc('0x39')]=_['map'](_0x43d606,'name');_0xf85833[_0x88dc('0x3a')]=_[_0x88dc('0x3b')](_0x57d53c[_0x88dc('0x3a')]);_0xf85833[_0x88dc('0x3c')]=_[_0x88dc('0x3d')](_0xf85833[_0x88dc('0x39')],_0xf85833[_0x88dc('0x3a')]);_0x24f9ec[_0x88dc('0x3e')]=_[_0x88dc('0x3d')](_0xf85833[_0x88dc('0x39')],qs['fields'](_0x57d53c[_0x88dc('0x3a')]['fields']));_0x24f9ec[_0x88dc('0x3e')]=_0x24f9ec[_0x88dc('0x3e')][_0x88dc('0x3f')]?_0x24f9ec['attributes']:_0xf85833['model'];if(!_0x57d53c[_0x88dc('0x3a')]['hasOwnProperty']('nolimit')){_0x24f9ec['limit']=qs[_0x88dc('0x24')](_0x57d53c[_0x88dc('0x3a')][_0x88dc('0x24')]);_0x24f9ec[_0x88dc('0x25')]=qs[_0x88dc('0x25')](_0x57d53c[_0x88dc('0x3a')][_0x88dc('0x25')]);}_0x24f9ec[_0x88dc('0x40')]=qs[_0x88dc('0x41')](_0x57d53c[_0x88dc('0x3a')][_0x88dc('0x41')]);_0x24f9ec['where']=qs['filters'](_['pick'](_0x57d53c['query'],_0xf85833[_0x88dc('0x3c')]),_0x43d606);if(_0x57d53c[_0x88dc('0x3a')][_0x88dc('0x42')]){_0x24f9ec[_0x88dc('0x43')]=_[_0x88dc('0x44')](_0x24f9ec['where'],{'$or':_[_0x88dc('0x35')](_0x43d606,function(_0x55e354){if(_0x55e354[_0x88dc('0x45')]!==_0x88dc('0x46')){var _0x460c05={};_0x460c05[_0x55e354[_0x88dc('0x33')]]={'$like':'%'+_0x57d53c[_0x88dc('0x3a')]['filter']+'%'};return _0x460c05;}})});}_0x24f9ec=_[_0x88dc('0x44')]({},_0x24f9ec,_0x57d53c['options']);var _0x282e60={'where':_0x24f9ec[_0x88dc('0x43')]};return db[_0x88dc('0x36')]['count'](_0x282e60)[_0x88dc('0x2c')](function(_0x34d07f){_0x2e5b73[_0x88dc('0x26')]=_0x34d07f;if(_0x57d53c['query'][_0x88dc('0x47')]){_0x24f9ec[_0x88dc('0x48')]=[{'all':!![]}];}return db[_0x88dc('0x36')][_0x88dc('0x49')](_0x24f9ec);})[_0x88dc('0x2c')](function(_0x56abd4){_0x2e5b73[_0x88dc('0x4a')]=_0x56abd4;return _0x2e5b73;})[_0x88dc('0x2c')](respondWithFilteredResult(_0x3889d6,_0x24f9ec))[_0x88dc('0x4b')](handleError(_0x3889d6,null));};exports[_0x88dc('0x4c')]=function(_0x53306f,_0x58e07c){var _0x58561f={'raw':!![],'where':{'id':_0x53306f[_0x88dc('0x4d')]['id']}},_0x2a5d98={};_0x2a5d98[_0x88dc('0x39')]=_['keys'](db[_0x88dc('0x36')][_0x88dc('0x37')]);_0x2a5d98['query']=_[_0x88dc('0x3b')](_0x53306f[_0x88dc('0x3a')]);_0x2a5d98[_0x88dc('0x3c')]=_[_0x88dc('0x3d')](_0x2a5d98[_0x88dc('0x39')],_0x2a5d98[_0x88dc('0x3a')]);_0x58561f[_0x88dc('0x3e')]=_[_0x88dc('0x3d')](_0x2a5d98[_0x88dc('0x39')],qs[_0x88dc('0x4e')](_0x53306f['query'][_0x88dc('0x4e')]));_0x58561f[_0x88dc('0x3e')]=_0x58561f['attributes'][_0x88dc('0x3f')]?_0x58561f[_0x88dc('0x3e')]:_0x2a5d98[_0x88dc('0x39')];if(_0x53306f[_0x88dc('0x3a')]['includeAll']){_0x58561f[_0x88dc('0x48')]=[{'all':!![]}];}_0x58561f=_[_0x88dc('0x44')]({},_0x58561f,_0x53306f[_0x88dc('0x4f')]);return db[_0x88dc('0x36')][_0x88dc('0x50')](_0x58561f)[_0x88dc('0x2c')](handleEntityNotFound(_0x58e07c,null))[_0x88dc('0x2c')](respondWithResult(_0x58e07c,null))[_0x88dc('0x4b')](handleError(_0x58e07c,null));};exports[_0x88dc('0x51')]=function(_0x38e825,_0x4abe94){return db['WhatsappQueue'][_0x88dc('0x51')](_0x38e825[_0x88dc('0x52')],{})[_0x88dc('0x2c')](function(_0x417136){var _0x41a101=_0x38e825[_0x88dc('0x53')]['get']({'plain':!![]});if(!_0x41a101)throw new Error(_0x88dc('0x54'));if(_0x41a101[_0x88dc('0x55')]===_0x88dc('0x53')){var _0xe59993=_0x417136['get']({'plain':!![]});var _0x557b82=_0x88dc('0x2e');return db[_0x88dc('0x56')][_0x88dc('0x50')]({'where':{'name':_0x557b82,'userProfileId':_0x41a101[_0x88dc('0x57')]},'raw':!![]})[_0x88dc('0x2c')](function(_0x3960b8){if(_0x3960b8&&_0x3960b8['autoAssociation']===0x0){return db[_0x88dc('0x2f')][_0x88dc('0x51')]({'name':_0xe59993[_0x88dc('0x33')],'resourceId':_0xe59993['id'],'type':_0x3960b8[_0x88dc('0x33')],'sectionId':_0x3960b8['id']},{})['then'](function(){return _0x417136;});}else{return _0x417136;}})[_0x88dc('0x4b')](function(_0x2332a5){logger[_0x88dc('0x31')](_0x88dc('0x58'),_0x2332a5);throw _0x2332a5;});}return _0x417136;})[_0x88dc('0x2c')](respondWithResult(_0x4abe94,0xc9))[_0x88dc('0x4b')](handleError(_0x4abe94,null));};exports[_0x88dc('0x2b')]=function(_0x34fcdc,_0xec1977){if(_0x34fcdc['body']['id']){delete _0x34fcdc[_0x88dc('0x52')]['id'];}return db[_0x88dc('0x36')][_0x88dc('0x50')]({'where':{'id':_0x34fcdc[_0x88dc('0x4d')]['id']}})[_0x88dc('0x2c')](handleEntityNotFound(_0xec1977,null))['then'](saveUpdates(_0x34fcdc[_0x88dc('0x52')],null))['then'](respondWithResult(_0xec1977,null))[_0x88dc('0x4b')](handleError(_0xec1977,null));};exports[_0x88dc('0x59')]=function(_0x59edf6,_0x3c3301){return db[_0x88dc('0x36')]['find']({'where':{'id':_0x59edf6['params']['id']}})[_0x88dc('0x2c')](handleEntityNotFound(_0x3c3301,null))[_0x88dc('0x2c')](removeEntity(_0x3c3301,null))[_0x88dc('0x4b')](handleError(_0x3c3301,null));};exports[_0x88dc('0x5a')]=function(_0x5b9993,_0xd0fad8){return db['WhatsappQueue'][_0x88dc('0x5a')]()[_0x88dc('0x2c')](respondWithResult(_0xd0fad8,null))['catch'](handleError(_0xd0fad8,null));};exports[_0x88dc('0x5b')]=function(_0x116ef2,_0xcf841e,_0x1b9c98){var _0x214ea3={'raw':!![],'where':{}},_0x2fb851={},_0x4a1495;return db[_0x88dc('0x36')][_0x88dc('0x5c')]({'where':{'id':_0x116ef2['params']['id']}})['then'](handleEntityNotFound(_0xcf841e,null))['then'](function(_0x1346a7){if(_0x1346a7){_0x4a1495=_0x1346a7[_0x88dc('0x2d')]({'plain':!![]});_0x2fb851['model']=_[_0x88dc('0x3b')](db[_0x88dc('0x5d')][_0x88dc('0x37')]);_0x2fb851[_0x88dc('0x3a')]=_[_0x88dc('0x3b')](_0x116ef2[_0x88dc('0x3a')]);_0x2fb851[_0x88dc('0x3c')]=_[_0x88dc('0x3d')](_0x2fb851[_0x88dc('0x39')],_0x2fb851[_0x88dc('0x3a')]);_0x214ea3[_0x88dc('0x3e')]=_[_0x88dc('0x3d')](_0x2fb851['model'],qs[_0x88dc('0x4e')](_0x116ef2['query']['fields']));_0x214ea3['attributes']=_0x214ea3[_0x88dc('0x3e')][_0x88dc('0x3f')]?_0x214ea3[_0x88dc('0x3e')]:_0x2fb851[_0x88dc('0x39')];if(!_0x116ef2[_0x88dc('0x3a')]['hasOwnProperty'](_0x88dc('0x5e'))){_0x214ea3[_0x88dc('0x24')]=qs[_0x88dc('0x24')](_0x116ef2['query'][_0x88dc('0x24')]);_0x214ea3[_0x88dc('0x25')]=qs[_0x88dc('0x25')](_0x116ef2['query'][_0x88dc('0x25')]);}_0x214ea3[_0x88dc('0x40')]=qs['sort'](_0x116ef2[_0x88dc('0x3a')][_0x88dc('0x41')]);_0x214ea3[_0x88dc('0x43')]=qs['filters'](_[_0x88dc('0x5f')](_0x116ef2['query'],_0x2fb851['filters']));_0x214ea3[_0x88dc('0x43')]['WhatsappQueueId']=_0x1346a7['id'];if(_0x116ef2[_0x88dc('0x3a')][_0x88dc('0x42')]){_0x214ea3[_0x88dc('0x43')]=_[_0x88dc('0x44')](_0x214ea3[_0x88dc('0x43')],{'$or':_['map'](_0x214ea3[_0x88dc('0x3e')],function(_0x5cfc25){var _0x297ba1={};_0x297ba1[_0x5cfc25]={'$like':'%'+_0x116ef2[_0x88dc('0x3a')][_0x88dc('0x42')]+'%'};return _0x297ba1;})});}_0x214ea3=_[_0x88dc('0x44')]({},_0x214ea3,_0x116ef2[_0x88dc('0x4f')]);return db[_0x88dc('0x5d')][_0x88dc('0x49')](_0x214ea3);}})['then'](function(_0x267b91){if(_0x267b91){return db[_0x88dc('0x60')][_0x88dc('0x61')]({'where':{'id':_[_0x88dc('0x35')](_0x267b91,_0x88dc('0x62')),'role':_0x88dc('0x63')},'attributes':['id',_0x88dc('0x33'),'whatsappPause',_0x88dc('0x64'),_0x88dc('0x65')]});}})[_0x88dc('0x2c')](function(_0xf44bfc){if(_0xf44bfc){return{'count':_0xf44bfc[_0x88dc('0x26')],'rows':_[_0x88dc('0x35')](_0xf44bfc[_0x88dc('0x4a')],function(_0x176deb){return{'membername':_0x176deb[_0x88dc('0x33')],'UserId':_0x176deb['id'],'queue_name':_0x4a1495[_0x88dc('0x33')],'WhatsappQueueId':_0x4a1495['id'],'interface':util[_0x88dc('0x66')](_0x88dc('0x67'),_0x88dc('0x68'),_0x176deb[_0x88dc('0x33')]),'penalty':0x0,'paused':_0x176deb[_0x88dc('0x69')],'createdAt':_0x176deb['createdAt'],'updatedAt':_0x176deb[_0x88dc('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x88dc('0x2c')](respondWithFilteredResult(_0xcf841e,_0x214ea3))['catch'](handleError(_0xcf841e,null));};exports['getTeams']=function(_0x3da6af,_0x374daa,_0x5cc843){var _0x524e6f={};var _0x157a98={};var _0x5ec87c;var _0x5c9529;return db[_0x88dc('0x36')]['findOne']({'where':{'id':_0x3da6af[_0x88dc('0x4d')]['id']}})[_0x88dc('0x2c')](handleEntityNotFound(_0x374daa,null))[_0x88dc('0x2c')](function(_0x186dc7){if(_0x186dc7){_0x5ec87c=_0x186dc7;_0x157a98[_0x88dc('0x39')]=_[_0x88dc('0x3b')](db[_0x88dc('0x6a')]['rawAttributes']);_0x157a98[_0x88dc('0x3a')]=_[_0x88dc('0x3b')](_0x3da6af[_0x88dc('0x3a')]);_0x157a98['filters']=_['intersection'](_0x157a98[_0x88dc('0x39')],_0x157a98['query']);_0x524e6f['attributes']=_[_0x88dc('0x3d')](_0x157a98[_0x88dc('0x39')],qs[_0x88dc('0x4e')](_0x3da6af[_0x88dc('0x3a')]['fields']));_0x524e6f['attributes']=_0x524e6f[_0x88dc('0x3e')][_0x88dc('0x3f')]?_0x524e6f[_0x88dc('0x3e')]:_0x157a98[_0x88dc('0x39')];_0x524e6f[_0x88dc('0x40')]=qs[_0x88dc('0x41')](_0x3da6af[_0x88dc('0x3a')][_0x88dc('0x41')]);_0x524e6f[_0x88dc('0x43')]=qs[_0x88dc('0x3c')](_[_0x88dc('0x5f')](_0x3da6af['query'],_0x157a98[_0x88dc('0x3c')]));if(_0x3da6af[_0x88dc('0x3a')]['filter']){_0x524e6f[_0x88dc('0x43')]=_[_0x88dc('0x44')](_0x524e6f[_0x88dc('0x43')],{'$or':_[_0x88dc('0x35')](_0x524e6f[_0x88dc('0x3e')],function(_0x4f8806){var _0x9b002f={};_0x9b002f[_0x4f8806]={'$like':'%'+_0x3da6af['query']['filter']+'%'};return _0x9b002f;})});}_0x524e6f=_['merge']({},_0x524e6f,_0x3da6af[_0x88dc('0x4f')]);return _0x5ec87c['getTeams'](_0x524e6f);}})[_0x88dc('0x2c')](function(_0x39cda2){if(_0x39cda2){_0x5c9529=_0x39cda2['length'];if(!_0x3da6af['query'][_0x88dc('0x6b')](_0x88dc('0x5e'))){_0x524e6f[_0x88dc('0x24')]=qs[_0x88dc('0x24')](_0x3da6af['query'][_0x88dc('0x24')]);_0x524e6f['offset']=qs['offset'](_0x3da6af[_0x88dc('0x3a')]['offset']);}return _0x5ec87c[_0x88dc('0x6c')](_0x524e6f);}})['then'](function(_0x2e98e3){if(_0x2e98e3){return _0x2e98e3?{'count':_0x5c9529,'rows':_0x2e98e3}:null;}})[_0x88dc('0x2c')](respondWithResult(_0x374daa,null))['catch'](handleError(_0x374daa,null));};exports[_0x88dc('0x6d')]=function(_0x2eed64,_0x4b5f74,_0x27280d){var _0x42e73d=_0x2eed64[_0x88dc('0x52')][_0x88dc('0x6e')];return db[_0x88dc('0x6a')][_0x88dc('0x49')]({'where':{'id':_0x42e73d},'attributes':['id'],'include':[{'model':db[_0x88dc('0x60')],'as':_0x88dc('0x6f'),'attributes':['id',_0x88dc('0x33'),_0x88dc('0x70'),_0x88dc('0x71'),_0x88dc('0x72')],'raw':!![]}]})[_0x88dc('0x2c')](function(_0x357b1c){if(_0x357b1c){var _0x36f824=_[_0x88dc('0x73')](_0x357b1c,function(_0x19d5fd){var _0x37496a=_0x19d5fd[_0x88dc('0x2d')]({'plain':!![]});return _0x37496a[_0x88dc('0x6f')];});return db[_0x88dc('0x36')]['find']({'where':{'id':_0x2eed64[_0x88dc('0x4d')]['id']}})[_0x88dc('0x2c')](function(_0x3eb5cb){return db[_0x88dc('0x74')][_0x88dc('0x75')](function(_0x12af96){return _0x3eb5cb[_0x88dc('0x6d')](_0x42e73d,{'transaction':_0x12af96})[_0x88dc('0x2c')](function(){return BPromise[_0x88dc('0x76')](_0x36f824,function(_0x481c9e){return db[_0x88dc('0x5d')]['findOrCreate']({'where':{'UserId':_0x481c9e['id'],'WhatsappQueueId':_0x2eed64[_0x88dc('0x4d')]['id']},'transaction':_0x12af96});});})['then'](function(){_0x36f824['forEach'](function(_0x3d499b){socket['emit'](_0x88dc('0x77'),{'UserId':_0x3d499b['id'],'WhatsappQueueId':_0x3eb5cb['id']});});});});});}})[_0x88dc('0x2c')](respondWithStatusCode(_0x4b5f74,null))[_0x88dc('0x4b')](handleError(_0x4b5f74,null));};exports[_0x88dc('0x78')]=function(_0x38de39,_0x47ba87,_0x73b876){return db[_0x88dc('0x6a')]['findAll']({'where':{'id':_0x38de39[_0x88dc('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x88dc('0x60')],'as':_0x88dc('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x88dc('0x2c')](handleEntityNotFound(_0x47ba87,null))[_0x88dc('0x2c')](function(_0x35a678){var _0x1fd429=_[_0x88dc('0x35')](_0x35a678,'id');var _0x292175=[];var _0x4f5974=[];var _0x13252f=squel[_0x88dc('0x79')]();_0x13252f[_0x88dc('0x7a')]('tq.TeamId')[_0x88dc('0x7b')]('team_has_whatsapp_queues','tq')[_0x88dc('0x7c')](_0x88dc('0x7d'),'ut',_0x88dc('0x7e'))['where'](_0x88dc('0x7f'),_0x38de39[_0x88dc('0x4d')]['id']);for(var _0x1276a0=0x0;_0x1276a0<_0x35a678[_0x88dc('0x3f')];_0x1276a0+=0x1){let _0x286cbd=_0x35a678[_0x1276a0];for(var _0x20dd98=0x0;_0x20dd98<_0x286cbd[_0x88dc('0x6f')][_0x88dc('0x3f')];_0x20dd98+=0x1){let _0x3dc63e=_0x286cbd['Agents'][_0x20dd98];var _0x5254d2=_0x13252f[_0x88dc('0x80')]();_0x5254d2[_0x88dc('0x43')](_0x88dc('0x81'),_0x3dc63e['id']);_0x4f5974[_0x88dc('0x82')](db['sequelize'][_0x88dc('0x3a')](_0x5254d2[_0x88dc('0x83')](),{'type':db['sequelize'][_0x88dc('0x84')][_0x88dc('0x85')]})['then'](function(_0x14fb40){if(_0x14fb40[_0x88dc('0x3f')]===0x1){return _0x3dc63e['id'];}else{var _0x442747=_[_0x88dc('0x86')](_[_0x88dc('0x35')](_0x14fb40,_0x88dc('0x87')),function(_0x4fcc00){return _[_0x88dc('0x88')](_0x1fd429,_0x4fcc00);});if(_0x442747){return _0x3dc63e['id'];}}}));}}return BPromise[_0x88dc('0x89')](_0x4f5974)[_0x88dc('0x2c')](function(_0xb23ea4){_0x292175=_(_0x292175)[_0x88dc('0x8a')](_0xb23ea4)[_0x88dc('0x8b')]()['value']();return db['WhatsappQueue'][_0x88dc('0x50')]({'where':{'id':_0x38de39[_0x88dc('0x4d')]['id']}})[_0x88dc('0x2c')](function(_0x3dc6f1){return db[_0x88dc('0x74')][_0x88dc('0x75')](function(_0x685f5c){return _0x3dc6f1[_0x88dc('0x78')](_0x38de39[_0x88dc('0x3a')][_0x88dc('0x6e')],{'transaction':_0x685f5c})['then'](function(){if(!_[_0x88dc('0x8c')](_0x292175)){return _0x3dc6f1[_0x88dc('0x8d')](_0x292175,{'transaction':_0x685f5c});}})['then'](function(){_0x292175[_0x88dc('0x8e')](function(_0x35a966){socket[_0x88dc('0x8f')]('userWhatsappQueue:remove',{'UserId':_0x35a966,'WhatsappQueueId':_0x3dc6f1['id']});});});});});});})[_0x88dc('0x2c')](respondWithStatusCode(_0x47ba87,null))[_0x88dc('0x4b')](handleError(_0x47ba87,null));};exports[_0x88dc('0x90')]=function(_0x7e0eac,_0x45ffe7,_0x5023fb){return db['WhatsappQueue'][_0x88dc('0x50')]({'where':{'id':_0x7e0eac[_0x88dc('0x4d')]['id']}})[_0x88dc('0x2c')](handleEntityNotFound(_0x45ffe7,null))[_0x88dc('0x2c')](function(_0x21fbbf){if(_0x21fbbf){return _0x21fbbf[_0x88dc('0x90')](_0x7e0eac[_0x88dc('0x52')][_0x88dc('0x6e')],_[_0x88dc('0x91')](_0x7e0eac[_0x88dc('0x52')],['ids','id'])||{})[_0x88dc('0x92')](function(_0x2fc579){for(var _0x47724a=0x0;_0x47724a<_0x7e0eac[_0x88dc('0x52')][_0x88dc('0x6e')][_0x88dc('0x3f')];_0x47724a+=0x1){socket['emit'](_0x88dc('0x77'),{'UserId':Number(_0x7e0eac[_0x88dc('0x52')]['ids'][_0x47724a]),'WhatsappQueueId':Number(_0x7e0eac[_0x88dc('0x4d')]['id'])});}return _0x2fc579;});}})[_0x88dc('0x2c')](respondWithResult(_0x45ffe7,null))[_0x88dc('0x4b')](handleError(_0x45ffe7,null));};exports[_0x88dc('0x8d')]=function(_0x13251f,_0x4290ea,_0x291bf0){return db[_0x88dc('0x36')][_0x88dc('0x50')]({'where':{'id':_0x13251f['params']['id']}})[_0x88dc('0x2c')](handleEntityNotFound(_0x4290ea,null))['then'](function(_0x5065ad){if(_0x5065ad){return _0x5065ad[_0x88dc('0x8d')](_0x13251f[_0x88dc('0x3a')][_0x88dc('0x6e')])['then'](function(){if(_[_0x88dc('0x93')](_0x13251f[_0x88dc('0x3a')]['ids'])){for(var _0x3da696=0x0;_0x3da696<_0x13251f[_0x88dc('0x3a')]['ids'][_0x88dc('0x3f')];_0x3da696+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x13251f[_0x88dc('0x3a')][_0x88dc('0x6e')][_0x3da696]),'WhatsappQueueId':Number(_0x13251f[_0x88dc('0x4d')]['id'])});}}else{socket[_0x88dc('0x8f')]('userWhatsappQueue:remove',{'UserId':Number(_0x13251f[_0x88dc('0x3a')][_0x88dc('0x6e')]),'WhatsappQueueId':Number(_0x13251f[_0x88dc('0x4d')]['id'])});}});}})[_0x88dc('0x2c')](respondWithStatusCode(_0x4290ea,null))[_0x88dc('0x4b')](handleError(_0x4290ea,null));};exports['getAgents']=function(_0x937d82,_0x54e6b6,_0x145b8f){var _0x1c3960={};var _0x2bef46={};var _0x5c5a82;var _0xdb4f29;return db[_0x88dc('0x36')]['findOne']({'where':{'id':_0x937d82[_0x88dc('0x4d')]['id']}})['then'](handleEntityNotFound(_0x54e6b6,null))[_0x88dc('0x2c')](function(_0x510701){if(_0x510701){_0x5c5a82=_0x510701;_0x2bef46[_0x88dc('0x39')]=_['keys'](db[_0x88dc('0x60')][_0x88dc('0x37')]);_0x2bef46['query']=_[_0x88dc('0x3b')](_0x937d82[_0x88dc('0x3a')]);_0x2bef46[_0x88dc('0x3c')]=_[_0x88dc('0x3d')](_0x2bef46[_0x88dc('0x39')],_0x2bef46[_0x88dc('0x3a')]);_0x1c3960['attributes']=_[_0x88dc('0x3d')](_0x2bef46[_0x88dc('0x39')],qs[_0x88dc('0x4e')](_0x937d82[_0x88dc('0x3a')][_0x88dc('0x4e')]));_0x1c3960['attributes']=_0x1c3960[_0x88dc('0x3e')][_0x88dc('0x3f')]?_0x1c3960[_0x88dc('0x3e')]:_0x2bef46[_0x88dc('0x39')];_0x1c3960['order']=qs['sort'](_0x937d82[_0x88dc('0x3a')][_0x88dc('0x41')]);_0x1c3960[_0x88dc('0x43')]=qs[_0x88dc('0x3c')](_['pick'](_0x937d82[_0x88dc('0x3a')],_0x2bef46['filters']));if(_0x937d82[_0x88dc('0x3a')]['filter']){_0x1c3960[_0x88dc('0x43')]=_[_0x88dc('0x44')](_0x1c3960['where'],{'$or':_[_0x88dc('0x35')](_0x1c3960[_0x88dc('0x3e')],function(_0x200fa4){var _0x507eea={};_0x507eea[_0x200fa4]={'$like':'%'+_0x937d82[_0x88dc('0x3a')]['filter']+'%'};return _0x507eea;})});}_0x1c3960=_[_0x88dc('0x44')]({},_0x1c3960,_0x937d82[_0x88dc('0x4f')]);return _0x5c5a82[_0x88dc('0x94')](_0x1c3960);}})[_0x88dc('0x2c')](function(_0x46ba58){if(_0x46ba58){_0xdb4f29=_0x46ba58[_0x88dc('0x3f')];if(!_0x937d82[_0x88dc('0x3a')]['hasOwnProperty']('nolimit')){_0x1c3960[_0x88dc('0x24')]=qs['limit'](_0x937d82['query'][_0x88dc('0x24')]);_0x1c3960[_0x88dc('0x25')]=qs[_0x88dc('0x25')](_0x937d82[_0x88dc('0x3a')]['offset']);}return _0x5c5a82[_0x88dc('0x94')](_0x1c3960);}})[_0x88dc('0x2c')](function(_0x47667a){if(_0x47667a){return _0x47667a?{'count':_0xdb4f29,'rows':_0x47667a}:null;}})[_0x88dc('0x2c')](respondWithResult(_0x54e6b6,null))[_0x88dc('0x4b')](handleError(_0x54e6b6,null));};
\ No newline at end of file
index df78fa2..02524b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2412=['emit','hook','events','setMaxListeners','save','update','remove'];(function(_0x10755c,_0x1e0e1e){var _0x350ee0=function(_0x40742b){while(--_0x40742b){_0x10755c['push'](_0x10755c['shift']());}};_0x350ee0(++_0x1e0e1e);}(_0x2412,0x14b));var _0x2241=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2412[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x2241('0x0'));var WhatsappQueue=require('../../mysqldb')['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x2241('0x1')](0x0);var events={'afterCreate':_0x2241('0x2'),'afterUpdate':_0x2241('0x3'),'afterDestroy':_0x2241('0x4')};function emitEvent(_0x59249a){return function(_0x44e022,_0x2d14de,_0x2d0dae){WhatsappQueueEvents[_0x2241('0x5')](_0x59249a+':'+_0x44e022['id'],_0x44e022);WhatsappQueueEvents['emit'](_0x59249a,_0x44e022);_0x2d0dae(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0x2241('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0xdb50=['hasOwnProperty','hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove','emit'];(function(_0x4191bc,_0x3096c5){var _0x1ffd4e=function(_0x36faed){while(--_0x36faed){_0x4191bc['push'](_0x4191bc['shift']());}};_0x1ffd4e(++_0x3096c5);}(_0xdb50,0x11b));var _0x0db5=function(_0x351f05,_0x5068ab){_0x351f05=_0x351f05-0x0;var _0x52b708=_0xdb50[_0x351f05];return _0x52b708;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x0db5('0x0'))['db'][_0x0db5('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x0db5('0x2')](0x0);var events={'afterCreate':_0x0db5('0x3'),'afterUpdate':_0x0db5('0x4'),'afterDestroy':_0x0db5('0x5')};function emitEvent(_0x1b5792){return function(_0x1c7f15,_0x1801e8,_0x1e2e7d){WhatsappQueueEvents[_0x0db5('0x6')](_0x1b5792+':'+_0x1c7f15['id'],_0x1c7f15);WhatsappQueueEvents['emit'](_0x1b5792,_0x1c7f15);_0x1e2e7d(null);};}for(var e in events){if(events[_0x0db5('0x7')](e)){var event=events[e];WhatsappQueue[_0x0db5('0x8')](e,emitEvent(event));}}module[_0x0db5('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
index 5717381..037c406 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1e0=['api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','whatsapp_queues','lodash','../../config/logger'];(function(_0x113281,_0x146ba3){var _0x55f082=function(_0x176fe2){while(--_0x176fe2){_0x113281['push'](_0x113281['shift']());}};_0x55f082(++_0x146ba3);}(_0xf1e0,0xd6));var _0x0f1e=function(_0x251c1a,_0x5e3518){_0x251c1a=_0x251c1a-0x0;var _0x5089a4=_0xf1e0[_0x251c1a];return _0x5089a4;};'use strict';var _=require(_0x0f1e('0x0'));var util=require('util');var logger=require(_0x0f1e('0x1'))(_0x0f1e('0x2'));var moment=require(_0x0f1e('0x3'));var BPromise=require(_0x0f1e('0x4'));var rp=require(_0x0f1e('0x5'));var fs=require('fs');var path=require(_0x0f1e('0x6'));var rimraf=require('rimraf');var config=require(_0x0f1e('0x7'));var attributes=require(_0x0f1e('0x8'));module['exports']=function(_0x41a5bd,_0x33e454){return _0x41a5bd[_0x0f1e('0x9')](_0x0f1e('0xa'),attributes,{'tableName':_0x0f1e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5029=['path','rimraf','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','api','moment','request-promise'];(function(_0xad8f26,_0x230f5c){var _0x40994a=function(_0x443ceb){while(--_0x443ceb){_0xad8f26['push'](_0xad8f26['shift']());}};_0x40994a(++_0x230f5c);}(_0x5029,0x133));var _0x9502=function(_0x4e1211,_0x1c0e26){_0x4e1211=_0x4e1211-0x0;var _0x4ae887=_0x5029[_0x4e1211];return _0x4ae887;};'use strict';var _=require(_0x9502('0x0'));var util=require(_0x9502('0x1'));var logger=require('../../config/logger')(_0x9502('0x2'));var moment=require(_0x9502('0x3'));var BPromise=require('bluebird');var rp=require(_0x9502('0x4'));var fs=require('fs');var path=require(_0x9502('0x5'));var rimraf=require(_0x9502('0x6'));var config=require('../../config/environment');var attributes=require(_0x9502('0x7'));module[_0x9502('0x8')]=function(_0x3aa262,_0x5946ae){return _0x3aa262[_0x9502('0x9')](_0x9502('0xa'),attributes,{'tableName':_0x9502('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c9464b1..d34145b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d1=['client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetWhatsappQueue','WhatsappQueue','findAll','options','where','limit','include','attributes','map','model','catch','ShowWhatsappQueue','raw','lodash','util','moment','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xfb0281,_0x3ff38b){var _0x408dd3=function(_0x5d8017){while(--_0x5d8017){_0xfb0281['push'](_0xfb0281['shift']());}};_0x408dd3(++_0x3ff38b);}(_0x82d1,0x1c1));var _0x182d=function(_0x1c34c5,_0x1dc485){_0x1c34c5=_0x1c34c5-0x0;var _0x2d6092=_0x82d1[_0x1c34c5];return _0x2d6092;};'use strict';var _=require(_0x182d('0x0'));var util=require(_0x182d('0x1'));var moment=require(_0x182d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x182d('0x3'))(_0x182d('0x4'));var config=require(_0x182d('0x5'));var jayson=require(_0x182d('0x6'));var client=jayson[_0x182d('0x7')][_0x182d('0x8')]({'port':0x232a});config[_0x182d('0x9')]=_[_0x182d('0xa')](config['redis'],{'host':_0x182d('0xb'),'port':0x18eb});var socket=require(_0x182d('0xc'))(new Redis(config[_0x182d('0x9')]));require('./whatsappQueue.socket')[_0x182d('0xd')](socket);function respondWithRpcPromise(_0xc110c7,_0x19e320,_0x327d92){return new BPromise(function(_0x572e0a,_0x4785cb){return client[_0x182d('0xe')](_0xc110c7,_0x327d92)[_0x182d('0xf')](function(_0x39c361){logger[_0x182d('0x10')](_0x182d('0x11'),_0x19e320,_0x182d('0x12'));logger[_0x182d('0x13')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x19e320,_0x182d('0x12'),JSON[_0x182d('0x14')](_0x39c361));if(_0x39c361[_0x182d('0x15')]){if(_0x39c361[_0x182d('0x15')][_0x182d('0x16')]===0x1f4){logger[_0x182d('0x15')](_0x182d('0x11'),_0x19e320,_0x39c361[_0x182d('0x15')][_0x182d('0x17')]);return _0x4785cb(_0x39c361[_0x182d('0x15')]['message']);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x19e320,_0x39c361[_0x182d('0x15')][_0x182d('0x17')]);return _0x572e0a(_0x39c361[_0x182d('0x15')]['message']);}else{logger[_0x182d('0x10')](_0x182d('0x11'),_0x19e320,_0x182d('0x12'));_0x572e0a(_0x39c361[_0x182d('0x18')][_0x182d('0x17')]);}})['catch'](function(_0x1413d1){logger['error'](_0x182d('0x11'),_0x19e320,_0x1413d1);_0x4785cb(_0x1413d1);});});}exports[_0x182d('0x19')]=function(_0x1defce){var _0x4b6cf0=this;return new Promise(function(_0x31bdf0,_0x1acd80){return db[_0x182d('0x1a')][_0x182d('0x1b')]({'raw':_0x1defce['options']?_0x1defce[_0x182d('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1defce[_0x182d('0x1c')]?_0x1defce[_0x182d('0x1c')][_0x182d('0x1d')]||null:null,'attributes':_0x1defce['options']?_0x1defce['options']['attributes']||null:null,'limit':_0x1defce[_0x182d('0x1c')]?_0x1defce['options'][_0x182d('0x1e')]||null:null,'include':_0x1defce[_0x182d('0x1c')]?_0x1defce[_0x182d('0x1c')][_0x182d('0x1f')]?_['map'](_0x1defce[_0x182d('0x1c')][_0x182d('0x1f')],function(_0x3cbc3f){return{'model':db[_0x3cbc3f['model']],'as':_0x3cbc3f['as'],'attributes':_0x3cbc3f[_0x182d('0x20')],'include':_0x3cbc3f[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x3cbc3f['include'],function(_0x5e9de8){return{'model':db[_0x5e9de8['model']],'as':_0x5e9de8['as'],'attributes':_0x5e9de8[_0x182d('0x20')],'include':_0x5e9de8[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x5e9de8[_0x182d('0x1f')],function(_0x2a7189){return{'model':db[_0x2a7189[_0x182d('0x22')]],'as':_0x2a7189['as'],'attributes':_0x2a7189[_0x182d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x182d('0xf')](function(_0x3c9975){logger[_0x182d('0x10')]('GetWhatsappQueue',_0x1defce);logger[_0x182d('0x13')](_0x182d('0x19'),_0x1defce,JSON[_0x182d('0x14')](_0x3c9975));_0x31bdf0(_0x3c9975);})[_0x182d('0x23')](function(_0x2f68e1){logger[_0x182d('0x15')](_0x182d('0x19'),_0x2f68e1[_0x182d('0x17')],_0x1defce);_0x1acd80(_0x4b6cf0[_0x182d('0x15')](0x1f4,_0x2f68e1['message']));});});};exports[_0x182d('0x24')]=function(_0x36bd2d){var _0x213de8=this;return new Promise(function(_0x13fde8,_0x1c5a5f){return db[_0x182d('0x1a')]['find']({'raw':_0x36bd2d[_0x182d('0x1c')]?_0x36bd2d[_0x182d('0x1c')][_0x182d('0x25')]===undefined?!![]:![]:!![],'where':_0x36bd2d['options']?_0x36bd2d[_0x182d('0x1c')][_0x182d('0x1d')]||null:null,'attributes':_0x36bd2d['options']?_0x36bd2d['options']['attributes']||null:null,'include':_0x36bd2d[_0x182d('0x1c')]?_0x36bd2d[_0x182d('0x1c')]['include']?_['map'](_0x36bd2d[_0x182d('0x1c')][_0x182d('0x1f')],function(_0x2f6145){return{'model':db[_0x2f6145['model']],'as':_0x2f6145['as'],'attributes':_0x2f6145[_0x182d('0x20')],'include':_0x2f6145[_0x182d('0x1f')]?_[_0x182d('0x21')](_0x2f6145['include'],function(_0x2de9a4){return{'model':db[_0x2de9a4[_0x182d('0x22')]],'as':_0x2de9a4['as'],'attributes':_0x2de9a4['attributes'],'include':_0x2de9a4['include']?_[_0x182d('0x21')](_0x2de9a4[_0x182d('0x1f')],function(_0x26c868){return{'model':db[_0x26c868['model']],'as':_0x26c868['as'],'attributes':_0x26c868[_0x182d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x182d('0xf')](function(_0x1c7906){logger[_0x182d('0x10')](_0x182d('0x24'),_0x36bd2d);logger[_0x182d('0x13')](_0x182d('0x24'),_0x36bd2d,JSON[_0x182d('0x14')](_0x1c7906));_0x13fde8(_0x1c7906);})[_0x182d('0x23')](function(_0x672e96){logger[_0x182d('0x15')](_0x182d('0x24'),_0x672e96[_0x182d('0x17')],_0x36bd2d);_0x1c5a5f(_0x213de8[_0x182d('0x15')](0x1f4,_0x672e96[_0x182d('0x17')]));});});};
\ No newline at end of file
+var _0x0d98=['where','attributes','include','map','model','GetWhatsappQueue','ShowWhatsappQueue','find','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','then','request\x20sent','debug','stringify','error','code','message','info','WhatsappQueue,\x20%s,\x20%s','result','catch','WhatsappQueue','options'];(function(_0x324fe8,_0x1ccb46){var _0x4a1cd9=function(_0x506af2){while(--_0x506af2){_0x324fe8['push'](_0x324fe8['shift']());}};_0x4a1cd9(++_0x1ccb46);}(_0x0d98,0x1dd));var _0x80d9=function(_0x51b16e,_0x3707bb){_0x51b16e=_0x51b16e-0x0;var _0x114641=_0x0d98[_0x51b16e];return _0x114641;};'use strict';var _=require(_0x80d9('0x0'));var util=require('util');var moment=require(_0x80d9('0x1'));var BPromise=require(_0x80d9('0x2'));var rs=require(_0x80d9('0x3'));var fs=require('fs');var Redis=require(_0x80d9('0x4'));var db=require(_0x80d9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x80d9('0x6'))(_0x80d9('0x7'));var config=require('../../config/environment');var jayson=require(_0x80d9('0x8'));var client=jayson[_0x80d9('0x9')][_0x80d9('0xa')]({'port':0x232a});config[_0x80d9('0xb')]=_[_0x80d9('0xc')](config[_0x80d9('0xb')],{'host':_0x80d9('0xd'),'port':0x18eb});var socket=require(_0x80d9('0xe'))(new Redis(config['redis']));require(_0x80d9('0xf'))[_0x80d9('0x10')](socket);function respondWithRpcPromise(_0x4196d6,_0x539bed,_0x3e9231){return new BPromise(function(_0x1cffff,_0xb63d4){return client['request'](_0x4196d6,_0x3e9231)[_0x80d9('0x11')](function(_0x417887){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x539bed,_0x80d9('0x12'));logger[_0x80d9('0x13')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x539bed,_0x80d9('0x12'),JSON[_0x80d9('0x14')](_0x417887));if(_0x417887[_0x80d9('0x15')]){if(_0x417887['error'][_0x80d9('0x16')]===0x1f4){logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x539bed,_0x417887[_0x80d9('0x15')][_0x80d9('0x17')]);return _0xb63d4(_0x417887[_0x80d9('0x15')][_0x80d9('0x17')]);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x539bed,_0x417887[_0x80d9('0x15')][_0x80d9('0x17')]);return _0x1cffff(_0x417887['error'][_0x80d9('0x17')]);}else{logger[_0x80d9('0x18')](_0x80d9('0x19'),_0x539bed,_0x80d9('0x12'));_0x1cffff(_0x417887[_0x80d9('0x1a')]['message']);}})[_0x80d9('0x1b')](function(_0x26ddbf){logger[_0x80d9('0x15')](_0x80d9('0x19'),_0x539bed,_0x26ddbf);_0xb63d4(_0x26ddbf);});});}exports['GetWhatsappQueue']=function(_0xf2d8b0){var _0x5687fa=this;return new Promise(function(_0x58edd4,_0x176eff){return db[_0x80d9('0x1c')]['findAll']({'raw':_0xf2d8b0['options']?_0xf2d8b0[_0x80d9('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xf2d8b0[_0x80d9('0x1d')]?_0xf2d8b0[_0x80d9('0x1d')][_0x80d9('0x1e')]||null:null,'attributes':_0xf2d8b0[_0x80d9('0x1d')]?_0xf2d8b0['options'][_0x80d9('0x1f')]||null:null,'limit':_0xf2d8b0[_0x80d9('0x1d')]?_0xf2d8b0[_0x80d9('0x1d')]['limit']||null:null,'include':_0xf2d8b0[_0x80d9('0x1d')]?_0xf2d8b0[_0x80d9('0x1d')][_0x80d9('0x20')]?_[_0x80d9('0x21')](_0xf2d8b0['options'][_0x80d9('0x20')],function(_0x397ac9){return{'model':db[_0x397ac9['model']],'as':_0x397ac9['as'],'attributes':_0x397ac9[_0x80d9('0x1f')],'include':_0x397ac9[_0x80d9('0x20')]?_[_0x80d9('0x21')](_0x397ac9['include'],function(_0x340f94){return{'model':db[_0x340f94['model']],'as':_0x340f94['as'],'attributes':_0x340f94[_0x80d9('0x1f')],'include':_0x340f94[_0x80d9('0x20')]?_[_0x80d9('0x21')](_0x340f94['include'],function(_0x330bf3){return{'model':db[_0x330bf3[_0x80d9('0x22')]],'as':_0x330bf3['as'],'attributes':_0x330bf3[_0x80d9('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e28c1){logger[_0x80d9('0x18')]('GetWhatsappQueue',_0xf2d8b0);logger[_0x80d9('0x13')]('GetWhatsappQueue',_0xf2d8b0,JSON[_0x80d9('0x14')](_0x5e28c1));_0x58edd4(_0x5e28c1);})['catch'](function(_0x1f3273){logger[_0x80d9('0x15')](_0x80d9('0x23'),_0x1f3273[_0x80d9('0x17')],_0xf2d8b0);_0x176eff(_0x5687fa['error'](0x1f4,_0x1f3273[_0x80d9('0x17')]));});});};exports[_0x80d9('0x24')]=function(_0x5daa13){var _0x2be0fe=this;return new Promise(function(_0x4dc0a4,_0x12c9dc){return db[_0x80d9('0x1c')][_0x80d9('0x25')]({'raw':_0x5daa13[_0x80d9('0x1d')]?_0x5daa13[_0x80d9('0x1d')][_0x80d9('0x26')]===undefined?!![]:![]:!![],'where':_0x5daa13[_0x80d9('0x1d')]?_0x5daa13['options'][_0x80d9('0x1e')]||null:null,'attributes':_0x5daa13['options']?_0x5daa13[_0x80d9('0x1d')]['attributes']||null:null,'include':_0x5daa13[_0x80d9('0x1d')]?_0x5daa13['options'][_0x80d9('0x20')]?_[_0x80d9('0x21')](_0x5daa13[_0x80d9('0x1d')][_0x80d9('0x20')],function(_0xa75c5c){return{'model':db[_0xa75c5c['model']],'as':_0xa75c5c['as'],'attributes':_0xa75c5c[_0x80d9('0x1f')],'include':_0xa75c5c[_0x80d9('0x20')]?_['map'](_0xa75c5c[_0x80d9('0x20')],function(_0x6ca810){return{'model':db[_0x6ca810[_0x80d9('0x22')]],'as':_0x6ca810['as'],'attributes':_0x6ca810['attributes'],'include':_0x6ca810['include']?_[_0x80d9('0x21')](_0x6ca810[_0x80d9('0x20')],function(_0x24c2d9){return{'model':db[_0x24c2d9[_0x80d9('0x22')]],'as':_0x24c2d9['as'],'attributes':_0x24c2d9['attributes']};}):[]};}):[]};}):[]:[]})[_0x80d9('0x11')](function(_0x51de21){logger['info'](_0x80d9('0x24'),_0x5daa13);logger[_0x80d9('0x13')](_0x80d9('0x24'),_0x5daa13,JSON['stringify'](_0x51de21));_0x4dc0a4(_0x51de21);})[_0x80d9('0x1b')](function(_0x133e80){logger[_0x80d9('0x15')]('ShowWhatsappQueue',_0x133e80[_0x80d9('0x17')],_0x5daa13);_0x12c9dc(_0x2be0fe[_0x80d9('0x15')](0x1f4,_0x133e80['message']));});});};
\ No newline at end of file
index 28f5cb8..ea926ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f22=['./whatsappQueue.events','remove','emit','register','length','whatsappQueue:'];(function(_0x275285,_0x22307e){var _0x3c12e3=function(_0x3e2a0f){while(--_0x3e2a0f){_0x275285['push'](_0x275285['shift']());}};_0x3c12e3(++_0x22307e);}(_0x2f22,0x120));var _0x22f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2f22[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappQueueEvents=require(_0x22f2('0x0'));var events=['save',_0x22f2('0x1'),'update'];function createListener(_0xaa7667,_0x53e9fd){return function(_0x57658f){_0x53e9fd[_0x22f2('0x2')](_0xaa7667,_0x57658f);};}function removeListener(_0xd08298,_0x2c673a){return function(){WhatsappQueueEvents['removeListener'](_0xd08298,_0x2c673a);};}exports[_0x22f2('0x3')]=function(_0x2acf24){for(var _0x149786=0x0,_0x30e501=events[_0x22f2('0x4')];_0x149786<_0x30e501;_0x149786++){var _0x225dc8=events[_0x149786];var _0x47b563=createListener(_0x22f2('0x5')+_0x225dc8,_0x2acf24);WhatsappQueueEvents['on'](_0x225dc8,_0x47b563);}};
\ No newline at end of file
+var _0x8635=['save','emit','length','whatsappQueue:','./whatsappQueue.events'];(function(_0x211dba,_0x487d76){var _0x217af2=function(_0x5278aa){while(--_0x5278aa){_0x211dba['push'](_0x211dba['shift']());}};_0x217af2(++_0x487d76);}(_0x8635,0xe5));var _0x5863=function(_0x5c6994,_0x19ad9a){_0x5c6994=_0x5c6994-0x0;var _0x1d5c84=_0x8635[_0x5c6994];return _0x1d5c84;};'use strict';var WhatsappQueueEvents=require(_0x5863('0x0'));var events=[_0x5863('0x1'),'remove','update'];function createListener(_0x3a0e02,_0x2edd24){return function(_0x574a5a){_0x2edd24[_0x5863('0x2')](_0x3a0e02,_0x574a5a);};}function removeListener(_0x472924,_0x5c52c2){return function(){WhatsappQueueEvents['removeListener'](_0x472924,_0x5c52c2);};}exports['register']=function(_0x38e439){for(var _0x3f0d83=0x0,_0x34b3a9=events[_0x5863('0x3')];_0x3f0d83<_0x34b3a9;_0x3f0d83++){var _0x4f6b9a=events[_0x3f0d83];var _0x1a3a18=createListener(_0x5863('0x4')+_0x4f6b9a,_0x38e439);WhatsappQueueEvents['on'](_0x4f6b9a,_0x1a3a18);}};
\ No newline at end of file
index fae023d..22a17fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6e=['show','post','create','put','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','/:id'];(function(_0x3e205a,_0x268aa4){var _0x2092e0=function(_0x3e524e){while(--_0x3e524e){_0x3e205a['push'](_0x3e205a['shift']());}};_0x2092e0(++_0x268aa4);}(_0xdb6e,0x17b));var _0xedb6=function(_0x34271c,_0x28a8b){_0x34271c=_0x34271c-0x0;var _0x83585f=_0xdb6e[_0x34271c];return _0x83585f;};'use strict';var multer=require(_0xedb6('0x0'));var util=require(_0xedb6('0x1'));var path=require(_0xedb6('0x2'));var timeout=require('connect-timeout');var express=require(_0xedb6('0x3'));var router=express['Router']();var fs_extra=require(_0xedb6('0x4'));var auth=require(_0xedb6('0x5'));var interaction=require(_0xedb6('0x6'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router[_0xedb6('0x7')]('/',auth['isAuthenticated'](),controller[_0xedb6('0x8')]);router[_0xedb6('0x7')]('/describe',auth[_0xedb6('0x9')](),controller[_0xedb6('0xa')]);router[_0xedb6('0x7')](_0xedb6('0xb'),auth[_0xedb6('0x9')](),controller[_0xedb6('0xc')]);router[_0xedb6('0xd')]('/',auth[_0xedb6('0x9')](),controller[_0xedb6('0xe')]);router[_0xedb6('0xf')](_0xedb6('0xb'),auth[_0xedb6('0x9')](),controller['update']);router[_0xedb6('0x10')](_0xedb6('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf6be=['/:id','post','put','update','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','/describe','isAuthenticated','describe'];(function(_0x22af5b,_0x4a1e77){var _0x4d5762=function(_0x158f42){while(--_0x158f42){_0x22af5b['push'](_0x22af5b['shift']());}};_0x4d5762(++_0x4a1e77);}(_0xf6be,0xb9));var _0xef6b=function(_0xdaab62,_0x2728ab){_0xdaab62=_0xdaab62-0x0;var _0x13d767=_0xf6be[_0xdaab62];return _0x13d767;};'use strict';var multer=require(_0xef6b('0x0'));var util=require(_0xef6b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xef6b('0x2'));var router=express[_0xef6b('0x3')]();var fs_extra=require(_0xef6b('0x4'));var auth=require(_0xef6b('0x5'));var interaction=require(_0xef6b('0x6'));var config=require(_0xef6b('0x7'));var controller=require(_0xef6b('0x8'));router[_0xef6b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xef6b('0xa'),auth[_0xef6b('0xb')](),controller[_0xef6b('0xc')]);router[_0xef6b('0x9')](_0xef6b('0xd'),auth[_0xef6b('0xb')](),controller['show']);router[_0xef6b('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xef6b('0xf')]('/:id',auth[_0xef6b('0xb')](),controller[_0xef6b('0x10')]);router['delete'](_0xef6b('0xd'),auth['isAuthenticated'](),controller[_0xef6b('0x11')]);module['exports']=router;
\ No newline at end of file
index edc162f..80c2c18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x30e112,_0x31790b){var _0x4380d5=function(_0x2261d3){while(--_0x2261d3){_0x30e112['push'](_0x30e112['shift']());}};_0x4380d5(++_0x31790b);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x57c216,_0x42c8a8){var _0x3b10c3=function(_0x1868be){while(--_0x1868be){_0x57c216['push'](_0x57c216['shift']());}};_0x3b10c3(++_0x42c8a8);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 2151f16..f6810d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['apply','reject','save','update','then','stack','name','send','index','map','WhatsappQueueReport','fieldName','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','includeAll','rows','catch','show','params','rawAttributes','length','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','status','end','json','undefined','offset','count','limit','set','Content-Range'];(function(_0x309385,_0x3ab38f){var _0x45b0f5=function(_0x4fa7e0){while(--_0x4fa7e0){_0x309385['push'](_0x309385['shift']());}};_0x45b0f5(++_0x3ab38f);}(_0x6cb4,0xff));var _0x46cb=function(_0x5bbfdc,_0x19691f){_0x5bbfdc=_0x5bbfdc-0x0;var _0x2f287e=_0x6cb4[_0x5bbfdc];return _0x2f287e;};'use strict';var emlformat=require(_0x46cb('0x0'));var rimraf=require(_0x46cb('0x1'));var zipdir=require(_0x46cb('0x2'));var jsonpatch=require(_0x46cb('0x3'));var rp=require(_0x46cb('0x4'));var moment=require(_0x46cb('0x5'));var BPromise=require(_0x46cb('0x6'));var Mustache=require(_0x46cb('0x7'));var util=require(_0x46cb('0x8'));var path=require('path');var sox=require(_0x46cb('0x9'));var csv=require('to-csv');var ejs=require(_0x46cb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46cb('0xb'));var squel=require(_0x46cb('0xc'));var crypto=require(_0x46cb('0xd'));var jsforce=require(_0x46cb('0xe'));var deskjs=require(_0x46cb('0xf'));var toCsv=require(_0x46cb('0x10'));var querystring=require('querystring');var Papa=require(_0x46cb('0x11'));var Redis=require(_0x46cb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x46cb('0x13'));var as=require(_0x46cb('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x46cb('0x15'))(_0x46cb('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x46cb('0x17'))['db'];function respondWithStatusCode(_0x323ac2,_0x1058a8){_0x1058a8=_0x1058a8||0xcc;return function(_0xf22158){if(_0xf22158){return _0x323ac2['sendStatus'](_0x1058a8);}return _0x323ac2[_0x46cb('0x18')](_0x1058a8)[_0x46cb('0x19')]();};}function respondWithResult(_0x2a1f9d,_0x3c0071){_0x3c0071=_0x3c0071||0xc8;return function(_0x1f7150){if(_0x1f7150){return _0x2a1f9d[_0x46cb('0x18')](_0x3c0071)[_0x46cb('0x1a')](_0x1f7150);}};}function respondWithFilteredResult(_0x3c396b,_0x37d368){return function(_0x41e398){if(_0x41e398){var _0x136215=typeof _0x37d368['offset']===_0x46cb('0x1b')&&typeof _0x37d368['limit']===_0x46cb('0x1b');var _0x4ab22b=_0x41e398['count'];var _0x4e3454=_0x136215?0x0:_0x37d368[_0x46cb('0x1c')];var _0x1f2891=_0x136215?_0x41e398[_0x46cb('0x1d')]:_0x37d368[_0x46cb('0x1c')]+_0x37d368[_0x46cb('0x1e')];var _0x26e38d;if(_0x1f2891>=_0x4ab22b){_0x1f2891=_0x4ab22b;_0x26e38d=0xc8;}else{_0x26e38d=0xce;}_0x3c396b[_0x46cb('0x18')](_0x26e38d);return _0x3c396b[_0x46cb('0x1f')](_0x46cb('0x20'),_0x4e3454+'-'+_0x1f2891+'/'+_0x4ab22b)[_0x46cb('0x1a')](_0x41e398);}return null;};}function patchUpdates(_0x149483){return function(_0x46e541){try{jsonpatch[_0x46cb('0x21')](_0x46e541,_0x149483,!![]);}catch(_0x2f438b){return BPromise[_0x46cb('0x22')](_0x2f438b);}return _0x46e541[_0x46cb('0x23')]();};}function saveUpdates(_0x7084b2,_0x1fb467){return function(_0x41ecd2){if(_0x41ecd2){return _0x41ecd2[_0x46cb('0x24')](_0x7084b2)[_0x46cb('0x25')](function(_0x1e9e38){return _0x1e9e38;});}return null;};}function removeEntity(_0x309e4b,_0xadcad6){return function(_0x40e0e5){if(_0x40e0e5){return _0x40e0e5['destroy']()['then'](function(){_0x309e4b[_0x46cb('0x18')](0xcc)[_0x46cb('0x19')]();});}};}function handleEntityNotFound(_0x2711ac,_0xe078a8){return function(_0x6e6d9){if(!_0x6e6d9){_0x2711ac['sendStatus'](0x194);}return _0x6e6d9;};}function handleError(_0xc5a9a4,_0x578ffd){_0x578ffd=_0x578ffd||0x1f4;return function(_0x495886){logger['error'](_0x495886[_0x46cb('0x26')]);if(_0x495886[_0x46cb('0x27')]){delete _0x495886[_0x46cb('0x27')];}_0xc5a9a4[_0x46cb('0x18')](_0x578ffd)[_0x46cb('0x28')](_0x495886);};}exports[_0x46cb('0x29')]=function(_0x378dc7,_0x8c65b2){var _0x2b846a={},_0x12e01e={},_0x4620ef={'count':0x0,'rows':[]};var _0x4a1517=_[_0x46cb('0x2a')](db[_0x46cb('0x2b')]['rawAttributes'],function(_0x49e0bc){return{'name':_0x49e0bc[_0x46cb('0x2c')],'type':_0x49e0bc['type'][_0x46cb('0x2d')]};});_0x12e01e[_0x46cb('0x2e')]=_[_0x46cb('0x2a')](_0x4a1517,_0x46cb('0x27'));_0x12e01e[_0x46cb('0x2f')]=_[_0x46cb('0x30')](_0x378dc7['query']);_0x12e01e[_0x46cb('0x31')]=_['intersection'](_0x12e01e[_0x46cb('0x2e')],_0x12e01e[_0x46cb('0x2f')]);_0x2b846a['attributes']=_[_0x46cb('0x32')](_0x12e01e[_0x46cb('0x2e')],qs[_0x46cb('0x33')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x33')]));_0x2b846a['attributes']=_0x2b846a[_0x46cb('0x34')]['length']?_0x2b846a[_0x46cb('0x34')]:_0x12e01e[_0x46cb('0x2e')];if(!_0x378dc7[_0x46cb('0x2f')]['hasOwnProperty'](_0x46cb('0x35'))){_0x2b846a[_0x46cb('0x1e')]=qs['limit'](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x1e')]);_0x2b846a[_0x46cb('0x1c')]=qs[_0x46cb('0x1c')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x1c')]);}_0x2b846a[_0x46cb('0x36')]=qs[_0x46cb('0x37')](_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x37')]);_0x2b846a[_0x46cb('0x38')]=qs['filters'](_['pick'](_0x378dc7['query'],_0x12e01e[_0x46cb('0x31')]),_0x4a1517);if(_0x378dc7[_0x46cb('0x2f')][_0x46cb('0x39')]){_0x2b846a[_0x46cb('0x38')]=_[_0x46cb('0x3a')](_0x2b846a[_0x46cb('0x38')],{'$or':_['map'](_0x4a1517,function(_0x1f2e11){if(_0x1f2e11['type']!=='VIRTUAL'){var _0x173fac={};_0x173fac[_0x1f2e11['name']]={'$like':'%'+_0x378dc7['query'][_0x46cb('0x39')]+'%'};return _0x173fac;}})});}_0x2b846a=_['merge']({},_0x2b846a,_0x378dc7['options']);var _0x67bd14={'where':_0x2b846a[_0x46cb('0x38')]};return db[_0x46cb('0x2b')][_0x46cb('0x1d')](_0x67bd14)[_0x46cb('0x25')](function(_0x4075b4){_0x4620ef[_0x46cb('0x1d')]=_0x4075b4;if(_0x378dc7['query'][_0x46cb('0x3b')]){_0x2b846a['include']=[{'all':!![]}];}return db[_0x46cb('0x2b')]['findAll'](_0x2b846a);})[_0x46cb('0x25')](function(_0x2fbad9){_0x4620ef[_0x46cb('0x3c')]=_0x2fbad9;return _0x4620ef;})['then'](respondWithFilteredResult(_0x8c65b2,_0x2b846a))[_0x46cb('0x3d')](handleError(_0x8c65b2,null));};exports[_0x46cb('0x3e')]=function(_0x4d24b6,_0x18be96){var _0x3d0b83={'raw':!![],'where':{'id':_0x4d24b6[_0x46cb('0x3f')]['id']}},_0x1f67af={};_0x1f67af[_0x46cb('0x2e')]=_['keys'](db['WhatsappQueueReport'][_0x46cb('0x40')]);_0x1f67af['query']=_[_0x46cb('0x30')](_0x4d24b6[_0x46cb('0x2f')]);_0x1f67af['filters']=_[_0x46cb('0x32')](_0x1f67af[_0x46cb('0x2e')],_0x1f67af[_0x46cb('0x2f')]);_0x3d0b83['attributes']=_['intersection'](_0x1f67af['model'],qs['fields'](_0x4d24b6[_0x46cb('0x2f')][_0x46cb('0x33')]));_0x3d0b83[_0x46cb('0x34')]=_0x3d0b83[_0x46cb('0x34')][_0x46cb('0x41')]?_0x3d0b83['attributes']:_0x1f67af['model'];if(_0x4d24b6[_0x46cb('0x2f')][_0x46cb('0x3b')]){_0x3d0b83['include']=[{'all':!![]}];}_0x3d0b83=_[_0x46cb('0x3a')]({},_0x3d0b83,_0x4d24b6[_0x46cb('0x42')]);return db[_0x46cb('0x2b')][_0x46cb('0x43')](_0x3d0b83)[_0x46cb('0x25')](handleEntityNotFound(_0x18be96,null))[_0x46cb('0x25')](respondWithResult(_0x18be96,null))[_0x46cb('0x3d')](handleError(_0x18be96,null));};exports['create']=function(_0x58c69f,_0x449593){return db['WhatsappQueueReport'][_0x46cb('0x44')](_0x58c69f[_0x46cb('0x45')],{})[_0x46cb('0x25')](respondWithResult(_0x449593,0xc9))['catch'](handleError(_0x449593,null));};exports[_0x46cb('0x24')]=function(_0x5c1665,_0x5c02c9){if(_0x5c1665[_0x46cb('0x45')]['id']){delete _0x5c1665[_0x46cb('0x45')]['id'];}return db[_0x46cb('0x2b')][_0x46cb('0x43')]({'where':{'id':_0x5c1665[_0x46cb('0x3f')]['id']}})[_0x46cb('0x25')](handleEntityNotFound(_0x5c02c9,null))[_0x46cb('0x25')](saveUpdates(_0x5c1665['body'],null))['then'](respondWithResult(_0x5c02c9,null))[_0x46cb('0x3d')](handleError(_0x5c02c9,null));};exports[_0x46cb('0x46')]=function(_0x52e479,_0x34399d){return db[_0x46cb('0x2b')][_0x46cb('0x43')]({'where':{'id':_0x52e479[_0x46cb('0x3f')]['id']}})[_0x46cb('0x25')](handleEntityNotFound(_0x34399d,null))['then'](removeEntity(_0x34399d,null))[_0x46cb('0x3d')](handleError(_0x34399d,null));};exports[_0x46cb('0x47')]=function(_0x20cf6d,_0x52d1a7){return db[_0x46cb('0x2b')]['describe']()['then'](respondWithResult(_0x52d1a7,null))[_0x46cb('0x3d')](handleError(_0x52d1a7,null));};
\ No newline at end of file
+var _0x3266=['query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','show','params','keys','options','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','set','Content-Range','save','update','then','destroy','end','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','type','key','model'];(function(_0x22ae7b,_0x181f95){var _0xabcb8=function(_0x2d2ac3){while(--_0x2d2ac3){_0x22ae7b['push'](_0x22ae7b['shift']());}};_0xabcb8(++_0x181f95);}(_0x3266,0x6a));var _0x6326=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x3266[_0x946518];return _0x909b69;};'use strict';var emlformat=require(_0x6326('0x0'));var rimraf=require(_0x6326('0x1'));var zipdir=require(_0x6326('0x2'));var jsonpatch=require(_0x6326('0x3'));var rp=require(_0x6326('0x4'));var moment=require(_0x6326('0x5'));var BPromise=require(_0x6326('0x6'));var Mustache=require(_0x6326('0x7'));var util=require(_0x6326('0x8'));var path=require('path');var sox=require(_0x6326('0x9'));var csv=require('to-csv');var ejs=require(_0x6326('0xa'));var fs=require('fs');var fs_extra=require(_0x6326('0xb'));var _=require(_0x6326('0xc'));var squel=require('squel');var crypto=require(_0x6326('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6326('0xe'));var toCsv=require(_0x6326('0xf'));var querystring=require(_0x6326('0x10'));var Papa=require(_0x6326('0x11'));var Redis=require(_0x6326('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6326('0x13'));var as=require(_0x6326('0x14'));var hardwareService=require(_0x6326('0x15'));var logger=require(_0x6326('0x16'))(_0x6326('0x17'));var utils=require(_0x6326('0x18'));var config=require(_0x6326('0x19'));var licenseUtil=require(_0x6326('0x1a'));var db=require(_0x6326('0x1b'))['db'];function respondWithStatusCode(_0x379358,_0x5c07e1){_0x5c07e1=_0x5c07e1||0xcc;return function(_0x5381d0){if(_0x5381d0){return _0x379358[_0x6326('0x1c')](_0x5c07e1);}return _0x379358[_0x6326('0x1d')](_0x5c07e1)['end']();};}function respondWithResult(_0x425878,_0x4caef3){_0x4caef3=_0x4caef3||0xc8;return function(_0x2d2d9b){if(_0x2d2d9b){return _0x425878[_0x6326('0x1d')](_0x4caef3)[_0x6326('0x1e')](_0x2d2d9b);}};}function respondWithFilteredResult(_0x41c352,_0x1ed3a3){return function(_0x2c1879){if(_0x2c1879){var _0x55923a=typeof _0x1ed3a3[_0x6326('0x1f')]==='undefined'&&typeof _0x1ed3a3['limit']==='undefined';var _0x51e7b9=_0x2c1879['count'];var _0x58e960=_0x55923a?0x0:_0x1ed3a3[_0x6326('0x1f')];var _0x1f4c11=_0x55923a?_0x2c1879[_0x6326('0x20')]:_0x1ed3a3['offset']+_0x1ed3a3['limit'];var _0x954ed5;if(_0x1f4c11>=_0x51e7b9){_0x1f4c11=_0x51e7b9;_0x954ed5=0xc8;}else{_0x954ed5=0xce;}_0x41c352[_0x6326('0x1d')](_0x954ed5);return _0x41c352[_0x6326('0x21')](_0x6326('0x22'),_0x58e960+'-'+_0x1f4c11+'/'+_0x51e7b9)[_0x6326('0x1e')](_0x2c1879);}return null;};}function patchUpdates(_0x25957a){return function(_0x21ee7d){try{jsonpatch['apply'](_0x21ee7d,_0x25957a,!![]);}catch(_0x22307f){return BPromise['reject'](_0x22307f);}return _0x21ee7d[_0x6326('0x23')]();};}function saveUpdates(_0x3c6cfa,_0x2482ef){return function(_0x24fb78){if(_0x24fb78){return _0x24fb78[_0x6326('0x24')](_0x3c6cfa)[_0x6326('0x25')](function(_0x225555){return _0x225555;});}return null;};}function removeEntity(_0x429bb0,_0x4781cc){return function(_0x2d0d00){if(_0x2d0d00){return _0x2d0d00[_0x6326('0x26')]()['then'](function(){_0x429bb0[_0x6326('0x1d')](0xcc)[_0x6326('0x27')]();});}};}function handleEntityNotFound(_0x575701,_0x4e272b){return function(_0x4d28fd){if(!_0x4d28fd){_0x575701[_0x6326('0x1c')](0x194);}return _0x4d28fd;};}function handleError(_0x4dae28,_0x33c466){_0x33c466=_0x33c466||0x1f4;return function(_0x1a48da){logger['error'](_0x1a48da[_0x6326('0x28')]);if(_0x1a48da[_0x6326('0x29')]){delete _0x1a48da[_0x6326('0x29')];}_0x4dae28[_0x6326('0x1d')](_0x33c466)[_0x6326('0x2a')](_0x1a48da);};}exports[_0x6326('0x2b')]=function(_0x40e036,_0x27802c){var _0x461e0f={},_0x127744={},_0x4980f6={'count':0x0,'rows':[]};var _0x2a8873=_[_0x6326('0x2c')](db[_0x6326('0x2d')][_0x6326('0x2e')],function(_0x20c5ab){return{'name':_0x20c5ab['fieldName'],'type':_0x20c5ab[_0x6326('0x2f')][_0x6326('0x30')]};});_0x127744[_0x6326('0x31')]=_['map'](_0x2a8873,_0x6326('0x29'));_0x127744['query']=_['keys'](_0x40e036[_0x6326('0x32')]);_0x127744[_0x6326('0x33')]=_[_0x6326('0x34')](_0x127744[_0x6326('0x31')],_0x127744[_0x6326('0x32')]);_0x461e0f[_0x6326('0x35')]=_[_0x6326('0x34')](_0x127744[_0x6326('0x31')],qs[_0x6326('0x36')](_0x40e036[_0x6326('0x32')][_0x6326('0x36')]));_0x461e0f[_0x6326('0x35')]=_0x461e0f['attributes'][_0x6326('0x37')]?_0x461e0f[_0x6326('0x35')]:_0x127744['model'];if(!_0x40e036[_0x6326('0x32')][_0x6326('0x38')](_0x6326('0x39'))){_0x461e0f['limit']=qs[_0x6326('0x3a')](_0x40e036['query']['limit']);_0x461e0f[_0x6326('0x1f')]=qs[_0x6326('0x1f')](_0x40e036[_0x6326('0x32')]['offset']);}_0x461e0f[_0x6326('0x3b')]=qs['sort'](_0x40e036[_0x6326('0x32')]['sort']);_0x461e0f[_0x6326('0x3c')]=qs[_0x6326('0x33')](_[_0x6326('0x3d')](_0x40e036[_0x6326('0x32')],_0x127744[_0x6326('0x33')]),_0x2a8873);if(_0x40e036[_0x6326('0x32')]['filter']){_0x461e0f[_0x6326('0x3c')]=_[_0x6326('0x3e')](_0x461e0f['where'],{'$or':_[_0x6326('0x2c')](_0x2a8873,function(_0x5ae140){if(_0x5ae140['type']!==_0x6326('0x3f')){var _0x1f8dcf={};_0x1f8dcf[_0x5ae140[_0x6326('0x29')]]={'$like':'%'+_0x40e036[_0x6326('0x32')][_0x6326('0x40')]+'%'};return _0x1f8dcf;}})});}_0x461e0f=_[_0x6326('0x3e')]({},_0x461e0f,_0x40e036['options']);var _0x485bed={'where':_0x461e0f[_0x6326('0x3c')]};return db['WhatsappQueueReport'][_0x6326('0x20')](_0x485bed)['then'](function(_0x282f33){_0x4980f6[_0x6326('0x20')]=_0x282f33;if(_0x40e036[_0x6326('0x32')][_0x6326('0x41')]){_0x461e0f[_0x6326('0x42')]=[{'all':!![]}];}return db[_0x6326('0x2d')][_0x6326('0x43')](_0x461e0f);})[_0x6326('0x25')](function(_0x3b089b){_0x4980f6[_0x6326('0x44')]=_0x3b089b;return _0x4980f6;})[_0x6326('0x25')](respondWithFilteredResult(_0x27802c,_0x461e0f))['catch'](handleError(_0x27802c,null));};exports[_0x6326('0x45')]=function(_0x5ce03a,_0x29f2fd){var _0x1d9d4c={'raw':!![],'where':{'id':_0x5ce03a[_0x6326('0x46')]['id']}},_0x16fc33={};_0x16fc33['model']=_[_0x6326('0x47')](db[_0x6326('0x2d')]['rawAttributes']);_0x16fc33[_0x6326('0x32')]=_[_0x6326('0x47')](_0x5ce03a[_0x6326('0x32')]);_0x16fc33[_0x6326('0x33')]=_['intersection'](_0x16fc33[_0x6326('0x31')],_0x16fc33[_0x6326('0x32')]);_0x1d9d4c[_0x6326('0x35')]=_[_0x6326('0x34')](_0x16fc33[_0x6326('0x31')],qs[_0x6326('0x36')](_0x5ce03a[_0x6326('0x32')]['fields']));_0x1d9d4c[_0x6326('0x35')]=_0x1d9d4c[_0x6326('0x35')][_0x6326('0x37')]?_0x1d9d4c[_0x6326('0x35')]:_0x16fc33['model'];if(_0x5ce03a[_0x6326('0x32')]['includeAll']){_0x1d9d4c[_0x6326('0x42')]=[{'all':!![]}];}_0x1d9d4c=_[_0x6326('0x3e')]({},_0x1d9d4c,_0x5ce03a[_0x6326('0x48')]);return db[_0x6326('0x2d')][_0x6326('0x49')](_0x1d9d4c)['then'](handleEntityNotFound(_0x29f2fd,null))[_0x6326('0x25')](respondWithResult(_0x29f2fd,null))['catch'](handleError(_0x29f2fd,null));};exports['create']=function(_0x2bca12,_0x44cf9d){return db['WhatsappQueueReport'][_0x6326('0x4a')](_0x2bca12[_0x6326('0x4b')],{})[_0x6326('0x25')](respondWithResult(_0x44cf9d,0xc9))[_0x6326('0x4c')](handleError(_0x44cf9d,null));};exports[_0x6326('0x24')]=function(_0x4f8dc0,_0x4af0ee){if(_0x4f8dc0[_0x6326('0x4b')]['id']){delete _0x4f8dc0[_0x6326('0x4b')]['id'];}return db[_0x6326('0x2d')][_0x6326('0x49')]({'where':{'id':_0x4f8dc0[_0x6326('0x46')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x4af0ee,null))[_0x6326('0x25')](saveUpdates(_0x4f8dc0['body'],null))[_0x6326('0x25')](respondWithResult(_0x4af0ee,null))[_0x6326('0x4c')](handleError(_0x4af0ee,null));};exports[_0x6326('0x26')]=function(_0x3e7674,_0x1b5e9a){return db['WhatsappQueueReport'][_0x6326('0x49')]({'where':{'id':_0x3e7674['params']['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x1b5e9a,null))[_0x6326('0x25')](removeEntity(_0x1b5e9a,null))['catch'](handleError(_0x1b5e9a,null));};exports[_0x6326('0x4d')]=function(_0x5040b1,_0xaa4c9d){return db[_0x6326('0x2d')][_0x6326('0x4d')]()[_0x6326('0x25')](respondWithResult(_0xaa4c9d,null))['catch'](handleError(_0xaa4c9d,null));};
\ No newline at end of file
index 9b76728..4095056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f47=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x3f47,0xcb));var _0x73f4=function(_0x4a5b13,_0x43d46){_0x4a5b13=_0x4a5b13-0x0;var _0xc627dd=_0x3f47[_0x4a5b13];return _0xc627dd;};'use strict';var _=require(_0x73f4('0x0'));var util=require('util');var logger=require(_0x73f4('0x1'))('api');var moment=require(_0x73f4('0x2'));var BPromise=require(_0x73f4('0x3'));var rp=require(_0x73f4('0x4'));var fs=require('fs');var path=require(_0x73f4('0x5'));var rimraf=require('rimraf');var config=require(_0x73f4('0x6'));var attributes=require('./whatsappQueueReport.attributes');module[_0x73f4('0x7')]=function(_0x584944,_0x402b93){return _0x584944[_0x73f4('0x8')](_0x73f4('0x9'),attributes,{'tableName':_0x73f4('0xa'),'paranoid':![],'indexes':[{'name':_0x73f4('0xb'),'fields':[_0x73f4('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x450e=['./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x534078,_0x1ec172){var _0x2e2bb6=function(_0x388bd8){while(--_0x388bd8){_0x534078['push'](_0x534078['shift']());}};_0x2e2bb6(++_0x1ec172);}(_0x450e,0x1d9));var _0xe450=function(_0x158ac3,_0x260607){_0x158ac3=_0x158ac3-0x0;var _0x599aff=_0x450e[_0x158ac3];return _0x599aff;};'use strict';var _=require(_0xe450('0x0'));var util=require(_0xe450('0x1'));var logger=require('../../config/logger')(_0xe450('0x2'));var moment=require(_0xe450('0x3'));var BPromise=require(_0xe450('0x4'));var rp=require(_0xe450('0x5'));var fs=require('fs');var path=require(_0xe450('0x6'));var rimraf=require(_0xe450('0x7'));var config=require('../../config/environment');var attributes=require(_0xe450('0x8'));module[_0xe450('0x9')]=function(_0x5ae8cd,_0x23cc96){return _0x5ae8cd[_0xe450('0xa')](_0xe450('0xb'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe450('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index ae46a8e..b5a3755 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cb3=['jayson/promise','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateWhatsappQueueReport','options','debug','UpdateWhatsappQueueReport','update','body','raw','where','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x53e3bf,_0x547106){var _0x59b198=function(_0x329bb4){while(--_0x329bb4){_0x53e3bf['push'](_0x53e3bf['shift']());}};_0x59b198(++_0x547106);}(_0x8cb3,0x76));var _0x38cb=function(_0x3567d6,_0x33e4e3){_0x3567d6=_0x3567d6-0x0;var _0x20a3f4=_0x8cb3[_0x3567d6];return _0x20a3f4;};'use strict';var _=require(_0x38cb('0x0'));var util=require(_0x38cb('0x1'));var moment=require(_0x38cb('0x2'));var BPromise=require(_0x38cb('0x3'));var rs=require(_0x38cb('0x4'));var fs=require('fs');var Redis=require(_0x38cb('0x5'));var db=require(_0x38cb('0x6'))['db'];var utils=require(_0x38cb('0x7'));var logger=require(_0x38cb('0x8'))(_0x38cb('0x9'));var config=require('../../config/environment');var jayson=require(_0x38cb('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x57c8fa,_0x1adae7,_0x4f06af){return new BPromise(function(_0x4498d7,_0x2c1d64){return client[_0x38cb('0xb')](_0x57c8fa,_0x4f06af)[_0x38cb('0xc')](function(_0x5285af){logger[_0x38cb('0xd')](_0x38cb('0xe'),_0x1adae7,_0x38cb('0xf'));logger['debug'](_0x38cb('0x10'),_0x1adae7,_0x38cb('0xf'),JSON['stringify'](_0x5285af));if(_0x5285af[_0x38cb('0x11')]){if(_0x5285af[_0x38cb('0x11')][_0x38cb('0x12')]===0x1f4){logger[_0x38cb('0x11')](_0x38cb('0xe'),_0x1adae7,_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);return _0x2c1d64(_0x5285af[_0x38cb('0x11')]['message']);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1adae7,_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);return _0x4498d7(_0x5285af[_0x38cb('0x11')][_0x38cb('0x13')]);}else{logger[_0x38cb('0xd')](_0x38cb('0xe'),_0x1adae7,_0x38cb('0xf'));_0x4498d7(_0x5285af['result']['message']);}})[_0x38cb('0x14')](function(_0x18e1ec){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x1adae7,_0x18e1ec);_0x2c1d64(_0x18e1ec);});});}exports[_0x38cb('0x15')]=function(_0x320c41){var _0x52390b=this;return new Promise(function(_0x22dc5b,_0x57026e){return db['WhatsappQueueReport']['create'](_0x320c41['body'],{'raw':_0x320c41[_0x38cb('0x16')]?_0x320c41[_0x38cb('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x38cb('0xc')](function(_0xaf7f90){logger['info'](_0x38cb('0x15'),_0x320c41);logger[_0x38cb('0x17')](_0x38cb('0x15'),_0x320c41,JSON['stringify'](_0xaf7f90));_0x22dc5b(_0xaf7f90);})[_0x38cb('0x14')](function(_0x4516da){logger[_0x38cb('0x11')]('CreateWhatsappQueueReport',_0x4516da[_0x38cb('0x13')],_0x320c41);_0x57026e(_0x52390b[_0x38cb('0x11')](0x1f4,_0x4516da[_0x38cb('0x13')]));});});};exports[_0x38cb('0x18')]=function(_0x4c4c74){var _0x5e844d=this;return new Promise(function(_0x96355,_0x31f1a1){return db['WhatsappQueueReport'][_0x38cb('0x19')](_0x4c4c74[_0x38cb('0x1a')],{'raw':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74[_0x38cb('0x16')][_0x38cb('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74['options'][_0x38cb('0x1c')]||null:null,'attributes':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74[_0x38cb('0x16')][_0x38cb('0x1d')]||null:null,'limit':_0x4c4c74[_0x38cb('0x16')]?_0x4c4c74['options'][_0x38cb('0x1e')]||null:null})[_0x38cb('0xc')](function(_0x3623d8){logger[_0x38cb('0xd')](_0x38cb('0x18'),_0x4c4c74);logger[_0x38cb('0x17')](_0x38cb('0x18'),_0x4c4c74,JSON[_0x38cb('0x1f')](_0x3623d8));_0x96355(_0x3623d8);})[_0x38cb('0x14')](function(_0x49af2c){logger['error'](_0x38cb('0x18'),_0x49af2c['message'],_0x4c4c74);_0x31f1a1(_0x5e844d['error'](0x1f4,_0x49af2c[_0x38cb('0x13')]));});});};
\ No newline at end of file
+var _0xefdf=['WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','then','catch','UpdateWhatsappQueueReport','update','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','WhatsappQueueReport,\x20%s,\x20%s','debug'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xefdf,0x129));var _0xfefd=function(_0x52564b,_0x24c4eb){_0x52564b=_0x52564b-0x0;var _0x31042d=_0xefdf[_0x52564b];return _0x31042d;};'use strict';var _=require('lodash');var util=require(_0xfefd('0x0'));var moment=require(_0xfefd('0x1'));var BPromise=require(_0xfefd('0x2'));var rs=require(_0xfefd('0x3'));var fs=require('fs');var Redis=require(_0xfefd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfefd('0x5'));var logger=require(_0xfefd('0x6'))('rpc');var config=require(_0xfefd('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfefd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a5438,_0x2cfce8,_0x463831){return new BPromise(function(_0x1ecb14,_0x3bdeac){return client['request'](_0x2a5438,_0x463831)['then'](function(_0x539bbc){logger['info'](_0xfefd('0x9'),_0x2cfce8,'request\x20sent');logger[_0xfefd('0xa')](_0xfefd('0xb'),_0x2cfce8,'request\x20sent',JSON[_0xfefd('0xc')](_0x539bbc));if(_0x539bbc[_0xfefd('0xd')]){if(_0x539bbc[_0xfefd('0xd')]['code']===0x1f4){logger[_0xfefd('0xd')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2cfce8,_0x539bbc[_0xfefd('0xd')][_0xfefd('0xe')]);return _0x3bdeac(_0x539bbc['error']['message']);}logger['error'](_0xfefd('0x9'),_0x2cfce8,_0x539bbc[_0xfefd('0xd')][_0xfefd('0xe')]);return _0x1ecb14(_0x539bbc[_0xfefd('0xd')][_0xfefd('0xe')]);}else{logger[_0xfefd('0xf')](_0xfefd('0x9'),_0x2cfce8,'request\x20sent');_0x1ecb14(_0x539bbc['result'][_0xfefd('0xe')]);}})['catch'](function(_0x31e95d){logger['error'](_0xfefd('0x9'),_0x2cfce8,_0x31e95d);_0x3bdeac(_0x31e95d);});});}exports[_0xfefd('0x10')]=function(_0x85cb10){var _0x25f035=this;return new Promise(function(_0x4fd93e,_0xfda405){return db[_0xfefd('0x11')][_0xfefd('0x12')](_0x85cb10[_0xfefd('0x13')],{'raw':_0x85cb10[_0xfefd('0x14')]?_0x85cb10['options'][_0xfefd('0x15')]===undefined?!![]:![]:!![]})[_0xfefd('0x16')](function(_0x1b5599){logger[_0xfefd('0xf')](_0xfefd('0x10'),_0x85cb10);logger[_0xfefd('0xa')](_0xfefd('0x10'),_0x85cb10,JSON[_0xfefd('0xc')](_0x1b5599));_0x4fd93e(_0x1b5599);})[_0xfefd('0x17')](function(_0x20f029){logger[_0xfefd('0xd')](_0xfefd('0x10'),_0x20f029[_0xfefd('0xe')],_0x85cb10);_0xfda405(_0x25f035[_0xfefd('0xd')](0x1f4,_0x20f029[_0xfefd('0xe')]));});});};exports[_0xfefd('0x18')]=function(_0x21c067){var _0x4a90a1=this;return new Promise(function(_0x17e424,_0x12ded8){return db[_0xfefd('0x11')][_0xfefd('0x19')](_0x21c067[_0xfefd('0x13')],{'raw':_0x21c067[_0xfefd('0x14')]?_0x21c067[_0xfefd('0x14')][_0xfefd('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21c067[_0xfefd('0x14')]?_0x21c067[_0xfefd('0x14')]['where']||null:null,'attributes':_0x21c067[_0xfefd('0x14')]?_0x21c067[_0xfefd('0x14')][_0xfefd('0x1a')]||null:null,'limit':_0x21c067[_0xfefd('0x14')]?_0x21c067[_0xfefd('0x14')][_0xfefd('0x1b')]||null:null})[_0xfefd('0x16')](function(_0x1457f6){logger[_0xfefd('0xf')](_0xfefd('0x18'),_0x21c067);logger[_0xfefd('0xa')](_0xfefd('0x18'),_0x21c067,JSON[_0xfefd('0xc')](_0x1457f6));_0x17e424(_0x1457f6);})[_0xfefd('0x17')](function(_0x307185){logger[_0xfefd('0xd')]('UpdateWhatsappQueueReport',_0x307185[_0xfefd('0xe')],_0x21c067);_0x12ded8(_0x4a90a1[_0xfefd('0xd')](0x1f4,_0x307185[_0xfefd('0xe')]));});});};
\ No newline at end of file
index ad960e1..9206cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7966=['create','put','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/describe','describe','/:id','isAuthenticated','show','post'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0x7966,0xe7));var _0x6796=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7966[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x6796('0x0'));var util=require(_0x6796('0x1'));var path=require(_0x6796('0x2'));var timeout=require(_0x6796('0x3'));var express=require(_0x6796('0x4'));var router=express[_0x6796('0x5')]();var fs_extra=require(_0x6796('0x6'));var auth=require(_0x6796('0x7'));var interaction=require(_0x6796('0x8'));var config=require('../../config/environment');var controller=require('./whatsappTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6796('0x9')](_0x6796('0xa'),auth['isAuthenticated'](),controller[_0x6796('0xb')]);router[_0x6796('0x9')](_0x6796('0xc'),auth[_0x6796('0xd')](),controller[_0x6796('0xe')]);router[_0x6796('0xf')]('/',auth[_0x6796('0xd')](),controller[_0x6796('0x10')]);router[_0x6796('0x11')](_0x6796('0xc'),auth[_0x6796('0xd')](),controller['update']);router['delete']('/:id',auth[_0x6796('0xd')](),controller['destroy']);module[_0x6796('0x12')]=router;
\ No newline at end of file
+var _0xced0=['get','isAuthenticated','index','/describe','describe','/:id','show','create','update','delete','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller'];(function(_0x272d90,_0x5e70ff){var _0x2bf4a2=function(_0x544da6){while(--_0x544da6){_0x272d90['push'](_0x272d90['shift']());}};_0x2bf4a2(++_0x5e70ff);}(_0xced0,0xd1));var _0x0ced=function(_0x52a862,_0x474c09){_0x52a862=_0x52a862-0x0;var _0x544829=_0xced0[_0x52a862];return _0x544829;};'use strict';var multer=require('multer');var util=require(_0x0ced('0x0'));var path=require(_0x0ced('0x1'));var timeout=require(_0x0ced('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0ced('0x3'));var auth=require(_0x0ced('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0ced('0x5'));var controller=require(_0x0ced('0x6'));router[_0x0ced('0x7')]('/',auth[_0x0ced('0x8')](),controller[_0x0ced('0x9')]);router[_0x0ced('0x7')](_0x0ced('0xa'),auth[_0x0ced('0x8')](),controller[_0x0ced('0xb')]);router['get'](_0x0ced('0xc'),auth[_0x0ced('0x8')](),controller[_0x0ced('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x0ced('0xe')]);router['put']('/:id',auth[_0x0ced('0x8')](),controller[_0x0ced('0xf')]);router[_0x0ced('0x10')](_0x0ced('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x0ced('0x11')]=router;
\ No newline at end of file
index ed80687..2071063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1707=['account','agent','DATE','sequelize'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x1707,0x1df));var _0x7170=function(_0x48f971,_0x23518){_0x48f971=_0x48f971-0x0;var _0x4de7a8=_0x1707[_0x48f971];return _0x4de7a8;};'use strict';var Sequelize=require(_0x7170('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x7170('0x1'),_0x7170('0x2'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7170('0x3')]}};
\ No newline at end of file
+var _0x36ee=['queue','DATE','STRING','account','agent'];(function(_0x197d2a,_0x583fd1){var _0x684bae=function(_0x29fd04){while(--_0x29fd04){_0x197d2a['push'](_0x197d2a['shift']());}};_0x684bae(++_0x583fd1);}(_0x36ee,0xe8));var _0xe36e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x36ee[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xe36e('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe36e('0x1'),_0xe36e('0x2'),_0xe36e('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xe36e('0x4')]}};
\ No newline at end of file
index 3b8a07a..a8d32b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x832c=['key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','WhatsappTransferReport','include','findAll','catch','show','filters','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x2fbd91,_0x18668d){var _0x5998ea=function(_0x1539a7){while(--_0x1539a7){_0x2fbd91['push'](_0x2fbd91['shift']());}};_0x5998ea(++_0x18668d);}(_0x832c,0x1e5));var _0xc832=function(_0x5441ce,_0x4fb889){_0x5441ce=_0x5441ce-0x0;var _0x21f8fa=_0x832c[_0x5441ce];return _0x21f8fa;};'use strict';var emlformat=require(_0xc832('0x0'));var rimraf=require(_0xc832('0x1'));var zipdir=require(_0xc832('0x2'));var jsonpatch=require(_0xc832('0x3'));var rp=require('request-promise');var moment=require(_0xc832('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc832('0x5'));var sox=require('sox');var csv=require(_0xc832('0x6'));var ejs=require(_0xc832('0x7'));var fs=require('fs');var fs_extra=require(_0xc832('0x8'));var _=require(_0xc832('0x9'));var squel=require(_0xc832('0xa'));var crypto=require(_0xc832('0xb'));var jsforce=require(_0xc832('0xc'));var deskjs=require(_0xc832('0xd'));var toCsv=require(_0xc832('0x6'));var querystring=require(_0xc832('0xe'));var Papa=require(_0xc832('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc832('0x10'));var as=require(_0xc832('0x11'));var hardwareService=require(_0xc832('0x12'));var logger=require(_0xc832('0x13'))(_0xc832('0x14'));var utils=require(_0xc832('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc832('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46676c,_0xa1c7c0){_0xa1c7c0=_0xa1c7c0||0xcc;return function(_0x5aa6ef){if(_0x5aa6ef){return _0x46676c['sendStatus'](_0xa1c7c0);}return _0x46676c['status'](_0xa1c7c0)[_0xc832('0x17')]();};}function respondWithResult(_0x1229d5,_0x33c84e){_0x33c84e=_0x33c84e||0xc8;return function(_0x2b4d05){if(_0x2b4d05){return _0x1229d5[_0xc832('0x18')](_0x33c84e)[_0xc832('0x19')](_0x2b4d05);}};}function respondWithFilteredResult(_0x427205,_0x36cd88){return function(_0x4d22bb){if(_0x4d22bb){var _0x586299=typeof _0x36cd88[_0xc832('0x1a')]==='undefined'&&typeof _0x36cd88['limit']===_0xc832('0x1b');var _0x476334=_0x4d22bb['count'];var _0x21fb7d=_0x586299?0x0:_0x36cd88[_0xc832('0x1a')];var _0x1ec564=_0x586299?_0x4d22bb[_0xc832('0x1c')]:_0x36cd88['offset']+_0x36cd88[_0xc832('0x1d')];var _0x503613;if(_0x1ec564>=_0x476334){_0x1ec564=_0x476334;_0x503613=0xc8;}else{_0x503613=0xce;}_0x427205[_0xc832('0x18')](_0x503613);return _0x427205[_0xc832('0x1e')](_0xc832('0x1f'),_0x21fb7d+'-'+_0x1ec564+'/'+_0x476334)[_0xc832('0x19')](_0x4d22bb);}return null;};}function patchUpdates(_0x42b7f8){return function(_0x2d9de5){try{jsonpatch[_0xc832('0x20')](_0x2d9de5,_0x42b7f8,!![]);}catch(_0x5c7e03){return BPromise[_0xc832('0x21')](_0x5c7e03);}return _0x2d9de5[_0xc832('0x22')]();};}function saveUpdates(_0x3b068d,_0x111910){return function(_0x3a0ac8){if(_0x3a0ac8){return _0x3a0ac8[_0xc832('0x23')](_0x3b068d)[_0xc832('0x24')](function(_0x46d6b1){return _0x46d6b1;});}return null;};}function removeEntity(_0x357dfb,_0x3bbd44){return function(_0x315f83){if(_0x315f83){return _0x315f83['destroy']()[_0xc832('0x24')](function(){_0x357dfb[_0xc832('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f1e27,_0x21fd28){return function(_0x53efa0){if(!_0x53efa0){_0x4f1e27[_0xc832('0x25')](0x194);}return _0x53efa0;};}function handleError(_0x167c4d,_0x346293){_0x346293=_0x346293||0x1f4;return function(_0x34f69a){logger[_0xc832('0x26')](_0x34f69a[_0xc832('0x27')]);if(_0x34f69a[_0xc832('0x28')]){delete _0x34f69a[_0xc832('0x28')];}_0x167c4d['status'](_0x346293)[_0xc832('0x29')](_0x34f69a);};}exports[_0xc832('0x2a')]=function(_0x3ff764,_0x5526a4){var _0x4a77f5={},_0x5b66c7={},_0x2b9fe5={'count':0x0,'rows':[]};var _0x3cf523=_[_0xc832('0x2b')](db['WhatsappTransferReport'][_0xc832('0x2c')],function(_0x2771ea){return{'name':_0x2771ea[_0xc832('0x2d')],'type':_0x2771ea[_0xc832('0x2e')][_0xc832('0x2f')]};});_0x5b66c7[_0xc832('0x30')]=_['map'](_0x3cf523,_0xc832('0x28'));_0x5b66c7[_0xc832('0x31')]=_[_0xc832('0x32')](_0x3ff764[_0xc832('0x31')]);_0x5b66c7['filters']=_[_0xc832('0x33')](_0x5b66c7[_0xc832('0x30')],_0x5b66c7[_0xc832('0x31')]);_0x4a77f5['attributes']=_[_0xc832('0x33')](_0x5b66c7[_0xc832('0x30')],qs['fields'](_0x3ff764[_0xc832('0x31')][_0xc832('0x34')]));_0x4a77f5[_0xc832('0x35')]=_0x4a77f5[_0xc832('0x35')][_0xc832('0x36')]?_0x4a77f5['attributes']:_0x5b66c7[_0xc832('0x30')];if(!_0x3ff764[_0xc832('0x31')][_0xc832('0x37')](_0xc832('0x38'))){_0x4a77f5[_0xc832('0x1d')]=qs[_0xc832('0x1d')](_0x3ff764[_0xc832('0x31')]['limit']);_0x4a77f5[_0xc832('0x1a')]=qs[_0xc832('0x1a')](_0x3ff764[_0xc832('0x31')][_0xc832('0x1a')]);}_0x4a77f5[_0xc832('0x39')]=qs[_0xc832('0x3a')](_0x3ff764[_0xc832('0x31')][_0xc832('0x3a')]);_0x4a77f5[_0xc832('0x3b')]=qs['filters'](_['pick'](_0x3ff764[_0xc832('0x31')],_0x5b66c7['filters']),_0x3cf523);if(_0x3ff764[_0xc832('0x31')][_0xc832('0x3c')]){_0x4a77f5[_0xc832('0x3b')]=_['merge'](_0x4a77f5[_0xc832('0x3b')],{'$or':_[_0xc832('0x2b')](_0x3cf523,function(_0x333c1e){if(_0x333c1e[_0xc832('0x2e')]!==_0xc832('0x3d')){var _0x4add87={};_0x4add87[_0x333c1e[_0xc832('0x28')]]={'$like':'%'+_0x3ff764[_0xc832('0x31')][_0xc832('0x3c')]+'%'};return _0x4add87;}})});}_0x4a77f5=_[_0xc832('0x3e')]({},_0x4a77f5,_0x3ff764[_0xc832('0x3f')]);var _0x39f91d={'where':_0x4a77f5['where']};return db[_0xc832('0x40')][_0xc832('0x1c')](_0x39f91d)['then'](function(_0x3f574a){_0x2b9fe5[_0xc832('0x1c')]=_0x3f574a;if(_0x3ff764['query']['includeAll']){_0x4a77f5[_0xc832('0x41')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xc832('0x42')](_0x4a77f5);})[_0xc832('0x24')](function(_0x292bda){_0x2b9fe5['rows']=_0x292bda;return _0x2b9fe5;})['then'](respondWithFilteredResult(_0x5526a4,_0x4a77f5))[_0xc832('0x43')](handleError(_0x5526a4,null));};exports[_0xc832('0x44')]=function(_0xec2137,_0x512b0a){var _0x319333={'raw':!![],'where':{'id':_0xec2137['params']['id']}},_0x1d0771={};_0x1d0771[_0xc832('0x30')]=_[_0xc832('0x32')](db[_0xc832('0x40')][_0xc832('0x2c')]);_0x1d0771[_0xc832('0x31')]=_[_0xc832('0x32')](_0xec2137['query']);_0x1d0771[_0xc832('0x45')]=_[_0xc832('0x33')](_0x1d0771['model'],_0x1d0771[_0xc832('0x31')]);_0x319333[_0xc832('0x35')]=_[_0xc832('0x33')](_0x1d0771[_0xc832('0x30')],qs[_0xc832('0x34')](_0xec2137[_0xc832('0x31')][_0xc832('0x34')]));_0x319333[_0xc832('0x35')]=_0x319333['attributes']['length']?_0x319333[_0xc832('0x35')]:_0x1d0771[_0xc832('0x30')];if(_0xec2137[_0xc832('0x31')]['includeAll']){_0x319333[_0xc832('0x41')]=[{'all':!![]}];}_0x319333=_[_0xc832('0x3e')]({},_0x319333,_0xec2137[_0xc832('0x3f')]);return db[_0xc832('0x40')][_0xc832('0x46')](_0x319333)[_0xc832('0x24')](handleEntityNotFound(_0x512b0a,null))['then'](respondWithResult(_0x512b0a,null))[_0xc832('0x43')](handleError(_0x512b0a,null));};exports[_0xc832('0x47')]=function(_0x5732ee,_0x324121){return db[_0xc832('0x40')][_0xc832('0x47')](_0x5732ee[_0xc832('0x48')],{})['then'](respondWithResult(_0x324121,0xc9))[_0xc832('0x43')](handleError(_0x324121,null));};exports[_0xc832('0x23')]=function(_0x5c5063,_0x231519){if(_0x5c5063['body']['id']){delete _0x5c5063[_0xc832('0x48')]['id'];}return db[_0xc832('0x40')][_0xc832('0x46')]({'where':{'id':_0x5c5063[_0xc832('0x49')]['id']}})[_0xc832('0x24')](handleEntityNotFound(_0x231519,null))[_0xc832('0x24')](saveUpdates(_0x5c5063[_0xc832('0x48')],null))[_0xc832('0x24')](respondWithResult(_0x231519,null))['catch'](handleError(_0x231519,null));};exports[_0xc832('0x4a')]=function(_0x4faead,_0x4c03ac){return db[_0xc832('0x40')][_0xc832('0x46')]({'where':{'id':_0x4faead[_0xc832('0x49')]['id']}})[_0xc832('0x24')](handleEntityNotFound(_0x4c03ac,null))['then'](removeEntity(_0x4c03ac,null))[_0xc832('0x43')](handleError(_0x4c03ac,null));};exports['describe']=function(_0x30058b,_0x4ae0f4){return db[_0xc832('0x40')][_0xc832('0x4b')]()[_0xc832('0x24')](respondWithResult(_0x4ae0f4,null))[_0xc832('0x43')](handleError(_0x4ae0f4,null));};
\ No newline at end of file
+var _0x91ac=['sendStatus','status','end','offset','limit','count','set','json','apply','save','update','then','error','name','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','WhatsappTransferReport','fields','create','body','find','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x34f031,_0x2e7ee3){var _0x540b61=function(_0x20a206){while(--_0x20a206){_0x34f031['push'](_0x34f031['shift']());}};_0x540b61(++_0x2e7ee3);}(_0x91ac,0x73));var _0xc91a=function(_0x208bc9,_0x4f36f6){_0x208bc9=_0x208bc9-0x0;var _0x2675a8=_0x91ac[_0x208bc9];return _0x2675a8;};'use strict';var emlformat=require(_0xc91a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc91a('0x1'));var jsonpatch=require(_0xc91a('0x2'));var rp=require(_0xc91a('0x3'));var moment=require(_0xc91a('0x4'));var BPromise=require(_0xc91a('0x5'));var Mustache=require(_0xc91a('0x6'));var util=require('util');var path=require(_0xc91a('0x7'));var sox=require(_0xc91a('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc91a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc91a('0xa'));var toCsv=require(_0xc91a('0xb'));var querystring=require(_0xc91a('0xc'));var Papa=require('papaparse');var Redis=require(_0xc91a('0xd'));var authService=require(_0xc91a('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc91a('0xf'));var hardwareService=require(_0xc91a('0x10'));var logger=require(_0xc91a('0x11'))(_0xc91a('0x12'));var utils=require('../../config/utils');var config=require(_0xc91a('0x13'));var licenseUtil=require(_0xc91a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x334a64,_0xa1496b){_0xa1496b=_0xa1496b||0xcc;return function(_0x44402b){if(_0x44402b){return _0x334a64[_0xc91a('0x15')](_0xa1496b);}return _0x334a64[_0xc91a('0x16')](_0xa1496b)[_0xc91a('0x17')]();};}function respondWithResult(_0x195648,_0x4bc80f){_0x4bc80f=_0x4bc80f||0xc8;return function(_0x2eead6){if(_0x2eead6){return _0x195648[_0xc91a('0x16')](_0x4bc80f)['json'](_0x2eead6);}};}function respondWithFilteredResult(_0x180dd3,_0x4acb50){return function(_0x11623b){if(_0x11623b){var _0x1d9cd4=typeof _0x4acb50[_0xc91a('0x18')]==='undefined'&&typeof _0x4acb50[_0xc91a('0x19')]==='undefined';var _0xf2afee=_0x11623b[_0xc91a('0x1a')];var _0x1694fe=_0x1d9cd4?0x0:_0x4acb50[_0xc91a('0x18')];var _0x3ecb5e=_0x1d9cd4?_0x11623b[_0xc91a('0x1a')]:_0x4acb50['offset']+_0x4acb50[_0xc91a('0x19')];var _0x18fab1;if(_0x3ecb5e>=_0xf2afee){_0x3ecb5e=_0xf2afee;_0x18fab1=0xc8;}else{_0x18fab1=0xce;}_0x180dd3['status'](_0x18fab1);return _0x180dd3[_0xc91a('0x1b')]('Content-Range',_0x1694fe+'-'+_0x3ecb5e+'/'+_0xf2afee)[_0xc91a('0x1c')](_0x11623b);}return null;};}function patchUpdates(_0x598349){return function(_0x8c09ed){try{jsonpatch[_0xc91a('0x1d')](_0x8c09ed,_0x598349,!![]);}catch(_0x460e08){return BPromise['reject'](_0x460e08);}return _0x8c09ed[_0xc91a('0x1e')]();};}function saveUpdates(_0x4677fd,_0xec263c){return function(_0x1578a8){if(_0x1578a8){return _0x1578a8[_0xc91a('0x1f')](_0x4677fd)[_0xc91a('0x20')](function(_0x253b7d){return _0x253b7d;});}return null;};}function removeEntity(_0x317d72,_0x5697e4){return function(_0x137273){if(_0x137273){return _0x137273['destroy']()[_0xc91a('0x20')](function(){_0x317d72['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588a9e,_0x19f7c9){return function(_0x1d5a9d){if(!_0x1d5a9d){_0x588a9e[_0xc91a('0x15')](0x194);}return _0x1d5a9d;};}function handleError(_0x1490ec,_0x4f9b46){_0x4f9b46=_0x4f9b46||0x1f4;return function(_0x37480b){logger[_0xc91a('0x21')](_0x37480b['stack']);if(_0x37480b[_0xc91a('0x22')]){delete _0x37480b['name'];}_0x1490ec[_0xc91a('0x16')](_0x4f9b46)['send'](_0x37480b);};}exports['index']=function(_0x43dd14,_0x1ae5b6){var _0x25fd59={},_0x2854f2={},_0x1c399c={'count':0x0,'rows':[]};var _0x39e474=_[_0xc91a('0x23')](db['WhatsappTransferReport'][_0xc91a('0x24')],function(_0x46d485){return{'name':_0x46d485[_0xc91a('0x25')],'type':_0x46d485[_0xc91a('0x26')][_0xc91a('0x27')]};});_0x2854f2[_0xc91a('0x28')]=_[_0xc91a('0x23')](_0x39e474,_0xc91a('0x22'));_0x2854f2[_0xc91a('0x29')]=_['keys'](_0x43dd14[_0xc91a('0x29')]);_0x2854f2[_0xc91a('0x2a')]=_['intersection'](_0x2854f2[_0xc91a('0x28')],_0x2854f2[_0xc91a('0x29')]);_0x25fd59['attributes']=_[_0xc91a('0x2b')](_0x2854f2[_0xc91a('0x28')],qs['fields'](_0x43dd14[_0xc91a('0x29')]['fields']));_0x25fd59[_0xc91a('0x2c')]=_0x25fd59['attributes'][_0xc91a('0x2d')]?_0x25fd59[_0xc91a('0x2c')]:_0x2854f2['model'];if(!_0x43dd14[_0xc91a('0x29')][_0xc91a('0x2e')](_0xc91a('0x2f'))){_0x25fd59[_0xc91a('0x19')]=qs['limit'](_0x43dd14[_0xc91a('0x29')][_0xc91a('0x19')]);_0x25fd59[_0xc91a('0x18')]=qs[_0xc91a('0x18')](_0x43dd14['query'][_0xc91a('0x18')]);}_0x25fd59['order']=qs[_0xc91a('0x30')](_0x43dd14['query'][_0xc91a('0x30')]);_0x25fd59[_0xc91a('0x31')]=qs[_0xc91a('0x2a')](_[_0xc91a('0x32')](_0x43dd14[_0xc91a('0x29')],_0x2854f2[_0xc91a('0x2a')]),_0x39e474);if(_0x43dd14[_0xc91a('0x29')][_0xc91a('0x33')]){_0x25fd59[_0xc91a('0x31')]=_['merge'](_0x25fd59[_0xc91a('0x31')],{'$or':_[_0xc91a('0x23')](_0x39e474,function(_0x523a31){if(_0x523a31['type']!=='VIRTUAL'){var _0x51a76b={};_0x51a76b[_0x523a31[_0xc91a('0x22')]]={'$like':'%'+_0x43dd14[_0xc91a('0x29')]['filter']+'%'};return _0x51a76b;}})});}_0x25fd59=_[_0xc91a('0x34')]({},_0x25fd59,_0x43dd14['options']);var _0x3cb4f8={'where':_0x25fd59[_0xc91a('0x31')]};return db['WhatsappTransferReport'][_0xc91a('0x1a')](_0x3cb4f8)[_0xc91a('0x20')](function(_0x4a7321){_0x1c399c[_0xc91a('0x1a')]=_0x4a7321;if(_0x43dd14[_0xc91a('0x29')][_0xc91a('0x35')]){_0x25fd59[_0xc91a('0x36')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xc91a('0x37')](_0x25fd59);})['then'](function(_0x4db086){_0x1c399c[_0xc91a('0x38')]=_0x4db086;return _0x1c399c;})['then'](respondWithFilteredResult(_0x1ae5b6,_0x25fd59))[_0xc91a('0x39')](handleError(_0x1ae5b6,null));};exports[_0xc91a('0x3a')]=function(_0x1fd567,_0xecd4db){var _0x2b1feb={'raw':!![],'where':{'id':_0x1fd567[_0xc91a('0x3b')]['id']}},_0x3758cc={};_0x3758cc[_0xc91a('0x28')]=_[_0xc91a('0x3c')](db[_0xc91a('0x3d')][_0xc91a('0x24')]);_0x3758cc[_0xc91a('0x29')]=_[_0xc91a('0x3c')](_0x1fd567['query']);_0x3758cc[_0xc91a('0x2a')]=_[_0xc91a('0x2b')](_0x3758cc[_0xc91a('0x28')],_0x3758cc['query']);_0x2b1feb[_0xc91a('0x2c')]=_[_0xc91a('0x2b')](_0x3758cc[_0xc91a('0x28')],qs[_0xc91a('0x3e')](_0x1fd567[_0xc91a('0x29')][_0xc91a('0x3e')]));_0x2b1feb[_0xc91a('0x2c')]=_0x2b1feb['attributes'][_0xc91a('0x2d')]?_0x2b1feb['attributes']:_0x3758cc[_0xc91a('0x28')];if(_0x1fd567['query']['includeAll']){_0x2b1feb[_0xc91a('0x36')]=[{'all':!![]}];}_0x2b1feb=_[_0xc91a('0x34')]({},_0x2b1feb,_0x1fd567['options']);return db[_0xc91a('0x3d')]['find'](_0x2b1feb)['then'](handleEntityNotFound(_0xecd4db,null))[_0xc91a('0x20')](respondWithResult(_0xecd4db,null))['catch'](handleError(_0xecd4db,null));};exports['create']=function(_0x55f87a,_0x4f71d8){return db['WhatsappTransferReport'][_0xc91a('0x3f')](_0x55f87a[_0xc91a('0x40')],{})[_0xc91a('0x20')](respondWithResult(_0x4f71d8,0xc9))[_0xc91a('0x39')](handleError(_0x4f71d8,null));};exports[_0xc91a('0x1f')]=function(_0x240cea,_0x45b2ce){if(_0x240cea[_0xc91a('0x40')]['id']){delete _0x240cea[_0xc91a('0x40')]['id'];}return db['WhatsappTransferReport'][_0xc91a('0x41')]({'where':{'id':_0x240cea[_0xc91a('0x3b')]['id']}})[_0xc91a('0x20')](handleEntityNotFound(_0x45b2ce,null))['then'](saveUpdates(_0x240cea[_0xc91a('0x40')],null))['then'](respondWithResult(_0x45b2ce,null))[_0xc91a('0x39')](handleError(_0x45b2ce,null));};exports[_0xc91a('0x42')]=function(_0x423413,_0x6e3a09){return db[_0xc91a('0x3d')][_0xc91a('0x41')]({'where':{'id':_0x423413[_0xc91a('0x3b')]['id']}})[_0xc91a('0x20')](handleEntityNotFound(_0x6e3a09,null))[_0xc91a('0x20')](removeEntity(_0x6e3a09,null))['catch'](handleError(_0x6e3a09,null));};exports['describe']=function(_0x13eb96,_0x33bebe){return db['WhatsappTransferReport'][_0xc91a('0x43')]()[_0xc91a('0x20')](respondWithResult(_0x33bebe,null))[_0xc91a('0x39')](handleError(_0x33bebe,null));};
\ No newline at end of file
index 27f025f..1c92515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc89f=['rimraf','./whatsappTransferReport.attributes','define','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xc89f,0x1ee));var _0xfc89=function(_0x1486ee,_0x37885b){_0x1486ee=_0x1486ee-0x0;var _0x5928a6=_0xc89f[_0x1486ee];return _0x5928a6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc89('0x0'))(_0xfc89('0x1'));var moment=require(_0xfc89('0x2'));var BPromise=require(_0xfc89('0x3'));var rp=require(_0xfc89('0x4'));var fs=require('fs');var path=require(_0xfc89('0x5'));var rimraf=require(_0xfc89('0x6'));var config=require('../../config/environment');var attributes=require(_0xfc89('0x7'));module['exports']=function(_0x2bb119,_0x5bba32){return _0x2bb119[_0xfc89('0x8')]('WhatsappTransferReport',attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0xfc89('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x332e=['api','moment','path','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util','../../config/logger'];(function(_0x585b22,_0xd64ae1){var _0xb5e53e=function(_0x1c06a2){while(--_0x1c06a2){_0x585b22['push'](_0x585b22['shift']());}};_0xb5e53e(++_0xd64ae1);}(_0x332e,0x1a0));var _0xe332=function(_0x34f701,_0x37e407){_0x34f701=_0x34f701-0x0;var _0x3e2429=_0x332e[_0x34f701];return _0x3e2429;};'use strict';var _=require('lodash');var util=require(_0xe332('0x0'));var logger=require(_0xe332('0x1'))(_0xe332('0x2'));var moment=require(_0xe332('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe332('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe332('0x5'));module[_0xe332('0x6')]=function(_0x1a211e,_0x3fed00){return _0x1a211e[_0xe332('0x7')](_0xe332('0x8'),attributes,{'tableName':_0xe332('0x9'),'paranoid':![],'indexes':[{'name':_0xe332('0xa'),'fields':[_0xe332('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 07849b8..07b5f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x408e=['error','message','info','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x408e,0xc2));var _0xe408=function(_0x388e6d,_0x4db588){_0x388e6d=_0x388e6d-0x0;var _0x33bf25=_0x408e[_0x388e6d];return _0x33bf25;};'use strict';var _=require(_0xe408('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe408('0x1'));var rs=require(_0xe408('0x2'));var fs=require('fs');var Redis=require(_0xe408('0x3'));var db=require(_0xe408('0x4'))['db'];var utils=require(_0xe408('0x5'));var logger=require(_0xe408('0x6'))('rpc');var config=require(_0xe408('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe408('0x8')][_0xe408('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f9795,_0x36bbe9,_0x19471b){return new BPromise(function(_0x1cf72a,_0x1aad5e){return client[_0xe408('0xa')](_0x1f9795,_0x19471b)['then'](function(_0xccf260){logger['info'](_0xe408('0xb'),_0x36bbe9,_0xe408('0xc'));logger['debug'](_0xe408('0xd'),_0x36bbe9,'request\x20sent',JSON[_0xe408('0xe')](_0xccf260));if(_0xccf260['error']){if(_0xccf260[_0xe408('0xf')]['code']===0x1f4){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x36bbe9,_0xccf260['error'][_0xe408('0x10')]);return _0x1aad5e(_0xccf260[_0xe408('0xf')][_0xe408('0x10')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x36bbe9,_0xccf260['error'][_0xe408('0x10')]);return _0x1cf72a(_0xccf260[_0xe408('0xf')][_0xe408('0x10')]);}else{logger[_0xe408('0x11')](_0xe408('0xb'),_0x36bbe9,_0xe408('0xc'));_0x1cf72a(_0xccf260['result'][_0xe408('0x10')]);}})[_0xe408('0x12')](function(_0x8f1269){logger[_0xe408('0xf')](_0xe408('0xb'),_0x36bbe9,_0x8f1269);_0x1aad5e(_0x8f1269);});});}
\ No newline at end of file
+var _0x6527=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x3aafb4,_0x5add0c){var _0x19e216=function(_0x223cd5){while(--_0x223cd5){_0x3aafb4['push'](_0x3aafb4['shift']());}};_0x19e216(++_0x5add0c);}(_0x6527,0x188));var _0x7652=function(_0x3197ec,_0xc282d){_0x3197ec=_0x3197ec-0x0;var _0x43332b=_0x6527[_0x3197ec];return _0x43332b;};'use strict';var _=require(_0x7652('0x0'));var util=require(_0x7652('0x1'));var moment=require(_0x7652('0x2'));var BPromise=require(_0x7652('0x3'));var rs=require(_0x7652('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7652('0x5'))['db'];var utils=require(_0x7652('0x6'));var logger=require(_0x7652('0x7'))(_0x7652('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7652('0x9')][_0x7652('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a7dc0,_0x23f9df,_0x3fbc75){return new BPromise(function(_0x215309,_0x4800ff){return client[_0x7652('0xb')](_0x1a7dc0,_0x3fbc75)['then'](function(_0x134c17){logger['info'](_0x7652('0xc'),_0x23f9df,_0x7652('0xd'));logger[_0x7652('0xe')](_0x7652('0xf'),_0x23f9df,_0x7652('0xd'),JSON[_0x7652('0x10')](_0x134c17));if(_0x134c17[_0x7652('0x11')]){if(_0x134c17[_0x7652('0x11')][_0x7652('0x12')]===0x1f4){logger[_0x7652('0x11')](_0x7652('0xc'),_0x23f9df,_0x134c17[_0x7652('0x11')]['message']);return _0x4800ff(_0x134c17[_0x7652('0x11')]['message']);}logger[_0x7652('0x11')](_0x7652('0xc'),_0x23f9df,_0x134c17[_0x7652('0x11')][_0x7652('0x13')]);return _0x215309(_0x134c17[_0x7652('0x11')][_0x7652('0x13')]);}else{logger[_0x7652('0x14')](_0x7652('0xc'),_0x23f9df,_0x7652('0xd'));_0x215309(_0x134c17[_0x7652('0x15')]['message']);}})[_0x7652('0x16')](function(_0x3f8602){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x23f9df,_0x3f8602);_0x4800ff(_0x3f8602);});});}
\ No newline at end of file
index f90acf2..764e60c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c79=['sequelize','sync','then','default','info','start','exitCode','number','\x20processes\x20failed\x20at\x20startup:\x20','pm2_env','name','map','filter','online','join','Offline\x20apps:','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','lodash','./rpc','./config/logger','app','./config/pm2/config','./config/schedule/transcribe'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0x8c79,0xa8));var _0x98c7=function(_0x361704,_0x3af61c){_0x361704=_0x361704-0x0;var _0x258953=_0x8c79[_0x361704];return _0x258953;};'use strict';var _=require(_0x98c7('0x0'));var db=require('./mysqldb')['db'];var seedDb=require('./config/seedDB');var checkLicense=require('./config/license');var rpc=require(_0x98c7('0x1'));var config=require('./config/environment');var logger=require(_0x98c7('0x2'))(_0x98c7('0x3'));var pm2=require('./config/pm2');var pm2Config=require(_0x98c7('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x98c7('0x5'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0x98c7('0x6')][_0x98c7('0x7')]()['then'](function(){if(config['seedDB']){return seedDb['default']();}})[_0x98c7('0x8')](function(){return checkLicense[_0x98c7('0x9')]();})[_0x98c7('0x8')](function(){return rpc['listen']();})[_0x98c7('0x8')](function(_0x4d6c3c){logger[_0x98c7('0xa')](_0x4d6c3c);return chat[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return whatsapp[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return schedule[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return transcribe[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(){return provider[_0x98c7('0xb')]();})[_0x98c7('0x8')](function(_0x30055b){logger[_0x98c7('0xa')](_0x30055b);return pm2[_0x98c7('0xb')](pm2Config);})[_0x98c7('0x8')](function(_0x238e98){var _0x49a7b6=_0x238e98['filter'](function(_0x3b9ced){return typeof _0x3b9ced[_0x98c7('0xc')]===_0x98c7('0xd')&&_0x3b9ced[_0x98c7('0xc')]>=0x0;});if(_0x49a7b6['length']>0x0){throw new Error(_0x49a7b6['length']+_0x98c7('0xe')+_['map'](_0x49a7b6,function(_0x37543f){return'\x22'+_0x37543f[_0x98c7('0xf')][_0x98c7('0x10')]+'\x22';}));}logger[_0x98c7('0xa')]('Online\x20apps:',_[_0x98c7('0x11')](_[_0x98c7('0x12')](_0x238e98,{'status':_0x98c7('0x13')}),_0x98c7('0x10'))[_0x98c7('0x14')]());logger[_0x98c7('0xa')](_0x98c7('0x15'),_['map'](_[_0x98c7('0x12')](_0x238e98,function(_0xec028){return _0xec028['status']!==_0x98c7('0x13');}),_0x98c7('0x10'))[_0x98c7('0x14')]()||_0x98c7('0x16'));console[_0x98c7('0x17')](_0x98c7('0x18'));})[_0x98c7('0x19')](function(_0x23a74c){console[_0x98c7('0x17')](_0x98c7('0x1a'),_0x23a74c);logger[_0x98c7('0x1b')](_0x98c7('0x1c'),_0x23a74c);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x2cd3=['./config/environment','./config/logger','app','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','filter','exitCode','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','online','Offline\x20apps:','join','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','exit','lodash','./config/seedDB','./config/license','./rpc'];(function(_0x27a548,_0x58b4b2){var _0x4cbd2d=function(_0x3c4aea){while(--_0x3c4aea){_0x27a548['push'](_0x27a548['shift']());}};_0x4cbd2d(++_0x58b4b2);}(_0x2cd3,0xf1));var _0x32cd=function(_0x586fa2,_0x1a45bc){_0x586fa2=_0x586fa2-0x0;var _0x515be9=_0x2cd3[_0x586fa2];return _0x515be9;};'use strict';var _=require(_0x32cd('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x32cd('0x1'));var checkLicense=require(_0x32cd('0x2'));var rpc=require(_0x32cd('0x3'));var config=require(_0x32cd('0x4'));var logger=require(_0x32cd('0x5'))(_0x32cd('0x6'));var pm2=require('./config/pm2');var pm2Config=require('./config/pm2/config');var schedule=require(_0x32cd('0x7'));var chat=require(_0x32cd('0x8'));var whatsapp=require(_0x32cd('0x9'));var transcribe=require(_0x32cd('0xa'));var provider=require(_0x32cd('0xb'));function main(){return db[_0x32cd('0xc')][_0x32cd('0xd')]()[_0x32cd('0xe')](function(){if(config[_0x32cd('0xf')]){return seedDb[_0x32cd('0x10')]();}})[_0x32cd('0xe')](function(){return checkLicense[_0x32cd('0x10')]();})[_0x32cd('0xe')](function(){return rpc[_0x32cd('0x11')]();})[_0x32cd('0xe')](function(_0x164ad8){logger[_0x32cd('0x12')](_0x164ad8);return chat[_0x32cd('0x13')]();})['then'](function(){return whatsapp['start']();})[_0x32cd('0xe')](function(){return schedule['start']();})['then'](function(){return transcribe[_0x32cd('0x13')]();})[_0x32cd('0xe')](function(){return provider[_0x32cd('0x13')]();})[_0x32cd('0xe')](function(_0x1a80b7){logger[_0x32cd('0x12')](_0x1a80b7);return pm2[_0x32cd('0x13')](pm2Config);})['then'](function(_0x51b452){var _0x4f35ec=_0x51b452[_0x32cd('0x14')](function(_0x149448){return typeof _0x149448[_0x32cd('0x15')]==='number'&&_0x149448[_0x32cd('0x15')]>=0x0;});if(_0x4f35ec['length']>0x0){throw new Error(_0x4f35ec['length']+_0x32cd('0x16')+_[_0x32cd('0x17')](_0x4f35ec,function(_0x3f9c9c){return'\x22'+_0x3f9c9c[_0x32cd('0x18')][_0x32cd('0x19')]+'\x22';}));}logger[_0x32cd('0x12')]('Online\x20apps:',_[_0x32cd('0x17')](_[_0x32cd('0x14')](_0x51b452,{'status':_0x32cd('0x1a')}),'name')['join']());logger[_0x32cd('0x12')](_0x32cd('0x1b'),_[_0x32cd('0x17')](_[_0x32cd('0x14')](_0x51b452,function(_0x14b3fe){return _0x14b3fe['status']!==_0x32cd('0x1a');}),_0x32cd('0x19'))[_0x32cd('0x1c')]()||_0x32cd('0x1d'));console[_0x32cd('0x1e')](_0x32cd('0x1f'));})[_0x32cd('0x20')](function(_0x8755bd){console['log'](_0x32cd('0x21'),_0x8755bd);logger['error']('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x8755bd);process[_0x32cd('0x22')](0x1);});}main();
\ No newline at end of file
index 7c16ce8..5a8fd5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','cookie','motion.token','redirect','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','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','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.','Sequelize','ValidationError','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','secret','secrets','payload','randomBytes','hex','now','toString','HS512','../../mysqldb','../../config/environment','../encryptor','express-jwt','composable-middleware','basic-auth','moment','session','fullname','email','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','allowmessenger','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','userProfileId','settingsEnabled','wssPort','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','chatAutoanswer','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','params','disposition','then','closed','status','unmanaged','Forbidden.','catch','use','headers','authorization','Basic','User','find','name','authenticate','pass','json','startsWith','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','blocked','blockedAt','add','minutes','Invalid\x20API\x20access\x20key'];(function(_0x592b13,_0x3f3a48){var _0x362545=function(_0x25096c){while(--_0x25096c){_0x592b13['push'](_0x592b13['shift']());}};_0x362545(++_0x3f3a48);}(_0x4b84,0x1cc));var _0x44b8=function(_0x26d386,_0x1660c0){_0x26d386=_0x26d386-0x0;var _0x4ef9a8=_0x4b84[_0x26d386];return _0x4ef9a8;};'use strict';var db=require(_0x44b8('0x0'))['db'];var config=require(_0x44b8('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require('../../config/license/util');var encryptor=require(_0x44b8('0x2'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x44b8('0x3'));var compose=require(_0x44b8('0x4'));var basicAuth=require(_0x44b8('0x5'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require('util');var moment=require(_0x44b8('0x6'));var validateJwt=expressJwt({'secret':config['secrets'][_0x44b8('0x7')]});var userAttributes=['id','role',_0x44b8('0x8'),'name','internal',_0x44b8('0x9'),_0x44b8('0xa'),_0x44b8('0xb'),'md5secret',_0x44b8('0xc'),_0x44b8('0xd'),_0x44b8('0xe'),_0x44b8('0xf'),_0x44b8('0x10'),_0x44b8('0x11'),_0x44b8('0x12'),'showWebBar',_0x44b8('0x13'),_0x44b8('0x14'),'crudPermissions',_0x44b8('0x15'),'passwordResetAt',_0x44b8('0x16'),_0x44b8('0x17'),'phoneBarAutoAnswerDelay',_0x44b8('0x18'),'phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x44b8('0x19'),_0x44b8('0x1a'),_0x44b8('0x1b'),_0x44b8('0x1c'),'phoneBarRemoteControlPort','hotdesk','interface',_0x44b8('0x1d'),'privacyEnabled',_0x44b8('0x1e'),_0x44b8('0x1f'),'downloadVoiceRecordings',_0x44b8('0x20'),_0x44b8('0x21'),'ignorePauseForPreviewCalls',_0x44b8('0x22'),_0x44b8('0x23'),'chatAutoanswerDelay',_0x44b8('0x24'),_0x44b8('0x25'),_0x44b8('0x26'),_0x44b8('0x27'),_0x44b8('0x28'),_0x44b8('0x29'),_0x44b8('0x2a'),_0x44b8('0x2b'),_0x44b8('0x2c'),_0x44b8('0x2d')];exports[_0x44b8('0x2e')]=function(){return this[_0x44b8('0x2f')](!![])['use'](function(_0x56549a,_0x3a8aa4,_0x416b34){if(_0x56549a[_0x44b8('0x30')]){_0x416b34();}else{return db[_0x44b8('0x31')]['findOne']({'where':{'id':_0x56549a[_0x44b8('0x32')]['id']},'attributes':['id','closed',_0x44b8('0x33')],'raw':!![]})[_0x44b8('0x34')](function(_0x25a0c1){if(_0x25a0c1&&_0x25a0c1[_0x44b8('0x35')]){return _0x3a8aa4[_0x44b8('0x36')](_0x25a0c1['disposition']===_0x44b8('0x37')?0x195:0x193)['json']({'message':_0x25a0c1[_0x44b8('0x33')]===_0x44b8('0x37')?'Unmanaged.':_0x44b8('0x38')});}else{_0x416b34();}})[_0x44b8('0x39')](function(_0x2656d7){_0x416b34(_0x2656d7);});}});};exports['isAuthenticated']=function isAuthenticated(_0xb22107){return compose()[_0x44b8('0x3a')](function(_0x53d9c7,_0x2e0174,_0x4a182d){var _0xfb0028;if(_0x53d9c7['headers']['authorization']){if(_['startsWith'](_0x53d9c7[_0x44b8('0x3b')][_0x44b8('0x3c')],_0x44b8('0x3d'))){var _0x1bd1be=basicAuth(_0x53d9c7);db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'name':_0x1bd1be[_0x44b8('0x40')]}})[_0x44b8('0x34')](function(_0xd1d320){if(!_0xd1d320||!_0xd1d320[_0x44b8('0x41')](_0x1bd1be[_0x44b8('0x42')])){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':'Wrong\x20credentials.'});}_0x53d9c7[_0x44b8('0x30')]={'id':_0xd1d320['id']};_0x4a182d();})['catch'](function(_0x212983){_0x4a182d(_0x212983);});}else if(_[_0x44b8('0x44')](_0x53d9c7[_0x44b8('0x3b')][_0x44b8('0x3c')],_0x44b8('0x45'))){validateJwt(_0x53d9c7,_0x2e0174,_0x4a182d);}else{if(_0xb22107){_0x4a182d();}else{return _0x2e0174['status'](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x46')});}}}else if(_0x53d9c7[_0x44b8('0x47')][_0x44b8('0x48')]){try{var _0x46b008={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x44b8('0x49')]()};verifyJwt(_0x53d9c7[_0x44b8('0x47')][_0x44b8('0x48')],_0x46b008)[_0x44b8('0x34')](function(_0x140a79){return db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'id':_0x140a79[_0x44b8('0x4a')]}})[_0x44b8('0x34')](function(_0x181761){_0xfb0028=_0x181761;return db[_0x44b8('0x4b')][_0x44b8('0x4c')]({'where':{'id':0x1},'attributes':[_0x44b8('0x4d'),_0x44b8('0x4e')],'raw':!![]});})[_0x44b8('0x34')](function(_0x1becb0){if(!_0xfb0028||!_[_0x44b8('0x4f')](_0xfb0028[_0x44b8('0x50')],_0x140a79[_0x44b8('0x51')])){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x52')});}if(_0xfb0028['disabled']){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0xfb0028[_0x44b8('0x53')]){if(_0x1becb0[_0x44b8('0x4e')]>0x0){if(moment(_0xfb0028[_0x44b8('0x54')])[_0x44b8('0x55')](_0x1becb0['blockDuration'],_0x44b8('0x56'))>moment()){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});}}else{return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});}}_0x53d9c7[_0x44b8('0x30')]={'id':_0xfb0028['id']};_0x4a182d();});})[_0x44b8('0x39')](function(){return _0x2e0174[_0x44b8('0x36')](0x191)[_0x44b8('0x43')]({'message':_0x44b8('0x57')});});}catch(_0xd69398){_0x4a182d(_0xd69398);}}else if(_0xb22107){_0x4a182d();}else{return _0x2e0174[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x46')});}})['use'](function(_0x12a0a4,_0x43e43a,_0xbf444f){if(_0x12a0a4['user']){db[_0x44b8('0x3e')][_0x44b8('0x3f')]({'where':{'id':_0x12a0a4[_0x44b8('0x30')]['id']},'attributes':userAttributes})['then'](function(_0xbad4bb){if(!_0xbad4bb){return _0x43e43a[_0x44b8('0x36')](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x58')});}_0x12a0a4[_0x44b8('0x30')]=_0xbad4bb;_0xbf444f();})['catch'](function(_0x5ae5f9){_0xbf444f(_0x5ae5f9);});}else if(_0xb22107){_0xbf444f();}else{return _0x43e43a[_0x44b8('0x36')](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x59')});}});};exports[_0x44b8('0x5a')]=function canUpdate(){return compose()[_0x44b8('0x3a')](function(_0x26e1f1,_0x3fc41b,_0x457348){return licenseUtil[_0x44b8('0x5b')]()[_0x44b8('0x34')](function(_0x197782){if(_0x197782[_0x44b8('0x5c')]){_0x457348();}else{return _0x3fc41b[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':_0x44b8('0x5d')});}})[_0x44b8('0x39')](function(_0xce06dc){_0x457348(_0xce06dc);});});};exports[_0x44b8('0x5e')]=function isWebrtcLicence(){return compose()[_0x44b8('0x3a')](function(_0x49c507,_0x547dc1,_0x3b1b12){return licenseUtil[_0x44b8('0x5b')]()[_0x44b8('0x34')](function(_0x269284){if(_0x269284[_0x44b8('0x5f')]){_0x3b1b12();}else{return _0x547dc1[_0x44b8('0x36')](0x193)[_0x44b8('0x43')]({'message':'Forbidden'});}})[_0x44b8('0x39')](function(_0x53edca){_0x3b1b12(_0x53edca);});});};exports[_0x44b8('0x60')]=function(_0x3ef886,_0x1dbc28,_0x9207bf){_0x3ef886[_0x44b8('0x60')]=!![];return _0x9207bf();};exports[_0x44b8('0x61')]=function signToken(_0x491600){return signJwt(_0x491600);};exports[_0x44b8('0x62')]=function(_0xff92fb,_0x10602c){if(!_0xff92fb[_0x44b8('0x30')]){return _0x10602c['status'](0x194)[_0x44b8('0x43')]({'message':_0x44b8('0x63')});}var _0x36afa9={'payload':{'id':_0xff92fb[_0x44b8('0x30')]['id'],'role':_0xff92fb[_0x44b8('0x30')][_0x44b8('0x64')]},'options':{'expiresIn':0x15180}};return signJwt(_0x36afa9)['then'](function(_0x19d95d){_0x10602c[_0x44b8('0x65')](_0x44b8('0x66'),_0x19d95d);_0x10602c[_0x44b8('0x67')](_0x44b8('0x68'));})['catch'](function(_0x493840){return _0x10602c[_0x44b8('0x36')](0x1f4)['send'](_0x493840);});};exports[_0x44b8('0x69')]=function(_0x5785ef){if(_[_0x44b8('0x6a')](_0x5785ef[_0x44b8('0x50')])||_[_0x44b8('0x6a')](_0x5785ef[_0x44b8('0x6b')])){return null;}else{return createJwt(_0x5785ef);}};exports[_0x44b8('0x6c')]=function(_0x32f588){_0x32f588[_0x44b8('0x50')]=generateNonce();_0x32f588['apiKeyIat']=generateIssuedAt();return createJwt(_0x32f588);};exports[_0x44b8('0x6d')]=function(_0x37b2c2,_0x1e6a5e){var _0x492be6=_0x37b2c2[_0x44b8('0x47')][_0x44b8('0x48')];if(_0x492be6){var _0x45f9a0={'nonce':_0x1e6a5e[_0x44b8('0x50')],'iat':_0x1e6a5e['apiKeyIat'],'audience':hardwareConf[_0x44b8('0x49')](),'issuer':hardwareConf[_0x44b8('0x49')]()};return verifyJwt(_0x492be6,_0x45f9a0)['then'](function(){return generateApiKey(_0x1e6a5e);});}else{throw{'message':_0x44b8('0x6e')};}};exports[_0x44b8('0x6f')]=function(_0x35136e){var _0x3df6aa=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3df6aa[_0x44b8('0x70')](_0x35136e))throw new db['Sequelize']['ValidationError'](_0x44b8('0x71'));return;};exports[_0x44b8('0x72')]=function(_0xa30834,_0x4358aa,_0x765e45){var _0x3f6b92=encryptor[_0x44b8('0x73')](_0x4358aa)[_0x44b8('0x74')](',');for(var _0x10bbd9=0x0;_0x10bbd9<_0x765e45;_0x10bbd9++){if(!_0x3f6b92[_0x10bbd9])break;if(_0xa30834[_0x44b8('0x75')]()===_0x3f6b92[_0x10bbd9][_0x44b8('0x75')]()){var _0x3f7576=util['format'](_0x44b8('0x76'),_0x765e45);if(_0x765e45===0x1){_0x3f7576=_0x44b8('0x77');}throw new db[(_0x44b8('0x78'))][(_0x44b8('0x79'))](_0x3f7576);}}return;};exports[_0x44b8('0x7a')]=function(_0x1df915,_0x426a6a){var _0x172ff3=_0x426a6a?encryptor[_0x44b8('0x73')](_0x426a6a)[_0x44b8('0x74')](','):[];if(_0x172ff3[_0x44b8('0x7b')]===0x5){_0x172ff3[_0x44b8('0x7c')](-0x1,0x1);}_0x172ff3[_0x44b8('0x7d')](_0x1df915);return encryptor[_0x44b8('0x7e')](_0x172ff3[_0x44b8('0x7f')](','));};function signJwt(_0x293c2e){var _0x25f91c=BPromise[_0x44b8('0x80')](jwt['sign'],{'context':jwt});var _0x1ec516=_0x293c2e[_0x44b8('0x81')]||config[_0x44b8('0x82')][_0x44b8('0x7')];return new BPromise(function(_0x51f763,_0x29ed5d){_0x25f91c(_0x293c2e[_0x44b8('0x83')],_0x1ec516,_0x293c2e['options'])[_0x44b8('0x34')](function(_0xc4d667){_0x51f763(_0xc4d667);})['catch'](function(_0x2a95f6){_0x29ed5d(_0x2a95f6);});});}function verifyJwt(_0x3354bd,_0x520929,_0x37e42e){var _0x454fe6=BPromise[_0x44b8('0x80')](jwt['verify'],{'context':jwt});var _0x16e790=_0x37e42e||config['secrets'][_0x44b8('0x7')];return new BPromise(function(_0x5161ea,_0x176536){_0x454fe6(_0x3354bd,_0x16e790,_0x520929)[_0x44b8('0x34')](function(_0xf4d81f){_0x5161ea(_0xf4d81f);})[_0x44b8('0x39')](function(_0x3c6aad){_0x176536(_0x3c6aad);});});}function generateNonce(){return crypto[_0x44b8('0x84')](0x10)['toString'](_0x44b8('0x85'));}function generateIssuedAt(){return Math['floor'](Date[_0x44b8('0x86')]()/0x3e8)[_0x44b8('0x87')]();}function createJwt(_0x4c1a7c){var _0x3f9438={'payload':{'iat':_0x4c1a7c[_0x44b8('0x6b')],'nonce':_0x4c1a7c[_0x44b8('0x50')]},'options':{'algorithm':_0x44b8('0x88'),'subject':_0x4c1a7c['id'][_0x44b8('0x87')](),'issuer':hardwareConf[_0x44b8('0x49')](),'audience':hardwareConf[_0x44b8('0x49')]()}};return signJwt(_0x3f9438)[_0x44b8('0x34')](function(_0x3f9102){return{'iat':_0x4c1a7c[_0x44b8('0x6b')],'nonce':_0x4c1a7c[_0x44b8('0x50')],'token':_0x3f9102};});}
\ No newline at end of file
+var _0x00bb=['lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadAttachments','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswer','smsAutoanswerDelay','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','isChatInteractionAuthorized','use','user','findOne','params','disposition','then','closed','unmanaged','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','Basic','User','find','pass','status','Wrong\x20credentials.','Bearer','json','Unknown\x20authorization\x20format','query','getUuid','apikey','sub','Setting','allowedLoginAttempts','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','webrtc','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','redirect','/dashboards/general','send','isNil','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','join','promisify','sign','secret','options','verify','toString','hex','floor','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','jsonwebtoken','express-jwt','basic-auth','crypto','secrets','session','role','fullname','name','internal','permissions','md5secret','voicePause','chatPause','mailPause','smsPause'];(function(_0x507a97,_0x22337f){var _0x1eb332=function(_0x5bc941){while(--_0x5bc941){_0x507a97['push'](_0x507a97['shift']());}};_0x1eb332(++_0x22337f);}(_0x00bb,0x1d8));var _0xb00b=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x00bb[_0x501510];return _0x1e6ee5;};'use strict';var db=require(_0xb00b('0x0'))['db'];var config=require(_0xb00b('0x1'));var hardwareConf=require(_0xb00b('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xb00b('0x3'));var _=require('lodash');var jwt=require(_0xb00b('0x4'));var expressJwt=require(_0xb00b('0x5'));var compose=require('composable-middleware');var basicAuth=require(_0xb00b('0x6'));var crypto=require(_0xb00b('0x7'));var BPromise=require('bluebird');var util=require('util');var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0xb00b('0x8')][_0xb00b('0x9')]});var userAttributes=['id',_0xb00b('0xa'),_0xb00b('0xb'),_0xb00b('0xc'),_0xb00b('0xd'),'email','userpic',_0xb00b('0xe'),_0xb00b('0xf'),_0xb00b('0x10'),_0xb00b('0x11'),_0xb00b('0x12'),'faxPause',_0xb00b('0x13'),'openchannelPause','pauseType','showWebBar',_0xb00b('0x14'),_0xb00b('0x15'),_0xb00b('0x16'),_0xb00b('0x17'),_0xb00b('0x18'),_0xb00b('0x19'),'phoneBarAutoAnswer',_0xb00b('0x1a'),_0xb00b('0x1b'),'phoneBarEnableRecording',_0xb00b('0x1c'),_0xb00b('0x1d'),'phoneBarExpires','phoneBarPrefixRequired',_0xb00b('0x1e'),'phoneBarRemoteControlPort','hotdesk',_0xb00b('0x1f'),_0xb00b('0x20'),_0xb00b('0x21'),_0xb00b('0x22'),'wssPort',_0xb00b('0x23'),'downloadOmnichannelInteractions',_0xb00b('0x24'),'ignorePauseForPreviewCalls',_0xb00b('0x25'),'chatAutoanswer',_0xb00b('0x26'),_0xb00b('0x27'),'emailAutoanswerDelay','smsAutoanswer',_0xb00b('0x28'),'openchannelAutoanswer',_0xb00b('0x29'),_0xb00b('0x2a'),_0xb00b('0x2b'),_0xb00b('0x2c'),'whatsappAutoanswerDelay'];exports[_0xb00b('0x2d')]=function(){return this['isAuthenticated'](!![])[_0xb00b('0x2e')](function(_0x121ec7,_0x51b841,_0x231293){if(_0x121ec7[_0xb00b('0x2f')]){_0x231293();}else{return db['ChatInteraction'][_0xb00b('0x30')]({'where':{'id':_0x121ec7[_0xb00b('0x31')]['id']},'attributes':['id','closed',_0xb00b('0x32')],'raw':!![]})[_0xb00b('0x33')](function(_0x3c9500){if(_0x3c9500&&_0x3c9500[_0xb00b('0x34')]){return _0x51b841['status'](_0x3c9500['disposition']===_0xb00b('0x35')?0x195:0x193)['json']({'message':_0x3c9500['disposition']==='unmanaged'?_0xb00b('0x36'):_0xb00b('0x37')});}else{_0x231293();}})[_0xb00b('0x38')](function(_0x3825af){_0x231293(_0x3825af);});}});};exports[_0xb00b('0x39')]=function isAuthenticated(_0x197379){return compose()[_0xb00b('0x2e')](function(_0x4a8d2b,_0x22c22d,_0x503c9c){var _0x450129;if(_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')]){if(_['startsWith'](_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')],_0xb00b('0x3c'))){var _0x183233=basicAuth(_0x4a8d2b);db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'name':_0x183233[_0xb00b('0xc')]}})[_0xb00b('0x33')](function(_0x149c1a){if(!_0x149c1a||!_0x149c1a['authenticate'](_0x183233[_0xb00b('0x3f')])){return _0x22c22d[_0xb00b('0x40')](0x191)['json']({'message':_0xb00b('0x41')});}_0x4a8d2b[_0xb00b('0x2f')]={'id':_0x149c1a['id']};_0x503c9c();})['catch'](function(_0x456241){_0x503c9c(_0x456241);});}else if(_['startsWith'](_0x4a8d2b[_0xb00b('0x3a')][_0xb00b('0x3b')],_0xb00b('0x42'))){validateJwt(_0x4a8d2b,_0x22c22d,_0x503c9c);}else{if(_0x197379){_0x503c9c();}else{return _0x22c22d[_0xb00b('0x40')](0x193)[_0xb00b('0x43')]({'message':_0xb00b('0x44')});}}}else if(_0x4a8d2b[_0xb00b('0x45')]['apikey']){try{var _0x57e8f9={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xb00b('0x46')]()};verifyJwt(_0x4a8d2b[_0xb00b('0x45')][_0xb00b('0x47')],_0x57e8f9)[_0xb00b('0x33')](function(_0x5cfa60){return db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'id':_0x5cfa60[_0xb00b('0x48')]}})[_0xb00b('0x33')](function(_0x261c80){_0x450129=_0x261c80;return db[_0xb00b('0x49')][_0xb00b('0x30')]({'where':{'id':0x1},'attributes':[_0xb00b('0x4a'),'blockDuration'],'raw':!![]});})['then'](function(_0x2ea41d){if(!_0x450129||!_['isEqual'](_0x450129[_0xb00b('0x4b')],_0x5cfa60[_0xb00b('0x4c')])){return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4d')});}if(_0x450129[_0xb00b('0x4e')]){return _0x22c22d[_0xb00b('0x40')](0x191)['json']({'message':_0xb00b('0x4f')});}if(_0x450129[_0xb00b('0x50')]){if(_0x2ea41d[_0xb00b('0x51')]>0x0){if(moment(_0x450129[_0xb00b('0x52')])[_0xb00b('0x53')](_0x2ea41d[_0xb00b('0x51')],'minutes')>moment()){return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x22c22d[_0xb00b('0x40')](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4f')});}}_0x4a8d2b[_0xb00b('0x2f')]={'id':_0x450129['id']};_0x503c9c();});})[_0xb00b('0x38')](function(){return _0x22c22d['status'](0x191)[_0xb00b('0x43')]({'message':_0xb00b('0x4f')});});}catch(_0xb76ede){_0x503c9c(_0xb76ede);}}else if(_0x197379){_0x503c9c();}else{return _0x22c22d[_0xb00b('0x40')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}})[_0xb00b('0x2e')](function(_0xf6ae0c,_0x10a348,_0x152437){if(_0xf6ae0c[_0xb00b('0x2f')]){db[_0xb00b('0x3d')][_0xb00b('0x3e')]({'where':{'id':_0xf6ae0c['user']['id']},'attributes':userAttributes})[_0xb00b('0x33')](function(_0x3b72c4){if(!_0x3b72c4){return _0x10a348[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x54')});}_0xf6ae0c[_0xb00b('0x2f')]=_0x3b72c4;_0x152437();})[_0xb00b('0x38')](function(_0x974a29){_0x152437(_0x974a29);});}else if(_0x197379){_0x152437();}else{return _0x10a348[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x55')});}});};exports[_0xb00b('0x56')]=function canUpdate(){return compose()['use'](function(_0x3da23c,_0x35a0ba,_0xd07fb8){return licenseUtil[_0xb00b('0x57')]()[_0xb00b('0x33')](function(_0x2d9174){if(_0x2d9174[_0xb00b('0x58')]){_0xd07fb8();}else{return _0x35a0ba[_0xb00b('0x40')](0x193)[_0xb00b('0x43')]({'message':_0xb00b('0x59')});}})[_0xb00b('0x38')](function(_0x3b3031){_0xd07fb8(_0x3b3031);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()['use'](function(_0x47c6c0,_0x3f8f60,_0x23d858){return licenseUtil['getLicense']()[_0xb00b('0x33')](function(_0x3c0fa){if(_0x3c0fa[_0xb00b('0x5a')]){_0x23d858();}else{return _0x3f8f60[_0xb00b('0x40')](0x193)['json']({'message':'Forbidden'});}})[_0xb00b('0x38')](function(_0x40c2fd){_0x23d858(_0x40c2fd);});});};exports['isMiddleware']=function(_0x514c5b,_0x154759,_0x3a205d){_0x514c5b['isMiddleware']=!![];return _0x3a205d();};exports[_0xb00b('0x5b')]=function signToken(_0x47a814){return signJwt(_0x47a814);};exports['setTokenCookie']=function(_0x4bcc9e,_0x465d90){if(!_0x4bcc9e['user']){return _0x465d90[_0xb00b('0x40')](0x194)[_0xb00b('0x43')]({'message':_0xb00b('0x5c')});}var _0xe724a5={'payload':{'id':_0x4bcc9e[_0xb00b('0x2f')]['id'],'role':_0x4bcc9e[_0xb00b('0x2f')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0xe724a5)['then'](function(_0x1d2a0d){_0x465d90[_0xb00b('0x5d')]('motion.token',_0x1d2a0d);_0x465d90[_0xb00b('0x5e')](_0xb00b('0x5f'));})['catch'](function(_0x15dcbf){return _0x465d90[_0xb00b('0x40')](0x1f4)[_0xb00b('0x60')](_0x15dcbf);});};exports['retrieveApiKey']=function(_0x501cbe){if(_[_0xb00b('0x61')](_0x501cbe[_0xb00b('0x4b')])||_[_0xb00b('0x61')](_0x501cbe[_0xb00b('0x62')])){return null;}else{return createJwt(_0x501cbe);}};exports['generateApiKey']=function(_0x380acb){_0x380acb[_0xb00b('0x4b')]=generateNonce();_0x380acb['apiKeyIat']=generateIssuedAt();return createJwt(_0x380acb);};exports['regenerateApiKey']=function(_0x160965,_0x524b05){var _0x1ab196=_0x160965[_0xb00b('0x45')][_0xb00b('0x47')];if(_0x1ab196){var _0x222459={'nonce':_0x524b05[_0xb00b('0x4b')],'iat':_0x524b05[_0xb00b('0x62')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xb00b('0x46')]()};return verifyJwt(_0x1ab196,_0x222459)['then'](function(){return generateApiKey(_0x524b05);});}else{throw{'message':_0xb00b('0x63')};}};exports[_0xb00b('0x64')]=function(_0x4129ba){var _0x5ac79e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x5ac79e[_0xb00b('0x65')](_0x4129ba))throw new db[(_0xb00b('0x66'))][(_0xb00b('0x67'))]('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[_0xb00b('0x68')]=function(_0x309ae6,_0x219b74,_0x385029){var _0x131848=encryptor[_0xb00b('0x69')](_0x219b74)[_0xb00b('0x6a')](',');for(var _0x3a0b90=0x0;_0x3a0b90<_0x385029;_0x3a0b90++){if(!_0x131848[_0x3a0b90])break;if(_0x309ae6['toLowerCase']()===_0x131848[_0x3a0b90][_0xb00b('0x6b')]()){var _0x2cbe80=util[_0xb00b('0x6c')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x385029);if(_0x385029===0x1){_0x2cbe80=_0xb00b('0x6d');}throw new db[(_0xb00b('0x66'))][(_0xb00b('0x67'))](_0x2cbe80);}}return;};exports[_0xb00b('0x6e')]=function(_0x1ad387,_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b?encryptor[_0xb00b('0x69')](_0x4bfe0b)[_0xb00b('0x6a')](','):[];if(_0xfd4ecc[_0xb00b('0x6f')]===0x5){_0xfd4ecc['splice'](-0x1,0x1);}_0xfd4ecc[_0xb00b('0x70')](_0x1ad387);return encryptor[_0xb00b('0x71')](_0xfd4ecc[_0xb00b('0x72')](','));};function signJwt(_0x2d73bb){var _0x161216=BPromise[_0xb00b('0x73')](jwt[_0xb00b('0x74')],{'context':jwt});var _0x542223=_0x2d73bb[_0xb00b('0x75')]||config['secrets'][_0xb00b('0x9')];return new BPromise(function(_0x4c2186,_0x3b3272){_0x161216(_0x2d73bb['payload'],_0x542223,_0x2d73bb[_0xb00b('0x76')])['then'](function(_0x3dffaf){_0x4c2186(_0x3dffaf);})[_0xb00b('0x38')](function(_0x3bae02){_0x3b3272(_0x3bae02);});});}function verifyJwt(_0x4d1cec,_0x51fbe2,_0x4f7a59){var _0x21a53d=BPromise[_0xb00b('0x73')](jwt[_0xb00b('0x77')],{'context':jwt});var _0x49246b=_0x4f7a59||config[_0xb00b('0x8')][_0xb00b('0x9')];return new BPromise(function(_0xca87d4,_0x2ddba4){_0x21a53d(_0x4d1cec,_0x49246b,_0x51fbe2)[_0xb00b('0x33')](function(_0x485033){_0xca87d4(_0x485033);})[_0xb00b('0x38')](function(_0x27b13b){_0x2ddba4(_0x27b13b);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xb00b('0x78')](_0xb00b('0x79'));}function generateIssuedAt(){return Math[_0xb00b('0x7a')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x359669){var _0x188da7={'payload':{'iat':_0x359669[_0xb00b('0x62')],'nonce':_0x359669['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x359669['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf[_0xb00b('0x46')]()}};return signJwt(_0x188da7)['then'](function(_0x2434a0){return{'iat':_0x359669[_0xb00b('0x62')],'nonce':_0x359669['apiKeyNonce'],'token':_0x2434a0};});}
\ No newline at end of file
index f3bfbbf..5417ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['findOne','slice','fieldType','keys','type','./sql-utils','../../mysqldb','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','default','fields','tags','checkListsRestrictions','ids','tag','countFilteredContacts','count','clause','rows','catch','describe','startsWith','cf_','map','CmCustomField'];(function(_0x5ddd87,_0x4cee42){var _0x4e4161=function(_0x50fb9d){while(--_0x50fb9d){_0x5ddd87['push'](_0x5ddd87['shift']());}};_0x4e4161(++_0x4cee42);}(_0x757a,0xde));var _0xa757=function(_0x136220,_0x4d828c){_0x136220=_0x136220-0x0;var _0x272545=_0x757a[_0x136220];return _0x272545;};'use strict';var _=require('lodash');var sqlUtils=require(_0xa757('0x0'));var db=require(_0xa757('0x1'))['db'];exports['findAll']=function(_0x5c03c3,_0x5709ed,_0x32be3b,_0x1721c6){var _0x1c2932={'count':0x0,'rows':[]};var _0x453d07=sqlUtils[_0xa757('0x2')](_0x5709ed,_0x5c03c3);if(_0x453d07){return Promise[_0xa757('0x3')](_0x1c2932);}var _0x5edca8=sqlUtils[_0xa757('0x4')]();var _0x4343b6={};var _0x53be0e=![];var _0x2930fa=![];return Promise[_0xa757('0x3')]()[_0xa757('0x5')](function(){if(_0x5c03c3[_0xa757('0x6')]){return sqlUtils[_0xa757('0x7')](_0x5c03c3['search'],_0x1721c6);}else{return sqlUtils[_0xa757('0x8')](_0x5c03c3,_0x1721c6);}})[_0xa757('0x5')](function(_0x32f0ec){_0x5edca8[_0xa757('0x9')](_0x32f0ec[_0xa757('0xa')]);_0x5edca8[_0xa757('0x9')](_0x32f0ec[_0xa757('0xb')]);_0x5edca8['where'](_0x32f0ec['filter']);_0x5edca8['where'](_0x32f0ec['user']['clause']);_0x4343b6=_0x32f0ec[_0xa757('0xc')];_0x2930fa=_0x32f0ec['user']['skip'];return sqlUtils[_0xa757('0xd')](_0x5709ed,_0x5c03c3,_0x2930fa);})['then'](function(_0x481508){_0x5edca8[_0xa757('0x9')](_0x481508);var _0x1b670e=_0x5c03c3[_0xa757('0x6')]?_0x4343b6[_0xa757('0xe')]:_0x5c03c3[_0xa757('0xf')];_0x53be0e=_0x1b670e?!![]:![];return sqlUtils[_0xa757('0x10')](_0x5edca8,_0x1b670e);})[_0xa757('0x5')](function(_0x2f7947){_0x1c2932[_0xa757('0x11')]=_0x2f7947;if(_0x1c2932[_0xa757('0x11')]===0x0){return;}return sqlUtils['buildContactsQuery'](_0x5edca8,_0x5c03c3[_0xa757('0xb')],_0x32be3b,_0x53be0e,_0x4343b6[_0xa757('0x12')],_0x2930fa);})[_0xa757('0x5')](function(_0x4d9f58){if(!_0x4d9f58){return[];}return sqlUtils['getFilteredContacts'](_0x4d9f58,_0x5c03c3,_0x32be3b);})[_0xa757('0x5')](function(_0x468d45){_0x1c2932[_0xa757('0x13')]=_0x468d45;return _0x1c2932;})[_0xa757('0x14')](function(_0x27f4ba){throw _0x27f4ba;});};exports[_0xa757('0x15')]=function(){var _0x4bd137={};var _0x58954=[];return db['CmContact'][_0xa757('0x15')]()[_0xa757('0x5')](function(_0x14014c){_0x4bd137=_0x14014c;var _0x2c9ec6=Object['keys'](_0x4bd137)['filter'](function(_0x40ec48){return _[_0xa757('0x16')](_0x40ec48,_0xa757('0x17'))?_0x40ec48:undefined;});var _0x8d121f=_0x2c9ec6[_0xa757('0x18')](function(_0x40562f){return db[_0xa757('0x19')][_0xa757('0x1a')]({'where':{'id':_0x40562f[_0xa757('0x1b')](0x3)},'raw':!![]});});return Promise['all'](_0x8d121f);})[_0xa757('0x5')](function(_0x59e9d4){for(var _0x422e9e=0x0;_0x422e9e<_0x59e9d4['length'];_0x422e9e++){if(_0x59e9d4[_0x422e9e]){var _0x40551d=_0xa757('0x17')+_0x59e9d4[_0x422e9e]['id'];_0x4bd137[_0x40551d][_0xa757('0x1c')]=_0x59e9d4[_0x422e9e]['type'];}}_0x58954=_[_0xa757('0x18')](Object[_0xa757('0x1d')](_0x4bd137),function(_0x471e84){return{'name':_0x471e84,'type':_0x4bd137[_0x471e84][_0xa757('0x1e')]};});return _0x58954;})['catch'](function(_0x449a7d){throw _0x449a7d;});};
\ No newline at end of file
+var _0xb7e7=['parseQueryParameters','where','default','fields','filter','user','clause','skip','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','startsWith','cf_','map','CmCustomField','fieldType','type','keys','lodash','../../mysqldb','skipContactsQuery','getContactsSubquery','resolve','then','search','parseAdvancedSearchFilter'];(function(_0x39fd11,_0x5d7883){var _0x302799=function(_0x4a0615){while(--_0x4a0615){_0x39fd11['push'](_0x39fd11['shift']());}};_0x302799(++_0x5d7883);}(_0xb7e7,0x121));var _0x7b7e=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xb7e7[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require(_0x7b7e('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0x7b7e('0x1'))['db'];exports['findAll']=function(_0x1b7cc7,_0x54a37f,_0x3f5804,_0x556d68){var _0x31d0ed={'count':0x0,'rows':[]};var _0x118577=sqlUtils[_0x7b7e('0x2')](_0x54a37f,_0x1b7cc7);if(_0x118577){return Promise['resolve'](_0x31d0ed);}var _0x53ed64=sqlUtils[_0x7b7e('0x3')]();var _0x372bde={};var _0x7f87e0=![];var _0x55ce81=![];return Promise[_0x7b7e('0x4')]()[_0x7b7e('0x5')](function(){if(_0x1b7cc7[_0x7b7e('0x6')]){return sqlUtils[_0x7b7e('0x7')](_0x1b7cc7[_0x7b7e('0x6')],_0x556d68);}else{return sqlUtils[_0x7b7e('0x8')](_0x1b7cc7,_0x556d68);}})[_0x7b7e('0x5')](function(_0x52de3b){_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xa')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xb')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xc')]);_0x53ed64[_0x7b7e('0x9')](_0x52de3b[_0x7b7e('0xd')][_0x7b7e('0xe')]);_0x372bde=_0x52de3b['tags'];_0x55ce81=_0x52de3b[_0x7b7e('0xd')][_0x7b7e('0xf')];return sqlUtils['checkListsRestrictions'](_0x54a37f,_0x1b7cc7,_0x55ce81);})[_0x7b7e('0x5')](function(_0x5976ac){_0x53ed64['where'](_0x5976ac);var _0x2889ed=_0x1b7cc7[_0x7b7e('0x6')]?_0x372bde[_0x7b7e('0x10')]:_0x1b7cc7[_0x7b7e('0x11')];_0x7f87e0=_0x2889ed?!![]:![];return sqlUtils[_0x7b7e('0x12')](_0x53ed64,_0x2889ed);})['then'](function(_0x51baf6){_0x31d0ed[_0x7b7e('0x13')]=_0x51baf6;if(_0x31d0ed[_0x7b7e('0x13')]===0x0){return;}return sqlUtils[_0x7b7e('0x14')](_0x53ed64,_0x1b7cc7[_0x7b7e('0xb')],_0x3f5804,_0x7f87e0,_0x372bde[_0x7b7e('0xe')],_0x55ce81);})[_0x7b7e('0x5')](function(_0x242368){if(!_0x242368){return[];}return sqlUtils[_0x7b7e('0x15')](_0x242368,_0x1b7cc7,_0x3f5804);})[_0x7b7e('0x5')](function(_0x429a0e){_0x31d0ed[_0x7b7e('0x16')]=_0x429a0e;return _0x31d0ed;})[_0x7b7e('0x17')](function(_0x448980){throw _0x448980;});};exports[_0x7b7e('0x18')]=function(){var _0x9776c3={};var _0x864287=[];return db[_0x7b7e('0x19')]['describe']()[_0x7b7e('0x5')](function(_0x43db4f){_0x9776c3=_0x43db4f;var _0x24718c=Object['keys'](_0x9776c3)[_0x7b7e('0xc')](function(_0xbf0cb3){return _[_0x7b7e('0x1a')](_0xbf0cb3,_0x7b7e('0x1b'))?_0xbf0cb3:undefined;});var _0x2b7211=_0x24718c[_0x7b7e('0x1c')](function(_0x28bf43){return db[_0x7b7e('0x1d')]['findOne']({'where':{'id':_0x28bf43['slice'](0x3)},'raw':!![]});});return Promise['all'](_0x2b7211);})[_0x7b7e('0x5')](function(_0x22598e){for(var _0x23bfa3=0x0;_0x23bfa3<_0x22598e['length'];_0x23bfa3++){if(_0x22598e[_0x23bfa3]){var _0x51d3b1='cf_'+_0x22598e[_0x23bfa3]['id'];_0x9776c3[_0x51d3b1][_0x7b7e('0x1e')]=_0x22598e[_0x23bfa3][_0x7b7e('0x1f')];}}_0x864287=_[_0x7b7e('0x1c')](Object[_0x7b7e('0x20')](_0x9776c3),function(_0x3ceaf5){return{'name':_0x3ceaf5,'type':_0x9776c3[_0x3ceaf5]['type']};});return _0x864287;})[_0x7b7e('0x17')](function(_0x21a15){throw _0x21a15;});};
\ No newline at end of file
index 6131b86..bfee0d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x050f=['squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','agent','search','ListId','autocomplete','true','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','lastName','phone','mobile','fax','email','CompanyId','updatedAt','deletedAt','TagIds','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','fieldType','datetime','castTo','buildExpression','type','default','text','value','start','end','Tag','map','tags','clause','and','User','user','uc.UserId\x20=\x20?','keys','some','compact','Contact','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','attributes','select','group','c.id','limit','offset','subqry.id','order','subqry.','DESC','from','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','query','toString','Tags','clone','COUNT(*)','isEmpty','t.id\x20IN\x20?','sequelize','exports','lodash'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0x050f,0xe5));var _0xf050=function(_0x1a2409,_0x50ab30){_0x1a2409=_0x1a2409-0x0;var _0x4e9d30=_0x050f[_0x1a2409];return _0x4e9d30;};'use strict';var _=require(_0xf050('0x0'));var squel=require(_0xf050('0x1'));var as=require(_0xf050('0x2'));var qs=require(_0xf050('0x3'));var utils=require(_0xf050('0x4'));var db=require(_0xf050('0x5'))['db'];function skipContactsQuery(_0x2ec582,_0x205630){var _0x599452=![];if(_0x2ec582[_0xf050('0x6')]===_0xf050('0x7')&&!_0x205630[_0xf050('0x8')]&&!_0x205630[_0xf050('0x9')]&&_0x205630[_0xf050('0xa')]!==_0xf050('0xb')){_0x599452=!![];}return _0x599452;}function getContactsSubquery(){return squel['select']()['from'](_0xf050('0xc'),'c')[_0xf050('0xd')](_0xf050('0xe'));}function applyJoinClauses(_0x4a291e,_0x4b4c1c){var _0x40e7a3=_0x4b4c1c?'c':_0xf050('0xf');_0x4a291e[_0xf050('0x10')](_0xf050('0x11'),'uc',_0xf050('0x12')+_0x40e7a3+_0xf050('0x13'))['left_join'](_0xf050('0x14'),'ct',_0xf050('0x15')+_0x40e7a3+_0xf050('0x13'))[_0xf050('0x10')](_0xf050('0x16'),'t',_0xf050('0x17'));return _0x4a291e;}function addFieldsToQuery(_0x5c8d09,_0x152c15,_0x2a5fc5,_0x50a5db,_0x155970){var _0xb15a8d=_0x155970?'c':_0xf050('0xf');if(!_0x152c15){_0x152c15=['id','firstName',_0xf050('0x18'),_0xf050('0x19'),_0xf050('0x1a'),_0xf050('0x1b'),_0xf050('0x1c'),_0xf050('0x9'),_0xf050('0x1d'),'createdAt',_0xf050('0x1e'),_0xf050('0x1f'),_0xf050('0x20')];}else if(!_0x152c15['includes']('id')){_0x152c15[_0xf050('0x21')]('id');}var _0x1a12c5=_0x2a5fc5&&_0x155970||!_0x2a5fc5&&!_0x155970;if(_0x50a5db){_0x1a12c5=_0x50a5db&&_0x155970||!_0x50a5db&&!_0x155970;}_0x152c15['forEach'](function(_0x1b5376){if(_0x1b5376===_0xf050('0x20')){if(_0x1a12c5){_0x5c8d09[_0xf050('0x22')](_0xf050('0x23'),_0x1b5376);}else if(_0x2a5fc5||_0x50a5db){_0x5c8d09[_0xf050('0x22')](_0xb15a8d+'.'+_0x1b5376);}}else{_0x5c8d09[_0xf050('0x22')](_0xb15a8d+'.'+_0x1b5376);}});return _0x5c8d09;}function getSqlClauses(){var _0x31f2bc={'default':squel[_0xf050('0x24')](),'fields':squel[_0xf050('0x24')](),'filter':squel[_0xf050('0x24')](),'tags':{'clause':squel[_0xf050('0x24')](),'ids':null},'user':{'clause':squel[_0xf050('0x24')](),'skip':![]}};return _0x31f2bc;}function parseTagParameter(_0x101225){var _0x14afe0=squel[_0xf050('0x24')]();if(_0x101225){var _0x3ec234=utils[_0xf050('0x25')](_0x101225);_0x3ec234[_0xf050('0x26')](function(_0x8ddf45){_0x14afe0['or'](_0xf050('0x27'),'%,'+_0x8ddf45+',%');});}return _0x14afe0;}function parseSearchFilter(_0x13e8c8){var _0x9e9ea9=squel[_0xf050('0x24')]();if(_0x13e8c8){var _0x10d6d9=_0x13e8c8[_0xf050('0x28')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x10d6d9[_0xf050('0x29')]('\x20')[_0xf050('0x2a')]>0x1){_0x9e9ea9['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf050('0x2b')](_0x10d6d9),null);}else{if(qs[_0xf050('0x2c')](_0x10d6d9)){_0x9e9ea9['or'](_0xf050('0x2d'),_0x10d6d9+'%');_0x9e9ea9['or']('c.phone\x20LIKE\x20?',_0x10d6d9+'%');_0x9e9ea9['or']('c.mobile\x20LIKE\x20?',_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x2e'),_0x10d6d9+'%');}else if(qs[_0xf050('0x2f')](_0x10d6d9)){_0x9e9ea9['or'](_0xf050('0x30'),_0x10d6d9+'%');}else{_0x9e9ea9['or'](_0xf050('0x31'),'%'+_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x32'),'%'+_0x10d6d9+'%');_0x9e9ea9['or'](_0xf050('0x30'),'%'+_0x10d6d9+'%');}}}return _0x9e9ea9;}function parseAdvancedSearchFilter(_0x313c79,_0x363cc8){var _0x1224b3=getSqlClauses();var _0x1b575a=as[_0xf050('0x33')](_0x313c79);var _0x489107=_0x1b575a[_0xf050('0x34')];for(var _0xc1613a=0x0;_0xc1613a<_0x1b575a[_0xf050('0x35')][_0xf050('0x2a')];_0xc1613a++){var _0x4508a7=_0x1b575a[_0xf050('0x35')][_0xc1613a];var _0x460660='c';var _0x2af162=_[_0xf050('0x36')](_0x363cc8,['name',_0x4508a7[_0xf050('0x22')]]);if(_0x2af162){if(_0x4508a7[_0xf050('0x22')]==='dateOfBirth'||_0x2af162[_0xf050('0x37')]===_0xf050('0x38')){_0x4508a7[_0xf050('0x39')]='DATE';}var _0x1d624d=as[_0xf050('0x3a')](_0x460660,_0x2af162[_0xf050('0x3b')],_0x4508a7);_0x1224b3[_0xf050('0x3c')][_0x489107](_0x1d624d[_0xf050('0x3d')],_0x1d624d[_0xf050('0x3e')][_0xf050('0x3f')],_0x1d624d['value'][_0xf050('0x40')]);}else{if(_0x4508a7[_0xf050('0x22')]===_0xf050('0x41')){var _0xd14deb=_0x4508a7[_0xf050('0x3e')][_0xf050('0x29')](',')[_0xf050('0x42')](function(_0x1f17e2){return Number(_0x1f17e2);});var _0x5befc7=parseTagParameter(_0xd14deb);_0x1224b3[_0xf050('0x43')][_0xf050('0x44')][_0xf050('0x45')](_0x5befc7);_0x1224b3[_0xf050('0x43')]['ids']=_0xd14deb;}else if(_0x4508a7['field']===_0xf050('0x46')){_0x1224b3[_0xf050('0x47')][_0xf050('0x44')][_0xf050('0x45')](_0xf050('0x48'),_0x4508a7['value']);_0x1224b3[_0xf050('0x47')]['skip']=!![];}}}return _0x1224b3;}function parseModelFields(_0x697edd,_0x54e460){var _0x52af2f=squel['expr']();var _0x368ca1=_(_0x697edd)[_0xf050('0x49')]()[_0xf050('0x42')](function(_0x5108c6){return _[_0xf050('0x4a')](_0x54e460,['name',_0x5108c6])?_0x5108c6:undefined;})[_0xf050('0x4b')]()[_0xf050('0x3e')]();if(_0x697edd['Contact']){_0x368ca1[_0xf050('0x21')](_0xf050('0x4c'));}if(_0x368ca1['length']>0x0){_0x368ca1[_0xf050('0x26')](function(_0x397358){if(_0x397358===_0xf050('0x9')){_0x52af2f[_0xf050('0x45')](_0xf050('0x4d'),[][_0xf050('0x4e')](_0x697edd[_0x397358]));}else if(_0x397358===_0xf050('0x4c')){var _0x5c5bbf='%'+_0x697edd[_0x397358]+'%';_0x52af2f[_0xf050('0x45')](_0xf050('0x4f'),_0x5c5bbf);}else{_0x52af2f['and']('c.'+_0x397358+_0xf050('0x50'),_0x697edd[_0x397358]);}});}return _0x52af2f;}function parseQueryParameters(_0x4fdd13,_0x2d8f78){var _0x382d1d=getSqlClauses();return Promise[_0xf050('0x51')]()[_0xf050('0x52')](function(){return parseModelFields(_0x4fdd13,_0x2d8f78);})[_0xf050('0x52')](function(_0x4f5be0){_0x382d1d[_0xf050('0x53')][_0xf050('0x45')](_0x4f5be0);return parseTagParameter(_0x4fdd13[_0xf050('0x54')]);})[_0xf050('0x52')](function(_0x961c34){_0x382d1d[_0xf050('0x43')][_0xf050('0x44')][_0xf050('0x45')](_0x961c34);return parseSearchFilter(_0x4fdd13[_0xf050('0x55')]);})[_0xf050('0x52')](function(_0x27fceb){_0x382d1d[_0xf050('0x55')]=_0x27fceb;return _0x382d1d;});}function checkListsRestrictions(_0x552ffa,_0x59c975,_0x456cf4){var _0x9bb32a=squel[_0xf050('0x24')]();return Promise['resolve']()[_0xf050('0x52')](function(){if(_0x59c975[_0xf050('0x8')]&&_0x552ffa[_0xf050('0x6')]===_0xf050('0x7')&&!_0x456cf4){return _0x552ffa[_0xf050('0x56')]({'attributes':['id'],'raw':!![]});}})[_0xf050('0x52')](function(_0x24e2f9){if(_0x24e2f9){if(_0x24e2f9[_0xf050('0x2a')]===0x0){_0x9bb32a[_0xf050('0x45')](_0xf050('0x57'));}else{_0x9bb32a[_0xf050('0x45')]('c.ListId\x20IN\x20?',_[_0xf050('0x42')](_0x24e2f9,'id'));}}})[_0xf050('0x52')](function(){return _0x9bb32a;});}function buildContactsQuery(_0x2f3499,_0x1e0eb7,_0x8e43fe,_0x5573a4,_0x4fc125,_0x4de31e){if(_0x1e0eb7){_0x1e0eb7=_0x8e43fe[_0xf050('0x58')];}_0x2f3499=addFieldsToQuery(_0x2f3499,_0x1e0eb7,_0x5573a4,_0x4de31e,!![]);var _0x187d48=squel[_0xf050('0x59')]();_0x187d48=addFieldsToQuery(_0x187d48,_0x1e0eb7,_0x5573a4,_0x4de31e,![]);if(_0x5573a4||_0x4de31e){_0x2f3499=applyJoinClauses(_0x2f3499,!![]);_0x2f3499[_0xf050('0x5a')](_0xf050('0x5b'));if(_0x8e43fe[_0xf050('0x5c')]){_0x187d48[_0xf050('0x5c')](_0x8e43fe[_0xf050('0x5c')]);}if(_0x8e43fe[_0xf050('0x5d')]){_0x187d48[_0xf050('0x5d')](_0x8e43fe[_0xf050('0x5d')]);}}else{_0x187d48=applyJoinClauses(_0x187d48,![]);_0x187d48['group'](_0xf050('0x5e'));if(_0x8e43fe[_0xf050('0x5c')]){_0x2f3499['limit'](_0x8e43fe[_0xf050('0x5c')]);}if(_0x8e43fe[_0xf050('0x5d')]){_0x2f3499['offset'](_0x8e43fe[_0xf050('0x5d')]);}}_0x187d48['having'](_0x4fc125);if(_0x8e43fe[_0xf050('0x5f')]){_0x8e43fe[_0xf050('0x5f')][_0xf050('0x26')](function(_0x3c26f5){_0x2f3499['order']('c.'+_0x3c26f5[0x0],_0x3c26f5[0x1]==='DESC'?![]:!![]);_0x187d48[_0xf050('0x5f')](_0xf050('0x60')+_0x3c26f5[0x0],_0x3c26f5[0x1]===_0xf050('0x61')?![]:!![]);});}_0x187d48[_0xf050('0x62')](_0x2f3499,_0xf050('0xf'));return _0x187d48;}function getFilteredContacts(_0x8ae5cf){var _0x39fef9=[];return db['Tag'][_0xf050('0x63')]({'attributes':['id','name',_0xf050('0x64')],'raw':!![]})[_0xf050('0x52')](function(_0x502b7d){_0x39fef9=_[_0xf050('0x65')](_0x502b7d,'id');var _0x663e6a={'type':db[_0xf050('0x66')][_0xf050('0x67')][_0xf050('0x68')],'model':db[_0xf050('0x69')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0xf050('0x6a')](_0x8ae5cf[_0xf050('0x6b')](),_0x663e6a);})['then'](function(_0x430309){_0x430309[_0xf050('0x26')](function(_0x3a3d27){if(_0x3a3d27[_0xf050('0x20')]){_0x3a3d27[_0xf050('0x6c')]=[];_0x3a3d27['TagIds']['split'](',')[_0xf050('0x26')](function(_0x28b6b7){_0x3a3d27[_0xf050('0x6c')][_0xf050('0x21')](_0x39fef9[_0x28b6b7]);});}delete _0x3a3d27[_0xf050('0x20')];});return _0x430309;});}function countFilteredContacts(_0x19cbf7,_0xc2ca83){var _0x2a9957=_0x19cbf7[_0xf050('0x6d')]();_0x2a9957[_0xf050('0x22')](_0xf050('0x6e'));_0x2a9957=applyJoinClauses(_0x2a9957,!![]);_0x19cbf7[_0xf050('0x5a')](_0xf050('0x5b'));var _0x48de11=utils[_0xf050('0x25')](_0xc2ca83);if(!_[_0xf050('0x6f')](_0x48de11)){_0x2a9957[_0xf050('0xd')](_0xf050('0x70'),_0x48de11);}var _0x603859={'type':db[_0xf050('0x66')][_0xf050('0x67')]['SELECT'],'raw':!![]};return db[_0xf050('0x71')][_0xf050('0x6a')](_0x2a9957[_0xf050('0x6b')](),_0x603859)['then'](function(_0x2f6e60){return _0x2f6e60[0x0][_0xf050('0x6e')];});}module[_0xf050('0x72')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0xeb7b=['expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','isNumeric','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','name','dateOfBirth','datetime','castTo','DATE','buildExpression','type','default','value','end','split','map','clause','and','tags','ids','uc.UserId\x20=\x20?','skip','some','Contact','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then','fields','tag','filter','role','c.ListId\x20IS\x20NULL','attributes','group','c.id','limit','offset','subqry.id','having','order','subqry.','DESC','Tag','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','COUNT(*)','isEmpty','t.id\x20IN\x20?','lodash','squel','../parsers/advancedSearch','../interaction/utils','agent','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','uc.CmContactId\x20=\x20','left_join','cm_contact_has_tags','tools_tags','firstName','lastName','phone','mobile','fax','createdAt','updatedAt','deletedAt','TagIds','push','GROUP_CONCAT(DISTINCT\x20t.id)','field'];(function(_0x5b2809,_0x48b226){var _0x572dee=function(_0x4b3e82){while(--_0x4b3e82){_0x5b2809['push'](_0x5b2809['shift']());}};_0x572dee(++_0x48b226);}(_0xeb7b,0x16d));var _0xbeb7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeb7b[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xbeb7('0x0'));var squel=require(_0xbeb7('0x1'));var as=require(_0xbeb7('0x2'));var qs=require('../parsers/qs');var utils=require(_0xbeb7('0x3'));var db=require('../../mysqldb')['db'];function skipContactsQuery(_0x225f0c,_0x59bd67){var _0x497363=![];if(_0x225f0c['role']===_0xbeb7('0x4')&&!_0x59bd67[_0xbeb7('0x5')]&&!_0x59bd67[_0xbeb7('0x6')]&&_0x59bd67[_0xbeb7('0x7')]!==_0xbeb7('0x8')){_0x497363=!![];}return _0x497363;}function getContactsSubquery(){return squel[_0xbeb7('0x9')]()[_0xbeb7('0xa')](_0xbeb7('0xb'),'c')[_0xbeb7('0xc')](_0xbeb7('0xd'));}function applyJoinClauses(_0xd41a7a,_0x551b10){var _0x343a2d=_0x551b10?'c':_0xbeb7('0xe');_0xd41a7a['left_join']('cm_user_has_contacts','uc',_0xbeb7('0xf')+_0x343a2d+'.id')[_0xbeb7('0x10')](_0xbeb7('0x11'),'ct','ct.CmContactId\x20=\x20'+_0x343a2d+'.id')[_0xbeb7('0x10')](_0xbeb7('0x12'),'t','t.id\x20=\x20ct.TagId');return _0xd41a7a;}function addFieldsToQuery(_0x3bb1e6,_0x564bbd,_0x175166,_0x4e5bbc,_0x2febb1){var _0x2b0274=_0x2febb1?'c':_0xbeb7('0xe');if(!_0x564bbd){_0x564bbd=['id',_0xbeb7('0x13'),_0xbeb7('0x14'),_0xbeb7('0x15'),_0xbeb7('0x16'),_0xbeb7('0x17'),'email','ListId','CompanyId',_0xbeb7('0x18'),_0xbeb7('0x19'),_0xbeb7('0x1a'),_0xbeb7('0x1b')];}else if(!_0x564bbd['includes']('id')){_0x564bbd[_0xbeb7('0x1c')]('id');}var _0x506bc3=_0x175166&&_0x2febb1||!_0x175166&&!_0x2febb1;if(_0x4e5bbc){_0x506bc3=_0x4e5bbc&&_0x2febb1||!_0x4e5bbc&&!_0x2febb1;}_0x564bbd['forEach'](function(_0x1a661d){if(_0x1a661d===_0xbeb7('0x1b')){if(_0x506bc3){_0x3bb1e6['field'](_0xbeb7('0x1d'),_0x1a661d);}else if(_0x175166||_0x4e5bbc){_0x3bb1e6[_0xbeb7('0x1e')](_0x2b0274+'.'+_0x1a661d);}}else{_0x3bb1e6[_0xbeb7('0x1e')](_0x2b0274+'.'+_0x1a661d);}});return _0x3bb1e6;}function getSqlClauses(){var _0xa0ebfb={'default':squel[_0xbeb7('0x1f')](),'fields':squel[_0xbeb7('0x1f')](),'filter':squel[_0xbeb7('0x1f')](),'tags':{'clause':squel[_0xbeb7('0x1f')](),'ids':null},'user':{'clause':squel[_0xbeb7('0x1f')](),'skip':![]}};return _0xa0ebfb;}function parseTagParameter(_0x23945e){var _0x2e3dfe=squel[_0xbeb7('0x1f')]();if(_0x23945e){var _0x4a577c=utils[_0xbeb7('0x20')](_0x23945e);_0x4a577c[_0xbeb7('0x21')](function(_0x44fb86){_0x2e3dfe['or'](_0xbeb7('0x22'),'%,'+_0x44fb86+',%');});}return _0x2e3dfe;}function parseSearchFilter(_0xe56244){var _0x3cebc5=squel['expr']();if(_0xe56244){var _0x4113f1=_0xe56244[_0xbeb7('0x23')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x4113f1['split']('\x20')[_0xbeb7('0x24')]>0x1){_0x3cebc5['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x4113f1),null);}else{if(qs[_0xbeb7('0x25')](_0x4113f1)){_0x3cebc5['or']('c.id\x20LIKE\x20?',_0x4113f1+'%');_0x3cebc5['or'](_0xbeb7('0x26'),_0x4113f1+'%');_0x3cebc5['or']('c.mobile\x20LIKE\x20?',_0x4113f1+'%');_0x3cebc5['or'](_0xbeb7('0x27'),_0x4113f1+'%');}else if(qs['isEmail'](_0x4113f1)){_0x3cebc5['or'](_0xbeb7('0x28'),_0x4113f1+'%');}else{_0x3cebc5['or'](_0xbeb7('0x29'),'%'+_0x4113f1+'%');_0x3cebc5['or'](_0xbeb7('0x2a'),'%'+_0x4113f1+'%');_0x3cebc5['or']('c.email\x20LIKE\x20?','%'+_0x4113f1+'%');}}}return _0x3cebc5;}function parseAdvancedSearchFilter(_0x4fd360,_0x57dc40){var _0xae47c8=getSqlClauses();var _0x5307fb=as[_0xbeb7('0x2b')](_0x4fd360);var _0x4a01bc=_0x5307fb['sqlOperator'];for(var _0x3d45ba=0x0;_0x3d45ba<_0x5307fb[_0xbeb7('0x2c')][_0xbeb7('0x24')];_0x3d45ba++){var _0x1a6d7a=_0x5307fb['conditions'][_0x3d45ba];var _0x2c9bf0='c';var _0x4609c9=_['find'](_0x57dc40,[_0xbeb7('0x2d'),_0x1a6d7a[_0xbeb7('0x1e')]]);if(_0x4609c9){if(_0x1a6d7a[_0xbeb7('0x1e')]===_0xbeb7('0x2e')||_0x4609c9['fieldType']===_0xbeb7('0x2f')){_0x1a6d7a[_0xbeb7('0x30')]=_0xbeb7('0x31');}var _0x475975=as[_0xbeb7('0x32')](_0x2c9bf0,_0x4609c9[_0xbeb7('0x33')],_0x1a6d7a);_0xae47c8[_0xbeb7('0x34')][_0x4a01bc](_0x475975['text'],_0x475975[_0xbeb7('0x35')]['start'],_0x475975[_0xbeb7('0x35')][_0xbeb7('0x36')]);}else{if(_0x1a6d7a['field']==='Tag'){var _0x17a9bd=_0x1a6d7a['value'][_0xbeb7('0x37')](',')[_0xbeb7('0x38')](function(_0x22eda6){return Number(_0x22eda6);});var _0x18a402=parseTagParameter(_0x17a9bd);_0xae47c8['tags'][_0xbeb7('0x39')][_0xbeb7('0x3a')](_0x18a402);_0xae47c8[_0xbeb7('0x3b')][_0xbeb7('0x3c')]=_0x17a9bd;}else if(_0x1a6d7a['field']==='User'){_0xae47c8['user'][_0xbeb7('0x39')][_0xbeb7('0x3a')](_0xbeb7('0x3d'),_0x1a6d7a['value']);_0xae47c8['user'][_0xbeb7('0x3e')]=!![];}}}return _0xae47c8;}function parseModelFields(_0x34789e,_0x127ce2){var _0x2ca73d=squel[_0xbeb7('0x1f')]();var _0x5ea4bb=_(_0x34789e)['keys']()[_0xbeb7('0x38')](function(_0x3ceec3){return _[_0xbeb7('0x3f')](_0x127ce2,[_0xbeb7('0x2d'),_0x3ceec3])?_0x3ceec3:undefined;})['compact']()[_0xbeb7('0x35')]();if(_0x34789e[_0xbeb7('0x40')]){_0x5ea4bb['push'](_0xbeb7('0x40'));}if(_0x5ea4bb[_0xbeb7('0x24')]>0x0){_0x5ea4bb[_0xbeb7('0x21')](function(_0x4a5d74){if(_0x4a5d74==='ListId'){_0x2ca73d['and'](_0xbeb7('0x41'),[][_0xbeb7('0x42')](_0x34789e[_0x4a5d74]));}else if(_0x4a5d74==='Contact'){var _0x576992='%'+_0x34789e[_0x4a5d74]+'%';_0x2ca73d[_0xbeb7('0x3a')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x576992);}else{_0x2ca73d[_0xbeb7('0x3a')]('c.'+_0x4a5d74+_0xbeb7('0x43'),_0x34789e[_0x4a5d74]);}});}return _0x2ca73d;}function parseQueryParameters(_0x3f97e6,_0x2c306d){var _0x513798=getSqlClauses();return Promise[_0xbeb7('0x44')]()['then'](function(){return parseModelFields(_0x3f97e6,_0x2c306d);})[_0xbeb7('0x45')](function(_0x1b809d){_0x513798[_0xbeb7('0x46')][_0xbeb7('0x3a')](_0x1b809d);return parseTagParameter(_0x3f97e6[_0xbeb7('0x47')]);})['then'](function(_0x5e8663){_0x513798['tags']['clause']['and'](_0x5e8663);return parseSearchFilter(_0x3f97e6[_0xbeb7('0x48')]);})['then'](function(_0x51f15b){_0x513798[_0xbeb7('0x48')]=_0x51f15b;return _0x513798;});}function checkListsRestrictions(_0x5ec2ca,_0x517ea4,_0x16e07e){var _0x22f042=squel[_0xbeb7('0x1f')]();return Promise[_0xbeb7('0x44')]()['then'](function(){if(_0x517ea4['search']&&_0x5ec2ca[_0xbeb7('0x49')]===_0xbeb7('0x4')&&!_0x16e07e){return _0x5ec2ca['getLists']({'attributes':['id'],'raw':!![]});}})[_0xbeb7('0x45')](function(_0x27767c){if(_0x27767c){if(_0x27767c['length']===0x0){_0x22f042[_0xbeb7('0x3a')](_0xbeb7('0x4a'));}else{_0x22f042[_0xbeb7('0x3a')]('c.ListId\x20IN\x20?',_[_0xbeb7('0x38')](_0x27767c,'id'));}}})[_0xbeb7('0x45')](function(){return _0x22f042;});}function buildContactsQuery(_0x1578e6,_0x59c4f9,_0x3cff81,_0x2a7408,_0x186af0,_0x36c85b){if(_0x59c4f9){_0x59c4f9=_0x3cff81[_0xbeb7('0x4b')];}_0x1578e6=addFieldsToQuery(_0x1578e6,_0x59c4f9,_0x2a7408,_0x36c85b,!![]);var _0x5cecad=squel[_0xbeb7('0x9')]();_0x5cecad=addFieldsToQuery(_0x5cecad,_0x59c4f9,_0x2a7408,_0x36c85b,![]);if(_0x2a7408||_0x36c85b){_0x1578e6=applyJoinClauses(_0x1578e6,!![]);_0x1578e6[_0xbeb7('0x4c')](_0xbeb7('0x4d'));if(_0x3cff81['limit']){_0x5cecad[_0xbeb7('0x4e')](_0x3cff81[_0xbeb7('0x4e')]);}if(_0x3cff81[_0xbeb7('0x4f')]){_0x5cecad[_0xbeb7('0x4f')](_0x3cff81[_0xbeb7('0x4f')]);}}else{_0x5cecad=applyJoinClauses(_0x5cecad,![]);_0x5cecad[_0xbeb7('0x4c')](_0xbeb7('0x50'));if(_0x3cff81[_0xbeb7('0x4e')]){_0x1578e6[_0xbeb7('0x4e')](_0x3cff81[_0xbeb7('0x4e')]);}if(_0x3cff81[_0xbeb7('0x4f')]){_0x1578e6[_0xbeb7('0x4f')](_0x3cff81[_0xbeb7('0x4f')]);}}_0x5cecad[_0xbeb7('0x51')](_0x186af0);if(_0x3cff81[_0xbeb7('0x52')]){_0x3cff81[_0xbeb7('0x52')][_0xbeb7('0x21')](function(_0x1e2f24){_0x1578e6[_0xbeb7('0x52')]('c.'+_0x1e2f24[0x0],_0x1e2f24[0x1]==='DESC'?![]:!![]);_0x5cecad[_0xbeb7('0x52')](_0xbeb7('0x53')+_0x1e2f24[0x0],_0x1e2f24[0x1]===_0xbeb7('0x54')?![]:!![]);});}_0x5cecad[_0xbeb7('0xa')](_0x1578e6,_0xbeb7('0xe'));return _0x5cecad;}function getFilteredContacts(_0x187d16){var _0x48a46f=[];return db[_0xbeb7('0x55')]['findAll']({'attributes':['id',_0xbeb7('0x2d'),_0xbeb7('0x56')],'raw':!![]})[_0xbeb7('0x45')](function(_0x52d4a0){_0x48a46f=_[_0xbeb7('0x57')](_0x52d4a0,'id');var _0x2774af={'type':db[_0xbeb7('0x58')][_0xbeb7('0x59')][_0xbeb7('0x5a')],'model':db[_0xbeb7('0x5b')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xbeb7('0x5c')][_0xbeb7('0x5d')](_0x187d16[_0xbeb7('0x5e')](),_0x2774af);})[_0xbeb7('0x45')](function(_0x1194ea){_0x1194ea[_0xbeb7('0x21')](function(_0x3a1507){if(_0x3a1507[_0xbeb7('0x1b')]){_0x3a1507[_0xbeb7('0x5f')]=[];_0x3a1507[_0xbeb7('0x1b')]['split'](',')[_0xbeb7('0x21')](function(_0xea9f1f){_0x3a1507[_0xbeb7('0x5f')][_0xbeb7('0x1c')](_0x48a46f[_0xea9f1f]);});}delete _0x3a1507[_0xbeb7('0x1b')];});return _0x1194ea;});}function countFilteredContacts(_0x1fe968,_0x104aca){var _0x190e27=_0x1fe968['clone']();_0x190e27[_0xbeb7('0x1e')](_0xbeb7('0x60'));_0x190e27=applyJoinClauses(_0x190e27,!![]);_0x1fe968[_0xbeb7('0x4c')](_0xbeb7('0x4d'));var _0x58bd3d=utils[_0xbeb7('0x20')](_0x104aca);if(!_[_0xbeb7('0x61')](_0x58bd3d)){_0x190e27[_0xbeb7('0xc')](_0xbeb7('0x62'),_0x58bd3d);}var _0x130545={'type':db[_0xbeb7('0x58')][_0xbeb7('0x59')][_0xbeb7('0x5a')],'raw':!![]};return db[_0xbeb7('0x5c')]['query'](_0x190e27[_0xbeb7('0x5e')](),_0x130545)['then'](function(_0x6f32f8){return _0x6f32f8[0x0][_0xbeb7('0x60')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index fdb2df3..84c9a2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09be=['is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','indexOf','hasOwnProperty','encryptFile','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createWriteStream','utf8','base64','decryptString','secret','createDecipher','crypto','bluebird','lodash','../../config/logger','app','secrets','aes-256-ctr','aes192','encrypt','algorithm','join','error'];(function(_0x3b76f7,_0x566c53){var _0x43984e=function(_0x164f77){while(--_0x164f77){_0x3b76f7['push'](_0x3b76f7['shift']());}};_0x43984e(++_0x566c53);}(_0x09be,0x148));var _0xe09b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x09be[_0x14add3];return _0x4a174f;};'use strict';var crypto=require(_0xe09b('0x0'));var fs=require('fs');var BPromise=require(_0xe09b('0x1'));var _=require(_0xe09b('0x2'));var config=require('../../config/environment');var logger=require(_0xe09b('0x3'))(_0xe09b('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xe09b('0x5')]['session'],'algorithm':_0xe09b('0x6')};const fileOptions={'algorithm':_0xe09b('0x7')};if(config[_0xe09b('0x8')]&&config[_0xe09b('0x8')][_0xe09b('0x9')]){var isSupported=isAlgorithmSupported(config[_0xe09b('0x8')][_0xe09b('0x9')]);if(isSupported){fileOptions[_0xe09b('0x9')]=config[_0xe09b('0x8')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0xe09b('0xa')](',\x20');logger[_0xe09b('0xb')](config[_0xe09b('0x8')][_0xe09b('0x9')],_0xe09b('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x3e460f){return AES_SUPPORTED_RX[_0xe09b('0xd')](_0x3e460f);}function getSupportedCiphers(){return crypto[_0xe09b('0xe')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x27da84){return getSupportedCiphers()[_0xe09b('0xf')](_0x27da84)>-0x1;}function combineOptions(_0x2d4f9f){var _0x41519c={};for(var _0x463804 in fileOptions){if(fileOptions[_0xe09b('0x10')](_0x463804)){_0x41519c[_0x463804]=fileOptions[_0x463804];}}if(_0x2d4f9f){for(var _0x33316b in _0x2d4f9f){if(_0x2d4f9f['hasOwnProperty'](_0x33316b)){_0x41519c[_0x33316b]=_0x2d4f9f[_0x33316b];}}}return _0x41519c;}exports[_0xe09b('0x11')]=function(_0x2afe14,_0x3ccd2d,_0x34ede1,_0x21a53f){return new BPromise(function(_0x57d3a5,_0x430da4){_0x21a53f=combineOptions(_0x21a53f);var _0x324239=new Buffer(_0x34ede1);var _0x324b38=fs['createReadStream'](_0x2afe14);var _0x470d6b=fs['createWriteStream'](_0x3ccd2d);var _0xb39591=crypto[_0xe09b('0x12')](_0x21a53f[_0xe09b('0x9')],_0x324239);_0x324b38['on']('data',function(_0x5d3995){var _0xf7ed11=new Buffer(_0xb39591[_0xe09b('0x13')](_0x5d3995),_0xe09b('0x14'));_0x470d6b[_0xe09b('0x15')](_0xf7ed11);});_0x324b38['on'](_0xe09b('0x16'),function(){try{var _0x1fe4b9=new Buffer(_0xb39591[_0xe09b('0x17')](_0xe09b('0x14')),_0xe09b('0x14'));_0x470d6b['write'](_0x1fe4b9);_0x470d6b[_0xe09b('0x16')]();_0x470d6b['on'](_0xe09b('0x18'),function(){return _0x57d3a5(_0x3ccd2d);});}catch(_0x3a453a){fs[_0xe09b('0x19')](_0x3ccd2d);return _0x430da4(_0x3a453a);}});});};exports[_0xe09b('0x1a')]=function(_0x45a688,_0x4e64bc,_0x1803b1,_0x1d500b){return new BPromise(function(_0x332f63,_0x1d29e0){_0x1d500b=combineOptions(_0x1d500b);var _0x4b2c7f=new Buffer(_0x1803b1);var _0x5306e9=fs[_0xe09b('0x1b')](_0x45a688);var _0x3a95b9=fs[_0xe09b('0x1c')](_0x4e64bc);var _0x1c599b=crypto['createDecipher'](_0x1d500b[_0xe09b('0x9')],_0x4b2c7f);_0x5306e9['on']('data',function(_0x21f12a){var _0x46c101=new Buffer(_0x1c599b[_0xe09b('0x13')](_0x21f12a),'binary');_0x3a95b9['write'](_0x46c101);});_0x5306e9['on'](_0xe09b('0x16'),function(){try{var _0x4f0627=new Buffer(_0x1c599b[_0xe09b('0x17')](_0xe09b('0x14')),_0xe09b('0x14'));_0x3a95b9[_0xe09b('0x15')](_0x4f0627);_0x3a95b9['end']();_0x3a95b9['on']('close',function(){return _0x332f63(_0x4e64bc);});}catch(_0x449c6f){fs['unlink'](_0x4e64bc);return _0x1d29e0(_0x449c6f);}});});};exports['encryptString']=function(_0x4d71f5,_0x5c4bcc,_0x561b4e){var _0x23817d=_0x561b4e||stringOptions[_0xe09b('0x9')];var _0x46e37b=_0x5c4bcc||stringOptions['secret'];var _0x2dbe1d=crypto[_0xe09b('0x12')](_0x23817d,_0x46e37b);var _0x197f0f=_0x2dbe1d[_0xe09b('0x13')](_0x4d71f5,_0xe09b('0x1d'),_0xe09b('0x1e'));_0x197f0f+=_0x2dbe1d['final'](_0xe09b('0x1e'));return _0x197f0f;};exports[_0xe09b('0x1f')]=function(_0x31d8e8,_0x5dccbc,_0xf53159){var _0x10d6c9=_0xf53159||stringOptions[_0xe09b('0x9')];var _0x2c25dd=_0x5dccbc||stringOptions[_0xe09b('0x20')];var _0x1bb8b1=crypto[_0xe09b('0x21')](_0x10d6c9,_0x2c25dd);var _0x5351bf=_0x1bb8b1[_0xe09b('0x13')](_0x31d8e8,_0xe09b('0x1e'),'utf8');_0x5351bf+=_0x1bb8b1[_0xe09b('0x17')](_0xe09b('0x1d'));return _0x5351bf;};
\ No newline at end of file
+var _0x4f85=['aes-256-ctr','aes192','encrypt','algorithm','join','test','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','unlink','decryptFile','createDecipher','final','close','secret','base64','utf8','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session'];(function(_0x43f552,_0x42808c){var _0x17911b=function(_0x4407a7){while(--_0x4407a7){_0x43f552['push'](_0x43f552['shift']());}};_0x17911b(++_0x42808c);}(_0x4f85,0xf9));var _0x54f8=function(_0x50f5ae,_0x1f4029){_0x50f5ae=_0x50f5ae-0x0;var _0x85b7b0=_0x4f85[_0x50f5ae];return _0x85b7b0;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x54f8('0x0'));var _=require(_0x54f8('0x1'));var config=require(_0x54f8('0x2'));var logger=require(_0x54f8('0x3'))(_0x54f8('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x54f8('0x5')][_0x54f8('0x6')],'algorithm':_0x54f8('0x7')};const fileOptions={'algorithm':_0x54f8('0x8')};if(config['encrypt']&&config[_0x54f8('0x9')][_0x54f8('0xa')]){var isSupported=isAlgorithmSupported(config[_0x54f8('0x9')][_0x54f8('0xa')]);if(isSupported){fileOptions[_0x54f8('0xa')]=config[_0x54f8('0x9')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x54f8('0xb')](',\x20');logger['error'](config[_0x54f8('0x9')]['algorithm'],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x163615){return AES_SUPPORTED_RX[_0x54f8('0xc')](_0x163615);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x54f8('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x550604){return getSupportedCiphers()[_0x54f8('0xe')](_0x550604)>-0x1;}function combineOptions(_0x82d084){var _0x27df83={};for(var _0x475432 in fileOptions){if(fileOptions[_0x54f8('0xf')](_0x475432)){_0x27df83[_0x475432]=fileOptions[_0x475432];}}if(_0x82d084){for(var _0x418947 in _0x82d084){if(_0x82d084['hasOwnProperty'](_0x418947)){_0x27df83[_0x418947]=_0x82d084[_0x418947];}}}return _0x27df83;}exports[_0x54f8('0x10')]=function(_0x1d6684,_0x4dfb07,_0x2de753,_0xbd2585){return new BPromise(function(_0x37bbd5,_0x247a2a){_0xbd2585=combineOptions(_0xbd2585);var _0x57b4a8=new Buffer(_0x2de753);var _0x4e326b=fs['createReadStream'](_0x1d6684);var _0x296e18=fs[_0x54f8('0x11')](_0x4dfb07);var _0x15b99a=crypto[_0x54f8('0x12')](_0xbd2585[_0x54f8('0xa')],_0x57b4a8);_0x4e326b['on'](_0x54f8('0x13'),function(_0x31b0a7){var _0x44b926=new Buffer(_0x15b99a[_0x54f8('0x14')](_0x31b0a7),_0x54f8('0x15'));_0x296e18[_0x54f8('0x16')](_0x44b926);});_0x4e326b['on'](_0x54f8('0x17'),function(){try{var _0x4c210c=new Buffer(_0x15b99a['final']('binary'),'binary');_0x296e18[_0x54f8('0x16')](_0x4c210c);_0x296e18['end']();_0x296e18['on']('close',function(){return _0x37bbd5(_0x4dfb07);});}catch(_0x56427e){fs[_0x54f8('0x18')](_0x4dfb07);return _0x247a2a(_0x56427e);}});});};exports[_0x54f8('0x19')]=function(_0xf58f18,_0x3f0d43,_0x18147b,_0x158c05){return new BPromise(function(_0x438214,_0x3b8b91){_0x158c05=combineOptions(_0x158c05);var _0x51032c=new Buffer(_0x18147b);var _0x21651a=fs['createReadStream'](_0xf58f18);var _0x35fbe1=fs[_0x54f8('0x11')](_0x3f0d43);var _0x18524f=crypto[_0x54f8('0x1a')](_0x158c05[_0x54f8('0xa')],_0x51032c);_0x21651a['on'](_0x54f8('0x13'),function(_0x39c904){var _0x49010c=new Buffer(_0x18524f[_0x54f8('0x14')](_0x39c904),_0x54f8('0x15'));_0x35fbe1[_0x54f8('0x16')](_0x49010c);});_0x21651a['on']('end',function(){try{var _0x2d5307=new Buffer(_0x18524f[_0x54f8('0x1b')](_0x54f8('0x15')),_0x54f8('0x15'));_0x35fbe1[_0x54f8('0x16')](_0x2d5307);_0x35fbe1[_0x54f8('0x17')]();_0x35fbe1['on'](_0x54f8('0x1c'),function(){return _0x438214(_0x3f0d43);});}catch(_0x42e030){fs[_0x54f8('0x18')](_0x3f0d43);return _0x3b8b91(_0x42e030);}});});};exports['encryptString']=function(_0x17ca1c,_0xe97941,_0x2cdbf4){var _0x3d2cbd=_0x2cdbf4||stringOptions[_0x54f8('0xa')];var _0x48dffa=_0xe97941||stringOptions[_0x54f8('0x1d')];var _0x24a51c=crypto['createCipher'](_0x3d2cbd,_0x48dffa);var _0x2d42d6=_0x24a51c['update'](_0x17ca1c,'utf8',_0x54f8('0x1e'));_0x2d42d6+=_0x24a51c[_0x54f8('0x1b')](_0x54f8('0x1e'));return _0x2d42d6;};exports['decryptString']=function(_0xaed444,_0x35accc,_0x4920ab){var _0x5889fd=_0x4920ab||stringOptions['algorithm'];var _0x48b26b=_0x35accc||stringOptions['secret'];var _0x5ee031=crypto['createDecipher'](_0x5889fd,_0x48b26b);var _0x5f1608=_0x5ee031['update'](_0xaed444,_0x54f8('0x1e'),'utf8');_0x5f1608+=_0x5ee031[_0x54f8('0x1b')](_0x54f8('0x1f'));return _0x5f1608;};
\ No newline at end of file
index c30aebb..c20be25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71bd=['bluebird','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeCsv','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','range','num','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','query','dirname','basename','.csv','existsSync','join','mkdirSync','csv','%s.%s','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','util','path','lodash','to-csv'];(function(_0x26d15c,_0x501fa0){var _0x2e85d4=function(_0x36a778){while(--_0x36a778){_0x26d15c['push'](_0x26d15c['shift']());}};_0x2e85d4(++_0x501fa0);}(_0x71bd,0x1f0));var _0xd71b=function(_0x1e0af0,_0x130a21){_0x1e0af0=_0x1e0af0-0x0;var _0x1e8cc9=_0x71bd[_0x1e0af0];return _0x1e8cc9;};'use strict';var util=require(_0xd71b('0x0'));var path=require(_0xd71b('0x1'));var _=require(_0xd71b('0x2'));var csv=require(_0xd71b('0x3'));var fs=require('fs');var BPromise=require(_0xd71b('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0xd71b('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0xd71b('0x6'))[_0xd71b('0x7')];var logger=require(_0xd71b('0x8'))(_0xd71b('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xd71b('0xa')][0x3];var PATH=process[_0xd71b('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x55e675,_0x595bb7){var _0x2cfdcc={'status':_0x55e675};var _0x3d7646={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x595bb7){_0x2cfdcc[_0xd71b('0xb')]=_0x595bb7;}return db[_0xd71b('0xc')][_0xd71b('0xd')](_0x2cfdcc,_0x3d7646);}function main(){var _0x5412e2=0x1388;var _0x386d03;logger[_0xd71b('0xe')](util[_0xd71b('0xf')](_0xd71b('0x10'),EXTRACTED_REPORT_ID,'CSV'));return db['Setting'][_0xd71b('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd71b('0x12'),_0xd71b('0x13')]})['then'](function(_0x479a78){if(_0x479a78){_0x386d03=_0x479a78;_0x5412e2=_0x386d03[_0xd71b('0x13')]||0x1388;}})[_0xd71b('0x14')](function(){return dbH[_0xd71b('0x15')]['query'](util[_0xd71b('0xf')](_0xd71b('0x16'),QUERY),{'type':dbH[_0xd71b('0x15')]['QueryTypes'][_0xd71b('0x17')]});})[_0xd71b('0x14')](function(_0x44feb9){if(!_0x44feb9[0x0]['num']){return analyticExtractedReport(_0xd71b('0x18'));}var _0x261268=[];var _0x332ae7=0x0;if(_0x386d03[_0xd71b('0x12')]){if(_0x44feb9&&_0x44feb9[_0xd71b('0x19')]){var _0x4f41fe=_[_0xd71b('0x1a')](_0x44feb9[0x0]['num']/_0x5412e2);var _0x180ece=Number['isInteger'](_0x44feb9[0x0]['num']/_0x5412e2)?_0x44feb9[0x0][_0xd71b('0x1b')]%_0x5412e2:0x0;_0x4f41fe[_0xd71b('0x1c')](function(_0x208011){if(_0x208011>0x0){_0x332ae7+=_0x5412e2;}_0x261268[_0xd71b('0x1d')](dbH[_0xd71b('0x15')]['query'](util['format'](_0xd71b('0x1e'),QUERY,_0x5412e2,_0x332ae7),{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')][_0xd71b('0x17')]}));});if(_0x180ece>0x0){_0x332ae7+=_0x5412e2;_0x261268[_0xd71b('0x1d')](dbH[_0xd71b('0x15')][_0xd71b('0x20')](util[_0xd71b('0xf')](_0xd71b('0x1e'),QUERY,_0x180ece,_0x332ae7),{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')]['SELECT']}));}}}else{_0x261268[_0xd71b('0x1d')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xd71b('0x15')][_0xd71b('0x1f')]['SELECT']}));}var _0x42f95f=path[_0xd71b('0x21')](PATH);var _0x2f2764=path[_0xd71b('0x22')](PATH,_0xd71b('0x23'));var _0x147bfd=_0x386d03[_0xd71b('0x12')]&&_0x261268[_0xd71b('0x19')]>0x1;var _0x233bd1=[];if(!fs[_0xd71b('0x24')](path[_0xd71b('0x25')](_0x42f95f,_0x2f2764))&&_0x147bfd){fs[_0xd71b('0x26')](path[_0xd71b('0x25')](_0x42f95f,_0x2f2764));}return BPromise['each'](_0x261268,function(_0x3a5c8b){_0x233bd1[_0xd71b('0x1d')](_0x3a5c8b);})[_0xd71b('0x14')](function(){for(var _0x26cdb2=0x0;_0x26cdb2<_0x233bd1['length'];_0x26cdb2+=0x1){var _0x16e648;var _0x3bce44=_0x233bd1[_0x26cdb2];if(_0x147bfd){_0x16e648=path[_0xd71b('0x25')](_0x42f95f,_0x2f2764,util['format']('%s%d.%s',_0x2f2764,_0x26cdb2,_0xd71b('0x27')));}else{_0x16e648=path['join'](_0x42f95f,util[_0xd71b('0xf')](_0xd71b('0x28'),_0x2f2764,_0xd71b('0x27')));}fs[_0xd71b('0x29')](_0x16e648,csv(_0x3bce44));}})[_0xd71b('0x14')](function(){if(_0x147bfd){return new Promise(function(_0x28c46d){zipdir(path[_0xd71b('0x25')](_0x42f95f,_0x2f2764),{'saveTo':path[_0xd71b('0x25')](_0x42f95f,util[_0xd71b('0xf')]('%s.%s',_0x2f2764,'zip'))},function(_0x231954,_0x4d1cd1){rimraf(path[_0xd71b('0x25')](_0x42f95f,_0x2f2764),function(){});_0x28c46d(_0xd71b('0x2a'));});});}})[_0xd71b('0x14')](function(){logger[_0xd71b('0xe')](util['format'](_0xd71b('0x2b'),EXTRACTED_REPORT_ID,_0xd71b('0x2c')));return analyticExtractedReport('Completed',_0x147bfd?util[_0xd71b('0xf')]('%s.%s',_0x2f2764,_0x147bfd?_0xd71b('0x2d'):_0xd71b('0x27')):null);});})[_0xd71b('0x2e')](function(_0x456016){logger[_0xd71b('0xe')](util[_0xd71b('0xf')](_0xd71b('0x2f'),EXTRACTED_REPORT_ID,_0xd71b('0x2c')),util[_0xd71b('0x30')](_0x456016,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0xd71b('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xe208=['range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','catch','inspect','Failed','finally','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeCsv','then','query','sequelize','QueryTypes','SELECT','num','Empty','length'];(function(_0x4fef9f,_0x583eca){var _0x4b1620=function(_0x7c9a21){while(--_0x7c9a21){_0x4fef9f['push'](_0x4fef9f['shift']());}};_0x4b1620(++_0x583eca);}(_0xe208,0x1ae));var _0x8e20=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xe208[_0x2faddb];return _0x273c05;};'use strict';var util=require(_0x8e20('0x0'));var path=require(_0x8e20('0x1'));var _=require(_0x8e20('0x2'));var csv=require(_0x8e20('0x3'));var fs=require('fs');var BPromise=require(_0x8e20('0x4'));var zipdir=require(_0x8e20('0x5'));var rimraf=require(_0x8e20('0x6'));var db=require(_0x8e20('0x7'))['db'];var dbH=require(_0x8e20('0x7'))[_0x8e20('0x8')];var logger=require('../../config/logger')(_0x8e20('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x8e20('0xa')][0x2]);var QUERY=process[_0x8e20('0xa')][0x3];var PATH=process[_0x8e20('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4fb5ec,_0x459306){var _0x3ee36d={'status':_0x4fb5ec};var _0x4575d4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x459306){_0x3ee36d[_0x8e20('0xb')]=_0x459306;}return db[_0x8e20('0xc')][_0x8e20('0xd')](_0x3ee36d,_0x4575d4);}function main(){var _0x321fb3=0x1388;var _0x5c4f74;logger[_0x8e20('0xe')](util[_0x8e20('0xf')](_0x8e20('0x10'),EXTRACTED_REPORT_ID,'CSV'));return db[_0x8e20('0x11')][_0x8e20('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x8e20('0x13'),_0x8e20('0x14')]})[_0x8e20('0x15')](function(_0x13a9e1){if(_0x13a9e1){_0x5c4f74=_0x13a9e1;_0x321fb3=_0x5c4f74[_0x8e20('0x14')]||0x1388;}})[_0x8e20('0x15')](function(){return dbH['sequelize'][_0x8e20('0x16')](util[_0x8e20('0xf')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x8e20('0x17')][_0x8e20('0x18')][_0x8e20('0x19')]});})[_0x8e20('0x15')](function(_0x13a3d5){if(!_0x13a3d5[0x0][_0x8e20('0x1a')]){return analyticExtractedReport(_0x8e20('0x1b'));}var _0x4d0b51=[];var _0x3c4181=0x0;if(_0x5c4f74[_0x8e20('0x13')]){if(_0x13a3d5&&_0x13a3d5[_0x8e20('0x1c')]){var _0x2b367e=_[_0x8e20('0x1d')](_0x13a3d5[0x0][_0x8e20('0x1a')]/_0x321fb3);var _0x55704b=Number[_0x8e20('0x1e')](_0x13a3d5[0x0][_0x8e20('0x1a')]/_0x321fb3)?_0x13a3d5[0x0][_0x8e20('0x1a')]%_0x321fb3:0x0;_0x2b367e['forEach'](function(_0x5e0d4c){if(_0x5e0d4c>0x0){_0x3c4181+=_0x321fb3;}_0x4d0b51[_0x8e20('0x1f')](dbH['sequelize'][_0x8e20('0x16')](util[_0x8e20('0xf')](_0x8e20('0x20'),QUERY,_0x321fb3,_0x3c4181),{'type':dbH[_0x8e20('0x17')][_0x8e20('0x18')]['SELECT']}));});if(_0x55704b>0x0){_0x3c4181+=_0x321fb3;_0x4d0b51[_0x8e20('0x1f')](dbH[_0x8e20('0x17')][_0x8e20('0x16')](util[_0x8e20('0xf')](_0x8e20('0x20'),QUERY,_0x55704b,_0x3c4181),{'type':dbH[_0x8e20('0x17')][_0x8e20('0x18')]['SELECT']}));}}}else{_0x4d0b51[_0x8e20('0x1f')](dbH['sequelize'][_0x8e20('0x16')](QUERY,{'type':dbH['sequelize'][_0x8e20('0x18')][_0x8e20('0x19')]}));}var _0x3fc687=path['dirname'](PATH);var _0x293c7b=path[_0x8e20('0x21')](PATH,_0x8e20('0x22'));var _0x2363e0=_0x5c4f74['split']&&_0x4d0b51[_0x8e20('0x1c')]>0x1;var _0x2ac489=[];if(!fs[_0x8e20('0x23')](path[_0x8e20('0x24')](_0x3fc687,_0x293c7b))&&_0x2363e0){fs[_0x8e20('0x25')](path[_0x8e20('0x24')](_0x3fc687,_0x293c7b));}return BPromise[_0x8e20('0x26')](_0x4d0b51,function(_0x276ade){_0x2ac489[_0x8e20('0x1f')](_0x276ade);})[_0x8e20('0x15')](function(){for(var _0xff152a=0x0;_0xff152a<_0x2ac489[_0x8e20('0x1c')];_0xff152a+=0x1){var _0x8eeb4a;var _0x549761=_0x2ac489[_0xff152a];if(_0x2363e0){_0x8eeb4a=path['join'](_0x3fc687,_0x293c7b,util[_0x8e20('0xf')](_0x8e20('0x27'),_0x293c7b,_0xff152a,_0x8e20('0x28')));}else{_0x8eeb4a=path[_0x8e20('0x24')](_0x3fc687,util[_0x8e20('0xf')]('%s.%s',_0x293c7b,_0x8e20('0x28')));}fs['writeFileSync'](_0x8eeb4a,csv(_0x549761));}})[_0x8e20('0x15')](function(){if(_0x2363e0){return new Promise(function(_0x44062a){zipdir(path[_0x8e20('0x24')](_0x3fc687,_0x293c7b),{'saveTo':path['join'](_0x3fc687,util[_0x8e20('0xf')](_0x8e20('0x29'),_0x293c7b,_0x8e20('0x2a')))},function(_0x2a9c6f,_0x44e880){rimraf(path[_0x8e20('0x24')](_0x3fc687,_0x293c7b),function(){});_0x44062a(_0x8e20('0x2b'));});});}})['then'](function(){logger[_0x8e20('0xe')](util[_0x8e20('0xf')](_0x8e20('0x2c'),EXTRACTED_REPORT_ID,_0x8e20('0x2d')));return analyticExtractedReport(_0x8e20('0x2e'),_0x2363e0?util[_0x8e20('0xf')](_0x8e20('0x29'),_0x293c7b,_0x2363e0?_0x8e20('0x2a'):_0x8e20('0x28')):null);});})[_0x8e20('0x2f')](function(_0x453f47){logger[_0x8e20('0xe')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x8e20('0x2d')),util[_0x8e20('0x30')](_0x453f47,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8e20('0x31'));})[_0x8e20('0x32')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 15a6c10..9ddb781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad62=['SELECT','query','QueryTypes','basename','.pdf','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','zip\x20finished','PDF','Completed','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','createWriteStream','finish','error','createPdfFromHTML','createPdfKitDocument','lodash','util','path','moment','pdfmake/src/printer','rimraf','jsdom','window','bluebird','../../mysqldb','dbH','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','concat','chunk','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','format','push','header','pageBreak','margin','landscape','\x20/\x20','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xad62,0xd8));var _0x2ad6=function(_0x43b08c,_0x15e99e){_0x43b08c=_0x43b08c-0x0;var _0x3c2958=_0xad62[_0x43b08c];return _0x3c2958;};'use strict';var _=require(_0x2ad6('0x0'));var fs=require('fs');var util=require(_0x2ad6('0x1'));var path=require(_0x2ad6('0x2'));var moment=require(_0x2ad6('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x2ad6('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x2ad6('0x5'));var JSDOM=require(_0x2ad6('0x6'))['JSDOM'];var window=new JSDOM('')[_0x2ad6('0x7')];var BPromise=require(_0x2ad6('0x8'));var db=require(_0x2ad6('0x9'))['db'];var dbH=require('../../mysqldb')[_0x2ad6('0xa')];var logger=require('../../config/logger')(_0x2ad6('0xb'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x2ad6('0xc')][0x3];var PATH=process[_0x2ad6('0xc')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x2ad6('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1557a6,_0x100771){var _0xc391d3={'status':_0x1557a6};var _0x30f70e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x100771){_0xc391d3[_0x2ad6('0xe')]=_0x100771;}return db[_0x2ad6('0xf')][_0x2ad6('0x10')](_0xc391d3,_0x30f70e);}function getHeaders(_0x1ea6bf){return _[_0x2ad6('0x11')](_0x1ea6bf,function(_0x1d1983){return{'text':_0x1d1983,'style':_0x2ad6('0x12')};});}function getRows(_0x1535f3,_0x55d0ff){return _[_0x2ad6('0x11')](_0x55d0ff,function(_0x1f566b){return _(_0x1f566b)['pick'](_0x1535f3)[_0x2ad6('0x11')](function(_0x455db1){return _0x455db1?_[_0x2ad6('0x13')](_0x455db1):'';})[_0x2ad6('0x14')]();});}function createTable(_0x3a95f2,_0x3b4019){var _0x3b9dee={'widths':_[_0x2ad6('0x15')](Array(_0x3a95f2[_0x2ad6('0x16')]),0x91),'heights':function(_0x353c0b){return _0x353c0b===0x0?_0x2ad6('0x17'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xf94106=getHeaders(_0x3a95f2);_0x3b9dee[_0x2ad6('0x18')]['push'](_0xf94106);var _0x135ddf=getRows(_0x3a95f2,_0x3b4019);_0x3b9dee['body']=_0x3b9dee[_0x2ad6('0x18')][_0x2ad6('0x19')](_0x135ddf);return _0x3b9dee;}function createTables(_0x1ab53a){var _0x19ceb2=[];var _0x1b9808=_[_0x2ad6('0x1a')](Object[_0x2ad6('0x1b')](_0x1ab53a[0x0]),0x5);_0x1b9808[_0x2ad6('0x1c')](function(_0x91d978){_0x19ceb2['push'](createTable(_0x91d978,_0x1ab53a));});return _0x19ceb2;}function getPDFDocDefinition(_0x53ecb0){var _0x3eb086=util['format'](_0x2ad6('0x1d'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT['startDate'])[_0x2ad6('0x1e')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x2860a6=[];for(var _0x90b1b3=0x0;_0x90b1b3<_0x53ecb0[_0x2ad6('0x16')];_0x90b1b3++){var _0x18ddf0=[];if(_0x90b1b3===0x0){_0x18ddf0[_0x2ad6('0x1f')]({'text':_0x3eb086,'style':_0x2ad6('0x20')});}var _0x51615e={'table':_0x53ecb0[_0x90b1b3]};if(_0x90b1b3>0x0){_0x51615e[_0x2ad6('0x21')]='before';_0x51615e[_0x2ad6('0x22')]=[0x0,0x46,0x0,0x0];}_0x18ddf0[_0x2ad6('0x1f')](_0x51615e);_0x2860a6[_0x2ad6('0x1f')](_0x18ddf0);}return{'pageSize':'A4','pageOrientation':_0x2ad6('0x23'),'content':_0x2860a6,'footer':function(_0x54f6cf,_0x5e1779){return{'text':_0x54f6cf[_0x2ad6('0x13')]()+_0x2ad6('0x24')+_0x5e1779,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x249742){var _0x7be2dc=0x1388;var _0x5882dd;if(!_0x249742[0x0][_0x2ad6('0x25')]){return analyticExtractedReport(_0x2ad6('0x26'));}return db[_0x2ad6('0x27')][_0x2ad6('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2ad6('0x29'),_0x2ad6('0x2a')]})[_0x2ad6('0x2b')](function(_0x32be0f){if(_0x32be0f){_0x5882dd=_0x32be0f;_0x7be2dc=_0x5882dd[_0x2ad6('0x2a')]||0x3e8;}})[_0x2ad6('0x2b')](function(){var _0x3facb2=[];var _0x3cbbd8=0x0;if(_0x5882dd[_0x2ad6('0x29')]){if(_0x249742&&_0x249742['length']){var _0x21abe3=_[_0x2ad6('0x2c')](_0x249742[0x0][_0x2ad6('0x25')]/_0x7be2dc);var _0x150856=Number[_0x2ad6('0x2d')](_0x249742[0x0][_0x2ad6('0x25')]/_0x7be2dc)?_0x249742[0x0][_0x2ad6('0x25')]%_0x7be2dc:0x0;_0x21abe3[_0x2ad6('0x1c')](function(_0x2e806c){if(_0x2e806c>0x0){_0x3cbbd8+=_0x7be2dc;}_0x3facb2['push'](dbH[_0x2ad6('0x2e')]['query'](util[_0x2ad6('0x1e')](_0x2ad6('0x2f'),QUERY,_0x7be2dc,_0x3cbbd8),{'type':dbH[_0x2ad6('0x2e')]['QueryTypes'][_0x2ad6('0x30')]}));});if(_0x150856>0x0){_0x3cbbd8+=_0x7be2dc;_0x3facb2[_0x2ad6('0x1f')](dbH['sequelize'][_0x2ad6('0x31')](util[_0x2ad6('0x1e')](_0x2ad6('0x2f'),QUERY,_0x150856,_0x3cbbd8),{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]}));}}}else{_0x3facb2[_0x2ad6('0x1f')](dbH[_0x2ad6('0x2e')][_0x2ad6('0x31')](QUERY,{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]}));}var _0x2dd537=path['dirname'](PATH);var _0x2875d6=path[_0x2ad6('0x33')](PATH,_0x2ad6('0x34'));var _0x5abe44=_0x5882dd[_0x2ad6('0x29')]&&_0x3facb2[_0x2ad6('0x16')]>0x1;var _0x3e798e=[];if(!fs['existsSync'](path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6))&&_0x5abe44){fs[_0x2ad6('0x36')](path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6));}return BPromise[_0x2ad6('0x37')](_0x3facb2,function(_0x5941ce){_0x3e798e[_0x2ad6('0x1f')](_0x5941ce);})['then'](function(){var _0xd87ce0=[];for(var _0x283348=0x0;_0x283348<_0x3e798e['length'];_0x283348+=0x1){var _0xbdd74a=_0x3e798e[_0x283348];var _0x1a98b4=createTables(_[_0x2ad6('0x38')](_0xbdd74a));var _0x2cedec;var _0xef6131=getPDFDocDefinition(_0x1a98b4);var _0x87809f=getPDFPrinter();var _0x23a7fb=_0x87809f['createPdfKitDocument'](_0xef6131);if(_0x5abe44){_0x2cedec=path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6,util[_0x2ad6('0x1e')](_0x2ad6('0x39'),_0x2875d6,_0x283348,_0x2ad6('0x3a')));}else{_0x2cedec=path[_0x2ad6('0x35')](_0x2dd537,util[_0x2ad6('0x1e')](_0x2ad6('0x3b'),_0x2875d6,_0x2ad6('0x3a')));}_0xd87ce0[_0x2ad6('0x1f')](writePDFDocument(_0x23a7fb,_0x2cedec));}return Promise[_0x2ad6('0x3c')](_0xd87ce0);})[_0x2ad6('0x2b')](function(){if(_0x5abe44){return new Promise(function(_0x2c9299){zipdir(path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6),{'saveTo':path[_0x2ad6('0x35')](_0x2dd537,util[_0x2ad6('0x1e')]('%s.%s',_0x2875d6,'zip'))},function(){rimraf(path[_0x2ad6('0x35')](_0x2dd537,_0x2875d6),function(){});_0x2c9299(_0x2ad6('0x3d'));});});}})[_0x2ad6('0x2b')](function(){if(!_0x5abe44)return;rimraf(path['join'](_0x2dd537,_0x2875d6),function(){});})[_0x2ad6('0x2b')](function(){logger['info'](util[_0x2ad6('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x2ad6('0x3e')));return analyticExtractedReport(_0x2ad6('0x3f'),_0x5abe44?util['format'](_0x2ad6('0x3b'),_0x2875d6,_0x5abe44?_0x2ad6('0x40'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x2ad6('0x41')](util['format'](_0x2ad6('0x42'),EXTRACTED_REPORT_ID,_0x2ad6('0x3e')));return db[_0x2ad6('0xf')][_0x2ad6('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2ad6('0x2b')](function(_0x52d7a2){EXTRACTED_REPORT=_0x52d7a2;return dbH['sequelize'][_0x2ad6('0x31')](util[_0x2ad6('0x1e')](_0x2ad6('0x44'),QUERY),{'type':dbH[_0x2ad6('0x2e')][_0x2ad6('0x32')][_0x2ad6('0x30')]});})[_0x2ad6('0x2b')](extractReport)[_0x2ad6('0x45')](function(_0x44d7f9){logger['info'](util[_0x2ad6('0x1e')](_0x2ad6('0x46'),EXTRACTED_REPORT_ID,_0x2ad6('0x3e')),util['inspect'](_0x44d7f9,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x2ad6('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x94d6a5=new PdfPrinter({'Arial':{'normal':__dirname+_0x2ad6('0x48'),'bold':__dirname+_0x2ad6('0x49'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x2ad6('0x4a')}});return _0x94d6a5;}function getPDFDocDefinitionFromHTML(_0x2b5fbf,_0x4b9da0){var _0x2ccf25=util[_0x2ad6('0x1e')]('%s\x20#%d',_0x4b9da0[_0x2ad6('0x4b')],_0x4b9da0[_0x2ad6('0x4c')]);var _0x433d27=moment()[_0x2ad6('0x1e')](_0x2ad6('0x4d'))['toString']();var _0x37abf0=htmlToPdfmake(_0x2b5fbf,{'window':window,'tableAutoSize':!![]});return{'content':[_0x37abf0],'defaultStyle':{'font':_0x2ad6('0x4e')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x2ad6('0x4f'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2ad6('0x4f'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x2ad6('0x50'),'style':_0x2ad6('0x20')}];},'footer':function(_0x1837ce,_0x5a54d6){return[{'text':util['format'](_0x2ad6('0x51'),_0x2ccf25,_0x1837ce,_0x5a54d6,_0x433d27),'style':_0x2ad6('0x52')}];}};}function writePDFDocument(_0x1f110f,_0x225f7f){return new Promise(function(_0x375d9f,_0x357853){var _0xb67da7=_0x1f110f['pipe'](fs[_0x2ad6('0x53')](_0x225f7f));_0xb67da7['on'](_0x2ad6('0x54'),function(){_0x375d9f(_0x2ad6('0x54'));});_0xb67da7['on'](_0x2ad6('0x55'),function(_0x1c6233){_0x357853(_0x1c6233);});_0x1f110f['end']();});}exports[_0x2ad6('0x56')]=function(_0x1ddbe6,_0xb32be9){var _0x213a34=getPDFPrinter();var _0x5749ac=getPDFDocDefinitionFromHTML(_0x1ddbe6,_0xb32be9);var _0x367642=_0x213a34[_0x2ad6('0x57')](_0x5749ac);return writePDFDocument(_0x367642,_0xb32be9['path'])[_0x2ad6('0x45')](function(_0x334427){throw _0x334427;});};
\ No newline at end of file
+var _0x9e7c=['header','pageBreak','before','\x20/\x20','footer','Arial','right','Setting','find','split','then','range','num','isInteger','sequelize','query','QueryTypes','SELECT','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.pdf','existsSync','join','each','flatten','createPdfKitDocument','%s.%s','pdf','zip','zip\x20finished','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','AnalyticExtractedReport','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','inspect','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','map','pick','toString','value','fill','length','auto','body','push','concat','keys','forEach','name','format','endDate'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x9e7c,0x8e));var _0xc9e7=function(_0x4b5dcc,_0xae5998){_0x4b5dcc=_0x4b5dcc-0x0;var _0x503b2a=_0x9e7c[_0x4b5dcc];return _0x503b2a;};'use strict';var _=require(_0xc9e7('0x0'));var fs=require('fs');var util=require(_0xc9e7('0x1'));var path=require(_0xc9e7('0x2'));var moment=require('moment');var htmlToPdfmake=require(_0xc9e7('0x3'));var PdfPrinter=require(_0xc9e7('0x4'));var zipdir=require(_0xc9e7('0x5'));var rimraf=require('rimraf');var JSDOM=require(_0xc9e7('0x6'))[_0xc9e7('0x7')];var window=new JSDOM('')[_0xc9e7('0x8')];var BPromise=require(_0xc9e7('0x9'));var db=require(_0xc9e7('0xa'))['db'];var dbH=require(_0xc9e7('0xa'))['dbH'];var logger=require(_0xc9e7('0xb'))(_0xc9e7('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0xc9e7('0xd')][0x2]);var QUERY=process[_0xc9e7('0xd')][0x3];var PATH=process[_0xc9e7('0xd')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xc9e7('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x15dd16,_0x37b27a){var _0x4e0f1e={'status':_0x15dd16};var _0x513a5f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x37b27a){_0x4e0f1e['savename']=_0x37b27a;}return db['AnalyticExtractedReport']['update'](_0x4e0f1e,_0x513a5f);}function getHeaders(_0x96088f){return _[_0xc9e7('0xf')](_0x96088f,function(_0x21f08b){return{'text':_0x21f08b,'style':'tableHeader'};});}function getRows(_0x748b56,_0x40bf2f){return _['map'](_0x40bf2f,function(_0x2c663f){return _(_0x2c663f)[_0xc9e7('0x10')](_0x748b56)[_0xc9e7('0xf')](function(_0x5a54d7){return _0x5a54d7?_[_0xc9e7('0x11')](_0x5a54d7):'';})[_0xc9e7('0x12')]();});}function createTable(_0x47d90e,_0xc10551){var _0x550089={'widths':_[_0xc9e7('0x13')](Array(_0x47d90e[_0xc9e7('0x14')]),0x91),'heights':function(_0x51f68f){return _0x51f68f===0x0?_0xc9e7('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1cb1a5=getHeaders(_0x47d90e);_0x550089[_0xc9e7('0x16')][_0xc9e7('0x17')](_0x1cb1a5);var _0x40bf45=getRows(_0x47d90e,_0xc10551);_0x550089[_0xc9e7('0x16')]=_0x550089[_0xc9e7('0x16')][_0xc9e7('0x18')](_0x40bf45);return _0x550089;}function createTables(_0x4683ce){var _0x44a614=[];var _0x2cf17d=_['chunk'](Object[_0xc9e7('0x19')](_0x4683ce[0x0]),0x5);_0x2cf17d[_0xc9e7('0x1a')](function(_0x29a319){_0x44a614['push'](createTable(_0x29a319,_0x4683ce));});return _0x44a614;}function getPDFDocDefinition(_0x321275){var _0x2d4eca=util['format']('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xc9e7('0x1b')],moment(EXTRACTED_REPORT['startDate'])[_0xc9e7('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xc9e7('0x1d')])[_0xc9e7('0x1c')](FORMAT));var _0x3e8556=[];for(var _0x28aa6d=0x0;_0x28aa6d<_0x321275[_0xc9e7('0x14')];_0x28aa6d++){var _0x44a5e1=[];if(_0x28aa6d===0x0){_0x44a5e1[_0xc9e7('0x17')]({'text':_0x2d4eca,'style':_0xc9e7('0x1e')});}var _0x5d7b9f={'table':_0x321275[_0x28aa6d]};if(_0x28aa6d>0x0){_0x5d7b9f[_0xc9e7('0x1f')]=_0xc9e7('0x20');_0x5d7b9f['margin']=[0x0,0x46,0x0,0x0];}_0x44a5e1['push'](_0x5d7b9f);_0x3e8556[_0xc9e7('0x17')](_0x44a5e1);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x3e8556,'footer':function(_0x2f4f6a,_0x306790){return{'text':_0x2f4f6a[_0xc9e7('0x11')]()+_0xc9e7('0x21')+_0x306790,'style':_0xc9e7('0x22')};},'defaultStyle':{'font':_0xc9e7('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0xc9e7('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0xf4b6f3){var _0x134b56=0x1388;var _0x527ad6;if(!_0xf4b6f3[0x0]['num']){return analyticExtractedReport('Empty');}return db[_0xc9e7('0x25')][_0xc9e7('0x26')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc9e7('0x27'),'splitSizePdf']})[_0xc9e7('0x28')](function(_0x3056cc){if(_0x3056cc){_0x527ad6=_0x3056cc;_0x134b56=_0x527ad6['splitSizePdf']||0x3e8;}})[_0xc9e7('0x28')](function(){var _0xeae7d6=[];var _0x444f74=0x0;if(_0x527ad6['split']){if(_0xf4b6f3&&_0xf4b6f3[_0xc9e7('0x14')]){var _0x114315=_[_0xc9e7('0x29')](_0xf4b6f3[0x0][_0xc9e7('0x2a')]/_0x134b56);var _0x538225=Number[_0xc9e7('0x2b')](_0xf4b6f3[0x0][_0xc9e7('0x2a')]/_0x134b56)?_0xf4b6f3[0x0]['num']%_0x134b56:0x0;_0x114315[_0xc9e7('0x1a')](function(_0x43b519){if(_0x43b519>0x0){_0x444f74+=_0x134b56;}_0xeae7d6[_0xc9e7('0x17')](dbH[_0xc9e7('0x2c')][_0xc9e7('0x2d')](util[_0xc9e7('0x1c')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x134b56,_0x444f74),{'type':dbH[_0xc9e7('0x2c')][_0xc9e7('0x2e')][_0xc9e7('0x2f')]}));});if(_0x538225>0x0){_0x444f74+=_0x134b56;_0xeae7d6[_0xc9e7('0x17')](dbH[_0xc9e7('0x2c')]['query'](util['format'](_0xc9e7('0x30'),QUERY,_0x538225,_0x444f74),{'type':dbH[_0xc9e7('0x2c')]['QueryTypes']['SELECT']}));}}}else{_0xeae7d6[_0xc9e7('0x17')](dbH[_0xc9e7('0x2c')][_0xc9e7('0x2d')](QUERY,{'type':dbH[_0xc9e7('0x2c')][_0xc9e7('0x2e')][_0xc9e7('0x2f')]}));}var _0x43f5bb=path[_0xc9e7('0x31')](PATH);var _0x4cc674=path[_0xc9e7('0x32')](PATH,_0xc9e7('0x33'));var _0x376702=_0x527ad6[_0xc9e7('0x27')]&&_0xeae7d6['length']>0x1;var _0x60b6b0=[];if(!fs[_0xc9e7('0x34')](path['join'](_0x43f5bb,_0x4cc674))&&_0x376702){fs['mkdirSync'](path[_0xc9e7('0x35')](_0x43f5bb,_0x4cc674));}return BPromise[_0xc9e7('0x36')](_0xeae7d6,function(_0x1b9b00){_0x60b6b0[_0xc9e7('0x17')](_0x1b9b00);})[_0xc9e7('0x28')](function(){var _0x2749c0=[];for(var _0x383dc8=0x0;_0x383dc8<_0x60b6b0[_0xc9e7('0x14')];_0x383dc8+=0x1){var _0x357e2d=_0x60b6b0[_0x383dc8];var _0x72ddd2=createTables(_[_0xc9e7('0x37')](_0x357e2d));var _0x5c1c50;var _0x133d68=getPDFDocDefinition(_0x72ddd2);var _0x683306=getPDFPrinter();var _0x5b2840=_0x683306[_0xc9e7('0x38')](_0x133d68);if(_0x376702){_0x5c1c50=path[_0xc9e7('0x35')](_0x43f5bb,_0x4cc674,util[_0xc9e7('0x1c')]('%s%d.%s',_0x4cc674,_0x383dc8,'pdf'));}else{_0x5c1c50=path[_0xc9e7('0x35')](_0x43f5bb,util[_0xc9e7('0x1c')](_0xc9e7('0x39'),_0x4cc674,_0xc9e7('0x3a')));}_0x2749c0[_0xc9e7('0x17')](writePDFDocument(_0x5b2840,_0x5c1c50));}return Promise['all'](_0x2749c0);})[_0xc9e7('0x28')](function(){if(_0x376702){return new Promise(function(_0x421675){zipdir(path['join'](_0x43f5bb,_0x4cc674),{'saveTo':path[_0xc9e7('0x35')](_0x43f5bb,util[_0xc9e7('0x1c')]('%s.%s',_0x4cc674,_0xc9e7('0x3b')))},function(){rimraf(path[_0xc9e7('0x35')](_0x43f5bb,_0x4cc674),function(){});_0x421675(_0xc9e7('0x3c'));});});}})[_0xc9e7('0x28')](function(){if(!_0x376702)return;rimraf(path['join'](_0x43f5bb,_0x4cc674),function(){});})[_0xc9e7('0x28')](function(){logger[_0xc9e7('0x3d')](util[_0xc9e7('0x1c')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xc9e7('0x3e')));return analyticExtractedReport(_0xc9e7('0x3f'),_0x376702?util[_0xc9e7('0x1c')](_0xc9e7('0x39'),_0x4cc674,_0x376702?_0xc9e7('0x3b'):_0xc9e7('0x3a')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0xc9e7('0x1c')](_0xc9e7('0x40'),EXTRACTED_REPORT_ID,_0xc9e7('0x3e')));return db[_0xc9e7('0x41')][_0xc9e7('0x42')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc9e7('0x28')](function(_0x53db4a){EXTRACTED_REPORT=_0x53db4a;return dbH[_0xc9e7('0x2c')]['query'](util['format'](_0xc9e7('0x43'),QUERY),{'type':dbH[_0xc9e7('0x2c')]['QueryTypes'][_0xc9e7('0x2f')]});})[_0xc9e7('0x28')](extractReport)[_0xc9e7('0x44')](function(_0x159237){logger[_0xc9e7('0x3d')](util[_0xc9e7('0x1c')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0xc9e7('0x45')](_0x159237,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xc9e7('0x46')](function(){process[_0xc9e7('0x47')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x66ae27=new PdfPrinter({'Arial':{'normal':__dirname+_0xc9e7('0x48'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xc9e7('0x49')}});return _0x66ae27;}function getPDFDocDefinitionFromHTML(_0x426723,_0x1d0892){var _0x3f9302=util[_0xc9e7('0x1c')](_0xc9e7('0x4a'),_0x1d0892[_0xc9e7('0x4b')],_0x1d0892[_0xc9e7('0x4c')]);var _0x24371d=moment()[_0xc9e7('0x1c')](_0xc9e7('0x4d'))['toString']();var _0x522dbd=htmlToPdfmake(_0x426723,{'window':window,'tableAutoSize':!![]});return{'content':[_0x522dbd],'defaultStyle':{'font':_0xc9e7('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xc9e7('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xc9e7('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xc9e7('0x4e')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xc9e7('0x1e')}];},'footer':function(_0x34187f,_0x42d8f4){return[{'text':util[_0xc9e7('0x1c')](_0xc9e7('0x4f'),_0x3f9302,_0x34187f,_0x42d8f4,_0x24371d),'style':_0xc9e7('0x22')}];}};}function writePDFDocument(_0x27126c,_0x56b006){return new Promise(function(_0xd274fa,_0x229c67){var _0x34287f=_0x27126c[_0xc9e7('0x50')](fs[_0xc9e7('0x51')](_0x56b006));_0x34287f['on'](_0xc9e7('0x52'),function(){_0xd274fa(_0xc9e7('0x52'));});_0x34287f['on'](_0xc9e7('0x53'),function(_0x1c44e9){_0x229c67(_0x1c44e9);});_0x27126c[_0xc9e7('0x54')]();});}exports[_0xc9e7('0x55')]=function(_0x374f36,_0x3479e7){var _0x5b88c7=getPDFPrinter();var _0x48f990=getPDFDocDefinitionFromHTML(_0x374f36,_0x3479e7);var _0x136602=_0x5b88c7[_0xc9e7('0x38')](_0x48f990);return writePDFDocument(_0x136602,_0x3479e7[_0xc9e7('0x2')])['catch'](function(_0x532b5c){throw _0x532b5c;});};
\ No newline at end of file
index 8e118b5..d174873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bd3=['sequelize','query','SELECT','num','Empty','length','range','isInteger','forEach','push','QueryTypes','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','mkdirSync','join','each','%s.%s','xlsx','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x3bd3,0x110));var _0x33bd=function(_0x2dd7fc,_0x42c03c){_0x2dd7fc=_0x2dd7fc-0x0;var _0x1eac5d=_0x3bd3[_0x2dd7fc];return _0x1eac5d;};'use strict';var util=require(_0x33bd('0x0'));var path=require(_0x33bd('0x1'));var _=require(_0x33bd('0x2'));var fs=require('fs');var json2xls=require(_0x33bd('0x3'));var BPromise=require(_0x33bd('0x4'));var zipdir=require(_0x33bd('0x5'));var rimraf=require(_0x33bd('0x6'));var db=require(_0x33bd('0x7'))['db'];var dbH=require(_0x33bd('0x7'))['dbH'];var logger=require(_0x33bd('0x8'))(_0x33bd('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x33bd('0xa')][0x2]);var QUERY=process[_0x33bd('0xa')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x483d46,_0x43ca66){var _0x35d9dc={'status':_0x483d46};var _0x344db6={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x43ca66){_0x35d9dc[_0x33bd('0xb')]=_0x43ca66;}return db[_0x33bd('0xc')][_0x33bd('0xd')](_0x35d9dc,_0x344db6);}function main(){var _0x1921ee=0x1388;var _0x52f5e6;logger[_0x33bd('0xe')](util[_0x33bd('0xf')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x33bd('0x10')));return db[_0x33bd('0x11')][_0x33bd('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x33bd('0x13'),_0x33bd('0x14')]})[_0x33bd('0x15')](function(_0x46cc82){if(_0x46cc82){_0x52f5e6=_0x46cc82;_0x1921ee=_0x52f5e6[_0x33bd('0x14')]||0x1388;}})[_0x33bd('0x15')](function(){return dbH[_0x33bd('0x16')][_0x33bd('0x17')](util[_0x33bd('0xf')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x33bd('0x16')]['QueryTypes'][_0x33bd('0x18')]});})[_0x33bd('0x15')](function(_0x5c5573){if(!_0x5c5573[0x0][_0x33bd('0x19')]){return analyticExtractedReport(_0x33bd('0x1a'));}var _0x2654c6=[];var _0xf70c61=0x0;if(_0x52f5e6[_0x33bd('0x13')]){if(_0x5c5573&&_0x5c5573[_0x33bd('0x1b')]){var _0x129792=_[_0x33bd('0x1c')](_0x5c5573[0x0]['num']/_0x1921ee);var _0x1903cd=Number[_0x33bd('0x1d')](_0x5c5573[0x0]['num']/_0x1921ee)?_0x5c5573[0x0][_0x33bd('0x19')]%_0x1921ee:0x0;_0x129792[_0x33bd('0x1e')](function(_0x3dcaa1){if(_0x3dcaa1>0x0){_0xf70c61+=_0x1921ee;}_0x2654c6[_0x33bd('0x1f')](dbH[_0x33bd('0x16')]['query'](util[_0x33bd('0xf')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x1921ee,_0xf70c61),{'type':dbH[_0x33bd('0x16')][_0x33bd('0x20')][_0x33bd('0x18')]}));});if(_0x1903cd>0x0){_0xf70c61+=_0x1921ee;_0x2654c6['push'](dbH[_0x33bd('0x16')][_0x33bd('0x17')](util[_0x33bd('0xf')](_0x33bd('0x21'),QUERY,_0x1903cd,_0xf70c61),{'type':dbH['sequelize']['QueryTypes'][_0x33bd('0x18')]}));}}}else{_0x2654c6[_0x33bd('0x1f')](dbH[_0x33bd('0x16')][_0x33bd('0x17')](QUERY,{'type':dbH[_0x33bd('0x16')][_0x33bd('0x20')][_0x33bd('0x18')]}));}var _0x47aae4=path[_0x33bd('0x22')](PATH);var _0x11d5a6=path[_0x33bd('0x23')](PATH,'.xlsx');var _0x5b75dc=_0x52f5e6[_0x33bd('0x13')]&&_0x2654c6[_0x33bd('0x1b')]>0x1;var _0x477aa5=[];if(!fs[_0x33bd('0x24')](path['join'](_0x47aae4,_0x11d5a6))&&_0x5b75dc){fs[_0x33bd('0x25')](path[_0x33bd('0x26')](_0x47aae4,_0x11d5a6));}return BPromise[_0x33bd('0x27')](_0x2654c6,function(_0x25f609){_0x477aa5['push'](_0x25f609);})[_0x33bd('0x15')](function(){for(var _0x18920c=0x0;_0x18920c<_0x477aa5[_0x33bd('0x1b')];_0x18920c+=0x1){var _0x296795;var _0x10d801=_0x477aa5[_0x18920c];if(_0x5b75dc){_0x296795=path['join'](_0x47aae4,_0x11d5a6,util[_0x33bd('0xf')]('%s%d.%s',_0x11d5a6,_0x18920c,'xlsx'));}else{_0x296795=path[_0x33bd('0x26')](_0x47aae4,util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x33bd('0x29')));}fs['writeFileSync'](_0x296795,json2xls(_0x10d801),'binary');}})['then'](function(){if(_0x5b75dc){return new Promise(function(_0x135d8d){zipdir(path['join'](_0x47aae4,_0x11d5a6),{'saveTo':path[_0x33bd('0x26')](_0x47aae4,util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x33bd('0x2a')))},function(_0x79326e,_0x593b78){rimraf(path[_0x33bd('0x26')](_0x47aae4,_0x11d5a6),function(){});_0x135d8d(_0x33bd('0x2b'));});});}})[_0x33bd('0x15')](function(){logger[_0x33bd('0xe')](util['format'](_0x33bd('0x2c'),EXTRACTED_REPORT_ID,_0x33bd('0x10')));return analyticExtractedReport(_0x33bd('0x2d'),_0x5b75dc?util[_0x33bd('0xf')](_0x33bd('0x28'),_0x11d5a6,_0x5b75dc?_0x33bd('0x2a'):_0x33bd('0x29')):null);});})[_0x33bd('0x2e')](function(_0xb22aea){logger[_0x33bd('0xe')](util[_0x33bd('0xf')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x33bd('0x10')),util['inspect'](_0xb22aea,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x33bd('0x2f'));})['finally'](function(){process[_0x33bd('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xa469=['writeFileSync','binary','%s.%s','zip\x20finished','Completed','zip','catch','inspect','finally','exit','util','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','argv','savename','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','join','each','%s%d.%s','xlsx'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xa469,0x9d));var _0x9a46=function(_0xfc42a2,_0x3bc9cd){_0xfc42a2=_0xfc42a2-0x0;var _0x2d66f7=_0xa469[_0xfc42a2];return _0x2d66f7;};'use strict';var util=require(_0x9a46('0x0'));var path=require('path');var _=require('lodash');var fs=require('fs');var json2xls=require(_0x9a46('0x1'));var BPromise=require(_0x9a46('0x2'));var zipdir=require(_0x9a46('0x3'));var rimraf=require(_0x9a46('0x4'));var db=require(_0x9a46('0x5'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x9a46('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x9a46('0x7')][0x2]);var QUERY=process[_0x9a46('0x7')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x42f713,_0x1bab15){var _0x9fb0af={'status':_0x42f713};var _0x412968={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1bab15){_0x9fb0af[_0x9a46('0x8')]=_0x1bab15;}return db[_0x9a46('0x9')]['update'](_0x9fb0af,_0x412968);}function main(){var _0x14dde2=0x1388;var _0xec04b2;logger[_0x9a46('0xa')](util['format'](_0x9a46('0xb'),EXTRACTED_REPORT_ID,_0x9a46('0xc')));return db[_0x9a46('0xd')][_0x9a46('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9a46('0xf'),'splitSizeXlsx']})['then'](function(_0x434105){if(_0x434105){_0xec04b2=_0x434105;_0x14dde2=_0xec04b2[_0x9a46('0x10')]||0x1388;}})[_0x9a46('0x11')](function(){return dbH['sequelize'][_0x9a46('0x12')](util[_0x9a46('0x13')](_0x9a46('0x14'),QUERY),{'type':dbH[_0x9a46('0x15')][_0x9a46('0x16')][_0x9a46('0x17')]});})['then'](function(_0x504b70){if(!_0x504b70[0x0][_0x9a46('0x18')]){return analyticExtractedReport(_0x9a46('0x19'));}var _0x5dbe91=[];var _0x1f2c7e=0x0;if(_0xec04b2[_0x9a46('0xf')]){if(_0x504b70&&_0x504b70[_0x9a46('0x1a')]){var _0x165f72=_[_0x9a46('0x1b')](_0x504b70[0x0][_0x9a46('0x18')]/_0x14dde2);var _0x1cdcec=Number[_0x9a46('0x1c')](_0x504b70[0x0][_0x9a46('0x18')]/_0x14dde2)?_0x504b70[0x0][_0x9a46('0x18')]%_0x14dde2:0x0;_0x165f72[_0x9a46('0x1d')](function(_0x1174ef){if(_0x1174ef>0x0){_0x1f2c7e+=_0x14dde2;}_0x5dbe91[_0x9a46('0x1e')](dbH[_0x9a46('0x15')][_0x9a46('0x12')](util['format'](_0x9a46('0x1f'),QUERY,_0x14dde2,_0x1f2c7e),{'type':dbH['sequelize'][_0x9a46('0x16')]['SELECT']}));});if(_0x1cdcec>0x0){_0x1f2c7e+=_0x14dde2;_0x5dbe91[_0x9a46('0x1e')](dbH[_0x9a46('0x15')]['query'](util[_0x9a46('0x13')](_0x9a46('0x1f'),QUERY,_0x1cdcec,_0x1f2c7e),{'type':dbH['sequelize'][_0x9a46('0x16')][_0x9a46('0x17')]}));}}}else{_0x5dbe91[_0x9a46('0x1e')](dbH[_0x9a46('0x15')][_0x9a46('0x12')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x9a46('0x17')]}));}var _0x322e58=path[_0x9a46('0x20')](PATH);var _0x142370=path[_0x9a46('0x21')](PATH,'.xlsx');var _0x5d29d3=_0xec04b2[_0x9a46('0xf')]&&_0x5dbe91['length']>0x1;var _0x99776=[];if(!fs[_0x9a46('0x22')](path['join'](_0x322e58,_0x142370))&&_0x5d29d3){fs['mkdirSync'](path[_0x9a46('0x23')](_0x322e58,_0x142370));}return BPromise[_0x9a46('0x24')](_0x5dbe91,function(_0x3c1b1f){_0x99776[_0x9a46('0x1e')](_0x3c1b1f);})[_0x9a46('0x11')](function(){for(var _0x31c1fb=0x0;_0x31c1fb<_0x99776[_0x9a46('0x1a')];_0x31c1fb+=0x1){var _0x5db8a3;var _0x4cee95=_0x99776[_0x31c1fb];if(_0x5d29d3){_0x5db8a3=path['join'](_0x322e58,_0x142370,util[_0x9a46('0x13')](_0x9a46('0x25'),_0x142370,_0x31c1fb,_0x9a46('0x26')));}else{_0x5db8a3=path['join'](_0x322e58,util[_0x9a46('0x13')]('%s.%s',_0x142370,_0x9a46('0x26')));}fs[_0x9a46('0x27')](_0x5db8a3,json2xls(_0x4cee95),_0x9a46('0x28'));}})[_0x9a46('0x11')](function(){if(_0x5d29d3){return new Promise(function(_0x284845){zipdir(path[_0x9a46('0x23')](_0x322e58,_0x142370),{'saveTo':path['join'](_0x322e58,util[_0x9a46('0x13')](_0x9a46('0x29'),_0x142370,'zip'))},function(_0x1b4052,_0x476ec6){rimraf(path[_0x9a46('0x23')](_0x322e58,_0x142370),function(){});_0x284845(_0x9a46('0x2a'));});});}})[_0x9a46('0x11')](function(){logger[_0x9a46('0xa')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x9a46('0x2b'),_0x5d29d3?util[_0x9a46('0x13')](_0x9a46('0x29'),_0x142370,_0x5d29d3?_0x9a46('0x2c'):_0x9a46('0x26')):null);});})[_0x9a46('0x2d')](function(_0x1ed6b7){logger['info'](util[_0x9a46('0x13')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x9a46('0xc')),util[_0x9a46('0x2e')](_0x1ed6b7,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x9a46('0x2f')](function(){process[_0x9a46('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index f21a45a..44a296e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa17f=['*,*,*,*','tag','CDR(tag)=','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','transaction','destroy','bulkCreate','catch','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','hasOwnProperty','extension','extensions','Set','format','CDR(type)=%s','context','VoiceExtensionId','type','inbound','push','CDR(routeid)=','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','priority','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','length','toLowerCase','createdAt','interval'];(function(_0x30bfd7,_0x35de19){var _0xb4734=function(_0x288afe){while(--_0x288afe){_0x30bfd7['push'](_0x30bfd7['shift']());}};_0xb4734(++_0x35de19);}(_0xa17f,0xa1));var _0xfa17=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xa17f[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xfa17('0x0'));var util=require(_0xfa17('0x1'));function rewrite(_0x41c7ed,_0x2f3624){var _0x4c5b24=this;return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x3')][_0xfa17('0x4')]({'raw':!![]})[_0xfa17('0x5')](function(_0x2b1ff8){_0x4c5b24[_0xfa17('0x6')]=_0x2b1ff8;return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x4')]({'where':{'IntervalId':_0x2f3624[_0xfa17('0x8')]},'raw':!![]});})[_0xfa17('0x5')](function(_0x2fb54a){return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x4')]({'where':{'exten':{'$in':_['uniq'](_[_0xfa17('0x9')](_0x2fb54a,_0xfa17('0xa')))}},'order':[{'raw':_0xfa17('0xb')}],'raw':!![]});})[_0xfa17('0x5')](function(_0x5ab543){var _0x5bf2d1=_[_0xfa17('0xc')](_0x5ab543,{'priority':'1'});var _0xb6b0e0=_[_0xfa17('0xc')](_0x5ab543,{'isApp':0x1});var _0x31f80e=_['groupBy'](_0xb6b0e0,_0xfa17('0xa'));var _0x9a7873=['queue','playback'];var _0x1ce810=[];var _0x1cb0d7=[];for(var _0x7cc6db in _0x31f80e){if(_0x31f80e[_0xfa17('0xd')](_0x7cc6db)){_0x4c5b24['priority']=0x2;_0x4c5b24['extensions']=[];_0x4c5b24[_0xfa17('0xe')]=_['find'](_0x5bf2d1,{'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')]});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':util[_0xfa17('0x11')](_0xfa17('0x12'),_0x31f80e[_0x7cc6db][0x0]['type']),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')]===_0xfa17('0x16')){_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x18')+_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}else if(_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')]==='outbound'){if(_0x4c5b24['extension']){_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x19')+(_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]?_0xfa17('0x1b')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]+'}':_0xfa17('0x1c')),'context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x18')+_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId'],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0]['exten'],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});var _0x1d737d=_0x4c5b24[_0xfa17('0x1d')]++;_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x1f')+(_0x1d737d+0x2)+_0xfa17('0x20')+(_0x1d737d+0x1)+')','context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x1d737d,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x4c5b24[_0xfa17('0xe')]){_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':'Set','appdata':_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]?_0xfa17('0x21')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x1a')]+'}':_0xfa17('0x22'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':'outboundrouteid='+_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});if(_0x4c5b24['extension']&&_0x4c5b24[_0xfa17('0xe')][_0xfa17('0xd')](_0xfa17('0x23'))&&_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x23')]!==_0xfa17('0x24')){_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x25'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x26')+_0x4c5b24[_0xfa17('0xe')][_0xfa17('0x23')]||_0xfa17('0x27'),'context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0]['exten'],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});}}_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0]['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x28'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});_0x4c5b24[_0xfa17('0xf')]['push']({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x29'),'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24[_0xfa17('0x1d')]++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});_0x4c5b24['extensions'][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':'MONITOR_OPTIONS=ab','context':_0x31f80e[_0x7cc6db][0x0]['context'],'exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'priority':_0x4c5b24['priority']++,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});for(var _0x4cb1e3=0x0,_0x4fd48e=0x0;_0x4cb1e3<_0x31f80e[_0x7cc6db][_0xfa17('0x2a')];_0x4cb1e3+=0x1,_0x4fd48e=0x0){var _0x1be3af=_0x31f80e[_0x7cc6db][_0x4cb1e3];if(_0x1be3af['type']){_0x1be3af[_0xfa17('0x15')]=_0x1be3af[_0xfa17('0x15')][_0xfa17('0x2b')]();}var _0x5c104e=[];var _0x5725b4=[];delete _0x1be3af['id'];delete _0x1be3af[_0xfa17('0x2c')];delete _0x1be3af['updatedAt'];var _0x1c883a=_0x1be3af[_0xfa17('0x2d')]!==_0xfa17('0x2e')?[_0x1be3af[_0xfa17('0x2d')]]:_0x1be3af['IntervalId']?_[_0xfa17('0x9')](_[_0xfa17('0xc')](_0x4c5b24[_0xfa17('0x6')],{'IntervalId':_0x1be3af[_0xfa17('0x8')]}),_0xfa17('0x2d')):[];if(_0x1be3af[_0xfa17('0xd')]('tag')){if(_0x1be3af[_0xfa17('0x2f')]&&_0x1be3af[_0xfa17('0x2f')]!=='--'){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':'Set','appdata':_0xfa17('0x30')+_0x1be3af[_0xfa17('0x2f')],'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a['length']+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}}if(_0x1be3af[_0xfa17('0x15')]===_0xfa17('0x31')&&_0x1be3af['hasOwnProperty']('callerID')){if(_0x1be3af[_0xfa17('0x32')]){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x33')+_0x1be3af['callerID']+')','context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}else{_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x34'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}}if(_0x1be3af['hasOwnProperty'](_0xfa17('0x35'))){if(_0x9a7873[_0xfa17('0x36')](_0x1be3af[_0xfa17('0x37')][_0xfa17('0x2b')]())>=0x0&&_0x1be3af['appType']!==_0xfa17('0x38')){if(_0x1be3af[_0xfa17('0x35')]){_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af['type'],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x39'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af['exten'],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af['type'],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x3a'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24['priority']+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});}else{_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x1e'),'appdata':_0xfa17('0x3b'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24['priority']+_0x4fd48e++,'VoiceExtensionId':_0x1be3af[_0xfa17('0x14')]});_0x5c104e[_0xfa17('0x17')]({'type':_0x1be3af[_0xfa17('0x15')],'app':_0xfa17('0x10'),'appdata':_0xfa17('0x3c'),'context':_0x1be3af[_0xfa17('0x13')],'exten':_0x1be3af[_0xfa17('0xa')],'priority':_0x1c883a[_0xfa17('0x2a')]+_0x4c5b24[_0xfa17('0x1d')]+_0x4fd48e++,'VoiceExtensionId':_0x1be3af['VoiceExtensionId']});}}}for(var _0xbcde24=0x0;_0xbcde24<_0x1c883a[_0xfa17('0x2a')];_0xbcde24+=0x1){var _0x156990=_0x4c5b24['priority']+_0x1c883a[_0xfa17('0x2a')];var _0x5c07a6=_0xbcde24===_0x1c883a[_0xfa17('0x2a')]-0x1?_0x4c5b24[_0xfa17('0x1d')]+_0x5c104e[_0xfa17('0x2a')]+_0x5725b4[_0xfa17('0x2a')]+0x2:_0x4c5b24[_0xfa17('0x1d')]+_0xbcde24+0x1;_0x5c104e[_0xfa17('0x3d')](_0xbcde24,0x0,{'type':_0x1be3af['type'],'app':_0xfa17('0x3e'),'appdata':_0x1c883a[_0xbcde24]+'?'+_0x1be3af[_0xfa17('0x13')]+_0xfa17('0x3f')+_0x156990+':'+_0x1be3af[_0xfa17('0x13')]+_0xfa17('0x3f')+_0x5c07a6,'exten':_0x1be3af['exten'],'context':_0x1be3af[_0xfa17('0x13')],'priority':_0x4c5b24['priority']+_0xbcde24,'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x14')]});}_0x1be3af[_0xfa17('0x1d')]=_0x5c104e[_0xfa17('0x2a')]?_[_0xfa17('0x40')](_0x5c104e)[_0xfa17('0x1d')]+0x1:_0x4c5b24[_0xfa17('0x1d')];_0x4c5b24['priority']=(_0x5725b4['length']?_[_0xfa17('0x40')](_0x5725b4)[_0xfa17('0x1d')]:_0x1be3af[_0xfa17('0x1d')])+0x1;_0x4c5b24[_0xfa17('0xf')]=_['concat'](_0x4c5b24[_0xfa17('0xf')],_0x5c104e,[_0x1be3af],_0x5725b4);}_0x4c5b24[_0xfa17('0xf')][_0xfa17('0x17')]({'type':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x15')],'app':'Hangup','exten':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0xa')],'context':_0x31f80e[_0x7cc6db][0x0][_0xfa17('0x13')],'priority':_0x4c5b24[_0xfa17('0x1d')],'VoiceExtensionId':_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']});_0x1ce810[_0xfa17('0x17')](_0x31f80e[_0x7cc6db][0x0]['VoiceExtensionId']);_0x1cb0d7=_['concat'](_0x1cb0d7,_0x4c5b24[_0xfa17('0xf')]);}}return _0x41c7ed[_0xfa17('0x41')](function(_0x4cd5b8){return _0x41c7ed['models'][_0xfa17('0x7')][_0xfa17('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x1ce810}},'transaction':_0x4cd5b8})[_0xfa17('0x5')](function(_0x13c848){return _0x41c7ed[_0xfa17('0x2')][_0xfa17('0x7')][_0xfa17('0x43')](_['sortBy'](_0x1cb0d7,'priority'),{'transaction':_0x4cd5b8});});});})[_0xfa17('0x44')](function(_0x4213a0){console['error'](_0x4213a0);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x51fb=['map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','extension','find','exten','extensions','push','type','Set','format','CDR(type)=%s','priority','inbound','VoiceExtensionId','outbound','cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','context','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','interval','IntervalId','intervals','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','transaction','bulkCreate','sortBy','catch','lodash','util','models','Interval','then','VoiceExtension','findAll','uniq'];(function(_0x5bb51e,_0x168469){var _0x24fe9d=function(_0x385fb6){while(--_0x385fb6){_0x5bb51e['push'](_0x5bb51e['shift']());}};_0x24fe9d(++_0x168469);}(_0x51fb,0x11c));var _0xb51f=function(_0x9d6672,_0x158fd6){_0x9d6672=_0x9d6672-0x0;var _0x5a40fd=_0x51fb[_0x9d6672];return _0x5a40fd;};'use strict';var _=require(_0xb51f('0x0'));var util=require(_0xb51f('0x1'));function rewrite(_0x2292de,_0x468a92){var _0x4db291=this;return _0x2292de[_0xb51f('0x2')][_0xb51f('0x3')]['findAll']({'raw':!![]})[_0xb51f('0x4')](function(_0x31434f){_0x4db291['intervals']=_0x31434f;return _0x2292de['models'][_0xb51f('0x5')][_0xb51f('0x6')]({'where':{'IntervalId':_0x468a92['IntervalId']},'raw':!![]});})['then'](function(_0x54a90c){return _0x2292de[_0xb51f('0x2')][_0xb51f('0x5')][_0xb51f('0x6')]({'where':{'exten':{'$in':_[_0xb51f('0x7')](_[_0xb51f('0x8')](_0x54a90c,'exten'))}},'order':[{'raw':_0xb51f('0x9')}],'raw':!![]});})[_0xb51f('0x4')](function(_0x3cd22e){var _0x4e65fd=_[_0xb51f('0xa')](_0x3cd22e,{'priority':'1'});var _0x5479d5=_[_0xb51f('0xa')](_0x3cd22e,{'isApp':0x1});var _0x33f0dd=_[_0xb51f('0xb')](_0x5479d5,'exten');var _0x322a95=[_0xb51f('0xc'),_0xb51f('0xd')];var _0xf81cd7=[];var _0x409ef7=[];for(var _0x281f6d in _0x33f0dd){if(_0x33f0dd[_0xb51f('0xe')](_0x281f6d)){_0x4db291['priority']=0x2;_0x4db291['extensions']=[];_0x4db291[_0xb51f('0xf')]=_[_0xb51f('0x10')](_0x4e65fd,{'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')]});_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':util[_0xb51f('0x16')](_0xb51f('0x17'),_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')]),'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']});if(_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')]===_0xb51f('0x19')){_0x4db291['extensions']['push']({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':'CDR(routeid)='+_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')],'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291['priority']++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});}else if(_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')]===_0xb51f('0x1b')){if(_0x4db291[_0xb51f('0xf')]){_0x4db291[_0xb51f('0x12')]['push']({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':'Set','appdata':'CDR(destination)='+(_0x4db291['extension'][_0xb51f('0x1c')]?_0xb51f('0x1d')+_0x4db291[_0xb51f('0xf')][_0xb51f('0x1c')]+'}':_0xb51f('0x1e')),'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291['priority']++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});}_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x1f')+_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')],'context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291['priority']++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});var _0x3295ef=_0x4db291['priority']++;_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x21'),'appdata':_0xb51f('0x22')+(_0x3295ef+0x2)+_0xb51f('0x23')+(_0x3295ef+0x1)+')','context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x3295ef,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});if(_0x4db291[_0xb51f('0xf')]){_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x15'),'appdata':_0x4db291['extension'][_0xb51f('0x1c')]?_0xb51f('0x24')+_0x4db291[_0xb51f('0xf')][_0xb51f('0x1c')]+'}':_0xb51f('0x25'),'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']});}_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x26')+_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId'],'context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']});if(_0x4db291[_0xb51f('0xf')]&&_0x4db291[_0xb51f('0xf')][_0xb51f('0xe')](_0xb51f('0x27'))&&_0x4db291[_0xb51f('0xf')]['recordingFormat']!==_0xb51f('0x28')){_0x4db291[_0xb51f('0x12')]['push']({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x29'),'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0]['exten'],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x2a')+_0x4db291[_0xb51f('0xf')][_0xb51f('0x27')]||_0xb51f('0x2b'),'context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']});}}_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x2c'),'context':_0x33f0dd[_0x281f6d][0x0]['context'],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x2d'),'context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0]['exten'],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0]['type'],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x2e'),'context':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x20')],'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'priority':_0x4db291[_0xb51f('0x18')]++,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});for(var _0x28e9d7=0x0,_0x7a6b1a=0x0;_0x28e9d7<_0x33f0dd[_0x281f6d][_0xb51f('0x2f')];_0x28e9d7+=0x1,_0x7a6b1a=0x0){var _0x560473=_0x33f0dd[_0x281f6d][_0x28e9d7];if(_0x560473[_0xb51f('0x14')]){_0x560473['type']=_0x560473[_0xb51f('0x14')]['toLowerCase']();}var _0x5aadb6=[];var _0x2f0d3f=[];delete _0x560473['id'];delete _0x560473[_0xb51f('0x30')];delete _0x560473['updatedAt'];var _0x1bc3fd=_0x560473[_0xb51f('0x31')]!=='*,*,*,*'?[_0x560473[_0xb51f('0x31')]]:_0x560473[_0xb51f('0x32')]?_[_0xb51f('0x8')](_[_0xb51f('0xa')](_0x4db291[_0xb51f('0x33')],{'IntervalId':_0x560473['IntervalId']}),'interval'):[];if(_0x560473['hasOwnProperty'](_0xb51f('0x34'))){if(_0x560473[_0xb51f('0x34')]&&_0x560473[_0xb51f('0x34')]!=='--'){_0x5aadb6['push']({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x35')+_0x560473[_0xb51f('0x34')],'context':_0x560473[_0xb51f('0x20')],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473['VoiceExtensionId']});}}if(_0x560473[_0xb51f('0x14')]===_0xb51f('0x1b')&&_0x560473[_0xb51f('0xe')]('callerID')){if(_0x560473['callerID']){_0x5aadb6['push']({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x21'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x560473[_0xb51f('0x36')]+')','context':_0x560473['context'],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd['length']+_0x4db291['priority']+_0x7a6b1a++,'VoiceExtensionId':_0x560473[_0xb51f('0x1a')]});}else{_0x5aadb6[_0xb51f('0x13')]({'type':_0x560473['type'],'app':_0xb51f('0x21'),'appdata':_0xb51f('0x37'),'context':_0x560473[_0xb51f('0x20')],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473[_0xb51f('0x1a')]});}}if(_0x560473[_0xb51f('0xe')](_0xb51f('0x38'))){if(_0x322a95[_0xb51f('0x39')](_0x560473[_0xb51f('0x3a')][_0xb51f('0x3b')]())>=0x0&&_0x560473[_0xb51f('0x3c')]!==_0xb51f('0x3d')){if(_0x560473[_0xb51f('0x38')]){_0x5aadb6[_0xb51f('0x13')]({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x21'),'appdata':_0xb51f('0x3e'),'context':_0x560473['context'],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473['VoiceExtensionId']});_0x5aadb6[_0xb51f('0x13')]({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x560473['context'],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473['VoiceExtensionId']});}else{_0x5aadb6[_0xb51f('0x13')]({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x21'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x560473[_0xb51f('0x20')],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473[_0xb51f('0x1a')]});_0x5aadb6['push']({'type':_0x560473[_0xb51f('0x14')],'app':_0xb51f('0x15'),'appdata':_0xb51f('0x3f'),'context':_0x560473[_0xb51f('0x20')],'exten':_0x560473[_0xb51f('0x11')],'priority':_0x1bc3fd[_0xb51f('0x2f')]+_0x4db291[_0xb51f('0x18')]+_0x7a6b1a++,'VoiceExtensionId':_0x560473['VoiceExtensionId']});}}}for(var _0x251478=0x0;_0x251478<_0x1bc3fd[_0xb51f('0x2f')];_0x251478+=0x1){var _0x10a884=_0x4db291[_0xb51f('0x18')]+_0x1bc3fd[_0xb51f('0x2f')];var _0x5135e4=_0x251478===_0x1bc3fd[_0xb51f('0x2f')]-0x1?_0x4db291[_0xb51f('0x18')]+_0x5aadb6[_0xb51f('0x2f')]+_0x2f0d3f['length']+0x2:_0x4db291[_0xb51f('0x18')]+_0x251478+0x1;_0x5aadb6[_0xb51f('0x40')](_0x251478,0x0,{'type':_0x560473[_0xb51f('0x14')],'app':'GotoIfTime','appdata':_0x1bc3fd[_0x251478]+'?'+_0x560473['context']+',${EXTEN},'+_0x10a884+':'+_0x560473[_0xb51f('0x20')]+_0xb51f('0x41')+_0x5135e4,'exten':_0x560473[_0xb51f('0x11')],'context':_0x560473[_0xb51f('0x20')],'priority':_0x4db291[_0xb51f('0x18')]+_0x251478,'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x1a')]});}_0x560473[_0xb51f('0x18')]=_0x5aadb6[_0xb51f('0x2f')]?_[_0xb51f('0x42')](_0x5aadb6)[_0xb51f('0x18')]+0x1:_0x4db291[_0xb51f('0x18')];_0x4db291['priority']=(_0x2f0d3f['length']?_[_0xb51f('0x42')](_0x2f0d3f)['priority']:_0x560473['priority'])+0x1;_0x4db291[_0xb51f('0x12')]=_[_0xb51f('0x43')](_0x4db291[_0xb51f('0x12')],_0x5aadb6,[_0x560473],_0x2f0d3f);}_0x4db291[_0xb51f('0x12')][_0xb51f('0x13')]({'type':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x14')],'app':_0xb51f('0x44'),'exten':_0x33f0dd[_0x281f6d][0x0][_0xb51f('0x11')],'context':_0x33f0dd[_0x281f6d][0x0]['context'],'priority':_0x4db291[_0xb51f('0x18')],'VoiceExtensionId':_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']});_0xf81cd7[_0xb51f('0x13')](_0x33f0dd[_0x281f6d][0x0]['VoiceExtensionId']);_0x409ef7=_['concat'](_0x409ef7,_0x4db291[_0xb51f('0x12')]);}}return _0x2292de[_0xb51f('0x45')](function(_0x337c10){return _0x2292de[_0xb51f('0x2')][_0xb51f('0x5')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0xf81cd7}},'transaction':_0x337c10})['then'](function(_0x204ff0){return _0x2292de[_0xb51f('0x2')][_0xb51f('0x5')][_0xb51f('0x46')](_[_0xb51f('0x47')](_0x409ef7,_0xb51f('0x18')),{'transaction':_0x337c10});});});})[_0xb51f('0x48')](function(_0x1a82c8){console['error'](_0x1a82c8);});}exports['rewrite']=rewrite;
\ No newline at end of file
index 05789c0..c5b567a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26d1=['onlyIfOpen','VoiceQueue','CmList','BlackLists','all','Campaign','CampaignId','cmContact,\x20%s,\x20%s','finally','emit','resolve','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','length','map','errors','join','data','firstName','firstName\x20not\x20specified!','phone','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','duplicate','Duplicate\x20Contact','CmContact','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','inspect','into','cm_hopper','scheduledAt','ContactId','ListId','updatedAt','select','field','NOW()','toString','createdAt','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','fromQuery','cm_contacts','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','insert','cm_hopper_black','findAll','outbound','dialCheckDuplicateType','Lists','get','sequelize','query','VoiceQueueId'];(function(_0x1d2bbb,_0x202267){var _0x38082b=function(_0x27d153){while(--_0x27d153){_0x1d2bbb['push'](_0x1d2bbb['shift']());}};_0x38082b(++_0x202267);}(_0x26d1,0x165));var _0x126d=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x26d1[_0x59ee6f];return _0x4c0979;};'use strict';var BPromise=require(_0x126d('0x0'));var util=require(_0x126d('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0x126d('0x2'));var Papa=require(_0x126d('0x3'));var Redis=require(_0x126d('0x4'));var db=require(_0x126d('0x5'))['db'];var config=require(_0x126d('0x6'));var logger=require(_0x126d('0x7'))(_0x126d('0x8'));config['redis']=_[_0x126d('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x126d('0xa')]));require('../../../api/cmContact/cmContact.socket')[_0x126d('0xb')](socket);try{if(!process['argv'][0x2]||process[_0x126d('0xc')][0x2]===_0x126d('0xd')||process[_0x126d('0xc')][0x2]===_0x126d('0xe')){throw new Error(_0x126d('0xf'));}var FILEPATH=process[_0x126d('0xc')][0x2];if(!process[_0x126d('0xc')][0x3]||process[_0x126d('0xc')][0x3]===_0x126d('0xd')||process['argv'][0x3]===_0x126d('0xe')||!process[_0x126d('0xc')][0x4]||process[_0x126d('0xc')][0x4]==='undefined'||process['argv'][0x4]===_0x126d('0xe')){throw new Error(_0x126d('0x10'));}var FIELDS=_[_0x126d('0x11')](process[_0x126d('0xc')][0x3][_0x126d('0x12')](','),process[_0x126d('0xc')][0x4][_0x126d('0x12')](','));if(!process[_0x126d('0xc')][0x5]||process[_0x126d('0xc')][0x5]===_0x126d('0xd')||process[_0x126d('0xc')][0x5]===_0x126d('0xe')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x126d('0xc')][0x5];var COMPANYID=process[_0x126d('0xc')][0x6]&&process[_0x126d('0xc')][0x6]!==_0x126d('0xd')&&process['argv'][0x6]!==_0x126d('0xe')?process[_0x126d('0xc')][0x6]:null;var DUPLICATES=process[_0x126d('0xc')][0x7]&&process[_0x126d('0xc')][0x7]!==_0x126d('0xd')&&process[_0x126d('0xc')][0x7]!==_0x126d('0xe')?process[_0x126d('0xc')][0x7]:null;if(!process[_0x126d('0xc')][0x8]||process[_0x126d('0xc')][0x8]===_0x126d('0xd')||process[_0x126d('0xc')][0x8]==='null'){throw new Error(_0x126d('0x13'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x12e996){logger[_0x126d('0x14')](_0x12e996);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(_0xbd9b33,_0x42f625,_0x417bdd,_0xd9de4a){var _0x4afacb={'message':_0x42f625};_0x4afacb[_0xbd9b33]=!![];if(_0x417bdd){_0x4afacb[_0x126d('0x15')]=_0x417bdd;}if(_0xd9de4a){_0x4afacb[_0x126d('0x16')]=_0xd9de4a;}return _0x4afacb;}function isEmail(_0x3c6d06){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))*$/[_0x126d('0x17')](_0x3c6d06);}function checkRow(_0x3aab76,_0x3ea28a,_0x4f94ea){return new BPromise(function(_0x40f424,_0x49a302){if(_[_0x126d('0x18')](_0x3aab76)){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x19'),null,_0x4f94ea));}if(_0x3aab76['errors']&&_0x3aab76['errors'][_0x126d('0x1a')]){var _0x408bb9=_[_0x126d('0x1b')](_0x3aab76[_0x126d('0x1c')],'message')[_0x126d('0x1d')](';');return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x408bb9,null,_0x4f94ea));}var _0x52ce88={};for(var _0x3729fc in FIELDS){if(FIELDS['hasOwnProperty'](_0x3729fc)&&FIELDS[_0x3729fc]){_0x52ce88[_0x3729fc]=_0x3aab76[_0x126d('0x1e')][0x0][FIELDS[_0x3729fc]]||_0x3aab76['data'][0x0]['\ufeff'+FIELDS[_0x3729fc]];}}if(!_0x52ce88[_0x126d('0x1f')]){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x20'),null,_0x4f94ea));}if(!_0x52ce88[_0x126d('0x21')]){return _0x49a302(handleCheckRowError('error','phone\x20not\x20specified!',null,_0x4f94ea));}if(_0x52ce88[_0x126d('0x22')]){var _0xd39677=moment(_0x52ce88[_0x126d('0x22')],_0x126d('0x23'));if(!_0xd39677[_0x126d('0x24')]()){return _0x49a302(handleCheckRowError('error',_0x126d('0x25'),null,_0x4f94ea));}}if(_0x52ce88[_0x126d('0x26')]){if(!isEmail(_0x52ce88[_0x126d('0x26')])){return _0x49a302(handleCheckRowError(_0x126d('0x14'),'email\x20format\x20is\x20not\x20valid!',null,_0x4f94ea));}}_0x52ce88['ListId']=LISTID;_0x52ce88['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x126d('0x1a')]&&_0x3ea28a){var _0x30d2f2={};for(var _0x2b0109=0x0,_0x577cf1=DUPLICATES[_0x126d('0x1a')];_0x2b0109<_0x577cf1;_0x2b0109+=0x1){_0x30d2f2[DUPLICATES[_0x2b0109]]=_0x52ce88[DUPLICATES[_0x2b0109]];}var _0x5e3e88=_['find'](_0x3ea28a,_0x30d2f2);if(_0x5e3e88){return _0x49a302(handleCheckRowError(_0x126d('0x27'),_0x126d('0x28'),_0x5e3e88,_0x4f94ea));}}return db[_0x126d('0x29')]['create'](_0x52ce88,{'raw':!![],'hooks':![],'fields':_[_0x126d('0x2a')](_0x52ce88)})[_0x126d('0x2b')](function(_0x436fbd){if(DUPLICATES&&DUPLICATES['length']&&_0x3ea28a){_0x3ea28a[_0x126d('0x2c')](_[_0x126d('0x2d')](_0x52ce88,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x436fbd['id'];return _0x40f424();})[_0x126d('0x2e')](function(_0x3be6bc){return _0x49a302(handleCheckRowError(_0x126d('0x14'),_0x126d('0x2f')+(_0x3be6bc[_0x126d('0x30')]||JSON[_0x126d('0x31')](_0x3be6bc)),null,_0x4f94ea));});});}function checkHopper(){function _0x3ed80f(){return function(_0x16afef){logger[_0x126d('0x14')](_0x126d('0x32'),_0x126d('0x33'),util[_0x126d('0x34')](_0x16afef,{'showHidden':![],'depth':null}));};}var _0x4f4d82=function(_0x1d23d4,_0x4adb72){var _0x30edde=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))['fromQuery']([_0x126d('0x21'),_0x126d('0x37'),_0x126d('0x38'),_0x126d('0x39'),_0x4adb72,'createdAt',_0x126d('0x3a')],squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'),'phone')[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x37'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID['toString'](),_0x126d('0x39'))['field'](_0x1d23d4['id'][_0x126d('0x3e')](),_0x4adb72)[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3f'))[_0x126d('0x3c')](_0x126d('0x3d'),'updatedAt')[_0x126d('0x40')]('cm_contacts')[_0x126d('0x41')](_0x126d('0x42'))[_0x126d('0x41')](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x44'))[_0x126d('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'))[_0x126d('0x40')](_0x126d('0x36'))[_0x126d('0x41')](_0x4adb72+_0x126d('0x45'),_0x1d23d4['id'][_0x126d('0x3e')]())))[_0x126d('0x3e')]();return _0x30edde;};var _0x34cf4d=function(_0x4f4c99,_0x5e9fb0){var _0x497483=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))[_0x126d('0x46')]([_0x126d('0x21'),_0x126d('0x37'),'ContactId',_0x126d('0x39'),_0x5e9fb0,_0x126d('0x3f'),_0x126d('0x3a')],squel[_0x126d('0x3b')]()[_0x126d('0x3c')](_0x126d('0x21'),'phone')['field']('NOW()','scheduledAt')[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID['toString'](),_0x126d('0x39'))['field'](_0x4f4c99['id'][_0x126d('0x3e')](),_0x5e9fb0)[_0x126d('0x3c')]('NOW()',_0x126d('0x3f'))[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3a'))[_0x126d('0x40')](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))[_0x126d('0x41')](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x48'),squel[_0x126d('0x49')](hopperContacts))[_0x126d('0x41')](_0x126d('0x44'))[_0x126d('0x41')](_0x126d('0x4a'),squel[_0x126d('0x3b')]()[_0x126d('0x3c')](_0x126d('0x4b'))['from'](_0x126d('0x4c'))['where'](_0x5e9fb0+_0x126d('0x45'),_0x4f4c99['id']['toString']()))[_0x126d('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x126d('0x3b')]()['field'](_0x126d('0x21'))[_0x126d('0x40')]('cm_hopper')['where'](_0x5e9fb0+_0x126d('0x45'),_0x4f4c99['id']['toString']())))[_0x126d('0x3e')]();return _0x497483;};function _0x167721(_0x5555cb,_0x671ff7){var _0x37da13=squel['insert']()[_0x126d('0x35')](_0x126d('0x36'))[_0x126d('0x46')]([_0x126d('0x21'),_0x126d('0x37'),_0x126d('0x38'),_0x126d('0x39'),_0x671ff7,_0x126d('0x3f'),_0x126d('0x3a')],squel[_0x126d('0x3b')]()['field']('phone',_0x126d('0x21'))[_0x126d('0x3c')]('NOW()',_0x126d('0x37'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID[_0x126d('0x3e')](),_0x126d('0x39'))['field'](_0x5555cb['id'][_0x126d('0x3e')](),_0x671ff7)['field'](_0x126d('0x3d'),_0x126d('0x3f'))['field'](_0x126d('0x3d'),'updatedAt')['from'](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))['where'](_0x126d('0x43'),LISTID['toString']())[_0x126d('0x41')](_0x126d('0x48'),squel[_0x126d('0x49')](hopperContacts))[_0x126d('0x41')](_0x126d('0x44')))[_0x126d('0x3e')]();return _0x37da13;}function _0x90ec93(_0x96b755,_0x2a9fbc){var _0x2d19a9=squel[_0x126d('0x4d')]()[_0x126d('0x35')](_0x126d('0x4e'))['fromQuery']([_0x126d('0x21'),'ContactId',_0x126d('0x39'),_0x2a9fbc,_0x126d('0x3f'),_0x126d('0x3a')],squel['select']()[_0x126d('0x3c')](_0x126d('0x21'),_0x126d('0x21'))[_0x126d('0x3c')]('id',_0x126d('0x38'))[_0x126d('0x3c')](LISTID[_0x126d('0x3e')](),'ListId')[_0x126d('0x3c')](_0x96b755['id']['toString'](),_0x2a9fbc)[_0x126d('0x3c')](_0x126d('0x3d'),_0x126d('0x3f'))['field'](_0x126d('0x3d'),_0x126d('0x3a'))['from'](_0x126d('0x47'))[_0x126d('0x41')](_0x126d('0x42'))['where'](_0x126d('0x43'),LISTID[_0x126d('0x3e')]())[_0x126d('0x41')](_0x126d('0x48'),squel['str'](hopperContacts))[_0x126d('0x41')](_0x126d('0x44')))[_0x126d('0x3e')]();return _0x2d19a9;}return db['VoiceQueue'][_0x126d('0x4f')]({'where':{'type':_0x126d('0x50')},'attributes':['id',_0x126d('0x51')],'include':[{'model':db['CmList'],'as':_0x126d('0x52'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x3c9f5d){var _0x41bee8=[];if(_0x3c9f5d){var _0x23508e;for(var _0xc4941=0x0,_0x7cf963;_0xc4941<_0x3c9f5d['length'];_0xc4941+=0x1){_0x7cf963=_0x3c9f5d[_0xc4941][_0x126d('0x53')]({'plain':!![]});switch(_0x7cf963['dialCheckDuplicateType']){case'always':_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')][_0x126d('0x55')](_0x34cf4d(_0x7cf963,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;case _0x126d('0x57'):_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x4f4d82(_0x7cf963,_0x126d('0x56')))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;default:_0x41bee8[_0x126d('0x2c')](db[_0x126d('0x54')][_0x126d('0x55')](_0x167721(_0x7cf963,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}}return _0x41bee8;})['all']()[_0x126d('0x2b')](function(){return db[_0x126d('0x58')][_0x126d('0x4f')]({'where':{'type':_0x126d('0x50')},'attributes':['id'],'include':[{'model':db[_0x126d('0x59')],'as':_0x126d('0x5a'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x567e8e){var _0x34e65d=[];if(_0x567e8e){var _0x2e9253;for(var _0x2eb109=0x0,_0x42fe2a;_0x2eb109<_0x567e8e[_0x126d('0x1a')];_0x2eb109+=0x1){_0x42fe2a=_0x567e8e[_0x2eb109][_0x126d('0x53')]({'plain':!![]});_0x34e65d[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x90ec93(_0x42fe2a,_0x126d('0x56')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}return _0x34e65d;})[_0x126d('0x5b')]();})[_0x126d('0x2b')](function(){return db[_0x126d('0x5c')]['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x126d('0x59')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x476ab2){var _0x89cf5=[];if(_0x476ab2){for(var _0x1ae2c2=0x0,_0x35f54e;_0x1ae2c2<_0x476ab2[_0x126d('0x1a')];_0x1ae2c2+=0x1){_0x35f54e=_0x476ab2[_0x1ae2c2]['get']({'plain':!![]});switch(_0x35f54e[_0x126d('0x51')]){case'always':_0x89cf5[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x34cf4d(_0x35f54e,_0x126d('0x5d')))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;case _0x126d('0x57'):_0x89cf5[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x4f4d82(_0x35f54e,_0x126d('0x5d')))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));break;default:_0x89cf5['push'](db[_0x126d('0x54')][_0x126d('0x55')](_0x167721(_0x35f54e,'CampaignId'))[_0x126d('0x2b')](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}}return _0x89cf5;})['all']();})['then'](function(){return db[_0x126d('0x5c')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x126d('0x5a'),'where':{'id':LISTID}}]})[_0x126d('0x2b')](function(_0x3f6b12){var _0x5a71e9=[];if(_0x3f6b12){for(var _0x54829c=0x0,_0x297f46;_0x54829c<_0x3f6b12[_0x126d('0x1a')];_0x54829c+=0x1){_0x297f46=_0x3f6b12[_0x54829c][_0x126d('0x53')]({'plain':!![]});_0x5a71e9[_0x126d('0x2c')](db[_0x126d('0x54')]['query'](_0x90ec93(_0x297f46,'CampaignId'))['then'](function(){})[_0x126d('0x2e')](_0x3ed80f()));}}return _0x5a71e9;})[_0x126d('0x5b')]();})[_0x126d('0x2e')](function(_0x214f4b){logger[_0x126d('0x14')](_0x126d('0x5e'),'generalCheckHopper',_0x214f4b['message']);});}var processPromises=function(_0x3fea4a){return BPromise[_0x126d('0x5b')](promises)[_0x126d('0x2b')](function(_0x106121){})['catch'](function(_0x4c507b){logger[_0x126d('0x14')]('Error\x20processing\x20rows\x20block:',JSON[_0x126d('0x31')](_0x4c507b));})[_0x126d('0x5f')](function(){socket[_0x126d('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3fea4a){return _0x3fea4a['resume']();}});};var endCsv=function(){return BPromise[_0x126d('0x61')]()[_0x126d('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x126d('0x2b')](function(){socket[_0x126d('0x60')](_0x126d('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x126d('0x63')](FILEPATH);}catch(_0x5495e8){logger[_0x126d('0x14')](_0x126d('0x64'),JSON['stringify'](_0x5495e8));}finally{process[_0x126d('0x65')](0x0);}});};process['on'](_0x126d('0x66'),function(){logger[_0x126d('0x67')](_0x126d('0x68'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x126d('0x29')][_0x126d('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x126d('0x2b')](function(_0xab65de){var _0xa14c33=fs[_0x126d('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x126d('0x6a')](_0xa14c33,{'header':!![],'skipEmptyLines':!![],'step':function(_0x557d75,_0x4e6a27){total+=0x1;var _0x8550d4=total;promises['push'](checkRow(_0x557d75,_0xab65de,_0x8550d4)[_0x126d('0x2b')](function(){success+=0x1;})[_0x126d('0x2e')](function(_0x3b9706){if(_0x3b9706[_0x126d('0x14')]){errors+=0x1;delete _0x3b9706[_0x126d('0x14')];}else if(_0x3b9706[_0x126d('0x27')]){duplicates+=0x1;delete _0x3b9706['duplicate'];}rows[_0x126d('0x2c')](_0x3b9706);}));if(total%0xc8===0x0){_0x4e6a27[_0x126d('0x6b')]();return processPromises(_0x4e6a27);}},'complete':function(){return processPromises()['then'](function(){logger[_0x126d('0x67')](_0x126d('0x6c'));endCsv();});},'error':function(_0x3114e5,_0x44130c){logger['info'](_0x126d('0x6d'),JSON[_0x126d('0x31')](_0x3114e5));endCsv();}});})[_0x126d('0x2e')](function(_0x1d6505){logger['error'](_0x126d('0x6e'),JSON['stringify'](_0x1d6505));});}main();
\ No newline at end of file
+var _0x8db2=['CSV\x20import\x20process\x20stopped!','parse','CSV\x20parse\x20error','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','CmContact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','inspect','insert','into','cm_hopper','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','id\x20IN\x20?','str','calleridnum','cm_hopper_final','fromQuery','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','BlackLists','all','Lists','CampaignId','Campaign','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','emit','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info'];(function(_0x1fa0a9,_0x1784d8){var _0x269c48=function(_0x509caa){while(--_0x509caa){_0x1fa0a9['push'](_0x1fa0a9['shift']());}};_0x269c48(++_0x1784d8);}(_0x8db2,0x144));var _0x28db=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0x8db2[_0x26462c];return _0x509a42;};'use strict';var BPromise=require(_0x28db('0x0'));var util=require(_0x28db('0x1'));var _=require(_0x28db('0x2'));var fs=require('fs');var squel=require(_0x28db('0x3'));var Papa=require(_0x28db('0x4'));var Redis=require(_0x28db('0x5'));var db=require(_0x28db('0x6'))['db'];var config=require(_0x28db('0x7'));var logger=require(_0x28db('0x8'))(_0x28db('0x9'));config[_0x28db('0xa')]=_['defaults'](config[_0x28db('0xa')],{'host':_0x28db('0xb'),'port':0x18eb});var socket=require(_0x28db('0xc'))(new Redis(config[_0x28db('0xa')]));require(_0x28db('0xd'))[_0x28db('0xe')](socket);try{if(!process[_0x28db('0xf')][0x2]||process['argv'][0x2]===_0x28db('0x10')||process[_0x28db('0xf')][0x2]===_0x28db('0x11')){throw new Error(_0x28db('0x12'));}var FILEPATH=process['argv'][0x2];if(!process[_0x28db('0xf')][0x3]||process['argv'][0x3]===_0x28db('0x10')||process[_0x28db('0xf')][0x3]===_0x28db('0x11')||!process['argv'][0x4]||process[_0x28db('0xf')][0x4]===_0x28db('0x10')||process[_0x28db('0xf')][0x4]===_0x28db('0x11')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x28db('0x13')](process[_0x28db('0xf')][0x3][_0x28db('0x14')](','),process[_0x28db('0xf')][0x4][_0x28db('0x14')](','));if(!process[_0x28db('0xf')][0x5]||process['argv'][0x5]===_0x28db('0x10')||process[_0x28db('0xf')][0x5]===_0x28db('0x11')){throw new Error(_0x28db('0x15'));}var LISTID=process['argv'][0x5];var COMPANYID=process['argv'][0x6]&&process['argv'][0x6]!==_0x28db('0x10')&&process[_0x28db('0xf')][0x6]!==_0x28db('0x11')?process['argv'][0x6]:null;var DUPLICATES=process[_0x28db('0xf')][0x7]&&process[_0x28db('0xf')][0x7]!==_0x28db('0x10')&&process[_0x28db('0xf')][0x7]!==_0x28db('0x11')?process['argv'][0x7]:null;if(!process['argv'][0x8]||process[_0x28db('0xf')][0x8]==='undefined'||process[_0x28db('0xf')][0x8]===_0x28db('0x11')){throw new Error(_0x28db('0x16'));}var SOCKET_TIMESTAMP=process[_0x28db('0xf')][0x8];}catch(_0x2a13f2){logger[_0x28db('0x17')](_0x2a13f2);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(_0x3db415,_0x3b75a0,_0x333112,_0x3a6c4c){var _0x2c287f={'message':_0x3b75a0};_0x2c287f[_0x3db415]=!![];if(_0x333112){_0x2c287f[_0x28db('0x18')]=_0x333112;}if(_0x3a6c4c){_0x2c287f['index']=_0x3a6c4c;}return _0x2c287f;}function isEmail(_0x367310){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))*$/[_0x28db('0x19')](_0x367310);}function checkRow(_0x2bf62d,_0x248a9e,_0x19eca9){return new BPromise(function(_0x543f08,_0x504f07){if(_['isNil'](_0x2bf62d)){return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x28db('0x1a'),null,_0x19eca9));}if(_0x2bf62d[_0x28db('0x1b')]&&_0x2bf62d['errors'][_0x28db('0x1c')]){var _0x250612=_[_0x28db('0x1d')](_0x2bf62d['errors'],_0x28db('0x1e'))[_0x28db('0x1f')](';');return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x250612,null,_0x19eca9));}var _0x584a48={};for(var _0x5cc35b in FIELDS){if(FIELDS['hasOwnProperty'](_0x5cc35b)&&FIELDS[_0x5cc35b]){_0x584a48[_0x5cc35b]=_0x2bf62d[_0x28db('0x20')][0x0][FIELDS[_0x5cc35b]]||_0x2bf62d[_0x28db('0x20')][0x0]['\ufeff'+FIELDS[_0x5cc35b]];}}if(!_0x584a48['firstName']){return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x28db('0x21'),null,_0x19eca9));}if(!_0x584a48[_0x28db('0x22')]){return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x28db('0x23'),null,_0x19eca9));}if(_0x584a48['birthDate']){var _0x3c2139=moment(_0x584a48[_0x28db('0x24')],_0x28db('0x25'));if(!_0x3c2139[_0x28db('0x26')]()){return _0x504f07(handleCheckRowError(_0x28db('0x17'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x19eca9));}}if(_0x584a48[_0x28db('0x27')]){if(!isEmail(_0x584a48[_0x28db('0x27')])){return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x28db('0x28'),null,_0x19eca9));}}_0x584a48[_0x28db('0x29')]=LISTID;_0x584a48['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x28db('0x1c')]&&_0x248a9e){var _0x218ef2={};for(var _0x56d30d=0x0,_0x22d6fe=DUPLICATES['length'];_0x56d30d<_0x22d6fe;_0x56d30d+=0x1){_0x218ef2[DUPLICATES[_0x56d30d]]=_0x584a48[DUPLICATES[_0x56d30d]];}var _0x155a35=_[_0x28db('0x2a')](_0x248a9e,_0x218ef2);if(_0x155a35){return _0x504f07(handleCheckRowError(_0x28db('0x2b'),'Duplicate\x20Contact',_0x155a35,_0x19eca9));}}return db[_0x28db('0x2c')][_0x28db('0x2d')](_0x584a48,{'raw':!![],'hooks':![],'fields':_[_0x28db('0x2e')](_0x584a48)})[_0x28db('0x2f')](function(_0x23874c){if(DUPLICATES&&DUPLICATES['length']&&_0x248a9e){_0x248a9e[_0x28db('0x30')](_['pick'](_0x584a48,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x23874c['id'];return _0x543f08();})[_0x28db('0x31')](function(_0x1a1f5f){return _0x504f07(handleCheckRowError(_0x28db('0x17'),_0x28db('0x32')+(_0x1a1f5f[_0x28db('0x1e')]||JSON[_0x28db('0x33')](_0x1a1f5f)),null,_0x19eca9));});});}function checkHopper(){function _0x49c5c5(){return function(_0x7fbdcb){logger[_0x28db('0x17')]('cmContact',_0x28db('0x34'),util[_0x28db('0x35')](_0x7fbdcb,{'showHidden':![],'depth':null}));};}var _0xb331a0=function(_0x462f68,_0x243d57){var _0x290780=squel[_0x28db('0x36')]()[_0x28db('0x37')](_0x28db('0x38'))['fromQuery']([_0x28db('0x22'),_0x28db('0x39'),_0x28db('0x3a'),_0x28db('0x29'),_0x243d57,_0x28db('0x3b'),_0x28db('0x3c')],squel['select']()[_0x28db('0x3d')](_0x28db('0x22'),_0x28db('0x22'))[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x39'))[_0x28db('0x3d')]('id',_0x28db('0x3a'))[_0x28db('0x3d')](LISTID[_0x28db('0x3f')](),_0x28db('0x29'))[_0x28db('0x3d')](_0x462f68['id'][_0x28db('0x3f')](),_0x243d57)[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x3b'))[_0x28db('0x3d')]('NOW()',_0x28db('0x3c'))[_0x28db('0x40')](_0x28db('0x41'))[_0x28db('0x42')](_0x28db('0x43'))[_0x28db('0x42')](_0x28db('0x44'),LISTID[_0x28db('0x3f')]())['where'](_0x28db('0x45'))[_0x28db('0x42')](_0x28db('0x46'),squel[_0x28db('0x47')]()[_0x28db('0x3d')](_0x28db('0x22'))['from'](_0x28db('0x38'))[_0x28db('0x42')](_0x243d57+_0x28db('0x48'),_0x462f68['id']['toString']())))[_0x28db('0x3f')]();return _0x290780;};var _0x38e1b7=function(_0x34ca44,_0x1ac871){var _0x47a8f6=squel['insert']()['into'](_0x28db('0x38'))['fromQuery'](['phone',_0x28db('0x39'),_0x28db('0x3a'),_0x28db('0x29'),_0x1ac871,_0x28db('0x3b'),_0x28db('0x3c')],squel[_0x28db('0x47')]()[_0x28db('0x3d')]('phone',_0x28db('0x22'))[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x39'))[_0x28db('0x3d')]('id',_0x28db('0x3a'))[_0x28db('0x3d')](LISTID['toString'](),'ListId')[_0x28db('0x3d')](_0x34ca44['id'][_0x28db('0x3f')](),_0x1ac871)[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x3b'))[_0x28db('0x3d')]('NOW()',_0x28db('0x3c'))[_0x28db('0x40')](_0x28db('0x41'))[_0x28db('0x42')](_0x28db('0x43'))[_0x28db('0x42')](_0x28db('0x44'),LISTID['toString']())[_0x28db('0x42')](_0x28db('0x49'),squel[_0x28db('0x4a')](hopperContacts))[_0x28db('0x42')](_0x28db('0x45'))[_0x28db('0x42')](_0x28db('0x46'),squel['select']()['field'](_0x28db('0x4b'))[_0x28db('0x40')](_0x28db('0x4c'))['where'](_0x1ac871+_0x28db('0x48'),_0x34ca44['id'][_0x28db('0x3f')]()))[_0x28db('0x42')](_0x28db('0x46'),squel['select']()[_0x28db('0x3d')](_0x28db('0x22'))['from'](_0x28db('0x38'))[_0x28db('0x42')](_0x1ac871+_0x28db('0x48'),_0x34ca44['id']['toString']())))['toString']();return _0x47a8f6;};function _0x33e945(_0x511e4a,_0x4e0957){var _0x58052b=squel[_0x28db('0x36')]()[_0x28db('0x37')](_0x28db('0x38'))[_0x28db('0x4d')](['phone',_0x28db('0x39'),_0x28db('0x3a'),_0x28db('0x29'),_0x4e0957,'createdAt',_0x28db('0x3c')],squel['select']()['field'](_0x28db('0x22'),_0x28db('0x22'))[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x39'))[_0x28db('0x3d')]('id',_0x28db('0x3a'))[_0x28db('0x3d')](LISTID[_0x28db('0x3f')](),_0x28db('0x29'))[_0x28db('0x3d')](_0x511e4a['id'][_0x28db('0x3f')](),_0x4e0957)[_0x28db('0x3d')](_0x28db('0x3e'),'createdAt')[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x3c'))[_0x28db('0x40')]('cm_contacts')['where'](_0x28db('0x43'))[_0x28db('0x42')](_0x28db('0x44'),LISTID['toString']())[_0x28db('0x42')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0x28db('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0x28db('0x3f')]();return _0x58052b;}function _0x3059e8(_0x39fc02,_0x5a8548){var _0x480f45=squel[_0x28db('0x36')]()[_0x28db('0x37')]('cm_hopper_black')['fromQuery']([_0x28db('0x22'),'ContactId',_0x28db('0x29'),_0x5a8548,_0x28db('0x3b'),_0x28db('0x3c')],squel['select']()[_0x28db('0x3d')](_0x28db('0x22'),_0x28db('0x22'))[_0x28db('0x3d')]('id',_0x28db('0x3a'))[_0x28db('0x3d')](LISTID[_0x28db('0x3f')](),'ListId')[_0x28db('0x3d')](_0x39fc02['id']['toString'](),_0x5a8548)[_0x28db('0x3d')](_0x28db('0x3e'),'createdAt')[_0x28db('0x3d')](_0x28db('0x3e'),_0x28db('0x3c'))[_0x28db('0x40')](_0x28db('0x41'))['where'](_0x28db('0x43'))[_0x28db('0x42')](_0x28db('0x44'),LISTID[_0x28db('0x3f')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))[_0x28db('0x42')](_0x28db('0x45')))[_0x28db('0x3f')]();return _0x480f45;}return db[_0x28db('0x4e')][_0x28db('0x4f')]({'where':{'type':_0x28db('0x50')},'attributes':['id',_0x28db('0x51')],'include':[{'model':db[_0x28db('0x52')],'as':'Lists','where':{'id':LISTID}}]})[_0x28db('0x2f')](function(_0x15ef25){var _0x6a3d4d=[];if(_0x15ef25){var _0x7a190b;for(var _0x3a122d=0x0,_0x5c35ec;_0x3a122d<_0x15ef25[_0x28db('0x1c')];_0x3a122d+=0x1){_0x5c35ec=_0x15ef25[_0x3a122d][_0x28db('0x53')]({'plain':!![]});switch(_0x5c35ec[_0x28db('0x51')]){case _0x28db('0x54'):_0x6a3d4d[_0x28db('0x30')](db[_0x28db('0x55')][_0x28db('0x56')](_0x38e1b7(_0x5c35ec,_0x28db('0x57')))['then'](function(){})[_0x28db('0x31')](_0x49c5c5()));break;case _0x28db('0x58'):_0x6a3d4d['push'](db[_0x28db('0x55')][_0x28db('0x56')](_0xb331a0(_0x5c35ec,'VoiceQueueId'))['then'](function(){})['catch'](_0x49c5c5()));break;default:_0x6a3d4d['push'](db['sequelize'][_0x28db('0x56')](_0x33e945(_0x5c35ec,'VoiceQueueId'))[_0x28db('0x2f')](function(){})[_0x28db('0x31')](_0x49c5c5()));}}}return _0x6a3d4d;})['all']()['then'](function(){return db[_0x28db('0x4e')][_0x28db('0x4f')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x28db('0x52')],'as':_0x28db('0x59'),'where':{'id':LISTID}}]})[_0x28db('0x2f')](function(_0x46b141){var _0x1dcac1=[];if(_0x46b141){var _0x5ed877;for(var _0x49045b=0x0,_0x41f5d5;_0x49045b<_0x46b141[_0x28db('0x1c')];_0x49045b+=0x1){_0x41f5d5=_0x46b141[_0x49045b][_0x28db('0x53')]({'plain':!![]});_0x1dcac1['push'](db[_0x28db('0x55')]['query'](_0x3059e8(_0x41f5d5,_0x28db('0x57')))[_0x28db('0x2f')](function(){})[_0x28db('0x31')](_0x49c5c5()));}}return _0x1dcac1;})[_0x28db('0x5a')]();})[_0x28db('0x2f')](function(){return db['Campaign'][_0x28db('0x4f')]({'attributes':['id',_0x28db('0x51')],'include':[{'model':db[_0x28db('0x52')],'as':_0x28db('0x5b'),'where':{'id':LISTID}}]})[_0x28db('0x2f')](function(_0x3a109f){var _0xd59ad9=[];if(_0x3a109f){for(var _0xadad36=0x0,_0x17b64c;_0xadad36<_0x3a109f[_0x28db('0x1c')];_0xadad36+=0x1){_0x17b64c=_0x3a109f[_0xadad36]['get']({'plain':!![]});switch(_0x17b64c['dialCheckDuplicateType']){case _0x28db('0x54'):_0xd59ad9[_0x28db('0x30')](db[_0x28db('0x55')]['query'](_0x38e1b7(_0x17b64c,'CampaignId'))[_0x28db('0x2f')](function(){})[_0x28db('0x31')](_0x49c5c5()));break;case _0x28db('0x58'):_0xd59ad9[_0x28db('0x30')](db[_0x28db('0x55')][_0x28db('0x56')](_0xb331a0(_0x17b64c,_0x28db('0x5c')))[_0x28db('0x2f')](function(){})['catch'](_0x49c5c5()));break;default:_0xd59ad9[_0x28db('0x30')](db[_0x28db('0x55')][_0x28db('0x56')](_0x33e945(_0x17b64c,_0x28db('0x5c')))['then'](function(){})[_0x28db('0x31')](_0x49c5c5()));}}}return _0xd59ad9;})[_0x28db('0x5a')]();})[_0x28db('0x2f')](function(){return db[_0x28db('0x5d')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x28db('0x52')],'as':_0x28db('0x59'),'where':{'id':LISTID}}]})[_0x28db('0x2f')](function(_0x1c09f6){var _0x536c43=[];if(_0x1c09f6){for(var _0x24e776=0x0,_0x57b6dc;_0x24e776<_0x1c09f6['length'];_0x24e776+=0x1){_0x57b6dc=_0x1c09f6[_0x24e776][_0x28db('0x53')]({'plain':!![]});_0x536c43[_0x28db('0x30')](db[_0x28db('0x55')][_0x28db('0x56')](_0x3059e8(_0x57b6dc,'CampaignId'))[_0x28db('0x2f')](function(){})[_0x28db('0x31')](_0x49c5c5()));}}return _0x536c43;})['all']();})['catch'](function(_0x368051){logger['error'](_0x28db('0x5e'),'generalCheckHopper',_0x368051[_0x28db('0x1e')]);});}var processPromises=function(_0x2777ce){return BPromise[_0x28db('0x5a')](promises)['then'](function(_0x55fe96){})[_0x28db('0x31')](function(_0x43b093){logger[_0x28db('0x17')](_0x28db('0x5f'),JSON[_0x28db('0x33')](_0x43b093));})['finally'](function(){socket[_0x28db('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2777ce){return _0x2777ce[_0x28db('0x61')]();}});};var endCsv=function(){return BPromise[_0x28db('0x62')]()[_0x28db('0x2f')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x28db('0x63')](FILEPATH);}catch(_0x3d4933){logger[_0x28db('0x17')](_0x28db('0x64'),JSON[_0x28db('0x33')](_0x3d4933));}finally{process[_0x28db('0x65')](0x0);}});};process['on'](_0x28db('0x66'),function(){logger[_0x28db('0x67')](_0x28db('0x68'));endCsv();});function main(){return BPromise[_0x28db('0x62')]()[_0x28db('0x2f')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x28db('0x14')](',');return db['CmContact'][_0x28db('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x28db('0x2f')](function(_0x242cee){var _0x880884=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x28db('0x69')](_0x880884,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3e8455,_0x266db8){total+=0x1;var _0xaa3b80=total;promises[_0x28db('0x30')](checkRow(_0x3e8455,_0x242cee,_0xaa3b80)[_0x28db('0x2f')](function(){success+=0x1;})[_0x28db('0x31')](function(_0x1884cf){if(_0x1884cf[_0x28db('0x17')]){errors+=0x1;delete _0x1884cf[_0x28db('0x17')];}else if(_0x1884cf[_0x28db('0x2b')]){duplicates+=0x1;delete _0x1884cf[_0x28db('0x2b')];}rows[_0x28db('0x30')](_0x1884cf);}));if(total%0xc8===0x0){_0x266db8['pause']();return processPromises(_0x266db8);}},'complete':function(){return processPromises()[_0x28db('0x2f')](function(){logger[_0x28db('0x67')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x543fb4,_0xf39a05){logger[_0x28db('0x67')](_0x28db('0x6a'),JSON['stringify'](_0x543fb4));endCsv();}});})['catch'](function(_0x2f3fcd){logger[_0x28db('0x17')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x28db('0x33')](_0x2f3fcd));});}main();
\ No newline at end of file
index 270c053..720e9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfacb=['cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','scheduledat','ContactId','ListId','updatedAt','priority','UserId','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_contacts.id','cm_contacts.ListId','insert','cm_hopper_black','fromQuery','createdAt','cm_contacts','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','toString','recallme','\x22always\x22','\x22onlyIfOpen\x22','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','stringify','send','start','binding','clone','socket_timestamp','server/files/tmp','includes','name','header','writeFileSync','createReadStream','rows','data','find','_description','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','description','SystemRow','emit','contact:import:','Abort\x20parser','abort','SystemError','step','cm_contacts_','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','duplicates','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','existsSync','parse','binding\x20doesn\x27t\x20exists','firstName','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','../../../mysqldb','import','redis','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','format','test','select','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','push','all','then','length','split','isNil','filter','findOne','CmContactHasItem','updated','create','inserted','cm_contacts.phone'];(function(_0x1b9bc2,_0x15952b){var _0x3ee566=function(_0x593b8d){while(--_0x593b8d){_0x1b9bc2['push'](_0x1b9bc2['shift']());}};_0x3ee566(++_0x15952b);}(_0xfacb,0x8b));var _0xbfac=function(_0x26d094,_0x2faa94){_0x26d094=_0x26d094-0x0;var _0x1ee37d=_0xfacb[_0x26d094];return _0x1ee37d;};'use strict';var fs=require('fs');var path=require(_0xbfac('0x0'));var _=require(_0xbfac('0x1'));var Papa=require(_0xbfac('0x2'));var util=require(_0xbfac('0x3'));var BPromise=require(_0xbfac('0x4'));var moment=require('moment');var squel=require('squel');var Redis=require('ioredis');var db=require(_0xbfac('0x5'))['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require('../../../config/logger')(_0xbfac('0x6'));config['redis']=_['defaults'](config[_0xbfac('0x7')],{'host':_0xbfac('0x8'),'port':0x18eb});var socket=require(_0xbfac('0x9'))(new Redis(config[_0xbfac('0x7')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0xbfac('0xa'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xbfac('0xb')](_0xbfac('0xa'));function isEmail(_0x5e69bb){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))*$/[_0xbfac('0xc')](_0x5e69bb);}function selectNotIn(_0x400edc,_0x6831fb,_0x59cb91,_0x5191cb,_0x74c467){return squel[_0xbfac('0xd')]()[_0xbfac('0xe')](_0xbfac('0xf'))[_0xbfac('0x10')](_0x5191cb)[_0xbfac('0x11')](_0x6831fb,null,_0x6831fb+_0xbfac('0x12')+_0x5191cb+'.'+_0x59cb91)[_0xbfac('0x13')](_0x5191cb+'.'+_0x59cb91+'\x20=\x20'+_0x400edc+'.'+_0x59cb91)[_0xbfac('0x13')](_0x6831fb+_0xbfac('0x14')+_0x74c467['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2cefe8,_0x545748){promisesAdditionalPhones=[];return db['CmContact'][_0xbfac('0x15')]({'raw':!![],'attributes':['id',_0xbfac('0x16')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x9506b2){if(_0x9506b2!==null){var _0x355184=[];for(var _0x214408=0x0;_0x214408<_0x9506b2['length'];_0x214408++){var _0x1f9c4d=_0x9506b2[_0x214408];_0x355184[_0xbfac('0x17')](insertAdditionalPhones(_0x1f9c4d));}}Promise[_0xbfac('0x18')](_0x355184)[_0xbfac('0x19')](function(){_0x2cefe8({'val':0x1});});});});}function insertAdditionalPhones(_0x4cf79d){return new Promise(function(_0xe3fc07,_0x25981e){var _0x423814=_0x4cf79d[_0xbfac('0x16')];var _0x5437fd=_0x423814['split'](';');var _0x40e630=[];orderBy=0x0;for(var _0x2347c3=0x0;_0x2347c3<_0x5437fd[_0xbfac('0x1a')];_0x2347c3++){_0x40e630[_0xbfac('0x17')](splitAdditionalPhone(_0x4cf79d['id'],_0x5437fd[_0x2347c3]));}Promise[_0xbfac('0x18')](_0x40e630)['then'](function(){_0xe3fc07({'val':_0x5437fd[_0xbfac('0x1a')]});});});}function splitAdditionalPhone(_0x8f054e,_0x1734ed){return new Promise(function(_0x2734f7,_0x2c4721){var _0x5a3e7a=_0x1734ed[_0xbfac('0x1b')](':');var _0x190a3a=_0x5a3e7a[0x0];var _0x2e6209=_0x5a3e7a[0x1];if(!_[_0xbfac('0x1c')](_0x2e6209)){var _0x1cbf29=_0x2e6209[_0xbfac('0x1b')]('|');var _0x2173dc=[];for(var _0x259e67=0x0;_0x259e67<_0x1cbf29[_0xbfac('0x1a')];_0x259e67++){if(_0x1cbf29[_0x259e67]!==''){var _0x17ee02=_[_0xbfac('0x1d')](promisesAdditionalPhones,{'contactId':_0x8f054e,'phone':_0x1cbf29[_0x259e67]});if(_0x17ee02[_0xbfac('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0xbfac('0x17')]({'contactId':_0x8f054e,'contactTypeId':_0x190a3a,'phone':_0x1cbf29[_0x259e67],'orderBy':orderBy});}}}_0x2734f7({'ok':0x1});}else _0x2734f7({'res':0x0});});}function createAdditionalPhone(_0x48b57d,_0x1a234c,_0x16a0ff,_0x9ffe3){var _0x8b9b7c='';var _0x4ce31d='';var _0xfa90fe=_0x16a0ff[_0xbfac('0x1b')]('§');_0x8b9b7c=_0xfa90fe[0x0];if(_0xfa90fe[_0xbfac('0x1a')]==0x2)_0x4ce31d=_0xfa90fe[0x1];return new Promise(function(_0x4b9cbb,_0x3c10d7){return db['CmContactHasItem'][_0xbfac('0x1e')]({'where':{'CmContactId':_0x48b57d,'item':_0x8b9b7c}})[_0xbfac('0x19')](function(_0x1db465){if(_0x1db465){return db[_0xbfac('0x1f')]['update']({'ItemTypeId':_0x1a234c,'description':_0x4ce31d,'OrderBy':_0x9ffe3},{'where':{'CmContactId':_0x48b57d,'item':_0x8b9b7c}})[_0xbfac('0x19')](function(_0x11932f){_0x4b9cbb({'res':_0xbfac('0x20')});});}else{return db[_0xbfac('0x1f')][_0xbfac('0x21')]({'CmContactId':_0x48b57d,'item':_0x8b9b7c,'description':_0x4ce31d,'ItemTypeId':_0x1a234c,'OrderBy':_0x9ffe3,'ItemClass':'PHONE'})[_0xbfac('0x19')](function(_0x153828){_0x4b9cbb({'res':_0xbfac('0x22')});});}});});}function insertCmHopper(_0x3c5a0a,_0x4b8644,_0xb1c555,_0x306675,_0x143f67){var _0x36bfe7=[_0xbfac('0x23'),_0xbfac('0x24'),'cm_contacts.id','cm_contacts.ListId',_0x4b8644+'.'+_0x306675,_0xbfac('0x25'),_0xbfac('0x26'),_0xbfac('0x27'),_0xbfac('0x28'),'\x22'+_0x143f67+'\x22'];return squel['insert']()[_0xbfac('0x29')](_0xbfac('0x2a'))['fromQuery']([_0xbfac('0xf'),_0xbfac('0x2b'),_0xbfac('0x2c'),_0xbfac('0x2d'),_0x306675,'createdAt',_0xbfac('0x2e'),_0xbfac('0x2f'),_0xbfac('0x30'),'recallme'],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x36bfe7)['from'](_0x4b8644)[_0xbfac('0x11')]('cm_contacts',null,_0xbfac('0x32')+_0x4b8644+_0xbfac('0x33'))['join'](_0xb1c555,null,_0xb1c555+_0xbfac('0x12')+_0x4b8644+'.'+_0x306675)['where'](_0x4b8644+_0xbfac('0x34'),_0x3c5a0a)[_0xbfac('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4b8644,_0xb1c555,_0x306675,'cm_hopper',['\x22always\x22','\x22onlyIfOpen\x22']))[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4b8644,_0xb1c555,_0x306675,_0xbfac('0x2a'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x685d46,_0x150202,_0x23b746,_0x37978f){var _0x40a4fb=['cm_contacts.phone',_0xbfac('0x36'),_0xbfac('0x37'),_0x150202+'.'+_0x37978f,_0xbfac('0x25'),_0xbfac('0x26')];return squel[_0xbfac('0x38')]()[_0xbfac('0x29')](_0xbfac('0x39'))[_0xbfac('0x3a')]([_0xbfac('0xf'),_0xbfac('0x2c'),_0xbfac('0x2d'),_0x37978f,_0xbfac('0x3b'),_0xbfac('0x2e')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x40a4fb)['from'](_0x150202)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x150202+_0xbfac('0x33'))['join'](_0x23b746,null,_0x23b746+_0xbfac('0x12')+_0x150202+'.'+_0x37978f)[_0xbfac('0x13')](_0x150202+'.CmListId\x20=\x20?',_0x685d46)[_0xbfac('0x13')](_0xbfac('0x3d'),NOW)[_0xbfac('0x13')](_0xbfac('0x35'),squel['select']()['field'](_0xbfac('0xf'))[_0xbfac('0x10')](_0xbfac('0x39'))[_0xbfac('0x13')](_0xbfac('0x3e'),_0x685d46)[_0xbfac('0x13')](_0x37978f+'\x20=\x20'+_0x150202+'.'+_0x37978f)))[_0xbfac('0x3f')]();}function insertTzCmHopper(_0x11d23d,_0x4bf6bf,_0x9f6f24,_0x255bf0,_0x4ece85,_0x326d7a){var _0x10ebe0=[_0xbfac('0x23'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x326d7a+'.offset-cm_contacts.utcOffset\x20minute)',_0xbfac('0x36'),_0xbfac('0x37'),_0x4bf6bf+'.'+_0x255bf0,_0xbfac('0x25'),_0xbfac('0x26'),_0xbfac('0x27'),_0xbfac('0x28'),'\x22'+_0x4ece85+'\x22'];var _0x4589f6=squel['insert']()['into']('cm_hopper')[_0xbfac('0x3a')]([_0xbfac('0xf'),'scheduledat',_0xbfac('0x2c'),_0xbfac('0x2d'),_0x255bf0,'createdAt',_0xbfac('0x2e'),_0xbfac('0x2f'),_0xbfac('0x30'),_0xbfac('0x40')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x10ebe0)[_0xbfac('0x10')](_0x4bf6bf)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x4bf6bf+_0xbfac('0x33'))[_0xbfac('0x11')](_0x9f6f24,null,_0x9f6f24+_0xbfac('0x12')+_0x4bf6bf+'.'+_0x255bf0)[_0xbfac('0x11')](_0x326d7a,null,_0x326d7a+_0xbfac('0x12')+_0x4bf6bf+'.'+_0x255bf0)[_0xbfac('0x13')](_0x4bf6bf+_0xbfac('0x34'),_0x11d23d)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xbfac('0x35'),selectNotIn(_0x4bf6bf,_0x9f6f24,_0x255bf0,_0xbfac('0x2a'),[_0xbfac('0x41'),_0xbfac('0x42')]))[_0xbfac('0x13')](_0xbfac('0x35'),selectNotIn(_0x4bf6bf,_0x9f6f24,_0x255bf0,_0xbfac('0x2a'),[_0xbfac('0x41')])))[_0xbfac('0x3f')]();return _0x4589f6;}function insertTzCmHopperBlack(_0x164976,_0x533d5d,_0x5c5777,_0x29a6b2){var _0x19e728=['cm_contacts.phone',_0xbfac('0x36'),'cm_contacts.ListId',_0x533d5d+'.'+_0x29a6b2,_0xbfac('0x25'),_0xbfac('0x26')];return squel[_0xbfac('0x38')]()['into'](_0xbfac('0x39'))[_0xbfac('0x3a')]([_0xbfac('0xf'),'ContactId',_0xbfac('0x2d'),_0x29a6b2,'createdAt',_0xbfac('0x2e')],squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x19e728)[_0xbfac('0x10')](_0x533d5d)[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x32')+_0x533d5d+'.CmListId')[_0xbfac('0x11')](_0x5c5777,null,_0x5c5777+'.id\x20=\x20'+_0x533d5d+'.'+_0x29a6b2)[_0xbfac('0x13')](_0x533d5d+_0xbfac('0x34'),_0x164976)[_0xbfac('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xbfac('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xbfac('0xd')]()[_0xbfac('0xe')]('phone')['from'](_0xbfac('0x39'))[_0xbfac('0x13')](_0xbfac('0x3e'),_0x164976)[_0xbfac('0x13')](_0x29a6b2+'\x20=\x20'+_0x533d5d+'.'+_0x29a6b2)))[_0xbfac('0x3f')]();}function insertCmHopperAdditionalPhones(_0x5e715c){var _0x26562f=[_0xbfac('0x43'),'cm_contact_has_items.item',_0xbfac('0x44'),_0xbfac('0x45'),'cm_contact_has_items.updatedAt'];return squel['insert']()[_0xbfac('0x29')](_0xbfac('0x46'))[_0xbfac('0x3a')]([_0xbfac('0x47'),_0xbfac('0xf'),_0xbfac('0x48'),_0xbfac('0x3b'),_0xbfac('0x2e')],squel[_0xbfac('0xd')]()['fields'](_0x26562f)[_0xbfac('0x10')]('cm_hopper')[_0xbfac('0x11')](_0xbfac('0x3c'),null,_0xbfac('0x49'))[_0xbfac('0x11')](_0xbfac('0x4a'),null,_0xbfac('0x4b'))[_0xbfac('0x13')](_0xbfac('0x4c'),_0x5e715c)[_0xbfac('0x13')](_0xbfac('0x3d'),NOW))['toString']();}function insertCmContact(_0x20526c,_0x28d721,_0x17a56c,_0x4241c8){var _0x2d954c=_['concat'](_[_0xbfac('0x4d')](_0x4241c8),[_0xbfac('0x2d'),_0xbfac('0x4e'),_0xbfac('0x3b'),_0xbfac('0x2e')]);return squel[_0xbfac('0x38')]()[_0xbfac('0x29')]('cm_contacts')['fromQuery'](_0x2d954c,squel['select']()[_0xbfac('0x31')](_0x2d954c)[_0xbfac('0x10')](_0x28d721)[_0xbfac('0x13')]('('+_0x17a56c[_0xbfac('0x11')](',')+_0xbfac('0x4f'),squel[_0xbfac('0xd')]()[_0xbfac('0x31')](_0x17a56c)[_0xbfac('0x10')](_0xbfac('0x3c'))['where'](_0xbfac('0x3e'),_0x20526c)[_0xbfac('0x13')](_0xbfac('0x50')))[_0xbfac('0x13')]('id\x20IN\x20?',squel['select']()[_0xbfac('0xe')]('MIN(id)',_0xbfac('0x51'))[_0xbfac('0x10')](_0x28d721)[_0xbfac('0x52')](_0x17a56c[_0xbfac('0x11')](','))))[_0xbfac('0x3f')]();}function handleStop(){logger[_0xbfac('0x53')](_0xbfac('0x54'));stopped=!![];}function handleUncaughtException(_0x11f8a4){logger[_0xbfac('0x55')](_0x11f8a4[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);}function handleError(_0x358d43,_0x2bd52e){stats[_0xbfac('0x58')][_0xbfac('0x17')]({'name':_0x2bd52e[_0xbfac('0x59')],'message':_0x2bd52e[_0xbfac('0x56')],'row':_0x358d43});}function handleQuery(_0x4f52ea){logger[_0xbfac('0x53')](_0x4f52ea);return db[_0xbfac('0x5a')][_0xbfac('0x5b')](_0x4f52ea)[_0xbfac('0x5c')](function(_0x162063){results[_0xbfac('0x17')](_0x162063);})[_0xbfac('0x5d')](function(_0x16aabc){logger['error'](_0x16aabc[_0xbfac('0x56')]);});}function updateTzCampaigns(_0x222492){return new Promise(function(_0x25b9b0,_0x4463f4){var _0x43b7bc=squel[_0xbfac('0xd')]()['fields']([_0xbfac('0x5e'),_0xbfac('0x5f')])['from'](_0xbfac('0x60'))[_0xbfac('0x11')]('campaigns_has_cm_lists',null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')['where'](_0xbfac('0x61')+_0x222492);db[_0xbfac('0x5a')][_0xbfac('0x5b')](_0x43b7bc[_0xbfac('0x3f')]())[_0xbfac('0x5c')](function(_0x303525){var _0x4f4ff6=[];for(var _0x594be3=0x0;_0x594be3<_0x303525[_0xbfac('0x1a')];_0x594be3++){_0x4f4ff6[_0xbfac('0x17')](getTimezoneData(_0x303525[_0x594be3],tmp_campaigns));}BPromise[_0xbfac('0x18')](_0x4f4ff6)[_0xbfac('0x19')](function(){_0x25b9b0({'val':0x1});});})[_0xbfac('0x5d')](function(_0x3cdc1e){logger['error'](_0x3cdc1e[_0xbfac('0x56')]);_0x25b9b0({'val':0x0});});});}function updateTzVoiceQueues(_0x44eb62){return new Promise(function(_0x32e68b,_0x5774c9){var _0x5e825b=squel[_0xbfac('0xd')]()[_0xbfac('0x31')]([_0xbfac('0x62'),_0xbfac('0x63')])['from'](_0xbfac('0x64'))[_0xbfac('0x11')]('voice_queues_has_cm_lists',null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0xbfac('0x13')](_0xbfac('0x65')+_0x44eb62);db['sequelize'][_0xbfac('0x5b')](_0x5e825b[_0xbfac('0x3f')]())[_0xbfac('0x5c')](function(_0x163efc){var _0x2ff5e3=[];for(var _0x21d7d0=0x0;_0x21d7d0<_0x163efc[_0xbfac('0x1a')];_0x21d7d0++){_0x2ff5e3['push'](getTimezoneData(_0x163efc[_0x21d7d0],tmp_voice_queues));}BPromise[_0xbfac('0x18')](_0x2ff5e3)[_0xbfac('0x19')](function(){_0x32e68b({'val':0x1});});})[_0xbfac('0x5d')](function(_0x451a88){logger['error'](_0x451a88[_0xbfac('0x56')]);_0x32e68b({'val':0x0});});});}function getTimezoneData(_0x575f9a,_0xce0566){return new Promise(function(_0x1c7b99,_0x1cd7c2){var _0x1da2e8=shared[_0xbfac('0x66')];var _0x1795ab=_0x1da2e8[_0x575f9a[_0xbfac('0x67')]];if(_[_0xbfac('0x1c')](_0x1795ab)){_0x1c7b99({'ret':0x1});}else{var _0x159d73=_0x1795ab[_0xbfac('0x68')];var _0x1ac4ed=squel['insert']()[_0xbfac('0x29')](_0xce0566)['set']('id',_0x575f9a['id'])[_0xbfac('0x69')]('offset',_0x159d73)[_0xbfac('0x69')](_0xbfac('0x67'),_0x575f9a[_0xbfac('0x67')])[_0xbfac('0x3f')]();return db['sequelize'][_0xbfac('0x5b')](_0x1ac4ed)[_0xbfac('0x5c')](function(_0x500b52){_0x1c7b99({'ret':0x1});})[_0xbfac('0x5d')](function(_0x56a6d9){logger[_0xbfac('0x55')](_0x56a6d9[_0xbfac('0x56')]);_0x1cd7c2({'ret':0x1});});}});}function handleTZQuery(_0x3f4b7e){logger['info'](_0x3f4b7e);return db[_0xbfac('0x5a')]['query'](_0x3f4b7e)['spread'](function(_0x4df827){})['catch'](function(_0x52411a){logger[_0xbfac('0x55')](_0x52411a[_0xbfac('0x56')]);});}function main(_0x59281c,_0x368ab7,_0x119391,_0x3f00a3){logger[_0xbfac('0x53')](_0xbfac('0x6a'),_0x59281c,JSON[_0xbfac('0x6b')](_0x368ab7));process[_0xbfac('0x6c')](_0xbfac('0x6d'));var _0x496863=_0x368ab7[_0xbfac('0x6e')];var _0x16e8b9=_[_0xbfac('0x6f')](_0x496863);var _0x46c340=_0x368ab7[_0xbfac('0x70')];var _0x14ee4f=path[_0xbfac('0x11')](config['root'],_0xbfac('0x71'),_0x46c340+'.csv');hasTZ=_[_0xbfac('0x4d')](_0x496863)[_0xbfac('0x72')](_0xbfac('0x67'));var _0x1d9d47=_[_0xbfac('0x4d')](_0x496863)[_0xbfac('0x11')]();logger[_0xbfac('0x53')]('header',_0x1d9d47);db['ContactItemType'][_0xbfac('0x15')]({'raw':!![],'attributes':['id',_0xbfac('0x73')]})[_0xbfac('0x19')](function(_0x574972){for(var _0x22df85=0x0;_0x22df85<_0x574972[_0xbfac('0x1a')];_0x22df85++){if(_0x574972[_0x22df85][_0xbfac('0x73')]in _0x496863){contactItemTypes[_0xbfac('0x17')](_0x574972[_0x22df85]);delete _0x16e8b9[_0x574972[_0x22df85][_0xbfac('0x73')]];hasAdditionalPhones=!![];}for(var _0x28076f in _0x496863){if(_0x574972[_0x22df85][_0xbfac('0x73')]+'_description'===_0x28076f){phoneDescriptions['push']({'itemTypeId':_0x574972[_0x22df85]['id'],'description':_0x28076f});delete _0x16e8b9[_0x28076f];}}}if(hasAdditionalPhones)_0x16e8b9[_0xbfac('0x16')]='';var _0x375f30=_[_0xbfac('0x4d')](_0x16e8b9)['join']();logger[_0xbfac('0x53')](_0xbfac('0x74'),_0x375f30);fs[_0xbfac('0x75')](_0x14ee4f,_0x375f30+'\x0a');Papa['parse'](fs[_0xbfac('0x76')](_0x59281c),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2fee76,_0x2d3502){try{for(var _0x332a0b=0x0,_0x275644=[];_0x332a0b<_0x2fee76['data'][_0xbfac('0x1a')];_0x332a0b++){stats[_0xbfac('0x77')]+=0x1;if(_0x2fee76[_0xbfac('0x58')][_0x332a0b]){handleError(_0x2fee76[_0xbfac('0x78')][_0x332a0b],_0x2fee76['errors'][_0x332a0b]);}else{var _0x38f0c8=[];var _0xc41684=[];var _0x183514={};for(var _0xa8951a in _0x496863){let _0x17e1f3=contactItemTypes[_0xbfac('0x79')](_0x1279a8=>_0x1279a8['name']===_0xa8951a);let _0x4f0381=contactItemTypes[_0xbfac('0x79')](_0x482410=>_0x482410[_0xbfac('0x73')]+_0xbfac('0x7a')===_0xa8951a);if(_['isNil'](_0x17e1f3)&&_[_0xbfac('0x1c')](_0x4f0381)){if(_0x496863['hasOwnProperty'](_0xa8951a)){if(_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]]){var _0x4b9c0c=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]][_0xbfac('0x7c')](/"/g,'\x27'));switch(_0xa8951a){case _0xbfac('0x2b'):var _0x13f504=moment(_0x4b9c0c,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x13f504[_0xbfac('0x7d')]()){_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8[_0xbfac('0x17')](_0xbfac('0x7e'));}break;case'priority':var _0x5c0688=parseInt(_0x4b9c0c);_0x4b9c0c=_['isNaN'](_0x5c0688)||_0x5c0688<0x0||_0x5c0688>0x4?_0x3f00a3?0x3:0x2:_0x5c0688;_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');break;case _0xbfac('0x30'):var _0x2aa933=parseInt(_0x4b9c0c);if(_['isNumber'](_0x2aa933)&&_[_0xbfac('0x72')](_0x119391,_0x2aa933)){_0x275644[_0xbfac('0x17')]('\x22'+_0x2aa933+'\x22');}else{_0x38f0c8['push'](_0xbfac('0x7f'));}break;case _0xbfac('0x80'):if(isEmail(_0x4b9c0c)){_0x275644['push']('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8['push'](_0xbfac('0x81'));}break;case _0xbfac('0x82'):var _0x39fcab=moment(_0x4b9c0c,_0xbfac('0x83'),!![]);if(_0x39fcab[_0xbfac('0x7d')]()){_0x275644['push']('\x22'+_0x4b9c0c+'\x22');}else{_0x38f0c8[_0xbfac('0x17')](_0xbfac('0x84'));}break;case'dialTimezone':var _0x6fe5b2=shared[_0xbfac('0x66')];var _0x4a7c63=_0x6fe5b2[_0x4b9c0c];if(!_['isNil'](_0x4a7c63)){var _0x19b8e7=_0x4a7c63[_0xbfac('0x68')];_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');_0x275644['push']('\x22'+_0x19b8e7+'\x22');}break;default:_0x275644[_0xbfac('0x17')]('\x22'+_0x4b9c0c+'\x22');}}else{switch(_0xa8951a){case'firstName':case _0xbfac('0xf'):_0x38f0c8[_0xbfac('0x17')](_0xa8951a+_0xbfac('0x85'));break;default:_0x275644[_0xbfac('0x17')]('\x22\x22');}}}}else{var _0x3ee4c9='';if(!_['isNil'](_0x17e1f3)){if(!_0x183514[_0xbfac('0x86')](_0x17e1f3['id'])){if(!_[_0xbfac('0x1c')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]])){var _0x4b9c0c=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0xa8951a]][_0xbfac('0x7c')](/"/g,'\x27'));var _0x3ef609=phoneDescriptions[_0xbfac('0x79')](_0x1d550f=>_0x1d550f['itemTypeId']===_0x17e1f3['id']);if(!_['isNil'](_0x3ef609)){var _0x45f629=_[_0xbfac('0x7b')](_0x2fee76[_0xbfac('0x78')][_0x332a0b][_0x496863[_0x3ef609[_0xbfac('0x87')]]][_0xbfac('0x7c')](/"/g,'\x27'));if(!_[_0xbfac('0x1c')](_0x45f629))_0x4b9c0c=_0x4b9c0c+'§'+_0x45f629;}if(_0x3ee4c9=='')_0x3ee4c9=_0x4b9c0c;else _0x3ee4c9+='|'+_0x4b9c0c;}_0xc41684[_0xbfac('0x17')](_0x17e1f3['id']+':'+_0x3ee4c9);_0x183514[_0x17e1f3['id']]=0x1;}}}}if(hasAdditionalPhones){_0x275644[_0xbfac('0x17')]('\x22'+_0xc41684[_0xbfac('0x11')](';')+'\x22');}if(_0x38f0c8[_0xbfac('0x1a')]){handleError(_0x2fee76[_0xbfac('0x78')][_0x332a0b],{'code':_0xbfac('0x88'),'message':_0x38f0c8[_0xbfac('0x11')]()});}else{fs['appendFileSync'](_0x14ee4f,_0x275644[_0xbfac('0x11')]()+'\x0a');}_0x275644=[];}if(!(stats[_0xbfac('0x77')]%0xc8)){socket[_0xbfac('0x89')](_0xbfac('0x8a')+_0x46c340,stats);stats[_0xbfac('0x58')]=[];}}if(stopped){logger[_0xbfac('0x53')](_0xbfac('0x8b'));_0x2d3502[_0xbfac('0x8c')]();}}catch(_0xe2484d){handleError(_0x2fee76['data'][_0x332a0b],{'code':_0xbfac('0x8d'),'message':_0xe2484d[_0xbfac('0x56')]});logger['error'](_0xbfac('0x8e'),_0xe2484d['message']);}},'complete':function(){try{var _0x43d5c1=[];var _0x405932=[];var _0x3e9b91=_0xbfac('0x3c');if(_0x368ab7['duplicates']&&_0x368ab7['duplicates'][_0xbfac('0x1a')]){_0x3e9b91=_0xbfac('0x8f')+_0x46c340;_0x43d5c1['push'](_0xbfac('0x90')+_0x3e9b91+_0xbfac('0x91'));}tmp_campaigns=_0xbfac('0x92')+_0x46c340;tmp_voice_queues='voice_queues_'+_0x46c340;_0x405932[_0xbfac('0x17')](_0xbfac('0x90')+tmp_campaigns+_0xbfac('0x93'));_0x405932[_0xbfac('0x17')](_0xbfac('0x90')+tmp_voice_queues+_0xbfac('0x93'));BPromise[_0xbfac('0x94')](_0x405932,handleTZQuery)['then'](function(_0x29d04f){updateTzCampaigns(_0x368ab7['ListId'])[_0xbfac('0x19')](function(_0x2a2018){updateTzVoiceQueues(_0x368ab7[_0xbfac('0x2d')])['then'](function(_0x338cf2){if(hasTZ)_0x375f30=_0x375f30[_0xbfac('0x7c')](_0xbfac('0x67'),'dialTimezone,utcOffset');var _0x48f6f0=util['format'](_0xbfac('0x95'),_0x14ee4f,_0x3e9b91,_0x375f30,_0x368ab7[_0xbfac('0x2d')],_0x368ab7['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x496863[_0xbfac('0x2b')])){_0x48f6f0+=',\x20scheduledAt\x20=\x20NOW()';}_0x43d5c1[_0xbfac('0x17')](_0x48f6f0);if(_0x368ab7[_0xbfac('0x96')]&&_0x368ab7[_0xbfac('0x96')][_0xbfac('0x1a')]){_0x43d5c1[_0xbfac('0x17')](insertCmContact(_0x368ab7[_0xbfac('0x2d')],_0x3e9b91,_0x368ab7[_0xbfac('0x96')],_0x496863));_0x43d5c1['push']('DROP\x20TABLE\x20'+_0x3e9b91+';');}BPromise[_0xbfac('0x94')](_0x43d5c1,handleQuery)[_0xbfac('0x19')](function(_0x285713){BPromise[_0xbfac('0x18')]([handleAdditionalPhones()])[_0xbfac('0x19')](function(){_0x43d5c1=[];for(var _0x513782=0x0;_0x513782<promisesAdditionalPhones[_0xbfac('0x1a')];_0x513782++){if(promisesAdditionalPhones[_0x513782][_0xbfac('0xf')]!='§'){_0x43d5c1['push'](createAdditionalPhone(promisesAdditionalPhones[_0x513782][_0xbfac('0x97')],promisesAdditionalPhones[_0x513782][_0xbfac('0x98')],promisesAdditionalPhones[_0x513782][_0xbfac('0xf')],promisesAdditionalPhones[_0x513782][_0xbfac('0x99')]));}}BPromise[_0xbfac('0x18')](_0x43d5c1)[_0xbfac('0x19')](function(){_0x43d5c1=[];if(hasTZ){_0x43d5c1[_0xbfac('0x17')](insertTzCmHopper(_0x368ab7['ListId'],_0xbfac('0x9a'),'voice_queues',_0xbfac('0x9b'),_0x3f00a3,tmp_voice_queues));_0x43d5c1[_0xbfac('0x17')](insertTzCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9c'),_0xbfac('0x64'),_0xbfac('0x9b')));_0x43d5c1['push'](insertTzCmHopper(_0x368ab7['ListId'],_0xbfac('0x9d'),_0xbfac('0x60'),_0xbfac('0x9e'),_0x3f00a3,tmp_campaigns));_0x43d5c1[_0xbfac('0x17')](insertTzCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9f'),_0xbfac('0x60'),_0xbfac('0x9e')));_0x43d5c1[_0xbfac('0x17')](insertCmHopperAdditionalPhones(_0x368ab7['ListId']));}else{_0x43d5c1['push'](insertCmHopper(_0x368ab7[_0xbfac('0x2d')],'voice_queues_has_cm_lists','voice_queues',_0xbfac('0x9b'),_0x3f00a3));_0x43d5c1[_0xbfac('0x17')](insertCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9c'),_0xbfac('0x64'),'VoiceQueueId'));_0x43d5c1[_0xbfac('0x17')](insertCmHopper(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9d'),_0xbfac('0x60'),_0xbfac('0x9e'),_0x3f00a3));_0x43d5c1[_0xbfac('0x17')](insertCmHopperBlack(_0x368ab7[_0xbfac('0x2d')],_0xbfac('0x9f'),_0xbfac('0x60'),_0xbfac('0x9e')));_0x43d5c1[_0xbfac('0x17')](insertCmHopperAdditionalPhones(_0x368ab7['ListId']));}_0x43d5c1[_0xbfac('0x17')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x43d5c1['push'](_0xbfac('0xa0')+tmp_voice_queues+';');BPromise[_0xbfac('0x94')](_0x43d5c1,handleQuery)[_0xbfac('0x19')](function(_0x4b9107){stats[_0xbfac('0xa1')]=!![];stats[_0xbfac('0xa2')]=_0x368ab7[_0xbfac('0x96')]&&_0x368ab7[_0xbfac('0x96')]['length']?results[0x2][_0xbfac('0xa2')]:results[0x0][_0xbfac('0xa2')];socket[_0xbfac('0x89')](_0xbfac('0x8a')+_0x46c340,stats);fs[_0xbfac('0xa3')](_0x59281c);fs[_0xbfac('0xa3')](_0x14ee4f);process[_0xbfac('0x57')](0x0);})[_0xbfac('0x5d')](function(_0x238ed8){logger[_0xbfac('0x55')](_0x238ed8[_0xbfac('0x56')]);process['exit'](0x1);});});});})[_0xbfac('0x5d')](function(_0x35a060){logger[_0xbfac('0x55')](_0x35a060[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);});});});});}catch(_0x5333c2){logger['error'](_0xbfac('0xa4'),_0x5333c2[_0xbfac('0x56')]);process[_0xbfac('0x57')](0x1);}},'error':function(_0x2f4964,_0x2f6f4a,_0x2effbf,_0x25ddc8){throw new Error(_0x25ddc8);}});});}function validate(){if(process[_0xbfac('0xa5')]&&process[_0xbfac('0xa5')][_0xbfac('0x1a')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x3b604e=path['join'](config['root'],_0xbfac('0x71'),process[_0xbfac('0xa5')][0x2]);if(!fs[_0xbfac('0xa6')](_0x3b604e)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x16e7eb={};try{_0x16e7eb=JSON[_0xbfac('0xa7')](process[_0xbfac('0xa5')][0x3]);if(!_0x16e7eb[_0xbfac('0x6e')]){throw new Error(_0xbfac('0xa8'));}if(!_0x16e7eb[_0xbfac('0x6e')][_0xbfac('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x16e7eb[_0xbfac('0x6e')][_0xbfac('0xa9')]){throw new Error('firstName\x20is\x20mandatory');}var _0x37f0f8=0x0;if(_0x16e7eb['binding'][_0xbfac('0x30')]){_0x37f0f8=0x1;}if(!_0x16e7eb[_0xbfac('0x2d')]){throw new Error(_0xbfac('0xaa'));}}catch(_0x51e696){throw new Error(_0xbfac('0xab'));}var _0x47315d=[];try{_0x47315d=_['map'](JSON[_0xbfac('0xa7')](process[_0xbfac('0xa5')][0x4]),'id');}catch(_0x3841a6){logger[_0xbfac('0x53')](_0xbfac('0xac'));}main(_0x3b604e,_0x16e7eb,_0x47315d,_0x37f0f8);}validate();process['on'](_0xbfac('0xad'),handleStop);process['on'](_0xbfac('0xae'),handleUncaughtException);
\ No newline at end of file
+var _0x6e27=['rows','find','hasOwnProperty','trim','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','itemTypeId','appendFileSync','emit','contact:import:','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_lists','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','where','.dialCheckDuplicateType\x20IN\x20(','join','CmContact','findAll','then','length','all','AdditionalPhones','split','push','isNil','filter','CmContactHasItem','findOne','update','updated','create','inserted','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','insert','into','cm_hopper','scheduledat','ContactId','ListId','createdAt','priority','UserId','recallme','select','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.phone','cm_contacts.updatedAt','cm_hopper_black','fromQuery','updatedAt','.id\x20=\x20','\x20=\x20','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','.CmListId','toString','fields','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','info','Received\x20SIGINT','error','message','exit','errors','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists.CmListId=','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','stringify','binding','clone','socket_timestamp','root','server/files/tmp','.csv','ContactItemType','name','_description','header','parse','data'];(function(_0x1c3242,_0x1025ff){var _0x10aa87=function(_0x51d317){while(--_0x51d317){_0x1c3242['push'](_0x1c3242['shift']());}};_0x10aa87(++_0x1025ff);}(_0x6e27,0x19f));var _0x76e2=function(_0x302b5e,_0x564a8e){_0x302b5e=_0x302b5e-0x0;var _0x523ab7=_0x6e27[_0x302b5e];return _0x523ab7;};'use strict';var fs=require('fs');var path=require(_0x76e2('0x0'));var _=require(_0x76e2('0x1'));var Papa=require(_0x76e2('0x2'));var util=require(_0x76e2('0x3'));var BPromise=require(_0x76e2('0x4'));var moment=require(_0x76e2('0x5'));var squel=require(_0x76e2('0x6'));var Redis=require(_0x76e2('0x7'));var db=require(_0x76e2('0x8'))['db'];var config=require(_0x76e2('0x9'));var shared=require(_0x76e2('0xa'));var logger=require('../../../config/logger')('import');config[_0x76e2('0xb')]=_[_0x76e2('0xc')](config[_0x76e2('0xb')],{'host':_0x76e2('0xd'),'port':0x18eb});var socket=require(_0x76e2('0xe'))(new Redis(config[_0x76e2('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x76e2('0xf')](_0x76e2('0x10'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x76e2('0xf')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x168669){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))*$/[_0x76e2('0x11')](_0x168669);}function selectNotIn(_0x32368e,_0x2c3c01,_0x2a1c2d,_0x40dcc1,_0x4aa492){return squel['select']()[_0x76e2('0x12')](_0x76e2('0x13'))[_0x76e2('0x14')](_0x40dcc1)['join'](_0x2c3c01,null,_0x2c3c01+'.id\x20=\x20'+_0x40dcc1+'.'+_0x2a1c2d)['where'](_0x40dcc1+'.'+_0x2a1c2d+'\x20=\x20'+_0x32368e+'.'+_0x2a1c2d)[_0x76e2('0x15')](_0x2c3c01+_0x76e2('0x16')+_0x4aa492[_0x76e2('0x17')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x25002a,_0x4e30cd){promisesAdditionalPhones=[];return db[_0x76e2('0x18')][_0x76e2('0x19')]({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x76e2('0x1a')](function(_0x30def3){if(_0x30def3!==null){var _0xbb19f3=[];for(var _0x4f0eaf=0x0;_0x4f0eaf<_0x30def3[_0x76e2('0x1b')];_0x4f0eaf++){var _0x375fe0=_0x30def3[_0x4f0eaf];_0xbb19f3['push'](insertAdditionalPhones(_0x375fe0));}}Promise[_0x76e2('0x1c')](_0xbb19f3)[_0x76e2('0x1a')](function(){_0x25002a({'val':0x1});});});});}function insertAdditionalPhones(_0x470f0a){return new Promise(function(_0x217a74,_0x9d0d43){var _0x521b0b=_0x470f0a[_0x76e2('0x1d')];var _0x4e13a7=_0x521b0b[_0x76e2('0x1e')](';');var _0x362f95=[];orderBy=0x0;for(var _0x40a452=0x0;_0x40a452<_0x4e13a7['length'];_0x40a452++){_0x362f95[_0x76e2('0x1f')](splitAdditionalPhone(_0x470f0a['id'],_0x4e13a7[_0x40a452]));}Promise[_0x76e2('0x1c')](_0x362f95)[_0x76e2('0x1a')](function(){_0x217a74({'val':_0x4e13a7[_0x76e2('0x1b')]});});});}function splitAdditionalPhone(_0x478757,_0xdb81bc){return new Promise(function(_0x116caa,_0x4172ba){var _0x10110d=_0xdb81bc[_0x76e2('0x1e')](':');var _0x12c315=_0x10110d[0x0];var _0x1f40b6=_0x10110d[0x1];if(!_[_0x76e2('0x20')](_0x1f40b6)){var _0x1c5431=_0x1f40b6[_0x76e2('0x1e')]('|');var _0x1ce80c=[];for(var _0x4a6063=0x0;_0x4a6063<_0x1c5431[_0x76e2('0x1b')];_0x4a6063++){if(_0x1c5431[_0x4a6063]!==''){var _0x35e6a4=_[_0x76e2('0x21')](promisesAdditionalPhones,{'contactId':_0x478757,'phone':_0x1c5431[_0x4a6063]});if(_0x35e6a4[_0x76e2('0x1b')]==0x0){orderBy++;promisesAdditionalPhones[_0x76e2('0x1f')]({'contactId':_0x478757,'contactTypeId':_0x12c315,'phone':_0x1c5431[_0x4a6063],'orderBy':orderBy});}}}_0x116caa({'ok':0x1});}else _0x116caa({'res':0x0});});}function createAdditionalPhone(_0x51819e,_0x416919,_0x5c1139,_0x4e459a){var _0x4c5110='';var _0x33bb3c='';var _0x466f99=_0x5c1139['split']('§');_0x4c5110=_0x466f99[0x0];if(_0x466f99[_0x76e2('0x1b')]==0x2)_0x33bb3c=_0x466f99[0x1];return new Promise(function(_0x3e3691,_0x2bcfaa){return db[_0x76e2('0x22')][_0x76e2('0x23')]({'where':{'CmContactId':_0x51819e,'item':_0x4c5110}})[_0x76e2('0x1a')](function(_0x336d1c){if(_0x336d1c){return db[_0x76e2('0x22')][_0x76e2('0x24')]({'ItemTypeId':_0x416919,'description':_0x33bb3c,'OrderBy':_0x4e459a},{'where':{'CmContactId':_0x51819e,'item':_0x4c5110}})[_0x76e2('0x1a')](function(_0x172245){_0x3e3691({'res':_0x76e2('0x25')});});}else{return db['CmContactHasItem'][_0x76e2('0x26')]({'CmContactId':_0x51819e,'item':_0x4c5110,'description':_0x33bb3c,'ItemTypeId':_0x416919,'OrderBy':_0x4e459a,'ItemClass':'PHONE'})['then'](function(_0x3de660){_0x3e3691({'res':_0x76e2('0x27')});});}});});}function insertCmHopper(_0x562caa,_0x3fe263,_0x26bf6d,_0x1d475a,_0x131d03){var _0x17d199=['cm_contacts.phone',_0x76e2('0x28'),_0x76e2('0x29'),_0x76e2('0x2a'),_0x3fe263+'.'+_0x1d475a,_0x76e2('0x2b'),'cm_contacts.updatedAt',_0x76e2('0x2c'),'cm_contacts.UserId','\x22'+_0x131d03+'\x22'];return squel[_0x76e2('0x2d')]()[_0x76e2('0x2e')](_0x76e2('0x2f'))['fromQuery'](['phone',_0x76e2('0x30'),_0x76e2('0x31'),_0x76e2('0x32'),_0x1d475a,_0x76e2('0x33'),'updatedAt',_0x76e2('0x34'),_0x76e2('0x35'),_0x76e2('0x36')],squel[_0x76e2('0x37')]()['fields'](_0x17d199)[_0x76e2('0x14')](_0x3fe263)[_0x76e2('0x17')](_0x76e2('0x38'),null,_0x76e2('0x39')+_0x3fe263+'.CmListId')[_0x76e2('0x17')](_0x26bf6d,null,_0x26bf6d+'.id\x20=\x20'+_0x3fe263+'.'+_0x1d475a)[_0x76e2('0x15')](_0x3fe263+_0x76e2('0x3a'),_0x562caa)['where'](_0x76e2('0x3b'),NOW)[_0x76e2('0x15')](_0x76e2('0x3c'),selectNotIn(_0x3fe263,_0x26bf6d,_0x1d475a,_0x76e2('0x2f'),[_0x76e2('0x3d'),_0x76e2('0x3e')]))[_0x76e2('0x15')](_0x76e2('0x3c'),selectNotIn(_0x3fe263,_0x26bf6d,_0x1d475a,_0x76e2('0x2f'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x3a0a84,_0xf050f2,_0x2ef3ee,_0x12a1e2){var _0x4b9f06=[_0x76e2('0x3f'),_0x76e2('0x29'),_0x76e2('0x2a'),_0xf050f2+'.'+_0x12a1e2,_0x76e2('0x2b'),_0x76e2('0x40')];return squel[_0x76e2('0x2d')]()[_0x76e2('0x2e')](_0x76e2('0x41'))[_0x76e2('0x42')]([_0x76e2('0x13'),'ContactId',_0x76e2('0x32'),_0x12a1e2,'createdAt',_0x76e2('0x43')],squel['select']()['fields'](_0x4b9f06)[_0x76e2('0x14')](_0xf050f2)['join'](_0x76e2('0x38'),null,_0x76e2('0x39')+_0xf050f2+'.CmListId')[_0x76e2('0x17')](_0x2ef3ee,null,_0x2ef3ee+_0x76e2('0x44')+_0xf050f2+'.'+_0x12a1e2)[_0x76e2('0x15')](_0xf050f2+_0x76e2('0x3a'),_0x3a0a84)[_0x76e2('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x76e2('0x3c'),squel[_0x76e2('0x37')]()[_0x76e2('0x12')](_0x76e2('0x13'))[_0x76e2('0x14')]('cm_hopper_black')[_0x76e2('0x15')]('ListId\x20=\x20?',_0x3a0a84)[_0x76e2('0x15')](_0x12a1e2+_0x76e2('0x45')+_0xf050f2+'.'+_0x12a1e2)))['toString']();}function insertTzCmHopper(_0x43c3c3,_0xb766c6,_0x627251,_0x4bf4a7,_0x18d99c,_0x10f7d3){var _0x759be7=['cm_contacts.phone',_0x76e2('0x46')+_0x10f7d3+_0x76e2('0x47'),_0x76e2('0x29'),_0x76e2('0x2a'),_0xb766c6+'.'+_0x4bf4a7,'cm_contacts.createdAt',_0x76e2('0x40'),_0x76e2('0x2c'),'cm_contacts.UserId','\x22'+_0x18d99c+'\x22'];var _0xae55bc=squel[_0x76e2('0x2d')]()[_0x76e2('0x2e')](_0x76e2('0x2f'))[_0x76e2('0x42')]([_0x76e2('0x13'),'scheduledat',_0x76e2('0x31'),'ListId',_0x4bf4a7,_0x76e2('0x33'),'updatedAt',_0x76e2('0x34'),'UserId',_0x76e2('0x36')],squel[_0x76e2('0x37')]()['fields'](_0x759be7)[_0x76e2('0x14')](_0xb766c6)[_0x76e2('0x17')](_0x76e2('0x38'),null,_0x76e2('0x39')+_0xb766c6+_0x76e2('0x48'))[_0x76e2('0x17')](_0x627251,null,_0x627251+_0x76e2('0x44')+_0xb766c6+'.'+_0x4bf4a7)[_0x76e2('0x17')](_0x10f7d3,null,_0x10f7d3+_0x76e2('0x44')+_0xb766c6+'.'+_0x4bf4a7)['where'](_0xb766c6+_0x76e2('0x3a'),_0x43c3c3)[_0x76e2('0x15')](_0x76e2('0x3b'),NOW)[_0x76e2('0x15')](_0x76e2('0x3c'),selectNotIn(_0xb766c6,_0x627251,_0x4bf4a7,_0x76e2('0x2f'),['\x22always\x22',_0x76e2('0x3e')]))[_0x76e2('0x15')](_0x76e2('0x3c'),selectNotIn(_0xb766c6,_0x627251,_0x4bf4a7,'cm_hopper',[_0x76e2('0x3d')])))[_0x76e2('0x49')]();return _0xae55bc;}function insertTzCmHopperBlack(_0x329724,_0x38de24,_0x499f12,_0xa8f548){var _0x579145=[_0x76e2('0x3f'),_0x76e2('0x29'),'cm_contacts.ListId',_0x38de24+'.'+_0xa8f548,_0x76e2('0x2b'),_0x76e2('0x40')];return squel[_0x76e2('0x2d')]()['into'](_0x76e2('0x41'))[_0x76e2('0x42')]([_0x76e2('0x13'),'ContactId',_0x76e2('0x32'),_0xa8f548,'createdAt',_0x76e2('0x43')],squel['select']()[_0x76e2('0x4a')](_0x579145)['from'](_0x38de24)[_0x76e2('0x17')]('cm_contacts',null,_0x76e2('0x39')+_0x38de24+_0x76e2('0x48'))[_0x76e2('0x17')](_0x499f12,null,_0x499f12+_0x76e2('0x44')+_0x38de24+'.'+_0xa8f548)[_0x76e2('0x15')](_0x38de24+_0x76e2('0x3a'),_0x329724)[_0x76e2('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x76e2('0x15')](_0x76e2('0x3c'),squel[_0x76e2('0x37')]()[_0x76e2('0x12')](_0x76e2('0x13'))[_0x76e2('0x14')](_0x76e2('0x41'))[_0x76e2('0x15')]('ListId\x20=\x20?',_0x329724)[_0x76e2('0x15')](_0xa8f548+'\x20=\x20'+_0x38de24+'.'+_0xa8f548)))['toString']();}function insertCmHopperAdditionalPhones(_0x1e7821){var _0x371fcb=[_0x76e2('0x4b'),_0x76e2('0x4c'),_0x76e2('0x4d'),_0x76e2('0x4e'),'cm_contact_has_items.updatedAt'];return squel[_0x76e2('0x2d')]()['into'](_0x76e2('0x4f'))[_0x76e2('0x42')]([_0x76e2('0x50'),_0x76e2('0x13'),_0x76e2('0x51'),_0x76e2('0x33'),'updatedAt'],squel[_0x76e2('0x37')]()[_0x76e2('0x4a')](_0x371fcb)[_0x76e2('0x14')](_0x76e2('0x2f'))['join'](_0x76e2('0x38'),null,_0x76e2('0x52'))['join'](_0x76e2('0x53'),null,_0x76e2('0x54'))[_0x76e2('0x15')](_0x76e2('0x55'),_0x1e7821)[_0x76e2('0x15')](_0x76e2('0x3b'),NOW))[_0x76e2('0x49')]();}function insertCmContact(_0x59f98d,_0x215661,_0x3d76ae,_0x5b350c){var _0x59d192=_[_0x76e2('0x56')](_[_0x76e2('0x57')](_0x5b350c),[_0x76e2('0x32'),_0x76e2('0x58'),_0x76e2('0x33'),'updatedAt']);return squel['insert']()['into'](_0x76e2('0x38'))[_0x76e2('0x42')](_0x59d192,squel[_0x76e2('0x37')]()[_0x76e2('0x4a')](_0x59d192)['from'](_0x215661)['where']('('+_0x3d76ae[_0x76e2('0x17')](',')+')\x20NOT\x20IN\x20?',squel[_0x76e2('0x37')]()[_0x76e2('0x4a')](_0x3d76ae)['from'](_0x76e2('0x38'))[_0x76e2('0x15')](_0x76e2('0x59'),_0x59f98d)['where'](_0x76e2('0x5a')))[_0x76e2('0x15')]('id\x20IN\x20?',squel[_0x76e2('0x37')]()[_0x76e2('0x12')](_0x76e2('0x5b'),_0x76e2('0x5c'))[_0x76e2('0x14')](_0x215661)['group'](_0x3d76ae[_0x76e2('0x17')](','))))['toString']();}function handleStop(){logger[_0x76e2('0x5d')](_0x76e2('0x5e'));stopped=!![];}function handleUncaughtException(_0x188a4f){logger[_0x76e2('0x5f')](_0x188a4f[_0x76e2('0x60')]);process[_0x76e2('0x61')](0x1);}function handleError(_0x1a31a2,_0x4ca4ae){stats[_0x76e2('0x62')]['push']({'name':_0x4ca4ae['code'],'message':_0x4ca4ae[_0x76e2('0x60')],'row':_0x1a31a2});}function handleQuery(_0x5ef34d){logger[_0x76e2('0x5d')](_0x5ef34d);return db[_0x76e2('0x63')][_0x76e2('0x64')](_0x5ef34d)[_0x76e2('0x65')](function(_0x5cd58f){results[_0x76e2('0x1f')](_0x5cd58f);})[_0x76e2('0x66')](function(_0x369cba){logger['error'](_0x369cba[_0x76e2('0x60')]);});}function updateTzCampaigns(_0x5010da){return new Promise(function(_0x383a73,_0x3514aa){var _0x4a6e8c=squel[_0x76e2('0x37')]()['fields']([_0x76e2('0x67'),_0x76e2('0x68')])[_0x76e2('0x14')]('campaigns')[_0x76e2('0x17')]('campaigns_has_cm_lists',null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x76e2('0x15')](_0x76e2('0x69')+_0x5010da);db[_0x76e2('0x63')][_0x76e2('0x64')](_0x4a6e8c[_0x76e2('0x49')]())['spread'](function(_0x551826){var _0x35fc7d=[];for(var _0x118d85=0x0;_0x118d85<_0x551826['length'];_0x118d85++){_0x35fc7d[_0x76e2('0x1f')](getTimezoneData(_0x551826[_0x118d85],tmp_campaigns));}BPromise[_0x76e2('0x1c')](_0x35fc7d)[_0x76e2('0x1a')](function(){_0x383a73({'val':0x1});});})['catch'](function(_0x141873){logger['error'](_0x141873['message']);_0x383a73({'val':0x0});});});}function updateTzVoiceQueues(_0x28b887){return new Promise(function(_0x5ac97c,_0x282287){var _0x1c9526=squel[_0x76e2('0x37')]()[_0x76e2('0x4a')](['voice_queues.id',_0x76e2('0x6a')])[_0x76e2('0x14')](_0x76e2('0x6b'))['join']('voice_queues_has_cm_lists',null,_0x76e2('0x6c'))['where'](_0x76e2('0x6d')+_0x28b887);db[_0x76e2('0x63')][_0x76e2('0x64')](_0x1c9526[_0x76e2('0x49')]())['spread'](function(_0x462c29){var _0x5353ef=[];for(var _0x233e44=0x0;_0x233e44<_0x462c29['length'];_0x233e44++){_0x5353ef['push'](getTimezoneData(_0x462c29[_0x233e44],tmp_voice_queues));}BPromise[_0x76e2('0x1c')](_0x5353ef)['then'](function(){_0x5ac97c({'val':0x1});});})['catch'](function(_0x2d6933){logger[_0x76e2('0x5f')](_0x2d6933[_0x76e2('0x60')]);_0x5ac97c({'val':0x0});});});}function getTimezoneData(_0x158e74,_0x53c57a){return new Promise(function(_0xb568e3,_0x49a8b1){var _0x53b058=shared[_0x76e2('0x6e')];var _0x27b120=_0x53b058[_0x158e74[_0x76e2('0x6f')]];if(_[_0x76e2('0x20')](_0x27b120)){_0xb568e3({'ret':0x1});}else{var _0x363909=_0x27b120[_0x76e2('0x70')];var _0x35fa2c=squel[_0x76e2('0x2d')]()[_0x76e2('0x2e')](_0x53c57a)[_0x76e2('0x71')]('id',_0x158e74['id'])['set']('offset',_0x363909)[_0x76e2('0x71')](_0x76e2('0x6f'),_0x158e74[_0x76e2('0x6f')])[_0x76e2('0x49')]();return db['sequelize'][_0x76e2('0x64')](_0x35fa2c)[_0x76e2('0x65')](function(_0xf8115a){_0xb568e3({'ret':0x1});})[_0x76e2('0x66')](function(_0x58d06e){logger['error'](_0x58d06e[_0x76e2('0x60')]);_0x49a8b1({'ret':0x1});});}});}function handleTZQuery(_0x3f8f55){logger['info'](_0x3f8f55);return db[_0x76e2('0x63')]['query'](_0x3f8f55)[_0x76e2('0x65')](function(_0x2fc3e7){})[_0x76e2('0x66')](function(_0x5561a5){logger[_0x76e2('0x5f')](_0x5561a5[_0x76e2('0x60')]);});}function main(_0x23c46f,_0xcb99de,_0x2ae874,_0x258241){logger[_0x76e2('0x5d')](_0x76e2('0x72'),_0x23c46f,JSON[_0x76e2('0x73')](_0xcb99de));process['send']('start');var _0x4e8278=_0xcb99de[_0x76e2('0x74')];var _0x547209=_[_0x76e2('0x75')](_0x4e8278);var _0x20667e=_0xcb99de[_0x76e2('0x76')];var _0x516a10=path['join'](config[_0x76e2('0x77')],_0x76e2('0x78'),_0x20667e+_0x76e2('0x79'));hasTZ=_[_0x76e2('0x57')](_0x4e8278)['includes'](_0x76e2('0x6f'));var _0x535a26=_['keys'](_0x4e8278)[_0x76e2('0x17')]();logger['info']('header',_0x535a26);db[_0x76e2('0x7a')]['findAll']({'raw':!![],'attributes':['id',_0x76e2('0x7b')]})[_0x76e2('0x1a')](function(_0x18408f){for(var _0x2fa411=0x0;_0x2fa411<_0x18408f[_0x76e2('0x1b')];_0x2fa411++){if(_0x18408f[_0x2fa411]['name']in _0x4e8278){contactItemTypes['push'](_0x18408f[_0x2fa411]);delete _0x547209[_0x18408f[_0x2fa411][_0x76e2('0x7b')]];hasAdditionalPhones=!![];}for(var _0x17a65f in _0x4e8278){if(_0x18408f[_0x2fa411][_0x76e2('0x7b')]+_0x76e2('0x7c')===_0x17a65f){phoneDescriptions[_0x76e2('0x1f')]({'itemTypeId':_0x18408f[_0x2fa411]['id'],'description':_0x17a65f});delete _0x547209[_0x17a65f];}}}if(hasAdditionalPhones)_0x547209['AdditionalPhones']='';var _0x3258ff=_[_0x76e2('0x57')](_0x547209)['join']();logger[_0x76e2('0x5d')](_0x76e2('0x7d'),_0x3258ff);fs['writeFileSync'](_0x516a10,_0x3258ff+'\x0a');Papa[_0x76e2('0x7e')](fs['createReadStream'](_0x23c46f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x11c21d,_0x3e7598){try{for(var _0x93e6f7=0x0,_0x3cb6c4=[];_0x93e6f7<_0x11c21d[_0x76e2('0x7f')]['length'];_0x93e6f7++){stats[_0x76e2('0x80')]+=0x1;if(_0x11c21d[_0x76e2('0x62')][_0x93e6f7]){handleError(_0x11c21d[_0x76e2('0x7f')][_0x93e6f7],_0x11c21d[_0x76e2('0x62')][_0x93e6f7]);}else{var _0x2ab7fd=[];var _0x456789=[];var _0x81345c={};for(var _0x1657c8 in _0x4e8278){let _0x247f97=contactItemTypes[_0x76e2('0x81')](_0x4e8318=>_0x4e8318['name']===_0x1657c8);let _0x565c07=contactItemTypes[_0x76e2('0x81')](_0x42c86b=>_0x42c86b['name']+'_description'===_0x1657c8);if(_[_0x76e2('0x20')](_0x247f97)&&_[_0x76e2('0x20')](_0x565c07)){if(_0x4e8278[_0x76e2('0x82')](_0x1657c8)){if(_0x11c21d[_0x76e2('0x7f')][_0x93e6f7][_0x4e8278[_0x1657c8]]){var _0x2af428=_[_0x76e2('0x83')](_0x11c21d[_0x76e2('0x7f')][_0x93e6f7][_0x4e8278[_0x1657c8]][_0x76e2('0x84')](/"/g,'\x27'));switch(_0x1657c8){case'scheduledat':var _0x1ef4bf=moment(_0x2af428,_0x76e2('0x10'),!![]);if(_0x1ef4bf['isValid']()){_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x2af428+'\x22');}else{_0x2ab7fd[_0x76e2('0x1f')](_0x76e2('0x85'));}break;case _0x76e2('0x34'):var _0x84a9b2=parseInt(_0x2af428);_0x2af428=_['isNaN'](_0x84a9b2)||_0x84a9b2<0x0||_0x84a9b2>0x4?_0x258241?0x3:0x2:_0x84a9b2;_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x2af428+'\x22');break;case'UserId':var _0x3735d7=parseInt(_0x2af428);if(_[_0x76e2('0x86')](_0x3735d7)&&_['includes'](_0x2ae874,_0x3735d7)){_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x3735d7+'\x22');}else{_0x2ab7fd[_0x76e2('0x1f')](_0x76e2('0x87'));}break;case _0x76e2('0x88'):if(isEmail(_0x2af428)){_0x3cb6c4['push']('\x22'+_0x2af428+'\x22');}else{_0x2ab7fd[_0x76e2('0x1f')](_0x76e2('0x89'));}break;case _0x76e2('0x8a'):var _0x1fde8c=moment(_0x2af428,_0x76e2('0x8b'),!![]);if(_0x1fde8c[_0x76e2('0x8c')]()){_0x3cb6c4['push']('\x22'+_0x2af428+'\x22');}else{_0x2ab7fd['push'](_0x76e2('0x8d'));}break;case _0x76e2('0x6f'):var _0x523bfe=shared['timezones'];var _0x2b03a0=_0x523bfe[_0x2af428];if(!_['isNil'](_0x2b03a0)){var _0x3b816e=_0x2b03a0['utcOffset'];_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x2af428+'\x22');_0x3cb6c4['push']('\x22'+_0x3b816e+'\x22');}break;default:_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x2af428+'\x22');}}else{switch(_0x1657c8){case _0x76e2('0x8e'):case _0x76e2('0x13'):_0x2ab7fd[_0x76e2('0x1f')](_0x1657c8+'\x20not\x20specified');break;default:_0x3cb6c4[_0x76e2('0x1f')]('\x22\x22');}}}}else{var _0x64a174='';if(!_[_0x76e2('0x20')](_0x247f97)){if(!_0x81345c[_0x76e2('0x82')](_0x247f97['id'])){if(!_[_0x76e2('0x20')](_0x11c21d[_0x76e2('0x7f')][_0x93e6f7][_0x4e8278[_0x1657c8]])){var _0x2af428=_[_0x76e2('0x83')](_0x11c21d[_0x76e2('0x7f')][_0x93e6f7][_0x4e8278[_0x1657c8]][_0x76e2('0x84')](/"/g,'\x27'));var _0x45858e=phoneDescriptions[_0x76e2('0x81')](_0xe72103=>_0xe72103[_0x76e2('0x8f')]===_0x247f97['id']);if(!_['isNil'](_0x45858e)){var _0x21a917=_[_0x76e2('0x83')](_0x11c21d[_0x76e2('0x7f')][_0x93e6f7][_0x4e8278[_0x45858e['description']]][_0x76e2('0x84')](/"/g,'\x27'));if(!_[_0x76e2('0x20')](_0x21a917))_0x2af428=_0x2af428+'§'+_0x21a917;}if(_0x64a174=='')_0x64a174=_0x2af428;else _0x64a174+='|'+_0x2af428;}_0x456789[_0x76e2('0x1f')](_0x247f97['id']+':'+_0x64a174);_0x81345c[_0x247f97['id']]=0x1;}}}}if(hasAdditionalPhones){_0x3cb6c4[_0x76e2('0x1f')]('\x22'+_0x456789['join'](';')+'\x22');}if(_0x2ab7fd[_0x76e2('0x1b')]){handleError(_0x11c21d[_0x76e2('0x7f')][_0x93e6f7],{'code':'SystemRow','message':_0x2ab7fd['join']()});}else{fs[_0x76e2('0x90')](_0x516a10,_0x3cb6c4[_0x76e2('0x17')]()+'\x0a');}_0x3cb6c4=[];}if(!(stats[_0x76e2('0x80')]%0xc8)){socket[_0x76e2('0x91')](_0x76e2('0x92')+_0x20667e,stats);stats[_0x76e2('0x62')]=[];}}if(stopped){logger[_0x76e2('0x5d')]('Abort\x20parser');_0x3e7598['abort']();}}catch(_0x482bd8){handleError(_0x11c21d['data'][_0x93e6f7],{'code':_0x76e2('0x93'),'message':_0x482bd8[_0x76e2('0x60')]});logger[_0x76e2('0x5f')](_0x76e2('0x94'),_0x482bd8['message']);}},'complete':function(){try{var _0x5eb3ba=[];var _0x285fc8=[];var _0x3d6815=_0x76e2('0x38');if(_0xcb99de[_0x76e2('0x95')]&&_0xcb99de['duplicates'][_0x76e2('0x1b')]){_0x3d6815=_0x76e2('0x96')+_0x20667e;_0x5eb3ba['push'](_0x76e2('0x97')+_0x3d6815+_0x76e2('0x98'));}tmp_campaigns=_0x76e2('0x99')+_0x20667e;tmp_voice_queues=_0x76e2('0x9a')+_0x20667e;_0x285fc8['push'](_0x76e2('0x97')+tmp_campaigns+_0x76e2('0x9b'));_0x285fc8[_0x76e2('0x1f')]('CREATE\x20TABLE\x20'+tmp_voice_queues+_0x76e2('0x9b'));BPromise[_0x76e2('0x9c')](_0x285fc8,handleTZQuery)[_0x76e2('0x1a')](function(_0x2f7aca){updateTzCampaigns(_0xcb99de['ListId'])[_0x76e2('0x1a')](function(_0x5dd351){updateTzVoiceQueues(_0xcb99de['ListId'])[_0x76e2('0x1a')](function(_0x529873){if(hasTZ)_0x3258ff=_0x3258ff['replace']('dialTimezone',_0x76e2('0x9d'));var _0x361144=util[_0x76e2('0xf')](_0x76e2('0x9e'),_0x516a10,_0x3d6815,_0x3258ff,_0xcb99de['ListId'],_0xcb99de[_0x76e2('0x58')]||null,NOW,NOW);if(_['isNil'](_0x4e8278['scheduledat'])){_0x361144+=_0x76e2('0x9f');}_0x5eb3ba['push'](_0x361144);if(_0xcb99de[_0x76e2('0x95')]&&_0xcb99de[_0x76e2('0x95')][_0x76e2('0x1b')]){_0x5eb3ba['push'](insertCmContact(_0xcb99de[_0x76e2('0x32')],_0x3d6815,_0xcb99de[_0x76e2('0x95')],_0x4e8278));_0x5eb3ba['push'](_0x76e2('0xa0')+_0x3d6815+';');}BPromise[_0x76e2('0x9c')](_0x5eb3ba,handleQuery)[_0x76e2('0x1a')](function(_0x462b8c){BPromise['all']([handleAdditionalPhones()])['then'](function(){_0x5eb3ba=[];for(var _0x341c1f=0x0;_0x341c1f<promisesAdditionalPhones[_0x76e2('0x1b')];_0x341c1f++){if(promisesAdditionalPhones[_0x341c1f][_0x76e2('0x13')]!='§'){_0x5eb3ba['push'](createAdditionalPhone(promisesAdditionalPhones[_0x341c1f][_0x76e2('0xa1')],promisesAdditionalPhones[_0x341c1f][_0x76e2('0xa2')],promisesAdditionalPhones[_0x341c1f]['phone'],promisesAdditionalPhones[_0x341c1f][_0x76e2('0xa3')]));}}BPromise[_0x76e2('0x1c')](_0x5eb3ba)['then'](function(){_0x5eb3ba=[];if(hasTZ){_0x5eb3ba[_0x76e2('0x1f')](insertTzCmHopper(_0xcb99de[_0x76e2('0x32')],_0x76e2('0xa4'),_0x76e2('0x6b'),_0x76e2('0xa5'),_0x258241,tmp_voice_queues));_0x5eb3ba[_0x76e2('0x1f')](insertTzCmHopperBlack(_0xcb99de['ListId'],_0x76e2('0xa6'),_0x76e2('0x6b'),_0x76e2('0xa5')));_0x5eb3ba[_0x76e2('0x1f')](insertTzCmHopper(_0xcb99de[_0x76e2('0x32')],'campaigns_has_cm_lists','campaigns','CampaignId',_0x258241,tmp_campaigns));_0x5eb3ba[_0x76e2('0x1f')](insertTzCmHopperBlack(_0xcb99de[_0x76e2('0x32')],_0x76e2('0xa7'),_0x76e2('0xa8'),_0x76e2('0xa9')));_0x5eb3ba['push'](insertCmHopperAdditionalPhones(_0xcb99de[_0x76e2('0x32')]));}else{_0x5eb3ba['push'](insertCmHopper(_0xcb99de[_0x76e2('0x32')],_0x76e2('0xa4'),_0x76e2('0x6b'),_0x76e2('0xa5'),_0x258241));_0x5eb3ba[_0x76e2('0x1f')](insertCmHopperBlack(_0xcb99de['ListId'],_0x76e2('0xa6'),'voice_queues',_0x76e2('0xa5')));_0x5eb3ba['push'](insertCmHopper(_0xcb99de[_0x76e2('0x32')],_0x76e2('0xaa'),_0x76e2('0xa8'),_0x76e2('0xa9'),_0x258241));_0x5eb3ba[_0x76e2('0x1f')](insertCmHopperBlack(_0xcb99de['ListId'],_0x76e2('0xa7'),_0x76e2('0xa8'),_0x76e2('0xa9')));_0x5eb3ba['push'](insertCmHopperAdditionalPhones(_0xcb99de['ListId']));}_0x5eb3ba[_0x76e2('0x1f')](_0x76e2('0xa0')+tmp_campaigns+';');_0x5eb3ba[_0x76e2('0x1f')](_0x76e2('0xa0')+tmp_voice_queues+';');BPromise['each'](_0x5eb3ba,handleQuery)['then'](function(_0x8cc6a6){stats['finish']=!![];stats['affectedRows']=_0xcb99de[_0x76e2('0x95')]&&_0xcb99de[_0x76e2('0x95')][_0x76e2('0x1b')]?results[0x2][_0x76e2('0xab')]:results[0x0][_0x76e2('0xab')];socket['emit'](_0x76e2('0x92')+_0x20667e,stats);fs[_0x76e2('0xac')](_0x23c46f);fs[_0x76e2('0xac')](_0x516a10);process[_0x76e2('0x61')](0x0);})[_0x76e2('0x66')](function(_0x35a602){logger[_0x76e2('0x5f')](_0x35a602[_0x76e2('0x60')]);process[_0x76e2('0x61')](0x1);});});});})[_0x76e2('0x66')](function(_0x1350f6){logger['error'](_0x1350f6[_0x76e2('0x60')]);process[_0x76e2('0x61')](0x1);});});});});}catch(_0x14b21b){logger[_0x76e2('0x5f')](_0x76e2('0xad'),_0x14b21b[_0x76e2('0x60')]);process['exit'](0x1);}},'error':function(_0x1f3158,_0x5b9f0d,_0x4d7bbb,_0x45871f){throw new Error(_0x45871f);}});});}function validate(){if(process[_0x76e2('0xae')]&&process[_0x76e2('0xae')][_0x76e2('0x1b')]<0x4){throw new Error(_0x76e2('0xaf'));}var _0x49ff99=path['join'](config[_0x76e2('0x77')],_0x76e2('0x78'),process[_0x76e2('0xae')][0x2]);if(!fs['existsSync'](_0x49ff99)){throw new Error(_0x76e2('0xb0'));}var _0x2a4ae3={};try{_0x2a4ae3=JSON[_0x76e2('0x7e')](process[_0x76e2('0xae')][0x3]);if(!_0x2a4ae3['binding']){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x2a4ae3[_0x76e2('0x74')]['phone']){throw new Error(_0x76e2('0xb1'));}if(!_0x2a4ae3['binding']['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x18eb88=0x0;if(_0x2a4ae3['binding'][_0x76e2('0x35')]){_0x18eb88=0x1;}if(!_0x2a4ae3['ListId']){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x21ef40){throw new Error('body\x20id\x20mandatory');}var _0xa4a01f=[];try{_0xa4a01f=_[_0x76e2('0xb2')](JSON[_0x76e2('0x7e')](process[_0x76e2('0xae')][0x4]),'id');}catch(_0x1c26b5){logger[_0x76e2('0x5d')](_0x76e2('0xb3'));}main(_0x49ff99,_0x2a4ae3,_0xa4a01f,_0x18eb88);}validate();process['on']('SIGINT',handleStop);process['on'](_0x76e2('0xb4'),handleUncaughtException);
\ No newline at end of file
index 818b30c..d95b740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bab=['cm_contacts_temp_','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','all','catch','error','message','split','length','filter','CmContactHasItem','findOne','then','update','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','insert','into','cm_hopper','fromQuery','scheduledat','ListId','updatedAt','priority','UserId','select','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.createdAt','ContactId','createdAt','cm_contacts','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','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','exit','errors','code','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','ContactItemType','name','keys','header','parse','createReadStream','data','rows','find','trim','isNaN','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','hasOwnProperty','replace','itemTypeId','description','appendFileSync','emit','contact:import:','abort','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contactId','contactTypeId','finish','affectedRows','unlink','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','import','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x30217c,_0x1f03d8){var _0x5891eb=function(_0x3d3fa3){while(--_0x3d3fa3){_0x30217c['push'](_0x30217c['shift']());}};_0x5891eb(++_0x1f03d8);}(_0x6bab,0x1c7));var _0xb6ba=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x6bab[_0x323d87];return _0x5e8f74;};'use strict';var fs=require('fs');var path=require(_0xb6ba('0x0'));var _=require(_0xb6ba('0x1'));var Papa=require(_0xb6ba('0x2'));var util=require(_0xb6ba('0x3'));var BPromise=require('bluebird');var moment=require(_0xb6ba('0x4'));var squel=require(_0xb6ba('0x5'));var Redis=require(_0xb6ba('0x6'));var db=require(_0xb6ba('0x7'))['db'];var config=require(_0xb6ba('0x8'));var logger=require('../../../config/logger')(_0xb6ba('0x9'));config['redis']=_[_0xb6ba('0xa')](config[_0xb6ba('0xb')],{'host':_0xb6ba('0xc'),'port':0x18eb});var socket=require(_0xb6ba('0xd'))(new Redis(config[_0xb6ba('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xb6ba('0xe')](_0xb6ba('0xf'));var tempTableName=_0xb6ba('0x10')+moment()[_0xb6ba('0xe')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x16cb3a){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'](_0x16cb3a);}function selectNotIn(_0x5c4eac,_0x5c556d,_0x31e74b,_0x1dc636,_0x1cb42c){return squel['select']()[_0xb6ba('0x11')](_0xb6ba('0x12'))[_0xb6ba('0x13')](_0x1dc636)[_0xb6ba('0x14')](_0x5c556d,null,_0x5c556d+_0xb6ba('0x15')+_0x1dc636+'.'+_0x31e74b)[_0xb6ba('0x16')](_0x1dc636+'.'+_0x31e74b+_0xb6ba('0x17')+_0x5c4eac+'.'+_0x31e74b)[_0xb6ba('0x16')](_0x5c556d+_0xb6ba('0x18')+_0x1cb42c[_0xb6ba('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x210454,_0x24a901){promisesAdditionalPhones=[];promisesContact=[];return db[_0xb6ba('0x19')][_0xb6ba('0x1a')](_0xb6ba('0x1b')+tempTableName)[_0xb6ba('0x1c')](function(_0x3ec867){if(_0x3ec867!==null){var _0x3a0eb1=[];for(var _0xeefc49=0x0;_0xeefc49<_0x3ec867['length'];_0xeefc49++){var _0x35e47b=_0x3ec867[_0xeefc49];if(!_['isNil'](_0x35e47b['phone'])){if(!_[_0xb6ba('0x1d')](_0x35e47b[_0xb6ba('0x1e')]))_0x3a0eb1['push'](insertAdditionalPhones(_0x35e47b));promisesContact[_0xb6ba('0x1f')]({'contact':_0x35e47b});}}}Promise[_0xb6ba('0x20')](_0x3a0eb1)['then'](function(){_0x210454({'val':0x1});});})[_0xb6ba('0x21')](function(_0x3b03fb){logger[_0xb6ba('0x22')](_0x3b03fb[_0xb6ba('0x23')]);});});}function insertAdditionalPhones(_0x298207){return new Promise(function(_0x40b66e,_0x213a36){var _0x739ecf=_0x298207[_0xb6ba('0x1e')];if(_[_0xb6ba('0x1d')](_0x739ecf))_0x213a36({'val':0x0});else{var _0x41a5a4=_0x739ecf[_0xb6ba('0x24')](';');var _0x2350a5=[];orderBy=0x0;for(var _0x35dbc9=0x0;_0x35dbc9<_0x41a5a4[_0xb6ba('0x25')];_0x35dbc9++){_0x2350a5[_0xb6ba('0x1f')](splitAdditionalPhone(_0x298207['id'],_0x41a5a4[_0x35dbc9]));}Promise['all'](_0x2350a5)['then'](function(){_0x40b66e({'val':_0x41a5a4[_0xb6ba('0x25')]});});}});}function splitAdditionalPhone(_0x48d466,_0x5ae772){return new Promise(function(_0x150c66,_0xa0bf12){var _0x38c354=_0x5ae772[_0xb6ba('0x24')](':');var _0x4e4b6a=_0x38c354[0x0];var _0x5ce5d7=_0x38c354[0x1];if(_0x5ce5d7!==''){var _0x34fc23=_0x5ce5d7['split']('|');var _0x418394=[];for(var _0x253f32=0x0;_0x253f32<_0x34fc23[_0xb6ba('0x25')];_0x253f32++){if(_0x34fc23[_0x253f32]!==''){var _0xca634=_[_0xb6ba('0x26')](promisesAdditionalPhones,{'contactId':_0x48d466,'phone':_0x34fc23[_0x253f32]});if(_0xca634[_0xb6ba('0x25')]==0x0){orderBy++;promisesAdditionalPhones[_0xb6ba('0x1f')]({'contactId':_0x48d466,'contactTypeId':_0x4e4b6a,'phone':_0x34fc23[_0x253f32],'orderBy':orderBy});}}}_0x150c66({'ok':0x1});}else _0x150c66({'res':0x0});});}function createAdditionalPhone(_0x400d88,_0x4e1637,_0x2d5038,_0x5f0864){var _0x1534fb='';var _0x1041e8='';var _0x190ee3=_0x2d5038['split']('§');_0x1534fb=_0x190ee3[0x0];if(_0x190ee3[_0xb6ba('0x25')]==0x2)_0x1041e8=_0x190ee3[0x1];return new Promise(function(_0x576863,_0x21f27c){return db[_0xb6ba('0x27')][_0xb6ba('0x28')]({'where':{'CmContactId':_0x400d88,'item':_0x1534fb}})[_0xb6ba('0x29')](function(_0x4c7777){if(_0x4c7777){return db['CmContactHasItem'][_0xb6ba('0x2a')]({'ItemTypeId':_0x4e1637,'description':_0x1041e8,'OrderBy':_0x5f0864},{'where':{'CmContactId':_0x400d88,'item':_0x1534fb}})[_0xb6ba('0x29')](function(_0x196fea){_0x576863({'res':_0xb6ba('0x2b')});});}else{return db[_0xb6ba('0x27')][_0xb6ba('0x2c')]({'CmContactId':_0x400d88,'item':_0x1534fb,'ItemTypeId':_0x4e1637,'description':_0x1041e8,'OrderBy':_0x5f0864,'ItemClass':_0xb6ba('0x2d')})['then'](function(_0x49b35d){_0x576863({'res':_0xb6ba('0x2e')});});}});});}function updateContact(_0x7eb230){return new Promise(function(_0xf22fd7,_0x48eb13){var _0x3325c6=_0x7eb230['id'];delete _0x7eb230['id'];return db[_0xb6ba('0x2f')][_0xb6ba('0x2a')](_0x7eb230,{'where':{'id':_0x3325c6}})[_0xb6ba('0x29')](function(_0x11e2fb){updatedRows+=0x1;return db[_0xb6ba('0x30')][_0xb6ba('0x2a')]({'phone':_0x7eb230['phone']},{'where':{'ContactId':_0x3325c6}})[_0xb6ba('0x29')](function(_0xa136c6){_0xf22fd7({'ret':'OK'});});});});}function insertCmHopper(_0xd568c7,_0x2abaf3,_0x26d0ed,_0x89da2a,_0x10d4f9){var _0x561139=[_0xb6ba('0x31'),_0xb6ba('0x32'),_0xb6ba('0x33'),_0xb6ba('0x34'),_0x2abaf3+'.'+_0x89da2a,'cm_contacts.createdAt',_0xb6ba('0x35'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x10d4f9+'\x22'];return squel[_0xb6ba('0x36')]()[_0xb6ba('0x37')](_0xb6ba('0x38'))[_0xb6ba('0x39')]([_0xb6ba('0x12'),_0xb6ba('0x3a'),'ContactId',_0xb6ba('0x3b'),_0x89da2a,'createdAt',_0xb6ba('0x3c'),_0xb6ba('0x3d'),_0xb6ba('0x3e'),'recallme'],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x561139)[_0xb6ba('0x13')](_0x2abaf3)[_0xb6ba('0x14')]('cm_contacts',null,_0xb6ba('0x41')+_0x2abaf3+_0xb6ba('0x42'))[_0xb6ba('0x14')](_0x26d0ed,null,_0x26d0ed+_0xb6ba('0x15')+_0x2abaf3+'.'+_0x89da2a)[_0xb6ba('0x16')](_0x2abaf3+_0xb6ba('0x43'),_0xd568c7)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW)['where'](_0xb6ba('0x45'),selectNotIn(_0x2abaf3,_0x26d0ed,_0x89da2a,_0xb6ba('0x38'),['\x22always\x22',_0xb6ba('0x46')]))[_0xb6ba('0x16')](_0xb6ba('0x45'),selectNotIn(_0x2abaf3,_0x26d0ed,_0x89da2a,'cm_hopper',[_0xb6ba('0x47')])))[_0xb6ba('0x48')]();}function insertCmHopperBlack(_0x385278,_0x399326,_0x8ff870,_0x1c2def){var _0x5327f2=[_0xb6ba('0x31'),_0xb6ba('0x33'),_0xb6ba('0x34'),_0x399326+'.'+_0x1c2def,_0xb6ba('0x49'),_0xb6ba('0x35')];return squel['insert']()[_0xb6ba('0x37')]('cm_hopper_black')[_0xb6ba('0x39')](['phone',_0xb6ba('0x4a'),_0xb6ba('0x3b'),_0x1c2def,_0xb6ba('0x4b'),'updatedAt'],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x5327f2)['from'](_0x399326)[_0xb6ba('0x14')](_0xb6ba('0x4c'),null,_0xb6ba('0x41')+_0x399326+'.CmListId')['join'](_0x8ff870,null,_0x8ff870+_0xb6ba('0x15')+_0x399326+'.'+_0x1c2def)[_0xb6ba('0x16')](_0x399326+_0xb6ba('0x43'),_0x385278)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW)[_0xb6ba('0x16')](_0xb6ba('0x45'),squel[_0xb6ba('0x3f')]()['field'](_0xb6ba('0x12'))[_0xb6ba('0x13')]('cm_hopper_black')['where'](_0xb6ba('0x4d'),_0x385278)[_0xb6ba('0x16')](_0x1c2def+_0xb6ba('0x4e'),_0x399326+'.'+_0x1c2def)))['toString']();}function insertCmHopperAdditionalPhones(_0x1e8bb5){var _0x1312d5=[_0xb6ba('0x4f'),_0xb6ba('0x50'),_0xb6ba('0x51'),_0xb6ba('0x52'),_0xb6ba('0x53')];return squel['insert']()[_0xb6ba('0x37')](_0xb6ba('0x54'))[_0xb6ba('0x39')]([_0xb6ba('0x55'),'phone',_0xb6ba('0x56'),'createdAt',_0xb6ba('0x3c')],squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x1312d5)[_0xb6ba('0x13')](_0xb6ba('0x38'))['join'](_0xb6ba('0x4c'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xb6ba('0x14')](_0xb6ba('0x57'),null,_0xb6ba('0x58'))[_0xb6ba('0x16')](_0xb6ba('0x59'),_0x1e8bb5)[_0xb6ba('0x16')](_0xb6ba('0x44'),NOW))[_0xb6ba('0x48')]();}function insertCmContact(_0x540a62,_0x5d6fe6,_0x1b8766,_0x3ac57c){var _0x4e6ca2=_[_0xb6ba('0x5a')](_['keys'](_0x3ac57c),[_0xb6ba('0x3b'),_0xb6ba('0x5b'),'createdAt',_0xb6ba('0x3c')]);return squel[_0xb6ba('0x36')]()[_0xb6ba('0x37')](_0xb6ba('0x4c'))[_0xb6ba('0x39')](_0x4e6ca2,squel[_0xb6ba('0x3f')]()[_0xb6ba('0x40')](_0x4e6ca2)[_0xb6ba('0x13')](_0x5d6fe6)[_0xb6ba('0x16')]('('+_0x1b8766[_0xb6ba('0x14')](',')+_0xb6ba('0x5c'),squel[_0xb6ba('0x3f')]()['fields'](_0x1b8766)[_0xb6ba('0x13')](_0xb6ba('0x4c'))['where']('ListId\x20=\x20?',_0x540a62))[_0xb6ba('0x16')]('id\x20IN\x20?',squel[_0xb6ba('0x3f')]()[_0xb6ba('0x11')](_0xb6ba('0x5d'),_0xb6ba('0x5e'))['from'](_0x5d6fe6)[_0xb6ba('0x5f')](_0x1b8766['join'](','))))[_0xb6ba('0x48')]();}function handleStop(){logger[_0xb6ba('0x60')](_0xb6ba('0x61'));stopped=!![];}function handleUncaughtException(_0x1d298a){logger[_0xb6ba('0x22')](_0x1d298a['message']);process[_0xb6ba('0x62')](0x1);}function handleError(_0x5bde4b,_0x39bca7){stats[_0xb6ba('0x63')][_0xb6ba('0x1f')]({'name':_0x39bca7[_0xb6ba('0x64')],'message':_0x39bca7[_0xb6ba('0x23')],'row':_0x5bde4b});}function handleQuery(_0x2f35c8){logger[_0xb6ba('0x60')](_0x2f35c8);return db[_0xb6ba('0x19')][_0xb6ba('0x1a')](_0x2f35c8)[_0xb6ba('0x1c')](function(_0x162a4a){results[_0xb6ba('0x1f')](_0x162a4a);})['catch'](function(_0x12d4a0){logger[_0xb6ba('0x22')](_0x12d4a0[_0xb6ba('0x23')]);});}function main(_0x4b211b,_0x5de6aa,_0x3d6974,_0x4bce5d){logger[_0xb6ba('0x60')]('main',_0x4b211b,JSON[_0xb6ba('0x65')](_0x5de6aa));process[_0xb6ba('0x66')](_0xb6ba('0x67'));var _0xdaff5f=_0x5de6aa[_0xb6ba('0x68')];var _0x57a738=_['clone'](_0xdaff5f);var _0x1e0ef6=_0x5de6aa[_0xb6ba('0x69')];var _0x57be91=path[_0xb6ba('0x14')](config[_0xb6ba('0x6a')],_0xb6ba('0x6b'),_0x1e0ef6+_0xb6ba('0x6c'));logger[_0xb6ba('0x60')]('body',_0x5de6aa);db[_0xb6ba('0x6d')]['findAll']({'raw':!![],'attributes':['id',_0xb6ba('0x6e')]})[_0xb6ba('0x29')](function(_0x243350){for(var _0x4ab998=0x0;_0x4ab998<_0x243350[_0xb6ba('0x25')];_0x4ab998++){if(_0x243350[_0x4ab998][_0xb6ba('0x6e')]in _0xdaff5f){contactItemTypes[_0xb6ba('0x1f')](_0x243350[_0x4ab998]);delete _0x57a738[_0x243350[_0x4ab998][_0xb6ba('0x6e')]];hasAdditionalPhones=!![];}for(var _0x77c6bf in _0xdaff5f){if(_0x243350[_0x4ab998][_0xb6ba('0x6e')]+'_description'===_0x77c6bf){phoneDescriptions[_0xb6ba('0x1f')]({'itemTypeId':_0x243350[_0x4ab998]['id'],'description':_0x77c6bf});delete _0x57a738[_0x77c6bf];}}}if(hasAdditionalPhones)_0x57a738[_0xb6ba('0x1e')]='';var _0x451d26=_[_0xb6ba('0x6f')](_0x57a738)[_0xb6ba('0x14')]();logger['info'](_0xb6ba('0x70'),_0x451d26);fs['writeFileSync'](_0x57be91,_0x451d26+'\x0a');Papa[_0xb6ba('0x71')](fs[_0xb6ba('0x72')](_0x4b211b),{'header':!![],'skipEmptyLines':!![],'step':function(_0x52487f,_0x2da7c2){try{for(var _0x37133c=0x0,_0x2099de=[];_0x37133c<_0x52487f[_0xb6ba('0x73')][_0xb6ba('0x25')];_0x37133c++){stats[_0xb6ba('0x74')]+=0x1;if(_0x52487f['errors'][_0x37133c]){handleError(_0x52487f[_0xb6ba('0x73')][_0x37133c],_0x52487f[_0xb6ba('0x63')][_0x37133c]);}else{var _0x135f4c=[];var _0x409139=[];var _0x1089b3={};for(var _0x13619c in _0xdaff5f){let _0x53bf59=contactItemTypes[_0xb6ba('0x75')](_0x481230=>_0x481230['name']===_0x13619c);let _0xbabc19=contactItemTypes[_0xb6ba('0x75')](_0x175d95=>_0x175d95[_0xb6ba('0x6e')]+'_description'===_0x13619c);if(_[_0xb6ba('0x1d')](_0x53bf59)&&_[_0xb6ba('0x1d')](_0xbabc19)){if(_0xdaff5f['hasOwnProperty'](_0x13619c)){if(_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x13619c]]){var _0x174c8d=_[_0xb6ba('0x76')](_0x52487f['data'][_0x37133c][_0xdaff5f[_0x13619c]]['replace'](/"/g,'\x27'));switch(_0x13619c){case'scheduledat':var _0x46489f=moment(_0x174c8d,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x46489f['isValid']()){_0x2099de['push']('\x22'+_0x174c8d+'\x22');}else{_0x135f4c['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0xb6ba('0x3d'):var _0x61de05=parseInt(_0x174c8d);_0x174c8d=_[_0xb6ba('0x77')](_0x61de05)||_0x61de05<0x0||_0x61de05>0x4?_0x4bce5d?0x3:0x2:_0x61de05;_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');break;case _0xb6ba('0x3e'):var _0x904623=parseInt(_0x174c8d);if(_['isNumber'](_0x904623)&&_[_0xb6ba('0x78')](_0x3d6974,_0x904623)){_0x2099de['push']('\x22'+_0x904623+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x79'));}break;case'email':if(isEmail(_0x174c8d)){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x7a'));}break;case _0xb6ba('0x7b'):var _0x160f6a=moment(_0x174c8d,_0xb6ba('0x7c'),!![]);if(_0x160f6a[_0xb6ba('0x7d')]()){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}else{_0x135f4c[_0xb6ba('0x1f')](_0xb6ba('0x7e'));}break;default:_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x174c8d+'\x22');}}else{switch(_0x13619c){case _0xb6ba('0x7f'):case _0xb6ba('0x12'):_0x135f4c[_0xb6ba('0x1f')](_0x13619c+'\x20not\x20specified');break;default:_0x2099de[_0xb6ba('0x1f')]('\x22\x22');}}}}else{var _0x449120='';if(!_['isNil'](_0x53bf59)){if(!_0x1089b3[_0xb6ba('0x80')](_0x53bf59['id'])){for(var _0x38e738=0x0;_0x38e738<_0xdaff5f[_0x13619c][_0xb6ba('0x25')];_0x38e738++){var _0x174c8d=_[_0xb6ba('0x76')](_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x13619c][_0x38e738]][_0xb6ba('0x81')](/"/g,'\x27'));var _0x176a99=phoneDescriptions[_0xb6ba('0x75')](_0xa0c1b4=>_0xa0c1b4[_0xb6ba('0x82')]===_0x53bf59['id']);if(!_['isNil'](_0x176a99)){var _0x1fd7ec=_[_0xb6ba('0x76')](_0x52487f[_0xb6ba('0x73')][_0x37133c][_0xdaff5f[_0x176a99[_0xb6ba('0x83')]][0x0]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x1fd7ec))_0x174c8d=_0x174c8d+'§'+_0x1fd7ec;}if(_0x449120=='')_0x449120=_0x174c8d;else _0x449120+='|'+_0x174c8d;}_0x409139[_0xb6ba('0x1f')](_0x53bf59['id']+':'+_0x449120);_0x1089b3[_0x53bf59['id']]=0x1;}}}}if(hasAdditionalPhones){_0x2099de[_0xb6ba('0x1f')]('\x22'+_0x409139[_0xb6ba('0x14')](';')+'\x22');}if(_0x135f4c[_0xb6ba('0x25')]){handleError(_0x52487f['data'][_0x37133c],{'code':'SystemRow','message':_0x135f4c[_0xb6ba('0x14')]()});}else{fs[_0xb6ba('0x84')](_0x57be91,_0x2099de[_0xb6ba('0x14')]()+'\x0a');}_0x2099de=[];}if(!(stats[_0xb6ba('0x74')]%0xc8)){socket[_0xb6ba('0x85')](_0xb6ba('0x86')+_0x1e0ef6,stats);stats[_0xb6ba('0x63')]=[];}}if(stopped){logger[_0xb6ba('0x60')]('Abort\x20parser');_0x2da7c2[_0xb6ba('0x87')]();}}catch(_0x1023a2){handleError(_0x52487f['data'][_0x37133c],{'code':_0xb6ba('0x88'),'message':_0x1023a2[_0xb6ba('0x23')]});logger[_0xb6ba('0x22')](_0xb6ba('0x89'),_0x1023a2[_0xb6ba('0x23')]);}},'complete':function(){try{var _0x12e283=[];var _0x87547f=tempTableName;_0x12e283[_0xb6ba('0x1f')](_0xb6ba('0x8a')+_0x87547f+_0xb6ba('0x8b'));logger[_0xb6ba('0x60')](_0xb6ba('0x8c'),contactItemTypes[_0xb6ba('0x25')]);var _0x551293=util[_0xb6ba('0xe')](_0xb6ba('0x8d'),_0x57be91,_0x87547f,_0x451d26,_0x5de6aa[_0xb6ba('0x3b')],_0x5de6aa['CompanyId']||null,NOW,NOW);if(_[_0xb6ba('0x1d')](_0xdaff5f[_0xb6ba('0x3a')])){_0x551293+=_0xb6ba('0x8e');}_0x12e283[_0xb6ba('0x1f')](_0x551293);BPromise[_0xb6ba('0x8f')](_0x12e283,handleQuery)[_0xb6ba('0x29')](function(_0x11f79c){BPromise[_0xb6ba('0x20')]([handleAdditionalPhones()])[_0xb6ba('0x29')](function(){_0x12e283=[];for(var _0x5262e8=0x0;_0x5262e8<promisesContact['length'];_0x5262e8++){_0x12e283['push'](updateContact(promisesContact[_0x5262e8]['contact']));}BPromise[_0xb6ba('0x20')](_0x12e283)[_0xb6ba('0x29')](function(){_0x12e283=[];for(var _0x13f7d5=0x0;_0x13f7d5<promisesAdditionalPhones[_0xb6ba('0x25')];_0x13f7d5++){_0x12e283[_0xb6ba('0x1f')](createAdditionalPhone(promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x90')],promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x91')],promisesAdditionalPhones[_0x13f7d5][_0xb6ba('0x12')],promisesAdditionalPhones[_0x13f7d5]['orderBy']));}BPromise['all'](_0x12e283)[_0xb6ba('0x29')](function(){_0x12e283=[];_0x12e283[_0xb6ba('0x1f')](insertCmHopperAdditionalPhones(_0x5de6aa['ListId']));_0x12e283[_0xb6ba('0x1f')]('DROP\x20TABLE\x20'+_0x87547f+';');BPromise[_0xb6ba('0x8f')](_0x12e283,handleQuery)['then'](function(_0x519d25){stats[_0xb6ba('0x92')]=!![];stats[_0xb6ba('0x93')]=updatedRows;socket[_0xb6ba('0x85')](_0xb6ba('0x86')+_0x1e0ef6,stats);fs[_0xb6ba('0x94')](_0x4b211b);fs[_0xb6ba('0x94')](_0x57be91);process['exit'](0x0);})[_0xb6ba('0x21')](function(_0x37b925){logger[_0xb6ba('0x22')](_0x37b925[_0xb6ba('0x23')]);process[_0xb6ba('0x62')](0x1);});});});});})[_0xb6ba('0x21')](function(_0x1c2bae){logger['error'](_0x1c2bae[_0xb6ba('0x23')]);process['exit'](0x1);});}catch(_0xf1f742){logger['error']('complete',_0xf1f742[_0xb6ba('0x23')]);process[_0xb6ba('0x62')](0x1);}},'error':function(_0x38ee62,_0x522f3b,_0x447c92,_0x251d8e){throw new Error(_0x251d8e);}});});}function validate(){if(process['argv']&&process[_0xb6ba('0x95')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x1506f8=path[_0xb6ba('0x14')](config[_0xb6ba('0x6a')],_0xb6ba('0x6b'),process[_0xb6ba('0x95')][0x2]);if(!fs[_0xb6ba('0x96')](_0x1506f8)){throw new Error(_0xb6ba('0x97'));}var _0x5a3e89={};try{_0x5a3e89=JSON[_0xb6ba('0x71')](process['argv'][0x3]);if(!_0x5a3e89[_0xb6ba('0x68')]){throw new Error(_0xb6ba('0x98'));}var _0x3282e4=0x0;if(_0x5a3e89[_0xb6ba('0x68')]['UserId']){_0x3282e4=0x1;}if(!_0x5a3e89[_0xb6ba('0x3b')]){throw new Error(_0xb6ba('0x99'));}}catch(_0x3ae8d3){throw new Error(_0xb6ba('0x9a'));}var _0x4cb90b=[];try{_0x4cb90b=_['map'](JSON[_0xb6ba('0x71')](process[_0xb6ba('0x95')][0x4]),'id');}catch(_0x2f86d9){logger[_0xb6ba('0x60')](_0xb6ba('0x9b'));}main(_0x1506f8,_0x5a3e89,_0x4cb90b,_0x3282e4);}validate();process['on']('SIGINT',handleStop);process['on'](_0xb6ba('0x9c'),handleUncaughtException);
\ No newline at end of file
+var _0x76d2=['cm_hopper_black','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','fromQuery','CmHopperId','OrderBy','fields','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','min_id','info','Received\x20SIGINT','error','exit','errors','code','main','stringify','send','start','binding','clone','socket_timestamp','root','.csv','body','findAll','name','header','writeFileSync','parse','createReadStream','data','find','_description','isNil','hasOwnProperty','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','rows','contact:import:','Abort\x20parser','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','contact','orderBy','each','finish','emit','unlink','complete','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','argv','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','YYYYMMDDHHmmss','test','select','field','phone','from','join','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','spread','length','push','all','then','catch','message','AdditionalPhones','split','filter','CmContactHasItem','findOne','update','updated','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','into','cm_hopper','scheduledat','ContactId','ListId','createdAt','updatedAt','UserId','recallme','cm_contacts','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','insert'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x76d2,0xf8));var _0x276d=function(_0x3931c1,_0x106bf4){_0x3931c1=_0x3931c1-0x0;var _0xf126a7=_0x76d2[_0x3931c1];return _0xf126a7;};'use strict';var fs=require('fs');var path=require(_0x276d('0x0'));var _=require(_0x276d('0x1'));var Papa=require(_0x276d('0x2'));var util=require('util');var BPromise=require(_0x276d('0x3'));var moment=require(_0x276d('0x4'));var squel=require(_0x276d('0x5'));var Redis=require(_0x276d('0x6'));var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0x276d('0x7'))(_0x276d('0x8'));config[_0x276d('0x9')]=_[_0x276d('0xa')](config[_0x276d('0x9')],{'host':_0x276d('0xb'),'port':0x18eb});var socket=require(_0x276d('0xc'))(new Redis(config[_0x276d('0x9')]));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()[_0x276d('0xd')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName='cm_contacts_temp_'+moment()[_0x276d('0xd')](_0x276d('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x1c1686){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))*$/[_0x276d('0xf')](_0x1c1686);}function selectNotIn(_0x3941ed,_0x3b1af5,_0x5a115f,_0x58d734,_0xcdcf61){return squel[_0x276d('0x10')]()[_0x276d('0x11')](_0x276d('0x12'))[_0x276d('0x13')](_0x58d734)[_0x276d('0x14')](_0x3b1af5,null,_0x3b1af5+'.id\x20=\x20'+_0x58d734+'.'+_0x5a115f)['where'](_0x58d734+'.'+_0x5a115f+_0x276d('0x15')+_0x3941ed+'.'+_0x5a115f)[_0x276d('0x16')](_0x3b1af5+_0x276d('0x17')+_0xcdcf61[_0x276d('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x3166a2,_0x276c25){promisesAdditionalPhones=[];promisesContact=[];return db[_0x276d('0x18')][_0x276d('0x19')]('select\x20*\x20from\x20'+tempTableName)[_0x276d('0x1a')](function(_0x43efeb){if(_0x43efeb!==null){var _0x50cdfd=[];for(var _0x55bf72=0x0;_0x55bf72<_0x43efeb[_0x276d('0x1b')];_0x55bf72++){var _0x1524fb=_0x43efeb[_0x55bf72];if(!_['isNil'](_0x1524fb[_0x276d('0x12')])){if(!_['isNil'](_0x1524fb['AdditionalPhones']))_0x50cdfd[_0x276d('0x1c')](insertAdditionalPhones(_0x1524fb));promisesContact['push']({'contact':_0x1524fb});}}}Promise[_0x276d('0x1d')](_0x50cdfd)[_0x276d('0x1e')](function(){_0x3166a2({'val':0x1});});})[_0x276d('0x1f')](function(_0x11d8d8){logger['error'](_0x11d8d8[_0x276d('0x20')]);});});}function insertAdditionalPhones(_0x3f167a){return new Promise(function(_0x54565b,_0x5e8fee){var _0x45709d=_0x3f167a[_0x276d('0x21')];if(_['isNil'](_0x45709d))_0x5e8fee({'val':0x0});else{var _0x20d8f1=_0x45709d[_0x276d('0x22')](';');var _0x57d4b7=[];orderBy=0x0;for(var _0x284160=0x0;_0x284160<_0x20d8f1['length'];_0x284160++){_0x57d4b7[_0x276d('0x1c')](splitAdditionalPhone(_0x3f167a['id'],_0x20d8f1[_0x284160]));}Promise[_0x276d('0x1d')](_0x57d4b7)['then'](function(){_0x54565b({'val':_0x20d8f1[_0x276d('0x1b')]});});}});}function splitAdditionalPhone(_0x3edb3b,_0x58ea98){return new Promise(function(_0x49ecb7,_0x991d5d){var _0x45c098=_0x58ea98[_0x276d('0x22')](':');var _0x3dd10b=_0x45c098[0x0];var _0x2cab84=_0x45c098[0x1];if(_0x2cab84!==''){var _0x49a9f9=_0x2cab84[_0x276d('0x22')]('|');var _0x4b517f=[];for(var _0xc8b1cc=0x0;_0xc8b1cc<_0x49a9f9[_0x276d('0x1b')];_0xc8b1cc++){if(_0x49a9f9[_0xc8b1cc]!==''){var _0x54c37c=_[_0x276d('0x23')](promisesAdditionalPhones,{'contactId':_0x3edb3b,'phone':_0x49a9f9[_0xc8b1cc]});if(_0x54c37c['length']==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x3edb3b,'contactTypeId':_0x3dd10b,'phone':_0x49a9f9[_0xc8b1cc],'orderBy':orderBy});}}}_0x49ecb7({'ok':0x1});}else _0x49ecb7({'res':0x0});});}function createAdditionalPhone(_0x5dec41,_0x235509,_0x3226f5,_0xf2f7d){var _0x43b79b='';var _0x531a88='';var _0x1438c6=_0x3226f5[_0x276d('0x22')]('§');_0x43b79b=_0x1438c6[0x0];if(_0x1438c6[_0x276d('0x1b')]==0x2)_0x531a88=_0x1438c6[0x1];return new Promise(function(_0x141be3,_0x29755c){return db[_0x276d('0x24')][_0x276d('0x25')]({'where':{'CmContactId':_0x5dec41,'item':_0x43b79b}})['then'](function(_0x168406){if(_0x168406){return db[_0x276d('0x24')][_0x276d('0x26')]({'ItemTypeId':_0x235509,'description':_0x531a88,'OrderBy':_0xf2f7d},{'where':{'CmContactId':_0x5dec41,'item':_0x43b79b}})[_0x276d('0x1e')](function(_0x4020e3){_0x141be3({'res':_0x276d('0x27')});});}else{return db[_0x276d('0x24')]['create']({'CmContactId':_0x5dec41,'item':_0x43b79b,'ItemTypeId':_0x235509,'description':_0x531a88,'OrderBy':_0xf2f7d,'ItemClass':_0x276d('0x28')})[_0x276d('0x1e')](function(_0x12b9bc){_0x141be3({'res':_0x276d('0x29')});});}});});}function updateContact(_0x5efea5){return new Promise(function(_0x1336ac,_0x5c3dd4){var _0x21848e=_0x5efea5['id'];delete _0x5efea5['id'];return db[_0x276d('0x2a')][_0x276d('0x26')](_0x5efea5,{'where':{'id':_0x21848e}})[_0x276d('0x1e')](function(_0x37dc0d){updatedRows+=0x1;return db[_0x276d('0x2b')][_0x276d('0x26')]({'phone':_0x5efea5[_0x276d('0x12')]},{'where':{'ContactId':_0x21848e}})['then'](function(_0x546998){_0x1336ac({'ret':'OK'});});});});}function insertCmHopper(_0x334c11,_0x54db83,_0x3fb7dc,_0x3d9590,_0xf2f1a3){var _0x2aacb1=[_0x276d('0x2c'),_0x276d('0x2d'),_0x276d('0x2e'),'cm_contacts.ListId',_0x54db83+'.'+_0x3d9590,'cm_contacts.createdAt',_0x276d('0x2f'),_0x276d('0x30'),'cm_contacts.UserId','\x22'+_0xf2f1a3+'\x22'];return squel['insert']()[_0x276d('0x31')](_0x276d('0x32'))['fromQuery']([_0x276d('0x12'),_0x276d('0x33'),_0x276d('0x34'),_0x276d('0x35'),_0x3d9590,_0x276d('0x36'),_0x276d('0x37'),'priority',_0x276d('0x38'),_0x276d('0x39')],squel['select']()['fields'](_0x2aacb1)['from'](_0x54db83)[_0x276d('0x14')](_0x276d('0x3a'),null,'cm_contacts.ListId\x20=\x20'+_0x54db83+'.CmListId')[_0x276d('0x14')](_0x3fb7dc,null,_0x3fb7dc+_0x276d('0x3b')+_0x54db83+'.'+_0x3d9590)[_0x276d('0x16')](_0x54db83+_0x276d('0x3c'),_0x334c11)[_0x276d('0x16')](_0x276d('0x3d'),NOW)[_0x276d('0x16')](_0x276d('0x3e'),selectNotIn(_0x54db83,_0x3fb7dc,_0x3d9590,_0x276d('0x32'),[_0x276d('0x3f'),_0x276d('0x40')]))[_0x276d('0x16')](_0x276d('0x3e'),selectNotIn(_0x54db83,_0x3fb7dc,_0x3d9590,_0x276d('0x32'),['\x22always\x22'])))[_0x276d('0x41')]();}function insertCmHopperBlack(_0x349563,_0x10ca70,_0x266373,_0x8ef582){var _0x445eb1=[_0x276d('0x2c'),_0x276d('0x2e'),_0x276d('0x42'),_0x10ca70+'.'+_0x8ef582,'cm_contacts.createdAt',_0x276d('0x2f')];return squel[_0x276d('0x43')]()[_0x276d('0x31')](_0x276d('0x44'))['fromQuery']([_0x276d('0x12'),_0x276d('0x34'),_0x276d('0x35'),_0x8ef582,_0x276d('0x36'),_0x276d('0x37')],squel[_0x276d('0x10')]()['fields'](_0x445eb1)[_0x276d('0x13')](_0x10ca70)['join'](_0x276d('0x3a'),null,_0x276d('0x45')+_0x10ca70+'.CmListId')[_0x276d('0x14')](_0x266373,null,_0x266373+_0x276d('0x3b')+_0x10ca70+'.'+_0x8ef582)['where'](_0x10ca70+_0x276d('0x3c'),_0x349563)[_0x276d('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x276d('0x16')](_0x276d('0x3e'),squel[_0x276d('0x10')]()[_0x276d('0x11')](_0x276d('0x12'))['from'](_0x276d('0x44'))[_0x276d('0x16')](_0x276d('0x46'),_0x349563)['where'](_0x8ef582+_0x276d('0x47'),_0x10ca70+'.'+_0x8ef582)))[_0x276d('0x41')]();}function insertCmHopperAdditionalPhones(_0x32f855){var _0x5bc183=[_0x276d('0x48'),_0x276d('0x49'),_0x276d('0x4a'),_0x276d('0x4b'),'cm_contact_has_items.updatedAt'];return squel['insert']()[_0x276d('0x31')](_0x276d('0x4c'))[_0x276d('0x4d')]([_0x276d('0x4e'),'phone',_0x276d('0x4f'),'createdAt','updatedAt'],squel['select']()[_0x276d('0x50')](_0x5bc183)[_0x276d('0x13')](_0x276d('0x32'))[_0x276d('0x14')]('cm_contacts',null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')['join'](_0x276d('0x51'),null,_0x276d('0x52'))[_0x276d('0x16')](_0x276d('0x53'),_0x32f855)['where']('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x21d079,_0x3362eb,_0x3d47d7,_0x3317c3){var _0x5652c0=_[_0x276d('0x54')](_[_0x276d('0x55')](_0x3317c3),[_0x276d('0x35'),_0x276d('0x56'),_0x276d('0x36'),_0x276d('0x37')]);return squel[_0x276d('0x43')]()[_0x276d('0x31')]('cm_contacts')['fromQuery'](_0x5652c0,squel[_0x276d('0x10')]()['fields'](_0x5652c0)[_0x276d('0x13')](_0x3362eb)[_0x276d('0x16')]('('+_0x3d47d7[_0x276d('0x14')](',')+_0x276d('0x57'),squel[_0x276d('0x10')]()['fields'](_0x3d47d7)[_0x276d('0x13')](_0x276d('0x3a'))[_0x276d('0x16')](_0x276d('0x46'),_0x21d079))[_0x276d('0x16')]('id\x20IN\x20?',squel[_0x276d('0x10')]()[_0x276d('0x11')]('MIN(id)',_0x276d('0x58'))[_0x276d('0x13')](_0x3362eb)['group'](_0x3d47d7[_0x276d('0x14')](','))))[_0x276d('0x41')]();}function handleStop(){logger[_0x276d('0x59')](_0x276d('0x5a'));stopped=!![];}function handleUncaughtException(_0x19e2f0){logger[_0x276d('0x5b')](_0x19e2f0[_0x276d('0x20')]);process[_0x276d('0x5c')](0x1);}function handleError(_0x120e22,_0x1d3a01){stats[_0x276d('0x5d')][_0x276d('0x1c')]({'name':_0x1d3a01[_0x276d('0x5e')],'message':_0x1d3a01['message'],'row':_0x120e22});}function handleQuery(_0x39e4da){logger[_0x276d('0x59')](_0x39e4da);return db[_0x276d('0x18')][_0x276d('0x19')](_0x39e4da)['spread'](function(_0x51d8f2){results['push'](_0x51d8f2);})[_0x276d('0x1f')](function(_0x28ca09){logger[_0x276d('0x5b')](_0x28ca09[_0x276d('0x20')]);});}function main(_0x48001f,_0x477878,_0x3fd2f5,_0x5b26f4){logger[_0x276d('0x59')](_0x276d('0x5f'),_0x48001f,JSON[_0x276d('0x60')](_0x477878));process[_0x276d('0x61')](_0x276d('0x62'));var _0x436199=_0x477878[_0x276d('0x63')];var _0x1ba9a4=_[_0x276d('0x64')](_0x436199);var _0x39b4fa=_0x477878[_0x276d('0x65')];var _0x4a92b9=path[_0x276d('0x14')](config[_0x276d('0x66')],'server/files/tmp',_0x39b4fa+_0x276d('0x67'));logger[_0x276d('0x59')](_0x276d('0x68'),_0x477878);db['ContactItemType'][_0x276d('0x69')]({'raw':!![],'attributes':['id',_0x276d('0x6a')]})[_0x276d('0x1e')](function(_0x3309ed){for(var _0x316def=0x0;_0x316def<_0x3309ed[_0x276d('0x1b')];_0x316def++){if(_0x3309ed[_0x316def][_0x276d('0x6a')]in _0x436199){contactItemTypes[_0x276d('0x1c')](_0x3309ed[_0x316def]);delete _0x1ba9a4[_0x3309ed[_0x316def]['name']];hasAdditionalPhones=!![];}for(var _0x1ffbc3 in _0x436199){if(_0x3309ed[_0x316def]['name']+'_description'===_0x1ffbc3){phoneDescriptions[_0x276d('0x1c')]({'itemTypeId':_0x3309ed[_0x316def]['id'],'description':_0x1ffbc3});delete _0x1ba9a4[_0x1ffbc3];}}}if(hasAdditionalPhones)_0x1ba9a4[_0x276d('0x21')]='';var _0xf09c0e=_[_0x276d('0x55')](_0x1ba9a4)['join']();logger[_0x276d('0x59')](_0x276d('0x6b'),_0xf09c0e);fs[_0x276d('0x6c')](_0x4a92b9,_0xf09c0e+'\x0a');Papa[_0x276d('0x6d')](fs[_0x276d('0x6e')](_0x48001f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x62fa2a,_0x156fac){try{for(var _0x2763bc=0x0,_0x3d2220=[];_0x2763bc<_0x62fa2a[_0x276d('0x6f')][_0x276d('0x1b')];_0x2763bc++){stats['rows']+=0x1;if(_0x62fa2a[_0x276d('0x5d')][_0x2763bc]){handleError(_0x62fa2a[_0x276d('0x6f')][_0x2763bc],_0x62fa2a[_0x276d('0x5d')][_0x2763bc]);}else{var _0x34d77c=[];var _0x9652ac=[];var _0x2ca094={};for(var _0x506a8f in _0x436199){let _0x1dd638=contactItemTypes[_0x276d('0x70')](_0x5e47e5=>_0x5e47e5[_0x276d('0x6a')]===_0x506a8f);let _0x208438=contactItemTypes[_0x276d('0x70')](_0x44ebac=>_0x44ebac[_0x276d('0x6a')]+_0x276d('0x71')===_0x506a8f);if(_['isNil'](_0x1dd638)&&_[_0x276d('0x72')](_0x208438)){if(_0x436199[_0x276d('0x73')](_0x506a8f)){if(_0x62fa2a[_0x276d('0x6f')][_0x2763bc][_0x436199[_0x506a8f]]){var _0x53588d=_[_0x276d('0x74')](_0x62fa2a['data'][_0x2763bc][_0x436199[_0x506a8f]][_0x276d('0x75')](/"/g,'\x27'));switch(_0x506a8f){case'scheduledat':var _0x4fbc2d=moment(_0x53588d,_0x276d('0x76'),!![]);if(_0x4fbc2d[_0x276d('0x77')]()){_0x3d2220[_0x276d('0x1c')]('\x22'+_0x53588d+'\x22');}else{_0x34d77c[_0x276d('0x1c')](_0x276d('0x78'));}break;case _0x276d('0x79'):var _0x18ee82=parseInt(_0x53588d);_0x53588d=_[_0x276d('0x7a')](_0x18ee82)||_0x18ee82<0x0||_0x18ee82>0x4?_0x5b26f4?0x3:0x2:_0x18ee82;_0x3d2220[_0x276d('0x1c')]('\x22'+_0x53588d+'\x22');break;case _0x276d('0x38'):var _0x7c4a1d=parseInt(_0x53588d);if(_[_0x276d('0x7b')](_0x7c4a1d)&&_[_0x276d('0x7c')](_0x3fd2f5,_0x7c4a1d)){_0x3d2220['push']('\x22'+_0x7c4a1d+'\x22');}else{_0x34d77c[_0x276d('0x1c')](_0x276d('0x7d'));}break;case _0x276d('0x7e'):if(isEmail(_0x53588d)){_0x3d2220[_0x276d('0x1c')]('\x22'+_0x53588d+'\x22');}else{_0x34d77c[_0x276d('0x1c')](_0x276d('0x7f'));}break;case _0x276d('0x80'):var _0x385caa=moment(_0x53588d,'YYYY-MM-DD',!![]);if(_0x385caa['isValid']()){_0x3d2220[_0x276d('0x1c')]('\x22'+_0x53588d+'\x22');}else{_0x34d77c[_0x276d('0x1c')](_0x276d('0x81'));}break;default:_0x3d2220[_0x276d('0x1c')]('\x22'+_0x53588d+'\x22');}}else{switch(_0x506a8f){case _0x276d('0x82'):case'phone':_0x34d77c['push'](_0x506a8f+_0x276d('0x83'));break;default:_0x3d2220['push']('\x22\x22');}}}}else{var _0x148447='';if(!_[_0x276d('0x72')](_0x1dd638)){if(!_0x2ca094[_0x276d('0x73')](_0x1dd638['id'])){for(var _0x5aa634=0x0;_0x5aa634<_0x436199[_0x506a8f][_0x276d('0x1b')];_0x5aa634++){var _0x53588d=_[_0x276d('0x74')](_0x62fa2a['data'][_0x2763bc][_0x436199[_0x506a8f][_0x5aa634]]['replace'](/"/g,'\x27'));var _0x5dbf6b=phoneDescriptions[_0x276d('0x70')](_0x92d72c=>_0x92d72c[_0x276d('0x84')]===_0x1dd638['id']);if(!_[_0x276d('0x72')](_0x5dbf6b)){var _0x1a1957=_[_0x276d('0x74')](_0x62fa2a[_0x276d('0x6f')][_0x2763bc][_0x436199[_0x5dbf6b[_0x276d('0x85')]][0x0]][_0x276d('0x75')](/"/g,'\x27'));if(!_['isNil'](_0x1a1957))_0x53588d=_0x53588d+'§'+_0x1a1957;}if(_0x148447=='')_0x148447=_0x53588d;else _0x148447+='|'+_0x53588d;}_0x9652ac[_0x276d('0x1c')](_0x1dd638['id']+':'+_0x148447);_0x2ca094[_0x1dd638['id']]=0x1;}}}}if(hasAdditionalPhones){_0x3d2220['push']('\x22'+_0x9652ac[_0x276d('0x14')](';')+'\x22');}if(_0x34d77c[_0x276d('0x1b')]){handleError(_0x62fa2a[_0x276d('0x6f')][_0x2763bc],{'code':_0x276d('0x86'),'message':_0x34d77c[_0x276d('0x14')]()});}else{fs['appendFileSync'](_0x4a92b9,_0x3d2220['join']()+'\x0a');}_0x3d2220=[];}if(!(stats[_0x276d('0x87')]%0xc8)){socket['emit'](_0x276d('0x88')+_0x39b4fa,stats);stats[_0x276d('0x5d')]=[];}}if(stopped){logger[_0x276d('0x59')](_0x276d('0x89'));_0x156fac['abort']();}}catch(_0x5c79ec){handleError(_0x62fa2a[_0x276d('0x6f')][_0x2763bc],{'code':'SystemError','message':_0x5c79ec[_0x276d('0x20')]});logger[_0x276d('0x5b')]('step',_0x5c79ec[_0x276d('0x20')]);}},'complete':function(){try{var _0x4d20f6=[];var _0x4e1a19=tempTableName;_0x4d20f6[_0x276d('0x1c')]('CREATE\x20TABLE\x20'+_0x4e1a19+_0x276d('0x8a'));logger[_0x276d('0x59')]('CIS\x20len',contactItemTypes[_0x276d('0x1b')]);var _0x2ff9a3=util['format'](_0x276d('0x8b'),_0x4a92b9,_0x4e1a19,_0xf09c0e,_0x477878['ListId'],_0x477878[_0x276d('0x56')]||null,NOW,NOW);if(_[_0x276d('0x72')](_0x436199[_0x276d('0x33')])){_0x2ff9a3+=_0x276d('0x8c');}_0x4d20f6[_0x276d('0x1c')](_0x2ff9a3);BPromise['each'](_0x4d20f6,handleQuery)['then'](function(_0x127b9e){BPromise[_0x276d('0x1d')]([handleAdditionalPhones()])[_0x276d('0x1e')](function(){_0x4d20f6=[];for(var _0x2b4b6e=0x0;_0x2b4b6e<promisesContact[_0x276d('0x1b')];_0x2b4b6e++){_0x4d20f6[_0x276d('0x1c')](updateContact(promisesContact[_0x2b4b6e][_0x276d('0x8d')]));}BPromise[_0x276d('0x1d')](_0x4d20f6)[_0x276d('0x1e')](function(){_0x4d20f6=[];for(var _0x25f7b0=0x0;_0x25f7b0<promisesAdditionalPhones[_0x276d('0x1b')];_0x25f7b0++){_0x4d20f6[_0x276d('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x25f7b0]['contactId'],promisesAdditionalPhones[_0x25f7b0]['contactTypeId'],promisesAdditionalPhones[_0x25f7b0][_0x276d('0x12')],promisesAdditionalPhones[_0x25f7b0][_0x276d('0x8e')]));}BPromise[_0x276d('0x1d')](_0x4d20f6)['then'](function(){_0x4d20f6=[];_0x4d20f6['push'](insertCmHopperAdditionalPhones(_0x477878[_0x276d('0x35')]));_0x4d20f6[_0x276d('0x1c')]('DROP\x20TABLE\x20'+_0x4e1a19+';');BPromise[_0x276d('0x8f')](_0x4d20f6,handleQuery)['then'](function(_0x2aac4d){stats[_0x276d('0x90')]=!![];stats['affectedRows']=updatedRows;socket[_0x276d('0x91')](_0x276d('0x88')+_0x39b4fa,stats);fs[_0x276d('0x92')](_0x48001f);fs[_0x276d('0x92')](_0x4a92b9);process[_0x276d('0x5c')](0x0);})[_0x276d('0x1f')](function(_0x13d4f3){logger[_0x276d('0x5b')](_0x13d4f3[_0x276d('0x20')]);process[_0x276d('0x5c')](0x1);});});});});})[_0x276d('0x1f')](function(_0x43ec7f){logger[_0x276d('0x5b')](_0x43ec7f[_0x276d('0x20')]);process[_0x276d('0x5c')](0x1);});}catch(_0x366662){logger['error'](_0x276d('0x93'),_0x366662['message']);process[_0x276d('0x5c')](0x1);}},'error':function(_0xd4729d,_0x32e162,_0x1be889,_0x2bebe6){throw new Error(_0x2bebe6);}});});}function validate(){if(process['argv']&&process['argv']['length']<0x4){throw new Error(_0x276d('0x94'));}var _0x4e498d=path[_0x276d('0x14')](config[_0x276d('0x66')],_0x276d('0x95'),process[_0x276d('0x96')][0x2]);if(!fs[_0x276d('0x97')](_0x4e498d)){throw new Error(_0x276d('0x98'));}var _0x5bacf4={};try{_0x5bacf4=JSON[_0x276d('0x6d')](process[_0x276d('0x96')][0x3]);if(!_0x5bacf4[_0x276d('0x63')]){throw new Error(_0x276d('0x99'));}var _0x1fbbd1=0x0;if(_0x5bacf4['binding'][_0x276d('0x38')]){_0x1fbbd1=0x1;}if(!_0x5bacf4[_0x276d('0x35')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0xc2ec6a){throw new Error(_0x276d('0x9a'));}var _0x152ba5=[];try{_0x152ba5=_[_0x276d('0x9b')](JSON[_0x276d('0x6d')](process[_0x276d('0x96')][0x4]),'id');}catch(_0x438016){logger[_0x276d('0x59')](_0x276d('0x9c'));}main(_0x4e498d,_0x5bacf4,_0x152ba5,_0x1fbbd1);}validate();process['on'](_0x276d('0x9d'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index b25a091..afc5370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d0=['***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','Duration','Billable\x20Time','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','getDescriptions'];(function(_0x3b956b,_0x2a9d86){var _0x1fe6a8=function(_0x4d99c0){while(--_0x4d99c0){_0x3b956b['push'](_0x3b956b['shift']());}};_0x1fe6a8(++_0x2a9d86);}(_0x76d0,0x176));var _0x076d=function(_0x2a06e4,_0x499578){_0x2a06e4=_0x2a06e4-0x0;var _0x1046cf=_0x76d0[_0x2a06e4];return _0x1046cf;};'use strict';exports[_0x076d('0x0')]=function(_0x8eb35a,_0x22a790){var _0x2a30f3=[{'type':_0x076d('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x8eb35a[_0x076d('0x2')]()){case _0x076d('0x3'):switch(_0x22a790[_0x076d('0x2')]()){case _0x076d('0x4'):_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0x7')});_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0x8')});break;case _0x076d('0x9'):_0x2a30f3['push']({'type':_0x076d('0x1'),'content':_0x076d('0xa'),'variableName':null});_0x2a30f3[_0x076d('0x5')]({'type':_0x076d('0x6'),'content':'','variableName':_0x076d('0xb')});break;}}return _0x2a30f3;};exports[_0x076d('0xc')]=function(_0x49b1bb,_0x48486a){var _0x25ad81=[];switch(_0x49b1bb['toLowerCase']()){case _0x076d('0x3'):switch(_0x48486a['toLowerCase']()){case _0x076d('0x4'):_0x25ad81=[{'type':_0x076d('0x1'),'content':_0x076d('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0xf'),'keyType':_0x076d('0x6'),'variableName':'calleridnum'},{'type':'keyValue','content':'','key':_0x076d('0x10'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x11')},{'type':_0x076d('0xe'),'content':'','key':'Call\x20To','keyType':_0x076d('0x6'),'variableName':_0x076d('0x12')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x13'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x7')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x14'),'keyType':'variable','variableName':_0x076d('0x15')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x16'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x17')},{'type':_0x076d('0x1'),'content':_0x076d('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0x076d('0x6'),'variableName':_0x076d('0x19')},{'type':_0x076d('0xe'),'content':'','key':'Agent\x20Number','keyType':_0x076d('0x6'),'variableName':_0x076d('0xb')},{'type':_0x076d('0x1'),'content':_0x076d('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x076d('0x1b'),'keyType':'variable','variableName':'agentcalledAt'},{'type':'keyValue','content':'','key':_0x076d('0x1c'),'keyType':'variable','variableName':_0x076d('0x1d')},{'type':_0x076d('0xe'),'content':'','key':'Agent\x20Complete','keyType':_0x076d('0x6'),'variableName':_0x076d('0x1e')},{'type':'keyValue','content':'','key':_0x076d('0x1f'),'keyType':_0x076d('0x6'),'variableName':_0x076d('0x20')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x21'),'keyType':'variable','variableName':'talktime'}];break;case'outbound':_0x25ad81=[{'type':_0x076d('0x1'),'content':_0x076d('0xd'),'variableName':null},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x22'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0xb')},{'type':_0x076d('0xe'),'content':'','key':'Member\x20Name','keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x23')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x14'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x15')},{'type':_0x076d('0xe'),'content':'','key':_0x076d('0x16'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x24')},{'type':'string','content':_0x076d('0x1a')},{'type':'keyValue','content':'','key':_0x076d('0x25'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x26')},{'type':'keyValue','content':'','key':_0x076d('0x27'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':_0x076d('0x28')},{'type':'keyValue','content':'','key':_0x076d('0x29'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0x076d('0x2a'),'keyType':_0x076d('0x6'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x25ad81;};
\ No newline at end of file
+var _0x7a8d=['calleridnum','outbound','string','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','Hold\x20Time','holdtime','Called\x20Number','Member\x20Name','Answer\x20Time','answertime','endtime','Duration','duration','Billable\x20Time','billableseconds','[xCALLY\x20Ticket]','voice','toLowerCase','inbound','push','variable'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0x7a8d,0x9e));var _0xd7a8=function(_0xdbdef3,_0x5d1e76){_0xdbdef3=_0xdbdef3-0x0;var _0xf3faf9=_0x7a8d[_0xdbdef3];return _0xf3faf9;};'use strict';exports['getSubjects']=function(_0x35a343,_0x42df75){var _0x3a2d25=[{'type':'string','content':_0xd7a8('0x0'),'variableName':null}];switch(_0x35a343['toLowerCase']()){case _0xd7a8('0x1'):switch(_0x42df75[_0xd7a8('0x2')]()){case _0xd7a8('0x3'):_0x3a2d25[_0xd7a8('0x4')]({'type':_0xd7a8('0x5'),'content':'','variableName':'queue'});_0x3a2d25[_0xd7a8('0x4')]({'type':_0xd7a8('0x5'),'content':'','variableName':_0xd7a8('0x6')});break;case _0xd7a8('0x7'):_0x3a2d25[_0xd7a8('0x4')]({'type':_0xd7a8('0x8'),'content':_0xd7a8('0x9'),'variableName':null});_0x3a2d25[_0xd7a8('0x4')]({'type':_0xd7a8('0x5'),'content':'','variableName':_0xd7a8('0xa')});break;}}return _0x3a2d25;};exports['getDescriptions']=function(_0x66d5e8,_0x565f66){var _0x315ac2=[];switch(_0x66d5e8['toLowerCase']()){case _0xd7a8('0x1'):switch(_0x565f66[_0xd7a8('0x2')]()){case'inbound':_0x315ac2=[{'type':_0xd7a8('0x8'),'content':_0xd7a8('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xd7a8('0xc'),'content':'','key':'Caller\x20Number','keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x6')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0xd'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0xe')},{'type':_0xd7a8('0xc'),'content':'','key':'Call\x20To','keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0xf')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x10'),'keyType':'variable','variableName':'queue'},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x11'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x12')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x13'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x14')},{'type':'string','content':_0xd7a8('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x16'),'keyType':'variable','variableName':_0xd7a8('0x17')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x18'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0xa')},{'type':_0xd7a8('0x8'),'content':_0xd7a8('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x1a'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x14')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x1b'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x1c')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x1d'),'keyType':_0xd7a8('0x5'),'variableName':'agentcompleteAt'},{'type':'keyValue','content':'','key':_0xd7a8('0x1e'),'keyType':_0xd7a8('0x5'),'variableName':_0xd7a8('0x1f')},{'type':_0xd7a8('0xc'),'content':'','key':'Talk\x20Time','keyType':_0xd7a8('0x5'),'variableName':'talktime'}];break;case _0xd7a8('0x7'):_0x315ac2=[{'type':_0xd7a8('0x8'),'content':_0xd7a8('0xb'),'variableName':null},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x20'),'keyType':'variable','keyContent':'','variableName':'destcalleridnum'},{'type':'keyValue','content':'','key':_0xd7a8('0x21'),'keyType':_0xd7a8('0x5'),'keyContent':'','variableName':'membername'},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x11'),'keyType':_0xd7a8('0x5'),'keyContent':'','variableName':_0xd7a8('0x12')},{'type':_0xd7a8('0xc'),'content':'','key':'Date','keyType':_0xd7a8('0x5'),'keyContent':'','variableName':'starttime'},{'type':_0xd7a8('0x8'),'content':_0xd7a8('0x19')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x22'),'keyType':_0xd7a8('0x5'),'keyContent':'','variableName':_0xd7a8('0x23')},{'type':_0xd7a8('0xc'),'content':'','key':'Complete\x20Time','keyType':_0xd7a8('0x5'),'keyContent':'','variableName':_0xd7a8('0x24')},{'type':'keyValue','content':'','key':_0xd7a8('0x25'),'keyType':_0xd7a8('0x5'),'keyContent':'','variableName':_0xd7a8('0x26')},{'type':_0xd7a8('0xc'),'content':'','key':_0xd7a8('0x27'),'keyType':_0xd7a8('0x5'),'keyContent':'','variableName':_0xd7a8('0x28')}];break;}}return _0x315ac2;};
\ No newline at end of file
index ec1e09d..69db076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9159=['length','clause','order','forEach','DESC','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','query','body','omit','html','phone','fax','mobile','updateUser','./sql-utils','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','contact','filter','user','having','read','checkAccountsRestrictions','group','i.id','ids','tag'];(function(_0x451999,_0x1b3908){var _0x1b696e=function(_0x259ab1){while(--_0x259ab1){_0x451999['push'](_0x451999['shift']());}};_0x1b696e(++_0x1b3908);}(_0x9159,0xa7));var _0x9915=function(_0xfad1a7,_0x2e3b8d){_0xfad1a7=_0xfad1a7-0x0;var _0x571012=_0x9159[_0xfad1a7];return _0x571012;};'use strict';var _=require('lodash');var sqlUtils=require(_0x9915('0x0'));var utils=require('./utils');exports['findAll']=function(_0x1be57c,_0x36ab31,_0x44723a,_0x78521f,_0x24771d){var _0x243ec5={'count':0x0,'rows':[]};var _0x3ea89c=sqlUtils[_0x9915('0x1')](_0x1be57c,_0x44723a,_0x36ab31);if(_0x3ea89c){return Promise[_0x9915('0x2')](_0x243ec5);}var _0x5569de=sqlUtils['getInteractionsQuery'](_0x1be57c);var _0xa14abf={};return Promise[_0x9915('0x2')]()[_0x9915('0x3')](function(){if(_0x36ab31[_0x9915('0x4')]){return sqlUtils[_0x9915('0x5')](_0x36ab31[_0x9915('0x4')],_0x24771d);}else{return sqlUtils[_0x9915('0x6')](_0x1be57c,_0x36ab31,_0x24771d);}})[_0x9915('0x3')](function(_0x1c6af5){_0x5569de[_0x9915('0x7')](_0x1c6af5['body']);_0x5569de[_0x9915('0x7')](_0x1c6af5[_0x9915('0x8')]);_0x5569de[_0x9915('0x7')](_0x1c6af5['default']);_0x5569de[_0x9915('0x7')](_0x1c6af5['fields']);_0x5569de['where'](_0x1c6af5[_0x9915('0x9')]);_0x5569de[_0x9915('0x7')](_0x1c6af5[_0x9915('0xa')]);_0x5569de[_0x9915('0xb')](_0x1c6af5[_0x9915('0xc')]);_0xa14abf=_0x1c6af5['tags'];return sqlUtils[_0x9915('0xd')](_0x1be57c,_0x44723a,_0x36ab31);})[_0x9915('0x3')](function(_0x1398e1){_0x5569de[_0x9915('0x7')](_0x1398e1);_0x5569de[_0x9915('0xe')](_0x9915('0xf'));var _0x9e1b42=_0x36ab31[_0x9915('0x4')]?_0xa14abf[_0x9915('0x10')]:_0x36ab31[_0x9915('0x11')];return sqlUtils['countFilteredInteractions'](_0x5569de,_0x9e1b42);})[_0x9915('0x3')](function(_0x4c9811){_0x243ec5['count']=_0x4c9811[_0x9915('0x12')];if(_0x243ec5['count']===0x0){return[];}_0x5569de[_0x9915('0xb')](_0xa14abf[_0x9915('0x13')]);if(_0x78521f[_0x9915('0x14')]){_0x78521f[_0x9915('0x14')][_0x9915('0x15')](function(_0x222ffd){var _0x1fb651=_0x222ffd[0x0]==='contactName'?_0x222ffd[0x0]:'i.'+_0x222ffd[0x0];_0x5569de['order'](_0x1fb651,_0x222ffd[0x1]===_0x9915('0x16')?![]:!![]);if(_0x222ffd[0x0]===_0x9915('0x17')){var _0x58bbde=sqlUtils[_0x9915('0x18')](_0x1be57c,_0x36ab31);_0x5569de[_0x9915('0x14')](_0x58bbde,_0x222ffd[0x1]===_0x9915('0x16')?![]:!![]);}});}return sqlUtils[_0x9915('0x19')](_0x1be57c,_0x5569de,_0x36ab31,_0x78521f);})['then'](function(_0x46ed53){_0x243ec5[_0x9915('0x1a')]=_0x46ed53;return _0x243ec5;})[_0x9915('0x1b')](function(_0x109a20){throw _0x109a20;});};exports[_0x9915('0x1c')]=function(_0x296a63,_0x16ef79){return function(_0x5ae5e1,_0x32f42d,_0x349193){var _0x2871b0=_0x5ae5e1[_0x9915('0xa')];var _0x366ee6={};var _0x3ac397=_0x5ae5e1[_0x9915('0x1d')];if(_0x366ee6){_0x366ee6=_['clone'](_0x5ae5e1[_0x9915('0x1e')]);_0x366ee6=_[_0x9915('0x1f')](_0x366ee6,[_0x9915('0x1e'),_0x9915('0x20'),_0x9915('0x21'),_0x9915('0x22'),_0x9915('0x23')]);}utils[_0x9915('0x24')](_0x2871b0,_0x366ee6,_0x3ac397,_0x296a63,_0x16ef79);_0x349193(null);};};
\ No newline at end of file
+var _0xbaf4=['clone','omit','phone','fax','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','parseAdvancedSearchFilter','parseQueryParameters','body','where','contact','default','fields','filter','user','having','read','tags','checkAccountsRestrictions','tag','count','length','order','contactName','DESC','getClosedOrderClause','getFilteredInteractions','catch','tracked','query'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xbaf4,0x1f3));var _0x4baf=function(_0xc4a478,_0x5e2428){_0xc4a478=_0xc4a478-0x0;var _0x408de6=_0xbaf4[_0xc4a478];return _0x408de6;};'use strict';var _=require(_0x4baf('0x0'));var sqlUtils=require(_0x4baf('0x1'));var utils=require(_0x4baf('0x2'));exports[_0x4baf('0x3')]=function(_0x32e4fb,_0x440d23,_0x42e54e,_0x57eecf,_0x4accca){var _0x312f16={'count':0x0,'rows':[]};var _0x2f05c0=sqlUtils[_0x4baf('0x4')](_0x32e4fb,_0x42e54e,_0x440d23);if(_0x2f05c0){return Promise[_0x4baf('0x5')](_0x312f16);}var _0x5138d8=sqlUtils[_0x4baf('0x6')](_0x32e4fb);var _0x13d33f={};return Promise[_0x4baf('0x5')]()[_0x4baf('0x7')](function(){if(_0x440d23[_0x4baf('0x8')]){return sqlUtils[_0x4baf('0x9')](_0x440d23['search'],_0x4accca);}else{return sqlUtils[_0x4baf('0xa')](_0x32e4fb,_0x440d23,_0x4accca);}})[_0x4baf('0x7')](function(_0x397a11){_0x5138d8['where'](_0x397a11[_0x4baf('0xb')]);_0x5138d8[_0x4baf('0xc')](_0x397a11[_0x4baf('0xd')]);_0x5138d8[_0x4baf('0xc')](_0x397a11[_0x4baf('0xe')]);_0x5138d8['where'](_0x397a11[_0x4baf('0xf')]);_0x5138d8[_0x4baf('0xc')](_0x397a11[_0x4baf('0x10')]);_0x5138d8[_0x4baf('0xc')](_0x397a11[_0x4baf('0x11')]);_0x5138d8[_0x4baf('0x12')](_0x397a11[_0x4baf('0x13')]);_0x13d33f=_0x397a11[_0x4baf('0x14')];return sqlUtils[_0x4baf('0x15')](_0x32e4fb,_0x42e54e,_0x440d23);})[_0x4baf('0x7')](function(_0x6f7c2a){_0x5138d8[_0x4baf('0xc')](_0x6f7c2a);_0x5138d8['group']('i.id');var _0x495552=_0x440d23[_0x4baf('0x8')]?_0x13d33f['ids']:_0x440d23[_0x4baf('0x16')];return sqlUtils['countFilteredInteractions'](_0x5138d8,_0x495552);})['then'](function(_0x1b8e9f){_0x312f16[_0x4baf('0x17')]=_0x1b8e9f[_0x4baf('0x18')];if(_0x312f16[_0x4baf('0x17')]===0x0){return[];}_0x5138d8[_0x4baf('0x12')](_0x13d33f['clause']);if(_0x57eecf[_0x4baf('0x19')]){_0x57eecf[_0x4baf('0x19')]['forEach'](function(_0x3c4a2e){var _0x4c442c=_0x3c4a2e[0x0]===_0x4baf('0x1a')?_0x3c4a2e[0x0]:'i.'+_0x3c4a2e[0x0];_0x5138d8['order'](_0x4c442c,_0x3c4a2e[0x1]===_0x4baf('0x1b')?![]:!![]);if(_0x3c4a2e[0x0]==='closed'){var _0x28e6b9=sqlUtils[_0x4baf('0x1c')](_0x32e4fb,_0x440d23);_0x5138d8['order'](_0x28e6b9,_0x3c4a2e[0x1]==='DESC'?![]:!![]);}});}return sqlUtils[_0x4baf('0x1d')](_0x32e4fb,_0x5138d8,_0x440d23,_0x57eecf);})['then'](function(_0x13356d){_0x312f16['rows']=_0x13356d;return _0x312f16;})[_0x4baf('0x1e')](function(_0x44cbcb){throw _0x44cbcb;});};exports[_0x4baf('0x1f')]=function(_0x1ba1b7,_0x2554de){return function(_0x593a07,_0x3a14ff,_0x56d37c){var _0x3dfcee=_0x593a07[_0x4baf('0x11')];var _0x22155b={};var _0x585c1a=_0x593a07[_0x4baf('0x20')];if(_0x22155b){_0x22155b=_[_0x4baf('0x21')](_0x593a07[_0x4baf('0xb')]);_0x22155b=_[_0x4baf('0x22')](_0x22155b,[_0x4baf('0xb'),'html',_0x4baf('0x23'),_0x4baf('0x24'),'mobile']);}utils[_0x4baf('0x25')](_0x3dfcee,_0x22155b,_0x585c1a,_0x1ba1b7,_0x2554de);_0x56d37c(null);};};
\ No newline at end of file
index 5fb99f5..0b99bcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0bc=['type','default','text','value','start','end','unreadMessages','read','and','Contact','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','Tag','tags','clause','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','some','\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','resolve','then','fields','tag','filter','capitalize','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Sequelize','QueryTypes','SELECT','sequelize','query','keyBy','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','Account.email','contactName','i.createdAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','i.ContactId','i.MailAccountId','i.UserId','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','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','TagIds','limit','offset','toString','groupBy','Setting','findOne','enableEmailPreview','all','COUNT(*)','isEmpty','t.id\x20IN\x20?','exports','squel','../parsers/advancedSearch','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','select','field','name','color','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','map','getInteractionsTables','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','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','find','buildExpression'];(function(_0x1fedbf,_0x54fafd){var _0x254432=function(_0x2cf985){while(--_0x2cf985){_0x1fedbf['push'](_0x1fedbf['shift']());}};_0x254432(++_0x54fafd);}(_0xa0bc,0x1b6));var _0xca0b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var squel=require(_0xca0b('0x0'));var as=require(_0xca0b('0x1'));var qs=require('../parsers/qs');var updateInteraction=require(_0xca0b('0x2'))[_0xca0b('0x3')];var utils=require(_0xca0b('0x4'));var db=require(_0xca0b('0x5'))['db'];function skipInteractionsQuery(_0x2f7b56,_0x3a53b4,_0xf39a90){var _0x29ae7e=![];var _0x3cb084=utils[_0xca0b('0x6')](_0x2f7b56);if(_0x3a53b4[_0xca0b('0x7')]===_0xca0b('0x8')&&!_0xf39a90[_0xca0b('0x9')]&&!_0xf39a90[_0x3cb084]){_0x29ae7e=!![];}return _0x29ae7e;}function getTagsQuery(){return squel[_0xca0b('0xa')]()['field']('id')[_0xca0b('0xb')](_0xca0b('0xc'))[_0xca0b('0xb')](_0xca0b('0xd'))[_0xca0b('0xe')](_0xca0b('0xf'));}function getUsersQuery(_0x589187,_0x31a0d1){var _0x45c0cf=utils[_0xca0b('0x10')](_0x589187);var _0x18af13=_0xca0b('0x11')+_0x589187+_0xca0b('0x12');var _0x2ab14f=squel[_0xca0b('0xa')]()[_0xca0b('0xb')](_0xca0b('0x13'))['field'](_0xca0b('0x14'))[_0xca0b('0xb')](_0xca0b('0x15')+_0x45c0cf)['from'](_0x18af13,'ui')[_0xca0b('0x16')](_0xca0b('0x17'),'u',_0xca0b('0x18'));if(_0x31a0d1[_0xca0b('0x19')]>0x0){_0x2ab14f[_0xca0b('0x1a')](_0xca0b('0x15')+_0x45c0cf+'\x20IN\x20?',_[_0xca0b('0x1b')](_0x31a0d1,'id'));}return _0x2ab14f;}function getInteractionsQuery(_0x3bcd2a){var _0x4d9b16=utils[_0xca0b('0x1c')](_0x3bcd2a);var _0x5db810=utils[_0xca0b('0x6')](_0x3bcd2a);var _0x5050b7=utils[_0xca0b('0x10')](_0x3bcd2a);return squel[_0xca0b('0xa')]()[_0xca0b('0xe')](_0x4d9b16['interactions'],'i')[_0xca0b('0x16')](_0xca0b('0x1d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xca0b('0x16')](_0xca0b('0x17'),'o',_0xca0b('0x1e'))['left_join'](_0x4d9b16[_0xca0b('0x1f')],'a',_0xca0b('0x20')+_0x5db810)[_0xca0b('0x16')](_0x4d9b16[_0xca0b('0x21')],'me',_0xca0b('0x22')+_0x5050b7+_0xca0b('0x23'))['left_join'](_0x4d9b16[_0xca0b('0x24')],'it',_0xca0b('0x25')+_0x5050b7+_0xca0b('0x23'))['left_join']('tools_tags','t',_0xca0b('0x26'));}function getSqlClauses(){var _0x428459={'body':squel[_0xca0b('0x27')](),'contact':squel[_0xca0b('0x27')](),'default':squel[_0xca0b('0x27')](),'fields':squel['expr'](),'filter':squel[_0xca0b('0x27')](),'read':squel[_0xca0b('0x27')](),'tags':{'clause':squel[_0xca0b('0x27')](),'ids':null},'user':squel[_0xca0b('0x27')]()};return _0x428459;}function parseTagParameter(_0x15478d){var _0x48e172=squel['expr']();if(_0x15478d){var _0x4e0515=utils[_0xca0b('0x28')](_0x15478d);_0x4e0515[_0xca0b('0x29')](function(_0x3fd832){_0x48e172['or'](_0xca0b('0x2a'),'%,'+_0x3fd832+',%');});}return _0x48e172;}function parseReadParameter(_0xe7673b){var _0x515f83='';if(_0xe7673b){_0x515f83=_0xca0b('0x2b');if(_0xe7673b==='1'){_0x515f83=_0x515f83[_0xca0b('0x2c')](_0xca0b('0x2d'),'=');}else{_0x515f83=_0x515f83[_0xca0b('0x2c')](_0xca0b('0x2d'),'>');}}return _0x515f83;}function parseSearchFilter(_0x449a3a,_0xa59ab0){var _0x4a99cb=squel[_0xca0b('0x27')]();if(_0xa59ab0){var _0x17a365=_0xa59ab0[_0xca0b('0x2c')]('\x5c','\x5c\x5c')[_0xca0b('0x2c')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x17a365)){_0x4a99cb['or'](_0xca0b('0x2e'),_0x17a365+'%');if([_0xca0b('0x2f'),_0xca0b('0x30')][_0xca0b('0x31')](_0x449a3a)){_0x4a99cb['or'](_0xca0b('0x32'),_0x17a365+'%');}else if(_0x449a3a===_0xca0b('0x33')){_0x4a99cb['or'](_0xca0b('0x34'),_0x17a365+'%');}else if(_0x449a3a===_0xca0b('0x35')){_0x4a99cb['or'](_0xca0b('0x36'),_0x17a365+'%');}}else if(_0x449a3a===_0xca0b('0x37')&&qs[_0xca0b('0x38')](_0x17a365)){_0x4a99cb['or'](_0xca0b('0x39'),_0x17a365+'%');}else{if(_0x449a3a===_0xca0b('0x37')){_0x4a99cb['or'](_0xca0b('0x3a'),qs[_0xca0b('0x3b')](_0x17a365))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xca0b('0x3b')](_0x17a365));}else{if(_0x449a3a!==_0xca0b('0x33')){_0x4a99cb['or'](_0xca0b('0x3c'),qs[_0xca0b('0x3b')](_0x17a365));}_0x4a99cb['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x17a365+'%');}}}return _0x4a99cb;}function parseAdvancedSearchFilter(_0x3d5fef,_0x4657bd){var _0x50d87d=getSqlClauses();var _0x39846e=as[_0xca0b('0x3d')](_0x3d5fef);var _0xe7f5f5=_0x39846e[_0xca0b('0x3e')];for(var _0xe54fbc=0x0;_0xe54fbc<_0x39846e[_0xca0b('0x3f')][_0xca0b('0x19')];_0xe54fbc++){var _0x14acd3=_0x39846e['conditions'][_0xe54fbc];var _0x50642d='i';var _0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0x14acd3[_0xca0b('0xb')]]);if(_0x370db4){var _0x351f5a=as[_0xca0b('0x41')](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d[_0xca0b('0x43')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x46')],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x47')]);}else{switch(_0x14acd3[_0xca0b('0xb')]){case _0xca0b('0x48'):var _0x21b9a9=parseReadParameter(_0x14acd3[_0xca0b('0x45')]);_0x50d87d[_0xca0b('0x49')][_0xca0b('0x4a')](_0x21b9a9);break;case _0xca0b('0x4b'):if(_0x14acd3[_0xca0b('0x4c')]===_0xca0b('0x4d')){if(_0x14acd3[_0xca0b('0x45')][_0xca0b('0x4e')]('\x20')[_0xca0b('0x19')]>0x1){_0x50d87d['contact'][_0xe7f5f5]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xca0b('0x3b')](_0x14acd3[_0xca0b('0x45')]),null);}else{var _0x5da705='%'+_0x14acd3['value']+'%';_0x50d87d['contact'][_0xe7f5f5](_0xca0b('0x4f'),_0x5da705,_0x5da705,_0x5da705);}}else{_0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0xca0b('0x50')]);_0x14acd3[_0xca0b('0xb')]='ContactId';_0x351f5a=as['buildExpression'](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d['contact'][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value']['start'],_0x351f5a['value'][_0xca0b('0x47')]);}break;case _0xca0b('0x51'):var _0x460819=_0x14acd3[_0xca0b('0x45')][_0xca0b('0x4e')](',')[_0xca0b('0x1b')](function(_0x54bcb7){return Number(_0x54bcb7);});var _0x8ecb03=parseTagParameter(_0x460819);_0x50d87d[_0xca0b('0x52')][_0xca0b('0x53')][_0xca0b('0x4a')](_0x8ecb03);_0x50d87d[_0xca0b('0x52')]['ids']=_0x460819;break;case'User':if(_0x14acd3[_0xca0b('0x4c')]===_0xca0b('0x4d')){_0x50d87d[_0xca0b('0x54')][_0xe7f5f5](_0xca0b('0x55'),'%'+_0x14acd3['value']+'%',null);}else{_0x370db4=_[_0xca0b('0x40')](_0x4657bd,[_0xca0b('0xc'),_0xca0b('0x56')]);_0x14acd3[_0xca0b('0xb')]='UserId';_0x351f5a=as['buildExpression'](_0x50642d,_0x370db4[_0xca0b('0x42')],_0x14acd3);_0x50d87d[_0xca0b('0x54')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value'][_0xca0b('0x46')],_0x351f5a[_0xca0b('0x45')]['end']);}break;case'body':case'plainBody':_0x351f5a=as[_0xca0b('0x41')]('me',null,_0x14acd3);_0x50d87d[_0xca0b('0x57')][_0xe7f5f5](_0x351f5a[_0xca0b('0x44')],_0x351f5a['value']['start'],_0x351f5a[_0xca0b('0x45')][_0xca0b('0x47')]);break;}}}return _0x50d87d;}function parseModelFields(_0x250288,_0x174e81,_0xeea21f){var _0x32e498=utils['getAccountFK'](_0x250288);var _0x4e81ec=squel['expr']();var _0x456ea1=_(_0x174e81)[_0xca0b('0x58')]()['map'](function(_0xcb9937){return _[_0xca0b('0x59')](_0xeea21f,[_0xca0b('0xc'),_0xcb9937])?_0xcb9937:undefined;})['compact']()[_0xca0b('0x45')]();if(_0x456ea1['length']>0x0){_0x456ea1[_0xca0b('0x29')](function(_0x40f0fe){if(_0x40f0fe===_0x32e498){_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x32e498+_0xca0b('0x5a'),[][_0xca0b('0x5b')](_0x174e81[_0x40f0fe]));}else if(_0x40f0fe===_0xca0b('0x5c')){var _0x1be210=JSON[_0xca0b('0x5d')](_0x174e81[_0x40f0fe])[_0xca0b('0x5e')];var _0x35a678=JSON[_0xca0b('0x5d')](_0x174e81[_0x40f0fe])[_0xca0b('0x5f')];_0x4e81ec[_0xca0b('0x4a')](_0xca0b('0x60'),_0x1be210,_0x35a678);}else{if(_0x174e81[_0x40f0fe]===_0xca0b('0x61')){_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x40f0fe+_0xca0b('0x62'));}else{_0x4e81ec[_0xca0b('0x4a')]('i.'+_0x40f0fe+'\x20=\x20?',_0x174e81[_0x40f0fe]);}}});}return _0x4e81ec;}function parseQueryParameters(_0x27fdbd,_0xbef02e,_0x597cc4){var _0x6b80aa=getSqlClauses();return Promise[_0xca0b('0x63')]()[_0xca0b('0x64')](function(){return parseModelFields(_0x27fdbd,_0xbef02e,_0x597cc4);})[_0xca0b('0x64')](function(_0x36763b){_0x6b80aa[_0xca0b('0x65')][_0xca0b('0x4a')](_0x36763b);return parseReadParameter(_0xbef02e[_0xca0b('0x49')]);})['then'](function(_0x197f17){_0x6b80aa[_0xca0b('0x49')][_0xca0b('0x4a')](_0x197f17);return parseTagParameter(_0xbef02e[_0xca0b('0x66')]);})['then'](function(_0x4e2e13){_0x6b80aa[_0xca0b('0x52')][_0xca0b('0x53')]['and'](_0x4e2e13);return parseSearchFilter(_0x27fdbd,_0xbef02e[_0xca0b('0x67')]);})['then'](function(_0x578bef){_0x6b80aa[_0xca0b('0x67')]=_0x578bef;return _0x6b80aa;});}function checkAccountsRestrictions(_0x3716e8,_0x30e70f,_0x47b3fc){var _0x571d30=utils[_0xca0b('0x6')](_0x3716e8);var _0x5aee92='get'+_[_0xca0b('0x68')](_0x3716e8)+(_0x3716e8==='chat'?_0xca0b('0x69'):_0xca0b('0x6a'));var _0x1426bc=squel['expr']();return Promise[_0xca0b('0x63')]()['then'](function(){if(_0x47b3fc[_0xca0b('0x9')]&&_0x30e70f[_0xca0b('0x7')]===_0xca0b('0x8')){return _0x30e70f[_0x5aee92]({'attributes':['id'],'raw':!![]});}})[_0xca0b('0x64')](function(_0x5cf29b){if(_0x5cf29b){if(_0x5cf29b[_0xca0b('0x19')]===0x0){_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x62'));}else{_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x5a'),_[_0xca0b('0x1b')](_0x5cf29b,'id'));}}else if(!_0x47b3fc[_0x571d30]){_0x1426bc[_0xca0b('0x4a')]('i.'+_0x571d30+_0xca0b('0x6b'));}})[_0xca0b('0x64')](function(){return _0x1426bc;});}function getClosedOrderClause(_0x52ad21,_0x5a7608){var _0x122764='';var _0xdcb0a0=[_0xca0b('0x6c'),_0xca0b('0x6d'),_0xca0b('0x6e')];if(_0x52ad21===_0xca0b('0x37')){_0xdcb0a0['unshift'](_0xca0b('0x6f'));}if(_0x5a7608[_0xca0b('0x70')]==='0'&&_0x52ad21===_0xca0b('0x37')){_0x122764='i.substatus';}else{if(_0x5a7608[_0xca0b('0x70')]==='1'){_0xdcb0a0[_0xca0b('0x71')]();}_0x122764=_0xca0b('0x72')+_0xdcb0a0[_0xca0b('0x73')](',\x20')+')';}return _0x122764;}function getFilteredInteractions(_0x7e1c9f,_0x395c99,_0x39c71e,_0x1f123b){var _0x4bf574=utils['getInteractionFK'](_0x7e1c9f);var _0x5cc68e=_['capitalize'](_0x7e1c9f)+'Interaction';var _0x412d78=[];var _0x294e6c=getTagsQuery();var _0x1d07a2={'type':db[_0xca0b('0x74')][_0xca0b('0x75')][_0xca0b('0x76')],'raw':!![]};var _0x28a14b=[];var _0x67c743=[];return db[_0xca0b('0x77')][_0xca0b('0x78')](_0x294e6c['toString'](),_0x1d07a2)[_0xca0b('0x64')](function(_0x5f31c6){_0x412d78=_[_0xca0b('0x79')](_0x5f31c6,'id');_0x1d07a2=_['merge'](_0x1d07a2,{'model':db[_0x5cc68e],'mapToModel':!![],'nest':!![]});if(_0x39c71e[_0xca0b('0x65')]){_0x1f123b[_0xca0b('0x7a')]['forEach'](function(_0x57bdb3){_0x395c99[_0xca0b('0xb')]('i.'+_0x57bdb3);});}else{_0x395c99[_0xca0b('0xb')](_0xca0b('0x7b'),'unreadMessages');_0x395c99[_0xca0b('0xb')](_0xca0b('0x7c'),_0xca0b('0x7d'));_0x395c99[_0xca0b('0xb')]('a.mandatoryDisposition',_0xca0b('0x7e'));if(_0x7e1c9f==='mail'){_0x395c99[_0xca0b('0xb')]('a.email',_0xca0b('0x7f'));_0x395c99[_0xca0b('0xb')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xca0b('0x80'));_0x395c99[_0xca0b('0xb')]('i.id');_0x395c99[_0xca0b('0xb')](_0xca0b('0x81'));_0x395c99[_0xca0b('0xb')]('i.updatedAt');_0x395c99[_0xca0b('0xb')](_0xca0b('0x82'));_0x395c99[_0xca0b('0xb')]('i.closedAt');_0x395c99[_0xca0b('0xb')](_0xca0b('0x83'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x84'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x85'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x86'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6e'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6d'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x6c'));_0x395c99[_0xca0b('0xb')]('i.substatus');_0x395c99[_0xca0b('0xb')](_0xca0b('0x87'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x88'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x89'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x8a'));}else if(_0x7e1c9f==='openchannel'){_0x395c99[_0xca0b('0xb')](_0xca0b('0x8b'),_0xca0b('0x80'));}else{_0x395c99[_0xca0b('0xb')](_0xca0b('0x8c'),_0xca0b('0x80'));}if(_0x7e1c9f!=='mail'){_0x395c99[_0xca0b('0xb')](_0xca0b('0x8d'));}_0x395c99[_0xca0b('0xb')](_0xca0b('0x8e'),_0xca0b('0x8f'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x90'),_0xca0b('0x91'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x92'),_0xca0b('0x93'));_0x395c99[_0xca0b('0xb')]('c.phone',_0xca0b('0x94'));_0x395c99['field'](_0xca0b('0x95'),_0xca0b('0x96'));_0x395c99['field'](_0xca0b('0x97'),_0xca0b('0x98'));_0x395c99['field']('o.fullname',_0xca0b('0x99'));_0x395c99[_0xca0b('0xb')](_0xca0b('0x9a'),'Owner.internal');_0x395c99[_0xca0b('0xb')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xca0b('0x9b'));}if(_0x1f123b['limit']){_0x395c99[_0xca0b('0x9c')](_0x1f123b[_0xca0b('0x9c')]);}if(_0x1f123b[_0xca0b('0x9d')]){_0x395c99['offset'](_0x1f123b['offset']);}return db['sequelize'][_0xca0b('0x78')](_0x395c99[_0xca0b('0x9e')](),_0x1d07a2);})[_0xca0b('0x64')](function(_0x3cd7d6){_0x28a14b=_0x3cd7d6;var _0x23d2b1=getUsersQuery(_0x7e1c9f,_0x28a14b);return db[_0xca0b('0x77')][_0xca0b('0x78')](_0x23d2b1['toString'](),_0x1d07a2);})['then'](function(_0x283628){_0x67c743=_[_0xca0b('0x9f')](_0x283628,_0x4bf574);if(_0x7e1c9f===_0xca0b('0x37')){return db[_0xca0b('0xa0')][_0xca0b('0xa1')]({'attributes':[_0xca0b('0xa2')],'raw':!![]});}})[_0xca0b('0x64')](function(_0x2d857f){var _0x9b78b=_0x2d857f?_0x2d857f[_0xca0b('0xa2')]:undefined;var _0x4b9764=_0x28a14b['map'](function(_0x5a453b){return updateInteraction(_0x5a453b,_0x412d78,_0x67c743,_0x9b78b);});return Promise[_0xca0b('0xa3')](_0x4b9764);});}function countFilteredInteractions(_0x2cee7e,_0x144cc1){var _0x50e10a=_0x2cee7e['clone']();_0x50e10a[_0xca0b('0xb')](_0xca0b('0xa4'));_0x50e10a[_0xca0b('0xb')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xca0b('0x48'));var _0x3ff232=utils['getSelectedTags'](_0x144cc1);if(!_[_0xca0b('0xa5')](_0x3ff232)){_0x50e10a[_0xca0b('0x1a')](_0xca0b('0xa6'),_0x3ff232);}var _0x26e684={'type':db['Sequelize'][_0xca0b('0x75')][_0xca0b('0x76')],'raw':!![]};return db[_0xca0b('0x77')]['query'](_0x50e10a[_0xca0b('0x9e')](),_0x26e684);}module[_0xca0b('0xa7')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x9567=['query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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.updatedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','i.ContactId','i.UserId','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','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','TagIds','limit','offset','groupBy','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','isEmpty','Sequelize','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','../../mysqldb','role','agent','select','field','name','color','from','user_has_','_interactions','u.id','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','getAccountFK','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','me.','interactionsTags','it.','\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','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)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','type','text','value','start','end','unreadMessages','and','operator','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','clause','tags','ids','User','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','plainBody','keys','some','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','resolve','then','fields','read','tag','filter','capitalize','Websites','Accounts','search','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','join','getInteractionFK','Interaction','QueryTypes','SELECT','sequelize'];(function(_0x33b08,_0x1bf73d){var _0x214fce=function(_0x478cbd){while(--_0x478cbd){_0x33b08['push'](_0x33b08['shift']());}};_0x214fce(++_0x1bf73d);}(_0x9567,0xdc));var _0x7956=function(_0x26c977,_0x17e349){_0x26c977=_0x26c977-0x0;var _0x3033bc=_0x9567[_0x26c977];return _0x3033bc;};'use strict';var _=require(_0x7956('0x0'));var squel=require(_0x7956('0x1'));var as=require(_0x7956('0x2'));var qs=require(_0x7956('0x3'));var updateInteraction=require(_0x7956('0x4'))['updateInteraction'];var utils=require('./utils');var db=require(_0x7956('0x5'))['db'];function skipInteractionsQuery(_0x27b00b,_0x5cd0f8,_0x4524a7){var _0x518f0a=![];var _0x12c09e=utils['getAccountFK'](_0x27b00b);if(_0x5cd0f8[_0x7956('0x6')]===_0x7956('0x7')&&!_0x4524a7['search']&&!_0x4524a7[_0x12c09e]){_0x518f0a=!![];}return _0x518f0a;}function getTagsQuery(){return squel[_0x7956('0x8')]()['field']('id')[_0x7956('0x9')](_0x7956('0xa'))['field'](_0x7956('0xb'))[_0x7956('0xc')]('tools_tags');}function getUsersQuery(_0x1fd87b,_0x22adb3){var _0x299e61=utils['getInteractionFK'](_0x1fd87b);var _0x1c03ed=_0x7956('0xd')+_0x1fd87b+_0x7956('0xe');var _0x3fd658=squel['select']()[_0x7956('0x9')](_0x7956('0xf'))[_0x7956('0x9')]('u.fullname')[_0x7956('0x9')](_0x7956('0x10')+_0x299e61)[_0x7956('0xc')](_0x1c03ed,'ui')[_0x7956('0x11')](_0x7956('0x12'),'u',_0x7956('0x13'));if(_0x22adb3[_0x7956('0x14')]>0x0){_0x3fd658[_0x7956('0x15')](_0x7956('0x10')+_0x299e61+_0x7956('0x16'),_[_0x7956('0x17')](_0x22adb3,'id'));}return _0x3fd658;}function getInteractionsQuery(_0x2820cd){var _0x18ae51=utils[_0x7956('0x18')](_0x2820cd);var _0x1e8040=utils[_0x7956('0x19')](_0x2820cd);var _0x5e6b90=utils['getInteractionFK'](_0x2820cd);return squel[_0x7956('0x8')]()[_0x7956('0xc')](_0x18ae51['interactions'],'i')[_0x7956('0x11')]('cm_contacts','c',_0x7956('0x1a'))[_0x7956('0x11')]('users','o',_0x7956('0x1b'))[_0x7956('0x11')](_0x18ae51[_0x7956('0x1c')],'a','a.id\x20=\x20i.'+_0x1e8040)[_0x7956('0x11')](_0x18ae51['messages'],'me',_0x7956('0x1d')+_0x5e6b90+'\x20=\x20i.id')[_0x7956('0x11')](_0x18ae51[_0x7956('0x1e')],'it',_0x7956('0x1f')+_0x5e6b90+_0x7956('0x20'))['left_join'](_0x7956('0x21'),'t',_0x7956('0x22'));}function getSqlClauses(){var _0x432a2d={'body':squel['expr'](),'contact':squel['expr'](),'default':squel[_0x7956('0x23')](),'fields':squel[_0x7956('0x23')](),'filter':squel[_0x7956('0x23')](),'read':squel[_0x7956('0x23')](),'tags':{'clause':squel[_0x7956('0x23')](),'ids':null},'user':squel['expr']()};return _0x432a2d;}function parseTagParameter(_0x34c17f){var _0x11eb8b=squel[_0x7956('0x23')]();if(_0x34c17f){var _0xf098fb=utils[_0x7956('0x24')](_0x34c17f);_0xf098fb[_0x7956('0x25')](function(_0x4821d7){_0x11eb8b['or'](_0x7956('0x26'),'%,'+_0x4821d7+',%');});}return _0x11eb8b;}function parseReadParameter(_0x33401e){var _0x377261='';if(_0x33401e){_0x377261=_0x7956('0x27');if(_0x33401e==='1'){_0x377261=_0x377261[_0x7956('0x28')](_0x7956('0x29'),'=');}else{_0x377261=_0x377261[_0x7956('0x28')](_0x7956('0x29'),'>');}}return _0x377261;}function parseSearchFilter(_0x2f248d,_0x401770){var _0xe39c6e=squel[_0x7956('0x23')]();if(_0x401770){var _0x21fb1b=_0x401770[_0x7956('0x28')]('\x5c','\x5c\x5c')[_0x7956('0x28')](/'/g,'\x27\x27');if(qs[_0x7956('0x2a')](_0x21fb1b)){_0xe39c6e['or'](_0x7956('0x2b'),_0x21fb1b+'%');if([_0x7956('0x2c'),_0x7956('0x2d')][_0x7956('0x2e')](_0x2f248d)){_0xe39c6e['or']('i.phone\x20LIKE\x20?',_0x21fb1b+'%');}else if(_0x2f248d===_0x7956('0x2f')){_0xe39c6e['or'](_0x7956('0x30'),_0x21fb1b+'%');}else if(_0x2f248d===_0x7956('0x31')){_0xe39c6e['or'](_0x7956('0x32'),_0x21fb1b+'%');}}else if(_0x2f248d===_0x7956('0x33')&&qs[_0x7956('0x34')](_0x21fb1b)){_0xe39c6e['or']('c.email\x20LIKE\x20?',_0x21fb1b+'%');}else{if(_0x2f248d===_0x7956('0x33')){_0xe39c6e['or'](_0x7956('0x35'),qs['getFullTextValue'](_0x21fb1b))['or'](_0x7956('0x36'),qs[_0x7956('0x37')](_0x21fb1b));}else{if(_0x2f248d!==_0x7956('0x2f')){_0xe39c6e['or'](_0x7956('0x38'),qs[_0x7956('0x37')](_0x21fb1b));}_0xe39c6e['or'](_0x7956('0x39'),_0x21fb1b+'%');}}}return _0xe39c6e;}function parseAdvancedSearchFilter(_0x22c3fe,_0x2a61c5){var _0x5fb356=getSqlClauses();var _0x25024d=as[_0x7956('0x3a')](_0x22c3fe);var _0xa8139e=_0x25024d[_0x7956('0x3b')];for(var _0x322108=0x0;_0x322108<_0x25024d[_0x7956('0x3c')][_0x7956('0x14')];_0x322108++){var _0x5647fa=_0x25024d[_0x7956('0x3c')][_0x322108];var _0x27f9ae='i';var _0x57b5d1=_[_0x7956('0x3d')](_0x2a61c5,['name',_0x5647fa[_0x7956('0x9')]]);if(_0x57b5d1){var _0x4d7dcd=as['buildExpression'](_0x27f9ae,_0x57b5d1[_0x7956('0x3e')],_0x5647fa);_0x5fb356['default'][_0xa8139e](_0x4d7dcd[_0x7956('0x3f')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x41')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x42')]);}else{switch(_0x5647fa[_0x7956('0x9')]){case _0x7956('0x43'):var _0x23b3cf=parseReadParameter(_0x5647fa[_0x7956('0x40')]);_0x5fb356['read'][_0x7956('0x44')](_0x23b3cf);break;case'Contact':if(_0x5647fa[_0x7956('0x45')]===_0x7956('0x46')){if(_0x5647fa[_0x7956('0x40')][_0x7956('0x47')]('\x20')['length']>0x1){_0x5fb356[_0x7956('0x48')][_0xa8139e](_0x7956('0x49'),qs['getFullTextValue'](_0x5647fa['value']),null);}else{var _0x2960ba='%'+_0x5647fa['value']+'%';_0x5fb356[_0x7956('0x48')][_0xa8139e](_0x7956('0x4a'),_0x2960ba,_0x2960ba,_0x2960ba);}}else{_0x57b5d1=_[_0x7956('0x3d')](_0x2a61c5,['name',_0x7956('0x4b')]);_0x5647fa[_0x7956('0x9')]='ContactId';_0x4d7dcd=as[_0x7956('0x4c')](_0x27f9ae,_0x57b5d1['type'],_0x5647fa);_0x5fb356[_0x7956('0x48')][_0xa8139e](_0x4d7dcd[_0x7956('0x3f')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x41')],_0x4d7dcd[_0x7956('0x40')]['end']);}break;case'Tag':var _0x31619c=_0x5647fa[_0x7956('0x40')][_0x7956('0x47')](',')[_0x7956('0x17')](function(_0x23472d){return Number(_0x23472d);});var _0x1a82c7=parseTagParameter(_0x31619c);_0x5fb356['tags'][_0x7956('0x4d')][_0x7956('0x44')](_0x1a82c7);_0x5fb356[_0x7956('0x4e')][_0x7956('0x4f')]=_0x31619c;break;case _0x7956('0x50'):if(_0x5647fa[_0x7956('0x45')]===_0x7956('0x46')){_0x5fb356[_0x7956('0x51')][_0xa8139e](_0x7956('0x52'),'%'+_0x5647fa[_0x7956('0x40')]+'%',null);}else{_0x57b5d1=_[_0x7956('0x3d')](_0x2a61c5,[_0x7956('0xa'),_0x7956('0x53')]);_0x5647fa[_0x7956('0x9')]=_0x7956('0x53');_0x4d7dcd=as['buildExpression'](_0x27f9ae,_0x57b5d1[_0x7956('0x3e')],_0x5647fa);_0x5fb356['user'][_0xa8139e](_0x4d7dcd['text'],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x41')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x42')]);}break;case _0x7956('0x54'):case _0x7956('0x55'):_0x4d7dcd=as[_0x7956('0x4c')]('me',null,_0x5647fa);_0x5fb356[_0x7956('0x54')][_0xa8139e](_0x4d7dcd[_0x7956('0x3f')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x41')],_0x4d7dcd[_0x7956('0x40')][_0x7956('0x42')]);break;}}}return _0x5fb356;}function parseModelFields(_0x2ba635,_0x3158aa,_0x246cbf){var _0x1c2ecb=utils[_0x7956('0x19')](_0x2ba635);var _0x17b76a=squel[_0x7956('0x23')]();var _0x3b0c2e=_(_0x3158aa)[_0x7956('0x56')]()['map'](function(_0x360d71){return _[_0x7956('0x57')](_0x246cbf,[_0x7956('0xa'),_0x360d71])?_0x360d71:undefined;})['compact']()[_0x7956('0x40')]();if(_0x3b0c2e['length']>0x0){_0x3b0c2e[_0x7956('0x25')](function(_0x123e99){if(_0x123e99===_0x1c2ecb){_0x17b76a['and']('i.'+_0x1c2ecb+_0x7956('0x16'),[][_0x7956('0x58')](_0x3158aa[_0x123e99]));}else if(_0x123e99==='createdAt'){var _0x41eb5f=JSON[_0x7956('0x59')](_0x3158aa[_0x123e99])['$gte'];var _0x1b268f=JSON[_0x7956('0x59')](_0x3158aa[_0x123e99])[_0x7956('0x5a')];_0x17b76a[_0x7956('0x44')](_0x7956('0x5b'),_0x41eb5f,_0x1b268f);}else{if(_0x3158aa[_0x123e99]===_0x7956('0x5c')){_0x17b76a[_0x7956('0x44')]('i.'+_0x123e99+'\x20IS\x20NULL');}else{_0x17b76a[_0x7956('0x44')]('i.'+_0x123e99+_0x7956('0x5d'),_0x3158aa[_0x123e99]);}}});}return _0x17b76a;}function parseQueryParameters(_0x1b69d1,_0x43e920,_0x59afda){var _0x19789c=getSqlClauses();return Promise[_0x7956('0x5e')]()[_0x7956('0x5f')](function(){return parseModelFields(_0x1b69d1,_0x43e920,_0x59afda);})[_0x7956('0x5f')](function(_0x1e7361){_0x19789c[_0x7956('0x60')][_0x7956('0x44')](_0x1e7361);return parseReadParameter(_0x43e920[_0x7956('0x61')]);})[_0x7956('0x5f')](function(_0x20efca){_0x19789c[_0x7956('0x61')][_0x7956('0x44')](_0x20efca);return parseTagParameter(_0x43e920[_0x7956('0x62')]);})[_0x7956('0x5f')](function(_0x513803){_0x19789c[_0x7956('0x4e')][_0x7956('0x4d')][_0x7956('0x44')](_0x513803);return parseSearchFilter(_0x1b69d1,_0x43e920[_0x7956('0x63')]);})['then'](function(_0x196013){_0x19789c[_0x7956('0x63')]=_0x196013;return _0x19789c;});}function checkAccountsRestrictions(_0x2122d3,_0x196fdf,_0x10b953){var _0x373dfa=utils[_0x7956('0x19')](_0x2122d3);var _0x578a12='get'+_[_0x7956('0x64')](_0x2122d3)+(_0x2122d3==='chat'?_0x7956('0x65'):_0x7956('0x66'));var _0x27619d=squel[_0x7956('0x23')]();return Promise[_0x7956('0x5e')]()[_0x7956('0x5f')](function(){if(_0x10b953[_0x7956('0x67')]&&_0x196fdf[_0x7956('0x6')]===_0x7956('0x7')){return _0x196fdf[_0x578a12]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x29cc1f){if(_0x29cc1f){if(_0x29cc1f[_0x7956('0x14')]===0x0){_0x27619d[_0x7956('0x44')]('i.'+_0x373dfa+'\x20IS\x20NULL');}else{_0x27619d[_0x7956('0x44')]('i.'+_0x373dfa+_0x7956('0x16'),_['map'](_0x29cc1f,'id'));}}else if(!_0x10b953[_0x373dfa]){_0x27619d[_0x7956('0x44')]('i.'+_0x373dfa+'\x20IS\x20NOT\x20NULL');}})[_0x7956('0x5f')](function(){return _0x27619d;});}function getClosedOrderClause(_0x3ab72c,_0x2892af){var _0x1c440d='';var _0x4f6042=[_0x7956('0x68'),_0x7956('0x69'),_0x7956('0x6a')];if(_0x3ab72c==='mail'){_0x4f6042[_0x7956('0x6b')](_0x7956('0x6c'));}if(_0x2892af[_0x7956('0x6d')]==='0'&&_0x3ab72c===_0x7956('0x33')){_0x1c440d=_0x7956('0x6c');}else{if(_0x2892af[_0x7956('0x6d')]==='1'){_0x4f6042['shift']();}_0x1c440d='CONCAT_WS(\x27\x27,\x20'+_0x4f6042[_0x7956('0x6e')](',\x20')+')';}return _0x1c440d;}function getFilteredInteractions(_0x4f4c77,_0xd15b23,_0x5f555d,_0x28a06a){var _0x2d9f8d=utils[_0x7956('0x6f')](_0x4f4c77);var _0x50fecd=_['capitalize'](_0x4f4c77)+_0x7956('0x70');var _0x40cbad=[];var _0x2f5c7a=getTagsQuery();var _0x3741e1={'type':db['Sequelize'][_0x7956('0x71')][_0x7956('0x72')],'raw':!![]};var _0x16beac=[];var _0x1d52cb=[];return db[_0x7956('0x73')][_0x7956('0x74')](_0x2f5c7a[_0x7956('0x75')](),_0x3741e1)['then'](function(_0x42e6b8){_0x40cbad=_[_0x7956('0x76')](_0x42e6b8,'id');_0x3741e1=_[_0x7956('0x77')](_0x3741e1,{'model':db[_0x50fecd],'mapToModel':!![],'nest':!![]});if(_0x5f555d[_0x7956('0x60')]){_0x28a06a[_0x7956('0x78')][_0x7956('0x25')](function(_0x5a4d32){_0xd15b23[_0x7956('0x9')]('i.'+_0x5a4d32);});}else{_0xd15b23[_0x7956('0x9')](_0x7956('0x79'),_0x7956('0x43'));_0xd15b23[_0x7956('0x9')](_0x7956('0x7a'),_0x7956('0x7b'));_0xd15b23[_0x7956('0x9')](_0x7956('0x7c'),_0x7956('0x7d'));if(_0x4f4c77===_0x7956('0x33')){_0xd15b23[_0x7956('0x9')]('a.email',_0x7956('0x7e'));_0xd15b23[_0x7956('0x9')](_0x7956('0x7f'),_0x7956('0x80'));_0xd15b23[_0x7956('0x9')]('i.id');_0xd15b23['field']('i.createdAt');_0xd15b23[_0x7956('0x9')](_0x7956('0x81'));_0xd15b23['field']('i.closed');_0xd15b23[_0x7956('0x9')]('i.closedAt');_0xd15b23['field'](_0x7956('0x82'));_0xd15b23['field'](_0x7956('0x83'));_0xd15b23[_0x7956('0x9')](_0x7956('0x84'));_0xd15b23['field'](_0x7956('0x85'));_0xd15b23['field']('i.disposition');_0xd15b23[_0x7956('0x9')](_0x7956('0x69'));_0xd15b23[_0x7956('0x9')]('i.thirdDisposition');_0xd15b23[_0x7956('0x9')](_0x7956('0x6c'));_0xd15b23[_0x7956('0x9')](_0x7956('0x86'));_0xd15b23['field'](_0x7956('0x87'));_0xd15b23[_0x7956('0x9')]('i.MailAccountId');_0xd15b23['field'](_0x7956('0x88'));}else if(_0x4f4c77===_0x7956('0x31')){_0xd15b23[_0x7956('0x9')](_0x7956('0x89'),_0x7956('0x80'));}else{_0xd15b23[_0x7956('0x9')](_0x7956('0x8a'),_0x7956('0x80'));}if(_0x4f4c77!==_0x7956('0x33')){_0xd15b23['field'](_0x7956('0x8b'));}_0xd15b23['field'](_0x7956('0x8c'),_0x7956('0x8d'));_0xd15b23['field'](_0x7956('0x8e'),_0x7956('0x8f'));_0xd15b23[_0x7956('0x9')](_0x7956('0x90'),_0x7956('0x91'));_0xd15b23[_0x7956('0x9')](_0x7956('0x92'),_0x7956('0x93'));_0xd15b23['field'](_0x7956('0x94'),_0x7956('0x95'));_0xd15b23['field'](_0x7956('0x96'),_0x7956('0x97'));_0xd15b23['field'](_0x7956('0x98'),'Owner.fullname');_0xd15b23[_0x7956('0x9')](_0x7956('0x99'),_0x7956('0x9a'));_0xd15b23['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x7956('0x9b'));}if(_0x28a06a['limit']){_0xd15b23['limit'](_0x28a06a[_0x7956('0x9c')]);}if(_0x28a06a['offset']){_0xd15b23[_0x7956('0x9d')](_0x28a06a['offset']);}return db[_0x7956('0x73')][_0x7956('0x74')](_0xd15b23['toString'](),_0x3741e1);})[_0x7956('0x5f')](function(_0xf38d8c){_0x16beac=_0xf38d8c;var _0x5975f9=getUsersQuery(_0x4f4c77,_0x16beac);return db['sequelize']['query'](_0x5975f9[_0x7956('0x75')](),_0x3741e1);})['then'](function(_0x504a83){_0x1d52cb=_[_0x7956('0x9e')](_0x504a83,_0x2d9f8d);if(_0x4f4c77===_0x7956('0x33')){return db[_0x7956('0x9f')][_0x7956('0xa0')]({'attributes':[_0x7956('0xa1')],'raw':!![]});}})['then'](function(_0x418015){var _0x22d619=_0x418015?_0x418015[_0x7956('0xa1')]:undefined;var _0x30fb3e=_0x16beac[_0x7956('0x17')](function(_0x1a9a0c){return updateInteraction(_0x1a9a0c,_0x40cbad,_0x1d52cb,_0x22d619);});return Promise[_0x7956('0xa2')](_0x30fb3e);});}function countFilteredInteractions(_0x45dc2a,_0x36e9a6){var _0x5358c1=_0x45dc2a[_0x7956('0xa3')]();_0x5358c1[_0x7956('0x9')](_0x7956('0xa4'));_0x5358c1[_0x7956('0x9')](_0x7956('0x79'),'unreadMessages');var _0x2553c6=utils[_0x7956('0x24')](_0x36e9a6);if(!_[_0x7956('0xa5')](_0x2553c6)){_0x5358c1[_0x7956('0x15')]('t.id\x20IN\x20?',_0x2553c6);}var _0x55aae1={'type':db[_0x7956('0xa6')][_0x7956('0x71')][_0x7956('0x72')],'raw':!![]};return db['sequelize']['query'](_0x5358c1[_0x7956('0x75')](),_0x55aae1);}module[_0x7956('0xa7')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index 6ff9793..2715c4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a95=['talking','MailMessage','findOne','out','plainBody','-id','then','catch','Users','TagIds','Tags','../../mysqldb','map','fullname','forEach','push','waiting','answered','unmanaged','abandoned','total','closed','disposition'];(function(_0x212249,_0xefef34){var _0x5e091e=function(_0x326e81){while(--_0x326e81){_0x212249['push'](_0x212249['shift']());}};_0x5e091e(++_0xefef34);}(_0x1a95,0x14d));var _0x51a9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1a95[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var db=require(_0x51a9('0x0'))['db'];function getInteractionUsers(_0x5259e0,_0x3651c1){return new Promise(function(_0x4e392c,_0x41f901){try{var _0x2894e2=[];if(_0x3651c1[_0x5259e0]){_0x2894e2=_0x3651c1[_0x5259e0][_0x51a9('0x1')](function(_0xb048c3){return{'id':_0xb048c3['id'],'fullname':_0xb048c3[_0x51a9('0x2')]};});}return _0x4e392c(_0x2894e2);}catch(_0x406add){_0x41f901(_0x406add);}});}function getInteractionTags(_0x3d7fd4,_0x25c5b2){var _0x21fb05=[];if(_0x3d7fd4){_0x3d7fd4['split'](',')[_0x51a9('0x3')](function(_0x55288e){_0x21fb05[_0x51a9('0x4')](_0x25c5b2[_0x55288e]);});}return _0x21fb05;}function updateWaitingCounter(_0x356ef4){if(_0x356ef4[_0x51a9('0x5')]){_0x356ef4['waiting']-=0x1;}}function updateInteractionCounters(_0x5652c5){_0x5652c5[_0x51a9('0x5')]=0x0;_0x5652c5['talking']=0x0;_0x5652c5[_0x51a9('0x6')]=0x0;_0x5652c5[_0x51a9('0x7')]=0x0;_0x5652c5[_0x51a9('0x8')]=0x0;_0x5652c5[_0x51a9('0x9')]=0x0;if(_0x5652c5[_0x51a9('0xa')]){if(_0x5652c5[_0x51a9('0xb')]===_0x51a9('0x8')){_0x5652c5[_0x51a9('0x8')]+=0x1;updateWaitingCounter(_0x5652c5);}if(_0x5652c5['UserId']){_0x5652c5[_0x51a9('0x6')]+=0x1;if(_0x5652c5[_0x51a9('0xc')]){_0x5652c5[_0x51a9('0xc')]-=0x1;}}else{if(_0x5652c5[_0x51a9('0xb')]){_0x5652c5[_0x51a9('0x7')]+=0x1;updateWaitingCounter(_0x5652c5);}}}else{if(!_0x5652c5['UserId']){_0x5652c5[_0x51a9('0x5')]+=0x1;}if(_0x5652c5['UserId']){_0x5652c5[_0x51a9('0xc')]+=0x1;updateWaitingCounter(_0x5652c5);}}_0x5652c5['total']+=0x1;return _0x5652c5;}function getLastMessageText(_0x59b514){return db[_0x51a9('0xd')][_0x51a9('0xe')]({'where':{'$and':[{'MailInteractionId':_0x59b514['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x51a9('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x51a9('0x10')],'order':_0x51a9('0x11'),'raw':!![]})[_0x51a9('0x12')](function(_0x2aa3ff){if(_0x2aa3ff&&_0x2aa3ff[_0x51a9('0x10')]){_0x59b514['lastMsgText']=_['trimStart'](_0x2aa3ff['plainBody']);}return _0x59b514;})[_0x51a9('0x13')](function(_0x33a1ad){throw _0x33a1ad;});}exports['updateInteraction']=function(_0x221401,_0x1a7ceb,_0x33d057,_0xc60387){return new Promise(function(_0x5035b0,_0x346687){return getInteractionUsers(_0x221401['id'],_0x33d057)[_0x51a9('0x12')](function(_0x35c006){_0x221401[_0x51a9('0x14')]=_0x35c006;return getInteractionTags(_0x221401[_0x51a9('0x15')],_0x1a7ceb);})['then'](function(_0x3b3b7c){_0x221401[_0x51a9('0x16')]=_0x3b3b7c;delete _0x221401[_0x51a9('0x15')];return updateInteractionCounters(_0x221401);})['then'](function(_0xc43de){if(_0xc60387){return getLastMessageText(_0xc43de);}else{return _0xc43de;}})['then'](function(_0x591374){_0x5035b0(_0x591374);})[_0x51a9('0x13')](function(_0x5e2a82){_0x346687(_0x5e2a82);});});};
\ No newline at end of file
+var _0x8068=['lodash','../../mysqldb','map','fullname','split','forEach','push','waiting','talking','abandoned','total','UserId','answered','disposition','MailMessage','findOne','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags'];(function(_0x56ba92,_0xb3c986){var _0x8fe94d=function(_0x23b21c){while(--_0x23b21c){_0x56ba92['push'](_0x56ba92['shift']());}};_0x8fe94d(++_0xb3c986);}(_0x8068,0xb6));var _0x8806=function(_0x1c8697,_0x47bb41){_0x1c8697=_0x1c8697-0x0;var _0x289968=_0x8068[_0x1c8697];return _0x289968;};'use strict';var _=require(_0x8806('0x0'));var db=require(_0x8806('0x1'))['db'];function getInteractionUsers(_0x30b7a8,_0x55058c){return new Promise(function(_0x499a81,_0x1123d4){try{var _0x3a92a6=[];if(_0x55058c[_0x30b7a8]){_0x3a92a6=_0x55058c[_0x30b7a8][_0x8806('0x2')](function(_0x40b99a){return{'id':_0x40b99a['id'],'fullname':_0x40b99a[_0x8806('0x3')]};});}return _0x499a81(_0x3a92a6);}catch(_0x315a7b){_0x1123d4(_0x315a7b);}});}function getInteractionTags(_0x51e49e,_0x551040){var _0x4c7b77=[];if(_0x51e49e){_0x51e49e[_0x8806('0x4')](',')[_0x8806('0x5')](function(_0x3d69d6){_0x4c7b77[_0x8806('0x6')](_0x551040[_0x3d69d6]);});}return _0x4c7b77;}function updateWaitingCounter(_0x106b54){if(_0x106b54['waiting']){_0x106b54['waiting']-=0x1;}}function updateInteractionCounters(_0x41221e){_0x41221e[_0x8806('0x7')]=0x0;_0x41221e[_0x8806('0x8')]=0x0;_0x41221e['answered']=0x0;_0x41221e['unmanaged']=0x0;_0x41221e[_0x8806('0x9')]=0x0;_0x41221e[_0x8806('0xa')]=0x0;if(_0x41221e['closed']){if(_0x41221e['disposition']==='abandoned'){_0x41221e[_0x8806('0x9')]+=0x1;updateWaitingCounter(_0x41221e);}if(_0x41221e[_0x8806('0xb')]){_0x41221e[_0x8806('0xc')]+=0x1;if(_0x41221e[_0x8806('0x8')]){_0x41221e[_0x8806('0x8')]-=0x1;}}else{if(_0x41221e[_0x8806('0xd')]){_0x41221e['unmanaged']+=0x1;updateWaitingCounter(_0x41221e);}}}else{if(!_0x41221e[_0x8806('0xb')]){_0x41221e['waiting']+=0x1;}if(_0x41221e[_0x8806('0xb')]){_0x41221e[_0x8806('0x8')]+=0x1;updateWaitingCounter(_0x41221e);}}_0x41221e[_0x8806('0xa')]+=0x1;return _0x41221e;}function getLastMessageText(_0x361999){return db[_0x8806('0xe')][_0x8806('0xf')]({'where':{'$and':[{'MailInteractionId':_0x361999['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x8806('0x10')],'order':_0x8806('0x11'),'raw':!![]})[_0x8806('0x12')](function(_0x2c326b){if(_0x2c326b&&_0x2c326b[_0x8806('0x10')]){_0x361999[_0x8806('0x13')]=_[_0x8806('0x14')](_0x2c326b[_0x8806('0x10')]);}return _0x361999;})[_0x8806('0x15')](function(_0x185aa0){throw _0x185aa0;});}exports[_0x8806('0x16')]=function(_0x413ff9,_0x1cf9f4,_0x2c981a,_0x17f42a){return new Promise(function(_0x504d1e,_0x392201){return getInteractionUsers(_0x413ff9['id'],_0x2c981a)['then'](function(_0x57bcb0){_0x413ff9[_0x8806('0x17')]=_0x57bcb0;return getInteractionTags(_0x413ff9[_0x8806('0x18')],_0x1cf9f4);})[_0x8806('0x12')](function(_0x575dea){_0x413ff9[_0x8806('0x19')]=_0x575dea;delete _0x413ff9[_0x8806('0x18')];return updateInteractionCounters(_0x413ff9);})['then'](function(_0x4ae581){if(_0x17f42a){return getLastMessageText(_0x4ae581);}else{return _0x4ae581;}})[_0x8806('0x12')](function(_0x4d1ce3){_0x504d1e(_0x4d1ce3);})[_0x8806('0x15')](function(_0xac889b){_0x392201(_0xac889b);});});};
\ No newline at end of file
index 37194b5..9d40e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ad=['Interaction','then','update','info','catch','error','exports','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','chat','Website','Account','capitalize','InteractionId','upperFirst','unknown','websites','accounts','_interactions','_messages','user_has_','isArray','toLowerCase','stringify','null'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xf0ad,0x19a));var _0xdf0a=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xf0ad[_0x263a74];return _0x2aa86c;};'use strict';var _=require('lodash');var db=require(_0xdf0a('0x0'))['db'];var loggers={'openchannel':require(_0xdf0a('0x1'))(_0xdf0a('0x2')),'mail':require(_0xdf0a('0x1'))(_0xdf0a('0x3')),'fax':require(_0xdf0a('0x1'))(_0xdf0a('0x4')),'sms':require(_0xdf0a('0x1'))(_0xdf0a('0x5')),'chat':require('../../config/logger')(_0xdf0a('0x6')),'whatsapp':require('../../config/logger')(_0xdf0a('0x7'))};function getAccountFK(_0x8ebdea){return _['capitalize'](_0x8ebdea)+(_0x8ebdea===_0xdf0a('0x8')?_0xdf0a('0x9'):_0xdf0a('0xa'))+'Id';}function getInteractionFK(_0x35e858){return _[_0xdf0a('0xb')](_0x35e858)+_0xdf0a('0xc');}function getInteractionId(_0xb4b0e7,_0x28852f,_0x10913f){if(_0xb4b0e7&&_0xb4b0e7[_[_0xdf0a('0xd')](_0x10913f)+_0xdf0a('0xc')]){return _0xb4b0e7[_[_0xdf0a('0xd')](_0x10913f)+_0xdf0a('0xc')];}else if(_0xb4b0e7&&_0xb4b0e7['id']){return _0xb4b0e7['id'];}else if(_0x28852f&&_0x28852f['id']){return _0x28852f['id'];}else{return _0xdf0a('0xe');}}function getInteractionsTables(_0x51c0cf){return{'accounts':_0x51c0cf+'_'+(_0x51c0cf===_0xdf0a('0x8')?_0xdf0a('0xf'):_0xdf0a('0x10')),'interactions':_0x51c0cf+_0xdf0a('0x11'),'interactionsTags':_0x51c0cf+'_interaction_has_tags','messages':_0x51c0cf+_0xdf0a('0x12'),'userInteractions':_0xdf0a('0x13')+_0x51c0cf+'_interactions'};}function getSelectedTags(_0x2df64a){var _0x26a814=[];if(_0x2df64a){_0x26a814=Array[_0xdf0a('0x14')](_0x2df64a)?_0x2df64a:[_0x2df64a];}return _0x26a814;}function log(_0x2d892c,_0x30f820,_0x279a36,_0x1c23b7,_0xced9c,_0x2a69ca){loggers[_0xced9c[_0xdf0a('0x15')]()][_0x2d892c]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2a69ca['toUpperCase'](),_0x30f820?_0x30f820['id']:null,_0x30f820?_0x30f820['name']:null,_0x30f820?_0x30f820['role']:null,getInteractionId(_0x279a36,_0x1c23b7,_0xced9c),_0x279a36?JSON[_0xdf0a('0x16')](_0x279a36):_0xdf0a('0x17'));}function updateUser(_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8){db[_[_0xdf0a('0xd')](_0x2c8ad4)+_0xdf0a('0x18')]['findOne']({'where':{'id':getInteractionId(_0x159a97,_0x41513f,_0x2c8ad4)}})[_0xdf0a('0x19')](function(_0x3e382e){if(_0x3e382e){return _0x3e382e[_0xdf0a('0x1a')]({'UserId':_0x20c2cc?_0x20c2cc['id']:null});}})[_0xdf0a('0x19')](function(_0x54d03d){if(_0x54d03d){log(_0xdf0a('0x1b'),_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8);}})[_0xdf0a('0x1c')](function(){log(_0xdf0a('0x1d'),_0x20c2cc,_0x159a97,_0x41513f,_0x2c8ad4,_0x17a8f8);});}module[_0xdf0a('0x1e')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x8b12=['_interactions','_messages','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','null','Interaction','findOne','then','update','info','error','exports','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','accounts'];(function(_0xe56178,_0x1094a3){var _0x4b3a7e=function(_0x4893ff){while(--_0x4893ff){_0xe56178['push'](_0xe56178['shift']());}};_0x4b3a7e(++_0x1094a3);}(_0x8b12,0xfe));var _0x28b1=function(_0x399275,_0x1884bc){_0x399275=_0x399275-0x0;var _0x12f111=_0x8b12[_0x399275];return _0x12f111;};'use strict';var _=require(_0x28b1('0x0'));var db=require(_0x28b1('0x1'))['db'];var loggers={'openchannel':require(_0x28b1('0x2'))(_0x28b1('0x3')),'mail':require(_0x28b1('0x2'))(_0x28b1('0x4')),'fax':require('../../config/logger')(_0x28b1('0x5')),'sms':require('../../config/logger')(_0x28b1('0x6')),'chat':require(_0x28b1('0x2'))(_0x28b1('0x7')),'whatsapp':require('../../config/logger')(_0x28b1('0x8'))};function getAccountFK(_0x517bc1){return _[_0x28b1('0x9')](_0x517bc1)+(_0x517bc1===_0x28b1('0xa')?_0x28b1('0xb'):_0x28b1('0xc'))+'Id';}function getInteractionFK(_0x13a437){return _['capitalize'](_0x13a437)+_0x28b1('0xd');}function getInteractionId(_0x25daf9,_0x3ad42a,_0x1d61ae){if(_0x25daf9&&_0x25daf9[_[_0x28b1('0xe')](_0x1d61ae)+_0x28b1('0xd')]){return _0x25daf9[_[_0x28b1('0xe')](_0x1d61ae)+_0x28b1('0xd')];}else if(_0x25daf9&&_0x25daf9['id']){return _0x25daf9['id'];}else if(_0x3ad42a&&_0x3ad42a['id']){return _0x3ad42a['id'];}else{return _0x28b1('0xf');}}function getInteractionsTables(_0x416b7b){return{'accounts':_0x416b7b+'_'+(_0x416b7b===_0x28b1('0xa')?_0x28b1('0x10'):_0x28b1('0x11')),'interactions':_0x416b7b+_0x28b1('0x12'),'interactionsTags':_0x416b7b+'_interaction_has_tags','messages':_0x416b7b+_0x28b1('0x13'),'userInteractions':'user_has_'+_0x416b7b+_0x28b1('0x12')};}function getSelectedTags(_0x4e4982){var _0x1e50ca=[];if(_0x4e4982){_0x1e50ca=Array[_0x28b1('0x14')](_0x4e4982)?_0x4e4982:[_0x4e4982];}return _0x1e50ca;}function log(_0x58ab5d,_0x3c7238,_0x256733,_0x2028b8,_0x1c3aa8,_0x239ed5){loggers[_0x1c3aa8[_0x28b1('0x15')]()][_0x58ab5d](_0x28b1('0x16'),_0x239ed5['toUpperCase'](),_0x3c7238?_0x3c7238['id']:null,_0x3c7238?_0x3c7238[_0x28b1('0x17')]:null,_0x3c7238?_0x3c7238[_0x28b1('0x18')]:null,getInteractionId(_0x256733,_0x2028b8,_0x1c3aa8),_0x256733?JSON[_0x28b1('0x19')](_0x256733):_0x28b1('0x1a'));}function updateUser(_0x3c6b39,_0x107d08,_0x2b6622,_0x5586ba,_0x484e3c){db[_[_0x28b1('0xe')](_0x5586ba)+_0x28b1('0x1b')][_0x28b1('0x1c')]({'where':{'id':getInteractionId(_0x107d08,_0x2b6622,_0x5586ba)}})[_0x28b1('0x1d')](function(_0x395d7b){if(_0x395d7b){return _0x395d7b[_0x28b1('0x1e')]({'UserId':_0x3c6b39?_0x3c6b39['id']:null});}})[_0x28b1('0x1d')](function(_0x426d71){if(_0x426d71){log(_0x28b1('0x1f'),_0x3c6b39,_0x107d08,_0x2b6622,_0x5586ba,_0x484e3c);}})['catch'](function(){log(_0x28b1('0x20'),_0x3c6b39,_0x107d08,_0x2b6622,_0x5586ba,_0x484e3c);});}module[_0x28b1('0x21')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 70084ce..90c2034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5644=['then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','format','update','base64','utf8','hasOwnProperty','use','findOne'];(function(_0x260088,_0x4cb751){var _0x1c25e8=function(_0x33384f){while(--_0x33384f){_0x260088['push'](_0x260088['shift']());}};_0x1c25e8(++_0x4cb751);}(_0x5644,0x167));var _0x4564=function(_0x7a3247,_0x15cb12){_0x7a3247=_0x7a3247-0x0;var _0x1bfde5=_0x5644[_0x7a3247];return _0x1bfde5;};'use strict';var crypto=require(_0x4564('0x0'));var util=require(_0x4564('0x1'));var compose=require(_0x4564('0x2'));var db=require(_0x4564('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x1961c2,_0x3f24a9){if(_0x1961c2&&_0x3f24a9){if(_0x3f24a9[_0x4564('0x4')]&&_0x3f24a9[_0x4564('0x5')]){var _0x5645f0=_0x3f24a9[_0x4564('0x4')];var _0x2a2554=_0x3f24a9[_0x4564('0x5')];var _0x4fee05=_0x5645f0[_0x4564('0x6')]('-')[0x4];var _0x24979b=_0x5645f0[_0x4564('0x6')]('-')[0x0];var _0x1792b2=crypto[_0x4564('0x7')](_0x4564('0x8'),util[_0x4564('0x9')]('%s:%s:%s',_0x4fee05,_0x5645f0,_0x24979b));var _0x4866ad=_0x1792b2[_0x4564('0xa')](_0x2a2554,_0x4564('0xb'),_0x4564('0xc'));_0x4866ad+=_0x1792b2['final'](_0x4564('0xc'));var _0x2743a8=JSON['parse'](_0x4866ad);return _0x2743a8[_0x4564('0xd')](_0x1961c2)?_0x2743a8[_0x1961c2]:null;}}return null;}function isLimit(_0x25b24b,_0x30f631,_0xaafe1b,_0x367ecb){var _0x24a03b=_0x30f631;return compose()[_0x4564('0xe')](function(_0x3a763c,_0x574c07,_0x31c8fa){return db['License'][_0x4564('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x4564('0x10')](function(_0x1908db){var _0x3c72f5=getValueFromLicense(_0x25b24b,_0x1908db);return _0x3c72f5?_0x3c72f5:_0x24a03b;})[_0x4564('0x10')](function(_0x37cbc2){_0x24a03b=_0x37cbc2;return _0xaafe1b[_0x4564('0x11')](_0x367ecb);})['then'](function(_0x385657){if(_0x385657>=_0x24a03b){return _0x574c07[_0x4564('0x12')](0x193)[_0x4564('0x13')]({'message':util['format'](_0x4564('0x14'),_0x25b24b)});}_0x31c8fa();})['catch'](function(_0x1ea326){_0x31c8fa(_0x1ea326);});});}function isUserLimit(){return isLimit(_0x4564('0x15'),0x1,db['User'],{'where':{'$or':[{'role':_0x4564('0x16')},{'role':_0x4564('0x17')}]}});}exports[_0x4564('0x18')]=isUserLimit;
\ No newline at end of file
+var _0x74a6=['user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','format','update','base64','utf8','final','parse','hasOwnProperty','findOne','count','then','status','json','users','admin'];(function(_0x58cf3f,_0x3d53e1){var _0x3a0ad3=function(_0x2c007f){while(--_0x2c007f){_0x58cf3f['push'](_0x58cf3f['shift']());}};_0x3a0ad3(++_0x3d53e1);}(_0x74a6,0x115));var _0x674a=function(_0x378b4,_0x5ca7fa){_0x378b4=_0x378b4-0x0;var _0x11d07b=_0x74a6[_0x378b4];return _0x11d07b;};'use strict';var crypto=require(_0x674a('0x0'));var util=require(_0x674a('0x1'));var compose=require(_0x674a('0x2'));var db=require(_0x674a('0x3'))['db'];var config=require(_0x674a('0x4'));function getValueFromLicense(_0xc0492a,_0x893ae1){if(_0xc0492a&&_0x893ae1){if(_0x893ae1[_0x674a('0x5')]&&_0x893ae1[_0x674a('0x6')]){var _0x518318=_0x893ae1[_0x674a('0x5')];var _0x494c6e=_0x893ae1['license'];var _0x5f329f=_0x518318[_0x674a('0x7')]('-')[0x4];var _0x35fe19=_0x518318['split']('-')[0x0];var _0x7ee5fd=crypto[_0x674a('0x8')]('aes-256-ctr',util[_0x674a('0x9')]('%s:%s:%s',_0x5f329f,_0x518318,_0x35fe19));var _0x2bbdee=_0x7ee5fd[_0x674a('0xa')](_0x494c6e,_0x674a('0xb'),_0x674a('0xc'));_0x2bbdee+=_0x7ee5fd[_0x674a('0xd')](_0x674a('0xc'));var _0x226547=JSON[_0x674a('0xe')](_0x2bbdee);return _0x226547[_0x674a('0xf')](_0xc0492a)?_0x226547[_0xc0492a]:null;}}return null;}function isLimit(_0x44fe01,_0xbd9233,_0x3231b5,_0x4dff16){var _0x4d4606=_0xbd9233;return compose()['use'](function(_0x12e705,_0x5ce8e0,_0x49f857){return db['License'][_0x674a('0x10')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x3066a1){var _0x49396d=getValueFromLicense(_0x44fe01,_0x3066a1);return _0x49396d?_0x49396d:_0x4d4606;})['then'](function(_0x21fc4e){_0x4d4606=_0x21fc4e;return _0x3231b5[_0x674a('0x11')](_0x4dff16);})[_0x674a('0x12')](function(_0x1ff8c9){if(_0x1ff8c9>=_0x4d4606){return _0x5ce8e0[_0x674a('0x13')](0x193)[_0x674a('0x14')]({'message':util['format']('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x44fe01)});}_0x49f857();})['catch'](function(_0x563b7a){_0x49f857(_0x563b7a);});});}function isUserLimit(){return isLimit(_0x674a('0x15'),0x1,db['User'],{'where':{'$or':[{'role':_0x674a('0x16')},{'role':_0x674a('0x17')}]}});}exports[_0x674a('0x18')]=isUserLimit;
\ No newline at end of file
index 2c3ad16..b8cc765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe739=['DATE','hours','minutes','seconds','lodash','moment','parseSearch','and','replace','[$or]','split','length','forEach','match','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$lte','add','format','YYYY-MM-DD','castTo','text','CAST(','field','$notIn','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$ne','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','$gt','<=\x20?','>=\x20?','start','shift'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xe739,0xfe));var _0x9e73=function(_0xa5fe8a,_0x1f8745){_0xa5fe8a=_0xa5fe8a-0x0;var _0x4df430=_0xe739[_0xa5fe8a];return _0x4df430;};'use strict';var _=require(_0x9e73('0x0'));var moment=require(_0x9e73('0x1'));exports[_0x9e73('0x2')]=function(_0x37e71d){var _0x19830c={'conditions':[]};_0x19830c['sqlOperator']=_['startsWith'](_0x37e71d,'[$or]')?'or':_0x9e73('0x3');var _0x19d1f3=_0x37e71d[_0x9e73('0x4')]('[$and]','')['replace'](_0x9e73('0x5'),'')[_0x9e73('0x6')]('||');for(var _0x4f5c9c=0x0;_0x4f5c9c<_0x19d1f3[_0x9e73('0x7')];_0x4f5c9c++){var _0x5e9816=_0x19d1f3[_0x4f5c9c]['split'](':=');var _0x14640a=_0x5e9816[0x0];var _0x166e52=_0x5e9816['slice'](0x1);_0x166e52[_0x9e73('0x8')](function(_0x12e3cd){var _0x4da961=_0x12e3cd[_0x9e73('0x6')]('[')['shift']();var _0x2b15e7=_0x12e3cd[_0x9e73('0x9')](/\[(.*?)\]/g);_0x2b15e7[_0x9e73('0x8')](function(_0x49697a){var _0x5c2a72=_0x49697a['split']('[')['filter'](function(_0x3c267f){return _0x3c267f[_0x9e73('0xa')](']')>-0x1;})[_0x9e73('0xb')](function(_0x424469){return _0x424469['split'](']')[0x0];})[0x0];_0x19830c[_0x9e73('0xc')][_0x9e73('0xd')]({'field':_0x14640a,'operator':_0x4da961,'value':_0x5c2a72});});});}return _0x19830c;};exports[_0x9e73('0xe')]=function(_0x4f623b,_0x4b9c75,_0x377db8){var _0xfdf542={};if(_0x4b9c75==='DATE'){if(_0x377db8[_0x9e73('0xf')]===_0x9e73('0x10')){_0x377db8[_0x9e73('0xf')]=_0x9e73('0x11');_0x377db8[_0x9e73('0x12')]+=','+_0x377db8['value'];}else if(_[_0x9e73('0x13')](['$gt',_0x9e73('0x14')],_0x377db8[_0x9e73('0xf')])){_0x377db8[_0x9e73('0x12')]=moment(_0x377db8[_0x9e73('0x12')])[_0x9e73('0x15')](0x1,'days')[_0x9e73('0x16')](_0x9e73('0x17'));}}if(_0x377db8[_0x9e73('0x18')]){_0x4b9c75=_0x377db8[_0x9e73('0x18')];_0xfdf542[_0x9e73('0x19')]=_0x9e73('0x1a')+_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+'\x20AS\x20'+_0x377db8['castTo']+')\x20'+parseOperator(_0x377db8[_0x9e73('0xf')]);}else{_0xfdf542[_0x9e73('0x19')]=_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+'\x20'+parseOperator(_0x377db8['operator']);}if(_[_0x9e73('0x13')](['$ne',_0x9e73('0x1c')],_0x377db8[_0x9e73('0xf')]))_0xfdf542[_0x9e73('0x19')]='('+_0xfdf542['text']+'\x20OR\x20'+_0x4f623b+'.'+_0x377db8[_0x9e73('0x1b')]+_0x9e73('0x1d');_0xfdf542['value']=parseValue(_0x4b9c75,_0x377db8[_0x9e73('0xf')],_0x377db8[_0x9e73('0x12')]);return _0xfdf542;};function parseOperator(_0x236e34){var _0x2a339a;switch(_0x236e34){case _0x9e73('0x1e'):_0x2a339a=_0x9e73('0x1f');break;case _0x9e73('0x1c'):_0x2a339a=_0x9e73('0x20');break;case _0x9e73('0x10'):_0x2a339a=_0x9e73('0x21');break;case _0x9e73('0x22'):_0x2a339a='<>\x20?';break;case _0x9e73('0x23'):case _0x9e73('0x24'):case _0x9e73('0x25'):_0x2a339a=_0x9e73('0x26');break;case _0x9e73('0x27'):_0x2a339a=_0x9e73('0x28');break;case _0x9e73('0x29'):_0x2a339a='>\x20?';break;case _0x9e73('0x14'):_0x2a339a=_0x9e73('0x2a');break;case'$gte':_0x2a339a=_0x9e73('0x2b');break;case _0x9e73('0x11'):_0x2a339a='BETWEEN\x20?\x20AND\x20?';break;}return _0x2a339a;}function parseValue(_0x123ca9,_0x824cf8,_0x2d38aa){var _0x5c8404={'start':undefined,'end':undefined};switch(_0x824cf8){case _0x9e73('0x1e'):case _0x9e73('0x1c'):_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa[_0x9e73('0x6')](',');break;case _0x9e73('0x23'):_0x5c8404[_0x9e73('0x2c')]='%'+_0x2d38aa+'%';break;case _0x9e73('0x24'):_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa+'%';break;case _0x9e73('0x25'):_0x5c8404['start']='%'+_0x2d38aa;break;case _0x9e73('0x11'):var _0x1ba1b1=_0x2d38aa[_0x9e73('0x6')](',');var _0x2d38aa=_0x1ba1b1[_0x9e73('0x2d')]();var _0x4abba5=_0x1ba1b1['pop']();if(_0x123ca9===_0x9e73('0x2e')){_0x2d38aa=moment(_0x2d38aa)['utcOffset'](0x0,!![])[_0x9e73('0x16')]();_0x4abba5=moment(_0x4abba5)['utcOffset'](0x0,!![])['add'](0x17,_0x9e73('0x2f'))[_0x9e73('0x15')](0x3b,_0x9e73('0x30'))[_0x9e73('0x15')](0x3b,_0x9e73('0x31'))[_0x9e73('0x16')]();}_0x5c8404={'start':_0x2d38aa,'end':_0x4abba5};break;default:_0x5c8404[_0x9e73('0x2c')]=_0x2d38aa;break;}return _0x5c8404;}
\ No newline at end of file
+var _0xce99=['text','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','shift','pop','utcOffset','hours','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','and','replace','[$and]','[$or]','split','length','slice','forEach','match','indexOf','map','conditions','buildExpression','DATE','$eq','operator','$between','value','$gt','$lte','add','format','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','includes','$ne','$notIn'];(function(_0x5cbe8a,_0x41c132){var _0x4b07a1=function(_0x112ff9){while(--_0x112ff9){_0x5cbe8a['push'](_0x5cbe8a['shift']());}};_0x4b07a1(++_0x41c132);}(_0xce99,0x1ad));var _0x9ce9=function(_0x2c68e9,_0x236b75){_0x2c68e9=_0x2c68e9-0x0;var _0x328b02=_0xce99[_0x2c68e9];return _0x328b02;};'use strict';var _=require(_0x9ce9('0x0'));var moment=require(_0x9ce9('0x1'));exports[_0x9ce9('0x2')]=function(_0x3886b8){var _0x4c31e3={'conditions':[]};_0x4c31e3[_0x9ce9('0x3')]=_[_0x9ce9('0x4')](_0x3886b8,'[$or]')?'or':_0x9ce9('0x5');var _0x2281e8=_0x3886b8[_0x9ce9('0x6')](_0x9ce9('0x7'),'')['replace'](_0x9ce9('0x8'),'')[_0x9ce9('0x9')]('||');for(var _0x2e0e7b=0x0;_0x2e0e7b<_0x2281e8[_0x9ce9('0xa')];_0x2e0e7b++){var _0xb5d591=_0x2281e8[_0x2e0e7b][_0x9ce9('0x9')](':=');var _0x501e39=_0xb5d591[0x0];var _0x2bcca7=_0xb5d591[_0x9ce9('0xb')](0x1);_0x2bcca7[_0x9ce9('0xc')](function(_0x5d943d){var _0x54e5c3=_0x5d943d['split']('[')['shift']();var _0x89c070=_0x5d943d[_0x9ce9('0xd')](/\[(.*?)\]/g);_0x89c070[_0x9ce9('0xc')](function(_0x5a1c14){var _0x24348d=_0x5a1c14[_0x9ce9('0x9')]('[')['filter'](function(_0x10ae70){return _0x10ae70[_0x9ce9('0xe')](']')>-0x1;})[_0x9ce9('0xf')](function(_0xbf1586){return _0xbf1586[_0x9ce9('0x9')](']')[0x0];})[0x0];_0x4c31e3[_0x9ce9('0x10')]['push']({'field':_0x501e39,'operator':_0x54e5c3,'value':_0x24348d});});});}return _0x4c31e3;};exports[_0x9ce9('0x11')]=function(_0xd3303e,_0x54459b,_0x59c32c){var _0x2870c3={};if(_0x54459b===_0x9ce9('0x12')){if(_0x59c32c['operator']===_0x9ce9('0x13')){_0x59c32c[_0x9ce9('0x14')]=_0x9ce9('0x15');_0x59c32c['value']+=','+_0x59c32c[_0x9ce9('0x16')];}else if(_['includes']([_0x9ce9('0x17'),_0x9ce9('0x18')],_0x59c32c[_0x9ce9('0x14')])){_0x59c32c[_0x9ce9('0x16')]=moment(_0x59c32c[_0x9ce9('0x16')])[_0x9ce9('0x19')](0x1,'days')[_0x9ce9('0x1a')](_0x9ce9('0x1b'));}}if(_0x59c32c[_0x9ce9('0x1c')]){_0x54459b=_0x59c32c[_0x9ce9('0x1c')];_0x2870c3['text']=_0x9ce9('0x1d')+_0xd3303e+'.'+_0x59c32c[_0x9ce9('0x1e')]+_0x9ce9('0x1f')+_0x59c32c[_0x9ce9('0x1c')]+')\x20'+parseOperator(_0x59c32c[_0x9ce9('0x14')]);}else{_0x2870c3['text']=_0xd3303e+'.'+_0x59c32c[_0x9ce9('0x1e')]+'\x20'+parseOperator(_0x59c32c['operator']);}if(_[_0x9ce9('0x20')]([_0x9ce9('0x21'),_0x9ce9('0x22')],_0x59c32c[_0x9ce9('0x14')]))_0x2870c3[_0x9ce9('0x23')]='('+_0x2870c3[_0x9ce9('0x23')]+_0x9ce9('0x24')+_0xd3303e+'.'+_0x59c32c['field']+_0x9ce9('0x25');_0x2870c3[_0x9ce9('0x16')]=parseValue(_0x54459b,_0x59c32c[_0x9ce9('0x14')],_0x59c32c[_0x9ce9('0x16')]);return _0x2870c3;};function parseOperator(_0x233a15){var _0x1fd82c;switch(_0x233a15){case _0x9ce9('0x26'):_0x1fd82c=_0x9ce9('0x27');break;case _0x9ce9('0x22'):_0x1fd82c='NOT\x20IN\x20?';break;case _0x9ce9('0x13'):_0x1fd82c=_0x9ce9('0x28');break;case _0x9ce9('0x21'):_0x1fd82c=_0x9ce9('0x29');break;case _0x9ce9('0x2a'):case _0x9ce9('0x2b'):case _0x9ce9('0x2c'):_0x1fd82c='LIKE\x20?';break;case _0x9ce9('0x2d'):_0x1fd82c=_0x9ce9('0x2e');break;case _0x9ce9('0x17'):_0x1fd82c=_0x9ce9('0x2f');break;case _0x9ce9('0x18'):_0x1fd82c=_0x9ce9('0x30');break;case _0x9ce9('0x31'):_0x1fd82c=_0x9ce9('0x32');break;case _0x9ce9('0x15'):_0x1fd82c=_0x9ce9('0x33');break;}return _0x1fd82c;}function parseValue(_0x49fbb1,_0x15ac32,_0x114bed){var _0x1257ac={'start':undefined,'end':undefined};switch(_0x15ac32){case'$in':case _0x9ce9('0x22'):_0x1257ac[_0x9ce9('0x34')]=_0x114bed[_0x9ce9('0x9')](',');break;case _0x9ce9('0x2a'):_0x1257ac['start']='%'+_0x114bed+'%';break;case _0x9ce9('0x2b'):_0x1257ac[_0x9ce9('0x34')]=_0x114bed+'%';break;case _0x9ce9('0x2c'):_0x1257ac['start']='%'+_0x114bed;break;case'$between':var _0x13b9a1=_0x114bed[_0x9ce9('0x9')](',');var _0x114bed=_0x13b9a1[_0x9ce9('0x35')]();var _0x414833=_0x13b9a1[_0x9ce9('0x36')]();if(_0x49fbb1===_0x9ce9('0x12')){_0x114bed=moment(_0x114bed)[_0x9ce9('0x37')](0x0,!![])[_0x9ce9('0x1a')]();_0x414833=moment(_0x414833)['utcOffset'](0x0,!![])['add'](0x17,_0x9ce9('0x38'))[_0x9ce9('0x19')](0x3b,'minutes')[_0x9ce9('0x19')](0x3b,_0x9ce9('0x39'))[_0x9ce9('0x1a')]();}_0x1257ac={'start':_0x114bed,'end':_0x414833};break;default:_0x1257ac[_0x9ce9('0x34')]=_0x114bed;break;}return _0x1257ac;}
\ No newline at end of file
index c5b3f0e..3ac1bb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13e=['DESC','ASC','omit','length','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','replace','push','join','getOptions','query','$id','model','map','intersection','attributes','hasOwnProperty','order','where','filter','object','value','merge','VIRTUAL','lower','lodash','sequelize','moment','includes','keys','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','parse','$gte','YYYY-MM-DD','format','utc','subtract','name','uniqueid','isArray','limit','offset','sort','cast','col','priority','unsigned','substr'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0xd13e,0x193));var _0xed13=function(_0x8f3e02,_0x4c6b51){_0x8f3e02=_0x8f3e02-0x0;var _0x5bbca1=_0xd13e[_0x8f3e02];return _0x5bbca1;};'use strict';var _=require(_0xed13('0x0'));var sequelize=require(_0xed13('0x1'));var moment=require(_0xed13('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x32c6ee){var _0x50b476=['ne'];try{var _0x1a064e=JSON['parse'](_0x32c6ee);var _0x282bda=Object['keys'](_0x1a064e)[0x0];return _0x50b476[_0xed13('0x3')](_0x282bda);}catch(_0xcba1c4){return![];}}function getOperatorValue(_0x5e3571){var _0x50de44=JSON['parse'](_0x5e3571);var _0x95ff4c=Object[_0xed13('0x4')](_0x50de44)[0x0];var _0xab0fff=_0x50de44[_0x95ff4c];return{['$'+_0x95ff4c]:_0xab0fff};}exports[_0xed13('0x5')]=function(_0x369798){var _0x2ba0d2=null;if(_0x369798){_0x2ba0d2=_0x369798[_0xed13('0x6')](',');}return _0x2ba0d2;};exports[_0xed13('0x7')]=function(_0x8543ad,_0x4e1e07){var _0x26442d={};if(!_[_0xed13('0x8')](_0x8543ad)){_[_0xed13('0x9')](_0x8543ad,function(_0x39575c,_0x2b290c){try{if(_0x4e1e07){var _0x57f4d4=_[_0xed13('0xa')](_0x4e1e07,{'name':_0x2b290c})||{};if(hasSequelizeOperator(_0x39575c)){_0x26442d[_0x2b290c]=getOperatorValue(_0x39575c);}else if(_0x57f4d4[_0xed13('0xb')]===_0xed13('0xc')&&_[_0xed13('0xd')](_0x39575c)){var _0x936103=JSON[_0xed13('0xe')](_0x39575c);var _0x5b950a={'$gte':moment(moment(_0x936103[_0xed13('0xf')])['format'](_0xed13('0x10')))['utc']()[_0xed13('0x11')](),'$lte':moment(moment(_0x936103['$lte'])[_0xed13('0x11')]('YYYY-MM-DD'))[_0xed13('0x12')]()[_0xed13('0x13')](0x1,'s')[_0xed13('0x11')]()};_0x26442d[_0x2b290c]=_0x5b950a;}else if(_0x57f4d4[_0xed13('0x14')]===_0xed13('0x15')){_0x26442d[_0x2b290c]=_0x39575c;}else{_0x26442d[_0x2b290c]=_[_0xed13('0x16')](_0x39575c)?_0x39575c:JSON[_0xed13('0xe')](_0x39575c);}}else{_0x26442d[_0x2b290c]=_[_0xed13('0x16')](_0x39575c)?_0x39575c:JSON[_0xed13('0xe')](_0x39575c);}}catch(_0x1e161f){_0x26442d[_0x2b290c]=_0x39575c[_0xed13('0x6')](',');}});}return _0x26442d;};exports[_0xed13('0x17')]=function(_0x2893d2){_0x2893d2=parseInt(_0x2893d2,0xa);if(!_0x2893d2||_0x2893d2<0x0){_0x2893d2=LIMIT_VALUE;}return _0x2893d2;};exports[_0xed13('0x18')]=function(_0x356344){_0x356344=parseInt(_0x356344,0xa);if(!_0x356344||_0x356344<0x0){_0x356344=0x0;}return _0x356344;};exports[_0xed13('0x19')]=function(_0x580870){var _0x50512a,_0x1f3646=null;if(_0x580870){_0x50512a=_0x580870[_0xed13('0x6')](',');_0x1f3646=_['map'](_0x50512a,function(_0x40dd86){if(_0x40dd86['indexOf']('-')===0x0){return[_0x40dd86==='priority'?sequelize[_0xed13('0x1a')](sequelize[_0xed13('0x1b')](_0xed13('0x1c')),_0xed13('0x1d')):_0x40dd86[_0xed13('0x1e')](0x1),_0xed13('0x1f')];}else{return[_0x40dd86==='priority'?sequelize['cast'](sequelize['col'](_0xed13('0x1c')),_0xed13('0x1d')):_0x40dd86,_0xed13('0x20')];}});}return _0x1f3646;};exports[_0xed13('0x21')]=function(_0x1a0458,_0x28f8b8){if(_[_0xed13('0x8')](_0x1a0458)){return _0x1a0458;}if(_[_0xed13('0x16')](_0x1a0458)){for(var _0x2410e2=0x0;_0x2410e2<_0x1a0458[_0xed13('0x22')];_0x2410e2+=0x1){_0x1a0458[_0x2410e2]=this[_0xed13('0x21')](_0x1a0458[_0x2410e2],_0x28f8b8);}return _0x1a0458;}if(!_[_0xed13('0x23')](_0x1a0458)){return _0x1a0458;}if(_[_0xed13('0x24')](_0x28f8b8)){_0x28f8b8=[_0x28f8b8];}if(!_[_0xed13('0x16')](_0x28f8b8)){return _0x1a0458;}for(var _0x4e03d1=0x0;_0x4e03d1<_0x28f8b8['length'];_0x4e03d1+=0x1){_[_0xed13('0x25')](_0x1a0458,_0x28f8b8[_0x4e03d1]);}for(var _0x2ebdf6 in _0x1a0458){if(_0x1a0458['hasOwnProperty'](_0x2ebdf6)){_0x1a0458[_0x2ebdf6]=this[_0xed13('0x21')](_0x1a0458[_0x2ebdf6],_0x28f8b8);}}return _0x1a0458;};exports[_0xed13('0x26')]=function(_0x4ed119){return _0x4ed119[_0xed13('0x27')](RegExp(_0xed13('0x28')))?!![]:![];};exports[_0xed13('0x29')]=function(_0x570929){return _0x570929[_0xed13('0x27')](/^\S+@\S+$/)?!![]:![];};exports[_0xed13('0x2a')]=function(_0x489840){var _0x433665=[];_0x489840[_0xed13('0x6')](/[ ,]+/)['forEach'](function(_0x11cb93){_0x11cb93=_0x11cb93[_0xed13('0x2b')](/([^:]")"+/g,'$1');_0x11cb93='+'+_0x11cb93+'*';var _0x2bcc8b=/[ `!@#$%^&*()_\-?~]/;if(_0x11cb93[_0xed13('0x27')](_0x2bcc8b))_0x11cb93='\x22'+_0x11cb93+'\x22';_0x433665[_0xed13('0x2c')](_0x11cb93);});return _0x433665[_0xed13('0x2d')]('\x20');};exports[_0xed13('0x2e')]=function(_0x5b3828,_0x7ee14a,_0x55c1db){var _0x590a4a={},_0x3ac2f7={};if(_0x7ee14a[_0xed13('0x2f')][_0xed13('0x30')]){_0x7ee14a['query']['id']=_0x7ee14a[_0xed13('0x2f')][_0xed13('0x30')];delete _0x7ee14a[_0xed13('0x2f')]['$id'];}_0x590a4a[_0xed13('0x31')]=_[_0xed13('0x32')](_0x5b3828,_0xed13('0x14'));_0x590a4a[_0xed13('0x2f')]=_['keys'](_0x7ee14a[_0xed13('0x2f')]);_0x590a4a[_0xed13('0x7')]=_[_0xed13('0x33')](_0x590a4a[_0xed13('0x31')],_0x590a4a[_0xed13('0x2f')]);_0x3ac2f7[_0xed13('0x34')]=_[_0xed13('0x33')](_0x590a4a[_0xed13('0x31')],this[_0xed13('0x5')](_0x7ee14a[_0xed13('0x2f')]['fields']));_0x3ac2f7[_0xed13('0x34')]=_0x3ac2f7[_0xed13('0x34')]['length']?_0x3ac2f7['attributes']:_0x590a4a['model'];if(!_0x7ee14a[_0xed13('0x2f')][_0xed13('0x35')]('nolimit')){_0x3ac2f7['limit']=this[_0xed13('0x17')](_0x7ee14a[_0xed13('0x2f')][_0xed13('0x17')]);_0x3ac2f7[_0xed13('0x18')]=this[_0xed13('0x18')](_0x7ee14a['query']['offset']);}_0x3ac2f7[_0xed13('0x36')]=this['sort'](_0x7ee14a[_0xed13('0x2f')]['sort']);_0x3ac2f7[_0xed13('0x37')]=this['filters'](_['pick'](_0x7ee14a['query'],_0x590a4a[_0xed13('0x7')]),_0x5b3828);if(_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]){var _0x42d5f7=_0x5b3828;var _0x2d29aa=_0x7ee14a['query'][_0xed13('0x38')];if(typeof _0x2d29aa===_0xed13('0x39')){_0x42d5f7=_[_0xed13('0x38')](_0x5b3828,function(_0x166bf4){return _[_0xed13('0x3')](_0x2d29aa['columns'],_0x166bf4[_0xed13('0x14')]);});_0x2d29aa=_0x2d29aa[_0xed13('0x3a')];}_0x3ac2f7[_0xed13('0x37')]=_[_0xed13('0x3b')](_0x3ac2f7[_0xed13('0x37')],{'$or':_[_0xed13('0x32')](_0x42d5f7,function(_0x535de7){if(_0x535de7[_0xed13('0xb')]!==_0xed13('0x3c')){if(_0x55c1db){return sequelize[_0xed13('0x37')](sequelize['fn'](_0xed13('0x3d'),sequelize[_0xed13('0x1b')](_0x535de7[_0xed13('0x14')])),{'$like':sequelize['fn'](_0xed13('0x3d'),'%'+_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]+'%')});}else{var _0x25a734={};_0x25a734[_0x535de7[_0xed13('0x14')]]={'$like':'%'+_0x7ee14a[_0xed13('0x2f')][_0xed13('0x38')]+'%'};return _0x25a734;}}})});}_0x3ac2f7=_[_0xed13('0x3b')]({},_0x3ac2f7,_0x7ee14a['options']);return _0x3ac2f7;};
\ No newline at end of file
+var _0xf494=['DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','name','uniqueid','isArray','sort','map','indexOf','priority','col','unsigned','DESC','cast','length','isObject','isString','unset','omit','isNumeric','^[+]?[0-9]*$','isEmail','replace','match','push','join','getOptions','query','$id','intersection','model','attributes','hasOwnProperty','nolimit','limit','offset','where','pick','filter','object','columns','value','type','lower','options','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','forOwn'];(function(_0x38f737,_0x420d14){var _0x3c7206=function(_0x5a52e1){while(--_0x5a52e1){_0x38f737['push'](_0x38f737['shift']());}};_0x3c7206(++_0x420d14);}(_0xf494,0x1c6));var _0x4f49=function(_0x11824c,_0xa0e577){_0x11824c=_0x11824c-0x0;var _0x3aca1a=_0xf494[_0x11824c];return _0x3aca1a;};'use strict';var _=require(_0x4f49('0x0'));var sequelize=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x52d22c){var _0x3aeeb8=['ne'];try{var _0x1d54cc=JSON[_0x4f49('0x3')](_0x52d22c);var _0x25677c=Object[_0x4f49('0x4')](_0x1d54cc)[0x0];return _0x3aeeb8[_0x4f49('0x5')](_0x25677c);}catch(_0x3267c1){return![];}}function getOperatorValue(_0x790e8b){var _0xc5e778=JSON[_0x4f49('0x3')](_0x790e8b);var _0x42b0e8=Object['keys'](_0xc5e778)[0x0];var _0x58e9a0=_0xc5e778[_0x42b0e8];return{['$'+_0x42b0e8]:_0x58e9a0};}exports[_0x4f49('0x6')]=function(_0x327bd5){var _0x31a725=null;if(_0x327bd5){_0x31a725=_0x327bd5[_0x4f49('0x7')](',');}return _0x31a725;};exports[_0x4f49('0x8')]=function(_0x174d0d,_0x151d8c){var _0x410884={};if(!_['isEmpty'](_0x174d0d)){_[_0x4f49('0x9')](_0x174d0d,function(_0x411759,_0x5bcfe5){try{if(_0x151d8c){var _0x15e7a1=_['find'](_0x151d8c,{'name':_0x5bcfe5})||{};if(hasSequelizeOperator(_0x411759)){_0x410884[_0x5bcfe5]=getOperatorValue(_0x411759);}else if(_0x15e7a1['type']===_0x4f49('0xa')&&_[_0x4f49('0xb')](_0x411759)){var _0x4bf89f=JSON[_0x4f49('0x3')](_0x411759);var _0x111a8b={'$gte':moment(moment(_0x4bf89f[_0x4f49('0xc')])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()[_0x4f49('0xd')](),'$lte':moment(moment(_0x4bf89f['$lte'])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()['subtract'](0x1,'s')['format']()};_0x410884[_0x5bcfe5]=_0x111a8b;}else if(_0x15e7a1[_0x4f49('0x10')]===_0x4f49('0x11')){_0x410884[_0x5bcfe5]=_0x411759;}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON['parse'](_0x411759);}}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON[_0x4f49('0x3')](_0x411759);}}catch(_0x4e85df){_0x410884[_0x5bcfe5]=_0x411759['split'](',');}});}return _0x410884;};exports['limit']=function(_0x560592){_0x560592=parseInt(_0x560592,0xa);if(!_0x560592||_0x560592<0x0){_0x560592=LIMIT_VALUE;}return _0x560592;};exports['offset']=function(_0xb2081a){_0xb2081a=parseInt(_0xb2081a,0xa);if(!_0xb2081a||_0xb2081a<0x0){_0xb2081a=0x0;}return _0xb2081a;};exports[_0x4f49('0x13')]=function(_0x1c2d70){var _0x407042,_0x5793ac=null;if(_0x1c2d70){_0x407042=_0x1c2d70[_0x4f49('0x7')](',');_0x5793ac=_[_0x4f49('0x14')](_0x407042,function(_0x197a49){if(_0x197a49[_0x4f49('0x15')]('-')===0x0){return[_0x197a49===_0x4f49('0x16')?sequelize['cast'](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49['substr'](0x1),_0x4f49('0x19')];}else{return[_0x197a49===_0x4f49('0x16')?sequelize[_0x4f49('0x1a')](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49,'ASC'];}});}return _0x5793ac;};exports['omit']=function(_0x3a947b,_0x429de7){if(_['isEmpty'](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x12')](_0x3a947b)){for(var _0x2c1519=0x0;_0x2c1519<_0x3a947b[_0x4f49('0x1b')];_0x2c1519+=0x1){_0x3a947b[_0x2c1519]=this['omit'](_0x3a947b[_0x2c1519],_0x429de7);}return _0x3a947b;}if(!_[_0x4f49('0x1c')](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x1d')](_0x429de7)){_0x429de7=[_0x429de7];}if(!_[_0x4f49('0x12')](_0x429de7)){return _0x3a947b;}for(var _0x148153=0x0;_0x148153<_0x429de7[_0x4f49('0x1b')];_0x148153+=0x1){_[_0x4f49('0x1e')](_0x3a947b,_0x429de7[_0x148153]);}for(var _0x4915af in _0x3a947b){if(_0x3a947b['hasOwnProperty'](_0x4915af)){_0x3a947b[_0x4915af]=this[_0x4f49('0x1f')](_0x3a947b[_0x4915af],_0x429de7);}}return _0x3a947b;};exports[_0x4f49('0x20')]=function(_0x605c91){return _0x605c91['match'](RegExp(_0x4f49('0x21')))?!![]:![];};exports[_0x4f49('0x22')]=function(_0x43d8e3){return _0x43d8e3['match'](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x3e207f){var _0x27d004=[];_0x3e207f[_0x4f49('0x7')](/[ ,]+/)['forEach'](function(_0x1eaac6){_0x1eaac6=_0x1eaac6[_0x4f49('0x23')](/([^:]")"+/g,'$1');_0x1eaac6='+'+_0x1eaac6+'*';var _0x173657=/[ `!@#$%^&*()_\-?~]/;if(_0x1eaac6[_0x4f49('0x24')](_0x173657))_0x1eaac6='\x22'+_0x1eaac6+'\x22';_0x27d004[_0x4f49('0x25')](_0x1eaac6);});return _0x27d004[_0x4f49('0x26')]('\x20');};exports[_0x4f49('0x27')]=function(_0x45ae19,_0x1f38d3,_0x310ee2){var _0x2291d4={},_0xf65ac6={};if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')]){_0x1f38d3[_0x4f49('0x28')]['id']=_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];delete _0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];}_0x2291d4['model']=_[_0x4f49('0x14')](_0x45ae19,_0x4f49('0x10'));_0x2291d4[_0x4f49('0x28')]=_[_0x4f49('0x4')](_0x1f38d3[_0x4f49('0x28')]);_0x2291d4[_0x4f49('0x8')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],_0x2291d4[_0x4f49('0x28')]);_0xf65ac6[_0x4f49('0x2c')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],this[_0x4f49('0x6')](_0x1f38d3['query'][_0x4f49('0x6')]));_0xf65ac6[_0x4f49('0x2c')]=_0xf65ac6[_0x4f49('0x2c')][_0x4f49('0x1b')]?_0xf65ac6[_0x4f49('0x2c')]:_0x2291d4[_0x4f49('0x2b')];if(!_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2d')](_0x4f49('0x2e'))){_0xf65ac6[_0x4f49('0x2f')]=this[_0x4f49('0x2f')](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2f')]);_0xf65ac6[_0x4f49('0x30')]=this['offset'](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x30')]);}_0xf65ac6['order']=this[_0x4f49('0x13')](_0x1f38d3[_0x4f49('0x28')]['sort']);_0xf65ac6[_0x4f49('0x31')]=this[_0x4f49('0x8')](_[_0x4f49('0x32')](_0x1f38d3[_0x4f49('0x28')],_0x2291d4[_0x4f49('0x8')]),_0x45ae19);if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x33')]){var _0x5d464e=_0x45ae19;var _0x5e1461=_0x1f38d3['query'][_0x4f49('0x33')];if(typeof _0x5e1461===_0x4f49('0x34')){_0x5d464e=_[_0x4f49('0x33')](_0x45ae19,function(_0x373f90){return _[_0x4f49('0x5')](_0x5e1461[_0x4f49('0x35')],_0x373f90[_0x4f49('0x10')]);});_0x5e1461=_0x5e1461[_0x4f49('0x36')];}_0xf65ac6[_0x4f49('0x31')]=_['merge'](_0xf65ac6['where'],{'$or':_[_0x4f49('0x14')](_0x5d464e,function(_0x432b5d){if(_0x432b5d[_0x4f49('0x37')]!=='VIRTUAL'){if(_0x310ee2){return sequelize[_0x4f49('0x31')](sequelize['fn']('lower',sequelize['col'](_0x432b5d[_0x4f49('0x10')])),{'$like':sequelize['fn'](_0x4f49('0x38'),'%'+_0x1f38d3[_0x4f49('0x28')]['filter']+'%')});}else{var _0x287781={};_0x287781[_0x432b5d[_0x4f49('0x10')]]={'$like':'%'+_0x1f38d3['query'][_0x4f49('0x33')]+'%'};return _0x287781;}}})});}_0xf65ac6=_['merge']({},_0xf65ac6,_0x1f38d3[_0x4f49('0x39')]);return _0xf65ac6;};
\ No newline at end of file
index 3e0ef68..2082f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c23=['mailCapacity','smsCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','omit','pick','lodash','../../mysqldb','client','http','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','length','idle','unknown','ringing','voiceStatus','pause','every','chatStatus','faxStatus','openchannelStatus','smsStatus','whatsappStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','getRealtimeAgents','isArray','startCase','Queue','map','findOne','getAgents','uniq','value','getAgentIdsByQueues','includes','filter','busy','resolve','findAll','name','fullname','pauseType','find','globalStatus','startsWith','DESC','ASC','getUpdatedSortOptions','substring','indexOf','internal','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','address','openchannelCapacity'];(function(_0x178668,_0x1ec300){var _0x26107d=function(_0x4c0aa8){while(--_0x4c0aa8){_0x178668['push'](_0x178668['shift']());}};_0x26107d(++_0x1ec300);}(_0x9c23,0x1d3));var _0x39c2=function(_0x5da875,_0x475a8b){_0x5da875=_0x5da875-0x0;var _0x25d687=_0x9c23[_0x5da875];return _0x25d687;};'use strict';var _=require(_0x39c2('0x0'));var jayson=require('jayson/promise');var db=require(_0x39c2('0x1'))['db'];var amiClient=jayson[_0x39c2('0x2')][_0x39c2('0x3')]({'port':0x232a});var routingClient=jayson[_0x39c2('0x2')][_0x39c2('0x3')]({'port':0x232c});function isAgentPaused(_0x19f9ec,_0x251f3a){var _0x2d8e82=[_0x19f9ec[_0x39c2('0x4')],_0x19f9ec[_0x39c2('0x5')],_0x19f9ec[_0x39c2('0x6')],_0x19f9ec[_0x39c2('0x7')],_0x19f9ec[_0x39c2('0x8')],_0x19f9ec[_0x39c2('0x9')],_0x19f9ec[_0x39c2('0xa')]];if(!_0x251f3a)return _['every'](_0x2d8e82);var _0x2c49f5=_['filter'](_0x2d8e82);return _0x2c49f5[_0x39c2('0xb')]>0x0&&_0x2c49f5[_0x39c2('0xb')]<_0x2d8e82[_0x39c2('0xb')]?!![]:![];}function isIdle(_0x37462e){return _0x37462e===_0x39c2('0xc')||_0x37462e===_0x39c2('0xd')||_0x37462e==='unavailable'||_0x37462e===_0x39c2('0xe')||_['isNil'](_0x37462e);}function isAgentIdle(_0x2dbf43){if(_0x2dbf43[_0x39c2('0xf')]!==_0x39c2('0xc')&&_0x2dbf43[_0x39c2('0x9')]){_0x2dbf43['voiceStatus']=_0x39c2('0x10');return![];}return _[_0x39c2('0x11')]([_0x2dbf43[_0x39c2('0x12')],_0x2dbf43[_0x39c2('0x13')],_0x2dbf43['mailStatus'],_0x2dbf43[_0x39c2('0x14')],_0x2dbf43[_0x39c2('0x15')],_0x2dbf43[_0x39c2('0xf')],_0x2dbf43[_0x39c2('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x39c2('0x17')](_0x39c2('0x18'),{})[_0x39c2('0x19')](function(_0x2f53b1){if(_0x2f53b1[_0x39c2('0x1a')]){throw new Error(_0x39c2('0x1b'));}var _0x594f4f=_0x2f53b1[_0x39c2('0x1c')];return routingClient['request']('Agents',{})[_0x39c2('0x19')](function(_0x22846e){if(_0x22846e[_0x39c2('0x1a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x44706a=_0x22846e[_0x39c2('0x1c')];return _[_0x39c2('0x1d')]({},_0x594f4f,_0x44706a);});})[_0x39c2('0x1e')](function(_0x4fc772){throw _0x4fc772;});}exports[_0x39c2('0x1f')]=getRealtimeAgents;function getAgentStatus(_0x34a64b){var _0x26984d=_0x39c2('0xd');if(isAgentPaused(_0x34a64b))_0x26984d=_0x39c2('0x10');else if(isAgentPaused(_0x34a64b,!![]))_0x26984d='*pause';else if(isAgentIdle(_0x34a64b))_0x26984d=_0x39c2('0xc');else _0x26984d='busy';return _0x26984d;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x581ad4,_0x2911e3){var _0xd68b87=_[_0x39c2('0x20')](_0x581ad4)?_0x581ad4:[_0x581ad4];var _0x2e2f45=_[_0x39c2('0x21')](_0x2911e3)+_0x39c2('0x22');var _0x40a062=_[_0x39c2('0x23')](_0xd68b87,function(_0x4be2e9){return db[_0x2e2f45][_0x39c2('0x24')]({'where':{'id':_0x4be2e9}})['then'](function(_0x501045){if(!_0x501045)return[];return _0x501045[_0x39c2('0x25')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x40a062)[_0x39c2('0x19')](function(_0x22568){var _0x33038e=_(_0x22568)['flatten']()['map']('id')[_0x39c2('0x26')]()[_0x39c2('0x27')]();return _0x33038e;});}exports[_0x39c2('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x410773,_0x27795f,_0x103939){try{if(_0x27795f[_0x39c2('0xb')]>0x0){_0x410773=_0x410773['filter'](function(_0x42edb5){return _0x27795f[_0x39c2('0x29')](_0x42edb5['id']);});}var _0x4507dd=_0x410773[_0x39c2('0x2a')](function(_0x1dac9c){var _0x3a8ffb=_0x39c2('0x2b');if(isAgentIdle(_0x1dac9c)){_0x3a8ffb=_0x39c2('0xc');}return _0x3a8ffb===_0x103939;});return _[_0x39c2('0x23')](_0x4507dd,'id');}catch(_0x57f535){throw _0x57f535;}}exports['getAgentIdsByStatus']=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x54e903,_0x42031b,_0x58e85e){return Promise[_0x39c2('0x2c')]()[_0x39c2('0x19')](function(){if(_0x42031b['length']>0x0){_0x54e903=_0x54e903[_0x39c2('0x2a')](function(_0x23b9ee){return _0x42031b['includes'](_0x23b9ee['id']);});}return _0x54e903;})[_0x39c2('0x19')](function(){return db['User'][_0x39c2('0x2d')]({'attributes':['id',_0x39c2('0x2e'),_0x39c2('0x2f'),'chatPause',_0x39c2('0x5'),'mailPause',_0x39c2('0x7'),_0x39c2('0x8'),_0x39c2('0x9'),'whatsappPause',_0x39c2('0x30')],'where':{'id':{'$in':_['map'](_0x54e903,'id')}},'raw':!![]});})[_0x39c2('0x19')](function(_0x36a53b){return _0x36a53b[_0x39c2('0x23')](function(_0x293a4d){var _0x45ce08=_[_0x39c2('0x31')](_0x54e903,['id',_0x293a4d['id']]);var _0x4fa09d=filterAgentAttributes(_0x45ce08);_[_0x39c2('0x1d')](_0x293a4d,_0x4fa09d);_0x293a4d[_0x39c2('0x32')]=getAgentStatus(_0x293a4d);return _0x293a4d;});})[_0x39c2('0x19')](function(_0x50a09a){var _0x1a46c2=sortAgentsByStatus(_0x50a09a,_0x58e85e);return _[_0x39c2('0x23')](_0x1a46c2,'id');})[_0x39c2('0x1e')](function(_0x31b912){throw _0x31b912;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x2b5c63){var _0x1b4608={'fields':[],'order':null};var _0x3f19a2=_0x2b5c63['split'](',');_0x1b4608['fields']=_['filter'](_0x3f19a2,function(_0x1bc98d){if(!_0x1bc98d['includes']('globalStatus')){return!![];}_0x1b4608['order']=_[_0x39c2('0x33')](_0x1bc98d,'-')?_0x39c2('0x34'):_0x39c2('0x35');return![];});return _0x1b4608;}exports[_0x39c2('0x36')]=getUpdatedSortOptions;function validateSortParameter(_0x2fc6a4){if(_0x2fc6a4[_0x39c2('0x29')](_0x39c2('0x2f'))&&!_0x2fc6a4['includes']('internal')){var _0x3a51d7=_0x2fc6a4[_0x39c2('0x37')](0x0,_0x2fc6a4[_0x39c2('0x38')](_0x39c2('0x2f')));_0x2fc6a4+=','+_0x3a51d7+_0x39c2('0x39');}return _0x2fc6a4;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x4b7c3f,_0x31b1c4){var _0x29350f=_0x4b7c3f[_0x39c2('0x3a')](function(_0x7e45d4,_0x1d68db){if(_0x7e45d4['globalStatus']===_0x1d68db[_0x39c2('0x32')]){if(_0x7e45d4[_0x39c2('0x32')]===_0x39c2('0x10')){if(_0x31b1c4===_0x39c2('0x34')){return(_0x7e45d4[_0x39c2('0x30')]||'')<(_0x1d68db[_0x39c2('0x30')]||'')||_0x7e45d4['fullname'][_0x39c2('0x3b')]()>_0x1d68db['fullname']['toLowerCase']()?0x1:-0x1;}else{return(_0x7e45d4[_0x39c2('0x30')]||'')<(_0x1d68db[_0x39c2('0x30')]||'')||_0x7e45d4[_0x39c2('0x2f')]['toLowerCase']()>_0x1d68db[_0x39c2('0x2f')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x31b1c4===_0x39c2('0x34')){return _0x7e45d4[_0x39c2('0x2f')][_0x39c2('0x3b')]()<_0x1d68db[_0x39c2('0x2f')]['toLowerCase']()?0x1:-0x1;}else{return _0x7e45d4[_0x39c2('0x2f')][_0x39c2('0x3b')]()<_0x1d68db[_0x39c2('0x2f')][_0x39c2('0x3b')]()?-0x1:0x1;}}}else{if(_0x31b1c4==='DESC'){return _0x7e45d4[_0x39c2('0x32')]<_0x1d68db[_0x39c2('0x32')]?0x1:-0x1;}else{return _0x7e45d4[_0x39c2('0x32')]<_0x1d68db['globalStatus']?-0x1:0x1;}}});return _0x29350f;}exports[_0x39c2('0x3c')]=sortAgentsByStatus;function filterAgentAttributes(_0x417b1c){var _0x39e24c=[_0x39c2('0x3d'),_0x39c2('0x3e'),_0x39c2('0x3f'),_0x39c2('0x40'),_0x39c2('0x30'),_0x39c2('0x40'),_0x39c2('0x39'),_0x39c2('0x41'),_0x39c2('0x4'),_0x39c2('0x7'),_0x39c2('0x6'),'smsPause',_0x39c2('0xa'),_0x39c2('0x5'),_0x39c2('0x9'),'chatCapacity',_0x39c2('0x42'),_0x39c2('0x43'),_0x39c2('0x44'),'whatsappCapacity',_0x39c2('0x45'),_0x39c2('0x46'),_0x39c2('0x47'),'mailCurrentCapacity',_0x39c2('0x48'),_0x39c2('0x49'),_0x39c2('0x4a'),_0x39c2('0x12'),_0x39c2('0x14'),_0x39c2('0x4b'),'smsStatus','whatsappStatus',_0x39c2('0x13'),'voiceStatus',_0x39c2('0x4c'),_0x39c2('0x4d'),_0x39c2('0x4e'),'smsStatusTime',_0x39c2('0x4f'),_0x39c2('0x50'),_0x39c2('0x51'),_0x39c2('0x52'),_0x39c2('0x53'),_0x39c2('0x54'),_0x39c2('0x55'),_0x39c2('0x56'),'routealias'];var _0x4e5eba=[_0x39c2('0x4'),_0x39c2('0x7'),_0x39c2('0x6'),'smsPause',_0x39c2('0xa'),'faxPause',_0x39c2('0x9'),_0x39c2('0x3e')];var _0x2e4606=_(_0x417b1c)[_0x39c2('0x57')](_0x4e5eba)[_0x39c2('0x58')](_0x39e24c)[_0x39c2('0x27')]();return _0x2e4606;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
+var _0x9778=['startsWith','ASC','getUpdatedSortOptions','internal','substring','indexOf','validateSortParameter','sort','pauseType','toLowerCase','DESC','sortAgentsByStatus','userpic','online','lastPauseAt','chatCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','mailStatusTime','smsStatusTime','faxStatusTime','voiceStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','whatsappPause','jayson/promise','client','http','chatPause','mailPause','openchannelPause','filter','length','unavailable','ringing','idle','voicePause','voiceStatus','pause','every','chatStatus','faxStatus','mailStatus','openchannelStatus','whatsappStatus','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','merge','catch','getRealtimeAgents','*pause','busy','getAgentStatus','isArray','startCase','getAgents','all','flatten','uniq','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','findAll','fullname','faxPause','smsPause','map','globalStatus','split','fields','order'];(function(_0x41e507,_0x694b79){var _0x3bbe37=function(_0x2df851){while(--_0x2df851){_0x41e507['push'](_0x41e507['shift']());}};_0x3bbe37(++_0x694b79);}(_0x9778,0x127));var _0x8977=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0x9778[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require('lodash');var jayson=require(_0x8977('0x0'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0x8977('0x1')][_0x8977('0x2')]({'port':0x232a});var routingClient=jayson['client'][_0x8977('0x2')]({'port':0x232c});function isAgentPaused(_0x485efc,_0x21592f){var _0x2f09d4=[_0x485efc[_0x8977('0x3')],_0x485efc['faxPause'],_0x485efc[_0x8977('0x4')],_0x485efc[_0x8977('0x5')],_0x485efc['smsPause'],_0x485efc['voicePause'],_0x485efc['whatsappPause']];if(!_0x21592f)return _['every'](_0x2f09d4);var _0x3fb949=_[_0x8977('0x6')](_0x2f09d4);return _0x3fb949[_0x8977('0x7')]>0x0&&_0x3fb949[_0x8977('0x7')]<_0x2f09d4['length']?!![]:![];}function isIdle(_0x2cb7f7){return _0x2cb7f7==='idle'||_0x2cb7f7==='unknown'||_0x2cb7f7===_0x8977('0x8')||_0x2cb7f7===_0x8977('0x9')||_['isNil'](_0x2cb7f7);}function isAgentIdle(_0x4e1494){if(_0x4e1494['voiceStatus']!==_0x8977('0xa')&&_0x4e1494[_0x8977('0xb')]){_0x4e1494[_0x8977('0xc')]=_0x8977('0xd');return![];}return _[_0x8977('0xe')]([_0x4e1494[_0x8977('0xf')],_0x4e1494[_0x8977('0x10')],_0x4e1494[_0x8977('0x11')],_0x4e1494[_0x8977('0x12')],_0x4e1494['smsStatus'],_0x4e1494[_0x8977('0xc')],_0x4e1494[_0x8977('0x13')]],isIdle);}function getRealtimeAgents(){return amiClient[_0x8977('0x14')](_0x8977('0x15'),{})[_0x8977('0x16')](function(_0x60428b){if(_0x60428b['error']){throw new Error(_0x8977('0x17'));}var _0x5e5f18=_0x60428b['result'];return routingClient['request']('Agents',{})[_0x8977('0x16')](function(_0x27da23){if(_0x27da23['error']){throw new Error(_0x8977('0x18'));}var _0x4e9ddb=_0x27da23[_0x8977('0x19')];return _[_0x8977('0x1a')]({},_0x5e5f18,_0x4e9ddb);});})[_0x8977('0x1b')](function(_0x4b8d9d){throw _0x4b8d9d;});}exports[_0x8977('0x1c')]=getRealtimeAgents;function getAgentStatus(_0x38b041){var _0x50abb3='unknown';if(isAgentPaused(_0x38b041))_0x50abb3='pause';else if(isAgentPaused(_0x38b041,!![]))_0x50abb3=_0x8977('0x1d');else if(isAgentIdle(_0x38b041))_0x50abb3=_0x8977('0xa');else _0x50abb3=_0x8977('0x1e');return _0x50abb3;}exports[_0x8977('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x295ca4,_0x126b80){var _0x47fb89=_[_0x8977('0x20')](_0x295ca4)?_0x295ca4:[_0x295ca4];var _0x2602b7=_[_0x8977('0x21')](_0x126b80)+'Queue';var _0xf37894=_['map'](_0x47fb89,function(_0x1ea0c3){return db[_0x2602b7]['findOne']({'where':{'id':_0x1ea0c3}})['then'](function(_0x333b27){if(!_0x333b27)return[];return _0x333b27[_0x8977('0x22')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x8977('0x23')](_0xf37894)['then'](function(_0x33915a){var _0x20d14c=_(_0x33915a)[_0x8977('0x24')]()['map']('id')[_0x8977('0x25')]()[_0x8977('0x26')]();return _0x20d14c;});}exports[_0x8977('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x443435,_0x305600,_0x1bdc99){try{if(_0x305600[_0x8977('0x7')]>0x0){_0x443435=_0x443435['filter'](function(_0x366018){return _0x305600[_0x8977('0x28')](_0x366018['id']);});}var _0x4e755e=_0x443435[_0x8977('0x6')](function(_0x4bec61){var _0x4ee730=_0x8977('0x1e');if(isAgentIdle(_0x4bec61)){_0x4ee730=_0x8977('0xa');}return _0x4ee730===_0x1bdc99;});return _['map'](_0x4e755e,'id');}catch(_0x572b36){throw _0x572b36;}}exports[_0x8977('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x2167c0,_0x1a9fbe,_0x51be02){return Promise[_0x8977('0x2a')]()['then'](function(){if(_0x1a9fbe['length']>0x0){_0x2167c0=_0x2167c0[_0x8977('0x6')](function(_0x4f7d86){return _0x1a9fbe[_0x8977('0x28')](_0x4f7d86['id']);});}return _0x2167c0;})[_0x8977('0x16')](function(){return db[_0x8977('0x2b')][_0x8977('0x2c')]({'attributes':['id','name',_0x8977('0x2d'),'chatPause',_0x8977('0x2e'),_0x8977('0x4'),'openchannelPause',_0x8977('0x2f'),_0x8977('0xb'),'whatsappPause','pauseType'],'where':{'id':{'$in':_[_0x8977('0x30')](_0x2167c0,'id')}},'raw':!![]});})[_0x8977('0x16')](function(_0x22eda7){return _0x22eda7['map'](function(_0x5996cf){var _0x44b9db=_['find'](_0x2167c0,['id',_0x5996cf['id']]);var _0x48ad64=filterAgentAttributes(_0x44b9db);_[_0x8977('0x1a')](_0x5996cf,_0x48ad64);_0x5996cf[_0x8977('0x31')]=getAgentStatus(_0x5996cf);return _0x5996cf;});})[_0x8977('0x16')](function(_0x465401){var _0x2744bd=sortAgentsByStatus(_0x465401,_0x51be02);return _[_0x8977('0x30')](_0x2744bd,'id');})[_0x8977('0x1b')](function(_0x312128){throw _0x312128;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x106e4a){var _0x551668={'fields':[],'order':null};var _0x22670f=_0x106e4a[_0x8977('0x32')](',');_0x551668[_0x8977('0x33')]=_[_0x8977('0x6')](_0x22670f,function(_0xd138b3){if(!_0xd138b3[_0x8977('0x28')](_0x8977('0x31'))){return!![];}_0x551668[_0x8977('0x34')]=_[_0x8977('0x35')](_0xd138b3,'-')?'DESC':_0x8977('0x36');return![];});return _0x551668;}exports[_0x8977('0x37')]=getUpdatedSortOptions;function validateSortParameter(_0x297586){if(_0x297586[_0x8977('0x28')]('fullname')&&!_0x297586[_0x8977('0x28')](_0x8977('0x38'))){var _0x3523cc=_0x297586[_0x8977('0x39')](0x0,_0x297586[_0x8977('0x3a')]('fullname'));_0x297586+=','+_0x3523cc+_0x8977('0x38');}return _0x297586;}exports[_0x8977('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x100323,_0x25bb6b){var _0x212073=_0x100323[_0x8977('0x3c')](function(_0x5d1591,_0x1d0a0b){if(_0x5d1591['globalStatus']===_0x1d0a0b[_0x8977('0x31')]){if(_0x5d1591['globalStatus']===_0x8977('0xd')){if(_0x25bb6b==='DESC'){return(_0x5d1591['pauseType']||'')<(_0x1d0a0b[_0x8977('0x3d')]||'')||_0x5d1591[_0x8977('0x2d')][_0x8977('0x3e')]()>_0x1d0a0b[_0x8977('0x2d')][_0x8977('0x3e')]()?0x1:-0x1;}else{return(_0x5d1591[_0x8977('0x3d')]||'')<(_0x1d0a0b[_0x8977('0x3d')]||'')||_0x5d1591[_0x8977('0x2d')][_0x8977('0x3e')]()>_0x1d0a0b['fullname'][_0x8977('0x3e')]()?-0x1:0x1;}}else{if(_0x25bb6b==='DESC'){return _0x5d1591[_0x8977('0x2d')][_0x8977('0x3e')]()<_0x1d0a0b[_0x8977('0x2d')][_0x8977('0x3e')]()?0x1:-0x1;}else{return _0x5d1591[_0x8977('0x2d')]['toLowerCase']()<_0x1d0a0b[_0x8977('0x2d')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x25bb6b===_0x8977('0x3f')){return _0x5d1591[_0x8977('0x31')]<_0x1d0a0b[_0x8977('0x31')]?0x1:-0x1;}else{return _0x5d1591['globalStatus']<_0x1d0a0b[_0x8977('0x31')]?-0x1:0x1;}}});return _0x212073;}exports[_0x8977('0x40')]=sortAgentsByStatus;function filterAgentAttributes(_0x4f095e){var _0x4c2f39=[_0x8977('0x41'),_0x8977('0x42'),'lastLoginAt',_0x8977('0x43'),_0x8977('0x3d'),_0x8977('0x43'),'internal','address',_0x8977('0x3'),_0x8977('0x5'),_0x8977('0x4'),_0x8977('0x2f'),'whatsappPause','faxPause','voicePause',_0x8977('0x44'),'openchannelCapacity','mailCapacity','smsCapacity',_0x8977('0x45'),'faxCapacity',_0x8977('0x46'),_0x8977('0x47'),_0x8977('0x48'),_0x8977('0x49'),_0x8977('0x4a'),_0x8977('0x4b'),_0x8977('0xf'),_0x8977('0x12'),_0x8977('0x11'),'smsStatus',_0x8977('0x13'),'faxStatus',_0x8977('0xc'),'chatStatusTime','openchannelStatusTime',_0x8977('0x4c'),_0x8977('0x4d'),'whatsappStatusTime',_0x8977('0x4e'),_0x8977('0x4f'),_0x8977('0x50'),_0x8977('0x51'),_0x8977('0x52'),_0x8977('0x53'),_0x8977('0x54'),_0x8977('0x55')];var _0x44fa78=[_0x8977('0x3'),_0x8977('0x5'),'mailPause',_0x8977('0x2f'),_0x8977('0x56'),_0x8977('0x2e'),_0x8977('0xb'),_0x8977('0x42')];var _0x484e65=_(_0x4f095e)['omit'](_0x44fa78)['pick'](_0x4c2f39)['value']();return _0x484e65;}exports['filterAgentAttributes']=filterAgentAttributes;
\ No newline at end of file
index b48fc09..ac34275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x4dbc5b,_0xf50059){var _0x4bb4a8=function(_0x494403){while(--_0x494403){_0x4dbc5b['push'](_0x4dbc5b['shift']());}};_0x4bb4a8(++_0xf50059);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
+var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x48b4f9,_0xbbe897){var _0x30dda9=function(_0xddc3b6){while(--_0xddc3b6){_0x48b4f9['push'](_0x48b4f9['shift']());}};_0x30dda9(++_0xbbe897);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index 1489102..70c9d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7f0=['head','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','map','model','join','md5','digest','hex','getUuid','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','macAddress','createHash','update','substring','crypto','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','internal','concat'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xf7f0,0x1e3));var _0x0f7f=function(_0x29c3ff,_0x20cdb0){_0x29c3ff=_0x29c3ff-0x0;var _0x372b5c=_0xf7f0[_0x29c3ff];return _0x372b5c;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x0f7f('0x0'));var machine=require(_0x0f7f('0x1'));var exec=require('child_process')[_0x0f7f('0x2')];var config=require(_0x0f7f('0x3'));function getInterfaces(){var _0x3e5518=[];var _0x2f90d0=os[_0x0f7f('0x4')]();var _0x20ac5d=_[_0x0f7f('0x5')](_[_0x0f7f('0x6')](_0x2f90d0));for(var _0x40dc2e=0x0;_0x40dc2e<_0x20ac5d['length'];_0x40dc2e++){var _0x2aa4c1=_0x2f90d0[_0x20ac5d[_0x40dc2e]][_0x0f7f('0x7')](function(_0x51d391){return _0x51d391[_0x0f7f('0x8')]===_0x0f7f('0x9')&&_0x51d391[_0x0f7f('0xa')]===![];});_0x3e5518=_0x3e5518[_0x0f7f('0xb')](_0x2aa4c1);}return _0x3e5518;}function getFirstInterface(){var _0x28d554=_[_0x0f7f('0xc')](getInterfaces());return{'macAddress':_0x28d554&&_0x28d554[_0x0f7f('0xd')]?_0x28d554[_0x0f7f('0xd')]:_0x0f7f('0xe'),'ipAddress':_0x28d554&&_0x28d554[_0x0f7f('0xf')]?_0x28d554[_0x0f7f('0xf')]:_0x0f7f('0x10')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x301d2c=_['orderBy'](os[_0x0f7f('0x11')]()[_0x0f7f('0x12')](function(_0x3430b9){return _0x3430b9[_0x0f7f('0x13')];}))[_0x0f7f('0x14')](':');return crypto['createHash'](_0x0f7f('0x15'))['update'](_0x301d2c)[_0x0f7f('0x16')](_0x0f7f('0x17'));}exports[_0x0f7f('0x18')]=function(){var _0x2118d0=os['platform']();var _0x2732fc=/[0-9a-f-]{36}/;if(config[_0x0f7f('0x19')]&&_0x2732fc['test'](config['licenseToken'])){return config[_0x0f7f('0x19')];}else if(_0x2118d0===_0x0f7f('0x1a')){return exec(_0x0f7f('0x1b'),{'encoding':'utf8'})[_0x0f7f('0x1c')]('\x0d\x0a','');}else{var _0x206f8b=getFirstInterface();var _0x182816=getCPUhash();var _0x44ce67=_0x182816+'|'+os['hostname']()+'|'+_0x206f8b[_0x0f7f('0x1d')]+'|'+_0x206f8b['ipAddress'];var _0x3f1ccb=crypto[_0x0f7f('0x1e')]('md5')[_0x0f7f('0x1f')](_0x44ce67)[_0x0f7f('0x16')](_0x0f7f('0x17'));return _0x3f1ccb['substring'](0x0,0x8)+'-'+_0x3f1ccb[_0x0f7f('0x20')](0x8,0xc)+'-'+_0x3f1ccb['substring'](0xc,0x10)+'-'+_0x3f1ccb[_0x0f7f('0x20')](0x10,0x14)+'-'+_0x3f1ccb['substring'](0x14);}};
\ No newline at end of file
+var _0xf6d8=['update','digest','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','model','join','createHash'];(function(_0x1a8885,_0x595697){var _0x38c50e=function(_0x459626){while(--_0x459626){_0x1a8885['push'](_0x1a8885['shift']());}};_0x38c50e(++_0x595697);}(_0xf6d8,0x118));var _0x8f6d=function(_0xcd4685,_0x3c3502){_0xcd4685=_0xcd4685-0x0;var _0x40289b=_0xf6d8[_0xcd4685];return _0x40289b;};'use strict';var _=require(_0x8f6d('0x0'));var os=require('os');var crypto=require(_0x8f6d('0x1'));var machine=require(_0x8f6d('0x2'));var exec=require(_0x8f6d('0x3'))[_0x8f6d('0x4')];var config=require(_0x8f6d('0x5'));function getInterfaces(){var _0x28ec53=[];var _0x1f01ab=os[_0x8f6d('0x6')]();var _0x3caa63=_[_0x8f6d('0x7')](_[_0x8f6d('0x8')](_0x1f01ab));for(var _0x127894=0x0;_0x127894<_0x3caa63[_0x8f6d('0x9')];_0x127894++){var _0x2f6a52=_0x1f01ab[_0x3caa63[_0x127894]][_0x8f6d('0xa')](function(_0x2ff8a4){return _0x2ff8a4[_0x8f6d('0xb')]==='IPv4'&&_0x2ff8a4[_0x8f6d('0xc')]===![];});_0x28ec53=_0x28ec53[_0x8f6d('0xd')](_0x2f6a52);}return _0x28ec53;}function getFirstInterface(){var _0x4621a0=_[_0x8f6d('0xe')](getInterfaces());return{'macAddress':_0x4621a0&&_0x4621a0[_0x8f6d('0xf')]?_0x4621a0['mac']:_0x8f6d('0x10'),'ipAddress':_0x4621a0&&_0x4621a0[_0x8f6d('0x11')]?_0x4621a0[_0x8f6d('0x11')]:_0x8f6d('0x12')};}exports[_0x8f6d('0x13')]=getFirstInterface;function getCPUhash(){var _0x33c5a9=_[_0x8f6d('0x7')](os[_0x8f6d('0x14')]()['map'](function(_0x19c58f){return _0x19c58f[_0x8f6d('0x15')];}))[_0x8f6d('0x16')](':');return crypto[_0x8f6d('0x17')]('md5')[_0x8f6d('0x18')](_0x33c5a9)[_0x8f6d('0x19')](_0x8f6d('0x1a'));}exports[_0x8f6d('0x1b')]=function(){var _0x118a75=os[_0x8f6d('0x1c')]();var _0x3c04c7=/[0-9a-f-]{36}/;if(config[_0x8f6d('0x1d')]&&_0x3c04c7[_0x8f6d('0x1e')](config[_0x8f6d('0x1d')])){return config[_0x8f6d('0x1d')];}else if(_0x118a75===_0x8f6d('0x1f')){return exec(_0x8f6d('0x20'),{'encoding':_0x8f6d('0x21')})[_0x8f6d('0x22')]('\x0d\x0a','');}else{var _0x41c2a2=getFirstInterface();var _0x11f188=getCPUhash();var _0x1cabee=_0x11f188+'|'+os['hostname']()+'|'+_0x41c2a2[_0x8f6d('0x23')]+'|'+_0x41c2a2[_0x8f6d('0x24')];var _0x1d9e7e=crypto[_0x8f6d('0x17')]('md5')['update'](_0x1cabee)[_0x8f6d('0x19')](_0x8f6d('0x1a'));return _0x1d9e7e['substring'](0x0,0x8)+'-'+_0x1d9e7e[_0x8f6d('0x25')](0x8,0xc)+'-'+_0x1d9e7e['substring'](0xc,0x10)+'-'+_0x1d9e7e['substring'](0x10,0x14)+'-'+_0x1d9e7e[_0x8f6d('0x25')](0x14);}};
\ No newline at end of file
index be1c112..c8d0332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24d9=['GET','then','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','data1','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','catch','error','message','finally','License','findOrCreate','spread','default','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s'];(function(_0x57cb46,_0x5546e9){var _0x302404=function(_0x30c8ca){while(--_0x30c8ca){_0x57cb46['push'](_0x57cb46['shift']());}};_0x302404(++_0x5546e9);}(_0x24d9,0x1bc));var _0x924d=function(_0x2fadbe,_0x161ecf){_0x2fadbe=_0x2fadbe-0x0;var _0x29074f=_0x24d9[_0x2fadbe];return _0x29074f;};'use strict';var util=require('util');var moment=require('moment');var rp=require(_0x924d('0x0'));var BPromise=require(_0x924d('0x1'));var pkginfo=require(_0x924d('0x2'))(module,_0x924d('0x3'));var db=require(_0x924d('0x4'))['db'];var encryptor=require(_0x924d('0x5'));var hardware=require('./hardware');var logger=require('../logger')(_0x924d('0x6'));var HOST=_0x924d('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x40808d){return new BPromise(function(_0x337f43,_0x15eb95){var _0x12bfb7=util[_0x924d('0x8')](_0x924d('0x9'),HOST,_0x40808d,module[_0x924d('0xa')][_0x924d('0x3')]);if(oldToken){_0x12bfb7=util[_0x924d('0x8')](_0x924d('0xb'),HOST,_0x40808d,module[_0x924d('0xa')][_0x924d('0x3')],oldToken);}var _0x47d26e={'uri':_0x12bfb7,'method':_0x924d('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x47d26e)[_0x924d('0xd')](function(_0x11d27f){_0x337f43(_0x11d27f);})['catch'](function(_0x34030b){_0x15eb95(_0x34030b);});});}function manageLicense(_0x2e32bd,_0x1d5d0a){var _0x5a77e8=_0x1d5d0a['get']({'plain':!![]});if(!isOldTokenSent&&_0x5a77e8['data1']!==_0x2e32bd&&!_0x5a77e8['data2']){oldToken=_0x5a77e8['data1'];}httpRequest(_0x2e32bd)[_0x924d('0xd')](function(_0x3bd822){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3bd822[_0x924d('0xe')]){isOldTokenSent=![];if(!_0x5a77e8['license']&&_0x5a77e8[_0x924d('0x6')]!=_0x3bd822['license']||_0x5a77e8[_0x924d('0x6')]&&_0x5a77e8[_0x924d('0xf')]){logger[_0x924d('0x10')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x5a77e8[_0x924d('0x6')]&&!_0x5a77e8[_0x924d('0xf')]&&_0x5a77e8[_0x924d('0x6')]!=_0x3bd822[_0x924d('0x6')]){logger['info'](_0x924d('0x11'));}if(_0x5a77e8[_0x924d('0x6')]&&!_0x5a77e8[_0x924d('0xf')]&&_0x5a77e8[_0x924d('0x6')]==_0x3bd822['license']){return _0x1d5d0a;}return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':_0x3bd822['license']});}else{if(_0x3bd822['license']||_0x5a77e8[_0x924d('0x6')]){if(!_0x5a77e8[_0x924d('0xf')]){if(_0x5a77e8[_0x924d('0x13')]==_0x2e32bd){GRAY_PERIOD_REASON=_0x924d('0x14');logger[_0x924d('0x10')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x924d('0x15');logger[_0x924d('0x10')](_0x924d('0x16'),_0x5a77e8[_0x924d('0x13')],_0x2e32bd);}logger[_0x924d('0x10')](_0x924d('0x17'),GRAY_PERIOD_REASON[_0x924d('0x18')](),moment()[_0x924d('0x8')](_0x924d('0x19')));return _0x1d5d0a[_0x924d('0x12')]({'data2':encryptor[_0x924d('0x1a')](moment()[_0x924d('0x8')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x924d('0x1b')](encryptor[_0x924d('0x1c')](_0x5a77e8[_0x924d('0xf')]),_0x924d('0x1d'))>DAYS){logger[_0x924d('0x10')]('DEMO\x20START\x20AT\x20%s',moment()['format'](_0x924d('0x19')));isOldTokenSent=![];return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':null});}}}else{if(_0x5a77e8[_0x924d('0x13')]!=_0x2e32bd){logger[_0x924d('0x10')](_0x924d('0x16'),_0x5a77e8['data1'],_0x2e32bd);return _0x1d5d0a[_0x924d('0x12')]({'data1':_0x2e32bd,'data2':null,'license':null});}}}return _0x1d5d0a;})['then'](function(_0x1a7f69){_0x1d5d0a=_0x1a7f69;})[_0x924d('0x1e')](function(_0x477082){logger[_0x924d('0x1f')](_0x477082[_0x924d('0x20')]);})[_0x924d('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x1d5d0a);},TIME);});}function defaultLicense(){var _0x39df71=hardware['getUuid']();if(_0x39df71){return db[_0x924d('0x22')][_0x924d('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x39df71}})[_0x924d('0x24')](function(_0x3b4f0b,_0x74b44c){logger[_0x924d('0x10')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x39df71);manageLicense(_0x39df71,_0x3b4f0b);})[_0x924d('0x1e')](function(_0x494f38){logger['error'](_0x494f38[_0x924d('0x20')]);});}}exports[_0x924d('0x25')]=defaultLicense;
\ No newline at end of file
+var _0xa7d1=['data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','info','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','getUuid','License','spread','message','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','GET','then','catch','get','data1'];(function(_0xb2e670,_0x436e56){var _0x598b6b=function(_0x5ecdd8){while(--_0x5ecdd8){_0xb2e670['push'](_0xb2e670['shift']());}};_0x598b6b(++_0x436e56);}(_0xa7d1,0x1cd));var _0x1a7d=function(_0x6d6a66,_0x2924af){_0x6d6a66=_0x6d6a66-0x0;var _0x11eb6e=_0xa7d1[_0x6d6a66];return _0x11eb6e;};'use strict';var util=require(_0x1a7d('0x0'));var moment=require(_0x1a7d('0x1'));var rp=require(_0x1a7d('0x2'));var BPromise=require(_0x1a7d('0x3'));var pkginfo=require(_0x1a7d('0x4'))(module,_0x1a7d('0x5'));var db=require(_0x1a7d('0x6'))['db'];var encryptor=require(_0x1a7d('0x7'));var hardware=require(_0x1a7d('0x8'));var logger=require('../logger')(_0x1a7d('0x9'));var HOST=_0x1a7d('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0xdd421e){return new BPromise(function(_0x2a995f,_0x2a57a7){var _0x4d8615=util[_0x1a7d('0xb')](_0x1a7d('0xc'),HOST,_0xdd421e,module[_0x1a7d('0xd')]['version']);if(oldToken){_0x4d8615=util[_0x1a7d('0xb')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0xdd421e,module[_0x1a7d('0xd')][_0x1a7d('0x5')],oldToken);}var _0x517789={'uri':_0x4d8615,'method':_0x1a7d('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x517789)[_0x1a7d('0xf')](function(_0x268ef9){_0x2a995f(_0x268ef9);})[_0x1a7d('0x10')](function(_0x432bdc){_0x2a57a7(_0x432bdc);});});}function manageLicense(_0x52430f,_0x515d76){var _0x1b40cd=_0x515d76[_0x1a7d('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x1b40cd[_0x1a7d('0x12')]!==_0x52430f&&!_0x1b40cd[_0x1a7d('0x13')]){oldToken=_0x1b40cd[_0x1a7d('0x12')];}httpRequest(_0x52430f)['then'](function(_0x42b188){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x42b188['active']){isOldTokenSent=![];if(!_0x1b40cd[_0x1a7d('0x9')]&&_0x1b40cd[_0x1a7d('0x9')]!=_0x42b188[_0x1a7d('0x9')]||_0x1b40cd[_0x1a7d('0x9')]&&_0x1b40cd[_0x1a7d('0x13')]){logger['info'](_0x1a7d('0x14'));}if(_0x1b40cd[_0x1a7d('0x9')]&&!_0x1b40cd[_0x1a7d('0x13')]&&_0x1b40cd[_0x1a7d('0x9')]!=_0x42b188[_0x1a7d('0x9')]){logger['info'](_0x1a7d('0x15'));}if(_0x1b40cd[_0x1a7d('0x9')]&&!_0x1b40cd[_0x1a7d('0x13')]&&_0x1b40cd['license']==_0x42b188['license']){return _0x515d76;}return _0x515d76[_0x1a7d('0x16')]({'data1':_0x52430f,'data2':null,'license':_0x42b188[_0x1a7d('0x9')]});}else{if(_0x42b188[_0x1a7d('0x9')]||_0x1b40cd[_0x1a7d('0x9')]){if(!_0x1b40cd[_0x1a7d('0x13')]){if(_0x1b40cd[_0x1a7d('0x12')]==_0x52430f){GRAY_PERIOD_REASON=_0x1a7d('0x17');logger[_0x1a7d('0x18')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x1a7d('0x19');logger[_0x1a7d('0x18')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1b40cd['data1'],_0x52430f);}logger[_0x1a7d('0x18')](_0x1a7d('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x1a7d('0xb')](_0x1a7d('0x1b')));return _0x515d76[_0x1a7d('0x16')]({'data2':encryptor[_0x1a7d('0x1c')](moment()['format'](_0x1a7d('0x1b')))});}else{if(moment()[_0x1a7d('0x1d')](encryptor[_0x1a7d('0x1e')](_0x1b40cd[_0x1a7d('0x13')]),_0x1a7d('0x1f'))>DAYS){logger['info'](_0x1a7d('0x20'),moment()[_0x1a7d('0xb')](_0x1a7d('0x1b')));isOldTokenSent=![];return _0x515d76[_0x1a7d('0x16')]({'data1':_0x52430f,'data2':null,'license':null});}}}else{if(_0x1b40cd['data1']!=_0x52430f){logger[_0x1a7d('0x18')](_0x1a7d('0x21'),_0x1b40cd[_0x1a7d('0x12')],_0x52430f);return _0x515d76['update']({'data1':_0x52430f,'data2':null,'license':null});}}}return _0x515d76;})[_0x1a7d('0xf')](function(_0x38ec1f){_0x515d76=_0x38ec1f;})['catch'](function(_0x318c0c){logger[_0x1a7d('0x22')](_0x318c0c['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware[_0x1a7d('0x23')](),_0x515d76);},TIME);});}function defaultLicense(){var _0x340c2f=hardware[_0x1a7d('0x23')]();if(_0x340c2f){return db[_0x1a7d('0x24')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x340c2f}})[_0x1a7d('0x25')](function(_0x4e2a66,_0x14d8e7){logger[_0x1a7d('0x18')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x340c2f);manageLicense(_0x340c2f,_0x4e2a66);})[_0x1a7d('0x10')](function(_0x402b4f){logger['error'](_0x402b4f[_0x1a7d('0x26')]);});}}exports[_0x1a7d('0x27')]=defaultLicense;
\ No newline at end of file
index eca3f37..054395e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e01=['message','User','findAll','role','sequelize','COUNT','col','count','telephone','users','forEach','admin','user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','util','moment','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Breaking\x20license','getUuid','find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','days','grayReason','changed','disabled'];(function(_0x594725,_0x2b7ded){var _0x1110d6=function(_0x4a337f){while(--_0x4a337f){_0x594725['push'](_0x594725['shift']());}};_0x1110d6(++_0x2b7ded);}(_0x4e01,0x1c7));var _0x14e0=function(_0x3cee7b,_0x1b403e){_0x3cee7b=_0x3cee7b-0x0;var _0x5bcb71=_0x4e01[_0x3cee7b];return _0x5bcb71;};'use strict';var util=require(_0x14e0('0x0'));var _=require('lodash');var moment=require(_0x14e0('0x1'));var BPromise=require(_0x14e0('0x2'));var hardware=require(_0x14e0('0x3'));var encryptor=require(_0x14e0('0x4'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x14e0('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x14e0('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x14e0('0x6'),'machineUuid':hardware[_0x14e0('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x33c581){return new BPromise(function(_0x19bd1f,_0x10589d){return db['License'][_0x14e0('0x8')](_[_0x14e0('0x9')](_0x33c581,{'raw':!![],'where':{'id':0x1}}))[_0x14e0('0xa')](function(_0x366fea){return checkLicense(_0x366fea,null);})[_0x14e0('0xa')](function(_0x1a4b5b){_0x19bd1f(_0x1a4b5b);return;})[_0x14e0('0xb')](function(_0x7c3be4){_0x10589d(_0x7c3be4);});});}function checkLicense(_0x1578fc,_0x28e70e){if(!_0x1578fc){demoLicense[_0x14e0('0xc')]=_0x1578fc[_0x14e0('0xd')];return demoLicense;}try{var _0x2f57fc=_0x28e70e||_0x1578fc[_0x14e0('0xe')];if(_[_0x14e0('0xf')](_0x2f57fc)){throw new Error(_0x14e0('0x10'));}var _0x279cba=_0x1578fc[_0x14e0('0xd')];var _0x5d16a0=_0x1578fc[_0x14e0('0x11')];var _0x5bc85d=_0x279cba[_0x14e0('0x12')]('-')[0x4];var _0x35c603=_0x279cba[_0x14e0('0x12')]('-')[0x0];var _0x17717c=encryptor['decryptString'](_0x2f57fc,util[_0x14e0('0x13')](_0x14e0('0x14'),_0x5bc85d,_0x279cba,_0x35c603));var _0x16ff81=JSON[_0x14e0('0x15')](_0x17717c);_0x16ff81[_0x14e0('0x16')]=![];_0x16ff81[_0x14e0('0xc')]=_0x279cba;_0x16ff81[_0x14e0('0x17')]=hardware[_0x14e0('0x7')]();if(_0x5d16a0){var _0x1fcfe9=encryptor[_0x14e0('0x18')](_0x5d16a0);_0x16ff81['gray']=_0x1fcfe9;_0x16ff81['deadline']=moment(_0x1fcfe9)['add'](0x7,_0x14e0('0x19'))['format']();_0x16ff81[_0x14e0('0x1a')]=_0x16ff81['uuid']!=_0x16ff81[_0x14e0('0x17')]?_0x14e0('0x1b'):_0x14e0('0x1c');}return _0x16ff81;}catch(_0x5c14dd){breakingLicense[_0x14e0('0xc')]=_0x1578fc[_0x14e0('0xd')];breakingLicense[_0x14e0('0x1d')]=_0x5c14dd[_0x14e0('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x332e67,_0x5be57b){getLicense()[_0x14e0('0xa')](function(_0x544cd0){return db[_0x14e0('0x1e')][_0x14e0('0x1f')]({'attributes':[_0x14e0('0x20'),[db[_0x14e0('0x21')]['fn'](_0x14e0('0x22'),db[_0x14e0('0x21')][_0x14e0('0x23')]('role')),_0x14e0('0x24')]],'group':_0x14e0('0x20'),'where':{'role':{'$or':['admin','user',_0x14e0('0x25')]}},'raw':!![]})[_0x14e0('0xa')](function(_0x43bda0){var _0x3c891a={'user':_0x544cd0[_0x14e0('0x26')]||0x0,'telephone':_0x544cd0['telephones']||0x0};_0x43bda0[_0x14e0('0x27')](function(_0x5da91c){var _0x48933b=_0x5da91c[_0x14e0('0x20')]===_0x14e0('0x28')?_0x14e0('0x29'):_0x5da91c[_0x14e0('0x20')];_0x3c891a[_0x48933b]-=_0x5da91c['count'];if(_0x3c891a[_0x48933b]<0x0)_0x3c891a[_0x48933b]=0x0;});_0x332e67(_0x3c891a);return;});})[_0x14e0('0xb')](function(_0x2fed0e){_0x5be57b(_0x2fed0e);});});}function checkUserLimits(_0x1c1989){return new BPromise(function(_0x5d5214,_0x4bab95){getLimits()['then'](function(_0x41b0ae){var _0x5b3b8e=_['pick'](_['countBy'](_0x1c1989,_0x14e0('0x20')),[_0x14e0('0x28'),_0x14e0('0x29'),_0x14e0('0x25')]);var _0x405bc3=(_0x5b3b8e['admin']||0x0)+(_0x5b3b8e[_0x14e0('0x29')]||0x0);var _0x225f11=_0x5b3b8e[_0x14e0('0x25')]||0x0;if(_0x405bc3>_0x41b0ae[_0x14e0('0x29')])return _0x4bab95(_0x14e0('0x2a'));if(_0x225f11>_0x41b0ae[_0x14e0('0x25')])return _0x4bab95(_0x14e0('0x2b'));return _0x5d5214();})[_0x14e0('0xb')](function(_0x49fc10){_0x4bab95(_0x49fc10);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xd178=['changed','disabled','message','User','findAll','COUNT','sequelize','col','count','role','admin','user','telephone','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','lodash','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','defaults','then','catch','data1','License\x20key\x20value\x20not\x20found','data2','split','%s:%s:%s','parse','demo','machineUuid','decryptString','gray','add','days','format','grayReason','uuid'];(function(_0xd275f4,_0x415f06){var _0x53610e=function(_0x41a6b5){while(--_0x41a6b5){_0xd275f4['push'](_0xd275f4['shift']());}};_0x53610e(++_0x415f06);}(_0xd178,0xf2));var _0x8d17=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xd178[_0x49ca18];return _0x145d54;};'use strict';var util=require('util');var _=require(_0x8d17('0x0'));var moment=require('moment');var BPromise=require(_0x8d17('0x1'));var hardware=require(_0x8d17('0x2'));var encryptor=require(_0x8d17('0x3'));var db=require(_0x8d17('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8d17('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x8d17('0x6'),'machineUuid':hardware[_0x8d17('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x8d17('0x8'),'machineUuid':hardware[_0x8d17('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x467004){return new BPromise(function(_0x2b202e,_0x10bc5d){return db[_0x8d17('0x9')]['find'](_[_0x8d17('0xa')](_0x467004,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x4cca71){return checkLicense(_0x4cca71,null);})[_0x8d17('0xb')](function(_0x469778){_0x2b202e(_0x469778);return;})[_0x8d17('0xc')](function(_0x302290){_0x10bc5d(_0x302290);});});}function checkLicense(_0x214c7b,_0x419e6c){if(!_0x214c7b){demoLicense['uuid']=_0x214c7b[_0x8d17('0xd')];return demoLicense;}try{var _0x4843d0=_0x419e6c||_0x214c7b['license'];if(_['isEmpty'](_0x4843d0)){throw new Error(_0x8d17('0xe'));}var _0x1fa995=_0x214c7b['data1'];var _0x37820e=_0x214c7b[_0x8d17('0xf')];var _0x51f13b=_0x1fa995[_0x8d17('0x10')]('-')[0x4];var _0x256cd3=_0x1fa995['split']('-')[0x0];var _0x12a493=encryptor['decryptString'](_0x4843d0,util['format'](_0x8d17('0x11'),_0x51f13b,_0x1fa995,_0x256cd3));var _0x49828d=JSON[_0x8d17('0x12')](_0x12a493);_0x49828d[_0x8d17('0x13')]=![];_0x49828d['uuid']=_0x1fa995;_0x49828d[_0x8d17('0x14')]=hardware['getUuid']();if(_0x37820e){var _0x295123=encryptor[_0x8d17('0x15')](_0x37820e);_0x49828d[_0x8d17('0x16')]=_0x295123;_0x49828d['deadline']=moment(_0x295123)[_0x8d17('0x17')](0x7,_0x8d17('0x18'))[_0x8d17('0x19')]();_0x49828d[_0x8d17('0x1a')]=_0x49828d[_0x8d17('0x1b')]!=_0x49828d[_0x8d17('0x14')]?_0x8d17('0x1c'):_0x8d17('0x1d');}return _0x49828d;}catch(_0x29d674){breakingLicense['uuid']=_0x214c7b['data1'];breakingLicense['message']=_0x29d674[_0x8d17('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x145bad,_0x481d81){getLicense()[_0x8d17('0xb')](function(_0x2bda83){return db[_0x8d17('0x1f')][_0x8d17('0x20')]({'attributes':['role',[db['sequelize']['fn'](_0x8d17('0x21'),db[_0x8d17('0x22')][_0x8d17('0x23')]('role')),_0x8d17('0x24')]],'group':_0x8d17('0x25'),'where':{'role':{'$or':[_0x8d17('0x26'),_0x8d17('0x27'),_0x8d17('0x28')]}},'raw':!![]})['then'](function(_0x54309c){var _0x4f5892={'user':_0x2bda83['users']||0x0,'telephone':_0x2bda83['telephones']||0x0};_0x54309c['forEach'](function(_0x552a8d){var _0x5c8e44=_0x552a8d[_0x8d17('0x25')]===_0x8d17('0x26')?_0x8d17('0x27'):_0x552a8d[_0x8d17('0x25')];_0x4f5892[_0x5c8e44]-=_0x552a8d[_0x8d17('0x24')];if(_0x4f5892[_0x5c8e44]<0x0)_0x4f5892[_0x5c8e44]=0x0;});_0x145bad(_0x4f5892);return;});})['catch'](function(_0x346ae2){_0x481d81(_0x346ae2);});});}function checkUserLimits(_0x39638e){return new BPromise(function(_0x47523c,_0x249a0a){getLimits()[_0x8d17('0xb')](function(_0x17fdc9){var _0x3bc5ca=_[_0x8d17('0x29')](_[_0x8d17('0x2a')](_0x39638e,'role'),[_0x8d17('0x26'),_0x8d17('0x27'),_0x8d17('0x28')]);var _0x29f3d3=(_0x3bc5ca[_0x8d17('0x26')]||0x0)+(_0x3bc5ca[_0x8d17('0x27')]||0x0);var _0x503b8d=_0x3bc5ca['telephone']||0x0;if(_0x29f3d3>_0x17fdc9[_0x8d17('0x27')])return _0x249a0a(_0x8d17('0x2b'));if(_0x503b8d>_0x17fdc9['telephone'])return _0x249a0a(_0x8d17('0x2c'));return _0x47523c();})['catch'](function(_0x939b5e){_0x249a0a(_0x939b5e);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index ca2ba12..d708c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['http://localhost:9000','app-id','secret','exports'];(function(_0x1ca9eb,_0x99a10b){var _0x2e284e=function(_0x1196a4){while(--_0x1196a4){_0x1ca9eb['push'](_0x1ca9eb['shift']());}};_0x2e284e(++_0x99a10b);}(_0x5204,0xdf));var _0x4520=function(_0x474c66,_0xbce925){_0x474c66=_0x474c66-0x0;var _0xcbd9bf=_0x5204[_0x474c66];return _0xcbd9bf;};'use strict';module[_0x4520('0x0')]={'DOMAIN':_0x4520('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x4520('0x2'),'GOOGLE_SECRET':_0x4520('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x1893=['myappanuglar-secret','app-id','secret'];(function(_0x44d2a8,_0x337c45){var _0x53b4bf=function(_0x2b872b){while(--_0x2b872b){_0x44d2a8['push'](_0x44d2a8['shift']());}};_0x53b4bf(++_0x337c45);}(_0x1893,0xa2));var _0x3189=function(_0x8e3507,_0x7c734c){_0x8e3507=_0x8e3507-0x0;var _0x48c52b=_0x1893[_0x8e3507];return _0x48c52b;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x3189('0x0'),'GOOGLE_ID':_0x3189('0x1'),'GOOGLE_SECRET':_0x3189('0x2'),'DEBUG':''};
\ No newline at end of file
index 7001b0b..0c03606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e34=['exports','fileLogger'];(function(_0x55c1f0,_0x4f574f){var _0x1530fa=function(_0x631542){while(--_0x631542){_0x55c1f0['push'](_0x55c1f0['shift']());}};_0x1530fa(++_0x4f574f);}(_0x2e34,0x19d));var _0x42e3=function(_0x25afc5,_0x27cf79){_0x25afc5=_0x25afc5-0x0;var _0x5e58b6=_0x2e34[_0x25afc5];return _0x5e58b6;};'use strict';var fileLogger=require('../utils/loggers')[_0x42e3('0x0')];module[_0x42e3('0x1')]=fileLogger;
\ No newline at end of file
+var _0xaaf2=['fileLogger','../utils/loggers'];(function(_0x76ea4a,_0x24a09d){var _0x5484b2=function(_0x599e13){while(--_0x599e13){_0x76ea4a['push'](_0x76ea4a['shift']());}};_0x5484b2(++_0x24a09d);}(_0xaaf2,0x1d7));var _0x2aaf=function(_0x2b252c,_0x2ad9e6){_0x2b252c=_0x2b252c-0x0;var _0x15b554=_0xaaf2[_0x2b252c];return _0x15b554;};'use strict';var fileLogger=require(_0x2aaf('0x0'))[_0x2aaf('0x1')];module['exports']=fileLogger;
\ No newline at end of file
index 7ef1356..e61d173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc96=['email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js','../../services/agi/index.js'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdc96,0x125));var _0x6dc9=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xdc96[_0x5f309e];return _0x487b5e;};'use strict';var path=require(_0x6dc9('0x0'));var os=require('os');var config={'apps':[{'name':_0x6dc9('0x1'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x3'))},{'name':_0x6dc9('0x4'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x5'))},{'name':'agi','script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0x6'))},{'name':_0x6dc9('0x7'),'script':path[_0x6dc9('0x2')](__dirname,'../../services/email/index.js')},{'name':_0x6dc9('0x8'),'script':path['join'](__dirname,_0x6dc9('0x9'))},{'name':_0x6dc9('0xa'),'script':path[_0x6dc9('0x2')](__dirname,_0x6dc9('0xb'))}]};module['exports']=config;
\ No newline at end of file
+var _0xdb42=['express','join','agi','../../services/agi/index.js','email','../../services/email/index.js','../../services/routing/index.js','xdr','../../services/xdr/index.js','path'];(function(_0x1fa5dd,_0x22aa62){var _0x29caa8=function(_0x515374){while(--_0x515374){_0x1fa5dd['push'](_0x1fa5dd['shift']());}};_0x29caa8(++_0x22aa62);}(_0xdb42,0x1d5));var _0x2db4=function(_0x489028,_0xe88f37){_0x489028=_0x489028-0x0;var _0x7357e=_0xdb42[_0x489028];return _0x7357e;};'use strict';var path=require(_0x2db4('0x0'));var os=require('os');var config={'apps':[{'name':_0x2db4('0x1'),'script':path[_0x2db4('0x2')](__dirname,'../../services/express/index.js')},{'name':'ami','script':path[_0x2db4('0x2')](__dirname,'../../services/ami/index.js')},{'name':_0x2db4('0x3'),'script':path[_0x2db4('0x2')](__dirname,_0x2db4('0x4'))},{'name':_0x2db4('0x5'),'script':path[_0x2db4('0x2')](__dirname,_0x2db4('0x6'))},{'name':'routing','script':path['join'](__dirname,_0x2db4('0x7'))},{'name':_0x2db4('0x8'),'script':path['join'](__dirname,_0x2db4('0x9'))}]};module['exports']=config;
\ No newline at end of file
index 0c64c18..4731355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc330=['list','describe','delete','dump','saved','pm2','./config','connect','connected','start','then','stop','disconnect','restart'];(function(_0x185f2e,_0x5be869){var _0x31f111=function(_0x1c8f82){while(--_0x1c8f82){_0x185f2e['push'](_0x185f2e['shift']());}};_0x31f111(++_0x5be869);}(_0xc330,0x19b));var _0x0c33=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xc330[_0x5bd426];return _0x23a7eb;};'use strict';var pm2=require(_0x0c33('0x0'));var BPromise=require('bluebird');var config=require(_0x0c33('0x1'));function connect(){return new BPromise(function(_0x2211f7,_0x94ec8e){return pm2[_0x0c33('0x2')](function(_0x5b0db3){if(_0x5b0db3){return _0x94ec8e(_0x5b0db3);}return _0x2211f7(_0x0c33('0x3'));});});};exports[_0x0c33('0x4')]=function(_0x5f4e61){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x1a822c,_0x20c377){return pm2[_0x0c33('0x4')](_0x5f4e61,function(_0x32943d,_0x26fad5){if(_0x32943d){return _0x20c377(_0x32943d);}pm2['disconnect']();return _0x1a822c(_0x26fad5);});});});};exports[_0x0c33('0x6')]=function(_0x2a03dd){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x571cef,_0x7adcb1){return pm2[_0x0c33('0x6')](_0x2a03dd,function(_0x4ef247,_0x1aad01){if(_0x4ef247){return _0x7adcb1(_0x4ef247);}pm2[_0x0c33('0x7')]();return _0x571cef(_0x1aad01);});});});};exports[_0x0c33('0x8')]=function(_0x5bb4af){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x1adf58,_0x588387){return pm2[_0x0c33('0x8')](_0x5bb4af,function(_0x5bbdce,_0x51421e){if(_0x5bbdce){return _0x588387(_0x5bbdce);}pm2[_0x0c33('0x7')]();return _0x1adf58(_0x51421e);});});});};exports[_0x0c33('0x9')]=function(){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x3be806,_0x54965e){return pm2[_0x0c33('0x9')](function(_0x502cff,_0x2106a8){if(_0x502cff){return _0x54965e(_0x502cff);}pm2['disconnect']();return _0x3be806(_0x2106a8);});});});};exports[_0x0c33('0xa')]=function(_0x311b47){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x53aa9f,_0x1882f0){return pm2[_0x0c33('0xa')](_0x311b47,function(_0x2be702,_0x3bcd95){if(_0x2be702){return _0x1882f0(_0x2be702);}pm2['disconnect']();return _0x53aa9f(_0x3bcd95);});});});};exports[_0x0c33('0xb')]=function(_0x544a5d){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x397c23,_0x2a35ac){return pm2['delete'](_0x544a5d,function(_0x55d56c,_0x53b281){if(_0x55d56c){return _0x2a35ac(_0x55d56c);}pm2[_0x0c33('0x7')]();return _0x397c23(_0x53b281);});});});};exports[_0x0c33('0xc')]=function(){return connect()[_0x0c33('0x5')](function(){return new BPromise(function(_0x551d15,_0x195db5){return pm2['dump'](function(_0x1585af){if(_0x1585af){return _0x195db5(_0x1585af);}return _0x551d15(_0x0c33('0xd'));});});});};
\ No newline at end of file
+var _0x414d=['bluebird','./config','connect','connected','start','then','disconnect','stop','restart','list','describe','delete','dump','saved'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x414d,0x126));var _0xd414=function(_0x277a8d,_0x8f4900){_0x277a8d=_0x277a8d-0x0;var _0x3e1793=_0x414d[_0x277a8d];return _0x3e1793;};'use strict';var pm2=require('pm2');var BPromise=require(_0xd414('0x0'));var config=require(_0xd414('0x1'));function connect(){return new BPromise(function(_0x5dadb3,_0x376933){return pm2[_0xd414('0x2')](function(_0x343a3c){if(_0x343a3c){return _0x376933(_0x343a3c);}return _0x5dadb3(_0xd414('0x3'));});});};exports[_0xd414('0x4')]=function(_0x29bec1){return connect()[_0xd414('0x5')](function(){return new BPromise(function(_0x5e3fef,_0x5379b0){return pm2[_0xd414('0x4')](_0x29bec1,function(_0x2ab772,_0x471cef){if(_0x2ab772){return _0x5379b0(_0x2ab772);}pm2[_0xd414('0x6')]();return _0x5e3fef(_0x471cef);});});});};exports['stop']=function(_0x3361da){return connect()['then'](function(){return new BPromise(function(_0x4003c8,_0x3b7999){return pm2[_0xd414('0x7')](_0x3361da,function(_0x28a701,_0x589af1){if(_0x28a701){return _0x3b7999(_0x28a701);}pm2[_0xd414('0x6')]();return _0x4003c8(_0x589af1);});});});};exports[_0xd414('0x8')]=function(_0x4dd605){return connect()[_0xd414('0x5')](function(){return new BPromise(function(_0x306774,_0x577ed7){return pm2[_0xd414('0x8')](_0x4dd605,function(_0x41acfd,_0x4b2e44){if(_0x41acfd){return _0x577ed7(_0x41acfd);}pm2[_0xd414('0x6')]();return _0x306774(_0x4b2e44);});});});};exports[_0xd414('0x9')]=function(){return connect()[_0xd414('0x5')](function(){return new BPromise(function(_0x46036d,_0x33e759){return pm2['list'](function(_0x21f41b,_0x332fdc){if(_0x21f41b){return _0x33e759(_0x21f41b);}pm2[_0xd414('0x6')]();return _0x46036d(_0x332fdc);});});});};exports[_0xd414('0xa')]=function(_0x21830e){return connect()[_0xd414('0x5')](function(){return new BPromise(function(_0x418d1f,_0x16f41e){return pm2[_0xd414('0xa')](_0x21830e,function(_0x4f8daa,_0x140de6){if(_0x4f8daa){return _0x16f41e(_0x4f8daa);}pm2['disconnect']();return _0x418d1f(_0x140de6);});});});};exports[_0xd414('0xb')]=function(_0x4ea3b0){return connect()['then'](function(){return new BPromise(function(_0x290e99,_0x5ee21c){return pm2[_0xd414('0xb')](_0x4ea3b0,function(_0xef3e57,_0x256ed9){if(_0xef3e57){return _0x5ee21c(_0xef3e57);}pm2[_0xd414('0x6')]();return _0x290e99(_0x256ed9);});});});};exports[_0xd414('0xc')]=function(){return connect()[_0xd414('0x5')](function(){return new BPromise(function(_0xa9f696,_0x380f67){return pm2[_0xd414('0xc')](function(_0x69c15e){if(_0x69c15e){return _0x380f67(_0x69c15e);}return _0xa9f696(_0xd414('0xd'));});});});};
\ No newline at end of file
index 46ed3b5..4ff2a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2dc=['join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','findAll','info','[CHAT]\x20Interactions\x20to\x20close:'];(function(_0x3c0081,_0x7b86f7){var _0x12d697=function(_0x5e62ed){while(--_0x5e62ed){_0x3c0081['push'](_0x3c0081['shift']());}};_0x12d697(++_0x7b86f7);}(_0xf2dc,0x83));var _0xcf2d=function(_0xa4a2d5,_0x4f2ab8){_0xa4a2d5=_0xa4a2d5-0x0;var _0x555467=_0xf2dc[_0xa4a2d5];return _0x555467;};'use strict';var _=require(_0xcf2d('0x0'));var moment=require(_0xcf2d('0x1'));var Redis=require(_0xcf2d('0x2'));var util=require(_0xcf2d('0x3'));var config=require(_0xcf2d('0x4'));var db=require(_0xcf2d('0x5'))['db'];var logger=require(_0xcf2d('0x6'))(_0xcf2d('0x7'));config[_0xcf2d('0x8')]=_[_0xcf2d('0x9')](config[_0xcf2d('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xcf2d('0xa'))(new Redis(config[_0xcf2d('0x8')]));function closeInteractions(){var _0x42fc4d=0x0;var _0x375127=[];return db[_0xcf2d('0xb')][_0xcf2d('0xc')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xcf2d('0xd')](function(_0xb6a46d){_0x42fc4d=_0xb6a46d[_0xcf2d('0xe')];if(_0x42fc4d){return db[_0xcf2d('0xf')][_0xcf2d('0x10')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0xb6a46d[_0xcf2d('0xe')],'minutes')}}});}else{return[];}})[_0xcf2d('0xd')](function(_0x3b466d){if(_0x3b466d&&_0x3b466d['length']){_0x375127=_['map'](_0x3b466d||[],'id');logger[_0xcf2d('0x11')](_0xcf2d('0x12'),_0x375127[_0xcf2d('0x13')]());return db[_0xcf2d('0xf')][_0xcf2d('0x14')]({'closeReason':'system','disposition':_0xcf2d('0x15'),'closed':!![],'closedAt':moment()[_0xcf2d('0x16')](_0xcf2d('0x17'))},{'where':{'id':_0x375127}});}})[_0xcf2d('0xd')](function(){if(_0x375127&&_0x375127[_0xcf2d('0x18')]){logger[_0xcf2d('0x11')](_0xcf2d('0x19'),_0x375127[_0xcf2d('0x13')]());for(var _0x5ca5e6=0x0;_0x5ca5e6<_0x375127['length'];_0x5ca5e6++){io['emit'](_0xcf2d('0x1a'),{'id':_0x375127[_0x5ca5e6],'closed':!![]});}}})['catch'](function(_0x45260e){logger[_0xcf2d('0x1b')](_0xcf2d('0x1c'),_0x45260e?util[_0xcf2d('0x1d')](_0x45260e,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xff1f=['subtract','minutes','length','map','[CHAT]\x20Interactions\x20to\x20close:','update','system','format','YYYY-MM-DD\x20HH:mm:ss','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','catch','error','inspect','lodash','moment','ioredis','../../config/environment','../../mysqldb','schedule','redis','localhost','Setting','find','chatTimeout','then','ChatInteraction','lastMsgAt'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xff1f,0x109));var _0xfff1=function(_0x38c632,_0x14e8e6){_0x38c632=_0x38c632-0x0;var _0x12737e=_0xff1f[_0x38c632];return _0x12737e;};'use strict';var _=require(_0xfff1('0x0'));var moment=require(_0xfff1('0x1'));var Redis=require(_0xfff1('0x2'));var util=require('util');var config=require(_0xfff1('0x3'));var db=require(_0xfff1('0x4'))['db'];var logger=require('../logger')(_0xfff1('0x5'));config[_0xfff1('0x6')]=_['defaults'](config[_0xfff1('0x6')],{'host':_0xfff1('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x48ce74=0x0;var _0x14ebf4=[];return db[_0xfff1('0x8')][_0xfff1('0x9')]({'raw':!![],'attributes':['id',_0xfff1('0xa')],'where':{'id':0x1}})[_0xfff1('0xb')](function(_0x4c6a36){_0x48ce74=_0x4c6a36[_0xfff1('0xa')];if(_0x48ce74){return db[_0xfff1('0xc')]['findAll']({'raw':!![],'attributes':['id',_0xfff1('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xfff1('0xe')](_0x4c6a36[_0xfff1('0xa')],_0xfff1('0xf'))}}});}else{return[];}})[_0xfff1('0xb')](function(_0x3fa465){if(_0x3fa465&&_0x3fa465[_0xfff1('0x10')]){_0x14ebf4=_[_0xfff1('0x11')](_0x3fa465||[],'id');logger['info'](_0xfff1('0x12'),_0x14ebf4['join']());return db[_0xfff1('0xc')][_0xfff1('0x13')]({'closeReason':_0xfff1('0x14'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xfff1('0x15')](_0xfff1('0x16'))},{'where':{'id':_0x14ebf4}});}})[_0xfff1('0xb')](function(){if(_0x14ebf4&&_0x14ebf4[_0xfff1('0x10')]){logger[_0xfff1('0x17')](_0xfff1('0x18'),_0x14ebf4[_0xfff1('0x19')]());for(var _0x556872=0x0;_0x556872<_0x14ebf4['length'];_0x556872++){io[_0xfff1('0x1a')](_0xfff1('0x1b'),{'id':_0x14ebf4[_0x556872],'closed':!![]});}}})[_0xfff1('0x1c')](function(_0x138d90){logger[_0xfff1('0x1d')]('[CHAT]\x20Error\x20closing\x20interactions',_0x138d90?util[_0xfff1('0x1e')](_0x138d90,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 76dd9cb..84548e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2475=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x50e0c5,_0x49351f){var _0x11d623=function(_0x1d8a43){while(--_0x1d8a43){_0x50e0c5['push'](_0x50e0c5['shift']());}};_0x11d623(++_0x49351f);}(_0x2475,0x186));var _0x5247=function(_0x3cb2db,_0x42de60){_0x3cb2db=_0x3cb2db-0x0;var _0x20cb33=_0x2475[_0x3cb2db];return _0x20cb33;};'use strict';function start(){var _0x28f243=require(_0x5247('0x0'));return _0x28f243[_0x5247('0x1')]();}module[_0x5247('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x9f46=['startAllRefreshIntervals','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x348c28,_0x2f0636){var _0x365416=function(_0x495676){while(--_0x495676){_0x348c28['push'](_0x348c28['shift']());}};_0x365416(++_0x2f0636);}(_0x9f46,0x167));var _0x69f4=function(_0x239c58,_0xc6cc17){_0x239c58=_0x239c58-0x0;var _0x5afee3=_0x9f46[_0x239c58];return _0x5afee3;};'use strict';function start(){var _0x3ea415=require(_0x69f4('0x0'));return _0x3ea415[_0x69f4('0x1')]();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
index cc87709..6f63b6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f1b=['existsSync','status','Sent','attachments','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','email\x20sent','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','Schedule','findAll','MailServerOut','CloudProvider','map','toString','difference','intersection','length','stop','deleteJob','toRun','index','resolve','run\x20job','cron','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','exists','active','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','format','MailAccount','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','%s.%s','savename','zip'];(function(_0x525bcf,_0x428c0c){var _0x4c3486=function(_0xf87f2){while(--_0xf87f2){_0x525bcf['push'](_0x525bcf['shift']());}};_0x4c3486(++_0x428c0c);}(_0x3f1b,0x84));var _0xb3f1=function(_0x3ba378,_0x5296db){_0x3ba378=_0x3ba378-0x0;var _0x1d6d05=_0x3f1b[_0x3ba378];return _0x1d6d05;};'use strict';var fs=require('fs');var util=require(_0xb3f1('0x0'));var path=require(_0xb3f1('0x1'));var _=require(_0xb3f1('0x2'));var moment=require(_0xb3f1('0x3'));var CronJobManager=require(_0xb3f1('0x4'));var jayson=require(_0xb3f1('0x5'));var BPromise=require(_0xb3f1('0x6'));var logger=require('../logger')('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xb3f1('0x7'));var analyticDefaultReportController=require(_0xb3f1('0x8'));var client=jayson[_0xb3f1('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x37963a,_0x50124e){return function(){logger[_0xb3f1('0xa')](_0xb3f1('0xb'),_0x37963a[_0xb3f1('0xc')]);var _0x3ada43=!![];var _0x4f6d5a=_0x37963a['MailAccount']['getSmtpOptions']();var _0x3b0043={'account':_0x4f6d5a,'message':{'from':util[_0xb3f1('0xd')]('\x22%s\x22\x20<%s>',_0x37963a[_0xb3f1('0xe')][_0xb3f1('0xf')],_0x37963a[_0xb3f1('0xe')][_0xb3f1('0xc')]||_0x37963a['MailAccount']['Smtp'][_0xb3f1('0x10')]),'to':_0x37963a['email'],'cc':_0x37963a['cc'],'bcc':_0x37963a[_0xb3f1('0x11')],'subject':util[_0xb3f1('0xd')](_0xb3f1('0x12'),_0x50124e[_0xb3f1('0xf')],_0x37963a[_0xb3f1('0x13')],_0x37963a['subtractUnit'])}};var _0x558714=path[_0xb3f1('0x14')](__dirname,'../../files/reports');var _0x1fda4c=_0x50124e['savename'];var _0x30197e=util[_0xb3f1('0xd')](_0xb3f1('0x15'),path['basename'](_0x50124e[_0xb3f1('0x16')],path['extname'](_0x50124e[_0xb3f1('0x16')])),_0xb3f1('0x17'));var _0x3f8331=path[_0xb3f1('0x14')](_0x558714,_0x1fda4c);var _0x5b6c64=path[_0xb3f1('0x14')](_0x558714,_0x30197e);if(fs[_0xb3f1('0x18')](_0x3f8331)){_0x50124e[_0xb3f1('0x19')]=_0xb3f1('0x1a');_0x3b0043['message'][_0xb3f1('0x1b')]=[{'filename':_0x1fda4c,'path':_0x3f8331}];_0x3b0043[_0xb3f1('0x1c')][_0xb3f1('0x1d')]=util[_0xb3f1('0xd')](_0xb3f1('0x1e'),JSON[_0xb3f1('0x1f')](_0x50124e,null,0x2));}else if(fs[_0xb3f1('0x18')](_0x5b6c64)){_0x50124e[_0xb3f1('0x19')]='Sent';_0x3b0043[_0xb3f1('0x1c')][_0xb3f1('0x1b')]=[{'filename':_0x30197e,'path':_0x5b6c64}];}else{_0x3b0043[_0xb3f1('0x1c')]['text']=_0xb3f1('0x20');if(!_0x37963a[_0xb3f1('0x21')]){_0x3ada43=![];logger[_0xb3f1('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x3ada43){return client[_0xb3f1('0x22')](_0xb3f1('0x23'),_0x3b0043)[_0xb3f1('0x24')](function(_0x2ec15f){if(_0x2ec15f[_0xb3f1('0x25')]){return logger[_0xb3f1('0x25')](_0xb3f1('0x26'),JSON[_0xb3f1('0x1f')](_0x2ec15f));}return logger[_0xb3f1('0xa')](_0xb3f1('0x27'));})['catch'](function(_0x263137){return logger['error']('error\x20mail',JSON[_0xb3f1('0x1f')](_0x263137));});}};}function handleError(){return function(_0x46bcdb){return logger['error'](JSON[_0xb3f1('0x1f')](_0x46bcdb));};}function handleResult(_0x54cf2f){return function(_0x277dfa){logger[_0xb3f1('0xa')]('data',JSON[_0xb3f1('0x1f')](_0x277dfa));if(_0x54cf2f[_0xb3f1('0xe')]&&_0x54cf2f[_0xb3f1('0xe')]['Smtp']&&!_[_0xb3f1('0x28')](_0x54cf2f[_0xb3f1('0xc')])){setTimeout(handleSendEmail(_0x54cf2f,_0x277dfa),0x3c*0x3e8);}};}function handleJob(_0x3c4c35){return function(){try{if(_['isNil'](_0x3c4c35[_0xb3f1('0x13')])){return logger[_0xb3f1('0xa')](_0xb3f1('0x29'));}if(_[_0xb3f1('0x28')](_0x3c4c35[_0xb3f1('0x2a')])){return logger[_0xb3f1('0xa')](_0xb3f1('0x2b'));}var _0xbc1ff8={'startDate':moment()[_0xb3f1('0x2c')](_0x3c4c35['subtractNumber'],_0x3c4c35[_0xb3f1('0x2a')])[_0xb3f1('0xd')](_0xb3f1('0x2d')),'endDate':moment()[_0xb3f1('0xd')](_0xb3f1('0x2d')),'type':'scheduled','output':_0x3c4c35[_0xb3f1('0x2e')],'name':_0x3c4c35['name']};if(!_[_0xb3f1('0x28')](_0x3c4c35[_0xb3f1('0x2f')])){logger[_0xb3f1('0xa')](_0xb3f1('0x30'),_0x3c4c35[_0xb3f1('0x2f')]);return analyticDefaultReportController[_0xb3f1('0x31')]({'id':_0x3c4c35[_0xb3f1('0x2f')]},_0xbc1ff8)[_0xb3f1('0x24')](handleResult(_0x3c4c35))[_0xb3f1('0x32')](handleError());}if(!_[_0xb3f1('0x28')](_0x3c4c35['CustomReportId'])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x3c4c35[_0xb3f1('0x33')]);return analyticCustomReportController[_0xb3f1('0x31')]({'id':_0x3c4c35[_0xb3f1('0x33')]},_0xbc1ff8)[_0xb3f1('0x24')](handleResult(_0x3c4c35))['catch'](handleError());}}catch(_0x22596a){logger[_0xb3f1('0x25')](JSON[_0xb3f1('0x1f')](_0x22596a));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x50f2e4){var _0x7c2119={};if(_0x50f2e4){_0x7c2119['id']=_0x50f2e4;}return db[_0xb3f1('0x34')][_0xb3f1('0x35')]({'where':_0x7c2119,'include':[{'model':db[_0xb3f1('0xe')],'attributes':['id',_0xb3f1('0xf'),_0xb3f1('0xc')],'include':[{'model':db[_0xb3f1('0x36')],'as':'Smtp','include':[{'model':db[_0xb3f1('0x37')],'as':_0xb3f1('0x37')}]}]}]})[_0xb3f1('0x24')](function(_0x57827b){var _0x3901df=_['keys'](manager['jobs']);var _0x4d7fde=_[_0xb3f1('0x38')](_0x57827b,function(_0x30c225){return _0x30c225['id'][_0xb3f1('0x39')]();});var _0x47a595=_['keyBy'](_0x57827b,function(_0x3f46fb){return _0x3f46fb['id'][_0xb3f1('0x39')]();});var _0x5e4581=_0x50f2e4?_0x4d7fde:_[_0xb3f1('0x3a')](_0x4d7fde,_0x3901df);var _0x59cea0=_[_0xb3f1('0x3b')](_0x4d7fde,_0x3901df);var _0x1fc001=_[_0xb3f1('0x3a')](_0x3901df,_0x4d7fde);var _0x313da9;var _0x4b9048;for(_0x313da9=0x0;_0x313da9<_0x1fc001[_0xb3f1('0x3c')]&&!_0x50f2e4;_0x313da9+=0x1){_0x4b9048=_0x1fc001[_0x313da9][_0xb3f1('0x39')]();if(manager['exists'](_0x4b9048)){manager[_0xb3f1('0x3d')](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger['info']('delete\x20cron',_0x4b9048);}}logger['info'](_0xb3f1('0x3f'),JSON[_0xb3f1('0x1f')](_0x5e4581));for(_0x313da9=0x0;_0x313da9<_0x5e4581[_0xb3f1('0x3c')];_0x313da9+=0x1){_0x4b9048=_0x5e4581[_0x313da9][_0xb3f1('0x39')]();logger[_0xb3f1('0xa')](_0xb3f1('0x40'),_0x4b9048);if(_0x50f2e4){logger[_0xb3f1('0xa')]('my\x20id',_0x50f2e4);logger[_0xb3f1('0xa')](JSON[_0xb3f1('0x1f')](_0x47a595[_0x4b9048]));BPromise[_0xb3f1('0x41')]()[_0xb3f1('0x24')](handleJob(_0x47a595[_0x4b9048]));logger[_0xb3f1('0xa')](_0xb3f1('0x42'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else if(_0x47a595[_0x4b9048][_0xb3f1('0x43')]&&_0x47a595[_0x4b9048]['active']&&moment()[_0xb3f1('0x44')](_0x47a595[_0x4b9048][_0xb3f1('0x45')],_0x47a595[_0x4b9048][_0xb3f1('0x46')])){manager[_0xb3f1('0x47')](_0x4b9048,_0x47a595[_0x4b9048][_0xb3f1('0x43')],handleJob(_0x47a595[_0x4b9048]));manager[_0xb3f1('0x48')](_0x4b9048);logger['info'](_0xb3f1('0x49'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else if(manager['exists'](_0x4b9048)){manager['stop'](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger[_0xb3f1('0xa')](_0xb3f1('0x4a'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048][_0xb3f1('0x43')]);}}for(_0x313da9=0x0,_0x4b9048;_0x313da9<_0x59cea0[_0xb3f1('0x3c')]&&!_0x50f2e4;_0x313da9+=0x1){_0x4b9048=_0x59cea0[_0x313da9][_0xb3f1('0x39')]();if(manager[_0xb3f1('0x4b')](_0x4b9048)){if(_0x47a595[_0x4b9048][_0xb3f1('0x43')]&&_0x47a595[_0x4b9048][_0xb3f1('0x4c')]&&moment()['isBetween'](_0x47a595[_0x4b9048][_0xb3f1('0x45')],_0x47a595[_0x4b9048][_0xb3f1('0x46')])){manager['update'](_0x4b9048,_0x47a595[_0x4b9048][_0xb3f1('0x43')],handleJob(_0x47a595[_0x4b9048]));logger[_0xb3f1('0xa')]('update\x20cron',_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048]['cron']);}else{manager[_0xb3f1('0x3d')](_0x4b9048);manager[_0xb3f1('0x3e')](_0x4b9048);logger[_0xb3f1('0xa')](_0xb3f1('0x4a'),_0x47a595[_0x4b9048][_0xb3f1('0xf')],_0x47a595[_0x4b9048][_0xb3f1('0x43')]);}}}})[_0xb3f1('0x32')](function(_0x588d5b){logger[_0xb3f1('0x25')](JSON[_0xb3f1('0x1f')](_0x588d5b));});}exports[_0xb3f1('0x4d')]=function(_0x225075){return getJobs(_0x225075);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xc7bd=['path','lodash','cron-job-manager','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','stringify','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','Smtp','CloudProvider','toString','keyBy','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','active','isBetween','startAt','endAt','add','cron','start','add\x20cron','update\x20cron','stop\x20cron','run'];(function(_0x5be7f3,_0x4e583a){var _0x330c10=function(_0x25840a){while(--_0x25840a){_0x5be7f3['push'](_0x5be7f3['shift']());}};_0x330c10(++_0x4e583a);}(_0xc7bd,0x150));var _0xdc7b=function(_0x409476,_0x4a8b7b){_0x409476=_0x409476-0x0;var _0x26cc89=_0xc7bd[_0x409476];return _0x26cc89;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xdc7b('0x0'));var _=require(_0xdc7b('0x1'));var moment=require('moment');var CronJobManager=require(_0xdc7b('0x2'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xdc7b('0x3'))('schedule');var db=require(_0xdc7b('0x4'))['db'];var analyticCustomReportController=require(_0xdc7b('0x5'));var analyticDefaultReportController=require(_0xdc7b('0x6'));var client=jayson[_0xdc7b('0x7')][_0xdc7b('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3b4983,_0x55d3b0){return function(){logger['info'](_0xdc7b('0x9'),_0x3b4983[_0xdc7b('0xa')]);var _0x5571cc=!![];var _0x374aa0=_0x3b4983[_0xdc7b('0xb')][_0xdc7b('0xc')]();var _0x1b37a9={'account':_0x374aa0,'message':{'from':util[_0xdc7b('0xd')]('\x22%s\x22\x20<%s>',_0x3b4983[_0xdc7b('0xb')][_0xdc7b('0xe')],_0x3b4983['MailAccount']['email']||_0x3b4983['MailAccount']['Smtp'][_0xdc7b('0xf')]),'to':_0x3b4983[_0xdc7b('0xa')],'cc':_0x3b4983['cc'],'bcc':_0x3b4983[_0xdc7b('0x10')],'subject':util[_0xdc7b('0xd')](_0xdc7b('0x11'),_0x55d3b0[_0xdc7b('0xe')],_0x3b4983[_0xdc7b('0x12')],_0x3b4983[_0xdc7b('0x13')])}};var _0x54409a=path[_0xdc7b('0x14')](__dirname,'../../files/reports');var _0x3cdcda=_0x55d3b0[_0xdc7b('0x15')];var _0x520a05=util[_0xdc7b('0xd')](_0xdc7b('0x16'),path[_0xdc7b('0x17')](_0x55d3b0[_0xdc7b('0x15')],path[_0xdc7b('0x18')](_0x55d3b0[_0xdc7b('0x15')])),_0xdc7b('0x19'));var _0x31fd62=path[_0xdc7b('0x14')](_0x54409a,_0x3cdcda);var _0xba2bf8=path[_0xdc7b('0x14')](_0x54409a,_0x520a05);if(fs[_0xdc7b('0x1a')](_0x31fd62)){_0x55d3b0[_0xdc7b('0x1b')]=_0xdc7b('0x1c');_0x1b37a9[_0xdc7b('0x1d')][_0xdc7b('0x1e')]=[{'filename':_0x3cdcda,'path':_0x31fd62}];_0x1b37a9[_0xdc7b('0x1d')][_0xdc7b('0x1f')]=util[_0xdc7b('0xd')](_0xdc7b('0x20'),JSON['stringify'](_0x55d3b0,null,0x2));}else if(fs['existsSync'](_0xba2bf8)){_0x55d3b0[_0xdc7b('0x1b')]='Sent';_0x1b37a9['message'][_0xdc7b('0x1e')]=[{'filename':_0x520a05,'path':_0xba2bf8}];}else{_0x1b37a9[_0xdc7b('0x1d')][_0xdc7b('0x1f')]=_0xdc7b('0x21');if(!_0x3b4983[_0xdc7b('0x22')]){_0x5571cc=![];logger[_0xdc7b('0x23')](_0xdc7b('0x24'));}}if(_0x5571cc){return client[_0xdc7b('0x25')](_0xdc7b('0x26'),_0x1b37a9)[_0xdc7b('0x27')](function(_0x371fb3){if(_0x371fb3[_0xdc7b('0x28')]){return logger['error']('error\x20mail',JSON[_0xdc7b('0x29')](_0x371fb3));}return logger['info']('email\x20sent');})[_0xdc7b('0x2a')](function(_0x146d00){return logger[_0xdc7b('0x28')](_0xdc7b('0x2b'),JSON['stringify'](_0x146d00));});}};}function handleError(){return function(_0x4c6fd4){return logger[_0xdc7b('0x28')](JSON[_0xdc7b('0x29')](_0x4c6fd4));};}function handleResult(_0x4876d3){return function(_0x1249ff){logger[_0xdc7b('0x23')](_0xdc7b('0x2c'),JSON['stringify'](_0x1249ff));if(_0x4876d3['MailAccount']&&_0x4876d3['MailAccount']['Smtp']&&!_[_0xdc7b('0x2d')](_0x4876d3['email'])){setTimeout(handleSendEmail(_0x4876d3,_0x1249ff),0x3c*0x3e8);}};}function handleJob(_0x32f1d7){return function(){try{if(_['isNil'](_0x32f1d7['subtractNumber'])){return logger[_0xdc7b('0x23')](_0xdc7b('0x2e'));}if(_[_0xdc7b('0x2d')](_0x32f1d7['subtractUnit'])){return logger['info'](_0xdc7b('0x2f'));}var _0x147e56={'startDate':moment()['subtract'](_0x32f1d7[_0xdc7b('0x12')],_0x32f1d7[_0xdc7b('0x13')])['format'](_0xdc7b('0x30')),'endDate':moment()[_0xdc7b('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xdc7b('0x31'),'output':_0x32f1d7['output'],'name':_0x32f1d7[_0xdc7b('0xe')]};if(!_['isNil'](_0x32f1d7[_0xdc7b('0x32')])){logger['info'](_0xdc7b('0x33'),_0x32f1d7[_0xdc7b('0x32')]);return analyticDefaultReportController[_0xdc7b('0x34')]({'id':_0x32f1d7[_0xdc7b('0x32')]},_0x147e56)[_0xdc7b('0x27')](handleResult(_0x32f1d7))['catch'](handleError());}if(!_[_0xdc7b('0x2d')](_0x32f1d7[_0xdc7b('0x35')])){logger[_0xdc7b('0x23')](_0xdc7b('0x36'),_0x32f1d7[_0xdc7b('0x35')]);return analyticCustomReportController['runReport']({'id':_0x32f1d7['CustomReportId']},_0x147e56)[_0xdc7b('0x27')](handleResult(_0x32f1d7))[_0xdc7b('0x2a')](handleError());}}catch(_0x5eb05b){logger[_0xdc7b('0x28')](JSON['stringify'](_0x5eb05b));}return logger[_0xdc7b('0x23')](_0xdc7b('0x37'));};}function getJobs(_0x1649d4){var _0xb8deb6={};if(_0x1649d4){_0xb8deb6['id']=_0x1649d4;}return db['Schedule'][_0xdc7b('0x38')]({'where':_0xb8deb6,'include':[{'model':db[_0xdc7b('0xb')],'attributes':['id',_0xdc7b('0xe'),'email'],'include':[{'model':db[_0xdc7b('0x39')],'as':_0xdc7b('0x3a'),'include':[{'model':db[_0xdc7b('0x3b')],'as':_0xdc7b('0x3b')}]}]}]})[_0xdc7b('0x27')](function(_0x2592da){var _0x413bc7=_['keys'](manager['jobs']);var _0x44671f=_['map'](_0x2592da,function(_0x102105){return _0x102105['id'][_0xdc7b('0x3c')]();});var _0x9ef7a7=_[_0xdc7b('0x3d')](_0x2592da,function(_0x35559f){return _0x35559f['id']['toString']();});var _0x48c9e6=_0x1649d4?_0x44671f:_['difference'](_0x44671f,_0x413bc7);var _0x16067e=_[_0xdc7b('0x3e')](_0x44671f,_0x413bc7);var _0x35fad4=_['difference'](_0x413bc7,_0x44671f);var _0x510304;var _0xeea346;for(_0x510304=0x0;_0x510304<_0x35fad4[_0xdc7b('0x3f')]&&!_0x1649d4;_0x510304+=0x1){_0xeea346=_0x35fad4[_0x510304][_0xdc7b('0x3c')]();if(manager[_0xdc7b('0x40')](_0xeea346)){manager[_0xdc7b('0x41')](_0xeea346);manager[_0xdc7b('0x42')](_0xeea346);logger[_0xdc7b('0x23')](_0xdc7b('0x43'),_0xeea346);}}logger[_0xdc7b('0x23')](_0xdc7b('0x44'),JSON[_0xdc7b('0x29')](_0x48c9e6));for(_0x510304=0x0;_0x510304<_0x48c9e6[_0xdc7b('0x3f')];_0x510304+=0x1){_0xeea346=_0x48c9e6[_0x510304][_0xdc7b('0x3c')]();logger[_0xdc7b('0x23')](_0xdc7b('0x45'),_0xeea346);if(_0x1649d4){logger['info'](_0xdc7b('0x46'),_0x1649d4);logger['info'](JSON[_0xdc7b('0x29')](_0x9ef7a7[_0xeea346]));BPromise[_0xdc7b('0x47')]()[_0xdc7b('0x27')](handleJob(_0x9ef7a7[_0xeea346]));logger[_0xdc7b('0x23')](_0xdc7b('0x48'),_0x9ef7a7[_0xeea346][_0xdc7b('0xe')],_0x9ef7a7[_0xeea346]['cron']);}else if(_0x9ef7a7[_0xeea346]['cron']&&_0x9ef7a7[_0xeea346][_0xdc7b('0x49')]&&moment()[_0xdc7b('0x4a')](_0x9ef7a7[_0xeea346][_0xdc7b('0x4b')],_0x9ef7a7[_0xeea346][_0xdc7b('0x4c')])){manager[_0xdc7b('0x4d')](_0xeea346,_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')],handleJob(_0x9ef7a7[_0xeea346]));manager[_0xdc7b('0x4f')](_0xeea346);logger[_0xdc7b('0x23')](_0xdc7b('0x50'),_0x9ef7a7[_0xeea346]['name'],_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')]);}else if(manager['exists'](_0xeea346)){manager[_0xdc7b('0x41')](_0xeea346);manager[_0xdc7b('0x42')](_0xeea346);logger[_0xdc7b('0x23')]('stop\x20cron',_0x9ef7a7[_0xeea346][_0xdc7b('0xe')],_0x9ef7a7[_0xeea346]['cron']);}}for(_0x510304=0x0,_0xeea346;_0x510304<_0x16067e[_0xdc7b('0x3f')]&&!_0x1649d4;_0x510304+=0x1){_0xeea346=_0x16067e[_0x510304][_0xdc7b('0x3c')]();if(manager['exists'](_0xeea346)){if(_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')]&&_0x9ef7a7[_0xeea346][_0xdc7b('0x49')]&&moment()['isBetween'](_0x9ef7a7[_0xeea346][_0xdc7b('0x4b')],_0x9ef7a7[_0xeea346][_0xdc7b('0x4c')])){manager['update'](_0xeea346,_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')],handleJob(_0x9ef7a7[_0xeea346]));logger['info'](_0xdc7b('0x51'),_0x9ef7a7[_0xeea346][_0xdc7b('0xe')],_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')]);}else{manager['stop'](_0xeea346);manager['deleteJob'](_0xeea346);logger['info'](_0xdc7b('0x52'),_0x9ef7a7[_0xeea346][_0xdc7b('0xe')],_0x9ef7a7[_0xeea346][_0xdc7b('0x4e')]);}}}})[_0xdc7b('0x2a')](function(_0x1989a9){logger['error'](JSON[_0xdc7b('0x29')](_0x1989a9));});}exports[_0xdc7b('0x53')]=function(_0x20d076){return getJobs(_0x20d076);};exports[_0xdc7b('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 79a1320..25379f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71a=['Negative','Neutral','FAILED','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','sentiment','language','sentimentAccountId','findOne','Mixed','name','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','all','SequelizeValidationError','error','start','lodash','aws-sdk','request-promise','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','Positive','SentimentScore'];(function(_0x271607,_0x1cdaf2){var _0x2e87c1=function(_0x3186b2){while(--_0x3186b2){_0x271607['push'](_0x271607['shift']());}};_0x2e87c1(++_0x1cdaf2);}(_0xa71a,0xf1));var _0xaa71=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa71a[_0x2641f9];return _0x585741;};var _=require(_0xaa71('0x0'));var AWS=require(_0xaa71('0x1'));var rp=require(_0xaa71('0x2'));var util=require(_0xaa71('0x3'));var BPromise=require('bluebird');var db=require(_0xaa71('0x4'))['db'];var logger=require(_0xaa71('0x5'))(_0xaa71('0x6'));function getTranscriptionJob(_0x5efe0e,_0x32d34b,_0x480d9b,_0xd325fb){return new Promise(function(_0x2f476b,_0x1f07bd){var _0x5893aa=new AWS[(_0xaa71('0x7'))]({'accessKeyId':_0x32d34b,'secretAccessKey':_0x5efe0e,'region':_0x480d9b});_0x5893aa[_0xaa71('0x8')]({'TranscriptionJobName':_0xd325fb},function(_0x5a0dca,_0x50ad8f){if(_0x5a0dca){return _0x1f07bd(_0x5a0dca);}else{return _0x2f476b(_0x50ad8f);}});});}function sentiment(_0x2fc645,_0x2ec823,_0xc26148,_0x59f523,_0x59e7b9){return new Promise(function(_0xb81c88,_0x28023d){var _0x1636f5=new AWS[(_0xaa71('0x9'))]({'accessKeyId':_0x2ec823,'secretAccessKey':_0x2fc645,'region':_0xc26148});_0x1636f5[_0xaa71('0xa')]({'Text':_0x59f523,'LanguageCode':_0x59e7b9[_0xaa71('0xb')](0x0,0x2)},function(_0x4ad162,_0x5ce035){if(_0x4ad162){return _0x28023d(_0x4ad162);}else{return _0xb81c88(_0x5ce035);}});});}function checkTranscribeJob(_0x4f9755,_0x464b95,_0x128712){var _0x3b7a53;return new BPromise(function(_0x5603e0,_0x331a56){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0xe'),_0x4f9755['id'],_0x4f9755[_0xaa71('0xf')]));return getTranscriptionJob(_0x128712[_0xaa71('0x10')],_0x128712['data2'],_0x464b95[_0xaa71('0x11')],_0x4f9755[_0xaa71('0xf')])[_0xaa71('0x12')](function(_0x5b4f5a){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x13'),_0x4f9755['id'],_0x4f9755[_0xaa71('0xf')],_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')]));if(!_0x4f9755[_0xaa71('0x16')]){switch(_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')]){case _0xaa71('0x17'):var _0x58155d={'transcribeStatus':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x15')],'fileUri':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x18')][_0xaa71('0x19')]};logger['info'](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Get\x20transcript',_0x4f9755['id']));return rp({'uri':_0x5b4f5a[_0xaa71('0x14')][_0xaa71('0x18')][_0xaa71('0x19')],'json':!![]})[_0xaa71('0x12')](function(_0x2e3f95){logger['info'](util['format'](_0xaa71('0x1a'),_0x4f9755['id']));if(_0x2e3f95&&_0x2e3f95['results']&&_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')]&&_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0xaa71('0x1d')]){_0x58155d[_0xaa71('0x16')]='';for(var _0x1bde4f=0x0;_0x1bde4f<_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0xaa71('0x1d')];_0x1bde4f++){_0x58155d[_0xaa71('0x16')]+=_0x2e3f95[_0xaa71('0x1b')][_0xaa71('0x1c')][_0x1bde4f]['transcript']+'';}}return _0x4f9755['update'](_0x58155d);})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4f9755['id']));if(!_0x4f9755['tempSentiment']){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x1f'));}if(!_0x464b95['sentiment']||!_0x464b95['sentimentAccountId']||!_0x464b95[_0xaa71('0x20')]||!_0x464b95['language']||!_0x464b95[_0xaa71('0x21')]){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x22'));}if(!_0x58155d[_0xaa71('0x16')]){throw new Error(_0xaa71('0x23'));}if(_0x464b95['sentimentAccountId']===_0x128712['id']){return _0x128712;}else{return db[_0xaa71('0x24')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0xaa71('0x12')](function(_0x4d8050){if(!_0x4d8050){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x25'));}if(!_0x4d8050[_0xaa71('0x10')]||!_0x4d8050[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x3b7a53=_0x4d8050;logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x29'),_0x4f9755['id']));return sentiment(_0x3b7a53['data1'],_0x3b7a53['data2'],_0x464b95[_0xaa71('0x20')],_0x58155d[_0xaa71('0x16')],_0x464b95['language']);})[_0xaa71('0x12')](function(_0x448702){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x2a'),_0x4f9755['id']));return _0x4f9755[_0xaa71('0x2b')]({'sentiment':_0x448702[_0xaa71('0x2c')],'sPositive':_0x448702['SentimentScore'][_0xaa71('0x2d')],'sNegative':_0x448702[_0xaa71('0x2e')][_0xaa71('0x2f')],'sMixed':_0x448702[_0xaa71('0x2e')]['Mixed'],'sNeutral':_0x448702[_0xaa71('0x2e')][_0xaa71('0x30')]});})[_0xaa71('0x12')](function(){logger['info'](util[_0xaa71('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x4f9755['id']));_0x5603e0();});case'FAILED':return _0x4f9755[_0xaa71('0x2b')]({'transcribeStatus':_0xaa71('0x31'),'failureReason':_0x5b4f5a[_0xaa71('0x14')]['FailureReason']})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x32'),_0x4f9755['id']));_0x5603e0();});default:logger[_0xaa71('0xc')](util['format'](_0xaa71('0x33'),_0x4f9755['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x4f9755[_0xaa71('0x34')]){throw new db['Sequelize'][(_0xaa71('0x27'))](_0xaa71('0x1f'));}if(!_0x464b95[_0xaa71('0x35')]||!_0x464b95['sentimentAccountId']||!_0x464b95[_0xaa71('0x20')]||!_0x464b95[_0xaa71('0x36')]||!_0x464b95['bucket']){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x22'));}if(!_0x4f9755[_0xaa71('0x16')]){throw new Error(_0xaa71('0x23'));}if(_0x464b95[_0xaa71('0x37')]===_0x128712['id']){return _0x128712;}else{return db[_0xaa71('0x24')][_0xaa71('0x38')]({'where':{'id':_settings[_0xaa71('0x37')]}});}})[_0xaa71('0x12')](function(_0x3861bf){if(!_0x3861bf){throw new db[(_0xaa71('0x1e'))]['ValidationError'](_0xaa71('0x25'));}if(!_0x3861bf[_0xaa71('0x10')]||!_0x3861bf[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x3b7a53=_0x3861bf;logger[_0xaa71('0xc')](util['format'](_0xaa71('0x29'),_0x4f9755['id']));return sentiment(_0x3b7a53[_0xaa71('0x10')],_0x3b7a53[_0xaa71('0x26')],_0x464b95[_0xaa71('0x20')],_0x4f9755[_0xaa71('0x16')],_0x464b95[_0xaa71('0x36')]);})[_0xaa71('0x12')](function(_0xd1ebc0){logger[_0xaa71('0xc')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4f9755['id']));return _0x4f9755[_0xaa71('0x2b')]({'sentiment':_0xd1ebc0[_0xaa71('0x2c')],'sPositive':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x2d')],'sNegative':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x2f')],'sMixed':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x39')],'sNeutral':_0xd1ebc0[_0xaa71('0x2e')][_0xaa71('0x30')],'transcribeStatus':_0xaa71('0x17')});})[_0xaa71('0x12')](function(){logger[_0xaa71('0xc')](util[_0xaa71('0xd')](_0xaa71('0x32'),_0x4f9755['id']));_0x5603e0();});}})['catch'](function(_0x10a362){if(_0x10a362){if(!_0x10a362[_0xaa71('0x3a')]||_0x10a362[_0xaa71('0x3a')]!=='SequelizeValidationError'){logger['error'](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x4f9755['id']),util[_0xaa71('0x3b')](_0x10a362,{'showHidden':![],'depth':null}));}}_0x5603e0();});});}function checkTranscribe(){var _0x52fa61;var _0x1c9899;var _0x2b670d;return db[_0xaa71('0x3c')][_0xaa71('0x3d')]({'where':{'transcribeStatus':_0xaa71('0x3e')}})[_0xaa71('0x12')](function(_0x4e9be7){if(!_0x4e9be7||!_0x4e9be7[_0xaa71('0x1d')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x3f'));}_0x52fa61=_0x4e9be7;return db[_0xaa71('0x40')][_0xaa71('0x38')]({'where':{'id':0x1}});})[_0xaa71('0x12')](function(_0x303417){if(!_0x303417){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x41'));}_0x1c9899=_0x303417;if(!_0x1c9899[_0xaa71('0x6')]||!_0x1c9899[_0xaa71('0x42')]||!_0x1c9899['transcribeRegion']||!_0x1c9899[_0xaa71('0x36')]||!_0x1c9899[_0xaa71('0x21')]){throw new db[(_0xaa71('0x1e'))]['ValidationError']('Transcribe\x20not\x20configured');}return db[_0xaa71('0x24')][_0xaa71('0x38')]({'where':{'id':_0x1c9899[_0xaa71('0x42')]}});})[_0xaa71('0x12')](function(_0x5762b5){if(!_0x5762b5){throw new db['Sequelize']['ValidationError'](_0xaa71('0x25'));}if(!_0x5762b5[_0xaa71('0x10')]||!_0x5762b5[_0xaa71('0x26')]){throw new db[(_0xaa71('0x1e'))][(_0xaa71('0x27'))](_0xaa71('0x28'));}_0x2b670d=_0x5762b5;var _0x5a5c37=[];_0x52fa61[_0xaa71('0x43')](function(_0x1634b8){_0x5a5c37['push'](checkTranscribeJob(_0x1634b8,_0x1c9899,_0x2b670d));});return BPromise[_0xaa71('0x44')](_0x5a5c37);})['catch'](function(_0x331fd9){if(_0x331fd9){if(!_0x331fd9[_0xaa71('0x3a')]||_0x331fd9[_0xaa71('0x3a')]!==_0xaa71('0x45')){logger[_0xaa71('0x46')](util[_0xaa71('0x3b')](_0x331fd9,{'showHidden':![],'depth':null}));}}});}exports[_0xaa71('0x47')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xbd9f=['name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','util','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','info','TranscriptionJobStatus','fileText','COMPLETED','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','data2','ValidationError','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','update','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Cloud\x20Provider\x20not\x20available','Sentiment','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','catch'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0xbd9f,0x98));var _0xfbd9=function(_0x1297c7,_0x1ff2a5){_0x1297c7=_0x1297c7-0x0;var _0x5c1916=_0xbd9f[_0x1297c7];return _0x5c1916;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0xfbd9('0x0'));var BPromise=require('bluebird');var db=require(_0xfbd9('0x1'))['db'];var logger=require('../../config/logger')(_0xfbd9('0x2'));function getTranscriptionJob(_0x58f652,_0x18602f,_0x3f5a84,_0x18696a){return new Promise(function(_0x5a9faf,_0x3329ae){var _0x4c6a18=new AWS[(_0xfbd9('0x3'))]({'accessKeyId':_0x18602f,'secretAccessKey':_0x58f652,'region':_0x3f5a84});_0x4c6a18[_0xfbd9('0x4')]({'TranscriptionJobName':_0x18696a},function(_0x51b475,_0x163492){if(_0x51b475){return _0x3329ae(_0x51b475);}else{return _0x5a9faf(_0x163492);}});});}function sentiment(_0x29de14,_0x121278,_0x5cea93,_0x1a28b6,_0x4acea9){return new Promise(function(_0x13886e,_0x4f6942){var _0x100a65=new AWS[(_0xfbd9('0x5'))]({'accessKeyId':_0x121278,'secretAccessKey':_0x29de14,'region':_0x5cea93});_0x100a65['detectSentiment']({'Text':_0x1a28b6,'LanguageCode':_0x4acea9[_0xfbd9('0x6')](0x0,0x2)},function(_0xdc9b6e,_0x496ead){if(_0xdc9b6e){return _0x4f6942(_0xdc9b6e);}else{return _0x13886e(_0x496ead);}});});}function checkTranscribeJob(_0x120e26,_0x301770,_0x1a4a0e){var _0x527707;return new BPromise(function(_0xfbcb77,_0x4a73ac){logger['info'](util[_0xfbd9('0x7')](_0xfbd9('0x8'),_0x120e26['id'],_0x120e26[_0xfbd9('0x9')]));return getTranscriptionJob(_0x1a4a0e[_0xfbd9('0xa')],_0x1a4a0e['data2'],_0x301770[_0xfbd9('0xb')],_0x120e26[_0xfbd9('0x9')])[_0xfbd9('0xc')](function(_0x58d553){logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x120e26['id'],_0x120e26[_0xfbd9('0x9')],_0x58d553['TranscriptionJob'][_0xfbd9('0xe')]));if(!_0x120e26[_0xfbd9('0xf')]){switch(_0x58d553['TranscriptionJob'][_0xfbd9('0xe')]){case _0xfbd9('0x10'):var _0x108b0b={'transcribeStatus':_0x58d553[_0xfbd9('0x11')][_0xfbd9('0xe')],'fileUri':_0x58d553[_0xfbd9('0x11')][_0xfbd9('0x12')][_0xfbd9('0x13')]};logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')](_0xfbd9('0x14'),_0x120e26['id']));return rp({'uri':_0x58d553[_0xfbd9('0x11')][_0xfbd9('0x12')][_0xfbd9('0x13')],'json':!![]})[_0xfbd9('0xc')](function(_0x32f9bb){logger[_0xfbd9('0xd')](util['format'](_0xfbd9('0x15'),_0x120e26['id']));if(_0x32f9bb&&_0x32f9bb[_0xfbd9('0x16')]&&_0x32f9bb[_0xfbd9('0x16')][_0xfbd9('0x17')]&&_0x32f9bb[_0xfbd9('0x16')][_0xfbd9('0x17')][_0xfbd9('0x18')]){_0x108b0b[_0xfbd9('0xf')]='';for(var _0x3624f3=0x0;_0x3624f3<_0x32f9bb[_0xfbd9('0x16')][_0xfbd9('0x17')]['length'];_0x3624f3++){_0x108b0b[_0xfbd9('0xf')]+=_0x32f9bb[_0xfbd9('0x16')][_0xfbd9('0x17')][_0x3624f3]['transcript']+'';}}return _0x120e26['update'](_0x108b0b);})[_0xfbd9('0xc')](function(){logger['info'](util[_0xfbd9('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x120e26['id']));if(!_0x120e26['tempSentiment']){throw new db[(_0xfbd9('0x19'))]['ValidationError'](_0xfbd9('0x1a'));}if(!_0x301770[_0xfbd9('0x1b')]||!_0x301770[_0xfbd9('0x1c')]||!_0x301770[_0xfbd9('0x1d')]||!_0x301770[_0xfbd9('0x1e')]||!_0x301770[_0xfbd9('0x1f')]){throw new db[(_0xfbd9('0x19'))]['ValidationError'](_0xfbd9('0x20'));}if(!_0x108b0b[_0xfbd9('0xf')]){throw new Error(_0xfbd9('0x21'));}if(_0x301770[_0xfbd9('0x1c')]===_0x1a4a0e['id']){return _0x1a4a0e;}else{return db[_0xfbd9('0x22')][_0xfbd9('0x23')]({'where':{'id':_settings[_0xfbd9('0x1c')]}});}})[_0xfbd9('0xc')](function(_0x23ffbe){if(!_0x23ffbe){throw new db[(_0xfbd9('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x23ffbe[_0xfbd9('0xa')]||!_0x23ffbe[_0xfbd9('0x24')]){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x26'));}_0x527707=_0x23ffbe;logger['info'](util[_0xfbd9('0x7')](_0xfbd9('0x27'),_0x120e26['id']));return sentiment(_0x527707[_0xfbd9('0xa')],_0x527707[_0xfbd9('0x24')],_0x301770[_0xfbd9('0x1d')],_0x108b0b[_0xfbd9('0xf')],_0x301770[_0xfbd9('0x1e')]);})[_0xfbd9('0xc')](function(_0x5ce608){logger[_0xfbd9('0xd')](util['format'](_0xfbd9('0x28'),_0x120e26['id']));return _0x120e26['update']({'sentiment':_0x5ce608['Sentiment'],'sPositive':_0x5ce608[_0xfbd9('0x29')][_0xfbd9('0x2a')],'sNegative':_0x5ce608['SentimentScore'][_0xfbd9('0x2b')],'sMixed':_0x5ce608[_0xfbd9('0x29')][_0xfbd9('0x2c')],'sNeutral':_0x5ce608['SentimentScore'][_0xfbd9('0x2d')]});})['then'](function(){logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x120e26['id']));_0xfbcb77();});case _0xfbd9('0x2e'):return _0x120e26[_0xfbd9('0x2f')]({'transcribeStatus':_0xfbd9('0x2e'),'failureReason':_0x58d553[_0xfbd9('0x11')][_0xfbd9('0x30')]})[_0xfbd9('0xc')](function(){logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x120e26['id']));_0xfbcb77();});default:logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')](_0xfbd9('0x31'),_0x120e26['id']));break;}}else{return BPromise[_0xfbd9('0x32')]()[_0xfbd9('0xc')](function(){if(!_0x120e26['tempSentiment']){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x1a'));}if(!_0x301770['sentiment']||!_0x301770[_0xfbd9('0x1c')]||!_0x301770[_0xfbd9('0x1d')]||!_0x301770[_0xfbd9('0x1e')]||!_0x301770['bucket']){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x20'));}if(!_0x120e26[_0xfbd9('0xf')]){throw new Error(_0xfbd9('0x21'));}if(_0x301770[_0xfbd9('0x1c')]===_0x1a4a0e['id']){return _0x1a4a0e;}else{return db[_0xfbd9('0x22')]['findOne']({'where':{'id':_settings[_0xfbd9('0x1c')]}});}})[_0xfbd9('0xc')](function(_0x4ab8b3){if(!_0x4ab8b3){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x33'));}if(!_0x4ab8b3[_0xfbd9('0xa')]||!_0x4ab8b3[_0xfbd9('0x24')]){throw new db['Sequelize'][(_0xfbd9('0x25'))]('Cloud\x20Provider\x20not\x20configured');}_0x527707=_0x4ab8b3;logger['info'](util[_0xfbd9('0x7')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x120e26['id']));return sentiment(_0x527707[_0xfbd9('0xa')],_0x527707[_0xfbd9('0x24')],_0x301770[_0xfbd9('0x1d')],_0x120e26[_0xfbd9('0xf')],_0x301770[_0xfbd9('0x1e')]);})[_0xfbd9('0xc')](function(_0x10273b){logger['info'](util[_0xfbd9('0x7')](_0xfbd9('0x28'),_0x120e26['id']));return _0x120e26['update']({'sentiment':_0x10273b[_0xfbd9('0x34')],'sPositive':_0x10273b[_0xfbd9('0x29')][_0xfbd9('0x2a')],'sNegative':_0x10273b[_0xfbd9('0x29')]['Negative'],'sMixed':_0x10273b[_0xfbd9('0x29')][_0xfbd9('0x2c')],'sNeutral':_0x10273b[_0xfbd9('0x29')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0xfbd9('0xc')](function(){logger[_0xfbd9('0xd')](util[_0xfbd9('0x7')](_0xfbd9('0x35'),_0x120e26['id']));_0xfbcb77();});}})[_0xfbd9('0x36')](function(_0x1f56f3){if(_0x1f56f3){if(!_0x1f56f3[_0xfbd9('0x37')]||_0x1f56f3[_0xfbd9('0x37')]!==_0xfbd9('0x38')){logger[_0xfbd9('0x39')](util['format'](_0xfbd9('0x3a'),_0x120e26['id']),util[_0xfbd9('0x3b')](_0x1f56f3,{'showHidden':![],'depth':null}));}}_0xfbcb77();});});}function checkTranscribe(){var _0x31d706;var _0x464dea;var _0x4add02;return db['VoiceRecording']['findAll']({'where':{'transcribeStatus':_0xfbd9('0x3c')}})[_0xfbd9('0xc')](function(_0x4281d6){if(!_0x4281d6||!_0x4281d6[_0xfbd9('0x18')]){throw new db['Sequelize']['ValidationError'](_0xfbd9('0x3d'));}_0x31d706=_0x4281d6;return db[_0xfbd9('0x3e')][_0xfbd9('0x23')]({'where':{'id':0x1}});})['then'](function(_0x3e3d94){if(!_0x3e3d94){throw new db[(_0xfbd9('0x19'))]['ValidationError'](_0xfbd9('0x3f'));}_0x464dea=_0x3e3d94;if(!_0x464dea[_0xfbd9('0x2')]||!_0x464dea[_0xfbd9('0x40')]||!_0x464dea[_0xfbd9('0xb')]||!_0x464dea[_0xfbd9('0x1e')]||!_0x464dea['bucket']){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x41'));}return db[_0xfbd9('0x22')][_0xfbd9('0x23')]({'where':{'id':_0x464dea['transcribeAccountId']}});})[_0xfbd9('0xc')](function(_0x310b73){if(!_0x310b73){throw new db[(_0xfbd9('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x310b73[_0xfbd9('0xa')]||!_0x310b73[_0xfbd9('0x24')]){throw new db[(_0xfbd9('0x19'))][(_0xfbd9('0x25'))](_0xfbd9('0x26'));}_0x4add02=_0x310b73;var _0x3406c8=[];_0x31d706[_0xfbd9('0x42')](function(_0x1f6172){_0x3406c8[_0xfbd9('0x43')](checkTranscribeJob(_0x1f6172,_0x464dea,_0x4add02));});return BPromise[_0xfbd9('0x44')](_0x3406c8);})[_0xfbd9('0x36')](function(_0x32a149){if(_0x32a149){if(!_0x32a149[_0xfbd9('0x37')]||_0x32a149['name']!=='SequelizeValidationError'){logger[_0xfbd9('0x39')](util[_0xfbd9('0x3b')](_0x32a149,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index fc9cc2b..c8afc6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x129d=['lastMsgAt','subtract','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','inspect','start','lodash','moment','ioredis','util','../../mysqldb','redis','localhost','WhatsappInteraction','findAll'];(function(_0x5ebf82,_0x5939d4){var _0x25f631=function(_0x4fe6ea){while(--_0x4fe6ea){_0x5ebf82['push'](_0x5ebf82['shift']());}};_0x25f631(++_0x5939d4);}(_0x129d,0x163));var _0xd129=function(_0x55b1fe,_0x5a6c9d){_0x55b1fe=_0x55b1fe-0x0;var _0x29c1c4=_0x129d[_0x55b1fe];return _0x29c1c4;};'use strict';var _=require(_0xd129('0x0'));var moment=require(_0xd129('0x1'));var Redis=require(_0xd129('0x2'));var util=require(_0xd129('0x3'));var config=require('../../config/environment');var db=require(_0xd129('0x4'))['db'];var logger=require('../logger')('schedule');config[_0xd129('0x5')]=_['defaults'](config['redis'],{'host':_0xd129('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function closeInteractions(){var _0x4d96d2=[];return db[_0xd129('0x7')][_0xd129('0x8')]({'raw':!![],'attributes':['id',_0xd129('0x9')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xd129('0xa')](0x18,'hours')}}})[_0xd129('0xb')](function(_0x16af89){if(_0x16af89&&_0x16af89[_0xd129('0xc')]){_0x4d96d2=_[_0xd129('0xd')](_0x16af89||[],'id');logger[_0xd129('0xe')](_0xd129('0xf'),_0x4d96d2[_0xd129('0x10')]());return db['WhatsappInteraction'][_0xd129('0x11')]({'closeReason':_0xd129('0x12'),'disposition':_0xd129('0x13'),'closed':!![],'closedAt':moment()[_0xd129('0x14')](_0xd129('0x15'))},{'where':{'id':_0x4d96d2}});}})[_0xd129('0xb')](function(){if(_0x4d96d2&&_0x4d96d2[_0xd129('0xc')]){logger[_0xd129('0xe')](_0xd129('0x16'),_0x4d96d2[_0xd129('0x10')]());for(var _0x5a9409=0x0;_0x5a9409<_0x4d96d2[_0xd129('0xc')];_0x5a9409++){io[_0xd129('0x17')](_0xd129('0x18'),{'id':_0x4d96d2[_0x5a9409],'closed':!![]});}}})['catch'](function(_0x1e2735){logger[_0xd129('0x19')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x1e2735?util[_0xd129('0x1a')](_0x1e2735,{'showHidden':![],'depth':null}):'');});}exports[_0xd129('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x6f2d=['length','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','WhatsappInteraction','lastMsgAt','subtract','hours','then','map','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x24fe8e,_0x3fa991){var _0xe063e8=function(_0x4b6c33){while(--_0x4b6c33){_0x24fe8e['push'](_0x24fe8e['shift']());}};_0xe063e8(++_0x3fa991);}(_0x6f2d,0x116));var _0xd6f2=function(_0x748921,_0x32cddd){_0x748921=_0x748921-0x0;var _0x212c26=_0x6f2d[_0x748921];return _0x212c26;};'use strict';var _=require(_0xd6f2('0x0'));var moment=require(_0xd6f2('0x1'));var Redis=require(_0xd6f2('0x2'));var util=require(_0xd6f2('0x3'));var config=require(_0xd6f2('0x4'));var db=require(_0xd6f2('0x5'))['db'];var logger=require(_0xd6f2('0x6'))(_0xd6f2('0x7'));config[_0xd6f2('0x8')]=_[_0xd6f2('0x9')](config[_0xd6f2('0x8')],{'host':_0xd6f2('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd6f2('0x8')]));function closeInteractions(){var _0x3ee4b7=[];return db[_0xd6f2('0xb')]['findAll']({'raw':!![],'attributes':['id',_0xd6f2('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xd6f2('0xd')](0x18,_0xd6f2('0xe'))}}})[_0xd6f2('0xf')](function(_0x434abb){if(_0x434abb&&_0x434abb['length']){_0x3ee4b7=_[_0xd6f2('0x10')](_0x434abb||[],'id');logger['info']('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x3ee4b7[_0xd6f2('0x11')]());return db['WhatsappInteraction'][_0xd6f2('0x12')]({'closeReason':_0xd6f2('0x13'),'disposition':_0xd6f2('0x14'),'closed':!![],'closedAt':moment()['format'](_0xd6f2('0x15'))},{'where':{'id':_0x3ee4b7}});}})[_0xd6f2('0xf')](function(){if(_0x3ee4b7&&_0x3ee4b7[_0xd6f2('0x16')]){logger[_0xd6f2('0x17')](_0xd6f2('0x18'),_0x3ee4b7[_0xd6f2('0x11')]());for(var _0x1fbc89=0x0;_0x1fbc89<_0x3ee4b7['length'];_0x1fbc89++){io[_0xd6f2('0x19')](_0xd6f2('0x1a'),{'id':_0x3ee4b7[_0x1fbc89],'closed':!![]});}}})[_0xd6f2('0x1b')](function(_0x4a9395){logger['error'](_0xd6f2('0x1c'),_0x4a9395?util[_0xd6f2('0x1d')](_0x4a9395,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e39bcc3..681ce6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e8f=['hopper1','contacts2','hopper2','catch','util','../mysqldb','push','Biondo','innocenzo.biondo','now','Innocenzo','@xcally.com','destroy','then','CmContact','bulkCreate','log','finished\x20populating','contacts1','CmHopper'];(function(_0x112baa,_0x5a7ba9){var _0x665e3c=function(_0xad962f){while(--_0xad962f){_0x112baa['push'](_0x112baa['shift']());}};_0x665e3c(++_0x5a7ba9);}(_0x3e8f,0xb8));var _0xf3e8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3e8f[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xf3e8('0x0'));var db=require(_0xf3e8('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf3e8('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf3e8('0x3')+i,'phone':0xf879fb460+i,'email':_0xf3e8('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf3e8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf3e8('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf3e8('0x5')](),'updatedAt':Date[_0xf3e8('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf3e8('0x2')]({'id':i,'firstName':_0xf3e8('0x6')+i,'lastName':_0xf3e8('0x3')+i,'phone':0xf879fb460+i,'email':_0xf3e8('0x4')+i+_0xf3e8('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf3e8('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf3e8('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf3e8('0x5')](),'updatedAt':Date[_0xf3e8('0x5')]()});}db['CmContact'][_0xf3e8('0x8')]({'where':{}})[_0xf3e8('0x9')](function(){return db[_0xf3e8('0xa')][_0xf3e8('0xb')](contacts);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0xe'));return db['CmHopper']['destroy']({'where':{}});})[_0xf3e8('0x9')](function(){return db[_0xf3e8('0xf')][_0xf3e8('0xb')](hopper);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x10'));return db[_0xf3e8('0xa')]['bulkCreate'](contacts2);})['then'](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x11'));return db[_0xf3e8('0xf')][_0xf3e8('0xb')](hopper2);})[_0xf3e8('0x9')](function(){console[_0xf3e8('0xc')](_0xf3e8('0xd'),_0xf3e8('0x12'));})[_0xf3e8('0x13')](function(_0x2ad22a){console[_0xf3e8('0xc')](_0x2ad22a);});
\ No newline at end of file
+var _0xefee=['now','destroy','then','log','contacts1','CmHopper','bulkCreate','finished\x20populating','hopper1','CmContact','catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com'];(function(_0x5c1b04,_0x21f1ec){var _0x21da53=function(_0x11ea52){while(--_0x11ea52){_0x5c1b04['push'](_0x5c1b04['shift']());}};_0x21da53(++_0x21f1ec);}(_0xefee,0x1bb));var _0xeefe=function(_0x4227ae,_0x497a48){_0x4227ae=_0x4227ae-0x0;var _0x29c84d=_0xefee[_0x4227ae];return _0x29c84d;};'use strict';var util=require(_0xeefe('0x0'));var db=require(_0xeefe('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xeefe('0x2')]({'id':i,'firstName':_0xeefe('0x3')+i,'lastName':_0xeefe('0x4')+i,'phone':0xf879fb460+i,'email':_0xeefe('0x5')+i+_0xeefe('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xeefe('0x7')](),'updatedAt':Date[_0xeefe('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0xeefe('0x3')+i,'lastName':_0xeefe('0x4')+i,'phone':0xf879fb460+i,'email':_0xeefe('0x5')+i+_0xeefe('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xeefe('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xeefe('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xeefe('0x7')](),'updatedAt':Date['now']()});}db['CmContact'][_0xeefe('0x8')]({'where':{}})[_0xeefe('0x9')](function(){return db['CmContact']['bulkCreate'](contacts);})['then'](function(){console[_0xeefe('0xa')]('finished\x20populating',_0xeefe('0xb'));return db[_0xeefe('0xc')][_0xeefe('0x8')]({'where':{}});})['then'](function(){return db['CmHopper'][_0xeefe('0xd')](hopper);})[_0xeefe('0x9')](function(){console['log'](_0xeefe('0xe'),_0xeefe('0xf'));return db[_0xeefe('0x10')][_0xeefe('0xd')](contacts2);})['then'](function(){console['log']('finished\x20populating','contacts2');return db[_0xeefe('0xc')][_0xeefe('0xd')](hopper2);})[_0xeefe('0x9')](function(){console[_0xeefe('0xa')]('finished\x20populating','hopper2');})[_0xeefe('0x11')](function(_0x596100){console[_0xeefe('0xa')](_0x596100);});
\ No newline at end of file
index 8a2dd82..5104850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858f=['log','add\x20user','catch','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','password','udp','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','bulkCreate','then'];(function(_0xf686a8,_0x19a514){var _0x4e411a=function(_0x402d50){while(--_0x402d50){_0xf686a8['push'](_0xf686a8['shift']());}};_0x4e411a(++_0x19a514);}(_0x858f,0x1b8));var _0xf858=function(_0x3f2d02,_0x2c7deb){_0x3f2d02=_0x3f2d02-0x0;var _0x54092b=_0x858f[_0x3f2d02];return _0x54092b;};'use strict';var util=require('util');var db=require(_0xf858('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xf858('0x1')]({'name':util[_0xf858('0x2')]('%s%s','agent',i),'fullname':util[_0xf858('0x2')](_0xf858('0x3'),_0xf858('0x4'),i),'email':util[_0xf858('0x2')](_0xf858('0x5'),'agent',i),'role':'agent','password':_0xf858('0x6'),'internal':0xfa0+i,'type':'friend','transport':[_0xf858('0x7'),'ws',_0xf858('0x8')],'disallow':[_0xf858('0x9')],'allow':[_0xf858('0xa')],'defaultuser':util[_0xf858('0x2')](_0xf858('0x3'),_0xf858('0x4'),i),'encryption':_0xf858('0xb'),'avpf':'yes','force_avp':'yes','icesupport':'yes','dtlsenable':_0xf858('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xf858('0xc'),'dtlssetup':'actpass','callerid':util['format'](_0xf858('0xd'),util[_0xf858('0x2')](_0xf858('0x3'),'agent',i),0xfa0+i)});}db['User'][_0xf858('0xe')](users)[_0xf858('0xf')](function(){console[_0xf858('0x10')](_0xf858('0x11'));})[_0xf858('0x12')](function(_0x1a7ed2){console[_0xf858('0x10')](_0x1a7ed2);});
\ No newline at end of file
+var _0x941e=['%s%s@xcally.com','password','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','then','add\x20user','catch','log','util','../mysqldb','format','%s%s','agent'];(function(_0x25dea3,_0x2dfb02){var _0x2a700b=function(_0x30f7fc){while(--_0x30f7fc){_0x25dea3['push'](_0x25dea3['shift']());}};_0x2a700b(++_0x2dfb02);}(_0x941e,0xa3));var _0xe941=function(_0x456e3b,_0x250122){_0x456e3b=_0x456e3b-0x0;var _0x36315b=_0x941e[_0x456e3b];return _0x36315b;};'use strict';var util=require(_0xe941('0x0'));var db=require(_0xe941('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xe941('0x2')](_0xe941('0x3'),_0xe941('0x4'),i),'fullname':util[_0xe941('0x2')](_0xe941('0x3'),_0xe941('0x4'),i),'email':util[_0xe941('0x2')](_0xe941('0x5'),_0xe941('0x4'),i),'role':_0xe941('0x4'),'password':_0xe941('0x6'),'internal':0xfa0+i,'type':_0xe941('0x7'),'transport':[_0xe941('0x8'),'ws',_0xe941('0x9')],'disallow':[_0xe941('0xa')],'allow':[_0xe941('0xb')],'defaultuser':util[_0xe941('0x2')]('%s%s',_0xe941('0x4'),i),'encryption':_0xe941('0xc'),'avpf':_0xe941('0xc'),'force_avp':_0xe941('0xc'),'icesupport':_0xe941('0xc'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xe941('0xd'),'dtlssetup':_0xe941('0xe'),'callerid':util['format'](_0xe941('0xf'),util[_0xe941('0x2')](_0xe941('0x3'),_0xe941('0x4'),i),0xfa0+i)});}db['User'][_0xe941('0x10')](users)[_0xe941('0x11')](function(){console['log'](_0xe941('0x12'));})[_0xe941('0x13')](function(_0xea853c){console[_0xe941('0x14')](_0xea853c);});
\ No newline at end of file
index c0c779c..e5f40a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d68=['admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','FaxQueues','Telephones','agent','getVoiceQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','leave','ChatInteractions','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','role','telephone','type','ivr','findOne','then','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','IvrCampaigns','UserProfileResource','resourceId','map','where','Campaign','format','Agents','length','user:%s','query','find','userProfileId','ChatInteraction','MailInteraction','MailInteractions','SmsInteraction','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions'];(function(_0x12fb36,_0x2285e9){var _0x37952d=function(_0xb5fe2d){while(--_0xb5fe2d){_0x12fb36['push'](_0x12fb36['shift']());}};_0x37952d(++_0x2285e9);}(_0x4d68,0x1c3));var _0x84d6=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0x4d68[_0x45fc6a];return _0x14bcfd;};'use strict';var _=require(_0x84d6('0x0'));var util=require(_0x84d6('0x1'));var BPromise=require(_0x84d6('0x2'));var db=require(_0x84d6('0x3'))['db'];var config=require(_0x84d6('0x4'));var queryQueues={'attributes':['id',_0x84d6('0x5')],'include':[{'as':'Agents','model':db[_0x84d6('0x6')],'attributes':['id','name',_0x84d6('0x7')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x84d6('0x5')],'where':{'role':_0x84d6('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x84d6('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x84d6('0x5'),_0x84d6('0x9')],'where':{'type':_0x84d6('0xa')}};function getAssociatedResources(_0x367139,_0x5e9134,_0x411c7f){return db['UserProfileSection'][_0x84d6('0xb')]({'where':{'name':_0x367139,'userProfileId':_0x5e9134},'raw':!![]})[_0x84d6('0xc')](function(_0x103405){if(_0x103405){if(_0x103405['autoAssociation']){switch(_0x367139){case'VoiceQueues':case _0x84d6('0xd'):case'FaxQueues':case _0x84d6('0xe'):case _0x84d6('0xf'):case _0x84d6('0x10'):case _0x84d6('0x11'):return db[_0x411c7f][_0x84d6('0x12')](queryQueues);case'Telephones':return db[_0x411c7f][_0x84d6('0x12')](queryTelephones);case'Trunks':return db[_0x411c7f][_0x84d6('0x12')](queryTrunks);case _0x84d6('0x13'):return db[_0x411c7f][_0x84d6('0x12')](queryCampaigns);}}else{return db[_0x84d6('0x14')][_0x84d6('0x12')]({'attributes':[_0x84d6('0x15')],'where':{'sectionId':_0x103405['id']},'raw':!![]})[_0x84d6('0xc')](function(_0x4f39f0){if(_0x4f39f0){var _0x10646e={'where':{'id':_[_0x84d6('0x16')](_0x4f39f0,_0x84d6('0x15'))},'raw':!![]};switch(_0x411c7f){case _0x84d6('0x6'):_0x10646e[_0x84d6('0x17')]['role']=_0x84d6('0x8');break;case _0x84d6('0x18'):_0x10646e['where'][_0x84d6('0x9')]='ivr';break;}return db[_0x411c7f][_0x84d6('0x12')](_0x10646e);}else{return[];}});}}else{return[];}})[_0x84d6('0xc')](function(_0x652e57){return _0x652e57;});}function joinOrLeaveQueues(_0x2cbfb5,_0x2fb441,_0x5aa7b2,_0x32ccd1){_0x2cbfb5[_0x2fb441](util[_0x84d6('0x19')]('%s:queue:%s',_0x5aa7b2,_0x32ccd1['name']));if(_0x32ccd1[_0x84d6('0x1a')]){for(var _0x5ebfcb=0x0;_0x5ebfcb<_0x32ccd1['Agents'][_0x84d6('0x1b')];_0x5ebfcb+=0x1){_0x2cbfb5[_0x2fb441](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x32ccd1['Agents'][_0x5ebfcb][_0x84d6('0x5')]));}}}function joinOrLeave(_0x49902e,_0x5deb1f,_0x26e753){var _0x1b86f2;if(_0x49902e['handshake'][_0x84d6('0x1d')]['id']){db[_0x84d6('0x6')][_0x84d6('0x1e')]({'attributes':['id',_0x84d6('0x5'),'role',_0x84d6('0x1f')],'where':{'id':_0x49902e['handshake'][_0x84d6('0x1d')]['id']},'include':[{'model':db[_0x84d6('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x21')],'as':_0x84d6('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x23')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x24')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x84d6('0x25')],'as':_0x84d6('0x26'),'attributes':['id'],'raw':!![]}]})[_0x84d6('0xc')](function(_0x37adf9){if(_0x37adf9){_0x1b86f2=_0x37adf9;_0x49902e[_0x5deb1f](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x37adf9[_0x84d6('0x5')]));var _0x1cce4a=[];switch(_0x37adf9[_0x84d6('0x7')]){case _0x84d6('0x27'):_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));if(queryQueues['hasOwnProperty'](_0x84d6('0x2a'))){delete queryQueues[_0x84d6('0x2a')];}_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2c')][_0x84d6('0x12')](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2d')][_0x84d6('0x12')](queryQueues));_0x1cce4a['push'](db[_0x84d6('0x2e')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x2f')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x30')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x31')][_0x84d6('0x12')](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x32')]['findAll'](queryQueues));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryTelephones));_0x1cce4a['push'](db[_0x84d6('0x33')]['findAll'](queryTrunks));_0x1cce4a[_0x84d6('0x2b')](db['Campaign']['findAll'](queryCampaigns));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryAgents));break;case'user':_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('VoiceQueues',_0x37adf9['userProfileId'],'VoiceQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0xd'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x2d')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x34'),_0x37adf9['userProfileId'],'FaxQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0xe'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x2f')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('MailQueues',_0x37adf9['userProfileId'],'MailQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('OpenchannelQueues',_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x31')));_0x1cce4a['push'](getAssociatedResources(_0x84d6('0x11'),_0x37adf9[_0x84d6('0x1f')],'WhatsappQueue'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x35'),_0x37adf9[_0x84d6('0x1f')],_0x84d6('0x6')));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources('Trunks',_0x37adf9[_0x84d6('0x1f')],'Trunk'));_0x1cce4a[_0x84d6('0x2b')](getAssociatedResources(_0x84d6('0x13'),_0x37adf9[_0x84d6('0x1f')],'Campaign'));_0x1cce4a[_0x84d6('0x2b')](db[_0x84d6('0x6')][_0x84d6('0x12')](queryAgents));break;case _0x84d6('0x36'):_0x49902e[_0x5deb1f](_0x84d6('0x28'));_0x49902e[_0x5deb1f](_0x84d6('0x29'));_0x1cce4a['push'](_0x37adf9[_0x84d6('0x37')]({'attributes':['id','name']}));_0x1cce4a['push'](_0x37adf9['getChatQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a['push'](_0x37adf9['getFaxQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9['getSmsQueues']({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9[_0x84d6('0x38')]({'attributes':['id',_0x84d6('0x5')]}));_0x1cce4a[_0x84d6('0x2b')](_0x37adf9[_0x84d6('0x39')]({'attributes':['id','name']}));_0x1cce4a['push'](_0x37adf9[_0x84d6('0x3a')]({'attributes':['id',_0x84d6('0x5')]}));break;}return BPromise[_0x84d6('0x3b')](_0x1cce4a);}})[_0x84d6('0xc')](function(_0x2d3410){if(_0x2d3410&&_0x2d3410[_0x84d6('0x1b')]){for(var _0x282aa4=0x0;_0x282aa4<_0x2d3410['length'];_0x282aa4+=0x1){for(var _0x52e2ee=0x0;_0x52e2ee<_0x2d3410[_0x282aa4][_0x84d6('0x1b')];_0x52e2ee+=0x1){switch(_0x282aa4){case 0x0:joinOrLeaveQueues(_0x49902e,_0x5deb1f,'voice',_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x1:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3c'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x2:joinOrLeaveQueues(_0x49902e,_0x5deb1f,'fax',_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x3:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3d'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x4:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3e'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x5:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x3f'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x6:joinOrLeaveQueues(_0x49902e,_0x5deb1f,_0x84d6('0x40'),_0x2d3410[_0x282aa4][_0x52e2ee]);break;case 0x7:if(_0x1b86f2['role']!==_0x84d6('0x36'))_0x49902e[_0x5deb1f](util['format'](_0x84d6('0x41'),_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x5')]));break;case 0x8:if(_0x1b86f2[_0x84d6('0x7')]!=='agent')_0x49902e[_0x5deb1f](util['format'](_0x84d6('0x42'),_0x2d3410[_0x282aa4][_0x52e2ee]['name']));break;case 0x9:if(_0x1b86f2['role']!=='agent')_0x49902e[_0x5deb1f](util['format']('campaign:%s:%s',_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x9')],_0x2d3410[_0x282aa4][_0x52e2ee]['name']));break;case 0xa:_0x49902e[_0x5deb1f](util[_0x84d6('0x19')](_0x84d6('0x1c'),_0x2d3410[_0x282aa4][_0x52e2ee][_0x84d6('0x5')]));break;}}}}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x401917=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x44')],'id');return _0x1b86f2[_0x84d6('0x45')](_0x401917)['then'](function(){for(var _0x4f73f9=0x0;_0x4f73f9<_0x401917[_0x84d6('0x1b')];_0x4f73f9+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x47'),{'ChatInteractionId':Number(_0x401917[_0x4f73f9]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x3476ee=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x22')],'id');return _0x1b86f2[_0x84d6('0x48')](_0x3476ee)[_0x84d6('0xc')](function(){for(var _0x221027=0x0;_0x221027<_0x3476ee[_0x84d6('0x1b')];_0x221027+=0x1){_0x26e753[_0x84d6('0x46')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x3476ee[_0x221027]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x49a6fb=_['map'](_0x1b86f2[_0x84d6('0x49')],'id');return _0x1b86f2[_0x84d6('0x4a')](_0x49a6fb)[_0x84d6('0xc')](function(){for(var _0x5e000d=0x0;_0x5e000d<_0x49a6fb[_0x84d6('0x1b')];_0x5e000d+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x4b'),{'FaxInteractionId':Number(_0x49a6fb[_0x5e000d]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x56e7b4=_['map'](_0x1b86f2[_0x84d6('0x4c')],'id');return _0x1b86f2[_0x84d6('0x4d')](_0x56e7b4)[_0x84d6('0xc')](function(){for(var _0x5d94ec=0x0;_0x5d94ec<_0x56e7b4['length'];_0x5d94ec+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x4e'),{'SmsInteractionId':Number(_0x56e7b4[_0x5d94ec]),'UserId':Number(_0x1b86f2['id'])});}});}})['then'](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x4f4d66=_[_0x84d6('0x16')](_0x1b86f2['OpenchannelInteractions'],'id');return _0x1b86f2[_0x84d6('0x4f')](_0x4f4d66)['then'](function(){for(var _0x8afbc7=0x0;_0x8afbc7<_0x4f4d66[_0x84d6('0x1b')];_0x8afbc7+=0x1){_0x26e753[_0x84d6('0x46')](_0x84d6('0x50'),{'OpenchannelInteractionId':Number(_0x4f4d66[_0x8afbc7]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0xc')](function(){if(_0x5deb1f===_0x84d6('0x43')){var _0x271950=_[_0x84d6('0x16')](_0x1b86f2[_0x84d6('0x26')],'id');return _0x1b86f2[_0x84d6('0x51')](_0x271950)[_0x84d6('0xc')](function(){for(var _0x1684ca=0x0;_0x1684ca<_0x271950[_0x84d6('0x1b')];_0x1684ca+=0x1){_0x26e753['emit'](_0x84d6('0x52'),{'WhatsappInteractionId':Number(_0x271950[_0x1684ca]),'UserId':Number(_0x1b86f2['id'])});}});}})[_0x84d6('0x53')](function(_0x446515){_0x49902e[_0x84d6('0x54')](_0x446515);});}}function onDisconnect(_0x35987a,_0x2c9fc8){joinOrLeave(_0x35987a,_0x84d6('0x43'),_0x2c9fc8);}function onConnect(_0x5dc292){joinOrLeave(_0x5dc292,'join');}exports[_0x84d6('0x55')]=function(_0x224bdc){_0x224bdc['on'](_0x84d6('0x56'),function(_0x1f7839){_0x1f7839[_0x84d6('0x57')](0x0);_0x1f7839[_0x84d6('0x58')]=_0x1f7839[_0x84d6('0x59')][_0x84d6('0x56')][_0x84d6('0x5a')]+':'+_0x1f7839[_0x84d6('0x59')]['connection'][_0x84d6('0x5b')];_0x1f7839[_0x84d6('0x5c')]=new Date();_0x1f7839[_0x84d6('0x54')]=function(_0x42220d){console[_0x84d6('0x54')](_0x84d6('0x5d')+_0x1f7839[_0x84d6('0x5e')][_0x84d6('0x5')]+'['+_0x1f7839['address']+']',_0x42220d);};_0x1f7839['on'](_0x84d6('0x5f'),function(){onDisconnect(_0x1f7839,_0x224bdc);_0x1f7839['log'](_0x84d6('0x60'));});onConnect(_0x1f7839);_0x1f7839[_0x84d6('0x54')](_0x84d6('0x61'));});};
\ No newline at end of file
+var _0xfece=['push','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','VoiceQueues','ChatQueues','MailQueues','WhatsappQueues','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','length','voice','chat','sms','mail','openchannel','whatsapp','trunk:%s','campaign:%s:%s','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','leave','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','DISCONNECTED','lodash','util','name','telephone','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','FaxQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','map','User','where','role','Campaign','%s:queue:%s','Agents','user:%s','handshake','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','format','admin','voice:inbound','voice:outbound','hasOwnProperty','VoiceQueue'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0xfece,0x19e));var _0xefec=function(_0x1bc369,_0xa446df){_0x1bc369=_0x1bc369-0x0;var _0x3ce4c1=_0xfece[_0x1bc369];return _0x3ce4c1;};'use strict';var _=require(_0xefec('0x0'));var util=require(_0xefec('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xefec('0x2')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0xefec('0x2'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0xefec('0x3')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0xefec('0x2')],'where':{'role':_0xefec('0x4')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xefec('0x2'),_0xefec('0x5')],'where':{'type':_0xefec('0x6')}};function getAssociatedResources(_0x2adff8,_0x526725,_0xd5755c){return db[_0xefec('0x7')][_0xefec('0x8')]({'where':{'name':_0x2adff8,'userProfileId':_0x526725},'raw':!![]})[_0xefec('0x9')](function(_0x2c267b){if(_0x2c267b){if(_0x2c267b[_0xefec('0xa')]){switch(_0x2adff8){case'VoiceQueues':case'ChatQueues':case _0xefec('0xb'):case _0xefec('0xc'):case'MailQueues':case _0xefec('0xd'):case'WhatsappQueues':return db[_0xd5755c][_0xefec('0xe')](queryQueues);case _0xefec('0xf'):return db[_0xd5755c][_0xefec('0xe')](queryTelephones);case _0xefec('0x10'):return db[_0xd5755c][_0xefec('0xe')](queryTrunks);case'IvrCampaigns':return db[_0xd5755c][_0xefec('0xe')](queryCampaigns);}}else{return db[_0xefec('0x11')][_0xefec('0xe')]({'attributes':[_0xefec('0x12')],'where':{'sectionId':_0x2c267b['id']},'raw':!![]})[_0xefec('0x9')](function(_0x5a97ff){if(_0x5a97ff){var _0x3829e4={'where':{'id':_[_0xefec('0x13')](_0x5a97ff,_0xefec('0x12'))},'raw':!![]};switch(_0xd5755c){case _0xefec('0x14'):_0x3829e4[_0xefec('0x15')][_0xefec('0x16')]=_0xefec('0x3');break;case _0xefec('0x17'):_0x3829e4[_0xefec('0x15')]['type']=_0xefec('0x6');break;}return db[_0xd5755c][_0xefec('0xe')](_0x3829e4);}else{return[];}});}}else{return[];}})[_0xefec('0x9')](function(_0x5dfc28){return _0x5dfc28;});}function joinOrLeaveQueues(_0x343b5b,_0x551425,_0x21bd60,_0x174d4e){_0x343b5b[_0x551425](util['format'](_0xefec('0x18'),_0x21bd60,_0x174d4e[_0xefec('0x2')]));if(_0x174d4e[_0xefec('0x19')]){for(var _0x21ff56=0x0;_0x21ff56<_0x174d4e[_0xefec('0x19')]['length'];_0x21ff56+=0x1){_0x343b5b[_0x551425](util['format'](_0xefec('0x1a'),_0x174d4e[_0xefec('0x19')][_0x21ff56]['name']));}}}function joinOrLeave(_0x5f4944,_0x1e697d,_0x27d3a7){var _0x4b5e50;if(_0x5f4944[_0xefec('0x1b')]['query']['id']){db[_0xefec('0x14')][_0xefec('0x1c')]({'attributes':['id',_0xefec('0x2'),'role',_0xefec('0x1d')],'where':{'id':_0x5f4944[_0xefec('0x1b')]['query']['id']},'include':[{'model':db[_0xefec('0x1e')],'as':_0xefec('0x1f'),'attributes':['id'],'raw':!![]},{'model':db[_0xefec('0x20')],'as':_0xefec('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xefec('0x22')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xefec('0x23')],'as':_0xefec('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xefec('0x25')],'as':_0xefec('0x26'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xefec('0x27'),'attributes':['id'],'raw':!![]}]})[_0xefec('0x9')](function(_0x37d76c){if(_0x37d76c){_0x4b5e50=_0x37d76c;_0x5f4944[_0x1e697d](util[_0xefec('0x28')](_0xefec('0x1a'),_0x37d76c[_0xefec('0x2')]));var _0x51f362=[];switch(_0x37d76c[_0xefec('0x16')]){case _0xefec('0x29'):_0x5f4944[_0x1e697d](_0xefec('0x2a'));_0x5f4944[_0x1e697d](_0xefec('0x2b'));if(queryQueues[_0xefec('0x2c')]('include')){delete queryQueues['include'];}_0x51f362['push'](db[_0xefec('0x2d')][_0xefec('0xe')](queryQueues));_0x51f362[_0xefec('0x2e')](db['ChatQueue'][_0xefec('0xe')](queryQueues));_0x51f362['push'](db[_0xefec('0x2f')][_0xefec('0xe')](queryQueues));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x30')][_0xefec('0xe')](queryQueues));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x31')][_0xefec('0xe')](queryQueues));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x32')][_0xefec('0xe')](queryQueues));_0x51f362[_0xefec('0x2e')](db['WhatsappQueue'][_0xefec('0xe')](queryQueues));_0x51f362['push'](db['User'][_0xefec('0xe')](queryTelephones));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x33')]['findAll'](queryTrunks));_0x51f362['push'](db['Campaign'][_0xefec('0xe')](queryCampaigns));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x14')]['findAll'](queryAgents));break;case'user':_0x5f4944[_0x1e697d]('voice:inbound');_0x5f4944[_0x1e697d]('voice:outbound');_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0x34'),_0x37d76c[_0xefec('0x1d')],_0xefec('0x2d')));_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0x35'),_0x37d76c['userProfileId'],'ChatQueue'));_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0xb'),_0x37d76c[_0xefec('0x1d')],_0xefec('0x2f')));_0x51f362['push'](getAssociatedResources(_0xefec('0xc'),_0x37d76c[_0xefec('0x1d')],_0xefec('0x30')));_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0x36'),_0x37d76c[_0xefec('0x1d')],_0xefec('0x31')));_0x51f362['push'](getAssociatedResources(_0xefec('0xd'),_0x37d76c['userProfileId'],'OpenchannelQueue'));_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0x37'),_0x37d76c[_0xefec('0x1d')],'WhatsappQueue'));_0x51f362[_0xefec('0x2e')](getAssociatedResources('Telephones',_0x37d76c[_0xefec('0x1d')],_0xefec('0x14')));_0x51f362[_0xefec('0x2e')](getAssociatedResources(_0xefec('0x10'),_0x37d76c[_0xefec('0x1d')],_0xefec('0x33')));_0x51f362[_0xefec('0x2e')](getAssociatedResources('IvrCampaigns',_0x37d76c[_0xefec('0x1d')],_0xefec('0x17')));_0x51f362[_0xefec('0x2e')](db[_0xefec('0x14')][_0xefec('0xe')](queryAgents));break;case _0xefec('0x4'):_0x5f4944[_0x1e697d](_0xefec('0x2a'));_0x5f4944[_0x1e697d](_0xefec('0x2b'));_0x51f362[_0xefec('0x2e')](_0x37d76c[_0xefec('0x38')]({'attributes':['id',_0xefec('0x2')]}));_0x51f362['push'](_0x37d76c[_0xefec('0x39')]({'attributes':['id',_0xefec('0x2')]}));_0x51f362[_0xefec('0x2e')](_0x37d76c[_0xefec('0x3a')]({'attributes':['id','name']}));_0x51f362[_0xefec('0x2e')](_0x37d76c['getSmsQueues']({'attributes':['id','name']}));_0x51f362[_0xefec('0x2e')](_0x37d76c[_0xefec('0x3b')]({'attributes':['id',_0xefec('0x2')]}));_0x51f362[_0xefec('0x2e')](_0x37d76c[_0xefec('0x3c')]({'attributes':['id',_0xefec('0x2')]}));_0x51f362[_0xefec('0x2e')](_0x37d76c['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0xefec('0x3d')](_0x51f362);}})[_0xefec('0x9')](function(_0x3486e6){if(_0x3486e6&&_0x3486e6[_0xefec('0x3e')]){for(var _0x22886e=0x0;_0x22886e<_0x3486e6[_0xefec('0x3e')];_0x22886e+=0x1){for(var _0x49a394=0x0;_0x49a394<_0x3486e6[_0x22886e][_0xefec('0x3e')];_0x49a394+=0x1){switch(_0x22886e){case 0x0:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x3f'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x1:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x40'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x2:joinOrLeaveQueues(_0x5f4944,_0x1e697d,'fax',_0x3486e6[_0x22886e][_0x49a394]);break;case 0x3:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x41'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x4:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x42'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x5:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x43'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x6:joinOrLeaveQueues(_0x5f4944,_0x1e697d,_0xefec('0x44'),_0x3486e6[_0x22886e][_0x49a394]);break;case 0x7:if(_0x4b5e50[_0xefec('0x16')]!==_0xefec('0x4'))_0x5f4944[_0x1e697d](util[_0xefec('0x28')]('telephone:%s',_0x3486e6[_0x22886e][_0x49a394]['name']));break;case 0x8:if(_0x4b5e50[_0xefec('0x16')]!==_0xefec('0x4'))_0x5f4944[_0x1e697d](util['format'](_0xefec('0x45'),_0x3486e6[_0x22886e][_0x49a394][_0xefec('0x2')]));break;case 0x9:if(_0x4b5e50[_0xefec('0x16')]!==_0xefec('0x4'))_0x5f4944[_0x1e697d](util[_0xefec('0x28')](_0xefec('0x46'),_0x3486e6[_0x22886e][_0x49a394]['type'],_0x3486e6[_0x22886e][_0x49a394][_0xefec('0x2')]));break;case 0xa:_0x5f4944[_0x1e697d](util[_0xefec('0x28')](_0xefec('0x1a'),_0x3486e6[_0x22886e][_0x49a394][_0xefec('0x2')]));break;}}}}})['then'](function(){if(_0x1e697d==='leave'){var _0x362e90=_[_0xefec('0x13')](_0x4b5e50[_0xefec('0x1f')],'id');return _0x4b5e50[_0xefec('0x47')](_0x362e90)['then'](function(){for(var _0x44dcd3=0x0;_0x44dcd3<_0x362e90['length'];_0x44dcd3+=0x1){_0x27d3a7[_0xefec('0x48')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x362e90[_0x44dcd3]),'UserId':Number(_0x4b5e50['id'])});}});}})[_0xefec('0x9')](function(){if(_0x1e697d==='leave'){var _0xae1ceb=_[_0xefec('0x13')](_0x4b5e50[_0xefec('0x21')],'id');return _0x4b5e50[_0xefec('0x49')](_0xae1ceb)[_0xefec('0x9')](function(){for(var _0x43c39e=0x0;_0x43c39e<_0xae1ceb[_0xefec('0x3e')];_0x43c39e+=0x1){_0x27d3a7[_0xefec('0x48')](_0xefec('0x4a'),{'MailInteractionId':Number(_0xae1ceb[_0x43c39e]),'UserId':Number(_0x4b5e50['id'])});}});}})[_0xefec('0x9')](function(){if(_0x1e697d==='leave'){var _0x3af22f=_['map'](_0x4b5e50[_0xefec('0x4b')],'id');return _0x4b5e50['removeFaxInteractions'](_0x3af22f)[_0xefec('0x9')](function(){for(var _0x30ced6=0x0;_0x30ced6<_0x3af22f[_0xefec('0x3e')];_0x30ced6+=0x1){_0x27d3a7[_0xefec('0x48')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3af22f[_0x30ced6]),'UserId':Number(_0x4b5e50['id'])});}});}})[_0xefec('0x9')](function(){if(_0x1e697d===_0xefec('0x4c')){var _0xf58375=_[_0xefec('0x13')](_0x4b5e50['SmsInteractions'],'id');return _0x4b5e50[_0xefec('0x4d')](_0xf58375)[_0xefec('0x9')](function(){for(var _0x28fff6=0x0;_0x28fff6<_0xf58375['length'];_0x28fff6+=0x1){_0x27d3a7[_0xefec('0x48')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xf58375[_0x28fff6]),'UserId':Number(_0x4b5e50['id'])});}});}})[_0xefec('0x9')](function(){if(_0x1e697d===_0xefec('0x4c')){var _0x347b0f=_['map'](_0x4b5e50['OpenchannelInteractions'],'id');return _0x4b5e50[_0xefec('0x4e')](_0x347b0f)['then'](function(){for(var _0x2a5090=0x0;_0x2a5090<_0x347b0f[_0xefec('0x3e')];_0x2a5090+=0x1){_0x27d3a7[_0xefec('0x48')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x347b0f[_0x2a5090]),'UserId':Number(_0x4b5e50['id'])});}});}})[_0xefec('0x9')](function(){if(_0x1e697d===_0xefec('0x4c')){var _0x521327=_['map'](_0x4b5e50['WhatsappInteractions'],'id');return _0x4b5e50[_0xefec('0x4f')](_0x521327)[_0xefec('0x9')](function(){for(var _0x556782=0x0;_0x556782<_0x521327['length'];_0x556782+=0x1){_0x27d3a7['emit'](_0xefec('0x50'),{'WhatsappInteractionId':Number(_0x521327[_0x556782]),'UserId':Number(_0x4b5e50['id'])});}});}})['catch'](function(_0x5680d8){_0x5f4944[_0xefec('0x51')](_0x5680d8);});}}function onDisconnect(_0x26974d,_0xd3a63d){joinOrLeave(_0x26974d,_0xefec('0x4c'),_0xd3a63d);}function onConnect(_0x448ee1){joinOrLeave(_0x448ee1,_0xefec('0x52'));}exports['default']=function(_0x41a0cd){_0x41a0cd['on'](_0xefec('0x53'),function(_0x247ceb){_0x247ceb[_0xefec('0x54')](0x0);_0x247ceb[_0xefec('0x55')]=_0x247ceb[_0xefec('0x56')][_0xefec('0x53')][_0xefec('0x57')]+':'+_0x247ceb[_0xefec('0x56')][_0xefec('0x53')][_0xefec('0x58')];_0x247ceb[_0xefec('0x59')]=new Date();_0x247ceb[_0xefec('0x51')]=function(_0x111369){console[_0xefec('0x51')](_0xefec('0x5a')+_0x247ceb['nsp']['name']+'['+_0x247ceb[_0xefec('0x55')]+']',_0x111369);};_0x247ceb['on']('disconnect',function(){onDisconnect(_0x247ceb,_0x41a0cd);_0x247ceb[_0xefec('0x51')](_0xefec('0x5b'));});onConnect(_0x247ceb);_0x247ceb[_0xefec('0x51')]('CONNECTED');});};
\ No newline at end of file
index 5be55ac..99b1026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e0=['default','hasOwnProperty','model','callback','toLowerCase','util','../../mysqldb','../logger','triggers','http','Chat','afterCreate','newinteraction','ChatInteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','Fax','FaxInteraction','FaxMessage','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','info','Trigger,\x20%s','EventManager','error','catch','channel','motionChannel','event','resolve','then','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','UserId','interface','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','opened','query','SELECT','contact','format','name','AfterCreate','changed','closed','substatus','get','AfterUpdate','find','fullname','email','internal'];(function(_0x14f1a1,_0x4e1aff){var _0xa819f9=function(_0xd835f5){while(--_0xd835f5){_0x14f1a1['push'](_0x14f1a1['shift']());}};_0xa819f9(++_0x4e1aff);}(_0x93e0,0xdd));var _0x093e=function(_0x17746d,_0x53072a){_0x17746d=_0x17746d-0x0;var _0x508a12=_0x93e0[_0x17746d];return _0x508a12;};'use strict';var util=require(_0x093e('0x0'));var db=require(_0x093e('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0x093e('0x2'))(_0x093e('0x3'));var client=jayson['client'][_0x093e('0x4')]({'port':0x232a});var triggers=[{'channel':_0x093e('0x5'),'model':'ChatInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0x093e('0x8'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Chat','model':_0x093e('0xb'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x5'),'model':_0x093e('0xd'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':'SmsInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0xe'),'model':_0x093e('0xf'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':_0x093e('0xe'),'model':_0x093e('0x10'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x11'),'model':'WhatsappInteraction','event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':_0x093e('0x11'),'model':'WhatsappMessage','event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x12'),'model':_0x093e('0x13'),'event':'afterCreate','condition':_0x093e('0x7'),'callback':afterCreate},{'channel':'Fax','model':_0x093e('0x13'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x093e('0x12'),'model':_0x093e('0x14'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':'Mail','model':_0x093e('0x15'),'event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x16'),'model':_0x093e('0x15'),'event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Mail','model':_0x093e('0x17'),'event':_0x093e('0x6'),'condition':_0x093e('0xc'),'callback':afterCreateMessage},{'channel':_0x093e('0x18'),'model':_0x093e('0x19'),'event':_0x093e('0x6'),'condition':_0x093e('0x7'),'callback':afterCreate},{'channel':_0x093e('0x18'),'model':'OpenchannelInteraction','event':_0x093e('0x9'),'condition':_0x093e('0xa'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x093e('0x1a'),'event':'afterCreate','condition':_0x093e('0xc'),'callback':afterCreateMessage}];function request(_0x5148f8){return client[_0x093e('0x1b')]('EventManager',_0x5148f8)['then'](function(_0x31e39b){logger[_0x093e('0x1c')](_0x093e('0x1d'),_0x093e('0x1e'),_0x31e39b);if(_0x31e39b[_0x093e('0x1f')]){if(_0x31e39b[_0x093e('0x1f')]['code']===0x1f4){logger[_0x093e('0x1f')]('Trigger,\x20%s',_0x093e('0x1e'),_0x31e39b[_0x093e('0x1f')]);}}})[_0x093e('0x20')](function(_0x5dd194){logger[_0x093e('0x1f')](_0x093e('0x1d'),_0x093e('0x1e'),_0x5dd194);});}function afterCreateMessage(_0x254533){return function(_0x56d708){_0x56d708=_0x56d708['get']({'plain':!![]});_0x56d708[_0x093e('0x21')]=_0x254533;_0x56d708[_0x093e('0x22')]=_0x254533;_0x56d708[_0x093e('0x23')]=_0x56d708['direction'];Promise[_0x093e('0x24')]()[_0x093e('0x25')](function(){if(typeof _0x56d708[_0x093e('0x26')]===_0x093e('0x27'))return null;var _0x13064f=_0x093e('0x28')+_0x56d708[_0x093e('0x26')];return db[_0x093e('0x29')]['query'](_0x13064f,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')]['SELECT'],'raw':!![]});})[_0x093e('0x25')](function(_0xcdc13e){if(_0xcdc13e){_0x56d708['contact']=_0xcdc13e[0x0];}if(typeof _0x56d708['UserId']===_0x093e('0x27'))return;return getAgent(_0x56d708[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x56d1cb){if(_0x56d1cb){_0x56d708[_0x093e('0x2d')]=util['format'](_0x093e('0x2e'),_0x56d1cb['name']);_0x56d708[_0x093e('0x2f')]=_0x56d1cb;_0x56d708['channel']=_0x254533;return request({'event':_0x093e('0x30'),'message':_0x56d708});}else{return request({'event':_0x093e('0x31'),'message':_0x56d708});}})[_0x093e('0x20')](function(_0x478797){logger['error'](_0x093e('0x1d'),_0x093e('0x32'),_0x478797);});};}function afterCreateOfflineMessage(_0x1c35b2){return function(_0x382584){_0x382584=_0x382584['get']({'plain':!![]});_0x382584[_0x093e('0x21')]=_0x1c35b2;_0x382584[_0x093e('0x22')]=_0x1c35b2;_0x382584[_0x093e('0x23')]='offlineMessage';return request({'event':_0x382584[_0x093e('0x23')],'message':_0x382584});};}function afterCreate(_0x58d506,_0x1efe64){return function(_0x79ba1c){_0x79ba1c=_0x79ba1c['get']({'plain':!![]});_0x79ba1c[_0x093e('0x21')]=_0x58d506;_0x79ba1c[_0x093e('0x22')]=_0x58d506;_0x79ba1c[_0x093e('0x23')]=_0x093e('0x33');Promise[_0x093e('0x24')]()[_0x093e('0x25')](function(){var _0x199da9='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x79ba1c['ContactId'];return db['sequelize'][_0x093e('0x34')](_0x199da9,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')][_0x093e('0x35')],'raw':!![]});})[_0x093e('0x25')](function(_0xecf0e8){if(_0xecf0e8){_0x79ba1c[_0x093e('0x36')]=_0xecf0e8[0x0];}if(typeof _0x79ba1c[_0x093e('0x2c')]==='undefined')return;return getAgent(_0x79ba1c[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x4f2820){if(_0x4f2820){_0x79ba1c[_0x093e('0x2d')]=util[_0x093e('0x37')](_0x093e('0x2e'),_0x4f2820[_0x093e('0x38')]);_0x79ba1c[_0x093e('0x2f')]=_0x4f2820;}return request({'event':_0x1efe64,'message':_0x79ba1c});})[_0x093e('0x20')](function(_0x86ab4f){logger[_0x093e('0x1f')](_0x093e('0x1d'),_0x093e('0x39'),_0x86ab4f);});};}function afterUpdate(_0x561f4c){return function(_0x350884){var _0x5df6f6=_0x350884[_0x093e('0x3a')](_0x093e('0x3b'))&&_0x350884[_0x093e('0x3b')];var _0x576cc4=_0x350884[_0x093e('0x3a')](_0x093e('0x3c'));if(_0x5df6f6||_0x576cc4){var _0x600097=_0x5df6f6?'closedinteraction':_0x093e('0x3c');var _0x1720bb=_0x350884[_0x093e('0x3d')]({'plain':!![]});_0x1720bb['channel']=_0x561f4c;_0x1720bb[_0x093e('0x22')]=_0x561f4c;_0x1720bb[_0x093e('0x23')]=_0x5df6f6?_0x093e('0x3b'):_0x093e('0x3c');var _0x2612a2=_0x093e('0x28')+_0x1720bb[_0x093e('0x26')];return db[_0x093e('0x29')][_0x093e('0x34')](_0x2612a2,{'type':db[_0x093e('0x2a')][_0x093e('0x2b')][_0x093e('0x35')],'raw':!![]})[_0x093e('0x25')](function(_0xfc508b){if(_0xfc508b){_0x1720bb[_0x093e('0x36')]=_0xfc508b[0x0];}if(typeof _0x1720bb[_0x093e('0x2c')]===_0x093e('0x27'))return;return getAgent(_0x1720bb[_0x093e('0x2c')]);})[_0x093e('0x25')](function(_0x10566c){if(_0x10566c){_0x1720bb['interface']=util[_0x093e('0x37')](_0x093e('0x2e'),_0x10566c[_0x093e('0x38')]);_0x1720bb[_0x093e('0x2f')]=_0x10566c;}return request({'event':_0x600097,'message':_0x1720bb});})[_0x093e('0x20')](function(_0x3da414){logger['error'](_0x093e('0x1d'),_0x093e('0x3e'),_0x3da414);});}};}function getAgent(_0x3bb263){return db['User'][_0x093e('0x3f')]({'where':{'id':_0x3bb263},'attributes':['id',_0x093e('0x38'),_0x093e('0x40'),_0x093e('0x41'),_0x093e('0x42')],'raw':!![]})['then'](function(_0x3befcb){return _0x3befcb;});}exports[_0x093e('0x43')]=function(){for(var _0x44d19a=0x0;_0x44d19a<triggers['length'];_0x44d19a+=0x1){if(db[_0x093e('0x44')](triggers[_0x44d19a][_0x093e('0x45')])){db[triggers[_0x44d19a][_0x093e('0x45')]]['hook'](triggers[_0x44d19a][_0x093e('0x23')],triggers[_0x44d19a][_0x093e('0x46')](triggers[_0x44d19a][_0x093e('0x21')][_0x093e('0x47')](),triggers[_0x44d19a]['condition']));}}};
\ No newline at end of file
+var _0xfcdd=['then','info','Trigger,\x20%s','error','catch','get','channel','motionChannel','event','direction','resolve','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','query','Sequelize','QueryTypes','SELECT','contact','UserId','interface','format','name','agent','incomingmessage','outgoingmessage','offlineMessage','opened','sequelize','AfterCreate','changed','closed','substatus','SIP/%s','AfterUpdate','User','find','internal','default','length','hasOwnProperty','model','hook','callback','condition','util','../../mysqldb','../logger','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','WhatsappInteraction','Fax','FaxInteraction','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfcdd,0x195));var _0xdfcd=function(_0x454028,_0x47a059){_0x454028=_0x454028-0x0;var _0x56476a=_0xfcdd[_0x454028];return _0x56476a;};'use strict';var util=require(_0xdfcd('0x0'));var db=require(_0xdfcd('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0xdfcd('0x2'))('triggers');var client=jayson['client'][_0xdfcd('0x3')]({'port':0x232a});var triggers=[{'channel':_0xdfcd('0x4'),'model':_0xdfcd('0x5'),'event':_0xdfcd('0x6'),'condition':_0xdfcd('0x7'),'callback':afterCreate},{'channel':'Chat','model':'ChatInteraction','event':_0xdfcd('0x8'),'condition':_0xdfcd('0x9'),'callback':afterUpdate},{'channel':'Chat','model':_0xdfcd('0xa'),'event':'afterCreate','condition':_0xdfcd('0xb'),'callback':afterCreateMessage},{'channel':_0xdfcd('0x4'),'model':_0xdfcd('0xc'),'event':'afterCreate','condition':_0xdfcd('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0xdfcd('0xd'),'model':_0xdfcd('0xe'),'event':_0xdfcd('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':'Sms','model':_0xdfcd('0xe'),'event':_0xdfcd('0x8'),'condition':_0xdfcd('0x9'),'callback':afterUpdate},{'channel':_0xdfcd('0xd'),'model':_0xdfcd('0xf'),'event':'afterCreate','condition':_0xdfcd('0xb'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0xdfcd('0x10'),'event':'afterCreate','condition':_0xdfcd('0x7'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xdfcd('0x10'),'event':_0xdfcd('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Whatsapp','model':'WhatsappMessage','event':'afterCreate','condition':_0xdfcd('0xb'),'callback':afterCreateMessage},{'channel':_0xdfcd('0x11'),'model':'FaxInteraction','event':_0xdfcd('0x6'),'condition':_0xdfcd('0x7'),'callback':afterCreate},{'channel':'Fax','model':_0xdfcd('0x12'),'event':_0xdfcd('0x8'),'condition':_0xdfcd('0x9'),'callback':afterUpdate},{'channel':_0xdfcd('0x11'),'model':'FaxMessage','event':_0xdfcd('0x6'),'condition':_0xdfcd('0xb'),'callback':afterCreateMessage},{'channel':'Mail','model':_0xdfcd('0x13'),'event':_0xdfcd('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xdfcd('0x14'),'model':'MailInteraction','event':'afterUpdate','condition':_0xdfcd('0x9'),'callback':afterUpdate},{'channel':'Mail','model':_0xdfcd('0x15'),'event':_0xdfcd('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xdfcd('0x16'),'model':'OpenchannelInteraction','event':_0xdfcd('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':'Openchannel','model':_0xdfcd('0x17'),'event':_0xdfcd('0x8'),'condition':_0xdfcd('0x9'),'callback':afterUpdate},{'channel':_0xdfcd('0x16'),'model':_0xdfcd('0x18'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage}];function request(_0xc8bacb){return client[_0xdfcd('0x19')](_0xdfcd('0x1a'),_0xc8bacb)[_0xdfcd('0x1b')](function(_0x474195){logger[_0xdfcd('0x1c')](_0xdfcd('0x1d'),'EventManager',_0x474195);if(_0x474195[_0xdfcd('0x1e')]){if(_0x474195[_0xdfcd('0x1e')]['code']===0x1f4){logger[_0xdfcd('0x1e')]('Trigger,\x20%s',_0xdfcd('0x1a'),_0x474195[_0xdfcd('0x1e')]);}}})[_0xdfcd('0x1f')](function(_0x410c56){logger[_0xdfcd('0x1e')](_0xdfcd('0x1d'),'EventManager',_0x410c56);});}function afterCreateMessage(_0x3a1329){return function(_0x47ed0b){_0x47ed0b=_0x47ed0b[_0xdfcd('0x20')]({'plain':!![]});_0x47ed0b[_0xdfcd('0x21')]=_0x3a1329;_0x47ed0b[_0xdfcd('0x22')]=_0x3a1329;_0x47ed0b[_0xdfcd('0x23')]=_0x47ed0b[_0xdfcd('0x24')];Promise[_0xdfcd('0x25')]()['then'](function(){if(typeof _0x47ed0b['ContactId']===_0xdfcd('0x26'))return null;var _0x575067=_0xdfcd('0x27')+_0x47ed0b[_0xdfcd('0x28')];return db['sequelize'][_0xdfcd('0x29')](_0x575067,{'type':db[_0xdfcd('0x2a')][_0xdfcd('0x2b')][_0xdfcd('0x2c')],'raw':!![]});})[_0xdfcd('0x1b')](function(_0x48eb51){if(_0x48eb51){_0x47ed0b[_0xdfcd('0x2d')]=_0x48eb51[0x0];}if(typeof _0x47ed0b[_0xdfcd('0x2e')]===_0xdfcd('0x26'))return;return getAgent(_0x47ed0b[_0xdfcd('0x2e')]);})[_0xdfcd('0x1b')](function(_0x56438b){if(_0x56438b){_0x47ed0b[_0xdfcd('0x2f')]=util[_0xdfcd('0x30')]('SIP/%s',_0x56438b[_0xdfcd('0x31')]);_0x47ed0b[_0xdfcd('0x32')]=_0x56438b;_0x47ed0b['channel']=_0x3a1329;return request({'event':_0xdfcd('0x33'),'message':_0x47ed0b});}else{return request({'event':_0xdfcd('0x34'),'message':_0x47ed0b});}})['catch'](function(_0x24fcd0){logger[_0xdfcd('0x1e')](_0xdfcd('0x1d'),'AfterCreateMessage',_0x24fcd0);});};}function afterCreateOfflineMessage(_0x3c1585){return function(_0x51cd52){_0x51cd52=_0x51cd52[_0xdfcd('0x20')]({'plain':!![]});_0x51cd52[_0xdfcd('0x21')]=_0x3c1585;_0x51cd52[_0xdfcd('0x22')]=_0x3c1585;_0x51cd52[_0xdfcd('0x23')]=_0xdfcd('0x35');return request({'event':_0x51cd52[_0xdfcd('0x23')],'message':_0x51cd52});};}function afterCreate(_0x2a82c3,_0x5440a7){return function(_0x399929){_0x399929=_0x399929[_0xdfcd('0x20')]({'plain':!![]});_0x399929['channel']=_0x2a82c3;_0x399929[_0xdfcd('0x22')]=_0x2a82c3;_0x399929['event']=_0xdfcd('0x36');Promise[_0xdfcd('0x25')]()[_0xdfcd('0x1b')](function(){var _0x37a449='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x399929[_0xdfcd('0x28')];return db[_0xdfcd('0x37')][_0xdfcd('0x29')](_0x37a449,{'type':db[_0xdfcd('0x2a')]['QueryTypes'][_0xdfcd('0x2c')],'raw':!![]});})[_0xdfcd('0x1b')](function(_0x593ffc){if(_0x593ffc){_0x399929[_0xdfcd('0x2d')]=_0x593ffc[0x0];}if(typeof _0x399929[_0xdfcd('0x2e')]===_0xdfcd('0x26'))return;return getAgent(_0x399929['UserId']);})['then'](function(_0x19edd1){if(_0x19edd1){_0x399929['interface']=util[_0xdfcd('0x30')]('SIP/%s',_0x19edd1[_0xdfcd('0x31')]);_0x399929['agent']=_0x19edd1;}return request({'event':_0x5440a7,'message':_0x399929});})['catch'](function(_0x1976b1){logger[_0xdfcd('0x1e')](_0xdfcd('0x1d'),_0xdfcd('0x38'),_0x1976b1);});};}function afterUpdate(_0x39cb5e){return function(_0xa70357){var _0x2b634a=_0xa70357[_0xdfcd('0x39')]('closed')&&_0xa70357[_0xdfcd('0x3a')];var _0x579697=_0xa70357[_0xdfcd('0x39')](_0xdfcd('0x3b'));if(_0x2b634a||_0x579697){var _0x5bed02=_0x2b634a?_0xdfcd('0x9'):_0xdfcd('0x3b');var _0x3e8692=_0xa70357[_0xdfcd('0x20')]({'plain':!![]});_0x3e8692['channel']=_0x39cb5e;_0x3e8692['motionChannel']=_0x39cb5e;_0x3e8692[_0xdfcd('0x23')]=_0x2b634a?'closed':_0xdfcd('0x3b');var _0x2de7dc=_0xdfcd('0x27')+_0x3e8692[_0xdfcd('0x28')];return db['sequelize'][_0xdfcd('0x29')](_0x2de7dc,{'type':db[_0xdfcd('0x2a')]['QueryTypes'][_0xdfcd('0x2c')],'raw':!![]})[_0xdfcd('0x1b')](function(_0x15b636){if(_0x15b636){_0x3e8692['contact']=_0x15b636[0x0];}if(typeof _0x3e8692[_0xdfcd('0x2e')]===_0xdfcd('0x26'))return;return getAgent(_0x3e8692[_0xdfcd('0x2e')]);})[_0xdfcd('0x1b')](function(_0x26d2d2){if(_0x26d2d2){_0x3e8692[_0xdfcd('0x2f')]=util[_0xdfcd('0x30')](_0xdfcd('0x3c'),_0x26d2d2[_0xdfcd('0x31')]);_0x3e8692[_0xdfcd('0x32')]=_0x26d2d2;}return request({'event':_0x5bed02,'message':_0x3e8692});})['catch'](function(_0x442dc0){logger[_0xdfcd('0x1e')]('Trigger,\x20%s',_0xdfcd('0x3d'),_0x442dc0);});}};}function getAgent(_0x3de83f){return db[_0xdfcd('0x3e')][_0xdfcd('0x3f')]({'where':{'id':_0x3de83f},'attributes':['id',_0xdfcd('0x31'),'fullname','email',_0xdfcd('0x40')],'raw':!![]})['then'](function(_0x1e5c4b){return _0x1e5c4b;});}exports[_0xdfcd('0x41')]=function(){for(var _0x2cb7ba=0x0;_0x2cb7ba<triggers[_0xdfcd('0x42')];_0x2cb7ba+=0x1){if(db[_0xdfcd('0x43')](triggers[_0x2cb7ba][_0xdfcd('0x44')])){db[triggers[_0x2cb7ba]['model']][_0xdfcd('0x45')](triggers[_0x2cb7ba][_0xdfcd('0x23')],triggers[_0x2cb7ba][_0xdfcd('0x46')](triggers[_0x2cb7ba]['channel']['toLowerCase'](),triggers[_0x2cb7ba][_0xdfcd('0x47')]));}}};
\ No newline at end of file
index 485c3f5..98d0581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd143=['updateAttributes','getLicense','role','User','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','toLowerCase','clearBlockUser','blockedAt'];(function(_0x46e900,_0x4a2c54){var _0x1de732=function(_0x3e7bb){while(--_0x3e7bb){_0x46e900['push'](_0x46e900['shift']());}};_0x1de732(++_0x4a2c54);}(_0xd143,0x159));var _0x3d14=function(_0x4e452a,_0x5b5007){_0x4e452a=_0x4e452a-0x0;var _0x4e793a=_0xd143[_0x4e452a];return _0x4e793a;};'use strict';var _=require(_0x3d14('0x0'));var BPromise=require(_0x3d14('0x1'));var db=require(_0x3d14('0x2'))['db'];var util=require(_0x3d14('0x3'));var channels=[_0x3d14('0x4'),_0x3d14('0x5'),_0x3d14('0x6'),_0x3d14('0x7'),_0x3d14('0x8'),_0x3d14('0x9'),_0x3d14('0xa')];exports[_0x3d14('0xb')]=function(){return channels;};exports['isValidChannel']=function(_0xb6c38){_0xb6c38=_0xb6c38[_0x3d14('0xc')]();return _['includes'](channels,_0xb6c38);};exports[_0x3d14('0xd')]=function(_0x23092f,_0x495e06,_0x3d3dc9,_0x615806){var _0x49576f={'loginAttempts':_0x495e06,'blocked':_0x3d3dc9};if(!_['isUndefined'](_0x615806)){_0x49576f[_0x3d14('0xe')]=_0x615806;}return _0x23092f[_0x3d14('0xf')](_0x49576f);};exports[_0x3d14('0x10')]=function(_0x2b0b7d){return new BPromise(function(_0x181b1f,_0x2fc7bd){var _0xfc6f15=0x0;if(_0x2b0b7d[_0x3d14('0x11')]!=='agent'){_0x181b1f(_0x2b0b7d);}db[_0x3d14('0x12')][_0x3d14('0x13')]({'where':{'role':_0x3d14('0x14'),'online':!![],'id':{'$ne':_0x2b0b7d['id']}}})[_0x3d14('0x15')](function(_0xfb552e){_0xfc6f15=_0xfb552e;return util[_0x3d14('0x10')]();})[_0x3d14('0x15')](function(_0x29749){if(_0x29749&&_0x29749[_0x3d14('0x16')]&&_0xfc6f15>=_0x29749[_0x3d14('0x16')]){throw Error(_0x3d14('0x17'));}_0x181b1f(_0x2b0b7d);})['catch'](function(_0x3d3829){_0x2fc7bd(_0x3d3829);});});};
\ No newline at end of file
+var _0x6513=['Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','includes','clearBlockUser','isUndefined','blockedAt','getLicense','role','agent','User','count','then','agents'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6513,0xd0));var _0x3651=function(_0x6ca7f4,_0x51a5df){_0x6ca7f4=_0x6ca7f4-0x0;var _0x494fa6=_0x6513[_0x6ca7f4];return _0x494fa6;};'use strict';var _=require(_0x3651('0x0'));var BPromise=require(_0x3651('0x1'));var db=require(_0x3651('0x2'))['db'];var util=require('./license/util');var channels=['voice',_0x3651('0x3'),_0x3651('0x4'),_0x3651('0x5'),_0x3651('0x6'),_0x3651('0x7'),_0x3651('0x8')];exports[_0x3651('0x9')]=function(){return channels;};exports[_0x3651('0xa')]=function(_0x167259){_0x167259=_0x167259['toLowerCase']();return _[_0x3651('0xb')](channels,_0x167259);};exports[_0x3651('0xc')]=function(_0x3e2e81,_0x426912,_0x3dcbe4,_0x16879d){var _0x2beb64={'loginAttempts':_0x426912,'blocked':_0x3dcbe4};if(!_[_0x3651('0xd')](_0x16879d)){_0x2beb64[_0x3651('0xe')]=_0x16879d;}return _0x3e2e81['updateAttributes'](_0x2beb64);};exports[_0x3651('0xf')]=function(_0x4a292f){return new BPromise(function(_0x1cbbb0,_0x221288){var _0x26d64d=0x0;if(_0x4a292f[_0x3651('0x10')]!==_0x3651('0x11')){_0x1cbbb0(_0x4a292f);}db[_0x3651('0x12')][_0x3651('0x13')]({'where':{'role':_0x3651('0x11'),'online':!![],'id':{'$ne':_0x4a292f['id']}}})['then'](function(_0x2b5596){_0x26d64d=_0x2b5596;return util[_0x3651('0xf')]();})[_0x3651('0x14')](function(_0x17a61b){if(_0x17a61b&&_0x17a61b[_0x3651('0x15')]&&_0x26d64d>=_0x17a61b[_0x3651('0x15')]){throw Error(_0x3651('0x16'));}_0x1cbbb0(_0x4a292f);})['catch'](function(_0xfa8627){_0x221288(_0xfa8627);});});};
\ No newline at end of file
index 5bf9336..bc45280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','inherits','Bad\x20Request','Not\x20Found','Forbidden','OutOfInterval','error','stack','status'];(function(_0x363b9c,_0x175500){var _0x2a8edd=function(_0x423a78){while(--_0x423a78){_0x363b9c['push'](_0x363b9c['shift']());}};_0x2a8edd(++_0x175500);}(_0x54ef,0x112));var _0xf54e=function(_0x3cf934,_0x22cb63){_0x3cf934=_0x3cf934-0x0;var _0x336ed4=_0x54ef[_0x3cf934];return _0x336ed4;};'use strict';var util=require(_0xf54e('0x0'));var logger=require(_0xf54e('0x1'))(_0xf54e('0x2'));var APIError=function(_0x5d180f,_0xd936f7){this[_0xf54e('0x3')]=_0x5d180f||_0xf54e('0x4');this[_0xf54e('0x5')]=_0xd936f7||_0xf54e('0x6');util[_0xf54e('0x7')](APIError,Error);};var APIBadRequestError=function(_0x12d43f){this['message']=_0x12d43f||'Bad\x20Request';this[_0xf54e('0x5')]=_0xf54e('0x8');util[_0xf54e('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x561870){this[_0xf54e('0x3')]=_0x561870||'Entity\x20not\x20found';this[_0xf54e('0x5')]=_0xf54e('0x9');util['inherits'](APINotFoundError,APIError);};function getStatusCode(_0x26fc3e){switch(_0x26fc3e){case _0xf54e('0x8'):return 0x190;case _0xf54e('0xa'),_0xf54e('0xb'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x558502){return function(_0xc939ab){logger[_0xf54e('0xc')](_0xc939ab[_0xf54e('0xd')]);var _0x553759=getStatusCode(_0xc939ab[_0xf54e('0x5')]);if(_0xc939ab['name'])delete _0xc939ab['name'];return _0x558502[_0xf54e('0xe')](_0x553759)[_0xf54e('0xf')](_0xc939ab);};}module[_0xf54e('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x91a7=['name','inherits','Entity\x20not\x20found','Not\x20Found','Forbidden','OutOfInterval','error','stack','status','send','../config/logger','api','message'];(function(_0x3e732e,_0x547c60){var _0x364bb8=function(_0x49150d){while(--_0x49150d){_0x3e732e['push'](_0x3e732e['shift']());}};_0x364bb8(++_0x547c60);}(_0x91a7,0xe7));var _0x791a=function(_0x447a43,_0x7a4da7){_0x447a43=_0x447a43-0x0;var _0x4b7de6=_0x91a7[_0x447a43];return _0x4b7de6;};'use strict';var util=require('util');var logger=require(_0x791a('0x0'))(_0x791a('0x1'));var APIError=function(_0x268862,_0x5d2796){this[_0x791a('0x2')]=_0x268862||'Internal\x20Server\x20Error';this[_0x791a('0x3')]=_0x5d2796||'Error';util['inherits'](APIError,Error);};var APIBadRequestError=function(_0x32fe2b){this[_0x791a('0x2')]=_0x32fe2b||'Bad\x20Request';this[_0x791a('0x3')]='Bad\x20Request';util[_0x791a('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x159e24){this['message']=_0x159e24||_0x791a('0x5');this[_0x791a('0x3')]=_0x791a('0x6');util[_0x791a('0x4')](APINotFoundError,APIError);};function getStatusCode(_0x266e4b){switch(_0x266e4b){case'Bad\x20Request':return 0x190;case _0x791a('0x7'),_0x791a('0x8'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x2bd26a){return function(_0x206eea){logger[_0x791a('0x9')](_0x206eea[_0x791a('0xa')]);var _0x2805c9=getStatusCode(_0x206eea[_0x791a('0x3')]);if(_0x206eea['name'])delete _0x206eea['name'];return _0x2bd26a[_0x791a('0xb')](_0x2805c9)[_0x791a('0xc')](_0x206eea);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 85d901b..ad7df90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9755=['404','status','render','json','exports'];(function(_0x50d903,_0x4af768){var _0xf2c4be=function(_0x2d9c04){while(--_0x2d9c04){_0x50d903['push'](_0x50d903['shift']());}};_0xf2c4be(++_0x4af768);}(_0x9755,0x1c6));var _0x5975=function(_0x1221e8,_0x2e7229){_0x1221e8=_0x1221e8-0x0;var _0x3f3041=_0x9755[_0x1221e8];return _0x3f3041;};'use strict';module[_0x5975('0x0')][0x194]=function pageNotFound(_0x4c56bb,_0x7ec675){var _0x2d9d91=_0x5975('0x1');var _0x5e3640=0x194;var _0x53201e={'status':_0x5e3640};_0x7ec675['status'](_0x53201e[_0x5975('0x2')]);_0x7ec675[_0x5975('0x3')](_0x2d9d91,{},function(_0x2b7c96,_0x1a201e){if(_0x2b7c96){return _0x7ec675[_0x5975('0x2')](_0x53201e[_0x5975('0x2')])[_0x5975('0x4')](_0x53201e);}_0x7ec675['send'](_0x1a201e);});};
\ No newline at end of file
+var _0x0036=['exports','404','status','render','json'];(function(_0x3725ee,_0x543bd9){var _0x399c71=function(_0xaf9400){while(--_0xaf9400){_0x3725ee['push'](_0x3725ee['shift']());}};_0x399c71(++_0x543bd9);}(_0x0036,0x73));var _0x6003=function(_0x136f0a,_0x474c3a){_0x136f0a=_0x136f0a-0x0;var _0x2f3e94=_0x0036[_0x136f0a];return _0x2f3e94;};'use strict';module[_0x6003('0x0')][0x194]=function pageNotFound(_0xb69068,_0x4151c2){var _0x1341b4=_0x6003('0x1');var _0x41a61d=0x194;var _0x3aa11b={'status':_0x41a61d};_0x4151c2[_0x6003('0x2')](_0x3aa11b[_0x6003('0x2')]);_0x4151c2[_0x6003('0x3')](_0x1341b4,{},function(_0x110734,_0x26d8d1){if(_0x110734){return _0x4151c2[_0x6003('0x2')](_0x3aa11b[_0x6003('0x2')])[_0x6003('0x4')](_0x3aa11b);}_0x4151c2['send'](_0x26d8d1);});};
\ No newline at end of file
index 94c3311..fc1b62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4329=['../api/contactItemType/contactItemType.model','CmContactHasItem','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','AnalyticExtractedReport','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','../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','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/squareOdbc/squareOdbc.model','SquareProject','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','../api/campaign/campaign.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','UserNotification','belongsTo','userProfileId','Groups','chat_group_has_users','belongsToMany','Contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','SmsInteraction','user_has_sms_interactions','WhatsappInteraction','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefix','VoicePrefixes','MailQueues','ChatQueues','FaxQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','user_has_chat_websites','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','ChanSpyId','Applications','Sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','Trunk','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','VoiceMailMessage','Messages','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','Contact','MailServerIn','MailAccountId','CloudProviderId','restrict','MailServerOut','Imap','Smtp','Dispositions','Answers','ListId','Agents','team_has_mail_queues','MailInteractionId','Tags','Users','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','TagId','List','ContactId','Items','FaxAccountId','Interactions','Owner','fax_interaction_has_tags','ThroughTags','team_has_fax_queues','SmsAccountId','SmsQueue','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','IntervalId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatApplication','ChatMessage','Website','ChatInteractionId','chat_interaction_has_tags','AttachmentId','Attachments','ChatGroupId','CompanyId','Phones','CmContactId','Hoppers','Company','cm_user_has_contacts','cm_contact_has_tags','AdditionalPhones','CmHopperId','Agent','Queue','OwnerId','CampaignId','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Intervals','ChatApplications','FaxApplications','DefaultReportId','Mohs','mail_interaction_has_tags','whatsapp_interaction_has_tags','ItemType','ItemTypeId','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Actions','TriggerId','Fields','CustomReportId','AnalyticMetric','MetricId','Configurations','AccountId','Subjects','Descriptions','DescriptionId','SubjectId','FieldId','VariableId','SugarcrmConfiguration','Description','Field','DeskAccount','DeskField','int_desk_configuration_has_tags','Subject','ZendeskField','int_zendesk_configuration_has_tags','FreshdeskField','int_freshdesk_configuration_has_tags','ServicenowAccount','Dynamics365Configuration','ChatQueueReport','ToId','SessionId','team_has_chat_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','ToAgent','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromUserId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSection','UserProfileSections','UserProfileResource','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','sequelize','lodash','determine','defaultsDeep','xcall','xC@LL1234','mysql','utf8mb4','utf8','sequelizeHistory','motion2','127.0.0.1','utf8_general_ci','password','options','username','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','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','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType'];(function(_0x4b03c9,_0x17ce03){var _0x161ba2=function(_0xb952db){while(--_0xb952db){_0x4b03c9['push'](_0x4b03c9['shift']());}};_0x161ba2(++_0x17ce03);}(_0x4329,0x170));var _0x9432=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x4329[_0x432682];return _0x463d05;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x9432('0x0'));var _=require(_0x9432('0x1'));var jstz=require('jstz');var timezone=jstz[_0x9432('0x2')]();config[_0x9432('0x0')]=_[_0x9432('0x3')](config[_0x9432('0x0')],{'database':'motion2','username':_0x9432('0x4'),'password':_0x9432('0x5'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x9432('0x6'),'dialectOptions':{'charset':_0x9432('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x9432('0x8'),'collate':'utf8_general_ci'}}});config[_0x9432('0x9')]=_['defaultsDeep'](config[_0x9432('0x9')],{'database':_0x9432('0xa'),'username':'xcall','password':_0x9432('0x5'),'options':{'host':_0x9432('0xb'),'port':0xcea,'dialect':_0x9432('0x6'),'dialectOptions':{'charset':_0x9432('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x9432('0x8'),'collate':_0x9432('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9432('0x0')]['database'],config[_0x9432('0x0')]['username'],config['sequelize'][_0x9432('0xd')],config[_0x9432('0x0')][_0x9432('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config['sequelizeHistory'][_0x9432('0xf')],config[_0x9432('0x9')]['password'],config[_0x9432('0x9')][_0x9432('0xe')])};db[_0x9432('0x10')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x12'));db['VoiceChanSpy']=db['sequelize'][_0x9432('0x11')](_0x9432('0x13'));db[_0x9432('0x14')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x15'));db[_0x9432('0x16')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceExtension/voiceExtension.model');db[_0x9432('0x17')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x18'));db[_0x9432('0x19')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceQueue/voiceQueue.model');db[_0x9432('0x1a')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/voiceRecording/voiceRecording.model');db[_0x9432('0x1b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x1c'));db[_0x9432('0x1d')]=db['sequelize']['import'](_0x9432('0x1e'));db['VoiceMailMessage']=db['sequelize'][_0x9432('0x11')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x9432('0x1f')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x20'));db[_0x9432('0x21')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x22'));db[_0x9432('0x23')]=db['sequelize']['import'](_0x9432('0x24'));db['VoiceQueueReport']=db['sequelize'][_0x9432('0x11')](_0x9432('0x25'));db[_0x9432('0x26')]=db[_0x9432('0x0')]['import'](_0x9432('0x27'));db['Trunk']=db[_0x9432('0x0')]['import'](_0x9432('0x28'));db[_0x9432('0x29')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x2a'));db[_0x9432('0x2b')]=db[_0x9432('0x0')]['import'](_0x9432('0x2c'));db[_0x9432('0x2d')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x9432('0x2e')]=db['sequelize']['import'](_0x9432('0x2f'));db[_0x9432('0x30')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x31'));db[_0x9432('0x32')]=db['sequelize']['import']('../api/userFaxQueue/userFaxQueue.model');db[_0x9432('0x33')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db['sequelize'][_0x9432('0x11')](_0x9432('0x34'));db[_0x9432('0x35')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x36'));db['MailServerIn']=db['sequelize']['import']('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x9432('0x0')]['import']('../api/mailServerOut/mailServerOut.model');db['MailAccount']=db['sequelize'][_0x9432('0x11')]('../api/mailAccount/mailAccount.model');db[_0x9432('0x37')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x38'));db[_0x9432('0x39')]=db[_0x9432('0x0')]['import'](_0x9432('0x3a'));db[_0x9432('0x3b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x3c'));db[_0x9432('0x3d')]=db['sequelize'][_0x9432('0x11')]('../api/mailMessage/mailMessage.model');db[_0x9432('0x3e')]=db[_0x9432('0x0')]['import'](_0x9432('0x3f'));db[_0x9432('0x40')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x41'));db[_0x9432('0x42')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/dashboard/dashboard.model');db[_0x9432('0x43')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x44'));db[_0x9432('0x45')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x46'));db[_0x9432('0x47')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x48'));db[_0x9432('0x49')]=db[_0x9432('0x0')]['import'](_0x9432('0x4a'));db[_0x9432('0x4b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x4c'));db[_0x9432('0x4d')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x4e'));db[_0x9432('0x4f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x50'));db[_0x9432('0x51')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x52'));db[_0x9432('0x53')]=db['sequelize']['import'](_0x9432('0x54'));db['SmsInteraction']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x55'));db[_0x9432('0x56')]=db['sequelize'][_0x9432('0x11')]('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x57'));db[_0x9432('0x58')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x59'));db[_0x9432('0x5a')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x5b'));db['OpenchannelInteraction']=db[_0x9432('0x0')]['import'](_0x9432('0x5c'));db[_0x9432('0x5d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x5e'));db[_0x9432('0x5f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x60'));db[_0x9432('0x61')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x62'));db[_0x9432('0x63')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x64'));db[_0x9432('0x65')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x66'));db['ChatMessage']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x67'));db[_0x9432('0x68')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x69'));db[_0x9432('0x6a')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x6b'));db[_0x9432('0x6c')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/chatGroup/chatGroup.model');db[_0x9432('0x6d')]=db[_0x9432('0x0')]['import']('../api/chatProactiveAction/chatProactiveAction.model');db[_0x9432('0x6e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x6f'));db[_0x9432('0x70')]=db['sequelize']['import']('../api/cmContact/cmContact.model');db[_0x9432('0x71')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x72'));db[_0x9432('0x73')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x74'));db[_0x9432('0x75')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x76'));db[_0x9432('0x77')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x78'));db[_0x9432('0x79')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7a'));db[_0x9432('0x7b')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7c'));db[_0x9432('0x7d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x7e'));db[_0x9432('0x7f')]=db[_0x9432('0x0')]['import']('../api/automation/automation.model');db[_0x9432('0x80')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x81'));db[_0x9432('0x82')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x83'));db[_0x9432('0x84')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x85'));db[_0x9432('0x86')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x87'));db[_0x9432('0x88')]=db[_0x9432('0x0')]['import'](_0x9432('0x89'));db['Cdr']=db['sequelize'][_0x9432('0x11')]('../api/cdr/cdr.model');db[_0x9432('0x8a')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x8b'));db[_0x9432('0x8c')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x8d'));db[_0x9432('0x8e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x8f'));db[_0x9432('0x90')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x91'));db[_0x9432('0x92')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x93'));db[_0x9432('0x94')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/cmContactHasItem/cmContactHasItem.model');db[_0x9432('0x95')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x96'));db[_0x9432('0x97')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x98'));db[_0x9432('0x99')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x9a'));db[_0x9432('0x9b')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/variable/variable.model');db[_0x9432('0x9c')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x9d'));db[_0x9432('0x9e')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x9f'));db[_0x9432('0xa0')]=db[_0x9432('0x0')]['import'](_0x9432('0xa1'));db[_0x9432('0xa2')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x9432('0xa3')]=db['sequelize'][_0x9432('0x11')]('../api/analyticExtractedReport/analyticExtractedReport.model');db['AnalyticMetric']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xa4'));db[_0x9432('0xa5')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/analyticFieldReport/analyticFieldReport.model');db[_0x9432('0xa6')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xa7'));db[_0x9432('0xa8')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xa9'));db[_0x9432('0xaa')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xab'));db[_0x9432('0xac')]=db[_0x9432('0x0')]['import'](_0x9432('0xad'));db[_0x9432('0xae')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xaf'));db['SugarcrmConfiguration']=db[_0x9432('0x0')]['import'](_0x9432('0xb0'));db[_0x9432('0xb1')]=db[_0x9432('0x0')]['import'](_0x9432('0xb2'));db['DeskAccount']=db[_0x9432('0x0')]['import'](_0x9432('0xb3'));db[_0x9432('0xb4')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xb5'));db['DeskField']=db[_0x9432('0x0')]['import'](_0x9432('0xb6'));db[_0x9432('0xb7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intZohoAccount/intZohoAccount.model');db[_0x9432('0xb8')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xb9'));db[_0x9432('0xba')]=db[_0x9432('0x0')]['import'](_0x9432('0xbb'));db[_0x9432('0xbc')]=db['sequelize']['import'](_0x9432('0xbd'));db[_0x9432('0xbe')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xbf'));db['ZendeskField']=db[_0x9432('0x0')]['import'](_0x9432('0xc0'));db[_0x9432('0xc1')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xc2'));db[_0x9432('0xc3')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db['sequelize']['import'](_0x9432('0xc4'));db[_0x9432('0xc5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xc6'));db[_0x9432('0xc7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x9432('0xc8')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xc9'));db['ServicenowAccount']=db['sequelize'][_0x9432('0x11')](_0x9432('0xca'));db[_0x9432('0xcb')]=db[_0x9432('0x0')]['import']('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x9432('0xcc')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xcd'));db[_0x9432('0xce')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xcf'));db['Dynamics365Configuration']=db[_0x9432('0x0')]['import'](_0x9432('0xd0'));db[_0x9432('0xd1')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd2'));db[_0x9432('0xd3')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x9432('0xd4')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x9432('0xd5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd6'));db[_0x9432('0x9c')]=db[_0x9432('0x0')]['import'](_0x9432('0x9d'));db[_0x9432('0xd7')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/network/network.model');db['ChatQueueReport']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xd8'));db[_0x9432('0xd9')]=db['sequelize']['import'](_0x9432('0xda'));db[_0x9432('0xdb')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0x9432('0xdc')]=db[_0x9432('0x0')]['import'](_0x9432('0xdd'));db[_0x9432('0xde')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x9432('0xdf')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe0'));db[_0x9432('0xe1')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe2'));db[_0x9432('0xe3')]=db[_0x9432('0x0')]['import'](_0x9432('0xe4'));db[_0x9432('0xe5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xe6'));db[_0x9432('0xe7')]=db[_0x9432('0x0')]['import']('../api/setting/setting.model');db['SquareOdbc']=db['sequelize'][_0x9432('0x11')](_0x9432('0xe8'));db[_0x9432('0xe9')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/squareProject/squareProject.model');db[_0x9432('0xea')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xeb'));db[_0x9432('0xec')]=db[_0x9432('0x0')]['import'](_0x9432('0xed'));db[_0x9432('0xee')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xef'));db[_0x9432('0xf0')]=db[_0x9432('0x0')]['import']('../api/license/license.model');db[_0x9432('0xf1')]=db['sequelize'][_0x9432('0x11')](_0x9432('0xf2'));db['Migration']=db[_0x9432('0x0')][_0x9432('0x11')]('../api/migration/migration.model');db[_0x9432('0xf3')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf4'));db[_0x9432('0xf5')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf6'));db[_0x9432('0xf7')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xf8'));db['ChatTransferReport']=db[_0x9432('0x0')]['import']('../api/chatTransferReport/chatTransferReport.model');db[_0x9432('0xf9')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xfa'));db[_0x9432('0xfb')]=db[_0x9432('0x0')]['import'](_0x9432('0xfc'));db['SmsTransferReport']=db['sequelize'][_0x9432('0x11')](_0x9432('0xfd'));db[_0x9432('0xfe')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0xff'));db['VoicePrefix']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x100'));db[_0x9432('0x101')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x102'));db['UserProfileSection']=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x103'));db['UserProfileResource']=db['sequelize']['import'](_0x9432('0x104'));db['UserNotification']=db[_0x9432('0x0')]['import'](_0x9432('0x105'));db[_0x9432('0x106')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x107'));db[_0x9432('0x108')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x109'));db['WhatsappInteraction']=db['sequelize'][_0x9432('0x11')](_0x9432('0x10a'));db[_0x9432('0x10b')]=db[_0x9432('0x0')][_0x9432('0x11')]('../api/whatsappMessage/whatsappMessage.model');db['WhatsappQueueReport']=db[_0x9432('0x0')][_0x9432('0x11')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x9432('0x10c')]=db[_0x9432('0x0')]['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0x9432('0x10d')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x10e'));db[_0x9432('0x10f')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x110'));db[_0x9432('0x111')]=db[_0x9432('0x0')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x9432('0x112')]=db['sequelize'][_0x9432('0x11')](_0x9432('0x113'));db[_0x9432('0x114')]=db[_0x9432('0x0')]['import'](_0x9432('0x115'));db[_0x9432('0x116')]=db[_0x9432('0x0')][_0x9432('0x11')](_0x9432('0x117'));db['User'][_0x9432('0x118')](db[_0x9432('0x1d')],{'as':'VoiceMail','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x11a')});db['User'][_0x9432('0x118')](db[_0x9432('0x116')],{'as':_0x9432('0x11b'),'onDelete':_0x9432('0x119'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x1a')],{'as':_0x9432('0x11d'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x2b')],{'as':_0x9432('0x11e'),'foreignKey':'UserId'});db['User'][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':_0x9432('0x11f'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x121'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db['ReportAgentPreview'],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x11a')});db['User'][_0x9432('0x11c')](db[_0x9432('0x122')],{'as':_0x9432('0x123'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':_0x9432('0x124'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db['SmsInteraction'],{'as':_0x9432('0x125'),'foreignKey':_0x9432('0x11a')});db['User']['hasMany'](db['FaxInteraction'],{'as':_0x9432('0x126'),'foreignKey':'UserId'});db[_0x9432('0x10')][_0x9432('0x11c')](db[_0x9432('0x3b')],{'as':_0x9432('0x127'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x10')]['hasMany'](db['WhatsappInteraction'],{'as':'WhatsappInteractions','foreignKey':'UserId'});db['User'][_0x9432('0x11c')](db[_0x9432('0x128')],{'as':'UserNotifications','foreignKey':'SenderId'});db['User'][_0x9432('0x129')](db[_0x9432('0x101')],{'as':_0x9432('0x101'),'foreignKey':_0x9432('0x12a')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x6c')],{'as':_0x9432('0x12b'),'through':_0x9432('0x12c')});db[_0x9432('0x10')][_0x9432('0x12d')](db['CmContact'],{'as':_0x9432('0x12e'),'through':'cm_user_has_contacts'});db['User']['belongsToMany'](db[_0x9432('0xfe')],{'as':_0x9432('0x12f'),'through':_0x9432('0x130')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x131')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x3b')],{'as':_0x9432('0x127'),'through':_0x9432('0x132')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x65')],{'as':_0x9432('0x124'),'through':_0x9432('0x133')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x49')],{'as':_0x9432('0x126'),'through':_0x9432('0x134')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x135')],{'as':'SmsInteractions','through':_0x9432('0x136')});db['User']['belongsToMany'](db[_0x9432('0x122')],{'as':_0x9432('0x123'),'through':'user_has_openchannel_interactions'});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x137')],{'as':_0x9432('0x138'),'through':_0x9432('0x139')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x19')],{'as':_0x9432('0x13a'),'through':'UserVoiceQueue','required':![]});db['User'][_0x9432('0x12d')](db[_0x9432('0x13b')],{'as':_0x9432('0x13c'),'through':_0x9432('0x114'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x37')],{'as':_0x9432('0x13d'),'through':_0x9432('0x30'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x6a')],{'as':_0x9432('0x13e'),'through':_0x9432('0x2e'),'required':![],'hooks':!![]});db[_0x9432('0x10')][_0x9432('0x12d')](db['FaxQueue'],{'as':_0x9432('0x13f'),'through':_0x9432('0x32'),'required':![]});db[_0x9432('0x10')][_0x9432('0x12d')](db['SmsQueue'],{'as':'SmsQueues','through':'UserSmsQueue','required':![]});db['User'][_0x9432('0x12d')](db[_0x9432('0x5f')],{'as':_0x9432('0x140'),'through':_0x9432('0x141'),'required':![]});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x10d')],{'as':_0x9432('0x142'),'through':_0x9432('0x35'),'required':![]});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0xfe')],{'through':'cm_user_has_lists'});db[_0x9432('0x10')][_0x9432('0x12d')](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x9432('0x143')});db['User'][_0x9432('0x12d')](db[_0x9432('0x45')],{'as':'FaxAccounts','through':_0x9432('0x144')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x145')],{'as':_0x9432('0x146'),'through':_0x9432('0x147')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x58')],{'as':_0x9432('0x148'),'through':_0x9432('0x149')});db[_0x9432('0x10')]['belongsToMany'](db[_0x9432('0x51')],{'as':_0x9432('0x14a'),'through':_0x9432('0x14b')});db[_0x9432('0x10')][_0x9432('0x12d')](db[_0x9432('0x106')],{'as':_0x9432('0x14c'),'through':_0x9432('0x14d')});db[_0x9432('0x14e')][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':_0x9432('0x14f'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x150')});db[_0x9432('0x14')]['hasMany'](db['VoiceExtension'],{'onDelete':_0x9432('0x119')});db['VoiceExtension']['hasMany'](db[_0x9432('0x16')],{'as':_0x9432('0x151'),'onDelete':_0x9432('0x119')});db[_0x9432('0x17')][_0x9432('0x12d')](db['Sound'],{'as':_0x9432('0x152'),'through':'moh_has_sounds'});db[_0x9432('0x19')][_0x9432('0x11c')](db['UserVoiceQueueRt'],{'as':_0x9432('0x153'),'foreignKey':'VoiceQueueId'});db[_0x9432('0x19')][_0x9432('0x11c')](db[_0x9432('0x71')],{'as':'Hoppers','foreignKey':'VoiceQueueId'});db[_0x9432('0x19')][_0x9432('0x11c')](db['CmHopperFinal'],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')]['hasMany'](db['CmHopperHistory'],{'as':_0x9432('0x155'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x11c')](db['CmHopperBlack'],{'as':_0x9432('0x156'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')]['hasMany'](db[_0x9432('0xde')],{'as':_0x9432('0x157'),'foreignKey':_0x9432('0x154')});db[_0x9432('0x19')][_0x9432('0x129')](db[_0x9432('0x158')],{'as':_0x9432('0x158'),'foreignKey':_0x9432('0x159')});db['VoiceQueue'][_0x9432('0x129')](db[_0x9432('0x158')],{'as':_0x9432('0x15a'),'foreignKey':_0x9432('0x15b')});db[_0x9432('0x19')]['belongsTo'](db[_0x9432('0x86')],{'as':_0x9432('0x86'),'foreignKey':'IntervalId'});db['VoiceQueue'][_0x9432('0x129')](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db['VoiceQueue'][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':'Lists','through':_0x9432('0x15e')});db['VoiceQueue'][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':_0x9432('0x2d')});db[_0x9432('0x19')][_0x9432('0x12d')](db[_0x9432('0xee')],{'as':_0x9432('0x15f'),'through':_0x9432('0x111')});db[_0x9432('0x19')][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':_0x9432('0x160'),'through':_0x9432('0x161')});db[_0x9432('0x1a')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10'),'foreignKey':_0x9432('0x11a')});db['ScreenRecording'][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10'),'foreignKey':'UserId'});db[_0x9432('0x1d')][_0x9432('0x11c')](db[_0x9432('0x162')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'mailboxuser','sourceKey':'mailbox'});db[_0x9432('0x162')][_0x9432('0x129')](db[_0x9432('0x1d')],{'foreignKey':_0x9432('0x164'),'targetKey':'mailbox'});db[_0x9432('0x1f')][_0x9432('0x11c')](db[_0x9432('0x165')],{'as':_0x9432('0x166'),'foreignKey':_0x9432('0x167'),'constraints':![]});db[_0x9432('0x1f')]['hasMany'](db['VoiceAgentReport'],{'as':_0x9432('0x168'),'foreignKey':'uniqueid','constraints':![]});db[_0x9432('0x1f')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x1f')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x16a')][_0x9432('0x129')](db[_0x9432('0x145')],{'as':_0x9432('0x145'),'foreignKey':_0x9432('0x16b')});db['MailServerIn']['belongsTo'](db[_0x9432('0x10f')],{'as':'CloudProvider','foreignKey':_0x9432('0x16c'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x16e')][_0x9432('0x129')](db[_0x9432('0x145')],{'as':'MailAccount','foreignKey':_0x9432('0x16b')});db[_0x9432('0x16e')][_0x9432('0x129')](db[_0x9432('0x10f')],{'as':_0x9432('0x10f'),'foreignKey':_0x9432('0x16c'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x145')][_0x9432('0x118')](db[_0x9432('0x16a')],{'as':_0x9432('0x16f'),'onDelete':_0x9432('0x119')});db[_0x9432('0x145')]['hasOne'](db[_0x9432('0x16e')],{'as':_0x9432('0x170'),'onDelete':'cascade'});db[_0x9432('0x145')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x16b'),'onDelete':_0x9432('0x119')});db[_0x9432('0x145')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x16b')});db['MailAccount']['hasMany'](db['MailMessage'],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x16b')});db['MailAccount'][_0x9432('0x11c')](db[_0x9432('0x3b')],{'as':'Interactions'});db['MailAccount']['hasMany'](db[_0x9432('0x3e')],{'as':_0x9432('0x151')});db[_0x9432('0x145')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':'List','foreignKey':_0x9432('0x173')});db['MailAccount']['belongsTo'](db[_0x9432('0x97')],{'as':'Template','foreignKey':'TemplateId'});db[_0x9432('0x145')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x145')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x147')});db[_0x9432('0x37')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'UserMailQueue'});db[_0x9432('0x37')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x175'),'as':'Teams'});db['MailInteraction'][_0x9432('0x11c')](db[_0x9432('0x3d')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x145')],{'as':'Account','foreignKey':_0x9432('0x16b')});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x3b')]['belongsTo'](db[_0x9432('0x10')],{'as':'Owner','foreignKey':_0x9432('0x11a')});db[_0x9432('0x3b')][_0x9432('0x12d')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0x9432('0x177')});db['MailInteraction'][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'mail_interaction_has_tags','as':'ThroughTags'});db[_0x9432('0x3b')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x132'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3d')][_0x9432('0x11c')](db[_0x9432('0xf3')],{'as':'Attachments','onDelete':_0x9432('0x119')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x169')});db[_0x9432('0x3d')]['belongsTo'](db['MailInteraction'],{'as':_0x9432('0x179'),'foreignKey':_0x9432('0x176')});db[_0x9432('0x3d')][_0x9432('0x129')](db['MailAccount'],{'as':_0x9432('0x17a'),'foreignKey':'MailAccountId'});db[_0x9432('0x3d')][_0x9432('0x129')](db['ChatWebsite'],{'as':_0x9432('0x61'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x3d')][_0x9432('0x129')](db[_0x9432('0x68')],{'as':_0x9432('0x68'),'foreignKey':_0x9432('0x17c')});db[_0x9432('0x3e')]['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x37')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x145')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x3e')][_0x9432('0x129')](db[_0x9432('0x86')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['MailApplication'][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0x145')],{});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x40')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':'Contact','foreignKey':_0x9432('0x17f')});db[_0x9432('0x40')]['belongsTo'](db[_0x9432('0x3b')],{});db['MailQueueReport'][_0x9432('0x129')](db[_0x9432('0x3d')],{});db[_0x9432('0x40')][_0x9432('0x129')](db['User'],{});db[_0x9432('0x40')][_0x9432('0x129')](db[_0x9432('0x37')],{});db[_0x9432('0x42')]['hasMany'](db[_0x9432('0x43')],{'as':_0x9432('0x180'),'onDelete':_0x9432('0x119')});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x181'),'onDelete':'cascade'});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':'Answers','foreignKey':_0x9432('0x181')});db[_0x9432('0x45')][_0x9432('0x11c')](db[_0x9432('0x49')],{'as':_0x9432('0x182')});db['FaxAccount'][_0x9432('0x11c')](db['FaxApplication'],{'as':_0x9432('0x151')});db[_0x9432('0x45')]['hasMany'](db['VoiceExtension'],{'as':'Exntensions','onDelete':_0x9432('0x119')});db['FaxAccount'][_0x9432('0x11c')](db[_0x9432('0x4b')],{'as':_0x9432('0x163')});db[_0x9432('0x45')][_0x9432('0x129')](db['Trunk'],{'as':_0x9432('0x158')});db[_0x9432('0x45')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x45')][_0x9432('0x129')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x9432('0x15d')});db[_0x9432('0x45')][_0x9432('0x12d')](db['User'],{'as':'Agents','through':_0x9432('0x144')});db[_0x9432('0x47')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'restrict'});db[_0x9432('0x47')]['belongsTo'](db[_0x9432('0x4d')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x47')][_0x9432('0x129')](db[_0x9432('0x45')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x47')][_0x9432('0x129')](db['Tag'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x49')][_0x9432('0x11c')](db[_0x9432('0x4b')],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'FaxInteractionId'});db['FaxInteraction'][_0x9432('0x129')](db[_0x9432('0x45')],{'as':_0x9432('0x17a'),'foreignKey':'FaxAccountId'});db['FaxInteraction'][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x49')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':'UserId'});db[_0x9432('0x49')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x184'),'as':_0x9432('0x177')});db[_0x9432('0x49')]['belongsToMany'](db['Tag'],{'through':_0x9432('0x184'),'as':_0x9432('0x185')});db[_0x9432('0x49')]['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x134'),'foreignKey':'FaxInteractionId'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'cascade','as':'User'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x49')],{'as':_0x9432('0x179'),'foreignKey':'FaxInteractionId'});db[_0x9432('0x4b')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':'Contact'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0xf3')],{'as':_0x9432('0xf3'),'foreignKey':'AttachmentId'});db[_0x9432('0x4b')][_0x9432('0x129')](db[_0x9432('0x45')],{'as':'Account','foreignKey':_0x9432('0x181')});db[_0x9432('0x4d')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'UserFaxQueue'});db[_0x9432('0x4d')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x186'),'as':'Teams'});db['FaxQueueReport'][_0x9432('0x129')](db[_0x9432('0x45')],{});db[_0x9432('0x4f')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x4f')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x4f')][_0x9432('0x129')](db['FaxInteraction'],{});db[_0x9432('0x4f')]['belongsTo'](db[_0x9432('0x4b')],{});db['FaxQueueReport']['belongsTo'](db['User'],{});db[_0x9432('0x4f')][_0x9432('0x129')](db[_0x9432('0x4d')],{});db[_0x9432('0x51')]['hasMany'](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x187'),'onDelete':_0x9432('0x119')});db[_0x9432('0x51')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':'Answers','foreignKey':_0x9432('0x187')});db[_0x9432('0x51')][_0x9432('0x11c')](db[_0x9432('0x56')],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x187')});db['SmsAccount'][_0x9432('0x11c')](db['SmsInteraction'],{'as':_0x9432('0x182')});db[_0x9432('0x51')]['hasMany'](db[_0x9432('0x53')],{'as':_0x9432('0x151')});db[_0x9432('0x51')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db['SmsAccount'][_0x9432('0x129')](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x9432('0x51')][_0x9432('0x12d')](db['User'],{'as':'Agents','through':_0x9432('0x14b')});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x188')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x53')][_0x9432('0x129')](db['SmsAccount'],{'onDelete':'restrict'});db[_0x9432('0x53')][_0x9432('0x129')](db['Interval'],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0x9432('0x53')][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':'restrict','foreignKey':_0x9432('0x17d')});db[_0x9432('0x135')][_0x9432('0x11c')](db['SmsMessage'],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':'SmsInteractionId'});db['SmsInteraction'][_0x9432('0x129')](db[_0x9432('0x51')],{'as':_0x9432('0x17a'),'foreignKey':'SmsAccountId'});db[_0x9432('0x135')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db[_0x9432('0x135')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db['SmsInteraction'][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x189'),'as':'Tags'});db[_0x9432('0x135')][_0x9432('0x12d')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x9432('0x185')});db[_0x9432('0x135')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x136'),'foreignKey':_0x9432('0x18a')});db[_0x9432('0x56')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x10')});db[_0x9432('0x56')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['SmsMessage']['belongsTo'](db[_0x9432('0x135')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x18a')});db[_0x9432('0x56')][_0x9432('0x129')](db[_0x9432('0x51')],{'as':_0x9432('0x17a'),'foreignKey':'SmsAccountId'});db[_0x9432('0x188')]['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x33'),'foreignKey':_0x9432('0x18b')});db[_0x9432('0x188')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x18c'),'as':'Teams'});db['OpenchannelAccount']['hasMany'](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x18d'),'onDelete':'cascade'});db[_0x9432('0x58')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x9432('0x11c')](db[_0x9432('0x122')],{'as':_0x9432('0x182'),'foreignKey':_0x9432('0x18d')});db['OpenchannelAccount'][_0x9432('0x11c')](db[_0x9432('0x5d')],{'as':'Messages','foreignKey':_0x9432('0x18d')});db[_0x9432('0x58')][_0x9432('0x11c')](db['OpenchannelApplication'],{'as':_0x9432('0x151'),'foreignKey':_0x9432('0x18d')});db[_0x9432('0x58')]['belongsTo'](db['CmList'],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x58')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x58')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0x9432('0x5a')][_0x9432('0x129')](db['User'],{'onDelete':'restrict'});db['OpenchannelApplication'][_0x9432('0x129')](db['OpenchannelQueue'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18e')});db[_0x9432('0x5a')]['belongsTo'](db[_0x9432('0x58')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x9432('0x5a')][_0x9432('0x129')](db[_0x9432('0x86')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x5a')]['belongsTo'](db[_0x9432('0x90')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x9432('0x122')][_0x9432('0x11c')](db[_0x9432('0x5d')],{'as':'Messages','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x190')});db[_0x9432('0x122')][_0x9432('0x129')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0x9432('0x18d')});db[_0x9432('0x122')][_0x9432('0x129')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x9432('0x122')]['belongsTo'](db[_0x9432('0x10')],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x122')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'openchannel_interaction_has_tags','as':_0x9432('0x177')});db[_0x9432('0x122')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x191'),'as':'ThroughTags'});db[_0x9432('0x122')][_0x9432('0x12d')](db['User'],{'as':'Users','through':_0x9432('0x192'),'foreignKey':'OpenchannelInteractionId'});db[_0x9432('0x5d')]['belongsTo'](db[_0x9432('0x10')],{'onDelete':_0x9432('0x119'),'as':'User'});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['OpenchannelMessage'][_0x9432('0x129')](db[_0x9432('0x122')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x190')});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0xf3')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x9432('0x5d')][_0x9432('0x129')](db[_0x9432('0x58')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x18d')});db['OpenchannelQueue'][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x141'),'foreignKey':_0x9432('0x18e')});db[_0x9432('0x5f')][_0x9432('0x12d')](db['Team'],{'through':_0x9432('0x193'),'as':'Teams'});db['ChatWebsite'][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':'Dispositions','foreignKey':_0x9432('0x17b'),'onDelete':_0x9432('0x119')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x61')]['hasMany'](db['ChatProactiveAction'],{'as':_0x9432('0x194')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':_0x9432('0x182')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x195')],{'as':_0x9432('0x151')});db[_0x9432('0x61')][_0x9432('0x11c')](db[_0x9432('0x196')],{'as':'Messages'});db['ChatWebsite']['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db['ChatWebsite'][_0x9432('0x129')](db['Interval'],{'as':_0x9432('0x86'),'foreignKey':_0x9432('0x18f')});db['ChatWebsite'][_0x9432('0x129')](db[_0x9432('0x145')],{'as':_0x9432('0x145'),'foreignKey':_0x9432('0x16b')});db[_0x9432('0x61')][_0x9432('0x129')](db['Pause'],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x61')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x143')});db[_0x9432('0x63')][_0x9432('0x129')](db[_0x9432('0x58')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x63')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db['OpenchannelQueueReport']['belongsTo'](db[_0x9432('0x122')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0x5d')],{});db[_0x9432('0x63')]['belongsTo'](db[_0x9432('0x10')],{});db['OpenchannelQueueReport'][_0x9432('0x129')](db[_0x9432('0x5f')],{});db[_0x9432('0x195')][_0x9432('0x129')](db['User'],{'as':'Agent','foreignKey':_0x9432('0x11a'),'onDelete':_0x9432('0x16d')});db['ChatApplication'][_0x9432('0x129')](db[_0x9432('0x6a')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0x9432('0x16d')});db[_0x9432('0x195')]['belongsTo'](db[_0x9432('0x61')],{'as':_0x9432('0x197'),'foreignKey':'ChatWebsiteId','onDelete':'restrict'});db[_0x9432('0x195')]['belongsTo'](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x65')][_0x9432('0x11c')](db['ChatMessage'],{'as':_0x9432('0x163'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x198')});db[_0x9432('0x65')][_0x9432('0x129')](db['ChatWebsite'],{'as':_0x9432('0x17a'),'foreignKey':'ChatWebsiteId'});db[_0x9432('0x65')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db['User'],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x11a')});db[_0x9432('0x65')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':'chat_interaction_has_tags','as':_0x9432('0x177')});db[_0x9432('0x65')][_0x9432('0x12d')](db[_0x9432('0x90')],{'through':_0x9432('0x199'),'as':_0x9432('0x185')});db['ChatInteraction']['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x133'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':'cascade','as':_0x9432('0x10')});db['ChatMessage']['belongsTo'](db[_0x9432('0x70')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x9432('0x17f')});db[_0x9432('0x196')][_0x9432('0x129')](db[_0x9432('0x65')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x9432('0x129')](db['Attachment'],{'as':_0x9432('0xf3'),'foreignKey':_0x9432('0x19a')});db[_0x9432('0x196')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x9432('0x68')][_0x9432('0x11c')](db[_0x9432('0xf3')],{'as':_0x9432('0x19b'),'foreignKey':_0x9432('0x17c'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x68')]['belongsTo'](db[_0x9432('0x70')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x68')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x17b')});db[_0x9432('0x6a')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':'UserChatQueue','hooks':!![]});db[_0x9432('0x6a')][_0x9432('0x12d')](db[_0x9432('0xee')],{'through':'team_has_chat_queues','as':_0x9432('0x15f')});db[_0x9432('0x6c')]['hasMany'](db['ChatInternalMessage'],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x19c'),'onDelete':_0x9432('0x119')});db[_0x9432('0x6c')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x153'),'through':'chat_group_has_users'});db[_0x9432('0x6d')][_0x9432('0x129')](db[_0x9432('0x61')],{'as':'Website','foreignKey':_0x9432('0x17b')});db['CmCompany'][_0x9432('0x11c')](db[_0x9432('0x70')],{'as':_0x9432('0x12e'),'foreignKey':_0x9432('0x19d')});db['CmContact'][_0x9432('0x11c')](db['CmContactHasItem'],{'as':_0x9432('0x19e'),'foreignKey':_0x9432('0x19f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x71')],{'as':_0x9432('0x1a0'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x155'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')]['hasMany'](db[_0x9432('0xde')],{'as':_0x9432('0x157'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x70')][_0x9432('0x11c')](db['OpenchannelInteraction'],{'as':_0x9432('0x123'),'foreignKey':_0x9432('0x17f'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x65')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':_0x9432('0x16d')});db[_0x9432('0x70')][_0x9432('0x11c')](db[_0x9432('0x135')],{'as':_0x9432('0x125'),'foreignKey':_0x9432('0x17f'),'onDelete':'restrict'});db[_0x9432('0x70')][_0x9432('0x11c')](db['FaxInteraction'],{'as':_0x9432('0x126'),'foreignKey':_0x9432('0x17f'),'onDelete':'restrict'});db[_0x9432('0x70')][_0x9432('0x11c')](db['MailInteraction'],{'as':_0x9432('0x127'),'foreignKey':'ContactId','onDelete':_0x9432('0x16d')});db[_0x9432('0x70')]['belongsTo'](db[_0x9432('0x6e')],{'as':_0x9432('0x1a1'),'foreignKey':_0x9432('0x19d')});db[_0x9432('0x70')]['belongsTo'](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173'),'onDelete':_0x9432('0x119')});db[_0x9432('0x70')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x178'),'through':_0x9432('0x1a2')});db[_0x9432('0x70')][_0x9432('0x12d')](db['Tag'],{'as':_0x9432('0x177'),'through':_0x9432('0x1a3')});db[_0x9432('0x70')][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x1a3'),'as':'ThroughTags'});db[_0x9432('0x71')][_0x9432('0x11c')](db['CmHopperAdditionalPhone'],{'as':_0x9432('0x1a4'),'foreignKey':_0x9432('0x1a5')});db[_0x9432('0x71')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f'),'onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0x10')],{'as':_0x9432('0x1a6'),'foreignKey':'UserId'});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0x19')],{'as':_0x9432('0x1a7'),'foreignKey':'VoiceQueueId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db[_0x9432('0xf1')],{'as':_0x9432('0xf1'),'foreignKey':'CampaignId','onDelete':_0x9432('0x119')});db[_0x9432('0x71')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x183'),'foreignKey':_0x9432('0x1a8')});db[_0x9432('0x73')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':'ContactId','onDelete':_0x9432('0x119')});db['CmHopperBlack'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173'),'onDelete':_0x9432('0x119')});db['CmHopperBlack'][_0x9432('0x129')](db['VoiceQueue'],{'as':_0x9432('0x1a7'),'foreignKey':_0x9432('0x154'),'onDelete':'cascade'});db[_0x9432('0x73')][_0x9432('0x129')](db[_0x9432('0xf1')],{'as':_0x9432('0xf1'),'foreignKey':_0x9432('0x1a9'),'onDelete':'cascade'});db[_0x9432('0x7f')]['hasMany'](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1aa'),'singular':_0x9432('0x1ab')},'foreignKey':_0x9432('0x1ac'),'onDelete':'cascade','hooks':!![]});db[_0x9432('0x7f')][_0x9432('0x11c')](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1ad'),'singular':_0x9432('0x1ae')},'foreignKey':_0x9432('0x1af'),'onDelete':'cascade','hooks':!![]});db[_0x9432('0x7f')][_0x9432('0x11c')](db['Action'],{'as':'Actions','foreignKey':'AutomationId','onDelete':_0x9432('0x119'),'hooks':!![]});db['Disposition'][_0x9432('0x11c')](db['Disposition'],{'as':'Dispositions','foreignKey':'ParentId','onDelete':'cascade'});db[_0x9432('0x86')][_0x9432('0x11c')](db['Interval'],{'as':_0x9432('0x1b0'),'foreignKey':_0x9432('0x18f'),'onDelete':_0x9432('0x119'),'hooks':!![],'required':![]});db['Interval'][_0x9432('0x11c')](db['VoiceExtension'],{'as':_0x9432('0x11f'),'foreignKey':_0x9432('0x18f'),'onDelete':'restrict'});db[_0x9432('0x86')]['hasMany'](db['MailApplication'],{'as':'MailApplications','foreignKey':_0x9432('0x18f')});db[_0x9432('0x86')][_0x9432('0x11c')](db['ChatApplication'],{'as':_0x9432('0x1b1'),'foreignKey':_0x9432('0x18f')});db['Interval'][_0x9432('0x11c')](db[_0x9432('0x47')],{'as':_0x9432('0x1b2'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x86')]['hasMany'](db[_0x9432('0x53')],{'as':'SmsApplications','foreignKey':_0x9432('0x18f')});db[_0x9432('0x8c')]['belongsTo'](db[_0x9432('0x145')],{});db['Schedule'][_0x9432('0x129')](db['AnalyticDefaultReport'],{'foreignKey':_0x9432('0x1b3')});db[_0x9432('0x8c')][_0x9432('0x129')](db[_0x9432('0xa0')],{'foreignKey':'CustomReportId'});db['Sound'][_0x9432('0x12d')](db[_0x9432('0x17')],{'as':_0x9432('0x1b4'),'through':'moh_has_sounds','onDelete':_0x9432('0x16d')});db[_0x9432('0x90')][_0x9432('0x12d')](db[_0x9432('0x70')],{'through':_0x9432('0x1a3')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x65')],{'through':_0x9432('0x199')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x3b')],{'through':_0x9432('0x1b5')});db[_0x9432('0x90')][_0x9432('0x12d')](db[_0x9432('0x135')],{'through':_0x9432('0x189')});db[_0x9432('0x90')]['belongsToMany'](db[_0x9432('0x49')],{'through':_0x9432('0x184')});db[_0x9432('0x90')][_0x9432('0x12d')](db['OpenchannelInteraction'],{'through':_0x9432('0x191')});db[_0x9432('0x90')][_0x9432('0x12d')](db['WhatsappInteraction'],{'through':_0x9432('0x1b6')});db['CmContactHasItem'][_0x9432('0x129')](db[_0x9432('0x92')],{'as':_0x9432('0x1b7'),'foreignKey':_0x9432('0x1b8')});db['CmHopperAdditionalPhone'][_0x9432('0x129')](db[_0x9432('0x71')],{'as':'Hopper','foreignKey':'CmHopperId'});db[_0x9432('0x94')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x19f')});db['Trigger'][_0x9432('0x11c')](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1b9'),'singular':_0x9432('0x1ba')},'foreignKey':_0x9432('0x1bb'),'onDelete':_0x9432('0x119'),'hooks':!![]});db['Trigger']['hasMany'](db[_0x9432('0x84')],{'as':{'plural':_0x9432('0x1bc'),'singular':_0x9432('0x1bd')},'foreignKey':_0x9432('0x1be'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0x99')][_0x9432('0x11c')](db[_0x9432('0x7d')],{'as':_0x9432('0x1bf'),'foreignKey':_0x9432('0x1c0'),'onDelete':_0x9432('0x119'),'hooks':!![]});db[_0x9432('0xa0')][_0x9432('0x11c')](db[_0x9432('0xa5')],{'as':_0x9432('0x1c1'),'onDelete':'cascade','foreignKey':_0x9432('0x1c2'),'hooks':!![]});db[_0x9432('0xa2')][_0x9432('0x11c')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1b3')});db[_0x9432('0x1c3')][_0x9432('0x11c')](db[_0x9432('0xa5')],{'as':'Fields','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c4')});db['AnalyticFieldReport'][_0x9432('0x129')](db[_0x9432('0x1c3')],{'foreignKey':'MetricId'});db[_0x9432('0xa8')]['hasMany'](db[_0x9432('0xaa')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xaa')]['hasMany'](db[_0x9432('0xac')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':'SubjectId'});db[_0x9432('0xaa')][_0x9432('0x11c')](db['SalesforceField'],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xaa')][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':'FieldId'});db[_0x9432('0xaa')]['belongsTo'](db[_0x9432('0xa8')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xac')][_0x9432('0x11c')](db['SalesforceField'],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xac')][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':'Description','foreignKey':'DescriptionId'});db['SalesforceField'][_0x9432('0x11c')](db[_0x9432('0xac')],{'as':'Field','foreignKey':_0x9432('0x1cb')});db[_0x9432('0xac')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xae')][_0x9432('0x11c')](db[_0x9432('0x1cd')],{'as':_0x9432('0x1c5'),'onDelete':'cascade','foreignKey':_0x9432('0x1c6')});db['SugarcrmConfiguration'][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0x1cd')]['hasMany'](db[_0x9432('0xb1')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':'DescriptionId'});db[_0x9432('0x1cd')][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db['SugarcrmConfiguration'][_0x9432('0x129')](db['SugarcrmAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db['SugarcrmField']['hasMany'](db[_0x9432('0xb1')],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xb1')][_0x9432('0x11c')](db[_0x9432('0xb1')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xb1')][_0x9432('0x11c')](db['SugarcrmField'],{'as':_0x9432('0x1cf'),'foreignKey':'FieldId'});db[_0x9432('0xb1')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1d0')][_0x9432('0x11c')](db[_0x9432('0xb4')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xb4')]['hasMany'](db[_0x9432('0x1d1')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x9432('0x1ca')});db['DeskConfiguration']['hasMany'](db[_0x9432('0x1d1')],{'as':_0x9432('0x1c8'),'onDelete':'cascade','foreignKey':_0x9432('0x1c9')});db['DeskConfiguration'][_0x9432('0x11c')](db['DeskField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xb4')]['belongsTo'](db[_0x9432('0x1d0')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xb4')][_0x9432('0x12d')](db['Tag'],{'through':_0x9432('0x1d2')});db[_0x9432('0x1d1')][_0x9432('0x11c')](db[_0x9432('0x1d1')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db['DeskField'][_0x9432('0x11c')](db['DeskField'],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d1')]['hasMany'](db[_0x9432('0x1d1')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db['DeskField']['belongsTo'](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xb7')][_0x9432('0x11c')](db[_0x9432('0xb8')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db['ZohoConfiguration']['hasMany'](db[_0x9432('0xba')],{'as':'Subjects','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xb8')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xb8')][_0x9432('0x11c')](db['ZohoField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xb8')][_0x9432('0x129')](db[_0x9432('0xb7')],{'as':'Account','foreignKey':_0x9432('0x1c6')});db[_0x9432('0xba')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xba')][_0x9432('0x11c')](db['ZohoField'],{'as':'Description','foreignKey':_0x9432('0x1c9')});db[_0x9432('0xba')][_0x9432('0x11c')](db[_0x9432('0xba')],{'as':'Field','foreignKey':'FieldId'});db['ZohoField'][_0x9432('0x129')](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xbc')][_0x9432('0x11c')](db['ZendeskConfiguration'],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db['ZendeskConfiguration'][_0x9432('0x11c')](db[_0x9432('0x1d4')],{'as':'Subjects','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xbe')]['hasMany'](db[_0x9432('0x1d4')],{'as':'Descriptions','foreignKey':_0x9432('0x1c9')});db['ZendeskConfiguration'][_0x9432('0x11c')](db['ZendeskField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xbe')][_0x9432('0x129')](db[_0x9432('0xbc')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xbe')]['belongsToMany'](db[_0x9432('0x90')],{'through':_0x9432('0x1d5')});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1d3'),'foreignKey':'SubjectId'});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d4')]['hasMany'](db[_0x9432('0x1d4')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0x1d4')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':'Variable','foreignKey':'VariableId'});db[_0x9432('0xc1')][_0x9432('0x11c')](db[_0x9432('0xc3')],{'as':'Configurations','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc3')][_0x9432('0x11c')](db[_0x9432('0x1d6')],{'as':'Subjects','onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xc3')]['hasMany'](db[_0x9432('0x1d6')],{'as':_0x9432('0x1c8'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xc3')][_0x9432('0x11c')](db['FreshdeskField'],{'as':_0x9432('0x1c1'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc3')][_0x9432('0x129')](db['FreshdeskAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc3')]['belongsToMany'](db[_0x9432('0x90')],{'through':_0x9432('0x1d7')});db[_0x9432('0x1d6')]['hasMany'](db[_0x9432('0x1d6')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0x1d6')][_0x9432('0x11c')](db['FreshdeskField'],{'as':_0x9432('0x1ce'),'foreignKey':'DescriptionId'});db[_0x9432('0x1d6')][_0x9432('0x11c')](db[_0x9432('0x1d6')],{'as':'Field','foreignKey':_0x9432('0x1cb')});db['FreshdeskField'][_0x9432('0x129')](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':'VariableId'});db[_0x9432('0xc5')][_0x9432('0x11c')](db[_0x9432('0xc7')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc7')][_0x9432('0x11c')](db[_0x9432('0xc8')],{'as':'Subjects','foreignKey':_0x9432('0x1ca')});db['VtigerConfiguration'][_0x9432('0x11c')](db['VtigerField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x9432('0xc7')]['hasMany'](db['VtigerField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc7')]['belongsTo'](db['VtigerAccount'],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xc8')]['hasMany'](db[_0x9432('0xc8')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xc8')]['hasMany'](db[_0x9432('0xc8')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xc8')][_0x9432('0x11c')](db[_0x9432('0xc8')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xc8')]['belongsTo'](db['Variable'],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1d8')][_0x9432('0x11c')](db[_0x9432('0xcb')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':_0x9432('0x1c6')});db['ServicenowConfiguration'][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1c7'),'foreignKey':_0x9432('0x1ca')});db['ServicenowConfiguration']['hasMany'](db[_0x9432('0xcc')],{'as':_0x9432('0x1c8'),'foreignKey':_0x9432('0x1c9')});db['ServicenowConfiguration']['hasMany'](db[_0x9432('0xcc')],{'as':'Fields','foreignKey':_0x9432('0x1cb')});db[_0x9432('0xcb')]['belongsTo'](db[_0x9432('0x1d8')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xcc')][_0x9432('0x11c')](db['ServicenowField'],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db[_0x9432('0xcc')][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xcc')][_0x9432('0x11c')](db[_0x9432('0xcc')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xcc')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':'VariableId'});db[_0x9432('0xce')][_0x9432('0x11c')](db[_0x9432('0x1d9')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db[_0x9432('0xce')][_0x9432('0x129')](db['CloudProvider'],{'as':_0x9432('0x10f'),'foreignKey':_0x9432('0x16c')});db[_0x9432('0x1d9')]['hasMany'](db[_0x9432('0xd1')],{'as':_0x9432('0x1c7'),'onDelete':_0x9432('0x119'),'foreignKey':'SubjectId'});db[_0x9432('0x1d9')][_0x9432('0x11c')](db['Dynamics365Field'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9432('0x1c9')});db[_0x9432('0x1d9')]['hasMany'](db[_0x9432('0xd1')],{'as':_0x9432('0x1c1'),'onDelete':'cascade','foreignKey':_0x9432('0x1cb')});db['Dynamics365Configuration'][_0x9432('0x129')](db[_0x9432('0xce')],{'as':_0x9432('0x17a'),'foreignKey':'AccountId'});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':'Subject','foreignKey':_0x9432('0x1ca')});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd1')][_0x9432('0x11c')](db[_0x9432('0xd1')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd1')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0xd3')][_0x9432('0x11c')](db[_0x9432('0xd4')],{'as':_0x9432('0x1c5'),'onDelete':_0x9432('0x119'),'foreignKey':'AccountId'});db[_0x9432('0xd4')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1c7'),'foreignKey':'SubjectId'});db[_0x9432('0xd4')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1c8'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd4')][_0x9432('0x11c')](db['FreshsalesField'],{'as':_0x9432('0x1c1'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd4')][_0x9432('0x129')](db[_0x9432('0xd3')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1c6')});db[_0x9432('0xd5')]['hasMany'](db[_0x9432('0xd5')],{'as':_0x9432('0x1d3'),'foreignKey':_0x9432('0x1ca')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0x9432('0x1ce'),'foreignKey':_0x9432('0x1c9')});db[_0x9432('0xd5')][_0x9432('0x11c')](db[_0x9432('0xd5')],{'as':_0x9432('0x1cf'),'foreignKey':_0x9432('0x1cb')});db[_0x9432('0xd5')][_0x9432('0x129')](db[_0x9432('0x9b')],{'as':_0x9432('0x9b'),'foreignKey':_0x9432('0x1cc')});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x61')],{});db['ChatQueueReport'][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0x1da')][_0x9432('0x129')](db['CmContact'],{'as':'Contact','foreignKey':_0x9432('0x17f')});db['ChatQueueReport'][_0x9432('0x129')](db[_0x9432('0x65')],{});db['ChatQueueReport'][_0x9432('0x129')](db['ChatMessage'],{});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x10')],{});db[_0x9432('0x1da')][_0x9432('0x129')](db[_0x9432('0x6a')],{});db[_0x9432('0xd9')][_0x9432('0x129')](db[_0x9432('0x10')],{'onDelete':_0x9432('0x119'),'foreignKey':'FromId'});db[_0x9432('0xd9')]['belongsTo'](db['User'],{'onDelete':'cascade','foreignKey':_0x9432('0x1db')});db[_0x9432('0xde')][_0x9432('0x11c')](db[_0x9432('0xdc')],{'foreignKey':_0x9432('0x1dc'),'onDelete':_0x9432('0x119')});db[_0x9432('0xde')][_0x9432('0x11c')](db[_0x9432('0xdb')],{'foreignKey':_0x9432('0x1dc'),'onDelete':'cascade'});db[_0x9432('0xdf')]['belongsTo'](db[_0x9432('0x51')],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':_0x9432('0x173')});db[_0x9432('0xdf')][_0x9432('0x129')](db['CmContact'],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0xdf')][_0x9432('0x129')](db['SmsInteraction'],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0x56')],{});db[_0x9432('0xdf')]['belongsTo'](db['User'],{});db[_0x9432('0xdf')][_0x9432('0x129')](db[_0x9432('0x188')],{});db[_0x9432('0xe5')]['hasMany'](db[_0x9432('0xde')],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0x9432('0x11c')](db[_0x9432('0xdc')],{'foreignKey':'ProjectId'});db[_0x9432('0xe5')]['hasMany'](db[_0x9432('0xdb')],{'foreignKey':'ProjectId'});db['Team']['belongsToMany'](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':'user_has_teams'});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x19')],{'through':_0x9432('0x111'),'as':_0x9432('0x13a')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x37')],{'through':'team_has_mail_queues','as':_0x9432('0x13d')});db[_0x9432('0xee')]['belongsToMany'](db['ChatQueue'],{'through':_0x9432('0x1dd'),'as':_0x9432('0x13e')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x4d')],{'through':_0x9432('0x186'),'as':_0x9432('0x13f')});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x188')],{'through':_0x9432('0x18c'),'as':'SmsQueues'});db[_0x9432('0xee')][_0x9432('0x12d')](db[_0x9432('0x5f')],{'through':_0x9432('0x193'),'as':_0x9432('0x140')});db[_0x9432('0xee')]['belongsToMany'](db['WhatsappQueue'],{'through':'team_has_whatsapp_queues','as':_0x9432('0x142')});db['Team'][_0x9432('0x12d')](db['VoicePrefix'],{'through':_0x9432('0x112'),'as':_0x9432('0x13c')});db['Campaign']['hasMany'](db['CmHopper'],{'as':_0x9432('0x1a0'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['hasMany'](db['CmHopperFinal'],{'as':_0x9432('0x120'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['hasMany'](db[_0x9432('0x77')],{'as':_0x9432('0x155'),'foreignKey':'CampaignId'});db[_0x9432('0xf1')][_0x9432('0x11c')](db[_0x9432('0x73')],{'as':_0x9432('0x156'),'foreignKey':_0x9432('0x1a9')});db[_0x9432('0xf1')]['belongsTo'](db[_0x9432('0x158')],{'as':_0x9432('0x158'),'foreignKey':_0x9432('0x159')});db[_0x9432('0xf1')][_0x9432('0x129')](db[_0x9432('0x158')],{'as':'TrunkBackup','foreignKey':_0x9432('0x15b')});db[_0x9432('0xf1')]['belongsTo'](db[_0x9432('0x86')],{'as':_0x9432('0x86'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0xf1')][_0x9432('0x129')](db[_0x9432('0xe9')],{'as':'SquareProject','foreignKey':_0x9432('0x1de')});db['Campaign'][_0x9432('0x12d')](db[_0x9432('0xfe')],{'as':_0x9432('0x12f'),'through':_0x9432('0x1df')});db[_0x9432('0xf1')][_0x9432('0x12d')](db['CmList'],{'as':_0x9432('0x160'),'through':_0x9432('0x1e0')});db['Attachment'][_0x9432('0x129')](db[_0x9432('0x68')],{'as':_0x9432('0x68'),'foreignKey':'ChatOfflineMessageId'});db[_0x9432('0xf7')][_0x9432('0x129')](db['MailMessage'],{});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x3b')],{});db[_0x9432('0xf7')]['belongsTo'](db[_0x9432('0x145')],{'foreignKey':_0x9432('0x1e1'),'as':_0x9432('0x1e2')});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db['MailTransferReport']['belongsTo'](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':'ToAgent'});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x37')],{'foreignKey':_0x9432('0x1e5'),'as':_0x9432('0x1e6')});db[_0x9432('0xf7')][_0x9432('0x129')](db[_0x9432('0x145')],{'foreignKey':_0x9432('0x1e7'),'as':_0x9432('0x1e8')});db['ChatTransferReport'][_0x9432('0x129')](db[_0x9432('0x196')],{});db['ChatTransferReport'][_0x9432('0x129')](db[_0x9432('0x65')],{});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x61')],{'foreignKey':_0x9432('0x1ea'),'as':_0x9432('0x1e2')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x6a')],{'foreignKey':'ToChatQueueId','as':_0x9432('0x1e6')});db[_0x9432('0x1e9')][_0x9432('0x129')](db[_0x9432('0x61')],{'foreignKey':_0x9432('0x1ec'),'as':_0x9432('0x1e8')});db[_0x9432('0xf9')][_0x9432('0x129')](db['FaxMessage'],{});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x49')],{});db[_0x9432('0xf9')]['belongsTo'](db['FaxAccount'],{'foreignKey':_0x9432('0x1ed'),'as':_0x9432('0x1e2')});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'FromUserId','as':'FromAgent'});db['FaxTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0xf9')]['belongsTo'](db[_0x9432('0x4d')],{'foreignKey':'ToFaxQueueId','as':_0x9432('0x1e6')});db[_0x9432('0xf9')][_0x9432('0x129')](db[_0x9432('0x45')],{'foreignKey':_0x9432('0x1ee'),'as':_0x9432('0x1e8')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x5d')],{});db[_0x9432('0xfb')][_0x9432('0x129')](db['OpenchannelInteraction'],{});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x58')],{'foreignKey':_0x9432('0x1ef'),'as':_0x9432('0x1e2')});db[_0x9432('0xfb')][_0x9432('0x129')](db['User'],{'foreignKey':'FromUserId','as':_0x9432('0x1e3')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'ToUserId','as':_0x9432('0x1eb')});db[_0x9432('0xfb')][_0x9432('0x129')](db[_0x9432('0x5f')],{'foreignKey':_0x9432('0x1f0'),'as':'ToQueue'});db[_0x9432('0xfb')]['belongsTo'](db[_0x9432('0x58')],{'foreignKey':_0x9432('0x1f1'),'as':_0x9432('0x1e8')});db[_0x9432('0x1f2')][_0x9432('0x129')](db['SmsMessage'],{});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x135')],{});db[_0x9432('0x1f2')]['belongsTo'](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0x9432('0x1e2')});db[_0x9432('0x1f2')]['belongsTo'](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1f3'),'as':_0x9432('0x1e3')});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1e4'),'as':_0x9432('0x1eb')});db[_0x9432('0x1f2')][_0x9432('0x129')](db[_0x9432('0x188')],{'foreignKey':_0x9432('0x1f4'),'as':_0x9432('0x1e6')});db[_0x9432('0x1f2')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x9432('0x1f5'),'as':_0x9432('0x1e8')});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':'ListId','onDelete':'cascade'});db['CmList'][_0x9432('0x11c')](db['CmCustomField'],{'as':_0x9432('0x1f6'),'foreignKey':_0x9432('0x173')});db['CmList'][_0x9432('0x11c')](db[_0x9432('0x70')],{'as':_0x9432('0x12e'),'onDelete':_0x9432('0x119'),'foreignKey':'ListId'});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x75')],{'as':_0x9432('0x120'),'foreignKey':'ListId'});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x77')],{'as':_0x9432('0x121'),'foreignKey':_0x9432('0x173')});db[_0x9432('0xfe')][_0x9432('0x11c')](db[_0x9432('0x79')],{'as':_0x9432('0x79'),'foreignKey':_0x9432('0x173')});db['CmList'][_0x9432('0x12d')](db[_0x9432('0x19')],{'as':'Queues','through':_0x9432('0x15e')});db[_0x9432('0xfe')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':_0x9432('0x174'),'through':_0x9432('0x130')});db[_0x9432('0x13b')][_0x9432('0x11c')](db[_0x9432('0x16')],{'as':'Extensions','onDelete':_0x9432('0x119')});db['VoicePrefix']['belongsToMany'](db['User'],{'as':'Agents','through':'UserVoicePrefix'});db[_0x9432('0x13b')]['belongsToMany'](db[_0x9432('0xee')],{'through':'TeamVoicePrefix','as':_0x9432('0x15f')});db[_0x9432('0x101')][_0x9432('0x11c')](db['User'],{'as':'Users','foreignKey':_0x9432('0x12a')});db[_0x9432('0x101')][_0x9432('0x11c')](db[_0x9432('0x1f7')],{'as':_0x9432('0x1f8'),'foreignKey':_0x9432('0x12a'),'onDelete':_0x9432('0x119')});db[_0x9432('0x1f7')][_0x9432('0x11c')](db[_0x9432('0x1f9')],{'as':'Resources','foreignKey':_0x9432('0x1fa'),'onDelete':'cascade'});db['WhatsappAccount'][_0x9432('0x11c')](db[_0x9432('0x82')],{'as':_0x9432('0x171'),'foreignKey':_0x9432('0x1fb'),'onDelete':'cascade'});db[_0x9432('0x106')][_0x9432('0x11c')](db[_0x9432('0x80')],{'as':_0x9432('0x172'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x106')][_0x9432('0x11c')](db[_0x9432('0x10b')],{'as':_0x9432('0x163'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x106')]['hasMany'](db['WhatsappInteraction'],{'as':_0x9432('0x182')});db['WhatsappAccount'][_0x9432('0x11c')](db['WhatsappApplication'],{'as':_0x9432('0x151')});db[_0x9432('0x106')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db[_0x9432('0x106')]['belongsTo'](db[_0x9432('0x88')],{'as':_0x9432('0x15c'),'foreignKey':_0x9432('0x15d')});db[_0x9432('0x106')][_0x9432('0x12d')](db[_0x9432('0x10')],{'as':'Agents','through':_0x9432('0x14d')});db[_0x9432('0x108')]['belongsTo'](db[_0x9432('0x10')],{'onDelete':_0x9432('0x16d')});db[_0x9432('0x108')][_0x9432('0x129')](db['WhatsappQueue'],{'onDelete':_0x9432('0x16d')});db['WhatsappApplication'][_0x9432('0x129')](db[_0x9432('0x106')],{'onDelete':'restrict'});db[_0x9432('0x108')][_0x9432('0x129')](db['Interval'],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x18f')});db[_0x9432('0x108')][_0x9432('0x129')](db[_0x9432('0x90')],{'onDelete':_0x9432('0x16d'),'foreignKey':_0x9432('0x17d')});db[_0x9432('0x137')]['hasMany'](db[_0x9432('0x10b')],{'as':'Messages','onDelete':_0x9432('0x119'),'foreignKey':'WhatsappInteractionId'});db['WhatsappInteraction']['belongsTo'](db[_0x9432('0x106')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x137')]['belongsTo'](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db['WhatsappInteraction'][_0x9432('0x129')](db[_0x9432('0x10')],{'as':'Owner','foreignKey':_0x9432('0x11a')});db[_0x9432('0x137')]['belongsToMany'](db['Tag'],{'through':_0x9432('0x1b6'),'as':_0x9432('0x177')});db[_0x9432('0x137')][_0x9432('0x12d')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x9432('0x185')});db[_0x9432('0x137')][_0x9432('0x12d')](db['User'],{'as':'Users','through':_0x9432('0x139'),'foreignKey':'WhatsappInteractionId'});db[_0x9432('0x10b')][_0x9432('0x129')](db['User'],{'as':_0x9432('0x10')});db[_0x9432('0x10b')][_0x9432('0x129')](db[_0x9432('0x70')],{'onDelete':'cascade','as':_0x9432('0x169')});db['WhatsappMessage']['belongsTo'](db[_0x9432('0x137')],{'onDelete':_0x9432('0x119'),'as':_0x9432('0x179'),'foreignKey':_0x9432('0x1fc')});db['WhatsappMessage'][_0x9432('0x129')](db[_0x9432('0x106')],{'as':_0x9432('0x17a'),'foreignKey':_0x9432('0x1fb')});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x106')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0xfe')],{'as':_0x9432('0x17e'),'foreignKey':'ListId'});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x70')],{'as':_0x9432('0x169'),'foreignKey':_0x9432('0x17f')});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x137')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10d')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10b')],{});db[_0x9432('0x1fd')][_0x9432('0x129')](db[_0x9432('0x10')],{});db[_0x9432('0x10c')][_0x9432('0x129')](db['WhatsappMessage'],{});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x137')],{});db['WhatsappTransferReport'][_0x9432('0x129')](db['WhatsappAccount'],{'foreignKey':_0x9432('0x1fe'),'as':_0x9432('0x1e2')});db[_0x9432('0x10c')]['belongsTo'](db[_0x9432('0x106')],{'foreignKey':_0x9432('0x1ff'),'as':_0x9432('0x1e8')});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x10d')],{'foreignKey':_0x9432('0x200'),'as':'ToQueue'});db[_0x9432('0x10c')][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':_0x9432('0x1f3'),'as':_0x9432('0x1e3')});db['WhatsappTransferReport'][_0x9432('0x129')](db[_0x9432('0x10')],{'foreignKey':'ToUserId','as':_0x9432('0x1eb')});db[_0x9432('0x10d')][_0x9432('0x12d')](db['User'],{'as':_0x9432('0x174'),'through':_0x9432('0x35'),'foreignKey':'WhatsappQueueId'});db[_0x9432('0x10d')]['belongsToMany'](db[_0x9432('0xee')],{'through':_0x9432('0x201'),'as':_0x9432('0x15f')});db[_0x9432('0x116')][_0x9432('0x129')](db['User'],{'as':'user','foreignKey':'UserId','onDelete':'cascade','hooks':!![]});db[_0x9432('0x10f')][_0x9432('0x118')](db[_0x9432('0xce')],{'as':_0x9432('0xce'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x10f')]['hasOne'](db['MailServerIn'],{'as':_0x9432('0x16f'),'onDelete':_0x9432('0x16d')});db[_0x9432('0x10f')][_0x9432('0x118')](db['MailServerOut'],{'as':_0x9432('0x170'),'onDelete':_0x9432('0x16d')});module[_0x9432('0x202')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x4a48=['CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','userSetting','cascade','hasMany','UserVoiceQueueRt','UserId','VoiceExtension','Extensions','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','MailInteractions','WhatsappInteraction','UserNotifications','SenderId','belongsTo','userProfileId','Groups','belongsToMany','Contacts','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueue','VoicePrefixes','MailQueue','MailQueues','UserMailQueue','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','WhatsappQueues','ChatWebsites','FaxAccounts','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','ChanSpyId','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','JscriptySessions','TrunkId','TrunkBackup','Lists','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','Contact','ContactId','restrict','MailServerOut','MailAccountId','Imap','Smtp','Answers','MailMessage','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','mandatoryDispositionPauseId','team_has_mail_queues','Account','Owner','mail_interaction_has_tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','IntervalId','TagId','DashboardItem','Items','FaxAccount','Dispositions','FaxAccountId','FaxApplication','Applications','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','Tags','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','ChatMessage','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroupId','chat_group_has_users','CompanyId','Phones','CmContactId','Company','AdditionalPhones','OwnerId','CampaignId','All','OneAll','AutomationAllId','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','FaxApplications','SmsApplications','CustomReportId','cm_contact_has_tags','whatsapp_interaction_has_tags','ItemType','ItemTypeId','Hopper','CmHopperId','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Fields','DefaultReportId','MetricId','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','VariableId','Configurations','Field','int_zendesk_configuration_has_tags','FreshdeskConfiguration','FreshdeskField','int_freshdesk_configuration_has_tags','Dynamics365Field','FreshsalesAccount','FromId','ToId','SessionId','JscriptyProject','ProjectId','VoiceQueues','VoicePrefix','TrunkBackupId','SquareProject','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAccount','ToAgent','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','FromFaxAccountId','FromUserId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','user','exports','../config/environment','jstz','determine','sequelize','defaultsDeep','xcall','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','motion2','127.0.0.1','utf8','username','password','options','User','../api/user/user.model','VoiceChanSpy','import','VoiceContext','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','MemberReport','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model'];(function(_0x2f4ad2,_0x38ef52){var _0x5aed3d=function(_0x5a2f3f){while(--_0x5a2f3f){_0x2f4ad2['push'](_0x2f4ad2['shift']());}};_0x5aed3d(++_0x38ef52);}(_0x4a48,0xfc));var _0x84a4=function(_0x11ddbf,_0x314385){_0x11ddbf=_0x11ddbf-0x0;var _0x2f1552=_0x4a48[_0x11ddbf];return _0x2f1552;};'use strict';var config=require(_0x84a4('0x0'));var Sequelize=require('sequelize');var _=require('lodash');var jstz=require(_0x84a4('0x1'));var timezone=jstz[_0x84a4('0x2')]();config[_0x84a4('0x3')]=_[_0x84a4('0x4')](config[_0x84a4('0x3')],{'database':'motion2','username':_0x84a4('0x5'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x84a4('0x6'),'dialectOptions':{'charset':_0x84a4('0x7')},'logging':![],'timezone':timezone[_0x84a4('0x8')](),'define':{'charset':'utf8','collate':_0x84a4('0x9')}}});config[_0x84a4('0xa')]=_[_0x84a4('0x4')](config['sequelizeHistory'],{'database':_0x84a4('0xb'),'username':_0x84a4('0x5'),'password':'xC@LL1234','options':{'host':_0x84a4('0xc'),'port':0xcea,'dialect':_0x84a4('0x6'),'dialectOptions':{'charset':_0x84a4('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x84a4('0xd'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x84a4('0x3')][_0x84a4('0xe')],config[_0x84a4('0x3')][_0x84a4('0xf')],config[_0x84a4('0x3')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x84a4('0xa')]['database'],config['sequelizeHistory'][_0x84a4('0xe')],config[_0x84a4('0xa')]['password'],config[_0x84a4('0xa')][_0x84a4('0x10')])};db[_0x84a4('0x11')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x12'));db[_0x84a4('0x13')]=db['sequelize'][_0x84a4('0x14')]('../api/voiceChanSpy/voiceChanSpy.model');db[_0x84a4('0x15')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x16'));db['VoiceExtension']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x17'));db[_0x84a4('0x18')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x19'));db['VoiceQueue']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x1a'));db[_0x84a4('0x1b')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x1c'));db[_0x84a4('0x1d')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x1e'));db['VoiceMail']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x1f'));db[_0x84a4('0x20')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x21'));db[_0x84a4('0x22')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/voiceCallReport/voiceCallReport.model');db[_0x84a4('0x23')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x24'));db[_0x84a4('0x25')]=db['sequelize']['import']('../api/voiceAgentReport/voiceAgentReport.model');db[_0x84a4('0x26')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/voiceQueueReport/voiceQueueReport.model');db[_0x84a4('0x27')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/memberReport/memberReport.model');db[_0x84a4('0x28')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x29'));db[_0x84a4('0x2a')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x2b'));db['UserVoiceQueueRt']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x2c'));db[_0x84a4('0x2d')]=db[_0x84a4('0x3')]['import']('../api/userVoiceQueue/userVoiceQueue.model');db[_0x84a4('0x2e')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x2f'));db['UserMailQueue']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/userMailQueue/userMailQueue.model');db[_0x84a4('0x30')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/userFaxQueue/userFaxQueue.model');db[_0x84a4('0x31')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x32'));db[_0x84a4('0x33')]=db[_0x84a4('0x3')]['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x84a4('0x34')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x35'));db[_0x84a4('0x36')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x37'));db[_0x84a4('0x38')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/mailAccount/mailAccount.model');db['MailQueue']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x39'));db[_0x84a4('0x3a')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x3b'));db[_0x84a4('0x3c')]=db['sequelize'][_0x84a4('0x14')]('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x3d'));db['MailApplication']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x3e'));db[_0x84a4('0x3f')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x40'));db['Dashboard']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x41'));db['DashboardItem']=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x42'));db['FaxAccount']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x43'));db['FaxApplication']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x44'));db[_0x84a4('0x45')]=db['sequelize']['import'](_0x84a4('0x46'));db[_0x84a4('0x47')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x48'));db[_0x84a4('0x49')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x4a'));db['FaxQueueReport']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x4b'));db[_0x84a4('0x4c')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x4d'));db[_0x84a4('0x4e')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x4f'));db[_0x84a4('0x50')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x51'));db[_0x84a4('0x52')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/smsMessage/smsMessage.model');db[_0x84a4('0x53')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x54'));db[_0x84a4('0x55')]=db['sequelize']['import'](_0x84a4('0x56'));db[_0x84a4('0x57')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x58'));db['OpenchannelInteraction']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x59'));db[_0x84a4('0x5a')]=db[_0x84a4('0x3')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x5b'));db[_0x84a4('0x5c')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x5d'));db[_0x84a4('0x5e')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x5f'));db[_0x84a4('0x60')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x61'));db[_0x84a4('0x62')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/chatInteraction/chatInteraction.model');db['ChatMessage']=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x63'));db['ChatOfflineMessage']=db['sequelize']['import'](_0x84a4('0x64'));db[_0x84a4('0x65')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x66'));db[_0x84a4('0x67')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x68'));db['ChatProactiveAction']=db[_0x84a4('0x3')]['import'](_0x84a4('0x69'));db[_0x84a4('0x6a')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/cmCompany/cmCompany.model');db[_0x84a4('0x6b')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x6c'));db[_0x84a4('0x6d')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x6e'));db[_0x84a4('0x6f')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x70'));db[_0x84a4('0x71')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x72'));db[_0x84a4('0x73')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x74'));db['ReportAgentPreview']=db['sequelize'][_0x84a4('0x14')]('../api/reportAgentPreview/reportAgentPreview.model');db[_0x84a4('0x75')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x76'));db[_0x84a4('0x77')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x78'));db[_0x84a4('0x79')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x7a'));db[_0x84a4('0x7b')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/cannedAnswer/cannedAnswer.model');db[_0x84a4('0x7c')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x7d'));db[_0x84a4('0x7e')]=db['sequelize']['import'](_0x84a4('0x7f'));db[_0x84a4('0x80')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x81'));db[_0x84a4('0x82')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x83'));db[_0x84a4('0x84')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x85'));db['VoiceQueuesLog']=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x86'));db[_0x84a4('0x87')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x88'));db['Sound']=db['sequelize']['import'](_0x84a4('0x89'));db[_0x84a4('0x8a')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x8b'));db[_0x84a4('0x8c')]=db['sequelize']['import']('../api/contactItemType/contactItemType.model');db[_0x84a4('0x8d')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x8e'));db[_0x84a4('0x8f')]=db['sequelize']['import'](_0x84a4('0x90'));db['Template']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/template/template.model');db[_0x84a4('0x91')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x92'));db[_0x84a4('0x93')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x94'));db['Integration']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x95'));db['IntegrationReport']=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x96'));db[_0x84a4('0x97')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x98'));db[_0x84a4('0x99')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x9a'));db[_0x84a4('0x9b')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x9c'));db[_0x84a4('0x9d')]=db[_0x84a4('0x3')]['import']('../api/analyticMetric/analyticMetric.model');db[_0x84a4('0x9e')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x9f'));db['AnalyticTreeReport']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x84a4('0xa0')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0xa1'));db[_0x84a4('0xa2')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xa3'));db[_0x84a4('0xa4')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xa5'));db[_0x84a4('0xa6')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xa7'));db[_0x84a4('0xa8')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0x84a4('0xa9')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xaa'));db[_0x84a4('0xab')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xac'));db[_0x84a4('0xad')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x84a4('0xae')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xaf'));db[_0x84a4('0xb0')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0xb1'));db[_0x84a4('0xb2')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xb3'));db[_0x84a4('0xb4')]=db['sequelize'][_0x84a4('0x14')]('../api/intZohoField/intZohoField.model');db[_0x84a4('0xb5')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xb6'));db[_0x84a4('0xb7')]=db['sequelize']['import']('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x84a4('0xb8')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xb9'));db[_0x84a4('0xba')]=db['sequelize']['import'](_0x84a4('0xbb'));db['FreshdeskConfiguration']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db['FreshdeskField']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xbc'));db[_0x84a4('0xbd')]=db[_0x84a4('0x3')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0x84a4('0xbe')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xbf'));db[_0x84a4('0xc0')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xc1'));db[_0x84a4('0xc2')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xc3'));db[_0x84a4('0xc4')]=db['sequelize'][_0x84a4('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0x84a4('0xc5')]=db[_0x84a4('0x3')]['import']('../api/intServicenowField/intServicenowField.model');db[_0x84a4('0xc6')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xc7'));db[_0x84a4('0xc8')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xc9'));db['Dynamics365Field']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xca'));db['FreshsalesAccount']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0x84a4('0xcb')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xcc'));db[_0x84a4('0xcd')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xce'));db[_0x84a4('0xcf')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/integration/integration.model');db[_0x84a4('0xd0')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0xd1'));db[_0x84a4('0xd2')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xd3'));db[_0x84a4('0xd4')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x84a4('0xd5')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xd6'));db[_0x84a4('0xd7')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xd8'));db[_0x84a4('0xd9')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x84a4('0xda')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xdb'));db[_0x84a4('0xdc')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xdd'));db['SquareDetailsReport']=db['sequelize']['import'](_0x84a4('0xde'));db['JscriptyProject']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xdf'));db[_0x84a4('0xe0')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xe1'));db[_0x84a4('0xe2')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0xe3'));db['SquareProject']=db[_0x84a4('0x3')]['import'](_0x84a4('0xe4'));db[_0x84a4('0xe5')]=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/squareRecording/squareRecording.model');db['SquareMessage']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xe6'));db['Team']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xe7'));db[_0x84a4('0xe8')]=db['sequelize']['import'](_0x84a4('0xe9'));db[_0x84a4('0xea')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xeb'));db[_0x84a4('0xec')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xed'));db[_0x84a4('0xee')]=db['sequelize'][_0x84a4('0x14')]('../api/attachment/attachment.model');db[_0x84a4('0xef')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0xf0'));db[_0x84a4('0xf1')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xf2'));db[_0x84a4('0xf3')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xf4'));db['FaxTransferReport']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xf5'));db[_0x84a4('0xf6')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xf7'));db[_0x84a4('0xf8')]=db[_0x84a4('0x3')]['import'](_0x84a4('0xf9'));db[_0x84a4('0xfa')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xfb'));db['VoicePrefix']=db[_0x84a4('0x3')][_0x84a4('0x14')]('../api/voicePrefix/voicePrefix.model');db[_0x84a4('0xfc')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0xfd'));db[_0x84a4('0xfe')]=db['sequelize'][_0x84a4('0x14')]('../api/userProfileSection/userProfileSection.model');db[_0x84a4('0xff')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x100'));db[_0x84a4('0x101')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x102'));db['WhatsappAccount']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x103'));db[_0x84a4('0x104')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x105'));db['WhatsappInteraction']=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x106'));db[_0x84a4('0x107')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x108'));db[_0x84a4('0x109')]=db['sequelize']['import'](_0x84a4('0x10a'));db[_0x84a4('0x10b')]=db['sequelize']['import'](_0x84a4('0x10c'));db[_0x84a4('0x10d')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x10e'));db[_0x84a4('0x10f')]=db['sequelize'][_0x84a4('0x14')](_0x84a4('0x110'));db[_0x84a4('0x111')]=db[_0x84a4('0x3')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x84a4('0x112')]=db[_0x84a4('0x3')]['import'](_0x84a4('0x113'));db[_0x84a4('0x114')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x115'));db[_0x84a4('0x116')]=db[_0x84a4('0x3')][_0x84a4('0x14')](_0x84a4('0x117'));db['User'][_0x84a4('0x118')](db['VoiceMail'],{'as':_0x84a4('0x119'),'onDelete':'cascade','foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x118')](db[_0x84a4('0x116')],{'as':_0x84a4('0x11a'),'onDelete':_0x84a4('0x11b'),'foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x1b')],{'as':'Recordings','foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x11d')],{'as':'VoiceQueuesRt','foreignKey':_0x84a4('0x11e')});db['User']['hasMany'](db[_0x84a4('0x11f')],{'as':_0x84a4('0x120'),'onDelete':'cascade','hooks':!![]});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x71')],{'as':_0x84a4('0x121'),'foreignKey':_0x84a4('0x11e')});db['User'][_0x84a4('0x11c')](db['CmHopperHistory'],{'as':_0x84a4('0x122'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x123')],{'as':_0x84a4('0x123'),'foreignKey':'UserId'});db['User'][_0x84a4('0x11c')](db[_0x84a4('0x124')],{'as':_0x84a4('0x125'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x62')],{'as':_0x84a4('0x126'),'foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x11c')](db['SmsInteraction'],{'as':_0x84a4('0x127'),'foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x11c')](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':'UserId'});db[_0x84a4('0x11')][_0x84a4('0x11c')](db['MailInteraction'],{'as':_0x84a4('0x128'),'foreignKey':'UserId'});db['User'][_0x84a4('0x11c')](db[_0x84a4('0x129')],{'as':'WhatsappInteractions','foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x11')][_0x84a4('0x11c')](db[_0x84a4('0x101')],{'as':_0x84a4('0x12a'),'foreignKey':_0x84a4('0x12b')});db[_0x84a4('0x11')][_0x84a4('0x12c')](db[_0x84a4('0xfc')],{'as':_0x84a4('0xfc'),'foreignKey':_0x84a4('0x12d')});db[_0x84a4('0x11')]['belongsToMany'](db[_0x84a4('0x67')],{'as':_0x84a4('0x12e'),'through':'chat_group_has_users'});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['CmContact'],{'as':_0x84a4('0x130'),'through':'cm_user_has_contacts'});db['User'][_0x84a4('0x12f')](db[_0x84a4('0xfa')],{'as':'Lists','through':_0x84a4('0x131')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db[_0x84a4('0x132')],{'through':_0x84a4('0x133')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['MailInteraction'],{'as':_0x84a4('0x128'),'through':_0x84a4('0x134')});db['User']['belongsToMany'](db[_0x84a4('0x62')],{'as':'ChatInteractions','through':_0x84a4('0x135')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['FaxInteraction'],{'as':_0x84a4('0x136'),'through':_0x84a4('0x137')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db[_0x84a4('0x50')],{'as':_0x84a4('0x127'),'through':_0x84a4('0x138')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','through':_0x84a4('0x139')});db[_0x84a4('0x11')]['belongsToMany'](db[_0x84a4('0x129')],{'as':_0x84a4('0x13a'),'through':_0x84a4('0x13b')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db[_0x84a4('0x13c')],{'as':'VoiceQueues','through':_0x84a4('0x2d'),'required':![]});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['VoicePrefix'],{'as':_0x84a4('0x13d'),'through':_0x84a4('0x114'),'required':![]});db[_0x84a4('0x11')]['belongsToMany'](db[_0x84a4('0x13e')],{'as':_0x84a4('0x13f'),'through':_0x84a4('0x140'),'required':![]});db[_0x84a4('0x11')][_0x84a4('0x12f')](db[_0x84a4('0x65')],{'as':_0x84a4('0x141'),'through':_0x84a4('0x2e'),'required':![],'hooks':!![]});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['FaxQueue'],{'as':_0x84a4('0x142'),'through':_0x84a4('0x30'),'required':![]});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['SmsQueue'],{'as':_0x84a4('0x143'),'through':'UserSmsQueue','required':![]});db[_0x84a4('0x11')]['belongsToMany'](db[_0x84a4('0x144')],{'as':_0x84a4('0x145'),'through':_0x84a4('0x33'),'required':![]});db[_0x84a4('0x11')]['belongsToMany'](db[_0x84a4('0x10d')],{'as':_0x84a4('0x146'),'through':'UserWhatsappQueue','required':![]});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['CmList'],{'through':_0x84a4('0x131')});db[_0x84a4('0x11')]['belongsToMany'](db['ChatWebsite'],{'as':_0x84a4('0x147'),'through':'user_has_chat_websites'});db['User'][_0x84a4('0x12f')](db['FaxAccount'],{'as':_0x84a4('0x148'),'through':_0x84a4('0x149')});db['User'][_0x84a4('0x12f')](db['MailAccount'],{'as':'MailAccounts','through':_0x84a4('0x14a')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db['OpenchannelAccount'],{'as':_0x84a4('0x14b'),'through':_0x84a4('0x14c')});db['User']['belongsToMany'](db[_0x84a4('0x4c')],{'as':_0x84a4('0x14d'),'through':_0x84a4('0x14e')});db[_0x84a4('0x11')][_0x84a4('0x12f')](db[_0x84a4('0x14f')],{'as':_0x84a4('0x150'),'through':_0x84a4('0x151')});db[_0x84a4('0x13')]['hasMany'](db['VoiceExtension'],{'as':_0x84a4('0x152'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x153')});db[_0x84a4('0x15')][_0x84a4('0x11c')](db[_0x84a4('0x11f')],{'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x11f')][_0x84a4('0x11c')](db[_0x84a4('0x11f')],{'as':'Applications','onDelete':_0x84a4('0x11b')});db[_0x84a4('0x18')]['belongsToMany'](db[_0x84a4('0x154')],{'as':_0x84a4('0x155'),'through':_0x84a4('0x156')});db[_0x84a4('0x13c')]['hasMany'](db[_0x84a4('0x11d')],{'as':_0x84a4('0x157'),'foreignKey':_0x84a4('0x158')});db['VoiceQueue'][_0x84a4('0x11c')](db[_0x84a4('0x6d')],{'as':_0x84a4('0x159'),'foreignKey':'VoiceQueueId'});db[_0x84a4('0x13c')]['hasMany'](db['CmHopperFinal'],{'as':_0x84a4('0x121'),'foreignKey':_0x84a4('0x158')});db['VoiceQueue']['hasMany'](db['CmHopperHistory'],{'as':_0x84a4('0x15a'),'foreignKey':_0x84a4('0x158')});db[_0x84a4('0x13c')][_0x84a4('0x11c')](db['ReportAgentPreview'],{'as':_0x84a4('0x123'),'foreignKey':'VoiceQueueId'});db[_0x84a4('0x13c')][_0x84a4('0x11c')](db[_0x84a4('0x6f')],{'as':'HopperBlacks','foreignKey':_0x84a4('0x158')});db[_0x84a4('0x13c')][_0x84a4('0x11c')](db['JscriptySessionReport'],{'as':_0x84a4('0x15b'),'foreignKey':_0x84a4('0x158')});db['VoiceQueue'][_0x84a4('0x12c')](db[_0x84a4('0x28')],{'as':_0x84a4('0x28'),'foreignKey':_0x84a4('0x15c')});db[_0x84a4('0x13c')][_0x84a4('0x12c')](db[_0x84a4('0x28')],{'as':_0x84a4('0x15d'),'foreignKey':'TrunkBackupId'});db['VoiceQueue'][_0x84a4('0x12c')](db[_0x84a4('0x80')],{'as':_0x84a4('0x80'),'foreignKey':'IntervalId'});db[_0x84a4('0x13c')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x84a4('0x13c')][_0x84a4('0x12f')](db['CmList'],{'as':_0x84a4('0x15e'),'through':_0x84a4('0x15f')});db[_0x84a4('0x13c')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x2d')});db['VoiceQueue']['belongsToMany'](db[_0x84a4('0x132')],{'as':_0x84a4('0x161'),'through':_0x84a4('0x111')});db[_0x84a4('0x13c')][_0x84a4('0x12f')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x162'),'through':_0x84a4('0x163')});db['VoiceRecording'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':'User','foreignKey':_0x84a4('0x11e')});db['ScreenRecording'][_0x84a4('0x12c')](db['User'],{'as':_0x84a4('0x11'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x119')][_0x84a4('0x11c')](db[_0x84a4('0x20')],{'as':_0x84a4('0x164'),'onDelete':'cascade','foreignKey':_0x84a4('0x165'),'sourceKey':_0x84a4('0x166')});db[_0x84a4('0x20')]['belongsTo'](db[_0x84a4('0x119')],{'foreignKey':_0x84a4('0x165'),'targetKey':'mailbox'});db[_0x84a4('0x22')][_0x84a4('0x11c')](db[_0x84a4('0x26')],{'as':_0x84a4('0x167'),'foreignKey':_0x84a4('0x168'),'constraints':![]});db[_0x84a4('0x22')][_0x84a4('0x11c')](db['VoiceAgentReport'],{'as':_0x84a4('0x169'),'foreignKey':_0x84a4('0x168'),'constraints':![]});db[_0x84a4('0x22')][_0x84a4('0x12c')](db['User'],{'as':_0x84a4('0x11'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x22')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x36')][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0x84a4('0x36')][_0x84a4('0x12c')](db[_0x84a4('0x10f')],{'as':'CloudProvider','foreignKey':'CloudProviderId','onDelete':_0x84a4('0x16c')});db[_0x84a4('0x16d')][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'as':_0x84a4('0x38'),'foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x16d')][_0x84a4('0x12c')](db[_0x84a4('0x10f')],{'as':_0x84a4('0x10f'),'foreignKey':'CloudProviderId','onDelete':_0x84a4('0x16c')});db[_0x84a4('0x38')][_0x84a4('0x118')](db['MailServerIn'],{'as':_0x84a4('0x16f'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x38')][_0x84a4('0x118')](db[_0x84a4('0x16d')],{'as':_0x84a4('0x170'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x38')][_0x84a4('0x11c')](db[_0x84a4('0x7c')],{'as':'Dispositions','foreignKey':_0x84a4('0x16e'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x38')][_0x84a4('0x11c')](db['CannedAnswer'],{'as':_0x84a4('0x171'),'foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x38')][_0x84a4('0x11c')](db[_0x84a4('0x172')],{'as':_0x84a4('0x164'),'foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x38')][_0x84a4('0x11c')](db[_0x84a4('0x3c')],{'as':_0x84a4('0x173')});db[_0x84a4('0x38')][_0x84a4('0x11c')](db[_0x84a4('0x174')],{'as':'Applications'});db[_0x84a4('0x38')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x38')]['belongsTo'](db['Template'],{'as':'Template','foreignKey':_0x84a4('0x177')});db[_0x84a4('0x38')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':_0x84a4('0x178'),'foreignKey':_0x84a4('0x179')});db[_0x84a4('0x38')][_0x84a4('0x12f')](db['User'],{'as':'Agents','through':_0x84a4('0x14a')});db[_0x84a4('0x13e')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x140')});db[_0x84a4('0x13e')][_0x84a4('0x12f')](db[_0x84a4('0x132')],{'through':_0x84a4('0x17a'),'as':'Teams'});db[_0x84a4('0x3c')][_0x84a4('0x11c')](db[_0x84a4('0x172')],{'as':_0x84a4('0x164'),'onDelete':_0x84a4('0x11b'),'foreignKey':'MailInteractionId'});db[_0x84a4('0x3c')][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x3c')]['belongsTo'](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':'ContactId'});db[_0x84a4('0x3c')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17c'),'foreignKey':'UserId'});db[_0x84a4('0x3c')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x17d'),'as':'Tags'});db[_0x84a4('0x3c')]['belongsToMany'](db[_0x84a4('0x8a')],{'through':_0x84a4('0x17d'),'as':_0x84a4('0x17e')});db[_0x84a4('0x3c')]['belongsToMany'](db[_0x84a4('0x11')],{'as':_0x84a4('0x17f'),'through':'user_has_mail_interactions','foreignKey':_0x84a4('0x180')});db[_0x84a4('0x172')][_0x84a4('0x11c')](db['Attachment'],{'as':_0x84a4('0x181'),'onDelete':'cascade'});db[_0x84a4('0x172')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x11')});db['MailMessage'][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x16a')});db[_0x84a4('0x172')]['belongsTo'](db['MailInteraction'],{'as':_0x84a4('0x182'),'foreignKey':_0x84a4('0x180')});db[_0x84a4('0x172')][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x172')][_0x84a4('0x12c')](db[_0x84a4('0x5c')],{'as':_0x84a4('0x5c'),'foreignKey':_0x84a4('0x183')});db[_0x84a4('0x172')]['belongsTo'](db['ChatOfflineMessage'],{'as':_0x84a4('0x184'),'foreignKey':_0x84a4('0x185')});db[_0x84a4('0x174')][_0x84a4('0x12c')](db['User'],{'onDelete':'restrict'});db[_0x84a4('0x174')][_0x84a4('0x12c')](db[_0x84a4('0x13e')],{'onDelete':_0x84a4('0x16c')});db['MailApplication'][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x174')][_0x84a4('0x12c')](db[_0x84a4('0x80')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x174')]['belongsTo'](db['Tag'],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x187')});db['MailQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x38')],{});db[_0x84a4('0x3f')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':'ListId'});db[_0x84a4('0x3f')]['belongsTo'](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x3f')][_0x84a4('0x12c')](db[_0x84a4('0x3c')],{});db['MailQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x172')],{});db[_0x84a4('0x3f')][_0x84a4('0x12c')](db['User'],{});db[_0x84a4('0x3f')][_0x84a4('0x12c')](db[_0x84a4('0x13e')],{});db['Dashboard'][_0x84a4('0x11c')](db[_0x84a4('0x188')],{'as':_0x84a4('0x189'),'onDelete':'cascade'});db[_0x84a4('0x18a')][_0x84a4('0x11c')](db[_0x84a4('0x7c')],{'as':_0x84a4('0x18b'),'foreignKey':_0x84a4('0x18c'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x18a')][_0x84a4('0x11c')](db['CannedAnswer'],{'as':_0x84a4('0x171'),'foreignKey':_0x84a4('0x18c')});db[_0x84a4('0x18a')][_0x84a4('0x11c')](db[_0x84a4('0x45')],{'as':_0x84a4('0x173')});db[_0x84a4('0x18a')]['hasMany'](db[_0x84a4('0x18d')],{'as':_0x84a4('0x18e')});db[_0x84a4('0x18a')][_0x84a4('0x11c')](db[_0x84a4('0x11f')],{'as':'Exntensions','onDelete':_0x84a4('0x11b')});db['FaxAccount'][_0x84a4('0x11c')](db[_0x84a4('0x47')],{'as':_0x84a4('0x164')});db[_0x84a4('0x18a')][_0x84a4('0x12c')](db[_0x84a4('0x28')],{'as':'Trunk'});db[_0x84a4('0x18a')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x18a')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x84a4('0x18a')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Agents','through':_0x84a4('0x149')});db[_0x84a4('0x18d')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'onDelete':'restrict'});db[_0x84a4('0x18d')][_0x84a4('0x12c')](db[_0x84a4('0x49')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x18d')][_0x84a4('0x12c')](db[_0x84a4('0x18a')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x18d')][_0x84a4('0x12c')](db[_0x84a4('0x8a')],{'onDelete':'restrict','foreignKey':_0x84a4('0x187')});db['FaxInteraction'][_0x84a4('0x11c')](db[_0x84a4('0x47')],{'as':_0x84a4('0x164'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x18f')});db[_0x84a4('0x45')]['belongsTo'](db[_0x84a4('0x18a')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x18c')});db[_0x84a4('0x45')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x45')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17c'),'foreignKey':'UserId'});db[_0x84a4('0x45')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x190'),'as':'Tags'});db['FaxInteraction'][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x190'),'as':'ThroughTags'});db[_0x84a4('0x45')]['belongsToMany'](db[_0x84a4('0x11')],{'as':'Users','through':_0x84a4('0x137'),'foreignKey':'FaxInteractionId'});db[_0x84a4('0x47')]['belongsTo'](db[_0x84a4('0x11')],{'onDelete':'cascade','as':'User'});db[_0x84a4('0x47')][_0x84a4('0x12c')](db[_0x84a4('0x45')],{'as':_0x84a4('0x182'),'foreignKey':'FaxInteractionId'});db['FaxMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x16a')});db[_0x84a4('0x47')][_0x84a4('0x12c')](db[_0x84a4('0xee')],{'as':_0x84a4('0xee'),'foreignKey':_0x84a4('0x191')});db['FaxMessage'][_0x84a4('0x12c')](db[_0x84a4('0x18a')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x18c')});db['FaxQueue'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x30')});db[_0x84a4('0x49')][_0x84a4('0x12f')](db[_0x84a4('0x132')],{'through':_0x84a4('0x192'),'as':_0x84a4('0x161')});db['FaxQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x18a')],{});db[_0x84a4('0x193')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':'List','foreignKey':_0x84a4('0x176')});db[_0x84a4('0x193')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':'ContactId'});db[_0x84a4('0x193')]['belongsTo'](db[_0x84a4('0x45')],{});db[_0x84a4('0x193')]['belongsTo'](db[_0x84a4('0x47')],{});db[_0x84a4('0x193')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{});db[_0x84a4('0x193')][_0x84a4('0x12c')](db['FaxQueue'],{});db[_0x84a4('0x4c')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0x84a4('0x4c')]['hasMany'](db['CannedAnswer'],{'as':_0x84a4('0x171'),'foreignKey':_0x84a4('0x194')});db[_0x84a4('0x4c')]['hasMany'](db[_0x84a4('0x52')],{'as':_0x84a4('0x164'),'foreignKey':'SmsAccountId'});db['SmsAccount'][_0x84a4('0x11c')](db[_0x84a4('0x50')],{'as':'Interactions'});db[_0x84a4('0x4c')][_0x84a4('0x11c')](db[_0x84a4('0x4e')],{'as':'Applications'});db[_0x84a4('0x4c')]['belongsTo'](db['CmList'],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x4c')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':_0x84a4('0x178'),'foreignKey':_0x84a4('0x179')});db['SmsAccount'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x14e')});db['SmsApplication']['belongsTo'](db['User'],{'onDelete':_0x84a4('0x16c')});db['SmsApplication'][_0x84a4('0x12c')](db[_0x84a4('0x53')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x4e')][_0x84a4('0x12c')](db[_0x84a4('0x4c')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x4e')]['belongsTo'](db[_0x84a4('0x80')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x4e')]['belongsTo'](db[_0x84a4('0x8a')],{'onDelete':'restrict','foreignKey':_0x84a4('0x187')});db['SmsInteraction'][_0x84a4('0x11c')](db['SmsMessage'],{'as':'Messages','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x195')});db['SmsInteraction'][_0x84a4('0x12c')](db[_0x84a4('0x4c')],{'as':'Account','foreignKey':_0x84a4('0x194')});db[_0x84a4('0x50')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':'Contact','foreignKey':_0x84a4('0x16b')});db['SmsInteraction'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17c'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x50')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x196'),'as':_0x84a4('0x197')});db['SmsInteraction']['belongsToMany'](db['Tag'],{'through':_0x84a4('0x196'),'as':_0x84a4('0x17e')});db['SmsInteraction'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17f'),'through':_0x84a4('0x138'),'foreignKey':_0x84a4('0x195')});db[_0x84a4('0x52')][_0x84a4('0x12c')](db['User'],{'as':_0x84a4('0x11')});db[_0x84a4('0x52')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x16a')});db[_0x84a4('0x52')][_0x84a4('0x12c')](db['SmsInteraction'],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x182'),'foreignKey':_0x84a4('0x195')});db[_0x84a4('0x52')]['belongsTo'](db[_0x84a4('0x4c')],{'as':'Account','foreignKey':_0x84a4('0x194')});db[_0x84a4('0x53')][_0x84a4('0x12f')](db['User'],{'as':_0x84a4('0x160'),'through':_0x84a4('0x31'),'foreignKey':'SmsQueueId'});db['SmsQueue']['belongsToMany'](db['Team'],{'through':_0x84a4('0x198'),'as':_0x84a4('0x161')});db[_0x84a4('0x55')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':_0x84a4('0x199'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x55')][_0x84a4('0x11c')](db[_0x84a4('0x7b')],{'as':'Answers','foreignKey':_0x84a4('0x199')});db['OpenchannelAccount'][_0x84a4('0x11c')](db[_0x84a4('0x124')],{'as':_0x84a4('0x173'),'foreignKey':_0x84a4('0x199')});db[_0x84a4('0x55')][_0x84a4('0x11c')](db[_0x84a4('0x5a')],{'as':_0x84a4('0x164'),'foreignKey':_0x84a4('0x199')});db['OpenchannelAccount'][_0x84a4('0x11c')](db[_0x84a4('0x57')],{'as':'Applications','foreignKey':_0x84a4('0x199')});db[_0x84a4('0x55')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x55')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':_0x84a4('0x178'),'foreignKey':_0x84a4('0x179')});db['OpenchannelAccount'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':'user_has_openchannel_accounts'});db[_0x84a4('0x57')]['belongsTo'](db[_0x84a4('0x11')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x57')][_0x84a4('0x12c')](db[_0x84a4('0x144')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x19a')});db[_0x84a4('0x57')][_0x84a4('0x12c')](db[_0x84a4('0x55')],{'onDelete':'restrict','foreignKey':_0x84a4('0x199')});db[_0x84a4('0x57')][_0x84a4('0x12c')](db[_0x84a4('0x80')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x57')][_0x84a4('0x12c')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x84a4('0x124')]['hasMany'](db[_0x84a4('0x5a')],{'as':_0x84a4('0x164'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x19b')});db[_0x84a4('0x124')][_0x84a4('0x12c')](db[_0x84a4('0x55')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x199')});db[_0x84a4('0x124')][_0x84a4('0x12c')](db['CmContact'],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x124')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17c'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x124')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x19c'),'as':'Tags'});db[_0x84a4('0x124')]['belongsToMany'](db[_0x84a4('0x8a')],{'through':_0x84a4('0x19c'),'as':_0x84a4('0x17e')});db[_0x84a4('0x124')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Users','through':_0x84a4('0x139'),'foreignKey':_0x84a4('0x19b')});db['OpenchannelMessage'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x11')});db[_0x84a4('0x5a')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x16a')});db[_0x84a4('0x5a')][_0x84a4('0x12c')](db[_0x84a4('0x124')],{'onDelete':'cascade','as':_0x84a4('0x182'),'foreignKey':_0x84a4('0x19b')});db[_0x84a4('0x5a')][_0x84a4('0x12c')](db[_0x84a4('0xee')],{'as':_0x84a4('0xee'),'foreignKey':_0x84a4('0x191')});db[_0x84a4('0x5a')][_0x84a4('0x12c')](db[_0x84a4('0x55')],{'as':'Account','foreignKey':_0x84a4('0x199')});db['OpenchannelQueue']['belongsToMany'](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x33'),'foreignKey':_0x84a4('0x19a')});db[_0x84a4('0x144')][_0x84a4('0x12f')](db[_0x84a4('0x132')],{'through':_0x84a4('0x19d'),'as':_0x84a4('0x161')});db['ChatWebsite'][_0x84a4('0x11c')](db[_0x84a4('0x7c')],{'as':_0x84a4('0x18b'),'foreignKey':_0x84a4('0x183'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x5c')]['hasMany'](db[_0x84a4('0x7b')],{'as':_0x84a4('0x171'),'foreignKey':_0x84a4('0x183')});db[_0x84a4('0x5c')]['hasMany'](db['ChatProactiveAction'],{'as':_0x84a4('0x19e')});db['ChatWebsite']['hasMany'](db['ChatInteraction'],{'as':_0x84a4('0x173')});db[_0x84a4('0x5c')][_0x84a4('0x11c')](db[_0x84a4('0x60')],{'as':_0x84a4('0x18e')});db[_0x84a4('0x5c')][_0x84a4('0x11c')](db[_0x84a4('0x19f')],{'as':_0x84a4('0x164')});db[_0x84a4('0x5c')]['belongsTo'](db[_0x84a4('0xfa')],{'as':'List','foreignKey':_0x84a4('0x176')});db['ChatWebsite'][_0x84a4('0x12c')](db[_0x84a4('0x80')],{'as':_0x84a4('0x80'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x5c')][_0x84a4('0x12c')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0x84a4('0x16e')});db[_0x84a4('0x5c')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':_0x84a4('0x178'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x84a4('0x5c')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x1a0')});db[_0x84a4('0x5e')][_0x84a4('0x12c')](db[_0x84a4('0x55')],{});db[_0x84a4('0x5e')]['belongsTo'](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x5e')][_0x84a4('0x12c')](db['CmContact'],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x5e')][_0x84a4('0x12c')](db['OpenchannelInteraction'],{});db[_0x84a4('0x5e')][_0x84a4('0x12c')](db['OpenchannelMessage'],{});db['OpenchannelQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{});db['OpenchannelQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x144')],{});db['ChatApplication'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x1a1'),'foreignKey':'UserId','onDelete':_0x84a4('0x16c')});db[_0x84a4('0x60')]['belongsTo'](db[_0x84a4('0x65')],{'as':_0x84a4('0x1a2'),'foreignKey':_0x84a4('0x1a3'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x60')][_0x84a4('0x12c')](db[_0x84a4('0x5c')],{'as':_0x84a4('0x1a4'),'foreignKey':_0x84a4('0x183'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x60')][_0x84a4('0x12c')](db[_0x84a4('0x8a')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x187')});db['ChatInteraction']['hasMany'](db[_0x84a4('0x19f')],{'as':_0x84a4('0x164'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1a5')});db[_0x84a4('0x62')][_0x84a4('0x12c')](db['ChatWebsite'],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x183')});db['ChatInteraction'][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x62')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17c'),'foreignKey':_0x84a4('0x11e')});db[_0x84a4('0x62')]['belongsToMany'](db['Tag'],{'through':_0x84a4('0x1a6'),'as':_0x84a4('0x197')});db['ChatInteraction'][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x1a6'),'as':_0x84a4('0x17e')});db[_0x84a4('0x62')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x17f'),'through':_0x84a4('0x135'),'foreignKey':_0x84a4('0x1a5')});db[_0x84a4('0x19f')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x11')});db[_0x84a4('0x19f')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':'Contact','foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x19f')][_0x84a4('0x12c')](db[_0x84a4('0x62')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x182'),'foreignKey':_0x84a4('0x1a5')});db[_0x84a4('0x19f')][_0x84a4('0x12c')](db[_0x84a4('0xee')],{'as':_0x84a4('0xee'),'foreignKey':_0x84a4('0x191')});db[_0x84a4('0x19f')]['belongsTo'](db['ChatWebsite'],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x183')});db[_0x84a4('0x184')][_0x84a4('0x11c')](db['Attachment'],{'as':_0x84a4('0x181'),'foreignKey':_0x84a4('0x185'),'onDelete':'cascade','hooks':!![]});db['ChatOfflineMessage'][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x184')]['belongsTo'](db[_0x84a4('0x5c')],{'as':'Account','foreignKey':_0x84a4('0x183')});db[_0x84a4('0x65')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Agents','through':_0x84a4('0x2e'),'hooks':!![]});db[_0x84a4('0x65')][_0x84a4('0x12f')](db[_0x84a4('0x132')],{'through':_0x84a4('0x1a7'),'as':_0x84a4('0x161')});db[_0x84a4('0x67')][_0x84a4('0x11c')](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0x84a4('0x1a8'),'onDelete':_0x84a4('0x11b')});db['ChatGroup'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Members','through':_0x84a4('0x1a9')});db['ChatProactiveAction'][_0x84a4('0x12c')](db[_0x84a4('0x5c')],{'as':_0x84a4('0x1a4'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x84a4('0x11c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x130'),'foreignKey':_0x84a4('0x1aa')});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db[_0x84a4('0x8d')],{'as':_0x84a4('0x1ab'),'foreignKey':_0x84a4('0x1ac')});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db[_0x84a4('0x6d')],{'as':_0x84a4('0x159'),'foreignKey':'ContactId'});db['CmContact'][_0x84a4('0x11c')](db[_0x84a4('0x71')],{'as':_0x84a4('0x121'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db[_0x84a4('0x73')],{'as':_0x84a4('0x15a'),'foreignKey':'ContactId'});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db['ReportAgentPreview'],{'as':_0x84a4('0x123'),'foreignKey':'ContactId'});db['CmContact'][_0x84a4('0x11c')](db[_0x84a4('0xd9')],{'as':_0x84a4('0x15b'),'foreignKey':_0x84a4('0x16b')});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db[_0x84a4('0x124')],{'as':_0x84a4('0x125'),'foreignKey':'ContactId','onDelete':_0x84a4('0x16c')});db[_0x84a4('0x6b')]['hasMany'](db['ChatInteraction'],{'as':_0x84a4('0x126'),'foreignKey':_0x84a4('0x16b'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x6b')]['hasMany'](db[_0x84a4('0x50')],{'as':_0x84a4('0x127'),'foreignKey':_0x84a4('0x16b'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x6b')][_0x84a4('0x11c')](db[_0x84a4('0x45')],{'as':'FaxInteractions','foreignKey':_0x84a4('0x16b'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x6b')]['hasMany'](db[_0x84a4('0x3c')],{'as':'MailInteractions','foreignKey':_0x84a4('0x16b'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x6b')][_0x84a4('0x12c')](db['CmCompany'],{'as':_0x84a4('0x1ad'),'foreignKey':_0x84a4('0x1aa')});db['CmContact']['belongsTo'](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176'),'onDelete':_0x84a4('0x11b')});db['CmContact'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Users','through':'cm_user_has_contacts'});db[_0x84a4('0x6b')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'as':'Tags','through':'cm_contact_has_tags'});db[_0x84a4('0x6b')]['belongsToMany'](db[_0x84a4('0x8a')],{'through':'cm_contact_has_tags','as':'ThroughTags'});db[_0x84a4('0x6d')][_0x84a4('0x11c')](db[_0x84a4('0x8f')],{'as':_0x84a4('0x1ae'),'foreignKey':'CmHopperId'});db['CmHopper'][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x16b'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x6d')][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x6d')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x1a1'),'foreignKey':'UserId'});db[_0x84a4('0x6d')][_0x84a4('0x12c')](db[_0x84a4('0x13c')],{'as':_0x84a4('0x1a2'),'foreignKey':_0x84a4('0x158'),'onDelete':'cascade'});db[_0x84a4('0x6d')][_0x84a4('0x12c')](db[_0x84a4('0xea')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':_0x84a4('0x11b')});db['CmHopper'][_0x84a4('0x12c')](db['User'],{'as':_0x84a4('0x17c'),'foreignKey':_0x84a4('0x1af')});db['CmHopperBlack'][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':'ContactId','onDelete':_0x84a4('0x11b')});db['CmHopperBlack'][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':'List','foreignKey':'ListId','onDelete':_0x84a4('0x11b')});db[_0x84a4('0x6f')][_0x84a4('0x12c')](db[_0x84a4('0x13c')],{'as':_0x84a4('0x1a2'),'foreignKey':_0x84a4('0x158'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x6f')]['belongsTo'](db[_0x84a4('0xea')],{'as':'Campaign','foreignKey':_0x84a4('0x1b0'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x79')][_0x84a4('0x11c')](db[_0x84a4('0x7e')],{'as':{'plural':_0x84a4('0x1b1'),'singular':_0x84a4('0x1b2')},'foreignKey':_0x84a4('0x1b3'),'onDelete':'cascade','hooks':!![]});db[_0x84a4('0x79')][_0x84a4('0x11c')](db[_0x84a4('0x7e')],{'as':{'plural':'Any','singular':_0x84a4('0x1b4')},'foreignKey':_0x84a4('0x1b5'),'onDelete':_0x84a4('0x11b'),'hooks':!![]});db[_0x84a4('0x79')][_0x84a4('0x11c')](db['Action'],{'as':_0x84a4('0x1b6'),'foreignKey':_0x84a4('0x1b7'),'onDelete':'cascade','hooks':!![]});db[_0x84a4('0x7c')][_0x84a4('0x11c')](db[_0x84a4('0x7c')],{'as':'Dispositions','foreignKey':'ParentId','onDelete':'cascade'});db[_0x84a4('0x80')][_0x84a4('0x11c')](db[_0x84a4('0x80')],{'as':_0x84a4('0x1b8'),'foreignKey':_0x84a4('0x186'),'onDelete':_0x84a4('0x11b'),'hooks':!![],'required':![]});db[_0x84a4('0x80')][_0x84a4('0x11c')](db[_0x84a4('0x11f')],{'as':_0x84a4('0x120'),'foreignKey':_0x84a4('0x186'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x80')][_0x84a4('0x11c')](db['MailApplication'],{'as':_0x84a4('0x1b9'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x80')][_0x84a4('0x11c')](db['ChatApplication'],{'as':'ChatApplications','foreignKey':_0x84a4('0x186')});db[_0x84a4('0x80')][_0x84a4('0x11c')](db[_0x84a4('0x18d')],{'as':_0x84a4('0x1ba'),'foreignKey':_0x84a4('0x186')});db[_0x84a4('0x80')][_0x84a4('0x11c')](db[_0x84a4('0x4e')],{'as':_0x84a4('0x1bb'),'foreignKey':'IntervalId'});db[_0x84a4('0x87')][_0x84a4('0x12c')](db['MailAccount'],{});db[_0x84a4('0x87')][_0x84a4('0x12c')](db[_0x84a4('0x99')],{'foreignKey':'DefaultReportId'});db[_0x84a4('0x87')][_0x84a4('0x12c')](db[_0x84a4('0x97')],{'foreignKey':_0x84a4('0x1bc')});db['Sound'][_0x84a4('0x12f')](db[_0x84a4('0x18')],{'as':'Mohs','through':'moh_has_sounds','onDelete':_0x84a4('0x16c')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x6b')],{'through':_0x84a4('0x1bd')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x62')],{'through':_0x84a4('0x1a6')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x3c')],{'through':_0x84a4('0x17d')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x50')],{'through':_0x84a4('0x196')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x45')],{'through':_0x84a4('0x190')});db['Tag']['belongsToMany'](db[_0x84a4('0x124')],{'through':_0x84a4('0x19c')});db[_0x84a4('0x8a')][_0x84a4('0x12f')](db[_0x84a4('0x129')],{'through':_0x84a4('0x1be')});db[_0x84a4('0x8d')][_0x84a4('0x12c')](db[_0x84a4('0x8c')],{'as':_0x84a4('0x1bf'),'foreignKey':_0x84a4('0x1c0')});db['CmHopperAdditionalPhone']['belongsTo'](db[_0x84a4('0x6d')],{'as':_0x84a4('0x1c1'),'foreignKey':_0x84a4('0x1c2')});db['CmContactHasItem'][_0x84a4('0x12c')](db['CmContact'],{'as':_0x84a4('0x16a'),'foreignKey':_0x84a4('0x1ac')});db['Trigger'][_0x84a4('0x11c')](db['Condition'],{'as':{'plural':_0x84a4('0x1c3'),'singular':_0x84a4('0x1c4')},'foreignKey':_0x84a4('0x1c5'),'onDelete':_0x84a4('0x11b'),'hooks':!![]});db[_0x84a4('0x91')]['hasMany'](db['Condition'],{'as':{'plural':_0x84a4('0x1c6'),'singular':_0x84a4('0x1c7')},'foreignKey':_0x84a4('0x1c8'),'onDelete':'cascade','hooks':!![]});db[_0x84a4('0x91')]['hasMany'](db[_0x84a4('0x77')],{'as':_0x84a4('0x1b6'),'foreignKey':'TriggerId','onDelete':_0x84a4('0x11b'),'hooks':!![]});db[_0x84a4('0x97')]['hasMany'](db[_0x84a4('0x9e')],{'as':_0x84a4('0x1c9'),'onDelete':'cascade','foreignKey':_0x84a4('0x1bc'),'hooks':!![]});db[_0x84a4('0x99')]['hasMany'](db[_0x84a4('0x9e')],{'as':_0x84a4('0x1c9'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1ca')});db[_0x84a4('0x9d')]['hasMany'](db[_0x84a4('0x9e')],{'as':_0x84a4('0x1c9'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cb')});db['AnalyticFieldReport'][_0x84a4('0x12c')](db[_0x84a4('0x9d')],{'foreignKey':_0x84a4('0x1cb')});db[_0x84a4('0xa0')][_0x84a4('0x11c')](db[_0x84a4('0xa2')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xa2')][_0x84a4('0x11c')](db['SalesforceField'],{'as':_0x84a4('0x1cd'),'onDelete':'cascade','foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xa2')][_0x84a4('0x11c')](db[_0x84a4('0xa4')],{'as':_0x84a4('0x1cf'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xa2')][_0x84a4('0x11c')](db[_0x84a4('0xa4')],{'as':_0x84a4('0x1c9'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xa2')][_0x84a4('0x12c')](db[_0x84a4('0xa0')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xa4')]['hasMany'](db[_0x84a4('0xa4')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xa4')][_0x84a4('0x11c')](db[_0x84a4('0xa4')],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xa4')][_0x84a4('0x11c')](db[_0x84a4('0xa4')],{'as':'Field','foreignKey':_0x84a4('0x1d1')});db['SalesforceField']['belongsTo'](db['Variable'],{'as':_0x84a4('0x93'),'foreignKey':'VariableId'});db['SugarcrmAccount'][_0x84a4('0x11c')](db[_0x84a4('0xa8')],{'as':'Configurations','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xa8')][_0x84a4('0x11c')](db['SugarcrmField'],{'as':'Subjects','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xa8')][_0x84a4('0x11c')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0x84a4('0x11b'),'foreignKey':'DescriptionId'});db[_0x84a4('0xa8')]['hasMany'](db[_0x84a4('0xa9')],{'as':_0x84a4('0x1c9'),'onDelete':'cascade','foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xa8')][_0x84a4('0x12c')](db['SugarcrmAccount'],{'as':_0x84a4('0x17b'),'foreignKey':'AccountId'});db[_0x84a4('0xa9')][_0x84a4('0x11c')](db['SugarcrmField'],{'as':'Subject','foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xa9')]['hasMany'](db[_0x84a4('0xa9')],{'as':'Description','foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xa9')][_0x84a4('0x11c')](db['SugarcrmField'],{'as':'Field','foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xa9')][_0x84a4('0x12c')](db[_0x84a4('0x93')],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xab')][_0x84a4('0x11c')](db[_0x84a4('0xad')],{'as':_0x84a4('0x1d5'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db['DeskConfiguration'][_0x84a4('0x11c')](db[_0x84a4('0xae')],{'as':_0x84a4('0x1cd'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1ce')});db['DeskConfiguration'][_0x84a4('0x11c')](db['DeskField'],{'as':_0x84a4('0x1cf'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x84a4('0xad')][_0x84a4('0x11c')](db[_0x84a4('0xae')],{'as':'Fields','onDelete':_0x84a4('0x11b'),'foreignKey':'FieldId'});db['DeskConfiguration'][_0x84a4('0x12c')](db[_0x84a4('0xab')],{'as':'Account','foreignKey':_0x84a4('0x1cc')});db['DeskConfiguration'][_0x84a4('0x12f')](db['Tag'],{'through':'int_desk_configuration_has_tags'});db[_0x84a4('0xae')][_0x84a4('0x11c')](db[_0x84a4('0xae')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db['DeskField'][_0x84a4('0x11c')](db[_0x84a4('0xae')],{'as':'Description','foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xae')]['hasMany'](db['DeskField'],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xae')][_0x84a4('0x12c')](db[_0x84a4('0x93')],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xb0')][_0x84a4('0x11c')](db['ZohoConfiguration'],{'as':_0x84a4('0x1d5'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xb2')][_0x84a4('0x11c')](db['ZohoField'],{'as':_0x84a4('0x1cd'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xb2')]['hasMany'](db['ZohoField'],{'as':'Descriptions','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xb2')][_0x84a4('0x11c')](db['ZohoField'],{'as':_0x84a4('0x1c9'),'onDelete':_0x84a4('0x11b'),'foreignKey':'FieldId'});db[_0x84a4('0xb2')][_0x84a4('0x12c')](db[_0x84a4('0xb0')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xb4')][_0x84a4('0x11c')](db[_0x84a4('0xb4')],{'as':_0x84a4('0x1d2'),'foreignKey':'SubjectId'});db['ZohoField']['hasMany'](db[_0x84a4('0xb4')],{'as':'Description','foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xb4')][_0x84a4('0x11c')](db[_0x84a4('0xb4')],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db['ZohoField'][_0x84a4('0x12c')](db[_0x84a4('0x93')],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xb5')][_0x84a4('0x11c')](db[_0x84a4('0xb7')],{'as':_0x84a4('0x1d5'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xb7')][_0x84a4('0x11c')](db[_0x84a4('0xb8')],{'as':_0x84a4('0x1cd'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xb7')][_0x84a4('0x11c')](db[_0x84a4('0xb8')],{'as':'Descriptions','foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xb7')][_0x84a4('0x11c')](db[_0x84a4('0xb8')],{'as':_0x84a4('0x1c9'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xb7')][_0x84a4('0x12c')](db['ZendeskAccount'],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db['ZendeskConfiguration'][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x1d7')});db[_0x84a4('0xb8')]['hasMany'](db[_0x84a4('0xb8')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xb8')][_0x84a4('0x11c')](db[_0x84a4('0xb8')],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xb8')][_0x84a4('0x11c')](db[_0x84a4('0xb8')],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xb8')][_0x84a4('0x12c')](db['Variable'],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db['FreshdeskAccount'][_0x84a4('0x11c')](db[_0x84a4('0x1d8')],{'as':'Configurations','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db['FreshdeskConfiguration'][_0x84a4('0x11c')](db[_0x84a4('0x1d9')],{'as':_0x84a4('0x1cd'),'onDelete':_0x84a4('0x11b'),'foreignKey':'SubjectId'});db[_0x84a4('0x1d8')]['hasMany'](db[_0x84a4('0x1d9')],{'as':_0x84a4('0x1cf'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0x1d8')]['hasMany'](db['FreshdeskField'],{'as':_0x84a4('0x1c9'),'onDelete':_0x84a4('0x11b'),'foreignKey':'FieldId'});db['FreshdeskConfiguration'][_0x84a4('0x12c')](db[_0x84a4('0xba')],{'as':'Account','foreignKey':'AccountId'});db[_0x84a4('0x1d8')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x1da')});db[_0x84a4('0x1d9')]['hasMany'](db[_0x84a4('0x1d9')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db['FreshdeskField'][_0x84a4('0x11c')](db[_0x84a4('0x1d9')],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0x1d9')][_0x84a4('0x11c')](db[_0x84a4('0x1d9')],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0x1d9')][_0x84a4('0x12c')](db[_0x84a4('0x93')],{'as':'Variable','foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xbd')][_0x84a4('0x11c')](db[_0x84a4('0xbe')],{'as':'Configurations','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xbe')]['hasMany'](db['VtigerField'],{'as':_0x84a4('0x1cd'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xbe')][_0x84a4('0x11c')](db[_0x84a4('0xc0')],{'as':_0x84a4('0x1cf'),'foreignKey':_0x84a4('0x1d0')});db['VtigerConfiguration'][_0x84a4('0x11c')](db['VtigerField'],{'as':_0x84a4('0x1c9'),'foreignKey':'FieldId'});db['VtigerConfiguration'][_0x84a4('0x12c')](db[_0x84a4('0xbd')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xc0')]['hasMany'](db[_0x84a4('0xc0')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xc0')][_0x84a4('0x11c')](db[_0x84a4('0xc0')],{'as':_0x84a4('0x1d3'),'foreignKey':'DescriptionId'});db[_0x84a4('0xc0')]['hasMany'](db[_0x84a4('0xc0')],{'as':_0x84a4('0x1d6'),'foreignKey':'FieldId'});db['VtigerField'][_0x84a4('0x12c')](db[_0x84a4('0x93')],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xc2')]['hasMany'](db[_0x84a4('0xc4')],{'as':'Configurations','onDelete':_0x84a4('0x11b'),'foreignKey':'AccountId'});db[_0x84a4('0xc4')][_0x84a4('0x11c')](db[_0x84a4('0xc5')],{'as':_0x84a4('0x1cd'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xc4')][_0x84a4('0x11c')](db[_0x84a4('0xc5')],{'as':_0x84a4('0x1cf'),'foreignKey':_0x84a4('0x1d0')});db['ServicenowConfiguration']['hasMany'](db[_0x84a4('0xc5')],{'as':_0x84a4('0x1c9'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xc4')][_0x84a4('0x12c')](db[_0x84a4('0xc2')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xc5')][_0x84a4('0x11c')](db[_0x84a4('0xc5')],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xc5')][_0x84a4('0x11c')](db[_0x84a4('0xc5')],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xc5')][_0x84a4('0x11c')](db['ServicenowField'],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db['ServicenowField'][_0x84a4('0x12c')](db['Variable'],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xc6')]['hasMany'](db[_0x84a4('0xc8')],{'as':'Configurations','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xc6')][_0x84a4('0x12c')](db[_0x84a4('0x10f')],{'as':'CloudProvider','foreignKey':'CloudProviderId'});db['Dynamics365Configuration']['hasMany'](db[_0x84a4('0x1db')],{'as':'Subjects','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xc8')][_0x84a4('0x11c')](db['Dynamics365Field'],{'as':_0x84a4('0x1cf'),'onDelete':'cascade','foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xc8')][_0x84a4('0x11c')](db[_0x84a4('0x1db')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xc8')]['belongsTo'](db[_0x84a4('0xc6')],{'as':'Account','foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0x1db')][_0x84a4('0x11c')](db['Dynamics365Field'],{'as':_0x84a4('0x1d2'),'foreignKey':_0x84a4('0x1ce')});db['Dynamics365Field']['hasMany'](db['Dynamics365Field'],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0x1db')][_0x84a4('0x11c')](db[_0x84a4('0x1db')],{'as':_0x84a4('0x1d6'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0x1db')]['belongsTo'](db[_0x84a4('0x93')],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0x1dc')][_0x84a4('0x11c')](db[_0x84a4('0xcb')],{'as':_0x84a4('0x1d5'),'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xcb')][_0x84a4('0x11c')](db[_0x84a4('0xcd')],{'as':_0x84a4('0x1cd'),'foreignKey':'SubjectId'});db[_0x84a4('0xcb')][_0x84a4('0x11c')](db[_0x84a4('0xcd')],{'as':_0x84a4('0x1cf'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xcb')][_0x84a4('0x11c')](db['FreshsalesField'],{'as':_0x84a4('0x1c9'),'foreignKey':_0x84a4('0x1d1')});db[_0x84a4('0xcb')][_0x84a4('0x12c')](db['FreshsalesAccount'],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x1cc')});db[_0x84a4('0xcd')][_0x84a4('0x11c')](db['FreshsalesField'],{'as':'Subject','foreignKey':_0x84a4('0x1ce')});db[_0x84a4('0xcd')][_0x84a4('0x11c')](db['FreshsalesField'],{'as':_0x84a4('0x1d3'),'foreignKey':_0x84a4('0x1d0')});db[_0x84a4('0xcd')][_0x84a4('0x11c')](db['FreshsalesField'],{'as':'Field','foreignKey':_0x84a4('0x1d1')});db['FreshsalesField'][_0x84a4('0x12c')](db['Variable'],{'as':_0x84a4('0x93'),'foreignKey':_0x84a4('0x1d4')});db[_0x84a4('0xd2')][_0x84a4('0x12c')](db[_0x84a4('0x5c')],{});db['ChatQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':'ListId'});db[_0x84a4('0xd2')]['belongsTo'](db[_0x84a4('0x6b')],{'as':'Contact','foreignKey':_0x84a4('0x16b')});db[_0x84a4('0xd2')][_0x84a4('0x12c')](db['ChatInteraction'],{});db[_0x84a4('0xd2')][_0x84a4('0x12c')](db[_0x84a4('0x19f')],{});db[_0x84a4('0xd2')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{});db[_0x84a4('0xd2')][_0x84a4('0x12c')](db['ChatQueue'],{});db[_0x84a4('0xd4')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1dd')});db[_0x84a4('0xd4')]['belongsTo'](db[_0x84a4('0x11')],{'onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x1de')});db[_0x84a4('0xd9')][_0x84a4('0x11c')](db['JscriptyQuestionReport'],{'foreignKey':_0x84a4('0x1df'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0xd9')][_0x84a4('0x11c')](db[_0x84a4('0xd5')],{'foreignKey':_0x84a4('0x1df'),'onDelete':_0x84a4('0x11b')});db['SmsQueueReport'][_0x84a4('0x12c')](db['SmsAccount'],{});db[_0x84a4('0xda')]['belongsTo'](db['CmList'],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0xda')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':'Contact','foreignKey':_0x84a4('0x16b')});db['SmsQueueReport'][_0x84a4('0x12c')](db[_0x84a4('0x50')],{});db[_0x84a4('0xda')][_0x84a4('0x12c')](db[_0x84a4('0x52')],{});db['SmsQueueReport'][_0x84a4('0x12c')](db['User'],{});db[_0x84a4('0xda')][_0x84a4('0x12c')](db['SmsQueue'],{});db[_0x84a4('0x1e0')][_0x84a4('0x11c')](db[_0x84a4('0xd9')],{'foreignKey':_0x84a4('0x1e1')});db[_0x84a4('0x1e0')][_0x84a4('0x11c')](db[_0x84a4('0xd7')],{'foreignKey':_0x84a4('0x1e1')});db[_0x84a4('0x1e0')][_0x84a4('0x11c')](db[_0x84a4('0xd5')],{'foreignKey':_0x84a4('0x1e1')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x133')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x13c')],{'through':_0x84a4('0x111'),'as':_0x84a4('0x1e2')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x13e')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0x84a4('0x132')][_0x84a4('0x12f')](db['ChatQueue'],{'through':_0x84a4('0x1a7'),'as':_0x84a4('0x141')});db['Team']['belongsToMany'](db[_0x84a4('0x49')],{'through':_0x84a4('0x192'),'as':_0x84a4('0x142')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x53')],{'through':_0x84a4('0x198'),'as':_0x84a4('0x143')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x144')],{'through':_0x84a4('0x19d'),'as':_0x84a4('0x145')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x10d')],{'through':'team_has_whatsapp_queues','as':_0x84a4('0x146')});db[_0x84a4('0x132')][_0x84a4('0x12f')](db[_0x84a4('0x1e3')],{'through':_0x84a4('0x112'),'as':_0x84a4('0x13d')});db[_0x84a4('0xea')][_0x84a4('0x11c')](db[_0x84a4('0x6d')],{'as':_0x84a4('0x159'),'foreignKey':_0x84a4('0x1b0')});db[_0x84a4('0xea')][_0x84a4('0x11c')](db[_0x84a4('0x71')],{'as':'HopperFinals','foreignKey':_0x84a4('0x1b0')});db['Campaign']['hasMany'](db[_0x84a4('0x73')],{'as':_0x84a4('0x15a'),'foreignKey':_0x84a4('0x1b0')});db[_0x84a4('0xea')][_0x84a4('0x11c')](db[_0x84a4('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db['Campaign'][_0x84a4('0x12c')](db['Trunk'],{'as':_0x84a4('0x28'),'foreignKey':_0x84a4('0x15c')});db[_0x84a4('0xea')]['belongsTo'](db[_0x84a4('0x28')],{'as':_0x84a4('0x15d'),'foreignKey':_0x84a4('0x1e4')});db[_0x84a4('0xea')][_0x84a4('0x12c')](db['Interval'],{'as':_0x84a4('0x80'),'foreignKey':'IntervalId'});db[_0x84a4('0xea')]['belongsTo'](db[_0x84a4('0x1e5')],{'as':_0x84a4('0x1e5'),'foreignKey':_0x84a4('0x1e6')});db[_0x84a4('0xea')][_0x84a4('0x12f')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x15e'),'through':'campaigns_has_cm_lists'});db[_0x84a4('0xea')][_0x84a4('0x12f')](db['CmList'],{'as':'BlackLists','through':_0x84a4('0x1e7')});db[_0x84a4('0xee')][_0x84a4('0x12c')](db[_0x84a4('0x184')],{'as':_0x84a4('0x184'),'foreignKey':_0x84a4('0x185')});db['MailTransferReport']['belongsTo'](db[_0x84a4('0x172')],{});db[_0x84a4('0xf1')][_0x84a4('0x12c')](db[_0x84a4('0x3c')],{});db[_0x84a4('0xf1')]['belongsTo'](db[_0x84a4('0x38')],{'foreignKey':_0x84a4('0x1e8'),'as':'FromAccount'});db['MailTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'foreignKey':'FromUserId','as':_0x84a4('0x1e9')});db['MailTransferReport'][_0x84a4('0x12c')](db['User'],{'foreignKey':_0x84a4('0x1ea'),'as':'ToAgent'});db['MailTransferReport'][_0x84a4('0x12c')](db['MailQueue'],{'foreignKey':_0x84a4('0x1eb'),'as':_0x84a4('0x1ec')});db['MailTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x38')],{'foreignKey':_0x84a4('0x1ed'),'as':_0x84a4('0x1ee')});db[_0x84a4('0xf3')][_0x84a4('0x12c')](db[_0x84a4('0x19f')],{});db[_0x84a4('0xf3')][_0x84a4('0x12c')](db[_0x84a4('0x62')],{});db['ChatTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x5c')],{'foreignKey':_0x84a4('0x1ef'),'as':_0x84a4('0x1f0')});db[_0x84a4('0xf3')]['belongsTo'](db[_0x84a4('0x11')],{'foreignKey':'FromUserId','as':_0x84a4('0x1e9')});db[_0x84a4('0xf3')][_0x84a4('0x12c')](db['User'],{'foreignKey':_0x84a4('0x1ea'),'as':_0x84a4('0x1f1')});db[_0x84a4('0xf3')]['belongsTo'](db[_0x84a4('0x65')],{'foreignKey':_0x84a4('0x1f2'),'as':_0x84a4('0x1ec')});db[_0x84a4('0xf3')]['belongsTo'](db[_0x84a4('0x5c')],{'foreignKey':_0x84a4('0x1f3'),'as':_0x84a4('0x1ee')});db[_0x84a4('0x1f4')]['belongsTo'](db[_0x84a4('0x47')],{});db[_0x84a4('0x1f4')][_0x84a4('0x12c')](db[_0x84a4('0x45')],{});db[_0x84a4('0x1f4')][_0x84a4('0x12c')](db[_0x84a4('0x18a')],{'foreignKey':_0x84a4('0x1f5'),'as':_0x84a4('0x1f0')});db['FaxTransferReport']['belongsTo'](db[_0x84a4('0x11')],{'foreignKey':_0x84a4('0x1f6'),'as':_0x84a4('0x1e9')});db[_0x84a4('0x1f4')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'foreignKey':'ToUserId','as':_0x84a4('0x1f1')});db[_0x84a4('0x1f4')]['belongsTo'](db[_0x84a4('0x49')],{'foreignKey':_0x84a4('0x1f7'),'as':_0x84a4('0x1ec')});db['FaxTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x18a')],{'foreignKey':_0x84a4('0x1f8'),'as':_0x84a4('0x1ee')});db['OpenchannelTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x5a')],{});db[_0x84a4('0xf6')][_0x84a4('0x12c')](db[_0x84a4('0x124')],{});db[_0x84a4('0xf6')][_0x84a4('0x12c')](db['OpenchannelAccount'],{'foreignKey':_0x84a4('0x1f9'),'as':_0x84a4('0x1f0')});db[_0x84a4('0xf6')]['belongsTo'](db['User'],{'foreignKey':_0x84a4('0x1f6'),'as':_0x84a4('0x1e9')});db[_0x84a4('0xf6')][_0x84a4('0x12c')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x84a4('0xf6')]['belongsTo'](db[_0x84a4('0x144')],{'foreignKey':_0x84a4('0x1fa'),'as':'ToQueue'});db[_0x84a4('0xf6')][_0x84a4('0x12c')](db[_0x84a4('0x55')],{'foreignKey':_0x84a4('0x1fb'),'as':_0x84a4('0x1ee')});db[_0x84a4('0xf8')][_0x84a4('0x12c')](db['SmsMessage'],{});db['SmsTransferReport'][_0x84a4('0x12c')](db['SmsInteraction'],{});db[_0x84a4('0xf8')][_0x84a4('0x12c')](db[_0x84a4('0x4c')],{'foreignKey':_0x84a4('0x1fc'),'as':_0x84a4('0x1f0')});db[_0x84a4('0xf8')][_0x84a4('0x12c')](db['User'],{'foreignKey':_0x84a4('0x1f6'),'as':_0x84a4('0x1e9')});db[_0x84a4('0xf8')]['belongsTo'](db[_0x84a4('0x11')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x84a4('0xf8')][_0x84a4('0x12c')](db[_0x84a4('0x53')],{'foreignKey':_0x84a4('0x1fd'),'as':_0x84a4('0x1ec')});db[_0x84a4('0xf8')][_0x84a4('0x12c')](db[_0x84a4('0x4c')],{'foreignKey':_0x84a4('0x1fe'),'as':_0x84a4('0x1ee')});db['CmList'][_0x84a4('0x11c')](db['Disposition'],{'as':_0x84a4('0x18b'),'foreignKey':_0x84a4('0x176'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0xfa')][_0x84a4('0x11c')](db['CmCustomField'],{'as':_0x84a4('0x1ff'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0xfa')][_0x84a4('0x11c')](db[_0x84a4('0x6b')],{'as':'Contacts','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0xfa')][_0x84a4('0x11c')](db[_0x84a4('0x71')],{'as':_0x84a4('0x121'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0xfa')]['hasMany'](db[_0x84a4('0x73')],{'as':_0x84a4('0x122'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0xfa')][_0x84a4('0x11c')](db[_0x84a4('0x123')],{'as':'ReportAgentPreview','foreignKey':_0x84a4('0x176')});db[_0x84a4('0xfa')]['belongsToMany'](db[_0x84a4('0x13c')],{'as':'Queues','through':_0x84a4('0x15f')});db['CmList'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x131')});db[_0x84a4('0x1e3')][_0x84a4('0x11c')](db['VoiceExtension'],{'as':_0x84a4('0x120'),'onDelete':_0x84a4('0x11b')});db['VoicePrefix']['belongsToMany'](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x114')});db['VoicePrefix'][_0x84a4('0x12f')](db['Team'],{'through':'TeamVoicePrefix','as':_0x84a4('0x161')});db['UserProfile'][_0x84a4('0x11c')](db[_0x84a4('0x11')],{'as':'Users','foreignKey':'userProfileId'});db[_0x84a4('0xfc')][_0x84a4('0x11c')](db[_0x84a4('0xfe')],{'as':_0x84a4('0x200'),'foreignKey':_0x84a4('0x12d'),'onDelete':_0x84a4('0x11b')});db['UserProfileSection'][_0x84a4('0x11c')](db[_0x84a4('0xff')],{'as':_0x84a4('0x201'),'foreignKey':_0x84a4('0x202'),'onDelete':'cascade'});db[_0x84a4('0x14f')]['hasMany'](db['Disposition'],{'as':_0x84a4('0x18b'),'foreignKey':_0x84a4('0x203'),'onDelete':_0x84a4('0x11b')});db[_0x84a4('0x14f')][_0x84a4('0x11c')](db[_0x84a4('0x7b')],{'as':_0x84a4('0x171'),'foreignKey':_0x84a4('0x203')});db[_0x84a4('0x14f')][_0x84a4('0x11c')](db['WhatsappMessage'],{'as':_0x84a4('0x164'),'foreignKey':_0x84a4('0x203')});db[_0x84a4('0x14f')][_0x84a4('0x11c')](db['WhatsappInteraction'],{'as':_0x84a4('0x173')});db[_0x84a4('0x14f')][_0x84a4('0x11c')](db[_0x84a4('0x104')],{'as':_0x84a4('0x18e')});db['WhatsappAccount'][_0x84a4('0x12c')](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x14f')][_0x84a4('0x12c')](db[_0x84a4('0x82')],{'as':_0x84a4('0x178'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x84a4('0x14f')][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':_0x84a4('0x160'),'through':_0x84a4('0x151')});db[_0x84a4('0x104')]['belongsTo'](db[_0x84a4('0x11')],{'onDelete':'restrict'});db[_0x84a4('0x104')][_0x84a4('0x12c')](db['WhatsappQueue'],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x104')][_0x84a4('0x12c')](db[_0x84a4('0x14f')],{'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x104')][_0x84a4('0x12c')](db[_0x84a4('0x80')],{'onDelete':_0x84a4('0x16c'),'foreignKey':'IntervalId'});db[_0x84a4('0x104')][_0x84a4('0x12c')](db[_0x84a4('0x8a')],{'onDelete':_0x84a4('0x16c'),'foreignKey':_0x84a4('0x187')});db['WhatsappInteraction'][_0x84a4('0x11c')](db['WhatsappMessage'],{'as':'Messages','onDelete':_0x84a4('0x11b'),'foreignKey':_0x84a4('0x204')});db[_0x84a4('0x129')][_0x84a4('0x12c')](db['WhatsappAccount'],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x203')});db[_0x84a4('0x129')]['belongsTo'](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':'ContactId'});db['WhatsappInteraction']['belongsTo'](db[_0x84a4('0x11')],{'as':'Owner','foreignKey':_0x84a4('0x11e')});db['WhatsappInteraction'][_0x84a4('0x12f')](db['Tag'],{'through':'whatsapp_interaction_has_tags','as':_0x84a4('0x197')});db[_0x84a4('0x129')][_0x84a4('0x12f')](db[_0x84a4('0x8a')],{'through':_0x84a4('0x1be'),'as':_0x84a4('0x17e')});db['WhatsappInteraction'][_0x84a4('0x12f')](db['User'],{'as':_0x84a4('0x17f'),'through':_0x84a4('0x13b'),'foreignKey':'WhatsappInteractionId'});db[_0x84a4('0x107')]['belongsTo'](db[_0x84a4('0x11')],{'as':_0x84a4('0x11')});db[_0x84a4('0x107')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'onDelete':_0x84a4('0x11b'),'as':'Contact'});db[_0x84a4('0x107')][_0x84a4('0x12c')](db['WhatsappInteraction'],{'onDelete':_0x84a4('0x11b'),'as':_0x84a4('0x182'),'foreignKey':_0x84a4('0x204')});db[_0x84a4('0x107')][_0x84a4('0x12c')](db[_0x84a4('0x14f')],{'as':_0x84a4('0x17b'),'foreignKey':_0x84a4('0x203')});db[_0x84a4('0x109')][_0x84a4('0x12c')](db[_0x84a4('0x14f')],{});db[_0x84a4('0x109')]['belongsTo'](db[_0x84a4('0xfa')],{'as':_0x84a4('0x175'),'foreignKey':_0x84a4('0x176')});db[_0x84a4('0x109')][_0x84a4('0x12c')](db[_0x84a4('0x6b')],{'as':_0x84a4('0x16a'),'foreignKey':'ContactId'});db[_0x84a4('0x109')][_0x84a4('0x12c')](db[_0x84a4('0x129')],{});db[_0x84a4('0x109')][_0x84a4('0x12c')](db['WhatsappQueue'],{});db[_0x84a4('0x109')]['belongsTo'](db[_0x84a4('0x107')],{});db[_0x84a4('0x109')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{});db['WhatsappTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x107')],{});db['WhatsappTransferReport'][_0x84a4('0x12c')](db['WhatsappInteraction'],{});db[_0x84a4('0x10b')][_0x84a4('0x12c')](db['WhatsappAccount'],{'foreignKey':_0x84a4('0x205'),'as':_0x84a4('0x1f0')});db['WhatsappTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x14f')],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db['WhatsappTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x10d')],{'foreignKey':_0x84a4('0x206'),'as':'ToQueue'});db[_0x84a4('0x10b')][_0x84a4('0x12c')](db['User'],{'foreignKey':'FromUserId','as':_0x84a4('0x1e9')});db['WhatsappTransferReport'][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'foreignKey':_0x84a4('0x1ea'),'as':_0x84a4('0x1f1')});db['WhatsappQueue'][_0x84a4('0x12f')](db[_0x84a4('0x11')],{'as':'Agents','through':_0x84a4('0x34'),'foreignKey':_0x84a4('0x207')});db[_0x84a4('0x10d')][_0x84a4('0x12f')](db['Team'],{'through':_0x84a4('0x208'),'as':_0x84a4('0x161')});db[_0x84a4('0x116')][_0x84a4('0x12c')](db[_0x84a4('0x11')],{'as':_0x84a4('0x209'),'foreignKey':_0x84a4('0x11e'),'onDelete':_0x84a4('0x11b'),'hooks':!![]});db['CloudProvider'][_0x84a4('0x118')](db[_0x84a4('0xc6')],{'as':_0x84a4('0xc6'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x10f')][_0x84a4('0x118')](db[_0x84a4('0x36')],{'as':_0x84a4('0x16f'),'onDelete':_0x84a4('0x16c')});db[_0x84a4('0x10f')]['hasOne'](db[_0x84a4('0x16d')],{'as':'Smtp','onDelete':_0x84a4('0x16c')});module[_0x84a4('0x20a')]={'db':db,'dbH':dbH};
\ No newline at end of file
index fb21c93..3c55a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3626=['/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/fields','/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/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport','./api/chatInternalMessage','./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/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','/api/square/messages','/api/migrations','./api/migration','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','./api/whatsappInteraction','./api/whatsappMessage','./api/whatsappQueueReport','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/version','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','/www','/demo','root','snippet','3.0.0','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./errors','./config/environment','setupLoggers','./api/client-side-logs','default','then','use','./api/user','/api/voice/chanspy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','/api/triggers','./api/trigger'];(function(_0x2703e5,_0x3319bf){var _0x4427a4=function(_0x39e0c3){while(--_0x39e0c3){_0x2703e5['push'](_0x2703e5['shift']());}};_0x4427a4(++_0x3319bf);}(_0x3626,0x190));var _0x6362=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3626[_0x5b644e];return _0x49c6bf;};'use strict';var path=require(_0x6362('0x0'));var express=require(_0x6362('0x1'));var errors=require(_0x6362('0x2'));var config=require(_0x6362('0x3'));var setupLoggers=require('./utils/client-side-logger')[_0x6362('0x4')];var clientSideLogs=require(_0x6362('0x5'));exports[_0x6362('0x6')]=function(_0x56fe36){return setupLoggers(_0x56fe36)[_0x6362('0x7')](function(){_0x56fe36[_0x6362('0x8')]('/api/users',require(_0x6362('0x9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa'),require('./api/voiceChanSpy'));_0x56fe36['use']('/api/voice/contexts',require(_0x6362('0xb')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc'),require(_0x6362('0xd')));_0x56fe36['use']('/api/voice/mohs',require(_0x6362('0xe')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf'),require(_0x6362('0x10')));_0x56fe36[_0x6362('0x8')](_0x6362('0x11'),require('./api/voiceRecording'));_0x56fe36[_0x6362('0x8')](_0x6362('0x12'),require(_0x6362('0x13')));_0x56fe36[_0x6362('0x8')](_0x6362('0x14'),require('./api/voiceMail'));_0x56fe36[_0x6362('0x8')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x56fe36[_0x6362('0x8')](_0x6362('0x15'),require('./api/voiceCallReport'));_0x56fe36['use'](_0x6362('0x16'),require(_0x6362('0x17')));_0x56fe36['use'](_0x6362('0x18'),require(_0x6362('0x19')));_0x56fe36[_0x6362('0x8')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x1a'),require(_0x6362('0x1b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x1c'),require(_0x6362('0x1d')));_0x56fe36[_0x6362('0x8')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x1e'),require(_0x6362('0x1f')));_0x56fe36[_0x6362('0x8')](_0x6362('0x20'),require(_0x6362('0x21')));_0x56fe36['use'](_0x6362('0x22'),require(_0x6362('0x23')));_0x56fe36[_0x6362('0x8')](_0x6362('0x24'),require(_0x6362('0x25')));_0x56fe36['use'](_0x6362('0x26'),require('./api/mailInteraction'));_0x56fe36[_0x6362('0x8')](_0x6362('0x27'),require(_0x6362('0x28')));_0x56fe36[_0x6362('0x8')]('/api/mail/applications',require('./api/mailApplication'));_0x56fe36['use'](_0x6362('0x29'),require('./api/mailQueueReport'));_0x56fe36['use'](_0x6362('0x2a'),require(_0x6362('0x2b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x2c'),require(_0x6362('0x2d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x2e'),require(_0x6362('0x2f')));_0x56fe36[_0x6362('0x8')](_0x6362('0x30'),require(_0x6362('0x31')));_0x56fe36[_0x6362('0x8')]('/api/fax/interactions',require('./api/faxInteraction'));_0x56fe36[_0x6362('0x8')](_0x6362('0x32'),require(_0x6362('0x33')));_0x56fe36[_0x6362('0x8')](_0x6362('0x34'),require(_0x6362('0x35')));_0x56fe36['use'](_0x6362('0x36'),require(_0x6362('0x37')));_0x56fe36[_0x6362('0x8')](_0x6362('0x38'),require('./api/smsAccount'));_0x56fe36[_0x6362('0x8')]('/api/sms/applications',require(_0x6362('0x39')));_0x56fe36[_0x6362('0x8')](_0x6362('0x3a'),require(_0x6362('0x3b')));_0x56fe36['use'](_0x6362('0x3c'),require(_0x6362('0x3d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x3e'),require('./api/smsQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0x3f'),require('./api/openchannelAccount'));_0x56fe36['use'](_0x6362('0x40'),require('./api/openchannelApplication'));_0x56fe36['use'](_0x6362('0x41'),require(_0x6362('0x42')));_0x56fe36['use']('/api/openchannel/messages',require(_0x6362('0x43')));_0x56fe36['use'](_0x6362('0x44'),require(_0x6362('0x45')));_0x56fe36[_0x6362('0x8')]('/api/chat/websites',require(_0x6362('0x46')));_0x56fe36['use'](_0x6362('0x47'),require('./api/openchannelQueueReport'));_0x56fe36['use'](_0x6362('0x48'),require(_0x6362('0x49')));_0x56fe36[_0x6362('0x8')]('/api/chat/interactions',require(_0x6362('0x4a')));_0x56fe36['use'](_0x6362('0x4b'),require(_0x6362('0x4c')));_0x56fe36['use'](_0x6362('0x4d'),require(_0x6362('0x4e')));_0x56fe36['use']('/api/chat/queues',require('./api/chatQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0x4f'),require('./api/chatGroup'));_0x56fe36[_0x6362('0x8')](_0x6362('0x50'),require(_0x6362('0x51')));_0x56fe36[_0x6362('0x8')](_0x6362('0x52'),require(_0x6362('0x53')));_0x56fe36['use']('/api/cm/contacts',require('./api/cmContact'));_0x56fe36[_0x6362('0x8')](_0x6362('0x54'),require(_0x6362('0x55')));_0x56fe36[_0x6362('0x8')](_0x6362('0x56'),require(_0x6362('0x57')));_0x56fe36[_0x6362('0x8')](_0x6362('0x58'),require('./api/cmHopperFinal'));_0x56fe36['use']('/api/cm/hopper_history',require(_0x6362('0x59')));_0x56fe36['use'](_0x6362('0x5a'),require(_0x6362('0x5b')));_0x56fe36['use'](_0x6362('0x5c'),require(_0x6362('0x5d')));_0x56fe36['use'](_0x6362('0x5e'),require('./api/automation'));_0x56fe36['use'](_0x6362('0x5f'),require('./api/cannedAnswer'));_0x56fe36[_0x6362('0x8')](_0x6362('0x60'),require(_0x6362('0x61')));_0x56fe36['use'](_0x6362('0x62'),require(_0x6362('0x63')));_0x56fe36['use'](_0x6362('0x64'),require(_0x6362('0x65')));_0x56fe36[_0x6362('0x8')]('/api/pauses',require(_0x6362('0x66')));_0x56fe36['use'](_0x6362('0x67'),require('./api/cdr'));_0x56fe36['use']('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x56fe36[_0x6362('0x8')](_0x6362('0x68'),require(_0x6362('0x69')));_0x56fe36['use'](_0x6362('0x6a'),require(_0x6362('0x6b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x6c'),require(_0x6362('0x6d')));_0x56fe36[_0x6362('0x8')]('/api/contact_item_types',require(_0x6362('0x6e')));_0x56fe36[_0x6362('0x8')](_0x6362('0x6f'),require(_0x6362('0x70')));_0x56fe36['use'](_0x6362('0x71'),require(_0x6362('0x72')));_0x56fe36['use'](_0x6362('0x73'),require('./api/template'));_0x56fe36['use'](_0x6362('0x74'),require(_0x6362('0x75')));_0x56fe36[_0x6362('0x8')](_0x6362('0x76'),require(_0x6362('0x77')));_0x56fe36[_0x6362('0x8')]('/api/integrations',require(_0x6362('0x78')));_0x56fe36[_0x6362('0x8')](_0x6362('0x79'),require(_0x6362('0x7a')));_0x56fe36[_0x6362('0x8')]('/api/analytics/custom_reports',require(_0x6362('0x7b')));_0x56fe36['use']('/api/analytics/default_reports',require(_0x6362('0x7c')));_0x56fe36[_0x6362('0x8')](_0x6362('0x7d'),require('./api/analyticExtractedReport'));_0x56fe36[_0x6362('0x8')](_0x6362('0x7e'),require('./api/analyticMetric'));_0x56fe36[_0x6362('0x8')]('/api/analytics/field_reports',require(_0x6362('0x7f')));_0x56fe36['use']('/api/analytics/tree_reports',require(_0x6362('0x80')));_0x56fe36[_0x6362('0x8')](_0x6362('0x81'),require(_0x6362('0x82')));_0x56fe36['use']('/api/integrations/salesforce/configurations',require(_0x6362('0x83')));_0x56fe36['use'](_0x6362('0x84'),require(_0x6362('0x85')));_0x56fe36[_0x6362('0x8')](_0x6362('0x86'),require(_0x6362('0x87')));_0x56fe36[_0x6362('0x8')](_0x6362('0x88'),require(_0x6362('0x89')));_0x56fe36[_0x6362('0x8')](_0x6362('0x8a'),require(_0x6362('0x8b')));_0x56fe36['use'](_0x6362('0x8c'),require(_0x6362('0x8d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x8e'),require('./api/intDeskConfiguration'));_0x56fe36[_0x6362('0x8')]('/api/integrations/desk/fields',require(_0x6362('0x8f')));_0x56fe36['use']('/api/integrations/zoho/accounts',require(_0x6362('0x90')));_0x56fe36[_0x6362('0x8')]('/api/integrations/zoho/configurations',require('./api/intZohoConfiguration'));_0x56fe36[_0x6362('0x8')](_0x6362('0x91'),require('./api/intZohoField'));_0x56fe36[_0x6362('0x8')](_0x6362('0x92'),require(_0x6362('0x93')));_0x56fe36[_0x6362('0x8')](_0x6362('0x94'),require('./api/intZendeskConfiguration'));_0x56fe36['use']('/api/integrations/zendesk/fields',require(_0x6362('0x95')));_0x56fe36['use']('/api/integrations/freshdesk/accounts',require(_0x6362('0x96')));_0x56fe36[_0x6362('0x8')](_0x6362('0x97'),require(_0x6362('0x98')));_0x56fe36[_0x6362('0x8')](_0x6362('0x99'),require(_0x6362('0x9a')));_0x56fe36[_0x6362('0x8')]('/api/integrations/vtiger/accounts',require(_0x6362('0x9b')));_0x56fe36[_0x6362('0x8')](_0x6362('0x9c'),require(_0x6362('0x9d')));_0x56fe36[_0x6362('0x8')](_0x6362('0x9e'),require(_0x6362('0x9f')));_0x56fe36[_0x6362('0x8')]('/api/integrations/servicenow/accounts',require(_0x6362('0xa0')));_0x56fe36[_0x6362('0x8')]('/api/integrations/servicenow/configurations',require(_0x6362('0xa1')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa2'),require('./api/intServicenowField'));_0x56fe36[_0x6362('0x8')](_0x6362('0xa3'),require(_0x6362('0xa4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa5'),require('./api/intDynamics365Configuration'));_0x56fe36[_0x6362('0x8')](_0x6362('0xa6'),require('./api/intDynamics365Field'));_0x56fe36[_0x6362('0x8')]('/api/integrations/freshsales/accounts',require(_0x6362('0xa7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xa8'),require(_0x6362('0xa9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xaa'),require(_0x6362('0xab')));_0x56fe36['use'](_0x6362('0xac'),require(_0x6362('0xad')));_0x56fe36[_0x6362('0x8')]('/api/chat/reports/queue',require(_0x6362('0xae')));_0x56fe36[_0x6362('0x8')]('/api/chat/internal/messages',require(_0x6362('0xaf')));_0x56fe36['use']('/api/jscripty/answers/reports',require(_0x6362('0xb0')));_0x56fe36['use'](_0x6362('0xb1'),require(_0x6362('0xb2')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb3'),require(_0x6362('0xb4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb5'),require(_0x6362('0xb6')));_0x56fe36[_0x6362('0x8')](_0x6362('0xb7'),require(_0x6362('0xb8')));_0x56fe36['use'](_0x6362('0xb9'),require(_0x6362('0xba')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbb'),require(_0x6362('0xbc')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbd'),require('./api/setting'));_0x56fe36[_0x6362('0x8')]('/api/square/odbc',require(_0x6362('0xbe')));_0x56fe36[_0x6362('0x8')](_0x6362('0xbf'),require(_0x6362('0xc0')));_0x56fe36['use']('/api/square/recordings',require(_0x6362('0xc1')));_0x56fe36['use'](_0x6362('0xc2'),require('./api/squareMessage'));_0x56fe36[_0x6362('0x8')]('/api/teams',require('./api/team'));_0x56fe36[_0x6362('0x8')]('/api/license',require('./api/license'));_0x56fe36[_0x6362('0x8')]('/api/campaigns',require('./api/campaign'));_0x56fe36[_0x6362('0x8')](_0x6362('0xc3'),require(_0x6362('0xc4')));_0x56fe36['use']('/api/attachments',require(_0x6362('0xc5')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc6'),require(_0x6362('0xc7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xc8'),require(_0x6362('0xc9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xca'),require(_0x6362('0xcb')));_0x56fe36[_0x6362('0x8')]('/api/fax/reports/transfer',require(_0x6362('0xcc')));_0x56fe36['use'](_0x6362('0xcd'),require('./api/openchannelTransferReport'));_0x56fe36[_0x6362('0x8')]('/api/sms/reports/transfer',require(_0x6362('0xce')));_0x56fe36['use'](_0x6362('0xcf'),require(_0x6362('0xd0')));_0x56fe36['use'](_0x6362('0xd1'),require(_0x6362('0xd2')));_0x56fe36['use'](_0x6362('0xd3'),require(_0x6362('0xd4')));_0x56fe36[_0x6362('0x8')](_0x6362('0xd5'),require('./api/userProfileSection'));_0x56fe36['use'](_0x6362('0xd6'),require('./api/userProfileResource'));_0x56fe36[_0x6362('0x8')](_0x6362('0xd7'),require(_0x6362('0xd8')));_0x56fe36['use'](_0x6362('0xd9'),require(_0x6362('0xda')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/applications',require('./api/whatsappApplication'));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/interactions',require(_0x6362('0xdb')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/messages',require(_0x6362('0xdc')));_0x56fe36['use']('/api/whatsapp/reports/queue',require(_0x6362('0xdd')));_0x56fe36[_0x6362('0x8')]('/api/whatsapp/reports/transfer',require(_0x6362('0xde')));_0x56fe36[_0x6362('0x8')](_0x6362('0xdf'),require('./api/whatsappQueue'));_0x56fe36[_0x6362('0x8')](_0x6362('0xe0'),require('./api/cloudProvider'));_0x56fe36[_0x6362('0x8')](_0x6362('0xe1'),require(_0x6362('0xe2')));_0x56fe36[_0x6362('0x8')](_0x6362('0xe3'),require(_0x6362('0xe4')));_0x56fe36['use'](_0x6362('0xe5'),require(_0x6362('0xe6')));_0x56fe36['use']('/api/auth/google',require(_0x6362('0xe7')));_0x56fe36[_0x6362('0x8')](_0x6362('0xe8'),require(_0x6362('0xe9')));_0x56fe36[_0x6362('0x8')](_0x6362('0xea'),require(_0x6362('0xeb')));_0x56fe36[_0x6362('0x8')]('/api/rpc',require('./api/rpc'));_0x56fe36['use'](_0x6362('0xec'),require(_0x6362('0xed')));_0x56fe36[_0x6362('0x8')]('/api/system',require(_0x6362('0xee')));_0x56fe36[_0x6362('0x8')](_0x6362('0xef'),require(_0x6362('0xf0')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf1'),require(_0x6362('0xf2')));_0x56fe36['use'](_0x6362('0xf3'),clientSideLogs);_0x56fe36[_0x6362('0x8')](_0x6362('0xf4'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],'/apidoc')));_0x56fe36[_0x6362('0x8')](_0x6362('0xf7'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],_0x6362('0xf7'))));_0x56fe36[_0x6362('0x8')](_0x6362('0xf8'),express[_0x6362('0xf5')](path[_0x6362('0xf6')](config[_0x6362('0xf9')],'/demo')));_0x56fe36['use']('/snippet',express[_0x6362('0xf5')](path[_0x6362('0xf6')](config['root'],_0x6362('0xfa'),_0x6362('0xfb'))));_0x56fe36['use']('/plugins',express['static'](path[_0x6362('0xf6')](config[_0x6362('0xf9')],_0x6362('0xfc'))));_0x56fe36['route'](_0x6362('0xfd'))[_0x6362('0xfe')](errors[0x194]);_0x56fe36['route']('/*')['get'](function(_0x380a10,_0x3c8881){_0x3c8881[_0x6362('0xff')](path[_0x6362('0x100')](_0x56fe36[_0x6362('0xfe')](_0x6362('0x101'))+_0x6362('0x102')));});return _0x56fe36;});};
\ No newline at end of file
+var _0xa1aa=['/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./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/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/openchannelTransferReport','/api/cm/lists','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappTransferReport','/api/whatsapp/queues','/api/realtime','./api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/logs','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','then','/api/users','./api/user','use','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','/api/dashboards','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmContact','/api/cm/hopper','./api/cmHopper','./api/cmHopperBlack','./api/cmHopperFinal','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration'];(function(_0x5bb83b,_0x3b1f83){var _0x5a4ee4=function(_0x5bf708){while(--_0x5bf708){_0x5bb83b['push'](_0x5bb83b['shift']());}};_0x5a4ee4(++_0x3b1f83);}(_0xa1aa,0x19b));var _0xaa1a=function(_0x4acc11,_0x543a56){_0x4acc11=_0x4acc11-0x0;var _0x57535c=_0xa1aa[_0x4acc11];return _0x57535c;};'use strict';var path=require('path');var express=require(_0xaa1a('0x0'));var errors=require(_0xaa1a('0x1'));var config=require(_0xaa1a('0x2'));var setupLoggers=require(_0xaa1a('0x3'))[_0xaa1a('0x4')];var clientSideLogs=require('./api/client-side-logs');exports['default']=function(_0x211b9a){return setupLoggers(_0x211b9a)[_0xaa1a('0x5')](function(){_0x211b9a['use'](_0xaa1a('0x6'),require(_0xaa1a('0x7')));_0x211b9a[_0xaa1a('0x8')]('/api/voice/chanspy',require(_0xaa1a('0x9')));_0x211b9a['use'](_0xaa1a('0xa'),require('./api/voiceContext'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb'),require('./api/voiceExtension'));_0x211b9a['use'](_0xaa1a('0xc'),require(_0xaa1a('0xd')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe'),require('./api/voiceQueue'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xf'),require(_0xaa1a('0x10')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x11'),require(_0xaa1a('0x12')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x13'),require(_0xaa1a('0x14')));_0x211b9a[_0xaa1a('0x8')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x15'),require(_0xaa1a('0x16')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x17'),require('./api/voiceDialReport'));_0x211b9a[_0xaa1a('0x8')]('/api/voice/agents/reports',require(_0xaa1a('0x18')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x19'),require(_0xaa1a('0x1a')));_0x211b9a['use']('/api/members/reports',require(_0xaa1a('0x1b')));_0x211b9a[_0xaa1a('0x8')]('/api/trunks',require(_0xaa1a('0x1c')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x1d'),require(_0xaa1a('0x1e')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x1f'),require('./api/mailServerOut'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x20'),require(_0xaa1a('0x21')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x22'),require(_0xaa1a('0x23')));_0x211b9a[_0xaa1a('0x8')]('/api/mail/substatuses',require(_0xaa1a('0x24')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x25'),require('./api/mailInteraction'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x26'),require('./api/mailMessage'));_0x211b9a['use'](_0xaa1a('0x27'),require(_0xaa1a('0x28')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x29'),require('./api/mailQueueReport'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x2a'),require('./api/dashboard'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x2b'),require(_0xaa1a('0x2c')));_0x211b9a['use'](_0xaa1a('0x2d'),require(_0xaa1a('0x2e')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x2f'),require(_0xaa1a('0x30')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x31'),require('./api/faxInteraction'));_0x211b9a['use']('/api/fax/messages',require(_0xaa1a('0x32')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x33'),require(_0xaa1a('0x34')));_0x211b9a['use'](_0xaa1a('0x35'),require(_0xaa1a('0x36')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x37'),require(_0xaa1a('0x38')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x39'),require(_0xaa1a('0x3a')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x3b'),require(_0xaa1a('0x3c')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x3d'),require(_0xaa1a('0x3e')));_0x211b9a[_0xaa1a('0x8')]('/api/sms/queues',require('./api/smsQueue'));_0x211b9a[_0xaa1a('0x8')]('/api/openchannel/accounts',require(_0xaa1a('0x3f')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x40'),require(_0xaa1a('0x41')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x42'),require('./api/openchannelInteraction'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x43'),require(_0xaa1a('0x44')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x45'),require(_0xaa1a('0x46')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x47'),require('./api/chatWebsite'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x48'),require(_0xaa1a('0x49')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x4a'),require(_0xaa1a('0x4b')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x4c'),require(_0xaa1a('0x4d')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x4e'),require(_0xaa1a('0x4f')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x50'),require(_0xaa1a('0x51')));_0x211b9a[_0xaa1a('0x8')]('/api/chat/queues',require('./api/chatQueue'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x52'),require(_0xaa1a('0x53')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x54'),require(_0xaa1a('0x55')));_0x211b9a['use'](_0xaa1a('0x56'),require('./api/cmCompany'));_0x211b9a[_0xaa1a('0x8')]('/api/cm/contacts',require(_0xaa1a('0x57')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x58'),require(_0xaa1a('0x59')));_0x211b9a['use']('/api/cm/hopper_black',require(_0xaa1a('0x5a')));_0x211b9a[_0xaa1a('0x8')]('/api/cm/hopper_final',require(_0xaa1a('0x5b')));_0x211b9a[_0xaa1a('0x8')]('/api/cm/hopper_history',require('./api/cmHopperHistory'));_0x211b9a[_0xaa1a('0x8')]('/api/cm/custom_fields',require(_0xaa1a('0x5c')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x5d'),require(_0xaa1a('0x5e')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x5f'),require('./api/automation'));_0x211b9a['use']('/api/canned_answers',require('./api/cannedAnswer'));_0x211b9a[_0xaa1a('0x8')]('/api/dispositions',require(_0xaa1a('0x60')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x61'),require(_0xaa1a('0x62')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x63'),require(_0xaa1a('0x64')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x65'),require(_0xaa1a('0x66')));_0x211b9a[_0xaa1a('0x8')]('/api/cdr',require(_0xaa1a('0x67')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x68'),require('./api/voiceQueuesLog'));_0x211b9a[_0xaa1a('0x8')]('/api/schedules',require(_0xaa1a('0x69')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x6a'),require(_0xaa1a('0x6b')));_0x211b9a['use'](_0xaa1a('0x6c'),require(_0xaa1a('0x6d')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x6e'),require(_0xaa1a('0x6f')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x70'),require(_0xaa1a('0x71')));_0x211b9a[_0xaa1a('0x8')]('/api/cm_hopper_additional_phones',require(_0xaa1a('0x72')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x73'),require(_0xaa1a('0x74')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x75'),require(_0xaa1a('0x76')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x77'),require(_0xaa1a('0x78')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x79'),require(_0xaa1a('0x7a')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x7b'),require(_0xaa1a('0x7c')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x7d'),require('./api/analyticCustomReport'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x7e'),require(_0xaa1a('0x7f')));_0x211b9a['use']('/api/analytics/extracted_reports',require(_0xaa1a('0x80')));_0x211b9a['use'](_0xaa1a('0x81'),require('./api/analyticMetric'));_0x211b9a[_0xaa1a('0x8')]('/api/analytics/field_reports',require(_0xaa1a('0x82')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x83'),require(_0xaa1a('0x84')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x211b9a['use'](_0xaa1a('0x85'),require(_0xaa1a('0x86')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/salesforce/fields',require(_0xaa1a('0x87')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/sugarcrm/accounts',require('./api/intSugarcrmAccount'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x88'),require(_0xaa1a('0x89')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x8a'),require(_0xaa1a('0x8b')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x8c'),require(_0xaa1a('0x8d')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x8e'),require(_0xaa1a('0x8f')));_0x211b9a['use'](_0xaa1a('0x90'),require('./api/intDeskField'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x91'),require('./api/intZohoAccount'));_0x211b9a['use'](_0xaa1a('0x92'),require('./api/intZohoConfiguration'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x93'),require(_0xaa1a('0x94')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x95'),require(_0xaa1a('0x96')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x97'),require('./api/intZendeskConfiguration'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x98'),require('./api/intZendeskField'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x99'),require(_0xaa1a('0x9a')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x9b'),require(_0xaa1a('0x9c')));_0x211b9a['use'](_0xaa1a('0x9d'),require(_0xaa1a('0x9e')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x9f'),require(_0xaa1a('0xa0')));_0x211b9a['use']('/api/integrations/vtiger/fields',require(_0xaa1a('0xa1')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/servicenow/accounts',require(_0xaa1a('0xa2')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xa3'),require(_0xaa1a('0xa4')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xa5'),require('./api/intServicenowField'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xa6'),require(_0xaa1a('0xa7')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xa8'),require(_0xaa1a('0xa9')));_0x211b9a[_0xaa1a('0x8')]('/api/integrations/dynamics365/fields',require(_0xaa1a('0xaa')));_0x211b9a['use'](_0xaa1a('0xab'),require(_0xaa1a('0xac')));_0x211b9a['use'](_0xaa1a('0xad'),require(_0xaa1a('0xae')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xaf'),require(_0xaa1a('0xb0')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb1'),require(_0xaa1a('0xb2')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb3'),require(_0xaa1a('0xb4')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb5'),require(_0xaa1a('0xb6')));_0x211b9a[_0xaa1a('0x8')]('/api/jscripty/answers/reports',require('./api/jscriptyAnswerReport'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb7'),require(_0xaa1a('0xb8')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xb9'),require(_0xaa1a('0xba')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xbb'),require('./api/smsQueueReport'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xbc'),require('./api/squareReport'));_0x211b9a['use'](_0xaa1a('0xbd'),require(_0xaa1a('0xbe')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xbf'),require(_0xaa1a('0xc0')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xc1'),require(_0xaa1a('0xc2')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xc3'),require(_0xaa1a('0xc4')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xc5'),require(_0xaa1a('0xc6')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xc7'),require(_0xaa1a('0xc8')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xc9'),require('./api/squareMessage'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xca'),require(_0xaa1a('0xcb')));_0x211b9a[_0xaa1a('0x8')]('/api/license',require(_0xaa1a('0xcc')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xcd'),require(_0xaa1a('0xce')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xcf'),require(_0xaa1a('0xd0')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xd1'),require('./api/attachment'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xd2'),require('./api/plugin'));_0x211b9a['use'](_0xaa1a('0xd3'),require(_0xaa1a('0xd4')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xd5'),require(_0xaa1a('0xd6')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xd7'),require('./api/faxTransferReport'));_0x211b9a[_0xaa1a('0x8')]('/api/openchannel/reports/transfer',require(_0xaa1a('0xd8')));_0x211b9a[_0xaa1a('0x8')]('/api/sms/reports/transfer',require('./api/smsTransferReport'));_0x211b9a['use'](_0xaa1a('0xd9'),require('./api/cmList'));_0x211b9a[_0xaa1a('0x8')]('/api/voice/prefixes',require(_0xaa1a('0xda')));_0x211b9a['use'](_0xaa1a('0xdb'),require(_0xaa1a('0xdc')));_0x211b9a[_0xaa1a('0x8')]('/api/userProfile/sections',require('./api/userProfileSection'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xdd'),require(_0xaa1a('0xde')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xdf'),require(_0xaa1a('0xe0')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe1'),require(_0xaa1a('0xe2')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe3'),require('./api/whatsappApplication'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe4'),require(_0xaa1a('0xe5')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe6'),require('./api/whatsappMessage'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe7'),require('./api/whatsappQueueReport'));_0x211b9a['use']('/api/whatsapp/reports/transfer',require(_0xaa1a('0xe8')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xe9'),require('./api/whatsappQueue'));_0x211b9a[_0xaa1a('0x8')]('/api/cloudProviders',require('./api/cloudProvider'));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xea'),require(_0xaa1a('0xeb')));_0x211b9a[_0xaa1a('0x8')]('/api/user-settings',require(_0xaa1a('0xec')));_0x211b9a['use'](_0xaa1a('0xed'),require(_0xaa1a('0xee')));_0x211b9a[_0xaa1a('0x8')]('/api/auth/google',require(_0xaa1a('0xef')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xf0'),require('./api/authActiveDirectory'));_0x211b9a['use']('/api/jira',require(_0xaa1a('0xf1')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xf2'),require(_0xaa1a('0xf3')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xf4'),require(_0xaa1a('0xf5')));_0x211b9a['use'](_0xaa1a('0xf6'),require(_0xaa1a('0xf7')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xf8'),require(_0xaa1a('0xf9')));_0x211b9a[_0xaa1a('0x8')]('/api/webbar',require('./api/webbar'));_0x211b9a['use'](_0xaa1a('0xfa'),clientSideLogs);_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0xfb'),express[_0xaa1a('0xfc')](path[_0xaa1a('0xfd')](config[_0xaa1a('0xfe')],_0xaa1a('0xfb'))));_0x211b9a[_0xaa1a('0x8')]('/www',express[_0xaa1a('0xfc')](path[_0xaa1a('0xfd')](config['root'],_0xaa1a('0xff'))));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x100'),express['static'](path[_0xaa1a('0xfd')](config['root'],'/demo')));_0x211b9a[_0xaa1a('0x8')](_0xaa1a('0x101'),express[_0xaa1a('0xfc')](path[_0xaa1a('0xfd')](config[_0xaa1a('0xfe')],_0xaa1a('0x102'),_0xaa1a('0x103'))));_0x211b9a['use']('/plugins',express[_0xaa1a('0xfc')](path[_0xaa1a('0xfd')](config['root'],_0xaa1a('0x104'))));_0x211b9a[_0xaa1a('0x105')](_0xaa1a('0x106'))[_0xaa1a('0x107')](errors[0x194]);_0x211b9a[_0xaa1a('0x105')]('/*')[_0xaa1a('0x107')](function(_0x2a97c1,_0x200cde){_0x200cde[_0xaa1a('0x108')](path[_0xaa1a('0x109')](_0x211b9a[_0xaa1a('0x107')]('appPath')+_0xaa1a('0x10a')));});return _0x211b9a;});};
\ No newline at end of file
index 1dcd138..497c45e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ef=['../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc'];(function(_0x32dc7d,_0x1573c1){var _0x46fae3=function(_0x278ec5){while(--_0x278ec5){_0x32dc7d['push'](_0x32dc7d['shift']());}};_0x46fae3(++_0x1573c1);}(_0xe2ef,0x194));var _0xfe2e=function(_0xbe4716,_0xbedd1c){_0xbe4716=_0xbe4716-0x0;var _0x2b9241=_0xe2ef[_0xbe4716];return _0x2b9241;};'use strict';var jayson=require('jayson/promise');var _=require(_0xfe2e('0x0'));var config=require(_0xfe2e('0x1'));exports[_0xfe2e('0x2')]=function(){return new Promise(function(_0x3abf8b,_0x55741c){var _0x195a6e={};_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x4')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x5')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x6')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x7')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x8')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x9')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xa')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xb')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xc')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xd')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xe')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0xf')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x10')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x11')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x12')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x13')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/mailApplication/mailApplication.rpc'));_0x195a6e=_['merge'](_0x195a6e,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x14')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x15')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x16')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x17')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x18')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x19')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1a')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsInteraction/smsInteraction.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsMessage/smsMessage.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/smsQueue/smsQueue.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1b')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1c')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1d')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x1e')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x1f')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/chatMessage/chatMessage.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x20')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x21')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/cmHopper/cmHopper.rpc'));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x22')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x23')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x24')));_0x195a6e=_['merge'](_0x195a6e,require('../api/interval/interval.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/pause/pause.rpc'));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x25')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x26')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x27')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x28')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/variable/variable.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x29')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2a')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2b')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2c')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2d')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x2e')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x2f')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x30')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x31')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x32')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x33')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x34')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x35')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x36')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x37')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x38')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x39')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x3a')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x3b')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3c')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3d')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3e')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x3f')));_0x195a6e=_['merge'](_0x195a6e,require(_0xfe2e('0x40')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x41')));_0x195a6e=_[_0xfe2e('0x3')](_0x195a6e,require(_0xfe2e('0x42')));var _0x5232c7=jayson['server'](_0x195a6e)[_0xfe2e('0x43')]();var _0x1acbe9=config[_0xfe2e('0x44')]['port']||config['port']+0x1;var _0x4ee3b9=config['rpc']['ip']||_0xfe2e('0x45');_0x5232c7['on'](_0xfe2e('0x46'),function(_0x3d87ed){return _0x55741c(_0x3d87ed);});_0x5232c7[_0xfe2e('0x2')](_0x1acbe9,_0x4ee3b9,function(){console[_0xfe2e('0x47')](_0xfe2e('0x48'),_0x4ee3b9,_0x1acbe9);require(_0xfe2e('0x49'))[_0xfe2e('0x4a')]();return _0x3abf8b('RPC\x20listening\x20on\x20'+_0x4ee3b9+':'+_0x1acbe9);});});};
\ No newline at end of file
+var _0x108e=['../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','localhost','error','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default','RPC\x20listening\x20on\x20','lodash','../config/environment','../api/user/user.rpc','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc'];(function(_0x2f2d04,_0x208f29){var _0x2d9e9d=function(_0x532652){while(--_0x532652){_0x2f2d04['push'](_0x2f2d04['shift']());}};_0x2d9e9d(++_0x208f29);}(_0x108e,0x141));var _0xe108=function(_0x5d6261,_0x32a226){_0x5d6261=_0x5d6261-0x0;var _0x67a1da=_0x108e[_0x5d6261];return _0x67a1da;};'use strict';var jayson=require('jayson/promise');var _=require(_0xe108('0x0'));var config=require(_0xe108('0x1'));exports['listen']=function(){return new Promise(function(_0x2613fc,_0x4fe05f){var _0x3dddcc={};_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/voiceExtension/voiceExtension.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x4')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x5')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x6')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x7')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x8')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/memberReport/memberReport.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x9')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0xa')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0xb')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0xc')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/mailAccount/mailAccount.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0xd')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0xe')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/mailMessage/mailMessage.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/mailApplication/mailApplication.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0xf')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/faxAccount/faxAccount.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x10')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x11')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x12')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x13')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x14')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x15')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x16')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x17')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x18')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x19')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x1a')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x1b')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x1c')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/chatMessage/chatMessage.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x1d')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/cmContact/cmContact.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x1e')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x1f')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x20')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x21')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x22')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x23')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x24')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x25')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/template/template.rpc'));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x26')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x27')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x28')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x29')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2a')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2b')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2c')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2d')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2e')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x2f')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x30')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x31')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x32')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/squareReport/squareReport.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x33')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x34')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x35')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x36')));_0x3dddcc=_['merge'](_0x3dddcc,require('../api/squareRecording/squareRecording.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x37')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x38')));_0x3dddcc=_['merge'](_0x3dddcc,require(_0xe108('0x39')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x3a')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x3b')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x3c')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x3d')));_0x3dddcc=_[_0xe108('0x3')](_0x3dddcc,require(_0xe108('0x3e')));var _0x13a774=jayson['server'](_0x3dddcc)[_0xe108('0x3f')]();var _0x27aa78=config[_0xe108('0x40')][_0xe108('0x41')]||config[_0xe108('0x41')]+0x1;var _0x3bc662=config[_0xe108('0x40')]['ip']||_0xe108('0x42');_0x13a774['on'](_0xe108('0x43'),function(_0x421b30){return _0x4fe05f(_0x421b30);});_0x13a774[_0xe108('0x44')](_0x27aa78,_0x3bc662,function(){console[_0xe108('0x45')](_0xe108('0x46'),_0x3bc662,_0x27aa78);require('../config/triggers')[_0xe108('0x47')]();return _0x2613fc(_0xe108('0x48')+_0x3bc662+':'+_0x27aa78);});});};
\ No newline at end of file
index 5b1f334..df7d4c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ec=['ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','EventEmitter','./reply','call','utf8','setEncoding','emit','ready','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','replace','result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','close','inherits','prototype','sendRequest','answer','ANSWER','getData','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','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','continueAt','extension','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','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','wait','WAIT'];(function(_0x7798ef,_0x2b521b){var _0x42a5f4=function(_0x273ce9){while(--_0x273ce9){_0x7798ef['push'](_0x7798ef['shift']());}};_0x42a5f4(++_0x2b521b);}(_0x42ec,0x1e8));var _0xc42e=function(_0x3ebc47,_0x243394){_0x3ebc47=_0x3ebc47-0x0;var _0x301296=_0x42ec[_0x3ebc47];return _0x301296;};'use strict';var util=require(_0xc42e('0x0'));var _=require(_0xc42e('0x1'));var EventEmitter=require(_0xc42e('0x2'))[_0xc42e('0x3')];var AGIReply=require(_0xc42e('0x4'));var AGIError=require('./error');function AGIChannel(_0x44df26){var _0x49a4c9=this,_0x107a41=new AGIReply(),_0x2f1f54=![],_0x2baaa9={};EventEmitter[_0xc42e('0x5')](_0x49a4c9);_0x44df26['setEncoding'](_0xc42e('0x6'));_0x44df26['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x107a41[_0xc42e('0x7')](_0xc42e('0x6'));_0x107a41['on']('headers',function(_0x3698e7){for(var _0xb752f3 in _0x3698e7){_0x49a4c9[_0xb752f3]=_0x3698e7[_0xb752f3];}_0x49a4c9[_0xc42e('0x8')](_0xc42e('0x9'));});_0x107a41['on']('line',function(_0x113467){if(_0x113467[_0xc42e('0xa')]()==_0xc42e('0xb')){_0x49a4c9['emit'](_0xc42e('0xb'));return;}if(_0x113467[_0xc42e('0xc')](0x0,0xb)==_0xc42e('0xd')){_0x2f1f54=!![];}if(_0x2f1f54){_0x2baaa9['rx']+=_0x113467+'\x0a';if(_0x113467['search'](_0xc42e('0xe'))!=-0x1){_0x2f1f54=![];}}else{_0x2baaa9['rx']=_0x113467;}if(_0x2f1f54){return;}if(typeof _0x2baaa9['cb']==_0xc42e('0xf')){var _0x3c9f86=_0x2baaa9['rx'][_0xc42e('0xc')](0x0,0x3),_0x4056a3=null,_0x53f847=null;_0x3c9f86=parseInt(_0x3c9f86);if(isNaN(_0x3c9f86)){_0x2baaa9['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x3c9f86!=0xc8){_0x2baaa9['cb'](null,{'code':_0x3c9f86,'result':-0x1,'extra':'KO'});return;}_0x4056a3=_0x2baaa9['rx'][_0xc42e('0xc')](0x4)[_0xc42e('0x10')](_0xc42e('0x11'),'');if(_0x4056a3['indexOf']('\x20')!=-0x1){_0x4056a3=_0x4056a3[_0xc42e('0x12')](0x0,_0x4056a3[_0xc42e('0x13')]('\x20'));}if(_[_0xc42e('0x14')](_0x4056a3,'-1')){_0x4056a3=parseInt(_0x4056a3);}_0x53f847=_0x2baaa9['rx'][_0xc42e('0x15')]('\x20');if(_0x53f847[_0xc42e('0x16')]==0x3){_0x53f847=_0x53f847[0x2][_0xc42e('0xc')](0x1,_0x53f847[0x2][_0xc42e('0x16')]-0x1);}else if(_0x53f847['length']>0x3){var _0x179ee0=/\((.+)\)/;var _0x4fdda0=_0x2baaa9['rx'][_0xc42e('0x17')](_0x179ee0);if(_0x4fdda0){_0x53f847=_0x4fdda0[0x1];}else{_0x53f847=null;}}else{_0x53f847=null;}_0x2baaa9['cb'](null,{'code':_0x3c9f86,'result':_0x4056a3,'extra':_0x53f847});}});_0x44df26['on'](_0xc42e('0x18'),function(_0x27df8b){_0x49a4c9[_0xc42e('0x8')](_0xc42e('0x18'),new AGIError(_0xc42e('0x19'),_0x27df8b[_0xc42e('0x1a')]));});_0x44df26['on']('close',function(){_0x49a4c9['emit']('close',new AGIError(_0xc42e('0x1b')));});_0x44df26['on'](_0xc42e('0x1c'),function(){_0x49a4c9['emit']('timeout',new AGIError(_0xc42e('0x1d')));_0x44df26[_0xc42e('0x1e')]();});_0x44df26[_0xc42e('0x1f')](_0x107a41);this[_0xc42e('0x20')]=function(_0x4f87d0,_0xdaef48){var _0x4f87d0=_0x4f87d0||'',_0xdaef48=typeof _0xdaef48==_0xc42e('0xf')?_0xdaef48:new Function();_0x2baaa9={'tx':_0x4f87d0,'rx':'','cb':_0xdaef48};_0x44df26[_0xc42e('0x21')](_0x4f87d0+'\x0a');},this[_0xc42e('0x22')]=function(){_0x44df26[_0xc42e('0x1e')]();};}util[_0xc42e('0x23')](AGIChannel,EventEmitter);AGIChannel[_0xc42e('0x24')][_0xc42e('0x25')]=function(_0x2c8555){return this['command']['sync'](this,_0x2c8555);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x26')]=function(){return this[_0xc42e('0x25')](_0xc42e('0x27'));};AGIChannel['prototype'][_0xc42e('0x28')]=function(_0x3f4569,_0x13d5a8,_0x3cda1f){_0x3f4569=_0x3f4569===undefined?'beep':_0x3f4569;_0x13d5a8=_0x13d5a8===undefined?'5':_0x13d5a8;_0x3cda1f=_0x3cda1f===undefined?'1':_0x3cda1f;return this['sendRequest'](util[_0xc42e('0x29')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x3f4569,_0x13d5a8*0x3e8,_0x3cda1f));};AGIChannel['prototype'][_0xc42e('0x2a')]=function(_0x393448){_0x393448=_0x393448||_0xc42e('0x2b');return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x2c'),_0x393448));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x2d')]=function(_0x40b8ad,_0x2b8084){if(_[_0xc42e('0x2e')](_0x2b8084)){return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x2f'),_0x40b8ad,_0x2b8084[_0xc42e('0x30')](',')));}return this[_0xc42e('0x25')](util[_0xc42e('0x29')]('EXEC\x20%s\x20%s',_0x40b8ad,_0x2b8084));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x31')]=function(_0x3136d4){return this[_0xc42e('0x25')](util[_0xc42e('0x29')]('SET\x20CONTEXT\x20%s',_0x3136d4));};AGIChannel[_0xc42e('0x24')]['setExtension']=function(_0x13e680){return this[_0xc42e('0x25')](util['format'](_0xc42e('0x32'),_0x13e680));};AGIChannel['prototype'][_0xc42e('0x33')]=function(_0x5d9a60){return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x34'),_0x5d9a60));};AGIChannel['prototype'][_0xc42e('0xb')]=function(){return this[_0xc42e('0x25')](_0xc42e('0x35'));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x36')]=function(_0x22e972,_0x340051){var _0x3a7b70=_[_0xc42e('0x37')](_0x340051)||_[_0xc42e('0x38')](_0x340051)?_0x340051[_0xc42e('0x39')]():_0x340051;return this['sendRequest'](util[_0xc42e('0x29')](_0xc42e('0x3a'),_0x22e972,_0x3a7b70?_0x3a7b70[_0xc42e('0x39')]()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xc42e('0x3b')]=function(_0x30b739,_0x26a223){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x3c'),_0x30b739,_0x26a223));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x3d')]=function(_0x8688c6,_0x12f3d2){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x3e'),_0x8688c6,_0x12f3d2));};AGIChannel['prototype'][_0xc42e('0x3f')]=function(_0x5994a4,_0xab432d){return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x40'),_0x5994a4,_0xab432d));};AGIChannel['prototype'][_0xc42e('0x41')]=function(_0x3b17aa,_0x4750e2,_0x260ebf){_0x4750e2=_0x4750e2||this[_0xc42e('0x42')];_0x260ebf=_0x260ebf||0x1;this[_0xc42e('0x31')](_0x3b17aa);this[_0xc42e('0x43')](_0x4750e2);this[_0xc42e('0x33')](_0x260ebf);return this['noop'](util[_0xc42e('0x29')](_0xc42e('0x44'),_0x3b17aa,_0x4750e2,_0x260ebf));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x45')]=function(_0x32ff0a){return this['sendRequest'](util[_0xc42e('0x29')]('GET\x20VARIABLE\x20\x22%s\x22',_0x32ff0a));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x46')]=function(_0x3a4f20,_0x3b45ac,_0x380745,_0x22ad7c,_0x498f7d,_0x410400){_0x3b45ac=_0x3b45ac||_0xc42e('0x47');_0x380745=_0x380745||'';_0x22ad7c=_0x22ad7c===undefined?-0x1:_0x22ad7c==='-1'?-0x1:_0x22ad7c*0x3e8;_0x498f7d=_0x498f7d===undefined?'':'s='+_0x498f7d;_0x410400=_0x410400?_0xc42e('0x48'):'';return this[_0xc42e('0x25')](util['format'](_0xc42e('0x49'),_0x3a4f20,_0x3b45ac,_0x380745,_0x22ad7c,_0x410400,_0x498f7d));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4a')]=function(_0x20e8c7,_0x3e865e){_0x3e865e=_0x3e865e||'';return this[_0xc42e('0x25')](util[_0xc42e('0x29')](_0xc42e('0x4b'),_0x20e8c7,_0x3e865e));};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4c')]=function(_0x494312){return this[_0xc42e('0x2d')]('AGI',_0x494312);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x4d')]=function(_0x59028d){return this[_0xc42e('0x2d')](_0xc42e('0x4e'),_0x59028d);};AGIChannel[_0xc42e('0x24')][_0xc42e('0x18')]=function(_0x13481a,_0x4028c5){this[_0xc42e('0x2a')](util['format'](_0xc42e('0x4f'),_0x13481a['id'],_0x13481a[_0xc42e('0x50')],_0x4028c5));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0x8556=['streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','WAIT','label','util','lodash','events','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','replace','result=','indexOf','split','length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','write','close','prototype','sendRequest','command','sync','ANSWER','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','extension','setContext','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP'];(function(_0x3250d,_0x1d2dcc){var _0x169e71=function(_0x2612c4){while(--_0x2612c4){_0x3250d['push'](_0x3250d['shift']());}};_0x169e71(++_0x1d2dcc);}(_0x8556,0x1da));var _0x6855=function(_0x1510b9,_0x2b0346){_0x1510b9=_0x1510b9-0x0;var _0x380390=_0x8556[_0x1510b9];return _0x380390;};'use strict';var util=require(_0x6855('0x0'));var _=require(_0x6855('0x1'));var EventEmitter=require(_0x6855('0x2'))['EventEmitter'];var AGIReply=require(_0x6855('0x3'));var AGIError=require(_0x6855('0x4'));function AGIChannel(_0x121ac9){var _0x778a3f=this,_0x1c8537=new AGIReply(),_0x3ba6bb=![],_0x3b0ccb={};EventEmitter[_0x6855('0x5')](_0x778a3f);_0x121ac9[_0x6855('0x6')](_0x6855('0x7'));_0x121ac9[_0x6855('0x8')](0x8*0x3c*0x3c*0x3e8);_0x1c8537['setEncoding'](_0x6855('0x7'));_0x1c8537['on'](_0x6855('0x9'),function(_0x5bc624){for(var _0x2e19d2 in _0x5bc624){_0x778a3f[_0x2e19d2]=_0x5bc624[_0x2e19d2];}_0x778a3f[_0x6855('0xa')](_0x6855('0xb'));});_0x1c8537['on'](_0x6855('0xc'),function(_0x4fb239){if(_0x4fb239[_0x6855('0xd')]()==_0x6855('0xe')){_0x778a3f[_0x6855('0xa')]('hangup');return;}if(_0x4fb239[_0x6855('0xf')](0x0,0xb)==_0x6855('0x10')){_0x3ba6bb=!![];}if(_0x3ba6bb){_0x3b0ccb['rx']+=_0x4fb239+'\x0a';if(_0x4fb239[_0x6855('0x11')](_0x6855('0x12'))!=-0x1){_0x3ba6bb=![];}}else{_0x3b0ccb['rx']=_0x4fb239;}if(_0x3ba6bb){return;}if(typeof _0x3b0ccb['cb']==_0x6855('0x13')){var _0x42a558=_0x3b0ccb['rx'][_0x6855('0xf')](0x0,0x3),_0x21417f=null,_0x438870=null;_0x42a558=parseInt(_0x42a558);if(isNaN(_0x42a558)){_0x3b0ccb['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x42a558!=0xc8){_0x3b0ccb['cb'](null,{'code':_0x42a558,'result':-0x1,'extra':'KO'});return;}_0x21417f=_0x3b0ccb['rx'][_0x6855('0xf')](0x4)[_0x6855('0x14')](_0x6855('0x15'),'');if(_0x21417f[_0x6855('0x16')]('\x20')!=-0x1){_0x21417f=_0x21417f['substr'](0x0,_0x21417f['indexOf']('\x20'));}if(_['startsWith'](_0x21417f,'-1')){_0x21417f=parseInt(_0x21417f);}_0x438870=_0x3b0ccb['rx'][_0x6855('0x17')]('\x20');if(_0x438870['length']==0x3){_0x438870=_0x438870[0x2]['substring'](0x1,_0x438870[0x2][_0x6855('0x18')]-0x1);}else if(_0x438870[_0x6855('0x18')]>0x3){var _0x2004a0=/\((.+)\)/;var _0x4e8e39=_0x3b0ccb['rx'][_0x6855('0x19')](_0x2004a0);if(_0x4e8e39){_0x438870=_0x4e8e39[0x1];}else{_0x438870=null;}}else{_0x438870=null;}_0x3b0ccb['cb'](null,{'code':_0x42a558,'result':_0x21417f,'extra':_0x438870});}});_0x121ac9['on'](_0x6855('0x1a'),function(_0xe49dcc){_0x778a3f[_0x6855('0xa')](_0x6855('0x1a'),new AGIError(_0x6855('0x1b'),_0xe49dcc[_0x6855('0x1c')]));});_0x121ac9['on']('close',function(){_0x778a3f['emit']('close',new AGIError(_0x6855('0x1d')));});_0x121ac9['on'](_0x6855('0x1e'),function(){_0x778a3f['emit'](_0x6855('0x1e'),new AGIError(_0x6855('0x1f')));_0x121ac9[_0x6855('0x20')]();});_0x121ac9[_0x6855('0x21')](_0x1c8537);this['command']=function(_0x4b3746,_0x78a466){var _0x4b3746=_0x4b3746||'',_0x78a466=typeof _0x78a466=='function'?_0x78a466:new Function();_0x3b0ccb={'tx':_0x4b3746,'rx':'','cb':_0x78a466};_0x121ac9[_0x6855('0x22')](_0x4b3746+'\x0a');},this[_0x6855('0x23')]=function(){_0x121ac9['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x6855('0x24')][_0x6855('0x25')]=function(_0x3c5372){return this[_0x6855('0x26')][_0x6855('0x27')](this,_0x3c5372);};AGIChannel[_0x6855('0x24')]['answer']=function(){return this['sendRequest'](_0x6855('0x28'));};AGIChannel[_0x6855('0x24')]['getData']=function(_0x51ea76,_0x4e0053,_0x48f021){_0x51ea76=_0x51ea76===undefined?_0x6855('0x29'):_0x51ea76;_0x4e0053=_0x4e0053===undefined?'5':_0x4e0053;_0x48f021=_0x48f021===undefined?'1':_0x48f021;return this['sendRequest'](util[_0x6855('0x2a')](_0x6855('0x2b'),_0x51ea76,_0x4e0053*0x3e8,_0x48f021));};AGIChannel['prototype'][_0x6855('0x2c')]=function(_0x17c049){_0x17c049=_0x17c049||_0x6855('0x2d');return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x2e'),_0x17c049));};AGIChannel[_0x6855('0x24')][_0x6855('0x2f')]=function(_0x30af57,_0x29a4dd){if(_['isArray'](_0x29a4dd)){return this[_0x6855('0x25')](util[_0x6855('0x2a')]('EXEC\x20%s\x20%s',_0x30af57,_0x29a4dd['join'](',')));}return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x30'),_0x30af57,_0x29a4dd));};AGIChannel['prototype']['setContext']=function(_0x2366e2){return this[_0x6855('0x25')](util['format'](_0x6855('0x31'),_0x2366e2));};AGIChannel[_0x6855('0x24')]['setExtension']=function(_0x2bb524){return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x32'),_0x2bb524));};AGIChannel[_0x6855('0x24')][_0x6855('0x33')]=function(_0x32b3fb){return this['sendRequest'](util[_0x6855('0x2a')](_0x6855('0x34'),_0x32b3fb));};AGIChannel[_0x6855('0x24')][_0x6855('0xe')]=function(){return this[_0x6855('0x25')](_0x6855('0x35'));};AGIChannel[_0x6855('0x24')][_0x6855('0x36')]=function(_0x491ae7,_0x3813ad){var _0x485ae9=_[_0x6855('0x37')](_0x3813ad)||_[_0x6855('0x38')](_0x3813ad)?_0x3813ad[_0x6855('0x39')]():_0x3813ad;return this['sendRequest'](util[_0x6855('0x2a')](_0x6855('0x3a'),_0x491ae7,_0x485ae9?_0x485ae9[_0x6855('0x39')]()[_0x6855('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x6855('0x24')]['sayNumber']=function(_0x10a779,_0x522c75){return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x3b'),_0x10a779,_0x522c75));};AGIChannel['prototype'][_0x6855('0x3c')]=function(_0x1c23ba,_0x2580a5){return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x3d'),_0x1c23ba,_0x2580a5));};AGIChannel[_0x6855('0x24')][_0x6855('0x3e')]=function(_0x12e1a3,_0x329629){return this[_0x6855('0x25')](util[_0x6855('0x2a')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x12e1a3,_0x329629));};AGIChannel['prototype']['continueAt']=function(_0x91e52f,_0x1ef15e,_0x3a07c9){_0x1ef15e=_0x1ef15e||this[_0x6855('0x3f')];_0x3a07c9=_0x3a07c9||0x1;this[_0x6855('0x40')](_0x91e52f);this[_0x6855('0x41')](_0x1ef15e);this[_0x6855('0x33')](_0x3a07c9);return this['noop'](util[_0x6855('0x2a')](_0x6855('0x42'),_0x91e52f,_0x1ef15e,_0x3a07c9));};AGIChannel[_0x6855('0x24')][_0x6855('0x43')]=function(_0x7fb754){return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x44'),_0x7fb754));};AGIChannel[_0x6855('0x24')][_0x6855('0x45')]=function(_0x36005a,_0x10cad8,_0x409286,_0x1d7917,_0x45d7c5,_0x28d227){_0x10cad8=_0x10cad8||_0x6855('0x46');_0x409286=_0x409286||'';_0x1d7917=_0x1d7917===undefined?-0x1:_0x1d7917==='-1'?-0x1:_0x1d7917*0x3e8;_0x45d7c5=_0x45d7c5===undefined?'':'s='+_0x45d7c5;_0x28d227=_0x28d227?_0x6855('0x47'):'';return this[_0x6855('0x25')](util[_0x6855('0x2a')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x36005a,_0x10cad8,_0x409286,_0x1d7917,_0x28d227,_0x45d7c5));};AGIChannel[_0x6855('0x24')][_0x6855('0x48')]=function(_0x26cfe3,_0xef97b7){_0xef97b7=_0xef97b7||'';return this[_0x6855('0x25')](util[_0x6855('0x2a')](_0x6855('0x49'),_0x26cfe3,_0xef97b7));};AGIChannel['prototype'][_0x6855('0x4a')]=function(_0x3259d6){return this[_0x6855('0x2f')](_0x6855('0x4b'),_0x3259d6);};AGIChannel[_0x6855('0x24')]['wait']=function(_0x126b91){return this[_0x6855('0x2f')](_0x6855('0x4c'),_0x126b91);};AGIChannel[_0x6855('0x24')][_0x6855('0x1a')]=function(_0x5ced69,_0x45c91e){this[_0x6855('0x2c')](util['format']('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x5ced69['id'],_0x5ced69[_0x6855('0x4d')],_0x45c91e));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index a9f0733..2cc5255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bb9=['Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','format','apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.'];(function(_0x4d7dff,_0x689604){var _0x56a3ae=function(_0x5207ff){while(--_0x5207ff){_0x4d7dff['push'](_0x4d7dff['shift']());}};_0x56a3ae(++_0x689604);}(_0x2bb9,0xcb));var _0x92bb=function(_0x1afc3c,_0x1ac25f){_0x1afc3c=_0x1afc3c-0x0;var _0x2c74ea=_0x2bb9[_0x1afc3c];return _0x2c74ea;};'use strict';var util=require(_0x92bb('0x0'));var error={'E_AGI_UNDEFINED':_0x92bb('0x1'),'E_AGI_ARGUMENT_PORT':_0x92bb('0x2'),'E_AGI_SERVER_ERROR':_0x92bb('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':_0x92bb('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x92bb('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x92bb('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x92bb('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x92bb('0x8')};function AGIError(_0x2379dc){var _0x2379dc=_0x2379dc||null,_0x58e755=_0x58e755||[],_0x35dd9a=0x1,_0x213b7f='';if(!error[_0x2379dc]){_0x2379dc='E_AGI_UNDEFINED';}_0x58e755['push'](error[_0x2379dc]);while(arguments[_0x35dd9a]){_0x58e755['push'](arguments[_0x35dd9a]);_0x35dd9a++;}_0x213b7f=util[_0x92bb('0x9')][_0x92bb('0xa')](util,_0x58e755);this[_0x92bb('0xb')]=_0x213b7f;this[_0x92bb('0xc')]=_0x2379dc;}module[_0x92bb('0xd')]=AGIError;
\ No newline at end of file
+var _0xf65b=['Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','format','message','name','exports','util','Undefined\x20error.'];(function(_0x491cbc,_0x181dc2){var _0x4c349e=function(_0x3d07f3){while(--_0x3d07f3){_0x491cbc['push'](_0x491cbc['shift']());}};_0x4c349e(++_0x181dc2);}(_0xf65b,0x1a2));var _0xbf65=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf65b[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0xbf65('0x0'));var error={'E_AGI_UNDEFINED':_0xbf65('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xbf65('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0xbf65('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0xbf65('0x4'),'E_AGI_SOCKET_ERROR':_0xbf65('0x5'),'E_AGI_SOCKET_CLOSE':_0xbf65('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xbf65('0x7'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x30091f){var _0x30091f=_0x30091f||null,_0x2810e1=_0x2810e1||[],_0x38f297=0x1,_0x4778e7='';if(!error[_0x30091f]){_0x30091f=_0xbf65('0x8');}_0x2810e1[_0xbf65('0x9')](error[_0x30091f]);while(arguments[_0x38f297]){_0x2810e1[_0xbf65('0x9')](arguments[_0x38f297]);_0x38f297++;}_0x4778e7=util[_0xbf65('0xa')]['apply'](util,_0x2810e1);this[_0xbf65('0xb')]=_0x4778e7;this[_0xbf65('0xc')]=_0x30091f;}module[_0xbf65('0xd')]=AGIError;
\ No newline at end of file
index 3ee704e..f454fdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8856=['EventEmitter','ioredis','./error','../../config/environment','redis','defaults','localhost','subscribe','agi','emit','error','projectUpdate','exports','lodash','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8856,0x1b1));var _0x6885=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6885('0x0'));var EventEmitter=require(_0x6885('0x1'))[_0x6885('0x2')];var Redis=require(_0x6885('0x3'));var AGIError=require(_0x6885('0x4'));var config=require(_0x6885('0x5'));config[_0x6885('0x6')]=_[_0x6885('0x7')](config['redis'],{'host':_0x6885('0x8'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub[_0x6885('0x9')](_0x6885('0xa'),function(_0x13a0da){if(_0x13a0da)return eventEmitter[_0x6885('0xb')](_0x6885('0xc'),new AGIError('E_AGI_SERVER_ERROR',_0x13a0da));});sub['on']('message',function(_0x3ed3ba,_0xbae1b8){if(_0x3ed3ba!==_0x6885('0xa'))return;try{var _0x2eac73=JSON['parse'](_0xbae1b8);eventEmitter['emit'](_0x6885('0xd'),_0x2eac73);}catch(_0x3f0b87){eventEmitter['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0x3f0b87));}});module[_0x6885('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x6fe2=['exports','lodash','EventEmitter','ioredis','redis','defaults','localhost','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','message','parse','projectUpdate'];(function(_0xa23c02,_0x3631ba){var _0x12e758=function(_0x388f30){while(--_0x388f30){_0xa23c02['push'](_0xa23c02['shift']());}};_0x12e758(++_0x3631ba);}(_0x6fe2,0xa6));var _0x26fe=function(_0x3705a3,_0x41ec6f){_0x3705a3=_0x3705a3-0x0;var _0x22dcc7=_0x6fe2[_0x3705a3];return _0x22dcc7;};'use strict';var _=require(_0x26fe('0x0'));var EventEmitter=require('events')[_0x26fe('0x1')];var Redis=require(_0x26fe('0x2'));var AGIError=require('./error');var config=require('../../config/environment');config[_0x26fe('0x3')]=_[_0x26fe('0x4')](config[_0x26fe('0x3')],{'host':_0x26fe('0x5'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x26fe('0x3')]);sub[_0x26fe('0x6')](_0x26fe('0x7'),function(_0x883b73){if(_0x883b73)return eventEmitter[_0x26fe('0x8')](_0x26fe('0x9'),new AGIError(_0x26fe('0xa'),_0x883b73));});sub['on'](_0x26fe('0xb'),function(_0x368ad7,_0x2e8409){if(_0x368ad7!=='agi')return;try{var _0x2453f9=JSON[_0x26fe('0xc')](_0x2e8409);eventEmitter['emit'](_0x26fe('0xd'),_0x2453f9);}catch(_0x40bb36){eventEmitter[_0x26fe('0x8')](_0x26fe('0x9'),new AGIError(_0x26fe('0xa'),_0x40bb36));}});module[_0x26fe('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 6fdcb10..abd463f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f64=['exports','lodash','../../../config/logger','agi','menu','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size','info','stop\x20traverse','length','condition','agicommand','vswitch','target','invalid','traverseBFS','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found'];(function(_0x358881,_0x1b748c){var _0x76792d=function(_0x322bb8){while(--_0x322bb8){_0x358881['push'](_0x358881['shift']());}};_0x76792d(++_0x1b748c);}(_0x3f64,0x153));var _0x43f6=function(_0x2d83f8,_0x23060a){_0x2d83f8=_0x2d83f8-0x0;var _0x46553b=_0x3f64[_0x2d83f8];return _0x46553b;};'use strict';var _=require(_0x43f6('0x0'));var logger=require(_0x43f6('0x1'))(_0x43f6('0x2'));var verticesWithRetry=[_0x43f6('0x3'),'getdigits',_0x43f6('0x4')];var Graph=function(){this['vertices']={};this[_0x43f6('0x5')]={};this[_0x43f6('0x6')]=0x0;};Graph[_0x43f6('0x7')][_0x43f6('0x8')]=function(_0x27582c){this[_0x43f6('0x9')][_0x27582c['id']]=_0x27582c;this[_0x43f6('0x5')][_0x27582c['id']]=[];};Graph[_0x43f6('0x7')][_0x43f6('0xa')]=function(_0x2c6f45,_0xe95fa7,_0x4545b5){this['edges'][_0x2c6f45][_0x43f6('0xb')]({'target':_0xe95fa7,'condition':_0x4545b5});this[_0x43f6('0x6')]+=0x1;};Graph[_0x43f6('0x7')][_0x43f6('0xc')]=function(){return _['size'](this[_0x43f6('0x9')]);};Graph[_0x43f6('0x7')]['relations']=function(){return this['numberOfEdges'];};Graph['prototype']['getVertex']=function(_0xcc81f1){return this[_0x43f6('0x9')][_0xcc81f1];};Graph['prototype']['traverseBFS']=function(_0x18bc3f,_0x3e9604){if(!this[_0x43f6('0x9')][_0x18bc3f]){return logger['info']('no\x20vertex\x20found');}var _0x240dec=_0x3e9604(this[_0x43f6('0x9')][_0x18bc3f]);if(!_0x240dec){return logger[_0x43f6('0xd')](_0x43f6('0xe'));}if(this[_0x43f6('0x5')][_0x18bc3f][_0x43f6('0xf')]===0x0){return logger[_0x43f6('0xd')]('no\x20edge/s\x20available');}for(var _0x5688be=0x0,_0x19f252=[],_0x121269=![];_0x5688be<this['edges'][_0x18bc3f]['length'];_0x5688be+=0x1){if(this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x10')]){_0x19f252=this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['condition']['split'](',');for(var _0x200e69=0x0;_0x200e69<_0x19f252['length'];_0x200e69+=0x1){if(this['vertices'][_0x18bc3f][_0x43f6('0x11')]===_0x43f6('0x12')&&_0x19f252[_0x200e69]==='-'){_0x121269=this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['target'];logger[_0x43f6('0xd')]('default',_0x19f252[_0x200e69],this[_0x43f6('0x5')][_0x18bc3f][_0x5688be][_0x43f6('0x13')]);}else if(this[_0x43f6('0x9')][_0x18bc3f]['agicommand']===_0x43f6('0x3')&&_0x19f252[_0x200e69]==='i'){_0x121269=this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x13')];logger[_0x43f6('0xd')](_0x43f6('0x14'),_0x19f252[_0x200e69],this['edges'][_0x18bc3f][_0x5688be]['target']);}if(_0x19f252[_0x200e69]===_0x240dec){return this[_0x43f6('0x15')](this[_0x43f6('0x5')][_0x18bc3f][_0x5688be]['target'],_0x3e9604);}}}else{return this['traverseBFS'](this['edges'][_0x18bc3f][_0x5688be][_0x43f6('0x13')],_0x3e9604);}}if(_0x19f252['length']){if(this['vertices'][_0x18bc3f]['agicommand']==='vswitch'){if(_0x121269){return this[_0x43f6('0x15')](_0x121269,_0x3e9604);}return logger[_0x43f6('0xd')](_0x43f6('0x16'));}else if(_[_0x43f6('0x17')](verticesWithRetry,this[_0x43f6('0x9')][_0x18bc3f][_0x43f6('0x11')])){if(_0x240dec==='-'){return logger['info']('max\x20retry\x20reach');}if(_0x121269&&_0x240dec!=='t'){return this['traverseBFS'](_0x121269,_0x3e9604);}return this[_0x43f6('0x15')](_0x18bc3f,_0x3e9604);}return logger['info'](_0x43f6('0x18'));}};module[_0x43f6('0x19')]=Graph;
\ No newline at end of file
+var _0x26c8=['vertices','edges','numberOfEdges','addVertex','prototype','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','condition','split','agicommand','vswitch','default','target','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getsecretdigits'];(function(_0x3290bd,_0x4d327f){var _0x3dd3ac=function(_0x32b30e){while(--_0x32b30e){_0x3290bd['push'](_0x3290bd['shift']());}};_0x3dd3ac(++_0x4d327f);}(_0x26c8,0x91));var _0x826c=function(_0x5418b7,_0x2c2957){_0x5418b7=_0x5418b7-0x0;var _0x6a3c9f=_0x26c8[_0x5418b7];return _0x6a3c9f;};'use strict';var _=require(_0x826c('0x0'));var logger=require(_0x826c('0x1'))(_0x826c('0x2'));var verticesWithRetry=[_0x826c('0x3'),'getdigits',_0x826c('0x4')];var Graph=function(){this[_0x826c('0x5')]={};this[_0x826c('0x6')]={};this[_0x826c('0x7')]=0x0;};Graph['prototype'][_0x826c('0x8')]=function(_0x88f57){this['vertices'][_0x88f57['id']]=_0x88f57;this['edges'][_0x88f57['id']]=[];};Graph[_0x826c('0x9')]['addEdge']=function(_0x1ecd20,_0x2cafab,_0x5a252e){this[_0x826c('0x6')][_0x1ecd20][_0x826c('0xa')]({'target':_0x2cafab,'condition':_0x5a252e});this['numberOfEdges']+=0x1;};Graph['prototype'][_0x826c('0xb')]=function(){return _[_0x826c('0xb')](this[_0x826c('0x5')]);};Graph[_0x826c('0x9')][_0x826c('0xc')]=function(){return this[_0x826c('0x7')];};Graph['prototype'][_0x826c('0xd')]=function(_0x3bc011){return this[_0x826c('0x5')][_0x3bc011];};Graph[_0x826c('0x9')][_0x826c('0xe')]=function(_0x2431b3,_0x2b15f2){if(!this['vertices'][_0x2431b3]){return logger[_0x826c('0xf')](_0x826c('0x10'));}var _0x37f168=_0x2b15f2(this['vertices'][_0x2431b3]);if(!_0x37f168){return logger[_0x826c('0xf')](_0x826c('0x11'));}if(this[_0x826c('0x6')][_0x2431b3][_0x826c('0x12')]===0x0){return logger[_0x826c('0xf')]('no\x20edge/s\x20available');}for(var _0x26591b=0x0,_0x16b8c4=[],_0x1a704e=![];_0x26591b<this[_0x826c('0x6')][_0x2431b3][_0x826c('0x12')];_0x26591b+=0x1){if(this[_0x826c('0x6')][_0x2431b3][_0x26591b]['condition']){_0x16b8c4=this[_0x826c('0x6')][_0x2431b3][_0x26591b][_0x826c('0x13')][_0x826c('0x14')](',');for(var _0x2932f9=0x0;_0x2932f9<_0x16b8c4[_0x826c('0x12')];_0x2932f9+=0x1){if(this[_0x826c('0x5')][_0x2431b3][_0x826c('0x15')]===_0x826c('0x16')&&_0x16b8c4[_0x2932f9]==='-'){_0x1a704e=this[_0x826c('0x6')][_0x2431b3][_0x26591b]['target'];logger[_0x826c('0xf')](_0x826c('0x17'),_0x16b8c4[_0x2932f9],this[_0x826c('0x6')][_0x2431b3][_0x26591b][_0x826c('0x18')]);}else if(this[_0x826c('0x5')][_0x2431b3][_0x826c('0x15')]===_0x826c('0x3')&&_0x16b8c4[_0x2932f9]==='i'){_0x1a704e=this[_0x826c('0x6')][_0x2431b3][_0x26591b][_0x826c('0x18')];logger['info']('invalid',_0x16b8c4[_0x2932f9],this[_0x826c('0x6')][_0x2431b3][_0x26591b]['target']);}if(_0x16b8c4[_0x2932f9]===_0x37f168){return this[_0x826c('0xe')](this[_0x826c('0x6')][_0x2431b3][_0x26591b][_0x826c('0x18')],_0x2b15f2);}}}else{return this['traverseBFS'](this[_0x826c('0x6')][_0x2431b3][_0x26591b][_0x826c('0x18')],_0x2b15f2);}}if(_0x16b8c4['length']){if(this[_0x826c('0x5')][_0x2431b3]['agicommand']===_0x826c('0x16')){if(_0x1a704e){return this[_0x826c('0xe')](_0x1a704e,_0x2b15f2);}return logger[_0x826c('0xf')](_0x826c('0x19'));}else if(_[_0x826c('0x1a')](verticesWithRetry,this[_0x826c('0x5')][_0x2431b3][_0x826c('0x15')])){if(_0x37f168==='-'){return logger[_0x826c('0xf')](_0x826c('0x1b'));}if(_0x1a704e&&_0x37f168!=='t'){return this[_0x826c('0xe')](_0x1a704e,_0x2b15f2);}return this[_0x826c('0xe')](_0x2431b3,_0x2b15f2);}return logger['info'](_0x826c('0x1c'));}};module[_0x826c('0x1d')]=Graph;
\ No newline at end of file
index 629cb4f..ba6e9ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb52=['./rpc','./project','agi','127.0.0.1','projectUpdate','error','stack','deleted','splice','push','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','format','[%s]\x20%s','message','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','indexOf','agi_','substring','debug','stringify','close','timeout','evtHangup','hangup','find','handleUnpublished','initialize','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/license/util'];(function(_0x464998,_0x234740){var _0x3306d7=function(_0x3e63ad){while(--_0x3e63ad){_0x464998['push'](_0x464998['shift']());}};_0x3306d7(++_0x234740);}(_0xfb52,0x1c7));var _0x2fb5=function(_0x317ea2,_0x32c0a5){_0x317ea2=_0x317ea2-0x0;var _0x4541bf=_0xfb52[_0x317ea2];return _0x4541bf;};'use strict';var _=require('lodash');var syncho=require(_0x2fb5('0x0'));var util=require(_0x2fb5('0x1'));var config=require(_0x2fb5('0x2'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x2fb5('0x3'));var rpc=require(_0x2fb5('0x4'));var Project=require(_0x2fb5('0x5'));var AGIEmitter=require('./events')['EventEmitter'];var projects=[];config[_0x2fb5('0x6')]=_['defaults'](config[_0x2fb5('0x6')],{'ip':_0x2fb5('0x7'),'port':0x11dd});AGIEmitter['on'](_0x2fb5('0x8'),projectUpdateHandler);function connectionHandler(_0x3e020d){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x3e020d);agiHandler(_0x3e020d);}catch(_0x4e0180){logger[_0x2fb5('0x9')](_0x4e0180[_0x2fb5('0xa')]);}});});}function projectUpdateHandler(_0x5ad80e){try{var _0x110fd0=_['findIndex'](projects,['id',_0x5ad80e['id']]);if(_0x110fd0>-0x1){if(_0x5ad80e[_0x2fb5('0xb')]===!![]){projects[_0x2fb5('0xc')](_0x110fd0,0x1);}else{projects[_0x110fd0]=_0x5ad80e;}}else{projects[_0x2fb5('0xd')](_0x5ad80e);}}catch(_0x4f66b7){logger[_0x2fb5('0x9')](_0x4f66b7[_0x2fb5('0xa')]);}}function listeningHandler(){console['log']('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0x2fb5('0xe')]);logger[_0x2fb5('0xf')](util['format'](_0x2fb5('0x10'),config[_0x2fb5('0x6')]['ip'],config[_0x2fb5('0x6')][_0x2fb5('0xe')]));}function errorHandler(_0xd850e6){if(_0xd850e6&&_0xd850e6[_0x2fb5('0x11')]&&_0xd850e6['message']){logger[_0x2fb5('0x9')](util[_0x2fb5('0x12')](_0x2fb5('0x13'),_0xd850e6[_0x2fb5('0x11')],_0xd850e6[_0x2fb5('0x14')]));}else{logger['error'](util['format']('[ERROR]\x20%s',_0xd850e6[_0x2fb5('0xa')]));}}function closeHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x2fb5('0x15')],this[_0x2fb5('0x16')],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));try{createSquareReport(this);}catch(_0x4474bc){logger['error'](_0x4474bc[_0x2fb5('0xa')]);}}function timeoutHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x1a'),this[_0x2fb5('0x15')],this[_0x2fb5('0x16')],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));}function hangupHandler(){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x1b'),this[_0x2fb5('0x15')],this['calleridname'],this[_0x2fb5('0x17')],this[_0x2fb5('0x18')],this[_0x2fb5('0x19')]));this['evtHangup']=!![];}function createSquareReport(_0x575ac,_0x30e660){rpc[_0x2fb5('0x1c')](_0x575ac)[_0x2fb5('0x1d')](function(_0xa3b1f9){if(_0x30e660){_0x30e660(null,_0xa3b1f9);}})['catch'](function(_0x19b674){if(_0x30e660){_0x30e660(null,_0x19b674);}});}function setChannelVariables(_0x2e7438){for(var _0x4e6442 in _0x2e7438){if(_0x2e7438['hasOwnProperty'](_0x4e6442)){if(_0x4e6442[_0x2fb5('0x1e')](_0x2fb5('0x1f'))===0x0){_0x2e7438[_0x4e6442[_0x2fb5('0x20')](0x4)]=_0x2e7438[_0x4e6442];delete _0x2e7438[_0x4e6442];}}}}function agiHandler(_0x12ffc7){logger[_0x2fb5('0x21')]('variables',JSON[_0x2fb5('0x22')](_0x12ffc7,null,0x2));logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x12ffc7['arg_1'],_0x12ffc7[_0x2fb5('0x16')],_0x12ffc7[_0x2fb5('0x17')],_0x12ffc7['dnid'],_0x12ffc7[_0x2fb5('0x19')]));_0x12ffc7['on'](_0x2fb5('0x9'),errorHandler);_0x12ffc7['on'](_0x2fb5('0x23'),closeHandler);_0x12ffc7['on'](_0x2fb5('0x24'),timeoutHandler);_0x12ffc7[_0x2fb5('0x25')]=![];_0x12ffc7['on'](_0x2fb5('0x26'),hangupHandler);var _0x50a47f=_[_0x2fb5('0x27')](projects,[_0x2fb5('0x11'),_0x12ffc7[_0x2fb5('0x15')]]);if(!_0x50a47f)return Project['handleNotFound'](_0x12ffc7);if(!_0x50a47f['production'])return Project[_0x2fb5('0x28')](_0x12ffc7);return Project[_0x2fb5('0x29')](_0x50a47f,_0x12ffc7);}function main(){var _0x5f9b49;return utilLicense['getLicense']()[_0x2fb5('0x1d')](function(_0x4a5398){if(!_0x4a5398)return;if(_0x4a5398['voice']){if(_0x4a5398[_0x2fb5('0x2a')]&&_0x4a5398[_0x2fb5('0x2a')]>0x0){logger[_0x2fb5('0xf')](util[_0x2fb5('0x12')](_0x2fb5('0x2b'),_0x4a5398[_0x2fb5('0x2a')]));_0x5f9b49=_0x4a5398[_0x2fb5('0x2a')];}else{logger[_0x2fb5('0xf')](_0x2fb5('0x2c'));}}else{logger['info'](_0x2fb5('0x2d'));_0x5f9b49=-0x1;}})['then'](function(){return Project[_0x2fb5('0x2e')]();})['then'](function(_0x3a426a){projects=_0x3a426a;return;})['catch'](function(_0x54adc7){logger[_0x2fb5('0x9')]('[LICENSE]',_0x54adc7['stack']);})[_0x2fb5('0x2f')](function(){var _0x148135=require(_0x2fb5('0x30'))(config[_0x2fb5('0x6')][_0x2fb5('0xe')],config[_0x2fb5('0x6')]['ip'],_0x5f9b49);_0x148135['on']('error',errorHandler);_0x148135['on'](_0x2fb5('0x31'),listeningHandler);_0x148135['on'](_0x2fb5('0x32'),connectionHandler);_0x148135['on'](_0x2fb5('0x23'),closeHandler);});}main();
\ No newline at end of file
+var _0x6640=['catch','hasOwnProperty','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','find','handleNotFound','production','handleUnpublished','initialize','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','findIndex','deleted','push','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','evtHangup','createSquareReport','then'];(function(_0x334030,_0x4afed6){var _0x262caf=function(_0x4dd48e){while(--_0x4dd48e){_0x334030['push'](_0x334030['shift']());}};_0x262caf(++_0x4afed6);}(_0x6640,0x1a5));var _0x0664=function(_0x5e1b91,_0x236f17){_0x5e1b91=_0x5e1b91-0x0;var _0x59b52f=_0x6640[_0x5e1b91];return _0x59b52f;};'use strict';var _=require('lodash');var syncho=require(_0x0664('0x0'));var util=require(_0x0664('0x1'));var config=require(_0x0664('0x2'));var logger=require(_0x0664('0x3'))(_0x0664('0x4'));var utilLicense=require(_0x0664('0x5'));var rpc=require(_0x0664('0x6'));var Project=require('./project');var AGIEmitter=require('./events')[_0x0664('0x7')];var projects=[];config['agi']=_[_0x0664('0x8')](config[_0x0664('0x4')],{'ip':_0x0664('0x9'),'port':0x11dd});AGIEmitter['on'](_0x0664('0xa'),projectUpdateHandler);function connectionHandler(_0x195739){process[_0x0664('0xb')](function(){syncho(function(){try{setChannelVariables(_0x195739);agiHandler(_0x195739);}catch(_0x4930ea){logger['error'](_0x4930ea['stack']);}});});}function projectUpdateHandler(_0x369cc8){try{var _0x36ac45=_[_0x0664('0xc')](projects,['id',_0x369cc8['id']]);if(_0x36ac45>-0x1){if(_0x369cc8[_0x0664('0xd')]===!![]){projects['splice'](_0x36ac45,0x1);}else{projects[_0x36ac45]=_0x369cc8;}}else{projects[_0x0664('0xe')](_0x369cc8);}}catch(_0x59ad1a){logger['error'](_0x59ad1a[_0x0664('0xf')]);}}function listeningHandler(){console['log'](_0x0664('0x10'),config[_0x0664('0x4')][_0x0664('0x11')]);logger[_0x0664('0x12')](util[_0x0664('0x13')](_0x0664('0x14'),config[_0x0664('0x4')]['ip'],config['agi'][_0x0664('0x11')]));}function errorHandler(_0x2cb362){if(_0x2cb362&&_0x2cb362[_0x0664('0x15')]&&_0x2cb362[_0x0664('0x16')]){logger[_0x0664('0x17')](util[_0x0664('0x13')](_0x0664('0x18'),_0x2cb362[_0x0664('0x15')],_0x2cb362['message']));}else{logger[_0x0664('0x17')](util[_0x0664('0x13')]('[ERROR]\x20%s',_0x2cb362[_0x0664('0xf')]));}}function closeHandler(){logger[_0x0664('0x12')](util[_0x0664('0x13')](_0x0664('0x19'),this[_0x0664('0x1a')],this[_0x0664('0x1b')],this[_0x0664('0x1c')],this['dnid'],this[_0x0664('0x1d')]));try{createSquareReport(this);}catch(_0x40f3fb){logger['error'](_0x40f3fb['stack']);}}function timeoutHandler(){logger[_0x0664('0x12')](util[_0x0664('0x13')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x0664('0x1a')],this[_0x0664('0x1b')],this[_0x0664('0x1c')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0x0664('0x12')](util[_0x0664('0x13')](_0x0664('0x1e'),this[_0x0664('0x1a')],this[_0x0664('0x1b')],this[_0x0664('0x1c')],this[_0x0664('0x1f')],this[_0x0664('0x1d')]));this[_0x0664('0x20')]=!![];}function createSquareReport(_0x428540,_0x578f04){rpc[_0x0664('0x21')](_0x428540)[_0x0664('0x22')](function(_0xb22b5e){if(_0x578f04){_0x578f04(null,_0xb22b5e);}})[_0x0664('0x23')](function(_0x3515a1){if(_0x578f04){_0x578f04(null,_0x3515a1);}});}function setChannelVariables(_0xaf5538){for(var _0x1bf02e in _0xaf5538){if(_0xaf5538[_0x0664('0x24')](_0x1bf02e)){if(_0x1bf02e['indexOf']('agi_')===0x0){_0xaf5538[_0x1bf02e[_0x0664('0x25')](0x4)]=_0xaf5538[_0x1bf02e];delete _0xaf5538[_0x1bf02e];}}}}function agiHandler(_0x21c055){logger[_0x0664('0x26')](_0x0664('0x27'),JSON['stringify'](_0x21c055,null,0x2));logger['info'](util[_0x0664('0x13')](_0x0664('0x28'),_0x21c055[_0x0664('0x1a')],_0x21c055['calleridname'],_0x21c055['callerid'],_0x21c055['dnid'],_0x21c055[_0x0664('0x1d')]));_0x21c055['on'](_0x0664('0x17'),errorHandler);_0x21c055['on'](_0x0664('0x29'),closeHandler);_0x21c055['on'](_0x0664('0x2a'),timeoutHandler);_0x21c055[_0x0664('0x20')]=![];_0x21c055['on']('hangup',hangupHandler);var _0x253374=_[_0x0664('0x2b')](projects,[_0x0664('0x15'),_0x21c055[_0x0664('0x1a')]]);if(!_0x253374)return Project[_0x0664('0x2c')](_0x21c055);if(!_0x253374[_0x0664('0x2d')])return Project[_0x0664('0x2e')](_0x21c055);return Project[_0x0664('0x2f')](_0x253374,_0x21c055);}function main(){var _0x32b717;return utilLicense['getLicense']()[_0x0664('0x22')](function(_0xb80c25){if(!_0xb80c25)return;if(_0xb80c25['voice']){if(_0xb80c25['callysquare']&&_0xb80c25[_0x0664('0x30')]>0x0){logger[_0x0664('0x12')](util[_0x0664('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0xb80c25[_0x0664('0x30')]));_0x32b717=_0xb80c25[_0x0664('0x30')];}else{logger[_0x0664('0x12')](_0x0664('0x31'));}}else{logger[_0x0664('0x12')](_0x0664('0x32'));_0x32b717=-0x1;}})['then'](function(){return Project[_0x0664('0x33')]();})[_0x0664('0x22')](function(_0x6a9179){projects=_0x6a9179;return;})[_0x0664('0x23')](function(_0x21477b){logger['error'](_0x0664('0x34'),_0x21477b[_0x0664('0xf')]);})[_0x0664('0x35')](function(){var _0x51f524=require(_0x0664('0x36'))(config[_0x0664('0x4')]['port'],config['agi']['ip'],_0x32b717);_0x51f524['on']('error',errorHandler);_0x51f524['on'](_0x0664('0x37'),listeningHandler);_0x51f524['on'](_0x0664('0x38'),connectionHandler);_0x51f524['on'](_0x0664('0x29'),closeHandler);});}main();
\ No newline at end of file
index b80edf9..c170c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06be=['bluebird','jayson/promise','client','http','then','error','message','catch','sendMailMessage'];(function(_0x8bb4c1,_0x2d6e53){var _0x67a6e1=function(_0x1155e5){while(--_0x1155e5){_0x8bb4c1['push'](_0x8bb4c1['shift']());}};_0x67a6e1(++_0x2d6e53);}(_0x06be,0xfc));var _0xe06b=function(_0x268228,_0x2fbc20){_0x268228=_0x268228-0x0;var _0x1bb11a=_0x06be[_0x268228];return _0x1bb11a;};'use strict';var BPromise=require(_0xe06b('0x0'));var jayson=require(_0xe06b('0x1'));var client=jayson[_0xe06b('0x2')][_0xe06b('0x3')]({'port':0x232b});function request(_0x20eea0,_0x3b6c9d){return new BPromise(function(_0x27dabf,_0x448a93){return client['request'](_0x20eea0,_0x3b6c9d)[_0xe06b('0x4')](function(_0x7481cb){if(_0x7481cb[_0xe06b('0x5')]){return _0x448a93(_0x7481cb['error'][_0xe06b('0x6')]);}else{return _0x27dabf(_0x7481cb['result']);}})[_0xe06b('0x7')](function(_0x335132){return _0x448a93(_0x335132);});});}exports[_0xe06b('0x8')]=function(_0x1e96db,_0x52cf5a){return request('SendMail',{'account':_0x1e96db,'message':_0x52cf5a});};
\ No newline at end of file
+var _0xa6bb=['error','result','SendMail','bluebird','client','http','request','then'];(function(_0xb18344,_0x325f20){var _0x571c4d=function(_0x35d680){while(--_0x35d680){_0xb18344['push'](_0xb18344['shift']());}};_0x571c4d(++_0x325f20);}(_0xa6bb,0x1eb));var _0xba6b=function(_0x2e1213,_0x109ac4){_0x2e1213=_0x2e1213-0x0;var _0x45af55=_0xa6bb[_0x2e1213];return _0x45af55;};'use strict';var BPromise=require(_0xba6b('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xba6b('0x1')][_0xba6b('0x2')]({'port':0x232b});function request(_0x2eee5c,_0x1f4d8f){return new BPromise(function(_0x3bc01f,_0x1e58e1){return client[_0xba6b('0x3')](_0x2eee5c,_0x1f4d8f)[_0xba6b('0x4')](function(_0x529dcf){if(_0x529dcf['error']){return _0x1e58e1(_0x529dcf[_0xba6b('0x5')]['message']);}else{return _0x3bc01f(_0x529dcf[_0xba6b('0x6')]);}})['catch'](function(_0x53afc6){return _0x1e58e1(_0x53afc6);});});}exports['sendMailMessage']=function(_0x40a165,_0x536dbf){return request(_0xba6b('0x7'),{'account':_0x40a165,'message':_0x536dbf});};
\ No newline at end of file
index b13f4ae..e6db9aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9272=['stringify','joinAt','format','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','evtHangup','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','isUndefined','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','close','Project\x20%s\x20not\x20published','exports','lodash','xml2json','../../config/logger','./rpc','./mailRpc','./graph','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','retry','addVertex','omit','mxCell','length','source','target','addEdge','value','toJson','mxGraphModel','root','production','start','debug'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x9272,0xd9));var _0x2927=function(_0x2a4372,_0xdd2087){_0x2a4372=_0x2a4372-0x0;var _0x32d206=_0x9272[_0x2a4372];return _0x32d206;};'use strict';var _=require(_0x2927('0x0'));var moment=require('moment');var parser=require(_0x2927('0x1'));var util=require('util');var logger=require(_0x2927('0x2'))('agi');var rpc=require(_0x2927('0x3'));var mailRpc=require(_0x2927('0x4'));var Graph=require(_0x2927('0x5'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x2927('0x6')]()[_0x2927('0x7')](function(_0x4c32c0){logger[_0x2927('0x8')](_0x2927('0x9'),_0x4c32c0[_0x2927('0xa')]);return[];});}function addVertex(_0x1f115d,_0x2aca84,_0x4db049){_0x2aca84['agicommand']=_0x4db049;if(_0x2aca84[_0x2927('0xb')]('retry')){_0x2aca84['maxRetry']=parseInt(_0x2aca84[_0x2927('0xc')],0xa);}_0x1f115d[_0x2927('0xd')](_[_0x2927('0xe')](_0x2aca84,_0x2927('0xf')));}function initGraph(_0x114671,_0xcb8cd2){var _0xb06b=new Graph();for(var _0x11f263 in _0x114671){if(_0x114671[_0x2927('0xb')](_0x11f263)){if(_['isArray'](_0x114671[_0x11f263])){for(var _0x39b174=0x0;_0x39b174<_0x114671[_0x11f263][_0x2927('0x10')];_0x39b174+=0x1){addVertex(_0xb06b,_0x114671[_0x11f263][_0x39b174],_0x11f263);}}else{addVertex(_0xb06b,_0x114671[_0x11f263],_0x11f263);}}}for(var _0x7676b9=0x0;_0x7676b9<_0xcb8cd2['length'];_0x7676b9+=0x1){if(_0xcb8cd2[_0x7676b9][_0x2927('0x11')]&&_0xcb8cd2[_0x7676b9][_0x2927('0x12')]){_0xb06b[_0x2927('0x13')](_0xcb8cd2[_0x7676b9][_0x2927('0x11')],_0xcb8cd2[_0x7676b9][_0x2927('0x12')],_0xcb8cd2[_0x7676b9][_0x2927('0x14')]);}}return _0xb06b;}function getRoot(_0x4d2bf4){return parser[_0x2927('0x15')](_0x4d2bf4,{'object':!![]})[_0x2927('0x16')][_0x2927('0x17')];}function inspect(_0x4fdde8){return util['inspect'](_0x4fdde8,{'showHidden':![],'depth':null});}function initialize(_0x3ac690,_0x283f75){var _0x2f3b05=getRoot(_0x3ac690[_0x2927('0x18')]);if(!_0x2f3b05||!_0x2f3b05[_0x2927('0x19')])return;var _0x4006b2,_0x9fe6c6,_0x2338da;logger[_0x2927('0x1a')]('root',JSON[_0x2927('0x1b')](_0x2f3b05,null,0x2));_0x283f75[_0x2927('0x1c')]=moment()[_0x2927('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4006b2=initGraph(_[_0x2927('0xe')](_0x2f3b05,_0x2927('0xf')),_0x2f3b05[_0x2927('0xf')]);_0x9fe6c6=new Vertices(_0x283f75,rpc,mailRpc);logger['info'](util['format'](_0x2927('0x1e'),_0x283f75[_0x2927('0x1f')],_0x283f75[_0x2927('0x20')],_0x283f75[_0x2927('0x21')],_0x283f75[_0x2927('0x22')],_0x283f75[_0x2927('0x23')]));_0x4006b2[_0x2927('0x24')](_0x2f3b05[_0x2927('0x19')]['id'],function(_0x2c8bb2){try{_0x2c8bb2=_0x9fe6c6[_0x2927('0x25')](_0x2c8bb2);logger[_0x2927('0x1a')](_0x2927('0x26'),JSON[_0x2927('0x1b')](_0x2c8bb2,null,0x2));if(_0x2c8bb2[_0x2927('0x27')]===_0x2927('0x28')){logger[_0x2927('0x29')](_0x2927('0x2a'));_0x283f75[_0x2927('0x2b')]=_0x2c8bb2[_0x2927('0x2b')]||_0x283f75[_0x2927('0x2b')];_0x283f75[_0x2927('0x2c')]=_0x2c8bb2[_0x2927('0x2c')];_0x283f75[_0x2927('0x2d')]=_0x2c8bb2['priority']?_0x2c8bb2[_0x2927('0x2d')]-0x1:0x1;return null;}else if(_0x2c8bb2&&_0x9fe6c6[_0x2c8bb2[_0x2927('0x27')]]){_0x2338da=_0x9fe6c6[_0x2c8bb2[_0x2927('0x27')]](_0x2c8bb2);logger[_0x2927('0x29')](_0x2927('0x2e'),JSON['stringify'](_0x2338da,null,0x2));if(_0x2338da&&_0x2338da[_0x2927('0x2f')]===AGI_CODE_SUCCESS&&_0x2338da[_0x2927('0x30')]!==AGI_RESULT_ERROR&&!_0x283f75[_0x2927('0x31')]){logger[_0x2927('0x1a')]('response',inspect(_0x2338da));return _['isUndefined'](_0x2338da[_0x2927('0x30')])?null:_0x2338da['result'][_0x2927('0x32')]();}else{logger[_0x2927('0x8')](_0x2927('0x2e'),inspect(_0x2338da));return null;}}else{logger['error'](_0x2927('0x33'));return null;}}catch(_0x2f581b){logger['error'](_0x2f581b['stack']);return null;}});if(_0x2f3b05[_0x2927('0x34')]){logger[_0x2927('0x29')](util[_0x2927('0x1d')](_0x2927('0x35'),_0x283f75['arg_1'],_0x283f75[_0x2927('0x20')],_0x283f75[_0x2927('0x21')],_0x283f75['dnid'],_0x283f75[_0x2927('0x23')]));_0x4006b2['traverseBFS'](_0x2f3b05[_0x2927('0x34')]['id'],function(_0x25b65b){try{_0x25b65b=_0x9fe6c6[_0x2927('0x25')](_0x25b65b);logger[_0x2927('0x1a')]('vertex',JSON[_0x2927('0x1b')](_0x25b65b,null,0x2));if(_0x25b65b&&_0x9fe6c6[_0x25b65b[_0x2927('0x27')]]){_0x2338da=_0x9fe6c6[_0x25b65b[_0x2927('0x27')]](_0x25b65b);if(_0x2338da){logger[_0x2927('0x1a')]('response',inspect(_0x2338da));return _[_0x2927('0x36')](_0x2338da['result'])?null:_0x2338da[_0x2927('0x30')][_0x2927('0x32')]();}else{logger['error'](_0x2927('0x2e'),inspect(_0x2338da));return null;}}else{logger['error'](_0x2927('0x33'));return null;}}catch(_0x47ac6d){logger[_0x2927('0x8')](_0x47ac6d[_0x2927('0xa')]);return null;}});}logger['info'](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x283f75[_0x2927('0x1f')],_0x283f75['calleridname'],_0x283f75[_0x2927('0x21')],_0x283f75[_0x2927('0x22')],_0x283f75[_0x2927('0x23')]));logger[_0x2927('0x29')](util[_0x2927('0x1d')](_0x2927('0x37'),_0x283f75[_0x2927('0x2b')],_0x283f75[_0x2927('0x2c')],parseInt(_0x283f75[_0x2927('0x2d')],0xa)+0x1));_0x283f75[_0x2927('0x38')](_0x283f75[_0x2927('0x2b')],_0x283f75[_0x2927('0x2c')],parseInt(_0x283f75['priority'],0xa)+0x1);_0x283f75['close']();}function handleNotFound(_0x56e47){logger['error'](util[_0x2927('0x1d')](_0x2927('0x39'),_0x56e47[_0x2927('0x1f')]));_0x56e47['continueAt'](_0x56e47[_0x2927('0x2b')],_0x56e47[_0x2927('0x2c')],parseInt(_0x56e47[_0x2927('0x2d')],0xa)+0x1);_0x56e47[_0x2927('0x3a')]();}function handleUnpublished(_0x45cf08){logger[_0x2927('0x8')](util[_0x2927('0x1d')](_0x2927('0x3b'),_0x45cf08[_0x2927('0x1f')]));_0x45cf08[_0x2927('0x38')](_0x45cf08[_0x2927('0x2b')],_0x45cf08[_0x2927('0x2c')],parseInt(_0x45cf08[_0x2927('0x2d')],0xa)+0x1);_0x45cf08[_0x2927('0x3a')]();}module[_0x2927('0x3c')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x636a=['debug','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','omit','info','arg_1','calleridname','dnid','uniqueid','traverseBFS','clear','vertex','gotoc','context','extension','priority','response','code','result','evtHangup','toString','agicommand\x20not\x20found','finally','callerid','isUndefined','[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','exports','lodash','moment','xml2json','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','hasOwnProperty','retry','addVertex','mxCell','isArray','length','source','target','addEdge','value','toJson','root','inspect','production','start'];(function(_0x1a4208,_0x274a31){var _0x37e1e1=function(_0x431497){while(--_0x431497){_0x1a4208['push'](_0x1a4208['shift']());}};_0x37e1e1(++_0x274a31);}(_0x636a,0xa0));var _0xa636=function(_0x2416b2,_0x134439){_0x2416b2=_0x2416b2-0x0;var _0x159c30=_0x636a[_0x2416b2];return _0x159c30;};'use strict';var _=require(_0xa636('0x0'));var moment=require(_0xa636('0x1'));var parser=require(_0xa636('0x2'));var util=require('util');var logger=require('../../config/logger')(_0xa636('0x3'));var rpc=require(_0xa636('0x4'));var mailRpc=require(_0xa636('0x5'));var Graph=require(_0xa636('0x6'));var Vertices=require(_0xa636('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xa636('0x8')]()[_0xa636('0x9')](function(_0x3afcf4){logger[_0xa636('0xa')](_0xa636('0xb'),_0x3afcf4[_0xa636('0xc')]);return[];});}function addVertex(_0x40d68e,_0x4f5e0a,_0x4ffc7d){_0x4f5e0a[_0xa636('0xd')]=_0x4ffc7d;if(_0x4f5e0a[_0xa636('0xe')]('retry')){_0x4f5e0a['maxRetry']=parseInt(_0x4f5e0a[_0xa636('0xf')],0xa);}_0x40d68e[_0xa636('0x10')](_['omit'](_0x4f5e0a,_0xa636('0x11')));}function initGraph(_0x56d36c,_0x4c533d){var _0x439f22=new Graph();for(var _0x448eec in _0x56d36c){if(_0x56d36c['hasOwnProperty'](_0x448eec)){if(_[_0xa636('0x12')](_0x56d36c[_0x448eec])){for(var _0x8b2b97=0x0;_0x8b2b97<_0x56d36c[_0x448eec][_0xa636('0x13')];_0x8b2b97+=0x1){addVertex(_0x439f22,_0x56d36c[_0x448eec][_0x8b2b97],_0x448eec);}}else{addVertex(_0x439f22,_0x56d36c[_0x448eec],_0x448eec);}}}for(var _0x2a5e01=0x0;_0x2a5e01<_0x4c533d[_0xa636('0x13')];_0x2a5e01+=0x1){if(_0x4c533d[_0x2a5e01][_0xa636('0x14')]&&_0x4c533d[_0x2a5e01][_0xa636('0x15')]){_0x439f22[_0xa636('0x16')](_0x4c533d[_0x2a5e01]['source'],_0x4c533d[_0x2a5e01][_0xa636('0x15')],_0x4c533d[_0x2a5e01][_0xa636('0x17')]);}}return _0x439f22;}function getRoot(_0x534cf7){return parser[_0xa636('0x18')](_0x534cf7,{'object':!![]})['mxGraphModel'][_0xa636('0x19')];}function inspect(_0x34ce64){return util[_0xa636('0x1a')](_0x34ce64,{'showHidden':![],'depth':null});}function initialize(_0x242a19,_0x407c6c){var _0x556f82=getRoot(_0x242a19[_0xa636('0x1b')]);if(!_0x556f82||!_0x556f82[_0xa636('0x1c')])return;var _0x53e363,_0xc443a1,_0x4f7d92;logger[_0xa636('0x1d')](_0xa636('0x19'),JSON[_0xa636('0x1e')](_0x556f82,null,0x2));_0x407c6c[_0xa636('0x1f')]=moment()[_0xa636('0x20')](_0xa636('0x21'));_0x53e363=initGraph(_[_0xa636('0x22')](_0x556f82,_0xa636('0x11')),_0x556f82[_0xa636('0x11')]);_0xc443a1=new Vertices(_0x407c6c,rpc,mailRpc);logger[_0xa636('0x23')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x407c6c[_0xa636('0x24')],_0x407c6c[_0xa636('0x25')],_0x407c6c['callerid'],_0x407c6c[_0xa636('0x26')],_0x407c6c[_0xa636('0x27')]));_0x53e363[_0xa636('0x28')](_0x556f82['start']['id'],function(_0x5bf5d7){try{_0x5bf5d7=_0xc443a1[_0xa636('0x29')](_0x5bf5d7);logger[_0xa636('0x1d')](_0xa636('0x2a'),JSON[_0xa636('0x1e')](_0x5bf5d7,null,0x2));if(_0x5bf5d7[_0xa636('0xd')]===_0xa636('0x2b')){logger[_0xa636('0x23')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x407c6c[_0xa636('0x2c')]=_0x5bf5d7[_0xa636('0x2c')]||_0x407c6c['context'];_0x407c6c['extension']=_0x5bf5d7[_0xa636('0x2d')];_0x407c6c[_0xa636('0x2e')]=_0x5bf5d7[_0xa636('0x2e')]?_0x5bf5d7[_0xa636('0x2e')]-0x1:0x1;return null;}else if(_0x5bf5d7&&_0xc443a1[_0x5bf5d7[_0xa636('0xd')]]){_0x4f7d92=_0xc443a1[_0x5bf5d7[_0xa636('0xd')]](_0x5bf5d7);logger[_0xa636('0x23')](_0xa636('0x2f'),JSON[_0xa636('0x1e')](_0x4f7d92,null,0x2));if(_0x4f7d92&&_0x4f7d92[_0xa636('0x30')]===AGI_CODE_SUCCESS&&_0x4f7d92[_0xa636('0x31')]!==AGI_RESULT_ERROR&&!_0x407c6c[_0xa636('0x32')]){logger['debug'](_0xa636('0x2f'),inspect(_0x4f7d92));return _['isUndefined'](_0x4f7d92[_0xa636('0x31')])?null:_0x4f7d92['result'][_0xa636('0x33')]();}else{logger[_0xa636('0xa')](_0xa636('0x2f'),inspect(_0x4f7d92));return null;}}else{logger[_0xa636('0xa')](_0xa636('0x34'));return null;}}catch(_0x44f10b){logger['error'](_0x44f10b[_0xa636('0xc')]);return null;}});if(_0x556f82[_0xa636('0x35')]){logger[_0xa636('0x23')](util[_0xa636('0x20')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x407c6c[_0xa636('0x24')],_0x407c6c[_0xa636('0x25')],_0x407c6c[_0xa636('0x36')],_0x407c6c[_0xa636('0x26')],_0x407c6c['uniqueid']));_0x53e363[_0xa636('0x28')](_0x556f82[_0xa636('0x35')]['id'],function(_0x449bea){try{_0x449bea=_0xc443a1['clear'](_0x449bea);logger[_0xa636('0x1d')](_0xa636('0x2a'),JSON[_0xa636('0x1e')](_0x449bea,null,0x2));if(_0x449bea&&_0xc443a1[_0x449bea[_0xa636('0xd')]]){_0x4f7d92=_0xc443a1[_0x449bea['agicommand']](_0x449bea);if(_0x4f7d92){logger[_0xa636('0x1d')](_0xa636('0x2f'),inspect(_0x4f7d92));return _[_0xa636('0x37')](_0x4f7d92[_0xa636('0x31')])?null:_0x4f7d92['result'][_0xa636('0x33')]();}else{logger[_0xa636('0xa')]('response',inspect(_0x4f7d92));return null;}}else{logger[_0xa636('0xa')](_0xa636('0x34'));return null;}}catch(_0x4c5159){logger['error'](_0x4c5159[_0xa636('0xc')]);return null;}});}logger[_0xa636('0x23')](util['format'](_0xa636('0x38'),_0x407c6c[_0xa636('0x24')],_0x407c6c[_0xa636('0x25')],_0x407c6c['callerid'],_0x407c6c['dnid'],_0x407c6c['uniqueid']));logger[_0xa636('0x23')](util[_0xa636('0x20')](_0xa636('0x39'),_0x407c6c[_0xa636('0x2c')],_0x407c6c[_0xa636('0x2d')],parseInt(_0x407c6c[_0xa636('0x2e')],0xa)+0x1));_0x407c6c[_0xa636('0x3a')](_0x407c6c[_0xa636('0x2c')],_0x407c6c[_0xa636('0x2d')],parseInt(_0x407c6c[_0xa636('0x2e')],0xa)+0x1);_0x407c6c[_0xa636('0x3b')]();}function handleNotFound(_0x1f045f){logger[_0xa636('0xa')](util[_0xa636('0x20')](_0xa636('0x3c'),_0x1f045f[_0xa636('0x24')]));_0x1f045f[_0xa636('0x3a')](_0x1f045f[_0xa636('0x2c')],_0x1f045f[_0xa636('0x2d')],parseInt(_0x1f045f['priority'],0xa)+0x1);_0x1f045f[_0xa636('0x3b')]();}function handleUnpublished(_0x51c3f3){logger[_0xa636('0xa')](util[_0xa636('0x20')](_0xa636('0x3d'),_0x51c3f3[_0xa636('0x24')]));_0x51c3f3['continueAt'](_0x51c3f3[_0xa636('0x2c')],_0x51c3f3['extension'],parseInt(_0x51c3f3[_0xa636('0x2e')],0xa)+0x1);_0x51c3f3[_0xa636('0x3b')]();}module[_0xa636('0x3e')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index b371fe6..d6e5789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5a4=['headers','line','exports','stream','Transform','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','substring','length','split','indexOf','slice','trim','emit'];(function(_0x210eae,_0x1a6007){var _0x11e4b6=function(_0x94a8de){while(--_0x94a8de){_0x210eae['push'](_0x210eae['shift']());}};_0x11e4b6(++_0x1a6007);}(_0xb5a4,0x17d));var _0x4b5a=function(_0x18fba8,_0x52ea05){_0x18fba8=_0x18fba8-0x0;var _0x48e89e=_0xb5a4[_0x18fba8];return _0x48e89e;};'use strict';var util=require('util');var Transform=require(_0x4b5a('0x0'))[_0x4b5a('0x1')];function AGIReply(_0x8488d8){Transform['call'](this,_0x8488d8);this[_0x4b5a('0x2')]='';this[_0x4b5a('0x3')]=![];}util[_0x4b5a('0x4')](AGIReply,Transform);AGIReply[_0x4b5a('0x5')][_0x4b5a('0x6')]=function(_0x1e7cff,_0x77e8b5,_0x812564){var _0x19a98a='\x0a',_0x56d278=['\x0a\x0a',_0x4b5a('0x7')],_0x2b3d11=-0x1,_0xa18b37=-0x1,_0x6be522='',_0x30fada=0x0,_0x380c48='',_0x15797c='';this[_0x4b5a('0x2')]+=_0x1e7cff['toString']();_0x380c48=this[_0x4b5a('0x2')];if(!this['_inBody']){_0x30fada=0x0;while(_0x56d278[_0x30fada]){while((_0xa18b37=_0x380c48['indexOf'](_0x56d278[_0x30fada]))!=-0x1){_0x6be522=_0x56d278[_0x30fada];_0x15797c=_0x380c48[_0x4b5a('0x8')](0x0,_0xa18b37);_0x380c48=_0x380c48['substring'](_0xa18b37+_0x6be522[_0x4b5a('0x9')]);var _0x460180=_0x15797c[_0x4b5a('0xa')](_0x19a98a),_0x3c85bc=0x0,_0x4dd1e0={},_0x4f7256='',_0x44c655='',_0x1a8c0d=-0x1;while(_0x460180[_0x3c85bc]){_0x1a8c0d=_0x460180[_0x3c85bc][_0x4b5a('0xb')](':');if(_0x1a8c0d!=-0x1){_0x4f7256=_0x460180[_0x3c85bc][_0x4b5a('0xc')](0x0,_0x1a8c0d)[_0x4b5a('0xd')]();_0x44c655=_0x460180[_0x3c85bc]['slice'](_0x1a8c0d+0x1)['trim']();if(_0x4f7256[_0x4b5a('0x9')]>0x0){_0x4dd1e0[_0x4f7256]=_0x44c655;}}else{}_0x3c85bc++;}this[_0x4b5a('0xe')](_0x4b5a('0xf'),_0x4dd1e0);this['_inBody']=!![];}_0x30fada++;}this['_localBuffer']=_0x380c48;}else{while((_0x2b3d11=_0x380c48[_0x4b5a('0xb')](_0x19a98a))!=-0x1){_0x15797c=_0x380c48['substring'](0x0,_0x2b3d11);this[_0x4b5a('0xe')](_0x4b5a('0x10'),_0x15797c);_0x380c48=_0x380c48['substring'](_0x2b3d11+_0x19a98a[_0x4b5a('0x9')]);}this[_0x4b5a('0x2')]=_0x380c48;}_0x812564();};module[_0x4b5a('0x11')]=AGIReply;
\ No newline at end of file
+var _0x8248=['_localBuffer','_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','length','indexOf','slice','trim','emit','headers','substring','line','util','stream'];(function(_0x3b5a16,_0x59d9d7){var _0x49782b=function(_0x221b11){while(--_0x221b11){_0x3b5a16['push'](_0x3b5a16['shift']());}};_0x49782b(++_0x59d9d7);}(_0x8248,0x67));var _0x8824=function(_0x191f96,_0x5963d9){_0x191f96=_0x191f96-0x0;var _0x1af1df=_0x8248[_0x191f96];return _0x1af1df;};'use strict';var util=require(_0x8824('0x0'));var Transform=require(_0x8824('0x1'))['Transform'];function AGIReply(_0x44e44c){Transform['call'](this,_0x44e44c);this[_0x8824('0x2')]='';this[_0x8824('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x8824('0x4')][_0x8824('0x5')]=function(_0xae2916,_0x238779,_0x1ff98a){var _0xec76ee='\x0a',_0x118b0e=['\x0a\x0a',_0x8824('0x6')],_0x23cad4=-0x1,_0x1771ec=-0x1,_0x28c64f='',_0x5a1d76=0x0,_0x3ef58c='',_0x2118f5='';this['_localBuffer']+=_0xae2916['toString']();_0x3ef58c=this['_localBuffer'];if(!this[_0x8824('0x3')]){_0x5a1d76=0x0;while(_0x118b0e[_0x5a1d76]){while((_0x1771ec=_0x3ef58c['indexOf'](_0x118b0e[_0x5a1d76]))!=-0x1){_0x28c64f=_0x118b0e[_0x5a1d76];_0x2118f5=_0x3ef58c['substring'](0x0,_0x1771ec);_0x3ef58c=_0x3ef58c['substring'](_0x1771ec+_0x28c64f[_0x8824('0x7')]);var _0xd42ff=_0x2118f5['split'](_0xec76ee),_0x3573f6=0x0,_0x5e21e7={},_0x73cad2='',_0x4e28c7='',_0x458a3f=-0x1;while(_0xd42ff[_0x3573f6]){_0x458a3f=_0xd42ff[_0x3573f6][_0x8824('0x8')](':');if(_0x458a3f!=-0x1){_0x73cad2=_0xd42ff[_0x3573f6][_0x8824('0x9')](0x0,_0x458a3f)[_0x8824('0xa')]();_0x4e28c7=_0xd42ff[_0x3573f6][_0x8824('0x9')](_0x458a3f+0x1)[_0x8824('0xa')]();if(_0x73cad2[_0x8824('0x7')]>0x0){_0x5e21e7[_0x73cad2]=_0x4e28c7;}}else{}_0x3573f6++;}this[_0x8824('0xb')](_0x8824('0xc'),_0x5e21e7);this[_0x8824('0x3')]=!![];}_0x5a1d76++;}this[_0x8824('0x2')]=_0x3ef58c;}else{while((_0x23cad4=_0x3ef58c[_0x8824('0x8')](_0xec76ee))!=-0x1){_0x2118f5=_0x3ef58c[_0x8824('0xd')](0x0,_0x23cad4);this[_0x8824('0xb')](_0x8824('0xe'),_0x2118f5);_0x3ef58c=_0x3ef58c['substring'](_0x23cad4+_0xec76ee[_0x8824('0x7')]);}this['_localBuffer']=_0x3ef58c;}_0x1ff98a();};module['exports']=AGIReply;
\ No newline at end of file
index 9372cb4..455e34d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc978=['ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','arg_1','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','getPauseById','ShowPause','agentLogin','LoginUser','PauseUser','LogoutUser','lodash','moment','jayson/promise','client','http','request','then','error','result','catch','getSquareProjects','GetSquareProjects','name','production','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email','getVoiceQueueById','getVariableById'];(function(_0xc6ea5d,_0x14f0cb){var _0x3170f6=function(_0x48414b){while(--_0x48414b){_0xc6ea5d['push'](_0xc6ea5d['shift']());}};_0x3170f6(++_0x14f0cb);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8c97('0x0'));var moment=require(_0x8c97('0x1'));var jayson=require(_0x8c97('0x2'));var client=jayson[_0x8c97('0x3')][_0x8c97('0x4')]({'port':0x2329});function request(_0x44d4ea,_0x5ef47d){return new Promise(function(_0x23f5e9,_0x23c28d){return client[_0x8c97('0x5')](_0x44d4ea,_0x5ef47d)[_0x8c97('0x6')](function(_0x426a77){if(_0x426a77[_0x8c97('0x7')]){return _0x23c28d(_0x426a77[_0x8c97('0x7')]['message']);}else{return _0x23f5e9(_0x426a77[_0x8c97('0x8')]);}})[_0x8c97('0x9')](function(_0x332cd1){return _0x23c28d(_0x332cd1);});});}exports[_0x8c97('0xa')]=function(){return request(_0x8c97('0xb'),{'options':{'raw':![],'attributes':['id',_0x8c97('0xc'),_0x8c97('0xd')]}});};exports['getSquareProject']=function(_0x179342){return request(_0x8c97('0xe'),{'options':{'raw':![],'where':{'name':_0x179342},'attributes':[_0x8c97('0xd')]}});};exports[_0x8c97('0xf')]=function(_0x400eb6){return request(_0x8c97('0x10'),{'options':{'raw':![],'where':{'id':_0x400eb6},'include':[{'model':_0x8c97('0x11'),'as':_0x8c97('0x12'),'include':[{'model':_0x8c97('0x13'),'as':'CloudProvider'}]}],'attributes':['id',_0x8c97('0xc'),_0x8c97('0x14')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x31ae92){return request(_0x8c97('0xe'),{'options':{'where':{'id':_0x31ae92},'attributes':['name']}});};exports[_0x8c97('0x15')]=function(_0x4ec9cb){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x4ec9cb},'attributes':['name']}});};exports[_0x8c97('0x16')]=function(_0xab3812){return request(_0x8c97('0x17'),{'options':{'where':{'id':_0xab3812},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x18')]=function(_0x29767b){return request(_0x8c97('0x19'),{'options':{'where':{'id':_0x29767b},'attributes':[_0x8c97('0x1a')]}});};exports[_0x8c97('0x1b')]=function(_0x5edbc6){return request(_0x8c97('0x1c'),{'options':{'where':{'id':_0x5edbc6},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x1d')]=function(_0x3b57ed){return request(_0x8c97('0x1e'),{'options':{'where':{'phone':_0x3b57ed[_0x8c97('0x1f')]},'attributes':['id']}});};exports[_0x8c97('0x20')]=function(_0x400bbc){return request(_0x8c97('0x21'),{'options':{'where':{'id':_0x400bbc},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x22')]=function(_0xb55f9b){return request(_0x8c97('0x23'),{'options':{'where':{'id':_0xb55f9b},'attributes':[_0x8c97('0x24')]}});};exports[_0x8c97('0x25')]=function(_0x2b83a8){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x2b83a8},'include':[{'model':_0x8c97('0x26'),'as':_0x8c97('0x27')}]}});};exports[_0x8c97('0x28')]=function(_0x5ed5ba){return request('ShowSmsAccount',{'options':{'where':{'id':_0x5ed5ba},'attributes':['id',_0x8c97('0xc')]}});};exports['createSmsMessage']=function(_0x41d276){return request(_0x8c97('0x29'),{'body':_0x41d276});};exports[_0x8c97('0x2a')]=function(_0x13a9de){return request(_0x8c97('0x2b'),{'body':_0x13a9de});};exports[_0x8c97('0x2c')]=function(_0x18c81a){return request('CreateSquareReport',{'body':_['merge'](_0x18c81a,{'project_name':_0x18c81a[_0x8c97('0x2d')],'prev_project_name':_0x18c81a[_0x8c97('0x2e')]||'','is_subproject':_0x18c81a[_0x8c97('0x2e')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x8c97('0x2f')]=function(_0x37986d){return request(_0x8c97('0x30'),{'body':_0x37986d});};exports[_0x8c97('0x31')]=function(_0x34f8be){return request(_0x8c97('0x32'),{'body':_0x34f8be});};exports['createCmContact']=function(_0x443dfd){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x443dfd[_0x8c97('0x1f')],'ListId':_0x443dfd['ListId']}}})[_0x8c97('0x6')](function(_0x154592){if(_0x154592){return _0x154592;}return request('CreateCmContact',{'body':_0x443dfd});});};exports[_0x8c97('0x33')]=function(_0x57fef8){return request(_0x8c97('0x34'),{'options':{'where':{'id':_0x57fef8},'attributes':[_0x8c97('0xc')]}});};exports[_0x8c97('0x35')]=function(_0x2ebba4,_0x4451d6){return request(_0x8c97('0x36'),{'body':{'interface':_0x4451d6},'options':{'where':_0x2ebba4}});};exports['agentPause']=function(_0x51ee86,_0x12a7d0,_0x26d5dc){return request(_0x8c97('0x37'),{'body':{'type':_0x12a7d0,'uniqueid':_0x26d5dc},'options':{'where':_0x51ee86}});};exports['agentUnpause']=function(_0x3cf202){return request('UnpauseUser',{'body':{},'options':{'where':_0x3cf202}});};exports['agentLogout']=function(_0x27f76d){return request(_0x8c97('0x38'),{'body':{},'options':{'where':_0x27f76d}});};
\ No newline at end of file
+var _0x7341=['ShowMailAccount','MailServerOut','Smtp','CloudProvider','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getContactByPhone','GetContactByPhone','ShowTrunk','getSoundById','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','jayson/promise','http','request','then','error','result','catch','GetSquareProjects','getSquareProject','ShowSquareProject','production','getMailAccountById'];(function(_0x83af7f,_0x49c6fd){var _0x32d85c=function(_0xf0e8bc){while(--_0xf0e8bc){_0x83af7f['push'](_0x83af7f['shift']());}};_0x32d85c(++_0x49c6fd);}(_0x7341,0xe4));var _0x1734=function(_0x16848e,_0xe6378b){_0x16848e=_0x16848e-0x0;var _0x2a83a9=_0x7341[_0x16848e];return _0x2a83a9;};'use strict';var _=require('lodash');var moment=require('moment');var jayson=require(_0x1734('0x0'));var client=jayson['client'][_0x1734('0x1')]({'port':0x2329});function request(_0x36397c,_0x47c889){return new Promise(function(_0x3bf99a,_0x42c26d){return client[_0x1734('0x2')](_0x36397c,_0x47c889)[_0x1734('0x3')](function(_0x2de514){if(_0x2de514[_0x1734('0x4')]){return _0x42c26d(_0x2de514[_0x1734('0x4')]['message']);}else{return _0x3bf99a(_0x2de514[_0x1734('0x5')]);}})[_0x1734('0x6')](function(_0x45c529){return _0x42c26d(_0x45c529);});});}exports['getSquareProjects']=function(){return request(_0x1734('0x7'),{'options':{'raw':![],'attributes':['id','name','production']}});};exports[_0x1734('0x8')]=function(_0xcf0632){return request(_0x1734('0x9'),{'options':{'raw':![],'where':{'name':_0xcf0632},'attributes':[_0x1734('0xa')]}});};exports[_0x1734('0xb')]=function(_0x22afe0){return request(_0x1734('0xc'),{'options':{'raw':![],'where':{'id':_0x22afe0},'include':[{'model':_0x1734('0xd'),'as':_0x1734('0xe'),'include':[{'model':_0x1734('0xf'),'as':'CloudProvider'}]}],'attributes':['id',_0x1734('0x10'),_0x1734('0x11')],'smtp':!![]}});};exports[_0x1734('0x12')]=function(_0xcf880f){return request(_0x1734('0x9'),{'options':{'where':{'id':_0xcf880f},'attributes':[_0x1734('0x10')]}});};exports[_0x1734('0x13')]=function(_0xd2f288){return request(_0x1734('0x14'),{'options':{'where':{'id':_0xd2f288},'attributes':[_0x1734('0x10')]}});};exports[_0x1734('0x15')]=function(_0x27679e){return request(_0x1734('0x16'),{'options':{'where':{'id':_0x27679e},'attributes':[_0x1734('0x10')]}});};exports[_0x1734('0x17')]=function(_0x24bbf3){return request(_0x1734('0x18'),{'options':{'where':{'id':_0x24bbf3},'attributes':[_0x1734('0x19')]}});};exports[_0x1734('0x1a')]=function(_0x56756c){return request('ShowUser',{'options':{'where':{'id':_0x56756c},'attributes':[_0x1734('0x10')]}});};exports[_0x1734('0x1b')]=function(_0x4a86d1){return request(_0x1734('0x1c'),{'options':{'where':{'phone':_0x4a86d1['phone']},'attributes':['id']}});};exports['getTrunkById']=function(_0x5b2789){return request(_0x1734('0x1d'),{'options':{'where':{'id':_0x5b2789},'attributes':['name']}});};exports[_0x1734('0x1e')]=function(_0xc4b4cc){return request('ShowSound',{'options':{'where':{'id':_0xc4b4cc},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x1e7401){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x1e7401},'include':[{'model':_0x1734('0x1f'),'as':'Intervals'}]}});};exports[_0x1734('0x20')]=function(_0x42485f){return request(_0x1734('0x21'),{'options':{'where':{'id':_0x42485f},'attributes':['id',_0x1734('0x10')]}});};exports[_0x1734('0x22')]=function(_0x45593e){return request(_0x1734('0x23'),{'body':_0x45593e});};exports[_0x1734('0x24')]=function(_0x2891bb){return request('CreateSquareDetailsReport',{'body':_0x2891bb});};exports[_0x1734('0x25')]=function(_0x568e0c){return request('CreateSquareReport',{'body':_[_0x1734('0x26')](_0x568e0c,{'project_name':_0x568e0c[_0x1734('0x27')],'prev_project_name':_0x568e0c[_0x1734('0x28')]||'','is_subproject':_0x568e0c[_0x1734('0x28')]?!![]:![],'leaveAt':moment()[_0x1734('0x29')](_0x1734('0x2a'))})});};exports[_0x1734('0x2b')]=function(_0x27d6e5){return request('CreateSquareRecording',{'body':_0x27d6e5});};exports[_0x1734('0x2c')]=function(_0x52eaf5){return request(_0x1734('0x2d'),{'body':_0x52eaf5});};exports[_0x1734('0x2e')]=function(_0xfca2ad){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0xfca2ad[_0x1734('0x2f')],'ListId':_0xfca2ad[_0x1734('0x30')]}}})[_0x1734('0x3')](function(_0x50efce){if(_0x50efce){return _0x50efce;}return request(_0x1734('0x31'),{'body':_0xfca2ad});});};exports[_0x1734('0x32')]=function(_0x5594c0){return request(_0x1734('0x33'),{'options':{'where':{'id':_0x5594c0},'attributes':[_0x1734('0x10')]}});};exports[_0x1734('0x34')]=function(_0xf3d22e,_0x4f4d92){return request(_0x1734('0x35'),{'body':{'interface':_0x4f4d92},'options':{'where':_0xf3d22e}});};exports[_0x1734('0x36')]=function(_0x546a94,_0x4dd04a,_0x321718){return request(_0x1734('0x37'),{'body':{'type':_0x4dd04a,'uniqueid':_0x321718},'options':{'where':_0x546a94}});};exports[_0x1734('0x38')]=function(_0x3903a7){return request(_0x1734('0x39'),{'body':{},'options':{'where':_0x3903a7}});};exports[_0x1734('0x3a')]=function(_0x3ba024){return request(_0x1734('0x3b'),{'body':{},'options':{'where':_0x3ba024}});};
\ No newline at end of file
index 0eab0df..6d36082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['exports','./polly','./lex'];(function(_0xe4dcd8,_0x2d8f16){var _0x3dafd8=function(_0xfd94ce){while(--_0xfd94ce){_0xe4dcd8['push'](_0xe4dcd8['shift']());}};_0x3dafd8(++_0x2d8f16);}(_0x814b,0x1a2));var _0xb814=function(_0x578275,_0xe7ae46){_0x578275=_0x578275-0x0;var _0xf78041=_0x814b[_0x578275];return _0xf78041;};var polly=require(_0xb814('0x0'));var lex=require(_0xb814('0x1'));module[_0xb814('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x9485=['exports','./polly','./lex'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9485,0x8b));var _0x5948=function(_0x3261db,_0x5ca0a){_0x3261db=_0x3261db-0x0;var _0x8c0bf3=_0x9485[_0x3261db];return _0x8c0bf3;};var polly=require(_0x5948('0x0'));var lex=require(_0x5948('0x1'));module[_0x5948('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index fd42197..6e6c02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['exports'];(function(_0x101b3a,_0x39be60){var _0x18f2d4=function(_0x158839){while(--_0x158839){_0x101b3a['push'](_0x101b3a['shift']());}};_0x18f2d4(++_0x39be60);}(_0x878f,0x173));var _0xf878=function(_0x17f62b,_0x284501){_0x17f62b=_0x17f62b-0x0;var _0x473881=_0x878f[_0x17f62b];return _0x473881;};'use strict';var lex=require('./lib/api');module[_0xf878('0x0')]=function(_0x658976,_0x2e1d23,_0x12df2b,_0x1b3d0b,_0x3d74cf,_0x9e6783){return lex(_0x658976,_0x2e1d23,_0x12df2b,_0x1b3d0b,_0x3d74cf,_0x9e6783);};
\ No newline at end of file
+var _0xbdb7=['./lib/api','exports'];(function(_0x197f99,_0x14e47c){var _0x3b46d7=function(_0x24398c){while(--_0x24398c){_0x197f99['push'](_0x197f99['shift']());}};_0x3b46d7(++_0x14e47c);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x2c9f51,_0x2eec01){_0x2c9f51=_0x2c9f51-0x0;var _0x12abf9=_0xbdb7[_0x2c9f51];return _0x12abf9;};'use strict';var lex=require(_0x7bdb('0x0'));module[_0x7bdb('0x1')]=function(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07){return lex(_0x44467d,_0x2a2c1c,_0x23c326,_0x433850,_0x4496ac,_0x2c7e07);};
\ No newline at end of file
index 58d10a5..580a36a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x738eb6,_0x2b9939){var _0x2a90b9=function(_0x13f404){while(--_0x13f404){_0x738eb6['push'](_0x738eb6['shift']());}};_0x2a90b9(++_0x2b9939);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x399634,_0xfe9d6e){var _0x5321ca=function(_0x442b19){while(--_0x442b19){_0x399634['push'](_0x399634['shift']());}};_0x5321ca(++_0xfe9d6e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 8973ef2..1c14bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa519=['exports','./lib/api'];(function(_0x507a2d,_0x5835fc){var _0x5ec681=function(_0x145865){while(--_0x145865){_0x507a2d['push'](_0x507a2d['shift']());}};_0x5ec681(++_0x5835fc);}(_0xa519,0xfb));var _0x9a51=function(_0xa22b68,_0x31c162){_0xa22b68=_0xa22b68-0x0;var _0xd5cd0b=_0xa519[_0xa22b68];return _0xd5cd0b;};'use strict';var polly=require(_0x9a51('0x0'));module[_0x9a51('0x1')]=function(_0x312745,_0x235579,_0x1a2dcb,_0x30d3a3,_0xbce9f3,_0x3124d1,_0x169d12){return polly(_0x312745,_0x235579,_0x1a2dcb,_0x30d3a3,_0xbce9f3,_0x3124d1,_0x169d12);};
\ No newline at end of file
+var _0x16bc=['./lib/api'];(function(_0x4cb3e4,_0x10da99){var _0x34c668=function(_0x29efcd){while(--_0x29efcd){_0x4cb3e4['push'](_0x4cb3e4['shift']());}};_0x34c668(++_0x10da99);}(_0x16bc,0x143));var _0xc16b=function(_0x58a364,_0x3439f6){_0x58a364=_0x58a364-0x0;var _0x409b74=_0x16bc[_0x58a364];return _0x409b74;};'use strict';var polly=require(_0xc16b('0x0'));module['exports']=function(_0x5eda39,_0x5dc87d,_0x213206,_0x45db97,_0xe4b138,_0x17ead3,_0x3133d2){return polly(_0x5eda39,_0x5dc87d,_0x213206,_0x45db97,_0xe4b138,_0x17ead3,_0x3133d2);};
\ No newline at end of file
index 728ea9c..97f39b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ed8=['No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x3d2483,_0x2d74cd){var _0x3cd99c=function(_0x2d0360){while(--_0x2d0360){_0x3d2483['push'](_0x3d2483['shift']());}};_0x3cd99c(++_0x2d74cd);}(_0x1ed8,0x13c));var _0x81ed=function(_0x464c79,_0xaac0a9){_0x464c79=_0x464c79-0x0;var _0x5f4fce=_0x1ed8[_0x464c79];return _0x5f4fce;};'use strict';var fs=require('fs');var path=require(_0x81ed('0x0'));var BPromise=require(_0x81ed('0x1'));var rs=require(_0x81ed('0x2'));var AWS=require(_0x81ed('0x3'));function pollyResult(_0x362346,_0xb367f4,_0x2fb111){return new BPromise(function(_0x4e4c60,_0x53bdfa){_0x362346[_0x81ed('0x4')](_0xb367f4,function(_0x34f0b9,_0x52c529){if(_0x34f0b9){_0x53bdfa(_0x34f0b9);}else if(_0x52c529){if(_0x52c529[_0x81ed('0x5')]instanceof Buffer){fs[_0x81ed('0x6')](_0x2fb111,_0x52c529[_0x81ed('0x5')],function(_0x186653){if(_0x186653){_0x53bdfa(_0x186653);}else{_0x4e4c60();}});}else{_0x53bdfa(new Error(_0x81ed('0x7')));}}else{_0x53bdfa(new Error(_0x81ed('0x8')));}});});}module[_0x81ed('0x9')]=function(_0x5d3b49,_0xbae9b2,_0x58e39d,_0x3fc071,_0x4c26c8,_0x2c99a5,_0x9291a6){var _0x1b370e=new AWS['Polly']({'accessKeyId':_0x5d3b49,'secretAccessKey':_0xbae9b2,'region':_0x58e39d});var _0x44adae={'Text':_0x4c26c8,'TextType':_0x2c99a5||_0x81ed('0xa'),'OutputFormat':_0x81ed('0xb'),'VoiceId':_0x3fc071};return pollyResult(_0x1b370e,_0x44adae,_0x9291a6);};
\ No newline at end of file
+var _0x3906=['bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','text'];(function(_0x5cc6a1,_0x1eb715){var _0xba9725=function(_0x268081){while(--_0x268081){_0x5cc6a1['push'](_0x5cc6a1['shift']());}};_0xba9725(++_0x1eb715);}(_0x3906,0x10e));var _0x6390=function(_0x45af41,_0x1211fd){_0x45af41=_0x45af41-0x0;var _0x154153=_0x3906[_0x45af41];return _0x154153;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x6390('0x0'));var rs=require(_0x6390('0x1'));var AWS=require(_0x6390('0x2'));function pollyResult(_0x2ab531,_0x355850,_0x288669){return new BPromise(function(_0x429c5,_0x396148){_0x2ab531[_0x6390('0x3')](_0x355850,function(_0x4181fe,_0x3af008){if(_0x4181fe){_0x396148(_0x4181fe);}else if(_0x3af008){if(_0x3af008[_0x6390('0x4')]instanceof Buffer){fs[_0x6390('0x5')](_0x288669,_0x3af008[_0x6390('0x4')],function(_0x607bc0){if(_0x607bc0){_0x396148(_0x607bc0);}else{_0x429c5();}});}else{_0x396148(new Error(_0x6390('0x6')));}}else{_0x396148(new Error(_0x6390('0x7')));}});});}module['exports']=function(_0x6adf1d,_0x5d59d8,_0x4f9fd3,_0x1e364f,_0x4bb1b9,_0x446b2f,_0x5666c6){var _0x2f04f6=new AWS[(_0x6390('0x8'))]({'accessKeyId':_0x6adf1d,'secretAccessKey':_0x5d59d8,'region':_0x4f9fd3});var _0x5c8ff7={'Text':_0x4bb1b9,'TextType':_0x446b2f||_0x6390('0x9'),'OutputFormat':'mp3','VoiceId':_0x1e364f};return pollyResult(_0x2f04f6,_0x5c8ff7,_0x5666c6);};
\ No newline at end of file
index 5b5ac4e..633c69c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var asr=require('./lib/api');module['exports']=function(_0xc5240b,_0x378d43,_0xe446ff,_0xf33ab7){return asr(_0xc5240b,_0x378d43,_0xe446ff);};
\ No newline at end of file
+var _0x7f5f=['exports','./lib/api'];(function(_0x107f87,_0x2fc1b3){var _0x1a18fe=function(_0x4d737c){while(--_0x4d737c){_0x107f87['push'](_0x107f87['shift']());}};_0x1a18fe(++_0x2fc1b3);}(_0x7f5f,0x18b));var _0xf7f5=function(_0x229e01,_0x75d644){_0x229e01=_0x229e01-0x0;var _0x160115=_0x7f5f[_0x229e01];return _0x160115;};'use strict';var asr=require(_0xf7f5('0x0'));module[_0xf7f5('0x1')]=function(_0x2536eb,_0x54fc12,_0xbf0adf,_0x59f59f){return asr(_0x2536eb,_0x54fc12,_0xbf0adf);};
\ No newline at end of file
index 066c515..1ed0e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4b=['lang\x20should\x20be\x20a\x20string','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','bluebird','exports','string','length','filepath\x20should\x20be\x20a\x20string'];(function(_0x2341f3,_0x4b7150){var _0x39ff65=function(_0xe963d5){while(--_0xe963d5){_0x2341f3['push'](_0x2341f3['shift']());}};_0x39ff65(++_0x4b7150);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x34cc52,_0x5f0c7e){_0x34cc52=_0x34cc52-0x0;var _0x296404=_0xdb4b[_0x34cc52];return _0x296404;};'use strict';var url=require('url');var BPromise=require(_0xbdb4('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xbdb4('0x1')]=function(_0x883c71,_0x3d5174,_0x257d67){return new BPromise(function(_0x47a78c,_0x3cc8c2){var _0x40e5ca;if(typeof _0x883c71!==_0xbdb4('0x2')||_0x883c71[_0xbdb4('0x3')]===0x0){return _0x3cc8c2(_0xbdb4('0x4'));}if(typeof _0x3d5174!==_0xbdb4('0x2')||_0x3d5174[_0xbdb4('0x3')]===0x0){return _0x3cc8c2('key\x20should\x20be\x20a\x20string');}if(typeof _0x257d67!=='undefined'&&(typeof _0x257d67!==_0xbdb4('0x2')||_0x257d67[_0xbdb4('0x3')]===0x0)){return _0x3cc8c2(_0xbdb4('0x5'));}try{_0x40e5ca=fs[_0xbdb4('0x6')](_0x883c71)['toString'](_0xbdb4('0x7'));}catch(_0x5ba9f8){return _0x3cc8c2(_0x5ba9f8);}return _0x47a78c({'method':_0xbdb4('0x8'),'uri':host+_0xbdb4('0x9')+_0x3d5174,'body':{'config':{'encoding':_0xbdb4('0xa'),'sampleRateHertz':'8000','languageCode':_0x257d67},'audio':{'content':_0x40e5ca}},'json':!![]});});};
\ No newline at end of file
+var _0xf290=['length','string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','exports'];(function(_0x3c148f,_0x56c82b){var _0x500718=function(_0x17ccff){while(--_0x17ccff){_0x3c148f['push'](_0x3c148f['shift']());}};_0x500718(++_0x56c82b);}(_0xf290,0xde));var _0x0f29=function(_0x3a13cf,_0x478c62){_0x3a13cf=_0x3a13cf-0x0;var _0x4817c=_0xf290[_0x3a13cf];return _0x4817c;};'use strict';var url=require('url');var BPromise=require(_0x0f29('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x0f29('0x1')]=function(_0x4b16e4,_0xb8a620,_0x1b4f85){return new BPromise(function(_0x38f5b5,_0x28b644){var _0xfdab92;if(typeof _0x4b16e4!=='string'||_0x4b16e4[_0x0f29('0x2')]===0x0){return _0x28b644('filepath\x20should\x20be\x20a\x20string');}if(typeof _0xb8a620!==_0x0f29('0x3')||_0xb8a620[_0x0f29('0x2')]===0x0){return _0x28b644(_0x0f29('0x4'));}if(typeof _0x1b4f85!==_0x0f29('0x5')&&(typeof _0x1b4f85!==_0x0f29('0x3')||_0x1b4f85[_0x0f29('0x2')]===0x0)){return _0x28b644(_0x0f29('0x6'));}try{_0xfdab92=fs[_0x0f29('0x7')](_0x4b16e4)[_0x0f29('0x8')](_0x0f29('0x9'));}catch(_0xd4d3af){return _0x28b644(_0xd4d3af);}return _0x38f5b5({'method':_0x0f29('0xa'),'uri':host+_0x0f29('0xb')+_0xb8a620,'body':{'config':{'encoding':_0x0f29('0xc'),'sampleRateHertz':_0x0f29('0xd'),'languageCode':_0x1b4f85},'audio':{'content':_0xfdab92}},'json':!![]});});};
\ No newline at end of file
index ca599d4..0d5de21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab44=['./asr','exports'];(function(_0x226af0,_0x299533){var _0x7288d9=function(_0x9b6ff6){while(--_0x9b6ff6){_0x226af0['push'](_0x226af0['shift']());}};_0x7288d9(++_0x299533);}(_0xab44,0x1e6));var _0x4ab4=function(_0x5d5d4f,_0x49e9ff){_0x5d5d4f=_0x5d5d4f-0x0;var _0x46e085=_0xab44[_0x5d5d4f];return _0x46e085;};var asr=require(_0x4ab4('0x0'));module[_0x4ab4('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x8b84=['exports','./asr'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x8b84,0x14f));var _0x48b8=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8b84[_0x160c73];return _0xd9302;};var asr=require(_0x48b8('0x0'));module[_0x48b8('0x1')]={'asr':asr};
\ No newline at end of file
index fb4e6fe..99b16b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ae=['code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','stringify','action','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','apiai-promise','bluebird','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','https:','host','WHAT_EVER','get','statusCode','\x20failed,\x20status\x20code\x20=\x20','request\x20to\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','error','unlink','end','transcode','wav','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','toString','https://texttospeech.googleapis.com/v1/','?key=','input','MP3','text:synthesize','.mp3','audioContent','writeFile','777','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','POST','application/x-www-form-urlencoded','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','data','text\x20length\x20limit\x20reached','lang\x20\x22','googleASR','results','map','alternatives','transcript','join','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','textRequest','result','resolvedQuery','actionIncomplete','fulfillment','score'];(function(_0x4956b7,_0x4960e8){var _0x56cb99=function(_0x5ae8dd){while(--_0x5ae8dd){_0x4956b7['push'](_0x4956b7['shift']());}};_0x56cb99(++_0x4960e8);}(_0xa8ae,0x1c0));var _0xea8a=function(_0x214273,_0x526efa){_0x214273=_0x214273-0x0;var _0x403a86=_0xa8ae[_0x214273];return _0x403a86;};'use strict';var apiai=require(_0xea8a('0x0'));var BPromise=require(_0xea8a('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0xea8a('0x2'));var md5=require(_0xea8a('0x3'));var path=require(_0xea8a('0x4'));var querystring=require(_0xea8a('0x5'));var rp=require(_0xea8a('0x6'));var rs=require(_0xea8a('0x7'));var sox=require(_0xea8a('0x8'));var tts=require(_0xea8a('0x9'));var urlParse=require(_0xea8a('0xa'))[_0xea8a('0xb')];var util=require('util');var aws=require(_0xea8a('0xc'));var google=require(_0xea8a('0xd'));var sestek=require(_0xea8a('0xe'));var tilde=require(_0xea8a('0xf'));var logger=require(_0xea8a('0x10'))(_0xea8a('0x11'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x555f7f,_0x5b439f){return new BPromise(function(_0x46f2a3,_0x10f335){var _0xd9cd8=urlParse(_0x555f7f);var _0x206e38=_0xd9cd8[_0xea8a('0x12')]===_0xea8a('0x13')?https:http;var _0x5c1a86={'host':_0xd9cd8[_0xea8a('0x14')],'path':_0xd9cd8[_0xea8a('0x4')],'headers':{'user-agent':_0xea8a('0x15')}};_0x206e38[_0xea8a('0x16')](_0x5c1a86,function(_0x25a996){if(_0x25a996[_0xea8a('0x17')]!==0xc8){logger['error']('request\x20to\x20'+_0x555f7f+_0xea8a('0x18')+_0x25a996[_0xea8a('0x17')]+'\x20('+_0x25a996['statusMessage']+')');_0x10f335(new Error(_0xea8a('0x19')+_0x555f7f+_0xea8a('0x18')+_0x25a996[_0xea8a('0x17')]+'\x20('+_0x25a996[_0xea8a('0x1a')]+')'));return;}var _0x2803cf=fs[_0xea8a('0x1b')](_0x5b439f);_0x2803cf['on'](_0xea8a('0x1c'),function(){logger[_0xea8a('0x1d')](_0xea8a('0x1e'));_0x2803cf[_0xea8a('0x1f')](_0x46f2a3);});_0x2803cf['on'](_0xea8a('0x20'),function(_0x5e0682){fs[_0xea8a('0x21')](_0x5b439f);logger[_0xea8a('0x20')]('download\x20error',_0x5e0682);_0x10f335(_0x5e0682);});_0x25a996['pipe'](_0x2803cf);})['on']('error',function(_0x771d8c){logger['error'](_0x771d8c);_0x10f335(_0x771d8c);})['end']();});}function uploadFile(_0xc27cab){return new BPromise(function(_0x52220a,_0x214f89){var _0x37a988=urlParse(_0xc27cab);var _0x194156=_0x37a988[_0xea8a('0x12')]===_0xea8a('0x13')?https:http;var _0xc3b2f6={'host':_0x37a988[_0xea8a('0x14')],'path':_0x37a988[_0xea8a('0x4')],'headers':{'user-agent':_0xea8a('0x15')}};_0x194156['get'](_0xc3b2f6,function(_0x1926f3){if(_0x1926f3[_0xea8a('0x17')]!==0xc8){_0x214f89(new Error(_0xea8a('0x19')+_0xc27cab+'\x20failed,\x20status\x20code\x20=\x20'+_0x1926f3['statusCode']+'\x20('+_0x1926f3['statusMessage']+')'));return;}var _0x3630b4='';_0x1926f3['on']('data',function(_0x270546){_0x3630b4+=_0x270546;});_0x1926f3['on'](_0xea8a('0x22'),function(){_0x52220a(_0x3630b4);});})['on'](_0xea8a('0x20'),function(_0xb6a72f){_0x214f89(_0xb6a72f);})['end']();});}function convertFile(_0x4f1e5d,_0x172382){return new BPromise(function(_0x34a28b,_0x37e5c5){var _0x5f2dc9=sox[_0xea8a('0x23')](_0x4f1e5d,_0x172382,{'sampleRate':0x1f40,'format':_0xea8a('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5f2dc9['on'](_0xea8a('0x20'),function(_0x34f155){logger[_0xea8a('0x20')]('error\x20convert',_0x34f155);_0x37e5c5(_0x34f155);});_0x5f2dc9['on'](_0xea8a('0x22'),function(){logger[_0xea8a('0x1d')](_0xea8a('0x25'));_0x34a28b();});_0x5f2dc9[_0xea8a('0x26')]();});}function base64Decode(_0x218046,_0x567b11){var _0x594fc2=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));fs[_0xea8a('0x2b')](_0x594fc2,_0x218046,_0xea8a('0x2c'));return convertFile(_0x594fc2,_0x567b11)[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x594fc2);fs[_0xea8a('0x2e')](_0x567b11,'777');}catch(_0x4fb8c1){logger[_0xea8a('0x20')](_0x4fb8c1);}return _0x567b11[_0xea8a('0x2f')]('.')[0x0];});}function base64Encode(_0xa80d7a){var _0x54c347=fs['readFileSync'](_0xa80d7a);return new Buffer(_0x54c347)[_0xea8a('0x30')](_0xea8a('0x2c'));}exports['googleCloudTTS']=function(_0x3a42ed,_0x5a2509,_0xefcdd1,_0x17fe72,_0x54db3f,_0x361b76){var _0x28b252,_0x402f5f;var _0xf3467c=_0xea8a('0x31');var _0x12cf01=_0xea8a('0x32')+_0x3a42ed;var _0x1bc549={};if(_0x5a2509==='ssml'){_0x1bc549['input']={'ssml':_0xefcdd1};}else{_0x1bc549[_0xea8a('0x33')]={'text':_0xefcdd1};};_0x1bc549['voice']={'languageCode':_0x17fe72,'ssmlGender':_0x54db3f};_0x1bc549['audioConfig']={'audioEncoding':_0xea8a('0x34'),'sampleRateHertz':0x1f40};var _0x1fc79c={'url':_0xf3467c+_0xea8a('0x35')+_0x12cf01,'method':'POST','json':!![],'body':_0x1bc549};return rp(_0x1fc79c)['then'](function(_0x2f0fc5){return new BPromise(function(_0x1cf4ba,_0x2998d7){_0x28b252=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x36'));var _0x2457d2=Buffer['from'](_0x2f0fc5[_0xea8a('0x37')],_0xea8a('0x2c'));return fs[_0xea8a('0x38')](_0x28b252,_0x2457d2,function(_0x40d2fb){_0x2998d7(_0x40d2fb);},function(_0x11e80e){fs['chmodSync'](_0x28b252,_0xea8a('0x39'));_0x1cf4ba(_0x11e80e);});});})[_0xea8a('0x2d')](function(_0x41b7b4){_0x402f5f=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));return convertFile(_0x28b252,_0x402f5f);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x28b252);fs[_0xea8a('0x2e')](_0x402f5f,'777');}catch(_0x10feff){logger[_0xea8a('0x20')](_0x10feff);}logger['info'](_0xea8a('0x3a'),_0x402f5f[_0xea8a('0x2f')]('.')[0x0]);return _0x402f5f[_0xea8a('0x2f')]('.')[0x0];});};exports['googleTTS']=function(_0x22c81c,_0x55c86a){var _0x3dc0b5=_0xea8a('0x3b');var _0x4592b2,_0x31b8bd;var _0x5d204d;var _0x1eabeb={'encoding':_0xea8a('0x3c'),'method':_0xea8a('0x3d'),'timeout':0x2710,'url':_0x3dc0b5,'headers':{'Content-Type':_0xea8a('0x3e')},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0xea8a('0x3f'),JSON['stringify']([_0x22c81c,_0x55c86a||'en',![],_0xea8a('0x40')]),null,_0xea8a('0x41')]]]))};return rp(_0x1eabeb)[_0xea8a('0x2d')](function(_0x28d79c){try{_0x5d204d=eval(_0x28d79c[_0xea8a('0x42')](0x5))[0x0][0x2];}catch(_0x46a1e3){throw new Error(_0xea8a('0x43')+_0x28d79c[_0xea8a('0x44')]);}if(!_0x5d204d){if(_0x22c81c['length']>0xc8){throw new Error(_0xea8a('0x45'));}else{throw new Error(_0xea8a('0x46')+_0x55c86a+'\x22\x20might\x20not\x20exist');}}try{_0x5d204d=eval(_0x5d204d)[0x0];}catch(_0x54dc90){throw new Error(_0xea8a('0x43')+res[_0xea8a('0x44')]);}const _0x5f3de6=_0x5d204d;_0x4592b2=path['resolve'](__dirname,_0xea8a('0x28'),rs['generate'](0x4)+_0xea8a('0x36'));fs['writeFileSync'](_0x4592b2,_0x5d204d,{'encoding':_0xea8a('0x2c')});_0x31b8bd=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs['generate'](0x4)+_0xea8a('0x2a'));return convertFile(_0x4592b2,_0x31b8bd);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0x4592b2);fs['chmodSync'](_0x31b8bd,_0xea8a('0x39'));}catch(_0x59f718){logger[_0xea8a('0x20')](_0x59f718);}logger[_0xea8a('0x1d')]('goggleTTS\x20path',_0x31b8bd[_0xea8a('0x2f')]('.')[0x0]);return _0x31b8bd[_0xea8a('0x2f')]('.')[0x0];});};exports[_0xea8a('0x47')]=function(_0x224556,_0x38a2fb,_0x22843f){return google['asr'](_0x224556,_0x38a2fb,_0x22843f)[_0xea8a('0x2d')](function(_0x2f2489){logger[_0xea8a('0x1d')](_0x2f2489['uri']);return rp(_0x2f2489);})[_0xea8a('0x2d')](function(_0x41ddce){var _0x498f3c='';var _0x5ab7e9=0x0;try{fs['unlink'](_0x224556);}catch(_0xffd2ad){logger[_0xea8a('0x20')](_0xffd2ad);}if(_0x41ddce&&_0x41ddce[_0xea8a('0x48')]){_0x498f3c=_0x41ddce[_0xea8a('0x48')][_0xea8a('0x49')](function(_0x5de891){return _0x5de891&&_0x5de891[_0xea8a('0x4a')][0x0]&&_0x5de891[_0xea8a('0x4a')][0x0][_0xea8a('0x4b')]?_0x5de891[_0xea8a('0x4a')][0x0]['transcript']:'';})[_0xea8a('0x4c')]('\x0a');_0x5ab7e9=_0x41ddce[_0xea8a('0x48')][_0xea8a('0x49')](function(_0x2a680e){return _0x2a680e&&_0x2a680e[_0xea8a('0x4a')][0x0]&&_0x2a680e[_0xea8a('0x4a')][0x0]['confidence']?_0x2a680e[_0xea8a('0x4a')][0x0]['confidence']:0x0;})[_0xea8a('0x4c')]('\x0a');}logger[_0xea8a('0x1d')](_0xea8a('0x4d'),_0x498f3c);logger['info'](_0xea8a('0x4e'),_0x5ab7e9);return{'transcript':_0x498f3c,'confidence':_0x5ab7e9};})['catch'](function(_0x456cc0){logger['error'](_0xea8a('0x4f'),_0x456cc0[_0xea8a('0x17')],_0x456cc0[_0xea8a('0x50')],_0x456cc0[_0xea8a('0x51')]);});};exports['googleDialogflow']=function(_0x2ceffc,_0x4acdf5,_0x52449e,_0xf59cb4){var _0x54e2d7=apiai(_0x4acdf5,{'language':_0xf59cb4||'en'});return _0x54e2d7[_0xea8a('0x52')](_0x52449e,{'sessionId':md5(_0x2ceffc)})[_0xea8a('0x2d')](function(_0x6278f4){logger['info'](JSON['stringify'](_0x6278f4));return{'source':_0x6278f4['result']['source'],'resolvedQuery':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x54')],'action':_0x6278f4[_0xea8a('0x53')]['action'],'actionIncomplete':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x55')],'speech':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x56')]['speech'],'score':_0x6278f4['result'][_0xea8a('0x57')],'statusCode':_0x6278f4['status'][_0xea8a('0x58')],'endConversation':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x59')][_0xea8a('0x5a')]||![],'isFallbackIntent':_0x6278f4[_0xea8a('0x53')][_0xea8a('0x59')][_0xea8a('0x5b')]};});};exports[_0xea8a('0x5c')]=function(_0x378647,_0x1cda25,_0x3aa9e8,_0x27a857,_0x154c0f,_0x243ad2){var _0x430d48=_0x27a857[_0xea8a('0x5d')](/\\n/g,'\x0a');var _0x1df2c6={'credentials':{'private_key':_0x430d48,'client_email':_0x3aa9e8}};var _0x5b69ec=new dialogflow['SessionsClient'](_0x1df2c6);var _0x2e98d7=_0x5b69ec[_0xea8a('0x5e')](_0x1cda25,md5(_0x378647));var _0x2f5a4d={'session':_0x2e98d7,'queryInput':{'text':{'text':_0x154c0f,'languageCode':_0x243ad2}}};return _0x5b69ec[_0xea8a('0x5f')](_0x2f5a4d)[_0xea8a('0x2d')](function(_0x3a8541){if(_0x3a8541&&_0x3a8541[_0xea8a('0x60')]){logger['info'](_0xea8a('0x61'),JSON[_0xea8a('0x62')](_0x3a8541));var _0x3dbd21=_0x3a8541[0x0];if(_0x3dbd21){var _0x99c49c={'action':_0x3dbd21['queryResult'][_0xea8a('0x63')],'allRequiredParamsPresent':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x65')],'endConversation':_0x3dbd21['queryResult']['diagnosticInfo']&&_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x66')]['fields']?_0x3dbd21[_0xea8a('0x64')]['diagnosticInfo'][_0xea8a('0x67')]['end_conversation'][_0xea8a('0x68')]:![],'fulfillmentText':_0x3dbd21[_0xea8a('0x64')]['fulfillmentText'],'intentName':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x50')],'intentDisplayName':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x6a')],'isFallbackIntent':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x69')][_0xea8a('0x6b')],'languageCode':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x6c')],'queryText':_0x3dbd21['queryResult'][_0xea8a('0x6d')],'responseId':_0x3dbd21[_0xea8a('0x6e')],'score':_0x3dbd21[_0xea8a('0x64')][_0xea8a('0x6f')],'speech':_0x3dbd21[_0xea8a('0x64')]['fulfillmentText'],'providerResponse':JSON[_0xea8a('0x62')](_0x3a8541)};return _0x99c49c;}}});};exports[_0xea8a('0x70')]=function(_0x38fc43,_0x30b9fa,_0x1078f4,_0x5ecbcf){return tilde['asr'](_0x38fc43,_0x30b9fa,_0x1078f4,_0x5ecbcf)[_0xea8a('0x2d')](function(_0x5dd81b){try{fs['unlink'](_0x38fc43);}catch(_0x1e8277){logger[_0xea8a('0x20')](_0x1e8277);}logger[_0xea8a('0x1d')](_0xea8a('0x71'),_0x5dd81b[_0xea8a('0x4b')]);logger[_0xea8a('0x1d')](_0xea8a('0x72'),_0x5dd81b[_0xea8a('0x73')]);return _0x5dd81b;});};exports[_0xea8a('0x74')]=function(_0x47a621,_0x510c1a,_0x26cd0,_0x4aa16d,_0xaf7a17,_0x122dee){var _0x5f5326=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x36'));var _0x424e78;return aws[_0xea8a('0x75')](_0x47a621,_0x510c1a,_0x26cd0,_0x4aa16d,_0xaf7a17,_0x122dee,_0x5f5326)[_0xea8a('0x2d')](function(){_0x424e78=path[_0xea8a('0x27')](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a'));return convertFile(_0x5f5326,_0x424e78);})[_0xea8a('0x2d')](function(){try{fs['unlink'](_0x5f5326);fs[_0xea8a('0x2e')](_0x424e78,_0xea8a('0x39'));}catch(_0xcbec29){logger[_0xea8a('0x20')](_0xcbec29);}return _0x424e78[_0xea8a('0x2f')]('.')[0x0];});};exports[_0xea8a('0x76')]=function(_0x5afa27,_0x46a724,_0x4fecb1,_0x125809,_0x2b7313,_0x4d1450){return aws[_0xea8a('0x77')](_0x5afa27,_0x46a724,_0x4fecb1,_0x125809,_0x2b7313,_0x4d1450)[_0xea8a('0x2d')](function(_0x91cb2e){logger[_0xea8a('0x1d')](JSON[_0xea8a('0x62')](_0x91cb2e));return _0x91cb2e;});};exports[_0xea8a('0x78')]=function(_0x33c5e3,_0x402792,_0x3a8dfd,_0x4e9246){var _0x1f4078=util[_0xea8a('0x79')](_0xea8a('0x7a'),ISPEECH_API,_0x33c5e3,encodeURIComponent(_0x402792),_0x3a8dfd,_0x4e9246);var _0xef6d3c=path['resolve'](__dirname,_0xea8a('0x28'),rs[_0xea8a('0x29')](0x4)+'.mp3');var _0x1f7da6;return downloadFile(_0x1f4078,_0xef6d3c)['then'](function(){_0x1f7da6=path[_0xea8a('0x27')](__dirname,'tmp',rs['generate'](0x4)+'.wav');return convertFile(_0xef6d3c,_0x1f7da6);})[_0xea8a('0x2d')](function(){try{fs[_0xea8a('0x21')](_0xef6d3c);fs[_0xea8a('0x2e')](_0x1f7da6,'777');}catch(_0x20536e){logger[_0xea8a('0x20')](_0x20536e);}return _0x1f7da6[_0xea8a('0x2f')]('.')[0x0];});};exports['ispeechASR']=function(_0x16e0b3,_0x44e3ea,_0x3e47e0,_0x527394){var _0x52d984=util['format'](_0xea8a('0x7b'),ISPEECH_API,_0x44e3ea,_0x3e47e0,base64Encode(_0x16e0b3),_0x527394?util[_0xea8a('0x79')](_0xea8a('0x7c'),encodeURIComponent(_0x527394)):_0xea8a('0x7d'));return uploadFile(_0x52d984)[_0xea8a('0x2d')](function(_0x11f790){return querystring[_0xea8a('0xb')](_0x11f790);});};exports[_0xea8a('0x7e')]=function(_0xade741,_0x57ad04){return sestek[_0xea8a('0x7f')](_0xade741,_0x57ad04)[_0xea8a('0x2d')](function(_0x5ba132){logger[_0xea8a('0x1d')](JSON[_0xea8a('0x62')](_0x5ba132));var _0x4cc6da={'speech':_0x5ba132[_0xea8a('0x80')],'action':_0x5ba132[_0xea8a('0x81')]?_0x5ba132[_0xea8a('0x81')][_0xea8a('0x82')]:undefined,'actiondata':_0x5ba132[_0xea8a('0x81')]?_0x5ba132[_0xea8a('0x81')]['CustomActionData']:undefined};if(_0x5ba132['channelData']&&_0x5ba132['channelData'][_0xea8a('0x83')]){return base64Decode(_0x5ba132[_0xea8a('0x81')][_0xea8a('0x83')][_0xea8a('0x84')],path[_0xea8a('0x27')](__dirname,'tmp',rs[_0xea8a('0x29')](0x4)+_0xea8a('0x2a')))[_0xea8a('0x2d')](function(_0x550b46){_0x4cc6da[_0xea8a('0x85')]=_0x550b46;return _0x4cc6da;});}return _0x4cc6da;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x1133=['[%s]\x20%s:%s','name','message','googleDialogflow','result','source','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','tildeASR','asr','Tilde\x20ASR\x20transcription','polly','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','channelData','CustomAction','CustomActionData','audiofile','dirName','bluebird','dialogflow','https','md5','querystring','request-promise','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','host','path','WHAT_EVER','get','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','request\x20to\x20','finish','info','close','error','unlink','download\x20error','pipe','end','https:','data','transcode','error\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','audioConfig','MP3','from','audioContent','writeFile','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','length','lang\x20\x22','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','uri','alternatives','transcript','results','map','confidence','join','googleASR\x20transcription','googleASR\x20confidence','catch'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x1133,0x1c6));var _0x3113=function(_0x48f77f,_0x1bec81){_0x48f77f=_0x48f77f-0x0;var _0x228627=_0x1133[_0x48f77f];return _0x228627;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x3113('0x0'));var dialogflow=require(_0x3113('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x3113('0x2'));var md5=require(_0x3113('0x3'));var path=require('path');var querystring=require(_0x3113('0x4'));var rp=require(_0x3113('0x5'));var rs=require('randomstring');var sox=require(_0x3113('0x6'));var tts=require(_0x3113('0x7'));var urlParse=require(_0x3113('0x8'))[_0x3113('0x9')];var util=require(_0x3113('0xa'));var aws=require(_0x3113('0xb'));var google=require(_0x3113('0xc'));var sestek=require(_0x3113('0xd'));var tilde=require(_0x3113('0xe'));var logger=require(_0x3113('0xf'))(_0x3113('0x10'));var ISPEECH_API=_0x3113('0x11');function downloadFile(_0x48c8dc,_0x5d3ca1){return new BPromise(function(_0x1b21df,_0x511c3a){var _0x3f7c39=urlParse(_0x48c8dc);var _0x576f90=_0x3f7c39[_0x3113('0x12')]==='https:'?https:http;var _0xeb5063={'host':_0x3f7c39[_0x3113('0x13')],'path':_0x3f7c39[_0x3113('0x14')],'headers':{'user-agent':_0x3113('0x15')}};_0x576f90[_0x3113('0x16')](_0xeb5063,function(_0x4e7328){if(_0x4e7328['statusCode']!==0xc8){logger['error']('request\x20to\x20'+_0x48c8dc+_0x3113('0x17')+_0x4e7328[_0x3113('0x18')]+'\x20('+_0x4e7328[_0x3113('0x19')]+')');_0x511c3a(new Error(_0x3113('0x1a')+_0x48c8dc+_0x3113('0x17')+_0x4e7328[_0x3113('0x18')]+'\x20('+_0x4e7328[_0x3113('0x19')]+')'));return;}var _0x1de195=fs['createWriteStream'](_0x5d3ca1);_0x1de195['on'](_0x3113('0x1b'),function(){logger[_0x3113('0x1c')]('finish\x20download\x20file');_0x1de195[_0x3113('0x1d')](_0x1b21df);});_0x1de195['on'](_0x3113('0x1e'),function(_0x384127){fs[_0x3113('0x1f')](_0x5d3ca1);logger[_0x3113('0x1e')](_0x3113('0x20'),_0x384127);_0x511c3a(_0x384127);});_0x4e7328[_0x3113('0x21')](_0x1de195);})['on']('error',function(_0x5da882){logger[_0x3113('0x1e')](_0x5da882);_0x511c3a(_0x5da882);})[_0x3113('0x22')]();});}function uploadFile(_0x388bc1){return new BPromise(function(_0x371e2d,_0x330b86){var _0x5c325c=urlParse(_0x388bc1);var _0x26b5ce=_0x5c325c[_0x3113('0x12')]===_0x3113('0x23')?https:http;var _0x42ad70={'host':_0x5c325c[_0x3113('0x13')],'path':_0x5c325c[_0x3113('0x14')],'headers':{'user-agent':'WHAT_EVER'}};_0x26b5ce['get'](_0x42ad70,function(_0x1afaad){if(_0x1afaad[_0x3113('0x18')]!==0xc8){_0x330b86(new Error(_0x3113('0x1a')+_0x388bc1+'\x20failed,\x20status\x20code\x20=\x20'+_0x1afaad[_0x3113('0x18')]+'\x20('+_0x1afaad[_0x3113('0x19')]+')'));return;}var _0x326994='';_0x1afaad['on'](_0x3113('0x24'),function(_0x3afee2){_0x326994+=_0x3afee2;});_0x1afaad['on'](_0x3113('0x22'),function(){_0x371e2d(_0x326994);});})['on'](_0x3113('0x1e'),function(_0x47dd33){_0x330b86(_0x47dd33);})[_0x3113('0x22')]();});}function convertFile(_0x172875,_0x41ca6f){return new BPromise(function(_0x41ec9b,_0x4a6f55){var _0x55600c=sox[_0x3113('0x25')](_0x172875,_0x41ca6f,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x55600c['on'](_0x3113('0x1e'),function(_0x3b82b8){logger['error'](_0x3113('0x26'),_0x3b82b8);_0x4a6f55(_0x3b82b8);});_0x55600c['on'](_0x3113('0x22'),function(){logger[_0x3113('0x1c')]('finish\x20to\x20convert');_0x41ec9b();});_0x55600c['start']();});}function base64Decode(_0x458d5f,_0x4cdec5){var _0x511861=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+_0x3113('0x2a'));fs[_0x3113('0x2b')](_0x511861,_0x458d5f,_0x3113('0x2c'));return convertFile(_0x511861,_0x4cdec5)[_0x3113('0x2d')](function(){try{fs[_0x3113('0x1f')](_0x511861);fs[_0x3113('0x2e')](_0x4cdec5,_0x3113('0x2f'));}catch(_0x54db6b){logger[_0x3113('0x1e')](_0x54db6b);}return _0x4cdec5[_0x3113('0x30')]('.')[0x0];});}function base64Encode(_0x27ccbc){var _0x4fec25=fs[_0x3113('0x31')](_0x27ccbc);return new Buffer(_0x4fec25)[_0x3113('0x32')](_0x3113('0x2c'));}exports[_0x3113('0x33')]=function(_0x106f8d,_0x32508f,_0xbf43bf,_0x3607ec,_0x1834ef,_0x2e54aa){var _0xee85ca,_0x144042;var _0x28641e=_0x3113('0x34');var _0x3d04c5=_0x3113('0x35')+_0x106f8d;var _0x12c2b8={};if(_0x32508f==='ssml'){_0x12c2b8[_0x3113('0x36')]={'ssml':_0xbf43bf};}else{_0x12c2b8[_0x3113('0x36')]={'text':_0xbf43bf};};_0x12c2b8['voice']={'languageCode':_0x3607ec,'ssmlGender':_0x1834ef};_0x12c2b8[_0x3113('0x37')]={'audioEncoding':_0x3113('0x38'),'sampleRateHertz':0x1f40};var _0x57ff59={'url':_0x28641e+'text:synthesize'+_0x3d04c5,'method':'POST','json':!![],'body':_0x12c2b8};return rp(_0x57ff59)['then'](function(_0x4f9306){return new BPromise(function(_0x2ef664,_0x27e767){_0xee85ca=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+'.mp3');var _0x15e9f3=Buffer[_0x3113('0x39')](_0x4f9306[_0x3113('0x3a')],_0x3113('0x2c'));return fs[_0x3113('0x3b')](_0xee85ca,_0x15e9f3,function(_0x3dbc0e){_0x27e767(_0x3dbc0e);},function(_0x2e5a95){fs[_0x3113('0x2e')](_0xee85ca,_0x3113('0x2f'));_0x2ef664(_0x2e5a95);});});})[_0x3113('0x2d')](function(_0x359afd){_0x144042=path[_0x3113('0x27')](__dirname,'tmp',rs[_0x3113('0x29')](0x4)+'.wav');return convertFile(_0xee85ca,_0x144042);})[_0x3113('0x2d')](function(){try{fs[_0x3113('0x1f')](_0xee85ca);fs[_0x3113('0x2e')](_0x144042,'777');}catch(_0x39bab5){logger[_0x3113('0x1e')](_0x39bab5);}logger['info'](_0x3113('0x3c'),_0x144042[_0x3113('0x30')]('.')[0x0]);return _0x144042[_0x3113('0x30')]('.')[0x0];});};exports[_0x3113('0x3d')]=function(_0x4e4881,_0x55757a){var _0x2cb169=_0x3113('0x3e');var _0xaf936d,_0x1d6f63;var _0x61e0af;var _0x208aa9={'encoding':'utf8','method':_0x3113('0x3f'),'timeout':0x2710,'url':_0x2cb169,'headers':{'Content-Type':_0x3113('0x40')},'body':_0x3113('0x41')+encodeURIComponent(JSON[_0x3113('0x42')]([[[_0x3113('0x43'),JSON[_0x3113('0x42')]([_0x4e4881,_0x55757a||'en',![],_0x3113('0x44')]),null,_0x3113('0x45')]]]))};return rp(_0x208aa9)['then'](function(_0x471b7e){try{_0x61e0af=eval(_0x471b7e[_0x3113('0x46')](0x5))[0x0][0x2];}catch(_0x5a2038){throw new Error('parse\x20response\x20failed:\x0a'+_0x471b7e[_0x3113('0x24')]);}if(!_0x61e0af){if(_0x4e4881[_0x3113('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x3113('0x48')+_0x55757a+_0x3113('0x49'));}}try{_0x61e0af=eval(_0x61e0af)[0x0];}catch(_0x3c8340){throw new Error(_0x3113('0x4a')+res['data']);}const _0x4e7345=_0x61e0af;_0xaf936d=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs['generate'](0x4)+'.mp3');fs[_0x3113('0x2b')](_0xaf936d,_0x61e0af,{'encoding':_0x3113('0x2c')});_0x1d6f63=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+_0x3113('0x2a'));return convertFile(_0xaf936d,_0x1d6f63);})[_0x3113('0x2d')](function(){try{fs[_0x3113('0x1f')](_0xaf936d);fs['chmodSync'](_0x1d6f63,'777');}catch(_0x1fd313){logger[_0x3113('0x1e')](_0x1fd313);}logger[_0x3113('0x1c')](_0x3113('0x4b'),_0x1d6f63[_0x3113('0x30')]('.')[0x0]);return _0x1d6f63[_0x3113('0x30')]('.')[0x0];});};exports['googleASR']=function(_0x39d918,_0x36cdaa,_0x2a65ac){return google['asr'](_0x39d918,_0x36cdaa,_0x2a65ac)[_0x3113('0x2d')](function(_0x5339f0){logger[_0x3113('0x1c')](_0x5339f0[_0x3113('0x4c')]);return rp(_0x5339f0);})[_0x3113('0x2d')](function(_0x113bb1){var _0x331a64='';var _0x2b928c=0x0;try{fs['unlink'](_0x39d918);}catch(_0x1777eb){logger['error'](_0x1777eb);}if(_0x113bb1&&_0x113bb1['results']){_0x331a64=_0x113bb1['results']['map'](function(_0x1c62d3){return _0x1c62d3&&_0x1c62d3['alternatives'][0x0]&&_0x1c62d3[_0x3113('0x4d')][0x0][_0x3113('0x4e')]?_0x1c62d3['alternatives'][0x0]['transcript']:'';})['join']('\x0a');_0x2b928c=_0x113bb1[_0x3113('0x4f')][_0x3113('0x50')](function(_0x1a843d){return _0x1a843d&&_0x1a843d['alternatives'][0x0]&&_0x1a843d[_0x3113('0x4d')][0x0][_0x3113('0x51')]?_0x1a843d['alternatives'][0x0][_0x3113('0x51')]:0x0;})[_0x3113('0x52')]('\x0a');}logger['info'](_0x3113('0x53'),_0x331a64);logger[_0x3113('0x1c')](_0x3113('0x54'),_0x2b928c);return{'transcript':_0x331a64,'confidence':_0x2b928c};})[_0x3113('0x55')](function(_0x4bcd0f){logger[_0x3113('0x1e')](_0x3113('0x56'),_0x4bcd0f[_0x3113('0x18')],_0x4bcd0f[_0x3113('0x57')],_0x4bcd0f[_0x3113('0x58')]);});};exports[_0x3113('0x59')]=function(_0x5a169f,_0x165398,_0x430cfc,_0x1d417a){var _0x182a35=apiai(_0x165398,{'language':_0x1d417a||'en'});return _0x182a35['textRequest'](_0x430cfc,{'sessionId':md5(_0x5a169f)})['then'](function(_0x191990){logger[_0x3113('0x1c')](JSON[_0x3113('0x42')](_0x191990));return{'source':_0x191990[_0x3113('0x5a')][_0x3113('0x5b')],'resolvedQuery':_0x191990[_0x3113('0x5a')][_0x3113('0x5c')],'action':_0x191990['result'][_0x3113('0x5d')],'actionIncomplete':_0x191990[_0x3113('0x5a')][_0x3113('0x5e')],'speech':_0x191990['result'][_0x3113('0x5f')]['speech'],'score':_0x191990[_0x3113('0x5a')][_0x3113('0x60')],'statusCode':_0x191990[_0x3113('0x61')][_0x3113('0x62')],'endConversation':_0x191990[_0x3113('0x5a')][_0x3113('0x63')][_0x3113('0x64')]||![],'isFallbackIntent':_0x191990[_0x3113('0x5a')][_0x3113('0x63')][_0x3113('0x65')]};});};exports[_0x3113('0x66')]=function(_0x2090dc,_0x5d1ef6,_0x50d045,_0x46a4ce,_0x13132a,_0x1dee6a){var _0x31405b=_0x46a4ce[_0x3113('0x67')](/\\n/g,'\x0a');var _0x229a3e={'credentials':{'private_key':_0x31405b,'client_email':_0x50d045}};var _0x161137=new dialogflow[(_0x3113('0x68'))](_0x229a3e);var _0x17343c=_0x161137['sessionPath'](_0x5d1ef6,md5(_0x2090dc));var _0x1327f5={'session':_0x17343c,'queryInput':{'text':{'text':_0x13132a,'languageCode':_0x1dee6a}}};return _0x161137[_0x3113('0x69')](_0x1327f5)['then'](function(_0x4029bf){if(_0x4029bf&&_0x4029bf[_0x3113('0x47')]){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x3113('0x42')](_0x4029bf));var _0x33485c=_0x4029bf[0x0];if(_0x33485c){var _0x5819e4={'action':_0x33485c[_0x3113('0x6a')][_0x3113('0x5d')],'allRequiredParamsPresent':_0x33485c[_0x3113('0x6a')][_0x3113('0x6b')],'endConversation':_0x33485c[_0x3113('0x6a')]['diagnosticInfo']&&_0x33485c[_0x3113('0x6a')][_0x3113('0x6c')][_0x3113('0x6d')]?_0x33485c[_0x3113('0x6a')]['diagnosticInfo'][_0x3113('0x6d')][_0x3113('0x6e')][_0x3113('0x6f')]:![],'fulfillmentText':_0x33485c[_0x3113('0x6a')][_0x3113('0x70')],'intentName':_0x33485c[_0x3113('0x6a')]['intent'][_0x3113('0x57')],'intentDisplayName':_0x33485c[_0x3113('0x6a')][_0x3113('0x71')][_0x3113('0x72')],'isFallbackIntent':_0x33485c['queryResult'][_0x3113('0x71')][_0x3113('0x73')],'languageCode':_0x33485c[_0x3113('0x6a')][_0x3113('0x74')],'queryText':_0x33485c[_0x3113('0x6a')]['queryText'],'responseId':_0x33485c['responseId'],'score':_0x33485c[_0x3113('0x6a')]['intentDetectionConfidence'],'speech':_0x33485c[_0x3113('0x6a')]['fulfillmentText'],'providerResponse':JSON[_0x3113('0x42')](_0x4029bf)};return _0x5819e4;}}});};exports[_0x3113('0x75')]=function(_0x470c38,_0x6734d6,_0x11e45b,_0x446e6f){return tilde[_0x3113('0x76')](_0x470c38,_0x6734d6,_0x11e45b,_0x446e6f)['then'](function(_0x17644f){try{fs[_0x3113('0x1f')](_0x470c38);}catch(_0x594f7d){logger[_0x3113('0x1e')](_0x594f7d);}logger[_0x3113('0x1c')](_0x3113('0x77'),_0x17644f[_0x3113('0x4e')]);logger[_0x3113('0x1c')]('Tilde\x20ASR\x20confidence',_0x17644f[_0x3113('0x51')]);return _0x17644f;});};exports['awsPolly']=function(_0x6580d6,_0x17d000,_0x57893e,_0x116d99,_0xa30104,_0x14553d){var _0x3fb217=path[_0x3113('0x27')](__dirname,'tmp',rs[_0x3113('0x29')](0x4)+'.mp3');var _0x3e9e5b;return aws[_0x3113('0x78')](_0x6580d6,_0x17d000,_0x57893e,_0x116d99,_0xa30104,_0x14553d,_0x3fb217)[_0x3113('0x2d')](function(){_0x3e9e5b=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+_0x3113('0x2a'));return convertFile(_0x3fb217,_0x3e9e5b);})['then'](function(){try{fs[_0x3113('0x1f')](_0x3fb217);fs['chmodSync'](_0x3e9e5b,_0x3113('0x2f'));}catch(_0x3a0df7){logger['error'](_0x3a0df7);}return _0x3e9e5b[_0x3113('0x30')]('.')[0x0];});};exports['awsLex']=function(_0x27036b,_0x48765e,_0x4c1dd3,_0x1dae69,_0x434e92,_0x22bd14){return aws[_0x3113('0x79')](_0x27036b,_0x48765e,_0x4c1dd3,_0x1dae69,_0x434e92,_0x22bd14)[_0x3113('0x2d')](function(_0x2c28e8){logger[_0x3113('0x1c')](JSON[_0x3113('0x42')](_0x2c28e8));return _0x2c28e8;});};exports[_0x3113('0x7a')]=function(_0x302676,_0xa168e6,_0xbe8927,_0x3c09a2){var _0x42a78e=util[_0x3113('0x7b')](_0x3113('0x7c'),ISPEECH_API,_0x302676,encodeURIComponent(_0xa168e6),_0xbe8927,_0x3c09a2);var _0x3392b9=path[_0x3113('0x27')](__dirname,'tmp',rs[_0x3113('0x29')](0x4)+'.mp3');var _0x381e76;return downloadFile(_0x42a78e,_0x3392b9)['then'](function(){_0x381e76=path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+_0x3113('0x2a'));return convertFile(_0x3392b9,_0x381e76);})[_0x3113('0x2d')](function(){try{fs['unlink'](_0x3392b9);fs[_0x3113('0x2e')](_0x381e76,'777');}catch(_0x1e29dd){logger[_0x3113('0x1e')](_0x1e29dd);}return _0x381e76['split']('.')[0x0];});};exports[_0x3113('0x7d')]=function(_0x48badf,_0x36570e,_0x4a107e,_0x4530aa){var _0xc02ca2=util[_0x3113('0x7b')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x36570e,_0x4a107e,base64Encode(_0x48badf),_0x4530aa?util[_0x3113('0x7b')](_0x3113('0x7e'),encodeURIComponent(_0x4530aa)):_0x3113('0x7f'));return uploadFile(_0xc02ca2)[_0x3113('0x2d')](function(_0x52c5c){return querystring[_0x3113('0x9')](_0x52c5c);});};exports[_0x3113('0x80')]=function(_0x516d84,_0x383f20){return sestek[_0x3113('0x81')](_0x516d84,_0x383f20)[_0x3113('0x2d')](function(_0x5bfdb9){logger['info'](JSON[_0x3113('0x42')](_0x5bfdb9));var _0x245a96={'speech':_0x5bfdb9['text'],'action':_0x5bfdb9[_0x3113('0x82')]?_0x5bfdb9[_0x3113('0x82')][_0x3113('0x83')]:undefined,'actiondata':_0x5bfdb9[_0x3113('0x82')]?_0x5bfdb9[_0x3113('0x82')][_0x3113('0x84')]:undefined};if(_0x5bfdb9['channelData']&&_0x5bfdb9['channelData']['AudioFromTts']){return base64Decode(_0x5bfdb9[_0x3113('0x82')]['AudioFromTts']['Data'],path[_0x3113('0x27')](__dirname,_0x3113('0x28'),rs[_0x3113('0x29')](0x4)+_0x3113('0x2a')))['then'](function(_0x4cc536){_0x245a96[_0x3113('0x85')]=_0x4cc536;return _0x245a96;});}return _0x245a96;});};exports[_0x3113('0x86')]=function(){return __dirname;};
\ No newline at end of file
index 1c0659e..8f34e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6515=['exports','./nda'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x6515,0xcb));var _0x5651=function(_0x3c8c33,_0x28e857){_0x3c8c33=_0x3c8c33-0x0;var _0x1e4c0d=_0x6515[_0x3c8c33];return _0x1e4c0d;};var nda=require(_0x5651('0x0'));module[_0x5651('0x1')]={'nda':nda};
\ No newline at end of file
+var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
index c7774a7..0863682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb04a=['agi','resolve','ndauth_url','/token','username','password','POST','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','stringify','request-promise','url','../../../../../config/logger'];(function(_0x436985,_0x2e7f0b){var _0x2a8d4d=function(_0x9aadd4){while(--_0x9aadd4){_0x436985['push'](_0x436985['shift']());}};_0x2a8d4d(++_0x2e7f0b);}(_0xb04a,0xcf));var _0xab04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb04a[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require(_0xab04('0x0'));var url=require(_0xab04('0x1'));var logger=require(_0xab04('0x2'))(_0xab04('0x3'));module['exports']=function(_0x28963e,_0x4657c4){var _0x20639d={'method':'POST','uri':url[_0xab04('0x4')](_0x4657c4[_0xab04('0x5')],_0xab04('0x6')),'form':{'grant_type':'password','username':_0x4657c4[_0xab04('0x7')],'password':_0x4657c4[_0xab04('0x8')]},'json':!![]};return rp(_0x20639d)['then'](function(_0x53a969){var _0x4d47f5={'method':_0xab04('0x9'),'uri':url['resolve'](_0x4657c4['ndassistant_url'],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x4657c4[_0xab04('0xa')]||_0xab04('0xb'),'channelId':_0xab04('0xc'),'conversation':{'id':_0x28963e[_0xab04('0xd')]},'from':{'id':_0x28963e[_0xab04('0xe')],'name':_0x28963e[_0xab04('0xf')]},'recipient':{'id':_0x28963e[_0xab04('0x10')],'name':_0x28963e[_0xab04('0x11')]},'text':_0x4657c4[_0xab04('0x12')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x53a969['access_token']},'json':!![]};if(_0x4657c4[_0xab04('0x13')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')][_0xab04('0x16')]=_0x4657c4['project'];}if(_0x4657c4[_0xab04('0x17')]=='1'){_0x4d47f5[_0xab04('0x14')]['channelData'][_0xab04('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xab04('0x19')};}if(_0x4657c4[_0xab04('0x1a')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')]['CustomAction']=_0x4657c4[_0xab04('0x1a')];if(_0x4657c4[_0xab04('0x1b')]){_0x4d47f5[_0xab04('0x14')][_0xab04('0x15')][_0xab04('0x1c')]=_0x4657c4['custom_action_data'];}}logger['info'](JSON[_0xab04('0x1d')](_0x4d47f5));return rp(_0x4d47f5);});};
\ No newline at end of file
+var _0x2557=['audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','../../../../../config/logger','agi','exports','/token','password','username','then','POST','resolve','ndassistant_url','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','text','body','channelData','ProjectName','project','ndagenerate_audio'];(function(_0x1d808f,_0x5d595d){var _0x38824a=function(_0x48258e){while(--_0x48258e){_0x1d808f['push'](_0x1d808f['shift']());}};_0x38824a(++_0x5d595d);}(_0x2557,0x11e));var _0x7255=function(_0x141da3,_0x5a4dfb){_0x141da3=_0x141da3-0x0;var _0x3e7b27=_0x2557[_0x141da3];return _0x3e7b27;};'use strict';var rp=require(_0x7255('0x0'));var url=require('url');var logger=require(_0x7255('0x1'))(_0x7255('0x2'));module[_0x7255('0x3')]=function(_0x1d8176,_0x1db25c){var _0x20bb40={'method':'POST','uri':url['resolve'](_0x1db25c['ndauth_url'],_0x7255('0x4')),'form':{'grant_type':_0x7255('0x5'),'username':_0x1db25c[_0x7255('0x6')],'password':_0x1db25c[_0x7255('0x5')]},'json':!![]};return rp(_0x20bb40)[_0x7255('0x7')](function(_0x2142a5){var _0x5b6aa4={'method':_0x7255('0x8'),'uri':url[_0x7255('0x9')](_0x1db25c[_0x7255('0xa')],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x1db25c[_0x7255('0xb')]||_0x7255('0xc'),'channelId':_0x7255('0xd'),'conversation':{'id':_0x1d8176[_0x7255('0xe')]},'from':{'id':_0x1d8176[_0x7255('0xf')],'name':_0x1d8176[_0x7255('0x10')]},'recipient':{'id':_0x1d8176[_0x7255('0x11')],'name':_0x1d8176['extension']},'text':_0x1db25c[_0x7255('0x12')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x2142a5['access_token']},'json':!![]};if(_0x1db25c['project']){_0x5b6aa4[_0x7255('0x13')][_0x7255('0x14')][_0x7255('0x15')]=_0x1db25c[_0x7255('0x16')];}if(_0x1db25c[_0x7255('0x17')]=='1'){_0x5b6aa4[_0x7255('0x13')][_0x7255('0x14')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x7255('0x18')};}if(_0x1db25c[_0x7255('0x19')]){_0x5b6aa4[_0x7255('0x13')][_0x7255('0x14')][_0x7255('0x1a')]=_0x1db25c[_0x7255('0x19')];if(_0x1db25c[_0x7255('0x1b')]){_0x5b6aa4[_0x7255('0x13')][_0x7255('0x14')][_0x7255('0x1c')]=_0x1db25c[_0x7255('0x1b')];}}logger[_0x7255('0x1d')](JSON[_0x7255('0x1e')](_0x5b6aa4));return rp(_0x5b6aa4);});};
\ No newline at end of file
index 34eeb6c..7222781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfafa=['./lib/api','exports'];(function(_0x411c35,_0x49868e){var _0x1cd407=function(_0xe02b9a){while(--_0xe02b9a){_0x411c35['push'](_0x411c35['shift']());}};_0x1cd407(++_0x49868e);}(_0xfafa,0x13a));var _0xafaf=function(_0x5aecf2,_0x39f419){_0x5aecf2=_0x5aecf2-0x0;var _0x1db641=_0xfafa[_0x5aecf2];return _0x1db641;};'use strict';var asr=require(_0xafaf('0x0'));module[_0xafaf('0x1')]=function(_0x8afe02,_0x37ca07,_0x5f4df3,_0x6668a5){return asr(_0x8afe02,_0x37ca07,_0x5f4df3,_0x6668a5);};
\ No newline at end of file
+var _0xff24=['./lib/api','exports'];(function(_0x233e35,_0xf33b71){var _0x183a97=function(_0xe3cabc){while(--_0xe3cabc){_0x233e35['push'](_0x233e35['shift']());}};_0x183a97(++_0xf33b71);}(_0xff24,0xb6));var _0x4ff2=function(_0x57bbfb,_0x2e63eb){_0x57bbfb=_0x57bbfb-0x0;var _0xd5a405=_0xff24[_0x57bbfb];return _0xd5a405;};'use strict';var asr=require(_0x4ff2('0x0'));module[_0x4ff2('0x1')]=function(_0x594b1c,_0xef1440,_0x4b27a3,_0x4ddca9){return asr(_0x594b1c,_0xef1440,_0x4b27a3,_0x4ddca9);};
\ No newline at end of file
index bae6d6b..0e9c3e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc402=['crypto','../../../../../../config/logger','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','terminate','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','message','bluebird','moment'];(function(_0x5cd675,_0x352cca){var _0x2379b0=function(_0x2e510b){while(--_0x2e510b){_0x5cd675['push'](_0x5cd675['shift']());}};_0x2379b0(++_0x352cca);}(_0xc402,0x17a));var _0x2c40=function(_0x33fb9a,_0x4d13f8){_0x33fb9a=_0x33fb9a-0x0;var _0x10aa70=_0xc402[_0x33fb9a];return _0x10aa70;};'use strict';var BPromise=require(_0x2c40('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x2c40('0x1'));var crypto=require(_0x2c40('0x2'));var logger=require(_0x2c40('0x3'))(_0x2c40('0x4'));module[_0x2c40('0x5')]=function(_0x57a03b,_0x4be8e0,_0x21f1f0,_0x5925cd){return new BPromise(function(_0x138c23,_0x11657d){logger[_0x2c40('0x6')](_0x2c40('0x7'),_0x5925cd||_0x2c40('0x8'));var _0x3af00f=new WebSocket(_0x5925cd||_0x2c40('0x8'),{'perMessageDeflate':![]});var _0x1010b7='';var _0x1ba74='0';var _0x341970='1';var _0x2340e9=_0x2c40('0x9');function _0x50bd00(_0x57aa83){var _0x373a72=crypto['createHash'](_0x2c40('0xa'));_0x373a72['update'](_0x57aa83);return _0x373a72[_0x2c40('0xb')](_0x2c40('0xc'));}function _0x372cee(){try{logger[_0x2c40('0x6')](_0x2c40('0xd'));var _0x16c240=moment()[_0x2c40('0xe')]();var _0x582715=_0x50bd00(_0x16c240+_0x4be8e0+_0x21f1f0);_0x3af00f[_0x2c40('0xf')](JSON[_0x2c40('0x10')]({'appID':_0x4be8e0,'timestamp':_0x16c240,'appKey':_0x582715}));var _0x4a8a0a=fs[_0x2c40('0x11')](_0x57a03b);_0x4a8a0a['on'](_0x2c40('0x12'),function(_0x3723e2){_0x3af00f[_0x2c40('0xf')](_0x3723e2);});_0x4a8a0a['on'](_0x2c40('0x13'),function(){_0x3af00f[_0x2c40('0xf')]('EOS');});}catch(_0x38316a){logger[_0x2c40('0x14')](_0x2c40('0x15'),JSON['stringify'](_0x38316a));_0x3af00f['terminate']();}}function _0xa25dac(_0x10f039){try{if(_0x10f039){var _0x754009=JSON[_0x2c40('0x16')](_0x10f039);switch(_0x754009[_0x2c40('0x17')]){case 0x0:if(_0x754009[_0x2c40('0x18')]){if(_0x754009[_0x2c40('0x18')][_0x2c40('0x19')]){logger['info'](_0x2c40('0x1a'),JSON[_0x2c40('0x10')](_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')]));_0x1010b7=_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')][0x0][_0x2c40('0x1c')];_0x1ba74=_0x754009[_0x2c40('0x18')][_0x2c40('0x1b')][0x0]['likelihood'];_0x341970='0';_0x2340e9=_0x2c40('0x1d');_0x3af00f[_0x2c40('0x1e')]();}}break;case 0x1:logger[_0x2c40('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x341970='1';_0x2340e9=_0x2c40('0x9');break;case 0x2:logger[_0x2c40('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x341970='2';_0x2340e9=_0x2c40('0x1f');break;case 0x9:logger['info']('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x341970='9';_0x2340e9='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x2c40('0x6')]('Authentication\x20failed.');_0x341970='10';_0x2340e9=_0x2c40('0x20');break;case 0xb:logger[_0x2c40('0x6')](_0x2c40('0x21'));_0x341970='11';_0x2340e9=_0x2c40('0x21');}}}catch(_0x55cd73){logger['error'](_0x2c40('0x22'),JSON[_0x2c40('0x10')](_0x55cd73));_0x3af00f[_0x2c40('0x1e')]();}}function _0x5eeb0e(){logger[_0x2c40('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x138c23({'transcript':_0x1010b7,'confidence':_0x1ba74,'status':_0x341970,'status_message':_0x2340e9});}function _0x579644(_0x13d673){logger['error'](_0x2c40('0x23'));if(!_[_0x2c40('0x24')](_0x13d673)){logger[_0x2c40('0x14')](_['isObject'](_0x13d673)?JSON[_0x2c40('0x10')](_0x13d673):_0x13d673);}}_0x3af00f['on']('open',_0x372cee);_0x3af00f['on'](_0x2c40('0x25'),_0xa25dac);_0x3af00f['on'](_0x2c40('0x13'),_0x5eeb0e);_0x3af00f['on'](_0x2c40('0x14'),_0x579644);});};
\ No newline at end of file
+var _0x500f=['stringify','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','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','isNil','isObject','open','message','bluebird','crypto','../../../../../../config/logger','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','unix'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x500f,0x8a));var _0xf500=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0x500f[_0x44b3bd];return _0x1efc4a;};'use strict';var BPromise=require(_0xf500('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require(_0xf500('0x1'));var logger=require(_0xf500('0x2'))('agi');module[_0xf500('0x3')]=function(_0x153020,_0x35329a,_0x3bf337,_0xe99f03){return new BPromise(function(_0x364ce0,_0x554592){logger[_0xf500('0x4')](_0xf500('0x5'),_0xe99f03||_0xf500('0x6'));var _0x5da909=new WebSocket(_0xe99f03||_0xf500('0x6'),{'perMessageDeflate':![]});var _0xacad69='';var _0x100179='0';var _0x583bdf='1';var _0x3a8b0f=_0xf500('0x7');function _0x16ac90(_0x1579ba){var _0x1b5871=crypto[_0xf500('0x8')](_0xf500('0x9'));_0x1b5871[_0xf500('0xa')](_0x1579ba);return _0x1b5871[_0xf500('0xb')](_0xf500('0xc'));}function _0x2d8357(){try{logger[_0xf500('0x4')]('Open\x20Tilde\x20ASR\x20socket');var _0x3cfcd4=moment()[_0xf500('0xd')]();var _0xa6d2c=_0x16ac90(_0x3cfcd4+_0x35329a+_0x3bf337);_0x5da909['send'](JSON[_0xf500('0xe')]({'appID':_0x35329a,'timestamp':_0x3cfcd4,'appKey':_0xa6d2c}));var _0x2c502a=fs['createReadStream'](_0x153020);_0x2c502a['on'](_0xf500('0xf'),function(_0x5a1c84){_0x5da909['send'](_0x5a1c84);});_0x2c502a['on'](_0xf500('0x10'),function(){_0x5da909['send'](_0xf500('0x11'));});}catch(_0x149f28){logger[_0xf500('0x12')](_0xf500('0x13'),JSON[_0xf500('0xe')](_0x149f28));_0x5da909[_0xf500('0x14')]();}}function _0x21802f(_0x503126){try{if(_0x503126){var _0x33df60=JSON[_0xf500('0x15')](_0x503126);switch(_0x33df60[_0xf500('0x16')]){case 0x0:if(_0x33df60[_0xf500('0x17')]){if(_0x33df60['result'][_0xf500('0x18')]){logger[_0xf500('0x4')]('Tilde\x20ASR\x20hypoteses',JSON['stringify'](_0x33df60['result'][_0xf500('0x19')]));_0xacad69=_0x33df60[_0xf500('0x17')][_0xf500('0x19')][0x0][_0xf500('0x1a')];_0x100179=_0x33df60[_0xf500('0x17')][_0xf500('0x19')][0x0][_0xf500('0x1b')];_0x583bdf='0';_0x3a8b0f='Success.';_0x5da909[_0xf500('0x14')]();}}break;case 0x1:logger[_0xf500('0x4')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x583bdf='1';_0x3a8b0f='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xf500('0x4')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x583bdf='2';_0x3a8b0f=_0xf500('0x1c');break;case 0x9:logger['info'](_0xf500('0x1d'));_0x583bdf='9';_0x3a8b0f=_0xf500('0x1d');break;case 0xa:logger['info']('Authentication\x20failed.');_0x583bdf='10';_0x3a8b0f=_0xf500('0x1e');break;case 0xb:logger[_0xf500('0x4')](_0xf500('0x1f'));_0x583bdf='11';_0x3a8b0f=_0xf500('0x1f');}}}catch(_0x2c4bd8){logger[_0xf500('0x12')](_0xf500('0x20'),JSON[_0xf500('0xe')](_0x2c4bd8));_0x5da909[_0xf500('0x14')]();}}function _0x1ef9ee(){logger['info'](_0xf500('0x21'));_0x364ce0({'transcript':_0xacad69,'confidence':_0x100179,'status':_0x583bdf,'status_message':_0x3a8b0f});}function _0x3db542(_0x16921e){logger[_0xf500('0x12')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xf500('0x22')](_0x16921e)){logger[_0xf500('0x12')](_[_0xf500('0x23')](_0x16921e)?JSON[_0xf500('0xe')](_0x16921e):_0x16921e);}}_0x5da909['on'](_0xf500('0x24'),_0x2d8357);_0x5da909['on'](_0xf500('0x25'),_0x21802f);_0x5da909['on'](_0xf500('0x10'),_0x1ef9ee);_0x5da909['on']('error',_0x3db542);});};
\ No newline at end of file
index 79cbf44..cbc4978 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5530=['./asr','exports'];(function(_0x5a8aa3,_0x2294d5){var _0x5d0458=function(_0x62d096){while(--_0x62d096){_0x5a8aa3['push'](_0x5a8aa3['shift']());}};_0x5d0458(++_0x2294d5);}(_0x5530,0x112));var _0x0553=function(_0x2d959f,_0x987285){_0x2d959f=_0x2d959f-0x0;var _0x554eec=_0x5530[_0x2d959f];return _0x554eec;};var asr=require(_0x0553('0x0'));module[_0x0553('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x8ae7=['./asr','exports'];(function(_0xa1401b,_0x52414c){var _0x2bd7f7=function(_0x5aabcb){while(--_0x5aabcb){_0xa1401b['push'](_0xa1401b['shift']());}};_0x2bd7f7(++_0x52414c);}(_0x8ae7,0x1d0));var _0x78ae=function(_0x72aca5,_0x1904fa){_0x72aca5=_0x72aca5-0x0;var _0x3dd4ce=_0x8ae7[_0x72aca5];return _0x3dd4ce;};var asr=require(_0x78ae('0x0'));module[_0x78ae('0x1')]={'asr':asr};
\ No newline at end of file
index 91e4f58..c705806 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(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0xe706,0xa3));var _0x6e70=function(_0x2dd12a,_0x441a94){_0x2dd12a=_0x2dd12a-0x0;var _0x52069c=_0xe706[_0x2dd12a];return _0x52069c;};'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(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x9c44[_0x5f1391];return _0x50ebe3;};'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 c08c31a..7ca0903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca7=['variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','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\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','replaceAll','join','exports','util','lodash','shelljs','randomstring','moment','../../config/logger','../../config/environment','../../config/environment/shared','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','rpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','mailRpc','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','arg_1','callerid','createSquareRecording','extension','priority','accountcode','file','createCmContact','isEmpty','random','lastName','isNil','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','format','%s/%s@from-sip/n','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','en-US','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','awsLex','aws_access_key_id','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','isPlainObject','%s.%s','setVariable','split','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','label','no\x20text\x20configured','MRCPSynth','result','noop','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','no\x20list\x20selected','delay','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','grammar','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','opts','Executed\x20command\x20%s','dialogflow','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','createSquareMessage','speech','out','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','audiofile','unlink','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','getTrunk','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','variable_id','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','Trying\x20aws\x20Polly\x20%s','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','AWS_LEX_%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','wav','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','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','Trying\x20ispeech\x20TTS\x20%s','.wav','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','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','math\x20%s','operation','%s[%s]','variable\x20%s[key]\x20set','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','record','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','sayPhonetic','account_id','no\x20mail\x20account\x20configured','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected'];(function(_0x5e7687,_0x4d1b77){var _0x516d68=function(_0x166c09){while(--_0x166c09){_0x5e7687['push'](_0x5e7687['shift']());}};_0x516d68(++_0x4d1b77);}(_0x4ca7,0x1e3));var _0x74ca=function(_0x5ea0bb,_0x90ae4b){_0x5ea0bb=_0x5ea0bb-0x0;var _0x34acaa=_0x4ca7[_0x5ea0bb];return _0x34acaa;};'use strict';var fs=require('fs');var util=require(_0x74ca('0x0'));var _=require(_0x74ca('0x1'));var sh=require(_0x74ca('0x2'));var odbc=require('odbc')();var rs=require(_0x74ca('0x3'));var moment=require(_0x74ca('0x4'));var Mustache=require('mustache');var rp=require('request-promise');var logger=require(_0x74ca('0x5'))('agi');var config=require(_0x74ca('0x6'));var shared=require(_0x74ca('0x7'));var scripts=require('./scripts');var FILES_PATH=_0x74ca('0x8');var recursiveMapAttributes=['rawHeaders',_0x74ca('0x9')];var verticesWithRetry=[_0x74ca('0xa'),_0x74ca('0xb'),_0x74ca('0xc')];var AGIVertices=function(_0xec5de5,_0x33507a,_0x116715){this['channel']=_0xec5de5;this[_0x74ca('0xd')]=_0x33507a;this['mailRpc']=_0x116715;};AGIVertices[_0x74ca('0xe')][_0x74ca('0xf')]=function(_0x5bf3eb,_0x27f6f7){this[_0x74ca('0xd')][_0x74ca('0x10')](_0x5bf3eb)[_0x74ca('0x11')](function(_0x13423a){_0x27f6f7(null,_0x13423a?_0x13423a[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x3ace02){_0x27f6f7(_0x3ace02);});};AGIVertices['prototype'][_0x74ca('0x14')]=function(_0x1d649c,_0x85ab5f){this[_0x74ca('0xd')][_0x74ca('0x15')](_0x1d649c)[_0x74ca('0x11')](function(_0xf72dc){_0x85ab5f(null,_0xf72dc?_0xf72dc[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x196b51){_0x85ab5f(_0x196b51);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x16')]=function(_0x1f11a7,_0x42b90e){this['rpc'][_0x74ca('0x17')](_0x1f11a7)[_0x74ca('0x11')](function(_0xdc8fc7){_0x42b90e(null,_0xdc8fc7?_0xdc8fc7[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x5769e1){_0x42b90e(_0x5769e1);});};AGIVertices['prototype'][_0x74ca('0x18')]=function(_0x13ad11,_0x1e7b92){this[_0x74ca('0xd')][_0x74ca('0x19')](_0x13ad11)[_0x74ca('0x11')](function(_0x4eab63){_0x1e7b92(null,_0x4eab63?_0x4eab63[_0x74ca('0x1a')]:![]);})[_0x74ca('0x13')](function(_0x4a85a5){_0x1e7b92(_0x4a85a5);});};AGIVertices['prototype']['getUser']=function(_0x22be63,_0x2f7bb1){this[_0x74ca('0xd')][_0x74ca('0x1b')](_0x22be63)[_0x74ca('0x11')](function(_0x1cae32){_0x2f7bb1(null,_0x1cae32?_0x1cae32[_0x74ca('0x12')]:![]);})[_0x74ca('0x13')](function(_0x1ceb6c){_0x2f7bb1(_0x1ceb6c);});};AGIVertices[_0x74ca('0xe')]['getTrunk']=function(_0x4c020c,_0x1aeded){this[_0x74ca('0xd')][_0x74ca('0x1c')](_0x4c020c)[_0x74ca('0x11')](function(_0x3ef087){_0x1aeded(null,_0x3ef087?_0x3ef087['name']:![]);})[_0x74ca('0x13')](function(_0x13ef53){_0x1aeded(_0x13ef53);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1d')]=function(_0x262978,_0x529ace){var _0x227930=this;this[_0x74ca('0xd')][_0x74ca('0x1e')](_0x262978)[_0x74ca('0x11')](function(_0x3491ef){_0x529ace(null,_0x3491ef?_0x227930[_0x74ca('0x1f')](_0x3491ef['save_name']):![]);})['catch'](function(_0x42e048){_0x529ace(_0x42e048);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x20')]=function(_0x27da17,_0x92cc29){this['rpc'][_0x74ca('0x21')](_0x27da17)[_0x74ca('0x11')](function(_0x52f02e){_0x92cc29(null,_0x52f02e?_0x52f02e:![]);})[_0x74ca('0x13')](function(_0x3d0800){_0x92cc29(_0x3d0800);});};AGIVertices['prototype'][_0x74ca('0x22')]=function(_0x761513,_0x130a4f,_0xf4972b){this[_0x74ca('0x23')][_0x74ca('0x22')](_0x761513,_0x130a4f)[_0x74ca('0x11')](function(){_0xf4972b(null);})['catch'](function(_0x4d3f62){_0xf4972b(_0x4d3f62);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x24')]=function(_0x3c140d,_0x1881a0){this[_0x74ca('0xd')][_0x74ca('0x25')](_0x3c140d)[_0x74ca('0x11')](function(_0x5466e3){if(_0x5466e3){if(_0x5466e3[_0x74ca('0x26')]){_0x1881a0(null,[_0x5466e3[_0x74ca('0x27')]]);}else{_0x1881a0(null,_[_0x74ca('0x28')](_0x5466e3[_0x74ca('0x29')],_0x74ca('0x27')));}}else{_0x1881a0(null,![]);}})[_0x74ca('0x13')](function(_0x3eacf8){_0x1881a0(_0x3eacf8);});};AGIVertices[_0x74ca('0xe')]['getSoundPath']=function(_0x3d4e45){return util['format'](_0x74ca('0x2a'),FILES_PATH,_0x3d4e45);};AGIVertices['prototype'][_0x74ca('0x2b')]=function(_0x1430c9,_0x54bb1d,_0x3413eb){odbc[_0x74ca('0x2c')](_0x1430c9,function(_0x4b0829){if(_0x4b0829){logger[_0x74ca('0x2d')](_0x74ca('0x2e'),_0x4b0829);_0x3413eb(_0x4b0829);}else{logger['info'](_0x74ca('0x2f'));odbc['query'](_0x54bb1d,function(_0x39fc9a,_0x2b910d){if(_0x39fc9a){logger[_0x74ca('0x30')](_0x74ca('0x31'),_0x54bb1d);_0x3413eb(_0x39fc9a);}else{logger[_0x74ca('0x30')](_0x74ca('0x32'),_0x54bb1d);odbc[_0x74ca('0x33')](function(_0x4c1635){if(_0x4c1635){logger[_0x74ca('0x2d')](_0x74ca('0x34'),_0x4c1635);}_0x3413eb(null,_0x2b910d);});}});}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x35')]=function(_0x3e8870,_0x145994){this[_0x74ca('0xd')][_0x74ca('0x36')](_0x3e8870)[_0x74ca('0x11')](function(_0x43a3ed){_0x145994(null,_0x43a3ed?_0x43a3ed:![]);})[_0x74ca('0x13')](function(_0x5b07e8){_0x145994(_0x5b07e8);});};AGIVertices['prototype'][_0x74ca('0x37')]=function(_0x10875d,_0x5ca35b){this[_0x74ca('0xd')]['createSmsMessage'](_0x10875d)[_0x74ca('0x11')](function(_0x2e9a37){_0x5ca35b(null,_0x2e9a37);})[_0x74ca('0x13')](function(_0x2ee173){_0x5ca35b(_0x2ee173);});};AGIVertices['prototype'][_0x74ca('0x38')]=function(_0x15a093,_0x2f3685,_0x360b37){this['rpc']['createSquareDetailsReport']({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'node':_0x15a093['label'],'application':_0x15a093['agicommand'],'data':_0x2f3685||null,'project_name':this[_0x74ca('0x39')][_0x74ca('0x3b')],'callerid':this[_0x74ca('0x39')][_0x74ca('0x3c')]})['then'](function(_0x5198c6){if(_0x360b37){_0x360b37(null,_0x5198c6);}})['catch'](function(_0x117f98){if(_0x360b37){_0x360b37(_0x117f98);}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x3d')]=function(_0x2957b7,_0x4d9874,_0x58ec1b,_0xa75116){this[_0x74ca('0xd')][_0x74ca('0x3d')]({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'callerid':this[_0x74ca('0x39')][_0x74ca('0x3c')],'calleridname':this[_0x74ca('0x39')]['calleridname'],'context':this[_0x74ca('0x39')]['context'],'extension':this[_0x74ca('0x39')][_0x74ca('0x3e')],'priority':this[_0x74ca('0x39')][_0x74ca('0x3f')],'accountcode':this[_0x74ca('0x39')][_0x74ca('0x40')],'dnid':this[_0x74ca('0x39')]['dnid'],'projectName':this[_0x74ca('0x39')][_0x74ca('0x3b')],'saveName':_0x4d9874,'filename':_0x2957b7[_0x74ca('0x41')]||_0x4d9874,'savePath':_0x58ec1b})[_0x74ca('0x11')](function(_0x5dddd3){_0xa75116(null,_0x5dddd3);})[_0x74ca('0x13')](function(_0x337b97){_0xa75116(_0x337b97);});};AGIVertices[_0x74ca('0xe')]['createSquareMessage']=function(_0x50aa19,_0x269e65,_0x3a0d02,_0x42ed76,_0x516f8e){this[_0x74ca('0xd')]['createSquareMessage']({'uniqueid':this[_0x74ca('0x39')][_0x74ca('0x3a')],'body':_0x50aa19,'direction':_0x269e65,'providerName':_0x3a0d02,'providerResponse':_0x42ed76})[_0x74ca('0x11')](function(_0x74d6a0){if(_0x516f8e){_0x516f8e(null,_0x74d6a0);}})['catch'](function(_0x3c4ef6){if(_0x516f8e){_0x516f8e(_0x3c4ef6);}});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x42')]=function(_0x2ae0b8,_0x3d68f6){this['rpc'][_0x74ca('0x42')]({'firstName':_[_0x74ca('0x43')](_0x2ae0b8[_0x74ca('0x12')])||_['isNil'](_0x2ae0b8[_0x74ca('0x12')])?'callback_'+Math[_0x74ca('0x44')]():_0x2ae0b8[_0x74ca('0x12')],'lastName':_[_0x74ca('0x43')](_0x2ae0b8[_0x74ca('0x45')])||_[_0x74ca('0x46')](_0x2ae0b8[_0x74ca('0x45')])?null:_0x2ae0b8[_0x74ca('0x45')],'phone':_0x2ae0b8[_0x74ca('0x47')],'ListId':_0x2ae0b8[_0x74ca('0x48')],'scheduledat':_0x2ae0b8[_0x74ca('0x49')],'callbackUniqueid':this['channel'][_0x74ca('0x3a')],'tags':_0x74ca('0x4a'),'description':_0x74ca('0x4b')+_0x2ae0b8[_0x74ca('0x49')][_0x74ca('0x4c')](),'priority':_0x2ae0b8[_0x74ca('0x4d')]})[_0x74ca('0x11')](function(_0x3bfa45){_0x3d68f6(null,_0x3bfa45);})[_0x74ca('0x13')](function(_0x1c18c1){_0x3d68f6(_0x1c18c1);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x4e')]=function(_0x2bbebf,_0x152a0e){this[_0x74ca('0xd')][_0x74ca('0x4f')](_0x2bbebf)['then'](function(_0x2be321){_0x152a0e(null,_0x2be321?_0x2be321[_0x74ca('0x12')]:![]);})['catch'](function(_0x55139e){_0x152a0e(_0x55139e);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x50')]=function(_0x15b9fa,_0x2b7d42,_0x51c7c9){var _0x234120={'role':_0x74ca('0x51')};_0x234120[_0x15b9fa]=this[_0x74ca('0x39')][_0x74ca('0x3c')];this[_0x74ca('0xd')][_0x74ca('0x50')](_0x234120,_0x2b7d42,this['channel']['uniqueid'])[_0x74ca('0x11')](function(_0xa8f708){_0x51c7c9(null,_[_0x74ca('0x46')](_0xa8f708)?![]:!![]);})[_0x74ca('0x13')](function(_0x31dba8){logger[_0x74ca('0x2d')](_0x31dba8);_0x51c7c9(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x52')]=function(_0x165ea6,_0x411d29){var _0x572e4e={'role':'agent'};_0x572e4e[_0x165ea6]=this[_0x74ca('0x39')][_0x74ca('0x3c')];this[_0x74ca('0xd')]['agentUnpause'](_0x572e4e)[_0x74ca('0x11')](function(_0x19f4cf){_0x411d29(null,_[_0x74ca('0x46')](_0x19f4cf)?![]:!![]);})['catch'](function(_0x1a8ad6){logger[_0x74ca('0x2d')](_0x1a8ad6);_0x411d29(null,![]);});};AGIVertices['prototype'][_0x74ca('0x53')]=function(_0xbfb8e1,_0x56d3e2){var _0x29ab6b={'role':_0x74ca('0x51')};_0x29ab6b[_0xbfb8e1]=this['channel'][_0x74ca('0x3c')];this[_0x74ca('0xd')][_0x74ca('0x53')](_0x29ab6b)[_0x74ca('0x11')](function(_0x3fa3f8){_0x56d3e2(null,_[_0x74ca('0x46')](_0x3fa3f8)?![]:!![]);})[_0x74ca('0x13')](function(_0xa6e574){logger[_0x74ca('0x2d')](_0xa6e574);_0x56d3e2(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x54')]=function(_0x18b074,_0xa709fa){var _0x384c48={'role':_0x74ca('0x51')};_0x384c48[_0x18b074]=this[_0x74ca('0x39')][_0x74ca('0x3c')];var _0x29fc24=_0x18b074!='internal'?util[_0x74ca('0x55')](_0x74ca('0x56'),'LOCAL',this[_0x74ca('0x39')][_0x74ca('0x3c')]):undefined;this[_0x74ca('0xd')]['agentLogin'](_0x384c48,_0x29fc24)['then'](function(_0x507e77){_0xa709fa(null,_['isNil'](_0x507e77)?![]:!![]);})['catch'](function(_0x9a5dce){logger[_0x74ca('0x2d')](_0x9a5dce);_0xa709fa(null,![]);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x57')]=function(_0x2eaae7,_0xc8749c){sh[_0x74ca('0x58')](_[_0x74ca('0x59')](_0x2eaae7),function(_0x57677b,_0x5559de){var _0x18c8a8=_0x5559de[_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'');_0xc8749c(null,_0x18c8a8);});};AGIVertices[_0x74ca('0xe')]['googleCloudTTS']=function(_0x4b727a,_0x497dfb){scripts[_0x74ca('0x5b')](_0x4b727a[_0x74ca('0x5c')],_0x4b727a[_0x74ca('0x5d')]||'text',_0x4b727a[_0x74ca('0x5e')],_0x4b727a[_0x74ca('0x5f')]||'en-US',_0x4b727a[_0x74ca('0x60')]||_0x74ca('0x61'),_0x4b727a[_0x74ca('0x62')]||_0x74ca('0x63'))[_0x74ca('0x11')](function(_0x490886){_0x497dfb(null,_0x490886);})[_0x74ca('0x13')](function(_0x1a86ef){_0x497dfb(_0x1a86ef);});};AGIVertices['prototype'][_0x74ca('0x64')]=function(_0x31057a,_0x429efd){scripts[_0x74ca('0x64')](_0x31057a['text'],_0x31057a['google_tts_language']||'en',0x1)[_0x74ca('0x11')](function(_0x59789e){_0x429efd(null,_0x59789e);})[_0x74ca('0x13')](function(_0x369a7a){_0x429efd(_0x369a7a);});};AGIVertices['prototype'][_0x74ca('0x65')]=function(_0x3cacad,_0x15fafb){var _0x1ea9b9={'uri':_0x3cacad[_0x74ca('0x66')],'method':_0x3cacad['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x3cacad[_0x74ca('0x67')])===_0x74ca('0x68')&&parseInt(_0x3cacad[_0x74ca('0x67')])>=0x1?parseInt(_0x3cacad[_0x74ca('0x67')])*0x3e8:0x5*0x3e8};if(_[_0x74ca('0x69')]([_0x74ca('0x6a'),_0x74ca('0x6b')],_0x1ea9b9[_0x74ca('0x6c')][_0x74ca('0x6d')]())){try{_0x1ea9b9[_0x74ca('0x6e')]=_0x3cacad[_0x74ca('0x9')]?JSON[_0x74ca('0x6f')](_0x3cacad['rawBody']):{};}catch(_0x2259d0){logger[_0x74ca('0x2d')](_0x74ca('0x70'),_0x2259d0);}}try{_0x1ea9b9[_0x74ca('0x71')]=_0x3cacad[_0x74ca('0x72')]?JSON[_0x74ca('0x6f')](_0x3cacad[_0x74ca('0x72')]):{};}catch(_0x1c3462){logger[_0x74ca('0x2d')](_0x74ca('0x73'),_0x1c3462);}if(_0x3cacad[_0x74ca('0x74')]){try{var _0x2ca16f=require(_0x3cacad[_0x74ca('0x74')])[_0x74ca('0x75')](this,_0x1ea9b9);_0x1ea9b9[_0x74ca('0x76')]=Mustache['render'](_0x3cacad['url'],_0x2ca16f,{},['$$','$$']);if(_0x1ea9b9['headers']){_0x1ea9b9[_0x74ca('0x71')]=JSON['parse'](Mustache[_0x74ca('0x77')](JSON[_0x74ca('0x78')](_0x1ea9b9['headers']),_0x2ca16f,{},['$$','$$']));}if(_0x1ea9b9[_0x74ca('0x6e')]){_0x1ea9b9[_0x74ca('0x6e')]=JSON[_0x74ca('0x6f')](Mustache[_0x74ca('0x77')](JSON[_0x74ca('0x78')](_0x1ea9b9[_0x74ca('0x6e')]),_0x2ca16f,{},['$$','$$']));}}catch(_0x2e4e96){logger[_0x74ca('0x2d')](_0x74ca('0x79'),_0x2e4e96);}}rp(_0x1ea9b9)[_0x74ca('0x11')](function(_0x34f02b){var _0x171e98={'statusCode':_0x34f02b[_0x74ca('0x7a')]||0xc8,'statusMessage':_0x34f02b[_0x74ca('0x7b')]||'OK','headers':_0x34f02b[_0x74ca('0x71')]||{},'body':_0x34f02b[_0x74ca('0x6e')]||{}};_0x15fafb(null,_0x171e98);})['catch'](function(_0x40feca){var _0x9679ba={'statusCode':_0x40feca['statusCode']||0x1f4,'statusMessage':_0x40feca[_0x74ca('0x7c')]||_0x74ca('0x7d'),'headers':_0x40feca[_0x74ca('0x7e')]['headers']||{},'body':_0x40feca[_0x74ca('0x7e')][_0x74ca('0x6e')]||{}};_0x15fafb(null,_0x9679ba);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x7f')]=function(_0x51aa5e,_0x43bcee){scripts[_0x74ca('0x7f')](this[_0x74ca('0x39')]['uniqueid'],_0x51aa5e[_0x74ca('0x80')],_0x51aa5e[_0x74ca('0x5e')],_0x51aa5e['dialogflow_language']||'en')[_0x74ca('0x11')](function(_0xc16735){_0x43bcee(null,_0xc16735);})[_0x74ca('0x13')](function(_0x382672){_0x43bcee(_0x382672);});};AGIVertices[_0x74ca('0xe')]['googleDialogflowV2']=function(_0x59307c,_0x3466b6){scripts[_0x74ca('0x81')](this[_0x74ca('0x39')]['uniqueid'],_0x59307c[_0x74ca('0x82')],_0x59307c[_0x74ca('0x83')],_0x59307c[_0x74ca('0x84')],_0x59307c[_0x74ca('0x5e')],_0x59307c[_0x74ca('0x85')]||'en')[_0x74ca('0x11')](function(_0x2ca374){_0x3466b6(null,_0x2ca374);})[_0x74ca('0x13')](function(_0x635e59){_0x3466b6(_0x635e59);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x86')]=function(_0x5751ef,_0xf7ca2c){scripts['sestekNDA'](this['channel'],_0x5751ef)[_0x74ca('0x11')](function(_0x3dba73){_0xf7ca2c(null,_0x3dba73);})[_0x74ca('0x13')](function(_0x3361b7){_0xf7ca2c(_0x3361b7);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x87')]=function(_0x4e52c7,_0x3a163d){scripts[_0x74ca('0x87')](_0x4e52c7['key'],_0x4e52c7[_0x74ca('0x5e')],_0x4e52c7[_0x74ca('0x88')]||'en-US',_0x4e52c7[_0x74ca('0x89')])[_0x74ca('0x11')](function(_0x476f52){_0x3a163d(null,_0x476f52);})[_0x74ca('0x13')](function(_0x7c68a2){_0x3a163d(_0x7c68a2);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x8a')]=function(_0x2790b7,_0x250ed5,_0x1fc629){scripts['ispeechASR'](_0x250ed5,_0x2790b7[_0x74ca('0x80')],_0x2790b7[_0x74ca('0x8b')]||_0x74ca('0x8c'),this[_0x74ca('0x8d')](_0x2790b7[_0x74ca('0x8e')])?_0x2790b7['model']:undefined)['then'](function(_0x383928){_0x1fc629(null,_0x383928);})[_0x74ca('0x13')](function(_0x4de8e3){_0x1fc629(_0x4de8e3);});};AGIVertices['prototype'][_0x74ca('0x8f')]=function(_0x631731,_0x32773a){scripts['awsPolly'](_0x631731['aws_access_key_id'],_0x631731[_0x74ca('0x90')],_0x631731[_0x74ca('0x91')],_0x631731['aws_polly_voice']||'Amy',_0x631731[_0x74ca('0x5e')],_0x631731['aws_text_type']||_0x74ca('0x5e'))[_0x74ca('0x11')](function(_0x44992f){_0x32773a(null,_0x44992f);})[_0x74ca('0x13')](function(_0x3a142a){_0x32773a(_0x3a142a);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x92')]=function(_0x5d9a9a,_0x119b0e){scripts[_0x74ca('0x92')](this[_0x74ca('0x39')]['uniqueid'],_0x5d9a9a[_0x74ca('0x93')],_0x5d9a9a[_0x74ca('0x90')],_0x5d9a9a[_0x74ca('0x94')],_0x5d9a9a[_0x74ca('0x5e')],_0x5d9a9a[_0x74ca('0x95')])[_0x74ca('0x11')](function(_0x1a14af){_0x119b0e(null,_0x1a14af);})[_0x74ca('0x13')](function(_0xf635ac){_0x119b0e(_0xf635ac);});};AGIVertices['prototype'][_0x74ca('0x96')]=function(_0x2b2c80,_0x1f73cd,_0x4223e0){scripts['googleASR'](_0x1f73cd,_0x2b2c80[_0x74ca('0x80')],_0x2b2c80[_0x74ca('0x97')]||_0x74ca('0x8c'))[_0x74ca('0x11')](function(_0x545d23){_0x4223e0(null,_0x545d23);})[_0x74ca('0x13')](function(_0x4743fa){_0x4223e0(_0x4743fa);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x98')]=function(_0x2221f3,_0x648e3c,_0x16b525){scripts[_0x74ca('0x98')](_0x648e3c,_0x2221f3[_0x74ca('0x99')],_0x2221f3[_0x74ca('0x9a')],_0x2221f3['uri'])[_0x74ca('0x11')](function(_0x1047b4){_0x16b525(null,_0x1047b4);})['catch'](function(_0x1db6a4){_0x16b525(_0x1db6a4);});};AGIVertices[_0x74ca('0xe')][_0x74ca('0x9b')]=function(_0x44ad1a){var _0x26cfd0=_[_0x74ca('0x69')](verticesWithRetry,_0x44ad1a['agicommand'])?_0x44ad1a:_[_0x74ca('0x9c')](_0x44ad1a);for(var _0x54cdf3 in _0x26cfd0){if(_0x26cfd0[_0x74ca('0x9d')](_0x54cdf3)){if(_0x26cfd0[_0x54cdf3]&&_[_0x74ca('0x9e')](_0x26cfd0[_0x54cdf3])){if(_[_0x74ca('0x69')](recursiveMapAttributes,_0x54cdf3)){_0x26cfd0[_0x54cdf3]=this[_0x74ca('0x9f')](_0x26cfd0[_0x54cdf3]);}else{_0x26cfd0[_0x54cdf3]=this[_0x74ca('0xa0')](_0x26cfd0[_0x54cdf3]);}}}}return _0x26cfd0;};AGIVertices['prototype'][_0x74ca('0xa1')]=function(_0x42ca69){for(var _0x2d7e23 in _0x42ca69){if(_0x42ca69[_0x74ca('0x9d')](_0x2d7e23)){if(_['isPlainObject'](_0x42ca69[_0x2d7e23])){this['recursiveNodeIndex'](_0x42ca69[_0x2d7e23]);}else if(_[_0x74ca('0xa2')](_0x42ca69[_0x2d7e23])){for(var _0x2a3a62=0x0;_0x2a3a62<_0x42ca69[_0x2d7e23][_0x74ca('0xa3')];_0x2a3a62++){this[_0x74ca('0xa1')](_0x42ca69[_0x2d7e23][_0x2a3a62]);}}else if(_[_0x74ca('0x9e')](_0x42ca69[_0x2d7e23])){_0x42ca69[_0x2d7e23]=this[_0x74ca('0xa0')](_0x42ca69[_0x2d7e23]);}}}};AGIVertices[_0x74ca('0xe')][_0x74ca('0xa4')]=function(_0x5389f8,_0x24c633){for(var _0x1cc8bc in _0x5389f8){if(_0x5389f8[_0x74ca('0x9d')](_0x1cc8bc)){if(_[_0x74ca('0xa5')](_0x5389f8[_0x1cc8bc])){if(!_[_0x74ca('0x43')](_0x5389f8[_0x1cc8bc])){this[_0x74ca('0xa4')](_0x5389f8[_0x1cc8bc],util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x24c633,_0x1cc8bc));}}else if(_[_0x74ca('0xa2')](_0x5389f8[_0x1cc8bc])){for(var _0x353eca=0x0;_0x353eca<_0x5389f8[_0x1cc8bc][_0x74ca('0xa3')];_0x353eca++){this[_0x74ca('0xa4')](_0x5389f8[_0x1cc8bc][_0x353eca],util['format'](_0x74ca('0xa6'),_0x24c633,_0x1cc8bc+'['+_0x353eca+']'));}}else{if(!_[_0x74ca('0x46')](_0x5389f8[_0x1cc8bc])){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')]('%s.%s',_0x24c633,_0x1cc8bc),_0x5389f8[_0x1cc8bc]);}}}}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x9f')]=function(_0x2fb480){try{var _0x44987c=JSON['parse'](_0x2fb480);this['recursiveNodeIndex'](_0x44987c);return JSON[_0x74ca('0x78')](_0x44987c);}catch(_0x32e429){return this[_0x74ca('0xa0')](_0x2fb480);}};AGIVertices[_0x74ca('0xe')]['replaceAllVariables']=function(_0x7df75a){var _0x19f5b5=_0x7df75a[_0x74ca('0xa8')]('{');for(var _0x4689b6=0x1;_0x4689b6<_0x19f5b5[_0x74ca('0xa3')];_0x4689b6+=0x1){var _0x2a9548=_0x19f5b5[_0x4689b6]['split']('}');if(_0x2a9548['length']>0x1){_0x7df75a=_0x7df75a['replaceAll']('{'+_0x2a9548[0x0]+'}',this[_0x74ca('0x39')][_0x74ca('0xf')](_0x2a9548[0x0])[_0x74ca('0xa9')]||_0x2a9548[0x0]);}}if(_0x19f5b5[_0x74ca('0xa3')]===0x1){return _0x7df75a[_0x74ca('0x4c')]();}return this[_0x74ca('0xa0')](_0x7df75a);};AGIVertices[_0x74ca('0xe')][_0x74ca('0xaa')]=function(_0x323da7,_0x5528c3){var _0x52625=this[_0x74ca('0x39')][_0x74ca('0xf')](_0x323da7);if(_0x52625['result']===-0x1){return _0x52625;}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xab'),_0x5528c3,_0x52625[_0x74ca('0xa9')]));return this['channel'][_0x74ca('0xa7')](_0x5528c3,_0x52625[_0x74ca('0xa9')]);};AGIVertices[_0x74ca('0xe')]['isConfigured']=function(_0xb2e0d2){return _0xb2e0d2&&_0xb2e0d2!=='0'&&_0xb2e0d2!=='-1'&&_0xb2e0d2!=='';};AGIVertices[_0x74ca('0xe')][_0x74ca('0xac')]=function(_0x153e29){this[_0x74ca('0x38')]['sync'](this,_0x153e29,'-');_0x153e29[_0x74ca('0xad')]=_0x153e29['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x74ca('0xe')]['mrcpsynth']=function(_0x5d342a){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5d342a[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x5d342a[_0x74ca('0x5e')])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xaf'));}var _0x5b23c4='\x22'+_0x5d342a['text']+'\x22';if(this[_0x74ca('0x8d')](_0x5d342a[_0x74ca('0x7e')])){_0x5b23c4+=','+_0x5d342a[_0x74ca('0x7e')];}var _0x101244=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb0'),_0x5b23c4);if(_0x101244[_0x74ca('0xb1')]===-0x1){return _0x101244;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x5b23c4));};AGIVertices[_0x74ca('0xe')]['mrcprecog']=function(_0x4d973c){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xb4'),_0x4d973c['label']));if(!this[_0x74ca('0x8d')](_0x4d973c['grammar'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xb5'));}var _0x17eb0c=_0x4d973c['grammar'];if(this[_0x74ca('0x8d')](_0x4d973c[_0x74ca('0x7e')])){_0x17eb0c+=','+_0x4d973c[_0x74ca('0x7e')];}var _0x1574a1=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb6'),_0x17eb0c);if(_0x1574a1[_0x74ca('0xb1')]===-0x1){return _0x1574a1;}var _0x786c44=this[_0x74ca('0xaa')](_0x74ca('0xb7'),'MRCP_RECOG_CONFIDENCE');if(_0x786c44[_0x74ca('0xb1')]===-0x1){return _0x786c44;}var _0x35181b=this[_0x74ca('0xaa')](_0x74ca('0xb8'),'MRCP_RECOG_TRANSCRIPT');if(_0x35181b[_0x74ca('0xb1')]===-0x1){return _0x35181b;}var _0x5ece14=this['getAndSetVariable'](_0x74ca('0xb9'),_0x74ca('0xba'));if(_0x5ece14['result']===-0x1){return _0x5ece14;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xbb'),_0x17eb0c));};AGIVertices['prototype'][_0x74ca('0xbc')]=function(_0x4a2c7f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xbd'),_0x4a2c7f['label']));return this[_0x74ca('0x39')][_0x74ca('0xbc')]([_0x4a2c7f['command'],_0x4a2c7f['args']]);};AGIVertices[_0x74ca('0xe')]['answer']=function(_0x4e14ec){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x4e14ec[_0x74ca('0xae')]));if(this['isConfigured'](_0x4e14ec['timeout'])){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xbe'),_0x4e14ec[_0x74ca('0x67')]));var _0x4a4107=this[_0x74ca('0x39')][_0x74ca('0xbf')](_0x4e14ec[_0x74ca('0x67')]);if(_0x4a4107[_0x74ca('0xb1')]===-0x1){return _0x4a4107;}}return this[_0x74ca('0x39')][_0x74ca('0xc0')]();};AGIVertices[_0x74ca('0xe')][_0x74ca('0x4a')]=function(_0x3cca34){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x3cca34[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x3cca34[_0x74ca('0x48')])){return this[_0x74ca('0x39')]['error'](_0x3cca34,_0x74ca('0xc1'));}_0x3cca34[_0x74ca('0x49')]=moment();if(this[_0x74ca('0x8d')](_0x3cca34[_0x74ca('0xc2')])){_0x3cca34['scheduledAt']=moment()['add'](_0x3cca34[_0x74ca('0xc2')],_0x74ca('0xc3'));}if(!this[_0x74ca('0x8d')](_0x3cca34['callback_priority'])){_0x3cca34[_0x74ca('0x4d')]=0x2;}this[_0x74ca('0x42')][_0x74ca('0x75')](this,_0x3cca34);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc4'),_0x3cca34[_0x74ca('0x47')],_0x3cca34[_0x74ca('0x48')],_0x3cca34['scheduledAt']));};AGIVertices[_0x74ca('0xe')]['custom_app']=function(_0x5657a9){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xc5'),_0x5657a9[_0x74ca('0xae')]));var _0x2ee5b2=this[_0x74ca('0x39')]['exec'](_0x5657a9['application'],_0x5657a9[_0x74ca('0x7e')]);if(_0x2ee5b2[_0x74ca('0xb1')]===-0x1){return _0x2ee5b2;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xc6'),_0x5657a9['application'],_0x5657a9[_0x74ca('0x7e')]));};AGIVertices[_0x74ca('0xe')]['lumenvoxtts']=function(_0x1bf0ec){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xc7'),_0x1bf0ec['label']));if(!this[_0x74ca('0x8d')](_0x1bf0ec[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}var _0x2ff652='\x22'+_0x1bf0ec[_0x74ca('0x5e')]+'\x22';if(this[_0x74ca('0x8d')](_0x1bf0ec[_0x74ca('0x7e')])){_0x2ff652+=','+_0x1bf0ec[_0x74ca('0x7e')];}var _0x2c5887=this[_0x74ca('0x39')][_0x74ca('0x58')]('MRCPSynth',_0x2ff652);if(_0x2c5887['result']===-0x1){return _0x2c5887;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x2ff652));};AGIVertices[_0x74ca('0xe')]['sestektts']=function(_0x2dd9f5){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x2dd9f5[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2dd9f5[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}var _0x26c0b4='\x22'+_0x2dd9f5[_0x74ca('0x5e')]+'\x22';if(this[_0x74ca('0x8d')](_0x2dd9f5[_0x74ca('0x7e')])){_0x26c0b4+=','+_0x2dd9f5[_0x74ca('0x7e')];}var _0x3ba424=this['channel']['exec'](_0x74ca('0xb0'),_0x26c0b4);if(_0x3ba424['result']===-0x1){return _0x3ba424;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xb3'),_0x26c0b4));};AGIVertices[_0x74ca('0xe')]['lumenvoxasr']=function(_0x5381be){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x5381be['label']));if(!this[_0x74ca('0x8d')](_0x5381be['grammar'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xb5'));}var _0x310e3b=_0x5381be[_0x74ca('0xc8')];if(this['isConfigured'](_0x5381be['options'])){_0x310e3b+=','+_0x5381be['options'];}var _0x52c950=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0xb6'),_0x310e3b);if(_0x52c950[_0x74ca('0xb1')]===-0x1){return _0x52c950;}var _0xe62b3c=this['getAndSetVariable'](_0x74ca('0xb7'),'LUMENVOX_ASR_CONFIDENCE');if(_0xe62b3c[_0x74ca('0xb1')]===-0x1){return _0xe62b3c;}var _0xf461c1=this[_0x74ca('0xaa')]('RECOG_INPUT()',_0x74ca('0xc9'));if(_0xf461c1[_0x74ca('0xb1')]===-0x1){return _0xf461c1;}var _0x1ed49c=this[_0x74ca('0xaa')]('RECOG_INSTANCE()',_0x74ca('0xca'));if(_0x1ed49c['result']===-0x1){return _0x1ed49c;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xbb'),_0x310e3b));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xcb')]=function(_0x27e380){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x27e380[_0x74ca('0xae')]));if(!this['isConfigured'](_0x27e380['grammar'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xb5'));}var _0x5120e0=_0x27e380['grammar'];if(this[_0x74ca('0x8d')](_0x27e380[_0x74ca('0x7e')])){_0x5120e0+=','+_0x27e380[_0x74ca('0x7e')];}var _0x346b19=this[_0x74ca('0x39')]['exec'](_0x74ca('0xb6'),_0x5120e0);if(_0x346b19['result']===-0x1){return _0x346b19;}var _0x13f2f2=this[_0x74ca('0xaa')]('RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE');if(_0x13f2f2[_0x74ca('0xb1')]===-0x1){return _0x13f2f2;}var _0x5bf4fc=this[_0x74ca('0xaa')](_0x74ca('0xb8'),'SESTEK_ASR_TRANSCRIPT');if(_0x5bf4fc[_0x74ca('0xb1')]===-0x1){return _0x5bf4fc;}var _0x47f34f=this[_0x74ca('0xaa')](_0x74ca('0xb9'),_0x74ca('0xcc'));if(_0x47f34f[_0x74ca('0xb1')]===-0x1){return _0x47f34f;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xbb'),_0x5120e0));};AGIVertices['prototype'][_0x74ca('0xcd')]=function(_0x13a9ef){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0xce'),_0x13a9ef[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x13a9ef['odbc_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,'no\x20database\x20selected');}var _0xdc4716=this[_0x74ca('0x18')][_0x74ca('0x75')](this,_0x13a9ef['odbc_id']);if(!_0xdc4716){return this[_0x74ca('0x39')]['error'](_0x13a9ef,_0x74ca('0xcf'));}if(!this['isConfigured'](_0x13a9ef[_0x74ca('0xd0')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,_0x74ca('0xd1'));}var _0x278558=_0x13a9ef[_0x74ca('0xd0')][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0xd2'),_0x278558));var _0x37f5f4=this[_0x74ca('0x2b')]['sync'](this,_0xdc4716,_0x278558);this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x13a9ef,_0x278558);if(!this['isConfigured'](_0x13a9ef['variable_id'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xd3'));}var _0x443d05=this[_0x74ca('0xf')]['sync'](this,_0x13a9ef['variable_id']);if(!_0x443d05){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x13a9ef,_0x74ca('0xd4'));}var _0xd86abb=this;_0x37f5f4[_0x74ca('0xd5')](function(_0x26f230,_0x3558ad){Object[_0x74ca('0xd6')](_0x26f230)['forEach'](function(_0x180c35){_0xd86abb['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0xd7'),_0x443d05,_0x3558ad,_0x180c35),_0x26f230[_0x180c35]);});});this[_0x74ca('0x39')]['setVariable'](util['format'](_0x74ca('0xd8'),_0x443d05),_0x37f5f4[_0x74ca('0xa3')]);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0xd9'),_0x443d05));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xda')]=function(_0x5ba351){logger[_0x74ca('0xdb')](util[_0x74ca('0x55')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x5ba351[_0x74ca('0xae')]));if(!this['isConfigured'](_0x5ba351[_0x74ca('0xdc')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5ba351,_0x74ca('0xdd'));}var _0x2d0620=this[_0x74ca('0xde')][_0x74ca('0x75')](this,_0x5ba351[_0x74ca('0xdc')]);if(!_0x2d0620){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5ba351,_0x74ca('0xdf'));}var _0x2034d9=this[_0x74ca('0x39')]['exec'](_0x74ca('0xe0'),[util[_0x74ca('0x55')]('SIP/%s',_0x2d0620),_0x5ba351['timeout'],_0x5ba351[_0x74ca('0xe1')],_0x5ba351[_0x74ca('0x66')]]);if(_0x2034d9['result']===-0x1){return _0x2034d9;}return this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0xe2'),_0x74ca('0xe0')));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xe3')]=function(_0x14e691){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x14e691[_0x74ca('0xae')]));if(!this['isConfigured'](_0x14e691[_0x74ca('0x80')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20key\x20configured');}if(!this[_0x74ca('0x8d')](_0x14e691[_0x74ca('0x5e')])){return this['channel'][_0x74ca('0xb2')]('no\x20text\x20configured');}this[_0x74ca('0x39')][_0x74ca('0xe4')]=!![];this[_0x74ca('0x38')](_0x14e691);this['createSquareMessage'](_0x14e691['text'],'in','','');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xe5'),_0x14e691[_0x74ca('0x5e')]));var _0x47d13b=this[_0x74ca('0x7f')][_0x74ca('0x75')](this,_0x14e691);if(_0x47d13b){for(var _0x1096d6 in _0x47d13b){if(_0x47d13b[_0x74ca('0x9d')](_0x1096d6)){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0xe6'),_0x1096d6[_0x74ca('0x6d')]()),_0x47d13b[_0x1096d6]);}}this[_0x74ca('0xe7')](_0x47d13b[_0x74ca('0xe8')],_0x74ca('0xe9'),_0x74ca('0xe3'),'');return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('Dialogflow\x20Result\x20%s',_0x47d13b[_0x74ca('0xe8')]));}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x14e691,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0x74ca('0xe')][_0x74ca('0xea')]=function(_0x270c03){logger['info'](util['format'](_0x74ca('0xeb'),_0x270c03[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x270c03[_0x74ca('0x82')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20project_id\x20configured');}if(!this[_0x74ca('0x8d')](_0x270c03['client_email'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xec'));}if(!this[_0x74ca('0x8d')](_0x270c03[_0x74ca('0x84')])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0xed'));}if(!this['isConfigured'](_0x270c03[_0x74ca('0x85')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xee'));}if(!this['isConfigured'](_0x270c03[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20text\x20configured');}this[_0x74ca('0x39')][_0x74ca('0xe4')]=!![];this['createSquareDetailsReport'](_0x270c03);this[_0x74ca('0xe7')](_0x270c03['text'],'in','','');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xef'),_0x270c03[_0x74ca('0x5e')]));var _0x290247=this[_0x74ca('0x81')][_0x74ca('0x75')](this,_0x270c03);if(_0x290247){for(var _0x21f6bc in _0x290247){if(_0x290247[_0x74ca('0x9d')](_0x21f6bc)){if(_0x21f6bc!==_0x74ca('0xf0')){this[_0x74ca('0x39')][_0x74ca('0xa7')](util['format'](_0x74ca('0xe6'),_0x21f6bc['toUpperCase']()),_0x290247[_0x21f6bc]);}}}this[_0x74ca('0xe7')](_0x290247[_0x74ca('0xe8')],'out',_0x74ca('0xea'),_0x290247[_0x74ca('0xf0')]);return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xf1'),_0x290247[_0x74ca('0xe8')]));}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x270c03,_0x74ca('0xf2'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xf3')]=function(_0x1076de){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xf4'),_0x1076de[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xf5')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xf6'));}if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xf7')])){return this['channel']['noop'](_0x74ca('0xf8'));}if(!this[_0x74ca('0x8d')](_0x1076de['password'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xf9'));}if(!this[_0x74ca('0x8d')](_0x1076de[_0x74ca('0xfa')])){return this[_0x74ca('0x39')]['noop']('no\x20text\x20configured');}this[_0x74ca('0x39')]['bot']=!![];this[_0x74ca('0x38')](_0x1076de);this[_0x74ca('0xe7')](_0x1076de['text'],'in','','');this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xfb'),_0x1076de[_0x74ca('0x5e')]));var _0x23831c=this[_0x74ca('0x86')][_0x74ca('0x75')](this,_0x1076de);if(_0x23831c){for(var _0x50c9fb in _0x23831c){if(_0x23831c[_0x74ca('0x9d')](_0x50c9fb)){this['channel'][_0x74ca('0xa7')](util[_0x74ca('0x55')]('SESTEK_NDA_%s',_0x50c9fb[_0x74ca('0x6d')]()),_0x23831c[_0x50c9fb]);}}this[_0x74ca('0xe7')](_0x23831c[_0x74ca('0xe8')],'out',_0x74ca('0xf3'),'');if(_0x23831c[_0x74ca('0xfc')]){this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x23831c[_0x74ca('0xfc')]));var _0x50283c=this[_0x74ca('0x39')]['streamFile'](_0x23831c['audiofile']);try{fs[_0x74ca('0xfd')](_0x23831c['audiofile']+'.wav');}catch(_0x5dba5e){logger['error'](_0x5dba5e);}return _0x50283c;}else{return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('SestekNDA\x20Result\x20%s',_0x23831c[_0x74ca('0xe8')]));}}return this['channel'][_0x74ca('0x2d')](_0x1076de,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype'][_0x74ca('0xfe')]=function(_0x53a74d){logger['info'](util[_0x74ca('0x55')](_0x74ca('0xff'),_0x53a74d[_0x74ca('0xae')]));return this['channel'][_0x74ca('0xb2')](_0x74ca('0xfe'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x100')]=function(_0xf78252){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0xf78252[_0x74ca('0xae')]));var _0x40449b='';if(_0xf78252[_0x74ca('0x101')]){if(!this[_0x74ca('0x8d')](_0xf78252[_0x74ca('0x101')])){return this['channel'][_0x74ca('0x2d')](_0xf78252,_0x74ca('0x102'));}else{var _0x5cd79d=parseInt(_0xf78252['trunk_id'],0xa);if(isNaN(_0x5cd79d)){_0x40449b=_0xf78252[_0x74ca('0x101')];}else{_0x40449b=this[_0x74ca('0x103')][_0x74ca('0x75')](this,_0xf78252['trunk_id']);if(!_0x40449b){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0xf78252,'no\x20trunk\x20found');}}}}else if(_0xf78252[_0x74ca('0x104')]){_0x40449b=_0xf78252[_0x74ca('0x104')];}else{return this[_0x74ca('0x39')]['error'](_0xf78252,_0x74ca('0x102'));}var _0x561b17=this['channel']['exec'](_0x74ca('0xe0'),[util[_0x74ca('0x55')]('SIP/%s/%s',_0x40449b,_0xf78252[_0x74ca('0x47')]),_0xf78252[_0x74ca('0x67')],_0xf78252['opts'],_0xf78252[_0x74ca('0x66')]]);if(_0x561b17['result']===-0x1){return _0x561b17;}return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('Executed\x20command\x20%s',_0x74ca('0xe0')));};AGIVertices['prototype'][_0x74ca('0x105')]=function(_0x2ff192){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x106'),_0x2ff192['label']));return this['channel'][_0x74ca('0xb2')](_0x74ca('0x105'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0xb')]=function(_0x556591){logger['info'](util['format'](_0x74ca('0x107'),_0x556591[_0x74ca('0xae')]));if(_0x556591[_0x74ca('0xad')]===0x0){return this[_0x74ca('0xac')](_0x556591);}_0x556591[_0x74ca('0xad')]-=0x1;if(!this[_0x74ca('0x8d')](_0x556591['file_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x556591,_0x74ca('0x108'));}var _0x3a56bd=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x556591[_0x74ca('0x109')]);if(!_0x3a56bd){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x556591,_0x74ca('0x10a'));}if(!this[_0x74ca('0x8d')](_0x556591['variable_id'])){return this[_0x74ca('0x39')]['error'](_0x74ca('0xd3'));}var _0x681d9e=this[_0x74ca('0x39')][_0x74ca('0x10b')](_0x3a56bd,_0x556591[_0x74ca('0x10c')],_0x556591['maxdigit']);var _0x57c095=_0x681d9e[_0x74ca('0xb1')]?_0x681d9e[_0x74ca('0xb1')][_0x74ca('0x4c')]():'';logger[_0x74ca('0x30')](_0x74ca('0x10d'),JSON['stringify'](_0x681d9e));if(_0x681d9e[_0x74ca('0xb1')]===-0x1){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,_0x57c095);return _0x681d9e;}else if(_0x681d9e[_0x74ca('0xa9')]===_0x74ca('0x67')){_0x681d9e['result']=_0x57c095['length']>=parseInt(_0x556591[_0x74ca('0x10e')])?'x':'i';}else{_0x681d9e[_0x74ca('0xb1')]=_0x57c095[_0x74ca('0xa3')]>=parseInt(_0x556591[_0x74ca('0x10e')])&&_0x57c095[_0x74ca('0xa3')]<=parseInt(_0x556591[_0x74ca('0x10f')])?'x':'i';}var _0x19187d=this['getVariable'][_0x74ca('0x75')](this,_0x556591[_0x74ca('0x110')]);if(!_0x19187d){return this[_0x74ca('0x39')]['error'](_0x556591,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x19187d,_0x57c095);if(this[_0x74ca('0x8d')](_0x556591[_0x74ca('0x111')])){var _0x586fab=parseInt(_0x556591['hiddendigitsnum'],0xa);var _0xcac6fc=rs[_0x74ca('0x112')]({'charset':'*','length':_0x586fab});var _0xb56e6a=_0x57c095['length'];if(_0xb56e6a>0x0){if(_0xb56e6a>_0x586fab){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,_0x556591[_0x74ca('0x113')]===_0x74ca('0x114')?_0xcac6fc+_0x57c095[_0x74ca('0x115')](_0x586fab):_0x57c095[_0x74ca('0x115')](0x0,_0xb56e6a-_0x586fab)+_0xcac6fc);}else{this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x556591,rs[_0x74ca('0x112')]({'charset':'*','length':_0xb56e6a}));}}else{this['createSquareDetailsReport']['sync'](this,_0x556591,'');}}else{this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x556591,_0x57c095);}return _0x681d9e;};AGIVertices[_0x74ca('0xe')][_0x74ca('0xc')]=function(_0x388789){logger['info'](util['format'](_0x74ca('0x116'),_0x388789[_0x74ca('0xae')]));return this[_0x74ca('0xb')](_0x388789);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x117')]=function(_0x2413f2){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x118'),_0x2413f2[_0x74ca('0xae')]));this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x2413f2,_0x2413f2[_0x74ca('0x119')]);return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x11a'),_0x2413f2[_0x74ca('0x119')]));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x11b')]=function(_0x244d83){logger['info'](util[_0x74ca('0x55')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x244d83['label']));if(!this['isConfigured'](_0x244d83['aws_access_key_id'])||!this[_0x74ca('0x8d')](_0x244d83['aws_secret_access_key'])){return this['channel']['noop']('no\x20valid\x20credentials\x20configured');}if(!this[_0x74ca('0x8d')](_0x244d83['text'])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xaf'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x11c'),_0x244d83[_0x74ca('0x5e')]));var _0x495cc6=this[_0x74ca('0x8f')][_0x74ca('0x75')](this,_0x244d83);if(_0x495cc6){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('aws\x20Polly\x20%s\x20file\x20created',_0x495cc6));var _0xbb731=this[_0x74ca('0x39')][_0x74ca('0x11d')](_0x495cc6);try{fs[_0x74ca('0xfd')](_0x495cc6+'.wav');}catch(_0xf4391f){logger['error'](_0xf4391f);}return _0xbb731;}return this['channel']['error'](_0x244d83,_0x74ca('0x11e'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x11f')]=function(_0x23ca99){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x120'),_0x23ca99['label']));if(!this[_0x74ca('0x8d')](_0x23ca99['aws_access_key_id'])||!this[_0x74ca('0x8d')](_0x23ca99[_0x74ca('0x90')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x121'));}if(!this[_0x74ca('0x8d')](_0x23ca99['aws_bot_name'])){return this[_0x74ca('0x39')]['noop'](_0x74ca('0x122'));}if(!this[_0x74ca('0x8d')](_0x23ca99[_0x74ca('0x5e')])){return this[_0x74ca('0x39')]['noop']('no\x20text\x20configured');}this[_0x74ca('0x39')]['bot']=!![];this['createSquareDetailsReport'](_0x23ca99);this[_0x74ca('0xe7')](_0x23ca99['text'],'in','','');this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x123'),_0x23ca99[_0x74ca('0x5e')]));var _0x3f0368=this[_0x74ca('0x92')][_0x74ca('0x75')](this,_0x23ca99);if(_0x3f0368){for(var _0x389df3 in _0x3f0368){if(_0x3f0368[_0x74ca('0x9d')](_0x389df3)&&_[_0x74ca('0x9e')](_0x3f0368[_0x389df3])){this[_0x74ca('0x39')]['setVariable'](util['format'](_0x74ca('0x124'),_0x389df3['toUpperCase']()),_0x3f0368[_0x389df3]);}}if(_[_0x74ca('0x46')](_0x3f0368[_0x74ca('0x7c')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x74ca('0xe7')](_0x3f0368['message'],_0x74ca('0xe9'),_0x74ca('0x125'),'');return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x126'),_0x3f0368[_0x74ca('0x7c')]));}}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x23ca99,_0x74ca('0x127'));};AGIVertices['prototype'][_0x74ca('0x128')]=function(_0x227d68){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x129'),_0x227d68[_0x74ca('0xae')],_0x227d68[_0x74ca('0x67')]));if(!this[_0x74ca('0x8d')](_0x227d68[_0x74ca('0x80')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x12a'));}var _0x135dd1='wav';var _0x17f1a1=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0x3e5662=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x17f1a1,_0x135dd1);var _0x419505=!![];if(_0x227d68[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x419505=![];}var _0x4d253b=this[_0x74ca('0x39')][_0x74ca('0x12e')](_0x17f1a1,_0x135dd1,_0x227d68[_0x74ca('0x12f')],_0x227d68[_0x74ca('0x67')],undefined,_0x419505);if(_0x4d253b[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')](_0x74ca('0x130'),_0x3e5662));var _0x1148c6=this[_0x74ca('0x96')]['sync'](this,_0x227d68,_0x3e5662);if(_0x1148c6){for(var _0x3623e8 in _0x1148c6){if(_0x1148c6[_0x74ca('0x9d')](_0x3623e8)){this[_0x74ca('0x39')]['setVariable'](util[_0x74ca('0x55')](_0x74ca('0x131'),_0x3623e8[_0x74ca('0x6d')]()),_0x1148c6[_0x3623e8]);}}return this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x132'),JSON['stringify'](_0x1148c6)));}}return _0x4d253b;};AGIVertices[_0x74ca('0xe')]['tildeasr']=function(_0x39fb97){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x133'),_0x39fb97[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x39fb97['appid'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20appid\x20configured');}if(!this[_0x74ca('0x8d')](_0x39fb97[_0x74ca('0x9a')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20appsecret\x20configured');}var _0x2fe2e5=_0x74ca('0x134');var _0x2888e3=util[_0x74ca('0x55')]('%s/recordings/%s',FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0x118672=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x2888e3,_0x2fe2e5);var _0x3aa654=!![];if(_0x39fb97[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x3aa654=![];}var _0x40848a=this[_0x74ca('0x39')]['recordFile'](_0x2888e3,_0x2fe2e5,_0x39fb97[_0x74ca('0x12f')],_0x39fb97[_0x74ca('0x67')],undefined,_0x3aa654);if(_0x40848a[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format']('tilde\x20%s\x20file\x20created',_0x118672));var _0x9151f1=this['tildeASR'][_0x74ca('0x75')](this,_0x39fb97,_0x118672);if(_0x9151f1){for(var _0x5d8a2c in _0x9151f1){if(_0x9151f1[_0x74ca('0x9d')](_0x5d8a2c)){this[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')]('TILDE_ASR_%s',_0x5d8a2c[_0x74ca('0x6d')]()),_0x9151f1[_0x5d8a2c]);}}return this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0x135'),JSON[_0x74ca('0x78')](_0x9151f1)));}}return _0x40848a;};AGIVertices['prototype'][_0x74ca('0x136')]=function(_0x1d0a77){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x137'),_0x1d0a77['label']));return this[_0x74ca('0x39')][_0x74ca('0x138')](_0x1d0a77[_0x74ca('0x139')],_0x1d0a77[_0x74ca('0x3e')],_0x1d0a77['priority']);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x13a')]=function(_0x58dc65){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x13b'),_0x58dc65['label']));if(!this[_0x74ca('0x8d')](_0x58dc65[_0x74ca('0x13c')])){return this[_0x74ca('0x39')]['error'](_0x58dc65,_0x74ca('0x13d'));}try{var _0x17e4cc=eval(_0x58dc65[_0x74ca('0x13c')])?_0x74ca('0x13e'):_0x74ca('0x13f');this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x140'),_0x58dc65[_0x74ca('0x13c')],_0x17e4cc));return{'code':0xc8,'result':_0x17e4cc};}catch(_0x100c5f){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x141')]=function(_0x5837be){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x142'),_0x5837be[_0x74ca('0xae')]));if(!this['isConfigured'](_0x5837be[_0x74ca('0x143')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5837be,_0x74ca('0x144'));}var _0x536bff=this[_0x74ca('0x24')][_0x74ca('0x75')](this,_0x5837be['interval_id']);if(!_0x536bff){return this['channel']['error'](_0x5837be,'no\x20intervals\x20found');}for(var _0x36076d=0x0;_0x36076d<_0x536bff[_0x74ca('0xa3')];_0x36076d+=0x1){var _0x1a297a=this[_0x74ca('0x39')][_0x74ca('0xf')](util[_0x74ca('0x55')](_0x74ca('0x145'),_0x536bff[_0x36076d]));if(_0x1a297a[_0x74ca('0xb1')]===-0x1){return _0x1a297a;}logger['info'](util[_0x74ca('0x55')]('IFTIME\x20%s\x20%s',_0x536bff[_0x36076d],_0x1a297a['extra']));if(_0x1a297a['extra']===_0x74ca('0x13e')){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x146'),_0x536bff[_0x36076d],_0x74ca('0x13e')));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x146'),_0x536bff[_0x36076d],'true'));return{'code':0xc8,'result':_0x74ca('0x13e')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x146'),_0x536bff[_0x36076d],_0x74ca('0x13f')));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x146'),_0x536bff[_0x36076d],'false'));}}return{'code':0xc8,'result':_0x74ca('0x13f')};};AGIVertices[_0x74ca('0xe')]['hangup']=function(_0x277118){logger['info'](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x277118[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x147')]();};AGIVertices['prototype']['ispeechasr']=function(_0x56202f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x148'),_0x56202f[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x56202f[_0x74ca('0x80')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20key\x20configured');}var _0x2bb1e0=_0x74ca('0x134');var _0x13c7aa=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,rs[_0x74ca('0x112')](0x4));var _0xde88f9=util[_0x74ca('0x55')](_0x74ca('0xa6'),_0x13c7aa,_0x2bb1e0);var _0x9c577e=!![];if(_0x56202f[_0x74ca('0x12c')]===_0x74ca('0x12d')){_0x9c577e=![];}var _0x28e61d=this[_0x74ca('0x39')]['recordFile'](_0x13c7aa,_0x2bb1e0,_0x56202f[_0x74ca('0x12f')],_0x56202f[_0x74ca('0x67')],undefined,_0x9c577e);if(_0x28e61d[_0x74ca('0xb1')]!==-0x1){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x149'),_0xde88f9));var _0x15b673=this[_0x74ca('0x8a')][_0x74ca('0x75')](this,_0x56202f,_0xde88f9);if(_0x15b673){for(var _0x16e388 in _0x15b673){if(_0x15b673[_0x74ca('0x9d')](_0x16e388)){this['channel'][_0x74ca('0xa7')](util['format'](_0x74ca('0x14a'),_0x16e388[_0x74ca('0x6d')]()),_0x15b673[_0x16e388]);}}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x14b'),JSON[_0x74ca('0x78')](_0x15b673)));}}return _0x28e61d;};AGIVertices[_0x74ca('0xe')][_0x74ca('0x14c')]=function(_0x3a9034){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x14d'),_0x3a9034[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x3a9034[_0x74ca('0x80')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x12a'));}if(!this[_0x74ca('0x8d')](_0x3a9034[_0x74ca('0x5e')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xaf'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x14e'),_0x3a9034[_0x74ca('0x5e')]));var _0x16d1aa=this[_0x74ca('0x87')]['sync'](this,_0x3a9034);if(_0x16d1aa){this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')]('ispeech\x20%s\x20file\x20created',_0x16d1aa));var _0x4a9aad=this['channel'][_0x74ca('0x11d')](_0x16d1aa,_0x3a9034[_0x74ca('0x12f')]);try{fs['unlink'](_0x16d1aa+_0x74ca('0x14f'));}catch(_0x2cf5ef){logger[_0x74ca('0x2d')](_0x2cf5ef);}return _0x4a9aad;}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x3a9034,_0x74ca('0x150'));};AGIVertices[_0x74ca('0xe')]['login']=function(_0x58d054){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x151'),_0x58d054['label']));if(!this['isConfigured'](_0x58d054[_0x74ca('0x152')])){return this['channel']['error'](_0x58d054,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));var _0x563d65=this[_0x74ca('0x54')][_0x74ca('0x75')](this,_0x58d054[_0x74ca('0x152')]);if(_0x563d65){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x58d054[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')]['callerid'],_0x58d054['findBy']));this[_0x74ca('0x39')][_0x74ca('0xb2')](util['format'](_0x74ca('0x157'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x58d054[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x159')]=function(_0x304cd6){logger[_0x74ca('0x30')](util['format'](_0x74ca('0x15a'),_0x304cd6[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x304cd6[_0x74ca('0x152')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x304cd6,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this['channel'][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));var _0x4388b5=this['agentLogout'][_0x74ca('0x75')](this,_0x304cd6[_0x74ca('0x152')]);if(_0x4388b5){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6['findBy']));this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel'][_0x74ca('0x3c')],_0x304cd6[_0x74ca('0x152')]));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices['prototype'][_0x74ca('0x15b')]=function(_0x2ce394){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x15c'),_0x2ce394[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2ce394['operation'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2ce394,_0x74ca('0x15d'));}this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x15e'),_0x2ce394[_0x74ca('0x15f')]));var _0x2df812=eval(_0x2ce394[_0x74ca('0x15f')]);if(!this[_0x74ca('0x8d')](_0x2ce394['variable_id'])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0xd3'));}var _0x1ee005=this[_0x74ca('0xf')]['sync'](this,_0x2ce394[_0x74ca('0x110')]);if(!_0x1ee005){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2ce394,_0x74ca('0xd4'));}if(_['isArray'](_0x2df812)){var _0x23801b=this;_0x2df812[_0x74ca('0xd5')](function(_0x3065b7,_0x431bc8){_0x23801b[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')](_0x74ca('0x160'),_0x1ee005,_0x431bc8),_0x3065b7);});return this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')](_0x74ca('0x161'),_0x1ee005));}else{return this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x1ee005,_0x2df812);}};AGIVertices[_0x74ca('0xe')][_0x74ca('0xa')]=function(_0x1c3f90){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x1c3f90[_0x74ca('0xae')]));if(_0x1c3f90[_0x74ca('0xad')]===0x0){return this[_0x74ca('0xac')](_0x1c3f90);}_0x1c3f90[_0x74ca('0xad')]-=0x1;if(!this[_0x74ca('0x8d')](_0x1c3f90['file_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0x108'));}var _0x315e9a=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x1c3f90['file_id']);if(!_0x315e9a){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0x10a'));}var _0x25ab8a=this['channel']['getData'](_0x315e9a,_0x1c3f90[_0x74ca('0x10c')],_0x1c3f90[_0x74ca('0x162')]);var _0x34dc5=_0x25ab8a[_0x74ca('0xb1')];if(_0x25ab8a[_0x74ca('0xb1')]===-0x1){this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x1c3f90,'-1');return _0x25ab8a;}else if(_0x25ab8a[_0x74ca('0xa9')]==='timeout'){_0x25ab8a['result']=_0x25ab8a[_0x74ca('0xb1')][_0x74ca('0xa3')]>0x0?_0x25ab8a[_0x74ca('0xb1')]:'t';}else if(_['isEmpty'](_0x25ab8a['result'])){_0x25ab8a['result']='#';_0x34dc5='#';}if(!this[_0x74ca('0x8d')](_0x1c3f90['variable_id'])){this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0xd3'));}else{var _0x437972=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x1c3f90[_0x74ca('0x110')]);if(!_0x437972){return this['channel'][_0x74ca('0x2d')](_0x1c3f90,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x437972,_0x34dc5);}this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x1c3f90,_0x34dc5);return _0x25ab8a;};AGIVertices[_0x74ca('0xe')]['noop']=function(_0xda36d6){logger['info'](util['format'](_0x74ca('0x163'),_0xda36d6['label']));return this[_0x74ca('0x39')]['noop'](_0xda36d6[_0x74ca('0x164')]||_0xda36d6[_0x74ca('0xae')]);};AGIVertices['prototype'][_0x74ca('0x165')]=function(_0x2b8af5){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x2b8af5[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2b8af5[_0x74ca('0x152')])){return this[_0x74ca('0x39')]['error'](_0x2b8af5,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel']['callerid'],_0x2b8af5[_0x74ca('0x152')]));var _0x2e7490=this[_0x74ca('0x4e')]['sync'](this,_0x2b8af5['pause_id']);var _0x3472e9=this[_0x74ca('0x50')][_0x74ca('0x75')](this,_0x2b8af5[_0x74ca('0x152')],_0x2e7490);if(_0x3472e9){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x2b8af5[_0x74ca('0x152')]));this['channel']['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x2b8af5['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this[_0x74ca('0x39')]['callerid'],_0x2b8af5[_0x74ca('0x152')]));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x2b8af5['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x74ca('0xe')]['playback']=function(_0x5372d6){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x166'),_0x5372d6[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x5372d6[_0x74ca('0x109')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5372d6,_0x74ca('0x108'));}var _0x1fa168=this[_0x74ca('0x1d')][_0x74ca('0x75')](this,_0x5372d6[_0x74ca('0x109')]);if(!_0x1fa168){return this[_0x74ca('0x39')]['error'](_0x5372d6,_0x74ca('0x10a'));}var _0x5d96e7=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x167'),[_0x1fa168,_0x5372d6[_0x74ca('0xe1')]]);if(_0x5d96e7[_0x74ca('0xb1')]===-0x1){return _0x5d96e7;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),'PLAYBACK',_0x1fa168));};AGIVertices[_0x74ca('0xe')]['queue']=function(_0x45b351){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x168'),_0x45b351[_0x74ca('0xae')]));if(!this['isConfigured'](_0x45b351[_0x74ca('0x169')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x45b351,_0x74ca('0x16a'));}var _0x3f6d4a='';var _0xa2699=parseInt(_0x45b351[_0x74ca('0x169')],0xa);if(isNaN(_0xa2699)){_0x3f6d4a=_0x45b351[_0x74ca('0x169')];}else{_0x3f6d4a=this[_0x74ca('0x14')]['sync'](this,_0x45b351[_0x74ca('0x169')]);if(!_0x3f6d4a){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x45b351,_0x74ca('0x16b'));}}var _0x8e54b7='';if(this['isConfigured'](_0x45b351['file_id'])){var _0x135dc5=this['getSound'][_0x74ca('0x75')](this,_0x45b351[_0x74ca('0x109')]);if(_0x135dc5){_0x8e54b7=_0x135dc5;}}this['createSquareDetailsReport'][_0x74ca('0x75')](this,_0x45b351,_0x3f6d4a);if(_0x45b351[_0x74ca('0xe1')][_0x74ca('0x16c')]('x')<0x0){_0x45b351[_0x74ca('0xe1')]+='x';}if(_0x45b351[_0x74ca('0xe1')][_0x74ca('0x16c')]('X')<0x0){_0x45b351['opts']+='X';}this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x74ca('0x16d'),_0x3f6d4a?_0x3f6d4a['toLowerCase']():'');var _0xecfc6=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x16e'),[_0x3f6d4a,_0x45b351[_0x74ca('0xe1')],_0x45b351['url'],_0x8e54b7,_0x45b351['timeout'],_0x45b351[_0x74ca('0xbc')],_0x45b351[_0x74ca('0x16f')],_0x45b351['gosub'],'',_0x45b351['position']]);if(_0xecfc6[_0x74ca('0xb1')]===-0x1){return _0xecfc6;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),_0x74ca('0x16e'),_0x3f6d4a));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x170')]=function(_0x28d94c){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x28d94c['label']));var _0x2d905b=_0x28d94c['recordingFormat']||_0x74ca('0x134');var _0x125995=util[_0x74ca('0x55')](_0x74ca('0x171'),this[_0x74ca('0x39')][_0x74ca('0x3a')],rs[_0x74ca('0x112')](0x5));var _0x3d894b=util['format'](_0x74ca('0x172'),FILES_PATH,_0x125995,_0x2d905b);var _0x4d2edd=util[_0x74ca('0x55')](_0x74ca('0x12b'),FILES_PATH,_0x125995);this[_0x74ca('0x3d')]['sync'](this,_0x28d94c,_0x125995,_0x3d894b);this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x74ca('0x173'),_0x125995);logger[_0x74ca('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x4d2edd,_0x2d905b,_0x28d94c[_0x74ca('0x174')],_0x28d94c[_0x74ca('0x67')]);return this[_0x74ca('0x39')][_0x74ca('0x12e')](_0x4d2edd,_0x2d905b,_0x28d94c['escape_digits'],_0x28d94c[_0x74ca('0x67')],undefined,!![]);};AGIVertices['prototype'][_0x74ca('0x175')]=function(_0x54b2c7){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x176'),_0x54b2c7[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x54b2c7[_0x74ca('0x66')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x177'));}var _0x4ba15a=this[_0x74ca('0x65')][_0x74ca('0x75')](this,_0x54b2c7);logger['info'](util['format'](_0x74ca('0x178'),util[_0x74ca('0x179')](_0x4ba15a,{'showHidden':![],'depth':null})));if(!this[_0x74ca('0x8d')](_0x54b2c7[_0x74ca('0x110')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x17a'));}var _0x203063=this[_0x74ca('0xf')]['sync'](this,_0x54b2c7[_0x74ca('0x110')]);if(!_0x203063){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x54b2c7,_0x74ca('0xd4'));}this[_0x74ca('0x39')][_0x74ca('0xa7')](util[_0x74ca('0x55')]('%s_STATUS_CODE',_0x203063),_0x4ba15a['statusCode']?_0x4ba15a[_0x74ca('0x7a')]:_0x74ca('0x17b'));this['channel']['setVariable'](util['format'](_0x74ca('0x17c'),_0x203063),_0x4ba15a[_0x74ca('0x7b')]?_0x4ba15a[_0x74ca('0x7b')]:'OK');if(_0x4ba15a[_0x74ca('0x6e')]){try{this[_0x74ca('0xa4')](_0x4ba15a[_0x74ca('0x6e')],_0x203063);}catch(_0x2273af){logger[_0x74ca('0x2d')](util[_0x74ca('0x55')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x203063));}}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xd9'),_0x203063));};AGIVertices['prototype'][_0x74ca('0x17d')]=function(_0x47e168){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x17e'),_0x47e168[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x17f')](_0x47e168[_0x74ca('0x180')]['replace'](/\s+/g,''),_0x47e168[_0x74ca('0x174')]);};AGIVertices[_0x74ca('0xe')]['saynumber']=function(_0xa23797){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x181'),_0xa23797[_0x74ca('0xae')]));return this[_0x74ca('0x39')]['sayNumber'](_0xa23797[_0x74ca('0x68')][_0x74ca('0x5a')](/\s+/g,''),_0xa23797[_0x74ca('0x174')]);};AGIVertices[_0x74ca('0xe')][_0x74ca('0x182')]=function(_0x5b48ff){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x5b48ff[_0x74ca('0xae')]));return this[_0x74ca('0x39')][_0x74ca('0x183')](_0x5b48ff[_0x74ca('0x5e')],_0x5b48ff[_0x74ca('0x174')]);};AGIVertices['prototype']['sendMail']=function(_0x4b731b){logger['info'](util[_0x74ca('0x55')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x4b731b[_0x74ca('0xae')]));if(!this['isConfigured'](_0x4b731b[_0x74ca('0x184')])){return this['channel'][_0x74ca('0xb2')](_0x74ca('0x185'));}var _0x564ebb=this[_0x74ca('0x20')][_0x74ca('0x75')](this,_0x4b731b['account_id']);if(!_0x564ebb||!_0x564ebb[_0x74ca('0x186')]){return this['channel'][_0x74ca('0x2d')](_0x4b731b,'no\x20mail\x20account\x20found');}var _0x4c1040={'from':util[_0x74ca('0x55')](_0x74ca('0x187'),_0x564ebb[_0x74ca('0x12')],_0x564ebb[_0x74ca('0x188')]||_0x564ebb[_0x74ca('0x186')][_0x74ca('0x189')]),'to':_0x4b731b['to']||'','cc':_0x4b731b['cc']||'','bcc':_0x4b731b[_0x74ca('0x18a')]||'','subject':_0x4b731b[_0x74ca('0x18b')],'html':_0x4b731b[_0x74ca('0x5e')],'text':_0x4b731b['text']};if(this[_0x74ca('0x8d')](_0x4b731b[_0x74ca('0x18c')])){}logger[_0x74ca('0xdb')](_0x74ca('0x18d'),JSON[_0x74ca('0x78')](_0x4c1040));this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x4b731b,_0x4b731b['account_id']);this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x18e'),_0x564ebb[_0x74ca('0x12')]));this[_0x74ca('0x22')][_0x74ca('0x75')](this,_0x564ebb[_0x74ca('0x18f')],_0x4c1040);return this['channel'][_0x74ca('0xb2')](_0x74ca('0x190'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x191')]=function(_0x36344e){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x192'),_0x36344e[_0x74ca('0xae')]));return this[_0x74ca('0x39')]['noop']('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype'][_0x74ca('0x193')]=function(_0x2e452b){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x194'),_0x2e452b[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2e452b[_0x74ca('0x195')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x196'));}var _0x3f48b2=this[_0x74ca('0x35')][_0x74ca('0x75')](this,_0x2e452b[_0x74ca('0x195')]);if(!_0x3f48b2){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2e452b,_0x74ca('0x197'));}var _0x29b88e={'body':_0x2e452b[_0x74ca('0x198')],'phone':_0x2e452b['to']||'','SmsAccountId':_0x3f48b2['id']};logger[_0x74ca('0xdb')](_0x74ca('0x199'),JSON[_0x74ca('0x78')](_0x29b88e));this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x2e452b,_0x2e452b['sms_account_id']);this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x19a'),_0x3f48b2[_0x74ca('0x12')]));this[_0x74ca('0x37')][_0x74ca('0x75')](this,_0x29b88e);return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x19b'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x19c')]=function(_0x2b3b32){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x19d'),_0x2b3b32[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x2b3b32[_0x74ca('0x110')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2b3b32,_0x74ca('0x19e'));}var _0x5310c6=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x2b3b32[_0x74ca('0x110')]);if(!_0x5310c6){return this['channel']['error'](_0x2b3b32,_0x74ca('0xd4'));}return this['channel']['setVariable'](_0x5310c6,_0x2b3b32[_0x74ca('0x19f')]);};AGIVertices['prototype'][_0x74ca('0x1a0')]=function(_0x41c374){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1a1'),_0x41c374[_0x74ca('0xae')]));this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1a2'));if(_0x41c374[_0x74ca('0xc0')]===_0x74ca('0x1a3')){this['channel']['noop'](_0x74ca('0x1a4'));return this[_0x74ca('0x39')][_0x74ca('0xc0')]();}return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1a5'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1a6')]=function(_0x491a5f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1a7'),_0x491a5f['label']));if(!this[_0x74ca('0x8d')](_0x491a5f[_0x74ca('0x1a8')])){return this['channel'][_0x74ca('0x2d')](_0x491a5f,_0x74ca('0x1a9'));}var _0x1c49ac=this[_0x74ca('0x16')]['sync'](this,_0x491a5f[_0x74ca('0x1a8')]);if(!this[_0x74ca('0x8d')](_0x1c49ac)){return this['channel'][_0x74ca('0x2d')](_0x491a5f,util[_0x74ca('0x55')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x491a5f[_0x74ca('0x1a8')]));}if(_0x1c49ac===this[_0x74ca('0x39')]['arg_1']){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x491a5f,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x491a5f,_0x1c49ac);var _0x2fcacd=this[_0x74ca('0x39')][_0x74ca('0x58')]('AGI',util[_0x74ca('0x55')](_0x74ca('0x1aa'),config[_0x74ca('0xbc')][_0x74ca('0x1ab')]||_0x74ca('0x1ac'),_0x1c49ac,this[_0x74ca('0x39')][_0x74ca('0x3b')]));if(_0x2fcacd['result']===-0x1){return _0x2fcacd;}return this[_0x74ca('0x39')][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0xc6'),'AGI',_0x1c49ac));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1ad')]=function(_0x3b0e2f){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1ae'),_0x3b0e2f[_0x74ca('0xae')]));var _0x133de3=this['shellCommand'][_0x74ca('0x75')](this,_0x3b0e2f[_0x74ca('0x1af')]);this[_0x74ca('0x38')][_0x74ca('0x75')](this,_0x3b0e2f,_0x3b0e2f['command']);if(this['isConfigured'](_0x3b0e2f[_0x74ca('0x110')])){var _0x505a16=this[_0x74ca('0xf')][_0x74ca('0x75')](this,_0x3b0e2f[_0x74ca('0x110')]);if(_0x505a16){this[_0x74ca('0x39')][_0x74ca('0xa7')](_0x505a16,_0x133de3);return this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x3b0e2f['command'],_0x505a16));}}return this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3b0e2f['command']));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1b0')]=function(_0x5bb2ef){logger['info'](util[_0x74ca('0x55')](_0x74ca('0x1b1'),_0x5bb2ef[_0x74ca('0xae')]));_0x5bb2ef[_0x74ca('0x5e')]=_0x5bb2ef['text'][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x74ca('0x8d')](_0x5bb2ef[_0x74ca('0x5c')])){return this[_0x74ca('0x39')][_0x74ca('0xb2')](_0x74ca('0x1b2'));}if(!this[_0x74ca('0x8d')](_0x5bb2ef[_0x74ca('0x5e')])){return this['channel'][_0x74ca('0xb2')]('no\x20text\x20configured');}this['channel']['noop'](util[_0x74ca('0x55')](_0x74ca('0x1b3'),_0x5bb2ef[_0x74ca('0x5e')]));var _0x771593=this['googleCloudTTS'][_0x74ca('0x75')](this,_0x5bb2ef);if(_0x771593){this['channel']['noop'](util['format'](_0x74ca('0x1b4'),_0x771593));var _0x9d9c46=this[_0x74ca('0x39')]['streamFile'](_0x771593);try{fs[_0x74ca('0xfd')](_0x771593+'.wav');}catch(_0x4e88fa){logger['error'](_0x4e88fa);}return _0x9d9c46;}return this[_0x74ca('0x39')]['error'](_0x5bb2ef,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x74ca('0xe')]['tts']=function(_0x2be2d8){logger[_0x74ca('0x30')](util['format'](_0x74ca('0x1b5'),_0x2be2d8['label']));_0x2be2d8[_0x74ca('0x5e')]=_0x2be2d8[_0x74ca('0x5e')][_0x74ca('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x2be2d8['text'])){return this[_0x74ca('0x39')][_0x74ca('0xb2')]('no\x20text\x20configured');}this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x1b6'),_0x2be2d8['text']));var _0x1ee1dd=this[_0x74ca('0x64')][_0x74ca('0x75')](this,_0x2be2d8);if(_0x1ee1dd){this[_0x74ca('0x39')]['noop'](util[_0x74ca('0x55')]('Google\x20TTS\x20%s\x20file\x20created',_0x1ee1dd));var _0x21c094=this['channel'][_0x74ca('0x11d')](_0x1ee1dd);try{fs['unlink'](_0x1ee1dd+'.wav');}catch(_0x2cb193){logger[_0x74ca('0x2d')](_0x2cb193);}return _0x21c094;}return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x2be2d8,_0x74ca('0x1b7'));};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1b8')]=function(_0x5407f0){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1b9'),_0x5407f0['label']));if(!this['isConfigured'](_0x5407f0[_0x74ca('0x152')])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x5407f0,_0x74ca('0x153'));}logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x154'),this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x5407f0[_0x74ca('0x152')]));var _0x54aea6=this[_0x74ca('0x52')][_0x74ca('0x75')](this,_0x5407f0[_0x74ca('0x152')]);if(_0x54aea6){logger[_0x74ca('0x30')](util[_0x74ca('0x55')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x74ca('0x39')][_0x74ca('0x3c')],_0x5407f0[_0x74ca('0x152')]));this[_0x74ca('0x39')]['noop'](util['format'](_0x74ca('0x155'),this[_0x74ca('0x39')]['callerid'],_0x5407f0['findBy']));return{'code':0xc8,'result':_0x74ca('0x156')};}else{logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel']['callerid'],_0x5407f0['findBy']));this['channel'][_0x74ca('0xb2')](util[_0x74ca('0x55')](_0x74ca('0x157'),this['channel'][_0x74ca('0x3c')],_0x5407f0['findBy']));return{'code':0xc8,'result':_0x74ca('0x158')};}};AGIVertices[_0x74ca('0xe')][_0x74ca('0x1ba')]=function(_0x407173){logger[_0x74ca('0x30')](util[_0x74ca('0x55')](_0x74ca('0x1bb'),_0x407173[_0x74ca('0xae')]));var _0x4013ee=this[_0x74ca('0x39')][_0x74ca('0x58')](_0x74ca('0x1bc'),[_0x407173[_0x74ca('0x1bd')],_0x407173['options']]);if(_0x4013ee[_0x74ca('0xb1')]===-0x1){return _0x4013ee;}return this['channel'][_0x74ca('0xb2')](util['format']('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x407173['mailbox']));};AGIVertices[_0x74ca('0xe')]['vswitch']=function(_0x25e484){logger[_0x74ca('0x30')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x25e484[_0x74ca('0xae')]));if(!this[_0x74ca('0x8d')](_0x25e484['variable_id'])){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x25e484,_0x74ca('0x19e'));}var _0x244120=this['getVariable']['sync'](this,_0x25e484[_0x74ca('0x110')]);if(!_0x244120){return this[_0x74ca('0x39')][_0x74ca('0x2d')](_0x25e484,'no\x20variable\x20found');}var _0x949bf9=this['channel']['getVariable'](_0x244120);return{'code':0xc8,'result':_0x949bf9[_0x74ca('0xa9')]?_0x949bf9[_0x74ca('0xa9')]:'-'};};String[_0x74ca('0xe')][_0x74ca('0x1be')]=function(_0x4973e4,_0x5d6caf){return this['split'](_0x4973e4)[_0x74ca('0x1bf')](_0x5d6caf);};module[_0x74ca('0x1c0')]=AGIVertices;
\ No newline at end of file
+var _0xaaa2=['getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','unlink','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','intKey','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','gotoif','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','extra','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','no\x20key\x20configured','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','agentLogout','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','getSound','no\x20file\x20audio\x20found','digit','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','getSquareProject','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','util','lodash','shelljs','odbc','randomstring','moment','request-promise','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','menu','mailRpc','prototype','rpc','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','format','%s/sounds/converted/%s','getQueryOdbc','error','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','channel','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','callback_','random','lastName','isNil','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogin','internal','%s/%s@from-sip/n','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','MP3','googleTTS','google_tts_language','restAPI','timeout','number','includes','PUT','method','toUpperCase','body','rawBody','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','parse','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','model','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','appsecret','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','saveRestApiResult','isPlainObject','length','%s.%s','split','replaceAll','getVariable','getAndSetVariable','result','setVariable','isConfigured','maxRetry','retry','mrcpsynth','options','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_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','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','query:\x20%s','createSquareDetailsReport','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','bot','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','.wav','Enter\x20in\x20END\x20(%s)\x20block','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','url','finally','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','test','mindigit','maxdigit','hiddendigitsnum','generate','hiddendigitspos','first'];(function(_0x4a637f,_0x2fa7ea){var _0xa4384b=function(_0x4a64ad){while(--_0x4a64ad){_0x4a637f['push'](_0x4a637f['shift']());}};_0xa4384b(++_0x2fa7ea);}(_0xaaa2,0xac));var _0x2aaa=function(_0x571c0b,_0x5d9ca9){_0x571c0b=_0x571c0b-0x0;var _0x517a4f=_0xaaa2[_0x571c0b];return _0x517a4f;};'use strict';var fs=require('fs');var util=require(_0x2aaa('0x0'));var _=require(_0x2aaa('0x1'));var sh=require(_0x2aaa('0x2'));var odbc=require(_0x2aaa('0x3'))();var rs=require(_0x2aaa('0x4'));var moment=require(_0x2aaa('0x5'));var Mustache=require('mustache');var rp=require(_0x2aaa('0x6'));var logger=require('../../config/logger')(_0x2aaa('0x7'));var config=require(_0x2aaa('0x8'));var shared=require(_0x2aaa('0x9'));var scripts=require(_0x2aaa('0xa'));var FILES_PATH=_0x2aaa('0xb');var recursiveMapAttributes=[_0x2aaa('0xc'),'rawBody'];var verticesWithRetry=[_0x2aaa('0xd'),'getdigits','getsecretdigits'];var AGIVertices=function(_0x139ca7,_0x56fa01,_0x1ad6e9){this['channel']=_0x139ca7;this['rpc']=_0x56fa01;this[_0x2aaa('0xe')]=_0x1ad6e9;};AGIVertices[_0x2aaa('0xf')]['getVariable']=function(_0x6e1a2d,_0xbfd0c9){this[_0x2aaa('0x10')]['getVariableById'](_0x6e1a2d)[_0x2aaa('0x11')](function(_0x1d7162){_0xbfd0c9(null,_0x1d7162?_0x1d7162[_0x2aaa('0x12')]:![]);})[_0x2aaa('0x13')](function(_0xd38d6d){_0xbfd0c9(_0xd38d6d);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x14')]=function(_0x104c12,_0x32dfbf){this[_0x2aaa('0x10')][_0x2aaa('0x15')](_0x104c12)[_0x2aaa('0x11')](function(_0x4edba2){_0x32dfbf(null,_0x4edba2?_0x4edba2[_0x2aaa('0x12')]:![]);})['catch'](function(_0x35fbc1){_0x32dfbf(_0x35fbc1);});};AGIVertices[_0x2aaa('0xf')]['getSquareProject']=function(_0x50ffea,_0x50a767){this[_0x2aaa('0x10')][_0x2aaa('0x16')](_0x50ffea)[_0x2aaa('0x11')](function(_0x3b94bf){_0x50a767(null,_0x3b94bf?_0x3b94bf[_0x2aaa('0x12')]:![]);})[_0x2aaa('0x13')](function(_0x38a049){_0x50a767(_0x38a049);});};AGIVertices['prototype'][_0x2aaa('0x17')]=function(_0x30951c,_0x51bfa5){this[_0x2aaa('0x10')]['getSquareOdbcById'](_0x30951c)['then'](function(_0x1ec32e){_0x51bfa5(null,_0x1ec32e?_0x1ec32e[_0x2aaa('0x18')]:![]);})[_0x2aaa('0x13')](function(_0x3e7649){_0x51bfa5(_0x3e7649);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x19')]=function(_0x2c255f,_0x24da1e){this['rpc'][_0x2aaa('0x1a')](_0x2c255f)[_0x2aaa('0x11')](function(_0x4836b2){_0x24da1e(null,_0x4836b2?_0x4836b2['name']:![]);})[_0x2aaa('0x13')](function(_0x4d7151){_0x24da1e(_0x4d7151);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1b')]=function(_0x4e41ee,_0x18d95b){this[_0x2aaa('0x10')]['getTrunkById'](_0x4e41ee)[_0x2aaa('0x11')](function(_0x26d61c){_0x18d95b(null,_0x26d61c?_0x26d61c[_0x2aaa('0x12')]:![]);})['catch'](function(_0x1f626b){_0x18d95b(_0x1f626b);});};AGIVertices[_0x2aaa('0xf')]['getSound']=function(_0x565860,_0x3af929){var _0xc9169=this;this[_0x2aaa('0x10')][_0x2aaa('0x1c')](_0x565860)[_0x2aaa('0x11')](function(_0x292297){_0x3af929(null,_0x292297?_0xc9169[_0x2aaa('0x1d')](_0x292297[_0x2aaa('0x1e')]):![]);})[_0x2aaa('0x13')](function(_0x19472b){_0x3af929(_0x19472b);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1f')]=function(_0x4f837f,_0x101b6e){this['rpc'][_0x2aaa('0x20')](_0x4f837f)[_0x2aaa('0x11')](function(_0x3dd818){_0x101b6e(null,_0x3dd818?_0x3dd818:![]);})[_0x2aaa('0x13')](function(_0x40e30f){_0x101b6e(_0x40e30f);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x21')]=function(_0x341b8d,_0x3679be,_0x563b10){this['mailRpc']['sendMailMessage'](_0x341b8d,_0x3679be)['then'](function(){_0x563b10(null);})['catch'](function(_0x4cc413){_0x563b10(_0x4cc413);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x22')]=function(_0x153851,_0x2a189b){this[_0x2aaa('0x10')][_0x2aaa('0x23')](_0x153851)[_0x2aaa('0x11')](function(_0x368531){if(_0x368531){if(_0x368531['IntervalId']){_0x2a189b(null,[_0x368531[_0x2aaa('0x24')]]);}else{_0x2a189b(null,_[_0x2aaa('0x25')](_0x368531['Intervals'],_0x2aaa('0x24')));}}else{_0x2a189b(null,![]);}})[_0x2aaa('0x13')](function(_0x5c149b){_0x2a189b(_0x5c149b);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1d')]=function(_0x468f04){return util[_0x2aaa('0x26')](_0x2aaa('0x27'),FILES_PATH,_0x468f04);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x28')]=function(_0x4d9e9b,_0x496b10,_0xa9054b){odbc['open'](_0x4d9e9b,function(_0x34b370){if(_0x34b370){logger[_0x2aaa('0x29')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x34b370);_0xa9054b(_0x34b370);}else{logger[_0x2aaa('0x2a')](_0x2aaa('0x2b'));odbc[_0x2aaa('0x2c')](_0x496b10,function(_0x5632fb,_0x28e730){if(_0x5632fb){logger[_0x2aaa('0x2a')](_0x2aaa('0x2d'),_0x496b10);_0xa9054b(_0x5632fb);}else{logger[_0x2aaa('0x2a')]('Query\x20executed\x20correctly\x20%s',_0x496b10);odbc[_0x2aaa('0x2e')](function(_0x17653e){if(_0x17653e){logger[_0x2aaa('0x29')](_0x2aaa('0x2f'),_0x17653e);}_0xa9054b(null,_0x28e730);});}});}});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x30')]=function(_0x3b77a3,_0x1a7fbd){this[_0x2aaa('0x10')][_0x2aaa('0x31')](_0x3b77a3)[_0x2aaa('0x11')](function(_0x1a37c8){_0x1a7fbd(null,_0x1a37c8?_0x1a37c8:![]);})[_0x2aaa('0x13')](function(_0x54a9c8){_0x1a7fbd(_0x54a9c8);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x32')]=function(_0x2926a1,_0x565be7){this[_0x2aaa('0x10')][_0x2aaa('0x32')](_0x2926a1)[_0x2aaa('0x11')](function(_0x529a35){_0x565be7(null,_0x529a35);})[_0x2aaa('0x13')](function(_0x1bb225){_0x565be7(_0x1bb225);});};AGIVertices[_0x2aaa('0xf')]['createSquareDetailsReport']=function(_0x57554e,_0x318710,_0x204021){this[_0x2aaa('0x10')]['createSquareDetailsReport']({'uniqueid':this[_0x2aaa('0x33')][_0x2aaa('0x34')],'node':_0x57554e[_0x2aaa('0x35')],'application':_0x57554e[_0x2aaa('0x36')],'data':_0x318710||null,'project_name':this[_0x2aaa('0x33')][_0x2aaa('0x37')],'callerid':this[_0x2aaa('0x33')][_0x2aaa('0x38')]})['then'](function(_0x501190){if(_0x204021){_0x204021(null,_0x501190);}})[_0x2aaa('0x13')](function(_0x4ea628){if(_0x204021){_0x204021(_0x4ea628);}});};AGIVertices[_0x2aaa('0xf')]['createSquareRecording']=function(_0x5f4343,_0x587412,_0xc6ac9d,_0x5293fd){this['rpc'][_0x2aaa('0x39')]({'uniqueid':this[_0x2aaa('0x33')]['uniqueid'],'callerid':this[_0x2aaa('0x33')]['callerid'],'calleridname':this[_0x2aaa('0x33')][_0x2aaa('0x3a')],'context':this['channel'][_0x2aaa('0x3b')],'extension':this[_0x2aaa('0x33')][_0x2aaa('0x3c')],'priority':this[_0x2aaa('0x33')][_0x2aaa('0x3d')],'accountcode':this['channel']['accountcode'],'dnid':this['channel'][_0x2aaa('0x3e')],'projectName':this[_0x2aaa('0x33')][_0x2aaa('0x37')],'saveName':_0x587412,'filename':_0x5f4343[_0x2aaa('0x3f')]||_0x587412,'savePath':_0xc6ac9d})[_0x2aaa('0x11')](function(_0x2b3774){_0x5293fd(null,_0x2b3774);})[_0x2aaa('0x13')](function(_0x23cb6f){_0x5293fd(_0x23cb6f);});};AGIVertices[_0x2aaa('0xf')]['createSquareMessage']=function(_0x22ccf0,_0x44ae51,_0x38433f,_0xdf8683,_0x5951be){this[_0x2aaa('0x10')][_0x2aaa('0x40')]({'uniqueid':this[_0x2aaa('0x33')]['uniqueid'],'body':_0x22ccf0,'direction':_0x44ae51,'providerName':_0x38433f,'providerResponse':_0xdf8683})['then'](function(_0x1d29b6){if(_0x5951be){_0x5951be(null,_0x1d29b6);}})[_0x2aaa('0x13')](function(_0xd5b87c){if(_0x5951be){_0x5951be(_0xd5b87c);}});};AGIVertices[_0x2aaa('0xf')]['createCmContact']=function(_0x4f6707,_0x5c1162){this['rpc'][_0x2aaa('0x41')]({'firstName':_[_0x2aaa('0x42')](_0x4f6707[_0x2aaa('0x12')])||_['isNil'](_0x4f6707[_0x2aaa('0x12')])?_0x2aaa('0x43')+Math[_0x2aaa('0x44')]():_0x4f6707[_0x2aaa('0x12')],'lastName':_[_0x2aaa('0x42')](_0x4f6707[_0x2aaa('0x45')])||_[_0x2aaa('0x46')](_0x4f6707['lastName'])?null:_0x4f6707[_0x2aaa('0x45')],'phone':_0x4f6707['phone'],'ListId':_0x4f6707['list_id'],'scheduledat':_0x4f6707[_0x2aaa('0x47')],'callbackUniqueid':this[_0x2aaa('0x33')][_0x2aaa('0x34')],'tags':_0x2aaa('0x48'),'description':_0x2aaa('0x49')+_0x4f6707['scheduledAt'][_0x2aaa('0x4a')](),'priority':_0x4f6707[_0x2aaa('0x4b')]})[_0x2aaa('0x11')](function(_0x2639f4){_0x5c1162(null,_0x2639f4);})[_0x2aaa('0x13')](function(_0x2c4cb2){_0x5c1162(_0x2c4cb2);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x4c')]=function(_0x39d90c,_0xbcdf7a){this[_0x2aaa('0x10')][_0x2aaa('0x4d')](_0x39d90c)[_0x2aaa('0x11')](function(_0x3d172e){_0xbcdf7a(null,_0x3d172e?_0x3d172e[_0x2aaa('0x12')]:![]);})['catch'](function(_0x30a7f6){_0xbcdf7a(_0x30a7f6);});};AGIVertices[_0x2aaa('0xf')]['agentPause']=function(_0x4437f5,_0x4f676f,_0x273e87){var _0x26d16f={'role':'agent'};_0x26d16f[_0x4437f5]=this[_0x2aaa('0x33')][_0x2aaa('0x38')];this[_0x2aaa('0x10')][_0x2aaa('0x4e')](_0x26d16f,_0x4f676f,this['channel'][_0x2aaa('0x34')])['then'](function(_0x2a8658){_0x273e87(null,_[_0x2aaa('0x46')](_0x2a8658)?![]:!![]);})['catch'](function(_0x3e13a8){logger[_0x2aaa('0x29')](_0x3e13a8);_0x273e87(null,![]);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x4f')]=function(_0x2908d8,_0x367f0d){var _0x1a37f9={'role':_0x2aaa('0x50')};_0x1a37f9[_0x2908d8]=this[_0x2aaa('0x33')]['callerid'];this[_0x2aaa('0x10')]['agentUnpause'](_0x1a37f9)[_0x2aaa('0x11')](function(_0x18afbd){_0x367f0d(null,_[_0x2aaa('0x46')](_0x18afbd)?![]:!![]);})[_0x2aaa('0x13')](function(_0x378445){logger[_0x2aaa('0x29')](_0x378445);_0x367f0d(null,![]);});};AGIVertices[_0x2aaa('0xf')]['agentLogout']=function(_0x515bcc,_0x15c6d0){var _0x3f6d0d={'role':_0x2aaa('0x50')};_0x3f6d0d[_0x515bcc]=this[_0x2aaa('0x33')][_0x2aaa('0x38')];this['rpc']['agentLogout'](_0x3f6d0d)['then'](function(_0x2426da){_0x15c6d0(null,_[_0x2aaa('0x46')](_0x2426da)?![]:!![]);})[_0x2aaa('0x13')](function(_0x1726f2){logger[_0x2aaa('0x29')](_0x1726f2);_0x15c6d0(null,![]);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x51')]=function(_0x4926c4,_0x2fca31){var _0x247a56={'role':'agent'};_0x247a56[_0x4926c4]=this[_0x2aaa('0x33')]['callerid'];var _0x22741a=_0x4926c4!=_0x2aaa('0x52')?util['format'](_0x2aaa('0x53'),'LOCAL',this[_0x2aaa('0x33')][_0x2aaa('0x38')]):undefined;this[_0x2aaa('0x10')]['agentLogin'](_0x247a56,_0x22741a)[_0x2aaa('0x11')](function(_0x5e88b6){_0x2fca31(null,_[_0x2aaa('0x46')](_0x5e88b6)?![]:!![]);})['catch'](function(_0x2dab2f){logger['error'](_0x2dab2f);_0x2fca31(null,![]);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x54')]=function(_0x421207,_0x1cb61f){sh[_0x2aaa('0x55')](_[_0x2aaa('0x56')](_0x421207),function(_0x34c454,_0x1381b8){var _0x567d0e=_0x1381b8[_0x2aaa('0x57')](/(\r\n|\n|\r)/gm,'');_0x1cb61f(null,_0x567d0e);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x58')]=function(_0x1a5000,_0x114349){scripts[_0x2aaa('0x58')](_0x1a5000[_0x2aaa('0x59')],_0x1a5000[_0x2aaa('0x5a')]||'text',_0x1a5000[_0x2aaa('0x5b')],_0x1a5000[_0x2aaa('0x5c')]||'en-US',_0x1a5000[_0x2aaa('0x5d')]||'MALE',_0x1a5000['audioEncoding']||_0x2aaa('0x5e'))[_0x2aaa('0x11')](function(_0x588953){_0x114349(null,_0x588953);})[_0x2aaa('0x13')](function(_0x593506){_0x114349(_0x593506);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x5f')]=function(_0x41442c,_0x161b46){scripts[_0x2aaa('0x5f')](_0x41442c[_0x2aaa('0x5b')],_0x41442c[_0x2aaa('0x60')]||'en',0x1)[_0x2aaa('0x11')](function(_0x92b49c){_0x161b46(null,_0x92b49c);})[_0x2aaa('0x13')](function(_0x2ccf84){_0x161b46(_0x2ccf84);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x61')]=function(_0x29308b,_0xc5c1ec){var _0xec9ca8={'uri':_0x29308b['url'],'method':_0x29308b['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x29308b[_0x2aaa('0x62')])===_0x2aaa('0x63')&&parseInt(_0x29308b[_0x2aaa('0x62')])>=0x1?parseInt(_0x29308b[_0x2aaa('0x62')])*0x3e8:0x5*0x3e8};if(_[_0x2aaa('0x64')](['POST',_0x2aaa('0x65')],_0xec9ca8[_0x2aaa('0x66')][_0x2aaa('0x67')]())){try{_0xec9ca8[_0x2aaa('0x68')]=_0x29308b[_0x2aaa('0x69')]?JSON['parse'](_0x29308b[_0x2aaa('0x69')]):{};}catch(_0x344131){logger[_0x2aaa('0x29')](_0x2aaa('0x6a'),_0x344131);}}try{_0xec9ca8[_0x2aaa('0x6b')]=_0x29308b['rawHeaders']?JSON[_0x2aaa('0x6c')](_0x29308b['rawHeaders']):{};}catch(_0x45a9eb){logger[_0x2aaa('0x29')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x45a9eb);}if(_0x29308b[_0x2aaa('0x6d')]){try{var _0x131549=require(_0x29308b[_0x2aaa('0x6d')])[_0x2aaa('0x6e')](this,_0xec9ca8);_0xec9ca8[_0x2aaa('0x6f')]=Mustache[_0x2aaa('0x70')](_0x29308b['url'],_0x131549,{},['$$','$$']);if(_0xec9ca8[_0x2aaa('0x6b')]){_0xec9ca8['headers']=JSON[_0x2aaa('0x6c')](Mustache[_0x2aaa('0x70')](JSON[_0x2aaa('0x71')](_0xec9ca8[_0x2aaa('0x6b')]),_0x131549,{},['$$','$$']));}if(_0xec9ca8[_0x2aaa('0x68')]){_0xec9ca8[_0x2aaa('0x68')]=JSON['parse'](Mustache[_0x2aaa('0x70')](JSON[_0x2aaa('0x71')](_0xec9ca8[_0x2aaa('0x68')]),_0x131549,{},['$$','$$']));}}catch(_0x1a21ef){logger[_0x2aaa('0x29')](_0x2aaa('0x72'),_0x1a21ef);}}rp(_0xec9ca8)[_0x2aaa('0x11')](function(_0x2b8d9c){var _0x19cd39={'statusCode':_0x2b8d9c[_0x2aaa('0x73')]||0xc8,'statusMessage':_0x2b8d9c[_0x2aaa('0x74')]||'OK','headers':_0x2b8d9c[_0x2aaa('0x6b')]||{},'body':_0x2b8d9c[_0x2aaa('0x68')]||{}};_0xc5c1ec(null,_0x19cd39);})[_0x2aaa('0x13')](function(_0x140953){var _0x3a3d0b={'statusCode':_0x140953[_0x2aaa('0x73')]||0x1f4,'statusMessage':_0x140953[_0x2aaa('0x75')]||_0x2aaa('0x76'),'headers':_0x140953['options'][_0x2aaa('0x6b')]||{},'body':_0x140953['options'][_0x2aaa('0x68')]||{}};_0xc5c1ec(null,_0x3a3d0b);});};AGIVertices['prototype'][_0x2aaa('0x77')]=function(_0x3d0fa0,_0x57c458){scripts[_0x2aaa('0x77')](this[_0x2aaa('0x33')][_0x2aaa('0x34')],_0x3d0fa0[_0x2aaa('0x78')],_0x3d0fa0[_0x2aaa('0x5b')],_0x3d0fa0[_0x2aaa('0x79')]||'en')[_0x2aaa('0x11')](function(_0x32a09c){_0x57c458(null,_0x32a09c);})['catch'](function(_0x15f607){_0x57c458(_0x15f607);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x7a')]=function(_0x1330ff,_0x24014c){scripts[_0x2aaa('0x7a')](this['channel'][_0x2aaa('0x34')],_0x1330ff[_0x2aaa('0x7b')],_0x1330ff[_0x2aaa('0x7c')],_0x1330ff[_0x2aaa('0x7d')],_0x1330ff[_0x2aaa('0x5b')],_0x1330ff[_0x2aaa('0x7e')]||'en')[_0x2aaa('0x11')](function(_0xd240c9){_0x24014c(null,_0xd240c9);})[_0x2aaa('0x13')](function(_0x1dad1d){_0x24014c(_0x1dad1d);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x7f')]=function(_0x56de7b,_0xd101c8){scripts[_0x2aaa('0x7f')](this[_0x2aaa('0x33')],_0x56de7b)['then'](function(_0x50ffef){_0xd101c8(null,_0x50ffef);})[_0x2aaa('0x13')](function(_0x4e9fa5){_0xd101c8(_0x4e9fa5);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x80')]=function(_0x4be90b,_0x512f90){scripts[_0x2aaa('0x80')](_0x4be90b[_0x2aaa('0x78')],_0x4be90b['text'],_0x4be90b[_0x2aaa('0x81')]||_0x2aaa('0x82'),_0x4be90b[_0x2aaa('0x83')])[_0x2aaa('0x11')](function(_0x2182f8){_0x512f90(null,_0x2182f8);})[_0x2aaa('0x13')](function(_0x299c14){_0x512f90(_0x299c14);});};AGIVertices['prototype'][_0x2aaa('0x84')]=function(_0x5d3126,_0x3f1780,_0xed958b){scripts[_0x2aaa('0x84')](_0x3f1780,_0x5d3126[_0x2aaa('0x78')],_0x5d3126[_0x2aaa('0x85')]||_0x2aaa('0x82'),this['isConfigured'](_0x5d3126[_0x2aaa('0x86')])?_0x5d3126[_0x2aaa('0x86')]:undefined)[_0x2aaa('0x11')](function(_0x1ae830){_0xed958b(null,_0x1ae830);})[_0x2aaa('0x13')](function(_0x5e36c5){_0xed958b(_0x5e36c5);});};AGIVertices['prototype']['awsPolly']=function(_0x1dccad,_0x5da812){scripts['awsPolly'](_0x1dccad[_0x2aaa('0x87')],_0x1dccad[_0x2aaa('0x88')],_0x1dccad[_0x2aaa('0x89')],_0x1dccad[_0x2aaa('0x8a')]||_0x2aaa('0x8b'),_0x1dccad['text'],_0x1dccad[_0x2aaa('0x8c')]||_0x2aaa('0x5b'))[_0x2aaa('0x11')](function(_0xfdabf2){_0x5da812(null,_0xfdabf2);})[_0x2aaa('0x13')](function(_0x275389){_0x5da812(_0x275389);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x8d')]=function(_0x10f299,_0x4307c1){scripts[_0x2aaa('0x8d')](this[_0x2aaa('0x33')]['uniqueid'],_0x10f299[_0x2aaa('0x87')],_0x10f299[_0x2aaa('0x88')],_0x10f299[_0x2aaa('0x8e')],_0x10f299[_0x2aaa('0x5b')],_0x10f299[_0x2aaa('0x8f')])[_0x2aaa('0x11')](function(_0x5a64d0){_0x4307c1(null,_0x5a64d0);})[_0x2aaa('0x13')](function(_0x581ab5){_0x4307c1(_0x581ab5);});};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x90')]=function(_0x322135,_0x51db1b,_0x3f724e){scripts['googleASR'](_0x51db1b,_0x322135[_0x2aaa('0x78')],_0x322135['google_asr_language']||_0x2aaa('0x82'))[_0x2aaa('0x11')](function(_0x230ae9){_0x3f724e(null,_0x230ae9);})[_0x2aaa('0x13')](function(_0x3f2d41){_0x3f724e(_0x3f2d41);});};AGIVertices[_0x2aaa('0xf')]['tildeASR']=function(_0xbc5cf8,_0x416b46,_0x582dc6){scripts[_0x2aaa('0x91')](_0x416b46,_0xbc5cf8[_0x2aaa('0x92')],_0xbc5cf8[_0x2aaa('0x93')],_0xbc5cf8['uri'])[_0x2aaa('0x11')](function(_0x5064e4){_0x582dc6(null,_0x5064e4);})[_0x2aaa('0x13')](function(_0x11bb1f){_0x582dc6(_0x11bb1f);});};AGIVertices[_0x2aaa('0xf')]['clear']=function(_0x47fd30){var _0x4eb40e=_[_0x2aaa('0x64')](verticesWithRetry,_0x47fd30[_0x2aaa('0x36')])?_0x47fd30:_[_0x2aaa('0x94')](_0x47fd30);for(var _0x29e329 in _0x4eb40e){if(_0x4eb40e[_0x2aaa('0x95')](_0x29e329)){if(_0x4eb40e[_0x29e329]&&_[_0x2aaa('0x96')](_0x4eb40e[_0x29e329])){if(_[_0x2aaa('0x64')](recursiveMapAttributes,_0x29e329)){_0x4eb40e[_0x29e329]=this[_0x2aaa('0x97')](_0x4eb40e[_0x29e329]);}else{_0x4eb40e[_0x29e329]=this[_0x2aaa('0x98')](_0x4eb40e[_0x29e329]);}}}}return _0x4eb40e;};AGIVertices[_0x2aaa('0xf')]['recursiveNodeIndex']=function(_0x494a8f){for(var _0x2d926a in _0x494a8f){if(_0x494a8f['hasOwnProperty'](_0x2d926a)){if(_['isPlainObject'](_0x494a8f[_0x2d926a])){this[_0x2aaa('0x99')](_0x494a8f[_0x2d926a]);}else if(_[_0x2aaa('0x9a')](_0x494a8f[_0x2d926a])){for(var _0x1f12a9=0x0;_0x1f12a9<_0x494a8f[_0x2d926a]['length'];_0x1f12a9++){this[_0x2aaa('0x99')](_0x494a8f[_0x2d926a][_0x1f12a9]);}}else if(_[_0x2aaa('0x96')](_0x494a8f[_0x2d926a])){_0x494a8f[_0x2d926a]=this[_0x2aaa('0x98')](_0x494a8f[_0x2d926a]);}}}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x9b')]=function(_0x317416,_0x1005e2){for(var _0x59603e in _0x317416){if(_0x317416['hasOwnProperty'](_0x59603e)){if(_[_0x2aaa('0x9c')](_0x317416[_0x59603e])){if(!_['isEmpty'](_0x317416[_0x59603e])){this[_0x2aaa('0x9b')](_0x317416[_0x59603e],util['format']('%s.%s',_0x1005e2,_0x59603e));}}else if(_[_0x2aaa('0x9a')](_0x317416[_0x59603e])){for(var _0x48164b=0x0;_0x48164b<_0x317416[_0x59603e][_0x2aaa('0x9d')];_0x48164b++){this[_0x2aaa('0x9b')](_0x317416[_0x59603e][_0x48164b],util[_0x2aaa('0x26')](_0x2aaa('0x9e'),_0x1005e2,_0x59603e+'['+_0x48164b+']'));}}else{if(!_['isNil'](_0x317416[_0x59603e])){this[_0x2aaa('0x33')]['setVariable'](util['format'](_0x2aaa('0x9e'),_0x1005e2,_0x59603e),_0x317416[_0x59603e]);}}}}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x97')]=function(_0x506241){try{var _0xc6c7e4=JSON['parse'](_0x506241);this[_0x2aaa('0x99')](_0xc6c7e4);return JSON[_0x2aaa('0x71')](_0xc6c7e4);}catch(_0x3ff599){return this[_0x2aaa('0x98')](_0x506241);}};AGIVertices[_0x2aaa('0xf')]['replaceAllVariables']=function(_0x189301){var _0xffbb00=_0x189301[_0x2aaa('0x9f')]('{');for(var _0x2a9ba7=0x1;_0x2a9ba7<_0xffbb00['length'];_0x2a9ba7+=0x1){var _0x5dd2cb=_0xffbb00[_0x2a9ba7][_0x2aaa('0x9f')]('}');if(_0x5dd2cb[_0x2aaa('0x9d')]>0x1){_0x189301=_0x189301[_0x2aaa('0xa0')]('{'+_0x5dd2cb[0x0]+'}',this[_0x2aaa('0x33')][_0x2aaa('0xa1')](_0x5dd2cb[0x0])['extra']||_0x5dd2cb[0x0]);}}if(_0xffbb00[_0x2aaa('0x9d')]===0x1){return _0x189301[_0x2aaa('0x4a')]();}return this[_0x2aaa('0x98')](_0x189301);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xa2')]=function(_0x2efcec,_0x8b323f){var _0xed69ac=this[_0x2aaa('0x33')][_0x2aaa('0xa1')](_0x2efcec);if(_0xed69ac[_0x2aaa('0xa3')]===-0x1){return _0xed69ac;}logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x8b323f,_0xed69ac['extra']));return this[_0x2aaa('0x33')][_0x2aaa('0xa4')](_0x8b323f,_0xed69ac['extra']);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xa5')]=function(_0x228fcc){return _0x228fcc&&_0x228fcc!=='0'&&_0x228fcc!=='-1'&&_0x228fcc!=='';};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xa6')]=function(_0x2e63f0){this['createSquareDetailsReport']['sync'](this,_0x2e63f0,'-');_0x2e63f0[_0x2aaa('0xa7')]=_0x2e63f0[_0x2aaa('0xa6')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x2aaa('0xa8')]=function(_0x79485b){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x79485b[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x79485b[_0x2aaa('0x5b')])){return this['channel']['noop']('no\x20text\x20configured');}var _0x33a2ec='\x22'+_0x79485b[_0x2aaa('0x5b')]+'\x22';if(this['isConfigured'](_0x79485b[_0x2aaa('0xa9')])){_0x33a2ec+=','+_0x79485b['options'];}var _0x591e56=this[_0x2aaa('0x33')][_0x2aaa('0x55')](_0x2aaa('0xaa'),_0x33a2ec);if(_0x591e56[_0x2aaa('0xa3')]===-0x1){return _0x591e56;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xac'),_0x33a2ec));};AGIVertices[_0x2aaa('0xf')]['mrcprecog']=function(_0x4eb645){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xad'),_0x4eb645['label']));if(!this[_0x2aaa('0xa5')](_0x4eb645[_0x2aaa('0xae')])){return this['channel'][_0x2aaa('0xab')](_0x2aaa('0xaf'));}var _0x34446b=_0x4eb645[_0x2aaa('0xae')];if(this[_0x2aaa('0xa5')](_0x4eb645[_0x2aaa('0xa9')])){_0x34446b+=','+_0x4eb645[_0x2aaa('0xa9')];}var _0x4f0ef9=this['channel']['exec']('MRCPRecog',_0x34446b);if(_0x4f0ef9[_0x2aaa('0xa3')]===-0x1){return _0x4f0ef9;}var _0x4c472a=this[_0x2aaa('0xa2')](_0x2aaa('0xb0'),_0x2aaa('0xb1'));if(_0x4c472a[_0x2aaa('0xa3')]===-0x1){return _0x4c472a;}var _0xb6881d=this[_0x2aaa('0xa2')](_0x2aaa('0xb2'),_0x2aaa('0xb3'));if(_0xb6881d[_0x2aaa('0xa3')]===-0x1){return _0xb6881d;}var _0x1e665b=this[_0x2aaa('0xa2')](_0x2aaa('0xb4'),_0x2aaa('0xb5'));if(_0x1e665b[_0x2aaa('0xa3')]===-0x1){return _0x1e665b;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xb6'),_0x34446b));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x7')]=function(_0x1a8346){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xb7'),_0x1a8346[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')]['agi']([_0x1a8346[_0x2aaa('0xb8')],_0x1a8346[_0x2aaa('0xb9')]]);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xba')]=function(_0x3634e3){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0xbb'),_0x3634e3[_0x2aaa('0x35')]));if(this[_0x2aaa('0xa5')](_0x3634e3['timeout'])){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xbc'),_0x3634e3['timeout']));var _0x26f068=this[_0x2aaa('0x33')][_0x2aaa('0xbd')](_0x3634e3[_0x2aaa('0x62')]);if(_0x26f068[_0x2aaa('0xa3')]===-0x1){return _0x26f068;}}return this[_0x2aaa('0x33')]['answer']();};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x48')]=function(_0x17acee){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xbe'),_0x17acee['label']));if(!this[_0x2aaa('0xa5')](_0x17acee[_0x2aaa('0xbf')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x17acee,_0x2aaa('0xc0'));}_0x17acee[_0x2aaa('0x47')]=moment();if(this[_0x2aaa('0xa5')](_0x17acee[_0x2aaa('0xc1')])){_0x17acee[_0x2aaa('0x47')]=moment()[_0x2aaa('0xc2')](_0x17acee['delay'],_0x2aaa('0xc3'));}if(!this[_0x2aaa('0xa5')](_0x17acee[_0x2aaa('0x4b')])){_0x17acee[_0x2aaa('0x4b')]=0x2;}this[_0x2aaa('0x41')][_0x2aaa('0x6e')](this,_0x17acee);return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xc4'),_0x17acee[_0x2aaa('0xc5')],_0x17acee[_0x2aaa('0xbf')],_0x17acee[_0x2aaa('0x47')]));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xc6')]=function(_0x500a05){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0xc7'),_0x500a05[_0x2aaa('0x35')]));var _0x49f994=this['channel'][_0x2aaa('0x55')](_0x500a05[_0x2aaa('0xc8')],_0x500a05['options']);if(_0x49f994[_0x2aaa('0xa3')]===-0x1){return _0x49f994;}return this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0xc9'),_0x500a05[_0x2aaa('0xc8')],_0x500a05[_0x2aaa('0xa9')]));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xca')]=function(_0x7f8acb){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0xcb'),_0x7f8acb[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x7f8acb[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xcc'));}var _0xde30f6='\x22'+_0x7f8acb['text']+'\x22';if(this[_0x2aaa('0xa5')](_0x7f8acb[_0x2aaa('0xa9')])){_0xde30f6+=','+_0x7f8acb[_0x2aaa('0xa9')];}var _0x4e6a08=this['channel'][_0x2aaa('0x55')](_0x2aaa('0xaa'),_0xde30f6);if(_0x4e6a08['result']===-0x1){return _0x4e6a08;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xac'),_0xde30f6));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xcd')]=function(_0x32627f){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xce'),_0x32627f[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x32627f[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xcc'));}var _0x418dfd='\x22'+_0x32627f['text']+'\x22';if(this[_0x2aaa('0xa5')](_0x32627f[_0x2aaa('0xa9')])){_0x418dfd+=','+_0x32627f[_0x2aaa('0xa9')];}var _0x524e12=this['channel']['exec'](_0x2aaa('0xaa'),_0x418dfd);if(_0x524e12[_0x2aaa('0xa3')]===-0x1){return _0x524e12;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xac'),_0x418dfd));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xcf')]=function(_0x547fb8){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xd0'),_0x547fb8[_0x2aaa('0x35')]));if(!this['isConfigured'](_0x547fb8[_0x2aaa('0xae')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xaf'));}var _0x1a91d2=_0x547fb8[_0x2aaa('0xae')];if(this[_0x2aaa('0xa5')](_0x547fb8[_0x2aaa('0xa9')])){_0x1a91d2+=','+_0x547fb8['options'];}var _0x2e90e4=this['channel'][_0x2aaa('0x55')](_0x2aaa('0xd1'),_0x1a91d2);if(_0x2e90e4[_0x2aaa('0xa3')]===-0x1){return _0x2e90e4;}var _0x2c91db=this['getAndSetVariable'](_0x2aaa('0xb0'),_0x2aaa('0xd2'));if(_0x2c91db[_0x2aaa('0xa3')]===-0x1){return _0x2c91db;}var _0x546222=this[_0x2aaa('0xa2')]('RECOG_INPUT()',_0x2aaa('0xd3'));if(_0x546222[_0x2aaa('0xa3')]===-0x1){return _0x546222;}var _0x5e023c=this[_0x2aaa('0xa2')](_0x2aaa('0xb4'),_0x2aaa('0xd4'));if(_0x5e023c[_0x2aaa('0xa3')]===-0x1){return _0x5e023c;}return this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xb6'),_0x1a91d2));};AGIVertices[_0x2aaa('0xf')]['sestekasr']=function(_0x5631ee){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xd5'),_0x5631ee[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x5631ee[_0x2aaa('0xae')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xaf'));}var _0x3e1203=_0x5631ee[_0x2aaa('0xae')];if(this['isConfigured'](_0x5631ee[_0x2aaa('0xa9')])){_0x3e1203+=','+_0x5631ee[_0x2aaa('0xa9')];}var _0x3a1212=this[_0x2aaa('0x33')][_0x2aaa('0x55')](_0x2aaa('0xd1'),_0x3e1203);if(_0x3a1212[_0x2aaa('0xa3')]===-0x1){return _0x3a1212;}var _0x4cf5b7=this['getAndSetVariable'](_0x2aaa('0xb0'),_0x2aaa('0xd6'));if(_0x4cf5b7['result']===-0x1){return _0x4cf5b7;}var _0x4314e9=this['getAndSetVariable'](_0x2aaa('0xb2'),_0x2aaa('0xd7'));if(_0x4314e9['result']===-0x1){return _0x4314e9;}var _0x5a8f9b=this[_0x2aaa('0xa2')]('RECOG_INSTANCE()',_0x2aaa('0xd8'));if(_0x5a8f9b[_0x2aaa('0xa3')]===-0x1){return _0x5a8f9b;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xb6'),_0x3e1203));};AGIVertices['prototype'][_0x2aaa('0xd9')]=function(_0x1ce54c){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xda'),_0x1ce54c[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x1ce54c[_0x2aaa('0xdb')])){return this['channel'][_0x2aaa('0x29')](_0x1ce54c,'no\x20database\x20selected');}var _0x37b875=this[_0x2aaa('0x17')][_0x2aaa('0x6e')](this,_0x1ce54c['odbc_id']);if(!_0x37b875){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x1ce54c,_0x2aaa('0xdc'));}if(!this['isConfigured'](_0x1ce54c['query'])){return this['channel'][_0x2aaa('0x29')](_0x1ce54c,'no\x20query\x20configured');}var _0x5ee13c=_0x1ce54c[_0x2aaa('0x2c')][_0x2aaa('0x57')](/(\r\n|\n|\r)/gm,'\x20');this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xdd'),_0x5ee13c));var _0x6b0876=this[_0x2aaa('0x28')][_0x2aaa('0x6e')](this,_0x37b875,_0x5ee13c);this[_0x2aaa('0xde')]['sync'](this,_0x1ce54c,_0x5ee13c);if(!this[_0x2aaa('0xa5')](_0x1ce54c['variable_id'])){return this['channel'][_0x2aaa('0xab')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x520afc=this['getVariable'][_0x2aaa('0x6e')](this,_0x1ce54c[_0x2aaa('0xdf')]);if(!_0x520afc){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x1ce54c,_0x2aaa('0xe0'));}var _0x5f2839=this;_0x6b0876[_0x2aaa('0xe1')](function(_0xfa595c,_0x289356){Object[_0x2aaa('0xe2')](_0xfa595c)[_0x2aaa('0xe1')](function(_0x32e5e9){_0x5f2839[_0x2aaa('0x33')][_0x2aaa('0xa4')](util['format'](_0x2aaa('0xe3'),_0x520afc,_0x289356,_0x32e5e9),_0xfa595c[_0x32e5e9]);});});this['channel'][_0x2aaa('0xa4')](util[_0x2aaa('0x26')](_0x2aaa('0xe4'),_0x520afc),_0x6b0876[_0x2aaa('0x9d')]);return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format']('variable\x20%s\x20set',_0x520afc));};AGIVertices['prototype']['dial']=function(_0x4e1311){logger[_0x2aaa('0xe5')](util['format'](_0x2aaa('0xe6'),_0x4e1311[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x4e1311[_0x2aaa('0xe7')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x4e1311,_0x2aaa('0xe8'));}var _0x564f32=this[_0x2aaa('0x19')][_0x2aaa('0x6e')](this,_0x4e1311['sip_id']);if(!_0x564f32){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x4e1311,_0x2aaa('0xe9'));}var _0x4e006e=this[_0x2aaa('0x33')]['exec'](_0x2aaa('0xea'),[util[_0x2aaa('0x26')](_0x2aaa('0xeb'),_0x564f32),_0x4e1311['timeout'],_0x4e1311[_0x2aaa('0xec')],_0x4e1311['url']]);if(_0x4e006e[_0x2aaa('0xa3')]===-0x1){return _0x4e006e;}return this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0xed'),'DIAL'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xee')]=function(_0x52c369){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xef'),_0x52c369[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x52c369[_0x2aaa('0x78')])){return this['channel'][_0x2aaa('0xab')]('no\x20key\x20configured');}if(!this[_0x2aaa('0xa5')](_0x52c369[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xcc'));}this[_0x2aaa('0x33')][_0x2aaa('0xf0')]=!![];this['createSquareDetailsReport'](_0x52c369);this[_0x2aaa('0x40')](_0x52c369[_0x2aaa('0x5b')],'in','','');this['channel']['noop'](util[_0x2aaa('0x26')]('Trying\x20Dialogflow:\x20%s',_0x52c369[_0x2aaa('0x5b')]));var _0x4953de=this[_0x2aaa('0x77')]['sync'](this,_0x52c369);if(_0x4953de){for(var _0x141db2 in _0x4953de){if(_0x4953de[_0x2aaa('0x95')](_0x141db2)){this['channel'][_0x2aaa('0xa4')](util[_0x2aaa('0x26')]('DIALOGFLOW_%s',_0x141db2['toUpperCase']()),_0x4953de[_0x141db2]);}}this['createSquareMessage'](_0x4953de['speech'],_0x2aaa('0xf1'),_0x2aaa('0xee'),'');return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xf2'),_0x4953de[_0x2aaa('0xf3')]));}return this['channel']['error'](_0x52c369,_0x2aaa('0xf4'));};AGIVertices['prototype']['dialogflowV2']=function(_0x48763f){logger[_0x2aaa('0x2a')](util['format']('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x48763f['label']));if(!this[_0x2aaa('0xa5')](_0x48763f[_0x2aaa('0x7b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xf5'));}if(!this[_0x2aaa('0xa5')](_0x48763f[_0x2aaa('0x7c')])){return this['channel'][_0x2aaa('0xab')](_0x2aaa('0xf6'));}if(!this[_0x2aaa('0xa5')](_0x48763f[_0x2aaa('0x7d')])){return this['channel']['noop'](_0x2aaa('0xf7'));}if(!this['isConfigured'](_0x48763f[_0x2aaa('0x7e')])){return this['channel'][_0x2aaa('0xab')](_0x2aaa('0xf8'));}if(!this['isConfigured'](_0x48763f[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')]['noop'](_0x2aaa('0xcc'));}this['channel'][_0x2aaa('0xf0')]=!![];this['createSquareDetailsReport'](_0x48763f);this['createSquareMessage'](_0x48763f[_0x2aaa('0x5b')],'in','','');this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0xf9'),_0x48763f[_0x2aaa('0x5b')]));var _0x3df828=this[_0x2aaa('0x7a')][_0x2aaa('0x6e')](this,_0x48763f);if(_0x3df828){for(var _0x324e37 in _0x3df828){if(_0x3df828[_0x2aaa('0x95')](_0x324e37)){if(_0x324e37!==_0x2aaa('0xfa')){this[_0x2aaa('0x33')]['setVariable'](util['format']('DIALOGFLOW_%s',_0x324e37[_0x2aaa('0x67')]()),_0x3df828[_0x324e37]);}}}this[_0x2aaa('0x40')](_0x3df828[_0x2aaa('0xf3')],_0x2aaa('0xf1'),_0x2aaa('0xfb'),_0x3df828[_0x2aaa('0xfa')]);return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format'](_0x2aaa('0xfc'),_0x3df828['speech']));}return this[_0x2aaa('0x33')]['error'](_0x48763f,'DialogflowV2\x20is\x20unreachable');};AGIVertices['prototype'][_0x2aaa('0xfd')]=function(_0x6c9a7d){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0xfe'),_0x6c9a7d[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x6c9a7d['ndauth_url'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xff'));}if(!this[_0x2aaa('0xa5')](_0x6c9a7d[_0x2aaa('0x100')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x101'));}if(!this[_0x2aaa('0xa5')](_0x6c9a7d[_0x2aaa('0x102')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x103'));}if(!this[_0x2aaa('0xa5')](_0x6c9a7d['ndassistant_url'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')]('no\x20text\x20configured');}this[_0x2aaa('0x33')]['bot']=!![];this[_0x2aaa('0xde')](_0x6c9a7d);this[_0x2aaa('0x40')](_0x6c9a7d[_0x2aaa('0x5b')],'in','','');this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x104'),_0x6c9a7d[_0x2aaa('0x5b')]));var _0x281928=this[_0x2aaa('0x7f')][_0x2aaa('0x6e')](this,_0x6c9a7d);if(_0x281928){for(var _0x6d0149 in _0x281928){if(_0x281928['hasOwnProperty'](_0x6d0149)){this[_0x2aaa('0x33')][_0x2aaa('0xa4')](util[_0x2aaa('0x26')](_0x2aaa('0x105'),_0x6d0149[_0x2aaa('0x67')]()),_0x281928[_0x6d0149]);}}this[_0x2aaa('0x40')](_0x281928[_0x2aaa('0xf3')],_0x2aaa('0xf1'),_0x2aaa('0xfd'),'');if(_0x281928['audiofile']){this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x106'),_0x281928[_0x2aaa('0x107')]));var _0x2484f8=this[_0x2aaa('0x33')][_0x2aaa('0x108')](_0x281928['audiofile']);try{fs['unlink'](_0x281928['audiofile']+_0x2aaa('0x109'));}catch(_0x4f757b){logger[_0x2aaa('0x29')](_0x4f757b);}return _0x2484f8;}else{return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('SestekNDA\x20Result\x20%s',_0x281928[_0x2aaa('0xf3')]));}}return this['channel'][_0x2aaa('0x29')](_0x6c9a7d,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype']['end']=function(_0x556825){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x10a'),_0x556825[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')]['noop'](_0x2aaa('0x10b'));};AGIVertices['prototype']['ext_dial']=function(_0x3f9c0d){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x10c'),_0x3f9c0d[_0x2aaa('0x35')]));var _0x3b0e72='';if(_0x3f9c0d[_0x2aaa('0x10d')]){if(!this[_0x2aaa('0xa5')](_0x3f9c0d[_0x2aaa('0x10d')])){return this[_0x2aaa('0x33')]['error'](_0x3f9c0d,_0x2aaa('0x10e'));}else{var _0x180be5=parseInt(_0x3f9c0d[_0x2aaa('0x10d')],0xa);if(isNaN(_0x180be5)){_0x3b0e72=_0x3f9c0d[_0x2aaa('0x10d')];}else{_0x3b0e72=this[_0x2aaa('0x1b')]['sync'](this,_0x3f9c0d[_0x2aaa('0x10d')]);if(!_0x3b0e72){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x3f9c0d,'no\x20trunk\x20found');}}}}else if(_0x3f9c0d[_0x2aaa('0x10f')]){_0x3b0e72=_0x3f9c0d['trunk_name'];}else{return this[_0x2aaa('0x33')]['error'](_0x3f9c0d,_0x2aaa('0x10e'));}var _0x3fa257=this[_0x2aaa('0x33')][_0x2aaa('0x55')](_0x2aaa('0xea'),[util[_0x2aaa('0x26')](_0x2aaa('0x110'),_0x3b0e72,_0x3f9c0d[_0x2aaa('0xc5')]),_0x3f9c0d[_0x2aaa('0x62')],_0x3f9c0d[_0x2aaa('0xec')],_0x3f9c0d[_0x2aaa('0x111')]]);if(_0x3fa257[_0x2aaa('0xa3')]===-0x1){return _0x3fa257;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xed'),'DIAL'));};AGIVertices['prototype'][_0x2aaa('0x112')]=function(_0x2da780){logger['info'](util[_0x2aaa('0x26')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x2da780[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x112'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x113')]=function(_0x4e097b){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x114'),_0x4e097b[_0x2aaa('0x35')]));if(_0x4e097b[_0x2aaa('0xa7')]===0x0){return this[_0x2aaa('0xa6')](_0x4e097b);}_0x4e097b['retry']-=0x1;if(!this[_0x2aaa('0xa5')](_0x4e097b[_0x2aaa('0x115')])){return this['channel']['error'](_0x4e097b,_0x2aaa('0x116'));}var _0x4bb659=this['getSound'][_0x2aaa('0x6e')](this,_0x4e097b[_0x2aaa('0x115')]);if(!_0x4bb659){return this[_0x2aaa('0x33')]['error'](_0x4e097b,'no\x20file\x20audio\x20found');}if(!this[_0x2aaa('0xa5')](_0x4e097b[_0x2aaa('0xdf')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x2aaa('0x117'));}var _0x180470=this['channel'][_0x2aaa('0x118')](_0x4bb659,_0x4e097b[_0x2aaa('0x119')],_0x4e097b['maxdigit']);var _0x3f9589=_0x180470[_0x2aaa('0xa3')]?_0x180470[_0x2aaa('0xa3')][_0x2aaa('0x4a')]():'';logger['info'](_0x2aaa('0x11a'),JSON['stringify'](_0x180470));if(_0x180470[_0x2aaa('0xa3')]===-0x1){this[_0x2aaa('0xde')][_0x2aaa('0x6e')](this,_0x4e097b,_0x3f9589);return _0x180470;}else if(_0x180470['extra']===_0x2aaa('0x62')){_0x180470[_0x2aaa('0xa3')]=_0x3f9589[_0x2aaa('0x9d')]>=parseInt(_0x4e097b[_0x2aaa('0x11b')])?'x':'i';}else{_0x180470[_0x2aaa('0xa3')]=_0x3f9589[_0x2aaa('0x9d')]>=parseInt(_0x4e097b[_0x2aaa('0x11b')])&&_0x3f9589[_0x2aaa('0x9d')]<=parseInt(_0x4e097b[_0x2aaa('0x11c')])?'x':'i';}var _0x549f28=this['getVariable'][_0x2aaa('0x6e')](this,_0x4e097b[_0x2aaa('0xdf')]);if(!_0x549f28){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x4e097b,_0x2aaa('0xe0'));}this['channel'][_0x2aaa('0xa4')](_0x549f28,_0x3f9589);if(this[_0x2aaa('0xa5')](_0x4e097b[_0x2aaa('0x11d')])){var _0x28d63d=parseInt(_0x4e097b['hiddendigitsnum'],0xa);var _0x11e5e0=rs[_0x2aaa('0x11e')]({'charset':'*','length':_0x28d63d});var _0x4f1fec=_0x3f9589[_0x2aaa('0x9d')];if(_0x4f1fec>0x0){if(_0x4f1fec>_0x28d63d){this['createSquareDetailsReport'][_0x2aaa('0x6e')](this,_0x4e097b,_0x4e097b[_0x2aaa('0x11f')]===_0x2aaa('0x120')?_0x11e5e0+_0x3f9589['substr'](_0x28d63d):_0x3f9589['substr'](0x0,_0x4f1fec-_0x28d63d)+_0x11e5e0);}else{this[_0x2aaa('0xde')]['sync'](this,_0x4e097b,rs[_0x2aaa('0x11e')]({'charset':'*','length':_0x4f1fec}));}}else{this[_0x2aaa('0xde')]['sync'](this,_0x4e097b,'');}}else{this[_0x2aaa('0xde')][_0x2aaa('0x6e')](this,_0x4e097b,_0x3f9589);}return _0x180470;};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x121')]=function(_0x3843c2){logger['info'](util['format'](_0x2aaa('0x122'),_0x3843c2['label']));return this[_0x2aaa('0x113')](_0x3843c2);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x123')]=function(_0xfb9722){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0xfb9722[_0x2aaa('0x35')]));this['createSquareDetailsReport']['sync'](this,_0xfb9722,_0xfb9722[_0x2aaa('0x124')]);return this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x125'),_0xfb9722[_0x2aaa('0x124')]));};AGIVertices[_0x2aaa('0xf')]['awspolly']=function(_0x57dee6){logger['info'](util[_0x2aaa('0x26')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x57dee6[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x57dee6[_0x2aaa('0x87')])||!this[_0x2aaa('0xa5')](_0x57dee6[_0x2aaa('0x88')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x126'));}if(!this['isConfigured'](_0x57dee6['text'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xcc'));}this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('Trying\x20aws\x20Polly\x20%s',_0x57dee6['text']));var _0x752773=this['awsPolly'][_0x2aaa('0x6e')](this,_0x57dee6);if(_0x752773){this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x127'),_0x752773));var _0xc1aa79=this[_0x2aaa('0x33')][_0x2aaa('0x108')](_0x752773);try{fs[_0x2aaa('0x128')](_0x752773+_0x2aaa('0x109'));}catch(_0xad8104){logger[_0x2aaa('0x29')](_0xad8104);}return _0xc1aa79;}return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x57dee6,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x2aaa('0xf')]['awslex']=function(_0x3ee788){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x129'),_0x3ee788['label']));if(!this[_0x2aaa('0xa5')](_0x3ee788[_0x2aaa('0x87')])||!this[_0x2aaa('0xa5')](_0x3ee788[_0x2aaa('0x88')])){return this['channel'][_0x2aaa('0xab')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x3ee788['aws_bot_name'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x12a'));}if(!this['isConfigured'](_0x3ee788['text'])){return this[_0x2aaa('0x33')]['noop']('no\x20text\x20configured');}this[_0x2aaa('0x33')][_0x2aaa('0xf0')]=!![];this['createSquareDetailsReport'](_0x3ee788);this[_0x2aaa('0x40')](_0x3ee788[_0x2aaa('0x5b')],'in','','');this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x12b'),_0x3ee788[_0x2aaa('0x5b')]));var _0xcdb416=this[_0x2aaa('0x8d')][_0x2aaa('0x6e')](this,_0x3ee788);if(_0xcdb416){for(var _0x206a15 in _0xcdb416){if(_0xcdb416[_0x2aaa('0x95')](_0x206a15)&&_[_0x2aaa('0x96')](_0xcdb416[_0x206a15])){this[_0x2aaa('0x33')][_0x2aaa('0xa4')](util['format']('AWS_LEX_%s',_0x206a15[_0x2aaa('0x67')]()),_0xcdb416[_0x206a15]);}}if(_[_0x2aaa('0x46')](_0xcdb416['message'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x12c'));}else{this[_0x2aaa('0x40')](_0xcdb416['message'],_0x2aaa('0xf1'),_0x2aaa('0x12d'),'');return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x12e'),_0xcdb416['message']));}}return this[_0x2aaa('0x33')]['error'](_0x3ee788,_0x2aaa('0x12f'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x130')]=function(_0x5d2cc9){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x131'),_0x5d2cc9[_0x2aaa('0x35')],_0x5d2cc9[_0x2aaa('0x62')]));if(!this[_0x2aaa('0xa5')](_0x5d2cc9[_0x2aaa('0x78')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')]('no\x20key\x20configured');}var _0x31b1c1=_0x2aaa('0x132');var _0x5150ee=util['format'](_0x2aaa('0x133'),FILES_PATH,rs[_0x2aaa('0x11e')](0x4));var _0x1b21d3=util[_0x2aaa('0x26')](_0x2aaa('0x9e'),_0x5150ee,_0x31b1c1);var _0x2347e1=!![];if(_0x5d2cc9[_0x2aaa('0x134')]===_0x2aaa('0x135')){_0x2347e1=![];}var _0x56e502=this['channel'][_0x2aaa('0x136')](_0x5150ee,_0x31b1c1,_0x5d2cc9['intKey'],_0x5d2cc9[_0x2aaa('0x62')],undefined,_0x2347e1);if(_0x56e502[_0x2aaa('0xa3')]!==-0x1){this['channel']['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x137'),_0x1b21d3));var _0x34bc71=this[_0x2aaa('0x90')][_0x2aaa('0x6e')](this,_0x5d2cc9,_0x1b21d3);if(_0x34bc71){for(var _0x2a6b14 in _0x34bc71){if(_0x34bc71[_0x2aaa('0x95')](_0x2a6b14)){this[_0x2aaa('0x33')][_0x2aaa('0xa4')](util[_0x2aaa('0x26')](_0x2aaa('0x138'),_0x2a6b14[_0x2aaa('0x67')]()),_0x34bc71[_0x2a6b14]);}}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('GoogleASR\x20Result\x20%s',JSON[_0x2aaa('0x71')](_0x34bc71)));}}return _0x56e502;};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x139')]=function(_0x1297af){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x13a'),_0x1297af['label']));if(!this[_0x2aaa('0xa5')](_0x1297af[_0x2aaa('0x92')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x13b'));}if(!this['isConfigured'](_0x1297af['appsecret'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x13c'));}var _0x3e468b='wav';var _0x38b02c=util[_0x2aaa('0x26')](_0x2aaa('0x133'),FILES_PATH,rs['generate'](0x4));var _0x20154c=util['format']('%s.%s',_0x38b02c,_0x3e468b);var _0x52bcdc=!![];if(_0x1297af[_0x2aaa('0x134')]===_0x2aaa('0x135')){_0x52bcdc=![];}var _0x3c74d4=this[_0x2aaa('0x33')][_0x2aaa('0x136')](_0x38b02c,_0x3e468b,_0x1297af[_0x2aaa('0x13d')],_0x1297af[_0x2aaa('0x62')],undefined,_0x52bcdc);if(_0x3c74d4[_0x2aaa('0xa3')]!==-0x1){this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('tilde\x20%s\x20file\x20created',_0x20154c));var _0x2dcbbc=this[_0x2aaa('0x91')][_0x2aaa('0x6e')](this,_0x1297af,_0x20154c);if(_0x2dcbbc){for(var _0x12a865 in _0x2dcbbc){if(_0x2dcbbc[_0x2aaa('0x95')](_0x12a865)){this[_0x2aaa('0x33')]['setVariable'](util['format']('TILDE_ASR_%s',_0x12a865[_0x2aaa('0x67')]()),_0x2dcbbc[_0x12a865]);}}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format']('TildeASR\x20Result\x20%s',JSON[_0x2aaa('0x71')](_0x2dcbbc)));}}return _0x3c74d4;};AGIVertices['prototype'][_0x2aaa('0x13e')]=function(_0x406988){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x13f'),_0x406988[_0x2aaa('0x35')]));return this['channel']['continueAt'](_0x406988['context'],_0x406988[_0x2aaa('0x3c')],_0x406988[_0x2aaa('0x3d')]);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x140')]=function(_0x56f907){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x56f907['label']));if(!this[_0x2aaa('0xa5')](_0x56f907[_0x2aaa('0x141')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x56f907,_0x2aaa('0x142'));}try{var _0x355c4c=eval(_0x56f907['condition'])?_0x2aaa('0x143'):_0x2aaa('0x144');this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x145'),_0x56f907[_0x2aaa('0x141')],_0x355c4c));return{'code':0xc8,'result':_0x355c4c};}catch(_0x48a4ae){return{'code':0xc8,'result':_0x2aaa('0x144')};}};AGIVertices['prototype'][_0x2aaa('0x146')]=function(_0x59d777){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x147'),_0x59d777[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x59d777[_0x2aaa('0x148')])){return this['channel'][_0x2aaa('0x29')](_0x59d777,_0x2aaa('0x149'));}var _0x4b18fe=this['getIntervals'][_0x2aaa('0x6e')](this,_0x59d777['interval_id']);if(!_0x4b18fe){return this[_0x2aaa('0x33')]['error'](_0x59d777,_0x2aaa('0x14a'));}for(var _0x15ef68=0x0;_0x15ef68<_0x4b18fe[_0x2aaa('0x9d')];_0x15ef68+=0x1){var _0x580154=this[_0x2aaa('0x33')][_0x2aaa('0xa1')](util[_0x2aaa('0x26')](_0x2aaa('0x14b'),_0x4b18fe[_0x15ef68]));if(_0x580154[_0x2aaa('0xa3')]===-0x1){return _0x580154;}logger['info'](util[_0x2aaa('0x26')]('IFTIME\x20%s\x20%s',_0x4b18fe[_0x15ef68],_0x580154[_0x2aaa('0x14c')]));if(_0x580154[_0x2aaa('0x14c')]===_0x2aaa('0x143')){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x14d'),_0x4b18fe[_0x15ef68],_0x2aaa('0x143')));this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')]('IFTIME\x20%s\x20%s',_0x4b18fe[_0x15ef68],'true'));return{'code':0xc8,'result':_0x2aaa('0x143')};}else{logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x14d'),_0x4b18fe[_0x15ef68],_0x2aaa('0x144')));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x14d'),_0x4b18fe[_0x15ef68],_0x2aaa('0x144')));}}return{'code':0xc8,'result':_0x2aaa('0x144')};};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x14e')]=function(_0x10dbcd){logger['info'](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x10dbcd[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')][_0x2aaa('0x14e')]();};AGIVertices['prototype']['ispeechasr']=function(_0x124cc8){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x14f'),_0x124cc8['label']));if(!this[_0x2aaa('0xa5')](_0x124cc8[_0x2aaa('0x78')])){return this[_0x2aaa('0x33')]['noop']('no\x20key\x20configured');}var _0x17db3e=_0x2aaa('0x132');var _0x104e90=util[_0x2aaa('0x26')](_0x2aaa('0x133'),FILES_PATH,rs[_0x2aaa('0x11e')](0x4));var _0x516515=util[_0x2aaa('0x26')](_0x2aaa('0x9e'),_0x104e90,_0x17db3e);var _0x554bd9=!![];if(_0x124cc8['beep']==='NOBEEP'){_0x554bd9=![];}var _0x4283ea=this[_0x2aaa('0x33')][_0x2aaa('0x136')](_0x104e90,_0x17db3e,_0x124cc8[_0x2aaa('0x13d')],_0x124cc8[_0x2aaa('0x62')],undefined,_0x554bd9);if(_0x4283ea['result']!==-0x1){this['channel']['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x150'),_0x516515));var _0x5aa524=this['ispeechASR'][_0x2aaa('0x6e')](this,_0x124cc8,_0x516515);if(_0x5aa524){for(var _0x1f2e30 in _0x5aa524){if(_0x5aa524[_0x2aaa('0x95')](_0x1f2e30)){this['channel'][_0x2aaa('0xa4')](util[_0x2aaa('0x26')]('ISPEECH_ASR_%s',_0x1f2e30[_0x2aaa('0x67')]()),_0x5aa524[_0x1f2e30]);}}return this['channel']['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x151'),JSON['stringify'](_0x5aa524)));}}return _0x4283ea;};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x152')]=function(_0x29219d){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x153'),_0x29219d[_0x2aaa('0x35')]));if(!this['isConfigured'](_0x29219d[_0x2aaa('0x78')])){return this[_0x2aaa('0x33')]['noop'](_0x2aaa('0x154'));}if(!this[_0x2aaa('0xa5')](_0x29219d[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')]('no\x20text\x20configured');}this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x155'),_0x29219d[_0x2aaa('0x5b')]));var _0x16df99=this['ispeechTTS'][_0x2aaa('0x6e')](this,_0x29219d);if(_0x16df99){this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x150'),_0x16df99));var _0x553cb4=this[_0x2aaa('0x33')]['streamFile'](_0x16df99,_0x29219d[_0x2aaa('0x13d')]);try{fs['unlink'](_0x16df99+'.wav');}catch(_0x312dd6){logger[_0x2aaa('0x29')](_0x312dd6);}return _0x553cb4;}return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x29219d,_0x2aaa('0x156'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x157')]=function(_0x2408eb){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x158'),_0x2408eb[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x2408eb[_0x2aaa('0x159')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x2408eb,_0x2aaa('0x15a'));}logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x2aaa('0x38')],_0x2408eb[_0x2aaa('0x159')]));var _0x260521=this[_0x2aaa('0x51')][_0x2aaa('0x6e')](this,_0x2408eb[_0x2aaa('0x159')]);if(_0x260521){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')]['callerid'],_0x2408eb['findBy']));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x2408eb[_0x2aaa('0x159')]));return{'code':0xc8,'result':_0x2aaa('0x15c')};}else{logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x2408eb[_0x2aaa('0x159')]));this['channel'][_0x2aaa('0xab')](util['format'](_0x2aaa('0x15d'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x2408eb[_0x2aaa('0x159')]));return{'code':0xc8,'result':_0x2aaa('0x15e')};}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x15f')]=function(_0x874b41){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x160'),_0x874b41['label']));if(!this['isConfigured'](_0x874b41[_0x2aaa('0x159')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x874b41,_0x2aaa('0x15a'));}logger[_0x2aaa('0x2a')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x874b41[_0x2aaa('0x159')]));var _0x1326f9=this[_0x2aaa('0x161')][_0x2aaa('0x6e')](this,_0x874b41[_0x2aaa('0x159')]);if(_0x1326f9){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x874b41[_0x2aaa('0x159')]));this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')]['callerid'],_0x874b41['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2aaa('0x33')]['callerid'],_0x874b41['findBy']));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x874b41['findBy']));return{'code':0xc8,'result':_0x2aaa('0x15e')};}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x162')]=function(_0x1a2041){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x163'),_0x1a2041[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x1a2041[_0x2aaa('0x164')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x1a2041,_0x2aaa('0x165'));}this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x166'),_0x1a2041[_0x2aaa('0x164')]));var _0x55dc9d=eval(_0x1a2041[_0x2aaa('0x164')]);if(!this[_0x2aaa('0xa5')](_0x1a2041[_0x2aaa('0xdf')])){return this['channel'][_0x2aaa('0xab')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x51eaf3=this[_0x2aaa('0xa1')][_0x2aaa('0x6e')](this,_0x1a2041[_0x2aaa('0xdf')]);if(!_0x51eaf3){return this['channel'][_0x2aaa('0x29')](_0x1a2041,'no\x20variable\x20found');}if(_[_0x2aaa('0x9a')](_0x55dc9d)){var _0x77768e=this;_0x55dc9d[_0x2aaa('0xe1')](function(_0x38f0d4,_0x62ffd6){_0x77768e[_0x2aaa('0x33')][_0x2aaa('0xa4')](util[_0x2aaa('0x26')](_0x2aaa('0x167'),_0x51eaf3,_0x62ffd6),_0x38f0d4);});return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x168'),_0x51eaf3));}else{return this['channel'][_0x2aaa('0xa4')](_0x51eaf3,_0x55dc9d);}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0xd')]=function(_0x58b6f0){logger[_0x2aaa('0x2a')](util['format']('Enter\x20in\x20MENU\x20(%s)\x20block',_0x58b6f0['label']));if(_0x58b6f0['retry']===0x0){return this[_0x2aaa('0xa6')](_0x58b6f0);}_0x58b6f0[_0x2aaa('0xa7')]-=0x1;if(!this['isConfigured'](_0x58b6f0[_0x2aaa('0x115')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x58b6f0,'no\x20file\x20audio\x20selected');}var _0x470333=this[_0x2aaa('0x169')][_0x2aaa('0x6e')](this,_0x58b6f0['file_id']);if(!_0x470333){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x58b6f0,_0x2aaa('0x16a'));}var _0x5140b5=this[_0x2aaa('0x33')][_0x2aaa('0x118')](_0x470333,_0x58b6f0[_0x2aaa('0x119')],_0x58b6f0[_0x2aaa('0x16b')]);var _0x573d2a=_0x5140b5[_0x2aaa('0xa3')];if(_0x5140b5[_0x2aaa('0xa3')]===-0x1){this[_0x2aaa('0xde')][_0x2aaa('0x6e')](this,_0x58b6f0,'-1');return _0x5140b5;}else if(_0x5140b5[_0x2aaa('0x14c')]===_0x2aaa('0x62')){_0x5140b5[_0x2aaa('0xa3')]=_0x5140b5[_0x2aaa('0xa3')][_0x2aaa('0x9d')]>0x0?_0x5140b5['result']:'t';}else if(_[_0x2aaa('0x42')](_0x5140b5['result'])){_0x5140b5[_0x2aaa('0xa3')]='#';_0x573d2a='#';}if(!this[_0x2aaa('0xa5')](_0x58b6f0[_0x2aaa('0xdf')])){this['channel']['noop'](_0x2aaa('0x117'));}else{var _0x8f5418=this[_0x2aaa('0xa1')]['sync'](this,_0x58b6f0[_0x2aaa('0xdf')]);if(!_0x8f5418){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x58b6f0,_0x2aaa('0xe0'));}this['channel'][_0x2aaa('0xa4')](_0x8f5418,_0x573d2a);}this[_0x2aaa('0xde')]['sync'](this,_0x58b6f0,_0x573d2a);return _0x5140b5;};AGIVertices[_0x2aaa('0xf')]['noop']=function(_0x53908b){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x53908b[_0x2aaa('0x35')]));return this['channel'][_0x2aaa('0xab')](_0x53908b[_0x2aaa('0x16c')]||_0x53908b['label']);};AGIVertices['prototype'][_0x2aaa('0x16d')]=function(_0x4cdead){logger['info'](util['format'](_0x2aaa('0x16e'),_0x4cdead[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x4cdead[_0x2aaa('0x159')])){return this[_0x2aaa('0x33')]['error'](_0x4cdead,_0x2aaa('0x15a'));}logger['info'](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x2aaa('0x33')]['callerid'],_0x4cdead[_0x2aaa('0x159')]));var _0x5c9a9b=this[_0x2aaa('0x4c')]['sync'](this,_0x4cdead['pause_id']);var _0x10869f=this[_0x2aaa('0x4e')][_0x2aaa('0x6e')](this,_0x4cdead['findBy'],_0x5c9a9b);if(_0x10869f){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x4cdead[_0x2aaa('0x159')]));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x4cdead[_0x2aaa('0x159')]));return{'code':0xc8,'result':_0x2aaa('0x15c')};}else{logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x15d'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x4cdead['findBy']));this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x4cdead[_0x2aaa('0x159')]));return{'code':0xc8,'result':_0x2aaa('0x15e')};}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x16f')]=function(_0x34c2ca){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x170'),_0x34c2ca[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x34c2ca['file_id'])){return this['channel'][_0x2aaa('0x29')](_0x34c2ca,'no\x20file\x20audio\x20selected');}var _0x2cfd8f=this[_0x2aaa('0x169')]['sync'](this,_0x34c2ca['file_id']);if(!_0x2cfd8f){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x34c2ca,_0x2aaa('0x16a'));}var _0x423302=this[_0x2aaa('0x33')][_0x2aaa('0x55')]('PLAYBACK',[_0x2cfd8f,_0x34c2ca[_0x2aaa('0xec')]]);if(_0x423302['result']===-0x1){return _0x423302;}return this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xc9'),_0x2aaa('0x171'),_0x2cfd8f));};AGIVertices['prototype'][_0x2aaa('0x172')]=function(_0x29761b){logger['info'](util[_0x2aaa('0x26')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x29761b['label']));if(!this[_0x2aaa('0xa5')](_0x29761b[_0x2aaa('0x173')])){return this[_0x2aaa('0x33')]['error'](_0x29761b,_0x2aaa('0x174'));}var _0x27b826='';var _0xb3ea6=parseInt(_0x29761b[_0x2aaa('0x173')],0xa);if(isNaN(_0xb3ea6)){_0x27b826=_0x29761b[_0x2aaa('0x173')];}else{_0x27b826=this['getVoiceQueue'][_0x2aaa('0x6e')](this,_0x29761b[_0x2aaa('0x173')]);if(!_0x27b826){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x29761b,'no\x20queue\x20found');}}var _0x529e60='';if(this[_0x2aaa('0xa5')](_0x29761b[_0x2aaa('0x115')])){var _0x329113=this['getSound'][_0x2aaa('0x6e')](this,_0x29761b[_0x2aaa('0x115')]);if(_0x329113){_0x529e60=_0x329113;}}this[_0x2aaa('0xde')][_0x2aaa('0x6e')](this,_0x29761b,_0x27b826);if(_0x29761b[_0x2aaa('0xec')]['indexOf']('x')<0x0){_0x29761b[_0x2aaa('0xec')]+='x';}if(_0x29761b[_0x2aaa('0xec')][_0x2aaa('0x175')]('X')<0x0){_0x29761b[_0x2aaa('0xec')]+='X';}this[_0x2aaa('0x33')][_0x2aaa('0xa4')](_0x2aaa('0x176'),_0x27b826?_0x27b826[_0x2aaa('0x177')]():'');var _0x1ef9e9=this[_0x2aaa('0x33')][_0x2aaa('0x55')](_0x2aaa('0x178'),[_0x27b826,_0x29761b[_0x2aaa('0xec')],_0x29761b['url'],_0x529e60,_0x29761b[_0x2aaa('0x62')],_0x29761b[_0x2aaa('0x7')],_0x29761b[_0x2aaa('0x179')],_0x29761b[_0x2aaa('0x17a')],'',_0x29761b[_0x2aaa('0x17b')]]);if(_0x1ef9e9[_0x2aaa('0xa3')]===-0x1){return _0x1ef9e9;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xc9'),_0x2aaa('0x178'),_0x27b826));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x17c')]=function(_0x3d8886){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x17d'),_0x3d8886[_0x2aaa('0x35')]));var _0x29cb83=_0x3d8886[_0x2aaa('0x17e')]||_0x2aaa('0x132');var _0x224dd6=util['format'](_0x2aaa('0x17f'),this[_0x2aaa('0x33')]['uniqueid'],rs[_0x2aaa('0x11e')](0x5));var _0xfe0650=util['format'](_0x2aaa('0x180'),FILES_PATH,_0x224dd6,_0x29cb83);var _0x554ca8=util[_0x2aaa('0x26')](_0x2aaa('0x133'),FILES_PATH,_0x224dd6);this[_0x2aaa('0x39')]['sync'](this,_0x3d8886,_0x224dd6,_0xfe0650);this['channel'][_0x2aaa('0xa4')](_0x2aaa('0x181'),_0x224dd6);logger[_0x2aaa('0x2a')](_0x2aaa('0x182'),_0x554ca8,_0x29cb83,_0x3d8886[_0x2aaa('0x183')],_0x3d8886[_0x2aaa('0x62')]);return this[_0x2aaa('0x33')][_0x2aaa('0x136')](_0x554ca8,_0x29cb83,_0x3d8886[_0x2aaa('0x183')],_0x3d8886[_0x2aaa('0x62')],undefined,!![]);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x184')]=function(_0xeb73bc){logger['info'](util['format']('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0xeb73bc[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0xeb73bc[_0x2aaa('0x111')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x185'));}var _0xb1833f=this[_0x2aaa('0x61')][_0x2aaa('0x6e')](this,_0xeb73bc);logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x186'),util[_0x2aaa('0x187')](_0xb1833f,{'showHidden':![],'depth':null})));if(!this[_0x2aaa('0xa5')](_0xeb73bc['variable_id'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x188'));}var _0x688cfd=this['getVariable']['sync'](this,_0xeb73bc[_0x2aaa('0xdf')]);if(!_0x688cfd){return this['channel'][_0x2aaa('0x29')](_0xeb73bc,_0x2aaa('0xe0'));}this[_0x2aaa('0x33')][_0x2aaa('0xa4')](util[_0x2aaa('0x26')](_0x2aaa('0x189'),_0x688cfd),_0xb1833f[_0x2aaa('0x73')]?_0xb1833f[_0x2aaa('0x73')]:_0x2aaa('0x18a'));this['channel']['setVariable'](util[_0x2aaa('0x26')](_0x2aaa('0x18b'),_0x688cfd),_0xb1833f[_0x2aaa('0x74')]?_0xb1833f[_0x2aaa('0x74')]:'OK');if(_0xb1833f['body']){try{this[_0x2aaa('0x9b')](_0xb1833f[_0x2aaa('0x68')],_0x688cfd);}catch(_0x5dd0d2){logger[_0x2aaa('0x29')](util[_0x2aaa('0x26')](_0x2aaa('0x18c'),_0x688cfd));}}return this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('variable\x20%s\x20set',_0x688cfd));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x18d')]=function(_0x1e7dbe){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x18e'),_0x1e7dbe[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')]['sayDigits'](_0x1e7dbe[_0x2aaa('0x18f')]['replace'](/\s+/g,''),_0x1e7dbe[_0x2aaa('0x183')]);};AGIVertices['prototype'][_0x2aaa('0x190')]=function(_0x2e33eb){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x191'),_0x2e33eb[_0x2aaa('0x35')]));return this[_0x2aaa('0x33')]['sayNumber'](_0x2e33eb[_0x2aaa('0x63')]['replace'](/\s+/g,''),_0x2e33eb['escape_digits']);};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x192')]=function(_0x37a479){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x37a479[_0x2aaa('0x35')]));return this['channel']['sayPhonetic'](_0x37a479[_0x2aaa('0x5b')],_0x37a479[_0x2aaa('0x183')]);};AGIVertices['prototype'][_0x2aaa('0x193')]=function(_0x5cd014){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x194'),_0x5cd014[_0x2aaa('0x35')]));if(!this['isConfigured'](_0x5cd014[_0x2aaa('0x195')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x196'));}var _0x5974dc=this[_0x2aaa('0x1f')][_0x2aaa('0x6e')](this,_0x5cd014[_0x2aaa('0x195')]);if(!_0x5974dc||!_0x5974dc[_0x2aaa('0x197')]){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x5cd014,'no\x20mail\x20account\x20found');}var _0x11eb7c={'from':util[_0x2aaa('0x26')](_0x2aaa('0x198'),_0x5974dc['name'],_0x5974dc[_0x2aaa('0x199')]||_0x5974dc['Smtp'][_0x2aaa('0x19a')]),'to':_0x5cd014['to']||'','cc':_0x5cd014['cc']||'','bcc':_0x5cd014[_0x2aaa('0x19b')]||'','subject':_0x5cd014[_0x2aaa('0x19c')],'html':_0x5cd014[_0x2aaa('0x5b')],'text':_0x5cd014[_0x2aaa('0x5b')]};if(this[_0x2aaa('0xa5')](_0x5cd014[_0x2aaa('0x19d')])){}logger[_0x2aaa('0xe5')](_0x2aaa('0x19e'),JSON[_0x2aaa('0x71')](_0x11eb7c));this['createSquareDetailsReport'][_0x2aaa('0x6e')](this,_0x5cd014,_0x5cd014[_0x2aaa('0x195')]);this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x19f'),_0x5974dc[_0x2aaa('0x12')]));this[_0x2aaa('0x21')][_0x2aaa('0x6e')](this,_0x5974dc['smtpOptions'],_0x11eb7c);return this[_0x2aaa('0x33')]['noop']('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1a0')]=function(_0x1fe539){logger['info'](util[_0x2aaa('0x26')](_0x2aaa('0x1a1'),_0x1fe539['label']));return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0x1a2'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1a3')]=function(_0x557560){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x557560[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x557560[_0x2aaa('0x1a4')])){return this[_0x2aaa('0x33')]['noop']('no\x20sms\x20account\x20configured');}var _0x1af230=this['getSmsAccount'][_0x2aaa('0x6e')](this,_0x557560[_0x2aaa('0x1a4')]);if(!_0x1af230){return this['channel'][_0x2aaa('0x29')](_0x557560,_0x2aaa('0x1a5'));}var _0xa185fa={'body':_0x557560[_0x2aaa('0x1a6')],'phone':_0x557560['to']||'','SmsAccountId':_0x1af230['id']};logger[_0x2aaa('0xe5')](_0x2aaa('0x1a7'),JSON[_0x2aaa('0x71')](_0xa185fa));this[_0x2aaa('0xde')][_0x2aaa('0x6e')](this,_0x557560,_0x557560[_0x2aaa('0x1a4')]);this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x1af230[_0x2aaa('0x12')]));this['createSmsMessage'][_0x2aaa('0x6e')](this,_0xa185fa);return this['channel'][_0x2aaa('0xab')](_0x2aaa('0x1a8'));};AGIVertices['prototype'][_0x2aaa('0x1a9')]=function(_0x3f2223){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1aa'),_0x3f2223[_0x2aaa('0x35')]));if(!this['isConfigured'](_0x3f2223[_0x2aaa('0xdf')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x3f2223,_0x2aaa('0x1ab'));}var _0x5effb4=this[_0x2aaa('0xa1')][_0x2aaa('0x6e')](this,_0x3f2223[_0x2aaa('0xdf')]);if(!_0x5effb4){return this['channel'][_0x2aaa('0x29')](_0x3f2223,_0x2aaa('0xe0'));}return this[_0x2aaa('0x33')][_0x2aaa('0xa4')](_0x5effb4,_0x3f2223[_0x2aaa('0x1ac')]);};AGIVertices[_0x2aaa('0xf')]['start']=function(_0x3eda3c){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1ad'),_0x3eda3c['label']));this[_0x2aaa('0x33')]['noop'](_0x2aaa('0x1ae'));if(_0x3eda3c[_0x2aaa('0xba')]===_0x2aaa('0x1af')){this[_0x2aaa('0x33')][_0x2aaa('0xab')]('Answer');return this[_0x2aaa('0x33')][_0x2aaa('0xba')]();}return this[_0x2aaa('0x33')]['noop'](_0x2aaa('0x1b0'));};AGIVertices[_0x2aaa('0xf')]['subproject']=function(_0x240422){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1b1'),_0x240422[_0x2aaa('0x35')]));if(!this[_0x2aaa('0xa5')](_0x240422[_0x2aaa('0x1b2')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x240422,_0x2aaa('0x1b3'));}var _0x5a83bb=this[_0x2aaa('0x1b4')][_0x2aaa('0x6e')](this,_0x240422[_0x2aaa('0x1b2')]);if(!this[_0x2aaa('0xa5')](_0x5a83bb)){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x240422,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x240422[_0x2aaa('0x1b2')]));}if(_0x5a83bb===this[_0x2aaa('0x33')][_0x2aaa('0x37')]){return this[_0x2aaa('0x33')]['error'](_0x240422,_0x2aaa('0x1b5'));}this[_0x2aaa('0xde')]['sync'](this,_0x240422,_0x5a83bb);var _0x5a7986=this['channel']['exec'](_0x2aaa('0x1b6'),util[_0x2aaa('0x26')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x2aaa('0x7')][_0x2aaa('0x1b7')]||_0x2aaa('0x1b8'),_0x5a83bb,this['channel'][_0x2aaa('0x37')]));if(_0x5a7986[_0x2aaa('0xa3')]===-0x1){return _0x5a7986;}return this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0xc9'),_0x2aaa('0x1b6'),_0x5a83bb));};AGIVertices['prototype'][_0x2aaa('0x1b9')]=function(_0x2fb32d){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1ba'),_0x2fb32d[_0x2aaa('0x35')]));var _0xbce370=this[_0x2aaa('0x54')][_0x2aaa('0x6e')](this,_0x2fb32d['command']);this[_0x2aaa('0xde')]['sync'](this,_0x2fb32d,_0x2fb32d[_0x2aaa('0xb8')]);if(this['isConfigured'](_0x2fb32d[_0x2aaa('0xdf')])){var _0x3fd5eb=this[_0x2aaa('0xa1')][_0x2aaa('0x6e')](this,_0x2fb32d[_0x2aaa('0xdf')]);if(_0x3fd5eb){this[_0x2aaa('0x33')]['setVariable'](_0x3fd5eb,_0xbce370);return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x1bb'),_0x2fb32d[_0x2aaa('0xb8')],_0x3fd5eb));}}return this['channel'][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x1bc'),_0x2fb32d['command']));};AGIVertices[_0x2aaa('0xf')]['google_cloud_tts']=function(_0xe8b9e1){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0xe8b9e1[_0x2aaa('0x35')]));_0xe8b9e1[_0x2aaa('0x5b')]=_0xe8b9e1[_0x2aaa('0x5b')][_0x2aaa('0x57')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x2aaa('0xa5')](_0xe8b9e1[_0x2aaa('0x59')])){return this['channel'][_0x2aaa('0xab')](_0x2aaa('0x1bd'));}if(!this[_0x2aaa('0xa5')](_0xe8b9e1['text'])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')](_0x2aaa('0xcc'));}this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0xe8b9e1[_0x2aaa('0x5b')]));var _0x962694=this[_0x2aaa('0x58')][_0x2aaa('0x6e')](this,_0xe8b9e1);if(_0x962694){this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format'](_0x2aaa('0x1be'),_0x962694));var _0x1eff3a=this[_0x2aaa('0x33')][_0x2aaa('0x108')](_0x962694);try{fs[_0x2aaa('0x128')](_0x962694+_0x2aaa('0x109'));}catch(_0x30fda5){logger[_0x2aaa('0x29')](_0x30fda5);}return _0x1eff3a;}return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0xe8b9e1,_0x2aaa('0x1bf'));};AGIVertices[_0x2aaa('0xf')]['tts']=function(_0x2f27a1){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1c0'),_0x2f27a1[_0x2aaa('0x35')]));_0x2f27a1[_0x2aaa('0x5b')]=_0x2f27a1['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x2aaa('0xa5')](_0x2f27a1[_0x2aaa('0x5b')])){return this[_0x2aaa('0x33')][_0x2aaa('0xab')]('no\x20text\x20configured');}this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format'](_0x2aaa('0x1c1'),_0x2f27a1['text']));var _0x528747=this[_0x2aaa('0x5f')][_0x2aaa('0x6e')](this,_0x2f27a1);if(_0x528747){this[_0x2aaa('0x33')]['noop'](util[_0x2aaa('0x26')](_0x2aaa('0x1c2'),_0x528747));var _0x3a36b8=this[_0x2aaa('0x33')][_0x2aaa('0x108')](_0x528747);try{fs[_0x2aaa('0x128')](_0x528747+_0x2aaa('0x109'));}catch(_0xf10f34){logger['error'](_0xf10f34);}return _0x3a36b8;}return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x2f27a1,_0x2aaa('0x1c3'));};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1c4')]=function(_0x1a47ee){logger[_0x2aaa('0x2a')](util['format'](_0x2aaa('0x1c5'),_0x1a47ee['label']));if(!this['isConfigured'](_0x1a47ee[_0x2aaa('0x159')])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x1a47ee,'no\x20find\x20by\x20configured');}logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1c6'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x1a47ee[_0x2aaa('0x159')]));var _0x1bea6c=this[_0x2aaa('0x4f')][_0x2aaa('0x6e')](this,_0x1a47ee[_0x2aaa('0x159')]);if(_0x1bea6c){logger['info'](util['format'](_0x2aaa('0x15b'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x1a47ee[_0x2aaa('0x159')]));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0x15b'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x1a47ee[_0x2aaa('0x159')]));return{'code':0xc8,'result':_0x2aaa('0x15c')};}else{logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x15d'),this[_0x2aaa('0x33')][_0x2aaa('0x38')],_0x1a47ee[_0x2aaa('0x159')]));this[_0x2aaa('0x33')][_0x2aaa('0xab')](util['format'](_0x2aaa('0x15d'),this[_0x2aaa('0x33')]['callerid'],_0x1a47ee[_0x2aaa('0x159')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x2aaa('0xf')][_0x2aaa('0x1c7')]=function(_0x43408f){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1c8'),_0x43408f[_0x2aaa('0x35')]));var _0x1161d0=this[_0x2aaa('0x33')][_0x2aaa('0x55')](_0x2aaa('0x1c9'),[_0x43408f[_0x2aaa('0x1ca')],_0x43408f[_0x2aaa('0xa9')]]);if(_0x1161d0[_0x2aaa('0xa3')]===-0x1){return _0x1161d0;}return this[_0x2aaa('0x33')][_0x2aaa('0xab')](util[_0x2aaa('0x26')](_0x2aaa('0xc9'),_0x2aaa('0x1c9'),_0x43408f[_0x2aaa('0x1ca')]));};AGIVertices[_0x2aaa('0xf')]['vswitch']=function(_0x4cc27d){logger[_0x2aaa('0x2a')](util[_0x2aaa('0x26')](_0x2aaa('0x1cb'),_0x4cc27d[_0x2aaa('0x35')]));if(!this['isConfigured'](_0x4cc27d['variable_id'])){return this[_0x2aaa('0x33')][_0x2aaa('0x29')](_0x4cc27d,'no\x20variable\x20selected');}var _0x3706a0=this['getVariable'][_0x2aaa('0x6e')](this,_0x4cc27d[_0x2aaa('0xdf')]);if(!_0x3706a0){return this[_0x2aaa('0x33')]['error'](_0x4cc27d,_0x2aaa('0xe0'));}var _0x1c7a12=this['channel'][_0x2aaa('0xa1')](_0x3706a0);return{'code':0xc8,'result':_0x1c7a12['extra']?_0x1c7a12[_0x2aaa('0x14c')]:'-'};};String[_0x2aaa('0xf')][_0x2aaa('0xa0')]=function(_0x292da6,_0x568642){return this[_0x2aaa('0x9f')](_0x292da6)[_0x2aaa('0x1cc')](_0x568642);};module['exports']=AGIVertices;
\ No newline at end of file
index 6095bb0..cbefc12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b5=['[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','../../../config/logger','acw','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','update','info','[%s][UPDATE][ACWTIME:%s]','catch','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','error','[ACW][START]\x20%s','message','stopAcw','uniqueid','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x97b5,0x178));var _0x597b=function(_0x5b3ce1,_0xedd65b){_0x5b3ce1=_0x5b3ce1-0x0;var _0x38b358=_0x97b5[_0x5b3ce1];return _0x38b358;};'use strict';var util=require(_0x597b('0x0'));var _=require(_0x597b('0x1'));var moment=require('moment');var ami=require(_0x597b('0x2'));var logger=require(_0x597b('0x3'))(_0x597b('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x339b64){this[_0x597b('0x5')]=_0x339b64['voiceQueues'];this[_0x597b('0x6')]=_0x339b64[_0x597b('0x6')];this[_0x597b('0x7')]=_0x339b64[_0x597b('0x7')];this[_0x597b('0x8')]={};ami['on']('agentconnect',this[_0x597b('0x9')][_0x597b('0xa')](this));ami['on'](_0x597b('0xb'),this[_0x597b('0xc')]['bind'](this));ami['on'](_0x597b('0xd'),this[_0x597b('0xe')][_0x597b('0xa')](this));ami['on'](_0x597b('0xf'),this['syncAgentRingNoAnswer'][_0x597b('0xa')](this));ami['on'](_0x597b('0x10'),this['syncAttendedTransfer'][_0x597b('0xa')](this));ami['on'](_0x597b('0x11'),this[_0x597b('0x12')][_0x597b('0xa')](this));ami['on']('custom:agentConnectPreview',this[_0x597b('0x13')][_0x597b('0xa')](this));}function getDiff(_0x5bbf10){var _0x23278c=moment()[_0x597b('0x14')](0x0);var _0x204b4d=moment(_0x5bbf10)['milliseconds'](0x0);return _0x23278c[_0x597b('0x15')](_0x204b4d,_0x597b('0x16'));}Acw[_0x597b('0x17')]['startAcw']=function(_0x434431){try{var _0x1f0c14=this;var _0x3c648b=this[_0x597b('0x8')][_0x434431]['interface'];var _0xe2fbf8=this[_0x597b('0x8')][_0x434431]['queue'];var _0x7254bf=this[_0x597b('0x5')][_0xe2fbf8];var _0xd5e18a=![];var _0x37fa76=_0x597b('0x18');if(_0x7254bf[_0x597b('0x19')]){if(_0x7254bf[_0x597b('0x1a')][_0x597b('0x1b')]){_0xd5e18a=!![];_0x37fa76=_0x7254bf[_0x597b('0x1a')]['name'];}}ami[_0x597b('0x1c')]({'action':_0x597b('0x1d'),'interface':_0x3c648b,'paused':!![],'reason':_0x37fa76})[_0x597b('0x1e')](function(_0x2d6483){if(_0x1f0c14[_0x597b('0x6')][_0x3c648b]){return RpcUser['getAgent'](_0x1f0c14[_0x597b('0x6')][_0x3c648b]['id'])[_0x597b('0x1e')](function(_0x55d55b){if(_0x55d55b&&!_0x55d55b['voicePause']){logger['info'](_0x597b('0x1f'),_0x434431,_0x3c648b,_0xe2fbf8);var _0x3d9267=_0x1f0c14['channels'][_0x434431][_0x597b('0x20')]&&_0x1f0c14[_0x597b('0x8')][_0x434431][_0x597b('0x21')]?_0x1f0c14[_0x597b('0x8')][_0x434431][_0x597b('0x21')]:_0x434431;return RpcUser['savePause'](_0x1f0c14[_0x597b('0x6')][_0x3c648b],_0x37fa76,_0x3d9267)[_0x597b('0x1e')](function(_0x17c4e4){if(!_0xd5e18a){_0x1f0c14[_0x597b('0x7')][_0x3c648b]={};logger['info'](_0x597b('0x22'),_0x434431,_0x1f0c14['voiceQueues'][_0xe2fbf8][_0x597b('0x23')],_0x3c648b,_0xe2fbf8);_0x1f0c14['timers'][_0x3c648b][_0x597b('0x24')]=setTimeout(_0x1f0c14['stopAcw']['bind'](_0x1f0c14,_0x3c648b),_0x1f0c14['voiceQueues'][_0xe2fbf8]['acwTimeout']*0x3e8);_0x1f0c14['timers'][_0x3c648b][_0x597b('0x25')]=moment()[_0x597b('0x26')](_0x597b('0x27'));_0x1f0c14[_0x597b('0x7')][_0x3c648b]['uniqueid']=_0x434431;_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x28')]=_0xe2fbf8;_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x29')]=function(){var _0x127801=getDiff(_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x25')]);clearTimeout(_0x1f0c14[_0x597b('0x7')][_0x3c648b][_0x597b('0x24')]);_0x1f0c14[_0x597b('0x7')][_0x3c648b]['timer']=![];RpcVoiceAgentReport[_0x597b('0x2a')]({'acwtime':_0x127801},_0x1f0c14['timers'][_0x3c648b]['uniqueid'],_0x3c648b)['then'](function(_0x25327a){logger[_0x597b('0x2b')](_0x597b('0x2c'),_0x434431,_0x127801,_0x25327a);})[_0x597b('0x2d')](function(_0x3f5401){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x434431,_0x3f5401);});delete _0x1f0c14[_0x597b('0x7')][_0x3c648b];};}});}else{logger[_0x597b('0x2b')](_0x597b('0x2e'),_0x434431,_0x3c648b,_0xe2fbf8);}});}})['catch'](function(_0x356378){logger['error'](_0x597b('0x22'),_0x434431,_0x1f0c14[_0x597b('0x5')][_0xe2fbf8]['acwTimeout'],_0x3c648b,_0xe2fbf8);})[_0x597b('0x2f')](function(){delete _0x1f0c14[_0x597b('0x8')][_0x434431];});}catch(_0x2b0068){logger[_0x597b('0x30')](_0x597b('0x31'),_0x2b0068[_0x597b('0x32')]);}};Acw['prototype'][_0x597b('0x33')]=function(_0x2f3e87){try{var _0xc30586=this;if(_0xc30586[_0x597b('0x7')][_0x2f3e87]){_0xc30586[_0x597b('0x7')][_0x2f3e87][_0x597b('0x24')]=![];var _0x10b85e=_0xc30586['timers'][_0x2f3e87][_0x597b('0x34')];var _0x45bd57=_0xc30586[_0x597b('0x7')][_0x2f3e87][_0x597b('0x28')];var _0x2d7eee=_0xc30586[_0x597b('0x5')][_0x45bd57][_0x597b('0x23')];logger['info'](_0x597b('0x35'),_0x10b85e,_0x2f3e87);RpcUser[_0x597b('0x36')](this[_0x597b('0x6')][_0x2f3e87]);RpcVoiceAgentReport[_0x597b('0x2a')]({'acwtime':_0x2d7eee,'agentacw':!![]},_0x10b85e,_0x2f3e87)[_0x597b('0x1e')](function(_0x52e506){logger['info'](_0x597b('0x2c'),_0x10b85e,_0x2d7eee,_0x52e506);})['catch'](function(_0x5154e5){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x10b85e,_0x5154e5);});}else{logger['error'](_0x597b('0x37'),_0x2f3e87);if(_0xc30586[_0x597b('0x7')]){logger[_0x597b('0x2b')](_0x597b('0x38'),JSON[_0x597b('0x39')](_0xc30586[_0x597b('0x7')]));}}}catch(_0x5c967d){logger[_0x597b('0x30')](_0x597b('0x3a'),_0x5c967d[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x9')]=function(_0x267e12){try{if(this[_0x597b('0x5')][_0x267e12[_0x597b('0x28')]]&&(this[_0x597b('0x5')][_0x267e12['queue']][_0x597b('0x4')]||this[_0x597b('0x5')][_0x267e12['queue']][_0x597b('0x19')])){if(this[_0x597b('0x6')][_0x267e12[_0x597b('0x3b')]]){this[_0x597b('0x8')][_0x267e12[_0x597b('0x34')]]={'queue':_0x267e12[_0x597b('0x28')],'interface':_0x267e12[_0x597b('0x3b')],'destlinkedid':_0x267e12[_0x597b('0x21')]};}}}catch(_0x402941){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x402941[_0x597b('0x32')]);}};Acw['prototype'][_0x597b('0x13')]=function(_0x24bb7a){try{if(this['voiceQueues'][_0x24bb7a['queue']]&&(this[_0x597b('0x5')][_0x24bb7a['queue']][_0x597b('0x4')]||this[_0x597b('0x5')][_0x24bb7a['queue']]['mandatoryDisposition'])){if(this[_0x597b('0x6')][_0x24bb7a[_0x597b('0x3b')]]){this[_0x597b('0x8')][_0x24bb7a[_0x597b('0x34')]]={'queue':_0x24bb7a['queue'],'interface':_0x24bb7a['interface']};}}}catch(_0x592682){logger['error'](_0x597b('0x3c'),_0x592682[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0xc')]=function(_0x5480ea){try{if(this['channels'][_0x5480ea['uniqueid']]&&_[_0x597b('0x3d')](this[_0x597b('0x8')][_0x5480ea[_0x597b('0x34')]][_0x597b('0x20')])){logger[_0x597b('0x2b')](_0x597b('0x3e'),_0x5480ea[_0x597b('0x34')]);this[_0x597b('0x3f')](_0x5480ea[_0x597b('0x34')]);}else if(this[_0x597b('0x8')][_0x5480ea['linkedid']]&&_[_0x597b('0x3d')](this[_0x597b('0x8')][_0x5480ea['linkedid']]['attended'])){logger[_0x597b('0x2b')](_0x597b('0x40'),_0x5480ea['linkedid']);this[_0x597b('0x3f')](_0x5480ea[_0x597b('0x41')]);}}catch(_0x8ff77f){logger[_0x597b('0x30')](_0x597b('0x42'),_0x8ff77f[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0xe')]=function(_0x5b35e8){try{if(this['channels'][_0x5b35e8[_0x597b('0x34')]]&&this[_0x597b('0x8')][_0x5b35e8[_0x597b('0x34')]][_0x597b('0x20')]){logger[_0x597b('0x2b')](_0x597b('0x43'),_0x5b35e8[_0x597b('0x34')]);this['startAcw'](_0x5b35e8[_0x597b('0x34')]);}else if(this['channels'][_0x5b35e8[_0x597b('0x41')]]&&this['channels'][_0x5b35e8[_0x597b('0x41')]][_0x597b('0x20')]){logger['info'](_0x597b('0x44'),_0x5b35e8['linkedid']);this[_0x597b('0x3f')](_0x5b35e8['linkedid']);}}catch(_0x207144){logger[_0x597b('0x30')](_0x597b('0x45'),_0x207144[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x46')]=function(_0x4ad021){try{if(!_[_0x597b('0x47')](this[_0x597b('0x8')][_0x4ad021[_0x597b('0x48')]])){this[_0x597b('0x3f')](_0x4ad021[_0x597b('0x48')]);if(this[_0x597b('0x8')][_0x4ad021['secondtransfereruniqueid']]){this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]][_0x597b('0x20')]=!![];this['channels'][_0x4ad021[_0x597b('0x4a')]]=this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]];delete this[_0x597b('0x8')][_0x4ad021[_0x597b('0x49')]];}}else if(!_[_0x597b('0x47')](this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4a')]])){this[_0x597b('0x3f')](_0x4ad021[_0x597b('0x4a')]);if(this[_0x597b('0x8')][_0x4ad021['origtransfereruniqueid']]){this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4b')]][_0x597b('0x20')]=!![];this[_0x597b('0x8')][_0x4ad021['transfereeuniqueid']]=this[_0x597b('0x8')][_0x4ad021['origtransfereruniqueid']];delete this[_0x597b('0x8')][_0x4ad021[_0x597b('0x4b')]];}}}catch(_0x134b5a){logger[_0x597b('0x30')](_0x597b('0x4c'),_0x134b5a[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x12')]=function(_0x44ff14){try{if(this['channels'][_0x44ff14[_0x597b('0x4d')]]){logger['info'](_0x597b('0x4e'),JSON['stringify'](_0x44ff14[_0x597b('0x4d')]));this['startAcw'](_0x44ff14[_0x597b('0x4d')]);}else if(this[_0x597b('0x8')][_0x44ff14['transfererlinkedid']]){logger[_0x597b('0x2b')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x597b('0x39')](_0x44ff14[_0x597b('0x4f')]));this['startAcw'](_0x44ff14[_0x597b('0x4f')]);}}catch(_0x43a9eb){logger[_0x597b('0x30')](_0x597b('0x50'),_0x43a9eb[_0x597b('0x32')]);}};Acw[_0x597b('0x17')][_0x597b('0x51')]=function(_0x3ddbab){try{if(this[_0x597b('0x5')][_0x3ddbab[_0x597b('0x28')]]&&this[_0x597b('0x5')][_0x3ddbab[_0x597b('0x28')]][_0x597b('0x52')]===_0x597b('0x53')){if(this[_0x597b('0x6')][_0x3ddbab[_0x597b('0x3b')]]){logger[_0x597b('0x2b')](_0x597b('0x54'),_0x3ddbab[_0x597b('0x34')],_0x3ddbab['interface'],_0x3ddbab[_0x597b('0x28')]);return RpcUser[_0x597b('0x55')](this[_0x597b('0x6')][_0x3ddbab[_0x597b('0x3b')]],_0x597b('0x56'),_0x3ddbab[_0x597b('0x34')]);}}}catch(_0x58bab1){logger[_0x597b('0x30')](_0x597b('0x57'),_0x58bab1[_0x597b('0x32')]);}};module[_0x597b('0x58')]=Acw;
\ No newline at end of file
+var _0x4639=['acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','destlinkedid','savePause','info','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','update','[%s][UPDATE][ACWTIME:%s]','catch','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','stringify','[ACW][STOP]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','attended','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger'];(function(_0x1c7382,_0x3b7223){var _0x13f9e8=function(_0x297f11){while(--_0x297f11){_0x1c7382['push'](_0x1c7382['shift']());}};_0x13f9e8(++_0x3b7223);}(_0x4639,0x106));var _0x9463=function(_0x1b2255,_0x3de34f){_0x1b2255=_0x1b2255-0x0;var _0x33e57d=_0x4639[_0x1b2255];return _0x33e57d;};'use strict';var util=require(_0x9463('0x0'));var _=require(_0x9463('0x1'));var moment=require(_0x9463('0x2'));var ami=require(_0x9463('0x3'));var logger=require(_0x9463('0x4'))(_0x9463('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x9463('0x6'));function Acw(_0x16c205){this[_0x9463('0x7')]=_0x16c205[_0x9463('0x7')];this['agents']=_0x16c205[_0x9463('0x8')];this[_0x9463('0x9')]=_0x16c205[_0x9463('0x9')];this[_0x9463('0xa')]={};ami['on'](_0x9463('0xb'),this[_0x9463('0xc')][_0x9463('0xd')](this));ami['on']('hanguprequest',this[_0x9463('0xe')][_0x9463('0xd')](this));ami['on'](_0x9463('0xf'),this[_0x9463('0x10')][_0x9463('0xd')](this));ami['on'](_0x9463('0x11'),this[_0x9463('0x12')]['bind'](this));ami['on'](_0x9463('0x13'),this[_0x9463('0x14')][_0x9463('0xd')](this));ami['on'](_0x9463('0x15'),this[_0x9463('0x16')][_0x9463('0xd')](this));ami['on'](_0x9463('0x17'),this[_0x9463('0x18')][_0x9463('0xd')](this));}function getDiff(_0x1e365a){var _0x4cc2c4=moment()[_0x9463('0x19')](0x0);var _0x15e554=moment(_0x1e365a)[_0x9463('0x19')](0x0);return _0x4cc2c4[_0x9463('0x1a')](_0x15e554,_0x9463('0x1b'));}Acw[_0x9463('0x1c')][_0x9463('0x1d')]=function(_0x1aa3f){try{var _0x465bc3=this;var _0x279d26=this[_0x9463('0xa')][_0x1aa3f][_0x9463('0x1e')];var _0x4d3fcb=this[_0x9463('0xa')][_0x1aa3f][_0x9463('0x1f')];var _0x1cea10=this[_0x9463('0x7')][_0x4d3fcb];var _0x36e09c=![];var _0x4a6dd8=_0x9463('0x20');if(_0x1cea10[_0x9463('0x21')]){if(_0x1cea10[_0x9463('0x22')]['name']){_0x36e09c=!![];_0x4a6dd8=_0x1cea10[_0x9463('0x22')][_0x9463('0x23')];}}ami[_0x9463('0x24')]({'action':_0x9463('0x25'),'interface':_0x279d26,'paused':!![],'reason':_0x4a6dd8})[_0x9463('0x26')](function(_0x551708){if(_0x465bc3['agents'][_0x279d26]){return RpcUser[_0x9463('0x27')](_0x465bc3['agents'][_0x279d26]['id'])[_0x9463('0x26')](function(_0x5e4ef2){if(_0x5e4ef2&&!_0x5e4ef2['voicePause']){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x1aa3f,_0x279d26,_0x4d3fcb);var _0x1e62c6=_0x465bc3[_0x9463('0xa')][_0x1aa3f]['attended']&&_0x465bc3[_0x9463('0xa')][_0x1aa3f][_0x9463('0x28')]?_0x465bc3[_0x9463('0xa')][_0x1aa3f][_0x9463('0x28')]:_0x1aa3f;return RpcUser[_0x9463('0x29')](_0x465bc3['agents'][_0x279d26],_0x4a6dd8,_0x1e62c6)['then'](function(_0xcd47c1){if(!_0x36e09c){_0x465bc3[_0x9463('0x9')][_0x279d26]={};logger[_0x9463('0x2a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1aa3f,_0x465bc3[_0x9463('0x7')][_0x4d3fcb][_0x9463('0x2b')],_0x279d26,_0x4d3fcb);_0x465bc3[_0x9463('0x9')][_0x279d26]['timer']=setTimeout(_0x465bc3['stopAcw'][_0x9463('0xd')](_0x465bc3,_0x279d26),_0x465bc3['voiceQueues'][_0x4d3fcb][_0x9463('0x2b')]*0x3e8);_0x465bc3['timers'][_0x279d26][_0x9463('0x2c')]=moment()[_0x9463('0x2d')](_0x9463('0x2e'));_0x465bc3[_0x9463('0x9')][_0x279d26][_0x9463('0x2f')]=_0x1aa3f;_0x465bc3['timers'][_0x279d26][_0x9463('0x1f')]=_0x4d3fcb;_0x465bc3[_0x9463('0x9')][_0x279d26][_0x9463('0x30')]=function(){var _0x252e77=getDiff(_0x465bc3['timers'][_0x279d26][_0x9463('0x2c')]);clearTimeout(_0x465bc3[_0x9463('0x9')][_0x279d26][_0x9463('0x31')]);_0x465bc3[_0x9463('0x9')][_0x279d26][_0x9463('0x31')]=![];RpcVoiceAgentReport[_0x9463('0x32')]({'acwtime':_0x252e77},_0x465bc3['timers'][_0x279d26]['uniqueid'],_0x279d26)['then'](function(_0x3def64){logger[_0x9463('0x2a')](_0x9463('0x33'),_0x1aa3f,_0x252e77,_0x3def64);})[_0x9463('0x34')](function(_0xf319c3){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x1aa3f,_0xf319c3);});delete _0x465bc3['timers'][_0x279d26];};}});}else{logger[_0x9463('0x2a')](_0x9463('0x35'),_0x1aa3f,_0x279d26,_0x4d3fcb);}});}})['catch'](function(_0x5c8a98){logger[_0x9463('0x36')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x1aa3f,_0x465bc3[_0x9463('0x7')][_0x4d3fcb]['acwTimeout'],_0x279d26,_0x4d3fcb);})[_0x9463('0x37')](function(){delete _0x465bc3[_0x9463('0xa')][_0x1aa3f];});}catch(_0x5eb3ac){logger[_0x9463('0x36')](_0x9463('0x38'),_0x5eb3ac['message']);}};Acw[_0x9463('0x1c')][_0x9463('0x39')]=function(_0x1a069f){try{var _0x48bfa2=this;if(_0x48bfa2['timers'][_0x1a069f]){_0x48bfa2['timers'][_0x1a069f][_0x9463('0x31')]=![];var _0xfd32b7=_0x48bfa2['timers'][_0x1a069f][_0x9463('0x2f')];var _0x6d703c=_0x48bfa2[_0x9463('0x9')][_0x1a069f][_0x9463('0x1f')];var _0x5c6bd7=_0x48bfa2[_0x9463('0x7')][_0x6d703c]['acwTimeout'];logger[_0x9463('0x2a')](_0x9463('0x3a'),_0xfd32b7,_0x1a069f);RpcUser[_0x9463('0x3b')](this[_0x9463('0x8')][_0x1a069f]);RpcVoiceAgentReport[_0x9463('0x32')]({'acwtime':_0x5c6bd7,'agentacw':!![]},_0xfd32b7,_0x1a069f)['then'](function(_0x6cf195){logger[_0x9463('0x2a')](_0x9463('0x33'),_0xfd32b7,_0x5c6bd7,_0x6cf195);})[_0x9463('0x34')](function(_0x2ba26e){logger[_0x9463('0x36')](_0x9463('0x3c'),_0xfd32b7,_0x2ba26e);});}else{logger[_0x9463('0x36')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x1a069f);if(_0x48bfa2[_0x9463('0x9')]){logger['info']('[ACW][TIMERS]',JSON[_0x9463('0x3d')](_0x48bfa2[_0x9463('0x9')]));}}}catch(_0x3149c8){logger['error'](_0x9463('0x3e'),_0x3149c8['message']);}};Acw[_0x9463('0x1c')][_0x9463('0xc')]=function(_0x23f60b){try{if(this['voiceQueues'][_0x23f60b[_0x9463('0x1f')]]&&(this['voiceQueues'][_0x23f60b[_0x9463('0x1f')]]['acw']||this[_0x9463('0x7')][_0x23f60b[_0x9463('0x1f')]][_0x9463('0x21')])){if(this[_0x9463('0x8')][_0x23f60b[_0x9463('0x1e')]]){this[_0x9463('0xa')][_0x23f60b[_0x9463('0x2f')]]={'queue':_0x23f60b[_0x9463('0x1f')],'interface':_0x23f60b[_0x9463('0x1e')],'destlinkedid':_0x23f60b[_0x9463('0x28')]};}}}catch(_0x12c554){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x12c554[_0x9463('0x3f')]);}};Acw[_0x9463('0x1c')][_0x9463('0x18')]=function(_0x324d4d){try{if(this['voiceQueues'][_0x324d4d[_0x9463('0x1f')]]&&(this[_0x9463('0x7')][_0x324d4d[_0x9463('0x1f')]][_0x9463('0x5')]||this['voiceQueues'][_0x324d4d[_0x9463('0x1f')]][_0x9463('0x21')])){if(this[_0x9463('0x8')][_0x324d4d[_0x9463('0x1e')]]){this[_0x9463('0xa')][_0x324d4d[_0x9463('0x2f')]]={'queue':_0x324d4d[_0x9463('0x1f')],'interface':_0x324d4d[_0x9463('0x1e')]};}}}catch(_0x55b9ce){logger[_0x9463('0x36')](_0x9463('0x40'),_0x55b9ce['message']);}};Acw[_0x9463('0x1c')][_0x9463('0xe')]=function(_0x1985e3){try{if(this[_0x9463('0xa')][_0x1985e3[_0x9463('0x2f')]]&&_[_0x9463('0x41')](this['channels'][_0x1985e3[_0x9463('0x2f')]]['attended'])){logger[_0x9463('0x2a')](_0x9463('0x42'),_0x1985e3[_0x9463('0x2f')]);this[_0x9463('0x1d')](_0x1985e3[_0x9463('0x2f')]);}else if(this[_0x9463('0xa')][_0x1985e3['linkedid']]&&_[_0x9463('0x41')](this['channels'][_0x1985e3[_0x9463('0x43')]][_0x9463('0x44')])){logger[_0x9463('0x2a')](_0x9463('0x45'),_0x1985e3['linkedid']);this['startAcw'](_0x1985e3[_0x9463('0x43')]);}}catch(_0x5b63d9){logger[_0x9463('0x36')](_0x9463('0x46'),_0x5b63d9[_0x9463('0x3f')]);}};Acw[_0x9463('0x1c')]['syncHangup']=function(_0xf5e360){try{if(this['channels'][_0xf5e360[_0x9463('0x2f')]]&&this[_0x9463('0xa')][_0xf5e360[_0x9463('0x2f')]][_0x9463('0x44')]){logger[_0x9463('0x2a')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0xf5e360[_0x9463('0x2f')]);this[_0x9463('0x1d')](_0xf5e360[_0x9463('0x2f')]);}else if(this[_0x9463('0xa')][_0xf5e360[_0x9463('0x43')]]&&this[_0x9463('0xa')][_0xf5e360[_0x9463('0x43')]][_0x9463('0x44')]){logger[_0x9463('0x2a')](_0x9463('0x47'),_0xf5e360[_0x9463('0x43')]);this['startAcw'](_0xf5e360[_0x9463('0x43')]);}}catch(_0x51ea32){logger[_0x9463('0x36')](_0x9463('0x48'),_0x51ea32[_0x9463('0x3f')]);}};Acw[_0x9463('0x1c')][_0x9463('0x14')]=function(_0xfd1b63){try{if(!_[_0x9463('0x49')](this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4a')]])){this['startAcw'](_0xfd1b63[_0x9463('0x4a')]);if(this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4b')]]){this[_0x9463('0xa')][_0xfd1b63['secondtransfereruniqueid']]['attended']=!![];this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4c')]]=this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4b')]];delete this[_0x9463('0xa')][_0xfd1b63['secondtransfereruniqueid']];}}else if(!_[_0x9463('0x49')](this['channels'][_0xfd1b63[_0x9463('0x4c')]])){this[_0x9463('0x1d')](_0xfd1b63[_0x9463('0x4c')]);if(this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4d')]]){this['channels'][_0xfd1b63['origtransfereruniqueid']][_0x9463('0x44')]=!![];this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4a')]]=this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4d')]];delete this[_0x9463('0xa')][_0xfd1b63[_0x9463('0x4d')]];}}}catch(_0x3c8a3d){logger['error'](_0x9463('0x4e'),_0x3c8a3d[_0x9463('0x3f')]);}};Acw[_0x9463('0x1c')]['syncBlindTransfer']=function(_0x4e8788){try{if(this[_0x9463('0xa')][_0x4e8788['transfereruniqueid']]){logger[_0x9463('0x2a')](_0x9463('0x4f'),JSON[_0x9463('0x3d')](_0x4e8788[_0x9463('0x50')]));this[_0x9463('0x1d')](_0x4e8788['transfereruniqueid']);}else if(this[_0x9463('0xa')][_0x4e8788['transfererlinkedid']]){logger[_0x9463('0x2a')](_0x9463('0x51'),JSON[_0x9463('0x3d')](_0x4e8788[_0x9463('0x52')]));this[_0x9463('0x1d')](_0x4e8788[_0x9463('0x52')]);}}catch(_0x281660){logger['error'](_0x9463('0x53'),_0x281660['message']);}};Acw[_0x9463('0x1c')][_0x9463('0x12')]=function(_0x4bade2){try{if(this[_0x9463('0x7')][_0x4bade2[_0x9463('0x1f')]]&&this[_0x9463('0x7')][_0x4bade2[_0x9463('0x1f')]]['autopause']===_0x9463('0x54')){if(this['agents'][_0x4bade2[_0x9463('0x1e')]]){logger[_0x9463('0x2a')](_0x9463('0x55'),_0x4bade2[_0x9463('0x2f')],_0x4bade2[_0x9463('0x1e')],_0x4bade2[_0x9463('0x1f')]);return RpcUser[_0x9463('0x29')](this[_0x9463('0x8')][_0x4bade2[_0x9463('0x1e')]],_0x9463('0x56'),_0x4bade2[_0x9463('0x2f')]);}}}catch(_0x173f89){logger['error'](_0x9463('0x57'),_0x173f89[_0x9463('0x3f')]);}};module[_0x9463('0x58')]=Acw;
\ No newline at end of file
index 8135c9b..c10ddd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','ami','../../config/environment','asterisk','port','username','password','Action','promisify','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','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus'];(function(_0x31b817,_0x517da3){var _0x47d88b=function(_0x5b2c0c){while(--_0x5b2c0c){_0x31b817['push'](_0x31b817['shift']());}};_0x47d88b(++_0x517da3);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Manager=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var moment=require('moment');var util=require('util');var _=require('lodash');var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var ami=new Manager(config[_0x0d8b('0x5')][_0x0d8b('0x6')],config['asterisk']['ip'],config['asterisk'][_0x0d8b('0x7')],config[_0x0d8b('0x5')][_0x0d8b('0x8')],!![]);ami['keepConnected']();ami[_0x0d8b('0x9')]=BPromise[_0x0d8b('0xa')](ami['action']);function error(_0x129310){logger[_0x0d8b('0xb')](util[_0x0d8b('0xc')](_0x0d8b('0xd'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port'],util[_0x0d8b('0xe')](_0x129310,![],null)));}function close(){logger['error'](util[_0x0d8b('0xc')](_0x0d8b('0xf'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')]));}ami[_0x0d8b('0x10')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x11')});};};ami[_0x0d8b('0x12')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x13')});};};ami[_0x0d8b('0x14')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x15')});};};ami[_0x0d8b('0x16')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x17')});};};ami[_0x0d8b('0x18')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x19')});};};function connect(_0x4586c2){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x1b'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config['asterisk'][_0x0d8b('0x6')]));ami[_0x0d8b('0x1c')](_0x0d8b('0xb'),error);ami[_0x0d8b('0x1c')](_0x0d8b('0x1d'),close);}ami['on'](_0x0d8b('0x1e'),connect);ami['on'](_0x0d8b('0x1f'),function(_0x352c17){logger['info'](util['format'](_0x0d8b('0x20'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')],util[_0x0d8b('0xe')](_0x352c17,![],null)));});ami['on'](_0x0d8b('0x21'),function(_0x221071){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x22'),config[_0x0d8b('0x5')]['username'],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port']));return BPromise[_0x0d8b('0x23')]()['then'](ami[_0x0d8b('0x10')]())[_0x0d8b('0x24')](ami[_0x0d8b('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x0d8b('0x24')](ami[_0x0d8b('0x16')]())['then'](ami[_0x0d8b('0x18')]())['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x25'),util['inspect'](_0x1b2b59,{'showHidden':![],'depth':null}));});});ami[_0x0d8b('0x1c')]('error',error);ami[_0x0d8b('0x1c')]('close',close);module[_0x0d8b('0x26')]=ami;
\ No newline at end of file
+var _0x0b0e=['../../config/environment','asterisk','port','username','password','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionQueueSummary','actionCoreShowChannels','coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','close','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','once','asterisk-manager','moment','lodash','../../config/logger','ami'];(function(_0x472c0c,_0x4835fd){var _0x33401a=function(_0x4e43e5){while(--_0x4e43e5){_0x472c0c['push'](_0x472c0c['shift']());}};_0x33401a(++_0x4835fd);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4dbdda,_0x11f07c){_0x4dbdda=_0x4dbdda-0x0;var _0x1acbf1=_0x0b0e[_0x4dbdda];return _0x1acbf1;};'use strict';var Manager=require(_0xe0b0('0x0'));var BPromise=require('bluebird');var moment=require(_0xe0b0('0x1'));var util=require('util');var _=require(_0xe0b0('0x2'));var logger=require(_0xe0b0('0x3'))(_0xe0b0('0x4'));var config=require(_0xe0b0('0x5'));var ami=new Manager(config[_0xe0b0('0x6')][_0xe0b0('0x7')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')][_0xe0b0('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise[_0xe0b0('0xa')](ami[_0xe0b0('0xb')]);function error(_0xc4a085){logger[_0xe0b0('0xc')](util['format'](_0xe0b0('0xd'),config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')]['port'],util[_0xe0b0('0xe')](_0xc4a085,![],null)));}function close(){logger[_0xe0b0('0xc')](util[_0xe0b0('0xf')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x11')});};};ami[_0xe0b0('0x12')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'sippeerstatus'});};};ami[_0xe0b0('0x14')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'queuesummary'});};};ami[_0xe0b0('0x15')]=function(){return function(){return ami['Action']({'action':_0xe0b0('0x16')});};};function connect(_0x100204){logger['info'](util['format'](_0xe0b0('0x17'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xe0b0('0x6')]['port']));ami['once'](_0xe0b0('0xc'),error);ami['once'](_0xe0b0('0x18'),close);}ami['on']('connect',connect);ami['on'](_0xe0b0('0x19'),function(_0x1cd7c4){logger[_0xe0b0('0x1a')](util[_0xe0b0('0xf')](_0xe0b0('0x1b'),config['asterisk']['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')],util[_0xe0b0('0xe')](_0x1cd7c4,![],null)));});ami['on']('fullybooted',function(_0x170ad8){logger['info'](util[_0xe0b0('0xf')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')]));return BPromise['resolve']()[_0xe0b0('0x1c')](ami['actionSipShowRegistry']())[_0xe0b0('0x1c')](ami[_0xe0b0('0x12')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x1d')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x14')]())['then'](ami[_0xe0b0('0x15')]())[_0xe0b0('0x1e')](function(_0x5b7a64){logger[_0xe0b0('0xc')](_0xe0b0('0x1f'),util[_0xe0b0('0xe')](_0x5b7a64,{'showHidden':![],'depth':null}));});});ami[_0xe0b0('0x20')](_0xe0b0('0xc'),error);ami[_0xe0b0('0x20')](_0xe0b0('0x18'),close);module['exports']=ami;
\ No newline at end of file
index d80c1f5..4c8bc5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x62b58e,_0x46fe1e){var _0x37fe84=function(_0x12a2ca){while(--_0x12a2ca){_0x62b58e['push'](_0x62b58e['shift']());}};_0x37fe84(++_0x46fe1e);}(_0x9bde,0xe1));var _0xe9bd=function(_0x470785,_0x46a844){_0x470785=_0x470785-0x0;var _0x3e3d67=_0x9bde[_0x470785];return _0x3e3d67;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x2e914,_0x1c7566){var _0x936e45=function(_0x1b22e4){while(--_0x1b22e4){_0x2e914['push'](_0x2e914['shift']());}};_0x936e45(++_0x1c7566);}(_0xb7e7,0x121));var _0x7b7e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xb7e7[_0x297fd3];return _0x2af381;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
index 39d8adc..8a7beec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc99=['callbackat','recallme','prototype','getCaller','\x22%s\x22\x20<%s>','name','dialCutDigit','substring','getQueue','exports','string','voiceQueue','uniqueid','firstName','Contact','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid'];(function(_0x459ca8,_0x322b29){var _0x25f289=function(_0x24ac05){while(--_0x24ac05){_0x459ca8['push'](_0x459ca8['shift']());}};_0x25f289(++_0x322b29);}(_0xbc99,0x106));var _0x9bc9=function(_0x27dc9d,_0x5e5bd1){_0x27dc9d=_0x27dc9d-0x0;var _0x555ae2=_0xbc99[_0x27dc9d];return _0x555ae2;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x184eaa,_0x2ab77b,_0x2ada91){var _0x21b2c4='';if(!_['isNil'](_0x2ab77b)&&'string'===typeof _0x2ab77b){_0x21b2c4+=_0x2ab77b;}if(!_['isNil'](_0x2ada91)&&_0x9bc9('0x0')===typeof _0x2ada91){_0x21b2c4+='\x20'+_0x2ada91;}if(_0x21b2c4!==''){return _0x21b2c4;}return _0x184eaa;}function Action(_0x3ad1c5,_0x56c67a,_0x23aad9){this[_0x9bc9('0x1')]=_0x3ad1c5;this[_0x9bc9('0x2')]=_0x23aad9||undefined;this['name']=checkNameSurname(_0x56c67a['Contact']['phone'],_0x56c67a['Contact'][_0x9bc9('0x3')],_0x56c67a[_0x9bc9('0x4')][_0x9bc9('0x5')]);this[_0x9bc9('0x6')]=_0x56c67a[_0x9bc9('0x7')];this[_0x9bc9('0x8')]=_0x3ad1c5['name'];this[_0x9bc9('0x9')]=_0x56c67a[_0x9bc9('0x9')]||![];this[_0x9bc9('0xa')]=_0x3ad1c5[_0x9bc9('0xa')];this[_0x9bc9('0xb')]=_0x3ad1c5['dialQueueTimeout']||0x3;this[_0x9bc9('0xc')]=_0x56c67a['scheduledat'];this['countbusyretry']=_0x56c67a[_0x9bc9('0xd')];this[_0x9bc9('0xe')]=_0x56c67a['countcongestionretry'];this[_0x9bc9('0xf')]=_0x56c67a['countnoanswerretry'];this[_0x9bc9('0x10')]=_0x56c67a[_0x9bc9('0x10')];this[_0x9bc9('0x11')]=_0x56c67a[_0x9bc9('0x11')];this[_0x9bc9('0x12')]=_0x56c67a[_0x9bc9('0x12')];this[_0x9bc9('0x13')]=_0x56c67a[_0x9bc9('0x13')];this[_0x9bc9('0x14')]=_0x56c67a[_0x9bc9('0x14')];this[_0x9bc9('0x15')]=_0x56c67a['ContactId'];this['ListId']=_0x56c67a[_0x9bc9('0x16')];this['UserId']=_0x56c67a[_0x9bc9('0x17')];this[_0x9bc9('0x18')]=_0x56c67a[_0x9bc9('0x18')];this[_0x9bc9('0x19')]=_0x56c67a[_0x9bc9('0x19')];this['idHopper']=_0x56c67a['id'];this[_0x9bc9('0x1a')]=_0x56c67a[_0x9bc9('0x4')][_0x9bc9('0x3')]||'';this[_0x9bc9('0x1b')]=moment()[_0x9bc9('0x1c')](_0x9bc9('0x1d'));this[_0x9bc9('0x1e')]=_0x56c67a[_0x9bc9('0x1e')];this[_0x9bc9('0x1f')]=_0x56c67a[_0x9bc9('0x1f')];this[_0x9bc9('0x20')]=_0x56c67a[_0x9bc9('0x20')];this[_0x9bc9('0x21')]=_0x56c67a[_0x9bc9('0x21')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x9bc9('0x22')][_0x9bc9('0x23')]=function(){return util['format'](_0x9bc9('0x24'),this[_0x9bc9('0x25')],this['voiceQueue'][_0x9bc9('0x26')]>0x0?this[_0x9bc9('0x6')][_0x9bc9('0x27')](this[_0x9bc9('0x1')][_0x9bc9('0x26')]):this['number']);};Action[_0x9bc9('0x22')][_0x9bc9('0x28')]=function(){return this[_0x9bc9('0x8')];};module[_0x9bc9('0x29')]=Action;
\ No newline at end of file
+var _0x4d78=['idHopper','ContactFirstName','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','number','substring','util','moment','isNil','string','voiceQueue','Contact','phone','firstName','queue','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId'];(function(_0x4672bd,_0x1a736a){var _0x35f3a3=function(_0x2b0956){while(--_0x2b0956){_0x4672bd['push'](_0x4672bd['shift']());}};_0x35f3a3(++_0x1a736a);}(_0x4d78,0x104));var _0x84d7=function(_0x2c87ec,_0x17e7b8){_0x2c87ec=_0x2c87ec-0x0;var _0x1a286a=_0x4d78[_0x2c87ec];return _0x1a286a;};'use strict';var util=require(_0x84d7('0x0'));var _=require('lodash');var moment=require(_0x84d7('0x1'));function checkNameSurname(_0x20ea70,_0x263fad,_0x3177be){var _0x536f95='';if(!_['isNil'](_0x263fad)&&'string'===typeof _0x263fad){_0x536f95+=_0x263fad;}if(!_[_0x84d7('0x2')](_0x3177be)&&_0x84d7('0x3')===typeof _0x3177be){_0x536f95+='\x20'+_0x3177be;}if(_0x536f95!==''){return _0x536f95;}return _0x20ea70;}function Action(_0x4a3928,_0x114e03,_0x556c42){this[_0x84d7('0x4')]=_0x4a3928;this['uniqueid']=_0x556c42||undefined;this['name']=checkNameSurname(_0x114e03[_0x84d7('0x5')][_0x84d7('0x6')],_0x114e03[_0x84d7('0x5')][_0x84d7('0x7')],_0x114e03[_0x84d7('0x5')]['lastName']);this['number']=_0x114e03[_0x84d7('0x6')];this[_0x84d7('0x8')]=_0x4a3928[_0x84d7('0x9')];this[_0x84d7('0xa')]=_0x114e03[_0x84d7('0xa')]||![];this[_0x84d7('0xb')]=_0x4a3928['type'];this[_0x84d7('0xc')]=_0x4a3928['dialQueueTimeout']||0x3;this[_0x84d7('0xd')]=_0x114e03[_0x84d7('0xd')];this[_0x84d7('0xe')]=_0x114e03[_0x84d7('0xe')];this['countcongestionretry']=_0x114e03[_0x84d7('0xf')];this[_0x84d7('0x10')]=_0x114e03[_0x84d7('0x10')];this[_0x84d7('0x11')]=_0x114e03[_0x84d7('0x11')];this[_0x84d7('0x12')]=_0x114e03[_0x84d7('0x12')];this[_0x84d7('0x13')]=_0x114e03[_0x84d7('0x13')];this[_0x84d7('0x14')]=_0x114e03['countmachineretry'];this[_0x84d7('0x15')]=_0x114e03[_0x84d7('0x15')];this[_0x84d7('0x16')]=_0x114e03['ContactId'];this['ListId']=_0x114e03[_0x84d7('0x17')];this[_0x84d7('0x18')]=_0x114e03[_0x84d7('0x18')];this['VoiceQueueId']=_0x114e03[_0x84d7('0x19')];this[_0x84d7('0x1a')]=_0x114e03[_0x84d7('0x1a')];this[_0x84d7('0x1b')]=_0x114e03['id'];this[_0x84d7('0x1c')]=_0x114e03[_0x84d7('0x5')][_0x84d7('0x7')]||'';this['starttime']=moment()['format'](_0x84d7('0x1d'));this['callback']=_0x114e03[_0x84d7('0x1e')];this[_0x84d7('0x1f')]=_0x114e03[_0x84d7('0x1f')];this[_0x84d7('0x20')]=_0x114e03['callbackat'];this[_0x84d7('0x21')]=_0x114e03['recallme'];this[_0x84d7('0x22')]='';this[_0x84d7('0x23')]='';}Action[_0x84d7('0x24')][_0x84d7('0x25')]=function(){return util[_0x84d7('0x26')]('\x22%s\x22\x20<%s>',this[_0x84d7('0x9')],this['voiceQueue']['dialCutDigit']>0x0?this[_0x84d7('0x27')][_0x84d7('0x28')](this[_0x84d7('0x4')]['dialCutDigit']):this[_0x84d7('0x27')]);};Action['prototype']['getQueue']=function(){return this[_0x84d7('0x8')];};module['exports']=Action;
\ No newline at end of file
index 8e40e4e..5eac503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59f2=['ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme'];(function(_0x382bd0,_0x2b9d24){var _0x50b007=function(_0x17bbef){while(--_0x17bbef){_0x382bd0['push'](_0x382bd0['shift']());}};_0x50b007(++_0x2b9d24);}(_0x59f2,0xb3));var _0x259f=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x59f2[_0x4154a6];return _0x3b2786;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x42a1b8,_0x4d247c){var _0x198f6a=moment(_0x42a1b8)[_0x259f('0x0')](0x0);var _0x4334a3=moment(_0x4d247c)[_0x259f('0x0')](0x0);return _0x198f6a['diff'](_0x4334a3,_0x259f('0x1'));}function AgentComplete(_0x219b7a,_0x52d53e){this['state']=0x4;this[_0x259f('0x2')]=_0x259f('0x3');this[_0x259f('0x4')]=_0x219b7a['scheduledat'];this[_0x259f('0x5')]=_0x219b7a['type'];this[_0x259f('0x6')]=_0x219b7a[_0x259f('0x5')]===_0x259f('0x7')?'queue':_0x219b7a[_0x259f('0x5')];this[_0x259f('0x8')]=_0x219b7a[_0x259f('0x8')];this['countcongestionretry']=_0x219b7a[_0x259f('0x9')];this[_0x259f('0xa')]=_0x219b7a[_0x259f('0xa')];this['countglobal']=_0x219b7a['countbusyretry']+_0x219b7a[_0x259f('0x9')]+_0x219b7a[_0x259f('0xa')]+_0x219b7a['countnosuchnumberretry']+_0x219b7a['countdropretry']+_0x219b7a[_0x259f('0xb')]+_0x219b7a[_0x259f('0xc')]+_0x219b7a[_0x259f('0xd')];this[_0x259f('0xe')]=_0x219b7a[_0x259f('0xe')];this[_0x259f('0xf')]=_0x219b7a[_0x259f('0xf')];this[_0x259f('0xb')]=_0x219b7a[_0x259f('0xb')];this[_0x259f('0xc')]=_0x219b7a[_0x259f('0xc')];this[_0x259f('0xd')]=_0x219b7a[_0x259f('0xd')];this[_0x259f('0x10')]=_0x52d53e[_0x259f('0x10')];this[_0x259f('0x11')]=_0x219b7a[_0x259f('0x12')];this[_0x259f('0x13')]=_0x219b7a[_0x259f('0x14')];this[_0x259f('0x15')]=_0x219b7a[_0x259f('0x15')];this['responsetime']=_0x219b7a[_0x259f('0x16')];this[_0x259f('0x17')]=_0x219b7a['answertime'];this[_0x259f('0x18')]=moment()['format'](_0x259f('0x19'));this[_0x259f('0x1a')]=getSeconds(_0x219b7a['responsetime'],_0x219b7a[_0x259f('0x15')]);this[_0x259f('0x1b')]=getSeconds(_0x219b7a['answertime'],_0x219b7a['responsetime']);this[_0x259f('0x1c')]=getSeconds(this[_0x259f('0x18')],_0x219b7a[_0x259f('0x17')]);this['queue']=_0x52d53e[_0x259f('0x1d')];this['membername']=_0x52d53e[_0x259f('0x1e')];this['reason']=_0x52d53e[_0x259f('0x1f')];this[_0x259f('0x20')]=_0x219b7a[_0x259f('0x20')];this[_0x259f('0x21')]=_0x219b7a['callbackuniqueid'];this[_0x259f('0x22')]=_0x219b7a['callbackat'];this[_0x259f('0x23')]=_0x219b7a[_0x259f('0x23')];this['ContactId']=_0x219b7a['ContactId'];this[_0x259f('0x24')]=_0x219b7a[_0x259f('0x24')];this['UserId']=_0x219b7a[_0x259f('0x25')];this[_0x259f('0x26')]=_0x219b7a[_0x259f('0x26')];this[_0x259f('0x27')]=_0x219b7a['CampaignId'];this['originatecalleridnum']=_0x219b7a[_0x259f('0x28')]||'';this['originatecalleridname']=_0x219b7a[_0x259f('0x29')]||'';}module[_0x259f('0x2a')]=AgentComplete;
\ No newline at end of file
+var _0x500e=['number','starttime','responsetime','answertime','endtime','format','holdtime','talktime','membername','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum'];(function(_0x35d4e9,_0x298c61){var _0x5c2770=function(_0x2f326a){while(--_0x2f326a){_0x35d4e9['push'](_0x35d4e9['shift']());}};_0x5c2770(++_0x298c61);}(_0x500e,0xbf));var _0xe500=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0x500e[_0x2160a9];return _0xa88cf7;};'use strict';var util=require('util');var _=require(_0xe500('0x0'));var moment=require(_0xe500('0x1'));function getSeconds(_0x426a2f,_0x2b47d1){var _0x22d0ae=moment(_0x426a2f)[_0xe500('0x2')](0x0);var _0x9d7795=moment(_0x2b47d1)[_0xe500('0x2')](0x0);return _0x22d0ae[_0xe500('0x3')](_0x9d7795,'seconds');}function AgentComplete(_0x30ad2b,_0x14fe0a){this[_0xe500('0x4')]=0x4;this['statedesc']=_0xe500('0x5');this[_0xe500('0x6')]=_0x30ad2b['scheduledat'];this[_0xe500('0x7')]=_0x30ad2b['type'];this[_0xe500('0x8')]=_0x30ad2b['type']===_0xe500('0x9')?_0xe500('0xa'):_0x30ad2b['type'];this[_0xe500('0xb')]=_0x30ad2b['countbusyretry'];this['countcongestionretry']=_0x30ad2b['countcongestionretry'];this[_0xe500('0xc')]=_0x30ad2b[_0xe500('0xc')];this[_0xe500('0xd')]=_0x30ad2b[_0xe500('0xb')]+_0x30ad2b[_0xe500('0xe')]+_0x30ad2b[_0xe500('0xc')]+_0x30ad2b['countnosuchnumberretry']+_0x30ad2b[_0xe500('0xf')]+_0x30ad2b[_0xe500('0x10')]+_0x30ad2b[_0xe500('0x11')]+_0x30ad2b[_0xe500('0x12')];this[_0xe500('0x13')]=_0x30ad2b[_0xe500('0x13')];this[_0xe500('0xf')]=_0x30ad2b[_0xe500('0xf')];this['countabandonedretry']=_0x30ad2b[_0xe500('0x10')];this[_0xe500('0x11')]=_0x30ad2b[_0xe500('0x11')];this[_0xe500('0x12')]=_0x30ad2b[_0xe500('0x12')];this[_0xe500('0x14')]=_0x14fe0a[_0xe500('0x14')];this[_0xe500('0x15')]=_0x30ad2b[_0xe500('0x16')];this[_0xe500('0x17')]=_0x30ad2b[_0xe500('0x18')];this[_0xe500('0x19')]=_0x30ad2b['starttime'];this[_0xe500('0x1a')]=_0x30ad2b[_0xe500('0x1a')];this[_0xe500('0x1b')]=_0x30ad2b[_0xe500('0x1b')];this[_0xe500('0x1c')]=moment()[_0xe500('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x30ad2b[_0xe500('0x1a')],_0x30ad2b[_0xe500('0x19')]);this[_0xe500('0x1e')]=getSeconds(_0x30ad2b['answertime'],_0x30ad2b[_0xe500('0x1a')]);this[_0xe500('0x1f')]=getSeconds(this[_0xe500('0x1c')],_0x30ad2b['answertime']);this[_0xe500('0xa')]=_0x14fe0a[_0xe500('0xa')];this[_0xe500('0x20')]=_0x14fe0a[_0xe500('0x20')];this['reason']=_0x14fe0a[_0xe500('0x21')];this['callback']=_0x30ad2b['callback'];this['callbackuniqueid']=_0x30ad2b[_0xe500('0x22')];this[_0xe500('0x23')]=_0x30ad2b[_0xe500('0x23')];this[_0xe500('0x24')]=_0x30ad2b[_0xe500('0x24')];this[_0xe500('0x25')]=_0x30ad2b[_0xe500('0x25')];this[_0xe500('0x26')]=_0x30ad2b[_0xe500('0x26')];this['UserId']=_0x30ad2b['UserId'];this[_0xe500('0x27')]=_0x30ad2b[_0xe500('0x27')];this['CampaignId']=_0x30ad2b[_0xe500('0x28')];this[_0xe500('0x29')]=_0x30ad2b['originatecalleridnum']||'';this[_0xe500('0x2a')]=_0x30ad2b['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
index a39271d..b74324b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202c=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','ContactId','ListId'];(function(_0x3accf9,_0x1f09eb){var _0x2819e6=function(_0x596af7){while(--_0x596af7){_0x3accf9['push'](_0x3accf9['shift']());}};_0x2819e6(++_0x1f09eb);}(_0x202c,0x178));var _0xc202=function(_0x127775,_0x482d6b){_0x127775=_0x127775-0x0;var _0x1429cc=_0x202c[_0x127775];return _0x1429cc;};'use strict';var util=require(_0xc202('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x1cf3fd,_0x1ab6a1){var _0x27b3b2=moment(_0x1cf3fd)['milliseconds'](0x0);var _0x215161=moment(_0x1ab6a1)[_0xc202('0x1')](0x0);return _0x27b3b2[_0xc202('0x2')](_0x215161,_0xc202('0x3'));}function Final(_0x4b4368){this[_0xc202('0x4')]=_0x4b4368[_0xc202('0x4')];this['scheduledat']=_0x4b4368[_0xc202('0x5')];this['type']=_0x4b4368[_0xc202('0x6')];this[_0xc202('0x7')]=_0x4b4368[_0xc202('0x6')]===_0xc202('0x8')?_0xc202('0x9'):_0x4b4368[_0xc202('0x6')];this[_0xc202('0xa')]=_0x4b4368[_0xc202('0xa')];this[_0xc202('0xb')]=_0x4b4368[_0xc202('0xb')];this[_0xc202('0xc')]=_0x4b4368[_0xc202('0xc')];this[_0xc202('0xd')]=_0x4b4368['countbusyretry']+_0x4b4368[_0xc202('0xb')]+_0x4b4368[_0xc202('0xc')]+_0x4b4368[_0xc202('0xe')]+_0x4b4368[_0xc202('0xf')]+_0x4b4368[_0xc202('0x10')]+_0x4b4368[_0xc202('0x11')]+_0x4b4368[_0xc202('0x12')];this['countnosuchnumberretry']=_0x4b4368[_0xc202('0xe')];this[_0xc202('0xf')]=_0x4b4368['countdropretry'];this['countabandonedretry']=_0x4b4368['countabandonedretry'];this[_0xc202('0x11')]=_0x4b4368['countmachineretry'];this[_0xc202('0x12')]=_0x4b4368['countagentrejectretry'];this[_0xc202('0x9')]=_0x4b4368[_0xc202('0x9')];this[_0xc202('0x13')]=_0x4b4368[_0xc202('0x13')];this[_0xc202('0x14')]=_0x4b4368[_0xc202('0x14')];this[_0xc202('0x15')]=_0x4b4368['starttime'];this[_0xc202('0x16')]=_0x4b4368[_0xc202('0x16')];this[_0xc202('0x17')]=_0x4b4368['responsetime'];this['ringtime']=_0x4b4368[_0xc202('0x18')]||0x0;this[_0xc202('0x19')]=_0x4b4368[_0xc202('0x19')]||0x0;this[_0xc202('0x1a')]=_0x4b4368[_0xc202('0x1a')]||0x0;this['callback']=_0x4b4368['callback'];this[_0xc202('0x1b')]=_0x4b4368['callbackuniqueid'];this[_0xc202('0x1c')]=_0x4b4368[_0xc202('0x1c')];this['recallme']=_0x4b4368['recallme'];this[_0xc202('0x1d')]=_0x4b4368['ContactId'];this[_0xc202('0x1e')]=_0x4b4368[_0xc202('0x1e')];this[_0xc202('0x1f')]=_0x4b4368[_0xc202('0x1f')];this[_0xc202('0x20')]=_0x4b4368['VoiceQueueId'];this['CampaignId']=_0x4b4368[_0xc202('0x21')];this[_0xc202('0x22')]=_0x4b4368[_0xc202('0x22')]||'';this['originatecalleridname']=_0x4b4368[_0xc202('0x23')]||'';}module[_0xc202('0x24')]=Final;
\ No newline at end of file
+var _0xeec6=['countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x337a13,_0x39554e){var _0x21fbd8=function(_0x30e5cf){while(--_0x30e5cf){_0x337a13['push'](_0x337a13['shift']());}};_0x21fbd8(++_0x39554e);}(_0xeec6,0x1c2));var _0x6eec=function(_0x1d3019,_0x8dbbd5){_0x1d3019=_0x1d3019-0x0;var _0x36458e=_0xeec6[_0x1d3019];return _0x36458e;};'use strict';var util=require(_0x6eec('0x0'));var _=require(_0x6eec('0x1'));var moment=require(_0x6eec('0x2'));function getSeconds(_0x33cc53,_0x535568){var _0x471d43=moment(_0x33cc53)[_0x6eec('0x3')](0x0);var _0x1699ce=moment(_0x535568)[_0x6eec('0x3')](0x0);return _0x471d43[_0x6eec('0x4')](_0x1699ce,_0x6eec('0x5'));}function Final(_0x4fedce){this[_0x6eec('0x6')]=_0x4fedce[_0x6eec('0x6')];this['scheduledat']=_0x4fedce[_0x6eec('0x7')];this[_0x6eec('0x8')]=_0x4fedce[_0x6eec('0x8')];this[_0x6eec('0x9')]=_0x4fedce['type']===_0x6eec('0xa')?_0x6eec('0xb'):_0x4fedce[_0x6eec('0x8')];this['countbusyretry']=_0x4fedce['countbusyretry'];this['countcongestionretry']=_0x4fedce[_0x6eec('0xc')];this[_0x6eec('0xd')]=_0x4fedce['countnoanswerretry'];this['countglobal']=_0x4fedce[_0x6eec('0xe')]+_0x4fedce['countcongestionretry']+_0x4fedce[_0x6eec('0xd')]+_0x4fedce[_0x6eec('0xf')]+_0x4fedce[_0x6eec('0x10')]+_0x4fedce[_0x6eec('0x11')]+_0x4fedce[_0x6eec('0x12')]+_0x4fedce['countagentrejectretry'];this[_0x6eec('0xf')]=_0x4fedce[_0x6eec('0xf')];this[_0x6eec('0x10')]=_0x4fedce[_0x6eec('0x10')];this[_0x6eec('0x11')]=_0x4fedce[_0x6eec('0x11')];this[_0x6eec('0x12')]=_0x4fedce[_0x6eec('0x12')];this[_0x6eec('0x13')]=_0x4fedce[_0x6eec('0x13')];this['queue']=_0x4fedce[_0x6eec('0xb')];this['calleridname']=_0x4fedce[_0x6eec('0x14')];this[_0x6eec('0x15')]=_0x4fedce['calleridnum'];this[_0x6eec('0x16')]=_0x4fedce[_0x6eec('0x16')];this[_0x6eec('0x17')]=_0x4fedce['responsetime'];this[_0x6eec('0x18')]=_0x4fedce[_0x6eec('0x17')];this[_0x6eec('0x19')]=_0x4fedce[_0x6eec('0x19')]||0x0;this[_0x6eec('0x1a')]=_0x4fedce[_0x6eec('0x1a')]||0x0;this['talktime']=_0x4fedce[_0x6eec('0x1b')]||0x0;this[_0x6eec('0x1c')]=_0x4fedce[_0x6eec('0x1c')];this[_0x6eec('0x1d')]=_0x4fedce[_0x6eec('0x1d')];this[_0x6eec('0x1e')]=_0x4fedce['callbackat'];this[_0x6eec('0x1f')]=_0x4fedce[_0x6eec('0x1f')];this[_0x6eec('0x20')]=_0x4fedce[_0x6eec('0x20')];this[_0x6eec('0x21')]=_0x4fedce[_0x6eec('0x21')];this['UserId']=_0x4fedce[_0x6eec('0x22')];this[_0x6eec('0x23')]=_0x4fedce[_0x6eec('0x23')];this[_0x6eec('0x24')]=_0x4fedce[_0x6eec('0x24')];this[_0x6eec('0x25')]=_0x4fedce[_0x6eec('0x25')]||'';this[_0x6eec('0x26')]=_0x4fedce[_0x6eec('0x26')]||'';}module['exports']=Final;
\ No newline at end of file
index bf6c544..f5aacc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd286=['responsetime','endtime','format','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','exports','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime'];(function(_0x34f965,_0x35e92f){var _0x3d2c9f=function(_0x268e41){while(--_0x268e41){_0x34f965['push'](_0x34f965['shift']());}};_0x3d2c9f(++_0x35e92f);}(_0xd286,0x6d));var _0x6d28=function(_0x1a93a5,_0x13f256){_0x1a93a5=_0x1a93a5-0x0;var _0x4893a2=_0xd286[_0x1a93a5];return _0x4893a2;};'use strict';var util=require('util');var _=require(_0x6d28('0x0'));var moment=require(_0x6d28('0x1'));function getSeconds(_0x6f7fb1,_0x1ec6e1){var _0x51aef1=moment(_0x6f7fb1)[_0x6d28('0x2')](0x0);var _0xd97188=moment(_0x1ec6e1)[_0x6d28('0x2')](0x0);return _0x51aef1[_0x6d28('0x3')](_0xd97188,_0x6d28('0x4'));}function Hangup(_0x42ee48,_0x29662e){this[_0x6d28('0x5')]=0x4;this[_0x6d28('0x6')]=_0x6d28('0x7');this['scheduledat']=_0x42ee48['scheduledat'];this[_0x6d28('0x8')]=_0x42ee48[_0x6d28('0x8')];this[_0x6d28('0x9')]=_0x42ee48['type']===_0x6d28('0xa')?_0x6d28('0xb'):_0x42ee48['type'];this[_0x6d28('0xc')]=_0x42ee48['countbusyretry'];this['countcongestionretry']=_0x42ee48[_0x6d28('0xd')];this[_0x6d28('0xe')]=_0x42ee48[_0x6d28('0xe')];this[_0x6d28('0xf')]=_0x42ee48[_0x6d28('0xc')]+_0x42ee48[_0x6d28('0xd')]+_0x42ee48['countnoanswerretry']+_0x42ee48[_0x6d28('0x10')]+_0x42ee48[_0x6d28('0x11')]+_0x42ee48[_0x6d28('0x12')]+_0x42ee48[_0x6d28('0x13')]+_0x42ee48[_0x6d28('0x14')];this[_0x6d28('0x10')]=_0x42ee48[_0x6d28('0x10')];this[_0x6d28('0x11')]=_0x42ee48[_0x6d28('0x11')];this[_0x6d28('0x12')]=_0x42ee48['countabandonedretry'];this[_0x6d28('0x13')]=_0x42ee48[_0x6d28('0x13')];this[_0x6d28('0x14')]=_0x42ee48[_0x6d28('0x14')];this[_0x6d28('0x15')]=_0x29662e['uniqueid'];this[_0x6d28('0x16')]=_0x42ee48['name'];this[_0x6d28('0x17')]=_0x42ee48[_0x6d28('0x18')];this[_0x6d28('0x19')]=_0x42ee48[_0x6d28('0x19')];this[_0x6d28('0x1a')]=_0x42ee48[_0x6d28('0x1a')];this[_0x6d28('0x1b')]=moment()[_0x6d28('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x6d28('0x1d')]=getSeconds(_0x42ee48[_0x6d28('0x1a')],_0x42ee48[_0x6d28('0x19')]);this[_0x6d28('0x1e')]=0x0;this[_0x6d28('0x1f')]=getSeconds(this[_0x6d28('0x1b')],_0x42ee48['responsetime']);this[_0x6d28('0xb')]=_0x42ee48[_0x6d28('0xb')];this[_0x6d28('0x20')]=_0x6d28('0x21');this[_0x6d28('0x22')]=_0x29662e[_0x6d28('0x23')];this[_0x6d28('0x24')]=_0x42ee48['callback'];this[_0x6d28('0x25')]=_0x42ee48['callbackuniqueid'];this[_0x6d28('0x26')]=_0x42ee48[_0x6d28('0x26')];this[_0x6d28('0x27')]=_0x42ee48[_0x6d28('0x27')];this[_0x6d28('0x28')]=_0x42ee48[_0x6d28('0x28')];this[_0x6d28('0x29')]=_0x42ee48['ListId'];this['UserId']=_0x42ee48[_0x6d28('0x2a')];this[_0x6d28('0x2b')]=_0x42ee48[_0x6d28('0x2b')];this['CampaignId']=_0x42ee48['CampaignId'];}module[_0x6d28('0x2c')]=Hangup;
\ No newline at end of file
+var _0xf774=['countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','format','talktime','IVR','reason','cause-txt','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','milliseconds','diff','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x2af03b,_0x295415){var _0x5a5f55=function(_0x8239fd){while(--_0x8239fd){_0x2af03b['push'](_0x2af03b['shift']());}};_0x5a5f55(++_0x295415);}(_0xf774,0xf9));var _0x4f77=function(_0x242bac,_0x3ced94){_0x242bac=_0x242bac-0x0;var _0x7f33d0=_0xf774[_0x242bac];return _0x7f33d0;};'use strict';var util=require(_0x4f77('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0xac36de,_0x48bd96){var _0x1c67a2=moment(_0xac36de)['milliseconds'](0x0);var _0x199d48=moment(_0x48bd96)[_0x4f77('0x1')](0x0);return _0x1c67a2[_0x4f77('0x2')](_0x199d48,'seconds');}function Hangup(_0x43918d,_0x7b314d){this[_0x4f77('0x3')]=0x4;this[_0x4f77('0x4')]=_0x4f77('0x5');this[_0x4f77('0x6')]=_0x43918d[_0x4f77('0x6')];this[_0x4f77('0x7')]=_0x43918d[_0x4f77('0x7')];this[_0x4f77('0x8')]=_0x43918d[_0x4f77('0x7')]===_0x4f77('0x9')?'queue':_0x43918d[_0x4f77('0x7')];this[_0x4f77('0xa')]=_0x43918d[_0x4f77('0xa')];this[_0x4f77('0xb')]=_0x43918d[_0x4f77('0xb')];this[_0x4f77('0xc')]=_0x43918d[_0x4f77('0xc')];this[_0x4f77('0xd')]=_0x43918d[_0x4f77('0xa')]+_0x43918d[_0x4f77('0xb')]+_0x43918d['countnoanswerretry']+_0x43918d[_0x4f77('0xe')]+_0x43918d[_0x4f77('0xf')]+_0x43918d[_0x4f77('0x10')]+_0x43918d[_0x4f77('0x11')]+_0x43918d[_0x4f77('0x12')];this[_0x4f77('0xe')]=_0x43918d[_0x4f77('0xe')];this[_0x4f77('0xf')]=_0x43918d[_0x4f77('0xf')];this['countabandonedretry']=_0x43918d[_0x4f77('0x10')];this[_0x4f77('0x11')]=_0x43918d[_0x4f77('0x11')];this[_0x4f77('0x12')]=_0x43918d[_0x4f77('0x12')];this['uniqueid']=_0x7b314d[_0x4f77('0x13')];this[_0x4f77('0x14')]=_0x43918d[_0x4f77('0x15')];this['calleridnum']=_0x43918d[_0x4f77('0x16')];this[_0x4f77('0x17')]=_0x43918d[_0x4f77('0x17')];this[_0x4f77('0x18')]=_0x43918d['responsetime'];this['endtime']=moment()[_0x4f77('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x43918d[_0x4f77('0x18')],_0x43918d[_0x4f77('0x17')]);this['holdtime']=0x0;this[_0x4f77('0x1a')]=getSeconds(this['endtime'],_0x43918d[_0x4f77('0x18')]);this['queue']=_0x43918d['queue'];this['membername']=_0x4f77('0x1b');this[_0x4f77('0x1c')]=_0x7b314d[_0x4f77('0x1d')];this[_0x4f77('0x1e')]=_0x43918d[_0x4f77('0x1e')];this[_0x4f77('0x1f')]=_0x43918d[_0x4f77('0x1f')];this['callbackat']=_0x43918d['callbackat'];this['recallme']=_0x43918d[_0x4f77('0x20')];this[_0x4f77('0x21')]=_0x43918d[_0x4f77('0x21')];this[_0x4f77('0x22')]=_0x43918d[_0x4f77('0x22')];this[_0x4f77('0x23')]=_0x43918d[_0x4f77('0x23')];this[_0x4f77('0x24')]=_0x43918d[_0x4f77('0x24')];this['CampaignId']=_0x43918d[_0x4f77('0x25')];}module['exports']=Hangup;
\ No newline at end of file
index 8b08aca..0891a6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f8b=['exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x789657,_0x401f21){var _0xc4e337=function(_0x1ecfe9){while(--_0x1ecfe9){_0x789657['push'](_0x789657['shift']());}};_0xc4e337(++_0x401f21);}(_0x1f8b,0x1e1));var _0xb1f8=function(_0x15c33e,_0x4882ac){_0x15c33e=_0x15c33e-0x0;var _0x352b6c=_0x1f8b[_0x15c33e];return _0x352b6c;};'use strict';var util=require(_0xb1f8('0x0'));var _=require('lodash');var moment=require(_0xb1f8('0x1'));function getSeconds(_0x436986,_0x5555fb){var _0x1bf119=moment(_0x436986)[_0xb1f8('0x2')](0x0);var _0x7ed33=moment(_0x5555fb)[_0xb1f8('0x2')](0x0);return _0x1bf119[_0xb1f8('0x3')](_0x7ed33,_0xb1f8('0x4'));}function History(_0x50ae3f){this[_0xb1f8('0x5')]=_0x50ae3f['uniqueid'];this[_0xb1f8('0x6')]=_0x50ae3f[_0xb1f8('0x6')]||undefined;this[_0xb1f8('0x7')]=_0x50ae3f[_0xb1f8('0x7')];this['campaigntype']=_0x50ae3f['type']===_0xb1f8('0x8')?_0xb1f8('0x9'):_0x50ae3f[_0xb1f8('0x7')];this[_0xb1f8('0xa')]=_0x50ae3f[_0xb1f8('0xa')];this[_0xb1f8('0xb')]=_0x50ae3f[_0xb1f8('0xb')];this[_0xb1f8('0xc')]=_0x50ae3f[_0xb1f8('0xc')];this[_0xb1f8('0xd')]=_0x50ae3f[_0xb1f8('0xa')]+_0x50ae3f[_0xb1f8('0xb')]+_0x50ae3f[_0xb1f8('0xc')]+_0x50ae3f[_0xb1f8('0xe')]+_0x50ae3f[_0xb1f8('0xf')]+_0x50ae3f['countabandonedretry']+_0x50ae3f[_0xb1f8('0x10')]+_0x50ae3f[_0xb1f8('0x11')];this[_0xb1f8('0xe')]=_0x50ae3f[_0xb1f8('0xe')];this[_0xb1f8('0xf')]=_0x50ae3f[_0xb1f8('0xf')];this[_0xb1f8('0x12')]=_0x50ae3f[_0xb1f8('0x12')];this[_0xb1f8('0x10')]=_0x50ae3f[_0xb1f8('0x10')];this[_0xb1f8('0x11')]=_0x50ae3f['countagentrejectretry'];this[_0xb1f8('0x9')]=_0x50ae3f[_0xb1f8('0x9')];this[_0xb1f8('0x13')]=_0x50ae3f[_0xb1f8('0x14')];this[_0xb1f8('0x15')]=_0x50ae3f[_0xb1f8('0x16')];this['starttime']=_0x50ae3f[_0xb1f8('0x17')];this[_0xb1f8('0x18')]=_0x50ae3f['responsetime'];this[_0xb1f8('0x19')]=_0x50ae3f[_0xb1f8('0x18')];this['ringtime']=getSeconds(_0x50ae3f[_0xb1f8('0x18')],_0x50ae3f['starttime']);this[_0xb1f8('0x1a')]=0x0;this[_0xb1f8('0x1b')]=0x0;this[_0xb1f8('0x1c')]=_0x50ae3f[_0xb1f8('0x1c')];this[_0xb1f8('0x1d')]=_0x50ae3f[_0xb1f8('0x1d')];this[_0xb1f8('0x1e')]=_0x50ae3f[_0xb1f8('0x1e')];this[_0xb1f8('0x1f')]=_0x50ae3f['recallme'];this[_0xb1f8('0x20')]=_0x50ae3f[_0xb1f8('0x20')];this[_0xb1f8('0x21')]=_0x50ae3f['ListId'];this[_0xb1f8('0x22')]=_0x50ae3f['UserId'];this[_0xb1f8('0x23')]=_0x50ae3f[_0xb1f8('0x23')];this[_0xb1f8('0x24')]=_0x50ae3f['CampaignId'];this[_0xb1f8('0x25')]=_0x50ae3f[_0xb1f8('0x25')]||'';this[_0xb1f8('0x26')]=_0x50ae3f[_0xb1f8('0x26')]||'';}module[_0xb1f8('0x27')]=History;
\ No newline at end of file
+var _0x1a2d=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','calleridname','name','number','starttime','responsetime','endtime','ringtime'];(function(_0x4f7738,_0x379005){var _0x414557=function(_0x9949cb){while(--_0x9949cb){_0x4f7738['push'](_0x4f7738['shift']());}};_0x414557(++_0x379005);}(_0x1a2d,0x14d));var _0xd1a2=function(_0x1f921c,_0x131f6f){_0x1f921c=_0x1f921c-0x0;var _0x31ff0d=_0x1a2d[_0x1f921c];return _0x31ff0d;};'use strict';var util=require(_0xd1a2('0x0'));var _=require(_0xd1a2('0x1'));var moment=require('moment');function getSeconds(_0x30f982,_0x56ff7e){var _0x45a1ea=moment(_0x30f982)[_0xd1a2('0x2')](0x0);var _0x4ccb9d=moment(_0x56ff7e)[_0xd1a2('0x2')](0x0);return _0x45a1ea[_0xd1a2('0x3')](_0x4ccb9d,_0xd1a2('0x4'));}function History(_0x4b938f){this[_0xd1a2('0x5')]=_0x4b938f['uniqueid'];this[_0xd1a2('0x6')]=_0x4b938f['scheduledat']||undefined;this[_0xd1a2('0x7')]=_0x4b938f[_0xd1a2('0x7')];this[_0xd1a2('0x8')]=_0x4b938f[_0xd1a2('0x7')]===_0xd1a2('0x9')?_0xd1a2('0xa'):_0x4b938f[_0xd1a2('0x7')];this[_0xd1a2('0xb')]=_0x4b938f[_0xd1a2('0xb')];this[_0xd1a2('0xc')]=_0x4b938f[_0xd1a2('0xc')];this[_0xd1a2('0xd')]=_0x4b938f[_0xd1a2('0xd')];this[_0xd1a2('0xe')]=_0x4b938f['countbusyretry']+_0x4b938f[_0xd1a2('0xc')]+_0x4b938f[_0xd1a2('0xd')]+_0x4b938f[_0xd1a2('0xf')]+_0x4b938f[_0xd1a2('0x10')]+_0x4b938f['countabandonedretry']+_0x4b938f['countmachineretry']+_0x4b938f[_0xd1a2('0x11')];this[_0xd1a2('0xf')]=_0x4b938f[_0xd1a2('0xf')];this[_0xd1a2('0x10')]=_0x4b938f[_0xd1a2('0x10')];this['countabandonedretry']=_0x4b938f[_0xd1a2('0x12')];this[_0xd1a2('0x13')]=_0x4b938f[_0xd1a2('0x13')];this['countagentrejectretry']=_0x4b938f[_0xd1a2('0x11')];this[_0xd1a2('0xa')]=_0x4b938f[_0xd1a2('0xa')];this[_0xd1a2('0x14')]=_0x4b938f[_0xd1a2('0x15')];this['calleridnum']=_0x4b938f[_0xd1a2('0x16')];this[_0xd1a2('0x17')]=_0x4b938f[_0xd1a2('0x17')];this['responsetime']=_0x4b938f[_0xd1a2('0x18')];this[_0xd1a2('0x19')]=_0x4b938f[_0xd1a2('0x18')];this[_0xd1a2('0x1a')]=getSeconds(_0x4b938f['responsetime'],_0x4b938f[_0xd1a2('0x17')]);this[_0xd1a2('0x1b')]=0x0;this[_0xd1a2('0x1c')]=0x0;this[_0xd1a2('0x1d')]=_0x4b938f[_0xd1a2('0x1d')];this[_0xd1a2('0x1e')]=_0x4b938f[_0xd1a2('0x1e')];this[_0xd1a2('0x1f')]=_0x4b938f[_0xd1a2('0x1f')];this[_0xd1a2('0x20')]=_0x4b938f[_0xd1a2('0x20')];this[_0xd1a2('0x21')]=_0x4b938f['ContactId'];this[_0xd1a2('0x22')]=_0x4b938f['ListId'];this['UserId']=_0x4b938f[_0xd1a2('0x23')];this['VoiceQueueId']=_0x4b938f[_0xd1a2('0x24')];this[_0xd1a2('0x25')]=_0x4b938f[_0xd1a2('0x25')];this[_0xd1a2('0x26')]=_0x4b938f['originatecalleridnum']||'';this[_0xd1a2('0x27')]=_0x4b938f['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index 97e3a0e..0e56032 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ced=['swapAdditionalPhones','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isTrunkReachable','active','reachable','SIP/%s','status','unmonitored','createHistory','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','countmachineretry','countglobal','amd','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','state','[syncHangupInAMDIvr]','MACHINE','Machine','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','stateGlobal','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AGI','dialQueueProject','cause-txt','Unknow','syncAgentComplete','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','TIMEOUT','dialDropRetryFrequency','voiceQueue','dialDropMaxRetry','additional','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','dialAbandonedMaxRetry','queueCallerAbandonCreateState','[rescheduleContact][Abandoned]','endtime','[syncAgentComplete][createHistory][11]','actionid','locked','paused','stateinterface','rrmemory','queueBooked','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','preview','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','TrunkBackup','TRUNK_IS_NOT_REACHABLE','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','indexOf','Action','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','handlePower','power','predictive','Queue','checkPreviewRecallReminder','handlePreviewRecallNotifications','user:%s','launchHandleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','filter','online','map','Agent','user:dialPreviewRecallReminder','checkIsTrunkReachable','[syncCampaigns]','\x5cw{0,','pow','match','actionOriginate','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','substring','dialCutDigit','trim','from-sip','[originateError]:\x20%s','[originate][error]','Error','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','[getDataPredictive]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','RUNNING','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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]','Ts\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[busyFactor]','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','roundrobin','prototype','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','uniqueId','optionPredictive','startProgressive','queueBookedRR','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','syncQueueStatusComplete','loopCampaigns','getSettings','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','Intervals','INTERVAL_IS_NULL','isEmpty','stringify','milliseconds','diff','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:save','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','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','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','starttime','clearZombieChannels','[uniqueid]','actions','[actions]','isNil','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','then','[countReScheduled]\x20','checkIsBlackList','resolve','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x4ced,0x16c));var _0xd4ce=function(_0x52efaf,_0x1c85ec){_0x52efaf=_0x52efaf-0x0;var _0x54bb91=_0x4ced[_0x52efaf];return _0x54bb91;};'use strict';var util=require(_0xd4ce('0x0'));var _=require(_0xd4ce('0x1'));var uuid=require(_0xd4ce('0x2'));var moment=require(_0xd4ce('0x3'));var rr=require('rr');var md5=require('md5');var Redis=require(_0xd4ce('0x4'));var ut=require(_0xd4ce('0x5'));var config=require(_0xd4ce('0x6'));var logger=require(_0xd4ce('0x7'))(_0xd4ce('0x8'));var loggerBooked=require(_0xd4ce('0x7'))(_0xd4ce('0x9'));var loggerPredictive=require(_0xd4ce('0x7'))('predictive');var loggerPredictiveCalls=require(_0xd4ce('0x7'))(_0xd4ce('0xa'));var loggerSyncQueueSummary=require(_0xd4ce('0x7'))(_0xd4ce('0xb'));var ami=require(_0xd4ce('0xc'));config[_0xd4ce('0xd')]=_[_0xd4ce('0xe')](config[_0xd4ce('0xd')],{'host':_0xd4ce('0xf'),'port':0x18eb});var io=require(_0xd4ce('0x10'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xd4ce('0x11'));var cmHopperAdditionalPhone=require(_0xd4ce('0x12'));var cmHopperBlack=require(_0xd4ce('0x13'));var voiceQueueRt=require(_0xd4ce('0x14'));var RpcSetting=require('../rpc/setting');var Action=require(_0xd4ce('0x15'));var History=require(_0xd4ce('0x16'));var Final=require(_0xd4ce('0x17'));var AgentComplete=require(_0xd4ce('0x18'));var QueueCallerAbandon=require(_0xd4ce('0x19'));var Hangup=require(_0xd4ce('0x1a'));var ipAgi=process[_0xd4ce('0x1b')][_0xd4ce('0x1c')]||'127.0.0.1';var strategy={'rrmemory':'rrmemory','roundrobin':_0xd4ce('0x1d')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xd4ce('0x1e')][_0xd4ce('0x1f')]=function(_0x5f5080){this[_0xd4ce('0x20')]=this[_0xd4ce('0x20')]?this[_0xd4ce('0x20')][_0xd4ce('0x21')](_0x5f5080):_0x5f5080();};function Dialer(_0x2d76d1,_0x50ccb9){this[_0xd4ce('0x22')]=new Sequence();this['preview']=_0x50ccb9;this[_0xd4ce('0x23')]=_0x2d76d1[_0xd4ce('0x23')];this['campaigns']=_0x2d76d1[_0xd4ce('0x24')];this[_0xd4ce('0x25')]=_0x2d76d1[_0xd4ce('0x25')];this['trunks']=_0x2d76d1[_0xd4ce('0x26')];this['maxNumberOriginate']=config[_0xd4ce('0x27')]||0x2;this['channels']={};this['actions']={};this[_0xd4ce('0x28')]={};this[_0xd4ce('0x29')]={};this[_0xd4ce('0x2a')]={};this['startPredictive']={};this[_0xd4ce('0x2b')]={};this['ivrOriginated']={};this['queueBooked']={};this[_0xd4ce('0x2c')]={};ami['on']('agentconnect',this[_0xd4ce('0x2d')]['bind'](this));ami['on'](_0xd4ce('0x2e'),this[_0xd4ce('0x2f')][_0xd4ce('0x30')](this));ami['on']('originateresponse',this[_0xd4ce('0x31')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x32'),this['syncAgentComplete']['bind'](this));ami['on'](_0xd4ce('0x33'),this[_0xd4ce('0xb')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x34'),this[_0xd4ce('0x35')]['bind'](this));ami['on'](_0xd4ce('0x36'),this[_0xd4ce('0x37')]['bind'](this));ami['on'](_0xd4ce('0x38'),this[_0xd4ce('0x39')][_0xd4ce('0x30')](this));ami['on'](_0xd4ce('0x3a'),this[_0xd4ce('0x3b')][_0xd4ce('0x30')](this));ami['on']('queuemember',this[_0xd4ce('0x3c')][_0xd4ce('0x30')](this));ami['on']('queuestatuscomplete',this[_0xd4ce('0x3d')][_0xd4ce('0x30')](this));this[_0xd4ce('0x3e')]();this['loopClearZombieChannels']();RpcSetting[_0xd4ce('0x3f')]()['then'](function(_0xfda307){previewRecallmeReminderInterval=_0xfda307[_0xd4ce('0x40')];});}function isNotNull(_0x56afce){return _0x56afce!==null&&!_[_0xd4ce('0x41')](_0x56afce);}function checkIsLoggedIn(_0x2cd8af,_0x4a415a){return function(){if(_0x4a415a<=0x0){_0x2cd8af[_0xd4ce('0x42')]=_0xd4ce('0x43');throw _0x2cd8af[_0xd4ce('0x44')]+_0xd4ce('0x45');}};}function isActive(_0x136c9e){return _0x136c9e;}function checkIsActive(_0x231efa,_0x7845a1){return function(){if(!isActive(_0x7845a1)){_0x231efa[_0xd4ce('0x42')]=_0xd4ce('0x46');throw _0x231efa[_0xd4ce('0x44')]+_0xd4ce('0x47');}};}function checkInterval(_0xa14eca){return function(){if(!isNotNull(_0xa14eca['Interval'])){_0xa14eca[_0xd4ce('0x42')]='INTERVAL_IS_NULL';throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0xa14eca[_0xd4ce('0x48')][_0xd4ce('0x49')])){_0xa14eca[_0xd4ce('0x42')]=_0xd4ce('0x4a');throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0xd4ce('0x4b')](_0xa14eca['Interval'][_0xd4ce('0x49')]))){_0xa14eca['message']=_0xd4ce('0x4a');throw _0xa14eca[_0xd4ce('0x44')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x1aa2e2,_0x2e77d8,_0x4a4988){return{'action':_0x1aa2e2,'response':_0x2e77d8,'message':_0x4a4988,'stack':_0x4a4988};}function myreject(_0x1f49f7){return function(_0x266c38){return _0x1f49f7(msgResponse('[ifTime][Action]','Error',JSON[_0xd4ce('0x4c')](_0x266c38)));};}function getSeconds(_0x488a60,_0x2d12b5){var _0x454762=moment(_0x488a60)[_0xd4ce('0x4d')](0x0);var _0x5aa950=moment(_0x2d12b5)['milliseconds'](0x0);return _0x454762[_0xd4ce('0x4e')](_0x5aa950,'seconds');}function emit(_0x4816db,_0x1f9597,_0x4e7706){io['to'](_0x4816db)[_0xd4ce('0x4f')](_0x1f9597,_0x4e7706);}function emitVoiceQueueSummary(_0x412b5a){if(_0x412b5a[_0xd4ce('0x50')]===_0xd4ce('0x51')){var _0x1d86e2={'id':_0x412b5a['id'],'name':_0x412b5a[_0xd4ce('0x44')],'strategy':_0x412b5a[_0xd4ce('0x52')],'answered':_0x412b5a[_0xd4ce('0x53')],'available':_0x412b5a[_0xd4ce('0x54')],'loggedIn':_0x412b5a[_0xd4ce('0x55')],'pTalking':_0x412b5a[_0xd4ce('0x56')],'sumBillable':_0x412b5a['sumBillable'],'sumDuration':_0x412b5a['sumDuration'],'sumHoldTime':_0x412b5a[_0xd4ce('0x57')]||0x0,'talking':_0x412b5a[_0xd4ce('0x58')],'total':_0x412b5a[_0xd4ce('0x59')],'type':_0x412b5a[_0xd4ce('0x50')],'unmanaged':_0x412b5a['unmanaged'],'abandoned':_0x412b5a[_0xd4ce('0x5a')],'waiting':_0x412b5a[_0xd4ce('0x5b')],'loggedInDb':_0x412b5a[_0xd4ce('0x5c')],'dialActive':_0x412b5a[_0xd4ce('0x5d')],'dialMethod':_0x412b5a[_0xd4ce('0x5e')],'dialOriginateCallerIdName':_0x412b5a[_0xd4ce('0x5f')],'dialOriginateCallerIdNumber':_0x412b5a[_0xd4ce('0x60')],'dialOriginateTimeout':_0x412b5a[_0xd4ce('0x61')],'dialPrefix':_0x412b5a[_0xd4ce('0x62')],'outboundAnswerAgiCallsDay':_0x412b5a[_0xd4ce('0x63')],'outboundAnswerCallsDay':_0x412b5a[_0xd4ce('0x64')],'outboundBlacklistCallsDay':_0x412b5a['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x412b5a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x412b5a[_0xd4ce('0x65')],'outboundDropCallsDayACS':_0x412b5a[_0xd4ce('0x66')],'outboundDropCallsDayCallersExit':_0x412b5a[_0xd4ce('0x67')],'outboundDropCallsDayTimeout':_0x412b5a[_0xd4ce('0x68')],'outboundNoAnswerCallsDay':_0x412b5a[_0xd4ce('0x69')],'outboundNoSuchCallsDay':_0x412b5a[_0xd4ce('0x6a')],'outboundOriginateFailureCallsDay':_0x412b5a[_0xd4ce('0x6b')],'outboundReCallsDay':_0x412b5a[_0xd4ce('0x6c')],'outboundRejectCallsDay':_0x412b5a[_0xd4ce('0x6d')],'outboundUnknownCallsDay':_0x412b5a[_0xd4ce('0x6e')],'predictiveIntervalAnsweredCalls':_0x412b5a[_0xd4ce('0x6f')],'predictiveIntervalAvgHoldtime':_0x412b5a[_0xd4ce('0x70')],'predictiveIntervalAvgTalktime':_0x412b5a[_0xd4ce('0x71')],'predictiveIntervalDroppedCallsCallersExit':_0x412b5a[_0xd4ce('0x72')],'predictiveIntervalDroppedCallsTimeout':_0x412b5a[_0xd4ce('0x73')],'predictiveIntervalErlangCalls':_0x412b5a[_0xd4ce('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x412b5a[_0xd4ce('0x75')],'predictiveIntervalHitRate':_0x412b5a['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x412b5a[_0xd4ce('0x76')],'predictiveIntervalPauses':_0x412b5a[_0xd4ce('0x77')],'predictiveIntervalAvailable':_0x412b5a[_0xd4ce('0x78')],'predictiveIntervalTotalCalls':_0x412b5a['predictiveIntervalTotalCalls'],'message':_0x412b5a[_0xd4ce('0x42')],'originated':_0x412b5a[_0xd4ce('0x79')],'erlangCalls':_0x412b5a[_0xd4ce('0x7a')],'erlangCallToSecond':_0x412b5a[_0xd4ce('0x7b')],'erlangAbandonmentRate':_0x412b5a[_0xd4ce('0x7c')],'erlangBusyFactor':_0x412b5a[_0xd4ce('0x7d')],'startPredictive':_0x412b5a[_0xd4ce('0x7e')],'startProgressive':_0x412b5a['startProgressive']};if(_0x412b5a[_0xd4ce('0x7f')]){_0x1d86e2[_0xd4ce('0x7f')]={'id':_0x412b5a[_0xd4ce('0x7f')]['id'],'name':_0x412b5a[_0xd4ce('0x7f')][_0xd4ce('0x44')],'active':_0x412b5a[_0xd4ce('0x7f')]['active'],'callerid':_0x412b5a[_0xd4ce('0x7f')][_0xd4ce('0x80')]};}if(_0x412b5a[_0xd4ce('0x48')]){_0x1d86e2[_0xd4ce('0x48')]={'id':_0x412b5a[_0xd4ce('0x48')]['id'],'name':_0x412b5a[_0xd4ce('0x48')][_0xd4ce('0x44')]};}var _0x1ea5d5=md5(JSON['stringify'](_0x1d86e2));if(_0x412b5a[_0xd4ce('0x81')]!==_0x1ea5d5){_0x412b5a['md5']=_0x1ea5d5;emit(util[_0xd4ce('0x82')](_0xd4ce('0x83'),_0x1d86e2[_0xd4ce('0x44')]),_0xd4ce('0x84'),_0x1d86e2);}}}function emitCampaignSummary(_0xaef6c4){if(_0xaef6c4[_0xd4ce('0x50')]===_0xd4ce('0x85')){emit(util[_0xd4ce('0x82')]('campaign:ivr:%s',_0xaef6c4[_0xd4ce('0x44')]),_0xd4ce('0x86'),_0xaef6c4);}}function checkGetDataPredictive(_0x4a9424){if(isNotNull(_0x4a9424)&&!_[_0xd4ce('0x4b')](_0x4a9424)){loggerPredictive[_0xd4ce('0x87')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x88'),_0x4a9424[_0xd4ce('0x89')]);loggerPredictive[_0xd4ce('0x87')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4a9424['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8a'),_0x4a9424['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8b'),_0x4a9424['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8c'),_0x4a9424[_0xd4ce('0x70')]);loggerPredictive['info'](_0xd4ce('0x8d'),_0x4a9424['predictiveIntervalAvgTalktime']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));if(_0x4a9424['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0x4a9424['predictiveIntervalAvgTalktime'])&&_0x4a9424[_0xd4ce('0x71')]>0x0){return!![];}loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8f'));if(!_[_0xd4ce('0x41')](_0x4a9424[_0xd4ce('0x70')])&&_0x4a9424['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x90'));}else{loggerPredictive['info'](_0xd4ce('0x91'));}}else{loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x92'));}return![];}function mergeDataErlangB(_0x15f97f){return function(_0x44a55e){loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x93'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x94'),_0x44a55e[_0xd4ce('0x7a')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x95'),_0x44a55e[_0xd4ce('0x7b')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x96'),_0x44a55e[_0xd4ce('0x7c')]);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x97'),_0x44a55e[_0xd4ce('0x7d')]);loggerPredictive[_0xd4ce('0x87')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x44a55e['erlangAbandonmentRate']);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));_[_0xd4ce('0x98')](_0x15f97f,_0x44a55e);};}function getDiff(_0x4c13f5){var _0x4e82f1=moment()[_0xd4ce('0x4d')](0x0);var _0x182976=moment(_0x4c13f5)[_0xd4ce('0x4d')](0x0);return _0x4e82f1[_0xd4ce('0x4e')](_0x182976,_0xd4ce('0x99'));}function ifInterval(_0x1ae8f9,_0x5590a0){if(_['isUndefined'](_0x5590a0)){return![];}return getDiff(_0x5590a0)<_0x1ae8f9*0x3c;}function freeVariablesPredictive(_0x54e30d){if(isNotNull(_0x54e30d)){if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x2b')])){_0x54e30d[_0xd4ce('0x2b')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d[_0xd4ce('0x44')],_0xd4ce('0x9a'));}if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x7e')])){_0x54e30d[_0xd4ce('0x7e')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d['name'],_0xd4ce('0x9b'));}if(!_[_0xd4ce('0x41')](_0x54e30d[_0xd4ce('0x9c')])){clearInterval(_0x54e30d[_0xd4ce('0x9c')]);_0x54e30d[_0xd4ce('0x9c')]=undefined;loggerPredictive[_0xd4ce('0x87')](_0x54e30d[_0xd4ce('0x44')],_0xd4ce('0x9d'));}}}function erlangb(_0x35b121,_0x171699){if(_0x171699===0x0){return 0x0;}var _0x561e96=0x1;for(var _0x2ad555=0x1;_0x2ad555<=_0x171699;_0x2ad555+=0x1){_0x561e96=0x1+_0x561e96*_0x2ad555/_0x35b121;}return 0x1/_0x561e96;}function isVoiceQueueOutbound(_0x4a413d){return _0x4a413d===_0xd4ce('0x51');}function isNotPreview(_0x276369){return _0x276369!=='preview';}function isCampaignIvr(_0x9cc2f9){return _0x9cc2f9===_0xd4ce('0x85');}function getCallerId(_0x3c14dc,_0x140e05,_0x1e24a5){if(!_[_0xd4ce('0x41')](_0x1e24a5)&&typeof _0x1e24a5==='string'&&!_[_0xd4ce('0x4b')](_0x1e24a5)){if(!_['isUndefined'](_0x140e05)&&typeof _0x140e05===_0xd4ce('0x9e')&&!_['isEmpty'](_0x140e05)){return util[_0xd4ce('0x82')]('\x22%s\x22\x20<%s>',_0x140e05,_0x1e24a5);}return util[_0xd4ce('0x82')](_0xd4ce('0x9f'),_0x1e24a5,_0x1e24a5);}if(!_[_0xd4ce('0x41')](_0x3c14dc)&&typeof _0x3c14dc===_0xd4ce('0x9e')&&!_[_0xd4ce('0x4b')](_0x3c14dc)){return _0x3c14dc;}return _0xd4ce('0xa0');}function loggerCatchQueueSummary(_0x23b963,_0x3d08d7){return function(_0x34d175){freeVariablesPredictive(_0x3d08d7);emitVoiceQueueSummary(_0x3d08d7);emitCampaignSummary(_0x3d08d7);loggerSyncQueueSummary[_0xd4ce('0xa1')](_0x23b963,util[_0xd4ce('0xa2')](_0x34d175,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x13eb13,_0x9cbf4c){return function(_0x18ccee){loggerPredictive[_0xd4ce('0xa3')](_0x9cbf4c[_0xd4ce('0x44')],_0x13eb13);loggerPredictive[_0xd4ce('0xa3')](_0x18ccee[_0xd4ce('0xa4')]);freeVariablesPredictive(_0x9cbf4c);};}function loggerCatch(_0x154757){return function(_0x23e25a){logger['error'](_0x154757,util[_0xd4ce('0xa2')](_0x23e25a,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x52dc7d){return _0x52dc7d&&!_[_0xd4ce('0x41')](_0x52dc7d)&&_0x52dc7d[_0xd4ce('0xa5')]>0x0;}function decremetOriginate(_0x681629){if(!_['isUndefined'](_0x681629)&&_0x681629!==null){if(typeof _0x681629['originated']!==_0xd4ce('0xa6')){if(_0x681629['originated']>0x0){_0x681629[_0xd4ce('0x79')]-=0x1;}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xa7'));}}}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xa8'));}}function checkContactLowerLimitOriginate(_0x2bc817,_0x1ef3a4,_0x245172){if(_0x1ef3a4>_0x245172){for(var _0x2fcc0e=0x0;_0x2fcc0e<_0x1ef3a4-_0x245172;_0x2fcc0e+=0x1){decremetOriginate(_0x2bc817);}}}function loggerGetContactDialer(_0x55f80f,_0x4298cb,_0x4aac8e){return function(_0xe007c3){checkContactLowerLimitOriginate(_0x4298cb,_0x4aac8e,0x0);logger[_0xd4ce('0xa3')](_0x55f80f,util[_0xd4ce('0xa2')](_0xe007c3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xdd6fac){return function(_0x3604d9){if(isNotNull(_0x3604d9)&&isNotNull(_0x3604d9[0x0])){if(_0x3604d9[0x0][_0xd4ce('0xa9')]>0x0){_0xdd6fac['message']='RESCHEDULED_CONTACTS';logger[_0xd4ce('0x87')](_0xd4ce('0xaa')+_0xdd6fac['name'],_0x3604d9[0x0][_0xd4ce('0xa9')],_0xd4ce('0xab'));}else{_0xdd6fac['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0xd4ce('0x87')]('[getContactDialer2][Empty]'+_0xdd6fac[_0xd4ce('0x44')]);}}};}function notSendMessagesQueue(_0x2d3ff2){if(_0x2d3ff2[_0xd4ce('0xac')]){freeVariablesPredictive(_0x2d3ff2);if(_0x2d3ff2['originated']===0x0&&_0x2d3ff2[_0xd4ce('0x58')]===0x0&&_0x2d3ff2[_0xd4ce('0x5b')]===0x0&&(_0x2d3ff2[_0xd4ce('0x56')]||0x0)===0x0){_0x2d3ff2['sendMessageOneNotActive']=![];_0x2d3ff2['available']=0x0;_0x2d3ff2[_0xd4ce('0x42')]=_0xd4ce('0x46');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xad'),_0x2d3ff2[_0xd4ce('0x44')],_0xd4ce('0xae'));}else{_0x2d3ff2[_0xd4ce('0x42')]=_0xd4ce('0xaf');loggerSyncQueueSummary[_0xd4ce('0xa1')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2d3ff2[_0xd4ce('0x44')],'is\x20disactive');}emitVoiceQueueSummary(_0x2d3ff2);}}function notSendMessagesCampaign(_0x49bd34){if(_0x49bd34['sendMessageOneNotActive']){if(_0x49bd34[_0xd4ce('0x79')]===0x0){_0x49bd34[_0xd4ce('0xac')]=![];_0x49bd34[_0xd4ce('0x42')]=_0xd4ce('0x46');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xb0'),_0x49bd34[_0xd4ce('0x44')],'is\x20not\x20active');}else{_0x49bd34[_0xd4ce('0x42')]=_0xd4ce('0xaf');loggerSyncQueueSummary[_0xd4ce('0xa1')](_0xd4ce('0xb0'),_0x49bd34[_0xd4ce('0x44')],'is\x20disactive');}emitCampaignSummary(_0x49bd34);}}function createObjHistory(_0x33672b,_0x251fb6,_0x282ff8,_0x447d3b,_0x324dc){_0x33672b['message']=_0x282ff8;var _0x1067bf=new Action(_0x33672b,_0x251fb6);var _0x5f46bb=new History(_0x1067bf);_0x5f46bb['state']=_0x447d3b;_0x5f46bb[_0xd4ce('0xb1')]=_0x324dc;_0x5f46bb['endtime']=_0x1067bf[_0xd4ce('0xb2')];return _0x5f46bb;}Dialer[_0xd4ce('0x1e')]['loopClearZombieChannels']=function(){var _0x543dd0=this;setInterval(function(){_0x543dd0[_0xd4ce('0xb3')](_0x543dd0[_0xd4ce('0x29')],_0xd4ce('0xb4'));_0x543dd0[_0xd4ce('0xb3')](_0x543dd0[_0xd4ce('0xb5')],_0xd4ce('0xb6'));},0x32c8);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xb3')]=function(_0x4fec9a,_0x3179d8){var _0x363297=this;for(var _0x485677 in _0x4fec9a){if(typeof _0x4fec9a[_0x485677]!==_0xd4ce('0xa6')){this['sequence'][_0xd4ce('0x1f')](function(){if(!_[_0xd4ce('0xb7')](_0x4fec9a[_0x485677])){return ami['Action']({'action':'status','channel':_0x4fec9a[_0x485677][_0xd4ce('0xb8')]})[_0xd4ce('0xb9')](function(_0x8a1d88){if(_0x8a1d88[_0xd4ce('0x42')]===_0xd4ce('0xba')){setTimeout(function(){if(_0x4fec9a[_0x485677]&&_0x4fec9a[_0x485677][_0xd4ce('0x50')]!==_0xd4ce('0x85')){_0x363297[_0xd4ce('0xbb')](_0x363297[_0xd4ce('0x23')][_0x4fec9a[_0x485677][_0xd4ce('0xbc')]]);logger[_0xd4ce('0xa3')](_0xd4ce('0xbd'),_0x3179d8,_0x485677,_0x4fec9a[_0x485677][_0xd4ce('0xbc')]);delete _0x4fec9a[_0x485677];}if(_0x4fec9a[_0x485677]&&_0x4fec9a[_0x485677]['type']==='ivr'){_0x363297[_0xd4ce('0xbb')](_0x363297[_0xd4ce('0x24')][_0x4fec9a[_0x485677][_0xd4ce('0xbc')]]);logger[_0xd4ce('0xa3')](_0xd4ce('0xbe'),_0x3179d8,_0x485677,_0x4fec9a[_0x485677][_0xd4ce('0xbc')]);delete _0x4fec9a[_0x485677];}},0x2328);}});}});}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xbf')]=function(_0x2195c9){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xbf')](_0x2195c9))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xc1')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc2')]=function(_0x5e6fb5){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperBlack[_0xd4ce('0xc2')](_0x5e6fb5))['catch'](loggerCatch(_0xd4ce('0xc4')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc5')]=function(_0x280ffe,_0x4a823f,_0x15751c){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperAdditionalPhone[_0xd4ce('0xc5')](_0x280ffe,_0x4a823f,_0x15751c))['catch'](loggerCatch(_0xd4ce('0xc6')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc7')]=function(_0x397a71,_0x3dcf65,_0xd2d856){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x397a71,_0x3dcf65,_0xd2d856))[_0xd4ce('0xb9')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0xd4ce('0x1e')]['checkIsBlackListIvr']=function(_0x39a08a){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperBlack['checkIsBlackListIvr'](_0x39a08a))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xc8')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xc9')]=function(_0x47c608){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopperHistory[_0xd4ce('0xca')](_0x47c608))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xcb')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xcc')]=function(_0x1f625d){return Promise[_0xd4ce('0xc3')]()['then'](cmHopper[_0xd4ce('0xcc')](_0x1f625d))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype'][_0xd4ce('0xcd')]=function(_0xd4f717,_0x5365d3,_0x3e30f6){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper['unlockContact'](_0xd4f717,_0x5365d3,_0x3e30f6))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xce')));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xcf')]=function(_0x59aacc,_0x53f427,_0x5594f4,_0x110067,_0x4e073d){return Promise[_0xd4ce('0xc3')]()['then'](cmHopper[_0xd4ce('0xcf')](_0x59aacc,_0x53f427,_0x5594f4,_0x110067))['catch'](function(_0x3745e4){_0x4e073d[_0xd4ce('0xd0')]-=_0x5594f4;_0x4e073d[_0xd4ce('0xd0')]=_0x4e073d[_0xd4ce('0xd0')]>0x0?_0x4e073d[_0xd4ce('0xd0')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x3745e4);});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xd1')]=function(_0x1ad8b7,_0x39736a,_0x58020a,_0x201b69){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xd1')](_0x1ad8b7,_0x39736a,_0x58020a))['catch'](function(_0xb2de8a){_0x201b69['temp']-=_0x39736a;_0x201b69[_0xd4ce('0xd0')]=_0x201b69[_0xd4ce('0xd0')]>0x0?_0x201b69[_0xd4ce('0xd0')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0xb2de8a);});};Dialer['prototype'][_0xd4ce('0xd2')]=function(_0x2b18f7){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](voiceQueueRt[_0xd4ce('0xd2')](_0x2b18f7))[_0xd4ce('0xb9')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype'][_0xd4ce('0xd3')]=function(_0x2dee3f){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0xd3')](_0x2dee3f))[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xd4')));};Dialer['prototype']['createHistory']=function(_0x213375){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopperHistory['createHistory'](_0x213375))[_0xd4ce('0xb9')](loggerCatch('[createHistory]\x20'));};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xbb')]=function(_0xaee269){if(!_['isUndefined'](_0xaee269)&&_0xaee269!==null){if(typeof _0xaee269['originated']!==_0xd4ce('0xa6')){if(_0xaee269[_0xd4ce('0x79')]>0x0){_0xaee269[_0xd4ce('0x79')]-=0x1;}else{logger[_0xd4ce('0xa3')](_0xd4ce('0xd5'));}}}else{logger['error'](_0xd4ce('0xd6'));}};Dialer[_0xd4ce('0x1e')]['loggerHandler']=function(_0x4b95ff,_0x3509d1){var _0x19b522=this;return function(_0x256a0d){_0x19b522[_0xd4ce('0xbb')](_0x3509d1);logger[_0xd4ce('0xa3')](_0x4b95ff,util[_0xd4ce('0xa2')](_0x256a0d,{'showHidden':![],'depth':null}));};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xd7')]=function(_0x124367,_0x555ed5,_0x149399){var _0x3efa00={'state':0x19,'statedesc':_0xd4ce('0xd8')};this[_0xd4ce('0xbb')](_0x555ed5);this[_0xd4ce('0xd9')](_['merge'](_0x3efa00,_[_0xd4ce('0xda')](_0x149399,[_0xd4ce('0xdb'),_0xd4ce('0xdc'),_0xd4ce('0xdd'),_0xd4ce('0xde'),_0xd4ce('0xdf')])),_0xd4ce('0xe0'),'[emptyContact]');logger[_0xd4ce('0xa3')](_0x124367);};Dialer[_0xd4ce('0x1e')]['isSuccess']=function(_0x4a9b85){return _0x4a9b85==='Success';};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xe1')]=function(_0x179d69){return!_[_0xd4ce('0x41')](_0x179d69)&&_0x179d69&&!_[_0xd4ce('0x41')](_0x179d69[_0xd4ce('0x44')])&&!_[_0xd4ce('0x41')](_0x179d69[_0xd4ce('0xe2')])&&_0x179d69['active']&&(this[_0xd4ce('0x26')][util[_0xd4ce('0x82')]('SIP/%s',_0x179d69['name'])]['status']===_0xd4ce('0xe3')||this['trunks'][util[_0xd4ce('0x82')](_0xd4ce('0xe4'),_0x179d69[_0xd4ce('0x44')])][_0xd4ce('0xe5')]===_0xd4ce('0xe6'));};Dialer['prototype'][_0xd4ce('0xd9')]=function(_0x4c13b0,_0x1daaae,_0x5383b4){this[_0xd4ce('0xe7')](_0x4c13b0)['catch'](loggerCatch(_0x1daaae));this['moveContactManagedDialer'](_0x4c13b0)[_0xd4ce('0xb9')](loggerCatch(_0x5383b4));};Dialer[_0xd4ce('0x1e')]['syncVarSet']=function(_0x3de1f1){var _0x1a9e64=this;var _0x9c5fca=this['uniqueId'][_0x3de1f1[_0xd4ce('0xe8')]];var _0x2a6e3a;if(!_[_0xd4ce('0xb7')](_0x3de1f1)&&!_[_0xd4ce('0xb7')](_0x3de1f1[_0xd4ce('0xe9')])&&!_[_0xd4ce('0xb7')](_0x3de1f1['variable'][_0xd4ce('0xea')])&&_0x3de1f1[_0xd4ce('0xeb')]===_0xd4ce('0xec')&&_0x9c5fca){if(_0x9c5fca[_0xd4ce('0x50')]!=='ivr'&&this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0xed')]&&_0x3de1f1[_0xd4ce('0xee')]===_0xd4ce('0xef')){delete this[_0xd4ce('0x29')][_0x3de1f1[_0xd4ce('0xe8')]];this['updateOriginated'](this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]);this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x64')]+=0x1;this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;_0x2a6e3a=new Hangup(_0x9c5fca,_0x3de1f1);_0x2a6e3a['state']=0x12;_0x2a6e3a[_0xd4ce('0xb1')]=_0xd4ce('0xf0');_0x2a6e3a[_0xd4ce('0xf1')]=_0xd4ce('0xf2');ami[_0xd4ce('0x4f')](_0xd4ce('0xf3'),ut[_0xd4ce('0xf4')](_0x2a6e3a,'amd'));this['saveInDb'](_0x2a6e3a,_0xd4ce('0xf5'),'[syncHangupInAMD]');}if(_0x9c5fca['type']!=='ivr'&&this[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0xed')]&&_0x3de1f1['value']==='MACHINE'){return new Promise(function(_0x3063e4,_0x4c7c04){delete _0x1a9e64['uniqueId'][_0x3de1f1[_0xd4ce('0xe8')]];_0x1a9e64[_0xd4ce('0xbb')](_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]]['outboundAnswerCallsDay']+=0x1;_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;var _0x1cb03=_0x1a9e64[_0xd4ce('0x23')][_0x9c5fca[_0xd4ce('0xbc')]];var _0x2c0d89=new Hangup(_0x9c5fca,_0x3de1f1);_0x2c0d89['state']=0x13;_0x2c0d89['statedesc']='Machine';_0x2c0d89[_0xd4ce('0xf1')]='AMD';_0x2c0d89[_0xd4ce('0xf6')]+=0x1;_0x2c0d89[_0xd4ce('0xf7')]+=0x1;_0x2c0d89[_0xd4ce('0xf8')]=!![];ami['emit']('custom:amd',ut[_0xd4ce('0xf4')](_0x2c0d89,_0xd4ce('0xf8')));_0x1a9e64[_0xd4ce('0xe7')](_0x2c0d89)['catch'](loggerCatch(_0xd4ce('0xf9')));if(_0x2c0d89['countbusyretry']+_0x2c0d89[_0xd4ce('0xfa')]+_0x2c0d89[_0xd4ce('0xfb')]+_0x2c0d89['countnosuchnumberretry']+_0x2c0d89['countdropretry']+_0x2c0d89['countabandonedretry']+_0x2c0d89[_0xd4ce('0xf6')]+_0x2c0d89[_0xd4ce('0xfc')]>=_0x1cb03[_0xd4ce('0xfd')]){_0x1a9e64['stateGlobal'](_0x2c0d89,_0x3063e4,_0x4c7c04,_0xd4ce('0xfe'));}else{if(_0x2c0d89[_0xd4ce('0xf6')]>=_0x1cb03[_0xd4ce('0xff')]){_0x1a9e64[_0xd4ce('0x100')](_0x2c0d89,_0x3063e4,_0x4c7c04,'reason\x2019\x20machine....');}else{_0x1a9e64[_0xd4ce('0xcc')]({'active':![],'countmachineretry':_0x2c0d89['countmachineretry'],'scheduledat':moment()[_0xd4ce('0x101')](_0x1cb03[_0xd4ce('0x102')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x2c0d89[_0xd4ce('0xdb')],'ListId':_0x2c0d89['ListId'],'VoiceQueueId':_0x2c0d89[_0xd4ce('0xde')]||undefined,'CampaignId':_0x2c0d89[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));_0x3063e4({'reschedule':0x1});}}});}if(_0x9c5fca[_0xd4ce('0x50')]===_0xd4ce('0x85')&&this[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]['dialAMDActive']&&_0x3de1f1[_0xd4ce('0xee')]==='HANGUP'){delete this[_0xd4ce('0x29')][_0x3de1f1[_0xd4ce('0xe8')]];this['updateOriginated'](this[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x2a6e3a=new Hangup(_0x9c5fca,_0x3de1f1);_0x2a6e3a[_0xd4ce('0x106')]=0x12;_0x2a6e3a[_0xd4ce('0xb1')]=_0xd4ce('0xf0');_0x2a6e3a['membername']=_0xd4ce('0xf2');ami['emit']('custom:amd',ut[_0xd4ce('0xf4')](_0x2a6e3a,_0xd4ce('0xf8')));this[_0xd4ce('0xd9')](_0x2a6e3a,'[syncHangupInAMDIvr][createHistory]',_0xd4ce('0x107'));}if(_0x9c5fca[_0xd4ce('0x50')]===_0xd4ce('0x85')&&this[_0xd4ce('0x24')][_0x9c5fca['queue']][_0xd4ce('0xed')]&&_0x3de1f1['value']===_0xd4ce('0x108')){return new Promise(function(_0x6d4cca,_0x6883b5){delete _0x1a9e64[_0xd4ce('0x29')][_0x3de1f1['uniqueid']];_0x1a9e64[_0xd4ce('0xbb')](_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]]);_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x64')]+=0x1;_0x1a9e64[_0xd4ce('0x24')][_0x9c5fca[_0xd4ce('0xbc')]][_0xd4ce('0x63')]+=0x1;var _0x23cf85=_0x1a9e64['campaigns'][_0x9c5fca[_0xd4ce('0xbc')]];var _0x5bd33a=new Hangup(_0x9c5fca,_0x3de1f1);_0x5bd33a[_0xd4ce('0x106')]=0x13;_0x5bd33a[_0xd4ce('0xb1')]=_0xd4ce('0x109');_0x5bd33a[_0xd4ce('0xf1')]=_0xd4ce('0xf2');_0x5bd33a[_0xd4ce('0xf6')]+=0x1;_0x5bd33a[_0xd4ce('0xf7')]+=0x1;_0x5bd33a[_0xd4ce('0xf8')]=!![];ami[_0xd4ce('0x4f')](_0xd4ce('0xf3'),ut[_0xd4ce('0xf4')](_0x5bd33a,'amd'));_0x1a9e64[_0xd4ce('0xe7')](_0x5bd33a)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0xf9')));if(_0x5bd33a[_0xd4ce('0x10a')]+_0x5bd33a[_0xd4ce('0xfa')]+_0x5bd33a[_0xd4ce('0xfb')]+_0x5bd33a[_0xd4ce('0x10b')]+_0x5bd33a[_0xd4ce('0x10c')]+_0x5bd33a[_0xd4ce('0x10d')]+_0x5bd33a[_0xd4ce('0xf6')]+_0x5bd33a[_0xd4ce('0xfc')]>=_0x23cf85['dialGlobalMaxRetry']){_0x1a9e64[_0xd4ce('0x10e')](_0x5bd33a,_0x6d4cca,_0x6883b5,_0xd4ce('0xfe'));}else{if(_0x5bd33a['countmachineretry']>=_0x23cf85[_0xd4ce('0xff')]){_0x1a9e64[_0xd4ce('0x100')](_0x5bd33a,_0x6d4cca,_0x6883b5,'reason\x2019\x20machine....');}else{_0x1a9e64[_0xd4ce('0xcc')]({'active':![],'countmachineretry':_0x5bd33a[_0xd4ce('0xf6')],'scheduledat':moment()[_0xd4ce('0x101')](_0x23cf85[_0xd4ce('0x102')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5bd33a[_0xd4ce('0xdb')],'ListId':_0x5bd33a[_0xd4ce('0xdc')],'VoiceQueueId':_0x5bd33a[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5bd33a['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));_0x6d4cca({'reschedule':0x1});}}});}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x37')]=function(_0x82ca40){var _0x24f5ed=this[_0xd4ce('0x29')][_0x82ca40['uniqueid']];var _0x314844;if(_0x24f5ed&&_0x24f5ed['type']===_0xd4ce('0x85')){delete this[_0xd4ce('0x29')][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x24')][_0x24f5ed[_0xd4ce('0xbc')]]);this[_0xd4ce('0x24')][_0x24f5ed[_0xd4ce('0xbc')]][_0xd4ce('0x10f')]+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);this['createHistory'](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x110')));this[_0xd4ce('0xd3')](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}if(_0x24f5ed&&_0x24f5ed[_0xd4ce('0x50')]!=='ivr'&&isNotNull(this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]]['dialQueueProject'])){delete this[_0xd4ce('0x29')][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]]);this[_0xd4ce('0x23')][_0x24f5ed['queue']][_0xd4ce('0x64')]+=0x1;this['voiceQueues'][_0x24f5ed[_0xd4ce('0xbc')]]['outboundAnswerAgiCallsDay']+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);_0x314844[_0xd4ce('0x106')]=0x10;_0x314844[_0xd4ce('0xb1')]='AnswerAGI';_0x314844[_0xd4ce('0xf1')]=_0xd4ce('0x112');this[_0xd4ce('0xe7')](_0x314844)['catch'](loggerCatch(_0xd4ce('0x110')));this[_0xd4ce('0xd3')](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}if(_0x24f5ed&&_0x24f5ed[_0xd4ce('0x50')]!=='ivr'&&!isNotNull(this['voiceQueues'][_0x24f5ed['queue']][_0xd4ce('0x113')])){delete this['uniqueId'][_0x82ca40[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x24f5ed['queue']]);this[_0xd4ce('0x23')][_0x24f5ed[_0xd4ce('0xbc')]][_0xd4ce('0x6e')]+=0x1;_0x314844=new Hangup(_0x24f5ed,_0x82ca40);_0x314844[_0xd4ce('0x106')]=0xc;_0x314844[_0xd4ce('0xb1')]=_0x82ca40[_0xd4ce('0x114')];_0x314844[_0xd4ce('0xf1')]=_0xd4ce('0x115');this['createHistory'](_0x314844)['catch'](loggerCatch(_0xd4ce('0x110')));this['moveContactManagedDialer'](_0x314844)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x111')));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x116')]=function(_0x4ba0bf){var _0x59fae1=this[_0xd4ce('0x29')][_0x4ba0bf['uniqueid']];if(this['voiceQueues'][_0x4ba0bf['queue']]){if(_0x59fae1&&_0x59fae1[_0xd4ce('0x50')]!==_0xd4ce('0x85')){delete this[_0xd4ce('0x29')][_0x4ba0bf[_0xd4ce('0xe8')]];this['voiceQueues'][_0x4ba0bf[_0xd4ce('0xbc')]]['outboundAnswerCallsDay']+=0x1;var _0x8fd731=new AgentComplete(_0x59fae1,_0x4ba0bf);if(_0x4ba0bf[_0xd4ce('0x117')]===_0xd4ce('0x118')){_0x8fd731[_0xd4ce('0x119')]=this[_0xd4ce('0x23')][_0x4ba0bf['queue']][_0xd4ce('0x11a')]&&this[_0xd4ce('0x23')][_0x4ba0bf[_0xd4ce('0xbc')]][_0xd4ce('0x11b')]?moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xd4ce('0xe7')](_0x8fd731)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x8fd731)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x11c')));}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x2d')]=function(_0x317df7){if(this[_0xd4ce('0x23')][_0x317df7[_0xd4ce('0xbc')]]){if(this['uniqueId'][_0x317df7['uniqueid']]&&this[_0xd4ce('0x29')][_0x317df7[_0xd4ce('0xe8')]]['type']!==_0xd4ce('0x85')){this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x317df7[_0xd4ce('0xbc')]]);this['uniqueId'][_0x317df7[_0xd4ce('0xe8')]]['answertime']=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xd4ce('0x1e')]['queueCallerAbandonCreateState']=function(_0x41260b,_0x3d775c){this[_0xd4ce('0xe7')](_0x41260b)['catch'](loggerCatch(_0xd4ce('0x11d')));if(_0x3d775c==0x0){this[_0xd4ce('0xd3')](_0x41260b)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x11e')));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x2f')]=function(_0x284cb5){var _0x4d02be=this[_0xd4ce('0x29')][_0x284cb5[_0xd4ce('0xe8')]];var _0x332842=this;var _0x7fe9e6=![];var _0x2db800;var _0x52353c;if(this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]){if(_0x4d02be&&_0x4d02be[_0xd4ce('0x50')]!=='ivr'){delete this[_0xd4ce('0x29')][_0x284cb5[_0xd4ce('0xe8')]];this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]);_0x4d02be['droptime']=moment()['format'](_0xd4ce('0x104'));var _0x5ee861=new QueueCallerAbandon(_0x4d02be,_0x284cb5);if(getSeconds(_0x4d02be[_0xd4ce('0x11f')],_0x4d02be[_0xd4ce('0x120')])>=_0x4d02be[_0xd4ce('0x121')]){this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x73')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x68')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x75')]+=0x1;_0x5ee861[_0xd4ce('0x106')]=0xa;_0x5ee861[_0xd4ce('0xb1')]='Drop';_0x5ee861['dropreason']=_0xd4ce('0x122');_0x5ee861['agiafterat']=this['voiceQueues'][_0x284cb5['queue']][_0xd4ce('0x11a')]?moment()[_0xd4ce('0x82')](_0xd4ce('0x104')):undefined;_0x5ee861[_0xd4ce('0x10c')]+=0x1;_0x5ee861[_0xd4ce('0xf7')]+=0x1;_0x2db800=this['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x123')];_0x52353c=this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]]['callAdditionalPhoneAfterMin'];_0x332842[_0xd4ce('0xc5')](_0x5ee861,_0x5ee861[_0xd4ce('0x106')],_0x4d02be[_0xd4ce('0x124')])[_0xd4ce('0xc0')](function(_0x1cda30){_0x7fe9e6=_0x1cda30['additional']==0x1;if(_0x5ee861[_0xd4ce('0x10c')]>=_0x332842[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x125')]){_0x332842['queueCallerAbandonCreateState'](_0x5ee861,_0x1cda30[_0xd4ce('0x126')]);}else{_0x332842[_0xd4ce('0xcc')]({'active':![],'countdropretry':_0x5ee861[_0xd4ce('0x10c')],'scheduledat':moment()['add'](_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x123')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x4d02be['ContactId'],'ListId':_0x4d02be[_0xd4ce('0xdc')],'VoiceQueueId':_0x4d02be['VoiceQueueId']||undefined,'CampaignId':_0x4d02be[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[rescheduleContact][Drop]'));var _0x3218a9=new History(_0x5ee861);_0x3218a9['state']=0xa;_0x3218a9[_0xd4ce('0xb1')]='Drop';_0x3218a9[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')](_0xd4ce('0x104'));_0x3218a9['endtime']=_0x3218a9['starttime'];_0x3218a9[_0xd4ce('0x127')]=_0x5ee861[_0xd4ce('0x127')];_0x3218a9[_0xd4ce('0x128')]=_0x5ee861[_0xd4ce('0x128')];_0x332842[_0xd4ce('0xe7')](_0x3218a9)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x129')));}})['then'](function(){if(_0x7fe9e6)_0x332842[_0xd4ce('0xc7')](_0x5ee861,_0x2db800,_0x52353c)[_0xd4ce('0xc0')](function(){return 0x1;});});}else{this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x72')]+=0x1;this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x67')]+=0x1;_0x5ee861['state']=0xb;_0x5ee861[_0xd4ce('0xb1')]=_0xd4ce('0x12a');_0x5ee861[_0xd4ce('0x12b')]=_0xd4ce('0x12c');_0x5ee861[_0xd4ce('0x10d')]+=0x1;_0x5ee861['countglobal']+=0x1;_0x2db800=this[_0xd4ce('0x23')][_0x284cb5['queue']][_0xd4ce('0x12d')];_0x52353c=this[_0xd4ce('0x23')][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12e')];_0x332842[_0xd4ce('0xc5')](_0x5ee861,_0x5ee861[_0xd4ce('0x106')],_0x4d02be[_0xd4ce('0x124')])[_0xd4ce('0xc0')](function(_0x2aa193){if(_0x5ee861['countabandonedretry']>=_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12f')]){_0x332842[_0xd4ce('0x130')](_0x5ee861,_0x2aa193['additional']);}else{_0x332842[_0xd4ce('0xcc')]({'active':![],'countabandonedretry':_0x5ee861[_0xd4ce('0x10d')],'scheduledat':moment()['add'](_0x332842['voiceQueues'][_0x284cb5[_0xd4ce('0xbc')]][_0xd4ce('0x12d')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x4d02be['ContactId'],'ListId':_0x4d02be[_0xd4ce('0xdc')],'VoiceQueueId':_0x4d02be[_0xd4ce('0xde')]||undefined,'CampaignId':_0x4d02be[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x131')));var _0x1eb764=new History(_0x5ee861);_0x1eb764[_0xd4ce('0x106')]=0xb;_0x1eb764['statedesc']=_0xd4ce('0x12a');_0x1eb764[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');_0x1eb764[_0xd4ce('0x132')]=_0x1eb764[_0xd4ce('0xb2')];_0x1eb764[_0xd4ce('0x127')]=_0x5ee861[_0xd4ce('0x127')];_0x1eb764[_0xd4ce('0x128')]=_0x5ee861[_0xd4ce('0x128')];_0x332842[_0xd4ce('0xe7')](_0x1eb764)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x133')));}})['then'](function(){if(_0x7fe9e6)_0x332842[_0xd4ce('0xc7')](_0x5ee861,_0x2db800,_0x52353c)['then'](function(){return 0x1;});});}}}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x39')]=function(_0x3a928e){if(this[_0xd4ce('0xb5')][_0x3a928e[_0xd4ce('0xe8')]]){this[_0xd4ce('0xb5')][_0x3a928e[_0xd4ce('0xe8')]]['channel']=_0x3a928e[_0xd4ce('0xb8')];}if(this[_0xd4ce('0x29')][_0x3a928e[_0xd4ce('0xe8')]]){this['uniqueId'][_0x3a928e['uniqueid']][_0xd4ce('0xb8')]=_0x3a928e[_0xd4ce('0xb8')];}};Dialer['prototype'][_0xd4ce('0x3c')]=function(_0x381a16){if(strategy[this['voiceQueues'][this[_0xd4ce('0xb5')][_0x381a16['actionid']][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]===_0xd4ce('0x1d')){if(this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]&&_[_0xd4ce('0xb7')](this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x135')])&&_0x381a16[_0xd4ce('0xe5')]==='1'&&_0x381a16[_0xd4ce('0x136')]==='0'){if(this[_0xd4ce('0x25')][_0x381a16['stateinterface']]){if(!this[_0xd4ce('0x25')][_0x381a16[_0xd4ce('0x137')]][_0xd4ce('0x135')]){this['agents'][_0x381a16[_0xd4ce('0x137')]][_0xd4ce('0x135')]=!![];this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x135')]=!![];this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x137')]=_0x381a16[_0xd4ce('0x137')];}}}}else if((strategy[this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]['strategy']]||_0xd4ce('0x138'))===_0xd4ce('0x138')){if(this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]){if(this[_0xd4ce('0x25')][_0x381a16['stateinterface']]){this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0x137')]=_0x381a16[_0xd4ce('0x137')];if(_[_0xd4ce('0xb7')](this['queueBooked'][this['actions'][_0x381a16[_0xd4ce('0x134')]][_0xd4ce('0xbc')]])){this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x381a16[_0xd4ce('0x134')]]['queue']]=[];}this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x381a16['actionid']]['queue']][_0xd4ce('0x13a')](_[_0xd4ce('0x98')](_['pick'](this['actions'][_0x381a16['actionid']],[_0xd4ce('0x13b'),_0xd4ce('0x137')]),{'status':_0x381a16[_0xd4ce('0xe5')],'paused':_0x381a16[_0xd4ce('0x136')]}));}}}};function unlockQueueStatus(_0x2c29d1,_0x2cbde5){setTimeout(function(){if(_[_0xd4ce('0x41')](_0x2c29d1[_0xd4ce('0x13c')])){loggerBooked['error'](_0xd4ce('0x13d'),_0x2cbde5);}_0x2c29d1[_0xd4ce('0x13c')]=!![];loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x13e'),_0x2cbde5,JSON[_0xd4ce('0x4c')](_[_0xd4ce('0xda')](_0x2c29d1,[_0xd4ce('0x44'),_0xd4ce('0x13c')])));},0x1f3);}Dialer[_0xd4ce('0x1e')]['syncQueueStatusComplete']=function(_0x29d6c0){var _0x6dd063=this;var _0x8ee088=_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]];if(strategy[this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]==='roundrobin'){if(this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]&&this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['stateinterface']){this[_0xd4ce('0x13f')][_0xd4ce('0x140')](this['actions'][_0x29d6c0['actionid']]['idHopper'],this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['stateinterface'])[_0xd4ce('0xb9')](function(_0x1d4e94){logger[_0xd4ce('0xa3')](_0xd4ce('0x141'),util[_0xd4ce('0xa2')](_0x1d4e94,{'showHidden':![],'depth':null}));})[_0xd4ce('0x21')](function(){_0x6dd063[_0xd4ce('0xbb')](_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]]['queue']]);_0x6dd063['agents'][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0x137')]]['locked']=![];delete _0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);});}else{this[_0xd4ce('0xbb')](this['voiceQueues'][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']]['ListId'],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xd4ce('0x142')));delete this['actions'][_0x29d6c0['actionid']];unlockQueueStatus(_0x8ee088);}}else if((strategy[this['voiceQueues'][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x52')]]||_0xd4ce('0x138'))===_0xd4ce('0x138')){var _0x2ede8f;if(this['actions'][_0x29d6c0[_0xd4ce('0x134')]]&&!_['isEmpty'](this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]])){if(this['queueBookedRR'][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]){this[_0xd4ce('0x2c')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]]['queue']]=this[_0xd4ce('0x2c')][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]?this[_0xd4ce('0x2c')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]:this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]?this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]['_rr']||0x0:0x0;}this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]][_0xd4ce('0x143')]=this[_0xd4ce('0x2c')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]];for(var _0x46b122=0x0;_0x46b122<this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0xa5')];_0x46b122+=0x1){_0x2ede8f=rr(this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]);this[_0xd4ce('0x2c')][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xbc')]]=this[_0xd4ce('0x139')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]][_0xd4ce('0x143')];if(_0x2ede8f[_0xd4ce('0xe5')]==='1'&&_0x2ede8f[_0xd4ce('0x136')]==='0'){break;}}if(!_[_0xd4ce('0xb7')](_0x2ede8f)){this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']][_0xd4ce('0x144')]=_[_0xd4ce('0x41')](this[_0xd4ce('0x25')][_0x2ede8f[_0xd4ce('0x137')]][_0xd4ce('0x144')])?!![]:this['agents'][_0x2ede8f[_0xd4ce('0x137')]][_0xd4ce('0x144')];}loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x145'),_0x29d6c0[_0xd4ce('0x134')],_0xd4ce('0x146'),JSON[_0xd4ce('0x4c')](_[_0xd4ce('0xda')](this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']],[_0xd4ce('0x44'),_0xd4ce('0x144')])),_0xd4ce('0x147'),JSON[_0xd4ce('0x4c')](_0x2ede8f[_0xd4ce('0x13b')]));if(!_[_0xd4ce('0xb7')](_0x2ede8f)&&_0x2ede8f['status']==='1'&&_0x2ede8f[_0xd4ce('0x136')]==='0'&&this['agents'][_0x2ede8f[_0xd4ce('0x137')]]['unlockRR']){this[_0xd4ce('0x25')][_0x2ede8f['stateinterface']][_0xd4ce('0x144')]=![];this['queueBooked'][_0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]=[];this[_0xd4ce('0x13f')][_0xd4ce('0x140')](_0x2ede8f['idHopper'],_0x2ede8f['stateinterface'])['catch'](function(_0x582f19){logger['error'](_0xd4ce('0x141'),util[_0xd4ce('0xa2')](_0x582f19,{'showHidden':![],'depth':null}));})['finally'](function(){_0x6dd063[_0xd4ce('0xbb')](_0x6dd063[_0xd4ce('0x23')][_0x6dd063['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);setTimeout(function(){_0x6dd063['agents'][_0x2ede8f[_0xd4ce('0x137')]]['unlockRR']=!![];loggerBooked['info'](_0xd4ce('0x148'),_0x29d6c0[_0xd4ce('0x134')],'Agent:\x20',JSON['stringify'](_[_0xd4ce('0xda')](_0x6dd063['agents'][_0x2ede8f[_0xd4ce('0x137')]],[_0xd4ce('0x44'),_0xd4ce('0x144')])),_0xd4ce('0x147'),JSON[_0xd4ce('0x4c')](_0x2ede8f['idHopper']));},0xc7);delete _0x6dd063[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088,_0x29d6c0[_0xd4ce('0x134')]);});}else{loggerBooked['info']('[booked][unlock]');this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['ListId'],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xde')]||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x142')));delete this['actions'][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);}}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x149'));this[_0xd4ce('0xbb')](this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdb')],'ListId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdc')],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xde')]||undefined,'CampaignId':this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]];unlockQueueStatus(_0x8ee088);}}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x14a'));this['updateOriginated'](this[_0xd4ce('0x23')][this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xbc')]]);this[_0xd4ce('0xcc')]({'active':![],'ContactId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdb')],'ListId':this['actions'][_0x29d6c0[_0xd4ce('0x134')]][_0xd4ce('0xdc')],'VoiceQueueId':this[_0xd4ce('0xb5')][_0x29d6c0[_0xd4ce('0x134')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xd4ce('0xb5')][_0x29d6c0['actionid']][_0xd4ce('0xdf')]||undefined})['catch'](loggerCatch(_0xd4ce('0x14b')));delete this[_0xd4ce('0xb5')][_0x29d6c0['actionid']];unlockQueueStatus(_0x8ee088);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x3e')]=function(){var _0x2ad83f=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xd4ce('0xc0')](function(){setInterval(function(){_0x2ad83f['syncCampaigns']();},0x3e8);});};Dialer[_0xd4ce('0x1e')]['checkIsTrunkReachable']=function(_0x5a3d6f){var _0x50c9ee=this;return function(){if(!_0x50c9ee[_0xd4ce('0xe1')](_0x5a3d6f[_0xd4ce('0x7f')])){if(!_0x50c9ee['isTrunkReachable'](_0x5a3d6f[_0xd4ce('0x14c')])){_0x5a3d6f[_0xd4ce('0x42')]=_0xd4ce('0x14d');throw _0x5a3d6f['name']+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x14e')]=function(_0x27ffb3,_0xa18ed2,_0x3fdeb9,_0x265c61){var _0x3ebd2c=this;return function(){var _0x388b84=!![];return _0x3ebd2c[_0xd4ce('0x14f')](_0x27ffb3,_0xa18ed2,_0x3fdeb9,_0x265c61,_0x388b84);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x150')]=function(_0x18dfb3,_0x1102f0,_0x524191,_0x3fb429){var _0x3e8d88=this;return function(){var _0xa84ffa=![];return _0x3e8d88[_0xd4ce('0x14f')](_0x18dfb3[_0xd4ce('0x49')],_0x1102f0,_0x524191,_0x3fb429,_0xa84ffa);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x14f')]=function(_0x56d8e4,_0x2babe9,_0x49cd0f,_0x474a14,_0x368f8e){var _0x3444f1=[];return new Promise(function(_0x2e76bf,_0x2fe957){if(!isNotNull(_0x56d8e4)){_0x474a14[_0xd4ce('0x42')]=_0xd4ce('0x4a');return _0x2fe957(msgResponse('ifTime',_0xd4ce('0x151'),_0x49cd0f+_0xd4ce('0x152')));}if(_[_0xd4ce('0x4b')](_0x56d8e4)){_0x474a14['message']=_0xd4ce('0x153');return _0x2fe957(msgResponse(_0xd4ce('0x14f'),_0xd4ce('0x151'),_0x49cd0f+_0xd4ce('0x154')));}if(_0x2babe9&&_['isUndefined'](config[_0xd4ce('0x155')][_0x2babe9])){_0x474a14[_0xd4ce('0x42')]=_0xd4ce('0x156');return _0x2fe957(msgResponse(_0xd4ce('0x14f'),'Failure',_0x49cd0f+_0xd4ce('0x157')+_0x2babe9));}if(_[_0xd4ce('0x158')](_0x56d8e4)){for(var _0x196971=0x0;_0x196971<_0x56d8e4[_0xd4ce('0xa5')];_0x196971+=0x1){_0x3444f1['push'](ami['Action']({'action':_0xd4ce('0x159'),'command':util['format'](_0xd4ce('0x15a'),_0x56d8e4[_0x196971][_0xd4ce('0x15b')],!_[_0xd4ce('0x41')](config[_0xd4ce('0x155')][_0x2babe9])?_0x2babe9:'')})[_0xd4ce('0xc0')](function(_0x5ddcb6){return _0x5ddcb6['content'][_0xd4ce('0x15c')]('true')>=0x0;})[_0xd4ce('0xb9')](myreject(_0x2fe957)));}}else{_0x3444f1['push'](ami[_0xd4ce('0x15d')]({'action':_0xd4ce('0x159'),'command':util[_0xd4ce('0x82')](_0xd4ce('0x15a'),_0x56d8e4,!_[_0xd4ce('0x41')](config[_0xd4ce('0x155')][_0x2babe9])?_0x2babe9:'')})[_0xd4ce('0xc0')](function(_0x3e2c1d){return _0x3e2c1d[_0xd4ce('0x15e')][_0xd4ce('0x15c')]('true')>=0x0;})[_0xd4ce('0xb9')](myreject(_0x2fe957)));}Promise[_0xd4ce('0x15f')](_0x3444f1)[_0xd4ce('0xc0')](function(_0x2fca14){var _0x5e0215=_[_0xd4ce('0x160')](_0x2fca14);if(_0x5e0215){return _0x2e76bf(_0x5e0215);}else{_0x474a14['message']=_0x368f8e?_0xd4ce('0x161'):_0xd4ce('0x162');return _0x2fe957(msgResponse(_0xd4ce('0x163'),_0xd4ce('0x151'),_0xd4ce('0x164')+_0x368f8e+'\x20'+_0x49cd0f+_0xd4ce('0x165')+util['inspect'](_0x56d8e4,{'showHidden':![],'depth':null})+_0xd4ce('0x166')+_0x2babe9));}})['catch'](function(_0x324bea){return _0x2fe957(msgResponse('ifTime',_0xd4ce('0x151'),JSON[_0xd4ce('0x4c')](_0x324bea)));});});};Dialer[_0xd4ce('0x1e')]['checkDialMethod']=function(_0x1b3df8){var _0x178b03=this;return function(){switch(_0x1b3df8[_0xd4ce('0x5e')]){case'progressive':freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,0x1);break;case _0xd4ce('0x168'):freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,_0x1b3df8['dialPowerLevel']);break;case _0xd4ce('0x169'):_0x178b03[_0xd4ce('0x169')](_0x1b3df8);break;case'booked':freeVariablesPredictive(_0x1b3df8);_0x178b03[_0xd4ce('0x167')](_0x1b3df8,0x1);break;default:freeVariablesPredictive(_0x1b3df8);logger['error'](_0xd4ce('0x16a'),_0x1b3df8['name'],'method\x20not\x20recognized');}};};Dialer['prototype'][_0xd4ce('0x16b')]=function(_0x514e81){return Promise['resolve']()[_0xd4ce('0xc0')](cmHopper[_0xd4ce('0x16c')](_0x514e81['id'],previewRecallmeReminderInterval))[_0xd4ce('0xc0')](function(_0x3cb478){for(var _0x5653f3=0x0;_0x5653f3<_0x3cb478[_0xd4ce('0xa5')];_0x5653f3++){var _0x10773c=_0x3cb478[_0x5653f3]['Agent'][_0xd4ce('0x44')];if(_0x10773c)io['to'](util['format'](_0xd4ce('0x16d'),_0x10773c))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x3cb478[_0x5653f3]});}})[_0xd4ce('0xb9')](function(){});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x16e')]=function(_0x4b8c86){var _0x274a94=this;return function(){_0x274a94['handleIvr'](_0x4b8c86);};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0xb')]=function(_0x748525){var _0x54f564=this;if(isNotPreview(_0x748525[_0xd4ce('0x5e')])){if(isVoiceQueueOutbound(_0x748525['type'])&&isActive(_0x748525[_0xd4ce('0x5d')])){_0x748525[_0xd4ce('0xac')]=!![];Promise['resolve']()[_0xd4ce('0xc0')](checkIsLoggedIn(_0x748525,_0x748525[_0xd4ce('0x55')]))['then'](checkIsActive(_0x748525,_0x748525[_0xd4ce('0x5d')]))['then'](checkInterval(_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkIsTrunkReachable'](_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkIfTime'](_0x748525[_0xd4ce('0x16f')],_0x748525[_0xd4ce('0x170')],_0x748525['name'],_0x748525))['then'](_0x54f564[_0xd4ce('0x150')](_0x748525[_0xd4ce('0x48')],_0x748525[_0xd4ce('0x170')],_0x748525[_0xd4ce('0x44')],_0x748525))[_0xd4ce('0xc0')](_0x54f564['checkDialMethod'](_0x748525))[_0xd4ce('0xb9')](loggerCatchQueueSummary(_0xd4ce('0x171'),_0x748525));}else{notSendMessagesQueue(_0x748525);}}else{freeVariablesPredictive(_0x748525);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x35')]=_[_0xd4ce('0x172')](function(){var _0x30c733=_['filter'](this[_0xd4ce('0x23')],function(_0x505d95){return _0x505d95[_0xd4ce('0x173')];});var _0x2adf5c=_[_0xd4ce('0x174')](this[_0xd4ce('0x25')],function(_0x4e438d){return _0x4e438d[_0xd4ce('0x175')]&&_0x4e438d[_0xd4ce('0xe5')]===_0xd4ce('0xe3');});if(_0x30c733['length']>0x0&&_0x2adf5c[_0xd4ce('0xa5')]>0x0){return Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](cmHopper['handlePreviewRecallNotifications'](_[_0xd4ce('0x176')](_0x30c733,'id'),previewRecallmeReminderInterval,_[_0xd4ce('0x176')](_0x2adf5c,'id')))[_0xd4ce('0xc0')](function(_0x4148af){for(var _0x5df745=0x0;_0x5df745<_0x4148af['length'];_0x5df745++){var _0x3e2471=_0x4148af[_0x5df745][_0xd4ce('0x177')][_0xd4ce('0x44')];if(_0x3e2471)io['to'](util['format']('user:%s',_0x3e2471))[_0xd4ce('0x4f')](_0xd4ce('0x178'),{'hopper':_0x4148af[_0x5df745]});}})[_0xd4ce('0xb9')](function(_0x15381e){logger[_0xd4ce('0xa3')](_0xd4ce('0x16b'),_0x15381e);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xd4ce('0x1e')]['syncCampaigns']=function(){var _0x5253e9=this;var _0x5b2f2a;for(var _0x2404cb in this[_0xd4ce('0x24')]){if(typeof this[_0xd4ce('0x24')][_0x2404cb]!==_0xd4ce('0xa6')){_0x5b2f2a=this[_0xd4ce('0x24')][_0x2404cb];if(isCampaignIvr(_0x5b2f2a[_0xd4ce('0x50')])&&isActive(_0x5b2f2a['active'])){_0x5b2f2a[_0xd4ce('0xac')]=!![];Promise[_0xd4ce('0xc3')]()[_0xd4ce('0xc0')](checkIsActive(_0x5b2f2a,_0x5b2f2a[_0xd4ce('0xe2')]))[_0xd4ce('0xc0')](checkInterval(_0x5b2f2a))['then'](_0x5253e9[_0xd4ce('0x179')](_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x14e')](_0x5b2f2a['dialGlobalInterval'],_0x5b2f2a['dialTimezone'],_0x5b2f2a[_0xd4ce('0x44')],_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x150')](_0x5b2f2a['Interval'],_0x5b2f2a[_0xd4ce('0x170')],_0x5b2f2a[_0xd4ce('0x44')],_0x5b2f2a))[_0xd4ce('0xc0')](_0x5253e9[_0xd4ce('0x16e')](_0x5b2f2a))[_0xd4ce('0xb9')](loggerCatchQueueSummary(_0xd4ce('0x17a'),_0x5b2f2a));}else{notSendMessagesCampaign(_0x5b2f2a);}}}};function getCallerIdRandom(_0x48c49f,_0xb43c62){var _0xb601e6;var _0xc3702d;var _0x59b23c;if(_0xb43c62<=0x0){_0xb43c62=0x1;}_0xb601e6=new RegExp(_0xd4ce('0x17b')+_0xb43c62+'}$');_0xc3702d=Math[_0xd4ce('0x17c')](0xa,_0xb43c62-0x1);_0x59b23c=Math[_0xd4ce('0x17c')](0xa,_0xb43c62)-0x1;return util[_0xd4ce('0x82')]('%s',_['replace'](_0x48c49f,_0xb601e6,_['random'](_0xc3702d,_0x59b23c)));}function extractCalleridName(_0x5b2804){var _0x4865a7=_0x5b2804[_0xd4ce('0x17d')](/"(.*?)"/);return _0x4865a7?_0x4865a7[0x1]:_0x5b2804;}Dialer[_0xd4ce('0x1e')][_0xd4ce('0x17e')]=function(_0x36e89b,_0x3ac9e9){var _0x3cf5a9=this;var _0x425901=uuid['v4']();this[_0xd4ce('0xb5')][_0x425901]=new Action(_0x36e89b,_0x3ac9e9,_0x425901);return new Promise(function(_0x318ff0,_0xd1b561){if(_[_0xd4ce('0x41')](_0x36e89b)&&typeof _0x36e89b!=='object'){return _0xd1b561(msgResponse('originate','Failure',_0xd4ce('0x17f')));}if(_[_0xd4ce('0x41')](_0x3ac9e9['phone'])||_0x3ac9e9[_0xd4ce('0x180')]===null){return _0xd1b561(msgResponse(_0xd4ce('0x181'),_0xd4ce('0x151'),_0xd4ce('0x182')));}var _0x71997b={'XMD-CALLERID':_0x3cf5a9['actions'][_0x425901][_0xd4ce('0x183')](),'XMD-AGI':_0x36e89b[_0xd4ce('0x113')]?util[_0xd4ce('0x82')](_0xd4ce('0x184'),ipAgi,_0x36e89b[_0xd4ce('0x113')]):_0xd4ce('0x185'),'XMD-AGIAFTER':_0x36e89b[_0xd4ce('0x11a')]?util[_0xd4ce('0x82')]('\x22agi://%s/square,%s\x22',ipAgi,_0x36e89b[_0xd4ce('0x11a')]):_0xd4ce('0x185'),'XMD-QUEUE':_0x36e89b[_0xd4ce('0x50')]===_0xd4ce('0x51')?util[_0xd4ce('0x82')](_0xd4ce('0x186'),_0x36e89b[_0xd4ce('0x44')],_0x36e89b[_0xd4ce('0x187')]||'',_0x36e89b[_0xd4ce('0x11b')]?'c':'',_0x36e89b[_0xd4ce('0x121')]||0x3):'NONE','XMD-CONTACTID':_0x3ac9e9[_0xd4ce('0xdb')],'XMD-CDRTYPE':_0xd4ce('0x8'),'CALLERID(all)':_0x3cf5a9[_0xd4ce('0xb5')][_0x425901][_0xd4ce('0x183')](),'XMD-AMD':_0x36e89b[_0xd4ce('0xed')]?_0xd4ce('0x188'):_0xd4ce('0x185'),'XMD-DESTINATION':_0xd4ce('0xec')};if(_0x36e89b['dialAMDActive']){_0x71997b['XMD-AMDINITIALSILENCE']=_0x36e89b[_0xd4ce('0x189')]||0x9c4;_0x71997b[_0xd4ce('0x18a')]=_0x36e89b['dialAMDGreeting']||0x5dc;_0x71997b[_0xd4ce('0x18b')]=_0x36e89b['dialAMDAfterGreetingSilence']||0x320;_0x71997b[_0xd4ce('0x18c')]=_0x36e89b[_0xd4ce('0x18d')]||0x1388;_0x71997b[_0xd4ce('0x18e')]=_0x36e89b[_0xd4ce('0x18f')]||0x64;_0x71997b[_0xd4ce('0x190')]=_0x36e89b[_0xd4ce('0x191')]||0x32;_0x71997b[_0xd4ce('0x192')]=_0x36e89b[_0xd4ce('0x193')]||0x3;_0x71997b[_0xd4ce('0x194')]=_0x36e89b[_0xd4ce('0x195')]||0x100;_0x71997b['XMD-AMDMAXIMUMWORDLENGTH']=_0x36e89b[_0xd4ce('0x196')]||0x1388;}if(_0x36e89b[_0xd4ce('0x50')]===_0xd4ce('0x51')){_0x71997b[_0xd4ce('0x197')]=_0x3ac9e9[_0xd4ce('0xde')];}else{_0x71997b[_0xd4ce('0x198')]=_0x3ac9e9['CampaignId'];}for(var _0x7146 in _0x3ac9e9['Contact']){if(typeof _0x3ac9e9[_0xd4ce('0x199')][_0x7146]!=='undefined'){if(isNotNull(_0x3ac9e9[_0xd4ce('0x199')][_0x7146])&&_0x7146!=='id'&&_0x7146!==_0xd4ce('0x19a')&&_0x7146!=='createdAt'&&_0x7146!==_0xd4ce('0x19b')){_0x71997b[util[_0xd4ce('0x82')](_0xd4ce('0x19c'),_0xd4ce('0x19d'),_['toUpper'](_0x7146))]=_0x3ac9e9['Contact'][_0x7146];}}}var _0x2eddf7=_0x3cf5a9[_0xd4ce('0xe1')](_0x36e89b[_0xd4ce('0x7f')])?getCallerId(_0x36e89b['Trunk'][_0xd4ce('0x80')],_0x36e89b[_0xd4ce('0x5f')],_0x36e89b['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x36e89b['dialOriginateCallerIdNumber'],_0x36e89b[_0xd4ce('0x19e')]):_0x36e89b[_0xd4ce('0x60')]):getCallerId(_[_0xd4ce('0xb7')](_0x36e89b[_0xd4ce('0x14c')])?_0x36e89b['Trunk']['callerid']:_0x36e89b['TrunkBackup'][_0xd4ce('0x80')],_0x36e89b[_0xd4ce('0x5f')],_0x36e89b[_0xd4ce('0x19e')]>0x0?getCallerIdRandom(_0x36e89b[_0xd4ce('0x60')],_0x36e89b[_0xd4ce('0x19e')]):_0x36e89b['dialOriginateCallerIdNumber']);if(_0x2eddf7){_0x71997b[_0xd4ce('0x19f')]=_0x3cf5a9['actions'][_0x425901][_0xd4ce('0x1a0')]=extractCalleridName(_0x2eddf7);_0x71997b[_0xd4ce('0x1a1')]=_0x3ac9e9[_0xd4ce('0x180')];}_0x36e89b['variables']=_0x71997b;return ami['Action']({'actionid':_0x425901,'action':_0xd4ce('0x181'),'channel':_0x3cf5a9[_0xd4ce('0xe1')](_0x36e89b[_0xd4ce('0x7f')])?util[_0xd4ce('0x82')](_0xd4ce('0x1a2'),_0x36e89b[_0xd4ce('0x7f')]['name'],isNotNull(_0x36e89b[_0xd4ce('0x62')])?_0x36e89b[_0xd4ce('0x62')]['trim']()||'':'',_0x36e89b['dialCutDigit']>0x0?_0x3ac9e9[_0xd4ce('0x180')][_0xd4ce('0x1a3')](_0x36e89b[_0xd4ce('0x1a4')]):_0x3ac9e9[_0xd4ce('0x180')]):util[_0xd4ce('0x82')](_0xd4ce('0x1a2'),_[_0xd4ce('0xb7')](_0x36e89b[_0xd4ce('0x14c')])?_0x36e89b[_0xd4ce('0x7f')][_0xd4ce('0x44')]:_0x36e89b[_0xd4ce('0x14c')][_0xd4ce('0x44')],isNotNull(_0x36e89b[_0xd4ce('0x62')])?_0x36e89b[_0xd4ce('0x62')][_0xd4ce('0x1a5')]()||'':'',_0x36e89b[_0xd4ce('0x1a4')]>0x0?_0x3ac9e9['phone'][_0xd4ce('0x1a3')](_0x36e89b['dialCutDigit']):_0x3ac9e9[_0xd4ce('0x180')]),'callerid':_0x2eddf7,'Exten':'xcally-motion-dialer','Context':_0xd4ce('0x1a6'),'Priority':'1','variable':_0x71997b,'timeout':(_0x36e89b[_0xd4ce('0x61')]||0x1e)*0x3e8,'async':!![],'channelid':_0x425901})[_0xd4ce('0xc0')](function(_0x2ff38f){return _0x318ff0(_0x2ff38f);})['catch'](function(_0x47f1e3){_0x36e89b[_0xd4ce('0x6b')]+=0x1;var _0x15347e=new History(_0x3cf5a9['actions'][_0x425901]);logger[_0xd4ce('0xa3')](util[_0xd4ce('0x82')](_0xd4ce('0x1a7'),JSON[_0xd4ce('0x4c')](_0x47f1e3)));_0x15347e[_0xd4ce('0x106')]=0xe;_0x15347e[_0xd4ce('0xb1')]='OriginateError';_0x15347e[_0xd4ce('0xb2')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');_0x15347e[_0xd4ce('0x132')]=_0x15347e[_0xd4ce('0xb2')];_0x3cf5a9['createHistory'](_0x15347e)[_0xd4ce('0xb9')](loggerCatch('[originate][error]'));_0x3cf5a9[_0xd4ce('0xd3')](_0x15347e)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1a8')))[_0xd4ce('0x21')](function(){delete _0x3cf5a9['actions'][_0x425901];return _0xd1b561(msgResponse('originate',_0xd4ce('0x1a9'),_0xd4ce('0x1aa')));});});});};Dialer[_0xd4ce('0x1e')]['syncOriginateResponse']=function(_0x586a98){var _0x244cb5=this['actions'][_0x586a98[_0xd4ce('0x134')]];if(_0x244cb5){delete this[_0xd4ce('0xb5')][_0x586a98['actionid']];_0x244cb5['responsetime']=moment()['format'](_0xd4ce('0x104'));var _0x23409f=_0x244cb5[_0xd4ce('0x50')]==='ivr'?this[_0xd4ce('0x24')][_0x244cb5[_0xd4ce('0xbc')]]:this[_0xd4ce('0x23')][_0x244cb5[_0xd4ce('0x1ab')]()];if(!this[_0xd4ce('0x1ac')](_0x586a98[_0xd4ce('0x1ad')])){this[_0xd4ce('0xbb')](_0x23409f);return this[_0xd4ce('0x1ae')](_0x244cb5,_0x23409f,_0x586a98)[_0xd4ce('0xb9')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xd4ce('0x29')][_0x586a98[_0xd4ce('0xe8')]]=_0x244cb5;}};Dialer['prototype']['checkRetriveMax']=function(_0x4c0afd,_0x1d61c5,_0x1f3470){var _0x5e623b=new History(_0x1d61c5);if(_0x5e623b['countbusyretry']+_0x5e623b[_0xd4ce('0xfa')]+_0x5e623b['countnoanswerretry']+_0x5e623b[_0xd4ce('0x10b')]+_0x5e623b[_0xd4ce('0x10c')]+_0x5e623b['countabandonedretry']+_0x5e623b['countmachineretry']+_0x5e623b['countagentrejectretry']>=_0x1f3470['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x4c0afd){case 0x3:if(_0x5e623b['countnoanswerretry']>=_0x1f3470[_0xd4ce('0x1af')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countnoanswerretry':_0x5e623b[_0xd4ce('0xfb')]+=0x1,'scheduledat':moment()['add'](_0x1f3470[_0xd4ce('0x1b0')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b1')));break;case 0x5:if(_0x5e623b[_0xd4ce('0x10a')]>=_0x1f3470[_0xd4ce('0x1b2')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x5e623b[_0xd4ce('0x10a')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1b3')],_0xd4ce('0x103'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b4')));break;case 0x8:if(_0x5e623b['countcongestionretry']>=_0x1f3470['dialCongestionMaxRetry']-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countcongestionretry':_0x5e623b[_0xd4ce('0xfa')]+=0x1,'scheduledat':moment()['add'](_0x1f3470[_0xd4ce('0x1b5')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x5e623b[_0xd4ce('0x10b')]>=_0x1f3470[_0xd4ce('0x1b6')]-0x1){return!![];}else{this[_0xd4ce('0xcc')]({'active':![],'countnosuchnumberretry':_0x5e623b[_0xd4ce('0x10b')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1b7')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b['ListId'],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1b8')));}break;case 0xa:if(_0x5e623b[_0xd4ce('0x10c')]>=_0x1f3470[_0xd4ce('0x125')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countdropretry':_0x5e623b[_0xd4ce('0x10c')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x123')],_0xd4ce('0x103'))[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b['VoiceQueueId']||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})['catch'](loggerCatch(_0xd4ce('0x1b9')));break;case 0xb:if(_0x5e623b[_0xd4ce('0x10d')]>=_0x1f3470[_0xd4ce('0x12f')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x5e623b[_0xd4ce('0x10d')]+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x12d')],'minutes')[_0xd4ce('0x82')](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x131')));break;case 0x13:if(_0x5e623b[_0xd4ce('0xf6')]>=_0x1f3470[_0xd4ce('0xff')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x5e623b['countmachineretry']+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470['dialMachineRetryFrequency'],_0xd4ce('0x103'))[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5e623b[_0xd4ce('0xdb')],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x105')));break;case 0x14:if(_0x5e623b[_0xd4ce('0xfc')]>=_0x1f3470[_0xd4ce('0x1ba')]-0x1){return!![];}this[_0xd4ce('0xcc')]({'active':![],'countagentrejectretry':_0x5e623b['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xd4ce('0x101')](_0x1f3470[_0xd4ce('0x1bb')],_0xd4ce('0x103'))['format'](_0xd4ce('0x104')),'ContactId':_0x5e623b['ContactId'],'ListId':_0x5e623b[_0xd4ce('0xdc')],'VoiceQueueId':_0x5e623b[_0xd4ce('0xde')]||undefined,'CampaignId':_0x5e623b[_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1bc')));break;default:return!![];}};Dialer[_0xd4ce('0x1e')]['callProgressDetecting']=function(_0x10ec38,_0x1caf30,_0x2df240){var _0x428525=this;var _0x422e42=new History(_0x10ec38);var _0xbfa57d=![];var _0x7cfd02;var _0x1a15e6;return new Promise(function(_0x501587,_0x4d0118){if(_['isUndefined'](_0x1caf30)&&typeof _0x1caf30!==_0xd4ce('0x1bd')){return _0x4d0118(msgResponse(_0xd4ce('0x1be'),_0xd4ce('0x151'),_0xd4ce('0x1bf')));}if(_[_0xd4ce('0x41')](_0x2df240)&&typeof _0x2df240!==_0xd4ce('0x1bd')){return _0x4d0118(msgResponse(_0xd4ce('0x1be'),'Failure',_0xd4ce('0x1c0')));}_0x428525[_0xd4ce('0xc5')](_0x422e42,_0x2df240[_0xd4ce('0x117')],_0x1caf30)['then'](function(_0x2abc10){if(_0x2abc10[_0xd4ce('0x126')]==0x1)_0xbfa57d=!![];switch(_0x2df240['reason']){case'0':_0x1caf30['outboundNoSuchCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0x0;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1c1');_0x422e42[_0xd4ce('0x10b')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;ami['emit'](_0xd4ce('0x1c2'),ut[_0xd4ce('0xf4')](_0x10ec38,_0xd4ce('0x1c3')));_0x7cfd02=_0x1caf30['dialNoSuchNumberRetryFrequency'];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x428525[_0xd4ce('0x1c4')](0x0,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10b')]>=_0x1caf30['dialNoSuchNumberMaxRetry']){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c5'));}else{_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x1caf30[_0xd4ce('0x69')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x3;_0x422e42['statedesc']='NoAnswer';_0x422e42[_0xd4ce('0xfb')]+=0x1;_0x422e42['countglobal']+=0x1;var _0x59a068=ut[_0xd4ce('0x1c6')](_0x10ec38,_0x1caf30);ami['emit']('custom:agentnoanswer',_0x59a068);_0x7cfd02=_0x1caf30[_0xd4ce('0x1b0')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525['createHistory'](_0x422e42)[_0xd4ce('0xb9')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x428525[_0xd4ce('0x1c4')](0x3,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfb')]>=_0x1caf30[_0xd4ce('0x1af')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c7'));}else{_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1c7'));}}break;case'5':_0x1caf30['outboundBusyCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0x5;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1c8');_0x422e42[_0xd4ce('0x10a')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;ami[_0xd4ce('0x4f')](_0xd4ce('0x1c9'),ut[_0xd4ce('0xf4')](_0x10ec38,'busy'));_0x7cfd02=_0x1caf30[_0xd4ce('0x1b3')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1ca')));if(_0x428525[_0xd4ce('0x1c4')](0x5,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10a')]>=_0x1caf30[_0xd4ce('0x1b2')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cb'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cb'));}}break;case'8':_0x1caf30[_0xd4ce('0x65')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x8;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x1cc');_0x422e42['countcongestionretry']+=0x1;_0x422e42['countglobal']+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x1b5')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];ami['emit']('custom:agentcongestion',ut[_0xd4ce('0xf4')](_0x10ec38,'congestion'));_0x428525[_0xd4ce('0xe7')](_0x422e42)['catch'](loggerCatch(_0xd4ce('0x1cd')));if(_0x428525[_0xd4ce('0x1c4')](0x8,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfa')]>=_0x1caf30[_0xd4ce('0x1ce')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1cf'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,'reason\x208\x20congestion');}}break;case'11':_0x1caf30[_0xd4ce('0x1d0')]+=0x1;_0x422e42['state']=0xb;_0x422e42[_0xd4ce('0xb1')]=_0xd4ce('0x12a');_0x422e42[_0xd4ce('0x10d')]+=0x1;_0x422e42['countglobal']+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x12d')];_0x1a15e6=_0x1caf30['callAdditionalPhoneAfterMin'];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x133')));if(_0x428525[_0xd4ce('0x1c4')](0xb,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42['countabandonedretry']>=_0x1caf30['dialAbandonedMaxRetry']){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d1'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d1'));}}break;case'20':_0x1caf30[_0xd4ce('0x6d')]+=0x1;_0x422e42[_0xd4ce('0x106')]=0x14;_0x422e42['statedesc']='AgentReject';_0x422e42[_0xd4ce('0xfc')]+=0x1;_0x422e42[_0xd4ce('0xf7')]+=0x1;_0x7cfd02=_0x1caf30[_0xd4ce('0x1bb')];_0x1a15e6=_0x1caf30['callAdditionalPhoneAfterMin'];ami[_0xd4ce('0x4f')](_0xd4ce('0x1d2'),ut[_0xd4ce('0xf4')](_0x10ec38,_0xd4ce('0x1d3')));_0x428525[_0xd4ce('0xe7')](_0x422e42)['catch'](loggerCatch(_0xd4ce('0x1d4')));if(_0x428525['checkRetriveMax'](0x14,_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0xfc')]>=_0x1caf30[_0xd4ce('0x1ba')]){_0x428525[_0xd4ce('0x100')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d5'));}else{_0x428525[_0xd4ce('0x10e')](_0x422e42,_0x501587,_0x4d0118,_0xd4ce('0x1d5'));}}break;default:_0x1caf30['outboundUnknownCallsDay']+=0x1;_0x422e42[_0xd4ce('0x106')]=0xc;_0x422e42['statedesc']=_0x2df240[_0xd4ce('0x117')];_0x7cfd02=_0x1caf30[_0xd4ce('0x1bb')];_0x1a15e6=_0x1caf30[_0xd4ce('0x12e')];_0x428525[_0xd4ce('0xe7')](_0x422e42)[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x1d6')));if(_0x428525[_0xd4ce('0x1c4')](_0x2df240['reason'],_0x10ec38,_0x1caf30)&&!_0xbfa57d){if(_0x422e42[_0xd4ce('0x10a')]+_0x422e42[_0xd4ce('0xfa')]+_0x422e42[_0xd4ce('0xfb')]+_0x422e42[_0xd4ce('0x10b')]+_0x422e42[_0xd4ce('0x10c')]+_0x422e42['countabandonedretry']+_0x422e42['countmachineretry']+_0x422e42[_0xd4ce('0xfc')]>=_0x1caf30[_0xd4ce('0xfd')]){_0x428525['stateGlobal'](_0x422e42,_0x501587,_0x4d0118,_0x2df240[_0xd4ce('0x117')]);}else{_0x428525['createStateFinal'](_0x422e42,_0x501587,_0x4d0118,_0x2df240[_0xd4ce('0x117')]);}}}})[_0xd4ce('0xc0')](function(){if(_0xbfa57d){_0x428525['swapAdditionalPhones'](_0x422e42,_0x7cfd02,_0x1a15e6)['then'](function(){return _0x501587(0x1);});}});});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x10e')]=function(_0x18bec5,_0x292e87,_0x4673c0,_0x1b57c4){var _0x33f399=new Final(_0x18bec5);_0x33f399[_0xd4ce('0x106')]=0xf;_0x33f399[_0xd4ce('0xb1')]='Global';this['createStateFinal'](_0x33f399,_0x292e87,_0x4673c0,_0x1b57c4);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x100')]=function(_0x4eae8f,_0x46d77c,_0x174acc,_0x1ada94){this[_0xd4ce('0xd3')](_0x4eae8f)[_0xd4ce('0xc0')](function(){return _0x46d77c(msgResponse(_0xd4ce('0x1be'),_0xd4ce('0x1d7'),_0x1ada94));})[_0xd4ce('0xb9')](function(){return _0x174acc(msgResponse(_0xd4ce('0x1d8'),'Failure',_0xd4ce('0x1d9')));});};Dialer[_0xd4ce('0x1e')]['predictive']=function(_0x334f15){var _0x49f4a0=_0x334f15[_0xd4ce('0x1da')]/0x64;var _0x32ebeb=_0x334f15['outboundDropCallsDayTimeout']/(_0x334f15[_0xd4ce('0x68')]+_0x334f15['outboundAnswerCallsDay']);var _0x26ae9f=Math[_0xd4ce('0x1db')](_0x334f15[_0xd4ce('0x78')]*(_0x334f15[_0xd4ce('0x1dc')]/0x64));var _0x43511e=Math[_0xd4ce('0x1db')](_0x334f15[_0xd4ce('0x78')]*(_0x334f15['predictiveIntervalMinThreshold']/0x64));var _0x365c9e=_0x334f15[_0xd4ce('0x54')]+_0x334f15[_0xd4ce('0x58')];var _0x198781=Math[_0xd4ce('0x1dd')](_0x334f15['erlangCalls']*_0x334f15['erlangAbandonmentRate']*_0x334f15[_0xd4ce('0x1de')]*_0x334f15[_0xd4ce('0x76')]);if(_[_0xd4ce('0x41')](_0x334f15['startProgressive'])){if(!_[_0xd4ce('0x41')](_0x334f15[_0xd4ce('0x7e')])){_0x334f15['startPredictive']=undefined;loggerPredictive[_0xd4ce('0xa3')](_0xd4ce('0x1df'),_0xd4ce('0x1e0'));}if(!_['isUndefined'](_0x334f15[_0xd4ce('0x9c')])){loggerPredictive['error'](_0xd4ce('0x1df'),_0xd4ce('0x1e1'));clearInterval(_0x334f15[_0xd4ce('0x9c')]);_0x334f15[_0xd4ce('0x9c')]=undefined;}_0x334f15[_0xd4ce('0x2b')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1e2'),_0x334f15['startProgressive']);this['handlePower'](_0x334f15,0x1);}else if(ifInterval(_0x334f15['dialPredictiveInterval'],_0x334f15[_0xd4ce('0x2b')])){this[_0xd4ce('0x167')](_0x334f15,0x1);loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x1e3'),_0x334f15['startProgressive'],_0x334f15['name']);_0x334f15[_0xd4ce('0x7a')]=0x0;_0x334f15[_0xd4ce('0x75')]=0x0;}else if(_0x49f4a0<_0x32ebeb&&_0x334f15[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x1e6'),_0xd4ce('0x1e7'),_0x32ebeb,_0xd4ce('0x2b'),_0x334f15['name']);}else if(_0x198781<_0x334f15['predictiveIntervalErlangCallsDroppedCalls']&&_0x334f15[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x1e8'),_0xd4ce('0x1e9'),_0x198781,_0xd4ce('0x1ea'),_0x334f15['predictiveIntervalErlangCallsDroppedCalls'],'startProgressive',_0x334f15[_0xd4ce('0x44')]);}else if(!ifInterval(_0x334f15[_0xd4ce('0x1eb')],_0x334f15[_0xd4ce('0x2b')])&&_[_0xd4ce('0x41')](_0x334f15[_0xd4ce('0x7e')])&&!_[_0xd4ce('0x41')](_0x334f15['startProgressive'])){_0x334f15[_0xd4ce('0x7e')]=moment()[_0xd4ce('0x82')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1ec'),_0x334f15[_0xd4ce('0x7e')]);this['averageHandleTime'](_0x334f15[_0xd4ce('0x1eb')])['then'](this[_0xd4ce('0x1ed')](_0x334f15))[_0xd4ce('0xc0')](mergeDataErlangB(_0x334f15))['then'](this[_0xd4ce('0x1ee')](_0x334f15))['catch'](loggerCatchPredictive(_0xd4ce('0x1ef'),_0x334f15));}else if(!ifInterval(_0x334f15[_0xd4ce('0x1eb')],_0x334f15['startPredictive'])){_0x334f15[_0xd4ce('0x75')]=0x0;_0x334f15[_0xd4ce('0x7e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f0'),_0x334f15['startPredictive']);clearInterval(_0x334f15[_0xd4ce('0x9c')]);_0x334f15['handlePredictive']=undefined;this[_0xd4ce('0xc9')](_0x334f15[_0xd4ce('0x1eb')])[_0xd4ce('0xc0')](this[_0xd4ce('0x1ed')](_0x334f15))[_0xd4ce('0xc0')](mergeDataErlangB(_0x334f15))[_0xd4ce('0xc0')](this[_0xd4ce('0x1ee')](_0x334f15))[_0xd4ce('0xb9')](loggerCatchPredictive(_0xd4ce('0x1f1'),_0x334f15));}else if(_0x334f15['predictiveIntervalAvailable']&&_0x365c9e<_0x334f15[_0xd4ce('0x78')]-_0x43511e){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f2'),_0x365c9e,')\x20are\x20less\x20than\x20threshold\x20(',_0x334f15['predictiveIntervalAvailable'],'-',_0x43511e,'=',_0x334f15[_0xd4ce('0x78')]-_0x43511e,')');}else if(_0x334f15[_0xd4ce('0x78')]&&_0x365c9e>_0x334f15[_0xd4ce('0x78')]+_0x26ae9f){freeVariablesPredictive(_0x334f15);loggerPredictive[_0xd4ce('0x87')](_0x334f15[_0xd4ce('0x44')],_0xd4ce('0x1f2'),_0x365c9e,_0xd4ce('0x1f3'),_0x334f15[_0xd4ce('0x78')],'+',_0x26ae9f,'=',_0x334f15[_0xd4ce('0x78')]+_0x26ae9f,')');}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1ed')]=function(_0x6c9b10){var _0x533e9e=this;return function(_0x2d27d8){return new Promise(function(_0x101a0c,_0x70d1d0){_['merge'](_0x6c9b10,_0x2d27d8[0x0]);if(checkGetDataPredictive(_0x2d27d8[0x0])){var _0x3e97dc=_0x6c9b10[_0xd4ce('0x78')]=_0x6c9b10['talking']+_0x6c9b10[_0xd4ce('0x54')];var _0x359531=_0x6c9b10[_0xd4ce('0x1eb')]*0x3c;var _0x1929aa=_0x2d27d8[0x0][_0xd4ce('0x71')]+_0x2d27d8[0x0][_0xd4ce('0x70')];var _0x37e9bf=(_0x2d27d8[0x0][_0xd4ce('0x6f')]+_0x2d27d8[0x0][_0xd4ce('0x73')]+_0x2d27d8[0x0][_0xd4ce('0x72')])/_0x2d27d8[0x0][_0xd4ce('0x89')];_0x6c9b10[_0xd4ce('0x1de')]=_0x37e9bf>0x0?_0x37e9bf:0x1;switch(_0x6c9b10['dialPredictiveOptimization']){case _0xd4ce('0x1e5'):var _0x503b12=_0x6c9b10['dialPredictiveOptimizationPercentage']/0x64;return _0x533e9e[_0xd4ce('0x1f4')](_0x3e97dc,_0x359531,_0x1929aa,_0x37e9bf,_0x503b12)[_0xd4ce('0xc0')](function(_0x5e38c3){return _0x101a0c(_0x5e38c3);});case _0xd4ce('0x1f5'):var _0x1dd0d0=_0x6c9b10['dialPredictiveOptimizationPercentage']/0x64;return _0x533e9e[_0xd4ce('0x1f6')](_0x3e97dc,_0x359531,_0x1929aa,_0x37e9bf,_0x1dd0d0)[_0xd4ce('0xc0')](function(_0x599cc1){return _0x101a0c(_0x599cc1);});default:return _0x70d1d0(msgResponse('[getDataPredictive]',_0xd4ce('0x151'),_0xd4ce('0x1f7')));}}else{return _0x70d1d0(msgResponse('[getDataPredictive]',_0xd4ce('0x151'),_0xd4ce('0x1f8')));}});};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f9')]=function(_0xf882db){var _0x5880a1=this;return function(_0x185cd7){return new Promise(function(_0x51db1b,_0x388b64){_[_0xd4ce('0x98')](_0xf882db,_0x185cd7[0x0]);if(checkGetDataPredictive(_0x185cd7[0x0])){loggerPredictive[_0xd4ce('0x87')](JSON[_0xd4ce('0x4c')](_0x185cd7[0x0]));if(_0xf882db[_0xd4ce('0x1e4')]===_0xd4ce('0x1e5')){return _0x5880a1['getVoiceQueueRtPauses'](_0xf882db['id'])[_0xd4ce('0xc0')](function(_0x116b69){var _0x1ab827=_0xf882db['loggedIn']-_0x116b69[0x0][_0xd4ce('0x1fa')];var _0x12f9f9=_0xf882db[_0xd4ce('0x1eb')]*0x3c;var _0x43e20c=_0x185cd7[0x0][_0xd4ce('0x71')]+_0x185cd7[0x0][_0xd4ce('0x70')];var _0x40d9c7=(_0x185cd7[0x0][_0xd4ce('0x6f')]+_0x185cd7[0x0][_0xd4ce('0x73')]+_0x185cd7[0x0][_0xd4ce('0x72')])/_0x185cd7[0x0][_0xd4ce('0x89')];var _0x21ead8=_0xf882db[_0xd4ce('0x1da')]/0x64;_0xf882db['predictiveIntervalPauses']=_0x116b69[0x0][_0xd4ce('0x1fa')]||0x0;_0xf882db['predictiveIntervalHitRate']=_0x40d9c7>0x0?_0x40d9c7:0x1;return _0x5880a1[_0xd4ce('0x1f4')](_0x1ab827,_0x12f9f9,_0x43e20c,_0x40d9c7,_0x21ead8);})[_0xd4ce('0xc0')](function(_0x5e197d){return _0x51db1b(_0x5e197d);})['catch'](function(_0x128734){return _0x388b64(msgResponse(_0xd4ce('0x1fb'),'Failure',JSON[_0xd4ce('0x4c')](_0x128734)));});}if(_0xf882db['dialPredictiveOptimization']===_0xd4ce('0x1f5')){return _0x5880a1[_0xd4ce('0xd2')](_0xf882db['id'])[_0xd4ce('0xc0')](function(_0x1106e6){var _0x252bf8=_0xf882db[_0xd4ce('0x55')]-_0x1106e6[0x0][_0xd4ce('0x1fa')];var _0x2cd72d=_0xf882db[_0xd4ce('0x1eb')]*0x3c;var _0x4e8458=_0x185cd7[0x0][_0xd4ce('0x71')]+_0x185cd7[0x0][_0xd4ce('0x70')];var _0x4e9989=(_0x185cd7[0x0][_0xd4ce('0x6f')]+_0x185cd7[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x185cd7[0x0][_0xd4ce('0x72')])/_0x185cd7[0x0]['predictiveIntervalTotalCalls'];var _0x4f08f8=_0xf882db[_0xd4ce('0x1da')]/0x64;_0xf882db[_0xd4ce('0x77')]=_0x1106e6[0x0][_0xd4ce('0x1fa')]||0x0;_0xf882db[_0xd4ce('0x1de')]=_0x4e9989>0x0?_0x4e9989:0x1;return _0x5880a1['busyFactor'](_0x252bf8,_0x2cd72d,_0x4e8458,_0x4e9989,_0x4f08f8);})[_0xd4ce('0xc0')](function(_0x552261){return _0x51db1b(_0x552261);})['catch'](function(_0x58ff7c){return _0x388b64(msgResponse(_0xd4ce('0x1fb'),_0xd4ce('0x151'),JSON[_0xd4ce('0x4c')](_0x58ff7c)));});}}else{return _0x388b64(msgResponse(_0xd4ce('0x1fc'),'Failure',_0xd4ce('0x1f8')));}});};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1ee')]=function(_0x1c6643){var _0x241c61=this;return function(){var _0x293019=0x0;var _0x59ff4f=Math[_0xd4ce('0x1dd')](_0x1c6643[_0xd4ce('0x7b')]*0x3e8);if(_0x59ff4f>0x0){_0x59ff4f=_0x59ff4f<0x64?0x64:_0x59ff4f;loggerPredictive[_0xd4ce('0x87')](_0x1c6643[_0xd4ce('0x44')],_0xd4ce('0x1fd'),_0x59ff4f,_0xd4ce('0x4d'));_0x1c6643[_0xd4ce('0x9c')]=setInterval(function(){_0x241c61[_0xd4ce('0x9c')](_0x1c6643);loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x1fe'),_0x293019+=0x1);},_0x59ff4f);}else{loggerPredictive[_0xd4ce('0x87')](_0x1c6643[_0xd4ce('0x44')],_0xd4ce('0x1ff'));}};};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x200')]=function(_0xd24f9d,_0x2b814e){var _0x1805c8=this;return function(_0x1c08b3){if(_[_0xd4ce('0x4b')](_0x1c08b3)){if(_[_0xd4ce('0xb7')](_0x2b814e[_0xd4ce('0xdd')])||!_0x2b814e['recallme']){if(_0xd24f9d[_0xd4ce('0x5e')]==='booked'){_0xd24f9d[_0xd4ce('0x13c')]=_[_0xd4ce('0x41')](_0xd24f9d[_0xd4ce('0x13c')])?!![]:_0xd24f9d[_0xd4ce('0x13c')];var _0x17ab94=uuid['v4']();_0x1805c8[_0xd4ce('0xb5')][_0x17ab94]=new Action(_0xd24f9d,_0x2b814e,_0x17ab94);loggerBooked['info'](_0xd4ce('0x201'),_0x17ab94,_0xd4ce('0x202'),JSON[_0xd4ce('0x4c')](_0xd24f9d['queueStatusComplete']),_0xd4ce('0x203'),_0xd24f9d[_0xd4ce('0x44')]);if(_0xd24f9d[_0xd4ce('0x13c')]){_0xd24f9d[_0xd4ce('0x13c')]=![];_0x1805c8['queueBooked'][_0x1805c8['actions'][_0x17ab94][_0xd4ce('0xbc')]]=[];ami[_0xd4ce('0x15d')]({'actionid':_0x17ab94,'action':_0xd4ce('0x204'),'queue':_0xd24f9d[_0xd4ce('0x44')]})[_0xd4ce('0xb9')](function(){_0x1805c8['updateOriginated'](_0xd24f9d);_0x1805c8[_0xd4ce('0xcc')]({'active':![],'ContactId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdb')],'ListId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdc')],'VoiceQueueId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xde')]||undefined,'CampaignId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdf')]||undefined})[_0xd4ce('0xb9')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1805c8[_0xd4ce('0xb5')][_0x17ab94];});}else{loggerBooked[_0xd4ce('0x87')](_0xd4ce('0x205'),JSON[_0xd4ce('0x4c')](_0xd24f9d[_0xd4ce('0x13c')]),_0xd4ce('0x203'),_0xd24f9d[_0xd4ce('0x44')]);_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);_0x1805c8['rescheduleContact']({'active':![],'ContactId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdb')],'ListId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xdc')],'VoiceQueueId':_0x1805c8[_0xd4ce('0xb5')][_0x17ab94][_0xd4ce('0xde')]||undefined,'CampaignId':_0x1805c8['actions'][_0x17ab94]['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x206')));delete _0x1805c8[_0xd4ce('0xb5')][_0x17ab94];}}else{return _0x1805c8['actionOriginate'](_0xd24f9d,_0x2b814e);}}else{if(getDiff(_0x2b814e[_0xd4ce('0x207')])<_0xd24f9d['dialRecallMeTimeout']*0x3c){if(_0x2b814e[_0xd4ce('0x177')]&&!_0x2b814e[_0xd4ce('0x177')][_0xd4ce('0x208')]){_0x1805c8[_0xd4ce('0x13f')][_0xd4ce('0x140')](_0x2b814e['id'])[_0xd4ce('0x21')](function(){_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);});}else{_0x1805c8[_0xd4ce('0xcd')]({'active':![]},_0x2b814e['id'],0x1)[_0xd4ce('0x21')](function(){_0x1805c8[_0xd4ce('0xbb')](_0xd24f9d);});}}else{_0xd24f9d[_0xd4ce('0x6c')]+=0x1;_0x1805c8['updateOriginated'](_0xd24f9d);if(_0xd24f9d['dialRecallInQueue']){_0x1805c8[_0xd4ce('0xcc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2b814e['ContactId'],'ListId':_0x2b814e[_0xd4ce('0xdc')],'VoiceQueueId':_0x2b814e[_0xd4ce('0xde')]||undefined,'CampaignId':_0x2b814e['CampaignId']||undefined})[_0xd4ce('0xb9')](loggerCatch(_0xd4ce('0x209')));_0x1805c8['createHistory'](createObjHistory(_0xd24f9d,_0x2b814e,_0xd4ce('0x20a'),0x17,_0xd4ce('0x20b')))['catch'](loggerCatch(_0xd4ce('0x20c')));}else{_0x1805c8[_0xd4ce('0xd9')](createObjHistory(_0xd24f9d,_0x2b814e,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0xd4ce('0x20d'),_0xd4ce('0x20e'));}}}}else{_0xd24f9d[_0xd4ce('0x20f')]+=0x1;_0x1805c8['saveInDb'](createObjHistory(_0xd24f9d,_0x2b814e,_0xd4ce('0x210'),0xd,_0xd4ce('0x211')),'[Originate][historyBlacklist]',_0xd4ce('0x212'));throw _0xd4ce('0x213');}};};Dialer[_0xd4ce('0x1e')]['handleIvr']=function(_0x3bf6c8){var _0x23d7c7=this;var _0x54e0f4=_0x3bf6c8[_0xd4ce('0x214')]-_0x3bf6c8[_0xd4ce('0x79')]-_0x3bf6c8[_0xd4ce('0xd0')];emitCampaignSummary(_0x3bf6c8);if(_0x54e0f4>0x0){if(_0x54e0f4>this['maxNumberOriginate']){_0x54e0f4=this['maxNumberOriginate'];}_0x3bf6c8[_0xd4ce('0xd0')]+=_0x54e0f4;this[_0xd4ce('0xd1')](_0x3bf6c8['id'],_0x54e0f4,_0x3bf6c8[_0xd4ce('0x215')],_0x3bf6c8)['then'](function(_0x2d2d72){_0x3bf6c8[_0xd4ce('0xd0')]-=_0x54e0f4;_0x3bf6c8[_0xd4ce('0xd0')]=_0x3bf6c8[_0xd4ce('0xd0')]>0x0?_0x3bf6c8[_0xd4ce('0xd0')]:0x0;if(!checkContactEmpty(_0x2d2d72)){_0x3bf6c8[_0xd4ce('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xd4ce('0x87')](_0xd4ce('0x216')+_0x3bf6c8['name']);}else{_0x3bf6c8['originated']+=_0x2d2d72[_0xd4ce('0xa5')];_0x3bf6c8['message']='RUNNING';for(var _0x472cc=0x0;_0x472cc<_0x2d2d72[_0xd4ce('0xa5')];_0x472cc+=0x1){_0x3bf6c8[_0xd4ce('0x217')]+=0x1;if(_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc])||_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc][_0xd4ce('0x199')])||_[_0xd4ce('0xb7')](_0x2d2d72[_0x472cc][_0xd4ce('0x180')])){_0x23d7c7[_0xd4ce('0xd7')](_0xd4ce('0x218'),_0x3bf6c8,_0x2d2d72[_0x472cc]);}else{_0x23d7c7[_0xd4ce('0x219')](_[_0xd4ce('0xda')](_0x2d2d72[_0x472cc],[_0xd4ce('0xdf'),_0xd4ce('0x180')]))[_0xd4ce('0xc0')](_0x23d7c7['checkContactBlack'](_0x3bf6c8,_0x2d2d72[_0x472cc]))[_0xd4ce('0xb9')](_0x23d7c7[_0xd4ce('0x21a')](_0xd4ce('0x21b'),_0x3bf6c8));}}}})[_0xd4ce('0xb9')](loggerGetContactDialer(_0xd4ce('0x21c'),_0x3bf6c8,_0x54e0f4));}};Dialer[_0xd4ce('0x1e')]['handlePower']=function(_0x5516e4,_0x1a56f6){var _0x2c29ec=this;var _0x1f8f44=[];var _0x31688c=_0x1a56f6>=0x1?_0x1a56f6:0x1;if(_0x5516e4[_0xd4ce('0x5e')]==='booked'){_0x31688c=0x1;}var _0x499e58=Math[_0xd4ce('0x1dd')](_0x5516e4[_0xd4ce('0x54')]*_0x31688c)-_0x5516e4[_0xd4ce('0x79')]-_0x5516e4['temp'];emitVoiceQueueSummary(_0x5516e4);if(_0x5516e4[_0xd4ce('0x21d')]>0x0){var _0x4d364b=_0x5516e4[_0xd4ce('0x21d')]-_0x5516e4[_0xd4ce('0x79')]-_0x5516e4['talking']-_0x5516e4['temp']-_0x5516e4[_0xd4ce('0x56')];if(_0x499e58>_0x4d364b){_0x499e58=_0x4d364b;}}if(_0x499e58>0x0){if(_0x5516e4[_0xd4ce('0x5e')]===_0xd4ce('0x9')){_0x499e58=0x1;}if(_0x499e58>this[_0xd4ce('0x27')]){_0x499e58=this[_0xd4ce('0x27')];}_0x5516e4[_0xd4ce('0xd0')]+=_0x499e58;for(var _0x2a24c1 in this[_0xd4ce('0x25')]){if(typeof this['agents'][_0x2a24c1]!=='undefined'){if(this['agents'][_0x2a24c1][_0xd4ce('0x106')]===_0xd4ce('0x21e')&&this[_0xd4ce('0x25')][_0x2a24c1][_0xd4ce('0xe5')]===_0xd4ce('0xe3')){_0x1f8f44[_0xd4ce('0x13a')](this['agents'][_0x2a24c1]['id']);}}}this[_0xd4ce('0xcf')](_0x5516e4['id'],_0x1f8f44,_0x499e58,_0x5516e4['dialOrderByScheduledAt'],_0x5516e4)[_0xd4ce('0xc0')](function(_0x5418de){_0x5516e4[_0xd4ce('0xd0')]-=_0x499e58;_0x5516e4[_0xd4ce('0xd0')]=_0x5516e4[_0xd4ce('0xd0')]>0x0?_0x5516e4[_0xd4ce('0xd0')]:0x0;if(!checkContactEmpty(_0x5418de)){_0x2c29ec['countReScheduled'](_0x5516e4)[_0xd4ce('0xc0')](sendMessageReschedule(_0x5516e4))[_0xd4ce('0xb9')](loggerCatch('[countReScheduled]\x20'));}else{_0x5516e4[_0xd4ce('0x79')]+=_0x5418de[_0xd4ce('0xa5')];_0x5516e4[_0xd4ce('0x42')]=_0x5516e4[_0xd4ce('0x5e')]===_0xd4ce('0x9')?'ACTIVE':_0xd4ce('0x21f');for(var _0x2f33fe=0x0;_0x2f33fe<_0x5418de[_0xd4ce('0xa5')];_0x2f33fe+=0x1){if(_['isNil'](_0x5418de[_0x2f33fe])||_[_0xd4ce('0xb7')](_0x5418de[_0x2f33fe][_0xd4ce('0x199')])||_[_0xd4ce('0xb7')](_0x5418de[_0x2f33fe]['phone'])){_0x2c29ec[_0xd4ce('0xd7')]('[actionOriginate]\x20',_0x5516e4,_0x5418de[_0x2f33fe]);}else{_0x2c29ec['checkIsBlackList'](_[_0xd4ce('0xda')](_0x5418de[_0x2f33fe],['VoiceQueueId',_0xd4ce('0x180')]))['then'](_0x2c29ec[_0xd4ce('0x200')](_0x5516e4,_0x5418de[_0x2f33fe]))['catch'](_0x2c29ec[_0xd4ce('0x21a')](_0xd4ce('0x218'),_0x5516e4));}}}})[_0xd4ce('0xb9')](loggerGetContactDialer(_0xd4ce('0x220'),_0x5516e4,_0x499e58));}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x9c')]=function(_0x4ffb2f){if(_0x4ffb2f[_0xd4ce('0x21d')]>0x0){var _0x277509=_0x4ffb2f[_0xd4ce('0x21d')]-_0x4ffb2f['originated']-_0x4ffb2f['talking'];if(_0x277509>0x0){this[_0xd4ce('0x221')](_0x4ffb2f);}else{loggerPredictiveCalls[_0xd4ce('0x87')](_0xd4ce('0x222'));}}else{this['tryOriginatePredictive'](_0x4ffb2f);}};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x221')]=function(_0x29b56c){var _0x3db1e8=this;var _0x5176aa=[];_0x29b56c[_0xd4ce('0x79')]+=0x1;for(var _0x1e07e3 in this['agents']){if(typeof this['agents'][_0x1e07e3]!==_0xd4ce('0xa6')){if(this[_0xd4ce('0x25')][_0x1e07e3][_0xd4ce('0x106')]===_0xd4ce('0x21e')&&this[_0xd4ce('0x25')][_0x1e07e3][_0xd4ce('0xe5')]==='reachable'){_0x5176aa['push'](this[_0xd4ce('0x25')][_0x1e07e3]['id']);}}}this[_0xd4ce('0xcf')](_0x29b56c['id'],_0x5176aa,0x1,_0x29b56c[_0xd4ce('0x215')],_0x29b56c)[_0xd4ce('0xc0')](function(_0x5bdf4a){if(!checkContactEmpty(_0x5bdf4a)){checkContactLowerLimitOriginate(_0x29b56c,0x1,0x0);_0x3db1e8[_0xd4ce('0xbf')](_0x29b56c)[_0xd4ce('0xc0')](sendMessageReschedule(_0x29b56c))[_0xd4ce('0xb9')](loggerCatch('[countReScheduled]\x20'));}else{_0x29b56c[_0xd4ce('0x42')]=_0xd4ce('0x21f');if(_['isNil'](_0x5bdf4a[0x0])||_['isNil'](_0x5bdf4a[0x0]['Contact'])||_['isNil'](_0x5bdf4a[0x0][_0xd4ce('0x180')])){_0x3db1e8[_0xd4ce('0xd7')](_0xd4ce('0x218'),_0x29b56c,_0x5bdf4a[0x0]);}else{_0x3db1e8[_0xd4ce('0xc2')](_[_0xd4ce('0xda')](_0x5bdf4a[0x0],[_0xd4ce('0xde'),_0xd4ce('0x180')]))[_0xd4ce('0xc0')](_0x3db1e8[_0xd4ce('0x200')](_0x29b56c,_0x5bdf4a[0x0]))[_0xd4ce('0xb9')](_0x3db1e8[_0xd4ce('0x21a')]('[actionOriginatePredictive]\x20',_0x29b56c));}}})[_0xd4ce('0xb9')](loggerGetContactDialer('[getContactDialerPredictive]',_0x29b56c,0x1));emitVoiceQueueSummary(_0x29b56c);};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f4')]=function(_0x1a9cc2,_0x592097,_0x2bfc71,_0x515b2b,_0x5a41c7,_0x2eca93){loggerPredictive['info'](_0xd4ce('0x223'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x224'),_0x1a9cc2);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x225'),_0x592097);loggerPredictive[_0xd4ce('0x87')]('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',_0x2bfc71);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x226'),_0x515b2b);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x227'),_0x5a41c7);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));return new Promise(function(_0x5e5697,_0x3634b7){if(_0x1a9cc2<=0x0||isNaN(_0x1a9cc2)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),'Error','m\x20=\x20'+_0x1a9cc2));}if(_0x2bfc71<=0x0||isNaN(_0x2bfc71)){return _0x3634b7(msgResponse('[abandonmentRate]',_0xd4ce('0x1a9'),_0xd4ce('0x229')+_0x2bfc71));}if(_0x515b2b<=0x0||isNaN(_0x515b2b)){return _0x3634b7(msgResponse('[abandonmentRate]',_0xd4ce('0x1a9'),'p\x20=\x20'+_0x515b2b));}if(_0x592097<=0x0||isNaN(_0x592097)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),_0xd4ce('0x1a9'),_0xd4ce('0x22a')+_0x592097));}if(_0x5a41c7<=0x0||isNaN(_0x5a41c7)){return _0x3634b7(msgResponse(_0xd4ce('0x228'),_0xd4ce('0x1a9'),_0xd4ce('0x22b')+_0x5a41c7));}_0x2eca93=_0x2eca93||0x0;var _0x52eebb=0x1/_0x2bfc71;var _0x346c4c=0x0;var _0x38f647=0x0;var _0x593f9d=0x0;var _0x216e0e=0x0;for(var _0x988478=0x0;_0x593f9d<_0x5a41c7;_0x988478+=0x1){_0x38f647=_0x988478/_0x592097;_0x346c4c=(_0x515b2b*_0x38f647+_0x2eca93)/_0x52eebb;_0x593f9d=erlangb(_0x346c4c,_0x1a9cc2);_0x216e0e=_0x346c4c/_0x1a9cc2*(0x1-erlangb(_0x346c4c,_0x1a9cc2));}return _0x5e5697({'erlangCalls':_0x988478,'erlangCallToSecond':_0x592097/_0x988478,'erlangAbandonmentRate':_0x593f9d,'erlangBusyFactor':_0x216e0e});});};Dialer[_0xd4ce('0x1e')][_0xd4ce('0x1f6')]=function(_0x325e71,_0x5cbd9b,_0x5897ad,_0xc589b7,_0x79a353,_0x427bc4){loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x22c'));loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x224'),_0x325e71);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x225'),_0x5cbd9b);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x22d'),_0x5897ad);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x226'),_0xc589b7);loggerPredictive[_0xd4ce('0x87')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x79a353);loggerPredictive[_0xd4ce('0x87')](_0xd4ce('0x8e'));return new Promise(function(_0x4c961b,_0x2e23c3){if(_0x325e71<=0x0||isNaN(_0x325e71)){return _0x2e23c3(msgResponse('[busyFactor]',_0xd4ce('0x1a9'),_0xd4ce('0x22e')+_0x325e71));}if(_0x5897ad<=0x0||isNaN(_0x5897ad)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),'Error',_0xd4ce('0x229')+_0x5897ad));}if(_0xc589b7<=0x0||isNaN(_0xc589b7)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),_0xd4ce('0x1a9'),_0xd4ce('0x230')+_0xc589b7));}if(_0x5cbd9b<=0x0||isNaN(_0x5cbd9b)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),_0xd4ce('0x1a9'),_0xd4ce('0x22a')+_0x5cbd9b));}if(_0x79a353<=0x0||isNaN(_0x79a353)){return _0x2e23c3(msgResponse(_0xd4ce('0x22f'),'Error',_0xd4ce('0x231')+_0x79a353));}_0x427bc4=_0x427bc4||0x0;var _0x2dde8d=0x1/_0x5897ad;var _0xd62c5=0x0;var _0x46a78a=0x0;var _0x44b1c3=0x0;var _0xf93b5e=0x0;for(var _0x2f5681=0x0;_0xf93b5e<_0x79a353;_0x2f5681+=0x1){_0x46a78a=_0x2f5681/_0x5cbd9b;_0xd62c5=(_0xc589b7*_0x46a78a+_0x427bc4)/_0x2dde8d;_0x44b1c3=erlangb(_0xd62c5,_0x325e71);_0xf93b5e=_0xd62c5/_0x325e71*(0x1-erlangb(_0xd62c5,_0x325e71));}return _0x4c961b({'erlangCalls':_0x2f5681,'erlangCallToSecond':_0x5cbd9b/_0x2f5681,'erlangAbandonmentRate':_0x44b1c3,'erlangBusyFactor':_0xf93b5e});});};module[_0xd4ce('0x232')]=Dialer;
\ No newline at end of file
+var _0xf554=['countdropretry','countagentrejectretry','createStateFinal','dialMachineRetryFrequency','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','outboundAnswerCallsDay','AGI','[syncHangupIvr][createHistory]','Unknow','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialDropRetryFrequency','voiceQueue','additional','dialDropMaxRetry','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','Abandoned','CALLEREXIT','callAdditionalPhoneAfterMin','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[syncAgentComplete][createHistory][11]','actionid','strategy','locked','paused','stateinterface','queueBooked','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','finally','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','content','indexOf','true','iftime\x20%s,%s','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','checkPreviewRecallReminder','Agent','user:%s','user:dialPreviewRecallReminder','handleIvr','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','throttle','filter','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','dialGlobalInterval','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','NONE','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','getCaller','ACTIVE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','[rescheduleContact][Abandoned]','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','not_inuse','[countReScheduled]\x20','checkIsBlackList','[getContactDialer2]','dialLimitQueue','[handlePredictive][limitChannel]','tryOriginatePredictive','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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]','Ts\x20=\x20','util','lodash','moment','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','./history','./final','./agentComplete','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','syncNewExten','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','name','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','stringify','milliseconds','diff','seconds','emit','type','outbound','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','predictiveIntervalTotalCalls','isUndefined','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','debug','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','undefined','isNil','Action','status','channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','catch','[checkIsBlackList]\x20','verifyAdditionalPhones','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','saveInDb','pick','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','reachable','SIP/%s','unmonitored','xcally-motion-dialer','value','HANGUP','uniqueid','outboundAnswerAgiCallsDay','state','HangupInAMD','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','countmachineretry','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','membername','countglobal','countnosuchnumberretry'];(function(_0x10e7f3,_0x1514e8){var _0x4728c4=function(_0x1c87f4){while(--_0x1c87f4){_0x10e7f3['push'](_0x10e7f3['shift']());}};_0x4728c4(++_0x1514e8);}(_0xf554,0x130));var _0x4f55=function(_0x388769,_0x4e2945){_0x388769=_0x388769-0x0;var _0x8c0bc7=_0xf554[_0x388769];return _0x8c0bc7;};'use strict';var util=require(_0x4f55('0x0'));var _=require(_0x4f55('0x1'));var uuid=require('uuid');var moment=require(_0x4f55('0x2'));var rr=require('rr');var md5=require(_0x4f55('0x3'));var Redis=require(_0x4f55('0x4'));var ut=require('../preview/util/util');var config=require(_0x4f55('0x5'));var logger=require(_0x4f55('0x6'))(_0x4f55('0x7'));var loggerBooked=require(_0x4f55('0x6'))(_0x4f55('0x8'));var loggerPredictive=require(_0x4f55('0x6'))(_0x4f55('0x9'));var loggerPredictiveCalls=require('../../../config/logger')('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0x4f55('0xa'));var ami=require('../ami');config[_0x4f55('0xb')]=_[_0x4f55('0xc')](config[_0x4f55('0xb')],{'host':_0x4f55('0xd'),'port':0x18eb});var io=require(_0x4f55('0xe'))(new Redis(config['redis']));var cmHopper=require(_0x4f55('0xf'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperAdditionalPhone=require(_0x4f55('0x10'));var cmHopperBlack=require(_0x4f55('0x11'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require('../rpc/setting');var Action=require('./action');var History=require(_0x4f55('0x12'));var Final=require(_0x4f55('0x13'));var AgentComplete=require(_0x4f55('0x14'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require(_0x4f55('0x15'));var ipAgi=process[_0x4f55('0x16')][_0x4f55('0x17')]||_0x4f55('0x18');var strategy={'rrmemory':_0x4f55('0x19'),'roundrobin':_0x4f55('0x1a')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x4f55('0x1b')][_0x4f55('0x1c')]=function(_0x320625){this['tail']=this[_0x4f55('0x1d')]?this['tail']['finally'](_0x320625):_0x320625();};function Dialer(_0x5a4bb3,_0x43b77c){this[_0x4f55('0x1e')]=new Sequence();this[_0x4f55('0x1f')]=_0x43b77c;this[_0x4f55('0x20')]=_0x5a4bb3[_0x4f55('0x20')];this[_0x4f55('0x21')]=_0x5a4bb3['campaigns'];this[_0x4f55('0x22')]=_0x5a4bb3[_0x4f55('0x22')];this[_0x4f55('0x23')]=_0x5a4bb3[_0x4f55('0x23')];this[_0x4f55('0x24')]=config['maxNumberOriginate']||0x2;this[_0x4f55('0x25')]={};this[_0x4f55('0x26')]={};this[_0x4f55('0x27')]={};this[_0x4f55('0x28')]={};this[_0x4f55('0x29')]={};this[_0x4f55('0x2a')]={};this['startProgressive']={};this[_0x4f55('0x2b')]={};this['queueBooked']={};this[_0x4f55('0x2c')]={};ami['on'](_0x4f55('0x2d'),this[_0x4f55('0x2e')]['bind'](this));ami['on'](_0x4f55('0x2f'),this[_0x4f55('0x30')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x32'),this[_0x4f55('0x33')]['bind'](this));ami['on'](_0x4f55('0x34'),this[_0x4f55('0x35')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x36'),this[_0x4f55('0xa')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x37'),this[_0x4f55('0x38')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x39'),this[_0x4f55('0x3a')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x3b'),this[_0x4f55('0x3c')][_0x4f55('0x31')](this));ami['on']('varset',this[_0x4f55('0x3d')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x3e'),this[_0x4f55('0x3f')][_0x4f55('0x31')](this));ami['on'](_0x4f55('0x40'),this[_0x4f55('0x41')]['bind'](this));this[_0x4f55('0x42')]();this[_0x4f55('0x43')]();RpcSetting[_0x4f55('0x44')]()[_0x4f55('0x45')](function(_0x258ad7){previewRecallmeReminderInterval=_0x258ad7[_0x4f55('0x46')];});}function isNotNull(_0x5a4ce4){return _0x5a4ce4!==null&&!_['isUndefined'](_0x5a4ce4);}function checkIsLoggedIn(_0x4331a8,_0x1e4b1f){return function(){if(_0x1e4b1f<=0x0){_0x4331a8[_0x4f55('0x47')]=_0x4f55('0x48');throw _0x4331a8['name']+_0x4f55('0x49');}};}function isActive(_0x534a9d){return _0x534a9d;}function checkIsActive(_0x547042,_0x48cab5){return function(){if(!isActive(_0x48cab5)){_0x547042[_0x4f55('0x47')]=_0x4f55('0x4a');throw _0x547042['name']+_0x4f55('0x4b');}};}function checkInterval(_0x323a49){return function(){if(!isNotNull(_0x323a49[_0x4f55('0x4c')])){_0x323a49[_0x4f55('0x47')]=_0x4f55('0x4d');throw _0x323a49[_0x4f55('0x4e')]+_0x4f55('0x4f');}if(!isNotNull(_0x323a49[_0x4f55('0x4c')][_0x4f55('0x50')])){_0x323a49[_0x4f55('0x47')]=_0x4f55('0x4d');throw _0x323a49[_0x4f55('0x4e')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x4f55('0x51')](_0x323a49['Interval'][_0x4f55('0x50')]))){_0x323a49[_0x4f55('0x47')]=_0x4f55('0x4d');throw _0x323a49[_0x4f55('0x4e')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x26a04f,_0x268a0b,_0xc86094){return{'action':_0x26a04f,'response':_0x268a0b,'message':_0xc86094,'stack':_0xc86094};}function myreject(_0x296a2e){return function(_0x14833a){return _0x296a2e(msgResponse(_0x4f55('0x52'),'Error',JSON[_0x4f55('0x53')](_0x14833a)));};}function getSeconds(_0x462451,_0x3cfd9c){var _0x3d2613=moment(_0x462451)[_0x4f55('0x54')](0x0);var _0x42c3df=moment(_0x3cfd9c)['milliseconds'](0x0);return _0x3d2613[_0x4f55('0x55')](_0x42c3df,_0x4f55('0x56'));}function emit(_0x5d3ee5,_0x5f534b,_0xf05586){io['to'](_0x5d3ee5)[_0x4f55('0x57')](_0x5f534b,_0xf05586);}function emitVoiceQueueSummary(_0x3b684d){if(_0x3b684d[_0x4f55('0x58')]===_0x4f55('0x59')){var _0x34d302={'id':_0x3b684d['id'],'name':_0x3b684d[_0x4f55('0x4e')],'strategy':_0x3b684d['strategy'],'answered':_0x3b684d[_0x4f55('0x5a')],'available':_0x3b684d[_0x4f55('0x5b')],'loggedIn':_0x3b684d[_0x4f55('0x5c')],'pTalking':_0x3b684d[_0x4f55('0x5d')],'sumBillable':_0x3b684d['sumBillable'],'sumDuration':_0x3b684d[_0x4f55('0x5e')],'sumHoldTime':_0x3b684d[_0x4f55('0x5f')]||0x0,'talking':_0x3b684d[_0x4f55('0x60')],'total':_0x3b684d[_0x4f55('0x61')],'type':_0x3b684d[_0x4f55('0x58')],'unmanaged':_0x3b684d['unmanaged'],'abandoned':_0x3b684d[_0x4f55('0x62')],'waiting':_0x3b684d[_0x4f55('0x63')],'loggedInDb':_0x3b684d[_0x4f55('0x64')],'dialActive':_0x3b684d[_0x4f55('0x65')],'dialMethod':_0x3b684d[_0x4f55('0x66')],'dialOriginateCallerIdName':_0x3b684d[_0x4f55('0x67')],'dialOriginateCallerIdNumber':_0x3b684d[_0x4f55('0x68')],'dialOriginateTimeout':_0x3b684d[_0x4f55('0x69')],'dialPrefix':_0x3b684d[_0x4f55('0x6a')],'outboundAnswerAgiCallsDay':_0x3b684d['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3b684d['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x3b684d[_0x4f55('0x6b')],'outboundBusyCallsDay':_0x3b684d['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x3b684d[_0x4f55('0x6c')],'outboundDropCallsDayACS':_0x3b684d[_0x4f55('0x6d')],'outboundDropCallsDayCallersExit':_0x3b684d[_0x4f55('0x6e')],'outboundDropCallsDayTimeout':_0x3b684d[_0x4f55('0x6f')],'outboundNoAnswerCallsDay':_0x3b684d[_0x4f55('0x70')],'outboundNoSuchCallsDay':_0x3b684d[_0x4f55('0x71')],'outboundOriginateFailureCallsDay':_0x3b684d[_0x4f55('0x72')],'outboundReCallsDay':_0x3b684d[_0x4f55('0x73')],'outboundRejectCallsDay':_0x3b684d[_0x4f55('0x74')],'outboundUnknownCallsDay':_0x3b684d[_0x4f55('0x75')],'predictiveIntervalAnsweredCalls':_0x3b684d[_0x4f55('0x76')],'predictiveIntervalAvgHoldtime':_0x3b684d[_0x4f55('0x77')],'predictiveIntervalAvgTalktime':_0x3b684d['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x3b684d[_0x4f55('0x78')],'predictiveIntervalDroppedCallsTimeout':_0x3b684d['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x3b684d[_0x4f55('0x79')],'predictiveIntervalErlangCallsDroppedCalls':_0x3b684d[_0x4f55('0x7a')],'predictiveIntervalHitRate':_0x3b684d[_0x4f55('0x7b')],'predictiveIntervalMultiplicativeFactor':_0x3b684d[_0x4f55('0x7c')],'predictiveIntervalPauses':_0x3b684d['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3b684d[_0x4f55('0x7d')],'predictiveIntervalTotalCalls':_0x3b684d['predictiveIntervalTotalCalls'],'message':_0x3b684d[_0x4f55('0x47')],'originated':_0x3b684d[_0x4f55('0x7e')],'erlangCalls':_0x3b684d[_0x4f55('0x7f')],'erlangCallToSecond':_0x3b684d['erlangCallToSecond'],'erlangAbandonmentRate':_0x3b684d[_0x4f55('0x80')],'erlangBusyFactor':_0x3b684d[_0x4f55('0x81')],'startPredictive':_0x3b684d['startPredictive'],'startProgressive':_0x3b684d[_0x4f55('0x82')]};if(_0x3b684d[_0x4f55('0x83')]){_0x34d302[_0x4f55('0x83')]={'id':_0x3b684d[_0x4f55('0x83')]['id'],'name':_0x3b684d[_0x4f55('0x83')][_0x4f55('0x4e')],'active':_0x3b684d[_0x4f55('0x83')][_0x4f55('0x84')],'callerid':_0x3b684d[_0x4f55('0x83')][_0x4f55('0x85')]};}if(_0x3b684d['Interval']){_0x34d302['Interval']={'id':_0x3b684d['Interval']['id'],'name':_0x3b684d['Interval'][_0x4f55('0x4e')]};}var _0x4f8318=md5(JSON[_0x4f55('0x53')](_0x34d302));if(_0x3b684d['md5']!==_0x4f8318){_0x3b684d[_0x4f55('0x3')]=_0x4f8318;emit(util[_0x4f55('0x86')](_0x4f55('0x87'),_0x34d302[_0x4f55('0x4e')]),_0x4f55('0x88'),_0x34d302);}}}function emitCampaignSummary(_0xb4b461){if(_0xb4b461['type']===_0x4f55('0x89')){emit(util[_0x4f55('0x86')](_0x4f55('0x8a'),_0xb4b461[_0x4f55('0x4e')]),'campaign:save',_0xb4b461);}}function checkGetDataPredictive(_0x4ba813){if(isNotNull(_0x4ba813)&&!_[_0x4f55('0x51')](_0x4ba813)){loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x8c'));loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x8d'),_0x4ba813['predictiveIntervalTotalCalls']);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x8e'),_0x4ba813['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x8f'),_0x4ba813[_0x4f55('0x90')]);loggerPredictive[_0x4f55('0x8b')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4ba813[_0x4f55('0x78')]);loggerPredictive['info'](_0x4f55('0x91'),_0x4ba813['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x4f55('0x8b')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4ba813[_0x4f55('0x92')]);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x93'));if(_0x4ba813[_0x4f55('0x94')]>0x0){if(!_[_0x4f55('0x95')](_0x4ba813['predictiveIntervalAvgTalktime'])&&_0x4ba813[_0x4f55('0x92')]>0x0){return!![];}loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x96'));if(!_[_0x4f55('0x95')](_0x4ba813[_0x4f55('0x77')])&&_0x4ba813['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x97'));}else{loggerPredictive['info'](_0x4f55('0x98'));}}else{loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x99'));}return![];}function mergeDataErlangB(_0x41c1b2){return function(_0xf45495){loggerPredictive['info']('---------\x20ErlangB\x20---------');loggerPredictive[_0x4f55('0x8b')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xf45495['erlangCalls']);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x9a'),_0xf45495[_0x4f55('0x9b')]);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x9c'),_0xf45495[_0x4f55('0x80')]);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x9d'),_0xf45495['erlangBusyFactor']);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x9c'),_0xf45495['erlangAbandonmentRate']);loggerPredictive[_0x4f55('0x8b')]('---------------------------');_[_0x4f55('0x9e')](_0x41c1b2,_0xf45495);};}function getDiff(_0x2acee2){var _0x120b18=moment()[_0x4f55('0x54')](0x0);var _0x1e53fd=moment(_0x2acee2)[_0x4f55('0x54')](0x0);return _0x120b18[_0x4f55('0x55')](_0x1e53fd,_0x4f55('0x56'));}function ifInterval(_0x27fcd7,_0x48abec){if(_[_0x4f55('0x95')](_0x48abec)){return![];}return getDiff(_0x48abec)<_0x27fcd7*0x3c;}function freeVariablesPredictive(_0x1a9ad3){if(isNotNull(_0x1a9ad3)){if(!_[_0x4f55('0x95')](_0x1a9ad3[_0x4f55('0x82')])){_0x1a9ad3['startProgressive']=undefined;loggerPredictive['info'](_0x1a9ad3[_0x4f55('0x4e')],_0x4f55('0x9f'));}if(!_[_0x4f55('0x95')](_0x1a9ad3[_0x4f55('0x2a')])){_0x1a9ad3[_0x4f55('0x2a')]=undefined;loggerPredictive['info'](_0x1a9ad3[_0x4f55('0x4e')],_0x4f55('0xa0'));}if(!_[_0x4f55('0x95')](_0x1a9ad3[_0x4f55('0xa1')])){clearInterval(_0x1a9ad3[_0x4f55('0xa1')]);_0x1a9ad3[_0x4f55('0xa1')]=undefined;loggerPredictive[_0x4f55('0x8b')](_0x1a9ad3[_0x4f55('0x4e')],_0x4f55('0xa2'));}}}function erlangb(_0x299cf7,_0xdeda2){if(_0xdeda2===0x0){return 0x0;}var _0x5e29c6=0x1;for(var _0x7b2ad=0x1;_0x7b2ad<=_0xdeda2;_0x7b2ad+=0x1){_0x5e29c6=0x1+_0x5e29c6*_0x7b2ad/_0x299cf7;}return 0x1/_0x5e29c6;}function isVoiceQueueOutbound(_0x27c0c7){return _0x27c0c7===_0x4f55('0x59');}function isNotPreview(_0x28d176){return _0x28d176!==_0x4f55('0x1f');}function isCampaignIvr(_0x5f040c){return _0x5f040c===_0x4f55('0x89');}function getCallerId(_0x3373cf,_0x107f20,_0x51db21){if(!_[_0x4f55('0x95')](_0x51db21)&&typeof _0x51db21===_0x4f55('0xa3')&&!_[_0x4f55('0x51')](_0x51db21)){if(!_[_0x4f55('0x95')](_0x107f20)&&typeof _0x107f20===_0x4f55('0xa3')&&!_[_0x4f55('0x51')](_0x107f20)){return util[_0x4f55('0x86')](_0x4f55('0xa4'),_0x107f20,_0x51db21);}return util[_0x4f55('0x86')]('\x22%s\x22\x20<%s>',_0x51db21,_0x51db21);}if(!_['isUndefined'](_0x3373cf)&&typeof _0x3373cf==='string'&&!_[_0x4f55('0x51')](_0x3373cf)){return _0x3373cf;}return _0x4f55('0xa5');}function loggerCatchQueueSummary(_0x5183c5,_0x453ebe){return function(_0x3c8a91){freeVariablesPredictive(_0x453ebe);emitVoiceQueueSummary(_0x453ebe);emitCampaignSummary(_0x453ebe);loggerSyncQueueSummary['debug'](_0x5183c5,util[_0x4f55('0xa6')](_0x3c8a91,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1fd064,_0x50a9f3){return function(_0x335a1a){loggerPredictive[_0x4f55('0xa7')](_0x50a9f3[_0x4f55('0x4e')],_0x1fd064);loggerPredictive[_0x4f55('0xa7')](_0x335a1a[_0x4f55('0xa8')]);freeVariablesPredictive(_0x50a9f3);};}function loggerCatch(_0x505cd3){return function(_0x4099cc){logger['error'](_0x505cd3,util[_0x4f55('0xa6')](_0x4099cc,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xb5ee65){return _0xb5ee65&&!_[_0x4f55('0x95')](_0xb5ee65)&&_0xb5ee65[_0x4f55('0xa9')]>0x0;}function decremetOriginate(_0x1cc69d){if(!_['isUndefined'](_0x1cc69d)&&_0x1cc69d!==null){if(typeof _0x1cc69d['originated']!=='undefined'){if(_0x1cc69d[_0x4f55('0x7e')]>0x0){_0x1cc69d[_0x4f55('0x7e')]-=0x1;}else{logger[_0x4f55('0xa7')](_0x4f55('0xaa'));}}}else{logger['error'](_0x4f55('0xab'));}}function checkContactLowerLimitOriginate(_0x3c1343,_0x3c8bab,_0x4c184d){if(_0x3c8bab>_0x4c184d){for(var _0x449820=0x0;_0x449820<_0x3c8bab-_0x4c184d;_0x449820+=0x1){decremetOriginate(_0x3c1343);}}}function loggerGetContactDialer(_0x159067,_0x388aee,_0x2d10d7){return function(_0xa4dbbb){checkContactLowerLimitOriginate(_0x388aee,_0x2d10d7,0x0);logger[_0x4f55('0xa7')](_0x159067,util['inspect'](_0xa4dbbb,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0xfc68f4){return function(_0x4dd589){if(isNotNull(_0x4dd589)&&isNotNull(_0x4dd589[0x0])){if(_0x4dd589[0x0][_0x4f55('0xac')]>0x0){_0xfc68f4[_0x4f55('0x47')]=_0x4f55('0xad');logger[_0x4f55('0x8b')](_0x4f55('0xae')+_0xfc68f4[_0x4f55('0x4e')],_0x4dd589[0x0][_0x4f55('0xac')],_0x4f55('0xaf'));}else{_0xfc68f4[_0x4f55('0x47')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x4f55('0x8b')](_0x4f55('0xb0')+_0xfc68f4['name']);}}};}function notSendMessagesQueue(_0x2ca7fe){if(_0x2ca7fe[_0x4f55('0xb1')]){freeVariablesPredictive(_0x2ca7fe);if(_0x2ca7fe[_0x4f55('0x7e')]===0x0&&_0x2ca7fe[_0x4f55('0x60')]===0x0&&_0x2ca7fe['waiting']===0x0&&(_0x2ca7fe[_0x4f55('0x5d')]||0x0)===0x0){_0x2ca7fe['sendMessageOneNotActive']=![];_0x2ca7fe[_0x4f55('0x5b')]=0x0;_0x2ca7fe[_0x4f55('0x47')]=_0x4f55('0x4a');loggerSyncQueueSummary[_0x4f55('0xb2')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2ca7fe[_0x4f55('0x4e')],'is\x20not\x20active');}else{_0x2ca7fe[_0x4f55('0x47')]=_0x4f55('0xb3');loggerSyncQueueSummary['debug'](_0x4f55('0xb4'),_0x2ca7fe[_0x4f55('0x4e')],_0x4f55('0xb5'));}emitVoiceQueueSummary(_0x2ca7fe);}}function notSendMessagesCampaign(_0x484cd2){if(_0x484cd2['sendMessageOneNotActive']){if(_0x484cd2['originated']===0x0){_0x484cd2[_0x4f55('0xb1')]=![];_0x484cd2[_0x4f55('0x47')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x4f55('0xb2')](_0x4f55('0xb6'),_0x484cd2[_0x4f55('0x4e')],_0x4f55('0xb7'));}else{_0x484cd2['message']='IS_DISACTIVED';loggerSyncQueueSummary['debug'](_0x4f55('0xb6'),_0x484cd2[_0x4f55('0x4e')],_0x4f55('0xb5'));}emitCampaignSummary(_0x484cd2);}}function createObjHistory(_0x3fd5b1,_0x2329e1,_0x54880d,_0x43ad61,_0x2c438e){_0x3fd5b1[_0x4f55('0x47')]=_0x54880d;var _0x28cdac=new Action(_0x3fd5b1,_0x2329e1);var _0x31b2aa=new History(_0x28cdac);_0x31b2aa['state']=_0x43ad61;_0x31b2aa[_0x4f55('0xb8')]=_0x2c438e;_0x31b2aa[_0x4f55('0xb9')]=_0x28cdac[_0x4f55('0xba')];return _0x31b2aa;}Dialer['prototype'][_0x4f55('0x43')]=function(){var _0x120195=this;setInterval(function(){_0x120195[_0x4f55('0xbb')](_0x120195[_0x4f55('0x28')],_0x4f55('0xbc'));_0x120195['clearZombieChannels'](_0x120195[_0x4f55('0x26')],_0x4f55('0xbd'));},0x32c8);};Dialer[_0x4f55('0x1b')][_0x4f55('0xbb')]=function(_0x382ae2,_0x4b36e1){var _0x5e46dd=this;for(var _0x3f964c in _0x382ae2){if(typeof _0x382ae2[_0x3f964c]!==_0x4f55('0xbe')){this[_0x4f55('0x1e')]['enqueue'](function(){if(!_[_0x4f55('0xbf')](_0x382ae2[_0x3f964c])){return ami[_0x4f55('0xc0')]({'action':_0x4f55('0xc1'),'channel':_0x382ae2[_0x3f964c][_0x4f55('0xc2')]})['catch'](function(_0x1ffb1e){if(_0x1ffb1e['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x382ae2[_0x3f964c]&&_0x382ae2[_0x3f964c]['type']!==_0x4f55('0x89')){_0x5e46dd[_0x4f55('0xc3')](_0x5e46dd[_0x4f55('0x20')][_0x382ae2[_0x3f964c][_0x4f55('0xc4')]]);logger[_0x4f55('0xa7')](_0x4f55('0xc5'),_0x4b36e1,_0x3f964c,_0x382ae2[_0x3f964c][_0x4f55('0xc4')]);delete _0x382ae2[_0x3f964c];}if(_0x382ae2[_0x3f964c]&&_0x382ae2[_0x3f964c][_0x4f55('0x58')]===_0x4f55('0x89')){_0x5e46dd['updateOriginated'](_0x5e46dd['campaigns'][_0x382ae2[_0x3f964c][_0x4f55('0xc4')]]);logger[_0x4f55('0xa7')](_0x4f55('0xc6'),_0x4b36e1,_0x3f964c,_0x382ae2[_0x3f964c][_0x4f55('0xc4')]);delete _0x382ae2[_0x3f964c];}},0x2328);}});}});}}};Dialer[_0x4f55('0x1b')][_0x4f55('0xc7')]=function(_0x8a6025){return Promise['resolve']()[_0x4f55('0x45')](cmHopper[_0x4f55('0xc7')](_0x8a6025))['catch'](loggerCatch('[countReScheduled]\x20'));};Dialer['prototype']['checkIsBlackList']=function(_0x3d0213){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopperBlack['checkIsBlackList'](_0x3d0213))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xca')));};Dialer[_0x4f55('0x1b')][_0x4f55('0xcb')]=function(_0x3ddbca,_0x3c4b56,_0x117773){return Promise[_0x4f55('0xc8')]()['then'](cmHopperAdditionalPhone[_0x4f55('0xcb')](_0x3ddbca,_0x3c4b56,_0x117773))[_0x4f55('0xc9')](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer['prototype']['swapAdditionalPhones']=function(_0x62c577,_0x538a32,_0x5094db){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x62c577,_0x538a32,_0x5094db))[_0x4f55('0xc9')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer['prototype'][_0x4f55('0xcc')]=function(_0xe49871){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopperBlack[_0x4f55('0xcc')](_0xe49871))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xcd')));};Dialer[_0x4f55('0x1b')][_0x4f55('0xce')]=function(_0x21c2e7){return Promise[_0x4f55('0xc8')]()['then'](cmHopperHistory[_0x4f55('0xcf')](_0x21c2e7))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xd0')));};Dialer[_0x4f55('0x1b')][_0x4f55('0xd1')]=function(_0x4f6d41){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopper[_0x4f55('0xd1')](_0x4f6d41))[_0x4f55('0xc9')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x4f55('0x1b')][_0x4f55('0xd2')]=function(_0xa44ee3,_0x3dd851,_0x550441){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopper[_0x4f55('0xd2')](_0xa44ee3,_0x3dd851,_0x550441))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xd3')));};Dialer[_0x4f55('0x1b')][_0x4f55('0xd4')]=function(_0x379448,_0x2c94d7,_0x4dcd53,_0x9ca3c0,_0x5af62c){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopper['getContactDialer'](_0x379448,_0x2c94d7,_0x4dcd53,_0x9ca3c0))[_0x4f55('0xc9')](function(_0x373ed0){_0x5af62c[_0x4f55('0xd5')]-=_0x4dcd53;_0x5af62c[_0x4f55('0xd5')]=_0x5af62c['temp']>0x0?_0x5af62c['temp']:0x0;loggerCatch(_0x4f55('0xd6'))(_0x373ed0);});};Dialer[_0x4f55('0x1b')][_0x4f55('0xd7')]=function(_0x22b645,_0x3864a8,_0x2c1a6c,_0x2aba7d){return Promise[_0x4f55('0xc8')]()['then'](cmHopper['getContactDialerIvr'](_0x22b645,_0x3864a8,_0x2c1a6c))[_0x4f55('0xc9')](function(_0x459f42){_0x2aba7d[_0x4f55('0xd5')]-=_0x3864a8;_0x2aba7d[_0x4f55('0xd5')]=_0x2aba7d[_0x4f55('0xd5')]>0x0?_0x2aba7d['temp']:0x0;loggerCatch(_0x4f55('0xd8'))(_0x459f42);});};Dialer[_0x4f55('0x1b')][_0x4f55('0xd9')]=function(_0xe1c75c){return Promise[_0x4f55('0xc8')]()['then'](voiceQueueRt[_0x4f55('0xd9')](_0xe1c75c))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xda')));};Dialer[_0x4f55('0x1b')][_0x4f55('0xdb')]=function(_0x534344){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopper[_0x4f55('0xdb')](_0x534344))['catch'](loggerCatch(_0x4f55('0xdc')));};Dialer[_0x4f55('0x1b')]['createHistory']=function(_0x20729a){return Promise['resolve']()[_0x4f55('0x45')](cmHopperHistory[_0x4f55('0xdd')](_0x20729a))[_0x4f55('0xc9')](loggerCatch('[createHistory]\x20'));};Dialer[_0x4f55('0x1b')][_0x4f55('0xc3')]=function(_0xc86935){if(!_[_0x4f55('0x95')](_0xc86935)&&_0xc86935!==null){if(typeof _0xc86935['originated']!==_0x4f55('0xbe')){if(_0xc86935[_0x4f55('0x7e')]>0x0){_0xc86935[_0x4f55('0x7e')]-=0x1;}else{logger[_0x4f55('0xa7')](_0x4f55('0xde'));}}}else{logger[_0x4f55('0xa7')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x4f55('0x1b')][_0x4f55('0xdf')]=function(_0x3722f4,_0x146d48){var _0x2e6164=this;return function(_0x5209a4){_0x2e6164['updateOriginated'](_0x146d48);logger[_0x4f55('0xa7')](_0x3722f4,util[_0x4f55('0xa6')](_0x5209a4,{'showHidden':![],'depth':null}));};};Dialer[_0x4f55('0x1b')][_0x4f55('0xe0')]=function(_0x5f3481,_0x350d50,_0x1067b6){var _0x1e95d6={'state':0x19,'statedesc':'notFound'};this[_0x4f55('0xc3')](_0x350d50);this[_0x4f55('0xe1')](_['merge'](_0x1e95d6,_[_0x4f55('0xe2')](_0x1067b6,['ContactId',_0x4f55('0xe3'),_0x4f55('0xe4'),_0x4f55('0xe5'),_0x4f55('0xe6')])),_0x4f55('0xe7'),_0x4f55('0xe8'));logger[_0x4f55('0xa7')](_0x5f3481);};Dialer[_0x4f55('0x1b')][_0x4f55('0xe9')]=function(_0x3d4b9d){return _0x3d4b9d===_0x4f55('0xea');};Dialer[_0x4f55('0x1b')][_0x4f55('0xeb')]=function(_0x45147f){return!_[_0x4f55('0x95')](_0x45147f)&&_0x45147f&&!_[_0x4f55('0x95')](_0x45147f[_0x4f55('0x4e')])&&!_[_0x4f55('0x95')](_0x45147f[_0x4f55('0x84')])&&_0x45147f['active']&&(this['trunks'][util['format']('SIP/%s',_0x45147f['name'])][_0x4f55('0xc1')]===_0x4f55('0xec')||this[_0x4f55('0x23')][util[_0x4f55('0x86')](_0x4f55('0xed'),_0x45147f[_0x4f55('0x4e')])]['status']===_0x4f55('0xee'));};Dialer['prototype']['saveInDb']=function(_0x5d58dc,_0x57a094,_0x3d33ec){this['createHistory'](_0x5d58dc)[_0x4f55('0xc9')](loggerCatch(_0x57a094));this[_0x4f55('0xdb')](_0x5d58dc)['catch'](loggerCatch(_0x3d33ec));};Dialer[_0x4f55('0x1b')][_0x4f55('0x3d')]=function(_0x20deb1){var _0x49e08f=this;var _0x17440c=this['uniqueId'][_0x20deb1['uniqueid']];var _0x124e1c;if(!_[_0x4f55('0xbf')](_0x20deb1)&&!_[_0x4f55('0xbf')](_0x20deb1['variable'])&&!_[_0x4f55('0xbf')](_0x20deb1['variable']['amdstatus'])&&_0x20deb1['exten']===_0x4f55('0xef')&&_0x17440c){if(_0x17440c[_0x4f55('0x58')]!==_0x4f55('0x89')&&this[_0x4f55('0x20')][_0x17440c[_0x4f55('0xc4')]]['dialAMDActive']&&_0x20deb1[_0x4f55('0xf0')]===_0x4f55('0xf1')){delete this['uniqueId'][_0x20deb1[_0x4f55('0xf2')]];this[_0x4f55('0xc3')](this[_0x4f55('0x20')][_0x17440c[_0x4f55('0xc4')]]);this['voiceQueues'][_0x17440c[_0x4f55('0xc4')]]['outboundAnswerCallsDay']+=0x1;this[_0x4f55('0x20')][_0x17440c['queue']][_0x4f55('0xf3')]+=0x1;_0x124e1c=new Hangup(_0x17440c,_0x20deb1);_0x124e1c[_0x4f55('0xf4')]=0x12;_0x124e1c['statedesc']=_0x4f55('0xf5');_0x124e1c['membername']=_0x4f55('0xf6');ami['emit'](_0x4f55('0xf7'),ut[_0x4f55('0xf8')](_0x124e1c,_0x4f55('0xf9')));this[_0x4f55('0xe1')](_0x124e1c,_0x4f55('0xfa'),_0x4f55('0xfb'));}if(_0x17440c['type']!==_0x4f55('0x89')&&this['voiceQueues'][_0x17440c['queue']][_0x4f55('0xfc')]&&_0x20deb1['value']==='MACHINE'){return new Promise(function(_0xf8067c,_0x5f9d80){delete _0x49e08f[_0x4f55('0x28')][_0x20deb1[_0x4f55('0xf2')]];_0x49e08f[_0x4f55('0xc3')](_0x49e08f['voiceQueues'][_0x17440c[_0x4f55('0xc4')]]);_0x49e08f[_0x4f55('0x20')][_0x17440c[_0x4f55('0xc4')]]['outboundAnswerCallsDay']+=0x1;_0x49e08f[_0x4f55('0x20')][_0x17440c[_0x4f55('0xc4')]][_0x4f55('0xf3')]+=0x1;var _0x182a49=_0x49e08f['voiceQueues'][_0x17440c[_0x4f55('0xc4')]];var _0x31c1f4=new Hangup(_0x17440c,_0x20deb1);_0x31c1f4[_0x4f55('0xf4')]=0x13;_0x31c1f4[_0x4f55('0xb8')]='Machine';_0x31c1f4['membername']='AMD';_0x31c1f4[_0x4f55('0xfd')]+=0x1;_0x31c1f4['countglobal']+=0x1;_0x31c1f4['amd']=!![];ami[_0x4f55('0x57')](_0x4f55('0xf7'),ut[_0x4f55('0xf8')](_0x31c1f4,_0x4f55('0xf9')));_0x49e08f[_0x4f55('0xdd')](_0x31c1f4)['catch'](loggerCatch(_0x4f55('0xfe')));if(_0x31c1f4[_0x4f55('0xff')]+_0x31c1f4[_0x4f55('0x100')]+_0x31c1f4[_0x4f55('0x101')]+_0x31c1f4['countnosuchnumberretry']+_0x31c1f4['countdropretry']+_0x31c1f4[_0x4f55('0x102')]+_0x31c1f4['countmachineretry']+_0x31c1f4['countagentrejectretry']>=_0x182a49[_0x4f55('0x103')]){_0x49e08f[_0x4f55('0x104')](_0x31c1f4,_0xf8067c,_0x5f9d80,_0x4f55('0x105'));}else{if(_0x31c1f4['countmachineretry']>=_0x182a49[_0x4f55('0x106')]){_0x49e08f['createStateFinal'](_0x31c1f4,_0xf8067c,_0x5f9d80,_0x4f55('0x107'));}else{_0x49e08f[_0x4f55('0xd1')]({'active':![],'countmachineretry':_0x31c1f4[_0x4f55('0xfd')],'scheduledat':moment()[_0x4f55('0x108')](_0x182a49['dialMachineRetryFrequency'],_0x4f55('0x109'))[_0x4f55('0x86')](_0x4f55('0x10a')),'ContactId':_0x31c1f4[_0x4f55('0x10b')],'ListId':_0x31c1f4[_0x4f55('0xe3')],'VoiceQueueId':_0x31c1f4[_0x4f55('0xe5')]||undefined,'CampaignId':_0x31c1f4['CampaignId']||undefined})[_0x4f55('0xc9')](loggerCatch('[rescheduleContact][Machine]'));_0xf8067c({'reschedule':0x1});}}});}if(_0x17440c[_0x4f55('0x58')]==='ivr'&&this[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]]['dialAMDActive']&&_0x20deb1[_0x4f55('0xf0')]===_0x4f55('0xf1')){delete this[_0x4f55('0x28')][_0x20deb1['uniqueid']];this[_0x4f55('0xc3')](this[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]]);_0x124e1c=new Hangup(_0x17440c,_0x20deb1);_0x124e1c['state']=0x12;_0x124e1c[_0x4f55('0xb8')]=_0x4f55('0xf5');_0x124e1c['membername']='AMD';ami['emit'](_0x4f55('0xf7'),ut[_0x4f55('0xf8')](_0x124e1c,_0x4f55('0xf9')));this[_0x4f55('0xe1')](_0x124e1c,_0x4f55('0x10c'),_0x4f55('0x10d'));}if(_0x17440c['type']==='ivr'&&this['campaigns'][_0x17440c['queue']]['dialAMDActive']&&_0x20deb1[_0x4f55('0xf0')]==='MACHINE'){return new Promise(function(_0x106e8c,_0x5f3854){delete _0x49e08f[_0x4f55('0x28')][_0x20deb1[_0x4f55('0xf2')]];_0x49e08f[_0x4f55('0xc3')](_0x49e08f[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]]);_0x49e08f[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]]['outboundAnswerCallsDay']+=0x1;_0x49e08f[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x355235=_0x49e08f[_0x4f55('0x21')][_0x17440c[_0x4f55('0xc4')]];var _0x2223bd=new Hangup(_0x17440c,_0x20deb1);_0x2223bd[_0x4f55('0xf4')]=0x13;_0x2223bd[_0x4f55('0xb8')]='Machine';_0x2223bd[_0x4f55('0x10e')]=_0x4f55('0xf6');_0x2223bd[_0x4f55('0xfd')]+=0x1;_0x2223bd[_0x4f55('0x10f')]+=0x1;_0x2223bd[_0x4f55('0xf9')]=!![];ami[_0x4f55('0x57')](_0x4f55('0xf7'),ut[_0x4f55('0xf8')](_0x2223bd,_0x4f55('0xf9')));_0x49e08f[_0x4f55('0xdd')](_0x2223bd)[_0x4f55('0xc9')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x2223bd[_0x4f55('0xff')]+_0x2223bd['countcongestionretry']+_0x2223bd[_0x4f55('0x101')]+_0x2223bd[_0x4f55('0x110')]+_0x2223bd[_0x4f55('0x111')]+_0x2223bd[_0x4f55('0x102')]+_0x2223bd['countmachineretry']+_0x2223bd[_0x4f55('0x112')]>=_0x355235[_0x4f55('0x103')]){_0x49e08f[_0x4f55('0x104')](_0x2223bd,_0x106e8c,_0x5f3854,_0x4f55('0x105'));}else{if(_0x2223bd[_0x4f55('0xfd')]>=_0x355235[_0x4f55('0x106')]){_0x49e08f[_0x4f55('0x113')](_0x2223bd,_0x106e8c,_0x5f3854,_0x4f55('0x107'));}else{_0x49e08f['rescheduleContact']({'active':![],'countmachineretry':_0x2223bd[_0x4f55('0xfd')],'scheduledat':moment()['add'](_0x355235[_0x4f55('0x114')],_0x4f55('0x109'))[_0x4f55('0x86')](_0x4f55('0x10a')),'ContactId':_0x2223bd[_0x4f55('0x10b')],'ListId':_0x2223bd['ListId'],'VoiceQueueId':_0x2223bd[_0x4f55('0xe5')]||undefined,'CampaignId':_0x2223bd[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x115')));_0x106e8c({'reschedule':0x1});}}});}}};Dialer[_0x4f55('0x1b')][_0x4f55('0x3a')]=function(_0x54f978){var _0x7456d9=this[_0x4f55('0x28')][_0x54f978['uniqueid']];var _0x430522;if(_0x7456d9&&_0x7456d9['type']===_0x4f55('0x89')){delete this[_0x4f55('0x28')][_0x54f978[_0x4f55('0xf2')]];this['updateOriginated'](this[_0x4f55('0x21')][_0x7456d9[_0x4f55('0xc4')]]);this[_0x4f55('0x21')][_0x7456d9[_0x4f55('0xc4')]][_0x4f55('0x116')]+=0x1;_0x430522=new Hangup(_0x7456d9,_0x54f978);this[_0x4f55('0xdd')](_0x430522)[_0x4f55('0xc9')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x430522)['catch'](loggerCatch(_0x4f55('0x117')));}if(_0x7456d9&&_0x7456d9[_0x4f55('0x58')]!==_0x4f55('0x89')&&isNotNull(this['voiceQueues'][_0x7456d9['queue']][_0x4f55('0x118')])){delete this[_0x4f55('0x28')][_0x54f978[_0x4f55('0xf2')]];this[_0x4f55('0xc3')](this[_0x4f55('0x20')][_0x7456d9['queue']]);this[_0x4f55('0x20')][_0x7456d9[_0x4f55('0xc4')]][_0x4f55('0x119')]+=0x1;this[_0x4f55('0x20')][_0x7456d9[_0x4f55('0xc4')]][_0x4f55('0xf3')]+=0x1;_0x430522=new Hangup(_0x7456d9,_0x54f978);_0x430522[_0x4f55('0xf4')]=0x10;_0x430522[_0x4f55('0xb8')]='AnswerAGI';_0x430522[_0x4f55('0x10e')]=_0x4f55('0x11a');this[_0x4f55('0xdd')](_0x430522)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x11b')));this[_0x4f55('0xdb')](_0x430522)[_0x4f55('0xc9')](loggerCatch('[syncHangupIvr]'));}if(_0x7456d9&&_0x7456d9[_0x4f55('0x58')]!==_0x4f55('0x89')&&!isNotNull(this[_0x4f55('0x20')][_0x7456d9[_0x4f55('0xc4')]][_0x4f55('0x118')])){delete this['uniqueId'][_0x54f978[_0x4f55('0xf2')]];this[_0x4f55('0xc3')](this[_0x4f55('0x20')][_0x7456d9[_0x4f55('0xc4')]]);this[_0x4f55('0x20')][_0x7456d9[_0x4f55('0xc4')]]['outboundUnknownCallsDay']+=0x1;_0x430522=new Hangup(_0x7456d9,_0x54f978);_0x430522[_0x4f55('0xf4')]=0xc;_0x430522[_0x4f55('0xb8')]=_0x54f978['cause-txt'];_0x430522['membername']=_0x4f55('0x11c');this[_0x4f55('0xdd')](_0x430522)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x11b')));this[_0x4f55('0xdb')](_0x430522)['catch'](loggerCatch(_0x4f55('0x117')));}};Dialer[_0x4f55('0x1b')]['syncAgentComplete']=function(_0x2ef9c9){var _0x8d73c0=this[_0x4f55('0x28')][_0x2ef9c9['uniqueid']];if(this[_0x4f55('0x20')][_0x2ef9c9[_0x4f55('0xc4')]]){if(_0x8d73c0&&_0x8d73c0[_0x4f55('0x58')]!==_0x4f55('0x89')){delete this['uniqueId'][_0x2ef9c9[_0x4f55('0xf2')]];this['voiceQueues'][_0x2ef9c9['queue']][_0x4f55('0x119')]+=0x1;var _0x197e4a=new AgentComplete(_0x8d73c0,_0x2ef9c9);if(_0x2ef9c9[_0x4f55('0x11d')]==='agent'){_0x197e4a[_0x4f55('0x11e')]=this['voiceQueues'][_0x2ef9c9[_0x4f55('0xc4')]][_0x4f55('0x11f')]&&this['voiceQueues'][_0x2ef9c9['queue']][_0x4f55('0x120')]?moment()[_0x4f55('0x86')](_0x4f55('0x10a')):undefined;}this[_0x4f55('0xdd')](_0x197e4a)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x121')));this['moveContactManagedDialer'](_0x197e4a)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x4f55('0x1b')]['syncAgentConnect']=function(_0x2775d4){if(this[_0x4f55('0x20')][_0x2775d4[_0x4f55('0xc4')]]){if(this[_0x4f55('0x28')][_0x2775d4[_0x4f55('0xf2')]]&&this[_0x4f55('0x28')][_0x2775d4['uniqueid']][_0x4f55('0x58')]!==_0x4f55('0x89')){this['updateOriginated'](this[_0x4f55('0x20')][_0x2775d4['queue']]);this[_0x4f55('0x28')][_0x2775d4[_0x4f55('0xf2')]][_0x4f55('0x122')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));}}};Dialer[_0x4f55('0x1b')][_0x4f55('0x123')]=function(_0x13c961,_0x43fa72){this['createHistory'](_0x13c961)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x121')));if(_0x43fa72==0x0){this['moveContactManagedDialer'](_0x13c961)['catch'](loggerCatch(_0x4f55('0x124')));}};Dialer[_0x4f55('0x1b')][_0x4f55('0x30')]=function(_0x59ddf3){var _0x598917=this[_0x4f55('0x28')][_0x59ddf3[_0x4f55('0xf2')]];var _0x297612=this;var _0x3282b7=![];var _0x213863;var _0x162517;if(this[_0x4f55('0x20')][_0x59ddf3['queue']]){if(_0x598917&&_0x598917[_0x4f55('0x58')]!==_0x4f55('0x89')){delete this[_0x4f55('0x28')][_0x59ddf3[_0x4f55('0xf2')]];this['updateOriginated'](this['voiceQueues'][_0x59ddf3[_0x4f55('0xc4')]]);_0x598917[_0x4f55('0x125')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));var _0x255544=new QueueCallerAbandon(_0x598917,_0x59ddf3);if(getSeconds(_0x598917['droptime'],_0x598917[_0x4f55('0x126')])>=_0x598917[_0x4f55('0x127')]){this[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]][_0x4f55('0x90')]+=0x1;this['voiceQueues'][_0x59ddf3[_0x4f55('0xc4')]][_0x4f55('0x6f')]+=0x1;this[_0x4f55('0x20')][_0x59ddf3['queue']]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x255544['state']=0xa;_0x255544[_0x4f55('0xb8')]=_0x4f55('0x128');_0x255544[_0x4f55('0x129')]=_0x4f55('0x12a');_0x255544[_0x4f55('0x11e')]=this[_0x4f55('0x20')][_0x59ddf3['queue']]['dialQueueProject2']?moment()['format'](_0x4f55('0x10a')):undefined;_0x255544[_0x4f55('0x111')]+=0x1;_0x255544['countglobal']+=0x1;_0x213863=this[_0x4f55('0x20')][_0x59ddf3['queue']][_0x4f55('0x12b')];_0x162517=this[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]]['callAdditionalPhoneAfterMin'];_0x297612[_0x4f55('0xcb')](_0x255544,_0x255544['state'],_0x598917[_0x4f55('0x12c')])[_0x4f55('0x45')](function(_0x50ef80){_0x3282b7=_0x50ef80[_0x4f55('0x12d')]==0x1;if(_0x255544[_0x4f55('0x111')]>=_0x297612[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]][_0x4f55('0x12e')]){_0x297612[_0x4f55('0x123')](_0x255544,_0x50ef80[_0x4f55('0x12d')]);}else{_0x297612['rescheduleContact']({'active':![],'countdropretry':_0x255544[_0x4f55('0x111')],'scheduledat':moment()['add'](_0x297612[_0x4f55('0x20')][_0x59ddf3['queue']][_0x4f55('0x12b')],_0x4f55('0x109'))['format'](_0x4f55('0x10a')),'ContactId':_0x598917['ContactId'],'ListId':_0x598917[_0x4f55('0xe3')],'VoiceQueueId':_0x598917[_0x4f55('0xe5')]||undefined,'CampaignId':_0x598917[_0x4f55('0xe6')]||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));var _0x2a787d=new History(_0x255544);_0x2a787d[_0x4f55('0xf4')]=0xa;_0x2a787d[_0x4f55('0xb8')]=_0x4f55('0x128');_0x2a787d[_0x4f55('0xba')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));_0x2a787d[_0x4f55('0xb9')]=_0x2a787d[_0x4f55('0xba')];_0x2a787d[_0x4f55('0x12f')]=_0x255544[_0x4f55('0x12f')];_0x2a787d[_0x4f55('0x130')]=_0x255544[_0x4f55('0x130')];_0x297612[_0x4f55('0xdd')](_0x2a787d)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x131')));}})[_0x4f55('0x45')](function(){if(_0x3282b7)_0x297612[_0x4f55('0x132')](_0x255544,_0x213863,_0x162517)[_0x4f55('0x45')](function(){return 0x1;});});}else{this['voiceQueues'][_0x59ddf3['queue']]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]][_0x4f55('0x6e')]+=0x1;_0x255544[_0x4f55('0xf4')]=0xb;_0x255544[_0x4f55('0xb8')]=_0x4f55('0x133');_0x255544[_0x4f55('0x129')]=_0x4f55('0x134');_0x255544[_0x4f55('0x102')]+=0x1;_0x255544[_0x4f55('0x10f')]+=0x1;_0x213863=this[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]]['dialAbandonedRetryFrequency'];_0x162517=this[_0x4f55('0x20')][_0x59ddf3[_0x4f55('0xc4')]][_0x4f55('0x135')];_0x297612['verifyAdditionalPhones'](_0x255544,_0x255544[_0x4f55('0xf4')],_0x598917[_0x4f55('0x12c')])[_0x4f55('0x45')](function(_0x45837d){if(_0x255544['countabandonedretry']>=_0x297612[_0x4f55('0x20')][_0x59ddf3['queue']][_0x4f55('0x136')]){_0x297612[_0x4f55('0x123')](_0x255544,_0x45837d[_0x4f55('0x12d')]);}else{_0x297612[_0x4f55('0xd1')]({'active':![],'countabandonedretry':_0x255544[_0x4f55('0x102')],'scheduledat':moment()[_0x4f55('0x108')](_0x297612['voiceQueues'][_0x59ddf3['queue']][_0x4f55('0x137')],'minutes')['format'](_0x4f55('0x10a')),'ContactId':_0x598917['ContactId'],'ListId':_0x598917[_0x4f55('0xe3')],'VoiceQueueId':_0x598917[_0x4f55('0xe5')]||undefined,'CampaignId':_0x598917['CampaignId']||undefined})[_0x4f55('0xc9')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x4c990f=new History(_0x255544);_0x4c990f[_0x4f55('0xf4')]=0xb;_0x4c990f[_0x4f55('0xb8')]='Abandoned';_0x4c990f[_0x4f55('0xba')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));_0x4c990f['endtime']=_0x4c990f[_0x4f55('0xba')];_0x4c990f[_0x4f55('0x12f')]=_0x255544[_0x4f55('0x12f')];_0x4c990f[_0x4f55('0x130')]=_0x255544[_0x4f55('0x130')];_0x297612['createHistory'](_0x4c990f)['catch'](loggerCatch(_0x4f55('0x138')));}})[_0x4f55('0x45')](function(){if(_0x3282b7)_0x297612[_0x4f55('0x132')](_0x255544,_0x213863,_0x162517)[_0x4f55('0x45')](function(){return 0x1;});});}}}};Dialer[_0x4f55('0x1b')][_0x4f55('0x3c')]=function(_0x5f0ccc){if(this[_0x4f55('0x26')][_0x5f0ccc[_0x4f55('0xf2')]]){this[_0x4f55('0x26')][_0x5f0ccc['uniqueid']][_0x4f55('0xc2')]=_0x5f0ccc['channel'];}if(this[_0x4f55('0x28')][_0x5f0ccc[_0x4f55('0xf2')]]){this['uniqueId'][_0x5f0ccc['uniqueid']][_0x4f55('0xc2')]=_0x5f0ccc[_0x4f55('0xc2')];}};Dialer[_0x4f55('0x1b')][_0x4f55('0x3f')]=function(_0x39de56){if(strategy[this[_0x4f55('0x20')][this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0x13a')]]===_0x4f55('0x1a')){if(this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]]&&_[_0x4f55('0xbf')](this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0x13b')])&&_0x39de56[_0x4f55('0xc1')]==='1'&&_0x39de56[_0x4f55('0x13c')]==='0'){if(this[_0x4f55('0x22')][_0x39de56[_0x4f55('0x13d')]]){if(!this[_0x4f55('0x22')][_0x39de56[_0x4f55('0x13d')]][_0x4f55('0x13b')]){this[_0x4f55('0x22')][_0x39de56['stateinterface']][_0x4f55('0x13b')]=!![];this[_0x4f55('0x26')][_0x39de56['actionid']][_0x4f55('0x13b')]=!![];this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0x13d')]=_0x39de56[_0x4f55('0x13d')];}}}}else if((strategy[this[_0x4f55('0x20')][this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0x13a')]]||_0x4f55('0x19'))===_0x4f55('0x19')){if(this[_0x4f55('0x26')][_0x39de56['actionid']]){if(this[_0x4f55('0x22')][_0x39de56[_0x4f55('0x13d')]]){this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0x13d')]=_0x39de56[_0x4f55('0x13d')];if(_[_0x4f55('0xbf')](this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0xc4')]])){this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]]['queue']]=[];}this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0x13f')](_[_0x4f55('0x9e')](_[_0x4f55('0xe2')](this[_0x4f55('0x26')][_0x39de56[_0x4f55('0x139')]],[_0x4f55('0x140'),_0x4f55('0x13d')]),{'status':_0x39de56[_0x4f55('0xc1')],'paused':_0x39de56['paused']}));}}}};function unlockQueueStatus(_0x85802b,_0x286b2f){setTimeout(function(){if(_[_0x4f55('0x95')](_0x85802b[_0x4f55('0x141')])){loggerBooked[_0x4f55('0xa7')](_0x4f55('0x142'),_0x286b2f);}_0x85802b[_0x4f55('0x141')]=!![];loggerBooked[_0x4f55('0x8b')](_0x4f55('0x143'),_0x286b2f,JSON[_0x4f55('0x53')](_[_0x4f55('0xe2')](_0x85802b,[_0x4f55('0x4e'),_0x4f55('0x141')])));},0x1f3);}Dialer[_0x4f55('0x1b')][_0x4f55('0x41')]=function(_0xc5bb79){var _0x5b42f5=this;var _0x47da85=_0x5b42f5[_0x4f55('0x20')][_0x5b42f5['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]];if(strategy[this[_0x4f55('0x20')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['queue']]['strategy']]===_0x4f55('0x1a')){if(this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]&&this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x13d')]){this[_0x4f55('0x1f')][_0x4f55('0x144')](this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['idHopper'],this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x13d')])[_0x4f55('0xc9')](function(_0x1c5f3e){logger['error'](_0x4f55('0x145'),util[_0x4f55('0xa6')](_0x1c5f3e,{'showHidden':![],'depth':null}));})[_0x4f55('0x146')](function(){_0x5b42f5[_0x4f55('0xc3')](_0x5b42f5[_0x4f55('0x20')][_0x5b42f5['actions'][_0xc5bb79[_0x4f55('0x139')]]['queue']]);_0x5b42f5['agents'][_0x5b42f5[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x13d')]][_0x4f55('0x13b')]=![];delete _0x5b42f5[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]];unlockQueueStatus(_0x47da85);});}else{this[_0x4f55('0xc3')](this['voiceQueues'][this['actions'][_0xc5bb79[_0x4f55('0x139')]]['queue']]);this[_0x4f55('0xd1')]({'active':![],'ContactId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x10b')],'ListId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe3')],'VoiceQueueId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe5')]||undefined,'CampaignId':this['actions'][_0xc5bb79[_0x4f55('0x139')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x4f55('0x147')));delete this['actions'][_0xc5bb79[_0x4f55('0x139')]];unlockQueueStatus(_0x47da85);}}else if((strategy[this['voiceQueues'][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]['strategy']]||_0x4f55('0x19'))===_0x4f55('0x19')){var _0x5a24fb;if(this['actions'][_0xc5bb79[_0x4f55('0x139')]]&&!_[_0x4f55('0x51')](this['queueBooked'][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]])){if(this[_0x4f55('0x2c')][_0x5b42f5[_0x4f55('0x26')][_0xc5bb79['actionid']][_0x4f55('0xc4')]]){this['queueBookedRR'][_0x5b42f5['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]=this[_0x4f55('0x2c')][this['actions'][_0xc5bb79['actionid']][_0x4f55('0xc4')]]?this[_0x4f55('0x2c')][this['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]:this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]?this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79['actionid']][_0x4f55('0xc4')]][_0x4f55('0x148')]||0x0:0x0;}this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0x148')]=this[_0x4f55('0x2c')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]];for(var _0x3a3106=0x0;_0x3a3106<this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0xa9')];_0x3a3106+=0x1){_0x5a24fb=rr(this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79['actionid']]['queue']]);this[_0x4f55('0x2c')][_0x5b42f5[_0x4f55('0x26')][_0xc5bb79['actionid']][_0x4f55('0xc4')]]=this[_0x4f55('0x13e')][this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]][_0x4f55('0x148')];if(_0x5a24fb[_0x4f55('0xc1')]==='1'&&_0x5a24fb[_0x4f55('0x13c')]==='0'){break;}}if(!_['isNil'](_0x5a24fb)){this['agents'][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')]=_[_0x4f55('0x95')](this[_0x4f55('0x22')][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')])?!![]:this[_0x4f55('0x22')][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')];}loggerBooked[_0x4f55('0x8b')](_0x4f55('0x14a'),_0xc5bb79[_0x4f55('0x139')],_0x4f55('0x14b'),JSON['stringify'](_[_0x4f55('0xe2')](this[_0x4f55('0x22')][_0x5a24fb[_0x4f55('0x13d')]],[_0x4f55('0x4e'),_0x4f55('0x149')])),'contactAgent-idHopper:\x20',JSON[_0x4f55('0x53')](_0x5a24fb[_0x4f55('0x140')]));if(!_['isNil'](_0x5a24fb)&&_0x5a24fb[_0x4f55('0xc1')]==='1'&&_0x5a24fb['paused']==='0'&&this[_0x4f55('0x22')][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')]){this['agents'][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')]=![];this[_0x4f55('0x13e')][_0x5b42f5['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]=[];this[_0x4f55('0x1f')][_0x4f55('0x144')](_0x5a24fb[_0x4f55('0x140')],_0x5a24fb[_0x4f55('0x13d')])[_0x4f55('0xc9')](function(_0x57e6d3){logger['error'](_0x4f55('0x145'),util['inspect'](_0x57e6d3,{'showHidden':![],'depth':null}));})[_0x4f55('0x146')](function(){_0x5b42f5[_0x4f55('0xc3')](_0x5b42f5[_0x4f55('0x20')][_0x5b42f5[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['queue']]);setTimeout(function(){_0x5b42f5['agents'][_0x5a24fb[_0x4f55('0x13d')]][_0x4f55('0x149')]=!![];loggerBooked[_0x4f55('0x8b')](_0x4f55('0x14c'),_0xc5bb79[_0x4f55('0x139')],'Agent:\x20',JSON['stringify'](_[_0x4f55('0xe2')](_0x5b42f5[_0x4f55('0x22')][_0x5a24fb['stateinterface']],['name','unlockRR'])),_0x4f55('0x14d'),JSON['stringify'](_0x5a24fb[_0x4f55('0x140')]));},0xc7);delete _0x5b42f5[_0x4f55('0x26')][_0xc5bb79['actionid']];unlockQueueStatus(_0x47da85,_0xc5bb79['actionid']);});}else{loggerBooked[_0x4f55('0x8b')](_0x4f55('0x14e'));this[_0x4f55('0xc3')](this[_0x4f55('0x20')][this['actions'][_0xc5bb79['actionid']][_0x4f55('0xc4')]]);this[_0x4f55('0xd1')]({'active':![],'ContactId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x10b')],'ListId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe3')],'VoiceQueueId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]];unlockQueueStatus(_0x47da85);}}else{loggerBooked['info']('[booked][unlock2]');this[_0x4f55('0xc3')](this['voiceQueues'][this['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x10b')],'ListId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe3')],'VoiceQueueId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe6')]||undefined})['catch'](loggerCatch(_0x4f55('0x14f')));delete this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]];unlockQueueStatus(_0x47da85);}}else{loggerBooked[_0x4f55('0x8b')](_0x4f55('0x150'));this[_0x4f55('0xc3')](this['voiceQueues'][this['actions'][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xc4')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0x10b')],'ListId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]][_0x4f55('0xe3')],'VoiceQueueId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x4f55('0x26')][_0xc5bb79[_0x4f55('0x139')]]['CampaignId']||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x151')));delete this['actions'][_0xc5bb79[_0x4f55('0x139')]];unlockQueueStatus(_0x47da85);}};Dialer[_0x4f55('0x1b')]['loopCampaigns']=function(){var _0x531b6b=this;return cmHopper[_0x4f55('0x152')]({'active':![]},{'where':{'active':!![]}})[_0x4f55('0x45')](function(){setInterval(function(){_0x531b6b[_0x4f55('0x153')]();},0x3e8);});};Dialer[_0x4f55('0x1b')][_0x4f55('0x154')]=function(_0x23e6fe){var _0x4959be=this;return function(){if(!_0x4959be[_0x4f55('0xeb')](_0x23e6fe[_0x4f55('0x83')])){if(!_0x4959be[_0x4f55('0xeb')](_0x23e6fe['TrunkBackup'])){_0x23e6fe[_0x4f55('0x47')]=_0x4f55('0x155');throw _0x23e6fe[_0x4f55('0x4e')]+_0x4f55('0x156');}}};};Dialer[_0x4f55('0x1b')][_0x4f55('0x157')]=function(_0x4f4d78,_0x4e8fc1,_0x31fed8,_0x2271a3){var _0x28a8e5=this;return function(){var _0x1d1b39=!![];return _0x28a8e5[_0x4f55('0x158')](_0x4f4d78,_0x4e8fc1,_0x31fed8,_0x2271a3,_0x1d1b39);};};Dialer[_0x4f55('0x1b')]['checkIfTimeIntervals']=function(_0x1fc13a,_0x12c198,_0x448dd3,_0xbf0513){var _0x4053c8=this;return function(){var _0x79039=![];return _0x4053c8['ifTime'](_0x1fc13a[_0x4f55('0x50')],_0x12c198,_0x448dd3,_0xbf0513,_0x79039);};};Dialer['prototype'][_0x4f55('0x158')]=function(_0x46d63c,_0xd5fef5,_0x5105c5,_0x39d4ca,_0x3c2b60){var _0x481c8a=[];return new Promise(function(_0x10ae3b,_0x34900b){if(!isNotNull(_0x46d63c)){_0x39d4ca[_0x4f55('0x47')]='INTERVAL_IS_NULL';return _0x34900b(msgResponse(_0x4f55('0x158'),_0x4f55('0x159'),_0x5105c5+_0x4f55('0x15a')));}if(_['isEmpty'](_0x46d63c)){_0x39d4ca[_0x4f55('0x47')]='INTERVAL_IS_EMPTY';return _0x34900b(msgResponse(_0x4f55('0x158'),'Failure',_0x5105c5+'\x20Intervals\x20is\x20empty\x20'));}if(_0xd5fef5&&_[_0x4f55('0x95')](config[_0x4f55('0x15b')][_0xd5fef5])){_0x39d4ca[_0x4f55('0x47')]=_0x4f55('0x15c');return _0x34900b(msgResponse('ifTime','Failure',_0x5105c5+_0x4f55('0x15d')+_0xd5fef5));}if(_[_0x4f55('0x15e')](_0x46d63c)){for(var _0xb6d65c=0x0;_0xb6d65c<_0x46d63c[_0x4f55('0xa9')];_0xb6d65c+=0x1){_0x481c8a[_0x4f55('0x13f')](ami[_0x4f55('0xc0')]({'action':_0x4f55('0x15f'),'command':util[_0x4f55('0x86')]('iftime\x20%s,%s',_0x46d63c[_0xb6d65c]['interval'],!_[_0x4f55('0x95')](config['timezones'][_0xd5fef5])?_0xd5fef5:'')})['then'](function(_0x3b257a){return _0x3b257a[_0x4f55('0x160')][_0x4f55('0x161')](_0x4f55('0x162'))>=0x0;})[_0x4f55('0xc9')](myreject(_0x34900b)));}}else{_0x481c8a[_0x4f55('0x13f')](ami[_0x4f55('0xc0')]({'action':_0x4f55('0x15f'),'command':util[_0x4f55('0x86')](_0x4f55('0x163'),_0x46d63c,!_[_0x4f55('0x95')](config[_0x4f55('0x15b')][_0xd5fef5])?_0xd5fef5:'')})['then'](function(_0x5a95cb){return _0x5a95cb[_0x4f55('0x160')][_0x4f55('0x161')](_0x4f55('0x162'))>=0x0;})['catch'](myreject(_0x34900b)));}Promise[_0x4f55('0x164')](_0x481c8a)[_0x4f55('0x45')](function(_0x479171){var _0xcba300=_[_0x4f55('0x165')](_0x479171);if(_0xcba300){return _0x10ae3b(_0xcba300);}else{_0x39d4ca[_0x4f55('0x47')]=_0x3c2b60?_0x4f55('0x166'):_0x4f55('0x167');return _0x34900b(msgResponse(_0x4f55('0x168'),'Failure',_0x4f55('0x169')+_0x3c2b60+'\x20'+_0x5105c5+_0x4f55('0x16a')+util[_0x4f55('0xa6')](_0x46d63c,{'showHidden':![],'depth':null})+_0x4f55('0x16b')+_0xd5fef5));}})[_0x4f55('0xc9')](function(_0x3ce64c){return _0x34900b(msgResponse(_0x4f55('0x158'),_0x4f55('0x159'),JSON[_0x4f55('0x53')](_0x3ce64c)));});});};Dialer['prototype'][_0x4f55('0x16c')]=function(_0x2fd089){var _0x407202=this;return function(){switch(_0x2fd089[_0x4f55('0x66')]){case _0x4f55('0x16d'):freeVariablesPredictive(_0x2fd089);_0x407202[_0x4f55('0x16e')](_0x2fd089,0x1);break;case _0x4f55('0x16f'):freeVariablesPredictive(_0x2fd089);_0x407202[_0x4f55('0x16e')](_0x2fd089,_0x2fd089[_0x4f55('0x170')]);break;case _0x4f55('0x9'):_0x407202[_0x4f55('0x9')](_0x2fd089);break;case'booked':freeVariablesPredictive(_0x2fd089);_0x407202[_0x4f55('0x16e')](_0x2fd089,0x1);break;default:freeVariablesPredictive(_0x2fd089);logger[_0x4f55('0xa7')](_0x4f55('0x171'),_0x2fd089['name'],'method\x20not\x20recognized');}};};Dialer['prototype'][_0x4f55('0x172')]=function(_0x331328){return Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](cmHopper['handlePreviewRecallNotifications'](_0x331328['id'],previewRecallmeReminderInterval))[_0x4f55('0x45')](function(_0x3b2def){for(var _0x5075b7=0x0;_0x5075b7<_0x3b2def[_0x4f55('0xa9')];_0x5075b7++){var _0x588db0=_0x3b2def[_0x5075b7][_0x4f55('0x173')][_0x4f55('0x4e')];if(_0x588db0)io['to'](util[_0x4f55('0x86')](_0x4f55('0x174'),_0x588db0))[_0x4f55('0x57')](_0x4f55('0x175'),{'hopper':_0x3b2def[_0x5075b7]});}})[_0x4f55('0xc9')](function(){});};Dialer[_0x4f55('0x1b')]['launchHandleIvr']=function(_0x1e0d6c){var _0x452fc0=this;return function(){_0x452fc0[_0x4f55('0x176')](_0x1e0d6c);};};Dialer[_0x4f55('0x1b')][_0x4f55('0xa')]=function(_0xeda545){var _0x5f4070=this;if(isNotPreview(_0xeda545[_0x4f55('0x66')])){if(isVoiceQueueOutbound(_0xeda545[_0x4f55('0x58')])&&isActive(_0xeda545[_0x4f55('0x65')])){_0xeda545[_0x4f55('0xb1')]=!![];Promise[_0x4f55('0xc8')]()[_0x4f55('0x45')](checkIsLoggedIn(_0xeda545,_0xeda545[_0x4f55('0x5c')]))['then'](checkIsActive(_0xeda545,_0xeda545['dialActive']))[_0x4f55('0x45')](checkInterval(_0xeda545))['then'](_0x5f4070[_0x4f55('0x154')](_0xeda545))['then'](_0x5f4070[_0x4f55('0x157')](_0xeda545['dialGlobalInterval'],_0xeda545[_0x4f55('0x177')],_0xeda545[_0x4f55('0x4e')],_0xeda545))[_0x4f55('0x45')](_0x5f4070[_0x4f55('0x178')](_0xeda545[_0x4f55('0x4c')],_0xeda545[_0x4f55('0x177')],_0xeda545[_0x4f55('0x4e')],_0xeda545))[_0x4f55('0x45')](_0x5f4070[_0x4f55('0x16c')](_0xeda545))[_0x4f55('0xc9')](loggerCatchQueueSummary(_0x4f55('0x179'),_0xeda545));}else{notSendMessagesQueue(_0xeda545);}}else{freeVariablesPredictive(_0xeda545);}};Dialer['prototype'][_0x4f55('0x38')]=_[_0x4f55('0x17a')](function(){var _0x226f8d=_[_0x4f55('0x17b')](this[_0x4f55('0x20')],function(_0x1286fd){return _0x1286fd[_0x4f55('0x17c')];});var _0x457a13=_[_0x4f55('0x17b')](this[_0x4f55('0x22')],function(_0x3b5c2f){return _0x3b5c2f[_0x4f55('0x17d')]&&_0x3b5c2f[_0x4f55('0xc1')]===_0x4f55('0xec');});if(_0x226f8d[_0x4f55('0xa9')]>0x0&&_0x457a13[_0x4f55('0xa9')]>0x0){return Promise[_0x4f55('0xc8')]()['then'](cmHopper[_0x4f55('0x17e')](_[_0x4f55('0x17f')](_0x226f8d,'id'),previewRecallmeReminderInterval,_[_0x4f55('0x17f')](_0x457a13,'id')))[_0x4f55('0x45')](function(_0x24849f){for(var _0x387523=0x0;_0x387523<_0x24849f['length'];_0x387523++){var _0x5384bc=_0x24849f[_0x387523][_0x4f55('0x173')][_0x4f55('0x4e')];if(_0x5384bc)io['to'](util['format'](_0x4f55('0x174'),_0x5384bc))[_0x4f55('0x57')](_0x4f55('0x175'),{'hopper':_0x24849f[_0x387523]});}})[_0x4f55('0xc9')](function(_0x523d32){logger['error'](_0x4f55('0x172'),_0x523d32);});}},0x3c*0x3e8,{'leading':!![]});Dialer['prototype'][_0x4f55('0x153')]=function(){var _0x3e217e=this;var _0x2b1fba;for(var _0x714a18 in this[_0x4f55('0x21')]){if(typeof this['campaigns'][_0x714a18]!=='undefined'){_0x2b1fba=this['campaigns'][_0x714a18];if(isCampaignIvr(_0x2b1fba[_0x4f55('0x58')])&&isActive(_0x2b1fba[_0x4f55('0x84')])){_0x2b1fba['sendMessageOneNotActive']=!![];Promise['resolve']()[_0x4f55('0x45')](checkIsActive(_0x2b1fba,_0x2b1fba[_0x4f55('0x84')]))[_0x4f55('0x45')](checkInterval(_0x2b1fba))[_0x4f55('0x45')](_0x3e217e[_0x4f55('0x154')](_0x2b1fba))[_0x4f55('0x45')](_0x3e217e[_0x4f55('0x157')](_0x2b1fba[_0x4f55('0x180')],_0x2b1fba['dialTimezone'],_0x2b1fba['name'],_0x2b1fba))[_0x4f55('0x45')](_0x3e217e[_0x4f55('0x178')](_0x2b1fba['Interval'],_0x2b1fba[_0x4f55('0x177')],_0x2b1fba[_0x4f55('0x4e')],_0x2b1fba))['then'](_0x3e217e[_0x4f55('0x181')](_0x2b1fba))[_0x4f55('0xc9')](loggerCatchQueueSummary(_0x4f55('0x182'),_0x2b1fba));}else{notSendMessagesCampaign(_0x2b1fba);}}}};function getCallerIdRandom(_0xca02a1,_0x593040){var _0x254353;var _0x2b75bb;var _0x322eda;if(_0x593040<=0x0){_0x593040=0x1;}_0x254353=new RegExp(_0x4f55('0x183')+_0x593040+'}$');_0x2b75bb=Math[_0x4f55('0x184')](0xa,_0x593040-0x1);_0x322eda=Math[_0x4f55('0x184')](0xa,_0x593040)-0x1;return util[_0x4f55('0x86')]('%s',_[_0x4f55('0x185')](_0xca02a1,_0x254353,_[_0x4f55('0x186')](_0x2b75bb,_0x322eda)));}function extractCalleridName(_0x90b429){var _0x1a6ced=_0x90b429['match'](/"(.*?)"/);return _0x1a6ced?_0x1a6ced[0x1]:_0x90b429;}Dialer[_0x4f55('0x1b')][_0x4f55('0x187')]=function(_0x1a8228,_0x12bcbe){var _0x5c8e54=this;var _0x356661=uuid['v4']();this[_0x4f55('0x26')][_0x356661]=new Action(_0x1a8228,_0x12bcbe,_0x356661);return new Promise(function(_0x442941,_0x33f1f4){if(_['isUndefined'](_0x1a8228)&&typeof _0x1a8228!==_0x4f55('0x188')){return _0x33f1f4(msgResponse(_0x4f55('0x189'),_0x4f55('0x159'),_0x4f55('0x18a')));}if(_[_0x4f55('0x95')](_0x12bcbe['phone'])||_0x12bcbe[_0x4f55('0x18b')]===null){return _0x33f1f4(msgResponse(_0x4f55('0x189'),'Failure',_0x4f55('0x18c')));}var _0x78247c={'XMD-CALLERID':_0x5c8e54[_0x4f55('0x26')][_0x356661]['getCaller'](),'XMD-AGI':_0x1a8228[_0x4f55('0x118')]?util[_0x4f55('0x86')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1a8228[_0x4f55('0x118')]):_0x4f55('0x18d'),'XMD-AGIAFTER':_0x1a8228[_0x4f55('0x11f')]?util[_0x4f55('0x86')](_0x4f55('0x18e'),ipAgi,_0x1a8228[_0x4f55('0x11f')]):_0x4f55('0x18d'),'XMD-QUEUE':_0x1a8228[_0x4f55('0x58')]===_0x4f55('0x59')?util[_0x4f55('0x86')](_0x4f55('0x18f'),_0x1a8228[_0x4f55('0x4e')],_0x1a8228['dialQueueOptions']||'',_0x1a8228[_0x4f55('0x120')]?'c':'',_0x1a8228[_0x4f55('0x127')]||0x3):'NONE','XMD-CONTACTID':_0x12bcbe[_0x4f55('0x10b')],'XMD-CDRTYPE':_0x4f55('0x7'),'CALLERID(all)':_0x5c8e54['actions'][_0x356661][_0x4f55('0x190')](),'XMD-AMD':_0x1a8228['dialAMDActive']?_0x4f55('0x191'):_0x4f55('0x18d'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x1a8228[_0x4f55('0xfc')]){_0x78247c['XMD-AMDINITIALSILENCE']=_0x1a8228[_0x4f55('0x192')]||0x9c4;_0x78247c[_0x4f55('0x193')]=_0x1a8228[_0x4f55('0x194')]||0x5dc;_0x78247c[_0x4f55('0x195')]=_0x1a8228[_0x4f55('0x196')]||0x320;_0x78247c[_0x4f55('0x197')]=_0x1a8228[_0x4f55('0x198')]||0x1388;_0x78247c[_0x4f55('0x199')]=_0x1a8228[_0x4f55('0x19a')]||0x64;_0x78247c[_0x4f55('0x19b')]=_0x1a8228[_0x4f55('0x19c')]||0x32;_0x78247c[_0x4f55('0x19d')]=_0x1a8228[_0x4f55('0x19e')]||0x3;_0x78247c[_0x4f55('0x19f')]=_0x1a8228[_0x4f55('0x1a0')]||0x100;_0x78247c['XMD-AMDMAXIMUMWORDLENGTH']=_0x1a8228[_0x4f55('0x1a1')]||0x1388;}if(_0x1a8228[_0x4f55('0x58')]==='outbound'){_0x78247c['XMD-VOICEQUEUEID']=_0x12bcbe[_0x4f55('0xe5')];}else{_0x78247c[_0x4f55('0x1a2')]=_0x12bcbe['CampaignId'];}for(var _0x5da080 in _0x12bcbe[_0x4f55('0x1a3')]){if(typeof _0x12bcbe[_0x4f55('0x1a3')][_0x5da080]!==_0x4f55('0xbe')){if(isNotNull(_0x12bcbe[_0x4f55('0x1a3')][_0x5da080])&&_0x5da080!=='id'&&_0x5da080!==_0x4f55('0x1a4')&&_0x5da080!==_0x4f55('0x1a5')&&_0x5da080!==_0x4f55('0x1a6')){_0x78247c[util[_0x4f55('0x86')]('%s%s',_0x4f55('0x1a7'),_[_0x4f55('0x1a8')](_0x5da080))]=_0x12bcbe[_0x4f55('0x1a3')][_0x5da080];}}}var _0x3ebf86=_0x5c8e54['isTrunkReachable'](_0x1a8228[_0x4f55('0x83')])?getCallerId(_0x1a8228[_0x4f55('0x83')]['callerid'],_0x1a8228[_0x4f55('0x67')],_0x1a8228[_0x4f55('0x1a9')]>0x0?getCallerIdRandom(_0x1a8228['dialOriginateCallerIdNumber'],_0x1a8228[_0x4f55('0x1a9')]):_0x1a8228['dialOriginateCallerIdNumber']):getCallerId(_[_0x4f55('0xbf')](_0x1a8228[_0x4f55('0x1aa')])?_0x1a8228[_0x4f55('0x83')]['callerid']:_0x1a8228[_0x4f55('0x1aa')][_0x4f55('0x85')],_0x1a8228[_0x4f55('0x67')],_0x1a8228[_0x4f55('0x1a9')]>0x0?getCallerIdRandom(_0x1a8228['dialOriginateCallerIdNumber'],_0x1a8228['dialRandomLastDigitCallerIdNumber']):_0x1a8228[_0x4f55('0x68')]);if(_0x3ebf86){_0x78247c['XMD-ORIGINATECALLERIDNAME']=_0x5c8e54[_0x4f55('0x26')][_0x356661][_0x4f55('0x1ab')]=extractCalleridName(_0x3ebf86);_0x78247c[_0x4f55('0x1ac')]=_0x12bcbe[_0x4f55('0x18b')];}_0x1a8228[_0x4f55('0x1ad')]=_0x78247c;return ami[_0x4f55('0xc0')]({'actionid':_0x356661,'action':'originate','channel':_0x5c8e54['isTrunkReachable'](_0x1a8228[_0x4f55('0x83')])?util[_0x4f55('0x86')](_0x4f55('0x1ae'),_0x1a8228[_0x4f55('0x83')][_0x4f55('0x4e')],isNotNull(_0x1a8228[_0x4f55('0x6a')])?_0x1a8228[_0x4f55('0x6a')][_0x4f55('0x1af')]()||'':'',_0x1a8228[_0x4f55('0x1b0')]>0x0?_0x12bcbe[_0x4f55('0x18b')][_0x4f55('0x1b1')](_0x1a8228[_0x4f55('0x1b0')]):_0x12bcbe['phone']):util[_0x4f55('0x86')](_0x4f55('0x1ae'),_[_0x4f55('0xbf')](_0x1a8228[_0x4f55('0x1aa')])?_0x1a8228[_0x4f55('0x83')][_0x4f55('0x4e')]:_0x1a8228[_0x4f55('0x1aa')]['name'],isNotNull(_0x1a8228[_0x4f55('0x6a')])?_0x1a8228['dialPrefix'][_0x4f55('0x1af')]()||'':'',_0x1a8228['dialCutDigit']>0x0?_0x12bcbe[_0x4f55('0x18b')][_0x4f55('0x1b1')](_0x1a8228[_0x4f55('0x1b0')]):_0x12bcbe[_0x4f55('0x18b')]),'callerid':_0x3ebf86,'Exten':_0x4f55('0xef'),'Context':_0x4f55('0x1b2'),'Priority':'1','variable':_0x78247c,'timeout':(_0x1a8228[_0x4f55('0x69')]||0x1e)*0x3e8,'async':!![],'channelid':_0x356661})[_0x4f55('0x45')](function(_0x19db88){return _0x442941(_0x19db88);})[_0x4f55('0xc9')](function(_0x1a0c31){_0x1a8228['outboundOriginateFailureCallsDay']+=0x1;var _0x12737b=new History(_0x5c8e54[_0x4f55('0x26')][_0x356661]);logger[_0x4f55('0xa7')](util['format'](_0x4f55('0x1b3'),JSON[_0x4f55('0x53')](_0x1a0c31)));_0x12737b['state']=0xe;_0x12737b['statedesc']=_0x4f55('0x1b4');_0x12737b[_0x4f55('0xba')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));_0x12737b['endtime']=_0x12737b['starttime'];_0x5c8e54['createHistory'](_0x12737b)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1b5')));_0x5c8e54[_0x4f55('0xdb')](_0x12737b)['catch'](loggerCatch(_0x4f55('0x1b5')))[_0x4f55('0x146')](function(){delete _0x5c8e54[_0x4f55('0x26')][_0x356661];return _0x33f1f4(msgResponse(_0x4f55('0x189'),_0x4f55('0x1b6'),_0x4f55('0x1b7')));});});});};Dialer[_0x4f55('0x1b')]['syncOriginateResponse']=function(_0x37c1d1){var _0x3a9dea=this[_0x4f55('0x26')][_0x37c1d1['actionid']];if(_0x3a9dea){delete this[_0x4f55('0x26')][_0x37c1d1[_0x4f55('0x139')]];_0x3a9dea[_0x4f55('0x126')]=moment()[_0x4f55('0x86')]('YYYY-MM-DD\x20HH:mm:ss');var _0x44962a=_0x3a9dea[_0x4f55('0x58')]===_0x4f55('0x89')?this[_0x4f55('0x21')][_0x3a9dea['queue']]:this['voiceQueues'][_0x3a9dea[_0x4f55('0x1b8')]()];if(!this[_0x4f55('0xe9')](_0x37c1d1[_0x4f55('0x1b9')])){this[_0x4f55('0xc3')](_0x44962a);return this[_0x4f55('0x1ba')](_0x3a9dea,_0x44962a,_0x37c1d1)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1bb')));}this['uniqueId'][_0x37c1d1[_0x4f55('0xf2')]]=_0x3a9dea;}};Dialer[_0x4f55('0x1b')][_0x4f55('0x1bc')]=function(_0x75071,_0x7ce011,_0x1ed0c3){var _0x5f34c0=new History(_0x7ce011);if(_0x5f34c0[_0x4f55('0xff')]+_0x5f34c0[_0x4f55('0x100')]+_0x5f34c0[_0x4f55('0x101')]+_0x5f34c0['countnosuchnumberretry']+_0x5f34c0['countdropretry']+_0x5f34c0[_0x4f55('0x102')]+_0x5f34c0[_0x4f55('0xfd')]+_0x5f34c0[_0x4f55('0x112')]>=_0x1ed0c3[_0x4f55('0x103')]-0x1){return!![];}switch(_0x75071){case 0x3:if(_0x5f34c0[_0x4f55('0x101')]>=_0x1ed0c3[_0x4f55('0x1bd')]-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countnoanswerretry':_0x5f34c0[_0x4f55('0x101')]+=0x1,'scheduledat':moment()['add'](_0x1ed0c3[_0x4f55('0x1be')],_0x4f55('0x109'))[_0x4f55('0x86')](_0x4f55('0x10a')),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0[_0x4f55('0xe3')],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1bf')));break;case 0x5:if(_0x5f34c0[_0x4f55('0xff')]>=_0x1ed0c3[_0x4f55('0x1c0')]-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countbusyretry':_0x5f34c0[_0x4f55('0xff')]+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x1c1')],_0x4f55('0x109'))[_0x4f55('0x86')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0['ListId'],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x5f34c0[_0x4f55('0x100')]>=_0x1ed0c3['dialCongestionMaxRetry']-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countcongestionretry':_0x5f34c0['countcongestionretry']+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x1c2')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0[_0x4f55('0xe3')],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0['CampaignId']||undefined})['catch'](loggerCatch(_0x4f55('0x1c3')));break;case 0x0:if(_0x5f34c0[_0x4f55('0x110')]>=_0x1ed0c3[_0x4f55('0x1c4')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x5f34c0[_0x4f55('0x110')]+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x1c5')],'minutes')[_0x4f55('0x86')](_0x4f55('0x10a')),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0['ListId'],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0['CampaignId']||undefined})['catch'](loggerCatch(_0x4f55('0x1c6')));}break;case 0xa:if(_0x5f34c0[_0x4f55('0x111')]>=_0x1ed0c3[_0x4f55('0x12e')]-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countdropretry':_0x5f34c0[_0x4f55('0x111')]+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x12b')],'minutes')['format'](_0x4f55('0x10a')),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0[_0x4f55('0xe3')],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1c7')));break;case 0xb:if(_0x5f34c0[_0x4f55('0x102')]>=_0x1ed0c3[_0x4f55('0x136')]-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countabandonedretry':_0x5f34c0[_0x4f55('0x102')]+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x137')],_0x4f55('0x109'))['format'](_0x4f55('0x10a')),'ContactId':_0x5f34c0['ContactId'],'ListId':_0x5f34c0[_0x4f55('0xe3')],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1c8')));break;case 0x13:if(_0x5f34c0[_0x4f55('0xfd')]>=_0x1ed0c3[_0x4f55('0x106')]-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countmachineretry':_0x5f34c0[_0x4f55('0xfd')]+=0x1,'scheduledat':moment()['add'](_0x1ed0c3[_0x4f55('0x114')],_0x4f55('0x109'))[_0x4f55('0x86')](_0x4f55('0x10a')),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0['ListId'],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0[_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x115')));break;case 0x14:if(_0x5f34c0['countagentrejectretry']>=_0x1ed0c3['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x4f55('0xd1')]({'active':![],'countagentrejectretry':_0x5f34c0[_0x4f55('0x112')]+=0x1,'scheduledat':moment()[_0x4f55('0x108')](_0x1ed0c3[_0x4f55('0x1c9')],_0x4f55('0x109'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5f34c0[_0x4f55('0x10b')],'ListId':_0x5f34c0[_0x4f55('0xe3')],'VoiceQueueId':_0x5f34c0[_0x4f55('0xe5')]||undefined,'CampaignId':_0x5f34c0['CampaignId']||undefined})[_0x4f55('0xc9')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x4f55('0x1b')][_0x4f55('0x1ba')]=function(_0xdbbc4f,_0x31c633,_0x481094){var _0x16bf7d=this;var _0x36bd6f=new History(_0xdbbc4f);var _0x33e664=![];var _0x1c6f4a;var _0x3fe79d;return new Promise(function(_0xfc1f2f,_0x511068){if(_[_0x4f55('0x95')](_0x31c633)&&typeof _0x31c633!=='object'){return _0x511068(msgResponse(_0x4f55('0x1ca'),'Failure',_0x4f55('0x1cb')));}if(_[_0x4f55('0x95')](_0x481094)&&typeof _0x481094!==_0x4f55('0x188')){return _0x511068(msgResponse(_0x4f55('0x1ca'),_0x4f55('0x159'),'evt\x20is\x20undefine'));}_0x16bf7d[_0x4f55('0xcb')](_0x36bd6f,_0x481094[_0x4f55('0x11d')],_0x31c633)[_0x4f55('0x45')](function(_0xb6bbe7){if(_0xb6bbe7[_0x4f55('0x12d')]==0x1)_0x33e664=!![];switch(_0x481094[_0x4f55('0x11d')]){case'0':_0x31c633[_0x4f55('0x71')]+=0x1;_0x36bd6f[_0x4f55('0xf4')]=0x0;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x1cc');_0x36bd6f[_0x4f55('0x110')]+=0x1;_0x36bd6f['countglobal']+=0x1;ami[_0x4f55('0x57')](_0x4f55('0x1cd'),ut['buildObj'](_0xdbbc4f,_0x4f55('0x1ce')));_0x1c6f4a=_0x31c633[_0x4f55('0x1c5')];_0x3fe79d=_0x31c633['callAdditionalPhoneAfterMin'];_0x16bf7d[_0x4f55('0xdd')](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0xfe')));if(_0x16bf7d[_0x4f55('0x1bc')](0x0,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0x110')]>=_0x31c633['dialNoSuchNumberMaxRetry']){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1cf'));}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1cf'));}}break;case'3':_0x31c633['outboundNoAnswerCallsDay']+=0x1;_0x36bd6f[_0x4f55('0xf4')]=0x3;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x1d0');_0x36bd6f['countnoanswerretry']+=0x1;_0x36bd6f[_0x4f55('0x10f')]+=0x1;var _0x5b60a8=ut[_0x4f55('0x1d1')](_0xdbbc4f,_0x31c633);ami[_0x4f55('0x57')](_0x4f55('0x1d2'),_0x5b60a8);_0x1c6f4a=_0x31c633[_0x4f55('0x1be')];_0x3fe79d=_0x31c633['callAdditionalPhoneAfterMin'];_0x16bf7d[_0x4f55('0xdd')](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1d3')));if(_0x16bf7d['checkRetriveMax'](0x3,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0x101')]>=_0x31c633['dialNoAnswerMaxRetry']){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1d4'));}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1d4'));}}break;case'5':_0x31c633['outboundBusyCallsDay']+=0x1;_0x36bd6f['state']=0x5;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x1d5');_0x36bd6f[_0x4f55('0xff')]+=0x1;_0x36bd6f[_0x4f55('0x10f')]+=0x1;ami[_0x4f55('0x57')](_0x4f55('0x1d6'),ut[_0x4f55('0xf8')](_0xdbbc4f,_0x4f55('0x1d7')));_0x1c6f4a=_0x31c633[_0x4f55('0x1c1')];_0x3fe79d=_0x31c633[_0x4f55('0x135')];_0x16bf7d[_0x4f55('0xdd')](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1d8')));if(_0x16bf7d[_0x4f55('0x1bc')](0x5,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0xff')]>=_0x31c633[_0x4f55('0x1c0')]){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,'reason\x205\x20busy');}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1d9'));}}break;case'8':_0x31c633['outboundCongestionCallsDay']+=0x1;_0x36bd6f['state']=0x8;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x1da');_0x36bd6f['countcongestionretry']+=0x1;_0x36bd6f[_0x4f55('0x10f')]+=0x1;_0x1c6f4a=_0x31c633[_0x4f55('0x1c2')];_0x3fe79d=_0x31c633[_0x4f55('0x135')];ami['emit']('custom:agentcongestion',ut['buildObj'](_0xdbbc4f,_0x4f55('0x1db')));_0x16bf7d['createHistory'](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1dc')));if(_0x16bf7d['checkRetriveMax'](0x8,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0x100')]>=_0x31c633[_0x4f55('0x1dd')]){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1de'));}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1de'));}}break;case'11':_0x31c633[_0x4f55('0x1df')]+=0x1;_0x36bd6f[_0x4f55('0xf4')]=0xb;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x133');_0x36bd6f[_0x4f55('0x102')]+=0x1;_0x36bd6f[_0x4f55('0x10f')]+=0x1;_0x1c6f4a=_0x31c633[_0x4f55('0x137')];_0x3fe79d=_0x31c633[_0x4f55('0x135')];_0x16bf7d['createHistory'](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x138')));if(_0x16bf7d[_0x4f55('0x1bc')](0xb,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0x102')]>=_0x31c633['dialAbandonedMaxRetry']){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1e0'));}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1e0'));}}break;case'20':_0x31c633[_0x4f55('0x74')]+=0x1;_0x36bd6f[_0x4f55('0xf4')]=0x14;_0x36bd6f[_0x4f55('0xb8')]=_0x4f55('0x1e1');_0x36bd6f[_0x4f55('0x112')]+=0x1;_0x36bd6f[_0x4f55('0x10f')]+=0x1;_0x1c6f4a=_0x31c633[_0x4f55('0x1c9')];_0x3fe79d=_0x31c633[_0x4f55('0x135')];ami[_0x4f55('0x57')](_0x4f55('0x1e2'),ut[_0x4f55('0xf8')](_0xdbbc4f,_0x4f55('0x1e3')));_0x16bf7d['createHistory'](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1e4')));if(_0x16bf7d['checkRetriveMax'](0x14,_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0x112')]>=_0x31c633[_0x4f55('0x1e5')]){_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1e6'));}else{_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x4f55('0x1e6'));}}break;default:_0x31c633[_0x4f55('0x75')]+=0x1;_0x36bd6f['state']=0xc;_0x36bd6f[_0x4f55('0xb8')]=_0x481094[_0x4f55('0x11d')];_0x1c6f4a=_0x31c633['dialAgentRejectRetryFrequency'];_0x3fe79d=_0x31c633[_0x4f55('0x135')];_0x16bf7d['createHistory'](_0x36bd6f)[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x1e7')));if(_0x16bf7d[_0x4f55('0x1bc')](_0x481094[_0x4f55('0x11d')],_0xdbbc4f,_0x31c633)&&!_0x33e664){if(_0x36bd6f[_0x4f55('0xff')]+_0x36bd6f[_0x4f55('0x100')]+_0x36bd6f[_0x4f55('0x101')]+_0x36bd6f[_0x4f55('0x110')]+_0x36bd6f[_0x4f55('0x111')]+_0x36bd6f[_0x4f55('0x102')]+_0x36bd6f[_0x4f55('0xfd')]+_0x36bd6f[_0x4f55('0x112')]>=_0x31c633[_0x4f55('0x103')]){_0x16bf7d[_0x4f55('0x104')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x481094[_0x4f55('0x11d')]);}else{_0x16bf7d[_0x4f55('0x113')](_0x36bd6f,_0xfc1f2f,_0x511068,_0x481094[_0x4f55('0x11d')]);}}}})[_0x4f55('0x45')](function(){if(_0x33e664){_0x16bf7d[_0x4f55('0x132')](_0x36bd6f,_0x1c6f4a,_0x3fe79d)['then'](function(){return _0xfc1f2f(0x1);});}});});};Dialer[_0x4f55('0x1b')][_0x4f55('0x104')]=function(_0x374780,_0x9fe89e,_0x3da333,_0x2197da){var _0x340b39=new Final(_0x374780);_0x340b39['state']=0xf;_0x340b39['statedesc']='Global';this[_0x4f55('0x113')](_0x340b39,_0x9fe89e,_0x3da333,_0x2197da);};Dialer[_0x4f55('0x1b')][_0x4f55('0x113')]=function(_0x50ca14,_0x548753,_0x2e2cc9,_0x13e41c){this[_0x4f55('0xdb')](_0x50ca14)[_0x4f55('0x45')](function(){return _0x548753(msgResponse(_0x4f55('0x1ca'),_0x4f55('0xea'),_0x13e41c));})[_0x4f55('0xc9')](function(){return _0x2e2cc9(msgResponse('[moveContactManagedDialer][0]',_0x4f55('0x159'),_0x4f55('0x1e8')));});};Dialer['prototype'][_0x4f55('0x9')]=function(_0x2ae37c){var _0x4a1ad0=_0x2ae37c[_0x4f55('0x1e9')]/0x64;var _0x503f9d=_0x2ae37c[_0x4f55('0x6f')]/(_0x2ae37c[_0x4f55('0x6f')]+_0x2ae37c[_0x4f55('0x119')]);var _0x5947c4=Math[_0x4f55('0x1ea')](_0x2ae37c[_0x4f55('0x7d')]*(_0x2ae37c['predictiveIntervalMaxThreshold']/0x64));var _0x15e651=Math[_0x4f55('0x1ea')](_0x2ae37c[_0x4f55('0x7d')]*(_0x2ae37c[_0x4f55('0x1eb')]/0x64));var _0x29dfce=_0x2ae37c['available']+_0x2ae37c[_0x4f55('0x60')];var _0x3f684c=Math[_0x4f55('0x1ec')](_0x2ae37c['erlangCalls']*_0x2ae37c[_0x4f55('0x80')]*_0x2ae37c[_0x4f55('0x7b')]*_0x2ae37c[_0x4f55('0x7c')]);if(_[_0x4f55('0x95')](_0x2ae37c[_0x4f55('0x82')])){if(!_[_0x4f55('0x95')](_0x2ae37c['startPredictive'])){_0x2ae37c[_0x4f55('0x2a')]=undefined;loggerPredictive[_0x4f55('0xa7')](_0x4f55('0x1ed'),_0x4f55('0x1ee'));}if(!_[_0x4f55('0x95')](_0x2ae37c[_0x4f55('0xa1')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x2ae37c[_0x4f55('0xa1')]);_0x2ae37c['handlePredictive']=undefined;}_0x2ae37c[_0x4f55('0x82')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x2ae37c[_0x4f55('0x4e')],_0x4f55('0x1ef'),_0x2ae37c[_0x4f55('0x82')]);this[_0x4f55('0x16e')](_0x2ae37c,0x1);}else if(ifInterval(_0x2ae37c[_0x4f55('0x1f0')],_0x2ae37c[_0x4f55('0x82')])){this['handlePower'](_0x2ae37c,0x1);loggerPredictiveCalls[_0x4f55('0x8b')]('[startMethodPredictive][StartProgressive][Loop]',_0x2ae37c[_0x4f55('0x82')],_0x2ae37c[_0x4f55('0x4e')]);_0x2ae37c[_0x4f55('0x7f')]=0x0;_0x2ae37c['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x4a1ad0<_0x503f9d&&_0x2ae37c[_0x4f55('0x1f1')]===_0x4f55('0x1f2')){freeVariablesPredictive(_0x2ae37c);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x1f3'),_0x4f55('0x1f4'),_0x503f9d,'startProgressive',_0x2ae37c[_0x4f55('0x4e')]);}else if(_0x3f684c<_0x2ae37c['predictiveIntervalErlangCallsDroppedCalls']&&_0x2ae37c[_0x4f55('0x1f1')]===_0x4f55('0x1f2')){freeVariablesPredictive(_0x2ae37c);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x1f5'),_0x4f55('0x1f6'),_0x3f684c,_0x4f55('0x1f7'),_0x2ae37c[_0x4f55('0x7a')],_0x4f55('0x82'),_0x2ae37c[_0x4f55('0x4e')]);}else if(!ifInterval(_0x2ae37c[_0x4f55('0x1f0')],_0x2ae37c['startProgressive'])&&_[_0x4f55('0x95')](_0x2ae37c[_0x4f55('0x2a')])&&!_[_0x4f55('0x95')](_0x2ae37c[_0x4f55('0x82')])){_0x2ae37c[_0x4f55('0x2a')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));loggerPredictive['info'](_0x2ae37c[_0x4f55('0x4e')],_0x4f55('0x1f8'),_0x2ae37c[_0x4f55('0x2a')]);this['averageHandleTime'](_0x2ae37c[_0x4f55('0x1f0')])[_0x4f55('0x45')](this['getDataPredictive'](_0x2ae37c))[_0x4f55('0x45')](mergeDataErlangB(_0x2ae37c))['then'](this[_0x4f55('0x1f9')](_0x2ae37c))['catch'](loggerCatchPredictive(_0x4f55('0x1fa'),_0x2ae37c));}else if(!ifInterval(_0x2ae37c['dialPredictiveInterval'],_0x2ae37c['startPredictive'])){_0x2ae37c['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x2ae37c[_0x4f55('0x2a')]=moment()[_0x4f55('0x86')](_0x4f55('0x10a'));loggerPredictive[_0x4f55('0x8b')](_0x2ae37c[_0x4f55('0x4e')],_0x4f55('0x1fb'),_0x2ae37c[_0x4f55('0x2a')]);clearInterval(_0x2ae37c['handlePredictive']);_0x2ae37c['handlePredictive']=undefined;this[_0x4f55('0xce')](_0x2ae37c['dialPredictiveInterval'])[_0x4f55('0x45')](this[_0x4f55('0x1fc')](_0x2ae37c))[_0x4f55('0x45')](mergeDataErlangB(_0x2ae37c))['then'](this[_0x4f55('0x1f9')](_0x2ae37c))[_0x4f55('0xc9')](loggerCatchPredictive(_0x4f55('0x1fd'),_0x2ae37c));}else if(_0x2ae37c['predictiveIntervalAvailable']&&_0x29dfce<_0x2ae37c[_0x4f55('0x7d')]-_0x15e651){freeVariablesPredictive(_0x2ae37c);loggerPredictive[_0x4f55('0x8b')](_0x2ae37c[_0x4f55('0x4e')],_0x4f55('0x1fe'),_0x29dfce,_0x4f55('0x1ff'),_0x2ae37c[_0x4f55('0x7d')],'-',_0x15e651,'=',_0x2ae37c[_0x4f55('0x7d')]-_0x15e651,')');}else if(_0x2ae37c[_0x4f55('0x7d')]&&_0x29dfce>_0x2ae37c['predictiveIntervalAvailable']+_0x5947c4){freeVariablesPredictive(_0x2ae37c);loggerPredictive['info'](_0x2ae37c[_0x4f55('0x4e')],_0x4f55('0x1fe'),_0x29dfce,_0x4f55('0x200'),_0x2ae37c[_0x4f55('0x7d')],'+',_0x5947c4,'=',_0x2ae37c[_0x4f55('0x7d')]+_0x5947c4,')');}};Dialer[_0x4f55('0x1b')][_0x4f55('0x1fc')]=function(_0x3e4d1d){var _0x1f3858=this;return function(_0x27b946){return new Promise(function(_0x40aaf5,_0x46ae86){_[_0x4f55('0x9e')](_0x3e4d1d,_0x27b946[0x0]);if(checkGetDataPredictive(_0x27b946[0x0])){var _0x5576e4=_0x3e4d1d['predictiveIntervalAvailable']=_0x3e4d1d[_0x4f55('0x60')]+_0x3e4d1d[_0x4f55('0x5b')];var _0x396381=_0x3e4d1d[_0x4f55('0x1f0')]*0x3c;var _0x27ef7d=_0x27b946[0x0][_0x4f55('0x92')]+_0x27b946[0x0][_0x4f55('0x77')];var _0x4d6c3b=(_0x27b946[0x0][_0x4f55('0x76')]+_0x27b946[0x0][_0x4f55('0x90')]+_0x27b946[0x0][_0x4f55('0x78')])/_0x27b946[0x0][_0x4f55('0x94')];_0x3e4d1d[_0x4f55('0x7b')]=_0x4d6c3b>0x0?_0x4d6c3b:0x1;switch(_0x3e4d1d['dialPredictiveOptimization']){case _0x4f55('0x1f2'):var _0x3b60d7=_0x3e4d1d['dialPredictiveOptimizationPercentage']/0x64;return _0x1f3858['abandonmentRate'](_0x5576e4,_0x396381,_0x27ef7d,_0x4d6c3b,_0x3b60d7)['then'](function(_0x41e2ea){return _0x40aaf5(_0x41e2ea);});case _0x4f55('0x201'):var _0x14d3c2=_0x3e4d1d[_0x4f55('0x1e9')]/0x64;return _0x1f3858[_0x4f55('0x202')](_0x5576e4,_0x396381,_0x27ef7d,_0x4d6c3b,_0x14d3c2)['then'](function(_0x446f00){return _0x40aaf5(_0x446f00);});default:return _0x46ae86(msgResponse(_0x4f55('0x203'),_0x4f55('0x159'),_0x4f55('0x204')));}}else{return _0x46ae86(msgResponse('[getDataPredictive]',_0x4f55('0x159'),_0x4f55('0x205')));}});};};Dialer[_0x4f55('0x1b')]['getDataPredictiveOld']=function(_0x11980f){var _0xf707ab=this;return function(_0x1ac4eb){return new Promise(function(_0x3f7c6f,_0x5de678){_[_0x4f55('0x9e')](_0x11980f,_0x1ac4eb[0x0]);if(checkGetDataPredictive(_0x1ac4eb[0x0])){loggerPredictive[_0x4f55('0x8b')](JSON[_0x4f55('0x53')](_0x1ac4eb[0x0]));if(_0x11980f[_0x4f55('0x1f1')]===_0x4f55('0x1f2')){return _0xf707ab['getVoiceQueueRtPauses'](_0x11980f['id'])[_0x4f55('0x45')](function(_0xbe7e3){var _0x5ea4ef=_0x11980f[_0x4f55('0x5c')]-_0xbe7e3[0x0][_0x4f55('0x206')];var _0x42bb8b=_0x11980f[_0x4f55('0x1f0')]*0x3c;var _0x2ee20a=_0x1ac4eb[0x0]['predictiveIntervalAvgTalktime']+_0x1ac4eb[0x0][_0x4f55('0x77')];var _0x44e2a2=(_0x1ac4eb[0x0]['predictiveIntervalAnsweredCalls']+_0x1ac4eb[0x0][_0x4f55('0x90')]+_0x1ac4eb[0x0][_0x4f55('0x78')])/_0x1ac4eb[0x0][_0x4f55('0x94')];var _0xc6e8e5=_0x11980f[_0x4f55('0x1e9')]/0x64;_0x11980f[_0x4f55('0x207')]=_0xbe7e3[0x0]['outboundQueuePauses']||0x0;_0x11980f[_0x4f55('0x7b')]=_0x44e2a2>0x0?_0x44e2a2:0x1;return _0xf707ab[_0x4f55('0x208')](_0x5ea4ef,_0x42bb8b,_0x2ee20a,_0x44e2a2,_0xc6e8e5);})['then'](function(_0x19835c){return _0x3f7c6f(_0x19835c);})[_0x4f55('0xc9')](function(_0x50c8af){return _0x5de678(msgResponse(_0x4f55('0x209'),_0x4f55('0x159'),JSON[_0x4f55('0x53')](_0x50c8af)));});}if(_0x11980f['dialPredictiveOptimization']===_0x4f55('0x201')){return _0xf707ab[_0x4f55('0xd9')](_0x11980f['id'])[_0x4f55('0x45')](function(_0x592d6e){var _0x3bb54a=_0x11980f[_0x4f55('0x5c')]-_0x592d6e[0x0]['outboundQueuePauses'];var _0x494a5f=_0x11980f[_0x4f55('0x1f0')]*0x3c;var _0x443887=_0x1ac4eb[0x0][_0x4f55('0x92')]+_0x1ac4eb[0x0][_0x4f55('0x77')];var _0x4d3c25=(_0x1ac4eb[0x0]['predictiveIntervalAnsweredCalls']+_0x1ac4eb[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x1ac4eb[0x0][_0x4f55('0x78')])/_0x1ac4eb[0x0][_0x4f55('0x94')];var _0x20409c=_0x11980f[_0x4f55('0x1e9')]/0x64;_0x11980f[_0x4f55('0x207')]=_0x592d6e[0x0][_0x4f55('0x206')]||0x0;_0x11980f[_0x4f55('0x7b')]=_0x4d3c25>0x0?_0x4d3c25:0x1;return _0xf707ab[_0x4f55('0x202')](_0x3bb54a,_0x494a5f,_0x443887,_0x4d3c25,_0x20409c);})[_0x4f55('0x45')](function(_0x27234f){return _0x3f7c6f(_0x27234f);})['catch'](function(_0x43f20a){return _0x5de678(msgResponse(_0x4f55('0x209'),_0x4f55('0x159'),JSON[_0x4f55('0x53')](_0x43f20a)));});}}else{return _0x5de678(msgResponse(_0x4f55('0x203'),_0x4f55('0x159'),'check\x20failure'));}});};};Dialer[_0x4f55('0x1b')][_0x4f55('0x1f9')]=function(_0x4a240a){var _0x50423c=this;return function(){var _0x3b0499=0x0;var _0x28e5f4=Math[_0x4f55('0x1ec')](_0x4a240a['erlangCallToSecond']*0x3e8);if(_0x28e5f4>0x0){_0x28e5f4=_0x28e5f4<0x64?0x64:_0x28e5f4;loggerPredictive['info'](_0x4a240a[_0x4f55('0x4e')],_0x4f55('0x20a'),_0x28e5f4,'milliseconds');_0x4a240a['handlePredictive']=setInterval(function(){_0x50423c[_0x4f55('0xa1')](_0x4a240a);loggerPredictiveCalls[_0x4f55('0x8b')](_0x4f55('0x20b'),_0x3b0499+=0x1);},_0x28e5f4);}else{loggerPredictive[_0x4f55('0x8b')](_0x4a240a[_0x4f55('0x4e')],_0x4f55('0x20c'));}};};Dialer[_0x4f55('0x1b')][_0x4f55('0x20d')]=function(_0x5cf514,_0x2032ae){var _0x4d0e01=this;return function(_0x19b6db){if(_[_0x4f55('0x51')](_0x19b6db)){if(_[_0x4f55('0xbf')](_0x2032ae[_0x4f55('0xe4')])||!_0x2032ae['recallme']){if(_0x5cf514[_0x4f55('0x66')]===_0x4f55('0x8')){_0x5cf514[_0x4f55('0x141')]=_['isUndefined'](_0x5cf514['queueStatusComplete'])?!![]:_0x5cf514[_0x4f55('0x141')];var _0x247dcd=uuid['v4']();_0x4d0e01[_0x4f55('0x26')][_0x247dcd]=new Action(_0x5cf514,_0x2032ae,_0x247dcd);loggerBooked[_0x4f55('0x8b')]('[booked][checkContactBlack]',_0x247dcd,_0x4f55('0x20e'),JSON['stringify'](_0x5cf514['queueStatusComplete']),_0x4f55('0x20f'),_0x5cf514['name']);if(_0x5cf514[_0x4f55('0x141')]){_0x5cf514[_0x4f55('0x141')]=![];_0x4d0e01[_0x4f55('0x13e')][_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0xc4')]]=[];ami[_0x4f55('0xc0')]({'actionid':_0x247dcd,'action':_0x4f55('0x210'),'queue':_0x5cf514[_0x4f55('0x4e')]})['catch'](function(){_0x4d0e01[_0x4f55('0xc3')](_0x5cf514);_0x4d0e01[_0x4f55('0xd1')]({'active':![],'ContactId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0x10b')],'ListId':_0x4d0e01['actions'][_0x247dcd]['ListId'],'VoiceQueueId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0xe5')]||undefined,'CampaignId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x4d0e01[_0x4f55('0x26')][_0x247dcd];});}else{loggerBooked[_0x4f55('0x8b')](_0x4f55('0x211'),JSON[_0x4f55('0x53')](_0x5cf514[_0x4f55('0x141')]),_0x4f55('0x20f'),_0x5cf514[_0x4f55('0x4e')]);_0x4d0e01[_0x4f55('0xc3')](_0x5cf514);_0x4d0e01[_0x4f55('0xd1')]({'active':![],'ContactId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0x10b')],'ListId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0xe3')],'VoiceQueueId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd]['VoiceQueueId']||undefined,'CampaignId':_0x4d0e01[_0x4f55('0x26')][_0x247dcd][_0x4f55('0xe6')]||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x212')));delete _0x4d0e01['actions'][_0x247dcd];}}else{return _0x4d0e01[_0x4f55('0x187')](_0x5cf514,_0x2032ae);}}else{if(getDiff(_0x2032ae[_0x4f55('0x213')])<_0x5cf514[_0x4f55('0x214')]*0x3c){if(_0x2032ae[_0x4f55('0x173')]&&!_0x2032ae[_0x4f55('0x173')][_0x4f55('0x215')]){_0x4d0e01['preview'][_0x4f55('0x144')](_0x2032ae['id'])[_0x4f55('0x146')](function(){_0x4d0e01[_0x4f55('0xc3')](_0x5cf514);});}else{_0x4d0e01[_0x4f55('0xd2')]({'active':![]},_0x2032ae['id'],0x1)[_0x4f55('0x146')](function(){_0x4d0e01[_0x4f55('0xc3')](_0x5cf514);});}}else{_0x5cf514[_0x4f55('0x73')]+=0x1;_0x4d0e01[_0x4f55('0xc3')](_0x5cf514);if(_0x5cf514[_0x4f55('0x216')]){_0x4d0e01[_0x4f55('0xd1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2032ae['ContactId'],'ListId':_0x2032ae[_0x4f55('0xe3')],'VoiceQueueId':_0x2032ae[_0x4f55('0xe5')]||undefined,'CampaignId':_0x2032ae['CampaignId']||undefined})[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x217')));_0x4d0e01[_0x4f55('0xdd')](createObjHistory(_0x5cf514,_0x2032ae,_0x4f55('0x218'),0x17,_0x4f55('0x219')))['catch'](loggerCatch(_0x4f55('0x21a')));}else{_0x4d0e01[_0x4f55('0xe1')](createObjHistory(_0x5cf514,_0x2032ae,_0x4f55('0x21b'),0x16,_0x4f55('0x21c')),'[Originate][HistoryRecallClose][historyCatch]',_0x4f55('0x21d'));}}}}else{_0x5cf514[_0x4f55('0x6b')]+=0x1;_0x4d0e01[_0x4f55('0xe1')](createObjHistory(_0x5cf514,_0x2032ae,_0x4f55('0x21e'),0xd,_0x4f55('0x21f')),_0x4f55('0x220'),_0x4f55('0x221'));throw _0x4f55('0x222');}};};Dialer[_0x4f55('0x1b')][_0x4f55('0x176')]=function(_0x48a820){var _0x3f5984=this;var _0x286cb2=_0x48a820[_0x4f55('0x223')]-_0x48a820[_0x4f55('0x7e')]-_0x48a820[_0x4f55('0xd5')];emitCampaignSummary(_0x48a820);if(_0x286cb2>0x0){if(_0x286cb2>this[_0x4f55('0x24')]){_0x286cb2=this[_0x4f55('0x24')];}_0x48a820['temp']+=_0x286cb2;this['getContactDialerIvr'](_0x48a820['id'],_0x286cb2,_0x48a820[_0x4f55('0x224')],_0x48a820)[_0x4f55('0x45')](function(_0x285924){_0x48a820['temp']-=_0x286cb2;_0x48a820[_0x4f55('0xd5')]=_0x48a820[_0x4f55('0xd5')]>0x0?_0x48a820[_0x4f55('0xd5')]:0x0;if(!checkContactEmpty(_0x285924)){_0x48a820[_0x4f55('0x47')]=_0x4f55('0x225');logger['info']('[getContactCampaign2][Empty]'+_0x48a820['name']);}else{_0x48a820[_0x4f55('0x7e')]+=_0x285924[_0x4f55('0xa9')];_0x48a820['message']=_0x4f55('0x226');for(var _0x52e12a=0x0;_0x52e12a<_0x285924[_0x4f55('0xa9')];_0x52e12a+=0x1){_0x48a820[_0x4f55('0x227')]+=0x1;if(_[_0x4f55('0xbf')](_0x285924[_0x52e12a])||_[_0x4f55('0xbf')](_0x285924[_0x52e12a]['Contact'])||_['isNil'](_0x285924[_0x52e12a][_0x4f55('0x18b')])){_0x3f5984['emptyContact'](_0x4f55('0x228'),_0x48a820,_0x285924[_0x52e12a]);}else{_0x3f5984[_0x4f55('0xcc')](_[_0x4f55('0xe2')](_0x285924[_0x52e12a],[_0x4f55('0xe6'),_0x4f55('0x18b')]))['then'](_0x3f5984[_0x4f55('0x20d')](_0x48a820,_0x285924[_0x52e12a]))[_0x4f55('0xc9')](_0x3f5984[_0x4f55('0xdf')](_0x4f55('0x229'),_0x48a820));}}}})[_0x4f55('0xc9')](loggerGetContactDialer(_0x4f55('0x22a'),_0x48a820,_0x286cb2));}};Dialer[_0x4f55('0x1b')][_0x4f55('0x16e')]=function(_0x326df5,_0x293498){var _0x3e1adc=this;var _0x563de2=[];var _0x35951f=_0x293498>=0x1?_0x293498:0x1;if(_0x326df5['dialMethod']===_0x4f55('0x8')){_0x35951f=0x1;}var _0x1c550c=Math[_0x4f55('0x1ec')](_0x326df5[_0x4f55('0x5b')]*_0x35951f)-_0x326df5[_0x4f55('0x7e')]-_0x326df5[_0x4f55('0xd5')];emitVoiceQueueSummary(_0x326df5);if(_0x326df5['dialLimitQueue']>0x0){var _0x29d1b6=_0x326df5['dialLimitQueue']-_0x326df5[_0x4f55('0x7e')]-_0x326df5['talking']-_0x326df5[_0x4f55('0xd5')]-_0x326df5[_0x4f55('0x5d')];if(_0x1c550c>_0x29d1b6){_0x1c550c=_0x29d1b6;}}if(_0x1c550c>0x0){if(_0x326df5[_0x4f55('0x66')]===_0x4f55('0x8')){_0x1c550c=0x1;}if(_0x1c550c>this['maxNumberOriginate']){_0x1c550c=this[_0x4f55('0x24')];}_0x326df5['temp']+=_0x1c550c;for(var _0x12f292 in this[_0x4f55('0x22')]){if(typeof this[_0x4f55('0x22')][_0x12f292]!=='undefined'){if(this['agents'][_0x12f292]['state']===_0x4f55('0x22b')&&this['agents'][_0x12f292][_0x4f55('0xc1')]===_0x4f55('0xec')){_0x563de2['push'](this[_0x4f55('0x22')][_0x12f292]['id']);}}}this[_0x4f55('0xd4')](_0x326df5['id'],_0x563de2,_0x1c550c,_0x326df5['dialOrderByScheduledAt'],_0x326df5)[_0x4f55('0x45')](function(_0x31736b){_0x326df5[_0x4f55('0xd5')]-=_0x1c550c;_0x326df5[_0x4f55('0xd5')]=_0x326df5[_0x4f55('0xd5')]>0x0?_0x326df5[_0x4f55('0xd5')]:0x0;if(!checkContactEmpty(_0x31736b)){_0x3e1adc['countReScheduled'](_0x326df5)[_0x4f55('0x45')](sendMessageReschedule(_0x326df5))[_0x4f55('0xc9')](loggerCatch(_0x4f55('0x22c')));}else{_0x326df5[_0x4f55('0x7e')]+=_0x31736b[_0x4f55('0xa9')];_0x326df5[_0x4f55('0x47')]=_0x326df5[_0x4f55('0x66')]===_0x4f55('0x8')?_0x4f55('0x191'):_0x4f55('0x226');for(var _0x10087c=0x0;_0x10087c<_0x31736b['length'];_0x10087c+=0x1){if(_[_0x4f55('0xbf')](_0x31736b[_0x10087c])||_[_0x4f55('0xbf')](_0x31736b[_0x10087c][_0x4f55('0x1a3')])||_[_0x4f55('0xbf')](_0x31736b[_0x10087c][_0x4f55('0x18b')])){_0x3e1adc['emptyContact'](_0x4f55('0x228'),_0x326df5,_0x31736b[_0x10087c]);}else{_0x3e1adc[_0x4f55('0x22d')](_[_0x4f55('0xe2')](_0x31736b[_0x10087c],[_0x4f55('0xe5'),'phone']))[_0x4f55('0x45')](_0x3e1adc['checkContactBlack'](_0x326df5,_0x31736b[_0x10087c]))[_0x4f55('0xc9')](_0x3e1adc['loggerHandler'](_0x4f55('0x228'),_0x326df5));}}}})[_0x4f55('0xc9')](loggerGetContactDialer(_0x4f55('0x22e'),_0x326df5,_0x1c550c));}};Dialer[_0x4f55('0x1b')][_0x4f55('0xa1')]=function(_0x127c2e){if(_0x127c2e[_0x4f55('0x22f')]>0x0){var _0x44f99d=_0x127c2e[_0x4f55('0x22f')]-_0x127c2e['originated']-_0x127c2e['talking'];if(_0x44f99d>0x0){this['tryOriginatePredictive'](_0x127c2e);}else{loggerPredictiveCalls[_0x4f55('0x8b')](_0x4f55('0x230'));}}else{this[_0x4f55('0x231')](_0x127c2e);}};Dialer['prototype'][_0x4f55('0x231')]=function(_0x3fb79b){var _0x3ed183=this;var _0x5480a7=[];_0x3fb79b[_0x4f55('0x7e')]+=0x1;for(var _0x31f614 in this['agents']){if(typeof this[_0x4f55('0x22')][_0x31f614]!==_0x4f55('0xbe')){if(this[_0x4f55('0x22')][_0x31f614][_0x4f55('0xf4')]===_0x4f55('0x22b')&&this[_0x4f55('0x22')][_0x31f614]['status']===_0x4f55('0xec')){_0x5480a7[_0x4f55('0x13f')](this[_0x4f55('0x22')][_0x31f614]['id']);}}}this[_0x4f55('0xd4')](_0x3fb79b['id'],_0x5480a7,0x1,_0x3fb79b['dialOrderByScheduledAt'],_0x3fb79b)[_0x4f55('0x45')](function(_0x51e276){if(!checkContactEmpty(_0x51e276)){checkContactLowerLimitOriginate(_0x3fb79b,0x1,0x0);_0x3ed183[_0x4f55('0xc7')](_0x3fb79b)[_0x4f55('0x45')](sendMessageReschedule(_0x3fb79b))[_0x4f55('0xc9')](loggerCatch('[countReScheduled]\x20'));}else{_0x3fb79b[_0x4f55('0x47')]='RUNNING';if(_[_0x4f55('0xbf')](_0x51e276[0x0])||_[_0x4f55('0xbf')](_0x51e276[0x0][_0x4f55('0x1a3')])||_[_0x4f55('0xbf')](_0x51e276[0x0]['phone'])){_0x3ed183[_0x4f55('0xe0')](_0x4f55('0x228'),_0x3fb79b,_0x51e276[0x0]);}else{_0x3ed183[_0x4f55('0x22d')](_[_0x4f55('0xe2')](_0x51e276[0x0],[_0x4f55('0xe5'),'phone']))[_0x4f55('0x45')](_0x3ed183[_0x4f55('0x20d')](_0x3fb79b,_0x51e276[0x0]))['catch'](_0x3ed183[_0x4f55('0xdf')]('[actionOriginatePredictive]\x20',_0x3fb79b));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x3fb79b,0x1));emitVoiceQueueSummary(_0x3fb79b);};Dialer['prototype'][_0x4f55('0x208')]=function(_0x30b3a8,_0x4b474f,_0x56f406,_0x5ee564,_0x35eed8,_0x2e9bbb){loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x232'));loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x233'),_0x30b3a8);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x234'),_0x4b474f);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x235'),_0x56f406);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5ee564);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x236'),_0x35eed8);loggerPredictive['info'](_0x4f55('0x93'));return new Promise(function(_0x3d14ee,_0x2bd608){if(_0x30b3a8<=0x0||isNaN(_0x30b3a8)){return _0x2bd608(msgResponse(_0x4f55('0x237'),_0x4f55('0x1b6'),_0x4f55('0x238')+_0x30b3a8));}if(_0x56f406<=0x0||isNaN(_0x56f406)){return _0x2bd608(msgResponse(_0x4f55('0x237'),_0x4f55('0x1b6'),'Ts\x20=\x20'+_0x56f406));}if(_0x5ee564<=0x0||isNaN(_0x5ee564)){return _0x2bd608(msgResponse(_0x4f55('0x237'),_0x4f55('0x1b6'),_0x4f55('0x239')+_0x5ee564));}if(_0x4b474f<=0x0||isNaN(_0x4b474f)){return _0x2bd608(msgResponse('[abandonmentRate]','Error',_0x4f55('0x23a')+_0x4b474f));}if(_0x35eed8<=0x0||isNaN(_0x35eed8)){return _0x2bd608(msgResponse(_0x4f55('0x237'),_0x4f55('0x1b6'),_0x4f55('0x23b')+_0x35eed8));}_0x2e9bbb=_0x2e9bbb||0x0;var _0x437c8b=0x1/_0x56f406;var _0x104fdb=0x0;var _0x4b97ea=0x0;var _0x2703f8=0x0;var _0x1c77f6=0x0;for(var _0x25edcd=0x0;_0x2703f8<_0x35eed8;_0x25edcd+=0x1){_0x4b97ea=_0x25edcd/_0x4b474f;_0x104fdb=(_0x5ee564*_0x4b97ea+_0x2e9bbb)/_0x437c8b;_0x2703f8=erlangb(_0x104fdb,_0x30b3a8);_0x1c77f6=_0x104fdb/_0x30b3a8*(0x1-erlangb(_0x104fdb,_0x30b3a8));}return _0x3d14ee({'erlangCalls':_0x25edcd,'erlangCallToSecond':_0x4b474f/_0x25edcd,'erlangAbandonmentRate':_0x2703f8,'erlangBusyFactor':_0x1c77f6});});};Dialer[_0x4f55('0x1b')][_0x4f55('0x202')]=function(_0x92736a,_0x28bc06,_0x5d404c,_0x2ca445,_0x4df0e0,_0x34d741){loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x23c'));loggerPredictive['info'](_0x4f55('0x233'),_0x92736a);loggerPredictive['info'](_0x4f55('0x234'),_0x28bc06);loggerPredictive[_0x4f55('0x8b')]('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',_0x5d404c);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x23d'),_0x2ca445);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x23e'),_0x4df0e0);loggerPredictive[_0x4f55('0x8b')](_0x4f55('0x93'));return new Promise(function(_0x5064fb,_0x40067e){if(_0x92736a<=0x0||isNaN(_0x92736a)){return _0x40067e(msgResponse(_0x4f55('0x23f'),_0x4f55('0x1b6'),_0x4f55('0x238')+_0x92736a));}if(_0x5d404c<=0x0||isNaN(_0x5d404c)){return _0x40067e(msgResponse('[busyFactor]',_0x4f55('0x1b6'),_0x4f55('0x240')+_0x5d404c));}if(_0x2ca445<=0x0||isNaN(_0x2ca445)){return _0x40067e(msgResponse('[busyFactor]',_0x4f55('0x1b6'),_0x4f55('0x239')+_0x2ca445));}if(_0x28bc06<=0x0||isNaN(_0x28bc06)){return _0x40067e(msgResponse(_0x4f55('0x23f'),_0x4f55('0x1b6'),_0x4f55('0x23a')+_0x28bc06));}if(_0x4df0e0<=0x0||isNaN(_0x4df0e0)){return _0x40067e(msgResponse(_0x4f55('0x23f'),_0x4f55('0x1b6'),'Umin\x20=\x20'+_0x4df0e0));}_0x34d741=_0x34d741||0x0;var _0x2ae2ee=0x1/_0x5d404c;var _0x36a33a=0x0;var _0x32ca48=0x0;var _0x1bdeba=0x0;var _0x3dfd23=0x0;for(var _0x43009f=0x0;_0x3dfd23<_0x4df0e0;_0x43009f+=0x1){_0x32ca48=_0x43009f/_0x28bc06;_0x36a33a=(_0x2ca445*_0x32ca48+_0x34d741)/_0x2ae2ee;_0x1bdeba=erlangb(_0x36a33a,_0x92736a);_0x3dfd23=_0x36a33a/_0x92736a*(0x1-erlangb(_0x36a33a,_0x92736a));}return _0x5064fb({'erlangCalls':_0x43009f,'erlangCallToSecond':_0x28bc06/_0x43009f,'erlangAbandonmentRate':_0x1bdeba,'erlangBusyFactor':_0x3dfd23});});};module['exports']=Dialer;
\ No newline at end of file
index cc583fa..54efc1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a2f=['calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','seconds','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid'];(function(_0x3ffb80,_0x209661){var _0x3a8a4c=function(_0x24b3e2){while(--_0x24b3e2){_0x3ffb80['push'](_0x3ffb80['shift']());}};_0x3a8a4c(++_0x209661);}(_0x6a2f,0xc1));var _0xf6a2=function(_0xafdec6,_0x3d94df){_0xafdec6=_0xafdec6-0x0;var _0x372bdb=_0x6a2f[_0xafdec6];return _0x372bdb;};'use strict';var util=require('util');var _=require(_0xf6a2('0x0'));var moment=require(_0xf6a2('0x1'));function getSeconds(_0x2147ef,_0x2768ef){var _0xa092f1=moment(_0x2147ef)[_0xf6a2('0x2')](0x0);var _0x70f129=moment(_0x2768ef)[_0xf6a2('0x2')](0x0);return _0xa092f1['diff'](_0x70f129,_0xf6a2('0x3'));}function QueueCallerAbandon(_0x554a0f,_0x582569){this[_0xf6a2('0x4')]=_0x554a0f[_0xf6a2('0x4')];this[_0xf6a2('0x5')]=_0x554a0f[_0xf6a2('0x5')];this['campaigntype']=_0x554a0f['type']==='outbound'?_0xf6a2('0x6'):_0x554a0f[_0xf6a2('0x5')];this['countbusyretry']=_0x554a0f[_0xf6a2('0x7')];this[_0xf6a2('0x8')]=_0x554a0f[_0xf6a2('0x8')];this[_0xf6a2('0x9')]=_0x554a0f[_0xf6a2('0x9')];this[_0xf6a2('0xa')]=_0x554a0f['countbusyretry']+_0x554a0f[_0xf6a2('0x8')]+_0x554a0f[_0xf6a2('0x9')]+_0x554a0f[_0xf6a2('0xb')]+_0x554a0f['countdropretry']+_0x554a0f[_0xf6a2('0xc')]+_0x554a0f[_0xf6a2('0xd')]+_0x554a0f[_0xf6a2('0xe')];this[_0xf6a2('0xb')]=_0x554a0f[_0xf6a2('0xb')];this[_0xf6a2('0xf')]=_0x554a0f[_0xf6a2('0xf')];this[_0xf6a2('0xc')]=_0x554a0f[_0xf6a2('0xc')];this[_0xf6a2('0xd')]=_0x554a0f[_0xf6a2('0xd')];this[_0xf6a2('0xe')]=_0x554a0f[_0xf6a2('0xe')];this['uniqueid']=_0x582569[_0xf6a2('0x10')];this[_0xf6a2('0x11')]=_0x554a0f[_0xf6a2('0x12')];this[_0xf6a2('0x13')]=_0x554a0f[_0xf6a2('0x14')];this[_0xf6a2('0x15')]=_0x554a0f['starttime'];this['responsetime']=_0x554a0f[_0xf6a2('0x16')];this[_0xf6a2('0x17')]=_0x554a0f['droptime'];this[_0xf6a2('0x18')]=this[_0xf6a2('0x17')];this[_0xf6a2('0x19')]=getSeconds(_0x554a0f['responsetime'],_0x554a0f[_0xf6a2('0x15')]);this[_0xf6a2('0x1a')]=getSeconds(this[_0xf6a2('0x17')],_0x554a0f[_0xf6a2('0x16')]);this[_0xf6a2('0x1b')]=0x0;this[_0xf6a2('0x6')]=_0x582569[_0xf6a2('0x6')];this[_0xf6a2('0x1c')]=_0x582569[_0xf6a2('0x1d')];this['reason']=_0x582569[_0xf6a2('0x1e')];this[_0xf6a2('0x1f')]=_0x554a0f[_0xf6a2('0x1f')];this[_0xf6a2('0x20')]=_0x554a0f[_0xf6a2('0x20')];this['callbackat']=_0x554a0f['callbackat'];this[_0xf6a2('0x21')]=_0x554a0f[_0xf6a2('0x21')];this['ContactId']=_0x554a0f[_0xf6a2('0x22')];this[_0xf6a2('0x23')]=_0x554a0f[_0xf6a2('0x23')];this[_0xf6a2('0x24')]=_0x554a0f['UserId'];this[_0xf6a2('0x25')]=_0x554a0f[_0xf6a2('0x25')];this[_0xf6a2('0x26')]=_0x554a0f[_0xf6a2('0x26')];this[_0xf6a2('0x27')]=_0x554a0f[_0xf6a2('0x27')]||'';this['originatecalleridname']=_0x554a0f[_0xf6a2('0x28')]||'';}module[_0xf6a2('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xc7b9=['droptime','endtime','ringtime','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','number','responsetime'];(function(_0x5d4115,_0x12d1c5){var _0x254730=function(_0x7f7d3f){while(--_0x7f7d3f){_0x5d4115['push'](_0x5d4115['shift']());}};_0x254730(++_0x12d1c5);}(_0xc7b9,0xa8));var _0x9c7b=function(_0x511ade,_0x4d84d7){_0x511ade=_0x511ade-0x0;var _0x1822dc=_0xc7b9[_0x511ade];return _0x1822dc;};'use strict';var util=require(_0x9c7b('0x0'));var _=require(_0x9c7b('0x1'));var moment=require(_0x9c7b('0x2'));function getSeconds(_0x50db14,_0x58cfe6){var _0x1be38d=moment(_0x50db14)[_0x9c7b('0x3')](0x0);var _0xd6cd38=moment(_0x58cfe6)['milliseconds'](0x0);return _0x1be38d[_0x9c7b('0x4')](_0xd6cd38,'seconds');}function QueueCallerAbandon(_0x29f39d,_0x2ca7d5){this[_0x9c7b('0x5')]=_0x29f39d[_0x9c7b('0x5')];this[_0x9c7b('0x6')]=_0x29f39d['type'];this[_0x9c7b('0x7')]=_0x29f39d[_0x9c7b('0x6')]===_0x9c7b('0x8')?_0x9c7b('0x9'):_0x29f39d[_0x9c7b('0x6')];this[_0x9c7b('0xa')]=_0x29f39d[_0x9c7b('0xa')];this[_0x9c7b('0xb')]=_0x29f39d[_0x9c7b('0xb')];this['countnoanswerretry']=_0x29f39d[_0x9c7b('0xc')];this[_0x9c7b('0xd')]=_0x29f39d[_0x9c7b('0xa')]+_0x29f39d['countcongestionretry']+_0x29f39d[_0x9c7b('0xc')]+_0x29f39d[_0x9c7b('0xe')]+_0x29f39d[_0x9c7b('0xf')]+_0x29f39d[_0x9c7b('0x10')]+_0x29f39d[_0x9c7b('0x11')]+_0x29f39d['countagentrejectretry'];this[_0x9c7b('0xe')]=_0x29f39d[_0x9c7b('0xe')];this['countdropretry']=_0x29f39d[_0x9c7b('0xf')];this[_0x9c7b('0x10')]=_0x29f39d[_0x9c7b('0x10')];this[_0x9c7b('0x11')]=_0x29f39d['countmachineretry'];this[_0x9c7b('0x12')]=_0x29f39d[_0x9c7b('0x12')];this['uniqueid']=_0x2ca7d5[_0x9c7b('0x13')];this['calleridname']=_0x29f39d['name'];this['calleridnum']=_0x29f39d[_0x9c7b('0x14')];this['starttime']=_0x29f39d['starttime'];this[_0x9c7b('0x15')]=_0x29f39d[_0x9c7b('0x15')];this[_0x9c7b('0x16')]=_0x29f39d['droptime'];this[_0x9c7b('0x17')]=this[_0x9c7b('0x16')];this[_0x9c7b('0x18')]=getSeconds(_0x29f39d[_0x9c7b('0x15')],_0x29f39d['starttime']);this[_0x9c7b('0x19')]=getSeconds(this[_0x9c7b('0x16')],_0x29f39d[_0x9c7b('0x15')]);this[_0x9c7b('0x1a')]=0x0;this[_0x9c7b('0x9')]=_0x2ca7d5[_0x9c7b('0x9')];this['membername']=_0x2ca7d5['connectedlinename'];this[_0x9c7b('0x1b')]=_0x2ca7d5[_0x9c7b('0x1b')];this[_0x9c7b('0x1c')]=_0x29f39d[_0x9c7b('0x1c')];this[_0x9c7b('0x1d')]=_0x29f39d[_0x9c7b('0x1d')];this[_0x9c7b('0x1e')]=_0x29f39d['callbackat'];this[_0x9c7b('0x1f')]=_0x29f39d[_0x9c7b('0x1f')];this['ContactId']=_0x29f39d[_0x9c7b('0x20')];this['ListId']=_0x29f39d['ListId'];this['UserId']=_0x29f39d[_0x9c7b('0x21')];this[_0x9c7b('0x22')]=_0x29f39d[_0x9c7b('0x22')];this[_0x9c7b('0x23')]=_0x29f39d['CampaignId'];this[_0x9c7b('0x24')]=_0x29f39d[_0x9c7b('0x24')]||'';this[_0x9c7b('0x25')]=_0x29f39d[_0x9c7b('0x25')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
index aae05a3..0aa0344 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(_0x2ba529,_0x125df9){var _0x14d3b5=function(_0xd4677f){while(--_0xd4677f){_0x2ba529['push'](_0x2ba529['shift']());}};_0x14d3b5(++_0x125df9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0x1721f7,_0x2a8738){var _0x291efd=function(_0xea24b3){while(--_0xea24b3){_0x1721f7['push'](_0x1721f7['shift']());}};_0x291efd(++_0x2a8738);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 fa6f833..a707ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc71e=['catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','syncOriginateResponse','merge','pick','response','AttachmentId','update','then','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','SUCCESS','faxstatusstring','send','execOriginate','FaxAccountId','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','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','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','addVariables','ext','isNil','active','format','SIP/%s','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','util','lodash','uuid','tiff2pdf','../../../config/logger','./rpcDb','./channel','./util/util','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','syncVarSet','bind','syncNewExten','faxstatus','syncHangup','originateresponse','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','syncNewState','channelstate','channelstatedesc','value','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','parse','.pdf','application/pdf','notify','fax'];(function(_0x5f2324,_0x1b7276){var _0x53fed8=function(_0x34cae2){while(--_0x34cae2){_0x5f2324['push'](_0x5f2324['shift']());}};_0x53fed8(++_0x1b7276);}(_0xc71e,0x1f4));var _0xec71=function(_0x4e3aaa,_0x10144b){_0x4e3aaa=_0x4e3aaa-0x0;var _0x586431=_0xc71e[_0x4e3aaa];return _0x586431;};'use strict';var util=require(_0xec71('0x0'));var _=require(_0xec71('0x1'));var BPromise=require('bluebird');var uuid=require(_0xec71('0x2'));var moment=require('moment');var path=require('path');var tiff2pdf=require(_0xec71('0x3'));var gs=require('./util/gs');var logger=require(_0xec71('0x4'))('fax');var ami=require('../ami');var rpcDb=require(_0xec71('0x5'));var Channel=require(_0xec71('0x6'));var ut=require(_0xec71('0x7'));var Action=require('./action');var faxAccount=require('../rpc/faxAccount');var attachment=require(_0xec71('0x8'));var faxMessage=require(_0xec71('0x9'));function Fax(_0x1cdcc3){this[_0xec71('0xa')]={};this['faxAccounts']=_0x1cdcc3[_0xec71('0xb')];this[_0xec71('0xc')]=_0x1cdcc3['trunks'];this[_0xec71('0xd')]={};ami['on'](_0xec71('0xe'),this[_0xec71('0xf')]['bind'](this));ami['on']('varset',this[_0xec71('0x10')][_0xec71('0x11')](this));ami['on']('newstate',this['syncNewState']['bind'](this));ami['on']('newexten',this[_0xec71('0x12')][_0xec71('0x11')](this));ami['on'](_0xec71('0x13'),this['syncFaxStatus'][_0xec71('0x11')](this));ami['on']('receivefax',this['syncReceiveFax'][_0xec71('0x11')](this));ami['on']('hangup',this[_0xec71('0x14')][_0xec71('0x11')](this));ami['on'](_0xec71('0x15'),this['syncOriginateResponse'][_0xec71('0x11')](this));}Fax['prototype']['syncNewchannel']=function(_0x37e89b){if(_0x37e89b[_0xec71('0x16')]===_0xec71('0x17')){for(var _0x1c17cf in this['faxAccounts']){if(this['faxAccounts'][_0xec71('0x18')](_0x1c17cf)){if(_0x37e89b[_0xec71('0x19')]===this['faxAccounts'][_0x1c17cf][_0xec71('0x1a')]){this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]]={};this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1c')]=_0x37e89b[_0xec71('0x1c')];this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]]['id']=this['faxAccounts'][_0x1c17cf]['id'];this['channels'][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1d')]=this['faxAccounts'][_0x1c17cf][_0xec71('0x1d')];logger[_0xec71('0x1e')](_0x37e89b['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0xec71('0xd')][_0x37e89b['uniqueid']]){this['channels'][_0x37e89b[_0xec71('0x1b')]]={};this[_0xec71('0xa')][_0x37e89b[_0xec71('0x1b')]][_0xec71('0x1c')]=_0x37e89b['channel'];logger[_0xec71('0x1e')](_0x37e89b['uniqueid'],_0xec71('0x1f'));}};Fax[_0xec71('0x20')][_0xec71('0x10')]=function(_0x138d9a){if(this[_0xec71('0xa')][_0x138d9a[_0xec71('0x1b')]]){for(var _0x36f0a7 in _0x138d9a[_0xec71('0x21')]){if(_0x138d9a[_0xec71('0x21')][_0xec71('0x18')](_0x36f0a7)){this[_0xec71('0xa')][_0x138d9a['uniqueid']][_0x36f0a7]=_0x138d9a['value'];}}}};Fax[_0xec71('0x20')][_0xec71('0x22')]=function(_0x3da7be){if(this[_0xec71('0xa')][_0x3da7be['uniqueid']]){this[_0xec71('0xa')][_0x3da7be['uniqueid']][_0xec71('0x23')]=_0x3da7be['channelstate'];this['channels'][_0x3da7be[_0xec71('0x1b')]][_0xec71('0x24')]=_0x3da7be[_0xec71('0x24')];}};Fax[_0xec71('0x20')][_0xec71('0x12')]=function(_0x348fdc){if(this[_0xec71('0xa')][_0x348fdc[_0xec71('0x1b')]]){for(var _0x2c1de4 in _0x348fdc['variable']){if(_0x348fdc[_0xec71('0x21')][_0xec71('0x18')](_0x2c1de4)){this[_0xec71('0xa')][_0x348fdc['uniqueid']][_0x2c1de4]=_0x348fdc[_0xec71('0x25')];}}}};Fax['prototype'][_0xec71('0x26')]=function(_0x26a638){if(this['channels'][_0x26a638[_0xec71('0x1b')]]){this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]][_0xec71('0x27')]=_0x26a638[_0xec71('0x27')];this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]][_0xec71('0x28')]=_0x26a638['status'];this[_0xec71('0xa')][_0x26a638[_0xec71('0x1b')]]['localstationid']=_0x26a638[_0xec71('0x1a')];this[_0xec71('0xa')][_0x26a638['uniqueid']]['filename']=_0x26a638[_0xec71('0x29')];logger[_0xec71('0x1e')](_0x26a638[_0xec71('0x1b')],_0xec71('0x2a'));}};Fax[_0xec71('0x20')][_0xec71('0x2b')]=function(_0x77b827){var _0x3e75dc=this;if(this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]]){var _0x1d80f8=this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]]['id'];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x2c')]=_0x77b827['remotestationid'];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2d')]=_0x77b827[_0xec71('0x2d')];this['channels'][_0x77b827[_0xec71('0x1b')]][_0xec71('0x1a')]=_0x77b827[_0xec71('0x1a')];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2e')]=_0x77b827[_0xec71('0x2e')];this[_0xec71('0xa')][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2f')]=_0x77b827['transferrate'];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x29')]=_0x77b827[_0xec71('0x29')];this[_0xec71('0xa')][_0x77b827['uniqueid']][_0xec71('0x30')]=_0x77b827[_0xec71('0x30')];if(this['channels'][_0x77b827[_0xec71('0x1b')]][_0xec71('0x2d')]>0x0){tiff2pdf(_0x77b827[_0xec71('0x29')],'/var/opt/motion2/server/files/attachments/',function(_0x55d08a){logger[_0xec71('0x1e')](_0x77b827[_0xec71('0x1b')],_0xec71('0x31'),_0x55d08a['message']);attachment['create']({'name':path[_0xec71('0x32')](_0x77b827['filename'])[_0xec71('0x1d')],'basename':path['parse'](_0x77b827[_0xec71('0x29')])[_0xec71('0x1d')]+_0xec71('0x33'),'type':_0xec71('0x34')})['then'](function(_0x46bfb5){faxAccount[_0xec71('0x35')](_0x1d80f8,{'from':_0x77b827[_0xec71('0x30')],'mapKey':_0xec71('0x36'),'body':path['parse'](_0x77b827[_0xec71('0x29')])['name']+'.pdf','AttachmentId':_0x46bfb5['id']})[_0xec71('0x37')](function(_0x4566ee){logger[_0xec71('0x38')](_0x77b827[_0xec71('0x1b')],_0xec71('0x39'),JSON[_0xec71('0x3a')](_0x4566ee));});})[_0xec71('0x37')](function(_0x33fee8){logger[_0xec71('0x38')](_0x77b827['uniqueid'],_0xec71('0x3b'),JSON[_0xec71('0x3a')](_0x33fee8));});});}logger[_0xec71('0x1e')](_0x77b827[_0xec71('0x1b')],_0xec71('0x3b'));}};Fax['prototype'][_0xec71('0x3c')]=function(_0x1d7cab){if(this['actions'][_0x1d7cab['uniqueid']]){_[_0xec71('0x3d')](this[_0xec71('0xa')][_0x1d7cab[_0xec71('0x1b')]],_[_0xec71('0x3e')](_0x1d7cab,[_0xec71('0x3f'),'reason']));}};function updateStatus(_0x2323f3){if(_0x2323f3[_0xec71('0x40')]){faxMessage[_0xec71('0x41')](_0x2323f3[_0xec71('0x40')],{'failMessage':'SENDING\x20FAILED\x20'})[_0xec71('0x42')](function(_0x3f5ee8){ut['logger'](_0xec71('0x43'),_0x3f5ee8);})[_0xec71('0x37')](function(_0x3c13a5){ut[_0xec71('0x44')](_0xec71('0x45'),_0x3c13a5);});}else{ut[_0xec71('0x44')](_0xec71('0x46'));}}Fax[_0xec71('0x20')][_0xec71('0x47')]=function(_0x29b272,_0x4be205,_0x5f0122){var _0x3fa876=this;var _0x18730f={};if(_0x4be205){_0x18730f={'read':_0x4be205};}else{_0x18730f={'failMessage':_0x5f0122};}if(this[_0xec71('0xd')][_0x29b272][_0xec71('0x40')]){faxMessage[_0xec71('0x41')](this[_0xec71('0xd')][_0x29b272][_0xec71('0x40')],_0x18730f)['then'](function(_0x13f1ef){ut[_0xec71('0x44')]('[Fax][Message][Updated]',_0x13f1ef);})[_0xec71('0x37')](function(_0x488276){ut[_0xec71('0x44')]('[Fax][Message][NoUpdate1]',_0x488276);})[_0xec71('0x48')](function(){delete _0x3fa876[_0xec71('0xa')][_0x29b272];delete _0x3fa876[_0xec71('0xd')][_0x29b272];});}else{ut[_0xec71('0x44')](_0xec71('0x49'));delete this[_0xec71('0xa')][_0x29b272];delete this[_0xec71('0xd')][_0x29b272];}};Fax[_0xec71('0x20')]['syncHangup']=function(_0x12ca4a){var _0x2f14a6=this;if(this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]){if(this[_0xec71('0xd')][_0x12ca4a['uniqueid']]){this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]['id']=this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]['id'];this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x1d')]=this['actions'][_0x12ca4a[_0xec71('0x1b')]]['name'];}logger[_0xec71('0x1e')](_0x12ca4a[_0xec71('0x1b')],this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]?_0xec71('0x4a'):'\x20hangup\x20faxRiceive\x20',JSON[_0xec71('0x3a')](this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]]));if(this[_0xec71('0xd')][_0x12ca4a[_0xec71('0x1b')]]){if(this['channels'][_0x12ca4a[_0xec71('0x1b')]]['faxpages']>0x0&&this['channels'][_0x12ca4a['uniqueid']][_0xec71('0x13')]===_0xec71('0x4b')){this['updateStatus'](_0x12ca4a[_0xec71('0x1b')],!![]);}else{this['updateStatus'](_0x12ca4a['uniqueid'],![],this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x4c')]?'SENDING\x20FAILED:\x20'+this[_0xec71('0xa')][_0x12ca4a[_0xec71('0x1b')]][_0xec71('0x4c')]:'SENDING\x20FAILED');}}}};Fax[_0xec71('0x20')][_0xec71('0x4d')]=function(_0x1b5339){var _0x907969=this;return new BPromise(function(_0x44b3f0,_0x3a7cf1){_0x907969[_0xec71('0x4e')](_0x1b5339,_0x907969['faxAccounts'][_0x1b5339[_0xec71('0x4f')]])[_0xec71('0x42')](function(_0x40dbba){ut[_0xec71('0x44')]('[Fax][execOriginate][success]',_0x40dbba);_0x44b3f0(ut[_0xec71('0x50')](_0xec71('0x51')));})[_0xec71('0x37')](function(_0x59780e){ut['logger'](_0xec71('0x52'),_0x59780e);updateStatus(_0x1b5339);_0x3a7cf1(ut[_0xec71('0x50')](_0xec71('0x53')));});});};Fax[_0xec71('0x20')][_0xec71('0x54')]=function(_0x22d523){var _0x20af43=this;return new BPromise(function(_0x3a8068,_0x10399a){var _0x5d78c9=_0x20af43[_0xec71('0x55')](_0x20af43[_0xec71('0xb')][_0x22d523['FaxAccountId']][_0xec71('0x56')],_0x22d523);if(_0x5d78c9[_0xec71('0x57')]){_0x3a8068(ut[_0xec71('0x50')](_0xec71('0x58')));}else{_0x10399a(ut[_0xec71('0x50')](_0x5d78c9[_0xec71('0x50')]));}});};function originate(_0x4768cb,_0x273762,_0xa7f8ff){return new BPromise(function(_0x4061b6,_0x111999){if(_0xa7f8ff){var _0x564e1a=util['format'](_0xec71('0x59'),path['parse'](_0x4768cb[_0xec71('0x5a')])[_0xec71('0x1d')],_0x4768cb[_0xec71('0x5a')]);gs[_0xec71('0x5b')](_0x564e1a)[_0xec71('0x42')](function(){_0x4768cb['path']=util['format'](_0xec71('0x5c'),path[_0xec71('0x32')](_0x4768cb[_0xec71('0x5a')])[_0xec71('0x5d')],path['parse'](_0x4768cb[_0xec71('0x5a')])['name']);_0x273762[_0xec71('0x5e')]=_0x4768cb[_0xec71('0x5a')];ut[_0xec71('0x44')](_0xec71('0x5f'),'');ami['Action'](ut[_0xec71('0x60')](_0x4768cb,_0x273762))[_0xec71('0x42')](function(_0x261e02){_0x4061b6(_0x261e02);})['catch'](function(_0xdc58d0){_0x111999(_0xdc58d0);});})[_0xec71('0x37')](function(_0x126b2a){_0x111999(_0x126b2a);});}else{ami['Action'](ut['variablesAction'](_0x4768cb,_0x273762))['then'](function(_0x10258a){_0x4061b6(_0x10258a);})['catch'](function(_0x490e99){_0x111999(_0x490e99);});}});}Fax['prototype']['execOriginate']=function(_0x43466c,_0x346a6e){var _0x582a38=this;return new BPromise(function(_0x392044,_0x44ab41){var _0x43630c=uuid['v4']();var _0x192338=ut[_0xec71('0x61')](_0x43466c,_0x346a6e);_0x582a38[_0xec71('0xd')][_0x43630c]=new Action(_0x43630c,_0x346a6e,_0x43466c);var _0x7dae20=_0x582a38[_0xec71('0xd')][_0x43630c];if(path[_0xec71('0x32')](_0x43466c['path'])[_0xec71('0x62')]===_0xec71('0x33')){originate(_0x7dae20,_0x192338,!![])[_0xec71('0x42')](function(_0x2043e1){_0x392044(_0x2043e1);})[_0xec71('0x37')](function(_0x5d047c){_0x44ab41(_0x5d047c);});}else{originate(_0x7dae20,_0x192338,![])['then'](function(_0x397e20){_0x392044(_0x397e20);})['catch'](function(_0x1b5f91){_0x44ab41(_0x1b5f91);});}});};Fax[_0xec71('0x20')]['isTrunkReachable']=function(_0x49e080){return!_[_0xec71('0x63')](_0x49e080)&&!_[_0xec71('0x63')](_0x49e080[_0xec71('0x1d')])&&!_[_0xec71('0x63')](_0x49e080['active'])&&_0x49e080[_0xec71('0x64')]&&!_[_0xec71('0x63')](this[_0xec71('0xc')][util[_0xec71('0x65')]('SIP/%s',_0x49e080['name'])])&&!_[_0xec71('0x63')](this[_0xec71('0xc')][util[_0xec71('0x65')](_0xec71('0x66'),_0x49e080[_0xec71('0x1d')])][_0xec71('0x28')])&&(this['trunks'][util[_0xec71('0x65')]('SIP/%s',_0x49e080[_0xec71('0x1d')])][_0xec71('0x28')]==='reachable'||this[_0xec71('0xc')][util[_0xec71('0x65')](_0xec71('0x66'),_0x49e080['name'])][_0xec71('0x28')]==='unmonitored');};Fax[_0xec71('0x20')]['checkTrunk']=function(_0xf196e2,_0x4d6ef0){if(!this[_0xec71('0x67')](_0xf196e2)){ut[_0xec71('0x44')](_0xec71('0x68'),_['isNil'](_0xf196e2)?'':_0xf196e2['name']+_0xec71('0x69'));return{'isValid':![],'message':_0xec71('0x6a')};}if(_[_0xec71('0x63')](_0x4d6ef0[_0xec71('0x36')])){ut[_0xec71('0x44')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0xec71('0x3a')](_0x4d6ef0));return{'isValid':![],'message':_0xec71('0x6b')};}if(_[_0xec71('0x63')](_0x4d6ef0[_0xec71('0x5a')])){ut[_0xec71('0x44')](_0xec71('0x6c'),JSON['stringify'](_0x4d6ef0));return{'isValid':![],'message':_0xec71('0x6d')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xec71('0x6e')]=Fax;
\ No newline at end of file
+var _0xbcf2=['resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message','create','parse','.pdf','application/pdf','fax','stringify','catch','\x20receiveFax\x20','syncOriginateResponse','merge','response','reason','AttachmentId','update','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','then','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','Trunk','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','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','isTrunkReachable','isNil','active','SIP/%s','reachable','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','Empty\x20path','exports','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','../../../config/logger','../ami','./channel','./util/util','./action','../rpc/faxAccount','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','prototype','context','from-voip-provider','hasOwnProperty','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','actions','variable','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred'];(function(_0x1c0369,_0x372fdb){var _0x3c1476=function(_0x3220ed){while(--_0x3220ed){_0x1c0369['push'](_0x1c0369['shift']());}};_0x3c1476(++_0x372fdb);}(_0xbcf2,0x120));var _0x2bcf=function(_0x4e697a,_0x56a14b){_0x4e697a=_0x4e697a-0x0;var _0x88850c=_0xbcf2[_0x4e697a];return _0x88850c;};'use strict';var util=require('util');var _=require(_0x2bcf('0x0'));var BPromise=require(_0x2bcf('0x1'));var uuid=require(_0x2bcf('0x2'));var moment=require(_0x2bcf('0x3'));var path=require(_0x2bcf('0x4'));var tiff2pdf=require(_0x2bcf('0x5'));var gs=require(_0x2bcf('0x6'));var logger=require(_0x2bcf('0x7'))('fax');var ami=require(_0x2bcf('0x8'));var rpcDb=require('./rpcDb');var Channel=require(_0x2bcf('0x9'));var ut=require(_0x2bcf('0xa'));var Action=require(_0x2bcf('0xb'));var faxAccount=require(_0x2bcf('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require('../rpc/faxMessage');function Fax(_0x223dd7){this['channels']={};this[_0x2bcf('0xd')]=_0x223dd7[_0x2bcf('0xd')];this[_0x2bcf('0xe')]=_0x223dd7['trunks'];this['actions']={};ami['on'](_0x2bcf('0xf'),this[_0x2bcf('0x10')][_0x2bcf('0x11')](this));ami['on'](_0x2bcf('0x12'),this[_0x2bcf('0x13')][_0x2bcf('0x11')](this));ami['on'](_0x2bcf('0x14'),this[_0x2bcf('0x15')][_0x2bcf('0x11')](this));ami['on'](_0x2bcf('0x16'),this[_0x2bcf('0x17')][_0x2bcf('0x11')](this));ami['on']('faxstatus',this[_0x2bcf('0x18')][_0x2bcf('0x11')](this));ami['on'](_0x2bcf('0x19'),this[_0x2bcf('0x1a')]['bind'](this));ami['on'](_0x2bcf('0x1b'),this['syncHangup'][_0x2bcf('0x11')](this));ami['on'](_0x2bcf('0x1c'),this['syncOriginateResponse'][_0x2bcf('0x11')](this));}Fax[_0x2bcf('0x1d')][_0x2bcf('0x10')]=function(_0x156cf0){if(_0x156cf0[_0x2bcf('0x1e')]===_0x2bcf('0x1f')){for(var _0x4259f1 in this[_0x2bcf('0xd')]){if(this[_0x2bcf('0xd')][_0x2bcf('0x20')](_0x4259f1)){if(_0x156cf0['exten']===this[_0x2bcf('0xd')][_0x4259f1][_0x2bcf('0x21')]){this[_0x2bcf('0x22')][_0x156cf0[_0x2bcf('0x23')]]={};this[_0x2bcf('0x22')][_0x156cf0['uniqueid']][_0x2bcf('0x24')]=_0x156cf0[_0x2bcf('0x24')];this[_0x2bcf('0x22')][_0x156cf0[_0x2bcf('0x23')]]['id']=this[_0x2bcf('0xd')][_0x4259f1]['id'];this['channels'][_0x156cf0[_0x2bcf('0x23')]][_0x2bcf('0x25')]=this[_0x2bcf('0xd')][_0x4259f1][_0x2bcf('0x25')];logger[_0x2bcf('0x26')](_0x156cf0[_0x2bcf('0x23')],_0x2bcf('0x27'));}}}}if(this[_0x2bcf('0x28')][_0x156cf0[_0x2bcf('0x23')]]){this[_0x2bcf('0x22')][_0x156cf0['uniqueid']]={};this[_0x2bcf('0x22')][_0x156cf0[_0x2bcf('0x23')]]['channel']=_0x156cf0[_0x2bcf('0x24')];logger[_0x2bcf('0x26')](_0x156cf0[_0x2bcf('0x23')],_0x2bcf('0x27'));}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x13')]=function(_0x4c99a6){if(this[_0x2bcf('0x22')][_0x4c99a6['uniqueid']]){for(var _0x131cf3 in _0x4c99a6[_0x2bcf('0x29')]){if(_0x4c99a6['variable'][_0x2bcf('0x20')](_0x131cf3)){this[_0x2bcf('0x22')][_0x4c99a6[_0x2bcf('0x23')]][_0x131cf3]=_0x4c99a6['value'];}}}};Fax[_0x2bcf('0x1d')]['syncNewState']=function(_0x45573d){if(this[_0x2bcf('0x22')][_0x45573d[_0x2bcf('0x23')]]){this['channels'][_0x45573d[_0x2bcf('0x23')]][_0x2bcf('0x2a')]=_0x45573d[_0x2bcf('0x2a')];this['channels'][_0x45573d[_0x2bcf('0x23')]][_0x2bcf('0x2b')]=_0x45573d[_0x2bcf('0x2b')];}};Fax[_0x2bcf('0x1d')]['syncNewExten']=function(_0x49edbd){if(this[_0x2bcf('0x22')][_0x49edbd[_0x2bcf('0x23')]]){for(var _0x1d9504 in _0x49edbd['variable']){if(_0x49edbd[_0x2bcf('0x29')][_0x2bcf('0x20')](_0x1d9504)){this[_0x2bcf('0x22')][_0x49edbd[_0x2bcf('0x23')]][_0x1d9504]=_0x49edbd[_0x2bcf('0x2c')];}}}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x18')]=function(_0x291131){if(this[_0x2bcf('0x22')][_0x291131['uniqueid']]){this['channels'][_0x291131[_0x2bcf('0x23')]][_0x2bcf('0x2d')]=_0x291131[_0x2bcf('0x2d')];this[_0x2bcf('0x22')][_0x291131['uniqueid']][_0x2bcf('0x2e')]=_0x291131[_0x2bcf('0x2e')];this[_0x2bcf('0x22')][_0x291131[_0x2bcf('0x23')]][_0x2bcf('0x21')]=_0x291131[_0x2bcf('0x21')];this['channels'][_0x291131[_0x2bcf('0x23')]][_0x2bcf('0x2f')]=_0x291131[_0x2bcf('0x2f')];logger['info'](_0x291131[_0x2bcf('0x23')],_0x2bcf('0x30'));}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x1a')]=function(_0x1a2977){var _0xb8674c=this;if(this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]]){var _0x488277=this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]]['id'];this['channels'][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x31')]=_0x1a2977[_0x2bcf('0x31')];this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x32')]=_0x1a2977[_0x2bcf('0x32')];this['channels'][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x21')]=_0x1a2977[_0x2bcf('0x21')];this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x33')]=_0x1a2977[_0x2bcf('0x33')];this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x34')]=_0x1a2977[_0x2bcf('0x34')];this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]][_0x2bcf('0x2f')]=_0x1a2977[_0x2bcf('0x2f')];this[_0x2bcf('0x22')][_0x1a2977[_0x2bcf('0x23')]]['calleridnum']=_0x1a2977[_0x2bcf('0x35')];if(this[_0x2bcf('0x22')][_0x1a2977['uniqueid']]['pagestransferred']>0x0){tiff2pdf(_0x1a2977['filename'],_0x2bcf('0x36'),function(_0x24893b){logger[_0x2bcf('0x26')](_0x1a2977[_0x2bcf('0x23')],'\x20result\x20conversion\x20file\x20',_0x24893b[_0x2bcf('0x37')]);attachment[_0x2bcf('0x38')]({'name':path['parse'](_0x1a2977[_0x2bcf('0x2f')])['name'],'basename':path[_0x2bcf('0x39')](_0x1a2977[_0x2bcf('0x2f')])[_0x2bcf('0x25')]+_0x2bcf('0x3a'),'type':_0x2bcf('0x3b')})['then'](function(_0x48d7bf){faxAccount['notify'](_0x488277,{'from':_0x1a2977[_0x2bcf('0x35')],'mapKey':_0x2bcf('0x3c'),'body':path[_0x2bcf('0x39')](_0x1a2977[_0x2bcf('0x2f')])[_0x2bcf('0x25')]+_0x2bcf('0x3a'),'AttachmentId':_0x48d7bf['id']})['catch'](function(_0x5b1968){logger['error'](_0x1a2977[_0x2bcf('0x23')],'\x20notify\x20',JSON[_0x2bcf('0x3d')](_0x5b1968));});})[_0x2bcf('0x3e')](function(_0x4182f7){logger['error'](_0x1a2977[_0x2bcf('0x23')],_0x2bcf('0x3f'),JSON[_0x2bcf('0x3d')](_0x4182f7));});});}logger[_0x2bcf('0x26')](_0x1a2977[_0x2bcf('0x23')],'\x20receiveFax\x20');}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x40')]=function(_0x475db5){if(this[_0x2bcf('0x28')][_0x475db5[_0x2bcf('0x23')]]){_[_0x2bcf('0x41')](this[_0x2bcf('0x22')][_0x475db5[_0x2bcf('0x23')]],_['pick'](_0x475db5,[_0x2bcf('0x42'),_0x2bcf('0x43')]));}};function updateStatus(_0x3edd4a){if(_0x3edd4a[_0x2bcf('0x44')]){faxMessage[_0x2bcf('0x45')](_0x3edd4a['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})['then'](function(_0x5c9520){ut[_0x2bcf('0x46')]('[Fax][Message][Error][Updated]',_0x5c9520);})[_0x2bcf('0x3e')](function(_0x49da42){ut[_0x2bcf('0x46')](_0x2bcf('0x47'),_0x49da42);});}else{ut[_0x2bcf('0x46')](_0x2bcf('0x48'));}}Fax[_0x2bcf('0x1d')][_0x2bcf('0x49')]=function(_0x4f3fdf,_0x5096f2,_0x3f5919){var _0x536ff5=this;var _0x2fb2c5={};if(_0x5096f2){_0x2fb2c5={'read':_0x5096f2};}else{_0x2fb2c5={'failMessage':_0x3f5919};}if(this[_0x2bcf('0x28')][_0x4f3fdf][_0x2bcf('0x44')]){faxMessage[_0x2bcf('0x45')](this['actions'][_0x4f3fdf][_0x2bcf('0x44')],_0x2fb2c5)[_0x2bcf('0x4a')](function(_0x186271){ut[_0x2bcf('0x46')](_0x2bcf('0x4b'),_0x186271);})[_0x2bcf('0x3e')](function(_0x5d2f43){ut[_0x2bcf('0x46')](_0x2bcf('0x4c'),_0x5d2f43);})[_0x2bcf('0x4d')](function(){delete _0x536ff5[_0x2bcf('0x22')][_0x4f3fdf];delete _0x536ff5[_0x2bcf('0x28')][_0x4f3fdf];});}else{ut[_0x2bcf('0x46')](_0x2bcf('0x4e'));delete this[_0x2bcf('0x22')][_0x4f3fdf];delete this[_0x2bcf('0x28')][_0x4f3fdf];}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x4f')]=function(_0x268414){var _0x2863a0=this;if(this[_0x2bcf('0x22')][_0x268414[_0x2bcf('0x23')]]){if(this[_0x2bcf('0x28')][_0x268414[_0x2bcf('0x23')]]){this[_0x2bcf('0x22')][_0x268414[_0x2bcf('0x23')]]['id']=this[_0x2bcf('0x28')][_0x268414[_0x2bcf('0x23')]]['id'];this[_0x2bcf('0x22')][_0x268414[_0x2bcf('0x23')]][_0x2bcf('0x25')]=this[_0x2bcf('0x28')][_0x268414[_0x2bcf('0x23')]][_0x2bcf('0x25')];}logger[_0x2bcf('0x26')](_0x268414['uniqueid'],this['actions'][_0x268414[_0x2bcf('0x23')]]?'\x20hangup\x20sendFile\x20':_0x2bcf('0x50'),JSON[_0x2bcf('0x3d')](this[_0x2bcf('0x22')][_0x268414[_0x2bcf('0x23')]]));if(this[_0x2bcf('0x28')][_0x268414['uniqueid']]){if(this[_0x2bcf('0x22')][_0x268414['uniqueid']][_0x2bcf('0x51')]>0x0&&this[_0x2bcf('0x22')][_0x268414['uniqueid']]['faxstatus']===_0x2bcf('0x52')){this[_0x2bcf('0x49')](_0x268414['uniqueid'],!![]);}else{this['updateStatus'](_0x268414['uniqueid'],![],this[_0x2bcf('0x22')][_0x268414['uniqueid']][_0x2bcf('0x53')]?_0x2bcf('0x54')+this['channels'][_0x268414[_0x2bcf('0x23')]][_0x2bcf('0x53')]:_0x2bcf('0x55'));}}}};Fax[_0x2bcf('0x1d')][_0x2bcf('0x56')]=function(_0x5d4650){var _0x82afe9=this;return new BPromise(function(_0x375dc7,_0x58abd6){_0x82afe9[_0x2bcf('0x57')](_0x5d4650,_0x82afe9[_0x2bcf('0xd')][_0x5d4650[_0x2bcf('0x58')]])['then'](function(_0x11af8f){ut[_0x2bcf('0x46')](_0x2bcf('0x59'),_0x11af8f);_0x375dc7(ut[_0x2bcf('0x37')]('Fax\x20received'));})[_0x2bcf('0x3e')](function(_0x57eccf){ut[_0x2bcf('0x46')](_0x2bcf('0x5a'),_0x57eccf);updateStatus(_0x5d4650);_0x58abd6(ut[_0x2bcf('0x37')](_0x2bcf('0x5b')));});});};Fax[_0x2bcf('0x1d')]['checkAfterSend']=function(_0x54af68){var _0xa86be5=this;return new BPromise(function(_0x4683ba,_0x37e457){var _0x52c13a=_0xa86be5[_0x2bcf('0x5c')](_0xa86be5['faxAccounts'][_0x54af68['FaxAccountId']][_0x2bcf('0x5d')],_0x54af68);if(_0x52c13a['isValid']){_0x4683ba(ut[_0x2bcf('0x37')](_0x2bcf('0x5e')));}else{_0x37e457(ut[_0x2bcf('0x37')](_0x52c13a[_0x2bcf('0x37')]));}});};function originate(_0x2098b7,_0x9ed143,_0x272f45){return new BPromise(function(_0x3c0379,_0x5ae280){if(_0x272f45){var _0x2159fe=util['format'](_0x2bcf('0x5f'),path[_0x2bcf('0x39')](_0x2098b7[_0x2bcf('0x4')])['name'],_0x2098b7[_0x2bcf('0x4')]);gs['execute'](_0x2159fe)['then'](function(){_0x2098b7['path']=util[_0x2bcf('0x60')](_0x2bcf('0x61'),path[_0x2bcf('0x39')](_0x2098b7[_0x2bcf('0x4')])[_0x2bcf('0x62')],path[_0x2bcf('0x39')](_0x2098b7[_0x2bcf('0x4')])['name']);_0x9ed143[_0x2bcf('0x63')]=_0x2098b7[_0x2bcf('0x4')];ut[_0x2bcf('0x46')](_0x2bcf('0x64'),'');ami[_0x2bcf('0x65')](ut[_0x2bcf('0x66')](_0x2098b7,_0x9ed143))[_0x2bcf('0x4a')](function(_0x45ba83){_0x3c0379(_0x45ba83);})['catch'](function(_0x5a488e){_0x5ae280(_0x5a488e);});})[_0x2bcf('0x3e')](function(_0x49a5b8){_0x5ae280(_0x49a5b8);});}else{ami[_0x2bcf('0x65')](ut[_0x2bcf('0x66')](_0x2098b7,_0x9ed143))[_0x2bcf('0x4a')](function(_0x1e1802){_0x3c0379(_0x1e1802);})[_0x2bcf('0x3e')](function(_0x2f183f){_0x5ae280(_0x2f183f);});}});}Fax[_0x2bcf('0x1d')][_0x2bcf('0x57')]=function(_0x9bb321,_0x45e36b){var _0x36219b=this;return new BPromise(function(_0x8fc4a8,_0x52b505){var _0x475a76=uuid['v4']();var _0xf5e943=ut['addVariables'](_0x9bb321,_0x45e36b);_0x36219b[_0x2bcf('0x28')][_0x475a76]=new Action(_0x475a76,_0x45e36b,_0x9bb321);var _0x88251e=_0x36219b[_0x2bcf('0x28')][_0x475a76];if(path[_0x2bcf('0x39')](_0x9bb321['path'])['ext']===_0x2bcf('0x3a')){originate(_0x88251e,_0xf5e943,!![])[_0x2bcf('0x4a')](function(_0x224638){_0x8fc4a8(_0x224638);})[_0x2bcf('0x3e')](function(_0x524f0b){_0x52b505(_0x524f0b);});}else{originate(_0x88251e,_0xf5e943,![])[_0x2bcf('0x4a')](function(_0x5e710f){_0x8fc4a8(_0x5e710f);})[_0x2bcf('0x3e')](function(_0x332bb5){_0x52b505(_0x332bb5);});}});};Fax[_0x2bcf('0x1d')][_0x2bcf('0x67')]=function(_0x2fe204){return!_[_0x2bcf('0x68')](_0x2fe204)&&!_[_0x2bcf('0x68')](_0x2fe204[_0x2bcf('0x25')])&&!_[_0x2bcf('0x68')](_0x2fe204[_0x2bcf('0x69')])&&_0x2fe204[_0x2bcf('0x69')]&&!_['isNil'](this[_0x2bcf('0xe')][util['format'](_0x2bcf('0x6a'),_0x2fe204[_0x2bcf('0x25')])])&&!_['isNil'](this[_0x2bcf('0xe')][util['format'](_0x2bcf('0x6a'),_0x2fe204[_0x2bcf('0x25')])][_0x2bcf('0x2e')])&&(this['trunks'][util[_0x2bcf('0x60')](_0x2bcf('0x6a'),_0x2fe204['name'])][_0x2bcf('0x2e')]===_0x2bcf('0x6b')||this[_0x2bcf('0xe')][util[_0x2bcf('0x60')](_0x2bcf('0x6a'),_0x2fe204['name'])]['status']==='unmonitored');};Fax[_0x2bcf('0x1d')][_0x2bcf('0x5c')]=function(_0x53567b,_0xe279c){if(!this[_0x2bcf('0x67')](_0x53567b)){ut[_0x2bcf('0x46')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x2bcf('0x68')](_0x53567b)?'':_0x53567b[_0x2bcf('0x25')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x2bcf('0x6c')};}if(_[_0x2bcf('0x68')](_0xe279c[_0x2bcf('0x3c')])){ut['logger'](_0x2bcf('0x6d'),JSON[_0x2bcf('0x3d')](_0xe279c));return{'isValid':![],'message':_0x2bcf('0x6e')};}if(_[_0x2bcf('0x68')](_0xe279c['path'])){ut[_0x2bcf('0x46')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x2bcf('0x3d')](_0xe279c));return{'isValid':![],'message':_0x2bcf('0x6f')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x2bcf('0x70')]=Fax;
\ No newline at end of file
index f04e349..3054a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde7a=['../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','catch','[Notify]\x20','util','bluebird'];(function(_0x2f4c1c,_0x5a3dd4){var _0x25e0f2=function(_0x46ea31){while(--_0x46ea31){_0x2f4c1c['push'](_0x2f4c1c['shift']());}};_0x25e0f2(++_0x5a3dd4);}(_0xde7a,0x82));var _0xade7=function(_0x43da0b,_0x4c5e47){_0x43da0b=_0x43da0b-0x0;var _0x333e54=_0xde7a[_0x43da0b];return _0x333e54;};'use strict';var util=require(_0xade7('0x0'));var BPromise=require(_0xade7('0x1'));var logger=require(_0xade7('0x2'))(_0xade7('0x3'));var _=require(_0xade7('0x4'));var faxAccount=require(_0xade7('0x5'));function loggerCatch(_0x5165db){return function(_0x1fefbf){logger[_0xade7('0x6')](_0x5165db,util[_0xade7('0x7')](_0x1fefbf,{'showHidden':![],'depth':null}));};}exports[_0xade7('0x8')]=function(_0x298315,_0x10062a){return BPromise[_0xade7('0x9')]()['then'](faxAccount['notify'](_0x298315,_0x10062a))[_0xade7('0xa')](loggerCatch(_0xade7('0xb')));};
\ No newline at end of file
+var _0xcc72=['preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','then','[Notify]\x20','util','../../../config/logger'];(function(_0x2adf47,_0x18de04){var _0x1a8759=function(_0x1a1d3a){while(--_0x1a1d3a){_0x2adf47['push'](_0x2adf47['shift']());}};_0x1a8759(++_0x18de04);}(_0xcc72,0x8d));var _0x2cc7=function(_0x51bb49,_0x1261e4){_0x51bb49=_0x51bb49-0x0;var _0x2628dc=_0xcc72[_0x51bb49];return _0x2628dc;};'use strict';var util=require(_0x2cc7('0x0'));var BPromise=require('bluebird');var logger=require(_0x2cc7('0x1'))(_0x2cc7('0x2'));var _=require(_0x2cc7('0x3'));var faxAccount=require(_0x2cc7('0x4'));function loggerCatch(_0x14a101){return function(_0x3e1a79){logger[_0x2cc7('0x5')](_0x14a101,util[_0x2cc7('0x6')](_0x3e1a79,{'showHidden':![],'depth':null}));};}exports[_0x2cc7('0x7')]=function(_0x5c8630,_0x486aa3){return BPromise[_0x2cc7('0x8')]()[_0x2cc7('0x9')](faxAccount['notify'](_0x5c8630,_0x486aa3))['catch'](loggerCatch(_0x2cc7('0xa')));};
\ No newline at end of file
index a98af74..3e2f06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe251=['Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process','execute','info'];(function(_0x4b3fd0,_0x5a13b3){var _0x453c61=function(_0x2a00aa){while(--_0x2a00aa){_0x4b3fd0['push'](_0x4b3fd0['shift']());}};_0x453c61(++_0x5a13b3);}(_0xe251,0xc9));var _0x1e25=function(_0x2fc087,_0x72b243){_0x2fc087=_0x2fc087-0x0;var _0x37bfeb=_0xe251[_0x2fc087];return _0x37bfeb;};'use strict';var util=require(_0x1e25('0x0'));var logger=require(_0x1e25('0x1'))(_0x1e25('0x2'));var BPromise=require('bluebird');var exec=require(_0x1e25('0x3'))['exec'];exports[_0x1e25('0x4')]=function(_0x3e5246){return new BPromise(function(_0x4b1278,_0x33f8b0){exec(_0x3e5246,function(_0x302410,_0x5ef9c4,_0x3f64a5){logger[_0x1e25('0x5')](_0x1e25('0x6'),_0x5ef9c4);if(_0x302410){logger[_0x1e25('0x5')](_0x1e25('0x6'),_0x1e25('0x7'),util[_0x1e25('0x8')](_0x302410,{'showHidden':![],'depth':null}),_0x5ef9c4,_0x3f64a5);_0x33f8b0(_0x302410);}_0x4b1278(_0x5ef9c4);});});};
\ No newline at end of file
+var _0x1da4=['exec','execute','Exec\x20gs','info','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird'];(function(_0x1f8efb,_0x28a742){var _0x42f5d4=function(_0x2e1eb4){while(--_0x2e1eb4){_0x1f8efb['push'](_0x1f8efb['shift']());}};_0x42f5d4(++_0x28a742);}(_0x1da4,0x153));var _0x41da=function(_0x3194b5,_0x57cb90){_0x3194b5=_0x3194b5-0x0;var _0xd8d147=_0x1da4[_0x3194b5];return _0xd8d147;};'use strict';var util=require('util');var logger=require(_0x41da('0x0'))(_0x41da('0x1'));var BPromise=require(_0x41da('0x2'));var exec=require('child_process')[_0x41da('0x3')];exports[_0x41da('0x4')]=function(_0x22256b){return new BPromise(function(_0x46fb45,_0x5c9756){exec(_0x22256b,function(_0x1c036a,_0x35df05,_0x44e1eb){logger['info'](_0x41da('0x5'),_0x35df05);if(_0x1c036a){logger[_0x41da('0x6')](_0x41da('0x5'),_0x41da('0x7'),util[_0x41da('0x8')](_0x1c036a,{'showHidden':![],'depth':null}),_0x35df05,_0x44e1eb);_0x5c9756(_0x1c036a);}_0x46fb45(_0x35df05);});});};
\ No newline at end of file
index 78c32e3..00a4c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x208b=['headerinfo','minrate','maxrate','\x22%s\x22','modem','faxdetect','t38timeout','localstationid','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','lodash','moment','../../../../config/logger','message','logger','info','inspect','addVariables','ecm'];(function(_0x3d1fa6,_0x28ca1b){var _0x13e0d8=function(_0x3a1fd0){while(--_0x3a1fd0){_0x3d1fa6['push'](_0x3d1fa6['shift']());}};_0x13e0d8(++_0x28ca1b);}(_0x208b,0x155));var _0xb208=function(_0x17cf5f,_0x2fce35){_0x17cf5f=_0x17cf5f-0x0;var _0x5e08d1=_0x208b[_0x17cf5f];return _0x5e08d1;};'use strict';var util=require('util');var _=require(_0xb208('0x0'));var moment=require(_0xb208('0x1'));var logger=require(_0xb208('0x2'))('fax');exports[_0xb208('0x3')]=function(_0x4bfce3){return{'message':_0x4bfce3};};exports[_0xb208('0x4')]=function(_0x4f4d5e,_0x10447c){logger[_0xb208('0x5')](_0x4f4d5e,util[_0xb208('0x6')](_0x10447c,{'showHidden':![],'depth':null}));};exports[_0xb208('0x7')]=function(_0x2cdc49,_0x5694ee){var _0xb4daf9={'XMF-ECM':_0x5694ee[_0xb208('0x8')],'XMF-HEADERINFO':_0x5694ee[_0xb208('0x9')],'XMF-MINRATE':_0x5694ee[_0xb208('0xa')],'XMF-MAXRATE':_0x5694ee[_0xb208('0xb')],'XMF-MODEM':util['format'](_0xb208('0xc'),_0x5694ee[_0xb208('0xd')]),'XMF-GATEWAY':_0x5694ee['gateway'],'XMF-FAXDETECT':_0x5694ee[_0xb208('0xe')],'XMF-T38TIMEOUT':_0x5694ee[_0xb208('0xf')],'XMF-LOCALSTATIONID':_0x5694ee[_0xb208('0x10')],'XMF-PATH':_0x2cdc49['path']};return _0xb4daf9;};exports[_0xb208('0x11')]=function(_0x59c71f,_0x7db6d0){return{'actionid':_0x59c71f[_0xb208('0x12')],'action':_0xb208('0x13'),'channel':_0x59c71f[_0xb208('0x14')],'Exten':_0xb208('0x15'),'Context':_0xb208('0x16'),'Priority':'1','callerid':util[_0xb208('0x17')](_0xb208('0x18'),_0x59c71f['headerinfo']?_0x59c71f[_0xb208('0x9')]:'',_0x59c71f[_0xb208('0x10')]),'variable':_0x7db6d0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x59c71f[_0xb208('0x12')]};};
\ No newline at end of file
+var _0xc86b=['t38timeout','localstationid','path','variablesAction','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','uniqueid','lodash','moment','../../../../config/logger','fax','message','info','addVariables','ecm','headerinfo','minrate','format','\x22%s\x22','modem','gateway','faxdetect'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xc86b,0x6e));var _0xbc86=function(_0x301ea7,_0x5da154){_0x301ea7=_0x301ea7-0x0;var _0x39ff34=_0xc86b[_0x301ea7];return _0x39ff34;};'use strict';var util=require('util');var _=require(_0xbc86('0x0'));var moment=require(_0xbc86('0x1'));var logger=require(_0xbc86('0x2'))(_0xbc86('0x3'));exports[_0xbc86('0x4')]=function(_0x1b04fa){return{'message':_0x1b04fa};};exports['logger']=function(_0x2e6227,_0x4752e6){logger[_0xbc86('0x5')](_0x2e6227,util['inspect'](_0x4752e6,{'showHidden':![],'depth':null}));};exports[_0xbc86('0x6')]=function(_0x508131,_0x2941a7){var _0x1a3832={'XMF-ECM':_0x2941a7[_0xbc86('0x7')],'XMF-HEADERINFO':_0x2941a7[_0xbc86('0x8')],'XMF-MINRATE':_0x2941a7[_0xbc86('0x9')],'XMF-MAXRATE':_0x2941a7['maxrate'],'XMF-MODEM':util[_0xbc86('0xa')](_0xbc86('0xb'),_0x2941a7[_0xbc86('0xc')]),'XMF-GATEWAY':_0x2941a7[_0xbc86('0xd')],'XMF-FAXDETECT':_0x2941a7[_0xbc86('0xe')],'XMF-T38TIMEOUT':_0x2941a7[_0xbc86('0xf')],'XMF-LOCALSTATIONID':_0x2941a7[_0xbc86('0x10')],'XMF-PATH':_0x508131[_0xbc86('0x11')]};return _0x1a3832;};exports[_0xbc86('0x12')]=function(_0x22b866,_0x571c9f){return{'actionid':_0x22b866['uniqueid'],'action':_0xbc86('0x13'),'channel':_0x22b866[_0xbc86('0x14')],'Exten':_0xbc86('0x15'),'Context':_0xbc86('0x16'),'Priority':'1','callerid':util[_0xbc86('0xa')](_0xbc86('0x17'),_0x22b866['headerinfo']?_0x22b866[_0xbc86('0x8')]:'',_0x22b866[_0xbc86('0x10')]),'variable':_0x571c9f,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x22b866[_0xbc86('0x18')]};};
\ No newline at end of file
index 632e14e..c87fb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff83=['initTrunks','initVoiceQueues','getTriggers','initTriggers','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','initVoiceCallReports','error','inspect','listen','catch','[index.js][main]','util','moment','./realtime','./report','./acw','./trigger','./preview','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','then','getAgents','initAgents','initTelephones'];(function(_0x1a3339,_0x92774f){var _0x3fc981=function(_0x59e953){while(--_0x59e953){_0x1a3339['push'](_0x1a3339['shift']());}};_0x3fc981(++_0x92774f);}(_0xff83,0xee));var _0x3ff8=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xff83[_0x139a3c];return _0x2b375b;};'use strict';var BPromise=require('bluebird');var util=require(_0x3ff8('0x0'));var moment=require(_0x3ff8('0x1'));var server=require('./server');var Realtime=require(_0x3ff8('0x2'));var Report=require(_0x3ff8('0x3'));var Acw=require(_0x3ff8('0x4'));var Trigger=require(_0x3ff8('0x5'));var Dialer=require('./dialer');var Preview=require(_0x3ff8('0x6'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0x3ff8('0x7'));var voiceQueueReport=require(_0x3ff8('0x8'));var voiceCallReport=require(_0x3ff8('0x9'));var trunk=require(_0x3ff8('0xa'));var trigger=require(_0x3ff8('0xb'));var template=require(_0x3ff8('0xc'));var cmHopperHistory=require(_0x3ff8('0xd'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x3ff8('0xe'));var faxAccount=require(_0x3ff8('0xf'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x3ff8('0x10'));var freshdesk=require(_0x3ff8('0x11'));var desk=require(_0x3ff8('0x12'));var zoho=require(_0x3ff8('0x13'));var vtiger=require(_0x3ff8('0x14'));var freshsales=require(_0x3ff8('0x15'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x3ff8('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x3ff8('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x3ff8('0x18')](_0x3ff8('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x3ff8('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x3ff8('0x1a')](user[_0x3ff8('0x1b')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1c')]())['then'](user['getTelephones']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1d')]())[_0x3ff8('0x1a')](trunk['getTrunks']())['then'](realtime[_0x3ff8('0x1e')]())[_0x3ff8('0x1a')](voiceQueue['getVoiceQueues']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x1f')]())[_0x3ff8('0x1a')](trigger[_0x3ff8('0x20')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x21')]())[_0x3ff8('0x1a')](template['getTemplates']())[_0x3ff8('0x1a')](realtime['initTemplates']())[_0x3ff8('0x1a')](zendesk[_0x3ff8('0x22')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x23')]())[_0x3ff8('0x1a')](salesforce[_0x3ff8('0x24')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x25')]())[_0x3ff8('0x1a')](sugarcrm[_0x3ff8('0x26')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x27')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x28')]())[_0x3ff8('0x1a')](desk['getDeskAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x29')]())[_0x3ff8('0x1a')](zoho[_0x3ff8('0x2a')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2b')]())[_0x3ff8('0x1a')](vtiger[_0x3ff8('0x2c')]())[_0x3ff8('0x1a')](realtime['initVtigerAccounts']())[_0x3ff8('0x1a')](freshsales[_0x3ff8('0x2d')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2e')]())[_0x3ff8('0x1a')](servicenow['getServicenowAccounts']())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x2f')]())[_0x3ff8('0x1a')](dynamics365[_0x3ff8('0x30')]())['then'](realtime['initDynamics365Accounts']())[_0x3ff8('0x1a')](campaign[_0x3ff8('0x31')]())[_0x3ff8('0x1a')](realtime['initCampaigns']())['then'](voiceExtension[_0x3ff8('0x32')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x33')]())[_0x3ff8('0x1a')](faxAccount[_0x3ff8('0x34')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x35')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x3ff8('0x36')]()[_0x3ff8('0x1a')](voiceQueueReport[_0x3ff8('0x37')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x38')]())[_0x3ff8('0x1a')](cmHopperHistory[_0x3ff8('0x39')]())['then'](realtime[_0x3ff8('0x3a')]())[_0x3ff8('0x1a')](cmHopperHistory[_0x3ff8('0x3b')]())[_0x3ff8('0x1a')](realtime[_0x3ff8('0x3c')]())['then'](voiceCallReport['getVoiceCallReports']())['then'](realtime[_0x3ff8('0x3d')]())['catch'](function(_0x2cfd03){logger[_0x3ff8('0x3e')]('[index.js][initParams]',util[_0x3ff8('0x3f')](_0x2cfd03,{'showHidden':![],'depth':null}));});}function main(){return server[_0x3ff8('0x40')](realtime,preview,fax)[_0x3ff8('0x1a')](function(_0x141f8c){return initRealtime();})[_0x3ff8('0x1a')](function(){return initParams();})[_0x3ff8('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x3ff8('0x41')](function(_0x157a56){logger[_0x3ff8('0x3e')](_0x3ff8('0x42'),util[_0x3ff8('0x3f')](_0x157a56,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x88a9=['hour','getAgents','then','initAgents','getTrunks','initTrunks','getVoiceQueues','initTriggers','getTemplates','getZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initVoiceCallReports','error','[index.js][initParams]','inspect','listen','sync','bluebird','util','./realtime','./report','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get'];(function(_0x64aff8,_0x106082){var _0x5488a3=function(_0x36969c){while(--_0x36969c){_0x64aff8['push'](_0x64aff8['shift']());}};_0x5488a3(++_0x106082);}(_0x88a9,0x171));var _0x988a=function(_0x26163b,_0x5e7fb3){_0x26163b=_0x26163b-0x0;var _0x39bcf2=_0x88a9[_0x26163b];return _0x39bcf2;};'use strict';var BPromise=require(_0x988a('0x0'));var util=require(_0x988a('0x1'));var moment=require('moment');var server=require('./server');var Realtime=require(_0x988a('0x2'));var Report=require(_0x988a('0x3'));var Acw=require('./acw');var Trigger=require('./trigger');var Dialer=require('./dialer');var Preview=require(_0x988a('0x4'));var Fax=require(_0x988a('0x5'));var user=require(_0x988a('0x6'));var voiceQueue=require(_0x988a('0x7'));var voiceQueueReport=require(_0x988a('0x8'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x988a('0x9'));var trigger=require(_0x988a('0xa'));var template=require(_0x988a('0xb'));var cmHopperHistory=require(_0x988a('0xc'));var campaign=require(_0x988a('0xd'));var voiceExtension=require(_0x988a('0xe'));var faxAccount=require(_0x988a('0xf'));var zendesk=require(_0x988a('0x10'));var salesforce=require(_0x988a('0x11'));var sugarcrm=require(_0x988a('0x12'));var freshdesk=require(_0x988a('0x13'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x988a('0x14'));var vtiger=require(_0x988a('0x15'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x988a('0x16'));var dynamics365=require(_0x988a('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x988a('0x18'))(_0x988a('0x19'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x988a('0x1a')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x988a('0x1a')](_0x988a('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x988a('0x1c')]())[_0x988a('0x1d')](realtime[_0x988a('0x1e')]())[_0x988a('0x1d')](user['getTelephones']())[_0x988a('0x1d')](realtime['initTelephones']())[_0x988a('0x1d')](trunk[_0x988a('0x1f')]())[_0x988a('0x1d')](realtime[_0x988a('0x20')]())[_0x988a('0x1d')](voiceQueue[_0x988a('0x21')]())['then'](realtime['initVoiceQueues']())[_0x988a('0x1d')](trigger['getTriggers']())[_0x988a('0x1d')](realtime[_0x988a('0x22')]())[_0x988a('0x1d')](template[_0x988a('0x23')]())['then'](realtime['initTemplates']())['then'](zendesk[_0x988a('0x24')]())['then'](realtime['initZendeskAccounts']())[_0x988a('0x1d')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x988a('0x25')]())[_0x988a('0x1d')](sugarcrm[_0x988a('0x26')]())[_0x988a('0x1d')](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0x988a('0x27')]())['then'](realtime['initFreshdeskAccounts']())[_0x988a('0x1d')](desk[_0x988a('0x28')]())['then'](realtime[_0x988a('0x29')]())[_0x988a('0x1d')](zoho[_0x988a('0x2a')]())['then'](realtime[_0x988a('0x2b')]())[_0x988a('0x1d')](vtiger[_0x988a('0x2c')]())['then'](realtime[_0x988a('0x2d')]())[_0x988a('0x1d')](freshsales['getFreshsalesAccounts']())[_0x988a('0x1d')](realtime[_0x988a('0x2e')]())['then'](servicenow[_0x988a('0x2f')]())[_0x988a('0x1d')](realtime[_0x988a('0x30')]())['then'](dynamics365[_0x988a('0x31')]())[_0x988a('0x1d')](realtime[_0x988a('0x32')]())['then'](campaign[_0x988a('0x33')]())[_0x988a('0x1d')](realtime['initCampaigns']())[_0x988a('0x1d')](voiceExtension[_0x988a('0x34')]())[_0x988a('0x1d')](realtime[_0x988a('0x35')]())[_0x988a('0x1d')](faxAccount[_0x988a('0x36')]())['then'](realtime[_0x988a('0x37')]())[_0x988a('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0x988a('0x38')]()[_0x988a('0x1d')](voiceQueueReport[_0x988a('0x39')]())['then'](realtime['initVoiceQueueReports']())[_0x988a('0x1d')](cmHopperHistory[_0x988a('0x3a')]())[_0x988a('0x1d')](realtime['initVoiceQueueHopperHistory']())[_0x988a('0x1d')](cmHopperHistory[_0x988a('0x3b')]())[_0x988a('0x1d')](realtime['initCampaignHopperHistory']())[_0x988a('0x1d')](voiceCallReport['getVoiceCallReports']())[_0x988a('0x1d')](realtime[_0x988a('0x3c')]())['catch'](function(_0x2d01b8){logger[_0x988a('0x3d')](_0x988a('0x3e'),util[_0x988a('0x3f')](_0x2d01b8,{'showHidden':![],'depth':null}));});}function main(){return server[_0x988a('0x40')](realtime,preview,fax)[_0x988a('0x1d')](function(_0x97b2cc){return initRealtime();})[_0x988a('0x1d')](function(){return initParams();})[_0x988a('0x1d')](function(){report[_0x988a('0x41')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x25f1d9){logger['error']('[index.js][main]',util[_0x988a('0x3f')](_0x25f1d9,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index ec3d826..f36c142 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x4130f2,_0x2d6dfe){var _0x23abdf=function(_0x443d4e){while(--_0x443d4e){_0x4130f2['push'](_0x4130f2['shift']());}};_0x23abdf(++_0x2d6dfe);}(_0x70e0,0x17b));var _0x070e=function(_0x2d97ce,_0x4860af){_0x2d97ce=_0x2d97ce-0x0;var _0x446111=_0x70e0[_0x2d97ce];return _0x446111;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
+var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x4109e7,_0x2c8158){var _0x28d807=function(_0x386518){while(--_0x386518){_0x4109e7['push'](_0x4109e7['shift']());}};_0x28d807(++_0x2c8158);}(_0x9c44,0x178));var _0x49c4=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x9c44[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=Agent;
\ No newline at end of file
index 380343e..4cf5293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937d=['SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','temp','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval'];(function(_0xfe455b,_0x5a5819){var _0xa47b3d=function(_0x3a6939){while(--_0x3a6939){_0xfe455b['push'](_0xfe455b['shift']());}};_0xa47b3d(++_0x5a5819);}(_0x937d,0x9c));var _0xd937=function(_0x2d4816,_0x5c0a86){_0x2d4816=_0x2d4816-0x0;var _0x3d345e=_0x937d[_0x2d4816];return _0x3d345e;};'use strict';function Campaign(_0x413c36){this['id']=_0x413c36['id']||0x0;this[_0xd937('0x0')]=_0x413c36[_0xd937('0x0')]||'';this['type']=_0x413c36[_0xd937('0x1')]||_0xd937('0x2');this['originated']=0x0;this[_0xd937('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this['ivrTotalCallsDays']=0x0;this[_0xd937('0x4')]='';this[_0xd937('0x5')]=!![];this[_0xd937('0x6')]=_0x413c36[_0xd937('0x6')];this[_0xd937('0x7')]=_0x413c36[_0xd937('0x7')];this['dialTimezone']=_0x413c36[_0xd937('0x8')]||null;this[_0xd937('0x9')]=_0x413c36[_0xd937('0x9')]?_0x413c36[_0xd937('0x9')]:null;this['dialOriginateCallerIdName']=_0x413c36['dialOriginateCallerIdName'];this[_0xd937('0xa')]=_0x413c36[_0xd937('0xa')];this[_0xd937('0xb')]=_0x413c36[_0xd937('0xb')]||0x1e;this['dialCongestionMaxRetry']=_0x413c36[_0xd937('0xc')];this[_0xd937('0xd')]=_0x413c36[_0xd937('0xd')];this[_0xd937('0xe')]=_0x413c36[_0xd937('0xe')];this[_0xd937('0xf')]=_0x413c36[_0xd937('0xf')];this[_0xd937('0x10')]=_0x413c36[_0xd937('0x10')];this[_0xd937('0x11')]=_0x413c36[_0xd937('0x11')];this['dialGlobalMaxRetry']=_0x413c36[_0xd937('0x12')];this[_0xd937('0x13')]=_0x413c36[_0xd937('0x13')]||0x3;this[_0xd937('0x14')]=_0x413c36[_0xd937('0x14')]||0x96;this[_0xd937('0x15')]=_0x413c36[_0xd937('0x15')]||0x3;this['dialDropRetryFrequency']=_0x413c36[_0xd937('0x16')]||0x96;this[_0xd937('0x17')]=_0x413c36[_0xd937('0x17')]||0x3;this['dialAbandonedRetryFrequency']=_0x413c36[_0xd937('0x18')]||0x96;this['dialMachineMaxRetry']=_0x413c36['dialMachineMaxRetry']||0x3;this[_0xd937('0x19')]=_0x413c36['dialMachineRetryFrequency']||0x96;this[_0xd937('0x1a')]=_0x413c36['dialAgentRejectMaxRetry']||0x3;this[_0xd937('0x1b')]=_0x413c36[_0xd937('0x1b')]||0x96;this[_0xd937('0x1c')]=_0x413c36[_0xd937('0x1c')]||_0xd937('0x1d');this[_0xd937('0x1e')]=_0x413c36[_0xd937('0x1e')]||undefined;this[_0xd937('0x1f')]=_0x413c36['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xd937('0x20')]=_0x413c36[_0xd937('0x20')]||undefined;this[_0xd937('0x21')]=_0x413c36[_0xd937('0x21')]?_0x413c36[_0xd937('0x21')]:undefined;this['Trunk']=_0x413c36[_0xd937('0x22')]?_0x413c36[_0xd937('0x22')]:undefined;this[_0xd937('0x23')]=_0x413c36[_0xd937('0x23')]?_0x413c36[_0xd937('0x23')]:undefined;this[_0xd937('0x24')]=_0x413c36['SquareProject']?_0x413c36['SquareProject']:undefined;this[_0xd937('0x25')]=_0x413c36[_0xd937('0x24')]?_0x413c36[_0xd937('0x24')][_0xd937('0x0')]:undefined;this['dialAMDActive']=_0x413c36[_0xd937('0x26')]||![];this[_0xd937('0x27')]=_0x413c36['dialAMDInitialSilence'];this[_0xd937('0x28')]=_0x413c36[_0xd937('0x28')];this[_0xd937('0x29')]=_0x413c36[_0xd937('0x29')];this[_0xd937('0x2a')]=_0x413c36[_0xd937('0x2a')];this[_0xd937('0x2b')]=_0x413c36[_0xd937('0x2b')];this[_0xd937('0x2c')]=_0x413c36[_0xd937('0x2c')];this['dialAMDMaximumNumberOfWords']=_0x413c36[_0xd937('0x2d')];this[_0xd937('0x2e')]=_0x413c36[_0xd937('0x2e')];this[_0xd937('0x2f')]=_0x413c36[_0xd937('0x2f')];}module['exports']=Campaign;
\ No newline at end of file
+var _0xae88=['dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','exports','name','type','campaign','temp','ivrAnswerCallsDay','ivrTotalCallsDays','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting'];(function(_0x1fab70,_0x7d8841){var _0x1ce2d2=function(_0x3bfc9f){while(--_0x3bfc9f){_0x1fab70['push'](_0x1fab70['shift']());}};_0x1ce2d2(++_0x7d8841);}(_0xae88,0x18f));var _0x8ae8=function(_0x295dc1,_0x317742){_0x295dc1=_0x295dc1-0x0;var _0x5e8028=_0xae88[_0x295dc1];return _0x5e8028;};'use strict';function Campaign(_0x4df85c){this['id']=_0x4df85c['id']||0x0;this[_0x8ae8('0x0')]=_0x4df85c[_0x8ae8('0x0')]||'';this[_0x8ae8('0x1')]=_0x4df85c[_0x8ae8('0x1')]||_0x8ae8('0x2');this['originated']=0x0;this[_0x8ae8('0x3')]=0x0;this[_0x8ae8('0x4')]=0x0;this[_0x8ae8('0x5')]=0x0;this['message']='';this['sendMessageOneNotActive']=!![];this[_0x8ae8('0x6')]=_0x4df85c[_0x8ae8('0x6')];this[_0x8ae8('0x7')]=_0x4df85c['limitCalls'];this[_0x8ae8('0x8')]=_0x4df85c[_0x8ae8('0x8')]||null;this[_0x8ae8('0x9')]=_0x4df85c[_0x8ae8('0x9')]?_0x4df85c[_0x8ae8('0x9')]:null;this[_0x8ae8('0xa')]=_0x4df85c[_0x8ae8('0xa')];this[_0x8ae8('0xb')]=_0x4df85c[_0x8ae8('0xb')];this['dialOriginateTimeout']=_0x4df85c['dialOriginateTimeout']||0x1e;this[_0x8ae8('0xc')]=_0x4df85c[_0x8ae8('0xc')];this[_0x8ae8('0xd')]=_0x4df85c[_0x8ae8('0xd')];this[_0x8ae8('0xe')]=_0x4df85c[_0x8ae8('0xe')];this[_0x8ae8('0xf')]=_0x4df85c[_0x8ae8('0xf')];this[_0x8ae8('0x10')]=_0x4df85c[_0x8ae8('0x10')];this[_0x8ae8('0x11')]=_0x4df85c['dialNoAnswerRetryFrequency'];this[_0x8ae8('0x12')]=_0x4df85c['dialGlobalMaxRetry'];this[_0x8ae8('0x13')]=_0x4df85c[_0x8ae8('0x13')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x4df85c[_0x8ae8('0x14')]||0x96;this[_0x8ae8('0x15')]=_0x4df85c[_0x8ae8('0x15')]||0x3;this[_0x8ae8('0x16')]=_0x4df85c[_0x8ae8('0x16')]||0x96;this['dialAbandonedMaxRetry']=_0x4df85c[_0x8ae8('0x17')]||0x3;this[_0x8ae8('0x18')]=_0x4df85c[_0x8ae8('0x18')]||0x96;this[_0x8ae8('0x19')]=_0x4df85c[_0x8ae8('0x19')]||0x3;this[_0x8ae8('0x1a')]=_0x4df85c['dialMachineRetryFrequency']||0x96;this[_0x8ae8('0x1b')]=_0x4df85c[_0x8ae8('0x1b')]||0x3;this[_0x8ae8('0x1c')]=_0x4df85c[_0x8ae8('0x1c')]||0x96;this[_0x8ae8('0x1d')]=_0x4df85c['dialOrderByScheduledAt']||_0x8ae8('0x1e');this[_0x8ae8('0x1f')]=_0x4df85c[_0x8ae8('0x1f')]||undefined;this[_0x8ae8('0x20')]=_0x4df85c['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x8ae8('0x21')]=_0x4df85c['dialCutDigit']||undefined;this[_0x8ae8('0x22')]=_0x4df85c['TrunkBackup']?_0x4df85c[_0x8ae8('0x22')]:undefined;this[_0x8ae8('0x23')]=_0x4df85c[_0x8ae8('0x23')]?_0x4df85c['Trunk']:undefined;this[_0x8ae8('0x24')]=_0x4df85c[_0x8ae8('0x24')]?_0x4df85c[_0x8ae8('0x24')]:undefined;this['SquareProject']=_0x4df85c[_0x8ae8('0x25')]?_0x4df85c[_0x8ae8('0x25')]:undefined;this[_0x8ae8('0x26')]=_0x4df85c[_0x8ae8('0x25')]?_0x4df85c[_0x8ae8('0x25')][_0x8ae8('0x0')]:undefined;this[_0x8ae8('0x27')]=_0x4df85c['dialAMDActive']||![];this[_0x8ae8('0x28')]=_0x4df85c[_0x8ae8('0x28')];this['dialAMDGreeting']=_0x4df85c[_0x8ae8('0x29')];this['dialAMDAfterGreetingSilence']=_0x4df85c[_0x8ae8('0x2a')];this[_0x8ae8('0x2b')]=_0x4df85c[_0x8ae8('0x2b')];this[_0x8ae8('0x2c')]=_0x4df85c[_0x8ae8('0x2c')];this['dialAMDBetweenWordsSilence']=_0x4df85c[_0x8ae8('0x2d')];this['dialAMDMaximumNumberOfWords']=_0x4df85c[_0x8ae8('0x2e')];this['dialAMDSilenceThreshold']=_0x4df85c['dialAMDSilenceThreshold'];this[_0x8ae8('0x2f')]=_0x4df85c[_0x8ae8('0x2f')];}module[_0x8ae8('0x30')]=Campaign;
\ No newline at end of file
index 93673ae..02aa2a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97db=['type','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel','connectedlinenum','connectedlinename','accountcode','context','exten','answered','unmanaged','lastapplication','lastdata','billableseconds','holdtime'];(function(_0x127813,_0x443f25){var _0xd8d341=function(_0x1bac48){while(--_0x1bac48){_0x127813['push'](_0x127813['shift']());}};_0xd8d341(++_0x443f25);}(_0x97db,0x1b4));var _0xb97d=function(_0x26c3f7,_0x187d19){_0x26c3f7=_0x26c3f7-0x0;var _0x42710a=_0x97db[_0x26c3f7];return _0x42710a;};'use strict';function Channel(){this[_0xb97d('0x0')]=null;this[_0xb97d('0x1')]='';this[_0xb97d('0x2')]='';this['calleridnum']=0x0;this['calleridname']='';this[_0xb97d('0x3')]=undefined;this[_0xb97d('0x4')]=undefined;this[_0xb97d('0x5')]=0x0;this[_0xb97d('0x6')]='';this['uniqueid']=0x0;this['linkedid']=0x0;this[_0xb97d('0x7')]=0x0;this[_0xb97d('0x8')]=![];this['answertime']=null;this['endtime']=null;this[_0xb97d('0x9')]=![];this['abandoned']=![];this[_0xb97d('0xa')]='';this[_0xb97d('0xb')]='';this['duration']=0x0;this[_0xb97d('0xc')]=0x0;this[_0xb97d('0xd')]=0x0;this[_0xb97d('0xe')]=null;this[_0xb97d('0xf')]=null;this['disposition']=null;this[_0xb97d('0x10')]=![];this[_0xb97d('0x11')]=null;this[_0xb97d('0x12')]=null;this[_0xb97d('0x13')]=[];this[_0xb97d('0x14')]=undefined;this[_0xb97d('0x15')]=undefined;this[_0xb97d('0x16')]=undefined;this[_0xb97d('0x17')]=0x0;}module[_0xb97d('0x18')]=Channel;
\ No newline at end of file
+var _0x36ee=['connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','lastapplication','duration','billableseconds','holdtime','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','destinationchannel','calleridname'];(function(_0x1f4b18,_0x4e777c){var _0xde3957=function(_0x1dcbbc){while(--_0x1dcbbc){_0x1f4b18['push'](_0x1f4b18['shift']());}};_0xde3957(++_0x4e777c);}(_0x36ee,0xe8));var _0xe36e=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x36ee[_0x3bf83f];return _0x22c4a9;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0xe36e('0x0')]='';this['calleridnum']=0x0;this[_0xe36e('0x1')]='';this[_0xe36e('0x2')]=undefined;this[_0xe36e('0x3')]=undefined;this[_0xe36e('0x4')]=0x0;this[_0xe36e('0x5')]='';this[_0xe36e('0x6')]=0x0;this[_0xe36e('0x7')]=0x0;this[_0xe36e('0x8')]=0x0;this[_0xe36e('0x9')]=![];this[_0xe36e('0xa')]=null;this[_0xe36e('0xb')]=null;this[_0xe36e('0xc')]=![];this['abandoned']=![];this[_0xe36e('0xd')]='';this['lastdata']='';this[_0xe36e('0xe')]=0x0;this[_0xe36e('0xf')]=0x0;this[_0xe36e('0x10')]=0x0;this['type']=null;this[_0xe36e('0x11')]=null;this['disposition']=null;this[_0xe36e('0x12')]=![];this[_0xe36e('0x13')]=null;this[_0xe36e('0x14')]=null;this[_0xe36e('0x15')]=[];this[_0xe36e('0x16')]=undefined;this[_0xe36e('0x17')]=undefined;this[_0xe36e('0x18')]=undefined;this[_0xe36e('0x19')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 7f11094..5a6b4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb551=['serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type'];(function(_0x7a504b,_0x370322){var _0x1d104e=function(_0x51b3a5){while(--_0x51b3a5){_0x7a504b['push'](_0x7a504b['shift']());}};_0x1d104e(++_0x370322);}(_0xb551,0xff));var _0x1b55=function(_0x4e4d11,_0x3b6aba){_0x4e4d11=_0x4e4d11-0x0;var _0xfb969c=_0xb551[_0x4e4d11];return _0xfb969c;};'use strict';function DeskAccount(_0x13a66a){this['id']=_0x13a66a['id']||0x0;this[_0x1b55('0x0')]=_0x13a66a[_0x1b55('0x0')]||'';this[_0x1b55('0x1')]=_0x13a66a[_0x1b55('0x1')]||'';this[_0x1b55('0x2')]=_0x13a66a[_0x1b55('0x2')]||'';this['authType']=_0x13a66a[_0x1b55('0x3')]||'';this[_0x1b55('0x4')]=_0x13a66a[_0x1b55('0x4')]||'';this[_0x1b55('0x5')]=_0x13a66a[_0x1b55('0x5')]||'';this[_0x1b55('0x6')]=_0x13a66a['consumerSecret']||'';this['token']=_0x13a66a['token']||'';this[_0x1b55('0x7')]=_0x13a66a[_0x1b55('0x7')]||'';this[_0x1b55('0x8')]=_0x13a66a[_0x1b55('0x8')]||'';this[_0x1b55('0x9')]=_0x13a66a[_0x1b55('0x9')]||'';this[_0x1b55('0xa')]=_0x13a66a[_0x1b55('0xa')]||{};}module[_0x1b55('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x49dd=['username','remoteUri','authType','password','consumerKey','consumerSecret','token','type','serverUrl','Configurations','name'];(function(_0x23966e,_0x58e2d7){var _0x474e9e=function(_0xf60e0e){while(--_0xf60e0e){_0x23966e['push'](_0x23966e['shift']());}};_0x474e9e(++_0x58e2d7);}(_0x49dd,0x1ac));var _0xd49d=function(_0x59e55e,_0x5b62ab){_0x59e55e=_0x59e55e-0x0;var _0xddd731=_0x49dd[_0x59e55e];return _0xddd731;};'use strict';function DeskAccount(_0x3edae6){this['id']=_0x3edae6['id']||0x0;this[_0xd49d('0x0')]=_0x3edae6[_0xd49d('0x0')]||'';this['username']=_0x3edae6[_0xd49d('0x1')]||'';this[_0xd49d('0x2')]=_0x3edae6['remoteUri']||'';this['authType']=_0x3edae6[_0xd49d('0x3')]||'';this[_0xd49d('0x4')]=_0x3edae6[_0xd49d('0x4')]||'';this[_0xd49d('0x5')]=_0x3edae6[_0xd49d('0x5')]||'';this[_0xd49d('0x6')]=_0x3edae6[_0xd49d('0x6')]||'';this[_0xd49d('0x7')]=_0x3edae6[_0xd49d('0x7')]||'';this['tokenSecret']=_0x3edae6['tokenSecret']||'';this[_0xd49d('0x8')]=_0x3edae6[_0xd49d('0x8')]||'';this['serverUrl']=_0x3edae6[_0xd49d('0x9')]||'';this['Configurations']=_0x3edae6[_0xd49d('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
index 8bd0df7..5e00be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed4=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username'];(function(_0x4cd21c,_0x35fa45){var _0x5d8e5e=function(_0x3af223){while(--_0x3af223){_0x4cd21c['push'](_0x4cd21c['shift']());}};_0x5d8e5e(++_0x35fa45);}(_0x0ed4,0xb9));var _0x40ed=function(_0x590dbb,_0x1d8dd4){_0x590dbb=_0x590dbb-0x0;var _0x53375e=_0x0ed4[_0x590dbb];return _0x53375e;};'use strict';function Dynamics365Account(_0x440c1a){this['id']=_0x440c1a['id']||0x0;this[_0x40ed('0x0')]=_0x440c1a['name']||'';this[_0x40ed('0x1')]=_0x440c1a[_0x40ed('0x1')]||'';this['password']=_0x440c1a[_0x40ed('0x2')]||'';this[_0x40ed('0x3')]=_0x440c1a['remoteUri']||'';this[_0x40ed('0x4')]=_0x440c1a[_0x40ed('0x4')]||'';this[_0x40ed('0x5')]=_0x440c1a['clientId']||'';this['clientSecret']=_0x440c1a[_0x40ed('0x6')]||{};this[_0x40ed('0x7')]=_0x440c1a['serverUrl']||'';this[_0x40ed('0x8')]=_0x440c1a[_0x40ed('0x8')]||![];this[_0x40ed('0x9')]=_0x440c1a[_0x40ed('0x9')]||{};this[_0x40ed('0xa')]=_0x440c1a[_0x40ed('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x9144=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username'];(function(_0x484ab0,_0x56cf5f){var _0x5e68b3=function(_0x42358b){while(--_0x42358b){_0x484ab0['push'](_0x484ab0['shift']());}};_0x5e68b3(++_0x56cf5f);}(_0x9144,0xfa));var _0x4914=function(_0x2ddb6d,_0x25d45b){_0x2ddb6d=_0x2ddb6d-0x0;var _0x56c103=_0x9144[_0x2ddb6d];return _0x56c103;};'use strict';function Dynamics365Account(_0x23ae6d){this['id']=_0x23ae6d['id']||0x0;this[_0x4914('0x0')]=_0x23ae6d[_0x4914('0x0')]||'';this[_0x4914('0x1')]=_0x23ae6d['username']||'';this['password']=_0x23ae6d[_0x4914('0x2')]||'';this[_0x4914('0x3')]=_0x23ae6d[_0x4914('0x3')]||'';this[_0x4914('0x4')]=_0x23ae6d[_0x4914('0x4')]||'';this[_0x4914('0x5')]=_0x23ae6d[_0x4914('0x5')]||'';this[_0x4914('0x6')]=_0x23ae6d[_0x4914('0x6')]||{};this[_0x4914('0x7')]=_0x23ae6d[_0x4914('0x7')]||'';this[_0x4914('0x8')]=_0x23ae6d[_0x4914('0x8')]||![];this[_0x4914('0x9')]=_0x23ae6d['Configurations']||{};this[_0x4914('0xa')]=_0x23ae6d['CloudProvider']||{};}module[_0x4914('0xb')]=Dynamics365Account;
\ No newline at end of file
index 4eb343d..afb2e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd449=['key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId'];(function(_0x48ff30,_0x2a14d1){var _0x4e2d8b=function(_0x484c53){while(--_0x484c53){_0x48ff30['push'](_0x48ff30['shift']());}};_0x4e2d8b(++_0x2a14d1);}(_0xd449,0x155));var _0x9d44=function(_0x4af01e,_0x543f5c){_0x4af01e=_0x4af01e-0x0;var _0x178c11=_0xd449[_0x4af01e];return _0x178c11;};'use strict';function FaxAccount(_0x3b6389){this['id']=_0x3b6389['id']||0x0;this['name']=_0x3b6389[_0x9d44('0x0')]||'';this[_0x9d44('0x1')]=_0x3b6389['description'];this[_0x9d44('0x2')]=_0x3b6389[_0x9d44('0x2')];this[_0x9d44('0x3')]=_0x3b6389[_0x9d44('0x3')];this[_0x9d44('0x4')]=_0x3b6389[_0x9d44('0x4')];this[_0x9d44('0x5')]=_0x3b6389[_0x9d44('0x5')]||0x960;this[_0x9d44('0x6')]=_0x3b6389['maxrate']||0x3840;this[_0x9d44('0x7')]=_0x3b6389['modem']||_0x9d44('0x8');this[_0x9d44('0x9')]=_0x3b6389[_0x9d44('0x9')]||'no';this[_0x9d44('0xa')]=_0x3b6389[_0x9d44('0xa')]||'no';this['t38timeout']=_0x3b6389[_0x9d44('0xb')]||0x1388;this['tech']=_0x3b6389[_0x9d44('0xc')]||_0x9d44('0xd');this[_0x9d44('0xe')]=_0x3b6389['Trunk']?_0x3b6389[_0x9d44('0xe')]:undefined;this[_0x9d44('0xf')]=_0x3b6389[_0x9d44('0xf')];this[_0x9d44('0x10')]=_0x3b6389[_0x9d44('0x10')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0xf9b4=['v17,v27,v29','faxdetect','t38timeout','tech','Trunk','ListId','key','name','description','ecm','localstationid','minrate','maxrate','modem'];(function(_0x309d77,_0x289850){var _0x1cf781=function(_0xaa4b22){while(--_0xaa4b22){_0x309d77['push'](_0x309d77['shift']());}};_0x1cf781(++_0x289850);}(_0xf9b4,0x1e3));var _0x4f9b=function(_0xca04ff,_0xcb449f){_0xca04ff=_0xca04ff-0x0;var _0x6b547=_0xf9b4[_0xca04ff];return _0x6b547;};'use strict';function FaxAccount(_0x446d80){this['id']=_0x446d80['id']||0x0;this[_0x4f9b('0x0')]=_0x446d80[_0x4f9b('0x0')]||'';this[_0x4f9b('0x1')]=_0x446d80[_0x4f9b('0x1')];this[_0x4f9b('0x2')]=_0x446d80[_0x4f9b('0x2')];this['headerinfo']=_0x446d80['headerinfo'];this['localstationid']=_0x446d80[_0x4f9b('0x3')];this['minrate']=_0x446d80[_0x4f9b('0x4')]||0x960;this['maxrate']=_0x446d80[_0x4f9b('0x5')]||0x3840;this[_0x4f9b('0x6')]=_0x446d80[_0x4f9b('0x6')]||_0x4f9b('0x7');this['gateway']=_0x446d80['gateway']||'no';this[_0x4f9b('0x8')]=_0x446d80[_0x4f9b('0x8')]||'no';this[_0x4f9b('0x9')]=_0x446d80[_0x4f9b('0x9')]||0x1388;this[_0x4f9b('0xa')]=_0x446d80[_0x4f9b('0xa')]||'SIP';this[_0x4f9b('0xb')]=_0x446d80[_0x4f9b('0xb')]?_0x446d80['Trunk']:undefined;this['ListId']=_0x446d80[_0x4f9b('0xc')];this[_0x4f9b('0xd')]=_0x446d80[_0x4f9b('0xd')];}module['exports']=FaxAccount;
\ No newline at end of file
index cd5013d..82ac340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb649=['serverUrl','Configurations','name','username','apiKey','remoteUri'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0xb649,0x80));var _0x9b64=function(_0x20aadb,_0x5a607a){_0x20aadb=_0x20aadb-0x0;var _0x520018=_0xb649[_0x20aadb];return _0x520018;};'use strict';function FreshdeskAccount(_0x19a423){this['id']=_0x19a423['id']||0x0;this[_0x9b64('0x0')]=_0x19a423['name']||'';this['username']=_0x19a423[_0x9b64('0x1')]||'';this[_0x9b64('0x2')]=_0x19a423['token']||'';this[_0x9b64('0x3')]=_0x19a423['remoteUri']||'';this[_0x9b64('0x4')]=_0x19a423[_0x9b64('0x4')]||'';this[_0x9b64('0x5')]=_0x19a423['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0x2487=['apiKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x291487,_0x1ab6a5){var _0x321ccf=function(_0x283dea){while(--_0x283dea){_0x291487['push'](_0x291487['shift']());}};_0x321ccf(++_0x1ab6a5);}(_0x2487,0x1ef));var _0x7248=function(_0x5ce563,_0x2ed081){_0x5ce563=_0x5ce563-0x0;var _0x5e3361=_0x2487[_0x5ce563];return _0x5e3361;};'use strict';function FreshdeskAccount(_0x310ee4){this['id']=_0x310ee4['id']||0x0;this[_0x7248('0x0')]=_0x310ee4[_0x7248('0x0')]||'';this[_0x7248('0x1')]=_0x310ee4[_0x7248('0x1')]||'';this[_0x7248('0x2')]=_0x310ee4['token']||'';this['remoteUri']=_0x310ee4[_0x7248('0x3')]||'';this[_0x7248('0x4')]=_0x310ee4[_0x7248('0x4')]||'';this[_0x7248('0x5')]=_0x310ee4[_0x7248('0x5')]||{};}module[_0x7248('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 7c63201..2a40deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dfa=['remoteUri','Configurations','exports','name','username','token'];(function(_0x4bf8b0,_0xddbf6f){var _0x1a1c39=function(_0x109fdc){while(--_0x109fdc){_0x4bf8b0['push'](_0x4bf8b0['shift']());}};_0x1a1c39(++_0xddbf6f);}(_0x6dfa,0x7b));var _0xa6df=function(_0x143619,_0x47282b){_0x143619=_0x143619-0x0;var _0x1a9414=_0x6dfa[_0x143619];return _0x1a9414;};'use strict';function FreshsalesAccount(_0x21c653){this['id']=_0x21c653['id']||0x0;this[_0xa6df('0x0')]=_0x21c653[_0xa6df('0x0')]||'';this[_0xa6df('0x1')]=_0x21c653[_0xa6df('0x1')]||'';this['apiKey']=_0x21c653[_0xa6df('0x2')]||'';this['remoteUri']=_0x21c653[_0xa6df('0x3')]||'';this['serverUrl']=_0x21c653['serverUrl']||'';this[_0xa6df('0x4')]=_0x21c653[_0xa6df('0x4')]||{};}module[_0xa6df('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x6dd1=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x372c32,_0x5cb927){var _0x3c70dd=function(_0x30fbf5){while(--_0x30fbf5){_0x372c32['push'](_0x372c32['shift']());}};_0x3c70dd(++_0x5cb927);}(_0x6dd1,0x111));var _0x16dd=function(_0x23abb8,_0x33087a){_0x23abb8=_0x23abb8-0x0;var _0x1a70b5=_0x6dd1[_0x23abb8];return _0x1a70b5;};'use strict';function FreshsalesAccount(_0x9c01ae){this['id']=_0x9c01ae['id']||0x0;this['name']=_0x9c01ae[_0x16dd('0x0')]||'';this[_0x16dd('0x1')]=_0x9c01ae['username']||'';this[_0x16dd('0x2')]=_0x9c01ae[_0x16dd('0x3')]||'';this[_0x16dd('0x4')]=_0x9c01ae[_0x16dd('0x4')]||'';this[_0x16dd('0x5')]=_0x9c01ae[_0x16dd('0x5')]||'';this[_0x16dd('0x6')]=_0x9c01ae[_0x16dd('0x6')]||{};}module[_0x16dd('0x7')]=FreshsalesAccount;
\ No newline at end of file
index d84e048..dd4aa33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb9=['holdtime','assigned','lastAssignedTo','voice','mohtime','variables','exports','type','inbound','uniqueid','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','exten','priority'];(function(_0x4d2f00,_0x4e94d5){var _0x2d7b7f=function(_0x18fa08){while(--_0x18fa08){_0x4d2f00['push'](_0x4d2f00['shift']());}};_0x2d7b7f(++_0x4e94d5);}(_0x5fb9,0x1cf));var _0x95fb=function(_0x56f5b4,_0x4cbf5c){_0x56f5b4=_0x56f5b4-0x0;var _0x194196=_0x5fb9[_0x56f5b4];return _0x194196;};'use strict';function QueueReport(){this[_0x95fb('0x0')]=_0x95fb('0x1');this[_0x95fb('0x2')]='';this['calleridnum']='';this[_0x95fb('0x3')]='';this[_0x95fb('0x4')]='';this[_0x95fb('0x5')]=null;this[_0x95fb('0x6')]=null;this['position']=0x1;this[_0x95fb('0x7')]=0x1;this[_0x95fb('0x8')]=![];this[_0x95fb('0x9')]=null;this['queuecallercomplete']=![];this['queuecallercompleteAt']=null;this['queuecallerexit']=![];this[_0x95fb('0xa')]=null;this[_0x95fb('0xb')]=0x1;this[_0x95fb('0xc')]='';this[_0x95fb('0xd')]='';this[_0x95fb('0xe')]='';this['accountcode']='';this['context']='';this[_0x95fb('0xf')]='';this[_0x95fb('0x10')]='';this[_0x95fb('0x11')]=0x0;this[_0x95fb('0x12')]=![];this[_0x95fb('0x13')]='';this['motionChannel']=_0x95fb('0x14');this[_0x95fb('0x15')]=0x0;this[_0x95fb('0x16')]={};}module[_0x95fb('0x17')]=QueueReport;
\ No newline at end of file
+var _0xdc7e=['calleridname','queue','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','context','exten','priority','holdtime','motionChannel','voice','mohtime','variables','exports','type','inbound','calleridnum'];(function(_0x406c63,_0x570d14){var _0x3ed66a=function(_0x480aeb){while(--_0x480aeb){_0x406c63['push'](_0x406c63['shift']());}};_0x3ed66a(++_0x570d14);}(_0xdc7e,0x1f1));var _0xedc7=function(_0x3dc5fb,_0x3777e3){_0x3dc5fb=_0x3dc5fb-0x0;var _0x294081=_0xdc7e[_0x3dc5fb];return _0x294081;};'use strict';function QueueReport(){this[_0xedc7('0x0')]=_0xedc7('0x1');this['uniqueid']='';this[_0xedc7('0x2')]='';this[_0xedc7('0x3')]='';this[_0xedc7('0x4')]='';this['queuecallerjoinAt']=null;this[_0xedc7('0x5')]=null;this[_0xedc7('0x6')]=0x1;this['count']=0x1;this[_0xedc7('0x7')]=![];this[_0xedc7('0x8')]=null;this[_0xedc7('0x9')]=![];this[_0xedc7('0xa')]=null;this[_0xedc7('0xb')]=![];this[_0xedc7('0xc')]=null;this[_0xedc7('0xd')]=0x1;this[_0xedc7('0xe')]='';this[_0xedc7('0xf')]='';this['connectedlinename']='';this['accountcode']='';this[_0xedc7('0x10')]='';this[_0xedc7('0x11')]='';this[_0xedc7('0x12')]='';this[_0xedc7('0x13')]=0x0;this['assigned']=![];this['lastAssignedTo']='';this[_0xedc7('0x14')]=_0xedc7('0x15');this[_0xedc7('0x16')]=0x0;this[_0xedc7('0x17')]={};}module[_0xedc7('0x18')]=QueueReport;
\ No newline at end of file
index 7f875e3..515595a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x939a=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret','type'];(function(_0x13d0ea,_0x12957b){var _0x1b5d38=function(_0x57c80e){while(--_0x57c80e){_0x13d0ea['push'](_0x13d0ea['shift']());}};_0x1b5d38(++_0x12957b);}(_0x939a,0x12d));var _0xa939=function(_0x2fc0a1,_0x4bd2b1){_0x2fc0a1=_0x2fc0a1-0x0;var _0x8b6ef1=_0x939a[_0x2fc0a1];return _0x8b6ef1;};'use strict';function SalesforceAccount(_0x40c21f){this['id']=_0x40c21f['id']||0x0;this[_0xa939('0x0')]=_0x40c21f[_0xa939('0x0')]||'';this[_0xa939('0x1')]=_0x40c21f[_0xa939('0x1')]||'';this[_0xa939('0x2')]=_0x40c21f['remoteUri']||'';this[_0xa939('0x3')]=_0x40c21f['password']||'';this[_0xa939('0x4')]=_0x40c21f[_0xa939('0x4')]||'';this[_0xa939('0x5')]=_0x40c21f[_0xa939('0x5')]||'';this['securityToken']=_0x40c21f['securityToken']||'';this[_0xa939('0x6')]=_0x40c21f[_0xa939('0x6')]||_0xa939('0x7');this[_0xa939('0x8')]=_0x40c21f[_0xa939('0x8')]||'';this[_0xa939('0x9')]=_0x40c21f[_0xa939('0x9')]||{};}module[_0xa939('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x2ad1=['clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name','username','remoteUri','password'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x2ad1,0x17d));var _0x12ad=function(_0x284b22,_0x1e0f2c){_0x284b22=_0x284b22-0x0;var _0x261e08=_0x2ad1[_0x284b22];return _0x261e08;};'use strict';function SalesforceAccount(_0x40921a){this['id']=_0x40921a['id']||0x0;this[_0x12ad('0x0')]=_0x40921a[_0x12ad('0x0')]||'';this[_0x12ad('0x1')]=_0x40921a[_0x12ad('0x1')]||'';this[_0x12ad('0x2')]=_0x40921a[_0x12ad('0x2')]||'';this[_0x12ad('0x3')]=_0x40921a[_0x12ad('0x3')]||'';this[_0x12ad('0x4')]=_0x40921a[_0x12ad('0x4')]||'';this[_0x12ad('0x5')]=_0x40921a[_0x12ad('0x5')]||'';this[_0x12ad('0x6')]=_0x40921a[_0x12ad('0x6')]||'';this[_0x12ad('0x7')]=_0x40921a[_0x12ad('0x7')]||_0x12ad('0x8');this['serverUrl']=_0x40921a[_0x12ad('0x9')]||'';this[_0x12ad('0xa')]=_0x40921a[_0x12ad('0xa')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index be448eb..4453576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb2=['name','password','serverUrl','Configurations','exports'];(function(_0x2118f7,_0x5be6e1){var _0xfa3afe=function(_0x11318c){while(--_0x11318c){_0x2118f7['push'](_0x2118f7['shift']());}};_0xfa3afe(++_0x5be6e1);}(_0x6fb2,0x104));var _0x26fb=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x6fb2[_0x167cc1];return _0x10bc4b;};'use strict';function ServicenowAccount(_0x1aa1d2){this['id']=_0x1aa1d2['id']||0x0;this[_0x26fb('0x0')]=_0x1aa1d2['name']||'';this['username']=_0x1aa1d2['username']||'';this[_0x26fb('0x1')]=_0x1aa1d2[_0x26fb('0x1')]||'';this['remoteUri']=_0x1aa1d2['remoteUri']||'';this[_0x26fb('0x2')]=_0x1aa1d2[_0x26fb('0x2')]||'';this[_0x26fb('0x3')]=_0x1aa1d2[_0x26fb('0x3')]||{};}module[_0x26fb('0x4')]=ServicenowAccount;
\ No newline at end of file
+var _0xd8aa=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x4d7523,_0x9e63b1){var _0x2461d3=function(_0x59df92){while(--_0x59df92){_0x4d7523['push'](_0x4d7523['shift']());}};_0x2461d3(++_0x9e63b1);}(_0xd8aa,0xe5));var _0xad8a=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xd8aa[_0x432682];return _0x463d05;};'use strict';function ServicenowAccount(_0x59baa7){this['id']=_0x59baa7['id']||0x0;this[_0xad8a('0x0')]=_0x59baa7['name']||'';this[_0xad8a('0x1')]=_0x59baa7[_0xad8a('0x1')]||'';this[_0xad8a('0x2')]=_0x59baa7[_0xad8a('0x2')]||'';this[_0xad8a('0x3')]=_0x59baa7[_0xad8a('0x3')]||'';this[_0xad8a('0x4')]=_0x59baa7[_0xad8a('0x4')]||'';this[_0xad8a('0x5')]=_0x59baa7[_0xad8a('0x5')]||{};}module[_0xad8a('0x6')]=ServicenowAccount;
\ No newline at end of file
index 7b9e4a3..fac76d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcc5=['serverUrl','Configurations','exports','name','username','password'];(function(_0x1e087c,_0x44331c){var _0x336efb=function(_0x21ba9e){while(--_0x21ba9e){_0x1e087c['push'](_0x1e087c['shift']());}};_0x336efb(++_0x44331c);}(_0xdcc5,0x189));var _0x5dcc=function(_0x3bea51,_0xd3c973){_0x3bea51=_0x3bea51-0x0;var _0x40e435=_0xdcc5[_0x3bea51];return _0x40e435;};'use strict';function SugarcrmAccount(_0x4d863a){this['id']=_0x4d863a['id']||0x0;this[_0x5dcc('0x0')]=_0x4d863a[_0x5dcc('0x0')]||'';this[_0x5dcc('0x1')]=_0x4d863a['username']||'';this[_0x5dcc('0x2')]=_0x4d863a[_0x5dcc('0x2')]||'';this['remoteUri']=_0x4d863a['remoteUri']||'';this['serverUrl']=_0x4d863a[_0x5dcc('0x3')]||'';this['Configurations']=_0x4d863a[_0x5dcc('0x4')]||{};}module[_0x5dcc('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0x51de=['username','remoteUri','serverUrl','name'];(function(_0x1fb7d1,_0x108781){var _0x2480d8=function(_0x9bc3d9){while(--_0x9bc3d9){_0x1fb7d1['push'](_0x1fb7d1['shift']());}};_0x2480d8(++_0x108781);}(_0x51de,0x8b));var _0xe51d=function(_0xed95eb,_0x2132e1){_0xed95eb=_0xed95eb-0x0;var _0x292cd7=_0x51de[_0xed95eb];return _0x292cd7;};'use strict';function SugarcrmAccount(_0xec04ae){this['id']=_0xec04ae['id']||0x0;this[_0xe51d('0x0')]=_0xec04ae[_0xe51d('0x0')]||'';this['username']=_0xec04ae[_0xe51d('0x1')]||'';this['password']=_0xec04ae['password']||'';this[_0xe51d('0x2')]=_0xec04ae[_0xe51d('0x2')]||'';this[_0xe51d('0x3')]=_0xec04ae[_0xe51d('0x3')]||'';this['Configurations']=_0xec04ae['Configurations']||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 731e414..3cc295e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3624=['address','exports','name','accountcode','state','stateTime','status','unknown'];(function(_0x192099,_0x38a593){var _0x3d6ccc=function(_0x541fff){while(--_0x541fff){_0x192099['push'](_0x192099['shift']());}};_0x3d6ccc(++_0x38a593);}(_0x3624,0x152));var _0x4362=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x3624[_0x278e3c];return _0x3e2d9b;};'use strict';function Telephone(_0x4a505b){this['id']=_0x4a505b['id']||0x0;this[_0x4362('0x0')]=_0x4a505b[_0x4362('0x0')]||'';this[_0x4362('0x1')]=_0x4a505b[_0x4362('0x1')]||'';this[_0x4362('0x2')]='unknown';this[_0x4362('0x3')]=0x0;this[_0x4362('0x4')]=_0x4362('0x5');this[_0x4362('0x6')]='';}module[_0x4362('0x7')]=Telephone;
\ No newline at end of file
+var _0x10b8=['exports','name','accountcode','state','stateTime','status','unknown'];(function(_0x14e1bf,_0x479ae5){var _0x36ffde=function(_0xd77a29){while(--_0xd77a29){_0x14e1bf['push'](_0x14e1bf['shift']());}};_0x36ffde(++_0x479ae5);}(_0x10b8,0x166));var _0x810b=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x10b8[_0x565ed7];return _0x183ad7;};'use strict';function Telephone(_0x59804f){this['id']=_0x59804f['id']||0x0;this[_0x810b('0x0')]=_0x59804f[_0x810b('0x0')]||'';this[_0x810b('0x1')]=_0x59804f[_0x810b('0x1')]||'';this[_0x810b('0x2')]='unknown';this[_0x810b('0x3')]=0x0;this[_0x810b('0x4')]=_0x810b('0x5');this['address']='';}module[_0x810b('0x6')]=Telephone;
\ No newline at end of file
index fc055a1..289c447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x12c5ab,_0x1ca781){var _0x39d58c=function(_0x391126){while(--_0x391126){_0x12c5ab['push'](_0x12c5ab['shift']());}};_0x39d58c(++_0x1ca781);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x50cd5b,_0x48e776){var _0x181097=function(_0x4c6d89){while(--_0x4c6d89){_0x50cd5b['push'](_0x50cd5b['shift']());}};_0x181097(++_0x48e776);}(_0xb10b,0x12a));var _0xbb10=function(_0x49c341,_0x5b9570){_0x49c341=_0x49c341-0x0;var _0x1c106d=_0xb10b[_0x49c341];return _0x1c106d;};'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 3857b1f..118e5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['name','status','AllConditions','AnyConditions','Actions','exports'];(function(_0xfff9cf,_0x55ad70){var _0x231718=function(_0x410e35){while(--_0x410e35){_0xfff9cf['push'](_0xfff9cf['shift']());}};_0x231718(++_0x55ad70);}(_0x757a,0xde));var _0xa757=function(_0x2e9a78,_0x3d175e){_0x2e9a78=_0x2e9a78-0x0;var _0x21d7be=_0x757a[_0x2e9a78];return _0x21d7be;};'use strict';function Trigger(_0x1acf7d){this['id']=_0x1acf7d['id']||0x0;this[_0xa757('0x0')]=_0x1acf7d[_0xa757('0x0')]||'';this['channel']=_0x1acf7d['channel']||'voice';this[_0xa757('0x1')]=_0x1acf7d[_0xa757('0x1')]||![];this[_0xa757('0x2')]=_0x1acf7d[_0xa757('0x2')]||[];this[_0xa757('0x3')]=_0x1acf7d[_0xa757('0x3')]||[];this['Actions']=_0x1acf7d[_0xa757('0x4')]||[];}module[_0xa757('0x5')]=Trigger;
\ No newline at end of file
+var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x502598,_0x1e95c8){var _0xbdee21=function(_0x140feb){while(--_0x140feb){_0x502598['push'](_0x502598['shift']());}};_0xbdee21(++_0x1e95c8);}(_0x5eb8,0xb0));var _0x85eb=function(_0x40822a,_0x582b60){_0x40822a=_0x40822a-0x0;var _0x357420=_0x5eb8[_0x40822a];return _0x357420;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index e630083..e3399c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfd=['status','registry','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','unknown','stateTime'];(function(_0x2af5c5,_0x1b600b){var _0x2686e3=function(_0x37eb15){while(--_0x37eb15){_0x2af5c5['push'](_0x2af5c5['shift']());}};_0x2686e3(++_0x1b600b);}(_0x6cfd,0x160));var _0xd6cf=function(_0x3edeb0,_0x429b40){_0x3edeb0=_0x3edeb0-0x0;var _0x4b77e4=_0x6cfd[_0x3edeb0];return _0x4b77e4;};'use strict';function Trunk(_0x595038){this['id']=_0x595038['id']||0x0;this[_0xd6cf('0x0')]=_0x595038[_0xd6cf('0x0')]||![];this[_0xd6cf('0x1')]=_0x595038[_0xd6cf('0x1')]||'';this[_0xd6cf('0x2')]=_0xd6cf('0x3');this[_0xd6cf('0x4')]=0x0;this[_0xd6cf('0x5')]='unknown';this[_0xd6cf('0x6')]=_0x595038[_0xd6cf('0x6')]&&_0x595038[_0xd6cf('0x6')]['indexOf'](':')?_0x595038[_0xd6cf('0x6')]['split'](':')[0x0]:'';this[_0xd6cf('0x7')]='';this[_0xd6cf('0x8')]='';this[_0xd6cf('0x9')]='';this[_0xd6cf('0xa')]='';this[_0xd6cf('0xb')]='';this[_0xd6cf('0xc')]=_0xd6cf('0x3');this[_0xd6cf('0xd')]='';this[_0xd6cf('0xe')]='';this[_0xd6cf('0xf')]=_0x595038['defaultuser']||'';}module[_0xd6cf('0x10')]=Trunk;
\ No newline at end of file
+var _0xff13=['indexOf','host','port','domain','domainport','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','unknown','stateTime','status','registry'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xff13,0x173));var _0x3ff1=function(_0x1e829a,_0x2c3b5a){_0x1e829a=_0x1e829a-0x0;var _0x1a8efa=_0xff13[_0x1e829a];return _0x1a8efa;};'use strict';function Trunk(_0x5c49c8){this['id']=_0x5c49c8['id']||0x0;this[_0x3ff1('0x0')]=_0x5c49c8[_0x3ff1('0x0')]||![];this[_0x3ff1('0x1')]=_0x5c49c8[_0x3ff1('0x1')]||'';this[_0x3ff1('0x2')]=_0x3ff1('0x3');this[_0x3ff1('0x4')]=0x0;this[_0x3ff1('0x5')]=_0x3ff1('0x3');this[_0x3ff1('0x6')]=_0x5c49c8[_0x3ff1('0x6')]&&_0x5c49c8[_0x3ff1('0x6')][_0x3ff1('0x7')](':')?_0x5c49c8['registry']['split'](':')[0x0]:'';this[_0x3ff1('0x8')]='';this[_0x3ff1('0x9')]='';this[_0x3ff1('0xa')]='';this[_0x3ff1('0xb')]='';this[_0x3ff1('0xc')]='';this[_0x3ff1('0xd')]=_0x3ff1('0x3');this[_0x3ff1('0xe')]='';this[_0x3ff1('0xf')]='';this[_0x3ff1('0x10')]=_0x5c49c8[_0x3ff1('0x10')]||'';}module[_0x3ff1('0x11')]=Trunk;
\ No newline at end of file
index 078f6ba..4d3255c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb31=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x13644c,_0x25ea08){var _0x828a81=function(_0x5b154b){while(--_0x5b154b){_0x13644c['push'](_0x13644c['shift']());}};_0x828a81(++_0x25ea08);}(_0xfb31,0xfe));var _0x1fb3=function(_0x430aa2,_0x10b63f){_0x430aa2=_0x430aa2-0x0;var _0x180f49=_0xfb31[_0x430aa2];return _0x180f49;};'use strict';function voiceExtension(_0x1d1b03){this['id']=_0x1d1b03['id']||0x0;this[_0x1fb3('0x0')]=_0x1d1b03[_0x1fb3('0x0')]||'';this['recordingFormat']=_0x1d1b03[_0x1fb3('0x1')]||_0x1fb3('0x2');this['mandatoryDisposition']=_0x1d1b03[_0x1fb3('0x3')]||![];}module[_0x1fb3('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x025d=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x5e7514,_0x30c2e1){var _0x12f472=function(_0x33ddb6){while(--_0x33ddb6){_0x5e7514['push'](_0x5e7514['shift']());}};_0x12f472(++_0x30c2e1);}(_0x025d,0x12b));var _0xd025=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x025d[_0x502c7d];return _0x30b7ed;};'use strict';function voiceExtension(_0x21b7d1){this['id']=_0x21b7d1['id']||0x0;this['exten']=_0x21b7d1[_0xd025('0x0')]||'';this[_0xd025('0x1')]=_0x21b7d1[_0xd025('0x1')]||_0xd025('0x2');this[_0xd025('0x3')]=_0x21b7d1[_0xd025('0x3')]||![];}module[_0xd025('0x4')]=voiceExtension;
\ No newline at end of file
index cbe77e6..3a1c878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2998=['dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout'];(function(_0x256487,_0x22e144){var _0x210268=function(_0x33af33){while(--_0x33af33){_0x256487['push'](_0x256487['shift']());}};_0x210268(++_0x22e144);}(_0x2998,0x105));var _0x8299=function(_0x265721,_0x1503f2){_0x265721=_0x265721-0x0;var _0x11ec95=_0x2998[_0x265721];return _0x11ec95;};'use strict';var statusDesc=[_0x8299('0x0'),_0x8299('0x1'),_0x8299('0x2'),'busy',_0x8299('0x3'),_0x8299('0x4'),_0x8299('0x5'),_0x8299('0x6'),'onhold'];var monitorFormat={'wav':_0x8299('0x7'),'wav49':_0x8299('0x8'),'gsm':_0x8299('0x9')};var strategy={'rrmemory':_0x8299('0xa'),'roundrobin':_0x8299('0xb')};function VoiceQueue(_0x356f32){this['id']=_0x356f32['id']||0x0;this[_0x8299('0xc')]=_0x356f32[_0x8299('0xc')]||'';this[_0x8299('0xd')]=_0x356f32['monitor_format']||'';this[_0x8299('0xe')]=_0x356f32['type']||'inbound';this[_0x8299('0xf')]=0x0;this['talking']=0x0;this[_0x8299('0x10')]=0x0;this[_0x8299('0x11')]=0x0;this[_0x8299('0x12')]=0x0;this[_0x8299('0x13')]=0x0;this[_0x8299('0x14')]=0x0;this[_0x8299('0x15')]=0x0;this[_0x8299('0x16')]=0x0;this[_0x8299('0x17')]=0x0;this[_0x8299('0x18')]=0x0;this[_0x8299('0x19')]=_0x356f32[_0x8299('0x19')]||![];this[_0x8299('0x1a')]=_0x356f32[_0x8299('0x1a')]||0xa;this[_0x8299('0x1b')]=_0x356f32[_0x8299('0x1b')]||'no';this[_0x8299('0x1c')]=!![];this[_0x8299('0x1d')]='';this['originated']=0x0;this[_0x8299('0x1e')]=0x0;this[_0x8299('0x1f')]=_0x356f32[_0x8299('0x1f')]||null;this[_0x8299('0x20')]=_0x356f32['dialGlobalInterval']?_0x356f32[_0x8299('0x20')]:null;this[_0x8299('0x21')]=_0x356f32[_0x8299('0x21')];this[_0x8299('0x22')]=_0x356f32[_0x8299('0x22')]||'progressive';this[_0x8299('0x23')]=_0x356f32[_0x8299('0x23')]||0x0;this[_0x8299('0x24')]=_0x356f32[_0x8299('0x24')]||0x0;this['dialPowerLevel']=_0x356f32[_0x8299('0x25')]||0x1;this[_0x8299('0x26')]=_0x356f32[_0x8299('0x26')]||_0x8299('0x27');this[_0x8299('0x28')]=_0x356f32[_0x8299('0x28')]||0.03;this[_0x8299('0x29')]=_0x356f32['dialPredictiveInterval']||0x258;this['dialOriginateCallerIdName']=_0x356f32[_0x8299('0x2a')]||_0x8299('0x2b');this[_0x8299('0x2c')]=_0x356f32[_0x8299('0x2c')]||_0x8299('0x2b');this[_0x8299('0x2d')]=_0x356f32[_0x8299('0x2d')]||0x1e;this[_0x8299('0x2e')]=_0x356f32[_0x8299('0x2e')]||_0x8299('0x2f');this[_0x8299('0x30')]=_0x356f32[_0x8299('0x30')]||0x3;this[_0x8299('0x31')]=_0x356f32[_0x8299('0x31')]||undefined;this['dialCongestionMaxRetry']=_0x356f32[_0x8299('0x32')]||0x3;this[_0x8299('0x33')]=_0x356f32['dialCongestionRetryFrequency']||0x96;this[_0x8299('0x34')]=_0x356f32[_0x8299('0x34')]||0x3;this['dialBusyRetryFrequency']=_0x356f32[_0x8299('0x35')]||0x96;this[_0x8299('0x36')]=_0x356f32[_0x8299('0x36')]||0x3;this['dialNoAnswerRetryFrequency']=_0x356f32[_0x8299('0x37')]||0x96;this[_0x8299('0x38')]=_0x356f32['dialNoSuchNumberMaxRetry']||0x3;this[_0x8299('0x39')]=_0x356f32['dialNoSuchNumberRetryFrequency']||0x96;this[_0x8299('0x3a')]=_0x356f32['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x356f32[_0x8299('0x3b')]||0x96;this['dialAbandonedMaxRetry']=_0x356f32[_0x8299('0x3c')]||0x3;this[_0x8299('0x3d')]=_0x356f32['dialAbandonedRetryFrequency']||0x96;this[_0x8299('0x3e')]=_0x356f32[_0x8299('0x3e')]||0x3;this['dialMachineRetryFrequency']=_0x356f32[_0x8299('0x3f')]||0x96;this[_0x8299('0x40')]=_0x356f32[_0x8299('0x40')]||0x3;this[_0x8299('0x41')]=_0x356f32[_0x8299('0x41')]||0x96;this[_0x8299('0x42')]=_0x356f32[_0x8299('0x42')]||0x3;this[_0x8299('0x43')]=_0x356f32[_0x8299('0x43')]||0x4;this[_0x8299('0x44')]=_0x356f32['Trunk']?_0x356f32['Trunk']:undefined;this[_0x8299('0x45')]=_0x356f32[_0x8299('0x45')]?_0x356f32[_0x8299('0x45')]:undefined;this['dialPrefix']=_0x356f32[_0x8299('0x46')]||undefined;this[_0x8299('0x47')]=_0x356f32[_0x8299('0x47')]?_0x356f32['Interval']:undefined;this['dialOrderByScheduledAt']=_0x356f32[_0x8299('0x48')]||_0x8299('0x49');this[_0x8299('0x4a')]=_0x356f32['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x8299('0x4b')]=_0x356f32[_0x8299('0x4b')]||undefined;this[_0x8299('0x4c')]=strategy[_0x356f32[_0x8299('0x4c')]]||_0x8299('0xa');this['queueStatusComplete']=!![];this[_0x8299('0x4d')]=_0x356f32[_0x8299('0x4d')]||![];this[_0x8299('0x4e')]=_0x356f32['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x356f32[_0x8299('0x4f')];this[_0x8299('0x50')]=_0x356f32[_0x8299('0x50')];this['dialAMDTotalAnalysisTime']=_0x356f32[_0x8299('0x51')];this[_0x8299('0x52')]=_0x356f32[_0x8299('0x52')];this[_0x8299('0x53')]=_0x356f32['dialAMDBetweenWordsSilence'];this[_0x8299('0x54')]=_0x356f32[_0x8299('0x54')];this['dialAMDSilenceThreshold']=_0x356f32[_0x8299('0x55')];this['dialAMDMaximumWordLength']=_0x356f32[_0x8299('0x56')];this[_0x8299('0x57')]=0x0;this[_0x8299('0x58')]=0x0;this[_0x8299('0x59')]=_0x356f32[_0x8299('0x59')];this[_0x8299('0x5a')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0x8299('0x5b')]=0x0;this[_0x8299('0x5c')]=0x0;this[_0x8299('0x5d')]=0x0;this[_0x8299('0x5e')]=0x0;this[_0x8299('0x5f')]=0x0;this[_0x8299('0x60')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this['outboundDropCallsDayCallersExit']=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x8299('0x61')]=0x0;this[_0x8299('0x62')]=0x0;this[_0x8299('0x63')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8299('0x64')]=0x0;this[_0x8299('0x65')]=0x0;this[_0x8299('0x66')]=0x0;this[_0x8299('0x67')]=0x0;this[_0x8299('0x68')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x8299('0x69')]=0x0;this[_0x8299('0x6a')]=0x0;this[_0x8299('0x6b')]=_0x356f32[_0x8299('0x6c')]||0x14;this[_0x8299('0x6d')]=_0x356f32[_0x8299('0x6c')]||0xa;this[_0x8299('0x6e')]=0x0;this[_0x8299('0x6f')]=0x0;this[_0x8299('0x70')]=0x1;this['erlangCalls']=0x0;this[_0x8299('0x71')]=0x0;this[_0x8299('0x72')]=0x0;this[_0x8299('0x73')]=0x0;this[_0x8299('0x74')]=_0x356f32[_0x8299('0x74')]||0x1e;this[_0x8299('0x75')]=_0x356f32['dialRecallInQueue']||![];this[_0x8299('0x76')]=!!_0x356f32[_0x8299('0x76')]||![];this[_0x8299('0x77')]=!!_0x356f32[_0x8299('0x77')]||![];this[_0x8299('0x78')]=_0x356f32['dialQueueProject2']||undefined;this[_0x8299('0x79')]=_0x356f32[_0x8299('0x79')]||![];this[_0x8299('0x7a')]=_0x356f32[_0x8299('0x7a')]||![];this[_0x8299('0xd')]=monitorFormat[_0x356f32[_0x8299('0xd')]]?monitorFormat[_0x356f32['monitor_format']]:undefined;this[_0x8299('0x7b')]=_0x356f32[_0x8299('0x7b')]||![];this[_0x8299('0x7c')]=_0x356f32[_0x8299('0x7c')]?_0x356f32[_0x8299('0x7c')]:undefined;}module[_0x8299('0x7d')]=VoiceQueue;
\ No newline at end of file
+var _0xe56d=['predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','erlangCalls','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','busy','unavailable','ringing','wav','wav49','rrmemory','roundrobin','name','monitor_format','type','inbound','waiting','talking','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor'];(function(_0x45bc6a,_0x301e14){var _0x171a81=function(_0x26381f){while(--_0x26381f){_0x45bc6a['push'](_0x45bc6a['shift']());}};_0x171a81(++_0x301e14);}(_0xe56d,0x185));var _0xde56=function(_0x40453a,_0x1ff061){_0x40453a=_0x40453a-0x0;var _0x2da74d=_0xe56d[_0x40453a];return _0x2da74d;};'use strict';var statusDesc=[_0xde56('0x0'),_0xde56('0x1'),'inuse',_0xde56('0x2'),'invalid',_0xde56('0x3'),_0xde56('0x4'),'ringinuse','onhold'];var monitorFormat={'wav':_0xde56('0x5'),'wav49':_0xde56('0x6'),'gsm':'gsm'};var strategy={'rrmemory':_0xde56('0x7'),'roundrobin':_0xde56('0x8')};function VoiceQueue(_0x1c509b){this['id']=_0x1c509b['id']||0x0;this['name']=_0x1c509b[_0xde56('0x9')]||'';this['monitor_format']=_0x1c509b[_0xde56('0xa')]||'';this[_0xde56('0xb')]=_0x1c509b[_0xde56('0xb')]||_0xde56('0xc');this[_0xde56('0xd')]=0x0;this[_0xde56('0xe')]=0x0;this['total']=0x0;this[_0xde56('0xf')]=0x0;this[_0xde56('0x10')]=0x0;this[_0xde56('0x11')]=0x0;this[_0xde56('0x12')]=0x0;this[_0xde56('0x13')]=0x0;this[_0xde56('0x14')]=0x0;this[_0xde56('0x15')]=0x0;this['available']=0x0;this[_0xde56('0x16')]=_0x1c509b['acw']||![];this[_0xde56('0x17')]=_0x1c509b[_0xde56('0x17')]||0xa;this[_0xde56('0x18')]=_0x1c509b['autopause']||'no';this[_0xde56('0x19')]=!![];this[_0xde56('0x1a')]='';this[_0xde56('0x1b')]=0x0;this['temp']=0x0;this[_0xde56('0x1c')]=_0x1c509b[_0xde56('0x1c')]||null;this[_0xde56('0x1d')]=_0x1c509b[_0xde56('0x1d')]?_0x1c509b[_0xde56('0x1d')]:null;this[_0xde56('0x1e')]=_0x1c509b[_0xde56('0x1e')];this['dialMethod']=_0x1c509b[_0xde56('0x1f')]||'progressive';this[_0xde56('0x20')]=_0x1c509b[_0xde56('0x20')]||0x0;this[_0xde56('0x21')]=_0x1c509b['dialLimitQueue']||0x0;this[_0xde56('0x22')]=_0x1c509b[_0xde56('0x22')]||0x1;this[_0xde56('0x23')]=_0x1c509b[_0xde56('0x23')]||_0xde56('0x24');this['dialPredictiveOptimizationPercentage']=_0x1c509b[_0xde56('0x25')]||0.03;this[_0xde56('0x26')]=_0x1c509b[_0xde56('0x26')]||0x258;this[_0xde56('0x27')]=_0x1c509b[_0xde56('0x27')]||_0xde56('0x28');this[_0xde56('0x29')]=_0x1c509b[_0xde56('0x29')]||_0xde56('0x28');this[_0xde56('0x2a')]=_0x1c509b[_0xde56('0x2a')]||0x1e;this['dialQueueOptions']=_0x1c509b[_0xde56('0x2b')]||_0xde56('0x2c');this[_0xde56('0x2d')]=_0x1c509b[_0xde56('0x2d')]||0x3;this[_0xde56('0x2e')]=_0x1c509b[_0xde56('0x2e')]||undefined;this[_0xde56('0x2f')]=_0x1c509b['dialCongestionMaxRetry']||0x3;this['dialCongestionRetryFrequency']=_0x1c509b[_0xde56('0x30')]||0x96;this[_0xde56('0x31')]=_0x1c509b[_0xde56('0x31')]||0x3;this[_0xde56('0x32')]=_0x1c509b['dialBusyRetryFrequency']||0x96;this[_0xde56('0x33')]=_0x1c509b[_0xde56('0x33')]||0x3;this['dialNoAnswerRetryFrequency']=_0x1c509b[_0xde56('0x34')]||0x96;this[_0xde56('0x35')]=_0x1c509b[_0xde56('0x35')]||0x3;this[_0xde56('0x36')]=_0x1c509b[_0xde56('0x36')]||0x96;this[_0xde56('0x37')]=_0x1c509b[_0xde56('0x37')]||0x3;this[_0xde56('0x38')]=_0x1c509b[_0xde56('0x38')]||0x96;this['dialAbandonedMaxRetry']=_0x1c509b[_0xde56('0x39')]||0x3;this[_0xde56('0x3a')]=_0x1c509b[_0xde56('0x3a')]||0x96;this[_0xde56('0x3b')]=_0x1c509b[_0xde56('0x3b')]||0x3;this[_0xde56('0x3c')]=_0x1c509b['dialMachineRetryFrequency']||0x96;this[_0xde56('0x3d')]=_0x1c509b['dialAgentRejectMaxRetry']||0x3;this[_0xde56('0x3e')]=_0x1c509b[_0xde56('0x3e')]||0x96;this['callAdditionalPhoneAfterMin']=_0x1c509b[_0xde56('0x3f')]||0x3;this[_0xde56('0x40')]=_0x1c509b[_0xde56('0x40')]||0x4;this[_0xde56('0x41')]=_0x1c509b[_0xde56('0x41')]?_0x1c509b[_0xde56('0x41')]:undefined;this[_0xde56('0x42')]=_0x1c509b['TrunkBackup']?_0x1c509b[_0xde56('0x42')]:undefined;this[_0xde56('0x43')]=_0x1c509b[_0xde56('0x43')]||undefined;this[_0xde56('0x44')]=_0x1c509b[_0xde56('0x44')]?_0x1c509b[_0xde56('0x44')]:undefined;this['dialOrderByScheduledAt']=_0x1c509b['dialOrderByScheduledAt']||_0xde56('0x45');this[_0xde56('0x46')]=_0x1c509b[_0xde56('0x46')]||undefined;this['dialCutDigit']=_0x1c509b[_0xde56('0x47')]||undefined;this[_0xde56('0x48')]=strategy[_0x1c509b[_0xde56('0x48')]]||_0xde56('0x7');this[_0xde56('0x49')]=!![];this[_0xde56('0x4a')]=_0x1c509b[_0xde56('0x4a')]||![];this['dialAMDInitialSilence']=_0x1c509b[_0xde56('0x4b')];this['dialAMDGreeting']=_0x1c509b[_0xde56('0x4c')];this[_0xde56('0x4d')]=_0x1c509b[_0xde56('0x4d')];this[_0xde56('0x4e')]=_0x1c509b[_0xde56('0x4e')];this[_0xde56('0x4f')]=_0x1c509b['dialAMDMinWordLength'];this[_0xde56('0x50')]=_0x1c509b['dialAMDBetweenWordsSilence'];this[_0xde56('0x51')]=_0x1c509b[_0xde56('0x51')];this['dialAMDSilenceThreshold']=_0x1c509b['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x1c509b[_0xde56('0x52')];this[_0xde56('0x53')]=0x0;this[_0xde56('0x54')]=0x0;this[_0xde56('0x55')]=_0x1c509b[_0xde56('0x55')];this[_0xde56('0x56')]=0x0;this[_0xde56('0x57')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0xde56('0x58')]=0x0;this[_0xde56('0x59')]=0x0;this[_0xde56('0x5a')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xde56('0x5b')]=0x0;this[_0xde56('0x5c')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xde56('0x5d')]=0x0;this[_0xde56('0x5e')]=0x0;this[_0xde56('0x5f')]=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0xde56('0x60')]=undefined;this[_0xde56('0x61')]=undefined;this[_0xde56('0x62')]=1.05;this[_0xde56('0x63')]=0x0;this[_0xde56('0x64')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xde56('0x65')]=0x0;this[_0xde56('0x66')]=0x0;this[_0xde56('0x67')]=0x0;this[_0xde56('0x68')]=0x0;this[_0xde56('0x69')]=0x0;this[_0xde56('0x6a')]=_0x1c509b[_0xde56('0x6b')]||0x14;this[_0xde56('0x6c')]=_0x1c509b[_0xde56('0x6b')]||0xa;this[_0xde56('0x6d')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this['predictiveIntervalHitRate']=0x1;this[_0xde56('0x6e')]=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0xde56('0x6f')]=0x0;this[_0xde56('0x70')]=_0x1c509b['dialRecallMeTimeout']||0x1e;this[_0xde56('0x71')]=_0x1c509b[_0xde56('0x71')]||![];this[_0xde56('0x72')]=!!_0x1c509b[_0xde56('0x72')]||![];this[_0xde56('0x73')]=!!_0x1c509b[_0xde56('0x73')]||![];this[_0xde56('0x74')]=_0x1c509b[_0xde56('0x74')]||undefined;this['dialAgiAfterHangupClient']=_0x1c509b[_0xde56('0x75')]||![];this['dialAgiAfterHangupAgent']=_0x1c509b[_0xde56('0x76')]||![];this[_0xde56('0xa')]=monitorFormat[_0x1c509b['monitor_format']]?monitorFormat[_0x1c509b[_0xde56('0xa')]]:undefined;this[_0xde56('0x77')]=_0x1c509b[_0xde56('0x77')]||![];this[_0xde56('0x78')]=_0x1c509b['mandatoryDispositionPause']?_0x1c509b['mandatoryDispositionPause']:undefined;}module[_0xde56('0x79')]=VoiceQueue;
\ No newline at end of file
index e1cdde1..53fe545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x670c=['username','accessKey','remoteUri','Configurations','exports','name'];(function(_0x21012c,_0x4b2e89){var _0xedc489=function(_0x1f51e1){while(--_0x1f51e1){_0x21012c['push'](_0x21012c['shift']());}};_0xedc489(++_0x4b2e89);}(_0x670c,0x1bb));var _0xc670=function(_0x255b4b,_0x3a5da3){_0x255b4b=_0x255b4b-0x0;var _0x5bc6d0=_0x670c[_0x255b4b];return _0x5bc6d0;};'use strict';function VtigerAccount(_0x277c00){this['id']=_0x277c00['id']||0x0;this[_0xc670('0x0')]=_0x277c00[_0xc670('0x0')]||'';this[_0xc670('0x1')]=_0x277c00[_0xc670('0x1')]||'';this['accessKey']=_0x277c00[_0xc670('0x2')]||'';this[_0xc670('0x3')]=_0x277c00[_0xc670('0x3')]||'';this['serverUrl']=_0x277c00['serverUrl']||'';this[_0xc670('0x4')]=_0x277c00[_0xc670('0x4')]||{};}module[_0xc670('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x6bf4=['name','username','remoteUri','serverUrl','Configurations','exports'];(function(_0x75609a,_0x313fc9){var _0x5042e3=function(_0x5af37c){while(--_0x5af37c){_0x75609a['push'](_0x75609a['shift']());}};_0x5042e3(++_0x313fc9);}(_0x6bf4,0x168));var _0x46bf=function(_0x4542fa,_0x2fbe70){_0x4542fa=_0x4542fa-0x0;var _0xada496=_0x6bf4[_0x4542fa];return _0xada496;};'use strict';function VtigerAccount(_0x391930){this['id']=_0x391930['id']||0x0;this[_0x46bf('0x0')]=_0x391930[_0x46bf('0x0')]||'';this[_0x46bf('0x1')]=_0x391930[_0x46bf('0x1')]||'';this['accessKey']=_0x391930['accessKey']||'';this[_0x46bf('0x2')]=_0x391930[_0x46bf('0x2')]||'';this['serverUrl']=_0x391930[_0x46bf('0x3')]||'';this[_0x46bf('0x4')]=_0x391930['Configurations']||{};}module[_0x46bf('0x5')]=VtigerAccount;
\ No newline at end of file
index 6c72565..1118858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63e6=['serverUrl','name','username','password','token','remoteUri','authType','type','integrationTab'];(function(_0x19db39,_0x361362){var _0x42361d=function(_0x4c0844){while(--_0x4c0844){_0x19db39['push'](_0x19db39['shift']());}};_0x42361d(++_0x361362);}(_0x63e6,0xe2));var _0x663e=function(_0x1cef05,_0x375aaf){_0x1cef05=_0x1cef05-0x0;var _0x5b19df=_0x63e6[_0x1cef05];return _0x5b19df;};'use strict';function ZendeskAccount(_0xd057a3){this['id']=_0xd057a3['id']||0x0;this[_0x663e('0x0')]=_0xd057a3[_0x663e('0x0')]||'';this['username']=_0xd057a3[_0x663e('0x1')]||'';this['password']=_0xd057a3[_0x663e('0x2')]||'';this[_0x663e('0x3')]=_0xd057a3[_0x663e('0x3')]||'';this[_0x663e('0x4')]=_0xd057a3[_0x663e('0x4')]||'';this['authType']=_0xd057a3[_0x663e('0x5')]||'';this[_0x663e('0x6')]=_0xd057a3[_0x663e('0x6')]||_0x663e('0x7');this['serverUrl']=_0xd057a3[_0x663e('0x8')]||'';this['Configurations']=_0xd057a3['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0x0e9a=['token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x0e9a,0xef));var _0xa0e9=function(_0x56ba41,_0x45dc22){_0x56ba41=_0x56ba41-0x0;var _0x1ef66d=_0x0e9a[_0x56ba41];return _0x1ef66d;};'use strict';function ZendeskAccount(_0x539bb1){this['id']=_0x539bb1['id']||0x0;this[_0xa0e9('0x0')]=_0x539bb1[_0xa0e9('0x0')]||'';this[_0xa0e9('0x1')]=_0x539bb1[_0xa0e9('0x1')]||'';this[_0xa0e9('0x2')]=_0x539bb1[_0xa0e9('0x2')]||'';this[_0xa0e9('0x3')]=_0x539bb1[_0xa0e9('0x3')]||'';this[_0xa0e9('0x4')]=_0x539bb1[_0xa0e9('0x4')]||'';this[_0xa0e9('0x5')]=_0x539bb1['authType']||'';this[_0xa0e9('0x6')]=_0x539bb1[_0xa0e9('0x6')]||_0xa0e9('0x7');this[_0xa0e9('0x8')]=_0x539bb1['serverUrl']||'';this[_0xa0e9('0x9')]=_0x539bb1['Configurations']||{};}module[_0xa0e9('0xa')]=ZendeskAccount;
\ No newline at end of file
index 8aa60f1..d92da43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4521=['Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x434968,_0x2da7c8){var _0xb76df5=function(_0x22ae8e){while(--_0x22ae8e){_0x434968['push'](_0x434968['shift']());}};_0xb76df5(++_0x2da7c8);}(_0x4521,0xc9));var _0x1452=function(_0x3cca10,_0x410da8){_0x3cca10=_0x3cca10-0x0;var _0x2b405f=_0x4521[_0x3cca10];return _0x2b405f;};'use strict';function ZohoAccount(_0x2b2822){this['id']=_0x2b2822['id']||0x0;this[_0x1452('0x0')]=_0x2b2822[_0x1452('0x0')]||'';this[_0x1452('0x1')]=_0x2b2822[_0x1452('0x1')]||'';this[_0x1452('0x2')]=_0x2b2822[_0x1452('0x2')]||'';this[_0x1452('0x3')]=_0x2b2822[_0x1452('0x3')]||'';this[_0x1452('0x4')]=_0x2b2822['clientId']||'';this['clientSecret']=_0x2b2822[_0x1452('0x5')]||'';this[_0x1452('0x6')]=_0x2b2822['serverUrl']||'';this[_0x1452('0x7')]=_0x2b2822[_0x1452('0x7')]||'';this[_0x1452('0x8')]=_0x2b2822[_0x1452('0x8')]||'';this[_0x1452('0x9')]=_0x2b2822[_0x1452('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
+var _0xaade=['Configurations','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x5e725c,_0x3c7899){var _0x367e69=function(_0x5253b4){while(--_0x5253b4){_0x5e725c['push'](_0x5e725c['shift']());}};_0x367e69(++_0x3c7899);}(_0xaade,0x6f));var _0xeaad=function(_0x4512a2,_0x4e34c1){_0x4512a2=_0x4512a2-0x0;var _0x8c31e5=_0xaade[_0x4512a2];return _0x8c31e5;};'use strict';function ZohoAccount(_0x105de5){this['id']=_0x105de5['id']||0x0;this[_0xeaad('0x0')]=_0x105de5['name']||'';this['description']=_0x105de5[_0xeaad('0x1')]||'';this[_0xeaad('0x2')]=_0x105de5[_0xeaad('0x2')]||'';this[_0xeaad('0x3')]=_0x105de5[_0xeaad('0x3')]||'';this[_0xeaad('0x4')]=_0x105de5[_0xeaad('0x4')]||'';this[_0xeaad('0x5')]=_0x105de5[_0xeaad('0x5')]||'';this[_0xeaad('0x6')]=_0x105de5[_0xeaad('0x6')]||'';this['code']=_0x105de5[_0xeaad('0x7')]||'';this['refreshToken']=_0x105de5[_0xeaad('0x8')]||'';this[_0xeaad('0x9')]=_0x105de5[_0xeaad('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index b42c792..d6f5285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','Agent','UserId','VoiceQueueId','prototype','\x22%s\x22\x20<%s>','exports','util','lodash','isNil','string','uniqueid','idContact','queue','type','campaigntype','membername','name','channelAgent','format','SIP/%s'];(function(_0x21b32e,_0x4c915d){var _0x3a53ec=function(_0x255c04){while(--_0x255c04){_0x21b32e['push'](_0x21b32e['shift']());}};_0x3a53ec(++_0x4c915d);}(_0x781d,0x14a));var _0xd781=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x781d[_0x3b380d];return _0x54502b;};'use strict';var util=require(_0xd781('0x0'));var _=require(_0xd781('0x1'));var moment=require('moment');function checkNameSurname(_0x5c1007,_0xb125bf,_0x44a72d){var _0x3cd308='';if(!_[_0xd781('0x2')](_0xb125bf)&&_0xd781('0x3')===typeof _0xb125bf){_0x3cd308+=_0xb125bf;}if(!_[_0xd781('0x2')](_0x44a72d)&&_0xd781('0x3')===typeof _0x44a72d){_0x3cd308+='\x20'+_0x44a72d;}if(_0x3cd308!==''){return _0x3cd308;}return _0x5c1007;}function Action(_0x1d4f4e,_0x830b,_0x2f98ee,_0x5a07f0,_0x133509){this[_0xd781('0x4')]=_0x2f98ee||undefined;this[_0xd781('0x5')]=_0x1d4f4e['id'];this[_0xd781('0x6')]=_0x830b['name'];this[_0xd781('0x7')]=_0x830b['type'];this[_0xd781('0x8')]=_0xd781('0x6');this['dialAnswer']=![];this[_0xd781('0x9')]=_[_0xd781('0x2')](_0x1d4f4e['Agent'])?undefined:_0x1d4f4e['Agent'][_0xd781('0xa')];this[_0xd781('0xb')]=this[_0xd781('0x9')]?util[_0xd781('0xc')](_0xd781('0xd'),this[_0xd781('0x9')]):_0x5a07f0||undefined;this[_0xd781('0xe')]=checkNameSurname(_0x1d4f4e[_0xd781('0xf')][_0xd781('0x10')],_0x1d4f4e[_0xd781('0xf')][_0xd781('0x11')],_0x1d4f4e['Contact'][_0xd781('0x12')]);this[_0xd781('0x13')]=_0x1d4f4e['active']||![];this[_0xd781('0x14')]=_0x1d4f4e['phone'];this[_0xd781('0x15')]=_0x1d4f4e[_0xd781('0x15')];this[_0xd781('0x16')]=_0x1d4f4e[_0xd781('0x16')]||0x0;this[_0xd781('0x17')]=_0x1d4f4e[_0xd781('0x17')]||0x0;this[_0xd781('0x18')]=_0x1d4f4e['countnoanswerretry']||0x0;this[_0xd781('0x19')]=(_0x1d4f4e[_0xd781('0x16')]||0x0)+(_0x1d4f4e[_0xd781('0x17')]||0x0)+(_0x1d4f4e[_0xd781('0x18')]||0x0)+(_0x1d4f4e[_0xd781('0x1a')]||0x0)+(_0x1d4f4e[_0xd781('0x1b')]||0x0)+(_0x1d4f4e[_0xd781('0x1c')]||0x0)+(_0x1d4f4e[_0xd781('0x1d')]||0x0)+(_0x1d4f4e['countagentrejectretry']||0x0);this[_0xd781('0x1a')]=_0x1d4f4e[_0xd781('0x1a')]||0x0;this[_0xd781('0x1b')]=_0x1d4f4e[_0xd781('0x1b')]||0x0;this[_0xd781('0x1c')]=_0x1d4f4e[_0xd781('0x1c')]||0x0;this[_0xd781('0x1d')]=_0x1d4f4e['countmachineretry']||0x0;this[_0xd781('0x1e')]=_0x1d4f4e['countagentrejectretry']||0x0;this['callback']=_0x1d4f4e[_0xd781('0x1f')];this['callbackuniqueid']=_0x1d4f4e[_0xd781('0x20')];this[_0xd781('0x21')]=_0x1d4f4e[_0xd781('0x21')];this[_0xd781('0x22')]=_0x1d4f4e[_0xd781('0x22')];this[_0xd781('0x23')]=_0x1d4f4e[_0xd781('0x23')];this[_0xd781('0x24')]=_0x1d4f4e[_0xd781('0x24')];this['UserId']=_['isNil'](_0x1d4f4e[_0xd781('0x25')])?_0x1d4f4e[_0xd781('0x26')]:_0x1d4f4e[_0xd781('0x25')]['id'];this['VoiceQueueId']=_0x1d4f4e[_0xd781('0x27')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0xd781('0x28')]['getCaller']=function(){return util[_0xd781('0xc')](_0xd781('0x29'),this['calleridname'],this['number']);};module[_0xd781('0x2a')]=Action;
\ No newline at end of file
+var _0x7d25=['ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','number','exports','lodash','moment','isNil','uniqueid','name','type','campaigntype','queue','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x7afa76,_0x42a80b){var _0x53c307=function(_0x12ebcb){while(--_0x12ebcb){_0x7afa76['push'](_0x7afa76['shift']());}};_0x53c307(++_0x42a80b);}(_0x7d25,0x8a));var _0x57d2=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x7d25[_0x59d89e];return _0x554e93;};'use strict';var util=require('util');var _=require(_0x57d2('0x0'));var moment=require(_0x57d2('0x1'));function checkNameSurname(_0x35bca8,_0x286bd3,_0x34bad5){var _0x56e08b='';if(!_[_0x57d2('0x2')](_0x286bd3)&&'string'===typeof _0x286bd3){_0x56e08b+=_0x286bd3;}if(!_['isNil'](_0x34bad5)&&'string'===typeof _0x34bad5){_0x56e08b+='\x20'+_0x34bad5;}if(_0x56e08b!==''){return _0x56e08b;}return _0x35bca8;}function Action(_0x5dea84,_0x3c5511,_0x49cc5f,_0x1f43b2,_0x263d35){this[_0x57d2('0x3')]=_0x49cc5f||undefined;this['idContact']=_0x5dea84['id'];this['queue']=_0x3c5511[_0x57d2('0x4')];this['type']=_0x3c5511[_0x57d2('0x5')];this[_0x57d2('0x6')]=_0x57d2('0x7');this['dialAnswer']=![];this[_0x57d2('0x8')]=_[_0x57d2('0x2')](_0x5dea84[_0x57d2('0x9')])?undefined:_0x5dea84[_0x57d2('0x9')][_0x57d2('0x4')];this[_0x57d2('0xa')]=this[_0x57d2('0x8')]?util[_0x57d2('0xb')](_0x57d2('0xc'),this[_0x57d2('0x8')]):_0x1f43b2||undefined;this[_0x57d2('0xd')]=checkNameSurname(_0x5dea84[_0x57d2('0xe')][_0x57d2('0xf')],_0x5dea84[_0x57d2('0xe')][_0x57d2('0x10')],_0x5dea84[_0x57d2('0xe')]['lastName']);this['active']=_0x5dea84[_0x57d2('0x11')]||![];this[_0x57d2('0x12')]=_0x5dea84['phone'];this[_0x57d2('0x13')]=_0x5dea84[_0x57d2('0x13')];this['countbusyretry']=_0x5dea84[_0x57d2('0x14')]||0x0;this['countcongestionretry']=_0x5dea84[_0x57d2('0x15')]||0x0;this['countnoanswerretry']=_0x5dea84[_0x57d2('0x16')]||0x0;this[_0x57d2('0x17')]=(_0x5dea84[_0x57d2('0x14')]||0x0)+(_0x5dea84['countcongestionretry']||0x0)+(_0x5dea84['countnoanswerretry']||0x0)+(_0x5dea84[_0x57d2('0x18')]||0x0)+(_0x5dea84[_0x57d2('0x19')]||0x0)+(_0x5dea84[_0x57d2('0x1a')]||0x0)+(_0x5dea84[_0x57d2('0x1b')]||0x0)+(_0x5dea84['countagentrejectretry']||0x0);this[_0x57d2('0x18')]=_0x5dea84[_0x57d2('0x18')]||0x0;this['countdropretry']=_0x5dea84['countdropretry']||0x0;this[_0x57d2('0x1a')]=_0x5dea84[_0x57d2('0x1a')]||0x0;this[_0x57d2('0x1b')]=_0x5dea84[_0x57d2('0x1b')]||0x0;this[_0x57d2('0x1c')]=_0x5dea84[_0x57d2('0x1c')]||0x0;this[_0x57d2('0x1d')]=_0x5dea84[_0x57d2('0x1d')];this[_0x57d2('0x1e')]=_0x5dea84[_0x57d2('0x1e')];this[_0x57d2('0x1f')]=_0x5dea84[_0x57d2('0x1f')];this[_0x57d2('0x20')]=_0x5dea84[_0x57d2('0x20')];this['ContactId']=_0x5dea84[_0x57d2('0x21')];this[_0x57d2('0x22')]=_0x5dea84[_0x57d2('0x22')];this[_0x57d2('0x23')]=_[_0x57d2('0x2')](_0x5dea84['Agent'])?_0x5dea84[_0x57d2('0x23')]:_0x5dea84[_0x57d2('0x9')]['id'];this[_0x57d2('0x24')]=_0x5dea84[_0x57d2('0x24')];this[_0x57d2('0x25')]='';this[_0x57d2('0x26')]='';}Action[_0x57d2('0x27')]['getCaller']=function(){return util[_0x57d2('0xb')](_0x57d2('0x28'),this[_0x57d2('0xd')],this[_0x57d2('0x29')]);};module[_0x57d2('0x2a')]=Action;
\ No newline at end of file
index 92b9948..76703ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7524=['[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','NOT_ACTIVE','isTrunkReachable','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','activeContact','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','uniqueid','\x20Queue','buildObj','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','Answer','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','Abandoned','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','unlock','unlockContact','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','trim','substring','dialCutDigit','SIP/%s/%s%s','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','variables','[originated][increment]','originated:\x20','OriginateError','[originateFailure][logOriginateFailure]','syncOriginateResponse','actionid','logLookAgent','clone','isFailure','rejected','[callProgressDetectingAgent][logAnswer]','cause','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','syncAttendedTransfer','transfertargetlinkedid','transfererlinkedid','exports','lodash','uuid','md5','ioredis','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','campaignsPreview','voiceQueues','trunks','actions','agents','originateresponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','syncNewExten','varset','syncVarSet','attendedtransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','loggedInDb','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','Interval','stringify','format','voice:queue:%s','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','clockClearZombieChannels','hasOwnProperty','dialMethod','booked','clearZombieChannels','dialActive','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','sequence','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','Action','channel','updateOriginated','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','recallMe','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','catch','disableContact','starttime','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0x7524,0xce));var _0x4752=function(_0x204a3b,_0x41adce){_0x204a3b=_0x204a3b-0x0;var _0x458547=_0x7524[_0x204a3b];return _0x458547;};'use strict';var util=require('util');var _=require(_0x4752('0x0'));var uuid=require(_0x4752('0x1'));var moment=require('moment');var md5=require(_0x4752('0x2'));var Redis=require(_0x4752('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x4752('0x4'));var loggerAction=require('../../../config/logger')(_0x4752('0x5'));var ami=require(_0x4752('0x6'));var rpcDb=require(_0x4752('0x7'));var cmHopperAdditionalPhone=require(_0x4752('0x8'));var Action=require(_0x4752('0x9'));var ut=require('./util/util');config[_0x4752('0xa')]=_[_0x4752('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4752('0xc'))(new Redis(config[_0x4752('0xa')]));var Sequence=function(){};Sequence[_0x4752('0xd')][_0x4752('0xe')]=function(_0x52b972){this[_0x4752('0xf')]=this[_0x4752('0xf')]?this[_0x4752('0xf')][_0x4752('0x10')](_0x52b972):_0x52b972();};function Preview(_0xcf0104){this['sequence']=new Sequence();this[_0x4752('0x11')]=_0xcf0104[_0x4752('0x12')];this[_0x4752('0x13')]=_0xcf0104[_0x4752('0x13')];this[_0x4752('0x14')]={};this[_0x4752('0x15')]=_0xcf0104[_0x4752('0x15')];this['clockClearZombieChannels']=0x0;ami['on'](_0x4752('0x16'),this['syncOriginateResponse'][_0x4752('0x17')](this));ami['on'](_0x4752('0x18'),this[_0x4752('0x19')][_0x4752('0x17')](this));ami['on'](_0x4752('0x1a'),this[_0x4752('0x1b')][_0x4752('0x17')](this));ami['on']('dialend',this[_0x4752('0x1c')][_0x4752('0x17')](this));ami['on']('newexten',this[_0x4752('0x1d')]['bind'](this));ami['on'](_0x4752('0x1e'),this[_0x4752('0x1f')]['bind'](this));ami['on'](_0x4752('0x20'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x4752('0x21'),this[_0x4752('0x22')][_0x4752('0x17')](this));this[_0x4752('0x23')](this[_0x4752('0x11')]);}function emit(_0x3142b,_0x55c67c,_0x22215f){io['to'](_0x3142b)[_0x4752('0x24')](_0x55c67c,_0x22215f);}function emitCampaignPreview(_0x477050){if(_0x477050[_0x4752('0x25')]===_0x4752('0x26')){var _0xaa95a4={'id':_0x477050['id'],'name':_0x477050['name'],'strategy':_0x477050[_0x4752('0x27')],'answered':_0x477050[_0x4752('0x28')],'available':_0x477050['available'],'loggedIn':_0x477050[_0x4752('0x29')],'pTalking':_0x477050[_0x4752('0x2a')],'sumBillable':_0x477050[_0x4752('0x2b')],'sumDuration':_0x477050[_0x4752('0x2c')],'sumHoldTime':_0x477050[_0x4752('0x2d')]||0x0,'talking':_0x477050[_0x4752('0x2e')],'total':_0x477050[_0x4752('0x2f')],'type':_0x477050[_0x4752('0x25')],'unmanaged':_0x477050[_0x4752('0x30')],'abandoned':_0x477050[_0x4752('0x31')],'waiting':_0x477050['waiting'],'loggedInDb':_0x477050[_0x4752('0x32')],'dialActive':_0x477050['dialActive'],'dialMethod':_0x477050['dialMethod'],'dialOriginateCallerIdName':_0x477050['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x477050[_0x4752('0x33')],'dialOriginateTimeout':_0x477050[_0x4752('0x34')],'dialPrefix':_0x477050[_0x4752('0x35')],'outboundAnswerAgiCallsDay':_0x477050[_0x4752('0x36')],'outboundAnswerCallsDay':_0x477050[_0x4752('0x37')],'outboundBlacklistCallsDay':_0x477050[_0x4752('0x38')],'outboundBusyCallsDay':_0x477050[_0x4752('0x39')],'outboundCongestionCallsDay':_0x477050[_0x4752('0x3a')],'outboundDropCallsDayACS':_0x477050['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x477050['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x477050[_0x4752('0x3b')],'outboundNoAnswerCallsDay':_0x477050[_0x4752('0x3c')],'outboundNoSuchCallsDay':_0x477050[_0x4752('0x3d')],'outboundOriginateFailureCallsDay':_0x477050[_0x4752('0x3e')],'outboundReCallsDay':_0x477050[_0x4752('0x3f')],'outboundRejectCallsDay':_0x477050[_0x4752('0x40')],'outboundUnknownCallsDay':_0x477050[_0x4752('0x41')],'outboundAbandonedCallsDay':_0x477050[_0x4752('0x42')],'predictiveIntervalAnsweredCalls':_0x477050[_0x4752('0x43')],'predictiveIntervalAvgHoldtime':_0x477050[_0x4752('0x44')],'predictiveIntervalAvgTalktime':_0x477050[_0x4752('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x477050[_0x4752('0x46')],'predictiveIntervalDroppedCallsTimeout':_0x477050[_0x4752('0x47')],'predictiveIntervalErlangCalls':_0x477050[_0x4752('0x48')],'predictiveIntervalErlangCallsDroppedCalls':_0x477050[_0x4752('0x49')],'predictiveIntervalHitRate':_0x477050[_0x4752('0x4a')],'predictiveIntervalMultiplicativeFactor':_0x477050['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x477050['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x477050[_0x4752('0x4b')],'predictiveIntervalTotalCalls':_0x477050[_0x4752('0x4c')],'message':_0x477050[_0x4752('0x4d')],'originated':_0x477050[_0x4752('0x4e')],'erlangCalls':_0x477050[_0x4752('0x4f')],'erlangCallToSecond':_0x477050[_0x4752('0x50')],'erlangAbandonmentRate':_0x477050[_0x4752('0x51')],'erlangBusyFactor':_0x477050[_0x4752('0x52')],'startPredictive':_0x477050[_0x4752('0x53')],'startProgressive':_0x477050[_0x4752('0x54')]};if(_0x477050['Trunk']){_0xaa95a4[_0x4752('0x55')]={'id':_0x477050['Trunk']['id'],'name':_0x477050[_0x4752('0x55')][_0x4752('0x56')],'active':_0x477050[_0x4752('0x55')][_0x4752('0x57')],'callerid':_0x477050[_0x4752('0x55')]['callerid']};}if(_0x477050[_0x4752('0x58')]){_0xaa95a4['Interval']={'id':_0x477050[_0x4752('0x58')]['id'],'name':_0x477050[_0x4752('0x58')][_0x4752('0x56')]};}var _0x1779a1=md5(JSON[_0x4752('0x59')](_0xaa95a4));if(_0x477050[_0x4752('0x2')]!==_0x1779a1){_0x477050[_0x4752('0x2')]=_0x1779a1;emit(util[_0x4752('0x5a')](_0x4752('0x5b'),_0xaa95a4[_0x4752('0x56')]),'voice_queue:save',_0xaa95a4);}}}function emitVoiceQueueChannelRemove(_0x1717ea){logger[_0x4752('0x5c')](_0x4752('0x5d'),JSON[_0x4752('0x59')](_0x1717ea));emit(util[_0x4752('0x5a')](_0x4752('0x5b'),_0x1717ea[_0x4752('0x56')]),_0x4752('0x5e'),_0x1717ea);io['emit'](_0x4752('0x5f'),_0x1717ea);}function notSendMessagesQueue(_0x4c1ee0){if(_0x4c1ee0[_0x4752('0x60')]){if(_0x4c1ee0[_0x4752('0x4e')]===0x0&&_0x4c1ee0[_0x4752('0x2a')]===0x0){_0x4c1ee0[_0x4752('0x60')]=![];_0x4c1ee0['available']=0x0;_0x4c1ee0['paused']=0x0;_0x4c1ee0['message']='NOT_ACTIVE';ut[_0x4752('0x61')](_0x4752('0x62'),_0x4c1ee0['name']+_0x4752('0x63'));}else{_0x4c1ee0[_0x4752('0x4d')]=_0x4752('0x64');ut['logger'](_0x4752('0x62'),_0x4c1ee0[_0x4752('0x56')]+_0x4752('0x65'));}emitCampaignPreview(_0x4c1ee0);}}Preview[_0x4752('0xd')][_0x4752('0x23')]=function(){var _0x53dfdf=this;setInterval(function(){_0x53dfdf['syncCampaigns']();},0x7cf);};Preview[_0x4752('0xd')][_0x4752('0x66')]=function(){var _0x828534=this[_0x4752('0x11')];this[_0x4752('0x67')]+=0x1;for(var _0x1049f7 in _0x828534){if(_0x828534[_0x4752('0x68')](_0x1049f7)&&(_0x828534[_0x1049f7][_0x4752('0x69')]===_0x4752('0x4')||_0x828534[_0x1049f7][_0x4752('0x69')]===_0x4752('0x6a'))&&_0x828534[_0x1049f7][_0x4752('0x25')]==='outbound'){if(this[_0x4752('0x67')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x4752('0x6b')]();}}if(_0x828534[_0x4752('0x68')](_0x1049f7)&&_0x828534[_0x1049f7]['dialMethod']===_0x4752('0x4')&&_0x828534[_0x1049f7][_0x4752('0x25')]===_0x4752('0x26')){if(_0x828534[_0x1049f7][_0x4752('0x6c')]){this[_0x4752('0x6d')](_0x828534[_0x1049f7]);if(_0x828534[_0x1049f7][_0x4752('0x6e')])this['recallMe'](_0x828534[_0x1049f7]);}else{notSendMessagesQueue(_0x828534[_0x1049f7]);}}}};Preview[_0x4752('0xd')][_0x4752('0x6f')]=function(_0x3a78b2){var _0x27756d=this;this[_0x4752('0x70')][_0x4752('0xe')](function(){if(!_['isNil'](_0x27756d[_0x4752('0x14')][_0x3a78b2])){loggerAction[_0x4752('0x5c')](_0x4752('0x71'),_0x3a78b2,_0x4752('0x72'),_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')],'originated:\x20',JSON[_0x4752('0x59')](_0x27756d['campaignsPreview'][_0x27756d['actions'][_0x3a78b2][_0x4752('0x73')]][_0x4752('0x4e')]),_0x4752('0x74'),JSON['stringify'](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2]['queue']][_0x4752('0x2a')]),JSON[_0x4752('0x59')](_0x27756d[_0x4752('0x14')][_0x3a78b2]['dialAnswer']),JSON[_0x4752('0x59')](_[_0x4752('0x75')](_0x27756d[_0x4752('0x14')][_0x3a78b2],[_0x4752('0x76'),_0x4752('0x77'),_0x4752('0x78'),'ListId'])));return ami[_0x4752('0x79')]({'action':'status','channel':_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x7a')]})['catch'](function(_0x4fee8c){if(_0x4fee8c['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x27756d['actions'][_0x3a78b2]){ut[_0x4752('0x7b')](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]],'[clearZombieChannel]');if(_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x7c')]===!![]){ut[_0x4752('0x7d')](_0x27756d[_0x4752('0x11')][_0x27756d[_0x4752('0x14')][_0x3a78b2]['queue']],_0x4752('0x7e'));ut[_0x4752('0x7f')](_0x4752('0x80')+_0x3a78b2,_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]);}ut[_0x4752('0x7f')]('[Dialer][checkChannel][Preview]'+_0x3a78b2,_0x27756d[_0x4752('0x14')][_0x3a78b2][_0x4752('0x73')]);delete _0x27756d['actions'][_0x3a78b2];}},0x2328);}});}});};Preview[_0x4752('0xd')][_0x4752('0x6b')]=function(){var _0x44a8d4=this;loggerAction[_0x4752('0x5c')](_0x4752('0x81'),_[_0x4752('0x82')](this[_0x4752('0x14')]));for(var _0x26e522 in this[_0x4752('0x14')]){if(_0x44a8d4[_0x4752('0x14')]['hasOwnProperty'](_0x26e522)){_0x44a8d4['clearZombieChannel'](_0x26e522);}}};Preview[_0x4752('0xd')][_0x4752('0x83')]=function(_0x2c9006){var _0x279ab1=this;rpcDb[_0x4752('0x84')](_0x2c9006['id'],ut[_0x4752('0x85')](this['agents']))[_0x4752('0x86')](function(_0xd0f3be){if(!_[_0x4752('0x87')](_0xd0f3be)){for(var _0x24d20d=0x0;_0x24d20d<_0xd0f3be[_0x4752('0x88')];_0x24d20d+=0x1){if(ut[_0x4752('0x89')](_0xd0f3be[_0x24d20d][_0x4752('0x8a')])<_0x2c9006[_0x4752('0x8b')]*0x3c){if(_0xd0f3be[_0x24d20d][_0x4752('0x8c')]&&!_0xd0f3be[_0x24d20d][_0x4752('0x8c')]['voicePause']){_0x279ab1[_0x4752('0x8d')](_0xd0f3be[_0x24d20d]['id'])[_0x4752('0x86')](ut[_0x4752('0x8e')](_0x4752('0x8f')))[_0x4752('0x90')](ut[_0x4752('0x8e')](_0x4752('0x8f')));}else{rpcDb[_0x4752('0x91')](_0xd0f3be[_0x24d20d]['id']);}}else{var _0x532bfd=new Action(_0xd0f3be[_0x24d20d],_0x2c9006);_0x532bfd[_0x4752('0x92')]=moment()[_0x4752('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');_0x2c9006[_0x4752('0x3f')]+=0x1;ut[_0x4752('0x93')](_0x532bfd,0x17,'RecallInQueue');if(_0x2c9006[_0x4752('0x94')]){rpcDb[_0x4752('0x95')](ut[_0x4752('0x96')](_0xd0f3be[_0x24d20d]));rpcDb['createCustomerHistory'](_0x532bfd,_0x4752('0x97'));}else{ut[_0x4752('0x93')](_0x532bfd,0x16,_0x4752('0x98'));rpcDb[_0x4752('0x99')](_0x532bfd,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x532bfd,_0x4752('0x9a'));}}}}})[_0x4752('0x90')](ut[_0x4752('0x8e')](_0x4752('0x9b')));};Preview[_0x4752('0xd')][_0x4752('0x6d')]=function(_0x2296a3){_0x2296a3[_0x4752('0x60')]=!![];if(ut[_0x4752('0x9c')](_0x2296a3[_0x4752('0x29')])){_0x2296a3[_0x4752('0x4d')]=_0x4752('0x9d');}else if(!ut[_0x4752('0x9e')](_0x2296a3[_0x4752('0x6c')])){_0x2296a3['message']=_0x4752('0x9f');}else if(!this[_0x4752('0xa0')](_0x2296a3[_0x4752('0x55')])){if(!this[_0x4752('0xa0')](_0x2296a3['TrunkBackup'])){_0x2296a3[_0x4752('0x4d')]='TRUNK_IS_NOT_REACHABLE';}else{_0x2296a3[_0x4752('0x4d')]=_0x4752('0xa1');}}else{_0x2296a3['message']=_0x4752('0xa1');}emitCampaignPreview(_0x2296a3);};Preview[_0x4752('0xd')][_0x4752('0xa2')]=function(_0x372a94,_0x2f3686,_0x1f92fa){var _0x1e62e1=this;var _0x22aefa=this[_0x4752('0x14')][_0x2f3686];var _0x126210=this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]];var _0x2bf31d;var _0x1ac823=![];var _0x17f4ff=0x2;var _0x544cf8=0x3;if(_0x126210){switch(_0x1f92fa){case'1':_0x126210[_0x4752('0x3d')]+=0x1;_0x22aefa['countnosuchnumberretry']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x0,_0x4752('0xa5'));ami[_0x4752('0x24')](_0x4752('0xa6'),ut['buildObj'](_0x22aefa,'nosuchnumber'));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xa7'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'0',_0x126210)['then'](function(_0x5ed9ed){_0x1ac823=_0x5ed9ed[_0x4752('0xa9')]==0x1;_0x17f4ff=_0x126210[_0x4752('0xaa')];_0x544cf8=_0x126210[_0x4752('0xab')];if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xb0'));}else{if(_0x22aefa[_0x4752('0xb1')]>=_0x126210[_0x4752('0xb2')]){rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xb0'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countnosuchnumberretry',_0x126210[_0x4752('0xaa')]),_0x22aefa[_0x4752('0xb5')],_0x22aefa[_0x4752('0xb6')]);}}delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];}else{_0x22aefa[_0x4752('0xb1')]++;logger['info']('actioncountonusuch',_0x22aefa[_0x4752('0xb1')]);logger[_0x4752('0x5c')]('id',_0x22aefa[_0x4752('0xb8')]);_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnosuchnumberretry':_0x22aefa['countnosuchnumberretry']}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xbb'):var _0x3cc3ed=moment()[_0x4752('0x5a')](_0x4752('0xbc'));_0x22aefa[_0x4752('0xbd')]=_0x3cc3ed;_0x22aefa[_0x4752('0xbe')]=_0x3cc3ed;_0x22aefa[_0x4752('0x7c')]=!![];_0x126210[_0x4752('0x2a')]+=0x1;logger['info']('[syncHangup][talking][increment]',_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],_0x4752('0x74'),_0x126210[_0x4752('0x2a')]);ami[_0x4752('0x24')]('custom:agentconnect',ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xc2'),this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]]));if(_0x126210[_0x4752('0xc3')]){ami['emit'](_0x4752('0xc4'),ut[_0x4752('0xc5')](_0x22aefa));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xc6'),this['campaignsPreview'][_0x22aefa[_0x4752('0x73')]]));emitVoiceQueueChannelRemove(ut[_0x4752('0xc1')](_0x22aefa,'complete'));_0x126210['outboundAnswerCallsDay']+=0x1;_0x126210[_0x4752('0x2f')]+=0x1;_0x126210['answered']+=0x1;ut[_0x4752('0x7d')](_0x126210,_0x4752('0xc7'));_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x4,_0x4752('0xc8'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logAnswer]');rpcDb['createCustomerFinal'](_0x22aefa,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x4752('0xc9')](_0x22aefa);_0x126210['sumDuration']+=_0x22aefa[_0x4752('0xca')];_0x126210[_0x4752('0x2b')]+=_0x22aefa[_0x4752('0xca')];logger[_0x4752('0x5c')](_0x4752('0xcb'),_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],_0x4752('0x74'),_0x126210[_0x4752('0x2a')]);delete this[_0x4752('0x14')][_0x372a94['linkedid']];break;case _0x4752('0xcc'):_0x126210[_0x4752('0x39')]+=0x1;_0x22aefa[_0x4752('0xcd')]+=0x1;_0x22aefa['countglobal']=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x5,_0x4752('0xce'));_0x17f4ff=_0x126210['dialBusyRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];ami['emit'](_0x4752('0xcf'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xd0')));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logBusy]');_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'5',_0x126210)[_0x4752('0x86')](function(_0x46af16){_0x1ac823=_0x46af16[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xd1'));}else{if(_0x22aefa[_0x4752('0xcd')]>=_0x126210[_0x4752('0xd2')]){rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xd3'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countbusyretry',_0x126210[_0x4752('0xd4')]),_0x22aefa['unlockAgent'],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xcd')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countbusyretry':_0x22aefa['countbusyretry']}})[_0x4752('0x86')](function(){_0x1e62e1['swapAdditionalPhones'](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});break;case _0x4752('0xd5'):_0x126210[_0x4752('0x3c')]+=0x1;_0x22aefa[_0x4752('0xd6')]+=0x1;_0x22aefa['countglobal']=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x3,'NoAnswer');_0x17f4ff=_0x126210['dialNoAnswerRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];var _0x3333e9=ut[_0x4752('0xd7')](_0x22aefa,_0x126210);ami[_0x4752('0x24')](_0x4752('0xd8'),_0x3333e9);rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xd9'));_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'3',_0x126210)[_0x4752('0x86')](function(_0xa2de54){_0x1ac823=_0xa2de54[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xda'));}else{if(_0x22aefa[_0x4752('0xd6')]>=_0x126210[_0x4752('0xdb')]){rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xd9'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xd6'),_0x126210[_0x4752('0xdc')]),_0x22aefa['unlockAgent'],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})['then'](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xdd'):_0x126210['outboundCongestionCallsDay']+=0x1;_0x22aefa[_0x4752('0xde')]+=0x1;_0x22aefa['countglobal']=ut['totalGlobal'](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x8,_0x4752('0xdf'));_0x17f4ff=_0x126210['dialCongestionRetryFrequency'];_0x544cf8=_0x126210[_0x4752('0xab')];ami['emit'](_0x4752('0xe0'),ut['buildObj'](_0x22aefa,_0x4752('0xe1')));rpcDb[_0x4752('0x99')](_0x22aefa,_0x4752('0xe2'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'8',_0x126210)['then'](function(_0x5f147d){_0x1ac823=_0x5f147d['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xe3'));}else{if(_0x22aefa[_0x4752('0xde')]>=_0x126210[_0x4752('0xe4')]){rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xde'),_0x126210['dialBusyRetryFrequency']),_0x22aefa[_0x4752('0xb5')],_0x22aefa['activeContact']);}}}else{_0x22aefa['countcongestionretry']++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countcongestionretry':_0x22aefa[_0x4752('0xde')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xe5'):_0x126210['outboundRejectCallsDay']+=0x1;_0x22aefa[_0x4752('0xe6')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x14,_0x4752('0xe7'));_0x17f4ff=_0x126210[_0x4752('0xe8')];_0x544cf8=_0x126210[_0x4752('0xab')];ami[_0x4752('0x24')](_0x4752('0xe9'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xea')));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xeb'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'20',_0x126210)[_0x4752('0x86')](function(_0xd67b57){_0x1ac823=_0xd67b57['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut['cloneAction'](_0x22aefa,0x14,_0x4752('0xe7'));rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xec'));}else{if(_0x22aefa[_0x4752('0xe6')]>=_0x126210[_0x4752('0xed')]){rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xec'));}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,'countagentrejectretry',_0x126210[_0x4752('0xe8')]),_0x22aefa['unlockAgent'],_0x22aefa['activeContact']);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});break;case _0x4752('0xee'):_0x126210['outboundAbandonedCallsDay']+=0x1;_0x22aefa[_0x4752('0xef')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0xb,_0x4752('0xf0'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][logAbandoned]');_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'11',_0x126210)[_0x4752('0x86')](function(_0x54e69c){_0x1ac823=_0x54e69c[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut['totalGlobal'](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut['cloneAction'](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x22aefa[_0x4752('0xf1')]>=_0x126210[_0x4752('0xf2')]){rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x4752('0xb3')](ut[_0x4752('0xb4')](_0x22aefa,_0x4752('0xef'),_0x126210[_0x4752('0xf3')]),_0x22aefa[_0x4752('0xb5')],_0x22aefa[_0x4752('0xb6')]);}}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});break;case'18':_0x126210['outboundUnknownCallsDay']+=0x1;_0x22aefa['countmachineretry']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut['logCustomer'](_0x22aefa,0x12,_0x372a94[_0x4752('0xf4')]||_0x372a94[_0x4752('0xf5')]);ami[_0x4752('0x24')](_0x4752('0xf6'),ut[_0x4752('0xc1')](_0x22aefa,_0x4752('0xf7')));rpcDb['createCustomerHistory'](_0x22aefa,_0x4752('0xf8'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'18',_0x126210)[_0x4752('0x86')](function(_0xb7d42f){_0x1ac823=_0xb7d42f[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut['cloneAction'](_0x22aefa,0x12,'Global');rpcDb['createCustomerFinal'](_0x2bf31d,_0x4752('0xf8'));}else{rpcDb['createCustomerFinal'](_0x22aefa,_0x4752('0xf8'));}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa[_0x4752('0xd6')]}})[_0x4752('0x86')](function(){_0x1e62e1['swapAdditionalPhones'](_0x22aefa,_0x17f4ff,_0x544cf8)['then'](function(){});});}});delete this['actions'][_0x372a94['linkedid']];break;case'19':_0x126210[_0x4752('0x41')]+=0x1;_0x22aefa[_0x4752('0xa3')]=ut[_0x4752('0xa4')](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0x13,_0x372a94['cause-txt']||_0x372a94[_0x4752('0xf5')]);ami['emit'](_0x4752('0xf6'),ut['buildObj'](_0x22aefa,'amd'));rpcDb[_0x4752('0x99')](_0x22aefa,'[callProgressDetectingCustomer][machine]');_0x1e62e1['verifyAdditionalPhones'](_0x22aefa,'18',_0x126210)[_0x4752('0x86')](function(_0x3cc9cf){_0x1ac823=_0x3cc9cf[_0x4752('0xa9')]==0x1;if(!_0x1ac823){if(ut['totalGlobal'](_0x22aefa)>=_0x126210[_0x4752('0xac')]){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,'Global');rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xf9'));}else{rpcDb[_0x4752('0xaf')](_0x22aefa,_0x4752('0xf9'));}}else{_0x22aefa[_0x4752('0xd6')]++;_0x1e62e1[_0x4752('0xb9')]({'id':_0x22aefa[_0x4752('0xb8')],'field':{'countnoanswerretry':_0x22aefa['countnoanswerretry']}})['then'](function(){_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});});}});delete this[_0x4752('0x14')][_0x372a94['linkedid']];break;default:if(_0x22aefa['dialAnswer']){ut[_0x4752('0x7d')](_0x126210,'[default]');ut[_0x4752('0x7f')](_0x4752('0xfa')+_0x126210['name'],_0x372a94);}_0x126210['outboundUnknownCallsDay']+=0x1;_0x22aefa[_0x4752('0xa3')]=ut['totalGlobal'](_0x22aefa);ut[_0x4752('0x93')](_0x22aefa,0xc,_0x372a94[_0x4752('0xf4')]||_0x372a94[_0x4752('0xf5')]);_0x17f4ff=_0x126210[_0x4752('0xe8')];_0x544cf8=_0x126210['callAdditionalPhoneAfterMin'];rpcDb[_0x4752('0x99')](_0x22aefa,_0x4752('0xfb'));_0x1e62e1[_0x4752('0xa8')](_0x22aefa,'20',_0x126210)['then'](function(_0x611cb0){_0x1ac823=_0x611cb0['additional']==0x1;if(!_0x1ac823){if(ut[_0x4752('0xa4')](_0x22aefa)>=_0x126210['dialGlobalMaxRetry']){_0x2bf31d=ut[_0x4752('0xad')](_0x22aefa,0xf,_0x4752('0xae'));rpcDb[_0x4752('0xaf')](_0x2bf31d,_0x4752('0xfc'));}else{rpcDb[_0x4752('0xaf')](_0x22aefa,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];}else{_0x1e62e1[_0x4752('0xba')](_0x22aefa,_0x17f4ff,_0x544cf8)[_0x4752('0x86')](function(){});}});}if(!(_0x22aefa[_0x4752('0x7c')]&&_0x1f92fa==='16')){ut[_0x4752('0x7b')](_0x126210,_0x4752('0xfd'));logger[_0x4752('0x5c')](_0x4752('0xfe'),_0x22aefa[_0x4752('0xbf')],_0x4752('0xc0'),_0x126210[_0x4752('0x56')],'originated:\x20',_0x126210[_0x4752('0x4e')]);}if(_0x1f92fa!==_0x4752('0xbb')){delete this[_0x4752('0x14')][_0x372a94[_0x4752('0xb7')]];delete this['actions'][_0x372a94[_0x4752('0xff')]];}}};Preview[_0x4752('0xd')][_0x4752('0x100')]=function(_0xcaeb11,_0x12489b,_0x7a8b80){if(_[_0x4752('0x101')](_0x12489b)&&'object'!==typeof _0x12489b){return;}if(_[_0x4752('0x101')](_0x7a8b80)&&_0x4752('0x102')!==typeof _0x7a8b80){return;}switch(_0x7a8b80[_0x4752('0x103')]){case'0':ut[_0x4752('0x104')](_0xcaeb11,0x0,_0x4752('0xa5'));rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x106'));break;case'3':ut[_0x4752('0x104')](_0xcaeb11,0x3,'NoAnswer');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x107'));break;case'5':ut[_0x4752('0x104')](_0xcaeb11,0x5,_0x4752('0xce'));rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x108'));break;case'8':ut[_0x4752('0x104')](_0xcaeb11,0x8,'Congestion');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x109'));break;case'22':ut[_0x4752('0x104')](_0xcaeb11,0x16,'AnswerAGI');rpcDb[_0x4752('0x105')](_0xcaeb11,_0x4752('0x10a'));break;default:ut[_0x4752('0x104')](_0xcaeb11,0xc,_0x7a8b80[_0x4752('0x103')]);rpcDb['createAgentHistory'](_0xcaeb11,'[callProgressDetectingAgent][logCongestion]');}ut[_0x4752('0x7b')](_0x12489b,'[callProgressDetectingAgent]');logger[_0x4752('0x5c')](_0x4752('0x10b'),_0xcaeb11[_0x4752('0xbf')],_0x4752('0xc0'),_0x12489b[_0x4752('0x56')],'originated:\x20',_0x12489b['originated']);delete this['actions'][_0xcaeb11['uniqueid']];};Preview[_0x4752('0xd')][_0x4752('0xa8')]=function(_0x61be3f,_0x1e182c,_0x52ad21){return Promise[_0x4752('0x10c')]()[_0x4752('0x86')](cmHopperAdditionalPhone[_0x4752('0xa8')](_0x61be3f,_0x1e182c,_0x52ad21))['catch'](logger[_0x4752('0x5c')]('[verifyAdditionalPhone]\x20'));};Preview[_0x4752('0xd')]['swapAdditionalPhones']=function(_0x3f9e5e,_0x1926a6,_0xae7d8c){return Promise[_0x4752('0x10c')]()[_0x4752('0x86')](cmHopperAdditionalPhone[_0x4752('0xba')](_0x3f9e5e,_0x1926a6,_0xae7d8c))[_0x4752('0x90')](logger[_0x4752('0x5c')](_0x4752('0x10d')));};Preview[_0x4752('0xd')][_0x4752('0xb9')]=function(_0x39682a){return Promise['resolve']()[_0x4752('0x86')](cmHopperAdditionalPhone['incrementPreviewCounters'](_0x39682a))[_0x4752('0x90')](logger[_0x4752('0x5c')](_0x4752('0x10e')));};Preview[_0x4752('0xd')][_0x4752('0x10f')]=function(_0x159b02,_0x5c5626,_0x1ae218,_0x6dc1ac,_0x59a67f){var _0x7a30cc=this;return new Promise(function(_0x52f14c,_0x50e276){if(_[_0x4752('0x87')](_0x5c5626)||_[_0x4752('0x87')](_0x5c5626[_0x4752('0x110')])||_[_0x4752('0x87')](_0x5c5626[_0x4752('0x111')])||_[_0x4752('0x87')](_0x5c5626['VoiceQueueId'])){_0x50e276(ut[_0x4752('0x4d')](_0x4752('0x112'),_0x6dc1ac,_0x59a67f));return;}var _0x14fee1=uuid['v4']();var _0x16d2ac=_0x7a30cc[_0x4752('0x11')][_0x5c5626[_0x4752('0x72')][_0x4752('0x56')]];var _0x56140d=_0x1ae218?_0x7a30cc[_0x4752('0x15')][_0x1ae218]['id']:undefined;_0x7a30cc[_0x4752('0x14')][_0x14fee1]=new Action(_0x5c5626,_0x16d2ac,_0x14fee1,_0x1ae218,_0x56140d);var _0x5af7ea=_0x7a30cc[_0x4752('0x14')][_0x14fee1];_0x5af7ea[_0x4752('0xb5')]=_0x6dc1ac;_0x5af7ea[_0x4752('0xb6')]=_0x59a67f;_0x5af7ea[_0x4752('0x113')]=_0x1ae218;if(_[_0x4752('0x114')](_0x159b02)){_0x7a30cc['execCall'](_0x5af7ea,_0x16d2ac,_0x5c5626,_0x1ae218)[_0x4752('0x86')](function(_0x2305e5){logger['info']('[Preview][execCall][success]',_0x4752('0x115')+_0x5af7ea[_0x4752('0x73')]+_0x4752('0x116')+_0x5af7ea['idContact'],JSON['stringify'](_0x2305e5));ami[_0x4752('0x24')](_0x4752('0x117'),ut[_0x4752('0xc1')](_0x5af7ea,_0x4752('0x118'),_0x7a30cc['campaignsPreview'][_0x5af7ea[_0x4752('0x73')]]));_0x52f14c(ut['message'](_0x4752('0x119')));})[_0x4752('0x90')](function(_0x2d8f62){ut[_0x4752('0x61')](_0x4752('0x11a'),_0x2d8f62);_0x50e276(ut[_0x4752('0x4d')]('Call\x20failed',_0x6dc1ac,_0x59a67f));});}else{_0x16d2ac['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x5af7ea);rpcDb['createHistory'](_0x5af7ea,_0x4752('0x11b'));delete _0x7a30cc['actions'][_0x14fee1];_0x50e276(ut[_0x4752('0x4d')](_0x4752('0x11c'),_0x6dc1ac,_0x59a67f));}});};Preview[_0x4752('0xd')][_0x4752('0xa0')]=function(_0x24c33b){return!_['isNil'](_0x24c33b)&&!_[_0x4752('0x87')](_0x24c33b['name'])&&!_['isNil'](_0x24c33b[_0x4752('0x57')])&&_0x24c33b[_0x4752('0x57')]&&!_[_0x4752('0x87')](this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])])&&!_[_0x4752('0x87')](this['trunks'][util[_0x4752('0x5a')]('SIP/%s',_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')])&&(this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')]===_0x4752('0x11f')||this[_0x4752('0x13')][util[_0x4752('0x5a')](_0x4752('0x11d'),_0x24c33b[_0x4752('0x56')])][_0x4752('0x11e')]===_0x4752('0x120'));};Preview['prototype']['run']=function(_0x4e871c,_0xed6fd3){return this['execRun'](_0x4e871c,_0xed6fd3)[_0x4752('0x86')](function(_0x118360){return _[_0x4752('0x75')](_0x118360,[_0x4752('0x4d')]);})[_0x4752('0x90')](function(_0x1e1d1a){if(_0x1e1d1a[_0x4752('0x121')]){rpcDb[_0x4752('0x122')](_0x4e871c);}if(_0x1e1d1a['active']){rpcDb['disableContact'](_0x4e871c);}throw _['pick'](_0x1e1d1a,[_0x4752('0x4d')]);});};Preview[_0x4752('0xd')][_0x4752('0x123')]=function(_0x7017,_0xd2a770){var _0x2d3d1f=this;var _0x47f07e,_0x536be6;return rpcDb[_0x4752('0x124')](_0x7017)[_0x4752('0x86')](function(_0x4c4046){if(!_['isNil'](_0x4c4046[0x0])){_0x536be6=_0x4c4046[0x0][_0x4752('0x125')]?![]:!![];_0x47f07e=_0x4c4046[0x0]['recallme']?!![]:![];_0x47f07e=_0xd2a770?!![]:_0x47f07e;}var _0x47e33e=_0x2d3d1f[_0x4752('0x126')](_0x4c4046);if(_0x47e33e[_0x4752('0x127')]){rpcDb[_0x4752('0x128')](_[_0x4752('0x75')](_0x4c4046[0x0],[_0x4752('0x78'),_0x4752('0x111')]))[_0x4752('0x86')](function(_0x5d9d1c){_0x2d3d1f[_0x4752('0x10f')](_0x5d9d1c,_0x4c4046[0x0],_0xd2a770,_0x536be6,_0x47f07e)['then'](function(_0x16cdc6){return _0x16cdc6;})[_0x4752('0x90')](function(_0x275d01){throw _0x275d01;});})['catch'](function(_0x40e3a8){ut['logger'](_0x4752('0x129'),_0x40e3a8);throw ut[_0x4752('0x4d')](_0x4752('0x12a'),_0x536be6,_0x47f07e);});}else{throw ut[_0x4752('0x4d')](_0x47e33e[_0x4752('0x4d')],_0x536be6,_0x47f07e);}})[_0x4752('0x90')](function(_0x2d6361){ut[_0x4752('0x61')]('[Preview][getContactPreview]',_0x2d6361);throw ut[_0x4752('0x4d')](_0x4752('0x12a'),![],!![]);});};Preview[_0x4752('0xd')][_0x4752('0x126')]=function(_0x33cc8f){if(_[_0x4752('0x87')](_0x33cc8f)||_['isEmpty'](_0x33cc8f)||!_[_0x4752('0x87')](_0x33cc8f[0x0][_0x4752('0x8c')])&&_[_0x4752('0x87')](_0x33cc8f[0x0][_0x4752('0x8c')][_0x4752('0x56')])){ut[_0x4752('0x61')](_0x4752('0x12b'),_0x33cc8f);return{'isValid':![],'message':_0x4752('0x12c')};}var _0xe89f33=this[_0x4752('0x11')][_0x33cc8f[0x0][_0x4752('0x72')][_0x4752('0x56')]];_0xe89f33[_0x4752('0x4d')]=_0x4752('0xa1');if(_['isNil'](_0xe89f33)){ut[_0x4752('0x61')]('[Preview][validateContact][Empty\x20Campaign]',_0xe89f33);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this['isTrunkReachable'](_0xe89f33[_0x4752('0x55')])){ut[_0x4752('0x61')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4752('0x12d')+_0xe89f33[_0x4752('0x56')]+_0x4752('0x12e'));if(!this[_0x4752('0xa0')](_0xe89f33[_0x4752('0x12f')])){ut[_0x4752('0x61')](_0x4752('0x130'),_0xe89f33[_0x4752('0x56')]+_0x4752('0x131'));return{'isValid':![],'message':_0x4752('0x132')};}}if(!ut[_0x4752('0x9e')](_0xe89f33[_0x4752('0x6c')])){ut[_0x4752('0x61')](_0x4752('0x133'),_0xe89f33['name']+_0x4752('0x134'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0xe89f33[_0x4752('0x56')]+_0x4752('0x134')};}return{'isValid':!![],'message':_0x4752('0x135')};};Preview[_0x4752('0xd')]['execCall']=function(_0x5a3c78,_0x4bc6df,_0x47b819,_0x777cd){var _0x1132eb=this;return new Promise(function(_0x526e88,_0x2d402b){var _0x1115dd=_0x5a3c78['uniqueid'];var _0xb2d77=_0x1132eb[_0x4752('0xa0')](_0x4bc6df[_0x4752('0x55')])?util[_0x4752('0x5a')]('SIP/%s/%s%s',_0x4bc6df[_0x4752('0x55')][_0x4752('0x56')],_['isNil'](_0x4bc6df['dialPrefix'])?'':_0x4bc6df[_0x4752('0x35')][_0x4752('0x136')]()||'',_0x4bc6df['dialCutDigit']>0x0?_0x47b819['phone'][_0x4752('0x137')](_0x4bc6df[_0x4752('0x138')]):_0x47b819['phone']):util[_0x4752('0x5a')](_0x4752('0x139'),_[_0x4752('0x87')](_0x4bc6df[_0x4752('0x12f')])?_0x4bc6df['Trunk'][_0x4752('0x56')]:_0x4bc6df[_0x4752('0x12f')][_0x4752('0x56')],_['isNil'](_0x4bc6df[_0x4752('0x35')])?'':_0x4bc6df['dialPrefix']['trim']()||'',_0x4bc6df['dialCutDigit']>0x0?_0x47b819[_0x4752('0x111')]['substring'](_0x4bc6df[_0x4752('0x138')]):_0x47b819[_0x4752('0x111')]);var _0x216531=_0x1132eb[_0x4752('0xa0')](_0x4bc6df[_0x4752('0x55')])?ut[_0x4752('0x13a')](_0x4bc6df[_0x4752('0x55')][_0x4752('0x13b')],_0x4bc6df[_0x4752('0x13c')],_0x4bc6df[_0x4752('0x13d')]>0x0?ut[_0x4752('0x13e')](_0x4bc6df[_0x4752('0x33')],_0x4bc6df['dialRandomLastDigitCallerIdNumber']):_0x4bc6df[_0x4752('0x33')]):ut[_0x4752('0x13a')](_['isNil'](_0x4bc6df[_0x4752('0x12f')])?_0x4bc6df['Trunk'][_0x4752('0x13b')]:_0x4bc6df[_0x4752('0x12f')][_0x4752('0x13b')],_0x4bc6df[_0x4752('0x13c')],_0x4bc6df[_0x4752('0x13d')]>0x0?ut[_0x4752('0x13e')](_0x4bc6df[_0x4752('0x33')],_0x4bc6df[_0x4752('0x13d')]):_0x4bc6df[_0x4752('0x33')]);if(_0x216531){_0x5a3c78[_0x4752('0x13f')]=ut[_0x4752('0x140')](_0x216531);_0x5a3c78[_0x4752('0x141')]=ut[_0x4752('0x142')](_0x216531);}var _0x44a12a=ut[_0x4752('0x143')](_0x4bc6df,_0x47b819,_0xb2d77,_0x216531,_0x1115dd,_0x5a3c78);_[_0x4752('0x144')](_0x5a3c78,ut['toLowerVariables'](_0x44a12a));_0x5a3c78['starttime']=moment()[_0x4752('0x5a')](_0x4752('0xbc'));_0x4bc6df[_0x4752('0x145')]=_0x44a12a;ami[_0x4752('0x79')](ut['variablesAction'](_0x5a3c78,_0x4bc6df,_0x44a12a,_0x5a3c78[_0x4752('0xb6')],_0x777cd))['then'](function(_0x2370fa){_0x4bc6df['originated']+=0x1;logger[_0x4752('0x5c')](_0x4752('0x146'),_0x1115dd,_0x4752('0xc0'),_0x4bc6df[_0x4752('0x56')],_0x4752('0x147'),_0x4bc6df[_0x4752('0x4e')]);_0x526e88(_0x2370fa);})[_0x4752('0x90')](function(_0x4b8ae7){ut[_0x4752('0x104')](_0x5a3c78,0xe,_0x4752('0x148'));rpcDb[_0x4752('0x105')](_0x5a3c78,_0x4752('0x149'));_0x2d402b(_0x4b8ae7);});});};Preview[_0x4752('0xd')]['syncNewExten']=function(_0xb83141){if(this['actions'][_0xb83141['linkedid']]){this[_0x4752('0x14')][_0xb83141[_0x4752('0xb7')]][_0x4752('0x7a')]=_0xb83141[_0x4752('0x7a')];}};Preview[_0x4752('0xd')][_0x4752('0x14a')]=function(_0x347f2e){var _0x2d112b=this;var _0x16d32a=this[_0x4752('0x14')][_0x347f2e[_0x4752('0x14b')]];if(_0x16d32a){if(_0x16d32a[_0x4752('0x113')]&&this[_0x4752('0x15')][_0x16d32a[_0x4752('0x113')]]){ut[_0x4752('0x14c')](_0x16d32a,this[_0x4752('0x15')][_0x16d32a['lookAgent']][_0x4752('0x56')],this['agents'][_0x16d32a[_0x4752('0x113')]]['id']);}var _0xf12462=_[_0x4752('0x14d')](_0x16d32a);_0xf12462[_0x4752('0xbd')]=moment()[_0x4752('0x5a')](_0x4752('0xbc'));var _0x2bc636=_0x2d112b[_0x4752('0x11')][_0x16d32a[_0x4752('0x73')]];if(ut[_0x4752('0x14e')](_0x347f2e['response'])){if(_0x16d32a[_0x4752('0xb5')]){rpcDb[_0x4752('0x122')](_0x16d32a[_0x4752('0xb8')]);}if(_0x16d32a['activeContact']){rpcDb[_0x4752('0x91')](_0x16d32a[_0x4752('0xb8')]);}ami[_0x4752('0x24')]('custom:agentringnoanswer',ut[_0x4752('0xc1')](_0x16d32a,_0x4752('0x14f'),this[_0x4752('0x11')][_0x16d32a['queue']]));this[_0x4752('0x100')](_0xf12462,_0x2bc636,_0x347f2e);}else{_0x16d32a[_0x4752('0x92')]=moment()['format'](_0x4752('0xbc'));ut['logAgent'](_0xf12462,0x4,'Answer');rpcDb[_0x4752('0x105')](_0xf12462,_0x4752('0x150'));}}};Preview[_0x4752('0xd')][_0x4752('0x19')]=function(_0xb398c4){var _0x44de70=this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]];var _0x816c8;if(_0x44de70){_0x816c8=this['campaignsPreview'][_0x44de70['queue']];logger[_0x4752('0x5c')]('[syncHangup][talking]',_0xb398c4[_0x4752('0xb7')],_0x4752('0xc0'),_0x816c8['name'],_0x4752('0x74'),_0x816c8['pTalking']);}if(this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]]&&_0xb398c4[_0x4752('0xb7')]!==_0xb398c4[_0x4752('0xbf')]){if(_0xb398c4[_0x4752('0x151')]==='16'&&this[_0x4752('0x14')][_0xb398c4['linkedid']][_0x4752('0x7c')]){this[_0x4752('0xa2')](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')]);}else if(this['actions'][_0xb398c4['linkedid']][_0x4752('0x7c')]){logger[_0x4752('0x5c')]('[syncHangup][talking][cause]',_0xb398c4[_0x4752('0xb7')],_0xb398c4['cause'],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this['callProgressDetectingCustomer'](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')]);}}else if(_0x44de70&&_[_0x4752('0x87')](_0x44de70[_0x4752('0x152')])&&_0x816c8[_0x4752('0x153')]&&_0xb398c4[_0x4752('0xb7')]===_0xb398c4[_0x4752('0xbf')]&&_[_0x4752('0x87')](_0xb398c4[_0x4752('0x103')])&&_0xb398c4['cause']==='16'&&_0xb398c4[_0x4752('0x154')]==='6'&&_['isUndefined'](_0x44de70['transfer'])){if(_0x44de70[_0x4752('0xb5')]){rpcDb[_0x4752('0x122')](_0x44de70[_0x4752('0xb8')]);}if(_0x44de70[_0x4752('0xb6')]){rpcDb[_0x4752('0x91')](_0x44de70[_0x4752('0xb8')]);}_0xb398c4[_0x4752('0x103')]='22';this[_0x4752('0x100')](_0x44de70,_0x816c8,_0xb398c4);}else if(_0x44de70&&_0x44de70[_0x4752('0x155')]){if(_0xb398c4[_0x4752('0x151')]==='16'&&this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]]['dialAnswer']){logger['info'](_0x4752('0x156'),_0xb398c4[_0x4752('0xb7')],_0xb398c4[_0x4752('0x151')],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this['callProgressDetectingCustomer'](_0xb398c4,_0xb398c4[_0x4752('0xb7')],_0xb398c4['cause']);}else if(this[_0x4752('0x14')][_0xb398c4[_0x4752('0xb7')]][_0x4752('0x7c')]){logger['info'](_0x4752('0x157'),_0xb398c4['linkedid'],_0xb398c4[_0x4752('0x151')],_0x4752('0xc0'),_0x816c8[_0x4752('0x56')],_0x4752('0x74'),_0x816c8[_0x4752('0x2a')]);this[_0x4752('0xa2')](_0xb398c4,_0xb398c4['linkedid'],_0xb398c4['cause']);}}};Preview[_0x4752('0xd')][_0x4752('0x1c')]=function(_0x41a3f3){if(this[_0x4752('0x14')][_0x41a3f3[_0x4752('0xff')]]&&_0x41a3f3[_0x4752('0xff')]!==_0x41a3f3[_0x4752('0x158')]){this[_0x4752('0xa2')](_0x41a3f3,_0x41a3f3['destlinkedid'],_0x41a3f3['dialstatus']);}};Preview[_0x4752('0xd')][_0x4752('0x1b')]=function(_0x27059a){if(this[_0x4752('0x14')][_0x27059a['linkedid']]&&_0x27059a[_0x4752('0xb7')]!==_0x27059a['uniqueid']&&!this[_0x4752('0x14')][_0x27059a[_0x4752('0xb7')]][_0x4752('0x7c')]){if(_0x27059a[_0x4752('0x151')]==='1'){this[_0x4752('0xa2')](_0x27059a,_0x27059a['linkedid'],_0x27059a['cause']);}}};Preview[_0x4752('0xd')][_0x4752('0x159')]=function(_0x7f1f76,_0x56affb,_0x7569b2){if(this[_0x4752('0x14')][_0x7f1f76]){if(_[_0x4752('0x87')](this[_0x4752('0x14')][_0x7f1f76][_0x4752('0x145')])){this[_0x4752('0x14')][_0x7f1f76]['variables']={};}this[_0x4752('0x14')][_0x7f1f76][_0x4752('0x145')][_0x56affb]=_0x7569b2;}};Preview[_0x4752('0xd')][_0x4752('0x1f')]=function(_0x4fc075){try{if(!_[_0x4752('0x87')](_0x4fc075)){if(ut[_0x4752('0x15a')](_[_0x4752('0x15b')](_0x4fc075[_0x4752('0x15c')])[0x0])){this['addVariable'](_0x4fc075[_0x4752('0xbf')],_[_0x4752('0x15b')](_0x4fc075[_0x4752('0x15c')])[0x0],_0x4fc075[_0x4752('0x15d')]);}}}catch(_0x365ae1){logger[_0x4752('0x15e')](_0x4752('0x15f'),util[_0x4752('0x160')](_0x365ae1,{'showHidden':![],'depth':null}));}};Preview[_0x4752('0xd')][_0x4752('0x161')]=function(_0x313693){if(_0x313693){if(this[_0x4752('0x14')][_0x313693[_0x4752('0x162')]]){this[_0x4752('0x14')][_0x313693[_0x4752('0x162')]][_0x4752('0x155')]=!![];}}};Preview[_0x4752('0xd')][_0x4752('0x22')]=function(_0x19f26d){if(_0x19f26d){if(this[_0x4752('0x14')][_0x19f26d[_0x4752('0x163')]]){this[_0x4752('0x14')][_0x19f26d[_0x4752('0x163')]]['transfer']=!![];}}};module[_0x4752('0x164')]=Preview;
\ No newline at end of file
+var _0x1b9b=['dialBusyRetryFrequency','swapAdditionalPhones','NOANSWER','NoAnswer','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','dialAgentRejectRetryFrequency','agentreject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','isTrunkReachable','active','SIP/%s','status','reachable','unmonitored','execRun','recallme','validateContact','isValid','checkIsBlackList','checkInBlack','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','trim','dialCutDigit','substring','SIP/%s/%s%s','getCallerId','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','addVariables','merge','variables','variablesAction','[originated][increment]','OriginateError','channel','actionid','lookAgent','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','pTalking:\x20','cause','[syncHangup][talking][cause]','channelstate','transfer','addVariable','filterKey','keys','value','error','inspect','transfertargetlinkedid','transfererlinkedid','util','uuid','moment','md5','ioredis','../../../config/logger','preview','./rpcDb','../rpc/cmHopperAdditionalPhone','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','agents','clockClearZombieChannels','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','type','outbound','strategy','answered','available','pTalking','sumBillable','sumHoldTime','total','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','name','callerid','Interval','stringify','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','DEACTIVATED','\x20is\x20deactivated','prototype','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','actions','[clearZombieChannels][talking]','queue','originated:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','scheduledAt','unlockAgent','activeContact','linkedid','idContact','incrementPreviewCounters','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','acw','custom:agentcomplete','complete','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','countbusyretry','custom:agentbusy','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','rescheduleContact'];(function(_0x5e74dd,_0x1a1ad0){var _0x60e97c=function(_0x4aad24){while(--_0x4aad24){_0x5e74dd['push'](_0x5e74dd['shift']());}};_0x60e97c(++_0x1a1ad0);}(_0x1b9b,0x89));var _0xb1b9=function(_0x215bda,_0x1fb77d){_0x215bda=_0x215bda-0x0;var _0x5a62e7=_0x1b9b[_0x215bda];return _0x5a62e7;};'use strict';var util=require(_0xb1b9('0x0'));var _=require('lodash');var uuid=require(_0xb1b9('0x1'));var moment=require(_0xb1b9('0x2'));var md5=require(_0xb1b9('0x3'));var Redis=require(_0xb1b9('0x4'));var config=require('../../../config/environment');var logger=require(_0xb1b9('0x5'))(_0xb1b9('0x6'));var loggerAction=require('../../../config/logger')('actionPreview');var ami=require('../ami');var rpcDb=require(_0xb1b9('0x7'));var cmHopperAdditionalPhone=require(_0xb1b9('0x8'));var Action=require('./action');var ut=require(_0xb1b9('0x9'));config[_0xb1b9('0xa')]=_[_0xb1b9('0xb')](config['redis'],{'host':_0xb1b9('0xc'),'port':0x18eb});var io=require(_0xb1b9('0xd'))(new Redis(config[_0xb1b9('0xa')]));var Sequence=function(){};Sequence['prototype'][_0xb1b9('0xe')]=function(_0x535387){this[_0xb1b9('0xf')]=this['tail']?this[_0xb1b9('0xf')][_0xb1b9('0x10')](_0x535387):_0x535387();};function Preview(_0x1595a6){this[_0xb1b9('0x11')]=new Sequence();this[_0xb1b9('0x12')]=_0x1595a6[_0xb1b9('0x13')];this[_0xb1b9('0x14')]=_0x1595a6[_0xb1b9('0x14')];this['actions']={};this[_0xb1b9('0x15')]=_0x1595a6[_0xb1b9('0x15')];this[_0xb1b9('0x16')]=0x0;ami['on']('originateresponse',this[_0xb1b9('0x17')][_0xb1b9('0x18')](this));ami['on'](_0xb1b9('0x19'),this[_0xb1b9('0x1a')][_0xb1b9('0x18')](this));ami['on'](_0xb1b9('0x1b'),this['syncHangupRequest'][_0xb1b9('0x18')](this));ami['on']('dialend',this[_0xb1b9('0x1c')][_0xb1b9('0x18')](this));ami['on'](_0xb1b9('0x1d'),this[_0xb1b9('0x1e')]['bind'](this));ami['on'](_0xb1b9('0x1f'),this[_0xb1b9('0x20')][_0xb1b9('0x18')](this));ami['on']('attendedtransfer',this[_0xb1b9('0x21')][_0xb1b9('0x18')](this));ami['on'](_0xb1b9('0x22'),this[_0xb1b9('0x23')][_0xb1b9('0x18')](this));this['loopCampaigns'](this['campaignsPreview']);}function emit(_0x550998,_0x3a2831,_0x27c7f0){io['to'](_0x550998)[_0xb1b9('0x24')](_0x3a2831,_0x27c7f0);}function emitCampaignPreview(_0x31b067){if(_0x31b067[_0xb1b9('0x25')]===_0xb1b9('0x26')){var _0x51d4e2={'id':_0x31b067['id'],'name':_0x31b067['name'],'strategy':_0x31b067[_0xb1b9('0x27')],'answered':_0x31b067[_0xb1b9('0x28')],'available':_0x31b067[_0xb1b9('0x29')],'loggedIn':_0x31b067['loggedIn'],'pTalking':_0x31b067[_0xb1b9('0x2a')],'sumBillable':_0x31b067[_0xb1b9('0x2b')],'sumDuration':_0x31b067['sumDuration'],'sumHoldTime':_0x31b067[_0xb1b9('0x2c')]||0x0,'talking':_0x31b067['talking'],'total':_0x31b067[_0xb1b9('0x2d')],'type':_0x31b067['type'],'unmanaged':_0x31b067[_0xb1b9('0x2e')],'abandoned':_0x31b067['abandoned'],'waiting':_0x31b067[_0xb1b9('0x2f')],'loggedInDb':_0x31b067[_0xb1b9('0x30')],'dialActive':_0x31b067[_0xb1b9('0x31')],'dialMethod':_0x31b067[_0xb1b9('0x32')],'dialOriginateCallerIdName':_0x31b067[_0xb1b9('0x33')],'dialOriginateCallerIdNumber':_0x31b067['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x31b067[_0xb1b9('0x34')],'dialPrefix':_0x31b067[_0xb1b9('0x35')],'outboundAnswerAgiCallsDay':_0x31b067[_0xb1b9('0x36')],'outboundAnswerCallsDay':_0x31b067[_0xb1b9('0x37')],'outboundBlacklistCallsDay':_0x31b067[_0xb1b9('0x38')],'outboundBusyCallsDay':_0x31b067[_0xb1b9('0x39')],'outboundCongestionCallsDay':_0x31b067[_0xb1b9('0x3a')],'outboundDropCallsDayACS':_0x31b067['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x31b067['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x31b067['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x31b067[_0xb1b9('0x3b')],'outboundNoSuchCallsDay':_0x31b067[_0xb1b9('0x3c')],'outboundOriginateFailureCallsDay':_0x31b067[_0xb1b9('0x3d')],'outboundReCallsDay':_0x31b067[_0xb1b9('0x3e')],'outboundRejectCallsDay':_0x31b067[_0xb1b9('0x3f')],'outboundUnknownCallsDay':_0x31b067[_0xb1b9('0x40')],'outboundAbandonedCallsDay':_0x31b067[_0xb1b9('0x41')],'predictiveIntervalAnsweredCalls':_0x31b067[_0xb1b9('0x42')],'predictiveIntervalAvgHoldtime':_0x31b067[_0xb1b9('0x43')],'predictiveIntervalAvgTalktime':_0x31b067[_0xb1b9('0x44')],'predictiveIntervalDroppedCallsCallersExit':_0x31b067[_0xb1b9('0x45')],'predictiveIntervalDroppedCallsTimeout':_0x31b067[_0xb1b9('0x46')],'predictiveIntervalErlangCalls':_0x31b067['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x31b067[_0xb1b9('0x47')],'predictiveIntervalHitRate':_0x31b067[_0xb1b9('0x48')],'predictiveIntervalMultiplicativeFactor':_0x31b067[_0xb1b9('0x49')],'predictiveIntervalPauses':_0x31b067[_0xb1b9('0x4a')],'predictiveIntervalAvailable':_0x31b067['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x31b067[_0xb1b9('0x4b')],'message':_0x31b067[_0xb1b9('0x4c')],'originated':_0x31b067[_0xb1b9('0x4d')],'erlangCalls':_0x31b067[_0xb1b9('0x4e')],'erlangCallToSecond':_0x31b067[_0xb1b9('0x4f')],'erlangAbandonmentRate':_0x31b067[_0xb1b9('0x50')],'erlangBusyFactor':_0x31b067[_0xb1b9('0x51')],'startPredictive':_0x31b067['startPredictive'],'startProgressive':_0x31b067[_0xb1b9('0x52')]};if(_0x31b067[_0xb1b9('0x53')]){_0x51d4e2[_0xb1b9('0x53')]={'id':_0x31b067['Trunk']['id'],'name':_0x31b067[_0xb1b9('0x53')][_0xb1b9('0x54')],'active':_0x31b067[_0xb1b9('0x53')]['active'],'callerid':_0x31b067['Trunk'][_0xb1b9('0x55')]};}if(_0x31b067[_0xb1b9('0x56')]){_0x51d4e2[_0xb1b9('0x56')]={'id':_0x31b067[_0xb1b9('0x56')]['id'],'name':_0x31b067['Interval'][_0xb1b9('0x54')]};}var _0x3f5b2d=md5(JSON[_0xb1b9('0x57')](_0x51d4e2));if(_0x31b067[_0xb1b9('0x3')]!==_0x3f5b2d){_0x31b067[_0xb1b9('0x3')]=_0x3f5b2d;emit(util[_0xb1b9('0x58')]('voice:queue:%s',_0x51d4e2['name']),_0xb1b9('0x59'),_0x51d4e2);}}}function emitVoiceQueueChannelRemove(_0x3ef4d6){logger[_0xb1b9('0x5a')](_0xb1b9('0x5b'),JSON[_0xb1b9('0x57')](_0x3ef4d6));emit(util[_0xb1b9('0x58')](_0xb1b9('0x5c'),_0x3ef4d6[_0xb1b9('0x54')]),_0xb1b9('0x5d'),_0x3ef4d6);io[_0xb1b9('0x24')](_0xb1b9('0x5e'),_0x3ef4d6);}function notSendMessagesQueue(_0x1f2518){if(_0x1f2518[_0xb1b9('0x5f')]){if(_0x1f2518[_0xb1b9('0x4d')]===0x0&&_0x1f2518['pTalking']===0x0){_0x1f2518['sendMessageOneNotActive']=![];_0x1f2518[_0xb1b9('0x29')]=0x0;_0x1f2518[_0xb1b9('0x60')]=0x0;_0x1f2518[_0xb1b9('0x4c')]=_0xb1b9('0x61');ut[_0xb1b9('0x62')](_0xb1b9('0x63'),_0x1f2518[_0xb1b9('0x54')]+'\x20is\x20not\x20active');}else{_0x1f2518[_0xb1b9('0x4c')]=_0xb1b9('0x64');ut[_0xb1b9('0x62')](_0xb1b9('0x63'),_0x1f2518['name']+_0xb1b9('0x65'));}emitCampaignPreview(_0x1f2518);}}Preview[_0xb1b9('0x66')]['loopCampaigns']=function(){var _0x36f542=this;setInterval(function(){_0x36f542[_0xb1b9('0x67')]();},0x7cf);};Preview['prototype'][_0xb1b9('0x67')]=function(){var _0x3d1f39=this[_0xb1b9('0x12')];this['clockClearZombieChannels']+=0x1;for(var _0x4e91fe in _0x3d1f39){if(_0x3d1f39[_0xb1b9('0x68')](_0x4e91fe)&&(_0x3d1f39[_0x4e91fe][_0xb1b9('0x32')]===_0xb1b9('0x6')||_0x3d1f39[_0x4e91fe]['dialMethod']===_0xb1b9('0x69'))&&_0x3d1f39[_0x4e91fe][_0xb1b9('0x25')]===_0xb1b9('0x26')){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this[_0xb1b9('0x6a')]();}}if(_0x3d1f39[_0xb1b9('0x68')](_0x4e91fe)&&_0x3d1f39[_0x4e91fe][_0xb1b9('0x32')]==='preview'&&_0x3d1f39[_0x4e91fe]['type']==='outbound'){if(_0x3d1f39[_0x4e91fe][_0xb1b9('0x31')]){this[_0xb1b9('0x6b')](_0x3d1f39[_0x4e91fe]);if(_0x3d1f39[_0x4e91fe][_0xb1b9('0x6c')])this[_0xb1b9('0x6d')](_0x3d1f39[_0x4e91fe]);}else{notSendMessagesQueue(_0x3d1f39[_0x4e91fe]);}}}};Preview[_0xb1b9('0x66')][_0xb1b9('0x6e')]=function(_0xc5c52e){var _0x253fbb=this;this[_0xb1b9('0x11')][_0xb1b9('0xe')](function(){if(!_[_0xb1b9('0x6f')](_0x253fbb[_0xb1b9('0x70')][_0xc5c52e])){loggerAction[_0xb1b9('0x5a')](_0xb1b9('0x71'),_0xc5c52e,'Queue',_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x72')],_0xb1b9('0x73'),JSON[_0xb1b9('0x57')](_0x253fbb[_0xb1b9('0x12')][_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x72')]][_0xb1b9('0x4d')]),'pTalking:\x20',JSON[_0xb1b9('0x57')](_0x253fbb[_0xb1b9('0x12')][_0x253fbb['actions'][_0xc5c52e][_0xb1b9('0x72')]][_0xb1b9('0x2a')]),JSON[_0xb1b9('0x57')](_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x74')]),JSON[_0xb1b9('0x57')](_[_0xb1b9('0x75')](_0x253fbb['actions'][_0xc5c52e],[_0xb1b9('0x76'),'UserId',_0xb1b9('0x77'),_0xb1b9('0x78')])));return ami[_0xb1b9('0x79')]({'action':'status','channel':_0x253fbb[_0xb1b9('0x70')][_0xc5c52e]['channel']})[_0xb1b9('0x7a')](function(_0x89e019){if(_0x89e019[_0xb1b9('0x4c')]===_0xb1b9('0x7b')){setTimeout(function(){if(_0x253fbb['actions'][_0xc5c52e]){ut[_0xb1b9('0x7c')](_0x253fbb[_0xb1b9('0x12')][_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x72')]],_0xb1b9('0x7d'));if(_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x74')]===!![]){ut[_0xb1b9('0x7e')](_0x253fbb[_0xb1b9('0x12')][_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x72')]],_0xb1b9('0x7d'));ut[_0xb1b9('0x7f')](_0xb1b9('0x80')+_0xc5c52e,_0x253fbb[_0xb1b9('0x70')][_0xc5c52e][_0xb1b9('0x72')]);}ut[_0xb1b9('0x7f')](_0xb1b9('0x81')+_0xc5c52e,_0x253fbb['actions'][_0xc5c52e]['queue']);delete _0x253fbb[_0xb1b9('0x70')][_0xc5c52e];}},0x2328);}});}});};Preview['prototype']['clearZombieChannels']=function(){var _0x5834d6=this;loggerAction[_0xb1b9('0x5a')](_0xb1b9('0x82'),_[_0xb1b9('0x83')](this['actions']));for(var _0x1e2b02 in this[_0xb1b9('0x70')]){if(_0x5834d6[_0xb1b9('0x70')][_0xb1b9('0x68')](_0x1e2b02)){_0x5834d6['clearZombieChannel'](_0x1e2b02);}}};Preview[_0xb1b9('0x66')]['recallMe']=function(_0x264429){var _0x1caba8=this;rpcDb[_0xb1b9('0x84')](_0x264429['id'],ut[_0xb1b9('0x85')](this['agents']))[_0xb1b9('0x86')](function(_0xbc5ec7){if(!_['isNil'](_0xbc5ec7)){for(var _0x6057b3=0x0;_0x6057b3<_0xbc5ec7[_0xb1b9('0x87')];_0x6057b3+=0x1){if(ut[_0xb1b9('0x88')](_0xbc5ec7[_0x6057b3][_0xb1b9('0x89')])<_0x264429['dialRecallMeTimeout']*0x3c){if(_0xbc5ec7[_0x6057b3]['Agent']&&!_0xbc5ec7[_0x6057b3][_0xb1b9('0x8a')][_0xb1b9('0x8b')]){_0x1caba8[_0xb1b9('0x8c')](_0xbc5ec7[_0x6057b3]['id'])[_0xb1b9('0x86')](ut[_0xb1b9('0x8d')](_0xb1b9('0x8e')))[_0xb1b9('0x7a')](ut[_0xb1b9('0x8d')](_0xb1b9('0x8e')));}else{rpcDb[_0xb1b9('0x8f')](_0xbc5ec7[_0x6057b3]['id']);}}else{var _0x54f5f4=new Action(_0xbc5ec7[_0x6057b3],_0x264429);_0x54f5f4[_0xb1b9('0x90')]=moment()['format'](_0xb1b9('0x91'));_0x264429[_0xb1b9('0x3e')]+=0x1;ut[_0xb1b9('0x92')](_0x54f5f4,0x17,_0xb1b9('0x93'));if(_0x264429[_0xb1b9('0x94')]){rpcDb['rescheduleContactInQueue'](ut[_0xb1b9('0x95')](_0xbc5ec7[_0x6057b3]));rpcDb[_0xb1b9('0x96')](_0x54f5f4,_0xb1b9('0x97'));}else{ut['logCustomer'](_0x54f5f4,0x16,_0xb1b9('0x98'));rpcDb[_0xb1b9('0x96')](_0x54f5f4,_0xb1b9('0x99'));rpcDb[_0xb1b9('0x9a')](_0x54f5f4,_0xb1b9('0x99'));}}}}})['catch'](ut[_0xb1b9('0x8d')]('[getContactRecallMe]'));};Preview[_0xb1b9('0x66')][_0xb1b9('0x6b')]=function(_0x119f88){_0x119f88[_0xb1b9('0x5f')]=!![];if(ut[_0xb1b9('0x9b')](_0x119f88[_0xb1b9('0x9c')])){_0x119f88[_0xb1b9('0x4c')]=_0xb1b9('0x9d');}else if(!ut['isActive'](_0x119f88['dialActive'])){_0x119f88[_0xb1b9('0x4c')]=_0xb1b9('0x61');}else if(!this['isTrunkReachable'](_0x119f88[_0xb1b9('0x53')])){if(!this['isTrunkReachable'](_0x119f88[_0xb1b9('0x9e')])){_0x119f88[_0xb1b9('0x4c')]=_0xb1b9('0x9f');}else{_0x119f88['message']=_0xb1b9('0xa0');}}else{_0x119f88['message']=_0xb1b9('0xa0');}emitCampaignPreview(_0x119f88);};Preview[_0xb1b9('0x66')][_0xb1b9('0xa1')]=function(_0x4eda65,_0x7d83a8,_0x3b0d67){var _0x203f36=this;var _0xf28ba3=this[_0xb1b9('0x70')][_0x7d83a8];var _0x25eefb=this[_0xb1b9('0x12')][_0xf28ba3[_0xb1b9('0x72')]];var _0x1e0651;var _0x11ddb4=![];var _0xe0da99=0x2;var _0x409a39=0x3;if(_0x25eefb){switch(_0x3b0d67){case'1':_0x25eefb[_0xb1b9('0x3c')]+=0x1;_0xf28ba3[_0xb1b9('0xa2')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut['logCustomer'](_0xf28ba3,0x0,_0xb1b9('0xa5'));ami['emit']('custom:agentnosuchnumber',ut[_0xb1b9('0xa6')](_0xf28ba3,_0xb1b9('0xa7')));rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xa8'));_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'0',_0x25eefb)['then'](function(_0x27501f){_0x11ddb4=_0x27501f[_0xb1b9('0xaa')]==0x1;_0xe0da99=_0x25eefb[_0xb1b9('0xab')];_0x409a39=_0x25eefb[_0xb1b9('0xac')];if(!_0x11ddb4){if(ut['totalGlobal'](_0xf28ba3)>=_0x25eefb['dialGlobalMaxRetry']){_0x1e0651=ut['cloneAction'](_0xf28ba3,0xf,_0xb1b9('0xad'));rpcDb['createCustomerFinal'](_0x1e0651,_0xb1b9('0xae'));}else{if(_0xf28ba3[_0xb1b9('0xa2')]>=_0x25eefb['dialNoSuchNumberMaxRetry']){rpcDb[_0xb1b9('0x9a')](_0xf28ba3,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb['rescheduleContact'](ut[_0xb1b9('0xaf')](_0xf28ba3,_0xb1b9('0xa2'),_0x25eefb[_0xb1b9('0xab')]),_0xf28ba3[_0xb1b9('0xb0')],_0xf28ba3[_0xb1b9('0xb1')]);}}delete this[_0xb1b9('0x70')][_0x4eda65[_0xb1b9('0xb2')]];}else{_0xf28ba3[_0xb1b9('0xa2')]++;logger[_0xb1b9('0x5a')]('actioncountonusuch',_0xf28ba3[_0xb1b9('0xa2')]);logger[_0xb1b9('0x5a')]('id',_0xf28ba3[_0xb1b9('0xb3')]);_0x203f36[_0xb1b9('0xb4')]({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countnosuchnumberretry':_0xf28ba3[_0xb1b9('0xa2')]}})[_0xb1b9('0x86')](function(){_0x203f36['swapAdditionalPhones'](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case _0xb1b9('0xb5'):var _0x30786b=moment()[_0xb1b9('0x58')](_0xb1b9('0x91'));_0xf28ba3[_0xb1b9('0xb6')]=_0x30786b;_0xf28ba3['answertime']=_0x30786b;_0xf28ba3['dialAnswer']=!![];_0x25eefb[_0xb1b9('0x2a')]+=0x1;logger['info'](_0xb1b9('0xb7'),_0xf28ba3[_0xb1b9('0xb8')],_0xb1b9('0xb9'),_0x25eefb[_0xb1b9('0x54')],'pTalking:\x20',_0x25eefb[_0xb1b9('0x2a')]);ami['emit']('custom:agentconnect',ut[_0xb1b9('0xa6')](_0xf28ba3,'connect',this[_0xb1b9('0x12')][_0xf28ba3[_0xb1b9('0x72')]]));if(_0x25eefb[_0xb1b9('0xba')]){ami[_0xb1b9('0x24')]('custom:agentConnectPreview',ut['buildAcw'](_0xf28ba3));}break;case'16':ami[_0xb1b9('0x24')](_0xb1b9('0xbb'),ut[_0xb1b9('0xa6')](_0xf28ba3,_0xb1b9('0xbc'),this['campaignsPreview'][_0xf28ba3[_0xb1b9('0x72')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0xf28ba3,'complete'));_0x25eefb[_0xb1b9('0x37')]+=0x1;_0x25eefb[_0xb1b9('0x2d')]+=0x1;_0x25eefb['answered']+=0x1;ut[_0xb1b9('0x7e')](_0x25eefb,_0xb1b9('0xbd'));_0xf28ba3['countglobal']=ut[_0xb1b9('0xa4')](_0xf28ba3);ut['logCustomer'](_0xf28ba3,0x4,'Answer');rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xbe'));rpcDb[_0xb1b9('0x9a')](_0xf28ba3,_0xb1b9('0xbf'));rpcDb[_0xb1b9('0xc0')](_0xf28ba3);_0x25eefb[_0xb1b9('0xc1')]+=_0xf28ba3['talktime'];_0x25eefb[_0xb1b9('0x2b')]+=_0xf28ba3[_0xb1b9('0xc2')];logger['info'](_0xb1b9('0xc3'),_0xf28ba3[_0xb1b9('0xb8')],_0xb1b9('0xb9'),_0x25eefb[_0xb1b9('0x54')],'pTalking:\x20',_0x25eefb[_0xb1b9('0x2a')]);delete this['actions'][_0x4eda65[_0xb1b9('0xb2')]];break;case'BUSY':_0x25eefb[_0xb1b9('0x39')]+=0x1;_0xf28ba3[_0xb1b9('0xc4')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0x5,'Busy');_0xe0da99=_0x25eefb['dialBusyRetryFrequency'];_0x409a39=_0x25eefb['callAdditionalPhoneAfterMin'];ami[_0xb1b9('0x24')](_0xb1b9('0xc5'),ut[_0xb1b9('0xa6')](_0xf28ba3,'busy'));rpcDb['createCustomerHistory'](_0xf28ba3,'[callProgressDetectingCustomer][logBusy]');_0x203f36['verifyAdditionalPhones'](_0xf28ba3,'5',_0x25eefb)[_0xb1b9('0x86')](function(_0xf6d74f){_0x11ddb4=_0xf6d74f[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut['totalGlobal'](_0xf28ba3)>=_0x25eefb[_0xb1b9('0xc6')]){_0x1e0651=ut[_0xb1b9('0xc7')](_0xf28ba3,0xf,'Global');rpcDb[_0xb1b9('0x9a')](_0x1e0651,_0xb1b9('0xc8'));}else{if(_0xf28ba3[_0xb1b9('0xc4')]>=_0x25eefb[_0xb1b9('0xc9')]){rpcDb[_0xb1b9('0x9a')](_0xf28ba3,_0xb1b9('0xca'));}else{rpcDb[_0xb1b9('0xcb')](ut['scheduledAt'](_0xf28ba3,_0xb1b9('0xc4'),_0x25eefb[_0xb1b9('0xcc')]),_0xf28ba3['unlockAgent'],_0xf28ba3[_0xb1b9('0xb1')]);}}}else{_0xf28ba3[_0xb1b9('0xc4')]++;_0x203f36['incrementPreviewCounters']({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countbusyretry':_0xf28ba3[_0xb1b9('0xc4')]}})['then'](function(){_0x203f36[_0xb1b9('0xcd')](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case _0xb1b9('0xce'):_0x25eefb[_0xb1b9('0x3b')]+=0x1;_0xf28ba3['countnoanswerretry']+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0x3,_0xb1b9('0xcf'));_0xe0da99=_0x25eefb[_0xb1b9('0xd0')];_0x409a39=_0x25eefb['callAdditionalPhoneAfterMin'];var _0x301f65=ut[_0xb1b9('0xd1')](_0xf28ba3,_0x25eefb);ami[_0xb1b9('0x24')](_0xb1b9('0xd2'),_0x301f65);rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xd3'));_0x203f36['verifyAdditionalPhones'](_0xf28ba3,'3',_0x25eefb)[_0xb1b9('0x86')](function(_0x180510){_0x11ddb4=_0x180510[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut[_0xb1b9('0xa4')](_0xf28ba3)>=_0x25eefb['dialGlobalMaxRetry']){_0x1e0651=ut['cloneAction'](_0xf28ba3,0xf,_0xb1b9('0xad'));rpcDb['createCustomerFinal'](_0x1e0651,_0xb1b9('0xd4'));}else{if(_0xf28ba3[_0xb1b9('0xd5')]>=_0x25eefb['dialNoAnswerMaxRetry']){rpcDb[_0xb1b9('0x9a')](_0xf28ba3,_0xb1b9('0xd3'));}else{rpcDb[_0xb1b9('0xcb')](ut[_0xb1b9('0xaf')](_0xf28ba3,'countnoanswerretry',_0x25eefb[_0xb1b9('0xd0')]),_0xf28ba3[_0xb1b9('0xb0')],_0xf28ba3[_0xb1b9('0xb1')]);}}}else{_0xf28ba3[_0xb1b9('0xd5')]++;_0x203f36[_0xb1b9('0xb4')]({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countnoanswerretry':_0xf28ba3[_0xb1b9('0xd5')]}})[_0xb1b9('0x86')](function(){_0x203f36[_0xb1b9('0xcd')](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case'CONGESTION':_0x25eefb[_0xb1b9('0x3a')]+=0x1;_0xf28ba3[_0xb1b9('0xd6')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut['logCustomer'](_0xf28ba3,0x8,_0xb1b9('0xd7'));_0xe0da99=_0x25eefb[_0xb1b9('0xd8')];_0x409a39=_0x25eefb[_0xb1b9('0xac')];ami['emit'](_0xb1b9('0xd9'),ut['buildObj'](_0xf28ba3,'congestion'));rpcDb['createCustomerHistory'](_0xf28ba3,_0xb1b9('0xda'));_0x203f36['verifyAdditionalPhones'](_0xf28ba3,'8',_0x25eefb)['then'](function(_0x12da3f){_0x11ddb4=_0x12da3f[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut[_0xb1b9('0xa4')](_0xf28ba3)>=_0x25eefb['dialGlobalMaxRetry']){_0x1e0651=ut[_0xb1b9('0xc7')](_0xf28ba3,0xf,_0xb1b9('0xad'));rpcDb[_0xb1b9('0x9a')](_0x1e0651,_0xb1b9('0xdb'));}else{if(_0xf28ba3[_0xb1b9('0xd6')]>=_0x25eefb[_0xb1b9('0xdc')]){rpcDb['createCustomerFinal'](_0xf28ba3,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0xb1b9('0xcb')](ut['scheduledAt'](_0xf28ba3,_0xb1b9('0xd6'),_0x25eefb[_0xb1b9('0xcc')]),_0xf28ba3['unlockAgent'],_0xf28ba3[_0xb1b9('0xb1')]);}}}else{_0xf28ba3['countcongestionretry']++;_0x203f36[_0xb1b9('0xb4')]({'id':_0xf28ba3['idContact'],'field':{'countcongestionretry':_0xf28ba3[_0xb1b9('0xd6')]}})[_0xb1b9('0x86')](function(){_0x203f36[_0xb1b9('0xcd')](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case _0xb1b9('0xdd'):_0x25eefb[_0xb1b9('0x3f')]+=0x1;_0xf28ba3['countagentrejectretry']+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut['totalGlobal'](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0x14,'AgentReject');_0xe0da99=_0x25eefb[_0xb1b9('0xde')];_0x409a39=_0x25eefb['callAdditionalPhoneAfterMin'];ami[_0xb1b9('0x24')]('custom:agentreject',ut[_0xb1b9('0xa6')](_0xf28ba3,_0xb1b9('0xdf')));rpcDb[_0xb1b9('0x96')](_0xf28ba3,'[syncHangupRequest][logAgentReject]');_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'20',_0x25eefb)[_0xb1b9('0x86')](function(_0x37ff8a){_0x11ddb4=_0x37ff8a['additional']==0x1;if(!_0x11ddb4){if(ut[_0xb1b9('0xa4')](_0xf28ba3)>=_0x25eefb['dialGlobalMaxRetry']){_0x1e0651=ut[_0xb1b9('0xc7')](_0xf28ba3,0x14,'AgentReject');rpcDb[_0xb1b9('0x9a')](_0x1e0651,_0xb1b9('0xe0'));}else{if(_0xf28ba3[_0xb1b9('0xe1')]>=_0x25eefb['dialAgentRejectMaxRetry']){rpcDb['createCustomerFinal'](_0xf28ba3,_0xb1b9('0xe0'));}else{rpcDb[_0xb1b9('0xcb')](ut[_0xb1b9('0xaf')](_0xf28ba3,'countagentrejectretry',_0x25eefb[_0xb1b9('0xde')]),_0xf28ba3[_0xb1b9('0xb0')],_0xf28ba3['activeContact']);}}}else{_0xf28ba3[_0xb1b9('0xd5')]++;_0x203f36['incrementPreviewCounters']({'id':_0xf28ba3['idContact'],'field':{'countnoanswerretry':_0xf28ba3[_0xb1b9('0xd5')]}})['then'](function(){_0x203f36[_0xb1b9('0xcd')](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case _0xb1b9('0xe2'):_0x25eefb[_0xb1b9('0x41')]+=0x1;_0xf28ba3[_0xb1b9('0xe3')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0xb,_0xb1b9('0xe4'));rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xe5'));_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'11',_0x25eefb)[_0xb1b9('0x86')](function(_0x3188a4){_0x11ddb4=_0x3188a4[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut[_0xb1b9('0xa4')](_0xf28ba3)>=_0x25eefb[_0xb1b9('0xc6')]){_0x1e0651=ut['cloneAction'](_0xf28ba3,0xf,'Global');rpcDb[_0xb1b9('0x9a')](_0x1e0651,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0xf28ba3[_0xb1b9('0xe6')]>=_0x25eefb[_0xb1b9('0xe7')]){rpcDb['createCustomerFinal'](_0xf28ba3,_0xb1b9('0xe5'));}else{rpcDb[_0xb1b9('0xcb')](ut['scheduledAt'](_0xf28ba3,_0xb1b9('0xe3'),_0x25eefb['dialAbandonedRetryFrequency']),_0xf28ba3[_0xb1b9('0xb0')],_0xf28ba3[_0xb1b9('0xb1')]);}}}else{_0xf28ba3[_0xb1b9('0xd5')]++;_0x203f36['incrementPreviewCounters']({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countnoanswerretry':_0xf28ba3[_0xb1b9('0xd5')]}})[_0xb1b9('0x86')](function(){_0x203f36[_0xb1b9('0xcd')](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});});}});break;case'18':_0x25eefb['outboundUnknownCallsDay']+=0x1;_0xf28ba3[_0xb1b9('0xe8')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut['totalGlobal'](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0x12,_0x4eda65[_0xb1b9('0xe9')]||_0x4eda65[_0xb1b9('0xea')]);ami['emit'](_0xb1b9('0xeb'),ut['buildObj'](_0xf28ba3,_0xb1b9('0xec')));rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xed'));_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'18',_0x25eefb)['then'](function(_0x1d2031){_0x11ddb4=_0x1d2031[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut['totalGlobal'](_0xf28ba3)>=_0x25eefb[_0xb1b9('0xc6')]){_0x1e0651=ut[_0xb1b9('0xc7')](_0xf28ba3,0x12,'Global');rpcDb['createCustomerFinal'](_0x1e0651,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0xb1b9('0x9a')](_0xf28ba3,_0xb1b9('0xed'));}}else{_0xf28ba3[_0xb1b9('0xd5')]++;_0x203f36[_0xb1b9('0xb4')]({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countnoanswerretry':_0xf28ba3[_0xb1b9('0xd5')]}})['then'](function(){_0x203f36['swapAdditionalPhones'](_0xf28ba3,_0xe0da99,_0x409a39)['then'](function(){});});}});delete this[_0xb1b9('0x70')][_0x4eda65[_0xb1b9('0xb2')]];break;case'19':_0x25eefb[_0xb1b9('0x40')]+=0x1;_0xf28ba3['countglobal']=ut[_0xb1b9('0xa4')](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0x13,_0x4eda65['cause-txt']||_0x4eda65[_0xb1b9('0xea')]);ami[_0xb1b9('0x24')](_0xb1b9('0xeb'),ut['buildObj'](_0xf28ba3,'amd'));rpcDb[_0xb1b9('0x96')](_0xf28ba3,'[callProgressDetectingCustomer][machine]');_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'18',_0x25eefb)[_0xb1b9('0x86')](function(_0x539e15){_0x11ddb4=_0x539e15[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut['totalGlobal'](_0xf28ba3)>=_0x25eefb['dialGlobalMaxRetry']){_0x1e0651=ut[_0xb1b9('0xc7')](_0xf28ba3,0xf,_0xb1b9('0xad'));rpcDb[_0xb1b9('0x9a')](_0x1e0651,_0xb1b9('0xee'));}else{rpcDb['createCustomerFinal'](_0xf28ba3,_0xb1b9('0xee'));}}else{_0xf28ba3[_0xb1b9('0xd5')]++;_0x203f36[_0xb1b9('0xb4')]({'id':_0xf28ba3[_0xb1b9('0xb3')],'field':{'countnoanswerretry':_0xf28ba3['countnoanswerretry']}})[_0xb1b9('0x86')](function(){_0x203f36['swapAdditionalPhones'](_0xf28ba3,_0xe0da99,_0x409a39)['then'](function(){});});}});delete this[_0xb1b9('0x70')][_0x4eda65[_0xb1b9('0xb2')]];break;default:if(_0xf28ba3['dialAnswer']){ut['decrementTalkink'](_0x25eefb,'[default]');ut[_0xb1b9('0x7f')](_0xb1b9('0xef')+_0x25eefb[_0xb1b9('0x54')],_0x4eda65);}_0x25eefb[_0xb1b9('0x40')]+=0x1;_0xf28ba3[_0xb1b9('0xa3')]=ut[_0xb1b9('0xa4')](_0xf28ba3);ut[_0xb1b9('0x92')](_0xf28ba3,0xc,_0x4eda65[_0xb1b9('0xe9')]||_0x4eda65[_0xb1b9('0xea')]);_0xe0da99=_0x25eefb[_0xb1b9('0xde')];_0x409a39=_0x25eefb[_0xb1b9('0xac')];rpcDb[_0xb1b9('0x96')](_0xf28ba3,_0xb1b9('0xf0'));_0x203f36[_0xb1b9('0xa9')](_0xf28ba3,'20',_0x25eefb)[_0xb1b9('0x86')](function(_0x2c6ad5){_0x11ddb4=_0x2c6ad5[_0xb1b9('0xaa')]==0x1;if(!_0x11ddb4){if(ut[_0xb1b9('0xa4')](_0xf28ba3)>=_0x25eefb[_0xb1b9('0xc6')]){_0x1e0651=ut['cloneAction'](_0xf28ba3,0xf,_0xb1b9('0xad'));rpcDb[_0xb1b9('0x9a')](_0x1e0651,_0xb1b9('0xf1'));}else{rpcDb[_0xb1b9('0x9a')](_0xf28ba3,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xb1b9('0x70')][_0x4eda65['linkedid']];}else{_0x203f36['swapAdditionalPhones'](_0xf28ba3,_0xe0da99,_0x409a39)[_0xb1b9('0x86')](function(){});}});}if(!(_0xf28ba3['dialAnswer']&&_0x3b0d67==='16')){ut[_0xb1b9('0x7c')](_0x25eefb,_0xb1b9('0xf2'));logger['info'](_0xb1b9('0xf3'),_0xf28ba3[_0xb1b9('0xb8')],_0xb1b9('0xb9'),_0x25eefb['name'],_0xb1b9('0x73'),_0x25eefb['originated']);}if(_0x3b0d67!=='ANSWER'){delete this[_0xb1b9('0x70')][_0x4eda65['linkedid']];delete this[_0xb1b9('0x70')][_0x4eda65[_0xb1b9('0xf4')]];}}};Preview['prototype'][_0xb1b9('0xf5')]=function(_0x51455f,_0x57a842,_0x33b087){if(_[_0xb1b9('0xf6')](_0x57a842)&&_0xb1b9('0xf7')!==typeof _0x57a842){return;}if(_[_0xb1b9('0xf6')](_0x33b087)&&_0xb1b9('0xf7')!==typeof _0x33b087){return;}switch(_0x33b087['reason']){case'0':ut[_0xb1b9('0xf8')](_0x51455f,0x0,_0xb1b9('0xa5'));rpcDb[_0xb1b9('0xf9')](_0x51455f,_0xb1b9('0xfa'));break;case'3':ut[_0xb1b9('0xf8')](_0x51455f,0x3,_0xb1b9('0xcf'));rpcDb[_0xb1b9('0xf9')](_0x51455f,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0xb1b9('0xf8')](_0x51455f,0x5,_0xb1b9('0xfb'));rpcDb[_0xb1b9('0xf9')](_0x51455f,_0xb1b9('0xfc'));break;case'8':ut[_0xb1b9('0xf8')](_0x51455f,0x8,'Congestion');rpcDb['createAgentHistory'](_0x51455f,_0xb1b9('0xfd'));break;case'22':ut[_0xb1b9('0xf8')](_0x51455f,0x16,_0xb1b9('0xfe'));rpcDb[_0xb1b9('0xf9')](_0x51455f,_0xb1b9('0xff'));break;default:ut[_0xb1b9('0xf8')](_0x51455f,0xc,_0x33b087[_0xb1b9('0x100')]);rpcDb[_0xb1b9('0xf9')](_0x51455f,'[callProgressDetectingAgent][logCongestion]');}ut[_0xb1b9('0x7c')](_0x57a842,_0xb1b9('0x101'));logger[_0xb1b9('0x5a')]('[originated][decrement][callProgressDetectingAgent]',_0x51455f[_0xb1b9('0xb8')],_0xb1b9('0xb9'),_0x57a842[_0xb1b9('0x54')],_0xb1b9('0x73'),_0x57a842['originated']);delete this[_0xb1b9('0x70')][_0x51455f[_0xb1b9('0xb8')]];};Preview['prototype']['verifyAdditionalPhones']=function(_0x5f0e31,_0x52bcae,_0x453909){return Promise[_0xb1b9('0x102')]()[_0xb1b9('0x86')](cmHopperAdditionalPhone[_0xb1b9('0xa9')](_0x5f0e31,_0x52bcae,_0x453909))[_0xb1b9('0x7a')](logger['info'](_0xb1b9('0x103')));};Preview[_0xb1b9('0x66')][_0xb1b9('0xcd')]=function(_0x505e20,_0x39da8c,_0x3e42e5){return Promise[_0xb1b9('0x102')]()['then'](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x505e20,_0x39da8c,_0x3e42e5))[_0xb1b9('0x7a')](logger[_0xb1b9('0x5a')](_0xb1b9('0x104')));};Preview[_0xb1b9('0x66')][_0xb1b9('0xb4')]=function(_0x26eea8){return Promise['resolve']()[_0xb1b9('0x86')](cmHopperAdditionalPhone['incrementPreviewCounters'](_0x26eea8))[_0xb1b9('0x7a')](logger[_0xb1b9('0x5a')](_0xb1b9('0x105')));};Preview[_0xb1b9('0x66')]['checkInBlack']=function(_0x19ba31,_0x2e1792,_0x456e2a,_0x366878,_0x29d27e){var _0x9dee42=this;return new Promise(function(_0x3cfc66,_0x566105){if(_[_0xb1b9('0x6f')](_0x2e1792)||_[_0xb1b9('0x6f')](_0x2e1792[_0xb1b9('0x106')])||_[_0xb1b9('0x6f')](_0x2e1792[_0xb1b9('0x107')])||_[_0xb1b9('0x6f')](_0x2e1792['VoiceQueueId'])){_0x566105(ut[_0xb1b9('0x4c')](_0xb1b9('0x108'),_0x366878,_0x29d27e));return;}var _0x10e92d=uuid['v4']();var _0x3c20ee=_0x9dee42['campaignsPreview'][_0x2e1792[_0xb1b9('0x109')][_0xb1b9('0x54')]];var _0x26c482=_0x456e2a?_0x9dee42['agents'][_0x456e2a]['id']:undefined;_0x9dee42[_0xb1b9('0x70')][_0x10e92d]=new Action(_0x2e1792,_0x3c20ee,_0x10e92d,_0x456e2a,_0x26c482);var _0x2175be=_0x9dee42['actions'][_0x10e92d];_0x2175be[_0xb1b9('0xb0')]=_0x366878;_0x2175be[_0xb1b9('0xb1')]=_0x29d27e;_0x2175be['lookAgent']=_0x456e2a;if(_[_0xb1b9('0x10a')](_0x19ba31)){_0x9dee42[_0xb1b9('0x10b')](_0x2175be,_0x3c20ee,_0x2e1792,_0x456e2a)[_0xb1b9('0x86')](function(_0x15b489){logger['info'](_0xb1b9('0x10c'),'Queue:\x20'+_0x2175be[_0xb1b9('0x72')]+'\x20IdHopper:\x20'+_0x2175be[_0xb1b9('0xb3')],JSON[_0xb1b9('0x57')](_0x15b489));ami[_0xb1b9('0x24')](_0xb1b9('0x10d'),ut[_0xb1b9('0xa6')](_0x2175be,'called',_0x9dee42[_0xb1b9('0x12')][_0x2175be[_0xb1b9('0x72')]]));_0x3cfc66(ut[_0xb1b9('0x4c')](_0xb1b9('0x10e')));})[_0xb1b9('0x7a')](function(_0x5f15ac){ut[_0xb1b9('0x62')](_0xb1b9('0x10f'),_0x5f15ac);_0x566105(ut[_0xb1b9('0x4c')](_0xb1b9('0x110'),_0x366878,_0x29d27e));});}else{_0x3c20ee[_0xb1b9('0x38')]+=0x1;ut[_0xb1b9('0x111')](_0x2175be);rpcDb[_0xb1b9('0x112')](_0x2175be,_0xb1b9('0x113'));delete _0x9dee42[_0xb1b9('0x70')][_0x10e92d];_0x566105(ut[_0xb1b9('0x4c')]('Contact\x20in\x20black\x20List',_0x366878,_0x29d27e));}});};Preview[_0xb1b9('0x66')][_0xb1b9('0x114')]=function(_0x1cf102){return!_['isNil'](_0x1cf102)&&!_[_0xb1b9('0x6f')](_0x1cf102[_0xb1b9('0x54')])&&!_[_0xb1b9('0x6f')](_0x1cf102[_0xb1b9('0x115')])&&_0x1cf102[_0xb1b9('0x115')]&&!_['isNil'](this[_0xb1b9('0x14')][util['format'](_0xb1b9('0x116'),_0x1cf102[_0xb1b9('0x54')])])&&!_[_0xb1b9('0x6f')](this[_0xb1b9('0x14')][util[_0xb1b9('0x58')](_0xb1b9('0x116'),_0x1cf102[_0xb1b9('0x54')])][_0xb1b9('0x117')])&&(this[_0xb1b9('0x14')][util['format'](_0xb1b9('0x116'),_0x1cf102[_0xb1b9('0x54')])][_0xb1b9('0x117')]===_0xb1b9('0x118')||this[_0xb1b9('0x14')][util[_0xb1b9('0x58')](_0xb1b9('0x116'),_0x1cf102[_0xb1b9('0x54')])][_0xb1b9('0x117')]===_0xb1b9('0x119'));};Preview[_0xb1b9('0x66')][_0xb1b9('0x8c')]=function(_0x4c92e2,_0x4b1807){return this[_0xb1b9('0x11a')](_0x4c92e2,_0x4b1807)[_0xb1b9('0x86')](function(_0x299fc5){return _[_0xb1b9('0x75')](_0x299fc5,[_0xb1b9('0x4c')]);})[_0xb1b9('0x7a')](function(_0x17582c){if(_0x17582c['unlock']){rpcDb['unlockContact'](_0x4c92e2);}if(_0x17582c['active']){rpcDb['disableContact'](_0x4c92e2);}throw _['pick'](_0x17582c,[_0xb1b9('0x4c')]);});};Preview[_0xb1b9('0x66')][_0xb1b9('0x11a')]=function(_0x4779ec,_0x1697b0){var _0x3d8f39=this;var _0x358d63,_0xb941a5;return rpcDb['getContactPreview'](_0x4779ec)[_0xb1b9('0x86')](function(_0x1ba1ac){if(!_[_0xb1b9('0x6f')](_0x1ba1ac[0x0])){_0xb941a5=_0x1ba1ac[0x0][_0xb1b9('0x11b')]?![]:!![];_0x358d63=_0x1ba1ac[0x0][_0xb1b9('0x11b')]?!![]:![];_0x358d63=_0x1697b0?!![]:_0x358d63;}var _0x435813=_0x3d8f39[_0xb1b9('0x11c')](_0x1ba1ac);if(_0x435813[_0xb1b9('0x11d')]){rpcDb[_0xb1b9('0x11e')](_[_0xb1b9('0x75')](_0x1ba1ac[0x0],[_0xb1b9('0x77'),_0xb1b9('0x107')]))['then'](function(_0x7118e7){_0x3d8f39[_0xb1b9('0x11f')](_0x7118e7,_0x1ba1ac[0x0],_0x1697b0,_0xb941a5,_0x358d63)[_0xb1b9('0x86')](function(_0x426765){return _0x426765;})[_0xb1b9('0x7a')](function(_0x569ece){throw _0x569ece;});})[_0xb1b9('0x7a')](function(_0x2cc7e5){ut['logger'](_0xb1b9('0x120'),_0x2cc7e5);throw ut[_0xb1b9('0x4c')](_0xb1b9('0x121'),_0xb941a5,_0x358d63);});}else{throw ut[_0xb1b9('0x4c')](_0x435813[_0xb1b9('0x4c')],_0xb941a5,_0x358d63);}})[_0xb1b9('0x7a')](function(_0x49d760){ut[_0xb1b9('0x62')](_0xb1b9('0x122'),_0x49d760);throw ut[_0xb1b9('0x4c')](_0xb1b9('0x121'),![],!![]);});};Preview[_0xb1b9('0x66')][_0xb1b9('0x11c')]=function(_0xaa0944){if(_[_0xb1b9('0x6f')](_0xaa0944)||_[_0xb1b9('0x10a')](_0xaa0944)||!_[_0xb1b9('0x6f')](_0xaa0944[0x0]['Agent'])&&_[_0xb1b9('0x6f')](_0xaa0944[0x0][_0xb1b9('0x8a')][_0xb1b9('0x54')])){ut[_0xb1b9('0x62')](_0xb1b9('0x123'),_0xaa0944);return{'isValid':![],'message':_0xb1b9('0x124')};}var _0x2ea224=this[_0xb1b9('0x12')][_0xaa0944[0x0][_0xb1b9('0x109')][_0xb1b9('0x54')]];_0x2ea224[_0xb1b9('0x4c')]=_0xb1b9('0xa0');if(_[_0xb1b9('0x6f')](_0x2ea224)){ut[_0xb1b9('0x62')]('[Preview][validateContact][Empty\x20Campaign]',_0x2ea224);return{'isValid':![],'message':_0xb1b9('0x125')};}if(!this[_0xb1b9('0x114')](_0x2ea224[_0xb1b9('0x53')])){ut[_0xb1b9('0x62')](_0xb1b9('0x126'),_0xb1b9('0x127')+_0x2ea224['name']+_0xb1b9('0x128'));if(!this[_0xb1b9('0x114')](_0x2ea224[_0xb1b9('0x9e')])){ut['logger'](_0xb1b9('0x126'),_0x2ea224['name']+_0xb1b9('0x129'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0xb1b9('0x12a')](_0x2ea224[_0xb1b9('0x31')])){ut['logger'](_0xb1b9('0x12b'),_0x2ea224['name']+_0xb1b9('0x12c'));return{'isValid':![],'message':_0xb1b9('0x127')+_0x2ea224[_0xb1b9('0x54')]+_0xb1b9('0x12c')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0xb1b9('0x66')][_0xb1b9('0x10b')]=function(_0x4a2776,_0x283bc8,_0x3b75ce,_0x12f953){var _0x2c1969=this;return new Promise(function(_0x3364c7,_0x1f1fd4){var _0x2d87f0=_0x4a2776[_0xb1b9('0xb8')];var _0x4ccb80=_0x2c1969[_0xb1b9('0x114')](_0x283bc8[_0xb1b9('0x53')])?util['format']('SIP/%s/%s%s',_0x283bc8[_0xb1b9('0x53')][_0xb1b9('0x54')],_[_0xb1b9('0x6f')](_0x283bc8[_0xb1b9('0x35')])?'':_0x283bc8['dialPrefix'][_0xb1b9('0x12d')]()||'',_0x283bc8[_0xb1b9('0x12e')]>0x0?_0x3b75ce[_0xb1b9('0x107')][_0xb1b9('0x12f')](_0x283bc8[_0xb1b9('0x12e')]):_0x3b75ce[_0xb1b9('0x107')]):util['format'](_0xb1b9('0x130'),_[_0xb1b9('0x6f')](_0x283bc8['TrunkBackup'])?_0x283bc8[_0xb1b9('0x53')][_0xb1b9('0x54')]:_0x283bc8[_0xb1b9('0x9e')][_0xb1b9('0x54')],_[_0xb1b9('0x6f')](_0x283bc8[_0xb1b9('0x35')])?'':_0x283bc8[_0xb1b9('0x35')][_0xb1b9('0x12d')]()||'',_0x283bc8['dialCutDigit']>0x0?_0x3b75ce[_0xb1b9('0x107')]['substring'](_0x283bc8[_0xb1b9('0x12e')]):_0x3b75ce[_0xb1b9('0x107')]);var _0xbcef96=_0x2c1969[_0xb1b9('0x114')](_0x283bc8[_0xb1b9('0x53')])?ut[_0xb1b9('0x131')](_0x283bc8[_0xb1b9('0x53')][_0xb1b9('0x55')],_0x283bc8[_0xb1b9('0x33')],_0x283bc8['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x283bc8[_0xb1b9('0x132')],_0x283bc8['dialRandomLastDigitCallerIdNumber']):_0x283bc8[_0xb1b9('0x132')]):ut['getCallerId'](_[_0xb1b9('0x6f')](_0x283bc8['TrunkBackup'])?_0x283bc8[_0xb1b9('0x53')]['callerid']:_0x283bc8[_0xb1b9('0x9e')][_0xb1b9('0x55')],_0x283bc8[_0xb1b9('0x33')],_0x283bc8[_0xb1b9('0x133')]>0x0?ut['getCallerIdRandom'](_0x283bc8['dialOriginateCallerIdNumber'],_0x283bc8[_0xb1b9('0x133')]):_0x283bc8[_0xb1b9('0x132')]);if(_0xbcef96){_0x4a2776[_0xb1b9('0x134')]=ut[_0xb1b9('0x135')](_0xbcef96);_0x4a2776[_0xb1b9('0x136')]=ut['extractCalleridNumber'](_0xbcef96);}var _0x1c9e7c=ut[_0xb1b9('0x137')](_0x283bc8,_0x3b75ce,_0x4ccb80,_0xbcef96,_0x2d87f0,_0x4a2776);_[_0xb1b9('0x138')](_0x4a2776,ut['toLowerVariables'](_0x1c9e7c));_0x4a2776[_0xb1b9('0x90')]=moment()[_0xb1b9('0x58')](_0xb1b9('0x91'));_0x283bc8[_0xb1b9('0x139')]=_0x1c9e7c;ami['Action'](ut[_0xb1b9('0x13a')](_0x4a2776,_0x283bc8,_0x1c9e7c,_0x4a2776[_0xb1b9('0xb1')],_0x12f953))['then'](function(_0x469710){_0x283bc8[_0xb1b9('0x4d')]+=0x1;logger[_0xb1b9('0x5a')](_0xb1b9('0x13b'),_0x2d87f0,'\x20Queue',_0x283bc8[_0xb1b9('0x54')],_0xb1b9('0x73'),_0x283bc8['originated']);_0x3364c7(_0x469710);})[_0xb1b9('0x7a')](function(_0x1da205){ut[_0xb1b9('0xf8')](_0x4a2776,0xe,_0xb1b9('0x13c'));rpcDb[_0xb1b9('0xf9')](_0x4a2776,'[originateFailure][logOriginateFailure]');_0x1f1fd4(_0x1da205);});});};Preview[_0xb1b9('0x66')][_0xb1b9('0x1e')]=function(_0x2ee2d7){if(this[_0xb1b9('0x70')][_0x2ee2d7[_0xb1b9('0xb2')]]){this[_0xb1b9('0x70')][_0x2ee2d7['linkedid']][_0xb1b9('0x13d')]=_0x2ee2d7[_0xb1b9('0x13d')];}};Preview['prototype'][_0xb1b9('0x17')]=function(_0x4b0b1d){var _0x4055b9=this;var _0x39f112=this[_0xb1b9('0x70')][_0x4b0b1d[_0xb1b9('0x13e')]];if(_0x39f112){if(_0x39f112[_0xb1b9('0x13f')]&&this[_0xb1b9('0x15')][_0x39f112[_0xb1b9('0x13f')]]){ut['logLookAgent'](_0x39f112,this[_0xb1b9('0x15')][_0x39f112[_0xb1b9('0x13f')]]['name'],this['agents'][_0x39f112[_0xb1b9('0x13f')]]['id']);}var _0x17817c=_['clone'](_0x39f112);_0x17817c[_0xb1b9('0xb6')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x40deed=_0x4055b9[_0xb1b9('0x12')][_0x39f112[_0xb1b9('0x72')]];if(ut[_0xb1b9('0x140')](_0x4b0b1d[_0xb1b9('0x141')])){if(_0x39f112[_0xb1b9('0xb0')]){rpcDb[_0xb1b9('0x142')](_0x39f112['idContact']);}if(_0x39f112[_0xb1b9('0xb1')]){rpcDb[_0xb1b9('0x8f')](_0x39f112['idContact']);}ami[_0xb1b9('0x24')](_0xb1b9('0x143'),ut[_0xb1b9('0xa6')](_0x39f112,_0xb1b9('0x144'),this[_0xb1b9('0x12')][_0x39f112[_0xb1b9('0x72')]]));this['callProgressDetectingAgent'](_0x17817c,_0x40deed,_0x4b0b1d);}else{_0x39f112['starttime']=moment()[_0xb1b9('0x58')](_0xb1b9('0x91'));ut['logAgent'](_0x17817c,0x4,_0xb1b9('0x145'));rpcDb['createAgentHistory'](_0x17817c,_0xb1b9('0x146'));}}};Preview[_0xb1b9('0x66')]['syncHangup']=function(_0x127898){var _0x234c09=this[_0xb1b9('0x70')][_0x127898[_0xb1b9('0xb2')]];var _0x353b39;if(_0x234c09){_0x353b39=this[_0xb1b9('0x12')][_0x234c09[_0xb1b9('0x72')]];logger[_0xb1b9('0x5a')](_0xb1b9('0x147'),_0x127898[_0xb1b9('0xb2')],_0xb1b9('0xb9'),_0x353b39['name'],_0xb1b9('0x148'),_0x353b39[_0xb1b9('0x2a')]);}if(this[_0xb1b9('0x70')][_0x127898['linkedid']]&&_0x127898[_0xb1b9('0xb2')]!==_0x127898[_0xb1b9('0xb8')]){if(_0x127898['cause']==='16'&&this[_0xb1b9('0x70')][_0x127898[_0xb1b9('0xb2')]][_0xb1b9('0x74')]){this[_0xb1b9('0xa1')](_0x127898,_0x127898[_0xb1b9('0xb2')],_0x127898[_0xb1b9('0x149')]);}else if(this[_0xb1b9('0x70')][_0x127898[_0xb1b9('0xb2')]][_0xb1b9('0x74')]){logger[_0xb1b9('0x5a')](_0xb1b9('0x14a'),_0x127898[_0xb1b9('0xb2')],_0x127898['cause'],_0xb1b9('0xb9'),_0x353b39[_0xb1b9('0x54')],_0xb1b9('0x148'),_0x353b39[_0xb1b9('0x2a')]);this[_0xb1b9('0xa1')](_0x127898,_0x127898[_0xb1b9('0xb2')],_0x127898[_0xb1b9('0x149')]);}}else if(_0x234c09&&_['isNil'](_0x234c09['statedesc'])&&_0x353b39['dialQueueProject']&&_0x127898[_0xb1b9('0xb2')]===_0x127898['uniqueid']&&_[_0xb1b9('0x6f')](_0x127898['reason'])&&_0x127898['cause']==='16'&&_0x127898[_0xb1b9('0x14b')]==='6'&&_[_0xb1b9('0xf6')](_0x234c09[_0xb1b9('0x14c')])){if(_0x234c09['unlockAgent']){rpcDb[_0xb1b9('0x142')](_0x234c09[_0xb1b9('0xb3')]);}if(_0x234c09[_0xb1b9('0xb1')]){rpcDb[_0xb1b9('0x8f')](_0x234c09[_0xb1b9('0xb3')]);}_0x127898['reason']='22';this[_0xb1b9('0xf5')](_0x234c09,_0x353b39,_0x127898);}else if(_0x234c09&&_0x234c09['transfer']){if(_0x127898['cause']==='16'&&this[_0xb1b9('0x70')][_0x127898[_0xb1b9('0xb2')]][_0xb1b9('0x74')]){logger[_0xb1b9('0x5a')]('[syncHangup][talking][transfer]',_0x127898['linkedid'],_0x127898[_0xb1b9('0x149')],'\x20Queue',_0x353b39['name'],_0xb1b9('0x148'),_0x353b39[_0xb1b9('0x2a')]);this[_0xb1b9('0xa1')](_0x127898,_0x127898[_0xb1b9('0xb2')],_0x127898[_0xb1b9('0x149')]);}else if(this[_0xb1b9('0x70')][_0x127898[_0xb1b9('0xb2')]][_0xb1b9('0x74')]){logger[_0xb1b9('0x5a')](_0xb1b9('0x14a'),_0x127898[_0xb1b9('0xb2')],_0x127898['cause'],_0xb1b9('0xb9'),_0x353b39[_0xb1b9('0x54')],_0xb1b9('0x148'),_0x353b39[_0xb1b9('0x2a')]);this[_0xb1b9('0xa1')](_0x127898,_0x127898['linkedid'],_0x127898['cause']);}}};Preview[_0xb1b9('0x66')][_0xb1b9('0x1c')]=function(_0x4eb666){if(this['actions'][_0x4eb666[_0xb1b9('0xf4')]]&&_0x4eb666['destlinkedid']!==_0x4eb666['destuniqueid']){this[_0xb1b9('0xa1')](_0x4eb666,_0x4eb666['destlinkedid'],_0x4eb666[_0xb1b9('0xea')]);}};Preview[_0xb1b9('0x66')]['syncHangupRequest']=function(_0xb2bcc4){if(this[_0xb1b9('0x70')][_0xb2bcc4['linkedid']]&&_0xb2bcc4[_0xb1b9('0xb2')]!==_0xb2bcc4[_0xb1b9('0xb8')]&&!this[_0xb1b9('0x70')][_0xb2bcc4['linkedid']][_0xb1b9('0x74')]){if(_0xb2bcc4[_0xb1b9('0x149')]==='1'){this[_0xb1b9('0xa1')](_0xb2bcc4,_0xb2bcc4['linkedid'],_0xb2bcc4['cause']);}}};Preview[_0xb1b9('0x66')][_0xb1b9('0x14d')]=function(_0x558ac5,_0x231016,_0x240f42){if(this['actions'][_0x558ac5]){if(_['isNil'](this[_0xb1b9('0x70')][_0x558ac5][_0xb1b9('0x139')])){this[_0xb1b9('0x70')][_0x558ac5][_0xb1b9('0x139')]={};}this['actions'][_0x558ac5]['variables'][_0x231016]=_0x240f42;}};Preview[_0xb1b9('0x66')]['syncVarSet']=function(_0x148ec2){try{if(!_[_0xb1b9('0x6f')](_0x148ec2)){if(ut[_0xb1b9('0x14e')](_[_0xb1b9('0x14f')](_0x148ec2['variable'])[0x0])){this[_0xb1b9('0x14d')](_0x148ec2[_0xb1b9('0xb8')],_[_0xb1b9('0x14f')](_0x148ec2['variable'])[0x0],_0x148ec2[_0xb1b9('0x150')]);}}}catch(_0x447f10){logger[_0xb1b9('0x151')]('[syncVarSet][Preview]',util[_0xb1b9('0x152')](_0x447f10,{'showHidden':![],'depth':null}));}};Preview[_0xb1b9('0x66')]['syncAttendedTransfer']=function(_0x534525){if(_0x534525){if(this['actions'][_0x534525[_0xb1b9('0x153')]]){this[_0xb1b9('0x70')][_0x534525[_0xb1b9('0x153')]][_0xb1b9('0x14c')]=!![];}}};Preview['prototype'][_0xb1b9('0x23')]=function(_0x1c18d6){if(_0x1c18d6){if(this[_0xb1b9('0x70')][_0x1c18d6[_0xb1b9('0x154')]]){this[_0xb1b9('0x70')][_0x1c18d6['transfererlinkedid']][_0xb1b9('0x14c')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index 0155617..c8d307e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378b=['unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','endtime','connectedlinename','from-sip','exten','xcally-motion-preview','assigned','lastAssignedTo','membername','queuecallerexitreason','COMPLETED','create','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','rescheduleContact','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20'];(function(_0x11ff61,_0x1ae499){var _0x2ee408=function(_0x45e419){while(--_0x45e419){_0x11ff61['push'](_0x11ff61['shift']());}};_0x2ee408(++_0x1ae499);}(_0x378b,0xc7));var _0xb378=function(_0x143551,_0x726d9){_0x143551=_0x143551-0x0;var _0x37ae5d=_0x378b[_0x143551];return _0x37ae5d;};'use strict';var util=require(_0xb378('0x0'));var BPromise=require(_0xb378('0x1'));var logger=require(_0xb378('0x2'))(_0xb378('0x3'));var _=require('lodash');var cmHopper=require(_0xb378('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0xb378('0x5'));var cmHopperBlack=require(_0xb378('0x6'));var voiceQueueRt=require(_0xb378('0x7'));var agentReportPreview=require(_0xb378('0x8'));var voiceQueueReport=require(_0xb378('0x9'));function loggerCatch(_0x29b4b8){return function(_0x1b3d0b){logger[_0xb378('0xa')](_0x29b4b8,util[_0xb378('0xb')](_0x1b3d0b,{'showHidden':![],'depth':null}));};}function create(_0x570e2a){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopperHistory[_0xb378('0xe')](_0x570e2a))[_0xb378('0xf')](loggerCatch(_0xb378('0x10')));}function createAgent(_0x122369){return BPromise[_0xb378('0xc')]()['then'](agentReportPreview[_0xb378('0xe')](_0x122369))['catch'](loggerCatch(_0xb378('0x10')));}function moveContact(_0x8f1b00){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper['moveContactManagedDialer'](_0x8f1b00,!![]))[_0xb378('0xf')](loggerCatch(_0xb378('0x11')));}exports[_0xb378('0x12')]=function(_0x2842fe){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopperBlack[_0xb378('0x12')](_0x2842fe))['catch'](loggerCatch(_0xb378('0x13')));};exports[_0xb378('0x14')]=function(_0x489731){return BPromise[_0xb378('0xc')]()['then'](cmHopper['getContactPreview'](_0x489731))[_0xb378('0xf')](loggerCatch('[getContactPreview]\x20'));};exports[_0xb378('0xe')]=function(_0x512972,_0x30c12f){create(_0x512972)[_0xb378('0xf')](loggerCatch(_0x30c12f));moveContact(_0x512972)[_0xb378('0xf')](loggerCatch(_0x30c12f));};exports[_0xb378('0x15')]=function(_0x3e2bf2,_0x454133){createAgent(_0x3e2bf2)[_0xb378('0xf')](loggerCatch(_0x454133));};exports[_0xb378('0x16')]=function(_0x2483e5,_0x337ebd){create(_0x2483e5)[_0xb378('0xf')](loggerCatch(_0x337ebd));};exports[_0xb378('0x17')]=function(_0x3ad353,_0x4f7cd0){moveContact(_0x3ad353)[_0xb378('0xf')](loggerCatch(_0x4f7cd0));};exports['rescheduleContact']=function(_0x508bf6,_0x217eda,_0x2d1305){if(_0x217eda){_0x508bf6[_0xb378('0x18')]=null;}if(_0x2d1305){_0x508bf6[_0xb378('0x19')]=![];}return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper['rescheduleContact'](_0x508bf6))['catch'](loggerCatch(_0xb378('0x1a')));};exports[_0xb378('0x1b')]=function(_0x43c50b){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1b')](_0x43c50b))[_0xb378('0xf')](loggerCatch(_0xb378('0x1c')));};exports[_0xb378('0x1d')]=function(_0x26bfa6){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1d')]({'UserId':null},_0x26bfa6,0x1))[_0xb378('0xf')](loggerCatch(_0xb378('0x1e')));};exports['disableContact']=function(_0x17cce3){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x1d')]({'active':![]},_0x17cce3,0x1))['catch'](loggerCatch(_0xb378('0x1f')));};exports[_0xb378('0x20')]=function(_0x4675fa){var _0x237ab4={};_0x237ab4[_0xb378('0x21')]=_0x4675fa[_0xb378('0x21')];_0x237ab4[_0xb378('0x22')]=_0x4675fa[_0xb378('0x22')];_0x237ab4['calleridnum']=_0x4675fa[_0xb378('0x23')];_0x237ab4[_0xb378('0x24')]=_0x4675fa['calleridname'];_0x237ab4['queue']=_0x4675fa[_0xb378('0x25')];_0x237ab4[_0xb378('0x26')]=_0x4675fa[_0xb378('0x27')];_0x237ab4['queuecallerleaveAt']=_0x4675fa[_0xb378('0x27')];_0x237ab4[_0xb378('0x28')]=0x1;_0x237ab4['queuecallercompleteAt']=_0x4675fa[_0xb378('0x29')];_0x237ab4[_0xb378('0x2a')]=_0x4675fa['membername'];_0x237ab4['context']=_0xb378('0x2b');_0x237ab4[_0xb378('0x2c')]=_0xb378('0x2d');_0x237ab4['holdtime']=0x0;_0x237ab4[_0xb378('0x2e')]=0x1;_0x237ab4[_0xb378('0x2f')]=_0x4675fa[_0xb378('0x30')];_0x237ab4[_0xb378('0x31')]=_0xb378('0x32');return BPromise[_0xb378('0xc')]()['then'](voiceQueueReport[_0xb378('0x33')](_0x237ab4))[_0xb378('0xf')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0xb378('0x34')]=function(_0x3cd0d4,_0x32357a){return BPromise[_0xb378('0xc')]()['then'](cmHopper[_0xb378('0x34')](_0x3cd0d4,_0x32357a))[_0xb378('0xf')](loggerCatch(_0xb378('0x35')));};exports[_0xb378('0x36')]=function(_0x1dd36a){return BPromise[_0xb378('0xc')]()[_0xb378('0xd')](cmHopper[_0xb378('0x37')](_0x1dd36a,!![],!![]))[_0xb378('0xf')](loggerCatch(_0xb378('0x38')));};
\ No newline at end of file
+var _0x4c97=['COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','error','inspect','then','createHistory','catch','resolve','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','xcally-motion-preview','holdtime','lastAssignedTo','queuecallerexitreason'];(function(_0x10f6e8,_0x351db6){var _0x35bb3c=function(_0x30a39b){while(--_0x30a39b){_0x10f6e8['push'](_0x10f6e8['shift']());}};_0x35bb3c(++_0x351db6);}(_0x4c97,0x1c7));var _0x74c9=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x4c97[_0x1d1779];return _0x2377e9;};'use strict';var util=require(_0x74c9('0x0'));var BPromise=require(_0x74c9('0x1'));var logger=require('../../../config/logger')('preview');var _=require('lodash');var cmHopper=require(_0x74c9('0x2'));var cmHopperFinal=require(_0x74c9('0x3'));var cmHopperHistory=require(_0x74c9('0x4'));var cmHopperBlack=require(_0x74c9('0x5'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x74c9('0x6'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x36473a){return function(_0x773678){logger[_0x74c9('0x7')](_0x36473a,util[_0x74c9('0x8')](_0x773678,{'showHidden':![],'depth':null}));};}function create(_0x3de5bf){return BPromise['resolve']()[_0x74c9('0x9')](cmHopperHistory[_0x74c9('0xa')](_0x3de5bf))[_0x74c9('0xb')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x57b177){return BPromise[_0x74c9('0xc')]()[_0x74c9('0x9')](agentReportPreview['createHistory'](_0x57b177))['catch'](loggerCatch(_0x74c9('0xd')));}function moveContact(_0x1e3cba){return BPromise['resolve']()[_0x74c9('0x9')](cmHopper[_0x74c9('0xe')](_0x1e3cba,!![]))[_0x74c9('0xb')](loggerCatch(_0x74c9('0xf')));}exports[_0x74c9('0x10')]=function(_0x93ccdf){return BPromise[_0x74c9('0xc')]()[_0x74c9('0x9')](cmHopperBlack[_0x74c9('0x10')](_0x93ccdf))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x11')));};exports[_0x74c9('0x12')]=function(_0x3d5ff5){return BPromise[_0x74c9('0xc')]()[_0x74c9('0x9')](cmHopper[_0x74c9('0x12')](_0x3d5ff5))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x13')));};exports['createHistory']=function(_0x577396,_0x2bd2b5){create(_0x577396)[_0x74c9('0xb')](loggerCatch(_0x2bd2b5));moveContact(_0x577396)[_0x74c9('0xb')](loggerCatch(_0x2bd2b5));};exports[_0x74c9('0x14')]=function(_0x1ee918,_0x556a26){createAgent(_0x1ee918)['catch'](loggerCatch(_0x556a26));};exports[_0x74c9('0x15')]=function(_0x3853dd,_0x3b087a){create(_0x3853dd)[_0x74c9('0xb')](loggerCatch(_0x3b087a));};exports[_0x74c9('0x16')]=function(_0x177bff,_0x2396d9){moveContact(_0x177bff)['catch'](loggerCatch(_0x2396d9));};exports[_0x74c9('0x17')]=function(_0x3da1d0,_0x2154b9,_0x55ee83){if(_0x2154b9){_0x3da1d0[_0x74c9('0x18')]=null;}if(_0x55ee83){_0x3da1d0['active']=![];}return BPromise[_0x74c9('0xc')]()['then'](cmHopper[_0x74c9('0x17')](_0x3da1d0))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x19')));};exports[_0x74c9('0x1a')]=function(_0x51c8b2){return BPromise['resolve']()[_0x74c9('0x9')](cmHopper[_0x74c9('0x1a')](_0x51c8b2))['catch'](loggerCatch('[countReScheduled]\x20'));};exports[_0x74c9('0x1b')]=function(_0x57ff78){return BPromise['resolve']()['then'](cmHopper['unlockContact']({'UserId':null},_0x57ff78,0x1))[_0x74c9('0xb')](loggerCatch('[unlockContact]\x20'));};exports[_0x74c9('0x1c')]=function(_0x4c2f03){return BPromise[_0x74c9('0xc')]()['then'](cmHopper['unlockContact']({'active':![]},_0x4c2f03,0x1))['catch'](loggerCatch(_0x74c9('0x1d')));};exports[_0x74c9('0x1e')]=function(_0x2d84bd){var _0x4870bc={};_0x4870bc[_0x74c9('0x1f')]=_0x2d84bd[_0x74c9('0x1f')];_0x4870bc[_0x74c9('0x20')]=_0x2d84bd[_0x74c9('0x20')];_0x4870bc['calleridnum']=_0x2d84bd[_0x74c9('0x21')];_0x4870bc[_0x74c9('0x22')]=_0x2d84bd[_0x74c9('0x22')];_0x4870bc[_0x74c9('0x23')]=_0x2d84bd[_0x74c9('0x23')];_0x4870bc[_0x74c9('0x24')]=_0x2d84bd[_0x74c9('0x25')];_0x4870bc['queuecallerleaveAt']=_0x2d84bd[_0x74c9('0x25')];_0x4870bc[_0x74c9('0x26')]=0x1;_0x4870bc[_0x74c9('0x27')]=_0x2d84bd[_0x74c9('0x28')];_0x4870bc[_0x74c9('0x29')]=_0x2d84bd[_0x74c9('0x2a')];_0x4870bc[_0x74c9('0x2b')]=_0x74c9('0x2c');_0x4870bc['exten']=_0x74c9('0x2d');_0x4870bc[_0x74c9('0x2e')]=0x0;_0x4870bc['assigned']=0x1;_0x4870bc[_0x74c9('0x2f')]=_0x2d84bd['membername'];_0x4870bc[_0x74c9('0x30')]=_0x74c9('0x31');return BPromise['resolve']()['then'](voiceQueueReport[_0x74c9('0x32')](_0x4870bc))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x33')));};exports['getContactRecallMe']=function(_0x1d11ac,_0xaff571){return BPromise['resolve']()[_0x74c9('0x9')](cmHopper[_0x74c9('0x34')](_0x1d11ac,_0xaff571))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x35')));};exports[_0x74c9('0x36')]=function(_0x4ff296){return BPromise['resolve']()[_0x74c9('0x9')](cmHopper[_0x74c9('0x17')](_0x4ff296,!![],!![]))[_0x74c9('0xb')](loggerCatch(_0x74c9('0x37')));};
\ No newline at end of file
index b5550f7..31e2d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed1=['countagentrejectretry','Global','active','scheduledat','add','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','queue','interface','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','not_inuse','push','getDiff','seconds','ListId','CampaignId','filterKey','idContact','campaigntype','membername','countcongestionretry','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','noanswer','keys','toLowerCase','variables','buildNoAnswerEventPayload','util','lodash','moment','../../../../config/logger','preview','env','127.0.0.1','milliseconds','diff','logger','info','inspect','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','monitor_format','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','error','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','endtime','logAgent','starttime','logLookAgent','logCustomer','ringtime','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','originate','channelAgent','xcally-motion-preview','from-sip','timeout','totalGlobal','countbusyretry'];(function(_0x52aef9,_0x165c5c){var _0x2343a7=function(_0x1f6a04){while(--_0x1f6a04){_0x52aef9['push'](_0x52aef9['shift']());}};_0x2343a7(++_0x165c5c);}(_0x8ed1,0xce));var _0x18ed=function(_0x51667b,_0x4409ec){_0x51667b=_0x51667b-0x0;var _0x3ec7ff=_0x8ed1[_0x51667b];return _0x3ec7ff;};'use strict';var util=require(_0x18ed('0x0'));var _=require(_0x18ed('0x1'));var moment=require(_0x18ed('0x2'));var logger=require(_0x18ed('0x3'))(_0x18ed('0x4'));var ipAgi=process[_0x18ed('0x5')]['XCALLY_IP_AGI']||_0x18ed('0x6');function getSeconds(_0x1c16a0,_0x377958){var _0x4886ba=moment(_0x1c16a0)['milliseconds'](0x0);var _0x36b2c4=moment(_0x377958)[_0x18ed('0x7')](0x0);return _0x4886ba[_0x18ed('0x8')](_0x36b2c4,'seconds');}exports['loggerCatch']=function(_0x24aa94){return function(_0x4de9ac){logger['error'](_0x24aa94,util['inspect'](_0x4de9ac,{'showHidden':![],'depth':null}));};};exports[_0x18ed('0x9')]=function(_0x443b46,_0x1ba811){logger[_0x18ed('0xa')](_0x443b46,util[_0x18ed('0xb')](_0x1ba811,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x38c0cb,_0x1590e8){logger['error'](_0x38c0cb,util['inspect'](_0x1590e8,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x2b29c7){return function(_0x244cc0){logger[_0x18ed('0xa')](_0x2b29c7,util[_0x18ed('0xb')](_0x244cc0,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x26d6a5,_0x22ddd8,_0x4eadd3){return{'message':_0x26d6a5,'unlock':_0x22ddd8,'active':_0x4eadd3};};exports[_0x18ed('0xc')]=function(_0xd084fc,_0x3bd369,_0x8421f){if(!_[_0x18ed('0xd')](_0x8421f)&&_0x18ed('0xe')===typeof _0x8421f&&!_['isEmpty'](_0x8421f)){if(!_[_0x18ed('0xd')](_0x3bd369)&&_0x18ed('0xe')===typeof _0x3bd369&&!_[_0x18ed('0xf')](_0x3bd369)){return util[_0x18ed('0x10')](_0x18ed('0x11'),_0x3bd369,_0x8421f);}return util[_0x18ed('0x10')](_0x18ed('0x11'),_0x8421f,_0x8421f);}if(!_[_0x18ed('0xd')](_0xd084fc)&&_0x18ed('0xe')===typeof _0xd084fc&&!_['isEmpty'](_0xd084fc)){return _0xd084fc;}return _0x18ed('0x12');};exports['isActive']=function(_0x2f1c5){if(_[_0x18ed('0x13')](_0x2f1c5)){return![];}return _0x2f1c5;};exports[_0x18ed('0x14')]=function(_0x182c06,_0x250807,_0x428223,_0xfda2e4,_0x21d916,_0x2091da){var _0x566cb1={'XMD-QUEUE':_0x250807[_0x18ed('0x15')]?_0x250807[_0x18ed('0x15')][_0x18ed('0x16')]:'','XMD-CALLERID':_0xfda2e4,'XMD-CALLERID-PREVIEW':_0x2091da?util[_0x18ed('0x10')](_0x18ed('0x11'),_0x2091da[_0x18ed('0x17')],_0x2091da[_0x18ed('0x18')]):_0xfda2e4,'XMD-DIALID':_0x21d916,'XMD-CONTACTID':_0x250807[_0x18ed('0x19')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0xfda2e4,'XMD-VOICEQUEUEID':_0x250807[_0x18ed('0x1a')],'XMD-DIALCHANNEL':_0x428223,'XMD-DIALTIMEOUT':_0x182c06[_0x18ed('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0x18ed('0x10')]('\x22rtTxX%s%s\x22',_0x182c06['dialQueueProject2']?'g':'',_[_0x18ed('0xf')](_0x182c06[_0x18ed('0x1c')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x182c06['dialPreviewUrl']||'','XMD-AGI':_0x182c06[_0x18ed('0x1d')]?util[_0x18ed('0x10')](_0x18ed('0x1e'),ipAgi,_0x182c06['dialQueueProject']):_0x18ed('0x1f'),'XMD-AGIAFTER':_0x182c06['dialQueueProject2']?util[_0x18ed('0x10')](_0x18ed('0x1e'),ipAgi,_0x182c06[_0x18ed('0x20')]):_0x18ed('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x2091da?_0x2091da[_0x18ed('0x21')]:'','XMD-ORIGINATECALLERIDNAME':_0x2091da?_0x2091da[_0x18ed('0x22')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x18ed('0x23')};if(!_[_0x18ed('0xf')](_0x182c06[_0x18ed('0x1c')])){_0x566cb1[util['format']('%s',_0x18ed('0x24'))]=_0x182c06[_0x18ed('0x1c')];_0x566cb1[util['format']('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x21d916;}if(_0x250807&&_0x250807[_0x18ed('0x25')]){for(var _0x33ece7 in _0x250807[_0x18ed('0x25')]){if(_0x250807[_0x18ed('0x25')]['hasOwnProperty'](_0x33ece7)){if(!_[_0x18ed('0x13')](_0x250807['Contact'][_0x33ece7])&&_0x33ece7!=='id'&&_0x33ece7!==_0x18ed('0x26')&&_0x33ece7!==_0x18ed('0x27')&&_0x33ece7!==_0x18ed('0x28')){_0x566cb1[util[_0x18ed('0x10')](_0x18ed('0x29'),_0x18ed('0x2a'),_[_0x18ed('0x2b')](_0x33ece7))]=_0x250807[_0x18ed('0x25')][_0x33ece7];}}}}return _0x566cb1;};exports['toLowerVariables']=function(_0x14620f){var _0x4b14b5={};for(var _0x494308 in _0x14620f){if(_0x14620f[_0x18ed('0x2c')](_0x494308)){_0x4b14b5[util[_0x18ed('0x10')]('%s',_[_0x18ed('0x2d')](_0x494308))]=_0x14620f[_0x494308];}}return{'variables':_0x4b14b5};};exports[_0x18ed('0x2e')]=function(_0x3fba90,_0x45d71d){if(!_[_0x18ed('0x13')](_0x3fba90)){if(_0x3fba90[_0x18ed('0x2c')](_0x18ed('0x2f'))){if(_0x3fba90[_0x18ed('0x2f')]>0x0){_0x3fba90[_0x18ed('0x2f')]-=0x1;}else{logger['error'](_0x18ed('0x30'),_0x45d71d);}}}else{logger[_0x18ed('0x31')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x45d71d);}};exports[_0x18ed('0x32')]=function(_0x411633){var _0x2015bd=moment()['format'](_0x18ed('0x33'));_0x411633[_0x18ed('0x34')]=0xd;_0x411633[_0x18ed('0x35')]=_0x18ed('0x36');_0x411633['starttime']=_0x2015bd;_0x411633[_0x18ed('0x37')]=_0x2015bd;_0x411633[_0x18ed('0x38')]=_0x2015bd;};exports[_0x18ed('0x39')]=function(_0x2c6e8f,_0x48433a,_0x3a6306){var _0x4087e3=moment()[_0x18ed('0x10')](_0x18ed('0x33'));_0x2c6e8f[_0x18ed('0x34')]=_0x48433a;_0x2c6e8f[_0x18ed('0x35')]=_0x3a6306;_0x2c6e8f[_0x18ed('0x37')]=_0x4087e3;_0x2c6e8f['ringtime']=getSeconds(_0x2c6e8f[_0x18ed('0x37')],_0x2c6e8f[_0x18ed('0x3a')]);};exports[_0x18ed('0x3b')]=function(_0x274c40,_0x4ee3e2,_0x2d0363){_0x274c40['membername']=_0x4ee3e2;_0x274c40['UserId']=_0x2d0363;};exports[_0x18ed('0x3c')]=function(_0x536c53,_0x302a4a,_0x994fda){var _0xe1bc5f=moment()[_0x18ed('0x10')](_0x18ed('0x33'));_0x536c53[_0x18ed('0x34')]=_0x302a4a;_0x536c53['statedesc']=_0x994fda;_0x536c53[_0x18ed('0x37')]=_0x536c53['responsetime']?_0x536c53['responsetime']:_0xe1bc5f;_0x536c53[_0x18ed('0x38')]=_0x536c53[_0x18ed('0x38')]?_0x536c53[_0x18ed('0x38')]:_0xe1bc5f;_0x536c53[_0x18ed('0x3d')]=getSeconds(_0x536c53['responsetime']||0x0,_0x536c53[_0x18ed('0x3a')]||0x0);_0x536c53[_0x18ed('0x3e')]=_0x536c53[_0x18ed('0x3f')]?getSeconds(_0x536c53[_0x18ed('0x38')],_0x536c53['answertime']):0x0;};exports[_0x18ed('0x40')]=function(_0x26506c){return _0x26506c===_0x18ed('0x41');};exports[_0x18ed('0x42')]=function(_0x1a3678,_0x77cd48,_0x42e586,_0x4162e9,_0x3b9ace){var _0x19d3b8=_0x4162e9?'RECALL':_0x1a3678[_0x18ed('0x17')];_0x19d3b8=_0x3b9ace?_0x18ed('0x43'):_0x19d3b8;return{'actionid':_0x1a3678[_0x18ed('0x44')],'action':_0x18ed('0x45'),'channel':_0x1a3678[_0x18ed('0x46')],'callerid':util['format'](_0x18ed('0x11'),_0x19d3b8,_0x1a3678[_0x18ed('0x18')]),'Exten':_0x18ed('0x47'),'Context':_0x18ed('0x48'),'Priority':'1','variable':_0x42e586,'timeout':(_0x77cd48[_0x18ed('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1a3678['uniqueid']};};exports[_0x18ed('0x4a')]=function(_0x2ed3eb){return _0x2ed3eb[_0x18ed('0x4b')]+_0x2ed3eb['countcongestionretry']+_0x2ed3eb['countnoanswerretry']+_0x2ed3eb[_0x18ed('0x4c')]+_0x2ed3eb['countnosuchnumberretry'];};exports['cloneAction']=function(_0x116d14){var _0x2ebc1c=_['clone'](_0x116d14);_0x2ebc1c['state']=0xf;_0x2ebc1c[_0x18ed('0x35')]=_0x18ed('0x4d');return _0x2ebc1c;};exports['scheduledAt']=function(_0x3fa977,_0x97bf11,_0x11040a){var _0x404b01={};_0x404b01[_0x97bf11]=_0x3fa977[_0x97bf11];_0x404b01[_0x18ed('0x4e')]=![];_0x404b01[_0x18ed('0x4f')]=moment()[_0x18ed('0x50')](_0x11040a,'minutes')[_0x18ed('0x10')](_0x18ed('0x33'));_0x404b01['ContactId']=_0x3fa977[_0x18ed('0x19')];_0x404b01['ListId']=_0x3fa977['ListId'];_0x404b01['VoiceQueueId']=_0x3fa977[_0x18ed('0x1a')]||undefined;return _0x404b01;};exports['decrementTalkink']=function(_0xc5e526,_0x2893b8){if(!_[_0x18ed('0x13')](_0xc5e526)){if(_0xc5e526[_0x18ed('0x51')]>0x0){_0xc5e526['pTalking']-=0x1;}else{logger['error'](_0x2893b8,_0x18ed('0x52'));}}else{logger[_0x18ed('0x31')](_0x2893b8,_0x18ed('0x53'));}};exports[_0x18ed('0x54')]=function(_0x3ee3de){if(_0x3ee3de<=0x0){return!![];}return![];};function buildObj(_0xeef2c7,_0x4e1150,_0x4ab437){_0xeef2c7['lastevent']=_0x4e1150;_0xeef2c7[_0x18ed('0x16')]=_0xeef2c7[_0x18ed('0x55')];_0xeef2c7[_0x18ed('0x56')]=_0xeef2c7['channelAgent'];_0xeef2c7[_0x18ed('0x57')]=_0x18ed('0x58');if(_0x4ab437){_0xeef2c7['mandatoryDisposition']=_0x4ab437[_0x18ed('0x59')];}return _0xeef2c7;}exports[_0x18ed('0x5a')]=buildObj;exports[_0x18ed('0x5b')]=function(_0x748966){var _0x50b4cf={};_0x50b4cf['queue']=_0x748966[_0x18ed('0x55')];_0x50b4cf[_0x18ed('0x56')]=_0x748966[_0x18ed('0x46')];_0x50b4cf[_0x18ed('0x44')]=_0x748966['uniqueid'];return _0x50b4cf;};exports['agentReadyId']=function(_0x2fff2b){var _0x3e63e5=[];for(var _0x1c7843 in _0x2fff2b){if(_0x2fff2b[_0x18ed('0x2c')](_0x1c7843)){if(!_[_0x18ed('0x13')](_0x2fff2b[_0x1c7843])&&_0x2fff2b[_0x1c7843][_0x18ed('0x34')]===_0x18ed('0x5c')&&_0x2fff2b[_0x1c7843]['status']==='reachable'){_0x3e63e5[_0x18ed('0x5d')](_0x2fff2b[_0x1c7843]['id']);}}}return _0x3e63e5;};exports[_0x18ed('0x5e')]=function(_0x46641e){var _0x3ed448=moment()[_0x18ed('0x7')](0x0);var _0x1007f5=moment(_0x46641e)['milliseconds'](0x0);return _0x3ed448[_0x18ed('0x8')](_0x1007f5,_0x18ed('0x5f'));};exports['createBody']=function(_0x2a4a62){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2a4a62[_0x18ed('0x19')],'ListId':_0x2a4a62[_0x18ed('0x60')],'VoiceQueueId':_0x2a4a62[_0x18ed('0x1a')]||undefined,'CampaignId':_0x2a4a62[_0x18ed('0x61')]||undefined};};exports[_0x18ed('0x62')]=function(_0x5202d9){if(_0x5202d9===_0x18ed('0x44')||_0x5202d9===_0x18ed('0x63')||_0x5202d9==='queue'||_0x5202d9==='type'||_0x5202d9===_0x18ed('0x64')||_0x5202d9==='dialAnswer'||_0x5202d9===_0x18ed('0x65')||_0x5202d9===_0x18ed('0x46')||_0x5202d9===_0x18ed('0x17')||_0x5202d9===_0x18ed('0x4e')||_0x5202d9===_0x18ed('0x18')||_0x5202d9===_0x18ed('0x4f')||_0x5202d9==='countbusyretry'||_0x5202d9===_0x18ed('0x66')||_0x5202d9===_0x18ed('0x67')||_0x5202d9===_0x18ed('0x68')||_0x5202d9===_0x18ed('0x69')||_0x5202d9===_0x18ed('0x6a')||_0x5202d9===_0x18ed('0x6b')||_0x5202d9===_0x18ed('0x6c')||_0x5202d9===_0x18ed('0x19')||_0x5202d9===_0x18ed('0x60')||_0x5202d9==='UserId'||_0x5202d9===_0x18ed('0x1a')||_0x5202d9===_0x18ed('0x6d')||_0x5202d9===_0x18ed('0x6e')||_0x5202d9==='xmd-queue'||_0x5202d9===_0x18ed('0x6f')||_0x5202d9==='xmd-listid'||_0x5202d9==='xmd-dialurl'||_0x5202d9===_0x18ed('0x70')||_0x5202d9===_0x18ed('0x71')||_0x5202d9===_0x18ed('0x72')||_0x5202d9===_0x18ed('0x73')||_0x5202d9===_0x18ed('0x74')||_0x5202d9===_0x18ed('0x75')||_0x5202d9===_0x18ed('0x76')||_0x5202d9===_0x18ed('0x77')||_0x5202d9==='xmd-agi'||_0x5202d9===_0x18ed('0x78')||_0x5202d9===_0x18ed('0x79')||_0x5202d9===_0x18ed('0x7a')||_0x5202d9===_0x18ed('0x7b')||_0x5202d9===_0x18ed('0x7c')||_0x5202d9===_0x18ed('0x7d')||_0x5202d9===_0x18ed('0x7e')||_0x5202d9===_0x18ed('0x7f')||_0x5202d9===_0x18ed('0x78')||_0x5202d9==='rtpaudioqosbridged'||_0x5202d9===_0x18ed('0x7a')||_0x5202d9===_0x18ed('0x7b')||_0x5202d9===_0x18ed('0x7c')||_0x5202d9===_0x18ed('0x7d')||_0x5202d9===_0x18ed('0x7e')||_0x5202d9==='rtpaudioqosrttbridged'||_0x5202d9===_0x18ed('0x80')||_0x5202d9===_0x18ed('0x81')||_0x5202d9===_0x18ed('0x34')||_0x5202d9===_0x18ed('0x35')){return![];}return!![];};exports[_0x18ed('0x82')]=function(_0x114bcc,_0x10ea87){var _0x2fdf54,_0x4c8c3d,_0x4addcc;if(_0x10ea87<=0x0){_0x10ea87=0x1;}_0x2fdf54=new RegExp(_0x18ed('0x83')+_0x10ea87+'}$');_0x4c8c3d=Math['pow'](0xa,_0x10ea87-0x1);_0x4addcc=Math[_0x18ed('0x84')](0xa,_0x10ea87)-0x1;return util[_0x18ed('0x10')]('%s',_['replace'](_0x114bcc,_0x2fdf54,_[_0x18ed('0x85')](_0x4c8c3d,_0x4addcc)));};exports[_0x18ed('0x86')]=function(_0x301eaa){var _0x53575c=_0x301eaa[_0x18ed('0x87')](/"(.*?)"/);return _0x53575c?_0x53575c[0x1]:_0x301eaa;};exports['extractCalleridNumber']=function(_0xa9b390){var _0x3ba362=_0xa9b390[_0x18ed('0x87')](/<(.*?)>/);return _0x3ba362?_0x3ba362[0x1]:_0xa9b390;};function buildNoAnswerEventPayload(_0x106431,_0x4f7184){var _0x1e5e10=buildObj(_0x106431,_0x18ed('0x88'));if(!_['isEmpty'](_0x4f7184['variables'])){Object[_0x18ed('0x89')](_0x4f7184['variables'])['forEach'](function(_0x16b63b){_0x1e5e10[_0x16b63b[_0x18ed('0x8a')]()]=_0x4f7184[_0x18ed('0x8b')][_0x16b63b];});}return _0x1e5e10;}exports[_0x18ed('0x8c')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xac65=['starttime','responsetime','endtime','logLookAgent','membername','UserId','logCustomer','statedesc','answertime','isFailure','RECALL','uniqueid','originate','calleridnum','from-sip','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','scheduledat','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','channelAgent','motionChannel','voice','mandatoryDisposition','buildObj','queue','not_inuse','getDiff','CampaignId','idContact','type','campaigntype','dialAnswer','active','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','keys','variables','moment','../../../../config/logger','preview','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','inspect','logger','logger2','info','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','addVariables','Queue','name','calleridname','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','createdAt','updatedAt','%s%s','XMD-','toUpper','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state'];(function(_0x42db5e,_0x27dfcf){var _0x190f86=function(_0x538cee){while(--_0x538cee){_0x42db5e['push'](_0x42db5e['shift']());}};_0x190f86(++_0x27dfcf);}(_0xac65,0xe1));var _0x5ac6=function(_0x48e848,_0x4a8004){_0x48e848=_0x48e848-0x0;var _0x257ccc=_0xac65[_0x48e848];return _0x257ccc;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x5ac6('0x0'));var logger=require(_0x5ac6('0x1'))(_0x5ac6('0x2'));var ipAgi=process['env'][_0x5ac6('0x3')]||_0x5ac6('0x4');function getSeconds(_0x37dc7f,_0x2c8d39){var _0x288612=moment(_0x37dc7f)['milliseconds'](0x0);var _0x19fddf=moment(_0x2c8d39)[_0x5ac6('0x5')](0x0);return _0x288612[_0x5ac6('0x6')](_0x19fddf,_0x5ac6('0x7'));}exports['loggerCatch']=function(_0x2af780){return function(_0x2d47d6){logger[_0x5ac6('0x8')](_0x2af780,util[_0x5ac6('0x9')](_0x2d47d6,{'showHidden':![],'depth':null}));};};exports[_0x5ac6('0xa')]=function(_0x5723d9,_0x29e743){logger['info'](_0x5723d9,util[_0x5ac6('0x9')](_0x29e743,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0xc4da31,_0x37c384){logger[_0x5ac6('0x8')](_0xc4da31,util[_0x5ac6('0x9')](_0x37c384,{'showHidden':![],'depth':null}));};exports[_0x5ac6('0xb')]=function(_0x4fcccd){return function(_0x49517f){logger[_0x5ac6('0xc')](_0x4fcccd,util['inspect'](_0x49517f,{'showHidden':![],'depth':null}));};};exports[_0x5ac6('0xd')]=function(_0x26e034,_0x130eb2,_0x3f1220){return{'message':_0x26e034,'unlock':_0x130eb2,'active':_0x3f1220};};exports[_0x5ac6('0xe')]=function(_0x561c56,_0x299180,_0xf454b7){if(!_[_0x5ac6('0xf')](_0xf454b7)&&_0x5ac6('0x10')===typeof _0xf454b7&&!_['isEmpty'](_0xf454b7)){if(!_['isUndefined'](_0x299180)&&'string'===typeof _0x299180&&!_[_0x5ac6('0x11')](_0x299180)){return util[_0x5ac6('0x12')](_0x5ac6('0x13'),_0x299180,_0xf454b7);}return util['format'](_0x5ac6('0x13'),_0xf454b7,_0xf454b7);}if(!_[_0x5ac6('0xf')](_0x561c56)&&'string'===typeof _0x561c56&&!_[_0x5ac6('0x11')](_0x561c56)){return _0x561c56;}return'\x22\x22\x20<>';};exports[_0x5ac6('0x14')]=function(_0x152f36){if(_[_0x5ac6('0x15')](_0x152f36)){return![];}return _0x152f36;};exports[_0x5ac6('0x16')]=function(_0x14466f,_0x3c2d20,_0x21959c,_0x55492f,_0x56833f,_0x11c69a){var _0x37506e={'XMD-QUEUE':_0x3c2d20[_0x5ac6('0x17')]?_0x3c2d20[_0x5ac6('0x17')][_0x5ac6('0x18')]:'','XMD-CALLERID':_0x55492f,'XMD-CALLERID-PREVIEW':_0x11c69a?util[_0x5ac6('0x12')](_0x5ac6('0x13'),_0x11c69a[_0x5ac6('0x19')],_0x11c69a['calleridnum']):_0x55492f,'XMD-DIALID':_0x56833f,'XMD-CONTACTID':_0x3c2d20[_0x5ac6('0x1a')],'XMD-CDRTYPE':_0x5ac6('0x1b'),'CALLERID(all)':_0x55492f,'XMD-VOICEQUEUEID':_0x3c2d20[_0x5ac6('0x1c')],'XMD-DIALCHANNEL':_0x21959c,'XMD-DIALTIMEOUT':_0x14466f[_0x5ac6('0x1d')]||0x1e,'XMD-DIALOPTIONS':util[_0x5ac6('0x12')](_0x5ac6('0x1e'),_0x14466f[_0x5ac6('0x1f')]?'g':'',_['isEmpty'](_0x14466f[_0x5ac6('0x20')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x14466f['dialPreviewUrl']||'','XMD-AGI':_0x14466f[_0x5ac6('0x21')]?util['format'](_0x5ac6('0x22'),ipAgi,_0x14466f[_0x5ac6('0x21')]):'NONE','XMD-AGIAFTER':_0x14466f[_0x5ac6('0x1f')]?util[_0x5ac6('0x12')](_0x5ac6('0x22'),ipAgi,_0x14466f['dialQueueProject2']):_0x5ac6('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x11c69a?_0x11c69a[_0x5ac6('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x11c69a?_0x11c69a[_0x5ac6('0x25')]:'','XMD-DESTINATION':_0x5ac6('0x26'),'SIPADDHEADER':_0x5ac6('0x27')};if(!_[_0x5ac6('0x11')](_0x14466f[_0x5ac6('0x20')])){_0x37506e[util[_0x5ac6('0x12')]('%s',_0x5ac6('0x28'))]=_0x14466f[_0x5ac6('0x20')];_0x37506e[util[_0x5ac6('0x12')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x56833f;}if(_0x3c2d20&&_0x3c2d20[_0x5ac6('0x29')]){for(var _0x2953c1 in _0x3c2d20[_0x5ac6('0x29')]){if(_0x3c2d20[_0x5ac6('0x29')][_0x5ac6('0x2a')](_0x2953c1)){if(!_[_0x5ac6('0x15')](_0x3c2d20[_0x5ac6('0x29')][_0x2953c1])&&_0x2953c1!=='id'&&_0x2953c1!=='tags'&&_0x2953c1!==_0x5ac6('0x2b')&&_0x2953c1!==_0x5ac6('0x2c')){_0x37506e[util[_0x5ac6('0x12')](_0x5ac6('0x2d'),_0x5ac6('0x2e'),_[_0x5ac6('0x2f')](_0x2953c1))]=_0x3c2d20[_0x5ac6('0x29')][_0x2953c1];}}}}return _0x37506e;};exports['toLowerVariables']=function(_0x263692){var _0x39f83c={};for(var _0x35b2de in _0x263692){if(_0x263692[_0x5ac6('0x2a')](_0x35b2de)){_0x39f83c[util['format']('%s',_[_0x5ac6('0x30')](_0x35b2de))]=_0x263692[_0x35b2de];}}return{'variables':_0x39f83c};};exports[_0x5ac6('0x31')]=function(_0x4d84f5,_0x5d3e54){if(!_['isNil'](_0x4d84f5)){if(_0x4d84f5[_0x5ac6('0x2a')](_0x5ac6('0x32'))){if(_0x4d84f5[_0x5ac6('0x32')]>0x0){_0x4d84f5[_0x5ac6('0x32')]-=0x1;}else{logger[_0x5ac6('0x8')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x5d3e54);}}}else{logger[_0x5ac6('0x8')](_0x5ac6('0x33'),_0x5d3e54);}};exports[_0x5ac6('0x34')]=function(_0x20354c){var _0x382e6f=moment()[_0x5ac6('0x12')](_0x5ac6('0x35'));_0x20354c[_0x5ac6('0x36')]=0xd;_0x20354c['statedesc']='Blacklist';_0x20354c[_0x5ac6('0x37')]=_0x382e6f;_0x20354c[_0x5ac6('0x38')]=_0x382e6f;_0x20354c[_0x5ac6('0x39')]=_0x382e6f;};exports['logAgent']=function(_0x455362,_0x388ced,_0x461f90){var _0x338b0b=moment()['format'](_0x5ac6('0x35'));_0x455362[_0x5ac6('0x36')]=_0x388ced;_0x455362['statedesc']=_0x461f90;_0x455362['responsetime']=_0x338b0b;_0x455362['ringtime']=getSeconds(_0x455362[_0x5ac6('0x38')],_0x455362[_0x5ac6('0x37')]);};exports[_0x5ac6('0x3a')]=function(_0x441c35,_0x4cfcdd,_0x4b9337){_0x441c35[_0x5ac6('0x3b')]=_0x4cfcdd;_0x441c35[_0x5ac6('0x3c')]=_0x4b9337;};exports[_0x5ac6('0x3d')]=function(_0xda45aa,_0x44cf8a,_0x1828c2){var _0x9a7866=moment()[_0x5ac6('0x12')](_0x5ac6('0x35'));_0xda45aa['state']=_0x44cf8a;_0xda45aa[_0x5ac6('0x3e')]=_0x1828c2;_0xda45aa['responsetime']=_0xda45aa[_0x5ac6('0x38')]?_0xda45aa[_0x5ac6('0x38')]:_0x9a7866;_0xda45aa['endtime']=_0xda45aa[_0x5ac6('0x39')]?_0xda45aa[_0x5ac6('0x39')]:_0x9a7866;_0xda45aa['ringtime']=getSeconds(_0xda45aa[_0x5ac6('0x38')]||0x0,_0xda45aa[_0x5ac6('0x37')]||0x0);_0xda45aa['talktime']=_0xda45aa['answertime']?getSeconds(_0xda45aa[_0x5ac6('0x39')],_0xda45aa[_0x5ac6('0x3f')]):0x0;};exports[_0x5ac6('0x40')]=function(_0x1df837){return _0x1df837==='Failure';};exports['variablesAction']=function(_0x3d29fa,_0x371705,_0xfa2fa9,_0x554730,_0x3f10a3){var _0x4ced3c=_0x554730?_0x5ac6('0x41'):_0x3d29fa[_0x5ac6('0x19')];_0x4ced3c=_0x3f10a3?'BOOKED':_0x4ced3c;return{'actionid':_0x3d29fa[_0x5ac6('0x42')],'action':_0x5ac6('0x43'),'channel':_0x3d29fa['channelAgent'],'callerid':util['format'](_0x5ac6('0x13'),_0x4ced3c,_0x3d29fa[_0x5ac6('0x44')]),'Exten':'xcally-motion-preview','Context':_0x5ac6('0x45'),'Priority':'1','variable':_0xfa2fa9,'timeout':(_0x371705['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3d29fa[_0x5ac6('0x42')]};};exports[_0x5ac6('0x46')]=function(_0x2ab260){return _0x2ab260[_0x5ac6('0x47')]+_0x2ab260[_0x5ac6('0x48')]+_0x2ab260[_0x5ac6('0x49')]+_0x2ab260[_0x5ac6('0x4a')]+_0x2ab260[_0x5ac6('0x4b')];};exports[_0x5ac6('0x4c')]=function(_0x338687){var _0x5b9397=_[_0x5ac6('0x4d')](_0x338687);_0x5b9397[_0x5ac6('0x36')]=0xf;_0x5b9397[_0x5ac6('0x3e')]=_0x5ac6('0x4e');return _0x5b9397;};exports[_0x5ac6('0x4f')]=function(_0x252a94,_0x11872f,_0x5708e7){var _0x31c134={};_0x31c134[_0x11872f]=_0x252a94[_0x11872f];_0x31c134['active']=![];_0x31c134[_0x5ac6('0x50')]=moment()['add'](_0x5708e7,_0x5ac6('0x51'))[_0x5ac6('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x31c134[_0x5ac6('0x1a')]=_0x252a94[_0x5ac6('0x1a')];_0x31c134[_0x5ac6('0x52')]=_0x252a94[_0x5ac6('0x52')];_0x31c134['VoiceQueueId']=_0x252a94[_0x5ac6('0x1c')]||undefined;return _0x31c134;};exports[_0x5ac6('0x53')]=function(_0x543875,_0x4b3921){if(!_[_0x5ac6('0x15')](_0x543875)){if(_0x543875['pTalking']>0x0){_0x543875[_0x5ac6('0x54')]-=0x1;}else{logger['error'](_0x4b3921,_0x5ac6('0x55'));}}else{logger[_0x5ac6('0x8')](_0x4b3921,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x5ac6('0x56')]=function(_0x544e09){if(_0x544e09<=0x0){return!![];}return![];};function buildObj(_0x4c393e,_0x35c4ee,_0x18f6e0){_0x4c393e['lastevent']=_0x35c4ee;_0x4c393e[_0x5ac6('0x18')]=_0x4c393e['queue'];_0x4c393e['interface']=_0x4c393e[_0x5ac6('0x57')];_0x4c393e[_0x5ac6('0x58')]=_0x5ac6('0x59');if(_0x18f6e0){_0x4c393e[_0x5ac6('0x5a')]=_0x18f6e0[_0x5ac6('0x5a')];}return _0x4c393e;}exports[_0x5ac6('0x5b')]=buildObj;exports['buildAcw']=function(_0x449da4){var _0x39e3c6={};_0x39e3c6['queue']=_0x449da4[_0x5ac6('0x5c')];_0x39e3c6['interface']=_0x449da4['channelAgent'];_0x39e3c6['uniqueid']=_0x449da4[_0x5ac6('0x42')];return _0x39e3c6;};exports['agentReadyId']=function(_0xc95aff){var _0x26f1f3=[];for(var _0x280c24 in _0xc95aff){if(_0xc95aff[_0x5ac6('0x2a')](_0x280c24)){if(!_[_0x5ac6('0x15')](_0xc95aff[_0x280c24])&&_0xc95aff[_0x280c24][_0x5ac6('0x36')]===_0x5ac6('0x5d')&&_0xc95aff[_0x280c24]['status']==='reachable'){_0x26f1f3['push'](_0xc95aff[_0x280c24]['id']);}}}return _0x26f1f3;};exports[_0x5ac6('0x5e')]=function(_0x6b2d0a){var _0x3edbee=moment()[_0x5ac6('0x5')](0x0);var _0x7f1b62=moment(_0x6b2d0a)[_0x5ac6('0x5')](0x0);return _0x3edbee[_0x5ac6('0x6')](_0x7f1b62,_0x5ac6('0x7'));};exports['createBody']=function(_0x231c46){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x231c46[_0x5ac6('0x1a')],'ListId':_0x231c46[_0x5ac6('0x52')],'VoiceQueueId':_0x231c46[_0x5ac6('0x1c')]||undefined,'CampaignId':_0x231c46[_0x5ac6('0x5f')]||undefined};};exports['filterKey']=function(_0x50df03){if(_0x50df03===_0x5ac6('0x42')||_0x50df03===_0x5ac6('0x60')||_0x50df03===_0x5ac6('0x5c')||_0x50df03===_0x5ac6('0x61')||_0x50df03===_0x5ac6('0x62')||_0x50df03===_0x5ac6('0x63')||_0x50df03===_0x5ac6('0x3b')||_0x50df03===_0x5ac6('0x57')||_0x50df03===_0x5ac6('0x19')||_0x50df03===_0x5ac6('0x64')||_0x50df03===_0x5ac6('0x44')||_0x50df03===_0x5ac6('0x50')||_0x50df03===_0x5ac6('0x47')||_0x50df03===_0x5ac6('0x48')||_0x50df03===_0x5ac6('0x49')||_0x50df03===_0x5ac6('0x65')||_0x50df03==='callback'||_0x50df03===_0x5ac6('0x66')||_0x50df03===_0x5ac6('0x67')||_0x50df03===_0x5ac6('0x68')||_0x50df03===_0x5ac6('0x1a')||_0x50df03===_0x5ac6('0x52')||_0x50df03==='UserId'||_0x50df03==='VoiceQueueId'||_0x50df03===_0x5ac6('0x69')||_0x50df03===_0x5ac6('0x6a')||_0x50df03===_0x5ac6('0x6b')||_0x50df03===_0x5ac6('0x6c')||_0x50df03===_0x5ac6('0x6d')||_0x50df03===_0x5ac6('0x6e')||_0x50df03===_0x5ac6('0x6f')||_0x50df03===_0x5ac6('0x70')||_0x50df03===_0x5ac6('0x71')||_0x50df03===_0x5ac6('0x72')||_0x50df03===_0x5ac6('0x73')||_0x50df03===_0x5ac6('0x74')||_0x50df03===_0x5ac6('0x75')||_0x50df03===_0x5ac6('0x76')||_0x50df03===_0x5ac6('0x77')||_0x50df03===_0x5ac6('0x78')||_0x50df03===_0x5ac6('0x79')||_0x50df03===_0x5ac6('0x7a')||_0x50df03===_0x5ac6('0x7b')||_0x50df03===_0x5ac6('0x7c')||_0x50df03===_0x5ac6('0x7d')||_0x50df03===_0x5ac6('0x7e')||_0x50df03===_0x5ac6('0x7f')||_0x50df03===_0x5ac6('0x78')||_0x50df03===_0x5ac6('0x79')||_0x50df03==='rtpaudioqosjitter'||_0x50df03===_0x5ac6('0x7b')||_0x50df03==='rtpaudioqosloss'||_0x50df03===_0x5ac6('0x7d')||_0x50df03===_0x5ac6('0x7e')||_0x50df03===_0x5ac6('0x7f')||_0x50df03===_0x5ac6('0x80')||_0x50df03===_0x5ac6('0x81')||_0x50df03==='state'||_0x50df03===_0x5ac6('0x3e')){return![];}return!![];};exports[_0x5ac6('0x82')]=function(_0x25d094,_0x3f4b04){var _0xcf743c,_0x31b763,_0x41466c;if(_0x3f4b04<=0x0){_0x3f4b04=0x1;}_0xcf743c=new RegExp(_0x5ac6('0x83')+_0x3f4b04+'}$');_0x31b763=Math[_0x5ac6('0x84')](0xa,_0x3f4b04-0x1);_0x41466c=Math[_0x5ac6('0x84')](0xa,_0x3f4b04)-0x1;return util[_0x5ac6('0x12')]('%s',_[_0x5ac6('0x85')](_0x25d094,_0xcf743c,_[_0x5ac6('0x86')](_0x31b763,_0x41466c)));};exports[_0x5ac6('0x87')]=function(_0x329b87){var _0x5c2c0f=_0x329b87[_0x5ac6('0x88')](/"(.*?)"/);return _0x5c2c0f?_0x5c2c0f[0x1]:_0x329b87;};exports[_0x5ac6('0x89')]=function(_0x5af827){var _0x40c45d=_0x5af827[_0x5ac6('0x88')](/<(.*?)>/);return _0x40c45d?_0x40c45d[0x1]:_0x5af827;};function buildNoAnswerEventPayload(_0x33bbe2,_0x31c9aa){var _0x2076cc=buildObj(_0x33bbe2,'noanswer');if(!_[_0x5ac6('0x11')](_0x31c9aa['variables'])){Object[_0x5ac6('0x8a')](_0x31c9aa[_0x5ac6('0x8b')])['forEach'](function(_0x1b5a35){_0x2076cc[_0x1b5a35['toLowerCase']()]=_0x31c9aa[_0x5ac6('0x8b')][_0x1b5a35];});}return _0x2076cc;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index b13d502..abcfde0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x926d=['boolean','reload','voicechannel','voicequeuechannelhangup','string','queueremove','queuepause'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x926d,0x177));var _0xd926=function(_0x51b2f7,_0x303ad2){_0x51b2f7=_0x51b2f7-0x0;var _0x556d95=_0x926d[_0x51b2f7];return _0x556d95;};'use strict';exports['queueadd']={'queue':{'type':_0xd926('0x0'),'required':!![]},'interface':{'type':_0xd926('0x0'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xd926('0x1')]={'queue':{'type':_0xd926('0x0'),'required':!![]},'interface':{'type':_0xd926('0x0'),'required':!![]}};exports[_0xd926('0x2')]={'interface':{'type':_0xd926('0x0'),'required':!![]},'paused':{'type':_0xd926('0x3')},'reason':{'type':_0xd926('0x0'),'required':![]}};exports[_0xd926('0x4')]={'module':{'type':_0xd926('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xd926('0x0'),'required':!![]}};exports[_0xd926('0x5')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xd926('0x0')},'format':{'type':'string'},'mixmonitorid':{'type':_0xd926('0x0')}};exports[_0xd926('0x6')]={'uniqueid':{'type':_0xd926('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xd926('0x0'),'required':!![]},'exten':{'type':_0xd926('0x0'),'required':!![]},'context':{'type':_0xd926('0x0')}};
\ No newline at end of file
+var _0x4c91=['voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','boolean','queueremove','voicequeuechannel','voicechannel'];(function(_0x38fcbb,_0xd2b478){var _0x4bbb75=function(_0x3575d5){while(--_0x3575d5){_0x38fcbb['push'](_0x38fcbb['shift']());}};_0x4bbb75(++_0xd2b478);}(_0x4c91,0x15a));var _0x14c9=function(_0x2346f0,_0x48fbc6){_0x2346f0=_0x2346f0-0x0;var _0x5ab452=_0x4c91[_0x2346f0];return _0x5ab452;};'use strict';exports[_0x14c9('0x0')]={'queue':{'type':_0x14c9('0x1'),'required':!![]},'interface':{'type':_0x14c9('0x1'),'required':!![]},'membername':{'type':_0x14c9('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x14c9('0x2'),'required':![]}};exports[_0x14c9('0x3')]={'queue':{'type':_0x14c9('0x1'),'required':!![]},'interface':{'type':_0x14c9('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x14c9('0x1'),'required':!![]},'paused':{'type':_0x14c9('0x2')},'reason':{'type':_0x14c9('0x1'),'required':![]}};exports['reload']={'module':{'type':'string','required':![]}};exports[_0x14c9('0x4')]={'uniqueid':{'type':_0x14c9('0x1'),'required':!![]}};exports[_0x14c9('0x5')]={'uniqueid':{'type':_0x14c9('0x1'),'required':!![]},'filename':{'type':_0x14c9('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x14c9('0x1')}};exports[_0x14c9('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x14c9('0x7')]={'uniqueid':{'type':_0x14c9('0x1'),'required':!![]},'exten':{'type':_0x14c9('0x1'),'required':!![]},'context':{'type':_0x14c9('0x1')}};
\ No newline at end of file
index edcaa61..e131408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59f2=['zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','name','interface','SIP/%s','answered','sumDuration','sumBillable','ivrAnswerCallsDay','isEmpty','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isNil','isUndefined','telephones','initTrunks','initVoiceQueues','initTriggers','zendeskAccounts','initSalesforceAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','unmanaged','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','total','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','agents','trunks','voiceQueues','triggers','templates','outbound','voiceExtensions','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts'];(function(_0xc923,_0x3c0d55){var _0x2ff917=function(_0x1f5fbc){while(--_0x1f5fbc){_0xc923['push'](_0xc923['shift']());}};_0x2ff917(++_0x3c0d55);}(_0x59f2,0xb3));var _0x259f=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x59f2[_0x173441];return _0x2423a8;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');var Agent=require(_0x259f('0x0'));var Telephone=require('../model/telephone');var Trunk=require(_0x259f('0x1'));var VoiceQueue=require(_0x259f('0x2'));var Trigger=require(_0x259f('0x3'));var Template=require(_0x259f('0x4'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0x259f('0x5'));var ZendeskAccount=require(_0x259f('0x6'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x259f('0x7'));var ZohoAccount=require(_0x259f('0x8'));var DeskAccount=require(_0x259f('0x9'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x259f('0xa'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x259f('0xb'));var FaxAccount=require(_0x259f('0xc'));var Realtime=function(){this[_0x259f('0xd')]={};this['telephones']={};this[_0x259f('0xe')]={};this[_0x259f('0xf')]={};this[_0x259f('0x10')]={};this['campaigns']={};this[_0x259f('0x11')]={};this[_0x259f('0x12')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x259f('0x13')]={};this['channels']={};this['queueChannels']={};this[_0x259f('0x14')]={};this[_0x259f('0x15')]={};this['settings']={};this['zendeskAccounts']={};this[_0x259f('0x16')]={};this[_0x259f('0x17')]={};this[_0x259f('0x18')]={};this[_0x259f('0x19')]={};this[_0x259f('0x1a')]={};this[_0x259f('0x1b')]={};this[_0x259f('0x1c')]={};this[_0x259f('0x1d')]={};this[_0x259f('0x1e')]={};this[_0x259f('0x1f')]={};};function freeIsNotKey(_0x447145,_0x7969de,_0x109dfe){var _0x3fe2ed=_[_0x259f('0x20')](_0x447145,function(_0x3303ca,_0x3e9ecf){return _0x3303ca[_0x109dfe];});for(var _0x6daf07 in _0x7969de){if(_0x7969de[_0x259f('0x21')](_0x6daf07)){if(!_0x3fe2ed[_0x6daf07]){delete _0x7969de[_0x6daf07];}}}}function freeIsNotKeySip(_0x39e4ab,_0x17eb71){var _0x5b49de=_[_0x259f('0x20')](_0x39e4ab,function(_0x4343b5,_0x5c2fa2){return util[_0x259f('0x22')]('SIP/%s',_0x4343b5[_0x259f('0x23')]);});for(var _0x225d21 in _0x17eb71){if(_0x17eb71['hasOwnProperty'](_0x225d21)){if(!_0x5b49de[_0x225d21]){delete _0x17eb71[_0x225d21];}}}}function freeIsNotKeyAgent(_0x1edbfc,_0x395a9e){var _0x500e7d=_['mapKeys'](_0x1edbfc,function(_0x33b646,_0x3832b0){var _0x163d83=_['isNil'](_0x33b646[_0x259f('0x24')])?util['format'](_0x259f('0x25'),_0x33b646['name']):_0x33b646[_0x259f('0x24')];return _0x163d83;});for(var _0x1562c6 in _0x395a9e){if(_0x395a9e[_0x259f('0x21')](_0x1562c6)){if(!_0x500e7d[_0x1562c6]){delete _0x395a9e[_0x1562c6];}}}}function clearVoiceCallReports(_0x980dea){_0x980dea['total']=0x0;_0x980dea[_0x259f('0x26')]=0x0;_0x980dea['sumHoldTime']=0x0;_0x980dea[_0x259f('0x27')]=0x0;_0x980dea[_0x259f('0x28')]=0x0;}function clearCampaigns(_0x549d37){if(!_['isEmpty'](_0x549d37)){for(var _0x208698 in _0x549d37){if(_0x549d37[_0x259f('0x21')](_0x208698)){_0x549d37[_0x208698]['ivrTotalCallsDays']=0x0;_0x549d37[_0x208698][_0x259f('0x29')]=0x0;}}}}function clearVoiceQueues(_0x42f9f8){if(!_[_0x259f('0x2a')](_0x42f9f8)){for(var _0x2f8b8e in _0x42f9f8){if(_0x42f9f8['hasOwnProperty'](_0x2f8b8e)){_0x42f9f8[_0x2f8b8e]['total']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x26')]=0x0;_0x42f9f8[_0x2f8b8e]['unmanaged']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2b')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2c')]=0x0;_0x42f9f8[_0x2f8b8e]['sumDuration']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x28')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2d')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2e')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2f')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x30')]=0x0;_0x42f9f8[_0x2f8b8e]['outboundNoSuchCallsDay']=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x31')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x32')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x33')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x34')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x35')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x36')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x37')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x2d')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x38')]=0x0;_0x42f9f8[_0x2f8b8e][_0x259f('0x39')]=!![];}}}}Realtime['prototype'][_0x259f('0x3a')]=function(_0x4828f8,_0x5681c3){for(var _0x796d5b in _0x5681c3){if(_0x4828f8[_0x259f('0x21')](_0x796d5b)){_0x4828f8[_0x796d5b]=_0x5681c3[_0x796d5b];}}};Realtime[_0x259f('0x3b')][_0x259f('0x3c')]=function(){var _0x47420b=this;return function(_0x2782f3){if(_0x2782f3){freeIsNotKeyAgent(_0x2782f3,_0x47420b[_0x259f('0xd')]);for(var _0x37e120=0x0,_0x382e0f={},_0x41169e={};_0x37e120<_0x2782f3[_0x259f('0x3d')];_0x37e120+=0x1){_0x382e0f=_0x2782f3[_0x37e120];var _0x170e55=_[_0x259f('0x3e')](_0x382e0f[_0x259f('0x24')])?util[_0x259f('0x22')]('SIP/%s',_0x382e0f[_0x259f('0x23')]):_0x382e0f[_0x259f('0x24')];if(_[_0x259f('0x3f')](_0x47420b[_0x259f('0xd')][_0x170e55])){_0x47420b['agents'][_0x170e55]=new Agent(_0x382e0f);}else{_0x47420b[_0x259f('0x3a')](_0x47420b[_0x259f('0xd')][_0x170e55],_0x382e0f);}}}return _0x47420b['agents'];};};Realtime[_0x259f('0x3b')]['initTelephones']=function(){var _0x2260b2=this;return function(_0x4f8953){if(_0x4f8953){freeIsNotKeySip(_0x4f8953,_0x2260b2['telephones']);for(var _0x55bf9e=0x0,_0xf5b78f={},_0x4aadb7={};_0x55bf9e<_0x4f8953[_0x259f('0x3d')];_0x55bf9e+=0x1){_0xf5b78f=_0x4f8953[_0x55bf9e];if(_['isUndefined'](_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')](_0x259f('0x25'),_0xf5b78f[_0x259f('0x23')])])){_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')](_0x259f('0x25'),_0xf5b78f[_0x259f('0x23')])]=new Telephone(_0xf5b78f);}else{_0x2260b2[_0x259f('0x3a')](_0x2260b2[_0x259f('0x40')][util[_0x259f('0x22')]('SIP/%s',_0xf5b78f['name'])],_0xf5b78f);}}}return _0x2260b2['telephones'];};};Realtime[_0x259f('0x3b')][_0x259f('0x41')]=function(){var _0x2684d8=this;return function(_0x453501){if(_0x453501){freeIsNotKeySip(_0x453501,_0x2684d8[_0x259f('0xe')]);for(var _0x571f4a=0x0,_0x2340dc={},_0x367de5={};_0x571f4a<_0x453501['length'];_0x571f4a+=0x1){_0x2340dc=_0x453501[_0x571f4a];if(_[_0x259f('0x3f')](_0x2684d8[_0x259f('0xe')][util[_0x259f('0x22')](_0x259f('0x25'),_0x2340dc['name'])])){_0x2684d8[_0x259f('0xe')][util['format'](_0x259f('0x25'),_0x2340dc['name'])]=new Trunk(_0x2340dc);}else{_0x2684d8[_0x259f('0x3a')](_0x2684d8['trunks'][util[_0x259f('0x22')](_0x259f('0x25'),_0x2340dc[_0x259f('0x23')])],_0x2340dc);}}}return _0x2684d8[_0x259f('0xe')];};};Realtime[_0x259f('0x3b')][_0x259f('0x42')]=function(){var _0x38df39=this;return function(_0x5ccbe9){if(_0x5ccbe9){freeIsNotKey(_0x5ccbe9,_0x38df39[_0x259f('0xf')],_0x259f('0x23'));for(var _0xce869f=0x0,_0x2792d8={},_0x104878={};_0xce869f<_0x5ccbe9[_0x259f('0x3d')];_0xce869f+=0x1){_0x2792d8=_0x5ccbe9[_0xce869f];if(_['isUndefined'](_0x38df39[_0x259f('0xf')][_0x2792d8[_0x259f('0x23')]])){_0x38df39[_0x259f('0xf')][_0x2792d8[_0x259f('0x23')]]=new VoiceQueue(_0x2792d8);}else{_0x38df39[_0x259f('0x3a')](_0x38df39['voiceQueues'][_0x2792d8[_0x259f('0x23')]],_0x2792d8);}}}return _0x38df39[_0x259f('0xf')];};};Realtime['prototype'][_0x259f('0x43')]=function(){var _0x7f2793=this;return function(_0x3c53eb){if(_0x3c53eb){freeIsNotKey(_0x3c53eb,_0x7f2793['triggers'],'id');for(var _0x3f1db8=0x0,_0x4e21b7={},_0x5a4d1a={};_0x3f1db8<_0x3c53eb[_0x259f('0x3d')];_0x3f1db8+=0x1){_0x4e21b7=_0x3c53eb[_0x3f1db8];if(_[_0x259f('0x3f')](_0x7f2793[_0x259f('0x10')][_0x4e21b7['id']])){_0x7f2793[_0x259f('0x10')][_0x4e21b7['id']]=new Trigger(_0x4e21b7);}else{_0x7f2793[_0x259f('0x3a')](_0x7f2793['triggers'][_0x4e21b7['id']],_0x4e21b7);}}}return _0x7f2793[_0x259f('0x10')];};};Realtime['prototype']['initTemplates']=function(){var _0x12bef4=this;return function(_0x1ef562){if(_0x1ef562){freeIsNotKey(_0x1ef562,_0x12bef4[_0x259f('0x11')],'id');for(var _0x19537a=0x0,_0x1e6a3f={},_0xcbcb44={};_0x19537a<_0x1ef562[_0x259f('0x3d')];_0x19537a+=0x1){_0x1e6a3f=_0x1ef562[_0x19537a];if(_[_0x259f('0x3f')](_0x12bef4[_0x259f('0x11')][_0x1e6a3f['id']])){_0x12bef4[_0x259f('0x11')][_0x1e6a3f['id']]=new Template(_0x1e6a3f);}else{_0x12bef4[_0x259f('0x3a')](_0x12bef4['templates'][_0x1e6a3f['id']],_0x1e6a3f);}}}return _0x12bef4[_0x259f('0x11')];};};Realtime['prototype']['initZendeskAccounts']=function(){var _0x49683d=this;return function(_0x2351d9){if(_0x2351d9){freeIsNotKey(_0x2351d9,_0x49683d[_0x259f('0x44')],'id');for(var _0x2c7d6c=0x0,_0x2f0e4a={},_0x1a5fdf={};_0x2c7d6c<_0x2351d9[_0x259f('0x3d')];_0x2c7d6c+=0x1){_0x2f0e4a=_0x2351d9[_0x2c7d6c];if(_['isUndefined'](_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']])){_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']]=new ZendeskAccount(_0x2f0e4a);}else{_0x49683d[_0x259f('0x3a')](_0x49683d[_0x259f('0x44')][_0x2f0e4a['id']],_0x2f0e4a);}}}return _0x49683d[_0x259f('0x44')];};};Realtime[_0x259f('0x3b')][_0x259f('0x45')]=function(){var _0x5071a0=this;return function(_0x309b34){if(_0x309b34){freeIsNotKey(_0x309b34,_0x5071a0[_0x259f('0x16')],'id');for(var _0x4afd5d=0x0,_0x4a65f7={},_0x22a97f={};_0x4afd5d<_0x309b34['length'];_0x4afd5d+=0x1){_0x4a65f7=_0x309b34[_0x4afd5d];if(_[_0x259f('0x3f')](_0x5071a0['salesforceAccounts'][_0x4a65f7['id']])){_0x5071a0[_0x259f('0x16')][_0x4a65f7['id']]=new SalesforceAccount(_0x4a65f7);}else{_0x5071a0[_0x259f('0x3a')](_0x5071a0[_0x259f('0x16')][_0x4a65f7['id']],_0x4a65f7);}}}return _0x5071a0[_0x259f('0x16')];};};Realtime[_0x259f('0x3b')]['initFreshdeskAccounts']=function(){var _0x1b3b01=this;return function(_0xba0aaa){if(_0xba0aaa){freeIsNotKey(_0xba0aaa,_0x1b3b01[_0x259f('0x18')],'id');for(var _0x51f5b8=0x0,_0x2fcd7c={},_0x3f7f62={};_0x51f5b8<_0xba0aaa[_0x259f('0x3d')];_0x51f5b8+=0x1){_0x2fcd7c=_0xba0aaa[_0x51f5b8];if(_[_0x259f('0x3f')](_0x1b3b01['freshdeskAccounts'][_0x2fcd7c['id']])){_0x1b3b01['freshdeskAccounts'][_0x2fcd7c['id']]=new FreshdeskAccount(_0x2fcd7c);}else{_0x1b3b01['mergeFromDatabase'](_0x1b3b01[_0x259f('0x18')][_0x2fcd7c['id']],_0x2fcd7c);}}}return _0x1b3b01[_0x259f('0x18')];};};Realtime[_0x259f('0x3b')][_0x259f('0x46')]=function(){var _0x5ef02b=this;return function(_0x283c3c){if(_0x283c3c){freeIsNotKey(_0x283c3c,_0x5ef02b['zohoAccounts'],'id');for(var _0xf52776=0x0,_0x2c7f46={},_0x7003a5={};_0xf52776<_0x283c3c[_0x259f('0x3d')];_0xf52776+=0x1){_0x2c7f46=_0x283c3c[_0xf52776];if(_[_0x259f('0x3f')](_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']])){_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']]=new ZohoAccount(_0x2c7f46);}else{_0x5ef02b[_0x259f('0x3a')](_0x5ef02b[_0x259f('0x19')][_0x2c7f46['id']],_0x2c7f46);}}}return _0x5ef02b[_0x259f('0x19')];};};Realtime['prototype'][_0x259f('0x47')]=function(){var _0xe33bfb=this;return function(_0xc535de){if(_0xc535de){freeIsNotKey(_0xc535de,_0xe33bfb['deskAccounts'],'id');for(var _0x372fba=0x0,_0x3e2304={},_0x2b9f7b={};_0x372fba<_0xc535de[_0x259f('0x3d')];_0x372fba+=0x1){_0x3e2304=_0xc535de[_0x372fba];if(_[_0x259f('0x3f')](_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']])){_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']]=new DeskAccount(_0x3e2304);}else{_0xe33bfb[_0x259f('0x3a')](_0xe33bfb[_0x259f('0x1a')][_0x3e2304['id']],_0x3e2304);}}}return _0xe33bfb['deskAccounts'];};};Realtime[_0x259f('0x3b')][_0x259f('0x48')]=function(){var _0xb21fa1=this;return function(_0x2e789b){if(_0x2e789b){freeIsNotKey(_0x2e789b,_0xb21fa1[_0x259f('0x17')],'id');for(var _0x11c25c=0x0,_0x5a483b={},_0x420eb={};_0x11c25c<_0x2e789b[_0x259f('0x3d')];_0x11c25c+=0x1){_0x5a483b=_0x2e789b[_0x11c25c];if(_[_0x259f('0x3f')](_0xb21fa1[_0x259f('0x17')][_0x5a483b['id']])){_0xb21fa1[_0x259f('0x17')][_0x5a483b['id']]=new SugarcrmAccount(_0x5a483b);}else{_0xb21fa1['mergeFromDatabase'](_0xb21fa1['sugarcrmAccounts'][_0x5a483b['id']],_0x5a483b);}}}return _0xb21fa1[_0x259f('0x17')];};};Realtime[_0x259f('0x3b')]['initVtigerAccounts']=function(){var _0x3b177f=this;return function(_0x5b547e){if(_0x5b547e){freeIsNotKey(_0x5b547e,_0x3b177f[_0x259f('0x1b')],'id');for(var _0x29818e=0x0,_0x459460={},_0x9d1838={};_0x29818e<_0x5b547e[_0x259f('0x3d')];_0x29818e+=0x1){_0x459460=_0x5b547e[_0x29818e];if(_[_0x259f('0x3f')](_0x3b177f[_0x259f('0x1b')][_0x459460['id']])){_0x3b177f['vtigerAccounts'][_0x459460['id']]=new VtigerAccount(_0x459460);}else{_0x3b177f[_0x259f('0x3a')](_0x3b177f['vtigerAccounts'][_0x459460['id']],_0x459460);}}}return _0x3b177f[_0x259f('0x1b')];};};Realtime['prototype'][_0x259f('0x49')]=function(){var _0x56d0ca=this;return function(_0x111ecf){if(_0x111ecf){freeIsNotKey(_0x111ecf,_0x56d0ca[_0x259f('0x1c')],'id');for(var _0x3ebf66=0x0,_0x3c7e6a={},_0x1c45d4={};_0x3ebf66<_0x111ecf[_0x259f('0x3d')];_0x3ebf66+=0x1){_0x3c7e6a=_0x111ecf[_0x3ebf66];if(_[_0x259f('0x3f')](_0x56d0ca[_0x259f('0x1c')][_0x3c7e6a['id']])){_0x56d0ca[_0x259f('0x1c')][_0x3c7e6a['id']]=new ServicenowAccount(_0x3c7e6a);}else{_0x56d0ca['mergeFromDatabase'](_0x56d0ca['servicenowAccounts'][_0x3c7e6a['id']],_0x3c7e6a);}}}return _0x56d0ca[_0x259f('0x1c')];};};Realtime['prototype'][_0x259f('0x4a')]=function(){var _0x5770dd=this;return function(_0x5132cb){if(_0x5132cb){freeIsNotKey(_0x5132cb,_0x5770dd[_0x259f('0x1d')],'id');for(var _0x518591=0x0,_0x365748={},_0x44ac7c={};_0x518591<_0x5132cb[_0x259f('0x3d')];_0x518591+=0x1){_0x365748=_0x5132cb[_0x518591];if(_[_0x259f('0x3f')](_0x5770dd[_0x259f('0x1d')][_0x365748['id']])){_0x5770dd['dynamics365Accounts'][_0x365748['id']]=new Dynamics365Account(_0x365748);}else{_0x5770dd[_0x259f('0x3a')](_0x5770dd['dynamics365Accounts'][_0x365748['id']],_0x365748);}}}return _0x5770dd[_0x259f('0x1d')];};};Realtime[_0x259f('0x3b')][_0x259f('0x4b')]=function(){var _0xd9a191=this;return function(_0x9eee45){if(_0x9eee45){freeIsNotKey(_0x9eee45,_0xd9a191[_0x259f('0x1e')],'id');for(var _0x44c98f=0x0,_0x8a7ecc={},_0x3f2be9={};_0x44c98f<_0x9eee45[_0x259f('0x3d')];_0x44c98f+=0x1){_0x8a7ecc=_0x9eee45[_0x44c98f];if(_[_0x259f('0x3f')](_0xd9a191[_0x259f('0x1e')][_0x8a7ecc['id']])){_0xd9a191['freshsalesAccounts'][_0x8a7ecc['id']]=new FreshsalesAccount(_0x8a7ecc);}else{_0xd9a191[_0x259f('0x3a')](_0xd9a191['freshsalesAccounts'][_0x8a7ecc['id']],_0x8a7ecc);}}}return _0xd9a191['freshsalesAccounts'];};};Realtime['prototype'][_0x259f('0x4c')]=function(){var _0x46e478=this;return function(_0x167da2){for(var _0x32dca5=0x0;_0x32dca5<_0x167da2[_0x259f('0x3d')];_0x32dca5+=0x1){_[_0x259f('0x4d')](_0x46e478[_0x259f('0xf')][_0x167da2[_0x32dca5][_0x259f('0x23')]],_0x167da2[_0x32dca5]);}return _0x46e478['voiceQueues'];};};Realtime[_0x259f('0x3b')][_0x259f('0x4e')]=function(){var _0x30dff1=this;return function(_0x904173){clearVoiceQueues(_0x30dff1[_0x259f('0xf')]);if(_0x904173){_0x904173=_[_0x259f('0x4f')](_0x904173,_0x259f('0x50'));for(var _0x3306dd in _0x904173){if(_0x904173[_0x259f('0x21')](_0x3306dd)){var _0x4b3590={};for(var _0x4a4e05=0x0;_0x4a4e05<_0x904173[_0x3306dd][_0x259f('0x3d')];_0x4a4e05+=0x1){var _0x11804a=_0x904173[_0x3306dd][_0x4a4e05]['queue'];if(_0x30dff1[_0x259f('0xf')][_0x11804a]){if(_0x904173[_0x3306dd][_0x4a4e05]['queuecallerexit']){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x51')]+=0x1;}if(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x52')]){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x2b')]+=0x1;}_0x30dff1['voiceQueues'][_0x11804a]['sumHoldTime']+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x53')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x55')]),_0x259f('0x56'))||0x0;if(_0x4a4e05===_0x904173[_0x3306dd][_0x259f('0x3d')]-0x1){_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x27')]+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x57')]||_0x904173[_0x3306dd][_0x4a4e05]['queuecallerabandonAt']||_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x58')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x55')]),_0x259f('0x56'))||0x0;_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x59')]+=0x1;if(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x5a')]){_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x26')]+=0x1;_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x28')]+=moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x57')])[_0x259f('0x54')](moment(_0x904173[_0x3306dd][_0x4a4e05][_0x259f('0x53')]),_0x259f('0x56'))||0x0;}}else{_0x30dff1[_0x259f('0xf')][_0x11804a][_0x259f('0x27')]+=_0x30dff1['voiceQueues'][_0x11804a][_0x259f('0x2c')]||0x0;}}}}}}return _0x30dff1['voiceQueues'];};};Realtime[_0x259f('0x3b')][_0x259f('0x5b')]=function(){var _0x25364c=this;return function(_0x1b7742){clearVoiceCallReports(_0x25364c['outbound']);if(_0x1b7742){for(var _0x13621e=0x0;_0x13621e<_0x1b7742[_0x259f('0x3d')];_0x13621e+=0x1){_0x25364c[_0x259f('0x12')][_0x259f('0x59')]+=0x1;_0x25364c[_0x259f('0x12')][_0x259f('0x27')]+=_0x1b7742[_0x13621e][_0x259f('0x5c')];if(_0x1b7742[_0x13621e][_0x259f('0x5d')]===_0x259f('0x5e')){_0x25364c[_0x259f('0x12')][_0x259f('0x26')]+=0x1;_0x25364c[_0x259f('0x12')][_0x259f('0x2c')]+=_0x1b7742[_0x13621e][_0x259f('0x5c')]-_0x1b7742[_0x13621e][_0x259f('0x5f')]||0x0;_0x25364c[_0x259f('0x12')][_0x259f('0x28')]+=_0x1b7742[_0x13621e][_0x259f('0x5f')];}}}return _0x25364c[_0x259f('0x12')];};};Realtime['prototype'][_0x259f('0x60')]=function(){var _0x45a24e=this;return function(_0x21cda3){if(_0x21cda3){freeIsNotKey(_0x21cda3,_0x45a24e[_0x259f('0x61')],_0x259f('0x23'));for(var _0x2f96bd=0x0,_0x2e4958={};_0x2f96bd<_0x21cda3['length'];_0x2f96bd+=0x1){_0x2e4958=_0x21cda3[_0x2f96bd];if(_['isUndefined'](_0x45a24e[_0x259f('0x61')][_0x2e4958['name']])){_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]]=new Campaign(_0x2e4958);}else{_0x45a24e[_0x259f('0x3a')](_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]],_0x2e4958);_0x45a24e[_0x259f('0x61')][_0x2e4958[_0x259f('0x23')]]['dialQueueProject']=_0x2e4958[_0x259f('0x62')]?_0x2e4958[_0x259f('0x62')][_0x259f('0x23')]:undefined;}}}return _0x45a24e[_0x259f('0x61')];};};Realtime[_0x259f('0x3b')][_0x259f('0x63')]=function(){var _0x56b41e=this;return function(_0x351d6f){if(_0x351d6f){freeIsNotKey(_0x351d6f,_0x56b41e[_0x259f('0x13')],'id');for(var _0x6baa20=0x0,_0x4873c5={};_0x6baa20<_0x351d6f[_0x259f('0x3d')];_0x6baa20+=0x1){_0x4873c5=_0x351d6f[_0x6baa20];if(_[_0x259f('0x3f')](_0x56b41e[_0x259f('0x13')][_0x4873c5['id']])){_0x56b41e['voiceExtensions'][_0x4873c5['id']]=new VoiceExtension(_0x4873c5);}else{_0x56b41e['mergeFromDatabase'](_0x56b41e[_0x259f('0x13')][_0x4873c5['id']],_0x4873c5);}}}return _0x56b41e[_0x259f('0x13')];};};Realtime[_0x259f('0x3b')][_0x259f('0x64')]=function(){var _0x5289c3=this;return function(_0x33aa46){clearCampaigns(_0x5289c3[_0x259f('0x61')]);for(var _0x139d0e=0x0;_0x139d0e<_0x33aa46['length'];_0x139d0e+=0x1){_[_0x259f('0x4d')](_0x5289c3[_0x259f('0x61')][_0x33aa46[_0x139d0e][_0x259f('0x23')]],_0x33aa46[_0x139d0e]);}return _0x5289c3[_0x259f('0x61')];};};Realtime[_0x259f('0x3b')][_0x259f('0x65')]=function(){var _0x58f7b4=this;return function(_0x1d30f5){if(_0x1d30f5){freeIsNotKey(_0x1d30f5,_0x58f7b4[_0x259f('0x1f')],'id');for(var _0x4c72cf=0x0,_0x252bc6={},_0x19ce09={};_0x4c72cf<_0x1d30f5['length'];_0x4c72cf+=0x1){_0x252bc6=_0x1d30f5[_0x4c72cf];if(_['isUndefined'](_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']])){_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']]=new FaxAccount(_0x252bc6);}else{_0x58f7b4['mergeFromDatabase'](_0x58f7b4[_0x259f('0x1f')][_0x252bc6['id']],_0x252bc6);}}}return _0x58f7b4[_0x259f('0x1f')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x553f=['queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','util','lodash','moment','../model/agent','../model/telephone','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','agents','telephones','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','interface','name','answered','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isNil','SIP/%s','initTelephones','isUndefined','initTrunks','trunks','initVoiceQueues','triggers','initTemplates','initZendeskAccounts','initFreshdeskAccounts','zohoAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','sumHoldTime','queuecallerleaveAt','diff','queuecallerjoinAt','seconds'];(function(_0x46447b,_0x4d55ee){var _0x340425=function(_0x48662f){while(--_0x48662f){_0x46447b['push'](_0x46447b['shift']());}};_0x340425(++_0x4d55ee);}(_0x553f,0x1c0));var _0xf553=function(_0x23eca1,_0x4e5e3e){_0x23eca1=_0x23eca1-0x0;var _0x98b82f=_0x553f[_0x23eca1];return _0x98b82f;};'use strict';var util=require(_0xf553('0x0'));var _=require(_0xf553('0x1'));var moment=require(_0xf553('0x2'));var Agent=require(_0xf553('0x3'));var Telephone=require(_0xf553('0x4'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0xf553('0x5'));var Template=require('../model/template');var Campaign=require(_0xf553('0x6'));var VoiceExtension=require(_0xf553('0x7'));var ZendeskAccount=require(_0xf553('0x8'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0xf553('0x9'));var SugarcrmAccount=require(_0xf553('0xa'));var ZohoAccount=require(_0xf553('0xb'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xf553('0xc'));var ServicenowAccount=require(_0xf553('0xd'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xf553('0xe')]={};this[_0xf553('0xf')]={};this['trunks']={};this[_0xf553('0x10')]={};this['triggers']={};this[_0xf553('0x11')]={};this[_0xf553('0x12')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xf553('0x13')]={};this[_0xf553('0x14')]={};this[_0xf553('0x15')]={};this[_0xf553('0x16')]={};this[_0xf553('0x17')]={};this[_0xf553('0x18')]={};this[_0xf553('0x19')]={};this[_0xf553('0x1a')]={};this[_0xf553('0x1b')]={};this[_0xf553('0x1c')]={};this['zohoAccounts']={};this[_0xf553('0x1d')]={};this[_0xf553('0x1e')]={};this['servicenowAccounts']={};this[_0xf553('0x1f')]={};this[_0xf553('0x20')]={};this[_0xf553('0x21')]={};};function freeIsNotKey(_0x3197ea,_0x46674e,_0x2a2eed){var _0x4b4292=_[_0xf553('0x22')](_0x3197ea,function(_0x264bc1,_0x1290ee){return _0x264bc1[_0x2a2eed];});for(var _0x14ae9c in _0x46674e){if(_0x46674e[_0xf553('0x23')](_0x14ae9c)){if(!_0x4b4292[_0x14ae9c]){delete _0x46674e[_0x14ae9c];}}}}function freeIsNotKeySip(_0x53aae0,_0x1e321b){var _0x2e0749=_['mapKeys'](_0x53aae0,function(_0x58bd9d,_0x155c8f){return util[_0xf553('0x24')]('SIP/%s',_0x58bd9d['name']);});for(var _0x21c395 in _0x1e321b){if(_0x1e321b['hasOwnProperty'](_0x21c395)){if(!_0x2e0749[_0x21c395]){delete _0x1e321b[_0x21c395];}}}}function freeIsNotKeyAgent(_0x2cb77b,_0x2b6f93){var _0x2c1382=_[_0xf553('0x22')](_0x2cb77b,function(_0x2ad893,_0x242b60){var _0x487cdb=_['isNil'](_0x2ad893[_0xf553('0x25')])?util[_0xf553('0x24')]('SIP/%s',_0x2ad893[_0xf553('0x26')]):_0x2ad893['interface'];return _0x487cdb;});for(var _0x81d4a1 in _0x2b6f93){if(_0x2b6f93[_0xf553('0x23')](_0x81d4a1)){if(!_0x2c1382[_0x81d4a1]){delete _0x2b6f93[_0x81d4a1];}}}}function clearVoiceCallReports(_0x3a0aa7){_0x3a0aa7['total']=0x0;_0x3a0aa7[_0xf553('0x27')]=0x0;_0x3a0aa7['sumHoldTime']=0x0;_0x3a0aa7[_0xf553('0x28')]=0x0;_0x3a0aa7[_0xf553('0x29')]=0x0;}function clearCampaigns(_0x5c4dd2){if(!_[_0xf553('0x2a')](_0x5c4dd2)){for(var _0x532fa5 in _0x5c4dd2){if(_0x5c4dd2[_0xf553('0x23')](_0x532fa5)){_0x5c4dd2[_0x532fa5][_0xf553('0x2b')]=0x0;_0x5c4dd2[_0x532fa5]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x35b254){if(!_[_0xf553('0x2a')](_0x35b254)){for(var _0x47308d in _0x35b254){if(_0x35b254['hasOwnProperty'](_0x47308d)){_0x35b254[_0x47308d][_0xf553('0x2c')]=0x0;_0x35b254[_0x47308d][_0xf553('0x27')]=0x0;_0x35b254[_0x47308d][_0xf553('0x2d')]=0x0;_0x35b254[_0x47308d][_0xf553('0x2e')]=0x0;_0x35b254[_0x47308d]['sumHoldTime']=0x0;_0x35b254[_0x47308d][_0xf553('0x28')]=0x0;_0x35b254[_0x47308d][_0xf553('0x29')]=0x0;_0x35b254[_0x47308d][_0xf553('0x2f')]=0x0;_0x35b254[_0x47308d][_0xf553('0x30')]=0x0;_0x35b254[_0x47308d][_0xf553('0x31')]=0x0;_0x35b254[_0x47308d][_0xf553('0x32')]=0x0;_0x35b254[_0x47308d][_0xf553('0x33')]=0x0;_0x35b254[_0x47308d][_0xf553('0x34')]=0x0;_0x35b254[_0x47308d]['outboundDropCallsDayTimeout']=0x0;_0x35b254[_0x47308d][_0xf553('0x35')]=0x0;_0x35b254[_0x47308d][_0xf553('0x36')]=0x0;_0x35b254[_0x47308d]['outboundOriginateFailureCallsDay']=0x0;_0x35b254[_0x47308d][_0xf553('0x37')]=0x0;_0x35b254[_0x47308d][_0xf553('0x38')]=0x0;_0x35b254[_0x47308d][_0xf553('0x2f')]=0x0;_0x35b254[_0x47308d][_0xf553('0x39')]=0x0;_0x35b254[_0x47308d][_0xf553('0x3a')]=!![];}}}}Realtime['prototype'][_0xf553('0x3b')]=function(_0xfa0dec,_0x415266){for(var _0x17d93e in _0x415266){if(_0xfa0dec[_0xf553('0x23')](_0x17d93e)){_0xfa0dec[_0x17d93e]=_0x415266[_0x17d93e];}}};Realtime[_0xf553('0x3c')][_0xf553('0x3d')]=function(){var _0x211ffa=this;return function(_0x2998b8){if(_0x2998b8){freeIsNotKeyAgent(_0x2998b8,_0x211ffa[_0xf553('0xe')]);for(var _0x2808cc=0x0,_0x545d45={},_0x2c13ed={};_0x2808cc<_0x2998b8[_0xf553('0x3e')];_0x2808cc+=0x1){_0x545d45=_0x2998b8[_0x2808cc];var _0x302906=_[_0xf553('0x3f')](_0x545d45[_0xf553('0x25')])?util[_0xf553('0x24')](_0xf553('0x40'),_0x545d45[_0xf553('0x26')]):_0x545d45[_0xf553('0x25')];if(_['isUndefined'](_0x211ffa[_0xf553('0xe')][_0x302906])){_0x211ffa[_0xf553('0xe')][_0x302906]=new Agent(_0x545d45);}else{_0x211ffa[_0xf553('0x3b')](_0x211ffa[_0xf553('0xe')][_0x302906],_0x545d45);}}}return _0x211ffa['agents'];};};Realtime[_0xf553('0x3c')][_0xf553('0x41')]=function(){var _0x3dfc85=this;return function(_0x3c405b){if(_0x3c405b){freeIsNotKeySip(_0x3c405b,_0x3dfc85[_0xf553('0xf')]);for(var _0x38ae1c=0x0,_0x26a0ec={},_0x168609={};_0x38ae1c<_0x3c405b[_0xf553('0x3e')];_0x38ae1c+=0x1){_0x26a0ec=_0x3c405b[_0x38ae1c];if(_[_0xf553('0x42')](_0x3dfc85['telephones'][util[_0xf553('0x24')](_0xf553('0x40'),_0x26a0ec[_0xf553('0x26')])])){_0x3dfc85['telephones'][util[_0xf553('0x24')]('SIP/%s',_0x26a0ec[_0xf553('0x26')])]=new Telephone(_0x26a0ec);}else{_0x3dfc85[_0xf553('0x3b')](_0x3dfc85[_0xf553('0xf')][util[_0xf553('0x24')]('SIP/%s',_0x26a0ec[_0xf553('0x26')])],_0x26a0ec);}}}return _0x3dfc85[_0xf553('0xf')];};};Realtime[_0xf553('0x3c')][_0xf553('0x43')]=function(){var _0x2b0535=this;return function(_0x1f7b3a){if(_0x1f7b3a){freeIsNotKeySip(_0x1f7b3a,_0x2b0535['trunks']);for(var _0xc14e44=0x0,_0x1e2f30={},_0x235bff={};_0xc14e44<_0x1f7b3a[_0xf553('0x3e')];_0xc14e44+=0x1){_0x1e2f30=_0x1f7b3a[_0xc14e44];if(_[_0xf553('0x42')](_0x2b0535[_0xf553('0x44')][util[_0xf553('0x24')](_0xf553('0x40'),_0x1e2f30['name'])])){_0x2b0535[_0xf553('0x44')][util[_0xf553('0x24')](_0xf553('0x40'),_0x1e2f30[_0xf553('0x26')])]=new Trunk(_0x1e2f30);}else{_0x2b0535[_0xf553('0x3b')](_0x2b0535[_0xf553('0x44')][util[_0xf553('0x24')]('SIP/%s',_0x1e2f30[_0xf553('0x26')])],_0x1e2f30);}}}return _0x2b0535[_0xf553('0x44')];};};Realtime['prototype'][_0xf553('0x45')]=function(){var _0x4bf13e=this;return function(_0x4c5fc5){if(_0x4c5fc5){freeIsNotKey(_0x4c5fc5,_0x4bf13e[_0xf553('0x10')],_0xf553('0x26'));for(var _0x4087b0=0x0,_0x2c0bd7={},_0x1775b2={};_0x4087b0<_0x4c5fc5[_0xf553('0x3e')];_0x4087b0+=0x1){_0x2c0bd7=_0x4c5fc5[_0x4087b0];if(_[_0xf553('0x42')](_0x4bf13e[_0xf553('0x10')][_0x2c0bd7[_0xf553('0x26')]])){_0x4bf13e[_0xf553('0x10')][_0x2c0bd7[_0xf553('0x26')]]=new VoiceQueue(_0x2c0bd7);}else{_0x4bf13e['mergeFromDatabase'](_0x4bf13e[_0xf553('0x10')][_0x2c0bd7[_0xf553('0x26')]],_0x2c0bd7);}}}return _0x4bf13e[_0xf553('0x10')];};};Realtime[_0xf553('0x3c')]['initTriggers']=function(){var _0x421ad8=this;return function(_0x5554ac){if(_0x5554ac){freeIsNotKey(_0x5554ac,_0x421ad8[_0xf553('0x46')],'id');for(var _0x2b26a5=0x0,_0x4fb22e={},_0x374c59={};_0x2b26a5<_0x5554ac['length'];_0x2b26a5+=0x1){_0x4fb22e=_0x5554ac[_0x2b26a5];if(_['isUndefined'](_0x421ad8[_0xf553('0x46')][_0x4fb22e['id']])){_0x421ad8[_0xf553('0x46')][_0x4fb22e['id']]=new Trigger(_0x4fb22e);}else{_0x421ad8[_0xf553('0x3b')](_0x421ad8[_0xf553('0x46')][_0x4fb22e['id']],_0x4fb22e);}}}return _0x421ad8['triggers'];};};Realtime[_0xf553('0x3c')][_0xf553('0x47')]=function(){var _0x41bbc5=this;return function(_0x2811a0){if(_0x2811a0){freeIsNotKey(_0x2811a0,_0x41bbc5['templates'],'id');for(var _0x13420e=0x0,_0x541d7a={},_0x17ce15={};_0x13420e<_0x2811a0[_0xf553('0x3e')];_0x13420e+=0x1){_0x541d7a=_0x2811a0[_0x13420e];if(_['isUndefined'](_0x41bbc5['templates'][_0x541d7a['id']])){_0x41bbc5['templates'][_0x541d7a['id']]=new Template(_0x541d7a);}else{_0x41bbc5[_0xf553('0x3b')](_0x41bbc5[_0xf553('0x12')][_0x541d7a['id']],_0x541d7a);}}}return _0x41bbc5[_0xf553('0x12')];};};Realtime[_0xf553('0x3c')][_0xf553('0x48')]=function(){var _0xb05af8=this;return function(_0x5dce91){if(_0x5dce91){freeIsNotKey(_0x5dce91,_0xb05af8[_0xf553('0x19')],'id');for(var _0x175fcf=0x0,_0x489405={},_0x35fdad={};_0x175fcf<_0x5dce91['length'];_0x175fcf+=0x1){_0x489405=_0x5dce91[_0x175fcf];if(_[_0xf553('0x42')](_0xb05af8[_0xf553('0x19')][_0x489405['id']])){_0xb05af8[_0xf553('0x19')][_0x489405['id']]=new ZendeskAccount(_0x489405);}else{_0xb05af8[_0xf553('0x3b')](_0xb05af8['zendeskAccounts'][_0x489405['id']],_0x489405);}}}return _0xb05af8[_0xf553('0x19')];};};Realtime[_0xf553('0x3c')]['initSalesforceAccounts']=function(){var _0x2de680=this;return function(_0x5655cf){if(_0x5655cf){freeIsNotKey(_0x5655cf,_0x2de680[_0xf553('0x1a')],'id');for(var _0xbb8d7b=0x0,_0x4f2f18={},_0x5d38e0={};_0xbb8d7b<_0x5655cf[_0xf553('0x3e')];_0xbb8d7b+=0x1){_0x4f2f18=_0x5655cf[_0xbb8d7b];if(_[_0xf553('0x42')](_0x2de680[_0xf553('0x1a')][_0x4f2f18['id']])){_0x2de680[_0xf553('0x1a')][_0x4f2f18['id']]=new SalesforceAccount(_0x4f2f18);}else{_0x2de680[_0xf553('0x3b')](_0x2de680[_0xf553('0x1a')][_0x4f2f18['id']],_0x4f2f18);}}}return _0x2de680[_0xf553('0x1a')];};};Realtime[_0xf553('0x3c')][_0xf553('0x49')]=function(){var _0x373c39=this;return function(_0x27223b){if(_0x27223b){freeIsNotKey(_0x27223b,_0x373c39[_0xf553('0x1c')],'id');for(var _0x5409c0=0x0,_0x129d2b={},_0x39a833={};_0x5409c0<_0x27223b['length'];_0x5409c0+=0x1){_0x129d2b=_0x27223b[_0x5409c0];if(_[_0xf553('0x42')](_0x373c39[_0xf553('0x1c')][_0x129d2b['id']])){_0x373c39[_0xf553('0x1c')][_0x129d2b['id']]=new FreshdeskAccount(_0x129d2b);}else{_0x373c39[_0xf553('0x3b')](_0x373c39['freshdeskAccounts'][_0x129d2b['id']],_0x129d2b);}}}return _0x373c39['freshdeskAccounts'];};};Realtime[_0xf553('0x3c')]['initZohoAccounts']=function(){var _0x25d488=this;return function(_0x555b15){if(_0x555b15){freeIsNotKey(_0x555b15,_0x25d488['zohoAccounts'],'id');for(var _0x3cc396=0x0,_0x174fdf={},_0x1279a0={};_0x3cc396<_0x555b15[_0xf553('0x3e')];_0x3cc396+=0x1){_0x174fdf=_0x555b15[_0x3cc396];if(_[_0xf553('0x42')](_0x25d488['zohoAccounts'][_0x174fdf['id']])){_0x25d488[_0xf553('0x4a')][_0x174fdf['id']]=new ZohoAccount(_0x174fdf);}else{_0x25d488[_0xf553('0x3b')](_0x25d488[_0xf553('0x4a')][_0x174fdf['id']],_0x174fdf);}}}return _0x25d488[_0xf553('0x4a')];};};Realtime[_0xf553('0x3c')]['initDeskAccounts']=function(){var _0x159f0a=this;return function(_0x4a7833){if(_0x4a7833){freeIsNotKey(_0x4a7833,_0x159f0a[_0xf553('0x1d')],'id');for(var _0x10157a=0x0,_0x4e752d={},_0x1dee62={};_0x10157a<_0x4a7833['length'];_0x10157a+=0x1){_0x4e752d=_0x4a7833[_0x10157a];if(_[_0xf553('0x42')](_0x159f0a['deskAccounts'][_0x4e752d['id']])){_0x159f0a[_0xf553('0x1d')][_0x4e752d['id']]=new DeskAccount(_0x4e752d);}else{_0x159f0a[_0xf553('0x3b')](_0x159f0a['deskAccounts'][_0x4e752d['id']],_0x4e752d);}}}return _0x159f0a[_0xf553('0x1d')];};};Realtime[_0xf553('0x3c')]['initSugarcrmAccounts']=function(){var _0x403078=this;return function(_0x109996){if(_0x109996){freeIsNotKey(_0x109996,_0x403078[_0xf553('0x1b')],'id');for(var _0x49b487=0x0,_0x1d764c={},_0x28a1f5={};_0x49b487<_0x109996[_0xf553('0x3e')];_0x49b487+=0x1){_0x1d764c=_0x109996[_0x49b487];if(_[_0xf553('0x42')](_0x403078[_0xf553('0x1b')][_0x1d764c['id']])){_0x403078[_0xf553('0x1b')][_0x1d764c['id']]=new SugarcrmAccount(_0x1d764c);}else{_0x403078[_0xf553('0x3b')](_0x403078[_0xf553('0x1b')][_0x1d764c['id']],_0x1d764c);}}}return _0x403078['sugarcrmAccounts'];};};Realtime[_0xf553('0x3c')][_0xf553('0x4b')]=function(){var _0x5a8eac=this;return function(_0x508204){if(_0x508204){freeIsNotKey(_0x508204,_0x5a8eac[_0xf553('0x1e')],'id');for(var _0xe8265a=0x0,_0x90aba2={},_0x3461be={};_0xe8265a<_0x508204['length'];_0xe8265a+=0x1){_0x90aba2=_0x508204[_0xe8265a];if(_[_0xf553('0x42')](_0x5a8eac['vtigerAccounts'][_0x90aba2['id']])){_0x5a8eac[_0xf553('0x1e')][_0x90aba2['id']]=new VtigerAccount(_0x90aba2);}else{_0x5a8eac[_0xf553('0x3b')](_0x5a8eac[_0xf553('0x1e')][_0x90aba2['id']],_0x90aba2);}}}return _0x5a8eac[_0xf553('0x1e')];};};Realtime[_0xf553('0x3c')][_0xf553('0x4c')]=function(){var _0x333598=this;return function(_0x5c5b71){if(_0x5c5b71){freeIsNotKey(_0x5c5b71,_0x333598[_0xf553('0x4d')],'id');for(var _0x454bd1=0x0,_0x41535c={},_0x56bec2={};_0x454bd1<_0x5c5b71[_0xf553('0x3e')];_0x454bd1+=0x1){_0x41535c=_0x5c5b71[_0x454bd1];if(_[_0xf553('0x42')](_0x333598['servicenowAccounts'][_0x41535c['id']])){_0x333598[_0xf553('0x4d')][_0x41535c['id']]=new ServicenowAccount(_0x41535c);}else{_0x333598[_0xf553('0x3b')](_0x333598[_0xf553('0x4d')][_0x41535c['id']],_0x41535c);}}}return _0x333598[_0xf553('0x4d')];};};Realtime[_0xf553('0x3c')][_0xf553('0x4e')]=function(){var _0x1547d0=this;return function(_0x1c8c8a){if(_0x1c8c8a){freeIsNotKey(_0x1c8c8a,_0x1547d0[_0xf553('0x1f')],'id');for(var _0xad00c7=0x0,_0x51c66d={},_0x5813d1={};_0xad00c7<_0x1c8c8a[_0xf553('0x3e')];_0xad00c7+=0x1){_0x51c66d=_0x1c8c8a[_0xad00c7];if(_['isUndefined'](_0x1547d0['dynamics365Accounts'][_0x51c66d['id']])){_0x1547d0['dynamics365Accounts'][_0x51c66d['id']]=new Dynamics365Account(_0x51c66d);}else{_0x1547d0[_0xf553('0x3b')](_0x1547d0['dynamics365Accounts'][_0x51c66d['id']],_0x51c66d);}}}return _0x1547d0[_0xf553('0x1f')];};};Realtime[_0xf553('0x3c')][_0xf553('0x4f')]=function(){var _0xc98d25=this;return function(_0x22284b){if(_0x22284b){freeIsNotKey(_0x22284b,_0xc98d25[_0xf553('0x20')],'id');for(var _0x5c58db=0x0,_0x1206cf={},_0x4f4c1e={};_0x5c58db<_0x22284b[_0xf553('0x3e')];_0x5c58db+=0x1){_0x1206cf=_0x22284b[_0x5c58db];if(_[_0xf553('0x42')](_0xc98d25[_0xf553('0x20')][_0x1206cf['id']])){_0xc98d25[_0xf553('0x20')][_0x1206cf['id']]=new FreshsalesAccount(_0x1206cf);}else{_0xc98d25[_0xf553('0x3b')](_0xc98d25[_0xf553('0x20')][_0x1206cf['id']],_0x1206cf);}}}return _0xc98d25[_0xf553('0x20')];};};Realtime[_0xf553('0x3c')][_0xf553('0x50')]=function(){var _0x6b5691=this;return function(_0x2fbb8d){for(var _0x564ee1=0x0;_0x564ee1<_0x2fbb8d[_0xf553('0x3e')];_0x564ee1+=0x1){_[_0xf553('0x51')](_0x6b5691[_0xf553('0x10')][_0x2fbb8d[_0x564ee1][_0xf553('0x26')]],_0x2fbb8d[_0x564ee1]);}return _0x6b5691[_0xf553('0x10')];};};Realtime[_0xf553('0x3c')]['initVoiceQueueReports']=function(){var _0x22d0fc=this;return function(_0x617d62){clearVoiceQueues(_0x22d0fc['voiceQueues']);if(_0x617d62){_0x617d62=_[_0xf553('0x52')](_0x617d62,_0xf553('0x53'));for(var _0x11a206 in _0x617d62){if(_0x617d62[_0xf553('0x23')](_0x11a206)){var _0x35902b={};for(var _0x3e639a=0x0;_0x3e639a<_0x617d62[_0x11a206]['length'];_0x3e639a+=0x1){var _0x35bb73=_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x54')];if(_0x22d0fc[_0xf553('0x10')][_0x35bb73]){if(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x55')]){_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x2d')]+=0x1;}if(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x56')]){_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x2e')]+=0x1;}_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x57')]+=moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x58')])[_0xf553('0x59')](moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5a')]),_0xf553('0x5b'))||0x0;if(_0x3e639a===_0x617d62[_0x11a206][_0xf553('0x3e')]-0x1){_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x28')]+=moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5c')]||_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5d')]||_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5e')])[_0xf553('0x59')](moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5a')]),_0xf553('0x5b'))||0x0;_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x2c')]+=0x1;if(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5f')]){_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x27')]+=0x1;_0x22d0fc['voiceQueues'][_0x35bb73]['sumBillable']+=moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x5c')])[_0xf553('0x59')](moment(_0x617d62[_0x11a206][_0x3e639a][_0xf553('0x58')]),_0xf553('0x5b'))||0x0;}}else{_0x22d0fc['voiceQueues'][_0x35bb73][_0xf553('0x28')]+=_0x22d0fc[_0xf553('0x10')][_0x35bb73][_0xf553('0x57')]||0x0;}}}}}}return _0x22d0fc[_0xf553('0x10')];};};Realtime[_0xf553('0x3c')][_0xf553('0x60')]=function(){var _0x11e24d=this;return function(_0x434b1a){clearVoiceCallReports(_0x11e24d[_0xf553('0x61')]);if(_0x434b1a){for(var _0x365c89=0x0;_0x365c89<_0x434b1a['length'];_0x365c89+=0x1){_0x11e24d[_0xf553('0x61')][_0xf553('0x2c')]+=0x1;_0x11e24d[_0xf553('0x61')]['sumDuration']+=_0x434b1a[_0x365c89][_0xf553('0x62')];if(_0x434b1a[_0x365c89][_0xf553('0x63')]===_0xf553('0x64')){_0x11e24d['outbound'][_0xf553('0x27')]+=0x1;_0x11e24d[_0xf553('0x61')]['sumHoldTime']+=_0x434b1a[_0x365c89][_0xf553('0x62')]-_0x434b1a[_0x365c89][_0xf553('0x65')]||0x0;_0x11e24d[_0xf553('0x61')][_0xf553('0x29')]+=_0x434b1a[_0x365c89][_0xf553('0x65')];}}}return _0x11e24d[_0xf553('0x61')];};};Realtime[_0xf553('0x3c')]['initCampaigns']=function(){var _0x3559c4=this;return function(_0x19d905){if(_0x19d905){freeIsNotKey(_0x19d905,_0x3559c4[_0xf553('0x11')],_0xf553('0x26'));for(var _0x10a15b=0x0,_0x39700f={};_0x10a15b<_0x19d905[_0xf553('0x3e')];_0x10a15b+=0x1){_0x39700f=_0x19d905[_0x10a15b];if(_['isUndefined'](_0x3559c4['campaigns'][_0x39700f[_0xf553('0x26')]])){_0x3559c4[_0xf553('0x11')][_0x39700f[_0xf553('0x26')]]=new Campaign(_0x39700f);}else{_0x3559c4[_0xf553('0x3b')](_0x3559c4[_0xf553('0x11')][_0x39700f[_0xf553('0x26')]],_0x39700f);_0x3559c4[_0xf553('0x11')][_0x39700f[_0xf553('0x26')]][_0xf553('0x66')]=_0x39700f[_0xf553('0x67')]?_0x39700f[_0xf553('0x67')][_0xf553('0x26')]:undefined;}}}return _0x3559c4[_0xf553('0x11')];};};Realtime[_0xf553('0x3c')][_0xf553('0x68')]=function(){var _0x236f37=this;return function(_0x3641e6){if(_0x3641e6){freeIsNotKey(_0x3641e6,_0x236f37['voiceExtensions'],'id');for(var _0x609361=0x0,_0x44e1e5={};_0x609361<_0x3641e6[_0xf553('0x3e')];_0x609361+=0x1){_0x44e1e5=_0x3641e6[_0x609361];if(_['isUndefined'](_0x236f37['voiceExtensions'][_0x44e1e5['id']])){_0x236f37[_0xf553('0x13')][_0x44e1e5['id']]=new VoiceExtension(_0x44e1e5);}else{_0x236f37[_0xf553('0x3b')](_0x236f37['voiceExtensions'][_0x44e1e5['id']],_0x44e1e5);}}}return _0x236f37[_0xf553('0x13')];};};Realtime[_0xf553('0x3c')][_0xf553('0x69')]=function(){var _0x571124=this;return function(_0x365860){clearCampaigns(_0x571124[_0xf553('0x11')]);for(var _0x2652cd=0x0;_0x2652cd<_0x365860[_0xf553('0x3e')];_0x2652cd+=0x1){_[_0xf553('0x51')](_0x571124[_0xf553('0x11')][_0x365860[_0x2652cd][_0xf553('0x26')]],_0x365860[_0x2652cd]);}return _0x571124[_0xf553('0x11')];};};Realtime[_0xf553('0x3c')][_0xf553('0x6a')]=function(){var _0xa139d1=this;return function(_0x43a2d9){if(_0x43a2d9){freeIsNotKey(_0x43a2d9,_0xa139d1[_0xf553('0x21')],'id');for(var _0x5e7065=0x0,_0x31f2bd={},_0x27a5ef={};_0x5e7065<_0x43a2d9[_0xf553('0x3e')];_0x5e7065+=0x1){_0x31f2bd=_0x43a2d9[_0x5e7065];if(_[_0xf553('0x42')](_0xa139d1['faxAccounts'][_0x31f2bd['id']])){_0xa139d1[_0xf553('0x21')][_0x31f2bd['id']]=new FaxAccount(_0x31f2bd);}else{_0xa139d1[_0xf553('0x3b')](_0xa139d1[_0xf553('0x21')][_0x31f2bd['id']],_0x31f2bd);}}}return _0xa139d1[_0xf553('0x21')];};};module[_0xf553('0x6b')]=Realtime;
\ No newline at end of file
index 2b8830b..e37a764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89bf=['exports','lodash','moment','util','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','prototype','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','voiceQueueReport','connectedlinenum','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','queuecallerexit','YYYY-MM-DD\x20HH:mm:ss','create','match','length','keys','getCallType','channel','split','getAgentByInternal','calleridnum','outbound','internal','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','forEach','Local','substring','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','attendedTransfer'];(function(_0x94505c,_0x236898){var _0x4c1c8d=function(_0x1a7063){while(--_0x1a7063){_0x94505c['push'](_0x94505c['shift']());}};_0x4c1c8d(++_0x236898);}(_0x89bf,0x181));var _0xf89b=function(_0x566074,_0x1b22ba){_0x566074=_0x566074-0x0;var _0x183658=_0x89bf[_0x566074];return _0x183658;};'use strict';var _=require(_0xf89b('0x0'));var moment=require(_0xf89b('0x1'));var util=require(_0xf89b('0x2'));var config=require('../../../config/environment');var ami=require(_0xf89b('0x3'));var RpcVoiceAgentReport=require(_0xf89b('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xf89b('0x5'));var RpcMemberReport=require(_0xf89b('0x6'));var RpcVoiceQueueReport=require(_0xf89b('0x7'));var RpcVoiceRecording=require(_0xf89b('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xf89b('0x9'));var VoiceCallReport=require(_0xf89b('0xa'));var VoiceAgentReport=require(_0xf89b('0xb'));var VoiceDialReport=require(_0xf89b('0xc'));var UserReport=require('./userReport');function Report(_0x2e21fd){this[_0xf89b('0xd')]=_0x2e21fd;this[_0xf89b('0xe')]=_0x2e21fd[_0xf89b('0xe')];this['telephones']=_0x2e21fd['telephones'];}Report[_0xf89b('0xf')]['sync']=function(_0x514a32){var _0x2c88f5=new VoiceQueueReport(this[_0xf89b('0xd')]);var _0x71a19f=new VoiceAgentReport(this[_0xf89b('0xd')]);var _0xaae705=new VoiceDialReport(this[_0xf89b('0xd')]);var _0xe9bcde=new VoiceCallReport(this['realtime']);var _0x5089bb=new UserReport(this[_0xf89b('0xd')]);if(config[_0xf89b('0x10')]&&config[_0xf89b('0x10')][_0xf89b('0x11')]){ami['on'](_0xf89b('0x12'),this['voiceQueueReport'][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x14'),this[_0xf89b('0x15')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x16'),this[_0xf89b('0x17')]['bind'](this));ami['on'](_0xf89b('0x18'),this[_0xf89b('0x19')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x1a'),this[_0xf89b('0x1b')][_0xf89b('0x13')](this));ami['on'](_0xf89b('0x1c'),this['attendedTransfer'][_0xf89b('0x13')](this));}};Report[_0xf89b('0xf')][_0xf89b('0x1d')]=function(_0x28545f){var _0x32d453;_0x32d453=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x13d663){return _0x13d663[_0xf89b('0x1f')]==_0x28545f||_0x13d663[_0xf89b('0x20')]==_0x28545f;});if(_[_0xf89b('0x21')](_0x32d453)){var _0x41a011=_[_0xf89b('0x1e')](this[_0xf89b('0x22')],function(_0x12acc4){return _0x12acc4[_0xf89b('0x1f')]==_0x28545f||_0x12acc4[_0xf89b('0x20')]==_0x28545f;});if(_0x41a011){_0x32d453=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x1024d1){return _0x1024d1[_0xf89b('0x23')]==util[_0xf89b('0x24')](_0xf89b('0x25'),_0x41a011[_0xf89b('0x20')]);});}}return _0x32d453;};Report[_0xf89b('0xf')][_0xf89b('0x26')]=function(_0xdd8f26){for(var _0x4594a5=0x0;_0x4594a5<_0xdd8f26['length'];_0x4594a5+=0x1){var _0x2ad36b=this[_0xf89b('0x1d')](_0xdd8f26[_0x4594a5][_0xf89b('0x27')]);if(_0x2ad36b){_0xdd8f26[_0x4594a5][_0xf89b('0x1f')]=_0x2ad36b[_0xf89b('0x1f')];_0xdd8f26[_0x4594a5]['assigned']=!![];_0xdd8f26[_0x4594a5][_0xf89b('0x28')]=_0x2ad36b[_0xf89b('0x20')];_0xdd8f26[_0x4594a5][_0xf89b('0x23')]=_[_0xf89b('0x21')](_0x2ad36b[_0xf89b('0x23')])?util[_0xf89b('0x24')](_0xf89b('0x25'),_0x2ad36b[_0xf89b('0x20')]):_0x2ad36b[_0xf89b('0x23')];if(_0xdd8f26[_0x4594a5][_0xf89b('0x29')]){_0xdd8f26[_0x4594a5][_0xf89b('0x2a')]=moment()[_0xf89b('0x24')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xdd8f26[_0x4594a5][_0xf89b('0x2b')]){_0xdd8f26[_0x4594a5]['queuecallerexitAt']=moment()[_0xf89b('0x24')](_0xf89b('0x2c'));}RpcMemberReport[_0xf89b('0x26')](_0xdd8f26[_0x4594a5]);}RpcVoiceQueueReport[_0xf89b('0x2d')](_0xdd8f26[_0x4594a5]);}};function extractCalleridNumber(_0x19b2a9){var _0x539e7d=_0x19b2a9[_0xf89b('0x2e')](/<(.*?)>/);return _0x539e7d?_0x539e7d[0x1]:_0x19b2a9;}Report[_0xf89b('0xf')]['getAgentByInternal']=function(_0x1e9586){for(var _0x397103=0x0;_0x397103<Object['keys'](this[_0xf89b('0xe')])[_0xf89b('0x2f')];_0x397103++){var _0x28b49e=Object[_0xf89b('0x30')](this[_0xf89b('0xe')])[_0x397103];var _0x3baee8=this[_0xf89b('0xe')][_0x28b49e];if(_0x3baee8[_0xf89b('0x1f')]===Number(_0x1e9586))return _0x3baee8;}return null;};Report['prototype'][_0xf89b('0x31')]=function(_0x1ce395){var _0x58ce9d=_0x1ce395[_0xf89b('0x32')][_0xf89b('0x33')]('-')[0x0];var _0x4195d2=this[_0xf89b('0xe')][_0x58ce9d];if(!_0x4195d2)_0x4195d2=this[_0xf89b('0x34')](_0x1ce395[_0xf89b('0x35')]);return!_0x4195d2?_0xf89b('0x36'):_0xf89b('0x37');};Report['prototype'][_0xf89b('0x15')]=function(_0x267375){_0x267375[_0xf89b('0x38')]=_0x267375['destination']||_0x267375[_0xf89b('0x39')];if(_0x267375[_0xf89b('0x3a')]=='dialer'){_0x267375[_0xf89b('0x3b')]=_0xf89b('0x3c');_0x267375[_0xf89b('0x3d')]=_0x267375[_0xf89b('0x3c')];if(_0x267375[_0xf89b('0x3e')]==_0xf89b('0x3f')){_0x267375[_0xf89b('0x1f')]='';_0x267375[_0xf89b('0x38')]=extractCalleridNumber(_0x267375[_0xf89b('0x40')]);}else if(_0x267375[_0xf89b('0x3e')]=='from-sip'){if(_0x267375[_0xf89b('0x38')]==_0xf89b('0x41')){_0x267375['destination']=extractCalleridNumber(_0x267375[_0xf89b('0x42')]);_0x267375['calleridnum']=_0x267375[_0xf89b('0x43')];_0x267375['destinationchannel']=[_0x267375['channel'],_0x267375['channel']=_0x267375['destinationchannel']][0x0];_0x267375['callerid']=_0x267375[_0xf89b('0x42')];}else{_0x267375[_0xf89b('0x38')]=_0x267375['calleridnum'];_0x267375[_0xf89b('0x35')]=_0x267375['originatecalleridnum'];if(_0x267375[_0xf89b('0x44')]==_0xf89b('0x45')){_0x267375[_0xf89b('0x1f')]=_0x267375[_0xf89b('0x27')];}else{_0x267375[_0xf89b('0x1f')]='';}}}}else{_0x267375[_0xf89b('0x40')]=util['format'](_0xf89b('0x46'),_0x267375[_0xf89b('0x47')],_0x267375['calleridnum']);}if(RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375[_0xf89b('0x49')]]){var _0x21a2b8=RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375['linkedid']];_0x21a2b8[_0xf89b('0x4a')]=_0x267375[_0xf89b('0x4b')];RpcVoiceTransferReport['blindTransfer'](_0x21a2b8);delete RpcVoiceTransferReport[_0xf89b('0x48')][_0x267375[_0xf89b('0x49')]];}if(_[_0xf89b('0x21')](_0x267375['type'])){_0x267375[_0xf89b('0x3a')]=this[_0xf89b('0x31')](_0x267375);}if(_['isNil'](_0x267375[_0xf89b('0x4c')])){var _0x2ae645=_0x267375[_0xf89b('0x32')]['split']('-')[0x0];var _0x1803af=this[_0xf89b('0xe')][_0x2ae645];if(!_0x1803af)_0x1803af=this[_0xf89b('0x34')](_0x267375[_0xf89b('0x1f')]);if(_0x1803af){_0x267375[_0xf89b('0x4c')]=_0x1803af['id'];_0x267375[_0xf89b('0x4d')]=_0x1803af[_0xf89b('0x20')];}}RpcVoiceCallReport[_0xf89b('0x2d')](_0x267375);if(_0x267375[_0xf89b('0x4e')]){for(var _0x16c822=0x0;_0x16c822<_0x267375[_0xf89b('0x4f')][_0xf89b('0x2f')];_0x16c822+=0x1){_0x267375[_0xf89b('0x50')]=_0x267375[_0xf89b('0x4f')][_0x16c822][_0xf89b('0x51')];_0x267375[_0xf89b('0x52')]=_0x267375[_0xf89b('0x4f')][_0x16c822][_0xf89b('0x52')];if(_0x267375[_0xf89b('0x39')]=='xcally-motion-preview'){_0x267375[_0xf89b('0x35')]=_0x267375[_0xf89b('0x27')];_0x267375[_0xf89b('0x47')]=_0x267375[_0xf89b('0x53')];_0x267375['connectedlinenum']=_0x267375[_0xf89b('0x1f')];_0x267375['connectedlinename']=_0x267375[_0xf89b('0x4d')];_0x267375[_0xf89b('0x39')]=_0x267375[_0xf89b('0x43')];}else if(_0x267375['exten']==_0xf89b('0x54')){_0x267375['calleridnum']=_0x267375[_0xf89b('0x38')];_0x267375[_0xf89b('0x39')]=_0x267375[_0xf89b('0x43')];}RpcVoiceRecording['create'](_0x267375);}}};Report[_0xf89b('0xf')][_0xf89b('0x17')]=function(_0x32605b){if(_[_0xf89b('0x55')](_0x32605b)){_0x32605b[_0xf89b('0x56')](function(_0x37619a){RpcVoiceAgentReport[_0xf89b('0x2d')](_0x37619a);});}else{RpcVoiceAgentReport['create'](_0x32605b);}};Report[_0xf89b('0xf')][_0xf89b('0x19')]=function(_0x632744){RpcVoiceDialReport[_0xf89b('0x2d')](_0x632744);var _0x239297;var _0x2d5fa1;var _0xb802a9=_0x632744[_0xf89b('0x32')];if(_['startsWith'](_0xb802a9,_0xf89b('0x57'))){_0x2d5fa1=_0xb802a9[_0xf89b('0x58')](_0xb802a9['indexOf']('/')+0x1,_0xb802a9[_0xf89b('0x59')]('@'));_0x239297=_[_0xf89b('0x1e')](this[_0xf89b('0xe')],function(_0x409757){return _0x409757[_0xf89b('0x5a')]==_0x2d5fa1||_0x409757[_0xf89b('0x5b')]==_0x2d5fa1||_0x409757['accountcode']==_0x2d5fa1;});}else{_0x2d5fa1=_0xb802a9[_0xf89b('0x58')](_0xb802a9[_0xf89b('0x59')]('/')+0x1,_0xb802a9[_0xf89b('0x5c')]('-'));_0x239297=this['findAgent'](_0x2d5fa1);}if(_0x239297){_0x632744[_0xf89b('0x23')]=_[_0xf89b('0x21')](_0x239297[_0xf89b('0x23')])?util[_0xf89b('0x24')](_0xf89b('0x25'),_0x239297[_0xf89b('0x20')]):_0x239297[_0xf89b('0x23')];_0x632744[_0xf89b('0x4d')]=_0x239297['name'];_0x632744[_0xf89b('0x1f')]=_0x239297[_0xf89b('0x1f')];RpcMemberReport['voiceDialReport'](_0x632744);}};Report[_0xf89b('0xf')][_0xf89b('0x1b')]=function(_0x286002){RpcVoiceTransferReport[_0xf89b('0x48')][_0x286002[_0xf89b('0x5d')]]=_0x286002;};Report['prototype'][_0xf89b('0x5e')]=function(_0x38fbe5){RpcVoiceTransferReport[_0xf89b('0x5e')](_0x38fbe5);};module[_0xf89b('0x5f')]=Report;
\ No newline at end of file
+var _0x1a91=['xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','callerid','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','transfers','linkedid','uniqueid','blindTransfer','UserId','membername','monitors','monitorFilename','filename','createdAt','calleridname','connectedlinename','xcally-motion-dialer','isArray','startsWith','substring','indexOf','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','length','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','create','match','getAgentByInternal','keys','getCallType','channel','split','calleridnum','internal','destination','exten','type','lastapplication','queue','lastdata','context','from-voip-provider','from-sip'];(function(_0x50ec1d,_0x41d30f){var _0x48fb97=function(_0x41c5bd){while(--_0x41c5bd){_0x50ec1d['push'](_0x50ec1d['shift']());}};_0x48fb97(++_0x41d30f);}(_0x1a91,0x7b));var _0x11a9=function(_0x3f047b,_0x1092d3){_0x3f047b=_0x3f047b-0x0;var _0x17743f=_0x1a91[_0x3f047b];return _0x17743f;};'use strict';var _=require(_0x11a9('0x0'));var moment=require(_0x11a9('0x1'));var util=require('util');var config=require(_0x11a9('0x2'));var ami=require(_0x11a9('0x3'));var RpcVoiceAgentReport=require(_0x11a9('0x4'));var RpcVoiceCallReport=require(_0x11a9('0x5'));var RpcVoiceDialReport=require(_0x11a9('0x6'));var RpcMemberReport=require(_0x11a9('0x7'));var RpcVoiceQueueReport=require(_0x11a9('0x8'));var RpcVoiceRecording=require(_0x11a9('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x11a9('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0x11a9('0xb'));var VoiceDialReport=require(_0x11a9('0xc'));var UserReport=require(_0x11a9('0xd'));function Report(_0x2a93c5){this[_0x11a9('0xe')]=_0x2a93c5;this[_0x11a9('0xf')]=_0x2a93c5['agents'];this[_0x11a9('0x10')]=_0x2a93c5[_0x11a9('0x10')];}Report[_0x11a9('0x11')]['sync']=function(_0x357480){var _0x1c56da=new VoiceQueueReport(this[_0x11a9('0xe')]);var _0x184e88=new VoiceAgentReport(this[_0x11a9('0xe')]);var _0x3511eb=new VoiceDialReport(this['realtime']);var _0x8512e8=new VoiceCallReport(this['realtime']);var _0x7795b=new UserReport(this[_0x11a9('0xe')]);if(config[_0x11a9('0x12')]&&config['xdr'][_0x11a9('0x13')]){ami['on'](_0x11a9('0x14'),this[_0x11a9('0x15')][_0x11a9('0x16')](this));ami['on'](_0x11a9('0x17'),this[_0x11a9('0x18')][_0x11a9('0x16')](this));ami['on'](_0x11a9('0x19'),this[_0x11a9('0x1a')][_0x11a9('0x16')](this));ami['on'](_0x11a9('0x1b'),this[_0x11a9('0x1c')][_0x11a9('0x16')](this));ami['on']('blindtransfer',this['blindTransfer'][_0x11a9('0x16')](this));ami['on']('attendedtransfer',this[_0x11a9('0x1d')][_0x11a9('0x16')](this));}};Report[_0x11a9('0x11')][_0x11a9('0x1e')]=function(_0x561679){var _0x1ae3d4;_0x1ae3d4=_[_0x11a9('0x1f')](this['agents'],function(_0x42ba1c){return _0x42ba1c[_0x11a9('0x20')]==_0x561679||_0x42ba1c[_0x11a9('0x21')]==_0x561679;});if(_[_0x11a9('0x22')](_0x1ae3d4)){var _0x8e7157=_[_0x11a9('0x1f')](this['telephones'],function(_0x3bce36){return _0x3bce36[_0x11a9('0x20')]==_0x561679||_0x3bce36[_0x11a9('0x21')]==_0x561679;});if(_0x8e7157){_0x1ae3d4=_[_0x11a9('0x1f')](this[_0x11a9('0xf')],function(_0x86a540){return _0x86a540[_0x11a9('0x23')]==util[_0x11a9('0x24')](_0x11a9('0x25'),_0x8e7157['name']);});}}return _0x1ae3d4;};Report[_0x11a9('0x11')]['voiceQueueReport']=function(_0x41f5cb){for(var _0xcf656e=0x0;_0xcf656e<_0x41f5cb[_0x11a9('0x26')];_0xcf656e+=0x1){var _0x4ff390=this[_0x11a9('0x1e')](_0x41f5cb[_0xcf656e]['connectedlinenum']);if(_0x4ff390){_0x41f5cb[_0xcf656e]['accountcode']=_0x4ff390[_0x11a9('0x20')];_0x41f5cb[_0xcf656e][_0x11a9('0x27')]=!![];_0x41f5cb[_0xcf656e][_0x11a9('0x28')]=_0x4ff390[_0x11a9('0x21')];_0x41f5cb[_0xcf656e]['interface']=_['isNil'](_0x4ff390[_0x11a9('0x23')])?util[_0x11a9('0x24')](_0x11a9('0x25'),_0x4ff390[_0x11a9('0x21')]):_0x4ff390[_0x11a9('0x23')];if(_0x41f5cb[_0xcf656e][_0x11a9('0x29')]){_0x41f5cb[_0xcf656e][_0x11a9('0x2a')]=moment()['format'](_0x11a9('0x2b'));}if(_0x41f5cb[_0xcf656e][_0x11a9('0x2c')]){_0x41f5cb[_0xcf656e]['queuecallerexitAt']=moment()[_0x11a9('0x24')](_0x11a9('0x2b'));}RpcMemberReport[_0x11a9('0x15')](_0x41f5cb[_0xcf656e]);}RpcVoiceQueueReport[_0x11a9('0x2d')](_0x41f5cb[_0xcf656e]);}};function extractCalleridNumber(_0x1152ba){var _0x1ff91a=_0x1152ba[_0x11a9('0x2e')](/<(.*?)>/);return _0x1ff91a?_0x1ff91a[0x1]:_0x1152ba;}Report[_0x11a9('0x11')][_0x11a9('0x2f')]=function(_0x1050df){for(var _0x33a623=0x0;_0x33a623<Object[_0x11a9('0x30')](this['agents'])[_0x11a9('0x26')];_0x33a623++){var _0x5aba3d=Object[_0x11a9('0x30')](this['agents'])[_0x33a623];var _0x316c78=this[_0x11a9('0xf')][_0x5aba3d];if(_0x316c78['accountcode']===Number(_0x1050df))return _0x316c78;}return null;};Report[_0x11a9('0x11')][_0x11a9('0x31')]=function(_0x2906fa){var _0x434107=_0x2906fa[_0x11a9('0x32')][_0x11a9('0x33')]('-')[0x0];var _0x14b729=this[_0x11a9('0xf')][_0x434107];if(!_0x14b729)_0x14b729=this[_0x11a9('0x2f')](_0x2906fa[_0x11a9('0x34')]);return!_0x14b729?'outbound':_0x11a9('0x35');};Report['prototype']['voiceCallReport']=function(_0x4f4d40){_0x4f4d40[_0x11a9('0x36')]=_0x4f4d40[_0x11a9('0x36')]||_0x4f4d40[_0x11a9('0x37')];if(_0x4f4d40[_0x11a9('0x38')]=='dialer'){_0x4f4d40[_0x11a9('0x39')]=_0x11a9('0x3a');_0x4f4d40[_0x11a9('0x3b')]=_0x4f4d40['queue'];if(_0x4f4d40[_0x11a9('0x3c')]==_0x11a9('0x3d')){_0x4f4d40['accountcode']='';_0x4f4d40[_0x11a9('0x36')]=extractCalleridNumber(_0x4f4d40['callerid']);}else if(_0x4f4d40['context']==_0x11a9('0x3e')){if(_0x4f4d40[_0x11a9('0x36')]==_0x11a9('0x3f')){_0x4f4d40[_0x11a9('0x36')]=extractCalleridNumber(_0x4f4d40[_0x11a9('0x40')]);_0x4f4d40[_0x11a9('0x34')]=_0x4f4d40[_0x11a9('0x41')];_0x4f4d40[_0x11a9('0x42')]=[_0x4f4d40[_0x11a9('0x32')],_0x4f4d40['channel']=_0x4f4d40[_0x11a9('0x42')]][0x0];_0x4f4d40[_0x11a9('0x43')]=_0x4f4d40[_0x11a9('0x40')];}else{_0x4f4d40[_0x11a9('0x36')]=_0x4f4d40[_0x11a9('0x34')];_0x4f4d40[_0x11a9('0x34')]=_0x4f4d40[_0x11a9('0x41')];if(_0x4f4d40[_0x11a9('0x44')]==_0x11a9('0x45')){_0x4f4d40[_0x11a9('0x20')]=_0x4f4d40[_0x11a9('0x46')];}else{_0x4f4d40['accountcode']='';}}}}else{_0x4f4d40[_0x11a9('0x43')]=util[_0x11a9('0x24')](_0x11a9('0x47'),_0x4f4d40['calleridname'],_0x4f4d40[_0x11a9('0x34')]);}if(RpcVoiceTransferReport[_0x11a9('0x48')][_0x4f4d40['linkedid']]){var _0x3afd00=RpcVoiceTransferReport[_0x11a9('0x48')][_0x4f4d40[_0x11a9('0x49')]];_0x3afd00['transfereelinkedid']=_0x4f4d40[_0x11a9('0x4a')];RpcVoiceTransferReport[_0x11a9('0x4b')](_0x3afd00);delete RpcVoiceTransferReport[_0x11a9('0x48')][_0x4f4d40[_0x11a9('0x49')]];}if(_['isNil'](_0x4f4d40[_0x11a9('0x38')])){_0x4f4d40['type']=this[_0x11a9('0x31')](_0x4f4d40);}if(_['isNil'](_0x4f4d40[_0x11a9('0x4c')])){var _0x29afd4=_0x4f4d40['channel']['split']('-')[0x0];var _0x55747d=this['agents'][_0x29afd4];if(!_0x55747d)_0x55747d=this[_0x11a9('0x2f')](_0x4f4d40['accountcode']);if(_0x55747d){_0x4f4d40[_0x11a9('0x4c')]=_0x55747d['id'];_0x4f4d40[_0x11a9('0x4d')]=_0x55747d[_0x11a9('0x21')];}}RpcVoiceCallReport[_0x11a9('0x2d')](_0x4f4d40);if(_0x4f4d40['monitor']){for(var _0x285bf8=0x0;_0x285bf8<_0x4f4d40[_0x11a9('0x4e')][_0x11a9('0x26')];_0x285bf8+=0x1){_0x4f4d40[_0x11a9('0x4f')]=_0x4f4d40[_0x11a9('0x4e')][_0x285bf8][_0x11a9('0x50')];_0x4f4d40[_0x11a9('0x51')]=_0x4f4d40[_0x11a9('0x4e')][_0x285bf8]['createdAt'];if(_0x4f4d40[_0x11a9('0x37')]==_0x11a9('0x3f')){_0x4f4d40[_0x11a9('0x34')]=_0x4f4d40[_0x11a9('0x46')];_0x4f4d40[_0x11a9('0x52')]=_0x4f4d40['connectedlinename'];_0x4f4d40[_0x11a9('0x46')]=_0x4f4d40[_0x11a9('0x20')];_0x4f4d40[_0x11a9('0x53')]=_0x4f4d40[_0x11a9('0x4d')];_0x4f4d40[_0x11a9('0x37')]=_0x4f4d40[_0x11a9('0x41')];}else if(_0x4f4d40['exten']==_0x11a9('0x54')){_0x4f4d40[_0x11a9('0x34')]=_0x4f4d40[_0x11a9('0x36')];_0x4f4d40[_0x11a9('0x37')]=_0x4f4d40[_0x11a9('0x41')];}RpcVoiceRecording[_0x11a9('0x2d')](_0x4f4d40);}}};Report[_0x11a9('0x11')][_0x11a9('0x1a')]=function(_0x3f3602){if(_[_0x11a9('0x55')](_0x3f3602)){_0x3f3602['forEach'](function(_0x27f1b0){RpcVoiceAgentReport['create'](_0x27f1b0);});}else{RpcVoiceAgentReport['create'](_0x3f3602);}};Report['prototype']['voiceDialReport']=function(_0x3e7680){RpcVoiceDialReport[_0x11a9('0x2d')](_0x3e7680);var _0x5ce904;var _0x45f6ff;var _0x606a6b=_0x3e7680[_0x11a9('0x32')];if(_[_0x11a9('0x56')](_0x606a6b,'Local')){_0x45f6ff=_0x606a6b[_0x11a9('0x57')](_0x606a6b[_0x11a9('0x58')]('/')+0x1,_0x606a6b[_0x11a9('0x58')]('@'));_0x5ce904=_['find'](this[_0x11a9('0xf')],function(_0x822a2f){return _0x822a2f['mobile']==_0x45f6ff||_0x822a2f[_0x11a9('0x59')]==_0x45f6ff||_0x822a2f[_0x11a9('0x20')]==_0x45f6ff;});}else{_0x45f6ff=_0x606a6b[_0x11a9('0x57')](_0x606a6b[_0x11a9('0x58')]('/')+0x1,_0x606a6b[_0x11a9('0x5a')]('-'));_0x5ce904=this[_0x11a9('0x1e')](_0x45f6ff);}if(_0x5ce904){_0x3e7680[_0x11a9('0x23')]=_[_0x11a9('0x22')](_0x5ce904[_0x11a9('0x23')])?util[_0x11a9('0x24')](_0x11a9('0x25'),_0x5ce904[_0x11a9('0x21')]):_0x5ce904[_0x11a9('0x23')];_0x3e7680[_0x11a9('0x4d')]=_0x5ce904['name'];_0x3e7680[_0x11a9('0x20')]=_0x5ce904[_0x11a9('0x20')];RpcMemberReport[_0x11a9('0x1c')](_0x3e7680);}};Report[_0x11a9('0x11')][_0x11a9('0x4b')]=function(_0x1706bf){RpcVoiceTransferReport['transfers'][_0x1706bf[_0x11a9('0x5b')]]=_0x1706bf;};Report[_0x11a9('0x11')][_0x11a9('0x1d')]=function(_0xea2df1){RpcVoiceTransferReport[_0x11a9('0x1d')](_0xea2df1);};module[_0x11a9('0x5c')]=Report;
\ No newline at end of file
index 3758334..408cedc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6208=['info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','username','stateRegistry','merge','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','device','debug','local','toLowerCase','toNumber','stateTime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','accountcode','updateStatusRealtime','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','peerstatus','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','then','catch','error','[userReport][sipshowregistry]','resolve','actionDeviceStateList','[userReport][devicestatelist]','inspect','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit'];(function(_0x18f156,_0x27534c){var _0x52b030=function(_0x3894d4){while(--_0x3894d4){_0x18f156['push'](_0x18f156['shift']());}};_0x52b030(++_0x27534c);}(_0x6208,0x107));var _0x8620=function(_0x2b152a,_0x3dd988){_0x2b152a=_0x2b152a-0x0;var _0x2ad4c7=_0x6208[_0x2b152a];return _0x2ad4c7;};'use strict';var _=require('lodash');var moment=require(_0x8620('0x0'));var util=require(_0x8620('0x1'));var Redis=require('ioredis');var BPromise=require('bluebird');var config=require(_0x8620('0x2'));var logger=require(_0x8620('0x3'))(_0x8620('0x4'));var ami=require(_0x8620('0x5'));config[_0x8620('0x6')]=_['defaults'](config[_0x8620('0x6')],{'host':_0x8620('0x7'),'port':0x18eb});var io=require(_0x8620('0x8'))(new Redis(config[_0x8620('0x6')]));function UserReport(_0xed5f04){this[_0x8620('0x9')]=_0xed5f04['trunks'];this[_0x8620('0xa')]=_0xed5f04[_0x8620('0xa')];this[_0x8620('0xb')]=_0xed5f04['telephones'];ami['on'](_0x8620('0xc'),this['syncRegistry'][_0x8620('0xd')](this));ami['on'](_0x8620('0xe'),this[_0x8620('0xf')][_0x8620('0xd')](this));ami['on'](_0x8620('0x10'),this[_0x8620('0x11')][_0x8620('0xd')](this));ami['on']('peerstatus',this[_0x8620('0x12')][_0x8620('0xd')](this));return this[_0x8620('0x13')]();}function showSipRegistrations(){Promise['resolve']()[_0x8620('0x14')](ami['actionSipShowRegistry']())[_0x8620('0x15')](function(_0x5a53b3){logger[_0x8620('0x16')](_0x8620('0x17'),util['inspect'](_0x5a53b3,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8620('0x18')]()['then'](ami[_0x8620('0x19')]())[_0x8620('0x15')](function(_0x56f799){logger[_0x8620('0x16')](_0x8620('0x1a'),util[_0x8620('0x1b')](_0x56f799,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x8620('0x18')]()['then'](ami[_0x8620('0x1c')]())[_0x8620('0x15')](function(_0x24ba3d){logger['error']('[userReport][sippeerstatus]',util['inspect'](_0x24ba3d,{'showHidden':![],'depth':null}));});}UserReport[_0x8620('0x1d')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x8620('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x8620('0x1d')][_0x8620('0x1e')]=function(_0x8a9c71){return _0x8a9c71!==null&&!_[_0x8620('0x1f')](_0x8a9c71);};UserReport[_0x8620('0x1d')][_0x8620('0x20')]=function(_0x1f059c,_0x358baf,_0xc4d470){io['to'](_0x1f059c)[_0x8620('0x20')](_0x358baf,_0xc4d470);};UserReport['prototype'][_0x8620('0xf')]=function(_0x388580){try{if(this[_0x8620('0x1e')](_0x388580)){logger[_0x8620('0x21')](_0x8620('0x22'),_0x388580['username'],_0x388580[_0x8620('0x23')]);logger['debug'](_0x8620('0x24'),util[_0x8620('0x1b')](_0x388580,{'showHidden':![],'depth':null}));var _0x5dad1f=_[_0x8620('0x25')](this[_0x8620('0x9')],{'defaultuser':_0x388580[_0x8620('0x26')]});if(_0x5dad1f){_0x388580[_0x8620('0x27')]=_0x388580[_0x8620('0x23')];_[_0x8620('0x28')](_0x5dad1f,_[_0x8620('0x29')](_0x388580,['event','actionid',_0x8620('0x26'),_0x8620('0x23')]));logger['debug'](_0x8620('0x2a'),util[_0x8620('0x1b')](_0x5dad1f,{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),_0x5dad1f['name']),_0x8620('0x2d'),_0x5dad1f);}}}catch(_0x1831c9){logger['error'](_0x8620('0x24'),util[_0x8620('0x1b')](_0x1831c9,{'showHidden':![],'depth':null}));}};UserReport[_0x8620('0x1d')][_0x8620('0x11')]=function(_0x8103cb){try{if(this['isNotNull'](_0x8103cb)){logger[_0x8620('0x21')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x8103cb[_0x8620('0x2e')],_0x8103cb[_0x8620('0x23')]);logger[_0x8620('0x2f')]('[userReport][devicestatechange]',util[_0x8620('0x1b')](_0x8103cb,{'showHidden':![],'depth':null}));if(this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]){if(!this[_0x8620('0xa')][_0x8103cb['device']][_0x8620('0x30')]||_0x8103cb['state']['toLowerCase']()=='inuse'){this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x30')]=![];if(this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]['state']!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){this[_0x8620('0xa')][_0x8103cb['device']]['stateTime']=_[_0x8620('0x32')](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]();this[_0x8620('0xa')][_0x8103cb[_0x8620('0x2e')]]['updateStatusRealtime'](_0x8103cb);}}else if(this[_0x8620('0xb')][_0x8103cb['device']]){if(this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]]['state']!==_0x8103cb[_0x8620('0x23')]['toLowerCase']()){this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x33')]=_[_0x8620('0x32')](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0xb')][_0x8103cb['device']][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')]['toLowerCase']();logger['debug'](_0x8620('0x34'),util[_0x8620('0x1b')](this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util['format']('telephone:%s',this['telephones'][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x35')]),_0x8620('0x36'),this[_0x8620('0xb')][_0x8103cb[_0x8620('0x2e')]]);}else if(this['trunks'][_0x8103cb[_0x8620('0x2e')]]){if(this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]][_0x8620('0x23')]!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]]['stateTime']=_['toNumber'](moment()[_0x8620('0x2b')]('x'));}this[_0x8620('0x9')][_0x8103cb['device']][_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]();logger[_0x8620('0x2f')](_0x8620('0x37'),util[_0x8620('0x1b')](this[_0x8620('0x9')][_0x8103cb[_0x8620('0x2e')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),this[_0x8620('0x9')][_0x8103cb['device']][_0x8620('0x35')]),_0x8620('0x2d'),this[_0x8620('0x9')][_0x8103cb['device']]);}else if(_[_0x8620('0x38')](_0x8103cb[_0x8620('0x2e')],_0x8620('0x39'))){var _0x5ef815=_0x8103cb[_0x8620('0x2e')];var _0x3a1449=_0x5ef815[_0x8620('0x3a')](_0x5ef815['indexOf']('/')+0x1,_0x5ef815[_0x8620('0x3b')]('@'));var _0x2fa468=_[_0x8620('0x25')](this['agents'],function(_0x1e6ea9){return _0x1e6ea9[_0x8620('0x3c')]==_0x3a1449||_0x1e6ea9[_0x8620('0x3d')]==_0x3a1449||_0x1e6ea9[_0x8620('0x3e')]==_0x3a1449;});if(_0x2fa468){if(_0x2fa468[_0x8620('0x23')]!==_0x8103cb[_0x8620('0x23')][_0x8620('0x31')]()){_0x2fa468[_0x8620('0x33')]=_['toNumber'](moment()['format']('x'));}_0x2fa468[_0x8620('0x23')]=_0x8103cb[_0x8620('0x23')]['toLowerCase']();_0x2fa468['local']=!![];_0x2fa468[_0x8620('0x3f')](_0x8103cb);}}}}catch(_0xb466d0){logger[_0x8620('0x16')](_0x8620('0x40'),util['inspect'](_0xb466d0,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncPeerStatus']=function(_0x4e8ef2){try{if(this[_0x8620('0x1e')](_0x4e8ef2)&&this['isNotNull'](_0x4e8ef2['peerstatus'])){logger[_0x8620('0x21')](_0x8620('0x41'),_0x4e8ef2[_0x8620('0x42')],_0x4e8ef2[_0x8620('0x43')],_0x4e8ef2[_0x8620('0x44')]);logger[_0x8620('0x2f')]('[userReport][peerstatus]',util['inspect'](_0x4e8ef2,{'showHidden':![],'depth':null}));if(this[_0x8620('0xa')][_0x4e8ef2[_0x8620('0x42')]]){if(!this['agents'][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x30')]||_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]()=='registered'){this['agents'][_0x4e8ef2['peer']][_0x8620('0x30')]=![];this[_0x8620('0xa')][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x45')]=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this['agents'][_0x4e8ef2['peer']]['address']=_0x4e8ef2[_0x8620('0x43')];this['agents'][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x3f')](_0x4e8ef2);}}else if(this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]){this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]['status']=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]['address']=_0x4e8ef2['address'];logger[_0x8620('0x2f')](_0x8620('0x46'),util['inspect'](this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x47'),this[_0x8620('0xb')][_0x4e8ef2['peer']][_0x8620('0x35')]),_0x8620('0x36'),this[_0x8620('0xb')][_0x4e8ef2[_0x8620('0x42')]]);}else if(this['trunks'][_0x4e8ef2[_0x8620('0x42')]]){this[_0x8620('0x9')][_0x4e8ef2['peer']][_0x8620('0x45')]=_0x4e8ef2[_0x8620('0x44')][_0x8620('0x31')]();this[_0x8620('0x9')][_0x4e8ef2[_0x8620('0x42')]][_0x8620('0x43')]=_0x4e8ef2[_0x8620('0x43')];logger[_0x8620('0x2f')](_0x8620('0x48'),util[_0x8620('0x1b')](this[_0x8620('0x9')][_0x4e8ef2['peer']],{'showHidden':![],'depth':null}));this[_0x8620('0x20')](util[_0x8620('0x2b')](_0x8620('0x2c'),this[_0x8620('0x9')][_0x4e8ef2['peer']][_0x8620('0x35')]),_0x8620('0x2d'),this['trunks'][_0x4e8ef2[_0x8620('0x42')]]);}}}catch(_0x7c58e5){logger[_0x8620('0x16')](_0x8620('0x49'),util[_0x8620('0x1b')](_0x7c58e5,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0x4b67=['[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','find','stateRegistry','merge','omit','event','debug','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','inuse','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','accountcode','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peer','registered','status','updateStatusRealtime'];(function(_0x32ca62,_0x18fe6a){var _0x175d88=function(_0x3bc7ec){while(--_0x3bc7ec){_0x32ca62['push'](_0x32ca62['shift']());}};_0x175d88(++_0x18fe6a);}(_0x4b67,0x9d));var _0x74b6=function(_0x64a104,_0x2128d8){_0x64a104=_0x64a104-0x0;var _0x306f6d=_0x4b67[_0x64a104];return _0x306f6d;};'use strict';var _=require('lodash');var moment=require(_0x74b6('0x0'));var util=require('util');var Redis=require(_0x74b6('0x1'));var BPromise=require(_0x74b6('0x2'));var config=require(_0x74b6('0x3'));var logger=require(_0x74b6('0x4'))(_0x74b6('0x5'));var ami=require('../ami');config[_0x74b6('0x6')]=_[_0x74b6('0x7')](config[_0x74b6('0x6')],{'host':_0x74b6('0x8'),'port':0x18eb});var io=require(_0x74b6('0x9'))(new Redis(config['redis']));function UserReport(_0x26b361){this[_0x74b6('0xa')]=_0x26b361[_0x74b6('0xa')];this['agents']=_0x26b361[_0x74b6('0xb')];this[_0x74b6('0xc')]=_0x26b361[_0x74b6('0xc')];ami['on'](_0x74b6('0xd'),this[_0x74b6('0xe')][_0x74b6('0xf')](this));ami['on'](_0x74b6('0x10'),this[_0x74b6('0xe')][_0x74b6('0xf')](this));ami['on']('devicestatechange',this[_0x74b6('0x11')][_0x74b6('0xf')](this));ami['on'](_0x74b6('0x12'),this[_0x74b6('0x13')][_0x74b6('0xf')](this));return this[_0x74b6('0x14')]();}function showSipRegistrations(){Promise[_0x74b6('0x15')]()['then'](ami[_0x74b6('0x16')]())[_0x74b6('0x17')](function(_0x2a1e89){logger[_0x74b6('0x18')](_0x74b6('0x19'),util[_0x74b6('0x1a')](_0x2a1e89,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x74b6('0x15')]()[_0x74b6('0x1b')](ami[_0x74b6('0x1c')]())['catch'](function(_0x4cd973){logger[_0x74b6('0x18')](_0x74b6('0x1d'),util['inspect'](_0x4cd973,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x74b6('0x15')]()['then'](ami[_0x74b6('0x1e')]())[_0x74b6('0x17')](function(_0x15a1aa){logger[_0x74b6('0x18')](_0x74b6('0x1f'),util[_0x74b6('0x1a')](_0x15a1aa,{'showHidden':![],'depth':null}));});}UserReport[_0x74b6('0x20')][_0x74b6('0x14')]=function(){setInterval(function(){BPromise[_0x74b6('0x15')]()[_0x74b6('0x1b')](showSipRegistrations())[_0x74b6('0x1b')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x74b6('0x20')][_0x74b6('0x21')]=function(_0x209ad1){return _0x209ad1!==null&&!_[_0x74b6('0x22')](_0x209ad1);};UserReport[_0x74b6('0x20')][_0x74b6('0x23')]=function(_0x57e0de,_0x1b0cde,_0x4da1cc){io['to'](_0x57e0de)[_0x74b6('0x23')](_0x1b0cde,_0x4da1cc);};UserReport[_0x74b6('0x20')]['syncRegistry']=function(_0x71cc82){try{if(this[_0x74b6('0x21')](_0x71cc82)){logger[_0x74b6('0x24')](_0x74b6('0x25'),_0x71cc82[_0x74b6('0x26')],_0x71cc82[_0x74b6('0x27')]);logger['debug']('[userReport][registry]',util[_0x74b6('0x1a')](_0x71cc82,{'showHidden':![],'depth':null}));var _0x436f3d=_[_0x74b6('0x28')](this[_0x74b6('0xa')],{'defaultuser':_0x71cc82[_0x74b6('0x26')]});if(_0x436f3d){_0x71cc82[_0x74b6('0x29')]=_0x71cc82['state'];_[_0x74b6('0x2a')](_0x436f3d,_[_0x74b6('0x2b')](_0x71cc82,[_0x74b6('0x2c'),'actionid','username','state']));logger[_0x74b6('0x2d')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x74b6('0x1a')](_0x436f3d,{'showHidden':![],'depth':null}));this[_0x74b6('0x23')](util[_0x74b6('0x2e')](_0x74b6('0x2f'),_0x436f3d[_0x74b6('0x30')]),_0x74b6('0x31'),_0x436f3d);}}}catch(_0x4053da){logger[_0x74b6('0x18')]('[userReport][registry]',util[_0x74b6('0x1a')](_0x4053da,{'showHidden':![],'depth':null}));}};UserReport[_0x74b6('0x20')]['syncDeviceState']=function(_0x38f307){try{if(this[_0x74b6('0x21')](_0x38f307)){logger[_0x74b6('0x24')](_0x74b6('0x32'),_0x38f307['device'],_0x38f307[_0x74b6('0x27')]);logger[_0x74b6('0x2d')]('[userReport][devicestatechange]',util['inspect'](_0x38f307,{'showHidden':![],'depth':null}));if(this[_0x74b6('0xb')][_0x38f307['device']]){if(!this[_0x74b6('0xb')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x34')]||_0x38f307['state'][_0x74b6('0x35')]()==_0x74b6('0x36')){this[_0x74b6('0xb')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x34')]=![];if(this[_0x74b6('0xb')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x27')]!==_0x38f307[_0x74b6('0x27')][_0x74b6('0x35')]()){this[_0x74b6('0xb')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x37')]=_[_0x74b6('0x38')](moment()[_0x74b6('0x2e')]('x'));}this[_0x74b6('0xb')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x27')]=_0x38f307['state'][_0x74b6('0x35')]();this[_0x74b6('0xb')][_0x38f307['device']]['updateStatusRealtime'](_0x38f307);}}else if(this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]]){if(this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]]['state']!==_0x38f307[_0x74b6('0x27')][_0x74b6('0x35')]()){this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x37')]=_[_0x74b6('0x38')](moment()['format']('x'));}this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x27')]=_0x38f307[_0x74b6('0x27')][_0x74b6('0x35')]();logger[_0x74b6('0x2d')](_0x74b6('0x39'),util['inspect'](this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]],{'showHidden':![],'depth':null}));this[_0x74b6('0x23')](util[_0x74b6('0x2e')](_0x74b6('0x3a'),this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x30')]),_0x74b6('0x3b'),this[_0x74b6('0xc')][_0x38f307[_0x74b6('0x33')]]);}else if(this[_0x74b6('0xa')][_0x38f307[_0x74b6('0x33')]]){if(this[_0x74b6('0xa')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x27')]!==_0x38f307['state'][_0x74b6('0x35')]()){this['trunks'][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x37')]=_[_0x74b6('0x38')](moment()[_0x74b6('0x2e')]('x'));}this[_0x74b6('0xa')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x27')]=_0x38f307[_0x74b6('0x27')]['toLowerCase']();logger[_0x74b6('0x2d')](_0x74b6('0x3c'),util[_0x74b6('0x1a')](this['trunks'][_0x38f307[_0x74b6('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x74b6('0x2e')](_0x74b6('0x2f'),this[_0x74b6('0xa')][_0x38f307[_0x74b6('0x33')]][_0x74b6('0x30')]),_0x74b6('0x31'),this[_0x74b6('0xa')][_0x38f307[_0x74b6('0x33')]]);}else if(_[_0x74b6('0x3d')](_0x38f307[_0x74b6('0x33')],_0x74b6('0x3e'))){var _0x264d8a=_0x38f307[_0x74b6('0x33')];var _0x487267=_0x264d8a[_0x74b6('0x3f')](_0x264d8a[_0x74b6('0x40')]('/')+0x1,_0x264d8a[_0x74b6('0x40')]('@'));var _0x544b6d=_[_0x74b6('0x28')](this['agents'],function(_0x257c73){return _0x257c73[_0x74b6('0x41')]==_0x487267||_0x257c73['phone']==_0x487267||_0x257c73[_0x74b6('0x42')]==_0x487267;});if(_0x544b6d){if(_0x544b6d['state']!==_0x38f307[_0x74b6('0x27')][_0x74b6('0x35')]()){_0x544b6d['stateTime']=_['toNumber'](moment()[_0x74b6('0x2e')]('x'));}_0x544b6d[_0x74b6('0x27')]=_0x38f307['state'][_0x74b6('0x35')]();_0x544b6d[_0x74b6('0x34')]=!![];_0x544b6d['updateStatusRealtime'](_0x38f307);}}}}catch(_0x472756){logger[_0x74b6('0x18')](_0x74b6('0x43'),util['inspect'](_0x472756,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x74b6('0x13')]=function(_0x2993fb){try{if(this['isNotNull'](_0x2993fb)&&this[_0x74b6('0x21')](_0x2993fb[_0x74b6('0x12')])){logger[_0x74b6('0x24')](_0x74b6('0x44'),_0x2993fb['peer'],_0x2993fb[_0x74b6('0x45')],_0x2993fb[_0x74b6('0x12')]);logger[_0x74b6('0x2d')]('[userReport][peerstatus]',util['inspect'](_0x2993fb,{'showHidden':![],'depth':null}));if(this[_0x74b6('0xb')][_0x2993fb[_0x74b6('0x46')]]){if(!this[_0x74b6('0xb')][_0x2993fb['peer']][_0x74b6('0x34')]||_0x2993fb['peerstatus'][_0x74b6('0x35')]()==_0x74b6('0x47')){this[_0x74b6('0xb')][_0x2993fb['peer']][_0x74b6('0x34')]=![];this[_0x74b6('0xb')][_0x2993fb[_0x74b6('0x46')]][_0x74b6('0x48')]=_0x2993fb[_0x74b6('0x12')][_0x74b6('0x35')]();this[_0x74b6('0xb')][_0x2993fb[_0x74b6('0x46')]]['address']=_0x2993fb[_0x74b6('0x45')];this[_0x74b6('0xb')][_0x2993fb['peer']][_0x74b6('0x49')](_0x2993fb);}}else if(this[_0x74b6('0xc')][_0x2993fb[_0x74b6('0x46')]]){this[_0x74b6('0xc')][_0x2993fb[_0x74b6('0x46')]][_0x74b6('0x48')]=_0x2993fb[_0x74b6('0x12')][_0x74b6('0x35')]();this[_0x74b6('0xc')][_0x2993fb['peer']][_0x74b6('0x45')]=_0x2993fb[_0x74b6('0x45')];logger[_0x74b6('0x2d')](_0x74b6('0x4a'),util[_0x74b6('0x1a')](this['telephones'][_0x2993fb[_0x74b6('0x46')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x74b6('0x2e')]('telephone:%s',this[_0x74b6('0xc')][_0x2993fb['peer']][_0x74b6('0x30')]),_0x74b6('0x3b'),this[_0x74b6('0xc')][_0x2993fb['peer']]);}else if(this[_0x74b6('0xa')][_0x2993fb[_0x74b6('0x46')]]){this[_0x74b6('0xa')][_0x2993fb[_0x74b6('0x46')]][_0x74b6('0x48')]=_0x2993fb[_0x74b6('0x12')][_0x74b6('0x35')]();this['trunks'][_0x2993fb[_0x74b6('0x46')]][_0x74b6('0x45')]=_0x2993fb[_0x74b6('0x45')];logger[_0x74b6('0x2d')](_0x74b6('0x4b'),util[_0x74b6('0x1a')](this[_0x74b6('0xa')][_0x2993fb['peer']],{'showHidden':![],'depth':null}));this[_0x74b6('0x23')](util[_0x74b6('0x2e')](_0x74b6('0x2f'),this[_0x74b6('0xa')][_0x2993fb['peer']]['name']),_0x74b6('0x31'),this['trunks'][_0x2993fb[_0x74b6('0x46')]]);}}}catch(_0x19e3a6){logger[_0x74b6('0x18')]('[userReport][peerstatus]',util[_0x74b6('0x1a')](_0x19e3a6,{'showHidden':![],'depth':null}));}};module[_0x74b6('0x4c')]=UserReport;
\ No newline at end of file
index 845581e..359ae19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['moment','util','ioredis','../../../config/environment','ami','../ami','redis','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','variables','agentcalled','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','inspect','format','YYYY-MM-DD\x20HH:mm:ss','queue','type','inbound','voice','omit','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','agents','user:%s','user:called','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','interface','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','reason','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','destaccountcode','error','[%s][voiceAgentReport][agentcomplete]','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','addVariable','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0x0bb5,0x90));var _0x50bb=function(_0x5dea38,_0x569732){_0x5dea38=_0x5dea38-0x0;var _0x8cff40=_0x0bb5[_0x5dea38];return _0x8cff40;};'use strict';var _=require('lodash');var moment=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var Redis=require(_0x50bb('0x2'));var config=require(_0x50bb('0x3'));var logger=require('../../../config/logger')(_0x50bb('0x4'));var ami=require(_0x50bb('0x5'));config[_0x50bb('0x6')]=_['defaults'](config[_0x50bb('0x6')],{'host':_0x50bb('0x7'),'port':0x18eb});var io=require(_0x50bb('0x8'))(new Redis(config[_0x50bb('0x6')]));function VoiceAgentReport(_0xd0ab68){this[_0x50bb('0x9')]={};this[_0x50bb('0xa')]=_0xd0ab68[_0x50bb('0x9')];this['voiceQueues']=_0xd0ab68[_0x50bb('0xb')];this['agents']=_0xd0ab68['agents'];this[_0x50bb('0xc')]={};ami['on'](_0x50bb('0xd'),this['syncAgentCalled'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0xf'),this['syncAgentConnect']['bind'](this));ami['on'](_0x50bb('0x10'),this[_0x50bb('0x11')]['bind'](this));ami['on'](_0x50bb('0x12'),this[_0x50bb('0x13')]['bind'](this));ami['on'](_0x50bb('0x14'),this['syncAgentComplete'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x15'),this[_0x50bb('0x16')][_0x50bb('0xe')](this));ami['on']('hangup',this['syncHangup'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x17'),this['syncMusicOnHoldStart'][_0x50bb('0xe')](this));ami['on'](_0x50bb('0x18'),this[_0x50bb('0x19')]['bind'](this));ami['on'](_0x50bb('0x1a'),this['syncAttendedTransfer'][_0x50bb('0xe')](this));ami['on']('blindtransfer',this[_0x50bb('0x1b')][_0x50bb('0xe')](this));}VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x1d')]=function(_0x2c7ffb,_0x529c0f,_0x8364c1){io['to'](_0x2c7ffb)[_0x50bb('0x1d')](_0x529c0f,_0x8364c1);};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x1e')]=function(_0xdb0ef0){return _0xdb0ef0!==null&&!_[_0x50bb('0x1f')](_0xdb0ef0);};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentCalled']=function(_0x3a6295){try{if(this[_0x50bb('0x1e')](_0x3a6295)){logger['info'](_0x50bb('0x20'),_0x3a6295[_0x50bb('0x21')],_0x3a6295[_0x50bb('0x22')],_0x3a6295[_0x50bb('0x23')]);logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3a6295,{'showHidden':![],'depth':null}));if(_[_0x50bb('0x1f')](this['channels'][_0x3a6295['uniqueid']])){this['channels'][_0x3a6295['uniqueid']]={};}if(_[_0x50bb('0x1f')](this[_0x50bb('0x9')][_0x3a6295['uniqueid']][_0x3a6295[_0x50bb('0x23')]])){this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295['destuniqueid']]={'agentcalledAt':moment()[_0x50bb('0x26')](_0x50bb('0x27')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x3a6295[_0x50bb('0x28')]]?this[_0x50bb('0xb')][_0x3a6295[_0x50bb('0x28')]]['mandatoryDisposition']||![]:![],'type':this[_0x50bb('0xb')][_0x3a6295['queue']]?this[_0x50bb('0xb')][_0x3a6295['queue']][_0x50bb('0x29')]||_0x50bb('0x2a'):_0x50bb('0x2a'),'variables':this[_0x50bb('0xc')][_0x3a6295['uniqueid']],'motionChannel':_0x50bb('0x2b')};}_['merge'](this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295['destuniqueid']],_[_0x50bb('0x2c')](_0x3a6295,[_0x50bb('0x2d'),'privilege']));logger[_0x50bb('0x24')](_0x50bb('0x2e'),_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami['emit'](_0x50bb('0x2f'),this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]);var _0x24900a={'id':this[_0x50bb('0x30')][_0x3a6295['interface']]['id'],'calleridnum':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]['calleridnum'],'queue':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]]['queue'],'variables':this[_0x50bb('0x9')][_0x3a6295[_0x50bb('0x21')]][_0x3a6295[_0x50bb('0x23')]][_0x50bb('0xc')]};logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x3a6295[_0x50bb('0x21')],util['inspect'](_0x24900a,{'showHidden':![],'depth':null}));this[_0x50bb('0x1d')](util[_0x50bb('0x26')](_0x50bb('0x31'),_0x3a6295[_0x50bb('0x22')]),_0x50bb('0x32'),_0x24900a);}}catch(_0x1cf639){logger['error'](_0x50bb('0x33'),_0x3a6295[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x1cf639,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentConnect']=function(_0x191a47){try{if(this[_0x50bb('0x1e')](_0x191a47)){if(this['channels'][_0x191a47[_0x50bb('0x21')]]){logger[_0x50bb('0x24')](_0x50bb('0x34'),_0x191a47[_0x50bb('0x21')],util['inspect'](_0x191a47,{'showHidden':![],'depth':null}));for(var _0x14d925 in this[_0x50bb('0x9')][_0x191a47['uniqueid']]){if(this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x50bb('0x35')](_0x14d925)){if(_0x191a47[_0x50bb('0x23')]===_0x14d925){logger['info'](_0x50bb('0x36'),_0x191a47[_0x50bb('0x21')],_0x191a47[_0x50bb('0x22')],_0x191a47[_0x50bb('0x23')]);this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x37')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x38')]=_0x191a47['connectedlinename'];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]['connectedlinenum']=_0x191a47[_0x50bb('0x39')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3a')]=_0x191a47[_0x50bb('0x3a')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3b')]=_0x191a47[_0x50bb('0x3b')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3c')]=_0x191a47[_0x50bb('0x3c')];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3d')]=_0x50bb('0x3e');if(this[_0x50bb('0xa')][this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x21')]]){var _0x34641a=this[_0x50bb('0xa')][this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x21')]]['routealias'];this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x3f')]=_0x34641a;_0x191a47[_0x50bb('0x3f')]=_0x34641a;}_[_0x50bb('0x40')](this['agents'][_0x191a47[_0x50bb('0x41')]],_['pick'](_0x191a47,[_0x50bb('0x28'),_0x50bb('0x42'),'routealias']));logger[_0x50bb('0x24')](_0x50bb('0x43'),_0x191a47['uniqueid'],util[_0x50bb('0x25')](this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')](_0x50bb('0x44'),this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47['destuniqueid']]);logger[_0x50bb('0x24')](_0x50bb('0x45'),_0x191a47[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x50bb('0x31'),_0x191a47[_0x50bb('0x22')]),_0x50bb('0x46'),this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x191a47[_0x50bb('0x23')]]);}else if(!this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x10')]&&!this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925][_0x50bb('0x14')]){logger[_0x50bb('0x47')](_0x50bb('0x48'),_0x191a47[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x22')],_0x14d925);this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x49')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925][_0x50bb('0x4a')]=_0x191a47[_0x50bb('0x23')];this['channels'][_0x191a47[_0x50bb('0x21')]][_0x14d925]['answeredelsewheremembername']=_0x191a47[_0x50bb('0x22')];this[_0x50bb('0x9')][_0x191a47['uniqueid']][_0x14d925]['lastevent']='answered_elsewhere';this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]['reason']=_0x50bb('0x4b');logger[_0x50bb('0x24')](_0x50bb('0x4c'),_0x191a47[_0x50bb('0x21')],util['inspect'](this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')](_0x50bb('0x4d'),this[_0x50bb('0x9')][_0x191a47[_0x50bb('0x21')]][_0x14d925]);}}}}}}catch(_0x5adb11){logger['error'](_0x50bb('0x4e'),_0x191a47[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x5adb11,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x11')]=function(_0x43b9b1){try{if(this[_0x50bb('0x1e')](_0x43b9b1)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x43b9b1,{'showHidden':![],'depth':null}));if(this['channels'][_0x43b9b1[_0x50bb('0x21')]]&&this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]]){logger[_0x50bb('0x47')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x43b9b1[_0x50bb('0x21')],_0x43b9b1[_0x50bb('0x22')],_0x43b9b1[_0x50bb('0x23')]);this[_0x50bb('0x9')][_0x43b9b1['uniqueid']][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1['destuniqueid']]['agentringnoanswerAt']=moment()['format'](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x3d')]='rejected';this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]][_0x50bb('0x4f')]=_0x50bb('0x50');logger[_0x50bb('0x24')](_0x50bb('0x51'),_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]],{'showHidden':![],'depth':null}));ami[_0x50bb('0x1d')]('custom:agentringnoanswer',this[_0x50bb('0x9')][_0x43b9b1[_0x50bb('0x21')]][_0x43b9b1[_0x50bb('0x23')]]);}}}catch(_0x567f3a){logger['error'](_0x50bb('0x52'),_0x43b9b1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x567f3a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x56731b){try{if(this[_0x50bb('0x1e')](_0x56731b)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x56731b[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x56731b,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]]){for(var _0x40fcda in this[_0x50bb('0x9')][_0x56731b['uniqueid']]){if(this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x50bb('0x35')](_0x40fcda)&&!this['channels'][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x10')]&&!this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda]['agentcomplete']){logger[_0x50bb('0x47')](_0x50bb('0x53'),_0x56731b[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x22')],_0x40fcda);this['channels'][_0x56731b[_0x50bb('0x21')]][_0x40fcda][_0x50bb('0x10')]=!![];this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda][_0x50bb('0x49')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));this[_0x50bb('0x9')][_0x56731b['uniqueid']][_0x40fcda]['lastevent']=_0x50bb('0x54');this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]][_0x40fcda][_0x50bb('0x4f')]='abandoned';logger['debug'](_0x50bb('0x55'),_0x56731b[_0x50bb('0x21')],util['inspect'](this['channels'][_0x56731b['uniqueid']][_0x40fcda],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0x50bb('0x9')][_0x56731b[_0x50bb('0x21')]][_0x40fcda]);}}}}}catch(_0x303e90){logger['error'](_0x50bb('0x56'),_0x56731b['uniqueid'],util[_0x50bb('0x25')](_0x303e90,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAgentComplete']=function(_0x33186a){try{if(this[_0x50bb('0x1e')](_0x33186a)){logger[_0x50bb('0x24')](_0x50bb('0x57'),_0x33186a[_0x50bb('0x21')],util['inspect'](_0x33186a,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]]){for(var _0x561348 in this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]]){if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x50bb('0x35')](_0x561348)){if(this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x37')]&&!this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x14')]){logger['info'](_0x50bb('0x58'),_0x33186a['uniqueid'],this['channels'][_0x33186a['uniqueid']][_0x561348]['membername'],_0x561348);this[_0x50bb('0x9')][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x14')]=!![];this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x59')]=moment()[_0x50bb('0x26')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x50bb('0x9')][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x3d')]='complete';this['channels'][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x4f')]=_0x33186a[_0x50bb('0x4f')]==_0x50bb('0x5a')?_0x50bb('0x5b'):_0x33186a[_0x50bb('0x4f')];this['channels'][_0x33186a['uniqueid']][_0x561348][_0x50bb('0x5c')]=_0x33186a[_0x50bb('0x5c')];if(this[_0x50bb('0xb')][_0x33186a['queue']]&&this[_0x50bb('0xb')][_0x33186a[_0x50bb('0x28')]][_0x50bb('0x5d')]){this['channels'][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x5e')]=this['voiceQueues'][_0x33186a['queue']]['acwTimeout'];this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348][_0x50bb('0x5f')]=!![];}this[_0x50bb('0x30')][_0x33186a[_0x50bb('0x41')]]=_['omit'](this['agents'][_0x33186a[_0x50bb('0x41')]],[_0x50bb('0x28'),_0x50bb('0x42')]);logger[_0x50bb('0x24')](_0x50bb('0x60'),_0x33186a[_0x50bb('0x21')],util[_0x50bb('0x25')](this['channels'][_0x33186a['uniqueid']][_0x561348],{'showHidden':![],'depth':null}));ami['emit'](_0x50bb('0x61'),this[_0x50bb('0x9')][_0x33186a[_0x50bb('0x21')]][_0x561348]);logger[_0x50bb('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:',_0x33186a[_0x50bb('0x21')],util[_0x50bb('0x25')]({'id':this[_0x50bb('0x30')][_0x33186a['interface']]['id'],'destaccountcode':_0x33186a[_0x50bb('0x62')]},{'showHidden':![],'depth':null}));this[_0x50bb('0x1d')](util[_0x50bb('0x26')]('user:%s',_0x33186a[_0x50bb('0x22')]),'user:agentcomplete',{'id':this['agents'][_0x33186a[_0x50bb('0x41')]]['id'],'destaccountcode':_0x33186a[_0x50bb('0x62')]});}}}}}}catch(_0x4fff4d){logger[_0x50bb('0x63')](_0x50bb('0x64'),_0x33186a['uniqueid'],util[_0x50bb('0x25')](_0x4fff4d,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x50bb('0x16')]=function(_0x466be2){try{if(this[_0x50bb('0x1e')](_0x466be2)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][varset]\x20event:',_0x466be2['uniqueid'],util[_0x50bb('0x25')](_0x466be2,{'showHidden':![],'depth':null}));this['addVariable'](_0x466be2[_0x50bb('0x21')],_[_0x50bb('0x65')](_0x466be2[_0x50bb('0x66')])[0x0],_0x466be2[_0x50bb('0x67')]);if(this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]]){for(var _0x4faf3d in this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]]){if(this['channels'][_0x466be2['uniqueid']][_0x50bb('0x35')](_0x4faf3d)){logger[_0x50bb('0x47')](_0x50bb('0x68'),_0x466be2[_0x50bb('0x21')],_0x4faf3d,_[_0x50bb('0x65')](_0x466be2[_0x50bb('0x66')])[0x0],_0x466be2['value']);if(_[_0x50bb('0x1f')](this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]][_0x4faf3d]['variables'])){this[_0x50bb('0x9')][_0x466be2[_0x50bb('0x21')]][_0x4faf3d]['variables']={};}this[_0x50bb('0x9')][_0x466be2['uniqueid']][_0x4faf3d][_0x50bb('0xc')]=this['variables'][_0x466be2[_0x50bb('0x21')]];}}}}}catch(_0x3a21f4){logger['error'](_0x50bb('0x69'),_0x466be2[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3a21f4,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x6a')]=function(_0x189b59,_0x2e19d1,_0x3bdbbe){var _0x587d96=['rtpaudioqos',_0x50bb('0x6b'),_0x50bb('0x6c'),'rtpaudioqosjitterbridged',_0x50bb('0x6d'),_0x50bb('0x6e'),_0x50bb('0x6f'),'rtpaudioqosrttbridged','sipcallid','sipuri',_0x50bb('0x70'),_0x50bb('0x71'),'membercalls','memberdynamic',_0x50bb('0x72'),_0x50bb('0x73'),_0x50bb('0x22'),_0x50bb('0x74'),_0x50bb('0x75')];if(!_[_0x50bb('0x76')](_0x2e19d1)&&!_['includes'](_0x587d96,_0x2e19d1)){if(_[_0x50bb('0x1f')](this[_0x50bb('0xc')][_0x189b59])){this[_0x50bb('0xc')][_0x189b59]={};}this['variables'][_0x189b59][_0x2e19d1]=_0x3bdbbe;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x426de4){try{if(this[_0x50bb('0x1e')](_0x426de4)){logger['debug'](_0x50bb('0x77'),_0x426de4[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x426de4,{'showHidden':![],'depth':null}));if(this['channels'][_0x426de4[_0x50bb('0x21')]]){for(var _0x41446a in this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]]){if(this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x50bb('0x35')](_0x41446a)){if(this[_0x50bb('0x9')][_0x426de4['uniqueid']][_0x41446a][_0x50bb('0x4f')]==_0x50bb('0x5a')&&this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x41446a][_0x50bb('0x14')]){logger['info'](_0x50bb('0x78'),_0x426de4[_0x50bb('0x21')],_0x41446a);this[_0x50bb('0x9')][_0x426de4[_0x50bb('0x21')]][_0x41446a][_0x50bb('0x59')]=moment()[_0x50bb('0x26')](_0x50bb('0x27'));}}}logger[_0x50bb('0x24')](_0x50bb('0x79'),_0x426de4['uniqueid'],util[_0x50bb('0x25')](_[_0x50bb('0x7a')](this['channels'][_0x426de4[_0x50bb('0x21')]]),{'showHidden':![],'depth':null}));ami['emit']('custom:voiceAgentReport',_[_0x50bb('0x7a')](this[_0x50bb('0x9')][_0x426de4['uniqueid']]));delete this[_0x50bb('0x9')][_0x426de4['uniqueid']];}if(this[_0x50bb('0xc')][_0x426de4[_0x50bb('0x21')]]){delete this[_0x50bb('0xc')][_0x426de4[_0x50bb('0x21')]];}}}catch(_0x44a27a){logger['error'](_0x50bb('0x7b'),_0x426de4[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x44a27a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')]['syncAttendedTransfer']=function(_0x3d5c4f){try{if(this[_0x50bb('0x1e')](_0x3d5c4f)){logger[_0x50bb('0x24')](_0x50bb('0x7c'),_0x3d5c4f['uniqueid'],util[_0x50bb('0x25')](_0x3d5c4f,{'showHidden':![],'depth':null}));if(this['channels'][_0x3d5c4f['transfereeuniqueid']]){for(var _0x5cd8f0 in this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']]){if(this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x50bb('0x35')](_0x5cd8f0)){if(_0x3d5c4f[_0x50bb('0x7e')]===_0x5cd8f0){logger[_0x50bb('0x47')](_0x50bb('0x7f'),_0x3d5c4f[_0x50bb('0x21')],this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0]['membername'],_0x5cd8f0);var _0x3e954f=moment();this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x14')]=!![];this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x59')]=moment()[_0x50bb('0x26')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0][_0x50bb('0x3d')]=_0x50bb('0x80');this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0][_0x50bb('0x4f')]=_0x50bb('0x5a');this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]][_0x5cd8f0]['talktime']=_0x3e954f[_0x50bb('0x81')](this[_0x50bb('0x9')][_0x3d5c4f['transfereeuniqueid']][_0x5cd8f0][_0x50bb('0x37')],_0x50bb('0x82'));}}}}if(this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]]){var _0x174786=this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]];this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x83')]]=this[_0x50bb('0x9')][_0x3d5c4f[_0x50bb('0x7d')]];this['channels'][_0x3d5c4f[_0x50bb('0x7d')]]=_0x174786;}}}catch(_0x53b947){logger[_0x50bb('0x63')]('[%s][voiceAgentReport][attendedtransfer]',_0x3d5c4f[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x53b947,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x50bb('0x1b')]=function(_0x213235){try{if(this[_0x50bb('0x1e')](_0x213235)){logger[_0x50bb('0x24')](_0x50bb('0x84'),_0x213235[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x213235,{'showHidden':![],'depth':null}));if(this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']]){for(var _0x5e942c in this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']]){if(this[_0x50bb('0x9')][_0x213235[_0x50bb('0x7d')]][_0x50bb('0x35')](_0x5e942c)){if(_0x213235['transfereruniqueid']===_0x5e942c){logger[_0x50bb('0x47')](_0x50bb('0x85'),_0x213235[_0x50bb('0x21')],this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x22')],_0x5e942c);var _0x4545cf=moment();this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x14')]=!![];this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c][_0x50bb('0x59')]=_0x4545cf;this[_0x50bb('0x9')][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['lastevent']=_0x50bb('0x80');this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['reason']=_0x50bb('0x5a');this[_0x50bb('0x9')][_0x213235['transfereeuniqueid']][_0x5e942c][_0x50bb('0x5c')]=_0x4545cf[_0x50bb('0x81')](this['channels'][_0x213235[_0x50bb('0x7d')]][_0x5e942c]['agentconnectAt'],_0x50bb('0x82'));}}}}}}catch(_0x3b61d3){logger['error'](_0x50bb('0x86'),_0x213235['uniqueid'],util[_0x50bb('0x25')](_0x3b61d3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x87')]=function(_0x33d07e){var _0x31d30c='';try{if(this[_0x50bb('0x1e')](_0x33d07e)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x33d07e[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x33d07e,{'showHidden':![],'depth':null}));if(_0x33d07e[_0x50bb('0x88')]){_0x31d30c=_0x33d07e[_0x50bb('0x88')][_0x50bb('0x89')](0x0,_0x33d07e[_0x50bb('0x88')][_0x50bb('0x8a')]('-'));if(this[_0x50bb('0x30')][_0x31d30c]){logger[_0x50bb('0x47')](_0x50bb('0x8b'),_0x33d07e['uniqueid'],_0x31d30c);this[_0x50bb('0x30')][_0x31d30c][_0x50bb('0x8c')]=!![];}}}}catch(_0x3b575a){logger[_0x50bb('0x63')]('[%s][voiceAgentReport][musiconholdstart]',_0x33d07e[_0x50bb('0x21')],util[_0x50bb('0x25')](_0x3b575a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x50bb('0x1c')][_0x50bb('0x19')]=function(_0xe4cfa1){var _0x25dace='';try{if(this[_0x50bb('0x1e')](_0xe4cfa1)){logger[_0x50bb('0x24')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0xe4cfa1[_0x50bb('0x21')],util['inspect'](_0xe4cfa1,{'showHidden':![],'depth':null}));if(_0xe4cfa1[_0x50bb('0x88')]){_0x25dace=_0xe4cfa1[_0x50bb('0x88')][_0x50bb('0x89')](0x0,_0xe4cfa1['channel'][_0x50bb('0x8a')]('-'));if(this[_0x50bb('0x30')][_0x25dace]){logger['info'](_0x50bb('0x8d'),_0xe4cfa1['uniqueid'],_0x25dace);this[_0x50bb('0x30')][_0x25dace][_0x50bb('0x8c')]=![];}}}}catch(_0xab05e9){logger[_0x50bb('0x63')](_0x50bb('0x8e'),_0xe4cfa1[_0x50bb('0x21')],util[_0x50bb('0x25')](_0xab05e9,{'showHidden':![],'depth':null}));}};module[_0x50bb('0x8f')]=VoiceAgentReport;
\ No newline at end of file
+var _0xf5d0=['mandatoryDisposition','type','inbound','voice','merge','event','interface','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','membername','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','info','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','custom:agentconnect','user:agentconnect','agentringnoanswerAt','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','isNotNull','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','agent','talktime','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','isUndefined','[%s][voiceAgentReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt','[%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','agentconnectAt','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../ami','redis','defaults','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','agentconnect','bind','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','blindtransfer','syncBlindTransfer','prototype','emit','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','debug','uniqueid','inspect','format','called','queue'];(function(_0x2fc1d8,_0x12e496){var _0x16a97f=function(_0x454514){while(--_0x454514){_0x2fc1d8['push'](_0x2fc1d8['shift']());}};_0x16a97f(++_0x12e496);}(_0xf5d0,0x6b));var _0x0f5d=function(_0x3ee0b5,_0x5a7984){_0x3ee0b5=_0x3ee0b5-0x0;var _0x54601c=_0xf5d0[_0x3ee0b5];return _0x54601c;};'use strict';var _=require(_0x0f5d('0x0'));var moment=require(_0x0f5d('0x1'));var util=require(_0x0f5d('0x2'));var Redis=require(_0x0f5d('0x3'));var config=require(_0x0f5d('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x0f5d('0x5'));config[_0x0f5d('0x6')]=_[_0x0f5d('0x7')](config[_0x0f5d('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0f5d('0x6')]));function VoiceAgentReport(_0x2d236a){this[_0x0f5d('0x8')]={};this[_0x0f5d('0x9')]=_0x2d236a[_0x0f5d('0x8')];this[_0x0f5d('0xa')]=_0x2d236a['voiceQueues'];this[_0x0f5d('0xb')]=_0x2d236a[_0x0f5d('0xb')];this[_0x0f5d('0xc')]={};ami['on'](_0x0f5d('0xd'),this[_0x0f5d('0xe')]['bind'](this));ami['on'](_0x0f5d('0xf'),this['syncAgentConnect'][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x11'),this['syncAgentRingNoAnswer'][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x12'),this[_0x0f5d('0x13')][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x14'),this[_0x0f5d('0x15')]['bind'](this));ami['on'](_0x0f5d('0x16'),this[_0x0f5d('0x17')][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x18'),this[_0x0f5d('0x19')][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x1a'),this[_0x0f5d('0x1b')][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x1c'),this[_0x0f5d('0x1d')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0x0f5d('0x10')](this));ami['on'](_0x0f5d('0x1e'),this[_0x0f5d('0x1f')][_0x0f5d('0x10')](this));}VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x21')]=function(_0x3d00f7,_0x3ecf6e,_0x449856){io['to'](_0x3d00f7)[_0x0f5d('0x21')](_0x3ecf6e,_0x449856);};VoiceAgentReport[_0x0f5d('0x20')]['isNotNull']=function(_0x1c6bcc){return _0x1c6bcc!==null&&!_['isUndefined'](_0x1c6bcc);};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0xe')]=function(_0xbd1720){try{if(this['isNotNull'](_0xbd1720)){logger['info'](_0x0f5d('0x22'),_0xbd1720['uniqueid'],_0xbd1720['membername'],_0xbd1720[_0x0f5d('0x23')]);logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0xbd1720[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0xbd1720,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]])){this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]]={};}if(_['isUndefined'](this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720['destuniqueid']])){this['channels'][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]]={'agentcalledAt':moment()[_0x0f5d('0x27')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x0f5d('0x28'),'mandatoryDisposition':this[_0x0f5d('0xa')][_0xbd1720[_0x0f5d('0x29')]]?this[_0x0f5d('0xa')][_0xbd1720[_0x0f5d('0x29')]][_0x0f5d('0x2a')]||![]:![],'type':this[_0x0f5d('0xa')][_0xbd1720[_0x0f5d('0x29')]]?this[_0x0f5d('0xa')][_0xbd1720[_0x0f5d('0x29')]][_0x0f5d('0x2b')]||_0x0f5d('0x2c'):_0x0f5d('0x2c'),'variables':this[_0x0f5d('0xc')][_0xbd1720[_0x0f5d('0x25')]],'motionChannel':_0x0f5d('0x2d')};}_[_0x0f5d('0x2e')](this[_0x0f5d('0x8')][_0xbd1720['uniqueid']][_0xbd1720[_0x0f5d('0x23')]],_['omit'](_0xbd1720,[_0x0f5d('0x2f'),'privilege']));logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0xbd1720[_0x0f5d('0x25')],util[_0x0f5d('0x26')](this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')]('custom:agentcalled',this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]]);var _0x1e2c72={'id':this[_0x0f5d('0xb')][_0xbd1720[_0x0f5d('0x30')]]['id'],'calleridnum':this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]]['calleridnum'],'queue':this[_0x0f5d('0x8')][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]][_0x0f5d('0x29')],'variables':this['channels'][_0xbd1720[_0x0f5d('0x25')]][_0xbd1720[_0x0f5d('0x23')]][_0x0f5d('0xc')]};logger[_0x0f5d('0x24')](_0x0f5d('0x31'),_0xbd1720[_0x0f5d('0x25')],util['inspect'](_0x1e2c72,{'showHidden':![],'depth':null}));this[_0x0f5d('0x21')](util['format'](_0x0f5d('0x32'),_0xbd1720[_0x0f5d('0x33')]),'user:called',_0x1e2c72);}}catch(_0x3a4707){logger[_0x0f5d('0x34')](_0x0f5d('0x35'),_0xbd1720[_0x0f5d('0x25')],util['inspect'](_0x3a4707,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0f5d('0x36')]=function(_0x66089e){try{if(this['isNotNull'](_0x66089e)){if(this['channels'][_0x66089e[_0x0f5d('0x25')]]){logger['debug'](_0x0f5d('0x37'),_0x66089e[_0x0f5d('0x25')],util['inspect'](_0x66089e,{'showHidden':![],'depth':null}));for(var _0x4fa4c5 in this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]]){if(this['channels'][_0x66089e[_0x0f5d('0x25')]][_0x0f5d('0x38')](_0x4fa4c5)){if(_0x66089e[_0x0f5d('0x23')]===_0x4fa4c5){logger[_0x0f5d('0x39')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x66089e[_0x0f5d('0x25')],_0x66089e[_0x0f5d('0x33')],_0x66089e[_0x0f5d('0x23')]);this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['agentconnectAt']=moment()[_0x0f5d('0x27')](_0x0f5d('0x3a'));this['channels'][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['connectedlinename']=_0x66089e[_0x0f5d('0x3b')];this['channels'][_0x66089e['uniqueid']][_0x4fa4c5][_0x0f5d('0x3c')]=_0x66089e[_0x0f5d('0x3c')];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x3d')]=_0x66089e[_0x0f5d('0x3d')];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x3e')]=_0x66089e[_0x0f5d('0x3e')];this['channels'][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['holdtime']=_0x66089e[_0x0f5d('0x3f')];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x40')]=_0x0f5d('0x41');if(this['voiceChannels'][this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x25')]]){var _0x59b13e=this[_0x0f5d('0x9')][this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x25')]][_0x0f5d('0x42')];this[_0x0f5d('0x8')][_0x66089e['uniqueid']][_0x4fa4c5][_0x0f5d('0x42')]=_0x59b13e;_0x66089e[_0x0f5d('0x42')]=_0x59b13e;}_['merge'](this[_0x0f5d('0xb')][_0x66089e['interface']],_[_0x0f5d('0x43')](_0x66089e,[_0x0f5d('0x29'),_0x0f5d('0x44'),_0x0f5d('0x42')]));logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x66089e[_0x0f5d('0x25')],util[_0x0f5d('0x26')](this['channels'][_0x66089e['uniqueid']][_0x66089e['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')](_0x0f5d('0x45'),this['channels'][_0x66089e[_0x0f5d('0x25')]][_0x66089e['destuniqueid']]);logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x66089e[_0x0f5d('0x25')],util[_0x0f5d('0x26')](this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x66089e['destuniqueid']],{'showHidden':![],'depth':null}));this[_0x0f5d('0x21')](util['format'](_0x0f5d('0x32'),_0x66089e[_0x0f5d('0x33')]),_0x0f5d('0x46'),this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x66089e['destuniqueid']]);}else if(!this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['agentringnoanswer']&&!this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['agentcomplete']){logger[_0x0f5d('0x39')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x66089e[_0x0f5d('0x25')],this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['membername'],_0x4fa4c5);this['channels'][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x11')]=!![];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x47')]=moment()['format'](_0x0f5d('0x3a'));this[_0x0f5d('0x8')][_0x66089e['uniqueid']][_0x4fa4c5]['answeredelsewheredestinationuniqueid']=_0x66089e[_0x0f5d('0x23')];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x48')]=_0x66089e[_0x0f5d('0x33')];this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]['lastevent']=_0x0f5d('0x49');this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5][_0x0f5d('0x4a')]=_0x0f5d('0x49');logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x66089e['uniqueid'],util[_0x0f5d('0x26')](this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')]('custom:agentansweredelsewhere',this[_0x0f5d('0x8')][_0x66089e[_0x0f5d('0x25')]][_0x4fa4c5]);}}}}}}catch(_0x491646){logger[_0x0f5d('0x34')](_0x0f5d('0x4b'),_0x66089e[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x491646,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x4c')]=function(_0x3307eb){try{if(this[_0x0f5d('0x4d')](_0x3307eb)){logger[_0x0f5d('0x24')](_0x0f5d('0x4e'),_0x3307eb['uniqueid'],util[_0x0f5d('0x26')](_0x3307eb,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0x3307eb[_0x0f5d('0x25')]]&&this[_0x0f5d('0x8')][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb[_0x0f5d('0x23')]]){logger[_0x0f5d('0x39')](_0x0f5d('0x4f'),_0x3307eb[_0x0f5d('0x25')],_0x3307eb[_0x0f5d('0x33')],_0x3307eb[_0x0f5d('0x23')]);this[_0x0f5d('0x8')][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb[_0x0f5d('0x23')]][_0x0f5d('0x11')]=!![];this[_0x0f5d('0x8')][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb['destuniqueid']][_0x0f5d('0x47')]=moment()[_0x0f5d('0x27')](_0x0f5d('0x3a'));this[_0x0f5d('0x8')][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb[_0x0f5d('0x23')]][_0x0f5d('0x40')]=_0x0f5d('0x50');this[_0x0f5d('0x8')][_0x3307eb['uniqueid']][_0x3307eb[_0x0f5d('0x23')]][_0x0f5d('0x4a')]=_0x0f5d('0x50');logger[_0x0f5d('0x24')](_0x0f5d('0x51'),_0x3307eb[_0x0f5d('0x25')],util['inspect'](this['channels'][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb[_0x0f5d('0x23')]],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')]('custom:agentringnoanswer',this['channels'][_0x3307eb[_0x0f5d('0x25')]][_0x3307eb[_0x0f5d('0x23')]]);}}}catch(_0x11daa0){logger['error']('[%s][voiceAgentReport][agentringnoanswer]',_0x3307eb['uniqueid'],util[_0x0f5d('0x26')](_0x11daa0,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x31a85b){try{if(this[_0x0f5d('0x4d')](_0x31a85b)){logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x31a85b[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x31a85b,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]]){for(var _0x4c5dd7 in this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]]){if(this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]][_0x0f5d('0x38')](_0x4c5dd7)&&!this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]][_0x4c5dd7][_0x0f5d('0x11')]&&!this[_0x0f5d('0x8')][_0x31a85b['uniqueid']][_0x4c5dd7][_0x0f5d('0x14')]){logger['info']('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x31a85b[_0x0f5d('0x25')],this[_0x0f5d('0x8')][_0x31a85b['uniqueid']][_0x4c5dd7][_0x0f5d('0x33')],_0x4c5dd7);this[_0x0f5d('0x8')][_0x31a85b['uniqueid']][_0x4c5dd7][_0x0f5d('0x11')]=!![];this[_0x0f5d('0x8')][_0x31a85b['uniqueid']][_0x4c5dd7]['agentringnoanswerAt']=moment()[_0x0f5d('0x27')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x31a85b[_0x0f5d('0x25')]][_0x4c5dd7]['lastevent']='abandoned';this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]][_0x4c5dd7][_0x0f5d('0x4a')]=_0x0f5d('0x52');logger[_0x0f5d('0x24')](_0x0f5d('0x53'),_0x31a85b[_0x0f5d('0x25')],util[_0x0f5d('0x26')](this[_0x0f5d('0x8')][_0x31a85b[_0x0f5d('0x25')]][_0x4c5dd7],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')](_0x0f5d('0x54'),this[_0x0f5d('0x8')][_0x31a85b['uniqueid']][_0x4c5dd7]);}}}}}catch(_0x20fc6f){logger[_0x0f5d('0x34')](_0x0f5d('0x55'),_0x31a85b[_0x0f5d('0x25')],util['inspect'](_0x20fc6f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x15')]=function(_0x5a350b){try{if(this[_0x0f5d('0x4d')](_0x5a350b)){logger[_0x0f5d('0x24')](_0x0f5d('0x56'),_0x5a350b[_0x0f5d('0x25')],util['inspect'](_0x5a350b,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]]){for(var _0x599c3f in this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]]){if(this['channels'][_0x5a350b[_0x0f5d('0x25')]]['hasOwnProperty'](_0x599c3f)){if(this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f]['agentconnectAt']&&!this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f][_0x0f5d('0x14')]){logger[_0x0f5d('0x39')](_0x0f5d('0x57'),_0x5a350b[_0x0f5d('0x25')],this['channels'][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f][_0x0f5d('0x33')],_0x599c3f);this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f][_0x0f5d('0x14')]=!![];this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f]['agentcompleteAt']=moment()['format'](_0x0f5d('0x3a'));this[_0x0f5d('0x8')][_0x5a350b['uniqueid']][_0x599c3f]['lastevent']=_0x0f5d('0x58');this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f][_0x0f5d('0x4a')]=_0x5a350b[_0x0f5d('0x4a')]=='transfer'?_0x0f5d('0x59'):_0x5a350b[_0x0f5d('0x4a')];this[_0x0f5d('0x8')][_0x5a350b['uniqueid']][_0x599c3f][_0x0f5d('0x5a')]=_0x5a350b[_0x0f5d('0x5a')];if(this[_0x0f5d('0xa')][_0x5a350b[_0x0f5d('0x29')]]&&this[_0x0f5d('0xa')][_0x5a350b['queue']]['acw']){this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f]['acwtime']=this[_0x0f5d('0xa')][_0x5a350b[_0x0f5d('0x29')]]['acwTimeout'];this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f][_0x0f5d('0x5b')]=!![];}this['agents'][_0x5a350b[_0x0f5d('0x30')]]=_[_0x0f5d('0x5c')](this[_0x0f5d('0xb')][_0x5a350b[_0x0f5d('0x30')]],[_0x0f5d('0x29'),_0x0f5d('0x44')]);logger[_0x0f5d('0x24')](_0x0f5d('0x5d'),_0x5a350b[_0x0f5d('0x25')],util[_0x0f5d('0x26')](this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f],{'showHidden':![],'depth':null}));ami[_0x0f5d('0x21')](_0x0f5d('0x5e'),this[_0x0f5d('0x8')][_0x5a350b[_0x0f5d('0x25')]][_0x599c3f]);logger[_0x0f5d('0x24')](_0x0f5d('0x5f'),_0x5a350b[_0x0f5d('0x25')],util[_0x0f5d('0x26')]({'id':this['agents'][_0x5a350b[_0x0f5d('0x30')]]['id'],'destaccountcode':_0x5a350b['destaccountcode']},{'showHidden':![],'depth':null}));this[_0x0f5d('0x21')](util['format'](_0x0f5d('0x32'),_0x5a350b[_0x0f5d('0x33')]),'user:agentcomplete',{'id':this['agents'][_0x5a350b[_0x0f5d('0x30')]]['id'],'destaccountcode':_0x5a350b[_0x0f5d('0x60')]});}}}}}}catch(_0x3d5b04){logger[_0x0f5d('0x34')](_0x0f5d('0x61'),_0x5a350b[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x3d5b04,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x17')]=function(_0x29c852){try{if(this[_0x0f5d('0x4d')](_0x29c852)){logger['debug'](_0x0f5d('0x62'),_0x29c852[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x29c852,{'showHidden':![],'depth':null}));this[_0x0f5d('0x63')](_0x29c852[_0x0f5d('0x25')],_[_0x0f5d('0x64')](_0x29c852[_0x0f5d('0x65')])[0x0],_0x29c852['value']);if(this[_0x0f5d('0x8')][_0x29c852[_0x0f5d('0x25')]]){for(var _0x4d4f1b in this[_0x0f5d('0x8')][_0x29c852[_0x0f5d('0x25')]]){if(this[_0x0f5d('0x8')][_0x29c852['uniqueid']][_0x0f5d('0x38')](_0x4d4f1b)){logger[_0x0f5d('0x39')](_0x0f5d('0x66'),_0x29c852[_0x0f5d('0x25')],_0x4d4f1b,_[_0x0f5d('0x64')](_0x29c852[_0x0f5d('0x65')])[0x0],_0x29c852['value']);if(_[_0x0f5d('0x67')](this[_0x0f5d('0x8')][_0x29c852['uniqueid']][_0x4d4f1b]['variables'])){this[_0x0f5d('0x8')][_0x29c852[_0x0f5d('0x25')]][_0x4d4f1b][_0x0f5d('0xc')]={};}this[_0x0f5d('0x8')][_0x29c852['uniqueid']][_0x4d4f1b][_0x0f5d('0xc')]=this['variables'][_0x29c852[_0x0f5d('0x25')]];}}}}}catch(_0x307f17){logger['error'](_0x0f5d('0x68'),_0x29c852[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x307f17,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x63')]=function(_0x3c28f4,_0x4d893c,_0x3d5d7d){var _0x2ffc46=['rtpaudioqos','rtpaudioqosbridged',_0x0f5d('0x69'),_0x0f5d('0x6a'),_0x0f5d('0x6b'),_0x0f5d('0x6c'),'rtpaudioqosrtt',_0x0f5d('0x6d'),_0x0f5d('0x6e'),_0x0f5d('0x6f'),_0x0f5d('0x70'),_0x0f5d('0x71'),_0x0f5d('0x72'),_0x0f5d('0x73'),_0x0f5d('0x74'),_0x0f5d('0x75'),_0x0f5d('0x33'),_0x0f5d('0x76'),_0x0f5d('0x77')];if(!_[_0x0f5d('0x78')](_0x4d893c)&&!_[_0x0f5d('0x79')](_0x2ffc46,_0x4d893c)){if(_[_0x0f5d('0x67')](this['variables'][_0x3c28f4])){this['variables'][_0x3c28f4]={};}this[_0x0f5d('0xc')][_0x3c28f4][_0x4d893c]=_0x3d5d7d;}};VoiceAgentReport['prototype'][_0x0f5d('0x19')]=function(_0xdc010f){try{if(this[_0x0f5d('0x4d')](_0xdc010f)){logger['debug'](_0x0f5d('0x7a'),_0xdc010f['uniqueid'],util['inspect'](_0xdc010f,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]]){for(var _0x20d92d in this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]]){if(this['channels'][_0xdc010f['uniqueid']][_0x0f5d('0x38')](_0x20d92d)){if(this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]][_0x20d92d][_0x0f5d('0x4a')]==_0x0f5d('0x7b')&&this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]][_0x20d92d][_0x0f5d('0x14')]){logger[_0x0f5d('0x39')](_0x0f5d('0x7c'),_0xdc010f[_0x0f5d('0x25')],_0x20d92d);this[_0x0f5d('0x8')][_0xdc010f['uniqueid']][_0x20d92d][_0x0f5d('0x7d')]=moment()[_0x0f5d('0x27')](_0x0f5d('0x3a'));}}}logger[_0x0f5d('0x24')](_0x0f5d('0x7e'),_0xdc010f['uniqueid'],util[_0x0f5d('0x26')](_[_0x0f5d('0x7f')](this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x0f5d('0x80'),_[_0x0f5d('0x7f')](this[_0x0f5d('0x8')][_0xdc010f[_0x0f5d('0x25')]]));delete this['channels'][_0xdc010f[_0x0f5d('0x25')]];}if(this[_0x0f5d('0xc')][_0xdc010f[_0x0f5d('0x25')]]){delete this[_0x0f5d('0xc')][_0xdc010f[_0x0f5d('0x25')]];}}}catch(_0x3d60ca){logger[_0x0f5d('0x34')](_0x0f5d('0x81'),_0xdc010f[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x3d60ca,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')]['syncAttendedTransfer']=function(_0x84d976){try{if(this[_0x0f5d('0x4d')](_0x84d976)){logger[_0x0f5d('0x24')](_0x0f5d('0x82'),_0x84d976[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x84d976,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]]){for(var _0x5908a3 in this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]]){if(this[_0x0f5d('0x8')][_0x84d976['transfereeuniqueid']][_0x0f5d('0x38')](_0x5908a3)){if(_0x84d976[_0x0f5d('0x84')]===_0x5908a3){logger[_0x0f5d('0x39')](_0x0f5d('0x85'),_0x84d976[_0x0f5d('0x25')],this[_0x0f5d('0x8')][_0x84d976['transfereeuniqueid']][_0x5908a3][_0x0f5d('0x33')],_0x5908a3);var _0x456615=moment();this['channels'][_0x84d976[_0x0f5d('0x83')]][_0x5908a3]['agentcomplete']=!![];this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]][_0x5908a3][_0x0f5d('0x7d')]=moment()[_0x0f5d('0x27')](_0x0f5d('0x3a'));this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]][_0x5908a3][_0x0f5d('0x40')]='complete';this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]][_0x5908a3]['reason']=_0x0f5d('0x7b');this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]][_0x5908a3][_0x0f5d('0x5a')]=_0x456615[_0x0f5d('0x86')](this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x83')]][_0x5908a3][_0x0f5d('0x87')],'seconds');}}}}if(this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x88')]]){var _0xdf2a=this[_0x0f5d('0x8')][_0x84d976[_0x0f5d('0x88')]];this['channels'][_0x84d976[_0x0f5d('0x88')]]=this[_0x0f5d('0x8')][_0x84d976['transfereeuniqueid']];this['channels'][_0x84d976['transfereeuniqueid']]=_0xdf2a;}}}catch(_0x424c8b){logger[_0x0f5d('0x34')](_0x0f5d('0x89'),_0x84d976[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x424c8b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')][_0x0f5d('0x1f')]=function(_0x14d5c7){try{if(this[_0x0f5d('0x4d')](_0x14d5c7)){logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x14d5c7[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x14d5c7,{'showHidden':![],'depth':null}));if(this[_0x0f5d('0x8')][_0x14d5c7[_0x0f5d('0x83')]]){for(var _0x264519 in this[_0x0f5d('0x8')][_0x14d5c7[_0x0f5d('0x83')]]){if(this[_0x0f5d('0x8')][_0x14d5c7[_0x0f5d('0x83')]][_0x0f5d('0x38')](_0x264519)){if(_0x14d5c7['transfereruniqueid']===_0x264519){logger['info'](_0x0f5d('0x8a'),_0x14d5c7[_0x0f5d('0x25')],this[_0x0f5d('0x8')][_0x14d5c7['transfereeuniqueid']][_0x264519]['membername'],_0x264519);var _0x2a5340=moment();this[_0x0f5d('0x8')][_0x14d5c7['transfereeuniqueid']][_0x264519][_0x0f5d('0x14')]=!![];this[_0x0f5d('0x8')][_0x14d5c7['transfereeuniqueid']][_0x264519][_0x0f5d('0x7d')]=_0x2a5340;this[_0x0f5d('0x8')][_0x14d5c7['transfereeuniqueid']][_0x264519][_0x0f5d('0x40')]=_0x0f5d('0x58');this[_0x0f5d('0x8')][_0x14d5c7[_0x0f5d('0x83')]][_0x264519][_0x0f5d('0x4a')]=_0x0f5d('0x7b');this[_0x0f5d('0x8')][_0x14d5c7[_0x0f5d('0x83')]][_0x264519]['talktime']=_0x2a5340[_0x0f5d('0x86')](this['channels'][_0x14d5c7['transfereeuniqueid']][_0x264519][_0x0f5d('0x87')],_0x0f5d('0x8b'));}}}}}}catch(_0x1ebb92){logger[_0x0f5d('0x34')]('[%s][voiceAgentReport][blindtransfer]',_0x14d5c7['uniqueid'],util['inspect'](_0x1ebb92,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')]['syncMusicOnHoldStart']=function(_0x24b96c){var _0x3596b6='';try{if(this[_0x0f5d('0x4d')](_0x24b96c)){logger[_0x0f5d('0x24')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x24b96c['uniqueid'],util[_0x0f5d('0x26')](_0x24b96c,{'showHidden':![],'depth':null}));if(_0x24b96c[_0x0f5d('0x8c')]){_0x3596b6=_0x24b96c['channel'][_0x0f5d('0x8d')](0x0,_0x24b96c[_0x0f5d('0x8c')][_0x0f5d('0x8e')]('-'));if(this[_0x0f5d('0xb')][_0x3596b6]){logger[_0x0f5d('0x39')](_0x0f5d('0x8f'),_0x24b96c['uniqueid'],_0x3596b6);this['agents'][_0x3596b6][_0x0f5d('0x90')]=!![];}}}}catch(_0x19fb26){logger[_0x0f5d('0x34')](_0x0f5d('0x91'),_0x24b96c[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x19fb26,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0f5d('0x20')]['syncMusicOnHoldStop']=function(_0x54fcd3){var _0x2c8065='';try{if(this[_0x0f5d('0x4d')](_0x54fcd3)){logger[_0x0f5d('0x24')](_0x0f5d('0x92'),_0x54fcd3[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x54fcd3,{'showHidden':![],'depth':null}));if(_0x54fcd3[_0x0f5d('0x8c')]){_0x2c8065=_0x54fcd3['channel'][_0x0f5d('0x8d')](0x0,_0x54fcd3[_0x0f5d('0x8c')]['lastIndexOf']('-'));if(this[_0x0f5d('0xb')][_0x2c8065]){logger['info']('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x54fcd3['uniqueid'],_0x2c8065);this[_0x0f5d('0xb')][_0x2c8065][_0x0f5d('0x90')]=![];}}}}catch(_0x9e70fc){logger[_0x0f5d('0x34')](_0x0f5d('0x93'),_0x54fcd3[_0x0f5d('0x25')],util[_0x0f5d('0x26')](_0x9e70fc,{'showHidden':![],'depth':null}));}};module[_0x0f5d('0x94')]=VoiceAgentReport;
\ No newline at end of file
index ed6d4ac..e852b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7603=['sipcallid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','transferType','stopRecordingOnTransfer','Action','StopMixMonitor','finally','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','queue','agi','dial','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','syncNewExten','bind','syncNewChannel','newstate','syncVarSet','syncHangup','newcallerid','syncNewCallerId','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','merge','keys','context','from-sip','channel','exten','xcally-motion-preview','split','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','blindTransfers','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','disposition','pick','includes','lastapplication','lastdata','set','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','answertime','diff','destinationchannel','UserId','membername','holdtime','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','endsWith','replace','.wav49','monitorFilename','monitors','push','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse'];(function(_0x5d7165,_0x5a322){var _0x4d0454=function(_0x5a5a83){while(--_0x5a5a83){_0x5d7165['push'](_0x5d7165['shift']());}};_0x4d0454(++_0x5a322);}(_0x7603,0xf8));var _0x3760=function(_0x286ac9,_0x344342){_0x286ac9=_0x286ac9-0x0;var _0x3dfa9a=_0x7603[_0x286ac9];return _0x3dfa9a;};'use strict';var _=require(_0x3760('0x0'));var moment=require(_0x3760('0x1'));var util=require(_0x3760('0x2'));var path=require('path');var Redis=require(_0x3760('0x3'));var config=require(_0x3760('0x4'));var logger=require(_0x3760('0x5'))(_0x3760('0x6'));var ami=require('../ami');var Channel=require(_0x3760('0x7'));var RpcSetting=require(_0x3760('0x8'));var applications=['set',_0x3760('0x9'),_0x3760('0xa'),_0x3760('0xb'),_0x3760('0xc'),_0x3760('0xd')];var dispositions=['NO\x20ANSWER',_0x3760('0xe'),_0x3760('0xe'),_0x3760('0xf'),'NO\x20ANSWER',_0x3760('0xf'),_0x3760('0x10'),_0x3760('0x11'),'FAILED','FAILED',_0x3760('0xe')];config['redis']=_[_0x3760('0x12')](config[_0x3760('0x13')],{'host':_0x3760('0x14'),'port':0x18eb});var io=require(_0x3760('0x15'))(new Redis(config[_0x3760('0x13')]));function VoiceCallReport(_0x57ed26){this[_0x3760('0x16')]=_0x57ed26[_0x3760('0x16')];this[_0x3760('0x17')]=_0x57ed26['agents'];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x3760('0x18')][_0x3760('0x19')](this));ami['on']('newexten',this['syncNewExten'][_0x3760('0x19')](this));ami['on']('newchannel',this[_0x3760('0x1a')]['bind'](this));ami['on'](_0x3760('0x1b'),this['syncNewState'][_0x3760('0x19')](this));ami['on']('varset',this[_0x3760('0x1c')][_0x3760('0x19')](this));ami['on']('hangup',this[_0x3760('0x1d')][_0x3760('0x19')](this));ami['on'](_0x3760('0x1e'),this[_0x3760('0x1f')]['bind'](this));ami['on']('attendedtransfer',this['syncAttendedTransfer']['bind'](this));ami['on'](_0x3760('0x20'),this[_0x3760('0x21')][_0x3760('0x19')](this));ami['on'](_0x3760('0x22'),this[_0x3760('0x23')]['bind'](this));ami['on'](_0x3760('0x24'),this[_0x3760('0x25')][_0x3760('0x19')](this));try{logger[_0x3760('0x26')](_0x3760('0x27'));ami[_0x3760('0x28')]();}catch(_0x38315c){logger[_0x3760('0x29')](_0x3760('0x2a'),util[_0x3760('0x2b')](_0x38315c,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x3760('0x2c')][_0x3760('0x2d')]=function(_0x4b6c3c){return _0x4b6c3c!==null&&!_[_0x3760('0x2e')](_0x4b6c3c);};VoiceCallReport['prototype']['emit']=function(_0x2ae071,_0x540d98,_0x68144a){io['to'](_0x2ae071)[_0x3760('0x2f')](_0x540d98,_0x68144a);};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x1f')]=function(_0x54015b){try{if(this['isNotNull'](_0x54015b)){logger[_0x3760('0x26')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x54015b[_0x3760('0x30')],_0x54015b[_0x3760('0x31')],_0x54015b[_0x3760('0x32')]);logger[_0x3760('0x33')](_0x3760('0x34'),_0x54015b[_0x3760('0x30')],util[_0x3760('0x2b')](_0x54015b,{'showHidden':![],'depth':null}));if(_0x54015b[_0x3760('0x30')]===_0x54015b['linkedid']){if(!_[_0x3760('0x2e')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]])){_[_0x3760('0x35')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]],_['pick'](_0x54015b,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x54015b[_0x3760('0x30')]])));}}if(_0x54015b[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x54015b[_0x3760('0x39')]['split']('-')[0x0]]){if(_0x54015b[_0x3760('0x3a')]==_0x3760('0x3b')){this[_0x3760('0x17')][_0x54015b['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x3d')]=_0x54015b[_0x3760('0x3e')];this[_0x3760('0x2f')](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x54015b['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x41')]),_0x3760('0x42'),{'destaccountcode':this[_0x3760('0x17')][_0x54015b[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x54015b[_0x3760('0x3e')]});}}}}}catch(_0x1d1ba8){logger[_0x3760('0x29')](_0x3760('0x44'),_0x54015b['uniqueid'],util[_0x3760('0x2b')](_0x1d1ba8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncNewChannel']=function(_0x3840c7){try{if(this[_0x3760('0x2d')](_0x3840c7)){logger[_0x3760('0x33')](_0x3760('0x45'),_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')](_0x3840c7,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]])return;if(_0x3840c7[_0x3760('0x39')]===_0x3760('0x46'))return;if(_0x3840c7[_0x3760('0x30')]!==_0x3840c7['linkedid']&&!this[_0x3760('0x47')][_0x3840c7[_0x3760('0x48')]])return;logger[_0x3760('0x26')](_0x3760('0x49'),_0x3840c7[_0x3760('0x30')],_0x3840c7[_0x3760('0x37')],_0x3840c7['exten']);this['channels'][_0x3840c7['uniqueid']]=new Channel();this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]][_0x3760('0x4a')]=moment()['format'](_0x3760('0x4b'));this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]]['disposition']=dispositions[_[_0x3760('0x4c')](_0x3840c7['channelstate'])];_[_0x3760('0x35')](this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]],_['pick'](_0x3840c7,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x3840c7[_0x3760('0x30')]])));if(_0x3840c7[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){if(_[_0x3760('0x2e')](this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['destconnectedlinenum'])){this[_0x3760('0x17')][_0x3840c7['channel']['split']('-')[0x0]][_0x3760('0x3d')]=_0x3840c7['exten'];logger[_0x3760('0x33')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x3840c7[_0x3760('0x3a')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name']),_0x3760('0x42'),{'id':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x3840c7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')],'destconnectedlinenum':_0x3840c7[_0x3760('0x3a')]});}}}}}catch(_0x24382b){logger[_0x3760('0x29')](_0x3760('0x4d'),_0x3840c7[_0x3760('0x30')],util[_0x3760('0x2b')](_0x24382b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3760('0x18')]=function(_0x5559e7){try{if(this[_0x3760('0x2d')](_0x5559e7)){logger[_0x3760('0x33')](_0x3760('0x4e'),_0x5559e7['uniqueid'],util['inspect'](_0x5559e7,{'showHidden':![],'depth':null}));if(_0x5559e7[_0x3760('0x39')]===_0x3760('0x46')||_0x5559e7[_0x3760('0x3a')]==='h')return;if(_0x5559e7[_0x3760('0x30')]===_0x5559e7[_0x3760('0x48')]||this[_0x3760('0x47')][_0x5559e7['linkedid']]){_0x5559e7[_0x3760('0x4f')]=_0x5559e7[_0x3760('0x4f')]['toLowerCase']();_0x5559e7[_0x3760('0x50')]=_0x5559e7[_0x3760('0x51')]||_0x5559e7[_0x3760('0x50')];if(_0x5559e7[_0x3760('0x51')]&&!_0x5559e7[_0x3760('0x51')][_0x3760('0x52')](_0x3760('0x53'))&&_0x5559e7[_0x3760('0x4f')]!==_0x3760('0x9')){_0x5559e7[_0x3760('0x50')]=_0x5559e7[_0x3760('0x50')][_0x3760('0x54')]();}logger[_0x3760('0x26')](_0x3760('0x55'),_0x5559e7['uniqueid'],_0x5559e7[_0x3760('0x4f')],_0x5559e7[_0x3760('0x50')]);if(_[_0x3760('0x2e')](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]])){this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]]=new Channel();this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x4a')]=_0x5559e7['duration']?moment()['subtract'](moment[_0x3760('0x56')](_0x5559e7[_0x3760('0x56')])[_0x3760('0x57')](),_0x3760('0x57'))[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x58')]='NO\x20ANSWER';}_['merge'](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]],_[_0x3760('0x59')](_0x5559e7,_[_0x3760('0x36')](this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]])));if(_[_0x3760('0x5a')](applications,_0x5559e7[_0x3760('0x4f')])){this['channels'][_0x5559e7['uniqueid']][_0x3760('0x5b')]=_0x5559e7[_0x3760('0x4f')];this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3760('0x5c')]=_0x5559e7[_0x3760('0x50')];if(_0x5559e7[_0x3760('0x4f')]===_0x3760('0x5d')&&_['startsWith'](_0x5559e7[_0x3760('0x50')][_0x3760('0x54')](),_0x3760('0x5e'))){var _0x409929=_0x5559e7[_0x3760('0x50')]['split']('=');var _0x3f3331=_0x409929[0x0][_0x3760('0x54')]()[_0x3760('0x5f')](/cdr\((.*)\)/);if(_0x3f3331){if(_0x3f3331[0x1]===_0x3760('0x60')&&!_[_0x3760('0x61')](this['channels'][_0x5559e7[_0x3760('0x30')]][_0x3f3331[0x1]]))return;this[_0x3760('0x16')][_0x5559e7[_0x3760('0x30')]][_0x3f3331[0x1]]=_0x409929[0x1];}}else if(_0x5559e7['application']===_0x3760('0x9')){this[_0x3760('0x16')][_0x5559e7['uniqueid']][_0x3760('0x9')]=_0x5559e7['applicationdata'][_0x3760('0x3c')](',')[0x0];}}}}}catch(_0x18fb97){logger[_0x3760('0x29')](_0x3760('0x62'),_0x5559e7['uniqueid'],util[_0x3760('0x2b')](_0x18fb97,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3760('0x63')]=function(_0x4736a7){try{if(this['isNotNull'](_0x4736a7)){logger[_0x3760('0x26')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x4736a7[_0x3760('0x30')],_0x4736a7[_0x3760('0x48')],_0x4736a7['calleridname'],_0x4736a7[_0x3760('0x32')]);logger['debug'](_0x3760('0x64'),_0x4736a7['uniqueid'],util[_0x3760('0x2b')](_0x4736a7,{'showHidden':![],'depth':null}));if(_0x4736a7[_0x3760('0x65')]!=='6')return;if(_0x4736a7[_0x3760('0x30')]!==_0x4736a7[_0x3760('0x48')]){var _0x57e4c0=moment();if(this['channels'][_0x4736a7['linkedid']]){if(!this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x66')]){this[_0x3760('0x16')][_0x4736a7['linkedid']]['answered']=!![];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x67')]=_0x57e4c0[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x4a')]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['holdtime']=_0x57e4c0[_0x3760('0x68')](this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x4a')],_0x3760('0x57'));}}this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x48')]=_0x4736a7[_0x3760('0x30')];if(_0x4736a7['calleridnum']!==_0x3760('0x3b')){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['connectedlinenum']=_0x4736a7[_0x3760('0x32')];}this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['connectedlinename']=_0x4736a7[_0x3760('0x31')];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x69')]=_0x4736a7['channel'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x58')]=dispositions[_[_0x3760('0x4c')](_0x4736a7[_0x3760('0x65')])];if(this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x6a')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['id'];this[_0x3760('0x16')][_0x4736a7['linkedid']][_0x3760('0x6b')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name'];}}if(this['channels'][_0x4736a7[_0x3760('0x30')]]){if(!this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x66')]){this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x66')]=!![];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x67')]=_0x57e4c0[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x4a')]){this[_0x3760('0x16')][_0x4736a7['uniqueid']][_0x3760('0x6c')]=_0x57e4c0[_0x3760('0x68')](this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x4a')],_0x3760('0x57'));}}if(_0x4736a7[_0x3760('0x32')]!=='xcally-motion-preview'){this['channels'][_0x4736a7[_0x3760('0x30')]]['connectedlinenum']=_0x4736a7[_0x3760('0x32')];}this['channels'][_0x4736a7[_0x3760('0x30')]]['connectedlinename']=_0x4736a7['calleridname'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x69')]=_0x4736a7[_0x3760('0x39')];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x58')]=dispositions[_[_0x3760('0x4c')](_0x4736a7['channelstate'])];}}else{if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]){if(this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x16')][_0x4736a7['uniqueid']][_0x3760('0x6a')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'];this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x6b')]=this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x41')];}}}if(_0x4736a7[_0x3760('0x37')]==='from-sip'){if(this['agents'][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['destconnectedlinenum']=_0x4736a7[_0x3760('0x3a')];var _0x160c7e,_0x419e17;if(this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]){_0x160c7e=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]]['routealias'];_0x419e17=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x30')]][_0x3760('0x9')];}else if(this['channels'][_0x4736a7[_0x3760('0x48')]]){_0x160c7e=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]][_0x3760('0x6d')];_0x419e17=this[_0x3760('0x16')][_0x4736a7[_0x3760('0x48')]]['queue'];}this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x9')]=_0x419e17;this['agents'][_0x4736a7['channel']['split']('-')[0x0]][_0x3760('0x6d')]=_0x160c7e;logger[_0x3760('0x33')](_0x3760('0x6e'),_0x4736a7[_0x3760('0x30')],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x4736a7['channel'][_0x3760('0x3c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4736a7[_0x3760('0x3a')],'routealias':_0x160c7e,'queue':_0x419e17||undefined},{'showHidden':![],'depth':null}));this[_0x3760('0x2f')](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]][_0x3760('0x41')]),_0x3760('0x42'),{'id':this[_0x3760('0x17')][_0x4736a7[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x4736a7[_0x3760('0x39')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4736a7[_0x3760('0x3a')],'routealias':_0x160c7e,'queue':_0x419e17||undefined});}}}}catch(_0x170877){logger[_0x3760('0x29')](_0x3760('0x6f'),_0x4736a7[_0x3760('0x30')],util['inspect'](_0x170877,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x70')]=function(_0x2a8e58,_0x13811e){try{if(this[_0x3760('0x16')][_0x2a8e58]){logger[_0x3760('0x26')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x2a8e58,_0x13811e);this[_0x3760('0x16')][_0x2a8e58]['monitor']=!![];if(_[_0x3760('0x71')](_0x13811e,'.wav49')){_0x13811e=_0x13811e[_0x3760('0x72')](_0x3760('0x73'),'.WAV');}this[_0x3760('0x16')][_0x2a8e58][_0x3760('0x74')]=_0x13811e;var _0x5d2bb8=_['find'](this[_0x3760('0x16')][_0x2a8e58][_0x3760('0x75')],{'filename':_0x13811e});if(_[_0x3760('0x61')](_0x5d2bb8)){this['channels'][_0x2a8e58][_0x3760('0x75')][_0x3760('0x76')]({'filename':_0x13811e,'createdAt':moment()['format'](_0x3760('0x4b')),'mixmonitorid':'','status':'rec'});}}}catch(_0x7cc2c3){logger['error'](_0x3760('0x77'),_0x2a8e58,util['inspect'](_0x7cc2c3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncVarSet']=function(_0x47c731){try{if(this[_0x3760('0x2d')](_0x47c731)){logger[_0x3760('0x33')](_0x3760('0x78'),_0x47c731['uniqueid'],util[_0x3760('0x2b')](_0x47c731,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]&&_0x47c731[_0x3760('0x39')]!=_0x3760('0x46')){if(this['isNotNull'](_0x47c731[_0x3760('0x79')])){if(this[_0x3760('0x2d')](_0x47c731['variable'][_0x3760('0x7a')])){logger[_0x3760('0x26')](_0x3760('0x7b'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x70')](_0x47c731[_0x3760('0x30')],_0x47c731['value']);}else if(this[_0x3760('0x2d')](_0x47c731['variable']['xmd-phone'])){logger[_0x3760('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this['channels'][_0x47c731['uniqueid']]['calleridnum']=_0x47c731['value'];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')]['xmd-callerid'])){logger[_0x3760('0x26')](_0x3760('0x7d'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]['callerid']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7e')])){logger[_0x3760('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x47c731[_0x3760('0x30')],_0x47c731['value']);this['channels'][_0x47c731[_0x3760('0x30')]]['type']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7f')])){logger[_0x3760('0x26')](_0x3760('0x80'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]['split'](',')[0x0]);this[_0x3760('0x16')][_0x47c731['uniqueid']][_0x3760('0x9')]=_0x47c731[_0x3760('0x7c')][_0x3760('0x3c')](',')[0x0];}else if(this['isNotNull'](_0x47c731[_0x3760('0x79')]['xmd-originatecalleridnum'])){logger[_0x3760('0x26')](_0x3760('0x81'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]][_0x3760('0x82')]=_0x47c731[_0x3760('0x7c')];}else if(this['isNotNull'](_0x47c731[_0x3760('0x79')][_0x3760('0x83')])){logger[_0x3760('0x26')](_0x3760('0x84'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]][_0x3760('0x85')]=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x86')])){logger['info'](_0x3760('0x87'),_0x47c731[_0x3760('0x30')],_0x47c731['value']);this[_0x3760('0x16')][_0x47c731[_0x3760('0x30')]]['calleridpreview']=_0x47c731[_0x3760('0x7c')];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x88')])){logger[_0x3760('0x26')](_0x3760('0x89'),_0x47c731['uniqueid'],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731['uniqueid']][_0x3760('0x9')]=_0x47c731['value'];}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')]['sipcallid'])){logger[_0x3760('0x26')](_0x3760('0x8a'),_0x47c731[_0x3760('0x30')],_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x16')][_0x47c731['uniqueid']]['sipcalluniqueid']=_0x47c731[_0x3760('0x7c')];}}}else if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')][_0x3760('0x7a')])){if(_0x47c731[_0x3760('0x7c')]){var _0x228a92=path[_0x3760('0x8b')](_0x47c731[_0x3760('0x7c')])['name'];logger[_0x3760('0x26')](_0x3760('0x7b'),_0x228a92,_0x47c731[_0x3760('0x7c')]);this[_0x3760('0x70')](_0x228a92,_0x47c731[_0x3760('0x7c')]);}}else if(this[_0x3760('0x16')][_0x47c731[_0x3760('0x48')]]){if(this[_0x3760('0x2d')](_0x47c731[_0x3760('0x79')])){if(this['isNotNull'](_0x47c731[_0x3760('0x79')][_0x3760('0x8c')])){logger[_0x3760('0x26')](_0x3760('0x8a'),_0x47c731[_0x3760('0x48')],_0x47c731[_0x3760('0x7c')]);this['channels'][_0x47c731[_0x3760('0x48')]]['sipcalllinkedid']=_0x47c731[_0x3760('0x7c')];}}}}}catch(_0x136378){logger['error'](_0x3760('0x8d'),_0x47c731['uniqueid'],util[_0x3760('0x2b')](_0x136378,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncHangup']=function(_0x2e19ef){try{if(this[_0x3760('0x2d')](_0x2e19ef)){logger[_0x3760('0x33')](_0x3760('0x8e'),_0x2e19ef['uniqueid'],util[_0x3760('0x2b')](_0x2e19ef,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]){if(this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']]){this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]][_0x3760('0x30')]=_0x2e19ef[_0x3760('0x30')];this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['linkedid']][_0x3760('0x66')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['answered'];this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]][_0x3760('0x67')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x67')];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x48')]][_0x3760('0x69')]=this['channels'][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']]['channel'];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['linkedid']][_0x3760('0x58')]=this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x58')];this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]=this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['linkedid']];delete this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x48')]];}else if(this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]]){this[_0x3760('0x16')][this['blindTransfers'][_0x2e19ef['linkedid']][_0x3760('0x30')]]['uniqueid']=[this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]]['linkedid'],this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x48')]=this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x30')]][0x0];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]][_0x3760('0x66')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x66')];this['channels'][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]][_0x3760('0x67')]=this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x67')];this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef['linkedid']][_0x3760('0x30')]][_0x3760('0x69')]=this['channels'][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]]['uniqueid']][_0x3760('0x39')];this['channels'][this['blindTransfers'][_0x2e19ef['linkedid']][_0x3760('0x30')]]['disposition']=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x58')];this['channels'][_0x2e19ef[_0x3760('0x30')]]=this['channels'][this['blindTransfers'][_0x2e19ef[_0x3760('0x48')]]['uniqueid']];delete this[_0x3760('0x16')][this[_0x3760('0x47')][_0x2e19ef[_0x3760('0x48')]][_0x3760('0x30')]];}}if(this['channels'][_0x2e19ef['uniqueid']]){logger[_0x3760('0x26')](_0x3760('0x8f'),_0x2e19ef['uniqueid'],_0x2e19ef[_0x3760('0x90')]);var _0x5beeab=moment();this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x91')]=_0x5beeab[_0x3760('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x56')]=_0x5beeab[_0x3760('0x68')](this['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x4a')],_0x3760('0x57'));if(this[_0x3760('0x16')][_0x2e19ef['uniqueid']][_0x3760('0x66')]){this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x92')]=_0x5beeab['diff'](this['channels'][_0x2e19ef['uniqueid']][_0x3760('0x67')],'seconds');this['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x6c')]=this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x56')]-this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x92')];}if(_0x2e19ef[_0x3760('0x37')]===_0x3760('0x38')){if(this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]){this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]=_[_0x3760('0x93')](this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]],['destconnectedlinenum']);logger[_0x3760('0x33')](_0x3760('0x94'),_0x2e19ef['uniqueid'],util[_0x3760('0x2b')]({'id':this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]][_0x3760('0x43')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x3760('0x3f')](_0x3760('0x40'),this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['name']),_0x3760('0x95'),{'id':this[_0x3760('0x17')][_0x2e19ef[_0x3760('0x39')][_0x3760('0x3c')]('-')[0x0]]['id'],'destaccountcode':this[_0x3760('0x17')][_0x2e19ef['channel'][_0x3760('0x3c')]('-')[0x0]]['accountcode']});for(var _0x30c6d6=0x0;_0x30c6d6<Object[_0x3760('0x36')](this[_0x3760('0x17')])[_0x3760('0x96')];_0x30c6d6++){var _0x1dd66e=Object[_0x3760('0x36')](this[_0x3760('0x17')])[_0x30c6d6];var _0x2ac92f=this[_0x3760('0x17')][_0x1dd66e];if(_0x2ac92f['accountcode']===Number(_0x2e19ef['connectedlinenum'])){this['emit'](util['format']('user:%s',_0x2ac92f['name']),_0x3760('0x95'),{'id':_0x2ac92f['id'],'destaccountcode':_0x2ac92f[_0x3760('0x43')],'transfer':this[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['transferType']});break;}}}}var _0x51a394=this;Promise[_0x3760('0x97')]()[_0x3760('0x98')](function(){var _0xc209d6=_0x51a394[_0x3760('0x16')][_0x2e19ef['uniqueid']];if(typeof _0xc209d6[_0x3760('0x99')]==='undefined')return;if(_['isEmpty'](_0xc209d6['monitors']))return;return RpcSetting['getSettings']()[_0x3760('0x98')](function(_0x26eb91){if(!_0x26eb91[_0x3760('0x9a')])return;return Promise[_0x3760('0x97')]()[_0x3760('0x98')](function(){return ami[_0x3760('0x9b')]({'action':_0x3760('0x9c'),'channel':_0xc209d6[_0x3760('0x39')]})['catch'](function(){});})[_0x3760('0x98')](function(){return ami[_0x3760('0x9b')]({'action':'StopMixMonitor','channel':_0xc209d6[_0x3760('0x69')]})['catch'](function(){})[_0x3760('0x9d')](function(){var _0x43ae46=_0x51a394[_0x3760('0x17')][_0xc209d6[_0x3760('0x69')][_0x3760('0x3c')]('-')[0x0]];if(!_0x43ae46)return;io[_0x3760('0x2f')]('webbar:stopmonitors',{'agentId':_0x43ae46['id'],'uniqueid':_0xc209d6[_0x3760('0x30')]});});});});})[_0x3760('0x98')](function(){if(_0x2e19ef[_0x3760('0x9e')]==='BlindTransfer'){_0x51a394[_0x3760('0x47')][_0x2e19ef[_0x3760('0x30')]]=_0x2e19ef;}else{if(_0x51a394['channels'][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x60')]===_0x3760('0x9f')&&_0x51a394[_0x3760('0x47')][_0x2e19ef[_0x3760('0x30')]]){_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x30')]=[_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x48')],_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]][_0x3760('0x48')]=_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]['uniqueid']][0x0];delete _0x51a394['blindTransfers'][_0x2e19ef[_0x3760('0x30')]];}}logger[_0x3760('0x33')](_0x3760('0xa0'),_0x2e19ef[_0x3760('0x30')],util[_0x3760('0x2b')](_0x51a394[_0x3760('0x16')][_0x2e19ef['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x3760('0xa1'),_0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]]);delete _0x51a394[_0x3760('0x16')][_0x2e19ef[_0x3760('0x30')]];});}}}catch(_0x30fc58){logger[_0x3760('0x29')](_0x3760('0xa2'),_0x2e19ef[_0x3760('0x30')],util[_0x3760('0x2b')](_0x30fc58,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0xa3')]=function(_0x2b7ae3){try{if(this[_0x3760('0x2d')](_0x2b7ae3)){logger['info'](_0x3760('0xa4'),_0x2b7ae3[_0x3760('0x30')],_0x2b7ae3[_0x3760('0xa5')],_0x2b7ae3[_0x3760('0xa6')]);logger[_0x3760('0x33')](_0x3760('0xa7'),_0x2b7ae3[_0x3760('0x30')],util[_0x3760('0x2b')](_0x2b7ae3,{'showHidden':![],'depth':null}));var _0x397a22;if(this['channels'][_0x2b7ae3[_0x3760('0xa8')]]){this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xa8')]][_0x3760('0xa9')]=_0x2b7ae3[_0x3760('0xa5')];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xa8')]][_0x3760('0xaa')]=_0x2b7ae3[_0x3760('0xa6')];if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xab')]]){_0x397a22=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xab')]];this['channels'][_0x2b7ae3[_0x3760('0xab')]]=this[_0x3760('0x16')][_0x2b7ae3['transfereeuniqueid']];this[_0x3760('0x16')][_0x2b7ae3['transfereeuniqueid']]=_0x397a22;}this[_0x3760('0x16')][_0x2b7ae3['secondtransfereruniqueid']][_0x3760('0x99')]=_0x3760('0xac');}else if(this['channels'][_0x2b7ae3['transfertargetuniqueid']]){this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0xa9')]=_0x2b7ae3[_0x3760('0xa5')];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0xaa')]=_0x2b7ae3['transfertargetcalleridnum'];if(this['channels'][_0x2b7ae3['origtransfereruniqueid']]){_0x397a22=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]];this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]=this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xad')]];this[_0x3760('0x16')][_0x2b7ae3['transfertargetuniqueid']]=_0x397a22;}this['channels'][_0x2b7ae3[_0x3760('0xad')]][_0x3760('0x99')]=_0x3760('0xac');}if((this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]||this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]])&&this[_0x3760('0x16')][_0x2b7ae3['secondtransfereruniqueid']]){var _0x26be73=_[_0x3760('0xb0')]([this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]],this['channels'][_0x2b7ae3['origtransfererlinkedid']],this['channels'][_0x2b7ae3[_0x3760('0xab')]]],function(_0x2c3fa5){return _0x2c3fa5&&_0x2c3fa5['type']===_0x3760('0x9f')&&_0x2c3fa5['routeid'];});if(_0x26be73){if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]])this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xae')]]['transferType']=_0x3760('0xac');if(this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]])this[_0x3760('0x16')][_0x2b7ae3[_0x3760('0xaf')]][_0x3760('0x99')]=_0x3760('0xac');this['channels'][_0x2b7ae3['secondtransfereruniqueid']][_0x3760('0x99')]=_0x3760('0xac');}}}}catch(_0x4e387f){logger[_0x3760('0x29')](_0x3760('0xb1'),_0x2b7ae3['uniqueid'],util[_0x3760('0x2b')](_0x4e387f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncBlindTransfer']=function(_0x3307f3){try{if(this[_0x3760('0x2d')](_0x3307f3)){logger[_0x3760('0x26')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x3307f3['uniqueid'],_0x3307f3[_0x3760('0xb2')],_0x3307f3[_0x3760('0xb3')]);logger['debug'](_0x3760('0xb4'),_0x3307f3['uniqueid'],util[_0x3760('0x2b')](_0x3307f3,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]]){this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0xa9')]=_0x3307f3[_0x3760('0xb2')];this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0xaa')]=_0x3307f3[_0x3760('0xb3')];this[_0x3760('0x16')][_0x3307f3[_0x3760('0xa8')]][_0x3760('0x99')]='BLIND';this['syncHangup']({'event':_0x3760('0xb5'),'uniqueid':_0x3307f3[_0x3760('0xa8')],'linkedid':_0x3307f3['transfereruniqueid'],'context':_0x3307f3['context'],'channel':_0x3307f3[_0x3760('0xb6')]});}else{this[_0x3760('0x16')][_0x3307f3[_0x3760('0xb7')]][_0x3760('0x99')]='BLIND';this[_0x3760('0x1d')]({'event':'BlindTransfer','uniqueid':_0x3307f3['transfereruniqueid'],'linkedid':_0x3307f3[_0x3760('0xa8')],'context':_0x3307f3[_0x3760('0x37')],'channel':_0x3307f3[_0x3760('0xb6')]});}}}catch(_0xb70bdb){logger['error'](_0x3760('0xb8'),_0x3307f3[_0x3760('0x30')],util[_0x3760('0x2b')](_0xb70bdb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')][_0x3760('0x23')]=function(_0x290bac){try{if(this[_0x3760('0x2d')](_0x290bac)){logger['debug'](_0x3760('0xb9'),_0x290bac[_0x3760('0x30')],util[_0x3760('0x2b')](_0x290bac,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x290bac['uniqueid']]){if(!_[_0x3760('0x61')](this['channels'][_0x290bac[_0x3760('0x30')]]['answertime'])){this[_0x3760('0x16')][_0x290bac['uniqueid']][_0x3760('0xba')]=moment()[_0x3760('0x3f')](_0x3760('0x4b'));logger[_0x3760('0x26')](_0x3760('0xbb'),_0x290bac['uniqueid'],this['channels'][_0x290bac[_0x3760('0x30')]]['mohstarttime']);}}}}catch(_0x4ffa3e){logger[_0x3760('0x29')](_0x3760('0xbc'),_0x290bac[_0x3760('0x30')],util[_0x3760('0x2b')](_0x4ffa3e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3760('0x2c')]['syncMusicOnHoldStop']=function(_0x86ee60){try{if(this[_0x3760('0x2d')](_0x86ee60)){logger[_0x3760('0x33')](_0x3760('0xbd'),_0x86ee60[_0x3760('0x30')],util[_0x3760('0x2b')](_0x86ee60,{'showHidden':![],'depth':null}));if(this[_0x3760('0x16')][_0x86ee60['uniqueid']]){if(!_[_0x3760('0x61')](this['channels'][_0x86ee60['uniqueid']][_0x3760('0xba')])){this[_0x3760('0x16')][_0x86ee60['uniqueid']]['mohtime']+=moment()['milliseconds'](0x0)[_0x3760('0x68')](this[_0x3760('0x16')][_0x86ee60[_0x3760('0x30')]][_0x3760('0xba')],_0x3760('0x57'));logger[_0x3760('0x26')](_0x3760('0xbe'),_0x86ee60[_0x3760('0x30')],this[_0x3760('0x16')][_0x86ee60['uniqueid']][_0x3760('0xbf')]);delete this[_0x3760('0x16')][_0x86ee60[_0x3760('0x30')]][_0x3760('0xba')];}}}}catch(_0x2e4037){logger[_0x3760('0x29')](_0x3760('0xc0'),_0x86ee60[_0x3760('0x30')],util[_0x3760('0x2b')](_0x2e4037,{'showHidden':![],'depth':null}));}};module[_0x3760('0xc1')]=VoiceCallReport;
\ No newline at end of file
+var _0x8b1e=['keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','user:agentconnect','accountcode','[%s][voiceCallReport][newchannel]\x20event:','blindTransfers','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','[%s][voiceCallReport][newchannel]','application','toLowerCase','applicationdata','CDR(routeAlias)','queue','subtract','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition','lastapplication','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','answertime','holdtime','diff','UserId','membername','answered','connectedlinename','destinationchannel','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitorFilename','find','monitors','push','[%s][voiceCallReport][mixMonitorFilename]','syncVarSet','[%s][voiceCallReport][varset]\x20event:','OutgoingSpoolFailed','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%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','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','then','undefined','isEmpty','getSettings','stopRecordingOnTransfer','resolve','Action','StopMixMonitor','catch','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','some','origtransfererlinkedid','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','set','agi','dial','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','localhost','socket.io-emitter','channels','agents','coreshowchannel','bind','syncNewExten','newchannel','syncNewChannel','newstate','varset','hangup','syncHangup','newcallerid','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','isNotNull','isUndefined','prototype','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick'];(function(_0x37b57a,_0x9b5b67){var _0x497a64=function(_0x53f0cc){while(--_0x53f0cc){_0x37b57a['push'](_0x37b57a['shift']());}};_0x497a64(++_0x9b5b67);}(_0x8b1e,0x15f));var _0xe8b1=function(_0x232c2f,_0x273790){_0x232c2f=_0x232c2f-0x0;var _0x25ea66=_0x8b1e[_0x232c2f];return _0x25ea66;};'use strict';var _=require(_0xe8b1('0x0'));var moment=require(_0xe8b1('0x1'));var util=require('util');var path=require(_0xe8b1('0x2'));var Redis=require(_0xe8b1('0x3'));var config=require(_0xe8b1('0x4'));var logger=require(_0xe8b1('0x5'))(_0xe8b1('0x6'));var ami=require(_0xe8b1('0x7'));var Channel=require(_0xe8b1('0x8'));var RpcSetting=require(_0xe8b1('0x9'));var applications=[_0xe8b1('0xa'),'queue',_0xe8b1('0xb'),_0xe8b1('0xc'),'playback','voicemail'];var dispositions=[_0xe8b1('0xd'),_0xe8b1('0xe'),_0xe8b1('0xe'),_0xe8b1('0xd'),'NO\x20ANSWER',_0xe8b1('0xd'),_0xe8b1('0xf'),_0xe8b1('0x10'),'FAILED',_0xe8b1('0xe'),_0xe8b1('0xe')];config[_0xe8b1('0x11')]=_['defaults'](config[_0xe8b1('0x11')],{'host':_0xe8b1('0x12'),'port':0x18eb});var io=require(_0xe8b1('0x13'))(new Redis(config['redis']));function VoiceCallReport(_0x1ee7b5){this[_0xe8b1('0x14')]=_0x1ee7b5[_0xe8b1('0x14')];this[_0xe8b1('0x15')]=_0x1ee7b5[_0xe8b1('0x15')];this['blindTransfers']={};ami['on'](_0xe8b1('0x16'),this['syncNewExten'][_0xe8b1('0x17')](this));ami['on']('newexten',this[_0xe8b1('0x18')][_0xe8b1('0x17')](this));ami['on'](_0xe8b1('0x19'),this[_0xe8b1('0x1a')][_0xe8b1('0x17')](this));ami['on'](_0xe8b1('0x1b'),this['syncNewState'][_0xe8b1('0x17')](this));ami['on'](_0xe8b1('0x1c'),this['syncVarSet']['bind'](this));ami['on'](_0xe8b1('0x1d'),this[_0xe8b1('0x1e')]['bind'](this));ami['on'](_0xe8b1('0x1f'),this['syncNewCallerId']['bind'](this));ami['on'](_0xe8b1('0x20'),this[_0xe8b1('0x21')][_0xe8b1('0x17')](this));ami['on'](_0xe8b1('0x22'),this[_0xe8b1('0x23')]['bind'](this));ami['on'](_0xe8b1('0x24'),this[_0xe8b1('0x25')][_0xe8b1('0x17')](this));ami['on'](_0xe8b1('0x26'),this[_0xe8b1('0x27')][_0xe8b1('0x17')](this));try{logger[_0xe8b1('0x28')](_0xe8b1('0x29'));ami['actionCoreShowChannels']();}catch(_0x2a197){logger[_0xe8b1('0x2a')](_0xe8b1('0x2b'),util[_0xe8b1('0x2c')](_0x2a197,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xe8b1('0x2d')]=function(_0x350537){return _0x350537!==null&&!_[_0xe8b1('0x2e')](_0x350537);};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x30')]=function(_0x599969,_0x5069e7,_0x570596){io['to'](_0x599969)['emit'](_0x5069e7,_0x570596);};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x31')]=function(_0x3b3fe7){try{if(this[_0xe8b1('0x2d')](_0x3b3fe7)){logger[_0xe8b1('0x28')](_0xe8b1('0x32'),_0x3b3fe7[_0xe8b1('0x33')],_0x3b3fe7[_0xe8b1('0x34')],_0x3b3fe7[_0xe8b1('0x35')]);logger[_0xe8b1('0x36')](_0xe8b1('0x37'),_0x3b3fe7[_0xe8b1('0x33')],util['inspect'](_0x3b3fe7,{'showHidden':![],'depth':null}));if(_0x3b3fe7[_0xe8b1('0x33')]===_0x3b3fe7[_0xe8b1('0x38')]){if(!_[_0xe8b1('0x2e')](this[_0xe8b1('0x14')][_0x3b3fe7[_0xe8b1('0x33')]])){_[_0xe8b1('0x39')](this[_0xe8b1('0x14')][_0x3b3fe7[_0xe8b1('0x33')]],_[_0xe8b1('0x3a')](_0x3b3fe7,_[_0xe8b1('0x3b')](this[_0xe8b1('0x14')][_0x3b3fe7['uniqueid']])));}}if(_0x3b3fe7['context']===_0xe8b1('0x3c')){if(this[_0xe8b1('0x15')][_0x3b3fe7[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]){if(_0x3b3fe7[_0xe8b1('0x3f')]==_0xe8b1('0x40')){this['agents'][_0x3b3fe7['channel']['split']('-')[0x0]][_0xe8b1('0x41')]=_0x3b3fe7[_0xe8b1('0x42')];this[_0xe8b1('0x30')](util[_0xe8b1('0x43')](_0xe8b1('0x44'),this[_0xe8b1('0x15')][_0x3b3fe7['channel']['split']('-')[0x0]]['name']),_0xe8b1('0x45'),{'destaccountcode':this['agents'][_0x3b3fe7[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x46')],'destconnectedlinenum':_0x3b3fe7[_0xe8b1('0x42')]});}}}}}catch(_0x20fd3f){logger[_0xe8b1('0x2a')]('[%s][voiceCallReport][newcallerid]',_0x3b3fe7[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x20fd3f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x1a')]=function(_0x448e86){try{if(this[_0xe8b1('0x2d')](_0x448e86)){logger[_0xe8b1('0x36')](_0xe8b1('0x47'),_0x448e86[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x448e86,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x14')][_0x448e86[_0xe8b1('0x33')]])return;if(_0x448e86[_0xe8b1('0x3d')]==='OutgoingSpoolFailed')return;if(_0x448e86[_0xe8b1('0x33')]!==_0x448e86[_0xe8b1('0x38')]&&!this[_0xe8b1('0x48')][_0x448e86['linkedid']])return;logger[_0xe8b1('0x28')](_0xe8b1('0x49'),_0x448e86[_0xe8b1('0x33')],_0x448e86[_0xe8b1('0x4a')],_0x448e86['exten']);this[_0xe8b1('0x14')][_0x448e86[_0xe8b1('0x33')]]=new Channel();this[_0xe8b1('0x14')][_0x448e86[_0xe8b1('0x33')]][_0xe8b1('0x4b')]=moment()[_0xe8b1('0x43')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x448e86[_0xe8b1('0x33')]]['disposition']=dispositions[_[_0xe8b1('0x4c')](_0x448e86[_0xe8b1('0x4d')])];_[_0xe8b1('0x39')](this[_0xe8b1('0x14')][_0x448e86[_0xe8b1('0x33')]],_[_0xe8b1('0x3a')](_0x448e86,_[_0xe8b1('0x3b')](this[_0xe8b1('0x14')][_0x448e86[_0xe8b1('0x33')]])));if(_0x448e86[_0xe8b1('0x4a')]===_0xe8b1('0x3c')){if(this[_0xe8b1('0x15')][_0x448e86['channel'][_0xe8b1('0x3e')]('-')[0x0]]){if(_[_0xe8b1('0x2e')](this[_0xe8b1('0x15')][_0x448e86['channel'][_0xe8b1('0x3e')]('-')[0x0]]['destconnectedlinenum'])){this[_0xe8b1('0x15')][_0x448e86[_0xe8b1('0x3d')]['split']('-')[0x0]][_0xe8b1('0x41')]=_0x448e86[_0xe8b1('0x3f')];logger['debug'](_0xe8b1('0x4e'),_0x448e86[_0xe8b1('0x33')],util[_0xe8b1('0x2c')]({'id':this[_0xe8b1('0x15')][_0x448e86[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x448e86[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x46')],'destconnectedlinenum':_0x448e86[_0xe8b1('0x3f')]},{'showHidden':![],'depth':null}));this[_0xe8b1('0x30')](util[_0xe8b1('0x43')](_0xe8b1('0x44'),this[_0xe8b1('0x15')][_0x448e86[_0xe8b1('0x3d')]['split']('-')[0x0]][_0xe8b1('0x4f')]),_0xe8b1('0x45'),{'id':this[_0xe8b1('0x15')][_0x448e86[_0xe8b1('0x3d')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xe8b1('0x15')][_0x448e86[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x46')],'destconnectedlinenum':_0x448e86[_0xe8b1('0x3f')]});}}}}}catch(_0x23e3dd){logger[_0xe8b1('0x2a')](_0xe8b1('0x50'),_0x448e86[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x23e3dd,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe8b1('0x18')]=function(_0x508576){try{if(this[_0xe8b1('0x2d')](_0x508576)){logger[_0xe8b1('0x36')]('[%s][voiceCallReport][newexten]\x20event:',_0x508576[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x508576,{'showHidden':![],'depth':null}));if(_0x508576[_0xe8b1('0x3d')]==='OutgoingSpoolFailed'||_0x508576['exten']==='h')return;if(_0x508576[_0xe8b1('0x33')]===_0x508576['linkedid']||this[_0xe8b1('0x48')][_0x508576['linkedid']]){_0x508576[_0xe8b1('0x51')]=_0x508576[_0xe8b1('0x51')][_0xe8b1('0x52')]();_0x508576['applicationdata']=_0x508576['appdata']||_0x508576[_0xe8b1('0x53')];if(_0x508576['appdata']&&!_0x508576['appdata']['startsWith'](_0xe8b1('0x54'))&&_0x508576['application']!==_0xe8b1('0x55')){_0x508576[_0xe8b1('0x53')]=_0x508576['applicationdata'][_0xe8b1('0x52')]();}logger[_0xe8b1('0x28')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x508576['uniqueid'],_0x508576[_0xe8b1('0x51')],_0x508576[_0xe8b1('0x53')]);if(_[_0xe8b1('0x2e')](this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]])){this[_0xe8b1('0x14')][_0x508576['uniqueid']]=new Channel();this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]][_0xe8b1('0x4b')]=_0x508576['duration']?moment()[_0xe8b1('0x56')](moment[_0xe8b1('0x57')](_0x508576['duration'])[_0xe8b1('0x58')](),'seconds')['format'](_0xe8b1('0x59')):moment()[_0xe8b1('0x43')](_0xe8b1('0x59'));this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]][_0xe8b1('0x5a')]=_0xe8b1('0xd');}_['merge'](this['channels'][_0x508576[_0xe8b1('0x33')]],_['pick'](_0x508576,_[_0xe8b1('0x3b')](this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]])));if(_['includes'](applications,_0x508576[_0xe8b1('0x51')])){this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]][_0xe8b1('0x5b')]=_0x508576[_0xe8b1('0x51')];this['channels'][_0x508576['uniqueid']][_0xe8b1('0x5c')]=_0x508576['applicationdata'];if(_0x508576[_0xe8b1('0x51')]==='set'&&_['startsWith'](_0x508576[_0xe8b1('0x53')][_0xe8b1('0x52')](),_0xe8b1('0x5d'))){var _0x3da39f=_0x508576[_0xe8b1('0x53')][_0xe8b1('0x3e')]('=');var _0x2d5b8b=_0x3da39f[0x0][_0xe8b1('0x52')]()[_0xe8b1('0x5e')](/cdr\((.*)\)/);if(_0x2d5b8b){if(_0x2d5b8b[0x1]===_0xe8b1('0x5f')&&!_[_0xe8b1('0x60')](this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]][_0x2d5b8b[0x1]]))return;this[_0xe8b1('0x14')][_0x508576[_0xe8b1('0x33')]][_0x2d5b8b[0x1]]=_0x3da39f[0x1];}}else if(_0x508576[_0xe8b1('0x51')]===_0xe8b1('0x55')){this[_0xe8b1('0x14')][_0x508576['uniqueid']][_0xe8b1('0x55')]=_0x508576[_0xe8b1('0x53')]['split'](',')[0x0];}}}}}catch(_0x4b2273){logger['error'](_0xe8b1('0x61'),_0x508576['uniqueid'],util[_0xe8b1('0x2c')](_0x4b2273,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')]['syncNewState']=function(_0x49f166){try{if(this[_0xe8b1('0x2d')](_0x49f166)){logger[_0xe8b1('0x28')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x49f166['uniqueid'],_0x49f166[_0xe8b1('0x38')],_0x49f166[_0xe8b1('0x34')],_0x49f166['calleridnum']);logger['debug']('[%s][voiceCallReport][newstate]\x20event:',_0x49f166[_0xe8b1('0x33')],util['inspect'](_0x49f166,{'showHidden':![],'depth':null}));if(_0x49f166[_0xe8b1('0x4d')]!=='6')return;if(_0x49f166[_0xe8b1('0x33')]!==_0x49f166[_0xe8b1('0x38')]){var _0x324c3d=moment();if(this[_0xe8b1('0x14')][_0x49f166['linkedid']]){if(!this[_0xe8b1('0x14')][_0x49f166['linkedid']]['answered']){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]]['answered']=!![];this[_0xe8b1('0x14')][_0x49f166['linkedid']][_0xe8b1('0x62')]=_0x324c3d[_0xe8b1('0x43')](_0xe8b1('0x59'));if(this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x4b')]){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x63')]=_0x324c3d[_0xe8b1('0x64')](this['channels'][_0x49f166['linkedid']][_0xe8b1('0x4b')],'seconds');}}this['channels'][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x38')]=_0x49f166[_0xe8b1('0x33')];if(_0x49f166[_0xe8b1('0x35')]!==_0xe8b1('0x40')){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x42')]=_0x49f166[_0xe8b1('0x35')];}this['channels'][_0x49f166[_0xe8b1('0x38')]]['connectedlinename']=_0x49f166['calleridname'];this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]]['destinationchannel']=_0x49f166[_0xe8b1('0x3d')];this[_0xe8b1('0x14')][_0x49f166['linkedid']][_0xe8b1('0x5a')]=dispositions[_['toNumber'](_0x49f166[_0xe8b1('0x4d')])];if(this['agents'][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x65')]=this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['id'];this[_0xe8b1('0x14')][_0x49f166['linkedid']][_0xe8b1('0x66')]=this['agents'][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x4f')];}}if(this[_0xe8b1('0x14')][_0x49f166['uniqueid']]){if(!this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x67')]){this['channels'][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x67')]=!![];this['channels'][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x62')]=_0x324c3d[_0xe8b1('0x43')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x4b')]){this[_0xe8b1('0x14')][_0x49f166['uniqueid']][_0xe8b1('0x63')]=_0x324c3d[_0xe8b1('0x64')](this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x4b')],'seconds');}}if(_0x49f166[_0xe8b1('0x35')]!==_0xe8b1('0x40')){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x42')]=_0x49f166['calleridnum'];}this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x68')]=_0x49f166[_0xe8b1('0x34')];this[_0xe8b1('0x14')][_0x49f166['uniqueid']][_0xe8b1('0x69')]=_0x49f166['channel'];this['channels'][_0x49f166[_0xe8b1('0x33')]]['disposition']=dispositions[_['toNumber'](_0x49f166['channelstate'])];}}else{if(this[_0xe8b1('0x14')][_0x49f166['uniqueid']]){if(this[_0xe8b1('0x15')][_0x49f166['channel']['split']('-')[0x0]]){this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]][_0xe8b1('0x65')]=this['agents'][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['id'];this['channels'][_0x49f166[_0xe8b1('0x33')]]['membername']=this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x4f')];}}}if(_0x49f166[_0xe8b1('0x4a')]===_0xe8b1('0x3c')){if(this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')]['split']('-')[0x0]]){this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')]['split']('-')[0x0]][_0xe8b1('0x41')]=_0x49f166[_0xe8b1('0x3f')];var _0x538117,_0xc2dadf;if(this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]]){_0x538117=this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x33')]]['routealias'];_0xc2dadf=this[_0xe8b1('0x14')][_0x49f166['uniqueid']][_0xe8b1('0x55')];}else if(this['channels'][_0x49f166[_0xe8b1('0x38')]]){_0x538117=this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x6a')];_0xc2dadf=this[_0xe8b1('0x14')][_0x49f166[_0xe8b1('0x38')]][_0xe8b1('0x55')];}this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x55')]=_0xc2dadf;this[_0xe8b1('0x15')][_0x49f166['channel']['split']('-')[0x0]][_0xe8b1('0x6a')]=_0x538117;logger[_0xe8b1('0x36')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x49f166['uniqueid'],util[_0xe8b1('0x2c')]({'id':this[_0xe8b1('0x15')][_0x49f166['channel'][_0xe8b1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')]['split']('-')[0x0]][_0xe8b1('0x46')],'destconnectedlinenum':_0x49f166[_0xe8b1('0x3f')],'routealias':_0x538117,'queue':_0xc2dadf||undefined},{'showHidden':![],'depth':null}));this['emit'](util[_0xe8b1('0x43')](_0xe8b1('0x44'),this['agents'][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x4f')]),'user:agentconnect',{'id':this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xe8b1('0x15')][_0x49f166[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x49f166['exten'],'routealias':_0x538117,'queue':_0xc2dadf||undefined});}}}}catch(_0x18340a){logger['error'](_0xe8b1('0x6b'),_0x49f166[_0xe8b1('0x33')],util['inspect'](_0x18340a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x6c')]=function(_0x191a47,_0x352853){try{if(this['channels'][_0x191a47]){logger[_0xe8b1('0x28')](_0xe8b1('0x6d'),_0x191a47,_0x352853);this['channels'][_0x191a47][_0xe8b1('0x6e')]=!![];if(_['endsWith'](_0x352853,_0xe8b1('0x6f'))){_0x352853=_0x352853[_0xe8b1('0x70')](_0xe8b1('0x6f'),_0xe8b1('0x71'));}this['channels'][_0x191a47][_0xe8b1('0x72')]=_0x352853;var _0x20d490=_[_0xe8b1('0x73')](this[_0xe8b1('0x14')][_0x191a47][_0xe8b1('0x74')],{'filename':_0x352853});if(_['isNil'](_0x20d490)){this[_0xe8b1('0x14')][_0x191a47][_0xe8b1('0x74')][_0xe8b1('0x75')]({'filename':_0x352853,'createdAt':moment()[_0xe8b1('0x43')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':'rec'});}}}catch(_0xb24a0a){logger[_0xe8b1('0x2a')](_0xe8b1('0x76'),_0x191a47,util[_0xe8b1('0x2c')](_0xb24a0a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x77')]=function(_0x23867c){try{if(this[_0xe8b1('0x2d')](_0x23867c)){logger['debug'](_0xe8b1('0x78'),_0x23867c[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x23867c,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]]&&_0x23867c['channel']!=_0xe8b1('0x79')){if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')])){if(this['isNotNull'](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x7b')])){logger[_0xe8b1('0x28')](_0xe8b1('0x7c'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x6c')](_0x23867c[_0xe8b1('0x33')],_0x23867c['value']);}else if(this[_0xe8b1('0x2d')](_0x23867c['variable'][_0xe8b1('0x7e')])){logger[_0xe8b1('0x28')](_0xe8b1('0x7f'),_0x23867c[_0xe8b1('0x33')],_0x23867c['value']);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]]['calleridnum']=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x80')])){logger[_0xe8b1('0x28')](_0xe8b1('0x81'),_0x23867c['uniqueid'],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x82')]=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c['variable'][_0xe8b1('0x83')])){logger['info'](_0xe8b1('0x84'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this['channels'][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x5f')]=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x85')])){logger[_0xe8b1('0x28')](_0xe8b1('0x86'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')][_0xe8b1('0x3e')](',')[0x0]);this['channels'][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x55')]=_0x23867c['value']['split'](',')[0x0];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x87')])){logger[_0xe8b1('0x28')](_0xe8b1('0x88'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c['uniqueid']][_0xe8b1('0x89')]=_0x23867c['value'];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')]['xmd-destination'])){logger[_0xe8b1('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x8a')]=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x8b')])){logger[_0xe8b1('0x28')](_0xe8b1('0x8c'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x8d')]=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c['variable'][_0xe8b1('0x8e')])){logger['info'](_0xe8b1('0x8f'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this['channels'][_0x23867c[_0xe8b1('0x33')]]['queue']=_0x23867c[_0xe8b1('0x7d')];}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x90')])){logger[_0xe8b1('0x28')](_0xe8b1('0x91'),_0x23867c[_0xe8b1('0x33')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x33')]][_0xe8b1('0x92')]=_0x23867c['value'];}}}else if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')][_0xe8b1('0x7b')])){if(_0x23867c[_0xe8b1('0x7d')]){var _0x139076=path[_0xe8b1('0x93')](_0x23867c[_0xe8b1('0x7d')])[_0xe8b1('0x4f')];logger[_0xe8b1('0x28')](_0xe8b1('0x7c'),_0x139076,_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x6c')](_0x139076,_0x23867c[_0xe8b1('0x7d')]);}}else if(this['channels'][_0x23867c[_0xe8b1('0x38')]]){if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')])){if(this[_0xe8b1('0x2d')](_0x23867c[_0xe8b1('0x7a')]['sipcallid'])){logger[_0xe8b1('0x28')](_0xe8b1('0x91'),_0x23867c[_0xe8b1('0x38')],_0x23867c[_0xe8b1('0x7d')]);this[_0xe8b1('0x14')][_0x23867c[_0xe8b1('0x38')]][_0xe8b1('0x94')]=_0x23867c[_0xe8b1('0x7d')];}}}}}catch(_0xf0dd3e){logger[_0xe8b1('0x2a')](_0xe8b1('0x95'),_0x23867c['uniqueid'],util[_0xe8b1('0x2c')](_0xf0dd3e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x1e')]=function(_0x3e0d1d){try{if(this['isNotNull'](_0x3e0d1d)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0x3e0d1d[_0xe8b1('0x33')],util['inspect'](_0x3e0d1d,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]]){if(this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']]['linkedid']]){this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x38')]][_0xe8b1('0x33')]=_0x3e0d1d[_0xe8b1('0x33')];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']]['linkedid']][_0xe8b1('0x67')]=this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x67')];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x38')]][_0xe8b1('0x62')]=this['channels'][_0x3e0d1d['uniqueid']]['answertime'];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']]['linkedid']][_0xe8b1('0x69')]=this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']][_0xe8b1('0x38')]]['channel'];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']][_0xe8b1('0x38')]][_0xe8b1('0x5a')]=this['channels'][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x5a')];this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]=this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]]['linkedid']];delete this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x38')]];}else if(this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']][_0xe8b1('0x33')]]){this['channels'][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x33')]][_0xe8b1('0x33')]=[this[_0xe8b1('0x14')][this['blindTransfers'][_0x3e0d1d['linkedid']][_0xe8b1('0x33')]][_0xe8b1('0x38')],this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x33')]]['linkedid']=this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x33')]][_0xe8b1('0x33')]][0x0];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']][_0xe8b1('0x33')]][_0xe8b1('0x67')]=this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x67')];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]]['uniqueid']][_0xe8b1('0x62')]=this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x62')];this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']][_0xe8b1('0x33')]]['destinationchannel']=this[_0xe8b1('0x14')][this[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x38')]]['uniqueid']][_0xe8b1('0x3d')];this[_0xe8b1('0x14')][this['blindTransfers'][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x33')]][_0xe8b1('0x5a')]=this['channels'][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x5a')];this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]=this['channels'][this[_0xe8b1('0x48')][_0x3e0d1d['linkedid']]['uniqueid']];delete this[_0xe8b1('0x14')][this['blindTransfers'][_0x3e0d1d[_0xe8b1('0x38')]][_0xe8b1('0x33')]];}}if(this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']]){logger[_0xe8b1('0x28')](_0xe8b1('0x96'),_0x3e0d1d[_0xe8b1('0x33')],_0x3e0d1d[_0xe8b1('0x97')]);var _0x3591a7=moment();this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x98')]=_0x3591a7[_0xe8b1('0x43')](_0xe8b1('0x59'));this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]['duration']=_0x3591a7[_0xe8b1('0x64')](this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]['starttime'],_0xe8b1('0x58'));if(this['channels'][_0x3e0d1d['uniqueid']][_0xe8b1('0x67')]){this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]['billableseconds']=_0x3591a7['diff'](this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x62')],_0xe8b1('0x58'));this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x63')]=this[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x57')]-this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x99')];}if(_0x3e0d1d['context']===_0xe8b1('0x3c')){if(this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]){this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]=_[_0xe8b1('0x9a')](this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')]['split']('-')[0x0]],[_0xe8b1('0x41')]);logger[_0xe8b1('0x36')](_0xe8b1('0x9b'),_0x3e0d1d['uniqueid'],util[_0xe8b1('0x2c')]({'id':this[_0xe8b1('0x15')][_0x3e0d1d['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0xe8b1('0x30')](util['format']('user:%s',this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]][_0xe8b1('0x4f')]),_0xe8b1('0x9c'),{'id':this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')][_0xe8b1('0x3e')]('-')[0x0]]['id'],'destaccountcode':this[_0xe8b1('0x15')][_0x3e0d1d[_0xe8b1('0x3d')]['split']('-')[0x0]][_0xe8b1('0x46')]});for(var _0x22afd2=0x0;_0x22afd2<Object[_0xe8b1('0x3b')](this[_0xe8b1('0x15')])[_0xe8b1('0x9d')];_0x22afd2++){var _0x3caa42=Object[_0xe8b1('0x3b')](this[_0xe8b1('0x15')])[_0x22afd2];var _0x29caed=this[_0xe8b1('0x15')][_0x3caa42];if(_0x29caed[_0xe8b1('0x46')]===Number(_0x3e0d1d['connectedlinenum'])){this[_0xe8b1('0x30')](util['format'](_0xe8b1('0x44'),_0x29caed['name']),_0xe8b1('0x9c'),{'id':_0x29caed['id'],'destaccountcode':_0x29caed[_0xe8b1('0x46')],'transfer':this[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x9e')]});break;}}}}var _0x28e2cc=this;Promise['resolve']()[_0xe8b1('0x9f')](function(){var _0x2cb379=_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]];if(typeof _0x2cb379[_0xe8b1('0x9e')]===_0xe8b1('0xa0'))return;if(_[_0xe8b1('0xa1')](_0x2cb379[_0xe8b1('0x74')]))return;return RpcSetting[_0xe8b1('0xa2')]()['then'](function(_0x56e063){if(!_0x56e063[_0xe8b1('0xa3')])return;return Promise[_0xe8b1('0xa4')]()['then'](function(){return ami[_0xe8b1('0xa5')]({'action':_0xe8b1('0xa6'),'channel':_0x2cb379[_0xe8b1('0x3d')]})[_0xe8b1('0xa7')](function(){});})['then'](function(){return ami[_0xe8b1('0xa5')]({'action':_0xe8b1('0xa6'),'channel':_0x2cb379['destinationchannel']})[_0xe8b1('0xa7')](function(){})['finally'](function(){var _0x1eab1f=_0x28e2cc[_0xe8b1('0x15')][_0x2cb379[_0xe8b1('0x69')][_0xe8b1('0x3e')]('-')[0x0]];if(!_0x1eab1f)return;io[_0xe8b1('0x30')](_0xe8b1('0xa8'),{'agentId':_0x1eab1f['id'],'uniqueid':_0x2cb379[_0xe8b1('0x33')]});});});});})['then'](function(){if(_0x3e0d1d[_0xe8b1('0xa9')]===_0xe8b1('0xaa')){_0x28e2cc['blindTransfers'][_0x3e0d1d['uniqueid']]=_0x3e0d1d;}else{if(_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x5f')]===_0xe8b1('0xab')&&_0x28e2cc[_0xe8b1('0x48')][_0x3e0d1d[_0xe8b1('0x33')]]){_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x33')]=[_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]][_0xe8b1('0x38')],_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x38')]=_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d['uniqueid']][_0xe8b1('0x33')]][0x0];delete _0x28e2cc['blindTransfers'][_0x3e0d1d[_0xe8b1('0x33')]];}}logger[_0xe8b1('0x36')](_0xe8b1('0xac'),_0x3e0d1d[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]],{'showHidden':![],'depth':null}));ami['emit'](_0xe8b1('0xad'),_0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]]);delete _0x28e2cc[_0xe8b1('0x14')][_0x3e0d1d[_0xe8b1('0x33')]];});}}}catch(_0x58cdea){logger[_0xe8b1('0x2a')](_0xe8b1('0xae'),_0x3e0d1d[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x58cdea,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x21')]=function(_0x341a1d){try{if(this[_0xe8b1('0x2d')](_0x341a1d)){logger[_0xe8b1('0x28')](_0xe8b1('0xaf'),_0x341a1d[_0xe8b1('0x33')],_0x341a1d[_0xe8b1('0xb0')],_0x341a1d[_0xe8b1('0xb1')]);logger['debug'](_0xe8b1('0xb2'),_0x341a1d[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x341a1d,{'showHidden':![],'depth':null}));var _0x4d5639;if(this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb3')]]){this['channels'][_0x341a1d[_0xe8b1('0xb3')]][_0xe8b1('0xb4')]=_0x341a1d['origtransferercalleridnum'];this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb3')]]['transferconnectedlinenum']=_0x341a1d[_0xe8b1('0xb1')];if(this['channels'][_0x341a1d['secondtransfereruniqueid']]){_0x4d5639=this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb5')]];this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb5')]]=this[_0xe8b1('0x14')][_0x341a1d['transfereeuniqueid']];this['channels'][_0x341a1d[_0xe8b1('0xb3')]]=_0x4d5639;}this['channels'][_0x341a1d[_0xe8b1('0xb5')]][_0xe8b1('0x9e')]=_0xe8b1('0xb6');}else if(this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb7')]]){this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb7')]][_0xe8b1('0xb4')]=_0x341a1d[_0xe8b1('0xb0')];this['channels'][_0x341a1d['transfertargetuniqueid']][_0xe8b1('0xb8')]=_0x341a1d[_0xe8b1('0xb1')];if(this['channels'][_0x341a1d[_0xe8b1('0xb9')]]){_0x4d5639=this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb9')]];this['channels'][_0x341a1d[_0xe8b1('0xb9')]]=this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb7')]];this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb7')]]=_0x4d5639;}this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb7')]]['transferType']=_0xe8b1('0xb6');}if((this['channels'][_0x341a1d['origtransfereruniqueid']]||this[_0xe8b1('0x14')][_0x341a1d['origtransfererlinkedid']])&&this['channels'][_0x341a1d[_0xe8b1('0xb5')]]){var _0x84e95d=_[_0xe8b1('0xba')]([this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb9')]],this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xbb')]],this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xb5')]]],function(_0x17fa50){return _0x17fa50&&_0x17fa50[_0xe8b1('0x5f')]===_0xe8b1('0xab')&&_0x17fa50[_0xe8b1('0xbc')];});if(_0x84e95d){if(this['channels'][_0x341a1d[_0xe8b1('0xb9')]])this[_0xe8b1('0x14')][_0x341a1d['origtransfereruniqueid']]['transferType']=_0xe8b1('0xb6');if(this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xbb')]])this[_0xe8b1('0x14')][_0x341a1d[_0xe8b1('0xbb')]]['transferType']=_0xe8b1('0xb6');this['channels'][_0x341a1d[_0xe8b1('0xb5')]][_0xe8b1('0x9e')]=_0xe8b1('0xb6');}}}}catch(_0x20947e){logger[_0xe8b1('0x2a')](_0xe8b1('0xbd'),_0x341a1d[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x20947e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x23')]=function(_0x4b9f62){try{if(this['isNotNull'](_0x4b9f62)){logger[_0xe8b1('0x28')](_0xe8b1('0xbe'),_0x4b9f62[_0xe8b1('0x33')],_0x4b9f62[_0xe8b1('0xbf')],_0x4b9f62[_0xe8b1('0xc0')]);logger[_0xe8b1('0x36')](_0xe8b1('0xc1'),_0x4b9f62[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x4b9f62,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x14')][_0x4b9f62[_0xe8b1('0xb3')]]){this[_0xe8b1('0x14')][_0x4b9f62[_0xe8b1('0xb3')]]['transfercalleridnum']=_0x4b9f62['transfereecalleridnum'];this[_0xe8b1('0x14')][_0x4b9f62[_0xe8b1('0xb3')]]['transferconnectedlinenum']=_0x4b9f62[_0xe8b1('0xc0')];this['channels'][_0x4b9f62[_0xe8b1('0xb3')]][_0xe8b1('0x9e')]=_0xe8b1('0xc2');this[_0xe8b1('0x1e')]({'event':'BlindTransfer','uniqueid':_0x4b9f62[_0xe8b1('0xb3')],'linkedid':_0x4b9f62[_0xe8b1('0xc3')],'context':_0x4b9f62[_0xe8b1('0x4a')],'channel':_0x4b9f62[_0xe8b1('0xc4')]});}else{this[_0xe8b1('0x14')][_0x4b9f62[_0xe8b1('0xc3')]][_0xe8b1('0x9e')]=_0xe8b1('0xc2');this[_0xe8b1('0x1e')]({'event':'BlindTransfer','uniqueid':_0x4b9f62['transfereruniqueid'],'linkedid':_0x4b9f62['transfereeuniqueid'],'context':_0x4b9f62[_0xe8b1('0x4a')],'channel':_0x4b9f62['transfererchannel']});}}}catch(_0x1a0d7a){logger[_0xe8b1('0x2a')]('[%s][voiceCallReport][blindtransfer]',_0x4b9f62[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x1a0d7a,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe8b1('0x25')]=function(_0x31f0cd){try{if(this[_0xe8b1('0x2d')](_0x31f0cd)){logger[_0xe8b1('0x36')](_0xe8b1('0xc5'),_0x31f0cd[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x31f0cd,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x14')][_0x31f0cd[_0xe8b1('0x33')]]){if(!_[_0xe8b1('0x60')](this[_0xe8b1('0x14')][_0x31f0cd[_0xe8b1('0x33')]][_0xe8b1('0x62')])){this['channels'][_0x31f0cd['uniqueid']][_0xe8b1('0xc6')]=moment()[_0xe8b1('0x43')](_0xe8b1('0x59'));logger[_0xe8b1('0x28')](_0xe8b1('0xc7'),_0x31f0cd[_0xe8b1('0x33')],this[_0xe8b1('0x14')][_0x31f0cd[_0xe8b1('0x33')]]['mohstarttime']);}}}}catch(_0x5ed1f7){logger['error'](_0xe8b1('0xc8'),_0x31f0cd['uniqueid'],util[_0xe8b1('0x2c')](_0x5ed1f7,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe8b1('0x2f')][_0xe8b1('0x27')]=function(_0x2ac7db){try{if(this[_0xe8b1('0x2d')](_0x2ac7db)){logger[_0xe8b1('0x36')](_0xe8b1('0xc9'),_0x2ac7db[_0xe8b1('0x33')],util[_0xe8b1('0x2c')](_0x2ac7db,{'showHidden':![],'depth':null}));if(this[_0xe8b1('0x14')][_0x2ac7db[_0xe8b1('0x33')]]){if(!_[_0xe8b1('0x60')](this[_0xe8b1('0x14')][_0x2ac7db[_0xe8b1('0x33')]][_0xe8b1('0xc6')])){this[_0xe8b1('0x14')][_0x2ac7db['uniqueid']]['mohtime']+=moment()[_0xe8b1('0xca')](0x0)['diff'](this['channels'][_0x2ac7db['uniqueid']][_0xe8b1('0xc6')],_0xe8b1('0x58'));logger[_0xe8b1('0x28')](_0xe8b1('0xcb'),_0x2ac7db[_0xe8b1('0x33')],this[_0xe8b1('0x14')][_0x2ac7db[_0xe8b1('0x33')]]['mohtime']);delete this[_0xe8b1('0x14')][_0x2ac7db[_0xe8b1('0x33')]][_0xe8b1('0xc6')];}}}}catch(_0x7b9ca7){logger[_0xe8b1('0x2a')](_0xe8b1('0xcc'),_0x2ac7db['uniqueid'],util[_0xe8b1('0x2c')](_0x7b9ca7,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 608170e..3c33640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['channels','channel','substring','lastIndexOf','event','privilege','info','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','debug','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','isNotNull','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','starttime','seconds','complete','answered','holdtime','diff','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','application','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','varset','prototype','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge'];(function(_0x1c1ff4,_0x2eb344){var _0x27c7f8=function(_0x281182){while(--_0x281182){_0x1c1ff4['push'](_0x1c1ff4['shift']());}};_0x27c7f8(++_0x2eb344);}(_0xf494,0x1c6));var _0x4f49=function(_0x5db800,_0x9c38a4){_0x5db800=_0x5db800-0x0;var _0x2195d9=_0xf494[_0x5db800];return _0x2195d9;};'use strict';var _=require(_0x4f49('0x0'));var moment=require(_0x4f49('0x1'));var util=require(_0x4f49('0x2'));var Redis=require('ioredis');var config=require(_0x4f49('0x3'));var logger=require(_0x4f49('0x4'))(_0x4f49('0x5'));var ami=require(_0x4f49('0x6'));config[_0x4f49('0x7')]=_[_0x4f49('0x8')](config[_0x4f49('0x7')],{'host':_0x4f49('0x9'),'port':0x18eb});var io=require(_0x4f49('0xa'))(new Redis(config[_0x4f49('0x7')]));function VoiceDialReport(_0x42b0e8){this['channels']=_0x42b0e8['outboundChannels'];this[_0x4f49('0xb')]=_0x42b0e8[_0x4f49('0xb')];this[_0x4f49('0xc')]={};this[_0x4f49('0xd')]={};ami['on'](_0x4f49('0xe'),this[_0x4f49('0xf')][_0x4f49('0x10')](this));ami['on'](_0x4f49('0x11'),this['syncDialEnd'][_0x4f49('0x10')](this));ami['on'](_0x4f49('0x12'),this['syncVarSet'][_0x4f49('0x10')](this));ami['on']('hangup',this['syncHangup'][_0x4f49('0x10')](this));}VoiceDialReport[_0x4f49('0x13')]['isNotNull']=function(_0x1e1c37){return _0x1e1c37!==null&&!_[_0x4f49('0x14')](_0x1e1c37);};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x15')]=function(_0x1a0f1e,_0x2f0131,_0xfdb477){io['to'](_0x1a0f1e)['emit'](_0x2f0131,_0xfdb477);};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0xf')]=function(_0x415e83){try{if(this['isNotNull'](_0x415e83)){logger['debug'](_0x4f49('0x16'),_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x415e83,{'showHidden':![],'depth':null}));if(this['channels'][_0x415e83[_0x4f49('0x17')]]){_[_0x4f49('0x19')](this[_0x4f49('0x1a')][_0x415e83['uniqueid']],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1c')](0x0,_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('-')),'membername':_0x415e83['channel'][_0x4f49('0x1c')](_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('/')+0x1,_0x415e83[_0x4f49('0x1b')][_0x4f49('0x1d')]('-'))},_['omit'](_0x415e83,[_0x4f49('0x1e'),_0x4f49('0x1f')]));logger[_0x4f49('0x20')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x415e83[_0x4f49('0x17')],this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]][_0x4f49('0x21')],this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]['interface']);logger['debug'](_0x4f49('0x22'),_0x415e83[_0x4f49('0x17')],util['inspect'](this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));if(this[_0x4f49('0xc')][_0x415e83['uniqueid']])_[_0x4f49('0x19')](this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]],this[_0x4f49('0xc')][_0x415e83[_0x4f49('0x17')]]);this[_0x4f49('0x15')]('voice:outbound','voice_outbound_channel:save',this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]);logger[_0x4f49('0x23')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x415e83['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x4f49('0x24'),this[_0x4f49('0x1a')][_0x415e83[_0x4f49('0x17')]]);}}}catch(_0x5e7076){logger[_0x4f49('0x25')](_0x4f49('0x26'),_0x415e83[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x5e7076,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x27')]=function(_0x32c066){try{if(this[_0x4f49('0x28')](_0x32c066)){logger[_0x4f49('0x23')](_0x4f49('0x29'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x32c066,{'showHidden':![],'depth':null}));if(this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]]){this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2a')]=_0x32c066[_0x4f49('0x2a')];if(_0x32c066[_0x4f49('0x2a')]==='ANSWER'){this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2b')]=_0x32c066[_0x4f49('0x2b')];this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2c')]=_0x32c066[_0x4f49('0x2c')];this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x2d')]=moment()[_0x4f49('0x2e')](_0x4f49('0x2f'));this['channels'][_0x32c066[_0x4f49('0x17')]][_0x4f49('0x30')]=_0x4f49('0x31');logger[_0x4f49('0x20')](_0x4f49('0x32'),_0x32c066[_0x4f49('0x17')],_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1c')](_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1d')]('/')+0x1,_0x32c066[_0x4f49('0x1b')][_0x4f49('0x1d')]('-')));logger[_0x4f49('0x23')](_0x4f49('0x33'),_0x32c066['uniqueid'],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x32c066['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x4f49('0x15')](_0x4f49('0x34'),this['channels'][_0x32c066[_0x4f49('0x17')]]);}logger[_0x4f49('0x23')](_0x4f49('0x35'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x4f49('0x1a')][_0x32c066[_0x4f49('0x17')]]);}}}catch(_0x2e4355){logger[_0x4f49('0x25')](_0x4f49('0x36'),_0x32c066[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x2e4355,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x37')]=function(_0x486b82){try{if(this['isNotNull'](_0x486b82)){logger[_0x4f49('0x23')](_0x4f49('0x38'),_0x486b82[_0x4f49('0x17')],util['inspect'](_0x486b82,{'showHidden':![],'depth':null}));this[_0x4f49('0x39')](_0x486b82['uniqueid'],_['keys'](_0x486b82[_0x4f49('0x3a')])[0x0],_0x486b82[_0x4f49('0x3b')]);if(this[_0x4f49('0x28')](_0x486b82['variable'])&&this[_0x4f49('0x28')](_0x486b82[_0x4f49('0x3a')]['outboundrouteid'])){if(_[_0x4f49('0x14')](this['channels'][_0x486b82[_0x4f49('0x17')]])){this[_0x4f49('0x1a')][_0x486b82[_0x4f49('0x17')]]={'routeId':_0x486b82['value'],'variables':this[_0x4f49('0xd')][_0x486b82[_0x4f49('0x17')]],'motionChannel':_0x4f49('0x3c')};logger[_0x4f49('0x20')](_0x4f49('0x3d'),_0x486b82[_0x4f49('0x17')],_0x486b82[_0x4f49('0x3a')][_0x4f49('0x3e')],_[_0x4f49('0x3f')](_0x486b82[_0x4f49('0x3a')])[0x0],_0x486b82['value']);logger[_0x4f49('0x23')](_0x4f49('0x40'),_0x486b82['uniqueid'],util[_0x4f49('0x18')](this['channels'][_0x486b82[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')](_0x4f49('0x41'),_0x4f49('0x42'),this['channels'][_0x486b82[_0x4f49('0x17')]]);}}}}catch(_0x2c426b){logger[_0x4f49('0x25')](_0x4f49('0x43'),_0x486b82[_0x4f49('0x17')],util[_0x4f49('0x18')](_0x2c426b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x39')]=function(_0x259ec1,_0x3520b2,_0x1be59a){var _0x4482f7=[_0x4f49('0x44'),_0x4f49('0x45'),_0x4f49('0x46'),_0x4f49('0x47'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x4f49('0x48'),_0x4f49('0x49'),_0x4f49('0x4a'),_0x4f49('0x4b'),_0x4f49('0x4c'),_0x4f49('0x4d'),_0x4f49('0x4e'),'memberdynamic',_0x4f49('0x4f'),'memberlastcall',_0x4f49('0x21'),_0x4f49('0x50'),_0x4f49('0x51')];if(!_[_0x4f49('0x52')](_0x3520b2)&&!_['includes'](_0x4482f7,_0x3520b2)){if(_[_0x4f49('0x14')](this['variables'][_0x259ec1])){this['variables'][_0x259ec1]={};}this[_0x4f49('0xd')][_0x259ec1][_0x3520b2]=_0x1be59a;}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x53')]=function(_0x26ae33){try{if(this['isNotNull'](_0x26ae33)){logger['debug'](_0x4f49('0x54'),_0x26ae33[_0x4f49('0x17')],util['inspect'](_0x26ae33,{'showHidden':![],'depth':null}));if(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']]){logger['info'](_0x4f49('0x55'),_0x26ae33['uniqueid'],_0x26ae33[_0x4f49('0x56')]);this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x57')]=moment()[_0x4f49('0x2e')](_0x4f49('0x2f'));this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x58')]=moment(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x57')])['diff'](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x59')],_0x4f49('0x5a'));this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]['lastevent']=_0x4f49('0x5b');this[_0x4f49('0xb')]['total']+=0x1;if(this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')]){this[_0x4f49('0xb')][_0x4f49('0x5c')]+=0x1;this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x5d')]=moment(this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')])[_0x4f49('0x5e')](this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x59')],_0x4f49('0x5a'));this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x5f')]=moment(this[_0x4f49('0x1a')][_0x26ae33['uniqueid']][_0x4f49('0x57')])[_0x4f49('0x5e')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x2d')],_0x4f49('0x5a'));this[_0x4f49('0xb')][_0x4f49('0x60')]+=this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x5d')]||0x0;this[_0x4f49('0xb')][_0x4f49('0x61')]+=this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x5f')];}this['outbound'][_0x4f49('0x62')]+=this['channels'][_0x26ae33[_0x4f49('0x17')]][_0x4f49('0x58')];logger[_0x4f49('0x23')](_0x4f49('0x63'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));ami[_0x4f49('0x15')](_0x4f49('0x64'),this['channels'][_0x26ae33[_0x4f49('0x17')]]);logger[_0x4f49('0x23')](_0x4f49('0x65'),_0x26ae33[_0x4f49('0x17')],util['inspect'](this['channels'][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));ami['emit'](_0x4f49('0x66'),this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]);logger[_0x4f49('0x23')](_0x4f49('0x67'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')](_0x4f49('0x41'),_0x4f49('0x68'),this[_0x4f49('0xb')]);logger[_0x4f49('0x20')](_0x4f49('0x69'),JSON[_0x4f49('0x6a')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]]));logger[_0x4f49('0x23')](_0x4f49('0x6b'),_0x26ae33[_0x4f49('0x17')],util[_0x4f49('0x18')](this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]],{'showHidden':![],'depth':null}));this[_0x4f49('0x15')]('voice:outbound',_0x4f49('0x6c'),this['channels'][_0x26ae33[_0x4f49('0x17')]]);delete this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x17')]];}else if(this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x6d')]]){this[_0x4f49('0x1a')][_0x26ae33[_0x4f49('0x6d')]][_0x4f49('0x17')]=this[_0x4f49('0x1a')][_0x26ae33['linkedid']]['destuniqueid'];}if(this[_0x4f49('0xd')][_0x26ae33['uniqueid']]){delete this[_0x4f49('0xd')][_0x26ae33[_0x4f49('0x17')]];}}}catch(_0x1f57cb){logger[_0x4f49('0x25')](_0x4f49('0x6e'),_0x26ae33['uniqueid'],util['inspect'](_0x1f57cb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4f49('0x13')][_0x4f49('0x6f')]=function(_0x4bdd1b){try{if(this[_0x4f49('0x28')](_0x4bdd1b)){logger[_0x4f49('0x23')]('[%s][voiceDialReport][newexten]\x20event:',_0x4bdd1b[_0x4f49('0x17')],util['inspect'](_0x4bdd1b,{'showHidden':![],'depth':null}));if(_0x4bdd1b[_0x4f49('0x70')][_0x4f49('0x71')]()==='set'){_0x4bdd1b[_0x4f49('0x72')]=(_0x4bdd1b[_0x4f49('0x73')]||_0x4bdd1b[_0x4f49('0x72')])[_0x4f49('0x71')]();if(_[_0x4f49('0x74')](_0x4bdd1b[_0x4f49('0x72')],'cdr(')){if(_[_0x4f49('0x14')](this['applications'][_0x4bdd1b[_0x4f49('0x17')]]))this['applications'][_0x4bdd1b[_0x4f49('0x17')]]={};logger['info'](_0x4f49('0x75'),_0x4bdd1b[_0x4f49('0x17')],_0x4bdd1b[_0x4f49('0x70')],_0x4bdd1b[_0x4f49('0x72')]);var _0x47af99=_0x4bdd1b[_0x4f49('0x72')]['split']('=');var _0x5ddfe4=_0x47af99[0x0]['match'](/cdr\((.*)\)/);if(_0x5ddfe4)this[_0x4f49('0xc')][_0x4bdd1b['uniqueid']][_0x5ddfe4[0x1]]=_0x47af99[0x1];}}}}catch(_0x4938a6){logger[_0x4f49('0x25')](_0x4f49('0x76'),_0x4bdd1b[_0x4f49('0x17')],util['inspect'](_0x4938a6,{'showHidden':![],'depth':null}));}};module[_0x4f49('0x77')]=VoiceDialReport;
\ No newline at end of file
+var _0x31f0=['emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','channels','merge','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','info','interface','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]','keys','variable','outboundrouteid','value','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','endtime','diff','starttime','seconds','total','answertime','holdtime','sumBillable','billableseconds','sumDuration','duration','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','applicationdata','startsWith','split','lodash','util','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','outboundChannels','outbound','applications','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','hangup','syncHangup','prototype','isNotNull','isUndefined'];(function(_0x1a8337,_0x5e0736){var _0x4e95e1=function(_0x197d59){while(--_0x197d59){_0x1a8337['push'](_0x1a8337['shift']());}};_0x4e95e1(++_0x5e0736);}(_0x31f0,0xb7));var _0x031f=function(_0x401340,_0x4bac36){_0x401340=_0x401340-0x0;var _0x2a022c=_0x31f0[_0x401340];return _0x2a022c;};'use strict';var _=require(_0x031f('0x0'));var moment=require('moment');var util=require(_0x031f('0x1'));var Redis=require('ioredis');var config=require(_0x031f('0x2'));var logger=require(_0x031f('0x3'))(_0x031f('0x4'));var ami=require(_0x031f('0x5'));config['redis']=_[_0x031f('0x6')](config[_0x031f('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceDialReport(_0x3dc98e){this['channels']=_0x3dc98e[_0x031f('0x8')];this[_0x031f('0x9')]=_0x3dc98e[_0x031f('0x9')];this[_0x031f('0xa')]={};this['variables']={};ami['on'](_0x031f('0xb'),this[_0x031f('0xc')][_0x031f('0xd')](this));ami['on'](_0x031f('0xe'),this[_0x031f('0xf')][_0x031f('0xd')](this));ami['on'](_0x031f('0x10'),this[_0x031f('0x11')]['bind'](this));ami['on'](_0x031f('0x12'),this[_0x031f('0x13')][_0x031f('0xd')](this));}VoiceDialReport[_0x031f('0x14')][_0x031f('0x15')]=function(_0x405896){return _0x405896!==null&&!_[_0x031f('0x16')](_0x405896);};VoiceDialReport['prototype'][_0x031f('0x17')]=function(_0x23b40c,_0x17a699,_0x2e3dfe){io['to'](_0x23b40c)[_0x031f('0x17')](_0x17a699,_0x2e3dfe);};VoiceDialReport['prototype']['syncDialBegin']=function(_0x1f08db){try{if(this[_0x031f('0x15')](_0x1f08db)){logger[_0x031f('0x18')](_0x031f('0x19'),_0x1f08db['uniqueid'],util[_0x031f('0x1a')](_0x1f08db,{'showHidden':![],'depth':null}));if(this[_0x031f('0x1b')][_0x1f08db['uniqueid']]){_[_0x031f('0x1c')](this['channels'][_0x1f08db[_0x031f('0x1d')]],{'starttime':moment()[_0x031f('0x1e')](_0x031f('0x1f')),'lastevent':_0x031f('0x20'),'interface':_0x1f08db[_0x031f('0x21')][_0x031f('0x22')](0x0,_0x1f08db[_0x031f('0x21')][_0x031f('0x23')]('-')),'membername':_0x1f08db[_0x031f('0x21')][_0x031f('0x22')](_0x1f08db[_0x031f('0x21')]['lastIndexOf']('/')+0x1,_0x1f08db[_0x031f('0x21')][_0x031f('0x23')]('-'))},_[_0x031f('0x24')](_0x1f08db,['event','privilege']));logger[_0x031f('0x25')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x1f08db[_0x031f('0x1d')],this['channels'][_0x1f08db['uniqueid']]['membername'],this[_0x031f('0x1b')][_0x1f08db[_0x031f('0x1d')]][_0x031f('0x26')]);logger[_0x031f('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x1f08db[_0x031f('0x1d')],util['inspect'](this[_0x031f('0x1b')][_0x1f08db[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));if(this[_0x031f('0xa')][_0x1f08db['uniqueid']])_[_0x031f('0x1c')](this[_0x031f('0x1b')][_0x1f08db['uniqueid']],this[_0x031f('0xa')][_0x1f08db[_0x031f('0x1d')]]);this[_0x031f('0x17')]('voice:outbound',_0x031f('0x27'),this[_0x031f('0x1b')][_0x1f08db[_0x031f('0x1d')]]);logger[_0x031f('0x18')](_0x031f('0x28'),_0x1f08db[_0x031f('0x1d')],util['inspect'](this[_0x031f('0x1b')][_0x1f08db[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));ami[_0x031f('0x17')](_0x031f('0x29'),this[_0x031f('0x1b')][_0x1f08db[_0x031f('0x1d')]]);}}}catch(_0x378692){logger[_0x031f('0x2a')](_0x031f('0x2b'),_0x1f08db[_0x031f('0x1d')],util[_0x031f('0x1a')](_0x378692,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x031f('0xf')]=function(_0xe5f11c){try{if(this[_0x031f('0x15')](_0xe5f11c)){logger[_0x031f('0x18')](_0x031f('0x2c'),_0xe5f11c[_0x031f('0x1d')],util[_0x031f('0x1a')](_0xe5f11c,{'showHidden':![],'depth':null}));if(this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]]){this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]][_0x031f('0x2d')]=_0xe5f11c[_0x031f('0x2d')];if(_0xe5f11c['dialstatus']===_0x031f('0x2e')){this[_0x031f('0x1b')][_0xe5f11c['uniqueid']][_0x031f('0x2f')]=_0xe5f11c[_0x031f('0x2f')];this['channels'][_0xe5f11c[_0x031f('0x1d')]][_0x031f('0x30')]=_0xe5f11c[_0x031f('0x30')];this[_0x031f('0x1b')][_0xe5f11c['uniqueid']]['answertime']=moment()[_0x031f('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]][_0x031f('0x31')]='connect';logger['info'](_0x031f('0x32'),_0xe5f11c['uniqueid'],_0xe5f11c['channel'][_0x031f('0x22')](_0xe5f11c[_0x031f('0x21')][_0x031f('0x23')]('/')+0x1,_0xe5f11c[_0x031f('0x21')][_0x031f('0x23')]('-')));logger[_0x031f('0x18')](_0x031f('0x33'),_0xe5f11c['uniqueid'],util[_0x031f('0x1a')](this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));ami[_0x031f('0x17')]('custom:dialconnect',this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]]);}logger[_0x031f('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0xe5f11c[_0x031f('0x1d')],util[_0x031f('0x1a')](this['channels'][_0xe5f11c[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));this[_0x031f('0x17')]('voice:outbound','voice_outbound_channel:save',this[_0x031f('0x1b')][_0xe5f11c[_0x031f('0x1d')]]);}}}catch(_0x9efbc4){logger[_0x031f('0x2a')](_0x031f('0x34'),_0xe5f11c[_0x031f('0x1d')],util[_0x031f('0x1a')](_0x9efbc4,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x031f('0x11')]=function(_0xe71615){try{if(this['isNotNull'](_0xe71615)){logger[_0x031f('0x18')]('[%s][voiceDialReport][varset]\x20event:',_0xe71615[_0x031f('0x1d')],util[_0x031f('0x1a')](_0xe71615,{'showHidden':![],'depth':null}));this['addVariable'](_0xe71615[_0x031f('0x1d')],_[_0x031f('0x35')](_0xe71615[_0x031f('0x36')])[0x0],_0xe71615['value']);if(this[_0x031f('0x15')](_0xe71615[_0x031f('0x36')])&&this[_0x031f('0x15')](_0xe71615[_0x031f('0x36')][_0x031f('0x37')])){if(_[_0x031f('0x16')](this[_0x031f('0x1b')][_0xe71615[_0x031f('0x1d')]])){this[_0x031f('0x1b')][_0xe71615['uniqueid']]={'routeId':_0xe71615[_0x031f('0x38')],'variables':this[_0x031f('0x39')][_0xe71615[_0x031f('0x1d')]],'motionChannel':_0x031f('0x3a')};logger[_0x031f('0x25')](_0x031f('0x3b'),_0xe71615[_0x031f('0x1d')],_0xe71615[_0x031f('0x36')][_0x031f('0x37')],_['keys'](_0xe71615[_0x031f('0x36')])[0x0],_0xe71615['value']);logger['debug'](_0x031f('0x3c'),_0xe71615[_0x031f('0x1d')],util[_0x031f('0x1a')](this[_0x031f('0x1b')][_0xe71615[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));this['emit'](_0x031f('0x3d'),_0x031f('0x27'),this[_0x031f('0x1b')][_0xe71615['uniqueid']]);}}}}catch(_0x274166){logger[_0x031f('0x2a')](_0x031f('0x3e'),_0xe71615[_0x031f('0x1d')],util[_0x031f('0x1a')](_0x274166,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x031f('0x14')]['addVariable']=function(_0x569d8f,_0xd28ade,_0x579b17){var _0x3b8c04=[_0x031f('0x3f'),'rtpaudioqosbridged',_0x031f('0x40'),'rtpaudioqosjitterbridged','rtpaudioqosloss',_0x031f('0x41'),'rtpaudioqosrtt',_0x031f('0x42'),'sipcallid',_0x031f('0x43'),_0x031f('0x44'),'bridgepvtcallid',_0x031f('0x45'),_0x031f('0x46'),'memberinterface',_0x031f('0x47'),'membername',_0x031f('0x48'),'memberrealtime'];if(!_[_0x031f('0x49')](_0xd28ade)&&!_[_0x031f('0x4a')](_0x3b8c04,_0xd28ade)){if(_[_0x031f('0x16')](this[_0x031f('0x39')][_0x569d8f])){this[_0x031f('0x39')][_0x569d8f]={};}this['variables'][_0x569d8f][_0xd28ade]=_0x579b17;}};VoiceDialReport[_0x031f('0x14')]['syncHangup']=function(_0x186957){try{if(this[_0x031f('0x15')](_0x186957)){logger['debug'](_0x031f('0x4b'),_0x186957[_0x031f('0x1d')],util['inspect'](_0x186957,{'showHidden':![],'depth':null}));if(this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]){logger[_0x031f('0x25')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x186957[_0x031f('0x1d')],_0x186957['cause-txt']);this[_0x031f('0x1b')][_0x186957['uniqueid']][_0x031f('0x4c')]=moment()['format'](_0x031f('0x1f'));this[_0x031f('0x1b')][_0x186957['uniqueid']]['duration']=moment(this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]['endtime'])[_0x031f('0x4d')](this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]][_0x031f('0x4e')],_0x031f('0x4f'));this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]][_0x031f('0x31')]='complete';this[_0x031f('0x9')][_0x031f('0x50')]+=0x1;if(this[_0x031f('0x1b')][_0x186957['uniqueid']][_0x031f('0x51')]){this[_0x031f('0x9')]['answered']+=0x1;this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]][_0x031f('0x52')]=moment(this[_0x031f('0x1b')][_0x186957['uniqueid']]['answertime'])['diff'](this['channels'][_0x186957[_0x031f('0x1d')]][_0x031f('0x4e')],'seconds');this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]['billableseconds']=moment(this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]][_0x031f('0x4c')])[_0x031f('0x4d')](this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]][_0x031f('0x51')],_0x031f('0x4f'));this[_0x031f('0x9')]['sumHoldTime']+=this[_0x031f('0x1b')][_0x186957['uniqueid']][_0x031f('0x52')]||0x0;this[_0x031f('0x9')][_0x031f('0x53')]+=this['channels'][_0x186957['uniqueid']][_0x031f('0x54')];}this[_0x031f('0x9')][_0x031f('0x55')]+=this[_0x031f('0x1b')][_0x186957['uniqueid']][_0x031f('0x56')];logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x186957[_0x031f('0x1d')],util['inspect'](this['channels'][_0x186957[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));ami[_0x031f('0x17')](_0x031f('0x57'),this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x186957[_0x031f('0x1d')],util['inspect'](this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));ami['emit'](_0x031f('0x58'),this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]);logger[_0x031f('0x18')](_0x031f('0x59'),_0x186957[_0x031f('0x1d')],util['inspect'](this['channels'][_0x186957[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));this[_0x031f('0x17')](_0x031f('0x3d'),_0x031f('0x5a'),this[_0x031f('0x9')]);logger[_0x031f('0x25')](_0x031f('0x5b'),JSON['stringify'](this['channels'][_0x186957['uniqueid']]));logger['debug'](_0x031f('0x5c'),_0x186957[_0x031f('0x1d')],util[_0x031f('0x1a')](this['channels'][_0x186957[_0x031f('0x1d')]],{'showHidden':![],'depth':null}));this[_0x031f('0x17')]('voice:outbound',_0x031f('0x5d'),this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]]);delete this[_0x031f('0x1b')][_0x186957[_0x031f('0x1d')]];}else if(this[_0x031f('0x1b')][_0x186957[_0x031f('0x5e')]]){this['channels'][_0x186957['linkedid']][_0x031f('0x1d')]=this['channels'][_0x186957[_0x031f('0x5e')]]['destuniqueid'];}if(this[_0x031f('0x39')][_0x186957[_0x031f('0x1d')]]){delete this[_0x031f('0x39')][_0x186957['uniqueid']];}}}catch(_0x46507a){logger['error'](_0x031f('0x5f'),_0x186957[_0x031f('0x1d')],util[_0x031f('0x1a')](_0x46507a,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x031f('0x60')]=function(_0x398e7c){try{if(this[_0x031f('0x15')](_0x398e7c)){logger[_0x031f('0x18')](_0x031f('0x61'),_0x398e7c['uniqueid'],util['inspect'](_0x398e7c,{'showHidden':![],'depth':null}));if(_0x398e7c[_0x031f('0x62')][_0x031f('0x63')]()==='set'){_0x398e7c[_0x031f('0x64')]=(_0x398e7c['appdata']||_0x398e7c[_0x031f('0x64')])[_0x031f('0x63')]();if(_[_0x031f('0x65')](_0x398e7c[_0x031f('0x64')],'cdr(')){if(_[_0x031f('0x16')](this[_0x031f('0xa')][_0x398e7c[_0x031f('0x1d')]]))this['applications'][_0x398e7c[_0x031f('0x1d')]]={};logger[_0x031f('0x25')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x398e7c[_0x031f('0x1d')],_0x398e7c[_0x031f('0x62')],_0x398e7c[_0x031f('0x64')]);var _0x2fb2a8=_0x398e7c[_0x031f('0x64')][_0x031f('0x66')]('=');var _0x3f3582=_0x2fb2a8[0x0]['match'](/cdr\((.*)\)/);if(_0x3f3582)this[_0x031f('0xa')][_0x398e7c[_0x031f('0x1d')]][_0x3f3582[0x1]]=_0x2fb2a8[0x1];}}}}catch(_0x23cc40){logger['error']('[%s][voiceDialReport][newexten]',_0x398e7c[_0x031f('0x1d')],util['inspect'](_0x23cc40,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index e4e97db..c3286fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1409=[']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','voice:queue:%s','voice_queue_presence:remove','emitVoiceQueueSummary','type','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','Trunk','active','Interval','stringify',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','loopQueueShow','queues','catch','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','queue','[voiceQueueReport][queuesummary]\x20event:','countBy','toNumber','loggedIn','loggedin','queuesummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','custom:queuesummarycomplete','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerabandon','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','[%s][voiceQueueReport][agentcomplete]','assigned','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','linkedid','add','seconds','FORWARDTRANSFER','destexten','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','keys','variable','value','queuestatus','CONTINUE','queuecallerexit','TIMEOUT','lastevent','queuecallerexitAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','membername','includes','length','milliseconds','diff','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerabandon','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','transfereeuniqueid','transferexten','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','transfertype','transfertargetuniqueid','origtransfereruniqueid','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfererexten','transferid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','bind','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','isEmpty','originated','waiting','hasOwnProperty','unlockRR','clearZombieChannels','isNil','Action','status','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','error','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','name','voice_queue_channel:save'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x1409,0xa6));var _0x9140=function(_0x5a3d4d,_0xab3078){_0x5a3d4d=_0x5a3d4d-0x0;var _0x3ff058=_0x1409[_0x5a3d4d];return _0x3ff058;};'use strict';var _=require(_0x9140('0x0'));var moment=require(_0x9140('0x1'));var util=require(_0x9140('0x2'));var md5=require(_0x9140('0x3'));var Redis=require(_0x9140('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x9140('0x5'));config[_0x9140('0x6')]=_[_0x9140('0x7')](config[_0x9140('0x6')],{'host':_0x9140('0x8'),'port':0x18eb});var io=require(_0x9140('0x9'))(new Redis(config[_0x9140('0x6')]));var Sequence=function(){};Sequence[_0x9140('0xa')][_0x9140('0xb')]=function(_0x2ab02f){this[_0x9140('0xc')]=this[_0x9140('0xc')]?this[_0x9140('0xc')][_0x9140('0xd')](_0x2ab02f):_0x2ab02f();};function VoiceQueueReport(_0x424e12){this['sequence']=new Sequence();this['queueReports']={};this[_0x9140('0xe')]=_0x424e12[_0x9140('0xe')];this[_0x9140('0xf')]=_0x424e12[_0x9140('0x10')];this['voiceQueues']=_0x424e12[_0x9140('0x11')];this[_0x9140('0x12')]=!![];this[_0x9140('0x13')]=_0x424e12[_0x9140('0x13')];this['variables']={};ami['on']('queuesummary',this['syncQueueSummary']['bind'](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x9140('0x14')](this));ami['on'](_0x9140('0x15'),this[_0x9140('0x16')][_0x9140('0x14')](this));ami['on']('queuecallerabandon',this[_0x9140('0x17')][_0x9140('0x14')](this));ami['on'](_0x9140('0x18'),this[_0x9140('0x19')]['bind'](this));ami['on'](_0x9140('0x1a'),this['syncAgentComplete']['bind'](this));ami['on'](_0x9140('0x1b'),this[_0x9140('0x1c')][_0x9140('0x14')](this));ami['on']('varset',this['syncVarSet'][_0x9140('0x14')](this));ami['on']('hangup',this[_0x9140('0x1d')][_0x9140('0x14')](this));ami['on'](_0x9140('0x1e'),this[_0x9140('0x1f')][_0x9140('0x14')](this));ami['on'](_0x9140('0x20'),this['syncMusicOnHoldStart'][_0x9140('0x14')](this));ami['on'](_0x9140('0x21'),this['syncMusicOnHoldStop'][_0x9140('0x14')](this));ami['on'](_0x9140('0x22'),this[_0x9140('0x23')]['bind'](this));ami['on']('blindtransfer',this[_0x9140('0x24')][_0x9140('0x14')](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x36c22b){if(!_[_0x9140('0x25')](_0x36c22b)){for(var _0x225502 in _0x36c22b){if(_0x36c22b['hasOwnProperty'](_0x225502)){delete _0x36c22b[_0x225502];}}}}function clearCampaigns(_0x1c018b){if(!_['isEmpty'](_0x1c018b)){for(var _0x427380 in _0x1c018b){if(_0x1c018b['hasOwnProperty'](_0x427380)){_0x1c018b[_0x427380][_0x9140('0x26')]=0x0;}}}}function clearVoiceQueues(_0x1bb16b){if(!_['isEmpty'](_0x1bb16b)){for(var _0x3facfe in _0x1bb16b){if(_0x1bb16b['hasOwnProperty'](_0x3facfe)){_0x1bb16b[_0x3facfe][_0x9140('0x26')]=0x0;_0x1bb16b[_0x3facfe]['talking']=0x0;_0x1bb16b[_0x3facfe]['pTalking']=0x0;_0x1bb16b[_0x3facfe][_0x9140('0x27')]=0x0;_0x1bb16b[_0x3facfe]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x3df5e2){if(!_[_0x9140('0x25')](_0x3df5e2)){for(var _0x32b4d in _0x3df5e2){if(_0x3df5e2[_0x9140('0x28')](_0x32b4d)){_0x3df5e2[_0x32b4d][_0x9140('0x29')]=!![];}}}}VoiceQueueReport[_0x9140('0xa')][_0x9140('0x2a')]=function(){var _0x30b3ec=this;for(var _0x26c2f1 in this[_0x9140('0xf')]){if(this['channels']['hasOwnProperty'](_0x26c2f1)&&!this[_0x9140('0xf')][_0x26c2f1]['switch']){this['sequence']['enqueue'](function(){if(!_[_0x9140('0x2b')](_0x30b3ec['channels'][_0x26c2f1])){return ami[_0x9140('0x2c')]({'action':_0x9140('0x2d'),'channel':_0x30b3ec[_0x9140('0xf')][_0x26c2f1]['channel']})['catch'](function(_0x89106){if(_0x89106[_0x9140('0x2e')]===_0x9140('0x2f')){setTimeout(function(){if(_0x30b3ec[_0x9140('0xf')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0xf')][_0x26c2f1];logger['error'](_0x9140('0x30'),_0x26c2f1,util[_0x9140('0x31')](_0x89106,{'showHidden':![],'depth':null}));}if(_0x30b3ec[_0x9140('0x32')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0x32')][_0x26c2f1];logger[_0x9140('0x33')](_0x9140('0x34'),_0x26c2f1,util[_0x9140('0x31')](_0x89106,{'showHidden':![],'depth':null}));}if(_0x30b3ec[_0x9140('0x35')][_0x26c2f1]){delete _0x30b3ec[_0x9140('0x35')][_0x26c2f1];logger['error'](_0x9140('0x36'),_0x26c2f1,util['inspect'](_0x89106,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x1f')]=function(){logger['error'](_0x9140('0x37'));clearChannels(this[_0x9140('0xf')]);this[_0x9140('0x38')](this[_0x9140('0x32')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x9140('0x11')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x9140('0x38')]=function(_0x269052){var _0xcce16e=this;if(!_[_0x9140('0x25')](_0x269052)){for(var _0x4058c2 in _0x269052){if(_0x269052[_0x9140('0x28')](_0x4058c2)){_0xcce16e[_0x9140('0x39')](_0x269052[_0x4058c2],'clearqueuereport');delete _0x269052[_0x4058c2];}}}};VoiceQueueReport[_0x9140('0xa')]['emit']=function(_0x142319,_0x25003e,_0x46bb0e){io['to'](_0x142319)[_0x9140('0x3a')](_0x25003e,_0x46bb0e);};VoiceQueueReport['prototype'][_0x9140('0x3b')]=function(_0x4da48e,_0x792b20){logger[_0x9140('0x3c')](_0x9140('0x3d')+_0x792b20+_0x9140('0x3e'),_0x4da48e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4da48e,{'showHidden':![],'depth':null}));this['emit'](util[_0x9140('0x40')]('voice:queue:%s',_0x4da48e[_0x9140('0x41')]),_0x9140('0x42'),_0x4da48e);io[_0x9140('0x3a')]('voice_queue_presence:save',_0x4da48e);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x39')]=function(_0x360bb1,_0x228129){logger[_0x9140('0x3c')]('[%s][voiceQueueReport]['+_0x228129+_0x9140('0x43'),_0x360bb1[_0x9140('0x3f')],util[_0x9140('0x31')](_0x360bb1,{'showHidden':![],'depth':null}));if(_0x360bb1['queuecallerexitreason']===_0x9140('0x44'))return;this[_0x9140('0x3a')](util[_0x9140('0x40')](_0x9140('0x45'),_0x360bb1[_0x9140('0x41')]),'voice_queue_channel:remove',_0x360bb1);io[_0x9140('0x3a')](_0x9140('0x46'),_0x360bb1);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x47')]=function(_0x213b4c,_0x4e3ac9){if(_0x213b4c[_0x9140('0x48')]==='inbound'){var _0x50d01c={'id':_0x213b4c['id'],'name':_0x213b4c['name'],'strategy':_0x213b4c['strategy'],'answered':_0x213b4c[_0x9140('0x49')],'available':_0x213b4c[_0x9140('0x4a')],'loggedIn':_0x213b4c['loggedIn'],'pTalking':_0x213b4c[_0x9140('0x4b')],'sumBillable':_0x213b4c[_0x9140('0x4c')],'sumDuration':_0x213b4c[_0x9140('0x4d')],'sumHoldTime':_0x213b4c[_0x9140('0x4e')]||0x0,'talking':_0x213b4c[_0x9140('0x4f')],'total':_0x213b4c[_0x9140('0x50')],'type':_0x213b4c[_0x9140('0x48')],'unmanaged':_0x213b4c[_0x9140('0x51')],'abandoned':_0x213b4c[_0x9140('0x52')],'waiting':_0x213b4c[_0x9140('0x27')]};if(_0x213b4c['Trunk']){_0x50d01c[_0x9140('0x53')]={'id':_0x213b4c['Trunk']['id'],'name':_0x213b4c[_0x9140('0x53')][_0x9140('0x41')],'active':_0x213b4c[_0x9140('0x53')][_0x9140('0x54')],'callerid':_0x213b4c[_0x9140('0x53')]['callerid']};}if(_0x213b4c[_0x9140('0x55')]){_0x50d01c[_0x9140('0x55')]={'id':_0x213b4c[_0x9140('0x55')]['id'],'name':_0x213b4c[_0x9140('0x55')]['name']};}var _0x25bb10=md5(JSON[_0x9140('0x56')](_0x50d01c));if(_0x213b4c[_0x9140('0x3')]!==_0x25bb10){_0x213b4c['md5']=_0x25bb10;logger[_0x9140('0x3c')]('[voiceQueueReport]['+_0x4e3ac9+_0x9140('0x57'),util[_0x9140('0x31')](_0x50d01c,{'showHidden':![],'depth':null}));this[_0x9140('0x3a')](util[_0x9140('0x40')](_0x9140('0x45'),_0x50d01c[_0x9140('0x41')]),_0x9140('0x58'),_0x50d01c);}}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x59')]=function(_0x1f41f8){return _0x1f41f8!==null&&!_[_0x9140('0x5a')](_0x1f41f8);};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x5b')]=function(){var _0x89ef87=this;setInterval(function(){_0x89ef87[_0x9140('0x2a')]();ami[_0x9140('0x2c')]({'action':_0x9140('0x5c')})[_0x9140('0x5d')](function(_0x4f5cf6){logger[_0x9140('0x33')](_0x9140('0x5e'),util[_0x9140('0x31')](_0x4f5cf6,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x9140('0xa')]['loopQueueSummary']=function(){var _0xb09f2c=this;setInterval(function(){if(_0xb09f2c[_0x9140('0x12')]){return ami[_0x9140('0x2c')]({'action':'queuesummary'})[_0x9140('0x5f')](function(){_0xb09f2c[_0x9140('0x12')]=![];})[_0x9140('0x5d')](function(_0x5cb509){logger[_0x9140('0x33')](_0x9140('0x60'),util[_0x9140('0x31')](_0x5cb509,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x9140('0xa')]['syncQueueSummary']=function(_0x3c7f46){try{if(this[_0x9140('0x59')](_0x3c7f46)&&this[_0x9140('0x59')](_0x3c7f46[_0x9140('0x61')])){logger[_0x9140('0x3c')](_0x9140('0x62'),util['inspect'](_0x3c7f46,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x3c7f46[_0x9140('0x61')]);var _0x30230c=_[_0x9140('0x63')](this[_0x9140('0xf')],_0x9140('0x61'))[_0x3c7f46[_0x9140('0x61')]]||0x0;var _0x42ffa1=_0x30230c-_0x3c7f46['callers'];if(this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x27')]!==_[_0x9140('0x64')](_0x3c7f46['callers'])||this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x65')]!==_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')])||this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]]['available']!==_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x4a')])||this[_0x9140('0x11')][_0x3c7f46['queue']][_0x9140('0x4f')]!==_0x42ffa1){this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x27')]=_[_0x9140('0x64')](_0x3c7f46['callers']);this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x65')]=_['toNumber'](_0x3c7f46['loggedin']);this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4a')]=_[_0x9140('0x64')](_0x3c7f46['available']);this[_0x9140('0x11')][_0x3c7f46['queue']][_0x9140('0x4f')]=_0x42ffa1>0x0?_0x42ffa1:0x0;this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')]=this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')]>_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')])?_[_0x9140('0x64')](_0x3c7f46[_0x9140('0x66')]):this[_0x9140('0x11')][_0x3c7f46[_0x9140('0x61')]][_0x9140('0x4f')];this['emitVoiceQueueSummary'](this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]],_0x9140('0x67'));}logger[_0x9140('0x3c')](_0x9140('0x68'),util[_0x9140('0x31')](this[_0x9140('0x11')][_0x3c7f46['queue']],{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')]('custom:queuesummary',this['voiceQueues'][_0x3c7f46[_0x9140('0x61')]]);}}}catch(_0x1eac17){logger[_0x9140('0x33')](_0x9140('0x60'),util[_0x9140('0x31')](_0x1eac17,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x69')]=function(_0x302bf5){logger[_0x9140('0x3c')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x9140('0x31')](_0x302bf5,{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')](_0x9140('0x6a'),{});this[_0x9140('0x12')]=!![];};VoiceQueueReport['prototype'][_0x9140('0x16')]=function(_0x2355d9){try{if(this[_0x9140('0x59')](_0x2355d9)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][queuecallerjoin]',_0x2355d9[_0x9140('0x3f')],util[_0x9140('0x31')](_0x2355d9,{'showHidden':![],'depth':null}));if(_[_0x9140('0x5a')](this[_0x9140('0x32')][_0x2355d9[_0x9140('0x3f')]]))this['queueReports'][_0x2355d9['uniqueid']]=[];if(_[_0x9140('0x5a')](this[_0x9140('0xf')][_0x2355d9[_0x9140('0x3f')]]))this['channels'][_0x2355d9[_0x9140('0x3f')]]={};var _0x4d67b0=new QueueReport();_0x4d67b0[_0x9140('0x41')]=_0x2355d9['queue'];_0x4d67b0[_0x9140('0x48')]=this['voiceQueues'][_0x4d67b0[_0x9140('0x41')]]&&this['voiceQueues'][_0x4d67b0['name']][_0x9140('0x48')]?this['voiceQueues'][_0x4d67b0[_0x9140('0x41')]]['type']||_0x9140('0x6b'):_0x9140('0x6b');_0x4d67b0[_0x9140('0x61')]=_0x2355d9[_0x9140('0x61')];_0x4d67b0[_0x9140('0x6c')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));_0x4d67b0[_0x9140('0x6e')]=_0x2355d9[_0x9140('0x6e')];_0x4d67b0[_0x9140('0x6f')]=_0x2355d9[_0x9140('0x6f')];_0x4d67b0[_0x9140('0x3f')]=_0x2355d9[_0x9140('0x3f')];_0x4d67b0['routealias']=this[_0x9140('0xf')][_0x2355d9[_0x9140('0x3f')]]['routealias'];logger[_0x9140('0x70')](_0x9140('0x71'),_0x4d67b0['name'],_0x4d67b0[_0x9140('0x48')]);_['merge'](_0x4d67b0,_[_0x9140('0x72')](_0x2355d9,_['keys'](_0x4d67b0)));this[_0x9140('0x32')][_0x2355d9[_0x9140('0x3f')]][_0x9140('0x73')](_0x4d67b0);this[_0x9140('0xf')][_0x2355d9['uniqueid']]=_0x4d67b0;this[_0x9140('0x3b')](_0x4d67b0,_0x9140('0x15'));}}catch(_0x165b4e){logger['error'](_0x9140('0x74'),_0x2355d9[_0x9140('0x3f')],util['inspect'](_0x165b4e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x17')]=function(_0x33952f){try{if(this[_0x9140('0x59')](_0x33952f)){logger['debug'](_0x9140('0x75'),_0x33952f['uniqueid'],util[_0x9140('0x31')](_0x33952f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x33952f[_0x9140('0x3f')]]){var _0x297b54=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x33952f['uniqueid']]);_0x297b54[_0x9140('0x77')]=![];_0x297b54[_0x9140('0x78')]=null;_0x297b54[_0x9140('0x79')]=_0x33952f[_0x9140('0x79')];_0x297b54[_0x9140('0x7a')]=_0x33952f[_0x9140('0x7a')];_0x297b54['queuecallerabandon']=!![];_0x297b54[_0x9140('0x7b')]=moment()['format'](_0x9140('0x6d'));_0x297b54[_0x9140('0x7c')]='ABANDONED';_0x297b54['lastAssignedTo']=null;logger[_0x9140('0x70')](_0x9140('0x7d'),_0x297b54[_0x9140('0x41')],_0x297b54['type']);this[_0x9140('0xf')][_0x33952f[_0x9140('0x3f')]]=_0x297b54;this['emitVoiceQueueChannelRemove'](_0x297b54,_0x9140('0x7e'));}}}catch(_0x4f543f){logger[_0x9140('0x33')](_0x9140('0x75'),_0x33952f[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4f543f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x19')]=function(_0x1d1f8a){try{if(this['isNotNull'](_0x1d1f8a)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][queuecallerleave]',_0x1d1f8a[_0x9140('0x3f')],util[_0x9140('0x31')](_0x1d1f8a,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x1d1f8a[_0x9140('0x3f')]]){var _0x51c607=_[_0x9140('0x76')](this['queueReports'][_0x1d1f8a[_0x9140('0x3f')]]);_0x51c607[_0x9140('0x7f')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x51c607[_0x9140('0x80')]=_0x1d1f8a[_0x9140('0x80')];_0x51c607[_0x9140('0x81')]=_0x1d1f8a[_0x9140('0x81')];logger['info'](_0x9140('0x82'),_0x51c607[_0x9140('0x41')],_0x51c607['type'],_0x1d1f8a[_0x9140('0x80')],_0x1d1f8a['connectedlinename']);this[_0x9140('0xf')][_0x1d1f8a[_0x9140('0x3f')]]=_0x51c607;this['emitVoiceQueueChannelSave'](_0x51c607,_0x9140('0x18'));}}}catch(_0x1ae9ad){logger[_0x9140('0x33')](_0x9140('0x83'),_0x1d1f8a[_0x9140('0x3f')],util[_0x9140('0x31')](_0x1ae9ad,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x1c')]=function(_0x5482d1){try{if(this[_0x9140('0x59')](_0x5482d1)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][agentconnect]',_0x5482d1[_0x9140('0x3f')],util[_0x9140('0x31')](_0x5482d1,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x5482d1[_0x9140('0x3f')]]){var _0x632168=_['last'](this[_0x9140('0x32')][_0x5482d1[_0x9140('0x3f')]]);_0x632168[_0x9140('0x77')]=!![];_0x632168[_0x9140('0x7c')]=_0x9140('0x84');logger[_0x9140('0x70')](_0x9140('0x85'),_0x632168[_0x9140('0x41')],_0x632168[_0x9140('0x48')]);}}}catch(_0x2c0483){logger[_0x9140('0x33')]('[%s][voiceQueueReport][agentconnect]',_0x5482d1['uniqueid'],util['inspect'](_0x2c0483,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x86')]=function(_0x282014){try{if(this[_0x9140('0x59')](_0x282014)){logger[_0x9140('0x3c')](_0x9140('0x87'),_0x282014[_0x9140('0x3f')],util[_0x9140('0x31')](_0x282014,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]]){var _0x4b996c=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]]);_0x4b996c[_0x9140('0x7e')]=![];_0x4b996c[_0x9140('0x7b')]=null;_0x4b996c[_0x9140('0x88')]=!![];_0x4b996c['lastAssignedTo']=_0x282014['membername'];_0x4b996c[_0x9140('0x79')]=_0x282014['holdtime'];_0x4b996c[_0x9140('0x77')]=!![];_0x4b996c['queuecallerexit']=![];_0x4b996c['queuecallerexitAt']=null;if(!_0x4b996c[_0x9140('0x89')]){if(_0x282014['reason']==_0x9140('0x89')){_0x4b996c['queuecallerexitreason']=_0x9140('0x8a');logger['info'](_0x9140('0x8b'),_0x4b996c[_0x9140('0x41')],_0x4b996c[_0x9140('0x48')]);}else{if(_[_0x9140('0x8c')](_0x282014[_0x9140('0x8d')][_0x9140('0x8e')](),'local/')){if(this[_0x9140('0x32')][_0x282014['linkedid']]){var _0x4e3a81=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x282014[_0x9140('0x8f')]]);_0x4e3a81[_0x9140('0x77')]=![];_0x4e3a81['queuecallerexit']=!![];_0x4e3a81['queuecallerexitAt']=moment(_0x4b996c['queuecallerjoinAt'])[_0x9140('0x90')](_0x282014[_0x9140('0x79')],_0x9140('0x91'))[_0x9140('0x40')](_0x9140('0x6d'));_0x4e3a81['queuecallerexitreason']=_0x9140('0x92');_0x4e3a81[_0x9140('0x89')]=!![];_0x4e3a81['transfertype']='FORWARD';_0x4e3a81['transferexten']=_0x282014[_0x9140('0x93')];_0x4e3a81['transferuniqueid']=_0x282014['uniqueid'];logger[_0x9140('0x70')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x4e3a81['name'],_0x4e3a81[_0x9140('0x48')]);var _0x3d3384=this[_0x9140('0x32')][_0x282014[_0x9140('0x8f')]];this[_0x9140('0x32')][_0x282014['linkedid']]=this[_0x9140('0x32')][_0x282014[_0x9140('0x3f')]];this['queueReports'][_0x282014[_0x9140('0x3f')]]=_0x3d3384;}}else{_0x4b996c['queuecallerexitreason']='COMPLETEDBY'+_0x282014[_0x9140('0x94')][_0x9140('0x95')]();logger[_0x9140('0x70')](_0x9140('0x96'),_0x4b996c['name'],_0x4b996c[_0x9140('0x48')],_0x4b996c[_0x9140('0x7c')]);}}}this[_0x9140('0xf')][_0x282014['uniqueid']]=_0x4b996c;this[_0x9140('0x39')](_0x4b996c,'agentcomplete');}}}catch(_0x5c0b13){logger[_0x9140('0x33')](_0x9140('0x87'),_0x282014['uniqueid'],util['inspect'](_0x5c0b13,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x97')]=function(_0x26e800){try{if(this[_0x9140('0x59')](_0x26e800)){logger[_0x9140('0x3c')](_0x9140('0x98'),_0x26e800[_0x9140('0x3f')],util[_0x9140('0x31')](_0x26e800,{'showHidden':![],'depth':null}));this[_0x9140('0x99')](_0x26e800[_0x9140('0x3f')],_[_0x9140('0x9a')](_0x26e800[_0x9140('0x9b')])[0x0],_0x26e800[_0x9140('0x9c')]);if(this['queueReports'][_0x26e800[_0x9140('0x3f')]]){var _0x374035=_['last'](this[_0x9140('0x32')][_0x26e800[_0x9140('0x3f')]]);if(_0x374035){if(this['isNotNull'](_0x26e800[_0x9140('0x9b')])&&this[_0x9140('0x59')](_0x26e800[_0x9140('0x9b')][_0x9140('0x9d')])){switch(_0x26e800[_0x9140('0x9c')]){case _0x9140('0x9e'):_0x374035[_0x9140('0x9f')]=![];_0x374035['queuecallerexitAt']=null;break;case _0x9140('0xa0'):_0x374035[_0x9140('0xa1')]='timeout';_0x374035[_0x9140('0x9f')]=!![];_0x374035[_0x9140('0xa2')]=moment()['format'](_0x9140('0x6d'));_0x374035[_0x9140('0x7f')]=moment()[_0x9140('0x40')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x9140('0x3c')](_0x9140('0xa3'),_0x26e800[_0x9140('0x3f')],util[_0x9140('0x31')](_0x374035,{'showHidden':![],'depth':null}));ami['emit'](_0x9140('0xa4'),_0x374035);break;default:_0x374035[_0x9140('0x9f')]=!![];_0x374035[_0x9140('0xa2')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));_0x374035[_0x9140('0x7f')]=moment()[_0x9140('0x40')](_0x9140('0x6d'));}_0x374035['queuecallerabandon']=![];_0x374035[_0x9140('0x7b')]=null;_0x374035[_0x9140('0x7c')]=_0x26e800[_0x9140('0x9c')];this[_0x9140('0xf')][_0x26e800['uniqueid']]=_0x374035;this[_0x9140('0x39')](_0x374035,_0x9140('0xa5'));}else if(this[_0x9140('0x59')](_0x26e800['variable'])&&this[_0x9140('0x59')](_0x26e800['variable'][_0x9140('0xa6')])){if(!_0x374035['queuecallerabandon']){_0x374035[_0x9140('0x9f')]=!![];_0x374035['queuecallerexitAt']=moment()['format'](_0x9140('0x6d'));_0x374035[_0x9140('0x7c')]=_0x9140('0xa7');_0x374035['queuecallerleaveAt']=moment()[_0x9140('0x40')](_0x9140('0x6d'));this['channels'][_0x26e800['uniqueid']]=_0x374035;}}logger[_0x9140('0x70')](_0x9140('0xa8'),_0x26e800['uniqueid'],_0x374035[_0x9140('0x41')],_0x374035['type'],_[_0x9140('0x9a')](_0x26e800[_0x9140('0x9b')])[0x0],_0x26e800[_0x9140('0x9c')]);_0x374035[_0x9140('0x35')]=this[_0x9140('0x35')][_0x26e800['uniqueid']];}}}}catch(_0x28df32){logger['error']('[%s][voiceQueueReport][varset]',_0x26e800['uniqueid'],util['inspect'](_0x28df32,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x99')]=function(_0x5d41d0,_0x1c2802,_0x587c8e){var _0x32287c=[_0x9140('0xa9'),_0x9140('0xaa'),_0x9140('0xab'),_0x9140('0xac'),'rtpaudioqosloss',_0x9140('0xad'),_0x9140('0xae'),_0x9140('0xaf'),_0x9140('0xb0'),_0x9140('0xb1'),_0x9140('0xb2'),'bridgepvtcallid',_0x9140('0xb3'),_0x9140('0xb4'),'memberinterface',_0x9140('0xb5'),_0x9140('0xb6'),'memberpenalty','memberrealtime'];if(!_['isNil'](_0x1c2802)&&!_[_0x9140('0xb7')](_0x32287c,_0x1c2802)){if(_[_0x9140('0x5a')](this['variables'][_0x5d41d0])){this[_0x9140('0x35')][_0x5d41d0]={};}this[_0x9140('0x35')][_0x5d41d0][_0x1c2802]=_0x587c8e;}};VoiceQueueReport['prototype']['handleHangup']=function(_0x419171,_0x19bd23,_0xfa1aaf){var _0x51d8ec={};for(var _0x391fd7=0x0;_0x391fd7<this[_0x9140('0x32')][_0x419171][_0x9140('0xb8')];_0x391fd7+=0x1){_0x51d8ec=this[_0x9140('0x32')][_0x419171][_0x391fd7];if(this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]){if(_0x51d8ec[_0x9140('0x9f')]&&_0x51d8ec[_0x9140('0x89')]!=!![]){this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x51')]+=0x1;}if(_0x51d8ec[_0x9140('0x7e')]){this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x52')]+=0x1;}this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x4e')]+=moment(_0x51d8ec[_0x9140('0x7f')])['diff'](_0x51d8ec['queuecallerjoinAt'],_0x9140('0x91'))||0x0;if(_0x391fd7===this[_0x9140('0x32')][_0x419171][_0x9140('0xb8')]-0x1){this['voiceQueues'][_0x51d8ec[_0x9140('0x61')]][_0x9140('0x4d')]+=moment()[_0x9140('0xb9')](0x0)[_0x9140('0xba')](_0x51d8ec['queuecallerjoinAt'],_0x9140('0x91'));this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]['total']+=0x1;if(_0x51d8ec['queuecallercomplete']){this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x49')]+=0x1;this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x4c')]+=moment()[_0x9140('0xb9')](0x0)[_0x9140('0xba')](_0x51d8ec[_0x9140('0x7f')],_0x9140('0x91'));_0x51d8ec['queuecallercompleteAt']=moment()['format'](_0x9140('0x6d'));_0x51d8ec[_0x9140('0x9f')]=![];_0x51d8ec[_0x9140('0xa2')]=null;}if(_0x51d8ec[_0x9140('0x9f')]&&_0x51d8ec[_0x9140('0x89')]!=!![]){_0x51d8ec[_0x9140('0xa1')]='unmanaged';logger[_0x9140('0x3c')](_0x9140('0xbb'),_0x419171,util[_0x9140('0x31')](_0x51d8ec,{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')]('custom:queuecallerunmanaged',_0x51d8ec);}if(_0x51d8ec[_0x9140('0x7e')]){_0x51d8ec[_0x9140('0xa1')]=_0x9140('0x52');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x419171,util['inspect'](_0x51d8ec,{'showHidden':![],'depth':null}));ami['emit'](_0x9140('0xbc'),_0x51d8ec);}}else{this[_0x9140('0x11')][_0x51d8ec['queue']][_0x9140('0x4d')]+=this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]]['sumHoldTime'];}logger[_0x9140('0x70')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x419171,_0x51d8ec[_0x9140('0x41')],_0x51d8ec[_0x9140('0x48')],_0x19bd23);if(_0xfa1aaf&&_0x51d8ec['queuecallerexitreason']===_0x9140('0x44')){_0x51d8ec[_0x9140('0x7c')]=_0x9140('0x84');}this[_0x9140('0xf')][_0x419171]=_0x51d8ec;this['emitVoiceQueueChannelRemove'](_0x51d8ec,'hangup');this[_0x9140('0x47')](this[_0x9140('0x11')][_0x51d8ec[_0x9140('0x61')]],_0x9140('0xbd'));}}logger[_0x9140('0x3c')](_0x9140('0xbe'),_0x419171,util[_0x9140('0x31')](this['queueReports'][_0x419171],{'showHidden':![],'depth':null}));ami[_0x9140('0x3a')](_0x9140('0xbf'),this[_0x9140('0x32')][_0x419171]);if(_0x51d8ec[_0x9140('0x7c')]==='ATTENDEDTRANSFER')return;delete this[_0x9140('0x32')][_0x419171];delete this[_0x9140('0xf')][_0x419171];if(this[_0x9140('0x35')][_0x419171]){delete this[_0x9140('0x35')][_0x419171];}};VoiceQueueReport['prototype'][_0x9140('0x1d')]=function(_0xcb989a){try{if(this[_0x9140('0x59')](_0xcb989a)){logger[_0x9140('0x3c')](_0x9140('0xc0'),_0xcb989a[_0x9140('0x3f')],util[_0x9140('0x31')](_0xcb989a,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xcb989a[_0x9140('0x3f')]]){return this[_0x9140('0xc1')](_0xcb989a[_0x9140('0x3f')],_0xcb989a[_0x9140('0xc2')]);}if(this[_0x9140('0x32')][_0xcb989a['linkedid']]){if(_0xcb989a[_0x9140('0xc3')]==='21'){return;}return this[_0x9140('0xc1')](_0xcb989a[_0x9140('0x8f')],_0xcb989a[_0x9140('0xc2')],!![]);}var _0x240154=Object[_0x9140('0x9a')](this[_0x9140('0x32')]);for(var _0x532db7=0x0;_0x532db7<_0x240154[_0x9140('0xb8')];_0x532db7++){var _0x35ddd6=_['last'](this[_0x9140('0x32')][_0x240154[_0x532db7]]);if(_0x35ddd6&&_0x35ddd6['transferid']===_0xcb989a[_0x9140('0x3f')]){return this[_0x9140('0xc1')](_0x35ddd6[_0x9140('0x3f')],_0xcb989a[_0x9140('0xc2')],!![]);}}}}catch(_0x5ea0f2){logger['error'](_0x9140('0xc0'),_0xcb989a[_0x9140('0x3f')],util['inspect'](_0x5ea0f2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0x23')]=function(_0x17e48b){try{if(this[_0x9140('0x59')](_0x17e48b)){logger[_0x9140('0x3c')]('[%s][voiceQueueReport][attendedtransfer]',_0x17e48b[_0x9140('0x3f')],util['inspect'](_0x17e48b,{'showHidden':![],'depth':null}));var _0x31e343;var _0x5bc4f4;var _0x42569a;if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc4')]]){_0x31e343=_['last'](this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xc6')];_0x31e343[_0x9140('0xc7')]=_0x17e48b[_0x9140('0xc8')];_0x31e343[_0x9140('0x7c')]='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343[_0x9140('0xc9')]='ATTENDED';if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]]){_0x42569a=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]];this['queueReports'][_0x17e48b[_0x9140('0xc8')]]=this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc4')]]=_0x42569a;_0x5bc4f4=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b['transfereeuniqueid']]);_0x5bc4f4['switch']=!![];}logger[_0x9140('0x70')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x17e48b[_0x9140('0x3f')],_0x31e343[_0x9140('0x41')],_0x31e343[_0x9140('0x48')],_0x31e343[_0x9140('0xc5')],_0x31e343[_0x9140('0xc7')]);}else if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]){_0x31e343=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]);_0x31e343['transferexten']=_0x17e48b['origtransfererexten'];_0x31e343['transferuniqueid']=_0x17e48b[_0x9140('0xcb')];_0x31e343['queuecallerexitreason']='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343['transfertype']=_0x9140('0xcc');if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]){_0x42569a=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]=this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]];this[_0x9140('0x32')][_0x17e48b[_0x9140('0xca')]]=_0x42569a;_0x5bc4f4=_['last'](this['queueReports'][_0x17e48b[_0x9140('0xca')]]);_0x5bc4f4[_0x9140('0xcd')]=!![];}logger[_0x9140('0x70')](_0x9140('0xce'),_0x17e48b['uniqueid'],_0x31e343['name'],_0x31e343[_0x9140('0x48')],_0x31e343[_0x9140('0xc5')],_0x31e343[_0x9140('0xc7')]);}else if(this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]){_0x31e343=_['last'](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xcb')]]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xcf')];_0x31e343[_0x9140('0xc7')]=_0x17e48b[_0x9140('0xcb')];_0x31e343[_0x9140('0x7c')]=_0x9140('0x44');_0x31e343[_0x9140('0x89')]=!![];_0x31e343[_0x9140('0xc9')]=_0x9140('0xcc');_0x31e343['switch']=!![];_0x31e343[_0x9140('0xd0')]=_0x17e48b['transfereeuniqueid'];}else if(this[_0x9140('0x32')][_0x17e48b['secondtransfereruniqueid']]){_0x31e343=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x17e48b[_0x9140('0xc8')]]);_0x31e343[_0x9140('0xc5')]=_0x17e48b[_0x9140('0xc6')];_0x31e343['transferuniqueid']=_0x17e48b[_0x9140('0xc8')];_0x31e343[_0x9140('0x7c')]='ATTENDEDTRANSFER';_0x31e343[_0x9140('0x89')]=!![];_0x31e343['transfertype']=_0x9140('0xcc');_0x31e343['switch']=!![];_0x31e343[_0x9140('0xd0')]=_0x17e48b[_0x9140('0xca')];}}}catch(_0x13d668){logger[_0x9140('0x33')]('[%s][voiceQueueReport][attendedtransfer]',_0x17e48b[_0x9140('0x3f')],util[_0x9140('0x31')](_0x13d668,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x23fac6){try{if(this[_0x9140('0x59')](_0x23fac6)){logger[_0x9140('0x3c')](_0x9140('0xd1'),_0x23fac6[_0x9140('0x3f')],util[_0x9140('0x31')](_0x23fac6,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x23fac6['transfereeuniqueid']]){var _0x1bbd90=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x23fac6['transfereeuniqueid']]);_0x1bbd90[_0x9140('0x7c')]=_0x9140('0xd2');_0x1bbd90[_0x9140('0x89')]=!![];_0x1bbd90['transfertype']=_0x9140('0xd3');_0x1bbd90[_0x9140('0xc5')]=_0x23fac6['extension'];_0x1bbd90[_0x9140('0xc7')]=_0x23fac6['transfereeuniqueid'];logger['info'](_0x9140('0xd4'),_0x23fac6[_0x9140('0x3f')],_0x1bbd90['name'],_0x1bbd90[_0x9140('0x48')],_0x1bbd90[_0x9140('0xc5')],_0x1bbd90['transferuniqueid']);this[_0x9140('0x1d')]({'event':_0x9140('0xd5'),'uniqueid':_0x23fac6['transfereeuniqueid'],'context':_0x23fac6[_0x9140('0xd6')],'channel':_0x23fac6['transfererchannel']});}}}catch(_0x482ed2){logger[_0x9140('0x33')](_0x9140('0xd1'),_0x23fac6[_0x9140('0x3f')],util['inspect'](_0x482ed2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')]['syncMusicOnHoldStart']=function(_0x5649ce){try{if(this[_0x9140('0x59')](_0x5649ce)){logger[_0x9140('0x3c')](_0x9140('0xd7'),_0x5649ce[_0x9140('0x3f')],util[_0x9140('0x31')](_0x5649ce,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x5649ce['uniqueid']]){var _0x4ca174=_[_0x9140('0x76')](this[_0x9140('0x32')][_0x5649ce[_0x9140('0x3f')]]);if(!_['isNil'](_0x4ca174['queuecallerleaveAt'])){_0x4ca174[_0x9140('0xd8')]=moment()['format'](_0x9140('0x6d'));logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x5649ce['uniqueid'],_0x4ca174[_0x9140('0xd8')]);}}}}catch(_0x2ddad5){logger[_0x9140('0x33')](_0x9140('0xd7'),_0x5649ce[_0x9140('0x3f')],util[_0x9140('0x31')](_0x2ddad5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')][_0x9140('0xd9')]=function(_0x53812e){try{if(this[_0x9140('0x59')](_0x53812e)){logger[_0x9140('0x3c')](_0x9140('0xda'),_0x53812e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x53812e,{'showHidden':![],'depth':null}));if(this[_0x9140('0x32')][_0x53812e[_0x9140('0x3f')]]){var _0x29083f=_['last'](this[_0x9140('0x32')][_0x53812e[_0x9140('0x3f')]]);if(!_[_0x9140('0x2b')](_0x29083f['mohstarttime'])){_0x29083f['mohtime']+=moment()['milliseconds'](0x0)[_0x9140('0xba')](_0x29083f[_0x9140('0xd8')],'seconds');logger[_0x9140('0x70')](_0x9140('0xdb'),_0x53812e[_0x9140('0x3f')],_0x29083f[_0x9140('0xdc')]);delete _0x29083f[_0x9140('0xd8')];}}}}catch(_0x4fdbaa){logger[_0x9140('0x33')](_0x9140('0xda'),_0x53812e[_0x9140('0x3f')],util[_0x9140('0x31')](_0x4fdbaa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9140('0xa')]['syncNewExten']=function(_0x204064){try{if(this[_0x9140('0x59')](_0x204064)){logger[_0x9140('0x3c')](_0x9140('0xdd'),_0x204064[_0x9140('0x3f')],util['inspect'](_0x204064,{'showHidden':![],'depth':null}));if(_0x204064[_0x9140('0xde')]['toLowerCase']()===_0x9140('0xdf')){_0x204064[_0x9140('0xe0')]=_0x204064[_0x9140('0xe1')]&&_0x204064[_0x9140('0xe1')][_0x9140('0x8c')](_0x9140('0xe2'))?_0x204064[_0x9140('0xe1')]:(_0x204064[_0x9140('0xe1')]||_0x204064['applicationdata'])['toLowerCase']();if(_[_0x9140('0x8c')](_0x204064[_0x9140('0xe0')][_0x9140('0x8e')](),_0x9140('0xe3'))){logger[_0x9140('0x70')](_0x9140('0xe4'),_0x204064[_0x9140('0x3f')],_0x204064['application'],_0x204064[_0x9140('0xe0')]);if(_[_0x9140('0x5a')](this[_0x9140('0xf')][_0x204064['uniqueid']]))this[_0x9140('0xf')][_0x204064[_0x9140('0x3f')]]={};var _0xb5aa61=_0x204064['applicationdata'][_0x9140('0xe5')]('=');var _0x3d3142=_0xb5aa61[0x0]['toLowerCase']()[_0x9140('0xe6')](/cdr\((.*)\)/);if(_0x3d3142)this[_0x9140('0xf')][_0x204064['uniqueid']][_0x3d3142[0x1]]=_0xb5aa61[0x1];}}}}catch(_0x2952f3){logger[_0x9140('0x33')](_0x9140('0xe7'),_0x204064['uniqueid'],util[_0x9140('0x31')](_0x2952f3,{'showHidden':![],'depth':null}));}};module[_0x9140('0xe8')]=VoiceQueueReport;
\ No newline at end of file
+var _0xfb00=['musiconholdstop','syncAttendedTransfer','blindtransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','waiting','unlockRR','prototype','clearZombieChannels','switch','isNil','status','channel','catch','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','error','[%s][voiceQueueReport][checkQueueReport]','variables','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emit','debug','[%s][voiceQueueReport][','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_presence:remove','emitVoiceQueueSummary','type','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','abandoned','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','Action','queuesummary','then','syncQueueSummary','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','position','count','routealias','merge','keys','push','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerleaveAt','connectedlinenum','connectedlinename','[%s][voiceQueueReport][queuecallerleave]','queuecallercomplete','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','lastAssignedTo','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','toLowerCase','local/','linkedid','queuecallerexit','FORWARDTRANSFER','transfertype','FORWARD','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','variable','value','queuestatus','CONTINUE','timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','handleHangup','unmanaged','diff','queuecallerjoinAt','seconds','length','sumDuration','milliseconds','total','queuecallercompleteAt','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncHangup','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','transferexten','transfertargetuniqueid','origtransfereruniqueid','origtransfererexten','secondtransfererexten','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','startsWith','CDR(routeAlias)','cdr(','application','split','[%s][voiceQueueReport][newexten]','lodash','moment','util','md5','../../../config/environment','../../../config/logger','../model/queueReport','redis','defaults','socket.io-emitter','enqueue','tail','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','syncVarSet','musiconholdstart','syncMusicOnHoldStart'];(function(_0x1895ce,_0x81e9b2){var _0x4c3c7f=function(_0x2e4d0b){while(--_0x2e4d0b){_0x1895ce['push'](_0x1895ce['shift']());}};_0x4c3c7f(++_0x81e9b2);}(_0xfb00,0xca));var _0x0fb0=function(_0x216453,_0x96dcb9){_0x216453=_0x216453-0x0;var _0x2adcdf=_0xfb00[_0x216453];return _0x2adcdf;};'use strict';var _=require(_0x0fb0('0x0'));var moment=require(_0x0fb0('0x1'));var util=require(_0x0fb0('0x2'));var md5=require(_0x0fb0('0x3'));var Redis=require('ioredis');var config=require(_0x0fb0('0x4'));var logger=require(_0x0fb0('0x5'))('ami');var ami=require('../ami');var QueueReport=require(_0x0fb0('0x6'));config[_0x0fb0('0x7')]=_[_0x0fb0('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x0fb0('0x9'))(new Redis(config[_0x0fb0('0x7')]));var Sequence=function(){};Sequence['prototype'][_0x0fb0('0xa')]=function(_0x442072){this[_0x0fb0('0xb')]=this[_0x0fb0('0xb')]?this[_0x0fb0('0xb')]['finally'](_0x442072):_0x442072();};function VoiceQueueReport(_0x21f5d8){this[_0x0fb0('0xc')]=new Sequence();this['queueReports']={};this[_0x0fb0('0xd')]=_0x21f5d8[_0x0fb0('0xd')];this[_0x0fb0('0xe')]=_0x21f5d8[_0x0fb0('0xf')];this[_0x0fb0('0x10')]=_0x21f5d8[_0x0fb0('0x10')];this[_0x0fb0('0x11')]=!![];this[_0x0fb0('0x12')]=_0x21f5d8['campaigns'];this['variables']={};ami['on']('queuesummary',this['syncQueueSummary'][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x14'),this[_0x0fb0('0x15')]['bind'](this));ami['on'](_0x0fb0('0x16'),this[_0x0fb0('0x17')]['bind'](this));ami['on']('queuecallerabandon',this[_0x0fb0('0x18')][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x19'),this[_0x0fb0('0x1a')][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x1b'),this[_0x0fb0('0x1c')][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x1d'),this['syncAgentConnect'][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x1e'),this[_0x0fb0('0x1f')][_0x0fb0('0x13')](this));ami['on']('hangup',this['syncHangup'][_0x0fb0('0x13')](this));ami['on']('fullybooted',this['syncFullyBooted'][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x20'),this[_0x0fb0('0x21')][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x22'),this['syncMusicOnHoldStop'][_0x0fb0('0x13')](this));ami['on']('attendedtransfer',this[_0x0fb0('0x23')][_0x0fb0('0x13')](this));ami['on'](_0x0fb0('0x24'),this['syncBlindTransfer']['bind'](this));this[_0x0fb0('0x25')]();this[_0x0fb0('0x26')]();}function clearChannels(_0x313ee2){if(!_[_0x0fb0('0x27')](_0x313ee2)){for(var _0x3f8f88 in _0x313ee2){if(_0x313ee2[_0x0fb0('0x28')](_0x3f8f88)){delete _0x313ee2[_0x3f8f88];}}}}function clearCampaigns(_0x50d1c2){if(!_[_0x0fb0('0x27')](_0x50d1c2)){for(var _0x35bb9c in _0x50d1c2){if(_0x50d1c2[_0x0fb0('0x28')](_0x35bb9c)){_0x50d1c2[_0x35bb9c][_0x0fb0('0x29')]=0x0;}}}}function clearVoiceQueues(_0x12291d){if(!_[_0x0fb0('0x27')](_0x12291d)){for(var _0x3431c9 in _0x12291d){if(_0x12291d[_0x0fb0('0x28')](_0x3431c9)){_0x12291d[_0x3431c9][_0x0fb0('0x29')]=0x0;_0x12291d[_0x3431c9][_0x0fb0('0x2a')]=0x0;_0x12291d[_0x3431c9]['pTalking']=0x0;_0x12291d[_0x3431c9][_0x0fb0('0x2b')]=0x0;_0x12291d[_0x3431c9]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x20b946){if(!_[_0x0fb0('0x27')](_0x20b946)){for(var _0x329a34 in _0x20b946){if(_0x20b946[_0x0fb0('0x28')](_0x329a34)){_0x20b946[_0x329a34][_0x0fb0('0x2c')]=!![];}}}}VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x2e')]=function(){var _0x44246c=this;for(var _0x3d1733 in this[_0x0fb0('0xe')]){if(this[_0x0fb0('0xe')][_0x0fb0('0x28')](_0x3d1733)&&!this[_0x0fb0('0xe')][_0x3d1733][_0x0fb0('0x2f')]){this[_0x0fb0('0xc')][_0x0fb0('0xa')](function(){if(!_[_0x0fb0('0x30')](_0x44246c['channels'][_0x3d1733])){return ami['Action']({'action':_0x0fb0('0x31'),'channel':_0x44246c[_0x0fb0('0xe')][_0x3d1733][_0x0fb0('0x32')]})[_0x0fb0('0x33')](function(_0xfeb072){if(_0xfeb072['message']===_0x0fb0('0x34')){setTimeout(function(){if(_0x44246c['channels'][_0x3d1733]){delete _0x44246c['channels'][_0x3d1733];logger['error'](_0x0fb0('0x35'),_0x3d1733,util[_0x0fb0('0x36')](_0xfeb072,{'showHidden':![],'depth':null}));}if(_0x44246c['queueReports'][_0x3d1733]){delete _0x44246c[_0x0fb0('0x37')][_0x3d1733];logger[_0x0fb0('0x38')](_0x0fb0('0x39'),_0x3d1733,util['inspect'](_0xfeb072,{'showHidden':![],'depth':null}));}if(_0x44246c[_0x0fb0('0x3a')][_0x3d1733]){delete _0x44246c[_0x0fb0('0x3a')][_0x3d1733];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x3d1733,util[_0x0fb0('0x36')](_0xfeb072,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x3b')]=function(){logger[_0x0fb0('0x38')](_0x0fb0('0x3c'));clearChannels(this[_0x0fb0('0xe')]);this[_0x0fb0('0x3d')](this['queueReports']);clearAgentBooked(this[_0x0fb0('0xd')]);clearVoiceQueues(this[_0x0fb0('0x10')]);clearCampaigns(this[_0x0fb0('0x12')]);};VoiceQueueReport[_0x0fb0('0x2d')]['clearQueueReport']=function(_0x4487b9){var _0x4cef64=this;if(!_['isEmpty'](_0x4487b9)){for(var _0x29e772 in _0x4487b9){if(_0x4487b9[_0x0fb0('0x28')](_0x29e772)){_0x4cef64['emitVoiceQueueChannelRemove'](_0x4487b9[_0x29e772],'clearqueuereport');delete _0x4487b9[_0x29e772];}}}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x3e')]=function(_0x194c90,_0x15afe2,_0x44b63a){io['to'](_0x194c90)[_0x0fb0('0x3e')](_0x15afe2,_0x44b63a);};VoiceQueueReport[_0x0fb0('0x2d')]['emitVoiceQueueChannelSave']=function(_0x56c6fb,_0x3cd270){logger[_0x0fb0('0x3f')](_0x0fb0('0x40')+_0x3cd270+']\x20sending\x20voice_queue_channel:save\x20event:',_0x56c6fb[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x56c6fb,{'showHidden':![],'depth':null}));this['emit'](util[_0x0fb0('0x42')](_0x0fb0('0x43'),_0x56c6fb[_0x0fb0('0x44')]),_0x0fb0('0x45'),_0x56c6fb);io['emit'](_0x0fb0('0x46'),_0x56c6fb);};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x47')]=function(_0x242735,_0x175f57){logger[_0x0fb0('0x3f')](_0x0fb0('0x40')+_0x175f57+_0x0fb0('0x48'),_0x242735[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x242735,{'showHidden':![],'depth':null}));if(_0x242735[_0x0fb0('0x49')]===_0x0fb0('0x4a'))return;this[_0x0fb0('0x3e')](util[_0x0fb0('0x42')]('voice:queue:%s',_0x242735[_0x0fb0('0x44')]),'voice_queue_channel:remove',_0x242735);io[_0x0fb0('0x3e')](_0x0fb0('0x4b'),_0x242735);};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x4c')]=function(_0x452ba1,_0x384205){if(_0x452ba1[_0x0fb0('0x4d')]==='inbound'){var _0x219b38={'id':_0x452ba1['id'],'name':_0x452ba1[_0x0fb0('0x44')],'strategy':_0x452ba1['strategy'],'answered':_0x452ba1[_0x0fb0('0x4e')],'available':_0x452ba1[_0x0fb0('0x4f')],'loggedIn':_0x452ba1[_0x0fb0('0x50')],'pTalking':_0x452ba1[_0x0fb0('0x51')],'sumBillable':_0x452ba1[_0x0fb0('0x52')],'sumDuration':_0x452ba1['sumDuration'],'sumHoldTime':_0x452ba1[_0x0fb0('0x53')]||0x0,'talking':_0x452ba1['talking'],'total':_0x452ba1['total'],'type':_0x452ba1[_0x0fb0('0x4d')],'unmanaged':_0x452ba1['unmanaged'],'abandoned':_0x452ba1[_0x0fb0('0x54')],'waiting':_0x452ba1[_0x0fb0('0x2b')]};if(_0x452ba1[_0x0fb0('0x55')]){_0x219b38[_0x0fb0('0x55')]={'id':_0x452ba1[_0x0fb0('0x55')]['id'],'name':_0x452ba1[_0x0fb0('0x55')]['name'],'active':_0x452ba1[_0x0fb0('0x55')][_0x0fb0('0x56')],'callerid':_0x452ba1[_0x0fb0('0x55')][_0x0fb0('0x57')]};}if(_0x452ba1['Interval']){_0x219b38['Interval']={'id':_0x452ba1[_0x0fb0('0x58')]['id'],'name':_0x452ba1['Interval']['name']};}var _0x150a8a=md5(JSON[_0x0fb0('0x59')](_0x219b38));if(_0x452ba1[_0x0fb0('0x3')]!==_0x150a8a){_0x452ba1[_0x0fb0('0x3')]=_0x150a8a;logger[_0x0fb0('0x3f')](_0x0fb0('0x5a')+_0x384205+_0x0fb0('0x5b'),util[_0x0fb0('0x36')](_0x219b38,{'showHidden':![],'depth':null}));this['emit'](util[_0x0fb0('0x42')](_0x0fb0('0x43'),_0x219b38[_0x0fb0('0x44')]),_0x0fb0('0x5c'),_0x219b38);}}};VoiceQueueReport[_0x0fb0('0x2d')]['isNotNull']=function(_0x42938b){return _0x42938b!==null&&!_[_0x0fb0('0x5d')](_0x42938b);};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x26')]=function(){var _0x1c5620=this;setInterval(function(){_0x1c5620[_0x0fb0('0x2e')]();ami['Action']({'action':_0x0fb0('0x5e')})[_0x0fb0('0x33')](function(_0x3aa992){logger['error'](_0x0fb0('0x5f'),util[_0x0fb0('0x36')](_0x3aa992,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x0fb0('0x25')]=function(){var _0x5d26ae=this;setInterval(function(){if(_0x5d26ae[_0x0fb0('0x11')]){return ami[_0x0fb0('0x60')]({'action':_0x0fb0('0x61')})[_0x0fb0('0x62')](function(){_0x5d26ae[_0x0fb0('0x11')]=![];})['catch'](function(_0x155cfa){logger['error']('[voiceQueueReport][queuesummary]',util[_0x0fb0('0x36')](_0x155cfa,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x63')]=function(_0xc57938){try{if(this[_0x0fb0('0x64')](_0xc57938)&&this[_0x0fb0('0x64')](_0xc57938[_0x0fb0('0x65')])){logger[_0x0fb0('0x3f')](_0x0fb0('0x66'),util[_0x0fb0('0x36')](_0xc57938,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]]){logger[_0x0fb0('0x67')](_0x0fb0('0x68'),_0xc57938[_0x0fb0('0x65')]);var _0x1743ba=_[_0x0fb0('0x69')](this[_0x0fb0('0xe')],'queue')[_0xc57938[_0x0fb0('0x65')]]||0x0;var _0x3d2c72=_0x1743ba-_0xc57938[_0x0fb0('0x6a')];if(this[_0x0fb0('0x10')][_0xc57938['queue']][_0x0fb0('0x2b')]!==_[_0x0fb0('0x6b')](_0xc57938['callers'])||this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x50')]!==_[_0x0fb0('0x6b')](_0xc57938[_0x0fb0('0x6c')])||this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x4f')]!==_['toNumber'](_0xc57938[_0x0fb0('0x4f')])||this['voiceQueues'][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x2a')]!==_0x3d2c72){this['voiceQueues'][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x2b')]=_[_0x0fb0('0x6b')](_0xc57938['callers']);this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x50')]=_[_0x0fb0('0x6b')](_0xc57938[_0x0fb0('0x6c')]);this['voiceQueues'][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x4f')]=_[_0x0fb0('0x6b')](_0xc57938[_0x0fb0('0x4f')]);this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x2a')]=_0x3d2c72>0x0?_0x3d2c72:0x0;this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]]['talking']=this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]][_0x0fb0('0x2a')]>_[_0x0fb0('0x6b')](_0xc57938[_0x0fb0('0x6c')])?_[_0x0fb0('0x6b')](_0xc57938[_0x0fb0('0x6c')]):this[_0x0fb0('0x10')][_0xc57938['queue']][_0x0fb0('0x2a')];this[_0x0fb0('0x4c')](this[_0x0fb0('0x10')][_0xc57938[_0x0fb0('0x65')]],_0x0fb0('0x61'));}logger[_0x0fb0('0x3f')](_0x0fb0('0x6d'),util[_0x0fb0('0x36')](this['voiceQueues'][_0xc57938[_0x0fb0('0x65')]],{'showHidden':![],'depth':null}));ami[_0x0fb0('0x3e')](_0x0fb0('0x6e'),this[_0x0fb0('0x10')][_0xc57938['queue']]);}}}catch(_0x5db35e){logger[_0x0fb0('0x38')]('[voiceQueueReport][queuesummary]',util[_0x0fb0('0x36')](_0x5db35e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x15')]=function(_0x581069){logger['debug'](_0x0fb0('0x6f'),util[_0x0fb0('0x36')](_0x581069,{'showHidden':![],'depth':null}));ami[_0x0fb0('0x3e')](_0x0fb0('0x70'),{});this['flagQueueSummary']=!![];};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x17')]=function(_0x320f51){try{if(this[_0x0fb0('0x64')](_0x320f51)){logger[_0x0fb0('0x3f')]('[%s][voiceQueueReport][queuecallerjoin]',_0x320f51[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x320f51,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x0fb0('0x37')][_0x320f51[_0x0fb0('0x41')]]))this[_0x0fb0('0x37')][_0x320f51[_0x0fb0('0x41')]]=[];if(_[_0x0fb0('0x5d')](this[_0x0fb0('0xe')][_0x320f51[_0x0fb0('0x41')]]))this[_0x0fb0('0xe')][_0x320f51[_0x0fb0('0x41')]]={};var _0x3de2d8=new QueueReport();_0x3de2d8[_0x0fb0('0x44')]=_0x320f51[_0x0fb0('0x65')];_0x3de2d8[_0x0fb0('0x4d')]=this['voiceQueues'][_0x3de2d8[_0x0fb0('0x44')]]&&this['voiceQueues'][_0x3de2d8['name']][_0x0fb0('0x4d')]?this[_0x0fb0('0x10')][_0x3de2d8[_0x0fb0('0x44')]][_0x0fb0('0x4d')]||'inbound':'inbound';_0x3de2d8['queue']=_0x320f51[_0x0fb0('0x65')];_0x3de2d8['queuecallerjoinAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3de2d8[_0x0fb0('0x71')]=_0x320f51[_0x0fb0('0x71')];_0x3de2d8[_0x0fb0('0x72')]=_0x320f51[_0x0fb0('0x72')];_0x3de2d8[_0x0fb0('0x41')]=_0x320f51[_0x0fb0('0x41')];_0x3de2d8[_0x0fb0('0x73')]=this[_0x0fb0('0xe')][_0x320f51['uniqueid']][_0x0fb0('0x73')];logger[_0x0fb0('0x67')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x3de2d8[_0x0fb0('0x44')],_0x3de2d8['type']);_[_0x0fb0('0x74')](_0x3de2d8,_['pick'](_0x320f51,_[_0x0fb0('0x75')](_0x3de2d8)));this[_0x0fb0('0x37')][_0x320f51[_0x0fb0('0x41')]][_0x0fb0('0x76')](_0x3de2d8);this[_0x0fb0('0xe')][_0x320f51[_0x0fb0('0x41')]]=_0x3de2d8;this[_0x0fb0('0x77')](_0x3de2d8,_0x0fb0('0x16'));}}catch(_0x16ae02){logger[_0x0fb0('0x38')](_0x0fb0('0x78'),_0x320f51[_0x0fb0('0x41')],util['inspect'](_0x16ae02,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x18')]=function(_0x2fa793){try{if(this[_0x0fb0('0x64')](_0x2fa793)){logger[_0x0fb0('0x3f')](_0x0fb0('0x79'),_0x2fa793[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x2fa793,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x2fa793[_0x0fb0('0x41')]]){var _0x122328=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x2fa793[_0x0fb0('0x41')]]);_0x122328['queuecallercomplete']=![];_0x122328['queuecallercompleteAt']=null;_0x122328[_0x0fb0('0x7b')]=_0x2fa793[_0x0fb0('0x7b')];_0x122328['originalposition']=_0x2fa793[_0x0fb0('0x7c')];_0x122328[_0x0fb0('0x7d')]=!![];_0x122328[_0x0fb0('0x7e')]=moment()[_0x0fb0('0x42')](_0x0fb0('0x7f'));_0x122328[_0x0fb0('0x49')]=_0x0fb0('0x80');_0x122328['lastAssignedTo']=null;logger['info'](_0x0fb0('0x81'),_0x122328[_0x0fb0('0x44')],_0x122328[_0x0fb0('0x4d')]);this[_0x0fb0('0xe')][_0x2fa793[_0x0fb0('0x41')]]=_0x122328;this['emitVoiceQueueChannelRemove'](_0x122328,_0x0fb0('0x7d'));}}}catch(_0x190a64){logger[_0x0fb0('0x38')](_0x0fb0('0x79'),_0x2fa793[_0x0fb0('0x41')],util['inspect'](_0x190a64,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0fb0('0x1a')]=function(_0x57020c){try{if(this[_0x0fb0('0x64')](_0x57020c)){logger[_0x0fb0('0x3f')]('[%s][voiceQueueReport][queuecallerleave]',_0x57020c['uniqueid'],util['inspect'](_0x57020c,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x57020c['uniqueid']]){var _0x35db52=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x57020c[_0x0fb0('0x41')]]);_0x35db52[_0x0fb0('0x82')]=moment()[_0x0fb0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');_0x35db52[_0x0fb0('0x83')]=_0x57020c[_0x0fb0('0x83')];_0x35db52[_0x0fb0('0x84')]=_0x57020c[_0x0fb0('0x84')];logger[_0x0fb0('0x67')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x35db52[_0x0fb0('0x44')],_0x35db52[_0x0fb0('0x4d')],_0x57020c[_0x0fb0('0x83')],_0x57020c['connectedlinename']);this[_0x0fb0('0xe')][_0x57020c[_0x0fb0('0x41')]]=_0x35db52;this['emitVoiceQueueChannelSave'](_0x35db52,_0x0fb0('0x19'));}}}catch(_0x59b85b){logger['error'](_0x0fb0('0x85'),_0x57020c[_0x0fb0('0x41')],util['inspect'](_0x59b85b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')]['syncAgentConnect']=function(_0x5e1a13){try{if(this['isNotNull'](_0x5e1a13)){logger[_0x0fb0('0x3f')]('[%s][voiceQueueReport][agentconnect]',_0x5e1a13['uniqueid'],util[_0x0fb0('0x36')](_0x5e1a13,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x5e1a13[_0x0fb0('0x41')]]){var _0x68f9cb=_['last'](this['queueReports'][_0x5e1a13[_0x0fb0('0x41')]]);_0x68f9cb[_0x0fb0('0x86')]=!![];_0x68f9cb[_0x0fb0('0x49')]=_0x0fb0('0x87');logger[_0x0fb0('0x67')](_0x0fb0('0x88'),_0x68f9cb[_0x0fb0('0x44')],_0x68f9cb[_0x0fb0('0x4d')]);}}}catch(_0x5abc55){logger[_0x0fb0('0x38')]('[%s][voiceQueueReport][agentconnect]',_0x5e1a13['uniqueid'],util[_0x0fb0('0x36')](_0x5abc55,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x1c')]=function(_0x366425){try{if(this[_0x0fb0('0x64')](_0x366425)){logger[_0x0fb0('0x3f')]('[%s][voiceQueueReport][agentcomplete]',_0x366425[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x366425,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x366425[_0x0fb0('0x41')]]){var _0x3ce0f7=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x366425[_0x0fb0('0x41')]]);_0x3ce0f7[_0x0fb0('0x7d')]=![];_0x3ce0f7[_0x0fb0('0x7e')]=null;_0x3ce0f7[_0x0fb0('0x89')]=!![];_0x3ce0f7[_0x0fb0('0x8a')]=_0x366425[_0x0fb0('0x8b')];_0x3ce0f7[_0x0fb0('0x7b')]=_0x366425[_0x0fb0('0x7b')];_0x3ce0f7[_0x0fb0('0x86')]=!![];_0x3ce0f7['queuecallerexit']=![];_0x3ce0f7[_0x0fb0('0x8c')]=null;if(!_0x3ce0f7[_0x0fb0('0x8d')]){if(_0x366425[_0x0fb0('0x8e')]=='transfer'){_0x3ce0f7[_0x0fb0('0x49')]=_0x0fb0('0x8f');logger['info'](_0x0fb0('0x90'),_0x3ce0f7[_0x0fb0('0x44')],_0x3ce0f7[_0x0fb0('0x4d')]);}else{if(_['startsWith'](_0x366425[_0x0fb0('0x32')][_0x0fb0('0x91')](),_0x0fb0('0x92'))){if(this[_0x0fb0('0x37')][_0x366425[_0x0fb0('0x93')]]){var _0x2d6304=_[_0x0fb0('0x7a')](this['queueReports'][_0x366425[_0x0fb0('0x93')]]);_0x2d6304[_0x0fb0('0x86')]=![];_0x2d6304[_0x0fb0('0x94')]=!![];_0x2d6304['queuecallerexitAt']=moment(_0x3ce0f7['queuecallerjoinAt'])['add'](_0x366425[_0x0fb0('0x7b')],'seconds')[_0x0fb0('0x42')](_0x0fb0('0x7f'));_0x2d6304[_0x0fb0('0x49')]=_0x0fb0('0x95');_0x2d6304[_0x0fb0('0x8d')]=!![];_0x2d6304[_0x0fb0('0x96')]=_0x0fb0('0x97');_0x2d6304['transferexten']=_0x366425['destexten'];_0x2d6304[_0x0fb0('0x98')]=_0x366425[_0x0fb0('0x41')];logger[_0x0fb0('0x67')](_0x0fb0('0x99'),_0x2d6304[_0x0fb0('0x44')],_0x2d6304[_0x0fb0('0x4d')]);var _0x460d8f=this['queueReports'][_0x366425[_0x0fb0('0x93')]];this['queueReports'][_0x366425[_0x0fb0('0x93')]]=this['queueReports'][_0x366425[_0x0fb0('0x41')]];this[_0x0fb0('0x37')][_0x366425[_0x0fb0('0x41')]]=_0x460d8f;}}else{_0x3ce0f7[_0x0fb0('0x49')]=_0x0fb0('0x9a')+_0x366425[_0x0fb0('0x8e')][_0x0fb0('0x9b')]();logger[_0x0fb0('0x67')](_0x0fb0('0x9c'),_0x3ce0f7[_0x0fb0('0x44')],_0x3ce0f7[_0x0fb0('0x4d')],_0x3ce0f7['queuecallerexitreason']);}}}this[_0x0fb0('0xe')][_0x366425['uniqueid']]=_0x3ce0f7;this[_0x0fb0('0x47')](_0x3ce0f7,_0x0fb0('0x1b'));}}}catch(_0x2d57d9){logger[_0x0fb0('0x38')](_0x0fb0('0x9d'),_0x366425[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x2d57d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0fb0('0x1f')]=function(_0x67422d){try{if(this[_0x0fb0('0x64')](_0x67422d)){logger['debug'](_0x0fb0('0x9e'),_0x67422d[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x67422d,{'showHidden':![],'depth':null}));this[_0x0fb0('0x9f')](_0x67422d['uniqueid'],_[_0x0fb0('0x75')](_0x67422d[_0x0fb0('0xa0')])[0x0],_0x67422d[_0x0fb0('0xa1')]);if(this['queueReports'][_0x67422d[_0x0fb0('0x41')]]){var _0x59dc3c=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x67422d[_0x0fb0('0x41')]]);if(_0x59dc3c){if(this['isNotNull'](_0x67422d[_0x0fb0('0xa0')])&&this['isNotNull'](_0x67422d[_0x0fb0('0xa0')][_0x0fb0('0xa2')])){switch(_0x67422d['value']){case _0x0fb0('0xa3'):_0x59dc3c['queuecallerexit']=![];_0x59dc3c[_0x0fb0('0x8c')]=null;break;case'TIMEOUT':_0x59dc3c['lastevent']=_0x0fb0('0xa4');_0x59dc3c[_0x0fb0('0x94')]=!![];_0x59dc3c[_0x0fb0('0x8c')]=moment()['format'](_0x0fb0('0x7f'));_0x59dc3c[_0x0fb0('0x82')]=moment()['format'](_0x0fb0('0x7f'));logger[_0x0fb0('0x3f')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x67422d[_0x0fb0('0x41')],util['inspect'](_0x59dc3c,{'showHidden':![],'depth':null}));ami[_0x0fb0('0x3e')]('custom:timeout',_0x59dc3c);break;default:_0x59dc3c[_0x0fb0('0x94')]=!![];_0x59dc3c[_0x0fb0('0x8c')]=moment()[_0x0fb0('0x42')](_0x0fb0('0x7f'));_0x59dc3c[_0x0fb0('0x82')]=moment()[_0x0fb0('0x42')](_0x0fb0('0x7f'));}_0x59dc3c[_0x0fb0('0x7d')]=![];_0x59dc3c['queuecallerabandonAt']=null;_0x59dc3c[_0x0fb0('0x49')]=_0x67422d['value'];this['channels'][_0x67422d['uniqueid']]=_0x59dc3c;this[_0x0fb0('0x47')](_0x59dc3c,'varset');}else if(this[_0x0fb0('0x64')](_0x67422d['variable'])&&this[_0x0fb0('0x64')](_0x67422d[_0x0fb0('0xa0')][_0x0fb0('0xa5')])){if(!_0x59dc3c[_0x0fb0('0x7d')]){_0x59dc3c[_0x0fb0('0x94')]=!![];_0x59dc3c[_0x0fb0('0x8c')]=moment()[_0x0fb0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');_0x59dc3c[_0x0fb0('0x49')]=_0x0fb0('0xa6');_0x59dc3c[_0x0fb0('0x82')]=moment()[_0x0fb0('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x67422d['uniqueid']]=_0x59dc3c;}}logger[_0x0fb0('0x67')](_0x0fb0('0xa7'),_0x67422d[_0x0fb0('0x41')],_0x59dc3c[_0x0fb0('0x44')],_0x59dc3c[_0x0fb0('0x4d')],_[_0x0fb0('0x75')](_0x67422d['variable'])[0x0],_0x67422d[_0x0fb0('0xa1')]);_0x59dc3c[_0x0fb0('0x3a')]=this[_0x0fb0('0x3a')][_0x67422d[_0x0fb0('0x41')]];}}}}catch(_0x32ad84){logger[_0x0fb0('0x38')](_0x0fb0('0x9e'),_0x67422d['uniqueid'],util[_0x0fb0('0x36')](_0x32ad84,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x309478,_0x534c50,_0x5d3029){var _0x22c6f7=[_0x0fb0('0xa8'),_0x0fb0('0xa9'),_0x0fb0('0xaa'),_0x0fb0('0xab'),'rtpaudioqosloss',_0x0fb0('0xac'),_0x0fb0('0xad'),'rtpaudioqosrttbridged',_0x0fb0('0xae'),_0x0fb0('0xaf'),_0x0fb0('0xb0'),_0x0fb0('0xb1'),_0x0fb0('0xb2'),_0x0fb0('0xb3'),_0x0fb0('0xb4'),_0x0fb0('0xb5'),_0x0fb0('0x8b'),_0x0fb0('0xb6'),_0x0fb0('0xb7')];if(!_[_0x0fb0('0x30')](_0x534c50)&&!_['includes'](_0x22c6f7,_0x534c50)){if(_[_0x0fb0('0x5d')](this[_0x0fb0('0x3a')][_0x309478])){this['variables'][_0x309478]={};}this[_0x0fb0('0x3a')][_0x309478][_0x534c50]=_0x5d3029;}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0xb8')]=function(_0x46f5e3,_0x32c6d5,_0x59b137){var _0x23bd10={};for(var _0x2e840d=0x0;_0x2e840d<this['queueReports'][_0x46f5e3]['length'];_0x2e840d+=0x1){_0x23bd10=this[_0x0fb0('0x37')][_0x46f5e3][_0x2e840d];if(this['voiceQueues'][_0x23bd10[_0x0fb0('0x65')]]){if(_0x23bd10['queuecallerexit']&&_0x23bd10[_0x0fb0('0x8d')]!=!![]){this[_0x0fb0('0x10')][_0x23bd10[_0x0fb0('0x65')]][_0x0fb0('0xb9')]+=0x1;}if(_0x23bd10[_0x0fb0('0x7d')]){this[_0x0fb0('0x10')][_0x23bd10[_0x0fb0('0x65')]][_0x0fb0('0x54')]+=0x1;}this['voiceQueues'][_0x23bd10['queue']][_0x0fb0('0x53')]+=moment(_0x23bd10[_0x0fb0('0x82')])[_0x0fb0('0xba')](_0x23bd10[_0x0fb0('0xbb')],_0x0fb0('0xbc'))||0x0;if(_0x2e840d===this[_0x0fb0('0x37')][_0x46f5e3][_0x0fb0('0xbd')]-0x1){this[_0x0fb0('0x10')][_0x23bd10[_0x0fb0('0x65')]][_0x0fb0('0xbe')]+=moment()[_0x0fb0('0xbf')](0x0)[_0x0fb0('0xba')](_0x23bd10[_0x0fb0('0xbb')],'seconds');this[_0x0fb0('0x10')][_0x23bd10['queue']][_0x0fb0('0xc0')]+=0x1;if(_0x23bd10[_0x0fb0('0x86')]){this['voiceQueues'][_0x23bd10['queue']][_0x0fb0('0x4e')]+=0x1;this[_0x0fb0('0x10')][_0x23bd10[_0x0fb0('0x65')]]['sumBillable']+=moment()['milliseconds'](0x0)[_0x0fb0('0xba')](_0x23bd10[_0x0fb0('0x82')],_0x0fb0('0xbc'));_0x23bd10[_0x0fb0('0xc1')]=moment()[_0x0fb0('0x42')](_0x0fb0('0x7f'));_0x23bd10[_0x0fb0('0x94')]=![];_0x23bd10[_0x0fb0('0x8c')]=null;}if(_0x23bd10[_0x0fb0('0x94')]&&_0x23bd10[_0x0fb0('0x8d')]!=!![]){_0x23bd10['lastevent']=_0x0fb0('0xb9');logger[_0x0fb0('0x3f')](_0x0fb0('0xc2'),_0x46f5e3,util[_0x0fb0('0x36')](_0x23bd10,{'showHidden':![],'depth':null}));ami[_0x0fb0('0x3e')]('custom:queuecallerunmanaged',_0x23bd10);}if(_0x23bd10['queuecallerabandon']){_0x23bd10['lastevent']='abandoned';logger[_0x0fb0('0x3f')](_0x0fb0('0xc3'),_0x46f5e3,util[_0x0fb0('0x36')](_0x23bd10,{'showHidden':![],'depth':null}));ami[_0x0fb0('0x3e')]('custom:queuecallerabandon',_0x23bd10);}}else{this[_0x0fb0('0x10')][_0x23bd10[_0x0fb0('0x65')]][_0x0fb0('0xbe')]+=this['voiceQueues'][_0x23bd10[_0x0fb0('0x65')]]['sumHoldTime'];}logger[_0x0fb0('0x67')](_0x0fb0('0xc4'),_0x46f5e3,_0x23bd10[_0x0fb0('0x44')],_0x23bd10[_0x0fb0('0x4d')],_0x32c6d5);if(_0x59b137&&_0x23bd10[_0x0fb0('0x49')]==='ATTENDEDTRANSFER'){_0x23bd10[_0x0fb0('0x49')]=_0x0fb0('0x87');}this[_0x0fb0('0xe')][_0x46f5e3]=_0x23bd10;this[_0x0fb0('0x47')](_0x23bd10,_0x0fb0('0xc5'));this['emitVoiceQueueSummary'](this['voiceQueues'][_0x23bd10[_0x0fb0('0x65')]],_0x0fb0('0xc5'));}}logger[_0x0fb0('0x3f')](_0x0fb0('0xc6'),_0x46f5e3,util[_0x0fb0('0x36')](this[_0x0fb0('0x37')][_0x46f5e3],{'showHidden':![],'depth':null}));ami['emit'](_0x0fb0('0xc7'),this[_0x0fb0('0x37')][_0x46f5e3]);if(_0x23bd10['queuecallerexitreason']===_0x0fb0('0x4a'))return;delete this[_0x0fb0('0x37')][_0x46f5e3];delete this[_0x0fb0('0xe')][_0x46f5e3];if(this['variables'][_0x46f5e3]){delete this[_0x0fb0('0x3a')][_0x46f5e3];}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0xc8')]=function(_0x27243d){try{if(this[_0x0fb0('0x64')](_0x27243d)){logger[_0x0fb0('0x3f')](_0x0fb0('0xc9'),_0x27243d['uniqueid'],util[_0x0fb0('0x36')](_0x27243d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x27243d[_0x0fb0('0x41')]]){return this[_0x0fb0('0xb8')](_0x27243d[_0x0fb0('0x41')],_0x27243d[_0x0fb0('0xca')]);}if(this[_0x0fb0('0x37')][_0x27243d[_0x0fb0('0x93')]]){if(_0x27243d[_0x0fb0('0xcb')]==='21'){return;}return this[_0x0fb0('0xb8')](_0x27243d[_0x0fb0('0x93')],_0x27243d[_0x0fb0('0xca')],!![]);}var _0x2582e6=Object['keys'](this['queueReports']);for(var _0x3b3ab4=0x0;_0x3b3ab4<_0x2582e6[_0x0fb0('0xbd')];_0x3b3ab4++){var _0x5a00de=_['last'](this['queueReports'][_0x2582e6[_0x3b3ab4]]);if(_0x5a00de&&_0x5a00de[_0x0fb0('0xcc')]===_0x27243d[_0x0fb0('0x41')]){return this[_0x0fb0('0xb8')](_0x5a00de[_0x0fb0('0x41')],_0x27243d[_0x0fb0('0xca')],!![]);}}}}catch(_0x7be733){logger[_0x0fb0('0x38')](_0x0fb0('0xc9'),_0x27243d[_0x0fb0('0x41')],util['inspect'](_0x7be733,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0x23')]=function(_0x45c586){try{if(this[_0x0fb0('0x64')](_0x45c586)){logger[_0x0fb0('0x3f')](_0x0fb0('0xcd'),_0x45c586[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x45c586,{'showHidden':![],'depth':null}));var _0x2a89a7;var _0x546617;var _0x4b0b30;if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xce')]]){_0x2a89a7=_['last'](this['queueReports'][_0x45c586[_0x0fb0('0xce')]]);_0x2a89a7['transferexten']=_0x45c586['secondtransfererexten'];_0x2a89a7[_0x0fb0('0x98')]=_0x45c586[_0x0fb0('0xcf')];_0x2a89a7[_0x0fb0('0x49')]=_0x0fb0('0x4a');_0x2a89a7['transfer']=!![];_0x2a89a7[_0x0fb0('0x96')]=_0x0fb0('0xd0');if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xcf')]]){_0x4b0b30=this['queueReports'][_0x45c586[_0x0fb0('0xcf')]];this[_0x0fb0('0x37')][_0x45c586['secondtransfereruniqueid']]=this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xce')]];this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xce')]]=_0x4b0b30;_0x546617=_['last'](this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xce')]]);_0x546617[_0x0fb0('0x2f')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x45c586[_0x0fb0('0x41')],_0x2a89a7['name'],_0x2a89a7[_0x0fb0('0x4d')],_0x2a89a7[_0x0fb0('0xd1')],_0x2a89a7[_0x0fb0('0x98')]);}else if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd2')]]){_0x2a89a7=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd2')]]);_0x2a89a7[_0x0fb0('0xd1')]=_0x45c586['origtransfererexten'];_0x2a89a7['transferuniqueid']=_0x45c586[_0x0fb0('0xd3')];_0x2a89a7[_0x0fb0('0x49')]='ATTENDEDTRANSFER';_0x2a89a7[_0x0fb0('0x8d')]=!![];_0x2a89a7[_0x0fb0('0x96')]=_0x0fb0('0xd0');if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd3')]]){_0x4b0b30=this['queueReports'][_0x45c586[_0x0fb0('0xd3')]];this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd3')]]=this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd2')]];this[_0x0fb0('0x37')][_0x45c586['transfertargetuniqueid']]=_0x4b0b30;_0x546617=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd2')]]);_0x546617[_0x0fb0('0x2f')]=!![];}logger[_0x0fb0('0x67')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x45c586['uniqueid'],_0x2a89a7['name'],_0x2a89a7[_0x0fb0('0x4d')],_0x2a89a7[_0x0fb0('0xd1')],_0x2a89a7['transferuniqueid']);}else if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xd3')]]){_0x2a89a7=_[_0x0fb0('0x7a')](this[_0x0fb0('0x37')][_0x45c586['origtransfereruniqueid']]);_0x2a89a7[_0x0fb0('0xd1')]=_0x45c586[_0x0fb0('0xd4')];_0x2a89a7['transferuniqueid']=_0x45c586[_0x0fb0('0xd3')];_0x2a89a7[_0x0fb0('0x49')]=_0x0fb0('0x4a');_0x2a89a7[_0x0fb0('0x8d')]=!![];_0x2a89a7[_0x0fb0('0x96')]=_0x0fb0('0xd0');_0x2a89a7[_0x0fb0('0x2f')]=!![];_0x2a89a7[_0x0fb0('0xcc')]=_0x45c586[_0x0fb0('0xce')];}else if(this[_0x0fb0('0x37')][_0x45c586[_0x0fb0('0xcf')]]){_0x2a89a7=_[_0x0fb0('0x7a')](this['queueReports'][_0x45c586['secondtransfereruniqueid']]);_0x2a89a7[_0x0fb0('0xd1')]=_0x45c586[_0x0fb0('0xd5')];_0x2a89a7[_0x0fb0('0x98')]=_0x45c586[_0x0fb0('0xcf')];_0x2a89a7[_0x0fb0('0x49')]=_0x0fb0('0x4a');_0x2a89a7[_0x0fb0('0x8d')]=!![];_0x2a89a7[_0x0fb0('0x96')]=_0x0fb0('0xd0');_0x2a89a7[_0x0fb0('0x2f')]=!![];_0x2a89a7[_0x0fb0('0xcc')]=_0x45c586[_0x0fb0('0xd2')];}}}catch(_0xe4d066){logger[_0x0fb0('0x38')](_0x0fb0('0xcd'),_0x45c586['uniqueid'],util[_0x0fb0('0x36')](_0xe4d066,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')][_0x0fb0('0xd6')]=function(_0x59cf87){try{if(this['isNotNull'](_0x59cf87)){logger[_0x0fb0('0x3f')](_0x0fb0('0xd7'),_0x59cf87[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x59cf87,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x59cf87[_0x0fb0('0xce')]]){var _0x4df827=_['last'](this['queueReports'][_0x59cf87[_0x0fb0('0xce')]]);_0x4df827[_0x0fb0('0x49')]=_0x0fb0('0xd8');_0x4df827[_0x0fb0('0x8d')]=!![];_0x4df827['transfertype']='BLIND';_0x4df827[_0x0fb0('0xd1')]=_0x59cf87['extension'];_0x4df827[_0x0fb0('0x98')]=_0x59cf87[_0x0fb0('0xce')];logger[_0x0fb0('0x67')](_0x0fb0('0xd9'),_0x59cf87[_0x0fb0('0x41')],_0x4df827[_0x0fb0('0x44')],_0x4df827[_0x0fb0('0x4d')],_0x4df827[_0x0fb0('0xd1')],_0x4df827['transferuniqueid']);this[_0x0fb0('0xc8')]({'event':'BlindTransfer','uniqueid':_0x59cf87[_0x0fb0('0xce')],'context':_0x59cf87[_0x0fb0('0xda')],'channel':_0x59cf87[_0x0fb0('0xdb')]});}}}catch(_0x2b67df){logger[_0x0fb0('0x38')](_0x0fb0('0xd7'),_0x59cf87[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x2b67df,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')]['syncMusicOnHoldStart']=function(_0x4debc5){try{if(this[_0x0fb0('0x64')](_0x4debc5)){logger[_0x0fb0('0x3f')](_0x0fb0('0xdc'),_0x4debc5['uniqueid'],util[_0x0fb0('0x36')](_0x4debc5,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x4debc5[_0x0fb0('0x41')]]){var _0x4a1673=_['last'](this['queueReports'][_0x4debc5[_0x0fb0('0x41')]]);if(!_[_0x0fb0('0x30')](_0x4a1673[_0x0fb0('0x82')])){_0x4a1673[_0x0fb0('0xdd')]=moment()[_0x0fb0('0x42')](_0x0fb0('0x7f'));logger[_0x0fb0('0x67')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x4debc5['uniqueid'],_0x4a1673[_0x0fb0('0xdd')]);}}}}catch(_0x1f55be){logger['error'](_0x0fb0('0xdc'),_0x4debc5[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x1f55be,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0fb0('0x2d')]['syncMusicOnHoldStop']=function(_0x5cce15){try{if(this['isNotNull'](_0x5cce15)){logger[_0x0fb0('0x3f')](_0x0fb0('0xde'),_0x5cce15[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x5cce15,{'showHidden':![],'depth':null}));if(this[_0x0fb0('0x37')][_0x5cce15[_0x0fb0('0x41')]]){var _0x207735=_['last'](this[_0x0fb0('0x37')][_0x5cce15[_0x0fb0('0x41')]]);if(!_[_0x0fb0('0x30')](_0x207735[_0x0fb0('0xdd')])){_0x207735['mohtime']+=moment()[_0x0fb0('0xbf')](0x0)[_0x0fb0('0xba')](_0x207735[_0x0fb0('0xdd')],_0x0fb0('0xbc'));logger[_0x0fb0('0x67')](_0x0fb0('0xdf'),_0x5cce15['uniqueid'],_0x207735[_0x0fb0('0xe0')]);delete _0x207735['mohstarttime'];}}}}catch(_0x3fa8ad){logger[_0x0fb0('0x38')]('[%s][voiceQueueReport][musiconholdstop]',_0x5cce15[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x3fa8ad,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0fb0('0xe1')]=function(_0x206567){try{if(this[_0x0fb0('0x64')](_0x206567)){logger[_0x0fb0('0x3f')](_0x0fb0('0xe2'),_0x206567[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x206567,{'showHidden':![],'depth':null}));if(_0x206567['application'][_0x0fb0('0x91')]()===_0x0fb0('0xe3')){_0x206567[_0x0fb0('0xe4')]=_0x206567['appdata']&&_0x206567[_0x0fb0('0xe5')][_0x0fb0('0xe6')](_0x0fb0('0xe7'))?_0x206567[_0x0fb0('0xe5')]:(_0x206567[_0x0fb0('0xe5')]||_0x206567[_0x0fb0('0xe4')])[_0x0fb0('0x91')]();if(_[_0x0fb0('0xe6')](_0x206567[_0x0fb0('0xe4')]['toLowerCase'](),_0x0fb0('0xe8'))){logger['info']('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x206567[_0x0fb0('0x41')],_0x206567[_0x0fb0('0xe9')],_0x206567[_0x0fb0('0xe4')]);if(_[_0x0fb0('0x5d')](this[_0x0fb0('0xe')][_0x206567[_0x0fb0('0x41')]]))this[_0x0fb0('0xe')][_0x206567[_0x0fb0('0x41')]]={};var _0xef79f1=_0x206567[_0x0fb0('0xe4')][_0x0fb0('0xea')]('=');var _0x47e6ec=_0xef79f1[0x0][_0x0fb0('0x91')]()['match'](/cdr\((.*)\)/);if(_0x47e6ec)this['channels'][_0x206567[_0x0fb0('0x41')]][_0x47e6ec[0x1]]=_0xef79f1[0x1];}}}}catch(_0x47534c){logger[_0x0fb0('0x38')](_0x0fb0('0xeb'),_0x206567[_0x0fb0('0x41')],util[_0x0fb0('0x36')](_0x47534c,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index 9414d79..c94dfc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed6f=['queue','Request','CreateReportAgentPreview','../client','createHistory','campaign'];(function(_0x18c57c,_0x10d927){var _0x2412b3=function(_0x1a5acc){while(--_0x1a5acc){_0x18c57c['push'](_0x18c57c['shift']());}};_0x2412b3(++_0x10d927);}(_0xed6f,0x1e3));var _0xfed6=function(_0x2281af,_0x251abd){_0x2281af=_0x2281af-0x0;var _0x10b37f=_0xed6f[_0x2281af];return _0x10b37f;};'use strict';var client=require(_0xfed6('0x0'));exports[_0xfed6('0x1')]=function(_0x3d2c13){return function(){_0x3d2c13[_0xfed6('0x2')]=_0x3d2c13[_0xfed6('0x3')];return client[_0xfed6('0x4')]('CreateReportAgentPreview',{'body':_0x3d2c13,'log':_0xfed6('0x5')});};};
\ No newline at end of file
+var _0x099e=['CreateReportAgentPreview','../client','createHistory','campaign','Request'];(function(_0x51d3ac,_0x2cdcfc){var _0x29b333=function(_0xd4e32){while(--_0xd4e32){_0x51d3ac['push'](_0x51d3ac['shift']());}};_0x29b333(++_0x2cdcfc);}(_0x099e,0x1c8));var _0xe099=function(_0x4e7061,_0x112fbc){_0x4e7061=_0x4e7061-0x0;var _0x44ff37=_0x099e[_0x4e7061];return _0x44ff37;};'use strict';var client=require(_0xe099('0x0'));exports[_0xe099('0x1')]=function(_0x54888a){return function(){_0x54888a[_0xe099('0x2')]=_0x54888a['queue'];return client[_0xe099('0x3')](_0xe099('0x4'),{'body':_0x54888a,'log':_0xe099('0x4')});};};
\ No newline at end of file
index 22e02fd..94b9c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44fd=['CreateAttachment','create','Request'];(function(_0x169f1e,_0x2cd3ea){var _0x2a56c7=function(_0x461fca){while(--_0x461fca){_0x169f1e['push'](_0x169f1e['shift']());}};_0x2a56c7(++_0x2cd3ea);}(_0x44fd,0x106));var _0xd44f=function(_0x37e886,_0x17d0ad){_0x37e886=_0x37e886-0x0;var _0x57c5cd=_0x44fd[_0x37e886];return _0x57c5cd;};'use strict';var client=require('../client');exports[_0xd44f('0x0')]=function(_0x17064c){return client[_0xd44f('0x1')](_0xd44f('0x2'),{'body':_0x17064c,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x1394=['create','CreateAttachment','../client'];(function(_0x3f5bf5,_0x498786){var _0x59e229=function(_0x57aac2){while(--_0x57aac2){_0x3f5bf5['push'](_0x3f5bf5['shift']());}};_0x59e229(++_0x498786);}(_0x1394,0xb3));var _0x4139=function(_0x24fc05,_0x5be194){_0x24fc05=_0x24fc05-0x0;var _0x2577e2=_0x1394[_0x24fc05];return _0x2577e2;};'use strict';var client=require(_0x4139('0x0'));exports[_0x4139('0x1')]=function(_0x2c6530){return client['Request'](_0x4139('0x2'),{'body':_0x2c6530,'log':'CreateAttachment'});};
\ No newline at end of file
index 99996a3..ce587bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x411b3b,_0x3116cb){var _0x532ce2=function(_0x345b24){while(--_0x345b24){_0x411b3b['push'](_0x411b3b['shift']());}};_0x532ce2(++_0x3116cb);}(_0x326f,0xd1));var _0xf326=function(_0x40ab49,_0x101131){_0x40ab49=_0x40ab49-0x0;var _0x1d661f=_0x326f[_0x40ab49];return _0x1d661f;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _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(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0xc4aa[_0x5a776b];return _0xbbef59;};'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 645fcb5..e4c5900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d71=['CreateCmContact','getContacts','GetCmContact','../client','createContact','Request'];(function(_0x48f70e,_0x4f6526){var _0x14bf8f=function(_0x261b5c){while(--_0x261b5c){_0x48f70e['push'](_0x48f70e['shift']());}};_0x14bf8f(++_0x4f6526);}(_0x9d71,0x159));var _0x19d7=function(_0x5aebe8,_0x5461c7){_0x5aebe8=_0x5aebe8-0x0;var _0x5dd96e=_0x9d71[_0x5aebe8];return _0x5dd96e;};'use strict';var client=require(_0x19d7('0x0'));exports[_0x19d7('0x1')]=function(_0x534865){return function(){return client[_0x19d7('0x2')]('CreateCmContact',{'body':_0x534865,'log':_0x19d7('0x3')});};};exports[_0x19d7('0x4')]=function(_0x127798){return function(){return client['Request']('GetCmContact',{'options':_0x127798,'log':_0x19d7('0x5')});};};
\ No newline at end of file
+var _0x421e=['GetCmContact','../client','createContact','CreateCmContact','getContacts','Request'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x421e,0x181));var _0xe421=function(_0x11a0b0,_0x13077c){_0x11a0b0=_0x11a0b0-0x0;var _0x1382e6=_0x421e[_0x11a0b0];return _0x1382e6;};'use strict';var client=require(_0xe421('0x0'));exports[_0xe421('0x1')]=function(_0x6a78c4){return function(){return client['Request'](_0xe421('0x2'),{'body':_0x6a78c4,'log':_0xe421('0x2')});};};exports[_0xe421('0x3')]=function(_0x17d2bd){return function(){return client[_0xe421('0x4')](_0xe421('0x5'),{'options':_0x17d2bd,'log':_0xe421('0x5')});};};
\ No newline at end of file
index 4df3cfe..5bf3c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc668=['moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','VoiceQueueId','countReScheduled','CountReScheduled','GetCmHopperPreview','User','name','Queue','unlockContact','GetContactRecallMe','scheduledat','Agent','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications','../client','getContacts','Request','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','format','priority','ASC','getContactDialerIvr','DESC'];(function(_0x5b0bc8,_0x3f86b0){var _0x1626a5=function(_0x204b97){while(--_0x204b97){_0x5b0bc8['push'](_0x5b0bc8['shift']());}};_0x1626a5(++_0x3f86b0);}(_0xc668,0x8b));var _0x8c66=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc668[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x8c66('0x0'));var moment=require('moment');exports[_0x8c66('0x1')]=function(_0x38c293,_0x13a4a3){return function(){return client[_0x8c66('0x2')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x38c293},'include':[{'model':_0x8c66('0x3'),'as':_0x8c66('0x4')}],'limit':_0x13a4a3,'raw':![]},'log':_0x8c66('0x5')});};};exports[_0x8c66('0x6')]=function(_0x5dff56,_0x665b4a,_0x439005){return function(){return client['Request'](_0x8c66('0x7'),{'body':_0x5dff56,'options':{'where':{'VoiceQueueId':_0x665b4a,'scheduledat':{'$lte':moment()['format'](_0x8c66('0x8'))}},'limit':_0x439005},'log':_0x8c66('0x7')});};};exports[_0x8c66('0x9')]=function(_0x5810e4){return function(){return client[_0x8c66('0x2')](_0x8c66('0x7'),{'body':_0x5810e4,'options':{'where':{'ContactId':_0x5810e4[_0x8c66('0xa')],'ListId':_0x5810e4[_0x8c66('0xb')],'VoiceQueueId':_0x5810e4['VoiceQueueId'],'CampaignId':_0x5810e4[_0x8c66('0xc')]}},'log':_0x8c66('0x9')});};};exports[_0x8c66('0xd')]=function(_0x2c604f,_0x48abb8,_0x21e850){return function(){return client[_0x8c66('0x2')](_0x8c66('0xe'),{'options':{'where':{'VoiceQueueId':_0x2c604f,'ListId':_0x48abb8,'ContactId':_0x21e850}},'log':_0x8c66('0xe')});};};exports['getContactDialer']=function(_0x31a86f,_0x59369a,_0x5211d9,_0x221ad9){return function(){return client['Request'](_0x8c66('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x31a86f,'active':![],'scheduledat':{'$lte':moment()[_0x8c66('0x10')](_0x8c66('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x59369a}}]},'order':[[_0x8c66('0x11'),'DESC'],['scheduledat',_0x221ad9],['id',_0x8c66('0x12')]],'raw':!![],'limit':_0x5211d9},'log':_0x8c66('0xf')});};};exports[_0x8c66('0x13')]=function(_0x532da8,_0x3d788e,_0x24ac44){return function(){return client['Request'](_0x8c66('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x532da8,'active':![],'scheduledat':{'$lte':moment()[_0x8c66('0x10')](_0x8c66('0x8'))}},'include':[{'model':_0x8c66('0x3'),'as':'Contact'}],'order':[[_0x8c66('0x11'),_0x8c66('0x14')],['scheduledat',_0x24ac44],['id',_0x8c66('0x12')]],'raw':!![],'limit':_0x3d788e},'log':'GetContactDialerIvr'});};};exports[_0x8c66('0x15')]=function(_0x1cc638,_0x124b3a){return function(){_0x1cc638[_0x8c66('0x16')]=_0x1cc638[_0x8c66('0x17')];return client[_0x8c66('0x2')](_0x8c66('0x18'),{'body':_0x1cc638,'options':{'where':{'ContactId':_0x1cc638[_0x8c66('0xa')],'ListId':_0x1cc638[_0x8c66('0xb')],'VoiceQueueId':_0x1cc638[_0x8c66('0x19')],'CampaignId':_0x1cc638['CampaignId'],'active':_0x124b3a?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x8c66('0x1a')]=function(_0x59a13d){return function(){return client['Request'](_0x8c66('0x1b'),{'options':{'where':{'VoiceQueueId':_0x59a13d['id']?_0x59a13d['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x1e872e){return function(){return client[_0x8c66('0x2')](_0x8c66('0x1c'),{'options':{'where':{'id':_0x1e872e},'include':[{'model':'CmContact','as':_0x8c66('0x4')},{'model':_0x8c66('0x1d'),'as':'Agent','attributes':['id',_0x8c66('0x1e')]},{'model':'VoiceQueue','as':_0x8c66('0x1f'),'attributes':['id',_0x8c66('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x8c66('0x20')]=function(_0x2418d6,_0x214b80,_0x5707ff){return function(){return client[_0x8c66('0x2')](_0x8c66('0x7'),{'body':_0x2418d6,'options':{'where':{'id':_0x214b80},'limit':_0x5707ff},'log':_0x8c66('0x7')});};};exports['getContactRecallMe']=function(_0xe3a80a,_0x265b4d){return function(){return client[_0x8c66('0x2')](_0x8c66('0x21'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xe3a80a,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0x8c66('0x8'))},'UserId':{'$in':_0x265b4d}},'order':[['priority','DESC'],[_0x8c66('0x22'),_0x8c66('0x14')],['id',_0x8c66('0x12')]],'include':[{'model':'CmContact','as':_0x8c66('0x4')},{'model':_0x8c66('0x1d'),'as':_0x8c66('0x23'),'attributes':['id','name',_0x8c66('0x24')]}],'group':_0x8c66('0x25'),'raw':!![]},'log':'GetContactDialer'});};};exports['resetActiveCalls']=function(_0x30a558,_0x44109e){return client[_0x8c66('0x2')]('ResetActiveCalls',{'body':_0x30a558,'options':_0x44109e||{},'log':_0x8c66('0x26')});};exports['handlePreviewRecallNotifications']=function(_0x507f5b,_0x4b6594,_0x441716){return function(){return client['Request']('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0x507f5b,'interval':_0x4b6594,'availableAgentsIds':_0x441716}},'log':_0x8c66('0x27')});};};
\ No newline at end of file
+var _0x441b=['VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','priority','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','../client','moment','getContacts','GetCmHopper','CmContact','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','DESC','scheduledat','ASC','Contact','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','VoiceQueueId','countReScheduled','getContactPreview','User','Agent','name'];(function(_0x2a67fe,_0x295c09){var _0x57e726=function(_0x280573){while(--_0x280573){_0x2a67fe['push'](_0x2a67fe['shift']());}};_0x57e726(++_0x295c09);}(_0x441b,0xaf));var _0xb441=function(_0x53201f,_0x4650c){_0x53201f=_0x53201f-0x0;var _0x2f7baa=_0x441b[_0x53201f];return _0x2f7baa;};'use strict';var client=require(_0xb441('0x0'));var moment=require(_0xb441('0x1'));exports[_0xb441('0x2')]=function(_0x243ff9,_0xd1f8f1){return function(){return client['Request'](_0xb441('0x3'),{'options':{'where':{'VoiceQueueId':_0x243ff9},'include':[{'model':_0xb441('0x4'),'as':'Contact'}],'limit':_0xd1f8f1,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x572b3e,_0x40a38c,_0x24a661){return function(){return client[_0xb441('0x5')](_0xb441('0x6'),{'body':_0x572b3e,'options':{'where':{'VoiceQueueId':_0x40a38c,'scheduledat':{'$lte':moment()[_0xb441('0x7')](_0xb441('0x8'))}},'limit':_0x24a661},'log':_0xb441('0x6')});};};exports[_0xb441('0x9')]=function(_0x26086e){return function(){return client['Request'](_0xb441('0x6'),{'body':_0x26086e,'options':{'where':{'ContactId':_0x26086e[_0xb441('0xa')],'ListId':_0x26086e[_0xb441('0xb')],'VoiceQueueId':_0x26086e['VoiceQueueId'],'CampaignId':_0x26086e[_0xb441('0xc')]}},'log':_0xb441('0x9')});};};exports[_0xb441('0xd')]=function(_0x35cbd2,_0xd7fc8b,_0x9f757c){return function(){return client[_0xb441('0x5')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x35cbd2,'ListId':_0xd7fc8b,'ContactId':_0x9f757c}},'log':_0xb441('0xe')});};};exports['getContactDialer']=function(_0x65ee78,_0x302505,_0x57cd1a,_0x310ad6){return function(){return client[_0xb441('0x5')](_0xb441('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x65ee78,'active':![],'scheduledat':{'$lte':moment()[_0xb441('0x7')](_0xb441('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x302505}}]},'order':[['priority',_0xb441('0x10')],[_0xb441('0x11'),_0x310ad6],['id',_0xb441('0x12')]],'raw':!![],'limit':_0x57cd1a},'log':_0xb441('0xf')});};};exports['getContactDialerIvr']=function(_0x5d8e7f,_0x1c2cd7,_0x5c4983){return function(){return client[_0xb441('0x5')](_0xb441('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5d8e7f,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':'CmContact','as':_0xb441('0x13')}],'order':[['priority','DESC'],['scheduledat',_0x5c4983],['id','ASC']],'raw':!![],'limit':_0x1c2cd7},'log':_0xb441('0x14')});};};exports['moveContactManagedDialer']=function(_0x3a459f,_0x4b337c){return function(){_0x3a459f[_0xb441('0x15')]=_0x3a459f[_0xb441('0x16')];return client['Request'](_0xb441('0x17'),{'body':_0x3a459f,'options':{'where':{'ContactId':_0x3a459f[_0xb441('0xa')],'ListId':_0x3a459f[_0xb441('0xb')],'VoiceQueueId':_0x3a459f[_0xb441('0x18')],'CampaignId':_0x3a459f['CampaignId'],'active':_0x4b337c?undefined:!![]}},'log':_0xb441('0x17')});};};exports[_0xb441('0x19')]=function(_0x1a28d5){return function(){return client[_0xb441('0x5')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x1a28d5['id']?_0x1a28d5['id']||null:null}},'log':_0xb441('0x19')});};};exports[_0xb441('0x1a')]=function(_0x179acc){return function(){return client[_0xb441('0x5')]('GetCmHopperPreview',{'options':{'where':{'id':_0x179acc},'include':[{'model':_0xb441('0x4'),'as':'Contact'},{'model':_0xb441('0x1b'),'as':_0xb441('0x1c'),'attributes':['id',_0xb441('0x1d')]},{'model':_0xb441('0x1e'),'as':_0xb441('0x1f'),'attributes':['id',_0xb441('0x1d')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xb441('0x20')]=function(_0x507a38,_0x220170,_0x482340){return function(){return client[_0xb441('0x5')](_0xb441('0x6'),{'body':_0x507a38,'options':{'where':{'id':_0x220170},'limit':_0x482340},'log':_0xb441('0x6')});};};exports[_0xb441('0x21')]=function(_0x2ced1b,_0x10e478){return function(){return client[_0xb441('0x5')](_0xb441('0x22'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2ced1b,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xb441('0x7')](_0xb441('0x8'))},'UserId':{'$in':_0x10e478}},'order':[[_0xb441('0x23'),_0xb441('0x10')],['scheduledat',_0xb441('0x10')],['id','ASC']],'include':[{'model':_0xb441('0x4'),'as':_0xb441('0x13')},{'model':_0xb441('0x1b'),'as':_0xb441('0x1c'),'attributes':['id','name',_0xb441('0x24')]}],'group':_0xb441('0x25'),'raw':!![]},'log':_0xb441('0xf')});};};exports[_0xb441('0x26')]=function(_0x4d17a1,_0xf4361b){return client[_0xb441('0x5')](_0xb441('0x27'),{'body':_0x4d17a1,'options':_0xf4361b||{},'log':_0xb441('0x27')});};exports[_0xb441('0x28')]=function(_0xd1ac1a,_0x41585b,_0x404e66){return function(){return client[_0xb441('0x5')]('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0xd1ac1a,'interval':_0x41585b,'availableAgentsIds':_0x404e66}},'log':_0xb441('0x28')});};};
\ No newline at end of file
index f399a9c..baa984e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d4=['incrementPreviewCounters','IncrementPreviewCounters','moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones'];(function(_0x3412ab,_0x5a2b22){var _0x37ad1d=function(_0x46ef9b){while(--_0x46ef9b){_0x3412ab['push'](_0x3412ab['shift']());}};_0x37ad1d(++_0x5a2b22);}(_0x44d4,0x16a));var _0x444d=function(_0x1d3d1a,_0x2a3dde){_0x1d3d1a=_0x1d3d1a-0x0;var _0x4bc3ad=_0x44d4[_0x1d3d1a];return _0x4bc3ad;};'use strict';var client=require('../client');var moment=require(_0x444d('0x0'));exports[_0x444d('0x1')]=function(_0x444fbd,_0x5a264d,_0x31b0fa){return function(){return client[_0x444d('0x2')]('VerifyAdditionalPhones',{'body':_0x444fbd,'reason':_0x5a264d,'entity':_0x31b0fa,'log':_0x444d('0x3')});};};exports[_0x444d('0x4')]=function(_0x33d08d,_0x28d4c0,_0x4da1a6){return function(){return client[_0x444d('0x2')](_0x444d('0x5'),{'body':_0x33d08d,'duration':_0x28d4c0,'waitTime':_0x4da1a6,'log':_0x444d('0x5')});};};exports[_0x444d('0x6')]=function(_0x3b7442){return function(){return client[_0x444d('0x2')]('IncrementPreviewCounters',{'body':_0x3b7442,'log':_0x444d('0x7')});};};
\ No newline at end of file
+var _0xd70e=['SwapAdditionalPhones','IncrementPreviewCounters','moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones'];(function(_0x29a932,_0x734532){var _0x5b6749=function(_0x4d6820){while(--_0x4d6820){_0x29a932['push'](_0x29a932['shift']());}};_0x5b6749(++_0x734532);}(_0xd70e,0x19a));var _0xed70=function(_0x1d03fd,_0x5365b2){_0x1d03fd=_0x1d03fd-0x0;var _0x23a948=_0xd70e[_0x1d03fd];return _0x23a948;};'use strict';var client=require('../client');var moment=require(_0xed70('0x0'));exports[_0xed70('0x1')]=function(_0x443809,_0x2b74a4,_0x4a965b){return function(){return client[_0xed70('0x2')](_0xed70('0x3'),{'body':_0x443809,'reason':_0x2b74a4,'entity':_0x4a965b,'log':_0xed70('0x3')});};};exports['swapAdditionalPhones']=function(_0x1262aa,_0x1197a8,_0x3e4e94){return function(){return client[_0xed70('0x2')](_0xed70('0x4'),{'body':_0x1262aa,'duration':_0x1197a8,'waitTime':_0x3e4e94,'log':'SwapAdditionalPhones'});};};exports['incrementPreviewCounters']=function(_0x5f1e61){return function(){return client[_0xed70('0x2')](_0xed70('0x5'),{'body':_0x5f1e61,'log':_0xed70('0x5')});};};
\ No newline at end of file
index b494b91..6671b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfddc=['phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x4c6883,_0x17235e){var _0x5d9780=function(_0x76ef5f){while(--_0x76ef5f){_0x4c6883['push'](_0x4c6883['shift']());}};_0x5d9780(++_0x17235e);}(_0xfddc,0x12c));var _0xcfdd=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0xfddc[_0x44bcb0];return _0xfaf881;};'use strict';var client=require(_0xcfdd('0x0'));exports[_0xcfdd('0x1')]=function(_0x4de863){return function(){return client[_0xcfdd('0x2')](_0xcfdd('0x3'),{'options':{'where':{'VoiceQueueId':_0x4de863['VoiceQueueId'],'phone':_0x4de863[_0xcfdd('0x4')]},'raw':![]},'log':_0xcfdd('0x3')});};};exports[_0xcfdd('0x5')]=function(_0x7ef52a){return function(){return client[_0xcfdd('0x2')](_0xcfdd('0x3'),{'options':{'where':{'CampaignId':_0x7ef52a[_0xcfdd('0x6')],'phone':_0x7ef52a[_0xcfdd('0x4')]},'raw':![]},'log':_0xcfdd('0x7')});};};
\ No newline at end of file
+var _0x6f5c=['checkIsBlackListIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','phone'];(function(_0x592df4,_0x4e719b){var _0x3b4fe4=function(_0x5ebf53){while(--_0x5ebf53){_0x592df4['push'](_0x592df4['shift']());}};_0x3b4fe4(++_0x4e719b);}(_0x6f5c,0x197));var _0xc6f5=function(_0x4a30bb,_0x30ddfa){_0x4a30bb=_0x4a30bb-0x0;var _0x3b0a8f=_0x6f5c[_0x4a30bb];return _0x3b0a8f;};'use strict';var client=require(_0xc6f5('0x0'));exports[_0xc6f5('0x1')]=function(_0x5b0c68){return function(){return client[_0xc6f5('0x2')](_0xc6f5('0x3'),{'options':{'where':{'VoiceQueueId':_0x5b0c68[_0xc6f5('0x4')],'phone':_0x5b0c68[_0xc6f5('0x5')]},'raw':![]},'log':_0xc6f5('0x3')});};};exports[_0xc6f5('0x6')]=function(_0x19343a){return function(){return client[_0xc6f5('0x2')](_0xc6f5('0x3'),{'options':{'where':{'CampaignId':_0x19343a['CampaignId'],'phone':_0x19343a['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 674b1ed..f3e067e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b2=['Request','CreateCmHopperFinal','../client','queue'];(function(_0x57486e,_0x32283b){var _0x5f110b=function(_0xa18fc3){while(--_0xa18fc3){_0x57486e['push'](_0x57486e['shift']());}};_0x5f110b(++_0x32283b);}(_0x55b2,0x9e));var _0x255b=function(_0x44b94e,_0x46b00c){_0x44b94e=_0x44b94e-0x0;var _0x446fa6=_0x55b2[_0x44b94e];return _0x446fa6;};'use strict';var client=require(_0x255b('0x0'));exports['createContact']=function(_0x407cd0){return function(){_0x407cd0['campaign']=_0x407cd0[_0x255b('0x1')];return client[_0x255b('0x2')](_0x255b('0x3'),{'body':_0x407cd0,'log':_0x255b('0x3')});};};
\ No newline at end of file
+var _0xe019=['Request','CreateCmHopperFinal','../client','createContact'];(function(_0x849d6,_0x56fb89){var _0x2d882d=function(_0x26374e){while(--_0x26374e){_0x849d6['push'](_0x849d6['shift']());}};_0x2d882d(++_0x56fb89);}(_0xe019,0xb2));var _0x9e01=function(_0x321109,_0x167c33){_0x321109=_0x321109-0x0;var _0x5e1b35=_0xe019[_0x321109];return _0x5e1b35;};'use strict';var client=require(_0x9e01('0x0'));exports[_0x9e01('0x1')]=function(_0xc119f7){return function(){_0xc119f7['campaign']=_0xc119f7['queue'];return client[_0x9e01('0x2')](_0x9e01('0x3'),{'body':_0xc119f7,'log':_0x9e01('0x3')});};};
\ No newline at end of file
index 7a5b704..04a839f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf25b=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','GetCampaignHopperHistory','ivr','createHistory','campaign','queue','Request','CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xf25b,0x1a7));var _0xbf25=function(_0x5cf136,_0x11bee4){_0x5cf136=_0x5cf136-0x0;var _0x3515cb=_0xf25b[_0x5cf136];return _0x3515cb;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xbf25('0x0')]=function(_0x45b6b1){return function(){_0x45b6b1[_0xbf25('0x1')]=_0x45b6b1[_0xbf25('0x2')];return client[_0xbf25('0x3')](_0xbf25('0x4'),{'body':_0x45b6b1,'log':_0xbf25('0x4')});};};exports['avgHandleTime']=function(_0x5b8491){return function(){return client['Request'](_0xbf25('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0xbf25('0x6')](_0x5b8491,_0xbf25('0x7'))[_0xbf25('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xbf25('0x8')](_0xbf25('0x9'))]}},'raw':![]},'log':_0xbf25('0xa')});};};exports[_0xbf25('0xb')]=function(_0x41197e){return function(){return client[_0xbf25('0x3')](_0xbf25('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbf25('0xd')]('day')[_0xbf25('0x8')](_0xbf25('0x9')),moment()[_0xbf25('0xe')](_0xbf25('0xf'))['format'](_0xbf25('0x9'))]},'campaigntype':_0xbf25('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0x4ed4dd){return function(){return client['Request'](_0xbf25('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xbf25('0xd')](_0xbf25('0xf'))['format'](_0xbf25('0x9')),moment()['endOf'](_0xbf25('0xf'))[_0xbf25('0x8')](_0xbf25('0x9'))]},'campaigntype':_0xbf25('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0x963f=['Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','campaign','queue'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x963f,0x142));var _0xf963=function(_0x40eec9,_0x817a67){_0x40eec9=_0x40eec9-0x0;var _0xfee890=_0x963f[_0x40eec9];return _0xfee890;};'use strict';var client=require('../client');var moment=require('moment');exports['createHistory']=function(_0x56968b){return function(){_0x56968b[_0xf963('0x0')]=_0x56968b[_0xf963('0x1')];return client[_0xf963('0x2')]('CreateCmHopperHistory',{'body':_0x56968b,'log':_0xf963('0x3')});};};exports[_0xf963('0x4')]=function(_0x4d9490){return function(){return client[_0xf963('0x2')](_0xf963('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0xf963('0x6')](_0x4d9490,_0xf963('0x7'))[_0xf963('0x8')](_0xf963('0x9')),moment()[_0xf963('0x8')](_0xf963('0x9'))]}},'raw':![]},'log':_0xf963('0xa')});};};exports[_0xf963('0xb')]=function(_0x55aed3){return function(){return client['Request']('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xf963('0xc')](_0xf963('0xd'))['format'](_0xf963('0x9')),moment()[_0xf963('0xe')](_0xf963('0xd'))[_0xf963('0x8')](_0xf963('0x9'))]},'campaigntype':_0xf963('0x1')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0xf963('0xf')]=function(_0x438017){return function(){return client[_0xf963('0x2')](_0xf963('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xf963('0xc')](_0xf963('0xd'))['format'](_0xf963('0x9')),moment()[_0xf963('0xe')]('day')[_0xf963('0x8')](_0xf963('0x9'))]},'campaigntype':_0xf963('0x11')},'raw':![]},'log':_0xf963('0x10')});};};
\ No newline at end of file
index 9bbbecc..7715ca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb982=['faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','notify','NotifyFaxAccount','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x4c4cfc,_0x1d3496){var _0x179eeb=function(_0x24cafc){while(--_0x24cafc){_0x4c4cfc['push'](_0x4c4cfc['shift']());}};_0x179eeb(++_0x1d3496);}(_0xb982,0x15e));var _0x2b98=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb982[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports['getFaxAccounts']=function(){return function(){return client[_0x2b98('0x0')](_0x2b98('0x1'),{'options':{'raw':![],'attributes':['id',_0x2b98('0x2'),_0x2b98('0x3'),_0x2b98('0x4'),_0x2b98('0x5'),_0x2b98('0x6'),_0x2b98('0x7'),_0x2b98('0x8'),_0x2b98('0x9'),'gateway',_0x2b98('0xa'),_0x2b98('0xb'),_0x2b98('0xc'),_0x2b98('0xd'),_0x2b98('0xe'),_0x2b98('0xf')],'include':[{'model':'Trunk','as':_0x2b98('0x10'),'attributes':['id',_0x2b98('0x2'),'callerid',_0x2b98('0x11')]}]},'log':'getFaxAccount'});};};exports[_0x2b98('0x12')]=function(_0x17d985,_0x457b35){return client[_0x2b98('0x0')](_0x2b98('0x13'),{'account':{'id':_0x17d985},'body':_0x457b35,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x781d=['localstationid','minrate','maxrate','modem','gateway','faxdetect','tech','TrunkId','ListId','key','Trunk','callerid','active','notify','NotifyFaxAccount','../client','getFaxAccounts','name','description','ecm','headerinfo'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x781d,0x14a));var _0xd781=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x781d[_0x618414];return _0x21c19a;};'use strict';var client=require(_0xd781('0x0'));exports[_0xd781('0x1')]=function(){return function(){return client['Request']('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xd781('0x2'),_0xd781('0x3'),_0xd781('0x4'),_0xd781('0x5'),_0xd781('0x6'),_0xd781('0x7'),_0xd781('0x8'),_0xd781('0x9'),_0xd781('0xa'),_0xd781('0xb'),'t38timeout',_0xd781('0xc'),_0xd781('0xd'),_0xd781('0xe'),_0xd781('0xf')],'include':[{'model':'Trunk','as':_0xd781('0x10'),'attributes':['id','name',_0xd781('0x11'),_0xd781('0x12')]}]},'log':'getFaxAccount'});};};exports[_0xd781('0x13')]=function(_0x29c2a7,_0x4bf265){return client['Request'](_0xd781('0x14'),{'account':{'id':_0x29c2a7},'body':_0x4bf265,'log':_0xd781('0x14')});};
\ No newline at end of file
index 5cb08c1..abf673e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9eb=['update','Request','UpdateFaxMessage'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd9eb,0x138));var _0xbd9e=function(_0x2efa92,_0x2557f6){_0x2efa92=_0x2efa92-0x0;var _0x32704b=_0xd9eb[_0x2efa92];return _0x32704b;};'use strict';var client=require('../client');exports[_0xbd9e('0x0')]=function(_0x25028b,_0x220776){return client[_0xbd9e('0x1')](_0xbd9e('0x2'),{'body':_0x220776,'options':{'where':{'AttachmentId':_0x25028b}},'log':_0xbd9e('0x2')});};
\ No newline at end of file
+var _0x4f50=['UpdateFaxMessage','../client','Request'];(function(_0x302f51,_0x2f1075){var _0x41be77=function(_0xb76e27){while(--_0xb76e27){_0x302f51['push'](_0x302f51['shift']());}};_0x41be77(++_0x2f1075);}(_0x4f50,0x17e));var _0x04f5=function(_0x4ef77a,_0x53f37b){_0x4ef77a=_0x4ef77a-0x0;var _0x4c5df0=_0x4f50[_0x4ef77a];return _0x4c5df0;};'use strict';var client=require(_0x04f5('0x0'));exports['update']=function(_0x1d1f49,_0x2e1554){return client[_0x04f5('0x1')](_0x04f5('0x2'),{'body':_0x2e1554,'options':{'where':{'AttachmentId':_0x1d1f49}},'log':_0x04f5('0x2')});};
\ No newline at end of file
index 2f05478..11d9696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7630=['name','username','password','remoteUri','type','serverUrl','Configurations','DeskField','Subjects','content','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','Tag','Tags','../../client','getDeskAccounts','GetDeskAccount'];(function(_0x27bd71,_0x7b0074){var _0x161fe0=function(_0x258797){while(--_0x258797){_0x27bd71['push'](_0x27bd71['shift']());}};_0x161fe0(++_0x7b0074);}(_0x7630,0x147));var _0x0763=function(_0x133094,_0xff06b9){_0x133094=_0x133094-0x0;var _0x145c58=_0x7630[_0x133094];return _0x145c58;};'use strict';var client=require(_0x0763('0x0'));exports[_0x0763('0x1')]=function(){return function(_0x32bdcc){return client['Request'](_0x0763('0x2'),{'options':{'raw':![],'attributes':['id',_0x0763('0x3'),'description',_0x0763('0x4'),_0x0763('0x5'),_0x0763('0x6'),'authType',_0x0763('0x7'),_0x0763('0x8')],'include':[{'model':'DeskConfiguration','as':_0x0763('0x9'),'attributes':['id',_0x0763('0x3')],'include':[{'model':_0x0763('0xa'),'as':_0x0763('0xb'),'attributes':['id',_0x0763('0x7'),_0x0763('0xc'),'variableName'],'include':[{'model':_0x0763('0xd'),'as':_0x0763('0xd'),'attributes':['id','name']}]},{'model':_0x0763('0xa'),'as':_0x0763('0xe'),'attributes':['id',_0x0763('0x7'),'content','key',_0x0763('0xf'),_0x0763('0x10'),'variableName'],'include':[{'model':_0x0763('0xd'),'as':_0x0763('0xd'),'attributes':['id',_0x0763('0x3')]}]},{'model':'DeskField','as':_0x0763('0x11'),'attributes':['id','type',_0x0763('0xc'),_0x0763('0x12'),_0x0763('0x13'),'customField','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x0763('0x14'),'as':_0x0763('0x15'),'attributes':['id','name']}]}]},'log':_0x0763('0x2')});};};
\ No newline at end of file
+var _0x8909=['remoteUri','authType','serverUrl','DeskConfiguration','Configurations','name','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','type','idField','nameField','customField','getDeskAccounts','Request','GetDeskAccount','description','username','password'];(function(_0x11e345,_0x42b1fc){var _0x395404=function(_0x31e210){while(--_0x31e210){_0x11e345['push'](_0x11e345['shift']());}};_0x395404(++_0x42b1fc);}(_0x8909,0x77));var _0x9890=function(_0x4cf0b7,_0x560029){_0x4cf0b7=_0x4cf0b7-0x0;var _0x545f10=_0x8909[_0x4cf0b7];return _0x545f10;};'use strict';var client=require('../../client');exports[_0x9890('0x0')]=function(){return function(_0x535b30){return client[_0x9890('0x1')](_0x9890('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x9890('0x3'),_0x9890('0x4'),_0x9890('0x5'),_0x9890('0x6'),_0x9890('0x7'),'type',_0x9890('0x8')],'include':[{'model':_0x9890('0x9'),'as':_0x9890('0xa'),'attributes':['id',_0x9890('0xb')],'include':[{'model':_0x9890('0xc'),'as':_0x9890('0xd'),'attributes':['id','type',_0x9890('0xe'),_0x9890('0xf')],'include':[{'model':'Variable','as':_0x9890('0x10'),'attributes':['id',_0x9890('0xb')]}]},{'model':_0x9890('0xc'),'as':_0x9890('0x11'),'attributes':['id','type',_0x9890('0xe'),_0x9890('0x12'),_0x9890('0x13'),_0x9890('0x14'),_0x9890('0xf')],'include':[{'model':_0x9890('0x10'),'as':_0x9890('0x10'),'attributes':['id',_0x9890('0xb')]}]},{'model':_0x9890('0xc'),'as':'Fields','attributes':['id',_0x9890('0x15'),'content',_0x9890('0x16'),_0x9890('0x17'),_0x9890('0x18'),_0x9890('0xf')],'include':[{'model':_0x9890('0x10'),'as':_0x9890('0x10'),'attributes':['id',_0x9890('0xb')]}]},{'model':'Tag','as':'Tags','attributes':['id',_0x9890('0xb')]}]}]},'log':_0x9890('0x2')});};};
\ No newline at end of file
index c80c2ba..22be97f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea5b=['name','username','password','remoteUri','clientId','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','type','idField','nameField','customField','CloudProvider','data2','data7','GetDynamics365Account','../../client','getDynamics365Accounts'];(function(_0x172029,_0x1dcd88){var _0x1e53f2=function(_0x75b03b){while(--_0x75b03b){_0x172029['push'](_0x172029['shift']());}};_0x1e53f2(++_0x1dcd88);}(_0xea5b,0x152));var _0xbea5=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xea5b[_0x25e7cb];return _0x375d92;};'use strict';var client=require(_0xbea5('0x0'));exports[_0xbea5('0x1')]=function(){return function(_0x109666){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0xbea5('0x2'),_0xbea5('0x3'),_0xbea5('0x4'),_0xbea5('0x5'),'tenantId',_0xbea5('0x6'),'clientSecret',_0xbea5('0x7'),_0xbea5('0x8'),_0xbea5('0x9')],'include':[{'model':_0xbea5('0xa'),'as':_0xbea5('0xb'),'attributes':['id',_0xbea5('0x2'),_0xbea5('0xc'),_0xbea5('0xd'),_0xbea5('0xe'),_0xbea5('0xf')],'include':[{'model':_0xbea5('0x10'),'as':_0xbea5('0x11'),'attributes':['id','type','content',_0xbea5('0x12')],'include':[{'model':_0xbea5('0x13'),'as':_0xbea5('0x13'),'attributes':['id','name']}]},{'model':_0xbea5('0x10'),'as':_0xbea5('0x14'),'attributes':['id','type',_0xbea5('0x15'),_0xbea5('0x16'),_0xbea5('0x17'),_0xbea5('0x18'),'variableName'],'include':[{'model':'Variable','as':_0xbea5('0x13'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0xbea5('0x19'),'attributes':['id',_0xbea5('0x1a'),'content',_0xbea5('0x1b'),_0xbea5('0x1c'),_0xbea5('0x1d'),_0xbea5('0x12')],'include':[{'model':_0xbea5('0x13'),'as':_0xbea5('0x13'),'attributes':['id','name']}]}]},{'model':_0xbea5('0x1e'),'as':_0xbea5('0x1e'),'attributes':['id',_0xbea5('0x1f'),'data5',_0xbea5('0x20')]}]},'log':_0xbea5('0x21')});};};
\ No newline at end of file
+var _0xdc91=['Fields','idField','CloudProvider','data2','data5','data7','GetDynamics365Account','../../client','getDynamics365Accounts','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','name','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','variableName','Variable','Descriptions','content','keyType','keyContent'];(function(_0x474b25,_0x4c5a8e){var _0x550543=function(_0x27de7c){while(--_0x27de7c){_0x474b25['push'](_0x474b25['shift']());}};_0x550543(++_0x4c5a8e);}(_0xdc91,0x8b));var _0x1dc9=function(_0x1b9c0b,_0x3e93cc){_0x1b9c0b=_0x1b9c0b-0x0;var _0x5021a9=_0xdc91[_0x1b9c0b];return _0x5021a9;};'use strict';var client=require(_0x1dc9('0x0'));exports[_0x1dc9('0x1')]=function(){return function(_0x4a0b22){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id','name',_0x1dc9('0x2'),_0x1dc9('0x3'),_0x1dc9('0x4'),_0x1dc9('0x5'),_0x1dc9('0x6'),_0x1dc9('0x7'),_0x1dc9('0x8'),_0x1dc9('0x9'),'modernAuthentication'],'include':[{'model':_0x1dc9('0xa'),'as':_0x1dc9('0xb'),'attributes':['id',_0x1dc9('0xc'),_0x1dc9('0xd'),_0x1dc9('0xe'),_0x1dc9('0xf'),_0x1dc9('0x10')],'include':[{'model':_0x1dc9('0x11'),'as':_0x1dc9('0x12'),'attributes':['id',_0x1dc9('0x13'),'content',_0x1dc9('0x14')],'include':[{'model':'Variable','as':_0x1dc9('0x15'),'attributes':['id','name']}]},{'model':_0x1dc9('0x11'),'as':_0x1dc9('0x16'),'attributes':['id',_0x1dc9('0x13'),_0x1dc9('0x17'),'key',_0x1dc9('0x18'),_0x1dc9('0x19'),'variableName'],'include':[{'model':_0x1dc9('0x15'),'as':_0x1dc9('0x15'),'attributes':['id','name']}]},{'model':'Dynamics365Field','as':_0x1dc9('0x1a'),'attributes':['id',_0x1dc9('0x13'),_0x1dc9('0x17'),_0x1dc9('0x1b'),'nameField','customField',_0x1dc9('0x14')],'include':[{'model':_0x1dc9('0x15'),'as':'Variable','attributes':['id',_0x1dc9('0xc')]}]}]},{'model':_0x1dc9('0x1c'),'as':_0x1dc9('0x1c'),'attributes':['id',_0x1dc9('0x1d'),_0x1dc9('0x1e'),_0x1dc9('0x1f')]}]},'log':_0x1dc9('0x20')});};};
\ No newline at end of file
index ec3f9fa..9a6b7a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf60=['Fields','idField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','Subjects','type','variableName','Variable','key','FreshdeskField'];(function(_0x4ca9a3,_0x1305c5){var _0x2c9675=function(_0x464b18){while(--_0x464b18){_0x4ca9a3['push'](_0x4ca9a3['shift']());}};_0x2c9675(++_0x1305c5);}(_0xaf60,0x82));var _0x0af6=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xaf60[_0x2d8fc2];return _0x3a9e53;};'use strict';var client=require(_0x0af6('0x0'));exports[_0x0af6('0x1')]=function(){return function(_0x1d4941){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x0af6('0x2'),'username','apiKey',_0x0af6('0x3'),_0x0af6('0x4')],'include':[{'model':_0x0af6('0x5'),'as':_0x0af6('0x6'),'attributes':['id',_0x0af6('0x2')],'include':[{'model':_0x0af6('0x7'),'attributes':['id',_0x0af6('0x2')]},{'model':'FreshdeskField','as':_0x0af6('0x8'),'attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xa')],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xc'),'keyType','keyContent',_0x0af6('0xa')],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id','name']}]},{'model':_0x0af6('0xd'),'as':_0x0af6('0xe'),'attributes':['id',_0x0af6('0x9'),'content',_0x0af6('0xf'),'nameField',_0x0af6('0x10'),'variableName'],'include':[{'model':_0x0af6('0xb'),'as':_0x0af6('0xb'),'attributes':['id',_0x0af6('0x2')]}]}]}]},'log':_0x0af6('0x11')});};};
\ No newline at end of file
+var _0x60d7=['Fields','type','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request','name','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','content','variableName','Variable','Descriptions','key','keyContent'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0x60d7,0x139));var _0x760d=function(_0x2cce2d,_0x57a182){_0x2cce2d=_0x2cce2d-0x0;var _0x449768=_0x60d7[_0x2cce2d];return _0x449768;};'use strict';var client=require(_0x760d('0x0'));exports[_0x760d('0x1')]=function(){return function(_0x4dec65){return client[_0x760d('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x760d('0x3'),'username',_0x760d('0x4'),_0x760d('0x5'),_0x760d('0x6')],'include':[{'model':_0x760d('0x7'),'as':'Configurations','attributes':['id',_0x760d('0x3')],'include':[{'model':_0x760d('0x8'),'attributes':['id',_0x760d('0x3')]},{'model':_0x760d('0x9'),'as':_0x760d('0xa'),'attributes':['id','type',_0x760d('0xb'),_0x760d('0xc')],'include':[{'model':_0x760d('0xd'),'as':'Variable','attributes':['id',_0x760d('0x3')]}]},{'model':_0x760d('0x9'),'as':_0x760d('0xe'),'attributes':['id','type',_0x760d('0xb'),_0x760d('0xf'),'keyType',_0x760d('0x10'),_0x760d('0xc')],'include':[{'model':_0x760d('0xd'),'as':_0x760d('0xd'),'attributes':['id',_0x760d('0x3')]}]},{'model':_0x760d('0x9'),'as':_0x760d('0x11'),'attributes':['id',_0x760d('0x12'),_0x760d('0xb'),_0x760d('0x13'),_0x760d('0x14'),'customField',_0x760d('0xc')],'include':[{'model':'Variable','as':_0x760d('0xd'),'attributes':['id',_0x760d('0x3')]}]}]}]},'log':_0x760d('0x15')});};};
\ No newline at end of file
index d3a59c9..cca3d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8506=['Subjects','Variable','type','content','key','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8506,0xe8));var _0x6850=function(_0x51dd7e,_0x4efb8f){_0x51dd7e=_0x51dd7e-0x0;var _0xea7ed7=_0x8506[_0x51dd7e];return _0xea7ed7;};'use strict';var client=require('../../client');exports[_0x6850('0x0')]=function(){return function(_0x51d1a0){return client[_0x6850('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x6850('0x2'),'username',_0x6850('0x3'),_0x6850('0x4'),_0x6850('0x5')],'include':[{'model':'FreshsalesConfiguration','as':_0x6850('0x6'),'attributes':['id',_0x6850('0x2')],'include':[{'model':_0x6850('0x7'),'as':_0x6850('0x8'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x6850('0x9'),'as':_0x6850('0x9'),'attributes':['id',_0x6850('0x2')]}]},{'model':'FreshsalesField','as':'Descriptions','attributes':['id',_0x6850('0xa'),_0x6850('0xb'),_0x6850('0xc'),_0x6850('0xd'),_0x6850('0xe'),'variableName'],'include':[{'model':_0x6850('0x9'),'as':_0x6850('0x9'),'attributes':['id',_0x6850('0x2')]}]}]}]},'log':_0x6850('0xf')});};};
\ No newline at end of file
+var _0x292c=['../../client','Request','GetFreshsalesAccount','name','username','remoteUri','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','GetFreshsalesccount'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x292c,0x66));var _0xc292=function(_0x49c68e,_0x1c1673){_0x49c68e=_0x49c68e-0x0;var _0x33032b=_0x292c[_0x49c68e];return _0x33032b;};'use strict';var client=require(_0xc292('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x286dcb){return client[_0xc292('0x1')](_0xc292('0x2'),{'options':{'raw':![],'attributes':['id',_0xc292('0x3'),_0xc292('0x4'),'apiKey',_0xc292('0x5'),'serverUrl'],'include':[{'model':'FreshsalesConfiguration','as':_0xc292('0x6'),'attributes':['id',_0xc292('0x3')],'include':[{'model':_0xc292('0x7'),'as':_0xc292('0x8'),'attributes':['id',_0xc292('0x9'),_0xc292('0xa'),_0xc292('0xb')],'include':[{'model':_0xc292('0xc'),'as':_0xc292('0xc'),'attributes':['id',_0xc292('0x3')]}]},{'model':'FreshsalesField','as':_0xc292('0xd'),'attributes':['id',_0xc292('0x9'),_0xc292('0xa'),_0xc292('0xe'),_0xc292('0xf'),'keyContent',_0xc292('0xb')],'include':[{'model':_0xc292('0xc'),'as':_0xc292('0xc'),'attributes':['id',_0xc292('0x3')]}]}]}]},'log':_0xc292('0x10')});};};
\ No newline at end of file
index 7f50805..d0f2c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d29=['Request','GetSalesforceAccount','name','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','../../client','getSalesforceAccounts'];(function(_0x404eb4,_0xab6017){var _0xb52430=function(_0x5abf7e){while(--_0x5abf7e){_0x404eb4['push'](_0x404eb4['shift']());}};_0xb52430(++_0xab6017);}(_0x7d29,0x1a0));var _0x97d2=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x7d29[_0x465028];return _0xb783d4;};'use strict';var client=require(_0x97d2('0x0'));exports[_0x97d2('0x1')]=function(){return function(_0x3c118c){return client[_0x97d2('0x2')](_0x97d2('0x3'),{'options':{'raw':![],'attributes':['id',_0x97d2('0x4'),'username','password',_0x97d2('0x5'),_0x97d2('0x6'),_0x97d2('0x7'),_0x97d2('0x8'),_0x97d2('0x9'),_0x97d2('0xa')],'include':[{'model':_0x97d2('0xb'),'as':_0x97d2('0xc'),'attributes':['id',_0x97d2('0x4'),'moduleSearch',_0x97d2('0xd'),_0x97d2('0xe'),_0x97d2('0xf'),_0x97d2('0x10'),'additionalSearchContact',_0x97d2('0x11')],'include':[{'model':'SalesforceField','as':_0x97d2('0x12'),'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x97d2('0x4')]}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x97d2('0x13'),'as':_0x97d2('0x13'),'attributes':['id',_0x97d2('0x4')]}]},{'model':_0x97d2('0x14'),'as':_0x97d2('0x15'),'include':[{'model':_0x97d2('0x13'),'as':_0x97d2('0x13'),'attributes':['id',_0x97d2('0x4')]}]}]}]},'log':_0x97d2('0x3')});};};
\ No newline at end of file
+var _0xf7d2=['additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','../../client','getSalesforceAccounts','GetSalesforceAccount','name','clientId','clientSecret','securityToken','serverUrl','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','additionalSearchAccount'];(function(_0x5e745e,_0xde2931){var _0x122dab=function(_0xe396a5){while(--_0xe396a5){_0x5e745e['push'](_0x5e745e['shift']());}};_0x122dab(++_0xde2931);}(_0xf7d2,0x149));var _0x2f7d=function(_0x362d4c,_0x16f4cd){_0x362d4c=_0x362d4c-0x0;var _0x52a9a5=_0xf7d2[_0x362d4c];return _0x52a9a5;};'use strict';var client=require(_0x2f7d('0x0'));exports[_0x2f7d('0x1')]=function(){return function(_0x2de744){return client['Request'](_0x2f7d('0x2'),{'options':{'raw':![],'attributes':['id',_0x2f7d('0x3'),'username','password','remoteUri',_0x2f7d('0x4'),_0x2f7d('0x5'),_0x2f7d('0x6'),_0x2f7d('0x7'),'type'],'include':[{'model':_0x2f7d('0x8'),'as':_0x2f7d('0x9'),'attributes':['id',_0x2f7d('0x3'),_0x2f7d('0xa'),_0x2f7d('0xb'),'ticketType','leadId',_0x2f7d('0xc'),_0x2f7d('0xd'),_0x2f7d('0xe')],'include':[{'model':'SalesforceField','as':_0x2f7d('0xf'),'include':[{'model':_0x2f7d('0x10'),'as':_0x2f7d('0x10'),'attributes':['id',_0x2f7d('0x3')]}]},{'model':_0x2f7d('0x11'),'as':'Descriptions','include':[{'model':'Variable','as':_0x2f7d('0x10'),'attributes':['id',_0x2f7d('0x3')]}]},{'model':_0x2f7d('0x11'),'as':'Fields','include':[{'model':'Variable','as':_0x2f7d('0x10'),'attributes':['id',_0x2f7d('0x3')]}]}]}]},'log':_0x2f7d('0x2')});};};
\ No newline at end of file
index 8714919..2ae79a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['GetServicenowAccount','name','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','Subjects','content','type','keyType','keyContent','variableName','Variable','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts'];(function(_0x2181fc,_0x7283aa){var _0x315da1=function(_0x1df7ca){while(--_0x1df7ca){_0x2181fc['push'](_0x2181fc['shift']());}};_0x315da1(++_0x7283aa);}(_0x7a54,0x106));var _0x47a5=function(_0x47c5e9,_0x2430b3){_0x47c5e9=_0x47c5e9-0x0;var _0x1a2c57=_0x7a54[_0x47c5e9];return _0x1a2c57;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(_0x44b31e){return client['Request'](_0x47a5('0x2'),{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),'description',_0x47a5('0x4'),_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0x47a5('0x9'),'attributes':['id','name'],'include':[{'model':_0x47a5('0xa'),'as':_0x47a5('0xb'),'attributes':['id','type',_0x47a5('0xc'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0xa'),'as':'Descriptions','attributes':['id',_0x47a5('0xd'),'content','key',_0x47a5('0xe'),_0x47a5('0xf'),_0x47a5('0x10')],'include':[{'model':_0x47a5('0x11'),'as':_0x47a5('0x11'),'attributes':['id',_0x47a5('0x3')]}]},{'model':_0x47a5('0xa'),'as':'Fields','attributes':['id',_0x47a5('0xd'),_0x47a5('0xc'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x10')],'include':[{'model':_0x47a5('0x11'),'as':_0x47a5('0x11'),'attributes':['id','name']}]}]}]},'log':_0x47a5('0x15')});};};
\ No newline at end of file
+var _0xe2fe=['type','variableName','Variable','keyType','Fields','content','nameField','GetServicenowkAccount','../../client','Request','name','description','username','password','email','serverUrl','ServicenowConfiguration','ServicenowField'];(function(_0xf921e5,_0xcf5680){var _0x5a0f09=function(_0x40e25d){while(--_0x40e25d){_0xf921e5['push'](_0xf921e5['shift']());}};_0x5a0f09(++_0xcf5680);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xee2f('0x0'));exports['getServicenowAccounts']=function(){return function(_0x521787){return client[_0xee2f('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id',_0xee2f('0x2'),_0xee2f('0x3'),_0xee2f('0x4'),_0xee2f('0x5'),_0xee2f('0x6'),'remoteUri',_0xee2f('0x7')],'include':[{'model':_0xee2f('0x8'),'as':'Configurations','attributes':['id',_0xee2f('0x2')],'include':[{'model':_0xee2f('0x9'),'as':'Subjects','attributes':['id',_0xee2f('0xa'),'content',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':'Descriptions','attributes':['id','type','content','key',_0xee2f('0xd'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0xee2f('0xc'),'attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':_0xee2f('0xe'),'attributes':['id',_0xee2f('0xa'),_0xee2f('0xf'),'idField',_0xee2f('0x10'),'customField',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]}]}]},'log':_0xee2f('0x11')});};};
\ No newline at end of file
index c4ef6e0..291b218 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['Configurations','SugarcrmField','Subjects','variableName','Variable','Descriptions','type','key','keyType','Fields','content','idField','customField','../../client','GetSugarcrmAccount','name','username','password','remoteUri','serverUrl','SugarcrmConfiguration'];(function(_0x4289ed,_0x2c7b8f){var _0x2f5317=function(_0x2f6a2f){while(--_0x2f6a2f){_0x4289ed['push'](_0x4289ed['shift']());}};_0x2f5317(++_0x2c7b8f);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5b697a,_0x280202){_0x5b697a=_0x5b697a-0x0;var _0x5de43b=_0x0b0e[_0x5b697a];return _0x5de43b;};'use strict';var client=require(_0xe0b0('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0xc416e3){return client['Request'](_0xe0b0('0x1'),{'options':{'raw':![],'attributes':['id',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6')],'include':[{'model':_0xe0b0('0x7'),'as':_0xe0b0('0x8'),'attributes':['id',_0xe0b0('0x2')],'include':[{'model':_0xe0b0('0x9'),'as':_0xe0b0('0xa'),'attributes':['id','type','content',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]},{'model':'SugarcrmField','as':_0xe0b0('0xd'),'attributes':['id',_0xe0b0('0xe'),'content',_0xe0b0('0xf'),_0xe0b0('0x10'),'keyContent',_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id','name']}]},{'model':_0xe0b0('0x9'),'as':_0xe0b0('0x11'),'attributes':['id',_0xe0b0('0xe'),_0xe0b0('0x12'),_0xe0b0('0x13'),'nameField',_0xe0b0('0x14'),_0xe0b0('0xb')],'include':[{'model':_0xe0b0('0xc'),'as':_0xe0b0('0xc'),'attributes':['id',_0xe0b0('0x2')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
+var _0x1967=['serverUrl','SugarcrmConfiguration','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','remoteUri'];(function(_0x1ced9b,_0x587b87){var _0x361833=function(_0x35ddab){while(--_0x35ddab){_0x1ced9b['push'](_0x1ced9b['shift']());}};_0x361833(++_0x587b87);}(_0x1967,0x173));var _0x7196=function(_0x41b1b5,_0x260cd5){_0x41b1b5=_0x41b1b5-0x0;var _0x295473=_0x1967[_0x41b1b5];return _0x295473;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7')],'include':[{'model':_0x7196('0x8'),'as':'Configurations','attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0xd')],'include':[{'model':'Variable','as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0xb'),'content','key',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0x12'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0x13'),'nameField',_0x7196('0x14'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x2')});};};
\ No newline at end of file
index ef5af3f..9a995c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa153=['content','Descriptions','key','keyType','keyContent','Variable','Fields','idField','nameField','customField','variableName','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type'];(function(_0x1c8db6,_0xdfd4dd){var _0x6a9e82=function(_0x1d30cc){while(--_0x1d30cc){_0x1c8db6['push'](_0x1c8db6['shift']());}};_0x6a9e82(++_0xdfd4dd);}(_0xa153,0x1eb));var _0x3a15=function(_0x459566,_0x1695f5){_0x459566=_0x459566-0x0;var _0x3db1ea=_0xa153[_0x459566];return _0x3db1ea;};'use strict';var client=require('../../client');exports[_0x3a15('0x0')]=function(){return function(_0xc597d2){return client[_0x3a15('0x1')](_0x3a15('0x2'),{'options':{'raw':![],'attributes':['id',_0x3a15('0x3'),_0x3a15('0x4'),'username',_0x3a15('0x5'),_0x3a15('0x6'),_0x3a15('0x7')],'include':[{'model':_0x3a15('0x8'),'as':_0x3a15('0x9'),'attributes':['id',_0x3a15('0x3')],'include':[{'model':_0x3a15('0xa'),'as':_0x3a15('0xb'),'attributes':['id',_0x3a15('0xc'),_0x3a15('0xd'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x3a15('0x3')]}]},{'model':'VtigerField','as':_0x3a15('0xe'),'attributes':['id',_0x3a15('0xc'),_0x3a15('0xd'),_0x3a15('0xf'),_0x3a15('0x10'),_0x3a15('0x11'),'variableName'],'include':[{'model':_0x3a15('0x12'),'as':_0x3a15('0x12'),'attributes':['id',_0x3a15('0x3')]}]},{'model':'VtigerField','as':_0x3a15('0x13'),'attributes':['id','type',_0x3a15('0xd'),_0x3a15('0x14'),_0x3a15('0x15'),_0x3a15('0x16'),_0x3a15('0x17')],'include':[{'model':_0x3a15('0x12'),'as':'Variable','attributes':['id',_0x3a15('0x3')]}]}]}]},'log':_0x3a15('0x2')});};};
\ No newline at end of file
+var _0xee60=['VtigerConfiguration','VtigerField','Subjects','type','variableName','Variable','Descriptions','content','key','keyContent','Fields','idField','nameField','customField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','username','accessKey','serverUrl'];(function(_0x2fdce0,_0x496242){var _0x36f07e=function(_0x44c8c6){while(--_0x44c8c6){_0x2fdce0['push'](_0x2fdce0['shift']());}};_0x36f07e(++_0x496242);}(_0xee60,0x12d));var _0x0ee6=function(_0x294f27,_0x5ac9d5){_0x294f27=_0x294f27-0x0;var _0x4c567f=_0xee60[_0x294f27];return _0x4c567f;};'use strict';var client=require(_0x0ee6('0x0'));exports[_0x0ee6('0x1')]=function(){return function(_0x3e8921){return client[_0x0ee6('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x0ee6('0x3'),'description',_0x0ee6('0x4'),_0x0ee6('0x5'),'remoteUri',_0x0ee6('0x6')],'include':[{'model':_0x0ee6('0x7'),'as':'Configurations','attributes':['id',_0x0ee6('0x3')],'include':[{'model':_0x0ee6('0x8'),'as':_0x0ee6('0x9'),'attributes':['id',_0x0ee6('0xa'),'content',_0x0ee6('0xb')],'include':[{'model':_0x0ee6('0xc'),'as':_0x0ee6('0xc'),'attributes':['id',_0x0ee6('0x3')]}]},{'model':_0x0ee6('0x8'),'as':_0x0ee6('0xd'),'attributes':['id',_0x0ee6('0xa'),_0x0ee6('0xe'),_0x0ee6('0xf'),'keyType',_0x0ee6('0x10'),_0x0ee6('0xb')],'include':[{'model':'Variable','as':_0x0ee6('0xc'),'attributes':['id',_0x0ee6('0x3')]}]},{'model':'VtigerField','as':_0x0ee6('0x11'),'attributes':['id',_0x0ee6('0xa'),_0x0ee6('0xe'),_0x0ee6('0x12'),_0x0ee6('0x13'),_0x0ee6('0x14'),'variableName'],'include':[{'model':'Variable','as':_0x0ee6('0xc'),'attributes':['id','name']}]}]}]},'log':_0x0ee6('0x15')});};};
\ No newline at end of file
index 797930f..ed5ae69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc740=['Descriptions','content','keyContent','Fields','customField','getZendeskAccounts','Request','GetZendeskAccount','name','username','remoteUri','authType','type','ZendeskConfiguration','Configurations','ZendeskField','Subjects','variableName','Variable'];(function(_0x1e3f9c,_0x285279){var _0x1d053e=function(_0x3792e2){while(--_0x3792e2){_0x1e3f9c['push'](_0x1e3f9c['shift']());}};_0x1d053e(++_0x285279);}(_0xc740,0x8a));var _0x0c74=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc740[_0x1facfa];return _0x9ec701;};'use strict';var client=require('../../client');exports[_0x0c74('0x0')]=function(){return function(_0xfaec0f){return client[_0x0c74('0x1')](_0x0c74('0x2'),{'options':{'raw':![],'attributes':['id',_0x0c74('0x3'),_0x0c74('0x4'),'password','token',_0x0c74('0x5'),_0x0c74('0x6'),'serverUrl',_0x0c74('0x7')],'include':[{'model':_0x0c74('0x8'),'as':_0x0c74('0x9'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0x0c74('0x3')]},{'model':_0x0c74('0xa'),'as':_0x0c74('0xb'),'attributes':['id','type','content',_0x0c74('0xc')],'include':[{'model':_0x0c74('0xd'),'as':_0x0c74('0xd'),'attributes':['id',_0x0c74('0x3')]}]},{'model':_0x0c74('0xa'),'as':_0x0c74('0xe'),'attributes':['id',_0x0c74('0x7'),_0x0c74('0xf'),'key','keyType',_0x0c74('0x10'),_0x0c74('0xc')],'include':[{'model':_0x0c74('0xd'),'as':_0x0c74('0xd'),'attributes':['id',_0x0c74('0x3')]}]},{'model':'ZendeskField','as':_0x0c74('0x11'),'attributes':['id',_0x0c74('0x7'),_0x0c74('0xf'),'idField','nameField',_0x0c74('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x0c74('0x3')]}]}]}]},'log':_0x0c74('0x2')});};};
\ No newline at end of file
+var _0x90cc=['token','remoteUri','authType','ZendeskConfiguration','ZendeskField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','variableName','Fields','idField','nameField','../../client','getZendeskAccounts','GetZendeskAccount','name','username','password'];(function(_0x4c03b4,_0x1b9235){var _0x180aae=function(_0x348128){while(--_0x348128){_0x4c03b4['push'](_0x4c03b4['shift']());}};_0x180aae(++_0x1b9235);}(_0x90cc,0x68));var _0xc90c=function(_0x37569e,_0x281ce8){_0x37569e=_0x37569e-0x0;var _0x261b7b=_0x90cc[_0x37569e];return _0x261b7b;};'use strict';var client=require(_0xc90c('0x0'));exports[_0xc90c('0x1')]=function(){return function(_0x1e38f0){return client['Request'](_0xc90c('0x2'),{'options':{'raw':![],'attributes':['id',_0xc90c('0x3'),_0xc90c('0x4'),_0xc90c('0x5'),_0xc90c('0x6'),_0xc90c('0x7'),_0xc90c('0x8'),'serverUrl','type'],'include':[{'model':_0xc90c('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0xc90c('0xa'),'as':_0xc90c('0xb'),'attributes':['id',_0xc90c('0xc'),_0xc90c('0xd'),'variableName'],'include':[{'model':_0xc90c('0xe'),'as':_0xc90c('0xe'),'attributes':['id',_0xc90c('0x3')]}]},{'model':_0xc90c('0xa'),'as':_0xc90c('0xf'),'attributes':['id',_0xc90c('0xc'),_0xc90c('0xd'),'key',_0xc90c('0x10'),_0xc90c('0x11'),_0xc90c('0x12')],'include':[{'model':_0xc90c('0xe'),'as':_0xc90c('0xe'),'attributes':['id','name']}]},{'model':'ZendeskField','as':_0xc90c('0x13'),'attributes':['id',_0xc90c('0xc'),_0xc90c('0xd'),_0xc90c('0x14'),_0xc90c('0x15'),'customField',_0xc90c('0x12')],'include':[{'model':_0xc90c('0xe'),'as':_0xc90c('0xe'),'attributes':['id',_0xc90c('0x3')]}]}]}]},'log':_0xc90c('0x2')});};};
\ No newline at end of file
index cb6f26b..cae6326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7155=['serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','description','type','content','variableName','Variable','Descriptions','key','keyContent','ZohoField','Fields','idField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host','zone','clientId','clientSecret'];(function(_0x3a0863,_0x4cd5ef){var _0x85c557=function(_0x3011cb){while(--_0x3011cb){_0x3a0863['push'](_0x3a0863['shift']());}};_0x85c557(++_0x4cd5ef);}(_0x7155,0x120));var _0x5715=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7155[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x5715('0x0'));exports[_0x5715('0x1')]=function(){return function(_0x2a6ef4){return client[_0x5715('0x2')](_0x5715('0x3'),{'options':{'raw':![],'attributes':['id',_0x5715('0x4'),'description',_0x5715('0x5'),_0x5715('0x6'),_0x5715('0x7'),_0x5715('0x8'),_0x5715('0x9'),'code',_0x5715('0xa')],'include':[{'model':_0x5715('0xb'),'as':_0x5715('0xc'),'attributes':['id',_0x5715('0x4'),_0x5715('0xd'),_0x5715('0xe'),_0x5715('0xf')],'include':[{'model':'ZohoField','as':'Subjects','attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x12')],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id',_0x5715('0x4')]}]},{'model':'ZohoField','as':_0x5715('0x14'),'attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x15'),'keyType',_0x5715('0x16'),_0x5715('0x12')],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id',_0x5715('0x4')]}]},{'model':_0x5715('0x17'),'as':_0x5715('0x18'),'attributes':['id',_0x5715('0x10'),_0x5715('0x11'),_0x5715('0x19'),'nameField',_0x5715('0x1a'),'variableName'],'include':[{'model':_0x5715('0x13'),'as':_0x5715('0x13'),'attributes':['id','name']}]}]}]},'log':_0x5715('0x3')});};};
\ No newline at end of file
+var _0x4ebe=['keyContent','Fields','idField','customField','Request','GetZohoAccount','description','host','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','name','key'];(function(_0x15af2f,_0x3c0a01){var _0x359239=function(_0x20da30){while(--_0x20da30){_0x15af2f['push'](_0x15af2f['shift']());}};_0x359239(++_0x3c0a01);}(_0x4ebe,0x9a));var _0xe4eb=function(_0x468edb,_0x5d12be){_0x468edb=_0x468edb-0x0;var _0x223b51=_0x4ebe[_0x468edb];return _0x223b51;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0x1b0f56){return client[_0xe4eb('0x0')](_0xe4eb('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xe4eb('0x2'),_0xe4eb('0x3'),'zone',_0xe4eb('0x4'),_0xe4eb('0x5'),_0xe4eb('0x6'),_0xe4eb('0x7'),_0xe4eb('0x8')],'include':[{'model':_0xe4eb('0x9'),'as':_0xe4eb('0xa'),'attributes':['id','name',_0xe4eb('0xb'),_0xe4eb('0xc'),_0xe4eb('0x2')],'include':[{'model':_0xe4eb('0xd'),'as':_0xe4eb('0xe'),'attributes':['id',_0xe4eb('0xf'),_0xe4eb('0x10'),_0xe4eb('0x11')],'include':[{'model':_0xe4eb('0x12'),'as':_0xe4eb('0x12'),'attributes':['id',_0xe4eb('0x13')]}]},{'model':_0xe4eb('0xd'),'as':'Descriptions','attributes':['id','type',_0xe4eb('0x10'),_0xe4eb('0x14'),'keyType',_0xe4eb('0x15'),'variableName'],'include':[{'model':_0xe4eb('0x12'),'as':_0xe4eb('0x12'),'attributes':['id',_0xe4eb('0x13')]}]},{'model':_0xe4eb('0xd'),'as':_0xe4eb('0x16'),'attributes':['id',_0xe4eb('0xf'),'content',_0xe4eb('0x17'),'nameField',_0xe4eb('0x18'),_0xe4eb('0x11')],'include':[{'model':_0xe4eb('0x12'),'as':_0xe4eb('0x12'),'attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 48eb9cf..356669f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa3=['accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','voice','membername','starttime','endtime','diff','outbound','lodash','util','voiceQueueReport','queuecallercompleteAt','Request','interface','format','SIP/%s','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x7fa3,0x1bb));var _0x37fa=function(_0x4d093a,_0x15d59c){_0x4d093a=_0x4d093a-0x0;var _0x5d7227=_0x7fa3[_0x4d093a];return _0x5d7227;};'use strict';var moment=require('moment');var _=require(_0x37fa('0x0'));var util=require(_0x37fa('0x1'));var client=require('../client');exports[_0x37fa('0x2')]=function(_0x400bfc){var _0x1cdaf4=_0x400bfc[_0x37fa('0x3')]||_0x400bfc['queuecallerexitAt'];return client[_0x37fa('0x4')]('CreateMemberReport',{'body':{'channel':'voice','membername':_0x400bfc['lastAssignedTo'],'interface':_['isNil'](_0x400bfc[_0x37fa('0x5')])?util[_0x37fa('0x6')](_0x37fa('0x7'),_0x400bfc['lastAssignedTo']):_0x400bfc[_0x37fa('0x5')],'type':_0x37fa('0x8'),'enterAt':_0x400bfc[_0x37fa('0x9')],'exitAt':_0x1cdaf4,'duration':moment(_0x1cdaf4)['diff'](_0x400bfc[_0x37fa('0x9')],_0x37fa('0xa')),'data1':_0x37fa('0xb'),'data2':_0x400bfc[_0x37fa('0xc')],'data3':_0x400bfc[_0x37fa('0xd')],'data4':null,'data5':_0x400bfc[_0x37fa('0xe')],'role':_0x37fa('0xf'),'internal':_0x400bfc[_0x37fa('0x10')]?_[_0x37fa('0x11')](_0x400bfc[_0x37fa('0x10')]):undefined,'uniqueid':_0x400bfc[_0x37fa('0x12')]},'log':_0x37fa('0x13')});};exports[_0x37fa('0x14')]=function(_0x32885d){return client['Request'](_0x37fa('0x13'),{'body':{'channel':_0x37fa('0x15'),'membername':_0x32885d[_0x37fa('0x16')],'interface':_0x32885d[_0x37fa('0x5')],'type':_0x37fa('0x8'),'enterAt':_0x32885d[_0x37fa('0x17')],'exitAt':_0x32885d[_0x37fa('0x18')],'duration':moment(_0x32885d[_0x37fa('0x18')])[_0x37fa('0x19')](_0x32885d[_0x37fa('0x17')],_0x37fa('0xa'))>=0x0?moment(_0x32885d[_0x37fa('0x18')])[_0x37fa('0x19')](_0x32885d[_0x37fa('0x17')],_0x37fa('0xa')):null,'data1':_0x37fa('0x1a'),'data2':_0x32885d['accountcode'],'data3':_0x32885d[_0x37fa('0xd')],'data4':_0x32885d['dialstring']||null,'role':_0x37fa('0xf'),'internal':_0x32885d[_0x37fa('0x10')]?_['toNumber'](_0x32885d['accountcode']):undefined,'uniqueid':_0x32885d[_0x37fa('0x12')]},'log':_0x37fa('0x13')});};
\ No newline at end of file
+var _0x345d=['format','SIP/%s','diff','queuecallerleaveAt','seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voice','membername','starttime','endtime','outbound','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface'];(function(_0x3fe393,_0x234a3a){var _0x534d14=function(_0x277fab){while(--_0x277fab){_0x3fe393['push'](_0x3fe393['shift']());}};_0x534d14(++_0x234a3a);}(_0x345d,0x16e));var _0xd345=function(_0x278ca8,_0x38bd88){_0x278ca8=_0x278ca8-0x0;var _0x150664=_0x345d[_0x278ca8];return _0x150664;};'use strict';var moment=require('moment');var _=require(_0xd345('0x0'));var util=require(_0xd345('0x1'));var client=require(_0xd345('0x2'));exports[_0xd345('0x3')]=function(_0x48c594){var _0x362812=_0x48c594[_0xd345('0x4')]||_0x48c594[_0xd345('0x5')];return client[_0xd345('0x6')](_0xd345('0x7'),{'body':{'channel':'voice','membername':_0x48c594[_0xd345('0x8')],'interface':_[_0xd345('0x9')](_0x48c594[_0xd345('0xa')])?util[_0xd345('0xb')](_0xd345('0xc'),_0x48c594[_0xd345('0x8')]):_0x48c594[_0xd345('0xa')],'type':'TALKING','enterAt':_0x48c594['queuecallerleaveAt'],'exitAt':_0x362812,'duration':moment(_0x362812)[_0xd345('0xd')](_0x48c594[_0xd345('0xe')],_0xd345('0xf')),'data1':_0xd345('0x10'),'data2':_0x48c594[_0xd345('0x11')],'data3':_0x48c594[_0xd345('0x12')],'data4':null,'data5':_0x48c594[_0xd345('0x13')],'role':_0xd345('0x14'),'internal':_0x48c594[_0xd345('0x15')]?_[_0xd345('0x16')](_0x48c594['accountcode']):undefined,'uniqueid':_0x48c594[_0xd345('0x17')]},'log':_0xd345('0x7')});};exports['voiceDialReport']=function(_0x1258fb){return client['Request'](_0xd345('0x7'),{'body':{'channel':_0xd345('0x18'),'membername':_0x1258fb[_0xd345('0x19')],'interface':_0x1258fb['interface'],'type':'TALKING','enterAt':_0x1258fb[_0xd345('0x1a')],'exitAt':_0x1258fb[_0xd345('0x1b')],'duration':moment(_0x1258fb[_0xd345('0x1b')])[_0xd345('0xd')](_0x1258fb[_0xd345('0x1a')],'seconds')>=0x0?moment(_0x1258fb['endtime'])[_0xd345('0xd')](_0x1258fb['starttime'],_0xd345('0xf')):null,'data1':_0xd345('0x1c'),'data2':_0x1258fb['accountcode'],'data3':_0x1258fb[_0xd345('0x12')],'data4':_0x1258fb['dialstring']||null,'role':_0xd345('0x14'),'internal':_0x1258fb[_0xd345('0x15')]?_[_0xd345('0x16')](_0x1258fb['accountcode']):undefined,'uniqueid':_0x1258fb[_0xd345('0x17')]},'log':_0xd345('0x7')});};
\ No newline at end of file
index 751cc05..673b630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae4=['../client','getSettings','Request','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ae4,0x114));var _0x41ae=function(_0xd10368,_0x135e59){_0xd10368=_0xd10368-0x0;var _0x3a5f7f=_0x1ae4[_0xd10368];return _0x3a5f7f;};'use strict';var client=require(_0x41ae('0x0'));exports[_0x41ae('0x1')]=function(){return client[_0x41ae('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x41ae('0x3'),_0x41ae('0x4')]},'log':_0x41ae('0x5')});};
\ No newline at end of file
+var _0x988c=['previewRecallmeReminderInterval','GetSettings','../client','stopRecordingOnTransfer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x988c,0x19e));var _0xc988=function(_0xe19f35,_0x4d0c17){_0xe19f35=_0xe19f35-0x0;var _0x37fa28=_0x988c[_0xe19f35];return _0x37fa28;};'use strict';var client=require(_0xc988('0x0'));exports['getSettings']=function(){return client['Request']('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xc988('0x1'),_0xc988('0x2')]},'log':_0xc988('0x3')});};
\ No newline at end of file
index 5a56cd4..3b33030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bb=['../client','GetTemplate','html'];(function(_0x5df6c2,_0x35ee27){var _0x25f862=function(_0x330afd){while(--_0x330afd){_0x5df6c2['push'](_0x5df6c2['shift']());}};_0x25f862(++_0x35ee27);}(_0x39bb,0x1e3));var _0xb39b=function(_0x1ad5a2,_0x45632b){_0x1ad5a2=_0x1ad5a2-0x0;var _0x51eba3=_0x39bb[_0x1ad5a2];return _0x51eba3;};'use strict';var client=require(_0xb39b('0x0'));exports['getTemplates']=function(_0x3b37f6){return function(_0x1c5a24){return client['Request'](_0xb39b('0x1'),{'options':{'raw':!![],'attributes':['id','name',_0xb39b('0x2')]},'log':_0xb39b('0x1')});};};
\ No newline at end of file
+var _0x9584=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x4d6386,_0x2a867e){var _0x6e866d=function(_0x359a74){while(--_0x359a74){_0x4d6386['push'](_0x4d6386['shift']());}};_0x6e866d(++_0x2a867e);}(_0x9584,0x1b9));var _0x4958=function(_0x53d174,_0x77cfee){_0x53d174=_0x53d174-0x0;var _0xec498e=_0x9584[_0x53d174];return _0xec498e;};'use strict';var client=require(_0x4958('0x0'));exports[_0x4958('0x1')]=function(_0xb9fc4d){return function(_0x5851f9){return client[_0x4958('0x2')](_0x4958('0x3'),{'options':{'raw':!![],'attributes':['id',_0x4958('0x4'),'html']},'log':_0x4958('0x3')});};};
\ No newline at end of file
index 85715dc..33c6d7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e8=['AnyConditions','field','operator','Action','Actions','data2','data3','data5','data6','data7','../client','GetTrigger','name','channel','Condition','value'];(function(_0x4c9369,_0x245b7c){var _0x3d7328=function(_0xbd5f71){while(--_0xbd5f71){_0x4c9369['push'](_0x4c9369['shift']());}};_0x3d7328(++_0x245b7c);}(_0x12e8,0xda));var _0x812e=function(_0x400cb3,_0x575f45){_0x400cb3=_0x400cb3-0x0;var _0x14b4db=_0x12e8[_0x400cb3];return _0x14b4db;};'use strict';var client=require(_0x812e('0x0'));exports['getTriggers']=function(_0x300b6e){return function(_0x1920b8){return client['Request'](_0x812e('0x1'),{'options':{'raw':![],'attributes':['id',_0x812e('0x2'),_0x812e('0x3'),'status'],'include':[{'model':_0x812e('0x4'),'as':'AllConditions','attributes':['id','field','operator',_0x812e('0x5')]},{'model':_0x812e('0x4'),'as':_0x812e('0x6'),'attributes':['id',_0x812e('0x7'),_0x812e('0x8'),_0x812e('0x5')]},{'model':_0x812e('0x9'),'as':_0x812e('0xa'),'attributes':['id','action','data1',_0x812e('0xb'),_0x812e('0xc'),'data4',_0x812e('0xd'),_0x812e('0xe'),_0x812e('0xf')]}]},'log':_0x812e('0x1')});};};
\ No newline at end of file
+var _0x61de=['name','channel','status','AllConditions','value','Condition','AnyConditions','field','operator','Action','Actions','data1','data2','data4','data6','data7','../client','getTriggers','Request','GetTrigger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x61de,0x150));var _0xe61d=function(_0x5834bc,_0x3d4801){_0x5834bc=_0x5834bc-0x0;var _0x3e183a=_0x61de[_0x5834bc];return _0x3e183a;};'use strict';var client=require(_0xe61d('0x0'));exports[_0xe61d('0x1')]=function(_0x136b36){return function(_0x5e7cc3){return client[_0xe61d('0x2')](_0xe61d('0x3'),{'options':{'raw':![],'attributes':['id',_0xe61d('0x4'),_0xe61d('0x5'),_0xe61d('0x6')],'include':[{'model':'Condition','as':_0xe61d('0x7'),'attributes':['id','field','operator',_0xe61d('0x8')]},{'model':_0xe61d('0x9'),'as':_0xe61d('0xa'),'attributes':['id',_0xe61d('0xb'),_0xe61d('0xc'),_0xe61d('0x8')]},{'model':_0xe61d('0xd'),'as':_0xe61d('0xe'),'attributes':['id','action',_0xe61d('0xf'),_0xe61d('0x10'),'data3',_0xe61d('0x11'),'data5',_0xe61d('0x12'),_0xe61d('0x13')]}]},'log':_0xe61d('0x3')});};};
\ No newline at end of file
index 39d6d6f..c8be270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1974=['GetTrunk','registry','defaultuser','Request'];(function(_0x4b9d59,_0x910c53){var _0x2426ba=function(_0x25bae3){while(--_0x25bae3){_0x4b9d59['push'](_0x4b9d59['shift']());}};_0x2426ba(++_0x910c53);}(_0x1974,0x1d3));var _0x4197=function(_0x1857a5,_0x4230de){_0x1857a5=_0x1857a5-0x0;var _0xe7eac7=_0x1974[_0x1857a5];return _0xe7eac7;};'use strict';var client=require('../client');exports['getTrunks']=function(_0x39d74e){return function(_0x503ae1){return client[_0x4197('0x0')](_0x4197('0x1'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x4197('0x2'),_0x4197('0x3')]},'log':_0x4197('0x1')});};};
\ No newline at end of file
+var _0xadec=['defaultuser','GetTrunk','../client','getTrunks','Request'];(function(_0xb6e2ea,_0x3b26e9){var _0x2a57bb=function(_0x2a1ac9){while(--_0x2a1ac9){_0xb6e2ea['push'](_0xb6e2ea['shift']());}};_0x2a57bb(++_0x3b26e9);}(_0xadec,0x156));var _0xcade=function(_0x1aebd9,_0x1c3753){_0x1aebd9=_0x1aebd9-0x0;var _0x5ea729=_0xadec[_0x1aebd9];return _0x5ea729;};'use strict';var client=require(_0xcade('0x0'));exports[_0xcade('0x1')]=function(_0x11d900){return function(_0x210817){return client[_0xcade('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0xcade('0x3')]},'log':_0xcade('0x4')});};};
\ No newline at end of file
index 194985e..70e7729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../client','getAgents','Request','GetUser','name','email','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','mobile','interface','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser','agent','lastPauseAt'];(function(_0x10d0bf,_0x5f3acb){var _0x2dabd4=function(_0x288ab9){while(--_0x288ab9){_0x10d0bf['push'](_0x10d0bf['shift']());}};_0x2dabd4(++_0x5f3acb);}(_0x34e8,0x12c));var _0x834e=function(_0x19d2de,_0x17241c){_0x19d2de=_0x19d2de-0x0;var _0x5c2ece=_0x34e8[_0x19d2de];return _0x5c2ece;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6'),_0x834e('0x7'),_0x834e('0x8'),_0x834e('0x9'),_0x834e('0xa'),'lastPauseAt',_0x834e('0xb'),'phone',_0x834e('0xc'),_0x834e('0xd')]},'log':_0x834e('0x1')});};};exports[_0x834e('0xe')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':!![],'where':{'role':_0x834e('0xf')},'attributes':['id',_0x834e('0x4'),_0x834e('0x6'),_0x834e('0x10')]},'log':_0x834e('0xe')});};};exports[_0x834e('0x11')]=function(_0x14038b,_0x2e1a37,_0x293514){return client[_0x834e('0x2')](_0x834e('0x12'),{'body':{'type':_0x2e1a37,'uniqueid':_0x293514},'options':{'where':{'id':_0x14038b['id']}},'log':'savePause'});};exports[_0x834e('0x13')]=function(_0x6cd9b9){return client['Request'](_0x834e('0x14'),{'body':{},'options':{'where':{'id':_0x6cd9b9['id']}},'log':_0x834e('0x11')});};exports[_0x834e('0x15')]=function(_0x21cc0a){return client['Request'](_0x834e('0x16'),{'options':{'raw':![],'where':{'role':_0x834e('0x17'),'id':_0x21cc0a},'attributes':['id','name',_0x834e('0x5'),'accountcode',_0x834e('0x7'),_0x834e('0x8'),'lastLoginAt',_0x834e('0xa'),_0x834e('0x18'),_0x834e('0xb'),'interface']},'log':_0x834e('0x15')});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe706,0xa3));var _0x6e70=function(_0x3c4e48,_0x43a5eb){_0x3c4e48=_0x3c4e48-0x0;var _0x37fd7e=_0xe706[_0x3c4e48];return _0x37fd7e;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 56bd349..3013e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ea=['../client','create','Request','CreateVoiceAgentReport','UpdateVoiceAgentReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa4ea,0x1d6));var _0xaa4e=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xa4ea[_0x1e3c16];return _0x47a0c9;};'use strict';var client=require(_0xaa4e('0x0'));exports[_0xaa4e('0x1')]=function(_0x14a467){return client[_0xaa4e('0x2')](_0xaa4e('0x3'),{'body':_0x14a467,'log':_0xaa4e('0x3')});};exports['update']=function(_0x530ee9,_0x212793,_0x4f4457){return client['Request'](_0xaa4e('0x4'),{'body':_0x530ee9,'options':{'where':{'uniqueid':_0x212793,'interface':_0x4f4457,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x4025=['CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create','Request'];(function(_0x7c13ed,_0x4d9dd5){var _0x4cad66=function(_0x3db414){while(--_0x3db414){_0x7c13ed['push'](_0x7c13ed['shift']());}};_0x4cad66(++_0x4d9dd5);}(_0x4025,0x15f));var _0x5402=function(_0x1e621f,_0x18abe0){_0x1e621f=_0x1e621f-0x0;var _0x509b80=_0x4025[_0x1e621f];return _0x509b80;};'use strict';var client=require(_0x5402('0x0'));exports[_0x5402('0x1')]=function(_0x517839){return client[_0x5402('0x2')](_0x5402('0x3'),{'body':_0x517839,'log':_0x5402('0x3')});};exports[_0x5402('0x4')]=function(_0x3babd3,_0x6121ee,_0x33cfe4){return client[_0x5402('0x2')](_0x5402('0x5'),{'body':_0x3babd3,'options':{'where':{'uniqueid':_0x6121ee,'interface':_0x33cfe4,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index c253982..3a1fc9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeabe=['lodash','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','duration','billableseconds','GetVoiceCallReports','moment','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeabe,0x1a0));var _0xeeab=function(_0x2a5fa1,_0x1752c5){_0x2a5fa1=_0x2a5fa1-0x0;var _0x134572=_0xeabe[_0x2a5fa1];return _0x134572;};'use strict';var moment=require(_0xeeab('0x0'));var util=require(_0xeeab('0x1'));var _=require(_0xeeab('0x2'));var client=require('../client');exports[_0xeeab('0x3')]=function(_0x582a54){return client[_0xeeab('0x4')](_0xeeab('0x5'),{'body':_[_0xeeab('0x6')](_0x582a54,{'source':_0x582a54[_0xeeab('0x7')],'destinationcontext':_0x582a54[_0xeeab('0x8')],'callerid':_0x582a54[_0xeeab('0x9')],'amaflags':_0xeeab('0xa')}),'log':'CreateVoiceCallReport'});};exports[_0xeeab('0xb')]=function(){return function(){return client[_0xeeab('0x4')](_0xeeab('0xc'),{'options':{'where':{'type':[_0xeeab('0xd')],'createdAt':{'$between':[moment()[_0xeeab('0xe')](_0xeeab('0xf'))[_0xeeab('0x10')](_0xeeab('0x11')),moment()[_0xeeab('0x12')](_0xeeab('0xf'))[_0xeeab('0x10')](_0xeeab('0x11'))]}},'attributes':['type','disposition',_0xeeab('0x13'),_0xeeab('0x14')]},'log':_0xeeab('0x15')});};};
\ No newline at end of file
+var _0x20d0=['calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','disposition','duration','billableseconds','moment','util','lodash','../client','create','CreateVoiceCallReport'];(function(_0x7b544a,_0x33c45a){var _0x33dcb4=function(_0x5ebc7f){while(--_0x5ebc7f){_0x7b544a['push'](_0x7b544a['shift']());}};_0x33dcb4(++_0x33c45a);}(_0x20d0,0xd6));var _0x020d=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0x20d0[_0x31a371];return _0x2a5bd6;};'use strict';var moment=require(_0x020d('0x0'));var util=require(_0x020d('0x1'));var _=require(_0x020d('0x2'));var client=require(_0x020d('0x3'));exports[_0x020d('0x4')]=function(_0x4528f5){return client['Request'](_0x020d('0x5'),{'body':_['merge'](_0x4528f5,{'source':_0x4528f5[_0x020d('0x6')],'destinationcontext':_0x4528f5[_0x020d('0x7')],'callerid':_0x4528f5[_0x020d('0x8')],'amaflags':_0x020d('0x9')}),'log':_0x020d('0x5')});};exports[_0x020d('0xa')]=function(){return function(){return client['Request'](_0x020d('0xb'),{'options':{'where':{'type':[_0x020d('0xc')],'createdAt':{'$between':[moment()['startOf'](_0x020d('0xd'))[_0x020d('0xe')](_0x020d('0xf')),moment()[_0x020d('0x10')](_0x020d('0xd'))['format'](_0x020d('0xf'))]}},'attributes':['type',_0x020d('0x11'),_0x020d('0x12'),_0x020d('0x13')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index a759eba..02aceb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ea=['../client','create'];(function(_0x49f353,_0x16d359){var _0xc86538=function(_0xafe873){while(--_0xafe873){_0x49f353['push'](_0x49f353['shift']());}};_0xc86538(++_0x16d359);}(_0xc6ea,0x1cc));var _0xac6e=function(_0x3d0afb,_0x31c391){_0x3d0afb=_0x3d0afb-0x0;var _0x375e8f=_0xc6ea[_0x3d0afb];return _0x375e8f;};'use strict';var client=require(_0xac6e('0x0'));exports[_0xac6e('0x1')]=function(_0x434d8d){return client['Request']('CreateVoiceDialReport',{'body':_0x434d8d,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x1d6c=['../client','create','Request'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x1d6c,0xf3));var _0xc1d6=function(_0x5480c8,_0x45c0fd){_0x5480c8=_0x5480c8-0x0;var _0x5c26bd=_0x1d6c[_0x5480c8];return _0x5c26bd;};'use strict';var client=require(_0xc1d6('0x0'));exports[_0xc1d6('0x1')]=function(_0x283a1b){return client[_0xc1d6('0x2')]('CreateVoiceDialReport',{'body':_0x283a1b,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 1333c91..b1e608c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3715=['GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions','Request'];(function(_0x481366,_0x41e46b){var _0x229649=function(_0x508ecc){while(--_0x508ecc){_0x481366['push'](_0x481366['shift']());}};_0x229649(++_0x41e46b);}(_0x3715,0xc3));var _0x5371=function(_0x4fc2f7,_0x15c44e){_0x4fc2f7=_0x4fc2f7-0x0;var _0x2a7715=_0x3715[_0x4fc2f7];return _0x2a7715;};'use strict';var client=require(_0x5371('0x0'));exports[_0x5371('0x1')]=function(){return function(){return client[_0x5371('0x2')](_0x5371('0x3'),{'options':{'raw':!![],'attributes':['id',_0x5371('0x4'),_0x5371('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x5371('0x1')});};};
\ No newline at end of file
+var _0x16d2=['GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions','Request'];(function(_0xdf1c7a,_0x230eab){var _0x58789b=function(_0x6020e4){while(--_0x6020e4){_0xdf1c7a['push'](_0xdf1c7a['shift']());}};_0x58789b(++_0x230eab);}(_0x16d2,0x123));var _0x216d=function(_0xcac48c,_0x3f0764){_0xcac48c=_0xcac48c-0x0;var _0x402b41=_0x16d2[_0xcac48c];return _0x402b41;};'use strict';var client=require(_0x216d('0x0'));exports[_0x216d('0x1')]=function(){return function(){return client[_0x216d('0x2')](_0x216d('0x3'),{'options':{'raw':!![],'attributes':['id',_0x216d('0x4'),_0x216d('0x5')],'where':{'VoiceExtensionId':null}},'log':_0x216d('0x1')});};};
\ No newline at end of file
index fa1a902..762b684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf3=['dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','callAdditionalPhoneAfterMin','Trunk','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDTotalAnalysisTime','dialAMDSilenceThreshold','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber'];(function(_0x2f4494,_0x40f20e){var _0x1d2960=function(_0x54d7a7){while(--_0x54d7a7){_0x2f4494['push'](_0x2f4494['shift']());}};_0x1d2960(++_0x40f20e);}(_0xcdf3,0x10b));var _0x3cdf=function(_0x19fff8,_0x1aa64b){_0x19fff8=_0x19fff8-0x0;var _0x38ee65=_0xcdf3[_0x19fff8];return _0x38ee65;};'use strict';var client=require(_0x3cdf('0x0'));exports[_0x3cdf('0x1')]=function(){return function(){return client[_0x3cdf('0x2')](_0x3cdf('0x3'),{'options':{'raw':![],'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x5'),_0x3cdf('0x6'),'autopause',_0x3cdf('0x7'),_0x3cdf('0x8'),_0x3cdf('0x9'),_0x3cdf('0xa'),_0x3cdf('0xb'),_0x3cdf('0xc'),_0x3cdf('0xd'),_0x3cdf('0xe'),_0x3cdf('0xf'),_0x3cdf('0x10'),_0x3cdf('0x11'),_0x3cdf('0x12'),_0x3cdf('0x13'),'dialQueueOptions','dialQueueTimeout',_0x3cdf('0x14'),_0x3cdf('0x15'),_0x3cdf('0x16'),_0x3cdf('0x17'),_0x3cdf('0x18'),_0x3cdf('0x19'),'dialNoAnswerRetryFrequency','dialGlobalMaxRetry',_0x3cdf('0x1a'),'dialGlobalInterval','dialPrefix','dialCheckDuplicateType',_0x3cdf('0x1b'),_0x3cdf('0x1c'),'dialAMDGreeting','dialAMDAfterGreetingSilence',_0x3cdf('0x1d'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords',_0x3cdf('0x1e'),'dialAMDMaximumWordLength','timeout',_0x3cdf('0x1f'),'dialRecallInQueue',_0x3cdf('0x20'),_0x3cdf('0x21'),_0x3cdf('0x22'),_0x3cdf('0x23'),'monitor_format',_0x3cdf('0x24'),_0x3cdf('0x25'),_0x3cdf('0x26'),_0x3cdf('0x27'),_0x3cdf('0x28'),_0x3cdf('0x29'),_0x3cdf('0x2a'),_0x3cdf('0x2b'),'dialAbandonedRetryFrequency',_0x3cdf('0x2c'),_0x3cdf('0x2d'),_0x3cdf('0x2e'),_0x3cdf('0x2f'),_0x3cdf('0x30'),_0x3cdf('0x31'),_0x3cdf('0x32'),_0x3cdf('0x33'),'dialPreviewRecallmeReminder',_0x3cdf('0x34')],'include':[{'model':_0x3cdf('0x35'),'as':_0x3cdf('0x35'),'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x36'),_0x3cdf('0x37')]},{'model':'Pause','as':_0x3cdf('0x38'),'attributes':['id',_0x3cdf('0x4')]},{'model':_0x3cdf('0x35'),'as':_0x3cdf('0x39'),'attributes':['id',_0x3cdf('0x4'),'callerid',_0x3cdf('0x37')]},{'model':'Interval','as':'Interval','attributes':['id',_0x3cdf('0x4')],'include':[{'model':_0x3cdf('0x3a'),'as':_0x3cdf('0x3b'),'attributes':['id',_0x3cdf('0x4'),_0x3cdf('0x3c')]}]}]},'log':_0x3cdf('0x1')});};};
\ No newline at end of file
+var _0x3a58=['dialQueueProject2','strategy','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','callAdditionalPhoneAfterMin','Trunk','callerid','Pause','mandatoryDispositionPause','TrunkBackup','active','Interval','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient'];(function(_0x3e8f15,_0x225677){var _0x26c459=function(_0x40c130){while(--_0x40c130){_0x3e8f15['push'](_0x3e8f15['shift']());}};_0x26c459(++_0x225677);}(_0x3a58,0xda));var _0x83a5=function(_0x25f72c,_0x2bc1dd){_0x25f72c=_0x25f72c-0x0;var _0x462034=_0x3a58[_0x25f72c];return _0x462034;};'use strict';var client=require(_0x83a5('0x0'));exports[_0x83a5('0x1')]=function(){return function(){return client[_0x83a5('0x2')](_0x83a5('0x3'),{'options':{'raw':![],'attributes':['id',_0x83a5('0x4'),_0x83a5('0x5'),_0x83a5('0x6'),'autopause',_0x83a5('0x7'),_0x83a5('0x8'),'dialActive','dialMethod',_0x83a5('0x9'),_0x83a5('0xa'),_0x83a5('0xb'),_0x83a5('0xc'),_0x83a5('0xd'),_0x83a5('0xe'),_0x83a5('0xf'),'dialOriginateCallerIdNumber',_0x83a5('0x10'),_0x83a5('0x11'),_0x83a5('0x12'),_0x83a5('0x13'),_0x83a5('0x14'),_0x83a5('0x15'),_0x83a5('0x16'),_0x83a5('0x17'),_0x83a5('0x18'),_0x83a5('0x19'),_0x83a5('0x1a'),'dialTimezone',_0x83a5('0x1b'),'dialPrefix','dialCheckDuplicateType',_0x83a5('0x1c'),_0x83a5('0x1d'),_0x83a5('0x1e'),_0x83a5('0x1f'),_0x83a5('0x20'),_0x83a5('0x21'),_0x83a5('0x22'),_0x83a5('0x23'),_0x83a5('0x24'),'dialAMDMaximumWordLength',_0x83a5('0x25'),_0x83a5('0x26'),_0x83a5('0x27'),'dialOrderByScheduledAt',_0x83a5('0x28'),_0x83a5('0x29'),_0x83a5('0x2a'),_0x83a5('0x7'),_0x83a5('0x2b'),'dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x83a5('0x2c'),_0x83a5('0x2d'),_0x83a5('0x2e'),_0x83a5('0x2f'),_0x83a5('0x30'),_0x83a5('0x31'),'dialMachineMaxRetry',_0x83a5('0x32'),_0x83a5('0x33'),_0x83a5('0x34'),_0x83a5('0x35'),'dialPredictiveIntervalMaxThreshold',_0x83a5('0x36'),_0x83a5('0x37'),'dialPreviewRecallmeReminder',_0x83a5('0x38')],'include':[{'model':_0x83a5('0x39'),'as':_0x83a5('0x39'),'attributes':['id',_0x83a5('0x4'),_0x83a5('0x3a'),'active']},{'model':_0x83a5('0x3b'),'as':_0x83a5('0x3c'),'attributes':['id','name']},{'model':'Trunk','as':_0x83a5('0x3d'),'attributes':['id','name','callerid',_0x83a5('0x3e')]},{'model':_0x83a5('0x3f'),'as':'Interval','attributes':['id','name'],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x83a5('0x4'),_0x83a5('0x40')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index 2e75708..318fb8d 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(_0x1b56a9,_0x367c88){var _0x1f9d34=function(_0x5de83f){while(--_0x5de83f){_0x1b56a9['push'](_0x1b56a9['shift']());}};_0x1f9d34(++_0x367c88);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0x63849b,_0x1d6090){var _0x41abfa=function(_0x2714e3){while(--_0x2714e3){_0x63849b['push'](_0x63849b['shift']());}};_0x41abfa(++_0x1d6090);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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 292e966..392328f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8911=['getVoiceQueueRtPauses','Request'];(function(_0x251b74,_0xfbee3b){var _0x2f2f32=function(_0x305b59){while(--_0x305b59){_0x251b74['push'](_0x251b74['shift']());}};_0x2f2f32(++_0xfbee3b);}(_0x8911,0x15c));var _0x1891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8911[_0x14add3];return _0x4a174f;};'use strict';var client=require('../client');exports[_0x1891('0x0')]=function(_0x2c318c){return function(){return client[_0x1891('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x2c318c,'paused':!![]},'raw':!![]},'log':_0x1891('0x0')});};};
\ No newline at end of file
+var _0x276b=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x276b,0x180));var _0xb276=function(_0x23eebc,_0x1f560b){_0x23eebc=_0x23eebc-0x0;var _0x544cb1=_0x276b[_0x23eebc];return _0x544cb1;};'use strict';var client=require(_0xb276('0x0'));exports[_0xb276('0x1')]=function(_0x3356b6){return function(){return client[_0xb276('0x2')](_0xb276('0x3'),{'options':{'where':{'VoiceQueueId':_0x3356b6,'paused':!![]},'raw':!![]},'log':_0xb276('0x1')});};};
\ No newline at end of file
index 7e393bc..dafdce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x411fde,_0x226e6e){var _0xec5cf9=function(_0xb4c9f6){while(--_0xb4c9f6){_0x411fde['push'](_0x411fde['shift']());}};_0xec5cf9(++_0x226e6e);}(_0x7a54,0x106));var _0x47a5=function(_0x10dc00,_0x2aa981){_0x10dc00=_0x10dc00-0x0;var _0x37817c=_0x7a54[_0x10dc00];return _0x37817c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x2d6dfe,_0xc688fc){var _0x417e6c=function(_0x340ed4){while(--_0x340ed4){_0x2d6dfe['push'](_0x2d6dfe['shift']());}};_0x417e6c(++_0xc688fc);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index d0830f1..60a4c84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb79=['transfereelinkedid','isexternal','context','blind','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','origtransfererexten','attended','../client','Request','CreateVoiceTransferReport','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererlinkedid','transfereechannel','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten'];(function(_0x38045f,_0x551f77){var _0xfd4f8c=function(_0x362607){while(--_0x362607){_0x38045f['push'](_0x38045f['shift']());}};_0xfd4f8c(++_0x551f77);}(_0xcb79,0x1e9));var _0x9cb7=function(_0x4947e4,_0x5779c9){_0x4947e4=_0x4947e4-0x0;var _0x3c0769=_0xcb79[_0x4947e4];return _0x3c0769;};'use strict';var client=require(_0x9cb7('0x0'));exports['transfers']={};exports['blindTransfer']=function(_0x16d5aa){return client[_0x9cb7('0x1')](_0x9cb7('0x2'),{'body':{'result':_0x16d5aa['result'],'transfererchannel':_0x16d5aa[_0x9cb7('0x3')],'transferercalleridnum':_0x16d5aa[_0x9cb7('0x4')],'transferercalleridname':_0x16d5aa[_0x9cb7('0x5')],'transfererconnectedlinenum':_0x16d5aa[_0x9cb7('0x6')],'transfererconnectedlinename':_0x16d5aa[_0x9cb7('0x7')],'transfereraccountcode':_0x16d5aa[_0x9cb7('0x8')],'transferercontext':_0x16d5aa['transferercontext'],'transfererexten':_0x16d5aa['transfererexten'],'transfererlinkedid':_0x16d5aa[_0x9cb7('0x9')],'transfereechannel':_0x16d5aa[_0x9cb7('0xa')],'transfereecalleridnum':_0x16d5aa['transfereecalleridnum'],'transfereecalleridname':_0x16d5aa['transfereecalleridname'],'transfereeconnectedlinenum':_0x16d5aa[_0x9cb7('0xb')],'transfereeconnectedlinename':_0x16d5aa[_0x9cb7('0xc')],'transfereeaccountcode':_0x16d5aa['transfereeaccountcode'],'transfereecontext':_0x16d5aa[_0x9cb7('0xd')],'transfereeexten':_0x16d5aa[_0x9cb7('0xe')],'transfereelinkedid':_0x16d5aa[_0x9cb7('0xf')],'isexternal':_0x16d5aa[_0x9cb7('0x10')],'context':_0x16d5aa[_0x9cb7('0x11')],'extension':_0x16d5aa['extension'],'type':_0x9cb7('0x12')},'log':_0x9cb7('0x2')});};exports[_0x9cb7('0x13')]=function(_0x58ef7e){return client['Request'](_0x9cb7('0x2'),{'body':{'result':_0x58ef7e[_0x9cb7('0x14')],'transfererchannel':_0x58ef7e[_0x9cb7('0x15')],'transferercalleridnum':_0x58ef7e[_0x9cb7('0x16')],'transferercalleridname':_0x58ef7e[_0x9cb7('0x17')],'transfererconnectedlinenum':_0x58ef7e[_0x9cb7('0x18')],'transfererconnectedlinename':_0x58ef7e[_0x9cb7('0x19')],'transfereraccountcode':_0x58ef7e['origtransfereraccountcode'],'transferercontext':_0x58ef7e[_0x9cb7('0x1a')],'transfererexten':_0x58ef7e[_0x9cb7('0x1b')],'transfererlinkedid':_0x58ef7e['origtransfererlinkedid'],'transfereechannel':_0x58ef7e[_0x9cb7('0x1c')],'transfereecalleridnum':_0x58ef7e[_0x9cb7('0x1d')],'transfereecalleridname':_0x58ef7e[_0x9cb7('0x1e')],'transfereeconnectedlinenum':_0x58ef7e['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x58ef7e[_0x9cb7('0x1f')],'transfereeaccountcode':_0x58ef7e[_0x9cb7('0x20')],'transfereecontext':_0x58ef7e[_0x9cb7('0x21')],'transfereeexten':_0x58ef7e['transfertargetexten'],'transfereelinkedid':_0x58ef7e['transfertargetlinkedid'],'isexternal':_0x58ef7e[_0x9cb7('0x10')],'context':_0x58ef7e['origtransferercontext'],'extension':_0x58ef7e[_0x9cb7('0x22')],'type':_0x9cb7('0x23')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0x80b6=['transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','origtransferercontext','origtransfererexten','attended','transfers','blindTransfer','CreateVoiceTransferReport','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','Request','result','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x80b6,0x7f));var _0x680b=function(_0xfca291,_0x41fe23){_0xfca291=_0xfca291-0x0;var _0x2bd49e=_0x80b6[_0xfca291];return _0x2bd49e;};'use strict';var client=require('../client');exports[_0x680b('0x0')]={};exports[_0x680b('0x1')]=function(_0x22849b){return client['Request'](_0x680b('0x2'),{'body':{'result':_0x22849b['result'],'transfererchannel':_0x22849b[_0x680b('0x3')],'transferercalleridnum':_0x22849b['transferercalleridnum'],'transferercalleridname':_0x22849b[_0x680b('0x4')],'transfererconnectedlinenum':_0x22849b[_0x680b('0x5')],'transfererconnectedlinename':_0x22849b['transfererconnectedlinename'],'transfereraccountcode':_0x22849b[_0x680b('0x6')],'transferercontext':_0x22849b[_0x680b('0x7')],'transfererexten':_0x22849b['transfererexten'],'transfererlinkedid':_0x22849b[_0x680b('0x8')],'transfereechannel':_0x22849b[_0x680b('0x9')],'transfereecalleridnum':_0x22849b['transfereecalleridnum'],'transfereecalleridname':_0x22849b[_0x680b('0xa')],'transfereeconnectedlinenum':_0x22849b[_0x680b('0xb')],'transfereeconnectedlinename':_0x22849b[_0x680b('0xc')],'transfereeaccountcode':_0x22849b[_0x680b('0xd')],'transfereecontext':_0x22849b[_0x680b('0xe')],'transfereeexten':_0x22849b[_0x680b('0xf')],'transfereelinkedid':_0x22849b[_0x680b('0x10')],'isexternal':_0x22849b[_0x680b('0x11')],'context':_0x22849b[_0x680b('0x12')],'extension':_0x22849b['extension'],'type':_0x680b('0x13')},'log':_0x680b('0x2')});};exports['attendedTransfer']=function(_0x3ee8f0){return client[_0x680b('0x14')]('CreateVoiceTransferReport',{'body':{'result':_0x3ee8f0[_0x680b('0x15')],'transfererchannel':_0x3ee8f0['origtransfererchannel'],'transferercalleridnum':_0x3ee8f0[_0x680b('0x16')],'transferercalleridname':_0x3ee8f0[_0x680b('0x17')],'transfererconnectedlinenum':_0x3ee8f0['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x3ee8f0[_0x680b('0x18')],'transfereraccountcode':_0x3ee8f0[_0x680b('0x19')],'transferercontext':_0x3ee8f0[_0x680b('0x1a')],'transfererexten':_0x3ee8f0[_0x680b('0x1b')],'transfererlinkedid':_0x3ee8f0[_0x680b('0x1c')],'transfereechannel':_0x3ee8f0[_0x680b('0x1d')],'transfereecalleridnum':_0x3ee8f0[_0x680b('0x1e')],'transfereecalleridname':_0x3ee8f0['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x3ee8f0[_0x680b('0x1f')],'transfereeconnectedlinename':_0x3ee8f0[_0x680b('0x20')],'transfereeaccountcode':_0x3ee8f0[_0x680b('0x21')],'transfereecontext':_0x3ee8f0[_0x680b('0x22')],'transfereeexten':_0x3ee8f0[_0x680b('0x23')],'transfereelinkedid':_0x3ee8f0['transfertargetlinkedid'],'isexternal':_0x3ee8f0[_0x680b('0x11')],'context':_0x3ee8f0[_0x680b('0x24')],'extension':_0x3ee8f0[_0x680b('0x25')],'type':_0x680b('0x26')},'log':_0x680b('0x2')});};
\ No newline at end of file
index f9a1d31..4446936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['wav','MixMonitor','ai(mixmonitorid)','then','monitors','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','resolve','StopMixMonitor','destinationchannel','stop','queueChannels','Hangup','voicequeuechannelredirect','exten','context','telephones','trunks','campaigns','run','Event\x20name\x20mandatory','custom:','event','send','checkAfterSend','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','validate','moment','../properties','../ami','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','isConnected','asterisk','username','ami\x20disconnected','keys','module','Reload','Action','message','catch','error','join','pick','command','action','Command','content','voiceQueues','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','map','channel','%s.%s','filename','uniqueid'];(function(_0x40f991,_0x576819){var _0x38eca2=function(_0x2a586f){while(--_0x2a586f){_0x40f991['push'](_0x40f991['shift']());}};_0x38eca2(++_0x576819);}(_0xdb94,0xab));var _0x4db9=function(_0x27d0e9,_0x527f23){_0x27d0e9=_0x27d0e9-0x0;var _0x1937c3=_0xdb94[_0x27d0e9];return _0x1937c3;};'use strict';var _=require(_0x4db9('0x0'));var util=require(_0x4db9('0x1'));var jayson=require(_0x4db9('0x2'));var schema=require(_0x4db9('0x3'));var moment=require(_0x4db9('0x4'));var config=require('../../../config/environment');var properties=require(_0x4db9('0x5'));var ami=require(_0x4db9('0x6'));exports['listen']=function(_0x4ed80a,_0x209f80,_0x5ecd46){return new Promise(function(_0x47a3f5,_0x31dd9f){var _0x5d1f45={'QueuePause':function(_0x196ede){return new Promise(function(_0x50c27a){var _0x14deb9=util[_0x4db9('0x7')](_0x4db9('0x8'),_0x4db9('0x9'),_0x196ede[_0x4db9('0xa')]);if(_0x4ed80a[_0x4db9('0xb')]&&_0x4ed80a[_0x4db9('0xb')][_0x14deb9]&&_0x4ed80a[_0x4db9('0xb')][_0x14deb9][_0x4db9('0xc')]){_0x4ed80a[_0x4db9('0xb')][_0x14deb9][_0x4db9('0xd')]();}if(_0x4ed80a['agents'][_0x14deb9]){_0x4ed80a[_0x4db9('0xe')][_0x14deb9][_0x4db9('0xf')]({'statePause':_0x196ede['pause']?!![]:![]});}_0x50c27a({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x31222b){var _0x5e644c=this;return new Promise(function(_0x571685,_0x34fc7d){if(ami[_0x4db9('0x10')]()==![]){return _0x34fc7d(_0x5e644c['error'](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')]['join']('\x20')));}_0x31222b=_['pick'](_0x31222b,_[_0x4db9('0x14')](properties[_0x4db9('0x15')]));_0x31222b['action']=_0x4db9('0x16');return ami[_0x4db9('0x17')](_0x31222b)['then'](function(_0x5a85c4){_0x571685({'code':0xc8,'message':_0x5a85c4[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x462af3){_0x34fc7d(_0x5e644c[_0x4db9('0x1a')](0x1f5,_0x462af3[_0x4db9('0x18')]));});});},'Command':function(_0x55494a){var _0x3b1f87=this;return new Promise(function(_0x1214ee,_0x11012e){if(ami['isConnected']()==![]){return _0x11012e(_0x3b1f87[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')]['username'],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}_0x55494a=_[_0x4db9('0x1c')](_0x55494a,_0x4db9('0x1d'));_0x55494a[_0x4db9('0x1e')]=_0x4db9('0x1f');return ami[_0x4db9('0x17')](_0x55494a)['then'](function(_0x4ceb0c){_0x1214ee({'code':0xc8,'message':_0x4ceb0c[_0x4db9('0x20')]});})[_0x4db9('0x19')](function(_0x319475){_0x11012e(_0x3b1f87['error'](0x1f5,_0x319475[_0x4db9('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0xdac966){var _0x5cbd3f=[];for(var _0x2e97ab in _0x4ed80a[_0x4db9('0x21')]){if(_0x4ed80a[_0x4db9('0x21')]['hasOwnProperty'](_0x2e97ab)){var _0x3c8237=_0x4ed80a[_0x4db9('0x21')][_0x2e97ab];var _0x43b95e={'id':_0x3c8237['id'],'name':_0x3c8237[_0x4db9('0xa')],'strategy':_0x3c8237[_0x4db9('0x22')],'answered':_0x3c8237[_0x4db9('0x23')],'available':_0x3c8237[_0x4db9('0x24')],'loggedIn':_0x3c8237[_0x4db9('0x25')],'pTalking':_0x3c8237[_0x4db9('0x26')],'sumBillable':_0x3c8237[_0x4db9('0x27')],'sumDuration':_0x3c8237[_0x4db9('0x28')],'sumHoldTime':_0x3c8237[_0x4db9('0x29')]||0x0,'talking':_0x3c8237[_0x4db9('0x2a')],'total':_0x3c8237[_0x4db9('0x2b')],'type':_0x3c8237['type'],'unmanaged':_0x3c8237['unmanaged'],'abandoned':_0x3c8237[_0x4db9('0x2c')],'waiting':_0x3c8237[_0x4db9('0x2d')],'loggedInDb':_0x3c8237[_0x4db9('0x2e')]};if(_0x3c8237[_0x4db9('0x2f')]===_0x4db9('0x30')){_0x43b95e[_0x4db9('0x31')]=_0x3c8237['dialActive'];_0x43b95e[_0x4db9('0x32')]=_0x3c8237['dialMethod'];_0x43b95e[_0x4db9('0x33')]=_0x3c8237[_0x4db9('0x33')];_0x43b95e[_0x4db9('0x34')]=_0x3c8237[_0x4db9('0x34')];_0x43b95e[_0x4db9('0x35')]=_0x3c8237['dialOriginateTimeout'];_0x43b95e['dialPrefix']=_0x3c8237[_0x4db9('0x36')];_0x43b95e['temp']=_0x3c8237[_0x4db9('0x37')];_0x43b95e[_0x4db9('0x38')]=_0x3c8237['outboundAnswerAgiCallsDay'];_0x43b95e[_0x4db9('0x39')]=_0x3c8237[_0x4db9('0x39')];_0x43b95e[_0x4db9('0x3a')]=_0x3c8237['outboundBlacklistCallsDay'];_0x43b95e[_0x4db9('0x3b')]=_0x3c8237['outboundBusyCallsDay'];_0x43b95e[_0x4db9('0x3c')]=_0x3c8237[_0x4db9('0x3c')];_0x43b95e[_0x4db9('0x3d')]=_0x3c8237['outboundDropCallsDayACS'];_0x43b95e['outboundDropCallsDayCallersExit']=_0x3c8237[_0x4db9('0x3e')];_0x43b95e[_0x4db9('0x3f')]=_0x3c8237[_0x4db9('0x3f')];_0x43b95e[_0x4db9('0x40')]=_0x3c8237[_0x4db9('0x40')];_0x43b95e[_0x4db9('0x41')]=_0x3c8237[_0x4db9('0x41')];_0x43b95e[_0x4db9('0x42')]=_0x3c8237[_0x4db9('0x42')];_0x43b95e['outboundReCallsDay']=_0x3c8237[_0x4db9('0x43')];_0x43b95e[_0x4db9('0x44')]=_0x3c8237[_0x4db9('0x44')];_0x43b95e[_0x4db9('0x45')]=_0x3c8237['outboundUnknownCallsDay'];_0x43b95e[_0x4db9('0x46')]=_0x3c8237[_0x4db9('0x46')];_0x43b95e[_0x4db9('0x47')]=_0x3c8237['predictiveIntervalAvgHoldtime'];_0x43b95e[_0x4db9('0x48')]=_0x3c8237[_0x4db9('0x48')];_0x43b95e[_0x4db9('0x49')]=_0x3c8237[_0x4db9('0x49')];_0x43b95e['predictiveIntervalDroppedCallsTimeout']=_0x3c8237['predictiveIntervalDroppedCallsTimeout'];_0x43b95e[_0x4db9('0x4a')]=_0x3c8237[_0x4db9('0x4a')];_0x43b95e[_0x4db9('0x4b')]=_0x3c8237[_0x4db9('0x4b')];_0x43b95e[_0x4db9('0x4c')]=_0x3c8237['predictiveIntervalHitRate'];_0x43b95e[_0x4db9('0x4d')]=_0x3c8237[_0x4db9('0x4d')];_0x43b95e[_0x4db9('0x4e')]=_0x3c8237[_0x4db9('0x4e')];_0x43b95e[_0x4db9('0x4f')]=_0x3c8237['predictiveIntervalAvailable'];_0x43b95e[_0x4db9('0x50')]=_0x3c8237[_0x4db9('0x50')];_0x43b95e[_0x4db9('0x18')]=_0x3c8237['message'];_0x43b95e[_0x4db9('0x51')]=_0x3c8237[_0x4db9('0x51')];_0x43b95e[_0x4db9('0x52')]=_0x3c8237[_0x4db9('0x52')];_0x43b95e[_0x4db9('0x53')]=_0x3c8237[_0x4db9('0x53')];_0x43b95e[_0x4db9('0x54')]=_0x3c8237[_0x4db9('0x54')];_0x43b95e[_0x4db9('0x55')]=_0x3c8237[_0x4db9('0x55')];_0x43b95e['startPredictive']=_0x3c8237['startPredictive'];_0x43b95e['startProgressive']=_0x3c8237[_0x4db9('0x56')];}if(_0x3c8237[_0x4db9('0x57')]){_0x43b95e['Trunk']={'id':_0x3c8237[_0x4db9('0x57')]['id'],'name':_0x3c8237[_0x4db9('0x57')]['name'],'active':_0x3c8237['Trunk'][_0x4db9('0x58')],'callerid':_0x3c8237['Trunk'][_0x4db9('0x59')]};}if(_0x3c8237[_0x4db9('0x5a')]){_0x43b95e['Interval']={'id':_0x3c8237[_0x4db9('0x5a')]['id'],'name':_0x3c8237[_0x4db9('0x5a')]['name']};}_0x5cbd3f[_0x4db9('0x5b')](_0x43b95e);}}_0xdac966({'count':_0x5cbd3f[_0x4db9('0x5c')],'rows':_0x5cbd3f});});},'UpdateVoiceQueue':function(_0x3b3c9e){return new Promise(function(_0x5d9ec0,_0x4ff05f){var _0x125d79=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x21')],{'id':parseInt(_0x3b3c9e['id'])});var _0x41d0dd=_[_0x4db9('0x5e')](_0x3b3c9e,['id']);if(_0x125d79){for(var _0x1ae473 in _0x41d0dd){if(typeof _0x41d0dd[_0x1ae473]!==_0x4db9('0x5f')&&typeof _0x125d79[_0x1ae473]!==_0x4db9('0x5f')){_0x125d79[_0x1ae473]=_0x41d0dd[_0x1ae473];}}_0x5d9ec0(_0x125d79);}else{_0x4ff05f();}});},'VoiceChannels':function(){return new Promise(function(_0x2baf3c){var _0x8fc827=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x61')]);_0x2baf3c({'count':_0x8fc827[_0x4db9('0x5c')],'rows':_0x8fc827});});},'VoiceChannelMixMonitor':function(_0x54bbd4){var _0x2cf1c1=this;return new Promise(function(_0x2faacf,_0x3852f0){if(ami[_0x4db9('0x10')]()==![]){return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x10dccb=schema(properties['voicechannel'])['validate'](_0x54bbd4);if(_0x10dccb[_0x4db9('0x5c')]>0x0){return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x10dccb,_0x4db9('0x18'))[_0x4db9('0x1b')](',\x20')));}var _0x30384a=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x61')],{'uniqueid':_0x54bbd4['uniqueid']});if(_0x30384a&&_0x30384a[_0x4db9('0x63')]){var _0xcb832e=util[_0x4db9('0x7')](_0x4db9('0x64'),_0x54bbd4[_0x4db9('0x65')]||_0x54bbd4[_0x4db9('0x66')],_0x54bbd4[_0x4db9('0x7')]||_0x4db9('0x67'));return ami['Action']({'action':_0x4db9('0x68'),'channel':_0x30384a[_0x4db9('0x63')],'file':_0xcb832e,'options':_0x4db9('0x69')})[_0x4db9('0x6a')](function(_0x15486f){var _0x2d7fa2=_['find'](_0x30384a[_0x4db9('0x6b')],{'filename':'/var/spool/asterisk/monitor/'+_0xcb832e[_0x4db9('0x6c')]()});if(_['isNil'](_0x2d7fa2)){_0x30384a['monitors'][_0x4db9('0x5b')]({'filename':'/var/spool/asterisk/monitor/'+_0xcb832e[_0x4db9('0x6c')](),'createdAt':moment()[_0x4db9('0x7')](_0x4db9('0x6d')),'mixmonitorid':_0x15486f[_0x4db9('0x6e')],'status':'rec'});}else{_0x2d7fa2[_0x4db9('0x6e')]=_0x15486f['mixmonitorid'];_0x2d7fa2[_0x4db9('0x6f')]=_0x4db9('0x70');}_0x2faacf({'code':0xc8,'message':[_0x54bbd4['uniqueid'],_0x4db9('0x71'),_0x15486f['mixmonitorid']][_0x4db9('0x1b')]('\x20'),'mixmonitorid':_0x15486f[_0x4db9('0x6e')]});})[_0x4db9('0x19')](function(_0x44535b){_0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f5,[_0x54bbd4[_0x4db9('0x66')],_0x44535b[_0x4db9('0x18')][_0x4db9('0x6c')]()][_0x4db9('0x1b')]('\x20')));});}else{return _0x3852f0(_0x2cf1c1[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceChannelStopMixMonitor':function(_0x178ca5){var _0x44c7fd=this;return new Promise(function(_0x21c012,_0x125b69){if(ami['isConnected']()==![]){return _0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f4,[config[_0x4db9('0x11')]['ip'],config['asterisk'][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x200e6d=schema(properties[_0x4db9('0x73')])[_0x4db9('0x3')](_0x178ca5);if(_0x200e6d[_0x4db9('0x5c')]>0x0){return _0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x200e6d,'message')['join'](',\x20')));}var _0x8ede64=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x61')],{'uniqueid':_0x178ca5[_0x4db9('0x66')]});if(_0x8ede64){return Promise[_0x4db9('0x74')]()[_0x4db9('0x6a')](function(){if(_0x8ede64[_0x4db9('0x63')]){return ami[_0x4db9('0x17')]({'action':_0x4db9('0x75'),'channel':_0x8ede64[_0x4db9('0x63')],'mixmonitorid':_0x178ca5['mixmonitorid']})[_0x4db9('0x19')](function(){});}})['then'](function(){if(_0x8ede64['destinationchannel']){return ami['Action']({'action':'StopMixMonitor','channel':_0x8ede64[_0x4db9('0x76')],'mixmonitorid':_0x178ca5['mixmonitorid']})['catch'](function(){});}})[_0x4db9('0x6a')](function(){var _0x1354d5=_[_0x4db9('0x5d')](_0x8ede64[_0x4db9('0x6b')],{'mixmonitorid':_0x178ca5[_0x4db9('0x6e')]});if(_0x1354d5){_0x1354d5[_0x4db9('0x6f')]=_0x4db9('0x77');}})[_0x4db9('0x6a')](function(){var _0x2941ff=util[_0x4db9('0x7')](_0x4db9('0x64'),_0x178ca5[_0x4db9('0x65')]||_0x178ca5[_0x4db9('0x66')],_0x178ca5[_0x4db9('0x7')]||_0x4db9('0x67'));var _0x37f6e3=_['find'](_0x8ede64['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x2941ff[_0x4db9('0x6c')]()});if(_0x37f6e3){_0x37f6e3['status']=_0x4db9('0x77');}})[_0x4db9('0x6a')](function(){_0x21c012({'code':0xc8,'message':[_0x178ca5[_0x4db9('0x66')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x4db9('0x19')](function(_0x564bcc){_0x125b69(_0x44c7fd[_0x4db9('0x1a')](0x1f5,[_0x178ca5[_0x4db9('0x66')],_0x564bcc[_0x4db9('0x18')][_0x4db9('0x6c')]()][_0x4db9('0x1b')]('\x20')));});}else{return _0x125b69(_0x44c7fd['error'](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x4fbdeb){var _0x2abc4d=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x78')]);_0x4fbdeb({'count':_0x2abc4d[_0x4db9('0x5c')],'rows':_0x2abc4d});});},'VoiceQueuesChannel':function(_0x12c1b5){var _0x543d35=this;return new Promise(function(_0x524d82,_0x3901b5){var _0xd8a34=schema(properties['voicequeuechannel'])['validate'](_0x12c1b5);if(_0xd8a34[_0x4db9('0x5c')]>0x0){return _0x3901b5(_0x543d35['error'](0x1f4,_[_0x4db9('0x62')](_0xd8a34,'message')[_0x4db9('0x1b')](',\x20')));}var _0x417802=_['find'](_0x4ed80a['queueChannels'],{'uniqueid':_0x12c1b5[_0x4db9('0x66')]});if(_0x417802){_0x524d82(_0x417802);}else{return _0x3901b5(_0x543d35[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannelHangup':function(_0x25a00f){var _0x3e85aa=this;return new Promise(function(_0x587961,_0x593497){if(ami['isConnected']()==![]){return _0x593497(_0x3e85aa['error'](0x1f4,[config[_0x4db9('0x11')]['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')]['join']('\x20')));}var _0x28a58c=schema(properties['voicequeuechannelhangup'])[_0x4db9('0x3')](_0x25a00f);if(_0x28a58c[_0x4db9('0x5c')]>0x0){return _0x593497(_0x3e85aa[_0x4db9('0x1a')](0x1f4,_[_0x4db9('0x62')](_0x28a58c,_0x4db9('0x18'))[_0x4db9('0x1b')](',\x20')));}var _0xde43ea=_['find'](_0x4ed80a[_0x4db9('0x78')],{'uniqueid':_0x25a00f[_0x4db9('0x66')]});if(_0xde43ea&&_0xde43ea[_0x4db9('0x63')]){return ami['Action']({'action':_0x4db9('0x79'),'channel':_0xde43ea[_0x4db9('0x63')]})['then'](function(_0x543b75){_0x587961({'code':0xc8,'message':[_0x25a00f[_0x4db9('0x66')],_0x543b75['message']['toLowerCase']()][_0x4db9('0x1b')]('\x20')});})[_0x4db9('0x19')](function(_0x190e38){_0x593497(_0x3e85aa['error'](0x1f5,[_0x25a00f['uniqueid'],_0x190e38['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x593497(_0x3e85aa[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'VoiceQueuesChannelRedirect':function(_0x1d9657){var _0x437f6a=this;return new Promise(function(_0x19c43b,_0x193b1d){if(ami[_0x4db9('0x10')]()==![]){return _0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f4,[config['asterisk']['ip'],config[_0x4db9('0x11')][_0x4db9('0x12')],_0x4db9('0x13')][_0x4db9('0x1b')]('\x20')));}var _0x2af00b=schema(properties[_0x4db9('0x7a')])[_0x4db9('0x3')](_0x1d9657);if(_0x2af00b[_0x4db9('0x5c')]>0x0){return _0x193b1d(_0x437f6a['error'](0x1f4,_[_0x4db9('0x62')](_0x2af00b,'message')[_0x4db9('0x1b')](',\x20')));}var _0x333031=_[_0x4db9('0x5d')](_0x4ed80a[_0x4db9('0x78')],{'uniqueid':_0x1d9657['uniqueid']});if(_0x333031&&_0x333031['channel']){return ami[_0x4db9('0x17')]({'action':'Redirect','channel':_0x333031[_0x4db9('0x63')],'exten':_0x1d9657[_0x4db9('0x7b')],'context':_0x1d9657[_0x4db9('0x7c')]||_0x333031[_0x4db9('0x7c')],'priority':0x1})[_0x4db9('0x6a')](function(_0x31f55f){_0x19c43b({'code':0xc8,'message':[_0x1d9657[_0x4db9('0x66')],_0x31f55f[_0x4db9('0x18')]['toLowerCase']()][_0x4db9('0x1b')]('\x20')});})[_0x4db9('0x19')](function(_0x2d738d){_0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f5,[_0x1d9657['uniqueid'],_0x2d738d[_0x4db9('0x18')][_0x4db9('0x6c')]()]['join']('\x20')));});}else{return _0x193b1d(_0x437f6a[_0x4db9('0x1a')](0x1f5,_0x4db9('0x72')));}});},'Agents':function(_0xe022d6){return new Promise(function(_0x561f4b){var _0x5b40a4=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0xe')]);if(_0xe022d6&&_0xe022d6['id']){var _0x560373=_['find'](_0x5b40a4,function(_0x17e432){return _0x17e432['id']===_0xe022d6['id'];});_0x561f4b(_0x560373);}else{_0x561f4b({'count':_0x5b40a4[_0x4db9('0x5c')],'rows':_0x5b40a4});}});},'Telephones':function(){return new Promise(function(_0x14c4d3){var _0x284aae=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7d')]);_0x14c4d3({'count':_0x284aae[_0x4db9('0x5c')],'rows':_0x284aae});});},'Trunks':function(){return new Promise(function(_0x28d35a){var _0xb5c0a0=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7e')]);_0x28d35a({'count':_0xb5c0a0[_0x4db9('0x5c')],'rows':_0xb5c0a0});});},'OutboundChannels':function(){return new Promise(function(_0x315808){var _0x24ee49=_[_0x4db9('0x60')](_0x4ed80a['outboundChannels']);_0x315808({'count':_0x24ee49[_0x4db9('0x5c')],'rows':_0x24ee49});});},'Outbound':function(){return new Promise(function(_0x541687){_0x541687(_0x4ed80a[_0x4db9('0x30')]);});},'Campaigns':function(){return new Promise(function(_0x5e1098){var _0x19e897=_[_0x4db9('0x60')](_0x4ed80a[_0x4db9('0x7f')]);_0x5e1098({'count':_0x19e897[_0x4db9('0x5c')],'rows':_0x19e897});});},'VoiceQueuesPreview':function(_0xed6d75){var _0x3af042=this;return new Promise(function(_0x146fe7,_0x242ea1){_0x209f80[_0x4db9('0x80')](_0xed6d75['id'])[_0x4db9('0x6a')](function(_0x3142b4){_0x146fe7({'code':0xc8,'message':_0x3142b4[_0x4db9('0x18')]});})['catch'](function(_0xa7541a){_0x242ea1(_0x3af042[_0x4db9('0x1a')](0x1f4,_0xa7541a['message']));});});},'EventManager':function(_0x10e0bc){var _0x3cc62f=this;return new Promise(function(_0x4062f2,_0x29e429){if(!_0x10e0bc['event']){return _0x29e429(_0x3cc62f['error'](0x1f4,_0x4db9('0x81')));}ami['emit'](_0x4db9('0x82')+_0x10e0bc[_0x4db9('0x83')],_0x10e0bc[_0x4db9('0x18')]);_0x4062f2({'code':0xc8,'message':_0x10e0bc});});},'FaxAccounts':function(){return new Promise(function(_0x27eeca){var _0x44a9e8=_[_0x4db9('0x60')](_0x4ed80a['faxAccounts']);_0x27eeca({'count':_0x44a9e8[_0x4db9('0x5c')],'rows':_0x44a9e8});});},'SendFax':function(_0x39e032){var _0x3d02c1=this;return new Promise(function(_0x2e1705,_0x1617b5){_0x5ecd46[_0x4db9('0x84')](_0x39e032)[_0x4db9('0x6a')](function(_0x4ea510){_0x2e1705({'code':0xc8,'message':_0x4ea510[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x3b3765){_0x1617b5(_0x3d02c1[_0x4db9('0x1a')](0x1f4,_0x3b3765['message']));});});},'CheckAfterSend':function(_0x49594a){var _0x564dcf=this;return new Promise(function(_0x1bf419,_0x40a477){_0x5ecd46[_0x4db9('0x85')](_0x49594a)['then'](function(_0x4ba50c){_0x1bf419({'code':0xc8,'message':_0x4ba50c[_0x4db9('0x18')]});})[_0x4db9('0x19')](function(_0x54a0d3){_0x40a477(_0x564dcf['error'](0x1f4,_0x54a0d3[_0x4db9('0x18')]));});});}};var _0x187df4=jayson['server'](_0x5d1f45)['http']();_0x187df4['on'](_0x4db9('0x1a'),function(_0x509637){return _0x31dd9f(_0x509637);});_0x187df4['listen'](0x232a,_0x4db9('0x86'),function(){console[_0x4db9('0x87')](_0x4db9('0x88'),0x232a);return _0x47a3f5('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0xb7e7=['emit','custom:','event','faxAccounts','send','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','moment','../properties','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','error','username','ami\x20disconnected','join','pick','keys','Reload','Action','then','message','catch','isConnected','asterisk','action','Command','content','voiceQueues','strategy','answered','loggedIn','pTalking','talking','total','unmanaged','waiting','loggedInDb','type','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','channels','voicechannel','validate','map','uniqueid','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','Channel\x20doesn\x27t\x20exist','resolve','channel','destinationchannel','StopMixMonitor','stop','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','outbound','run','Event\x20name\x20mandatory'];(function(_0x2bf1d6,_0x410efd){var _0x1be08a=function(_0x39c3a2){while(--_0x39c3a2){_0x2bf1d6['push'](_0x2bf1d6['shift']());}};_0x1be08a(++_0x410efd);}(_0xb7e7,0x121));var _0x7b7e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xb7e7[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var jayson=require(_0x7b7e('0x1'));var schema=require('validate');var moment=require(_0x7b7e('0x2'));var config=require('../../../config/environment');var properties=require(_0x7b7e('0x3'));var ami=require('../ami');exports[_0x7b7e('0x4')]=function(_0x118577,_0x1d9384,_0x52047f){return new Promise(function(_0x53ed64,_0x333fa4){var _0x372bde={'QueuePause':function(_0x7f87e0){return new Promise(function(_0x55ce81){var _0x42b871=util[_0x7b7e('0x5')](_0x7b7e('0x6'),_0x7b7e('0x7'),_0x7f87e0[_0x7b7e('0x8')]);if(_0x118577[_0x7b7e('0x9')]&&_0x118577[_0x7b7e('0x9')][_0x42b871]&&_0x118577['timers'][_0x42b871][_0x7b7e('0xa')]){_0x118577[_0x7b7e('0x9')][_0x42b871][_0x7b7e('0xb')]();}if(_0x118577[_0x7b7e('0xc')][_0x42b871]){_0x118577[_0x7b7e('0xc')][_0x42b871][_0x7b7e('0xd')]({'statePause':_0x7f87e0[_0x7b7e('0xe')]?!![]:![]});}_0x55ce81({'code':0xc8,'message':_0x7b7e('0xf')});});},'Reload':function(_0xaadda){var _0x54d8ce=this;return new Promise(function(_0x267446,_0x430eab){if(ami['isConnected']()==![]){return _0x430eab(_0x54d8ce[_0x7b7e('0x10')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x7b7e('0x11')],_0x7b7e('0x12')][_0x7b7e('0x13')]('\x20')));}_0xaadda=_[_0x7b7e('0x14')](_0xaadda,_[_0x7b7e('0x15')](properties['module']));_0xaadda['action']=_0x7b7e('0x16');return ami[_0x7b7e('0x17')](_0xaadda)[_0x7b7e('0x18')](function(_0x26aaec){_0x267446({'code':0xc8,'message':_0x26aaec[_0x7b7e('0x19')]});})[_0x7b7e('0x1a')](function(_0x242368){_0x430eab(_0x54d8ce[_0x7b7e('0x10')](0x1f5,_0x242368[_0x7b7e('0x19')]));});});},'Command':function(_0x429a0e){var _0x12e8e9=this;return new Promise(function(_0x14f4fe,_0x448980){if(ami[_0x7b7e('0x1b')]()==![]){return _0x448980(_0x12e8e9[_0x7b7e('0x10')](0x1f4,[config[_0x7b7e('0x1c')]['ip'],config[_0x7b7e('0x1c')]['username'],_0x7b7e('0x12')][_0x7b7e('0x13')]('\x20')));}_0x429a0e=_[_0x7b7e('0x14')](_0x429a0e,'command');_0x429a0e[_0x7b7e('0x1d')]=_0x7b7e('0x1e');return ami[_0x7b7e('0x17')](_0x429a0e)[_0x7b7e('0x18')](function(_0x2b7211){_0x14f4fe({'code':0xc8,'message':_0x2b7211[_0x7b7e('0x1f')]});})[_0x7b7e('0x1a')](function(_0x10a66a){_0x448980(_0x12e8e9['error'](0x1f5,_0x10a66a['message']));});});},'VoiceQueues':function(){return new Promise(function(_0x4a836a){var _0x26ee14=[];for(var _0x22598e in _0x118577[_0x7b7e('0x20')]){if(_0x118577['voiceQueues']['hasOwnProperty'](_0x22598e)){var _0x5dadbb=_0x118577[_0x7b7e('0x20')][_0x22598e];var _0x3c8192={'id':_0x5dadbb['id'],'name':_0x5dadbb[_0x7b7e('0x8')],'strategy':_0x5dadbb[_0x7b7e('0x21')],'answered':_0x5dadbb[_0x7b7e('0x22')],'available':_0x5dadbb['available'],'loggedIn':_0x5dadbb[_0x7b7e('0x23')],'pTalking':_0x5dadbb[_0x7b7e('0x24')],'sumBillable':_0x5dadbb['sumBillable'],'sumDuration':_0x5dadbb['sumDuration'],'sumHoldTime':_0x5dadbb['sumHoldTime']||0x0,'talking':_0x5dadbb[_0x7b7e('0x25')],'total':_0x5dadbb[_0x7b7e('0x26')],'type':_0x5dadbb['type'],'unmanaged':_0x5dadbb[_0x7b7e('0x27')],'abandoned':_0x5dadbb['abandoned'],'waiting':_0x5dadbb[_0x7b7e('0x28')],'loggedInDb':_0x5dadbb[_0x7b7e('0x29')]};if(_0x5dadbb[_0x7b7e('0x2a')]==='outbound'){_0x3c8192[_0x7b7e('0x2b')]=_0x5dadbb[_0x7b7e('0x2b')];_0x3c8192[_0x7b7e('0x2c')]=_0x5dadbb[_0x7b7e('0x2c')];_0x3c8192[_0x7b7e('0x2d')]=_0x5dadbb['dialOriginateCallerIdName'];_0x3c8192[_0x7b7e('0x2e')]=_0x5dadbb['dialOriginateCallerIdNumber'];_0x3c8192[_0x7b7e('0x2f')]=_0x5dadbb[_0x7b7e('0x2f')];_0x3c8192[_0x7b7e('0x30')]=_0x5dadbb[_0x7b7e('0x30')];_0x3c8192[_0x7b7e('0x31')]=_0x5dadbb[_0x7b7e('0x31')];_0x3c8192[_0x7b7e('0x32')]=_0x5dadbb['outboundAnswerAgiCallsDay'];_0x3c8192['outboundAnswerCallsDay']=_0x5dadbb[_0x7b7e('0x33')];_0x3c8192[_0x7b7e('0x34')]=_0x5dadbb['outboundBlacklistCallsDay'];_0x3c8192[_0x7b7e('0x35')]=_0x5dadbb[_0x7b7e('0x35')];_0x3c8192[_0x7b7e('0x36')]=_0x5dadbb['outboundCongestionCallsDay'];_0x3c8192[_0x7b7e('0x37')]=_0x5dadbb[_0x7b7e('0x37')];_0x3c8192[_0x7b7e('0x38')]=_0x5dadbb[_0x7b7e('0x38')];_0x3c8192[_0x7b7e('0x39')]=_0x5dadbb[_0x7b7e('0x39')];_0x3c8192[_0x7b7e('0x3a')]=_0x5dadbb[_0x7b7e('0x3a')];_0x3c8192[_0x7b7e('0x3b')]=_0x5dadbb[_0x7b7e('0x3b')];_0x3c8192[_0x7b7e('0x3c')]=_0x5dadbb[_0x7b7e('0x3c')];_0x3c8192[_0x7b7e('0x3d')]=_0x5dadbb[_0x7b7e('0x3d')];_0x3c8192[_0x7b7e('0x3e')]=_0x5dadbb[_0x7b7e('0x3e')];_0x3c8192['outboundUnknownCallsDay']=_0x5dadbb[_0x7b7e('0x3f')];_0x3c8192[_0x7b7e('0x40')]=_0x5dadbb[_0x7b7e('0x40')];_0x3c8192[_0x7b7e('0x41')]=_0x5dadbb[_0x7b7e('0x41')];_0x3c8192[_0x7b7e('0x42')]=_0x5dadbb[_0x7b7e('0x42')];_0x3c8192[_0x7b7e('0x43')]=_0x5dadbb[_0x7b7e('0x43')];_0x3c8192[_0x7b7e('0x44')]=_0x5dadbb['predictiveIntervalDroppedCallsTimeout'];_0x3c8192[_0x7b7e('0x45')]=_0x5dadbb[_0x7b7e('0x45')];_0x3c8192[_0x7b7e('0x46')]=_0x5dadbb[_0x7b7e('0x46')];_0x3c8192['predictiveIntervalHitRate']=_0x5dadbb[_0x7b7e('0x47')];_0x3c8192[_0x7b7e('0x48')]=_0x5dadbb[_0x7b7e('0x48')];_0x3c8192['predictiveIntervalPauses']=_0x5dadbb['predictiveIntervalPauses'];_0x3c8192[_0x7b7e('0x49')]=_0x5dadbb['predictiveIntervalAvailable'];_0x3c8192[_0x7b7e('0x4a')]=_0x5dadbb[_0x7b7e('0x4a')];_0x3c8192['message']=_0x5dadbb[_0x7b7e('0x19')];_0x3c8192[_0x7b7e('0x4b')]=_0x5dadbb[_0x7b7e('0x4b')];_0x3c8192[_0x7b7e('0x4c')]=_0x5dadbb[_0x7b7e('0x4c')];_0x3c8192[_0x7b7e('0x4d')]=_0x5dadbb[_0x7b7e('0x4d')];_0x3c8192[_0x7b7e('0x4e')]=_0x5dadbb[_0x7b7e('0x4e')];_0x3c8192['erlangBusyFactor']=_0x5dadbb['erlangBusyFactor'];_0x3c8192[_0x7b7e('0x4f')]=_0x5dadbb['startPredictive'];_0x3c8192[_0x7b7e('0x50')]=_0x5dadbb['startProgressive'];}if(_0x5dadbb['Trunk']){_0x3c8192[_0x7b7e('0x51')]={'id':_0x5dadbb['Trunk']['id'],'name':_0x5dadbb[_0x7b7e('0x51')]['name'],'active':_0x5dadbb[_0x7b7e('0x51')][_0x7b7e('0x52')],'callerid':_0x5dadbb[_0x7b7e('0x51')][_0x7b7e('0x53')]};}if(_0x5dadbb['Interval']){_0x3c8192[_0x7b7e('0x54')]={'id':_0x5dadbb[_0x7b7e('0x54')]['id'],'name':_0x5dadbb[_0x7b7e('0x54')][_0x7b7e('0x8')]};}_0x26ee14[_0x7b7e('0x55')](_0x3c8192);}}_0x4a836a({'count':_0x26ee14[_0x7b7e('0x56')],'rows':_0x26ee14});});},'UpdateVoiceQueue':function(_0x5e8572){return new Promise(function(_0x492df0,_0x5827f7){var _0xc5280c=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x20')],{'id':parseInt(_0x5e8572['id'])});var _0x2cfe70=_[_0x7b7e('0x58')](_0x5e8572,['id']);if(_0xc5280c){for(var _0x2d47c6 in _0x2cfe70){if(typeof _0x2cfe70[_0x2d47c6]!=='undefined'&&typeof _0xc5280c[_0x2d47c6]!==_0x7b7e('0x59')){_0xc5280c[_0x2d47c6]=_0x2cfe70[_0x2d47c6];}}_0x492df0(_0xc5280c);}else{_0x5827f7();}});},'VoiceChannels':function(){return new Promise(function(_0x42e560){var _0x5a0832=_['values'](_0x118577[_0x7b7e('0x5a')]);_0x42e560({'count':_0x5a0832[_0x7b7e('0x56')],'rows':_0x5a0832});});},'VoiceChannelMixMonitor':function(_0x249a6d){var _0x378a29=this;return new Promise(function(_0x38b4d0,_0xb46776){if(ami['isConnected']()==![]){return _0xb46776(_0x378a29[_0x7b7e('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x7b7e('0x1c')][_0x7b7e('0x11')],_0x7b7e('0x12')][_0x7b7e('0x13')]('\x20')));}var _0x58e4e6=schema(properties[_0x7b7e('0x5b')])[_0x7b7e('0x5c')](_0x249a6d);if(_0x58e4e6[_0x7b7e('0x56')]>0x0){return _0xb46776(_0x378a29[_0x7b7e('0x10')](0x1f4,_[_0x7b7e('0x5d')](_0x58e4e6,'message')[_0x7b7e('0x13')](',\x20')));}var _0x270c4a=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x5a')],{'uniqueid':_0x249a6d[_0x7b7e('0x5e')]});if(_0x270c4a&&_0x270c4a['channel']){var _0x1d6d18=util[_0x7b7e('0x5')](_0x7b7e('0x5f'),_0x249a6d[_0x7b7e('0x60')]||_0x249a6d[_0x7b7e('0x5e')],_0x249a6d[_0x7b7e('0x5')]||_0x7b7e('0x61'));return ami['Action']({'action':_0x7b7e('0x62'),'channel':_0x270c4a['channel'],'file':_0x1d6d18,'options':_0x7b7e('0x63')})[_0x7b7e('0x18')](function(_0x570303){var _0x36f1be=_[_0x7b7e('0x57')](_0x270c4a[_0x7b7e('0x64')],{'filename':_0x7b7e('0x65')+_0x1d6d18[_0x7b7e('0x66')]()});if(_[_0x7b7e('0x67')](_0x36f1be)){_0x270c4a[_0x7b7e('0x64')]['push']({'filename':_0x7b7e('0x65')+_0x1d6d18[_0x7b7e('0x66')](),'createdAt':moment()[_0x7b7e('0x5')](_0x7b7e('0x68')),'mixmonitorid':_0x570303['mixmonitorid'],'status':'rec'});}else{_0x36f1be['mixmonitorid']=_0x570303[_0x7b7e('0x69')];_0x36f1be[_0x7b7e('0x6a')]=_0x7b7e('0x6b');}_0x38b4d0({'code':0xc8,'message':[_0x249a6d['uniqueid'],'MixMonitor\x20Success',_0x570303[_0x7b7e('0x69')]][_0x7b7e('0x13')]('\x20'),'mixmonitorid':_0x570303['mixmonitorid']});})[_0x7b7e('0x1a')](function(_0xbe02ed){_0xb46776(_0x378a29[_0x7b7e('0x10')](0x1f5,[_0x249a6d['uniqueid'],_0xbe02ed[_0x7b7e('0x19')][_0x7b7e('0x66')]()]['join']('\x20')));});}else{return _0xb46776(_0x378a29[_0x7b7e('0x10')](0x1f5,_0x7b7e('0x6c')));}});},'VoiceChannelStopMixMonitor':function(_0x1d7db1){var _0x267aef=this;return new Promise(function(_0x41e78f,_0x310b9a){if(ami[_0x7b7e('0x1b')]()==![]){return _0x310b9a(_0x267aef[_0x7b7e('0x10')](0x1f4,[config[_0x7b7e('0x1c')]['ip'],config['asterisk'][_0x7b7e('0x11')],_0x7b7e('0x12')]['join']('\x20')));}var _0xc2b1b6=schema(properties[_0x7b7e('0x5b')])[_0x7b7e('0x5c')](_0x1d7db1);if(_0xc2b1b6['length']>0x0){return _0x310b9a(_0x267aef[_0x7b7e('0x10')](0x1f4,_['map'](_0xc2b1b6,_0x7b7e('0x19'))[_0x7b7e('0x13')](',\x20')));}var _0x51aa97=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x5a')],{'uniqueid':_0x1d7db1['uniqueid']});if(_0x51aa97){return Promise[_0x7b7e('0x6d')]()[_0x7b7e('0x18')](function(){if(_0x51aa97[_0x7b7e('0x6e')]){return ami[_0x7b7e('0x17')]({'action':'StopMixMonitor','channel':_0x51aa97[_0x7b7e('0x6e')],'mixmonitorid':_0x1d7db1[_0x7b7e('0x69')]})[_0x7b7e('0x1a')](function(){});}})[_0x7b7e('0x18')](function(){if(_0x51aa97[_0x7b7e('0x6f')]){return ami[_0x7b7e('0x17')]({'action':_0x7b7e('0x70'),'channel':_0x51aa97[_0x7b7e('0x6f')],'mixmonitorid':_0x1d7db1[_0x7b7e('0x69')]})[_0x7b7e('0x1a')](function(){});}})['then'](function(){var _0x191179=_['find'](_0x51aa97['monitors'],{'mixmonitorid':_0x1d7db1[_0x7b7e('0x69')]});if(_0x191179){_0x191179[_0x7b7e('0x6a')]=_0x7b7e('0x71');}})[_0x7b7e('0x18')](function(){var _0x5cd4ae=util[_0x7b7e('0x5')](_0x7b7e('0x5f'),_0x1d7db1[_0x7b7e('0x60')]||_0x1d7db1[_0x7b7e('0x5e')],_0x1d7db1[_0x7b7e('0x5')]||_0x7b7e('0x61'));var _0x4e485c=_[_0x7b7e('0x57')](_0x51aa97['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x5cd4ae[_0x7b7e('0x66')]()});if(_0x4e485c){_0x4e485c['status']=_0x7b7e('0x71');}})['then'](function(){_0x41e78f({'code':0xc8,'message':[_0x1d7db1[_0x7b7e('0x5e')],_0x7b7e('0x72')]['join']('\x20')});})[_0x7b7e('0x1a')](function(_0x2da71e){_0x310b9a(_0x267aef['error'](0x1f5,[_0x1d7db1[_0x7b7e('0x5e')],_0x2da71e[_0x7b7e('0x19')][_0x7b7e('0x66')]()][_0x7b7e('0x13')]('\x20')));});}else{return _0x310b9a(_0x267aef[_0x7b7e('0x10')](0x1f5,_0x7b7e('0x6c')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x8e9813){var _0x3f8f8f=_[_0x7b7e('0x73')](_0x118577[_0x7b7e('0x74')]);_0x8e9813({'count':_0x3f8f8f['length'],'rows':_0x3f8f8f});});},'VoiceQueuesChannel':function(_0x59ecf9){var _0x34e7df=this;return new Promise(function(_0x46ac1f,_0x2c6e3a){var _0x348c77=schema(properties[_0x7b7e('0x75')])[_0x7b7e('0x5c')](_0x59ecf9);if(_0x348c77[_0x7b7e('0x56')]>0x0){return _0x2c6e3a(_0x34e7df['error'](0x1f4,_[_0x7b7e('0x5d')](_0x348c77,_0x7b7e('0x19'))['join'](',\x20')));}var _0x3ce80e=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x74')],{'uniqueid':_0x59ecf9[_0x7b7e('0x5e')]});if(_0x3ce80e){_0x46ac1f(_0x3ce80e);}else{return _0x2c6e3a(_0x34e7df[_0x7b7e('0x10')](0x1f5,_0x7b7e('0x6c')));}});},'VoiceQueuesChannelHangup':function(_0x370e0b){var _0x1673cc=this;return new Promise(function(_0x1aec4b,_0x3b6bc6){if(ami[_0x7b7e('0x1b')]()==![]){return _0x3b6bc6(_0x1673cc['error'](0x1f4,[config[_0x7b7e('0x1c')]['ip'],config[_0x7b7e('0x1c')][_0x7b7e('0x11')],_0x7b7e('0x12')][_0x7b7e('0x13')]('\x20')));}var _0x3f71a5=schema(properties[_0x7b7e('0x76')])['validate'](_0x370e0b);if(_0x3f71a5[_0x7b7e('0x56')]>0x0){return _0x3b6bc6(_0x1673cc[_0x7b7e('0x10')](0x1f4,_[_0x7b7e('0x5d')](_0x3f71a5,'message')[_0x7b7e('0x13')](',\x20')));}var _0x195ae2=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x74')],{'uniqueid':_0x370e0b[_0x7b7e('0x5e')]});if(_0x195ae2&&_0x195ae2['channel']){return ami['Action']({'action':'Hangup','channel':_0x195ae2[_0x7b7e('0x6e')]})[_0x7b7e('0x18')](function(_0x24c6fe){_0x1aec4b({'code':0xc8,'message':[_0x370e0b['uniqueid'],_0x24c6fe[_0x7b7e('0x19')][_0x7b7e('0x66')]()][_0x7b7e('0x13')]('\x20')});})['catch'](function(_0x2983bf){_0x3b6bc6(_0x1673cc[_0x7b7e('0x10')](0x1f5,[_0x370e0b[_0x7b7e('0x5e')],_0x2983bf[_0x7b7e('0x19')]['toLowerCase']()][_0x7b7e('0x13')]('\x20')));});}else{return _0x3b6bc6(_0x1673cc[_0x7b7e('0x10')](0x1f5,_0x7b7e('0x6c')));}});},'VoiceQueuesChannelRedirect':function(_0x259f6e){var _0x4f0745=this;return new Promise(function(_0x4ec41e,_0x2b5d20){if(ami['isConnected']()==![]){return _0x2b5d20(_0x4f0745[_0x7b7e('0x10')](0x1f4,[config[_0x7b7e('0x1c')]['ip'],config[_0x7b7e('0x1c')][_0x7b7e('0x11')],'ami\x20disconnected'][_0x7b7e('0x13')]('\x20')));}var _0x236b59=schema(properties[_0x7b7e('0x77')])[_0x7b7e('0x5c')](_0x259f6e);if(_0x236b59[_0x7b7e('0x56')]>0x0){return _0x2b5d20(_0x4f0745[_0x7b7e('0x10')](0x1f4,_[_0x7b7e('0x5d')](_0x236b59,_0x7b7e('0x19'))[_0x7b7e('0x13')](',\x20')));}var _0x23f12e=_[_0x7b7e('0x57')](_0x118577[_0x7b7e('0x74')],{'uniqueid':_0x259f6e[_0x7b7e('0x5e')]});if(_0x23f12e&&_0x23f12e[_0x7b7e('0x6e')]){return ami[_0x7b7e('0x17')]({'action':_0x7b7e('0x78'),'channel':_0x23f12e['channel'],'exten':_0x259f6e[_0x7b7e('0x79')],'context':_0x259f6e[_0x7b7e('0x7a')]||_0x23f12e[_0x7b7e('0x7a')],'priority':0x1})[_0x7b7e('0x18')](function(_0x10c35e){_0x4ec41e({'code':0xc8,'message':[_0x259f6e[_0x7b7e('0x5e')],_0x10c35e[_0x7b7e('0x19')]['toLowerCase']()][_0x7b7e('0x13')]('\x20')});})[_0x7b7e('0x1a')](function(_0x3d86d6){_0x2b5d20(_0x4f0745[_0x7b7e('0x10')](0x1f5,[_0x259f6e[_0x7b7e('0x5e')],_0x3d86d6['message']['toLowerCase']()][_0x7b7e('0x13')]('\x20')));});}else{return _0x2b5d20(_0x4f0745[_0x7b7e('0x10')](0x1f5,_0x7b7e('0x6c')));}});},'Agents':function(_0x87d33a){return new Promise(function(_0x1887c7){var _0x332ded=_[_0x7b7e('0x73')](_0x118577[_0x7b7e('0xc')]);if(_0x87d33a&&_0x87d33a['id']){var _0xe0a4b8=_[_0x7b7e('0x57')](_0x332ded,function(_0x4ce589){return _0x4ce589['id']===_0x87d33a['id'];});_0x1887c7(_0xe0a4b8);}else{_0x1887c7({'count':_0x332ded[_0x7b7e('0x56')],'rows':_0x332ded});}});},'Telephones':function(){return new Promise(function(_0xe50a65){var _0x24c201=_[_0x7b7e('0x73')](_0x118577[_0x7b7e('0x7b')]);_0xe50a65({'count':_0x24c201[_0x7b7e('0x56')],'rows':_0x24c201});});},'Trunks':function(){return new Promise(function(_0x7214da){var _0x4fa49d=_[_0x7b7e('0x73')](_0x118577['trunks']);_0x7214da({'count':_0x4fa49d[_0x7b7e('0x56')],'rows':_0x4fa49d});});},'OutboundChannels':function(){return new Promise(function(_0xdc6a5c){var _0x4981a9=_[_0x7b7e('0x73')](_0x118577[_0x7b7e('0x7c')]);_0xdc6a5c({'count':_0x4981a9[_0x7b7e('0x56')],'rows':_0x4981a9});});},'Outbound':function(){return new Promise(function(_0x3242e6){_0x3242e6(_0x118577[_0x7b7e('0x7d')]);});},'Campaigns':function(){return new Promise(function(_0x515290){var _0x222b46=_['values'](_0x118577['campaigns']);_0x515290({'count':_0x222b46[_0x7b7e('0x56')],'rows':_0x222b46});});},'VoiceQueuesPreview':function(_0x2df7a5){var _0x1ca753=this;return new Promise(function(_0x1d080b,_0x4bb87b){_0x1d9384[_0x7b7e('0x7e')](_0x2df7a5['id'])['then'](function(_0x25233a){_0x1d080b({'code':0xc8,'message':_0x25233a[_0x7b7e('0x19')]});})[_0x7b7e('0x1a')](function(_0x1e71ab){_0x4bb87b(_0x1ca753[_0x7b7e('0x10')](0x1f4,_0x1e71ab[_0x7b7e('0x19')]));});});},'EventManager':function(_0xc48937){var _0x57c8d1=this;return new Promise(function(_0x4c1efb,_0x30eeee){if(!_0xc48937['event']){return _0x30eeee(_0x57c8d1[_0x7b7e('0x10')](0x1f4,_0x7b7e('0x7f')));}ami[_0x7b7e('0x80')](_0x7b7e('0x81')+_0xc48937[_0x7b7e('0x82')],_0xc48937[_0x7b7e('0x19')]);_0x4c1efb({'code':0xc8,'message':_0xc48937});});},'FaxAccounts':function(){return new Promise(function(_0xa304f1){var _0x15bbf5=_[_0x7b7e('0x73')](_0x118577[_0x7b7e('0x83')]);_0xa304f1({'count':_0x15bbf5[_0x7b7e('0x56')],'rows':_0x15bbf5});});},'SendFax':function(_0x197b92){var _0x5c8c30=this;return new Promise(function(_0x3b1ee6,_0x12d0cb){_0x52047f[_0x7b7e('0x84')](_0x197b92)[_0x7b7e('0x18')](function(_0x3a2413){_0x3b1ee6({'code':0xc8,'message':_0x3a2413[_0x7b7e('0x19')]});})[_0x7b7e('0x1a')](function(_0x3628b2){_0x12d0cb(_0x5c8c30[_0x7b7e('0x10')](0x1f4,_0x3628b2['message']));});});},'CheckAfterSend':function(_0x2691c4){var _0x97d43b=this;return new Promise(function(_0x5bc0c9,_0x36fae4){_0x52047f['checkAfterSend'](_0x2691c4)['then'](function(_0x1871d2){_0x5bc0c9({'code':0xc8,'message':_0x1871d2['message']});})['catch'](function(_0x8925c6){_0x36fae4(_0x97d43b[_0x7b7e('0x10')](0x1f4,_0x8925c6[_0x7b7e('0x19')]));});});}};var _0x531ab1=jayson[_0x7b7e('0x85')](_0x372bde)[_0x7b7e('0x86')]();_0x531ab1['on'](_0x7b7e('0x10'),function(_0x3b92e0){return _0x333fa4(_0x3b92e0);});_0x531ab1[_0x7b7e('0x4')](0x232a,_0x7b7e('0x87'),function(){console[_0x7b7e('0x88')](_0x7b7e('0x89'),0x232a);return _0x53ed64(_0x7b7e('0x8a')+0x232a);});});};
\ No newline at end of file
index 859dd83..8103835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6113=['ListId','createdAt','updatedAt','union','resolve','then','getContacts','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','uniqueid','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','trigger:%s','action','toLowerCase','merge','length','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','defaults','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data2','isNil','data5','xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','firstName','fax'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x6113,0x13e));var _0x3611=function(_0x3eb183,_0x3885ec){_0x3eb183=_0x3eb183-0x0;var _0x321dc1=_0x6113[_0x3eb183];return _0x321dc1;};'use strict';var _=require(_0x3611('0x0'));var BPromise=require(_0x3611('0x1'));var Redis=require(_0x3611('0x2'));var util=require(_0x3611('0x3'));var config=require(_0x3611('0x4'));var logger=require(_0x3611('0x5'))(_0x3611('0x6'));var cmContactRpc=require('../../rpc/cmContact');config['redis']=_[_0x3611('0x7')](config[_0x3611('0x8')],{'host':_0x3611('0x9'),'port':0x18eb});var io=require(_0x3611('0xa'))(new Redis(config[_0x3611('0x8')]));function emit(_0x3e5dfd,_0x30ed6f,_0x2d242b,_0x516659,_0x57b596){logger[_0x3611('0xb')](_0x3611('0xc'),_0x3e5dfd,_0x30ed6f['id'],_0x2d242b,_0x516659,JSON[_0x3611('0xd')](_0x57b596));io['to'](_0x2d242b)[_0x3611('0xe')](_0x516659,_0x57b596);}exports[_0x3611('0xf')]=function(_0xd6d12,_0x2e7e25,_0xecf816,_0x5d507e){var _0x5b2cfd,_0x4f37b7;var _0xb4ced={};var _0x341562;var _0x36379a=Number(_0xecf816['data1']);var _0x2872ea=_0xecf816[_0x3611('0x10')]?Boolean(Number(_0xecf816['data2'])):![];var _0x31fc11;var _0x484d4c=![];if(!_[_0x3611('0x11')](_0xecf816['data5'])){if(_0xecf816[_0x3611('0x12')]=='1')_0x484d4c=!![];}if(!_0x484d4c){if(_0x5d507e[_0x3611('0x13')]){_0xb4ced['id']=_0x5d507e['xmd-contactid'];}}if(!_0xb4ced['id']){_0xb4ced['ListId']=_0x36379a;_0x31fc11=_0xecf816['data3']&&_0xecf816[_0x3611('0x14')]!=='0'?_0xecf816[_0x3611('0x14')][_0x3611('0x15')](','):[_0x3611('0x16')];_0xb4ced[_0x3611('0x17')]=_[_0x3611('0x18')](_0x31fc11,function(_0x153acd){var _0x205e3c={};_0x205e3c[_0x153acd]=_0x5d507e[_0x3611('0x19')]?_0x5d507e[_0x3611('0x1a')]:_0x5d507e['calleridnum'];return _0x205e3c;});_0x341562=_0x5d507e[_0x3611('0x19')]?_0x5d507e[_0x3611('0x1a')]:_0x5d507e[_0x3611('0x1b')];}var _0x1c15bf=['id',_0x3611('0x1c'),'lastName',_0x3611('0x16'),'mobile',_0x3611('0x1d'),_0x3611('0x1e'),_0x3611('0x1f'),'scheduledAt',_0x3611('0x20')];var _0x2500c8=_[_0x3611('0x21')](_0x1c15bf,_0x31fc11);BPromise[_0x3611('0x22')]()[_0x3611('0x23')](cmContactRpc[_0x3611('0x24')]({'attributes':_0x2500c8,'where':_0xb4ced,'phone':_0x341562}))[_0x3611('0x23')](function(_0x18f545){_0x4f37b7=_0x18f545;if(!_['isEmpty'](_0x4f37b7)){if(_0x4f37b7['length']===0x1){_0x5b2cfd=_0x4f37b7[0x0];logger[_0x3611('0xb')](_0x3611('0x25'),_0x5d507e['uniqueid'],_0x2e7e25['id'],_0x5b2cfd['id']);}else{logger[_0x3611('0xb')](_0x3611('0x26'),_0x5d507e['uniqueid'],_0x2e7e25['id'],_[_0x3611('0x18')](_0x4f37b7,'id')[_0x3611('0x27')](','));}return;}else{logger[_0x3611('0xb')](_0x3611('0x28'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);var _0x1c2518={'ListId':_0x36379a};var _0x2bbdf4=_0xecf816[_0x3611('0x2a')]&&_0xecf816[_0x3611('0x2a')]!=='0'?_0xecf816['data4']:'phone';if(_0x2872ea){logger[_0x3611('0xb')](_0x3611('0x2b'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);_0x1c2518[_0x2bbdf4]=_[_0x3611('0x11')](_0x5d507e['routeId'])?_0x5d507e[_0x3611('0x1b')]:_0x5d507e[_0x3611('0x1a')];if(_[_0x3611('0x11')](_0x5d507e[_0x3611('0x19')])){_0x1c2518[_0x3611('0x1c')]=_0x5d507e['calleridname']&&_0x5d507e[_0x3611('0x2c')]!=='<unknown>'?_0x5d507e[_0x3611('0x2c')]:_0x3611('0x2d');}else{_0x1c2518[_0x3611('0x1c')]=_0x5d507e['destcalleridname']&&_0x5d507e[_0x3611('0x2e')]!==_0x3611('0x2f')?_0x5d507e[_0x3611('0x2e')]:'Unknown';}return BPromise[_0x3611('0x22')]()['then'](cmContactRpc[_0x3611('0x30')](_0x1c2518))[_0x3611('0x23')](function(_0x45cc1a){_0x5b2cfd=_0x45cc1a;_0x4f37b7[_0x3611('0x31')](_0x45cc1a);if(_0x5b2cfd){logger[_0x3611('0xb')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x5d507e['uniqueid'],_0x2e7e25['id'],_0x5b2cfd['id']);}return;});}else{logger['info'](_0x3611('0x32'),_0x5d507e[_0x3611('0x29')],_0x2e7e25['id']);_0x1c2518[_0x2bbdf4]=_[_0x3611('0x11')](_0x5d507e['routeId'])?_0x5d507e[_0x3611('0x1b')]:_0x5d507e['destcalleridnum'];if(_[_0x3611('0x11')](_0x5d507e[_0x3611('0x19')])){_0x1c2518['firstName']=_0x5d507e[_0x3611('0x2c')]&&_0x5d507e['calleridname']!=='<unknown>'?_0x5d507e[_0x3611('0x2c')]:'Unknown';}else{_0x1c2518[_0x3611('0x1c')]=_0x5d507e['destcalleridname']&&_0x5d507e[_0x3611('0x2e')]!=='<unknown>'?_0x5d507e[_0x3611('0x2e')]:'Unknown';}_0x5b2cfd=_0x1c2518;_0x4f37b7[_0x3611('0x31')](_0x1c2518);return;}}})[_0x3611('0x23')](function(){if(_0xd6d12){emit(_0x5d507e[_0x3611('0x29')],_0x2e7e25,util[_0x3611('0x33')](_0x3611('0x34'),_0xd6d12['name']),util['format'](_0x3611('0x35'),_0xecf816[_0x3611('0x36')][_0x3611('0x37')]()),{'evt':_[_0x3611('0x38')](_0x5d507e,{'autoCreate':_0x2872ea}),'contact':_0x5b2cfd===undefined?{}:_0x5b2cfd,'contacts':_0x4f37b7[_0x3611('0x39')]===0x0?undefined:_0x4f37b7});}});};
\ No newline at end of file
+var _0x1607=['xmd-contactid','ListId','data3','$or','map','routeId','calleridnum','firstName','phone','mobile','createdAt','scheduledAt','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','push','[CM][%s][%s]\x20Contact\x20created:%s','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/logger','../../rpc/cmContact','redis','defaults','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5'];(function(_0x5a9c3e,_0x5651b1){var _0x3e765e=function(_0x1e4fb7){while(--_0x1e4fb7){_0x5a9c3e['push'](_0x5a9c3e['shift']());}};_0x3e765e(++_0x5651b1);}(_0x1607,0x8e));var _0x7160=function(_0x4fadaf,_0xe74138){_0x4fadaf=_0x4fadaf-0x0;var _0x352acb=_0x1607[_0x4fadaf];return _0x352acb;};'use strict';var _=require(_0x7160('0x0'));var BPromise=require(_0x7160('0x1'));var Redis=require(_0x7160('0x2'));var util=require(_0x7160('0x3'));var config=require('../../../../config/environment');var logger=require(_0x7160('0x4'))('trigger');var cmContactRpc=require(_0x7160('0x5'));config[_0x7160('0x6')]=_[_0x7160('0x7')](config[_0x7160('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7160('0x6')]));function emit(_0x484ba5,_0x26bebe,_0x8c9da7,_0x51d6db,_0xdba7){logger[_0x7160('0x8')](_0x7160('0x9'),_0x484ba5,_0x26bebe['id'],_0x8c9da7,_0x51d6db,JSON[_0x7160('0xa')](_0xdba7));io['to'](_0x8c9da7)[_0x7160('0xb')](_0x51d6db,_0xdba7);}exports[_0x7160('0xc')]=function(_0x1324a8,_0x43fa1b,_0x28c651,_0x261d95){var _0x3cce0c,_0x274400;var _0x496019={};var _0x56861c;var _0x24903b=Number(_0x28c651[_0x7160('0xd')]);var _0x35c050=_0x28c651[_0x7160('0xe')]?Boolean(Number(_0x28c651['data2'])):![];var _0x49b99c;var _0x4abab0=![];if(!_[_0x7160('0xf')](_0x28c651[_0x7160('0x10')])){if(_0x28c651['data5']=='1')_0x4abab0=!![];}if(!_0x4abab0){if(_0x261d95[_0x7160('0x11')]){_0x496019['id']=_0x261d95[_0x7160('0x11')];}}if(!_0x496019['id']){_0x496019[_0x7160('0x12')]=_0x24903b;_0x49b99c=_0x28c651[_0x7160('0x13')]&&_0x28c651[_0x7160('0x13')]!=='0'?_0x28c651[_0x7160('0x13')]['split'](','):['phone'];_0x496019[_0x7160('0x14')]=_[_0x7160('0x15')](_0x49b99c,function(_0x3c06b8){var _0xe1e852={};_0xe1e852[_0x3c06b8]=_0x261d95[_0x7160('0x16')]?_0x261d95['destcalleridnum']:_0x261d95[_0x7160('0x17')];return _0xe1e852;});_0x56861c=_0x261d95[_0x7160('0x16')]?_0x261d95['destcalleridnum']:_0x261d95[_0x7160('0x17')];}var _0x325444=['id',_0x7160('0x18'),'lastName',_0x7160('0x19'),_0x7160('0x1a'),'fax',_0x7160('0x12'),_0x7160('0x1b'),_0x7160('0x1c'),'updatedAt'];var _0x2a59e8=_['union'](_0x325444,_0x49b99c);BPromise['resolve']()[_0x7160('0x1d')](cmContactRpc[_0x7160('0x1e')]({'attributes':_0x2a59e8,'where':_0x496019,'phone':_0x56861c}))[_0x7160('0x1d')](function(_0x5c3325){_0x274400=_0x5c3325;if(!_[_0x7160('0x1f')](_0x274400)){if(_0x274400[_0x7160('0x20')]===0x1){_0x3cce0c=_0x274400[0x0];logger['info'](_0x7160('0x21'),_0x261d95[_0x7160('0x22')],_0x43fa1b['id'],_0x3cce0c['id']);}else{logger[_0x7160('0x8')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x261d95['uniqueid'],_0x43fa1b['id'],_['map'](_0x274400,'id')[_0x7160('0x23')](','));}return;}else{logger[_0x7160('0x8')](_0x7160('0x24'),_0x261d95[_0x7160('0x22')],_0x43fa1b['id']);var _0x376d65={'ListId':_0x24903b};var _0x41c587=_0x28c651[_0x7160('0x25')]&&_0x28c651[_0x7160('0x25')]!=='0'?_0x28c651['data4']:_0x7160('0x19');if(_0x35c050){logger[_0x7160('0x8')](_0x7160('0x26'),_0x261d95[_0x7160('0x22')],_0x43fa1b['id']);_0x376d65[_0x41c587]=_[_0x7160('0xf')](_0x261d95[_0x7160('0x16')])?_0x261d95[_0x7160('0x17')]:_0x261d95[_0x7160('0x27')];if(_[_0x7160('0xf')](_0x261d95[_0x7160('0x16')])){_0x376d65['firstName']=_0x261d95['calleridname']&&_0x261d95[_0x7160('0x28')]!==_0x7160('0x29')?_0x261d95[_0x7160('0x28')]:_0x7160('0x2a');}else{_0x376d65[_0x7160('0x18')]=_0x261d95[_0x7160('0x2b')]&&_0x261d95[_0x7160('0x2b')]!==_0x7160('0x29')?_0x261d95[_0x7160('0x2b')]:_0x7160('0x2a');}return BPromise['resolve']()[_0x7160('0x1d')](cmContactRpc['createContact'](_0x376d65))[_0x7160('0x1d')](function(_0x131f90){_0x3cce0c=_0x131f90;_0x274400[_0x7160('0x2c')](_0x131f90);if(_0x3cce0c){logger['info'](_0x7160('0x2d'),_0x261d95[_0x7160('0x22')],_0x43fa1b['id'],_0x3cce0c['id']);}return;});}else{logger[_0x7160('0x8')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x261d95[_0x7160('0x22')],_0x43fa1b['id']);_0x376d65[_0x41c587]=_[_0x7160('0xf')](_0x261d95[_0x7160('0x16')])?_0x261d95['calleridnum']:_0x261d95[_0x7160('0x27')];if(_[_0x7160('0xf')](_0x261d95[_0x7160('0x16')])){_0x376d65['firstName']=_0x261d95[_0x7160('0x28')]&&_0x261d95[_0x7160('0x28')]!==_0x7160('0x29')?_0x261d95['calleridname']:'Unknown';}else{_0x376d65[_0x7160('0x18')]=_0x261d95[_0x7160('0x2b')]&&_0x261d95[_0x7160('0x2b')]!==_0x7160('0x29')?_0x261d95[_0x7160('0x2b')]:_0x7160('0x2a');}_0x3cce0c=_0x376d65;_0x274400[_0x7160('0x2c')](_0x376d65);return;}}})[_0x7160('0x1d')](function(){if(_0x1324a8){emit(_0x261d95[_0x7160('0x22')],_0x43fa1b,util[_0x7160('0x2e')](_0x7160('0x2f'),_0x1324a8[_0x7160('0x30')]),util[_0x7160('0x2e')](_0x7160('0x31'),_0x28c651[_0x7160('0x32')][_0x7160('0x33')]()),{'evt':_[_0x7160('0x34')](_0x261d95,{'autoCreate':_0x35c050}),'contact':_0x3cce0c===undefined?{}:_0x3cce0c,'contacts':_0x274400[_0x7160('0x20')]===0x0?undefined:_0x274400});}});};
\ No newline at end of file
index 496073f..77623a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1537=['toLowerCase','user:%s','contactmanager','exec','integration','accounts','queue','urlforward','script','parse','query','search','replace','channel','every','checkConditions','some','AnyConditions','field','account','chat','ChatWebsiteId','value','upperFirst','AccountId','operator','message','event','agent','membername','lastevent','routeId','mailSubstatus','null','substatus','offlineMessage','equals','exports','util','lodash','mustache','ioredis','./urlforward','./integration','./cmContact','../../../config/environment','trigger','redis','defaults','localhost','socket.io-emitter','popup','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:acceptmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','motionChannel','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','variables','Actions','length','action','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','800','windowHeight','600','data6','winApplication','winArguments','name','format','trigger:%s:%s'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1537,0x132));var _0x7153=function(_0x1b625e,_0x3b4838){_0x1b625e=_0x1b625e-0x0;var _0x1e5960=_0x1537[_0x1b625e];return _0x1e5960;};'use strict';var util=require(_0x7153('0x0'));var _=require(_0x7153('0x1'));var url=require('url');var Mustache=require(_0x7153('0x2'));var Redis=require(_0x7153('0x3'));var urlforward=require(_0x7153('0x4'));var integration=require(_0x7153('0x5'));var cmContact=require(_0x7153('0x6'));var script=require('./script');var config=require(_0x7153('0x7'));var logger=require('../../../config/logger')(_0x7153('0x8'));var ami=require('../ami');config[_0x7153('0x9')]=_[_0x7153('0xa')](config[_0x7153('0x9')],{'host':_0x7153('0xb'),'port':0x18eb});var io=require(_0x7153('0xc'))(new Redis(config[_0x7153('0x9')]));var operators={'equals':function(_0x463ed7,_0x50ed18){return _0x463ed7==_0x50ed18;},'not_equals':function(_0x23ab84,_0x55ab45){return _0x23ab84!=_0x55ab45;}};var barAndWebActions=[_0x7153('0xd'),_0x7153('0xe'),_0x7153('0xf')];function Trigger(_0x3104cd){this[_0x7153('0x10')]=_0x3104cd[_0x7153('0x10')];this[_0x7153('0x11')]=_0x3104cd['agents'];this[_0x7153('0x12')]=_0x3104cd[_0x7153('0x12')];this[_0x7153('0x13')]=_0x3104cd[_0x7153('0x13')];this[_0x7153('0x14')]=_0x3104cd[_0x7153('0x14')];this[_0x7153('0x15')]=_0x3104cd[_0x7153('0x15')];this[_0x7153('0x16')]=_0x3104cd[_0x7153('0x16')];this[_0x7153('0x17')]=_0x3104cd[_0x7153('0x17')];this[_0x7153('0x18')]=_0x3104cd['sugarcrmAccounts'];this['zohoAccounts']=_0x3104cd[_0x7153('0x19')];this[_0x7153('0x1a')]=_0x3104cd['deskAccounts'];this[_0x7153('0x1b')]=_0x3104cd[_0x7153('0x1b')];this[_0x7153('0x1c')]=_0x3104cd['servicenowAccounts'];this[_0x7153('0x1d')]=_0x3104cd[_0x7153('0x1d')];this[_0x7153('0x1e')]=_0x3104cd[_0x7153('0x1e')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x7153('0x17')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x7153('0x18')],'zoho':this[_0x7153('0x19')],'desk':this['deskAccounts'],'vtiger':this[_0x7153('0x1b')],'dynamics365':this[_0x7153('0x1d')],'freshsales':this[_0x7153('0x1e')],'servicenow':this[_0x7153('0x1c')]};ami['on'](_0x7153('0x1f'),this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x21'),this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x23'),this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x24'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on']('custom:agentnosuchnumber',this[_0x7153('0x20')]['bind'](this));ami['on']('custom:agentnoanswer',this['syncCustomEvent'][_0x7153('0x22')](this));ami['on'](_0x7153('0x25'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x26'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x27'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x28'),this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x29'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2a'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2b'),this['syncAgentDial']['bind'](this));ami['on'](_0x7153('0x2c'),this[_0x7153('0x2d')]['bind'](this));ami['on'](_0x7153('0x2e'),this[_0x7153('0x2d')][_0x7153('0x22')](this));ami['on'](_0x7153('0x2f'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on']('custom:closedinteraction',this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x30'),this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x31'),this['syncCustomEvent']['bind'](this));ami['on']('custom:outgoingmessage',this[_0x7153('0x20')][_0x7153('0x22')](this));ami['on'](_0x7153('0x32'),this[_0x7153('0x20')]['bind'](this));ami['on']('custom:rejectmessage',this[_0x7153('0x20')]['bind'](this));ami['on'](_0x7153('0x33'),this[_0x7153('0x20')][_0x7153('0x22')](this));}Trigger[_0x7153('0x34')][_0x7153('0x35')]=function(_0x7b5fcd,_0x4abb2c,_0xc5cac9){logger[_0x7153('0x36')](_0x7b5fcd,_0x4abb2c,JSON[_0x7153('0x37')](_0xc5cac9));io['to'](_0x7b5fcd)[_0x7153('0x35')](_0x4abb2c,_0xc5cac9);};Trigger['prototype'][_0x7153('0x20')]=function(_0x4888a7){var _0x4d7342=_[_0x7153('0x38')](_0x4888a7);if(typeof _0x4d7342[_0x7153('0x39')]===_0x7153('0x3a')){_0x4d7342['motionChannel']=_0x7153('0x3b');}this[_0x7153('0x3c')](_0x4d7342);};Trigger[_0x7153('0x34')][_0x7153('0x2d')]=function(_0xa0a44f){if(this[_0x7153('0x11')][_0xa0a44f[_0x7153('0x3d')]]){this['syncCustomEvent'](_0xa0a44f);}};Trigger['prototype'][_0x7153('0x3c')]=function(_0x12884f){var _0x4779b5;for(var _0x597065 in this[_0x7153('0x10')]){if(this[_0x7153('0x10')][_0x7153('0x3e')](_0x597065)){if(this[_0x7153('0x10')][_0x597065][_0x7153('0x3f')]){_0x4779b5=this[_0x7153('0x40')](this[_0x7153('0x10')][_0x597065],_0x12884f);if(_0x4779b5){_[_0x7153('0x41')](_0x12884f,_0x12884f[_0x7153('0x42')]);for(var _0xb3a508=0x0,_0x21192a,_0xb7e664,_0x1af9b1;_0xb3a508<this[_0x7153('0x10')][_0x597065][_0x7153('0x43')][_0x7153('0x44')];_0xb3a508+=0x1){_0x21192a=this[_0x7153('0x10')][_0x597065][_0x7153('0x43')][_0xb3a508];if(this['agents'][_0x12884f[_0x7153('0x3d')]]){switch(_0x21192a[_0x7153('0x45')]['toLowerCase']()){case'contactmanager':break;case _0x7153('0x46'):case _0x7153('0x47'):var _0xd7aa76={};switch(barAndWebActions[_0x21192a[_0x7153('0x48')]]){case _0x7153('0xd'):_0xd7aa76[_0x7153('0x49')]=_0x21192a[_0x7153('0x4a')];_0xd7aa76[_0x7153('0x4b')]=this[_0x7153('0x13')][_0x21192a[_0x7153('0x4a')]]?Mustache[_0x7153('0x4c')](this['templates'][_0x21192a[_0x7153('0x4a')]][_0x7153('0x4b')],_0x12884f):_0x7153('0x4d');break;case _0x7153('0xe'):_0xd7aa76[_0x7153('0x4e')]=this[_0x7153('0x4f')](_0x21192a['data2'],_0x12884f,_[_0x7153('0x50')](_0x21192a[_0x7153('0x51')])?!![]:parseInt(_0x21192a[_0x7153('0x51')],0xa));if(_[_0x7153('0x50')](_0x21192a['data4'])){_0xd7aa76[_0x7153('0x52')]='0';}else{_0xd7aa76[_0x7153('0x53')]=_0x21192a[_0x7153('0x54')];_0xd7aa76[_0x7153('0x55')]=_[_0x7153('0x50')](_0x21192a[_0x7153('0x56')])?_0x7153('0x57'):_0x21192a[_0x7153('0x56')];_0xd7aa76[_0x7153('0x58')]=_['isNil'](_0x21192a['data6'])?_0x7153('0x59'):_0x21192a[_0x7153('0x5a')];}break;case'winapp':_0xd7aa76[_0x7153('0x5b')]=_0x21192a[_0x7153('0x4a')]?Mustache[_0x7153('0x4c')](_0x21192a[_0x7153('0x4a')],_0x12884f):'';_0xd7aa76[_0x7153('0x5c')]=_0x21192a[_0x7153('0x51')]?Mustache[_0x7153('0x4c')](_0x21192a['data3'],_0x12884f):'';break;}this[_0x7153('0x35')](util['format']('user:%s',this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')](_0x7153('0x5f'),_0x21192a[_0x7153('0x45')][_0x7153('0x60')](),barAndWebActions[_0x21192a[_0x7153('0x48')]]),_['merge'](_0xd7aa76,_0x12884f));break;case'jscripty':this[_0x7153('0x35')](util['format'](_0x7153('0x61'),this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')]('trigger:%s',_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()),_[_0x7153('0x41')]({'ProjectId':parseInt(_0x21192a[_0x7153('0x48')],0xa)},_0x12884f));break;default:this[_0x7153('0x35')](util[_0x7153('0x5e')](_0x7153('0x61'),this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]][_0x7153('0x5d')]),util[_0x7153('0x5e')]('trigger:%s',_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()),_[_0x7153('0x41')]({},_0x21192a,_0x12884f));}}switch(_0x21192a[_0x7153('0x45')][_0x7153('0x60')]()){case _0x7153('0x62'):cmContact[_0x7153('0x63')](this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]],this[_0x7153('0x10')][_0x597065],_0x21192a,_0x12884f);break;case _0x7153('0x64'):integration[_0x7153('0x63')](_0x21192a,_0x12884f,this[_0x7153('0x65')],this[_0x7153('0x11')][_0x12884f[_0x7153('0x3d')]],this[_0x7153('0x12')][_0x12884f[_0x7153('0x66')]],this[_0x7153('0x14')][_0x12884f['routeId']]);break;case _0x7153('0x67'):urlforward['exec'](_0x21192a,_0x12884f);break;case _0x7153('0x68'):script[_0x7153('0x63')](_0x21192a,_0x12884f);break;}}}}}}};Trigger['prototype'][_0x7153('0x4f')]=function(_0x3a72d2,_0x5b4cd8,_0x251a65){var _0x42dbdc=url[_0x7153('0x69')](Mustache['render'](_0x3a72d2,_0x5b4cd8),!![]);if(_0x251a65){_['merge'](_0x42dbdc[_0x7153('0x6a')],_0x5b4cd8);}delete _0x42dbdc[_0x7153('0x6b')];var _0x34e0a2=url[_0x7153('0x5e')](_0x42dbdc);_0x34e0a2=_0x34e0a2[_0x7153('0x6c')](/\/\?/g,'?');return _0x34e0a2;};Trigger[_0x7153('0x34')][_0x7153('0x40')]=function(_0x3ae890,_0x2fc560){var _0x1b745b=!![];var _0x55241e=!![];var _0x2df634=![];if(_0x3ae890[_0x7153('0x6d')]===_0x2fc560[_0x7153('0x39')]){_0x2df634=!![];}if(_0x3ae890['AllConditions']['length']){_0x1b745b=_[_0x7153('0x6e')](_0x3ae890['AllConditions'],this[_0x7153('0x6f')](_0x2fc560,_0x3ae890[_0x7153('0x6d')]));}if(_0x3ae890['AnyConditions'][_0x7153('0x44')]){_0x55241e=_[_0x7153('0x70')](_0x3ae890[_0x7153('0x71')],this[_0x7153('0x6f')](_0x2fc560,_0x3ae890['channel']));}return _0x2df634&&_0x1b745b&&_0x55241e;};Trigger['prototype'][_0x7153('0x6f')]=function(_0x57d34a,_0x50f291){return function(_0x4d16c5){switch(_0x4d16c5[_0x7153('0x72')]){case _0x7153('0x73'):if(_0x57d34a['channel']===_0x50f291){if(_0x50f291===_0x7153('0x74')){return _0x57d34a[_0x7153('0x75')]?operators[_0x4d16c5['operator']](Number(_0x4d16c5[_0x7153('0x76')]),_0x57d34a['ChatWebsiteId']):![];}else{return _0x57d34a[_[_0x7153('0x77')](_0x50f291)+_0x7153('0x78')]?operators[_0x4d16c5[_0x7153('0x79')]](Number(_0x4d16c5[_0x7153('0x76')]),_0x57d34a[_[_0x7153('0x77')](_0x50f291)+'AccountId']):![];}}break;case'interaction':case _0x7153('0x7a'):if(_0x57d34a[_0x7153('0x6d')]===_0x50f291){return _0x57d34a[_0x7153('0x7b')]?operators[_0x4d16c5['operator']](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7b')]):![];}break;case _0x7153('0x66'):return _0x57d34a[_0x7153('0x66')]?operators[_0x4d16c5['operator']](_0x4d16c5[_0x7153('0x76')],_0x57d34a['queue']):![];case _0x7153('0x7c'):return _0x57d34a['membername']?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7d')]):![];case _0x7153('0x7e'):return _0x57d34a[_0x7153('0x7e')]?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7e')]):![];case _0x7153('0x7f'):return _0x57d34a[_0x7153('0x7f')]?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5[_0x7153('0x76')],_0x57d34a[_0x7153('0x7f')]):![];case _0x7153('0x80'):if(_0x4d16c5[_0x7153('0x76')]===_0x7153('0x81'))_0x4d16c5[_0x7153('0x76')]=null;return typeof _0x57d34a[_0x7153('0x82')]!=='undefined'?operators[_0x4d16c5[_0x7153('0x79')]](_0x4d16c5['value'],_0x57d34a[_0x7153('0x82')]):![];case _0x7153('0x83'):if(_0x57d34a['channel']===_0x50f291){return _0x4d16c5[_0x7153('0x76')]==='created'&&_0x4d16c5['operator']===_0x7153('0x84')?!![]:![];}break;}return![];};};module[_0x7153('0x85')]=Trigger;
\ No newline at end of file
+var _0x6050=['jscripty','trigger:%s','exec','queue','urlforward','parse','query','search','replace','channel','every','AllConditions','checkConditions','AnyConditions','some','field','account','ChatWebsiteId','upperFirst','AccountId','operator','value','interaction','message','agent','membername','lastevent','routeId','mailSubstatus','substatus','offlineMessage','created','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./cmContact','./script','../../../config/environment','redis','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','stringify','undefined','motionChannel','voice','interface','checkTriggers','hasOwnProperty','status','checkTrigger','Actions','length','action','toLowerCase','contactmanager','motionbar','data1','TemplateId','data2','template\x20not\x20found','buildUri','data3','isNil','data4','location','uriLocation','windowWidth','data5','800','data6','600','winApplication','render','format','user:%s','name','merge'];(function(_0x2c1dc5,_0x341598){var _0x376e35=function(_0x52cc43){while(--_0x52cc43){_0x2c1dc5['push'](_0x2c1dc5['shift']());}};_0x376e35(++_0x341598);}(_0x6050,0x196));var _0x0605=function(_0x191609,_0x15c6a9){_0x191609=_0x191609-0x0;var _0x543879=_0x6050[_0x191609];return _0x543879;};'use strict';var util=require(_0x0605('0x0'));var _=require(_0x0605('0x1'));var url=require(_0x0605('0x2'));var Mustache=require(_0x0605('0x3'));var Redis=require(_0x0605('0x4'));var urlforward=require(_0x0605('0x5'));var integration=require('./integration');var cmContact=require(_0x0605('0x6'));var script=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var logger=require('../../../config/logger')('trigger');var ami=require('../ami');config[_0x0605('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x0605('0xa'))(new Redis(config[_0x0605('0x9')]));var operators={'equals':function(_0xa08eca,_0x5bb96){return _0xa08eca==_0x5bb96;},'not_equals':function(_0x44fdd3,_0x52bb63){return _0x44fdd3!=_0x52bb63;}};var barAndWebActions=[_0x0605('0xb'),_0x0605('0x2'),_0x0605('0xc')];function Trigger(_0x2c5e23){this[_0x0605('0xd')]=_0x2c5e23[_0x0605('0xd')];this[_0x0605('0xe')]=_0x2c5e23[_0x0605('0xe')];this[_0x0605('0xf')]=_0x2c5e23[_0x0605('0xf')];this[_0x0605('0x10')]=_0x2c5e23[_0x0605('0x10')];this[_0x0605('0x11')]=_0x2c5e23[_0x0605('0x11')];this[_0x0605('0x12')]=_0x2c5e23[_0x0605('0x12')];this[_0x0605('0x13')]=_0x2c5e23[_0x0605('0x13')];this[_0x0605('0x14')]=_0x2c5e23['salesforceAccounts'];this[_0x0605('0x15')]=_0x2c5e23[_0x0605('0x15')];this[_0x0605('0x16')]=_0x2c5e23['zohoAccounts'];this['deskAccounts']=_0x2c5e23[_0x0605('0x17')];this[_0x0605('0x18')]=_0x2c5e23[_0x0605('0x18')];this[_0x0605('0x19')]=_0x2c5e23[_0x0605('0x19')];this[_0x0605('0x1a')]=_0x2c5e23[_0x0605('0x1a')];this[_0x0605('0x1b')]=_0x2c5e23[_0x0605('0x1b')];this[_0x0605('0x1c')]={'zendesk':this[_0x0605('0x12')],'salesforce':this[_0x0605('0x14')],'freshdesk':this[_0x0605('0x13')],'sugarcrm':this[_0x0605('0x15')],'zoho':this['zohoAccounts'],'desk':this[_0x0605('0x17')],'vtiger':this[_0x0605('0x18')],'dynamics365':this[_0x0605('0x1a')],'freshsales':this[_0x0605('0x1b')],'servicenow':this[_0x0605('0x19')]};ami['on'](_0x0605('0x1d'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x20'),this['syncCustomEvent'][_0x0605('0x1f')](this));ami['on']('custom:agentringnoanswer',this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x21'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x22'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x23'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x24'),this['syncCustomEvent'][_0x0605('0x1f')](this));ami['on'](_0x0605('0x25'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentreject',this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x26'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x27'),this['syncCustomEvent'][_0x0605('0x1f')](this));ami['on']('custom:timeout',this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x28'),this[_0x0605('0x29')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2a'),this['syncAgentDial'][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2b'),this[_0x0605('0x29')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2c'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2d'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2e'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x2f'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x30'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x31'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x32'),this[_0x0605('0x1e')][_0x0605('0x1f')](this));ami['on'](_0x0605('0x33'),this[_0x0605('0x1e')]['bind'](this));}Trigger[_0x0605('0x34')][_0x0605('0x35')]=function(_0x59da5f,_0x30c0ea,_0x128428){logger['info'](_0x59da5f,_0x30c0ea,JSON[_0x0605('0x36')](_0x128428));io['to'](_0x59da5f)[_0x0605('0x35')](_0x30c0ea,_0x128428);};Trigger[_0x0605('0x34')][_0x0605('0x1e')]=function(_0x31cb08){var _0x17cd94=_['clone'](_0x31cb08);if(typeof _0x17cd94['motionChannel']===_0x0605('0x37')){_0x17cd94[_0x0605('0x38')]=_0x0605('0x39');}this['checkTriggers'](_0x17cd94);};Trigger[_0x0605('0x34')]['syncAgentDial']=function(_0xbb1eeb){if(this[_0x0605('0xe')][_0xbb1eeb[_0x0605('0x3a')]]){this[_0x0605('0x1e')](_0xbb1eeb);}};Trigger[_0x0605('0x34')][_0x0605('0x3b')]=function(_0x88c0ae){var _0x24e5af;for(var _0x2ef7bf in this[_0x0605('0xd')]){if(this['triggers'][_0x0605('0x3c')](_0x2ef7bf)){if(this['triggers'][_0x2ef7bf][_0x0605('0x3d')]){_0x24e5af=this[_0x0605('0x3e')](this[_0x0605('0xd')][_0x2ef7bf],_0x88c0ae);if(_0x24e5af){_['merge'](_0x88c0ae,_0x88c0ae['variables']);for(var _0xeaab8=0x0,_0x5dd71e,_0x40db41,_0x52f4b6;_0xeaab8<this[_0x0605('0xd')][_0x2ef7bf][_0x0605('0x3f')][_0x0605('0x40')];_0xeaab8+=0x1){_0x5dd71e=this[_0x0605('0xd')][_0x2ef7bf][_0x0605('0x3f')][_0xeaab8];if(this[_0x0605('0xe')][_0x88c0ae[_0x0605('0x3a')]]){switch(_0x5dd71e[_0x0605('0x41')][_0x0605('0x42')]()){case _0x0605('0x43'):break;case _0x0605('0x44'):case'browser':var _0x52adc3={};switch(barAndWebActions[_0x5dd71e[_0x0605('0x45')]]){case'popup':_0x52adc3[_0x0605('0x46')]=_0x5dd71e[_0x0605('0x47')];_0x52adc3['html']=this[_0x0605('0x10')][_0x5dd71e[_0x0605('0x47')]]?Mustache['render'](this[_0x0605('0x10')][_0x5dd71e[_0x0605('0x47')]]['html'],_0x88c0ae):_0x0605('0x48');break;case _0x0605('0x2'):_0x52adc3['uri']=this[_0x0605('0x49')](_0x5dd71e['data2'],_0x88c0ae,_['isNil'](_0x5dd71e[_0x0605('0x4a')])?!![]:parseInt(_0x5dd71e[_0x0605('0x4a')],0xa));if(_[_0x0605('0x4b')](_0x5dd71e[_0x0605('0x4c')])){_0x52adc3[_0x0605('0x4d')]='0';}else{_0x52adc3[_0x0605('0x4e')]=_0x5dd71e[_0x0605('0x4c')];_0x52adc3[_0x0605('0x4f')]=_['isNil'](_0x5dd71e[_0x0605('0x50')])?_0x0605('0x51'):_0x5dd71e[_0x0605('0x50')];_0x52adc3['windowHeight']=_[_0x0605('0x4b')](_0x5dd71e[_0x0605('0x52')])?_0x0605('0x53'):_0x5dd71e[_0x0605('0x52')];}break;case _0x0605('0xc'):_0x52adc3[_0x0605('0x54')]=_0x5dd71e[_0x0605('0x47')]?Mustache[_0x0605('0x55')](_0x5dd71e[_0x0605('0x47')],_0x88c0ae):'';_0x52adc3['winArguments']=_0x5dd71e[_0x0605('0x4a')]?Mustache[_0x0605('0x55')](_0x5dd71e[_0x0605('0x4a')],_0x88c0ae):'';break;}this[_0x0605('0x35')](util[_0x0605('0x56')](_0x0605('0x57'),this[_0x0605('0xe')][_0x88c0ae[_0x0605('0x3a')]][_0x0605('0x58')]),util[_0x0605('0x56')]('trigger:%s:%s',_0x5dd71e['action']['toLowerCase'](),barAndWebActions[_0x5dd71e[_0x0605('0x45')]]),_[_0x0605('0x59')](_0x52adc3,_0x88c0ae));break;case _0x0605('0x5a'):this[_0x0605('0x35')](util[_0x0605('0x56')](_0x0605('0x57'),this['agents'][_0x88c0ae[_0x0605('0x3a')]][_0x0605('0x58')]),util[_0x0605('0x56')](_0x0605('0x5b'),_0x5dd71e['action'][_0x0605('0x42')]()),_[_0x0605('0x59')]({'ProjectId':parseInt(_0x5dd71e[_0x0605('0x45')],0xa)},_0x88c0ae));break;default:this['emit'](util['format'](_0x0605('0x57'),this[_0x0605('0xe')][_0x88c0ae[_0x0605('0x3a')]]['name']),util['format'](_0x0605('0x5b'),_0x5dd71e['action'][_0x0605('0x42')]()),_[_0x0605('0x59')]({},_0x5dd71e,_0x88c0ae));}}switch(_0x5dd71e[_0x0605('0x41')][_0x0605('0x42')]()){case _0x0605('0x43'):cmContact[_0x0605('0x5c')](this[_0x0605('0xe')][_0x88c0ae['interface']],this[_0x0605('0xd')][_0x2ef7bf],_0x5dd71e,_0x88c0ae);break;case'integration':integration[_0x0605('0x5c')](_0x5dd71e,_0x88c0ae,this['accounts'],this[_0x0605('0xe')][_0x88c0ae[_0x0605('0x3a')]],this[_0x0605('0xf')][_0x88c0ae[_0x0605('0x5d')]],this['voiceExtensions'][_0x88c0ae['routeId']]);break;case _0x0605('0x5e'):urlforward[_0x0605('0x5c')](_0x5dd71e,_0x88c0ae);break;case'script':script['exec'](_0x5dd71e,_0x88c0ae);break;}}}}}}};Trigger['prototype'][_0x0605('0x49')]=function(_0x2b43cf,_0x267b55,_0xc8f15c){var _0x3af2ad=url[_0x0605('0x5f')](Mustache['render'](_0x2b43cf,_0x267b55),!![]);if(_0xc8f15c){_[_0x0605('0x59')](_0x3af2ad[_0x0605('0x60')],_0x267b55);}delete _0x3af2ad[_0x0605('0x61')];var _0x31fda0=url[_0x0605('0x56')](_0x3af2ad);_0x31fda0=_0x31fda0[_0x0605('0x62')](/\/\?/g,'?');return _0x31fda0;};Trigger[_0x0605('0x34')][_0x0605('0x3e')]=function(_0x533a9c,_0x5d34d3){var _0x51c72d=!![];var _0x4751b5=!![];var _0x1799e2=![];if(_0x533a9c[_0x0605('0x63')]===_0x5d34d3['motionChannel']){_0x1799e2=!![];}if(_0x533a9c['AllConditions'][_0x0605('0x40')]){_0x51c72d=_[_0x0605('0x64')](_0x533a9c[_0x0605('0x65')],this[_0x0605('0x66')](_0x5d34d3,_0x533a9c[_0x0605('0x63')]));}if(_0x533a9c[_0x0605('0x67')][_0x0605('0x40')]){_0x4751b5=_[_0x0605('0x68')](_0x533a9c[_0x0605('0x67')],this[_0x0605('0x66')](_0x5d34d3,_0x533a9c[_0x0605('0x63')]));}return _0x1799e2&&_0x51c72d&&_0x4751b5;};Trigger[_0x0605('0x34')]['checkConditions']=function(_0x3e6fe5,_0x2fd9e3){return function(_0x1a2e3c){switch(_0x1a2e3c[_0x0605('0x69')]){case _0x0605('0x6a'):if(_0x3e6fe5[_0x0605('0x63')]===_0x2fd9e3){if(_0x2fd9e3==='chat'){return _0x3e6fe5[_0x0605('0x6b')]?operators[_0x1a2e3c['operator']](Number(_0x1a2e3c['value']),_0x3e6fe5[_0x0605('0x6b')]):![];}else{return _0x3e6fe5[_[_0x0605('0x6c')](_0x2fd9e3)+_0x0605('0x6d')]?operators[_0x1a2e3c[_0x0605('0x6e')]](Number(_0x1a2e3c[_0x0605('0x6f')]),_0x3e6fe5[_[_0x0605('0x6c')](_0x2fd9e3)+_0x0605('0x6d')]):![];}}break;case _0x0605('0x70'):case _0x0605('0x71'):if(_0x3e6fe5[_0x0605('0x63')]===_0x2fd9e3){return _0x3e6fe5['event']?operators[_0x1a2e3c['operator']](_0x1a2e3c['value'],_0x3e6fe5['event']):![];}break;case'queue':return _0x3e6fe5[_0x0605('0x5d')]?operators[_0x1a2e3c[_0x0605('0x6e')]](_0x1a2e3c[_0x0605('0x6f')],_0x3e6fe5['queue']):![];case _0x0605('0x72'):return _0x3e6fe5[_0x0605('0x73')]?operators[_0x1a2e3c[_0x0605('0x6e')]](_0x1a2e3c[_0x0605('0x6f')],_0x3e6fe5[_0x0605('0x73')]):![];case _0x0605('0x74'):return _0x3e6fe5['lastevent']?operators[_0x1a2e3c[_0x0605('0x6e')]](_0x1a2e3c[_0x0605('0x6f')],_0x3e6fe5[_0x0605('0x74')]):![];case'routeId':return _0x3e6fe5['routeId']?operators[_0x1a2e3c['operator']](_0x1a2e3c[_0x0605('0x6f')],_0x3e6fe5[_0x0605('0x75')]):![];case _0x0605('0x76'):if(_0x1a2e3c[_0x0605('0x6f')]==='null')_0x1a2e3c['value']=null;return typeof _0x3e6fe5[_0x0605('0x77')]!==_0x0605('0x37')?operators[_0x1a2e3c['operator']](_0x1a2e3c[_0x0605('0x6f')],_0x3e6fe5[_0x0605('0x77')]):![];case _0x0605('0x78'):if(_0x3e6fe5[_0x0605('0x63')]===_0x2fd9e3){return _0x1a2e3c[_0x0605('0x6f')]===_0x0605('0x79')&&_0x1a2e3c[_0x0605('0x6e')]===_0x0605('0x7a')?!![]:![];}break;}return![];};};module[_0x0605('0x7b')]=Trigger;
\ No newline at end of file
index fff4714..67e1b5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x5c63c2,_0x473c7f){var _0x3d7d86=function(_0x1e6353){while(--_0x1e6353){_0x5c63c2['push'](_0x5c63c2['shift']());}};_0x3d7d86(++_0x473c7f);}(_0x814b,0x1a2));var _0xb814=function(_0x1f62c3,_0x1ff95b){_0x1f62c3=_0x1f62c3-0x0;var _0x385c1c=_0x814b[_0x1f62c3];return _0x385c1c;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x1f10e5,_0x13d0d1){var _0x50ee47=function(_0x44a74d){while(--_0x44a74d){_0x1f10e5['push'](_0x1f10e5['shift']());}};_0x50ee47(++_0x13d0d1);}(_0x55ca,0x126));var _0xa55c=function(_0x426de2,_0x24acaf){_0x426de2=_0x426de2-0x0;var _0x1dbafc=_0x55ca[_0x426de2];return _0x1dbafc;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
index c1ff8f9..f712429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ae6=['userEmail','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','userId','systemuserid','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','4.0','body','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','replace','%2b','contactid','nothing','forEach','picklist','nameField','customField','idField','indexOf','content','ticketType','incident','POST','incidents','assign','getString','Subjects','Descriptions','/contacts(','phonecall','callDirection','queue','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','recordingURL',']\x20The\x20User\x20ID\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','data7','tenantId','CloudProvider','resolve','data5','clientId','username','password','then','catch',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','value','validateEmail','email'];(function(_0x4392af,_0xec5afe){var _0x9fa8eb=function(_0x41d7a4){while(--_0x41d7a4){_0x4392af['push'](_0x4392af['shift']());}};_0x9fa8eb(++_0xec5afe);}(_0x2ae6,0x11e));var _0x62ae=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x2ae6[_0x352e09];return _0x1b7094;};'use strict';var _=require(_0x62ae('0x0'));var rp=require(_0x62ae('0x1'));var util=require(_0x62ae('0x2'));var intUtil=require(_0x62ae('0x3'));var md5=require(_0x62ae('0x4'));var Redis=require('ioredis');var logger=require(_0x62ae('0x5'))(_0x62ae('0x6'));var config=require(_0x62ae('0x7'));config[_0x62ae('0x8')]=_['defaults'](config[_0x62ae('0x8')],{'host':_0x62ae('0x9'),'port':0x18eb});var io=require(_0x62ae('0xa'))(new Redis(config['redis']));function getAuthToken(_0x17df5d,_0x22136f,_0x5391d0){if(_0x17df5d[_0x62ae('0xb')]){_0x17df5d['remoteUri']=_0x17df5d['CloudProvider'][_0x62ae('0xc')];_0x17df5d[_0x62ae('0xd')]=_0x17df5d[_0x62ae('0xe')]['data2'];return Promise[_0x62ae('0xf')](_0x17df5d[_0x62ae('0xe')][_0x62ae('0x10')]);}var _0x1b7aaa={'method':'POST','uri':_0x22136f,'form':{'client_id':_0x17df5d[_0x62ae('0x11')],'resource':_0x17df5d['remoteUri'],'username':_0x17df5d[_0x62ae('0x12')],'password':_0x17df5d[_0x62ae('0x13')],'grant_type':_0x62ae('0x13'),'client_secret':_0x17df5d['clientSecret']},'json':!![]};return rp(_0x1b7aaa)[_0x62ae('0x14')](function(_0x4218db){return _0x4218db['access_token'];})[_0x62ae('0x15')](function(_0x53f1e0){logger['error']('['+[_0x5391d0['toUpperCase']()]+_0x62ae('0x16'));return _0x53f1e0[_0x62ae('0x17')];});}function getUser(_0x1e8c7a,_0x4e519a,_0x59aee2,_0x394500,_0x3d29ab,_0x361281){return new Promise(function(_0x17cc9c,_0x28921b){return getAuthToken(_0x4e519a,_0x394500,_0x361281)['then'](function(_0x4aeb30){var _0x4bfbb0={'method':_0x62ae('0x18'),'uri':_0x3d29ab+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x62ae('0x19')+_0x4aeb30,'OData-Version':'4.0'},'json':!![]};return rp(_0x4bfbb0);})['then'](function(_0xdb0cee){var _0x40633a=_0xdb0cee[_0x62ae('0x1a')];var _0x578bbd=![];var _0x4a713f=null;if(!_['isNil'](_0x59aee2)){if(intUtil[_0x62ae('0x1b')](_0x59aee2[_0x62ae('0x1c')])){_0x1e8c7a[_0x62ae('0x1d')]=_0x59aee2['email'];for(_0x4a713f=0x0;_0x4a713f<_0x40633a[_0x62ae('0x1e')];_0x4a713f++){if(_0x40633a[_0x4a713f][_0x62ae('0x1f')]===_0x59aee2[_0x62ae('0x1c')]&&!_0x40633a[_0x4a713f][_0x62ae('0x20')]){_0x578bbd=!![];logger[_0x62ae('0x21')]('['+[_0x361281[_0x62ae('0x22')]()]+_0x62ae('0x23')+_0x40633a[_0x4a713f]['systemuserid']+'!');_0x1e8c7a[_0x62ae('0x24')]=_0x40633a[_0x4a713f]['systemuserid'];}}}}if(!_0x578bbd){logger[_0x62ae('0x21')]('['+[_0x361281[_0x62ae('0x22')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x1e8c7a[_0x62ae('0x1d')]=_0x4e519a[_0x62ae('0x12')];for(_0x4a713f=0x0;_0x4a713f<_0x40633a['length'];_0x4a713f++){if(_0x40633a[_0x4a713f][_0x62ae('0x1f')]===_0x4e519a[_0x62ae('0x12')]){_0x1e8c7a[_0x62ae('0x24')]=_0x40633a[_0x4a713f][_0x62ae('0x25')];}}}_0x17cc9c(_0x1e8c7a);})[_0x62ae('0x15')](function(_0xfb8ae){_0x28921b(_0xfb8ae['message']);});});}function createEndUser(_0x19833a,_0x5d89ee,_0x17c2b5,_0xdd960f,_0x4f7f0e,_0x22ed85,_0x3e6c30){return new Promise(function(_0x3e8794,_0x5154be){return getAuthToken(_0x5d89ee,_0x17c2b5,_0x22ed85)[_0x62ae('0x14')](function(_0xd1ae9){var _0x15b254=_0x22ed85[_0x62ae('0x26')]()===_0x62ae('0x27')?_0x4f7f0e[_0x62ae('0x28')]:_0x4f7f0e['calleridnum'];var _0x302cdd={'method':'POST','uri':_0xdd960f+_0x62ae('0x29'),'body':{'fullname':_0x15b254,'firstname':_0x15b254,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x62ae('0x2a')+_0x19833a[_0x62ae('0x24')]+')'},'headers':{'Authorization':_0x62ae('0x19')+_0xd1ae9,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};_0x302cdd[_0x62ae('0x2c')][_0x3e6c30]=_0x15b254;return rp(_0x302cdd);})['then'](function(_0x22b50a){var _0x284a4b=_0x22b50a['headers'][_0x62ae('0x2d')];var _0x3aedfb=_0x284a4b[_0x62ae('0x2e')](_0x284a4b[_0x62ae('0x2f')]('(')+0x1,_0x284a4b[_0x62ae('0x2f')](')'));_0x19833a[_0x62ae('0x30')]=_0x3aedfb;_0x3e8794(_0x19833a);})[_0x62ae('0x15')](function(_0x1bf6ec){_0x5154be(_0x1bf6ec[_0x62ae('0x17')]);});});}function getEndUser(_0x5f22e0,_0x5ea840,_0x1d626e,_0x22db26,_0x10f62e,_0xb69e4a,_0x46be64,_0x329af5){var _0x43a612=_0xb69e4a[_0x62ae('0x26')]()===_0x62ae('0x27')?_0x10f62e[_0x62ae('0x28')]:_0x10f62e['calleridnum'];return getAuthToken(_0x5ea840,_0x1d626e,_0xb69e4a)[_0x62ae('0x14')](function(_0x13bcc6){_0x329af5=_0x329af5?_0x329af5:_0x62ae('0x31');var _0x33fbb9={'method':_0x62ae('0x18'),'uri':_0x22db26+_0x62ae('0x32')+_0x329af5+_0x62ae('0x33')+_0x329af5+'\x20eq\x20\x27'+_0x43a612[_0x62ae('0x34')]('+',_0x62ae('0x35'))+'\x27','headers':{'Authorization':_0x62ae('0x19')+_0x13bcc6,'If-None-Match':null,'OData-Version':_0x62ae('0x2b')},'json':!![]};return rp(_0x33fbb9);})['then'](function(_0x33efb6){var _0x41419e=![];if(!_0x33efb6)return _0x41419e;var _0x4336a7=_0x33efb6['value'];for(var _0x5358a2=0x0;_0x5358a2<_0x4336a7[_0x62ae('0x1e')];_0x5358a2++){if(_0x4336a7[_0x5358a2][_0x329af5]===_0x43a612){_0x41419e=!![];_0x5f22e0[_0x62ae('0x30')]=_0x4336a7[_0x5358a2][_0x62ae('0x36')];}}return _0x41419e;})[_0x62ae('0x14')](function(_0x2abfe7){if(_0x2abfe7)return _0x5f22e0;if(_0x46be64===_0x62ae('0x37')){logger['info']('['+[_0xb69e4a['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x5f22e0;}return createEndUser(_0x5f22e0,_0x5ea840,_0x1d626e,_0x22db26,_0x10f62e,_0xb69e4a,_0x329af5)[_0x62ae('0x14')](function(_0x5d43b1){logger[_0x62ae('0x21')]('['+[_0xb69e4a[_0x62ae('0x22')]()]+']\x20Enduser\x20created!',_0x5d43b1[_0x62ae('0x30')]);return _0x5d43b1;});});}function getCustomFields(_0x2e76d6,_0x454e10,_0x219167){var _0x503dd6={};if(_0x2e76d6['length']>0x0){_[_0x62ae('0x38')](_0x2e76d6,function(_0x301949){if(_['includes'](['string',_0x62ae('0x39')],_0x301949['type'])&&_0x301949[_0x62ae('0x3a')]&&!_0x301949[_0x62ae('0x3b')]){var _0x2590ae=_0x301949[_0x62ae('0x3c')][_0x62ae('0x26')]();var _0x41e7cc=_0x2590ae[_0x62ae('0x2e')](0x0,_0x2590ae[_0x62ae('0x3d')]('_'));var _0x1e34ea=_0x2590ae[_0x62ae('0x2e')](_0x2590ae[_0x62ae('0x3d')]('_')+0x1);if(_0x41e7cc===_0x219167){_0x503dd6[_0x1e34ea]=_0x301949[_0x62ae('0x3e')];}}});}return _0x503dd6;}function getTicket(_0x203ce5,_0x5cd97d,_0x97d6f9,_0x40ee52,_0x44e1b0,_0x19321b,_0x28a6f3){return new Promise(function(_0x5e8df2,_0x373d9f){var _0x319a40;return getAuthToken(_0x5cd97d,_0x97d6f9,_0x28a6f3)[_0x62ae('0x14')](function(_0x578a8a){if(_0x19321b[_0x62ae('0x3f')]===_0x62ae('0x40')){_0x319a40={'method':_0x62ae('0x41'),'uri':_0x40ee52+_0x62ae('0x42'),'body':Object[_0x62ae('0x43')]({},{'title':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x45')],_0x44e1b0,'\x20'),'description':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x46')],_0x44e1b0,'\x0a'),'customerid_contact@odata.bind':_0x203ce5['enduserId']?_0x62ae('0x47')+_0x203ce5[_0x62ae('0x30')]+')':undefined,'ownerid@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','caseorigincode':'1'},getCustomFields(_0x19321b['Fields'],_0x44e1b0,_0x19321b[_0x62ae('0x3f')])),'headers':{'Authorization':_0x62ae('0x19')+_0x578a8a,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x19321b[_0x62ae('0x3f')]===_0x62ae('0x48')){var _0x28dec1=_0x203ce5[_0x62ae('0x30')]?[{'partyid_systemuser@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','participationtypemask':_0x203ce5[_0x62ae('0x49')]===_0x62ae('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x203ce5['enduserId']+')','participationtypemask':_0x203ce5[_0x62ae('0x49')]===_0x62ae('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x203ce5[_0x62ae('0x24')]+')','participationtypemask':_0x203ce5['callDirection']==='queue'?0x2:0x1}];_0x319a40={'method':'POST','uri':_0x40ee52+'phonecalls','body':Object[_0x62ae('0x43')]({},{'subject':intUtil['getString'](_0x19321b['Subjects'],_0x44e1b0,'\x20'),'phonenumber':String(_0x44e1b0['calleridnum']),'description':intUtil[_0x62ae('0x44')](_0x19321b[_0x62ae('0x46')],_0x44e1b0,'\x0a'),'regardingobjectid_contact@odata.bind':_0x203ce5[_0x62ae('0x30')]?_0x62ae('0x47')+_0x203ce5[_0x62ae('0x30')]+')':undefined,'ownerid@odata.bind':_0x62ae('0x2a')+_0x203ce5[_0x62ae('0x24')]+')','directioncode':_0x203ce5[_0x62ae('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':_0x28dec1},getCustomFields(_0x19321b['Fields'],_0x44e1b0,_0x19321b[_0x62ae('0x3f')])),'headers':{'Authorization':_0x62ae('0x19')+_0x578a8a,'OData-Version':_0x62ae('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x319a40);})[_0x62ae('0x14')](function(_0x5f00c2){var _0x1b9830=_0x5f00c2[_0x62ae('0x4b')]['odata-entityid'];var _0x2a3c89=_0x1b9830[_0x62ae('0x2e')](_0x1b9830[_0x62ae('0x2f')]('(')+0x1,_0x1b9830[_0x62ae('0x2f')](')'));_0x203ce5[_0x62ae('0x4c')]=_0x2a3c89;_0x5e8df2(_0x203ce5);})['catch'](function(_0x523069){_0x373d9f(_0x523069[_0x62ae('0x17')]);});});}function emit(_0x5f0b56,_0x17e7de,_0x1bfc27,_0x40cd30){var _0x528749={'uri':util[_0x62ae('0x4d')](_0x62ae('0x4e'),_0x5f0b56,_0x1bfc27,_0x40cd30)};io['to'](util[_0x62ae('0x4d')](_0x62ae('0x4f'),_0x17e7de))[_0x62ae('0x50')](_0x62ae('0x51'),_0x528749);}exports['cs']=function(_0x1a943b,_0x1b253a,_0x3e1878,_0x2d2709,_0x51708b,_0x17eb0e,_0xc35403,_0x535be1){var _0x1aa1c3={};_0x17eb0e[_0x62ae('0x52')]=_0x17eb0e[_0x62ae('0xb')]?intUtil[_0x62ae('0x53')](_0x17eb0e['CloudProvider'][_0x62ae('0xc')]):intUtil['stripTrailingSlash'](_0x17eb0e[_0x62ae('0x52')]);_0x17eb0e[_0x62ae('0x54')]=intUtil[_0x62ae('0x53')](_0x17eb0e[_0x62ae('0x54')]);_0x1aa1c3[_0x62ae('0x49')]=_0x535be1===_0x62ae('0x4a')||_0x535be1===_0x62ae('0x55')?_0x62ae('0x4a'):'outbound';var _0x36c93e=_0x17eb0e['modernAuthentication']?util['format'](_0x62ae('0x56'),_0x17eb0e['CloudProvider'][_0x62ae('0xc')]):util[_0x62ae('0x4d')](_0x62ae('0x56'),_0x17eb0e[_0x62ae('0x52')]);var _0x4bbd8f=util['format'](_0x62ae('0x57'),_0x17eb0e[_0x62ae('0xd')]);var _0x9bdab=util[_0x62ae('0x4d')](_0x62ae('0x58'),_0x17eb0e[_0x62ae('0x54')],_0x1b253a[_0x62ae('0x59')],md5(_0x1b253a['uniqueid']));if(_0x51708b&&_0x51708b['monitor_format']){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x1b253a['recordingURL']=_0x9bdab;}else if(_0xc35403&&_0xc35403['recordingFormat']&&_0xc35403[_0x62ae('0x5a')]!==_0x62ae('0x5b')){logger['info'](_0x62ae('0x5c'),_0x62ae('0x5d'));_0x1b253a[_0x62ae('0x5e')]=_0x9bdab;}else{_0x1b253a[_0x62ae('0x5e')]='';}return getUser(_0x1aa1c3,_0x17eb0e,_0x2d2709,_0x4bbd8f,_0x36c93e,_0x535be1)[_0x62ae('0x14')](function(_0x54c637){logger[_0x62ae('0x21')]('['+_0x535be1['toUpperCase']()+_0x62ae('0x5f'),_0x54c637[_0x62ae('0x24')]);logger['info']('['+_0x535be1[_0x62ae('0x22')]()+']\x20The\x20User\x20email\x20is:',_0x54c637['userEmail']);return getEndUser(_0x54c637,_0x17eb0e,_0x4bbd8f,_0x36c93e,_0x1b253a,_0x535be1,_0x3e1878[_0x62ae('0x60')],_0x3e1878['additionalSearchContact']);})[_0x62ae('0x14')](function(_0x2121af){logger[_0x62ae('0x21')]('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x61'),_0x2121af[_0x62ae('0x30')]);logger['info']('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x62'),_0x1b253a['calleridnum']);return getTicket(_0x2121af,_0x17eb0e,_0x4bbd8f,_0x36c93e,_0x1b253a,_0x3e1878,_0x535be1);})[_0x62ae('0x14')](function(_0x3f3376){logger[_0x62ae('0x21')](util[_0x62ae('0x4d')]('['+_0x535be1[_0x62ae('0x22')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x3e1878['ticketType'],_0x3f3376[_0x62ae('0x4c')]));logger[_0x62ae('0x21')](util[_0x62ae('0x4d')]('['+_0x535be1[_0x62ae('0x22')]()+_0x62ae('0x63'),_0x535be1));if(_0x535be1!==_0x62ae('0x55')&&_0x3e1878[_0x62ae('0x64')]){logger[_0x62ae('0x21')]('['+_0x535be1[_0x62ae('0x22')]()+']',_0x62ae('0x65'));emit(_0x17eb0e[_0x62ae('0x52')],_0x2d2709[_0x62ae('0x66')],_0x3e1878['ticketType'],_0x3f3376[_0x62ae('0x4c')]);}})[_0x62ae('0x15')](function(_0xd6e6f8){logger[_0x62ae('0x67')]('['+_0x535be1[_0x62ae('0x22')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0xd6e6f8[_0x62ae('0x17')]);console[_0x62ae('0x67')](_0x62ae('0x68'),_0xd6e6f8);});};
\ No newline at end of file
+var _0x42df=['Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','ioredis','dynamics365','redis','defaults','localhost','socket.io-emitter','remoteUri','CloudProvider','data7','data2','resolve','data5','username','password','clientSecret','then','catch','error','message','GET','4.0','value','validateEmail','userEmail','email','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','toLowerCase','outbound','calleridnum','contacts','Bearer\x20','body','headers','odata-entityid','substring','lastIndexOf','enduserId','destcalleridnum','contacts?$select=','\x20eq\x20\x27','replace','%2b','length','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','string','picklist','type','nameField','customField','indexOf','ticketType','incident','POST','incidents','assign','getString','Subjects','Descriptions','/contacts(','/systemusers(','Fields','phonecall','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:','moduleCreate',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab'];(function(_0x42e407,_0x22ff7b){var _0x2e55b6=function(_0x4b0e05){while(--_0x4b0e05){_0x42e407['push'](_0x42e407['shift']());}};_0x2e55b6(++_0x22ff7b);}(_0x42df,0x13e));var _0xf42d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x42df[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xf42d('0x0'));var rp=require(_0xf42d('0x1'));var util=require(_0xf42d('0x2'));var intUtil=require('./util');var md5=require('md5');var Redis=require(_0xf42d('0x3'));var logger=require('../../../../config/logger')(_0xf42d('0x4'));var config=require('../../../../config/environment');config[_0xf42d('0x5')]=_[_0xf42d('0x6')](config[_0xf42d('0x5')],{'host':_0xf42d('0x7'),'port':0x18eb});var io=require(_0xf42d('0x8'))(new Redis(config['redis']));function getAuthToken(_0xd32f8e,_0x4f6aae,_0x51d3ee){if(_0xd32f8e['modernAuthentication']){_0xd32f8e[_0xf42d('0x9')]=_0xd32f8e[_0xf42d('0xa')][_0xf42d('0xb')];_0xd32f8e['tenantId']=_0xd32f8e[_0xf42d('0xa')][_0xf42d('0xc')];return Promise[_0xf42d('0xd')](_0xd32f8e[_0xf42d('0xa')][_0xf42d('0xe')]);}var _0x58b0e4={'method':'POST','uri':_0x4f6aae,'form':{'client_id':_0xd32f8e['clientId'],'resource':_0xd32f8e[_0xf42d('0x9')],'username':_0xd32f8e[_0xf42d('0xf')],'password':_0xd32f8e[_0xf42d('0x10')],'grant_type':_0xf42d('0x10'),'client_secret':_0xd32f8e[_0xf42d('0x11')]},'json':!![]};return rp(_0x58b0e4)[_0xf42d('0x12')](function(_0x504866){return _0x504866['access_token'];})[_0xf42d('0x13')](function(_0x5d66d5){logger[_0xf42d('0x14')]('['+[_0x51d3ee['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x5d66d5[_0xf42d('0x15')];});}function getUser(_0x584e8c,_0x5c8155,_0x5ab07b,_0x10f95a,_0x5ac75b,_0x3e4797){return new Promise(function(_0x3c1e62,_0x51a7da){return getAuthToken(_0x5c8155,_0x10f95a,_0x3e4797)[_0xf42d('0x12')](function(_0x148fc8){var _0x306c3f={'method':_0xf42d('0x16'),'uri':_0x5ac75b+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x148fc8,'OData-Version':_0xf42d('0x17')},'json':!![]};return rp(_0x306c3f);})[_0xf42d('0x12')](function(_0x322198){var _0x493965=_0x322198[_0xf42d('0x18')];var _0x30969c=![];var _0x539089=null;if(!_['isNil'](_0x5ab07b)){if(intUtil[_0xf42d('0x19')](_0x5ab07b['email'])){_0x584e8c[_0xf42d('0x1a')]=_0x5ab07b['email'];for(_0x539089=0x0;_0x539089<_0x493965['length'];_0x539089++){if(_0x493965[_0x539089]['internalemailaddress']===_0x5ab07b[_0xf42d('0x1b')]&&!_0x493965[_0x539089]['isdisabled']){_0x30969c=!![];logger[_0xf42d('0x1c')]('['+[_0x3e4797[_0xf42d('0x1d')]()]+_0xf42d('0x1e')+_0x493965[_0x539089][_0xf42d('0x1f')]+'!');_0x584e8c[_0xf42d('0x20')]=_0x493965[_0x539089][_0xf42d('0x1f')];}}}}if(!_0x30969c){logger[_0xf42d('0x1c')]('['+[_0x3e4797[_0xf42d('0x1d')]()]+_0xf42d('0x21'));_0x584e8c['userEmail']=_0x5c8155['username'];for(_0x539089=0x0;_0x539089<_0x493965['length'];_0x539089++){if(_0x493965[_0x539089][_0xf42d('0x22')]===_0x5c8155[_0xf42d('0xf')]){_0x584e8c[_0xf42d('0x20')]=_0x493965[_0x539089]['systemuserid'];}}}_0x3c1e62(_0x584e8c);})[_0xf42d('0x13')](function(_0x38f7dc){_0x51a7da(_0x38f7dc[_0xf42d('0x15')]);});});}function createEndUser(_0x946046,_0x41d176,_0xde4f67,_0x57880f,_0x1c2943,_0x35e0de,_0x594189){return new Promise(function(_0x2f61c8,_0x23f040){return getAuthToken(_0x41d176,_0xde4f67,_0x35e0de)['then'](function(_0xe226b3){var _0x337f89=_0x35e0de[_0xf42d('0x23')]()===_0xf42d('0x24')?_0x1c2943['destcalleridnum']:_0x1c2943[_0xf42d('0x25')];var _0x5e17b4={'method':'POST','uri':_0x57880f+_0xf42d('0x26'),'body':{'fullname':_0x337f89,'firstname':_0x337f89,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x946046['userId']+')'},'headers':{'Authorization':_0xf42d('0x27')+_0xe226b3,'OData-Version':_0xf42d('0x17')},'json':!![],'resolveWithFullResponse':!![]};_0x5e17b4[_0xf42d('0x28')][_0x594189]=_0x337f89;return rp(_0x5e17b4);})[_0xf42d('0x12')](function(_0x52b816){var _0x2575c4=_0x52b816[_0xf42d('0x29')][_0xf42d('0x2a')];var _0x4057fb=_0x2575c4[_0xf42d('0x2b')](_0x2575c4[_0xf42d('0x2c')]('(')+0x1,_0x2575c4[_0xf42d('0x2c')](')'));_0x946046[_0xf42d('0x2d')]=_0x4057fb;_0x2f61c8(_0x946046);})['catch'](function(_0x2831cd){_0x23f040(_0x2831cd[_0xf42d('0x15')]);});});}function getEndUser(_0x739bf0,_0x24e16c,_0x28730a,_0x65cfd5,_0x5b9e80,_0x35c21e,_0x3c31a4,_0x33f784){var _0x4e3717=_0x35c21e['toLowerCase']()===_0xf42d('0x24')?_0x5b9e80[_0xf42d('0x2e')]:_0x5b9e80['calleridnum'];return getAuthToken(_0x24e16c,_0x28730a,_0x35c21e)[_0xf42d('0x12')](function(_0x1f7e0c){_0x33f784=_0x33f784?_0x33f784:'telephone1';var _0x35c2f8={'method':'GET','uri':_0x65cfd5+_0xf42d('0x2f')+_0x33f784+'&$filter='+_0x33f784+_0xf42d('0x30')+_0x4e3717[_0xf42d('0x31')]('+',_0xf42d('0x32'))+'\x27','headers':{'Authorization':_0xf42d('0x27')+_0x1f7e0c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x35c2f8);})[_0xf42d('0x12')](function(_0x4a8ee1){var _0x5c201a=![];if(!_0x4a8ee1)return _0x5c201a;var _0x24a9c4=_0x4a8ee1['value'];for(var _0x54bd49=0x0;_0x54bd49<_0x24a9c4[_0xf42d('0x33')];_0x54bd49++){if(_0x24a9c4[_0x54bd49][_0x33f784]===_0x4e3717){_0x5c201a=!![];_0x739bf0[_0xf42d('0x2d')]=_0x24a9c4[_0x54bd49][_0xf42d('0x34')];}}return _0x5c201a;})['then'](function(_0x53b7ba){if(_0x53b7ba)return _0x739bf0;if(_0x3c31a4===_0xf42d('0x35')){logger['info']('['+[_0x35c21e['toUpperCase']()]+_0xf42d('0x36'));return _0x739bf0;}return createEndUser(_0x739bf0,_0x24e16c,_0x28730a,_0x65cfd5,_0x5b9e80,_0x35c21e,_0x33f784)['then'](function(_0x553462){logger[_0xf42d('0x1c')]('['+[_0x35c21e[_0xf42d('0x1d')]()]+_0xf42d('0x37'),_0x553462[_0xf42d('0x2d')]);return _0x553462;});});}function getCustomFields(_0x2beac1,_0x198946,_0x45f25e){var _0x583f40={};if(_0x2beac1['length']>0x0){_['forEach'](_0x2beac1,function(_0x14f9e5){if(_[_0xf42d('0x38')]([_0xf42d('0x39'),_0xf42d('0x3a')],_0x14f9e5[_0xf42d('0x3b')])&&_0x14f9e5[_0xf42d('0x3c')]&&!_0x14f9e5[_0xf42d('0x3d')]){var _0x1ab68e=_0x14f9e5['idField']['toLowerCase']();var _0x56875e=_0x1ab68e[_0xf42d('0x2b')](0x0,_0x1ab68e[_0xf42d('0x3e')]('_'));var _0x5391a4=_0x1ab68e[_0xf42d('0x2b')](_0x1ab68e[_0xf42d('0x3e')]('_')+0x1);if(_0x56875e===_0x45f25e){_0x583f40[_0x5391a4]=_0x14f9e5['content'];}}});}return _0x583f40;}function getTicket(_0x594c45,_0x217802,_0x4ffbd1,_0x5372ef,_0x535caa,_0x303f46,_0x5c3566){return new Promise(function(_0x49158b,_0x180f98){var _0x2add80;return getAuthToken(_0x217802,_0x4ffbd1,_0x5c3566)[_0xf42d('0x12')](function(_0x39d965){if(_0x303f46[_0xf42d('0x3f')]===_0xf42d('0x40')){_0x2add80={'method':_0xf42d('0x41'),'uri':_0x5372ef+_0xf42d('0x42'),'body':Object[_0xf42d('0x43')]({},{'title':intUtil[_0xf42d('0x44')](_0x303f46[_0xf42d('0x45')],_0x535caa,'\x20'),'description':intUtil[_0xf42d('0x44')](_0x303f46[_0xf42d('0x46')],_0x535caa,'\x0a'),'customerid_contact@odata.bind':_0x594c45[_0xf42d('0x2d')]?_0xf42d('0x47')+_0x594c45['enduserId']+')':undefined,'ownerid@odata.bind':_0xf42d('0x48')+_0x594c45[_0xf42d('0x20')]+')','caseorigincode':'1'},getCustomFields(_0x303f46[_0xf42d('0x49')],_0x535caa,_0x303f46[_0xf42d('0x3f')])),'headers':{'Authorization':_0xf42d('0x27')+_0x39d965,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x303f46[_0xf42d('0x3f')]===_0xf42d('0x4a')){var _0x2bfd24=_0x594c45['enduserId']?[{'partyid_systemuser@odata.bind':_0xf42d('0x48')+_0x594c45['userId']+')','participationtypemask':_0x594c45[_0xf42d('0x4b')]===_0xf42d('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x594c45['enduserId']+')','participationtypemask':_0x594c45[_0xf42d('0x4b')]===_0xf42d('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xf42d('0x48')+_0x594c45[_0xf42d('0x20')]+')','participationtypemask':_0x594c45[_0xf42d('0x4b')]==='queue'?0x2:0x1}];_0x2add80={'method':_0xf42d('0x41'),'uri':_0x5372ef+'phonecalls','body':Object[_0xf42d('0x43')]({},{'subject':intUtil['getString'](_0x303f46[_0xf42d('0x45')],_0x535caa,'\x20'),'phonenumber':String(_0x535caa[_0xf42d('0x25')]),'description':intUtil[_0xf42d('0x44')](_0x303f46['Descriptions'],_0x535caa,'\x0a'),'regardingobjectid_contact@odata.bind':_0x594c45[_0xf42d('0x2d')]?'/contacts('+_0x594c45[_0xf42d('0x2d')]+')':undefined,'ownerid@odata.bind':_0xf42d('0x48')+_0x594c45[_0xf42d('0x20')]+')','directioncode':_0x594c45[_0xf42d('0x4b')]==='queue'?![]:!![],'phonecall_activity_parties':_0x2bfd24},getCustomFields(_0x303f46[_0xf42d('0x49')],_0x535caa,_0x303f46['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x39d965,'OData-Version':_0xf42d('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x2add80);})[_0xf42d('0x12')](function(_0x4ff78f){var _0x4d0152=_0x4ff78f[_0xf42d('0x29')][_0xf42d('0x2a')];var _0x21c756=_0x4d0152[_0xf42d('0x2b')](_0x4d0152[_0xf42d('0x2c')]('(')+0x1,_0x4d0152[_0xf42d('0x2c')](')'));_0x594c45[_0xf42d('0x4d')]=_0x21c756;_0x49158b(_0x594c45);})[_0xf42d('0x13')](function(_0x444f4b){_0x180f98(_0x444f4b[_0xf42d('0x15')]);});});}function emit(_0x3f1461,_0x371633,_0x4aba56,_0x118573){var _0x88158f={'uri':util[_0xf42d('0x4e')](_0xf42d('0x4f'),_0x3f1461,_0x4aba56,_0x118573)};io['to'](util[_0xf42d('0x4e')](_0xf42d('0x50'),_0x371633))[_0xf42d('0x51')](_0xf42d('0x52'),_0x88158f);}exports['cs']=function(_0x10d1df,_0x51ac7a,_0x2f6e44,_0x36da3e,_0x3ea4b0,_0x525450,_0x57e2df,_0x22d2a8){var _0x42c025={};_0x525450[_0xf42d('0x9')]=_0x525450[_0xf42d('0x53')]?intUtil[_0xf42d('0x54')](_0x525450[_0xf42d('0xa')][_0xf42d('0xb')]):intUtil[_0xf42d('0x54')](_0x525450['remoteUri']);_0x525450[_0xf42d('0x55')]=intUtil[_0xf42d('0x54')](_0x525450[_0xf42d('0x55')]);_0x42c025['callDirection']=_0x22d2a8===_0xf42d('0x4c')||_0x22d2a8===_0xf42d('0x56')?_0xf42d('0x4c'):_0xf42d('0x24');var _0x4354b7=_0x525450[_0xf42d('0x53')]?util['format']('%s/api/data/v9.0/',_0x525450[_0xf42d('0xa')][_0xf42d('0xb')]):util[_0xf42d('0x4e')](_0xf42d('0x57'),_0x525450[_0xf42d('0x9')]);var _0x26f5aa=util[_0xf42d('0x4e')](_0xf42d('0x58'),_0x525450[_0xf42d('0x59')]);var _0x1ce16d=util[_0xf42d('0x4e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x525450[_0xf42d('0x55')],_0x51ac7a[_0xf42d('0x5a')],md5(_0x51ac7a[_0xf42d('0x5a')]));if(_0x3ea4b0&&_0x3ea4b0['monitor_format']){logger['info'](_0xf42d('0x5b'),_0xf42d('0x5c'));_0x51ac7a[_0xf42d('0x5d')]=_0x1ce16d;}else if(_0x57e2df&&_0x57e2df[_0xf42d('0x5e')]&&_0x57e2df[_0xf42d('0x5e')]!=='none'){logger[_0xf42d('0x1c')](_0xf42d('0x5f'),_0xf42d('0x5c'));_0x51ac7a[_0xf42d('0x5d')]=_0x1ce16d;}else{_0x51ac7a[_0xf42d('0x5d')]='';}return getUser(_0x42c025,_0x525450,_0x36da3e,_0x26f5aa,_0x4354b7,_0x22d2a8)['then'](function(_0x561fd0){logger[_0xf42d('0x1c')]('['+_0x22d2a8[_0xf42d('0x1d')]()+_0xf42d('0x60'),_0x561fd0[_0xf42d('0x20')]);logger[_0xf42d('0x1c')]('['+_0x22d2a8[_0xf42d('0x1d')]()+']\x20The\x20User\x20email\x20is:',_0x561fd0[_0xf42d('0x1a')]);return getEndUser(_0x561fd0,_0x525450,_0x26f5aa,_0x4354b7,_0x51ac7a,_0x22d2a8,_0x2f6e44[_0xf42d('0x61')],_0x2f6e44['additionalSearchContact']);})[_0xf42d('0x12')](function(_0x2d74b9){logger['info']('['+_0x22d2a8['toUpperCase']()+']\x20The\x20Enduser\x20ID\x20is:',_0x2d74b9[_0xf42d('0x2d')]);logger[_0xf42d('0x1c')]('['+_0x22d2a8[_0xf42d('0x1d')]()+_0xf42d('0x62'),_0x51ac7a['calleridnum']);return getTicket(_0x2d74b9,_0x525450,_0x26f5aa,_0x4354b7,_0x51ac7a,_0x2f6e44,_0x22d2a8);})['then'](function(_0x285ebf){logger['info'](util[_0xf42d('0x4e')]('['+_0x22d2a8[_0xf42d('0x1d')]()+_0xf42d('0x63'),_0x2f6e44[_0xf42d('0x3f')],_0x285ebf[_0xf42d('0x4d')]));logger[_0xf42d('0x1c')](util[_0xf42d('0x4e')]('['+_0x22d2a8['toUpperCase']()+_0xf42d('0x64'),_0x22d2a8));if(_0x22d2a8!==_0xf42d('0x56')&&_0x2f6e44[_0xf42d('0x65')]){logger[_0xf42d('0x1c')]('['+_0x22d2a8['toUpperCase']()+']',_0xf42d('0x66'));emit(_0x525450['remoteUri'],_0x36da3e['name'],_0x2f6e44[_0xf42d('0x3f')],_0x285ebf[_0xf42d('0x4d')]);}})[_0xf42d('0x13')](function(_0xe60124){logger[_0xf42d('0x14')]('['+_0x22d2a8[_0xf42d('0x1d')]()+_0xf42d('0x67'),_0xe60124[_0xf42d('0x15')]);console[_0xf42d('0x14')](_0xf42d('0x68'),_0xe60124);});};
\ No newline at end of file
index 99aea0d..916ae31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d4=['user:%s','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','value','format','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','debug','[HTTP]','stringify','GET','map','forEach','includes','string','nameField','content','picklist','type','idField','customField','push','variable','variableName','toString','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:'];(function(_0x214eea,_0x307aa5){var _0x280550=function(_0x39cc34){while(--_0x39cc34){_0x214eea['push'](_0x214eea['shift']());}};_0x280550(++_0x307aa5);}(_0x85d4,0xd0));var _0x485d=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x85d4[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0x485d('0x0'));var rp=require(_0x485d('0x1'));var md5=require(_0x485d('0x2'));var util=require(_0x485d('0x3'));var Redis=require(_0x485d('0x4'));var intUtil=require('./util');var config=require(_0x485d('0x5'));var logger=require(_0x485d('0x6'))(_0x485d('0x7'));config[_0x485d('0x8')]=_[_0x485d('0x9')](config['redis'],{'host':_0x485d('0xa'),'port':0x18eb});var io=require(_0x485d('0xb'))(new Redis(config[_0x485d('0x8')]));var headers={'Content-Type':_0x485d('0xc'),'Accept':_0x485d('0xc')};function emit(_0x5cafc5,_0x3fe8ee,_0x2e15df){io['to'](_0x5cafc5)[_0x485d('0xd')](_0x3fe8ee,_0x2e15df);}function getTicket(_0x46c7c3,_0x279fe0,_0x4b8cf1,_0x13452f,_0x653421){logger[_0x485d('0xe')](_0x485d('0xf'));var _0x5a4b19=_[_0x485d('0x10')]({'responder_id':_0x279fe0['id'],'requester_id':_0x4b8cf1['id'],'name':util['format'](_0x485d('0x11'),_0x653421[_0x485d('0x12')]),'phone':_0x653421['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x485d('0x13')](_0x13452f[_0x485d('0x14')],_0x653421,'\x20'),'description':intUtil[_0x485d('0x13')](_0x13452f[_0x485d('0x15')],_0x653421,_0x485d('0x16')),'tags':getTags(_0x13452f[_0x485d('0x17')],_0x485d('0x18'))},getCustomFields(_0x13452f[_0x485d('0x19')],_0x653421));_0x5a4b19['custom_fields']=_['mapValues'](_['keyBy'](_0x5a4b19[_0x485d('0x1a')],'id'),_0x485d('0x1b'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x1d'),_0x46c7c3[_0x485d('0x1e')]),'method':_0x485d('0x1f'),'body':_0x5a4b19})[_0x485d('0x20')](function(_0x583e33){logger[_0x485d('0xe')](_0x485d('0x21'));return _0x583e33;});}function getUser(_0x314265,_0x157929){if(intUtil[_0x485d('0x22')](_0x157929)){return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/agents',_0x314265[_0x485d('0x1e')]),'qs':{'email':_0x157929}})['then'](function(_0x207ae9){if(_0x207ae9[_0x485d('0x23')]){logger[_0x485d('0xe')](_0x485d('0x24'));return _[_0x485d('0x25')](_0x207ae9,function(_0x2e86a7){return _0x2e86a7[_0x485d('0x26')][_0x485d('0x27')]===_0x157929;});}else{logger[_0x485d('0xe')](_0x485d('0x28'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x29'),_0x314265[_0x485d('0x1e')])})['then'](function(_0x1c2182){logger[_0x485d('0xe')](_0x485d('0x2a'));return _0x1c2182;});}});}else{logger[_0x485d('0xe')](_0x485d('0x2b'));return request({'uri':util[_0x485d('0x1c')](_0x485d('0x29'),_0x314265[_0x485d('0x1e')])})[_0x485d('0x20')](function(_0x71142d){logger[_0x485d('0xe')](_0x485d('0x2a'));return _0x71142d;});}}function getEndUser(_0x43409b,_0x22b664,_0x24d619){logger[_0x485d('0xe')](_0x485d('0x2c'),_0x24d619);return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/contacts',_0x43409b[_0x485d('0x1e')]),'qs':{'phone':_0x24d619}})[_0x485d('0x20')](function(_0xe3061){if(_0xe3061[_0x485d('0x23')]){logger[_0x485d('0xe')](_0x485d('0x2d'));return _['find'](_0xe3061,{'phone':_0x24d619});}else{logger[_0x485d('0xe')](_0x485d('0x2e'));return request({'uri':util[_0x485d('0x1c')]('%s/api/v2/contacts',_0x43409b[_0x485d('0x1e')]),'method':'POST','body':{'name':_0x22b664,'phone':_0x24d619}})[_0x485d('0x20')](function(_0x315780){logger[_0x485d('0xe')](_0x485d('0x2f'));return _0x315780;});}});}function getAuth(_0x5dd6fe){return util['format'](_0x485d('0x30'),new Buffer(_0x5dd6fe[_0x485d('0x31')]+':X')['toString']('base64'));}function request(_0xc17786){logger[_0x485d('0x32')](_0x485d('0x33'),JSON[_0x485d('0x34')](_0xc17786));return rp(_[_0x485d('0x9')](_0xc17786,{'method':_0x485d('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x226e1e,_0x49f5c8){var _0x5c59fd=[];if(_0x226e1e&&_0x226e1e['length']>0x0){_0x5c59fd=_[_0x485d('0x36')](_0x226e1e,_0x49f5c8);}return _0x5c59fd;}function getCustomFields(_0x5b28e1,_0x1f852f){var _0x15ffdd=[];var _0x4ff479={'custom_fields':[]};if(_0x5b28e1['length']>0x0){_[_0x485d('0x37')](_0x5b28e1,function(_0x36f8e3){if(_[_0x485d('0x38')]([_0x485d('0x39'),'picklist'],_0x36f8e3['type'])&&_0x36f8e3['nameField']&&!_0x36f8e3['customField']){_0x4ff479[_0x36f8e3[_0x485d('0x3a')]['toLowerCase']()]=_0x36f8e3[_0x485d('0x3b')]['toString']();}else if(_[_0x485d('0x38')]([_0x485d('0x39'),_0x485d('0x3c')],_0x36f8e3[_0x485d('0x3d')])&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x36f8e3[_0x485d('0x3b')]['toString']()});}else if(_0x36f8e3['type']===_0x485d('0x41')&&_0x36f8e3[_0x485d('0x42')]&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x1f852f[_0x36f8e3['variableName']]&&_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x1f852f[_0x36f8e3['variableName']][_0x485d('0x43')]()});}else if(_0x36f8e3['type']==='customVariable'&&_0x36f8e3[_0x485d('0x44')]&&_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')]&&_0x36f8e3[_0x485d('0x3e')]&&_0x36f8e3[_0x485d('0x3f')]){_0x1f852f[_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')]['toLowerCase']()]&&_0x4ff479['custom_fields'][_0x485d('0x40')]({'id':_0x36f8e3[_0x485d('0x3e')],'value':_0x1f852f[_0x36f8e3[_0x485d('0x44')][_0x485d('0x18')][_0x485d('0x45')]()][_0x485d('0x43')]()});}});}return _0x4ff479;}exports[_0x485d('0x46')]=function(_0x3ac94e,_0x4201c9,_0x39f03f,_0x270f5b,_0x5b8034,_0x16f7b2){var _0x3ab3e9,_0x52ae4b;_0x16f7b2[_0x485d('0x1e')]=intUtil[_0x485d('0x47')](_0x16f7b2[_0x485d('0x1e')]);_0x16f7b2[_0x485d('0x48')]=intUtil[_0x485d('0x47')](_0x16f7b2[_0x485d('0x48')]);if(_0x5b8034&&_0x5b8034[_0x485d('0x49')]){logger[_0x485d('0xe')](_0x485d('0x4a'),_0x485d('0x4b'));_0x4201c9[_0x485d('0x4c')]=util[_0x485d('0x1c')](_0x485d('0x4d'),_0x16f7b2[_0x485d('0x48')],_0x4201c9[_0x485d('0x4e')],md5(_0x4201c9[_0x485d('0x4e')]));}else{_0x4201c9[_0x485d('0x4c')]='';}headers[_0x485d('0x4f')]=getAuth(_0x16f7b2);return getUser(_0x16f7b2,_0x270f5b[_0x485d('0x27')])['then'](function(_0x4870bd){_0x3ab3e9=_0x4870bd;logger[_0x485d('0xe')](_0x485d('0x50'),_0x3ab3e9['id']);return getEndUser(_0x16f7b2,_0x4201c9[_0x485d('0x12')],_0x4201c9[_0x485d('0x51')]);})['then'](function(_0x8d3cc6){_0x52ae4b=_0x8d3cc6;logger[_0x485d('0xe')]('The\x20Enduser\x20ID\x20is:',_0x52ae4b['id']);return getTicket(_0x16f7b2,_0x3ab3e9,_0x52ae4b,_0x39f03f,_0x4201c9);})['then'](function(_0x9e49d){if(_0x9e49d&&_0x9e49d['id']){logger[_0x485d('0xe')](_0x485d('0x21'));logger[_0x485d('0xe')](_0x485d('0x52'),_0x9e49d['id']);logger[_0x485d('0xe')](_0x485d('0x4a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x485d('0x53'),_0x270f5b[_0x485d('0x18')]),'trigger:browser:url',{'uri':util['format'](_0x485d('0x54'),_0x16f7b2[_0x485d('0x1e')],_0x9e49d['id'])});}})[_0x485d('0x55')](function(_0x269664){logger[_0x485d('0x56')](_0x485d('0x4a'),JSON['stringify'](_0x269664));});};exports['outbound']=function(_0x211f3d,_0x65a686,_0x2584d3,_0x570951,_0x5acb7e,_0x548710,_0x2aaa63){var _0x13e125,_0x2d3ddc;_0x548710['remoteUri']=intUtil['stripTrailingSlash'](_0x548710[_0x485d('0x1e')]);_0x548710[_0x485d('0x48')]=intUtil['stripTrailingSlash'](_0x548710[_0x485d('0x48')]);if(_0x2aaa63&&_0x2aaa63[_0x485d('0x57')]&&_0x2aaa63['recordingFormat']!==_0x485d('0x58')){logger[_0x485d('0xe')](_0x485d('0x59'),'Recording\x20is\x20enabled!');_0x65a686['recordingURL']=util[_0x485d('0x1c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x548710[_0x485d('0x48')],_0x65a686[_0x485d('0x4e')],md5(_0x65a686[_0x485d('0x4e')]));}headers['Authorization']=getAuth(_0x548710);return getUser(_0x548710,_0x570951[_0x485d('0x27')])[_0x485d('0x20')](function(_0x5873ed){_0x13e125=_0x5873ed;logger[_0x485d('0xe')](_0x485d('0x50'),_0x13e125['id']);return getEndUser(_0x548710,_0x65a686['destcalleridname'],_0x65a686[_0x485d('0x5a')]);})[_0x485d('0x20')](function(_0x328a45){_0x2d3ddc=_0x328a45;logger[_0x485d('0xe')](_0x485d('0x5b'),_0x2d3ddc['id']);return getTicket(_0x548710,_0x13e125,_0x2d3ddc,_0x2584d3,_0x65a686);})['then'](function(_0x439886){if(_0x439886&&_0x439886['id']){logger['info'](_0x485d('0x21'));logger[_0x485d('0xe')]('The\x20Ticket\x20ID\x20is:',_0x439886['id']);logger[_0x485d('0xe')](_0x485d('0x59'),_0x485d('0x5c'));emit(util[_0x485d('0x1c')](_0x485d('0x53'),_0x570951['name']),_0x485d('0x5d'),{'uri':util[_0x485d('0x1c')]('%s/helpdesk/tickets/%d',_0x548710['remoteUri'],_0x439886['id'])});}})[_0x485d('0x55')](function(_0x4dc54e){logger[_0x485d('0x56')](_0x485d('0x59'),JSON[_0x485d('0x34')](_0x4dc54e));});};exports[_0x485d('0x5e')]=function(_0x52eeef,_0x23e31e,_0xb99ee8,_0x4c2576,_0x330b7a,_0x4f5c07){var _0x57c9e2,_0x45179c;_0x4f5c07['remoteUri']=intUtil[_0x485d('0x47')](_0x4f5c07['remoteUri']);_0x4f5c07[_0x485d('0x48')]=intUtil[_0x485d('0x47')](_0x4f5c07['serverUrl']);if(_0x330b7a&&_0x330b7a[_0x485d('0x49')]){logger[_0x485d('0xe')]('['+_0x23e31e[_0x485d('0x5f')][_0x485d('0x60')]()+']','Recording\x20is\x20enabled!');_0x23e31e[_0x485d('0x4c')]=util[_0x485d('0x1c')](_0x485d('0x4d'),_0x4f5c07[_0x485d('0x48')],_0x23e31e[_0x485d('0x4e')],md5(_0x23e31e[_0x485d('0x4e')]));}else{_0x23e31e[_0x485d('0x4c')]='';}headers[_0x485d('0x4f')]=getAuth(_0x4f5c07);return getUser(_0x4f5c07,'')[_0x485d('0x20')](function(_0x1d8542){_0x57c9e2=_0x1d8542;logger[_0x485d('0xe')](_0x485d('0x50'),_0x57c9e2['id']);return getEndUser(_0x4f5c07,_0x23e31e[_0x485d('0x12')],_0x23e31e[_0x485d('0x51')]);})[_0x485d('0x20')](function(_0x222a14){_0x45179c=_0x222a14;logger[_0x485d('0xe')](_0x485d('0x5b'),_0x45179c['id']);return getTicket(_0x4f5c07,_0x57c9e2,_0x45179c,_0xb99ee8,_0x23e31e);})[_0x485d('0x20')](function(_0x530888){if(_0x530888){logger[_0x485d('0xe')](_0x485d('0x21'));logger[_0x485d('0xe')]('The\x20Ticket\x20ID\x20is:',_0x530888['id']);}})['catch'](function(_0x4241e5){logger[_0x485d('0x56')]('['+_0x23e31e[_0x485d('0x5f')][_0x485d('0x60')]()+']',JSON[_0x485d('0x34')](_0x4241e5));});};
\ No newline at end of file
+var _0xcb80=['mapValues','keyBy','value','%s/api/v2/tickets','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','defaults','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','push','variableName','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','none','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','unmanaged','lastevent','toUpperCase','The\x20User\x20ID\x20is:','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields'];(function(_0x1a494a,_0x5090c6){var _0x5b0ac8=function(_0x3c2d60){while(--_0x3c2d60){_0x1a494a['push'](_0x1a494a['shift']());}};_0x5b0ac8(++_0x5090c6);}(_0xcb80,0x107));var _0x0cb8=function(_0x264e1e,_0x364e5b){_0x264e1e=_0x264e1e-0x0;var _0x494765=_0xcb80[_0x264e1e];return _0x494765;};'use strict';var _=require(_0x0cb8('0x0'));var rp=require('request-promise');var md5=require(_0x0cb8('0x1'));var util=require(_0x0cb8('0x2'));var Redis=require(_0x0cb8('0x3'));var intUtil=require(_0x0cb8('0x4'));var config=require(_0x0cb8('0x5'));var logger=require(_0x0cb8('0x6'))(_0x0cb8('0x7'));config['redis']=_['defaults'](config[_0x0cb8('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0cb8('0x8')]));var headers={'Content-Type':_0x0cb8('0x9'),'Accept':'application/json'};function emit(_0x555cba,_0x10da31,_0x55f940){io['to'](_0x555cba)[_0x0cb8('0xa')](_0x10da31,_0x55f940);}function getTicket(_0x555e05,_0x41826d,_0x39647f,_0x4872d2,_0x1e5c2f){logger[_0x0cb8('0xb')](_0x0cb8('0xc'));var _0x485ea2=_[_0x0cb8('0xd')]({'responder_id':_0x41826d['id'],'requester_id':_0x39647f['id'],'name':util[_0x0cb8('0xe')](_0x0cb8('0xf'),_0x1e5c2f[_0x0cb8('0x10')]),'phone':_0x1e5c2f['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x0cb8('0x11')](_0x4872d2[_0x0cb8('0x12')],_0x1e5c2f,'\x20'),'description':intUtil[_0x0cb8('0x11')](_0x4872d2[_0x0cb8('0x13')],_0x1e5c2f,_0x0cb8('0x14')),'tags':getTags(_0x4872d2[_0x0cb8('0x15')],_0x0cb8('0x16'))},getCustomFields(_0x4872d2[_0x0cb8('0x17')],_0x1e5c2f));_0x485ea2[_0x0cb8('0x18')]=_[_0x0cb8('0x19')](_[_0x0cb8('0x1a')](_0x485ea2['custom_fields'],'id'),_0x0cb8('0x1b'));return request({'uri':util[_0x0cb8('0xe')](_0x0cb8('0x1c'),_0x555e05['remoteUri']),'method':_0x0cb8('0x1d'),'body':_0x485ea2})[_0x0cb8('0x1e')](function(_0x4d2941){logger['info'](_0x0cb8('0x1f'));return _0x4d2941;});}function getUser(_0x2c4b9c,_0x16a539){if(intUtil[_0x0cb8('0x20')](_0x16a539)){return request({'uri':util[_0x0cb8('0xe')](_0x0cb8('0x21'),_0x2c4b9c[_0x0cb8('0x22')]),'qs':{'email':_0x16a539}})['then'](function(_0x2209c0){if(_0x2209c0[_0x0cb8('0x23')]){logger[_0x0cb8('0xb')](_0x0cb8('0x24'));return _[_0x0cb8('0x25')](_0x2209c0,function(_0x2302d7){return _0x2302d7[_0x0cb8('0x26')][_0x0cb8('0x27')]===_0x16a539;});}else{logger['info'](_0x0cb8('0x28'));return request({'uri':util[_0x0cb8('0xe')](_0x0cb8('0x29'),_0x2c4b9c[_0x0cb8('0x22')])})[_0x0cb8('0x1e')](function(_0x57f6e2){logger[_0x0cb8('0xb')](_0x0cb8('0x2a'));return _0x57f6e2;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x0cb8('0xe')](_0x0cb8('0x29'),_0x2c4b9c[_0x0cb8('0x22')])})['then'](function(_0x7d7e85){logger['info'](_0x0cb8('0x2a'));return _0x7d7e85;});}}function getEndUser(_0x3e61ab,_0x224e7c,_0x5c943d){logger[_0x0cb8('0xb')](_0x0cb8('0x2b'),_0x5c943d);return request({'uri':util['format']('%s/api/v2/contacts',_0x3e61ab[_0x0cb8('0x22')]),'qs':{'phone':_0x5c943d}})[_0x0cb8('0x1e')](function(_0x560dc7){if(_0x560dc7['length']){logger['info'](_0x0cb8('0x2c'));return _[_0x0cb8('0x25')](_0x560dc7,{'phone':_0x5c943d});}else{logger[_0x0cb8('0xb')](_0x0cb8('0x2d'));return request({'uri':util[_0x0cb8('0xe')](_0x0cb8('0x2e'),_0x3e61ab[_0x0cb8('0x22')]),'method':_0x0cb8('0x1d'),'body':{'name':_0x224e7c,'phone':_0x5c943d}})[_0x0cb8('0x1e')](function(_0x200871){logger[_0x0cb8('0xb')](_0x0cb8('0x2f'));return _0x200871;});}});}function getAuth(_0x5d5be1){return util[_0x0cb8('0xe')](_0x0cb8('0x30'),new Buffer(_0x5d5be1[_0x0cb8('0x31')]+':X')[_0x0cb8('0x32')](_0x0cb8('0x33')));}function request(_0x5253b3){logger[_0x0cb8('0x34')](_0x0cb8('0x35'),JSON[_0x0cb8('0x36')](_0x5253b3));return rp(_[_0x0cb8('0x37')](_0x5253b3,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0xa5629f,_0x2ffa03){var _0x58e3c8=[];if(_0xa5629f&&_0xa5629f[_0x0cb8('0x23')]>0x0){_0x58e3c8=_[_0x0cb8('0x38')](_0xa5629f,_0x2ffa03);}return _0x58e3c8;}function getCustomFields(_0xbeac32,_0x544bef){var _0x3361ae=[];var _0x358fd8={'custom_fields':[]};if(_0xbeac32[_0x0cb8('0x23')]>0x0){_[_0x0cb8('0x39')](_0xbeac32,function(_0x480ccd){if(_[_0x0cb8('0x3a')](['string',_0x0cb8('0x3b')],_0x480ccd[_0x0cb8('0x3c')])&&_0x480ccd[_0x0cb8('0x3d')]&&!_0x480ccd[_0x0cb8('0x3e')]){_0x358fd8[_0x480ccd['nameField'][_0x0cb8('0x3f')]()]=_0x480ccd[_0x0cb8('0x40')]['toString']();}else if(_[_0x0cb8('0x3a')]([_0x0cb8('0x41'),_0x0cb8('0x3b')],_0x480ccd[_0x0cb8('0x3c')])&&_0x480ccd[_0x0cb8('0x42')]&&_0x480ccd[_0x0cb8('0x3e')]){_0x358fd8[_0x0cb8('0x18')][_0x0cb8('0x43')]({'id':_0x480ccd[_0x0cb8('0x42')],'value':_0x480ccd['content'][_0x0cb8('0x32')]()});}else if(_0x480ccd['type']==='variable'&&_0x480ccd[_0x0cb8('0x44')]&&_0x480ccd[_0x0cb8('0x42')]&&_0x480ccd['customField']){_0x544bef[_0x480ccd[_0x0cb8('0x44')]]&&_0x358fd8[_0x0cb8('0x18')][_0x0cb8('0x43')]({'id':_0x480ccd['idField'],'value':_0x544bef[_0x480ccd[_0x0cb8('0x44')]][_0x0cb8('0x32')]()});}else if(_0x480ccd[_0x0cb8('0x3c')]==='customVariable'&&_0x480ccd[_0x0cb8('0x45')]&&_0x480ccd[_0x0cb8('0x45')][_0x0cb8('0x16')]&&_0x480ccd[_0x0cb8('0x42')]&&_0x480ccd[_0x0cb8('0x3e')]){_0x544bef[_0x480ccd['Variable'][_0x0cb8('0x16')]['toLowerCase']()]&&_0x358fd8['custom_fields'][_0x0cb8('0x43')]({'id':_0x480ccd[_0x0cb8('0x42')],'value':_0x544bef[_0x480ccd['Variable'][_0x0cb8('0x16')][_0x0cb8('0x3f')]()][_0x0cb8('0x32')]()});}});}return _0x358fd8;}exports['queue']=function(_0xa49ef6,_0x340d6a,_0x14a7f9,_0x270be8,_0x24be82,_0x4f70b7){var _0x4bd02d,_0x176543;_0x4f70b7[_0x0cb8('0x22')]=intUtil[_0x0cb8('0x46')](_0x4f70b7[_0x0cb8('0x22')]);_0x4f70b7['serverUrl']=intUtil['stripTrailingSlash'](_0x4f70b7[_0x0cb8('0x47')]);if(_0x24be82&&_0x24be82[_0x0cb8('0x48')]){logger[_0x0cb8('0xb')](_0x0cb8('0x49'),_0x0cb8('0x4a'));_0x340d6a['recordingURL']=util[_0x0cb8('0xe')](_0x0cb8('0x4b'),_0x4f70b7[_0x0cb8('0x47')],_0x340d6a['uniqueid'],md5(_0x340d6a[_0x0cb8('0x4c')]));}else{_0x340d6a[_0x0cb8('0x4d')]='';}headers[_0x0cb8('0x4e')]=getAuth(_0x4f70b7);return getUser(_0x4f70b7,_0x270be8[_0x0cb8('0x27')])[_0x0cb8('0x1e')](function(_0xfb09d2){_0x4bd02d=_0xfb09d2;logger[_0x0cb8('0xb')]('The\x20User\x20ID\x20is:',_0x4bd02d['id']);return getEndUser(_0x4f70b7,_0x340d6a[_0x0cb8('0x10')],_0x340d6a[_0x0cb8('0x4f')]);})['then'](function(_0x7fb2a6){_0x176543=_0x7fb2a6;logger[_0x0cb8('0xb')](_0x0cb8('0x50'),_0x176543['id']);return getTicket(_0x4f70b7,_0x4bd02d,_0x176543,_0x14a7f9,_0x340d6a);})[_0x0cb8('0x1e')](function(_0x52441e){if(_0x52441e&&_0x52441e['id']){logger[_0x0cb8('0xb')](_0x0cb8('0x1f'));logger[_0x0cb8('0xb')](_0x0cb8('0x51'),_0x52441e['id']);logger[_0x0cb8('0xb')](_0x0cb8('0x49'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0cb8('0xe')]('user:%s',_0x270be8['name']),_0x0cb8('0x52'),{'uri':util[_0x0cb8('0xe')](_0x0cb8('0x53'),_0x4f70b7[_0x0cb8('0x22')],_0x52441e['id'])});}})['catch'](function(_0x2db2d9){logger[_0x0cb8('0x54')](_0x0cb8('0x49'),JSON['stringify'](_0x2db2d9));});};exports[_0x0cb8('0x55')]=function(_0xcd29b0,_0x590073,_0x3ca512,_0x3cc4b1,_0x5b0051,_0x1b2dcc,_0x22bc3f){var _0xbd0c5b,_0x16bbb4;_0x1b2dcc[_0x0cb8('0x22')]=intUtil[_0x0cb8('0x46')](_0x1b2dcc[_0x0cb8('0x22')]);_0x1b2dcc[_0x0cb8('0x47')]=intUtil['stripTrailingSlash'](_0x1b2dcc[_0x0cb8('0x47')]);if(_0x22bc3f&&_0x22bc3f[_0x0cb8('0x56')]&&_0x22bc3f[_0x0cb8('0x56')]!==_0x0cb8('0x57')){logger['info'](_0x0cb8('0x58'),_0x0cb8('0x4a'));_0x590073[_0x0cb8('0x4d')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1b2dcc['serverUrl'],_0x590073[_0x0cb8('0x4c')],md5(_0x590073['uniqueid']));}headers[_0x0cb8('0x4e')]=getAuth(_0x1b2dcc);return getUser(_0x1b2dcc,_0x3cc4b1[_0x0cb8('0x27')])[_0x0cb8('0x1e')](function(_0x25081a){_0xbd0c5b=_0x25081a;logger[_0x0cb8('0xb')]('The\x20User\x20ID\x20is:',_0xbd0c5b['id']);return getEndUser(_0x1b2dcc,_0x590073['destcalleridname'],_0x590073['destcalleridnum']);})[_0x0cb8('0x1e')](function(_0x2027ac){_0x16bbb4=_0x2027ac;logger[_0x0cb8('0xb')](_0x0cb8('0x50'),_0x16bbb4['id']);return getTicket(_0x1b2dcc,_0xbd0c5b,_0x16bbb4,_0x3ca512,_0x590073);})[_0x0cb8('0x1e')](function(_0x2ce04a){if(_0x2ce04a&&_0x2ce04a['id']){logger['info'](_0x0cb8('0x1f'));logger[_0x0cb8('0xb')]('The\x20Ticket\x20ID\x20is:',_0x2ce04a['id']);logger['info']('[OUTBOUND]',_0x0cb8('0x59'));emit(util[_0x0cb8('0xe')](_0x0cb8('0x5a'),_0x3cc4b1[_0x0cb8('0x16')]),_0x0cb8('0x52'),{'uri':util[_0x0cb8('0xe')](_0x0cb8('0x53'),_0x1b2dcc[_0x0cb8('0x22')],_0x2ce04a['id'])});}})[_0x0cb8('0x5b')](function(_0x424ab4){logger[_0x0cb8('0x54')](_0x0cb8('0x58'),JSON['stringify'](_0x424ab4));});};exports[_0x0cb8('0x5c')]=function(_0x321880,_0x144f6f,_0x579996,_0x44e7d8,_0x2bbf68,_0x51b2a3){var _0x7bc2ca,_0x280bc4;_0x51b2a3[_0x0cb8('0x22')]=intUtil[_0x0cb8('0x46')](_0x51b2a3[_0x0cb8('0x22')]);_0x51b2a3[_0x0cb8('0x47')]=intUtil[_0x0cb8('0x46')](_0x51b2a3[_0x0cb8('0x47')]);if(_0x2bbf68&&_0x2bbf68[_0x0cb8('0x48')]){logger[_0x0cb8('0xb')]('['+_0x144f6f[_0x0cb8('0x5d')][_0x0cb8('0x5e')]()+']',_0x0cb8('0x4a'));_0x144f6f['recordingURL']=util[_0x0cb8('0xe')](_0x0cb8('0x4b'),_0x51b2a3[_0x0cb8('0x47')],_0x144f6f[_0x0cb8('0x4c')],md5(_0x144f6f[_0x0cb8('0x4c')]));}else{_0x144f6f[_0x0cb8('0x4d')]='';}headers[_0x0cb8('0x4e')]=getAuth(_0x51b2a3);return getUser(_0x51b2a3,'')[_0x0cb8('0x1e')](function(_0x4c988b){_0x7bc2ca=_0x4c988b;logger[_0x0cb8('0xb')](_0x0cb8('0x5f'),_0x7bc2ca['id']);return getEndUser(_0x51b2a3,_0x144f6f[_0x0cb8('0x10')],_0x144f6f['calleridnum']);})[_0x0cb8('0x1e')](function(_0x97fb2e){_0x280bc4=_0x97fb2e;logger[_0x0cb8('0xb')](_0x0cb8('0x50'),_0x280bc4['id']);return getTicket(_0x51b2a3,_0x7bc2ca,_0x280bc4,_0x579996,_0x144f6f);})[_0x0cb8('0x1e')](function(_0x5747b0){if(_0x5747b0){logger[_0x0cb8('0xb')]('Ticket\x20created!');logger[_0x0cb8('0xb')](_0x0cb8('0x51'),_0x5747b0['id']);}})['catch'](function(_0xdac521){logger[_0x0cb8('0x54')]('['+_0x144f6f['lastevent'][_0x0cb8('0x5e')]()+']',JSON[_0x0cb8('0x36')](_0xdac521));});};
\ No newline at end of file
index 17aebe8..dbbeab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x422c=['User\x20found:','Admin\x20selected','message','/api/lookup?q=','&f=','find','format','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','Subjects','Contact','add','ticketId','task','Task\x20created:','user:%s','emit','trigger:browser:url','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','destcalleridnum','callDirection','queue','unmanaged','outbound','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','email','userId'];(function(_0x464a6a,_0x429b05){var _0x4f546f=function(_0x4ac9fd){while(--_0x4ac9fd){_0x464a6a['push'](_0x464a6a['shift']());}};_0x4f546f(++_0x429b05);}(_0x422c,0x12c));var _0xc422=function(_0x24b668,_0x5eaca8){_0x24b668=_0x24b668-0x0;var _0x21d8bb=_0x422c[_0x24b668];return _0x21d8bb;};'use strict';var _=require(_0xc422('0x0'));var rp=require(_0xc422('0x1'));var md5=require('md5');var util=require('util');var moment=require(_0xc422('0x2'));var Promise=require(_0xc422('0x3'));var Redis=require(_0xc422('0x4'));var intUtil=require('./util');var config=require(_0xc422('0x5'));var logger=require(_0xc422('0x6'))(_0xc422('0x7'));config[_0xc422('0x8')]=_[_0xc422('0x9')](config[_0xc422('0x8')],{'host':_0xc422('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc422('0x8')]));function getAdminId(_0x413479,_0x36965d,_0x445684,_0x39e3fa){return new Promise(function(_0x3873e7,_0x1d72d0){var _0x5d1a6e=![];var _0x3449d6={'method':_0xc422('0xb'),'uri':_0x39e3fa+_0xc422('0xc'),'json':!![]};_0x3449d6[_0xc422('0xd')]=_0x445684;logger[_0xc422('0xe')](_0xc422('0xf'));return rp(_0x3449d6)[_0xc422('0x10')](function(_0x48cbc0){if(_0x48cbc0){var _0x5db692=_0x48cbc0[_0xc422('0x11')];var _0x449799=null;for(_0x449799=0x0;_0x449799<_0x5db692[_0xc422('0x12')];_0x449799++){if(_0x5db692[_0x449799]['email']===_0x413479[_0xc422('0x13')]){_0x413479[_0xc422('0x14')]=_0x5db692[_0x449799]['id'];_0x5d1a6e=!![];}}if(_0x5d1a6e){logger['info'](_0xc422('0x15'),_0x413479[_0xc422('0x14')]);_0x3873e7(_0x413479);}else{_0x1d72d0({'statusCode':0x194,'message':_0xc422('0x16')});}}else{_0x1d72d0({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xc422('0x17')](function(_0xa2b1b9){logger[_0xc422('0x18')]('['+[_0x36965d[_0xc422('0x19')]()]+']',_0xa2b1b9['message']);_0x1d72d0(_0xa2b1b9);});});}function getUser(_0x21ff56,_0x5b5634,_0x17d22a){return function(_0x35aebd){return new Promise(function(_0x5d0c21,_0x5b5997){var _0x48b04f={'method':_0xc422('0xb'),'uri':_0x17d22a+_0xc422('0xc'),'json':!![]};_0x48b04f[_0xc422('0xd')]=_0x5b5634;logger[_0xc422('0xe')](_0xc422('0x1a'));return rp(_0x48b04f)['then'](function(_0x2d8e51){if(_0x2d8e51){var _0x43fbda=_0x2d8e51['users'];var _0x588fb0=![];var _0x3ccdc5=null;if(_0x35aebd[_0xc422('0x1b')]!==null){logger[_0xc422('0xe')](_0xc422('0x1c'),_0x35aebd[_0xc422('0x1b')]);_0x35aebd[_0xc422('0x1d')]=_0x35aebd[_0xc422('0x1b')];for(_0x3ccdc5=0x0;_0x3ccdc5<_0x43fbda[_0xc422('0x12')];_0x3ccdc5++){if(_0x43fbda[_0x3ccdc5][_0xc422('0x1e')]===_0x35aebd[_0xc422('0x1b')]){_0x588fb0=!![];_0x35aebd[_0xc422('0x1f')]=_0x43fbda[_0x3ccdc5]['id'];logger['info'](_0xc422('0x20'),_0x35aebd[_0xc422('0x1f')]);}}}if(!_0x588fb0){logger[_0xc422('0xe')](_0xc422('0x21'));_0x35aebd[_0xc422('0x1d')]=_0x35aebd['adminEmail'];_0x35aebd[_0xc422('0x1f')]=_0x35aebd['adminId'];_0x588fb0=!![];}if(_0x588fb0){_0x5d0c21(_0x35aebd);}else{_0x5b5997({'statusCode':0x194,'message':_0xc422('0x16')});}}else{_0x5b5997({'statusCode':0x194,'message':_0xc422('0x16')});}})[_0xc422('0x17')](function(_0x2aff7a){logger[_0xc422('0x18')]('['+[_0x21ff56[_0xc422('0x19')]()]+']',_0x2aff7a[_0xc422('0x22')]);_0x5b5997(_0x2aff7a);});});};}function searchContact(_0x3dab1d,_0xfe644b,_0x1fee42,_0x40aade){return new Promise(function(_0x693607,_0x185502){var _0x19696c={'method':_0xc422('0xb'),'headers':_0xfe644b,'uri':_0x3dab1d+_0xc422('0x23')+_0x40aade+_0xc422('0x24')+_0x1fee42+'&entities=contact','json':!![]};rp(_0x19696c)['then'](function(_0x1e2c91){var _0x28b228=_[_0xc422('0x25')](_0x1e2c91['contacts']['contacts'],[_0x1fee42,_0x40aade]);_0x693607(_0x28b228);})[_0xc422('0x17')](function(_0x34e9a8){_0x185502(_0x34e9a8);});});}function getEndUser(_0x3f6d3a,_0x492cac,_0x347425){return function(_0x38a6dd){return new Promise(function(_0xf17744,_0x4f531f){logger[_0xc422('0xe')](util[_0xc422('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x38a6dd[_0xc422('0x27')]));searchContact(_0x347425,_0x492cac,_0xc422('0x28'),_0x38a6dd[_0xc422('0x27')])[_0xc422('0x10')](function(_0xdc8ca2){if(_0xdc8ca2){_0x38a6dd[_0xc422('0x29')]=_0xdc8ca2['id'];logger[_0xc422('0xe')](_0xc422('0x2a'),_0x38a6dd['endUserId']);return _0xf17744(_0x38a6dd);}searchContact(_0x347425,_0x492cac,'work_number',_0x38a6dd[_0xc422('0x27')])['then'](function(_0x3e6f86){if(_0x3e6f86){_0x38a6dd[_0xc422('0x29')]=_0x3e6f86['id'];logger[_0xc422('0xe')](_0xc422('0x2b'),_0x38a6dd[_0xc422('0x29')]);return _0xf17744(_0x38a6dd);}createEndUser(_0x38a6dd,_0x3f6d3a,_0x492cac,_0x347425)[_0xc422('0x10')](function(_0x349087){logger[_0xc422('0xe')](_0xc422('0x2c'),_0x349087[_0xc422('0x29')]);return _0xf17744(_0x349087);});});})['catch'](function(_0xe96889){_0x4f531f(_0xe96889);});});};}function createEndUser(_0x14506a,_0x3ef853,_0x19ac99,_0x1c7b61){return new Promise(function(_0x356244,_0x6db781){var _0x173826=moment();var _0x5b7c97={'method':_0xc422('0x2d'),'uri':_0x1c7b61+_0xc422('0x2e'),'body':{'contact':{'last_name':_0x14506a['contactNumber'],'work_number':_0x14506a[_0xc422('0x27')],'mobile_number':_0x14506a['contactNumber'],'owner_id':_0x14506a[_0xc422('0x1f')],'created_at':_0x173826[_0xc422('0x26')](_0xc422('0x2f'))}},'json':!![]};_0x5b7c97[_0xc422('0xd')]=_0x19ac99;logger['info'](_0xc422('0x30'));return rp(_0x5b7c97)[_0xc422('0x10')](function(_0x28b0d1){_0x14506a['endUserId']=_0x28b0d1[_0xc422('0x31')]['id'];_0x356244(_0x14506a);})['catch'](function(_0x5392c3){logger[_0xc422('0x18')]('['+[_0x3ef853['toUpperCase']()]+']',_0x5392c3['message']);_0x6db781(_0x5392c3[_0xc422('0x22')]);});});}function getTicket(_0x5d3f7d,_0x8d2ed1,_0x59a4ff,_0x5cd12,_0x1ad135){return function(_0x341883){logger['info'](_0xc422('0x32'));return new Promise(function(_0xecdc,_0x3518e1){var _0x22cd7a=moment();var _0x4e14e9={'method':'POST','uri':_0x59a4ff+'/api/tasks','body':{'title':intUtil['getString'](_0x5cd12[_0xc422('0x33')],_0x1ad135,'\x20'),'description':intUtil['getString'](_0x5cd12['Descriptions'],_0x1ad135,'\x0a'),'owner_id':_0x341883[_0xc422('0x1f')],'creater_id':_0x341883[_0xc422('0x14')],'targetable_id':_0x341883[_0xc422('0x29')],'targetable_type':_0xc422('0x34'),'created_at':_0x22cd7a['format'](_0xc422('0x2f')),'due_date':_0x22cd7a[_0xc422('0x35')](0x1e,'m')[_0xc422('0x26')](_0xc422('0x2f'))},'json':!![]};_0x4e14e9[_0xc422('0xd')]=_0x8d2ed1;return rp(_0x4e14e9)[_0xc422('0x10')](function(_0x5bfebd){_0x341883[_0xc422('0x36')]=_0x5bfebd[_0xc422('0x37')]['id'];logger['info'](_0xc422('0x38'),_0x341883[_0xc422('0x36')]);_0xecdc(_0x341883);})[_0xc422('0x17')](function(_0x355053){logger[_0xc422('0x18')]('['+[_0x5d3f7d['toUpperCase']()]+']',_0x355053[_0xc422('0x22')]);_0x3518e1(_0x355053['message']);});});};}function emit(_0x5c1ffb,_0x195f1c,_0x3405c9){var _0x11a774={'uri':_0x5c1ffb+'/contacts/'+_0x3405c9};io['to'](util['format'](_0xc422('0x39'),_0x195f1c))[_0xc422('0x3a')](_0xc422('0x3b'),_0x11a774);}exports['cs']=function(_0x33bbe2,_0x1d4d83,_0x45e9b7,_0xeca96c,_0x2eda54,_0x336142,_0x37486e,_0x424bff){var _0x33606b={};var _0x43d979={'Authorization':'Token\x20token='+_0x336142[_0xc422('0x3c')]};_0x336142['remoteUri']=intUtil['stripTrailingSlash'](_0x336142[_0xc422('0x3d')]);_0x336142[_0xc422('0x3e')]=intUtil[_0xc422('0x3f')](_0x336142['serverUrl']);var _0x21976a=_0x336142['remoteUri'];_0x33606b[_0xc422('0x13')]=_0x336142[_0xc422('0x40')];_0x33606b['contactNumber']=_0x424bff[_0xc422('0x41')]()==='outbound'?_0x1d4d83[_0xc422('0x42')]:_0x1d4d83['calleridnum'];_0x33606b[_0xc422('0x43')]=_0x424bff===_0xc422('0x44')||_0x424bff===_0xc422('0x45')?_0xc422('0x44'):_0xc422('0x46');if(_0xeca96c){_0x33606b[_0xc422('0x1b')]=_0xeca96c[_0xc422('0x1e')];}var _0x1f21c4=util[_0xc422('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x336142[_0xc422('0x3e')],_0x1d4d83[_0xc422('0x47')],md5(_0x1d4d83[_0xc422('0x47')]));if(_0x2eda54&&_0x2eda54[_0xc422('0x48')]){logger[_0xc422('0xe')](_0xc422('0x49'),_0xc422('0x4a'));_0x1d4d83[_0xc422('0x4b')]=_0x1f21c4;}else if(_0x37486e&&_0x37486e[_0xc422('0x4c')]&&_0x37486e['recordingFormat']!=='none'){logger['info'](_0xc422('0x4d'),'Recording\x20is\x20enabled!');_0x1d4d83[_0xc422('0x4b')]=_0x1f21c4;}else{_0x1d4d83[_0xc422('0x4b')]='';}return getAdminId(_0x33606b,_0x424bff,_0x43d979,_0x21976a)[_0xc422('0x10')](getUser(_0x424bff,_0x43d979,_0x21976a))[_0xc422('0x10')](getEndUser(_0x424bff,_0x43d979,_0x21976a))[_0xc422('0x10')](getTicket(_0x424bff,_0x43d979,_0x21976a,_0x45e9b7,_0x1d4d83))[_0xc422('0x10')](function(_0x3a340e){logger[_0xc422('0xe')](util['format'](_0xc422('0x4e'),_0x3a340e[_0xc422('0x36')]));if(_0x424bff!==_0xc422('0x45')){logger['info']('['+[_0x424bff[_0xc422('0x19')]()]+']',_0xc422('0x4f'));emit(_0x21976a,_0xeca96c[_0xc422('0x50')],_0x3a340e['endUserId']);}})[_0xc422('0x17')](function(_0x3fdde5){logger['error']('['+[_0x424bff[_0xc422('0x19')]()]+_0xc422('0x51'),util[_0xc422('0x52')](_0x3fdde5,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf41e=['toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','userId','adminEmail','error','&entities=contact','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20created:','/api/contacts','contactNumber','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','format','YYYY-MM-DDTHH:mm:ss','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','username','outbound','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','util','moment','bluebird','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','socket.io-emitter','GET','Getting\x20admin\x20information','then','email','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch'];(function(_0x2265da,_0xfbbd2e){var _0x430c2b=function(_0x20d671){while(--_0x20d671){_0x2265da['push'](_0x2265da['shift']());}};_0x430c2b(++_0xfbbd2e);}(_0xf41e,0x11b));var _0xef41=function(_0x4f3eb3,_0x1755d6){_0x4f3eb3=_0x4f3eb3-0x0;var _0x86ed68=_0xf41e[_0x4f3eb3];return _0x86ed68;};'use strict';var _=require(_0xef41('0x0'));var rp=require(_0xef41('0x1'));var md5=require('md5');var util=require(_0xef41('0x2'));var moment=require(_0xef41('0x3'));var Promise=require(_0xef41('0x4'));var Redis=require('ioredis');var intUtil=require(_0xef41('0x5'));var config=require(_0xef41('0x6'));var logger=require(_0xef41('0x7'))(_0xef41('0x8'));config[_0xef41('0x9')]=_['defaults'](config[_0xef41('0x9')],{'host':_0xef41('0xa'),'port':0x18eb});var io=require(_0xef41('0xb'))(new Redis(config[_0xef41('0x9')]));function getAdminId(_0x4af184,_0x577c6e,_0x5df424,_0x3134f3){return new Promise(function(_0x276a86,_0x420b30){var _0x7fef65=![];var _0x554d34={'method':_0xef41('0xc'),'uri':_0x3134f3+'/api/selector/owners','json':!![]};_0x554d34['headers']=_0x5df424;logger['info'](_0xef41('0xd'));return rp(_0x554d34)[_0xef41('0xe')](function(_0x339da5){if(_0x339da5){var _0x553d70=_0x339da5['users'];var _0x359ebe=null;for(_0x359ebe=0x0;_0x359ebe<_0x553d70['length'];_0x359ebe++){if(_0x553d70[_0x359ebe][_0xef41('0xf')]===_0x4af184['adminEmail']){_0x4af184[_0xef41('0x10')]=_0x553d70[_0x359ebe]['id'];_0x7fef65=!![];}}if(_0x7fef65){logger[_0xef41('0x11')](_0xef41('0x12'),_0x4af184['adminId']);_0x276a86(_0x4af184);}else{_0x420b30({'statusCode':0x194,'message':_0xef41('0x13')});}}else{_0x420b30({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xef41('0x14')](function(_0x3d150c){logger['error']('['+[_0x577c6e[_0xef41('0x15')]()]+']',_0x3d150c[_0xef41('0x16')]);_0x420b30(_0x3d150c);});});}function getUser(_0xa271da,_0x3ede68,_0x1332dd){return function(_0xab7699){return new Promise(function(_0x379e25,_0x30e368){var _0x3e0913={'method':_0xef41('0xc'),'uri':_0x1332dd+_0xef41('0x17'),'json':!![]};_0x3e0913[_0xef41('0x18')]=_0x3ede68;logger[_0xef41('0x11')](_0xef41('0x19'));return rp(_0x3e0913)[_0xef41('0xe')](function(_0x171155){if(_0x171155){var _0x4c7f6e=_0x171155['users'];var _0x114865=![];var _0x59b397=null;if(_0xab7699[_0xef41('0x1a')]!==null){logger[_0xef41('0x11')](_0xef41('0x1b'),_0xab7699[_0xef41('0x1a')]);_0xab7699[_0xef41('0x1c')]=_0xab7699[_0xef41('0x1a')];for(_0x59b397=0x0;_0x59b397<_0x4c7f6e[_0xef41('0x1d')];_0x59b397++){if(_0x4c7f6e[_0x59b397][_0xef41('0xf')]===_0xab7699[_0xef41('0x1a')]){_0x114865=!![];_0xab7699[_0xef41('0x1e')]=_0x4c7f6e[_0x59b397]['id'];logger[_0xef41('0x11')]('User\x20found:',_0xab7699['userId']);}}}if(!_0x114865){logger[_0xef41('0x11')]('Admin\x20selected');_0xab7699[_0xef41('0x1c')]=_0xab7699[_0xef41('0x1f')];_0xab7699[_0xef41('0x1e')]=_0xab7699[_0xef41('0x10')];_0x114865=!![];}if(_0x114865){_0x379e25(_0xab7699);}else{_0x30e368({'statusCode':0x194,'message':_0xef41('0x13')});}}else{_0x30e368({'statusCode':0x194,'message':_0xef41('0x13')});}})[_0xef41('0x14')](function(_0x4c1b1f){logger[_0xef41('0x20')]('['+[_0xa271da['toUpperCase']()]+']',_0x4c1b1f[_0xef41('0x16')]);_0x30e368(_0x4c1b1f);});});};}function searchContact(_0x2e6942,_0x12b76c,_0x37b4dc,_0x59e9ce){return new Promise(function(_0x409b9d,_0x2141df){var _0x15984f={'method':_0xef41('0xc'),'headers':_0x12b76c,'uri':_0x2e6942+'/api/lookup?q='+_0x59e9ce+'&f='+_0x37b4dc+_0xef41('0x21'),'json':!![]};rp(_0x15984f)[_0xef41('0xe')](function(_0x41c534){var _0x309465=_[_0xef41('0x22')](_0x41c534[_0xef41('0x23')][_0xef41('0x23')],[_0x37b4dc,_0x59e9ce]);_0x409b9d(_0x309465);})[_0xef41('0x14')](function(_0x5b284f){_0x2141df(_0x5b284f);});});}function getEndUser(_0x22e4c1,_0x47ed8c,_0x4a6ee0){return function(_0x44b96f){return new Promise(function(_0x37495e,_0x58c45b){logger[_0xef41('0x11')](util['format'](_0xef41('0x24'),_0x44b96f['contactNumber']));searchContact(_0x4a6ee0,_0x47ed8c,_0xef41('0x25'),_0x44b96f['contactNumber'])['then'](function(_0x57a4fc){if(_0x57a4fc){_0x44b96f['endUserId']=_0x57a4fc['id'];logger[_0xef41('0x11')](_0xef41('0x26'),_0x44b96f[_0xef41('0x27')]);return _0x37495e(_0x44b96f);}searchContact(_0x4a6ee0,_0x47ed8c,_0xef41('0x28'),_0x44b96f['contactNumber'])[_0xef41('0xe')](function(_0x39165d){if(_0x39165d){_0x44b96f['endUserId']=_0x39165d['id'];logger['info']('Contact\x20found\x20work_number:',_0x44b96f[_0xef41('0x27')]);return _0x37495e(_0x44b96f);}createEndUser(_0x44b96f,_0x22e4c1,_0x47ed8c,_0x4a6ee0)['then'](function(_0x19da2f){logger[_0xef41('0x11')](_0xef41('0x29'),_0x19da2f['endUserId']);return _0x37495e(_0x19da2f);});});})[_0xef41('0x14')](function(_0x53bdf7){_0x58c45b(_0x53bdf7);});});};}function createEndUser(_0x2a6f59,_0xec5611,_0x57832e,_0x5f16dc){return new Promise(function(_0x18d65f,_0x5dfe45){var _0x432c80=moment();var _0x4aae0b={'method':'POST','uri':_0x5f16dc+_0xef41('0x2a'),'body':{'contact':{'last_name':_0x2a6f59['contactNumber'],'work_number':_0x2a6f59[_0xef41('0x2b')],'mobile_number':_0x2a6f59[_0xef41('0x2b')],'owner_id':_0x2a6f59[_0xef41('0x1e')],'created_at':_0x432c80['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x4aae0b[_0xef41('0x18')]=_0x57832e;logger[_0xef41('0x11')](_0xef41('0x2c'));return rp(_0x4aae0b)['then'](function(_0x49c5a6){_0x2a6f59[_0xef41('0x27')]=_0x49c5a6['contact']['id'];_0x18d65f(_0x2a6f59);})['catch'](function(_0x2f2a48){logger[_0xef41('0x20')]('['+[_0xec5611[_0xef41('0x15')]()]+']',_0x2f2a48[_0xef41('0x16')]);_0x5dfe45(_0x2f2a48[_0xef41('0x16')]);});});}function getTicket(_0x3db4b9,_0x1a551f,_0x27085d,_0xd82a83,_0x3533b9){return function(_0x412b62){logger['info'](_0xef41('0x2d'));return new Promise(function(_0x414d14,_0xb3018b){var _0x16a1fa=moment();var _0x455c45={'method':_0xef41('0x2e'),'uri':_0x27085d+_0xef41('0x2f'),'body':{'title':intUtil[_0xef41('0x30')](_0xd82a83[_0xef41('0x31')],_0x3533b9,'\x20'),'description':intUtil[_0xef41('0x30')](_0xd82a83['Descriptions'],_0x3533b9,'\x0a'),'owner_id':_0x412b62[_0xef41('0x1e')],'creater_id':_0x412b62['adminId'],'targetable_id':_0x412b62[_0xef41('0x27')],'targetable_type':'Contact','created_at':_0x16a1fa[_0xef41('0x32')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x16a1fa['add'](0x1e,'m')[_0xef41('0x32')](_0xef41('0x33'))},'json':!![]};_0x455c45[_0xef41('0x18')]=_0x1a551f;return rp(_0x455c45)[_0xef41('0xe')](function(_0x336212){_0x412b62[_0xef41('0x34')]=_0x336212[_0xef41('0x35')]['id'];logger[_0xef41('0x11')](_0xef41('0x36'),_0x412b62[_0xef41('0x34')]);_0x414d14(_0x412b62);})[_0xef41('0x14')](function(_0x244793){logger['error']('['+[_0x3db4b9['toUpperCase']()]+']',_0x244793['message']);_0xb3018b(_0x244793[_0xef41('0x16')]);});});};}function emit(_0xdc39fe,_0x1f8cfc,_0x989184){var _0x390b49={'uri':_0xdc39fe+_0xef41('0x37')+_0x989184};io['to'](util['format'](_0xef41('0x38'),_0x1f8cfc))[_0xef41('0x39')](_0xef41('0x3a'),_0x390b49);}exports['cs']=function(_0xd888ed,_0x4cdd06,_0x579348,_0x2bd6ff,_0xf518e2,_0x1be656,_0x12570e,_0x3d7255){var _0x14cdc2={};var _0x1398aa={'Authorization':_0xef41('0x3b')+_0x1be656[_0xef41('0x3c')]};_0x1be656[_0xef41('0x3d')]=intUtil['stripTrailingSlash'](_0x1be656['remoteUri']);_0x1be656[_0xef41('0x3e')]=intUtil['stripTrailingSlash'](_0x1be656[_0xef41('0x3e')]);var _0x480b4a=_0x1be656['remoteUri'];_0x14cdc2[_0xef41('0x1f')]=_0x1be656[_0xef41('0x3f')];_0x14cdc2[_0xef41('0x2b')]=_0x3d7255['toLowerCase']()===_0xef41('0x40')?_0x4cdd06['destcalleridnum']:_0x4cdd06['calleridnum'];_0x14cdc2[_0xef41('0x41')]=_0x3d7255===_0xef41('0x42')||_0x3d7255===_0xef41('0x43')?_0xef41('0x42'):_0xef41('0x40');if(_0x2bd6ff){_0x14cdc2['agentEmail']=_0x2bd6ff[_0xef41('0xf')];}var _0x2bbd22=util['format'](_0xef41('0x44'),_0x1be656[_0xef41('0x3e')],_0x4cdd06[_0xef41('0x45')],md5(_0x4cdd06[_0xef41('0x45')]));if(_0xf518e2&&_0xf518e2['monitor_format']){logger['info'](_0xef41('0x46'),'Recording\x20is\x20enabled!');_0x4cdd06[_0xef41('0x47')]=_0x2bbd22;}else if(_0x12570e&&_0x12570e[_0xef41('0x48')]&&_0x12570e['recordingFormat']!==_0xef41('0x49')){logger[_0xef41('0x11')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4cdd06[_0xef41('0x47')]=_0x2bbd22;}else{_0x4cdd06[_0xef41('0x47')]='';}return getAdminId(_0x14cdc2,_0x3d7255,_0x1398aa,_0x480b4a)[_0xef41('0xe')](getUser(_0x3d7255,_0x1398aa,_0x480b4a))[_0xef41('0xe')](getEndUser(_0x3d7255,_0x1398aa,_0x480b4a))[_0xef41('0xe')](getTicket(_0x3d7255,_0x1398aa,_0x480b4a,_0x579348,_0x4cdd06))[_0xef41('0xe')](function(_0x538a9b){logger[_0xef41('0x11')](util['format'](_0xef41('0x4a'),_0x538a9b[_0xef41('0x34')]));if(_0x3d7255!==_0xef41('0x43')){logger['info']('['+[_0x3d7255[_0xef41('0x15')]()]+']',_0xef41('0x4b'));emit(_0x480b4a,_0x2bd6ff['name'],_0x538a9b[_0xef41('0x27')]);}})[_0xef41('0x14')](function(_0x1b1371){logger[_0xef41('0x20')]('['+[_0x3d7255['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x1b1371,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 9c7d7c6..238fd5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf2c=['./dynamics365','./freshsales','zendesk','freshdesk','desk','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','salesforce','sugarcrm','vtiger','freshsales','dynamics365','log','../../../../config/logger','error','%s\x20configuration\x20#%s\x20not\x20found','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./desk','./vtiger','./servicenow'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xaf2c,0x110));var _0xcaf2=function(_0x1ca5e7,_0x1abf12){_0x1ca5e7=_0x1ca5e7-0x0;var _0x1ecb69=_0xaf2c[_0x1ca5e7];return _0x1ecb69;};'use strict';var _=require(_0xcaf2('0x0'));var util=require(_0xcaf2('0x1'));var zendesk=require(_0xcaf2('0x2'));var salesforce=require(_0xcaf2('0x3'));var sugarcrm=require(_0xcaf2('0x4'));var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0xcaf2('0x5'));var vtiger=require(_0xcaf2('0x6'));var servicenow=require(_0xcaf2('0x7'));var dynamics365=require(_0xcaf2('0x8'));var freshsales=require(_0xcaf2('0x9'));var integrations=[_0xcaf2('0xa'),'salesforce','sugarcrm',_0xcaf2('0xb'),'zoho',_0xcaf2('0xc'),'vtiger','dynamics365','freshsales',_0xcaf2('0xd')];exports[_0xcaf2('0xe')]=function(_0x294b3d,_0x2c7664,_0x740d66,_0x4c0b88,_0x3c9a01,_0x5bc25e){if(_0x740d66){if(_[_0xcaf2('0xf')](integrations,_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]())){try{var _0x326082=null;var _0x266a37='';var _0x4627b5=_0x740d66[_0x294b3d['data1']['toLowerCase']()];if(_0x4627b5){var _0x289bc9=_0x4627b5[_0x294b3d[_0xcaf2('0x12')]];if(_0x289bc9){var _0x46ef5a=_[_0xcaf2('0x13')](_0x289bc9[_0xcaf2('0x14')],{'id':parseInt(_0x294b3d[_0xcaf2('0x15')],0xa)});if(_0x46ef5a){if(_0x4c0b88){if(_0x3c9a01&&_0x2c7664[_0xcaf2('0x16')]){_0x266a37='queue';}else if(_0x2c7664['routeId']){_0x266a37='outbound';}else{console['log']('EVENT\x20UNKNOWN',_0x2c7664);}}else{_0x266a37='unmanaged';}switch(_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]()){case _0xcaf2('0xa'):zendesk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x17'):salesforce[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x18'):sugarcrm[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case'freshdesk':freshdesk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case'zoho':zoho[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0xc'):desk[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x19'):vtiger[_0x266a37](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e);break;case _0xcaf2('0x1a'):freshsales['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;case _0xcaf2('0xd'):servicenow['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;case _0xcaf2('0x1b'):dynamics365['cs'](_0x294b3d,_0x2c7664,_0x46ef5a,_0x4c0b88,_0x3c9a01,_0x289bc9,_0x5bc25e,_0x266a37);break;default:console[_0xcaf2('0x1c')]('unknown\x20integration');}}else{_0x326082=require(_0xcaf2('0x1d'))(_0x294b3d['data1'][_0xcaf2('0x11')]());_0x326082[_0xcaf2('0x1e')]('[EXEC]',util['format'](_0xcaf2('0x1f'),_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')](),_0x294b3d[_0xcaf2('0x15')]));}}else{_0x326082=require(_0xcaf2('0x1d'))(_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')]());_0x326082['error'](_0xcaf2('0x20'),util[_0xcaf2('0x21')](_0xcaf2('0x22'),_0x294b3d[_0xcaf2('0x10')][_0xcaf2('0x11')](),_0x294b3d[_0xcaf2('0x12')]));}}else{}}catch(_0x5e802b){console[_0xcaf2('0x1e')](_0x5e802b);}}}};
\ No newline at end of file
+var _0xb8c4=['freshsales','servicenow','exec','includes','data1','data2','find','Configurations','queue','routeId','log','EVENT\x20UNKNOWN','unmanaged','toLowerCase','dynamics365','../../../../config/logger','error','format','%s\x20configuration\x20#%s\x20not\x20found','data3','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./sugarcrm','./desk','./vtiger','./servicenow','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger'];(function(_0xbfe645,_0x1c78fb){var _0x1b2b2a=function(_0x5095f1){while(--_0x5095f1){_0xbfe645['push'](_0xbfe645['shift']());}};_0x1b2b2a(++_0x1c78fb);}(_0xb8c4,0x1a1));var _0x4b8c=function(_0x52fa1e,_0x39a40f){_0x52fa1e=_0x52fa1e-0x0;var _0x26849d=_0xb8c4[_0x52fa1e];return _0x26849d;};'use strict';var _=require('lodash');var util=require(_0x4b8c('0x0'));var zendesk=require(_0x4b8c('0x1'));var salesforce=require(_0x4b8c('0x2'));var sugarcrm=require(_0x4b8c('0x3'));var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0x4b8c('0x4'));var vtiger=require(_0x4b8c('0x5'));var servicenow=require(_0x4b8c('0x6'));var dynamics365=require(_0x4b8c('0x7'));var freshsales=require('./freshsales');var integrations=[_0x4b8c('0x8'),_0x4b8c('0x9'),_0x4b8c('0xa'),_0x4b8c('0xb'),_0x4b8c('0xc'),_0x4b8c('0xd'),_0x4b8c('0xe'),'dynamics365',_0x4b8c('0xf'),_0x4b8c('0x10')];exports[_0x4b8c('0x11')]=function(_0x3f5cc6,_0x11abb9,_0x5e1100,_0x320b96,_0x3daa3c,_0x1afaf7){if(_0x5e1100){if(_[_0x4b8c('0x12')](integrations,_0x3f5cc6[_0x4b8c('0x13')]['toLowerCase']())){try{var _0x2b0fb6=null;var _0x15e7d6='';var _0x39fb4b=_0x5e1100[_0x3f5cc6[_0x4b8c('0x13')]['toLowerCase']()];if(_0x39fb4b){var _0x55e53e=_0x39fb4b[_0x3f5cc6[_0x4b8c('0x14')]];if(_0x55e53e){var _0x2d92ed=_[_0x4b8c('0x15')](_0x55e53e[_0x4b8c('0x16')],{'id':parseInt(_0x3f5cc6['data3'],0xa)});if(_0x2d92ed){if(_0x320b96){if(_0x3daa3c&&_0x11abb9[_0x4b8c('0x17')]){_0x15e7d6=_0x4b8c('0x17');}else if(_0x11abb9[_0x4b8c('0x18')]){_0x15e7d6='outbound';}else{console[_0x4b8c('0x19')](_0x4b8c('0x1a'),_0x11abb9);}}else{_0x15e7d6=_0x4b8c('0x1b');}switch(_0x3f5cc6[_0x4b8c('0x13')][_0x4b8c('0x1c')]()){case _0x4b8c('0x8'):zendesk[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0x9'):salesforce[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0xa'):sugarcrm[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0xb'):freshdesk[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0xc'):zoho[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0xd'):desk[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case'vtiger':vtiger[_0x15e7d6](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7);break;case _0x4b8c('0xf'):freshsales['cs'](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7,_0x15e7d6);break;case _0x4b8c('0x10'):servicenow['cs'](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7,_0x15e7d6);break;case _0x4b8c('0x1d'):dynamics365['cs'](_0x3f5cc6,_0x11abb9,_0x2d92ed,_0x320b96,_0x3daa3c,_0x55e53e,_0x1afaf7,_0x15e7d6);break;default:console[_0x4b8c('0x19')]('unknown\x20integration');}}else{_0x2b0fb6=require(_0x4b8c('0x1e'))(_0x3f5cc6[_0x4b8c('0x13')][_0x4b8c('0x1c')]());_0x2b0fb6[_0x4b8c('0x1f')]('[EXEC]',util[_0x4b8c('0x20')](_0x4b8c('0x21'),_0x3f5cc6[_0x4b8c('0x13')][_0x4b8c('0x1c')](),_0x3f5cc6[_0x4b8c('0x22')]));}}else{_0x2b0fb6=require(_0x4b8c('0x1e'))(_0x3f5cc6[_0x4b8c('0x13')][_0x4b8c('0x1c')]());_0x2b0fb6['error']('[EXEC]',util[_0x4b8c('0x20')](_0x4b8c('0x23'),_0x3f5cc6[_0x4b8c('0x13')][_0x4b8c('0x1c')](),_0x3f5cc6[_0x4b8c('0x14')]));}}else{}}catch(_0x5662fc){console['error'](_0x5662fc);}}}};
\ No newline at end of file
index 99feac4..a6e3818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cf3=['isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','identity','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','sobject','Lead','account_contact_lead','additionalSearchAccount','Account','contact','Phone','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','<unknown>','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','No\x20Company','upperFirst','create','forEach','includes','string','type','idField','content','toString','variableName','Variable','name','toLowerCase','password','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','[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.','outbound','recordingFormat','none','[OUTBOUND]','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','calleridname','toUpperCase',']\x20Ticket\x20%s\x20created.','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','getString','Subjects','ticketType','utc','IsReminderSet','IsRecurrence','endUserType','lead','account','WhatId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x0cf3,0x1d3));var _0x30cf=function(_0x1df3d0,_0x422f2e){_0x1df3d0=_0x1df3d0-0x0;var _0x32f149=_0x0cf3[_0x1df3d0];return _0x32f149;};'use strict';var _=require('lodash');var rp=require(_0x30cf('0x0'));var moment=require(_0x30cf('0x1'));var BPromise=require(_0x30cf('0x2'));var md5=require(_0x30cf('0x3'));var jsforce=require(_0x30cf('0x4'));var util=require(_0x30cf('0x5'));var Redis=require(_0x30cf('0x6'));var intUtil=require(_0x30cf('0x7'));var config=require(_0x30cf('0x8'));var logger=require(_0x30cf('0x9'))(_0x30cf('0xa'));config[_0x30cf('0xb')]=_[_0x30cf('0xc')](config[_0x30cf('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x30cf('0xd'))(new Redis(config[_0x30cf('0xb')]));function emit(_0x232d49,_0x14accc,_0x2de08f){io['to'](_0x232d49)[_0x30cf('0xe')](_0x14accc,_0x2de08f);}function getTicket(_0x1e4621,_0x2b1cec,_0x1f5c44,_0x532c0a,_0x5cfbe8,_0x43a319,_0x55328c,_0x3d407a){var _0x2315bc=Object['assign']({},{'OwnerId':_0x2b1cec['id'],'Subject':intUtil[_0x30cf('0xf')](_0x532c0a[_0x30cf('0x10')],_0x5cfbe8,'\x20'),'Description':intUtil[_0x30cf('0xf')](_0x532c0a['Descriptions'],_0x5cfbe8,'\x0a')},getCustomFields(_0x43a319,_0x5cfbe8));if(_0x1f5c44){if(_0x532c0a[_0x30cf('0x11')]==='Task'){_0x2315bc['ActivityDate']=moment[_0x30cf('0x12')]();_0x2315bc[_0x30cf('0x13')]=![];_0x2315bc[_0x30cf('0x14')]=![];if(_0x1f5c44[_0x30cf('0x15')]==='contact'||_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x16')){_0x2315bc['WhoId']=_0x1f5c44['id'];}else if(_0x1f5c44['endUserType']===_0x30cf('0x17')){_0x2315bc[_0x30cf('0x18')]=_0x1f5c44['id'];}}else if(_0x532c0a['ticketType']==='Case'){if(_0x1f5c44[_0x30cf('0x15')]==='contact'){_0x2315bc['ContactId']=_0x1f5c44['id'];}else if(_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x17')){_0x2315bc[_0x30cf('0x19')]=_0x1f5c44['id'];}else if(_0x1f5c44[_0x30cf('0x15')]===_0x30cf('0x16')&&_0x532c0a[_0x30cf('0x1a')]){_0x2315bc[_0x532c0a['leadId']]=_0x1f5c44['id'];}else{logger[_0x30cf('0x1b')](_0x30cf('0x1c'));}}}return _0x55328c['sobject'](_0x532c0a[_0x30cf('0x11')])['create'](_0x2315bc);}function getUser(_0x52fc8e,_0x459568,_0x41732c){if(!_[_0x30cf('0x1d')](_0x459568)&&intUtil[_0x30cf('0x1e')](_0x459568)){var _0x290390={'Email':_0x459568};var _0x476efc={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x41732c['sobject'](_0x30cf('0x1f'))[_0x30cf('0x20')](_0x290390,_0x476efc)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x5b2089){if(_0x5b2089[_0x30cf('0x23')]){var _0x38cdb4=_[_0x30cf('0x20')](_0x5b2089,function(_0x926a03){return _0x926a03[_0x30cf('0x24')]===_0x459568;});if(_0x38cdb4){logger[_0x30cf('0x1b')](_0x30cf('0x25'),_0x459568);return BPromise[_0x30cf('0x26')]({'id':_0x38cdb4['Id'],'name':_0x38cdb4[_0x30cf('0x27')]});}}else{logger[_0x30cf('0x1b')](_0x30cf('0x28'),_0x459568);return _0x41732c['identity']()[_0x30cf('0x22')](function(_0x403514){return BPromise[_0x30cf('0x26')]({'id':_0x403514[_0x30cf('0x29')],'name':_0x403514['display_name']});});}});}else{logger[_0x30cf('0x1b')](_0x30cf('0x28'),_0x459568);return _0x41732c[_0x30cf('0x2a')]()[_0x30cf('0x22')](function(_0x4a6127){return BPromise[_0x30cf('0x26')]({'id':_0x4a6127[_0x30cf('0x29')],'name':_0x4a6127[_0x30cf('0x2b')]});});}}function getEndUser(_0x542f75,_0x48a839,_0x1c1baf,_0x265555,_0x55256a){var _0x317259={'$or':{'Phone':_0x265555}};var _0x461e79={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x30cf('0x26')]()['then'](function(){logger[_0x30cf('0x1b')](_0x30cf('0x2c'),_0x265555,_0x48a839[_0x30cf('0x2d')]);switch(_0x48a839[_0x30cf('0x2d')]){case _0x30cf('0x2e'):var _0x23598c=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x30')]]=_0x265555;_['merge'](_0x23598c[_0x30cf('0x31')],_0x179e6a);}return _0x55256a['sobject'](_0x30cf('0x32'))['find'](_0x23598c,_0x461e79)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x5d2e9f){if(_0x5d2e9f&&_0x5d2e9f[_0x30cf('0x23')]){return _0x5d2e9f;}else{var _0x583c94=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x33')]){var _0x3f7d29={};_0x3f7d29[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x583c94['$or'],_0x3f7d29);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x583c94,_0x461e79);}});case _0x30cf('0x37'):var _0xd0fc62=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchAccount']){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x38')]]=_0x265555;_[_0x30cf('0x34')](_0xd0fc62['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x39'))[_0x30cf('0x20')](_0xd0fc62,_0x461e79)[_0x30cf('0x21')]()[_0x30cf('0x22')](function(_0x533238){if(_0x533238&&_0x533238[_0x30cf('0x23')]){return _0x533238;}else{var _0x369ed6=_['cloneDeep'](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x5a06e6={};_0x5a06e6[_0x48a839[_0x30cf('0x30')]]=_0x265555;_[_0x30cf('0x34')](_0x369ed6[_0x30cf('0x31')],_0x5a06e6);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x32'))[_0x30cf('0x20')](_0x369ed6,_0x461e79)[_0x30cf('0x22')](function(_0x4163ad){if(_0x4163ad&&_0x4163ad['length']){return _0x4163ad;}else{var _0x4b7fe6=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchLead']){var _0x12b0cf={};_0x12b0cf[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x4b7fe6[_0x30cf('0x31')],_0x12b0cf);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x4b7fe6,_0x461e79);}});}});case _0x30cf('0x3a'):var _0x23598c=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839[_0x30cf('0x30')]){var _0x179e6a={};_0x179e6a[_0x48a839['additionalSearchContact']]=_0x265555;_[_0x30cf('0x34')](_0x23598c['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x32'))['find'](_0x23598c,_0x461e79)['execute']();case _0x30cf('0x16'):var _0x25ba1f=_['cloneDeep'](_0x317259);if(_0x48a839['additionalSearchLead']){var _0x179e6a={};_0x179e6a[_0x48a839[_0x30cf('0x33')]]=_0x265555;_[_0x30cf('0x34')](_0x25ba1f['$or'],_0x179e6a);}return _0x55256a[_0x30cf('0x35')](_0x30cf('0x36'))[_0x30cf('0x20')](_0x25ba1f,_0x461e79);case _0x30cf('0x17'):var _0xd0fc62=_[_0x30cf('0x2f')](_0x317259);if(_0x48a839['additionalSearchAccount']){var _0x179e6a={};_0x179e6a[_0x48a839['additionalSearchAccount']]=_0x265555;_[_0x30cf('0x34')](_0xd0fc62['$or'],_0x179e6a);}return _0x55256a['sobject'](_0x30cf('0x39'))[_0x30cf('0x20')](_0xd0fc62,_0x461e79);default:return null;}})['then'](function(_0xc58e91){if(_0xc58e91&&_0xc58e91[_0x30cf('0x23')]){var _0x32da5f=_['first'](_0xc58e91);if(_0x32da5f){return BPromise[_0x30cf('0x26')]({'id':_0x32da5f['Id'],'name':_0x32da5f['Name'],'phone':_0x32da5f[_0x30cf('0x3b')],'endUserType':_0x32da5f['attributes']['type']['toLowerCase']()});}}})['then'](function(_0x2b0832){if(_0x2b0832){logger[_0x30cf('0x1b')](_0x30cf('0x3c'),_0x2b0832[_0x30cf('0x15')],_0x265555);return BPromise[_0x30cf('0x26')](_0x2b0832);}else{logger['info'](_0x30cf('0x3d'),_0x265555);var _0x31c65e={'Phone':_0x265555};if(_0x48a839['moduleCreate']){if(_0x48a839[_0x30cf('0x3e')]===_0x30cf('0x3a')){logger[_0x30cf('0x1b')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x3f')]=_0x1c1baf!==_0x30cf('0x40')?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);}else if(_0x48a839[_0x30cf('0x3e')]==='lead'){logger[_0x30cf('0x1b')](_0x30cf('0x42'),_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x3f')]=_0x1c1baf!=='<unknown>'?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);_0x31c65e['Company']=_0x30cf('0x43');}else if(_0x48a839['moduleCreate']===_0x30cf('0x17')){logger[_0x30cf('0x1b')](_0x30cf('0x42'),_0x265555,_0x48a839[_0x30cf('0x3e')]);_0x31c65e[_0x30cf('0x27')]=_0x1c1baf!==_0x30cf('0x40')?_0x1c1baf:util['format'](_0x30cf('0x41'),_0x265555);}else{return null;}}return _0x55256a['sobject'](_[_0x30cf('0x44')](_0x48a839[_0x30cf('0x3e')]))[_0x30cf('0x45')](_0x31c65e)[_0x30cf('0x22')](function(_0x343cdc){return BPromise[_0x30cf('0x26')]({'id':_0x343cdc['id'],'endUserType':_0x48a839[_0x30cf('0x3e')]});});}});}function getCustomFields(_0x5af061,_0x1e6d94){var _0x34fc9f={};if(_0x5af061[_0x30cf('0x23')]>0x0){_[_0x30cf('0x46')](_0x5af061,function(_0x5df698){if(_[_0x30cf('0x47')]([_0x30cf('0x48'),'picklist'],_0x5df698[_0x30cf('0x49')])&&_0x5df698[_0x30cf('0x4a')]){_0x34fc9f[_0x5df698[_0x30cf('0x4a')]]=_0x5df698[_0x30cf('0x4b')][_0x30cf('0x4c')]();}else if(_0x5df698[_0x30cf('0x49')]==='variable'&&_0x5df698[_0x30cf('0x4d')]&&_0x5df698[_0x30cf('0x4a')]){_0x1e6d94[_0x5df698[_0x30cf('0x4d')]]&&(_0x34fc9f[_0x5df698['idField']]=_0x1e6d94[_0x5df698['variableName']][_0x30cf('0x4c')]());}else if(_0x5df698[_0x30cf('0x49')]==='customVariable'&&_0x5df698[_0x30cf('0x4e')]&&_0x5df698['Variable'][_0x30cf('0x4f')]&&_0x5df698[_0x30cf('0x4a')]){_0x1e6d94[_0x5df698[_0x30cf('0x4e')][_0x30cf('0x4f')][_0x30cf('0x50')]()]&&(_0x34fc9f[_0x5df698[_0x30cf('0x4a')]]=_0x1e6d94[_0x5df698[_0x30cf('0x4e')]['name']['toLowerCase']()][_0x30cf('0x4c')]());}});}return _0x34fc9f;}function getConnection(_0x58f68c){var _0x4c916d=_0x58f68c[_0x30cf('0x51')]['concat'](_0x58f68c[_0x30cf('0x52')]);var _0x18a6fb=new jsforce['Connection']({'oauth2':{'loginUrl':_0x58f68c[_0x30cf('0x53')]||_0x30cf('0x54'),'clientId':_0x58f68c[_0x30cf('0x55')],'clientSecret':_0x58f68c[_0x30cf('0x56')]}});return _0x18a6fb[_0x30cf('0x57')](_0x58f68c[_0x30cf('0x58')],_0x4c916d)[_0x30cf('0x22')](function(){logger['info']('Connection\x20established.');return _0x18a6fb;});}exports[_0x30cf('0x59')]=function(_0x337835,_0x5f25f8,_0x5322ec,_0x525a11,_0x36b5a4,_0x19832e){var _0x23efb2,_0x21efce,_0x55eaeb,_0x24e61b;_0x19832e[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x19832e[_0x30cf('0x5a')]);_0x19832e[_0x30cf('0x53')]=intUtil['stripTrailingSlash'](_0x19832e[_0x30cf('0x53')]);if(_0x36b5a4&&_0x36b5a4[_0x30cf('0x5c')]){logger['info']('[QUEUE]',_0x30cf('0x5d'));_0x5f25f8[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x19832e[_0x30cf('0x5a')],_0x5f25f8[_0x30cf('0x61')],md5(_0x5f25f8[_0x30cf('0x61')]));}else{_0x5f25f8['recordingURL']='';}return getConnection(_0x19832e)[_0x30cf('0x22')](function(_0x408f89){_0x24e61b=_0x408f89;return getUser(_0x19832e,_0x525a11['email'],_0x24e61b);})['then'](function(_0x5a45cf){_0x23efb2=_0x5a45cf;return getEndUser(_0x19832e,_0x5322ec,_0x5f25f8['calleridname'],_0x5f25f8[_0x30cf('0x62')],_0x24e61b);})[_0x30cf('0x22')](function(_0x5a6631){_0x21efce=_0x5a6631;return getTicket(_0x19832e,_0x23efb2,_0x21efce,_0x5322ec,_0x5f25f8,_0x5322ec['Fields'],_0x24e61b,'queue');})[_0x30cf('0x22')](function(_0x587468){_0x55eaeb=_0x587468;logger[_0x30cf('0x1b')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x55eaeb['id']);logger['info'](_0x30cf('0x63'),_0x55eaeb['id'],_0x525a11[_0x30cf('0x4f')],_0x19832e[_0x30cf('0x49')]);switch(_0x19832e['type']){case'integrationTab':emit(util['format'](_0x30cf('0x64'),_0x525a11[_0x30cf('0x4f')]),'trigger:salesforce:display',{'recordId':_0x55eaeb['id']});break;case _0x30cf('0x65'):emit(util[_0x30cf('0x5f')](_0x30cf('0x64'),_0x525a11[_0x30cf('0x4f')]),_0x30cf('0x66'),{'uri':util['format'](_0x30cf('0x67'),_0x24e61b[_0x30cf('0x68')],_0x55eaeb['id'])});break;default:logger[_0x30cf('0x69')](_0x30cf('0x6a'));}})['catch'](function(_0x18219b){logger['error']('[QUEUE]',_0x18219b);});};exports[_0x30cf('0x6b')]=function(_0x31d661,_0x3079af,_0x4be55f,_0x104818,_0x30d6ef,_0x8f7b95,_0x3f91a5){var _0x1d107c,_0xd72483,_0x4c9445,_0x1f9740;_0x8f7b95[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x8f7b95[_0x30cf('0x5a')]);_0x8f7b95[_0x30cf('0x53')]=intUtil[_0x30cf('0x5b')](_0x8f7b95[_0x30cf('0x53')]);if(_0x3f91a5&&_0x3f91a5[_0x30cf('0x6c')]&&_0x3f91a5[_0x30cf('0x6c')]!==_0x30cf('0x6d')){logger[_0x30cf('0x1b')](_0x30cf('0x6e'),'Recording\x20is\x20enabled!');_0x3079af[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x8f7b95[_0x30cf('0x5a')],_0x3079af['uniqueid'],md5(_0x3079af[_0x30cf('0x61')]));}return getConnection(_0x8f7b95)['then'](function(_0x4511e9){_0x1f9740=_0x4511e9;return getUser(_0x8f7b95,_0x104818['email'],_0x1f9740);})[_0x30cf('0x22')](function(_0x3d3f5b){_0x1d107c=_0x3d3f5b;return getEndUser(_0x8f7b95,_0x4be55f,_0x3079af['destcalleridname'],_0x3079af[_0x30cf('0x6f')],_0x1f9740);})[_0x30cf('0x22')](function(_0x5a04b3){_0xd72483=_0x5a04b3;return getTicket(_0x8f7b95,_0x1d107c,_0xd72483,_0x4be55f,_0x3079af,_0x4be55f[_0x30cf('0x70')],_0x1f9740,_0x30cf('0x6b'));})[_0x30cf('0x22')](function(_0xfc3e6f){_0x4c9445=_0xfc3e6f;logger[_0x30cf('0x1b')](_0x30cf('0x71'),_0x4c9445['id']);logger[_0x30cf('0x1b')](_0x30cf('0x72'),_0x4c9445['id'],_0x104818[_0x30cf('0x4f')],_0x8f7b95[_0x30cf('0x49')]);switch(_0x8f7b95[_0x30cf('0x49')]){case _0x30cf('0x73'):emit(util[_0x30cf('0x5f')]('user:%s',_0x104818[_0x30cf('0x4f')]),_0x30cf('0x74'),{'recordId':_0x4c9445['id']});break;case'newTab':emit(util[_0x30cf('0x5f')]('user:%s',_0x104818['name']),_0x30cf('0x66'),{'uri':util['format'](_0x30cf('0x67'),_0x1f9740[_0x30cf('0x68')],_0x4c9445['id'])});break;default:logger['error'](_0x30cf('0x6e'),_0x30cf('0x75'));}})[_0x30cf('0x76')](function(_0x16da75){logger[_0x30cf('0x69')]('[OUTBOUND]',_0x16da75);});};exports[_0x30cf('0x77')]=function(_0x51fbdc,_0x4769f7,_0x5f1b4b,_0x4a61d6,_0xbe7925,_0x5a114a){var _0x18fa87,_0x5b9a93,_0x139e99,_0x55cfa;_0x5a114a[_0x30cf('0x5a')]=intUtil[_0x30cf('0x5b')](_0x5a114a['serverUrl']);_0x5a114a[_0x30cf('0x53')]=intUtil[_0x30cf('0x5b')](_0x5a114a['remoteUri']);if(_0xbe7925&&_0xbe7925[_0x30cf('0x5c')]){logger['info']('['+_0x4769f7[_0x30cf('0x78')]['toUpperCase']()+']',_0x30cf('0x5d'));_0x4769f7[_0x30cf('0x5e')]=util[_0x30cf('0x5f')](_0x30cf('0x60'),_0x5a114a[_0x30cf('0x5a')],_0x4769f7[_0x30cf('0x61')],md5(_0x4769f7['uniqueid']));}else{_0x4769f7[_0x30cf('0x5e')]='';}return getConnection(_0x5a114a)[_0x30cf('0x22')](function(_0x3c0894){_0x55cfa=_0x3c0894;if(!_[_0x30cf('0x1d')](_0x4a61d6)){return getUser(_0x5a114a,_0x4a61d6[_0x30cf('0x4f')],_0x55cfa);}else{return getUser(_0x5a114a,null,_0x55cfa);}})[_0x30cf('0x22')](function(_0x18bc60){_0x18fa87=_0x18bc60;return getEndUser(_0x5a114a,_0x5f1b4b,_0x4769f7[_0x30cf('0x79')],_0x4769f7[_0x30cf('0x62')],_0x55cfa);})[_0x30cf('0x22')](function(_0x47df5c){_0x5b9a93=_0x47df5c;return getTicket(_0x5a114a,_0x18fa87,_0x5b9a93,_0x5f1b4b,_0x4769f7,_0x5f1b4b['Fields'],_0x55cfa);})[_0x30cf('0x22')](function(_0x50d6ba){_0x139e99=_0x50d6ba;logger['info']('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+_0x30cf('0x7b'),_0x139e99['id']);logger['info']('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+']\x20Integration\x20account\x20type\x20%s.',_0x5a114a['type']);})[_0x30cf('0x76')](function(_0x18e17e){logger[_0x30cf('0x69')]('['+_0x4769f7[_0x30cf('0x78')][_0x30cf('0x7a')]()+']',_0x18e17e);});};
\ No newline at end of file
+var _0x19b2=['variable','variableName','customVariable','Variable','name','securityToken','https://login.salesforce.com','clientId','clientSecret','login','queue','serverUrl','remoteUri','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','trigger:browser:url','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','%s/%s/e','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','[OUTBOUND]','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','assign','Subjects','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','WhoId','account','ticketType','Case','ContactId','AccountId','lead','leadId','info','create','isNil','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','sobject','additionalSearchLead','Lead','additionalSearchAccount','Account','Contact','first','Name','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','Caller\x20-\x20%s','moduleCreate','<unknown>','format','Company','No\x20Company','upperFirst','forEach','includes','picklist','idField','toString'];(function(_0x38b2e7,_0x2f605b){var _0x308d09=function(_0x5ad923){while(--_0x5ad923){_0x38b2e7['push'](_0x38b2e7['shift']());}};_0x308d09(++_0x2f605b);}(_0x19b2,0xb4));var _0x219b=function(_0x1c20fb,_0x4c475a){_0x1c20fb=_0x1c20fb-0x0;var _0x42dc86=_0x19b2[_0x1c20fb];return _0x42dc86;};'use strict';var _=require(_0x219b('0x0'));var rp=require(_0x219b('0x1'));var moment=require(_0x219b('0x2'));var BPromise=require(_0x219b('0x3'));var md5=require(_0x219b('0x4'));var jsforce=require(_0x219b('0x5'));var util=require(_0x219b('0x6'));var Redis=require(_0x219b('0x7'));var intUtil=require(_0x219b('0x8'));var config=require('../../../../config/environment');var logger=require(_0x219b('0x9'))('salesforce');config['redis']=_[_0x219b('0xa')](config[_0x219b('0xb')],{'host':_0x219b('0xc'),'port':0x18eb});var io=require(_0x219b('0xd'))(new Redis(config[_0x219b('0xb')]));function emit(_0x48b0aa,_0x5a1bea,_0x745ed0){io['to'](_0x48b0aa)[_0x219b('0xe')](_0x5a1bea,_0x745ed0);}function getTicket(_0x1ea77c,_0x2cb961,_0x3f9a2b,_0x1ddb75,_0xf085ca,_0x329ef5,_0x146355,_0x35f9d6){var _0x8e1624=Object[_0x219b('0xf')]({},{'OwnerId':_0x2cb961['id'],'Subject':intUtil['getString'](_0x1ddb75[_0x219b('0x10')],_0xf085ca,'\x20'),'Description':intUtil['getString'](_0x1ddb75[_0x219b('0x11')],_0xf085ca,'\x0a')},getCustomFields(_0x329ef5,_0xf085ca));if(_0x3f9a2b){if(_0x1ddb75['ticketType']===_0x219b('0x12')){_0x8e1624[_0x219b('0x13')]=moment[_0x219b('0x14')]();_0x8e1624[_0x219b('0x15')]=![];_0x8e1624[_0x219b('0x16')]=![];if(_0x3f9a2b[_0x219b('0x17')]===_0x219b('0x18')||_0x3f9a2b[_0x219b('0x17')]==='lead'){_0x8e1624[_0x219b('0x19')]=_0x3f9a2b['id'];}else if(_0x3f9a2b[_0x219b('0x17')]===_0x219b('0x1a')){_0x8e1624['WhatId']=_0x3f9a2b['id'];}}else if(_0x1ddb75[_0x219b('0x1b')]===_0x219b('0x1c')){if(_0x3f9a2b[_0x219b('0x17')]===_0x219b('0x18')){_0x8e1624[_0x219b('0x1d')]=_0x3f9a2b['id'];}else if(_0x3f9a2b[_0x219b('0x17')]===_0x219b('0x1a')){_0x8e1624[_0x219b('0x1e')]=_0x3f9a2b['id'];}else if(_0x3f9a2b[_0x219b('0x17')]===_0x219b('0x1f')&&_0x1ddb75[_0x219b('0x20')]){_0x8e1624[_0x1ddb75['leadId']]=_0x3f9a2b['id'];}else{logger[_0x219b('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x146355['sobject'](_0x1ddb75[_0x219b('0x1b')])[_0x219b('0x22')](_0x8e1624);}function getUser(_0xa15736,_0x133da7,_0x2187ad){if(!_[_0x219b('0x23')](_0x133da7)&&intUtil['validateEmail'](_0x133da7)){var _0x961973={'Email':_0x133da7};var _0x1f9451={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2187ad['sobject'](_0x219b('0x24'))[_0x219b('0x25')](_0x961973,_0x1f9451)[_0x219b('0x26')]()[_0x219b('0x27')](function(_0x238b1d){if(_0x238b1d[_0x219b('0x28')]){var _0x341e67=_[_0x219b('0x25')](_0x238b1d,function(_0x21406d){return _0x21406d[_0x219b('0x29')]===_0x133da7;});if(_0x341e67){logger['info'](_0x219b('0x2a'),_0x133da7);return BPromise[_0x219b('0x2b')]({'id':_0x341e67['Id'],'name':_0x341e67['Name']});}}else{logger[_0x219b('0x21')](_0x219b('0x2c'),_0x133da7);return _0x2187ad['identity']()[_0x219b('0x27')](function(_0x39567f){return BPromise['resolve']({'id':_0x39567f[_0x219b('0x2d')],'name':_0x39567f[_0x219b('0x2e')]});});}});}else{logger[_0x219b('0x21')](_0x219b('0x2c'),_0x133da7);return _0x2187ad[_0x219b('0x2f')]()[_0x219b('0x27')](function(_0xaa978){return BPromise['resolve']({'id':_0xaa978[_0x219b('0x2d')],'name':_0xaa978[_0x219b('0x2e')]});});}}function getEndUser(_0x15b424,_0x40ef54,_0x1cbe8b,_0x233e45,_0x360db6){var _0x347192={'$or':{'Phone':_0x233e45}};var _0x283da7={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x219b('0x2b')]()[_0x219b('0x27')](function(){logger[_0x219b('0x21')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x233e45,_0x40ef54[_0x219b('0x30')]);switch(_0x40ef54[_0x219b('0x30')]){case _0x219b('0x31'):var _0x373f7a=_[_0x219b('0x32')](_0x347192);if(_0x40ef54['additionalSearchContact']){var _0x2316fb={};_0x2316fb[_0x40ef54[_0x219b('0x33')]]=_0x233e45;_[_0x219b('0x34')](_0x373f7a[_0x219b('0x35')],_0x2316fb);}return _0x360db6[_0x219b('0x36')]('Contact')[_0x219b('0x25')](_0x373f7a,_0x283da7)[_0x219b('0x26')]()[_0x219b('0x27')](function(_0x29d1d8){if(_0x29d1d8&&_0x29d1d8['length']){return _0x29d1d8;}else{var _0x4ce819=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x37')]){var _0x2575f1={};_0x2575f1[_0x40ef54[_0x219b('0x37')]]=_0x233e45;_[_0x219b('0x34')](_0x4ce819['$or'],_0x2575f1);}return _0x360db6[_0x219b('0x36')](_0x219b('0x38'))[_0x219b('0x25')](_0x4ce819,_0x283da7);}});case'account_contact_lead':var _0x1aa645=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x39')]){var _0x2316fb={};_0x2316fb[_0x40ef54[_0x219b('0x39')]]=_0x233e45;_[_0x219b('0x34')](_0x1aa645[_0x219b('0x35')],_0x2316fb);}return _0x360db6['sobject'](_0x219b('0x3a'))[_0x219b('0x25')](_0x1aa645,_0x283da7)[_0x219b('0x26')]()['then'](function(_0x5421b3){if(_0x5421b3&&_0x5421b3[_0x219b('0x28')]){return _0x5421b3;}else{var _0x47c4ee=_[_0x219b('0x32')](_0x347192);if(_0x40ef54['additionalSearchContact']){var _0x1894bf={};_0x1894bf[_0x40ef54['additionalSearchContact']]=_0x233e45;_[_0x219b('0x34')](_0x47c4ee[_0x219b('0x35')],_0x1894bf);}return _0x360db6[_0x219b('0x36')]('Contact')[_0x219b('0x25')](_0x47c4ee,_0x283da7)['then'](function(_0x213649){if(_0x213649&&_0x213649['length']){return _0x213649;}else{var _0x12bbab=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x37')]){var _0x4fe010={};_0x4fe010[_0x40ef54[_0x219b('0x37')]]=_0x233e45;_['merge'](_0x12bbab[_0x219b('0x35')],_0x4fe010);}return _0x360db6[_0x219b('0x36')](_0x219b('0x38'))[_0x219b('0x25')](_0x12bbab,_0x283da7);}});}});case _0x219b('0x18'):var _0x373f7a=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x33')]){var _0x2316fb={};_0x2316fb[_0x40ef54['additionalSearchContact']]=_0x233e45;_[_0x219b('0x34')](_0x373f7a[_0x219b('0x35')],_0x2316fb);}return _0x360db6[_0x219b('0x36')](_0x219b('0x3b'))[_0x219b('0x25')](_0x373f7a,_0x283da7)[_0x219b('0x26')]();case _0x219b('0x1f'):var _0x3ec069=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x37')]){var _0x2316fb={};_0x2316fb[_0x40ef54[_0x219b('0x37')]]=_0x233e45;_[_0x219b('0x34')](_0x3ec069['$or'],_0x2316fb);}return _0x360db6['sobject'](_0x219b('0x38'))[_0x219b('0x25')](_0x3ec069,_0x283da7);case _0x219b('0x1a'):var _0x1aa645=_[_0x219b('0x32')](_0x347192);if(_0x40ef54[_0x219b('0x39')]){var _0x2316fb={};_0x2316fb[_0x40ef54[_0x219b('0x39')]]=_0x233e45;_[_0x219b('0x34')](_0x1aa645['$or'],_0x2316fb);}return _0x360db6['sobject'](_0x219b('0x3a'))['find'](_0x1aa645,_0x283da7);default:return null;}})[_0x219b('0x27')](function(_0x5d2fcc){if(_0x5d2fcc&&_0x5d2fcc[_0x219b('0x28')]){var _0x1213fb=_[_0x219b('0x3c')](_0x5d2fcc);if(_0x1213fb){return BPromise[_0x219b('0x2b')]({'id':_0x1213fb['Id'],'name':_0x1213fb[_0x219b('0x3d')],'phone':_0x1213fb['Phone'],'endUserType':_0x1213fb[_0x219b('0x3e')][_0x219b('0x3f')][_0x219b('0x40')]()});}}})['then'](function(_0x5c7dd4){if(_0x5c7dd4){logger[_0x219b('0x21')](_0x219b('0x41'),_0x5c7dd4[_0x219b('0x17')],_0x233e45);return BPromise[_0x219b('0x2b')](_0x5c7dd4);}else{logger[_0x219b('0x21')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x233e45);var _0x546dda={'Phone':_0x233e45};if(_0x40ef54['moduleCreate']){if(_0x40ef54['moduleCreate']===_0x219b('0x18')){logger['info'](_0x219b('0x42'),_0x233e45,_0x40ef54['moduleCreate']);_0x546dda[_0x219b('0x43')]=_0x1cbe8b!=='<unknown>'?_0x1cbe8b:util['format'](_0x219b('0x44'),_0x233e45);}else if(_0x40ef54[_0x219b('0x45')]===_0x219b('0x1f')){logger['info'](_0x219b('0x42'),_0x233e45,_0x40ef54[_0x219b('0x45')]);_0x546dda[_0x219b('0x43')]=_0x1cbe8b!==_0x219b('0x46')?_0x1cbe8b:util[_0x219b('0x47')](_0x219b('0x44'),_0x233e45);_0x546dda[_0x219b('0x48')]=_0x219b('0x49');}else if(_0x40ef54['moduleCreate']===_0x219b('0x1a')){logger[_0x219b('0x21')](_0x219b('0x42'),_0x233e45,_0x40ef54[_0x219b('0x45')]);_0x546dda[_0x219b('0x3d')]=_0x1cbe8b!==_0x219b('0x46')?_0x1cbe8b:util[_0x219b('0x47')](_0x219b('0x44'),_0x233e45);}else{return null;}}return _0x360db6[_0x219b('0x36')](_[_0x219b('0x4a')](_0x40ef54[_0x219b('0x45')]))[_0x219b('0x22')](_0x546dda)[_0x219b('0x27')](function(_0x45ed66){return BPromise[_0x219b('0x2b')]({'id':_0x45ed66['id'],'endUserType':_0x40ef54[_0x219b('0x45')]});});}});}function getCustomFields(_0x45a73f,_0x274baf){var _0x3b96f9={};if(_0x45a73f[_0x219b('0x28')]>0x0){_[_0x219b('0x4b')](_0x45a73f,function(_0x2befd5){if(_[_0x219b('0x4c')](['string',_0x219b('0x4d')],_0x2befd5[_0x219b('0x3f')])&&_0x2befd5[_0x219b('0x4e')]){_0x3b96f9[_0x2befd5[_0x219b('0x4e')]]=_0x2befd5['content'][_0x219b('0x4f')]();}else if(_0x2befd5[_0x219b('0x3f')]===_0x219b('0x50')&&_0x2befd5[_0x219b('0x51')]&&_0x2befd5['idField']){_0x274baf[_0x2befd5['variableName']]&&(_0x3b96f9[_0x2befd5[_0x219b('0x4e')]]=_0x274baf[_0x2befd5['variableName']][_0x219b('0x4f')]());}else if(_0x2befd5['type']===_0x219b('0x52')&&_0x2befd5[_0x219b('0x53')]&&_0x2befd5[_0x219b('0x53')][_0x219b('0x54')]&&_0x2befd5[_0x219b('0x4e')]){_0x274baf[_0x2befd5['Variable']['name']['toLowerCase']()]&&(_0x3b96f9[_0x2befd5[_0x219b('0x4e')]]=_0x274baf[_0x2befd5[_0x219b('0x53')][_0x219b('0x54')][_0x219b('0x40')]()][_0x219b('0x4f')]());}});}return _0x3b96f9;}function getConnection(_0x431df8){var _0x1d5622=_0x431df8['password']['concat'](_0x431df8[_0x219b('0x55')]);var _0x5f3a8b=new jsforce['Connection']({'oauth2':{'loginUrl':_0x431df8['remoteUri']||_0x219b('0x56'),'clientId':_0x431df8[_0x219b('0x57')],'clientSecret':_0x431df8[_0x219b('0x58')]}});return _0x5f3a8b[_0x219b('0x59')](_0x431df8['username'],_0x1d5622)[_0x219b('0x27')](function(){logger[_0x219b('0x21')]('Connection\x20established.');return _0x5f3a8b;});}exports[_0x219b('0x5a')]=function(_0x5c31c3,_0x11c2ed,_0x13eecd,_0x4315b1,_0x339a6f,_0x1a7507){var _0x1b230c,_0x2b1e70,_0x4ce030,_0x53229b;_0x1a7507['serverUrl']=intUtil['stripTrailingSlash'](_0x1a7507[_0x219b('0x5b')]);_0x1a7507[_0x219b('0x5c')]=intUtil[_0x219b('0x5d')](_0x1a7507[_0x219b('0x5c')]);if(_0x339a6f&&_0x339a6f[_0x219b('0x5e')]){logger[_0x219b('0x21')](_0x219b('0x5f'),_0x219b('0x60'));_0x11c2ed[_0x219b('0x61')]=util[_0x219b('0x47')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1a7507[_0x219b('0x5b')],_0x11c2ed[_0x219b('0x62')],md5(_0x11c2ed[_0x219b('0x62')]));}else{_0x11c2ed[_0x219b('0x61')]='';}return getConnection(_0x1a7507)['then'](function(_0xb17c70){_0x53229b=_0xb17c70;return getUser(_0x1a7507,_0x4315b1[_0x219b('0x63')],_0x53229b);})[_0x219b('0x27')](function(_0x4aa726){_0x1b230c=_0x4aa726;return getEndUser(_0x1a7507,_0x13eecd,_0x11c2ed[_0x219b('0x64')],_0x11c2ed[_0x219b('0x65')],_0x53229b);})['then'](function(_0x559e9e){_0x2b1e70=_0x559e9e;return getTicket(_0x1a7507,_0x1b230c,_0x2b1e70,_0x13eecd,_0x11c2ed,_0x13eecd['Fields'],_0x53229b,'queue');})[_0x219b('0x27')](function(_0x10a99a){_0x4ce030=_0x10a99a;logger[_0x219b('0x21')](_0x219b('0x66'),_0x4ce030['id']);logger[_0x219b('0x21')](_0x219b('0x67'),_0x4ce030['id'],_0x4315b1['name'],_0x1a7507[_0x219b('0x3f')]);switch(_0x1a7507[_0x219b('0x3f')]){case'integrationTab':emit(util[_0x219b('0x47')](_0x219b('0x68'),_0x4315b1['name']),_0x219b('0x69'),{'recordId':_0x4ce030['id']});break;case'newTab':emit(util[_0x219b('0x47')](_0x219b('0x68'),_0x4315b1[_0x219b('0x54')]),_0x219b('0x6a'),{'uri':util['format']('%s/%s/e',_0x53229b['instanceUrl'],_0x4ce030['id'])});break;default:logger[_0x219b('0x6b')](_0x219b('0x6c'));}})[_0x219b('0x6d')](function(_0x190a96){logger['error'](_0x219b('0x5f'),_0x190a96);});};exports[_0x219b('0x6e')]=function(_0xccc24e,_0x3f95bd,_0x74cf0a,_0x5acccb,_0x1ad7ca,_0x402699,_0x3c1b45){var _0x761278,_0x3fe31d,_0x3f2702,_0x346852;_0x402699[_0x219b('0x5b')]=intUtil['stripTrailingSlash'](_0x402699[_0x219b('0x5b')]);_0x402699[_0x219b('0x5c')]=intUtil['stripTrailingSlash'](_0x402699[_0x219b('0x5c')]);if(_0x3c1b45&&_0x3c1b45[_0x219b('0x6f')]&&_0x3c1b45[_0x219b('0x6f')]!==_0x219b('0x70')){logger[_0x219b('0x21')]('[OUTBOUND]',_0x219b('0x60'));_0x3f95bd[_0x219b('0x61')]=util[_0x219b('0x47')](_0x219b('0x71'),_0x402699[_0x219b('0x5b')],_0x3f95bd[_0x219b('0x62')],md5(_0x3f95bd[_0x219b('0x62')]));}return getConnection(_0x402699)[_0x219b('0x27')](function(_0x1a8ba4){_0x346852=_0x1a8ba4;return getUser(_0x402699,_0x5acccb[_0x219b('0x63')],_0x346852);})[_0x219b('0x27')](function(_0xfce571){_0x761278=_0xfce571;return getEndUser(_0x402699,_0x74cf0a,_0x3f95bd[_0x219b('0x72')],_0x3f95bd[_0x219b('0x73')],_0x346852);})[_0x219b('0x27')](function(_0x260511){_0x3fe31d=_0x260511;return getTicket(_0x402699,_0x761278,_0x3fe31d,_0x74cf0a,_0x3f95bd,_0x74cf0a[_0x219b('0x74')],_0x346852,_0x219b('0x6e'));})['then'](function(_0xcb9952){_0x3f2702=_0xcb9952;logger[_0x219b('0x21')](_0x219b('0x75'),_0x3f2702['id']);logger[_0x219b('0x21')](_0x219b('0x76'),_0x3f2702['id'],_0x5acccb['name'],_0x402699['type']);switch(_0x402699[_0x219b('0x3f')]){case _0x219b('0x77'):emit(util[_0x219b('0x47')](_0x219b('0x68'),_0x5acccb[_0x219b('0x54')]),_0x219b('0x69'),{'recordId':_0x3f2702['id']});break;case _0x219b('0x78'):emit(util[_0x219b('0x47')]('user:%s',_0x5acccb[_0x219b('0x54')]),'trigger:browser:url',{'uri':util[_0x219b('0x47')](_0x219b('0x79'),_0x346852[_0x219b('0x7a')],_0x3f2702['id'])});break;default:logger['error']('[OUTBOUND]',_0x219b('0x7b'));}})[_0x219b('0x6d')](function(_0x28e598){logger[_0x219b('0x6b')](_0x219b('0x7c'),_0x28e598);});};exports[_0x219b('0x7d')]=function(_0x3a4c32,_0x468be7,_0x2c1ee9,_0x1a2e06,_0x4ba904,_0x32146d){var _0x4afbba,_0x3434d5,_0x228ceb,_0x1a96cc;_0x32146d[_0x219b('0x5b')]=intUtil[_0x219b('0x5d')](_0x32146d[_0x219b('0x5b')]);_0x32146d['remoteUri']=intUtil[_0x219b('0x5d')](_0x32146d['remoteUri']);if(_0x4ba904&&_0x4ba904[_0x219b('0x5e')]){logger[_0x219b('0x21')]('['+_0x468be7[_0x219b('0x7e')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x468be7[_0x219b('0x61')]=util[_0x219b('0x47')](_0x219b('0x71'),_0x32146d[_0x219b('0x5b')],_0x468be7[_0x219b('0x62')],md5(_0x468be7[_0x219b('0x62')]));}else{_0x468be7[_0x219b('0x61')]='';}return getConnection(_0x32146d)['then'](function(_0x1edb26){_0x1a96cc=_0x1edb26;if(!_[_0x219b('0x23')](_0x1a2e06)){return getUser(_0x32146d,_0x1a2e06[_0x219b('0x54')],_0x1a96cc);}else{return getUser(_0x32146d,null,_0x1a96cc);}})['then'](function(_0x4eef05){_0x4afbba=_0x4eef05;return getEndUser(_0x32146d,_0x2c1ee9,_0x468be7[_0x219b('0x64')],_0x468be7[_0x219b('0x65')],_0x1a96cc);})['then'](function(_0xc3a05){_0x3434d5=_0xc3a05;return getTicket(_0x32146d,_0x4afbba,_0x3434d5,_0x2c1ee9,_0x468be7,_0x2c1ee9['Fields'],_0x1a96cc);})[_0x219b('0x27')](function(_0x5731ae){_0x228ceb=_0x5731ae;logger['info']('['+_0x468be7[_0x219b('0x7e')][_0x219b('0x7f')]()+_0x219b('0x80'),_0x228ceb['id']);logger['info']('['+_0x468be7[_0x219b('0x7e')][_0x219b('0x7f')]()+_0x219b('0x81'),_0x32146d[_0x219b('0x3f')]);})[_0x219b('0x6d')](function(_0x5ccfd8){logger[_0x219b('0x6b')]('['+_0x468be7[_0x219b('0x7e')][_0x219b('0x7f')]()+']',_0x5ccfd8);});};
\ No newline at end of file
index f7cf0d2..7ec5b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe728=['type','nameField','customField','idField','toString','variable','variableName','toLowerCase','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%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','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','md5','ioredis','./util','../../../../config/logger','redis','defaults','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20entity','active','true','userId','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','user','endUserNumber','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','length','endUserId','],\x20getEndUser\x20crm','forEach','includes','string','picklist'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe728,0x1e1));var _0x8e72=function(_0x526cef,_0x17a5e6){_0x526cef=_0x526cef-0x0;var _0x74b31c=_0xe728[_0x526cef];return _0x74b31c;};'use strict';var _=require(_0x8e72('0x0'));var Promise=require(_0x8e72('0x1'));var rp=require('request-promise');var util=require('util');var md5=require(_0x8e72('0x2'));var Redis=require(_0x8e72('0x3'));var intUtil=require(_0x8e72('0x4'));var config=require('../../../../config/environment');var logger=require(_0x8e72('0x5'))('servicenow');config[_0x8e72('0x6')]=_[_0x8e72('0x7')](config[_0x8e72('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8e72('0x8'))(new Redis(config[_0x8e72('0x6')]));function getAdminUser(_0x5d9b7d,_0x4fe27e,_0x30a92e,_0x3f07fa,_0x3a0c05,_0x16340f){return new Promise(function(_0x79c66a,_0x576c3c){var _0xeefdff={'method':_0x8e72('0x9'),'uri':_0x3f07fa+_0x8e72('0xa')+'&'+_0x3a0c05+'&'+_0x16340f,'auth':_0x4fe27e,'json':!![]};return rp(_0xeefdff)[_0x8e72('0xb')](function(_0x156703){if(_0x156703[_0x8e72('0xc')]['length']>0x0){_0x30a92e[_0x8e72('0xd')]=_0x156703['result'][0x0][_0x8e72('0xe')];}logger[_0x8e72('0xf')]('['+[_0x5d9b7d[_0x8e72('0x10')]()]+_0x8e72('0x11'),_0x30a92e);_0x79c66a(_0x30a92e);})[_0x8e72('0x12')](function(_0x58434c){logger[_0x8e72('0x13')]('['+[_0x5d9b7d[_0x8e72('0x10')]()]+']',_0x58434c['message']);_0x576c3c(_0x58434c[_0x8e72('0x14')]);});});}function getUser(_0x500cd7,_0x147458,_0x378f6b,_0x48de87,_0x101330){return function(_0x5a0014){logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x15'),_0x5a0014);return new Promise(function(_0x804acf,_0x16a822){if(intUtil[_0x8e72('0x16')](_0x5a0014['userEmail'])){var _0xe44b52={'method':_0x8e72('0x9'),'uri':_0x378f6b+'sys_user?sysparm_query=email%3D'+_0x5a0014[_0x8e72('0x17')]+'&'+_0x48de87+'&'+_0x101330,'auth':_0x147458,'json':!![]};logger[_0x8e72('0xf')]('['+[_0x500cd7[_0x8e72('0x10')]()]+'],\x20getUser\x20rp\x20obj',_0xe44b52);return rp(_0xe44b52)['then'](function(_0x1e43d0){logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x18'),_0x1e43d0);if(_0x1e43d0[_0x8e72('0xc')]['length']>0x0&&String(_0x1e43d0[_0x8e72('0xc')][0x0][_0x8e72('0x19')])===_0x8e72('0x1a')){_0x5a0014[_0x8e72('0x1b')]=_0x1e43d0['result'][0x0][_0x8e72('0xe')];}else{_0x5a0014['userId']=_0x5a0014[_0x8e72('0xd')];_0x5a0014[_0x8e72('0x17')]=_0x5a0014['adminEmail'];}logger['info']('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x1c'),_0x5a0014);_0x804acf(_0x5a0014);})[_0x8e72('0x12')](function(_0x351939){logger[_0x8e72('0x13')]('['+[_0x500cd7[_0x8e72('0x10')]()]+']',_0x351939['message']);_0x16a822(_0x351939[_0x8e72('0x14')]);});}else{logger[_0x8e72('0xf')]('['+[_0x500cd7[_0x8e72('0x10')]()]+_0x8e72('0x1d'));_0x5a0014[_0x8e72('0x1b')]=_0x5a0014[_0x8e72('0xd')];_0x5a0014['userEmail']=_0x5a0014[_0x8e72('0x1e')];_0x804acf(_0x5a0014);}});};}function createEndUser(_0x1cceb9,_0xd3dbdf,_0x12400b,_0x369183,_0xcbdc72){logger[_0x8e72('0xf')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+_0x8e72('0x1f'),_0x12400b);return new Promise(function(_0xd6857a,_0x15a87a){var _0x3e12c7={'method':_0x8e72('0x20'),'uri':_0x369183+'sys_user?'+_0xcbdc72,'body':{'user_name':_0x12400b['endUserNumber'],'roles':_0x8e72('0x21'),'first_name':_0x12400b['endUserNumber'],'active':_0x8e72('0x1a'),'date_format':'System','phone':_0x12400b[_0x8e72('0x22')]},'auth':_0xd3dbdf,'json':!![]};return rp(_0x3e12c7)[_0x8e72('0xb')](function(_0x31cbce){logger[_0x8e72('0xf')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+_0x8e72('0x23'),_0x31cbce[_0x8e72('0xc')]);_0x12400b['endUserId']=_0x31cbce[_0x8e72('0xc')][_0x8e72('0xe')];_0xd6857a(_0x12400b);})[_0x8e72('0x12')](function(_0x2ae9e4){logger[_0x8e72('0x13')]('['+[_0x1cceb9[_0x8e72('0x10')]()]+']',_0x2ae9e4[_0x8e72('0x14')]);_0x15a87a(_0x2ae9e4[_0x8e72('0x14')]);});});}function getEndUser(_0x57fd18,_0x1974c5,_0x2d1bb8,_0x55cfc3,_0xbebefa){return function(_0x366401){logger[_0x8e72('0xf')]('['+[_0x57fd18['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x366401);return new Promise(function(_0x47ea4d,_0x29fc14){var _0x5c1c71={'method':_0x8e72('0x9'),'uri':_0x2d1bb8+_0x8e72('0x24')+_0x366401[_0x8e72('0x22')]+'&'+_0x55cfc3+'&'+_0xbebefa,'auth':_0x1974c5,'json':!![]};return rp(_0x5c1c71)['then'](function(_0x5e490b){if(_0x5e490b['result'][_0x8e72('0x25')]>0x0){_0x366401[_0x8e72('0x26')]=_0x5e490b[_0x8e72('0xc')][0x0][_0x8e72('0xe')];logger[_0x8e72('0xf')]('['+[_0x57fd18['toUpperCase']()]+_0x8e72('0x27'),_0x366401);_0x47ea4d(_0x366401);}else{return createEndUser(_0x57fd18,_0x1974c5,_0x366401,_0x2d1bb8,_0x55cfc3)['then'](function(_0x155e9e){logger[_0x8e72('0xf')]('['+[_0x57fd18[_0x8e72('0x10')]()]+'],\x20createEndUser\x20crm',_0x155e9e);_0x47ea4d(_0x155e9e);});}})[_0x8e72('0x12')](function(_0x11ea21){logger['error']('['+[_0x57fd18[_0x8e72('0x10')]()]+']',_0x11ea21['message']);_0x29fc14(_0x11ea21[_0x8e72('0x14')]);});});};}function getCustomFields(_0x4e7198,_0x3b2fe7){var _0x389cd6={};if(_0x4e7198[_0x8e72('0x25')]>0x0){_[_0x8e72('0x28')](_0x4e7198,function(_0xd7e3c6){if(_[_0x8e72('0x29')]([_0x8e72('0x2a'),_0x8e72('0x2b')],_0xd7e3c6[_0x8e72('0x2c')])&&_0xd7e3c6[_0x8e72('0x2d')]&&!_0xd7e3c6[_0x8e72('0x2e')]){_0x389cd6[_0xd7e3c6[_0x8e72('0x2d')]['toLowerCase']()]=_0xd7e3c6['content']['toString']();}else if(_[_0x8e72('0x29')]([_0x8e72('0x2a'),_0x8e72('0x2b')],_0xd7e3c6[_0x8e72('0x2c')])&&_0xd7e3c6[_0x8e72('0x2f')]&&_0xd7e3c6[_0x8e72('0x2e')]){_0x389cd6[_0xd7e3c6['idField']['toLowerCase']()]=_0xd7e3c6['content'][_0x8e72('0x30')]();}else if(_0xd7e3c6['type']===_0x8e72('0x31')&&_0xd7e3c6[_0x8e72('0x32')]&&_0xd7e3c6[_0x8e72('0x2f')]&&_0xd7e3c6['customField']){_0x389cd6[_0xd7e3c6[_0x8e72('0x2f')][_0x8e72('0x33')]()]=_0x3b2fe7[_0xd7e3c6['variableName']][_0x8e72('0x30')]();}else if(_0xd7e3c6[_0x8e72('0x2c')]===_0x8e72('0x34')&&_0xd7e3c6[_0x8e72('0x35')]&&_0xd7e3c6[_0x8e72('0x35')][_0x8e72('0x36')]&&_0xd7e3c6['idField']&&_0xd7e3c6['customField']){_0x389cd6[_0xd7e3c6['idField'][_0x8e72('0x33')]()]=_0x3b2fe7[_0xd7e3c6[_0x8e72('0x35')][_0x8e72('0x36')][_0x8e72('0x33')]()][_0x8e72('0x30')]();}});}return _0x389cd6;}function getTicket(_0x4afcc6,_0x315b15,_0x4dbf21,_0x397ffc,_0x5a19c1,_0x2ec02a){return function(_0x500997){logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x37'),_0x500997);return new Promise(function(_0xcf59f8,_0x3318c0){var _0x3d5e20=_0x4afcc6['toLowerCase']()===_0x8e72('0x38')?_0x500997[_0x8e72('0x1b')]:_0x500997[_0x8e72('0x26')];var _0x5d19be={'method':_0x8e72('0x20'),'uri':_0x4dbf21+_0x8e72('0x39')+'?'+_0x2ec02a,'body':Object[_0x8e72('0x3a')]({},{'active':_0x8e72('0x1a'),'caller_id':_0x3d5e20,'assigned_to':_0x500997[_0x8e72('0x1b')],'short_description':intUtil['getString'](_0x397ffc['Subjects'],_0x5a19c1,'\x20'),'description':intUtil[_0x8e72('0x3b')](_0x397ffc[_0x8e72('0x3c')],_0x5a19c1,'\x0a')},getCustomFields(_0x397ffc[_0x8e72('0x3d')],_0x5a19c1)),'auth':_0x315b15,'json':!![]};return rp(_0x5d19be)[_0x8e72('0xb')](function(_0x3c7036){logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x3e'),_0x3c7036[_0x8e72('0xc')]);_0x500997[_0x8e72('0x3f')]=_0x3c7036[_0x8e72('0xc')]['sys_id'];_0x500997['ticketNumber']=_0x3c7036[_0x8e72('0xc')][_0x8e72('0x40')];logger[_0x8e72('0xf')]('['+[_0x4afcc6[_0x8e72('0x10')]()]+_0x8e72('0x41'),_0x500997);_0xcf59f8(_0x500997);})[_0x8e72('0x12')](function(_0x4a427b){logger['error']('['+[_0x4afcc6[_0x8e72('0x10')]()]+']',_0x4a427b['message']);_0x3318c0(_0x4a427b['message']);});});};}function createRemoteTag(_0x54e9d6,_0x5edd40,_0x1fd844,_0xbfa1f6){return new Promise(function(_0x54973e,_0x19cc1c){var _0x2256ad={'method':_0x8e72('0x20'),'uri':_0x1fd844+_0x8e72('0x42')+'?'+_0xbfa1f6,'body':{'short_description':_0x54e9d6,'global':!![],'active':!![],'name':_0x54e9d6},'auth':_0x5edd40,'json':!![]};return rp(_0x2256ad)['then'](function(_0x467156){var _0x5db189=_0x467156['result']['sys_id'];_0x54973e(_0x5db189);});});}function getRemoteTag(_0x1b0b21,_0x3a40c3,_0x54a7b9,_0x49c493,_0x19a34a){return new Promise(function(_0x1b12d7,_0x379d03){var _0x5d97ec={'method':'GET','uri':_0x54a7b9+_0x8e72('0x42')+_0x8e72('0x43')+_0x1b0b21+'&'+_0x49c493,'auth':_0x3a40c3,'json':!![]};return rp(_0x5d97ec)[_0x8e72('0xb')](function(_0x1698be){if(_0x1698be['result'][_0x8e72('0x25')]>0x0){var _0x18a87a=_0x1698be[_0x8e72('0xc')][0x0][_0x8e72('0xe')];_0x1b12d7(_0x18a87a);}else{return createRemoteTag(_0x1b0b21,_0x3a40c3,_0x54a7b9,_0x49c493)[_0x8e72('0xb')](function(_0x8c5477){_0x1b12d7(_0x8c5477);});}});});}function assignTagToIncident(_0x549fbe,_0x293da1,_0x4dcf1f,_0x476260,_0x403ff9){return new Promise(function(_0x3dd5ce,_0x1b3b06){var _0x514d33={'method':'POST','uri':_0x4dcf1f+_0x8e72('0x44')+'?'+_0x403ff9,'body':{'label':_0x549fbe,'table':'incident','id_type':_0x8e72('0x45'),'table_key':_0x476260[_0x8e72('0x3f')],'title':'Incident\x20-\x20'+_0x476260['ticketNumber'],'id_display':_0x476260['ticketNumber']},'auth':_0x293da1,'json':!![]};return rp(_0x514d33)['then'](function(_0x2b876b){_0x3dd5ce();})[_0x8e72('0x12')](function(){_0x3dd5ce();});});}function manageTags(_0x6a32f7,_0x4c10e6,_0x474b76,_0x2c78a1,_0x566399,_0x5a9af6,_0x31ce86){return new Promise(function(_0x396ab9,_0x1ad849){var _0xdb5542=[];_0x4c10e6['forEach'](function(_0x4db439){_0xdb5542[_0x8e72('0x46')](getRemoteTag(_0x4db439,_0x474b76,_0x2c78a1,_0x5a9af6,_0x31ce86));});return Promise[_0x8e72('0x47')](_0xdb5542)[_0x8e72('0xb')](function(_0x2f5c62){if(_0x2f5c62[_0x8e72('0x25')]){logger[_0x8e72('0xf')]('['+[_0x6a32f7[_0x8e72('0x10')]()]+_0x8e72('0x48'),_0x2f5c62);var _0x5dd615=[];_0x2f5c62[_0x8e72('0x28')](function(_0x2bab6f){_0x5dd615[_0x8e72('0x46')](assignTagToIncident(_0x2bab6f,_0x474b76,_0x2c78a1,_0x566399,_0x5a9af6));});return Promise[_0x8e72('0x47')](_0x5dd615)['then'](function(){_0x396ab9();})[_0x8e72('0x12')](function(){_0x396ab9();});}else{_0x396ab9();}});});}function getTags(_0x364382,_0x7ae961,_0xb79f0c,_0x5c0363,_0x17a996,_0x41040b){return function(_0x4820e8){return new Promise(function(_0x51b654,_0x18f192){var _0x51eca6=[];var _0x4556e5=_0x5c0363[_0x8e72('0x49')];if(_0x4556e5&&_0x4556e5['length']>0x0){_0x51eca6=_[_0x8e72('0x4a')](_0x4556e5,_0x8e72('0x36'));}if(_0x51eca6[_0x8e72('0x25')]>0x0){return manageTags(_0x364382,_0x51eca6,_0x7ae961,_0xb79f0c,_0x4820e8,_0x17a996,_0x41040b)[_0x8e72('0xb')](function(){_0x51b654(_0x4820e8);});}else{_0x51b654(_0x4820e8);}});};}function emit(_0x23c58d,_0x3649c7,_0x321f43){var _0x44ab95='%26sysparm_record_target%3Dincident'+_0x8e72('0x4b')+_0x8e72('0x4c')+_0x8e72('0x4d');var _0x55e4a6={'uri':_0x23c58d+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x321f43+_0x44ab95};io['to'](util[_0x8e72('0x4e')]('user:%s',_0x3649c7))['emit'](_0x8e72('0x4f'),_0x55e4a6);}exports['cs']=function(_0x45b9c4,_0x343bc3,_0x52b368,_0x42e729,_0x483ff3,_0x321785,_0x57aa96,_0x4b1d98){var _0x43b91e={};var _0xf3b391={'user':_0x321785[_0x8e72('0x50')],'pass':_0x321785['password']};var _0x7b3f12=_0x8e72('0x51');var _0x56e8a0=_0x8e72('0x52');_0x321785[_0x8e72('0x53')]=intUtil['stripTrailingSlash'](_0x321785[_0x8e72('0x53')]);_0x321785[_0x8e72('0x54')]=intUtil[_0x8e72('0x55')](_0x321785[_0x8e72('0x54')]);var _0x594968=util['format'](_0x8e72('0x56'),_0x321785[_0x8e72('0x53')]);_0x43b91e[_0x8e72('0x17')]=!_[_0x8e72('0x57')](_0x42e729)?_0x42e729[_0x8e72('0x58')]:null;_0x43b91e[_0x8e72('0x1e')]=_0x321785['email'];_0x43b91e['endUserNumber']=_0x4b1d98[_0x8e72('0x33')]()===_0x8e72('0x38')?_0x343bc3[_0x8e72('0x59')]:_0x343bc3[_0x8e72('0x5a')];_0x43b91e[_0x8e72('0x5b')]=_0x4b1d98===_0x8e72('0x5c')||_0x4b1d98===_0x8e72('0x5d')?_0x8e72('0x5c'):'outbound';var _0x4fe0a2=util[_0x8e72('0x4e')](_0x8e72('0x5e'),_0x321785[_0x8e72('0x54')],_0x343bc3['uniqueid'],md5(_0x343bc3[_0x8e72('0x5f')]));if(_0x483ff3&&_0x483ff3[_0x8e72('0x60')]){logger[_0x8e72('0xf')]('[QUEUE]',_0x8e72('0x61'));_0x343bc3[_0x8e72('0x62')]=_0x4fe0a2;}else if(_0x57aa96&&_0x57aa96['recordingFormat']&&_0x57aa96[_0x8e72('0x63')]!=='none'){logger[_0x8e72('0xf')](_0x8e72('0x64'),'Recording\x20is\x20enabled!');_0x343bc3[_0x8e72('0x62')]=_0x4fe0a2;}else{_0x343bc3[_0x8e72('0x62')]='';}return getAdminUser(_0x4b1d98,_0xf3b391,_0x43b91e,_0x594968,_0x56e8a0,_0x7b3f12)['then'](getUser(_0x4b1d98,_0xf3b391,_0x594968,_0x56e8a0,_0x7b3f12))[_0x8e72('0xb')](getEndUser(_0x4b1d98,_0xf3b391,_0x594968,_0x56e8a0,_0x7b3f12))[_0x8e72('0xb')](getTicket(_0x4b1d98,_0xf3b391,_0x594968,_0x52b368,_0x343bc3,_0x56e8a0))[_0x8e72('0xb')](function(_0x1fbe28){logger[_0x8e72('0xf')](util[_0x8e72('0x4e')](_0x8e72('0x65'),_0x1fbe28['ticketId']));logger[_0x8e72('0xf')](util[_0x8e72('0x4e')](_0x8e72('0x66'),_0x4b1d98));if(_0x4b1d98!==_0x8e72('0x5d')){logger[_0x8e72('0xf')]('['+[_0x4b1d98[_0x8e72('0x10')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x321785[_0x8e72('0x53')],_0x42e729['name'],_0x1fbe28[_0x8e72('0x3f')]);}})[_0x8e72('0x12')](function(_0x2e5d89){logger[_0x8e72('0x13')]('['+[_0x4b1d98[_0x8e72('0x10')]()]+_0x8e72('0x67'),util[_0x8e72('0x68')](_0x2e5d89,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x75f9=['toUpperCase','message','],\x20getUser\x20input\x20crm','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','length','userId','adminId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','true','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','includes','string','type','nameField','customField','toString','picklist','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','assign','Subjects','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','ticketNumber','forEach','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','user:%s','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','serverUrl','format','%s/api/now/table/','remoteUri','userEmail','isNil','email','outbound','calleridnum','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','inspect','lodash','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','sys_id','info','],\x20getAdminUser\x20crm','catch','error'];(function(_0x2ac5f8,_0x4c3a9f){var _0x3b8229=function(_0x46a3c0){while(--_0x46a3c0){_0x2ac5f8['push'](_0x2ac5f8['shift']());}};_0x3b8229(++_0x4c3a9f);}(_0x75f9,0xbf));var _0x975f=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x75f9[_0x29d915];return _0x160f86;};'use strict';var _=require(_0x975f('0x0'));var Promise=require(_0x975f('0x1'));var rp=require('request-promise');var util=require(_0x975f('0x2'));var md5=require('md5');var Redis=require(_0x975f('0x3'));var intUtil=require(_0x975f('0x4'));var config=require(_0x975f('0x5'));var logger=require(_0x975f('0x6'))(_0x975f('0x7'));config[_0x975f('0x8')]=_[_0x975f('0x9')](config[_0x975f('0x8')],{'host':_0x975f('0xa'),'port':0x18eb});var io=require(_0x975f('0xb'))(new Redis(config[_0x975f('0x8')]));function getAdminUser(_0x44ca8b,_0x416ea5,_0x2f2a5b,_0x3556d8,_0x37c161,_0x2f0646){return new Promise(function(_0x54186e,_0x27cf06){var _0x48102b={'method':_0x975f('0xc'),'uri':_0x3556d8+_0x975f('0xd')+'&'+_0x37c161+'&'+_0x2f0646,'auth':_0x416ea5,'json':!![]};return rp(_0x48102b)[_0x975f('0xe')](function(_0x1a8398){if(_0x1a8398[_0x975f('0xf')]['length']>0x0){_0x2f2a5b['adminId']=_0x1a8398[_0x975f('0xf')][0x0][_0x975f('0x10')];}logger[_0x975f('0x11')]('['+[_0x44ca8b['toUpperCase']()]+_0x975f('0x12'),_0x2f2a5b);_0x54186e(_0x2f2a5b);})[_0x975f('0x13')](function(_0x19fbd3){logger[_0x975f('0x14')]('['+[_0x44ca8b[_0x975f('0x15')]()]+']',_0x19fbd3['message']);_0x27cf06(_0x19fbd3[_0x975f('0x16')]);});});}function getUser(_0x33a0ad,_0x5c03f3,_0x45d57d,_0x10c2ad,_0x1c712e){return function(_0x181d5b){logger[_0x975f('0x11')]('['+[_0x33a0ad[_0x975f('0x15')]()]+_0x975f('0x17'),_0x181d5b);return new Promise(function(_0x123169,_0x25597e){if(intUtil['validateEmail'](_0x181d5b['userEmail'])){var _0xfff09e={'method':_0x975f('0xc'),'uri':_0x45d57d+_0x975f('0x18')+_0x181d5b['userEmail']+'&'+_0x10c2ad+'&'+_0x1c712e,'auth':_0x5c03f3,'json':!![]};logger[_0x975f('0x11')]('['+[_0x33a0ad['toUpperCase']()]+_0x975f('0x19'),_0xfff09e);return rp(_0xfff09e)['then'](function(_0x272c65){logger[_0x975f('0x11')]('['+[_0x33a0ad[_0x975f('0x15')]()]+'],\x20getUser\x20entity',_0x272c65);if(_0x272c65['result'][_0x975f('0x1a')]>0x0&&String(_0x272c65['result'][0x0]['active'])==='true'){_0x181d5b['userId']=_0x272c65['result'][0x0][_0x975f('0x10')];}else{_0x181d5b[_0x975f('0x1b')]=_0x181d5b[_0x975f('0x1c')];_0x181d5b['userEmail']=_0x181d5b[_0x975f('0x1d')];}logger[_0x975f('0x11')]('['+[_0x33a0ad[_0x975f('0x15')]()]+_0x975f('0x1e'),_0x181d5b);_0x123169(_0x181d5b);})[_0x975f('0x13')](function(_0x331555){logger[_0x975f('0x14')]('['+[_0x33a0ad[_0x975f('0x15')]()]+']',_0x331555['message']);_0x25597e(_0x331555[_0x975f('0x16')]);});}else{logger[_0x975f('0x11')]('['+[_0x33a0ad[_0x975f('0x15')]()]+_0x975f('0x1f'));_0x181d5b[_0x975f('0x1b')]=_0x181d5b[_0x975f('0x1c')];_0x181d5b['userEmail']=_0x181d5b[_0x975f('0x1d')];_0x123169(_0x181d5b);}});};}function createEndUser(_0x43d88c,_0xeef625,_0x5df2a6,_0x43d31d,_0x511d1d){logger[_0x975f('0x11')]('['+[_0x43d88c['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x5df2a6);return new Promise(function(_0x3f2fe1,_0x47fccf){var _0x1ed736={'method':_0x975f('0x20'),'uri':_0x43d31d+_0x975f('0x21')+_0x511d1d,'body':{'user_name':_0x5df2a6[_0x975f('0x22')],'roles':'user','first_name':_0x5df2a6[_0x975f('0x22')],'active':_0x975f('0x23'),'date_format':_0x975f('0x24'),'phone':_0x5df2a6[_0x975f('0x22')]},'auth':_0xeef625,'json':!![]};return rp(_0x1ed736)['then'](function(_0x1b0f80){logger[_0x975f('0x11')]('['+[_0x43d88c['toUpperCase']()]+_0x975f('0x25'),_0x1b0f80[_0x975f('0xf')]);_0x5df2a6[_0x975f('0x26')]=_0x1b0f80['result']['sys_id'];_0x3f2fe1(_0x5df2a6);})[_0x975f('0x13')](function(_0x360156){logger['error']('['+[_0x43d88c[_0x975f('0x15')]()]+']',_0x360156[_0x975f('0x16')]);_0x47fccf(_0x360156['message']);});});}function getEndUser(_0x1fa1ea,_0x2e7bd4,_0x1b7772,_0x462694,_0x561328){return function(_0x5586a6){logger['info']('['+[_0x1fa1ea[_0x975f('0x15')]()]+_0x975f('0x27'),_0x5586a6);return new Promise(function(_0x2c52ec,_0x6e00da){var _0x38b5e5={'method':'GET','uri':_0x1b7772+'sys_user?sysparm_query=phone%3D'+_0x5586a6['endUserNumber']+'&'+_0x462694+'&'+_0x561328,'auth':_0x2e7bd4,'json':!![]};return rp(_0x38b5e5)['then'](function(_0x352371){if(_0x352371['result']['length']>0x0){_0x5586a6['endUserId']=_0x352371[_0x975f('0xf')][0x0][_0x975f('0x10')];logger[_0x975f('0x11')]('['+[_0x1fa1ea[_0x975f('0x15')]()]+'],\x20getEndUser\x20crm',_0x5586a6);_0x2c52ec(_0x5586a6);}else{return createEndUser(_0x1fa1ea,_0x2e7bd4,_0x5586a6,_0x1b7772,_0x462694)['then'](function(_0x436802){logger[_0x975f('0x11')]('['+[_0x1fa1ea[_0x975f('0x15')]()]+'],\x20createEndUser\x20crm',_0x436802);_0x2c52ec(_0x436802);});}})['catch'](function(_0x54fb5c){logger[_0x975f('0x14')]('['+[_0x1fa1ea[_0x975f('0x15')]()]+']',_0x54fb5c['message']);_0x6e00da(_0x54fb5c[_0x975f('0x16')]);});});};}function getCustomFields(_0x55cc56,_0x5b2c1f){var _0x3e44ec={};if(_0x55cc56[_0x975f('0x1a')]>0x0){_['forEach'](_0x55cc56,function(_0x130732){if(_[_0x975f('0x28')]([_0x975f('0x29'),'picklist'],_0x130732[_0x975f('0x2a')])&&_0x130732[_0x975f('0x2b')]&&!_0x130732[_0x975f('0x2c')]){_0x3e44ec[_0x130732[_0x975f('0x2b')]['toLowerCase']()]=_0x130732['content'][_0x975f('0x2d')]();}else if(_[_0x975f('0x28')]([_0x975f('0x29'),_0x975f('0x2e')],_0x130732[_0x975f('0x2a')])&&_0x130732[_0x975f('0x2f')]&&_0x130732[_0x975f('0x2c')]){_0x3e44ec[_0x130732[_0x975f('0x2f')][_0x975f('0x30')]()]=_0x130732['content']['toString']();}else if(_0x130732[_0x975f('0x2a')]===_0x975f('0x31')&&_0x130732[_0x975f('0x32')]&&_0x130732[_0x975f('0x2f')]&&_0x130732[_0x975f('0x2c')]){_0x3e44ec[_0x130732['idField'][_0x975f('0x30')]()]=_0x5b2c1f[_0x130732['variableName']][_0x975f('0x2d')]();}else if(_0x130732['type']===_0x975f('0x33')&&_0x130732[_0x975f('0x34')]&&_0x130732[_0x975f('0x34')][_0x975f('0x35')]&&_0x130732[_0x975f('0x2f')]&&_0x130732[_0x975f('0x2c')]){_0x3e44ec[_0x130732['idField'][_0x975f('0x30')]()]=_0x5b2c1f[_0x130732[_0x975f('0x34')]['name'][_0x975f('0x30')]()][_0x975f('0x2d')]();}});}return _0x3e44ec;}function getTicket(_0x342dbb,_0x31e543,_0x5712f1,_0x30f7e5,_0x1dfaa8,_0x34a9fd){return function(_0x6a02fc){logger[_0x975f('0x11')]('['+[_0x342dbb[_0x975f('0x15')]()]+_0x975f('0x36'),_0x6a02fc);return new Promise(function(_0x47d792,_0x45af2f){var _0x1f3471=_0x342dbb[_0x975f('0x30')]()==='outbound'?_0x6a02fc['userId']:_0x6a02fc['endUserId'];var _0x5b69b4={'method':_0x975f('0x20'),'uri':_0x5712f1+'incident'+'?'+_0x34a9fd,'body':Object[_0x975f('0x37')]({},{'active':'true','caller_id':_0x1f3471,'assigned_to':_0x6a02fc[_0x975f('0x1b')],'short_description':intUtil['getString'](_0x30f7e5[_0x975f('0x38')],_0x1dfaa8,'\x20'),'description':intUtil[_0x975f('0x39')](_0x30f7e5[_0x975f('0x3a')],_0x1dfaa8,'\x0a')},getCustomFields(_0x30f7e5[_0x975f('0x3b')],_0x1dfaa8)),'auth':_0x31e543,'json':!![]};return rp(_0x5b69b4)[_0x975f('0xe')](function(_0x9b94fa){logger['info']('['+[_0x342dbb[_0x975f('0x15')]()]+_0x975f('0x3c'),_0x9b94fa[_0x975f('0xf')]);_0x6a02fc[_0x975f('0x3d')]=_0x9b94fa[_0x975f('0xf')][_0x975f('0x10')];_0x6a02fc['ticketNumber']=_0x9b94fa[_0x975f('0xf')][_0x975f('0x3e')];logger[_0x975f('0x11')]('['+[_0x342dbb[_0x975f('0x15')]()]+_0x975f('0x3f'),_0x6a02fc);_0x47d792(_0x6a02fc);})[_0x975f('0x13')](function(_0x37105c){logger[_0x975f('0x14')]('['+[_0x342dbb[_0x975f('0x15')]()]+']',_0x37105c['message']);_0x45af2f(_0x37105c[_0x975f('0x16')]);});});};}function createRemoteTag(_0x396b0d,_0x35c2ad,_0x4c3b18,_0x362013){return new Promise(function(_0x2e859d,_0x40e368){var _0x2aab9e={'method':_0x975f('0x20'),'uri':_0x4c3b18+'label'+'?'+_0x362013,'body':{'short_description':_0x396b0d,'global':!![],'active':!![],'name':_0x396b0d},'auth':_0x35c2ad,'json':!![]};return rp(_0x2aab9e)[_0x975f('0xe')](function(_0x2a802e){var _0x63f0af=_0x2a802e[_0x975f('0xf')][_0x975f('0x10')];_0x2e859d(_0x63f0af);});});}function getRemoteTag(_0x53f536,_0x1464b0,_0x4a83f0,_0x52f686,_0x138985){return new Promise(function(_0x42d2bc,_0x392413){var _0xeafc6a={'method':'GET','uri':_0x4a83f0+_0x975f('0x40')+_0x975f('0x41')+_0x53f536+'&'+_0x52f686,'auth':_0x1464b0,'json':!![]};return rp(_0xeafc6a)[_0x975f('0xe')](function(_0x41766d){if(_0x41766d[_0x975f('0xf')][_0x975f('0x1a')]>0x0){var _0x1476a9=_0x41766d[_0x975f('0xf')][0x0][_0x975f('0x10')];_0x42d2bc(_0x1476a9);}else{return createRemoteTag(_0x53f536,_0x1464b0,_0x4a83f0,_0x52f686)[_0x975f('0xe')](function(_0x45731b){_0x42d2bc(_0x45731b);});}});});}function assignTagToIncident(_0x2dd516,_0x38ddad,_0x5095da,_0x609aaf,_0x4d026c){return new Promise(function(_0xbeceb5,_0x3d605d){var _0x4f7528={'method':'POST','uri':_0x5095da+_0x975f('0x42')+'?'+_0x4d026c,'body':{'label':_0x2dd516,'table':'incident','id_type':'Incident','table_key':_0x609aaf[_0x975f('0x3d')],'title':_0x975f('0x43')+_0x609aaf['ticketNumber'],'id_display':_0x609aaf[_0x975f('0x44')]},'auth':_0x38ddad,'json':!![]};return rp(_0x4f7528)[_0x975f('0xe')](function(_0x3a2f08){_0xbeceb5();})['catch'](function(){_0xbeceb5();});});}function manageTags(_0x3ec27b,_0xe85103,_0x44d173,_0x4fd753,_0x3ee401,_0x4f9803,_0x260ac8){return new Promise(function(_0x15d252,_0x1fb8e7){var _0x5e8fc0=[];_0xe85103[_0x975f('0x45')](function(_0x1c0d97){_0x5e8fc0[_0x975f('0x46')](getRemoteTag(_0x1c0d97,_0x44d173,_0x4fd753,_0x4f9803,_0x260ac8));});return Promise[_0x975f('0x47')](_0x5e8fc0)[_0x975f('0xe')](function(_0x3e7e48){if(_0x3e7e48[_0x975f('0x1a')]){logger[_0x975f('0x11')]('['+[_0x3ec27b['toUpperCase']()]+_0x975f('0x48'),_0x3e7e48);var _0x59c63b=[];_0x3e7e48[_0x975f('0x45')](function(_0xf237ef){_0x59c63b[_0x975f('0x46')](assignTagToIncident(_0xf237ef,_0x44d173,_0x4fd753,_0x3ee401,_0x4f9803));});return Promise['all'](_0x59c63b)['then'](function(){_0x15d252();})['catch'](function(){_0x15d252();});}else{_0x15d252();}});});}function getTags(_0x4f705b,_0x3798d6,_0x180a84,_0x2d6ed5,_0x2bbb26,_0x493607){return function(_0x18d8aa){return new Promise(function(_0x4d5ffe,_0x3fa664){var _0x1881d1=[];var _0x179fd0=_0x2d6ed5['Tags'];if(_0x179fd0&&_0x179fd0['length']>0x0){_0x1881d1=_[_0x975f('0x49')](_0x179fd0,_0x975f('0x35'));}if(_0x1881d1[_0x975f('0x1a')]>0x0){return manageTags(_0x4f705b,_0x1881d1,_0x3798d6,_0x180a84,_0x18d8aa,_0x2bbb26,_0x493607)[_0x975f('0xe')](function(){_0x4d5ffe(_0x18d8aa);});}else{_0x4d5ffe(_0x18d8aa);}});};}function emit(_0x177d1e,_0x399c0f,_0x4c8528){var _0x2f18d9=_0x975f('0x4a')+_0x975f('0x4b')+_0x975f('0x4c')+_0x975f('0x4d');var _0x169500={'uri':_0x177d1e+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4c8528+_0x2f18d9};io['to'](util['format'](_0x975f('0x4e'),_0x399c0f))['emit'](_0x975f('0x4f'),_0x169500);}exports['cs']=function(_0xb0c123,_0xccbb79,_0xd51548,_0x2dec23,_0x5869cd,_0x11fbc9,_0x3314d8,_0x53d33c){var _0x4bf906={};var _0x3da912={'user':_0x11fbc9[_0x975f('0x50')],'pass':_0x11fbc9[_0x975f('0x51')]};var _0xcf7c95=_0x975f('0x52');var _0x33472d=_0x975f('0x53');_0x11fbc9['remoteUri']=intUtil['stripTrailingSlash'](_0x11fbc9['remoteUri']);_0x11fbc9[_0x975f('0x54')]=intUtil['stripTrailingSlash'](_0x11fbc9[_0x975f('0x54')]);var _0x4800d3=util[_0x975f('0x55')](_0x975f('0x56'),_0x11fbc9[_0x975f('0x57')]);_0x4bf906[_0x975f('0x58')]=!_[_0x975f('0x59')](_0x2dec23)?_0x2dec23['email']:null;_0x4bf906[_0x975f('0x1d')]=_0x11fbc9[_0x975f('0x5a')];_0x4bf906[_0x975f('0x22')]=_0x53d33c[_0x975f('0x30')]()===_0x975f('0x5b')?_0xccbb79['destcalleridnum']:_0xccbb79[_0x975f('0x5c')];_0x4bf906['callDirection']=_0x53d33c===_0x975f('0x5d')||_0x53d33c===_0x975f('0x5e')?_0x975f('0x5d'):'outbound';var _0x236961=util[_0x975f('0x55')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x11fbc9[_0x975f('0x54')],_0xccbb79[_0x975f('0x5f')],md5(_0xccbb79[_0x975f('0x5f')]));if(_0x5869cd&&_0x5869cd[_0x975f('0x60')]){logger[_0x975f('0x11')](_0x975f('0x61'),_0x975f('0x62'));_0xccbb79[_0x975f('0x63')]=_0x236961;}else if(_0x3314d8&&_0x3314d8[_0x975f('0x64')]&&_0x3314d8['recordingFormat']!==_0x975f('0x65')){logger['info'](_0x975f('0x66'),_0x975f('0x62'));_0xccbb79['recordingURL']=_0x236961;}else{_0xccbb79[_0x975f('0x63')]='';}return getAdminUser(_0x53d33c,_0x3da912,_0x4bf906,_0x4800d3,_0x33472d,_0xcf7c95)[_0x975f('0xe')](getUser(_0x53d33c,_0x3da912,_0x4800d3,_0x33472d,_0xcf7c95))[_0x975f('0xe')](getEndUser(_0x53d33c,_0x3da912,_0x4800d3,_0x33472d,_0xcf7c95))['then'](getTicket(_0x53d33c,_0x3da912,_0x4800d3,_0xd51548,_0xccbb79,_0x33472d))[_0x975f('0xe')](function(_0x579d9c){logger[_0x975f('0x11')](util[_0x975f('0x55')](_0x975f('0x67'),_0x579d9c[_0x975f('0x3d')]));logger[_0x975f('0x11')](util[_0x975f('0x55')](_0x975f('0x68'),_0x53d33c));if(_0x53d33c!==_0x975f('0x5e')){logger[_0x975f('0x11')]('['+[_0x53d33c[_0x975f('0x15')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x11fbc9['remoteUri'],_0x2dec23[_0x975f('0x35')],_0x579d9c[_0x975f('0x3d')]);}})[_0x975f('0x13')](function(_0x3948b7){logger[_0x975f('0x14')]('['+[_0x53d33c[_0x975f('0x15')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x975f('0x69')](_0x3948b7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 662030c..20afbbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22ef=['destcalleridnum','Outbound','user:%s','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','sugarcrm','redis','localhost','socket.io-emitter','POST','emit','name','Subjects','assigned_user_id','created_by','description','getString','Descriptions','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','forEach','push','variableName','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','length','find','name_value_list','value','Agent\x20found!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','entry_list','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','debug','[HTTP]','merge','map','type','string','nameField','customField','toLowerCase','content','idField','custom_fields','customVariable','Variable','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x22ef,0x174));var _0xf22e=function(_0x2ad3a0,_0x32bb81){_0x2ad3a0=_0x2ad3a0-0x0;var _0x424146=_0x22ef[_0x2ad3a0];return _0x424146;};'use strict';var _=require(_0xf22e('0x0'));var rp=require(_0xf22e('0x1'));var BPromise=require(_0xf22e('0x2'));var md5=require(_0xf22e('0x3'));var util=require(_0xf22e('0x4'));var Redis=require('ioredis');var intUtil=require(_0xf22e('0x5'));var config=require(_0xf22e('0x6'));var logger=require('../../../../config/logger')(_0xf22e('0x7'));config['redis']=_['defaults'](config[_0xf22e('0x8')],{'host':_0xf22e('0x9'),'port':0x18eb});var io=require(_0xf22e('0xa'))(new Redis(config['redis']));var def={'method':_0xf22e('0xb'),'json':!![]};function emit(_0x4525c1,_0x20ecd2,_0x56c6b1){io['to'](_0x4525c1)[_0xf22e('0xc')](_0x20ecd2,_0x56c6b1);}function getTicket(_0xd79d80,_0x573a18,_0x1735c5,_0x265241,_0x37bb9e,_0x2d3379,_0x22378f,_0x2dc0a4){logger['info']('Creating\x20new\x20ticket...');var _0x13e854=new Date();var _0x57c1dc=[{'name':_0xf22e('0xd'),'value':intUtil['getString'](_0x265241[_0xf22e('0xe')],_0x37bb9e,'\x20')},{'name':_0xf22e('0xf'),'value':_0x573a18['id']},{'name':_0xf22e('0x10'),'value':_0x573a18['id']},{'name':_0xf22e('0x11'),'value':intUtil[_0xf22e('0x12')](_0x265241[_0xf22e('0x13')],_0x37bb9e,'\x0a')},{'name':'date_start','value':_0x13e854['toISOString']()[_0xf22e('0x14')](0x0,0x13)[_0xf22e('0x15')]('T','\x20')},{'name':_0xf22e('0x16'),'value':'0'},{'name':_0xf22e('0x17'),'value':'15'},{'name':_0xf22e('0x18'),'value':_0x1735c5['id']},{'name':_0xf22e('0x19'),'value':_0xf22e('0x1a')},{'name':_0xf22e('0x1b'),'value':_0x1735c5[_0xf22e('0xd')]},{'name':_0xf22e('0x1c'),'value':_0x2dc0a4}];if(_0x2d3379['length']){_[_0xf22e('0x1d')](_0x2d3379,function(_0x5a8ebd){if(_0x37bb9e[_0x5a8ebd['variableName']]){_0x57c1dc[_0xf22e('0x1e')]({'name':_0x5a8ebd['idField'],'value':_0x37bb9e[_0x5a8ebd[_0xf22e('0x1f')]]});}});}return request({'form':{'method':_0xf22e('0x20'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x22378f['id'],'module_name':_0xf22e('0x23'),'name_value_list':_0x57c1dc})}});}function getAuth(_0xd6400b){return util[_0xf22e('0x24')](_0xf22e('0x25'),new Buffer(_0xd6400b['apiKey']+':X')[_0xf22e('0x26')]('base64'));}function getServerInfo(_0x2e11a9){return request({'form':{'method':_0xf22e('0x27'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x2e11a9['id']})}});}function getUser(_0x493753,_0xceb9b2,_0x263c6e){if(!_[_0xf22e('0x28')](_0xceb9b2)){logger[_0xf22e('0x29')](_0xf22e('0x2a'),_0xceb9b2);return request({'form':{'method':'get_entry_list','input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x263c6e['id'],'module_name':_0xf22e('0x2b'),'query':util[_0xf22e('0x24')](_0xf22e('0x2c'),_0xceb9b2),'order_by':'','offset':'0','select_fields':['id',_0xf22e('0xd'),_0xf22e('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf22e('0x2e')](function(_0x3d64be){if(_0x3d64be['entry_list'][_0xf22e('0x2f')]){var _0x22b9d0=_[_0xf22e('0x30')](_0x3d64be['entry_list'],function(_0x14af65){return _0x14af65[_0xf22e('0x31')]['user_name'][_0xf22e('0x32')]===_0xceb9b2;});if(_0x22b9d0){logger[_0xf22e('0x29')](_0xf22e('0x33'));return BPromise['resolve']({'id':_0x22b9d0[_0xf22e('0x31')]['id']['value'],'name':_0x22b9d0[_0xf22e('0x31')][_0xf22e('0xd')][_0xf22e('0x32')]});}}logger[_0xf22e('0x29')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xf22e('0x34')]({'id':_0x263c6e[_0xf22e('0x31')][_0xf22e('0x35')][_0xf22e('0x32')],'name':_0x263c6e['name_value_list']['user_name']['value']});});}else{logger['info'](_0xf22e('0x36'));return BPromise[_0xf22e('0x34')]({'id':_0x263c6e[_0xf22e('0x31')][_0xf22e('0x35')]['value'],'name':_0x263c6e['name_value_list'][_0xf22e('0x2d')][_0xf22e('0x32')]});}}function getEndUser(_0x2ddd7d,_0x2a3b97,_0x445149,_0x5b9f80){logger[_0xf22e('0x29')]('Searching\x20enduser\x20with\x20phone',_0x445149);return request({'form':{'method':'get_entry_list','input_type':_0xf22e('0x21'),'response_type':_0xf22e('0x21'),'rest_data':JSON[_0xf22e('0x22')]({'session':_0x5b9f80['id'],'module_name':_0xf22e('0x1a'),'query':util['format'](_0xf22e('0x37'),_0x445149),'order_by':'','offset':'0','select_fields':['id',_0xf22e('0xd'),_0xf22e('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xf22e('0x2e')](function(_0x9ac930){if(_0x9ac930[_0xf22e('0x39')][_0xf22e('0x2f')]){var _0x2c9e86=_[_0xf22e('0x30')](_0x9ac930[_0xf22e('0x39')],function(_0x585ea6){return _0x585ea6['name_value_list'][_0xf22e('0x38')][_0xf22e('0x32')]===_0x445149;});if(_0x2c9e86){logger[_0xf22e('0x29')](_0xf22e('0x3a'));return BPromise['resolve']({'id':_0x2c9e86[_0xf22e('0x31')]['id']['value'],'name':_0x2c9e86['name_value_list'][_0xf22e('0xd')][_0xf22e('0x32')],'phone':_0x2c9e86[_0xf22e('0x31')]['phone_home'][_0xf22e('0x32')]});}}else{logger[_0xf22e('0x29')](_0xf22e('0x3b'));return request({'form':{'method':_0xf22e('0x20'),'input_type':'JSON','response_type':_0xf22e('0x21'),'rest_data':JSON[_0xf22e('0x22')]({'session':_0x5b9f80['id'],'module_name':_0xf22e('0x1a'),'name_value_list':[{'name':'first_name','value':_0x2a3b97!==_0xf22e('0x3c')?_0x2a3b97:util[_0xf22e('0x24')](_0xf22e('0x3d'),_0x445149)},{'name':_0xf22e('0x38'),'value':_0x445149}]})}})[_0xf22e('0x2e')](function(_0x1c0783){logger[_0xf22e('0x29')](_0xf22e('0x3e'));return BPromise[_0xf22e('0x34')]({'id':_0x1c0783['id'],'name':_0x1c0783[_0xf22e('0x39')][_0xf22e('0x3f')][_0xf22e('0x32')],'phone':_0x1c0783[_0xf22e('0x39')][_0xf22e('0x38')][_0xf22e('0x32')]});});}});}function request(_0x4af046){logger[_0xf22e('0x40')](_0xf22e('0x41'),JSON['stringify'](_0x4af046));return rp(_[_0xf22e('0x42')](def,_0x4af046));}function getTags(_0x1da226,_0x57d819){var _0x385d5b=[];if(_0x1da226&&_0x1da226[_0xf22e('0x2f')]>0x0){_0x385d5b=_[_0xf22e('0x43')](_0x1da226,_0x57d819);}return _0x385d5b;}function getCustomFields(_0x48b23a,_0x4b2526){var _0x433f04=[];var _0x430e6c={'custom_fields':[]};if(_0x48b23a[_0xf22e('0x2f')]>0x0){_[_0xf22e('0x1d')](_0x48b23a,function(_0x25ca2b){if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x45')&&_0x25ca2b[_0xf22e('0x46')]&&!_0x25ca2b[_0xf22e('0x47')]){_0x430e6c[_0x25ca2b[_0xf22e('0x46')][_0xf22e('0x48')]()]=_0x25ca2b[_0xf22e('0x49')][_0xf22e('0x26')]();}else if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x45')&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b['customField']){_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b[_0xf22e('0x4a')],'value':_0x25ca2b['content'][_0xf22e('0x26')]()});}else if(_0x25ca2b[_0xf22e('0x44')]==='variable'&&_0x25ca2b[_0xf22e('0x1f')]&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b['customField']){_0x4b2526[_0x25ca2b[_0xf22e('0x1f')]]&&_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b['idField'],'value':_0x4b2526[_0x25ca2b[_0xf22e('0x1f')]][_0xf22e('0x26')]()});}else if(_0x25ca2b[_0xf22e('0x44')]===_0xf22e('0x4c')&&_0x25ca2b[_0xf22e('0x4d')]&&_0x25ca2b['Variable'][_0xf22e('0xd')]&&_0x25ca2b[_0xf22e('0x4a')]&&_0x25ca2b[_0xf22e('0x47')]){_0x4b2526[_0x25ca2b[_0xf22e('0x4d')][_0xf22e('0xd')][_0xf22e('0x48')]()]&&_0x430e6c[_0xf22e('0x4b')]['push']({'id':_0x25ca2b[_0xf22e('0x4a')],'value':_0x4b2526[_0x25ca2b[_0xf22e('0x4d')][_0xf22e('0xd')]['toLowerCase']()][_0xf22e('0x26')]()});}});}return _0x430e6c;}function getConnection(_0x56163a){return request({'method':_0xf22e('0xb'),'form':{'method':_0xf22e('0x4e'),'input_type':_0xf22e('0x21'),'response_type':_0xf22e('0x21'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x56163a[_0xf22e('0x4f')],'password':_0x56163a[_0xf22e('0x50')],'encryption':'PLAIN'},'application':_0xf22e('0x51')})}})[_0xf22e('0x2e')](function(_0x119c5c){var _0x5e9a1c=_0x119c5c;if(_0x5e9a1c['id']){def[_0xf22e('0x52')]=_0x5e9a1c['id'];return BPromise[_0xf22e('0x34')](_0x5e9a1c);}else{throw new Error(util[_0xf22e('0x24')](_0xf22e('0x53'),_0x56163a['id']));}});}function setRelationship(_0x415fee,_0x37fc60,_0x680416,_0x5a4910){return request({'form':{'method':_0xf22e('0x54'),'input_type':_0xf22e('0x21'),'response_type':'JSON','rest_data':JSON[_0xf22e('0x22')]({'session':_0x415fee['id'],'module_name':'Calls','module_id':_0x680416['id'],'link_field_name':_0x5a4910,'related_ids':[_0x37fc60['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xf22e('0x55')]=function(_0x255721,_0x565e86,_0x5a373c,_0x33d77c,_0x587013,_0x274225){var _0x59d1e0,_0x45e623,_0x3f1ff9,_0x173978;_0x274225['remoteUri']=intUtil['stripTrailingSlash'](_0x274225[_0xf22e('0x56')]);_0x274225['serverUrl']=intUtil[_0xf22e('0x57')](_0x274225['serverUrl']);def[_0xf22e('0x58')]=util['format']('%s/service/v4_1/rest.php',_0x274225[_0xf22e('0x56')]);if(_0x587013&&_0x587013[_0xf22e('0x59')]){logger[_0xf22e('0x29')](_0xf22e('0x5a'),_0xf22e('0x5b'));_0x565e86[_0xf22e('0x5c')]=util[_0xf22e('0x24')](_0xf22e('0x5d'),_0x274225[_0xf22e('0x5e')],_0x565e86[_0xf22e('0x5f')],md5(_0x565e86[_0xf22e('0x5f')]));}else{_0x565e86[_0xf22e('0x5c')]='';}return getConnection(_0x274225)[_0xf22e('0x2e')](function(_0x46c1ef){_0x173978=_0x46c1ef;return getUser(_0x274225,_0x33d77c[_0xf22e('0xd')],_0x173978);})[_0xf22e('0x2e')](function(_0x163f84){_0x59d1e0=_0x163f84;logger['info']('The\x20User\x20ID\x20is:',_0x59d1e0['id']);return getEndUser(_0x274225,_0x565e86['calleridname'],_0x565e86[_0xf22e('0x60')],_0x173978);})['then'](function(_0x5aa30f){_0x45e623=_0x5aa30f;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x45e623['id']);return getTicket(_0x274225,_0x59d1e0,_0x45e623,_0x5a373c,_0x565e86,_0x5a373c[_0xf22e('0x62')],_0x173978,_0xf22e('0x63'));})[_0xf22e('0x2e')](function(_0x4c5dde){_0x3f1ff9=_0x4c5dde;logger[_0xf22e('0x29')](_0xf22e('0x64'));logger['info'](_0xf22e('0x65'),_0x3f1ff9['id']);return setRelationship(_0x173978,_0x59d1e0,_0x3f1ff9,_0xf22e('0x66'));})[_0xf22e('0x2e')](function(){return setRelationship(_0x173978,_0x45e623,_0x3f1ff9,_0xf22e('0x67'));})[_0xf22e('0x2e')](function(){return getServerInfo(_0x173978);})[_0xf22e('0x2e')](function(_0x43af08){var _0x11bc09=parseInt(_0x43af08[_0xf22e('0x68')][_0xf22e('0x69')](0x0));var _0xcf6ba7=util[_0xf22e('0x24')](_0xf22e('0x6a'),_0x274225[_0xf22e('0x56')],_0x3f1ff9['id']);if(_0x11bc09>0x6){_0xcf6ba7=util[_0xf22e('0x24')](_0xf22e('0x6b'),_0x274225[_0xf22e('0x56')],_0x3f1ff9['id']);}logger[_0xf22e('0x29')](_0xf22e('0x5a'),_0xf22e('0x6c'));emit(util[_0xf22e('0x24')]('user:%s',_0x33d77c[_0xf22e('0xd')]),_0xf22e('0x6d'),{'uri':_0xcf6ba7});})[_0xf22e('0x6e')](function(_0x3125c3){logger[_0xf22e('0x6f')](_0xf22e('0x5a'),JSON[_0xf22e('0x22')](_0x3125c3));});};exports['outbound']=function(_0x356aeb,_0x4d1d74,_0x158ac6,_0x2b8f95,_0x5b15f7,_0x351b07,_0x50ba31){var _0x2825ee,_0x15b98b,_0x1500ad,_0x1a5b44;_0x351b07[_0xf22e('0x56')]=intUtil['stripTrailingSlash'](_0x351b07[_0xf22e('0x56')]);_0x351b07[_0xf22e('0x5e')]=intUtil[_0xf22e('0x57')](_0x351b07[_0xf22e('0x5e')]);def[_0xf22e('0x58')]=util[_0xf22e('0x24')]('%s/service/v4_1/rest.php',_0x351b07[_0xf22e('0x56')]);if(_0x50ba31&&_0x50ba31[_0xf22e('0x70')]&&_0x50ba31[_0xf22e('0x70')]!=='none'){logger['info'](_0xf22e('0x71'),_0xf22e('0x5b'));_0x4d1d74[_0xf22e('0x5c')]=util[_0xf22e('0x24')](_0xf22e('0x5d'),_0x351b07[_0xf22e('0x5e')],_0x4d1d74[_0xf22e('0x5f')],md5(_0x4d1d74[_0xf22e('0x5f')]));}return getConnection(_0x351b07)[_0xf22e('0x2e')](function(_0xf19ac8){_0x1a5b44=_0xf19ac8;return getUser(_0x351b07,_0x2b8f95[_0xf22e('0xd')],_0x1a5b44);})['then'](function(_0x4db484){_0x2825ee=_0x4db484;logger[_0xf22e('0x29')](_0xf22e('0x72'),_0x2825ee['id']);return getEndUser(_0x351b07,_0x4d1d74[_0xf22e('0x73')],_0x4d1d74[_0xf22e('0x74')],_0x1a5b44);})[_0xf22e('0x2e')](function(_0x3de6c2){_0x15b98b=_0x3de6c2;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x15b98b['id']);return getTicket(_0x351b07,_0x2825ee,_0x15b98b,_0x158ac6,_0x4d1d74,_0x158ac6['Fields'],_0x1a5b44,_0xf22e('0x75'));})[_0xf22e('0x2e')](function(_0x54ea71){_0x1500ad=_0x54ea71;logger[_0xf22e('0x29')](_0xf22e('0x64'));logger['info'](_0xf22e('0x65'),_0x1500ad['id']);return setRelationship(_0x1a5b44,_0x2825ee,_0x1500ad,_0xf22e('0x66'));})['then'](function(){return setRelationship(_0x1a5b44,_0x15b98b,_0x1500ad,'contacts');})[_0xf22e('0x2e')](function(){return getServerInfo(_0x1a5b44);})['then'](function(_0x2a0227){var _0x80e0a7=parseInt(_0x2a0227['version'][_0xf22e('0x69')](0x0));var _0xbb4698=util[_0xf22e('0x24')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x351b07[_0xf22e('0x56')],_0x1500ad['id']);if(_0x80e0a7>0x6){_0xbb4698=util[_0xf22e('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x351b07[_0xf22e('0x56')],_0x1500ad['id']);}logger[_0xf22e('0x29')]('[OUTBOUND]',_0xf22e('0x6c'));emit(util[_0xf22e('0x24')](_0xf22e('0x76'),_0x2b8f95[_0xf22e('0xd')]),_0xf22e('0x6d'),{'uri':_0xbb4698});})[_0xf22e('0x6e')](function(_0x376a1e){logger[_0xf22e('0x6f')]('[OUTBOUND]',JSON[_0xf22e('0x22')](_0x376a1e));});};exports['unmanaged']=function(_0x436325,_0x4e30d8,_0x296fb8,_0x1f7061,_0x13ca82,_0x319209){var _0x3c2cb6,_0x2fd289,_0x11184f,_0x18920f;_0x319209[_0xf22e('0x56')]=intUtil[_0xf22e('0x57')](_0x319209[_0xf22e('0x56')]);_0x319209[_0xf22e('0x5e')]=intUtil[_0xf22e('0x57')](_0x319209[_0xf22e('0x5e')]);def[_0xf22e('0x58')]=util[_0xf22e('0x24')]('%s/service/v4_1/rest.php',_0x319209['remoteUri']);if(_0x13ca82&&_0x13ca82[_0xf22e('0x59')]){logger['info']('['+_0x4e30d8[_0xf22e('0x77')][_0xf22e('0x78')]()+']','Recording\x20is\x20enabled!');_0x4e30d8[_0xf22e('0x5c')]=util['format'](_0xf22e('0x5d'),_0x319209[_0xf22e('0x5e')],_0x4e30d8[_0xf22e('0x5f')],md5(_0x4e30d8[_0xf22e('0x5f')]));}else{_0x4e30d8['recordingURL']='';}return getConnection(_0x319209)[_0xf22e('0x2e')](function(_0x30901b){_0x18920f=_0x30901b;if(!_['isNil'](_0x1f7061)){return getUser(_0x319209,_0x1f7061[_0xf22e('0xd')],_0x18920f);}else{return getUser(_0x319209,null,_0x18920f);}})[_0xf22e('0x2e')](function(_0xc5bc0a){_0x3c2cb6=_0xc5bc0a;logger[_0xf22e('0x29')](_0xf22e('0x72'),_0x3c2cb6['id']);return getEndUser(_0x319209,_0x4e30d8[_0xf22e('0x79')],_0x4e30d8[_0xf22e('0x60')],_0x18920f);})['then'](function(_0x2bd913){_0x2fd289=_0x2bd913;logger[_0xf22e('0x29')](_0xf22e('0x61'),_0x2fd289['id']);return getTicket(_0x319209,_0x3c2cb6,_0x2fd289,_0x296fb8,_0x4e30d8,_0x296fb8[_0xf22e('0x62')],_0x18920f,_0xf22e('0x63'));})[_0xf22e('0x2e')](function(_0x5b8995){_0x11184f=_0x5b8995;logger['info'](_0xf22e('0x64'));logger[_0xf22e('0x29')](_0xf22e('0x65'),_0x11184f['id']);return setRelationship(_0x18920f,_0x3c2cb6,_0x11184f,_0xf22e('0x66'));})[_0xf22e('0x2e')](function(){return setRelationship(_0x18920f,_0x2fd289,_0x11184f,_0xf22e('0x67'));})['then'](function(){return getServerInfo(_0x18920f);})[_0xf22e('0x6e')](function(_0x8b0891){logger['error']('['+_0x4e30d8[_0xf22e('0x77')][_0xf22e('0x78')]()+']',JSON['stringify'](_0x8b0891));});};
\ No newline at end of file
+var _0x6f5c=['recordingFormat','none','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[OUTBOUND]','user:%s','catch','monitor_format','lastevent','Fields','toUpperCase','lodash','bluebird','md5','util','ioredis','./util','../../../../config/logger','sugarcrm','defaults','redis','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','getString','Subjects','description','Descriptions','date_start','toISOString','slice','duration_minutes','parent_id','parent_type','parent_name','name','direction','forEach','variableName','push','idField','set_entry','JSON','Calls','format','base64','stringify','isNil','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','debug','[HTTP]','merge','string','nameField','toLowerCase','content','type','custom_fields','variable','customField','toString','Variable','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','outbound'];(function(_0x20f423,_0x4b1642){var _0x570479=function(_0x247467){while(--_0x247467){_0x20f423['push'](_0x20f423['shift']());}};_0x570479(++_0x4b1642);}(_0x6f5c,0x1e7));var _0xc6f5=function(_0x40e600,_0x4edec8){_0x40e600=_0x40e600-0x0;var _0x15e7bc=_0x6f5c[_0x40e600];return _0x15e7bc;};'use strict';var _=require(_0xc6f5('0x0'));var rp=require('request-promise');var BPromise=require(_0xc6f5('0x1'));var md5=require(_0xc6f5('0x2'));var util=require(_0xc6f5('0x3'));var Redis=require(_0xc6f5('0x4'));var intUtil=require(_0xc6f5('0x5'));var config=require('../../../../config/environment');var logger=require(_0xc6f5('0x6'))(_0xc6f5('0x7'));config['redis']=_[_0xc6f5('0x8')](config[_0xc6f5('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xc6f5('0xa'))(new Redis(config[_0xc6f5('0x9')]));var def={'method':_0xc6f5('0xb'),'json':!![]};function emit(_0x2a3771,_0x207d15,_0xda7aba){io['to'](_0x2a3771)[_0xc6f5('0xc')](_0x207d15,_0xda7aba);}function getTicket(_0x3cb81a,_0x55cdfa,_0x31a4a0,_0x409f91,_0x4c35e9,_0x59e0ba,_0x2e570a,_0x2f9d4c){logger[_0xc6f5('0xd')](_0xc6f5('0xe'));var _0x3a262b=new Date();var _0x471d0a=[{'name':'name','value':intUtil[_0xc6f5('0xf')](_0x409f91[_0xc6f5('0x10')],_0x4c35e9,'\x20')},{'name':'assigned_user_id','value':_0x55cdfa['id']},{'name':'created_by','value':_0x55cdfa['id']},{'name':_0xc6f5('0x11'),'value':intUtil[_0xc6f5('0xf')](_0x409f91[_0xc6f5('0x12')],_0x4c35e9,'\x0a')},{'name':_0xc6f5('0x13'),'value':_0x3a262b[_0xc6f5('0x14')]()[_0xc6f5('0x15')](0x0,0x13)['replace']('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0xc6f5('0x16'),'value':'15'},{'name':_0xc6f5('0x17'),'value':_0x31a4a0['id']},{'name':_0xc6f5('0x18'),'value':'Contacts'},{'name':_0xc6f5('0x19'),'value':_0x31a4a0[_0xc6f5('0x1a')]},{'name':_0xc6f5('0x1b'),'value':_0x2f9d4c}];if(_0x59e0ba['length']){_[_0xc6f5('0x1c')](_0x59e0ba,function(_0x336ceb){if(_0x4c35e9[_0x336ceb[_0xc6f5('0x1d')]]){_0x471d0a[_0xc6f5('0x1e')]({'name':_0x336ceb[_0xc6f5('0x1f')],'value':_0x4c35e9[_0x336ceb[_0xc6f5('0x1d')]]});}});}return request({'form':{'method':_0xc6f5('0x20'),'input_type':'JSON','response_type':_0xc6f5('0x21'),'rest_data':JSON['stringify']({'session':_0x2e570a['id'],'module_name':_0xc6f5('0x22'),'name_value_list':_0x471d0a})}});}function getAuth(_0x20b804){return util[_0xc6f5('0x23')]('Basic\x20%s',new Buffer(_0x20b804['apiKey']+':X')['toString'](_0xc6f5('0x24')));}function getServerInfo(_0x131b87){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':_0xc6f5('0x21'),'rest_data':JSON[_0xc6f5('0x25')]({'session':_0x131b87['id']})}});}function getUser(_0x33e6e9,_0x4265e2,_0x2ba06d){if(!_[_0xc6f5('0x26')](_0x4265e2)){logger[_0xc6f5('0xd')]('Getting\x20agent\x20with\x20name',_0x4265e2);return request({'form':{'method':_0xc6f5('0x27'),'input_type':_0xc6f5('0x21'),'response_type':_0xc6f5('0x21'),'rest_data':JSON[_0xc6f5('0x25')]({'session':_0x2ba06d['id'],'module_name':_0xc6f5('0x28'),'query':util[_0xc6f5('0x23')](_0xc6f5('0x29'),_0x4265e2),'order_by':'','offset':'0','select_fields':['id',_0xc6f5('0x1a'),_0xc6f5('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xc6f5('0x2b')](function(_0x3cde17){if(_0x3cde17[_0xc6f5('0x2c')]['length']){var _0x4c2abf=_['find'](_0x3cde17[_0xc6f5('0x2c')],function(_0x40a245){return _0x40a245['name_value_list']['user_name'][_0xc6f5('0x2d')]===_0x4265e2;});if(_0x4c2abf){logger[_0xc6f5('0xd')](_0xc6f5('0x2e'));return BPromise[_0xc6f5('0x2f')]({'id':_0x4c2abf[_0xc6f5('0x30')]['id'][_0xc6f5('0x2d')],'name':_0x4c2abf[_0xc6f5('0x30')][_0xc6f5('0x1a')]['value']});}}logger[_0xc6f5('0xd')](_0xc6f5('0x31'));return BPromise[_0xc6f5('0x2f')]({'id':_0x2ba06d['name_value_list'][_0xc6f5('0x32')]['value'],'name':_0x2ba06d[_0xc6f5('0x30')][_0xc6f5('0x2a')][_0xc6f5('0x2d')]});});}else{logger[_0xc6f5('0xd')](_0xc6f5('0x33'));return BPromise[_0xc6f5('0x2f')]({'id':_0x2ba06d[_0xc6f5('0x30')][_0xc6f5('0x32')][_0xc6f5('0x2d')],'name':_0x2ba06d[_0xc6f5('0x30')][_0xc6f5('0x2a')]['value']});}}function getEndUser(_0x32cb27,_0x550c3b,_0x5eca50,_0xdb9153){logger[_0xc6f5('0xd')](_0xc6f5('0x34'),_0x5eca50);return request({'form':{'method':_0xc6f5('0x27'),'input_type':_0xc6f5('0x21'),'response_type':_0xc6f5('0x21'),'rest_data':JSON[_0xc6f5('0x25')]({'session':_0xdb9153['id'],'module_name':_0xc6f5('0x35'),'query':util[_0xc6f5('0x23')](_0xc6f5('0x36'),_0x5eca50),'order_by':'','offset':'0','select_fields':['id',_0xc6f5('0x1a'),_0xc6f5('0x37')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xc6f5('0x2b')](function(_0x3dd71d){if(_0x3dd71d[_0xc6f5('0x2c')][_0xc6f5('0x38')]){var _0x17054e=_['find'](_0x3dd71d['entry_list'],function(_0x49e2e8){return _0x49e2e8['name_value_list'][_0xc6f5('0x37')]['value']===_0x5eca50;});if(_0x17054e){logger[_0xc6f5('0xd')](_0xc6f5('0x39'));return BPromise[_0xc6f5('0x2f')]({'id':_0x17054e[_0xc6f5('0x30')]['id'][_0xc6f5('0x2d')],'name':_0x17054e[_0xc6f5('0x30')][_0xc6f5('0x1a')][_0xc6f5('0x2d')],'phone':_0x17054e[_0xc6f5('0x30')]['phone_home'][_0xc6f5('0x2d')]});}}else{logger[_0xc6f5('0xd')](_0xc6f5('0x3a'));return request({'form':{'method':_0xc6f5('0x20'),'input_type':_0xc6f5('0x21'),'response_type':_0xc6f5('0x21'),'rest_data':JSON['stringify']({'session':_0xdb9153['id'],'module_name':_0xc6f5('0x35'),'name_value_list':[{'name':_0xc6f5('0x3b'),'value':_0x550c3b!==_0xc6f5('0x3c')?_0x550c3b:util['format'](_0xc6f5('0x3d'),_0x5eca50)},{'name':_0xc6f5('0x37'),'value':_0x5eca50}]})}})['then'](function(_0x83ff51){logger[_0xc6f5('0xd')]('Enduser\x20created.');return BPromise['resolve']({'id':_0x83ff51['id'],'name':_0x83ff51['entry_list']['first_name'][_0xc6f5('0x2d')],'phone':_0x83ff51[_0xc6f5('0x2c')][_0xc6f5('0x37')][_0xc6f5('0x2d')]});});}});}function request(_0x5338ab){logger[_0xc6f5('0x3e')](_0xc6f5('0x3f'),JSON[_0xc6f5('0x25')](_0x5338ab));return rp(_[_0xc6f5('0x40')](def,_0x5338ab));}function getTags(_0x3bcb98,_0x36f2cf){var _0x1b50e8=[];if(_0x3bcb98&&_0x3bcb98[_0xc6f5('0x38')]>0x0){_0x1b50e8=_['map'](_0x3bcb98,_0x36f2cf);}return _0x1b50e8;}function getCustomFields(_0x5116d6,_0x5c083e){var _0x3568a6=[];var _0xc8c5f={'custom_fields':[]};if(_0x5116d6['length']>0x0){_[_0xc6f5('0x1c')](_0x5116d6,function(_0x510e12){if(_0x510e12['type']===_0xc6f5('0x41')&&_0x510e12[_0xc6f5('0x42')]&&!_0x510e12['customField']){_0xc8c5f[_0x510e12[_0xc6f5('0x42')][_0xc6f5('0x43')]()]=_0x510e12[_0xc6f5('0x44')]['toString']();}else if(_0x510e12[_0xc6f5('0x45')]===_0xc6f5('0x41')&&_0x510e12[_0xc6f5('0x1f')]&&_0x510e12['customField']){_0xc8c5f[_0xc6f5('0x46')]['push']({'id':_0x510e12[_0xc6f5('0x1f')],'value':_0x510e12[_0xc6f5('0x44')]['toString']()});}else if(_0x510e12[_0xc6f5('0x45')]===_0xc6f5('0x47')&&_0x510e12['variableName']&&_0x510e12[_0xc6f5('0x1f')]&&_0x510e12[_0xc6f5('0x48')]){_0x5c083e[_0x510e12[_0xc6f5('0x1d')]]&&_0xc8c5f[_0xc6f5('0x46')][_0xc6f5('0x1e')]({'id':_0x510e12[_0xc6f5('0x1f')],'value':_0x5c083e[_0x510e12[_0xc6f5('0x1d')]][_0xc6f5('0x49')]()});}else if(_0x510e12[_0xc6f5('0x45')]==='customVariable'&&_0x510e12[_0xc6f5('0x4a')]&&_0x510e12['Variable'][_0xc6f5('0x1a')]&&_0x510e12[_0xc6f5('0x1f')]&&_0x510e12['customField']){_0x5c083e[_0x510e12[_0xc6f5('0x4a')]['name']['toLowerCase']()]&&_0xc8c5f[_0xc6f5('0x46')][_0xc6f5('0x1e')]({'id':_0x510e12['idField'],'value':_0x5c083e[_0x510e12[_0xc6f5('0x4a')][_0xc6f5('0x1a')][_0xc6f5('0x43')]()]['toString']()});}});}return _0xc8c5f;}function getConnection(_0x4a77df){return request({'method':_0xc6f5('0xb'),'form':{'method':'login','input_type':_0xc6f5('0x21'),'response_type':_0xc6f5('0x21'),'rest_data':JSON[_0xc6f5('0x25')]({'user_auth':{'user_name':_0x4a77df['username'],'password':_0x4a77df[_0xc6f5('0x4b')],'encryption':_0xc6f5('0x4c')},'application':_0xc6f5('0x4d')})}})['then'](function(_0x50db0d){var _0x1d98d8=_0x50db0d;if(_0x1d98d8['id']){def[_0xc6f5('0x4e')]=_0x1d98d8['id'];return BPromise[_0xc6f5('0x2f')](_0x1d98d8);}else{throw new Error(util[_0xc6f5('0x23')](_0xc6f5('0x4f'),_0x4a77df['id']));}});}function setRelationship(_0x488262,_0x443f87,_0x24263e,_0xd6968a){return request({'form':{'method':'set_relationship','input_type':_0xc6f5('0x21'),'response_type':'JSON','rest_data':JSON[_0xc6f5('0x25')]({'session':_0x488262['id'],'module_name':'Calls','module_id':_0x24263e['id'],'link_field_name':_0xd6968a,'related_ids':[_0x443f87['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xc6f5('0x50')]=function(_0x4e4510,_0x4c14ec,_0x11599b,_0x2ba9ea,_0x58dcf2,_0x5362cc){var _0x3feb58,_0x789d71,_0x4944d8,_0x1d7773;_0x5362cc[_0xc6f5('0x51')]=intUtil[_0xc6f5('0x52')](_0x5362cc[_0xc6f5('0x51')]);_0x5362cc[_0xc6f5('0x53')]=intUtil['stripTrailingSlash'](_0x5362cc[_0xc6f5('0x53')]);def[_0xc6f5('0x54')]=util[_0xc6f5('0x23')](_0xc6f5('0x55'),_0x5362cc['remoteUri']);if(_0x58dcf2&&_0x58dcf2['monitor_format']){logger[_0xc6f5('0xd')](_0xc6f5('0x56'),_0xc6f5('0x57'));_0x4c14ec[_0xc6f5('0x58')]=util[_0xc6f5('0x23')](_0xc6f5('0x59'),_0x5362cc[_0xc6f5('0x53')],_0x4c14ec[_0xc6f5('0x5a')],md5(_0x4c14ec[_0xc6f5('0x5a')]));}else{_0x4c14ec[_0xc6f5('0x58')]='';}return getConnection(_0x5362cc)[_0xc6f5('0x2b')](function(_0x570edc){_0x1d7773=_0x570edc;return getUser(_0x5362cc,_0x2ba9ea['name'],_0x1d7773);})['then'](function(_0x3028bd){_0x3feb58=_0x3028bd;logger[_0xc6f5('0xd')]('The\x20User\x20ID\x20is:',_0x3feb58['id']);return getEndUser(_0x5362cc,_0x4c14ec[_0xc6f5('0x5b')],_0x4c14ec[_0xc6f5('0x5c')],_0x1d7773);})[_0xc6f5('0x2b')](function(_0x2a9356){_0x789d71=_0x2a9356;logger[_0xc6f5('0xd')](_0xc6f5('0x5d'),_0x789d71['id']);return getTicket(_0x5362cc,_0x3feb58,_0x789d71,_0x11599b,_0x4c14ec,_0x11599b['Fields'],_0x1d7773,_0xc6f5('0x5e'));})[_0xc6f5('0x2b')](function(_0x3533a7){_0x4944d8=_0x3533a7;logger[_0xc6f5('0xd')](_0xc6f5('0x5f'));logger[_0xc6f5('0xd')](_0xc6f5('0x60'),_0x4944d8['id']);return setRelationship(_0x1d7773,_0x3feb58,_0x4944d8,_0xc6f5('0x61'));})[_0xc6f5('0x2b')](function(){return setRelationship(_0x1d7773,_0x789d71,_0x4944d8,_0xc6f5('0x62'));})[_0xc6f5('0x2b')](function(){return getServerInfo(_0x1d7773);})[_0xc6f5('0x2b')](function(_0x14ce45){var _0x2314df=parseInt(_0x14ce45['version']['charAt'](0x0));var _0x1237ff=util[_0xc6f5('0x23')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x5362cc['remoteUri'],_0x4944d8['id']);if(_0x2314df>0x6){_0x1237ff=util[_0xc6f5('0x23')](_0xc6f5('0x63'),_0x5362cc[_0xc6f5('0x51')],_0x4944d8['id']);}logger[_0xc6f5('0xd')](_0xc6f5('0x56'),_0xc6f5('0x64'));emit(util['format']('user:%s',_0x2ba9ea['name']),'trigger:browser:url',{'uri':_0x1237ff});})['catch'](function(_0x585563){logger[_0xc6f5('0x65')](_0xc6f5('0x56'),JSON[_0xc6f5('0x25')](_0x585563));});};exports[_0xc6f5('0x66')]=function(_0x5614a1,_0x8f0244,_0xc3b271,_0x1b9b5f,_0x1c8711,_0x162522,_0x3edd93){var _0x2543ae,_0x1da6d1,_0x43e6cc,_0x2c4184;_0x162522['remoteUri']=intUtil['stripTrailingSlash'](_0x162522['remoteUri']);_0x162522[_0xc6f5('0x53')]=intUtil[_0xc6f5('0x52')](_0x162522[_0xc6f5('0x53')]);def['uri']=util[_0xc6f5('0x23')]('%s/service/v4_1/rest.php',_0x162522[_0xc6f5('0x51')]);if(_0x3edd93&&_0x3edd93[_0xc6f5('0x67')]&&_0x3edd93['recordingFormat']!==_0xc6f5('0x68')){logger[_0xc6f5('0xd')]('[OUTBOUND]',_0xc6f5('0x57'));_0x8f0244[_0xc6f5('0x58')]=util[_0xc6f5('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x162522[_0xc6f5('0x53')],_0x8f0244[_0xc6f5('0x5a')],md5(_0x8f0244['uniqueid']));}return getConnection(_0x162522)['then'](function(_0x4710dd){_0x2c4184=_0x4710dd;return getUser(_0x162522,_0x1b9b5f[_0xc6f5('0x1a')],_0x2c4184);})[_0xc6f5('0x2b')](function(_0x33f8bd){_0x2543ae=_0x33f8bd;logger[_0xc6f5('0xd')](_0xc6f5('0x69'),_0x2543ae['id']);return getEndUser(_0x162522,_0x8f0244[_0xc6f5('0x6a')],_0x8f0244[_0xc6f5('0x6b')],_0x2c4184);})['then'](function(_0x72d519){_0x1da6d1=_0x72d519;logger[_0xc6f5('0xd')](_0xc6f5('0x5d'),_0x1da6d1['id']);return getTicket(_0x162522,_0x2543ae,_0x1da6d1,_0xc3b271,_0x8f0244,_0xc3b271['Fields'],_0x2c4184,_0xc6f5('0x6c'));})[_0xc6f5('0x2b')](function(_0x592cb9){_0x43e6cc=_0x592cb9;logger[_0xc6f5('0xd')](_0xc6f5('0x5f'));logger[_0xc6f5('0xd')](_0xc6f5('0x60'),_0x43e6cc['id']);return setRelationship(_0x2c4184,_0x2543ae,_0x43e6cc,_0xc6f5('0x61'));})[_0xc6f5('0x2b')](function(){return setRelationship(_0x2c4184,_0x1da6d1,_0x43e6cc,_0xc6f5('0x62'));})['then'](function(){return getServerInfo(_0x2c4184);})['then'](function(_0x16e10d){var _0x1020fd=parseInt(_0x16e10d['version'][_0xc6f5('0x6d')](0x0));var _0x16629c=util[_0xc6f5('0x23')](_0xc6f5('0x6e'),_0x162522['remoteUri'],_0x43e6cc['id']);if(_0x1020fd>0x6){_0x16629c=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x162522[_0xc6f5('0x51')],_0x43e6cc['id']);}logger[_0xc6f5('0xd')](_0xc6f5('0x6f'),_0xc6f5('0x64'));emit(util[_0xc6f5('0x23')](_0xc6f5('0x70'),_0x1b9b5f[_0xc6f5('0x1a')]),'trigger:browser:url',{'uri':_0x16629c});})[_0xc6f5('0x71')](function(_0x3a9550){logger[_0xc6f5('0x65')](_0xc6f5('0x6f'),JSON[_0xc6f5('0x25')](_0x3a9550));});};exports['unmanaged']=function(_0x3df1e0,_0x34c3e8,_0x30e112,_0x3843eb,_0x1e1697,_0x37807d){var _0x18c117,_0x525ecb,_0x299365,_0x5c9135;_0x37807d[_0xc6f5('0x51')]=intUtil['stripTrailingSlash'](_0x37807d[_0xc6f5('0x51')]);_0x37807d[_0xc6f5('0x53')]=intUtil[_0xc6f5('0x52')](_0x37807d['serverUrl']);def[_0xc6f5('0x54')]=util[_0xc6f5('0x23')]('%s/service/v4_1/rest.php',_0x37807d[_0xc6f5('0x51')]);if(_0x1e1697&&_0x1e1697[_0xc6f5('0x72')]){logger[_0xc6f5('0xd')]('['+_0x34c3e8[_0xc6f5('0x73')]['toUpperCase']()+']',_0xc6f5('0x57'));_0x34c3e8[_0xc6f5('0x58')]=util[_0xc6f5('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x37807d[_0xc6f5('0x53')],_0x34c3e8[_0xc6f5('0x5a')],md5(_0x34c3e8[_0xc6f5('0x5a')]));}else{_0x34c3e8[_0xc6f5('0x58')]='';}return getConnection(_0x37807d)[_0xc6f5('0x2b')](function(_0x41f4d9){_0x5c9135=_0x41f4d9;if(!_[_0xc6f5('0x26')](_0x3843eb)){return getUser(_0x37807d,_0x3843eb[_0xc6f5('0x1a')],_0x5c9135);}else{return getUser(_0x37807d,null,_0x5c9135);}})[_0xc6f5('0x2b')](function(_0x5ce70a){_0x18c117=_0x5ce70a;logger[_0xc6f5('0xd')](_0xc6f5('0x69'),_0x18c117['id']);return getEndUser(_0x37807d,_0x34c3e8[_0xc6f5('0x5b')],_0x34c3e8[_0xc6f5('0x5c')],_0x5c9135);})['then'](function(_0x3789c4){_0x525ecb=_0x3789c4;logger[_0xc6f5('0xd')](_0xc6f5('0x5d'),_0x525ecb['id']);return getTicket(_0x37807d,_0x18c117,_0x525ecb,_0x30e112,_0x34c3e8,_0x30e112[_0xc6f5('0x74')],_0x5c9135,_0xc6f5('0x5e'));})[_0xc6f5('0x2b')](function(_0x241b23){_0x299365=_0x241b23;logger[_0xc6f5('0xd')]('Ticket\x20created!');logger[_0xc6f5('0xd')]('The\x20Ticket\x20ID\x20is:',_0x299365['id']);return setRelationship(_0x5c9135,_0x18c117,_0x299365,_0xc6f5('0x61'));})[_0xc6f5('0x2b')](function(){return setRelationship(_0x5c9135,_0x525ecb,_0x299365,'contacts');})[_0xc6f5('0x2b')](function(){return getServerInfo(_0x5c9135);})[_0xc6f5('0x71')](function(_0x2a6639){logger[_0xc6f5('0x65')]('['+_0x34c3e8[_0xc6f5('0x73')][_0xc6f5('0x75')]()+']',JSON[_0xc6f5('0x25')](_0x2a6639));});};
\ No newline at end of file
index bafa20b..aa6d3a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x237f=['join','substring','lastIndexOf','validateEmail','isNil','test','lodash','getString','length','string','push','content','variable','variableName','toString','type','Variable','name','keyType','key','format','%s:\x20%s','keyContent','toLowerCase'];(function(_0x1256f6,_0x35343f){var _0x4d22d6=function(_0x4a8096){while(--_0x4a8096){_0x1256f6['push'](_0x1256f6['shift']());}};_0x4d22d6(++_0x35343f);}(_0x237f,0x126));var _0xf237=function(_0x2d6d88,_0x2ea070){_0x2d6d88=_0x2d6d88-0x0;var _0x1991b0=_0x237f[_0x2d6d88];return _0x1991b0;};'use strict';var _=require(_0xf237('0x0'));var util=require('util');exports[_0xf237('0x1')]=function(_0x5e07ed,_0xab2695,_0x417f08){var _0x5eaaf8=[];if(_0x5e07ed[_0xf237('0x2')]>0x0){var _0x1ae0ff=_['sortBy'](_0x5e07ed,['id']);for(var _0x52f92b=0x0;_0x52f92b<_0x1ae0ff[_0xf237('0x2')];_0x52f92b++){var _0x26b2a6=_0x1ae0ff[_0x52f92b];if(_0x26b2a6['type']===_0xf237('0x3')){_0x5eaaf8[_0xf237('0x4')](_0x26b2a6[_0xf237('0x5')]);}else if(_0x26b2a6['type']===_0xf237('0x6')&&_0x26b2a6[_0xf237('0x7')]){_0xab2695[_0x26b2a6[_0xf237('0x7')]]&&_0x5eaaf8['push'](_0xab2695[_0x26b2a6[_0xf237('0x7')]][_0xf237('0x8')]());}else if(_0x26b2a6[_0xf237('0x9')]==='customVariable'&&_0x26b2a6[_0xf237('0xa')]&&_0x26b2a6[_0xf237('0xa')]['name']){_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]['toLowerCase']()]&&_0x5eaaf8['push'](_0xab2695[_0x26b2a6['Variable'][_0xf237('0xb')]['toLowerCase']()]['toString']());}else if(_0x26b2a6['type']==='keyValue'){if(_0x26b2a6[_0xf237('0xc')]===_0xf237('0x3')&&_0x26b2a6[_0xf237('0xd')]){_0x5eaaf8[_0xf237('0x4')](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0x26b2a6[_0xf237('0x10')]));}else if(_0x26b2a6[_0xf237('0xc')]===_0xf237('0x6')&&_0x26b2a6[_0xf237('0x7')]&&_0x26b2a6[_0xf237('0xd')]){_0xab2695[_0x26b2a6[_0xf237('0x7')]]&&_0x5eaaf8['push'](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0xab2695[_0x26b2a6[_0xf237('0x7')]]));}else if(_0x26b2a6['keyType']==='customVariable'&&_0x26b2a6[_0xf237('0xa')]&&_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]&&_0x26b2a6[_0xf237('0xd')]){_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')]['toLowerCase']()]&&_0x5eaaf8[_0xf237('0x4')](util[_0xf237('0xe')](_0xf237('0xf'),_0x26b2a6['key'],_0xab2695[_0x26b2a6[_0xf237('0xa')][_0xf237('0xb')][_0xf237('0x11')]()]));}}}}return _0x5eaaf8[_0xf237('0x12')](_0x417f08);};exports['stripTrailingSlash']=function(_0x2e6441){var _0x34179e=_0x2e6441['slice'](-0x1);if(_0x34179e==='/'){_0x2e6441=_0x2e6441[_0xf237('0x13')](0x0,_0x2e6441[_0xf237('0x14')](_0x34179e));}return _0x2e6441;};exports[_0xf237('0x15')]=function(_0x4fdaf3){if(!_[_0xf237('0x16')](_0x4fdaf3)&&_0x4fdaf3!==''){var _0x1c7333=/^(([^<>()\[\]\\.,;:\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 _0x1c7333[_0xf237('0x17')](String(_0x4fdaf3)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xd47b=['validateEmail','isNil','test','lodash','sortBy','type','push','content','variable','variableName','toString','Variable','name','toLowerCase','keyValue','keyType','string','format','%s:\x20%s','key','keyContent','customVariable','stripTrailingSlash','slice','substring','lastIndexOf'];(function(_0x45c5ed,_0x3935f0){var _0x122c70=function(_0x5bda22){while(--_0x5bda22){_0x45c5ed['push'](_0x45c5ed['shift']());}};_0x122c70(++_0x3935f0);}(_0xd47b,0x107));var _0xbd47=function(_0x57feea,_0x4e756d){_0x57feea=_0x57feea-0x0;var _0x5d61d5=_0xd47b[_0x57feea];return _0x5d61d5;};'use strict';var _=require(_0xbd47('0x0'));var util=require('util');exports['getString']=function(_0x5b73f8,_0x46071e,_0x114a1a){var _0x1e73c2=[];if(_0x5b73f8['length']>0x0){var _0x3f734f=_[_0xbd47('0x1')](_0x5b73f8,['id']);for(var _0x94474b=0x0;_0x94474b<_0x3f734f['length'];_0x94474b++){var _0x1815ae=_0x3f734f[_0x94474b];if(_0x1815ae[_0xbd47('0x2')]==='string'){_0x1e73c2[_0xbd47('0x3')](_0x1815ae[_0xbd47('0x4')]);}else if(_0x1815ae['type']===_0xbd47('0x5')&&_0x1815ae['variableName']){_0x46071e[_0x1815ae[_0xbd47('0x6')]]&&_0x1e73c2[_0xbd47('0x3')](_0x46071e[_0x1815ae[_0xbd47('0x6')]][_0xbd47('0x7')]());}else if(_0x1815ae['type']==='customVariable'&&_0x1815ae[_0xbd47('0x8')]&&_0x1815ae[_0xbd47('0x8')][_0xbd47('0x9')]){_0x46071e[_0x1815ae['Variable'][_0xbd47('0x9')][_0xbd47('0xa')]()]&&_0x1e73c2['push'](_0x46071e[_0x1815ae['Variable']['name'][_0xbd47('0xa')]()]['toString']());}else if(_0x1815ae[_0xbd47('0x2')]===_0xbd47('0xb')){if(_0x1815ae[_0xbd47('0xc')]===_0xbd47('0xd')&&_0x1815ae['key']){_0x1e73c2[_0xbd47('0x3')](util[_0xbd47('0xe')](_0xbd47('0xf'),_0x1815ae[_0xbd47('0x10')],_0x1815ae[_0xbd47('0x11')]));}else if(_0x1815ae['keyType']===_0xbd47('0x5')&&_0x1815ae[_0xbd47('0x6')]&&_0x1815ae['key']){_0x46071e[_0x1815ae[_0xbd47('0x6')]]&&_0x1e73c2['push'](util[_0xbd47('0xe')](_0xbd47('0xf'),_0x1815ae[_0xbd47('0x10')],_0x46071e[_0x1815ae[_0xbd47('0x6')]]));}else if(_0x1815ae[_0xbd47('0xc')]===_0xbd47('0x12')&&_0x1815ae[_0xbd47('0x8')]&&_0x1815ae[_0xbd47('0x8')][_0xbd47('0x9')]&&_0x1815ae['key']){_0x46071e[_0x1815ae[_0xbd47('0x8')][_0xbd47('0x9')][_0xbd47('0xa')]()]&&_0x1e73c2['push'](util[_0xbd47('0xe')]('%s:\x20%s',_0x1815ae[_0xbd47('0x10')],_0x46071e[_0x1815ae[_0xbd47('0x8')][_0xbd47('0x9')][_0xbd47('0xa')]()]));}}}}return _0x1e73c2['join'](_0x114a1a);};exports[_0xbd47('0x13')]=function(_0x17f92f){var _0x2780ea=_0x17f92f[_0xbd47('0x14')](-0x1);if(_0x2780ea==='/'){_0x17f92f=_0x17f92f[_0xbd47('0x15')](0x0,_0x17f92f[_0xbd47('0x16')](_0x2780ea));}return _0x17f92f;};exports[_0xbd47('0x17')]=function(_0xce54e4){if(!_[_0xbd47('0x18')](_0xce54e4)&&_0xce54e4!==''){var _0x538de4=/^(([^<>()\[\]\\.,;:\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 _0x538de4[_0xbd47('0x19')](String(_0xce54e4)[_0xbd47('0xa')]());}else{return![];}};
\ No newline at end of file
index c4313d8..25d751f 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(_0x2f366d,_0x345d21){var _0x2c6a16=function(_0x5b04fd){while(--_0x5b04fd){_0x2f366d['push'](_0x2f366d['shift']());}};_0x2c6a16(++_0x345d21);}(_0xe706,0xa3));var _0x6e70=function(_0x34b87f,_0x28aef2){_0x34b87f=_0x34b87f-0x0;var _0x449805=_0xe706[_0x34b87f];return _0x449805;};'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(_0x3ebf6a,_0x29d3f6){var _0x5b3270=function(_0x1f525f){while(--_0x1f525f){_0x3ebf6a['push'](_0x3ebf6a['shift']());}};_0x5b3270(++_0x29d3f6);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'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 7c4c37e..d135019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea4=['./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','format','%s/tickets.json','remoteUri','merge','name','getString','Descriptions','then','info','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','end-user','length','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','forEach','includes','string','nameField','customField','toLowerCase','content','type','idField','custom_fields','push','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','email','destcalleridnum','%s/agent/tickets/%s','inspect','unmanaged','lastevent','The\x20User\x20ID\x20is:','calleridname','toUpperCase','lodash','request-promise','md5','ioredis'];(function(_0x2c09e,_0x578e8b){var _0x1cd9cc=function(_0x95d130){while(--_0x95d130){_0x2c09e['push'](_0x2c09e['shift']());}};_0x1cd9cc(++_0x578e8b);}(_0xeea4,0x1ac));var _0x4eea=function(_0x858776,_0x3bf7b0){_0x858776=_0x858776-0x0;var _0x414d08=_0xeea4[_0x858776];return _0x414d08;};'use strict';var _=require(_0x4eea('0x0'));var rp=require(_0x4eea('0x1'));var md5=require(_0x4eea('0x2'));var util=require('util');var Redis=require(_0x4eea('0x3'));var intUtil=require(_0x4eea('0x4'));var config=require(_0x4eea('0x5'));var logger=require(_0x4eea('0x6'))(_0x4eea('0x7'));config[_0x4eea('0x8')]=_[_0x4eea('0x9')](config['redis'],{'host':_0x4eea('0xa'),'port':0x18eb});var io=require(_0x4eea('0xb'))(new Redis(config[_0x4eea('0x8')]));function emit(_0x115b9c,_0x403f8d,_0x4ea162){io['to'](_0x115b9c)['emit'](_0x403f8d,_0x4ea162);}var headers={'Content-Type':_0x4eea('0xc'),'Accept':_0x4eea('0xc')};function getTicket(_0x1ad7ff,_0x475986,_0x5bc149,_0x1b6f5e,_0x5dba62){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util[_0x4eea('0xd')](_0x4eea('0xe'),_0x1ad7ff[_0x4eea('0xf')]),'method':'POST','body':{'ticket':_[_0x4eea('0x10')]({'requester_id':_0x5bc149['id'],'submitter_id':_0x475986?_0x475986['id']:undefined,'assignee_id':_0x475986?_0x475986['id']:undefined,'tags':getTags(_0x1b6f5e['Tags'],_0x4eea('0x11')),'subject':intUtil[_0x4eea('0x12')](_0x1b6f5e['Subjects'],_0x5dba62,'\x20'),'description':intUtil[_0x4eea('0x12')](_0x1b6f5e[_0x4eea('0x13')],_0x5dba62,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x1b6f5e[_0x4eea('0x13')],_0x5dba62,'\x0a')}},getCustomFields(_0x1b6f5e['Fields'],_0x5dba62))}})[_0x4eea('0x14')](function(_0x7fe80c){logger[_0x4eea('0x15')](_0x4eea('0x16'));return _0x7fe80c[_0x4eea('0x17')];});}function getUser(_0xfb64d4,_0x1c946f){if(intUtil[_0x4eea('0x18')](_0x1c946f)){logger[_0x4eea('0x15')](_0x4eea('0x19'),_0x1c946f);return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1a'),_0xfb64d4[_0x4eea('0xf')]),'qs':{'query':util[_0x4eea('0xd')](_0x4eea('0x1b'),_0x1c946f)}})[_0x4eea('0x14')](function(_0xfac190){if(_0xfac190['count']){logger[_0x4eea('0x15')]('Agent\x20found!');return _[_0x4eea('0x1c')](_0xfac190[_0x4eea('0x1d')],{'email':_0x1c946f,'role':_0x4eea('0x1e')});}else{logger[_0x4eea('0x15')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1f'),_0xfb64d4[_0x4eea('0xf')])})[_0x4eea('0x14')](function(_0x44fde4){logger[_0x4eea('0x15')](_0x4eea('0x20'));return _0x44fde4[_0x4eea('0x21')];});}});}else{logger['info'](_0x4eea('0x22'));return request({'uri':util['format'](_0x4eea('0x1f'),_0xfb64d4[_0x4eea('0xf')])})[_0x4eea('0x14')](function(_0x396009){logger[_0x4eea('0x15')](_0x4eea('0x20'));return _0x396009[_0x4eea('0x21')];});}}function getEndUser(_0x1c2bd8,_0x594ff2,_0x429b9d){logger[_0x4eea('0x15')](_0x4eea('0x23'),_0x429b9d);return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x1a'),_0x1c2bd8[_0x4eea('0xf')]),'qs':{'query':util[_0x4eea('0xd')]('type:user\x20role:end-user\x20phone:%s',_0x429b9d)}})[_0x4eea('0x14')](function(_0x45a81b){var _0x26c4b9;if(_0x45a81b['results']['length']){_0x45a81b[_0x4eea('0x1d')]=_['filter'](_0x45a81b[_0x4eea('0x1d')],{'suspended':![],'role':_0x4eea('0x24')});if(_0x45a81b['results'][_0x4eea('0x25')]){_0x26c4b9=_[_0x4eea('0x26')](_0x45a81b[_0x4eea('0x1d')]);}}if(_0x26c4b9){logger[_0x4eea('0x15')]('Enduser\x20found!');return _0x26c4b9;}else{logger[_0x4eea('0x15')](_0x4eea('0x27'));return request({'uri':util['format'](_0x4eea('0x28'),_0x1c2bd8['remoteUri']),'method':_0x4eea('0x29'),'body':{'user':{'role':_0x4eea('0x24'),'name':util['format'](_0x4eea('0x2a'),_0x594ff2||_0x429b9d),'phone':_0x429b9d}}})[_0x4eea('0x14')](function(_0x5997fb){logger[_0x4eea('0x15')]('Enduser\x20created.');return _0x5997fb[_0x4eea('0x21')];});}});}function getAuth(_0xb8f809){var _0x1603cb;if(_0xb8f809[_0x4eea('0x2b')]===_0x4eea('0x2c')){_0x1603cb=util[_0x4eea('0xd')]('%s:%s',_0xb8f809[_0x4eea('0x2d')],_0xb8f809[_0x4eea('0x2c')]);}else if(_0xb8f809[_0x4eea('0x2b')]===_0x4eea('0x2e')){_0x1603cb=util[_0x4eea('0xd')](_0x4eea('0x2f'),_0xb8f809[_0x4eea('0x2d')],_0xb8f809[_0x4eea('0x2e')]);}return util[_0x4eea('0xd')](_0x4eea('0x30'),new Buffer(_0x1603cb)[_0x4eea('0x31')](_0x4eea('0x32')));}function request(_0x5c0467){logger[_0x4eea('0x33')](_0x4eea('0x34'),JSON['stringify'](_0x5c0467));return rp(_['defaults'](_0x5c0467,{'method':_0x4eea('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x5d4f27,_0x38a737){var _0x2649ff=[];if(_0x5d4f27&&_0x5d4f27[_0x4eea('0x25')]>0x0){_0x2649ff=_[_0x4eea('0x36')](_0x5d4f27,_0x38a737);}return _0x2649ff;}function getCustomFields(_0x132723,_0x4ef380){var _0x4bff75=[];var _0x3ee81d={'custom_fields':[]};if(_0x132723['length']>0x0){_[_0x4eea('0x37')](_0x132723,function(_0x1383d5){if(_[_0x4eea('0x38')]([_0x4eea('0x39'),'picklist'],_0x1383d5['type'])&&_0x1383d5[_0x4eea('0x3a')]&&!_0x1383d5[_0x4eea('0x3b')]){_0x3ee81d[_0x1383d5['nameField'][_0x4eea('0x3c')]()]=_0x1383d5[_0x4eea('0x3d')][_0x4eea('0x31')]();}else if(_[_0x4eea('0x38')](['string','picklist'],_0x1383d5[_0x4eea('0x3e')])&&_0x1383d5[_0x4eea('0x3f')]&&_0x1383d5[_0x4eea('0x3b')]){_0x3ee81d[_0x4eea('0x40')][_0x4eea('0x41')]({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x1383d5[_0x4eea('0x3d')]['toString']()});}else if(_0x1383d5['type']===_0x4eea('0x42')&&_0x1383d5[_0x4eea('0x43')]&&_0x1383d5['idField']&&_0x1383d5[_0x4eea('0x3b')]){_0x4ef380[_0x1383d5[_0x4eea('0x43')]]&&_0x3ee81d[_0x4eea('0x40')]['push']({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x4ef380[_0x1383d5[_0x4eea('0x43')]]['toString']()});}else if(_0x1383d5[_0x4eea('0x3e')]==='customVariable'&&_0x1383d5[_0x4eea('0x44')]&&_0x1383d5[_0x4eea('0x44')][_0x4eea('0x11')]&&_0x1383d5[_0x4eea('0x3f')]&&_0x1383d5[_0x4eea('0x3b')]){_0x4ef380[_0x1383d5[_0x4eea('0x44')][_0x4eea('0x11')][_0x4eea('0x3c')]()]&&_0x3ee81d[_0x4eea('0x40')]['push']({'id':_0x1383d5[_0x4eea('0x3f')],'value':_0x4ef380[_0x1383d5['Variable']['name'][_0x4eea('0x3c')]()]['toString']()});}});}return _0x3ee81d;}exports[_0x4eea('0x45')]=function(_0x8c393b,_0x258cbc,_0x44856e,_0x5af588,_0x2e7431,_0x60d0c3){var _0x516c84,_0x5204f3;_0x60d0c3[_0x4eea('0xf')]=intUtil[_0x4eea('0x46')](_0x60d0c3[_0x4eea('0xf')]);_0x60d0c3['serverUrl']=intUtil[_0x4eea('0x46')](_0x60d0c3[_0x4eea('0x47')]);if(_0x2e7431&&_0x2e7431[_0x4eea('0x48')]){logger[_0x4eea('0x15')]('[QUEUE]','Recording\x20is\x20enabled!');_0x258cbc[_0x4eea('0x49')]=util[_0x4eea('0xd')](_0x4eea('0x4a'),_0x60d0c3['serverUrl'],_0x258cbc['uniqueid'],md5(_0x258cbc[_0x4eea('0x4b')]));}else{_0x258cbc[_0x4eea('0x49')]='';}headers[_0x4eea('0x4c')]=getAuth(_0x60d0c3);return getUser(_0x60d0c3,_0x5af588['email'])[_0x4eea('0x14')](function(_0x131c6d){_0x516c84=_0x131c6d;logger[_0x4eea('0x15')]('The\x20User\x20ID\x20is:',_0x516c84['id']);return getEndUser(_0x60d0c3,_0x258cbc['calleridname'],_0x258cbc[_0x4eea('0x4d')]);})[_0x4eea('0x14')](function(_0x272303){_0x5204f3=_0x272303;logger[_0x4eea('0x15')](_0x4eea('0x4e'),_0x5204f3['id']);return getTicket(_0x60d0c3,_0x516c84,_0x5204f3,_0x44856e,_0x258cbc);})['then'](function(_0x4e36f5){if(_0x4e36f5){logger['info'](_0x4eea('0x4f'),_0x4e36f5['id']);switch(_0x60d0c3['type']){case _0x4eea('0x50'):logger[_0x4eea('0x15')](_0x4eea('0x51'),_0x4eea('0x52'));return request({'uri':util[_0x4eea('0xd')](_0x4eea('0x53'),_0x60d0c3['remoteUri'],_0x516c84['id'],_0x4e36f5['id']),'method':'POST'});case _0x4eea('0x54'):logger[_0x4eea('0x15')](_0x4eea('0x51'),_0x4eea('0x55'));emit(util['format'](_0x4eea('0x56'),_0x5af588['name']),_0x4eea('0x57'),{'uri':util[_0x4eea('0xd')]('%s/agent/tickets/%s',_0x60d0c3['remoteUri'][_0x4eea('0x58')](_0x4eea('0x59'),''),_0x4e36f5['id'])});break;default:logger[_0x4eea('0x5a')](_0x4eea('0x51'),_0x4eea('0x5b'));}}})[_0x4eea('0x5c')](function(_0x304602){logger[_0x4eea('0x5a')](_0x4eea('0x5d'),util['inspect'](_0x304602,{'showHidden':!![],'depth':null}));});};exports[_0x4eea('0x5e')]=function(_0x124839,_0x14ea7c,_0x40897e,_0x2fab5f,_0x45925b,_0x5a7d65,_0x2551aa){var _0x473db6,_0x422051;_0x5a7d65[_0x4eea('0xf')]=intUtil['stripTrailingSlash'](_0x5a7d65['remoteUri']);_0x5a7d65[_0x4eea('0x47')]=intUtil[_0x4eea('0x46')](_0x5a7d65[_0x4eea('0x47')]);if(_0x2551aa&&_0x2551aa[_0x4eea('0x5f')]&&_0x2551aa[_0x4eea('0x5f')]!==_0x4eea('0x60')){logger[_0x4eea('0x15')](_0x4eea('0x61'),_0x4eea('0x62'));_0x14ea7c[_0x4eea('0x49')]=util[_0x4eea('0xd')](_0x4eea('0x4a'),_0x5a7d65[_0x4eea('0x47')],_0x14ea7c[_0x4eea('0x4b')],md5(_0x14ea7c[_0x4eea('0x4b')]));}headers[_0x4eea('0x4c')]=getAuth(_0x5a7d65);return getUser(_0x5a7d65,_0x2fab5f[_0x4eea('0x63')])[_0x4eea('0x14')](function(_0x1badb9){_0x473db6=_0x1badb9;logger[_0x4eea('0x15')]('The\x20User\x20ID\x20is:',_0x473db6['id']);return getEndUser(_0x5a7d65,_0x14ea7c['destcalleridname'],_0x14ea7c[_0x4eea('0x64')]);})[_0x4eea('0x14')](function(_0x373f1e){_0x422051=_0x373f1e;logger[_0x4eea('0x15')](_0x4eea('0x4e'),_0x422051['id']);return getTicket(_0x5a7d65,_0x473db6,_0x422051,_0x40897e,_0x14ea7c);})[_0x4eea('0x14')](function(_0x4cfbdf){if(_0x4cfbdf){logger[_0x4eea('0x15')]('The\x20Ticket\x20ID\x20is:',_0x4cfbdf['id']);switch(_0x5a7d65[_0x4eea('0x3e')]){case _0x4eea('0x50'):logger[_0x4eea('0x15')](_0x4eea('0x61'),_0x4eea('0x52'));return request({'uri':util[_0x4eea('0xd')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x5a7d65[_0x4eea('0xf')],_0x473db6['id'],_0x4cfbdf['id']),'method':_0x4eea('0x29')});case _0x4eea('0x54'):logger[_0x4eea('0x15')](_0x4eea('0x61'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x4eea('0xd')](_0x4eea('0x56'),_0x2fab5f[_0x4eea('0x11')]),'trigger:browser:url',{'uri':util[_0x4eea('0xd')](_0x4eea('0x65'),_0x5a7d65[_0x4eea('0xf')][_0x4eea('0x58')](_0x4eea('0x59'),''),_0x4cfbdf['id'])});break;default:logger['error'](_0x4eea('0x61'),_0x4eea('0x5b'));}}})[_0x4eea('0x5c')](function(_0x4496f6){logger[_0x4eea('0x5a')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x4eea('0x66')](_0x4496f6,{'showHidden':!![],'depth':null}));});};exports[_0x4eea('0x67')]=function(_0x131760,_0x59222d,_0x32a170,_0x19ac09,_0x2ad215,_0x4392dc){var _0x1c40b6,_0x334ab4;_0x4392dc[_0x4eea('0xf')]=intUtil['stripTrailingSlash'](_0x4392dc[_0x4eea('0xf')]);_0x4392dc['serverUrl']=intUtil[_0x4eea('0x46')](_0x4392dc[_0x4eea('0x47')]);if(_0x2ad215&&_0x2ad215[_0x4eea('0x48')]){logger[_0x4eea('0x15')]('['+_0x59222d[_0x4eea('0x68')]['toUpperCase']()+']',_0x4eea('0x62'));_0x59222d[_0x4eea('0x49')]=util['format'](_0x4eea('0x4a'),_0x4392dc[_0x4eea('0x47')],_0x59222d['uniqueid'],md5(_0x59222d[_0x4eea('0x4b')]));}else{_0x59222d[_0x4eea('0x49')]='';}headers[_0x4eea('0x4c')]=getAuth(_0x4392dc);return getUser(_0x4392dc)['then'](function(_0xf98dac){_0x1c40b6=_0xf98dac;logger[_0x4eea('0x15')](_0x4eea('0x69'),_0x1c40b6['id']);return getEndUser(_0x4392dc,_0x59222d[_0x4eea('0x6a')],_0x59222d[_0x4eea('0x4d')]);})[_0x4eea('0x14')](function(_0x249332){_0x334ab4=_0x249332;logger[_0x4eea('0x15')]('The\x20Enduser\x20ID\x20is:',_0x334ab4['id']);return getTicket(_0x4392dc,_0x1c40b6,_0x334ab4,_0x32a170,_0x59222d);})[_0x4eea('0x14')](function(_0x5a29ab){if(_0x5a29ab){logger[_0x4eea('0x15')](_0x4eea('0x4f'),_0x5a29ab['id']);}})['catch'](function(_0x231ecf){logger[_0x4eea('0x5a')]('['+_0x59222d[_0x4eea('0x68')][_0x4eea('0x6b')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x4eea('0x66')](_0x231ecf,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x421f=['util','./util','../../../../config/environment','zendesk','redis','localhost','emit','application/json','info','format','POST','merge','Tags','name','getString','Subjects','Descriptions','then','ticket','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s/token:%s','username','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','push','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','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...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','user:%s','unmanaged','monitor_format','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5'];(function(_0xae287a,_0x5a898f){var _0x53f73d=function(_0x4c7401){while(--_0x4c7401){_0xae287a['push'](_0xae287a['shift']());}};_0x53f73d(++_0x5a898f);}(_0x421f,0x1b9));var _0xf421=function(_0x2b3d1f,_0x40c8b6){_0x2b3d1f=_0x2b3d1f-0x0;var _0x187469=_0x421f[_0x2b3d1f];return _0x187469;};'use strict';var _=require(_0xf421('0x0'));var rp=require(_0xf421('0x1'));var md5=require(_0xf421('0x2'));var util=require(_0xf421('0x3'));var Redis=require('ioredis');var intUtil=require(_0xf421('0x4'));var config=require(_0xf421('0x5'));var logger=require('../../../../config/logger')(_0xf421('0x6'));config[_0xf421('0x7')]=_['defaults'](config[_0xf421('0x7')],{'host':_0xf421('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x258dd2,_0x42ea68,_0x3e1ef7){io['to'](_0x258dd2)[_0xf421('0x9')](_0x42ea68,_0x3e1ef7);}var headers={'Content-Type':'application/json','Accept':_0xf421('0xa')};function getTicket(_0x54e373,_0x29f9aa,_0x137220,_0x1ac81a,_0x17efaa){logger[_0xf421('0xb')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xf421('0xc')]('%s/tickets.json',_0x54e373['remoteUri']),'method':_0xf421('0xd'),'body':{'ticket':_[_0xf421('0xe')]({'requester_id':_0x137220['id'],'submitter_id':_0x29f9aa?_0x29f9aa['id']:undefined,'assignee_id':_0x29f9aa?_0x29f9aa['id']:undefined,'tags':getTags(_0x1ac81a[_0xf421('0xf')],_0xf421('0x10')),'subject':intUtil[_0xf421('0x11')](_0x1ac81a[_0xf421('0x12')],_0x17efaa,'\x20'),'description':intUtil[_0xf421('0x11')](_0x1ac81a['Descriptions'],_0x17efaa,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x1ac81a[_0xf421('0x13')],_0x17efaa,'\x0a')}},getCustomFields(_0x1ac81a['Fields'],_0x17efaa))}})[_0xf421('0x14')](function(_0x1c1599){logger[_0xf421('0xb')]('Ticket\x20created!');return _0x1c1599[_0xf421('0x15')];});}function getUser(_0x47e5de,_0x59337d){if(intUtil['validateEmail'](_0x59337d)){logger['info'](_0xf421('0x16'),_0x59337d);return request({'uri':util[_0xf421('0xc')](_0xf421('0x17'),_0x47e5de[_0xf421('0x18')]),'qs':{'query':util[_0xf421('0xc')](_0xf421('0x19'),_0x59337d)}})[_0xf421('0x14')](function(_0xe30cd4){if(_0xe30cd4[_0xf421('0x1a')]){logger[_0xf421('0xb')](_0xf421('0x1b'));return _[_0xf421('0x1c')](_0xe30cd4[_0xf421('0x1d')],{'email':_0x59337d,'role':'agent'});}else{logger[_0xf421('0xb')](_0xf421('0x1e'));return request({'uri':util['format'](_0xf421('0x1f'),_0x47e5de[_0xf421('0x18')])})[_0xf421('0x14')](function(_0x154a1b){logger[_0xf421('0xb')]('Admin\x20account\x20selected.');return _0x154a1b['user'];});}});}else{logger[_0xf421('0xb')](_0xf421('0x1e'));return request({'uri':util[_0xf421('0xc')](_0xf421('0x1f'),_0x47e5de[_0xf421('0x18')])})[_0xf421('0x14')](function(_0xa3c59b){logger[_0xf421('0xb')](_0xf421('0x20'));return _0xa3c59b[_0xf421('0x21')];});}}function getEndUser(_0x47841f,_0x159ecc,_0xc96d8a){logger[_0xf421('0xb')](_0xf421('0x22'),_0xc96d8a);return request({'uri':util[_0xf421('0xc')]('%s/search.json',_0x47841f[_0xf421('0x18')]),'qs':{'query':util[_0xf421('0xc')](_0xf421('0x23'),_0xc96d8a)}})['then'](function(_0x51e07d){var _0xb3ad35;if(_0x51e07d[_0xf421('0x1d')]['length']){_0x51e07d[_0xf421('0x1d')]=_[_0xf421('0x24')](_0x51e07d[_0xf421('0x1d')],{'suspended':![],'role':_0xf421('0x25')});if(_0x51e07d[_0xf421('0x1d')][_0xf421('0x26')]){_0xb3ad35=_['first'](_0x51e07d[_0xf421('0x1d')]);}}if(_0xb3ad35){logger[_0xf421('0xb')](_0xf421('0x27'));return _0xb3ad35;}else{logger['info'](_0xf421('0x28'));return request({'uri':util[_0xf421('0xc')](_0xf421('0x29'),_0x47841f[_0xf421('0x18')]),'method':_0xf421('0xd'),'body':{'user':{'role':_0xf421('0x25'),'name':util[_0xf421('0xc')](_0xf421('0x2a'),_0x159ecc||_0xc96d8a),'phone':_0xc96d8a}}})[_0xf421('0x14')](function(_0x36a9cf){logger[_0xf421('0xb')](_0xf421('0x2b'));return _0x36a9cf[_0xf421('0x21')];});}});}function getAuth(_0x90cb89){var _0x2e924c;if(_0x90cb89[_0xf421('0x2c')]===_0xf421('0x2d')){_0x2e924c=util[_0xf421('0xc')]('%s:%s',_0x90cb89['username'],_0x90cb89[_0xf421('0x2d')]);}else if(_0x90cb89[_0xf421('0x2c')]==='token'){_0x2e924c=util[_0xf421('0xc')](_0xf421('0x2e'),_0x90cb89[_0xf421('0x2f')],_0x90cb89[_0xf421('0x30')]);}return util['format'](_0xf421('0x31'),new Buffer(_0x2e924c)[_0xf421('0x32')](_0xf421('0x33')));}function request(_0x25fda3){logger[_0xf421('0x34')](_0xf421('0x35'),JSON[_0xf421('0x36')](_0x25fda3));return rp(_['defaults'](_0x25fda3,{'method':_0xf421('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x535b17,_0x186b65){var _0x304a70=[];if(_0x535b17&&_0x535b17[_0xf421('0x26')]>0x0){_0x304a70=_[_0xf421('0x38')](_0x535b17,_0x186b65);}return _0x304a70;}function getCustomFields(_0x5c73ba,_0x12e7ec){var _0x3e2b7b=[];var _0x7f9ca0={'custom_fields':[]};if(_0x5c73ba['length']>0x0){_['forEach'](_0x5c73ba,function(_0x13023d){if(_[_0xf421('0x39')]([_0xf421('0x3a'),_0xf421('0x3b')],_0x13023d[_0xf421('0x3c')])&&_0x13023d[_0xf421('0x3d')]&&!_0x13023d[_0xf421('0x3e')]){_0x7f9ca0[_0x13023d[_0xf421('0x3d')]['toLowerCase']()]=_0x13023d[_0xf421('0x3f')][_0xf421('0x32')]();}else if(_[_0xf421('0x39')]([_0xf421('0x3a'),_0xf421('0x3b')],_0x13023d[_0xf421('0x3c')])&&_0x13023d[_0xf421('0x40')]&&_0x13023d['customField']){_0x7f9ca0[_0xf421('0x41')]['push']({'id':_0x13023d[_0xf421('0x40')],'value':_0x13023d[_0xf421('0x3f')]['toString']()});}else if(_0x13023d[_0xf421('0x3c')]===_0xf421('0x42')&&_0x13023d[_0xf421('0x43')]&&_0x13023d[_0xf421('0x40')]&&_0x13023d[_0xf421('0x3e')]){_0x12e7ec[_0x13023d[_0xf421('0x43')]]&&_0x7f9ca0[_0xf421('0x41')][_0xf421('0x44')]({'id':_0x13023d['idField'],'value':_0x12e7ec[_0x13023d['variableName']][_0xf421('0x32')]()});}else if(_0x13023d['type']==='customVariable'&&_0x13023d[_0xf421('0x45')]&&_0x13023d['Variable'][_0xf421('0x10')]&&_0x13023d[_0xf421('0x40')]&&_0x13023d[_0xf421('0x3e')]){_0x12e7ec[_0x13023d[_0xf421('0x45')][_0xf421('0x10')]['toLowerCase']()]&&_0x7f9ca0['custom_fields']['push']({'id':_0x13023d[_0xf421('0x40')],'value':_0x12e7ec[_0x13023d[_0xf421('0x45')][_0xf421('0x10')][_0xf421('0x46')]()][_0xf421('0x32')]()});}});}return _0x7f9ca0;}exports[_0xf421('0x47')]=function(_0x788b1,_0x3e0354,_0x43b380,_0x2e111b,_0x2cb9fb,_0x33f4b1){var _0x40470a,_0xbef70e;_0x33f4b1[_0xf421('0x18')]=intUtil[_0xf421('0x48')](_0x33f4b1[_0xf421('0x18')]);_0x33f4b1[_0xf421('0x49')]=intUtil['stripTrailingSlash'](_0x33f4b1[_0xf421('0x49')]);if(_0x2cb9fb&&_0x2cb9fb['monitor_format']){logger[_0xf421('0xb')](_0xf421('0x4a'),_0xf421('0x4b'));_0x3e0354[_0xf421('0x4c')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x33f4b1[_0xf421('0x49')],_0x3e0354[_0xf421('0x4d')],md5(_0x3e0354[_0xf421('0x4d')]));}else{_0x3e0354[_0xf421('0x4c')]='';}headers['Authorization']=getAuth(_0x33f4b1);return getUser(_0x33f4b1,_0x2e111b['email'])['then'](function(_0xa3c016){_0x40470a=_0xa3c016;logger[_0xf421('0xb')](_0xf421('0x4e'),_0x40470a['id']);return getEndUser(_0x33f4b1,_0x3e0354[_0xf421('0x4f')],_0x3e0354[_0xf421('0x50')]);})[_0xf421('0x14')](function(_0x5e4bc5){_0xbef70e=_0x5e4bc5;logger[_0xf421('0xb')](_0xf421('0x51'),_0xbef70e['id']);return getTicket(_0x33f4b1,_0x40470a,_0xbef70e,_0x43b380,_0x3e0354);})[_0xf421('0x14')](function(_0x1f23d8){if(_0x1f23d8){logger[_0xf421('0xb')](_0xf421('0x52'),_0x1f23d8['id']);switch(_0x33f4b1[_0xf421('0x3c')]){case _0xf421('0x53'):logger[_0xf421('0xb')](_0xf421('0x4a'),_0xf421('0x54'));return request({'uri':util[_0xf421('0xc')](_0xf421('0x55'),_0x33f4b1[_0xf421('0x18')],_0x40470a['id'],_0x1f23d8['id']),'method':_0xf421('0xd')});case _0xf421('0x56'):logger['info'](_0xf421('0x4a'),_0xf421('0x57'));emit(util[_0xf421('0xc')]('user:%s',_0x2e111b['name']),_0xf421('0x58'),{'uri':util[_0xf421('0xc')](_0xf421('0x59'),_0x33f4b1[_0xf421('0x18')][_0xf421('0x5a')](_0xf421('0x5b'),''),_0x1f23d8['id'])});break;default:logger['error']('[QUEUE]',_0xf421('0x5c'));}}})[_0xf421('0x5d')](function(_0x148c8a){logger[_0xf421('0x5e')](_0xf421('0x5f'),util[_0xf421('0x60')](_0x148c8a,{'showHidden':!![],'depth':null}));});};exports[_0xf421('0x61')]=function(_0x1d337b,_0x5865ca,_0x3c8b74,_0x2fa751,_0x521703,_0x5b8869,_0x2efdd2){var _0x2ea514,_0x2532d5;_0x5b8869['remoteUri']=intUtil[_0xf421('0x48')](_0x5b8869['remoteUri']);_0x5b8869['serverUrl']=intUtil[_0xf421('0x48')](_0x5b8869['serverUrl']);if(_0x2efdd2&&_0x2efdd2[_0xf421('0x62')]&&_0x2efdd2[_0xf421('0x62')]!==_0xf421('0x63')){logger[_0xf421('0xb')](_0xf421('0x64'),_0xf421('0x4b'));_0x5865ca[_0xf421('0x4c')]=util[_0xf421('0xc')](_0xf421('0x65'),_0x5b8869['serverUrl'],_0x5865ca[_0xf421('0x4d')],md5(_0x5865ca[_0xf421('0x4d')]));}headers[_0xf421('0x66')]=getAuth(_0x5b8869);return getUser(_0x5b8869,_0x2fa751['email'])[_0xf421('0x14')](function(_0x567d74){_0x2ea514=_0x567d74;logger[_0xf421('0xb')]('The\x20User\x20ID\x20is:',_0x2ea514['id']);return getEndUser(_0x5b8869,_0x5865ca[_0xf421('0x67')],_0x5865ca[_0xf421('0x68')]);})[_0xf421('0x14')](function(_0x4b4144){_0x2532d5=_0x4b4144;logger[_0xf421('0xb')](_0xf421('0x51'),_0x2532d5['id']);return getTicket(_0x5b8869,_0x2ea514,_0x2532d5,_0x3c8b74,_0x5865ca);})[_0xf421('0x14')](function(_0x165933){if(_0x165933){logger[_0xf421('0xb')]('The\x20Ticket\x20ID\x20is:',_0x165933['id']);switch(_0x5b8869[_0xf421('0x3c')]){case _0xf421('0x53'):logger['info'](_0xf421('0x64'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xf421('0xc')](_0xf421('0x55'),_0x5b8869[_0xf421('0x18')],_0x2ea514['id'],_0x165933['id']),'method':'POST'});case'newTab':logger['info'](_0xf421('0x64'),_0xf421('0x57'));emit(util[_0xf421('0xc')](_0xf421('0x69'),_0x2fa751['name']),_0xf421('0x58'),{'uri':util[_0xf421('0xc')]('%s/agent/tickets/%s',_0x5b8869[_0xf421('0x18')][_0xf421('0x5a')]('/api/v2',''),_0x165933['id'])});break;default:logger[_0xf421('0x5e')](_0xf421('0x64'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xf421('0x5d')](function(_0x194a30){logger[_0xf421('0x5e')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0xf421('0x60')](_0x194a30,{'showHidden':!![],'depth':null}));});};exports[_0xf421('0x6a')]=function(_0x15d6bb,_0x3dd3c2,_0x5c22ba,_0x121cd3,_0x486fb4,_0x4ea713){var _0x20a753,_0x5ee4f1;_0x4ea713[_0xf421('0x18')]=intUtil[_0xf421('0x48')](_0x4ea713[_0xf421('0x18')]);_0x4ea713[_0xf421('0x49')]=intUtil[_0xf421('0x48')](_0x4ea713[_0xf421('0x49')]);if(_0x486fb4&&_0x486fb4[_0xf421('0x6b')]){logger[_0xf421('0xb')]('['+_0x3dd3c2[_0xf421('0x6c')]['toUpperCase']()+']',_0xf421('0x4b'));_0x3dd3c2['recordingURL']=util[_0xf421('0xc')](_0xf421('0x65'),_0x4ea713[_0xf421('0x49')],_0x3dd3c2['uniqueid'],md5(_0x3dd3c2[_0xf421('0x4d')]));}else{_0x3dd3c2[_0xf421('0x4c')]='';}headers['Authorization']=getAuth(_0x4ea713);return getUser(_0x4ea713)[_0xf421('0x14')](function(_0x4d658e){_0x20a753=_0x4d658e;logger[_0xf421('0xb')](_0xf421('0x4e'),_0x20a753['id']);return getEndUser(_0x4ea713,_0x3dd3c2[_0xf421('0x4f')],_0x3dd3c2['calleridnum']);})[_0xf421('0x14')](function(_0x4be6dd){_0x5ee4f1=_0x4be6dd;logger[_0xf421('0xb')](_0xf421('0x51'),_0x5ee4f1['id']);return getTicket(_0x4ea713,_0x20a753,_0x5ee4f1,_0x5c22ba,_0x3dd3c2);})[_0xf421('0x14')](function(_0x28f116){if(_0x28f116){logger['info']('The\x20Ticket\x20ID\x20is:',_0x28f116['id']);}})['catch'](function(_0x285654){logger[_0xf421('0x5e')]('['+_0x3dd3c2[_0xf421('0x6c')][_0xf421('0x6d')]()+']'+_0xf421('0x6e'),util['inspect'](_0x285654,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 859f244..dafcc9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3446=['user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','Recording\x20is\x20enabled!','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','unmanaged','toUpperCase','lodash','request-promise','md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','includes','idField','content','toString','type','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','info','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','data','enduserType','catch','https://www.zohoapis.','/crm/v2/','role','first_name','last_name','SUCCESS','details','moduleCreate','Error:\x20','log','moduleSearch','contact_lead','uri','Contacts','Leads','nothing','contact','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Subject','getString','Subjects','Descriptions','Full_Name','First_Name','Last_Name','What_Id','startCase','talktime','Call_Duration','utc','mm:ss','answertime','endtime','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','called','Called','complete','connect','Call_Result','Answered','rejected','Rejected','abandoned','Abandoned','Timeout','Call_Start_Time','outbound','Inbound','merge','Fields','/crm/v2/Calls','code','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','recordingURL','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...'];(function(_0x4bdae6,_0xdf4405){var _0x573030=function(_0x4837d6){while(--_0x4837d6){_0x4bdae6['push'](_0x4bdae6['shift']());}};_0x573030(++_0xdf4405);}(_0x3446,0x14c));var _0x6344=function(_0x27f992,_0x3d369a){_0x27f992=_0x27f992-0x0;var _0x59b30b=_0x3446[_0x27f992];return _0x59b30b;};'use strict';var _=require(_0x6344('0x0'));var rp=require(_0x6344('0x1'));var md5=require(_0x6344('0x2'));var util=require(_0x6344('0x3'));var intUtil=require(_0x6344('0x4'));var moment=require(_0x6344('0x5'));var Redis=require(_0x6344('0x6'));var BPromise=require(_0x6344('0x7'));var config=require(_0x6344('0x8'));var logger=require('../../../../config/logger')(_0x6344('0x9'));config[_0x6344('0xa')]=_[_0x6344('0xb')](config[_0x6344('0xa')],{'host':_0x6344('0xc'),'port':0x18eb});var io=require(_0x6344('0xd'))(new Redis(config[_0x6344('0xa')]));function emit(_0x13cab6,_0x2622b1,_0x36667f){io['to'](_0x13cab6)[_0x6344('0xe')](_0x2622b1,_0x36667f);}function request(_0x831802){logger['debug'](_0x6344('0xf'),JSON[_0x6344('0x10')](_0x831802));return rp(_0x831802);}function getCustomFields(_0x4aa9a9,_0x195ff5){var _0x9087f2={};if(_0x4aa9a9[_0x6344('0x11')]>0x0){_['forEach'](_0x4aa9a9,function(_0x5d846c){if(_[_0x6344('0x12')](['string','picklist'],_0x5d846c['type'])&&_0x5d846c[_0x6344('0x13')]){_0x9087f2[_0x5d846c[_0x6344('0x13')]]=_0x5d846c[_0x6344('0x14')][_0x6344('0x15')]();}else if(_0x5d846c[_0x6344('0x16')]==='variable'&&_0x5d846c[_0x6344('0x17')]&&_0x5d846c['idField']&&_0x195ff5[_0x5d846c[_0x6344('0x17')]]){_0x9087f2[_0x5d846c[_0x6344('0x13')]]=_0x195ff5[_0x5d846c['variableName']][_0x6344('0x15')]();}else if(_0x5d846c['type']===_0x6344('0x18')&&_0x5d846c[_0x6344('0x19')]&&_0x5d846c['Variable'][_0x6344('0x1a')]&&_0x5d846c[_0x6344('0x13')]&&_0x195ff5[_0x5d846c['Variable'][_0x6344('0x1a')][_0x6344('0x1b')]()]){_0x9087f2[_0x5d846c['idField']]=_0x195ff5[_0x5d846c[_0x6344('0x19')][_0x6344('0x1a')][_0x6344('0x1b')]()][_0x6344('0x15')]();}});}return _0x9087f2;}function getName(_0xf4441d){if(_0xf4441d[_0x6344('0x1c')]('\x20')>0x0){var _0x140860=_0xf4441d[_0x6344('0x1d')](/ (.+)/);if(_0x140860[0x1]){return _0x140860;}}return[_0xf4441d,_0xf4441d];}var accountsTokens={};function getAccessToken(_0x2e1e40){return new Promise(function(_0x208432,_0xb42496){if(!_[_0x6344('0x1e')](accountsTokens[_0x2e1e40['id']])&&!_[_0x6344('0x1e')](accountsTokens[_0x2e1e40['id']][_0x6344('0x1f')])){if(moment()[_0x6344('0x20')](accountsTokens[_0x2e1e40['id']][_0x6344('0x21')])){_0x208432(accountsTokens[_0x2e1e40['id']][_0x6344('0x1f')]);}}var _0x54ece2;switch(_0x2e1e40[_0x6344('0x22')]){case'US':_0x54ece2=_0x6344('0x23');break;case'AU':_0x54ece2='https://accounts.zoho.com.au';break;case'EU':_0x54ece2=_0x6344('0x24');break;case'IN':_0x54ece2=_0x6344('0x25');break;case'CN':_0x54ece2='https://accounts.zoho.com.cn';break;default:_0x54ece2=_0x6344('0x24');break;}var _0x3c06d6={'method':_0x6344('0x26'),'uri':_0x54ece2+_0x6344('0x27'),'qs':{'refresh_token':_0x2e1e40[_0x6344('0x28')],'client_id':_0x2e1e40[_0x6344('0x29')],'client_secret':_0x2e1e40[_0x6344('0x2a')],'grant_type':_0x6344('0x2b')},'json':!![]};return rp(_0x3c06d6)['then'](function(_0x333e04){accountsTokens[_0x2e1e40['id']]={'access_token':_0x333e04[_0x6344('0x1f')],'expires_in':moment()[_0x6344('0x2c')](_0x333e04[_0x6344('0x21')],_0x6344('0x2d'))};_0x208432(_0x333e04[_0x6344('0x1f')]);})['catch'](function(_0x24020a){logger[_0x6344('0x2e')](_0x6344('0x2f'),_0x24020a[_0x6344('0x30')]);_0xb42496(_0x24020a);});});}function getUser(_0x12422,_0x129b0f,_0x4ff59a,_0x2663af){logger['info'](_0x6344('0x31'));return request({'method':_0x6344('0x32'),'uri':util[_0x6344('0x33')](_0x6344('0x34'),_0x129b0f),'qs':{'type':_0x6344('0x35')},'headers':{'Authorization':_0x6344('0x36')+_0x12422},'json':!![]})['then'](function(_0x42dd30){if(_0x42dd30[_0x6344('0x37')]){var _0x2c235e=-0x1;if(_[_0x6344('0x38')](_0x42dd30[_0x6344('0x37')])){if(!_[_0x6344('0x1e')](_0x2663af)){_0x2c235e=_[_0x6344('0x39')](_0x42dd30['users'],function(_0x3217a1){return _0x3217a1[_0x6344('0x3a')]===_0x2663af;});}if(_0x2c235e>=0x0){logger[_0x6344('0x3b')](_0x6344('0x3c'));}else{logger[_0x6344('0x3b')](_0x6344('0x3d'));_0x2c235e=_[_0x6344('0x39')](_0x42dd30[_0x6344('0x37')],function(_0x25664d){return _0x25664d[_0x6344('0x3e')][_0x6344('0x1a')]===_0x6344('0x3f');});}return _0x42dd30[_0x6344('0x37')][_0x2c235e];}else{if(_0x42dd30[_0x6344('0x40')][_0x6344('0x3e')][_0x6344('0x1a')]===_0x6344('0x3f')){logger[_0x6344('0x3b')](_0x6344('0x3d'));user=_0x42dd30['user'];return user;}else{logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](_0x42dd30));throw new Error(_0x6344('0x42')+JSON['stringify'](_0x42dd30));}}}else{logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](_0x42dd30));throw new Error(_0x6344('0x42')+JSON[_0x6344('0x10')](_0x42dd30));}})['catch'](function(_0x3bac85){console[_0x6344('0x2e')](_0x3bac85);});}function getZohoUser(_0x3d3124,_0x93dbc7){return new BPromise(function(_0x4b911a,_0x4d59e9){request(_0x3d3124)[_0x6344('0x43')](function(_0xaed8a0){var _0x44e6ca=null;if(_0xaed8a0){_0x44e6ca=_0xaed8a0[_0x6344('0x44')][0x0];_0x44e6ca[_0x6344('0x45')]=_0x93dbc7;}_0x4b911a(_0x44e6ca);})[_0x6344('0x46')](function(_0x1a82ba){_0x4d59e9(_0x1a82ba);});});}function createEndUser(_0x5f5613,_0x1c2a5b,_0x2050af,_0x30337d,_0x5c7952,_0x5d9d37){var _0x2050af=getName(_0x2050af);return request({'method':_0x6344('0x26'),'uri':_0x6344('0x47')+_0x1c2a5b+_0x6344('0x48')+_['startCase'](_0x5d9d37['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x2050af[0x1],'First_Name':_0x2050af[0x0],'Phone':_0x30337d,'Owner':{'name':!_['isNil'](_0x5c7952['role']['name'])?_0x5c7952[_0x6344('0x49')][_0x6344('0x1a')]:!_[_0x6344('0x1e')](_0x5c7952[_0x6344('0x4a')])?_0x5c7952['first_name']+'\x20'+_0x5c7952[_0x6344('0x4b')]:_0x5c7952[_0x6344('0x4b')],'id':_0x5c7952['id']}}]},'headers':{'Authorization':_0x6344('0x36')+_0x5f5613},'json':!![]})[_0x6344('0x43')](function(_0x20e686){if(_0x20e686&&_0x20e686[_0x6344('0x44')][0x0]['code']===_0x6344('0x4c')){var _0x44394e=_0x20e686[_0x6344('0x44')][0x0][_0x6344('0x4d')];_0x44394e['enduserType']=_['startCase'](_0x5d9d37[_0x6344('0x4e')])+'s';return _0x44394e;}logger[_0x6344('0x2e')](_0x6344('0x41'),JSON[_0x6344('0x10')](data));throw new Error(_0x6344('0x4f')+JSON[_0x6344('0x10')](data));})['catch'](function(_0x470d2d){console[_0x6344('0x50')]('CREATE\x20ERROR',_0x470d2d);});}function getEndUser(_0x3657b9,_0x3e89a7,_0x151cd2,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473){var _0x1563e5={'method':_0x6344('0x32'),'uri':'','headers':{'Authorization':_0x6344('0x36')+_0x3657b9},'json':!![]};switch(_0x512473[_0x6344('0x51')]){case _0x6344('0x52'):_0x1563e5[_0x6344('0x53')]=_0x6344('0x47')+_0x3e89a7+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x54'))[_0x6344('0x43')](function(_0x4e240b){if(_0x4e240b)return _0x4e240b;_0x1563e5[_0x6344('0x53')]='https://www.zohoapis.'+_0x3e89a7+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x55'))[_0x6344('0x43')](function(_0x484be4){if(_0x484be4)return _0x484be4;if(_0x512473[_0x6344('0x4e')]!=_0x6344('0x56')){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});});break;case _0x6344('0x57'):_0x1563e5[_0x6344('0x53')]=_0x6344('0x47')+_0x3e89a7+_0x6344('0x58')+_0x30a86d+'))';return getZohoUser(_0x1563e5,_0x6344('0x54'))['then'](function(_0x84fa2d){if(_0x84fa2d)return _0x84fa2d;if(_0x512473['moduleCreate']!='nothing'){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});break;case'lead':_0x1563e5['uri']='https://www.zohoapis.'+_0x3e89a7+_0x6344('0x59')+_0x30a86d+'))';return getZohoUser(_0x1563e5,'Leads')[_0x6344('0x43')](function(_0x57d84c){if(_0x57d84c)return _0x57d84c;if(_0x512473[_0x6344('0x4e')]!=_0x6344('0x56')){return createEndUser(_0x3657b9,_0x3e89a7,_0x5cb229,_0x30a86d,_0x3cfd72,_0x512473);}else{return{};}});break;}}function getCall(_0x2f1b86,_0x4bf67b,_0x393f22,_0x47cff1,_0x3da52e,_0x5f0193,_0x3dd5f7,_0x2e4523){logger[_0x6344('0x3b')](_0x6344('0x5a'));var _0x36c633={};_0x36c633['Owner']={'name':!_['isNil'](_0x47cff1[_0x6344('0x49')][_0x6344('0x1a')])&&!_[_0x6344('0x1e')](_0x47cff1[_0x6344('0x3e')][_0x6344('0x1a')])&&_0x47cff1['profile']['name']==='administrator'?_0x47cff1[_0x6344('0x49')]['name']:!_['isNil'](_0x47cff1[_0x6344('0x4a')])?_0x47cff1[_0x6344('0x4a')]+'\x20'+_0x47cff1['last_name']:_0x47cff1[_0x6344('0x4b')],'id':_0x47cff1['id']};_0x36c633[_0x6344('0x5b')]=intUtil[_0x6344('0x5c')](_0x5f0193[_0x6344('0x5d')],_0x3dd5f7,'\x20');_0x36c633['Description']=intUtil[_0x6344('0x5c')](_0x5f0193[_0x6344('0x5e')],_0x3dd5f7,'\x0a');if(_0x3da52e[_0x6344('0x45')]===_0x6344('0x54')){_0x36c633['Who_Id']={'name':!_[_0x6344('0x1e')](_0x3da52e['Full_Name'])?_0x3da52e[_0x6344('0x5f')]:!_[_0x6344('0x1e')](_0x3da52e[_0x6344('0x60')])?_0x3da52e['First_Name']+'\x20'+_0x3da52e[_0x6344('0x61')]:_0x3da52e['Last_Name'],'id':_0x3da52e['id']};}if(_0x3da52e[_0x6344('0x45')]===_0x6344('0x55')){_0x36c633[_0x6344('0x62')]={'name':!_[_0x6344('0x1e')](_0x3da52e['Full_Name'])?_0x3da52e[_0x6344('0x5f')]:!_['isNil'](_0x3da52e[_0x6344('0x60')])?_0x3da52e['First_Name']+'\x20'+_0x3da52e[_0x6344('0x61')]:_0x3da52e[_0x6344('0x61')],'id':_0x3da52e['id']};_0x36c633['$se_module']=_[_0x6344('0x63')](_0x3da52e[_0x6344('0x45')]);}if(_0x3dd5f7[_0x6344('0x64')]){_0x36c633[_0x6344('0x65')]=moment[_0x6344('0x66')](parseInt(_0x3dd5f7[_0x6344('0x64')])*0x3e8)['format'](_0x6344('0x67'));}else if(_0x3dd5f7[_0x6344('0x68')]&&_0x3dd5f7['endtime']){_0x36c633[_0x6344('0x65')]=moment['utc'](moment(_0x3dd5f7[_0x6344('0x69')],'YYYY-MM-DDTHH:mm:ss')['diff'](moment(_0x3dd5f7[_0x6344('0x6a')],_0x6344('0x6b'))))[_0x6344('0x33')](_0x6344('0x67'));}switch(_0x3dd5f7[_0x6344('0x6c')]){case _0x6344('0x6d'):_0x36c633['Call_Result']=_0x6344('0x6e');break;case _0x6344('0x6f'):case _0x6344('0x70'):_0x36c633[_0x6344('0x71')]=_0x6344('0x72');break;case _0x6344('0x73'):_0x36c633['Call_Result']=_0x6344('0x74');break;case _0x6344('0x75'):_0x36c633['Call_Result']=_0x6344('0x76');break;case'timeout':_0x36c633['Call_Result']=_0x6344('0x77');default:}_0x36c633[_0x6344('0x78')]=(_0x2e4523===_0x6344('0x79')?moment(_0x3dd5f7[_0x6344('0x6a')])[_0x6344('0x33')](_0x6344('0x6b')):moment(_0x3dd5f7['agentcalledAt'])[_0x6344('0x33')](_0x6344('0x6b')))||moment()[_0x6344('0x33')](_0x6344('0x6b'));_0x36c633['Call_Type']=_0x2e4523||_0x6344('0x7a');_0x36c633=_[_0x6344('0x7b')](_0x36c633,getCustomFields(_0x5f0193[_0x6344('0x7c')],_0x3dd5f7));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x4bf67b+_0x6344('0x7d'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2f1b86},'body':{'data':[_0x36c633]},'json':!![]})[_0x6344('0x43')](function(_0x41d22d){if(_0x41d22d&&_0x41d22d[_0x6344('0x44')][0x0][_0x6344('0x7e')]==='SUCCESS'){logger[_0x6344('0x3b')](_0x6344('0x7f'));return{'id':_0x41d22d[_0x6344('0x44')][0x0][_0x6344('0x4d')]['id']};}})['catch'](function(_0x32df35){logger[_0x6344('0x3b')](_0x6344('0x80'),_0x32df35[_0x6344('0x30')]);console[_0x6344('0x50')]('err',_0x32df35);});}exports[_0x6344('0x81')]=function(_0x36f6c0,_0xf81e88,_0x5e7c72,_0x11c4aa,_0x192bba,_0x3bc7ee){var _0x1facb0,_0x161a42,_0x505220;_0x3bc7ee['host']=intUtil[_0x6344('0x82')](_0x3bc7ee[_0x6344('0x83')]);_0x3bc7ee[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x3bc7ee[_0x6344('0x84')]);if(_0x192bba&&_0x192bba[_0x6344('0x85')]){logger['info'](_0x6344('0x86'),'Recording\x20is\x20enabled!');_0xf81e88[_0x6344('0x87')]=_0x3bc7ee['serverUrl']+'/api/voice/recordings/'+_0xf81e88[_0x6344('0x88')]+_0x6344('0x89')+md5(_0xf81e88[_0x6344('0x88')]);}else{_0xf81e88[_0x6344('0x87')]='';}var _0x3d2817=_0x3bc7ee[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x3bc7ee)[_0x6344('0x43')](function(_0x4eb02f){_0x505220=_0x4eb02f;return getUser(_0x505220,_0x3d2817,_0x3bc7ee,_0x11c4aa[_0x6344('0x3a')]);})['then'](function(_0x59f727){_0x1facb0=_0x59f727;logger[_0x6344('0x3b')](_0x6344('0x8c'),_0x1facb0['id']);return getEndUser(_0x505220,_0x3d2817,_0x3bc7ee,_0xf81e88[_0x6344('0x8d')],_0xf81e88[_0x6344('0x8e')],_0x1facb0,_0x5e7c72);})[_0x6344('0x43')](function(_0xfb8be2){_0x161a42=_0xfb8be2;return getCall(_0x505220,_0x3d2817,_0x3bc7ee,_0x1facb0,_0x161a42,_0x5e7c72,_0xf81e88,_0x6344('0x7a'));})[_0x6344('0x43')](function(_0x4acc6f){if(_0x4acc6f){logger[_0x6344('0x3b')](_0x6344('0x8f'),_0x4acc6f['id']);logger[_0x6344('0x3b')](_0x6344('0x86'),_0x6344('0x90'));emit(util['format'](_0x6344('0x91'),_0x11c4aa[_0x6344('0x1a')]),_0x6344('0x92'),{'uri':_0x6344('0x93')+_0x3bc7ee[_0x6344('0x83')]+_0x6344('0x94')+_0x4acc6f['id']});}})['catch'](function(_0x4334e9){logger[_0x6344('0x2e')](_0x6344('0x86'),JSON[_0x6344('0x10')](_0x4334e9));});};exports[_0x6344('0x79')]=function(_0x518669,_0x38b696,_0x4e4fbc,_0x3709e1,_0xc614fb,_0x30a996,_0x56706e){var _0x1804a7,_0x6531e4,_0x27048c;_0x30a996[_0x6344('0x83')]=intUtil[_0x6344('0x82')](_0x30a996['host']);_0x30a996[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x30a996[_0x6344('0x84')]);if(_0x56706e&&_0x56706e['recordingFormat']&&_0x56706e[_0x6344('0x95')]!==_0x6344('0x96')){logger[_0x6344('0x3b')]('[OUTBOUND]',_0x6344('0x97'));_0x38b696[_0x6344('0x87')]=_0x30a996[_0x6344('0x84')]+_0x6344('0x98')+_0x38b696[_0x6344('0x88')]+_0x6344('0x89')+md5(_0x38b696[_0x6344('0x88')]);}var _0x59076d=_0x30a996[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x30a996)[_0x6344('0x43')](function(_0x458c0c){_0x27048c=_0x458c0c;return getUser(_0x27048c,_0x59076d,_0x30a996,_0x3709e1['email']);})[_0x6344('0x43')](function(_0x11b137){_0x1804a7=_0x11b137;logger[_0x6344('0x3b')]('The\x20User\x20ID\x20is:',_0x1804a7['id']);return getEndUser(_0x27048c,_0x59076d,_0x30a996,_0x38b696[_0x6344('0x99')],_0x38b696[_0x6344('0x9a')],_0x1804a7,_0x4e4fbc);})['then'](function(_0x13f167){_0x6531e4=_0x13f167;return getCall(_0x27048c,_0x59076d,_0x30a996,_0x1804a7,_0x6531e4,_0x4e4fbc,_0x38b696,_0x6344('0x9b'));})[_0x6344('0x43')](function(_0x3c3b78){if(_0x3c3b78){logger[_0x6344('0x3b')]('The\x20Call\x20ID\x20is:',_0x3c3b78['id']);logger[_0x6344('0x3b')](_0x6344('0x9c'),_0x6344('0x90'));emit(util['format'](_0x6344('0x91'),_0x3709e1[_0x6344('0x1a')]),_0x6344('0x92'),{'uri':_0x6344('0x93')+_0x30a996[_0x6344('0x83')]+_0x6344('0x94')+_0x3c3b78['id']});}})[_0x6344('0x46')](function(_0x19a926){logger[_0x6344('0x2e')](_0x6344('0x9c'),JSON[_0x6344('0x10')](_0x19a926));});};exports[_0x6344('0x9d')]=function(_0x1b61e7,_0x19e05c,_0x1fff2d,_0xa169d2,_0x39541e,_0x3027e5){var _0x4dee3f,_0x299759,_0x1f5b8d;_0x3027e5['host']=intUtil['stripTrailingSlash'](_0x3027e5[_0x6344('0x83')]);_0x3027e5[_0x6344('0x84')]=intUtil[_0x6344('0x82')](_0x3027e5[_0x6344('0x84')]);if(_0x39541e&&_0x39541e[_0x6344('0x85')]){logger[_0x6344('0x3b')]('['+_0x19e05c['lastevent'][_0x6344('0x9e')]()+']',_0x6344('0x97'));_0x19e05c[_0x6344('0x87')]=_0x3027e5[_0x6344('0x84')]+'/api/voice/recordings/'+_0x19e05c[_0x6344('0x88')]+_0x6344('0x89')+md5(_0x19e05c['uniqueid']);}else{_0x19e05c[_0x6344('0x87')]='';}var _0x501783=_0x3027e5[_0x6344('0x83')]===_0x6344('0x8a')?'eu':_0x6344('0x8b');return getAccessToken(_0x3027e5)['then'](function(_0x46d836){_0x1f5b8d=_0x46d836;return getUser(_0x1f5b8d,_0x501783,_0x3027e5);})[_0x6344('0x43')](function(_0x5bcbdc){_0x4dee3f=_0x5bcbdc;logger[_0x6344('0x3b')]('The\x20User\x20ID\x20is:',_0x4dee3f['id']);return getEndUser(_0x1f5b8d,_0x501783,_0x3027e5,_0x19e05c[_0x6344('0x8d')],_0x19e05c[_0x6344('0x8e')],_0x4dee3f,_0x1fff2d);})['then'](function(_0xb98c2b){_0x299759=_0xb98c2b;return getCall(_0x1f5b8d,_0x501783,_0x3027e5,_0x4dee3f,_0x299759,_0x1fff2d,_0x19e05c,_0x6344('0x7a'));})['then'](function(_0x5ec646){if(_0x5ec646){logger[_0x6344('0x3b')](_0x6344('0x8f'),_0x5ec646['id']);}})[_0x6344('0x46')](function(_0x483960){logger[_0x6344('0x2e')]('['+_0x19e05c[_0x6344('0x6c')][_0x6344('0x9e')]()+']',JSON[_0x6344('0x10')](_0x483960));});};
\ No newline at end of file
+var _0xe773=['Search\x20user','GET','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Using\x20the\x20admin\x20account!','profile','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','first_name','last_name','code','SUCCESS','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','Owner','role','administrator','getString','Description','Descriptions','enduserType','Who_Id','First_Name','Last_Name','What_Id','Full_Name','$se_module','talktime','format','mm:ss','answertime','endtime','Call_Duration','utc','YYYY-MM-DDTHH:mm:ss','diff','starttime','Call_Result','complete','connect','Answered','Rejected','abandoned','timeout','Timeout','Call_Start_Time','outbound','Call_Type','Inbound','merge','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridnum','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','request-promise','md5','util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','stringify','length','picklist','idField','content','toString','variable','variableName','type','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info'];(function(_0xee1ec9,_0x2f0599){var _0x102a53=function(_0x4e5f7f){while(--_0x4e5f7f){_0xee1ec9['push'](_0xee1ec9['shift']());}};_0x102a53(++_0x2f0599);}(_0xe773,0x19a));var _0x3e77=function(_0x7e0be2,_0x4cc019){_0x7e0be2=_0x7e0be2-0x0;var _0x4946e8=_0xe773[_0x7e0be2];return _0x4946e8;};'use strict';var _=require('lodash');var rp=require(_0x3e77('0x0'));var md5=require(_0x3e77('0x1'));var util=require(_0x3e77('0x2'));var intUtil=require('./util');var moment=require(_0x3e77('0x3'));var Redis=require(_0x3e77('0x4'));var BPromise=require(_0x3e77('0x5'));var config=require(_0x3e77('0x6'));var logger=require(_0x3e77('0x7'))('zoho');config[_0x3e77('0x8')]=_[_0x3e77('0x9')](config[_0x3e77('0x8')],{'host':_0x3e77('0xa'),'port':0x18eb});var io=require(_0x3e77('0xb'))(new Redis(config[_0x3e77('0x8')]));function emit(_0x4244af,_0x22bf10,_0x15df10){io['to'](_0x4244af)[_0x3e77('0xc')](_0x22bf10,_0x15df10);}function request(_0x272f48){logger['debug']('[HTTP]',JSON[_0x3e77('0xd')](_0x272f48));return rp(_0x272f48);}function getCustomFields(_0xf1c2f3,_0x32d620){var _0x16a3b3={};if(_0xf1c2f3[_0x3e77('0xe')]>0x0){_['forEach'](_0xf1c2f3,function(_0x3ced15){if(_['includes'](['string',_0x3e77('0xf')],_0x3ced15['type'])&&_0x3ced15['idField']){_0x16a3b3[_0x3ced15[_0x3e77('0x10')]]=_0x3ced15[_0x3e77('0x11')][_0x3e77('0x12')]();}else if(_0x3ced15['type']===_0x3e77('0x13')&&_0x3ced15['variableName']&&_0x3ced15[_0x3e77('0x10')]&&_0x32d620[_0x3ced15[_0x3e77('0x14')]]){_0x16a3b3[_0x3ced15['idField']]=_0x32d620[_0x3ced15[_0x3e77('0x14')]][_0x3e77('0x12')]();}else if(_0x3ced15[_0x3e77('0x15')]===_0x3e77('0x16')&&_0x3ced15[_0x3e77('0x17')]&&_0x3ced15[_0x3e77('0x17')]['name']&&_0x3ced15[_0x3e77('0x10')]&&_0x32d620[_0x3ced15[_0x3e77('0x17')][_0x3e77('0x18')][_0x3e77('0x19')]()]){_0x16a3b3[_0x3ced15['idField']]=_0x32d620[_0x3ced15['Variable'][_0x3e77('0x18')]['toLowerCase']()][_0x3e77('0x12')]();}});}return _0x16a3b3;}function getName(_0x339acf){if(_0x339acf[_0x3e77('0x1a')]('\x20')>0x0){var _0x1544bf=_0x339acf[_0x3e77('0x1b')](/ (.+)/);if(_0x1544bf[0x1]){return _0x1544bf;}}return[_0x339acf,_0x339acf];}var accountsTokens={};function getAccessToken(_0x19c4e1){return new Promise(function(_0x4b2101,_0x470045){if(!_[_0x3e77('0x1c')](accountsTokens[_0x19c4e1['id']])&&!_[_0x3e77('0x1c')](accountsTokens[_0x19c4e1['id']][_0x3e77('0x1d')])){if(moment()[_0x3e77('0x1e')](accountsTokens[_0x19c4e1['id']][_0x3e77('0x1f')])){_0x4b2101(accountsTokens[_0x19c4e1['id']][_0x3e77('0x1d')]);}}var _0x11cc27;switch(_0x19c4e1['zone']){case'US':_0x11cc27=_0x3e77('0x20');break;case'AU':_0x11cc27=_0x3e77('0x21');break;case'EU':_0x11cc27=_0x3e77('0x22');break;case'IN':_0x11cc27=_0x3e77('0x23');break;case'CN':_0x11cc27='https://accounts.zoho.com.cn';break;default:_0x11cc27=_0x3e77('0x22');break;}var _0x320144={'method':_0x3e77('0x24'),'uri':_0x11cc27+_0x3e77('0x25'),'qs':{'refresh_token':_0x19c4e1[_0x3e77('0x26')],'client_id':_0x19c4e1[_0x3e77('0x27')],'client_secret':_0x19c4e1[_0x3e77('0x28')],'grant_type':_0x3e77('0x29')},'json':!![]};return rp(_0x320144)[_0x3e77('0x2a')](function(_0x7ab4d1){accountsTokens[_0x19c4e1['id']]={'access_token':_0x7ab4d1[_0x3e77('0x1d')],'expires_in':moment()[_0x3e77('0x2b')](_0x7ab4d1['expires_in'],_0x3e77('0x2c'))};_0x4b2101(_0x7ab4d1[_0x3e77('0x1d')]);})['catch'](function(_0x581719){logger[_0x3e77('0x2d')](_0x3e77('0x2e'),_0x581719[_0x3e77('0x2f')]);_0x470045(_0x581719);});});}function getUser(_0x453385,_0x563870,_0x36cb10,_0x4991a9){logger[_0x3e77('0x30')](_0x3e77('0x31'));return request({'method':_0x3e77('0x32'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/users',_0x563870),'qs':{'type':_0x3e77('0x33')},'headers':{'Authorization':_0x3e77('0x34')+_0x453385},'json':!![]})[_0x3e77('0x2a')](function(_0x1a4fb9){if(_0x1a4fb9[_0x3e77('0x35')]){var _0x7c3a3c=-0x1;if(_[_0x3e77('0x36')](_0x1a4fb9['users'])){if(!_[_0x3e77('0x1c')](_0x4991a9)){_0x7c3a3c=_[_0x3e77('0x37')](_0x1a4fb9['users'],function(_0x3f2647){return _0x3f2647[_0x3e77('0x38')]===_0x4991a9;});}if(_0x7c3a3c>=0x0){logger[_0x3e77('0x30')]('Agent\x20found!');}else{logger[_0x3e77('0x30')](_0x3e77('0x39'));_0x7c3a3c=_[_0x3e77('0x37')](_0x1a4fb9[_0x3e77('0x35')],function(_0x107025){return _0x107025[_0x3e77('0x3a')][_0x3e77('0x18')]==='Administrator';});}return _0x1a4fb9[_0x3e77('0x35')][_0x7c3a3c];}else{if(_0x1a4fb9[_0x3e77('0x3b')][_0x3e77('0x3a')][_0x3e77('0x18')]==='Administrator'){logger[_0x3e77('0x30')](_0x3e77('0x39'));user=_0x1a4fb9[_0x3e77('0x3b')];return user;}else{logger[_0x3e77('0x2d')](_0x3e77('0x3c'),JSON['stringify'](_0x1a4fb9));throw new Error(_0x3e77('0x3d')+JSON[_0x3e77('0xd')](_0x1a4fb9));}}}else{logger['error'](_0x3e77('0x3c'),JSON[_0x3e77('0xd')](_0x1a4fb9));throw new Error(_0x3e77('0x3d')+JSON[_0x3e77('0xd')](_0x1a4fb9));}})[_0x3e77('0x3e')](function(_0x38a31d){console[_0x3e77('0x2d')](_0x38a31d);});}function getZohoUser(_0x29790e,_0x260e31){return new BPromise(function(_0x445045,_0x14e0ad){request(_0x29790e)['then'](function(_0x2a4352){var _0x178a3e=null;if(_0x2a4352){_0x178a3e=_0x2a4352[_0x3e77('0x3f')][0x0];_0x178a3e['enduserType']=_0x260e31;}_0x445045(_0x178a3e);})[_0x3e77('0x3e')](function(_0x3f49bc){_0x14e0ad(_0x3f49bc);});});}function createEndUser(_0xdf04ec,_0x18a3f5,_0x19facc,_0x278583,_0x39894b,_0x53b630){var _0x19facc=getName(_0x19facc);return request({'method':_0x3e77('0x24'),'uri':_0x3e77('0x40')+_0x18a3f5+_0x3e77('0x41')+_[_0x3e77('0x42')](_0x53b630[_0x3e77('0x43')])+'s','body':{'data':[{'Last_Name':_0x19facc[0x1],'First_Name':_0x19facc[0x0],'Phone':_0x278583,'Owner':{'name':!_[_0x3e77('0x1c')](_0x39894b['role'][_0x3e77('0x18')])?_0x39894b['role'][_0x3e77('0x18')]:!_[_0x3e77('0x1c')](_0x39894b[_0x3e77('0x44')])?_0x39894b[_0x3e77('0x44')]+'\x20'+_0x39894b[_0x3e77('0x45')]:_0x39894b['last_name'],'id':_0x39894b['id']}}]},'headers':{'Authorization':_0x3e77('0x34')+_0xdf04ec},'json':!![]})['then'](function(_0x3f2816){if(_0x3f2816&&_0x3f2816[_0x3e77('0x3f')][0x0][_0x3e77('0x46')]===_0x3e77('0x47')){var _0x155210=_0x3f2816[_0x3e77('0x3f')][0x0]['details'];_0x155210['enduserType']=_[_0x3e77('0x42')](_0x53b630[_0x3e77('0x43')])+'s';return _0x155210;}logger[_0x3e77('0x2d')](_0x3e77('0x3c'),JSON[_0x3e77('0xd')](data));throw new Error(_0x3e77('0x48')+JSON['stringify'](data));})['catch'](function(_0x191bda){console[_0x3e77('0x49')](_0x3e77('0x4a'),_0x191bda);});}function getEndUser(_0x215302,_0x36a912,_0x8339e7,_0x12266d,_0xd2da09,_0x1d5adc,_0x539095){var _0xf17c8d={'method':_0x3e77('0x32'),'uri':'','headers':{'Authorization':_0x3e77('0x34')+_0x215302},'json':!![]};switch(_0x539095[_0x3e77('0x4b')]){case _0x3e77('0x4c'):_0xf17c8d['uri']=_0x3e77('0x40')+_0x36a912+_0x3e77('0x4d')+_0xd2da09+'))';return getZohoUser(_0xf17c8d,_0x3e77('0x4e'))[_0x3e77('0x2a')](function(_0x379dea){if(_0x379dea)return _0x379dea;_0xf17c8d[_0x3e77('0x4f')]=_0x3e77('0x40')+_0x36a912+_0x3e77('0x50')+_0xd2da09+'))';return getZohoUser(_0xf17c8d,_0x3e77('0x51'))[_0x3e77('0x2a')](function(_0x598971){if(_0x598971)return _0x598971;if(_0x539095[_0x3e77('0x43')]!=_0x3e77('0x52')){return createEndUser(_0x215302,_0x36a912,_0x12266d,_0xd2da09,_0x1d5adc,_0x539095);}else{return{};}});});break;case _0x3e77('0x53'):_0xf17c8d[_0x3e77('0x4f')]='https://www.zohoapis.'+_0x36a912+_0x3e77('0x4d')+_0xd2da09+'))';return getZohoUser(_0xf17c8d,_0x3e77('0x4e'))[_0x3e77('0x2a')](function(_0x5ab506){if(_0x5ab506)return _0x5ab506;if(_0x539095[_0x3e77('0x43')]!=_0x3e77('0x52')){return createEndUser(_0x215302,_0x36a912,_0x12266d,_0xd2da09,_0x1d5adc,_0x539095);}else{return{};}});break;case _0x3e77('0x54'):_0xf17c8d[_0x3e77('0x4f')]=_0x3e77('0x40')+_0x36a912+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0xd2da09+'))';return getZohoUser(_0xf17c8d,_0x3e77('0x51'))[_0x3e77('0x2a')](function(_0xb95280){if(_0xb95280)return _0xb95280;if(_0x539095[_0x3e77('0x43')]!=_0x3e77('0x52')){return createEndUser(_0x215302,_0x36a912,_0x12266d,_0xd2da09,_0x1d5adc,_0x539095);}else{return{};}});break;}}function getCall(_0x30c4ea,_0xaa6983,_0x570990,_0xa849d1,_0x52074d,_0xdf50fa,_0x234f1a,_0x23de8b){logger[_0x3e77('0x30')](_0x3e77('0x55'));var _0x18ef01={};_0x18ef01[_0x3e77('0x56')]={'name':!_[_0x3e77('0x1c')](_0xa849d1[_0x3e77('0x57')]['name'])&&!_[_0x3e77('0x1c')](_0xa849d1[_0x3e77('0x3a')][_0x3e77('0x18')])&&_0xa849d1[_0x3e77('0x3a')][_0x3e77('0x18')]===_0x3e77('0x58')?_0xa849d1[_0x3e77('0x57')][_0x3e77('0x18')]:!_[_0x3e77('0x1c')](_0xa849d1[_0x3e77('0x44')])?_0xa849d1[_0x3e77('0x44')]+'\x20'+_0xa849d1['last_name']:_0xa849d1[_0x3e77('0x45')],'id':_0xa849d1['id']};_0x18ef01['Subject']=intUtil[_0x3e77('0x59')](_0xdf50fa['Subjects'],_0x234f1a,'\x20');_0x18ef01[_0x3e77('0x5a')]=intUtil[_0x3e77('0x59')](_0xdf50fa[_0x3e77('0x5b')],_0x234f1a,'\x0a');if(_0x52074d[_0x3e77('0x5c')]===_0x3e77('0x4e')){_0x18ef01[_0x3e77('0x5d')]={'name':!_[_0x3e77('0x1c')](_0x52074d['Full_Name'])?_0x52074d['Full_Name']:!_[_0x3e77('0x1c')](_0x52074d['First_Name'])?_0x52074d[_0x3e77('0x5e')]+'\x20'+_0x52074d[_0x3e77('0x5f')]:_0x52074d['Last_Name'],'id':_0x52074d['id']};}if(_0x52074d[_0x3e77('0x5c')]===_0x3e77('0x51')){_0x18ef01[_0x3e77('0x60')]={'name':!_[_0x3e77('0x1c')](_0x52074d[_0x3e77('0x61')])?_0x52074d[_0x3e77('0x61')]:!_[_0x3e77('0x1c')](_0x52074d['First_Name'])?_0x52074d[_0x3e77('0x5e')]+'\x20'+_0x52074d[_0x3e77('0x5f')]:_0x52074d[_0x3e77('0x5f')],'id':_0x52074d['id']};_0x18ef01[_0x3e77('0x62')]=_[_0x3e77('0x42')](_0x52074d[_0x3e77('0x5c')]);}if(_0x234f1a[_0x3e77('0x63')]){_0x18ef01['Call_Duration']=moment['utc'](parseInt(_0x234f1a[_0x3e77('0x63')])*0x3e8)[_0x3e77('0x64')](_0x3e77('0x65'));}else if(_0x234f1a[_0x3e77('0x66')]&&_0x234f1a[_0x3e77('0x67')]){_0x18ef01[_0x3e77('0x68')]=moment[_0x3e77('0x69')](moment(_0x234f1a['endtime'],_0x3e77('0x6a'))[_0x3e77('0x6b')](moment(_0x234f1a[_0x3e77('0x6c')],'YYYY-MM-DDTHH:mm:ss')))['format'](_0x3e77('0x65'));}switch(_0x234f1a['lastevent']){case'called':_0x18ef01[_0x3e77('0x6d')]='Called';break;case _0x3e77('0x6e'):case _0x3e77('0x6f'):_0x18ef01[_0x3e77('0x6d')]=_0x3e77('0x70');break;case'rejected':_0x18ef01[_0x3e77('0x6d')]=_0x3e77('0x71');break;case _0x3e77('0x72'):_0x18ef01['Call_Result']='Abandoned';break;case _0x3e77('0x73'):_0x18ef01[_0x3e77('0x6d')]=_0x3e77('0x74');default:}_0x18ef01[_0x3e77('0x75')]=(_0x23de8b===_0x3e77('0x76')?moment(_0x234f1a['starttime'])[_0x3e77('0x64')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x234f1a['agentcalledAt'])[_0x3e77('0x64')]('YYYY-MM-DDTHH:mm:ss'))||moment()['format']('YYYY-MM-DDTHH:mm:ss');_0x18ef01[_0x3e77('0x77')]=_0x23de8b||_0x3e77('0x78');_0x18ef01=_[_0x3e77('0x79')](_0x18ef01,getCustomFields(_0xdf50fa['Fields'],_0x234f1a));return request({'method':_0x3e77('0x24'),'uri':_0x3e77('0x40')+_0xaa6983+'/crm/v2/Calls','headers':{'Authorization':_0x3e77('0x34')+_0x30c4ea},'body':{'data':[_0x18ef01]},'json':!![]})[_0x3e77('0x2a')](function(_0x3c174a){if(_0x3c174a&&_0x3c174a[_0x3e77('0x3f')][0x0][_0x3e77('0x46')]===_0x3e77('0x47')){logger[_0x3e77('0x30')](_0x3e77('0x7a'));return{'id':_0x3c174a['data'][0x0]['details']['id']};}})[_0x3e77('0x3e')](function(_0x2f5b1c){logger[_0x3e77('0x30')](_0x3e77('0x7b'),_0x2f5b1c[_0x3e77('0x2f')]);console['log'](_0x3e77('0x7b'),_0x2f5b1c);});}exports[_0x3e77('0x7c')]=function(_0x10f587,_0x22e9bc,_0x449a9b,_0x302dd1,_0x4692a8,_0x34d937){var _0xfa0db4,_0x24d546,_0x44884f;_0x34d937[_0x3e77('0x7d')]=intUtil[_0x3e77('0x7e')](_0x34d937[_0x3e77('0x7d')]);_0x34d937[_0x3e77('0x7f')]=intUtil['stripTrailingSlash'](_0x34d937[_0x3e77('0x7f')]);if(_0x4692a8&&_0x4692a8[_0x3e77('0x80')]){logger[_0x3e77('0x30')](_0x3e77('0x81'),'Recording\x20is\x20enabled!');_0x22e9bc[_0x3e77('0x82')]=_0x34d937[_0x3e77('0x7f')]+_0x3e77('0x83')+_0x22e9bc[_0x3e77('0x84')]+_0x3e77('0x85')+md5(_0x22e9bc['uniqueid']);}else{_0x22e9bc['recordingURL']='';}var _0x2bd3fa=_0x34d937[_0x3e77('0x7d')]===_0x3e77('0x86')?'eu':_0x3e77('0x87');return getAccessToken(_0x34d937)['then'](function(_0x668ee9){_0x44884f=_0x668ee9;return getUser(_0x44884f,_0x2bd3fa,_0x34d937,_0x302dd1['email']);})[_0x3e77('0x2a')](function(_0x522c0c){_0xfa0db4=_0x522c0c;logger[_0x3e77('0x30')](_0x3e77('0x88'),_0xfa0db4['id']);return getEndUser(_0x44884f,_0x2bd3fa,_0x34d937,_0x22e9bc['calleridname'],_0x22e9bc[_0x3e77('0x89')],_0xfa0db4,_0x449a9b);})[_0x3e77('0x2a')](function(_0x56110b){_0x24d546=_0x56110b;return getCall(_0x44884f,_0x2bd3fa,_0x34d937,_0xfa0db4,_0x24d546,_0x449a9b,_0x22e9bc,_0x3e77('0x78'));})['then'](function(_0x553da6){if(_0x553da6){logger[_0x3e77('0x30')]('The\x20Call\x20ID\x20is:',_0x553da6['id']);logger[_0x3e77('0x30')]('[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3e77('0x64')](_0x3e77('0x8a'),_0x302dd1[_0x3e77('0x18')]),_0x3e77('0x8b'),{'uri':_0x3e77('0x8c')+_0x34d937[_0x3e77('0x7d')]+_0x3e77('0x8d')+_0x553da6['id']});}})[_0x3e77('0x3e')](function(_0x10c9ef){logger[_0x3e77('0x2d')](_0x3e77('0x81'),JSON[_0x3e77('0xd')](_0x10c9ef));});};exports[_0x3e77('0x76')]=function(_0x3b2ae0,_0x2b33a2,_0x4386a8,_0x24566a,_0x2128d1,_0x5c2031,_0x37efd1){var _0x341643,_0x74c95f,_0xa03927;_0x5c2031[_0x3e77('0x7d')]=intUtil['stripTrailingSlash'](_0x5c2031[_0x3e77('0x7d')]);_0x5c2031[_0x3e77('0x7f')]=intUtil[_0x3e77('0x7e')](_0x5c2031[_0x3e77('0x7f')]);if(_0x37efd1&&_0x37efd1[_0x3e77('0x8e')]&&_0x37efd1[_0x3e77('0x8e')]!==_0x3e77('0x8f')){logger[_0x3e77('0x30')](_0x3e77('0x90'),_0x3e77('0x91'));_0x2b33a2['recordingURL']=_0x5c2031['serverUrl']+_0x3e77('0x83')+_0x2b33a2[_0x3e77('0x84')]+'/downloads?type=uniqueid&token='+md5(_0x2b33a2[_0x3e77('0x84')]);}var _0x50b91e=_0x5c2031[_0x3e77('0x7d')]==='zoho.eu'?'eu':_0x3e77('0x87');return getAccessToken(_0x5c2031)['then'](function(_0x25b250){_0xa03927=_0x25b250;return getUser(_0xa03927,_0x50b91e,_0x5c2031,_0x24566a[_0x3e77('0x38')]);})[_0x3e77('0x2a')](function(_0xba0f88){_0x341643=_0xba0f88;logger[_0x3e77('0x30')](_0x3e77('0x88'),_0x341643['id']);return getEndUser(_0xa03927,_0x50b91e,_0x5c2031,_0x2b33a2['destcalleridname'],_0x2b33a2[_0x3e77('0x92')],_0x341643,_0x4386a8);})['then'](function(_0x2ee298){_0x74c95f=_0x2ee298;return getCall(_0xa03927,_0x50b91e,_0x5c2031,_0x341643,_0x74c95f,_0x4386a8,_0x2b33a2,_0x3e77('0x93'));})['then'](function(_0x1b1e0a){if(_0x1b1e0a){logger[_0x3e77('0x30')](_0x3e77('0x94'),_0x1b1e0a['id']);logger[_0x3e77('0x30')](_0x3e77('0x90'),_0x3e77('0x95'));emit(util[_0x3e77('0x64')]('user:%s',_0x24566a[_0x3e77('0x18')]),_0x3e77('0x8b'),{'uri':_0x3e77('0x8c')+_0x5c2031['host']+_0x3e77('0x8d')+_0x1b1e0a['id']});}})[_0x3e77('0x3e')](function(_0x3cad96){logger[_0x3e77('0x2d')](_0x3e77('0x90'),JSON[_0x3e77('0xd')](_0x3cad96));});};exports[_0x3e77('0x96')]=function(_0x1f76c2,_0xd3c71b,_0x696466,_0x199312,_0x4e287e,_0x29ce8d){var _0x494ac3,_0x510cf6,_0x1c1965;_0x29ce8d['host']=intUtil[_0x3e77('0x7e')](_0x29ce8d['host']);_0x29ce8d[_0x3e77('0x7f')]=intUtil[_0x3e77('0x7e')](_0x29ce8d[_0x3e77('0x7f')]);if(_0x4e287e&&_0x4e287e[_0x3e77('0x80')]){logger[_0x3e77('0x30')]('['+_0xd3c71b[_0x3e77('0x97')][_0x3e77('0x98')]()+']',_0x3e77('0x91'));_0xd3c71b[_0x3e77('0x82')]=_0x29ce8d['serverUrl']+'/api/voice/recordings/'+_0xd3c71b[_0x3e77('0x84')]+'/downloads?type=uniqueid&token='+md5(_0xd3c71b[_0x3e77('0x84')]);}else{_0xd3c71b[_0x3e77('0x82')]='';}var _0x5132ca=_0x29ce8d['host']===_0x3e77('0x86')?'eu':_0x3e77('0x87');return getAccessToken(_0x29ce8d)['then'](function(_0x25aa11){_0x1c1965=_0x25aa11;return getUser(_0x1c1965,_0x5132ca,_0x29ce8d);})[_0x3e77('0x2a')](function(_0x173c5d){_0x494ac3=_0x173c5d;logger['info'](_0x3e77('0x88'),_0x494ac3['id']);return getEndUser(_0x1c1965,_0x5132ca,_0x29ce8d,_0xd3c71b['calleridname'],_0xd3c71b['calleridnum'],_0x494ac3,_0x696466);})['then'](function(_0x2df93f){_0x510cf6=_0x2df93f;return getCall(_0x1c1965,_0x5132ca,_0x29ce8d,_0x494ac3,_0x510cf6,_0x696466,_0xd3c71b,_0x3e77('0x78'));})[_0x3e77('0x2a')](function(_0x321fe3){if(_0x321fe3){logger[_0x3e77('0x30')](_0x3e77('0x94'),_0x321fe3['id']);}})[_0x3e77('0x3e')](function(_0x38455e){logger['error']('['+_0xd3c71b[_0x3e77('0x97')][_0x3e77('0x98')]()+']',JSON[_0x3e77('0xd')](_0x38455e));});};
\ No newline at end of file
index f4b50ed..9d1b06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7b3=['info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','mustache','../../../../config/logger','exec','data2','data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0xa7b3,0x86));var _0x3a7b=function(_0x2f4014,_0x2231c5){_0x2f4014=_0x2f4014-0x0;var _0x595241=_0xa7b3[_0x2f4014];return _0x595241;};'use strict';var util=require('util');var sh=require(_0x3a7b('0x0'));var Mustache=require(_0x3a7b('0x1'));var logger=require(_0x3a7b('0x2'))('trigger');exports[_0x3a7b('0x3')]=function(_0x5e2a3c,_0x5e82b9){var _0x2167ec=_0x5e2a3c[_0x3a7b('0x4')]?_0x5e2a3c[_0x3a7b('0x4')]:'Script';var _0x14979e=_0x5e2a3c[_0x3a7b('0x5')]?Mustache[_0x3a7b('0x6')](_0x5e2a3c[_0x3a7b('0x5')],_0x5e82b9):_0x5e82b9;sh[_0x3a7b('0x3')](_0x14979e,function(_0x239957,_0x162ae6,_0x12eb32){if(_0x239957!==0x0){logger[_0x3a7b('0x7')](util[_0x3a7b('0x8')](_0x3a7b('0x9'),_0x2167ec,_0x14979e,_0x239957,_0x12eb32));}else{logger[_0x3a7b('0xa')](util[_0x3a7b('0x8')](_0x3a7b('0xb'),_0x2167ec,_0x14979e,_0x162ae6));}});};
\ No newline at end of file
+var _0x377e=['exec','data2','Script','data3','render','error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','../../../../config/logger','trigger'];(function(_0x1e6db1,_0xb90700){var _0x55e924=function(_0x353c27){while(--_0x353c27){_0x1e6db1['push'](_0x1e6db1['shift']());}};_0x55e924(++_0xb90700);}(_0x377e,0x14e));var _0xe377=function(_0x3dc587,_0x2ebc6c){_0x3dc587=_0x3dc587-0x0;var _0x29f93a=_0x377e[_0x3dc587];return _0x29f93a;};'use strict';var util=require(_0xe377('0x0'));var sh=require('shelljs');var Mustache=require(_0xe377('0x1'));var logger=require(_0xe377('0x2'))(_0xe377('0x3'));exports[_0xe377('0x4')]=function(_0x372b92,_0x37e149){var _0x553ae9=_0x372b92[_0xe377('0x5')]?_0x372b92['data2']:_0xe377('0x6');var _0x1bb3d3=_0x372b92[_0xe377('0x7')]?Mustache[_0xe377('0x8')](_0x372b92[_0xe377('0x7')],_0x37e149):_0x37e149;sh[_0xe377('0x4')](_0x1bb3d3,function(_0x3056e1,_0x2036d7,_0xfb3062){if(_0x3056e1!==0x0){logger[_0xe377('0x9')](util[_0xe377('0xa')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x553ae9,_0x1bb3d3,_0x3056e1,_0xfb3062));}else{logger[_0xe377('0xb')](util['format'](_0xe377('0xc'),_0x553ae9,_0x1bb3d3,_0x2036d7));}});};
\ No newline at end of file
index e7d1375..d8936db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fb=['data6','error','DELETE','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','util','lodash','mustache','../../../../config/logger','exec','data1','toUpperCase','data2','data5','number','headers','parse','render'];(function(_0x3eb0a6,_0x12b35d){var _0x1c58f2=function(_0x4917ec){while(--_0x4917ec){_0x3eb0a6['push'](_0x3eb0a6['shift']());}};_0x1c58f2(++_0x12b35d);}(_0xa3fb,0x1b9));var _0xba3f=function(_0x5d14ad,_0x2d17b9){_0x5d14ad=_0x5d14ad-0x0;var _0x5cb422=_0xa3fb[_0x5d14ad];return _0x5cb422;};'use strict';var rp=require(_0xba3f('0x0'));var util=require(_0xba3f('0x1'));var _=require(_0xba3f('0x2'));var Mustache=require(_0xba3f('0x3'));var logger=require(_0xba3f('0x4'))('trigger');exports[_0xba3f('0x5')]=function(_0x427b1e,_0x4c49b3){var _0x36f3ab,_0x24620d;var _0x521d4d={'method':_0x427b1e[_0xba3f('0x6')][_0xba3f('0x7')](),'uri':Mustache['render'](_0x427b1e[_0xba3f('0x8')],_0x4c49b3),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x427b1e[_0xba3f('0x9')])===_0xba3f('0xa')&&parseInt(_0x427b1e[_0xba3f('0x9')])>=0x1&&parseInt(_0x427b1e[_0xba3f('0x9')])<=0xa?parseInt(_0x427b1e[_0xba3f('0x9')])*0x3e8:0x5*0x3e8};try{_0x521d4d[_0xba3f('0xb')]=_0x427b1e['data6']?JSON[_0xba3f('0xc')](Mustache[_0xba3f('0xd')](_0x427b1e[_0xba3f('0xe')],_0x4c49b3)):{};}catch(_0x2f07b5){logger[_0xba3f('0xf')](_0x2f07b5['stack']);}switch(_0x427b1e[_0xba3f('0x6')][_0xba3f('0x7')]()){case'GET':case _0xba3f('0x10'):_0x36f3ab=null;_0x521d4d['qs']=_0x4c49b3;break;case _0xba3f('0x11'):case _0xba3f('0x12'):if(_0x427b1e[_0xba3f('0x13')]){try{_0x36f3ab=JSON[_0xba3f('0xc')](Mustache[_0xba3f('0xd')](_0x427b1e[_0xba3f('0x13')],_0x4c49b3));_0x521d4d[_0xba3f('0x14')]=_0x36f3ab;}catch(_0x3056f8){logger['error'](_0x3056f8['stack']);logger[_0xba3f('0xf')](_0xba3f('0x15'));}}else{_0x36f3ab=_0x4c49b3;_0x521d4d[_0xba3f('0x14')]=_0x36f3ab;}break;}logger[_0xba3f('0x16')](util[_0xba3f('0x17')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x427b1e[_0xba3f('0x6')],_0x427b1e[_0xba3f('0x8')],JSON['stringify'](_0x521d4d)));rp(_0x521d4d)[_0xba3f('0x18')](function(_0x2c06f7){_0x36f3ab=!_[_0xba3f('0x19')](_0x36f3ab)?_0xba3f('0x1a')+_0x36f3ab:'';_0x24620d=typeof _0x2c06f7['body']===_0xba3f('0x1b')?JSON[_0xba3f('0x1c')](_0x2c06f7[_0xba3f('0x14')]):_0x2c06f7[_0xba3f('0x14')];logger[_0xba3f('0x16')](util[_0xba3f('0x17')](_0xba3f('0x1d'),_0x427b1e[_0xba3f('0x6')],_0x427b1e['data2'],_0x2c06f7[_0xba3f('0x1e')],_0x24620d));})[_0xba3f('0x1f')](function(_0x3b6c3a){logger[_0xba3f('0xf')](util[_0xba3f('0x17')](_0xba3f('0x20'),_0x427b1e[_0xba3f('0x6')],_0x427b1e[_0xba3f('0x8')],_0x3b6c3a[_0xba3f('0x1e')],_0x3b6c3a[_0xba3f('0x21')],_0x3b6c3a[_0xba3f('0x22')]));});};
\ No newline at end of file
+var _0xa34d=['toUpperCase','render','data2','number','data5','headers','data6','parse','stack','data1','GET','DELETE','POST','data7','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil',',\x20request\x20body:\x20','body','object','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','request-promise','util','lodash','mustache','../../../../config/logger','exec'];(function(_0x7d9481,_0x1b9399){var _0x13f59a=function(_0x458e72){while(--_0x458e72){_0x7d9481['push'](_0x7d9481['shift']());}};_0x13f59a(++_0x1b9399);}(_0xa34d,0x135));var _0xda34=function(_0x161381,_0xd4e4d6){_0x161381=_0x161381-0x0;var _0x6b5803=_0xa34d[_0x161381];return _0x6b5803;};'use strict';var rp=require(_0xda34('0x0'));var util=require(_0xda34('0x1'));var _=require(_0xda34('0x2'));var Mustache=require(_0xda34('0x3'));var logger=require(_0xda34('0x4'))('trigger');exports[_0xda34('0x5')]=function(_0x46816b,_0x6211d9){var _0x4f2b3d,_0x5224aa;var _0x3bcd67={'method':_0x46816b['data1'][_0xda34('0x6')](),'uri':Mustache[_0xda34('0x7')](_0x46816b[_0xda34('0x8')],_0x6211d9),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x46816b['data5'])===_0xda34('0x9')&&parseInt(_0x46816b[_0xda34('0xa')])>=0x1&&parseInt(_0x46816b[_0xda34('0xa')])<=0xa?parseInt(_0x46816b[_0xda34('0xa')])*0x3e8:0x5*0x3e8};try{_0x3bcd67[_0xda34('0xb')]=_0x46816b[_0xda34('0xc')]?JSON[_0xda34('0xd')](Mustache[_0xda34('0x7')](_0x46816b['data6'],_0x6211d9)):{};}catch(_0x241519){logger['error'](_0x241519[_0xda34('0xe')]);}switch(_0x46816b[_0xda34('0xf')][_0xda34('0x6')]()){case _0xda34('0x10'):case _0xda34('0x11'):_0x4f2b3d=null;_0x3bcd67['qs']=_0x6211d9;break;case _0xda34('0x12'):case'PUT':if(_0x46816b['data7']){try{_0x4f2b3d=JSON[_0xda34('0xd')](Mustache['render'](_0x46816b[_0xda34('0x13')],_0x6211d9));_0x3bcd67['body']=_0x4f2b3d;}catch(_0x5d1b36){logger['error'](_0x5d1b36[_0xda34('0xe')]);logger[_0xda34('0x14')](_0xda34('0x15'));}}else{_0x4f2b3d=_0x6211d9;_0x3bcd67['body']=_0x4f2b3d;}break;}logger[_0xda34('0x16')](util['format'](_0xda34('0x17'),_0x46816b[_0xda34('0xf')],_0x46816b[_0xda34('0x8')],JSON['stringify'](_0x3bcd67)));rp(_0x3bcd67)[_0xda34('0x18')](function(_0x5eaeff){_0x4f2b3d=!_[_0xda34('0x19')](_0x4f2b3d)?_0xda34('0x1a')+_0x4f2b3d:'';_0x5224aa=typeof _0x5eaeff[_0xda34('0x1b')]===_0xda34('0x1c')?JSON['stringify'](_0x5eaeff[_0xda34('0x1b')]):_0x5eaeff['body'];logger[_0xda34('0x16')](util[_0xda34('0x1d')](_0xda34('0x1e'),_0x46816b[_0xda34('0xf')],_0x46816b['data2'],_0x5eaeff[_0xda34('0x1f')],_0x5224aa));})[_0xda34('0x20')](function(_0x33c9b3){logger[_0xda34('0x14')](util[_0xda34('0x1d')](_0xda34('0x21'),_0x46816b['data1'],_0x46816b['data2'],_0x33c9b3[_0xda34('0x1f')],_0x33c9b3[_0xda34('0x22')],_0x33c9b3['message']));});};
\ No newline at end of file
index e2f4338..1282868 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd281=['routing','Request','request','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x30a4da,_0x487dad){var _0x22b4ef=function(_0x1559ae){while(--_0x1559ae){_0x30a4da['push'](_0x30a4da['shift']());}};_0x22b4ef(++_0x487dad);}(_0xd281,0x101));var _0x1d28=function(_0x448056,_0x1e5d41){_0x448056=_0x448056-0x0;var _0x2471f6=_0xd281[_0x448056];return _0x2471f6;};'use strict';var jayson=require(_0x1d28('0x0'));var BPromise=require(_0x1d28('0x1'));var logger=require(_0x1d28('0x2'))(_0x1d28('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x1d28('0x4')]=function(_0x1f922d,_0x52b0c4){return new BPromise(function(_0x1404f4,_0x58992c){return client[_0x1d28('0x5')](_0x1f922d,_0x52b0c4)['then'](function(_0x2be055){logger[_0x1d28('0x6')](_0x1d28('0x7'),_0x1d28('0x3'),_0x1f922d,_0x52b0c4,_0x2be055);if(_0x2be055['error']){logger[_0x1d28('0x8')](_0x1d28('0x7'),'routing',_0x1f922d,_0x2be055[_0x1d28('0x8')][_0x1d28('0x9')],_0x52b0c4);return _0x58992c(_0x2be055[_0x1d28('0x8')][_0x1d28('0x9')]);}else{return _0x1404f4(_0x2be055[_0x1d28('0xa')]);}})[_0x1d28('0xb')](function(_0x5e2b98){logger[_0x1d28('0x8')](_0x1d28('0x7'),_0x1d28('0x3'),_0x1f922d,_0x5e2b98,_0x52b0c4);return _0x58992c(_0x5e2b98);});});};module[_0x1d28('0xc')]=client;
\ No newline at end of file
+var _0xc5ff=['then','debug','routing','error','rpc','message','result','jayson/promise','../../config/logger','client','http','Request','request'];(function(_0xd816f5,_0x43f441){var _0x3e2169=function(_0x11447f){while(--_0x11447f){_0xd816f5['push'](_0xd816f5['shift']());}};_0x3e2169(++_0x43f441);}(_0xc5ff,0x1a7));var _0xfc5f=function(_0x5dde5b,_0x1c2e75){_0x5dde5b=_0x5dde5b-0x0;var _0x255434=_0xc5ff[_0x5dde5b];return _0x255434;};'use strict';var jayson=require(_0xfc5f('0x0'));var BPromise=require('bluebird');var logger=require(_0xfc5f('0x1'))('routing');var client=jayson[_0xfc5f('0x2')][_0xfc5f('0x3')]({'port':0x2329});client[_0xfc5f('0x4')]=function(_0x225566,_0x3e2e7e){return new BPromise(function(_0x1f4211,_0x1aa9ca){return client[_0xfc5f('0x5')](_0x225566,_0x3e2e7e)[_0xfc5f('0x6')](function(_0x47b5cf){logger[_0xfc5f('0x7')]('rpc',_0xfc5f('0x8'),_0x225566,_0x3e2e7e,_0x47b5cf);if(_0x47b5cf[_0xfc5f('0x9')]){logger['error'](_0xfc5f('0xa'),'routing',_0x225566,_0x47b5cf[_0xfc5f('0x9')]['message'],_0x3e2e7e);return _0x1aa9ca(_0x47b5cf[_0xfc5f('0x9')][_0xfc5f('0xb')]);}else{return _0x1f4211(_0x47b5cf[_0xfc5f('0xc')]);}})['catch'](function(_0x2b4259){logger[_0xfc5f('0x9')](_0xfc5f('0xa'),_0xfc5f('0x8'),_0x225566,_0x2b4259,_0x3e2e7e);return _0x1aa9ca(_0x2b4259);});});};module['exports']=client;
\ No newline at end of file
index ca57aeb..62837be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa68c=['getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./rpc/setting','../../config/logger','email','resolve','then','initMailAccounts','refresh','mailAccounts','listen'];(function(_0x3af309,_0x33300f){var _0x25890f=function(_0x28f18e){while(--_0x28f18e){_0x3af309['push'](_0x3af309['shift']());}};_0x25890f(++_0x33300f);}(_0xa68c,0x75));var _0xca68=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa68c[_0x5c351c];return _0x26f3b3;};'use strict';var server=require(_0xca68('0x0'));var Realtime=require(_0xca68('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require('./rpc/mailAccount');var setting=require(_0xca68('0x2'));var logger=require(_0xca68('0x3'))(_0xca68('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xca68('0x5')]()[_0xca68('0x6')](mailAccount['getMailAccounts']())['then'](realtime[_0xca68('0x7')]())[_0xca68('0x6')](function(){email[_0xca68('0x8')](realtime[_0xca68('0x9')]);return realtime;});}function main(){return server[_0xca68('0xa')](realtime,email)[_0xca68('0x6')](function(){return initRealtime();})[_0xca68('0x6')](function(){return setting[_0xca68('0xb')]();})[_0xca68('0x6')](function(_0x23ad49){return setInterval(initRealtime,_0x23ad49[_0xca68('0xc')]*0x3e8);})[_0xca68('0xd')](function(_0x3e65ad){logger[_0xca68('0xe')](_0xca68('0xf'),_0x3e65ad);});}main();
\ No newline at end of file
+var _0x2310=['./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','resolve','then','getMailAccounts','mailAccounts','listen','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server'];(function(_0x119a35,_0x31ebb7){var _0x501c01=function(_0x5c763a){while(--_0x5c763a){_0x119a35['push'](_0x119a35['shift']());}};_0x501c01(++_0x31ebb7);}(_0x2310,0x95));var _0x0231=function(_0x5daac7,_0xb07c22){_0x5daac7=_0x5daac7-0x0;var _0xeb2d00=_0x2310[_0x5daac7];return _0xeb2d00;};'use strict';var server=require(_0x0231('0x0'));var Realtime=require(_0x0231('0x1'));var EmailChannel=require(_0x0231('0x2'));var mailAccount=require(_0x0231('0x3'));var setting=require(_0x0231('0x4'));var logger=require(_0x0231('0x5'))('email');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x0231('0x6')]()[_0x0231('0x7')](mailAccount[_0x0231('0x8')]())['then'](realtime['initMailAccounts']())[_0x0231('0x7')](function(){email['refresh'](realtime[_0x0231('0x9')]);return realtime;});}function main(){return server[_0x0231('0xa')](realtime,email)[_0x0231('0x7')](function(){return initRealtime();})[_0x0231('0x7')](function(){return setting['getSettings']();})[_0x0231('0x7')](function(_0x356d5a){return setInterval(initRealtime,_0x356d5a[_0x0231('0xb')]*0x3e8);})[_0x0231('0xc')](function(_0x3d969c){logger[_0x0231('0xd')](_0x0231('0xe'),_0x3d969c);});}main();
\ No newline at end of file
index 55d5108..7fddccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd4=['bind','handleImapEmail','end','handleImapEnd','handleImapError','disabled','emit','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','then','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','send','verifySmtp','verify','verified','Smtp','lodash','moment','bluebird','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','prototype','name','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','active','service','custom','provider','box','handleImapBox'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2cd4,0x1e0));var _0x42cd=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0x2cd4[_0x58e469];return _0x4c01c5;};'use strict';var _=require(_0x42cd('0x0'));var moment=require(_0x42cd('0x1'));var BPromise=require(_0x42cd('0x2'));var md5=require('md5');var Redis=require(_0x42cd('0x3'));var config=require(_0x42cd('0x4'));var logger=require(_0x42cd('0x5'))(_0x42cd('0x6'));config[_0x42cd('0x7')]=_[_0x42cd('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x42cd('0x9'))(new Redis(config[_0x42cd('0x7')]));var EmailImap=require(_0x42cd('0xa'));var EmailSmtp=require(_0x42cd('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x66e9cb){logger[_0x42cd('0xc')](_0x42cd('0xd'));this[_0x42cd('0xe')]=_0x66e9cb[_0x42cd('0xe')];this[_0x42cd('0xf')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0x42cd('0x10')]['emit']=function(_0x562662){var _0x53020b=this[_0x42cd('0xe')][_0x562662];var _0x34d9a7={'id':_0x53020b['id'],'name':_0x53020b[_0x42cd('0x11')],'key':_0x53020b['key'],'active':_0x53020b['active'],'Imap':{'status':_0x53020b[_0x42cd('0x12')][_0x42cd('0x13')],'messageStatus':_0x53020b['Imap'][_0x42cd('0x14')],'total':_0x53020b[_0x42cd('0x12')][_0x42cd('0x15')]}};if(_[_0x42cd('0x16')](md5Accounts[_0x562662])){md5Accounts[_0x562662]={};}var _0x57d566=md5(JSON[_0x42cd('0x17')](_0x34d9a7));if(md5Accounts[_0x562662][_0x42cd('0x18')]!==_0x57d566){md5Accounts[_0x562662]['md5']=_0x57d566;io['emit'](_0x42cd('0x19'),_0x34d9a7);}};EmailChannel['prototype'][_0x42cd('0x1a')]=function(_0x20c746){for(var _0x3231e4 in _0x20c746){if(_0x20c746['hasOwnProperty'](_0x3231e4)){if(_0x20c746[_0x3231e4][_0x42cd('0x12')]&&_0x20c746[_0x3231e4][_0x42cd('0x1b')]){var _0x44af33=_0x20c746[_0x3231e4][_0x42cd('0x12')];if(!_0x44af33[_0x42cd('0x1c')]&&_0x20c746[_0x3231e4]['provider']!==_0x42cd('0x1d'))_0x44af33['service']=_0x20c746[_0x3231e4][_0x42cd('0x1e')];if(!this[_0x42cd('0xf')]['hasOwnProperty'](_0x44af33['id'])){this[_0x42cd('0xf')][_0x44af33['id']]=new EmailImap(_0x44af33,_0x20c746[_0x3231e4][_0x42cd('0x6')]);this['imapAccounts'][_0x44af33['id']]['on'](_0x42cd('0x1f'),this[_0x42cd('0x20')][_0x42cd('0x21')](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on']('email',this[_0x42cd('0x22')][_0x42cd('0x21')](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on'](_0x42cd('0x23'),this[_0x42cd('0x24')]['bind'](this,_0x3231e4));this['imapAccounts'][_0x44af33['id']]['on']('error',this[_0x42cd('0x25')][_0x42cd('0x21')](this,_0x3231e4));}}else{if(_[_0x42cd('0x16')](this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')])){this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')]={};}this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')][_0x42cd('0x13')]=_0x42cd('0x26');this[_0x42cd('0xe')][_0x3231e4][_0x42cd('0x12')][_0x42cd('0x14')]='';this[_0x42cd('0x27')](_0x3231e4);}}}};EmailChannel[_0x42cd('0x10')][_0x42cd('0x20')]=function(_0x189193,_0x3e42ec){if(this['mailAccounts'][_0x189193]){this[_0x42cd('0xe')][_0x189193][_0x42cd('0x12')]['status']=_0x42cd('0x28');this['mailAccounts'][_0x189193][_0x42cd('0x12')][_0x42cd('0x14')]=_0x3e42ec[_0x42cd('0x11')];if(_0x3e42ec[_0x42cd('0x29')]){this[_0x42cd('0xe')][_0x189193][_0x42cd('0x12')][_0x42cd('0x15')]=_0x3e42ec[_0x42cd('0x29')][_0x42cd('0x15')];}return this[_0x42cd('0x27')](_0x189193);}};EmailChannel['prototype']['handleImapEmail']=function(_0x2f737b,_0x53e0f8){logger['info'](_0x42cd('0x2a'),_0x53e0f8['firstName'],_0x53e0f8[_0x42cd('0x2b')],_0x53e0f8[_0x42cd('0x2c')],_0x2f737b);if(this[_0x42cd('0xe')][_0x2f737b]){return mailAccount['notify'](_0x2f737b,_0x53e0f8)[_0x42cd('0x2d')](function(_0x506fa8){if(_0x506fa8){logger[_0x42cd('0xc')]('Mail\x20accepted\x20from\x20routing');}})[_0x42cd('0x2e')](function(_0x2d4278){logger[_0x42cd('0x2f')](_0x42cd('0x30'),JSON[_0x42cd('0x17')](_0x2d4278));});}};EmailChannel['prototype'][_0x42cd('0x24')]=function(_0x575637){if(this[_0x42cd('0xe')][_0x575637]&&this[_0x42cd('0xe')][_0x575637]['Imap']){if(this[_0x42cd('0xf')][this[_0x42cd('0xe')][_0x575637]['Imap']['id']]){delete this['imapAccounts'][this[_0x42cd('0xe')][_0x575637][_0x42cd('0x12')]['id']];}this['mailAccounts'][_0x575637][_0x42cd('0x12')][_0x42cd('0x31')]=moment();this[_0x42cd('0x27')](_0x575637);}};EmailChannel['prototype'][_0x42cd('0x25')]=function(_0xf8d717,_0xdc2c99){if(this[_0x42cd('0xe')][_0xf8d717]){this[_0x42cd('0xe')][_0xf8d717][_0x42cd('0x12')][_0x42cd('0x13')]=_0x42cd('0x2f');this[_0x42cd('0xe')][_0xf8d717][_0x42cd('0x12')][_0x42cd('0x14')]=_0xdc2c99;return this[_0x42cd('0x27')](_0xf8d717);}};EmailChannel['prototype'][_0x42cd('0x32')]=function(_0x1ff3a9,_0x1bd7c1){return this[_0x42cd('0x33')][_0x42cd('0x34')](_0x1ff3a9,_0x1bd7c1);};EmailChannel[_0x42cd('0x10')][_0x42cd('0x35')]=function(_0x47f3b8){var _0x485593=this;if(this[_0x42cd('0xe')][_0x47f3b8['id']]){if(_[_0x42cd('0x16')](this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp'])){this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp']={};}this[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x453b83,_0x476cc3){return _0x485593[_0x42cd('0x33')][_0x42cd('0x36')](_0x47f3b8)['then'](function(_0x4f3a3e){_0x485593['mailAccounts'][_0x47f3b8['id']]['Smtp'][_0x42cd('0x13')]=_0x42cd('0x37');_0x485593[_0x42cd('0xe')][_0x47f3b8['id']][_0x42cd('0x38')][_0x42cd('0x14')]='';_0x485593[_0x42cd('0x27')](_0x47f3b8['id']);_0x453b83(_0x4f3a3e);})[_0x42cd('0x2e')](function(_0x5aae56){_0x485593[_0x42cd('0xe')][_0x47f3b8['id']]['Smtp'][_0x42cd('0x13')]=_0x42cd('0x2f');_0x485593[_0x42cd('0xe')][_0x47f3b8['id']][_0x42cd('0x38')]['messageStatus']=_0x5aae56;_0x485593[_0x42cd('0x27')](_0x47f3b8['id']);_0x476cc3(_0x5aae56);});});}return this[_0x42cd('0x33')]['verify'](_0x47f3b8);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0x228d=['moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','./imap','./smtp','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','isNil','mailAccount:update','refresh','hasOwnProperty','custom','service','provider','box','handleImapBox','bind','handleImapEnd','error','status','disabled','connected','messageStatus','messages','total','firstName','lastName','from','notify','then','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapError','sendMail','verifySmtp','Smtp','verify','exports','lodash'];(function(_0x1c8fb1,_0xb39e81){var _0x57f8e8=function(_0x53cc03){while(--_0x53cc03){_0x1c8fb1['push'](_0x1c8fb1['shift']());}};_0x57f8e8(++_0xb39e81);}(_0x228d,0x1af));var _0xd228=function(_0x283b55,_0x279bee){_0x283b55=_0x283b55-0x0;var _0x192e58=_0x228d[_0x283b55];return _0x192e58;};'use strict';var _=require(_0xd228('0x0'));var moment=require(_0xd228('0x1'));var BPromise=require(_0xd228('0x2'));var md5=require(_0xd228('0x3'));var Redis=require(_0xd228('0x4'));var config=require(_0xd228('0x5'));var logger=require(_0xd228('0x6'))(_0xd228('0x7'));config[_0xd228('0x8')]=_[_0xd228('0x9')](config[_0xd228('0x8')],{'host':_0xd228('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd228('0x8')]));var EmailImap=require(_0xd228('0xb'));var EmailSmtp=require(_0xd228('0xc'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x2f65f6){logger[_0xd228('0xd')](_0xd228('0xe'));this[_0xd228('0xf')]=_0x2f65f6[_0xd228('0xf')];this[_0xd228('0x10')]={};this[_0xd228('0x11')]=new EmailSmtp();}EmailChannel[_0xd228('0x12')][_0xd228('0x13')]=function(_0xcc8b15){var _0x49aae9=this[_0xd228('0xf')][_0xcc8b15];var _0x587f4b={'id':_0x49aae9['id'],'name':_0x49aae9[_0xd228('0x14')],'key':_0x49aae9[_0xd228('0x15')],'active':_0x49aae9[_0xd228('0x16')],'Imap':{'status':_0x49aae9[_0xd228('0x17')]['status'],'messageStatus':_0x49aae9['Imap']['messageStatus'],'total':_0x49aae9[_0xd228('0x17')]['total']}};if(_[_0xd228('0x18')](md5Accounts[_0xcc8b15])){md5Accounts[_0xcc8b15]={};}var _0x473f04=md5(JSON['stringify'](_0x587f4b));if(md5Accounts[_0xcc8b15][_0xd228('0x3')]!==_0x473f04){md5Accounts[_0xcc8b15][_0xd228('0x3')]=_0x473f04;io['emit'](_0xd228('0x19'),_0x587f4b);}};EmailChannel[_0xd228('0x12')][_0xd228('0x1a')]=function(_0x1e77c5){for(var _0x39ff15 in _0x1e77c5){if(_0x1e77c5[_0xd228('0x1b')](_0x39ff15)){if(_0x1e77c5[_0x39ff15][_0xd228('0x17')]&&_0x1e77c5[_0x39ff15]['active']){var _0x4f3ec8=_0x1e77c5[_0x39ff15][_0xd228('0x17')];if(!_0x4f3ec8['service']&&_0x1e77c5[_0x39ff15]['provider']!==_0xd228('0x1c'))_0x4f3ec8[_0xd228('0x1d')]=_0x1e77c5[_0x39ff15][_0xd228('0x1e')];if(!this[_0xd228('0x10')]['hasOwnProperty'](_0x4f3ec8['id'])){this[_0xd228('0x10')][_0x4f3ec8['id']]=new EmailImap(_0x4f3ec8,_0x1e77c5[_0x39ff15]['email']);this[_0xd228('0x10')][_0x4f3ec8['id']]['on'](_0xd228('0x1f'),this[_0xd228('0x20')][_0xd228('0x21')](this,_0x39ff15));this['imapAccounts'][_0x4f3ec8['id']]['on'](_0xd228('0x7'),this['handleImapEmail'][_0xd228('0x21')](this,_0x39ff15));this[_0xd228('0x10')][_0x4f3ec8['id']]['on']('end',this[_0xd228('0x22')][_0xd228('0x21')](this,_0x39ff15));this[_0xd228('0x10')][_0x4f3ec8['id']]['on'](_0xd228('0x23'),this['handleImapError']['bind'](this,_0x39ff15));}}else{if(_[_0xd228('0x18')](this['mailAccounts'][_0x39ff15][_0xd228('0x17')])){this['mailAccounts'][_0x39ff15][_0xd228('0x17')]={};}this[_0xd228('0xf')][_0x39ff15][_0xd228('0x17')][_0xd228('0x24')]=_0xd228('0x25');this[_0xd228('0xf')][_0x39ff15][_0xd228('0x17')]['messageStatus']='';this[_0xd228('0x13')](_0x39ff15);}}}};EmailChannel[_0xd228('0x12')]['handleImapBox']=function(_0x10aa40,_0x3c4f61){if(this[_0xd228('0xf')][_0x10aa40]){this[_0xd228('0xf')][_0x10aa40][_0xd228('0x17')]['status']=_0xd228('0x26');this['mailAccounts'][_0x10aa40][_0xd228('0x17')][_0xd228('0x27')]=_0x3c4f61[_0xd228('0x14')];if(_0x3c4f61[_0xd228('0x28')]){this[_0xd228('0xf')][_0x10aa40][_0xd228('0x17')]['total']=_0x3c4f61[_0xd228('0x28')][_0xd228('0x29')];}return this[_0xd228('0x13')](_0x10aa40);}};EmailChannel['prototype']['handleImapEmail']=function(_0x257b45,_0xa3939a){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0xa3939a[_0xd228('0x2a')],_0xa3939a[_0xd228('0x2b')],_0xa3939a[_0xd228('0x2c')],_0x257b45);if(this[_0xd228('0xf')][_0x257b45]){return mailAccount[_0xd228('0x2d')](_0x257b45,_0xa3939a)[_0xd228('0x2e')](function(_0x10ed64){if(_0x10ed64){logger[_0xd228('0xd')]('Mail\x20accepted\x20from\x20routing');}})['catch'](function(_0x4f8cfe){logger[_0xd228('0x23')](_0xd228('0x2f'),JSON['stringify'](_0x4f8cfe));});}};EmailChannel[_0xd228('0x12')][_0xd228('0x22')]=function(_0x164aa3){if(this[_0xd228('0xf')][_0x164aa3]&&this[_0xd228('0xf')][_0x164aa3]['Imap']){if(this[_0xd228('0x10')][this[_0xd228('0xf')][_0x164aa3][_0xd228('0x17')]['id']]){delete this[_0xd228('0x10')][this[_0xd228('0xf')][_0x164aa3]['Imap']['id']];}this['mailAccounts'][_0x164aa3][_0xd228('0x17')]['lastSync']=moment();this[_0xd228('0x13')](_0x164aa3);}};EmailChannel[_0xd228('0x12')][_0xd228('0x30')]=function(_0x28b5dc,_0x53f878){if(this['mailAccounts'][_0x28b5dc]){this[_0xd228('0xf')][_0x28b5dc]['Imap'][_0xd228('0x24')]='error';this[_0xd228('0xf')][_0x28b5dc]['Imap'][_0xd228('0x27')]=_0x53f878;return this['emit'](_0x28b5dc);}};EmailChannel['prototype'][_0xd228('0x31')]=function(_0x353b08,_0x443d19){return this[_0xd228('0x11')]['send'](_0x353b08,_0x443d19);};EmailChannel[_0xd228('0x12')][_0xd228('0x32')]=function(_0x31129a){var _0x414963=this;if(this[_0xd228('0xf')][_0x31129a['id']]){if(_[_0xd228('0x18')](this['mailAccounts'][_0x31129a['id']][_0xd228('0x33')])){this['mailAccounts'][_0x31129a['id']][_0xd228('0x33')]={};}this['mailAccounts'][_0x31129a['id']][_0xd228('0x33')]['lastSync']=moment();return new BPromise(function(_0x302ebf,_0x4a4c9a){return _0x414963['smtp'][_0xd228('0x34')](_0x31129a)[_0xd228('0x2e')](function(_0x2665ef){_0x414963[_0xd228('0xf')][_0x31129a['id']][_0xd228('0x33')][_0xd228('0x24')]='verified';_0x414963[_0xd228('0xf')][_0x31129a['id']][_0xd228('0x33')][_0xd228('0x27')]='';_0x414963['emit'](_0x31129a['id']);_0x302ebf(_0x2665ef);})['catch'](function(_0xff1ccf){_0x414963['mailAccounts'][_0x31129a['id']][_0xd228('0x33')][_0xd228('0x24')]=_0xd228('0x23');_0x414963[_0xd228('0xf')][_0x31129a['id']]['Smtp'][_0xd228('0x27')]=_0xff1ccf;_0x414963[_0xd228('0x13')](_0x31129a['id']);_0x4a4c9a(_0xff1ccf);});});}return this[_0xd228('0x11')][_0xd228('0x34')](_0x31129a);};module[_0xd228('0x35')]=EmailChannel;
\ No newline at end of file
index 4b26b33..a269641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca4a=['end','handleEnd','error','handleError','connect','prototype','connTimeout','authTimeout','service','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','email','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit','handleCloseBox','readUnseen','search','UNSEEN','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','textCode','hasOwnProperty','upperFirst','lodash','imap','simpleParser','iconv','./utils','../../../config/logger','mailbox','getAccount','account','once','ready','handleReady','bind'];(function(_0x391ae8,_0x4f3377){var _0x2505da=function(_0x258ebf){while(--_0x258ebf){_0x391ae8['push'](_0x391ae8['shift']());}};_0x2505da(++_0x4f3377);}(_0xca4a,0x1cb));var _0xaca4=function(_0x40b7bb,_0x1fe9e6){_0x40b7bb=_0x40b7bb-0x0;var _0x225078=_0xca4a[_0x40b7bb];return _0x225078;};'use strict';var _=require(_0xaca4('0x0'));var util=require('util');var Imap=require(_0xaca4('0x1'));var simpleParser=require('mailparser')[_0xaca4('0x2')];var Iconv=require(_0xaca4('0x3'))['Iconv'];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xaca4('0x4'));var logger=require(_0xaca4('0x5'))('email');function EmailImap(_0x4bd91a,_0x50ba91){this[_0xaca4('0x6')]=_0x4bd91a[_0xaca4('0x6')];this['account']=this[_0xaca4('0x7')](_0x4bd91a,_0x50ba91);this[_0xaca4('0x1')]=new Imap(this[_0xaca4('0x8')]);this[_0xaca4('0x1')][_0xaca4('0x9')](_0xaca4('0xa'),this[_0xaca4('0xb')][_0xaca4('0xc')](this));this['imap']['once'](_0xaca4('0xd'),this[_0xaca4('0xe')]['bind'](this));this[_0xaca4('0x1')]['on'](_0xaca4('0xf'),this[_0xaca4('0x10')]['bind'](this));this[_0xaca4('0x1')][_0xaca4('0x11')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xaca4('0x12')][_0xaca4('0x7')]=function(_0x2bdf41,_0x5e2dbe){var _0x59b651={'connTimeout':_0x2bdf41[_0xaca4('0x13')]?_0x2bdf41[_0xaca4('0x13')]*0x3e8:0x2710,'authTimeout':_0x2bdf41['authTimeout']?_0x2bdf41[_0xaca4('0x14')]*0x3e8:0x1388};if(_0x2bdf41[_0xaca4('0x15')]){_0x59b651[_0xaca4('0x16')]=_0x2bdf41['user'];if(_0x2bdf41['modernAuthentication']){_0x59b651[_0xaca4('0x17')]=utils[_0xaca4('0x18')](_0x2bdf41[_0xaca4('0x19')][_0xaca4('0x1a')],_0x2bdf41[_0xaca4('0x16')]);}else{_0x59b651[_0xaca4('0x1b')]=_0x2bdf41[_0xaca4('0x1b')];}}else{if(_0x2bdf41[_0xaca4('0x1c')]){_0x59b651[_0xaca4('0x16')]=_0x2bdf41[_0xaca4('0x16')];_0x59b651[_0xaca4('0x1b')]=_0x2bdf41['password'];}}_0x59b651[_0xaca4('0x1d')]=_0x5e2dbe||_0x2bdf41[_0xaca4('0x16')]||_0xaca4('0x1e');_0x59b651[_0xaca4('0x1f')]=_0x2bdf41[_0xaca4('0x1f')];_0x59b651[_0xaca4('0x20')]=_0x2bdf41[_0xaca4('0x20')]||0x3e1;if(_0x2bdf41[_0xaca4('0x21')]){_0x59b651[_0xaca4('0x21')]=!![];}else{_0x59b651['tls']=![];_0x59b651[_0xaca4('0x22')]=_0xaca4('0x23');}return _0x59b651;};EmailImap[_0xaca4('0x12')][_0xaca4('0xb')]=function(){this['imap'][_0xaca4('0x24')](this[_0xaca4('0x6')],![],this[_0xaca4('0x25')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x25')]=function(_0x5a2fd1,_0x5909b9){if(_0x5a2fd1){this[_0xaca4('0x10')](_0x5a2fd1,!![]);}else{this[_0xaca4('0x26')]('box',_0x5909b9);this['readUnseen']();}};EmailImap[_0xaca4('0x12')][_0xaca4('0x27')]=function(_0xbad1ea){if(_0xbad1ea){this['handleError'](_0xbad1ea,!![]);}else{this[_0xaca4('0x1')]['end']();}};EmailImap[_0xaca4('0x12')][_0xaca4('0x28')]=function(){this[_0xaca4('0x1')][_0xaca4('0x29')]([_0xaca4('0x2a')],this['handleReadUnseen'][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')]['handleReadUnseen']=function(_0x3652b4,_0x572bbd){if(_0x3652b4){this[_0xaca4('0x10')](_0x3652b4,!![]);}else{if(_0x572bbd[_0xaca4('0x2b')]){try{var _0x3e1ff0=this[_0xaca4('0x1')][_0xaca4('0x2c')](_0x572bbd,{'bodies':'','markSeen':!![]});_0x3e1ff0['on'](_0xaca4('0x2d'),this[_0xaca4('0x2e')]['bind'](this));_0x3e1ff0[_0xaca4('0x9')](_0xaca4('0xf'),this[_0xaca4('0x2f')][_0xaca4('0xc')](this));_0x3e1ff0[_0xaca4('0x9')]('end',this[_0xaca4('0x30')][_0xaca4('0xc')](this));}catch(_0x338ba6){logger[_0xaca4('0xf')](_0x338ba6);}}else{this[_0xaca4('0x1')][_0xaca4('0x31')](!![],this[_0xaca4('0x27')][_0xaca4('0xc')](this));}}};EmailImap[_0xaca4('0x12')][_0xaca4('0x2e')]=function(_0x41ee56){_0x41ee56['on'](_0xaca4('0x32'),this[_0xaca4('0x33')][_0xaca4('0xc')](this));_0x41ee56[_0xaca4('0x9')]('attributes',this[_0xaca4('0x34')][_0xaca4('0xc')](this));_0x41ee56[_0xaca4('0x9')](_0xaca4('0xd'),this[_0xaca4('0x35')][_0xaca4('0xc')](this));};EmailImap['prototype']['handleMessageBody']=function(_0x57775f){simpleParser(_0x57775f,{'Iconv':Iconv},this[_0xaca4('0x36')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x34')]=function(){};EmailImap[_0xaca4('0x12')][_0xaca4('0x35')]=function(){};EmailImap[_0xaca4('0x12')]['handleSimpleParser']=function(_0x449549,_0x10c40b){if(_0x449549){logger[_0xaca4('0xf')](_0x449549);}else{var _0x3a836c=this;utils[_0xaca4('0x37')](this[_0xaca4('0x8')],_0x10c40b,function(_0x154432){_0x3a836c[_0xaca4('0x26')]('email',_0x154432);});}};EmailImap['prototype'][_0xaca4('0x30')]=function(){this[_0xaca4('0x1')][_0xaca4('0x31')](!![],this[_0xaca4('0x27')][_0xaca4('0xc')](this));};EmailImap[_0xaca4('0x12')][_0xaca4('0x2f')]=function(_0x28f8b0){this['handleError'](_0x28f8b0);this[_0xaca4('0x1')]['closeBox'](!![],this['handleCloseBox'][_0xaca4('0xc')](this));};EmailImap['prototype'][_0xaca4('0xe')]=function(){this[_0xaca4('0x26')](_0xaca4('0xd'));};EmailImap[_0xaca4('0x12')][_0xaca4('0x10')]=function(_0x12a2a0,_0x2bb536){logger[_0xaca4('0xf')]('handleError',this[_0xaca4('0x8')][_0xaca4('0x1d')],JSON['stringify'](_0x12a2a0));var _0x572189='';if(_0x12a2a0){if(_0x12a2a0[_0xaca4('0x38')]){_0x572189=_0x12a2a0[_0xaca4('0x38')];}else{for(var _0x2456b8 in _0x12a2a0){if(_0x12a2a0[_0xaca4('0x39')](_0x2456b8)){_0x572189+=_[_0xaca4('0x3a')](_0x2456b8)+':\x20'+_0x12a2a0[_0x2456b8]+'\x0a';}}}}if(_0x2bb536){this[_0xaca4('0x1')][_0xaca4('0xd')]();}else{this[_0xaca4('0x26')](_0xaca4('0xf'),_0x572189);this['emit']('end');}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x1342=['handleFetchError','handleFetchEnd','body','handleMessageBody','handleSimpleParser','handleMessageAttributes','handleMessageEnd','closeBox','handleEnd','textCode','hasOwnProperty','upperFirst','exports','lodash','imap','mailparser','simpleParser','iconv','Iconv','events','./utils','../../../config/logger','email','mailbox','account','getAccount','once','handleReady','bind','end','error','handleError','connect','inherits','prototype','authTimeout','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','host','port','tls','autotls','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message'];(function(_0x27fdb6,_0x3b4b68){var _0x2f2f31=function(_0x19299a){while(--_0x19299a){_0x27fdb6['push'](_0x27fdb6['shift']());}};_0x2f2f31(++_0x3b4b68);}(_0x1342,0x1b1));var _0x2134=function(_0x383c93,_0x254ae7){_0x383c93=_0x383c93-0x0;var _0x639f08=_0x1342[_0x383c93];return _0x639f08;};'use strict';var _=require(_0x2134('0x0'));var util=require('util');var Imap=require(_0x2134('0x1'));var simpleParser=require(_0x2134('0x2'))[_0x2134('0x3')];var Iconv=require(_0x2134('0x4'))[_0x2134('0x5')];var EventEmitter=require(_0x2134('0x6'))['EventEmitter'];var utils=require(_0x2134('0x7'));var logger=require(_0x2134('0x8'))(_0x2134('0x9'));function EmailImap(_0x48c91a,_0x1107df){this[_0x2134('0xa')]=_0x48c91a[_0x2134('0xa')];this[_0x2134('0xb')]=this[_0x2134('0xc')](_0x48c91a,_0x1107df);this[_0x2134('0x1')]=new Imap(this[_0x2134('0xb')]);this['imap'][_0x2134('0xd')]('ready',this[_0x2134('0xe')][_0x2134('0xf')](this));this['imap'][_0x2134('0xd')](_0x2134('0x10'),this['handleEnd'][_0x2134('0xf')](this));this['imap']['on'](_0x2134('0x11'),this[_0x2134('0x12')][_0x2134('0xf')](this));this[_0x2134('0x1')][_0x2134('0x13')]();}util[_0x2134('0x14')](EmailImap,EventEmitter);EmailImap[_0x2134('0x15')][_0x2134('0xc')]=function(_0x1fa8eb,_0x57d37a){var _0x4f9b59={'connTimeout':_0x1fa8eb['connTimeout']?_0x1fa8eb['connTimeout']*0x3e8:0x2710,'authTimeout':_0x1fa8eb['authTimeout']?_0x1fa8eb[_0x2134('0x16')]*0x3e8:0x1388};if(_0x1fa8eb['service']){_0x4f9b59[_0x2134('0x17')]=_0x1fa8eb[_0x2134('0x17')];if(_0x1fa8eb[_0x2134('0x18')]){_0x4f9b59[_0x2134('0x19')]=utils[_0x2134('0x1a')](_0x1fa8eb[_0x2134('0x1b')][_0x2134('0x1c')],_0x1fa8eb[_0x2134('0x17')]);}else{_0x4f9b59['password']=_0x1fa8eb[_0x2134('0x1d')];}}else{if(_0x1fa8eb[_0x2134('0x1e')]){_0x4f9b59[_0x2134('0x17')]=_0x1fa8eb[_0x2134('0x17')];_0x4f9b59[_0x2134('0x1d')]=_0x1fa8eb[_0x2134('0x1d')];}}_0x4f9b59[_0x2134('0x9')]=_0x57d37a||_0x1fa8eb[_0x2134('0x17')]||'anonymous@xcally.com';_0x4f9b59[_0x2134('0x1f')]=_0x1fa8eb['host'];_0x4f9b59['port']=_0x1fa8eb[_0x2134('0x20')]||0x3e1;if(_0x1fa8eb[_0x2134('0x21')]){_0x4f9b59[_0x2134('0x21')]=!![];}else{_0x4f9b59[_0x2134('0x21')]=![];_0x4f9b59[_0x2134('0x22')]='required';}return _0x4f9b59;};EmailImap['prototype'][_0x2134('0xe')]=function(){this['imap'][_0x2134('0x23')](this[_0x2134('0xa')],![],this[_0x2134('0x24')][_0x2134('0xf')](this));};EmailImap['prototype'][_0x2134('0x24')]=function(_0x3d5b4e,_0x460f28){if(_0x3d5b4e){this[_0x2134('0x12')](_0x3d5b4e,!![]);}else{this[_0x2134('0x25')](_0x2134('0x26'),_0x460f28);this[_0x2134('0x27')]();}};EmailImap[_0x2134('0x15')][_0x2134('0x28')]=function(_0x21b191){if(_0x21b191){this[_0x2134('0x12')](_0x21b191,!![]);}else{this['imap'][_0x2134('0x10')]();}};EmailImap[_0x2134('0x15')][_0x2134('0x27')]=function(){this[_0x2134('0x1')][_0x2134('0x29')]([_0x2134('0x2a')],this[_0x2134('0x2b')][_0x2134('0xf')](this));};EmailImap[_0x2134('0x15')]['handleReadUnseen']=function(_0x1909d5,_0x3f6f2d){if(_0x1909d5){this['handleError'](_0x1909d5,!![]);}else{if(_0x3f6f2d[_0x2134('0x2c')]){try{var _0x3a0939=this['imap'][_0x2134('0x2d')](_0x3f6f2d,{'bodies':'','markSeen':!![]});_0x3a0939['on'](_0x2134('0x2e'),this['handleFetchMessage']['bind'](this));_0x3a0939[_0x2134('0xd')]('error',this[_0x2134('0x2f')][_0x2134('0xf')](this));_0x3a0939[_0x2134('0xd')](_0x2134('0x10'),this[_0x2134('0x30')][_0x2134('0xf')](this));}catch(_0x12dc52){logger[_0x2134('0x11')](_0x12dc52);}}else{this[_0x2134('0x1')]['closeBox'](!![],this[_0x2134('0x28')]['bind'](this));}}};EmailImap[_0x2134('0x15')]['handleFetchMessage']=function(_0x11a0e7){_0x11a0e7['on'](_0x2134('0x31'),this['handleMessageBody'][_0x2134('0xf')](this));_0x11a0e7[_0x2134('0xd')]('attributes',this['handleMessageAttributes'][_0x2134('0xf')](this));_0x11a0e7[_0x2134('0xd')](_0x2134('0x10'),this['handleMessageEnd'][_0x2134('0xf')](this));};EmailImap[_0x2134('0x15')][_0x2134('0x32')]=function(_0xf31ec0){simpleParser(_0xf31ec0,{'Iconv':Iconv},this[_0x2134('0x33')][_0x2134('0xf')](this));};EmailImap[_0x2134('0x15')][_0x2134('0x34')]=function(){};EmailImap['prototype'][_0x2134('0x35')]=function(){};EmailImap[_0x2134('0x15')][_0x2134('0x33')]=function(_0x19c31d,_0x1f2f8d){if(_0x19c31d){logger[_0x2134('0x11')](_0x19c31d);}else{var _0x1a21f6=this;utils['parser'](this['account'],_0x1f2f8d,function(_0x39118f){_0x1a21f6[_0x2134('0x25')]('email',_0x39118f);});}};EmailImap[_0x2134('0x15')][_0x2134('0x30')]=function(){this[_0x2134('0x1')][_0x2134('0x36')](!![],this[_0x2134('0x28')][_0x2134('0xf')](this));};EmailImap['prototype'][_0x2134('0x2f')]=function(_0x41a5b7){this[_0x2134('0x12')](_0x41a5b7);this[_0x2134('0x1')][_0x2134('0x36')](!![],this['handleCloseBox'][_0x2134('0xf')](this));};EmailImap[_0x2134('0x15')][_0x2134('0x37')]=function(){this[_0x2134('0x25')](_0x2134('0x10'));};EmailImap['prototype'][_0x2134('0x12')]=function(_0x36e28a,_0x261125){logger[_0x2134('0x11')](_0x2134('0x12'),this[_0x2134('0xb')]['email'],JSON['stringify'](_0x36e28a));var _0x2ce220='';if(_0x36e28a){if(_0x36e28a[_0x2134('0x38')]){_0x2ce220=_0x36e28a[_0x2134('0x38')];}else{for(var _0x3dbaa4 in _0x36e28a){if(_0x36e28a[_0x2134('0x39')](_0x3dbaa4)){_0x2ce220+=_[_0x2134('0x3a')](_0x3dbaa4)+':\x20'+_0x36e28a[_0x3dbaa4]+'\x0a';}}}}if(_0x261125){this[_0x2134('0x1')][_0x2134('0x10')]();}else{this[_0x2134('0x25')](_0x2134('0x11'),_0x2ce220);this['emit'](_0x2134('0x10'));}};module[_0x2134('0x3b')]=EmailImap;
\ No newline at end of file
index 9124ebd..d284135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e95=['prototype','send','createTransport','use','compile','toString','verify','Not\x20verifired','nodemailer','nodemailer-plugin-inline-base64'];(function(_0x3f9056,_0x31c27f){var _0x41c080=function(_0x2e80cf){while(--_0x2e80cf){_0x3f9056['push'](_0x3f9056['shift']());}};_0x41c080(++_0x31c27f);}(_0x6e95,0x94));var _0x56e9=function(_0x1a08ad,_0x21d209){_0x1a08ad=_0x1a08ad-0x0;var _0x521649=_0x6e95[_0x1a08ad];return _0x521649;};'use strict';var nodemailer=require(_0x56e9('0x0'));var inlineBase64=require(_0x56e9('0x1'));function EmailSmtp(){}EmailSmtp[_0x56e9('0x2')][_0x56e9('0x3')]=function(_0x418b57,_0x37bf22){return new Promise(function(_0x163875,_0x1ca56e){var _0x181ffd=nodemailer[_0x56e9('0x4')](_0x418b57);_0x181ffd[_0x56e9('0x5')](_0x56e9('0x6'),inlineBase64());_0x181ffd['sendMail'](_0x37bf22,function(_0x5b3c76,_0x402830){if(_0x5b3c76){_0x1ca56e(_0x5b3c76[_0x56e9('0x7')]());}else{_0x163875(_0x402830);}});});};EmailSmtp['prototype'][_0x56e9('0x8')]=function(_0x57ad12){return new Promise(function(_0x5be623,_0x2efb5a){var _0x485662=nodemailer[_0x56e9('0x4')](_0x57ad12);_0x485662['verify'](function(_0x43fc98,_0x2092cb){if(_0x43fc98){_0x2efb5a(_0x43fc98[_0x56e9('0x7')]());}else{if(_0x2092cb){_0x5be623(_0x2092cb);}else{_0x2efb5a(_0x56e9('0x9'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0xbc7b=['nodemailer','nodemailer-plugin-inline-base64','prototype','send','use','compile','sendMail','verify','createTransport','toString','Not\x20verifired'];(function(_0x39161d,_0x5f7db3){var _0x25dc99=function(_0x42fdd3){while(--_0x42fdd3){_0x39161d['push'](_0x39161d['shift']());}};_0x25dc99(++_0x5f7db3);}(_0xbc7b,0x155));var _0xbbc7=function(_0x27a376,_0x3dc215){_0x27a376=_0x27a376-0x0;var _0x22d5cb=_0xbc7b[_0x27a376];return _0x22d5cb;};'use strict';var nodemailer=require(_0xbbc7('0x0'));var inlineBase64=require(_0xbbc7('0x1'));function EmailSmtp(){}EmailSmtp[_0xbbc7('0x2')][_0xbbc7('0x3')]=function(_0x43a93a,_0x1a09d7){return new Promise(function(_0x130462,_0x5ebeb6){var _0x1e3a64=nodemailer['createTransport'](_0x43a93a);_0x1e3a64[_0xbbc7('0x4')](_0xbbc7('0x5'),inlineBase64());_0x1e3a64[_0xbbc7('0x6')](_0x1a09d7,function(_0x299fe9,_0x30d7d6){if(_0x299fe9){_0x5ebeb6(_0x299fe9['toString']());}else{_0x130462(_0x30d7d6);}});});};EmailSmtp[_0xbbc7('0x2')][_0xbbc7('0x7')]=function(_0x596422){return new Promise(function(_0x30c841,_0x25ffd3){var _0x39705a=nodemailer[_0xbbc7('0x8')](_0x596422);_0x39705a[_0xbbc7('0x7')](function(_0x26cafa,_0xa112eb){if(_0x26cafa){_0x25ffd3(_0x26cafa[_0xbbc7('0x9')]());}else{if(_0xa112eb){_0x30c841(_0xa112eb);}else{_0x25ffd3(_0xbbc7('0xa'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index 684de28..c4484c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6791=['<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','originTo','message','originCc','attach','type','attachment','attachment-','format','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','subject','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','parseBuffer','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','generateXOAuth2Token','user=','auth=Bearer\x20','toString','base64','lodash','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','generate','name','substring','split','length','slice','join','Anonymous','pop','isEmpty','@xcally.com','html','test','replace','includes','<img','attachments','push','filename','_SRC'];(function(_0x1b3f93,_0x3aca00){var _0x245909=function(_0xb1bfaa){while(--_0xb1bfaa){_0x1b3f93['push'](_0x1b3f93['shift']());}};_0x245909(++_0x3aca00);}(_0x6791,0xf9));var _0x1679=function(_0x110596,_0x1faae7){_0x110596=_0x110596-0x0;var _0x51fef2=_0x6791[_0x110596];return _0x51fef2;};'use strict';var _=require(_0x1679('0x0'));var moment=require('moment');var random=require(_0x1679('0x1'));var fs=require('fs');var path=require(_0x1679('0x2'));var util=require(_0x1679('0x3'));var tnef=require(_0x1679('0x4'));var logger=require(_0x1679('0x5'))(_0x1679('0x6'));var config=require(_0x1679('0x7'));function getAddress(_0x1996eb){var _0x1d37a8=_[_0x1679('0x8')](_0x1996eb[_0x1679('0x9')]);return _0x1d37a8&&_0x1d37a8[_0x1679('0xa')]?_0x1d37a8[_0x1679('0xa')]:'anonymous'+random[_0x1679('0xb')](0x6)+'@xcally.com';}function getFirstName(_0x25f8b9){var _0xfe9db4=_[_0x1679('0x8')](_0x25f8b9['value']);if(_0xfe9db4&&_0xfe9db4[_0x1679('0xc')]){if(_0xfe9db4[_0x1679('0xc')]==_0xfe9db4[_0x1679('0xa')]){return _0xfe9db4[_0x1679('0xc')][_0x1679('0xd')](0x0,_0xfe9db4['name']['indexOf']('@'));}var _0x3c5358=_0xfe9db4[_0x1679('0xc')][_0x1679('0xe')](/\s+/);return _0x3c5358[_0x1679('0xf')]>0x1?_0x3c5358[_0x1679('0x10')](0x0,-0x1)[_0x1679('0x11')]('\x20'):_0xfe9db4[_0x1679('0xc')];}return _0x1679('0x12');}function getLastName(_0x1b6281){var _0x46910f=_[_0x1679('0x8')](_0x1b6281[_0x1679('0x9')]);if(_0x46910f&&_0x46910f['name']){var _0x467b07=_0x46910f[_0x1679('0xc')][_0x1679('0xe')](/\s+/);return _0x467b07[_0x1679('0xf')]>0x1?_0x467b07[_0x1679('0x13')]():'';}return'';}function getMails(_0x5cfaef,_0x56b985){var _0x26947='';for(var _0x320ec0=0x0;_0x320ec0<_0x56b985[_0x1679('0x9')]['length'];_0x320ec0+=0x1){if(_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]!==_0x5cfaef){if(!_[_0x1679('0x14')](_0x26947)){_0x26947+=',';}_0x26947+=_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xc')]||_0x56b985['value'][_0x320ec0][_0x1679('0xa')]||'';_0x26947+='\x20<';_0x26947+=_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]?_0x56b985[_0x1679('0x9')][_0x320ec0][_0x1679('0xa')]:'anonymous'+random[_0x1679('0xb')](0x6)+_0x1679('0x15');_0x26947+='>';}}return _0x26947;}function parseEmail(_0x50109e,_0x12824d,_0x180fc9){if(_0x12824d[_0x1679('0x16')]){var _0x5d1f19=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x5d1f19[_0x1679('0x17')](_0x12824d[_0x1679('0x16')])){_0x12824d[_0x1679('0x16')]=_0x12824d[_0x1679('0x16')][_0x1679('0x18')](_0x5d1f19,'');}if(_0x12824d[_0x1679('0x16')][_0x1679('0x19')](_0x1679('0x1a'))){var _0x4608c6=[];_0x12824d[_0x1679('0x1b')]['forEach'](_0x581bc9=>{_0x4608c6[_0x1679('0x1c')](_0x581bc9[_0x1679('0x1d')]);});var _0x443b95=/<img.*? _SRC(.*?)[^>]+>/g;var _0x11e106=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5779fd=_0x12824d[_0x1679('0x16')][_0x1679('0x18')](_0x11e106,_0x1679('0x1e'));var _0x647514=_0x5779fd[_0x1679('0x18')](_0x443b95,'_IMG');for(let _0x4b086e=0x0;_0x4b086e<_0x4608c6[_0x1679('0xf')];_0x4b086e++){var _0xa833e9=_0x647514[_0x1679('0x18')]('_IMG',_0x1679('0x1f')+_0x4608c6[_0x4b086e]+_0x1679('0x20'));_0x647514=_0xa833e9;}_0x12824d[_0x1679('0x16')]=_0x647514;}_0x180fc9[_0x1679('0x21')]=_0x12824d['html'];}else{_0x180fc9[_0x1679('0x21')]=_0x12824d[_0x1679('0x22')];}if(_0x180fc9[_0x1679('0x21')]){_0x180fc9[_0x1679('0x21')]=_0x180fc9['body']['replace'](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x12824d['to']){_0x180fc9['message'][_0x1679('0x23')]=getMails(null,_0x12824d['to']);var _0x6e3777=getMails(_0x50109e['email'],_0x12824d['to']);if(!_['isEmpty'](_0x6e3777)){_0x180fc9['message']['cc']+=_0x6e3777;}}if(_0x12824d['cc']){_0x180fc9[_0x1679('0x24')][_0x1679('0x25')]=getMails(null,_0x12824d['cc']);var _0x1224ba=getMails(_0x50109e[_0x1679('0x6')],_0x12824d['cc']);if(!_[_0x1679('0x14')](_0x1224ba)){if(!_[_0x1679('0x14')](_0x180fc9[_0x1679('0x24')]['cc'])){_0x180fc9[_0x1679('0x24')]['cc']+=',';}_0x180fc9[_0x1679('0x24')]['cc']+=_0x1224ba;}}if(!_[_0x1679('0x19')](_0x180fc9[_0x1679('0x24')]['originTo'],_0x50109e['email'])&&!_[_0x1679('0x19')](_0x180fc9[_0x1679('0x24')][_0x1679('0x25')],_0x50109e[_0x1679('0x6')])){_0x180fc9[_0x1679('0x24')]['bcc']=_0x50109e[_0x1679('0x6')];}if(_0x12824d[_0x1679('0x1b')]&&_0x12824d[_0x1679('0x1b')][_0x1679('0xf')]){_0x180fc9['message'][_0x1679('0x26')]=_0x12824d['attachments'][_0x1679('0xf')];for(var _0x63114=0x0,_0x559e05,_0x5aefc6,_0x233974;_0x63114<_0x12824d[_0x1679('0x1b')][_0x1679('0xf')];_0x63114+=0x1){if(_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x27')]===_0x1679('0x28')){_0x233974=_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x1d')]||_0x1679('0x29')+_0x63114;_0x559e05=util[_0x1679('0x2a')]('%s-%s',Date['now'](),_0x233974);_0x5aefc6=path['join'](config['root'],_0x1679('0x2b'),_0x559e05);fs[_0x1679('0x2c')](_0x5aefc6,_0x12824d[_0x1679('0x1b')][_0x63114]['content']);_0x180fc9[_0x1679('0x24')]['attachments'][_0x1679('0x1c')]({'name':_0x233974,'basename':_0x559e05,'type':_0x12824d[_0x1679('0x1b')][_0x63114][_0x1679('0x2d')],'filepath':_0x5aefc6});}}}if(_0x12824d[_0x1679('0x2e')]&&_0x12824d['headerLines']['length']>0x0){var _0x510daf=[_0x1679('0x2f'),_0x1679('0x30'),_0x1679('0x31')];for(var _0x536007=0x0;_0x536007<_0x12824d[_0x1679('0x2e')][_0x1679('0xf')];_0x536007++){var _0x392957=_['indexOf'](_0x510daf,_0x12824d['headerLines'][_0x536007][_0x1679('0x32')]);if(_0x392957>=0x0){_0x180fc9[_0x1679('0x33')]=!![];}}}return _0x180fc9;}exports['parser']=function(_0x1aed83,_0x527e7a,_0x15d172){var _0x1d0dbc={'from':getAddress(_0x527e7a[_0x1679('0x34')]),'firstName':getFirstName(_0x527e7a[_0x1679('0x34')]),'lastName':getLastName(_0x527e7a[_0x1679('0x34')]),'mapKey':_0x1679('0x6'),'message':{'from':getMails(_0x1aed83[_0x1679('0x6')],_0x527e7a['from']),'to':_0x1aed83['email'],'cc':'','subject':_0x527e7a[_0x1679('0x35')]||'','messageId':_0x527e7a['messageId'],'inReplyTo':_0x527e7a[_0x1679('0x36')],'sentAt':moment(_0x527e7a['date'])[_0x1679('0x2a')](_0x1679('0x37')),'attach':![],'attachments':[]}};if(!_0x527e7a['html']&&!_0x527e7a[_0x1679('0x22')]){var _0x1258fa=_[_0x1679('0x38')](_0x527e7a[_0x1679('0x1b')],{'contentType':_0x1679('0x39')});if(_0x1258fa[_0x1679('0xf')]){logger[_0x1679('0x3a')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x527e7a['messageId']));tnef[_0x1679('0x3b')](_['first'](_0x1258fa)[_0x1679('0x3c')],function(_0x4d920c,_0x54dc3d){if(_0x54dc3d){_0x527e7a['html']=_0x54dc3d[_0x1679('0x3d')]||_0x1679('0x3e');if(_0x54dc3d[_0x1679('0x3f')]){for(var _0x15c3f3=0x0;_0x15c3f3<_0x54dc3d[_0x1679('0x3f')]['length'];_0x15c3f3++){var _0x375916=_0x54dc3d[_0x1679('0x3f')][_0x15c3f3];_0x1d0dbc[_0x1679('0x24')]['attachments'][_0x1679('0x1c')]({'filename':_0x375916[_0x1679('0x40')],'content':Buffer[_0x1679('0x34')](_0x375916['Data'])});}}}_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));});}else{_0x527e7a[_0x1679('0x16')]=_0x1679('0x3e');_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));}}else{_0x15d172(parseEmail(_0x1aed83,_0x527e7a,_0x1d0dbc));}};exports[_0x1679('0x41')]=function(_0x172f01,_0x4a5f37){var _0xc5358c=[_0x1679('0x42')+(_0x4a5f37||''),_0x1679('0x43')+_0x172f01,'',''];return Buffer[_0x1679('0x34')](_0xc5358c[_0x1679('0x11')]('\ 1'),'utf-8')[_0x1679('0x44')](_0x1679('0x45'));};
\ No newline at end of file
+var _0xa683=['attachment','filename','attachment-','format','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','indexOf','isAutoreply','parser','from','subject','messageId','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','Attachments','Title','Data','generateXOAuth2Token','auth=Bearer\x20','utf-8','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','../../../config/environment','head','address','anonymous','value','name','substring','split','length','slice','join','Anonymous','pop','generate','@xcally.com','html','test','includes','attachments','forEach','push','replace','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','isEmpty','originCc','email','originTo','bcc','attach','type'];(function(_0x447dad,_0x5594ea){var _0x3844de=function(_0x178e37){while(--_0x178e37){_0x447dad['push'](_0x447dad['shift']());}};_0x3844de(++_0x5594ea);}(_0xa683,0xf6));var _0x3a68=function(_0x528a9e,_0x5a5a99){_0x528a9e=_0x528a9e-0x0;var _0x361a89=_0xa683[_0x528a9e];return _0x361a89;};'use strict';var _=require(_0x3a68('0x0'));var moment=require(_0x3a68('0x1'));var random=require(_0x3a68('0x2'));var fs=require('fs');var path=require(_0x3a68('0x3'));var util=require(_0x3a68('0x4'));var tnef=require(_0x3a68('0x5'));var logger=require(_0x3a68('0x6'))('email');var config=require(_0x3a68('0x7'));function getAddress(_0x3e20f3){var _0x5383c8=_[_0x3a68('0x8')](_0x3e20f3['value']);return _0x5383c8&&_0x5383c8[_0x3a68('0x9')]?_0x5383c8[_0x3a68('0x9')]:_0x3a68('0xa')+random['generate'](0x6)+'@xcally.com';}function getFirstName(_0x2c24fd){var _0x1a67c5=_[_0x3a68('0x8')](_0x2c24fd[_0x3a68('0xb')]);if(_0x1a67c5&&_0x1a67c5[_0x3a68('0xc')]){if(_0x1a67c5[_0x3a68('0xc')]==_0x1a67c5[_0x3a68('0x9')]){return _0x1a67c5['name'][_0x3a68('0xd')](0x0,_0x1a67c5['name']['indexOf']('@'));}var _0x180ce0=_0x1a67c5['name'][_0x3a68('0xe')](/\s+/);return _0x180ce0[_0x3a68('0xf')]>0x1?_0x180ce0[_0x3a68('0x10')](0x0,-0x1)[_0x3a68('0x11')]('\x20'):_0x1a67c5[_0x3a68('0xc')];}return _0x3a68('0x12');}function getLastName(_0x533f74){var _0x57f0f8=_['head'](_0x533f74['value']);if(_0x57f0f8&&_0x57f0f8['name']){var _0x506bf7=_0x57f0f8['name'][_0x3a68('0xe')](/\s+/);return _0x506bf7[_0x3a68('0xf')]>0x1?_0x506bf7[_0x3a68('0x13')]():'';}return'';}function getMails(_0x3fe5d3,_0x2c5d64){var _0x5c2813='';for(var _0x132632=0x0;_0x132632<_0x2c5d64[_0x3a68('0xb')][_0x3a68('0xf')];_0x132632+=0x1){if(_0x2c5d64[_0x3a68('0xb')][_0x132632][_0x3a68('0x9')]!==_0x3fe5d3){if(!_['isEmpty'](_0x5c2813)){_0x5c2813+=',';}_0x5c2813+=_0x2c5d64[_0x3a68('0xb')][_0x132632][_0x3a68('0xc')]||_0x2c5d64[_0x3a68('0xb')][_0x132632][_0x3a68('0x9')]||'';_0x5c2813+='\x20<';_0x5c2813+=_0x2c5d64[_0x3a68('0xb')][_0x132632][_0x3a68('0x9')]?_0x2c5d64['value'][_0x132632][_0x3a68('0x9')]:_0x3a68('0xa')+random[_0x3a68('0x14')](0x6)+_0x3a68('0x15');_0x5c2813+='>';}}return _0x5c2813;}function parseEmail(_0xb7a79e,_0x443a8a,_0x14c4a2){if(_0x443a8a[_0x3a68('0x16')]){var _0x47eca5=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x47eca5[_0x3a68('0x17')](_0x443a8a['html'])){_0x443a8a['html']=_0x443a8a[_0x3a68('0x16')]['replace'](_0x47eca5,'');}if(_0x443a8a[_0x3a68('0x16')][_0x3a68('0x18')]('<img')){var _0x202347=[];_0x443a8a[_0x3a68('0x19')][_0x3a68('0x1a')](_0x5f4a61=>{_0x202347[_0x3a68('0x1b')](_0x5f4a61['filename']);});var _0x539306=/<img.*? _SRC(.*?)[^>]+>/g;var _0x4db820=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xda8dd7=_0x443a8a['html']['replace'](_0x4db820,'_SRC');var _0x1c47cb=_0xda8dd7[_0x3a68('0x1c')](_0x539306,_0x3a68('0x1d'));for(let _0x230fb3=0x0;_0x230fb3<_0x202347[_0x3a68('0xf')];_0x230fb3++){var _0x577468=_0x1c47cb['replace'](_0x3a68('0x1d'),_0x3a68('0x1e')+_0x202347[_0x230fb3]+_0x3a68('0x1f'));_0x1c47cb=_0x577468;}_0x443a8a[_0x3a68('0x16')]=_0x1c47cb;}_0x14c4a2[_0x3a68('0x20')]=_0x443a8a['html'];}else{_0x14c4a2[_0x3a68('0x20')]=_0x443a8a[_0x3a68('0x21')];}if(_0x14c4a2[_0x3a68('0x20')]){_0x14c4a2['body']=_0x14c4a2[_0x3a68('0x20')][_0x3a68('0x1c')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x443a8a['to']){_0x14c4a2[_0x3a68('0x22')]['originTo']=getMails(null,_0x443a8a['to']);var _0x498c80=getMails(_0xb7a79e['email'],_0x443a8a['to']);if(!_[_0x3a68('0x23')](_0x498c80)){_0x14c4a2['message']['cc']+=_0x498c80;}}if(_0x443a8a['cc']){_0x14c4a2[_0x3a68('0x22')][_0x3a68('0x24')]=getMails(null,_0x443a8a['cc']);var _0x6e694d=getMails(_0xb7a79e[_0x3a68('0x25')],_0x443a8a['cc']);if(!_[_0x3a68('0x23')](_0x6e694d)){if(!_[_0x3a68('0x23')](_0x14c4a2[_0x3a68('0x22')]['cc'])){_0x14c4a2[_0x3a68('0x22')]['cc']+=',';}_0x14c4a2[_0x3a68('0x22')]['cc']+=_0x6e694d;}}if(!_[_0x3a68('0x18')](_0x14c4a2[_0x3a68('0x22')][_0x3a68('0x26')],_0xb7a79e[_0x3a68('0x25')])&&!_[_0x3a68('0x18')](_0x14c4a2[_0x3a68('0x22')][_0x3a68('0x24')],_0xb7a79e['email'])){_0x14c4a2[_0x3a68('0x22')][_0x3a68('0x27')]=_0xb7a79e[_0x3a68('0x25')];}if(_0x443a8a[_0x3a68('0x19')]&&_0x443a8a['attachments']['length']){_0x14c4a2[_0x3a68('0x22')][_0x3a68('0x28')]=_0x443a8a[_0x3a68('0x19')][_0x3a68('0xf')];for(var _0x20c502=0x0,_0x40b93d,_0x6b5dd0,_0x218837;_0x20c502<_0x443a8a[_0x3a68('0x19')]['length'];_0x20c502+=0x1){if(_0x443a8a[_0x3a68('0x19')][_0x20c502][_0x3a68('0x29')]===_0x3a68('0x2a')){_0x218837=_0x443a8a[_0x3a68('0x19')][_0x20c502][_0x3a68('0x2b')]||_0x3a68('0x2c')+_0x20c502;_0x40b93d=util[_0x3a68('0x2d')]('%s-%s',Date['now'](),_0x218837);_0x6b5dd0=path[_0x3a68('0x11')](config['root'],_0x3a68('0x2e'),_0x40b93d);fs[_0x3a68('0x2f')](_0x6b5dd0,_0x443a8a[_0x3a68('0x19')][_0x20c502][_0x3a68('0x30')]);_0x14c4a2[_0x3a68('0x22')]['attachments']['push']({'name':_0x218837,'basename':_0x40b93d,'type':_0x443a8a[_0x3a68('0x19')][_0x20c502][_0x3a68('0x31')],'filepath':_0x6b5dd0});}}}if(_0x443a8a[_0x3a68('0x32')]&&_0x443a8a[_0x3a68('0x32')][_0x3a68('0xf')]>0x0){var _0x23a4a2=[_0x3a68('0x33'),_0x3a68('0x34'),_0x3a68('0x35')];for(var _0xa02cd2=0x0;_0xa02cd2<_0x443a8a['headerLines']['length'];_0xa02cd2++){var _0x1614c9=_[_0x3a68('0x36')](_0x23a4a2,_0x443a8a[_0x3a68('0x32')][_0xa02cd2]['line']);if(_0x1614c9>=0x0){_0x14c4a2[_0x3a68('0x37')]=!![];}}}return _0x14c4a2;}exports[_0x3a68('0x38')]=function(_0x37611f,_0x132aaf,_0x3426fe){var _0x57469c={'from':getAddress(_0x132aaf['from']),'firstName':getFirstName(_0x132aaf[_0x3a68('0x39')]),'lastName':getLastName(_0x132aaf[_0x3a68('0x39')]),'mapKey':_0x3a68('0x25'),'message':{'from':getMails(_0x37611f[_0x3a68('0x25')],_0x132aaf[_0x3a68('0x39')]),'to':_0x37611f[_0x3a68('0x25')],'cc':'','subject':_0x132aaf[_0x3a68('0x3a')]||'','messageId':_0x132aaf[_0x3a68('0x3b')],'inReplyTo':_0x132aaf['inReplyTo'],'sentAt':moment(_0x132aaf['date'])[_0x3a68('0x2d')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x132aaf[_0x3a68('0x16')]&&!_0x132aaf[_0x3a68('0x21')]){var _0x11a3bc=_['filter'](_0x132aaf[_0x3a68('0x19')],{'contentType':'application/ms-tnef'});if(_0x11a3bc[_0x3a68('0xf')]){logger[_0x3a68('0x3c')](util[_0x3a68('0x2d')](_0x3a68('0x3d'),_0x132aaf[_0x3a68('0x3b')]));tnef[_0x3a68('0x3e')](_[_0x3a68('0x3f')](_0x11a3bc)[_0x3a68('0x30')],function(_0x1d2d8a,_0x4d8cd2){if(_0x4d8cd2){_0x132aaf[_0x3a68('0x16')]=_0x4d8cd2[_0x3a68('0x40')]||'<p>Empty\x20message</p>';if(_0x4d8cd2[_0x3a68('0x41')]){for(var _0x553bbe=0x0;_0x553bbe<_0x4d8cd2[_0x3a68('0x41')][_0x3a68('0xf')];_0x553bbe++){var _0x41bc4d=_0x4d8cd2[_0x3a68('0x41')][_0x553bbe];_0x57469c['message'][_0x3a68('0x19')][_0x3a68('0x1b')]({'filename':_0x41bc4d[_0x3a68('0x42')],'content':Buffer[_0x3a68('0x39')](_0x41bc4d[_0x3a68('0x43')])});}}}_0x3426fe(parseEmail(_0x37611f,_0x132aaf,_0x57469c));});}else{_0x132aaf[_0x3a68('0x16')]='<p>Empty\x20message</p>';_0x3426fe(parseEmail(_0x37611f,_0x132aaf,_0x57469c));}}else{_0x3426fe(parseEmail(_0x37611f,_0x132aaf,_0x57469c));}};exports[_0x3a68('0x44')]=function(_0x47c26c,_0x488c41){var _0x7d74ea=['user='+(_0x488c41||''),_0x3a68('0x45')+_0x47c26c,'',''];return Buffer['from'](_0x7d74ea[_0x3a68('0x11')]('\ 1'),_0x3a68('0x46'))['toString'](_0x3a68('0x47'));};
\ No newline at end of file
index 2b77826..c4e2fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d37=['Service','key','SERV','active','Smtp','exports','lodash','name'];(function(_0x2386e4,_0x220eef){var _0x494803=function(_0x593e72){while(--_0x593e72){_0x2386e4['push'](_0x2386e4['shift']());}};_0x494803(++_0x220eef);}(_0x0d37,0x18e));var _0x70d3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0d37[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x70d3('0x0'));function MailAccount(_0xeb8ba6){this['id']=_0xeb8ba6['id']||0x0;this[_0x70d3('0x1')]=_0xeb8ba6[_0x70d3('0x1')]||_0x70d3('0x2');this['key']=_0xeb8ba6[_0x70d3('0x3')]||_0x70d3('0x4');this[_0x70d3('0x5')]=_0xeb8ba6[_0x70d3('0x5')]||![];this['Imap']=_0xeb8ba6['Imap']||[];this[_0x70d3('0x6')]=_0xeb8ba6[_0x70d3('0x6')]||[];}module[_0x70d3('0x7')]=MailAccount;
\ No newline at end of file
+var _0xee69=['key','active','Imap','Smtp','exports','lodash','name'];(function(_0x17390a,_0x48e6f7){var _0x3dc489=function(_0x30f2b0){while(--_0x30f2b0){_0x17390a['push'](_0x17390a['shift']());}};_0x3dc489(++_0x48e6f7);}(_0xee69,0x10f));var _0x9ee6=function(_0x20808d,_0x2551a1){_0x20808d=_0x20808d-0x0;var _0x2577eb=_0xee69[_0x20808d];return _0x2577eb;};'use strict';var _=require(_0x9ee6('0x0'));function MailAccount(_0x37eb6){this['id']=_0x37eb6['id']||0x0;this[_0x9ee6('0x1')]=_0x37eb6['name']||'Service';this['key']=_0x37eb6[_0x9ee6('0x2')]||'SERV';this[_0x9ee6('0x3')]=_0x37eb6['active']||![];this[_0x9ee6('0x4')]=_0x37eb6[_0x9ee6('0x4')]||[];this['Smtp']=_0x37eb6[_0x9ee6('0x5')]||[];}module[_0x9ee6('0x6')]=MailAccount;
\ No newline at end of file
index 81916e5..067fa1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720d=['isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','prototype','mergeFromDatabase','hasOwnProperty','initMailAccounts','length'];(function(_0x2bbad9,_0x1f3892){var _0x1683cb=function(_0x262672){while(--_0x262672){_0x2bbad9['push'](_0x2bbad9['shift']());}};_0x1683cb(++_0x1f3892);}(_0x720d,0x1ef));var _0xd720=function(_0x53c40a,_0x520738){_0x53c40a=_0x53c40a-0x0;var _0x2959eb=_0x720d[_0x53c40a];return _0x2959eb;};'use strict';var _=require(_0xd720('0x0'));var MailAccount=require(_0xd720('0x1'));var Realtime=function(){this[_0xd720('0x2')]={};};function freeIsNotKey(_0x94d1fd,_0x269e22,_0x58a397){var _0x19fab8=_[_0xd720('0x3')](_0x94d1fd,function(_0x2ecd72,_0x1e4ebd){return _0x2ecd72[_0x58a397];});for(var _0xabf28f in _0x269e22){if(_0x269e22['hasOwnProperty'](_0xabf28f)){if(!_0x19fab8[_0xabf28f]){delete _0x269e22[_0xabf28f];}}}}Realtime[_0xd720('0x4')][_0xd720('0x5')]=function(_0x209fce,_0x23a5c4){for(var _0x4f6d97 in _0x23a5c4){if(_0x209fce[_0xd720('0x6')](_0x4f6d97)){_0x209fce[_0x4f6d97]=_0x23a5c4[_0x4f6d97];}}};Realtime['prototype'][_0xd720('0x7')]=function(){var _0x199dc0=this;return function(_0x700702){if(_0x700702){freeIsNotKey(_0x700702,_0x199dc0[_0xd720('0x2')],'id');for(var _0x14b481=0x0,_0x24e1a7={},_0x3984c7={};_0x14b481<_0x700702[_0xd720('0x8')];_0x14b481+=0x1){_0x24e1a7=_0x700702[_0x14b481];if(_[_0xd720('0x9')](_0x199dc0[_0xd720('0x2')][_0x24e1a7['id']])){_0x199dc0[_0xd720('0x2')][_0x24e1a7['id']]=new MailAccount(_0x24e1a7);}else{_[_0xd720('0xa')](_0x199dc0['mailAccounts'][_0x24e1a7['id']],_0x24e1a7);}}}return _0x199dc0[_0xd720('0x2')];};};module[_0xd720('0xb')]=Realtime;
\ No newline at end of file
+var _0x259f=['initMailAccounts','isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','hasOwnProperty','mergeFromDatabase','prototype'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x259f,0x1d0));var _0xf259=function(_0x46719e,_0x9064b6){_0x46719e=_0x46719e-0x0;var _0x4a0ee6=_0x259f[_0x46719e];return _0x4a0ee6;};'use strict';var _=require(_0xf259('0x0'));var MailAccount=require(_0xf259('0x1'));var Realtime=function(){this[_0xf259('0x2')]={};};function freeIsNotKey(_0x2938bf,_0x263b07,_0x8badcf){var _0x3541a4=_['mapKeys'](_0x2938bf,function(_0x532bf7,_0x4386e3){return _0x532bf7[_0x8badcf];});for(var _0x495364 in _0x263b07){if(_0x263b07[_0xf259('0x3')](_0x495364)){if(!_0x3541a4[_0x495364]){delete _0x263b07[_0x495364];}}}}Realtime['prototype'][_0xf259('0x4')]=function(_0x358c49,_0x164c1f){for(var _0x5c0f67 in _0x164c1f){if(_0x358c49[_0xf259('0x3')](_0x5c0f67)){_0x358c49[_0x5c0f67]=_0x164c1f[_0x5c0f67];}}};Realtime[_0xf259('0x5')][_0xf259('0x6')]=function(){var _0x195630=this;return function(_0x33f942){if(_0x33f942){freeIsNotKey(_0x33f942,_0x195630['mailAccounts'],'id');for(var _0x53318a=0x0,_0x9112fc={},_0x15d524={};_0x53318a<_0x33f942['length'];_0x53318a+=0x1){_0x9112fc=_0x33f942[_0x53318a];if(_[_0xf259('0x7')](_0x195630[_0xf259('0x2')][_0x9112fc['id']])){_0x195630[_0xf259('0x2')][_0x9112fc['id']]=new MailAccount(_0x9112fc);}else{_[_0xf259('0x8')](_0x195630[_0xf259('0x2')][_0x9112fc['id']],_0x9112fc);}}}return _0x195630[_0xf259('0x2')];};};module[_0xf259('0x9')]=Realtime;
\ No newline at end of file
index f9dd079..f7c8e7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ba=['getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','active','key','MailServerIn','Imap','CloudProvider','type','data5','Smtp'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x94ba,0xbe));var _0xa94b=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x94ba[_0x2b5513];return _0x578fd2;};'use strict';var client=require(_0xa94b('0x0'));exports[_0xa94b('0x1')]=function(){return function(){return client[_0xa94b('0x2')](_0xa94b('0x3'),{'options':{'attributes':['id',_0xa94b('0x4'),'provider',_0xa94b('0x5'),'email',_0xa94b('0x6'),_0xa94b('0x7'),'ListId','TemplateId'],'raw':![],'include':[{'model':_0xa94b('0x8'),'as':_0xa94b('0x9'),'include':[{'model':_0xa94b('0xa'),'attributes':['id',_0xa94b('0x4'),'service',_0xa94b('0xb'),_0xa94b('0xc')],'as':'CloudProvider'}]},{'model':'MailServerOut','as':_0xa94b('0xd'),'include':[{'model':_0xa94b('0xa'),'attributes':['id',_0xa94b('0x4'),'service',_0xa94b('0xb'),_0xa94b('0xc')],'as':_0xa94b('0xa')}]}]},'log':_0xa94b('0xe')});};};exports[_0xa94b('0xf')]=function(_0x101f56,_0x52de08){return client[_0xa94b('0x2')](_0xa94b('0x10'),{'account':{'id':_0x101f56},'body':_0x52de08,'log':_0xa94b('0x10')});};
\ No newline at end of file
+var _0x7031=['Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','name','service','email','key','ListId','MailServerIn','CloudProvider','data5','MailServerOut','type','getMailAccount','notify'];(function(_0x2543d6,_0x3a5e78){var _0x55213c=function(_0x292768){while(--_0x292768){_0x2543d6['push'](_0x2543d6['shift']());}};_0x55213c(++_0x3a5e78);}(_0x7031,0x19a));var _0x1703=function(_0x45bda8,_0x1dcede){_0x45bda8=_0x45bda8-0x0;var _0x267dde=_0x7031[_0x45bda8];return _0x267dde;};'use strict';var client=require(_0x1703('0x0'));exports[_0x1703('0x1')]=function(){return function(){return client['Request'](_0x1703('0x2'),{'options':{'attributes':['id',_0x1703('0x3'),'provider',_0x1703('0x4'),_0x1703('0x5'),'active',_0x1703('0x6'),_0x1703('0x7'),'TemplateId'],'raw':![],'include':[{'model':_0x1703('0x8'),'as':'Imap','include':[{'model':_0x1703('0x9'),'attributes':['id',_0x1703('0x3'),_0x1703('0x4'),'type',_0x1703('0xa')],'as':_0x1703('0x9')}]},{'model':_0x1703('0xb'),'as':'Smtp','include':[{'model':_0x1703('0x9'),'attributes':['id',_0x1703('0x3'),_0x1703('0x4'),_0x1703('0xc'),_0x1703('0xa')],'as':_0x1703('0x9')}]}]},'log':_0x1703('0xd')});};};exports[_0x1703('0xe')]=function(_0x36d1fe,_0x2fa96c){return client[_0x1703('0xf')](_0x1703('0x10'),{'account':{'id':_0x36d1fe},'body':_0x2fa96c,'log':_0x1703('0x10')});};
\ No newline at end of file
index 807ca81..e088073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2f=['GetSettings','getSettings','Request','ShowSetting','loginMailFrequency'];(function(_0x4e6eb2,_0x16a451){var _0x4e0c1c=function(_0x59f144){while(--_0x59f144){_0x4e6eb2['push'](_0x4e6eb2['shift']());}};_0x4e0c1c(++_0x16a451);}(_0x7e2f,0xb5));var _0xf7e2=function(_0x2a4fe2,_0x3ec53a){_0x2a4fe2=_0x2a4fe2-0x0;var _0x225c4a=_0x7e2f[_0x2a4fe2];return _0x225c4a;};'use strict';var client=require('../client');exports[_0xf7e2('0x0')]=function(){return client[_0xf7e2('0x1')](_0xf7e2('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf7e2('0x3')]},'log':_0xf7e2('0x4')});};
\ No newline at end of file
+var _0xca4b=['../client','loginMailFrequency','GetSettings'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0xca4b,0xe1));var _0xbca4=function(_0x49fcc5,_0x38db74){_0x49fcc5=_0x49fcc5-0x0;var _0xa6381d=_0xca4b[_0x49fcc5];return _0xa6381d;};'use strict';var client=require(_0xbca4('0x0'));exports['getSettings']=function(){return client['Request']('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xbca4('0x1')]},'log':_0xbca4('0x2')});};
\ No newline at end of file
index 0a92f5c..09d8cce 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(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 72c8cc5..00eccb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0fe=['once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','default','../../config/socketio','../../routes'];(function(_0x45c417,_0x137216){var _0x3b32e8=function(_0x36f3a2){while(--_0x36f3a2){_0x45c417['push'](_0x45c417['shift']());}};_0x3b32e8(++_0x137216);}(_0xa0fe,0xa4));var _0xea0f=function(_0x4afa93,_0x5eb883){_0x4afa93=_0x4afa93-0x0;var _0x1c1403=_0xa0fe[_0x4afa93];return _0x1c1403;};'use strict';var _=require(_0xea0f('0x0'));var http=require(_0xea0f('0x1'));var express=require(_0xea0f('0x2'));var sticky=require(_0xea0f('0x3'));var Redis=require(_0xea0f('0x4'));var config=require(_0xea0f('0x5'));var app=express();var server=http[_0xea0f('0x6')](app);server[_0xea0f('0x7')]=0xdbba0;if(sticky[_0xea0f('0x8')](server,config[_0xea0f('0x9')])){var socketio=require(_0xea0f('0xa'))(server,{'transports':[_0xea0f('0xb'),_0xea0f('0xc')]});config[_0xea0f('0xd')]=_[_0xea0f('0xe')](config['redis'],{'host':_0xea0f('0xf'),'port':0x18eb});socketio[_0xea0f('0x10')](require('socket.io-redis')({'pubClient':new Redis(config[_0xea0f('0xd')]),'subClient':new Redis(config[_0xea0f('0xd')])}));require('../../config/triggers')[_0xea0f('0x11')]();require(_0xea0f('0x12'))[_0xea0f('0x11')](socketio);require('../../config/express')[_0xea0f('0x11')](app);require(_0xea0f('0x13'))[_0xea0f('0x11')](app);}else{server[_0xea0f('0x14')]('listening',function(){console[_0xea0f('0x15')](_0xea0f('0x16'),config[_0xea0f('0x9')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xecf9=['sticky-session','ioredis','createServer','port','socket.io','websocket','defaults','redis','localhost','socket.io-redis','../../config/triggers','default','../../config/express','../../routes','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express'];(function(_0x3ceb54,_0x5bddfd){var _0x26d8a6=function(_0x32e484){while(--_0x32e484){_0x3ceb54['push'](_0x3ceb54['shift']());}};_0x26d8a6(++_0x5bddfd);}(_0xecf9,0x90));var _0x9ecf=function(_0x13f1be,_0x4d1007){_0x13f1be=_0x13f1be-0x0;var _0x5ed3bc=_0xecf9[_0x13f1be];return _0x5ed3bc;};'use strict';var _=require(_0x9ecf('0x0'));var http=require(_0x9ecf('0x1'));var express=require(_0x9ecf('0x2'));var sticky=require(_0x9ecf('0x3'));var Redis=require(_0x9ecf('0x4'));var config=require('../../config/environment');var app=express();var server=http[_0x9ecf('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x9ecf('0x6')])){var socketio=require(_0x9ecf('0x7'))(server,{'transports':[_0x9ecf('0x8'),'polling']});config['redis']=_[_0x9ecf('0x9')](config[_0x9ecf('0xa')],{'host':_0x9ecf('0xb'),'port':0x18eb});socketio['adapter'](require(_0x9ecf('0xc'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x9ecf('0xa')])}));require(_0x9ecf('0xd'))[_0x9ecf('0xe')]();require('../../config/socketio')['default'](socketio);require(_0x9ecf('0xf'))['default'](app);require(_0x9ecf('0x10'))[_0x9ecf('0xe')](app);}else{server['once'](_0x9ecf('0x11'),function(){console[_0x9ecf('0x12')](_0x9ecf('0x13'),config[_0x9ecf('0x6')]);});}exports=module[_0x9ecf('0x14')]=app;
\ No newline at end of file
index 283e725..8139ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd515=['exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','request','then','debug','error','message','result','catch','rpc'];(function(_0x4d7f55,_0x596a6f){var _0xb63aca=function(_0x5c51a6){while(--_0x5c51a6){_0x4d7f55['push'](_0x4d7f55['shift']());}};_0xb63aca(++_0x596a6f);}(_0xd515,0xb1));var _0x5d51=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0xd515[_0x5a95fa];return _0x1a61b8;};'use strict';var jayson=require(_0x5d51('0x0'));var BPromise=require(_0x5d51('0x1'));var logger=require(_0x5d51('0x2'))(_0x5d51('0x3'));var client=jayson[_0x5d51('0x4')][_0x5d51('0x5')]({'port':0x2329});client[_0x5d51('0x6')]=function(_0x46e5d3,_0x2442bc){return new BPromise(function(_0x51b334,_0x3ba978){return client[_0x5d51('0x7')](_0x46e5d3,_0x2442bc)[_0x5d51('0x8')](function(_0x4252c6){logger[_0x5d51('0x9')]('rpc',_0x5d51('0x3'),_0x46e5d3,_0x2442bc,_0x4252c6);if(_0x4252c6[_0x5d51('0xa')]){logger[_0x5d51('0xa')]('rpc',_0x5d51('0x3'),_0x46e5d3,_0x4252c6[_0x5d51('0xa')]['message'],_0x2442bc);return _0x3ba978(_0x4252c6[_0x5d51('0xa')][_0x5d51('0xb')]);}else{return _0x51b334(_0x4252c6[_0x5d51('0xc')]);}})[_0x5d51('0xd')](function(_0x37410c){logger[_0x5d51('0xa')](_0x5d51('0xe'),_0x5d51('0x3'),_0x46e5d3,_0x37410c,_0x2442bc);return _0x3ba978(_0x37410c);});});};module[_0x5d51('0xf')]=client;
\ No newline at end of file
+var _0x63e0=['Request','request','then','debug','error','catch','rpc','exports','jayson/promise','../../config/logger','routing','client','http'];(function(_0x4be6f4,_0x385b23){var _0x3e9098=function(_0x17ff9a){while(--_0x17ff9a){_0x4be6f4['push'](_0x4be6f4['shift']());}};_0x3e9098(++_0x385b23);}(_0x63e0,0x7d));var _0x063e=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0x63e0[_0x58db4e];return _0x40139a;};'use strict';var jayson=require(_0x063e('0x0'));var BPromise=require('bluebird');var logger=require(_0x063e('0x1'))(_0x063e('0x2'));var client=jayson[_0x063e('0x3')][_0x063e('0x4')]({'port':0x2329});client[_0x063e('0x5')]=function(_0xd584de,_0x492eb0){return new BPromise(function(_0x3a6026,_0x38d23c){return client[_0x063e('0x6')](_0xd584de,_0x492eb0)[_0x063e('0x7')](function(_0x34efe3){logger[_0x063e('0x8')]('rpc','routing',_0xd584de,_0x492eb0,_0x34efe3);if(_0x34efe3[_0x063e('0x9')]){logger['error']('rpc',_0x063e('0x2'),_0xd584de,_0x34efe3['error']['message'],_0x492eb0);return _0x38d23c(_0x34efe3['error']['message']);}else{return _0x3a6026(_0x34efe3['result']);}})[_0x063e('0xa')](function(_0x2191b7){logger[_0x063e('0x9')](_0x063e('0xb'),_0x063e('0x2'),_0xd584de,_0x2191b7,_0x492eb0);return _0x38d23c(_0x2191b7);});});};module[_0x063e('0xc')]=client;
\ No newline at end of file
index b086666..73c0832 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x662a=['getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues'];(function(_0x1203fb,_0x5e6bef){var _0x1991bd=function(_0x4585a3){while(--_0x4585a3){_0x1203fb['push'](_0x1203fb['shift']());}};_0x1991bd(++_0x5e6bef);}(_0x662a,0x1a9));var _0xa662=function(_0x5f15a1,_0x196cd7){_0x5f15a1=_0x5f15a1-0x0;var _0x40480e=_0x662a[_0x5f15a1];return _0x40480e;};'use strict';var BPromise=require('bluebird');var server=require('./server');var Realtime=require(_0xa662('0x0'));var user=require(_0xa662('0x1'));var interval=require(_0xa662('0x2'));var openchannelQueue=require(_0xa662('0x3'));var chatQueue=require(_0xa662('0x4'));var smsQueue=require(_0xa662('0x5'));var mailQueue=require(_0xa662('0x6'));var faxQueue=require(_0xa662('0x7'));var whatsappQueue=require(_0xa662('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xa662('0x9')]()[_0xa662('0xa')](user[_0xa662('0xb')]())['then'](realtime[_0xa662('0xc')]())[_0xa662('0xa')](interval['getIntervals']())[_0xa662('0xa')](realtime[_0xa662('0xd')]())[_0xa662('0xa')](openchannelQueue['getOpenchannelQueues']())['then'](realtime[_0xa662('0xe')]())[_0xa662('0xa')](chatQueue[_0xa662('0xf')]())[_0xa662('0xa')](realtime[_0xa662('0x10')]())[_0xa662('0xa')](smsQueue['getSmsQueues']())['then'](realtime['initSmsQueues']())['then'](mailQueue[_0xa662('0x11')]())[_0xa662('0xa')](realtime[_0xa662('0x12')]())[_0xa662('0xa')](faxQueue[_0xa662('0x13')]())[_0xa662('0xa')](realtime[_0xa662('0x14')]())['then'](whatsappQueue[_0xa662('0x15')]())[_0xa662('0xa')](realtime[_0xa662('0x16')]())[_0xa662('0xa')](function(){return realtime;});}function main(){return server[_0xa662('0x17')](realtime)[_0xa662('0xa')](function(_0x2895a5){return initRealtime();})[_0xa662('0xa')](function(_0x3d8d6a){return setInterval(initRealtime,0x1388);})[_0xa662('0x18')](function(_0x42c649){console[_0xa662('0x19')](_0x42c649);});}main();
\ No newline at end of file
+var _0x3df6=['getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','bluebird','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues'];(function(_0x75acee,_0x89526b){var _0x277e02=function(_0x3650a4){while(--_0x3650a4){_0x75acee['push'](_0x75acee['shift']());}};_0x277e02(++_0x89526b);}(_0x3df6,0x1b7));var _0x63df=function(_0x28d85e,_0x41a8ab){_0x28d85e=_0x28d85e-0x0;var _0x9e3d3c=_0x3df6[_0x28d85e];return _0x9e3d3c;};'use strict';var BPromise=require(_0x63df('0x0'));var server=require(_0x63df('0x1'));var Realtime=require('./realtime');var user=require(_0x63df('0x2'));var interval=require(_0x63df('0x3'));var openchannelQueue=require(_0x63df('0x4'));var chatQueue=require(_0x63df('0x5'));var smsQueue=require(_0x63df('0x6'));var mailQueue=require(_0x63df('0x7'));var faxQueue=require(_0x63df('0x8'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x63df('0x9')]()[_0x63df('0xa')](user[_0x63df('0xb')]())['then'](realtime['initAgents']())[_0x63df('0xa')](interval[_0x63df('0xc')]())[_0x63df('0xa')](realtime[_0x63df('0xd')]())[_0x63df('0xa')](openchannelQueue[_0x63df('0xe')]())[_0x63df('0xa')](realtime[_0x63df('0xf')]())[_0x63df('0xa')](chatQueue[_0x63df('0x10')]())[_0x63df('0xa')](realtime[_0x63df('0x11')]())['then'](smsQueue[_0x63df('0x12')]())[_0x63df('0xa')](realtime[_0x63df('0x13')]())[_0x63df('0xa')](mailQueue[_0x63df('0x14')]())[_0x63df('0xa')](realtime[_0x63df('0x15')]())[_0x63df('0xa')](faxQueue['getFaxQueues']())['then'](realtime[_0x63df('0x16')]())[_0x63df('0xa')](whatsappQueue[_0x63df('0x17')]())[_0x63df('0xa')](realtime[_0x63df('0x18')]())['then'](function(){return realtime;});}function main(){return server[_0x63df('0x19')](realtime)[_0x63df('0xa')](function(_0xdd114e){return initRealtime();})[_0x63df('0xa')](function(_0x164971){return setInterval(initRealtime,0x1388);})['catch'](function(_0x125bcd){console[_0x63df('0x1a')](_0x125bcd);});}main();
\ No newline at end of file
index 7487b85..b36a53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x15070a,_0x522955){var _0x251d50=function(_0x1b4f8e){while(--_0x1b4f8e){_0x15070a['push'](_0x15070a['shift']());}};_0x251d50(++_0x522955);}(_0x326f,0xd1));var _0xf326=function(_0x1fa169,_0x4c51b3){_0x1fa169=_0x1fa169-0x0;var _0xd5860a=_0x326f[_0x1fa169];return _0xd5860a;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1261,0x144));var _0x1126=function(_0x651c32,_0x554df9){_0x651c32=_0x651c32-0x0;var _0x25c174=_0x1261[_0x651c32];return _0x25c174;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
index 52d44d6..2bfa29e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc052=['then','error','message','catch','jayson/promise'];(function(_0x119d25,_0x588c8){var _0x39cf30=function(_0x31c68c){while(--_0x31c68c){_0x119d25['push'](_0x119d25['shift']());}};_0x39cf30(++_0x588c8);}(_0xc052,0x1bc));var _0x2c05=function(_0x25b49d,_0x317149){_0x25b49d=_0x25b49d-0x0;var _0x4d435b=_0xc052[_0x25b49d];return _0x4d435b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x2c05('0x0'));var client=jayson['client']['http']({'port':0x232b});function request(_0x143730,_0x5c190a){return new BPromise(function(_0x18fefd,_0x2b0a96){return client['request'](_0x143730,_0x5c190a)[_0x2c05('0x1')](function(_0x14bb5f){if(_0x14bb5f[_0x2c05('0x2')]){return _0x2b0a96(_0x14bb5f[_0x2c05('0x2')][_0x2c05('0x3')]);}else{return _0x18fefd(_0x14bb5f['result']);}})[_0x2c05('0x4')](function(_0x5516ec){return _0x2b0a96(_0x5516ec);});});}exports['sendMailMessage']=function(_0x271e26,_0x1d07b7){return request('SendMail',{'account':_0x271e26,'message':_0x1d07b7});};
\ No newline at end of file
+var _0x60ba=['bluebird','jayson/promise','client','request','error','message','sendMailMessage','SendMail'];(function(_0x353c56,_0x2511d7){var _0x306b7e=function(_0x15c549){while(--_0x15c549){_0x353c56['push'](_0x353c56['shift']());}};_0x306b7e(++_0x2511d7);}(_0x60ba,0x110));var _0xa60b=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x60ba[_0x501510];return _0x1e6ee5;};'use strict';var BPromise=require(_0xa60b('0x0'));var jayson=require(_0xa60b('0x1'));var client=jayson[_0xa60b('0x2')]['http']({'port':0x232b});function request(_0x51a580,_0x392206){return new BPromise(function(_0x2b5b5e,_0x3aef21){return client[_0xa60b('0x3')](_0x51a580,_0x392206)['then'](function(_0x17be1e){if(_0x17be1e[_0xa60b('0x4')]){return _0x3aef21(_0x17be1e['error'][_0xa60b('0x5')]);}else{return _0x2b5b5e(_0x17be1e['result']);}})['catch'](function(_0xafcfac){return _0x3aef21(_0xafcfac);});});}exports[_0xa60b('0x6')]=function(_0x271c76,_0x3ff4a5){return request(_0xa60b('0x7'),{'account':_0x271c76,'message':_0x3ff4a5});};
\ No newline at end of file
index 70495fc..35a04be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0e2=['defaults','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','CurrentCapacity','Capacity','maxcapacity','working','idle','prototype','mail','openchannel','fax','whatsapp','length','getChannelStatus','StatusTime','toNumber','format','Status','chatStatus','mailCurrentCapacity','openchannelStatusTime','mailWaitingInteractions','user:save','lodash','md5','ioredis','redis'];(function(_0x3c6297,_0x1f7cc2){var _0x307f51=function(_0x44660e){while(--_0x44660e){_0x3c6297['push'](_0x3c6297['shift']());}};_0x307f51(++_0x1f7cc2);}(_0xa0e2,0x17c));var _0x2a0e=function(_0x4cbc97,_0x553a7f){_0x4cbc97=_0x4cbc97-0x0;var _0x1ab60e=_0xa0e2[_0x4cbc97];return _0x1ab60e;};'use strict';var _=require(_0x2a0e('0x0'));var moment=require('moment');var md5=require(_0x2a0e('0x1'));var Redis=require(_0x2a0e('0x2'));var config=require('../../../config/environment');config[_0x2a0e('0x3')]=_[_0x2a0e('0x4')](config[_0x2a0e('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0x2a0e('0x5'))(new Redis(config[_0x2a0e('0x3')]));function Agent(_0x43e0c8){this['id']=_0x43e0c8['id']||0x0;this[_0x2a0e('0x6')]=_0x43e0c8[_0x2a0e('0x6')]||'';this[_0x2a0e('0x7')]=_0x43e0c8['online']||!![];this[_0x2a0e('0x8')]=_0x43e0c8[_0x2a0e('0x8')]||![];this[_0x2a0e('0x9')]=_0x43e0c8[_0x2a0e('0x9')]||![];this[_0x2a0e('0xa')]=_0x43e0c8['mailPause']||![];this['faxPause']=_0x43e0c8[_0x2a0e('0xb')]||![];this[_0x2a0e('0xc')]=_0x43e0c8[_0x2a0e('0xc')]||![];this[_0x2a0e('0xd')]=_0x43e0c8['openchannelPause']||![];this['chatStatus']='unknown';this[_0x2a0e('0xe')]=0x0;this[_0x2a0e('0xf')]=_0x43e0c8[_0x2a0e('0xf')]||0x0;this[_0x2a0e('0x10')]=0x0;this[_0x2a0e('0x11')]=_0x2a0e('0x12');this[_0x2a0e('0x13')]=0x0;this[_0x2a0e('0x14')]=_0x43e0c8['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this[_0x2a0e('0x15')]=_0x2a0e('0x12');this[_0x2a0e('0x16')]=0x0;this[_0x2a0e('0x17')]=_0x43e0c8[_0x2a0e('0x17')]||0x0;this[_0x2a0e('0x18')]=0x0;this[_0x2a0e('0x19')]=_0x2a0e('0x12');this[_0x2a0e('0x1a')]=0x0;this[_0x2a0e('0x1b')]=_0x43e0c8[_0x2a0e('0x1b')]||0x0;this[_0x2a0e('0x1c')]=0x0;this[_0x2a0e('0x1d')]='unknown';this['whatsappStatusTime']=0x0;this[_0x2a0e('0x1e')]=_0x43e0c8[_0x2a0e('0x1e')]||0x0;this[_0x2a0e('0x1f')]=0x0;this[_0x2a0e('0x20')]=_0x2a0e('0x12');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x43e0c8[_0x2a0e('0x21')]||0x0;this[_0x2a0e('0x22')]=0x0;this[_0x2a0e('0x23')]=![];this[_0x2a0e('0x24')]=undefined;this['md5']='';this[_0x2a0e('0x25')]={};this[_0x2a0e('0x26')]={};this['mailWaitingInteractions']={};this[_0x2a0e('0x27')]={};this[_0x2a0e('0x28')]={};this[_0x2a0e('0x29')]={};this[_0x2a0e('0x2a')]();}Agent['prototype']['getChannelStatus']=function(_0x4cb66b){if(this[_0x4cb66b+_0x2a0e('0x2b')]>0x0){if(this[_0x4cb66b+'Capacity']>0x0&&this[_0x4cb66b+'CurrentCapacity']>=this[_0x4cb66b+_0x2a0e('0x2c')]){return _0x2a0e('0x2d');}else{return _0x2a0e('0x2e');}}else{return _0x2a0e('0x2f');}};Agent[_0x2a0e('0x30')][_0x2a0e('0x2a')]=function(){var _0x14b962=[_0x2a0e('0x31'),'chat',_0x2a0e('0x32'),_0x2a0e('0x33'),'sms',_0x2a0e('0x34')];for(var _0x16b65b=0x0;_0x16b65b<_0x14b962[_0x2a0e('0x35')];_0x16b65b+=0x1){var _0x2284ee=this[_0x2a0e('0x36')](_0x14b962[_0x16b65b]);if(this[_0x14b962[_0x16b65b]+'Status']!==_0x2284ee){this[_0x14b962[_0x16b65b]+_0x2a0e('0x37')]=_[_0x2a0e('0x38')](moment()[_0x2a0e('0x39')]('x'));}this[_0x14b962[_0x16b65b]+_0x2a0e('0x3a')]=_0x2284ee;}var _0x45783b={'id':this['id'],'name':this['name'],'online':this[_0x2a0e('0x7')],'voicePause':this[_0x2a0e('0x8')],'chatPause':this[_0x2a0e('0x9')],'mailPause':this['mailPause'],'smsPause':this[_0x2a0e('0xc')],'faxPause':this['faxPause'],'openchannelPause':this[_0x2a0e('0xd')],'chatStatus':this[_0x2a0e('0x3b')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x2a0e('0x13')],'mailCapacity':this[_0x2a0e('0x14')],'mailCurrentCapacity':this[_0x2a0e('0x3c')],'faxStatus':this[_0x2a0e('0x15')],'faxStatusTime':this[_0x2a0e('0x16')],'faxCapacity':this[_0x2a0e('0x17')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x2a0e('0x19')],'smsStatusTime':this[_0x2a0e('0x1a')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x2a0e('0x1c')],'whatsappStatus':this[_0x2a0e('0x1d')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0x2a0e('0x1e')],'whatsappCurrentCapacity':this[_0x2a0e('0x1f')],'openchannelStatus':this[_0x2a0e('0x20')],'openchannelStatusTime':this[_0x2a0e('0x3d')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x2a0e('0x22')],'busy':this[_0x2a0e('0x23')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x2a0e('0x25')],'faxWaitingInteractions':this[_0x2a0e('0x26')],'mailWaitingInteractions':this[_0x2a0e('0x3e')],'openchannelWaitingInteractions':this[_0x2a0e('0x27')],'smsWaitingInteractions':this[_0x2a0e('0x28')],'whatsappWaitingInteractions':this[_0x2a0e('0x29')]};var _0x4d2db1=md5(JSON['stringify'](_0x45783b));if(this[_0x2a0e('0x1')]!==_0x4d2db1){this['md5']=_0x4d2db1;io['emit'](_0x2a0e('0x3f'),_0x45783b);}};module['exports']=Agent;
\ No newline at end of file
+var _0x62d1=['chatStatus','stringify','emit','moment','md5','ioredis','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','CurrentCapacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','getChannelStatus','Status','StatusTime','toNumber'];(function(_0x32c162,_0x1bcbd6){var _0x4a4671=function(_0xed74f4){while(--_0xed74f4){_0x32c162['push'](_0x32c162['shift']());}};_0x4a4671(++_0x1bcbd6);}(_0x62d1,0xbd));var _0x162d=function(_0x1a4a06,_0x36a5c2){_0x1a4a06=_0x1a4a06-0x0;var _0x49ec08=_0x62d1[_0x1a4a06];return _0x49ec08;};'use strict';var _=require('lodash');var moment=require(_0x162d('0x0'));var md5=require(_0x162d('0x1'));var Redis=require(_0x162d('0x2'));var config=require('../../../config/environment');config[_0x162d('0x3')]=_['defaults'](config['redis'],{'host':_0x162d('0x4'),'port':0x18eb});var io=require(_0x162d('0x5'))(new Redis(config[_0x162d('0x3')]));function Agent(_0x23b5d1){this['id']=_0x23b5d1['id']||0x0;this[_0x162d('0x6')]=_0x23b5d1[_0x162d('0x6')]||'';this[_0x162d('0x7')]=_0x23b5d1[_0x162d('0x7')]||!![];this[_0x162d('0x8')]=_0x23b5d1[_0x162d('0x8')]||![];this[_0x162d('0x9')]=_0x23b5d1['chatPause']||![];this['mailPause']=_0x23b5d1[_0x162d('0xa')]||![];this[_0x162d('0xb')]=_0x23b5d1[_0x162d('0xb')]||![];this['smsPause']=_0x23b5d1[_0x162d('0xc')]||![];this[_0x162d('0xd')]=_0x23b5d1[_0x162d('0xd')]||![];this['chatStatus']=_0x162d('0xe');this[_0x162d('0xf')]=0x0;this[_0x162d('0x10')]=_0x23b5d1['chatCapacity']||0x0;this[_0x162d('0x11')]=0x0;this[_0x162d('0x12')]=_0x162d('0xe');this[_0x162d('0x13')]=0x0;this[_0x162d('0x14')]=_0x23b5d1[_0x162d('0x14')]||0x0;this[_0x162d('0x15')]=0x0;this[_0x162d('0x16')]=_0x162d('0xe');this[_0x162d('0x17')]=0x0;this['faxCapacity']=_0x23b5d1[_0x162d('0x18')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x162d('0x19')]='unknown';this[_0x162d('0x1a')]=0x0;this['smsCapacity']=_0x23b5d1[_0x162d('0x1b')]||0x0;this[_0x162d('0x1c')]=0x0;this[_0x162d('0x1d')]=_0x162d('0xe');this[_0x162d('0x1e')]=0x0;this[_0x162d('0x1f')]=_0x23b5d1['whatsappCapacity']||0x0;this[_0x162d('0x20')]=0x0;this['openchannelStatus']=_0x162d('0xe');this[_0x162d('0x21')]=0x0;this[_0x162d('0x22')]=_0x23b5d1[_0x162d('0x22')]||0x0;this[_0x162d('0x23')]=0x0;this[_0x162d('0x24')]=![];this[_0x162d('0x25')]=undefined;this[_0x162d('0x1')]='';this[_0x162d('0x26')]={};this[_0x162d('0x27')]={};this[_0x162d('0x28')]={};this[_0x162d('0x29')]={};this['smsWaitingInteractions']={};this[_0x162d('0x2a')]={};this[_0x162d('0x2b')]();}Agent[_0x162d('0x2c')]['getChannelStatus']=function(_0x2fe880){if(this[_0x2fe880+'CurrentCapacity']>0x0){if(this[_0x2fe880+'Capacity']>0x0&&this[_0x2fe880+_0x162d('0x2d')]>=this[_0x2fe880+'Capacity']){return _0x162d('0x2e');}else{return _0x162d('0x2f');}}else{return _0x162d('0x30');}};Agent[_0x162d('0x2c')]['updateRealtime']=function(){var _0x4152ad=[_0x162d('0x31'),_0x162d('0x32'),_0x162d('0x33'),_0x162d('0x34'),_0x162d('0x35'),_0x162d('0x36')];for(var _0x1eaeef=0x0;_0x1eaeef<_0x4152ad['length'];_0x1eaeef+=0x1){var _0x1df020=this[_0x162d('0x37')](_0x4152ad[_0x1eaeef]);if(this[_0x4152ad[_0x1eaeef]+_0x162d('0x38')]!==_0x1df020){this[_0x4152ad[_0x1eaeef]+_0x162d('0x39')]=_[_0x162d('0x3a')](moment()['format']('x'));}this[_0x4152ad[_0x1eaeef]+_0x162d('0x38')]=_0x1df020;}var _0x40666c={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0x162d('0x8')],'chatPause':this[_0x162d('0x9')],'mailPause':this[_0x162d('0xa')],'smsPause':this[_0x162d('0xc')],'faxPause':this['faxPause'],'openchannelPause':this[_0x162d('0xd')],'chatStatus':this[_0x162d('0x3b')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x162d('0x10')],'chatCurrentCapacity':this[_0x162d('0x11')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x162d('0x13')],'mailCapacity':this[_0x162d('0x14')],'mailCurrentCapacity':this[_0x162d('0x15')],'faxStatus':this[_0x162d('0x16')],'faxStatusTime':this[_0x162d('0x17')],'faxCapacity':this[_0x162d('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x162d('0x1a')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x162d('0x1c')],'whatsappStatus':this[_0x162d('0x1d')],'whatsappStatusTime':this[_0x162d('0x1e')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x162d('0x21')],'openchannelCapacity':this[_0x162d('0x22')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this['busy'],'busyQueue':this[_0x162d('0x25')],'chatWaitingInteractions':this['chatWaitingInteractions'],'faxWaitingInteractions':this[_0x162d('0x27')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this[_0x162d('0x29')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0x162d('0x2a')]};var _0xe367c5=md5(JSON[_0x162d('0x3c')](_0x40666c));if(this[_0x162d('0x1')]!==_0xe367c5){this[_0x162d('0x1')]=_0xe367c5;io[_0x162d('0x3d')]('user:save',_0x40666c);}};module['exports']=Agent;
\ No newline at end of file
index 8683c68..9da47cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x962f=['Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x374748,_0x3b808f){var _0x58dd25=function(_0x570e32){while(--_0x570e32){_0x374748['push'](_0x374748['shift']());}};_0x58dd25(++_0x3b808f);}(_0x962f,0x8e));var _0xf962=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x962f[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf962('0x0'));var md5=require(_0xf962('0x1'));var util=require(_0xf962('0x2'));var Redis=require(_0xf962('0x3'));var config=require(_0xf962('0x4'));config[_0xf962('0x5')]=_[_0xf962('0x6')](config[_0xf962('0x5')],{'host':_0xf962('0x7'),'port':0x18eb});var io=require(_0xf962('0x8'))(new Redis(config[_0xf962('0x5')]));function ChatQueue(_0x39584e){this['id']=_0x39584e['id']||0x0;this['name']=_0x39584e[_0xf962('0x9')]||'';this[_0xf962('0xa')]=_0x39584e['timeout']||0xa;this[_0xf962('0xb')]=_0x39584e[_0xf962('0xb')]||_0xf962('0xc');this['Agents']=_0x39584e[_0xf962('0xd')];this['mapAgentsId']={};this[_0xf962('0xe')]=0x0;this['md5']='';this[_0xf962('0xf')]();this['updateRealtime']();}ChatQueue[_0xf962('0x10')][_0xf962('0xf')]=function(){var _0x59055f=this[_0xf962('0x11')][_0xf962('0x12')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0xf962('0x11')][_0xf962('0x12')]=_0x59055f;};ChatQueue[_0xf962('0x10')][_0xf962('0x13')]=function(){this[_0xf962('0x14')]=0x0;this[_0xf962('0x15')]=0x0;for(var _0x3970cf=0x0;_0x3970cf<this[_0xf962('0xd')][_0xf962('0x16')];_0x3970cf+=0x1){if(this['Agents'][_0x3970cf][_0xf962('0x17')]){this[_0xf962('0x14')]+=0x1;}if(this['Agents'][_0x3970cf][_0xf962('0x18')]){this[_0xf962('0x15')]+=0x1;}}this['available']=this['loggedIn']-this[_0xf962('0x15')];this['available']=this[_0xf962('0x19')]>=0x0?this[_0xf962('0x19')]:0x0;var _0x5b24bb={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xf962('0xe')]};var _0xc16eb6=md5(JSON[_0xf962('0x1a')](_0x5b24bb));if(this[_0xf962('0x1')]!==_0xc16eb6){this[_0xf962('0x1')]=_0xc16eb6;io['to'](util[_0xf962('0x1b')](_0xf962('0x1c'),_0x5b24bb[_0xf962('0x9')]))['emit'](_0xf962('0x1d'),_0x5b24bb);}};module[_0xf962('0x1e')]=ChatQueue;
\ No newline at end of file
+var _0xcf03=['paused','online','chatPause','available','waiting','stringify','chat:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','loggedIn'];(function(_0x51abb6,_0xd29817){var _0x28fc2d=function(_0x5b0854){while(--_0x5b0854){_0x51abb6['push'](_0x51abb6['shift']());}};_0x28fc2d(++_0xd29817);}(_0xcf03,0x134));var _0x3cf0=function(_0x45c536,_0x52a556){_0x45c536=_0x45c536-0x0;var _0x10e06d=_0xcf03[_0x45c536];return _0x10e06d;};'use strict';var _=require(_0x3cf0('0x0'));var md5=require(_0x3cf0('0x1'));var util=require(_0x3cf0('0x2'));var Redis=require(_0x3cf0('0x3'));var config=require(_0x3cf0('0x4'));config[_0x3cf0('0x5')]=_['defaults'](config[_0x3cf0('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3cf0('0x5')]));function ChatQueue(_0x4d18c6){this['id']=_0x4d18c6['id']||0x0;this[_0x3cf0('0x6')]=_0x4d18c6[_0x3cf0('0x6')]||'';this[_0x3cf0('0x7')]=_0x4d18c6[_0x3cf0('0x7')]||0xa;this[_0x3cf0('0x8')]=_0x4d18c6[_0x3cf0('0x8')]||_0x3cf0('0x9');this[_0x3cf0('0xa')]=_0x4d18c6[_0x3cf0('0xa')];this[_0x3cf0('0xb')]={};this['waiting']=0x0;this[_0x3cf0('0x1')]='';this[_0x3cf0('0xc')]();this[_0x3cf0('0xd')]();}ChatQueue[_0x3cf0('0xe')][_0x3cf0('0xc')]=function(){var _0x34ae69=this['mapAgentsId'][_0x3cf0('0xf')];this[_0x3cf0('0xb')]=_['map'](this[_0x3cf0('0xa')],'id');this['mapAgentsId'][_0x3cf0('0xf')]=_0x34ae69;};ChatQueue[_0x3cf0('0xe')][_0x3cf0('0xd')]=function(){this[_0x3cf0('0x10')]=0x0;this[_0x3cf0('0x11')]=0x0;for(var _0xa929cf=0x0;_0xa929cf<this['Agents']['length'];_0xa929cf+=0x1){if(this[_0x3cf0('0xa')][_0xa929cf][_0x3cf0('0x12')]){this[_0x3cf0('0x10')]+=0x1;}if(this[_0x3cf0('0xa')][_0xa929cf][_0x3cf0('0x13')]){this[_0x3cf0('0x11')]+=0x1;}}this[_0x3cf0('0x14')]=this[_0x3cf0('0x10')]-this[_0x3cf0('0x11')];this[_0x3cf0('0x14')]=this['available']>=0x0?this['available']:0x0;var _0x5f477d={'id':this['id'],'available':this[_0x3cf0('0x14')],'loggedIn':this[_0x3cf0('0x10')],'name':this[_0x3cf0('0x6')],'paused':this[_0x3cf0('0x11')],'waiting':this[_0x3cf0('0x15')]};var _0x12ce25=md5(JSON[_0x3cf0('0x16')](_0x5f477d));if(this[_0x3cf0('0x1')]!==_0x12ce25){this['md5']=_0x12ce25;io['to'](util['format'](_0x3cf0('0x17'),_0x5f477d['name']))[_0x3cf0('0x18')]('chat_queue:save',_0x5f477d);}};module['exports']=ChatQueue;
\ No newline at end of file
index 0193bab..cce6e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc570=['_rr','map','loggedIn','paused','length','online','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype'];(function(_0x3ea030,_0x155acb){var _0x5832b8=function(_0x1a11f4){while(--_0x1a11f4){_0x3ea030['push'](_0x3ea030['shift']());}};_0x5832b8(++_0x155acb);}(_0xc570,0x193));var _0x0c57=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xc570[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0c57('0x0'));var md5=require(_0x0c57('0x1'));var util=require(_0x0c57('0x2'));var Redis=require(_0x0c57('0x3'));var config=require('../../../config/environment');config[_0x0c57('0x4')]=_[_0x0c57('0x5')](config['redis'],{'host':_0x0c57('0x6'),'port':0x18eb});var io=require(_0x0c57('0x7'))(new Redis(config['redis']));function FaxQueue(_0x37d003){this['id']=_0x37d003['id']||0x0;this[_0x0c57('0x8')]=_0x37d003[_0x0c57('0x8')]||'';this[_0x0c57('0x9')]=_0x37d003[_0x0c57('0x9')]||0xa;this[_0x0c57('0xa')]=_0x37d003[_0x0c57('0xa')]||_0x0c57('0xb');this['Agents']=_0x37d003[_0x0c57('0xc')];this[_0x0c57('0xd')]={};this['waiting']=0x0;this['md5']='';this[_0x0c57('0xe')]();this[_0x0c57('0xf')]();}FaxQueue[_0x0c57('0x10')]['updateRouting']=function(){var _0x4ed6ab=this[_0x0c57('0xd')][_0x0c57('0x11')];this[_0x0c57('0xd')]=_[_0x0c57('0x12')](this['Agents'],'id');this[_0x0c57('0xd')][_0x0c57('0x11')]=_0x4ed6ab;};FaxQueue['prototype']['updateRealtime']=function(){this[_0x0c57('0x13')]=0x0;this[_0x0c57('0x14')]=0x0;for(var _0x1ee34f=0x0;_0x1ee34f<this[_0x0c57('0xc')][_0x0c57('0x15')];_0x1ee34f+=0x1){if(this[_0x0c57('0xc')][_0x1ee34f][_0x0c57('0x16')]){this[_0x0c57('0x13')]+=0x1;}if(this['Agents'][_0x1ee34f][_0x0c57('0x17')]){this[_0x0c57('0x14')]+=0x1;}}this[_0x0c57('0x18')]=this[_0x0c57('0x13')]-this[_0x0c57('0x14')];this[_0x0c57('0x18')]=this[_0x0c57('0x18')]>=0x0?this[_0x0c57('0x18')]:0x0;var _0x826be9={'id':this['id'],'available':this[_0x0c57('0x18')],'loggedIn':this[_0x0c57('0x13')],'name':this[_0x0c57('0x8')],'paused':this[_0x0c57('0x14')],'waiting':this['waiting']};var _0x20fa10=md5(JSON[_0x0c57('0x19')](_0x826be9));if(this[_0x0c57('0x1')]!==_0x20fa10){this['md5']=_0x20fa10;io['to'](util[_0x0c57('0x1a')](_0x0c57('0x1b'),_0x826be9[_0x0c57('0x8')]))[_0x0c57('0x1c')](_0x0c57('0x1d'),_0x826be9);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xe71d=['beepall','Agents','mapAgentsId','waiting','updateRealtime','_rr','map','loggedIn','paused','length','online','faxPause','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe71d,0xcd));var _0xde71=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xe71d[_0x4b7b62];return _0x2280df;};'use strict';var _=require(_0xde71('0x0'));var md5=require(_0xde71('0x1'));var util=require(_0xde71('0x2'));var Redis=require(_0xde71('0x3'));var config=require(_0xde71('0x4'));config[_0xde71('0x5')]=_[_0xde71('0x6')](config[_0xde71('0x5')],{'host':_0xde71('0x7'),'port':0x18eb});var io=require(_0xde71('0x8'))(new Redis(config['redis']));function FaxQueue(_0x18b17f){this['id']=_0x18b17f['id']||0x0;this[_0xde71('0x9')]=_0x18b17f[_0xde71('0x9')]||'';this[_0xde71('0xa')]=_0x18b17f[_0xde71('0xa')]||0xa;this[_0xde71('0xb')]=_0x18b17f['strategy']||_0xde71('0xc');this[_0xde71('0xd')]=_0x18b17f[_0xde71('0xd')];this[_0xde71('0xe')]={};this[_0xde71('0xf')]=0x0;this[_0xde71('0x1')]='';this['updateRouting']();this[_0xde71('0x10')]();}FaxQueue['prototype']['updateRouting']=function(){var _0x25224f=this['mapAgentsId'][_0xde71('0x11')];this[_0xde71('0xe')]=_[_0xde71('0x12')](this[_0xde71('0xd')],'id');this['mapAgentsId'][_0xde71('0x11')]=_0x25224f;};FaxQueue['prototype'][_0xde71('0x10')]=function(){this[_0xde71('0x13')]=0x0;this[_0xde71('0x14')]=0x0;for(var _0x1bc56a=0x0;_0x1bc56a<this[_0xde71('0xd')][_0xde71('0x15')];_0x1bc56a+=0x1){if(this[_0xde71('0xd')][_0x1bc56a][_0xde71('0x16')]){this[_0xde71('0x13')]+=0x1;}if(this[_0xde71('0xd')][_0x1bc56a][_0xde71('0x17')]){this[_0xde71('0x14')]+=0x1;}}this[_0xde71('0x18')]=this[_0xde71('0x13')]-this['paused'];this[_0xde71('0x18')]=this[_0xde71('0x18')]>=0x0?this[_0xde71('0x18')]:0x0;var _0x470a60={'id':this['id'],'available':this[_0xde71('0x18')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xde71('0x14')],'waiting':this['waiting']};var _0x1095e1=md5(JSON[_0xde71('0x19')](_0x470a60));if(this[_0xde71('0x1')]!==_0x1095e1){this['md5']=_0x1095e1;io['to'](util[_0xde71('0x1a')](_0xde71('0x1b'),_0x470a60[_0xde71('0x9')]))[_0xde71('0x1c')](_0xde71('0x1d'),_0x470a60);}};module[_0xde71('0x1e')]=FaxQueue;
\ No newline at end of file
index a6f9be5..527f71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2997=['name','Intervals','exports'];(function(_0x5eda19,_0x583393){var _0x2f1283=function(_0x2bafed){while(--_0x2bafed){_0x5eda19['push'](_0x5eda19['shift']());}};_0x2f1283(++_0x583393);}(_0x2997,0x189));var _0x7299=function(_0x3f47bd,_0xa1b88c){_0x3f47bd=_0x3f47bd-0x0;var _0x133064=_0x2997[_0x3f47bd];return _0x133064;};'use strict';function Interval(_0x138760){this['id']=_0x138760['id']||0x0;this['name']=_0x138760[_0x7299('0x0')]||'';this[_0x7299('0x1')]=_0x138760[_0x7299('0x1')]||{};}module[_0x7299('0x2')]=Interval;
\ No newline at end of file
+var _0x2401=['name','Intervals','exports'];(function(_0x1e8dc0,_0x1acee6){var _0x157f01=function(_0x52f756){while(--_0x52f756){_0x1e8dc0['push'](_0x1e8dc0['shift']());}};_0x157f01(++_0x1acee6);}(_0x2401,0x162));var _0x1240=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2401[_0x397e5f];return _0x5302b8;};'use strict';function Interval(_0x40777d){this['id']=_0x40777d['id']||0x0;this['name']=_0x40777d[_0x1240('0x0')]||'';this[_0x1240('0x1')]=_0x40777d[_0x1240('0x1')]||{};}module[_0x1240('0x2')]=Interval;
\ No newline at end of file
index 26fad16..657e62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc67e=['name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','length','online','mailPause','available','waiting','stringify','format','mail:queue:%s','emit','exports','lodash','md5','util','redis','localhost','socket.io-emitter'];(function(_0x37656f,_0x350ac6){var _0x5cd9d8=function(_0x12e27e){while(--_0x12e27e){_0x37656f['push'](_0x37656f['shift']());}};_0x5cd9d8(++_0x350ac6);}(_0xc67e,0xda));var _0xec67=function(_0x580fd1,_0xc5d0b2){_0x580fd1=_0x580fd1-0x0;var _0x12facb=_0xc67e[_0x580fd1];return _0x12facb;};'use strict';var _=require(_0xec67('0x0'));var md5=require(_0xec67('0x1'));var util=require(_0xec67('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0xec67('0x3')]=_['defaults'](config['redis'],{'host':_0xec67('0x4'),'port':0x18eb});var io=require(_0xec67('0x5'))(new Redis(config[_0xec67('0x3')]));function MailQueue(_0x4da999){this['id']=_0x4da999['id']||0x0;this[_0xec67('0x6')]=_0x4da999['name']||'';this[_0xec67('0x7')]=_0x4da999[_0xec67('0x7')]||0xa;this[_0xec67('0x8')]=_0x4da999[_0xec67('0x8')]||_0xec67('0x9');this[_0xec67('0xa')]=_0x4da999['Agents'];this[_0xec67('0xb')]={};this['waiting']=0x0;this['md5']='';this[_0xec67('0xc')]();this[_0xec67('0xd')]();}MailQueue[_0xec67('0xe')][_0xec67('0xc')]=function(){var _0x1a08d5=this[_0xec67('0xb')][_0xec67('0xf')];this[_0xec67('0xb')]=_[_0xec67('0x10')](this[_0xec67('0xa')],'id');this[_0xec67('0xb')][_0xec67('0xf')]=_0x1a08d5;};MailQueue['prototype'][_0xec67('0xd')]=function(){this[_0xec67('0x11')]=0x0;this['paused']=0x0;for(var _0x4a3c9b=0x0;_0x4a3c9b<this[_0xec67('0xa')][_0xec67('0x12')];_0x4a3c9b+=0x1){if(this[_0xec67('0xa')][_0x4a3c9b][_0xec67('0x13')]){this[_0xec67('0x11')]+=0x1;}if(this[_0xec67('0xa')][_0x4a3c9b][_0xec67('0x14')]){this['paused']+=0x1;}}this[_0xec67('0x15')]=this['loggedIn']-this['paused'];this[_0xec67('0x15')]=this[_0xec67('0x15')]>=0x0?this[_0xec67('0x15')]:0x0;var _0x4a8201={'id':this['id'],'available':this[_0xec67('0x15')],'loggedIn':this[_0xec67('0x11')],'name':this[_0xec67('0x6')],'paused':this['paused'],'waiting':this[_0xec67('0x16')]};var _0x434f77=md5(JSON[_0xec67('0x17')](_0x4a8201));if(this[_0xec67('0x1')]!==_0x434f77){this[_0xec67('0x1')]=_0x434f77;io['to'](util[_0xec67('0x18')](_0xec67('0x19'),_0x4a8201[_0xec67('0x6')]))[_0xec67('0x1a')]('mail_queue:save',_0x4a8201);}};module[_0xec67('0x1b')]=MailQueue;
\ No newline at end of file
+var _0x3a70=['lodash','md5','util','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','loggedIn','length','mailPause','paused','available','stringify','format','emit','mail_queue:save','exports'];(function(_0x140388,_0xf8f96a){var _0x35fa0c=function(_0x1f36b8){while(--_0x1f36b8){_0x140388['push'](_0x140388['shift']());}};_0x35fa0c(++_0xf8f96a);}(_0x3a70,0x70));var _0x03a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a70[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x03a7('0x0'));var md5=require(_0x03a7('0x1'));var util=require(_0x03a7('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config['redis']=_[_0x03a7('0x3')](config[_0x03a7('0x4')],{'host':_0x03a7('0x5'),'port':0x18eb});var io=require(_0x03a7('0x6'))(new Redis(config[_0x03a7('0x4')]));function MailQueue(_0xadde23){this['id']=_0xadde23['id']||0x0;this[_0x03a7('0x7')]=_0xadde23[_0x03a7('0x7')]||'';this[_0x03a7('0x8')]=_0xadde23[_0x03a7('0x8')]||0xa;this[_0x03a7('0x9')]=_0xadde23[_0x03a7('0x9')]||_0x03a7('0xa');this['Agents']=_0xadde23[_0x03a7('0xb')];this[_0x03a7('0xc')]={};this[_0x03a7('0xd')]=0x0;this[_0x03a7('0x1')]='';this[_0x03a7('0xe')]();this['updateRealtime']();}MailQueue[_0x03a7('0xf')][_0x03a7('0xe')]=function(){var _0x4224a0=this[_0x03a7('0xc')][_0x03a7('0x10')];this[_0x03a7('0xc')]=_[_0x03a7('0x11')](this[_0x03a7('0xb')],'id');this['mapAgentsId'][_0x03a7('0x10')]=_0x4224a0;};MailQueue[_0x03a7('0xf')]['updateRealtime']=function(){this[_0x03a7('0x12')]=0x0;this['paused']=0x0;for(var _0x17c424=0x0;_0x17c424<this['Agents'][_0x03a7('0x13')];_0x17c424+=0x1){if(this[_0x03a7('0xb')][_0x17c424]['online']){this[_0x03a7('0x12')]+=0x1;}if(this['Agents'][_0x17c424][_0x03a7('0x14')]){this[_0x03a7('0x15')]+=0x1;}}this[_0x03a7('0x16')]=this[_0x03a7('0x12')]-this[_0x03a7('0x15')];this[_0x03a7('0x16')]=this['available']>=0x0?this[_0x03a7('0x16')]:0x0;var _0x4444e9={'id':this['id'],'available':this[_0x03a7('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x03a7('0x7')],'paused':this[_0x03a7('0x15')],'waiting':this[_0x03a7('0xd')]};var _0x230209=md5(JSON[_0x03a7('0x17')](_0x4444e9));if(this[_0x03a7('0x1')]!==_0x230209){this[_0x03a7('0x1')]=_0x230209;io['to'](util[_0x03a7('0x18')]('mail:queue:%s',_0x4444e9['name']))[_0x03a7('0x19')](_0x03a7('0x1a'),_0x4444e9);}};module[_0x03a7('0x1b')]=MailQueue;
\ No newline at end of file
index 5f51f7f..b8e0a80 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(_0x513545,_0x158f2e){var _0x18b7c5=function(_0x58514c){while(--_0x58514c){_0x513545['push'](_0x513545['shift']());}};_0x18b7c5(++_0x158f2e);}(_0x1261,0x144));var _0x1126=function(_0x2baca1,_0x2f3557){_0x2baca1=_0x2baca1-0x0;var _0x9aa62a=_0x1261[_0x2baca1];return _0x9aa62a;};'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 _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x326f,0xd1));var _0xf326=function(_0x2fdf85,_0x137154){_0x2fdf85=_0x2fdf85-0x0;var _0x222420=_0x326f[_0x2fdf85];return _0x222420;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
index 417c3cc..3f2a022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe205=['_rr','map','prototype','loggedIn','length','online','paused','available','stringify','format','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','strategy','Agents','waiting','updateRouting','updateRealtime','mapAgentsId'];(function(_0x5e4852,_0x3658d8){var _0x58de56=function(_0x434c28){while(--_0x434c28){_0x5e4852['push'](_0x5e4852['shift']());}};_0x58de56(++_0x3658d8);}(_0xe205,0xa7));var _0x5e20=function(_0x4388a4,_0x26711a){_0x4388a4=_0x4388a4-0x0;var _0x1dc511=_0xe205[_0x4388a4];return _0x1dc511;};'use strict';var _=require(_0x5e20('0x0'));var md5=require(_0x5e20('0x1'));var util=require(_0x5e20('0x2'));var Redis=require(_0x5e20('0x3'));var config=require(_0x5e20('0x4'));config[_0x5e20('0x5')]=_[_0x5e20('0x6')](config[_0x5e20('0x5')],{'host':_0x5e20('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5e20('0x5')]));function SmsQueue(_0x1b26a2){this['id']=_0x1b26a2['id']||0x0;this[_0x5e20('0x8')]=_0x1b26a2[_0x5e20('0x8')]||'';this['timeout']=_0x1b26a2['timeout']||0xa;this[_0x5e20('0x9')]=_0x1b26a2['strategy']||'beepall';this[_0x5e20('0xa')]=_0x1b26a2[_0x5e20('0xa')];this['mapAgentsId']={};this[_0x5e20('0xb')]=0x0;this[_0x5e20('0x1')]='';this[_0x5e20('0xc')]();this[_0x5e20('0xd')]();}SmsQueue['prototype'][_0x5e20('0xc')]=function(){var _0xda6476=this[_0x5e20('0xe')][_0x5e20('0xf')];this[_0x5e20('0xe')]=_[_0x5e20('0x10')](this['Agents'],'id');this[_0x5e20('0xe')][_0x5e20('0xf')]=_0xda6476;};SmsQueue[_0x5e20('0x11')]['updateRealtime']=function(){this[_0x5e20('0x12')]=0x0;this['paused']=0x0;for(var _0x1f47f3=0x0;_0x1f47f3<this['Agents'][_0x5e20('0x13')];_0x1f47f3+=0x1){if(this[_0x5e20('0xa')][_0x1f47f3][_0x5e20('0x14')]){this[_0x5e20('0x12')]+=0x1;}if(this[_0x5e20('0xa')][_0x1f47f3]['smsPause']){this[_0x5e20('0x15')]+=0x1;}}this[_0x5e20('0x16')]=this[_0x5e20('0x12')]-this[_0x5e20('0x15')];this[_0x5e20('0x16')]=this[_0x5e20('0x16')]>=0x0?this[_0x5e20('0x16')]:0x0;var _0xf3488f={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5e20('0x12')],'name':this[_0x5e20('0x8')],'paused':this['paused'],'waiting':this[_0x5e20('0xb')]};var _0x1b1457=md5(JSON[_0x5e20('0x17')](_0xf3488f));if(this[_0x5e20('0x1')]!==_0x1b1457){this['md5']=_0x1b1457;io['to'](util[_0x5e20('0x18')]('sms:queue:%s',_0xf3488f['name']))['emit']('sms_queue:save',_0xf3488f);}};module[_0x5e20('0x19')]=SmsQueue;
\ No newline at end of file
+var _0x702d=['name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','smsPause','available','stringify','emit','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x702d,0x147));var _0xd702=function(_0x1756fc,_0x33a571){_0x1756fc=_0x1756fc-0x0;var _0xbf693c=_0x702d[_0x1756fc];return _0xbf693c;};'use strict';var _=require(_0xd702('0x0'));var md5=require(_0xd702('0x1'));var util=require(_0xd702('0x2'));var Redis=require(_0xd702('0x3'));var config=require(_0xd702('0x4'));config['redis']=_[_0xd702('0x5')](config[_0xd702('0x6')],{'host':_0xd702('0x7'),'port':0x18eb});var io=require(_0xd702('0x8'))(new Redis(config['redis']));function SmsQueue(_0x432e01){this['id']=_0x432e01['id']||0x0;this['name']=_0x432e01[_0xd702('0x9')]||'';this[_0xd702('0xa')]=_0x432e01[_0xd702('0xa')]||0xa;this['strategy']=_0x432e01[_0xd702('0xb')]||'beepall';this[_0xd702('0xc')]=_0x432e01[_0xd702('0xc')];this[_0xd702('0xd')]={};this[_0xd702('0xe')]=0x0;this[_0xd702('0x1')]='';this[_0xd702('0xf')]();this[_0xd702('0x10')]();}SmsQueue[_0xd702('0x11')][_0xd702('0xf')]=function(){var _0x15a632=this['mapAgentsId']['_rr'];this[_0xd702('0xd')]=_[_0xd702('0x12')](this[_0xd702('0xc')],'id');this['mapAgentsId'][_0xd702('0x13')]=_0x15a632;};SmsQueue[_0xd702('0x11')][_0xd702('0x10')]=function(){this[_0xd702('0x14')]=0x0;this[_0xd702('0x15')]=0x0;for(var _0x181ff2=0x0;_0x181ff2<this['Agents'][_0xd702('0x16')];_0x181ff2+=0x1){if(this[_0xd702('0xc')][_0x181ff2]['online']){this[_0xd702('0x14')]+=0x1;}if(this['Agents'][_0x181ff2][_0xd702('0x17')]){this[_0xd702('0x15')]+=0x1;}}this['available']=this[_0xd702('0x14')]-this[_0xd702('0x15')];this[_0xd702('0x18')]=this['available']>=0x0?this['available']:0x0;var _0x2205de={'id':this['id'],'available':this['available'],'loggedIn':this[_0xd702('0x14')],'name':this[_0xd702('0x9')],'paused':this[_0xd702('0x15')],'waiting':this[_0xd702('0xe')]};var _0x4cf326=md5(JSON[_0xd702('0x19')](_0x2205de));if(this[_0xd702('0x1')]!==_0x4cf326){this['md5']=_0x4cf326;io['to'](util['format']('sms:queue:%s',_0x2205de[_0xd702('0x9')]))[_0xd702('0x1a')]('sms_queue:save',_0x2205de);}};module[_0xd702('0x1b')]=SmsQueue;
\ No newline at end of file
index 64831ee..8e3af83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4080=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','redis','defaults','localhost','name','timeout','strategy','beepall','Agents'];(function(_0x141fe2,_0x2e444a){var _0x4379b2=function(_0xf9b6e3){while(--_0xf9b6e3){_0x141fe2['push'](_0x141fe2['shift']());}};_0x4379b2(++_0x2e444a);}(_0x4080,0x1a8));var _0x0408=function(_0x44039a,_0x2ac8a8){_0x44039a=_0x44039a-0x0;var _0x525de5=_0x4080[_0x44039a];return _0x525de5;};'use strict';var _=require(_0x0408('0x0'));var md5=require(_0x0408('0x1'));var util=require(_0x0408('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x0408('0x3')]=_[_0x0408('0x4')](config['redis'],{'host':_0x0408('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0408('0x3')]));function WhatsappQueue(_0x1e3eaf){this['id']=_0x1e3eaf['id']||0x0;this['name']=_0x1e3eaf[_0x0408('0x6')]||'';this['timeout']=_0x1e3eaf[_0x0408('0x7')]||0xa;this['strategy']=_0x1e3eaf[_0x0408('0x8')]||_0x0408('0x9');this[_0x0408('0xa')]=_0x1e3eaf['Agents'];this[_0x0408('0xb')]={};this[_0x0408('0xc')]=0x0;this[_0x0408('0x1')]='';this[_0x0408('0xd')]();this[_0x0408('0xe')]();}WhatsappQueue[_0x0408('0xf')][_0x0408('0xd')]=function(){var _0x38cf8a=this['mapAgentsId'][_0x0408('0x10')];this['mapAgentsId']=_[_0x0408('0x11')](this[_0x0408('0xa')],'id');this[_0x0408('0xb')][_0x0408('0x10')]=_0x38cf8a;};WhatsappQueue[_0x0408('0xf')][_0x0408('0xe')]=function(){this[_0x0408('0x12')]=0x0;this[_0x0408('0x13')]=0x0;for(var _0x54ea94=0x0;_0x54ea94<this['Agents']['length'];_0x54ea94+=0x1){if(this[_0x0408('0xa')][_0x54ea94][_0x0408('0x14')]){this[_0x0408('0x12')]+=0x1;}if(this[_0x0408('0xa')][_0x54ea94][_0x0408('0x15')]){this[_0x0408('0x13')]+=0x1;}}this[_0x0408('0x16')]=this[_0x0408('0x12')]-this[_0x0408('0x13')];this[_0x0408('0x16')]=this['available']>=0x0?this[_0x0408('0x16')]:0x0;var _0x3529d2={'id':this['id'],'available':this[_0x0408('0x16')],'loggedIn':this[_0x0408('0x12')],'name':this[_0x0408('0x6')],'paused':this[_0x0408('0x13')],'waiting':this[_0x0408('0xc')]};var _0x4d97ef=md5(JSON[_0x0408('0x17')](_0x3529d2));if(this[_0x0408('0x1')]!==_0x4d97ef){this[_0x0408('0x1')]=_0x4d97ef;io['to'](util[_0x0408('0x18')](_0x0408('0x19'),_0x3529d2['name']))[_0x0408('0x1a')](_0x0408('0x1b'),_0x3529d2);}};module[_0x0408('0x1c')]=WhatsappQueue;
\ No newline at end of file
+var _0xac00=['loggedIn','paused','length','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','Agents'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xac00,0x119));var _0x0ac0=function(_0x4cdd5a,_0x57e480){_0x4cdd5a=_0x4cdd5a-0x0;var _0x4133d9=_0xac00[_0x4cdd5a];return _0x4133d9;};'use strict';var _=require(_0x0ac0('0x0'));var md5=require(_0x0ac0('0x1'));var util=require('util');var Redis=require(_0x0ac0('0x2'));var config=require(_0x0ac0('0x3'));config[_0x0ac0('0x4')]=_[_0x0ac0('0x5')](config[_0x0ac0('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x0ac0('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x2dbe9f){this['id']=_0x2dbe9f['id']||0x0;this[_0x0ac0('0x7')]=_0x2dbe9f[_0x0ac0('0x7')]||'';this[_0x0ac0('0x8')]=_0x2dbe9f[_0x0ac0('0x8')]||0xa;this['strategy']=_0x2dbe9f[_0x0ac0('0x9')]||_0x0ac0('0xa');this['Agents']=_0x2dbe9f['Agents'];this[_0x0ac0('0xb')]={};this[_0x0ac0('0xc')]=0x0;this[_0x0ac0('0x1')]='';this[_0x0ac0('0xd')]();this[_0x0ac0('0xe')]();}WhatsappQueue[_0x0ac0('0xf')][_0x0ac0('0xd')]=function(){var _0x36e621=this[_0x0ac0('0xb')][_0x0ac0('0x10')];this[_0x0ac0('0xb')]=_[_0x0ac0('0x11')](this[_0x0ac0('0x12')],'id');this[_0x0ac0('0xb')]['_rr']=_0x36e621;};WhatsappQueue[_0x0ac0('0xf')]['updateRealtime']=function(){this[_0x0ac0('0x13')]=0x0;this[_0x0ac0('0x14')]=0x0;for(var _0x244194=0x0;_0x244194<this[_0x0ac0('0x12')][_0x0ac0('0x15')];_0x244194+=0x1){if(this['Agents'][_0x244194][_0x0ac0('0x16')]){this[_0x0ac0('0x13')]+=0x1;}if(this['Agents'][_0x244194][_0x0ac0('0x17')]){this[_0x0ac0('0x14')]+=0x1;}}this[_0x0ac0('0x18')]=this[_0x0ac0('0x13')]-this[_0x0ac0('0x14')];this['available']=this[_0x0ac0('0x18')]>=0x0?this[_0x0ac0('0x18')]:0x0;var _0x1af3a5={'id':this['id'],'available':this[_0x0ac0('0x18')],'loggedIn':this[_0x0ac0('0x13')],'name':this[_0x0ac0('0x7')],'paused':this[_0x0ac0('0x14')],'waiting':this[_0x0ac0('0xc')]};var _0x40965d=md5(JSON[_0x0ac0('0x19')](_0x1af3a5));if(this[_0x0ac0('0x1')]!==_0x40965d){this[_0x0ac0('0x1')]=_0x40965d;io['to'](util[_0x0ac0('0x1a')](_0x0ac0('0x1b'),_0x1af3a5[_0x0ac0('0x7')]))[_0x0ac0('0x1c')](_0x0ac0('0x1d'),_0x1af3a5);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 40f802d..79e558d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+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(_0x10199f,_0x376077){var _0x215f26=function(_0x3b8d83){while(--_0x3b8d83){_0x10199f['push'](_0x10199f['shift']());}};_0x215f26(++_0x376077);}(_0xb10b,0x12a));var _0xbb10=function(_0x294a77,_0x8a359d){_0x294a77=_0x294a77-0x0;var _0x17db6d=_0xb10b[_0x294a77];return _0x17db6d;};'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 86ae1d3..49e0243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5f0=['addTags','AddTagsToChatInteraction','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x5768fb,_0x8b7a1){var _0x245f8a=function(_0x1be2ff){while(--_0x1be2ff){_0x5768fb['push'](_0x5768fb['shift']());}};_0x245f8a(++_0x8b7a1);}(_0xc5f0,0x1be));var _0x0c5f=function(_0x36bf88,_0x15c459){_0x36bf88=_0x36bf88-0x0;var _0x332914=_0xc5f0[_0x36bf88];return _0x332914;};'use strict';var client=require('../client');exports[_0x0c5f('0x0')]=function(_0x2650af,_0x5d5314){return client[_0x0c5f('0x1')](_0x0c5f('0x2'),{'body':_0x5d5314,'options':{'where':{'id':_0x2650af}},'log':_0x0c5f('0x3')});};exports[_0x0c5f('0x4')]=function(_0x241531,_0x331e10){return client['Request'](_0x0c5f('0x5'),{'body':_0x331e10,'options':{'where':{'id':_0x241531}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xab1a=['addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags'];(function(_0x4a0f57,_0x152766){var _0x367a37=function(_0x4d2da0){while(--_0x4d2da0){_0x4a0f57['push'](_0x4a0f57['shift']());}};_0x367a37(++_0x152766);}(_0xab1a,0x174));var _0xaab1=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0xab1a[_0x3e2fcf];return _0x497db7;};'use strict';var client=require(_0xaab1('0x0'));exports[_0xaab1('0x1')]=function(_0x805795,_0x853b74){return client[_0xaab1('0x2')](_0xaab1('0x3'),{'body':_0x853b74,'options':{'where':{'id':_0x805795}},'log':_0xaab1('0x4')});};exports[_0xaab1('0x5')]=function(_0x4296e5,_0xa0757b){return client[_0xaab1('0x2')]('AddTagsToChatInteraction',{'body':_0xa0757b,'options':{'where':{'id':_0x4296e5}},'log':_0xaab1('0x6')});};
\ No newline at end of file
index 01c371b..fd82819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dfd=['CreateChatMessage','../client','create','Request'];(function(_0x56a616,_0x5a3c7c){var _0xe94844=function(_0x1d3816){while(--_0x1d3816){_0x56a616['push'](_0x56a616['shift']());}};_0xe94844(++_0x5a3c7c);}(_0x6dfd,0xa1));var _0xd6df=function(_0x482e8a,_0x1131ed){_0x482e8a=_0x482e8a-0x0;var _0x4f4764=_0x6dfd[_0x482e8a];return _0x4f4764;};'use strict';var client=require(_0xd6df('0x0'));exports[_0xd6df('0x1')]=function(_0x303a19){return client[_0xd6df('0x2')](_0xd6df('0x3'),{'body':_0x303a19,'log':'createChatMessage'});};
\ No newline at end of file
+var _0xd3eb=['createChatMessage','../client','create','CreateChatMessage'];(function(_0x39758d,_0x346423){var _0x44ac11=function(_0x175008){while(--_0x175008){_0x39758d['push'](_0x39758d['shift']());}};_0x44ac11(++_0x346423);}(_0xd3eb,0x65));var _0xbd3e=function(_0x404cde,_0x27b51c){_0x404cde=_0x404cde-0x0;var _0x139882=_0xd3eb[_0x404cde];return _0x139882;};'use strict';var client=require(_0xbd3e('0x0'));exports[_0xbd3e('0x1')]=function(_0x382684){return client['Request'](_0xbd3e('0x2'),{'body':_0x382684,'log':_0xbd3e('0x3')});};
\ No newline at end of file
index da7d18b..326f391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf98=['strategy','User','Agents','name','online','chatPause','getChatQueues','../client','Request','timeout'];(function(_0x125ec3,_0x41d38d){var _0x5346a0=function(_0x178325){while(--_0x178325){_0x125ec3['push'](_0x125ec3['shift']());}};_0x5346a0(++_0x41d38d);}(_0xdf98,0xcf));var _0x8df9=function(_0x3ed25d,_0x6c37b2){_0x3ed25d=_0x3ed25d-0x0;var _0x5e0998=_0xdf98[_0x3ed25d];return _0x5e0998;};'use strict';var client=require(_0x8df9('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x8df9('0x1')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x8df9('0x2'),_0x8df9('0x3')],'include':[{'model':_0x8df9('0x4'),'as':_0x8df9('0x5'),'attributes':['id',_0x8df9('0x6'),_0x8df9('0x7'),_0x8df9('0x8')]}]},'log':_0x8df9('0x9')});};};
\ No newline at end of file
+var _0xcb57=['chatPause','../client','getChatQueues','GetChatQueue','timeout','User','Agents','online'];(function(_0x25e2bc,_0x27d1ef){var _0x5152d3=function(_0x354708){while(--_0x354708){_0x25e2bc['push'](_0x25e2bc['shift']());}};_0x5152d3(++_0x27d1ef);}(_0xcb57,0xa1));var _0x7cb5=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0xcb57[_0x47aa64];return _0x549c7a;};'use strict';var client=require(_0x7cb5('0x0'));exports[_0x7cb5('0x1')]=function(){return function(){return client['Request'](_0x7cb5('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x7cb5('0x3'),'strategy'],'include':[{'model':_0x7cb5('0x4'),'as':_0x7cb5('0x5'),'attributes':['id','name',_0x7cb5('0x6'),_0x7cb5('0x7')]}]},'log':_0x7cb5('0x1')});};};
\ No newline at end of file
index c545608..e2cd1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d5=['UpdateChatQueueReport','../client','create','Request','CreateChatQueueReport','DESC'];(function(_0x3fc81c,_0x34014b){var _0x57d3b7=function(_0x2e52df){while(--_0x2e52df){_0x3fc81c['push'](_0x3fc81c['shift']());}};_0x57d3b7(++_0x34014b);}(_0x97d5,0x199));var _0x597d=function(_0x547d4f,_0x235d16){_0x547d4f=_0x547d4f-0x0;var _0x3e16b2=_0x97d5[_0x547d4f];return _0x3e16b2;};'use strict';var client=require(_0x597d('0x0'));exports[_0x597d('0x1')]=function(_0x2366b3){return client[_0x597d('0x2')](_0x597d('0x3'),{'body':_0x2366b3,'log':_0x597d('0x3')});};exports['update']=function(_0x3324dc,_0x2d89ef){return client[_0x597d('0x2')]('UpdateChatQueueReport',{'body':_0x2d89ef,'options':{'where':{'uniqueid':_0x3324dc},'order':[['id',_0x597d('0x4')]],'limit':0x1},'log':_0x597d('0x5')});};
\ No newline at end of file
+var _0x851e=['CreateChatQueueReport','update','Request','DESC','UpdateChatQueueReport','../client','create'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0x851e,0x1e8));var _0xe851=function(_0x445d20,_0x39643f){_0x445d20=_0x445d20-0x0;var _0x26e5f2=_0x851e[_0x445d20];return _0x26e5f2;};'use strict';var client=require(_0xe851('0x0'));exports[_0xe851('0x1')]=function(_0x2bc74b){return client['Request']('CreateChatQueueReport',{'body':_0x2bc74b,'log':_0xe851('0x2')});};exports[_0xe851('0x3')]=function(_0x16b38a,_0x326b34){return client[_0xe851('0x4')]('UpdateChatQueueReport',{'body':_0x326b34,'options':{'where':{'uniqueid':_0x16b38a},'order':[['id',_0xe851('0x5')]],'limit':0x1},'log':_0xe851('0x6')});};
\ No newline at end of file
index 682309a..2ae05af 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(_0x1413e6,_0xfc5531){var _0x2276b7=function(_0x212d69){while(--_0x212d69){_0x1413e6['push'](_0x1413e6['shift']());}};_0x2276b7(++_0xfc5531);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x408e38,_0x23cda8){var _0x426b0e=function(_0x8f2898){while(--_0x8f2898){_0x408e38['push'](_0x408e38['shift']());}};_0x426b0e(++_0x23cda8);}(_0x7a54,0x106));var _0x47a5=function(_0x4898c7,_0x525a78){_0x4898c7=_0x4898c7-0x0;var _0x206232=_0x7a54[_0x4898c7];return _0x206232;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index c2f006f..81c3bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e03=['create','CreateFaxMessage','createFaxMessage','../client'];(function(_0x3f00ee,_0x1d1673){var _0x18a07e=function(_0x4dad57){while(--_0x4dad57){_0x3f00ee['push'](_0x3f00ee['shift']());}};_0x18a07e(++_0x1d1673);}(_0x5e03,0x173));var _0x35e0=function(_0x5c326c,_0x23b53a){_0x5c326c=_0x5c326c-0x0;var _0x1674f6=_0x5e03[_0x5c326c];return _0x1674f6;};'use strict';var client=require(_0x35e0('0x0'));exports[_0x35e0('0x1')]=function(_0x3c6744){return client['Request'](_0x35e0('0x2'),{'body':_0x3c6744,'log':_0x35e0('0x3')});};
\ No newline at end of file
+var _0x0c25=['../client','create','Request','createFaxMessage'];(function(_0x1dfaa5,_0x4ace4b){var _0x438a52=function(_0x491925){while(--_0x491925){_0x1dfaa5['push'](_0x1dfaa5['shift']());}};_0x438a52(++_0x4ace4b);}(_0x0c25,0x150));var _0x50c2=function(_0xcfeff4,_0x3f2e19){_0xcfeff4=_0xcfeff4-0x0;var _0xb2fadc=_0x0c25[_0xcfeff4];return _0xb2fadc;};'use strict';var client=require(_0x50c2('0x0'));exports[_0x50c2('0x1')]=function(_0x54e10d){return client[_0x50c2('0x2')]('CreateFaxMessage',{'body':_0x54e10d,'log':_0x50c2('0x3')});};
\ No newline at end of file
index 6b7ae03..c78c638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ad=['Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause','../client','getFaxQueues'];(function(_0x4baaa2,_0x3a100a){var _0x5cfc61=function(_0x184610){while(--_0x184610){_0x4baaa2['push'](_0x4baaa2['shift']());}};_0x5cfc61(++_0x3a100a);}(_0x25ad,0x127));var _0xd25a=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0x25ad[_0x340380];return _0x49ce1c;};'use strict';var client=require(_0xd25a('0x0'));exports[_0xd25a('0x1')]=function(){return function(){return client[_0xd25a('0x2')](_0xd25a('0x3'),{'options':{'raw':![],'attributes':['id',_0xd25a('0x4'),_0xd25a('0x5'),_0xd25a('0x6')],'include':[{'model':_0xd25a('0x7'),'as':_0xd25a('0x8'),'attributes':['id','name',_0xd25a('0x9'),_0xd25a('0xa')]}]},'log':_0xd25a('0x1')});};};
\ No newline at end of file
+var _0x31dd=['online','faxPause','getFaxQueues','Request','GetFaxQueue','timeout','strategy'];(function(_0x3b5935,_0x373a59){var _0x50a7d8=function(_0x56ccf7){while(--_0x56ccf7){_0x3b5935['push'](_0x3b5935['shift']());}};_0x50a7d8(++_0x373a59);}(_0x31dd,0x1bb));var _0xd31d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x31dd[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0xd31d('0x0')]=function(){return function(){return client[_0xd31d('0x1')](_0xd31d('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xd31d('0x3'),_0xd31d('0x4')],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0xd31d('0x5'),_0xd31d('0x6')]}]},'log':_0xd31d('0x0')});};};
\ No newline at end of file
index 7c306b8..5950a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5611=['../client','create','CreateFaxQueueReport','update','DESC','UpdateFaxQueueReport'];(function(_0x492221,_0x9e2521){var _0x398bf9=function(_0x303c5b){while(--_0x303c5b){_0x492221['push'](_0x492221['shift']());}};_0x398bf9(++_0x9e2521);}(_0x5611,0x1d4));var _0x1561=function(_0x2435b3,_0xb17083){_0x2435b3=_0x2435b3-0x0;var _0x1ebe6a=_0x5611[_0x2435b3];return _0x1ebe6a;};'use strict';var client=require(_0x1561('0x0'));exports[_0x1561('0x1')]=function(_0xa2b913){return client['Request'](_0x1561('0x2'),{'body':_0xa2b913,'log':_0x1561('0x2')});};exports[_0x1561('0x3')]=function(_0x33abb8,_0x4c3868){return client['Request']('UpdateFaxQueueReport',{'body':_0x4c3868,'options':{'where':{'uniqueid':_0x33abb8},'order':[['id',_0x1561('0x4')]],'limit':0x1},'log':_0x1561('0x5')});};
\ No newline at end of file
+var _0xf900=['Request','UpdateFaxQueueReport','DESC','../client','create','CreateFaxQueueReport'];(function(_0x343dfb,_0x4c2796){var _0x59cf9f=function(_0x57c8e6){while(--_0x57c8e6){_0x343dfb['push'](_0x343dfb['shift']());}};_0x59cf9f(++_0x4c2796);}(_0xf900,0xbd));var _0x0f90=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xf900[_0x465a0c];return _0x1e202e;};'use strict';var client=require(_0x0f90('0x0'));exports[_0x0f90('0x1')]=function(_0x56ce0e){return client['Request']('CreateFaxQueueReport',{'body':_0x56ce0e,'log':_0x0f90('0x2')});};exports['update']=function(_0x4264cb,_0x424650){return client[_0x0f90('0x3')](_0x0f90('0x4'),{'body':_0x424650,'options':{'where':{'uniqueid':_0x4264cb},'order':[['id',_0x0f90('0x5')]],'limit':0x1},'log':_0x0f90('0x4')});};
\ No newline at end of file
index 05b88a6..e762478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ff0=['name','../client','getIntervals','Request','Interval','Intervals'];(function(_0x4e8dde,_0x592f14){var _0x1cebd0=function(_0x20ea0c){while(--_0x20ea0c){_0x4e8dde['push'](_0x4e8dde['shift']());}};_0x1cebd0(++_0x592f14);}(_0x2ff0,0x8b));var _0x02ff=function(_0x4da123,_0x2c94d0){_0x4da123=_0x4da123-0x0;var _0x386ecc=_0x2ff0[_0x4da123];return _0x386ecc;};'use strict';var client=require(_0x02ff('0x0'));exports[_0x02ff('0x1')]=function(){return function(){return client[_0x02ff('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x02ff('0x3'),'as':_0x02ff('0x4'),'attributes':['id',_0x02ff('0x5'),'interval']}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x4a46=['Interval','Intervals','name','getIntervals','Request'];(function(_0x31e11b,_0x22bd4e){var _0x1b415a=function(_0x340bde){while(--_0x340bde){_0x31e11b['push'](_0x31e11b['shift']());}};_0x1b415a(++_0x22bd4e);}(_0x4a46,0xb2));var _0x64a4=function(_0xce948f,_0x4a47a1){_0xce948f=_0xce948f-0x0;var _0x31e0e7=_0x4a46[_0xce948f];return _0x31e0e7;};'use strict';var client=require('../client');exports[_0x64a4('0x0')]=function(){return function(){return client[_0x64a4('0x1')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x64a4('0x2'),'as':_0x64a4('0x3'),'attributes':['id',_0x64a4('0x4'),'interval']}]},'log':_0x64a4('0x0')});};};
\ No newline at end of file
index 5aa49a5..8f9c33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5af=['update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x303824,_0x52ec68){var _0x4f3d44=function(_0x4c07a5){while(--_0x4c07a5){_0x303824['push'](_0x303824['shift']());}};_0x4f3d44(++_0x52ec68);}(_0xe5af,0x9c));var _0xfe5a=function(_0x1b2d30,_0x2d4882){_0x1b2d30=_0x1b2d30-0x0;var _0x48001e=_0xe5af[_0x1b2d30];return _0x48001e;};'use strict';var client=require('../client');exports[_0xfe5a('0x0')]=function(_0x189c37,_0x4b1845){return client[_0xfe5a('0x1')](_0xfe5a('0x2'),{'body':_0x4b1845,'options':{'where':{'id':_0x189c37}},'log':_0xfe5a('0x3')});};exports['addTags']=function(_0x1165e3,_0x48e3a7){return client['Request'](_0xfe5a('0x4'),{'body':_0x48e3a7,'options':{'where':{'id':_0x1165e3}},'log':_0xfe5a('0x5')});};
\ No newline at end of file
+var _0xb145=['AddTagsToMailInteraction','addTagsToChatInteraction','update','Request','UpdateMailInteraction','updateMailInteraction','addTags'];(function(_0x433d12,_0x2bfd67){var _0xcfa05b=function(_0x267f57){while(--_0x267f57){_0x433d12['push'](_0x433d12['shift']());}};_0xcfa05b(++_0x2bfd67);}(_0xb145,0xa3));var _0x5b14=function(_0xb8570a,_0x308c95){_0xb8570a=_0xb8570a-0x0;var _0x162a39=_0xb145[_0xb8570a];return _0x162a39;};'use strict';var client=require('../client');exports[_0x5b14('0x0')]=function(_0xc54593,_0x935de1){return client[_0x5b14('0x1')](_0x5b14('0x2'),{'body':_0x935de1,'options':{'where':{'id':_0xc54593}},'log':_0x5b14('0x3')});};exports[_0x5b14('0x4')]=function(_0x34b4cd,_0x5111cd){return client[_0x5b14('0x1')](_0x5b14('0x5'),{'body':_0x5111cd,'options':{'where':{'id':_0x34b4cd}},'log':_0x5b14('0x6')});};
\ No newline at end of file
index a2ac4ee..9b9d0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x851c=['create','Request','createMailMessage','../client'];(function(_0x30cdc5,_0x481edb){var _0x2ae4fd=function(_0xcb7636){while(--_0xcb7636){_0x30cdc5['push'](_0x30cdc5['shift']());}};_0x2ae4fd(++_0x481edb);}(_0x851c,0xff));var _0xc851=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x851c[_0x5b644e];return _0x49c6bf;};'use strict';var client=require(_0xc851('0x0'));exports[_0xc851('0x1')]=function(_0x2fd7d2){return client[_0xc851('0x2')]('CreateMailMessage',{'body':_0x2fd7d2,'log':_0xc851('0x3')});};
\ No newline at end of file
+var _0x2de7=['createMailMessage','create','CreateMailMessage'];(function(_0x3e978c,_0x1d5774){var _0x295585=function(_0x309460){while(--_0x309460){_0x3e978c['push'](_0x3e978c['shift']());}};_0x295585(++_0x1d5774);}(_0x2de7,0x1db));var _0x72de=function(_0x2bc049,_0x4e3eec){_0x2bc049=_0x2bc049-0x0;var _0x3152b1=_0x2de7[_0x2bc049];return _0x3152b1;};'use strict';var client=require('../client');exports[_0x72de('0x0')]=function(_0x454a5b){return client['Request'](_0x72de('0x1'),{'body':_0x454a5b,'log':_0x72de('0x2')});};
\ No newline at end of file
index ec4f174..fb5cc03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f56=['strategy','User','Agents','online','../client','getMailQueues','Request','GetMailQueue','name','timeout'];(function(_0xbd5f59,_0x56f0e9){var _0x1e7054=function(_0x783f4){while(--_0x783f4){_0xbd5f59['push'](_0xbd5f59['shift']());}};_0x1e7054(++_0x56f0e9);}(_0x8f56,0x72));var _0x68f5=function(_0x366e4b,_0x1b6cc3){_0x366e4b=_0x366e4b-0x0;var _0x330b0b=_0x8f56[_0x366e4b];return _0x330b0b;};'use strict';var client=require(_0x68f5('0x0'));exports[_0x68f5('0x1')]=function(){return function(){return client[_0x68f5('0x2')](_0x68f5('0x3'),{'options':{'raw':![],'attributes':['id',_0x68f5('0x4'),_0x68f5('0x5'),_0x68f5('0x6')],'include':[{'model':_0x68f5('0x7'),'as':_0x68f5('0x8'),'attributes':['id',_0x68f5('0x4'),_0x68f5('0x9'),'mailPause']}]},'log':_0x68f5('0x1')});};};
\ No newline at end of file
+var _0x74f9=['strategy','User','mailPause','getMailQueues','Request','name','timeout'];(function(_0x57ef26,_0x3cf409){var _0x147fee=function(_0xc42137){while(--_0xc42137){_0x57ef26['push'](_0x57ef26['shift']());}};_0x147fee(++_0x3cf409);}(_0x74f9,0x153));var _0x974f=function(_0x34ecd4,_0x3f9685){_0x34ecd4=_0x34ecd4-0x0;var _0x224c67=_0x74f9[_0x34ecd4];return _0x224c67;};'use strict';var client=require('../client');exports[_0x974f('0x0')]=function(){return function(){return client[_0x974f('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x974f('0x2'),_0x974f('0x3'),_0x974f('0x4')],'include':[{'model':_0x974f('0x5'),'as':'Agents','attributes':['id',_0x974f('0x2'),'online',_0x974f('0x6')]}]},'log':_0x974f('0x0')});};};
\ No newline at end of file
index f690f6a..37719f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb515=['create','Request','update','DESC','UpdateMailQueueReport','../client'];(function(_0x4651cf,_0x5635){var _0x2e8340=function(_0x5bd7d1){while(--_0x5bd7d1){_0x4651cf['push'](_0x4651cf['shift']());}};_0x2e8340(++_0x5635);}(_0xb515,0x1df));var _0x5b51=function(_0x3c6ae2,_0x5c52d8){_0x3c6ae2=_0x3c6ae2-0x0;var _0x4edda=_0xb515[_0x3c6ae2];return _0x4edda;};'use strict';var client=require(_0x5b51('0x0'));exports[_0x5b51('0x1')]=function(_0x56a342){return client[_0x5b51('0x2')]('CreateMailQueueReport',{'body':_0x56a342,'log':'CreateMailQueueReport'});};exports[_0x5b51('0x3')]=function(_0x472937,_0x2a6944){return client[_0x5b51('0x2')]('UpdateMailQueueReport',{'body':_0x2a6944,'options':{'where':{'uniqueid':_0x472937},'order':[['id',_0x5b51('0x4')]],'limit':0x1},'log':_0x5b51('0x5')});};
\ No newline at end of file
+var _0x804f=['Request','UpdateMailQueueReport','../client','create','CreateMailQueueReport','update'];(function(_0x558128,_0x149f37){var _0x10e830=function(_0x567ea6){while(--_0x567ea6){_0x558128['push'](_0x558128['shift']());}};_0x10e830(++_0x149f37);}(_0x804f,0x152));var _0xf804=function(_0x4b7253,_0x539acd){_0x4b7253=_0x4b7253-0x0;var _0xc44308=_0x804f[_0x4b7253];return _0xc44308;};'use strict';var client=require(_0xf804('0x0'));exports[_0xf804('0x1')]=function(_0x23540d){return client['Request'](_0xf804('0x2'),{'body':_0x23540d,'log':_0xf804('0x2')});};exports[_0xf804('0x3')]=function(_0x512332,_0x2f47b8){return client[_0xf804('0x4')](_0xf804('0x5'),{'body':_0x2f47b8,'options':{'where':{'uniqueid':_0x512332},'order':[['id','DESC']],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 46e487f..e1702e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d06=['addTags','Request','../client','UpdateOpenchannelInteraction','updateOpenchannelInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d06,0x12e));var _0x63d0=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0x3d06[_0x3f4891];return _0x54f2d8;};'use strict';var client=require(_0x63d0('0x0'));exports['update']=function(_0x1b30fe,_0x412ea6){return client['Request'](_0x63d0('0x1'),{'body':_0x412ea6,'options':{'where':{'id':_0x1b30fe}},'log':_0x63d0('0x2')});};exports[_0x63d0('0x3')]=function(_0x42ecea,_0x31a58e){return client[_0x63d0('0x4')]('AddTagsToOpenchannelInteraction',{'body':_0x31a58e,'options':{'where':{'id':_0x42ecea}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x43c0=['AddTagsToOpenchannelInteraction','../client','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags'];(function(_0x22c684,_0x753309){var _0x39fcbb=function(_0x38b631){while(--_0x38b631){_0x22c684['push'](_0x22c684['shift']());}};_0x39fcbb(++_0x753309);}(_0x43c0,0x1e7));var _0x043c=function(_0x10f3a0,_0x11f317){_0x10f3a0=_0x10f3a0-0x0;var _0x5b71a3=_0x43c0[_0x10f3a0];return _0x5b71a3;};'use strict';var client=require(_0x043c('0x0'));exports['update']=function(_0x1e60bd,_0x3ca5af){return client[_0x043c('0x1')](_0x043c('0x2'),{'body':_0x3ca5af,'options':{'where':{'id':_0x1e60bd}},'log':_0x043c('0x3')});};exports[_0x043c('0x4')]=function(_0x32042f,_0x561ea3){return client[_0x043c('0x1')](_0x043c('0x5'),{'body':_0x561ea3,'options':{'where':{'id':_0x32042f}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 1e64a8a..3b90f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e4=['createOpenchannelMessage','../client','create','Request','CreateOpenchannelMessage'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0xd5e4,0x150));var _0x4d5e=function(_0x1b088d,_0x11d94c){_0x1b088d=_0x1b088d-0x0;var _0xe138eb=_0xd5e4[_0x1b088d];return _0xe138eb;};'use strict';var client=require(_0x4d5e('0x0'));exports[_0x4d5e('0x1')]=function(_0x35f460){return client[_0x4d5e('0x2')](_0x4d5e('0x3'),{'body':_0x35f460,'log':_0x4d5e('0x4')});};
\ No newline at end of file
+var _0x7ab1=['createOpenchannelMessage','../client','create','Request','CreateOpenchannelMessage'];(function(_0x9d8dd8,_0x17f60c){var _0x556a56=function(_0x3f91a9){while(--_0x3f91a9){_0x9d8dd8['push'](_0x9d8dd8['shift']());}};_0x556a56(++_0x17f60c);}(_0x7ab1,0x164));var _0x17ab=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x7ab1[_0x13ea00];return _0x1f7347;};'use strict';var client=require(_0x17ab('0x0'));exports[_0x17ab('0x1')]=function(_0x1c7dcd){return client[_0x17ab('0x2')](_0x17ab('0x3'),{'body':_0x1c7dcd,'log':_0x17ab('0x4')});};
\ No newline at end of file
index 907e6fe..4dcb5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5550=['User','Agents','online','getOpenchannelQueues','../client','Request','name','timeout','strategy'];(function(_0x4cc55c,_0x28cfa5){var _0x38fc1b=function(_0x1b3068){while(--_0x1b3068){_0x4cc55c['push'](_0x4cc55c['shift']());}};_0x38fc1b(++_0x28cfa5);}(_0x5550,0xdc));var _0x0555=function(_0x2e9fb9,_0x538aa8){_0x2e9fb9=_0x2e9fb9-0x0;var _0x22572f=_0x5550[_0x2e9fb9];return _0x22572f;};'use strict';var client=require(_0x0555('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0x0555('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x0555('0x2'),_0x0555('0x3'),_0x0555('0x4')],'include':[{'model':_0x0555('0x5'),'as':_0x0555('0x6'),'attributes':['id',_0x0555('0x2'),_0x0555('0x7'),'openchannelPause']}]},'log':_0x0555('0x8')});};};
\ No newline at end of file
+var _0x8ef8=['online','getOpenchannelQueues','Request','name','timeout','strategy','User','Agents'];(function(_0xe342e4,_0x2c77af){var _0x5f0535=function(_0x281d10){while(--_0x281d10){_0xe342e4['push'](_0xe342e4['shift']());}};_0x5f0535(++_0x2c77af);}(_0x8ef8,0x111));var _0x88ef=function(_0x4bba4a,_0x116f7d){_0x4bba4a=_0x4bba4a-0x0;var _0x4d8d61=_0x8ef8[_0x4bba4a];return _0x4d8d61;};'use strict';var client=require('../client');exports[_0x88ef('0x0')]=function(){return function(){return client[_0x88ef('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0x88ef('0x2'),_0x88ef('0x3'),_0x88ef('0x4')],'include':[{'model':_0x88ef('0x5'),'as':_0x88ef('0x6'),'attributes':['id',_0x88ef('0x2'),_0x88ef('0x7'),'openchannelPause']}]},'log':_0x88ef('0x0')});};};
\ No newline at end of file
index 7c78d69..44a08ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76c1=['CreateOpenchannelQueueReport','update','../client','create','Request'];(function(_0x2b2c53,_0x4bcf9b){var _0x311ec2=function(_0x4a8e72){while(--_0x4a8e72){_0x2b2c53['push'](_0x2b2c53['shift']());}};_0x311ec2(++_0x4bcf9b);}(_0x76c1,0x1b5));var _0x176c=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x76c1[_0x14fad0];return _0x5c665f;};'use strict';var client=require(_0x176c('0x0'));exports[_0x176c('0x1')]=function(_0x43a14e){return client[_0x176c('0x2')](_0x176c('0x3'),{'body':_0x43a14e,'log':_0x176c('0x3')});};exports[_0x176c('0x4')]=function(_0x59d61a,_0x2e5d42){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x2e5d42,'options':{'where':{'uniqueid':_0x59d61a},'order':[['id','DESC']],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x754b=['Request','CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport','../client','create'];(function(_0x55cc58,_0x5ce0af){var _0x26062e=function(_0x59e29d){while(--_0x59e29d){_0x55cc58['push'](_0x55cc58['shift']());}};_0x26062e(++_0x5ce0af);}(_0x754b,0x1ef));var _0xb754=function(_0xee5d2a,_0x534134){_0xee5d2a=_0xee5d2a-0x0;var _0x346948=_0x754b[_0xee5d2a];return _0x346948;};'use strict';var client=require(_0xb754('0x0'));exports[_0xb754('0x1')]=function(_0x26624c){return client[_0xb754('0x2')](_0xb754('0x3'),{'body':_0x26624c,'log':'CreateOpenchannelQueueReport'});};exports[_0xb754('0x4')]=function(_0x5bf7c2,_0x1b5592){return client[_0xb754('0x2')]('UpdateOpenchannelQueueReport',{'body':_0x1b5592,'options':{'where':{'uniqueid':_0x5bf7c2},'order':[['id',_0xb754('0x5')]],'limit':0x1},'log':_0xb754('0x6')});};
\ No newline at end of file
index 042355a..eb9b49c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['Request','addTagsToSmsInteraction','../client','update','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x32c012,_0xe3c576){var _0x48562e=function(_0x505228){while(--_0x505228){_0x32c012['push'](_0x32c012['shift']());}};_0x48562e(++_0xe3c576);}(_0xeec6,0x1c2));var _0x6eec=function(_0x3b2244,_0x54873f){_0x3b2244=_0x3b2244-0x0;var _0x2dcc14=_0xeec6[_0x3b2244];return _0x2dcc14;};'use strict';var client=require(_0x6eec('0x0'));exports[_0x6eec('0x1')]=function(_0x16ccaa,_0x33cc53){return client['Request'](_0x6eec('0x2'),{'body':_0x33cc53,'options':{'where':{'id':_0x16ccaa}},'log':_0x6eec('0x3')});};exports[_0x6eec('0x4')]=function(_0x2d7a15,_0x3e7b6b){return client[_0x6eec('0x5')]('AddTagsToSmsInteraction',{'body':_0x3e7b6b,'options':{'where':{'id':_0x2d7a15}},'log':_0x6eec('0x6')});};
\ No newline at end of file
+var _0x03ce=['addTagsToSmsInteraction','../client','update','UpdateSmsInteraction','updateSmsInteraction','addTags','Request','AddTagsToSmsInteraction'];(function(_0x4233aa,_0x4e707c){var _0xf4bdaf=function(_0x1c6456){while(--_0x1c6456){_0x4233aa['push'](_0x4233aa['shift']());}};_0xf4bdaf(++_0x4e707c);}(_0x03ce,0x1a1));var _0xe03c=function(_0x1e1106,_0x2c09b0){_0x1e1106=_0x1e1106-0x0;var _0xe88c6c=_0x03ce[_0x1e1106];return _0xe88c6c;};'use strict';var client=require(_0xe03c('0x0'));exports[_0xe03c('0x1')]=function(_0x237c84,_0x4ca1c8){return client['Request'](_0xe03c('0x2'),{'body':_0x4ca1c8,'options':{'where':{'id':_0x237c84}},'log':_0xe03c('0x3')});};exports[_0xe03c('0x4')]=function(_0x527a32,_0x317708){return client[_0xe03c('0x5')](_0xe03c('0x6'),{'body':_0x317708,'options':{'where':{'id':_0x527a32}},'log':_0xe03c('0x7')});};
\ No newline at end of file
index 2ecdf1b..cd1b244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb788=['CreateSmsMessage','../client','create','Request'];(function(_0x43f6c3,_0x5b2fa4){var _0x5d698d=function(_0x303211){while(--_0x303211){_0x43f6c3['push'](_0x43f6c3['shift']());}};_0x5d698d(++_0x5b2fa4);}(_0xb788,0xd1));var _0x8b78=function(_0x802997,_0x5534a2){_0x802997=_0x802997-0x0;var _0x35c641=_0xb788[_0x802997];return _0x35c641;};'use strict';var client=require(_0x8b78('0x0'));exports[_0x8b78('0x1')]=function(_0x57db32){return client[_0x8b78('0x2')](_0x8b78('0x3'),{'body':_0x57db32,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x32f0=['CreateSmsMessage','../client','create','Request'];(function(_0x15479f,_0x56c56f){var _0x12313a=function(_0x1b75c2){while(--_0x1b75c2){_0x15479f['push'](_0x15479f['shift']());}};_0x12313a(++_0x56c56f);}(_0x32f0,0x75));var _0x032f=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x32f0[_0x5ce15c];return _0x36e4f5;};'use strict';var client=require(_0x032f('0x0'));exports[_0x032f('0x1')]=function(_0x2f1fc4){return client[_0x032f('0x2')](_0x032f('0x3'),{'body':_0x2f1fc4,'log':'createSmsMessage'});};
\ No newline at end of file
index 2f87acb..249af97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x3409bc,_0x10db18){var _0x1f48b3=function(_0x2d6bc2){while(--_0x2d6bc2){_0x3409bc['push'](_0x3409bc['shift']());}};_0x1f48b3(++_0x10db18);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb7e7[_0x3e5086];return _0xfeb102;};'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 _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x5c9b7f,_0x21c0dc){var _0xbbe6e3=function(_0x58af72){while(--_0x58af72){_0x5c9b7f['push'](_0x5c9b7f['shift']());}};_0xbbe6e3(++_0x21c0dc);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
index d0b511b..a9d239f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Request','CreateSmsQueueReport','update','UpdateSmsQueueReport'];(function(_0x12cf59,_0xaa6e36){var _0x2d9c89=function(_0x46506f){while(--_0x46506f){_0x12cf59['push'](_0x12cf59['shift']());}};_0x2d9c89(++_0xaa6e36);}(_0x9c44,0x178));var _0x49c4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x9c44[_0x3bf83f];return _0x22c4a9;};'use strict';var client=require('../client');exports['create']=function(_0x1ffbbf){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'body':_0x1ffbbf,'log':_0x49c4('0x1')});};exports[_0x49c4('0x2')]=function(_0x2ad237,_0x4e0313){return client['Request'](_0x49c4('0x3'),{'body':_0x4e0313,'options':{'where':{'uniqueid':_0x2ad237},'order':[['id','DESC']],'limit':0x1},'log':_0x49c4('0x3')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x75ce5b,_0x3b582f){var _0x22195e=function(_0x166668){while(--_0x166668){_0x75ce5b['push'](_0x75ce5b['shift']());}};_0x22195e(++_0x3b582f);}(_0xedd9,0xfc));var _0x9edd=function(_0x201d3a,_0xc9fe68){_0x201d3a=_0x201d3a-0x0;var _0x40a686=_0xedd9[_0x201d3a];return _0x40a686;};'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 f1e9615..c346881 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(_0x3a9cae,_0x3b2a2d){var _0x3b19c5=function(_0x4ad944){while(--_0x4ad944){_0x3a9cae['push'](_0x3a9cae['shift']());}};_0x3b19c5(++_0x3b2a2d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0x3b9d2c,_0x5bcfa5){var _0x52d4f1=function(_0xffe88e){while(--_0xffe88e){_0x3b9d2c['push'](_0x3b9d2c['shift']());}};_0x52d4f1(++_0x5bcfa5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 769fc02..0267acc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ad=['addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x3a0f77,_0x39f605){var _0x54fd0c=function(_0x46208c){while(--_0x46208c){_0x3a0f77['push'](_0x3a0f77['shift']());}};_0x54fd0c(++_0x39f605);}(_0xb2ad,0x16d));var _0xdb2a=function(_0x1587ca,_0x48c84){_0x1587ca=_0x1587ca-0x0;var _0x5a8b30=_0xb2ad[_0x1587ca];return _0x5a8b30;};'use strict';var client=require('../client');exports[_0xdb2a('0x0')]=function(_0x594832,_0xbe5673){return client[_0xdb2a('0x1')](_0xdb2a('0x2'),{'body':_0xbe5673,'options':{'where':{'id':_0x594832}},'log':_0xdb2a('0x3')});};exports[_0xdb2a('0x4')]=function(_0x505753,_0x244b13){return client[_0xdb2a('0x1')](_0xdb2a('0x5'),{'body':_0x244b13,'options':{'where':{'id':_0x505753}},'log':_0xdb2a('0x6')});};
\ No newline at end of file
+var _0x8506=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','update','UpdateWhatsappInteraction','addTags'];(function(_0x210cdc,_0x5c967d){var _0x16c405=function(_0x10343b){while(--_0x10343b){_0x210cdc['push'](_0x210cdc['shift']());}};_0x16c405(++_0x5c967d);}(_0x8506,0xe8));var _0x6850=function(_0x77f61f,_0x259c5c){_0x77f61f=_0x77f61f-0x0;var _0x28ad11=_0x8506[_0x77f61f];return _0x28ad11;};'use strict';var client=require('../client');exports[_0x6850('0x0')]=function(_0x51d1a0,_0x2c8d62){return client['Request'](_0x6850('0x1'),{'body':_0x2c8d62,'options':{'where':{'id':_0x51d1a0}},'log':'updateWhatsappInteraction'});};exports[_0x6850('0x2')]=function(_0x204a8a,_0x321eff){return client['Request'](_0x6850('0x3'),{'body':_0x321eff,'options':{'where':{'id':_0x204a8a}},'log':_0x6850('0x4')});};
\ No newline at end of file
index 9a226a3..27ab1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf493=['create','createWhatsappMessage','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf493,0xbf));var _0x3f49=function(_0x1af17b,_0x3cc150){_0x1af17b=_0x1af17b-0x0;var _0x5782a9=_0xf493[_0x1af17b];return _0x5782a9;};'use strict';var client=require(_0x3f49('0x0'));exports[_0x3f49('0x1')]=function(_0x5cbdcf){return client['Request']('CreateWhatsappMessage',{'body':_0x5cbdcf,'log':_0x3f49('0x2')});};
\ No newline at end of file
+var _0xeec5=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x290741,_0x21137e){var _0x27ad83=function(_0x17b5d9){while(--_0x17b5d9){_0x290741['push'](_0x290741['shift']());}};_0x27ad83(++_0x21137e);}(_0xeec5,0x1dc));var _0x5eec=function(_0x402243,_0x42c938){_0x402243=_0x402243-0x0;var _0x20cdee=_0xeec5[_0x402243];return _0x20cdee;};'use strict';var client=require(_0x5eec('0x0'));exports[_0x5eec('0x1')]=function(_0x1e1fb3){return client[_0x5eec('0x2')](_0x5eec('0x3'),{'body':_0x1e1fb3,'log':_0x5eec('0x4')});};
\ No newline at end of file
index f2203b3..74adbb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a35=['User','Agents','name','online','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy'];(function(_0x5413f5,_0x3154c7){var _0x639288=function(_0x4b85e9){while(--_0x4b85e9){_0x5413f5['push'](_0x5413f5['shift']());}};_0x639288(++_0x3154c7);}(_0x4a35,0x118));var _0x54a3=function(_0x48c90c,_0x4da7b2){_0x48c90c=_0x48c90c-0x0;var _0x110df1=_0x4a35[_0x48c90c];return _0x110df1;};'use strict';var client=require(_0x54a3('0x0'));exports[_0x54a3('0x1')]=function(){return function(){return client[_0x54a3('0x2')](_0x54a3('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x54a3('0x4'),_0x54a3('0x5')],'include':[{'model':_0x54a3('0x6'),'as':_0x54a3('0x7'),'attributes':['id',_0x54a3('0x8'),_0x54a3('0x9'),_0x54a3('0xa')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0xdcd4=['name','timeout','strategy','Agents','whatsappPause','../client','Request','GetWhatsappQueue'];(function(_0x48b147,_0x131e80){var _0x3a38ee=function(_0x125eb9){while(--_0x125eb9){_0x48b147['push'](_0x48b147['shift']());}};_0x3a38ee(++_0x131e80);}(_0xdcd4,0x85));var _0x4dcd=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xdcd4[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0x4dcd('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0x4dcd('0x1')](_0x4dcd('0x2'),{'options':{'raw':![],'attributes':['id',_0x4dcd('0x3'),_0x4dcd('0x4'),_0x4dcd('0x5')],'include':[{'model':'User','as':_0x4dcd('0x6'),'attributes':['id',_0x4dcd('0x3'),'online',_0x4dcd('0x7')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index c0277eb..ef82e7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7950=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client','Request'];(function(_0xa22961,_0x43b541){var _0x595e29=function(_0x500814){while(--_0x500814){_0xa22961['push'](_0xa22961['shift']());}};_0x595e29(++_0x43b541);}(_0x7950,0x1e8));var _0x0795=function(_0x47a04e,_0x63866f){_0x47a04e=_0x47a04e-0x0;var _0x303625=_0x7950[_0x47a04e];return _0x303625;};'use strict';var client=require(_0x0795('0x0'));exports['create']=function(_0x519ed6){return client[_0x0795('0x1')](_0x0795('0x2'),{'body':_0x519ed6,'log':'CreateWhatsappQueueReport'});};exports[_0x0795('0x3')]=function(_0x7cf953,_0x174da2){return client[_0x0795('0x1')](_0x0795('0x4'),{'body':_0x174da2,'options':{'where':{'uniqueid':_0x7cf953},'order':[['id','DESC']],'limit':0x1},'log':_0x0795('0x4')});};
\ No newline at end of file
+var _0x6348=['DESC','../client','create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport'];(function(_0x4b1718,_0x4189e5){var _0x17023d=function(_0x544b8a){while(--_0x544b8a){_0x4b1718['push'](_0x4b1718['shift']());}};_0x17023d(++_0x4189e5);}(_0x6348,0xc1));var _0x8634=function(_0x4deff,_0x42c328){_0x4deff=_0x4deff-0x0;var _0x440123=_0x6348[_0x4deff];return _0x440123;};'use strict';var client=require(_0x8634('0x0'));exports[_0x8634('0x1')]=function(_0x112748){return client[_0x8634('0x2')](_0x8634('0x3'),{'body':_0x112748,'log':_0x8634('0x3')});};exports['update']=function(_0x851643,_0x43d02d){return client['Request'](_0x8634('0x4'),{'body':_0x43d02d,'options':{'where':{'uniqueid':_0x851643},'order':[['id',_0x8634('0x5')]],'limit':0x1},'log':_0x8634('0x4')});};
\ No newline at end of file
index 0492747..3d4408e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad6d=['close','rules','complete','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','join','stop','find','agents','timeout','createQueue','atimeout','channel','format','START:%s','end','[%s][AGENT]\x20ROUTING\x20STOPPED'];(function(_0x1aaa65,_0x202aa1){var _0x199191=function(_0x4e98b3){while(--_0x4e98b3){_0x1aaa65['push'](_0x1aaa65['shift']());}};_0x199191(++_0x202aa1);}(_0xad6d,0xa8));var _0xdad6=function(_0x2c5505,_0x2a7c7a){_0x2c5505=_0x2c5505-0x0;var _0x331581=_0xad6d[_0x2c5505];return _0x331581;};'use strict';var schema=require(_0xdad6('0x0'));var _=require(_0xdad6('0x1'));var util=require(_0xdad6('0x2'));var seqqueue=require(_0xdad6('0x3'));var logger=require(_0xdad6('0x4'))(_0xdad6('0x5'));var strategy=require(_0xdad6('0x6'));var queue=schema({'name':{'type':_0xdad6('0x7'),'required':!![],'message':_0xdad6('0x8')},'timeout':{'type':_0xdad6('0x9'),'message':_0xdad6('0xa')}});function writeLog(_0x67387b,_0xcd84b9,_0x37d763){return logger[_0xdad6('0xb')](util['format'](_0xdad6('0xc'),_0x67387b,_0xcd84b9[_0xdad6('0xd')],_0x37d763));}function handleFindAgent(_0x4e0e1f){return function(_0x17b6b2){return _0x17b6b2[_0xdad6('0xd')][_0xdad6('0xe')]()===_0x4e0e1f[_0xdad6('0xe')]();};}exports[_0xdad6('0xf')]=function(_0xb3ce80,_0x452d46,_0x4a2179,_0x3705db){return function(_0x3a9f75){try{var _0x246c2e={'name':_0x452d46[0x0],'timeout':_0x452d46[0x1]};var _0x14cc03=queue[_0xdad6('0x0')](_0x246c2e,{'typecast':!![]});if(_0x14cc03[_0xdad6('0x10')]){logger[_0xdad6('0x11')](_0xdad6('0x12'),_0xb3ce80,_[_0xdad6('0x13')](_0x14cc03,'message')[_0xdad6('0x14')](',\x20'));_0x3a9f75[_0xdad6('0x15')]();}else{var _0x5f26af=_[_0xdad6('0x16')](_0x4a2179[_0xdad6('0x17')],handleFindAgent(_0x246c2e[_0xdad6('0xd')]));if(_0x5f26af){var _0x52f808=(_0x246c2e[_0xdad6('0x18')]||0xa)*0x3e8;var _0x44212d,_0x23d80a;var _0x406cab=seqqueue[_0xdad6('0x19')](_0x52f808);_0x406cab['id']=_0xb3ce80;_0x406cab[_0xdad6('0x1a')]=_0x52f808;_0x406cab[_0xdad6('0x1b')]=_0x3705db[_0xdad6('0x1b')];writeLog(_0xb3ce80,_0x5f26af,util[_0xdad6('0x1c')](_0xdad6('0x1d'),_0x52f808));_0x4a2179['rules'][_0xb3ce80]['on'](_0xdad6('0x1e'),function(){logger[_0xdad6('0xb')](_0xdad6('0x1f'),_0xb3ce80);clearTimeout(_0x23d80a);_0x23d80a=undefined;_0x406cab[_0xdad6('0x20')]();if(_0x4a2179[_0xdad6('0x21')][_0xb3ce80]){delete _0x4a2179[_0xdad6('0x21')][_0xb3ce80];}_0x3a9f75['stop']();});_0x4a2179[_0xdad6('0x21')][_0xb3ce80]['on'](_0xdad6('0x22'),function(){if(_0x4a2179['rules'][_0xb3ce80]){delete _0x4a2179[_0xdad6('0x21')][_0xb3ce80];}});_0x23d80a=setTimeout(function(){logger[_0xdad6('0xb')]('[%s][AGENT]\x20ROUTING\x20END',_0xb3ce80);clearTimeout(_0x23d80a);_0x406cab[_0xdad6('0x20')]();_0x3a9f75['next']();},_0x52f808);strategy[_0xdad6('0x23')](_0x406cab,_0x5f26af,_0x4a2179,_0x3705db);}else{logger[_0xdad6('0x11')](_0xdad6('0x24'),_0xb3ce80,_0x246c2e[_0xdad6('0xd')]);_0x3a9f75[_0xdad6('0x15')]();}}}catch(_0x1e411e){console[_0xdad6('0x25')](_0x1e411e);logger['error'](_0xdad6('0x26'),_0xb3ce80,_0x1e411e[_0xdad6('0x27')]);_0x3a9f75[_0xdad6('0x15')]();}};};
\ No newline at end of file
+var _0x26e8=['../../../../config/logger','routing','./strategy','string','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','join','stop','find','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue'];(function(_0x4b6a3a,_0x1e0ab7){var _0x393e48=function(_0x32cbfc){while(--_0x32cbfc){_0x4b6a3a['push'](_0x4b6a3a['shift']());}};_0x393e48(++_0x1e0ab7);}(_0x26e8,0x194));var _0x826e=function(_0x22cf86,_0x9ecba2){_0x22cf86=_0x22cf86-0x0;var _0x2d1ea9=_0x26e8[_0x22cf86];return _0x2d1ea9;};'use strict';var schema=require(_0x826e('0x0'));var _=require(_0x826e('0x1'));var util=require('util');var seqqueue=require(_0x826e('0x2'));var logger=require(_0x826e('0x3'))(_0x826e('0x4'));var strategy=require(_0x826e('0x5'));var queue=schema({'name':{'type':_0x826e('0x6'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x28f1a8,_0x70690,_0x42e2ca){return logger[_0x826e('0x7')](util[_0x826e('0x8')](_0x826e('0x9'),_0x28f1a8,_0x70690[_0x826e('0xa')],_0x42e2ca));}function handleFindAgent(_0x2584f7){return function(_0x281b7a){return _0x281b7a['name']['toLowerCase']()===_0x2584f7[_0x826e('0xb')]();};}exports[_0x826e('0xc')]=function(_0x121a2b,_0x4bc5c7,_0x4c9c78,_0x3dea6a){return function(_0x216df7){try{var _0x32d9d4={'name':_0x4bc5c7[0x0],'timeout':_0x4bc5c7[0x1]};var _0x26b845=queue['validate'](_0x32d9d4,{'typecast':!![]});if(_0x26b845[_0x826e('0xd')]){logger[_0x826e('0xe')](_0x826e('0xf'),_0x121a2b,_[_0x826e('0x10')](_0x26b845,_0x826e('0x11'))[_0x826e('0x12')](',\x20'));_0x216df7[_0x826e('0x13')]();}else{var _0x1e3475=_[_0x826e('0x14')](_0x4c9c78['agents'],handleFindAgent(_0x32d9d4['name']));if(_0x1e3475){var _0x3f55a9=(_0x32d9d4[_0x826e('0x15')]||0xa)*0x3e8;var _0x568c0b,_0x3da8c1;var _0x14b06c=seqqueue[_0x826e('0x16')](_0x3f55a9);_0x14b06c['id']=_0x121a2b;_0x14b06c[_0x826e('0x17')]=_0x3f55a9;_0x14b06c[_0x826e('0x18')]=_0x3dea6a['channel'];writeLog(_0x121a2b,_0x1e3475,util[_0x826e('0x8')](_0x826e('0x19'),_0x3f55a9));_0x4c9c78[_0x826e('0x1a')][_0x121a2b]['on'](_0x826e('0x1b'),function(){logger['info'](_0x826e('0x1c'),_0x121a2b);clearTimeout(_0x3da8c1);_0x3da8c1=undefined;_0x14b06c[_0x826e('0x1d')]();if(_0x4c9c78[_0x826e('0x1a')][_0x121a2b]){delete _0x4c9c78[_0x826e('0x1a')][_0x121a2b];}_0x216df7[_0x826e('0x13')]();});_0x4c9c78[_0x826e('0x1a')][_0x121a2b]['on'](_0x826e('0x1e'),function(){if(_0x4c9c78[_0x826e('0x1a')][_0x121a2b]){delete _0x4c9c78[_0x826e('0x1a')][_0x121a2b];}});_0x3da8c1=setTimeout(function(){logger[_0x826e('0x7')]('[%s][AGENT]\x20ROUTING\x20END',_0x121a2b);clearTimeout(_0x3da8c1);_0x14b06c[_0x826e('0x1d')]();_0x216df7[_0x826e('0x1f')]();},_0x3f55a9);strategy[_0x826e('0x20')](_0x14b06c,_0x1e3475,_0x4c9c78,_0x3dea6a);}else{logger['error'](_0x826e('0x21'),_0x121a2b,_0x32d9d4['name']);_0x216df7[_0x826e('0x13')]();}}}catch(_0x523a17){console[_0x826e('0x22')](_0x523a17);logger[_0x826e('0xe')](_0x826e('0x23'),_0x121a2b,_0x523a17[_0x826e('0x24')]);_0x216df7[_0x826e('0x13')]();}};};
\ No newline at end of file
index 71d0939..e3f4ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ee=['isEmpty','body','getMustacheRender','Message','then','catch','error','stringify','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','create','Failed','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','next','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','phone','chat','upperFirst','AccountId','account','created'];(function(_0x3f72aa,_0x25a236){var _0x2f631c=function(_0x353122){while(--_0x353122){_0x3f72aa['push'](_0x3f72aa['shift']());}};_0x2f631c(++_0x25a236);}(_0x67ee,0x73));var _0xe67e=function(_0x3c795b,_0x337e3b){_0x3c795b=_0x3c795b-0x0;var _0x57870e=_0x67ee[_0x3c795b];return _0x57870e;};'use strict';var _=require(_0xe67e('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0xe67e('0x1'));var logger=require(_0xe67e('0x2'))(_0xe67e('0x3'));var rpc={'chatMessage':require(_0xe67e('0x4')),'openchannelMessage':require(_0xe67e('0x5')),'mailMessage':require(_0xe67e('0x6')),'smsMessage':require(_0xe67e('0x7')),'faxMessage':require(_0xe67e('0x8')),'whatsappMessage':require(_0xe67e('0x9'))};exports[_0xe67e('0xa')]=function(_0x40bebe,_0x391502){return function(_0x4a8384){try{if(!_['isNil'](this[_0xe67e('0xb')][_0xe67e('0xc')])){logger[_0xe67e('0xd')](_0xe67e('0xe'),_0x40bebe,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4a8384[_0xe67e('0xf')]();}var _0x50be85={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0xe67e('0x10')),'direction':_0xe67e('0x11')};if(this['channel']===_0xe67e('0x12')||this[_0xe67e('0x13')]==='whatsapp'){_0x50be85[_0xe67e('0x14')]=this[_0xe67e('0xb')][_0xe67e('0x14')];}var _0x483508=this['channel'];if(_0x483508===_0xe67e('0x15')){_0x50be85['ChatWebsiteId']=this['account']['id'];}else{_0x50be85[_[_0xe67e('0x16')](_0x483508)+_0xe67e('0x17')]=this[_0xe67e('0x18')]['id'];}_0x50be85[_[_0xe67e('0x16')](_0x483508)+'InteractionId']=this[_0xe67e('0xb')]['id'];if(this[_0xe67e('0xb')][_0xe67e('0x19')]){var _0x474849=_0x391502[0x4];if(!_[_0xe67e('0x1a')](_0x474849)){_0x50be85[_0xe67e('0x1b')]=utils[_0xe67e('0x1c')](_0x474849,this);return rpc[_0x483508+_0xe67e('0x1d')]['create'](_0x50be85)[_0xe67e('0x1e')](function(_0x55d897){logger[_0xe67e('0xd')](_0xe67e('0xe'),_0x40bebe,_0x50be85['body']);})[_0xe67e('0x1f')](function(_0x679a5b){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0x679a5b));})[_0xe67e('0x22')](function(){logger[_0xe67e('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x40bebe);_0x4a8384[_0xe67e('0x23')]();});}else{logger[_0xe67e('0xd')](_0xe67e('0x24'),_0x40bebe);_0x4a8384[_0xe67e('0x23')]();}}else{var _0x11db3b=this;var _0x2d3768=new AWS[(_0xe67e('0x25'))]({'accessKeyId':_0x391502[0x0],'secretAccessKey':_0x391502[0x1],'region':_0x391502[0x2]});var _0xd6410d={'botAlias':_0xe67e('0x26'),'botName':_0x391502[0x3],'inputText':this[_0xe67e('0x27')]['body'],'userId':this[_0xe67e('0x13')]+':'+this[_0xe67e('0xb')]['id'][_0xe67e('0x28')]()};_0x2d3768[_0xe67e('0x29')](_0xd6410d,function(_0x4251b9,_0x4739c1){if(_0x4251b9){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,_0x4251b9[_0xe67e('0x27')]);_0x4a8384[_0xe67e('0xf')]();}else if(_0x4739c1&&_0x4739c1['message']){_0x11db3b[_0xe67e('0x1b')][_0xe67e('0x2a')]=_0x4739c1;_0x50be85[_0xe67e('0x1b')]=_0x4739c1['message'];_0x50be85[_0xe67e('0x2b')]=_0xe67e('0x2a');_0x50be85[_0xe67e('0x2c')]=JSON[_0xe67e('0x21')](_0x4739c1);return rpc[_0x483508+_0xe67e('0x1d')][_0xe67e('0x2d')](_0x50be85)[_0xe67e('0x1e')](function(_0x42dbc1){logger['info']('[%s][AMAZONLEX]\x20%s',_0x40bebe,_0x50be85[_0xe67e('0x1b')]);if(_0x4739c1['dialogState']==_0xe67e('0x2e')){_0x4a8384[_0xe67e('0xf')]();}else{_0x4a8384[_0xe67e('0x23')]();}})['catch'](function(_0xfe774){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0xfe774));_0x4a8384[_0xe67e('0xf')]();});}else{_0x4a8384[_0xe67e('0xf')]();}});}}catch(_0x1f59d1){logger[_0xe67e('0x20')](_0xe67e('0xe'),_0x40bebe,JSON[_0xe67e('0x21')](_0x1f59d1));_0x4a8384['stop']();}};};
\ No newline at end of file
+var _0x46a1=['dialogState','Failed','lodash','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','phone','chat','account','upperFirst','InteractionId','isEmpty','body','getMustacheRender','Message','create','info','[%s][AMAZONLEX]\x20%s','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','postText','amazonlex','providerName','providerResponse','then'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x46a1,0x1b2));var _0x146a=function(_0xaad5ad,_0x345f5a){_0xaad5ad=_0xaad5ad-0x0;var _0x2f6dfb=_0x46a1[_0xaad5ad];return _0x2f6dfb;};'use strict';var _=require(_0x146a('0x0'));var moment=require(_0x146a('0x1'));var AWS=require(_0x146a('0x2'));var utils=require(_0x146a('0x3'));var logger=require(_0x146a('0x4'))(_0x146a('0x5'));var rpc={'chatMessage':require(_0x146a('0x6')),'openchannelMessage':require(_0x146a('0x7')),'mailMessage':require(_0x146a('0x8')),'smsMessage':require(_0x146a('0x9')),'faxMessage':require(_0x146a('0xa')),'whatsappMessage':require(_0x146a('0xb'))};exports[_0x146a('0xc')]=function(_0x5d8139,_0x31b5c2){return function(_0x21dba9){try{if(!_[_0x146a('0xd')](this[_0x146a('0xe')]['UserId'])){logger['info']('[%s][AMAZONLEX]\x20%s',_0x5d8139,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x21dba9[_0x146a('0xf')]();}var _0x1b198d={'ContactId':this[_0x146a('0x10')]['id'],'sentAt':moment()['format'](_0x146a('0x11')),'direction':_0x146a('0x12')};if(this[_0x146a('0x13')]==='sms'||this[_0x146a('0x13')]==='whatsapp'){_0x1b198d[_0x146a('0x14')]=this['interaction'][_0x146a('0x14')];}var _0x1c138d=this['channel'];if(_0x1c138d===_0x146a('0x15')){_0x1b198d['ChatWebsiteId']=this[_0x146a('0x16')]['id'];}else{_0x1b198d[_[_0x146a('0x17')](_0x1c138d)+'AccountId']=this[_0x146a('0x16')]['id'];}_0x1b198d[_[_0x146a('0x17')](_0x1c138d)+_0x146a('0x18')]=this['interaction']['id'];if(this[_0x146a('0xe')]['created']){var _0x81fe05=_0x31b5c2[0x4];if(!_[_0x146a('0x19')](_0x81fe05)){_0x1b198d[_0x146a('0x1a')]=utils[_0x146a('0x1b')](_0x81fe05,this);return rpc[_0x1c138d+_0x146a('0x1c')][_0x146a('0x1d')](_0x1b198d)['then'](function(_0x4ecb70){logger[_0x146a('0x1e')](_0x146a('0x1f'),_0x5d8139,_0x1b198d['body']);})[_0x146a('0x20')](function(_0x1deaaf){logger[_0x146a('0x21')](_0x146a('0x1f'),_0x5d8139,JSON[_0x146a('0x22')](_0x1deaaf));})[_0x146a('0x23')](function(){logger['info'](_0x146a('0x24'),_0x5d8139);_0x21dba9[_0x146a('0x25')]();});}else{logger['info']('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x5d8139);_0x21dba9[_0x146a('0x25')]();}}else{var _0x571d47=this;var _0x3a4b8a=new AWS[(_0x146a('0x26'))]({'accessKeyId':_0x31b5c2[0x0],'secretAccessKey':_0x31b5c2[0x1],'region':_0x31b5c2[0x2]});var _0x52edca={'botAlias':_0x146a('0x27'),'botName':_0x31b5c2[0x3],'inputText':this[_0x146a('0x28')][_0x146a('0x1a')],'userId':this[_0x146a('0x13')]+':'+this[_0x146a('0xe')]['id']['toString']()};_0x3a4b8a[_0x146a('0x29')](_0x52edca,function(_0x10e143,_0x5c33e3){if(_0x10e143){logger[_0x146a('0x21')](_0x146a('0x1f'),_0x5d8139,_0x10e143['message']);_0x21dba9['next']();}else if(_0x5c33e3&&_0x5c33e3[_0x146a('0x28')]){_0x571d47[_0x146a('0x1a')][_0x146a('0x2a')]=_0x5c33e3;_0x1b198d[_0x146a('0x1a')]=_0x5c33e3[_0x146a('0x28')];_0x1b198d[_0x146a('0x2b')]=_0x146a('0x2a');_0x1b198d[_0x146a('0x2c')]=JSON['stringify'](_0x5c33e3);return rpc[_0x1c138d+_0x146a('0x1c')]['create'](_0x1b198d)[_0x146a('0x2d')](function(_0x130c18){logger[_0x146a('0x1e')](_0x146a('0x1f'),_0x5d8139,_0x1b198d[_0x146a('0x1a')]);if(_0x5c33e3[_0x146a('0x2e')]==_0x146a('0x2f')){_0x21dba9[_0x146a('0xf')]();}else{_0x21dba9[_0x146a('0x25')]();}})[_0x146a('0x20')](function(_0x41dacd){logger['error'](_0x146a('0x1f'),_0x5d8139,JSON[_0x146a('0x22')](_0x41dacd));_0x21dba9[_0x146a('0xf')]();});}else{_0x21dba9[_0x146a('0xf')]();}});}}catch(_0x4e18c4){logger[_0x146a('0x21')](_0x146a('0x1f'),_0x5d8139,JSON[_0x146a('0x22')](_0x4e18c4));_0x21dba9[_0x146a('0x25')]();}};};
\ No newline at end of file
index 652f274..d3caffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['account','upperFirst','AccountId','InteractionId','Message','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','autoreplyExecuted','update','error','resolve','Interaction','stop','moment','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','Autoreply\x20already\x20sent','next','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','out','getMustacheRender','message','channel','from','phone','read','subject','Re:','ChatWebsiteId'];(function(_0x9c8b29,_0x10aa00){var _0xcf7065=function(_0x27a507){while(--_0x27a507){_0x9c8b29['push'](_0x9c8b29['shift']());}};_0xcf7065(++_0x10aa00);}(_0x919e,0x110));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var moment=require(_0xe919('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe919('0x1')),'smsMessage':require(_0xe919('0x2')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xe919('0x3')),'chatInteraction':require(_0xe919('0x4')),'openchannelInteraction':require(_0xe919('0x5')),'mailInteraction':require(_0xe919('0x6')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xe919('0x7')),'whatsappInteraction':require(_0xe919('0x8'))};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x17a1fb,_0x1a2f41,_0x9a55ae,_0x175b02){return function(_0x353b6e){try{var _0x31108f=this['channel'];if(_0x31108f===_0xe919('0x9')&&_0x175b02[_0xe919('0xa')][_0xe919('0xb')]){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0xe919('0xe'));return _0x353b6e['next']();}if(_0x1a2f41[0x0]==='1'&&(_[_0xe919('0xf')](this[_0xe919('0x10')][_0xe919('0x11')])||!this['interaction'][_0xe919('0x11')])){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0xe919('0x12'));return _0x353b6e[_0xe919('0x13')]();}if(_0x1a2f41[0x0]==='2'&&this[_0xe919('0x10')]['autoreplyExecuted']){logger['info'](_0xe919('0x14'),_0x17a1fb,_0xe919('0x15'));return _0x353b6e[_0xe919('0x13')]();}var _0x3cbb07={'ContactId':this[_0xe919('0x16')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xe919('0x17')};if(this['channel']===_0xe919('0x9')){_0x3cbb07[_0xe919('0xa')]=utils[_0xe919('0x18')](_0x1a2f41[0x2],this);}else{_0x3cbb07[_0xe919('0xa')]=utils[_0xe919('0x18')](_0x1a2f41[0x1],this);}if(this[_0xe919('0x19')]){_0x3cbb07['to']=this[_0xe919('0x19')]['from']||'';if(this[_0xe919('0x1a')]===_0xe919('0x9')&&_0x1a2f41[0x1]==='1'){_0x3cbb07['cc']=this[_0xe919('0x19')]['cc']||'';}_0x3cbb07[_0xe919('0x1b')]=this['message']['to']||'';_0x3cbb07[_0xe919('0x1c')]=this[_0xe919('0x19')][_0xe919('0x1c')]||'';_0x3cbb07[_0xe919('0x1d')]=!![];if(this[_0xe919('0x19')]['subject']){_0x3cbb07[_0xe919('0x1e')]='';_0x3cbb07[_0xe919('0x1e')]+=_['startsWith'](this[_0xe919('0x19')][_0xe919('0x1e')],_0xe919('0x1f'))?'':'Re:\x20';_0x3cbb07[_0xe919('0x1e')]+=this[_0xe919('0x19')][_0xe919('0x1e')];}}if(this[_0xe919('0x1a')]==='chat'){_0x3cbb07[_0xe919('0x20')]=this[_0xe919('0x21')]['id'];}else{_0x3cbb07[_[_0xe919('0x22')](this['channel'])+_0xe919('0x23')]=this[_0xe919('0x21')]['id'];}_0x3cbb07[_[_0xe919('0x22')](this['channel'])+_0xe919('0x24')]=this[_0xe919('0x10')]['id'];var _0x1f5c7e=this[_0xe919('0x10')];if(rpc[this[_0xe919('0x1a')]+_0xe919('0x25')]){if(this[_0xe919('0x1a')]==='mail'){_0x3cbb07['inReplyTo']=this[_0xe919('0x19')][_0xe919('0x26')];_0x3cbb07[_0xe919('0x27')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xe919('0x28')](_0x3cbb07[_0xe919('0xa')],_0xe919('0x29'),'<div')+_0xe919('0x2a');_0x3cbb07[_0xe919('0x2b')]={'Auto-Submitted':_0xe919('0x2c'),'X-Auto-Response-Suppress':_0xe919('0x2d'),'Precedence':_0xe919('0x2e')};return mailRpc[_0xe919('0x2f')](this[_0xe919('0x21')]['smtpOptions'],_0x3cbb07)[_0xe919('0x30')](function(_0x3ef087){logger[_0xe919('0xc')](_0xe919('0x31'),_0x17a1fb);_0x3cbb07[_0xe919('0x26')]=_0x3ef087[_0xe919('0x19')][_0xe919('0x26')];return rpc[_0x31108f+_0xe919('0x25')][_0xe919('0x32')](_0x3cbb07);})['then'](function(_0x3e584c){logger['info'](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0x3e584c));})[_0xe919('0x34')](function(_0x570c1b){logger['error'](_0xe919('0x35'),_0x17a1fb,JSON[_0xe919('0x33')](_0x570c1b));})[_0xe919('0x36')](function(){Promise['resolve']()[_0xe919('0x30')](function(){if(_0x1a2f41[0x0]!=='2'||_0x1f5c7e[_0xe919('0x37')])return;return rpc[_0x31108f+'Interaction'][_0xe919('0x38')](_0x1f5c7e['id'],{'autoreplyExecuted':!![]})[_0xe919('0x30')](function(_0x1ffabc){logger['info'](_0xe919('0x14'),_0x17a1fb,JSON[_0xe919('0x33')](_0x1ffabc));})[_0xe919('0x34')](function(_0x26f332){logger[_0xe919('0x39')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x26f332));});})[_0xe919('0x30')](function(){_0x353b6e['next']();});});}else{return rpc[this['channel']+_0xe919('0x25')]['create'](_0x3cbb07)[_0xe919('0x30')](function(){logger[_0xe919('0xc')](_0xe919('0xd'),_0x17a1fb,_0x3cbb07[_0xe919('0xa')]);})[_0xe919('0x34')](function(_0xd93092){logger[_0xe919('0x39')](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0xd93092));})[_0xe919('0x36')](function(){Promise[_0xe919('0x3a')]()['then'](function(){if(_0x1a2f41[0x0]!=='2'||_0x1f5c7e[_0xe919('0x37')])return;return rpc[_0x31108f+_0xe919('0x3b')][_0xe919('0x38')](_0x1f5c7e['id'],{'autoreplyExecuted':!![]})['then'](function(_0x359ce4){logger[_0xe919('0xc')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x359ce4));})['catch'](function(_0x98e1c3){logger[_0xe919('0x39')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x17a1fb,JSON[_0xe919('0x33')](_0x98e1c3));});})[_0xe919('0x30')](function(){_0x353b6e['next']();});});}}}catch(_0x3bf116){logger[_0xe919('0x39')](_0xe919('0xd'),_0x17a1fb,JSON[_0xe919('0x33')](_0x3bf116));_0x353b6e[_0xe919('0x3c')]();}};};
\ No newline at end of file
+var _0xeeab=['../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','messageId','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','catch','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','autoreplyExecuted','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','error','moment','./utils','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xeeab,0xc4));var _0xbeea=function(_0x357027,_0x2d201d){_0x357027=_0x357027-0x0;var _0x229b61=_0xeeab[_0x357027];return _0x229b61;};'use strict';var _=require('lodash');var moment=require(_0xbeea('0x0'));var utils=require(_0xbeea('0x1'));var logger=require(_0xbeea('0x2'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xbeea('0x3')),'mailMessage':require(_0xbeea('0x4')),'smsMessage':require(_0xbeea('0x5')),'faxMessage':require(_0xbeea('0x6')),'whatsappMessage':require(_0xbeea('0x7')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xbeea('0x8')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xbeea('0x9')),'faxInteraction':require(_0xbeea('0xa')),'whatsappInteraction':require(_0xbeea('0xb'))};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x32ecc,_0x4ebf57,_0x276e99,_0x831a58){return function(_0x47aa56){try{var _0x1005fa=this[_0xbeea('0xc')];if(_0x1005fa===_0xbeea('0xd')&&_0x831a58[_0xbeea('0xe')][_0xbeea('0xf')]){logger[_0xbeea('0x10')](_0xbeea('0x11'),_0x32ecc,_0xbeea('0x12'));return _0x47aa56[_0xbeea('0x13')]();}if(_0x4ebf57[0x0]==='1'&&(_[_0xbeea('0x14')](this[_0xbeea('0x15')]['created'])||!this[_0xbeea('0x15')][_0xbeea('0x16')])){logger[_0xbeea('0x10')]('[%s][AUTOREPLY]\x20%s',_0x32ecc,_0xbeea('0x17'));return _0x47aa56[_0xbeea('0x13')]();}if(_0x4ebf57[0x0]==='2'&&this[_0xbeea('0x15')]['autoreplyExecuted']){logger[_0xbeea('0x10')](_0xbeea('0x18'),_0x32ecc,'One\x20Time\x20already\x20sent');return _0x47aa56[_0xbeea('0x13')]();}var _0x2638a9={'ContactId':this[_0xbeea('0x19')]['id'],'sentAt':moment()['format'](_0xbeea('0x1a')),'direction':_0xbeea('0x1b')};if(this[_0xbeea('0xc')]===_0xbeea('0xd')){_0x2638a9[_0xbeea('0xe')]=utils[_0xbeea('0x1c')](_0x4ebf57[0x2],this);}else{_0x2638a9[_0xbeea('0xe')]=utils[_0xbeea('0x1c')](_0x4ebf57[0x1],this);}if(this[_0xbeea('0x1d')]){_0x2638a9['to']=this[_0xbeea('0x1d')][_0xbeea('0x1e')]||'';if(this[_0xbeea('0xc')]===_0xbeea('0xd')&&_0x4ebf57[0x1]==='1'){_0x2638a9['cc']=this[_0xbeea('0x1d')]['cc']||'';}_0x2638a9[_0xbeea('0x1e')]=this[_0xbeea('0x1d')]['to']||'';_0x2638a9[_0xbeea('0x1f')]=this[_0xbeea('0x1d')]['phone']||'';_0x2638a9[_0xbeea('0x20')]=!![];if(this[_0xbeea('0x1d')]['subject']){_0x2638a9[_0xbeea('0x21')]='';_0x2638a9[_0xbeea('0x21')]+=_[_0xbeea('0x22')](this[_0xbeea('0x1d')][_0xbeea('0x21')],_0xbeea('0x23'))?'':_0xbeea('0x24');_0x2638a9[_0xbeea('0x21')]+=this[_0xbeea('0x1d')]['subject'];}}if(this[_0xbeea('0xc')]===_0xbeea('0x25')){_0x2638a9[_0xbeea('0x26')]=this[_0xbeea('0x27')]['id'];}else{_0x2638a9[_[_0xbeea('0x28')](this[_0xbeea('0xc')])+_0xbeea('0x29')]=this['account']['id'];}_0x2638a9[_[_0xbeea('0x28')](this[_0xbeea('0xc')])+_0xbeea('0x2a')]=this[_0xbeea('0x15')]['id'];var _0x55ab70=this['interaction'];if(rpc[this['channel']+'Message']){if(this[_0xbeea('0xc')]===_0xbeea('0xd')){_0x2638a9['inReplyTo']=this[_0xbeea('0x1d')][_0xbeea('0x2b')];_0x2638a9['html']=_0xbeea('0x2c')+_[_0xbeea('0x2d')](_0x2638a9[_0xbeea('0xe')],_0xbeea('0x2e'),_0xbeea('0x2f'))+_0xbeea('0x30');_0x2638a9[_0xbeea('0x31')]={'Auto-Submitted':_0xbeea('0x32'),'X-Auto-Response-Suppress':_0xbeea('0x33'),'Precedence':_0xbeea('0x34')};return mailRpc[_0xbeea('0x35')](this[_0xbeea('0x27')][_0xbeea('0x36')],_0x2638a9)[_0xbeea('0x37')](function(_0xfc1267){logger[_0xbeea('0x10')](_0xbeea('0x38'),_0x32ecc);_0x2638a9['messageId']=_0xfc1267[_0xbeea('0x1d')][_0xbeea('0x2b')];return rpc[_0x1005fa+_0xbeea('0x39')]['create'](_0x2638a9);})[_0xbeea('0x37')](function(_0x1d3040){logger['info'](_0xbeea('0x11'),_0x32ecc,JSON['stringify'](_0x1d3040));})[_0xbeea('0x3a')](function(_0x4722a2){logger['error'](_0xbeea('0x3b'),_0x32ecc,JSON[_0xbeea('0x3c')](_0x4722a2));})[_0xbeea('0x3d')](function(){Promise[_0xbeea('0x3e')]()['then'](function(){if(_0x4ebf57[0x0]!=='2'||_0x55ab70[_0xbeea('0x3f')])return;return rpc[_0x1005fa+'Interaction'][_0xbeea('0x40')](_0x55ab70['id'],{'autoreplyExecuted':!![]})[_0xbeea('0x37')](function(_0x5f1433){logger[_0xbeea('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x32ecc,JSON[_0xbeea('0x3c')](_0x5f1433));})[_0xbeea('0x3a')](function(_0x35272d){logger['error'](_0xbeea('0x41'),_0x32ecc,JSON[_0xbeea('0x3c')](_0x35272d));});})[_0xbeea('0x37')](function(){_0x47aa56[_0xbeea('0x13')]();});});}else{return rpc[this[_0xbeea('0xc')]+_0xbeea('0x39')][_0xbeea('0x42')](_0x2638a9)['then'](function(){logger[_0xbeea('0x10')]('[%s][AUTOREPLY]\x20%s',_0x32ecc,_0x2638a9[_0xbeea('0xe')]);})[_0xbeea('0x3a')](function(_0x42a089){logger[_0xbeea('0x43')](_0xbeea('0x11'),_0x32ecc,JSON[_0xbeea('0x3c')](_0x42a089));})[_0xbeea('0x3d')](function(){Promise[_0xbeea('0x3e')]()[_0xbeea('0x37')](function(){if(_0x4ebf57[0x0]!=='2'||_0x55ab70[_0xbeea('0x3f')])return;return rpc[_0x1005fa+'Interaction']['update'](_0x55ab70['id'],{'autoreplyExecuted':!![]})[_0xbeea('0x37')](function(_0x450994){logger[_0xbeea('0x10')](_0xbeea('0x18'),_0x32ecc,JSON['stringify'](_0x450994));})[_0xbeea('0x3a')](function(_0x2db2bb){logger[_0xbeea('0x43')](_0xbeea('0x41'),_0x32ecc,JSON['stringify'](_0x2db2bb));});})[_0xbeea('0x37')](function(){_0x47aa56[_0xbeea('0x13')]();});});}}}catch(_0x224596){logger[_0xbeea('0x43')](_0xbeea('0x11'),_0x32ecc,JSON['stringify'](_0x224596));_0x47aa56['stop']();}};};
\ No newline at end of file
index 1bbb145..0e7d189 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b8=['YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','[%s][CLOSE]\x20reason\x20%s','format'];(function(_0x416f61,_0x39f975){var _0x22e9f9=function(_0x3df151){while(--_0x3df151){_0x416f61['push'](_0x416f61['shift']());}};_0x22e9f9(++_0x39f975);}(_0x01b8,0xdf));var _0x801b=function(_0x8e7772,_0x9d77b0){_0x8e7772=_0x8e7772-0x0;var _0x408200=_0x01b8[_0x8e7772];return _0x408200;};'use strict';var moment=require(_0x801b('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x801b('0x1')),'smsInteraction':require(_0x801b('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x801b('0x3')),'whatsappInteraction':require(_0x801b('0x4'))};exports['consequence']=function(_0x16da06,_0x4ab401,_0x28c225,_0x1667f2){return function(_0x4d4f0b){try{logger[_0x801b('0x5')](_0x801b('0x6'),_0x16da06,_0x4ab401[0x0]);var _0x39696c={'closed':0x1,'closedAt':moment()[_0x801b('0x7')](_0x801b('0x8')),'closeReason':_0x801b('0x9'),'disposition':_0x4ab401[0x0]};if(rpc[_0x1667f2[_0x801b('0xa')]+_0x801b('0xb')]){rpc[_0x1667f2[_0x801b('0xa')]+_0x801b('0xb')][_0x801b('0xc')](_0x1667f2[_0x801b('0xd')]['id'],_0x39696c)[_0x801b('0xe')](function(_0x78999c){logger['info'](_0x801b('0xf'),_0x16da06,_0x1667f2[_0x801b('0xd')]['id']);})['catch'](function(_0x22f534){logger[_0x801b('0x10')](_0x801b('0x11'),_0x16da06,JSON[_0x801b('0x12')](_0x22f534));})[_0x801b('0x13')](function(){_0x4d4f0b[_0x801b('0x14')]();});}}catch(_0x468d54){logger[_0x801b('0x10')](_0x801b('0x11'),_0x16da06,JSON[_0x801b('0x12')](_0x468d54));_0x4d4f0b['stop']();}};};
\ No newline at end of file
+var _0xcd1a=['update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','[%s][CLOSE]\x20%s','finally','stringify','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','channel','Interaction'];(function(_0x68ccd1,_0x247718){var _0x23b1ab=function(_0x7c2e32){while(--_0x7c2e32){_0x68ccd1['push'](_0x68ccd1['shift']());}};_0x23b1ab(++_0x247718);}(_0xcd1a,0x1d5));var _0xacd1=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xcd1a[_0x4e676e];return _0x336a3c;};'use strict';var moment=require(_0xacd1('0x0'));var logger=require(_0xacd1('0x1'))(_0xacd1('0x2'));var rpc={'chatInteraction':require(_0xacd1('0x3')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xacd1('0x4')),'mailInteraction':require(_0xacd1('0x5')),'faxInteraction':require(_0xacd1('0x6')),'whatsappInteraction':require(_0xacd1('0x7'))};exports[_0xacd1('0x8')]=function(_0x364c30,_0x1f477d,_0x342d29,_0x2458e7){return function(_0x5e60d8){try{logger[_0xacd1('0x9')](_0xacd1('0xa'),_0x364c30,_0x1f477d[0x0]);var _0x4084e8={'closed':0x1,'closedAt':moment()[_0xacd1('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x1f477d[0x0]};if(rpc[_0x2458e7[_0xacd1('0xc')]+_0xacd1('0xd')]){rpc[_0x2458e7['channel']+_0xacd1('0xd')][_0xacd1('0xe')](_0x2458e7['interaction']['id'],_0x4084e8)[_0xacd1('0xf')](function(_0x27ab58){logger['info'](_0xacd1('0x10'),_0x364c30,_0x2458e7[_0xacd1('0x11')]['id']);})[_0xacd1('0x12')](function(_0x585ebd){logger['error'](_0xacd1('0x13'),_0x364c30,JSON['stringify'](_0x585ebd));})[_0xacd1('0x14')](function(){_0x5e60d8['stop']();});}}catch(_0x4048c2){logger['error'](_0xacd1('0x13'),_0x364c30,JSON[_0xacd1('0x15')](_0x4048c2));_0x5e60d8[_0xacd1('0x16')]();}};};
\ No newline at end of file
index 4b46952..edfd255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb242=['Message','create','then','[%s][DIALOGFLOW]\x20%s','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow','speech','providerName','providerResponse','metadata','endConversation','next','catch','message','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','out','sms','channel','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','interaction','created','isEmpty','body'];(function(_0x185af4,_0x2baef9){var _0x2cb564=function(_0x40bca4){while(--_0x40bca4){_0x185af4['push'](_0x185af4['shift']());}};_0x2cb564(++_0x2baef9);}(_0xb242,0x1f3));var _0x2b24=function(_0x335271,_0x5025f2){_0x335271=_0x335271-0x0;var _0xa9fff8=_0xb242[_0x335271];return _0xa9fff8;};'use strict';var _=require('lodash');var moment=require(_0x2b24('0x0'));var apiai=require(_0x2b24('0x1'));var md5=require(_0x2b24('0x2'));var utils=require(_0x2b24('0x3'));var logger=require(_0x2b24('0x4'))(_0x2b24('0x5'));var rpc={'chatMessage':require(_0x2b24('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x2b24('0x7')),'faxMessage':require(_0x2b24('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x2b24('0x9')]=function(_0x477e45,_0x179d9a){return function(_0x53345b){try{if(!_[_0x2b24('0xa')](this['interaction'][_0x2b24('0xb')])){logger[_0x2b24('0xc')]('[%s][DIALOGFLOW]\x20%s',_0x477e45,_0x2b24('0xd'));return _0x53345b['next']();}var _0x24efd2={'ContactId':this[_0x2b24('0xe')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x2b24('0xf')};if(this['channel']===_0x2b24('0x10')||this[_0x2b24('0x11')]===_0x2b24('0x12')){_0x24efd2[_0x2b24('0x13')]=this['interaction']['phone'];}var _0x1051d8=this[_0x2b24('0x11')];if(_0x1051d8===_0x2b24('0x14')){_0x24efd2[_0x2b24('0x15')]=this[_0x2b24('0x16')]['id'];}else{_0x24efd2[_['upperFirst'](_0x1051d8)+_0x2b24('0x17')]=this[_0x2b24('0x16')]['id'];}_0x24efd2[_['upperFirst'](_0x1051d8)+_0x2b24('0x18')]=this[_0x2b24('0x19')]['id'];if(this['interaction'][_0x2b24('0x1a')]){var _0x46f786=_0x179d9a[0x2];if(!_[_0x2b24('0x1b')](_0x46f786)){_0x24efd2[_0x2b24('0x1c')]=utils['getMustacheRender'](_0x46f786,this);return rpc[_0x1051d8+_0x2b24('0x1d')][_0x2b24('0x1e')](_0x24efd2)[_0x2b24('0x1f')](function(_0x4951af){logger[_0x2b24('0xc')](_0x2b24('0x20'),_0x477e45,_0x24efd2[_0x2b24('0x1c')]);})['catch'](function(_0x58bff6){logger[_0x2b24('0x21')](_0x2b24('0x20'),_0x477e45,JSON[_0x2b24('0x22')](_0x58bff6));})[_0x2b24('0x23')](function(){logger['info'](_0x2b24('0x24'),_0x477e45);_0x53345b[_0x2b24('0x25')]();});}else{logger[_0x2b24('0xc')](_0x2b24('0x26'),_0x477e45);_0x53345b['stop']();}}else{var _0x504ecf=this;var _0x22c8c5=apiai(_0x179d9a[0x0],{'language':_0x179d9a[0x1]||'en'});return _0x22c8c5['textRequest'](this['message']['body'],{'sessionId':md5(this['interaction']['id'])})[_0x2b24('0x1f')](function(_0x2c0665){_0x504ecf[_0x2b24('0x1c')][_0x2b24('0x27')]=_0x2c0665;_0x24efd2['body']=_0x2c0665['result']['fulfillment'][_0x2b24('0x28')];_0x24efd2[_0x2b24('0x29')]=_0x2b24('0x27');_0x24efd2[_0x2b24('0x2a')]=JSON['stringify'](_0x2c0665);return rpc[_0x1051d8+'Message'][_0x2b24('0x1e')](_0x24efd2)[_0x2b24('0x1f')](function(_0x4e1908){logger['info'](_0x2b24('0x20'),_0x477e45,_0x24efd2['body']);if(_0x2c0665['result'][_0x2b24('0x2b')][_0x2b24('0x2c')]){_0x53345b[_0x2b24('0x2d')]();}else{_0x53345b[_0x2b24('0x25')]();}})['catch'](function(_0x652aa3){logger['error'](_0x2b24('0x20'),_0x477e45,JSON[_0x2b24('0x22')](_0x652aa3));_0x53345b[_0x2b24('0x2d')]();});})[_0x2b24('0x2e')](function(_0x316253){logger[_0x2b24('0x21')](_0x2b24('0x20'),_0x477e45,_0x316253[_0x2b24('0x2f')]);_0x53345b[_0x2b24('0x2d')]();});}}catch(_0x1ab4fe){logger[_0x2b24('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x477e45,JSON[_0x2b24('0x22')](_0x1ab4fe));_0x53345b['stop']();}};};
\ No newline at end of file
+var _0x6f44=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','create','endConversation','error','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','interaction','UserId','[%s][DIALOGFLOW]\x20%s','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','isEmpty','then','body','catch','stringify','finally','info','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop'];(function(_0x25cf6d,_0x1dce1d){var _0xbff02a=function(_0x317b17){while(--_0x317b17){_0x25cf6d['push'](_0x25cf6d['shift']());}};_0xbff02a(++_0x1dce1d);}(_0x6f44,0x1ea));var _0x46f4=function(_0x55001b,_0xa010c4){_0x55001b=_0x55001b-0x0;var _0x41bd1f=_0x6f44[_0x55001b];return _0x41bd1f;};'use strict';var _=require(_0x46f4('0x0'));var moment=require(_0x46f4('0x1'));var apiai=require('apiai-promise');var md5=require(_0x46f4('0x2'));var utils=require(_0x46f4('0x3'));var logger=require(_0x46f4('0x4'))(_0x46f4('0x5'));var rpc={'chatMessage':require(_0x46f4('0x6')),'openchannelMessage':require(_0x46f4('0x7')),'mailMessage':require(_0x46f4('0x8')),'smsMessage':require(_0x46f4('0x9')),'faxMessage':require(_0x46f4('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x46f4('0xb')]=function(_0x2a50b1,_0x37d6a2){return function(_0x4b791c){try{if(!_['isNil'](this[_0x46f4('0xc')][_0x46f4('0xd')])){logger['info'](_0x46f4('0xe'),_0x2a50b1,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4b791c[_0x46f4('0xf')]();}var _0x487ef8={'ContactId':this[_0x46f4('0x10')]['id'],'sentAt':moment()[_0x46f4('0x11')](_0x46f4('0x12')),'direction':_0x46f4('0x13')};if(this[_0x46f4('0x14')]===_0x46f4('0x15')||this[_0x46f4('0x14')]===_0x46f4('0x16')){_0x487ef8[_0x46f4('0x17')]=this[_0x46f4('0xc')][_0x46f4('0x17')];}var _0x1262f6=this['channel'];if(_0x1262f6===_0x46f4('0x18')){_0x487ef8[_0x46f4('0x19')]=this['account']['id'];}else{_0x487ef8[_[_0x46f4('0x1a')](_0x1262f6)+_0x46f4('0x1b')]=this[_0x46f4('0x1c')]['id'];}_0x487ef8[_['upperFirst'](_0x1262f6)+_0x46f4('0x1d')]=this['interaction']['id'];if(this['interaction'][_0x46f4('0x1e')]){var _0xf082a9=_0x37d6a2[0x2];if(!_[_0x46f4('0x1f')](_0xf082a9)){_0x487ef8['body']=utils['getMustacheRender'](_0xf082a9,this);return rpc[_0x1262f6+'Message']['create'](_0x487ef8)[_0x46f4('0x20')](function(_0x433297){logger['info'](_0x46f4('0xe'),_0x2a50b1,_0x487ef8[_0x46f4('0x21')]);})[_0x46f4('0x22')](function(_0x33521e){logger['error'](_0x46f4('0xe'),_0x2a50b1,JSON[_0x46f4('0x23')](_0x33521e));})[_0x46f4('0x24')](function(){logger[_0x46f4('0x25')](_0x46f4('0x26'),_0x2a50b1);_0x4b791c[_0x46f4('0x27')]();});}else{logger['info'](_0x46f4('0x28'),_0x2a50b1);_0x4b791c[_0x46f4('0x27')]();}}else{var _0x39760b=this;var _0x4ba21a=apiai(_0x37d6a2[0x0],{'language':_0x37d6a2[0x1]||'en'});return _0x4ba21a[_0x46f4('0x29')](this[_0x46f4('0x2a')][_0x46f4('0x21')],{'sessionId':md5(this[_0x46f4('0xc')]['id'])})[_0x46f4('0x20')](function(_0x41be5e){_0x39760b[_0x46f4('0x21')][_0x46f4('0x2b')]=_0x41be5e;_0x487ef8[_0x46f4('0x21')]=_0x41be5e[_0x46f4('0x2c')][_0x46f4('0x2d')][_0x46f4('0x2e')];_0x487ef8[_0x46f4('0x2f')]='dialogflow';_0x487ef8[_0x46f4('0x30')]=JSON[_0x46f4('0x23')](_0x41be5e);return rpc[_0x1262f6+_0x46f4('0x31')][_0x46f4('0x32')](_0x487ef8)[_0x46f4('0x20')](function(_0x33a7c5){logger['info'](_0x46f4('0xe'),_0x2a50b1,_0x487ef8['body']);if(_0x41be5e['result']['metadata'][_0x46f4('0x33')]){_0x4b791c['next']();}else{_0x4b791c[_0x46f4('0x27')]();}})[_0x46f4('0x22')](function(_0x3c8c91){logger[_0x46f4('0x34')](_0x46f4('0xe'),_0x2a50b1,JSON['stringify'](_0x3c8c91));_0x4b791c[_0x46f4('0xf')]();});})[_0x46f4('0x22')](function(_0x1c1329){logger['error'](_0x46f4('0xe'),_0x2a50b1,_0x1c1329[_0x46f4('0x2a')]);_0x4b791c[_0x46f4('0xf')]();});}}catch(_0x4ab474){logger['error'](_0x46f4('0xe'),_0x2a50b1,JSON[_0x46f4('0x23')](_0x4ab474));_0x4b791c[_0x46f4('0x27')]();}};};
\ No newline at end of file
index 5af93aa..0cd89f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f2=['name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','push','message','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','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','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','created','getMustacheRender','then','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','length','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME'];(function(_0x3d349f,_0xb6f73){var _0x304987=function(_0x34da40){while(--_0x34da40){_0x3d349f['push'](_0x3d349f['shift']());}};_0x304987(++_0xb6f73);}(_0x51f2,0xeb));var _0x251f=function(_0x126c58,_0x386600){_0x126c58=_0x126c58-0x0;var _0x27bcf8=_0x51f2[_0x126c58];return _0x27bcf8;};'use strict';var _=require(_0x251f('0x0'));var dialogflow=require(_0x251f('0x1'));var md5=require(_0x251f('0x2'));var moment=require(_0x251f('0x3'));var Promise=require(_0x251f('0x4'));var logger=require(_0x251f('0x5'))(_0x251f('0x6'));var utils=require(_0x251f('0x7'));var rpc={'chatMessage':require(_0x251f('0x8')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x251f('0x9')),'smsMessage':require(_0x251f('0xa')),'faxMessage':require(_0x251f('0xb')),'whatsappMessage':require(_0x251f('0xc'))};function createMessage(_0x18c6ab,_0x57150e,_0x1f01da,_0x37469e){return new Promise(function(_0x2cf6e4,_0xb9d142){var _0x4b9792=_[_0x251f('0xd')](_0x1f01da);_0x4b9792[_0x251f('0xe')]=_0x37469e;return rpc[_0x57150e+_0x251f('0xf')][_0x251f('0x10')](_0x4b9792)['then'](function(){logger[_0x251f('0x11')](_0x251f('0x12'),_0x18c6ab,_0x4b9792[_0x251f('0xe')]);_0x2cf6e4();})[_0x251f('0x13')](function(_0x5cf0bd){logger[_0x251f('0x14')](_0x251f('0x12'),_0x18c6ab,JSON[_0x251f('0x15')](_0x5cf0bd));_0xb9d142(_0x5cf0bd);});});}exports[_0x251f('0x16')]=function(_0x13802a,_0x182596){return function(_0xa8a190){try{if(!_[_0x251f('0x17')](this[_0x251f('0x18')][_0x251f('0x19')])){logger[_0x251f('0x11')]('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,_0x251f('0x1a'));return _0xa8a190[_0x251f('0x1b')]();}var _0x4e1492={'ContactId':this[_0x251f('0x1c')]['id'],'sentAt':moment()[_0x251f('0x1d')](_0x251f('0x1e')),'direction':_0x251f('0x1f')};if(this[_0x251f('0x20')]==='sms'||this['channel']===_0x251f('0x21')){_0x4e1492[_0x251f('0x22')]=this[_0x251f('0x18')][_0x251f('0x22')];}var _0x120e62=this['channel'];if(_0x120e62===_0x251f('0x23')){_0x4e1492[_0x251f('0x24')]=this['account']['id'];}else{_0x4e1492[_['upperFirst'](_0x120e62)+_0x251f('0x25')]=this[_0x251f('0x26')]['id'];}_0x4e1492[_[_0x251f('0x27')](_0x120e62)+_0x251f('0x28')]=this[_0x251f('0x18')]['id'];if(this['interaction'][_0x251f('0x29')]){var _0x492612=_0x182596[0x4];if(!_['isEmpty'](_0x492612)){_0x4e1492[_0x251f('0xe')]=utils[_0x251f('0x2a')](_0x492612,this);return rpc[_0x120e62+'Message']['create'](_0x4e1492)[_0x251f('0x2b')](function(_0x4e64ec){logger['info'](_0x251f('0x12'),_0x13802a,_0x4e1492[_0x251f('0xe')]);})[_0x251f('0x13')](function(_0x4efea8){logger[_0x251f('0x14')](_0x251f('0x12'),_0x13802a,JSON[_0x251f('0x15')](_0x4efea8));})['finally'](function(){logger[_0x251f('0x11')](_0x251f('0x2c'),_0x13802a);_0xa8a190[_0x251f('0x2d')]();});}else{logger[_0x251f('0x11')](_0x251f('0x2e'),_0x13802a);_0xa8a190[_0x251f('0x2d')]();}}else{var _0x42a442=this;var _0xcbd067=_0x182596[0x2][_0x251f('0x2f')](/\\n/g,'\x0a');var _0x5aa987={'credentials':{'private_key':_0xcbd067,'client_email':_0x182596[0x1]}};var _0x2d2054=new dialogflow[(_0x251f('0x30'))](_0x5aa987);var _0x884459=_0x2d2054[_0x251f('0x31')](_0x182596[0x0],md5(_0x42a442[_0x251f('0x18')]['id']));var _0x134778={'session':_0x884459,'queryInput':{'text':{'text':_0x42a442['message']['body'],'languageCode':_0x182596[0x3]||'en'}}};return _0x2d2054['detectIntent'](_0x134778)[_0x251f('0x2b')](function(_0x2264df){if(_0x2264df&&_0x2264df[_0x251f('0x32')]){_0x42a442[_0x251f('0xe')]['dialogflowV2']=_0x2264df;var _0x3791e6=_0x2264df[0x0];var _0x20d3de=_0x3791e6['queryResult'][_0x251f('0x33')]&&_0x3791e6[_0x251f('0x34')]['diagnosticInfo'][_0x251f('0x35')]?_0x3791e6['queryResult'][_0x251f('0x33')]['fields'][_0x251f('0x36')][_0x251f('0x37')]:![];_0x42a442[_0x251f('0xe')][_0x251f('0x38')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x39')];_0x42a442[_0x251f('0xe')][_0x251f('0x3a')]=_0x3791e6[_0x251f('0x34')]['allRequiredParamsPresent'];_0x42a442[_0x251f('0xe')][_0x251f('0x3b')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x33')]&&_0x3791e6['queryResult'][_0x251f('0x33')][_0x251f('0x35')]?_0x3791e6[_0x251f('0x34')][_0x251f('0x33')][_0x251f('0x35')][_0x251f('0x36')]['boolValue']:![];_0x42a442[_0x251f('0xe')][_0x251f('0x3c')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x3d')];_0x42a442['body'][_0x251f('0x3e')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x3f')];_0x42a442[_0x251f('0xe')][_0x251f('0x40')]=_0x3791e6[_0x251f('0x34')]['intent'][_0x251f('0x41')];_0x42a442[_0x251f('0xe')]['DIALOGFLOWV2_LANGUAGECODE']=_0x3791e6['queryResult']['languageCode'];_0x42a442['body'][_0x251f('0x42')]=_0x3791e6[_0x251f('0x34')][_0x251f('0x43')];_0x42a442[_0x251f('0xe')][_0x251f('0x44')]=_0x3791e6[_0x251f('0x34')]['intentDetectionConfidence'];_0x4e1492[_0x251f('0x45')]='dialogflowV2';_0x4e1492[_0x251f('0x46')]=JSON['stringify'](_0x2264df);var _0xcecd69=[];for(var _0x3ca5fb=0x0;_0x3ca5fb<_0x2264df[_0x251f('0x32')];_0x3ca5fb++){var _0x3bc17e=_0x2264df[_0x3ca5fb];if(_0x3bc17e&&_0x3bc17e[_0x251f('0x34')]&&_0x3bc17e['queryResult'][_0x251f('0x47')]){_0xcecd69[_0x251f('0x48')](createMessage(_0x13802a,_0x120e62,_0x4e1492,_0x3bc17e[_0x251f('0x34')]['fulfillmentText']));}}return Promise['all'](_0xcecd69)[_0x251f('0x2b')](function(){if(_0x20d3de){_0xa8a190[_0x251f('0x1b')]();}else{_0xa8a190['stop']();}})[_0x251f('0x13')](function(_0x5d5c89){logger[_0x251f('0x14')]('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,JSON[_0x251f('0x15')](_0x5d5c89));_0xa8a190[_0x251f('0x1b')]();});}})[_0x251f('0x13')](function(_0x2fd3a2){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x13802a,_0x2fd3a2[_0x251f('0x49')]);_0xa8a190[_0x251f('0x1b')]();});}}catch(_0x5bf869){logger[_0x251f('0x14')](_0x251f('0x12'),_0x13802a,JSON['stringify'](_0x5bf869));_0xa8a190[_0x251f('0x2d')]();}};};
\ No newline at end of file
+var _0xf789=['../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','info','error','stringify','consequence','isNil','interaction','UserId','[%s][DIALOGFLOWV2]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','queryText','intentDetectionConfidence','providerName','dialogflowV2','providerResponse','fulfillmentText','push','all','next','catch','dialogflow','md5','moment','../../../../config/logger','routing','./utils'];(function(_0x2d5328,_0x1076bc){var _0x5862c0=function(_0x40f0c1){while(--_0x40f0c1){_0x2d5328['push'](_0x2d5328['shift']());}};_0x5862c0(++_0x1076bc);}(_0xf789,0xd8));var _0x9f78=function(_0x1fd6d3,_0x2d1d28){_0x1fd6d3=_0x1fd6d3-0x0;var _0x39a911=_0xf789[_0x1fd6d3];return _0x39a911;};'use strict';var _=require('lodash');var dialogflow=require(_0x9f78('0x0'));var md5=require(_0x9f78('0x1'));var moment=require(_0x9f78('0x2'));var Promise=require('bluebird');var logger=require(_0x9f78('0x3'))(_0x9f78('0x4'));var utils=require(_0x9f78('0x5'));var rpc={'chatMessage':require(_0x9f78('0x6')),'openchannelMessage':require(_0x9f78('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x9f78('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x9f78('0x9'))};function createMessage(_0x132824,_0x287b75,_0x111464,_0x789e94){return new Promise(function(_0x4bcf1a,_0x19fe62){var _0x5f0df1=_[_0x9f78('0xa')](_0x111464);_0x5f0df1[_0x9f78('0xb')]=_0x789e94;return rpc[_0x287b75+_0x9f78('0xc')][_0x9f78('0xd')](_0x5f0df1)[_0x9f78('0xe')](function(){logger[_0x9f78('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x132824,_0x5f0df1[_0x9f78('0xb')]);_0x4bcf1a();})['catch'](function(_0x31b6fa){logger[_0x9f78('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x132824,JSON[_0x9f78('0x11')](_0x31b6fa));_0x19fe62(_0x31b6fa);});});}exports[_0x9f78('0x12')]=function(_0x43e93e,_0xf58e7d){return function(_0x4e87a5){try{if(!_[_0x9f78('0x13')](this[_0x9f78('0x14')][_0x9f78('0x15')])){logger[_0x9f78('0xf')](_0x9f78('0x16'),_0x43e93e,_0x9f78('0x17'));return _0x4e87a5['next']();}var _0x35abe6={'ContactId':this[_0x9f78('0x18')]['id'],'sentAt':moment()['format'](_0x9f78('0x19')),'direction':_0x9f78('0x1a')};if(this['channel']===_0x9f78('0x1b')||this[_0x9f78('0x1c')]===_0x9f78('0x1d')){_0x35abe6['phone']=this[_0x9f78('0x14')][_0x9f78('0x1e')];}var _0x4de0ec=this[_0x9f78('0x1c')];if(_0x4de0ec===_0x9f78('0x1f')){_0x35abe6[_0x9f78('0x20')]=this['account']['id'];}else{_0x35abe6[_[_0x9f78('0x21')](_0x4de0ec)+_0x9f78('0x22')]=this['account']['id'];}_0x35abe6[_[_0x9f78('0x21')](_0x4de0ec)+_0x9f78('0x23')]=this['interaction']['id'];if(this[_0x9f78('0x14')][_0x9f78('0x24')]){var _0x461541=_0xf58e7d[0x4];if(!_[_0x9f78('0x25')](_0x461541)){_0x35abe6[_0x9f78('0xb')]=utils[_0x9f78('0x26')](_0x461541,this);return rpc[_0x4de0ec+_0x9f78('0xc')]['create'](_0x35abe6)[_0x9f78('0xe')](function(_0x54f94f){logger[_0x9f78('0xf')](_0x9f78('0x16'),_0x43e93e,_0x35abe6[_0x9f78('0xb')]);})['catch'](function(_0x5d11d9){logger[_0x9f78('0x10')](_0x9f78('0x16'),_0x43e93e,JSON[_0x9f78('0x11')](_0x5d11d9));})[_0x9f78('0x27')](function(){logger['info'](_0x9f78('0x28'),_0x43e93e);_0x4e87a5[_0x9f78('0x29')]();});}else{logger[_0x9f78('0xf')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x43e93e);_0x4e87a5[_0x9f78('0x29')]();}}else{var _0x1fef3b=this;var _0x48fb4d=_0xf58e7d[0x2][_0x9f78('0x2a')](/\\n/g,'\x0a');var _0x3bbe50={'credentials':{'private_key':_0x48fb4d,'client_email':_0xf58e7d[0x1]}};var _0x14dc1c=new dialogflow[(_0x9f78('0x2b'))](_0x3bbe50);var _0x44e40c=_0x14dc1c[_0x9f78('0x2c')](_0xf58e7d[0x0],md5(_0x1fef3b[_0x9f78('0x14')]['id']));var _0x5ad862={'session':_0x44e40c,'queryInput':{'text':{'text':_0x1fef3b[_0x9f78('0x2d')][_0x9f78('0xb')],'languageCode':_0xf58e7d[0x3]||'en'}}};return _0x14dc1c[_0x9f78('0x2e')](_0x5ad862)[_0x9f78('0xe')](function(_0x379e1e){if(_0x379e1e&&_0x379e1e[_0x9f78('0x2f')]){_0x1fef3b[_0x9f78('0xb')]['dialogflowV2']=_0x379e1e;var _0x36448a=_0x379e1e[0x0];var _0x14c8b6=_0x36448a[_0x9f78('0x30')][_0x9f78('0x31')]&&_0x36448a[_0x9f78('0x30')]['diagnosticInfo'][_0x9f78('0x32')]?_0x36448a[_0x9f78('0x30')][_0x9f78('0x31')]['fields'][_0x9f78('0x33')][_0x9f78('0x34')]:![];_0x1fef3b[_0x9f78('0xb')][_0x9f78('0x35')]=_0x36448a[_0x9f78('0x30')]['action'];_0x1fef3b['body'][_0x9f78('0x36')]=_0x36448a[_0x9f78('0x30')]['allRequiredParamsPresent'];_0x1fef3b[_0x9f78('0xb')][_0x9f78('0x37')]=_0x36448a['queryResult'][_0x9f78('0x31')]&&_0x36448a[_0x9f78('0x30')][_0x9f78('0x31')][_0x9f78('0x32')]?_0x36448a[_0x9f78('0x30')][_0x9f78('0x31')][_0x9f78('0x32')][_0x9f78('0x33')][_0x9f78('0x34')]:![];_0x1fef3b['body'][_0x9f78('0x38')]=_0x36448a['queryResult'][_0x9f78('0x39')][_0x9f78('0x3a')];_0x1fef3b[_0x9f78('0xb')][_0x9f78('0x3b')]=_0x36448a[_0x9f78('0x30')][_0x9f78('0x39')][_0x9f78('0x3c')];_0x1fef3b[_0x9f78('0xb')][_0x9f78('0x3d')]=_0x36448a[_0x9f78('0x30')]['intent'][_0x9f78('0x3e')];_0x1fef3b[_0x9f78('0xb')][_0x9f78('0x3f')]=_0x36448a[_0x9f78('0x30')]['languageCode'];_0x1fef3b['body']['DIALOGFLOWV2_QUERYTEXT']=_0x36448a[_0x9f78('0x30')][_0x9f78('0x40')];_0x1fef3b['body']['DIALOGFLOWV2_SCORE']=_0x36448a[_0x9f78('0x30')][_0x9f78('0x41')];_0x35abe6[_0x9f78('0x42')]=_0x9f78('0x43');_0x35abe6[_0x9f78('0x44')]=JSON['stringify'](_0x379e1e);var _0x1d6a53=[];for(var _0x46e8cd=0x0;_0x46e8cd<_0x379e1e[_0x9f78('0x2f')];_0x46e8cd++){var _0x352929=_0x379e1e[_0x46e8cd];if(_0x352929&&_0x352929[_0x9f78('0x30')]&&_0x352929['queryResult'][_0x9f78('0x45')]){_0x1d6a53[_0x9f78('0x46')](createMessage(_0x43e93e,_0x4de0ec,_0x35abe6,_0x352929[_0x9f78('0x30')][_0x9f78('0x45')]));}}return Promise[_0x9f78('0x47')](_0x1d6a53)[_0x9f78('0xe')](function(){if(_0x14c8b6){_0x4e87a5[_0x9f78('0x48')]();}else{_0x4e87a5[_0x9f78('0x29')]();}})['catch'](function(_0x44df2a){logger[_0x9f78('0x10')](_0x9f78('0x16'),_0x43e93e,JSON['stringify'](_0x44df2a));_0x4e87a5[_0x9f78('0x48')]();});}})[_0x9f78('0x49')](function(_0x7727e9){logger[_0x9f78('0x10')](_0x9f78('0x16'),_0x43e93e,_0x7727e9['message']);_0x4e87a5[_0x9f78('0x48')]();});}}catch(_0xecc3e2){logger[_0x9f78('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x43e93e,JSON[_0x9f78('0x11')](_0xecc3e2));_0x4e87a5[_0x9f78('0x29')]();}};};
\ No newline at end of file
index a29fd25..972f12a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5fe=['lodash','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence','replace','length','[%s][GOTOIF]\x20%s','message','join','stop','condition','priorityTrue','priorityFalse','info','next','rules','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate'];(function(_0x253b0a,_0x1e8564){var _0x47b5dd=function(_0x57d2f8){while(--_0x57d2f8){_0x253b0a['push'](_0x253b0a['shift']());}};_0x47b5dd(++_0x1e8564);}(_0xa5fe,0x144));var _0xea5f=function(_0x16aaef,_0x410651){_0x16aaef=_0x16aaef-0x0;var _0x1c82ef=_0xa5fe[_0x16aaef];return _0x1c82ef;};'use strict';var schema=require(_0xea5f('0x0'));var _=require(_0xea5f('0x1'));var htmlToText=require('html-to-text');var utils=require(_0xea5f('0x2'));var logger=require(_0xea5f('0x3'))('routing');var gotoif=schema({'condition':{'type':_0xea5f('0x4'),'required':!![],'message':_0xea5f('0x5')},'priorityTrue':{'type':'number','message':_0xea5f('0x6')},'priorityFalse':{'type':_0xea5f('0x7'),'message':_0xea5f('0x8')}});exports[_0xea5f('0x9')]=function(_0x2eb5f8,_0x399db8){return function(_0x57c14b){try{var _0x5cdbf2={'condition':htmlToText['fromString'](utils['getMustacheRender'](_0x399db8[0x0],this),{'wordwrap':![]})[_0xea5f('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x399db8[0x1],'priorityFalse':_0x399db8[0x2]};var _0x3468ea=gotoif['validate'](_0x5cdbf2,{'typecast':!![]});if(_0x3468ea[_0xea5f('0xb')]){logger['error'](_0xea5f('0xc'),_0x2eb5f8,_['map'](_0x3468ea,_0xea5f('0xd'))[_0xea5f('0xe')](',\x20'));_0x57c14b[_0xea5f('0xf')]();}else{try{var _0x44dd3b=eval('('+_0x5cdbf2[_0xea5f('0x10')]+')');var _0x57b80e=_0x44dd3b?_0x5cdbf2[_0xea5f('0x11')]:_0x5cdbf2[_0xea5f('0x12')];logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2eb5f8,_0x5cdbf2[_0xea5f('0x10')],_0x44dd3b,_0x57b80e||_0xea5f('0x14'));if(_0x57b80e){var _0x2928ac=_['findIndex'](_0x57c14b[_0xea5f('0x15')](),{'p':_0x57b80e});if(_0x2928ac>=0x0){logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x2eb5f8,_0x57b80e||_0xea5f('0x14'),_0x2928ac);_0x57c14b[_0xea5f('0x14')](_0x2928ac);}else{logger[_0xea5f('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2eb5f8,_0x57b80e||'next');_0x57c14b[_0xea5f('0xf')]();}}else{_0x57c14b[_0xea5f('0x14')]();}}catch(_0x59802a){logger[_0xea5f('0x16')](_0xea5f('0x17'),_0x2eb5f8,_0x59802a[_0xea5f('0xd')]);_0x57c14b[_0xea5f('0xf')]();}}}catch(_0x18ef09){logger[_0xea5f('0x16')](_0xea5f('0xc'),_0x2eb5f8,JSON[_0xea5f('0x18')](_0x18ef09));_0x57c14b[_0xea5f('0xf')]();}};};
\ No newline at end of file
+var _0x3d36=['findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify','validate','lodash','html-to-text','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','consequence','fromString','replace','length','error','map','join','stop','condition','priorityTrue','priorityFalse','info','next'];(function(_0x1f2fa4,_0x1dbe68){var _0xb3216c=function(_0x14b169){while(--_0x14b169){_0x1f2fa4['push'](_0x1f2fa4['shift']());}};_0xb3216c(++_0x1dbe68);}(_0x3d36,0x115));var _0x63d3=function(_0xbb14db,_0x3ee8c6){_0xbb14db=_0xbb14db-0x0;var _0x36bed7=_0x3d36[_0xbb14db];return _0x36bed7;};'use strict';var schema=require(_0x63d3('0x0'));var _=require(_0x63d3('0x1'));var htmlToText=require(_0x63d3('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x63d3('0x3'),'required':!![],'message':_0x63d3('0x4')},'priorityTrue':{'type':_0x63d3('0x5'),'message':_0x63d3('0x6')},'priorityFalse':{'type':'number','message':'priority\x20false\x20is\x20a\x20number'}});exports[_0x63d3('0x7')]=function(_0x264661,_0x872ebd){return function(_0x1fc016){try{var _0x57ed2e={'condition':htmlToText[_0x63d3('0x8')](utils['getMustacheRender'](_0x872ebd[0x0],this),{'wordwrap':![]})[_0x63d3('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x872ebd[0x1],'priorityFalse':_0x872ebd[0x2]};var _0xf5fd04=gotoif[_0x63d3('0x0')](_0x57ed2e,{'typecast':!![]});if(_0xf5fd04[_0x63d3('0xa')]){logger[_0x63d3('0xb')]('[%s][GOTOIF]\x20%s',_0x264661,_[_0x63d3('0xc')](_0xf5fd04,'message')[_0x63d3('0xd')](',\x20'));_0x1fc016[_0x63d3('0xe')]();}else{try{var _0xa381f7=eval('('+_0x57ed2e[_0x63d3('0xf')]+')');var _0xb73be1=_0xa381f7?_0x57ed2e[_0x63d3('0x10')]:_0x57ed2e[_0x63d3('0x11')];logger[_0x63d3('0x12')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x264661,_0x57ed2e[_0x63d3('0xf')],_0xa381f7,_0xb73be1||_0x63d3('0x13'));if(_0xb73be1){var _0x31e16b=_[_0x63d3('0x14')](_0x1fc016[_0x63d3('0x15')](),{'p':_0xb73be1});if(_0x31e16b>=0x0){logger['info'](_0x63d3('0x16'),_0x264661,_0xb73be1||_0x63d3('0x13'),_0x31e16b);_0x1fc016['next'](_0x31e16b);}else{logger[_0x63d3('0x12')](_0x63d3('0x17'),_0x264661,_0xb73be1||_0x63d3('0x13'));_0x1fc016[_0x63d3('0xe')]();}}else{_0x1fc016[_0x63d3('0x13')]();}}catch(_0x556c2b){logger[_0x63d3('0xb')](_0x63d3('0x18'),_0x264661,_0x556c2b[_0x63d3('0x19')]);_0x1fc016[_0x63d3('0xe')]();}}}catch(_0x105b7f){logger[_0x63d3('0xb')]('[%s][GOTOIF]\x20%s',_0x264661,JSON[_0x63d3('0x1a')](_0x105b7f));_0x1fc016[_0x63d3('0xe')]();}};};
\ No newline at end of file
index b399cce..1d81cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a30=['validate','lodash','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','[%s][GOTOP]\x20%s','join','priority','findIndex','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','error','stringify'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a30,0x80));var _0x07a3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7a30[_0x14add3];return _0x4a174f;};'use strict';var schema=require(_0x07a3('0x0'));var _=require(_0x07a3('0x1'));var logger=require('../../../../config/logger')(_0x07a3('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x07a3('0x3')}});exports['consequence']=function(_0x524496,_0x5c2042){return function(_0x3845fc){try{var _0x10564e={'priority':_0x5c2042[0x0]};var _0x412c5d=gotop['validate'](_0x10564e,{'typecast':!![]});if(_0x412c5d[_0x07a3('0x4')]){logger['error'](_0x07a3('0x5'),_0x524496,_['map'](_0x412c5d,'message')[_0x07a3('0x6')](',\x20'));_0x3845fc['stop']();}else{logger['info']('[%s][GOTOP]\x20priority\x20%s',_0x524496,_0x10564e['priority']);if(_0x10564e[_0x07a3('0x7')]){var _0x5b16b4=_[_0x07a3('0x8')](_0x3845fc['rules'](),{'p':_0x10564e[_0x07a3('0x7')]});if(_0x5b16b4>=0x0){logger[_0x07a3('0x9')](_0x07a3('0xa'),_0x524496,_0x10564e[_0x07a3('0x7')]||_0x07a3('0xb'),_0x5b16b4);_0x3845fc[_0x07a3('0xb')](_0x5b16b4);}else{logger[_0x07a3('0x9')](_0x07a3('0xc'),_0x524496,_0x10564e[_0x07a3('0x7')]||'next');_0x3845fc[_0x07a3('0xd')]();}}else{_0x3845fc[_0x07a3('0xb')]();}}}catch(_0x551b23){logger[_0x07a3('0xe')](_0x07a3('0x5'),_0x524496,JSON[_0x07a3('0xf')](_0x551b23));_0x3845fc[_0x07a3('0xd')]();}};};
\ No newline at end of file
+var _0xe452=['map','message','join','stop','priority','findIndex','rules','info','next','stringify','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','[%s][GOTOP]\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe452,0x13c));var _0x2e45=function(_0x535a42,_0x2d3281){_0x535a42=_0x535a42-0x0;var _0x33d37b=_0xe452[_0x535a42];return _0x33d37b;};'use strict';var schema=require('validate');var _=require(_0x2e45('0x0'));var logger=require(_0x2e45('0x1'))(_0x2e45('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x2e45('0x3')}});exports[_0x2e45('0x4')]=function(_0x588709,_0x5b2bb2){return function(_0x1ff097){try{var _0x57c12a={'priority':_0x5b2bb2[0x0]};var _0x299ae8=gotop['validate'](_0x57c12a,{'typecast':!![]});if(_0x299ae8[_0x2e45('0x5')]){logger['error'](_0x2e45('0x6'),_0x588709,_[_0x2e45('0x7')](_0x299ae8,_0x2e45('0x8'))[_0x2e45('0x9')](',\x20'));_0x1ff097[_0x2e45('0xa')]();}else{logger['info']('[%s][GOTOP]\x20priority\x20%s',_0x588709,_0x57c12a[_0x2e45('0xb')]);if(_0x57c12a['priority']){var _0x379295=_[_0x2e45('0xc')](_0x1ff097[_0x2e45('0xd')](),{'p':_0x57c12a[_0x2e45('0xb')]});if(_0x379295>=0x0){logger[_0x2e45('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x588709,_0x57c12a[_0x2e45('0xb')]||'next',_0x379295);_0x1ff097[_0x2e45('0xf')](_0x379295);}else{logger[_0x2e45('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x588709,_0x57c12a['priority']||_0x2e45('0xf'));_0x1ff097[_0x2e45('0xa')]();}}else{_0x1ff097['next']();}}}catch(_0x2dbb71){logger['error'](_0x2e45('0x6'),_0x588709,JSON[_0x2e45('0x10')](_0x2dbb71));_0x1ff097[_0x2e45('0xa')]();}};};
\ No newline at end of file
index 46672a7..4a6ecf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa571=['error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','getMustacheRender','contact','chat','ChatWebsiteId','account','channel','AccountId','upperFirst','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','next'];(function(_0x212fcc,_0x1a8867){var _0x4d8190=function(_0x347f7b){while(--_0x347f7b){_0x212fcc['push'](_0x212fcc['shift']());}};_0x4d8190(++_0x1a8867);}(_0xa571,0x107));var _0x1a57=function(_0x57bd2a,_0x17041e){_0x57bd2a=_0x57bd2a-0x0;var _0x185698=_0xa571[_0x57bd2a];return _0x185698;};'use strict';var _=require(_0x1a57('0x0'));var utils=require(_0x1a57('0x1'));var logger=require(_0x1a57('0x2'))(_0x1a57('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x1a57('0x4')),'mailMessage':require(_0x1a57('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x1a57('0x6'))};exports['consequence']=function(_0xa58922,_0xd97a33){return function(_0x22ca20){try{var _0x3c5352={'body':utils[_0x1a57('0x7')](_0xd97a33[0x0],this),'ContactId':this[_0x1a57('0x8')]['id']};if(this['channel']===_0x1a57('0x9')){_0x3c5352[_0x1a57('0xa')]=this[_0x1a57('0xb')]['id'];}else{_0x3c5352[_['upperFirst'](this[_0x1a57('0xc')])+_0x1a57('0xd')]=this[_0x1a57('0xb')]['id'];}_0x3c5352[_[_0x1a57('0xe')](this[_0x1a57('0xc')])+_0x1a57('0xf')]=this[_0x1a57('0x10')]['id'];if(rpc[this[_0x1a57('0xc')]+'Message']){return rpc[this['channel']+_0x1a57('0x11')][_0x1a57('0x12')](_0x3c5352)[_0x1a57('0x13')](function(_0x5ae643){logger[_0x1a57('0x14')](_0x1a57('0x15'),_0xa58922,_0x3c5352['body']);_0x22ca20[_0x1a57('0x16')]();})['catch'](function(_0xd08107){logger[_0x1a57('0x17')](_0x1a57('0x15'),_0xa58922,JSON[_0x1a57('0x18')](_0xd08107));_0x22ca20['stop']();});}}catch(_0x20f7ad){logger['error']('[%s][MESSAGE]\x20%s',_0xa58922,JSON[_0x1a57('0x18')](_0x20f7ad));_0x22ca20[_0x1a57('0x19')]();}};};
\ No newline at end of file
+var _0x5d40=['Message','create','then','info','[%s][MESSAGE]\x20%s','next','catch','error','stringify','stop','lodash','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','account','interaction'];(function(_0x5778f9,_0x4a884c){var _0x5be3ff=function(_0x4c86ed){while(--_0x4c86ed){_0x5778f9['push'](_0x5778f9['shift']());}};_0x5be3ff(++_0x4a884c);}(_0x5d40,0x1a2));var _0x05d4=function(_0xa569c2,_0x2230da){_0xa569c2=_0xa569c2-0x0;var _0x27f29d=_0x5d40[_0xa569c2];return _0x27f29d;};'use strict';var _=require(_0x05d4('0x0'));var utils=require(_0x05d4('0x1'));var logger=require('../../../../config/logger')(_0x05d4('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x05d4('0x3')),'mailMessage':require(_0x05d4('0x4')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x05d4('0x5')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x3d00e7,_0x494cff){return function(_0x284a89){try{var _0x49cf8c={'body':utils['getMustacheRender'](_0x494cff[0x0],this),'ContactId':this[_0x05d4('0x6')]['id']};if(this[_0x05d4('0x7')]===_0x05d4('0x8')){_0x49cf8c[_0x05d4('0x9')]=this['account']['id'];}else{_0x49cf8c[_[_0x05d4('0xa')](this[_0x05d4('0x7')])+_0x05d4('0xb')]=this[_0x05d4('0xc')]['id'];}_0x49cf8c[_['upperFirst'](this['channel'])+'InteractionId']=this[_0x05d4('0xd')]['id'];if(rpc[this['channel']+_0x05d4('0xe')]){return rpc[this[_0x05d4('0x7')]+_0x05d4('0xe')][_0x05d4('0xf')](_0x49cf8c)[_0x05d4('0x10')](function(_0x52d266){logger[_0x05d4('0x11')](_0x05d4('0x12'),_0x3d00e7,_0x49cf8c['body']);_0x284a89[_0x05d4('0x13')]();})[_0x05d4('0x14')](function(_0xf122c7){logger[_0x05d4('0x15')](_0x05d4('0x12'),_0x3d00e7,JSON[_0x05d4('0x16')](_0xf122c7));_0x284a89['stop']();});}}catch(_0xeed200){logger[_0x05d4('0x15')]('[%s][MESSAGE]\x20%s',_0x3d00e7,JSON[_0x05d4('0x16')](_0xeed200));_0x284a89[_0x05d4('0x17')]();}};};
\ No newline at end of file
index fe4249d..a7e5715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef2=['info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger','consequence'];(function(_0x17739f,_0x2c52f0){var _0x25c1a1=function(_0x25c251){while(--_0x25c251){_0x17739f['push'](_0x17739f['shift']());}};_0x25c1a1(++_0x2c52f0);}(_0xeef2,0x89));var _0x2eef=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xeef2[_0x21a9d9];return _0x46adce;};'use strict';var utils=require(_0x2eef('0x0'));var logger=require(_0x2eef('0x1'))('routing');exports[_0x2eef('0x2')]=function(_0xaf4010,_0x2c561f){return function(_0x4c9c35){try{logger[_0x2eef('0x3')](_0x2eef('0x4'),_0xaf4010,utils[_0x2eef('0x5')](_0x2c561f[0x0],this));_0x4c9c35[_0x2eef('0x6')]();}catch(_0x1bbe37){logger[_0x2eef('0x7')](_0x2eef('0x4'),_0xaf4010,JSON[_0x2eef('0x8')](_0x1bbe37));_0x4c9c35[_0x2eef('0x9')]();}};};
\ No newline at end of file
+var _0x7433=['info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stop','./utils','routing'];(function(_0x215e5f,_0x321e4f){var _0x4ba505=function(_0x3a36d6){while(--_0x3a36d6){_0x215e5f['push'](_0x215e5f['shift']());}};_0x4ba505(++_0x321e4f);}(_0x7433,0x196));var _0x3743=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x7433[_0x4394b6];return _0x360244;};'use strict';var utils=require(_0x3743('0x0'));var logger=require('../../../../config/logger')(_0x3743('0x1'));exports['consequence']=function(_0x69ecbc,_0x500265){return function(_0x3827ce){try{logger[_0x3743('0x2')](_0x3743('0x3'),_0x69ecbc,utils[_0x3743('0x4')](_0x500265[0x0],this));_0x3827ce[_0x3743('0x5')]();}catch(_0x4e7325){logger[_0x3743('0x6')](_0x3743('0x3'),_0x69ecbc,JSON['stringify'](_0x4e7325));_0x3827ce[_0x3743('0x7')]();}};};
\ No newline at end of file
index 6a899c4..dd0f504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd3=['%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','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','interaction','MessageId','message','chat','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','catch','update\x20queue\x20report','timeout','info','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','Queues','createQueue','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','util','seq-queue','../../../../config/environment','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','emit','clone','push','capitalize','InteractionId'];(function(_0x120195,_0x268976){var _0x2bf687=function(_0x145bcc){while(--_0x145bcc){_0x120195['push'](_0x120195['shift']());}};_0x2bf687(++_0x268976);}(_0xdcd3,0x12a));var _0x3dcd=function(_0x5a57bc,_0x5158a2){_0x5a57bc=_0x5a57bc-0x0;var _0x3b3a17=_0xdcd3[_0x5a57bc];return _0x3b3a17;};'use strict';var schema=require(_0x3dcd('0x0'));var _=require('lodash');var util=require(_0x3dcd('0x1'));var seqqueue=require(_0x3dcd('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x3dcd('0x3'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0x3dcd('0x4'));config[_0x3dcd('0x5')]=_[_0x3dcd('0x6')](config[_0x3dcd('0x5')],{'host':_0x3dcd('0x7'),'port':0x18eb});var io=require(_0x3dcd('0x8'))(new Redis(config[_0x3dcd('0x5')]));var attributes=['id',_0x3dcd('0x9'),_0x3dcd('0xa'),_0x3dcd('0xb'),_0x3dcd('0xc'),'joinAt'];function emit(_0x59accc,_0xca8513,_0x5e4806){io['to'](_0x59accc)[_0x3dcd('0xd')](_0xca8513,_0x5e4806);}function emitChannelQueueInteraction(_0x3e3cc9,_0x2c49ec,_0x4466dd,_0x3b1a7e,_0x41e700,_0x583676,_0x5a7542,_0x3c5fcb){var _0x5c73ec=_[_0x3dcd('0xe')](_0x4466dd);_0x5c73ec['queue_id']=_0x3c5fcb;_0x5c73ec[_0x3dcd('0xb')]=_0x2c49ec;_0x5c73ec[_0x3dcd('0xa')]=_0x3b1a7e;_0x5c73ec['id']=_0x41e700;if(_0x583676){attributes[_0x3dcd('0xf')](_[_0x3dcd('0x10')](_0x3e3cc9)+_0x3dcd('0x11'));_0x5a7542[util['format'](_0x3dcd('0x12'),_0x3e3cc9)][_0x41e700]=_[_0x3dcd('0x13')](_0x5c73ec,attributes);}else{delete _0x5a7542[util[_0x3dcd('0x14')](_0x3dcd('0x12'),_0x3e3cc9)][_0x41e700];}emit(util[_0x3dcd('0x14')](_0x3dcd('0x15'),_0x3e3cc9,_0x2c49ec),util[_0x3dcd('0x14')](_0x3dcd('0x16'),_0x3e3cc9,_0x583676?_0x3dcd('0x17'):_0x3dcd('0x18')),_[_0x3dcd('0x13')](_0x5c73ec,attributes));}var rpc={'openchannelQueueReport':require(_0x3dcd('0x19')),'mailQueueReport':require(_0x3dcd('0x1a')),'chatQueueReport':require(_0x3dcd('0x1b')),'smsQueueReport':require(_0x3dcd('0x1c')),'faxQueueReport':require(_0x3dcd('0x1d')),'whatsappQueueReport':require(_0x3dcd('0x1e'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x3dcd('0x1f')},'timeout':{'type':_0x3dcd('0x20'),'message':_0x3dcd('0x21')}});function startRouting(_0x3d21a4,_0x490faf,_0x2b3e3d,_0x441de0){if(_0x3d21a4&&_0x490faf&&_0x2b3e3d){_0x490faf[_0x3dcd('0x22')]+=0x1;var _0x1e645a={'uniqueid':_0x3d21a4,'from':_0x2b3e3d['body']?_0x2b3e3d[_0x3dcd('0x23')][_0x3dcd('0xc')]:'','joinAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'ContactId':_0x2b3e3d[_0x3dcd('0x25')]?_0x2b3e3d[_0x3dcd('0x25')]['id']:null,'ListId':_0x2b3e3d[_0x3dcd('0x26')]?_0x2b3e3d['list']['id']:null};_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+'QueueId']=_0x490faf['id']||null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+_0x3dcd('0x11')]=_0x2b3e3d[_0x3dcd('0x29')]?_0x2b3e3d[_0x3dcd('0x29')]['id']:null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+_0x3dcd('0x2a')]=_0x2b3e3d[_0x3dcd('0x2b')]?_0x2b3e3d[_0x3dcd('0x2b')]['id']:null;_0x1e645a[_[_0x3dcd('0x27')](_0x2b3e3d[_0x3dcd('0x28')])+(_0x2b3e3d[_0x3dcd('0x28')]!==_0x3dcd('0x2c')?'AccountId':_0x3dcd('0x2d'))]=_0x2b3e3d[_0x3dcd('0xa')]?_0x2b3e3d['account']['id']:null;logger['info'](util[_0x3dcd('0x14')](_0x3dcd('0x2e'),_0x3d21a4,_0x490faf[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x2b3e3d[_0x3dcd('0x28')],_0x490faf[_0x3dcd('0x2f')],_0x1e645a,_0x2b3e3d[_0x3dcd('0xa')]['name'],_0x2b3e3d['message']['id'],!![],_0x441de0,_0x490faf['id']);if(rpc[_0x2b3e3d['channel']+_0x3dcd('0x30')]){return rpc[_0x2b3e3d[_0x3dcd('0x28')]+'QueueReport'][_0x3dcd('0x31')](_0x1e645a)['catch'](function(_0x5cf3ab){logger[_0x3dcd('0x32')](_0x3dcd('0x33'));});}}}function stopRouting(_0x211fdf,_0x1f619e,_0x2f4e90,_0x10f4d2){if(_0x211fdf&&_0x1f619e){_0x1f619e[_0x3dcd('0x22')]-=0x1;var _0x370079={'leaveAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'acceptAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'reason':'accepted'};logger['info'](util[_0x3dcd('0x14')]('[%s][STOP:QUEUE][NAME:%s]',_0x211fdf,_0x1f619e[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x2f4e90[_0x3dcd('0x28')],_0x1f619e['name'],_0x2f4e90[_0x3dcd('0x23')],_0x2f4e90[_0x3dcd('0xa')][_0x3dcd('0x2f')],_0x2f4e90[_0x3dcd('0x2b')]['id'],![],_0x10f4d2,_0x1f619e['id']);if(rpc[_0x2f4e90[_0x3dcd('0x28')]+_0x3dcd('0x30')]){return rpc[_0x2f4e90[_0x3dcd('0x28')]+_0x3dcd('0x30')]['update'](_0x211fdf,_0x370079)[_0x3dcd('0x34')](function(_0x4035d9){logger['error'](_0x3dcd('0x35'));});}}}function endRouting(_0x379bec,_0x3dddb3,_0x315fe5,_0x2517c2){if(_0x379bec&&_0x3dddb3){_0x3dddb3[_0x3dcd('0x22')]-=0x1;var _0x229af4={'leaveAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'exitAt':moment()[_0x3dcd('0x14')](_0x3dcd('0x24')),'reason':_0x3dcd('0x36')};logger[_0x3dcd('0x37')](util[_0x3dcd('0x14')](_0x3dcd('0x38'),_0x379bec,_0x3dddb3[_0x3dcd('0x2f')]));emitChannelQueueInteraction(_0x315fe5['channel'],_0x3dddb3[_0x3dcd('0x2f')],_0x315fe5[_0x3dcd('0x23')],_0x315fe5['account'][_0x3dcd('0x2f')],_0x315fe5['message']['id'],![],_0x2517c2);if(rpc[_0x315fe5['channel']+'QueueReport']){return rpc[_0x315fe5['channel']+_0x3dcd('0x30')][_0x3dcd('0x39')](_0x379bec,_0x229af4)[_0x3dcd('0x34')](function(_0x578011){logger['error'](_0x3dcd('0x35'));});}}}function handleFindQueue(_0x4baf02){return function(_0x10adde){return _0x10adde[_0x3dcd('0x2f')][_0x3dcd('0x3a')]()===_0x4baf02[_0x3dcd('0x3a')]();};}exports[_0x3dcd('0x3b')]=function(_0x172956,_0x52d87a,_0x560dc4,_0x3c011e){return function(_0x293f5c){try{var _0x1e2993={'name':_0x52d87a[0x0],'timeout':_0x52d87a[0x1]};var _0x324c76=queue['validate'](_0x1e2993,{'typecast':!![]});if(_0x324c76[_0x3dcd('0x3c')]){logger[_0x3dcd('0x32')](_0x3dcd('0x3d'),_0x172956,_[_0x3dcd('0x3e')](_0x324c76,_0x3dcd('0x2b'))['join'](',\x20'));_0x293f5c[_0x3dcd('0x3f')]();}else{var _0x14db11=_[_0x3dcd('0x40')](_0x560dc4[_0x3c011e[_0x3dcd('0x28')]+_0x3dcd('0x41')],handleFindQueue(_0x1e2993[_0x3dcd('0x2f')]));if(_0x14db11){startRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);var _0x1e5a7d=(_0x14db11[_0x3dcd('0x36')]||0xa)*0x3e8;var _0x372a5a=(_0x1e2993[_0x3dcd('0x36')]||0x14)*0x3e8;var _0x4632da;if(_0x1e5a7d>_0x372a5a){_0x372a5a=_0x1e5a7d;}var _0x5d027d=seqqueue[_0x3dcd('0x42')](_0x1e5a7d);_0x5d027d['id']=_0x172956;_0x5d027d[_0x3dcd('0x43')]=_0x1e5a7d;_0x5d027d[_0x3dcd('0x44')]=_0x372a5a;_0x5d027d[_0x3dcd('0x28')]=_0x3c011e[_0x3dcd('0x28')];_0x560dc4[_0x3dcd('0x45')][_0x172956]['on']('end',function(){logger[_0x3dcd('0x37')](_0x3dcd('0x46'),_0x172956);stopRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);clearTimeout(_0x4632da);_0x4632da=undefined;_0x5d027d[_0x3dcd('0x47')](!![]);if(_0x560dc4['rules'][_0x172956]){delete _0x560dc4['rules'][_0x172956];}_0x293f5c['stop']();});_0x560dc4[_0x3dcd('0x45')][_0x172956]['on'](_0x3dcd('0x48'),function(){if(_0x560dc4[_0x3dcd('0x45')][_0x172956]){delete _0x560dc4[_0x3dcd('0x45')][_0x172956];}});_0x4632da=setTimeout(function(){logger[_0x3dcd('0x37')](_0x3dcd('0x49'),_0x172956);endRouting(_0x172956,_0x14db11,_0x3c011e,_0x560dc4);clearTimeout(_0x4632da);_0x5d027d[_0x3dcd('0x47')](!![]);_0x293f5c['next']();},_0x372a5a);switch(_0x14db11[_0x3dcd('0x4a')]){case _0x3dcd('0x4b'):strategy[_0x3dcd('0x4b')](_0x5d027d,_0x14db11,_0x560dc4,_0x3c011e);break;default:strategy[_0x3dcd('0x4c')](_0x5d027d,_0x14db11,_0x560dc4,_0x3c011e);}}else{logger[_0x3dcd('0x32')](_0x3dcd('0x4d'),_0x172956,_0x1e2993[_0x3dcd('0x2f')]);_0x293f5c[_0x3dcd('0x3f')]();}}}catch(_0x383569){console[_0x3dcd('0x4e')](_0x383569);logger['error'](_0x3dcd('0x3d'),_0x172956,_0x383569['stack']);_0x293f5c[_0x3dcd('0x3f')]();}};};
\ No newline at end of file
+var _0x9782=['WebsiteId','info','name','QueueReport','catch','update','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','consequence','validate','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','complete','strategy','beepall','log','stack','lodash','util','moment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','from','emit','clone','account','push','InteractionId','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','QueueId','channel','interaction','MessageId','message','upperFirst','chat'];(function(_0xe80e5c,_0x38e90a){var _0x2bff61=function(_0x29203e){while(--_0x29203e){_0xe80e5c['push'](_0xe80e5c['shift']());}};_0x2bff61(++_0x38e90a);}(_0x9782,0x68));var _0x2978=function(_0x546f9f,_0xcce640){_0x546f9f=_0x546f9f-0x0;var _0x3513dd=_0x9782[_0x546f9f];return _0x3513dd;};'use strict';var schema=require('validate');var _=require(_0x2978('0x0'));var util=require(_0x2978('0x1'));var seqqueue=require('seq-queue');var moment=require(_0x2978('0x2'));var Redis=require('ioredis');var config=require('../../../../config/environment');var logger=require(_0x2978('0x3'))(_0x2978('0x4'));var strategy=require(_0x2978('0x5'));config[_0x2978('0x6')]=_[_0x2978('0x7')](config[_0x2978('0x6')],{'host':_0x2978('0x8'),'port':0x18eb});var io=require(_0x2978('0x9'))(new Redis(config[_0x2978('0x6')]));var attributes=['id',_0x2978('0xa'),'account','queue',_0x2978('0xb'),'joinAt'];function emit(_0x3ef548,_0x3682da,_0x13b9a7){io['to'](_0x3ef548)[_0x2978('0xc')](_0x3682da,_0x13b9a7);}function emitChannelQueueInteraction(_0x5c7d4d,_0x2e1f3e,_0x1fb444,_0x1a892b,_0x494751,_0x187354,_0x15b978,_0x502670){var _0x19c2fe=_[_0x2978('0xd')](_0x1fb444);_0x19c2fe['queue_id']=_0x502670;_0x19c2fe['queue']=_0x2e1f3e;_0x19c2fe[_0x2978('0xe')]=_0x1a892b;_0x19c2fe['id']=_0x494751;if(_0x187354){attributes[_0x2978('0xf')](_['capitalize'](_0x5c7d4d)+_0x2978('0x10'));_0x15b978[util[_0x2978('0x11')](_0x2978('0x12'),_0x5c7d4d)][_0x494751]=_[_0x2978('0x13')](_0x19c2fe,attributes);}else{delete _0x15b978[util[_0x2978('0x11')](_0x2978('0x12'),_0x5c7d4d)][_0x494751];}emit(util[_0x2978('0x11')]('%s:queue:%s',_0x5c7d4d,_0x2e1f3e),util[_0x2978('0x11')](_0x2978('0x14'),_0x5c7d4d,_0x187354?_0x2978('0x15'):_0x2978('0x16')),_['pick'](_0x19c2fe,attributes));}var rpc={'openchannelQueueReport':require(_0x2978('0x17')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x2978('0x18')),'smsQueueReport':require(_0x2978('0x19')),'faxQueueReport':require(_0x2978('0x1a')),'whatsappQueueReport':require(_0x2978('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x2978('0x1c')},'timeout':{'type':_0x2978('0x1d'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0xc53bbc,_0x106bb4,_0x28f1a8,_0x4a31e3){if(_0xc53bbc&&_0x106bb4&&_0x28f1a8){_0x106bb4[_0x2978('0x1e')]+=0x1;var _0x41965c={'uniqueid':_0xc53bbc,'from':_0x28f1a8[_0x2978('0x1f')]?_0x28f1a8[_0x2978('0x1f')][_0x2978('0xb')]:'','joinAt':moment()[_0x2978('0x11')](_0x2978('0x20')),'ContactId':_0x28f1a8[_0x2978('0x21')]?_0x28f1a8[_0x2978('0x21')]['id']:null,'ListId':_0x28f1a8[_0x2978('0x22')]?_0x28f1a8[_0x2978('0x22')]['id']:null};_0x41965c[_['upperFirst'](_0x28f1a8['channel'])+_0x2978('0x23')]=_0x106bb4['id']||null;_0x41965c[_['upperFirst'](_0x28f1a8[_0x2978('0x24')])+_0x2978('0x10')]=_0x28f1a8[_0x2978('0x25')]?_0x28f1a8[_0x2978('0x25')]['id']:null;_0x41965c[_['upperFirst'](_0x28f1a8[_0x2978('0x24')])+_0x2978('0x26')]=_0x28f1a8[_0x2978('0x27')]?_0x28f1a8[_0x2978('0x27')]['id']:null;_0x41965c[_[_0x2978('0x28')](_0x28f1a8[_0x2978('0x24')])+(_0x28f1a8[_0x2978('0x24')]!==_0x2978('0x29')?'AccountId':_0x2978('0x2a'))]=_0x28f1a8[_0x2978('0xe')]?_0x28f1a8[_0x2978('0xe')]['id']:null;logger[_0x2978('0x2b')](util[_0x2978('0x11')]('[%s][START:QUEUE][NAME:%s]',_0xc53bbc,_0x106bb4[_0x2978('0x2c')]));emitChannelQueueInteraction(_0x28f1a8[_0x2978('0x24')],_0x106bb4[_0x2978('0x2c')],_0x41965c,_0x28f1a8[_0x2978('0xe')][_0x2978('0x2c')],_0x28f1a8[_0x2978('0x27')]['id'],!![],_0x4a31e3,_0x106bb4['id']);if(rpc[_0x28f1a8[_0x2978('0x24')]+'QueueReport']){return rpc[_0x28f1a8[_0x2978('0x24')]+_0x2978('0x2d')]['create'](_0x41965c)[_0x2978('0x2e')](function(_0x3dd579){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x4f7678,_0xd13c7a,_0x1136e6,_0x3c7b43){if(_0x4f7678&&_0xd13c7a){_0xd13c7a['waiting']-=0x1;var _0x30a9b2={'leaveAt':moment()[_0x2978('0x11')](_0x2978('0x20')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger['info'](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x4f7678,_0xd13c7a[_0x2978('0x2c')]));emitChannelQueueInteraction(_0x1136e6['channel'],_0xd13c7a[_0x2978('0x2c')],_0x1136e6[_0x2978('0x1f')],_0x1136e6['account'][_0x2978('0x2c')],_0x1136e6[_0x2978('0x27')]['id'],![],_0x3c7b43,_0xd13c7a['id']);if(rpc[_0x1136e6[_0x2978('0x24')]+_0x2978('0x2d')]){return rpc[_0x1136e6[_0x2978('0x24')]+_0x2978('0x2d')][_0x2978('0x2f')](_0x4f7678,_0x30a9b2)[_0x2978('0x2e')](function(_0x18a5bc){logger[_0x2978('0x30')](_0x2978('0x31'));});}}}function endRouting(_0x3ccd44,_0xfc7c0a,_0x35bd61,_0x184dee){if(_0x3ccd44&&_0xfc7c0a){_0xfc7c0a[_0x2978('0x1e')]-=0x1;var _0x14d103={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x2978('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x2978('0x32')};logger[_0x2978('0x2b')](util['format'](_0x2978('0x33'),_0x3ccd44,_0xfc7c0a[_0x2978('0x2c')]));emitChannelQueueInteraction(_0x35bd61[_0x2978('0x24')],_0xfc7c0a[_0x2978('0x2c')],_0x35bd61[_0x2978('0x1f')],_0x35bd61['account']['name'],_0x35bd61[_0x2978('0x27')]['id'],![],_0x184dee);if(rpc[_0x35bd61[_0x2978('0x24')]+_0x2978('0x2d')]){return rpc[_0x35bd61[_0x2978('0x24')]+'QueueReport'][_0x2978('0x2f')](_0x3ccd44,_0x14d103)[_0x2978('0x2e')](function(_0x90e006){logger[_0x2978('0x30')](_0x2978('0x31'));});}}}function handleFindQueue(_0x2b4f08){return function(_0x5e78a3){return _0x5e78a3[_0x2978('0x2c')]['toLowerCase']()===_0x2b4f08['toLowerCase']();};}exports[_0x2978('0x34')]=function(_0x495e25,_0x3d7300,_0x432891,_0x201c66){return function(_0x3eee61){try{var _0x425ae8={'name':_0x3d7300[0x0],'timeout':_0x3d7300[0x1]};var _0x406233=queue[_0x2978('0x35')](_0x425ae8,{'typecast':!![]});if(_0x406233[_0x2978('0x36')]){logger[_0x2978('0x30')](_0x2978('0x37'),_0x495e25,_[_0x2978('0x38')](_0x406233,'message')[_0x2978('0x39')](',\x20'));_0x3eee61[_0x2978('0x3a')]();}else{var _0x2ab39a=_[_0x2978('0x3b')](_0x432891[_0x201c66[_0x2978('0x24')]+_0x2978('0x3c')],handleFindQueue(_0x425ae8['name']));if(_0x2ab39a){startRouting(_0x495e25,_0x2ab39a,_0x201c66,_0x432891);var _0x335663=(_0x2ab39a[_0x2978('0x32')]||0xa)*0x3e8;var _0x1df3e3=(_0x425ae8[_0x2978('0x32')]||0x14)*0x3e8;var _0x877284;if(_0x335663>_0x1df3e3){_0x1df3e3=_0x335663;}var _0x34d60a=seqqueue[_0x2978('0x3d')](_0x335663);_0x34d60a['id']=_0x495e25;_0x34d60a[_0x2978('0x3e')]=_0x335663;_0x34d60a[_0x2978('0x3f')]=_0x1df3e3;_0x34d60a[_0x2978('0x24')]=_0x201c66[_0x2978('0x24')];_0x432891['rules'][_0x495e25]['on'](_0x2978('0x40'),function(){logger[_0x2978('0x2b')](_0x2978('0x41'),_0x495e25);stopRouting(_0x495e25,_0x2ab39a,_0x201c66,_0x432891);clearTimeout(_0x877284);_0x877284=undefined;_0x34d60a[_0x2978('0x42')](!![]);if(_0x432891['rules'][_0x495e25]){delete _0x432891[_0x2978('0x43')][_0x495e25];}_0x3eee61[_0x2978('0x3a')]();});_0x432891[_0x2978('0x43')][_0x495e25]['on'](_0x2978('0x44'),function(){if(_0x432891[_0x2978('0x43')][_0x495e25]){delete _0x432891['rules'][_0x495e25];}});_0x877284=setTimeout(function(){logger[_0x2978('0x2b')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x495e25);endRouting(_0x495e25,_0x2ab39a,_0x201c66,_0x432891);clearTimeout(_0x877284);_0x34d60a[_0x2978('0x42')](!![]);_0x3eee61['next']();},_0x1df3e3);switch(_0x2ab39a[_0x2978('0x45')]){case'rrmemory':strategy['rrmemory'](_0x34d60a,_0x2ab39a,_0x432891,_0x201c66);break;default:strategy[_0x2978('0x46')](_0x34d60a,_0x2ab39a,_0x432891,_0x201c66);}}else{logger[_0x2978('0x30')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x495e25,_0x425ae8[_0x2978('0x2c')]);_0x3eee61['stop']();}}}catch(_0x5c6f8f){console[_0x2978('0x47')](_0x5c6f8f);logger[_0x2978('0x30')]('[%s][QUEUE]\x20%s',_0x495e25,_0x5c6f8f[_0x2978('0x48')]);_0x3eee61[_0x2978('0x3a')]();}};};
\ No newline at end of file
index 5f4f4f5..f4dc994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x885a=['uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','push','bind','handleTimeout','timeout','drained','handleDrained','handleRun','prototype','debug','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','saveWaitingNotification','channel','showNotification','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','hideNotification','removeWaitingNotification','writeLog','STOP','TIMEOUT'];(function(_0x15a6b7,_0x4c5831){var _0x22cbe2=function(_0x12f406){while(--_0x12f406){_0x15a6b7['push'](_0x15a6b7['shift']());}};_0x22cbe2(++_0x4c5831);}(_0x885a,0x180));var _0xa885=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x885a[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var uuid=require(_0xa885('0x0'));var util=require(_0xa885('0x1'));var logger=require(_0xa885('0x2'))(_0xa885('0x3'));var Agent=function(_0x573a2b,_0xcf0656,_0x1c41b5,_0x2386ec){this[_0xa885('0x4')]=uuid['v4']();this[_0xa885('0x5')]=_0x573a2b;this[_0xa885('0x6')]=_0xcf0656;this['realtime']=_0x1c41b5;this[_0xa885('0x3')]=_0x2386ec;this[_0xa885('0x5')][_0xa885('0x7')](this['handleRun'][_0xa885('0x8')](this),this[_0xa885('0x9')][_0xa885('0x8')](this));this['squeue']['on'](_0xa885('0xa'),this[_0xa885('0x9')][_0xa885('0x8')](this));this[_0xa885('0x5')]['on'](_0xa885('0xb'),this[_0xa885('0xc')][_0xa885('0x8')](this));};Agent['prototype'][_0xa885('0x7')]=function(){this[_0xa885('0x5')][_0xa885('0x7')](this[_0xa885('0xd')][_0xa885('0x8')](this),this[_0xa885('0x9')][_0xa885('0x8')](this));};Agent['prototype'][_0xa885('0xc')]=function(){this[_0xa885('0x9')](!![]);};Agent[_0xa885('0xe')][_0xa885('0xd')]=function(){logger[_0xa885('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xa885('0x5')]['id'],this[_0xa885('0x6')]['id']);if(_['isNil'](this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']])){logger[_0xa885('0xf')](_0xa885('0x12'),this['squeue']['id'],this[_0xa885('0x6')]['id']);setTimeout(this['push'][_0xa885('0x8')](this),0x3e8);}else{if(this[_0xa885('0x3')][_0xa885('0x13')]||util['isAgentAvailable'](this[_0xa885('0x5')]['id'],this['realtime'][_0xa885('0x11')][this[_0xa885('0x6')]['id']],this[_0xa885('0x5')]['channel'],![])){this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busy']=!![];this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busyQueue']=undefined;util[_0xa885('0x14')](this['realtime'],this[_0xa885('0x3')],this[_0xa885('0x6')],this['squeue'][_0xa885('0x15')]);util[_0xa885('0x16')](this[_0xa885('0x4')],this['squeue']['id'],this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']],null,this[_0xa885('0x3')]);util['writeLog'](this[_0xa885('0x5')]['id'],this['realtime'][_0xa885('0x11')][this[_0xa885('0x6')]['id']],_0xa885('0x17')+(this[_0xa885('0x3')][_0xa885('0x13')]?_0xa885('0x18'):''));}else{logger[_0xa885('0xf')](_0xa885('0x19'),this['squeue']['id'],this['agent']['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent[_0xa885('0xe')][_0xa885('0x9')]=function(_0x3af5d9){if(_[_0xa885('0x1a')](this[_0xa885('0x10')][_0xa885('0x11')][this['agent']['id']])){return logger[_0xa885('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xa885('0x5')]['id'],this['agent']['id']);}else{logger[_0xa885('0xf')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0xa885('0x5')]['id'],this[_0xa885('0x6')]['id']);util[_0xa885('0x1b')](this['notificationId'],this[_0xa885('0x5')]['id'],this[_0xa885('0x10')]['agents'][this[_0xa885('0x6')]['id']],null,this['routing']);this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busy']=![];this[_0xa885('0x10')][_0xa885('0x11')][this[_0xa885('0x6')]['id']]['busyQueue']=undefined;util[_0xa885('0x1c')](this[_0xa885('0x10')],this[_0xa885('0x3')],this[_0xa885('0x6')],this[_0xa885('0x5')][_0xa885('0x15')]);util[_0xa885('0x1d')](this[_0xa885('0x5')]['id'],this['realtime']['agents'][this[_0xa885('0x6')]['id']],_0x3af5d9?_0xa885('0x1e'):_0xa885('0x1f'));}if(!_0x3af5d9){setTimeout(this[_0xa885('0x7')][_0xa885('0x8')](this),0x3e8);}};function agent(_0x18d083,_0x404afc,_0x337e55,_0x1035b1){return new Agent(_0x18d083,_0x404afc,_0x337e55,_0x1035b1);}module['exports']=agent;
\ No newline at end of file
+var _0xf3cd=['notificationId','agent','realtime','squeue','push','handleRun','handleTimeout','timeout','drained','handleDrained','bind','prototype','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busyQueue','saveWaitingNotification','showNotification','writeLog','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busy','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x39f9f2,_0x37fc06){_0x39f9f2=_0x39f9f2-0x0;var _0x3febf8=_0xf3cd[_0x39f9f2];return _0x3febf8;};'use strict';var _=require(_0xdf3c('0x0'));var uuid=require(_0xdf3c('0x1'));var util=require(_0xdf3c('0x2'));var logger=require(_0xdf3c('0x3'))(_0xdf3c('0x4'));var Agent=function(_0x433a7f,_0x54db05,_0x401518,_0x71b446){this[_0xdf3c('0x5')]=uuid['v4']();this['squeue']=_0x433a7f;this[_0xdf3c('0x6')]=_0x54db05;this[_0xdf3c('0x7')]=_0x401518;this[_0xdf3c('0x4')]=_0x71b446;this[_0xdf3c('0x8')][_0xdf3c('0x9')](this[_0xdf3c('0xa')]['bind'](this),this[_0xdf3c('0xb')]['bind'](this));this['squeue']['on'](_0xdf3c('0xc'),this[_0xdf3c('0xb')]['bind'](this));this[_0xdf3c('0x8')]['on'](_0xdf3c('0xd'),this[_0xdf3c('0xe')][_0xdf3c('0xf')](this));};Agent[_0xdf3c('0x10')][_0xdf3c('0x9')]=function(){this[_0xdf3c('0x8')][_0xdf3c('0x9')](this['handleRun'][_0xdf3c('0xf')](this),this[_0xdf3c('0xb')][_0xdf3c('0xf')](this));};Agent[_0xdf3c('0x10')]['handleDrained']=function(){this[_0xdf3c('0xb')](!![]);};Agent[_0xdf3c('0x10')][_0xdf3c('0xa')]=function(){logger['debug'](_0xdf3c('0x11'),this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x6')]['id']);if(_[_0xdf3c('0x12')](this[_0xdf3c('0x7')][_0xdf3c('0x13')][this[_0xdf3c('0x6')]['id']])){logger[_0xdf3c('0x14')](_0xdf3c('0x15'),this[_0xdf3c('0x8')]['id'],this['agent']['id']);setTimeout(this[_0xdf3c('0x9')][_0xdf3c('0xf')](this),0x3e8);}else{if(this[_0xdf3c('0x4')][_0xdf3c('0x16')]||util[_0xdf3c('0x17')](this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x7')][_0xdf3c('0x13')][this[_0xdf3c('0x6')]['id']],this[_0xdf3c('0x8')][_0xdf3c('0x18')],![])){this[_0xdf3c('0x7')][_0xdf3c('0x13')][this['agent']['id']]['busy']=!![];this[_0xdf3c('0x7')]['agents'][this[_0xdf3c('0x6')]['id']][_0xdf3c('0x19')]=undefined;util[_0xdf3c('0x1a')](this[_0xdf3c('0x7')],this[_0xdf3c('0x4')],this[_0xdf3c('0x6')],this['squeue'][_0xdf3c('0x18')]);util[_0xdf3c('0x1b')](this[_0xdf3c('0x5')],this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x7')][_0xdf3c('0x13')][this[_0xdf3c('0x6')]['id']],null,this[_0xdf3c('0x4')]);util[_0xdf3c('0x1c')](this[_0xdf3c('0x8')]['id'],this['realtime'][_0xdf3c('0x13')][this[_0xdf3c('0x6')]['id']],'RINGING'+(this[_0xdf3c('0x4')]['forcedOwnership']?':FORCED':''));}else{logger['debug'](_0xdf3c('0x1d'),this[_0xdf3c('0x8')]['id'],this['agent']['id']);setTimeout(this['push'][_0xdf3c('0xf')](this),0x3e8);}}};Agent[_0xdf3c('0x10')][_0xdf3c('0xb')]=function(_0x1ccdd4){if(_['isNil'](this[_0xdf3c('0x7')][_0xdf3c('0x13')][this['agent']['id']])){return logger['debug'](_0xdf3c('0x15'),this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x6')]['id']);}else{logger['debug'](_0xdf3c('0x1e'),this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x6')]['id']);util[_0xdf3c('0x1f')](this['notificationId'],this[_0xdf3c('0x8')]['id'],this[_0xdf3c('0x7')]['agents'][this[_0xdf3c('0x6')]['id']],null,this[_0xdf3c('0x4')]);this[_0xdf3c('0x7')][_0xdf3c('0x13')][this['agent']['id']][_0xdf3c('0x20')]=![];this[_0xdf3c('0x7')][_0xdf3c('0x13')][this[_0xdf3c('0x6')]['id']]['busyQueue']=undefined;util[_0xdf3c('0x21')](this[_0xdf3c('0x7')],this['routing'],this['agent'],this[_0xdf3c('0x8')]['channel']);util[_0xdf3c('0x1c')](this['squeue']['id'],this['realtime']['agents'][this[_0xdf3c('0x6')]['id']],_0x1ccdd4?_0xdf3c('0x22'):_0xdf3c('0x23'));}if(!_0x1ccdd4){setTimeout(this[_0xdf3c('0x9')]['bind'](this),0x3e8);}};function agent(_0x49f147,_0x3d8557,_0x49d0f0,_0x46e40f){return new Agent(_0x49f147,_0x3d8557,_0x49d0f0,_0x46e40f);}module[_0xdf3c('0x24')]=agent;
\ No newline at end of file
index e3666a2..6d2438c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f6=['handleTimeout','timeout','drained','handleDrained','prototype','push','isNil','Agents','length','debug','isAgentAvailable','agents','channel','writeLog','busy','name','showNotification','notificationId','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','hideNotification','TIMEOUT','lodash','./util','../../../../../config/logger','routing','squeue','queue','realtime','handleRun','bind'];(function(_0x532a08,_0x1079ab){var _0xd9c5ee=function(_0x1ce50c){while(--_0x1ce50c){_0x532a08['push'](_0x532a08['shift']());}};_0xd9c5ee(++_0x1079ab);}(_0x57f6,0x8d));var _0x657f=function(_0x8b247d,_0x9401a9){_0x8b247d=_0x8b247d-0x0;var _0x4e10a3=_0x57f6[_0x8b247d];return _0x4e10a3;};'use strict';var _=require(_0x657f('0x0'));var uuid=require('uuid');var util=require(_0x657f('0x1'));var logger=require(_0x657f('0x2'))(_0x657f('0x3'));var Beepall=function(_0xaed519,_0x403674,_0x5224d8,_0xdb0f25){this['notificationId']=uuid['v4']();this[_0x657f('0x4')]=_0xaed519;this[_0x657f('0x5')]=_0x403674;this[_0x657f('0x6')]=_0x5224d8;this['routing']=_0xdb0f25;this[_0x657f('0x4')]['push'](this[_0x657f('0x7')][_0x657f('0x8')](this),this[_0x657f('0x9')][_0x657f('0x8')](this));this['squeue']['on'](_0x657f('0xa'),this[_0x657f('0x9')]['bind'](this));this[_0x657f('0x4')]['on'](_0x657f('0xb'),this[_0x657f('0xc')]['bind'](this));};Beepall[_0x657f('0xd')][_0x657f('0xe')]=function(){this['squeue'][_0x657f('0xe')](this[_0x657f('0x7')][_0x657f('0x8')](this),this[_0x657f('0x9')][_0x657f('0x8')](this));};Beepall[_0x657f('0xd')][_0x657f('0xc')]=function(){this[_0x657f('0x9')](!![]);};Beepall[_0x657f('0xd')][_0x657f('0x7')]=function(){var _0x23b248=!![];if(!_[_0x657f('0xf')](this['queue'])&&!_[_0x657f('0xf')](this['queue']['Agents'])&&this[_0x657f('0x5')][_0x657f('0x10')][_0x657f('0x11')]>0x0){for(var _0x504bd0=0x0,_0x27f29a;_0x504bd0<this[_0x657f('0x5')][_0x657f('0x10')]['length'];_0x504bd0+=0x1){_0x27f29a=this[_0x657f('0x5')]['Agents'][_0x504bd0]['id'];if(_[_0x657f('0xf')](this[_0x657f('0x6')]['agents'][_0x27f29a])){logger[_0x657f('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x657f('0x4')]['id'],_0x27f29a);}else{if(util[_0x657f('0x13')](this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a],this['squeue'][_0x657f('0x15')],!![])){_0x23b248=![];util[_0x657f('0x16')](this['squeue']['id'],this[_0x657f('0x6')]['agents'][_0x27f29a],'RINGING');this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a][_0x657f('0x17')]=!![];this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a]['busyQueue']=this[_0x657f('0x5')][_0x657f('0x18')];util['saveWaitingNotification'](this[_0x657f('0x6')],this[_0x657f('0x3')],this['queue'][_0x657f('0x10')][_0x504bd0],this[_0x657f('0x4')][_0x657f('0x15')]);util[_0x657f('0x19')](this[_0x657f('0x1a')],this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x27f29a],this[_0x657f('0x5')],this[_0x657f('0x3')]);}}}if(_0x23b248){logger[_0x657f('0x12')](_0x657f('0x1b'),this[_0x657f('0x4')]['id']);setTimeout(this[_0x657f('0xe')][_0x657f('0x8')](this),0x3e8);}}else{logger[_0x657f('0x12')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0x657f('0xe')]['bind'](this),0x3e8);}};Beepall[_0x657f('0xd')][_0x657f('0x9')]=function(_0x464ef9){if(!_[_0x657f('0xf')](this[_0x657f('0x5')])&&!_['isNil'](this[_0x657f('0x5')][_0x657f('0x10')])){for(var _0x37e594=0x0,_0x26b9e2;_0x37e594<this['queue'][_0x657f('0x10')]['length'];_0x37e594+=0x1){_0x26b9e2=this[_0x657f('0x5')][_0x657f('0x10')][_0x37e594]['id'];if(_[_0x657f('0xf')](this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x26b9e2);}else{util[_0x657f('0x1c')](this[_0x657f('0x1a')],this['squeue']['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2],this[_0x657f('0x5')],this[_0x657f('0x3')]);util[_0x657f('0x16')](this[_0x657f('0x4')]['id'],this[_0x657f('0x6')][_0x657f('0x14')][_0x26b9e2],_0x464ef9?'STOP':_0x657f('0x1d'));this[_0x657f('0x6')]['agents'][_0x26b9e2]['busy']=![];this['realtime'][_0x657f('0x14')][_0x26b9e2]['busyQueue']=undefined;util['removeWaitingNotification'](this[_0x657f('0x6')],this['routing'],this[_0x657f('0x6')]['agents'][_0x26b9e2],this['squeue']['channel']);}}}if(!_0x464ef9){setTimeout(this['push'][_0x657f('0x8')](this),0x3e8);}};function beepall(_0x512993,_0xc3455c,_0x19bd7a,_0x5bffc7){return new Beepall(_0x512993,_0xc3455c,_0x19bd7a,_0x5bffc7);}module['exports']=beepall;
\ No newline at end of file
+var _0x91ae=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','removeWaitingNotification','exports','uuid','../../../../../config/logger','routing','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','isNil','queue','Agents','length','agents','isAgentAvailable','channel','RINGING','busy','busyQueue','name','saveWaitingNotification','showNotification','debug','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY'];(function(_0x3bd730,_0x495d3e){var _0x1b440c=function(_0x48fca5){while(--_0x48fca5){_0x3bd730['push'](_0x3bd730['shift']());}};_0x1b440c(++_0x495d3e);}(_0x91ae,0x1ef));var _0xe91a=function(_0x149b0d,_0x5acd67){_0x149b0d=_0x149b0d-0x0;var _0x59818b=_0x91ae[_0x149b0d];return _0x59818b;};'use strict';var _=require('lodash');var uuid=require(_0xe91a('0x0'));var util=require('./util');var logger=require(_0xe91a('0x1'))(_0xe91a('0x2'));var Beepall=function(_0x1d0470,_0x4f4712,_0xa10e8,_0x2f7bde){this[_0xe91a('0x3')]=uuid['v4']();this[_0xe91a('0x4')]=_0x1d0470;this['queue']=_0x4f4712;this[_0xe91a('0x5')]=_0xa10e8;this[_0xe91a('0x2')]=_0x2f7bde;this[_0xe91a('0x4')][_0xe91a('0x6')](this[_0xe91a('0x7')][_0xe91a('0x8')](this),this[_0xe91a('0x9')]['bind'](this));this['squeue']['on'](_0xe91a('0xa'),this[_0xe91a('0x9')][_0xe91a('0x8')](this));this[_0xe91a('0x4')]['on'](_0xe91a('0xb'),this['handleDrained'][_0xe91a('0x8')](this));};Beepall[_0xe91a('0xc')][_0xe91a('0x6')]=function(){this[_0xe91a('0x4')][_0xe91a('0x6')](this[_0xe91a('0x7')][_0xe91a('0x8')](this),this[_0xe91a('0x9')][_0xe91a('0x8')](this));};Beepall[_0xe91a('0xc')][_0xe91a('0xd')]=function(){this['handleTimeout'](!![]);};Beepall[_0xe91a('0xc')]['handleRun']=function(){var _0xebc0b=!![];if(!_[_0xe91a('0xe')](this[_0xe91a('0xf')])&&!_[_0xe91a('0xe')](this['queue']['Agents'])&&this[_0xe91a('0xf')][_0xe91a('0x10')][_0xe91a('0x11')]>0x0){for(var _0x4be868=0x0,_0x12b41b;_0x4be868<this[_0xe91a('0xf')][_0xe91a('0x10')][_0xe91a('0x11')];_0x4be868+=0x1){_0x12b41b=this['queue'][_0xe91a('0x10')][_0x4be868]['id'];if(_[_0xe91a('0xe')](this[_0xe91a('0x5')][_0xe91a('0x12')][_0x12b41b])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x12b41b);}else{if(util[_0xe91a('0x13')](this[_0xe91a('0x4')]['id'],this[_0xe91a('0x5')][_0xe91a('0x12')][_0x12b41b],this['squeue'][_0xe91a('0x14')],!![])){_0xebc0b=![];util['writeLog'](this['squeue']['id'],this[_0xe91a('0x5')]['agents'][_0x12b41b],_0xe91a('0x15'));this[_0xe91a('0x5')][_0xe91a('0x12')][_0x12b41b][_0xe91a('0x16')]=!![];this[_0xe91a('0x5')][_0xe91a('0x12')][_0x12b41b][_0xe91a('0x17')]=this['queue'][_0xe91a('0x18')];util[_0xe91a('0x19')](this[_0xe91a('0x5')],this['routing'],this[_0xe91a('0xf')][_0xe91a('0x10')][_0x4be868],this[_0xe91a('0x4')][_0xe91a('0x14')]);util[_0xe91a('0x1a')](this['notificationId'],this[_0xe91a('0x4')]['id'],this[_0xe91a('0x5')]['agents'][_0x12b41b],this['queue'],this[_0xe91a('0x2')]);}}}if(_0xebc0b){logger[_0xe91a('0x1b')](_0xe91a('0x1c'),this[_0xe91a('0x4')]['id']);setTimeout(this[_0xe91a('0x6')][_0xe91a('0x8')](this),0x3e8);}}else{logger[_0xe91a('0x1b')](_0xe91a('0x1d'),this[_0xe91a('0x4')]['id']);setTimeout(this[_0xe91a('0x6')][_0xe91a('0x8')](this),0x3e8);}};Beepall['prototype'][_0xe91a('0x9')]=function(_0x4541e9){if(!_[_0xe91a('0xe')](this[_0xe91a('0xf')])&&!_['isNil'](this['queue'][_0xe91a('0x10')])){for(var _0x3dc3cf=0x0,_0x4859b8;_0x3dc3cf<this['queue'][_0xe91a('0x10')][_0xe91a('0x11')];_0x3dc3cf+=0x1){_0x4859b8=this[_0xe91a('0xf')]['Agents'][_0x3dc3cf]['id'];if(_[_0xe91a('0xe')](this[_0xe91a('0x5')]['agents'][_0x4859b8])){logger[_0xe91a('0x1b')](_0xe91a('0x1e'),this['squeue']['id'],_0x4859b8);}else{util[_0xe91a('0x1f')](this[_0xe91a('0x3')],this['squeue']['id'],this[_0xe91a('0x5')][_0xe91a('0x12')][_0x4859b8],this[_0xe91a('0xf')],this[_0xe91a('0x2')]);util[_0xe91a('0x20')](this[_0xe91a('0x4')]['id'],this[_0xe91a('0x5')]['agents'][_0x4859b8],_0x4541e9?'STOP':'TIMEOUT');this[_0xe91a('0x5')]['agents'][_0x4859b8]['busy']=![];this[_0xe91a('0x5')][_0xe91a('0x12')][_0x4859b8][_0xe91a('0x17')]=undefined;util[_0xe91a('0x21')](this[_0xe91a('0x5')],this['routing'],this[_0xe91a('0x5')][_0xe91a('0x12')][_0x4859b8],this['squeue'][_0xe91a('0x14')]);}}}if(!_0x4541e9){setTimeout(this['push'][_0xe91a('0x8')](this),0x3e8);}};function beepall(_0x37ac4c,_0x342860,_0xa9f5a7,_0x4ec77b){return new Beepall(_0x37ac4c,_0x342860,_0xa9f5a7,_0x4ec77b);}module[_0xe91a('0x22')]=beepall;
\ No newline at end of file
index 66bfd28..834f0ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64df=['exports','./agent'];(function(_0x24476f,_0x48e333){var _0x52c6c3=function(_0x3a5d6e){while(--_0x3a5d6e){_0x24476f['push'](_0x24476f['shift']());}};_0x52c6c3(++_0x48e333);}(_0x64df,0x1c4));var _0xf64d=function(_0x21347a,_0x5d81c7){_0x21347a=_0x21347a-0x0;var _0x3d54d9=_0x64df[_0x21347a];return _0x3d54d9;};'use strict';module[_0xf64d('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require(_0xf64d('0x1'))};
\ No newline at end of file
+var _0xbf04=['./agent','exports','./rrmemory','./beepall'];(function(_0x301817,_0x341fab){var _0x2f5df0=function(_0x574702){while(--_0x574702){_0x301817['push'](_0x301817['shift']());}};_0x2f5df0(++_0x341fab);}(_0xbf04,0x121));var _0x4bf0=function(_0x5c61f0,_0x575fc0){_0x5c61f0=_0x5c61f0-0x0;var _0x227e42=_0xbf04[_0x5c61f0];return _0x227e42;};'use strict';module[_0x4bf0('0x0')]={'rrmemory':require(_0x4bf0('0x1')),'beepall':require(_0x4bf0('0x2')),'agent':require(_0x4bf0('0x3'))};
\ No newline at end of file
index 20b9619..41db2ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b94=['agents','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','isNil','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','busy','busyQueue','removeWaitingNotification','exports','lodash','./util','../../../../../config/logger','routing','squeue','queue','intervals','push','handleRun','bind','handleTimeout','module','drained','handleDrained','prototype','handleCheckReject','realtime'];(function(_0x3c253e,_0x1b4436){var _0xf96e3b=function(_0x5b822f){while(--_0x5b822f){_0x3c253e['push'](_0x3c253e['shift']());}};_0xf96e3b(++_0x1b4436);}(_0x9b94,0xa8));var _0x49b9=function(_0x204882,_0x14cb91){_0x204882=_0x204882-0x0;var _0x339669=_0x9b94[_0x204882];return _0x339669;};'use strict';var rr=require('rr');var _=require(_0x49b9('0x0'));var uuid=require('uuid');var util=require(_0x49b9('0x1'));var logger=require(_0x49b9('0x2'))(_0x49b9('0x3'));var RRMemory=function(_0x3ced22,_0x537e82,_0x27263a,_0x2cd013){this['notificationId']=uuid['v4']();this[_0x49b9('0x4')]=_0x3ced22;this[_0x49b9('0x5')]=_0x537e82;this['realtime']=_0x27263a;this['routing']=_0x2cd013;this[_0x49b9('0x6')]={};this['squeue'][_0x49b9('0x7')](this[_0x49b9('0x8')][_0x49b9('0x9')](this),this[_0x49b9('0xa')]['bind'](this),this[_0x49b9('0xb')]);this[_0x49b9('0x4')]['on']('timeout',this[_0x49b9('0xa')][_0x49b9('0x9')](this));this[_0x49b9('0x4')]['on'](_0x49b9('0xc'),this[_0x49b9('0xd')][_0x49b9('0x9')](this));};RRMemory[_0x49b9('0xe')][_0x49b9('0x7')]=function(){this[_0x49b9('0x4')][_0x49b9('0x7')](this[_0x49b9('0x8')][_0x49b9('0x9')](this),this[_0x49b9('0xa')][_0x49b9('0x9')](this));};RRMemory[_0x49b9('0xe')][_0x49b9('0xd')]=function(){this[_0x49b9('0xa')](!![]);};RRMemory[_0x49b9('0xe')][_0x49b9('0xf')]=function(_0x3900a1){if(util['isAgentAvailable'](this['squeue']['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x4')][_0x49b9('0x13')],!![])){logger[_0x49b9('0x14')](_0x49b9('0x15'),this['squeue']['id'],this[_0x49b9('0x12')]);clearInterval(this[_0x49b9('0x6')][this[_0x49b9('0x12')]]);_0x3900a1[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}};RRMemory['prototype'][_0x49b9('0x8')]=function(_0x1f950d){this[_0x49b9('0x12')]=rr(this['queue'][_0x49b9('0x17')]);logger[_0x49b9('0x14')]('[%s][QUEUE]\x20try\x20with\x20%s',this['squeue']['id'],this[_0x49b9('0x12')]);if(_[_0x49b9('0x18')](this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]])){logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x49b9('0x12')]);_0x1f950d[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this['agentId']],this['squeue']['channel'],!![])){this['realtime']['agents'][this['agentId']]['busy']=!![];this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]]['busyQueue']=this[_0x49b9('0x5')][_0x49b9('0x19')];util['saveWaitingNotification'](this[_0x49b9('0x10')],this[_0x49b9('0x3')],this['realtime'][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x4')][_0x49b9('0x13')]);util[_0x49b9('0x1a')](this[_0x49b9('0x1b')],this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]],this[_0x49b9('0x5')],this[_0x49b9('0x3')]);util[_0x49b9('0x1c')](this[_0x49b9('0x4')]['id'],this['realtime'][_0x49b9('0x11')][this[_0x49b9('0x12')]],_0x49b9('0x1d'));this[_0x49b9('0x6')][this[_0x49b9('0x12')]]=setInterval(this['handleCheckReject']['bind'](this,_0x1f950d),0x3e8);}else{logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x49b9('0x4')]['id'],this[_0x49b9('0x12')]);_0x1f950d[_0x49b9('0x16')]();setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}}};RRMemory[_0x49b9('0xe')][_0x49b9('0xa')]=function(_0x1dbd1f){logger[_0x49b9('0x14')](_0x49b9('0x1e'),this[_0x49b9('0x4')]['id'],this[_0x49b9('0x12')]);if(_[_0x49b9('0x18')](this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]])){logger[_0x49b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x49b9('0x4')]['id'],this['agentId']);}else{clearInterval(this[_0x49b9('0x6')][this[_0x49b9('0x12')]]);util[_0x49b9('0x1f')](this[_0x49b9('0x1b')],this[_0x49b9('0x4')]['id'],this[_0x49b9('0x10')]['agents'][this['agentId']],this[_0x49b9('0x5')],this['routing']);util[_0x49b9('0x1c')](this['squeue']['id'],this[_0x49b9('0x10')]['agents'][this[_0x49b9('0x12')]],_0x49b9('0x20'));this[_0x49b9('0x10')][_0x49b9('0x11')][this['agentId']][_0x49b9('0x21')]=![];this[_0x49b9('0x10')][_0x49b9('0x11')][this[_0x49b9('0x12')]][_0x49b9('0x22')]=undefined;util[_0x49b9('0x23')](this['realtime'],this[_0x49b9('0x3')],this['realtime']['agents'][this['agentId']],this['squeue'][_0x49b9('0x13')]);}if(!_0x1dbd1f){setTimeout(this[_0x49b9('0x7')][_0x49b9('0x9')](this),0x3e8);}};function rrmemory(_0x3aa943,_0x513f35,_0x6113e2,_0x178344){return new RRMemory(_0x3aa943,_0x513f35,_0x6113e2,_0x178344);}module[_0x49b9('0x24')]=rrmemory;
\ No newline at end of file
+var _0xdfd1=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','queue','name','saveWaitingNotification','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil','TIMEOUT','busy','busyQueue','lodash','uuid','./util','routing','squeue','realtime','push','handleTimeout','module','timeout','drained','handleDrained','bind','prototype','handleRun','handleCheckReject','isAgentAvailable','debug','[%s][QUEUE]\x20available\x20again\x20%s','agentId','intervals','done','mapAgentsId','agents'];(function(_0x17cde1,_0x1a6c65){var _0x1762c2=function(_0x3052c1){while(--_0x3052c1){_0x17cde1['push'](_0x17cde1['shift']());}};_0x1762c2(++_0x1a6c65);}(_0xdfd1,0x1bc));var _0x1dfd=function(_0x553d77,_0x55047d){_0x553d77=_0x553d77-0x0;var _0x2c15b3=_0xdfd1[_0x553d77];return _0x2c15b3;};'use strict';var rr=require('rr');var _=require(_0x1dfd('0x0'));var uuid=require(_0x1dfd('0x1'));var util=require(_0x1dfd('0x2'));var logger=require('../../../../../config/logger')(_0x1dfd('0x3'));var RRMemory=function(_0x2ec816,_0x48d200,_0x42188c,_0x32618b){this['notificationId']=uuid['v4']();this[_0x1dfd('0x4')]=_0x2ec816;this['queue']=_0x48d200;this[_0x1dfd('0x5')]=_0x42188c;this[_0x1dfd('0x3')]=_0x32618b;this['intervals']={};this['squeue'][_0x1dfd('0x6')](this['handleRun']['bind'](this),this[_0x1dfd('0x7')]['bind'](this),this[_0x1dfd('0x8')]);this['squeue']['on'](_0x1dfd('0x9'),this[_0x1dfd('0x7')]['bind'](this));this[_0x1dfd('0x4')]['on'](_0x1dfd('0xa'),this[_0x1dfd('0xb')][_0x1dfd('0xc')](this));};RRMemory[_0x1dfd('0xd')][_0x1dfd('0x6')]=function(){this[_0x1dfd('0x4')]['push'](this[_0x1dfd('0xe')][_0x1dfd('0xc')](this),this[_0x1dfd('0x7')][_0x1dfd('0xc')](this));};RRMemory[_0x1dfd('0xd')][_0x1dfd('0xb')]=function(){this[_0x1dfd('0x7')](!![]);};RRMemory[_0x1dfd('0xd')][_0x1dfd('0xf')]=function(_0x2aa897){if(util[_0x1dfd('0x10')](this['squeue']['id'],this[_0x1dfd('0x5')]['agents'][this['agentId']],this[_0x1dfd('0x4')]['channel'],!![])){logger[_0x1dfd('0x11')](_0x1dfd('0x12'),this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x13')]);clearInterval(this[_0x1dfd('0x14')][this['agentId']]);_0x2aa897[_0x1dfd('0x15')]();setTimeout(this[_0x1dfd('0x6')]['bind'](this),0x3e8);}};RRMemory[_0x1dfd('0xd')]['handleRun']=function(_0x417458){this['agentId']=rr(this['queue'][_0x1dfd('0x16')]);logger[_0x1dfd('0x11')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x13')]);if(_['isNil'](this[_0x1dfd('0x5')][_0x1dfd('0x17')][this[_0x1dfd('0x13')]])){logger[_0x1dfd('0x11')](_0x1dfd('0x18'),this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x13')]);_0x417458['done']();setTimeout(this['push'][_0x1dfd('0xc')](this),0x3e8);}else{if(util[_0x1dfd('0x10')](this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x5')]['agents'][this[_0x1dfd('0x13')]],this['squeue'][_0x1dfd('0x19')],!![])){this['realtime'][_0x1dfd('0x17')][this[_0x1dfd('0x13')]]['busy']=!![];this[_0x1dfd('0x5')][_0x1dfd('0x17')][this[_0x1dfd('0x13')]]['busyQueue']=this[_0x1dfd('0x1a')][_0x1dfd('0x1b')];util[_0x1dfd('0x1c')](this[_0x1dfd('0x5')],this[_0x1dfd('0x3')],this['realtime']['agents'][this[_0x1dfd('0x13')]],this[_0x1dfd('0x4')][_0x1dfd('0x19')]);util[_0x1dfd('0x1d')](this[_0x1dfd('0x1e')],this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x5')]['agents'][this['agentId']],this[_0x1dfd('0x1a')],this[_0x1dfd('0x3')]);util[_0x1dfd('0x1f')](this[_0x1dfd('0x4')]['id'],this['realtime'][_0x1dfd('0x17')][this[_0x1dfd('0x13')]],_0x1dfd('0x20'));this[_0x1dfd('0x14')][this['agentId']]=setInterval(this['handleCheckReject'][_0x1dfd('0xc')](this,_0x417458),0x3e8);}else{logger['debug'](_0x1dfd('0x21'),this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x13')]);_0x417458[_0x1dfd('0x15')]();setTimeout(this[_0x1dfd('0x6')][_0x1dfd('0xc')](this),0x3e8);}}};RRMemory[_0x1dfd('0xd')][_0x1dfd('0x7')]=function(_0x258e18){logger[_0x1dfd('0x11')](_0x1dfd('0x22'),this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x13')]);if(_[_0x1dfd('0x23')](this[_0x1dfd('0x5')]['agents'][this[_0x1dfd('0x13')]])){logger['debug'](_0x1dfd('0x18'),this['squeue']['id'],this[_0x1dfd('0x13')]);}else{clearInterval(this[_0x1dfd('0x14')][this[_0x1dfd('0x13')]]);util['hideNotification'](this['notificationId'],this[_0x1dfd('0x4')]['id'],this[_0x1dfd('0x5')][_0x1dfd('0x17')][this['agentId']],this[_0x1dfd('0x1a')],this[_0x1dfd('0x3')]);util[_0x1dfd('0x1f')](this['squeue']['id'],this[_0x1dfd('0x5')][_0x1dfd('0x17')][this[_0x1dfd('0x13')]],_0x1dfd('0x24'));this[_0x1dfd('0x5')][_0x1dfd('0x17')][this[_0x1dfd('0x13')]][_0x1dfd('0x25')]=![];this[_0x1dfd('0x5')]['agents'][this['agentId']][_0x1dfd('0x26')]=undefined;util['removeWaitingNotification'](this[_0x1dfd('0x5')],this[_0x1dfd('0x3')],this[_0x1dfd('0x5')][_0x1dfd('0x17')][this[_0x1dfd('0x13')]],this[_0x1dfd('0x4')][_0x1dfd('0x19')]);}if(!_0x258e18){setTimeout(this[_0x1dfd('0x6')][_0x1dfd('0xc')](this),0x3e8);}};function rrmemory(_0x1c786f,_0x45fe39,_0x121242,_0x3ca498){return new RRMemory(_0x1c786f,_0x45fe39,_0x121242,_0x3ca498);}module['exports']=rrmemory;
\ No newline at end of file
index 4896fa0..4cfbbf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2035=['save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','interaction','UserId','some','QueuesWaitingInteractions','capitalize','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','writeLog','util','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','format','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s'];(function(_0x36f82a,_0x4ec395){var _0x495067=function(_0x2ede56){while(--_0x2ede56){_0x36f82a['push'](_0x36f82a['shift']());}};_0x495067(++_0x4ec395);}(_0x2035,0x112));var _0x5203=function(_0x480a97,_0x348428){_0x480a97=_0x480a97-0x0;var _0x521bd8=_0x2035[_0x480a97];return _0x521bd8;};'use strict';var _=require('lodash');var util=require(_0x5203('0x0'));var utils=require('../utils');var Redis=require(_0x5203('0x1'));var config=require(_0x5203('0x2'));var logger=require(_0x5203('0x3'))(_0x5203('0x4'));config[_0x5203('0x5')]=_[_0x5203('0x6')](config[_0x5203('0x5')],{'host':_0x5203('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5203('0x5')]));function sendNotification(_0x7120f3,_0x5a57f7,_0x45bc01,_0x548993,_0x2ffafb,_0x41a29f){io['to'](util[_0x5203('0x8')](_0x5203('0x9'),_0x548993[_0x5203('0xa')]))[_0x5203('0xb')](_0x5203('0xc'),_0x548993);var _0xe7b426=_0x41a29f||{};var _0x1e2fea=_0x45bc01[_0x5203('0xd')]('.');var _0x3cde25={'uniqueid':_0x5a57f7,'channel':_0x1e2fea[0x0],'id':_0x1e2fea[0x1],'title':_0x1e2fea[0x0]+_0x5203('0xe'),'interactionId':_0x1e2fea[0x2],'queue':_0x2ffafb?_0x2ffafb[_0x5203('0xa')]:null,'sound':_0xe7b426[_0x5203('0xf')][_0x5203('0x10')],'shake':_0xe7b426[_0x5203('0xf')]['notificationShake']};try{if(!_0xe7b426[_0x5203('0x11')]){_0xe7b426[_0x5203('0x11')]={};}if(_0x2ffafb){_0xe7b426[_0x5203('0x11')][_0x5203('0x12')]=_0x2ffafb;}else if(_0xe7b426[_0x5203('0x11')]['queue']){delete _0xe7b426[_0x5203('0x11')]['queue'];}_0x3cde25[_0x5203('0x13')]=utils[_0x5203('0x14')](_0xe7b426[_0x5203('0xf')][_0x5203('0x15')],_0xe7b426);}catch(_0x1cb51e){_0x3cde25[_0x5203('0x13')]=_0x5203('0x16');logger[_0x5203('0x17')](util[_0x5203('0x8')]('[%s][QUEUE]\x20%s',_0x5a57f7,_0x1cb51e[_0x5203('0x18')]));}io['to'](util[_0x5203('0x8')](_0x5203('0x9'),_0x548993[_0x5203('0xa')]))[_0x5203('0xb')](util[_0x5203('0x8')](_0x5203('0x19'),_0x7120f3?_0x5203('0x1a'):_0x5203('0x1b')),_0x3cde25);}function writeLog(_0x10d228,_0x3f4136,_0x30b5d4){return logger[_0x5203('0x1c')](util[_0x5203('0x8')](_0x5203('0x1d'),_0x10d228,_0x3f4136[_0x5203('0xa')],_0x30b5d4));}exports[_0x5203('0x1e')]=function(_0x1c816d,_0xdf8e11,_0x571e0a,_0x21a9d3){if(_0xdf8e11['busy']){writeLog(_0x1c816d,_0xdf8e11,_0x5203('0x1f'));return![];}if(!_0xdf8e11[_0x5203('0x20')]){writeLog(_0x1c816d,_0xdf8e11,'OFFLINE');return![];}if(_0xdf8e11[_0x571e0a+'Pause']){writeLog(_0x1c816d,_0xdf8e11,_0x5203('0x21'));return![];}if(_0x21a9d3&&_0xdf8e11[_0x5203('0x22')](_0x571e0a+_0x5203('0x23'))&&_0xdf8e11[_0x5203('0x22')](_0x571e0a+_0x5203('0x24'))){if(_0xdf8e11[_0x571e0a+_0x5203('0x23')]>0x0&&_0xdf8e11[_0x571e0a+_0x5203('0x24')]>=_0xdf8e11[_0x571e0a+'Capacity']){writeLog(_0x1c816d,_0xdf8e11,_0x571e0a[_0x5203('0x25')]()+_0x5203('0x26'));return![];}}return!![];};exports['showNotification']=function(_0x4bccd7,_0x5e5bd1,_0x588005,_0x38c42,_0x4ea332){return sendNotification(!![],_0x4bccd7,_0x5e5bd1,_0x588005,_0x38c42,_0x4ea332);};exports['hideNotification']=function(_0x8e4100,_0x4ae2ae,_0x2850dc,_0x31b886,_0x322434){return sendNotification(![],_0x8e4100,_0x4ae2ae,_0x2850dc,_0x31b886,_0x322434);};exports['checkWaitingNotifications']=function(_0x599708,_0x2f8e99,_0x28cd81){var _0x472e45=_0x2f8e99[_0x5203('0x27')][_0x5203('0x28')];if(!_0x472e45&&_0x28cd81){_0x472e45=_0x28cd81['id'];}var _0x4030e8=_[_0x5203('0x29')](_0x599708[_0x2f8e99['channel']+_0x5203('0x2a')],function(_0x4f65d6){var _0x5404f0=_[_0x5203('0x2b')](_0x2f8e99[_0x5203('0x2c')])+_0x5203('0x2d');return _0x4f65d6[_0x5404f0]===_0x2f8e99[_0x5203('0x27')]['id'];});if(!_0x4030e8&&_0x472e45){_0x4030e8=_[_0x5203('0x29')](_0x599708[_0x5203('0x2e')][_0x472e45][_0x2f8e99[_0x5203('0x2c')]+'WaitingInteractions'],function(_0x4fc0f8){return _0x4fc0f8['id']===_0x2f8e99[_0x5203('0x27')]['id'];});}return _0x4030e8;};exports[_0x5203('0x2f')]=function(_0x3765b3,_0x2a7f7c,_0x34d4f6,_0x14310a){_0x3765b3[_0x5203('0x2e')][_0x34d4f6['id']][_0x14310a+_0x5203('0x30')][_0x2a7f7c[_0x5203('0x18')]['id']]={'id':_0x2a7f7c[_0x5203('0x27')]['id']};};exports['removeWaitingNotification']=function(_0x1842ee,_0x96caaa,_0x307227,_0x311d9e){delete _0x1842ee[_0x5203('0x2e')][_0x307227['id']][_0x311d9e+_0x5203('0x30')][_0x96caaa[_0x5203('0x18')]['id']];};exports[_0x5203('0x31')]=writeLog;
\ No newline at end of file
+var _0xd73f=['BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','QueuesWaitingInteractions','capitalize','channel','InteractionId','interaction','some','agents','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','writeLog','lodash','util','../../../../../config/logger','routing','redis','defaults','localhost','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','message','format','user:%s','notification:%s','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy'];(function(_0x4babf1,_0x426d98){var _0xa8bf1b=function(_0x5700e1){while(--_0x5700e1){_0x4babf1['push'](_0x4babf1['shift']());}};_0xa8bf1b(++_0x426d98);}(_0xd73f,0x16e));var _0xfd73=function(_0x34559b,_0x42b8ed){_0x34559b=_0x34559b-0x0;var _0x517ca8=_0xd73f[_0x34559b];return _0x517ca8;};'use strict';var _=require(_0xfd73('0x0'));var util=require(_0xfd73('0x1'));var utils=require('../utils');var Redis=require('ioredis');var config=require('../../../../../config/environment');var logger=require(_0xfd73('0x2'))(_0xfd73('0x3'));config[_0xfd73('0x4')]=_[_0xfd73('0x5')](config[_0xfd73('0x4')],{'host':_0xfd73('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function sendNotification(_0x5cce3e,_0x1ecef7,_0xbabe4c,_0x11c931,_0x1b9fe9,_0x40af7c){io['to'](util['format']('user:%s',_0x11c931[_0xfd73('0x7')]))[_0xfd73('0x8')](_0xfd73('0x9'),_0x11c931);var _0x155c84=_0x40af7c||{};var _0x552655=_0xbabe4c[_0xfd73('0xa')]('.');var _0x471525={'uniqueid':_0x1ecef7,'channel':_0x552655[0x0],'id':_0x552655[0x1],'title':_0x552655[0x0]+_0xfd73('0xb'),'interactionId':_0x552655[0x2],'queue':_0x1b9fe9?_0x1b9fe9['name']:null,'sound':_0x155c84[_0xfd73('0xc')][_0xfd73('0xd')],'shake':_0x155c84[_0xfd73('0xc')]['notificationShake']};try{if(!_0x155c84[_0xfd73('0xe')]){_0x155c84[_0xfd73('0xe')]={};}if(_0x1b9fe9){_0x155c84[_0xfd73('0xe')]['queue']=_0x1b9fe9;}else if(_0x155c84[_0xfd73('0xe')][_0xfd73('0xf')]){delete _0x155c84[_0xfd73('0xe')]['queue'];}_0x471525[_0xfd73('0x10')]=utils['getMustacheRender'](_0x155c84[_0xfd73('0xc')][_0xfd73('0x11')],_0x155c84);}catch(_0x369b8d){_0x471525['msg']=_0xfd73('0x12');logger['error'](util['format']('[%s][QUEUE]\x20%s',_0x1ecef7,_0x369b8d[_0xfd73('0x13')]));}io['to'](util[_0xfd73('0x14')](_0xfd73('0x15'),_0x11c931[_0xfd73('0x7')]))[_0xfd73('0x8')](util[_0xfd73('0x14')](_0xfd73('0x16'),_0x5cce3e?'save':'remove'),_0x471525);}function writeLog(_0x36759f,_0x173608,_0x4025c6){return logger[_0xfd73('0x17')](util[_0xfd73('0x14')](_0xfd73('0x18'),_0x36759f,_0x173608[_0xfd73('0x7')],_0x4025c6));}exports['isAgentAvailable']=function(_0x31cc24,_0x62a7e0,_0x46f81d,_0x4e9b2f){if(_0x62a7e0[_0xfd73('0x19')]){writeLog(_0x31cc24,_0x62a7e0,_0xfd73('0x1a'));return![];}if(!_0x62a7e0[_0xfd73('0x1b')]){writeLog(_0x31cc24,_0x62a7e0,'OFFLINE');return![];}if(_0x62a7e0[_0x46f81d+_0xfd73('0x1c')]){writeLog(_0x31cc24,_0x62a7e0,_0xfd73('0x1d'));return![];}if(_0x4e9b2f&&_0x62a7e0[_0xfd73('0x1e')](_0x46f81d+_0xfd73('0x1f'))&&_0x62a7e0[_0xfd73('0x1e')](_0x46f81d+_0xfd73('0x20'))){if(_0x62a7e0[_0x46f81d+_0xfd73('0x1f')]>0x0&&_0x62a7e0[_0x46f81d+'CurrentCapacity']>=_0x62a7e0[_0x46f81d+_0xfd73('0x1f')]){writeLog(_0x31cc24,_0x62a7e0,_0x46f81d[_0xfd73('0x21')]()+_0xfd73('0x22'));return![];}}return!![];};exports[_0xfd73('0x23')]=function(_0x4ab4db,_0x219208,_0x4c1a4d,_0x2d7d09,_0x43768c){return sendNotification(!![],_0x4ab4db,_0x219208,_0x4c1a4d,_0x2d7d09,_0x43768c);};exports[_0xfd73('0x24')]=function(_0x25e52a,_0x56d4a0,_0x3636f2,_0x270dfb,_0x2d8b04){return sendNotification(![],_0x25e52a,_0x56d4a0,_0x3636f2,_0x270dfb,_0x2d8b04);};exports[_0xfd73('0x25')]=function(_0x4effec,_0x73997d,_0xddc248){var _0xabdd54=_0x73997d['interaction']['UserId'];if(!_0xabdd54&&_0xddc248){_0xabdd54=_0xddc248['id'];}var _0x56d3d5=_['some'](_0x4effec[_0x73997d['channel']+_0xfd73('0x26')],function(_0x335318){var _0x1ef4ff=_[_0xfd73('0x27')](_0x73997d[_0xfd73('0x28')])+_0xfd73('0x29');return _0x335318[_0x1ef4ff]===_0x73997d[_0xfd73('0x2a')]['id'];});if(!_0x56d3d5&&_0xabdd54){_0x56d3d5=_[_0xfd73('0x2b')](_0x4effec[_0xfd73('0x2c')][_0xabdd54][_0x73997d['channel']+_0xfd73('0x2d')],function(_0xc68964){return _0xc68964['id']===_0x73997d[_0xfd73('0x2a')]['id'];});}return _0x56d3d5;};exports[_0xfd73('0x2e')]=function(_0x4cc163,_0x8ff409,_0x2b926b,_0x46497d){_0x4cc163['agents'][_0x2b926b['id']][_0x46497d+_0xfd73('0x2d')][_0x8ff409[_0xfd73('0x13')]['id']]={'id':_0x8ff409[_0xfd73('0x2a')]['id']};};exports[_0xfd73('0x2f')]=function(_0x1b9981,_0x23d3db,_0x5603a1,_0x252848){delete _0x1b9981[_0xfd73('0x2c')][_0x5603a1['id']][_0x252848+_0xfd73('0x2d')][_0x23d3db['message']['id']];};exports[_0xfd73('0x30')]=writeLog;
\ No newline at end of file
index 6cd8d61..a3c79fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c3=['error','isObject','stringify','shelljs','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','validate','length','[%s][SYSTEM]\x20%s','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s'];(function(_0x476752,_0x2d2198){var _0x35bdc1=function(_0x10abfc){while(--_0x10abfc){_0x476752['push'](_0x476752['shift']());}};_0x35bdc1(++_0x2d2198);}(_0xe4c3,0xcb));var _0x3e4c=function(_0x33afc6,_0x75dd32){_0x33afc6=_0x33afc6-0x0;var _0x54264d=_0xe4c3[_0x33afc6];return _0x54264d;};'use strict';var schema=require('validate');var sh=require(_0x3e4c('0x0'));var _=require('lodash');var utils=require(_0x3e4c('0x1'));var logger=require('../../../../config/logger')(_0x3e4c('0x2'));var system=schema({'command':{'type':'string','required':!![],'message':_0x3e4c('0x3')}});exports[_0x3e4c('0x4')]=function(_0x4702cb,_0x5f5af8){return function(_0x350708){try{var _0x1ad9de={'command':_0x5f5af8[0x0]};var _0x29206d=system[_0x3e4c('0x5')](_0x1ad9de,{'typecast':!![]});if(_0x29206d[_0x3e4c('0x6')]){logger['error'](_0x3e4c('0x7'),_0x4702cb,_['map'](_0x29206d,_0x3e4c('0x8'))[_0x3e4c('0x9')](',\x20'));logger[_0x3e4c('0xa')](_0x3e4c('0xb'),_0x4702cb);_0x350708[_0x3e4c('0xc')]();}else{var _0x4e9a88=this;var _0x1a1eb6=utils['getMustacheRender'](_0x5f5af8[0x0],this);logger[_0x3e4c('0xa')](_0x3e4c('0xd'),_0x4702cb,_0x1a1eb6);sh[_0x3e4c('0xe')](_[_0x3e4c('0xf')](_0x1a1eb6),function(_0x32fcca,_0x48f760){logger['info'](_0x3e4c('0x10'),_0x4702cb,_0x32fcca);if(_0x32fcca==0x0){var _0x40c0fe=_0x48f760[_0x3e4c('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0x3e4c('0x12')](_0x5f5af8[0x1])||_[_0x3e4c('0x13')](_0x5f5af8[0x1])){logger[_0x3e4c('0xa')](_0x3e4c('0x14'),_0x4702cb);_0x4e9a88['body'][_0x5f5af8[0x1]]=_0x40c0fe;}else{logger[_0x3e4c('0xa')](_0x3e4c('0x15'),_0x4702cb,_0x5f5af8[0x1],_0x40c0fe);_0x4e9a88['body'][_0x5f5af8[0x1]]=_0x40c0fe;}}_0x350708[_0x3e4c('0xc')]();});}}catch(_0x105682){logger[_0x3e4c('0x16')]('[%s][SYSTEM]\x20%s',_0x4702cb,_[_0x3e4c('0x17')](_0x105682)?JSON[_0x3e4c('0x18')](_0x105682):_0x105682);logger[_0x3e4c('0xa')](_0x3e4c('0xb'),_0x4702cb);_0x350708['next']();}};};
\ No newline at end of file
+var _0xa0c8=['[%s][SYSTEM]\x20%s','map','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','isObject','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','lodash','../../../../config/logger','routing','string','consequence','length','error'];(function(_0x428316,_0x10beac){var _0x509e87=function(_0x5a2c5a){while(--_0x5a2c5a){_0x428316['push'](_0x428316['shift']());}};_0x509e87(++_0x10beac);}(_0xa0c8,0x124));var _0x8a0c=function(_0x455eed,_0x822290){_0x455eed=_0x455eed-0x0;var _0x31cb46=_0xa0c8[_0x455eed];return _0x31cb46;};'use strict';var schema=require(_0x8a0c('0x0'));var sh=require('shelljs');var _=require(_0x8a0c('0x1'));var utils=require('./utils');var logger=require(_0x8a0c('0x2'))(_0x8a0c('0x3'));var system=schema({'command':{'type':_0x8a0c('0x4'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x8a0c('0x5')]=function(_0x23a9d3,_0x8b7072){return function(_0x24f834){try{var _0x4f1288={'command':_0x8b7072[0x0]};var _0x558f3a=system[_0x8a0c('0x0')](_0x4f1288,{'typecast':!![]});if(_0x558f3a[_0x8a0c('0x6')]){logger[_0x8a0c('0x7')](_0x8a0c('0x8'),_0x23a9d3,_[_0x8a0c('0x9')](_0x558f3a,'message')[_0x8a0c('0xa')](',\x20'));logger[_0x8a0c('0xb')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x23a9d3);_0x24f834[_0x8a0c('0xc')]();}else{var _0x2153ec=this;var _0x5bf384=utils[_0x8a0c('0xd')](_0x8b7072[0x0],this);logger['info'](_0x8a0c('0xe'),_0x23a9d3,_0x5bf384);sh[_0x8a0c('0xf')](_[_0x8a0c('0x10')](_0x5bf384),function(_0x420c51,_0x5d23d6){logger[_0x8a0c('0xb')](_0x8a0c('0x11'),_0x23a9d3,_0x420c51);if(_0x420c51==0x0){var _0x3ddd63=_0x5d23d6[_0x8a0c('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x8a0c('0x13')](_0x8b7072[0x1])||_[_0x8a0c('0x14')](_0x8b7072[0x1])){logger[_0x8a0c('0xb')](_0x8a0c('0x15'),_0x23a9d3);_0x2153ec[_0x8a0c('0x16')][_0x8b7072[0x1]]=_0x3ddd63;}else{logger[_0x8a0c('0xb')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x23a9d3,_0x8b7072[0x1],_0x3ddd63);_0x2153ec[_0x8a0c('0x16')][_0x8b7072[0x1]]=_0x3ddd63;}}_0x24f834[_0x8a0c('0xc')]();});}}catch(_0x6c01fd){logger[_0x8a0c('0x7')](_0x8a0c('0x8'),_0x23a9d3,_[_0x8a0c('0x17')](_0x6c01fd)?JSON['stringify'](_0x6c01fd):_0x6c01fd);logger[_0x8a0c('0xb')](_0x8a0c('0x18'),_0x23a9d3);_0x24f834[_0x8a0c('0xc')]();}};};
\ No newline at end of file
index f6cec4a..31da670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1b9=['../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','message','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','finally','validate','lodash','../../rpc/smsInteraction'];(function(_0x8dfc91,_0x50459e){var _0x2a2bb9=function(_0x3c508e){while(--_0x3c508e){_0x8dfc91['push'](_0x8dfc91['shift']());}};_0x2a2bb9(++_0x50459e);}(_0xf1b9,0xb3));var _0x9f1b=function(_0x2c6511,_0x4f9f24){_0x2c6511=_0x2c6511-0x0;var _0x20e331=_0xf1b9[_0x2c6511];return _0x20e331;};'use strict';var schema=require(_0x9f1b('0x0'));var _=require(_0x9f1b('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x9f1b('0x2')),'mailInteraction':require(_0x9f1b('0x3')),'faxInteraction':require(_0x9f1b('0x4')),'whatsappInteraction':require(_0x9f1b('0x5'))};var logger=require(_0x9f1b('0x6'))('routing');var tag=schema({'tag':{'type':_0x9f1b('0x7'),'required':!![],'message':_0x9f1b('0x8')}});exports[_0x9f1b('0x9')]=function(_0x641d0,_0x3bfcf5,_0x396a41,_0x187872){return function(_0x4a9908){try{var _0x373433={'tag':_0x3bfcf5[0x0]};var _0x20f8b7=tag[_0x9f1b('0x0')](_0x373433,{'typecast':!![]});if(_0x20f8b7[_0x9f1b('0xa')]){logger[_0x9f1b('0xb')](_0x9f1b('0xc'),_0x641d0,_['map'](_0x20f8b7,_0x9f1b('0xd'))['join'](',\x20'));logger[_0x9f1b('0xe')](_0x9f1b('0xf'),_0x641d0);_0x4a9908[_0x9f1b('0x10')]();}else{var _0x2ad445={'ids':[_0x3bfcf5[0x0]]};if(rpc[_0x187872[_0x9f1b('0x11')]+_0x9f1b('0x12')]){rpc[_0x187872[_0x9f1b('0x11')]+_0x9f1b('0x12')][_0x9f1b('0x13')](_0x187872[_0x9f1b('0x14')]['id'],_0x2ad445)[_0x9f1b('0x15')](function(_0x1f5abb){logger[_0x9f1b('0xe')](_0x9f1b('0x16'),_0x641d0,_0x3bfcf5[0x1],_0x187872[_0x9f1b('0x11')],_0x187872[_0x9f1b('0x14')]['id']);})[_0x9f1b('0x17')](function(_0x34dff1){logger[_0x9f1b('0xb')]('[%s][TAG]\x20%s',_0x641d0,JSON[_0x9f1b('0x18')](_0x34dff1));logger['info'](_0x9f1b('0xf'),_0x641d0);})[_0x9f1b('0x19')](function(){_0x4a9908['next']();});}}}catch(_0x424e23){logger[_0x9f1b('0xb')](_0x9f1b('0xc'),_0x641d0,_['isObject'](_0x424e23)?JSON[_0x9f1b('0x18')](_0x424e23):_0x424e23);logger['info'](_0x9f1b('0xf'),_0x641d0);_0x4a9908[_0x9f1b('0x10')]();}};};
\ No newline at end of file
+var _0xd417=['lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','map','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','catch','[%s][TAG]\x20%s','stringify','isObject','validate'];(function(_0x5c2d75,_0x4035fc){var _0x48f399=function(_0x576db0){while(--_0x576db0){_0x5c2d75['push'](_0x5c2d75['shift']());}};_0x48f399(++_0x4035fc);}(_0xd417,0x1ed));var _0x7d41=function(_0xe1d789,_0x4b2158){_0xe1d789=_0xe1d789-0x0;var _0x53740b=_0xd417[_0xe1d789];return _0x53740b;};'use strict';var schema=require(_0x7d41('0x0'));var _=require(_0x7d41('0x1'));var rpc={'chatInteraction':require(_0x7d41('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x7d41('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x7d41('0x4'))};var logger=require(_0x7d41('0x5'))(_0x7d41('0x6'));var tag=schema({'tag':{'type':_0x7d41('0x7'),'required':!![],'message':_0x7d41('0x8')}});exports[_0x7d41('0x9')]=function(_0x47b87f,_0x44d8a0,_0x2c06e0,_0x43357b){return function(_0x382810){try{var _0x55eac7={'tag':_0x44d8a0[0x0]};var _0x15f686=tag['validate'](_0x55eac7,{'typecast':!![]});if(_0x15f686[_0x7d41('0xa')]){logger[_0x7d41('0xb')]('[%s][TAG]\x20%s',_0x47b87f,_[_0x7d41('0xc')](_0x15f686,'message')[_0x7d41('0xd')](',\x20'));logger[_0x7d41('0xe')](_0x7d41('0xf'),_0x47b87f);_0x382810[_0x7d41('0x10')]();}else{var _0x20c895={'ids':[_0x44d8a0[0x0]]};if(rpc[_0x43357b[_0x7d41('0x11')]+_0x7d41('0x12')]){rpc[_0x43357b['channel']+'Interaction'][_0x7d41('0x13')](_0x43357b[_0x7d41('0x14')]['id'],_0x20c895)[_0x7d41('0x15')](function(_0x487882){logger[_0x7d41('0xe')]('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x47b87f,_0x44d8a0[0x1],_0x43357b['channel'],_0x43357b[_0x7d41('0x14')]['id']);})[_0x7d41('0x16')](function(_0x1f206c){logger[_0x7d41('0xb')](_0x7d41('0x17'),_0x47b87f,JSON[_0x7d41('0x18')](_0x1f206c));logger[_0x7d41('0xe')](_0x7d41('0xf'),_0x47b87f);})['finally'](function(){_0x382810['next']();});}}}catch(_0x4e8612){logger['error']('[%s][TAG]\x20%s',_0x47b87f,_[_0x7d41('0x19')](_0x4e8612)?JSON[_0x7d41('0x18')](_0x4e8612):_0x4e8612);logger['info'](_0x7d41('0xf'),_0x47b87f);_0x382810[_0x7d41('0x10')]();}};};
\ No newline at end of file
index 2a62fe0..ea9aacd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c77=['&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','error','[%s][TVOX]\x20%s','stop','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','routing','lodash','consequence','\x20-\x20','replace','urlOnAnswer','urlOnRing','?params=','jsonrpc','2.0','method','push','params','stringify','utf8','POST','then','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId='];(function(_0x4c7d8b,_0x572388){var _0x187158=function(_0x5e956d){while(--_0x5e956d){_0x4c7d8b['push'](_0x4c7d8b['shift']());}};_0x187158(++_0x572388);}(_0x3c77,0x129));var _0x73c7=function(_0x1291a1,_0x3145e7){_0x1291a1=_0x1291a1-0x0;var _0x3a5404=_0x3c77[_0x1291a1];return _0x3a5404;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')(_0x73c7('0x0'));var _=require(_0x73c7('0x1'));var arr=[];exports[_0x73c7('0x2')]=function(_0x5d6273,_0x252686){return function(_0x3f6046){var _0x3312c4=_0x252686[0xa];var _0x527c15=_0x252686[0xb];var _0x275738=_0x252686[0xc];var _0x53afdf=_0x252686[0xd];var _0x102310=_0x252686[0xe];var _0x447908=_0x252686[0xf]['replace'](/\n/g,_0x73c7('0x3'));var _0x2dec80=_0x252686[0x10][_0x73c7('0x4')](/\n/g,'\x20');if(!arr['includes'](_0x527c15)){arr['push'](_0x527c15);var _0x373f34=_0x252686[0x3];var _0x2799d0=_0x252686[0x4];var _0x598459=_0x252686[0x1];var _0x3b37d7=_0x252686[0x0];var _0x15f5aa={};_0x15f5aa[_0x73c7('0x5')]=_0x252686[0x8]+'?params='+_0x275738+'|'+_0x3312c4+'|'+_0x53afdf+'|'+_0x527c15+'|'+_0x102310;_0x15f5aa[_0x73c7('0x6')]=_0x252686[0x7]+_0x73c7('0x7')+_0x275738+'|'+_0x3312c4+'|'+_0x53afdf+'|'+_0x527c15+'|'+_0x102310+'|'+_0x447908+'|'+_0x2dec80;_0x15f5aa['title']=_0x252686[0x9];var _0x453f9d={};_0x453f9d[_0x73c7('0x8')]=_0x73c7('0x9');_0x453f9d[_0x73c7('0xa')]='login';var _0x634581=[];_0x634581['push'](_0x252686[0x2]);_0x634581[_0x73c7('0xb')](_0x252686[0x5]);_0x634581[_0x73c7('0xb')](_0x252686[0x6]);_0x453f9d[_0x73c7('0xc')]=_0x634581;_0x453f9d['id']=0x1;var _0x274ba2=JSON[_0x73c7('0xd')](_0x453f9d);var _0x3d437d={'encoding':_0x73c7('0xe'),'method':_0x73c7('0xf'),'timeout':0x2710,'url':_0x373f34,'headers':{'Content-Type':'application/json-rpc'},'body':_0x274ba2};return rp(_0x3d437d)[_0x73c7('0x10')](function(_0x5c6deb){const _0x2a4ae9=JSON['parse'](_0x5c6deb);if(!_0x2a4ae9[_0x73c7('0x11')][_0x73c7('0x12')]){throw new Error(_0x73c7('0x13'));}var _0x5af983=_0x527c15;var _0x1fe327=_0x73c7('0x14')+_0x598459+_0x73c7('0x15')+_0x3b37d7+'&sessionId='+_0x5af983+_0x73c7('0x16')+JSON[_0x73c7('0xd')](_0x15f5aa);var _0x2268f4=_0x2799d0+'?'+_0x1fe327;return rp(_0x2268f4);})[_0x73c7('0x10')](function(_0x178011){logger[_0x73c7('0x17')](_0x73c7('0x18'),_0x5d6273,_0x178011);_0x3f6046['stop']();})['catch'](function(_0x4fd049){logger[_0x73c7('0x19')](_0x73c7('0x1a'),_0x5d6273,_['isObject'](_0x4fd049)?JSON[_0x73c7('0xd')](_0x4fd049):_0x4fd049);_0x3f6046[_0x73c7('0x1b')]();});}else{logger[_0x73c7('0x17')](_0x73c7('0x1c'),_0x5d6273);_0x3f6046['next']();}};};
\ No newline at end of file
+var _0x8c23=['params','stringify','POST','application/json-rpc','then','parse','channelId=','&sessionId=','&data=','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','[%s][TVOX]\x20%s','isObject','stop','info','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger','lodash','consequence','replace','\x20-\x20','push','urlOnAnswer','?params=','title','jsonrpc','2.0','login'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8c23,0xa7));var _0x38c2=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x8c23[_0x3b380d];return _0x54502b;};'use strict';var rp=require(_0x38c2('0x0'));var logger=require(_0x38c2('0x1'))('routing');var _=require(_0x38c2('0x2'));var arr=[];exports[_0x38c2('0x3')]=function(_0x149ac4,_0x2c472a){return function(_0x557188){var _0x30c590=_0x2c472a[0xa];var _0x1b3b20=_0x2c472a[0xb];var _0x798cb6=_0x2c472a[0xc];var _0x562182=_0x2c472a[0xd];var _0x3ebef5=_0x2c472a[0xe];var _0x55a9ea=_0x2c472a[0xf][_0x38c2('0x4')](/\n/g,_0x38c2('0x5'));var _0x259812=_0x2c472a[0x10][_0x38c2('0x4')](/\n/g,'\x20');if(!arr['includes'](_0x1b3b20)){arr[_0x38c2('0x6')](_0x1b3b20);var _0x112659=_0x2c472a[0x3];var _0x1eba08=_0x2c472a[0x4];var _0x1968db=_0x2c472a[0x1];var _0x1cb298=_0x2c472a[0x0];var _0x195258={};_0x195258[_0x38c2('0x7')]=_0x2c472a[0x8]+_0x38c2('0x8')+_0x798cb6+'|'+_0x30c590+'|'+_0x562182+'|'+_0x1b3b20+'|'+_0x3ebef5;_0x195258['urlOnRing']=_0x2c472a[0x7]+_0x38c2('0x8')+_0x798cb6+'|'+_0x30c590+'|'+_0x562182+'|'+_0x1b3b20+'|'+_0x3ebef5+'|'+_0x55a9ea+'|'+_0x259812;_0x195258[_0x38c2('0x9')]=_0x2c472a[0x9];var _0x16c6c0={};_0x16c6c0[_0x38c2('0xa')]=_0x38c2('0xb');_0x16c6c0['method']=_0x38c2('0xc');var _0x56897c=[];_0x56897c[_0x38c2('0x6')](_0x2c472a[0x2]);_0x56897c[_0x38c2('0x6')](_0x2c472a[0x5]);_0x56897c[_0x38c2('0x6')](_0x2c472a[0x6]);_0x16c6c0[_0x38c2('0xd')]=_0x56897c;_0x16c6c0['id']=0x1;var _0x579e39=JSON[_0x38c2('0xe')](_0x16c6c0);var _0x2233ee={'encoding':'utf8','method':_0x38c2('0xf'),'timeout':0x2710,'url':_0x112659,'headers':{'Content-Type':_0x38c2('0x10')},'body':_0x579e39};return rp(_0x2233ee)[_0x38c2('0x11')](function(_0x2801f5){const _0x3f270=JSON[_0x38c2('0x12')](_0x2801f5);if(!_0x3f270['result']['logged']){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x499e25=_0x1b3b20;var _0xeb9f16=_0x38c2('0x13')+_0x1968db+'&serviceId='+_0x1cb298+_0x38c2('0x14')+_0x499e25+_0x38c2('0x15')+JSON[_0x38c2('0xe')](_0x195258);var _0x3736bc=_0x1eba08+'?'+_0xeb9f16;return rp(_0x3736bc);})[_0x38c2('0x11')](function(_0x18c6d0){logger['info'](_0x38c2('0x16'),_0x149ac4,_0x18c6d0);_0x557188['stop']();})[_0x38c2('0x17')](function(_0x5ab138){logger['error'](_0x38c2('0x18'),_0x149ac4,_[_0x38c2('0x19')](_0x5ab138)?JSON[_0x38c2('0xe')](_0x5ab138):_0x5ab138);_0x557188[_0x38c2('0x1a')]();});}else{logger[_0x38c2('0x1b')](_0x38c2('0x1c'),_0x149ac4);_0x557188[_0x38c2('0x1d')]();}};};
\ No newline at end of file
index fb45b30..b91b04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x59b710,_0x24843c){var _0x23738e=function(_0x48a9a4){while(--_0x48a9a4){_0x59b710['push'](_0x59b710['shift']());}};_0x23738e(++_0x24843c);}(_0xe706,0xa3));var _0x6e70=function(_0x23345f,_0xc1cd34){_0x23345f=_0x23345f-0x0;var _0x1865e0=_0xe706[_0x23345f];return _0x1865e0;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
+var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x4c24f5,_0x57c68c){var _0x30f581=function(_0x4e9183){while(--_0x4e9183){_0x4c24f5['push'](_0x4c24f5['shift']());}};_0x30f581(++_0x57c68c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
index 1436d93..e5de7f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3425=['name','waiting','mailQueues','paused','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','bluebird','./applications/utils','./applications/strategy/util','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','map','interval','rules','channel','interaction','applications','isArray','existsSync','join','app','toLowerCase','autoreply','appdata','split','mail','push','slice','length','dialogflow','dialogflowv2','amazonlex','message','TagId','tvox','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','error','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','end','hasOwnProperty','CurrentCapacity','capacity','updateRealtime','values','find','chatQueues','loggedIn'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3425,0xdc));var _0x5342=function(_0x464d34,_0x5d0ef4){_0x464d34=_0x464d34-0x0;var _0x34693f=_0x3425[_0x464d34];return _0x34693f;};'use strict';var _=require(_0x5342('0x0'));var util=require(_0x5342('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x5342('0x2'));var BPromise=require(_0x5342('0x3'));var utils=require(_0x5342('0x4'));var sUtils=require(_0x5342('0x5'));var logger=require('../../../config/logger')(_0x5342('0x6'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x5342('0x7')),'chatQueueReport':require(_0x5342('0x8')),'smsQueueReport':require(_0x5342('0x9')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x5342('0xa'));function getId(_0x584858,_0xfd7fbc,_0x47bdea){return util[_0x5342('0xb')](_0x5342('0xc'),_0x584858,_0xfd7fbc||0x0,_0x47bdea||0x0);}function getIntervals(_0x312e18,_0x509edc){var _0x4c99d4=[];if(!_['isNil'](_0x509edc[_0x5342('0xd')])&&!_[_0x5342('0xe')](_0x312e18[_0x509edc[_0x5342('0xd')]])&&!_[_0x5342('0xe')](_0x312e18[_0x509edc['IntervalId']]['Intervals'])){_0x4c99d4=_[_0x5342('0xf')](_0x312e18[_0x509edc[_0x5342('0xd')]]['Intervals'],'interval');}else if(!_[_0x5342('0xe')](_0x509edc['interval'])){_0x4c99d4=[_0x509edc[_0x5342('0x10')]];}return _0x4c99d4;}exports['listen']=function(_0x2f4790){_0x2f4790[_0x5342('0x11')]={};return new BPromise(function(_0x136fd2,_0x40d47f){var _0x45c12d={'Start':function(_0x3c4c11){var _0x4b28c7=this;return new Promise(function(_0x5580c9,_0x4f19dd){if(_0x3c4c11){try{var _0x31f7de=[];var _0x55773d=getId(_0x3c4c11[_0x5342('0x12')],_0x3c4c11['message']?_0x3c4c11['message']['id']:0x0,_0x3c4c11[_0x5342('0x13')]?_0x3c4c11['interaction']['id']:0x0);var _0xebf5b0=sUtils['checkWaitingNotifications'](_0x2f4790,_0x3c4c11);if(!_0xebf5b0&&_0x3c4c11[_0x5342('0x14')]&&_[_0x5342('0x15')](_0x3c4c11['applications'])&&_0x3c4c11[_0x5342('0x14')]['length']){for(var _0xb6233=0x0;_0xb6233<_0x3c4c11['applications']['length'];_0xb6233+=0x1){var _0x3d8798=_0x3c4c11[_0x5342('0x14')][_0xb6233];if(fs[_0x5342('0x16')](path[_0x5342('0x17')](__dirname,'applications',_0x3d8798[_0x5342('0x18')]+'.js'))){var _0x3d6c90=[];switch(_0x3d8798[_0x5342('0x18')][_0x5342('0x19')]()){case _0x5342('0x1a'):var _0x2e33fd=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');if(_0x3c4c11[_0x5342('0x12')]===_0x5342('0x1d')){_0x3d6c90['push'](_0x2e33fd[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[_0x5342('0x1f')](0x2,_0x2e33fd['length'])[_0x5342('0x17')](','));}else{_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x2e33fd[_0x5342('0x1f')](0x1,_0x2e33fd[_0x5342('0x20')])[_0x5342('0x17')](','));}break;case _0x5342('0x21'):var _0x3897ed=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x3897ed[0x0]);_0x3d6c90['push'](_0x3897ed[0x1]);_0x3d6c90['push'](_0x3897ed[_0x5342('0x1f')](0x2,_0x3897ed[_0x5342('0x20')])[_0x5342('0x17')](','));break;case _0x5342('0x22'):var _0x5aa9c0=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x5aa9c0[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x5aa9c0[0x3]);_0x3d6c90['push'](_0x5aa9c0['slice'](0x4,_0x5aa9c0['length'])[_0x5342('0x17')](','));break;case _0x5342('0x23'):var _0x140184=_0x3d8798['appdata'][_0x5342('0x1c')](',');_0x3d6c90['push'](_0x140184[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x140184[0x3]);_0x3d6c90[_0x5342('0x1e')](_0x140184[_0x5342('0x1f')](0x4,_0x140184['length'])[_0x5342('0x17')](','));break;case _0x5342('0x24'):_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x1b')]);break;case'tag':_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x25')]);_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x1b')]);break;case _0x5342('0x26'):var _0x5d337b=utils['getMustacheRender'](_0x3c4c11[_0x5342('0x27')][_0x5342('0x28')],_0x3c4c11);var _0x15fa86=_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x0]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x1]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x2]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x3]);_0x3d6c90['push'](_0x15fa86[0x4]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x5]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x6]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x7]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x8]);_0x3d6c90[_0x5342('0x1e')](_0x15fa86[0x9]);_0x3d6c90['push'](_0x15fa86[0xa]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x13')]['id']);_0x3d6c90['push'](_0x3c4c11[_0x5342('0x24')]['id']);_0x3d6c90[_0x5342('0x1e')](_0x3d8798[_0x5342('0x29')]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x13')][_0x5342('0x2a')]);_0x3d6c90[_0x5342('0x1e')](_0x3c4c11[_0x5342('0x2b')][_0x5342('0x2b')]);_0x3d6c90[_0x5342('0x1e')](_0x5d337b);break;default:_0x3d6c90=_[_0x5342('0xe')](_0x3d8798[_0x5342('0x1b')])?[]:_0x3d8798[_0x5342('0x1b')][_0x5342('0x1c')](',');}var _0x1242a1={'id':util[_0x5342('0xb')](_0x5342('0x2c'),_0x55773d,_0x3d8798['id'],_0x3d8798['app']),'condition':require(_0x5342('0x2d'))[_0x5342('0x2e')](_0x55773d,getIntervals(_0x2f4790[_0x5342('0x2f')],_0x3d8798),_0x2f4790),'consequence':require('./applications/'+_0x3d8798['app'])[_0x5342('0x30')](_0x55773d,_0x3d6c90,_0x2f4790,_0x3c4c11),'p':_0x3d8798[_0x5342('0x31')]||0x0};logger[_0x5342('0x32')]('Push\x20new\x20rule',_0x1242a1['id'],_0x5342('0x33'),getIntervals(_0x2f4790[_0x5342('0x2f')],_0x3d8798)[_0x5342('0x17')](_0x5342('0x34')));_0x31f7de[_0x5342('0x1e')](_0x1242a1);}else{logger['error'](_0x5342('0x35'),path[_0x5342('0x17')](__dirname,_0x5342('0x14'),_0x3d8798[_0x5342('0x18')]+_0x5342('0x36')));}}_0x2f4790[_0x5342('0x11')][_0x55773d]=new RuleEngine(_0x31f7de);_0x2f4790['rules'][_0x55773d][_0x5342('0x37')](_0x3c4c11,function(_0x48c70d){logger['info'](_0x5342('0x38'),JSON['stringify'](_0x48c70d[_0x5342('0x39')]));if(_0x2f4790['rules'][_0x55773d]){_0x2f4790[_0x5342('0x11')][_0x55773d][_0x5342('0x3a')](_0x5342('0x3b'));}});return _0x5580c9({'code':0xc8,'message':_0x3c4c11});}else{if(_0xebf5b0){logger[_0x5342('0x32')](util[_0x5342('0xb')](_0x5342('0x3c'),_0x55773d));}else{logger['info'](_0x5342('0x3d'));}return _0x5580c9({'code':0xc8,'message':_0x3c4c11});}}catch(_0x41f08c){logger[_0x5342('0x3e')](_0x41f08c['stack']);return _0x4f19dd(_0x4b28c7[_0x5342('0x3e')](0x1f4,_0x41f08c));}}return _0x4f19dd(_0x5342('0x3f'));});},'AcceptMessage':function(_0x15b439){var _0x15cc28=this;return new Promise(function(_0x53a44b,_0xdb8b4f){if(_0x15b439[_0x5342('0x40')]&&_0x15b439['agent']['id']){if(_0x2f4790[_0x5342('0x41')][_0x15b439[_0x5342('0x40')]['id']]){_0x2f4790['agents'][_0x15b439[_0x5342('0x40')]['id']][_0x5342('0x42')]=![];_0x2f4790[_0x5342('0x41')][_0x15b439[_0x5342('0x40')]['id']][_0x5342('0x43')]=undefined;}}if(_0x15b439[_0x5342('0x24')]&&_0x15b439[_0x5342('0x24')]['id']){try{var _0x28be43=getId(_0x15b439[_0x5342('0x12')],_0x15b439[_0x5342('0x24')]?_0x15b439[_0x5342('0x24')]['id']:0x0,_0x15b439[_0x5342('0x13')]?_0x15b439[_0x5342('0x13')]['id']:0x0);if(_0x2f4790['rules'][_0x28be43]){_0x2f4790['rules'][_0x28be43][_0x5342('0x3a')]('end');if(rpc[_0x15b439[_0x5342('0x12')]+_0x5342('0x44')]){rpc[_0x15b439['channel']+_0x5342('0x44')][_0x5342('0x45')](_0x28be43,{'UserId':_0x15b439[_0x5342('0x24')]['UserId']})[_0x5342('0x46')](function(){logger[_0x5342('0x3e')](_0x5342('0x47'));});}}return _0x53a44b({'code':0xc8,'message':_0x15b439});}catch(_0x1a8ec2){logger[_0x5342('0x3e')](_0x1a8ec2[_0x5342('0x48')]);return _0xdb8b4f(_0x15cc28['error'](0x1f4,_0x1a8ec2));}}logger['error'](_0x5342('0x49'));return _0xdb8b4f(_0x15cc28[_0x5342('0x3e')](0x1f4,_0x5342('0x49')));});},'RejectMessage':function(_0x158c57){var _0x5d4b65=this;return new Promise(function(_0x1bc4c6,_0x232739){if(_0x158c57[_0x5342('0x40')]&&_0x158c57[_0x5342('0x40')]['id']){try{if(_0x2f4790[_0x5342('0x41')][_0x158c57['agent']['id']]){_0x2f4790[_0x5342('0x41')][_0x158c57[_0x5342('0x40')]['id']][_0x5342('0x42')]=![];_0x2f4790['agents'][_0x158c57['agent']['id']][_0x5342('0x43')]=undefined;}return _0x1bc4c6({'code':0xc8,'message':_0x158c57});}catch(_0x2157f4){logger[_0x5342('0x3e')](_0x2157f4[_0x5342('0x48')]);return _0x232739(_0x5d4b65[_0x5342('0x3e')](0x1f4,_0x2157f4));}}logger[_0x5342('0x3e')](_0x5342('0x49'));return _0x232739(_0x5d4b65['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x542d2f){var _0x280f87=this;return new Promise(function(_0xf303a1,_0x91c944){if(_0x542d2f[_0x5342('0x12')]&&_0x542d2f['interaction']&&_0x542d2f[_0x5342('0x13')]['id']){try{var _0x3aa3ad=getId(_0x542d2f[_0x5342('0x12')],_0x542d2f['message']?_0x542d2f[_0x5342('0x24')]['id']:0x0,_0x542d2f[_0x5342('0x13')]?_0x542d2f[_0x5342('0x13')]['id']:0x0);if(_0x2f4790[_0x5342('0x11')][_0x3aa3ad]){_0x2f4790[_0x5342('0x11')][_0x3aa3ad]['emit'](_0x5342('0x4a'));}return _0xf303a1({'code':0xc8,'message':_0x542d2f});}catch(_0x5cacb5){logger[_0x5342('0x3e')](_0x5cacb5[_0x5342('0x48')]);return _0x91c944(_0x280f87['error'](0x1f4,_0x5cacb5));}}logger[_0x5342('0x3e')](_0x5342('0x49'));return _0x91c944(_0x280f87[_0x5342('0x3e')](0x1f4,_0x5342('0x49')));});},'AgentCapacity':function(_0x1c282d){var _0x5cf33e=this;return new Promise(function(_0x39577,_0x374bb8){if(_0x2f4790[_0x5342('0x41')]['hasOwnProperty'](_0x1c282d['id'])){for(var _0x2dbcc8 in _0x1c282d['capacity']){if(_0x1c282d['capacity']['hasOwnProperty'](_0x2dbcc8)){if(_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x5342('0x4b')](_0x2dbcc8+'CurrentCapacity')){_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x2dbcc8+_0x5342('0x4c')]=parseInt(_0x1c282d[_0x5342('0x4d')][_0x2dbcc8],0xa);}}}_0x2f4790[_0x5342('0x41')][_0x1c282d['id']][_0x5342('0x4e')]();return _0x39577({'code':0xc8,'message':_0x2f4790[_0x5342('0x41')][_0x1c282d['id']]});}else{return _0x374bb8(_0x5cf33e[_0x5342('0x3e')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x3cec6b){return new Promise(function(_0x302bd6){var _0xd4b277=_[_0x5342('0x4f')](_0x2f4790['agents']);if(_0x3cec6b&&_0x3cec6b['id']){var _0x213bcb=_[_0x5342('0x50')](_0xd4b277,function(_0x18f483){return _0x18f483['id']===_0x3cec6b['id'];});_0x302bd6(_0x213bcb);}else{_0x302bd6({'count':_0xd4b277[_0x5342('0x20')],'rows':_0xd4b277});}});},'ChatQueues':function(){return new Promise(function(_0x4b0793){var _0x323c2e=[];for(var _0x441f88 in _0x2f4790[_0x5342('0x51')]){if(_0x2f4790[_0x5342('0x51')][_0x5342('0x4b')](_0x441f88)){var _0x36062b=_0x2f4790[_0x5342('0x51')][_0x441f88];var _0x4d6fb7={'id':_0x36062b['id'],'available':_0x36062b['available'],'loggedIn':_0x36062b[_0x5342('0x52')],'name':_0x36062b[_0x5342('0x53')],'paused':_0x36062b['paused'],'waiting':_0x36062b[_0x5342('0x54')]};_0x323c2e[_0x5342('0x1e')](_0x4d6fb7);}}_0x4b0793({'count':_0x323c2e[_0x5342('0x20')],'rows':_0x323c2e});});},'MailQueues':function(){return new Promise(function(_0x2ec5ec){var _0x14a9be=[];for(var _0xc27b7 in _0x2f4790[_0x5342('0x55')]){if(_0x2f4790['mailQueues'][_0x5342('0x4b')](_0xc27b7)){var _0x105c95=_0x2f4790[_0x5342('0x55')][_0xc27b7];var _0x2d4853={'id':_0x105c95['id'],'available':_0x105c95['available'],'loggedIn':_0x105c95[_0x5342('0x52')],'name':_0x105c95[_0x5342('0x53')],'paused':_0x105c95[_0x5342('0x56')],'waiting':_0x105c95[_0x5342('0x54')]};_0x14a9be[_0x5342('0x1e')](_0x2d4853);}}_0x2ec5ec({'count':_0x14a9be[_0x5342('0x20')],'rows':_0x14a9be});});},'OpenchannelQueues':function(){return new Promise(function(_0x45a2df){var _0x2170cf=[];for(var _0x453bb3 in _0x2f4790[_0x5342('0x57')]){if(_0x2f4790['openchannelQueues'][_0x5342('0x4b')](_0x453bb3)){var _0x2a67ae=_0x2f4790[_0x5342('0x57')][_0x453bb3];var _0x2924fe={'id':_0x2a67ae['id'],'available':_0x2a67ae[_0x5342('0x58')],'loggedIn':_0x2a67ae[_0x5342('0x52')],'name':_0x2a67ae['name'],'paused':_0x2a67ae[_0x5342('0x56')],'waiting':_0x2a67ae['waiting']};_0x2170cf[_0x5342('0x1e')](_0x2924fe);}}_0x45a2df({'count':_0x2170cf[_0x5342('0x20')],'rows':_0x2170cf});});},'SmsQueues':function(){return new Promise(function(_0x264b59){var _0x41bd11=[];for(var _0x46818a in _0x2f4790['smsQueues']){if(_0x2f4790[_0x5342('0x59')][_0x5342('0x4b')](_0x46818a)){var _0x4dfe96=_0x2f4790[_0x5342('0x59')][_0x46818a];var _0x4c8372={'id':_0x4dfe96['id'],'available':_0x4dfe96[_0x5342('0x58')],'loggedIn':_0x4dfe96[_0x5342('0x52')],'name':_0x4dfe96[_0x5342('0x53')],'paused':_0x4dfe96[_0x5342('0x56')],'waiting':_0x4dfe96[_0x5342('0x54')]};_0x41bd11[_0x5342('0x1e')](_0x4c8372);}}_0x264b59({'count':_0x41bd11['length'],'rows':_0x41bd11});});},'FaxQueues':function(){return new Promise(function(_0x18ac9d){var _0xaab1a6=[];for(var _0x544d10 in _0x2f4790[_0x5342('0x5a')]){if(_0x2f4790[_0x5342('0x5a')][_0x5342('0x4b')](_0x544d10)){var _0x24f1c4=_0x2f4790[_0x5342('0x5a')][_0x544d10];var _0x418455={'id':_0x24f1c4['id'],'available':_0x24f1c4[_0x5342('0x58')],'loggedIn':_0x24f1c4[_0x5342('0x52')],'name':_0x24f1c4[_0x5342('0x53')],'paused':_0x24f1c4[_0x5342('0x56')],'waiting':_0x24f1c4[_0x5342('0x54')]};_0xaab1a6['push'](_0x418455);}}_0x18ac9d({'count':_0xaab1a6[_0x5342('0x20')],'rows':_0xaab1a6});});},'WhatsappQueues':function(){return new Promise(function(_0x1dea23){var _0x188cff=[];for(var _0x53a7fa in _0x2f4790[_0x5342('0x5b')]){if(_0x2f4790['whatsappQueues'][_0x5342('0x4b')](_0x53a7fa)){var _0x4610b1=_0x2f4790[_0x5342('0x5b')][_0x53a7fa];var _0x53da71={'id':_0x4610b1['id'],'available':_0x4610b1[_0x5342('0x58')],'loggedIn':_0x4610b1['loggedIn'],'name':_0x4610b1[_0x5342('0x53')],'paused':_0x4610b1[_0x5342('0x56')],'waiting':_0x4610b1[_0x5342('0x54')]};_0x188cff[_0x5342('0x1e')](_0x53da71);}}_0x1dea23({'count':_0x188cff[_0x5342('0x20')],'rows':_0x188cff});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x4dfc55){var _0x3123c9=_['values'](_0x2f4790[_0x5342('0x5c')]);_0x4dfc55({'count':_0x3123c9[_0x5342('0x20')],'rows':_0x3123c9});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0xb939d4){var _0x5e553f=_[_0x5342('0x4f')](_0x2f4790[_0x5342('0x5d')]);_0xb939d4({'count':_0x5e553f[_0x5342('0x20')],'rows':_0x5e553f});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x3706fd){var _0x499a90=_[_0x5342('0x4f')](_0x2f4790[_0x5342('0x5e')]);_0x3706fd({'count':_0x499a90[_0x5342('0x20')],'rows':_0x499a90});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x4baae0){var _0x55ef4d=_['values'](_0x2f4790[_0x5342('0x5f')]);_0x4baae0({'count':_0x55ef4d[_0x5342('0x20')],'rows':_0x55ef4d});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x2a8ab4){var _0x3cbac1=_['values'](_0x2f4790[_0x5342('0x60')]);_0x2a8ab4({'count':_0x3cbac1[_0x5342('0x20')],'rows':_0x3cbac1});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x12ce7f){var _0x5ac04f=_['values'](_0x2f4790['whatsappQueuesWaitingInteractions']);_0x12ce7f({'count':_0x5ac04f[_0x5342('0x20')],'rows':_0x5ac04f});});}};var _0x2b53ec=jayson[_0x5342('0x61')](_0x45c12d)[_0x5342('0x62')]();_0x2b53ec['on'](_0x5342('0x3e'),function(_0x2bbf44){logger[_0x5342('0x3e')](JSON['stringify'](_0x2bbf44));return _0x40d47f(_0x2bbf44);});_0x2b53ec['listen'](0x232c,_0x5342('0x63'),function(){console['log'](_0x5342('0x64'),0x232c);return _0x136fd2('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x4d67=['message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','app','toLowerCase','autoreply','mail','push','join','dialogflow','appdata','slice','dialogflowv2','split','amazonlex','tag','TagId','getMustacheRender','account','notificationTemplate','ContactId','body','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','matchPath','emit','Skipped\x20routing\x20for\x20%s','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','bluebird','./applications/utils','./applications/strategy/util','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','rules','channel'];(function(_0x443246,_0x199405){var _0xf91625=function(_0x6c01ff){while(--_0x6c01ff){_0x443246['push'](_0x443246['shift']());}};_0xf91625(++_0x199405);}(_0x4d67,0x122));var _0x74d6=function(_0x5e0100,_0x5e4986){_0x5e0100=_0x5e0100-0x0;var _0x50aedd=_0x4d67[_0x5e0100];return _0x50aedd;};'use strict';var _=require(_0x74d6('0x0'));var util=require(_0x74d6('0x1'));var path=require(_0x74d6('0x2'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0x74d6('0x3'));var utils=require(_0x74d6('0x4'));var sUtils=require(_0x74d6('0x5'));var logger=require(_0x74d6('0x6'))(_0x74d6('0x7'));var rpc={'openchannelQueueReport':require(_0x74d6('0x8')),'mailQueueReport':require(_0x74d6('0x9')),'chatQueueReport':require(_0x74d6('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x74d6('0xb')),'whatsappQueueReport':require(_0x74d6('0xc'))};var RuleEngine=require(_0x74d6('0xd'));function getId(_0x37e75a,_0x2bed0d,_0x457bf4){return util[_0x74d6('0xe')](_0x74d6('0xf'),_0x37e75a,_0x2bed0d||0x0,_0x457bf4||0x0);}function getIntervals(_0x51e60b,_0x5e5208){var _0x45c544=[];if(!_[_0x74d6('0x10')](_0x5e5208['IntervalId'])&&!_[_0x74d6('0x10')](_0x51e60b[_0x5e5208[_0x74d6('0x11')]])&&!_['isNil'](_0x51e60b[_0x5e5208[_0x74d6('0x11')]][_0x74d6('0x12')])){_0x45c544=_[_0x74d6('0x13')](_0x51e60b[_0x5e5208[_0x74d6('0x11')]][_0x74d6('0x12')],'interval');}else if(!_[_0x74d6('0x10')](_0x5e5208['interval'])){_0x45c544=[_0x5e5208['interval']];}return _0x45c544;}exports['listen']=function(_0x539bd3){_0x539bd3[_0x74d6('0x14')]={};return new BPromise(function(_0x360ac2,_0x44d649){var _0x41d2b2={'Start':function(_0x122ed4){var _0x494e56=this;return new Promise(function(_0x5abf75,_0xe5db1d){if(_0x122ed4){try{var _0x2d4af6=[];var _0x46c416=getId(_0x122ed4[_0x74d6('0x15')],_0x122ed4['message']?_0x122ed4[_0x74d6('0x16')]['id']:0x0,_0x122ed4['interaction']?_0x122ed4[_0x74d6('0x17')]['id']:0x0);var _0x4abfab=sUtils[_0x74d6('0x18')](_0x539bd3,_0x122ed4);if(!_0x4abfab&&_0x122ed4[_0x74d6('0x19')]&&_[_0x74d6('0x1a')](_0x122ed4['applications'])&&_0x122ed4[_0x74d6('0x19')][_0x74d6('0x1b')]){for(var _0x288551=0x0;_0x288551<_0x122ed4[_0x74d6('0x19')][_0x74d6('0x1b')];_0x288551+=0x1){var _0x3ceba9=_0x122ed4[_0x74d6('0x19')][_0x288551];if(fs[_0x74d6('0x1c')](path['join'](__dirname,_0x74d6('0x19'),_0x3ceba9[_0x74d6('0x1d')]+'.js'))){var _0x519425=[];switch(_0x3ceba9['app'][_0x74d6('0x1e')]()){case _0x74d6('0x1f'):var _0x1c1fe6=_0x3ceba9['appdata']['split'](',');if(_0x122ed4[_0x74d6('0x15')]===_0x74d6('0x20')){_0x519425['push'](_0x1c1fe6[0x0]);_0x519425[_0x74d6('0x21')](_0x1c1fe6[0x1]);_0x519425[_0x74d6('0x21')](_0x1c1fe6['slice'](0x2,_0x1c1fe6['length'])[_0x74d6('0x22')](','));}else{_0x519425[_0x74d6('0x21')](_0x1c1fe6[0x0]);_0x519425[_0x74d6('0x21')](_0x1c1fe6['slice'](0x1,_0x1c1fe6['length'])['join'](','));}break;case _0x74d6('0x23'):var _0x3b336a=_0x3ceba9[_0x74d6('0x24')]['split'](',');_0x519425[_0x74d6('0x21')](_0x3b336a[0x0]);_0x519425[_0x74d6('0x21')](_0x3b336a[0x1]);_0x519425['push'](_0x3b336a[_0x74d6('0x25')](0x2,_0x3b336a[_0x74d6('0x1b')])['join'](','));break;case _0x74d6('0x26'):var _0x4fbb7e=_0x3ceba9[_0x74d6('0x24')][_0x74d6('0x27')](',');_0x519425[_0x74d6('0x21')](_0x4fbb7e[0x0]);_0x519425[_0x74d6('0x21')](_0x4fbb7e[0x1]);_0x519425['push'](_0x4fbb7e[0x2]);_0x519425[_0x74d6('0x21')](_0x4fbb7e[0x3]);_0x519425[_0x74d6('0x21')](_0x4fbb7e['slice'](0x4,_0x4fbb7e[_0x74d6('0x1b')])[_0x74d6('0x22')](','));break;case _0x74d6('0x28'):var _0x10f6a4=_0x3ceba9['appdata']['split'](',');_0x519425[_0x74d6('0x21')](_0x10f6a4[0x0]);_0x519425['push'](_0x10f6a4[0x1]);_0x519425[_0x74d6('0x21')](_0x10f6a4[0x2]);_0x519425[_0x74d6('0x21')](_0x10f6a4[0x3]);_0x519425[_0x74d6('0x21')](_0x10f6a4[_0x74d6('0x25')](0x4,_0x10f6a4[_0x74d6('0x1b')])['join'](','));break;case _0x74d6('0x16'):_0x519425[_0x74d6('0x21')](_0x3ceba9[_0x74d6('0x24')]);break;case _0x74d6('0x29'):_0x519425[_0x74d6('0x21')](_0x3ceba9[_0x74d6('0x2a')]);_0x519425[_0x74d6('0x21')](_0x3ceba9[_0x74d6('0x24')]);break;case'tvox':var _0x33e543=utils[_0x74d6('0x2b')](_0x122ed4[_0x74d6('0x2c')][_0x74d6('0x2d')],_0x122ed4);var _0x18a61c=_0x3ceba9[_0x74d6('0x24')][_0x74d6('0x27')](',');_0x519425['push'](_0x18a61c[0x0]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x1]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x2]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x3]);_0x519425['push'](_0x18a61c[0x4]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x5]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x6]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x7]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x8]);_0x519425[_0x74d6('0x21')](_0x18a61c[0x9]);_0x519425[_0x74d6('0x21')](_0x18a61c[0xa]);_0x519425['push'](_0x122ed4[_0x74d6('0x17')]['id']);_0x519425['push'](_0x122ed4[_0x74d6('0x16')]['id']);_0x519425[_0x74d6('0x21')](_0x3ceba9['ChatWebsiteId']);_0x519425[_0x74d6('0x21')](_0x122ed4[_0x74d6('0x17')][_0x74d6('0x2e')]);_0x519425[_0x74d6('0x21')](_0x122ed4[_0x74d6('0x2f')][_0x74d6('0x2f')]);_0x519425['push'](_0x33e543);break;default:_0x519425=_['isNil'](_0x3ceba9[_0x74d6('0x24')])?[]:_0x3ceba9[_0x74d6('0x24')][_0x74d6('0x27')](',');}var _0x210479={'id':util[_0x74d6('0xe')]('%s:%s:%s',_0x46c416,_0x3ceba9['id'],_0x3ceba9['app']),'condition':require(_0x74d6('0x30'))['condition'](_0x46c416,getIntervals(_0x539bd3[_0x74d6('0x31')],_0x3ceba9),_0x539bd3),'consequence':require(_0x74d6('0x32')+_0x3ceba9[_0x74d6('0x1d')])[_0x74d6('0x33')](_0x46c416,_0x519425,_0x539bd3,_0x122ed4),'p':_0x3ceba9[_0x74d6('0x34')]||0x0};logger[_0x74d6('0x35')](_0x74d6('0x36'),_0x210479['id'],_0x74d6('0x37'),getIntervals(_0x539bd3[_0x74d6('0x31')],_0x3ceba9)[_0x74d6('0x22')](_0x74d6('0x38')));_0x2d4af6[_0x74d6('0x21')](_0x210479);}else{logger[_0x74d6('0x39')](_0x74d6('0x3a'),path['join'](__dirname,_0x74d6('0x19'),_0x3ceba9['app']+_0x74d6('0x3b')));}}_0x539bd3[_0x74d6('0x14')][_0x46c416]=new RuleEngine(_0x2d4af6);_0x539bd3[_0x74d6('0x14')][_0x46c416][_0x74d6('0x3c')](_0x122ed4,function(_0x3deecc){logger[_0x74d6('0x35')](_0x74d6('0x3d'),JSON['stringify'](_0x3deecc[_0x74d6('0x3e')]));if(_0x539bd3['rules'][_0x46c416]){_0x539bd3['rules'][_0x46c416][_0x74d6('0x3f')]('complete');}});return _0x5abf75({'code':0xc8,'message':_0x122ed4});}else{if(_0x4abfab){logger[_0x74d6('0x35')](util[_0x74d6('0xe')](_0x74d6('0x40'),_0x46c416));}else{logger['info']('No\x20applications\x20to\x20execute');}return _0x5abf75({'code':0xc8,'message':_0x122ed4});}}catch(_0x1000af){logger[_0x74d6('0x39')](_0x1000af['stack']);return _0xe5db1d(_0x494e56['error'](0x1f4,_0x1000af));}}return _0xe5db1d(_0x74d6('0x41'));});},'AcceptMessage':function(_0x3caa3f){var _0x3faa9a=this;return new Promise(function(_0x27d94b,_0xed5f8e){if(_0x3caa3f[_0x74d6('0x42')]&&_0x3caa3f[_0x74d6('0x42')]['id']){if(_0x539bd3['agents'][_0x3caa3f[_0x74d6('0x42')]['id']]){_0x539bd3[_0x74d6('0x43')][_0x3caa3f[_0x74d6('0x42')]['id']][_0x74d6('0x44')]=![];_0x539bd3['agents'][_0x3caa3f[_0x74d6('0x42')]['id']][_0x74d6('0x45')]=undefined;}}if(_0x3caa3f[_0x74d6('0x16')]&&_0x3caa3f[_0x74d6('0x16')]['id']){try{var _0x4437ec=getId(_0x3caa3f['channel'],_0x3caa3f[_0x74d6('0x16')]?_0x3caa3f['message']['id']:0x0,_0x3caa3f['interaction']?_0x3caa3f[_0x74d6('0x17')]['id']:0x0);if(_0x539bd3[_0x74d6('0x14')][_0x4437ec]){_0x539bd3['rules'][_0x4437ec][_0x74d6('0x3f')](_0x74d6('0x46'));if(rpc[_0x3caa3f[_0x74d6('0x15')]+'QueueReport']){rpc[_0x3caa3f[_0x74d6('0x15')]+_0x74d6('0x47')][_0x74d6('0x48')](_0x4437ec,{'UserId':_0x3caa3f['message'][_0x74d6('0x49')]})[_0x74d6('0x4a')](function(){logger[_0x74d6('0x39')](_0x74d6('0x4b'));});}}return _0x27d94b({'code':0xc8,'message':_0x3caa3f});}catch(_0x42e4ba){logger[_0x74d6('0x39')](_0x42e4ba[_0x74d6('0x4c')]);return _0xed5f8e(_0x3faa9a[_0x74d6('0x39')](0x1f4,_0x42e4ba));}}logger['error'](_0x74d6('0x4d'));return _0xed5f8e(_0x3faa9a['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x52f9f7){var _0x3c1428=this;return new Promise(function(_0x161cd9,_0x4c2cbf){if(_0x52f9f7['agent']&&_0x52f9f7[_0x74d6('0x42')]['id']){try{if(_0x539bd3['agents'][_0x52f9f7[_0x74d6('0x42')]['id']]){_0x539bd3['agents'][_0x52f9f7[_0x74d6('0x42')]['id']][_0x74d6('0x44')]=![];_0x539bd3[_0x74d6('0x43')][_0x52f9f7[_0x74d6('0x42')]['id']][_0x74d6('0x45')]=undefined;}return _0x161cd9({'code':0xc8,'message':_0x52f9f7});}catch(_0x12702a){logger[_0x74d6('0x39')](_0x12702a['stack']);return _0x4c2cbf(_0x3c1428[_0x74d6('0x39')](0x1f4,_0x12702a));}}logger['error']('message\x20is\x20empty');return _0x4c2cbf(_0x3c1428[_0x74d6('0x39')](0x1f4,_0x74d6('0x4d')));});},'AbandonInteraction':function(_0x37d6af){var _0xdc7523=this;return new Promise(function(_0x46ae08,_0x26804a){if(_0x37d6af[_0x74d6('0x15')]&&_0x37d6af['interaction']&&_0x37d6af[_0x74d6('0x17')]['id']){try{var _0x58d63a=getId(_0x37d6af[_0x74d6('0x15')],_0x37d6af[_0x74d6('0x16')]?_0x37d6af[_0x74d6('0x16')]['id']:0x0,_0x37d6af[_0x74d6('0x17')]?_0x37d6af['interaction']['id']:0x0);if(_0x539bd3[_0x74d6('0x14')][_0x58d63a]){_0x539bd3[_0x74d6('0x14')][_0x58d63a][_0x74d6('0x3f')]('end');}return _0x46ae08({'code':0xc8,'message':_0x37d6af});}catch(_0x1c4df4){logger[_0x74d6('0x39')](_0x1c4df4['stack']);return _0x26804a(_0xdc7523['error'](0x1f4,_0x1c4df4));}}logger[_0x74d6('0x39')](_0x74d6('0x4d'));return _0x26804a(_0xdc7523[_0x74d6('0x39')](0x1f4,_0x74d6('0x4d')));});},'AgentCapacity':function(_0x4bb7ec){var _0x47b017=this;return new Promise(function(_0x33f21f,_0x2d2837){if(_0x539bd3['agents'][_0x74d6('0x4e')](_0x4bb7ec['id'])){for(var _0x479d83 in _0x4bb7ec['capacity']){if(_0x4bb7ec[_0x74d6('0x4f')][_0x74d6('0x4e')](_0x479d83)){if(_0x539bd3[_0x74d6('0x43')][_0x4bb7ec['id']][_0x74d6('0x4e')](_0x479d83+_0x74d6('0x50'))){_0x539bd3['agents'][_0x4bb7ec['id']][_0x479d83+'CurrentCapacity']=parseInt(_0x4bb7ec['capacity'][_0x479d83],0xa);}}}_0x539bd3[_0x74d6('0x43')][_0x4bb7ec['id']][_0x74d6('0x51')]();return _0x33f21f({'code':0xc8,'message':_0x539bd3[_0x74d6('0x43')][_0x4bb7ec['id']]});}else{return _0x2d2837(_0x47b017['error'](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x6e6f04){return new Promise(function(_0x20a9d2){var _0x9b7e49=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x43')]);if(_0x6e6f04&&_0x6e6f04['id']){var _0x3a5ee7=_[_0x74d6('0x53')](_0x9b7e49,function(_0x534631){return _0x534631['id']===_0x6e6f04['id'];});_0x20a9d2(_0x3a5ee7);}else{_0x20a9d2({'count':_0x9b7e49[_0x74d6('0x1b')],'rows':_0x9b7e49});}});},'ChatQueues':function(){return new Promise(function(_0x84bb64){var _0x5e61c4=[];for(var _0x1f2a90 in _0x539bd3['chatQueues']){if(_0x539bd3['chatQueues'][_0x74d6('0x4e')](_0x1f2a90)){var _0x193b7c=_0x539bd3[_0x74d6('0x54')][_0x1f2a90];var _0x5e502e={'id':_0x193b7c['id'],'available':_0x193b7c[_0x74d6('0x55')],'loggedIn':_0x193b7c[_0x74d6('0x56')],'name':_0x193b7c[_0x74d6('0x57')],'paused':_0x193b7c[_0x74d6('0x58')],'waiting':_0x193b7c[_0x74d6('0x59')]};_0x5e61c4['push'](_0x5e502e);}}_0x84bb64({'count':_0x5e61c4['length'],'rows':_0x5e61c4});});},'MailQueues':function(){return new Promise(function(_0x4d0074){var _0xe9138b=[];for(var _0x2b29e5 in _0x539bd3[_0x74d6('0x5a')]){if(_0x539bd3[_0x74d6('0x5a')][_0x74d6('0x4e')](_0x2b29e5)){var _0x359309=_0x539bd3[_0x74d6('0x5a')][_0x2b29e5];var _0x5ebb08={'id':_0x359309['id'],'available':_0x359309[_0x74d6('0x55')],'loggedIn':_0x359309[_0x74d6('0x56')],'name':_0x359309[_0x74d6('0x57')],'paused':_0x359309[_0x74d6('0x58')],'waiting':_0x359309[_0x74d6('0x59')]};_0xe9138b[_0x74d6('0x21')](_0x5ebb08);}}_0x4d0074({'count':_0xe9138b[_0x74d6('0x1b')],'rows':_0xe9138b});});},'OpenchannelQueues':function(){return new Promise(function(_0x3de03b){var _0x5837bb=[];for(var _0x5dd9cd in _0x539bd3['openchannelQueues']){if(_0x539bd3[_0x74d6('0x5b')][_0x74d6('0x4e')](_0x5dd9cd)){var _0x3e41b8=_0x539bd3[_0x74d6('0x5b')][_0x5dd9cd];var _0x4d79e1={'id':_0x3e41b8['id'],'available':_0x3e41b8[_0x74d6('0x55')],'loggedIn':_0x3e41b8[_0x74d6('0x56')],'name':_0x3e41b8['name'],'paused':_0x3e41b8['paused'],'waiting':_0x3e41b8[_0x74d6('0x59')]};_0x5837bb[_0x74d6('0x21')](_0x4d79e1);}}_0x3de03b({'count':_0x5837bb['length'],'rows':_0x5837bb});});},'SmsQueues':function(){return new Promise(function(_0x46288e){var _0x2cf28a=[];for(var _0x576035 in _0x539bd3[_0x74d6('0x5c')]){if(_0x539bd3['smsQueues'][_0x74d6('0x4e')](_0x576035)){var _0x247641=_0x539bd3['smsQueues'][_0x576035];var _0x2f5fdd={'id':_0x247641['id'],'available':_0x247641[_0x74d6('0x55')],'loggedIn':_0x247641[_0x74d6('0x56')],'name':_0x247641['name'],'paused':_0x247641[_0x74d6('0x58')],'waiting':_0x247641[_0x74d6('0x59')]};_0x2cf28a[_0x74d6('0x21')](_0x2f5fdd);}}_0x46288e({'count':_0x2cf28a['length'],'rows':_0x2cf28a});});},'FaxQueues':function(){return new Promise(function(_0x2f39ba){var _0x1af199=[];for(var _0x599c2f in _0x539bd3[_0x74d6('0x5d')]){if(_0x539bd3[_0x74d6('0x5d')][_0x74d6('0x4e')](_0x599c2f)){var _0x2b120f=_0x539bd3[_0x74d6('0x5d')][_0x599c2f];var _0x52be72={'id':_0x2b120f['id'],'available':_0x2b120f[_0x74d6('0x55')],'loggedIn':_0x2b120f[_0x74d6('0x56')],'name':_0x2b120f['name'],'paused':_0x2b120f[_0x74d6('0x58')],'waiting':_0x2b120f['waiting']};_0x1af199[_0x74d6('0x21')](_0x52be72);}}_0x2f39ba({'count':_0x1af199[_0x74d6('0x1b')],'rows':_0x1af199});});},'WhatsappQueues':function(){return new Promise(function(_0x237d1d){var _0x4c3040=[];for(var _0x7af4e1 in _0x539bd3[_0x74d6('0x5e')]){if(_0x539bd3[_0x74d6('0x5e')][_0x74d6('0x4e')](_0x7af4e1)){var _0x11ba14=_0x539bd3[_0x74d6('0x5e')][_0x7af4e1];var _0xd27891={'id':_0x11ba14['id'],'available':_0x11ba14[_0x74d6('0x55')],'loggedIn':_0x11ba14[_0x74d6('0x56')],'name':_0x11ba14[_0x74d6('0x57')],'paused':_0x11ba14[_0x74d6('0x58')],'waiting':_0x11ba14[_0x74d6('0x59')]};_0x4c3040[_0x74d6('0x21')](_0xd27891);}}_0x237d1d({'count':_0x4c3040[_0x74d6('0x1b')],'rows':_0x4c3040});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x405ffa){var _0x5059d1=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x5f')]);_0x405ffa({'count':_0x5059d1[_0x74d6('0x1b')],'rows':_0x5059d1});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x59e041){var _0x106389=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x60')]);_0x59e041({'count':_0x106389[_0x74d6('0x1b')],'rows':_0x106389});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x2b6fac){var _0x1556d3=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x61')]);_0x2b6fac({'count':_0x1556d3['length'],'rows':_0x1556d3});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x29edf2){var _0x39bf4d=_[_0x74d6('0x52')](_0x539bd3['smsQueuesWaitingInteractions']);_0x29edf2({'count':_0x39bf4d[_0x74d6('0x1b')],'rows':_0x39bf4d});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x378ca2){var _0x43f4e6=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x62')]);_0x378ca2({'count':_0x43f4e6[_0x74d6('0x1b')],'rows':_0x43f4e6});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x33e5d4){var _0x4fa2fa=_[_0x74d6('0x52')](_0x539bd3[_0x74d6('0x63')]);_0x33e5d4({'count':_0x4fa2fa['length'],'rows':_0x4fa2fa});});}};var _0x4d1b2=jayson['server'](_0x41d2b2)['http']();_0x4d1b2['on'](_0x74d6('0x39'),function(_0x5b1fef){logger[_0x74d6('0x39')](JSON['stringify'](_0x5b1fef));return _0x44d649(_0x5b1fef);});_0x4d1b2[_0x74d6('0x64')](0x232c,'127.0.0.1',function(){console[_0x74d6('0x65')](_0x74d6('0x66'),0x232c);return _0x360ac2(_0x74d6('0x67')+0x232c);});});};
\ No newline at end of file
index ed636bb..5005b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeed9=['format','iftime\x20%s','indexOf','true','all','some','[%s][INTERVAL]\x20%s\x20%s','join','when','log','stack','util','bluebird','jayson/promise','lodash','routing','client','http','request','then','error','message','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xeed9,0x1af));var _0x9eed=function(_0x2665a3,_0x3bac99){_0x2665a3=_0x2665a3-0x0;var _0x586de6=_0xeed9[_0x2665a3];return _0x586de6;};'use strict';var util=require(_0x9eed('0x0'));var BPromise=require(_0x9eed('0x1'));var jayson=require(_0x9eed('0x2'));var _=require(_0x9eed('0x3'));var logger=require('../../../config/logger')(_0x9eed('0x4'));var client=jayson[_0x9eed('0x5')][_0x9eed('0x6')]({'port':0x232a});function request(_0x23988e,_0x223cf5){return new BPromise(function(_0x5a7e44,_0x2dc39f){return client[_0x9eed('0x7')](_0x23988e,_0x223cf5)[_0x9eed('0x8')](function(_0x722a7f){if(_0x722a7f['error']){return _0x2dc39f(_0x722a7f[_0x9eed('0x9')][_0x9eed('0xa')]);}else{return _0x5a7e44(_0x722a7f[_0x9eed('0xb')]);}})[_0x9eed('0xc')](function(_0x14486c){return _0x2dc39f(_0x14486c);});});}exports['condition']=function(_0x2cb3b6,_0x368da0,_0x57858e){return function(_0x54bc50){if(_0x57858e['rules']&&!_0x57858e[_0x9eed('0xd')][_0x2cb3b6]){logger[_0x9eed('0xe')](_0x9eed('0xf'),_0x2cb3b6);return _0x54bc50[_0x9eed('0x10')]();}var _0x32f442=[];for(var _0x28bb94=0x0;_0x28bb94<_0x368da0[_0x9eed('0x11')];_0x28bb94+=0x1){_0x32f442['push'](request(_0x9eed('0x12'),{'command':util[_0x9eed('0x13')](_0x9eed('0x14'),_0x368da0[_0x28bb94])})[_0x9eed('0x8')](function(_0x321704){return _0x321704&&_0x321704[_0x9eed('0xa')]&&_0x321704[_0x9eed('0xa')][_0x9eed('0x15')](_0x9eed('0x16'))>=0x0?!![]:![];})[_0x9eed('0xc')](function(_0x45369d){logger[_0x9eed('0x9')]('[%s][INTERVAL]\x20%s',_0x2cb3b6,_0x368da0[_0x28bb94]);}));}BPromise[_0x9eed('0x17')](_0x32f442)[_0x9eed('0x8')](function(_0xf1f780){var _0x1f6d71=_[_0x9eed('0x18')](_0xf1f780);logger[_0x9eed('0xe')](_0x9eed('0x19'),_0x2cb3b6,_0x368da0[_0x9eed('0x1a')]('\x20|\x20'),_0x1f6d71);_0x54bc50[_0x9eed('0x1b')](_0x1f6d71);})['catch'](function(_0x1a9009){console[_0x9eed('0x1c')](_0x1a9009);logger[_0x9eed('0x9')](_0x9eed('0x19'),_0x2cb3b6,_0x368da0['join']('\x20|\x20'),_0x1a9009[_0x9eed('0x1d')]);_0x54bc50[_0x9eed('0x10')]();});};};
\ No newline at end of file
+var _0xb8f8=['iftime\x20%s','indexOf','true','all','then','some','info','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','catch','log','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','request','error','message','result','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format'];(function(_0x2f7c9e,_0x1e5495){var _0x1d624a=function(_0x233157){while(--_0x233157){_0x2f7c9e['push'](_0x2f7c9e['shift']());}};_0x1d624a(++_0x1e5495);}(_0xb8f8,0x1a0));var _0x8b8f=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xb8f8[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0x8b8f('0x0'));var BPromise=require(_0x8b8f('0x1'));var jayson=require(_0x8b8f('0x2'));var _=require(_0x8b8f('0x3'));var logger=require(_0x8b8f('0x4'))(_0x8b8f('0x5'));var client=jayson['client']['http']({'port':0x232a});function request(_0x2ee388,_0x130d34){return new BPromise(function(_0x2eeb51,_0x2b5e9b){return client[_0x8b8f('0x6')](_0x2ee388,_0x130d34)['then'](function(_0x234f0a){if(_0x234f0a[_0x8b8f('0x7')]){return _0x2b5e9b(_0x234f0a[_0x8b8f('0x7')][_0x8b8f('0x8')]);}else{return _0x2eeb51(_0x234f0a[_0x8b8f('0x9')]);}})['catch'](function(_0x46ddf7){return _0x2b5e9b(_0x46ddf7);});});}exports[_0x8b8f('0xa')]=function(_0x71faf1,_0x107921,_0x239d6a){return function(_0x579f39){if(_0x239d6a[_0x8b8f('0xb')]&&!_0x239d6a['rules'][_0x71faf1]){logger['info'](_0x8b8f('0xc'),_0x71faf1);return _0x579f39[_0x8b8f('0xd')]();}var _0x2decdf=[];for(var _0x2cf233=0x0;_0x2cf233<_0x107921[_0x8b8f('0xe')];_0x2cf233+=0x1){_0x2decdf[_0x8b8f('0xf')](request(_0x8b8f('0x10'),{'command':util[_0x8b8f('0x11')](_0x8b8f('0x12'),_0x107921[_0x2cf233])})['then'](function(_0x5a27e3){return _0x5a27e3&&_0x5a27e3['message']&&_0x5a27e3[_0x8b8f('0x8')][_0x8b8f('0x13')](_0x8b8f('0x14'))>=0x0?!![]:![];})['catch'](function(_0x31f36b){logger[_0x8b8f('0x7')]('[%s][INTERVAL]\x20%s',_0x71faf1,_0x107921[_0x2cf233]);}));}BPromise[_0x8b8f('0x15')](_0x2decdf)[_0x8b8f('0x16')](function(_0x657ff0){var _0x53c350=_[_0x8b8f('0x17')](_0x657ff0);logger[_0x8b8f('0x18')](_0x8b8f('0x19'),_0x71faf1,_0x107921[_0x8b8f('0x1a')](_0x8b8f('0x1b')),_0x53c350);_0x579f39[_0x8b8f('0x1c')](_0x53c350);})[_0x8b8f('0x1d')](function(_0x1f3eac){console[_0x8b8f('0x1e')](_0x1f3eac);logger['error']('[%s][INTERVAL]\x20%s\x20%s',_0x71faf1,_0x107921[_0x8b8f('0x1a')](_0x8b8f('0x1b')),_0x1f3eac['stack']);_0x579f39[_0x8b8f('0xd')]();});};};
\ No newline at end of file
index cfe516c..52af9f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','complete','[%s][agents][blindtransfer]','transfereruniqueid','transfer','transfertype','blind','transferexten','transferuniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfereruniqueid','ATTENDED','transfereeuniqueid','calleridname','agententerreason','secondtransfererlinkedid','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','splice','agentcompleteAt','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','then','agentacw','agentcomplete','acwtime','acwTimeout','CreateVoiceAgentReport','request','destuniqueid','agentcalled','debug','format','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','timeout','reason','ringtime','talktime','queuecallerabandon','forIn','includes','agentringnoanswerAt','abandoned','holdtime','[%s][agents][queuecallerabandon]','agentconnect','agentconnectAt','connectedlinename'];(function(_0x516c68,_0x465411){var _0x25a812=function(_0x31aebe){while(--_0x31aebe){_0x516c68['push'](_0x516c68['shift']());}};_0x25a812(++_0x465411);}(_0xb9a7,0x112));var _0x7b9a=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xb9a7[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require(_0x7b9a('0x0'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x563857,_0x5f1a52){utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x2'),_0x563857[_0x7b9a('0x3')],_0x563857[_0x7b9a('0x4')],_0x563857[_0x7b9a('0x5')],_0x563857[_0x7b9a('0x6')],_0x563857[_0x7b9a('0x7')],_0x563857[_0x7b9a('0x8')],_0x563857[_0x7b9a('0x9')],_0x563857[_0x7b9a('0xa')]));if(_0x563857[_0x7b9a('0x5')]){utils['getVoiceQueueByName'](_0x563857[_0x7b9a('0x5')])[_0x7b9a('0xb')](function(_0x56a199){if(_0x56a199){_0x563857['type']=_0x56a199['type'];_0x563857[_0x7b9a('0xc')]=_0x563857[_0x7b9a('0xd')]?_0x56a199['acw']:![];_0x563857[_0x7b9a('0xe')]=_0x563857['agentacw']?_0x56a199[_0x7b9a('0xf')]:0x0;}utils['request'](_0x7b9a('0x10'),_0x563857);});}else{utils[_0x7b9a('0x11')](_0x7b9a('0x10'),_0x563857);}if(_0x5f1a52){delete transfers[_0x563857['uniqueid']];}else{delete agents[_0x563857[_0x7b9a('0x12')]];}}exports[_0x7b9a('0x13')]=function(_0x5e3875){try{utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')]('[%s][agents][agentcalled]',_0x5e3875[_0x7b9a('0x3')]),_0x5e3875);agents[_0x5e3875[_0x7b9a('0x12')]]=_0x5e3875;agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0x16')]=utils[_0x7b9a('0x17')]();agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x18');agents[_0x5e3875[_0x7b9a('0x12')]]['connectedlinenum']=null;agents[_0x5e3875[_0x7b9a('0x12')]]['connectedlinename']=null;utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x19'),_0x5e3875[_0x7b9a('0x3')],agents[_0x5e3875[_0x7b9a('0x12')]][_0x7b9a('0x6')],_0x5e3875[_0x7b9a('0x12')]));}catch(_0x283cc3){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x1b'),_0x5e3875[_0x7b9a('0x3')]),_0x283cc3);}};exports[_0x7b9a('0x1c')]=function(_0x58aed7){try{if(!_[_0x7b9a('0x1d')](agents[_0x58aed7['destuniqueid']])){utils[_0x7b9a('0x14')](util['format'](_0x7b9a('0x1e'),_0x58aed7[_0x7b9a('0x3')]),_0x58aed7);utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x1f'),_0x58aed7[_0x7b9a('0x3')],agents[_0x58aed7['destuniqueid']][_0x7b9a('0x6')],_0x58aed7[_0x7b9a('0x12')]));agents[_0x58aed7[_0x7b9a('0x12')]][_0x7b9a('0x1c')]=!![];agents[_0x58aed7[_0x7b9a('0x12')]]['agentringnoanswerAt']=utils[_0x7b9a('0x17')]();agents[_0x58aed7[_0x7b9a('0x12')]]['lastevent']=_0x7b9a('0x20');agents[_0x58aed7['destuniqueid']][_0x7b9a('0x21')]=_0x7b9a('0x20');agents[_0x58aed7['destuniqueid']]['holdtime']=_0x58aed7[_0x7b9a('0x22')]?parseInt(_0x58aed7['ringtime'])/0x3e8:0x0;agents[_0x58aed7['destuniqueid']][_0x7b9a('0x23')]=0x0;unanswered['push'](_0x58aed7['destuniqueid']);}}catch(_0x3847b4){utils['error'](util[_0x7b9a('0x15')](_0x7b9a('0x1e'),_0x58aed7['uniqueid']),_0x3847b4);}};exports[_0x7b9a('0x24')]=function(_0x2e6144){try{_[_0x7b9a('0x25')](agents,function(_0x5b64d7,_0x45ccf5){if(_0x5b64d7[_0x7b9a('0x3')]==_0x2e6144[_0x7b9a('0x3')]&&!_[_0x7b9a('0x26')](unanswered,_0x5b64d7[_0x7b9a('0x12')])){utils[_0x7b9a('0x14')](util['format']('[%s][agents][queuecallerabandon]',_0x2e6144[_0x7b9a('0x3')]),_0x2e6144);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x2e6144[_0x7b9a('0x3')],_0x5b64d7[_0x7b9a('0x6')],_0x5b64d7['destuniqueid']));_0x5b64d7['agentringnoanswer']=!![];_0x5b64d7[_0x7b9a('0x27')]=utils[_0x7b9a('0x17')]();_0x5b64d7['lastevent']=_0x7b9a('0x28');_0x5b64d7[_0x7b9a('0x21')]=_0x7b9a('0x28');_0x5b64d7[_0x7b9a('0x29')]=_0x2e6144[_0x7b9a('0x29')];_0x5b64d7['talktime']=0x0;writeDB(_0x5b64d7);}});}catch(_0x46bcd0){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x2a'),_0x2e6144[_0x7b9a('0x3')]),_0x46bcd0);}};exports[_0x7b9a('0x2b')]=function(_0x5f1da4){try{if(agents[_0x5f1da4['destuniqueid']]){utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')]('[%s][agents][agentconnect]',_0x5f1da4[_0x7b9a('0x3')]),_0x5f1da4);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x5f1da4[_0x7b9a('0x3')],agents[_0x5f1da4[_0x7b9a('0x12')]]['membername'],_0x5f1da4['destuniqueid']));agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x2c')]=utils[_0x7b9a('0x17')]();agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x9')]=_0x5f1da4[_0x7b9a('0x9')];agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0x2d')]=_0x5f1da4['connectedlinename'];agents[_0x5f1da4[_0x7b9a('0x12')]]['holdtime']=_0x5f1da4[_0x7b9a('0x22')];agents[_0x5f1da4[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x2e');_[_0x7b9a('0x25')](agents,function(_0x89951b,_0x5e504f){if(_0x89951b[_0x7b9a('0x12')]!=_0x5f1da4[_0x7b9a('0x12')]&&_0x89951b[_0x7b9a('0x3')]==_0x5f1da4[_0x7b9a('0x3')]){_0x89951b['talktime']=0x0;_0x89951b[_0x7b9a('0x29')]=_0x5f1da4[_0x7b9a('0x22')];_0x89951b[_0x7b9a('0x1c')]=!![];_0x89951b[_0x7b9a('0x27')]=utils['now']();_0x89951b[_0x7b9a('0xa')]='answered_elsewhere';_0x89951b[_0x7b9a('0x21')]=_0x7b9a('0x2f');_0x89951b[_0x7b9a('0x30')]=_0x5f1da4[_0x7b9a('0x12')];_0x89951b[_0x7b9a('0x31')]=_0x5f1da4[_0x7b9a('0x6')];writeDB(_0x89951b);}});}}catch(_0x56e274){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x32'),_0x5f1da4['uniqueid']),_0x56e274);}};exports['agentcomplete']=function(_0x3724fe){try{if(!_[_0x7b9a('0x1d')](agents[_0x3724fe[_0x7b9a('0x12')]])){utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')](_0x7b9a('0x33'),_0x3724fe['uniqueid']),_0x3724fe);utils['info'](util['format'](_0x7b9a('0x34'),_0x3724fe[_0x7b9a('0x3')],agents[_0x3724fe['destuniqueid']][_0x7b9a('0x6')],_0x3724fe[_0x7b9a('0x12')]));agents[_0x3724fe[_0x7b9a('0x12')]]['agentcomplete']=!![];agents[_0x3724fe[_0x7b9a('0x12')]]['agentcompleteAt']=utils[_0x7b9a('0x17')]();agents[_0x3724fe[_0x7b9a('0x12')]][_0x7b9a('0x23')]=utils[_0x7b9a('0x35')](agents[_0x3724fe[_0x7b9a('0x12')]]['agentcompleteAt'],agents[_0x3724fe[_0x7b9a('0x12')]]['agentconnectAt']);agents[_0x3724fe[_0x7b9a('0x12')]]['reason']=_0x3724fe['reason'];agents[_0x3724fe[_0x7b9a('0x12')]][_0x7b9a('0xa')]=_0x7b9a('0x36');writeDB(agents[_0x3724fe[_0x7b9a('0x12')]]);}}catch(_0x1cbd5a){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')](_0x7b9a('0x33'),_0x3724fe[_0x7b9a('0x3')]),_0x1cbd5a);}};exports['blindtransfer']=function(_0x1d7957){try{if(!_[_0x7b9a('0x1d')](agents[_0x1d7957['transfereruniqueid']])){utils['debug'](util['format'](_0x7b9a('0x37'),_0x1d7957[_0x7b9a('0x3')]),_0x1d7957);utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x1d7957[_0x7b9a('0x3')],agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x6')],agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3')]));agents[_0x1d7957['transfereruniqueid']][_0x7b9a('0x39')]=!![];agents[_0x1d7957['transfereruniqueid']][_0x7b9a('0x3a')]=_0x7b9a('0x3b');agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3c')]=_0x1d7957['extension'];agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3d')]=agents[_0x1d7957[_0x7b9a('0x38')]][_0x7b9a('0x3')];}}catch(_0x2b0db5){utils[_0x7b9a('0x1a')](util[_0x7b9a('0x15')]('[%s][agents][blindtransfer]',_0x1d7957['uniqueid']),_0x2b0db5);}};exports['attendedtransfer']=function(_0x12c5bf){try{utils[_0x7b9a('0x14')](util['format']('[%s][agents][attendedtransfer]',_0x12c5bf['origtransfereruniqueid']),_0x12c5bf);if(_0x12c5bf['origtransfereruniqueid']==_0x12c5bf[_0x7b9a('0x3e')]){if(!_[_0x7b9a('0x1d')](agents[_0x12c5bf[_0x7b9a('0x3f')]])){utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x40'),_0x12c5bf[_0x7b9a('0x41')],agents[_0x12c5bf[_0x7b9a('0x3f')]]['membername']));agents[_0x12c5bf[_0x7b9a('0x3f')]]['transfer']=!![];agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x3a')]=_0x7b9a('0x42');agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x3c')]=_0x12c5bf['origtransfererexten'];agents[_0x12c5bf[_0x7b9a('0x3f')]]['transferuniqueid']=_0x12c5bf[_0x7b9a('0x41')];}if(_0x12c5bf[_0x7b9a('0x43')]&&agents[_0x12c5bf[_0x7b9a('0x43')]]){agents[_0x12c5bf['transfereeuniqueid']]['agententerreason']=0x1;transfers[_0x12c5bf['transfereeuniqueid']]=_['clone'](agents[_0x12c5bf[_0x7b9a('0x43')]]);transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x8')]=agents[_0x12c5bf['secondtransfereruniqueid']][_0x7b9a('0x8')];transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x44')]=agents[_0x12c5bf[_0x7b9a('0x3f')]][_0x7b9a('0x44')];transfers[_0x12c5bf['transfereeuniqueid']][_0x7b9a('0x16')]=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf[_0x7b9a('0x43')]]['agentconnectAt']=utils['now']();transfers[_0x12c5bf['transfereeuniqueid']][_0x7b9a('0x29')]=0x0;transfers[_0x12c5bf[_0x7b9a('0x43')]][_0x7b9a('0x45')]=0x2;}}else if(_0x12c5bf['secondtransfereruniqueid']==_0x12c5bf[_0x7b9a('0x46')]){if(!_[_0x7b9a('0x1d')](agents[_0x12c5bf['origtransfereruniqueid']])){utils[_0x7b9a('0x1')](util['format'](_0x7b9a('0x40'),_0x12c5bf['origtransfereruniqueid'],agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x6')]));agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x39')]=!![];agents[_0x12c5bf['origtransfereruniqueid']][_0x7b9a('0x3a')]=_0x7b9a('0x42');agents[_0x12c5bf[_0x7b9a('0x41')]][_0x7b9a('0x3c')]=_0x12c5bf['secondtransfererexten'];agents[_0x12c5bf[_0x7b9a('0x41')]]['transferuniqueid']=_0x12c5bf[_0x7b9a('0x3f')];}if(_0x12c5bf['transfertargetuniqueid']&&agents[_0x12c5bf[_0x7b9a('0x47')]]){agents[_0x12c5bf['transfertargetuniqueid']]['agententerreason']=0x1;transfers[_0x12c5bf['transfertargetuniqueid']]=_['clone'](agents[_0x12c5bf[_0x7b9a('0x47')]]);transfers[_0x12c5bf[_0x7b9a('0x47')]][_0x7b9a('0x8')]=agents[_0x12c5bf[_0x7b9a('0x41')]]['calleridnum'];transfers[_0x12c5bf[_0x7b9a('0x47')]]['calleridname']=agents[_0x12c5bf['origtransfereruniqueid']][_0x7b9a('0x44')];transfers[_0x12c5bf['transfertargetuniqueid']]['agentcalledAt']=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf[_0x7b9a('0x47')]]['agentconnectAt']=utils[_0x7b9a('0x17')]();transfers[_0x12c5bf['transfertargetuniqueid']][_0x7b9a('0x29')]=0x0;transfers[_0x12c5bf[_0x7b9a('0x47')]][_0x7b9a('0x45')]=0x2;}}}catch(_0x5118b3){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0x12c5bf[_0x7b9a('0x41')]),_0x5118b3);}};exports[_0x7b9a('0x48')]=function(_0x3fd697){try{utils[_0x7b9a('0x14')](util[_0x7b9a('0x15')](_0x7b9a('0x49'),_0x3fd697[_0x7b9a('0x3')]),_0x3fd697);if(agents[_0x3fd697['uniqueid']]&&agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]==='timeout'){if(_0x3fd697[_0x7b9a('0x4a')]==='21'){agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]='rejected';agents[_0x3fd697['uniqueid']][_0x7b9a('0xa')]=_0x7b9a('0x4b');}utils['info'](util[_0x7b9a('0x15')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3fd697[_0x7b9a('0x3')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x6')],agents[_0x3fd697['uniqueid']][_0x7b9a('0x21')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]));writeDB(agents[_0x3fd697[_0x7b9a('0x3')]]);var _0x2090ef=unanswered['indexOf'](_0x3fd697['uniqueid']);if(_0x2090ef>-0x1){unanswered[_0x7b9a('0x4c')](_0x2090ef,0x1);}}if(transfers[_0x3fd697[_0x7b9a('0x3')]]){transfers[_0x3fd697['uniqueid']][_0x7b9a('0xd')]=!![];transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')]=utils['now']();transfers[_0x3fd697['uniqueid']][_0x7b9a('0x23')]=utils[_0x7b9a('0x35')](transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')],transfers[_0x3fd697['uniqueid']][_0x7b9a('0x2c')]);transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]='agent';transfers[_0x3fd697['uniqueid']][_0x7b9a('0xa')]=_0x7b9a('0x36');utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x3fd697[_0x7b9a('0x3')],transfers[_0x3fd697[_0x7b9a('0x3')]]['membername'],transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')],transfers[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]));writeDB(transfers[_0x3fd697[_0x7b9a('0x3')]],!![]);}if(agents[_0x3fd697[_0x7b9a('0x3')]]&&agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x2c')]){agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xd')]=!![];agents[_0x3fd697[_0x7b9a('0x3')]]['agentcompleteAt']=utils['now']();agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x23')]=utils['diffTime'](agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x4d')],agents[_0x3fd697['uniqueid']][_0x7b9a('0x2c')]);agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')]=agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x39')]?_0x7b9a('0x39'):_0x7b9a('0x4e');agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0xa')]='complete';utils[_0x7b9a('0x1')](util[_0x7b9a('0x15')](_0x7b9a('0x4f'),_0x3fd697[_0x7b9a('0x3')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x6')],agents[_0x3fd697[_0x7b9a('0x3')]][_0x7b9a('0x21')],agents[_0x3fd697['uniqueid']][_0x7b9a('0xa')]));writeDB(agents[_0x3fd697[_0x7b9a('0x3')]]);}}catch(_0x3022e0){utils['error'](util[_0x7b9a('0x15')](_0x7b9a('0x49'),_0x3fd697[_0x7b9a('0x3')]),_0x3022e0);}};
\ No newline at end of file
+var _0x351d=['[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','ringtime','push','error','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','talktime','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','connectedlinename','connect','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','blindtransfer','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','extension','transferuniqueid','[%s][agents][blindtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','ATTENDED','transferexten','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','complete','lodash','./utils','format','uniqueid','channel','membername','interface','calleridnum','lastevent','queue','then','type','agentcomplete','acw','agentacw','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','[%s][agents][agentcalled]','agentcalledAt','now','called','info'];(function(_0x18727d,_0x4fbb67){var _0x22247b=function(_0x314d7d){while(--_0x314d7d){_0x18727d['push'](_0x18727d['shift']());}};_0x22247b(++_0x4fbb67);}(_0x351d,0x90));var _0xd351=function(_0x1510a2,_0x30a223){_0x1510a2=_0x1510a2-0x0;var _0x390156=_0x351d[_0x1510a2];return _0x390156;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var utils=require(_0xd351('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2aa5fd,_0x340931){utils['info'](util[_0xd351('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2aa5fd[_0xd351('0x3')],_0x2aa5fd[_0xd351('0x4')],_0x2aa5fd['queue'],_0x2aa5fd[_0xd351('0x5')],_0x2aa5fd[_0xd351('0x6')],_0x2aa5fd[_0xd351('0x7')],_0x2aa5fd['connectedlinenum'],_0x2aa5fd[_0xd351('0x8')]));if(_0x2aa5fd[_0xd351('0x9')]){utils['getVoiceQueueByName'](_0x2aa5fd[_0xd351('0x9')])[_0xd351('0xa')](function(_0x51c5f4){if(_0x51c5f4){_0x2aa5fd['type']=_0x51c5f4[_0xd351('0xb')];_0x2aa5fd['agentacw']=_0x2aa5fd[_0xd351('0xc')]?_0x51c5f4[_0xd351('0xd')]:![];_0x2aa5fd['acwtime']=_0x2aa5fd[_0xd351('0xe')]?_0x51c5f4[_0xd351('0xf')]:0x0;}utils['request'](_0xd351('0x10'),_0x2aa5fd);});}else{utils['request']('CreateVoiceAgentReport',_0x2aa5fd);}if(_0x340931){delete transfers[_0x2aa5fd[_0xd351('0x3')]];}else{delete agents[_0x2aa5fd[_0xd351('0x11')]];}}exports[_0xd351('0x12')]=function(_0x1eb2a9){try{utils['debug'](util[_0xd351('0x2')](_0xd351('0x13'),_0x1eb2a9['uniqueid']),_0x1eb2a9);agents[_0x1eb2a9[_0xd351('0x11')]]=_0x1eb2a9;agents[_0x1eb2a9[_0xd351('0x11')]][_0xd351('0x14')]=utils[_0xd351('0x15')]();agents[_0x1eb2a9[_0xd351('0x11')]]['lastevent']=_0xd351('0x16');agents[_0x1eb2a9['destuniqueid']]['connectedlinenum']=null;agents[_0x1eb2a9[_0xd351('0x11')]]['connectedlinename']=null;utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x18'),_0x1eb2a9['uniqueid'],agents[_0x1eb2a9[_0xd351('0x11')]][_0xd351('0x5')],_0x1eb2a9[_0xd351('0x11')]));}catch(_0x12b5aa){utils['error'](util[_0xd351('0x2')]('[%s][agents][agentcalled]',_0x1eb2a9['uniqueid']),_0x12b5aa);}};exports[_0xd351('0x19')]=function(_0x4a427b){try{if(!_[_0xd351('0x1a')](agents[_0x4a427b[_0xd351('0x11')]])){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x1c'),_0x4a427b['uniqueid']),_0x4a427b);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x1d'),_0x4a427b['uniqueid'],agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x5')],_0x4a427b[_0xd351('0x11')]));agents[_0x4a427b['destuniqueid']][_0xd351('0x19')]=!![];agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x1e')]=utils[_0xd351('0x15')]();agents[_0x4a427b['destuniqueid']][_0xd351('0x8')]='timeout';agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x1f')]='timeout';agents[_0x4a427b[_0xd351('0x11')]]['holdtime']=_0x4a427b['ringtime']?parseInt(_0x4a427b[_0xd351('0x20')])/0x3e8:0x0;agents[_0x4a427b['destuniqueid']]['talktime']=0x0;unanswered[_0xd351('0x21')](_0x4a427b['destuniqueid']);}}catch(_0x38471c){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][agentringnoanswer]',_0x4a427b[_0xd351('0x3')]),_0x38471c);}};exports['queuecallerabandon']=function(_0x1c826b){try{_['forIn'](agents,function(_0x5f07b1,_0xeb4da9){if(_0x5f07b1[_0xd351('0x3')]==_0x1c826b[_0xd351('0x3')]&&!_[_0xd351('0x23')](unanswered,_0x5f07b1['destuniqueid'])){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x24'),_0x1c826b[_0xd351('0x3')]),_0x1c826b);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x25'),_0x1c826b[_0xd351('0x3')],_0x5f07b1[_0xd351('0x5')],_0x5f07b1['destuniqueid']));_0x5f07b1[_0xd351('0x19')]=!![];_0x5f07b1[_0xd351('0x1e')]=utils[_0xd351('0x15')]();_0x5f07b1[_0xd351('0x8')]='abandoned';_0x5f07b1[_0xd351('0x1f')]=_0xd351('0x26');_0x5f07b1[_0xd351('0x27')]=_0x1c826b[_0xd351('0x27')];_0x5f07b1[_0xd351('0x28')]=0x0;writeDB(_0x5f07b1);}});}catch(_0x37fbb8){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x24'),_0x1c826b['uniqueid']),_0x37fbb8);}};exports['agentconnect']=function(_0x1fae11){try{if(agents[_0x1fae11[_0xd351('0x11')]]){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x29'),_0x1fae11[_0xd351('0x3')]),_0x1fae11);utils['info'](util['format'](_0xd351('0x2a'),_0x1fae11['uniqueid'],agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x5')],_0x1fae11[_0xd351('0x11')]));agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2b')]=utils[_0xd351('0x15')]();agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2c')]=_0x1fae11[_0xd351('0x2c')];agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2d')]=_0x1fae11['connectedlinename'];agents[_0x1fae11[_0xd351('0x11')]]['holdtime']=_0x1fae11[_0xd351('0x20')];agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x8')]=_0xd351('0x2e');_[_0xd351('0x2f')](agents,function(_0x3db72a,_0x545bfc){if(_0x3db72a[_0xd351('0x11')]!=_0x1fae11[_0xd351('0x11')]&&_0x3db72a['uniqueid']==_0x1fae11[_0xd351('0x3')]){_0x3db72a[_0xd351('0x28')]=0x0;_0x3db72a[_0xd351('0x27')]=_0x1fae11[_0xd351('0x20')];_0x3db72a[_0xd351('0x19')]=!![];_0x3db72a['agentringnoanswerAt']=utils['now']();_0x3db72a[_0xd351('0x8')]=_0xd351('0x30');_0x3db72a['reason']='answered_elsewhere';_0x3db72a[_0xd351('0x31')]=_0x1fae11[_0xd351('0x11')];_0x3db72a['answeredelsewheremembername']=_0x1fae11['membername'];writeDB(_0x3db72a);}});}}catch(_0x46af23){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x29'),_0x1fae11[_0xd351('0x3')]),_0x46af23);}};exports[_0xd351('0xc')]=function(_0x6192c3){try{if(!_[_0xd351('0x1a')](agents[_0x6192c3[_0xd351('0x11')]])){utils['debug'](util['format'](_0xd351('0x32'),_0x6192c3[_0xd351('0x3')]),_0x6192c3);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x33'),_0x6192c3[_0xd351('0x3')],agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x5')],_0x6192c3[_0xd351('0x11')]));agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0xc')]=!![];agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x34')]=utils[_0xd351('0x15')]();agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x28')]=utils['diffTime'](agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x34')],agents[_0x6192c3[_0xd351('0x11')]]['agentconnectAt']);agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x1f')]=_0x6192c3[_0xd351('0x1f')];agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x8')]='complete';writeDB(agents[_0x6192c3[_0xd351('0x11')]]);}}catch(_0x575ea0){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][agentcomplete]',_0x6192c3['uniqueid']),_0x575ea0);}};exports[_0xd351('0x35')]=function(_0x444206){try{if(!_[_0xd351('0x1a')](agents[_0x444206['transfereruniqueid']])){utils[_0xd351('0x1b')](util[_0xd351('0x2')]('[%s][agents][blindtransfer]',_0x444206[_0xd351('0x3')]),_0x444206);utils['info'](util[_0xd351('0x2')](_0xd351('0x36'),_0x444206['uniqueid'],agents[_0x444206['transfereruniqueid']][_0xd351('0x5')],agents[_0x444206['transfereruniqueid']][_0xd351('0x3')]));agents[_0x444206[_0xd351('0x37')]][_0xd351('0x38')]=!![];agents[_0x444206['transfereruniqueid']][_0xd351('0x39')]='blind';agents[_0x444206['transfereruniqueid']]['transferexten']=_0x444206[_0xd351('0x3a')];agents[_0x444206[_0xd351('0x37')]][_0xd351('0x3b')]=agents[_0x444206['transfereruniqueid']]['uniqueid'];}}catch(_0x1748f0){utils[_0xd351('0x22')](util['format'](_0xd351('0x3c'),_0x444206[_0xd351('0x3')]),_0x1748f0);}};exports['attendedtransfer']=function(_0x24ee0f){try{utils['debug'](util[_0xd351('0x2')]('[%s][agents][attendedtransfer]',_0x24ee0f[_0xd351('0x3d')]),_0x24ee0f);if(_0x24ee0f[_0xd351('0x3d')]==_0x24ee0f[_0xd351('0x3e')]){if(!_[_0xd351('0x1a')](agents[_0x24ee0f[_0xd351('0x3f')]])){utils[_0xd351('0x17')](util[_0xd351('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x24ee0f['origtransfereruniqueid'],agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x5')]));agents[_0x24ee0f['secondtransfereruniqueid']][_0xd351('0x38')]=!![];agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x39')]='ATTENDED';agents[_0x24ee0f[_0xd351('0x3f')]]['transferexten']=_0x24ee0f['origtransfererexten'];agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x3b')]=_0x24ee0f['origtransfereruniqueid'];}if(_0x24ee0f[_0xd351('0x40')]&&agents[_0x24ee0f[_0xd351('0x40')]]){agents[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x41')]=0x1;transfers[_0x24ee0f[_0xd351('0x40')]]=_[_0xd351('0x42')](agents[_0x24ee0f['transfereeuniqueid']]);transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x7')]=agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x7')];transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x43')]=agents[_0x24ee0f[_0xd351('0x3f')]]['calleridname'];transfers[_0x24ee0f[_0xd351('0x40')]]['agentcalledAt']=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x2b')]=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x40')]]['holdtime']=0x0;transfers[_0x24ee0f[_0xd351('0x40')]]['agententerreason']=0x2;}}else if(_0x24ee0f[_0xd351('0x3f')]==_0x24ee0f[_0xd351('0x44')]){if(!_[_0xd351('0x1a')](agents[_0x24ee0f[_0xd351('0x3d')]])){utils[_0xd351('0x17')](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x24ee0f[_0xd351('0x3d')],agents[_0x24ee0f[_0xd351('0x3d')]]['membername']));agents[_0x24ee0f[_0xd351('0x3d')]][_0xd351('0x38')]=!![];agents[_0x24ee0f[_0xd351('0x3d')]]['transfertype']=_0xd351('0x45');agents[_0x24ee0f[_0xd351('0x3d')]][_0xd351('0x46')]=_0x24ee0f[_0xd351('0x47')];agents[_0x24ee0f['origtransfereruniqueid']]['transferuniqueid']=_0x24ee0f[_0xd351('0x3f')];}if(_0x24ee0f[_0xd351('0x48')]&&agents[_0x24ee0f[_0xd351('0x48')]]){agents[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x41')]=0x1;transfers[_0x24ee0f[_0xd351('0x48')]]=_[_0xd351('0x42')](agents[_0x24ee0f['transfertargetuniqueid']]);transfers[_0x24ee0f[_0xd351('0x48')]]['calleridnum']=agents[_0x24ee0f['origtransfereruniqueid']][_0xd351('0x7')];transfers[_0x24ee0f[_0xd351('0x48')]]['calleridname']=agents[_0x24ee0f[_0xd351('0x3d')]]['calleridname'];transfers[_0x24ee0f['transfertargetuniqueid']]['agentcalledAt']=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x2b')]=utils['now']();transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x27')]=0x0;transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x41')]=0x2;}}}catch(_0x2375db){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x49'),_0x24ee0f[_0xd351('0x3d')]),_0x2375db);}};exports[_0xd351('0x4a')]=function(_0x18c261){try{utils['debug'](util[_0xd351('0x2')](_0xd351('0x4b'),_0x18c261[_0xd351('0x3')]),_0x18c261);if(agents[_0x18c261[_0xd351('0x3')]]&&agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]==='timeout'){if(_0x18c261[_0xd351('0x4c')]==='21'){agents[_0x18c261[_0xd351('0x3')]]['reason']='rejected';agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]=_0xd351('0x4d');}utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],agents[_0x18c261['uniqueid']][_0xd351('0x1f')],agents[_0x18c261[_0xd351('0x3')]]['lastevent']));writeDB(agents[_0x18c261[_0xd351('0x3')]]);var _0x58eed5=unanswered[_0xd351('0x4f')](_0x18c261['uniqueid']);if(_0x58eed5>-0x1){unanswered[_0xd351('0x50')](_0x58eed5,0x1);}}if(transfers[_0x18c261[_0xd351('0x3')]]){transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0xc')]=!![];transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')]=utils[_0xd351('0x15')]();transfers[_0x18c261['uniqueid']][_0xd351('0x28')]=utils[_0xd351('0x51')](transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')],transfers[_0x18c261[_0xd351('0x3')]]['agentconnectAt']);transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]=_0xd351('0x52');transfers[_0x18c261['uniqueid']][_0xd351('0x8')]=_0xd351('0x53');utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],transfers[_0x18c261[_0xd351('0x3')]]['reason'],transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]));writeDB(transfers[_0x18c261['uniqueid']],!![]);}if(agents[_0x18c261[_0xd351('0x3')]]&&agents[_0x18c261['uniqueid']]['agentconnectAt']){agents[_0x18c261['uniqueid']][_0xd351('0xc')]=!![];agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')]=utils['now']();agents[_0x18c261[_0xd351('0x3')]]['talktime']=utils[_0xd351('0x51')](agents[_0x18c261['uniqueid']][_0xd351('0x34')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x2b')]);agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]=agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x38')]?_0xd351('0x38'):_0xd351('0x52');agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]=_0xd351('0x53');utils['info'](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],agents[_0x18c261['uniqueid']][_0xd351('0x1f')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]));writeDB(agents[_0x18c261[_0xd351('0x3')]]);}}catch(_0x4a4b25){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][hangup]',_0x18c261[_0xd351('0x3')]),_0x4a4b25);}};
\ No newline at end of file
index ba95eb7..1abd329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6050=['DOCUMENTATION','error','newstate','[%s][calls][newstate]','channelstate','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','userfield','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','[%s][calls][varset]','variable','xmd-originatecalleridnum','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','xmd-queue','xmcs-queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','appdata','cdr','split','substring','lastIndexOf','includes','hangup','execif','gotoif','lastdata','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','context','exten','now'];(function(_0x1b1c9d,_0x250676){var _0x5a5f7c=function(_0x47b33d){while(--_0x47b33d){_0x1b1c9d['push'](_0x1b1c9d['shift']());}};_0x5a5f7c(++_0x250676);}(_0x6050,0x196));var _0x0605=function(_0x274182,_0x103cbb){_0x274182=_0x274182-0x0;var _0x10467a=_0x6050[_0x274182];return _0x10467a;};'use strict';var _=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var utils=require(_0x0605('0x2'));var transfers=require(_0x0605('0x3'));var dispositions=[_0x0605('0x4'),_0x0605('0x5'),'FAILED',_0x0605('0x4'),_0x0605('0x4'),_0x0605('0x4'),'ANSWERED','BUSY','FAILED',_0x0605('0x5'),'FAILED'];var channels={};function writeDB(_0x58f7d2){var _0x5660ad;if(transfers[_0x0605('0x6')][_0x58f7d2[_0x0605('0x7')]]){_0x5660ad=_0x58f7d2[_0x0605('0x7')];_0x58f7d2[_0x0605('0x7')]=transfers[_0x0605('0x6')][_0x58f7d2['uniqueid']][_0x0605('0x8')];}utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0xb'),_0x58f7d2[_0x0605('0x7')],_0x58f7d2[_0x0605('0xc')],_0x58f7d2[_0x0605('0xd')],_0x58f7d2[_0x0605('0xe')],_0x58f7d2[_0x0605('0xf')],_0x58f7d2[_0x0605('0x10')],_0x58f7d2[_0x0605('0x11')],_0x58f7d2[_0x0605('0x12')]));if(_0x58f7d2[_0x0605('0x13')]){utils[_0x0605('0x14')](_0x58f7d2[_0x0605('0x13')])[_0x0605('0x15')](function(_0x169a70){if(_0x169a70){_0x58f7d2[_0x0605('0x16')]=_0x169a70['id'];}utils[_0x0605('0x17')]('CreateVoiceCallReport',_0x58f7d2);});}else{utils[_0x0605('0x17')](_0x0605('0x18'),_0x58f7d2);}if(channels[_0x58f7d2[_0x0605('0x7')]]){delete channels[_0x58f7d2['uniqueid']];}else if(_0x5660ad&&channels[_0x5660ad]){if(!transfers['blinds'][_0x5660ad][_0x0605('0x19')])delete transfers[_0x0605('0x6')][_0x5660ad];delete channels[_0x5660ad];}}exports[_0x0605('0x1a')]=function(_0x2d46ef){try{utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x1c'),_0x2d46ef[_0x0605('0x7')]),_0x2d46ef);if(_0x2d46ef[_0x0605('0x7')]==_0x2d46ef[_0x0605('0x1d')]&&_0x2d46ef[_0x0605('0xc')]!=_0x0605('0x1e')){utils[_0x0605('0x9')](util[_0x0605('0xa')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x2d46ef[_0x0605('0x7')],_0x2d46ef[_0x0605('0x1f')],_0x2d46ef[_0x0605('0x20')]));channels[_0x2d46ef[_0x0605('0x7')]]={'uniqueid':_0x2d46ef[_0x0605('0x7')],'accountcode':_0x2d46ef[_0x0605('0x13')],'source':_0x2d46ef[_0x0605('0x10')],'destination':_0x2d46ef[_0x0605('0x20')],'destinationcontext':_0x2d46ef[_0x0605('0x1f')],'channel':_0x2d46ef['channel'],'starttime':utils[_0x0605('0x21')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x0605('0x22')};}}catch(_0x118e9c){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x1c'),_0x2d46ef[_0x0605('0x7')]),_0x118e9c);}};exports[_0x0605('0x24')]=function(_0x1ae3db){try{utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x25'),_0x1ae3db[_0x0605('0x7')]),_0x1ae3db);if(!_['isNil'](channels[_0x1ae3db[_0x0605('0x7')]])&&_0x1ae3db[_0x0605('0x26')]==0x6){utils['info'](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x1ae3db[_0x0605('0x7')],_0x1ae3db[_0x0605('0x1f')],_0x1ae3db[_0x0605('0xc')]));if(_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x7')]][_0x0605('0x28')])){channels[_0x1ae3db['uniqueid']][_0x0605('0x28')]=utils['now']();}}else if(!_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x1d')]])&&_0x1ae3db[_0x0605('0x26')]==0x6&&_0x1ae3db[_0x0605('0x1f')]!=_0x0605('0x29')){utils[_0x0605('0x9')](util['format'](_0x0605('0x2a'),_0x1ae3db[_0x0605('0x7')],_0x1ae3db[_0x0605('0x1d')],_0x1ae3db[_0x0605('0x1f')],_0x1ae3db[_0x0605('0xc')]));channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x13')]=_0x1ae3db[_0x0605('0x13')];channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2b')]=_0x1ae3db[_0x0605('0xc')];if(_[_0x0605('0x27')](channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2c')])){channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2c')]=utils[_0x0605('0x21')]();}channels[_0x1ae3db[_0x0605('0x1d')]][_0x0605('0x2d')]=dispositions[_[_0x0605('0x2e')](_0x1ae3db[_0x0605('0x26')])]||_0x0605('0x2f');}}catch(_0x32a979){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x25'),_0x1ae3db[_0x0605('0x7')]),_0x32a979);}};exports['hangup']=function(_0x259102){try{if(!_[_0x0605('0x27')](channels[_0x259102['uniqueid']])){utils[_0x0605('0x1b')](util[_0x0605('0xa')]('[%s][calls][hangup]',_0x259102[_0x0605('0x7')]),_0x259102);if(_[_0x0605('0x27')](channels[_0x259102[_0x0605('0x7')]][_0x0605('0x30')])){channels[_0x259102[_0x0605('0x7')]][_0x0605('0x30')]=_0x259102['calleridname']+'\x20<'+_0x259102['calleridnum']+'>';}utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x31'),_0x259102['uniqueid'],channels[_0x259102[_0x0605('0x7')]]['callerid'],_0x259102[_0x0605('0x32')]));channels[_0x259102[_0x0605('0x7')]][_0x0605('0x33')]=utils[_0x0605('0x21')]();channels[_0x259102[_0x0605('0x7')]][_0x0605('0x34')]=utils[_0x0605('0x35')](channels[_0x259102[_0x0605('0x7')]][_0x0605('0x33')],channels[_0x259102[_0x0605('0x7')]]['starttime']);channels[_0x259102[_0x0605('0x7')]]['billableseconds']=channels[_0x259102[_0x0605('0x7')]][_0x0605('0x2c')]?utils[_0x0605('0x35')](channels[_0x259102['uniqueid']]['endtime'],channels[_0x259102[_0x0605('0x7')]]['answertime']):0x0;writeDB(channels[_0x259102[_0x0605('0x7')]]);}}catch(_0x52f4b6){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x36'),_0x259102[_0x0605('0x7')]),_0x52f4b6);}};exports[_0x0605('0x37')]=function(_0x1fdd42){try{if(!_[_0x0605('0x27')](channels[_0x1fdd42[_0x0605('0x38')]])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x39'),_0x1fdd42['origtransfereruniqueid']),_0x1fdd42);if(channels[_0x1fdd42['localtwolinkedid']][_0x0605('0xc')]==_0x1fdd42['transfereechannel']){utils[_0x0605('0x9')](util[_0x0605('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x1fdd42[_0x0605('0x3a')],_0x1fdd42[_0x0605('0x38')],_0x1fdd42['secondtransfererchannel']));channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x2b')]=_0x1fdd42['secondtransfererchannel'];channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x3b')]='_attended';}else if(channels[_0x1fdd42[_0x0605('0x38')]]['channel']=_0x1fdd42['transfertargetchannel']){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x3c'),_0x1fdd42[_0x0605('0x3a')],_0x1fdd42[_0x0605('0x38')],_0x1fdd42[_0x0605('0x3d')]));channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x2b')]=_0x1fdd42['origtransfererchannel'];channels[_0x1fdd42[_0x0605('0x38')]][_0x0605('0x3b')]=_0x0605('0x3e');}}}catch(_0x483c20){utils[_0x0605('0x23')](util[_0x0605('0xa')](_0x0605('0x39'),_0x1fdd42[_0x0605('0x3a')]),_0x483c20);}};exports[_0x0605('0x3f')]=function(_0x86434d){try{if(!_[_0x0605('0x27')](channels[_0x86434d[_0x0605('0x7')]])){utils[_0x0605('0x1b')](util['format'](_0x0605('0x40'),_0x86434d[_0x0605('0x7')]),_0x86434d);channels[_0x86434d[_0x0605('0x7')]][_0x0605('0x41')]=utils[_0x0605('0x21')]();utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x42'),_0x86434d[_0x0605('0x7')],channels[_0x86434d[_0x0605('0x7')]]['musiconholdstartAt']));}}catch(_0x5a2c76){utils['error'](util[_0x0605('0xa')](_0x0605('0x40'),_0x86434d[_0x0605('0x7')]),_0x5a2c76);}};exports[_0x0605('0x43')]=function(_0xbd755e){try{if(!_[_0x0605('0x27')](channels[_0xbd755e['uniqueid']])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x44'),_0xbd755e[_0x0605('0x7')]),_0xbd755e);if(!_['isNil'](channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')])){channels[_0xbd755e[_0x0605('0x7')]]['mohtime']+=utils['diffTime'](utils[_0x0605('0x21')](),channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')]);utils['info'](util['format'](_0x0605('0x45'),_0xbd755e['uniqueid'],channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x46')]));delete channels[_0xbd755e[_0x0605('0x7')]][_0x0605('0x41')];}}}catch(_0x248ecc){utils[_0x0605('0x23')](util[_0x0605('0xa')]('[%s][calls][musiconholdstop]',_0xbd755e[_0x0605('0x7')]),_0x248ecc);}};exports['varset']=function(_0x40dd01){try{if(!_['isNil'](channels[_0x40dd01[_0x0605('0x7')]])){utils[_0x0605('0x1b')](util[_0x0605('0xa')](_0x0605('0x47'),_0x40dd01['uniqueid']),_0x40dd01);if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x49')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x4b')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01['variable'][_0x0605('0x4c')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x4d'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x4e')]=_0x40dd01['value'];channels[_0x40dd01['uniqueid']]['callerid']='\x22'+_0x40dd01[_0x0605('0x4a')]+_0x0605('0x4f')+_0x40dd01[_0x0605('0x4a')]+'>';}if(!_['isNil'](_0x40dd01['variable'][_0x0605('0x50')])||!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x51')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x52'),_0x40dd01[_0x0605('0x7')],!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x50')])?_0x0605('0x50'):'xmd-callerid',_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x30')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')]['xmd-queue'])||!_[_0x0605('0x27')](_0x40dd01['variable']['xmcs-queue'])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x52'),_0x40dd01[_0x0605('0x7')],!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x53')])?_0x0605('0x53'):_0x0605('0x54'),_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01['uniqueid']]['lastapplication']='Queue';channels[_0x40dd01['uniqueid']]['lastdata']=_0x40dd01[_0x0605('0x4a')];channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0xd')]=!![];}if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x55')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x56'),_0x40dd01[_0x0605('0x7')],_0x40dd01['value']));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x57')]=_0x40dd01[_0x0605('0x4a')];}if(!_['isNil'](_0x40dd01['variable']['xmd-cdrtype'])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x58'),_0x40dd01[_0x0605('0x7')],_0x40dd01['value']));channels[_0x40dd01['uniqueid']][_0x0605('0x59')]=_0x40dd01[_0x0605('0x4a')];}if(!_['isNil'](_0x40dd01[_0x0605('0x48')][_0x0605('0x5a')])){utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x5b'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01[_0x0605('0x7')]][_0x0605('0x5c')]=_0x40dd01[_0x0605('0x4a')];}if(!_[_0x0605('0x27')](_0x40dd01[_0x0605('0x48')][_0x0605('0x5d')])){utils['info'](util['format'](_0x0605('0x5e'),_0x40dd01[_0x0605('0x7')],_0x40dd01[_0x0605('0x4a')]));channels[_0x40dd01['uniqueid']]['sipcallid']=_0x40dd01[_0x0605('0x4a')];}}}catch(_0x5f21b2){utils['error'](util[_0x0605('0xa')](_0x0605('0x47'),_0x40dd01[_0x0605('0x7')]),_0x5f21b2);}};exports['newexten']=function(_0x5963c9){try{if(!_['isNil'](channels[_0x5963c9[_0x0605('0x7')]])){utils['debug'](util[_0x0605('0xa')](_0x0605('0x5f'),_0x5963c9[_0x0605('0x7')]),_0x5963c9);utils[_0x0605('0x9')](util[_0x0605('0xa')](_0x0605('0x60'),_0x5963c9[_0x0605('0x7')],_0x5963c9[_0x0605('0x61')],_0x5963c9['appdata']));if(_0x5963c9['application'][_0x0605('0x62')]()==_0x0605('0x63')&&_['startsWith'](_0x5963c9[_0x0605('0x64')]['toLowerCase'](),_0x0605('0x65'))){var _0x2677b8=_0x5963c9['appdata'][_0x0605('0x66')]('=');var _0x5ad670=_0x2677b8[0x0][_0x0605('0x67')](_0x2677b8[0x0][_0x0605('0x68')]('(')+0x1,_0x2677b8[0x0][_0x0605('0x68')](')'));var _0xfc3687=_0x2677b8[0x1];channels[_0x5963c9['uniqueid']][_0x5ad670]=_0xfc3687;}if(!_[_0x0605('0x69')]([_0x0605('0x6a'),'noop',_0x0605('0x6b'),_0x0605('0x63'),_0x0605('0x6c')],_0x5963c9[_0x0605('0x61')][_0x0605('0x62')]())){channels[_0x5963c9[_0x0605('0x7')]]['lastapplication']=_0x5963c9['application'];channels[_0x5963c9[_0x0605('0x7')]][_0x0605('0x6d')]=_0x5963c9[_0x0605('0x64')];}}}catch(_0x4302fb){utils['error'](util[_0x0605('0xa')](_0x0605('0x5f'),_0x5963c9[_0x0605('0x7')]),_0x4302fb);}};
\ No newline at end of file
+var _0x89b2=['[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','\x22\x20<','xmd-callerid-preview','variable','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','startsWith','appdata','cdr','substring','lastIndexOf','includes','hangup','execif','set','gotoif','lastdata','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','membername','interface','lastevent','accountcode','then','request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','format','context','exten','calleridnum','error','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','now','toNumber','ANSWERED','[%s][calls][newstate]','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','secondtransfererchannel','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','userfield','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x89b2,0x1de));var _0x289b=function(_0x53fc13,_0x5e225d){_0x53fc13=_0x53fc13-0x0;var _0x5e5a5e=_0x89b2[_0x53fc13];return _0x5e5a5e;};'use strict';var _=require(_0x289b('0x0'));var util=require('util');var utils=require(_0x289b('0x1'));var transfers=require(_0x289b('0x2'));var dispositions=[_0x289b('0x3'),_0x289b('0x4'),_0x289b('0x4'),'NO\x20ANSWER',_0x289b('0x3'),'NO\x20ANSWER','ANSWERED',_0x289b('0x5'),_0x289b('0x4'),_0x289b('0x4'),_0x289b('0x4')];var channels={};function writeDB(_0x15efe5){var _0x3be269;if(transfers[_0x289b('0x6')][_0x15efe5[_0x289b('0x7')]]){_0x3be269=_0x15efe5[_0x289b('0x7')];_0x15efe5[_0x289b('0x7')]=transfers['blinds'][_0x15efe5[_0x289b('0x7')]][_0x289b('0x8')];}utils[_0x289b('0x9')](util['format'](_0x289b('0xa'),_0x15efe5['uniqueid'],_0x15efe5['channel'],_0x15efe5['queue'],_0x15efe5[_0x289b('0xb')],_0x15efe5[_0x289b('0xc')],_0x15efe5['calleridnum'],_0x15efe5['connectedlinenum'],_0x15efe5[_0x289b('0xd')]));if(_0x15efe5[_0x289b('0xe')]){utils['getUserByInternal'](_0x15efe5[_0x289b('0xe')])[_0x289b('0xf')](function(_0x173c20){if(_0x173c20){_0x15efe5['UserId']=_0x173c20['id'];}utils[_0x289b('0x10')]('CreateVoiceCallReport',_0x15efe5);});}else{utils[_0x289b('0x10')](_0x289b('0x11'),_0x15efe5);}if(channels[_0x15efe5[_0x289b('0x7')]]){delete channels[_0x15efe5[_0x289b('0x7')]];}else if(_0x3be269&&channels[_0x3be269]){if(!transfers[_0x289b('0x6')][_0x3be269][_0x289b('0x12')])delete transfers['blinds'][_0x3be269];delete channels[_0x3be269];}}exports['newchannel']=function(_0xa5dab1){try{utils[_0x289b('0x13')](util['format'](_0x289b('0x14'),_0xa5dab1[_0x289b('0x7')]),_0xa5dab1);if(_0xa5dab1[_0x289b('0x7')]==_0xa5dab1[_0x289b('0x15')]&&_0xa5dab1[_0x289b('0x16')]!=_0x289b('0x17')){utils[_0x289b('0x9')](util[_0x289b('0x18')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0xa5dab1['uniqueid'],_0xa5dab1[_0x289b('0x19')],_0xa5dab1[_0x289b('0x1a')]));channels[_0xa5dab1[_0x289b('0x7')]]={'uniqueid':_0xa5dab1[_0x289b('0x7')],'accountcode':_0xa5dab1[_0x289b('0xe')],'source':_0xa5dab1[_0x289b('0x1b')],'destination':_0xa5dab1[_0x289b('0x1a')],'destinationcontext':_0xa5dab1[_0x289b('0x19')],'channel':_0xa5dab1['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x289b('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x43619e){utils[_0x289b('0x1c')](util['format'](_0x289b('0x14'),_0xa5dab1[_0x289b('0x7')]),_0x43619e);}};exports['newstate']=function(_0x2fc1cf){try{utils[_0x289b('0x13')](util[_0x289b('0x18')]('[%s][calls][newstate]',_0x2fc1cf[_0x289b('0x7')]),_0x2fc1cf);if(!_[_0x289b('0x1d')](channels[_0x2fc1cf[_0x289b('0x7')]])&&_0x2fc1cf[_0x289b('0x1e')]==0x6){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x1f'),_0x2fc1cf[_0x289b('0x7')],_0x2fc1cf[_0x289b('0x19')],_0x2fc1cf['channel']));if(_[_0x289b('0x1d')](channels[_0x2fc1cf[_0x289b('0x7')]][_0x289b('0x20')])){channels[_0x2fc1cf['uniqueid']][_0x289b('0x20')]=utils['now']();}}else if(!_[_0x289b('0x1d')](channels[_0x2fc1cf[_0x289b('0x15')]])&&_0x2fc1cf['channelstate']==0x6&&_0x2fc1cf[_0x289b('0x19')]!=_0x289b('0x21')){utils['info'](util[_0x289b('0x18')](_0x289b('0x22'),_0x2fc1cf['uniqueid'],_0x2fc1cf[_0x289b('0x15')],_0x2fc1cf['context'],_0x2fc1cf['channel']));channels[_0x2fc1cf[_0x289b('0x15')]]['accountcode']=_0x2fc1cf['accountcode'];channels[_0x2fc1cf[_0x289b('0x15')]][_0x289b('0x23')]=_0x2fc1cf[_0x289b('0x16')];if(_[_0x289b('0x1d')](channels[_0x2fc1cf['linkedid']][_0x289b('0x24')])){channels[_0x2fc1cf[_0x289b('0x15')]][_0x289b('0x24')]=utils[_0x289b('0x25')]();}channels[_0x2fc1cf['linkedid']]['disposition']=dispositions[_[_0x289b('0x26')](_0x2fc1cf['channelstate'])]||_0x289b('0x27');}}catch(_0x5eb85d){utils[_0x289b('0x1c')](util[_0x289b('0x18')](_0x289b('0x28'),_0x2fc1cf[_0x289b('0x7')]),_0x5eb85d);}};exports['hangup']=function(_0x33acba){try{if(!_[_0x289b('0x1d')](channels[_0x33acba[_0x289b('0x7')]])){utils[_0x289b('0x13')](util['format'](_0x289b('0x29'),_0x33acba[_0x289b('0x7')]),_0x33acba);if(_[_0x289b('0x1d')](channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x2a')])){channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x2a')]=_0x33acba[_0x289b('0x2b')]+'\x20<'+_0x33acba[_0x289b('0x1b')]+'>';}utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x2c'),_0x33acba[_0x289b('0x7')],channels[_0x33acba['uniqueid']]['callerid'],_0x33acba[_0x289b('0x2d')]));channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x2e')]=utils[_0x289b('0x25')]();channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x2f')]=utils[_0x289b('0x30')](channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x2e')],channels[_0x33acba[_0x289b('0x7')]][_0x289b('0x31')]);channels[_0x33acba[_0x289b('0x7')]]['billableseconds']=channels[_0x33acba['uniqueid']][_0x289b('0x24')]?utils['diffTime'](channels[_0x33acba['uniqueid']]['endtime'],channels[_0x33acba[_0x289b('0x7')]]['answertime']):0x0;writeDB(channels[_0x33acba[_0x289b('0x7')]]);}}catch(_0x52f30c){utils['error'](util[_0x289b('0x18')]('[%s][calls][hangup]',_0x33acba[_0x289b('0x7')]),_0x52f30c);}};exports['attendedtransfer']=function(_0x14da39){try{if(!_[_0x289b('0x1d')](channels[_0x14da39[_0x289b('0x32')]])){utils['debug'](util['format'](_0x289b('0x33'),_0x14da39[_0x289b('0x34')]),_0x14da39);if(channels[_0x14da39[_0x289b('0x32')]][_0x289b('0x16')]==_0x14da39[_0x289b('0x35')]){utils['info'](util[_0x289b('0x18')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x14da39[_0x289b('0x34')],_0x14da39['localtwolinkedid'],_0x14da39['secondtransfererchannel']));channels[_0x14da39['localtwolinkedid']][_0x289b('0x23')]=_0x14da39[_0x289b('0x36')];channels[_0x14da39['localtwolinkedid']]['userfield']=_0x289b('0x37');}else if(channels[_0x14da39[_0x289b('0x32')]]['channel']=_0x14da39[_0x289b('0x38')]){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x39'),_0x14da39[_0x289b('0x34')],_0x14da39['localtwolinkedid'],_0x14da39[_0x289b('0x3a')]));channels[_0x14da39['localtwolinkedid']][_0x289b('0x23')]=_0x14da39[_0x289b('0x3a')];channels[_0x14da39[_0x289b('0x32')]][_0x289b('0x3b')]=_0x289b('0x37');}}}catch(_0x332cc8){utils[_0x289b('0x1c')](util[_0x289b('0x18')](_0x289b('0x33'),_0x14da39[_0x289b('0x34')]),_0x332cc8);}};exports[_0x289b('0x3c')]=function(_0xb39153){try{if(!_[_0x289b('0x1d')](channels[_0xb39153[_0x289b('0x7')]])){utils[_0x289b('0x13')](util[_0x289b('0x18')](_0x289b('0x3d'),_0xb39153['uniqueid']),_0xb39153);channels[_0xb39153[_0x289b('0x7')]][_0x289b('0x3e')]=utils[_0x289b('0x25')]();utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x3f'),_0xb39153[_0x289b('0x7')],channels[_0xb39153[_0x289b('0x7')]][_0x289b('0x3e')]));}}catch(_0x277221){utils[_0x289b('0x1c')](util[_0x289b('0x18')](_0x289b('0x3d'),_0xb39153['uniqueid']),_0x277221);}};exports[_0x289b('0x40')]=function(_0x28ea66){try{if(!_['isNil'](channels[_0x28ea66[_0x289b('0x7')]])){utils[_0x289b('0x13')](util[_0x289b('0x18')](_0x289b('0x41'),_0x28ea66[_0x289b('0x7')]),_0x28ea66);if(!_[_0x289b('0x1d')](channels[_0x28ea66['uniqueid']][_0x289b('0x3e')])){channels[_0x28ea66['uniqueid']][_0x289b('0x42')]+=utils[_0x289b('0x30')](utils[_0x289b('0x25')](),channels[_0x28ea66['uniqueid']][_0x289b('0x3e')]);utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x43'),_0x28ea66[_0x289b('0x7')],channels[_0x28ea66[_0x289b('0x7')]][_0x289b('0x42')]));delete channels[_0x28ea66[_0x289b('0x7')]][_0x289b('0x3e')];}}}catch(_0x3c820e){utils[_0x289b('0x1c')](util[_0x289b('0x18')]('[%s][calls][musiconholdstop]',_0x28ea66[_0x289b('0x7')]),_0x3c820e);}};exports[_0x289b('0x44')]=function(_0x57d237){try{if(!_[_0x289b('0x1d')](channels[_0x57d237[_0x289b('0x7')]])){utils[_0x289b('0x13')](util[_0x289b('0x18')](_0x289b('0x45'),_0x57d237['uniqueid']),_0x57d237);if(!_['isNil'](_0x57d237['variable'][_0x289b('0x46')])){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x47'),_0x57d237[_0x289b('0x7')],_0x57d237[_0x289b('0x48')]));channels[_0x57d237['uniqueid']][_0x289b('0x49')]=_0x57d237[_0x289b('0x48')];}if(!_[_0x289b('0x1d')](_0x57d237['variable'][_0x289b('0x4a')])){utils[_0x289b('0x9')](util[_0x289b('0x18')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x57d237['uniqueid'],_0x57d237[_0x289b('0x48')]));channels[_0x57d237[_0x289b('0x7')]]['destination']=_0x57d237[_0x289b('0x48')];channels[_0x57d237[_0x289b('0x7')]][_0x289b('0x2a')]='\x22'+_0x57d237[_0x289b('0x48')]+_0x289b('0x4b')+_0x57d237[_0x289b('0x48')]+'>';}if(!_[_0x289b('0x1d')](_0x57d237['variable'][_0x289b('0x4c')])||!_['isNil'](_0x57d237[_0x289b('0x4d')][_0x289b('0x4e')])){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x4f'),_0x57d237['uniqueid'],!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x4c')])?_0x289b('0x4c'):_0x289b('0x4e'),_0x57d237['value']));channels[_0x57d237['uniqueid']][_0x289b('0x2a')]=_0x57d237[_0x289b('0x48')];}if(!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x50')])||!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x51')])){utils[_0x289b('0x9')](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x57d237['uniqueid'],!_['isNil'](_0x57d237[_0x289b('0x4d')][_0x289b('0x50')])?'xmd-queue':_0x289b('0x51'),_0x57d237[_0x289b('0x48')]));channels[_0x57d237['uniqueid']][_0x289b('0x52')]=_0x289b('0x53');channels[_0x57d237[_0x289b('0x7')]]['lastdata']=_0x57d237[_0x289b('0x48')];channels[_0x57d237[_0x289b('0x7')]][_0x289b('0x54')]=!![];}if(!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x55')])){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x56'),_0x57d237['uniqueid'],_0x57d237[_0x289b('0x48')]));channels[_0x57d237['uniqueid']][_0x289b('0x57')]=_0x57d237[_0x289b('0x48')];}if(!_['isNil'](_0x57d237[_0x289b('0x4d')][_0x289b('0x58')])){utils[_0x289b('0x9')](util[_0x289b('0x18')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x57d237[_0x289b('0x7')],_0x57d237[_0x289b('0x48')]));channels[_0x57d237['uniqueid']][_0x289b('0x59')]=_0x57d237[_0x289b('0x48')];}if(!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x5a')])){utils['info'](util[_0x289b('0x18')](_0x289b('0x5b'),_0x57d237[_0x289b('0x7')],_0x57d237[_0x289b('0x48')]));channels[_0x57d237[_0x289b('0x7')]]['routeid']=_0x57d237[_0x289b('0x48')];}if(!_[_0x289b('0x1d')](_0x57d237[_0x289b('0x4d')][_0x289b('0x5c')])){utils[_0x289b('0x9')](util[_0x289b('0x18')](_0x289b('0x5d'),_0x57d237['uniqueid'],_0x57d237[_0x289b('0x48')]));channels[_0x57d237[_0x289b('0x7')]][_0x289b('0x5c')]=_0x57d237['value'];}}}catch(_0x568783){utils[_0x289b('0x1c')](util[_0x289b('0x18')](_0x289b('0x45'),_0x57d237[_0x289b('0x7')]),_0x568783);}};exports[_0x289b('0x5e')]=function(_0x403c1b){try{if(!_[_0x289b('0x1d')](channels[_0x403c1b['uniqueid']])){utils[_0x289b('0x13')](util[_0x289b('0x18')]('[%s][calls][newexten]',_0x403c1b[_0x289b('0x7')]),_0x403c1b);utils[_0x289b('0x9')](util['format'](_0x289b('0x5f'),_0x403c1b[_0x289b('0x7')],_0x403c1b[_0x289b('0x60')],_0x403c1b['appdata']));if(_0x403c1b[_0x289b('0x60')][_0x289b('0x61')]()=='set'&&_[_0x289b('0x62')](_0x403c1b[_0x289b('0x63')][_0x289b('0x61')](),_0x289b('0x64'))){var _0x5bb03a=_0x403c1b[_0x289b('0x63')]['split']('=');var _0xb52208=_0x5bb03a[0x0][_0x289b('0x65')](_0x5bb03a[0x0][_0x289b('0x66')]('(')+0x1,_0x5bb03a[0x0]['lastIndexOf'](')'));var _0x1321ea=_0x5bb03a[0x1];channels[_0x403c1b[_0x289b('0x7')]][_0xb52208]=_0x1321ea;}if(!_[_0x289b('0x67')]([_0x289b('0x68'),'noop',_0x289b('0x69'),_0x289b('0x6a'),_0x289b('0x6b')],_0x403c1b[_0x289b('0x60')][_0x289b('0x61')]())){channels[_0x403c1b['uniqueid']][_0x289b('0x52')]=_0x403c1b[_0x289b('0x60')];channels[_0x403c1b[_0x289b('0x7')]][_0x289b('0x6c')]=_0x403c1b[_0x289b('0x63')];}}}catch(_0x9dce81){utils['error'](util[_0x289b('0x18')]('[%s][calls][newexten]',_0x403c1b[_0x289b('0x7')]),_0x9dce81);}};
\ No newline at end of file
index 4be78bd..e3cb8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8450=['error','close','[core]\x20close','managerevent','./utils','connect','info','shutdown','fullybooted','[core]\x20fullybooted'];(function(_0x4e080b,_0x49df0f){var _0x2bcc2a=function(_0x1e8e2c){while(--_0x1e8e2c){_0x4e080b['push'](_0x4e080b['shift']());}};_0x2bcc2a(++_0x49df0f);}(_0x8450,0x1da));var _0x0845=function(_0x2f1847,_0x14691c){_0x2f1847=_0x2f1847-0x0;var _0x45dbfb=_0x8450[_0x2f1847];return _0x45dbfb;};'use strict';var utils=require(_0x0845('0x0'));exports[_0x0845('0x1')]=function(){utils[_0x0845('0x2')]('[core]\x20connected');};exports[_0x0845('0x3')]=function(){utils[_0x0845('0x2')]('[core]\x20shutdown');};exports[_0x0845('0x4')]=function(){utils['info'](_0x0845('0x5'));};exports['error']=function(_0x11da17){utils[_0x0845('0x6')]('[core]\x20error',_0x11da17);};exports[_0x0845('0x7')]=function(){utils[_0x0845('0x2')](_0x0845('0x8'));};exports[_0x0845('0x9')]=function(_0x32e113){};
\ No newline at end of file
+var _0xdd73=['./utils','connect','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close'];(function(_0x2afcc6,_0x4d52cc){var _0x2ec1ca=function(_0x38dc66){while(--_0x38dc66){_0x2afcc6['push'](_0x2afcc6['shift']());}};_0x2ec1ca(++_0x4d52cc);}(_0xdd73,0x14a));var _0x3dd7=function(_0x48f1db,_0x554c57){_0x48f1db=_0x48f1db-0x0;var _0x27de48=_0xdd73[_0x48f1db];return _0x27de48;};'use strict';var utils=require(_0x3dd7('0x0'));exports[_0x3dd7('0x1')]=function(){utils[_0x3dd7('0x2')]('[core]\x20connected');};exports[_0x3dd7('0x3')]=function(){utils[_0x3dd7('0x2')](_0x3dd7('0x4'));};exports[_0x3dd7('0x5')]=function(){utils['info'](_0x3dd7('0x6'));};exports[_0x3dd7('0x7')]=function(_0x88ce77){utils[_0x3dd7('0x7')](_0x3dd7('0x8'),_0x88ce77);};exports[_0x3dd7('0x9')]=function(){utils[_0x3dd7('0x2')](_0x3dd7('0xa'));};exports['managerevent']=function(_0x21b90e){};
\ No newline at end of file
index c501624..d8b8c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec3a=['[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','now','complete','duration','diffTime','endtime','holdtime','answertime','billableseconds','lodash','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xec3a,0xe7));var _0xaec3=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xec3a[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xaec3('0x0'));var util=require(_0xaec3('0x1'));var utils=require(_0xaec3('0x2'));var dials={};function writeDB(_0x45c8a4){utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x5'),_0x45c8a4[_0xaec3('0x6')],_0x45c8a4['channel'],_0x45c8a4[_0xaec3('0x7')],_0x45c8a4[_0xaec3('0x8')],_0x45c8a4['connectedlinenum'],_0x45c8a4[_0xaec3('0x9')]));utils['request'](_0xaec3('0xa'),_0x45c8a4);delete dials[_0x45c8a4[_0xaec3('0x6')]];}exports[_0xaec3('0xb')]=function(_0x51d61d){try{utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0xd'),_0x51d61d[_0xaec3('0x6')]),_0x51d61d);utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0xe'),_0x51d61d[_0xaec3('0x6')],_0x51d61d[_0xaec3('0xf')],_0x51d61d[_0xaec3('0x10')]));if(_0x51d61d[_0xaec3('0xf')][_0xaec3('0x11')]()==_0xaec3('0x12')&&_[_0xaec3('0x13')](_0x51d61d[_0xaec3('0x10')]['toLowerCase'](),'cdr(routeid)')){var _0x73df28=_0x51d61d['appdata']['split']('=');dials[_0x51d61d[_0xaec3('0x6')]]={'routeId':_0x73df28[0x1]};}}catch(_0x4ed717){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0xd'),_0x51d61d['uniqueid']),_0x4ed717);}};exports[_0xaec3('0x15')]=function(_0x43198c){try{utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0x16'),_0x43198c[_0xaec3('0x6')]),_0x43198c);if(!_[_0xaec3('0x17')](_0x43198c[_0xaec3('0x18')][_0xaec3('0x19')])){utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x1a'),_0x43198c[_0xaec3('0x6')],_0x43198c[_0xaec3('0x1b')]));dials[_0x43198c[_0xaec3('0x6')]]={'routeId':_0x43198c[_0xaec3('0x1b')]};}}catch(_0x52f842){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0x16'),_0x43198c[_0xaec3('0x6')]),_0x52f842);}};exports[_0xaec3('0x1c')]=function(_0x99be5){try{if(!_['isNil'](dials[_0x99be5[_0xaec3('0x6')]])){utils['debug'](util['format'](_0xaec3('0x1d'),_0x99be5[_0xaec3('0x6')]),_0x99be5);dials[_0x99be5['uniqueid']]=_[_0xaec3('0x1e')](dials[_0x99be5[_0xaec3('0x6')]],_0x99be5);dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x1f')]=utils['now']();dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x20')]='called';utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x21'),_0x99be5[_0xaec3('0x6')],dials[_0x99be5[_0xaec3('0x6')]][_0xaec3('0x1f')]));}}catch(_0x4c55f8){utils[_0xaec3('0x14')](util[_0xaec3('0x4')](_0xaec3('0x1d'),_0x99be5['uniqueid']),_0x4c55f8);}};exports[_0xaec3('0x22')]=function(_0x52adcb){try{if(!_[_0xaec3('0x17')](dials[_0x52adcb[_0xaec3('0x6')]])){utils[_0xaec3('0xc')](util[_0xaec3('0x4')](_0xaec3('0x23'),_0x52adcb['uniqueid']),_0x52adcb);dials[_0x52adcb['uniqueid']][_0xaec3('0x9')]=_0x52adcb[_0xaec3('0x9')];if(_0x52adcb[_0xaec3('0x9')]==_0xaec3('0x24')){dials[_0x52adcb[_0xaec3('0x6')]]=_[_0xaec3('0x1e')](dials[_0x52adcb[_0xaec3('0x6')]],_0x52adcb);dials[_0x52adcb[_0xaec3('0x6')]]['answertime']=utils['now']();dials[_0x52adcb[_0xaec3('0x6')]][_0xaec3('0x20')]=_0xaec3('0x25');utils[_0xaec3('0x3')](util[_0xaec3('0x4')](_0xaec3('0x26'),_0x52adcb['uniqueid'],_0x52adcb[_0xaec3('0x9')],dials[_0x52adcb[_0xaec3('0x6')]]['answertime']));}else{utils[_0xaec3('0x3')](util[_0xaec3('0x4')]('[%s][dials][dialend]\x20dialstatus:%s',_0x52adcb[_0xaec3('0x6')],_0x52adcb[_0xaec3('0x9')]));}}}catch(_0x106ff5){utils['error'](util[_0xaec3('0x4')](_0xaec3('0x23'),_0x52adcb[_0xaec3('0x6')]),_0x106ff5);}};exports['hangup']=function(_0x3821f3){try{if(!_[_0xaec3('0x17')](dials[_0x3821f3[_0xaec3('0x6')]])){utils[_0xaec3('0xc')](util['format'](_0xaec3('0x27'),_0x3821f3[_0xaec3('0x6')]),_0x3821f3);utils['info'](util[_0xaec3('0x4')](_0xaec3('0x28'),_0x3821f3[_0xaec3('0x6')],_0x3821f3[_0xaec3('0x8')],_0x3821f3['calleridname'],_0x3821f3['cause-txt']));dials[_0x3821f3['uniqueid']]=_[_0xaec3('0x1e')](dials[_0x3821f3['uniqueid']],{'endtime':utils[_0xaec3('0x29')](),'lastevent':_0xaec3('0x2a')});dials[_0x3821f3['uniqueid']][_0xaec3('0x2b')]=utils[_0xaec3('0x2c')](dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3['uniqueid']][_0xaec3('0x1f')]);dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2e')]=utils['diffTime'](dials[_0x3821f3['uniqueid']][_0xaec3('0x2f')]||dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x1f')]);dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x30')]=dials[_0x3821f3['uniqueid']][_0xaec3('0x2f')]?utils[_0xaec3('0x2c')](dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2d')],dials[_0x3821f3[_0xaec3('0x6')]][_0xaec3('0x2f')]):0x0;writeDB(dials[_0x3821f3[_0xaec3('0x6')]]);}}catch(_0x1224b6){utils['error'](util[_0xaec3('0x4')](_0xaec3('0x27'),_0x3821f3[_0xaec3('0x6')]),_0x1224b6);}};
\ No newline at end of file
+var _0x0308=['isNil','variable','outboundrouteid','value','[%s][dials][dialbegin]','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]','hangup','[%s][dials][hangup]','calleridname','cause-txt','complete','diffTime','endtime','holdtime','billableseconds','lodash','util','./utils','info','format','channel','dialstring','calleridnum','dialstatus','request','CreateVoiceDialReport','uniqueid','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','error','[%s][dials][varset]'];(function(_0x5217a3,_0x4a4573){var _0x1447cf=function(_0x1b1ae5){while(--_0x1b1ae5){_0x5217a3['push'](_0x5217a3['shift']());}};_0x1447cf(++_0x4a4573);}(_0x0308,0x79));var _0x8030=function(_0x538c20,_0x59f772){_0x538c20=_0x538c20-0x0;var _0x4a860a=_0x0308[_0x538c20];return _0x4a860a;};'use strict';var _=require(_0x8030('0x0'));var util=require(_0x8030('0x1'));var utils=require(_0x8030('0x2'));var dials={};function writeDB(_0x49eb34){utils[_0x8030('0x3')](util[_0x8030('0x4')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x49eb34['uniqueid'],_0x49eb34[_0x8030('0x5')],_0x49eb34[_0x8030('0x6')],_0x49eb34[_0x8030('0x7')],_0x49eb34['connectedlinenum'],_0x49eb34[_0x8030('0x8')]));utils[_0x8030('0x9')](_0x8030('0xa'),_0x49eb34);delete dials[_0x49eb34[_0x8030('0xb')]];}exports[_0x8030('0xc')]=function(_0x292ee4){try{utils[_0x8030('0xd')](util[_0x8030('0x4')](_0x8030('0xe'),_0x292ee4[_0x8030('0xb')]),_0x292ee4);utils['info'](util['format'](_0x8030('0xf'),_0x292ee4[_0x8030('0xb')],_0x292ee4[_0x8030('0x10')],_0x292ee4[_0x8030('0x11')]));if(_0x292ee4[_0x8030('0x10')][_0x8030('0x12')]()==_0x8030('0x13')&&_[_0x8030('0x14')](_0x292ee4[_0x8030('0x11')][_0x8030('0x12')](),'cdr(routeid)')){var _0x194c33=_0x292ee4[_0x8030('0x11')]['split']('=');dials[_0x292ee4[_0x8030('0xb')]]={'routeId':_0x194c33[0x1]};}}catch(_0x2d1a31){utils[_0x8030('0x15')](util['format'](_0x8030('0xe'),_0x292ee4['uniqueid']),_0x2d1a31);}};exports['varset']=function(_0x31edbd){try{utils[_0x8030('0xd')](util['format'](_0x8030('0x16'),_0x31edbd['uniqueid']),_0x31edbd);if(!_[_0x8030('0x17')](_0x31edbd[_0x8030('0x18')][_0x8030('0x19')])){utils[_0x8030('0x3')](util[_0x8030('0x4')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x31edbd[_0x8030('0xb')],_0x31edbd[_0x8030('0x1a')]));dials[_0x31edbd[_0x8030('0xb')]]={'routeId':_0x31edbd[_0x8030('0x1a')]};}}catch(_0x379976){utils[_0x8030('0x15')](util[_0x8030('0x4')](_0x8030('0x16'),_0x31edbd[_0x8030('0xb')]),_0x379976);}};exports['dialbegin']=function(_0x2ffd58){try{if(!_[_0x8030('0x17')](dials[_0x2ffd58[_0x8030('0xb')]])){utils[_0x8030('0xd')](util[_0x8030('0x4')](_0x8030('0x1b'),_0x2ffd58[_0x8030('0xb')]),_0x2ffd58);dials[_0x2ffd58[_0x8030('0xb')]]=_[_0x8030('0x1c')](dials[_0x2ffd58[_0x8030('0xb')]],_0x2ffd58);dials[_0x2ffd58[_0x8030('0xb')]][_0x8030('0x1d')]=utils[_0x8030('0x1e')]();dials[_0x2ffd58[_0x8030('0xb')]][_0x8030('0x1f')]=_0x8030('0x20');utils[_0x8030('0x3')](util['format'](_0x8030('0x21'),_0x2ffd58['uniqueid'],dials[_0x2ffd58[_0x8030('0xb')]][_0x8030('0x1d')]));}}catch(_0x9ae342){utils[_0x8030('0x15')](util[_0x8030('0x4')](_0x8030('0x1b'),_0x2ffd58[_0x8030('0xb')]),_0x9ae342);}};exports[_0x8030('0x22')]=function(_0x59b90d){try{if(!_[_0x8030('0x17')](dials[_0x59b90d[_0x8030('0xb')]])){utils[_0x8030('0xd')](util[_0x8030('0x4')]('[%s][dials][dialend]',_0x59b90d[_0x8030('0xb')]),_0x59b90d);dials[_0x59b90d['uniqueid']][_0x8030('0x8')]=_0x59b90d[_0x8030('0x8')];if(_0x59b90d['dialstatus']==_0x8030('0x23')){dials[_0x59b90d[_0x8030('0xb')]]=_[_0x8030('0x1c')](dials[_0x59b90d[_0x8030('0xb')]],_0x59b90d);dials[_0x59b90d[_0x8030('0xb')]][_0x8030('0x24')]=utils[_0x8030('0x1e')]();dials[_0x59b90d[_0x8030('0xb')]]['lastevent']='connect';utils[_0x8030('0x3')](util['format'](_0x8030('0x25'),_0x59b90d['uniqueid'],_0x59b90d[_0x8030('0x8')],dials[_0x59b90d['uniqueid']][_0x8030('0x24')]));}else{utils[_0x8030('0x3')](util[_0x8030('0x4')]('[%s][dials][dialend]\x20dialstatus:%s',_0x59b90d[_0x8030('0xb')],_0x59b90d[_0x8030('0x8')]));}}}catch(_0x42edeb){utils['error'](util[_0x8030('0x4')](_0x8030('0x26'),_0x59b90d[_0x8030('0xb')]),_0x42edeb);}};exports[_0x8030('0x27')]=function(_0x46af72){try{if(!_[_0x8030('0x17')](dials[_0x46af72[_0x8030('0xb')]])){utils['debug'](util[_0x8030('0x4')](_0x8030('0x28'),_0x46af72['uniqueid']),_0x46af72);utils['info'](util[_0x8030('0x4')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x46af72['uniqueid'],_0x46af72[_0x8030('0x7')],_0x46af72[_0x8030('0x29')],_0x46af72[_0x8030('0x2a')]));dials[_0x46af72[_0x8030('0xb')]]=_['assign'](dials[_0x46af72[_0x8030('0xb')]],{'endtime':utils[_0x8030('0x1e')](),'lastevent':_0x8030('0x2b')});dials[_0x46af72[_0x8030('0xb')]]['duration']=utils[_0x8030('0x2c')](dials[_0x46af72['uniqueid']][_0x8030('0x2d')],dials[_0x46af72[_0x8030('0xb')]]['starttime']);dials[_0x46af72['uniqueid']][_0x8030('0x2e')]=utils['diffTime'](dials[_0x46af72[_0x8030('0xb')]]['answertime']||dials[_0x46af72[_0x8030('0xb')]]['endtime'],dials[_0x46af72['uniqueid']][_0x8030('0x1d')]);dials[_0x46af72[_0x8030('0xb')]][_0x8030('0x2f')]=dials[_0x46af72[_0x8030('0xb')]]['answertime']?utils[_0x8030('0x2c')](dials[_0x46af72[_0x8030('0xb')]][_0x8030('0x2d')],dials[_0x46af72['uniqueid']]['answertime']):0x0;writeDB(dials[_0x46af72[_0x8030('0xb')]]);}}catch(_0x28f328){utils[_0x8030('0x15')](util[_0x8030('0x4')](_0x8030('0x28'),_0x46af72[_0x8030('0xb')]),_0x28f328);}};
\ No newline at end of file
index 6b3f433..f2ccd41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20f1=['xdr','disabled','env','production','local','asterisk','port','username','password','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','agentcalled','debug','[%s][index][agentcalled]','agentringnoanswer','uniqueid','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','[%s][index][dialend]','dialend','asterisk-manager','../../config/environment','./utils','util'];(function(_0xa6a5d3,_0xceade7){var _0x6118d8=function(_0x4346a8){while(--_0x4346a8){_0xa6a5d3['push'](_0xa6a5d3['shift']());}};_0x6118d8(++_0xceade7);}(_0x20f1,0xce));var _0x120f=function(_0x2bc312,_0x4e3c3d){_0x2bc312=_0x2bc312-0x0;var _0x24214a=_0x20f1[_0x2bc312];return _0x24214a;};var AsteriskManager=require(_0x120f('0x0'));var config=require(_0x120f('0x1'));var utils=require(_0x120f('0x2'));var util=require(_0x120f('0x3'));var isXDREnabled=config['xdr']&&config[_0x120f('0x4')][_0x120f('0x5')]?!config[_0x120f('0x4')][_0x120f('0x5')]:!![];var isProduction=config[_0x120f('0x6')]===_0x120f('0x7')||![];var isLocalAsterisk=config[_0x120f('0x4')]&&config[_0x120f('0x4')][_0x120f('0x8')]===!![]||![];var ami=new AsteriskManager(config[_0x120f('0x9')][_0x120f('0xa')],config[_0x120f('0x9')]['ip'],config['asterisk'][_0x120f('0xb')],config[_0x120f('0x9')][_0x120f('0xc')],!![]);ami['keepConnected']();if(!isXDREnabled){utils['info'](_0x120f('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x120f('0xe')](_0x120f('0xf'));}else{var agents=require(_0x120f('0x10'));var calls=require('./calls.controller');var queues=require(_0x120f('0x11'));var recordings=require(_0x120f('0x12'));var members=require('./members.controller');var dials=require(_0x120f('0x13'));var transfers=require(_0x120f('0x14'));var core=require('./core.controller');ami['on'](_0x120f('0x15'),core[_0x120f('0x15')]);ami['on'](_0x120f('0x16'),core['shutdown']);ami['on'](_0x120f('0x17'),core[_0x120f('0x17')]);ami['on'](_0x120f('0x18'),core['error']);ami['on']('close',core[_0x120f('0x19')]);ami['on'](_0x120f('0x1a'),core['managerevent']);ami['on'](_0x120f('0x1b'),function(_0x3c35cc){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x1d'),_0x3c35cc['device']),_0x3c35cc);members[_0x120f('0x1b')](_0x3c35cc);}catch(_0x35e1be){utils['error'](util[_0x120f('0x1c')](_0x120f('0x1d'),_0x3c35cc[_0x120f('0x1e')]),_0x35e1be);}});ami['on'](_0x120f('0x1f'),function(_0x244bb5){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x21'),_0x244bb5['uniqueid']),_0x244bb5);agents[_0x120f('0x1f')](_0x244bb5);}catch(_0x38332d){utils['error'](util[_0x120f('0x1c')](_0x120f('0x21'),_0x244bb5['uniqueid']),_0x38332d);}});ami['on'](_0x120f('0x22'),function(_0xfcef89){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')]('[%s][index][agentringnoanswer]',_0xfcef89[_0x120f('0x23')]),_0xfcef89);agents[_0x120f('0x22')](_0xfcef89);}catch(_0x4fd171){utils[_0x120f('0x18')](util['format'](_0x120f('0x24'),_0xfcef89['uniqueid']),_0x4fd171);}});ami['on'](_0x120f('0x25'),function(_0x2a392f){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x26'),_0x2a392f[_0x120f('0x23')]),_0x2a392f);agents[_0x120f('0x25')](_0x2a392f);queues['agentconnect'](_0x2a392f);}catch(_0x4a97fe){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x26'),_0x2a392f[_0x120f('0x23')]),_0x4a97fe);}});ami['on'](_0x120f('0x27'),function(_0x4c469e){try{utils['debug'](util['format']('[%s][index][agentcomplete]',_0x4c469e['uniqueid']),_0x4c469e);agents[_0x120f('0x27')](_0x4c469e);queues[_0x120f('0x27')](_0x4c469e);members[_0x120f('0x27')](_0x4c469e);}catch(_0x252ba8){utils['error'](util[_0x120f('0x1c')](_0x120f('0x28'),_0x4c469e['uniqueid']),_0x252ba8);}});ami['on']('queuecallerabandon',function(_0x11000e){try{utils[_0x120f('0x20')](util['format'](_0x120f('0x29'),_0x11000e['uniqueid']),_0x11000e);agents[_0x120f('0x2a')](_0x11000e);queues[_0x120f('0x2a')](_0x11000e);}catch(_0x2bac23){utils['error'](util[_0x120f('0x1c')](_0x120f('0x29'),_0x11000e[_0x120f('0x23')]),_0x2bac23);}});ami['on']('queuecallerjoin',function(_0xf75801){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x2b'),_0xf75801[_0x120f('0x23')]),_0xf75801);queues[_0x120f('0x2c')](_0xf75801);recordings[_0x120f('0x2c')](_0xf75801);}catch(_0x5407ac){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x2b'),_0xf75801[_0x120f('0x23')]),_0x5407ac);}});ami['on'](_0x120f('0x2d'),function(_0x32c08f){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x2e'),_0x32c08f[_0x120f('0x23')]),_0x32c08f);queues[_0x120f('0x2d')](_0x32c08f);}catch(_0x4a2bcf){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x2e'),_0x32c08f[_0x120f('0x23')]),_0x4a2bcf);}});ami['on'](_0x120f('0x2f'),function(_0x431cb4){try{utils['debug'](util[_0x120f('0x1c')]('[%s][index][musiconholdstart]',_0x431cb4[_0x120f('0x23')]),_0x431cb4);queues['musiconholdstart'](_0x431cb4);calls[_0x120f('0x2f')](_0x431cb4);}catch(_0x239004){utils['error'](util[_0x120f('0x1c')](_0x120f('0x30'),_0x431cb4['uniqueid']),_0x239004);}});ami['on']('musiconholdstop',function(_0x15be81){try{utils[_0x120f('0x20')](util['format']('[%s][index][musiconholdstop]',_0x15be81[_0x120f('0x23')]),_0x15be81);queues[_0x120f('0x31')](_0x15be81);calls['musiconholdstop'](_0x15be81);}catch(_0x29277e){utils[_0x120f('0x18')](util['format']('[%s][index][musiconholdstop]',_0x15be81[_0x120f('0x23')]),_0x29277e);}});ami['on'](_0x120f('0x32'),function(_0x242403){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x33'),_0x242403['uniqueid']),_0x242403);calls[_0x120f('0x32')](_0x242403);recordings[_0x120f('0x32')](_0x242403);}catch(_0x416efd){utils['error'](util[_0x120f('0x1c')]('[%s][index][newstate]',_0x242403[_0x120f('0x23')]),_0x416efd);}});ami['on'](_0x120f('0x34'),function(_0x37854c){try{utils[_0x120f('0x20')](util['format'](_0x120f('0x35'),_0x37854c['uniqueid']),_0x37854c);calls[_0x120f('0x34')](_0x37854c);recordings['hangup'](_0x37854c);dials[_0x120f('0x34')](_0x37854c);agents[_0x120f('0x34')](_0x37854c);queues[_0x120f('0x34')](_0x37854c);}catch(_0xd5addc){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x35'),_0x37854c[_0x120f('0x23')]),_0xd5addc);}});ami['on'](_0x120f('0x36'),function(_0x445650){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x37'),_0x445650[_0x120f('0x23')]),_0x445650);members[_0x120f('0x36')](_0x445650);}catch(_0x3ad1ad){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x37'),_0x445650[_0x120f('0x23')]),_0x3ad1ad);}});ami['on'](_0x120f('0x38'),function(_0x40d6b0){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x39'),_0x40d6b0[_0x120f('0x23')]),_0x40d6b0);queues[_0x120f('0x38')](_0x40d6b0);agents[_0x120f('0x38')](_0x40d6b0);transfers[_0x120f('0x38')](_0x40d6b0);recordings['blindtransfer'](_0x40d6b0);}catch(_0x5529e4){utils['error'](util[_0x120f('0x1c')](_0x120f('0x39'),_0x40d6b0['uniqueid']),_0x5529e4);}});ami['on'](_0x120f('0x3a'),function(_0x28748a){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x3b'),_0x28748a['origtransfereruniqueid']),_0x28748a);queues[_0x120f('0x3a')](_0x28748a);transfers['attendedtransfer'](_0x28748a);agents['attendedtransfer'](_0x28748a);calls['attendedtransfer'](_0x28748a);}catch(_0x16b75d){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x3b'),_0x28748a[_0x120f('0x3c')]),_0x16b75d);}});ami['on'](_0x120f('0x3d'),function(_0x484500){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x3e'),_0x484500[_0x120f('0x23')]),_0x484500);queues[_0x120f('0x3d')](_0x484500);recordings['varset'](_0x484500);calls[_0x120f('0x3d')](_0x484500);dials['varset'](_0x484500);}catch(_0x367a0){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x3e'),_0x484500[_0x120f('0x23')]),_0x367a0);}});ami['on'](_0x120f('0x3f'),function(_0x1a710b){try{utils['debug'](util['format'](_0x120f('0x40'),_0x1a710b[_0x120f('0x23')]),_0x1a710b);calls[_0x120f('0x3f')](_0x1a710b);recordings[_0x120f('0x3f')](_0x1a710b);dials[_0x120f('0x3f')](_0x1a710b);}catch(_0x593378){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x40'),_0x1a710b[_0x120f('0x23')]),_0x593378);}});ami['on'](_0x120f('0x41'),function(_0x50b9ef){try{utils['debug'](util[_0x120f('0x1c')](_0x120f('0x42'),_0x50b9ef[_0x120f('0x23')]),_0x50b9ef);calls[_0x120f('0x41')](_0x50b9ef);recordings[_0x120f('0x41')](_0x50b9ef);}catch(_0x42b2a4){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x42'),_0x50b9ef['uniqueid']),_0x42b2a4);}});ami['on']('dialbegin',function(_0x913e0d){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x43'),_0x913e0d[_0x120f('0x23')]),_0x913e0d);dials['dialbegin'](_0x913e0d);}catch(_0xdf0f53){utils[_0x120f('0x18')](util[_0x120f('0x1c')]('[%s]dialbegin',_0x913e0d[_0x120f('0x23')]),_0xdf0f53);}});ami['on']('dialend',function(_0x3bbb95){try{utils[_0x120f('0x20')](util[_0x120f('0x1c')](_0x120f('0x44'),_0x3bbb95[_0x120f('0x23')]),_0x3bbb95);dials[_0x120f('0x45')](_0x3bbb95);}catch(_0x38a39e){utils[_0x120f('0x18')](util[_0x120f('0x1c')](_0x120f('0x44'),_0x3bbb95[_0x120f('0x23')]),_0x38a39e);}});}
\ No newline at end of file
+var _0xb7b9=['[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','production','local','asterisk','port','username','password','keepConnected','info','XDR\x20DISABLED','./queues.controller','./recordings.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0xb7b9,0x1c0));var _0x9b7b=function(_0x561cae,_0x3bf4cd){_0x561cae=_0x561cae-0x0;var _0x33b191=_0xb7b9[_0x561cae];return _0x33b191;};var AsteriskManager=require(_0x9b7b('0x0'));var config=require(_0x9b7b('0x1'));var utils=require(_0x9b7b('0x2'));var util=require(_0x9b7b('0x3'));var isXDREnabled=config['xdr']&&config[_0x9b7b('0x4')]['disabled']?!config[_0x9b7b('0x4')]['disabled']:!![];var isProduction=config['env']===_0x9b7b('0x5')||![];var isLocalAsterisk=config[_0x9b7b('0x4')]&&config[_0x9b7b('0x4')][_0x9b7b('0x6')]===!![]||![];var ami=new AsteriskManager(config[_0x9b7b('0x7')][_0x9b7b('0x8')],config[_0x9b7b('0x7')]['ip'],config['asterisk'][_0x9b7b('0x9')],config[_0x9b7b('0x7')][_0x9b7b('0xa')],!![]);ami[_0x9b7b('0xb')]();if(!isXDREnabled){utils[_0x9b7b('0xc')](_0x9b7b('0xd'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x9b7b('0xc')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require('./agents.controller');var calls=require('./calls.controller');var queues=require(_0x9b7b('0xe'));var recordings=require(_0x9b7b('0xf'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require(_0x9b7b('0x10'));ami['on'](_0x9b7b('0x11'),core[_0x9b7b('0x11')]);ami['on'](_0x9b7b('0x12'),core[_0x9b7b('0x12')]);ami['on'](_0x9b7b('0x13'),core['fullybooted']);ami['on']('error',core[_0x9b7b('0x14')]);ami['on'](_0x9b7b('0x15'),core[_0x9b7b('0x15')]);ami['on'](_0x9b7b('0x16'),core['managerevent']);ami['on'](_0x9b7b('0x17'),function(_0x4781ac){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x1a'),_0x4781ac[_0x9b7b('0x1b')]),_0x4781ac);members['devicestatechange'](_0x4781ac);}catch(_0x4cd261){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x1a'),_0x4781ac[_0x9b7b('0x1b')]),_0x4cd261);}});ami['on'](_0x9b7b('0x1c'),function(_0x1bcdc9){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x1d'),_0x1bcdc9[_0x9b7b('0x1e')]),_0x1bcdc9);agents[_0x9b7b('0x1c')](_0x1bcdc9);}catch(_0x101669){utils['error'](util[_0x9b7b('0x19')](_0x9b7b('0x1d'),_0x1bcdc9['uniqueid']),_0x101669);}});ami['on'](_0x9b7b('0x1f'),function(_0x149b61){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x20'),_0x149b61[_0x9b7b('0x1e')]),_0x149b61);agents['agentringnoanswer'](_0x149b61);}catch(_0x3ea08c){utils[_0x9b7b('0x14')](util['format'](_0x9b7b('0x20'),_0x149b61[_0x9b7b('0x1e')]),_0x3ea08c);}});ami['on'](_0x9b7b('0x21'),function(_0x2d8d2a){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x22'),_0x2d8d2a['uniqueid']),_0x2d8d2a);agents['agentconnect'](_0x2d8d2a);queues['agentconnect'](_0x2d8d2a);}catch(_0xb5fc1f){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x22'),_0x2d8d2a[_0x9b7b('0x1e')]),_0xb5fc1f);}});ami['on']('agentcomplete',function(_0x2e1e0b){try{utils['debug'](util[_0x9b7b('0x19')](_0x9b7b('0x23'),_0x2e1e0b[_0x9b7b('0x1e')]),_0x2e1e0b);agents[_0x9b7b('0x24')](_0x2e1e0b);queues[_0x9b7b('0x24')](_0x2e1e0b);members[_0x9b7b('0x24')](_0x2e1e0b);}catch(_0x4e4e07){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')]('[%s][index][agentcomplete]',_0x2e1e0b[_0x9b7b('0x1e')]),_0x4e4e07);}});ami['on'](_0x9b7b('0x25'),function(_0x527dbb){try{utils[_0x9b7b('0x18')](util['format'](_0x9b7b('0x26'),_0x527dbb['uniqueid']),_0x527dbb);agents[_0x9b7b('0x25')](_0x527dbb);queues[_0x9b7b('0x25')](_0x527dbb);}catch(_0x191358){utils['error'](util[_0x9b7b('0x19')](_0x9b7b('0x26'),_0x527dbb['uniqueid']),_0x191358);}});ami['on'](_0x9b7b('0x27'),function(_0x25ae12){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')]('[%s][index][queuecallerjoin]',_0x25ae12[_0x9b7b('0x1e')]),_0x25ae12);queues[_0x9b7b('0x27')](_0x25ae12);recordings[_0x9b7b('0x27')](_0x25ae12);}catch(_0x2a433a){utils['error'](util[_0x9b7b('0x19')](_0x9b7b('0x28'),_0x25ae12['uniqueid']),_0x2a433a);}});ami['on'](_0x9b7b('0x29'),function(_0x23ed27){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')]('[%s][index][queuecallerleave]',_0x23ed27[_0x9b7b('0x1e')]),_0x23ed27);queues[_0x9b7b('0x29')](_0x23ed27);}catch(_0x115ebe){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x2a'),_0x23ed27[_0x9b7b('0x1e')]),_0x115ebe);}});ami['on'](_0x9b7b('0x2b'),function(_0x215bbb){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x2c'),_0x215bbb[_0x9b7b('0x1e')]),_0x215bbb);queues['musiconholdstart'](_0x215bbb);calls['musiconholdstart'](_0x215bbb);}catch(_0x325b8d){utils['error'](util[_0x9b7b('0x19')](_0x9b7b('0x2c'),_0x215bbb[_0x9b7b('0x1e')]),_0x325b8d);}});ami['on'](_0x9b7b('0x2d'),function(_0x116a98){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x2e'),_0x116a98['uniqueid']),_0x116a98);queues[_0x9b7b('0x2d')](_0x116a98);calls[_0x9b7b('0x2d')](_0x116a98);}catch(_0x28f141){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x2e'),_0x116a98[_0x9b7b('0x1e')]),_0x28f141);}});ami['on']('newstate',function(_0x760213){try{utils['debug'](util['format'](_0x9b7b('0x2f'),_0x760213['uniqueid']),_0x760213);calls[_0x9b7b('0x30')](_0x760213);recordings[_0x9b7b('0x30')](_0x760213);}catch(_0x23aaa2){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x2f'),_0x760213[_0x9b7b('0x1e')]),_0x23aaa2);}});ami['on'](_0x9b7b('0x31'),function(_0x48a366){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x32'),_0x48a366[_0x9b7b('0x1e')]),_0x48a366);calls[_0x9b7b('0x31')](_0x48a366);recordings[_0x9b7b('0x31')](_0x48a366);dials['hangup'](_0x48a366);agents[_0x9b7b('0x31')](_0x48a366);queues[_0x9b7b('0x31')](_0x48a366);}catch(_0x4cb74e){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x32'),_0x48a366[_0x9b7b('0x1e')]),_0x4cb74e);}});ami['on'](_0x9b7b('0x33'),function(_0x4eed15){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x34'),_0x4eed15[_0x9b7b('0x1e')]),_0x4eed15);members[_0x9b7b('0x33')](_0x4eed15);}catch(_0x266939){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x34'),_0x4eed15['uniqueid']),_0x266939);}});ami['on'](_0x9b7b('0x35'),function(_0x434c8b){try{utils[_0x9b7b('0x18')](util['format'](_0x9b7b('0x36'),_0x434c8b[_0x9b7b('0x1e')]),_0x434c8b);queues[_0x9b7b('0x35')](_0x434c8b);agents[_0x9b7b('0x35')](_0x434c8b);transfers[_0x9b7b('0x35')](_0x434c8b);recordings[_0x9b7b('0x35')](_0x434c8b);}catch(_0x5af263){utils['error'](util[_0x9b7b('0x19')]('[%s][index][blindtransfer]',_0x434c8b[_0x9b7b('0x1e')]),_0x5af263);}});ami['on'](_0x9b7b('0x37'),function(_0x4a8790){try{utils['debug'](util[_0x9b7b('0x19')](_0x9b7b('0x38'),_0x4a8790[_0x9b7b('0x39')]),_0x4a8790);queues[_0x9b7b('0x37')](_0x4a8790);transfers[_0x9b7b('0x37')](_0x4a8790);agents[_0x9b7b('0x37')](_0x4a8790);calls[_0x9b7b('0x37')](_0x4a8790);}catch(_0x4213f9){utils[_0x9b7b('0x14')](util['format'](_0x9b7b('0x38'),_0x4a8790[_0x9b7b('0x39')]),_0x4213f9);}});ami['on'](_0x9b7b('0x3a'),function(_0x36c026){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x3b'),_0x36c026[_0x9b7b('0x1e')]),_0x36c026);queues[_0x9b7b('0x3a')](_0x36c026);recordings[_0x9b7b('0x3a')](_0x36c026);calls[_0x9b7b('0x3a')](_0x36c026);dials[_0x9b7b('0x3a')](_0x36c026);}catch(_0x120707){utils[_0x9b7b('0x14')](util['format'](_0x9b7b('0x3b'),_0x36c026[_0x9b7b('0x1e')]),_0x120707);}});ami['on'](_0x9b7b('0x3c'),function(_0x4eed1c){try{utils['debug'](util['format'](_0x9b7b('0x3d'),_0x4eed1c['uniqueid']),_0x4eed1c);calls[_0x9b7b('0x3c')](_0x4eed1c);recordings[_0x9b7b('0x3c')](_0x4eed1c);dials[_0x9b7b('0x3c')](_0x4eed1c);}catch(_0x1d612b){utils['error'](util[_0x9b7b('0x19')]('[%s][index][newexten]',_0x4eed1c['uniqueid']),_0x1d612b);}});ami['on'](_0x9b7b('0x3e'),function(_0x1e0219){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x3f'),_0x1e0219[_0x9b7b('0x1e')]),_0x1e0219);calls['newchannel'](_0x1e0219);recordings['newchannel'](_0x1e0219);}catch(_0x427fee){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x3f'),_0x1e0219['uniqueid']),_0x427fee);}});ami['on']('dialbegin',function(_0x66e097){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x40'),_0x66e097[_0x9b7b('0x1e')]),_0x66e097);dials[_0x9b7b('0x41')](_0x66e097);}catch(_0x527474){utils[_0x9b7b('0x14')](util['format'](_0x9b7b('0x42'),_0x66e097[_0x9b7b('0x1e')]),_0x527474);}});ami['on'](_0x9b7b('0x43'),function(_0x277a3b){try{utils[_0x9b7b('0x18')](util[_0x9b7b('0x19')](_0x9b7b('0x44'),_0x277a3b[_0x9b7b('0x1e')]),_0x277a3b);dials[_0x9b7b('0x43')](_0x277a3b);}catch(_0x4aba0e){utils[_0x9b7b('0x14')](util[_0x9b7b('0x19')](_0x9b7b('0x44'),_0x277a3b[_0x9b7b('0x1e')]),_0x4aba0e);}});}
\ No newline at end of file
index 1e6387b..6b29e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae4a=['lodash','util','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','getUserByInterface','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','state','INUSE','BUSY','voice','TALKING','now','agent','isNil','exitAt','diffTime','enterAt','error','agentcomplete','[%s][members][agentcomplete]','queue','cdr','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','assign'];(function(_0x249d04,_0x5b88ae){var _0x2c4415=function(_0x188149){while(--_0x188149){_0x249d04['push'](_0x249d04['shift']());}};_0x2c4415(++_0x5b88ae);}(_0xae4a,0x68));var _0xaae4=function(_0x1ea453,_0x5d757a){_0x1ea453=_0x1ea453-0x0;var _0xbcd27b=_0xae4a[_0x1ea453];return _0xbcd27b;};'use strict';var _=require(_0xaae4('0x0'));var util=require(_0xaae4('0x1'));var utils=require('./utils');var members={};var exclude=[_0xaae4('0x2'),_0xaae4('0x3')];function writeDB(_0x4fdcd0){utils[_0xaae4('0x4')](util[_0xaae4('0x5')](_0xaae4('0x6'),_0x4fdcd0[_0xaae4('0x7')],_0x4fdcd0[_0xaae4('0x8')],_0x4fdcd0[_0xaae4('0x9')],_0x4fdcd0[_0xaae4('0xa')],_0x4fdcd0[_0xaae4('0xb')],_0x4fdcd0[_0xaae4('0xc')]));if(_0x4fdcd0[_0xaae4('0x8')]){utils[_0xaae4('0xd')](_0x4fdcd0[_0xaae4('0x8')])[_0xaae4('0xe')](function(_0x4b47c2){if(_0x4b47c2){_0x4fdcd0['membername']=_0x4b47c2[_0xaae4('0xf')];_0x4fdcd0[_0xaae4('0x10')]=_0x4b47c2[_0xaae4('0x10')];utils[_0xaae4('0x11')](_0xaae4('0x12'),_0x4fdcd0);}else{utils[_0xaae4('0x13')](_0x4fdcd0[_0xaae4('0x8')][_0xaae4('0x14')]('/')[0x1])[_0xaae4('0xe')](function(_0x3e675c){if(_0x3e675c){_0x4fdcd0[_0xaae4('0xb')]=_0x3e675c[_0xaae4('0xf')];_0x4fdcd0[_0xaae4('0x10')]=_0x3e675c[_0xaae4('0x10')];utils[_0xaae4('0x11')](_0xaae4('0x12'),_0x4fdcd0);}});}})[_0xaae4('0x15')](function(_0x419ec2){utils['error'](util[_0xaae4('0x5')](_0xaae4('0x16'),_0x4fdcd0[_0xaae4('0x7')]),_0x419ec2);});}delete members[_0x4fdcd0[_0xaae4('0x8')]];}function startsWith(_0x30ee7e,_0x56bbab){return _[_0xaae4('0x17')](_0x30ee7e,function(_0x590d43){return _[_0xaae4('0x18')](_0x56bbab,_0x590d43);});}exports[_0xaae4('0x19')]=function(_0x4c99b8){try{utils[_0xaae4('0x1a')](util[_0xaae4('0x5')](_0xaae4('0x1b'),members[_0x4c99b8['device']]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')]),_0x4c99b8);utils['info'](util[_0xaae4('0x5')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x4c99b8[_0xaae4('0x1c')]]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')],_0x4c99b8[_0xaae4('0x1d')],_0x4c99b8[_0xaae4('0x1c')]));switch(_0x4c99b8['state']){case _0xaae4('0x1e'):case _0xaae4('0x1f'):if(!startsWith(exclude,_0x4c99b8['device'])){members[_0x4c99b8[_0xaae4('0x1c')]]={'channel':_0xaae4('0x20'),'interface':_0x4c99b8[_0xaae4('0x1c')],'type':_0xaae4('0x21'),'enterAt':utils[_0xaae4('0x22')](),'role':_0xaae4('0x23')};}break;case'NOT_INUSE':if(!_[_0xaae4('0x24')](members[_0x4c99b8[_0xaae4('0x1c')]])){members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x25')]=utils[_0xaae4('0x22')]();members[_0x4c99b8[_0xaae4('0x1c')]]['duration']=utils[_0xaae4('0x26')](members[_0x4c99b8[_0xaae4('0x1c')]]['exitAt'],members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x27')]);if(members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]){writeDB(members[_0x4c99b8['device']]);}}break;default:break;}}catch(_0xb7c974){utils[_0xaae4('0x28')](util[_0xaae4('0x5')]('[%s][members][devicestatechange]',members[_0x4c99b8[_0xaae4('0x1c')]]?members[_0x4c99b8[_0xaae4('0x1c')]][_0xaae4('0x7')]:_0x4c99b8[_0xaae4('0x1c')]),_0xb7c974);}};exports[_0xaae4('0x29')]=function(_0x5610f1){try{if(!_[_0xaae4('0x24')](members[_0x5610f1[_0xaae4('0x8')]])){utils[_0xaae4('0x1a')](util[_0xaae4('0x5')](_0xaae4('0x2a'),_0x5610f1[_0xaae4('0x7')]),_0x5610f1);utils[_0xaae4('0x4')](util[_0xaae4('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x5610f1[_0xaae4('0x7')],_0x5610f1[_0xaae4('0x8')],_0x5610f1[_0xaae4('0x2b')]));members[_0x5610f1[_0xaae4('0x8')]]=_['assign'](members[_0x5610f1[_0xaae4('0x8')]],{'data4':_0x5610f1['queue'],'uniqueid':_0x5610f1[_0xaae4('0x7')]});}}catch(_0x1baa5e){utils['error'](util['format']('[%s][members][agentcomplete]',_0x5610f1['uniqueid']),_0x1baa5e);}};exports[_0xaae4('0x2c')]=function(_0x194d78){try{utils['debug'](util[_0xaae4('0x5')]('[%s][members][cdr]',_0x194d78[_0xaae4('0x7')]),_0x194d78);if(_0x194d78[_0xaae4('0x9')]){var _0x3b1998=_0x194d78[_0xaae4('0x9')]['split']('-')[0x0];if(!_[_0xaae4('0x24')](members[_0x3b1998])){members[_0x3b1998]=_['assign'](members[_0x3b1998],{'data1':members[_0x3b1998][_0xaae4('0x2d')]||_0x194d78['type'],'data2':members[_0x3b1998][_0xaae4('0xa')]||_0x194d78[_0xaae4('0x2e')],'data3':members[_0x3b1998][_0xaae4('0x2f')]||_0x194d78[_0xaae4('0x30')],'uniqueid':members[_0x3b1998][_0xaae4('0x7')]||_0x194d78[_0xaae4('0x7')]});utils[_0xaae4('0x4')](util['format'](_0xaae4('0x31'),_0x194d78['uniqueid'],members[_0x3b1998][_0xaae4('0x2d')],members[_0x3b1998][_0xaae4('0xa')],members[_0x3b1998][_0xaae4('0x2f')]));if(members[_0x3b1998][_0xaae4('0x25')]){writeDB(members[_0x3b1998]);}}}if(_0x194d78['destinationchannel']){var _0x5984d7=_0x194d78[_0xaae4('0x32')][_0xaae4('0x14')]('-')[0x0];if(!_[_0xaae4('0x24')](members[_0x5984d7])){members[_0x5984d7]=_[_0xaae4('0x33')](members[_0x5984d7],{'data1':members[_0x5984d7][_0xaae4('0x2d')]||_0x194d78['type'],'data2':members[_0x5984d7]['data2']||_0x194d78['source'],'data3':members[_0x5984d7]['data3']||_0x194d78[_0xaae4('0x30')],'uniqueid':members[_0x5984d7][_0xaae4('0x7')]||_0x194d78['uniqueid']});utils['info'](util['format'](_0xaae4('0x31'),_0x194d78[_0xaae4('0x7')],members[_0x5984d7][_0xaae4('0x2d')],members[_0x5984d7]['data2'],members[_0x5984d7][_0xaae4('0x2f')]));if(members[_0x5984d7][_0xaae4('0x25')]){writeDB(members[_0x5984d7]);}}}}catch(_0x3fbd3b){utils[_0xaae4('0x28')](util[_0xaae4('0x5')]('[%s][members][cdr]',_0x194d78[_0xaae4('0x7')]),_0x3fbd3b);}};
\ No newline at end of file
+var _0x30df=['internal','CreateMemberReport','getUserByName','split','name','request','catch','error','[%s][members][writeDB]','uniqueid','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','now','agent','NOT_INUSE','exitAt','duration','diffTime','enterAt','agentcomplete','isNil','[%s][members][agentcomplete]','info','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','./utils','Local/_attended@transfer','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','type','getUserByInterface','then'];(function(_0x1cd440,_0x899dc1){var _0x4ff506=function(_0x1b2f29){while(--_0x1b2f29){_0x1cd440['push'](_0x1cd440['shift']());}};_0x4ff506(++_0x899dc1);}(_0x30df,0x101));var _0xf30d=function(_0x270840,_0x14a999){_0x270840=_0x270840-0x0;var _0x5278cb=_0x30df[_0x270840];return _0x5278cb;};'use strict';var _=require(_0xf30d('0x0'));var util=require('util');var utils=require(_0xf30d('0x1'));var members={};var exclude=[_0xf30d('0x2'),_0xf30d('0x3')];function writeDB(_0x184fa1){utils['info'](util[_0xf30d('0x4')](_0xf30d('0x5'),_0x184fa1['uniqueid'],_0x184fa1[_0xf30d('0x6')],_0x184fa1[_0xf30d('0x7')],_0x184fa1[_0xf30d('0x8')],_0x184fa1[_0xf30d('0x9')],_0x184fa1[_0xf30d('0xa')]));if(_0x184fa1[_0xf30d('0x6')]){utils[_0xf30d('0xb')](_0x184fa1[_0xf30d('0x6')])[_0xf30d('0xc')](function(_0x362a4d){if(_0x362a4d){_0x184fa1[_0xf30d('0x9')]=_0x362a4d['name'];_0x184fa1[_0xf30d('0xd')]=_0x362a4d[_0xf30d('0xd')];utils['request'](_0xf30d('0xe'),_0x184fa1);}else{utils[_0xf30d('0xf')](_0x184fa1[_0xf30d('0x6')][_0xf30d('0x10')]('/')[0x1])[_0xf30d('0xc')](function(_0x2efe39){if(_0x2efe39){_0x184fa1[_0xf30d('0x9')]=_0x2efe39[_0xf30d('0x11')];_0x184fa1['internal']=_0x2efe39[_0xf30d('0xd')];utils[_0xf30d('0x12')](_0xf30d('0xe'),_0x184fa1);}});}})[_0xf30d('0x13')](function(_0xaa3fd3){utils[_0xf30d('0x14')](util[_0xf30d('0x4')](_0xf30d('0x15'),_0x184fa1[_0xf30d('0x16')]),_0xaa3fd3);});}delete members[_0x184fa1[_0xf30d('0x6')]];}function startsWith(_0x3fba2b,_0x2496c0){return _[_0xf30d('0x17')](_0x3fba2b,function(_0xa67dd4){return _[_0xf30d('0x18')](_0x2496c0,_0xa67dd4);});}exports[_0xf30d('0x19')]=function(_0x3d7300){try{utils[_0xf30d('0x1a')](util['format'](_0xf30d('0x1b'),members[_0x3d7300[_0xf30d('0x1c')]]?members[_0x3d7300[_0xf30d('0x1c')]][_0xf30d('0x16')]:_0x3d7300[_0xf30d('0x1c')]),_0x3d7300);utils['info'](util['format'](_0xf30d('0x1d'),members[_0x3d7300[_0xf30d('0x1c')]]?members[_0x3d7300[_0xf30d('0x1c')]][_0xf30d('0x16')]:_0x3d7300[_0xf30d('0x1c')],_0x3d7300[_0xf30d('0x1e')],_0x3d7300[_0xf30d('0x1c')]));switch(_0x3d7300[_0xf30d('0x1e')]){case _0xf30d('0x1f'):case'BUSY':if(!startsWith(exclude,_0x3d7300['device'])){members[_0x3d7300[_0xf30d('0x1c')]]={'channel':_0xf30d('0x20'),'interface':_0x3d7300['device'],'type':'TALKING','enterAt':utils[_0xf30d('0x21')](),'role':_0xf30d('0x22')};}break;case _0xf30d('0x23'):if(!_['isNil'](members[_0x3d7300[_0xf30d('0x1c')]])){members[_0x3d7300[_0xf30d('0x1c')]][_0xf30d('0x24')]=utils[_0xf30d('0x21')]();members[_0x3d7300[_0xf30d('0x1c')]][_0xf30d('0x25')]=utils[_0xf30d('0x26')](members[_0x3d7300[_0xf30d('0x1c')]]['exitAt'],members[_0x3d7300[_0xf30d('0x1c')]][_0xf30d('0x27')]);if(members[_0x3d7300['device']][_0xf30d('0x16')]){writeDB(members[_0x3d7300[_0xf30d('0x1c')]]);}}break;default:break;}}catch(_0x3d79c4){utils[_0xf30d('0x14')](util[_0xf30d('0x4')]('[%s][members][devicestatechange]',members[_0x3d7300['device']]?members[_0x3d7300['device']][_0xf30d('0x16')]:_0x3d7300[_0xf30d('0x1c')]),_0x3d79c4);}};exports[_0xf30d('0x28')]=function(_0x560a77){try{if(!_[_0xf30d('0x29')](members[_0x560a77[_0xf30d('0x6')]])){utils[_0xf30d('0x1a')](util[_0xf30d('0x4')](_0xf30d('0x2a'),_0x560a77['uniqueid']),_0x560a77);utils[_0xf30d('0x2b')](util[_0xf30d('0x4')](_0xf30d('0x2c'),_0x560a77[_0xf30d('0x16')],_0x560a77[_0xf30d('0x6')],_0x560a77[_0xf30d('0x2d')]));members[_0x560a77[_0xf30d('0x6')]]=_[_0xf30d('0x2e')](members[_0x560a77[_0xf30d('0x6')]],{'data4':_0x560a77[_0xf30d('0x2d')],'uniqueid':_0x560a77[_0xf30d('0x16')]});}}catch(_0x2b7fcc){utils['error'](util[_0xf30d('0x4')](_0xf30d('0x2a'),_0x560a77[_0xf30d('0x16')]),_0x2b7fcc);}};exports[_0xf30d('0x2f')]=function(_0x3bc0b4){try{utils[_0xf30d('0x1a')](util[_0xf30d('0x4')]('[%s][members][cdr]',_0x3bc0b4[_0xf30d('0x16')]),_0x3bc0b4);if(_0x3bc0b4['channel']){var _0x19bfc3=_0x3bc0b4[_0xf30d('0x7')][_0xf30d('0x10')]('-')[0x0];if(!_[_0xf30d('0x29')](members[_0x19bfc3])){members[_0x19bfc3]=_['assign'](members[_0x19bfc3],{'data1':members[_0x19bfc3][_0xf30d('0x30')]||_0x3bc0b4['type'],'data2':members[_0x19bfc3]['data2']||_0x3bc0b4[_0xf30d('0x31')],'data3':members[_0x19bfc3][_0xf30d('0x32')]||_0x3bc0b4[_0xf30d('0x33')],'uniqueid':members[_0x19bfc3]['uniqueid']||_0x3bc0b4[_0xf30d('0x16')]});utils['info'](util[_0xf30d('0x4')](_0xf30d('0x34'),_0x3bc0b4['uniqueid'],members[_0x19bfc3]['data1'],members[_0x19bfc3][_0xf30d('0x8')],members[_0x19bfc3][_0xf30d('0x32')]));if(members[_0x19bfc3]['exitAt']){writeDB(members[_0x19bfc3]);}}}if(_0x3bc0b4[_0xf30d('0x35')]){var _0x4ee64b=_0x3bc0b4[_0xf30d('0x35')]['split']('-')[0x0];if(!_[_0xf30d('0x29')](members[_0x4ee64b])){members[_0x4ee64b]=_[_0xf30d('0x2e')](members[_0x4ee64b],{'data1':members[_0x4ee64b][_0xf30d('0x30')]||_0x3bc0b4[_0xf30d('0xa')],'data2':members[_0x4ee64b][_0xf30d('0x8')]||_0x3bc0b4[_0xf30d('0x31')],'data3':members[_0x4ee64b][_0xf30d('0x32')]||_0x3bc0b4[_0xf30d('0x33')],'uniqueid':members[_0x4ee64b][_0xf30d('0x16')]||_0x3bc0b4['uniqueid']});utils[_0xf30d('0x2b')](util[_0xf30d('0x4')](_0xf30d('0x34'),_0x3bc0b4[_0xf30d('0x16')],members[_0x4ee64b]['data1'],members[_0x4ee64b]['data2'],members[_0x4ee64b][_0xf30d('0x32')]));if(members[_0x4ee64b][_0xf30d('0x24')]){writeDB(members[_0x4ee64b]);}}}}catch(_0x282b77){utils[_0xf30d('0x14')](util[_0xf30d('0x4')]('[%s][members][cdr]',_0x3bc0b4['uniqueid']),_0x282b77);}};
\ No newline at end of file
index 7757d00..3fe3f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0849=['transfereeuniqueid','transfertype','BLIND','transferexten','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfereruniqueid','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','info','format','uniqueid','queue','lastAssignedTo','queuecallerexitreason','getVoiceQueueByName','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','position','assign','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerabandonAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','queuecallerjoinAt','connectedlinenum','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','accountcode','membername','[%s][queues][agentconnect]','[%s][queues][agentcomplete]','transfer','COMPLETEDBY','reason','blindtransfer'];(function(_0x5d99fa,_0x5cd553){var _0x1d30b0=function(_0x32dfbe){while(--_0x32dfbe){_0x5d99fa['push'](_0x5d99fa['shift']());}};_0x1d30b0(++_0x5cd553);}(_0x0849,0x84));var _0x9084=function(_0x4f0fd6,_0x99bd9){_0x4f0fd6=_0x4f0fd6-0x0;var _0x52a961=_0x0849[_0x4f0fd6];return _0x52a961;};'use strict';var _=require(_0x9084('0x0'));var util=require('util');var utils=require('./utils');var queues={};function writeDB(_0x3249c6){utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x3249c6[_0x9084('0x3')],_0x3249c6['channel'],_0x3249c6[_0x9084('0x4')],_0x3249c6[_0x9084('0x5')],_0x3249c6['calleridnum'],_0x3249c6['accountcode'],_0x3249c6[_0x9084('0x6')]));if(_0x3249c6[_0x9084('0x4')]){utils[_0x9084('0x7')](_0x3249c6[_0x9084('0x4')])['then'](function(_0x2c91da){if(_0x2c91da){_0x3249c6[_0x9084('0x8')]=_0x2c91da[_0x9084('0x8')];}utils['request'](_0x9084('0x9'),_0x3249c6);});}else{utils[_0x9084('0xa')](_0x9084('0x9'),_0x3249c6);}if(_0x3249c6[_0x9084('0xb')]){delete queues[_0x3249c6['transfereduniqueid']];}else{delete queues[_0x3249c6['uniqueid']];}}exports[_0x9084('0xc')]=function(_0x2df74a){try{utils['debug'](util[_0x9084('0x2')](_0x9084('0xd'),_0x2df74a[_0x9084('0x3')]),_0x2df74a);utils['info'](util[_0x9084('0x2')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x2df74a[_0x9084('0x3')],_0x2df74a[_0x9084('0x4')],_0x2df74a[_0x9084('0xe')]));queues[_0x2df74a[_0x9084('0x3')]]=_[_0x9084('0xf')](_0x2df74a,{'originalposition':_0x2df74a['position'],'queuecallerjoinAt':utils[_0x9084('0x10')](),'mohtime':0x0});}catch(_0x187f4b){utils[_0x9084('0x11')](util[_0x9084('0x2')]('[%s][queues][queuecallerjoin]',_0x2df74a['uniqueid']),_0x187f4b);}};exports[_0x9084('0x12')]=function(_0x55fcaa){try{if(!_[_0x9084('0x13')](queues[_0x55fcaa[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x15'),_0x55fcaa['uniqueid']),_0x55fcaa);if(queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x16')]){if(!queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x17')]&&!queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x18')]){queues[_0x55fcaa['uniqueid']][_0x9084('0x19')]=!![];queues[_0x55fcaa[_0x9084('0x3')]]['queuecallercompleteAt']=utils['now']();queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x6')]=_0x9084('0x1a');}utils['info'](util[_0x9084('0x2')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x55fcaa[_0x9084('0x3')],queues[_0x55fcaa[_0x9084('0x3')]]['name'],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x6')]));writeDB(queues[_0x55fcaa[_0x9084('0x3')]]);}else if(queues[_0x55fcaa['uniqueid']][_0x9084('0xb')]){utils['info'](util[_0x9084('0x2')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x55fcaa[_0x9084('0x3')],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x55fcaa[_0x9084('0x3')]][_0x9084('0xb')]));queues[queues[_0x55fcaa['uniqueid']][_0x9084('0xb')]]=queues[_0x55fcaa[_0x9084('0x3')]];queues[queues[_0x55fcaa[_0x9084('0x3')]]['transfereduniqueid']][_0x9084('0x1c')]=0x2;delete queues[_0x55fcaa[_0x9084('0x3')]];}}}catch(_0x385711){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x15'),_0x55fcaa[_0x9084('0x3')]),_0x385711);}};exports[_0x9084('0x1d')]=function(_0x290d8c){try{utils['debug'](util[_0x9084('0x2')](_0x9084('0x1e'),_0x290d8c[_0x9084('0x3')]),_0x290d8c);if(!_['isNil'](_0x290d8c[_0x9084('0x1f')][_0x9084('0x20')])&&_0x290d8c[_0x9084('0x21')][_0x9084('0x22')]()!==_0x9084('0x23')){if(!_[_0x9084('0x13')](queues[_0x290d8c[_0x9084('0x3')]])){queues[_0x290d8c['uniqueid']]['queuecallerabandon']=![];queues[_0x290d8c['uniqueid']]['queuecallerabandonAt']=null;queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x18')]=!![];queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x24')]=utils[_0x9084('0x10')]();queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x6')]=_0x290d8c[_0x9084('0x21')][_0x9084('0x22')]();utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x290d8c[_0x9084('0x3')],queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x1b')],_0x290d8c[_0x9084('0x21')],queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x6')]));writeDB(queues[_0x290d8c['uniqueid']]);}}else if(!_['isNil'](_0x290d8c[_0x9084('0x1f')][_0x9084('0x25')])){if(!_[_0x9084('0x13')](queues[_0x290d8c[_0x9084('0x3')]])&&!queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x17')]){queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x290d8c[_0x9084('0x3')]]['queuecallerabandonAt']=null;queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x18')]=!![];queues[_0x290d8c[_0x9084('0x3')]][_0x9084('0x24')]=utils[_0x9084('0x10')]();queues[_0x290d8c['uniqueid']][_0x9084('0x6')]='EXITWITHKEY';utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x26'),_0x290d8c[_0x9084('0x3')],queues[_0x290d8c['uniqueid']][_0x9084('0x1b')],_0x290d8c['value'],queues[_0x290d8c[_0x9084('0x3')]]['queuecallerexitreason']));}}}catch(_0x4e33e5){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x1e'),_0x290d8c[_0x9084('0x3')]),_0x4e33e5);}};exports[_0x9084('0x17')]=function(_0x439356){try{if(!_[_0x9084('0x13')](queues[_0x439356['uniqueid']])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x27'),_0x439356[_0x9084('0x3')]),_0x439356);queues[_0x439356['uniqueid']][_0x9084('0x18')]=![];queues[_0x439356['uniqueid']][_0x9084('0x24')]=null;queues[_0x439356['uniqueid']][_0x9084('0x17')]=!![];queues[_0x439356[_0x9084('0x3')]][_0x9084('0x28')]=utils[_0x9084('0x10')]();queues[_0x439356['uniqueid']][_0x9084('0x6')]=_0x9084('0x29');utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x2a'),_0x439356[_0x9084('0x3')],queues[_0x439356[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x439356[_0x9084('0x3')]][_0x9084('0x6')]));}}catch(_0x5f4022){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x27'),_0x439356[_0x9084('0x3')]),_0x5f4022);}};exports[_0x9084('0x2b')]=function(_0x25abba){try{if(!_[_0x9084('0x13')](queues[_0x25abba[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x2c'),_0x25abba[_0x9084('0x3')]),_0x25abba);utils['info'](util['format'](_0x9084('0x2d'),_0x25abba[_0x9084('0x3')],queues[_0x25abba['uniqueid']]['name'],_0x25abba['connectedlinenum'],_0x25abba[_0x9084('0x2e')]));queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x2b')]=!![];queues[_0x25abba['uniqueid']][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x25abba['uniqueid']][_0x9084('0x2f')]=utils['diffTime'](queues[_0x25abba['uniqueid']][_0x9084('0x16')],queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x30')]);queues[_0x25abba[_0x9084('0x3')]][_0x9084('0xe')]=_0x25abba[_0x9084('0xe')];queues[_0x25abba[_0x9084('0x3')]]['count']=_0x25abba['count'];queues[_0x25abba[_0x9084('0x3')]][_0x9084('0x31')]=_0x25abba[_0x9084('0x31')];queues[_0x25abba[_0x9084('0x3')]]['connectedlinename']=_0x25abba['connectedlinename'];}}catch(_0x1b1eb4){utils[_0x9084('0x11')](util['format'](_0x9084('0x2c'),_0x25abba[_0x9084('0x3')]),_0x1b1eb4);}};exports[_0x9084('0x32')]=function(_0x2f47b8){try{if(!_[_0x9084('0x13')](queues[_0x2f47b8[_0x9084('0x3')]])){utils[_0x9084('0x14')](util['format']('[%s][queues][agentconnect]',_0x2f47b8[_0x9084('0x3')]),_0x2f47b8);utils[_0x9084('0x1')](util['format'](_0x9084('0x33'),_0x2f47b8['uniqueid'],queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x1b')],_0x2f47b8['membername'],_0x2f47b8[_0x9084('0x34')]));queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2f47b8['uniqueid']][_0x9084('0x17')]=![];queues[_0x2f47b8[_0x9084('0x3')]]['queuecallerabandonAt']=null;queues[_0x2f47b8['uniqueid']][_0x9084('0x18')]=![];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x6')]=null;queues[_0x2f47b8[_0x9084('0x3')]]['queuecallerexitAt']=null;queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x35')]=!![];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x36')]=_0x2f47b8[_0x9084('0x34')];queues[_0x2f47b8[_0x9084('0x3')]][_0x9084('0x5')]=_0x2f47b8[_0x9084('0x37')];}}catch(_0x26323b){utils[_0x9084('0x11')](util[_0x9084('0x2')](_0x9084('0x38'),_0x2f47b8[_0x9084('0x3')]),_0x26323b);}};exports['agentcomplete']=function(_0x2fcbcc){try{if(!_[_0x9084('0x13')](queues[_0x2fcbcc[_0x9084('0x3')]])){if(queues[_0x2fcbcc['uniqueid']]['queuecallerleaveAt']){utils['debug'](util['format'](_0x9084('0x39'),_0x2fcbcc[_0x9084('0x3')]),_0x2fcbcc);queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x17')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x28')]=null;queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x18')]=![];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x24')]=null;queues[_0x2fcbcc[_0x9084('0x3')]]['assigned']=!![];queues[_0x2fcbcc['uniqueid']]['lastAssignedTo']=_0x2fcbcc['membername'];queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x19')]=!![];queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallercompleteAt']=utils[_0x9084('0x10')]();if(_0x2fcbcc['reason']==_0x9084('0x3a')){if(!queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x3a')]){queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']='TRANSFER';}}else{queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']=_0x9084('0x3b')+_0x2fcbcc[_0x9084('0x3c')][_0x9084('0x22')]();}utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x2fcbcc[_0x9084('0x3')],queues[_0x2fcbcc[_0x9084('0x3')]][_0x9084('0x1b')],_0x2fcbcc[_0x9084('0x37')],queues[_0x2fcbcc[_0x9084('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x2fcbcc[_0x9084('0x3')]]);}}}catch(_0x488e72){utils['error'](util['format'](_0x9084('0x39'),_0x2fcbcc[_0x9084('0x3')]),_0x488e72);}};exports[_0x9084('0x3d')]=function(_0x5985a3){try{if(!_[_0x9084('0x13')](queues[_0x5985a3[_0x9084('0x3e')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')]('[%s][queues][blindtransfer]',_0x5985a3[_0x9084('0x3')]),_0x5985a3);queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x3a')]=!![];queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x3f')]=_0x9084('0x40');queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x41')]=_0x5985a3['extension'];queues[_0x5985a3['transfereeuniqueid']][_0x9084('0x42')]=_0x5985a3[_0x9084('0x3e')];queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x6')]='BLINDTRANSFER';utils[_0x9084('0x1')](util['format'](_0x9084('0x43'),_0x5985a3[_0x9084('0x3')],queues[_0x5985a3[_0x9084('0x3e')]][_0x9084('0x1b')],_0x5985a3[_0x9084('0x3e')],_0x5985a3[_0x9084('0x44')]));}}catch(_0x2f22bf){utils['error'](util[_0x9084('0x2')]('[%s][queues][blindtransfer]',_0x5985a3[_0x9084('0x3')]),_0x2f22bf);}};exports[_0x9084('0x45')]=function(_0x3db08e){try{utils[_0x9084('0x14')](util['format'](_0x9084('0x46'),_0x3db08e['origtransfereruniqueid']),_0x3db08e);if(_0x3db08e['origtransfereruniqueid']==_0x3db08e[_0x9084('0x47')]){if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x48')]])){utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x49'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x1b')],_0x3db08e[_0x9084('0x4b')]));queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x3a')]=!![];queues[_0x3db08e[_0x9084('0x48')]]['transfertype']=_0x9084('0x4c');queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x41')]=_0x3db08e[_0x9084('0x4b')];queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x42')]=_0x3db08e[_0x9084('0x4a')];queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x6')]=_0x9084('0x4d');}if(!_['isNil'](queues[_0x3db08e[_0x9084('0x47')]])){if(_0x3db08e[_0x9084('0x4e')]&&queues[_0x3db08e[_0x9084('0x4e')]]){queues[_0x3db08e[_0x9084('0x4e')]]['queuecallerenterreason']=0x1;queues[_0x3db08e[_0x9084('0x3e')]]=_[_0x9084('0x4f')](queues[_0x3db08e['transfereelinkedid']]);queues[_0x3db08e['transfereeuniqueid']]['transfereduniqueid']=_0x3db08e['transfertargetuniqueid'];queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x1c')]=0x2;queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x50')]=queues[_0x3db08e[_0x9084('0x48')]]['calleridnum'];queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x51')]=queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0x51')];queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x30')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x3e')]][_0x9084('0x2f')]=0x0;queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x52')]=0x0;utils[_0x9084('0x1')](util[_0x9084('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x3db08e['origtransfereruniqueid'],queues[_0x3db08e[_0x9084('0x3e')]]['name'],queues[_0x3db08e[_0x9084('0x3e')]]['calleridnum'],queues[_0x3db08e['transfereeuniqueid']][_0x9084('0x51')]));}else{utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x53'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x1b')],_0x3db08e[_0x9084('0x48')]));queues[_0x3db08e[_0x9084('0x47')]]['transfereduniqueid']=_0x3db08e[_0x9084('0x48')];}}}else if(_0x3db08e[_0x9084('0x54')]==_0x3db08e[_0x9084('0x48')]){if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x47')]])){utils['info'](util['format'](_0x9084('0x55'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x47')]]['name'],_0x3db08e['secondtransfereruniqueid'],_0x3db08e[_0x9084('0x56')]));queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x3a')]=!![];queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x3f')]=_0x9084('0x4c');queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x41')]=_0x3db08e[_0x9084('0x56')];queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x42')]=_0x3db08e[_0x9084('0x54')];queues[_0x3db08e['origtransfererlinkedid']][_0x9084('0x6')]=_0x9084('0x4d');}if(!_[_0x9084('0x13')](queues[_0x3db08e[_0x9084('0x48')]])){if(_0x3db08e[_0x9084('0x57')]&&queues[_0x3db08e[_0x9084('0x57')]]){queues[_0x3db08e[_0x9084('0x57')]][_0x9084('0x1c')]=0x1;queues[_0x3db08e[_0x9084('0x58')]]=_[_0x9084('0x4f')](queues[_0x3db08e[_0x9084('0x57')]]);queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0xb')]=_0x3db08e['transfertargetuniqueid'];queues[_0x3db08e['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x50')]=queues[_0x3db08e['origtransfererlinkedid']][_0x9084('0x50')];queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x51')]=queues[_0x3db08e[_0x9084('0x47')]][_0x9084('0x51')];queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x30')]=utils[_0x9084('0x10')]();queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x16')]=utils[_0x9084('0x10')]();queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x2f')]=0x0;queues[_0x3db08e[_0x9084('0x58')]]['mohtime']=0x0;utils['info'](util['format'](_0x9084('0x59'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0x1b')],queues[_0x3db08e[_0x9084('0x58')]][_0x9084('0xb')],queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x50')],queues[_0x3db08e['transfertargetuniqueid']][_0x9084('0x51')]));}else{utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x53'),_0x3db08e[_0x9084('0x4a')],queues[_0x3db08e['secondtransfererlinkedid']][_0x9084('0x1b')],_0x3db08e['origtransfererlinkedid']));queues[_0x3db08e[_0x9084('0x48')]][_0x9084('0xb')]=_0x3db08e[_0x9084('0x47')];}}}}catch(_0x164639){utils['error'](util[_0x9084('0x2')]('[%s][queues][attendedtransfer]',_0x3db08e[_0x9084('0x4a')]),_0x164639);}};exports[_0x9084('0x5a')]=function(_0xde2850){try{if(!_[_0x9084('0x13')](queues[_0xde2850[_0x9084('0x3')]])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x5b'),_0xde2850[_0x9084('0x3')]),_0xde2850);queues[_0xde2850[_0x9084('0x3')]][_0x9084('0x5c')]=utils[_0x9084('0x10')]();utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x5d'),_0xde2850[_0x9084('0x3')],queues[_0xde2850[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0xde2850['uniqueid']][_0x9084('0x5c')]));}}catch(_0x16aff9){utils['error'](util[_0x9084('0x2')](_0x9084('0x5b'),_0xde2850['uniqueid']),_0x16aff9);}};exports['musiconholdstop']=function(_0x5e6065){try{if(!_[_0x9084('0x13')](queues[_0x5e6065[_0x9084('0x3')]])){if(!_['isNil'](queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x5c')])){utils[_0x9084('0x14')](util[_0x9084('0x2')](_0x9084('0x5e'),_0x5e6065['uniqueid']),_0x5e6065);queues[_0x5e6065['uniqueid']][_0x9084('0x52')]+=utils[_0x9084('0x5f')](utils[_0x9084('0x10')](),queues[_0x5e6065[_0x9084('0x3')]]['musiconholdstartAt']);utils[_0x9084('0x1')](util[_0x9084('0x2')](_0x9084('0x60'),_0x5e6065[_0x9084('0x3')],queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x1b')],queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x52')]));delete queues[_0x5e6065[_0x9084('0x3')]][_0x9084('0x5c')];}}}catch(_0x5e7f0b){utils[_0x9084('0x11')](util['format'](_0x9084('0x5e'),_0x5e6065[_0x9084('0x3')]),_0x5e7f0b);}};
\ No newline at end of file
+var _0xcf26=['assigned','accountcode','membername','agentcomplete','queuecallercomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','info','format','uniqueid','channel','queue','lastAssignedTo','calleridnum','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','error','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','now','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','name','queuecallerabandonAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','holdtime','diffTime','queuecallerjoinAt','count','connectedlinenum','connectedlinename','[%s][queues][queuecallerleave]','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode'];(function(_0x11a6dd,_0x10d0ca){var _0x2bb91d=function(_0x549d40){while(--_0x549d40){_0x11a6dd['push'](_0x11a6dd['shift']());}};_0x2bb91d(++_0x10d0ca);}(_0xcf26,0x157));var _0x6cf2=function(_0x53a7a8,_0xed2bff){_0x53a7a8=_0x53a7a8-0x0;var _0x555f71=_0xcf26[_0x53a7a8];return _0x555f71;};'use strict';var _=require('lodash');var util=require('util');var utils=require('./utils');var queues={};function writeDB(_0x2632dc){utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x2632dc[_0x6cf2('0x2')],_0x2632dc[_0x6cf2('0x3')],_0x2632dc[_0x6cf2('0x4')],_0x2632dc[_0x6cf2('0x5')],_0x2632dc[_0x6cf2('0x6')],_0x2632dc['accountcode'],_0x2632dc['queuecallerexitreason']));if(_0x2632dc[_0x6cf2('0x4')]){utils['getVoiceQueueByName'](_0x2632dc['queue'])[_0x6cf2('0x7')](function(_0x51bc65){if(_0x51bc65){_0x2632dc[_0x6cf2('0x8')]=_0x51bc65[_0x6cf2('0x8')];}utils[_0x6cf2('0x9')]('CreateVoiceQueueReport',_0x2632dc);});}else{utils[_0x6cf2('0x9')](_0x6cf2('0xa'),_0x2632dc);}if(_0x2632dc[_0x6cf2('0xb')]){delete queues[_0x2632dc[_0x6cf2('0xb')]];}else{delete queues[_0x2632dc[_0x6cf2('0x2')]];}}exports[_0x6cf2('0xc')]=function(_0x2d10fe){try{utils['debug'](util[_0x6cf2('0x1')](_0x6cf2('0xd'),_0x2d10fe[_0x6cf2('0x2')]),_0x2d10fe);utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0xe'),_0x2d10fe[_0x6cf2('0x2')],_0x2d10fe[_0x6cf2('0x4')],_0x2d10fe['position']));queues[_0x2d10fe[_0x6cf2('0x2')]]=_[_0x6cf2('0xf')](_0x2d10fe,{'originalposition':_0x2d10fe[_0x6cf2('0x10')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x26a2da){utils[_0x6cf2('0x11')](util['format'](_0x6cf2('0xd'),_0x2d10fe[_0x6cf2('0x2')]),_0x26a2da);}};exports['hangup']=function(_0xbe5e8d){try{if(!_[_0x6cf2('0x12')](queues[_0xbe5e8d[_0x6cf2('0x2')]])){utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')](_0x6cf2('0x14'),_0xbe5e8d[_0x6cf2('0x2')]),_0xbe5e8d);if(queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0x15')]){if(!queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0x16')]&&!queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0x17')]){queues[_0xbe5e8d['uniqueid']]['queuecallercomplete']=!![];queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0x18')]=utils['now']();queues[_0xbe5e8d['uniqueid']][_0x6cf2('0x19')]=_0x6cf2('0x1a');}utils['info'](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0xbe5e8d[_0x6cf2('0x2')],queues[_0xbe5e8d[_0x6cf2('0x2')]]['name'],queues[_0xbe5e8d['uniqueid']][_0x6cf2('0x19')]));writeDB(queues[_0xbe5e8d[_0x6cf2('0x2')]]);}else if(queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0xb')]){utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0xbe5e8d[_0x6cf2('0x2')],queues[_0xbe5e8d['uniqueid']]['name'],queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0xb')]));queues[queues[_0xbe5e8d[_0x6cf2('0x2')]][_0x6cf2('0xb')]]=queues[_0xbe5e8d[_0x6cf2('0x2')]];queues[queues[_0xbe5e8d['uniqueid']][_0x6cf2('0xb')]][_0x6cf2('0x1b')]=0x2;delete queues[_0xbe5e8d['uniqueid']];}}}catch(_0x4c9710){utils[_0x6cf2('0x11')](util[_0x6cf2('0x1')]('[%s][queues][hangup]',_0xbe5e8d[_0x6cf2('0x2')]),_0x4c9710);}};exports[_0x6cf2('0x1c')]=function(_0x504390){try{utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')](_0x6cf2('0x1d'),_0x504390[_0x6cf2('0x2')]),_0x504390);if(!_[_0x6cf2('0x12')](_0x504390[_0x6cf2('0x1e')][_0x6cf2('0x1f')])&&_0x504390[_0x6cf2('0x20')][_0x6cf2('0x21')]()!==_0x6cf2('0x22')){if(!_['isNil'](queues[_0x504390[_0x6cf2('0x2')]])){queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x16')]=![];queues[_0x504390['uniqueid']]['queuecallerabandonAt']=null;queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x17')]=!![];queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x23')]=utils['now']();queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x19')]=_0x504390[_0x6cf2('0x20')][_0x6cf2('0x21')]();utils['info'](util['format'](_0x6cf2('0x24'),_0x504390[_0x6cf2('0x2')],queues[_0x504390['uniqueid']]['name'],_0x504390[_0x6cf2('0x20')],queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x19')]));writeDB(queues[_0x504390[_0x6cf2('0x2')]]);}}else if(!_[_0x6cf2('0x12')](_0x504390[_0x6cf2('0x1e')]['queueposition'])){if(!_[_0x6cf2('0x12')](queues[_0x504390['uniqueid']])&&!queues[_0x504390['uniqueid']][_0x6cf2('0x16')]){queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x16')]=![];queues[_0x504390[_0x6cf2('0x2')]]['queuecallerabandonAt']=null;queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x17')]=!![];queues[_0x504390[_0x6cf2('0x2')]]['queuecallerexitAt']=utils[_0x6cf2('0x25')]();queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x19')]=_0x6cf2('0x26');utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0x27'),_0x504390['uniqueid'],queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x28')],_0x504390[_0x6cf2('0x20')],queues[_0x504390[_0x6cf2('0x2')]][_0x6cf2('0x19')]));}}}catch(_0x1bb821){utils[_0x6cf2('0x11')](util['format']('[%s][queues][varset]',_0x504390[_0x6cf2('0x2')]),_0x1bb821);}};exports[_0x6cf2('0x16')]=function(_0x5421bd){try{if(!_[_0x6cf2('0x12')](queues[_0x5421bd[_0x6cf2('0x2')]])){utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')]('[%s][queues][queuecallerabandon]',_0x5421bd['uniqueid']),_0x5421bd);queues[_0x5421bd[_0x6cf2('0x2')]][_0x6cf2('0x17')]=![];queues[_0x5421bd[_0x6cf2('0x2')]][_0x6cf2('0x23')]=null;queues[_0x5421bd['uniqueid']][_0x6cf2('0x16')]=!![];queues[_0x5421bd['uniqueid']][_0x6cf2('0x29')]=utils[_0x6cf2('0x25')]();queues[_0x5421bd[_0x6cf2('0x2')]][_0x6cf2('0x19')]=_0x6cf2('0x2a');utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0x2b'),_0x5421bd[_0x6cf2('0x2')],queues[_0x5421bd[_0x6cf2('0x2')]][_0x6cf2('0x28')],queues[_0x5421bd['uniqueid']][_0x6cf2('0x19')]));}}catch(_0x19b671){utils['error'](util['format'](_0x6cf2('0x2c'),_0x5421bd['uniqueid']),_0x19b671);}};exports[_0x6cf2('0x2d')]=function(_0x300ed1){try{if(!_[_0x6cf2('0x12')](queues[_0x300ed1[_0x6cf2('0x2')]])){utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')]('[%s][queues][queuecallerleave]',_0x300ed1[_0x6cf2('0x2')]),_0x300ed1);utils[_0x6cf2('0x0')](util['format'](_0x6cf2('0x2e'),_0x300ed1[_0x6cf2('0x2')],queues[_0x300ed1['uniqueid']][_0x6cf2('0x28')],_0x300ed1['connectedlinenum'],_0x300ed1['connectedlinename']));queues[_0x300ed1['uniqueid']]['queuecallerleave']=!![];queues[_0x300ed1[_0x6cf2('0x2')]]['queuecallerleaveAt']=utils['now']();queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x2f')]=utils[_0x6cf2('0x30')](queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x15')],queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x31')]);queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x10')]=_0x300ed1['position'];queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x32')]=_0x300ed1[_0x6cf2('0x32')];queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x33')]=_0x300ed1['connectedlinenum'];queues[_0x300ed1[_0x6cf2('0x2')]][_0x6cf2('0x34')]=_0x300ed1[_0x6cf2('0x34')];}}catch(_0xd3ca2f){utils[_0x6cf2('0x11')](util[_0x6cf2('0x1')](_0x6cf2('0x35'),_0x300ed1[_0x6cf2('0x2')]),_0xd3ca2f);}};exports['agentconnect']=function(_0x3cbf24){try{if(!_[_0x6cf2('0x12')](queues[_0x3cbf24[_0x6cf2('0x2')]])){utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')](_0x6cf2('0x36'),_0x3cbf24[_0x6cf2('0x2')]),_0x3cbf24);utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0x37'),_0x3cbf24[_0x6cf2('0x2')],queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x28')],_0x3cbf24['membername'],_0x3cbf24[_0x6cf2('0x38')]));queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x16')]=![];queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x16')]=![];queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x29')]=null;queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x17')]=![];queues[_0x3cbf24[_0x6cf2('0x2')]]['queuecallerexitreason']=null;queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x23')]=null;queues[_0x3cbf24[_0x6cf2('0x2')]][_0x6cf2('0x39')]=!![];queues[_0x3cbf24['uniqueid']][_0x6cf2('0x3a')]=_0x3cbf24['destaccountcode'];queues[_0x3cbf24[_0x6cf2('0x2')]]['lastAssignedTo']=_0x3cbf24[_0x6cf2('0x3b')];}}catch(_0x5669c4){utils['error'](util[_0x6cf2('0x1')](_0x6cf2('0x36'),_0x3cbf24[_0x6cf2('0x2')]),_0x5669c4);}};exports[_0x6cf2('0x3c')]=function(_0x5e6eaa){try{if(!_[_0x6cf2('0x12')](queues[_0x5e6eaa[_0x6cf2('0x2')]])){if(queues[_0x5e6eaa['uniqueid']][_0x6cf2('0x15')]){utils['debug'](util['format']('[%s][queues][agentcomplete]',_0x5e6eaa['uniqueid']),_0x5e6eaa);queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x16')]=![];queues[_0x5e6eaa['uniqueid']][_0x6cf2('0x16')]=![];queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x29')]=null;queues[_0x5e6eaa['uniqueid']]['queuecallerexit']=![];queues[_0x5e6eaa[_0x6cf2('0x2')]]['queuecallerexitAt']=null;queues[_0x5e6eaa[_0x6cf2('0x2')]]['assigned']=!![];queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x5')]=_0x5e6eaa[_0x6cf2('0x3b')];queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x3d')]=!![];queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x18')]=utils[_0x6cf2('0x25')]();if(_0x5e6eaa[_0x6cf2('0x3e')]==_0x6cf2('0x3f')){if(!queues[_0x5e6eaa['uniqueid']][_0x6cf2('0x3f')]){queues[_0x5e6eaa[_0x6cf2('0x2')]][_0x6cf2('0x19')]=_0x6cf2('0x40');}}else{queues[_0x5e6eaa['uniqueid']][_0x6cf2('0x19')]=_0x6cf2('0x41')+_0x5e6eaa['reason'][_0x6cf2('0x21')]();}utils[_0x6cf2('0x0')](util['format'](_0x6cf2('0x42'),_0x5e6eaa[_0x6cf2('0x2')],queues[_0x5e6eaa[_0x6cf2('0x2')]]['name'],_0x5e6eaa['membername'],queues[_0x5e6eaa['uniqueid']][_0x6cf2('0x19')]));writeDB(queues[_0x5e6eaa[_0x6cf2('0x2')]]);}}}catch(_0x13d334){utils[_0x6cf2('0x11')](util[_0x6cf2('0x1')](_0x6cf2('0x43'),_0x5e6eaa[_0x6cf2('0x2')]),_0x13d334);}};exports[_0x6cf2('0x44')]=function(_0x32c407){try{if(!_[_0x6cf2('0x12')](queues[_0x32c407[_0x6cf2('0x45')]])){utils[_0x6cf2('0x13')](util['format'](_0x6cf2('0x46'),_0x32c407[_0x6cf2('0x2')]),_0x32c407);queues[_0x32c407['transfereeuniqueid']][_0x6cf2('0x3f')]=!![];queues[_0x32c407[_0x6cf2('0x45')]][_0x6cf2('0x47')]=_0x6cf2('0x48');queues[_0x32c407['transfereeuniqueid']][_0x6cf2('0x49')]=_0x32c407[_0x6cf2('0x4a')];queues[_0x32c407[_0x6cf2('0x45')]][_0x6cf2('0x4b')]=_0x32c407[_0x6cf2('0x45')];queues[_0x32c407[_0x6cf2('0x45')]][_0x6cf2('0x19')]='BLINDTRANSFER';utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0x4c'),_0x32c407[_0x6cf2('0x2')],queues[_0x32c407[_0x6cf2('0x45')]][_0x6cf2('0x28')],_0x32c407['transfereeuniqueid'],_0x32c407['extension']));}}catch(_0x12fbc9){utils[_0x6cf2('0x11')](util[_0x6cf2('0x1')](_0x6cf2('0x46'),_0x32c407[_0x6cf2('0x2')]),_0x12fbc9);}};exports['attendedtransfer']=function(_0x2486cf){try{utils['debug'](util[_0x6cf2('0x1')](_0x6cf2('0x4d'),_0x2486cf[_0x6cf2('0x4e')]),_0x2486cf);if(_0x2486cf[_0x6cf2('0x4e')]==_0x2486cf[_0x6cf2('0x4f')]){if(!_['isNil'](queues[_0x2486cf[_0x6cf2('0x50')]])){utils['info'](util[_0x6cf2('0x1')](_0x6cf2('0x51'),_0x2486cf[_0x6cf2('0x4e')],queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0x28')],_0x2486cf['origtransfererexten']));queues[_0x2486cf['secondtransfererlinkedid']][_0x6cf2('0x3f')]=!![];queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0x47')]=_0x6cf2('0x52');queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0x49')]=_0x2486cf[_0x6cf2('0x53')];queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0x4b')]=_0x2486cf[_0x6cf2('0x4e')];queues[_0x2486cf[_0x6cf2('0x50')]]['queuecallerexitreason']=_0x6cf2('0x54');}if(!_[_0x6cf2('0x12')](queues[_0x2486cf[_0x6cf2('0x4f')]])){if(_0x2486cf['transfereelinkedid']&&queues[_0x2486cf[_0x6cf2('0x55')]]){queues[_0x2486cf[_0x6cf2('0x55')]][_0x6cf2('0x1b')]=0x1;queues[_0x2486cf[_0x6cf2('0x45')]]=_[_0x6cf2('0x56')](queues[_0x2486cf[_0x6cf2('0x55')]]);queues[_0x2486cf['transfereeuniqueid']][_0x6cf2('0xb')]=_0x2486cf[_0x6cf2('0x57')];queues[_0x2486cf[_0x6cf2('0x45')]]['queuecallerenterreason']=0x2;queues[_0x2486cf['transfereeuniqueid']][_0x6cf2('0x6')]=queues[_0x2486cf[_0x6cf2('0x50')]]['calleridnum'];queues[_0x2486cf[_0x6cf2('0x45')]][_0x6cf2('0x58')]=queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0x58')];queues[_0x2486cf[_0x6cf2('0x45')]]['queuecallerjoinAt']=utils[_0x6cf2('0x25')]();queues[_0x2486cf[_0x6cf2('0x45')]][_0x6cf2('0x15')]=utils[_0x6cf2('0x25')]();queues[_0x2486cf['transfereeuniqueid']][_0x6cf2('0x2f')]=0x0;queues[_0x2486cf['transfereeuniqueid']][_0x6cf2('0x59')]=0x0;utils['info'](util[_0x6cf2('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x2486cf[_0x6cf2('0x4e')],queues[_0x2486cf['transfereeuniqueid']][_0x6cf2('0x28')],queues[_0x2486cf['transfereeuniqueid']]['calleridnum'],queues[_0x2486cf[_0x6cf2('0x45')]]['calleridname']));}else{utils[_0x6cf2('0x0')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x2486cf[_0x6cf2('0x4e')],queues[_0x2486cf[_0x6cf2('0x4f')]]['name'],_0x2486cf[_0x6cf2('0x50')]));queues[_0x2486cf[_0x6cf2('0x4f')]]['transfereduniqueid']=_0x2486cf['secondtransfererlinkedid'];}}}else if(_0x2486cf['secondtransfereruniqueid']==_0x2486cf[_0x6cf2('0x50')]){if(!_[_0x6cf2('0x12')](queues[_0x2486cf[_0x6cf2('0x4f')]])){utils['info'](util[_0x6cf2('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x2486cf[_0x6cf2('0x4e')],queues[_0x2486cf[_0x6cf2('0x4f')]][_0x6cf2('0x28')],_0x2486cf[_0x6cf2('0x5a')],_0x2486cf[_0x6cf2('0x5b')]));queues[_0x2486cf['origtransfererlinkedid']]['transfer']=!![];queues[_0x2486cf['origtransfererlinkedid']][_0x6cf2('0x47')]=_0x6cf2('0x52');queues[_0x2486cf[_0x6cf2('0x4f')]][_0x6cf2('0x49')]=_0x2486cf[_0x6cf2('0x5b')];queues[_0x2486cf['origtransfererlinkedid']][_0x6cf2('0x4b')]=_0x2486cf[_0x6cf2('0x5a')];queues[_0x2486cf[_0x6cf2('0x4f')]]['queuecallerexitreason']=_0x6cf2('0x54');}if(!_[_0x6cf2('0x12')](queues[_0x2486cf['secondtransfererlinkedid']])){if(_0x2486cf[_0x6cf2('0x5c')]&&queues[_0x2486cf[_0x6cf2('0x5c')]]){queues[_0x2486cf[_0x6cf2('0x5c')]][_0x6cf2('0x1b')]=0x1;queues[_0x2486cf['transfertargetuniqueid']]=_[_0x6cf2('0x56')](queues[_0x2486cf[_0x6cf2('0x5c')]]);queues[_0x2486cf[_0x6cf2('0x57')]]['transfereduniqueid']=_0x2486cf[_0x6cf2('0x57')];queues[_0x2486cf[_0x6cf2('0x57')]]['queuecallerenterreason']=0x2;queues[_0x2486cf[_0x6cf2('0x57')]]['calleridnum']=queues[_0x2486cf[_0x6cf2('0x4f')]][_0x6cf2('0x6')];queues[_0x2486cf[_0x6cf2('0x57')]][_0x6cf2('0x58')]=queues[_0x2486cf['origtransfererlinkedid']][_0x6cf2('0x58')];queues[_0x2486cf[_0x6cf2('0x57')]][_0x6cf2('0x31')]=utils[_0x6cf2('0x25')]();queues[_0x2486cf[_0x6cf2('0x57')]][_0x6cf2('0x15')]=utils[_0x6cf2('0x25')]();queues[_0x2486cf['transfertargetuniqueid']][_0x6cf2('0x2f')]=0x0;queues[_0x2486cf[_0x6cf2('0x57')]]['mohtime']=0x0;utils['info'](util['format'](_0x6cf2('0x5d'),_0x2486cf[_0x6cf2('0x4e')],queues[_0x2486cf[_0x6cf2('0x57')]]['name'],queues[_0x2486cf[_0x6cf2('0x57')]][_0x6cf2('0xb')],queues[_0x2486cf[_0x6cf2('0x57')]]['calleridnum'],queues[_0x2486cf[_0x6cf2('0x57')]][_0x6cf2('0x58')]));}else{utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')](_0x6cf2('0x5e'),_0x2486cf['origtransfereruniqueid'],queues[_0x2486cf['secondtransfererlinkedid']][_0x6cf2('0x28')],_0x2486cf[_0x6cf2('0x4f')]));queues[_0x2486cf[_0x6cf2('0x50')]][_0x6cf2('0xb')]=_0x2486cf[_0x6cf2('0x4f')];}}}}catch(_0x2f2dca){utils['error'](util['format'](_0x6cf2('0x4d'),_0x2486cf['origtransfereruniqueid']),_0x2f2dca);}};exports[_0x6cf2('0x5f')]=function(_0x57482c){try{if(!_[_0x6cf2('0x12')](queues[_0x57482c[_0x6cf2('0x2')]])){utils['debug'](util[_0x6cf2('0x1')](_0x6cf2('0x60'),_0x57482c['uniqueid']),_0x57482c);queues[_0x57482c[_0x6cf2('0x2')]][_0x6cf2('0x61')]=utils[_0x6cf2('0x25')]();utils[_0x6cf2('0x0')](util[_0x6cf2('0x1')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x57482c[_0x6cf2('0x2')],queues[_0x57482c[_0x6cf2('0x2')]][_0x6cf2('0x28')],queues[_0x57482c[_0x6cf2('0x2')]][_0x6cf2('0x61')]));}}catch(_0x4db706){utils[_0x6cf2('0x11')](util['format']('[%s][queues][musiconholdstart]',_0x57482c[_0x6cf2('0x2')]),_0x4db706);}};exports[_0x6cf2('0x62')]=function(_0x4eb77c){try{if(!_['isNil'](queues[_0x4eb77c[_0x6cf2('0x2')]])){if(!_[_0x6cf2('0x12')](queues[_0x4eb77c['uniqueid']]['musiconholdstartAt'])){utils[_0x6cf2('0x13')](util[_0x6cf2('0x1')](_0x6cf2('0x63'),_0x4eb77c[_0x6cf2('0x2')]),_0x4eb77c);queues[_0x4eb77c[_0x6cf2('0x2')]]['mohtime']+=utils['diffTime'](utils['now'](),queues[_0x4eb77c['uniqueid']][_0x6cf2('0x61')]);utils['info'](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x4eb77c['uniqueid'],queues[_0x4eb77c['uniqueid']][_0x6cf2('0x28')],queues[_0x4eb77c[_0x6cf2('0x2')]][_0x6cf2('0x59')]));delete queues[_0x4eb77c[_0x6cf2('0x2')]][_0x6cf2('0x61')];}}}catch(_0x179a67){utils['error'](util[_0x6cf2('0x1')](_0x6cf2('0x63'),_0x4eb77c[_0x6cf2('0x2')]),_0x179a67);}};
\ No newline at end of file
index b7e75d0..18c8708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb3=['variable','mixmonitor_filename','[%s][recordings][varset]','endsWith','value','replace','.WAV','find','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','monitors','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','[%s][recordings][newexten]','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blinds','transfereruniqueid','lodash','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','CreateVoiceRecording','request','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','transfer','error'];(function(_0xfb65aa,_0x1651a6){var _0x2aee31=function(_0x492245){while(--_0x492245){_0xfb65aa['push'](_0xfb65aa['shift']());}};_0x2aee31(++_0x1651a6);}(_0x2eb3,0x6f));var _0x32eb=function(_0x25cd1b,_0x245f2a){_0x25cd1b=_0x25cd1b-0x0;var _0xf00d7d=_0x2eb3[_0x25cd1b];return _0xf00d7d;};'use strict';var _=require(_0x32eb('0x0'));var util=require('util');var utils=require(_0x32eb('0x1'));var transfers=require(_0x32eb('0x2'));var recordings={};function writeDB(_0x539397){var _0x50daa7;utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x5'),_0x539397[_0x32eb('0x6')]));if(transfers['blinds'][_0x539397['uniqueid']]){_0x50daa7=_0x539397[_0x32eb('0x6')];_0x539397[_0x32eb('0x6')]=transfers['blinds'][_0x539397[_0x32eb('0x6')]][_0x32eb('0x7')];}if(_0x539397[_0x32eb('0x8')]){utils[_0x32eb('0x9')](_0x539397[_0x32eb('0x8')])[_0x32eb('0xa')](function(_0xae644e){if(_0xae644e){_0x539397[_0x32eb('0xb')]=_0xae644e[_0x32eb('0xc')];_0x539397['UserId']=_0xae644e['id'];}utils['request'](_0x32eb('0xd'),_0x539397);});}else{utils[_0x32eb('0xe')]('CreateVoiceRecording',_0x539397);}if(_0x50daa7)delete transfers['blinds'][_0x50daa7];}exports[_0x32eb('0xf')]=function(_0x44b438){try{utils['debug'](util[_0x32eb('0x4')](_0x32eb('0x10'),_0x44b438['uniqueid']),_0x44b438);if(_0x44b438['uniqueid']==_0x44b438[_0x32eb('0x11')]){utils['info'](util[_0x32eb('0x4')](_0x32eb('0x12'),_0x44b438[_0x32eb('0x6')],_0x44b438[_0x32eb('0x13')],_0x44b438['exten']));recordings[_0x44b438[_0x32eb('0x6')]]={'uniqueid':_0x44b438[_0x32eb('0x6')],'accountcode':_0x44b438[_0x32eb('0x8')],'exten':_0x44b438[_0x32eb('0x14')],'context':_0x44b438['context'],'channel':_0x44b438[_0x32eb('0x15')],'monitors':[]};}}catch(_0x285be0){utils['error'](util[_0x32eb('0x4')](_0x32eb('0x10'),_0x44b438['uniqueid']),_0x285be0);}};exports[_0x32eb('0x16')]=function(_0x332ac6){try{utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x18'),_0x332ac6['uniqueid']),_0x332ac6);if(!_[_0x32eb('0x19')](recordings[_0x332ac6[_0x32eb('0x6')]])&&_0x332ac6[_0x32eb('0x1a')]==0x6){utils['info'](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x332ac6[_0x32eb('0x6')],_0x332ac6[_0x32eb('0x13')],_0x332ac6[_0x32eb('0x15')]));}else if(!_[_0x32eb('0x19')](recordings[_0x332ac6[_0x32eb('0x11')]])&&_0x332ac6['channelstate']==0x6&&_0x332ac6[_0x32eb('0x13')]!=_0x32eb('0x1b')){utils[_0x32eb('0x3')](util[_0x32eb('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x332ac6[_0x32eb('0x6')],_0x332ac6[_0x32eb('0x11')],_0x332ac6[_0x32eb('0x13')],_0x332ac6[_0x32eb('0x15')]));recordings[_0x332ac6[_0x32eb('0x11')]]['accountcode']=_0x332ac6[_0x32eb('0x8')];}}catch(_0x320151){utils[_0x32eb('0x1c')](util['format'](_0x32eb('0x18'),_0x332ac6[_0x32eb('0x6')]),_0x320151);}};exports['varset']=function(_0x45b21d){try{if(!_['isNil'](_0x45b21d[_0x32eb('0x1d')])&&!_[_0x32eb('0x19')](_0x45b21d['variable'][_0x32eb('0x1e')])){utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x1f'),_0x45b21d[_0x32eb('0x6')]),_0x45b21d);utils['info'](util[_0x32eb('0x4')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x45b21d[_0x32eb('0x6')],_0x45b21d['variable'],_0x45b21d['value']));if(_[_0x32eb('0x20')](_0x45b21d['value'],'.wav49')){_0x45b21d[_0x32eb('0x21')]=_0x45b21d[_0x32eb('0x21')][_0x32eb('0x22')]('.wav49',_0x32eb('0x23'));}if(recordings[_0x45b21d[_0x32eb('0x11')]]){var _0x6192e2=_[_0x32eb('0x24')](recordings[_0x45b21d[_0x32eb('0x11')]]['monitors'],{'value':_0x45b21d[_0x32eb('0x21')]});if(_[_0x32eb('0x19')](_0x6192e2)){recordings[_0x45b21d['linkedid']]['monitors'][_0x32eb('0x25')]({'value':_0x45b21d[_0x32eb('0x21')]});}}}}catch(_0xf78f4){utils[_0x32eb('0x1c')](util[_0x32eb('0x4')](_0x32eb('0x1f'),_0x45b21d[_0x32eb('0x6')]),_0xf78f4);}};exports['hangup']=function(_0x5cd1d7){try{if(!_[_0x32eb('0x19')](recordings[_0x5cd1d7['uniqueid']])){utils[_0x32eb('0x17')](util[_0x32eb('0x4')](_0x32eb('0x26'),_0x5cd1d7[_0x32eb('0x6')]),_0x5cd1d7);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x27'),_0x5cd1d7['uniqueid'],_0x5cd1d7[_0x32eb('0x28')],_0x5cd1d7[_0x32eb('0x29')],_0x5cd1d7[_0x32eb('0x2a')]));recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x28')]=_0x5cd1d7['calleridnum'];recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x29')]=_0x5cd1d7['calleridname'];recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2b')]=_0x5cd1d7[_0x32eb('0x2b')];recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2c')]=_0x5cd1d7[_0x32eb('0x2c')];if(recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2d')]==_0x32eb('0x2e')&&recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x8')]){recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2b')]=recordings[_0x5cd1d7['uniqueid']][_0x32eb('0x8')];recordings[_0x5cd1d7[_0x32eb('0x6')]]['connectedlinename']='';}recordings[_0x5cd1d7[_0x32eb('0x6')]][_0x32eb('0x2f')]['forEach'](function(_0x211016){var _0x5403a4=_['clone'](recordings[_0x5cd1d7[_0x32eb('0x6')]]);_0x5403a4[_0x32eb('0x21')]=_0x211016[_0x32eb('0x21')];writeDB(_0x5403a4);});delete recordings[_0x5cd1d7['uniqueid']];}}catch(_0x14d181){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][hangup]',_0x5cd1d7['uniqueid']),_0x14d181);}};exports['newexten']=function(_0x5908cb){try{if(!_[_0x32eb('0x19')](recordings[_0x5908cb['uniqueid']])){utils['debug'](util[_0x32eb('0x4')]('[%s][recordings][newexten]',_0x5908cb[_0x32eb('0x6')]),_0x5908cb);utils[_0x32eb('0x3')](util['format'](_0x32eb('0x30'),_0x5908cb[_0x32eb('0x6')],_0x5908cb[_0x32eb('0x31')],_0x5908cb[_0x32eb('0x32')]));if(_0x5908cb[_0x32eb('0x31')][_0x32eb('0x33')]()==_0x32eb('0x34')&&_[_0x32eb('0x35')](_0x5908cb[_0x32eb('0x32')][_0x32eb('0x33')](),_0x32eb('0x36'))){var _0x3feb70=_0x5908cb[_0x32eb('0x32')][_0x32eb('0x37')]('=');var _0x4c09a0=_0x3feb70[0x0][_0x32eb('0x38')](_0x3feb70[0x0][_0x32eb('0x39')]('(')+0x1,_0x3feb70[0x0][_0x32eb('0x39')](')'));var _0x42f290=_0x3feb70[0x1];recordings[_0x5908cb[_0x32eb('0x6')]][_0x4c09a0]=_0x42f290;}}}catch(_0x547dac){utils[_0x32eb('0x1c')](util['format'](_0x32eb('0x3a'),_0x5908cb[_0x32eb('0x6')]),_0x547dac);}};exports[_0x32eb('0x3b')]=function(_0x3da230){try{if(!_[_0x32eb('0x19')](recordings[_0x3da230[_0x32eb('0x6')]])){utils['debug'](util[_0x32eb('0x4')]('[%s][recordings][queuecallerjoin]',_0x3da230[_0x32eb('0x6')]),_0x3da230);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x3c'),_0x3da230[_0x32eb('0x6')],_0x3da230[_0x32eb('0x3d')]));recordings[_0x3da230[_0x32eb('0x6')]]['queue']=_0x3da230[_0x32eb('0x3d')];}}catch(_0x171eba){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][queuecallerjoin]',_0x3da230[_0x32eb('0x6')]),_0x171eba);}};exports['blindtransfer']=function(_0x134507){try{utils[_0x32eb('0x17')](util['format'](_0x32eb('0x3e'),_0x134507[_0x32eb('0x6')]),_0x134507);utils[_0x32eb('0x3')](util[_0x32eb('0x4')](_0x32eb('0x3f'),_0x134507['uniqueid'],_0x134507[_0x32eb('0x40')],_0x134507[_0x32eb('0x41')],_0x134507[_0x32eb('0x42')],_0x134507[_0x32eb('0x43')]));if(recordings[_0x134507['transfereruniqueid']]&&transfers[_0x32eb('0x44')][_0x134507[_0x32eb('0x45')]]){transfers[_0x32eb('0x44')][_0x134507[_0x32eb('0x45')]]['recording']=!![];}}catch(_0x532a57){utils[_0x32eb('0x1c')](util['format']('[%s][recordings][blindtransfer]',_0x134507[_0x32eb('0x6')]),_0x532a57);}};
\ No newline at end of file
+var _0xb533=['transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','forEach','clone','appdata','application','toLowerCase','set','cdr','split','substring','lastIndexOf','[%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','transfereecalleridnum','transfereruniqueid','recording','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','blinds'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0xb533,0x160));var _0x3b53=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0xb533[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0x3b53('0x0'));var util=require(_0x3b53('0x1'));var utils=require(_0x3b53('0x2'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x55a574){var _0x118558;utils[_0x3b53('0x3')](util[_0x3b53('0x4')](_0x3b53('0x5'),_0x55a574[_0x3b53('0x6')]));if(transfers[_0x3b53('0x7')][_0x55a574[_0x3b53('0x6')]]){_0x118558=_0x55a574['uniqueid'];_0x55a574[_0x3b53('0x6')]=transfers[_0x3b53('0x7')][_0x55a574[_0x3b53('0x6')]][_0x3b53('0x8')];}if(_0x55a574[_0x3b53('0x9')]){utils[_0x3b53('0xa')](_0x55a574[_0x3b53('0x9')])[_0x3b53('0xb')](function(_0x298289){if(_0x298289){_0x55a574[_0x3b53('0xc')]=_0x298289[_0x3b53('0xd')];_0x55a574[_0x3b53('0xe')]=_0x298289['id'];}utils[_0x3b53('0xf')]('CreateVoiceRecording',_0x55a574);});}else{utils[_0x3b53('0xf')](_0x3b53('0x10'),_0x55a574);}if(_0x118558)delete transfers[_0x3b53('0x7')][_0x118558];}exports['newchannel']=function(_0x455299){try{utils['debug'](util[_0x3b53('0x4')](_0x3b53('0x11'),_0x455299['uniqueid']),_0x455299);if(_0x455299[_0x3b53('0x6')]==_0x455299[_0x3b53('0x12')]){utils[_0x3b53('0x3')](util['format'](_0x3b53('0x13'),_0x455299[_0x3b53('0x6')],_0x455299[_0x3b53('0x14')],_0x455299['exten']));recordings[_0x455299[_0x3b53('0x6')]]={'uniqueid':_0x455299['uniqueid'],'accountcode':_0x455299[_0x3b53('0x9')],'exten':_0x455299[_0x3b53('0x15')],'context':_0x455299[_0x3b53('0x14')],'channel':_0x455299[_0x3b53('0x16')],'monitors':[]};}}catch(_0x66622f){utils[_0x3b53('0x17')](util[_0x3b53('0x4')](_0x3b53('0x11'),_0x455299[_0x3b53('0x6')]),_0x66622f);}};exports[_0x3b53('0x18')]=function(_0x2303a3){try{utils[_0x3b53('0x19')](util['format'](_0x3b53('0x1a'),_0x2303a3['uniqueid']),_0x2303a3);if(!_[_0x3b53('0x1b')](recordings[_0x2303a3[_0x3b53('0x6')]])&&_0x2303a3[_0x3b53('0x1c')]==0x6){utils[_0x3b53('0x3')](util[_0x3b53('0x4')](_0x3b53('0x1d'),_0x2303a3[_0x3b53('0x6')],_0x2303a3['context'],_0x2303a3[_0x3b53('0x16')]));}else if(!_['isNil'](recordings[_0x2303a3['linkedid']])&&_0x2303a3[_0x3b53('0x1c')]==0x6&&_0x2303a3['context']!='transfer'){utils[_0x3b53('0x3')](util[_0x3b53('0x4')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2303a3[_0x3b53('0x6')],_0x2303a3[_0x3b53('0x12')],_0x2303a3[_0x3b53('0x14')],_0x2303a3['channel']));recordings[_0x2303a3[_0x3b53('0x12')]][_0x3b53('0x9')]=_0x2303a3[_0x3b53('0x9')];}}catch(_0x12a99c){utils['error'](util[_0x3b53('0x4')](_0x3b53('0x1a'),_0x2303a3['uniqueid']),_0x12a99c);}};exports[_0x3b53('0x1e')]=function(_0x5be8d7){try{if(!_[_0x3b53('0x1b')](_0x5be8d7[_0x3b53('0x1f')])&&!_[_0x3b53('0x1b')](_0x5be8d7['variable'][_0x3b53('0x20')])){utils[_0x3b53('0x19')](util[_0x3b53('0x4')](_0x3b53('0x21'),_0x5be8d7['uniqueid']),_0x5be8d7);utils[_0x3b53('0x3')](util[_0x3b53('0x4')](_0x3b53('0x22'),_0x5be8d7[_0x3b53('0x6')],_0x5be8d7['variable'],_0x5be8d7['value']));if(_['endsWith'](_0x5be8d7[_0x3b53('0x23')],_0x3b53('0x24'))){_0x5be8d7['value']=_0x5be8d7['value'][_0x3b53('0x25')]('.wav49',_0x3b53('0x26'));}if(recordings[_0x5be8d7[_0x3b53('0x12')]]){var _0x5f39ad=_['find'](recordings[_0x5be8d7['linkedid']][_0x3b53('0x27')],{'value':_0x5be8d7[_0x3b53('0x23')]});if(_[_0x3b53('0x1b')](_0x5f39ad)){recordings[_0x5be8d7['linkedid']][_0x3b53('0x27')][_0x3b53('0x28')]({'value':_0x5be8d7[_0x3b53('0x23')]});}}}}catch(_0x1e1511){utils['error'](util['format'](_0x3b53('0x21'),_0x5be8d7['uniqueid']),_0x1e1511);}};exports[_0x3b53('0x29')]=function(_0x574c32){try{if(!_[_0x3b53('0x1b')](recordings[_0x574c32[_0x3b53('0x6')]])){utils[_0x3b53('0x19')](util[_0x3b53('0x4')](_0x3b53('0x2a'),_0x574c32['uniqueid']),_0x574c32);utils['info'](util[_0x3b53('0x4')](_0x3b53('0x2b'),_0x574c32['uniqueid'],_0x574c32['calleridnum'],_0x574c32[_0x3b53('0x2c')],_0x574c32[_0x3b53('0x2d')]));recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x2e')]=_0x574c32[_0x3b53('0x2e')];recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x2c')]=_0x574c32[_0x3b53('0x2c')];recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x2f')]=_0x574c32[_0x3b53('0x2f')];recordings[_0x574c32['uniqueid']]['connectedlinename']=_0x574c32[_0x3b53('0x30')];if(recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x31')]==_0x3b53('0x32')&&recordings[_0x574c32['uniqueid']][_0x3b53('0x9')]){recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x2f')]=recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x9')];recordings[_0x574c32[_0x3b53('0x6')]]['connectedlinename']='';}recordings[_0x574c32[_0x3b53('0x6')]][_0x3b53('0x27')][_0x3b53('0x33')](function(_0x3c89e4){var _0x1116f3=_[_0x3b53('0x34')](recordings[_0x574c32[_0x3b53('0x6')]]);_0x1116f3[_0x3b53('0x23')]=_0x3c89e4['value'];writeDB(_0x1116f3);});delete recordings[_0x574c32[_0x3b53('0x6')]];}}catch(_0x12b41e){utils['error'](util[_0x3b53('0x4')]('[%s][recordings][hangup]',_0x574c32[_0x3b53('0x6')]),_0x12b41e);}};exports['newexten']=function(_0x2510f2){try{if(!_[_0x3b53('0x1b')](recordings[_0x2510f2[_0x3b53('0x6')]])){utils['debug'](util[_0x3b53('0x4')]('[%s][recordings][newexten]',_0x2510f2[_0x3b53('0x6')]),_0x2510f2);utils[_0x3b53('0x3')](util['format']('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x2510f2['uniqueid'],_0x2510f2['application'],_0x2510f2[_0x3b53('0x35')]));if(_0x2510f2[_0x3b53('0x36')][_0x3b53('0x37')]()==_0x3b53('0x38')&&_['startsWith'](_0x2510f2[_0x3b53('0x35')]['toLowerCase'](),_0x3b53('0x39'))){var _0x2954f0=_0x2510f2['appdata'][_0x3b53('0x3a')]('=');var _0x464b4f=_0x2954f0[0x0][_0x3b53('0x3b')](_0x2954f0[0x0]['lastIndexOf']('(')+0x1,_0x2954f0[0x0][_0x3b53('0x3c')](')'));var _0x42499d=_0x2954f0[0x1];recordings[_0x2510f2['uniqueid']][_0x464b4f]=_0x42499d;}}}catch(_0x58db81){utils[_0x3b53('0x17')](util[_0x3b53('0x4')]('[%s][recordings][newexten]',_0x2510f2[_0x3b53('0x6')]),_0x58db81);}};exports['queuecallerjoin']=function(_0x13c317){try{if(!_[_0x3b53('0x1b')](recordings[_0x13c317['uniqueid']])){utils[_0x3b53('0x19')](util['format'](_0x3b53('0x3d'),_0x13c317[_0x3b53('0x6')]),_0x13c317);utils[_0x3b53('0x3')](util[_0x3b53('0x4')](_0x3b53('0x3e'),_0x13c317[_0x3b53('0x6')],_0x13c317['queue']));recordings[_0x13c317['uniqueid']][_0x3b53('0x3f')]=_0x13c317[_0x3b53('0x3f')];}}catch(_0x11a1bf){utils[_0x3b53('0x17')](util['format'](_0x3b53('0x3d'),_0x13c317[_0x3b53('0x6')]),_0x11a1bf);}};exports[_0x3b53('0x40')]=function(_0xe55fe2){try{utils['debug'](util['format'](_0x3b53('0x41'),_0xe55fe2[_0x3b53('0x6')]),_0xe55fe2);utils['info'](util['format'](_0x3b53('0x42'),_0xe55fe2[_0x3b53('0x6')],_0xe55fe2[_0x3b53('0x43')],_0xe55fe2[_0x3b53('0x44')],_0xe55fe2[_0x3b53('0x45')],_0xe55fe2['transfereecalleridname']));if(recordings[_0xe55fe2['transfereruniqueid']]&&transfers[_0x3b53('0x7')][_0xe55fe2[_0x3b53('0x46')]]){transfers['blinds'][_0xe55fe2[_0x3b53('0x46')]][_0x3b53('0x47')]=!![];}}catch(_0x1c4579){utils[_0x3b53('0x17')](util[_0x3b53('0x4')](_0x3b53('0x41'),_0xe55fe2[_0x3b53('0x6')]),_0x1c4579);}};
\ No newline at end of file
index 903c65b..7a1515d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb24=['origtransferercontext','origtransfererexten','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfereecalleridnum','transfereecalleridname','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid'];(function(_0x24e1bf,_0xe34921){var _0x241838=function(_0x173e0a){while(--_0x173e0a){_0x24e1bf['push'](_0x24e1bf['shift']());}};_0x241838(++_0xe34921);}(_0xcb24,0x183));var _0x4cb2=function(_0x41619c,_0x3f83be){_0x41619c=_0x41619c-0x0;var _0x1997f1=_0xcb24[_0x41619c];return _0x1997f1;};'use strict';var _=require(_0x4cb2('0x0'));var util=require(_0x4cb2('0x1'));var utils=require('./utils');function writeDB(_0x1303ea){utils[_0x4cb2('0x2')](util[_0x4cb2('0x3')](_0x4cb2('0x4'),_0x1303ea['type']===_0x4cb2('0x5')?_0x1303ea[_0x4cb2('0x6')]:_0x1303ea['uniqueid'],_0x1303ea[_0x4cb2('0x7')]));utils[_0x4cb2('0x8')](_0x4cb2('0x9'),_0x1303ea);}exports[_0x4cb2('0xa')]={};exports[_0x4cb2('0xb')]=function(_0x100bea){try{utils[_0x4cb2('0xc')](util[_0x4cb2('0x3')](_0x4cb2('0xd'),_0x100bea[_0x4cb2('0xe')]),_0x100bea);utils[_0x4cb2('0x2')](util['format'](_0x4cb2('0xf'),_0x100bea[_0x4cb2('0xe')],_0x100bea['transferercalleridnum'],_0x100bea['transferercalleridname'],_0x100bea[_0x4cb2('0x10')],_0x100bea[_0x4cb2('0x11')]));_0x100bea[_0x4cb2('0x7')]=_0x4cb2('0x12');exports[_0x4cb2('0xa')][_0x100bea['transfereruniqueid']]=_0x100bea;writeDB(_0x100bea);}catch(_0x493bc5){utils[_0x4cb2('0x13')](util[_0x4cb2('0x3')](_0x4cb2('0xd'),_0x100bea[_0x4cb2('0xe')]),_0x493bc5);}};exports[_0x4cb2('0x14')]=function(_0x18e050){try{utils['debug'](util[_0x4cb2('0x3')](_0x4cb2('0x15'),_0x18e050[_0x4cb2('0x6')]),_0x18e050);utils[_0x4cb2('0x2')](util[_0x4cb2('0x3')](_0x4cb2('0x16'),_0x18e050['origtransfereruniqueid'],_0x18e050['origtransferercalleridnum'],_0x18e050[_0x4cb2('0x17')],_0x18e050[_0x4cb2('0x18')],_0x18e050[_0x4cb2('0x19')]));_0x18e050=_[_0x4cb2('0x1a')](_0x18e050,{'transfererchannel':_0x18e050['origtransfererchannel'],'transferercalleridnum':_0x18e050[_0x4cb2('0x1b')],'transferercalleridname':_0x18e050[_0x4cb2('0x17')],'transfererconnectedlinenum':_0x18e050[_0x4cb2('0x1c')],'transfererconnectedlinename':_0x18e050[_0x4cb2('0x1d')],'transfereraccountcode':_0x18e050['origtransfereraccountcode'],'transferercontext':_0x18e050[_0x4cb2('0x1e')],'transfererexten':_0x18e050[_0x4cb2('0x1f')],'transfererlinkedid':_0x18e050[_0x4cb2('0x20')],'context':_0x18e050[_0x4cb2('0x21')],'extension':_0x18e050[_0x4cb2('0x22')],'type':_0x4cb2('0x5')});if(_['isNil'](_0x18e050[_0x4cb2('0x23')])){_0x18e050=_[_0x4cb2('0x1a')](_0x18e050,{'transfereechannel':_0x18e050[_0x4cb2('0x24')],'transfereecalleridnum':_0x18e050[_0x4cb2('0x18')],'transfereecalleridname':_0x18e050[_0x4cb2('0x19')],'transfereeconnectedlinenum':_0x18e050[_0x4cb2('0x25')],'transfereeconnectedlinename':_0x18e050[_0x4cb2('0x26')],'transfereeaccountcode':_0x18e050[_0x4cb2('0x27')],'transfereecontext':_0x18e050[_0x4cb2('0x28')],'transfereeexten':_0x18e050[_0x4cb2('0x29')],'transfereelinkedid':_0x18e050['transfertargetlinkedid']});}writeDB(_0x18e050);}catch(_0xd3e562){utils[_0x4cb2('0x13')](util[_0x4cb2('0x3')](_0x4cb2('0x15'),_0x18e050[_0x4cb2('0x6')]),_0xd3e562);}};
\ No newline at end of file
+var _0xd2ea=['origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetlinkedid','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','blind','transfereruniqueid','error','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xd2ea,0x17b));var _0xad2e=function(_0x127a55,_0x513418){_0x127a55=_0x127a55-0x0;var _0x4c96cf=_0xd2ea[_0x127a55];return _0x4c96cf;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var utils=require('./utils');function writeDB(_0x42c863){utils[_0xad2e('0x2')](util[_0xad2e('0x3')](_0xad2e('0x4'),_0x42c863[_0xad2e('0x5')]===_0xad2e('0x6')?_0x42c863[_0xad2e('0x7')]:_0x42c863['uniqueid'],_0x42c863[_0xad2e('0x5')]));utils[_0xad2e('0x8')](_0xad2e('0x9'),_0x42c863);}exports[_0xad2e('0xa')]={};exports[_0xad2e('0xb')]=function(_0xa4b404){try{utils[_0xad2e('0xc')](util[_0xad2e('0x3')](_0xad2e('0xd'),_0xa4b404[_0xad2e('0xe')]),_0xa4b404);utils[_0xad2e('0x2')](util[_0xad2e('0x3')](_0xad2e('0xf'),_0xa4b404[_0xad2e('0xe')],_0xa4b404[_0xad2e('0x10')],_0xa4b404['transferercalleridname'],_0xa4b404['transfereecalleridnum'],_0xa4b404['transfereecalleridname']));_0xa4b404[_0xad2e('0x5')]=_0xad2e('0x11');exports[_0xad2e('0xa')][_0xa4b404[_0xad2e('0x12')]]=_0xa4b404;writeDB(_0xa4b404);}catch(_0x347d81){utils[_0xad2e('0x13')](util[_0xad2e('0x3')](_0xad2e('0xd'),_0xa4b404[_0xad2e('0xe')]),_0x347d81);}};exports['attendedtransfer']=function(_0xc65a41){try{utils[_0xad2e('0xc')](util['format'](_0xad2e('0x14'),_0xc65a41[_0xad2e('0x7')]),_0xc65a41);utils['info'](util[_0xad2e('0x3')](_0xad2e('0x15'),_0xc65a41[_0xad2e('0x7')],_0xc65a41[_0xad2e('0x16')],_0xc65a41[_0xad2e('0x17')],_0xc65a41[_0xad2e('0x18')],_0xc65a41['transfertargetcalleridname']));_0xc65a41=_[_0xad2e('0x19')](_0xc65a41,{'transfererchannel':_0xc65a41[_0xad2e('0x1a')],'transferercalleridnum':_0xc65a41[_0xad2e('0x16')],'transferercalleridname':_0xc65a41[_0xad2e('0x17')],'transfererconnectedlinenum':_0xc65a41[_0xad2e('0x1b')],'transfererconnectedlinename':_0xc65a41['secondtransfererconnectedlinename'],'transfereraccountcode':_0xc65a41[_0xad2e('0x1c')],'transferercontext':_0xc65a41['secondtransferercontext'],'transfererexten':_0xc65a41[_0xad2e('0x1d')],'transfererlinkedid':_0xc65a41[_0xad2e('0x1e')],'context':_0xc65a41[_0xad2e('0x1f')],'extension':_0xc65a41[_0xad2e('0x20')],'type':_0xad2e('0x6')});if(_[_0xad2e('0x21')](_0xc65a41[_0xad2e('0x22')])){_0xc65a41=_[_0xad2e('0x19')](_0xc65a41,{'transfereechannel':_0xc65a41[_0xad2e('0x23')],'transfereecalleridnum':_0xc65a41[_0xad2e('0x18')],'transfereecalleridname':_0xc65a41[_0xad2e('0x24')],'transfereeconnectedlinenum':_0xc65a41[_0xad2e('0x25')],'transfereeconnectedlinename':_0xc65a41[_0xad2e('0x26')],'transfereeaccountcode':_0xc65a41[_0xad2e('0x27')],'transfereecontext':_0xc65a41['transfertargetcontext'],'transfereeexten':_0xc65a41['transfertargetexten'],'transfereelinkedid':_0xc65a41[_0xad2e('0x28')]});}writeDB(_0xc65a41);}catch(_0x516eb3){utils[_0xad2e('0x13')](util['format'](_0xad2e('0x14'),_0xc65a41[_0xad2e('0x7')]),_0x516eb3);}};
\ No newline at end of file
index 22cbf0c..f81f349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa817=['[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','debug','inspect','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound'];(function(_0x1cfc05,_0x507617){var _0x57012a=function(_0x18ca7b){while(--_0x18ca7b){_0x1cfc05['push'](_0x1cfc05['shift']());}};_0x57012a(++_0x507617);}(_0xa817,0x7b));var _0x7a81=function(_0x302228,_0x49f52d){_0x302228=_0x302228-0x0;var _0x2b82c2=_0xa817[_0x302228];return _0x2b82c2;};'use strict';var BPromise=require(_0x7a81('0x0'));var jayson=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var util=require(_0x7a81('0x3'));var client=jayson[_0x7a81('0x4')][_0x7a81('0x5')]({'port':0x2329});var logger=require(_0x7a81('0x6'))(_0x7a81('0x7'));exports[_0x7a81('0x8')]=function(_0x4b5d54,_0x23551a){logger[_0x7a81('0x8')](_0x4b5d54,_0x23551a?util['inspect'](_0x23551a,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0x9')]=function(_0x35c35a,_0x3ab25c){logger[_0x7a81('0x9')](_0x35c35a,_0x3ab25c?util[_0x7a81('0xa')](_0x3ab25c,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0xb')]=function(_0x59d701,_0x3f5637){logger['error'](_0x59d701,_0x3f5637?util['inspect'](_0x3f5637,{'showHidden':![],'depth':null}):'');};exports[_0x7a81('0xc')]=function(_0x493b02,_0x41d90b){return client[_0x7a81('0xc')](_0x493b02,{'body':_0x41d90b})[_0x7a81('0xd')](function(_0x2116c5){logger[_0x7a81('0x9')](_0x7a81('0xe'),_0x493b02,_0x2116c5?util[_0x7a81('0xa')](_0x2116c5,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x12a089){logger[_0x7a81('0xb')](_0x7a81('0xe'),_0x493b02,_0x12a089?util['inspect'](_0x12a089,{'showHidden':![],'depth':null}):'');});};function getUser(_0x39e1d0){return client[_0x7a81('0xc')](_0x7a81('0xf'),{'options':{'raw':!![],'attributes':['id',_0x7a81('0x10'),_0x7a81('0x11'),_0x7a81('0x12')],'where':_0x39e1d0,'limit':0x1}})['then'](function(_0x4aef24){logger[_0x7a81('0x9')](_0x7a81('0x13'),JSON['stringify'](_0x39e1d0),_0x4aef24?util[_0x7a81('0xa')](_0x4aef24,{'showHidden':![],'depth':null}):'');return _0x4aef24[_0x7a81('0x14')][_0x7a81('0x15')]?_0x4aef24[_0x7a81('0x14')][0x0]:null;});}exports[_0x7a81('0x16')]=function(_0x3bec25){return new BPromise(function(_0x114cfa,_0x3d9a4f){if(_0x3bec25){return getUser({'internal':_0x3bec25})[_0x7a81('0xd')](function(_0x220da9){logger[_0x7a81('0x8')](_0x7a81('0x17'),_0x3bec25,_0x220da9?_0x7a81('0x18'):'notfound');return _0x114cfa(_0x220da9);})[_0x7a81('0x19')](function(_0x3b17cd){logger[_0x7a81('0xb')](_0x7a81('0x1a'),_0x3b17cd?util[_0x7a81('0xa')](_0x3b17cd,{'showHidden':![],'depth':null}):'');return _0x114cfa(null);});}return _0x114cfa(null);});};exports[_0x7a81('0x1b')]=function(_0x34dd0b){return new BPromise(function(_0x374f02,_0x177301){if(_0x34dd0b){return getUser({'interface':_0x34dd0b})['then'](function(_0x3c0c41){logger[_0x7a81('0x8')](_0x7a81('0x1c'),_0x34dd0b,_0x3c0c41?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x374f02(_0x3c0c41);})[_0x7a81('0x19')](function(_0x249ae1){logger[_0x7a81('0xb')]('[utils][getUserByInterface]',_0x249ae1?util[_0x7a81('0xa')](_0x249ae1,{'showHidden':![],'depth':null}):'');return _0x374f02(null);});}return _0x374f02(null);});};exports['getUserByName']=function(_0x5a472e){return new BPromise(function(_0x1e2476,_0x41ea68){if(_0x5a472e){return getUser({'name':_0x5a472e})[_0x7a81('0xd')](function(_0x545b79){logger[_0x7a81('0x8')](_0x7a81('0x1e'),_0x5a472e,_0x545b79?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x1e2476(_0x545b79);})[_0x7a81('0x19')](function(_0x507276){logger[_0x7a81('0xb')](_0x7a81('0x1f'),_0x507276?util[_0x7a81('0xa')](_0x507276,{'showHidden':![],'depth':null}):'');return _0x1e2476(null);});}return _0x1e2476(null);});};exports[_0x7a81('0x20')]=function(_0x29655a){return new BPromise(function(_0x3295df,_0x31fe26){if(_0x29655a){return client['request'](_0x7a81('0x21'),{'options':{'raw':!![],'attributes':['id','name',_0x7a81('0x22'),_0x7a81('0x23'),_0x7a81('0x24')],'where':{'name':_0x29655a},'limit':0x1}})['then'](function(_0x3f7e20){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x29655a,_0x3f7e20?util[_0x7a81('0xa')](_0x3f7e20,{'showHidden':![],'depth':null}):'');logger[_0x7a81('0x8')](_0x7a81('0x25'),_0x29655a,_0x3f7e20?_0x7a81('0x18'):_0x7a81('0x1d'));return _0x3295df(_0x3f7e20['result'][_0x7a81('0x15')]?_0x3f7e20[_0x7a81('0x14')][0x0]:null);})[_0x7a81('0x19')](function(_0x4337b6){logger[_0x7a81('0xb')](_0x7a81('0x26'),_0x4337b6?util[_0x7a81('0xa')](_0x4337b6,{'showHidden':![],'depth':null}):'');return _0x3295df(null);});}return _0x3295df(null);});};exports['addTime']=function(_0x2e0633,_0xb0be9c){return moment(_0x2e0633)[_0x7a81('0x27')](_0xb0be9c,'seconds')[_0x7a81('0x28')](_0x7a81('0x29'));};exports[_0x7a81('0x2a')]=function(_0x74b65d,_0x53fa1f){return moment(_0x74b65d)[_0x7a81('0x2b')](_0x53fa1f,_0x7a81('0x2c'))[_0x7a81('0x28')](_0x7a81('0x29'));};exports[_0x7a81('0x2d')]=function(_0x5bdd64,_0x3e8b89){return moment(_0x5bdd64)[_0x7a81('0x2e')](moment(_0x3e8b89),_0x7a81('0x2c'));};exports[_0x7a81('0x2f')]=function(_0x23a747,_0x41a124){return parseInt(_0x23a747,0xa)+parseInt(_0x41a124,0xa);};exports[_0x7a81('0x30')]=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x7a81('0x31')]=function(_0x1b1ebd,_0x537430){if(_0x537430){return moment(_0x1b1ebd)[_0x7a81('0x31')](_0x537430);}return!![];};exports[_0x7a81('0x32')]=function(_0x1d128c,_0x5c42bb){if(_0x5c42bb){return moment(_0x1d128c)[_0x7a81('0x32')](_0x5c42bb);}else if(_0x1d128c){return!![];}return![];};
\ No newline at end of file
+var _0x8e84=['info','inspect','debug','error','request','catch','[utils][request]\x20name:%s','GetUser','internal','interface','then','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','GetVoiceQueue','name','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diff','sumTime','now','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','xdr'];(function(_0x19d663,_0x4cd4ba){var _0x522918=function(_0x2de04a){while(--_0x2de04a){_0x19d663['push'](_0x19d663['shift']());}};_0x522918(++_0x4cd4ba);}(_0x8e84,0x1b2));var _0x48e8=function(_0x2d7035,_0x4721c4){_0x2d7035=_0x2d7035-0x0;var _0x3ce208=_0x8e84[_0x2d7035];return _0x3ce208;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x48e8('0x0'));var moment=require(_0x48e8('0x1'));var util=require(_0x48e8('0x2'));var client=jayson[_0x48e8('0x3')][_0x48e8('0x4')]({'port':0x2329});var logger=require(_0x48e8('0x5'))(_0x48e8('0x6'));exports[_0x48e8('0x7')]=function(_0x17de0c,_0x56bb55){logger[_0x48e8('0x7')](_0x17de0c,_0x56bb55?util[_0x48e8('0x8')](_0x56bb55,{'showHidden':![],'depth':null}):'');};exports[_0x48e8('0x9')]=function(_0x2ab0ae,_0x4c2c44){logger[_0x48e8('0x9')](_0x2ab0ae,_0x4c2c44?util['inspect'](_0x4c2c44,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x13bef6,_0x58af3b){logger[_0x48e8('0xa')](_0x13bef6,_0x58af3b?util[_0x48e8('0x8')](_0x58af3b,{'showHidden':![],'depth':null}):'');};exports[_0x48e8('0xb')]=function(_0x28a289,_0x400c1c){return client[_0x48e8('0xb')](_0x28a289,{'body':_0x400c1c})['then'](function(_0x1810b3){logger[_0x48e8('0x9')]('[utils][request]\x20name:%s',_0x28a289,_0x1810b3?util[_0x48e8('0x8')](_0x1810b3,{'showHidden':![],'depth':null}):'');})[_0x48e8('0xc')](function(_0x24e640){logger[_0x48e8('0xa')](_0x48e8('0xd'),_0x28a289,_0x24e640?util[_0x48e8('0x8')](_0x24e640,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2e49b0){return client['request'](_0x48e8('0xe'),{'options':{'raw':!![],'attributes':['id',_0x48e8('0xf'),'name',_0x48e8('0x10')],'where':_0x2e49b0,'limit':0x1}})[_0x48e8('0x11')](function(_0x47635d){logger[_0x48e8('0x9')](_0x48e8('0x12'),JSON[_0x48e8('0x13')](_0x2e49b0),_0x47635d?util['inspect'](_0x47635d,{'showHidden':![],'depth':null}):'');return _0x47635d[_0x48e8('0x14')][_0x48e8('0x15')]?_0x47635d['result'][0x0]:null;});}exports[_0x48e8('0x16')]=function(_0x9a7116){return new BPromise(function(_0x45b843,_0x4e1ad0){if(_0x9a7116){return getUser({'internal':_0x9a7116})[_0x48e8('0x11')](function(_0x316cdd){logger[_0x48e8('0x7')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x9a7116,_0x316cdd?_0x48e8('0x17'):_0x48e8('0x18'));return _0x45b843(_0x316cdd);})[_0x48e8('0xc')](function(_0x29408f){logger['error'](_0x48e8('0x19'),_0x29408f?util['inspect'](_0x29408f,{'showHidden':![],'depth':null}):'');return _0x45b843(null);});}return _0x45b843(null);});};exports[_0x48e8('0x1a')]=function(_0x2b7891){return new BPromise(function(_0x9c5eef,_0x509915){if(_0x2b7891){return getUser({'interface':_0x2b7891})[_0x48e8('0x11')](function(_0x15fc58){logger['info'](_0x48e8('0x1b'),_0x2b7891,_0x15fc58?_0x48e8('0x17'):'notfound');return _0x9c5eef(_0x15fc58);})[_0x48e8('0xc')](function(_0x208a3f){logger[_0x48e8('0xa')](_0x48e8('0x1c'),_0x208a3f?util['inspect'](_0x208a3f,{'showHidden':![],'depth':null}):'');return _0x9c5eef(null);});}return _0x9c5eef(null);});};exports[_0x48e8('0x1d')]=function(_0x3bd006){return new BPromise(function(_0x504294,_0x5e9e5a){if(_0x3bd006){return getUser({'name':_0x3bd006})[_0x48e8('0x11')](function(_0x56dd26){logger[_0x48e8('0x7')](_0x48e8('0x1e'),_0x3bd006,_0x56dd26?_0x48e8('0x17'):_0x48e8('0x18'));return _0x504294(_0x56dd26);})[_0x48e8('0xc')](function(_0x5b583d){logger['error']('[utils][getUserByName]',_0x5b583d?util[_0x48e8('0x8')](_0x5b583d,{'showHidden':![],'depth':null}):'');return _0x504294(null);});}return _0x504294(null);});};exports['getVoiceQueueByName']=function(_0x282bcb){return new BPromise(function(_0x1cce8d,_0x3dbd2d){if(_0x282bcb){return client[_0x48e8('0xb')](_0x48e8('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x48e8('0x20'),_0x48e8('0x21'),_0x48e8('0x22'),_0x48e8('0x23')],'where':{'name':_0x282bcb},'limit':0x1}})[_0x48e8('0x11')](function(_0x1f4d27){logger[_0x48e8('0x9')](_0x48e8('0x24'),_0x282bcb,_0x1f4d27?util[_0x48e8('0x8')](_0x1f4d27,{'showHidden':![],'depth':null}):'');logger[_0x48e8('0x7')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x282bcb,_0x1f4d27?_0x48e8('0x17'):'notfound');return _0x1cce8d(_0x1f4d27['result']['length']?_0x1f4d27['result'][0x0]:null);})[_0x48e8('0xc')](function(_0x4d52ca){logger[_0x48e8('0xa')](_0x48e8('0x25'),_0x4d52ca?util['inspect'](_0x4d52ca,{'showHidden':![],'depth':null}):'');return _0x1cce8d(null);});}return _0x1cce8d(null);});};exports[_0x48e8('0x26')]=function(_0xd95da0,_0xa33d30){return moment(_0xd95da0)['add'](_0xa33d30,_0x48e8('0x27'))[_0x48e8('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x48e8('0x29')]=function(_0x2260ed,_0x49c6e3){return moment(_0x2260ed)[_0x48e8('0x2a')](_0x49c6e3,_0x48e8('0x27'))[_0x48e8('0x28')](_0x48e8('0x2b'));};exports['diffTime']=function(_0x37bc3e,_0x34898e){return moment(_0x37bc3e)[_0x48e8('0x2c')](moment(_0x34898e),_0x48e8('0x27'));};exports[_0x48e8('0x2d')]=function(_0x3c4667,_0x300987){return parseInt(_0x3c4667,0xa)+parseInt(_0x300987,0xa);};exports[_0x48e8('0x2e')]=function(){return moment()['format'](_0x48e8('0x2b'));};exports[_0x48e8('0x2f')]=function(_0x221037,_0x27bdde){if(_0x27bdde){return moment(_0x221037)[_0x48e8('0x2f')](_0x27bdde);}return!![];};exports[_0x48e8('0x30')]=function(_0x5137b2,_0x2c2195){if(_0x2c2195){return moment(_0x5137b2)[_0x48e8('0x30')](_0x2c2195);}else if(_0x5137b2){return!![];}return![];};
\ No newline at end of file
index 4bfd11f..c0647fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cdb=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','connection','remoteAddress','statusCode','other','agent_name','setupLoggers','fs-extra','express-winston','path','util','./loggers','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','ensureDir','then','client','catch','log','user','no-user','data','timestamp','error','api','auth','set','client-side-logger','use','logger','isEmpty','body','format','headers','x-forwarded-for','url','responseTime','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id'];(function(_0x5160b6,_0x261d95){var _0x200f73=function(_0x667484){while(--_0x667484){_0x5160b6['push'](_0x5160b6['shift']());}};_0x200f73(++_0x261d95);}(_0x2cdb,0x1e7));var _0xb2cd=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x2cdb[_0x57b54c];return _0x59cc19;};var fs=require(_0xb2cd('0x0'));var _=require('lodash');var ewinston=require(_0xb2cd('0x1'));var path=require(_0xb2cd('0x2'));var util=require(_0xb2cd('0x3'));var fileLogger=require(_0xb2cd('0x4'))[_0xb2cd('0x5')];var safeTemplate=require(_0xb2cd('0x6'))[_0xb2cd('0x7')];var maskSensitiveData=require(_0xb2cd('0x8'))[_0xb2cd('0x9')];function ClientSideLogger(){function _0x2488ae(_0x4527c0){var _0x7a9e4e=path[_0xb2cd('0xa')](_0xb2cd('0xb'),'log','xcally');var _0x192569=path[_0xb2cd('0xa')]('client',_0x4527c0['role']+'-'+_0x4527c0['name']);return fs[_0xb2cd('0xc')](path[_0xb2cd('0xa')](_0x7a9e4e,_0x192569))[_0xb2cd('0xd')](function(){var _0x48cf01=fileLogger(_0xb2cd('0xe'),path[_0xb2cd('0xa')](_0x7a9e4e,_0x192569));return _0x48cf01;})[_0xb2cd('0xf')](function(_0x3113db){throw _0x3113db;});}this[_0xb2cd('0x10')]=function(_0x23ccf3,_0xf2ae38,_0x35589b,_0x7d3cd9){return _0x2488ae(_0x23ccf3[_0xb2cd('0x11')])['then'](function(_0x414dc4){var _0x366c30=_0x414dc4[_0xf2ae38];return _0x366c30;})[_0xb2cd('0xd')](function(_0x157bb1){var _0xfa9ee8=_0x23ccf3['user']?_0x23ccf3[_0xb2cd('0x11')]['id']:_0xb2cd('0x12');var _0x1053c7=_0x7d3cd9[_0xb2cd('0x13')];var _0x20fbea=_0x7d3cd9[_0xb2cd('0x14')];var _0x3459a5=new Date(Number(_0x20fbea));return _0x157bb1(_0xfa9ee8,_0x3459a5,_0x35589b,_0x1053c7);})['catch'](function(_0x567750){fileLogger(_0xb2cd('0xe'))[_0xb2cd('0x15')](_0x567750);});};}function setupLoggers(_0xfe1f8c){return new Promise(function(_0x57ac8f){var _0x1f0a79=new ClientSideLogger();var _0x3793ef=fileLogger(_0xb2cd('0x16'));var _0x268b44=fileLogger(_0xb2cd('0x17'));_0xfe1f8c[_0xb2cd('0x18')](_0xb2cd('0x19'),_0x1f0a79);_0xfe1f8c[_0xb2cd('0x1a')](ewinston[_0xb2cd('0x1b')]({'winstonInstance':_0x3793ef,'meta':![],'statusLevels':!![],'msg':function(_0x5389c0,_0x164ba4){var _0x58da73='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xb2cd('0x1c')](_0x5389c0[_0xb2cd('0x1d')])){_0x58da73+='\x20body=%s';var _0x1f73f2=_0x5389c0[_0xb2cd('0x1d')];maskSensitiveData(_0x1f73f2);}return safeTemplate(util[_0xb2cd('0x1e')](_0x58da73,_0x5389c0['method'],_0x5389c0[_0xb2cd('0x1f')][_0xb2cd('0x20')]?_0x5389c0['headers']['x-forwarded-for']:_0x5389c0['connection']['remoteAddress']||_0x5389c0['ip'],_0x5389c0[_0xb2cd('0x21')],_0x164ba4['statusCode'],_0x164ba4[_0xb2cd('0x22')],_0x5389c0['user']?_0x5389c0['user']['id']:null,_0x5389c0[_0xb2cd('0x11')]?_0x5389c0['user'][_0xb2cd('0x23')]:null,_0x5389c0['user']?_0x5389c0[_0xb2cd('0x11')][_0xb2cd('0x24')]:null,_0x1f73f2?util[_0xb2cd('0x25')](_0x1f73f2,![],null):''));}}));_0xfe1f8c[_0xb2cd('0x1a')](ewinston['logger']({'winstonInstance':_0x268b44,'meta':![],'statusLevels':!![],'msg':function(_0x1b3110,_0x50038c){var _0x4c45a7=_0xb2cd('0x26');if(_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110['body'][_0xb2cd('0x27')]&&_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x28')]){_0x4c45a7=_0xb2cd('0x29');}return util[_0xb2cd('0x1e')](_0x4c45a7,_0x1b3110['method'],_0x1b3110[_0xb2cd('0x1f')][_0xb2cd('0x20')]?_0x1b3110['headers'][_0xb2cd('0x20')]:_0x1b3110[_0xb2cd('0x2a')][_0xb2cd('0x2b')]||_0x1b3110['ip'],_0x1b3110['url'],_0x50038c[_0xb2cd('0x2c')],_0x50038c[_0xb2cd('0x22')],_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['id']:null,_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['name']:null,_0x1b3110[_0xb2cd('0x11')]?_0x1b3110[_0xb2cd('0x11')]['role']:null,_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110['body'][_0xb2cd('0x27')]?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x27')]:_0xb2cd('0x2d'),_0x1b3110['body']&&_0x1b3110[_0xb2cd('0x1d')]['agent_id']?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x28')]:'',_0x1b3110[_0xb2cd('0x1d')]&&_0x1b3110[_0xb2cd('0x1d')]['agent_name']?_0x1b3110[_0xb2cd('0x1d')][_0xb2cd('0x2e')]:'');},'ignoreRoute':function(_0x4f81ac){var _0x17b599=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x17b599['test'](_0x4f81ac['url']);}}));return _0x57ac8f();});}exports[_0xb2cd('0x2f')]=setupLoggers;
\ No newline at end of file
+var _0x5d29=['maskSensitiveData','join','/var','log','xcally','client','role','ensureDir','then','catch','user','no-user','data','timestamp','error','api','auth','set','client-side-logger','logger','body','\x20body=%s','format','headers','x-forwarded-for','remoteAddress','url','responseTime','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','method','connection','statusCode','name','other','agent_name','fs-extra','express-winston','util','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data'];(function(_0x3b9e0e,_0x2985ec){var _0x4a72b5=function(_0x4fb28f){while(--_0x4fb28f){_0x3b9e0e['push'](_0x3b9e0e['shift']());}};_0x4a72b5(++_0x2985ec);}(_0x5d29,0xdf));var _0x95d2=function(_0x50381e,_0xc4113b){_0x50381e=_0x50381e-0x0;var _0x23189f=_0x5d29[_0x50381e];return _0x23189f;};var fs=require(_0x95d2('0x0'));var _=require('lodash');var ewinston=require(_0x95d2('0x1'));var path=require('path');var util=require(_0x95d2('0x2'));var fileLogger=require('./loggers')[_0x95d2('0x3')];var safeTemplate=require(_0x95d2('0x4'))[_0x95d2('0x5')];var maskSensitiveData=require(_0x95d2('0x6'))[_0x95d2('0x7')];function ClientSideLogger(){function _0xcbe946(_0x1373db){var _0x4d1299=path[_0x95d2('0x8')](_0x95d2('0x9'),_0x95d2('0xa'),_0x95d2('0xb'));var _0x4b73a3=path[_0x95d2('0x8')](_0x95d2('0xc'),_0x1373db[_0x95d2('0xd')]+'-'+_0x1373db['name']);return fs[_0x95d2('0xe')](path['join'](_0x4d1299,_0x4b73a3))[_0x95d2('0xf')](function(){var _0x52550d=fileLogger('client',path[_0x95d2('0x8')](_0x4d1299,_0x4b73a3));return _0x52550d;})[_0x95d2('0x10')](function(_0x153199){throw _0x153199;});}this[_0x95d2('0xa')]=function(_0x5ecad4,_0x3ec122,_0x27cf4c,_0x1719d2){return _0xcbe946(_0x5ecad4[_0x95d2('0x11')])[_0x95d2('0xf')](function(_0x373232){var _0x46cfec=_0x373232[_0x3ec122];return _0x46cfec;})[_0x95d2('0xf')](function(_0x59c123){var _0x139688=_0x5ecad4[_0x95d2('0x11')]?_0x5ecad4['user']['id']:_0x95d2('0x12');var _0x54aa3e=_0x1719d2[_0x95d2('0x13')];var _0x11746b=_0x1719d2[_0x95d2('0x14')];var _0x4c4848=new Date(Number(_0x11746b));return _0x59c123(_0x139688,_0x4c4848,_0x27cf4c,_0x54aa3e);})[_0x95d2('0x10')](function(_0x234b0f){fileLogger('client')[_0x95d2('0x15')](_0x234b0f);});};}function setupLoggers(_0x4465f0){return new Promise(function(_0x5dbc04){var _0xf49e99=new ClientSideLogger();var _0xfb9278=fileLogger(_0x95d2('0x16'));var _0x17b02c=fileLogger(_0x95d2('0x17'));_0x4465f0[_0x95d2('0x18')](_0x95d2('0x19'),_0xf49e99);_0x4465f0['use'](ewinston[_0x95d2('0x1a')]({'winstonInstance':_0xfb9278,'meta':![],'statusLevels':!![],'msg':function(_0x1757d5,_0x43ea7f){var _0x29c7d0='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x1757d5[_0x95d2('0x1b')])){_0x29c7d0+=_0x95d2('0x1c');var _0x4183bd=_0x1757d5['body'];maskSensitiveData(_0x4183bd);}return safeTemplate(util[_0x95d2('0x1d')](_0x29c7d0,_0x1757d5['method'],_0x1757d5[_0x95d2('0x1e')][_0x95d2('0x1f')]?_0x1757d5[_0x95d2('0x1e')]['x-forwarded-for']:_0x1757d5['connection'][_0x95d2('0x20')]||_0x1757d5['ip'],_0x1757d5[_0x95d2('0x21')],_0x43ea7f['statusCode'],_0x43ea7f[_0x95d2('0x22')],_0x1757d5[_0x95d2('0x11')]?_0x1757d5[_0x95d2('0x11')]['id']:null,_0x1757d5[_0x95d2('0x11')]?_0x1757d5[_0x95d2('0x11')]['name']:null,_0x1757d5['user']?_0x1757d5[_0x95d2('0x11')]['role']:null,_0x4183bd?util[_0x95d2('0x23')](_0x4183bd,![],null):''));}}));_0x4465f0[_0x95d2('0x24')](ewinston['logger']({'winstonInstance':_0x17b02c,'meta':![],'statusLevels':!![],'msg':function(_0x1f527e,_0x38abd9){var _0x17cd9a=_0x95d2('0x25');if(_0x1f527e[_0x95d2('0x1b')]&&_0x1f527e['body'][_0x95d2('0x26')]&&_0x1f527e['body'][_0x95d2('0x27')]){_0x17cd9a='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x95d2('0x1d')](_0x17cd9a,_0x1f527e[_0x95d2('0x28')],_0x1f527e['headers'][_0x95d2('0x1f')]?_0x1f527e[_0x95d2('0x1e')][_0x95d2('0x1f')]:_0x1f527e[_0x95d2('0x29')][_0x95d2('0x20')]||_0x1f527e['ip'],_0x1f527e[_0x95d2('0x21')],_0x38abd9[_0x95d2('0x2a')],_0x38abd9[_0x95d2('0x22')],_0x1f527e[_0x95d2('0x11')]?_0x1f527e[_0x95d2('0x11')]['id']:null,_0x1f527e[_0x95d2('0x11')]?_0x1f527e['user'][_0x95d2('0x2b')]:null,_0x1f527e[_0x95d2('0x11')]?_0x1f527e[_0x95d2('0x11')][_0x95d2('0xd')]:null,_0x1f527e[_0x95d2('0x1b')]&&_0x1f527e[_0x95d2('0x1b')][_0x95d2('0x26')]?_0x1f527e['body'][_0x95d2('0x26')]:_0x95d2('0x2c'),_0x1f527e[_0x95d2('0x1b')]&&_0x1f527e[_0x95d2('0x1b')][_0x95d2('0x27')]?_0x1f527e[_0x95d2('0x1b')][_0x95d2('0x27')]:'',_0x1f527e[_0x95d2('0x1b')]&&_0x1f527e['body']['agent_name']?_0x1f527e[_0x95d2('0x1b')][_0x95d2('0x2d')]:'');},'ignoreRoute':function(_0x390078){var _0x4f5b4b=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4f5b4b['test'](_0x390078[_0x95d2('0x21')]);}}));return _0x5dbc04();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index 3c34df5..568872f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe493=['red','bold\x20yellow','bold\x20white','bold\x20green','bold\x20blue','addColors','join','format','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','keys','length','stringify','meta','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','Console','warn','transports','File','%s-%s','error','consoleLogger','fileLogger','path','util','winston','../config/environment','debugLevel','info','redBG\x20white'];(function(_0x3b7fb0,_0x553e21){var _0x3b7fc5=function(_0x286bdc){while(--_0x286bdc){_0x3b7fb0['push'](_0x3b7fb0['shift']());}};_0x3b7fc5(++_0x553e21);}(_0xe493,0x13d));var _0x3e49=function(_0x17295a,_0x1fd286){_0x17295a=_0x17295a-0x0;var _0x52e493=_0xe493[_0x17295a];return _0x52e493;};'use strict';var path=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require('moment');var winston=require(_0x3e49('0x2'));var config=require(_0x3e49('0x3'));var debugLevel=config[_0x3e49('0x4')]?config['debugLevel']['toLowerCase']():_0x3e49('0x5');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':_0x3e49('0x6'),'error':_0x3e49('0x7'),'warn':_0x3e49('0x8'),'info':'white','print':_0x3e49('0x9'),'success':_0x3e49('0xa'),'http':'gray','verbose':'bold\x20magenta','debug':_0x3e49('0xb'),'silly':'bold\x20cyan'};winston[_0x3e49('0xc')](XC_LOG_COLORS);function getLogFileName(_0x2fef00,_0x142a66,_0x17cd18){var _0x2c8a26=_0x2fef00||'/var/log/xcally';return path[_0x3e49('0xd')](_0x2c8a26,util[_0x3e49('0xe')]('%s-%s.log',_0x142a66,_0x17cd18));}function formatter(_0xc8b9ce,_0x32147a){_0x32147a['message']=_0x32147a[_0x3e49('0xf')][_0x3e49('0x10')](/@@{/g,_0x3e49('0x11'))[_0x3e49('0x10')](/}@@/g,'}}}')[_0x3e49('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x3e49('0xe')](_0x3e49('0x12'),moment()['format'](_0x3e49('0x13')),_0x32147a[_0x3e49('0x14')][_0x3e49('0x15')](),_0xc8b9ce,_0x32147a['message']);}function fileFormat(_0x135b56,_0x4fa43a){_0x4fa43a[_0x3e49('0xf')]=_0x4fa43a[_0x3e49('0xf')][_0x3e49('0x10')](/@@{/g,_0x3e49('0x11'))['replace'](/}@@/g,'}}}')[_0x3e49('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');var _0x347257=_0x4fa43a['meta']&&Object[_0x3e49('0x16')](_0x4fa43a['meta'])[_0x3e49('0x17')]?'\x0a\x09'+JSON[_0x3e49('0x18')](_0x4fa43a[_0x3e49('0x19')]):'';return util[_0x3e49('0xe')](_0x3e49('0x1a'),moment()[_0x3e49('0xe')](_0x3e49('0x13')),_0x4fa43a['level'][_0x3e49('0x15')](),_0x135b56,_0x4fa43a[_0x3e49('0xf')],_0x347257);}function consoleLogger(){var _0x33904d=new winston[(_0x3e49('0x1b'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x3e49('0x1c'))]({'level':_0x3e49('0x1d'),'json':![],'formatter':function(_0x4b99d9){return formatter('',_0x4b99d9);}})]});return _0x33904d;}function fileLogger(_0x1ae4f8,_0x298351){var _0x44aded=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x3e49('0x1e'))][(_0x3e49('0x1f'))]({'name':util[_0x3e49('0xe')](_0x3e49('0x20'),_0x1ae4f8,_0x3e49('0x21')),'filename':getLogFileName(_0x298351,_0x1ae4f8,_0x3e49('0x21')),'level':_0x3e49('0x21'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xfcbb72){return fileFormat(_0x1ae4f8,_0xfcbb72);}}),new winston['transports'][(_0x3e49('0x1f'))]({'name':util['format'](_0x3e49('0x20'),_0x1ae4f8,debugLevel),'filename':getLogFileName(_0x298351,_0x1ae4f8,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x313ebf){return fileFormat(_0x1ae4f8,_0x313ebf);}}),new winston[(_0x3e49('0x1e'))][(_0x3e49('0x1c'))]({'level':_0x3e49('0x1d'),'json':![],'formatter':function(_0x493399){return fileFormat(_0x1ae4f8,_0x493399);}})]});return _0x44aded;}exports[_0x3e49('0x22')]=consoleLogger;exports[_0x3e49('0x23')]=fileLogger;
\ No newline at end of file
+var _0xa7ab=['stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','Logger','transports','File','%s-%s','error','Console','fileLogger','moment','winston','../config/environment','debugLevel','info','bold\x20green','gray','bold\x20magenta','bold\x20cyan','addColors','/var/log/xcally','join','format','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','keys','meta'];(function(_0xef2222,_0x17c984){var _0xc00492=function(_0x5d6505){while(--_0x5d6505){_0xef2222['push'](_0xef2222['shift']());}};_0xc00492(++_0x17c984);}(_0xa7ab,0xfb));var _0xba7a=function(_0x5530fd,_0x42698d){_0x5530fd=_0x5530fd-0x0;var _0x1c3035=_0xa7ab[_0x5530fd];return _0x1c3035;};'use strict';var path=require('path');var util=require('util');var moment=require(_0xba7a('0x0'));var winston=require(_0xba7a('0x1'));var config=require(_0xba7a('0x2'));var debugLevel=config[_0xba7a('0x3')]?config[_0xba7a('0x3')]['toLowerCase']():_0xba7a('0x4');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':'red','warn':'bold\x20yellow','info':'white','print':'bold\x20white','success':_0xba7a('0x5'),'http':_0xba7a('0x6'),'verbose':_0xba7a('0x7'),'debug':'bold\x20blue','silly':_0xba7a('0x8')};winston[_0xba7a('0x9')](XC_LOG_COLORS);function getLogFileName(_0x4e5848,_0x5b9752,_0x152217){var _0x137b3e=_0x4e5848||_0xba7a('0xa');return path[_0xba7a('0xb')](_0x137b3e,util[_0xba7a('0xc')]('%s-%s.log',_0x5b9752,_0x152217));}function formatter(_0x2c0672,_0x264c94){_0x264c94[_0xba7a('0xd')]=_0x264c94[_0xba7a('0xd')][_0xba7a('0xe')](/@@{/g,_0xba7a('0xf'))[_0xba7a('0xe')](/}@@/g,'}}}')[_0xba7a('0xe')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xba7a('0xc')](_0xba7a('0x10'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),_0x264c94['level']['toUpperCase'](),_0x2c0672,_0x264c94[_0xba7a('0xd')]);}function fileFormat(_0x55111b,_0x2c3a25){_0x2c3a25[_0xba7a('0xd')]=_0x2c3a25[_0xba7a('0xd')][_0xba7a('0xe')](/@@{/g,_0xba7a('0xf'))['replace'](/}@@/g,'}}}')[_0xba7a('0xe')](/@{/g,'{{')[_0xba7a('0xe')](/}@/g,'}}');var _0x8270fb=_0x2c3a25['meta']&&Object[_0xba7a('0x11')](_0x2c3a25[_0xba7a('0x12')])['length']?'\x0a\x09'+JSON[_0xba7a('0x13')](_0x2c3a25[_0xba7a('0x12')]):'';return util[_0xba7a('0xc')](_0xba7a('0x14'),moment()[_0xba7a('0xc')](_0xba7a('0x15')),_0x2c3a25['level'][_0xba7a('0x16')](),_0x55111b,_0x2c3a25[_0xba7a('0xd')],_0x8270fb);}function consoleLogger(){var _0xe0eb8f=new winston[(_0xba7a('0x17'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xba7a('0x18'))]['Console']({'level':'warn','json':![],'formatter':function(_0x382c95){return formatter('',_0x382c95);}})]});return _0xe0eb8f;}function fileLogger(_0x539110,_0x1929b0){var _0x373085=new winston[(_0xba7a('0x17'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xba7a('0x18'))][(_0xba7a('0x19'))]({'name':util[_0xba7a('0xc')](_0xba7a('0x1a'),_0x539110,_0xba7a('0x1b')),'filename':getLogFileName(_0x1929b0,_0x539110,'error'),'level':_0xba7a('0x1b'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3d4337){return fileFormat(_0x539110,_0x3d4337);}}),new winston['transports'][(_0xba7a('0x19'))]({'name':util[_0xba7a('0xc')]('%s-%s',_0x539110,debugLevel),'filename':getLogFileName(_0x1929b0,_0x539110,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x206ae8){return fileFormat(_0x539110,_0x206ae8);}}),new winston['transports'][(_0xba7a('0x1c'))]({'level':'warn','json':![],'formatter':function(_0x5b6807){return fileFormat(_0x539110,_0x5b6807);}})]});return _0x373085;}exports['consoleLogger']=consoleLogger;exports[_0xba7a('0x1d')]=fileLogger;
\ No newline at end of file
index f0956db..e496236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['length','isString','replace','}@@','includes','exports','lodash','newPassword','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','token','accessToken','authToken','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray'];(function(_0xbebf50,_0x44ec09){var _0xce1496=function(_0x1bf94d){while(--_0x1bf94d){_0xbebf50['push'](_0xbebf50['shift']());}};_0xce1496(++_0x44ec09);}(_0x0295,0x1f0));var _0x5029=function(_0x2851f2,_0x3d6113){_0x2851f2=_0x2851f2-0x0;var _0x4984db=_0x0295[_0x2851f2];return _0x4984db;};var _=require(_0x5029('0x0'));var sensitiveFields=['username','password',_0x5029('0x1'),'apiKey','firstName',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7'),_0x5029('0x8'),_0x5029('0x9'),_0x5029('0xa'),'code','accessKey','tenantId',_0x5029('0xb'),'channelSecret',_0x5029('0xc'),'accessTokenSecret',_0x5029('0xd'),'consumerKey',_0x5029('0xe'),_0x5029('0xf'),_0x5029('0x10'),'calleridnum',_0x5029('0x11'),_0x5029('0x12'),_0x5029('0x13'),'privateKey',_0x5029('0x14'),_0x5029('0x15'),'key','user','pass','accountSid',_0x5029('0x16'),_0x5029('0x17'),_0x5029('0x18'),_0x5029('0x19'),_0x5029('0x1a')];function maskSensitiveData(_0x11c24b){const _0xe278b7=/(?!^)[\s\S](?!$)/g;if(_[_0x5029('0x1b')](_0x11c24b)){for(const _0x10bf55 in _0x11c24b){if(_[_0x5029('0x1c')](_0x11c24b[_0x10bf55])){for(let _0x457c73=0x0;_0x457c73<_0x11c24b[_0x10bf55][_0x5029('0x1d')];_0x457c73++){maskSensitiveData(_0x11c24b[_0x10bf55][_0x457c73]);}}else if(_[_0x5029('0x1b')](_0x11c24b[_0x10bf55])){maskSensitiveData(_0x11c24b[_0x10bf55]);}else if(_[_0x5029('0x1e')](_0x11c24b[_0x10bf55])){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](/{{{/g,'@@{')[_0x5029('0x1f')](/}}}/g,_0x5029('0x20'))[_0x5029('0x1f')](/{{/g,'@{')[_0x5029('0x1f')](/}}/g,'}@');if(_[_0x5029('0x21')](sensitiveFields,_0x10bf55)){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](_0xe278b7,'*');}}}}}module[_0x5029('0x22')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0x0b0e=['}@@','lodash','password','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn','secret','registry','oldPassword','isArray','length','isString','replace'];(function(_0x2f592a,_0x2acf98){var _0x50b4a2=function(_0x5c1470){while(--_0x5c1470){_0x2f592a['push'](_0x2f592a['shift']());}};_0x50b4a2(++_0x2acf98);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1df473,_0x1a6931){_0x1df473=_0x1df473-0x0;var _0x1bdd49=_0x0b0e[_0x1df473];return _0x1bdd49;};var _=require(_0xe0b0('0x0'));var sensitiveFields=['username',_0xe0b0('0x1'),'newPassword',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6'),_0xe0b0('0x7'),_0xe0b0('0x8'),_0xe0b0('0x9'),_0xe0b0('0xa'),_0xe0b0('0xb'),_0xe0b0('0xc'),'code','accessKey',_0xe0b0('0xd'),_0xe0b0('0xe'),_0xe0b0('0xf'),_0xe0b0('0x10'),'accessTokenSecret',_0xe0b0('0x11'),_0xe0b0('0x12'),'consumerSecret',_0xe0b0('0x13'),_0xe0b0('0x14'),'calleridnum',_0xe0b0('0x15'),_0xe0b0('0x16'),_0xe0b0('0x17'),'privateKey',_0xe0b0('0x18'),_0xe0b0('0x19'),_0xe0b0('0x1a'),_0xe0b0('0x1b'),_0xe0b0('0x1c'),'accountSid',_0xe0b0('0x1d'),_0xe0b0('0x1e'),_0xe0b0('0x1f'),_0xe0b0('0x20'),_0xe0b0('0x21')];function maskSensitiveData(_0x55d884){const _0x41a7e2=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x55d884)){for(const _0x35cb40 in _0x55d884){if(_[_0xe0b0('0x22')](_0x55d884[_0x35cb40])){for(let _0x519ae8=0x0;_0x519ae8<_0x55d884[_0x35cb40][_0xe0b0('0x23')];_0x519ae8++){maskSensitiveData(_0x55d884[_0x35cb40][_0x519ae8]);}}else if(_['isPlainObject'](_0x55d884[_0x35cb40])){maskSensitiveData(_0x55d884[_0x35cb40]);}else if(_[_0xe0b0('0x24')](_0x55d884[_0x35cb40])){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](/{{{/g,'@@{')['replace'](/}}}/g,_0xe0b0('0x26'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x35cb40)){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](_0x41a7e2,'*');}}}}}module['exports']['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 458ef6d..15a069a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['\x20}\x20}','string','isArray','map','isPlainObject','reduce','safeTemplate','lodash'];(function(_0x4e4413,_0x1116a6){var _0x4c449a=function(_0x2ff65c){while(--_0x2ff65c){_0x4e4413['push'](_0x4e4413['shift']());}};_0x4c449a(++_0x1116a6);}(_0xe511,0x16f));var _0x1e51=function(_0x49296c,_0x14f891){_0x49296c=_0x49296c-0x0;var _0x3f0d68=_0xe511[_0x49296c];return _0x3f0d68;};var _=require(_0x1e51('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x3a7329){return _0x3a7329==='{{'?'{\x20{\x20':_0x1e51('0x1');}function safeTemplate(_0x5b9e45){var _0x253e96=_0x5b9e45;if(typeof _0x5b9e45===_0x1e51('0x2')){_0x253e96=_0x5b9e45['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x1e51('0x3')](_0x5b9e45)){_0x253e96=_0x5b9e45[_0x1e51('0x4')](function(_0x204da7){return safeTemplate(_0x204da7);});}else if(_[_0x1e51('0x5')](_0x5b9e45)){_0x253e96=Object['keys'](_0x5b9e45)[_0x1e51('0x6')](function(_0x21ed6b,_0x5c4590){_0x21ed6b[_0x5c4590]=safeTemplate(_0x5b9e45[_0x5c4590]);return _0x21ed6b;},{});}return _0x253e96;}module['exports'][_0x1e51('0x7')]=safeTemplate;
\ No newline at end of file
+var _0xea28=['isPlainObject','reduce','exports','safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace','map'];(function(_0x2abadd,_0x186ac1){var _0x3fd7be=function(_0x5823e0){while(--_0x5823e0){_0x2abadd['push'](_0x2abadd['shift']());}};_0x3fd7be(++_0x186ac1);}(_0xea28,0x13a));var _0x8ea2=function(_0x348a57,_0xaa91ad){_0x348a57=_0x348a57-0x0;var _0x1d6d42=_0xea28[_0x348a57];return _0x1d6d42;};var _=require(_0x8ea2('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2e031a){return _0x2e031a==='{{'?_0x8ea2('0x1'):_0x8ea2('0x2');}function safeTemplate(_0x459c4e){var _0x25e47e=_0x459c4e;if(typeof _0x459c4e===_0x8ea2('0x3')){_0x25e47e=_0x459c4e[_0x8ea2('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x459c4e)){_0x25e47e=_0x459c4e[_0x8ea2('0x5')](function(_0x23aaf1){return safeTemplate(_0x23aaf1);});}else if(_[_0x8ea2('0x6')](_0x459c4e)){_0x25e47e=Object['keys'](_0x459c4e)[_0x8ea2('0x7')](function(_0x435d78,_0xb7f278){_0x435d78[_0xb7f278]=safeTemplate(_0x459c4e[_0xb7f278]);return _0x435d78;},{});}return _0x25e47e;}module[_0x8ea2('0x8')][_0x8ea2('0x9')]=safeTemplate;
\ No newline at end of file